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微信公众号


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