Class Notes of CSCI 370 Computer Architecture (Spring 2026) =========================================================== Monday, March 23 ================== Slide 7.3.b ----------- Thursday, March 19 ================== Slide 7.3.a ----------- 5 + 4 + 3 + 2 + 1 = 15 n = $v0 = 5 %t0 = n = 5 $t1 = ans = 0 Slide 6.13.c ------------ $t0 = 5 after 1st: 4 = $t0 after 2nd: 3 = $t0 after 3rd: 2 = $t0 after 4th: 1 = $t0 after 5th: 0 = $t0 0 1 1 2 3 5 8 13 ... - a0 t1 $a0 = 0 $t1 = 1 L1: $t2 = ( $t0 > 0 ) ? 1 : 0 $t2 = if ( $t2 == 0 ) stop else { put $a0 add $t2, $t1, $a0 move $a0, $t1 move $t1, $t2 sub $t0, $t0, 1 goto L1 } Monday, March 16 ================ Slide 6.13.b ------------ $t0 = FFFF FFFF = -1 $t1 = (|$t0| > 0) ? 1 : 0 $t1 = 1 if ( $t1 <> 0 ) put 2 else put 1 Slide 6.13.a ------------ $t0 = FFFF FFFF = -1 $t1 = ($t0 > 0) ? 1 : 0 $t1 = 0 if ( $t1 <> 0 ) put 2 else put 1 Slide 6.12.c ------------ $a0 = 5 + 4 + 3 + 2 + 1 = 15 = accumulator $v0 = 5 = counter ($t0 <> 0) ? put 15 : next Slide 6.12.b ------------ X: FF $t0 = FFFF FFFF = -1 $t0 = ($t0 <> -1) ? 1 : 0 $t0 = 0 Slide 6.12.a ------------ $t0 = 0000 00FF = 255 = 2^8 - 1 $t1 = FFFF FFFF = -1 $t0 = ($t0 == $t1) ? 1 : 0 $t0 = 0 Slide 6.10.c ------------ X: FF $t0 = FFFF FFFF = -1 + 1 ---------------- 1 0000 0000 = 0 Thursday, March 05 ================== Slide 6.10.b ------------ $t0 = FFFF FFFF = -1 0000 0002 = 2 FFFF FFFD + 1 ----------------- FFFF FFFE = -2 if ( |$t0| >= |-2| ) put 2 else put 1 Slide 6.10.a ------------ $t0 = 0000 00FF > 0 $t1 = 0000 0000 if ( $t0 >= $t1 ) put 2 else put 1 Slide 6.9.c ----------- $a0 = 5 + 4 + 3 + 2 + 1 = 15 = accumulator $v0 = 5 = counter Slide 6.9.b ----------- $t0 = FF = FFFF FFFF or = 0000 00FF $t1 = -1 = FFFF FFFF if ( $t0 == $t1 ) put 2 else put 1 Slide 6.7.c ----------- $a0 = $a0 / -4 = -14 / -4 0000 1110 = 14 1111 0001 + 1 ----------- 1111 0010 = -14 0000 0100 = 4 1111 1011 + 1 ----------- 1111 1100 = -4 ( 1111 0010 ) / ( 1111 1100 ) = 0 14 - 0 x (-4) = 14 Slide 6.7.b ----------- $a0 = $a0 / $t0 = -14 / 4 = -3 = lo (quotient) hi = -14 - (4x(-3)) = -14 + 12 = -2 (remainder) Slide 6.7.a ----------- $a0 = $a0 / $t0 = -14 / 4 = -3 Slide 6.6.e ----------- $t0 = 8000 0000 = -2^31 x 2 -------------------------------------- 0000 0001 0000 0000 = 2^32 FFFF FFFE FFFF FFFF + 1 --------------------- hi lo = FFFF FFFF FFFF FFFF = -2^32 Wednesday, March 04 =================== Slide 6.6.d ----------- $t0 = 8000 0000 = -2^31 x 2 -------------------------------------- hi lo = 0000 0001 0000 0000 = 2^32 Slide 6.6.c ----------- $t0 = -11 $t1 = 12 hi lo = -132 = $t0 x $t1 = -11 x 12 $a0 = -132 Slide 6.6.b ----------- $a0 = -11 x 12 = -132 Slide 6.6.a ----------- $a0 = -11 x 12 = -132 Slide 6.4.c ----------- X: 8000 0000 = -2^31 $t0 = 8000 0000 - 1 ---------------- 8000 0000 + FFFF FFFF ---------------- $a0 = 1 7FFF FFFF Slide 6.4.a and b ----------------- X: FF = -1 = 1111 1111 $a0 = 1111 1111 1111 1111 1111 1111 1111 1111 = -1 0000 0000 0000 0000 0000 0000 0000 0000 + 1 ------------------------------------------- 0000 0000 0000 0000 0000 0000 0000 0001 $a0 = $a0 + 1 = -1 + 1 = 0 Slide 6.3.d ----------- $a0 = $t1 + $t0 = -2 + 1 = -1 Slide 6.3.c ----------- X: 1 X+1: X+2: X+3: Y: 8000 0000 < 0 $t1 = 8000 0000 < 0 - 1 < 0 -------------------- $t1 = 8000 0000 < 0 + FFFF FFFF = -1 < 0 ----------------------- $a0 = 1 7FFF FFFF = 2^31 - 1 0000 0001 FFFF FFFE + 1 ----------- FFFF FFFF = -1 Tuesday, March 03 ================= Slide 6.3.a & b --------------- X: 1 X+1: X+2: X+3: Y: 7FFF FFFF => max 32 bits $t0 = 1 $t1 = 7FFF FFFF > 0 + 1 > 0 ----------------- $a0 = 8000 0000 = -2^31 < 0 Slide 6.2.c ----------- $t0 = -20 $t1 = -20 => 20 $a0 = 20 - (-20) = 40 Slide 6.2.b ----------- i: '7' $t0 = '7' $t0 = <= 7 = '7' - '0' = 55 - 48 Slide 6.2.a ----------- X: 10 X+1: X+2: X+3: Y: -20 :X+4 Y+1: :X+5 Y+2: :X+6 Y+3: :X+7 $t0 = 10 $t1 = -20 $a0 = -30 Slide 6.1.c ----------- i: 7 s: <= '7' = 55 = '0' + 7 s+1: 0 $t0 = 7 Slide 6.1.b ----------- X: 10 $t0 = 10 $a0 = -10 Slide 6.1.a ----------- X: 10 X+1: X+2: X+3: Y: -20 :X+4 Y+1: :X+5 Y+2: :X+6 Y+3: :X+7 $t0 = 10 $t1 = -20 $a0 = -10 Monday, March 02 ================ Slide 5.21.c ------------ $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 => 0000 0000 0000 0001 0000 0000 0000 0000 2^16 = 65536 Slide 5.21.a ------------ msg: Class, Greeting0 Slide 5.20.c ------------ X: 01 => 02 X+1: 02 => 01 $t0 = 0000 0001 $t1 = 0000 0002 X = 0012 => 0000 0000 0000 0000 0000 0001 0000 0010 = 2 + 2^8 = 258 Thursday, February 26 ===================== Slide 5.20.b ------------ X: 02 X+1: 01 => 00 X+2: 00 X+1: 00 $t0 = X $a0 = 2 Slide 5.20.a ------------ X: 04 X+1: 03 X+2: 02 X+1: 01 $t0 = X $a0 = 3 Slide 5.18.c ------------ s: a s+1: b s+2: c => d s+3: 0 $t0 = d $a0 = s+2 Slide 5.18.b ------------ X: 1 X+1: Y: 2 => 1 :X+2 Y+1: :X+3 $t0 = 1 $a0 = 1 Slide 5.18.a ------------ X: 1 X+1: X+2: X+3: X+4: 2 => 1 X+5: X+6: X+7: X+8: 3 : Y X+9: : Y+1 X+10: : Y+2 X+11: : Y+3 $t0 = 1 $a0 = 3 Slide 5.17.f ------------ val: 01 val+1: 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 Slide 5.17.e ------------ s: a s+1: b s+2: c s+3: 0 $t0 = 2 $a0 = s+2 Slide 5.17.d ------------ s: a s+1: b s+2: c s+3: 0 $t0 = s + 1 $a0 = b Wednesday, February 25 ====================== Slide 5.17.c ------------ s: a s+1: b s+2: c s+3: 0 $t0 = s+2 $a0 = s+2 Slide 5.17.b ------------ val-1: 1 val: 2 val+1: 3 $a0 = 0000 0001 = 1 Slide 5.17.a ------------ val: 00 val+1: 01 val+2: 10 val+3: 00 $a0 = 0000 0010 = 16 Slide 5.16.c ------------ val: 1 val+1: val+2: 2 val+3: val+4: 3 val+5: val+6: val+7: $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 Slide 5.16.b ------------ val: 1 val+1: val+2: 2 val+3: val+4: 3 val+5: val+6: val+7: Slide 5.16.a ------------ s: a s+1: b s+2: c s+3: 0 $a0 = s+1 Slide 5.15.c ------------ val: -10 $t0 = 0000 0000 0000 0000 0000 0000 0000 0000 $t0 = 0000 0000 0000 0000 0000 0000 -10 = 0000 0000 0000 0000 0000 0000 1111 0110 $a0 = 0000 0000 0000 0000 0000 0000 1111 0110 = 246 1111 0110 = 2 + 4 + 16 + 32 + 64 + 128 = 246 Slide 5.15.b ------------ val0: 0 val1: 1 val2: 2 $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 $a0 = 0000 0000 0000 0000 1 0 = 0000 0000 0000 0000 0000 0001 0000 0000 = 2^8 = 256 Slide 5.15.a ------------ val0: 0 val1: 1 val2: 2 Slide 5.14.d ------------ val: -10 val+1: val+2: val+3: val+4: ... $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 $a0 = 1111 1111 1111 1111 1111 1111 1111 0110 = -10 0000 0000 0000 0000 0000 0000 0000 1001 + 1 ----------------------------------------------- 0000 0000 0000 0000 0000 0000 0000 1010 = 10 2 + 4 + 16 + 32 + 64 + 128 = 246 0000 1010 = 10 1111 0101 + 1 ---------------- 1111 0110 = -10 Monday, February 23 =================== Slide 5.14.c ------------ val: -10 val+1: 0 val+2: 0 val+3: 0 val+4: 0 ... $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 $a0 = 0000 0000 0000 0000 -10 = 0000 0000 0000 0000 0000 0000 1111 0110 = $a0 2 + 4 + 16 + 32 + 64 + 128 = 246 0000 1010 = 10 1111 0101 + 1 ---------------- 1111 0110 = -10 Slide 5.14.b ------------ val: -10 val+1: val+2: 0 val+3: 0 val+4: 0 ... $a0 = 0000 0000 0000 0000 0000 0000 0000 0000 $a0 = 1111111111111111111 -10 = 1111111111111111111 1111 1111 1111 0110 = $a0 0000000000000000000 0000 0000 0000 1001 + 1 ----------------------------------------------- 0000000000000000000 0000 0000 0000 1010 = 10 0000 0000 0000 1010 = 10 1111 1111 1111 0101 + 1 --------------------------- = 1111 1111 1111 0110 = -10 Slide 5.14.a ------------ val: -10 val+1: val+2: val+3: val+4: 0 ... Slide 5.12.f ------------ X: 1 X+1: 0 X+2: X+3: Y: 2 Y+1: Y+2: Y+3: ... $a0 = 02000000 Slide 5.12.e ------------ s: 100 s+1: s+2: s+4: s+5 0 ... $t0 = 100 $a0 = 100 Thursday, February 19 ===================== Slide 5.12.d ------------ X: 1 Y-1: 0 :X+1 Y: 2 :X+2 Y+1: :X+3 Y+2: ? :X+4 Slide 5.12 ---------- s: x s+1: y s+2: z s+3: 0 s+4: ? ... Tuesday, February 17 ==================== 10000000 = 2^7 = 128 - 01111111 = ? ----------------------- 00000001 = 1 ? = 128 - 1 = 127 10000000 01111111 + 1 ---------- 10000000 = -2^7 = -128 75E0 = 14x16 + 5x256 + 7x4096 = 224 + 1280 + 28672 = 30176 1462 / 16 = 91, R: 6 91 / 16 = 5, R: B 5 / 16 = 0, R: 5 0 / 16 = 0, R: 0 Thursday, February 12 ===================== B65F = 15 + 5x16 + 6x16^2 + 11x16^3 = 46687 100000000000000000000000000000000 = 2^32 - 11111111111111111111111111111111 = 2^32-1 --------------------------------------- 00000000000000000000000000000001 = 1 11010 = 1x2^1 + 1x2^3 + 1x2^4 = 2 + 8 + 16 = 26 Slide 4.15.c ------------ var: 12345 var+1: var+2: var+3: var+4: .... Slide 4.15.b ------------ s: a s+1: b s+2: c s+3: 0 s+4: Wednesday, February 11 ====================== Slide 4.15.a ------------ s1: a :s2-3 s1+1: b :s2-2 s1+2: c :s2-1 s2: x :s1+3 s2+1: y :s1+4 s2+2: z :s1+5 s2+3: 0 :s1+6 Tuesday, February 10 ==================== str: "abc" (ascii) abc0 (asciiz) qwef567 poabc096bxasThis is a test.0 123ab ---------------------------------------------- ^ ^ ^ str buf array1 array1[0] + array1[1] print str; Wednesday, February 04 ====================== Slide 3.13.c ------------ Geometric Mean = ( Π SPECratioi )1/n, where Π ai means the product a1×a2×...×an, i = 1 .. n Geometric Mean = (21.65 x 8.5)^0.5 = Slide 3.13.b ------------ SPECratio = reference time / execution time. SPECratio(perl) = 8660 / 400 SPECratio(mcf) = 8500 / 1000 Slide 3.13.a ------------ CPU times = ( Instruction count × CPI ) / Clock rate CPI = 400 sec / (1750 x 10^9 inst x 0.25 x 10^(-9) sec / cycle) = 400 / (1750 x 0.25) cycles/inst Slide 3.10 ---------- Power = ½ × Capacitive load × Voltage2 × Frequency switched 0.8 = Power2 / power1 = (0.5 x C2 x 3^2 x 1 x 10^9) / (0.5 x C1 x 6^2 x 0.5 x 10^9) => C2 / C1 = (0.8 x 36 x 0.5) / 9 = Tuesday, February 03 ==================== Slide 3.6 --------- Time = Seconds / Program = ( Instructions / Program ) × ( Clock cycles / Instruction ) × ( Seconds / Clock cycle ) CPU times = ( Instruction count × CPI ) / Clock rate Time(Old) = 20 sec = I x CPI / Rate Time(New) = ? sec = 0.5xI x 1.2xCPI / Rate = 0.6 x I x CPI / Rate = 0.6 x 20 = 12 sec Slide 3.6 --------- CPU times = ( Instruction count × CPI ) / Clock rate Cyecles1 = 10^4 x 0.3 x 1 + 10^4 x 0.3 x 2 + 10^4 x 0.4 x 3 = 3000 + 6000 + 12000 = 21000 cycles Time1 = 21000 cycles / (2 x 10^9 cycles/sec) = 10500 x 10^(-9) sec Cyecles2 = 10^4 x 0.3 x 2 + 10^4 x 0.3 x 2 + 10^4 x 0.4 x 2 = 6000 + 6000 + 8000 = 20000 cycles Time2 = 20000 cycles / (1.5 x 10^9 cycles/sec) = 13333 x 10^(-9) sec Monday, February 02 =================== Slide 3.5 --------- CPU execution time for a program = CPU clock cycles for a program / Clock rate CPU clock cycles = Instructions for a program × Average clock cycles per instruction (CPI) Performance1 / Performance2 = Execution time2 / Execution time1 I inst x 2 cycles / instr = 2xI cycles 2 x I cycles / (2.5 x 10^9 cycles / sec) = 2 x I / (2.5 x 10^9) sec I inst x 2.5 cycles / instr = 2.5xI cycles 2.5 x I cycles / (3.0 x 10^9 cycles / sec) = 2.5 x I / (3 x 10^9) sec (2.5 x I / (3 x 10^9)) / (2 x I / (2.5 x 10^9)) = (2.5/3) /(2/2.5) = 2.5 x 2.5 / (3 x 2) = 1.04 Thursday, January 29 ==================== Slide 3.4.b ----------- PerformanceC / PerformanceB = Execution timeB / Execution timeC = 5 => Execution timeC = 30 sec / 5 = 6 sec Slide 3.4.a ----------- CPU execution time for a program = CPU clock cycles for a program / Clock rate TimeB = 8 = CycleB / (RateA/2) => CycleB = (8 sec x 4 x 10^9 cycles / sec ) / 2 = 16 x 10^9 cycles Slide 3.2.b ----------- PerformanceX / PerformanceY = Execution timeY / Execution timeX = n PerformanceA / PerformanceB = Execution timeB / Execution timeA = 3 => TimeB = 3 * TimeA = 3 * 30 = 90 Slide 3.2.a ----------- PerformanceX / PerformanceY = Execution timeY / Execution timeX = n PerformanceA / PerformanceB = Execution timeB / Execution timeA = 25 / 10 = 2.5 Wednesday, January 28 ===================== Slide 2.21: ----------- Yield = 1 / ( 1 + Defects per area × Die area )^n = 1 / ( 1 + 0.02 x 2.62 )^2 = 1 / ( 1.0524 x 1.0524) = 1 / 1.10754576 = 0.9029 Die area = 3.14 x (20 / 2)^2 / 120 = 314 / 120 = 2.62 ============================================ word b, c, a; // 1 word = 4 bytes lw $t1, 8($t6) // $t1 = a relocatable address $t6 = 1008 (1000 + 8) // base address = 1000 $t6 = 2008 (2000 + 8) // base address = 2000 INTEGER A; A := 1.2; 4th generation: SQL: FIND ALL RECORDS WHERE NAME IS "SMITH" 3rd generation: for ( i = 0; i < 1000; i++ ) { if ( name[i] == "SMITH" ) print record[i] } CPU (with +, but no x) 1 + 2 = 3 Microarchitecture (without x) 2 x 3 = 6 = 2 + 2 + 2 (microcode or firmware) SIMD: Single Instruction/Multiple Data RISC: Reduced Instruction Set Computer (ARM & MIPS) CISC: Complex Instruction Set Computer (Intel) MIPS: https://mips.com/ ARM: https://www.arm.com/products/silicon-ip-cpu Load-store computers Stored-program computers