RISC-V双周简报0x1b:RISC-V Day Shanghai精彩回顾(2018-07-08)

原文出处:https://cnrv.io/bi-week-rpts/2018-07-06

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 Workshop Chennai: https://tmt.knect365.com/risc-v-workshop-chennai/

之后RISC-V Day Tokyo将于10月18日在东京的Keio University举办,演讲征集已经开始,同事也欢迎参会。

注册地址:RISC-V Day Tokyo: https://tmt.knect365.com/risc-v-day-tokyo/

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)

Link: Introducing The New IP Series By SiFive

编辑:郭雄飞

技术讨论

直接缓存操作(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

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。

项目地址:https://github.com/chenhaoc/cnnhwpe

有意者请联系: [email protected] [email protected]

CNRV提供为行业公司提供公益性质的一句话的招聘信息发布,若有任何体系结构、IC设计、软件开发的招聘信息,欢迎联系我们!


整理编集: 宋威、黄柏玮、汪平、林容威、傅炜、巍巍、郭雄飞、黄玮


欢迎关注微信公众号CNRV,接收最新最时尚的RISC-V讯息!

CNRV微信公众号


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。

猜你喜欢

转载自blog.csdn.net/zoomdy/article/details/82911675