零壹与或非分享 http://blog.sciencenet.cn/u/dthome9180 站得更高,才能望得更;远看得更细,才能找到好草

博文

处理器指令系统漫谈(9):老大

已有 5205 次阅读 2019-8-28 14:49 |个人分类:观点评述|系统分类:科普集锦| 处理器, 指令

时间进入到了1993年,从1964年IBM 360提出体系结构概念开始,已经30年了。通过之前的讲述,我们知道指令系统设计的原则有8个了:

兼容、微结构无关、代码密度、开放、可扩展、简单、软硬件协作、权衡。在设计指令系统的时候,在设计处理器的时候,在研究体系结构的时候,时刻要记住“权衡”,不要太保守,更不要太激进。计算机性能和三个因素相关:指令系统(动态执行指令数)、微结构(IPC)、实现工艺(频率),不能只考虑其中一个因素,而忽略相互之间的影响,这个思想贯穿着CAQA始终。权衡非常重要,处理器要简单但不能太简单、代码密度要大但不能太大、频率要高但不能太高、超标量要宽但不能太宽、动态指令调度要用但不能太激进,指令系统要和微结构无关但也不能完全不相关,呵呵。

这时候老大要说话了,IBM:“大家都讨论的差不多了,我来总结一下”。1993年IBM(大型机)、摩托罗拉(芯片、嵌入式系统)和苹果(PC机),当时的老中青三代,三个起大早赶晚集的PC和工作站市场的失意者,联合在了一起。三个公司的研究者集合在一起,提出了著名的PowerPC指令系统,期望通吃从嵌入式到PC到工作站到服务器到小型机到大型机所有的市场,想法太伟大了。但最后的结果是,嵌入式市场用了ARM,PC和服务器、数据中心、巨型机市场用了x86,IBM保住了小型机(POWER)和大型机(IBM 360的后继者)的市场并在数据中心和巨型机领域占有一席之地。

介绍PowerPC的第一篇文章是1993年IEEE Micro介绍PowerPC 601的文章【1】。文章介绍PowerPC继承了IBM RS/6000(IBM 801的后继者)的POWER指令系统【2】,去掉了其中不简单的部分,结合了Motorola 88110的总线架构而成。

image.png

设计目标:(1)兼容POWER,去掉复杂指令,采用非法指令例外处理程序实现被去掉的指令。(2)简单的架构设计,适应广泛的市场,并有利于激进的超标量处理器设计。(3)提高大范围的单处理器和多处理机配置。(4)64位指令系统并兼容32位指令系统应用。

1994年IEEE Micro4月第2期和1994年6月ACM通讯,分别用了一整期的版面介绍了PowerPC的相关内容,这气势,就是老大啊。

《PowerPC的演变》这篇论文主要介绍了PowerPC架构的主要特点,先介绍POWER指令系统和其他RISC的不同。主要有

(1)全互锁的指令流水线设计,无需软件参与(2)增强条件寄存器分支指令模式,设置多个条件寄存器(3)合成指令,提高代码密度,如多load/store指令、base+index+update寻址方式、浮点乘加指令等等(4)没有延迟分支指令的延迟槽(5)用户模式下Cache控制指令(6)Weakly Order访存序模型等等。

而PowerPC在32位POWER的这些特性上增加了新的考虑,主要就是简化设计提高频率,有利于超标量乱序执行,支持多处理机,扩展到64位指令系统。

image.png

1996年6月AMC通讯中的《PowerPC架构历史》文章更加详细的介绍了这些特性的设计思想。

第一,围绕超标量的简单模型设计指令系统,这一点特别重要,传统的RISC指令系统大多只有compare and branch这种分支跳转指令,不设计标志寄存器。该指令中包括整点比较运算和分支判断,PowerPC认为这势必将分支指令和整型指令共享一个发射队列,增加指令间相关,不利于乱序执行。所以PowerPC采用了根据标志寄存器的分支调转指令,并设计了多个标志寄存器,将分支指令和整型指令的指令队列完全分开,达到了乱序发射的目的。这是PowerPC的一大特性。真是充满了智慧啊。所以PowerPC的处理器都是多个小发射队列,发射队列之间乱序,发射队列之内按序。而反观alpha和MIPS的处理器都是设计一个超大的统一的发射队列和唤醒机制,复杂啊。有意思的是,现在主流的3个指令系统x86、ARM、Power都设计了标志寄存器的,RISC-V没有。当然compare and branch也不是完全没有优点,现在ARM和x86都在后续的扩展中加入了这条指令。

image.pngimage.png

第二,PowerPC认为RISC唯一的缺点可能就是代码密度低,要用更多的动态指令数来运行程序。所以PowerPC设计了很多合成指令(上面说过了)。但是这些指令其实对寄存器堆的读写口数量有更多的要求,所以后续在设计PowerPC嵌入式处理器时,编程手册给出了一种的建议,软件编译尽量少用这些指令。而面向小型机大型机的大处理器,用用也挺好的。

第三,集中批判delayed branch技术,大概用了快一整页的篇幅讨论为什么PowerPC不用delayed branch而要用硬件来做转移预测,增加循环程序结构支撑和函数调用支持的Count and linker特殊寄存器。

与Alpha指令系统一样,PowerPC也在几乎所有指令类型中设计了Hint机制,提高编译等系统软件和微结构之间的协作潜能,其实SPARC和MIPS类后续的指令系统改版时也增加了或多或少的Hint机制,ARM和Intel也有。Hint机制已经成为指令系统设计的共识。

从以上的论述笔者认为,PowerPC指令系统应该来讲达到了RISC指令系统运动的巅峰,事实上自此之后再也没有出现面向桌面和服务器领域的新指令系统设计了。直到2010年代初,ARM提出了ARMv8指令系统,试图进入这个市场,至今还没有建树。

高手,IBM的PowerPC(现在整合到Power ISA 3.0 中)就像一个打太极的大家,隐而不发,一战定乾坤。PowerPC的最主要的特点是能效性特别好,可以用更低的频率、更低的功耗达到更好的性能,之前的Green500 List大家可以了解一下。

PowerPC是否就没有缺点了呢,是否就更适合作为新时代指令系统了呢,1993年的PowerPC到现在已经25年了,时代在变化。可以说PowerPC当时对于那些大规模数据密集型程序来讲非常适合,但是25年的发展,SIMD扩展指令的纷纷加入,GPGPU等加速器的兴旺,往往使得数据密集型程序一般都用数据并行指令和数据并行加速器来执行,PowerPC的这些单指令流循环的设计,现在显着有点无用武之地了,显着有点臃肿了。但是笔者认为,如果面向事务密集型和控制密集型的程序而言,PowerPC仍然有着很强的生命力。

30年弹指一挥间,25年弹指又一挥间。我们站在要求更安全、更高能效的AI+IoT+5G新时代,需要新的指令系统吗?需要什么样的指令系统?RISC-V,MIPS,Power,x86,ARM哪个更适合作为我们的蓝本呢?我们能从55年的发展历史中得到什么呢?未完待续。。。


【1】Becker, M. C., et al. 1993. "The Power PC 601 microprocessor." Micro, IEEE 13(5): 54-68.

【2】Oehler, R. R. and R. D. Groves. 1990. "IBM RISC System/6000 processor architecture." IBM R&D. IBM Journal of Research and Development 34(1): 23-36.

【3】Diefendorff, K., et al. 1994. "Evolution of the PowerPC architecture." IEEE Micro 14(2): 34-49.

【4】Diefendorff, K. 1994. "History of the PowerPC architecture." Commun. ACM 37(6): 28-33.




https://wap.sciencenet.cn/blog-102148-1195600.html

上一篇:处理器指令系统漫谈(8):频率
下一篇:微处理器指令系统漫谈(10):并行
收藏 IP: 124.205.76.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-8-12 16:46

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部