CNRV

关注RISC-V和Chisel以及开源IC和EDA在中国的发展

View the Project on GitHub

RISC-V 双周简报 (2019-01-14)

要点新闻:


RV新闻

上海市继续支持RISC-V研发企业

新年新气象,2019年1月9日,上海市经济信息化委员会发布了《上海市经济信息化委关于开展2019年度上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目申报工作的通知》。

本次软集项目专项资金支持中RISC-V相关的支持政策依然在列。

一、集成电路(通用型芯片)

4、新型指令集架构芯片研发及产业化

支持基于RISC-V指令集架构的相关芯片研发及产业化,内核需拥有自主知识产权。

本次网上申报的受理时间为2019年2月18日10时至2019年3月1日16时。

Link: 沪经信委相关页面

BlueSpec发布其开源RISC-V核心Flute

BlueSpec开源了其最新的基于BSV的5级流水线RISC-V处理器。未来似乎还会发布一款更深流水线的乱序发射处理器。

Bluespec, Inc. releases a second family of open-source RISC-V processors to spur open innovation:

  • New Flute RISC-V processor is easily customized for IoT
  • RISC-V is ushering in a new era of processor innovation
  • Download a 32-bit or 64-it RISC-V core now via the link below:

Flute is one of a family of free, open-source RISC-V CPUs created by Bluespec, Inc.

  • Piccolo: 3-stage, in-order pipeline
  • Flute: 5-stage, in-order pipeline
  • Bassoon: deep, out-of-order pipeline [Coming!]

Links:

RISC-V在印度报道两则

两则和印度最近在RISC-V方面的进展相关的消息。

之前印度IIT-M的Shakti处理器去年在Intel的Tapeout,同时一些消息也表明印度正在将其用于如核反应堆等领域中(这无可厚非)。新闻显示这颗处理器目前也在印度国内的Fab Semi-Conductor Laboratory (SCL) Tapeout,隶属于ISRO(Indian Space Research Organizations)。

Links:

技术讨论

Spike 的 TLB 刷新

Spike (riscv-isa-sim) 在 RISC-V 的 compliance test-suite 完成之前,是 RISC-V 指令集的规范实现(Golden Model)。 一些 RISC-V 研究者必然会使用 Spike 来研究 RISC-V 指令集。 然而,Spike 毕竟只是一个指令级别的仿真器,而并非一个处理器实现,不能完全通过 Spike 来猜测实际 RISC-V 处理器的行为。 比如,最近有人问,为什么 Spike 会频繁刷新 TLB 呢,很多 TLB 的刷新都是不必要的啊?

其实,Spike 的 TLB 并不是真实的硬件 TLB,而是一个软件的地址翻译缓存,将 RISC-V 的地址直接翻译成仿真主机的虚拟内存地址,从而避免仿真过程中的内存权限检查、硬件TLB查找、页表查询等等。 实际上,Spike 的行为级缓存也只是缓存访问的统计单元,并不真实存储任何缓存数据,而不支持任何一致性操作。

由于 Spike 的 TLB 绕过了权限检查,Spike 需要在执行权限改变、 修改 MSTATUS CSR 和修改 SATP CSR 时刷新 TLB。

在执行权限修改时,由于不同优先级可使用不同的虚拟空间(甚至关闭虚拟内存),TLB 中保存的地址翻译可能失效。

在修改 MSTATUS CSR 时,对于页表特权比特的解释可能通过 MXR, MPRV+MPP 等配置组合改变,因而也需要刷新 TLB。

在修改 SATP CSR 时,虚拟地址可以在 Sv32/Sv39/Sv48/Bare 之间变化,因而也会导致 TLB 失效。

无特权的 WFI 指令

Allen Baum 在 RISC-V ISA Dev 邮件列表里表示,期望有用户模式下(User mode)的 WFI(Wait For Interrupt)指令。他认为有些情况下(尤其是微控制器 microcontrollers)只存在一个任务(或当前活跃 active 的任务只有一个)。此时用户程序可能需要确切地执行 WFI 指令,即使系统并不支持用户模式中断(即N-扩展模式)。

Liviu lonescu 也提议把从特权规范(privileged specs) WFI 分离出来放到基本的用户 ISA 里 https://github.com/riscv/riscv-isa-manual/issues/275 。

Waterman 回应说,也有人请求有一条示意暂停(“PAUSE” hint)的指令。不像 WFI,PAUSE 确保不会延迟执行超过一个短的、有限制范围的时间(a short, bounded time)。这样对于用户模式(U-mode)是安全的,适合于例如等待自旋锁(busy-waiting on a spinlock)的情形。PAUSE 和用户模式(U-mode)的 WFI 部分重叠,WFI 也只有在该中断事件正好是该用户程序正在等待的时候用才合适。

Michael Clark 表示,类似于 CSRs 里面的计数器使能寄存器(counter CSR enables),可以把特定的指令在用户模式下屏蔽掉(即用户模式不能使用该指令),也可以允许使用越过特权范围的指令。(译者注,通过配置该寄存器,可以让低权限模式下,比如用户模式 U-mode,可以执行更高模式下的指令,比如管理员模式 S-mode)。 FENCE_I 就属于这种类型的指令。如果算上 cache 控制指令的话它们也在这个范畴,也就是那些由操作系统的策略决定使用权限的指令。 在 iOS 里,FENCE_I 是被禁止使用的,因为苹果在加载指令和加载数据之间通过特权级来维持一个哈弗类型(Harvard-Style,即把指令和数据隔开)的界限。这是通过页表(page tables)来强制执行的。例如,MAP_JIT (动态映射指令)就只能被 Apple 的代码(特权代码)使用。FENCE_I 打破了它们的界限,但是该问题在其他使用可读不可执行(R^X)的操作系统不存在。(小编:因而,操作系统需要能够有方法控制这些特权指令的使用。)

Samuel Falvo 从系统内核的角度考虑,认为用户层的 WFx 类指令没有实质意义,只会徒增编写内核的复杂性。对于多任务内核来说,把用来等待的指令放在用户层会使得事件密集(event-bound)进程或线程变成 CPU 密集(CPU-bound,即大量占用 CPU 资源)的进程/线程。如果大量的用户层线程开始等待事件,CPU 将会一直空转。

举个例子,当 WFE (Wait for event 等待事件)造成硬件线程A(小编:硬件线程,在软件中视为一个处理器核)阻塞时,硬件可以调度另一个硬件线程B运行(小编:假设支持双硬件线程的处理器核,类似Intel的SMT)。但随后A的时间片到期,发生了抢占,导致另外一个线程使用硬件线程A(小编:在A上发生了因时间片导致的软件线程切换)。当A正在执行其他的软件线程时,最初发出 WFE 的线程所等待的事件发生了。这种情况怎么处理呢?如果该事件调用引发了中断响应,该线程所做的已经妨碍了内核,让它不能准确地计算该线程真正的 CPU 使用率,错误地抬高了 CPU 使用率的报告。在(性能)开销方面,WFE没能节省什么(开销)。在只有一个硬件线程的系统里(大部分情况下跑的是微控制器的应用程序),支持用户态WFE不仅仅是从统计的角度把 IO 密集(IO-bound)的进程变成 CPU 密集(CPU-bound)的进程,在代码执行方面也是如此(因为只用一个硬件线程,没有其他的硬件线程可供软件线程使用)。如果该事件被忽略,随后当最初的线程被重新调度执行时,还是会重新执行 WFE 指令,错过了最初的事件,然后该线程的推进被减慢甚至在极端情况下被阻断。系统可能有一个类似 VMS-/AmigaOS 的事件掩码寄存器被 WFE 用来追踪事件,但这非常类似中断被禁用(对,WFI 仍能适用这种情况)。那么,这只是在没有必要地在 CSRs 和指令上浪费硬件资源。在每个情况下,我都没看到收益而是损耗。

Allen Baum 又再次强调,现在的标准定义 TW 位来允许虚拟机有选择地把 WFI/WFE 当成有权限的对待。同样地扩展成让操作系统选择是否让用户模式有权限执行这些指令,也给操作系统这个选择权。如果操作系统不支持这些实现,现在(已经定义)的 TW 位可以用来选择是否在用户模式下有权限执行这些指令。

Waterman 对此表示部分赞同。对于只支持的 Machine 和 User mode 的情况, mstatus CSR 寄存器的 TW 位确实是一种有效机制决定是否允许 WFI 在用户模式下执行。他会提议修改标准这么做,同时保持向后兼容。但对于支持 Machine、Supervisor 和 User 模式的情况,是否为此多花在 sstatus CSR 寄存器上多花一个位来做此事还得在三考虑。如果此事很重要,之后作为扩展再添加进来也很容易。对于目前的情况, U 模式调用 S 模式的i指令,请用 ECALL。

代码更新

coreboot最新进展

HardenedLinux社区对于RISC-V硬件上运行自由固件项目coreboot的尝试开始于2017年,在HiFive1的PoC成功后,我们在等待实际能运行GNU/Linux的硬件的同时也在研究基于RISC-V特权指令级v1.10版本的RV64架构,直到第一款能运行GNU/Linux的开发板HiFive Unleashed的发布,之后进行了更多的测试。HiFive Unleashed的内存初始化代码公开后,完全开放并且可审计的blobless的自由固件成为了可能,此后HardenedLinux社区参与到了自由固件黑客们的工作中,到目前为止基础代码框架(DRAM/OTP/PHY初始化,异常处理,多核处理,SPI Flash初始化等)已经完成,更多的特性还在持续的推进到coreboot上游中,coreboot社区对类似x86的SMM并不喜欢,但安全加固中的enclave方案和固件运行时服务对于某些场景是刚需,未来可能会以BSD许可证的库来实现相关payload。近日,HardenedLinux基于最新的社区版本发布了一个可以在HiFive Unleashed上运行GNU/Linux的coreboot版本,可以参考文档进行操作(中文版)。

安全点评

KeyStone Enclave点评

Keystone enclave于2018年12月正式开源后,其作者之一Dayeol Lee在RISC-V Summit 2018上进行了详细的介绍,Keystone enclave是基于早前的MIT Sanctum,对于Sanctum的软件部分做了很多扩充和改进使其通用性大幅度提升,但Keystone并没有考虑通用的基于PUF/TRNG设计的RoT的部分,信任根的方案Keystone目前只计划预留接口而非实现,这样一方面可以适配更多的RISC-V硬件平台,另外一方面也大大降低了工程复杂度可以让厂商在不修改硬件设计的情况下完成Enclave方案,而信任根作为可选部分直接沿用Sanctum的的方案,Enclave的基础页表管理依然是操作系统完成(跟SGX一样),由运行于M模式的安全监控器完成enclave的创建,操作系统可以请求安全监控器创建更多的enclave,而数量则受限于PMP的条目数,和常规enclave设计类似,异步退出必须由安全控制器的SBI call完成,而在执行enclave时进入未信任区域安全控制器会在之前改变权限。封闭的厂商实现Intel SGX漏洞百出,我们需要更多像Sanctum/Keystone这样的开放且可审计的enclave方案。

实用资料

开放指令集与开源芯片发展报告

2019年1月11日,中国开放指令生态(RISC-V)联盟发布了其调研编写的《开放指令集与开源芯片发展报告》。

开源RISC-V硬件和安全

2018年12月12日,半导体工程(Semiconductor Engineering)发布了一篇对RISC-V安全工作小组核心成员(Joseph Kiniry, Helena Handschuh 和 Richard Newell)的访谈报道。

半导体工程: 开源硬件是否更加安全?还是说它其实向更多的网络罪犯们暴露了现有的硬件漏洞?

Handschuh: 开源之后,大家可以有机会来审查硬件,提出看法,并反馈给社区。这样,即使不能更快,我们也一定能可以更好地发展(安全硬件)。开源带来了更多的参与者。每一个人都可以i提出建设性的意见,这样我们才能做得更好。这就意味着,我们从一个开放和发表了的设计作为起点,但后不断演进,添加新东西并发布白皮书。

半导体工程: 如果大家都将改进回馈给社区,那当然是很好的。但是,如果黑客发现了漏洞,他们不一定会公布这些漏洞。所以,开源让所有人都看见了实现细节。和基于商业指令的闭源系统相比集相比,(RISC-V的开源实现)是不是会不安全?

Newell: 我们有很多办法来分析这些。形式验证就是一个好办法。让众多的人去审核代码也是个好办法。我们已经有了一个形式化工作小组来提供指令集的形式化接口描述。同时类似微内核的系统已经可以形式化验证。但是,一旦操作系统大刀了Linux的级别,我们将不可能修复所有的bug。如果你看机顶盒,很多的攻击是基于对系统的逆向解析的。从这个角度说,我们会需要使用秘密来增加黑客的攻击难度。

Handschuh: 商业设计其实也有同样的问题。这种情况出现过很多次了:一个问题被发现了,然后大家提交了无效的补丁或者补丁严重影响了性能。RISC-V将会遇到同样的问题,同时修改硬件本来就很困难。但是,(因为开源)我们大家还是会好过一些。厂商能互相学习并修复问题,那么下一次就会更好一些。相比发现了一个问题但是没有人知道怎么解决(闭源),开源和开放终归是好。

半导体工程: 现在有一些言论,说RISC-V更安全一些是因为RISC-V的处理器没有预测执行和分支预测。这是真的吗?

Handschuh: 我们非常努力地去简化设计,并使用简单的硬件根认证去辅助对安全部分的执行。只要这些简单保护不被滥用,它们还是很有效的。限制设计的复杂度并简化设计,让人们能够容易理解内部行为,对安全执行是有帮助的。

市场相关

搭载黄山一号的终端产品今年面世

华米的基于内嵌RISC-V处理器的终端产品(很有可能是手环)将于今年面试。

Link: 华米:“黄山1号”芯片终端2019年问世

花边

MIPS r6开放计划引起广泛关注

if you can t beat em join em

而EEJournal给了的文章引语是“如果你不能打败他,那么就加入他”。通篇对于MIPS的开放更多的视为一种商业行为。

Wave’s real goal is to sell its AI chips and license its proprietary AI technology, and the MIPS CPU underpinning all of that is just a means to an end. It’s not quite the old razors-and-blades strategy; more like giving away the cupcake but selling the frosting.

The upshot for SoC designers is that MIPS is about to become a free and open-sourced CPU architecture, just like RISC-V. Like RISC-V, you’ll be able to download all the MIPS technical specifications and design your own MIPS-compatible processor. And, also like RISC-V, there will be a few freely available hardware implementations as well. For the first time in over 20 years, you’ll be able to design and build a MIPS-based device with no up-front licensing fees and no royalties. It’s all the MIPS goodness without the cost.

Well, sort of.

Not all things MIPS will be free, and not everything is going to be available. Unlike RISC-V, which was created to be a teaching tool and then morphed into a community-owned microprocessor, MIPS still has commercial roots, and its owners still intend to make money from it. Just not in the same way as before.

The Register最近给予了CPU很多的关注。在采访Art Swift时,关于一些License、商标、专利等问题时,Art说道:

Swift declined to specify the license under which MIPS will be offered. But he characterized it as a “simple, non-royalty bearing license,” one that doesn’t include a requirement to make core designs available to the community.

Given that and the registration requirement, the MIPS Open Initiative sounds more like source-available than open source.

Those wishing to use the MIPS logo and to enjoy the shelter of the MIPS patent portfolio will need to seek certification, for which there will be a yet-to-be-determined fee. “If you want to maintain patent coverage, you need to certify your implementation,” said Swift. “If you don’t, you’re on your own.”

DataCenter的Christine Hall和其他人一样,都提到了RISC-V的兴起给传统厂商带来了很大的压力,也触发了很多商业行为。

There’s little doubt that Arm has been feeling the pressure from RISC-V, which will only grow now that MIPS has been tossed into the open source ring.

There have been recent indications of Arm becoming more flexible on pricing, perhaps in response to competition from RISC-V, and last year the company came under fire when it briefly published a website, riscv-basics.com, that offered developers “five things to consider before designing a system-on-chip,” all of which pointed to Arm chips as the superior choice. This included return-on-investment claims that even after paying license and royalty fees, Arm was a cheaper choice than RISC-V silicon. Once the backlash started, Arm took the site down, quickly and without comment.

Links:

暴走事件

2019年3月

2019年5月

2019年6月

招聘简讯

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


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

特别感谢: Shawn


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

CNRV微信公众号


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