注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡硬件、外部設備與維護CPU設計實戰(zhàn)

CPU設計實戰(zhàn)

CPU設計實戰(zhàn)

定 價:¥99.00

作 者: 汪文祥,邢金璋 著
出版社: 機械工業(yè)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787111674139 出版時間: 2021-04-01 包裝: 平裝
開本: 16開 頁數(shù): 376 字數(shù):  

內(nèi)容簡介

  本書面向初學者,以實戰(zhàn)的方式帶領(lǐng)讀者了解CPU設計的流程,并從零開始逐步開發(fā)出自己的CPU。本書將計算機組成與體系結(jié)構(gòu)的理論知識和工業(yè)實踐充分結(jié)合,使讀者在實際的CPU設計與開發(fā)過程中更加深入地理解計算機系統(tǒng)的工作原理,掌握CPU設計理念、方法和技術(shù)。 本書共分為三個部分,第一部分介紹CPU的研發(fā)過程以及FPGA、數(shù)字邏輯電路等相關(guān)知識;第二部分先介紹簡單流水線CPU設計,在此基礎上添加指令、例外、中斷、總線、高速緩存等功能,完成一個具有基本功能的CPU;第三部分介紹如何增加各種高級功能,最終形成一個具有豐富功能的CPU。 本書深入淺出、層次清晰,并融入了典型的CPU開發(fā)相關(guān)的技術(shù)問題,既可以作為高等院校計算機及相關(guān)專業(yè)本科生和研究生的CPU開發(fā)類課程的教材,也可以作為從事CPU相關(guān)研發(fā)工作的專業(yè)人員的參考書。

作者簡介

  汪文祥 工學博士,龍芯中科技術(shù)股份有限公司首席工程師,中國科學院大學崗位教授。主要研究方向為處理器體系結(jié)構(gòu)設計、處理器驗證及計算機系統(tǒng)性能分析優(yōu)化等,參與了多項國家“核高基”、863 和 973 項目,在國內(nèi)外各種期刊會議發(fā)表文章十余篇,申請專利數(shù)十項,授權(quán)專利十余項。2012年起任龍芯中科芯片研發(fā)部IP組組長,負責龍芯系列CPU IP核的開發(fā)研制及維護,參與制訂龍芯指令系統(tǒng)架構(gòu)規(guī)范。邢金璋 碩士畢業(yè)于中國科學院計算技術(shù)研究所,2015年加入龍芯中科技術(shù)股份有限公司,從事處理器核結(jié)構(gòu)設計工作,是龍芯小、中系列處理器核演進版本的主要結(jié)構(gòu)設計者之一。近年來,積極參與“龍芯杯”全國大學生計算機系統(tǒng)能力培養(yǎng)大賽的技術(shù)支持、培訓等工作。

圖書目錄

目  錄
叢書序言

前言
第1章CPU芯片研發(fā)過程概述 1
1.1處理器和處理器核 1
1.2芯片產(chǎn)品的研制過程 2
1.3芯片設計的工作階段 3
第2章硬件實驗平臺及FPGA設計流程 5
2.1硬件實驗平臺 5
2.1.1龍芯CPU設計與體系結(jié)構(gòu)教學實驗系統(tǒng) 5
2.1.2龍芯計算機系統(tǒng)能力培養(yǎng)遠程實驗平臺 7
2.2FPGA的設計流程 8
2.2.1FPGA的一般設計流程 9
2.2.2基于Vivado的FPGA設計流程 10
2.2.3Vivado使用小貼士 33
2.3任務與實踐 35
第3章數(shù)字邏輯電路設計基礎 36
3.1數(shù)字邏輯電路設計與Verilog代碼開發(fā) 36
3.1.1面向硬件電路的設計思維方式 37
3.1.2行為描述的Verilog編程風格 38
3.1.3自頂向下的設計劃分過程 38
3.1.4常用數(shù)字邏輯電路的Verilog描述 39
3.2數(shù)字邏輯電路功能仿真的常見錯誤及其調(diào)試方法 55
3.2.1功能仿真波形分析 56
3.2.2波形異常類錯誤的調(diào)試 60
3.3進一步使用Vivado 66
3.3.1定制同步RAM IP核 66
3.3.2定制異步RAM IP核 68
3.3.3查看時序結(jié)果和資源利用率 69
3.4任務與實踐 69
3.4.1實踐任務一:寄存器堆仿真 70
3.4.2實踐任務二:同步RAM和異步RAM仿真、綜合與實現(xiàn) 71
3.4.3實踐任務三:數(shù)字邏輯電路的設計與調(diào)試 72
第4章簡單流水線CPU設計 74
4.1設計一個簡單的單周期CPU 75
4.1.1設計單周期CPU的總體思路 75
4.1.2單周期CPU的數(shù)據(jù)通路設計 76
4.1.3單周期CPU的控制信號生成 88
4.1.4復位的處理 91
4.2不考慮相關(guān)沖突的流水線CPU設計 92
4.2.1添加流水級間緩存 92
4.2.2同步RAM的引入 93
4.2.3調(diào)整更新PC的數(shù)據(jù)通路 96
4.2.4不考慮相關(guān)沖突情況下流水線控制信號的設計 96
4.3CPU設計開發(fā)環(huán)境(CPU_CDE) 97
4.3.1快速上手CPU設計的開發(fā)環(huán)境 97
4.3.2CPU設計開發(fā)環(huán)境的組織與結(jié)構(gòu) 99
4.3.3CPU設計開發(fā)環(huán)境使用進階 113
4.4CPU設計的功能仿真調(diào)試技術(shù) 117
4.4.1為什么要用基于Trace比對的調(diào)試輔助手段 117
4.4.2基于Trace比對調(diào)試手段的盲區(qū)及其對策 119
4.4.3學會閱讀匯編程序和反匯編代碼 119
4.4.4CPU調(diào)試中要抓取的信號以及如何看這些信號 124
4.5指令相關(guān)與流水線沖突 125
4.5.1處理寄存器寫后讀數(shù)據(jù)相關(guān)引發(fā)的流水線沖突 126
4.5.2轉(zhuǎn)移計算未完成 127
4.6流水線數(shù)據(jù)的前遞設計 127
4.6.1前遞的數(shù)據(jù)通路設計 128
4.6.2前遞的流水線控制信號調(diào)整 130
4.6.3前遞引發(fā)的主頻下降 131
4.7任務與實踐 131
4.7.1實踐任務一:簡單CPU參考設計調(diào)試 132
4.7.2實踐任務二:用阻塞技術(shù)解決相關(guān)引發(fā)的沖突 132
4.7.3實踐任務三:用前遞技術(shù)解決相關(guān)引發(fā)的沖突 133
第5章在流水線中添加運算類指令 134
5.1算術(shù)邏輯運算類指令的添加 134
5.1.1ADD、ADDI和SUB指令的添加 134
5.1.2SLTI和SLTIU指令的添加 135
5.1.3ANDI、ORI和XORI指令的添加 135
5.1.4SLLV、SRLV和SRAV指令的添加 135
5.2乘除法運算類指令的添加 136
5.2.1調(diào)用Xilinx IP實現(xiàn)乘除法運算部件 136
5.2.2電路級實現(xiàn)乘法器 140
5.2.3電路級實現(xiàn)除法器 147
5.3乘除法配套數(shù)據(jù)搬運指令的添加 154
5.3.1乘法運算實現(xiàn)為單周期的情況 155
5.3.2乘法運算實現(xiàn)為多周期流水的情況 155
5.4任務與實踐 156
第6章在流水線中添加轉(zhuǎn)移指令和訪存指令 157
6.1轉(zhuǎn)移指令的添加 157
6.1.1BGEZ、BGTZ、BLEZ和BLTZ指令 158
6.1.2J指令 158
6.1.3BLTZAL和BGEZAL指令 158
6.1.4JALR指令 158
6.2訪存指令的添加 158
6.2.1LB、LBU、LH和LHU指令的添加 158
6.2.2SB和SH指令的添加 159
6.2.3非對齊訪存指令的說明 160
6.2.4LWL和LWR指令的添加 162
6.2.5SWL和SWR指令的添加 164
6.3任務與實踐 164
第7章例外和中斷的支持 166
7.1例外和中斷的基本概念 166
7.1.1例外是一套軟硬件協(xié)同處理的機制 166
7.1.2精確例外 167
7.2MIPS指令系統(tǒng)中與例外相關(guān)的功能定義 168
7.2.1CP0寄存器 168
7.2.2例外產(chǎn)生條件的判定 168
7.2.3例外入口 170
7.2.4MFC0和MTC0指令 170
7.2.5ERET指令 170
7.3流水線CPU實現(xiàn)例外和中斷的設計要點 170
7.3.1例外檢測邏輯 170
7.3.2精確例外的實現(xiàn) 172
7.3.3CP0寄存器 173
7.3.4CP0沖突 179
7.4任務與實踐 180
7.4.1實踐任務一:添加syscall例外支持 181
7.4.2實踐任務二:添加其他例外支持 181
第8章AXI總線接口設計 184
8.1類SRAM總線 184
8.1.1主方和從方 185
8.1.2類SRAM總線接口信號的定義 185
8.1.3類SRAM總線的讀寫時序 186
8.1.4類SRAM總線的約束 189
8.2類SRAM總線的設計 189
8.2.1取指設計的考慮 190
8.2.2訪存設計的考慮 195
8.3AXI總線協(xié)議 195
8.3.1AXI總線信號一覽 195
8.3.2理解AXI總線協(xié)議 197
8.3.3類SRAM總線接口信號與AXI總線接口信號的關(guān)系 202
8.4類SRAM-AXI的轉(zhuǎn)接橋設計 203
8.4.1轉(zhuǎn)接橋的頂層接口 203
8.4.2轉(zhuǎn)接橋的設計要求 204
8.4.3轉(zhuǎn)接橋的設計建議 204
8.5任務與實踐 205
8.5.1實踐任務一:添加類SRAM總線支持 205
8.5.2實踐任務二:添加AXI總線支持 208
8.5.3實踐任務三:完成AXI隨機延遲驗證 210
第9章TLB MMU設計 211
9.1TLB模塊的基礎知識 212
9.1.1TLB的虛實地址轉(zhuǎn)換 212
9.1.2TLB的軟件訪問 214
9.1.3TLB的軟硬件交互機制 215
9.2TLB模塊設計的分析 217
9.3TLB相關(guān)的CP0寄存器與指令的實現(xiàn) 219
9.4利用TLB進行虛實地址轉(zhuǎn)換及TLB例外 221
9.5任務與實踐 222
9.5.1實踐任務一:TLB模塊設計 222
9.5.2實踐任務二:添加TLB相關(guān)指令和CP0寄存器 224
9.5.3實踐任務三:添加TLB相關(guān)例外支持 225
第10章高速緩存設計 226
10.1Cache模塊的設計 227
10.1.1Cache的設計規(guī)格 227
10.1.2Cache模塊的數(shù)據(jù)通路設計 228
10.1.3Cache模塊內(nèi)部的控制邏輯設計 237
10.1.4Cache的硬件初始化問題 241
10.2將Cache模塊集成至CPU中 242
10.2.1Cache命中情況下的CPU流水線適配 242
10.2.2Cache缺失情況下的CPU流水線適配 243
10.2.3Uncache訪問的處理 243
10.3CACHE指令 245
10.3.1CACHE指令的定義 245
10.3.2CACHE指令的實現(xiàn) 247
10.4性能測試程序 247
10.4.1Dhrystone 247
10.4.2Coremark 250
10.5Cache的性能 251
10.6任務與實踐 252
10.6.1實踐任務一:Cache模塊設計 252
10.6.2實踐任務二:在CPU中集成ICache 254
10.6.3實踐任務三:在CPU中集成DCache 255
10.6.4實踐任務四:在CPU中添加CACHE指令 256
第11章進階設計 258
11.1運行Linux內(nèi)核 258
11.1.1復雜SoC搭建 259
11.1.2CPU的進一步完善 259
11.1.3調(diào)試建議 260
11.2提升主頻的常用方法 261
11.2.1平衡各級流水線的延遲 261
11.2.2優(yōu)化大概率事件的處理邏輯 261
11.2.3用面積和功耗換時序 262
11.2.4進一步切分流水線 262
11.3靜態(tài)雙發(fā)射流水線的實現(xiàn) 262
11.4動態(tài)調(diào)度機制的實現(xiàn) 263
11.4.1一個雙發(fā)射動態(tài)調(diào)度流水線的設計實例 263
11.4.2動態(tài)調(diào)度中常見電路結(jié)構(gòu)的RTL實現(xiàn) 266
11.5硬件轉(zhuǎn)移預測技術(shù) 266
11.5.1硬件轉(zhuǎn)移預測的流水線設計框架 267
11.5.2一個輕量級轉(zhuǎn)移預測器的設計規(guī)格 268
11.6訪存優(yōu)化技術(shù) 269
11.6.1store buffer 269
11.6.2Non-blocking Cache 270
11.6.3訪存亂序執(zhí)行 271
11.6.4多級Cache 271
11.6.5Cache預取 272
11.7多核處理器的實現(xiàn) 272
11.7.1多核互聯(lián)結(jié)構(gòu) 273
11.7.2多核編號 273
11.7.3核間中斷 273
11.7.4多核情況下的存儲一致性 274
11.7.5LL-SC指令對的訪存原子性 282
附錄A龍芯CPU設計與體系結(jié)構(gòu)教學實驗系統(tǒng) 285
附錄BVivado的安裝 288
附錄C簡單MIPS指令系統(tǒng)規(guī)范 301
附錄DVivado使用進階 345

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號