分享

指令系统应该免费:RISC-V的案例

 guitarhua 2016-11-10
指令系统应该免费:RISC-V的案例

作者:科尔斯特?阿萨诺维奇

译者:钱学海谭章熹

关键词:指令集体系结构??RISC-V

可定制片上系统(System-on-a-Chip, SoC)正变得无处不在,而处理器和高速缓存是其上的一小部分。如今的电子产品,不论规模大小,已很少有哪个不包含片上处理器的。因此,设计包含处理器的芯片的公司数量比过去大得多。既然像TCP/IP网络协议及Linux操作系统这样的开放标准和开源软件已经给工业界带来了革命性的变革,那么为什么作为系统最重要接口之一的指令集体系结构(instruction set architectures, ISAs)是专有的呢?

免费、开放的指令集体系结构案例分析

指令集体系结构专有也许是历史原因造成的,但指令集体系结构不免费开放从技术上说没有太大道理:

●这不是厂商的疏忽。拥有成功的指令集体系结构的公司,例如ARM、IBM和英特尔,都对其指令集体系结构中的独有特征申请了专利,以防止其他人未获许可就使用其指令集体系结构[1]。然而,取得许可证的谈判通常耗时6~24个月并耗费100万~1000万美元,这样高昂的代价使学术界和其它产量较小的公司望而却步[2]。更有甚者,得到一个ARM公司的许可证甚至连设计自己的ARM处理器核的权利都不包括在内,你仅仅是被允许使用他们的设计而已(只有大约15个大公司拥有允许其自行设计新的ARM处理器核的许可证)。至于“OpenPOWER”,甚至与其名字相悖。用户必须向IBM付费才能使用其指令集体系结构。尽管从商业角度看,许可证制度是有意义的,但它限制了更多的人设计或共享指令集体系结构兼容的处理器核,从而扼杀了技术上的创新和竞争。

●也并非因为大部分的软件是由这些拥有指令集体系结构的公司开发的。尽管围绕那些流行的指令集体系结构形成的软件生态环境是有价值的,但几乎所有的软件都是由外界为他们开发的。

●不是由于只有这些特定公司才拥有足够的指令集体系结构设计经验。虽然这种设计需要大量的工作,但如今许多单位都有能力进行。

●不是因为最流行的指令集体系结构技术上是完美的。人们并不认为80x86和ARM是指令集体系结构设计的典范。

●也并非因为只有商业公司才能验证指令集体系结构的兼容性。开放组织很久以前就已经开发出了保证与硬件标准兼容的机制,例如IEEE 754浮点标准、以太网以及PCIe等。如果不是这样的话,这些开放的IT标准不会如此受欢迎。

●最后应该指出,专有指令集体系结构并不能保证持续性。如果一个公司倒闭,则其拥有的指令集体系结构会随之寿终正寝;DEC1的倒闭就终止了其开发的Alpha和VAX的指令集体系结构。

需要注意的是,一个指令集体系结构实际是一种接口规范,而不是一种实现。总的来说,存在3种类型的指令集体系结构实现:

1.私有且闭源,类似于苹果的iOS。

2.需要许可证才开放源码,类似Wind River的VxWorks。

3.免费且开放源码,用户可以进行修改和共享,类似于Linux。

在实践中,专有指令集体系结构允许前两种实现,免费和开放的指令集体系结构允许所有三种实现。

由此可以看出,如同从开源软件中受益一样,工业界同样可以从充满活力、自由开放的指令集体系结构中受益。例如开源指令集体系结构能克服指令集体系结构特征专利的阻碍,形成一个真正免费开放的处理器设计市场。其结果将是:

●通过自由市场竞争来促进产生于大量设计者的更大的创新,其中包括指令集体系结构的开放实现(相对专有实现而言)。

●实现共享的开放处理器核设计,通过设计重用降低成本,缩短上市时间。由于有更多设计者参与和检验,使设计上的错误得以减少[3]。另外,由于设计的透明性,政府机构设置秘密后门也更为困难[4]。

●处理器价格能为更多应用所接受,这有助于拓展物联网(Internet of Things, IoTs),其中有些装置的成本低于1美元。

将精简指令集计算机作为免费、开放的指令集体系结构风格的案例分析

我们认为一个指令集体系结构要被开源社区接受,必须要有公认的成功商业记录。那么第一个问题是哪一类指令集体系结构具有成功的历史。三十年来,堆栈式指令集体系结构没有成功的范例。超长指令字(Very Long Instruction Word, VLIW)除了在部分数字信号处理器(Digital Signal Process, DSP)市场之外,基本是失败的:早期的Multiflow失败了;近期的安腾也失败了,尽管惠普和英特尔投入了数十亿美元。已经有几十年没有出现新的复杂指令集计算机(Complex Instruction Set Computer, CISC)的指令集体系结构的成功范例了。那些存活下来的复杂指令集计算机将复杂的指令集体系结构转换成易于执行的指令集体系结构,这种转换对于执行有价值的遗产代码是有意义的。单从定义上讲,一个“新”的指令集体系结构是不会有任何遗产代码的,所以指令集体系结构转换带来的额外硬件成本与功耗成本很难说是合理的。既然如此,为什么不一开始就设计使用容易执行的指令集体系结构呢?精简指令集计算机(Reduced Instruction Set Computer, RISC)风格的存-取型指令集体系结构早在50年前西摩·克雷(Seymour Cray)设计的CDC 6600中就出现了。虽然80x86在PC市场中取得成功,但RISC却主导了后PC时代的平板电脑和智能手机市场。2013年,ARM处理器出货量超过了100亿片,与之相比,80x86芯片仅售出了3亿片。重复一下我们在20世纪80年代的论断[5],我们认为精简指令集计算机是(免费、开放)指令集体系结构的最好选择。

而且,新的RISC?指令集体系结构通过从其先行者身上吸取教训,可以更臻完美,需要克服的缺点如:

●过度的省略:在早期Alpha?指令集体系结构中没有字节存取或半字存取指令,在MIPS I中不包含存取浮点双精度数的指令。

●过度的包含:ARM指令中的移位选项,SPARC中的寄存器窗口。

●允许当前的微结构设计影响指令集体系结构:?MIPS和SPARC中的延迟分支,Alpha中的浮点陷阱栅障。

为了配合嵌入式市场的需求,RISC甚至提供了代码占用过多存储空间的解决方案:ARM Thumb和MIPS16都添加了16位格式,使代码尺寸比80x86的更小。因此,我们相信对于好的RISC?指令集体系结构应该是什么样,设计者是有共识的。

利用现有的免费、开放RISC指令集体系结构的案例分析

值得庆幸的是,现在已经有3个免费开放的RISC?指令集体系结构[6]:

●SPARC V8——归功于升阳微系统公司(Sun Microsystems)的贡献,SPARC V8于1994年成为IEEE标准。

●OpenRISC——一个始于2000年的GNU(GNU’s Not Unix)开源项目,其64位指令集体系结构版本于2011年完成。

●RISC-V——2010年,部分受到ARM对其知识产权(IP)限制的刺激,再加上对ARM v7缺少64位寻址及其巴洛克式繁琐复杂的整体设计不满,我们和我们的研究生安德烈·沃特曼(Andrew Waterman)和云瑟普·李(Yunsup Lee)一起开发了RISC-V[7](读作“RISC 5”),用在教学和科研中,并以伯克利软件套件(Berkeley Software Distribution, BSD)方式开源。

由于为了确保指令集体系结构细节的正确需要花费数年的时间(例如OpenRISC和RISC-V的孕育时间分别是11年和4年),在设计一个指令集体系结构时,一种明智的选择是基于一个现有的指令集体系结构而不是成立委员会从零开始。RISC?指令集体系结构都比较相似,所以其中任何一个都可作为候选者。

考虑到指令集体系结构可以存活几十年,我们先来分析一下未来信息技术的前景,通过理解哪些功能是重要的,来对各种选择进行排序。未来可能有三种平台起主导作用:(1)物联网(IoTs)——数以亿计的具有IP地址和互联网络接入功能的廉价装置;(2)个人移动设备,比如今天的智能电话和平板设备;(3)?数据仓库规模计算机(Warehouse-Scale Computers, WSCs)。当然,我们可以为上述各个平台设计不同的指令集体系结构,但如果各种平台都使用同样的指令集体系结构,事情会变得更简单。

这种前景对指令集体系结构的设计提出了以下4个重点需求:

1.基本加扩展的指令集体系结构[8] 为了提高效率和降低成本,片上系统一般都添加了针对应用定制的加速器。为了配合片上系统这种需要,同时维持稳定的软件系统,免费和开放的指令集体系结构应该包括:(1)一个足以支持编译器和操作系统的小的核心指令集;(2)标准但可选的扩展指令集,用于帮助片上系统实现针对不同应用的定制;(3)为全新指令操作码保留空间,用于添加调用各种应用加速器。

2.紧凑的指令集编码 物联网设备对成本敏感,需要采用较小的内存空间和规模较小的代码。

3.在单精度和双精度的基础上,同时支持四倍精度的浮点运算 一些在当今数据仓库规模计算机上运行的应用由于所处理的巨大数据集的要求,已经使用支持四倍精度浮点运算的软件库。

4.在32位和64位寻址的基础上,同时支持128位寻址物联网设备有限的内存容量意味着32位寻址在未来的几十年内仍然重要,而64位寻址已经成为其他更大设备上的事实标准。虽然今天的数据仓库规模计算机行业还不需要2128字节,但我们有理由相信,不超过十年,数据仓库规模计算机就可能需要比264更多的字节(1600亿亿字节或16艾字节)来在其所有的固态非易失性存储器寻址。指令集体系结构支持的地址位数不够是一种很难纠正的错误[9],因此最好现在就规划较长的地址。

下表根据上述4个需求,对三种现有免费开放指令集体系结构进行了打分,同时列出了关键的编译器和操作系统支持情况。

指令集体系结构

基本加扩展

紧凑的编码

四倍精度浮点

地址位数

软件支持

32位

64位

128位

GCC

LLVM

Linux

QEMU

SPARC V8













OpenRISC















RISC-V





















将RISC-V作为免费、开放的RISC指令集体系结构的案例分析

我们的研究社区应该围绕单个指令集体系结构来检验免费和开放的指令集体系结构是否可行。只有RISC-V对上述四个需求都满足。RISC-V比其他指令集的出现晚了10 ~20年,这使我们有机会从早先RISC?指令集体系结构中汲取经验并修正其中出现过的错误(比如SPARC和OpenRISC中的延迟分支指令)。这也是RISC-V如此简洁的原因(参见表4和表5以及www.riscv.org)。其它指令集体系结构除了没有满足所有评判标准外,还存在其他非技术问题。例如64位的SPARC(V9)是专有的,而OpenRISC可能已失去了发展的动力。

RISC-V有着很好的发展势头。表1给出了设计RISC-V片上系统的其它团队。由于使用了高生产力和开源的硬件设计系统Chisel[10],伯克利已经设计了8个芯片,更多的芯片正在设计中。表2将一个64位RISC-V核的设计与一个具有类似流水线设计且使用相同工艺的32位ARM核进行了比较。RISC-V?核的面积小了一半,功耗低了一半,速度更快。

虽然难免受偏好影响,但我们相信RISC-V是免费开放指令集体系结构的最佳且最保险的选择。因此,我们将组织研讨会和培训课[11]来扩展RISC-V社区。受表3的启发,我们计划组建一个非盈利性的基金来认证各种实现,并维护和发展这个指令集体系结构。

结论

与开源操作系统相比,开放指令集体系结构的必要性甚至更加明显,原因在于指令集体系结构变化非常缓慢,而算法创新和新的应用需求却迫使操作系统不断演化。与TCP/IP类似,指令集体系结构也是一种接口标准,所以比操作系统更容易维护和发展。

以前也尝试过开放指令集体系结构,但由于缺乏需求而没能流行起来。当前有多个因素交织在一起支撑过去缺失的需求:物联网设备所要求的低成本和低功耗,在数据仓库规模计算机中对替代80x86的新处理器的需求,以及片上系统中虽然只是一小部分却不可或缺的处理器核的需求。RISC-V是针对片上系统设计的,具有不应改变的核心指令以支持其持续性;一套标准的,会缓慢地演化的可选扩展指令;以及专为特定片上系统设计而无须重用的独特指令。虽然RISC-V可能首先在物联网或数据仓库规模计算机中登场,我们对其却有着更远大的目标:正如Linux已经成为大多数计算装置的标准操作系统一样,我们设想RISC-V在未来能成为所有计算装置的标准指令集体系结构。■

*原文刊登于2014年8月14日的《微处理器报告(Microprocessor Report)》(http://www./mpr/article.php?id=11267)。

1Digital Equipment Corporation,20世纪60~90年代曾是美国的一家重要的计算机系统供应商,其最为成功的产品是小型机(minicomputer)。1998年被康柏(Compaq)兼并,后又并入惠普。

作者:

科尔斯特?阿萨诺维奇(Krste Asanovi?)和戴维?帕特森(David Patterson):均为加州大学伯克利分校教授。主要研究方向为计算机体系结构。(krste, pattrsn)@cs.berkeley.edu

译者:

钱学海

美国加州大学伯克利分校博士后研究员。主要研究方向为计算机体系结构与高性能计算。xuehaiq@eecs.berkeley.edu

谭章熹

美国加州大学伯克利分校博士,主要研究方向为计算机系统结构、Warehouse Computing、数据中心高性能存储和互连网络。xtan@cs.berkeley.edu

参考文献

[1].MIPS letter (2002). http:///yellow_star/letter.pdf.

[2].Demerjian, C. (2013). A long look at how ARM licenses chips: Part 1 of 2, semiaccurate.com/2013/08/07/a-long-look-at-how-arm-licenses-chips/.

[3].Raymond, E. (1999). The Cathedral and the Bazaar.?Knowledge, Technology & Policy, 12(3), 23~49.

[4].Sturton, C., et al (2011).Defeating UCI: Building stealthy and malicious hardware.Security and Privacy Symp. 64~77.

[5].Patterson, D. & D. Ditzel. (1980) The Case for the Reduced Instruction Set Computer.Computer Architecture News.

[6].We recently learned about the new Open Core Foundation, which is planning a 64-bit open core for 2016 based on SH-4.

[7].Waterman, A.?et al. (2014).?The RISC-V Instruction Set Manual, Volume I: User-Level ISA,Version 2.0. EECS Technical Report No.UCB/EECS-2014-54, UC Berkeley.

[8].Estrin, G. (1960) Organization of computer systems: the fixed plus variable structure computer.?Western Joint IRE-AIEE-ACM Computer Conference, 33~40.

[9].Bell, G., & W. Strecker. (1976) Computer structures: What have we learned from the PDP-11?,?3rd ISCA, 1~14.

[10].Bachrach, J.,?et al. (2012) Chisel: constructing hardware in a Scala embedded language.?Proc. 49th DAC, 1216~1225.

[11].The first RISC-V workshop will be January 14-15, 2015 in Monterey, CA.https://www./riscvworkshop.

附录:

表1 加州大学伯克利分校之外的RISC-V项目

机 构

核数目

说 明

玛德拉斯印度理工学院(IIT Madras)

6

发展了从微控制器到服务器/HPC级处理器的全系列处理器。该项目始于IBM的Power ISA,但是由于技术和许可证等原因1年之后转向RISC-V。设计了6个不同的印度本地的处理器和相关片上系统,提供了替代专有商用处理器的可行的开源方案。 所有实现将以免专利费/权利金形式提供,其BSD (Berkeley Software Distribution, 伯克利软件套件)许可证的开源方式与RISC-V的理念相符合。(rise.cse.iitm.ac.in/shakti.html)

LowRISC

1

lowRISC项目(lowrisc.org) 的基地是英国的剑桥大学,由流行的35美元计算机Raspberry Pi的创始人之一领导。他们的目标是生产基于开源RISC-V的片上系统,并已规划了大批量硅片制造以及低成本开发板。

Bluespec

1

美国的EDA公司Bluespec(bluespec.com)因有用户对于开放指令集体系结构感兴趣,所以他们正在使用Bluespec的逻辑综合工具设计RISC-V,并已将GDB(GNU Debuger)调试器和GNU软浮点应用二进制接口(Application Binary Interface, ABI)移植到RISC-V。

表2 比较以相同的台湾积体电路制造公司(TSMC)工艺(40GPLUS)制造的32位ARM核(Cotex-A5)与64位RISC-V核(Rocket)。第三行是RISC-V Rocket与ARM Cortex-A5的比值。二者都使用单发射指令和按序流水线,但是RISC-V核更快、更小,功耗更低。这些数据来自于ARM网站和李(Y. Lee)等人的 “A 45nm 1.3GHz 16.7 Double-Precision GFLOPS/W RISC-V Processor with Vector Accelerators” 论文(见the

40th European Solid-State Circuits Conference, September 22~24, 2014)

ISA

字长(位)

主频

(GHz)

Dhrystone

性能

(DMIPS/MHz)

面积

mm2

(无高速缓存)

面积

mm2

(16KB高速缓存)

面积效率 (DMIPS/MHz/mm2)

动态功耗(mW/MHz)

ARM

32

>1

1.57

0.27

0.53

3.0

<0.080

RISC-V

64

>1

1.72

0.14

0.39

4.4

0.034

R/A

2

1

1.1

0.5

0.7

1.5

≥0.4

表3过去几十年维护和发展开源项目的非盈利软件基金会的例子。假如要获得与这些软件项目相匹配的生命期,我们需要类似的组织来维护和发展免费开放的指令集体系结构

名称

年份

说明

阿帕奇软件基金会(Apache Software Foundation)

1999

以开源软件项目对阿帕奇(Apache)社区提供支持,而阿帕奇社区为公众利益提供软件产品。

免费软件基金会(Free Software Foundation)

1985

通过开发和使用免费软件和文档,特别是GNU操作系统,保证计算机用户的自由。

开放组(Open Group)

1996

厂商和技术中立的产业联盟,目前拥有超过400个成员组织。在1996年当X/Open与Open Software Foundation合并时建立。所提供的服务包括策略、管理、创新与研究、标准、认证以及测试开发。Open Group以作为UNIX商标的认证机构而著称。

表4RISC-V的整数基本指令(RV32I/64I/128I)及指令格式。

该基本指令集包括40条经典的RISC整数指令和10条用于同步、系统调用和计数器操作的其他指令。所有RISC-V的实现都必须包括这些基本指令,我们称其32位版为RV32I。64位和128位版(RV64I和RV128I)将所有的寄存器扩展到相应的字长,并增加10条新的宽格式的数据传送和移位指令。该表还显示了可选的压缩字长指令的扩展:10条带Cx格式的16位长的指令。

到目前为止包括的其他指令扩展还有:乘-除指令、单精度/双精度/四精度(SD/DP/QP)浮点指令和原子指令(详见www.riscv.org)

表5 RISC-V的可选扩展:乘-除指令、单精度/双精度/四精度(SD/DP/QP)浮点指令和原子指令。该表进一步显示了RISC-V的基本加扩展的特性。

可选的扩展包括:10条乘-除指令(RV32M),单精度/双精度/四精度浮点指令(RV32S/RV32D/RV32Q)各25条,11条可选的原子指令(RV32A)。与RV32I扩展到RV64I和RV128I的情况相同,对于每一种地址字长的选择,我们需要为更宽的数据增加几条指令,包括:4条更宽的乘-除指令、6条浮点的移动和转换指令以及11条更宽的原子指令(详见www.riscv.org)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多