01 / 導讀
導讀
引用
Harris, S. L., & Harris, D. (2021). Digital Design and Computer Architecture, RISC-V Edition. Morgan Kaufmann (Elsevier).
章節概要
紙質書共八章,約 540 頁。關於嵌入式輸入/輸出的第九章,以及關於數字系統實作、RISC-V 指令集和 C 語言程式設計的附錄,透過本書的配套網站提供。據出版社介紹,本書「帶領讀者從數字邏輯的基礎一直走到實際的處理器設計」,從邏輯閘出發,經過組合電路和時序電路,最終設計出 RISC-V 微處理器,全書貫穿使用 SystemVerilog 和 VHDL。
第 1 章:From Zero to One(從零到一)
開篇一章(約 50 頁)是整個序列的起點。章名「從零到一」,加上出版社所說本書從數字邏輯閘講起,表明本章引入數字邏輯的基本概念。
第 2 章:Combinational Logic Design(組合邏輯設計)
本章(約 50 頁)設計輸出只取決於當前輸入的電路,以邏輯閘為構件。
第 3 章:Sequential Logic Design(時序邏輯設計)
第 3 章(約 65 頁)加入帶有儲存的電路,其輸出還取決於過去的輸入。它是兩章邏輯設計中篇幅較長的一章。
第 4 章:Hardware Description Languages(硬體描述語言)
本章(約 65 頁)講授描述電路所用的語言。出版社說,SystemVerilog 和 VHDL 貫穿全書,用於基於 CAD 的設計示例;作者的勘誤表提到本章有一個七段數碼管譯碼器示例。
第 5 章:Digital Building Blocks(數字構件)
第 5 章(約 60 頁)建立在第 2、3 章的組合電路和時序電路之上。出版社稱這些為「基本構件」,並說它們構成了後續處理器設計的基礎。
第 6 章:Architecture(架構)
架構一章(約 90 頁)使讀者透徹理解 RISC-V 指令集;出版社稱,這使讀者能夠在硬體模擬、軟體模擬和實際硬體中為 RISC-V 處理器程式設計。配套的 I/O 一章回指本章第 6.5.1 節,其中把一部分位址空間留給 I/O 裝置。
第 7 章:Microarchitecture(微架構)
這是篇幅最長的一章(約 105 頁),用來構建處理器。出版社列出了 RISC-V 架構的單週期、多週期和管線化版本的 SystemVerilog 與 VHDL 設計。勘誤表顯示,本章習題包括時序問題,例如假定相等比較器的延遲。
第 8 章:Memory Systems(儲存系統)
紙質書以一章簡短的內容(約 45 頁)講儲存系統收尾,是八章中最短的一章。
配套內容:第 9 章與附錄
第 9 章 Embedded I/O Systems(嵌入式 I/O 系統,約 64 頁)先介紹記憶體對映 I/O,然後展示如何使用帶有 RISC-V 微控制器的 SparkFun RED-V RedBoard,涉及其通用、序列和模擬 I/O、定時器與脈寬調變,最後講與字元 LCD、VGA 顯示器、藍牙模組和電機的介面。附錄 A(Digital System Implementation)涵蓋 74xx 邏輯、可程式設計邏輯、專用整合電路、資料手冊、邏輯系列、開關與 LED、封裝、傳輸線和經濟學,並註明理解本書其餘部分並不需要它。附錄 B 以表格概述 RISC-V 指令集(RV32I、RV64I、浮點、乘除、壓縮指令、偽指令和特權指令),附錄 C 是一份由淺入深直到常見錯誤的 C 語言入門。
核心概念
第 1–5 章:數字設計
- 組合邏輯與時序邏輯:有儲存與無儲存的兩類電路,其他一切都由它們構建。
- 硬體描述語言:用 SystemVerilog 和 VHDL 描述、模擬和綜合電路。
- 數字構件:由門和暫存器構成的標準較大部件。
第 6–8 章:架構與微架構
- RISC-V 指令集:軟體與處理器之間的介面。
- 單週期、多週期與管線化微架構:同一架構的三種實作及其權衡。
- 儲存系統:處理器如何與記憶體相連。
配套第 9 章與附錄
- 記憶體對映 I/O:透過普通的載入和儲存存取裝置。
- 微控制器外設:RISC-V 開發板上的 GPIO、序列與模擬 I/O、定時器和脈寬調變。
評析
優點
- 從門到處理器的一條主線。 各章順序沿一條線從邏輯走向可執行的 RISC-V 處理器;出版社把目標描述為讓讀者構建自己的微處理器,並對其工作原理有自上而下的理解。
- 包含硬體描述語言。 SystemVerilog 和 VHDL 都有介紹,基本構件和三種處理器版本都有相應設計,讀者可以選擇自己用的語言。
- 現代而開放的指令集。 RISC-V 版採用開源架構,配套網站上的附錄 B 給出了基本指令集和擴充套件指令集的指令表。
- 豐富的配套資源。 作者網站提供講課幻燈片、實驗、插圖、HDL 檔案、奇數號習題的解答、影片、名為 SonicRV 的 RISC-V 視覺化工具,以及兩門可免費觀看的 edX 課程(數字設計和電腦架構)。
- 實用的硬體章節。 線上的 I/O 一章讓架構落到能在真實開發板上執行的東西上。
侷限
- 部分重要內容僅線上提供。 I/O 一章和三個附錄不在紙質書中,讀者需要存取配套網站。
- 儲存部分較簡短。 儲存系統一章只有約 45 頁,比微架構一章短得多,不能替代專門的架構教材。
- 只有一種指令集和一塊開發板。 一切都建立在 RISC-V 上,I/O 示例使用特定的 SparkFun 開發板;需要 MIPS 或 ARM 內容的讀者應檢視本書的其他版本。
- 公開的解答只涵蓋一半習題。 作者網站只提供奇數號習題的解答,所以自學讀者對其餘習題沒有公開答案。
在課程中的定位
這本書自硬體向上展開:讀者要自己設計處理器。Bryant 和 O'Hallaron 的 Computer Systems: A Programmer's Perspective 從程式設計師一側出發,透過 C、機器程式碼、記憶體和作業系統機制來講機器,因此是很合適的軟體方面的搭檔。Petzold 的 Code 是面向普通讀者的敘述性入門,可以排在本書之前;Nisan 和 Schocken 的 The Elements of Computing Systems 是專案式的路徑,同樣從邏輯閘起步,一直做到編譯器和作業系統。
讀完本書之後,Hennessy 和 Patterson 的 Computer Architecture: A Quantitative Approach 是研究生層次的研究,討論設計選擇如何影響效能和能耗;Shen 和 Lipasti 的 Modern Processor Design 則講述超出第 7 章所達到的管線化設計的超標量處理器。
如何使用本書
出版社說明的讀者物件是修讀數字邏輯與電腦架構合併課程的電氣工程、電腦工程和電腦科學本科生,以及想了解 RISC-V 架構的專業人士。本書也適合先學數字邏輯、再學電腦組成的兩學期課程。
實用的安排:
- 核心: 按順序讀第 1 至 8 章。第 1 至 3 章和第 5 章是數字設計的核心,第 4 章最好與它們同時讀,每出現一個電路就編寫並模擬。
- 架構部分: 第 6 至 8 章,讀第 6 章時把附錄 B 的 RISC-V 指令表擺在一旁。
- 可選: 有 RISC-V 開發板的話讀第 9 章;想了解實際工程問題讀附錄 A;不熟悉 C 語言則讀附錄 C。
- 練習: 使用習題、奇數號習題的解答和作者網站上的實驗,並透過 edX 課程觀看帶互動題的影片講座。
