《電子技術應用》
您所在的位置:首頁 > EDA與制造 > 業(yè)界動態(tài) > 大道至簡——RISC-V架構之魂(上)

大道至簡——RISC-V架構之魂(上)

2018-09-13
關鍵詞: RISC-V

  “大道至簡——RISC-V架構之魂”——分成上中下三篇,本文是上篇。關注文末公眾號后可查詢上中下三篇的內容。

  注意:本文中將會多次出現“RISC處理器”或“RISC架構”以及“RISC-V處理器”或“RISC-V架構”等關鍵詞。請初學者務必注意加以區(qū)別:

  RISC表示精簡指令集(Reduced Instruction Set Computer,RISC)。

  RISC-V只是伯克利發(fā)明的一種特定指令集架構(屬于RISC類型)。

  1 簡單就是美——RISC-V架構的設計哲學

  RISC-V架構作為一種指令集架構,在介紹細節(jié)之前,讓我們先了解設計的哲學。所謂設計的“哲學”便是其推崇的一種策略,譬如說我們熟知的日本車的設計哲學是經濟省油,美國車的設計哲學是霸氣外漏等。RISC-V架構的設計哲學是什么呢?是“大道至簡”。

  筆者最為推崇的一種設計原則便是:簡單就是美,簡單便意味著可靠。無數的實際案例已經佐證了“簡單即意味著可靠的”真理,反之越復雜的機器越則越容易出錯。

  所謂大道至簡,在IC設計的實際工作中,筆者曾見過最簡潔的設計實現安全可靠,也曾見過最繁復的設計長時間無法穩(wěn)定收斂。最簡潔的設計往往是最可靠的,在大多數的項目實踐中一次次的得到檢驗。

  IC設計的工作性質非常特殊,其最終的產出是芯片,而一款芯片的設計和制造周期均很長,無法像軟件代碼那樣輕易的升級和打補丁,每一次芯片的改版到交付都需要幾個月的周期。不僅如此,芯片的一次制造成本費用高昂,從幾十萬美金到百千萬美金不等。這些特性都決定了IC設計的試錯成本極為高昂,因此能夠有效的降低錯誤的發(fā)生就顯得非常的重要。

  現代的芯片設計規(guī)模越來越大,復雜度越來越高,并不是說要求設計者一味的逃避使用復雜的技術,而是應該將好鋼用在刀刃上,將最復雜的設計用在最為關鍵的場景,在大多數有選擇的情況下,盡量選擇簡潔的實現方案。

  筆者在第一次閱讀了RISC-V架構文檔之時,不禁擊節(jié)贊嘆,拍案驚奇,因為RISC-V架構在其文檔中不斷地明確強調,其設計哲學是“大道至簡”,力圖通過架構的定義使得硬件的實現足夠簡單。其簡單就是美的哲學,可以從幾個方面容易看出,后續(xù)小節(jié)將一一加以論述。

  1.1 無病一身輕——架構的篇幅

  在處理器領域,目前主流的架構為x86與ARM架構,筆者曾經參與設計ARM架構的應用處理器,因此需要閱讀ARM的架構文檔,如果對其熟悉的讀者應該了解其篇幅。經過幾十年的發(fā)展,現代的x86與ARM架構的架構文檔長達幾百數千頁。打印出來能有半個桌子高,可真是“著作等身”。

  之所以現代x86與ARM架構的文檔長達數千頁,且版本眾多,一個主要的原因是因為其架構的發(fā)展的過程也伴隨了現代處理器架構技術的不斷發(fā)展成熟。

  并且作為商用的架構,為了能夠保持架構的向后兼容性,其不得不保留許多過時的定義,或者在定義新的架構部分時為了能夠將就已經存在的技術部分而顯得非常的別扭。久而久之就變得極為冗長。

  那么現代成熟的架構是否能夠選擇重新開始,重新定義一個簡潔的架構呢,可以說是幾乎不可能。其中一個重要的原因便是其無法向前兼容,從而無法得到用戶的接受。試想一下如果我們買了一款新的搭配新的處理器的電腦或者手機回家,之前所有的軟件都無法運行而變磚,那肯定是無法讓人接受的。

  而現在才推出的RISC-V架構,則具備了后發(fā)優(yōu)勢,由于計算機體系結構經過多年的發(fā)展已經成為比較成熟的技術,多年來在不斷成熟的過程中暴露的問題都已經被研究透徹,因此新的RISC-V架構能夠加以規(guī)避,并且沒有背負向后兼容的歷史包袱,可以說是無病一身輕。

  目前的“RISC-V架構文檔”分為“指令集文檔”(riscv-spec-v2.2.pdf)和“特權架構文檔”(riscv-privileged-v1.10.pdf)?!爸噶罴臋n”的篇幅為145頁,而“特權架構文檔”的篇幅也僅為91頁。熟悉體系結構的工程師僅需一至兩天便可將其通讀,雖然“RISC-V的架構文檔”還在不斷地豐富,但是相比“x86的架構文檔”與“ARM的架構文檔”,RISC-V的篇幅可以說是極其短小精悍。

  感興趣的讀者可以在RISC-V基金會的網站上(https://riscv.org/specifications/)無需注冊便可免費下載其文檔,如圖1所示。

1.jpg

  這里寫圖片描述

  1.2 能屈能伸——模塊化的指令集

  RISC-V架構相比其他成熟的商業(yè)架構的最大一個不同還在于它是一個模塊化的架構。因此,RISC-V架構不僅短小精悍,而且其不同的部分還能以模塊化的方式組織在一起,從而試圖通過一套統(tǒng)一的架構滿足各種不同的應用。

  這種模塊化是x86與ARM架構所不具備的。以ARM的架構為例,ARM的架構分為A、R和M三個系列,分別針對于Application(應用操作系統(tǒng))、Real-Time(實時)和Embedded(嵌入式)三個領域,彼此之間并不兼容。

  但是模塊化的RISC-V架構能夠使得用戶能夠靈活選擇不同的模塊組合,以滿足不同的應用場景,可以說是“老少咸宜”。譬如針對于小面積低功耗嵌入式場景,用戶可以選擇RV32IC組合的指令集,僅使用Machine Mode(機器模式);而高性能應用操作系統(tǒng)場景則可以選擇譬如RV32IMFDC的指令集,使用Machine Mode(機器模式)與User Mode(用戶模式)兩種模式。而他們共同的部分則可以相互兼容。

  1.3 濃縮的都是精華——指令的數量

  短小精悍的架構以及模塊化的哲學,使得RISC-V架構的指令數目非常的簡潔?;镜腞ISC-V指令數目僅有40多條,加上其他的模塊化擴展指令總共幾十條指令。

  2 RISC-V指令集架構簡介

  本章將對RISC-V的指令集架構多方面的特性進行簡要介紹。

  2.1 模塊化的指令子集

  RISC-V的指令集使用模塊化的方式進行組織,每一個模塊使用一個英文字母來表示。RISC-V最基本也是唯一強制要求實現的指令集部分是由I字母表示的基本整數指令子集,使用該整數指令子集,便能夠實現完整的軟件編譯器。其他的指令子集部分均為可選的模塊,具有代表性的模塊包括M/A/F/D/C,如表1所示。

21.jpg

  表1 RISC-V的模塊化指令集

  這里寫圖片描述

  為了提高代碼密度,RISC-V架構也提供可選的“壓縮”指令子集,由英文字母C表示。壓縮指令的指令編碼長度為16比特,而普通的非壓縮指令的長度為32比特。以上這些模塊的一個特定組合“IMAFD”,也被稱為“通用”組合,由英文字母G表示。因此RV32G表示RV32IMAFD,同理RV64G表示RV64IMAFD。

  為了進一步減少面積,RISC-V架構還提供一種“嵌入式”架構,由英文字母E表示。該架構主要用于追求極低面積與功耗的深嵌入式場景。該架構僅需要支持16個通用整數寄存器,而非嵌入式的普通架構則需要支持32個通用整數寄存器。

  通過以上的模塊化指令集,能夠選擇不同的組合來滿足不同的應用。譬如,追求小面積低功耗的嵌入式場景可以選擇使用RV32EC架構;而大型的64位架構則可以選擇RV64G。

  除了上述的模塊,還有若干的模塊包括L、B、P、V和T等。這些擴展目前大多數還在不斷完善和定義中,尚未最終確定,因此本文在此不做詳細論述。

  2.2 可配置的通用寄存器組

  RISC-V架構支持32位或者64位的架構,32位架構由RV32表示,其每個通用寄存器的寬度為32比特;64位架構由RV64表示,其每個通用寄存器的寬度為64比特。

  RISC-V架構的整數通用寄存器組,包含32個(I架構)或者16個(E架構)通用整數寄存器,其中整數寄存器0被預留為常數0,其他的31個(I架構)或者15個(E架構)為普通的通用整數寄存器。

  如果使用了浮點模塊(F或者D),則需要另外一個獨立的浮點寄存器組,包含32個通用浮點寄存器。如果僅使用F模塊的浮點指令子集,則每個通用浮點寄存器的寬度為32比特;如果使用了D模塊的浮點指令子集,則每個通用浮點寄存器的寬度為64比特。


本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。