一般来说,人类历史第一台RISC 电脑,应当是CDC6600,姑且不论IBM 力图自我宣传的立场,IBM 801 研发过程逐步厘清RISC 该有的样貌,也是不争的事实。最起码IBM 801 研发团队明确指出「存储器载入/回存(Load / Store) 架构」与「微码不好(Microcode is bad),不要微码」这些历史性结论。
创造「根据代码流可分成指令(Instruction) 和数据(Data) 两种、据此再分成四种计算机类型(SISD、SIMD、MISD、MIMD)」的「费林分类法」(Flynn′s Taxonomy)的Michael Flynn,认定IBM 801 是世界第一个RISC 系统。IBM 前述ACS 计划累积的成果,如高级语言编译器的最佳化手段和更精练的指令集架构,一并延续到IBM 801。▲ 第一台RISC计算机IBM 801,由IBM 研究员John Cocke 和团队于1970 年代后期设计,他也在1987 年获得计算机工业最高荣誉「图灵奖」。1974 年,IBM 开始研究如何打造每小时处理100 万则通话、平均每秒300 通的电话交换机。假如每通电话须执行2万个指令,代表每秒最少要600 万个指令(6MIPS),再算额外处理负担,起码要1,200 万个指令(12MIPS)。但当时IBM 销售最高端机种System/370 Model 168(1972 年),只有每秒300 万个指令(3MIPS),这说明要出现巨大技术突破,才有实现目标的可能。因此John Cocke 团队删除所有操作存储器内数据的指令,只保留使用处理器内的数据寄存器。相较未有专门指令负责存储器载入(Load) 和存储器回存(Store)的CDC6600,电话交换机研究案直截了当指明RISC 指令集第一个要素:存储器载入(Load)/回存(Store)架构。白话点就是「一次从存储器抓一堆运算元(数据)进来,算完再一次丢回存储器」。IBM 在1975 年取消这计算机结构的概念取得相当进展的实验性专案,但当年10 月IBM 决定当成不同应用可共享的通用设计,继续发展,并以研发部门所在地Thomas J.Watson 研究中心建筑物编号为名,命名为IBM 801 计划。日后IBM 801 普遍用于各种IBM 产品,包括System/370 大型主机I/O 通道控制器、各种IBM 网通设备、IBM 9370 大型主机的垂直微码(Vertical Microcode)执行单元,并在日后成为IBM ROMP(Resarch OPD Micro Processor)微处理器、IBM RT PC 工作站和几个内部研究案的技术基础,一步步迈向时下高端RISC 之王:Power(Performance Optimization With Enhanced RISC)。接着更伟大的成就,就堂堂登场了──John Cocke 团队发现软件编译程序都未用到大多数透过微码(Microcode)实作的功能强大复杂的指令。当时可能一个看起来很简单的加法指令,就有一堆对应不同运算元(像寄存器与存储器配对,或不同运算元数量)版本,就是CISC 的特色,为了提供充裕指令数量与功能(受大型主机影响,是那时很重要的商业行销诉求),反而拖慢常用的简单指令。抛弃微码,使用硬件线路(Hardwired)制作这些指令,并有效流水线化(Pipeline),就是RISC 的第二个特征。▲ 微码是区分RISC与CISC 的最根本差异,没有之一。即使后来的RISC…...John Cocke 团队总结,这句话也从此颠覆指令集架构潮流:“在计算机与使用者间强加微码(用微码实作「为软件与硬件界面的指令集架构」),会在执行最频繁执行的指令时,产生昂贵的额外负担。”(Imposing microcode between a computer and its users imposes an expensive overhead in performing the most frequently executed instructions.)RISC的重大精神「让最常用的指令跑的更快」(Make The Common Case Fast)由此而生。▲ 虽然IBM 并未发明RISC 这名词,但IBM 的801 计划的确早于当代两位大师David Patterson(RISC 名词创造者,之后才出现「对照」用CISC)的RISC I 和John Hennessy 的MIPS。1980 年夏天问世的最初版,时钟频率15.15MHz,理论运算效能高达15MIPS,超出1974 年电话交换机的预定性能需求。但IBM 801 打从娘胎起就是为了功能极有限的系统而生,所以规格也极简单,仅有16 个24 位元数据寄存器,指令编码长度是短短24 位元,没有虚拟存储器,延续古老的2 运算元格式(A = A + B),但2运算元格式(A = A + B) 却会覆盖其中一个,代表必须事先复制一个运算元的数据到另一个寄存器,降低效率。后来IBM 改良多次,特别重要的是将指令编码长度扩展到32 位元,不仅让数据寄存器数量倍增到32 个(用到5 个位元标定),更有足够位元数,改为3 运算元格式(A = B + C),更利于数学应用,因两个数字(B 和C) 都可保留于寄存器,以便重新使用。RISC 第三个象征:「应该」要有32 个数据寄存器和三运算元格式,就这样出现在各位眼前(至于嵌入式导向RISC 指令集,如ARM Thumb,那又是另一个故事了)。更值得注意的是,不限硬件,IBM 801 计划也对改善编译器(Compiler)效率有巨大贡献(各位还记得上一篇ACS 和Frances Allen吗?)。新版IBM 801 于System/370 大型主机以「模拟器」执行时,运行速度竟然会比System/370 原生程式码还快。研发团队将IBM 801「尽其所能利用数据寄存器,并设法减低存取存储器频率」的编译器「逆向」移植回CISC指令集架构的System/370,效能也比原版快三倍,充分证明针对RISC 发展的编译器最佳化技术,也同样可改进CISC 处理器软件执行效能,反正能减少上下其手存储器,都不啻是好事一桩。总之,从CDC6600、ACS 和IBM 801,能对RISC 做以下总结:2.RISC「精简」的是指令格式与运算元定址模式,不是指令数目。3.存储器载入(Load)回存(Store)都由专属指令负责。4.尽量使用硬件线路(Hardwired)实做指令,避免采用微码(Microcode)产生控制讯号。5.预设最少要有32个数据寄存器与3 运算元(A = B + C)。6.因应高级语言普及,编译器(Compiler)技术在效能层面扮演举足轻重角色。但IBM 801的传奇并未划下句点,更大挑战即将现身John Cocke 等人眼前:1982 年以IBM 801 的成就为地基,IBM 启动Cheetah(猎豹)计划,借实作多组执行单元,让RISC 在单一时脉周期内执行多道指令,也就是同时执行一个以上指令的「超标量」(Superscalar)流水线,结合让RISC抢滩个人电脑市场的努力(ROMP、RT PC、PowerPC),铺陈蓝色巨人横越超过半世纪的壮丽RISC 发展史。▲ 笔者一直很讨厌RISC-V 阵营老爱把RISC 说得好像横空出世的伟大发明,就算不提IBM,RISC 起源甚至可追溯至1964年的CDC6600,距今超过半个世纪。如果还没忘记上一篇提到的IBM System/360,就会马上理解服务器的世界,无论CISC 还是RISC,最顶端的高端产品,依旧清一色是IBM 天下。不过论世界第一个「兼具超标量、乱序与预测指令执行的RISC 处理器」,一般认定是1990 年IBM Power1(限浮点运算) 或1993 年IBM PowerPC 601,但其实早在1978 年苏联Elbrus-1 实现,只是苏联解体、冷战结束后才逐渐被世人知悉。笔者更好奇的是,当代两位大师合着的两本经典教科书《计算机体系架构:量化研究方法》,何时会探讨俄国人的计算机领域成就?RISC-V手册开源指令集指南
半导体材料系列报告(上): 国产替代正当时,把握扩产窗口期半导体材料系列报告(下):Chiplet引领封测行业新机遇图解数据中心基础设施:PCIe总线和NVMe SSD测试PCIe Gen 4&5总线协议分析和SSD测试工具白皮书
本号资料全部上传至知识星球,更多内容请登录智能计算芯知识(知识星球)星球下载全部资料。
免责申明:本号聚焦相关技术分享,内容观点不代表本号立场,可追溯内容均注明来源,发布文章若存在版权等问题,请留言联系删除,谢谢。
电子书<服务器基础知识全解(终极版)>更新完毕。
获取方式:点击“阅读原文”即可查看182页 PPT可编辑版本和PDF阅读版本详情。
温馨提示:
请搜索“AI_Architect”或“扫码”关注公众号实时掌握深度技术分享,点击“阅读原文”获取更多原创技术干货。