# RISC – V 學習筆記 作者 : Jerry Lin Reference : https://riscv.org/specifications/ :100: ## Outline * CPU開發歷程 * RISC-V設計架構 * 蜂鳥 E200 設計分析 * FPGA實作 ## CPU開發歷程 * **CPU指令集架構** * CISC(Complex Instruction Set Computer) * 包含常用的指令集與不常用的特殊指令集,隨著CPU更新開發,特殊指令集會越積越多,導致真正常用的指令集,只佔所有指令集的一小部分 * 代表 : Intel & AMD 所開發的x86 CPU,也是目前PC上主流的CPU * RISC (Reduced Instruction Set Computer) * 僅具有常用指令集,不常用的特殊指令集,則由多條常用指令集組合執行,達成相同任務 * 代表 : IBM PowerPC、ARM * **CPU位元架構** * 8、16、32、64位元 * 通用暫存器(general-purpose registers)的長度 * 可以決定尋找暫存器地址的範圍與運算能力 * 32位元的CPU架構,代表通用暫存器的寬度為32位元,尋找暫存器地址的範圍為232,4GB,運算指令最長為32位元 * 運算指令越短越好,不一定要等於通用暫存器的長度 * 現有主流的CPU所使用的位元架構 * 8、16位元 : 8051、Arduino UNO 所使用的 Atmel 單晶片處理器 * 32位元 : 嵌入式微處理器,如 ARM Cortex M系列 * 64位元 : 目前主流的PC CPU與智慧型手機 * **CPU應用領域** | 應用領域 | 需求 | 主流架構 | |:------------------:|:--------------------------:|:-----------------------:| | 伺服器 | 高運算量、複雜多工 | Intel 、AMD x86架構 CPU | | 個人電腦 | 中高運算量、普通多工 | Intel 、AMD x86架構 CPU | | 智慧型裝置(嵌入式) | 中低運算量、娛樂用途 | ARM Cortex A | | 嵌入式系統 | 低功耗、低成本、IoT Device | ARM Cortex M | * **嵌入式系統的主流處理器 – Arm** * arm,位於英國的半導體設計與軟體公司,目前已被軟銀(SoftBank)收購 * 營業項目 : 嵌入式系統處理器、S.O.C IP、GPU…等 * 處理器系列 * Cortex – A * 幾乎壟斷所有的智慧型裝置處理器市場 * 常見於智慧型手機、平板的處理器中,廠商包含蘋果、三星、高通、LG… * 由2005年,Cortex A8,以armv7 – A架構開始發展,到目前Cortex A77,arm8.2A架構 * Cortex – M * 32位元的RISC架構處理器,專門應用於低功耗的微控制器領域,實現於物聯網裝置上 * 以Cortex M0為代表,各家廠商以arm處理器核IP為基礎,各自開發成不同應用的MCU * 廠商包含Freescale、NXP、ST…等 * **如何開始設計一個CPU** * x86架構? * Intel 與 AMD公司,產品以CPU晶片為主,不可能釋出x86架構供其他人使用 * x86的授權費用,也非普通公司能夠負擔 * arm架構? * 架構授權、處理器核IP授權、ARM處理器 * 都需要付給ARM一筆相當大的授權費用 **綜上所述,目前主流的CPU架構,皆需要一大筆的授權費用,難以取得** **一般人如何設計一個CPU???** * RISC – V * 由美國加州大學柏克萊分校,Krste Asanovic等教授所開發的新指令集架構 * 完全開放的指令集,由RISC-V基金會所託管、維護,任何組織可自由使用 * 簡單但強大的標準指令集,可以輕鬆用硬體實現,且非常穩定 * 開源的網站,提供完整的開發支援,包含架構文件、編譯器、軟體開發工具 **非常適合普通人利用RISC-V,自行實現一個CPU,並加以應用** ## RISC – V設計架構 | 基本指令集 | 指令數量 | 簡述 | | ---------- | -------- | ---- | | RV32I | 47 | 32位元架構,32位地址寬度與整數指令集 | | RV32E | 47 | 支援16位元架構 | | RV64I | 59 | 64位元架構,可支援一部份32位整數指令集 | | RV128I | 71 |128位地址寬度與整數指令集,可支援部分64、32位元指令 | | 擴展指令集 | 指令數量 | 簡述 | | M | 8 | 整數乘法與除法運算指令 | | A | 11 | Atomic操作指令與Load-Reserved/Store-Conditional指令 | | F | 26 | 32-bit float | | D | 26 | 64-bit double | | C | 46 | 壓縮指令,16位指令長度 | * 模組化的指令集,可以依照使用情形,組裝搭配使用 * Ex.低功耗使用場景 = RV32IC / 高運算應用場景 = RV32IMFDC * 通用場景 RV32G = RV32IMAFD 與 RV64G = RV64IMAFD * 嵌入式應用場景 RV32EC * 格式化的指令編碼 * 指令所需的通用暫存器index至於相同固定位置 * 專用的Memory讀寫指令 * Address對齊,增加讀寫性能 * 僅支援 Little-Endian * 不支援 Address增減 * 採用 Relaxed Memory Model,對於訪問Address的排序沒有要求 * 高效率跳轉指令 * 無條件跳轉指令 jal (Jump and Link) & jalr (Jump and Link-Register) * 六個有條件的跳轉指令 * 與普通運算指令相同,使用兩個整數操作數,比較完成且條件滿足後即進行跳轉 (相比其他RISC,需要先使用比較指令,將比較結果存於狀態暫存器,再使用跳轉指令) * 靜態分支跳轉預測機制 * 往後跳轉的條件跳轉指令,預測為跳 / 往前跳轉的條件跳轉指令,預測為不跳 * 取消Store Multiple & Load Multiple * 用公用程式庫裡的保存狀態與恢復狀態指令碼來完成 * 可以減少Store Multiple & Load Multiple的電路複雜度與面積 * 無條件碼執行 * 需要判斷執行的指令,都使用”有條件的跳轉指令” * 其他的一律直接執行 * 取消Delay Slot * 因為已經採取”靜態分支跳轉預測機制”,取消後可減低硬體複雜度 * Privileged Mode * Machine Mode = Simple embedded systems * Supervisor + Machine + User Mode = Running Unix-like operating Systems * Machine + User Mode = Secure embedded systems * 運算指令不產生異常 * 與一般架構不同,RISC-V不產生運算錯誤指令 * 但會將Overflow、Underflow…等所產生的錯誤,以特定的默認值,儲存於特定的狀態的暫存器,再透過其他軟體的方法來解決 * 可以再次簡化指令集 * 普通32位元指令可以對應16位元的壓縮指令 * “格式化的指令編碼”容易於CPU的設計,但同時會造成Code Size過於龐大 * 對於較小的嵌入式應用場景,可以透過16位元的壓縮指令來執行相同的功能 --- **個人總結,RISC – V適用於 IoT Device MCU** * 電路複雜度降低,可以拉高CPU主頻,提升運算量 * 在低功耗、低面積的應用領域,也因為電路複雜度減低,具有優勢 * 模塊化的方式,可以透過組裝,客製化成專用於某項應用的處理器 * 例如 : IoT前端感測裝置的MCU、簡單的DSP、邊緣運算節點 **個人想法** * RISC – V非常適合IoT裝置的應用,因為目前大多數的使用場景,IoT MCU並不需要複雜的計算,常當作通訊(BLE、WIFI、Zigbee)的資料節點,或是簡單的控制。這類的裝置通常需要較低的功耗,來延長使用的時間;需要較小的面積,便於PCB製作,以符合穿戴或感測的需求。 --- ## 蜂鳥 E200 * 預計採用這個開源的RISC – V,作為入門參考的對象 * 學習一個簡單的RISC – V架構 * 學習設計者的思路 * 學習一些實現的細節 * 學習之後,試著用這個範例,改造成適合自己應用的RISC – V * 預計使用FPGA實現 * 然後再學習要怎麼把這個CPU導入自己的應用 * **目標應用是一個AIoT前端感測器,配合自己做的感測電路,開發成一片完整的PCB模組,並拉到雲端Server測試整個系統** ## 蜂鳥 E200 設計分析 未完待續...
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.