1. 程式人生 > >RISC-V雙週簡報0x1b:RISC-V Day Shanghai精彩回顧(2018-07-08)

RISC-V雙週簡報0x1b:RISC-V Day Shanghai精彩回顧(2018-07-08)

RISC-V 雙週簡報 (2018-07-06)

要點新聞:

  • RISC-V Day 2018 Shanghai圓滿成功
  • SiFive釋出新E2系列CPU IP擴充其產品線

RV新聞

RISC-V Day 2018 Shanghai圓滿成功

2018年6月30日,在復旦大學舉辦了RISC-V Day 2018 Shanghai活動,短短為期一天的研討會包含17個演講,共有約340人蔘會,分別來自120家國內外公司、26所科研院所和大學。

這次會議上,我們能夠看到很多國內的半導體和軟體力量在RISC-V領域已經找到自己的位置。在各各廠商紛紛PK自己CPU Core和軟體解決方案的背後,是整個RISC-V生態系統的逐漸成熟。相比於過去較為封閉的CPU IP市場,RISC-V的這個平臺為使用者提供了諸多

相信願意花時間同學來參與的,都收穫了不少新的朋友。

RISC-V Day All Speakers

感謝所有講者和工作人員辛勤的付出!

RISC-V Day All Speakers

RISC-V Day Tokyo和RISC-V Chennai Workshop

RISC-V Chennai Workshop將於本月17-18號在印度城市金奈舉辦,現在註冊還來得及哦~

之後RISC-V Day Tokyo將於10月18日在東京的Keio University舉辦,演講徵集已經開始,同事也歡迎參會。

SiFive釋出新E2系列CPU IP擴充其產品線

在最近舉行的RISC-V Day Shanghai活動上,來自SiFive的VP Jack Kang釋出了他們最新的E2 CPU IP系列,這個系列主打低端MCU市場。

E2系列目前提供兩個全新設計的核心,分別是E21和E20。E20主打高效率,對標Cortex-M0+;而E21則功能全面,對標Cortex-M4。

E2系列的一些特性:

  • 2-3級流水線,1-2個匯流排介面可配置
  • 支援Fast Interrupt,6個時鐘週期即可進入C程式
  • 支援TIM(緊耦合的儲存器)
  • 支援RV32IMACF標準
  • 高度可定製(FPU、可調優的乘法器、記憶體保護等)

在同等GCC引數下:

  • E21 is 12% higher performance per MHz vs Cortex-M4 in CoreMark
  • E20 is 28% higher performance per MHz vs Cortex-M0+ in CoreMark

在E2加入SiFive的IP核系列以後,SiFive自身的產品線已經能夠初步滿足各領域的應用,分別是:

  • 微控制器(Microcontrollers)
  • 嵌入式處理器(Embedded)
  • 可執行Linux作業系統的應用處理器(Application/Linux Cores)

編輯:郭雄飛

技術討論

直接快取操作(explicit cache control)指令提案

直接快取操作(explicit cache control)指令提案 (第3版, 第4版, 第5版, 第6版)

繼3月份提出的第5版提案,Jacob Bachmeyer 提出了直接快取操作指令的第6版!相比第5版,第6版更新了很多指令的描述,更加明確了pinned cachelines (鎖定快取構造臨時scratchpad)的操作,然後明確定義MEM.RWRITE操作應當返回確定的常數(防止側通道攻擊),併為MEM.PF資料預取操作添加了流預取方式。

第6版中的指令定義:(有區別的加粗)

  • FENCE(有的架構也叫barrier)
    • FENCE.I 原有的指令fence。
    • FENCE.RD {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000010} 帶區間的資料fence。
    • FENCE.RI {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000011} 帶區間的指令fence。
  • 預取
    • MEM.PF(0-3) {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001000} {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001001} {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001010} {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001011} 資料預取。這裡的數字標明預取資料的時間區域性性(temporal locality),3表示非常頻繁使用。
    • MEM.PF.EXCL {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001100} 預取資料並獲得可寫許可權。
    • MEM.PF.ONCE {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001101} 欲取資料並暗示只讀一次(assistant cache)。
    • MEM.PF.STREAM {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001110} 提示預取器按流的方式預取一個數據區域
    • MEM.PF.TEXT {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0001111} 預取指令。
  • 快取鎖定(把部分快取的區域變成scratchpad)
    • CACHE.PIN {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0010000} 鎖定資料區域。 被鎖定的資料如果發生更新,快取可以選擇將資料寫回記憶體。如果寫回操作出錯,並不改變快取的鎖定狀態。這樣就可以支援對映到ROM區間的快取鎖定。
    • CACHE.UNPIN {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0010001} 解鎖資料區域
    • CACHE.PIN.I {opcode, funct3, funct7, MODE} = {$MISC-MEM, $REGION, 7'b1010000, 2'b11} 鎖定指令區域,(Machine mode only)。
    • CACHE.UNPIN.I {opcode, funct3, funct7, MODE} = {$MISC-MEM, $REGION, 7'b1010001, 2'b11} 解鎖指令區域,(Machine mode only)。
  • 快取清理(flush)
    • CACHE.WRITEBACK {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000100} 強制寫回緩衝區域(但不失效)。
    • CACHE.FLUSH {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000101} 清除緩衝區域(寫回並失效)。 CACHE.FLUSH == CACHE.WRITEBACK + MEM.DISCARD
  • 其他破壞性快取操作
    • MEM.DISCARD {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000110} 直接失效快取區域(資料丟失,用於拋棄無用資料而避免寫回)。
    • MEM.REWRITE {opcode, funct3, funct7} = {$MISC-MEM, $REGION, 7'b0000111} 為寫操作直接初始化快取區域而不讀取資料(已知資料會被徹底覆蓋時,可以直接建立快取資料同時標記已修改), 在MEM.REWRITE和記憶體寫操作之間如果發生對該區域的資料發生讀操作,並且該資料不在快取內,返回全0或全1的值,防止側通道攻擊(讀取該地址的原有資料)

具體的討論可著重看這麼幾段:

fix gcc for special bit-manipulation (修復gcc對特殊位操作指令的編譯)

Gnanasekar R在RISC-V ISA Dev討論組詢問RISC-V中是否有位操作的指令,Gnanasekar R認為在嵌入式中位操作指令比較重要,可以減小應用程式的體積。但當前在RISC-V標準中沒有位操作專用的指令,只能通過掩碼和AND指令來實現對暫存器特定位的修改

RISC-V確實有計劃加入位操作相關指令,而且成立了相關工作組,但是原工作組的領導是AMD的僱員, AMD由於拒絕籤RISC—V基金會成員平等條約而退出,導致工作階段成果不公開和google討論組關閉。後面經過社群努力後重新開放了相關的工作成功,社群繼續開始相關的工作。

當前risc-v還沒有位操作指令,但社群提出了在現有指令的基礎實現位操作減少指令長度的辦法,同時發現了在編譯類操作功能程式碼時存在不是最精簡編碼的問題,並由Jim Wilson進行了修復。

討論中提到了各種主流架構的i386, amd64, Thumb2, ARM, Aarch64, sh4, m68k對位操作的處理情況

相關連結:

Another Intel “optimisation” (intel優化導致的漏洞)

有使用者在“RISC-V ISA Dev”討論組在討論組詢問關於intel的編號為:CVE-2018-3665 的漏洞是否對risc-v產生影響研究人員在intel x86發現一個由於浮點狀態延遲儲存和讀取引起的漏洞,該漏洞通Meltdown一樣,是在分支預測執行時觸發的。對於Enterprise Linux使用者,該漏洞預警到一個很高的級別,同時只是在intel x86 CPU中存在的漏洞,在AMD中並不存在該漏洞。相關的細節參看

該漏洞需要重新設計處理器才能完美修復。Intel官方也給出了臨時的修復方法:

If an XSAVE-enabled feature is disabled, then we recommend either its state component bitmap in the extended control register (XCR0) is set to 0 (e.g. XCR0[bit 2]=0 for AVX, XCR0[bits 7:5]=0 for AVX512) or the corresponding register states of the feature should be cleared prior to being disabled. Also for relevant states (e.g. x87, SSE, AVX, etc.), Intel recommends system software developers utilize Eager FP state restore in lieu of Lazy FP state restore.

這個漏洞會在RISC-V產生影響嗎?

從RISC-V特權文件中可以看到,RISC-V的FPU(Floating Point Unit)也是支援延遲切換的。但是觸發這個漏洞的罪魁禍首不是FPU的延遲切換,而是一個在處理器設計中濫用延後預測導致的。可以稱之為是在已經不再使用的功能模組或者暫存器中的資訊洩露的漏洞。

需要明白的是,若是因為這個漏洞從而禁用延遲切換被認為是是武斷的、撿了芝麻丟了西瓜的行為。

相關連結:

與SFENCE.VMA的互操作問題(Question on interactions with SFENCE.VMA)

以下資訊源自GitHub的 #204 issue中, Alexandre Joannou和Andrew Waterman的互動:

對於當前指令集手冊中關於SFENCE.VMA的部分可以做如下解讀:

  1. 對記憶體中的PTEs進行寫操作需用SFENCE.VMA進行同步;
  2. 對PMP CSRs進行寫操作需用SFENCE.VMA進行同步;
  3. 對satp CSR進行寫操作無需使用SFENCE.VMA進行同步(即,緊跟在使能轉換的寫satp操作後的那條指令的取指地址是會被轉換的)。
  4. 對PMP CSRs進行寫操作需顯式的同步,而對satp的操作則不需要,暗示著某種微架構支援(可能是一種在大多數實現中的流水線阻塞)

從描述上來看,為什麼對PMPs的操作描述相較於satp“沒有那麼嚴謹”?

  • Andrew Waterman 認為這是為了更容易使用快取標籤和TLB等機制來實現對PMPs的快取,而satp本身則不被快取。

一種相關的硬體行為描述如下:某些有效的PTEs已被快取在系統中,此時更新PMP使那些PTEs無法再被訪問。儘管如此,這些PTEs依然可以被命中,直到一個SFENCE.VMA指令(rs1=x0,rs2=x0)的執行。

  • Andrew Waterman 認為Alexandre Joannou描述的這種硬體行為是正確的。

因缺斯汀

Arm最近釋出了一個新的網站www.riscv-basics.com,來向大家介紹像RISC-V這樣的開源指令集如何不靠譜。

業內普遍將這個訊號解讀為:“Arm已經開始正視RISC-V帶來的威脅並做出反應”。

以下為這個網站的原文。

Five Things to Consider before Designing a System-on-Chip

The instruction set architecture (ISA) is the foundation of all chip or System-on-Chip (SoC) products. It is therefore one of the most fundamental design choices you will make. If you are considering using an open-source ISA, such as RISC-V, it is critical to understand the key factors you should consider as part of your go-to-market strategy.

  1. Cost: Open-source instruction set architectures, such as RISC-V, hav no license fee and currently no ongoing royalty model, but the instruction set architecture (ISA) is only the foundation of a RISC processor implementation. The cost of licensing any RISC ISA accounts for a small fraction of the total design-to-delivery investment required to create a commercial processor.
  2. A Large supportive ecosystem: it is important an architecture is well supported by a global, mature ecosystem of partners offering a diverse range of software, services and design support. This guarantees market choice, product quality and an optimal time to market. RISC-V ecosystems have not yet reached this stage of development.
  3. Fragmentation risk: The RISC-V instruction set architecture allows IP vendors to add private extensions. This means each implementation may be different or customized. The fragmentation effect makes it more difficult for an ecosystem to coalesce around is ISA.
  4. Security: Cyberthreats mean that robust chip security cannot ever be optional. RISC-V based products are relatively new and have yet to benefit from years of scrutiny from partners and industry experts.
  5. Design assurance: Verification and validation of processor designs can consume 75% of total design time. Modifying an instruction set architecture, as is possible with RISC-V, means expensive re-validation of the central processing unit (CPU or processor) and customization of software tooling. The adds to design costs.

Whether you are looking to create a chip from scratch or looking for a complete solution, take advantage of an architecture that has been tried and tested in more than 125 billion chips and already in processor designs licensed by more 500 partners. Get started with Arm DesignStart – the fastest, simplest route to proven IP.

另外,有不知名的朋友也開闢了未完成的網站:Arm Basics,該網站利用Github Pages搭建,網站主頁號召大家向其提交Pull Request來提出自己的看法。

Links:

暴走事件

2018年7月

2018年10月

  • 2018年10月18日, RISC-V Day Tokyo將在Keio University舉辦,演講徵集已經開始。註冊網站

2018年12月

招聘簡訊

CNN-HWPE召集合作開發者

CNN-HWPE是一個基於RISC-V的CNN加速協處理器,目前實現在蜂鳥的EAI介面上。該專案目前尚未完工,需要尋求社群中的愛好者(尤其歡迎有興趣有時間的在讀學生)來完成這個開源的的AIoT平臺。 具體工作:將蜂鳥和CNN-HWPE燒錄到開發板中(比如perf-v開發板),通過彙編用例測試,完成一個完整的demo。

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

整理編集: 宋威、黃柏瑋、汪平、林容威、傅煒、巍巍、郭雄飛、黃瑋

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

CNRV微信公眾號