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