《手把手教你設計CPU——RISC-V處理器》讀書筆記

Stay Hungry, Stay foolish(求知若飢,虛心若愚)——Steven Jobs(史蒂夫-喬布斯)

關於書籍和胡振波

首先感謝麪包板社區提供這本**《手把手教你設計CPU——RISC-V處理器篇》書籍的試讀機會。這本書和另外一本《 RISC-V架構與嵌入式開發 》**是國內最先出版的兩本關於RISC-V處理器的書籍,作者是胡振波先生,所以這裏要感謝胡老師。胡振波先生是國內最早開始研究RISC-V架構的,有超過8年的CPU以及超過10年的ASIC設計與驗證經驗,歷任Marvell CPU高級設計工程師,Synopsys ARC系列處理器內核研發經理等職務,有着近20年的行業積累。

第一次瞭解作者,是在今年4月20日在北航舉辦的RISC-V技術沙龍,那是我第一次全面的瞭解RISC-V架構,也是我第一次參與這種線下的技術交流活動,當時很多業內的大佬都分享了很多知識和見解,其中就包括胡振波老師分享的“RISC-V架構嵌入式開發的特點”。

記得在發言結束後,會上有一位與非網的朋友提問到,“作爲國內RISC-V處理器研究的領導者,芯來科技爲什麼沒有選擇做芯片而是做IP核呢?”胡振波給出的答案是,“國內現在已經有近2000家芯片公司,如果我們選擇做芯片,只是衆多芯片公司中的2000分之一,現在基本是國外公司SiFive在做基於RISC-V架構的IP,國內公司對底層技術掌握的很少,本土的公司能做IP的也很少,如果沒有人來做IP,就會變成從ARM壟斷的ARM架構市場轉爲SiFive壟斷的RISC-V架構的市場,我們放棄做芯片,專注做IP,服務國內其它商業公司。雖然芯來科技從創立到現在只有半年的時間,我們開發的IP已經導入國內很多龍頭公司的產品中,這樣做最終爲本土產業帶來更大的幫助,這種選擇大於我們做芯片的意義。我們選擇了看似不是被人理解的方向,是爲了更好幫助本土IC產業發展,算是間接實現個人的自我價值。”當時,就很佩服胡老師作爲第一個喫螃蟹的人。

關於RISC-V

RISC-V(發音同“risk-five”)是一種免費開源指令集架構(ISA),通過開放標準協作開創處理器創新的嶄新紀元。RISC-V基金會創立 於2015年,由超過235家成員組織組成,建立了首個開放、協作的軟硬件創新者社區,開創了處理器創新的新時代。RISC-V ISA發端於深厚的學術研究,將免費且可擴展的軟硬件架構自由度提升至新的水平,爲未來50年的計算設計與創新鋪平了道路。

現在處理器的指令集主要分爲RISC和CISC,即精簡指令集和複雜指令集,RISC的代表就是著名的ARM架構,專注於高性能,低功耗,小體積,主要應用於移動設備;而CISC的代表是x86架構,像常用的PC、服務器的CPU等等,專注於桌面,高性能和民用市場。而RISC-V是屬於RISC陣營的,相比於ARM,RISC-V的歷史很短,2010年誕生於加州大學伯克利分校,當時的Krste Asanovic教授希望尋找一個合適的CPU指令架構,但x86架構複雜臃腫、ARM架構需要授權費、開源的OpenRISC架構又太老舊了,所以他最終決定自己做個開源CPU架構,並在2015年成立了RISC-V基金會(RISC-V Foundation ),專門推動RISC-V發展,現在的RISC-V基金會成員也超過了235個,包括國外的Google、三星、英偉達、微芯、高通、惠普、意法半導體、西數、NXP,國內的阿里巴巴、華爲、高雲等公司。一個時代有一個時代的芯片。RISC-V,就被認爲是AIoT時代芯片的基礎。可以說,今年是RISC-V快速發展的一年,從最近的兆易發佈GD32VF103 MCU,到阿里發佈玄鐵910 IP,再到華米科技基於RISC-V MCU的智能手錶量產等等,都可以看出今年RISC-V是大放異彩,個人猜測,ARM可能覺得RISC-V對他產生了一定威脅,所以計劃將在明年上半年在特定CPU內核上推出自定義指令集功能,來對抗RISC-V!

正好最近又發佈了基於兆易和芯來共同研發的 Bumblebee RISC-V內核的MCU——GD32VF103 。不知道最近麪包板社區有沒有考慮開展兆易RISC-V開發板的評測活動,哈哈!

關於蜂鳥E200

本書介紹的這款RISC-V CPU內核,名稱爲蜂鳥E200,代碼文檔全部開源在Github上,開源地址在文末。蜂鳥E200是一個處理器系列,包含了多款不同的具體處理器型號。所有的E200系列處理器核均支持協處理器接口,可用於自定義擴展指令。E201核是面積最小的核,可以配置爲RV32IC或者RV32EC架構,不支持其他的擴展指令子集。

  • E201核是面積最小的核,可以配置爲RV32IC或者RV32EC架構,不支持其他的擴展指令子集。
  • E203核可以配置爲RV32IMAC或者RV32EMAC架構,使用面積優化的多週期硬件乘除法單元。
  • E205核爲RV32IMAC架構,使用單週期的硬件乘法單元和多週期的硬件除法單元。
  • E205f核爲RV32IMAFC架構,在基本的E205基礎上加入了單精度浮點運算單元。
  • E205fd核爲RV32IMAFDC架構,在基本的E205基礎上加入了單精度和雙精度浮點運算單元。

針對商業用途,芯來科技又發佈了商業內核——N200系列。

(來自官網 https://www.nucleisys.com )

全書結構

全書共20章節,可分爲三大部分,第一部分1-4章,普及處理器、CPU、指令集、內核、架構、RISC-V基礎知識,並介紹了多款RISC-V內核,以及蜂鳥E200內核系列。

第二部分5-16章,詳細介紹了設計CPU的通用流程,及對應的Verilog代碼實現,非常適合深入理解CPU內部的工作原理,總線,指令,譯碼,中斷異常,調試等,至於TIMER,UART、IIC、SPI等接口屬於外設部分,並沒有提到,畢竟本書介紹的CPU部分的實現過程,就像ARM MCU一樣,內核都是一個,但是不同的半導體廠家,外設配置是不同的,有的是2個串口,有的3個串口,有了總線接口,這些外設根據需要來自主設計添加就行了。

第三部分17-20章,介紹在FPGA上實現CPU原型,並使用IDE工具來進行開發和調試,當然更詳細的應用開發,還是要參加另一本姊妹書籍——《 RISC-V架構與嵌入式開發 》,最後一章節,介紹了和ARM M系列的性能跑分對比。

蜂鳥E200ARM Cortex-M核性能對比

國產CPU

  • MIPS——龍芯和君正
  • x86系——北大衆志、兆芯、海光
  • Power——中晟宏芯
  • Alpha——申威
  • ARM——飛騰、華爲海思、展訊、華芯通

CISC和RISC的區別

指令集架構主要分爲複雜指令集(Complex Instruction Set Computer,CISC)和精簡指令集(Reduced Instruction Set Computer,RISC),兩者的主要區別如下:CISC不僅包含了處理器常用的指令,還包含了許多不常用的特殊指令。其指令數目比較多,所以稱爲複雜指令集。RISC負包貪處理器常用的指令,而對於不常用的操作,則通過執行多條常用指令的方式來達到回樣的效果。由於其指令數目比較精簡,所以稱爲精簡指令集。典型程序的運算過程中所使用到的80%指令,只佔所有指令類型的20%,也就是說,CISC指令集定義的指令,只有20%被經常使用到,而有80%則很少被用到。那些很少被用到的特殊指令尤其讓CPU設計變得極爲複雜,大大增加了硬件設計的時間成本與面積開銷。

RISC-V商業版本與開源版本

  • Rocket Core
  • BOOM Core
  • Freedom SoC
  • LowRISC SoC
  • PULPino Core and SoC
  • PicoRV32 Core
  • SCR1 Core
  • ORCA Core
  • Andes Core(商業IP)
  • Microsemi Core(商業IP)
  • Codasip Core(商業IP)
  • 蜂鳥E200 Core與SoC(開源)

配套源碼

本書配套的Verilog代碼Github開源地址:https://github.com/whik/e200_opensource.git

  • Git下載命令:git clone https://github.com/whik/e200_opensource.git

如果下載速度太慢,我已經把這個倉庫同步到了我個人的Gitee碼雲上,下載速度會快一些:`https://github.com/whik/e200_opensource

  • Git下載命令:git clone https://github.com/whik/e200_opensource.git

配套開發板購買

開發板基於Xilinx XC7A100T,板載Xilinx Platform Cable USB下載器,用於對FPGA進行程序燒寫。

  • FPGA評估板和JTAG調試器購買鏈接:https://item.taobao.com/item.htm?id=580813056318
  • 蜂鳥RISC-V開源處理器軟硬件演示視頻:https://www.bilibili.com/video/av41835638
  • 作者胡振波先生演講——“RISC-V架構嵌入式開發的特點”,直播回看:RISC-V架構嵌入式開發研究與實踐
  • 作者ID:硅農亞歷山大,微信公衆號,CSDN博客等平臺。

總結

這本書主要是介紹國產開源RISC-V架構CPU——蜂鳥E200,通用CPU的設計流程和基於Verilog的代碼具體實現,可以說是理論和實踐相結合的一本好書,代碼和文檔都在Github上開源,文末有地址。無論是對於嵌入式開發,還是IC設計驗證,都是很有價值的參考。雖然日常工作中也會接觸到一些Verilog FPGA開發,但都是一些採集和通信的簡單程序,另外個人也並不是微電子專業的,所以對於這種CPU的設計和實現,只能看個大概,很多的設計技巧理解起來還是有些困難,所以我的讀書心得也僅限於此了,歡迎各位朋友互相交流。

推薦閱讀


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章