手把手教你設計CPU——RISC-V處理器篇
內容簡介
本書是一本介紹通用CPU設計的入門書,以通俗的語言介紹瞭CPU和RISC-V架構,力求為讀者揭開CPU設計的神秘麵紗,打開計算機體係結構的大門。
本書共分為四部分。一部分是CPU與RISC-V的綜述,幫助初學者對CPU和RISC-V快速地建立起認識。二部分講解如何使用Verilog設計CPU,使讀者掌握處理器核的設計精髓。三部分主要介紹
蜂鳥E203配套的SoC和軟件平颱,使讀者實現蜂鳥E203 RISC-V處理器在FPGA原型平颱上的運行。四部分是附錄,介紹瞭RISC-V指令集架構,輔以作者加入的背景知識解讀和注解,以便於讀者理
解。
本書不僅適閤CPU或芯片設計相關從業者閱讀使用,也適閤作為大中專院校相關師生學習RISC-V處理器設計(使用Verilog語言)和CPU設計的指導用書。
圖書目錄
一部分 CPU與RISC-V綜述
1章 一文讀懂CPU之三生三世 2
1.1 眼看他起高樓,眼看他宴賓客,眼看他樓塌瞭——CPU眾生相 3
1.1.1 ISA——CPU的靈魂 4
1.1.2 CISC與RISC 5
1.1.3 32位與64位架構 6
1.1.4 ISA眾生相 6
1.1.5 CPU的領域之分 10
1.2 ISA請扛起這口鍋——為什麼國産CPU尚未足夠成功 12
1.2.1 MIPS係——龍芯和君正 12
1.2.2 x86係——北大眾誌、兆芯和海光 13
1.2.3 Power係——中晟宏芯 13
1.2.4 Alpha係——申威 14
1.2.5 ARM係——飛騰、華為海思、展訊和華芯通 14
1.2.6 背鍋俠ISA 15
1.3 人生已是如此艱難,你又何必拆穿——CPU從業者的無奈 17
1.4 *敵是多麼寂寞——ARM統治著的世界 18
1.4.1 獨樂樂與眾樂樂——ARM公司的盈利模式 18
1.4.2 小個子有大力量——無處不在的Cortex-M係列 21
1.4.3 移動*者——Cortex-A係列在手持設備領域的巨大成功 23
1.4.4 進擊的巨人——ARM進軍PC與服務器領域的雄心 25
1.5 東邊日齣西邊雨,道是無晴卻有晴——RISC-V登場 25
1.6 原來你是這樣的“薯片”——ARM的計劃 28
1.7 舊時王謝堂前燕,飛入尋常百姓傢——你也可以設計自己的處理器 28
2章 大道至簡——RISC-V架構之魂 29
2.1 簡單就是美——RISC-V架構的設計哲學 30
2.1.1 無病一身輕——架構的篇幅 30
2.1.2 能屈能伸——模塊化的指令集 32
2.1.3 濃縮的都是精華——指令的數量 32
2.2 RISC-V指令集架構簡介 33
2.2.1 模塊化的指令子集 33
2.2.2 可配置的通用寄存器組 34
2.2.3 規整的指令編碼 34
2.2.4 簡潔的存儲器訪問指令 34
2.2.5 *效的分支跳轉指令 35
2.2.6 簡潔的子程序調用 36
2.2.7 無條件碼執行 37
2.2.8 無分支槽 37
2.2.9 零開銷硬件循環 38
2.2.10 簡潔的運算指令 38
2.2.11 優雅的壓縮指令子集 39
2.2.12 特權模式 40
2.2.13 CSR寄存器 40
2.2.14 中斷和異常 40
2.2.15 矢量指令子集 40
2.2.16 自定製指令擴展 41
2.2.17 總結與比較 41
2.3 RISC-V軟件工具鏈 42
2.4 RISC-V和其他開放架構有何不同 44
2.4.1 平民英雄——OpenRISC 44
2.4.2 豪門顯貴——SPARC 44
2.4.3 名校優生——RISC-V 45
3章 亂花漸欲迷人眼——盤點RISC-V商業版本與開源版本 46
3.1 各商業版本與開源版本綜述 47
3.1.1 Rocket Core(開源) 47
3.1.2 BOOM Core(開源) 49
3.1.3 Freedom SoC(開源) 50
3.1.4 LowRISC SoC(開源) 50
3.1.5 PULPino Core and SoC(開源) 50
3.1.6 PicoRV32 Core(開源) 51
3.1.7 SCR1 Core(開源) 51
3.1.8 ORCA Core(開源) 51
3.1.9 Andes Core(商業IP) 52
3.1.10 Microsemi Core(商業IP) 52
3.1.11 Codasip Core(商業IP) 53
3.1.12 蜂鳥E200 Core與SoC(開源) 53
3.2 總結 53
4章 開源RISC-V——蜂鳥E200係列低功耗Core與SoC 54
4.1 與眾不同的蜂鳥E200處理器 55
4.2 蜂鳥E200簡介——蜂鳥雖小,五髒俱全 56
4.3 蜂鳥E200型號係列 57
4.4 蜂鳥E200性能指標 58
4.5 蜂鳥E200配套SoC 59
4.6 蜂鳥E200配置選項 60
二部分 手把手教你使用Verilog設計CPU
5章 先見森林,後觀樹木——蜂鳥E200設計總覽和頂層介紹 65
5.1 處理器硬件設計概述 66
5.1.1 架構和微架構 66
5.1.2 CPU、處理器、Core和處理器核 66
5.1.3 處理器設計和驗證的特點 66
5.2 蜂鳥E200處理器核設計哲學 67
5.3 蜂鳥E200處理器核RTL代碼風格介紹 68
5.3.1 使用標準DFF模塊例化生成寄存器 68
5.3.2 使用assign語法替代if-else和case語法 70
5.3.3 其他若乾注意事項 71
5.3.4 小結 72
5.4 蜂鳥E200模塊層次劃分 72
5.5 蜂鳥E200處理器核源代碼 73
5.6 蜂鳥E200處理器核配置選項 73
5.7 蜂鳥E200處理器核支持的RISC-V指令子集 74
5.8 蜂鳥E200處理器流水綫結構 74
5.9 蜂鳥E200處理器核頂層接口介紹 74
5.10 總結 77
6章 流水綫不是流水賬——蜂鳥E200流水綫介紹 78
6.1 處理器流水綫概述 79
6.1.1 從經典的五級流水綫說起 79
6.1.2 可否不要流水綫——流水綫和狀態機的關係 81
6.1.3 深處種菱淺種稻,不深不淺種荷花——流水綫的深度 81
6.1.4 嚮上生長——越來越深的流水綫 82
6.1.5 嚮下生長——越來越淺的流水綫 83
6.1.6 總結 83
6.2 處理器流水綫中的亂序 83
6.3 處理器流水綫中的反壓 84
6.4 處理器流水綫中的衝突 84
6.4.1 流水綫中的資源衝突 84
6.4.2 流水綫中的數據衝突 85
6.5 蜂鳥E200處理器的流水綫 86
6.5.1 流水綫總體結構 86
6.5.2 流水綫中的衝突 87
6.6 總結 87
7章 萬事開頭難嗎—— *切從取指令開始 88
7.1 取指概述 89
7.1.1 取指特點 89
7.1.2 如何快速取指 90
7.1.3 如何處理非對齊指令 91
7.1.4 如何處理分支指令 92
7.2 RISC-V架構特點對於取指的簡化 97
7.2.1 規整的指令編碼格式 97
7.2.2 指令長度指示碼放於低位 97
7.2.3 簡單的分支跳轉指令 98
7.2.4 沒有分支槽指令 100
7.2.5 提供明確的靜態分支預測依據 100
7.2.6 提供明確的RAS依據 101
7.3 蜂鳥E200處理器的取指實現 101
7.3.1 IFU總體設計思路 102
7.3.2 Mini-Decode 103
7.3.3 Simple-BPU分支預測 105
7.3.4 PC生成 109
7.3.5 訪問ITCM和BIU 111
內容簡介
《自己設計製作CPU與單片機》是一本為有誌於計算機CPU設計的人員所寫的書,不論你是狂熱的友,還是精明的計算機工作者。
《自己設計製作CPU與單片機》以作者幾十年學習設計製作CPU與通用單片機的經曆,來告訴你如何從無到有地設計屬於你自己的CPU和可以運行用戶程序的單片機。書中以作者的十幾個CPU設計工程為主綫,展示瞭精簡指令RISC和復雜指令CISC計算機CPU的設計方法。既有硬件編程,又有原理圖設計,適閤軟硬件人員學習計算機核心技術之用。
《自己設計製作CPU與單片機通過實例告訴讀者,如何創造性地進行計算機産品CPU的立意和設計,介紹瞭人機交互和操作內核的設計方法。這是一本對要全麵掌握計算機技術的人員而言必讀的CPU設計製作之書。
圖書目錄
前 言
上篇 CPU設計製作入門
第1章 自己就能設計製造CPU
1.1 自己設計製作CPU有啥意義
1.2 我設計製作CPU的經曆
1.3 電子電路設計製作的新變化
1.4 自己設計CPU的條件
1.5 創新CPU設計的意義
第2章 進入硬件設計的天地
2.1 搭建自己的製造工廠
2.2 設計製造CPU需要熱身
2.3 硬件設計語言Verilog HDL
2.4 Verilog HDL語句和模塊
2.5 Verilog HDL其他常用語句
第3章 自己創造CPU的方法
3.1 深刻理解CPU的結構
3.2 自創CPU的一般步驟
3.3 如何設計自己的指令
3.4 指令分析的一般性總結
3.5 讓CPU運行程序
第4章 一個簡單CPU的設計
4.1 創建一個CPU設計工程
4.2 剖析這個CPU設計程序
4.3 CPU行為的描述方法
4.4 如何讓CPU運行軟件程序
4.5 CPU設計工程小結
第5章 自製通用CPU與單片機
5.1 實體結構與器件應用
5.2 通用CPU指令設計
5.3 用匯編程序檢驗CPU設計
5.4 外設與CPU接口設計
5.5 設備驅動程序設計
5.6 時鍾設計
5.7 開發闆連接程序設計
5.8 FPGA引腳連接
5.9 操作內核設計
5.10 燒製CPU製作單片機
.........................
這本書的排版和裝幀簡直是為初學者量身定做的,插圖清晰直觀,每一個電路圖和時序圖都標注得非常詳細,讓人一眼就能看懂復雜的邏輯關係。作者的寫作風格非常平易近人,不像有些技術書籍那樣乾巴巴的理論堆砌,而是像一個經驗豐富的老教授在給你娓娓道來,每一步驟都帶著“為什麼”和“這樣做的好處”。特彆是關於流水綫設計的章節,通過大量的圖示和僞代碼,把原本抽象的概念變得觸手可及。我一個非科班齣身的朋友,之前對CPU的理解僅限於“中央處理單元”這個名詞,但在讀瞭這本書的前半部分後,竟然能自信地嚮我描述取指、譯碼、執行這幾個核心階段的工作原理。這種從零開始,步步為營的教學方式,極大地降低瞭學習門檻,讓“設計CPU”這個曾經遙不可及的夢想,變得似乎就在眼前觸手可及。它不僅僅是在教你知識點,更是在培養你係統性的工程思維。
評分從作者對技術選型的態度中,我感受到瞭極大的真誠。他沒有盲目追逐最新的技術熱點,而是選擇瞭最經典、最能體現核心原理的結構進行深入剖析。這種“迴歸本質”的教學思路,確保瞭讀者學到的知識具有極強的生命力和普適性。書中對一些經典的設計陷阱和常見的性能瓶頸的分析尤其到位,這些經驗之談,往往是教科書裏找不到的“軟知識”。比如,關於分支預測單元的設計權衡,作者展示瞭不同復雜度的預測器在性能提升和硬件開銷之間的微妙平衡點。這種基於真實工程考量的討論,讓這本書的參考價值大大提升,它不僅僅是教會你如何設計一個能工作的CPU,更是在教你如何設計一個高效、閤理的處理器,這對於任何想要進入芯片設計領域的專業人士來說,都是一份極其寶貴的財富。
評分閱讀體驗上,我必須給這本書點個大大的贊。它不像一本教科書,更像是一場精心策劃的動手實踐之旅。作者在關鍵節點設置瞭大量的“思考題”和“動手實踐建議”,鼓勵讀者不要被動接受信息,而是主動去驗證和構建。我按照書中的步驟,結閤自己的工具鏈,真的動手搭建瞭一個簡化的指令集模擬器,那種看著自己設計的邏輯流準確無誤地完成復雜運算的成就感,是單純看理論文章無法比擬的。這種強烈的實踐導嚮性,使得學習過程充滿瞭樂趣和即時反饋。而且,書中的示例代碼和仿真腳本都非常規範且易於調試,極大地減少瞭初學者在配置環境和排查錯誤上浪費的時間。這本書真正做到瞭理論與實踐的完美結閤,把學習CPU設計從“看懂”提升到瞭“做到”的層麵。
評分這本書在處理不同抽象層次之間的轉換方麵,展現齣瞭高超的駕馭能力。它能夠流暢地在硬件描述語言(HDL)的細節、微架構的組織方式,乃至指令集架構(ISA)的語義層麵之間進行無縫切換。比如,它不會孤立地討論寄存器堆的讀寫端口,而是會將其置於整個取指-執行周期的上下文中,解釋為什麼需要特定的端口數量和仲裁機製。這種宏觀與微觀相結閤的視角,幫助讀者建立起一個完整、立體的處理器認知模型,避免瞭隻見樹木不見森林的弊端。對於渴望理解整個係統協同工作的工程師來說,這本書提供瞭一個極其清晰的框架,讓你明白每一個小組件是如何為瞭最終的計算目標而服務的,這種全局觀的培養,是任何單一模塊教程所無法比擬的優勢。
評分這本書的深度和廣度令人印象深刻,它沒有滿足於僅僅停留在高層次的理論介紹上,而是深入到瞭每一個關鍵模塊的底層實現細節。例如,在談到緩存一緻性協議時,作者並未迴避那些復雜的並發控製問題,反而通過精妙的案例分析,將MESI等協議的運作機製梳理得井井有條。這種對細節的把控,使得這本書的價值遠遠超齣瞭入門指南的範疇,完全可以作為一本進階參考手冊來使用。我特彆欣賞作者在描述復雜邏輯時所展現齣的那種嚴謹性,每一個設計決策背後都有充分的考量和權衡,這種“為什麼這麼做”的深度思考,恰恰是區分優秀工程師和普通操作員的關鍵所在。對於那些已經掌握瞭基礎數字電路知識,渴望真正理解現代處理器內部運作機製的讀者來說,這本書無疑是一座寶藏,它提供瞭從抽象規範到具體硬件實現的完整路徑圖。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有