预购商品
书目分类
特别推荐
譯者序 前言 作者簡介 第1章電腦抽象及相關技術1 1.1引言1 1.1.1計算應用的分類及其特性2 1.1.2歡迎來到後PC時代3 1.1.3你能從本書學到什麼4 1.2電腦體系結構的7個偉大思想6 1.2.1使用抽象簡化設計6 1.2.2加速大概率事件6 1.2.3通過並行提高性能6 1.2.4通過流水線提高性能6 1.2.5通過預測提高性能7 1.2.6存儲層次7 1.2.7通過冗餘提高可靠性7 1.3程式表像之下8 1.4主機殼之內的硬體10 1.4.1顯示器11 1.4.2觸控式螢幕12 1.4.3打開主機殼13 1.4.4資料安全15 1.4.5與其他電腦通信16 1.5處理器和記憶體製造技術17 1.6性能20 1.6.1性能的定義21 1.6.2性能的度量23 1.6.3CPU性能及其因素24 1.6.4指令的性能25 1.6.5經典的CPU性能公式26 1.7功耗牆28 1.8滄海巨變:從單一處理器向多處理器轉變30 1.9實例:IntelCorei7基準32 1.9.1SPECCPU基準測試程式32 1.9.2SPEC功耗基準測試程式34 1.10加速:使用Python語言編寫矩陣乘法程式35 1.11謬誤與陷阱36 1.12本章小結38 1.13歷史觀點和拓展閱讀39 1.14自學39 1.15練習題42 第2章指令:電腦的語言46 2.1引言46 2.2電腦硬體的操作48 2.3電腦硬體的運算元50 2.3.1記憶體運算元51 2.3.2常數或立即數運算元53 2.4有符號數和無符號數54 2.5電腦中指令的表示59 2.6邏輯操作65 2.7決策指令67 2.7.1迴圈68 2.7.2case/switch語句70 2.8電腦硬體對過程的支援71 2.8.1使用多寄存器72 2.8.2嵌套過程74 2.8.3在棧中為新資料分配空間76 2.8.4在堆中為新資料分配空間76 2.9人機交互78 2.10MIPS中32位立即數和地址的定址82 2.10.132位立即數83 2.10.2分支和跳轉中的定址83 2.10.3MIPS定址模式總結85 2.10.4機器語言解碼87 2.11並行與指令:同步89 2.12翻譯並執行程式91 2.12.1編譯器91 2.12.2彙編器91 2.12.3連結器93 2.12.4載入器95 2.12.5動態連結程式庫95 2.12.6啟動一個Java程式97 2.13綜合實例:C排序程式98 2.13.1swap過程98 2.13.2sort過程100 2.14陣列與指標104 2.14.1用陣列實現clear104 2.14.2用指針實現clear106 2.14.3比較兩個版本的clear106 2.15內容:編譯C語言和解釋Java語言107 2.16實例:ARMv7(32位元)指令集107 2.16.1定址模式108 2.16.2比較和條件分支108 2.16.3ARM的特色109 2.17實例:ARMv8(64位元)指令集111 2.18實例:RISC-V指令集112 2.19實例:x86指令集112 2.19.1Intelx86的演進112 2.19.2x86寄存器和資料定址模式114 2.19.3x86整數操作115 2.19.4x86指令編碼117 2.19.5x86總結119 2.20加速:使用C語言編寫矩陣乘法程式119 2.21謬誤與陷阱120 2.22本章小結122 2.23歷史觀點和拓展閱讀124 2.24自學124 2.25練習題126 第3章電腦的算數運算132 3.1引言132 3.2加法和減法132 3.3乘法136 3.3.1順序的乘法演算法和硬體137 3.3.2有符號乘法139 3.3.3快速的乘法139 3.3.4MIPS中的乘法140 3.3.5小結140 3.4除法140 3.4.1除法演算法和硬體141 3.4.2有符號除法143 3.4.3快速的除法144 3.4.4MIPS中的除法144 3.4.5小結145 3.5浮點運算146 3.5.1浮點表示147 3.5.2浮點加法151 3.5.3浮點乘法154 3.5.4MIPS中的浮點指令156 3.5.5算術性161 3.5.6小結163 3.6並行性和電腦算術:子字並行164 3.7實例:x86中的流處理SIMD擴展和向量擴展166 3.8加速:子字並行和矩陣乘法167 3.9謬誤與陷阱168 3.10本章小結171 3.11歷史觀點和拓展閱讀174 3.12自學174 3.13練習題176 第4章處理器181 4.1引言181 4.1.1一個基本的MIPS實現182 4.1.2實現方式概述182 4.2邏輯設計的一般方法184 4.3建立資料通路187 4.4一個簡單的實現機制193 4.4.1ALU控制193 4.4.2主控制單元的設計195 4.4.3為什麼不使用單週期實現方式201 4.5多週期實現202 4.6流水線概述203 4.6.1面向流水線的指令集設計206 4.6.2流水線冒險207 4.6.3小結212 4.7流水線資料通路與控制213 4.7.1圖形化表示的流水線221 4.7.2流水線控制224 4.8數據冒險:旁路與阻塞227 4.9控制冒險237 4.9.1假定分支不發生238 4.9.2縮短分支的延遲238 4.9.3動態分支預測241 4.9.4小結244 4.10異常245 4.10.1MIPS體系結構中的異常處理245 4.10.2流水線實現中的異常246 4.11指令級並行249 4.11.1推測的概念250 4.11.2靜態多發射處理器251 4.11.3動態多發射處理器255 4.11.4能耗效率與流水線258 4.12實例:IntelCorei76700和ARMCortex-A53259 4.12.1ARMCortex-A53259 4.12.2A53流水線的性能261 4.12.3IntelCorei76700263 4.12.4IntelCorei7的性能265 4.13加速:指令級並行和矩陣乘法266 4.14主題:數位設計概述—使用硬體設計語言進行流水線建模以及多流水線示例268 4.15謬誤與陷阱268 4.16本章小結269 4.17歷史觀點和拓展閱讀269 4.18自學269 4.19練習題270 第5章大容量和高速度:開發記憶體層次結構281 5.1引言281 5.2記憶體技術285 5.2.1SRAM技術285 5.2.2DRAM技術285 5.2.3快閃記憶體287 5.2.4磁碟記憶體287 5.3cache的基本原理289 5.3.1cache訪問291 5.3.2cache缺失處理295 5.3.3寫操作處理296 5.3.4cache實例:IntrinsityFastMATH處理器297 5.3.5小結299 5.4cache性能的評估和改進299 5.4.1通過靈活地放置塊來減少cache缺失302 5.4.2在cache中查找塊305 5.4.3替換塊的選擇306 5.4.4使用多級cache結構減少缺失代價307 5.4.5通過分塊進行軟體優化309 5.4.6小結312 5.5可信記憶體層次312 5.5.1失效的定義313 5.5.2糾正一位錯、檢測兩位元錯的漢明編碼(SEC/DED)314 5.6虛擬機器317 5.6.1虛擬機器監視器的條件318 5.6.2指令集體系結構(缺乏)對虛擬機器的支援319 5.6.3保護和指令集體系結構319 5.7虛擬記憶體320 5.7.1頁的存放和查找323 5.7.2缺頁故障324 5.7.3關於寫327 5.7.4加快位址轉換:TLB327 5.7.5集成虛擬記憶體、TLB和cache331 5.7.6虛擬記憶體中的保護332 5.7.7處理TLB缺失和缺頁333 5.7.8小結337 5.8記憶體層次結構的一般框架338 5.8.1問題1:塊放在何處339 5.8.2問題2:如何找到塊340 5.8.3問題3:cache缺失時替換哪一塊340 5.8.4問題4:寫操作如何處理341 5.8.53C:一種理解記憶體層次結構行為的直觀模型342 5.9使用有限狀態機來控制簡單的cache343 5.9.1一個簡單的cache343 5.9.2有限狀態機344 5.9.3一個簡單cache控制器的有限狀態機346 5.10並行與記憶體層次結構:cache一致性347 5.10.1實現一致性的基本方案348 5.10.2監聽協議348 5.11並行與記憶體層次結構:廉價冗餘磁碟陣列350 5.12內容:實現cache控制器350 5.13實例:ARMCortex-A53和IntelCorei7的記憶體層次結構350 5.14加速:cache分塊和矩陣乘法354 5.15謬誤與陷阱355 5.16本章小結359 5.17歷史觀點和拓展閱讀359 5.18自學359 5.19練習題362 第6章從用戶端到雲的並行處理器374 6.1引言374 6.2創建並行處理常式的難點376 6.3SISD、MIMD、SIMD、SPMD和向量機379 6.3.1x86中的SIMD:多媒體擴展380 6.3.2向量機380 6.3.3向量與標量382 6.3.4向量與多媒體擴展382 6.4硬體多執行緒385 6.5多核和其他共用記憶體多處理器387 6.6圖形處理單元390 6.6.1NVIDIAGPU體系結構簡介391 6.6.2NVIDIAGPU存儲結構393 6.6.3GPU展望394 6.7領域專用體系結構396 6.8集群、倉儲級電腦和其他消息傳遞多處理器398 6.9多處理器網路拓撲簡介402 6.10與外界通信:集群網路404 6.11多處理器基準測試程式和性能模型405 6.11.1性能模型407 6.11.2Roofline模型408 6.11.3兩代Opteron的比較409 6.12實例:GoogleTPUv3電腦和NVIDIAVoltaGPU的評測413 6.12.1DNN的訓練和推理413 6.12.2DSA電腦網路414 6.12.3DSA電腦節點414 6.12.4DSA算數運算416 6.12.5TPUv3與VoltaGPU的比較417 6.12.6性能418 6.13加速:多處理器和矩陣乘法419 6.14謬誤與陷阱421 6.15本章小結423 6.16歷史觀點和拓展閱讀425 6.17自學425 6.18練習題426 附錄A彙編器、連結器和SPIM模擬器435 附錄B邏輯設計基礎486 索引544 網路內容 附錄C圖形與計算GPU 附錄D將控制映射至硬體 附錄E指令集體系結構綜述
客服公告
热门活动
订阅电子报