Computer Organization and Design The Hardware Software Interface, 2E Dave Patterson & John Hennessy Errata for the 4th Printing # 1. Page 12 Error Figure 1.6, In the last sentence of the figure caption text, Change “70” to “75” 2. 14 Figure 1.8, In the 8th – 10th lines of the figure caption text, Replace “The large box to the lower left contains the power supply, and above it are a hard magnetic disk drive and a floppy disk drive.” with “The large box on the lower left is a cage for mounting additional drives; above it are a hard disk drive and a floppy disk drive. The power supply is normally to the right of this box, but it was removed to get a better view of the motherboard.” 3. 19 Line 241, Change “3600 to 7200” to “5400 to 15000” 4. 30 Figure 1.20, In the 9th line of the figure caption text, Change “SPECin95base” to “SPECint95base” 5. 43 Figure 1.30, In the 8th and 10th column headings, Change “Price/performance vs. UNIVAC” “Adjusted price/performance vs. UNIVAC” to “Price-performance vs. UNIVAC” “Adjusted price-performance vs. UNIVAC” 6. 76 Line 27, At the end of the sentence, Add “(The measurements for the B5500 and CDC 6600 are shown as dashed lines in Figure 2.9.)” 7. 77 Figure 2.9, on the bottom left corner, Change “NU 1108” to “UNIVAC 1108” 8. 81 Line 8, Change “means of the ratios” to “mean of the ratios” 9. 112 In the 10th line of the answer section, Replace, “h ($s2) to A[8]($t0) and put the sum in the register corresponding to g($s1)” with “h (contained in $s2) to A[8]($t0) and put the sum in the register corresponding to g(associated with $s1)” 10. 119 In the 4th line of code in the Example section, Change A[i] to A[300] 11. 120 In the 8th line of the Answer section, Change the font of “add” so that it is the same lw in next paragraph 12. 131 Figure 3.9, In the third table, 6th row, 6th column, Change “25” to “100” 13. 144 In 5th-6th lines of text, and the 5th-6th lines of code, Replace 1 All line numbers apply to running text only, and do not include bullets, subpoints, code, captions, headings, or tables. Next we increment i and loop back if the character was not 0; that is, if this is not the last character of the string. add $s0,$s0,1 #I = I + 1 bne $t2,$zero,L1 # if y[i] != 0, go to L1 with Next we exit the loop if the character was 0; that is, if it is the last character of the string. beq $t2, $zero, L2 # if y[I] == 0, go to L2 If not, we increment i and loop back add $s0, $s0, 1 # I = I + 1 j L1 # go to L1 14. 144 In the 6th line of code, Insert L2: before lw 15. 149 In the 6th line of the Answer section, Change “(12)” to “(16)” 16. 156 Figure 3.21, In the 8th line of the figure caption text, Change .TXT, to .C 17. 164 Figure 3.23, In the 2nd line of the figure caption text, Change “III” to “II” 18. 164 In the 5th lines of the Register Allocation for swap section, Change “144” to “136” 19. 165 Figure 3.24, In the 1st row, Change al to $al 20. 165 Figure 3.24, In the 2nd row, Change tl to $tl 21. 177 In the 6th line of code, Change Loop,ctr!=0 to Loop,$ctr!=0 22. 181 Figure 3.31, In the 3rd and 4th rows of the MIPS equivalent column, change “$s1” to “$s2” 23. 222 Figure 4.4, Change column heading “Result” to “Result indicating overflow” 24. 228 Figure 4.7, 2nd table, 19th row, 4th column, Change ($sl!=$s2) to ($s1==$s2) 25. 228 In Figure 4.7, 2nd table, 20th row, 4th column, Change ($sl== $s2) to ($sl!=$s2) 26. 229 In the 1st line of the Answer section, Change “C right-aligns” to “C typically rightaligns” 27. 230 In the 10th line of the text, Replace “for an excuse that sltiu does not sign extend its immediate.” with “with an excuse for why sltiu sign extends its immediate field.” 28. 233 Line 8, Change “one” to “all” 29. 233 Figure 4.13, In the 2nd line of the figure caption text, change “above” to “on page 234” 30. 244 Figure 4.22, In the middle pipe, Move p0 below handle 31. 246 Line 3, Change “3” to “c3” 32. 253 Line 7, Replace “cycles to multiply.” with “cycles to multiply two 32-bit numbers.” 33. 265 In the division problem, Realign the digits according to the following error: the quotient is misaligned relative to the dividend by half a character; the partial remainder terms are misaligned by a full character relative to the dividend, making them appear to be off by one-digit position. 34. 271 Figure 4.41, Change the font color of “Shift Right” to teal. Change the font color of “Shift Left” and the arrow that follow to black. 35. 273 In the 10th line of the Elaboration section, Change “dividend” to “divisor” 36. 292 Figure 4.48, 2nd table, 1st row, 1st column, Change “32-21” to “23-21” 37. 292 Figure 4.48, third table, Change Header from “(f above: 01000⇒ f = s, 01001⇒ f = d)” to “(f above: 10001⇒ f = s, 10001⇒ f = d)” 38. 300 In the 29th line of the Elaboration section, Change “smallest single precision” to “smallest positive single precision” 39. 310 On the left side of the table, row 23, Change bgezal to bltzal 40. 324 In the 3rd line of Exercise 4.14, Change “A.18 (page A-50)” to “A.19 (page A-54)” 41. 331 Figure 4.56, bottom element, Add arrowhead to line “c’2” 42. 346 Figure 5.6, In the top right hand corner, Change “ALU control” to “ALU operation” 43. 350 In the 5th line of the Elaboration section, Change “branch before jumping” to “branch in sequential instruction order before jumping? 44. 361 In the 3rd-5th lines of #1, Delete “…those that are asserted in later steps of an R type instruction are in gray, and those in light gray are those not active for an R-type instruction in any step.” 45. 372 Figure 5.29, The to input to the leftmost mux of the pair of muxes in the upper right corner should not be bold (unbold the lst segment of the line). 46. 373 In the 1st line of the Example section, Change “time” to “times 47. 373 In the 7th line of the Example section, Change “R-format instructions” to “ALU instructions” 48. 374 In the 1st row of the top table, Change “R-format” to “ALU type” 49. 374 In the 1st row of the bottom table, Change “R-format” to “ALU type” 50. 375 In the 5th-6th lines of the Example section, Replace “Using the instruction distribution for spice from Chapter 4, Figure 4.54 on page 311, find the performance” with “Find the performance” 51. 376 In the 3rd line of the math in the Answer section, Change + 2 * 2% + 20 * 7% + 12 * 7% = 7.0 ns to + 2 * 2% + 12 * 7% + 20 * 7% = 8.0 ns 52. 383 Figure 5.33, Add an arrowhead to the line labeled “PC[31-28]” goes left to right (change intersection to arrowhead from bullet) 53. 385 Line 34, Change “setting PCWrite” to “setting PCSource to ∅∅ and setting PCWrite” 54. 386 Line 31, Change “three” to “four” 55. 387 Line 17, Change “The PCCondWrite signal” to “The PCWriteCond signal.” 56. 387 In the 4th line of code, Change <<2) to <<2); 57. 388 Line 13, Change “for loads, the signal” to “for loads and stores, the signal” 58. 392 Lines 20-21, Delete, “(This is not needed for stores, since the write address uses a different input into the memory.)” 59. 393 Figure 5.38, Change the label on #4 from “Write-back step” to “Memory read completion step” 60. 396 Figure 5.42, Change the label on #4 from “Write-back step” to “Memory read completion step” 61. 397 In the 2nd line of the Example section, Replace “in the example starting on page 373,” with “in Figure 4.54 on page 311,” 62. 397 In the 1st-2nd lines of the Answer section, Replace “The mix is 22% loads, 11% stores, 49% R-format operations, 16% branches, and 2% jumps.” with “The mix is 23% loads (1% load byte + 1% load halfword + 21% load word), 13% stores (1% store byte + 12% store word), 19% branches (9% BEQ, 8% BNE, 1% BLTZ, 1% BGEZ), 2% jumps (1% jal + 1% jr), and 43% ALU (all the rest of the mix).” 63. 397 In the 3rd bullet, Change “R-format” to “ALU” 64. 397 In the CPI equation at the bottom of the page, Replace “0.22*5+0.11*4+0.49*4+0.16*3+0.02*3=1.1+0.44+1.96+0.48+0.06=4.04” with “0.23*5+0.13*4+0.43*4+0.19*3+0.02*3=4.02” 65. 398 In the 3rd line of the Elaboration section, Change “combinatorial” to “combinational” 66. 405 In the 1st row of the 3rd table, Change “ALU output” to “ALUOut” 67. 508 Line 17, Replace “microcode store would determine the value of the” to “microcode storage would determine the values of the” 68. 414 Figure 5.48, the arrow going into the EPC should connect from the output of the ALU (i.e. to the left of the ALUOut box, rather than to the right). (The two other lines coming out of ALUOut to two muxes should remain as is.) 69. 414 Figure 5.48, After the last sentence of the figure caption text, Add “For simplicity, this figure does not show the ALU overflow signal, which would need to be stored in a onebit register and delivered as an additional input to the control unit (see Figure 5.50 to see how it is used).” 70. 415 Figure 5.49, In state 10, Change “PC++Source” to “PC+Source” 71. 415 Figure 5.49, In the 9th line of state 11, Delete “PCSource=11” 72. 416 Figure 5.50, In the 2nd line of state 8, Change “00” to “10” 73. 420 In the first line of italics, Change “space in control” to “space in the control” 74. 427 In the 1st line of Exercise 5.4 , Change , “<§5.3>” to “<§5.4>” 75. 430 Line 1, Change “ISA” to “instruction set” 76. 443 Figure 6.5, Move “Reg” blocks that follow “Instruction fetch” to spot on their immediate right 6 times 77. 447 Figure 6.9, Change lw $s0 20($t1) to 78. 462 Figure 6.21, In the first line of the “Program execution order” Change lw $10, $20($1) to lw $10, 20($1) 79. 473 Figure 6.32, In clock cycle 4, Change “ID: and $12, $2, $3” to “ID: and $12, $4, $5” 80. 483 In the 1st-3rd lines of code, Delete semicolon (three times) 81. 484 Figure 6.40, In the mux capsules in the center of the figure, Reverse bottom two arrows pointing to the capsule in the middle, so that the top one is longer than the bottom one 82. 491 Figure 6.45, Move bubble from cycle 4 to cycle 3 83. 498 Line 4, Change “ANDing” to “ORing” 84. 500 Figure 6.52, In the 4th line of the figure caption text, Change or to sll 85. 504 In the 1st-2nd lines of the Answer section, Replace “The instruction mix for gcc is 22% loads, 11% stores, 49% R-format operations, 16% branches, and 2% jumps (see Answer on page 397).” with “The instruction mix for gcc is 23% loads, 13% stores, 19% branches, 2% jumps, and 43% (see Answer on page 397).” 86. 504 The fifth line of the Answer section should read, “Stores take 1 clock cycle, as do the ALU instructions.” 87. 504 In the equation of the Answer section, Change 1.5 * 22% + 1 * 11% + 1 * 49% + 1.25 * 16% + 2 * 2% = 1.17 to 1.5 * 23% + 1 * 13% + 1 * 43% + 1.25 * 19% + 2 * 2% = 1.18 88. 504 In the 9th line of the Answer section, Change “2.34” to “2.36” 89. 504 In the 10th line of the Answer section, Change “4.04” to “4.02” 90. 514 In the 10th line of the Answer section, Change “four” to “five” 91. 514 Figure 6.60, In the 2nd row, 2nd column, Insert $s1,$s3,∅ 92. 514 Figure 6.60, In the 2nd row, 3rd column, Change ($s1) to ($s3) 93. 514 Figure 6.60, In the 5th row, 3rd column, Change 0($s1) to 16($s1) 94. 514 Figure 6.60, In the 8th row, 3rd column, Change 4($s1) to 8($s1) 95. 514 Figure 6.60, In the 2nd line of the figure caption text, Change “pair” to “instruction in the loop” lw $s0, 20($t1) 96. 530 Exercise 6.6, In the 1st and 7th lines, Change “4.42” to “4.41” 97. 530 Exercise 6.9, In the 6th line, Replace “A.18 on page A-50 as references.” to “A.19 on page A-54 as references” 98. 534 In the 1st line of Exercise 6.22, Change “3.23” to “3.17” 99. 534 In the 4th line Exercise 6.22, after the last sentence, Insert “(Hint: You may have to add one or more additional stages to the pipeline.)” 100. 535 In the 10th line of Exercise 6.30, Replace “unrolled code, which appears on page 513, and your code” with “unscheduled code, which appears at the top of page 513, and your code” 101. 547 In the table at the bottom of the page, Change all “7.5” to “7.6” (5 times) 102. 566 In the 2nd line of math in the Answer section, Change “0.56” to 0.58” 103. 566 In the 5th line of the Answer section, Change “0.56 I = 1.36 I” to “0.58 I = 1.38 I” 104. 566 In the 7th line of the Answer section, Change “1.36 = 3.36” to “1.38 = 3.38” 105. 566 In the 4th line of math of the Answer section, Change “3.36” to “3.38” 106. 566 In the 9th line of the Answer section, Change “3.36” to “3.38” 107. 566 In the 9th line of the Answer section, Change “1.68” to “1.69” 108. 566 In the 17th line of the Answer section, Change “1.36=2.36” to “1.38=2.38” 109. 566 In the 5th line of math of the Answer section, Change “2.36= 2.36” to “2.38=2.38” 1 1 110. 566 In the 6th line of math of the Answer section, Change “1.36” to “1.38” 3.36 3.38 111. 566 In the 7th line of math of the Answer section, Change “1.36” to “1.38” 2.36 2.38 112. 567 In the formula used to “compute the relative performance time”, Replace IC*CPI*Clock cycle IC*CPI*Clock cycle 2 with IC*CPIslow clock*Clock cycle IC*CPIslow clock*Clock cycle 2 113. 575 In the 2nd line of the Example section, Replace “4K blocks and a 32-bit” with “4K blocks, a four-word block size, and a 32-bit” 114. 575 Before the first line of the Answer section, Insert “Since there are 16(-24) bytes per block, a 3-bit address yields 32 –4=28 bits to be used for index and tag.” 115. 575 In the 3rd line of the Answer section, Change “(32-12)*4K=80 Kbits” to “(2812)*4K=64 Kbits” 116. 575 In the 7th-8th lines of the Answer section, Change “(32-11)*2*2K=84 Kbits” to “(28-11)*2*2K=68 Kbits” 117. 575 118. 575 In the 9th line of the Answer section, Change “(32-10)*4*1K=88” to “(2810)*4*1K=72” In the 12th line of the Answer section, Replace “32 bits, leading to a total of 32*4K*1=128K tag bits.” with “28 bits, leading to a total of 28*4K*1=112K tag bits.” 119. 587 In the 1st line of #1 of the Elaboration section, Change “bounds” to “limit” 120. 591 Figure 7.24, Move the arrow going from the virtual page number to the TLB from row 4 to row 5 121. 593 Figure 7.25, In the 4th line of the figure caption text, Change “theT” to “the” 122. 627 In the first column, 11th line, of the Key Terms section, Change “exception or directmapped cache” to “direct-mapped cache” and Insert a separate entry for “exception” 123. 646 Lines 20-21, Replace “sectors, and the sector is the smallest unit that can be read or written. In 1997, sectors are” with “sectors. Originally, the sector was the smallest unit that can be read or written. With the introduction of Logical Block Access (LBA) disk drives became addressed by blocks, and a block became the minimum accessible unit.” In 1997, blocks are” 124. 646 Lines 25-26, Replace “Traditionally, all tracks have the same number of sectors and hence the same number of bits.” with “Originally, all tracks had the same number of sectors and hence the same number of bits, but with the introduction of Zone Bit Recording (ZBR) in the early 1990’s, disk drives changed to a varying number of sectors (and hence bits) per track, instead keeping the spacing between bits constant. ZBR increases the number of bits on the outer tracks and thus increases the drive capacity.” 125. 648 Line 4, Delete “, typically a sector” 126. 653 After the last line of the Hardware Software Interface section, Insert “The IP header specifies that the length of the IP data (from 1 to 65536 bytes). Since the TCP header uses 20 bytes of the IP data, the maximum size of the TCP data packet is 65536 – 20 = 65516 bytes.” 127. 666 Line 2, Change “4” to “16” 128. 673 Figure 8.15, In the 10th row, Change “25 meters” to “2.5 meters” 129. 688 Line 9, Change “220” to “230” 130. 692 Line 14, After last sentence of paragraph, Insert “Ironically, RAID controllers turned out to be quite expensive, so that the original meaning of the RAID acronym seemed inappropriate. The Acronym was recast as “Redundant Arrays of Intelligent Disks” emphasizing the intelligent control offered by the RAID controller in comparison to the low-level simple controller used on small drives. Over time, I/O system architects understood that the advantages of RAID organizations came from the ability to deploy many heads and the redundancy of multiple drives, rather than the simple use of cheap drives, and the emphasis focused on intelligent rather than inexpensive arrays.” 131. 693 Figure 8.17, In the 2nd-3rd lines of the figure caption text, Delete “The EXB-120 costs about as much as two to four workstations.” 132. 714 Figure 9.1, 5th row, Change “2-32” to 2-36” 133. 716 In the 1st line of the math of the Answer section at the bottom of the page, Replace “Execution time before improvement =” to “Execution time after improvement =” 134. 717 In the 1st line of the math, Replace “Execution time before improvement” to “Execution time after improvement” 135. 729 In the 8th line of code near the bottom of the page, Change (Pn < (limit/2-1)) to (Pn < (limit/2)). 136. 735 Figure 9.12, In the 5th row, Change “Tandem NonSrop” to “Tandem NonStop” 137. 737 Line 29, Change “(P* P-1)/2” to “P ∗ (P –1)/2” 138. 750 Figure 9.19, 1st row, 5th column, Change “5” to “13” 139. 750 Figure 9.19, 1st row, 7th column, Change “0.125” to “1” 140. A-6 Figure A.3, In the 19th line of code, Change 1048 812 to 1048812 141. A-7 Figure A.4, In the 25th line of code, Change j 142. A-21 In the 5th line of the Hardware Software Interface section, Change “10008000hex” to “10010020hex” 143. A-21 In the 1st and 2nd lines of code in the Hardware Software Interface section, Replace lui $s0, 0x1000 # 0x1000 means 1000 base 16 or 4096 base 10 lw $v0, 0x8000($s0) # 0x10000000 + 0x8000 = 0x10008000 with lui $s0, 0x1001 # 0x1001 means 1001 base 16 lw $v0, 0x0020($s0) # 0x10010000 + 0x0020 = 0x10010020 144. A-27 In the 7th, 15th, & 25th lines of code, Change addu to addiu 145. A-28 In the 15th line of code, Change addu to addiu 146. A-28 In the 16th line of code, Change j 147. A-29 Figure A.12, Move “Old $a0” to first position in frame four times, so “Old $ra” and “Old $fp” are second and third in the frame, respectively 148. A-30 In the 27the line of code, Change addu to addiu 149. A-31 In the 1st,5th,14th, & 24th lines of code, Change addu to addiu 150. A-31 In the 25th line of code, Change j 151. A-32 In the 13th line of code, Change addu to addiu to jr to jr to jr (4 times) 152. A-32 In the 14th line of code, Change j 153. A-54 Figure A.19, column 4, Change “rte” to “rfe” 154. A-54 Figure A.19, column 6, At position 4 Insert “sllv” 155. A-60 In the 3rd-4th lines of code (Set less than Immediate and Set less than unsigned immediate), Change all rd to rt (4 times) 156. A-60 In the 1st line of text, Change rd to 157. A-71 In both the first and second tables, in the 5th cell, Change “fd” to “Ø” 158. A-71 In both the third and fourth tables, in the 7th cell, Change “2” to “Øxe” 159. A-74 In the 1st line of text, Change dest to fdest 160. B-19 Figure B.8, In the 2nd line of the figure caption text, Change “32-bit” to “32 1-bit” 161. B-21 Figure B.11, In the 2nd line of the figure caption text, Change “undermined” to “undetermined” 162. B-27 Figure B.20, In rectangle on left, Change “n-to-1” to “n-to-2n” 163. B-35 In the ninth line, Change “lower” to “higher” 164. B-36 Line 11, Change “next” to “current” 165. C-14 Figure C.9, In the 4th line of the figure caption text, Delete “both” 166. C-14 Figure C.9, In the 4th line of the figure caption text, Change “(j), and (l)).” to “(i), and (k)).” 167. C-19 Line 32, Change “460” to “510” 168. C-22 Figure C.15, Delete the line and label for Bwrite 169. C-22 Figure C.15, Increase point size of the “AddrCtl” arrowed line to match size of “PCSource” line 170. C-29 Figure C.21, 3rd column, 13th row, Insert comma after “0”, Add third line “IRWrite” in this cell 171. C-29 Figure C.21, 3rd column, 16th row, Insert comma after “00” 172. C-30 Line 19, Change “14-9” to “13-6” to jr rt