1. 程式人生 > >RISC-V雙週簡報0x0c:Workshop上乾貨多多(2017-12-07)

RISC-V雙週簡報0x0c:Workshop上乾貨多多(2017-12-07)

RISC-V 雙週簡報 (2017-12-07)

要點新聞:

  • 第七屆RISC-V Workshop在加州成功舉辦
  • 西部資料在RISC-V Workshop上發表其巨集大的構想
  • 下屆Workshop將在明年5月在巴塞羅那舉辦

第七屆RISC-V Workshop專欄

第七屆RISC-V Workshop在加州成功舉辦

7th Workshop at WD

上週在加州西部資料總部舉辦的第七屆RISC-V Workshop非常成功,為期兩天的研討會包含了47個session,以及26個poster/demo session。總共有近500人蔘加,因為安排緊湊,這次甚至取消了提問環節。

下一屆Workshop將於明年5月在巴塞羅那的超算中心舉行,有機會前往的千萬不要錯過。

目前基金會有100個左右會員,其中個人會員在過去半年增長了一倍左右。

更多Workshop的詳細資訊在正式的Video在Youtube上公佈之前,可以參看lowRISC的Alex寫的Blog文章,接下來的簡報也會有更多資訊。

Link:

西部資料在RISC-V Workshop上發表其巨集大的構想

西部資料,一家老牌的資料儲存公司,正在努力的將自身轉變為一家以資料為中心並且提供開放計算平臺和環境的公司。

在Workshop上西數的CTO Martin Fink發表了令人激動的演講,他首先闡明瞭公司的願景,同時表明在其每年出貨的產品中包含了10億個處理器核心。西部資料希望在未來將這些處理器都替換為RISC-V架構的CPU。編者表示這絕對能讓西部資料省下一大筆授權費和版稅。為了實現這個目標,西部資料將全力支援RISC-V標準的發展,且積極的採用相關的技術和產品或者投資相關領域的公司。Esperanto這家做高階RISC-V處理器的公司就是西部資料投資的物件之一。

編者認為這個新聞所帶來的傳播價值遠大於其本身,這向所有對RISC-V持懷疑態度的人們傳達了一個更加積極的資訊,相信能夠讓更多的夥伴加入到RISC-V的這場革命中來。

相關報道見西部資料官文以及福布斯的報道。

Link:

人人都關心的RISC-V Vector-Extension

這次研討會上,向量擴充套件指令級是大家所非常期待和關心的。

Roger Espasa代表基金會的V-ext工作組彙報了當前最新的進展。

他首先談到了V-ext的目標是為了達到更好的能效並且減少指令和記憶體訪問的頻寬,也希望能夠有很強的擴充套件性以支援各類規模的實現,當然深度學習和人工智慧也和這有一定的關係。

工作組希望充分吸取過去的教訓,來定義一種史上最好的向量指令集。這包括充分的可擴充套件性和靈活性,不僅支援標量和向量運算也希望可選的支援矩陣(2D)運算。

當前的草案中包含(最多)32個向量暫存器,數量是可動態變化的。同時每個暫存器的大小也是可變的,甚至可以是一個Matrix,而且有自己的型別定義。

而向量指令則包含一系列的向量運算和記憶體相關操作,很多操作都支援Mask,來使得部分計算變得可能。

工作組希望在下次Workshop前ratified這個擴充套件,同時更加重要的是,他們期待能有志願者來幫助完成LLVM和GCC auto-vectorizer的支援,這裡目前可能還是個空白,並且相信極具挑戰性。如果你有興趣,可以加入基金會和工作組貢獻你的力量。

關於RISC-V 安全擴充套件

研討會上緊隨著V-ext,安全擴充套件工作組也報告了其進展,安全這個議題主要包含隔離和加密兩部分,這次的報告更多的是闡述其加密擴充套件。

值得一提的是,安全擴充套件嚴重依賴正在定製中的V-ext來實現高效的crypto加速,安全擴充套件額外增加了一些如GF操作的指令,配合v-ext來高效的實現加密功能。

再說BOOMv2

BOOM的作者Chris Celio臨近博士畢業,這一次他在另一個同事的幫助下,共同完成了BOOM的改進工作。

BOOM已經去tape-out,整個tapeout的工作僅用了兩個人4個月的時間。這也一定程度上體現了chisel的優勢,當需要對一個複雜的CPU體系架構做優化時,更高階的抽象和優化有效的減少了開發的時間,而且chisel這種開放的平臺可以允許開發者生成各種不同的實現組合,然後通過後期的模擬和評估結果選擇最好的那個。

Chris表示這四個月中大部分的時間都花在物理設計相關的工作上,真正重寫chisel並沒太花時間。

另外Chris Celio已經被Esperanto收入麾下。

Esperanto決心開發高效能的RISC-V處理器

Esperanto這家公司似乎已經低調了數年,在這次Workshop上其決定要更多的出現在公眾視野中。

這家公司希望能夠補足RISC-V目前沒有高效能處理器的這個缺口,並且表示它SiFive並不是他們的競爭對手而更多的是夥伴。

Esperanto釋出了數個處理器開發計劃,並且很多應用涉及了人工智慧等火爆的領域。

ET-Maxion是基於BOOMv2的,並且會為7nm CMOS工藝做優化。

編者評:理想很美麗,現實很骨感,活下去或許最重要!我看好你們!

7th Workshop上的中國聲音

在這次Workshop上,有一個來自AndesTech和兩個來子中科院計算所的演講,分別是:

  • Andes Extended RISC-V Features, Chuan-Hua Chang, Andes Technology
  • Performance Isolation for Multicore within Labeled RISC-V, Zihao Yu, ICT CAS
  • A Tightly-coupled Light-Weight Neural Network Processing Units with RISC-V Core, Lei Zhang, ICT CAS

希望未來能在RISC-V領域聽到更多來自中國的聲音。

RV新聞

RISC-V 的 J extension group

David Chisnall 在isa-dev上公開了J Extension Group的計劃,並徵求夥伴加入。這個 workgroup 將針對 managed, interpreted 和 JITed 的語言,像是 C#, Go, Haskell, Java, JavaScript, OCaml, PHP, Python, R, Ruby, Scala or WebAssembly等,提出擴充套件。

可能的方式包括針對GC(垃圾收集器)和動態記憶體分配的硬體加速,以及對數學運算的overflow處理等。

詳情請參考:連結

Andes 提出 P extension 的 proposal

P擴充套件 (Packed SIMD) 一直是大家關注的焦點,可惜一直沒有一個 workgroup 專門的推動它。最近,Andes在isa-dev上提出了他們的proposal,計劃用他們在AndesStar V3 ISA中針對 DSP和 SIMD 所開發的指令當基礎,來推動P extension。Andes所提出的指令,包括SIMD add,shift, compare等,以及非SIMD的部份,像是packing instruction及HW loop。

更多細節可參考mailing list及Andes提出的proposal:連結

技術討論

RISC-V 記憶體模型草案

nVidia的Daniel Lustig在月初公佈了RISC-V記憶體模型的最新版草案並徵求意見。計劃在意見反饋之後,將記憶體模型草案提交RISC-V基金會討論,並融入正式標準。關心記憶體模型的同學請閱讀草案(見下面連結郵件的附件)並在isa-dev郵件列表上提出意見。

這次的草案進一步細化了RISC-V記憶體模型的定義,包括支援的種類,各種記憶體模型中具體記憶體操作的順序(即硬體必須遵守而不能調整的記憶體訪問順序)。RISC-V記憶體模型支援兩種模式:類似ARM和PowerPC的弱記憶體模型RVWMO和類似Intel x86的強記憶體模型RVTSO。一個架構支援兩種記憶體模型是比較奇怪的,大多數的架構只支援一種記憶體模型。RISC-V的部分使用者(包括nvidia,SiFive和部分ARM處理器的使用者)其實更支援使用類似ARM的弱記憶體模型RVWMO,即使用fence來顯式地強制需要按序執行的記憶體操作,而讓處理器和微架構確定其他的記憶體訪問順序以提高效能和降低功耗。然而,有一部分地x86使用者希望能通過簡單重編譯地方式將原有跑在x86處理器地程式移植到RISC-V處理器。軟體上修改記憶體模型需要手動修改程式碼,現在還不能由編譯器自動完成。這就導致了重編譯地程式預設硬體使用TSO地記憶體模型。 作為折衷,RISC-V記憶體模型草案規定:

  • 處理器硬體實現的記憶體模型不能比RVWMO更弱,但是可以選擇性的變強,可以選擇實現RVTSO。
  • 軟體設計應當儘可能使用RVWMO模型。所有RISC-V的庫、編譯器都將使用RVWMO模型。
  • 軟體可以使用RVTSO模型編譯,但是必須在ELF標註TSO模型。以這種方式編譯的程式只能執行在實現RVTSO的處理器上。
  • 使用RVTSO模型編譯的程式可以連結RVWMO模型的庫。RVWMO模型的fence指令在RVTSO模型的處理器上當作NOP執行。

具體軟體硬體可組合的方式:

RVWMO的處理器 RVTSO的處理器
RVWMO的程式 正常高效執行 正常低效執行
RVTSO的程式 執行出錯 正常執行

由硬體控制的頁表A/D標誌位引發的思考

(小編:這個討論有點發散,不得不驚歎於體系結構還是有那麼多令人糾結的驚人的細節) RISC-V priv spec在頁表的葉子節點(也就是具體記憶體頁的頁表項)上有A(已訪問)和D(已修改)兩個標誌位。RISC-V可以支援硬體或者軟體管理的A/D控制。現在大部分的處理器和作業系統都使用軟體方式,即:出現訪問一個頁而A0的時候或修改一個頁而D0的時候,TLB引發頁錯誤要求軟體修改標誌位。鑑於該操作可能會很頻繁並影響新能,處理器可以選擇使用硬體處理,即TLB直接修改頁表。這裡就引出了好幾個問題:

  • 如果作業系統不知道怎麼辦?作業系統有可能會軟體快取頁表標誌位,完全硬體處理則導致軟體硬體不一致。這個問題還算好解決,硬體處理A/D標誌位的處理器需要在device tree中說明。

  • 為什麼只有葉子節點才有A/D標誌位?中間頁表項也可以設定A/D標誌位。這樣很可能可以在頁表的第二級就發現缺頁。但是維護非葉子節點的A/D標誌位很複雜!

  • 如果硬體修改標誌位,TLB會不會誤改?比如說ITLB的預取指和深流水線。如果解決該問題,那麼所有TLB修改就是個fence了。如果是fence,hypervisor(虛擬層)的行為就不確定了,就不能嚴格重跑了(hypervisor的一個重要功能)。(小編:這些問題,現在看起來,還是很無解)

有副作用的NOP要不要被定義成非法指令?

這是一個有趣的問題。舉個例子,SC rd, rs1, rs2,該指令會檢查之前LR指令加上的鎖是否完好,如果完好,則將rs2的值寫入rs1所指向的記憶體,用rd返回1,否則返回0並不執行寫操作。可是,如果rd是常置0的暫存器x0呢?按標準定義,如果鎖完好,那麼寫操作將會執行,但是x0不能被賦值,所以返回值仍然是0,軟體看見的原子操作失敗。顯然,一個正常的編譯器不會生成這樣的程式碼。

於是,有人提問:

應該把這條指令定義為非法指令嗎?這樣該指令就可以以後被擴充套件為其他指令了啊。

的確啊,該指令沒有什麼合法用途,完全浪費指令空間啊。可是,RISC-V的產生就是為了設計一個對硬體高效同時軟體也高效能的指令集。指令集的一個基本設計思路就是避免將RISC逐步變成一個CISC。這也是為什麼條件執行、多暫存器壓棧等等指令都沒有被標準指令級採納的原因。如果定義該指令為非法指令,硬體上就必須把它當作一個特殊情況處理。這樣的特殊情況多了,RISC-V就變成"CISC-V"了。

AXI4Deinterleaver的用途

Rocket-Chip提供了一個叫做AXI4Deinterleaver模組。該模組用於重排從AXI匯流排到TileLink匯流排的突發報文。AXI匯流排允許兩個多傳輸週期的突發報文互相交疊子週期的傳輸(利用報文的id區分),但是TileLink則不允許一個突發報文被其他報文打斷。為了解決該協議衝突,AXI4Deinterleaver則對多個併發的突發報文經行緩衝再序列傳輸。

程式碼更新

Chisel3 v3.0.0 正式釋出

Chisel3終於正式釋出了。

相比之前的預釋出版本,正式版有一些較明顯的語法變動:

  • 顯式設定訊號的位寬
value.U(width), value.asUInt(width) /* explicit width */
  • 暫存器初始化使用RegInit()RegNext()方法
Reg(init=...) -> RegInit(...)
Reg(next=...) -> RegNext(...)
  • 引入DontCare物件來代表可以不連線的訊號
io.out.debug := true.B
io.out.debugOption := DontCare   // explicit undriven input

{  
  ...
  val nElements = 5
  val io = IO(new Bundle {
    val outs = Output(Vec(nElements, Bool()))
  })
  io.outs <> DontCare  // unload output
  ...
}
  • 支援引數化黑盒子定義。但是黑盒子內部不再支援有任何Chisel硬體邏輯(就是說Chisel3的黑盒子必須是純的框架定義)。
  • 預設時鐘訊號從clk更名為clock
  • 記憶體模組例項化方法引數調整。
  • 增加IrrevocableIO型別。該型別類似於ReadyValidIO,但是valid訊號一旦被置高,在ready為高之前,不能撤回。
  • 重構Chisel3的測試支援。
  • 新添很多實驗特性。
  • 新添多種Module型別,比如支援使用者自定義時鐘復位埠的RawModule型別。

更詳細的說明,請參看Chisel3的釋出宣告

QEMU 的risc-v port 加入了針對priv 1.10的支援及針對SMP的支援

Michael Clark 最近幫 QEMU 的risc-v port 加上了不少功能,包括針對 priv 1.10 丶SMP丶及PLIC的支援。為了支援還未升級的軟體,舊有針對 priv 1.9.1 的部份仍被儲存。

更多細節可參考 pull request 71

暴走事件

十二月

  • RISC-V Day 2017 Tokyo 2017年12月18日,在東京會有一場跟 RISC-V有關的活動,由日本SHC公司主辦。SHC公司也是基金會的其中一個成員。Esperanto, SiFive, Andes, RedHat等公司的人員都會參加並給演講。

二月

  • FOSDEM’18 2018年2月3-4日,FOSDEM (Free and Open Source Developers’ European Meeting)將在比利時的布魯塞爾舉行。

  • PULP WORKSHOP AT HPCA2018 2018年2月25日,在維也納的HPCA中,會有一場跟Pulp 有關的workshop。PULP小組會介紹PULP最新的發展,和他們未來的走向,包括 PULP-CAPI (Coherent Accelerator Processor Interface) 和 Ariane (Next generation of 64-bit RISC-V implementations)等。詳情可參考 pulpino mailing list 中的 < PULP newsletter - 4Q2017 >。

招聘簡訊

CNRV提供為行業公司提供公益性質的一句話的招聘資訊釋出,若有任何體系結構、IC設計、軟體開發的招聘資訊,歡迎聯絡我們!

整理編集: 宋威、黃柏瑋、郭雄飛

歡迎關注微信公眾號CNRV,接收最新最時尚的RISC-V訊息!

CNRV微信公眾號