Class Notes of CSCI 370 Computer Architecture (Spring 2024) =========================================================== Thursday, May 02, 2024 ---------------------- Slide 17.7 ---------- Wednesday, May 01, 2024 ----------------------- Slide 17.6 ---------- 8 KB = 8 x 2^10 = 2^13 bytes 32 - 13 = 19 bits (virtual page number) 2^19 entries 2^19 x 4 = 2^21 bytes Slide 17.4 ---------- 4 KB = 4 x 2^10 = 2^12 bytes 32 - 12 = 20 bits (virtual page number) 2^20 x 4 = 2^22 bytes Monday, April 29, 2024 ---------------------- Slide 16.11 ----------- Total CPI = 1 cycle + ( 0.053 x 0.42 x 9.32 ns ) / ( 0.66 ns/cycle ) + ( 0.053 x 0.42 x 0.63 x 50 ns ) / ( 0.66 ns/cycle ) = 1 + 0.314 + 1.06 cycles/inst = 2.38 cycles/inst AMAT = Time for a hit + Miss rate × Miss penalty = 0.66 ns + 0.053 x 9.32 ns + 0.053 x 0.63 x 50 ns = 0.66 ns + 0.49 ns + 1.67 ns = 2.82 ns Total CPI = 1 cycle + ( 0.053 x 50 ns x 0.42 ) / ( 0.66 ns/cycle ) = 2.69 cycles/inst AMAT = Time for a hit + Miss rate × Miss penalty = 0.66 ns + 0.053 x 50 ns = 3.31 ns 0.66 x 10^(-9) sec/cycle Clock rate = 1 / ( 0.66 x 10^(-9) ) = 1.52 x 10^9 cycles/sec Slide 16.10 ----------- Time(L1) / Time(L2) = 9.0 / 3.4 = 2.65 Time(L1) = 1 cycle + 0.02 x ( 100 x 10^(-9) sec x 4 x 10^9 cycles/sec ) = 1 + 0.02 x 400 = 9 cycles Time(L2) = 1 cycle + 0.02 x ( 5 x 10^(-9) sec x 4 x 10^9 cycles/sec ) + 0.005 x ( 100 x 10^(-9) sec x 4 x 10^9 cycles/sec ) = 1 + 0.02 x 20 + 0.005 x 400 = 1 + 0.4 + 2 = 3.4 cycles Thursday, April 25, 2024 ------------------------- Slide 16.8 ---------- Direct: tag index offset --- ----- ------ 16 12 4 direct: 4096 = 2^12 sets 16 x 4096 = 2^4 x 2^12 = 2^16 bits 2-way: tag index offset --- ----- ------ 17 11 4 2-way: 4096 / 2 = 2048 sets ( 17 x 2 ) x 2048 = 34 x 2^11 4-way: tag index offset --- ----- ------ 18 10 4 4-way: 4096 / 4 = 1024 sets ( 18 x 4 ) x 1024 = 72 x 2^10 Fully-associative: tag index offset --- ----- ------ 28 0 4 1 set 28 x 4096 = 28 x 2^12 bits Slide 16.3 ---------- Execution time(real) / Execution time(perfect) = ( 4.5 x I ) / ( 1.5 x I ) = 3.0 Execution time(real) = I x 0.02 x 100 (inst) + I x 0.20 x 0.05 x 100 (data) + 1.5 x I = 2I + I + 1.5I = 4.5 I Wednesday, April 24, 2024 ------------------------- Slide 16.2 ---------- AMAT = Time for a hit + Miss rate × Miss penalty = ( 1 + 0.05 x 20 ) x 2 ns = 4 ns Slide 15.11 ----------- Cach Basics Review II tag index offset --- ----- ------ 22 6 4 Slide 15.10 ----------- 2^n × (2^m × 32 + 31 - n - m) = 2^14x(2^0x32 + 31 - 14 - 0) = 2^14x(63-14) = 784 x 2^10 Example: n = 10 m = 0 Question: 64x2^10 / 4 = 16x2^10 = 2^14 => n = 14 2^0 = 1 => m = 0 Tuesday, April 23, 2024 ----------------------- Cach Basics Review I 1 = 2^0 => offset = 0 16 = 2^4 => index = 4 32 - 4 - 0 => tag = 28 Question III: address: 1600(10) = 640(16) = ... 0000 0110 0100 0000 -------- ---- ---- ---- 6 4 0 ------------ index offset block number = 10010 = 18 1600 / 16 = 100 | R = 0 100 / 16 = 6 | R = 4 6 / 16 = 0 | R = 6 32 = 2^5 => offset = 5 32 = 2^5 => index = 5 32 - 5 - 5 => tag = 22 Question II: 256 = 2^8 => index = 8 16 = 2^4 => offset = 4 32 - 8 - 4 = 20 => tag = 20 tag index offset ------------------------ --------- ---- 01FFF8AC = 0000 0001 1111 1111 1111 1000 1010 1100 ---- ---- ---- ---- ---- ---- ---- ---- 0 1 F F F 8 A C Monday, April 22, 2024 ---------------------- 2^n × (2^m × 32 + 31 - n - m) = 2^9x(2^1x32 + 31 - 9 - 1) = 2^9x(64+21) = (85/2)x2^10 = 42.5 Example: n = 10 m = 0 Question I: 2 = 2^1 => m = 1 4x2^10 / 8 = 2^9 => n = 9 incoming address: 01001 = 9 cache address: 9 % 8 = 1 = 001 01 001 ---- tag Thursday, April 18, 2024 ------------------------ prediction bit = 00 for ( i = 0; i < 1000; i++ ) { sub .... } mul * Wednesday, April 10, 2024 ------------------------- 1111 1111 1111 1111 = -1 = 1111 1111 1111 1111 1111 1111 1111 1111 (signed extension) 0000 0000 0000 0000 1111 1111 1111 1111 (zero extension) > 0 lw $2, $1, -100 lw rs, rt, -100 # $1 = Mem[-100($2)] add $3, $1, $2 add rd, rs, rt # $3 = $1 + $2 Monday, April 08, 2024 ---------------------- HW 4: 000100 00001 00011 0000000000001100 ------ ----- ----- ---------------- beq $1 $3 12 Wednesday, April 03, 2024 ------------------------- 11111111 11111111 = -1 Signed extended (1): 11111111 11111111 11111111 11111111 = -1 Zero extended (0): 00000000 00000000 11111111 11111111 > 0 Thursday, March 28, 2024 ------------------------ Slide 11.8 ---------- 0: 000 00 4: 001 00 8: 010 00 12: 011 00 16: 100 00 20: 101 00 24: 110 00 ... 1 00 = 4 Wednesday, March 27, 2024 ------------------------- Slide 11.4 ---------- $t0 = 1 add $t0, $t0, 1 # $t0 := $t0 + 1 # Read => Add => Write $t0 = 2 $t0 = 1 $t0 = 0 Monday, March 25, 2024 ---------------------- Slide 10.18 ----------- S E F - ----- ---------- 1 12345 1234567890 2**5 = 32 - 2 = 30 / 2 = 15 (bias) 1`- 15 = -14 (min exponent) 30 - 15 = 15 (max exponent) Slide 10.14 ----------- 1.010 x 2**(-1) x -1.110 x 2**(-2) = S1: -1 + -2 = -3 S2: 1.010 x 1.110 ----------- 0000 1010 1010 + 1010 ----------- 10001100 => -10.001100 x 2**(-3) S3: -10.001100 x 2**(-3) = -1.0001100 x 2**(-2) S4: -1.0001100 x 2**(-2) ~ -1.001 x 2**(-2) S5: No overflow or underflow Thursday, March 21, 2024 ------------------------ Slide 10.11 ----------- 1.000 x 2**(-3) - 1.000 x 2**2 = -1.000 x 2**2 S1: 1.000 x 2**(-3) = 0.1000 x 2**(-2) = 0.01000 x 2**(-1) = 0.001000 x 2**(0) = 0.0001000 x 2**(1) = 0.00001000 x 2**(2) S2: 01.000 10.111 + 1 -------- 11.000 + 00.00001 ---------- 11.00001 00.11110 + 1 ---------- -0.11111 x 2**2 S3: -0.11111 x 2**2 = -1.11110 x 2**1 S4: -1.11110 x 2**1 ~ -10.000 x 2**1 S3: -10.000 x 2**1 = -1.000 x 2**2 S4: -1.000 x 2**2 S5: No overflow or underflow Wednesday, March 20, 2024 ------------------------- Slide 10.10 ----------- 1.111 x 2**(-1) + 1.011 x 2**(-3) = 1.001 x 2**0 S1: 1.011 x 2**(-3) = 0.1011 x 2**(-2) = 0.01011 x 2**(-1) S2: 1.111 x 2**(-1) + 0.01011 x 2**(-1) --------------------- 10.00111 x 2**(-1) S3: 10.00111 x 2**(-1) => 1.000111 x 2**(0) S4: 1.000111 x 2**(0) => 1.001 S5: No overflow or underflow Tuesday, March 19, 2024 ----------------------- Slide 10.6 ---------- Question: (+) (-1)**S × 1.F × 2**val(E) = 1.000000...(2) x 2**(1-127) = 1.0 x 2**(-126) = 2**(-126) 0 00000001 00000000000000000000000 (-) (-1)**S × 1.F × 2**val(E) = -1.1111111...(2) x 2**(254-127) ~ -2.0 x 2**(127) = -2**128 1 11111110 11111111111111111111111 -5 < -4 Slide 10.6 ---------- Example V: SP: (-1)**S × 1.F × 2**val(E) = 1.111111...(2) x 2**(254-127) ~ 2 x 2**127 = 2**128 0 11111110 11111111111111111111111 - -------- ----------------------- S E (254) F 2**8 = 256 = [0..255] => 256 - 2 = 254 => 254 / 2 = 127 DP: (-1)**S × 1.F × 2**val(E) = 1.111111...(2) x 2**(2046-1023) ~ 2 x 2**1023 = 2**1024 0 11111111110 11111111111111111111111 ... - ----------- --------------------------- S E (2046) F 2**11 = 2048 = [0..2047] => 2048 - 2 = 2046 => 2046 / 2 = 1023 Monday, March 18, 2024 ---------------------- Slide 10.5 ---------- Example IV: SP: (-1)**S × 1.F × 2**E = 1.101101 * 2**(2+127) = 1.101101 * 2**129 1 10000001 101101000000.... 129 = 128 + 1 = 2**7 + 2**0 = 10000001 DP: (-1)**S × 1.F × 2**E = 1.101101 * 2**(2+1023) = 1.101101 * 2**(1025) 1 100000001 101101000000.... 1025 = 2**10 + 1 = 1024 + 1 -6.8125 = (-1)**1 x 110.1101 = -110.1101 = -1.101101 x 2**2 6 = 110 0.8125 * 2 = 1.6250 => 1 0.6250 * 2 = 1.2500 => 1 0.2500 * 2 = 0.5000 => 0 0.5000 * 2 = 1.0000 => 1 Question: (-1)**S × 1.F × 2**val(E) = (-1)**1 x 1.1(2) x 2**(1016-1023) = -1.5 * 2**(-7) = -1.5 * 1/2**7 = -1.5 * 1/128 = -0.01171875 01111111000(2) = 2**9 + 2**8 + 2**7 + 2**6 + 2**5 + 2**4 + 2**3 = 512 + 256 + 128 + 64 + 32 + 16 + 8 = 1016 val(01111111000) = 1016 - 1023 = -7 Slide 10.4 ---------- Example III: (-1)**S × 1.F × 2**val(E) = (-1)**0 x 1.0010101(2) x 2**(E-1023) = ( 1 + 2**(-3) + 2**(-5) + 2**(-7) ) * 2**6 = 2**6 + 2**3 + 2**1 + 2**(-1) = 64 + 8 + 2 + 1/2 = 74.5 10000000101(2) = 2**10 + 2**2 + 1 = 1024 + 5 = 1029 val(10000000101) = 1029 - 1023 = 6 Thursday, March 14, 2024 ------------------------ Slide 10.4 ---------- Example II: (-1)**S × 1.F × 2**val(E) = (-1)**0 x 1.010011(2) x 2**(130-127) = 1.010011(2) x 2**3 = 10.375 10000010(2) = 2**7 + 2 = 128 + 2 = 130 1.010011(2) x 2**3 = 1010.011 = 10 + 1/4 + 1/8 = 10.375 Example I: (-1)**S × 1.F × 2**val(E) = (-1)**1 x 1.01(2) x 2**(E-127) = -1.01(2) x 2**(124-127) = -1.01(2) x 2**(-3) = -1.25 x 0.125 = -0.15625 01111100(2) = 4 + 8 + 16 + 32 + 64 = 124 2**(-3) = 1 / (2**3) = 1 / 8 = 0.125 1.01(2) = 1 + 0x2**(-1) + 1x2**(-2) = 1 + 1/4 = 1.25 Slide 10.3 ---------- 0 = 0000 0000 -1 = 1111 1111 2**8 = 256 (SP exponent) 2**11 = 2048 (DP exponent) 256 - 2 = 254 => 254 / 2 = 127 2048 - 2 = 2026 => 2026 / 2 = 1023 Wednesday, March 13, 2024 ------------------------- Slide 8.11 ---------- 1110 / 0011 = 14 / 3 => Q: 0100 and R: 0010 Iteration #4: 0011 1100 + 1 ------ 1101 0010 + 1101 ------ 1111 Iteration #3: 0011 1100 + 1 ------ 1101 0001 + 1101 ------ 1110 Iteration #2: 0011 1100 + 1 ------ 1101 0011 + 1101 ------ 1 0000 Iteration #1: 0011 1100 + 1 ------ 1101 0001 + 1101 ------ 1110 Slide 8.10 ---------- 1110 / 0011 = 14 / 3 => Q: 0100 and R: 0010 Iteration #4: 00000011 11111100 + 1 ---------- 11111101 00000010 + 11111101 ---------- 11111111 Iteration #3: 00000110 11111001 + 1 ---------- 11111010 00000010 + 11111010 ---------- 11111100 Iteration #2: 00001100 11110011 + 1 ---------- 11110100 00001110 + 11110100 ---------- 1 00000010 Iteration #1: 00011000 11100111 + 1 ---------- 11101000 00001110 + 11101000 ---------- 11110110 Monday, March 11, 2024 ---------------------- Slide 8.5 --------- 1100 × 1101 = 10011100 => 12 x 13 = 156 Slide 8.2 --------- $a0: 0111 1111 1111 1111 1111 1111 1111 1111 > 0 + 0000 0000 0000 0000 0000 0000 0000 0001 ---------------------------------------------- 1000 0000 0000 0000 0000 0000 0000 0000 < -2**31 = -2147483648 Thursday, February 29, 2024 --------------------------- Slide 7.5 --------- str: abcde0 = > edcba0 $t1: ^ $t0: 0 ___ | 0 | | a | | b | | c | | d | | e | | | Slide 7.3.2 ----------- n = 5 ans = 15 $t0 = 0 $t1 = 15 while ( $t0 <> 0 ) { add $t1, $t1, $t0 sw $t1, ans sub $t0, $t0, 1 } return (jr $31) Slide 7.3.1 ----------- n = 5 ans = 15 $t0 = 0 $t1 = 15 while ( $t0 <> 0 ) { add $t1, $t1, $t0 sw $t1, ans sub $t0, $t0, 1 } go to ret function f( x, y ) { ... z := f( a, b ) ... } Wednesday, February 28, 2024 ---------------------------- Slide 6.13.3 ------------ $v0: 5 $t0: 5 $a0: 0 $t1: 1 while ( $t0 > 0 ) { if ( $t0 > 0 ) { then $t2 = 1 else $t2 = 0 } if ( $t2 == 0 ) { then exit else { put $a0 $t2 = $t1 + $a0 $a0 = $t1 $t1 = $t2 $t0 = $t0 - 1 } } } Slide 6.13.2 ------------ $t0: FFFF FFFF: -1 if ( |$t0| > 0 ) then $t1 = 1 else $t1 = 0 if ( $t1 <> 0 ) then put 2 else put 1 Slide 6.13.1 ------------ $t0: FFFF FFFF: -1 if ( $t0 > 0 ) then $t1 = 1 else $t1 = 0 if ( $t1 <> 0 ) then put 2 else put 1 Slide 6.12.3 ------------ $v0 = 5 $a0 = 0 + 5 + 4 + 3 + 2 + 1 + 0 = 15 L1: while ( $v0 < 0 ) { if ( $v0 < 0 ) { then $t0 = 1 else $t0 = 0 } $a0 = $a0 + $v0 $v0 = $v0 - 1 } L2: put $a0 Slide 6.12.2 ------------ X: FF li: $t0: 0000 00FF lb: $t0: FFFF FFFF = -1 $t1: FFFF FFFF = -1 $t0: FFFF FFFF if ( $t0 <> -1 ) then $t0 = 1 else $t0 = 0 if ( $t0 == 0 ) then put 2 else put 1 Slide 6.12.1 ------------ X: FF li: $t0: 0000 00FF lb: $t0: FFFF FFFF = -1 $t1: FFFF FFFF = -1 $t0: 0000 00FF if ( $t0 == $t1 ) then $t0 = 1 else $t0 = 0 if ( $t0 == 0 ) then put 2 else put 1 Slide 6.10.3 ------------ X: FF = -1 $t0: FFFF FFFF = -1 + 1 --------------------- $t0: 1 0000 0000 = 0 if ( $t0 == 0 ) then put 2 else put 1 Slide 6.10.2 ------------ $t0: FFFF FFFF = -1 0000 0000 + 1 ----------- 0000 0001 = 1 FFFF FFFE = -2 0000 0001 + 1 ----------- 0000 0002 = 2 if ( | $t0 | >= | -2 | ) if ( |FFFF FFFF| >= |FFFF FFFE| ) then put 2 else put 1 Slide 6.10.1 ------------ $t0: 0000 00FF > 0 $t1: 0 if ( $t0 >= $t1 ) then put 2 else put 1 Slide 6.9.3 ----------- $v0 = 5 $a0 = 0 + 5 + 4 + 3 + 2 + 1 = 15 L1: while ( $v0 == 0 ) { $a0 = $a0 + $v0 $v0 = $v0 - 1 } L2: put $a0 Thursday, February 22, 2024 --------------------------- Slide 6.9.2 ----------- $t0: 0000 00FF > 0 $t1: -1 $t0 <> $t1 Slide 6.7.3 ----------- Correct: 14 / -4 = 14 / (a large number) 0000 0004 FFFF FFFB + 1 ---------- FFFF FFFC = a large number lo: 0 hi: 14 - (-4x0) = 14 Wrong: 14 / -4 = -3 : lo : ($a) 14 - (-4x-3) = 2 : hi Slide 6.7.2 ----------- -14 / 4 = -3 : lo : ($a) -14 - (4x-3) = -2 : hi Slide 6.7.1 ----------- -14 / 4 = -3 : $a0 Slide 6.6.6 ----------- $t0 x $t1 = -2**31 x 2 = -2**32 $t0: 8000 0000 = -2**31 x 2 ------------------------------ $t0 x $t1 = -2**31 x 2 = -2**32 0000 0001 0000 0000 = 2**32 FFFF FFFE FFFF FFFF + 1 ------------------------------ FFFF FFFF 0000 0000 = -2**32 --------- --------- hi lo FFFF FFFF = -1 0000 0000 + 1 ---------------- 0000 0001 = 1 Slide 6.6.4/5 ------------- $t0: 8000 0000 = -2**31 x 2 ------------------------------ 0000 0001 0000 0000 = 2**32 --------- --------- hi lo Wednesday, February 21, 2024 --------------------------- Slide 6.4.3 ----------- X: 8000 0000 < 0 $t0: 8000 0000 + FFFF FFFF = -1 ------------------- 1 7FFF FFFF = 2**31 - 1 > 0 Slide 6.4.1 ----------- X: FF = -1 $a0: 0000 0000 lb $a0, X | v $a0 (wrong): 0000 00FF > 0 $a0 (correct): FFFF FFFF = -1 Slide 6.3.3 ----------- X: 1 Y: 8000 0000 : X+3 $t0: 1 $t0: 0000 0001 FFFF FFFE + 1 ----------- FFFF FFFF = -1 $t1: 8000 0000 < 0 (8 = 1000) + $t0: FFFF FFFF = -1 -------------- $a0: 1 7FFF FFFF = 2147483647 8000 0000 = 2147483648 = 2**31 - 1 ----------- 7FFF FFFF = 2147483647 = 2**31 - 1 Slide 6.3.2 ----------- X: 1 Y: 7FFF FFFF : X+3 $t0: 1 $t1: 7FFF FFFF > 0 (7 = 0111) + 1 -------------- $a0: 8000 0000 < 0 (8 = 1000) 7FFF FFFF + 1 ----------- 8000 0000 = -8x16**7 = -2**31 = -2147483648 Thursday, February 15, 2024 --------------------------- Slide 6.3.1 ----------- X: 1 Y: 7FFF FFFF : X+3 $t0: 1 $t1: 7FFF FFFF > 0 (7 = 0111) + 1 -------------- $a0: 8000 0000 < 0 (8 = 1000) Slide 6.2.3 ----------- $t0: -20 $t1: -20 => 20 $a0 = 20 - (-20) = 40 Slide 6.2.2 ----------- c: '7' $t0: '7' print $t0 => 7 7 = '7' - '0' = 55 - 48 Slide 6.2.1 ----------- X: 10 Y: -20: X+4 $t0: 10 $t1: -20 $a0 = -20 - 10 = -30 Slide 6.1.3 ----------- i: 7 s: s+1: 0 $t0: 7 print s => '7' '7' = '0' + 7 = 48 + 7 = 55 Slide 6.1.2 ----------- X: 10 $t0: 10 $a0: -10 Slide 6.1.1 ----------- X: 10 Y: -20 : X+4 $t0: 10 $t1: -20 $a0: -10 Wednesday, February 14, 2024 ---------------------------- Slide 5.20.3 ------------ $a0: 0000 0000 | V $a0: 0001 0000 = 16**4 = 65536 Slide 5.20.1 ------------ msg: C msg+1: l msg+2: a msg+3: s msg+4: s msg+5: , msg+6: msg+7: G msg+8: r msg+9: e msg+10: e msg+11: t msg+12: i msg+13: n msg+14: g msg+15: 0 msg+16: Tuesday, February 13, 2024 -------------------------- Slide 5.19.3 ------------ X: 01 => 02 X+1: 02 => 01 0102 = 16**2 + 2 = 258 $t0: 01 $t1: 02 X = 01 X+1 = 02 T = X X = X+1 = 02 X+1 = T = 01 Slide 5.19.2 ------------ X: 02 X+1: 01 => 00 X+2: 00 X+1: 00 $a0: 2 Slide 5.19.1 ------------ X: 04 X+1: 03 X+2: 02 X+1: 01 $t0: X $a0: 3 Slide 5.18.2 ------------ s: a s+1: b s+2: c => d s+3: 0 $t0: d $a0: s Slide 5.18.2 ------------ X: 1 X+1: 0 X+2: 1 :Y $t0: 1 $a0: 1 Slide 5.18.1 ------------ X: 1 X+4: 1 X+8: 3 :Y $t0: 1 $a0: 3 Slide 5.17.6 ------------ val: 01 val+1: 00 val+2: 02 val+3: 03 val+4: 04 val+5: 05 val+6: 06 val+7: 07 val+8: $t0: val+1 $a0: 3 (at val+3) Slide 5.17.5 ------------ s: a s+1: b s+2: c s+3: 0 $t0: 2 $a0: s+2 Slide 5.17.4 ------------ s: a s+1: b s+2: c s+3: 0 $t0: s+1 Monday, February 12, 2024 ------------------------- Slide 5.17.3 ------------ s: a s+1: b s+2: c S+3: 0 $t0: s+2 $a0: s+2 Slide 5.17.2 ------------ val-1: 1 val: 2 val+1: 3 val+2: 0 $a0: 0000 0001 = 1 Slide 5.17.1 ------------ val: 00 val+1: 01 val+2: 10 val+3: 00 $a0: 0000 0010 = 16 Thursday, February 08, 2024 --------------------------- Slide 5.16.3 ------------ val: 1 (byte) val+1: 0 val+2: 2 (half word) val+4: 3 (word) val+8: 0 val+9: 0 val+10: 0 $a0: 0000 0000 = 0 Slide 5.16.2 ------------ Error since an odd address Slide 5.16.1 ------------ s: a s+1: b s+2: c s+3: 0 $a0: s+1 Slide 5.15.3 ------------ val: -10 : F6 val+1: val+2: val+3: $t0: 0000 00F6 $a0: 0000 00F6 = 15x16 + 6 = 246 Slide 5.15.2 ------------ val0: 0 : 00 val1: 1 : 01 val2: 2 $a0: 0000 0100 = 1x16**2 = 256 Slide 5.15.1 ------------ Error since an odd address Slide 5.14.4 ------------ val: -10 = F6 = 1111 0110 val+1: 0 = 00 val+2: 0 = 00 val+3: 0 = 00 $a0: FFFF FFF6 = -10 0000 0009 + 1 ----------- 0000 000A = 10 Slide 5.14.3 ------------ val: -10 = F6 val+1: 0 = 00 val+2: 0 = 00 val+3: 0 = 00 $a0: 0000 00F6 = 15x16 + 6 = 246 10 = 0000 0000 0000 1010 1111 1111 1111 0101 + 1 --------------------- -10 = 1111 1111 1111 0110 ---- ---- ---- ---- F F F 6 $a0: FFFF FFF6 = FFF6 = -10 0000 0009 + 1 ----------- 0000 000A = 10 Wednesday, February 07, 2024 ---------------------------- Slide 5.14.2 ------------ val: -10 = FFF6 (half word) val+2: 0 10 = 0000 0000 0000 1010 1111 1111 1111 0101 + 1 --------------------- -10 = 1111 1111 1111 0110 ---- ---- ---- ---- F F F 6 $a0: FFFF FFF6 = FFF6 = -10 0000 0009 + 1 ----------- 0000 000A = 10 Slide 5.12.6 ------------ X: 1 X+1: 0 X+2: 0 X+3: 0 Y: 2 : X+4 Y+1: 0 : X+5 Y+2: 0 : X+6 Y+3: 0 : X+7 Slide 5.12.5 ------------ s: 100 sw 100, s | V li $t0, 100 sw $t0, s Slide 5.12.4 ------------ X: 1 : Y-2 (byte) Y: 2 : X+2 (half word) Y+2: : X+4 $a0: 00 00 00 00 Tuesday, February 06, 2024 -------------------------- Slide 5.12.1 ------------ s: x y z 0 s: .asciiz "xyz" Slide 5.8.2 ----------- 10000000 = 1x2**7 = 128 - 1 = 1 ------------------------- 01111111 = 127 -4 < -3 11111111 = -1 00000000 + 1 ---------- 00000001 = 1 10000000 = -128 01111111 + 1 ---------- 10000000 = 2**7 = 128 8 = 1000 75E0 = 14x16 + 5x16**2 + 7x16**3 = 224 + 1280 + 28672 = 30176 Slide 5.8.1 ----------- 1462 / 16 => Q: 91, R: 6 91 / 16 => Q: 5, R: B 5 / 16 => Q: 0, R: 5 Slide 5.7.3 ----------- 38 = 32 + 4 + 2 = 00100110 Monday, February 05, 2024 ------------------------- Slide 5.5 --------- B65F = 15x16**0 + 5x16**1 + 6x16**2 + 11x16**3 = 15 + 80 + 1536 + 45056 Slide 5.4 --------- 10 1100 0110 1011 = 1x2**13 + 1x2**11 + 1x2**10 + ... 11111111 = 1x2**7 + 1x2**6 + .... 100000000 = 1x2**8 = 256 - 1 = 1 -------------------------- 11111111 = 255 Thursday, February 01, 2024 --------------------------- Slide 5.3.2 ----------- 1010100 = 1x2**2 + 1x2**4 + 1x2**6 = 4 + 16 + 64 = 84 A: 10 B: 11 C: 12 D: 13 E: 14 F: 15 Slide 4.14.3 ------------ $v0 = 12345 $a0 = address of val val: 12345 val+1: val+2: val+3: val+4: ? val+5: ? Slide 4.14.1 ------------ s1: a b c s2: x y z 0 Tuesday, January 30, 2024 ------------------------- A => B stack = A $ra / $31: return address = A B => C stack = BA $ra / $31: return address = B C => B stack = A $ra / $31: return address = B B => A stack = $ra / $31: return address = A Monday, January 29, 2024 ------------------------ Slide 3.13 ---------- SPECratio is simply the reference time, which is supplied by SPEC, divided by the measured execution time. SPEC(p) = 8660 / 400 = 21.65 ( Π SPECratioi )**1/n, where Π ai means the product a1×a2×...×an, i = 1 .. n = ( 21.65 x 8.5 )**(0.5) = 184.025**(0.5) = 13.57 CPU time(p) = Instruction count × CPI × Clock cycle time => CPI = T / ( I x CT ) = 400 sec / ( 1750 x 10**9 I x 0.25 x 10**(-9) sec/cycle ) = 400 / ( 1750 x 0.25 ) cycles / I = 0.91 cycles / instr Thursday, January 25, 2024 -------------------------- Slide 3.10 ---------- Power ∝ ½ × Capacitive load × Voltage2 × Frequency switched Power ∝ ½ × Capacitive load × Voltage2 × Clock rate 0.8 = P2 / P1 = ( 0.5 x C2 x 3 x 3 / ( 0.5 x 10**9 ) ) / ( 0.5 x C1 x 6 x 6 / ( 1.0 x 10**9 ) ) = ( 9 x C2 ) / ( 18 x C1) C2 / C1 = 0.8 x 18 / 9 = 1.6 Slide 3.8 --------- CPU times = ( Instruction count × CPI ) / Clock rate (old) 20 = I x CPI / R (new) ? = 0.5xI x 1.2 x CPI / R = 0.6 x ( I x CPI / R ) = 0.6 x 20 = 12 sec Slide 3.6 --------- CPU times = ( Instruction count × CPI ) / Clock rate T1 = ( 10000x0.3x1 + 10000x0.3x2 + 10000x0.4x3 ) cycles / ( 2x10**9 cycles/sec ) = ( 3000 + 6000 + 12000 ) / (2x10**9) = 1.05 x 10**(-5) sec Wednesday, January 24, 2024 --------------------------- Slide 3.5 --------- CPU clock cycles = Instructions for a program (I) × Average clock cycles per instruction (CPI) PerformanceX / PerformanceY = Execution timeY / Execution timeX CPU execution time for a program = CPU clock cycles for a program / Clock rate T1 = I x 2.0 cycles / ( 2.5 x 10**9 cycles / sec ) = 0.8 x 10**(-9) x I sec T2 = I x 2.5 cycles / ( 3.0 x 10**9 cycles / sec ) = 0.833 x 10**(-9) x I sec P1 / P2 = 0.833 / 0.8 = 1.04 Slide 3.4 --------- PerformanceX / PerformanceY = Execution timeY / Execution timeX = Execution timeB / Execution timeC = 30 sec / ? sec = 5 => ? = 6 sec CPU execution time for a program = CPU clock cycles for a program / Clock rate 12 sec = C_A cycles / ( 4 x 10**9 cycles/sec ) 8 sec = ? cycles / ( 2 x 10**9 cycles/sec ) ? = 8 x 2 x 10**9 = 1.6 x 10**10 cycles Slide 3.2 --------- PerformanceX / PerformanceY = Execution timeY / Execution timeX = Execution timeB / Execution timeA = 3 = Execution timeB / 30 sec => Execution timeB = 3 x 30 sec = 90 sec PerformanceX / PerformanceY = Execution timeY / Execution timeX = Execution timeB / Execution timeA = 25 sec / 10 sec = 2.5 Tuesday, January 23, 2024 ------------------------- Slide 2.23 ---------- Yield = 1 / ( 1 + Defects per area × Die area )**n = 1 / ( 1 + 0.02 x ( 3.14 x 10x10 / 120 ) )**2 = 1 / ( 1 + 0.02 x 2.62 )**2 = 1 / ( 1 + 0.0523 )**2 = 1 / 1.1074 = 0.903 Wednesday, January 17, 2024 --------------------------- go to L1 a = 1 + 3 L1: FIND ALL RECORDS WHERE NAME IS "SMITH" for ( i = 0; i < 1000; i++ ) { if ( record[i].name == "Smith" ) print record[i]; } Tuesday, January 16, 2024 --------------------------- x = 1 + 2 Load-store computers Stored-program computers micro-instruction: add multiply (assembly, but not micro-instruction): 3 x 2 = 2 + 2 + 2 = 6 Wednesday, January 10, 2024 --------------------------- c: "abcde\0" SIMD: Single Instruction/Multiple Data RISC: Reduced Instruction Set Computer CISC: Complex Instruction Set Computer MIPS: https://mips.com/ ARM: https://www.arm.com/products/silicon-ip-cpu