嵌入式研究杂记(1)-RISC-V开源CPU
RISC-V(發音為“risk-five”)是一個基于精簡指令集(RISC)原則的開源指令集架構(ISA),簡易解釋為開源軟件運動相對應的一種“開源硬件”。該項目2010年始于加州大學柏克萊分校,但許多貢獻者是該大學以外的志愿者和行業工作者。
與大多數指令集相比,RISC-V指令集可以自由地用于任何目的,允許任何人設計、制造和銷售RISC-V芯片和軟件而不必支付給任何公司專利費。雖然這不是第一個開源指令集[1],但它具有重要意義,因為其設計使其適用于現代計算設備(如倉庫規模云計算機、高端移動電話和微小嵌入式系統)。設計者考慮到了這些用途中的性能與功率效率。該指令集還具有眾多支持的軟件,這解決了新指令集通常的弱點。[2]
RISC-V指令集的設計考慮了小型、快速、低功耗的現實情況來實做,但并沒有對特定的微架構做過度的設計。[3][4]截至2017年5月RISC-V已經確立了版本2.22的用戶空間的指令集(userspace ISA),而特權指令集(privileged ISA)也處在草案版本1.10。
RISC-V的作者們旨在提供數種可以在BSD許可證之下自由使用的CPU設計。該許可證允許像是RISC-V芯片設計等派生作品可以像RISC-V本身一樣是公開且自由發行,也可以是閉源或者是專有財產。
相比而言,ARM控股和MIPS科技等商業芯片供應商會對使用其專利者收取高額的許可費用。[5]他們也要求在接收其描述設計優點的文件和指令集前,還需要簽署保密協議。許多設計優點為完全專有,從來不會披露給客戶。這種保密制度阻礙了公共教育用途和安全審核,以及開發公共、低成本的自由及開放源代碼軟件編譯器和操作系統。[來源請求]
開發一個CPU需要多種專業的設計知識,包括電子邏輯、編譯器和操作系統。這種資源在專業工程團隊之外很難見到。所以現代且高質量的通用計算機指令集近年來除了學術環境以外并沒有在任何地方被廣泛使用,甚至沒有被闡述。正因如此,許多RISC-V貢獻者將此視為整個社區付出的成果,而這也是RISC-V有很多任務程上的應用的一項原因。
RISC-V的作者們還有大量研究和用戶經驗來驗證他們在硅片和仿真中的設計。RISC-V指令集是從一系列的學術計算機設計項目直接發展而來的。它一開始的目的有一部分是為了幫助這些項目。
RISC的歷史可追溯到1980年左右。[6]在此之前,人們覺得簡單的計算機可能會有用,但是沒有很多人去闡述其設計原則。這種簡單而有效的計算機一直都是學術界的興趣。
**學術界的學者們為了出版第一版的《計算機體系結構:定量方法》(Computer Architecture: A Quantitative Approach)ISBN 978-1558600690 ,所以于1990年訂立了RISC指令集DLX。David Patterson是其中一位作者,后來協助RISC-V的開發。但是DLX只用于教育用途,學術界和業余愛好者使用FPGA(現場可編程門數組)來實做它,但并沒有獲取商業運用。**版本2及更早版本的ARM CPU具有公共域指令集,并且仍有GCC的支持,而GCC是一個受歡迎且免費的軟件編譯器。該ISA有三個開源內核,但尚未制造。
OpenRISC是一款基于DLX的開源ISA,并且具有相關的RISC設計。它完全支持GCC并且有實做在Linux上。但是它很少有商業上的實做,直到2018年下半年SiFive公司10月推出一系列全新 CPU設計圖產品線應用涵蓋 5G、網通、存儲、增強現實(AR)、虛擬現實(VR)等,其 E系列與 U系列的 CPU方案已經威脅到ARM(安謀)公司的收費產品并且擁有后者缺乏的64位架構產品。[7]。
ARM公司受到威脅后上線了一個網站riscv-basics.com,列舉了對RISC-V的批判,包括:成本、生態系統、碎片化風險、安全性問題、設計驗證。但最終迫于業界輿論惡評,ARM關閉了該網站。
RISC設計者們認為指令集因為位于硬件和軟件之間,所以是電腦主要的溝通橋梁,因此如果有一個設計良好的指令集是開源而且可以被任何人使用的,就可以讓更多的資源能夠重復利用,而大大的減少軟件的成本。而這樣的指令集也會增加硬件供應商市場的競爭力,因為硬件供應商們可以挪用更多資源來進行設計,減少處理軟件支持的事務。[8]
設計者聲稱在指令集設計領域里,新的設計準則漸漸變得罕見,而近四十年中,大多數成功的設計變得越來越相似。至于那些失敗的指令集,大多數是因為他們的贊助商賺不了錢,而不是因為其指令集在技術上有多差。所以,一個在成熟的設計準則之下開發且設計良好的開源指令集想必能吸引許多供應商長期的支持。[8]
許多先前的開源指令集架構使用GNU通用公共許可協議來鼓勵用戶們允許他們的實現方法被其他人復制或是使用。
設計者們表示,RISC-V指令集是給實際上的電腦使用的,它不像其他學術上的指令集設計,只有為了比較好闡述理念而做優化。而RISC-V指令集有一些功能是可以增加電腦速度又可以減少成本和電源使用。這些特色包含,Load/store架構,在CPU里面的比特表示方法來簡化MUX(數據多任務器),以標準為基礎來簡化的浮點數,架構中立的設計和把MSB(Most significant bit)放到固定位置來加速Sign extension。而sign-extension常常就是靜態時序分析里面的關鍵路徑(Critical timing path)[9]。
RISC-V 指令集是設計來給各式各樣的用途使用的,而它支持三個不同的字組大小,分別是32位、64位、128位以及與這三種字組大小有關的各式各樣的指令子集。而這些指令子集的定義會按照那三個字組大小來做些微的改動。透過這些指令子集的向量處理器與數據中心等級的機柜式平行電腦/平行運算來幫助嵌入式系統、個人電腦和超級電腦。
該指令集采取不固定的編碼長度而且還可以再擴展,因此在未來,還可以一直加入更多比特的編碼方式。該指令集有特別留空間給128位的延伸版本,因為60年的產業界經驗顯示在指令集設計領域里,最無法撤銷的錯誤就是缺少存儲器尋址空間。截至2016年,128位的指令集仍然刻意地維持在沒有定義的狀態,這是因為到現在為止,人們很少有實際上操作這么大存儲器的系統的經驗。[9]
然而,RISC-V也可以拿來做學術上的使用。它擁有簡化的整數指令子集允許學生拿來做基本的練習,而整數指令子集就是一個簡單的指令集架構(ISA)讓軟件可以控制研究上的機器。而不定長度的指令集架構也允許擴展來滿足研究或是學生練習上的需求。[9]分割出來的特權指令集可以支持在不重新設計編譯器的情況下,進行操作系統方面的研究。[10]RISC-V的開放的知識產權允許相關的設計被發布、使用和修改。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的嵌入式研究杂记(1)-RISC-V开源CPU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql中几种插入效率的实例对比
- 下一篇: MySql 清空、删除、截断表时1701