科学网处理器指令系统漫谈(2):兼容

来源:澳门银河赌网手机端 发布于 2019-07-27  浏览 次  

是什么因素决定一种指令系统是否成功、是否长寿呢?一个答案是“市场最终成为计算机体系结构创新是否成功的关键因素”。这个答案是CAQA的两位作者John Hennessy和David Patterson的2018年的图灵奖演讲中给出的,也是在CAQA书中多次提到的。根据该演讲整理的文章发表在ACM通讯杂志的2019年第2期上,名为《A New Golden Age for Computer Architecture》。2019年第4期的中国计算机学会通讯上转载了该文章的中译版,题为《计算机体系结构将迎来黄金时代》。作者回顾了1960年代以来计算机体系结构的发展历史,展望了人工智能为计算机体系结构设计所带来的的新挑战和新机遇,认为计算机体系结构将迎来有一个黄金十年。与作者在1980年代初做的研究工作一样(RISC),新的体系结构设计将会在成本、能耗、安全和性能等方面提供更好的获益。

“市场”这个名词有些宽泛,市场最终选择的都是什么样的指令系统呢?市场在服务器/桌面领域选择了x86,在移动终端和嵌入式领域选择了ARM,或许在今后在物联网和领域专用加速器领域会选择RISC-V,这些指令系统的共同特点是什么呢?能否为我们设计新时代指令系统提供更为明确的建议呢?

指令系统体系结构(Instruction Set Architecture, 澳门银河赌网手机端,ISA)是指实际编程者(汇编或机器语言编程者以及编译器设计者)可见的指令集合,是软件和硬件的边界和接口。在CAQA这本书中,计算机体系结构(Computer Architecture)就是指ISA,另一个更宽泛的计算机体系结构定义是包括ISA、计算机组成(微体系结构)和计算机实现三个部分的总和。

最早在1964年IBM Journal的论文“Architecture of the IBM system 360”,Amdahl、Blaauw和Brooks在文章脚注中给出了“体系结构”的定义:“The term architecture is used here to describe the attributes of a system as seen by the programmer, i.e., the conceptual structure and functional behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation”。这个定义也出现在了1978年ACM通讯第一期介绍IBM System370的论文的脚注中。IBM 360/370定义了所有指令系统都遵循的标准:8比特字节;字节寻址;32位字;32位单精和64位双精浮点格式;32位通用寄存器和分立的64位浮点寄存器;不同性价比的系列计算机间的二进制兼容;将体系结构和计算机实现分离等。


image.png

image.png


出现在CAQA的历史回顾和许多文献中的另一个当时的定义是“...the structure of a computer that a machine laguage programmer must understand to write a correct (timing independence) program for that machine.”这个“时序无关”的概念就是指系统结构和具体实现在概念上的分离。

这篇文章的摘要提出了IBM System/360的4点创新,而体系结构概念最主要是第4条,“兼容(Compatibility)”,保证面向不同应用领域的6个型号,二进制程序兼容。那么兼容带来了什么好处呢?我们可以从IBM System/370的文章对360的经验总结中得到答案。


image.png

“兼容”意味着可减少软件开发成本,意味着新机器硬件被造出来之前就已经有大量可用的软件,意味着可以在旧机器上开发新机器的软件,意味着可以快速形成包括软件和硬件在内的新计算机系统,意味着用户在投资时,可以只考虑硬件的费用,而保留之前的软件生态。“兼容”意味着“市场”。在IBM System/360之后的所有指令系统的设计目标中,我们全都可以看到“兼容”。

其实“兼容”和“市场”是方法和结果,关键是最终用户在购买基于某处理器所构造的计算机系统时,是否已经存在大量成熟的软件可以使用,用户与计算设备的接口是软件而不是硬件。这是为什么提出体系结构概念的关键点。x86和ARM的成功和长寿,是因为市场上已经有巨量的二进制兼容的(或者虚拟机上兼容)、经过长期优化的软件可以用。

而RISC-V或者新时代指令系统能被提出,或者可能被接受的最关键的原因之一是“开源软件”,包括编译器、操作系统、虚拟机、应用程序都可以找到开源软件。这些高级语言编写的开源软件可以被编译成任何的指令系统二进制程序,因此是否具有大量成熟软件,是新时代指令系统的关键问题,但还不是最主要问题。当然,能否将所有开源软件都成功的与硬件匹配,仍然是个巨大的挑战,新时代指令系统还有很长的路要走。

下一个问题是,什么因素决定着指令系统被市场接受,逐渐成长、壮大、成熟,积累大量应用软件, 澳门银河官网,最终成为某个领域的事实上的标准的呢?