齣版者的話
前言
緻謝
第1章 引言1
1.1 本書組織結構1
1.2 進化過程1
1.3 計算機發展階段劃分4
1.3.1 第一代計算機4
1.3.2 第二代計算機4
1.3.3 第三代計算機5
1.3.4 第四代計算機6
1.3.5 第五代計算機7
1.4 雲、普適、網格和超並行計算機7
1.5 未來8
1.6 小結9
第2章 基礎知識10
2.1 計算機組成10
2.1.1 Flynn分類法10
2.1.2 連接方式11
2.1.3 計算機結構層次視圖11
2.2 計算機基本原理12
2.3 數字格式15
2.3.1 無符號二進製15
2.3.2 原碼15
2.3.3 反碼15
2.3.4 補碼15
2.3.5 移碼(excess-n)16
2.3.6 BCD碼16
2.3.7 定點數錶示法17
2.3.8 符號擴展17
2.4 算術運算18
2.4.1 加法18
2.4.2 並行進位傳遞加法器18
2.4.3 超前進位20
2.4.4 減法20
2.5 乘法21
2.5.1 加法迭代法22
2.5.2 部分積方法22
2.5.3 移位加方法24
2.5.4 Booth和Robertson方法25
2.6 除法26
2.7 定點數格式的運算28
2.7.1 定點數的運算28
2.7.2 定點數的乘除29
2.8 浮點數30
2.8.1 廣義浮點數30
2.8.2 IEEE754浮點標準30
2.8.3 IEEE754標準模式31
2.8.3.1 規格化模式31
2.8.3.2 非規格化模式32
2.8.3.3 其他模式數33
2.8.4 IEEE754數的範圍33
2.9 浮點數處理35
2.9.1 IEEE754數的加減運算36
2.9.2 IEEE754數的乘除法38
2.9.3 IEEE754中間格式38
2.9.4 捨入39
2.10 小結39
思考題40
第3章 CPU基礎42
3.1 什麼是計算機42
3.2 讓計算機為你服務42
3.2.1 程序存儲42
3.2.2 存儲架構43
3.2.3 程序傳輸44
3.2.4 控製單元44
3.2.5 微指令48
3.2.6 RISC和CISC的對比49
3.2.7 處理器實例51
3.3 指令處理51
3.3.1 指令集52
3.3.2 取指和譯碼54
3.3.2.1 指令譯碼55
3.3.2.2 取操作數55
3.3.2.3 分支56
3.3.2.4 立即數57
3.3.3 壓縮指令集57
3.3.4 尋址模式59
3.3.5 堆棧機和逆波蘭錶示法61
3.4 數據處理62
3.4.1 數據的格式和錶達63
3.4.2 數據流65
3.4.3 數據存儲66
3.4.4 內部數據66
3.4.5 數據處理67
3.4.5.1 在小位寬CPU上處理大位寬數字67
3.4.5.2 定點CPU上的浮點數68
3.4.5.3 復數69
3.5 自頂嚮下方法69
3.5.1 計算機的能力69
3.5.1.1 功能70
3.5.1.2 時鍾頻率70
3.5.1.3 位寬70
3.5.1.4 內存70
3.5.2 性能衡量和統計70
3.5.3 性能評估72
3.6 小結73
思考題74
第4章 處理器內部組成76
4.1 內部總綫結構76
4.1.1 程序員的角度76
4.1.2 分解互聯排列77
4.1.3 ADSP21xx總綫排列78
4.1.4 數據與程序同時訪存78
4.1.5 雙總綫體係結構80
4.1.6 單總綫體係結構81
4.2 算術邏輯單元82
4.2.1 ALU功能82
4.2.2 ALU設計83
4.3 內存管理單元85
4.3.1 對虛擬存儲的需求85
4.3.2 MMU操作85
4.3.3 退迴算法87
4.3.4 內部存儲碎片和片段87
4.3.5 外部碎片88
4.3.6 改進的MMU89
4.3.7 內存保護89
4.4 cache90
4.4.1 直接相聯cache92
4.4.2 組相聯cache93
4.4.3 全相聯cache94
4.4.4 局部性原則94
4.4.5 cache替換算法95
4.4.6 cache性能98
4.4.7 cache一緻性99
4.5 協處理器100
4.6 浮點運算單元101
4.6.1 浮點仿真102
4.7 SIMD流指令擴展(SSE)和多媒體擴展103
4.7.1 多媒體擴展(MMX)103
4.7.2 MMX實現103
4.7.3 MMX的使用104
4.7.4 SIMD流指令擴展(SSE)105
4.7.5 使用SSE和MMX105
4.8 嵌入式係統中的協處理105
4.9 小結106
思考題107
第5章 提高CPU性能110
5.1 CPU加速技術簡介110
5.2 流水綫111
5.2.1 多功能流水綫112
5.2.2 動態流水綫113
5.2.3 改變流水綫模式113
5.2.4 數據相關冒險114
5.2.5 條件冒險116
5.2.6 條件分支117
5.2.7 編譯時流水綫補償118
5.2.8 相對地址分支119
5.2.9 流水綫的指令集補償120
5.2.10 運行時流水綫補償122
5.3 復雜指令集(CISC)和精簡指令集(RISC)123
5.4 超標量體係結構124
5.4.1 簡單超標量124
5.4.2 多發送超標量125
5.4.3 超標量的性能126
5.5 每周期的指令數127
5.5.1 不同體係結構的IPC127
5.5.2 IPC度量128
5.6 硬件加速器129
5.6.1 零開銷循環129
5.6.2 地址處理硬件131
5.6.3 影子寄存器134
5.7 分支預測134
5.7.1 分支預測的必要性134
5.7.2 單T位預測器136
5.7.3 雙位預測器137
5.7.4 計數器和移位器預測器138
5.7.5 局部分支預測器139
5.7.6 全局分支預測器141
5.7.7 G選擇預測器142
5.7.8 G共享預測器143
5.7.9 混閤預測器144
5.7.10 分支目標緩衝145
5.7.11 基本代碼段147
5.7.12 分支預測總結148
5.8 並行機器148
5.8.1 SISD嚮MIMD的演變150
5.8.2 為提高性能而采用並行152
5.8.3 其他並行處理153
5.9 Tomasulo算法155
5.9.1 Tomasulo算法的原理155
5.9.2 Tomasulo係統的例子155
5.9.3 嵌入式係統中的Tomasulo算法159
5.10 小結160
思考題160
第6章 外部總綫163
6.1 總綫接口163
6.1.1 總綫控製信號164
6.1.2 直接存儲器存取(DMA)164
6.2 並行總綫規範165
6.3 標準接口166
6.3.1 係統控製接口166
6.3.2 係統數據總綫167
6.3.2.1 ISA總綫及其衍生總綫167
6.3.2.2 PC/104168
6.3.2.3 PCI170
6.3.2.4 LVDS170
6.3.3 輸入/輸齣總綫171
6.3.4 外設器件總綫172
6.3.5 與網絡設備的接口172
6.4 實時性問題172
6.4.1 外部激勵173
6.4.2 中斷173
6.4.3 實時性定義173
6.4.4 時間範圍參數174
6.4.5 硬件體係結構對實時操作係統的支持175
6.5 中斷和中斷處理176
6.5.1 中斷的重要性176
6.5.2 中斷過程176
6.5.2.1 中斷事件通知處理器176
6.5.2.2 CPU完成正在進行的工作177
6.5.2.3 轉入中斷服務例程177
6.5.2.4 中斷重定嚮179
6.5.3 高級中斷處理180
6.5.4 共享中斷180
6.5.5 可重入代碼181
6.5.6 軟件中斷181
6.6 無綫181
6.6.1 無綫技術181
6.6.2 無綫接口183
6.6.3 無綫相關問題183
6.7 小結183
思考題184
第7章 實用嵌入式CPU187
7.1 概述187
7.2 微處理器不隻是核187
7.3 功能需求189
7.4 時鍾192
7.5 時鍾與功耗194
7.5.1 傳輸延遲195
7.5.2 電流相關問題195
7.5.3 時鍾問題解決方法196
7.5.4 低電壓設計196
7.6 存儲197
7.6.1 早期的計算機存儲198
7.6.2 隻讀存儲器198
7.6.3 隨機存取存儲器203
7.6.3.1 靜態RAM204
7.6.3.2 動態RAM205
7.6.3.3 DRAM的尋址機製206
7.7 分頁與重疊209
7.8 嵌入式係統中的存儲210
7.8.1 非易失存儲器211
7.8.2 易失存儲器212
7.8.3 其他存儲器213
7.9 測試和驗證214
7.9.1 集成電路設計和製造問題215
7.9.2 內置自測(BIST)216
7.9.3 聯閤測試行動小組(JTAG)218
7.10 錯誤檢測和糾正220
7.11 看門狗定時器和復位監測223
7.12 逆嚮工程225
7.12.1 逆嚮工程過程226
7.12.1.1 功能分析228
7.12.1.2 物理結構分析228
7.12.1.3 材料清單228
7.12.1.4 係統架構229
7.12.2 詳細的物理布局229
7.12.2.1 電氣連接原理圖230
7.12.2.2 存儲程序230
7.12.2.3 軟件230
7.13 防止逆嚮工程232
7.13.1 存儲程序的被動模糊233
7.13.2 可編程邏輯傢族234
7.13.3 主動RE防範234
7.13.4 主動RE防範分類235
7.14 小結236
思考題236
第8章 CPU設計238
8.1 軟核處理器238
8.1.1 微處理器不僅僅有處理器核238
8.1.2 軟核處理器的優點239
8.1.2.1 性能239
8.1.2.2 可用性239
8.1.2.3 效率240
8.1.2.4 人為因素240
8.2 軟硬件協同設計241
8.3 現成的軟核243
8.4 製作自己的軟核245
8.5 CPU設計規格說明245
8.5.1 CPU體係結構246
8.5.2 總綫246
8.5.3 程序及數據存儲247
8.5.4 邏輯運算248
8.5.5 指令處理248
8.5.6 係統控製249
8.6 指令集249
8.6.1 CPU控製251
8.6.1.1 閑置狀態252
8.6.1.2 取指狀態252
8.6.1.3 執行狀態252
8.7 CPU實現253
8.7.1 測試的重要性253
8.7.2 定義操作和狀態:defs.v253
8.7.3 第一個小模塊:counter.v254
8.7.4 CPU控製:state.v256
8.7.5 程序和變量存儲:ram.v257
8.7.6 堆棧:stack.v259
8.7.7 算術、邏輯和乘法單元:alu.v261
8.7.8 綜閤測試:tinycpu.v263
8.8 CPU測試及運行267
8.9 編程並使用CPU267
8.9.1 編寫TinyCPU程序268
8.9.2 TinyCPU編程工具271
8.10 小結271
思考題272
第9章 未來274
9.1 單比特體係結構274
9.1.1 位串行加法274
9.1.2 位串行減法275
9.1.3 位串行邏輯電路和處理275
9.2 超長指令字體係結構276
9.2.1 VLIW的基本原理276
9.2.2 VLIW的難題277
9.3 並行與大規模並行計算機278
9.3.1 大型計算機集群278
9.3.2 小型計算機集群279
9.3.2.1 從嵌入式係統中解放計算資源279
9.3.2.2 並行處理單元279
9.3.3 並行和集群處理注意事項283
9.3.4 互連策略283
9.4 異步處理器285
9.4.1 數據流控製286
9.4.2 避免流水綫冒險286
9.5 替代數字格式係統287
9.5.1 多值邏輯287
9.5.2 帶符號數字的錶示288
9.6 光計算289
9.6.1 光電全加器289
9.6.2 光電底闆290
9.7 科幻小說還是未來的現實291
9.7.1 分布式計算291
9.7.2 濕件(大腦)291
9.8 小結292
附錄A 內存大小的標準錶示方法293
附錄B 開放係統互連模型295
B.1 引言295
B.2 OSI層次295
B.3 小結296
附錄C 探索cache大小和結構安排的權衡設計方法297
C.1 引言297
C.2 準備工作297
C.3 安裝Cacti和Dinero297
C.4 工具的使用298
C.5 不同cache設計方案的實驗299
C.6 cache設計中的進一步信息299
思考題300
附錄D 嵌入式計算機上的無綫技術301
D.1 引言301
D.2 802.11a,b和g301
D.3 802.11n302
D.4 802.20302
D.5 802.16302
D.6 藍牙303
D.7 GSM303
D.8 GPRS304
D.9 ZigBee305
D.10 無綫USB305
D.11 近距離通信306
D.12 WiBro307
D.13 無綫設備總結307
D.14 應用舉例308
D.15 小結308
附錄E 編譯和仿真TinyCPU的工具309
E.1 準備和軟件獲取309
E.2 如何編譯和仿真Verilog309
E.3 如何查看仿真輸齣313
E.4 高級測試平颱318
E.5 小結318
附錄F TinyCPU編譯和匯編代碼的工具319
F.1 引言319
F.2 匯編過程319
F.3 匯編器320
F.4 匯編程序實例322
F.5 編譯器323
F.6 小結323
索引325
· · · · · · (
收起)