Esercitazione del 12 Gennaio 2011
Es 1
A + (b x c)
Es 3
Word size = 16 b Offsets = 16 b -> 1 w Addr / Cost = 16 b -> 1 w Addr.L / Cost.L = 32 b -> 2 w
ORG 1000 ADDRESS SIZE (b)
S: EQU 1 1000 0
R: DC.L 0 1000 4
A: DS.W 10 1004 20
B: DS.L 10 1024 40
INIZIO: MOVE.W #1,D0 1064 4
MOVEA.L #A,A0 1068 6
MOVEA.L #B,A1 1074 6
CICLO MOVE.B (A0),D1 1080 2
MOVE.B S(A0),D2 1082 4
ADD.B D1,D2 1086 2
SUB.L D2,(A1)+ 1088 2
ADDA.L #2,(A0) 1090 6
SUBI.L #1,D0 1096 6
CMPI.W #30,D0 1102 4
BLE CICLO 1106 4
MOVE.W A.L, R.L 1110 10
END INIZIO 1120 0
N.B. ogni istruzione (move, add, sub ecc) è lunga 2 Bit più gli spiazzamenti (.L, .W) degli immediati (#1…)…
Nella move.w finale le due sono etichette e hanno quindi spiazzamento .L Salto: 1110-1080=30
f (a+1, g(b+c) ) + d RETURN VAL f,g -> D0
Es 5
INT g(INT) INT f(INT,INT) INT c
INT PROG (INT a, INT b) { INT D
D = 1 C = 2
RETURN f(a+1, g(B+C))+d;
}
--- // Traduzione PROG LINK FP, #-2
D: EQU -2 B: EQU 8 A: EQU 10
MOVEM D0-D4, -(SP) MOVE #1, D(FP) MOVE #2, C
MOVE.W A(FP), D1 ADDI.W #1, D1 MOVE.W D1, -(SP) MOVE.W B(FP), D2 MOVE-W C, D3 ADD D2, D3 BSR g
MOVE.W DO, -(SP) BSR f
ADDA #4,SP MOVE D(FP),D4 MOVE (SP)+, D3 ADD D3, D4 MOVE D4, A(FP) MOVEM (SP)+, D0-D4 UNLINK FP
RFS g(…)
D1 (a+1) D0 – D4
D -2
FP 0
RP 4
B 8
A 10
MEM = 4G C = 256 K BLOCK = 64B 2^18
2^6
2^12 #blocchi 2^32
32 bit
Caso di cache a indirizzamento diretto
V TAG (14 bit) 6
Linea di memoria (32 bit)
TAG (14 bit) BLOCCO (12 bit) 6 Nel caso Free Address
V TAG (26 bit) 6
TAG (26 bit) 6 Nel caso set associative
Dove #VIE = 4W - SET
V TAG (16 bit) 6
Linea di memoria (32 bit)
TAG (16 bit) BLOCCO (10 bit) 6
Es 7
MEM = 2G -> 31 bit
C = 2 M -> 2^21
BLOCK = 512 B -> 2^9 2^21/2^9=2^12 blocchi
Directly mapped:
TAG (10 bit) BLOC ID (12 bit) BYTE IDX (9 bit) 12+9=21
31-21=10 (al tag) Fully associative:
TAG (22 bit) BLOC ID (0 bit) BYTE IDX (9 bit) 8-W set:
2^12/8=2^12/2^3=2^9 8w-block
TAG (13 bit) BLOC ID (9 bit) BYTE IDX (9 bit)
MEM = 8K -> 2^13 CACHE= 1K -> 2^10 BLOCK = 256 B -> 2^8 4 blocchi
TAG (3 bit) BLOC ID (2 bit) BYTE IDX (8 bit)
ADDR BL 00 BL 01 BL 10 BL 11 H/M
V TAG DATA V TAG DATA V TAG DATA V TAG DATA 0 … … 0 … … 1 001 6 1 000 3 -
000|00|10011110 1 000 Valore 0 … … 1 001 6 1 000 3 M Carico valore a Indirizzo 78 in BL 00 111|01|00010011 1 000 Valore 1 111 19 1 001 6 1 000 3 M Carico 19 in BL 01
000|11|11111011 1 000 Valore 1 111 19 1 001 6 1 000 3 H Accedo a bl 11 111|11|01111110 1 000 Valore 1 111 19 1 001 6 1 111 Valore M
111|10|11110010 1 000 Valore 1 111 19 1 111 30 1 111 Valore M
111|01|01100111 1 000 Valore 1 111 19 1 111 30 1 111 Valore H Accedo a bl 11