CNRV

为推广RISC-V尽些薄力

View the Project on GitHub

RISC-V 雙周簡報 (2017-12-21)

要點新聞:

群頭閑扯

看技術編輯Bill Wong如何在FPGA上玩轉RISC-V引發的一些思考

Xilinx某關鍵技術專利過期後湧現了大量的FPGA公司,大大小小的很多FPGA公司在努力追趕的同時,在處理器核方面也不得不羨慕Xilinx的MicroBlaze以及Intel(原A廠)的NiosII,畢竟一個處理器生態不是這麽好搞的。

做這期簡報的時候看到了Bill Wong的這篇文章,講如何在一塊時髦的搭載MicroSemi FPGA芯片的開發板上利用其Mi-V系統來構建一個運行在FPGA上的軟核處理器的過程。簡單研究下來,發現MicroSemi這幾年來在RISC-V上的大量投入是值得的,首先你已經能在這個叫做Libero SoC FPGA IDE的軟件裏定制和生成軟核,之後就可以選擇總線上的外設。硬件定制完之後,不用想就你就可以選擇幾款RTOS,比如FreeRTOS,還有快要宇宙無敵的華為出品的輕如牛毛的LiteOS等等。想必接下來就可以開始擼軟件了!哢哢!

這個體驗正大部分傻白甜所需要的啊!

正經一點的問,如果沒有像很多類似MicroSemi這樣的廠商在RISC-V的持續和大力度的投入,RISC-V會不會發展的這麽好?而如果沒有RISC-V這樣開放的指令集和生態,MicroSemi恐怕也需要很多年才能有一個與uBlazeNiosIII媲美的軟核吧。別忘了,SiFive的U54也快要登陸這個平台了,是不是分分鐘要秒MicroBlaze的節奏?(這樣我想起了過去的PetaLinux)

Links: Getting “Creative” with RISC-V

Esperanto Technologies得到業界廣泛的關註

RISC-V最新Workshop的餘溫還未消散,業內不少公司都報導了Esperanto這家公司在RISC-V和AI上的野心。

同樣是前面提到的Bill Wong,在ElectronicDesign網站上發表文章“Leveraging RISC-V for AI and Machine Learning”,他這樣評論Esperanto的16個大核加4096個小核的做法:

These are ambitious goals, but simulations have proven promising in terms of performance and energy efficiency. Esperanto even developed a shader compiler so that the array of RISC-V cores can tackle graphics chores normally handled by a GPGPU.

Having a large array of cores that can run the RISC-V provides a flexible computing platform. Using DSEs allows these to be configured to specific applications spaces while retaining a common programming environment versus more architecture-specific platforms like GPGPUs.

小編也同意粗粒度的計算陣列一定得有得力的自動化工具才有前途,否則就太不接地氣了。

另外一篇由Jim Turley發表在EE Journal上的文章“Another RISC-V Religious Conversion”中,Jim對Dave做了采訪並且做了很多深入的討論。以下是一些有趣的點。

在評估過後,Esperanto的工程師對RISC-V的認識大大超越了他們原先的想象,“不僅僅是簡單而已”。

RISC-V wasn’t even on the shopping list of alternatives, but the more Esperanto’s engineers looked at it, the more they realized it was more than a toy or just a teaching tool. “We assumed that RISC-V would probably lose 30% to 40% in compiler efficiency [versus Arm or MIPS or SPARC] because it’s so simple,” says Ditzel. “But our compiler guys benchmarked it, and darned if it wasn’t within 1%.”

“We realized that the RISC-V guys made a very careful set of tradeoffs. It’s called ‘RISC-Five’ for a reason, not ‘RISC-One or -Two.’ There were four prior generations. About a thousand people contributed to the RISC-V instruction set [versus just one or two companies for the better-known CPUs], and that’s a very nice way of going about things.”

在最後,Dave說除了業界很多工程師的心聲,做了這麽多年的Arm和x86,也是夠了。

As with so many things, there are a lot of unanswered questions about Esperanto, its massively parallel AI processor, and its potential in the market. Even the company’s headcount is a secret. But Ditzel hinted that he’s assembled an all-star team of disaffected CPU designers who’ve been waiting years for a new technical challenge. “We didn’t want to go to our graves leaving x86 and Arm as the last two CPU architectures in the world,” he asserts.

Maybe all the predictions won’t come true. Maybe none of them will. But in the meantime, I’ve seen how RISC-V provides real value to a development team that easily could, and did, design its own CPU from scratch but chose to use the open-source core instead. It’s a testament to RISC-V and its creators and evangelists. Hallelujah.

很多人包括我可能都不了解David Ditzel其人,畢業於Berkeley,參與過SPARC 64-bit ISA的設計,後面創立了全美達(Transmeta)曾經讓Intel也膽戰心驚,他絕對是個業界老兵了。如今他拉了一大票天才投入RISC-V這場革命中,前景如何不得而知,但絕對不可小覷~

Links:

  1. Leveraging RISC-V for AI and Machine Learning
  2. Another RISC-V Religious Conversion

RV新聞

中興微電子加入RISC-V基金會

最新消息顯示,中興微電子(Sanechips)已經於最近以白金會員的身份加入了RISC-V基金會。中興微電子未來能否夠在RISC-V標準制定中發揮作用呢?中興微電子能否借力RISC-V提高自己的競爭力呢?我們拭目以待!也歡迎大家向編輯部爆料哈!

Link: RISC-V Member Directory: Sanechips Technology Co.

技術討論

GCC能夠利用特定處理器的load/store延遲優化程序嗎?

RISC-V的GCC已經支持mtune參數,在該參數中將load/store的代價設定為5(https://github.com/riscv/riscv-gcc/blob/riscv-gcc-7.2.0/gcc/config/riscv/riscv.c#L299),即增加內存指令相對ALU指令的懲罰比重。 不過根據一個GCC維護者的解釋,mtune中的內存訪問代價只被用於指令選取。 即當所有的邏輯寄存器用盡需要將數據暫存入棧(spill),mtune的代價會被用於選擇spill哪一個邏輯寄存器。 而利用內存訪問延遲最有效的方法是在指令調度的時候使用。該方式需要提供一個具體的流水線描述文件。 現在RISC-V,或者具體地說,Rocket處理器還沒有提供。

RISC-V sw-dev上的討論: https://groups.google.com/a/groups.riscv.org/d/msg/sw-dev/E4FYldExpCU/fAcAK6I8BgAJ

徹底分離用戶態(U)和系統態(S)的內存頁表

基於性能考慮,Linux會將一部分的用戶頁映射到系統的內存空間。 這種映射導致了攻擊者可以通過控制用戶頁達到向系統態註入代碼並獲得系統權限。 操作系統的一些特殊功能和殘留編程錯誤,導致操作系統會直接執行用戶頁上的代碼。 這也是被攻擊者利用攻擊操作系統內核的常用手段。

為了阻止此類型的攻擊,RISC-V指令集規定默認情況下,系統態不可以直接執行用戶頁上的代碼。 如果實在需要執行,需要修改該頁上的運行標志位,臨時允許系統態執行,從而顯著降低系統被攻擊的可能性。

現在,有人提出徹底分離用戶態和系統態的內存頁表,即用戶態和系統態有自己獨立的頁表基址和頁表項。 這樣就能更徹底地隔離系統和用戶的內存空間。 不過為了支持此操作,同時支持系統程序為用戶程序拷貝內存頁(比如加載用戶態程序),RISC-V可能需要新的內存訪問指令(看起來不太有希望) 或者支持在必要時系統態和用戶態通過頁表共享用戶頁。 相關討論正在進行中。如果支持該特性,RISC-V將是另一個支持完全用戶和系統頁表分離的指令集。 其安全性想必將大大提高。

相關討論:https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/JU0M_vug4R0/YELX92fIBwAJ

代碼更新

使用硬件支持非對齊內存訪問的處理器必須支持對非對齊地址的原子操作

最近的RISC-V標準修改對非對齊內存訪問部分作出了修改。 現在,如果一個處理器實現支持硬件方式的非對齊內存訪問,那麽該處理器必須支持對於該非對齊地址的所有內存訪問形式,包括LR/SC和AMO的原子操作,而且所有的訪問都是原子操作。 如果一個處理器不支持某一種形式的非對齊訪問,那麽所有類型的非對齊訪問都必須出發非對齊內存訪問異常。 該修改統一了非對齊內存訪問的實現形式:純硬件方式或純軟件模擬方式,而不能混合兩種形式。

該修改引發了一些反對的聲音。 有人認為應當支持非原子的硬件形式的非對齊訪問同時完全禁止非對齊的內存原子操作,也有人認為可以支持非原子的硬件非對齊訪問但是支持軟件形式非對齊原子訪問。 但是後一種情況看起來會造成問題。如果一個非對齊原子訪問和一個非對齊正常內存訪問試圖同時訪問同一個地址,其結果就是不可預知的。 也有人指出,假設硬件能夠完全原子處理所有的非對齊訪問是不切實際的,比如說非對齊發生在頁邊沿,那麽將是非常難以辦到的。

實際上,RISC-V標準並沒有完全限定死。如果一個內存區域的內存屬性被設為不支持原子操作,那麽以上所有的規定都不適用!

Chisel3 完善ScalaDoc文檔

Chisel3的開發人員在逐步完善Chisel的代碼註釋。 這些註釋可以被自動編譯為ScalaDoc,對於使用一般介紹性文檔之外的Chisel3高級特性很有幫助。 現在可以從 https://chisel.eecs.berkeley.edu/api 查看最新版的ScalaDoc。 該網頁也被加到CNRV的資源頁中。

Rocket-Chip 進一步泛化Tile基類

最近的一次Rocket-Chip的代碼修改進一步泛化了hasTile trait的定義,移除Rocket處理器相關的定義。 修改的目的是最終可以實現用類似:

val tiles = rocketTiles ++ boomTiles

的方式實現RISC-V的多異質核平台。

Rocket-Chip的PR #1156: https://github.com/freechipsproject/rocket-chip/pull/1156

實用資料

Micahel Clark 的 RISC-V QEMU Part 1: Privileged ISA v1.10, HiFive1 and VirtIO

rv8的其中一個作者 Michael Clark 最近在SiFive中負責維護 QEMU 的 risc-v port。在這個文檔中,Michael詳細介紹了最近更新的部分。

連結:SiFive blog : RISC-V QEMU Part 1

Palmer的All aboard Part 7:Entering and Exiting the Linux Kernel on RISC-V

Palmer在這篇中,介紹了trap handling, PLIC, 回到user space,以及signal handling的機制。一開始,palmer先介紹risc-v S mode trap handling的機制。這包含幾個部分:

介紹完這些後,Palmer 介紹了目前linux中 trap handling 的實作,像是 do_IRQ(), handle_exception等。在Palmer寫作此文時,core arch 還和特定的driver API綁定在一起,容易造成混亂。因此還需要一些cleanup。

介紹完一般的trap handling後,Palmer介紹了 處理 PLIC 的流程。特點包括:

更多細節或跟signal handling有關的部分,可以參考:All aboard part 7

BSDTW中 Ruslan Bukin 介紹 porting FreeBSD to RISC-V的投影片

在BSDTW中,來自劍橋大學的Ruslan Bukin 詳細的介紹了他將 FreeBSD port到risc-v的過程。整個過程包括 MMU,SMP, DTrace等功能的移植。此外,他還提到了在移植過程中RISC-V架構中兩個棘手的問題,single TP register 以及single page table base。投影片已經公開,之後視頻也會公開,有在做移植的可以參考。

投影片連結:link

CNRV網站更新

暴走事件

十二月

二月

招聘簡訊

寒武紀科技招聘處理器核研發工程師

投簡歷:hr@cambricon.com

招聘廣告:http://www.cambricon.com/zhaoxiannashi/2017/1123/187.html

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


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


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

CNRV微信公眾號


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款授權.