要点新闻:
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 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。
带区间的数据fence。
带区间的指令fence。
预取 -
数据预取。这里的数字标明预取数据的时间局部性(temporal locality),3表示非常频繁使用。
预取数据并获得可写权限。
欲取数据并暗示只读一次(assistant cache)。
提示预取器按流的方式预取一个数据区域。
预取指令。
缓存锁定(把部分缓存的区域变成scratchpad)
锁定数据区域。被锁定的数据如果发生更新,缓存可以选择将数据写回内存。如果写回操作出错,并不改变缓存的锁定状态。这样就可以支持映射到ROM区间的缓存锁定。
解锁数据区域
锁定指令区域,(Machine mode only)。
解锁指令区域,(Machine mode only)。
缓存清理(flush)
强制写回缓冲区域(但不失效)。
清除缓冲区域(写回并失效)。CACHE.FLUSH == CACHE.WRITEBACK + MEM.DISCARD
其他破坏性缓存操作
直接失效缓存区域(数据丢失,用于抛弃无用数据而避免写回)。
为写操作直接初始化缓存区域而不读取数据(已知数据会被彻底覆盖时,可以直接创建缓存数据同时标记已修改),在MEM.REWRITE和内存写操作之间如果发生对该区域的数据发生读操作,并且该数据不在缓存内,返回全0或全1的值,防止侧信道攻击(读取该地址的原有数据)。
具体的讨论可着重看这么几段:
第3版初始提议
Allen Baum的总结
第4版初始提议
第5版初始提议
第6版初始提议
fix gcc for special bit-manipulation (修复gcc对特殊位操作指令的编译)
在RISC-V ISA Dev讨论组询问RISC-V中是否有位操作的指令,认为在嵌入式中位操作指令比较重要,可以减小应用程序的体积。但当前在RISC-V标准中没有位操作专用的指令,只能通过掩码和AND指令来实现对寄存器特定位的修改
RISC-V确实有计划加入位操作相关指令,而且成立了相关工作组,但是原工作组的领导是AMD的雇员, AMD由于拒绝签RISC—V基金会成员平等条约而退出,导致工作阶段成果不公开和google讨论组关闭。后面经过社区努力后重新开放了相关的工作成功,社区继续开始相关的工作。
当前risc-v还没有位操作指令,但社区提出了在现有指令的基础实现位操作减少指令长度的办法,同时发现了在编译类操作功能代码时存在不是最精简编码的问题,并由进行了修复。
讨论中提到了各种主流架构的i386, amd64, Thumb2, ARM, Aarch64, sh4, m68k对位操作的处理情况
领取专属 10元无门槛券
私享最新 技术干货