科学网

 找回密码
  注册

tag 标签: 指令

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

处理器指令系统漫谈(16):历史
dthome9180 2019-9-5 08:49
“以史为鉴,可知兴替”,处理器指令系统的历史,对未来新时代指令系统的设计至关重要。 出于对二进制的习惯和迷恋 ,总感觉应该凑成2的幂次方才心安。写最后一个吧。 对于所有指令系统的横向对比,是否有文献呢。有一篇,虽然不太全面,但可参考。2019年ICCD中的一篇文章。 论文主要比较的是编译后的静态二进制尺寸,总结了影响代码密度的体系结构级因素。 看看结果,前面的全是RISC指令系统,一帮难兄难弟,IA64(EPIC/Itanium)代码密度最低。当然,VLIW在未来的指令系统设计中应该也有特殊的地位,在目前DSP领域中应用比较广泛。需要考虑。RISC-V有RVC16位字长指令,可以拼成32位含两个指令的VLIW。 再看看之前讲过的x86/ARM/Power这三个指令系统,ARM/Power/x86-64排在中间,x86排在较后位置,CISC对于代码密度的意义可见一斑。 再来看看,RISC-V主要设计者的博士论文中的比较。 发现ARM的Thumb-2,也就是现在的ARMv8m的前身,代码密度不错啊。RISC-V不错啊。 还有Spec有历年的几乎所有计算机的性能数据,CPU DB也是个很好的数据库,都可以用来比较比较。为未来新时代指令系统设计添砖加瓦。 在之前讲并行的时候,和指令系统体系结构相关还有一个因素叫Cache Coherence and Memory Consistency,就是Cache一致性模型和load/store的序模型。不想讲过多的细节,大家可以去看CAQA和《A Primer on Memory Consistency and Cache Coherence》这个教材。还有一篇ACM通讯的定性分析文章如下,又是大佬Mark Hill。还有x86/ARM都是TSO序模型,RISC指令系统大多是Weakly Order,RISCV之前和MIPS一样,最近也加入了TSO的模式,未来还得走TSO,并行编程更容易,硬件设计更简单。具体的大家自行补脑吧。 回归到J. Hennessy和D. Patterson的图灵奖讲演论文,四个方向:领域专用体系结构、安全、开源指令系统体系结构、敏捷芯片开发。 谁能看出来,那是夕阳还是朝霞。当然,夕阳过后,朝霞总会出现的。1978年前后,8086出现了,1987年前后RISC大爆发了,1997年曾经有一次未来芯片体系结构的大讨论(Billion Transistors Chip, 超标量+SIMD胜利了),2008年前后又有一次(Energy-Efficiency, GPU加速器胜利了),2018年又来一次(DSA+安全,胜利者会是谁呢?)。
个人分类: 观点评述|6913 次阅读|0 个评论
处理器指令系统漫谈(15):2.0
dthome9180 2019-9-3 15:10
下周开课了,这个blog也写了一个多月了,中间有几天休息了,没想到洋洋洒洒、啰里啰嗦写了不少。 12个原则:兼容、微结构无关、代码密度、开放、可扩展、编码格式简单、软硬件协作、权衡、并行、高能效、安全、势力。凑了个吉祥数,一家之言,可能不准确。 回到开始的问题:笔者希望讨论的问题是“未来AI+IoT+5G的时代,未来体系结构新黄金时代,新时代是否需要全新的指令系统?RISC-V指令系统是否足够了?新时代的指令系统应该如何设计?” 这里要介绍另一个大佬Wisconsin的Mark Hill,今年2019年获得了IEEE的Eckert-Mauchly奖。他领导着一个委员会一直在致力研究这个问题。2012年叫21 Century Computer Architecture,2018年伊始出现幽灵和熔断之后,加入了安全的需求,形成了Computer Architecture 2.0的概念。去年2018的ISCA的一个keynote,来自Stanford教授给了一个Software 2.0 (主要讲Deep Machine Learning)的。合在一起,看来以后计算机领域就进入Computer Science and Technology 2.0算了。 2012年HPCA在中国深圳举办,Mark Hill教授给了keynote就叫21 Century Computer Architecture,十分的震撼,主要来源于2012年CCC这个委员会给出的报告。2016年这个报告又推出了Arch2030的报告,加入了机器学习和人工智能的需求。 Mark Hill的报告给出了一个cross-cutting的概念,希望能将系统软件(编译、操作系统、虚拟机、运行时环境)通过一定的机制跨过指令系统体系结构的障碍(呵呵,都成障碍了)与微体系结构进行信息的沟通,解决语义鸿沟的问题。这个想法和之前Hint机制为代表的软硬件协作原则有一定的联系啊。 2018年ISCA的一个关于幽灵和熔断的Panel,Hill教授召集了一帮大佬(包括Ruby Lee)讨论了幽灵/熔断给计算机体系结构造成的危机和启发。Hill教授提出之前CA 1.0的Timing-independence、Power-independence和Security-independence的设定不合时宜,形成很多的侧信道攻击界面,容易受到微结构相关(推测执行和Cache)的侧信道攻击,防不胜防啊。指令系统体系结构应该有所突破,打破CA 1.0的瓶颈,形成CA 2.0。 Mark Hill的这些思想和J. Hennessy、D. Patterson的4大领域遥相呼应,应该统一在一起。 可能是受Mark Hill思路的启发,去年2018年ISCA大牛Onur Mutlu的学生写了一篇文章如下,大家自行补脑吧。 我们是否还有机会看到一批崭新的指令系统体系结构呢?答案是肯定的,未来可期。
个人分类: 观点评述|6649 次阅读|0 个评论
处理器指令系统漫谈(14):势力
dthome9180 2019-9-3 13:24
经过从1964年开始的55年,指令系统的设计也迎来了新的时代。CAQA出了第6版,其中服务器、台式机和嵌入式市场的处理器列表如下。大浪淘沙,目前这些指令系统还生存着,x86和ARM处于市场的主导地位。MIPS开放了,Power开放了、SPARC曾经开放开源免费过、RISC-V开放开源免费。是非功过大家自己评说。 一个指令系统是否成功、是否长寿取决与很多因素,我们之前介绍了11个原则。能想到的最后一个原则就是“信心”。技术不能决定成功和长寿,市场决定成功和长寿,当然新的指令系统还是要有些技术上的创新,还是要面向新兴的市场的。 作为指令系统的设计者,需要逆向思维。如果你作为处理器的设计者选择指令系统,你作为计算设备的设计者选择处理器,你作为计算设备的购买者考察指令系统和处理器,你会如何思维?你会如何判断?你会如何下决心? 其实还有一个因素是你对你选择的指令系统背后的“势力”是否有信心。对Intel和ARM的信心,是靠技术实力,靠坚持,靠机遇,靠正确的战略和商业模式,一步步打出来的,是大浪淘沙淘出来的。SPARC和MIPS,首先是先行者,后面是UC Berkeley和Stanford,结果如何呢。PA-RISC、ALPHA、Power后面是HP、DEC(VAX)、IBM,无一不是业界的翘楚,都是老大,结果如何呢。RISC-V背后是Patterson,是开源社区,结果还不知道呢。那些出现过又消失的指令系统呢,他们背后的势力大吗? 如果设计新时代的指令系统,背后的势力是什么?如何给用户信心?如何保证过几天技术支持不会消失?如何保证未来会持续性的投入大量的人力和财力来完善和升级?谁来给你背书? 大家为什么对RISC-V趋之若鹜?可见一斑。众人拾柴火焰高,抱团取暖,势力大增。
个人分类: 观点评述|4926 次阅读|0 个评论
处理器指令系统漫谈(13):权能
dthome9180 2019-9-3 11:02
安全计算机体系结构是J. Hennessy和D. Patterson在2018年图灵奖讲演中提出的未来4大方向之一。如果说领域专用体系结构是高能效计算的延续,开源硬件和敏捷硬件开发是设计手段,那么安全计算机系统结构就是未来十年最值得突破的领域。所谓信息安全(Information Security),就是对信息的“坑蒙拐骗偷”。我们这里主要关心面向信息安全的指令系统体系结构设计,或者更关心指令集本身的设计。描述一个指令系统包含以下7个方面的特性:指令系统类型(Class);内存编址(Memory Addressing);寻址模式(Addressing Model);操作数类型和位宽(Types and Sizes of Operands);指令操作(Operations);控制流指令(Control flow instructions);指令系统编码(Encoding)。这些特性里面和安全相关的有哪些呢,未来新时代指令系统应该加入安全的特性吗。 在CAQA的6个版本中,关于安全介绍的比较少。安全这个名词主要出现在虚拟地址空间和进程保护这部分中,重点介绍段页式内存保护。在第6版中,与时俱进的增加了Intel SGX( software guard extensions )的内容,主要还是为将强进程保护和虚拟机保护。安全是如此的重要,我估计CAQA第7版中应该会单独开辟出一章或者一个专门的附录来讲安全计算机体系结构的内容。 既然有了一定的保护机制,为什么安全问题还这么严重呢,漏洞还这么多呢,网络攻击还这么猖獗呢。主要的原因是以页和段进行保护的机制粒度太粗了,缺乏对象(object)粒度的细粒度保护。而这种保护,有一个名词叫做权能(Capabilities),最早1974年ACM通讯中的论文对这个领域做了开创性的论述。【1】权能在CAQA中就是一个内存对象的base+bound,后续的研究统统以metadata来称呼,还包括一些权限。 以对象为粒度进行内存保护这么高档的概念为什么后来在大多数指令系统体系结构中都没有用到呢?而且CAQA也在历史回顾中给出了这样的总结。 原因还是在于当时没有网络,没有病毒这回事。当1986年第一次蠕虫病毒出现时,各个指令系统设计厂商也没有引起重视。当面向PC的病毒泛滥时,x86基本指令系统已经存在20年了,为了兼容不能改,只能头痛医头脚痛医脚,不断的在软件上打补丁,直到现在。想想肆虐信息领域30年的缓冲区溢出漏洞,到现在还是大多数攻击的入口,多可怕啊。原因竟然是我们用的x86/ARM指令系统,都是1970/1980年代的指令系统,根本没有安全的考虑啊。还有一个原因就是软硬件开销太大了。 1994年当时还在MIT的大教授W. Dally在ASPLOS上发表了一篇guarded pointer的论文,应该来讲是第一篇指令系统结构采用权能概念的论文,影响力却不大,但笔者认为对未来新时代指令系统设计的参考意义极大。25年了。【2】这种内嵌权能的指针,是一种标签化指针(tagged pointer),新的数据类型。 2008年ASPLOS上出现了Hardbound的论文,采用FAT Pointer技术来记录对象元数据,从SoftBound论文中借鉴的Shadow Memory的概念,将元数据存在其他位置。【3】在这个机制上,后续还扩展出很多解决空间性和时间性内存安全的体系结构技术,如CETS,Watchdog等等,就不一一列举了。 2014年英国剑桥大学在ISCA上发表了CheriMIPS的论文,采用胖指针技术,期望从指令系统设计出发,包括编译、库、操作系统、虚拟机、编程语言一系列的解决安全问题。野心很大,项目很大,影响力很大。 2017年Intel推出了x86的一种扩展MPX,通过类似页表的机制保存每个内存对象的元数据,并相应设计了系列指令扩展来检查内存访问是否越界。 总之,安全是未来的体系结构领域的首要研究方向,新时代指令系统设计也必须从零开始支持权能,虽然是25年前就已经提出来了。目前的x86和arm只是在之前的基础上打补丁,RISC-V也没有这方面的设计。所以新时代指令系统大有可为,必须支持安全。 关于安全硬件和硬件安全,之前提到了Ruby Lee教授现在是学术界的专家,可参考2014年Hotchip上的系列tutorial。Intel/AMD/ARM的安全专家和Lee教授分别作了精彩的报告。 【1】Fabray, R. S. (1974.07). Capability-Based Addressing, ACM. 【2】Carter, N. P., et al. 1994. Hardware support for fast capability-based addressing. ASPLOS-6'94. Proceedings of the sixth international conference on Architectural support for programming languages and operating systems. San Jose, California, USA, ACM: 319-327. 【3】Devietti, J., et al. 2008. Hardbound: architectural support for spatial safety of the C programming language. ASPLOS-13'08. Proceedings of the 13th international conference on Architectural support for programming languages and operating systems. Seattle, WA, USA, ACM: 103-114. 【4】Woodruff, J., et al. 201406. The CHERI capability model: Revisiting RISC in an age of risk. ISCA-41'14. 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA). 【5】 Oleksii Oleksenko, Dmitrii Kuvaiskii, Pramod Bhatotia, Pascal Felber, and Christof Fetzer. 2017. Intel MPX Explained: An EmpiricalStudy of Intel MPX and Software-based Bounds Checking Approaches. CoRR abs/1702.00719 (2017). arXiv:1702.00719 http://arxiv.org/abs/1702.00719
个人分类: 观点评述|6236 次阅读|0 个评论
处理器指令系统漫谈(12):能效
dthome9180 2019-9-2 13:04
2007年第四版CAQA和第三版在指令系统方面,去掉了DSP相关的专用指令系统的介绍。可能为了减少篇幅,第三版正文800多页,第四版将指令系统介绍和Cache的基础部分放在了附录里。当然这时指令系统大战已经尘埃落定,除了嵌入式系统(可配置指令系统tensilica等)已经很久没有新的桌面/服务器的指令系统出现了。指令系统设计的重要性在学术和工业领域不像之前那么关键了。 2012年第五版CAQA比第四版又做了重大的调整,将存储系统提前到第二章,然后讲指令级并行、线程级并行,增加了数据并行/SIMD/GPU(之前Vector计算在附录里),新增了数据中心计算一章。附录中指令系统的部分倒是和第四版没有太大区别。 CAQA真是一本与时俱进的好教材,不愧于体系结构领域“圣经”的称号。 从2000年代中期开始,指令级并行的研究遇到了“功耗墙”,以提高频率和指令吞吐量为主要性能提升手段的传统思路不行了。传统的风冷散热使得服务器芯片的峰值功耗顶多140W左右,桌面和笔记本计算机芯片更低几十瓦,而对性能的追求却永不停止,所以能效性(Energy-Efficiency)成为过去10年的计算机体系结构的主要战场。 1995年UC Berkeley的研究者发表了一篇论文,详细的讨论了处理器芯片的能效性,这会议笔者孤陋寡闻没有听说过,文章影响力却不小。【1】 作者提出每单位能量能执行的操作数量是衡量能效性的指标(后来也有文章提出能量延迟积的),现在一般用GFLOPS/W。论文提出三个原则:高性能就是高能效(功耗不变);降低频率不是高能效(动态调压变频可以);追求操作响应延迟会限制能效性(这个很对,但现在越来越重视延迟了)。 高能效技术有很多方向,这里只讨论指令系统相关的。2008年Stanford大学的大教授 William J. Dally在IEEE Computer杂志的第7期发表了《 EfficientEmbeddedComputing 》【2】,详细的介绍了简单RISC处理器的能量消耗分布,纯粹数据计算能量只占全部能量的6%,可见当时处理器的能效性非常不好。 2010年前后对指令级并行、多核、GPU等能效性的研究取得了结论性的成果。主要有几篇文章,ISCA 2010年UC Berkeley的大教授 Mark Horowitz,发表了两篇文章,详细的挖掘了当前高性能处理器的能效性和各种处理器微体系结构的能效性对比(实验用的tesilica可配置的处理器生成环境),提出以RISC为代表的指令级并行来提高性能的能效性极差。并提出Magic Instruction,也就是复杂数据运算的专用指令(单指令包含大量数据运算)是未来的解决能效性的重要手段。这两篇文章其实为传统的追求指令级并行方向敲响了警钟。【3】【4】 2011年ISCA发表了大牛D. Burger学生的一篇里程碑式的论文Dark Silicon,论文指出增加核数和线程数来提高算力、提高能效性存在极限,并不是长久的方法,从另一个层面印证了复杂的多数据运算指令的重要性。【5】 可以说2016年出现的TPU就是这样的,可以一条指令执行矩阵运算。这里要提一下中国科学院计算所的陈云霁研究员,2014年在AI加速器领域发表了开先河的论文,扬了中国的眉吐了中国的气。【6】 2014年Mark Horowitz教授在ISSCC上发表了一篇总结文章,提出加速器和ASIC能效性最好。J. Hennessy和D. Patterson在2018年图领奖讲演中提出的领域专用体系结构(Domain-Specific Architecture, DSA)概念,给这类高性能高能效体系结构研究的未来方向定了个名字(不愧为起名字的高手)。 这些研究都从另一个层面说明了为什么传统“极简”RISC处理器会遇到滑铁卢,而x86和ARM这种指令功能复杂(先无论指令格式是否RISC)、单指令字(4字节)操作数量多的指令系统,会成功和长寿的原因了。 反观RISC-V的基本指令集超级简单,从表面上看好像违反了能效性的原则。但是,笔者认为正是将基本指令系统设计的简单,又设计了可扩展指令的机制,才能更好的适应未来领域专用指令系统的需求。 提醒感兴趣的读者,千万不能用RISC-V去重新走一遍SPARC、MIPS、PA-RISC、ALPHA、PowerPC的老路啊,再看看Intel从Pentium 4微结构后退回到之前的微结构然后做多核的教训啊。 终点又回到起点,先说“简单好”,现在又“复杂好”,到底啥好?只能先暂定“基本指令要简单、专用指令要复杂、指令编码要简单、指令功能要复杂”。以后慢慢讨论吧。 到现在为止,我们已经有10条原则了, 兼容、微结构无关、代码密度、开放、可扩展、编码格式简单、软硬件协作、权衡、并行、高能效。 还有没有了,还有两条,凑成“十二”吧(现在十二时辰比较火)。以后慢慢讲述吧。 这次参考论文较多,大家多读读有好处,舒心活血、强脑健体。 【1】Burd, T. D. and R. W. Brodersen. 1995. Energy efficient CMOS microprocessor design. HICSS-28'95. Proceedings of the Twenty-Eighth Annual Hawaii International Conference on System Sciences. 【2】Dally, W. J., et al. 2008. Efficient Embedded Computing. Computer 41(7): 27-32. 【3】Rehan, H., et al. 2010. Understanding sources of inefficiency in general-purpose chips. ISCA-37. Proceedings of the 37th annual international symposium on Computer architecture. Saint-Malo, France, ACM. 【4】Omid, A., et al. 2010. Energy-performance tradeoffs in processor architecture and circuit design: a marginal cost analysis. ISCA-37. Proceedings of the 37th annual international symposium on Computer architecture. Saint-Malo, France, ACM. 【5】Hadi, E., et al. 2011. Dark silicon and the end of multicore scaling. ISCA-38. Proceeding of the 38th annual international symposium on Computer architecture. San Jose, California, USA, ACM. 【6】Horowitz, M. 2014. Computing's energy problem (and what we can do about it). ISSCC'14. 2014 IEEE International Solid-State Circuits Conference Digest of Technical Papers (ISSCC). 【7】Chen, T., et al. 2014. DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning. ASPLOS-19'14. Proceedings of the 19th international conference on Architectural support for programming languages and operating systems. Salt Lake City, Utah, USA, ACM: 269-284.
个人分类: 观点评述|5565 次阅读|0 个评论
微处理器指令系统漫谈(10):并行
dthome9180 2019-8-29 14:48
PowrPC在1993年发布后,基本上就没有面向桌面和服务器市场的新型指令系统出现了。各大处理器厂商开始在三个方面展开竞争,提高处理器的性能,主要是多发射推测式乱序执行机制(指令级并行ILP)、Cache层次结构(存储级并行MLP)和SIMD扩展指令(数据并行)。前两个属于处理器微体系结构的范畴,可参考John P. Shen和M. Lapasti的《Modern Processor Design: Fundamentals of Superscalar Processor》一书。 2003年CAQA第3版仍然将指令系统原理这部分放在了正文的第二章,第4版之后所有指令系统的内容都放在附录中了。CAQA第3版还有一个比较大的变化,就是增加了DSP/Media处理器指令的介绍,在第二章专门介绍了Trimedia TM32这个多媒体处理器,而在第4版之后这部分又消失了。另外在附录的RISC综述中增加了各大指令系统SIMD扩展指令的内容,如下图所示。 我们看到5大RISC指令系统都增加了SIMD指令扩展,最早的是1995年PA-RISC MAX2,最晚的是2000年PowerPC AltiVec。这类指令的特点是数据并行,32位字可以包含4个1字节数据和2个半字数据,在一个操作码的命令下并行运算,产生多个结果放入一个32位字中。如果是64位指令系统,可以放更多的字节数据和半字数据。这样做的背景是,在数字信号处理、图形计算和多媒体应用中,数据往往是比较短的1字节或2字节类型,而相邻数据的计算往往相同。这样做的好处是提高性能,一条指令做以往多个指令的事情,还可以提高访存带宽。 最早出现的文章是之前提过的HP的Ruby Lee,在1995年IEEE Micro杂志上发表的论文【1】。之后Sparc、Intel和PowerPC也分别提出了自己的SIMD扩展指令【2】。从上表中我们还能看出,又是Alpha的指令扩展最简单,“频率至上”的大旗抗上就不放下了。Intel也对MMX非常重视,分别在IEEE Micro和ACM通讯上发表两篇文章介绍MMX扩展指令,而且MMX也大受欢迎,取得了商业上巨大的成功和社会影响力。【3】【4】Intel在后继相继推出SSE系列和AVX指令系统扩展。 数据并行的好处一幕了然,2000年代后期兴起的GPGPU(向量计算)和2010年中期兴起的TPU(张量/矩阵计算)等等都是数据并行的进一步发展。 SIMD扩展指令的另一个好处是代码密度大,之前需要多次循环的功能,现在一条指令就实现了,静态和动态指令数目等大大降低。SIMD扩展指令可谓有百利而无一害,可能编译稍微难做一些,但问题不大,大不了手写汇编加速函数库。 SIMD扩展指令一条指令进行多个数据计算,包括CICS指令也是一条指令多个操作。那么前面讲过的CPU性能公式就不太适合比较不同指令系统处理器的性能了,IPC或CPI中I指的是简单RISC单周期指令。有学者撰文解决了这个问题【5】。对于相同算法和相同高级语言写出的程序,不同指令系统的指令(4字节)条数不一样,但总体上所需要做的基本操作数量几乎是恒定的,因此CPU性能公式可以写成 Perf. = 1/Time = f / (#instr X OPI X CPO)= f X OPC / ( #instr X OPI) 这里OPI是每条指令字(4字节)包含的基本运算操作,是指令系统本身特有特性。 OPC和CPO指得处理器每周期完成的基本操作数,是微结构所带来的性能。 Intel这种CISC处理器就前端将复杂指令翻译成简单RISC微操作然后再用RISC超标量执行的。用这个公式我们就可以比较不同指令系统处理器之间的性能了。可以看出在微操作发射宽度和流水线深度和频率相似的情况下,往往复杂指令代码密度大,取指带宽利用率高,会获得更好的性能,当前仅存的x86/arm/power都有类似的特性,每指令字的平均基本操作数目多。 【1】Lee, R. B. 1995. Accelerating multimedia with enhanced microprocessors. IEEE Micro 15(2): 22-32. 【2】Diefendorff, K., et al. 2000. AltiVec extension to PowerPC accelerates media processing. IEEE Micro 20(2): 85-95. 【3】Peleg, A. and U. Weiser. 1996. MMX technology extension to the Intel architecture. IEEE Micro 16(4): 42-50. 【4】Peleg, A., et al. 1997. Intel MMX for multimedia PCs. Commun. ACM 40(1): 24-38. 【5】Sima, D. 2004. Decisive aspects in the evolution of microprocessors. Proceedings of the IEEE 92(12): 1896-1926.
个人分类: 观点评述|6665 次阅读|0 个评论
处理器指令系统漫谈(9):老大
dthome9180 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的总线架构而成。 设计目标:(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位指令系统。 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都在后续的扩展中加入了这条指令。 第二,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 RD. 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.
个人分类: 观点评述|6307 次阅读|0 个评论
处理器指令系统漫谈(8):频率
dthome9180 2019-8-27 16:18
DLX指令只出现在CAQA第一版和第二版用作教学之用,其指令助记符基本和MIPS相近,可以理解成MIPS的教学版。从CAQA第三版开始到第五版,DLX消失了,MIPS成为该教材的基础指令系统。 2003年的CAQA第三版终于在10年之后将Alpha指令系统写入了其RISC综述中,毕竟Alpha在业界有很大的影响,一直忽略总不好。如下图所示。 这个表在CAQA的第3-5版中一直没有发生过变化,其实这个表就是RISC的最主要的5个面向台式计算机和服务器计算机的主流RISC指令系统了。按时间顺序先来聊聊Alpha指令系统。 第一版Alpha AXP手册发表于1992年,Alpha是64位指令系统。1993年2月ACM旗舰杂志ACM通讯Communication of the ACM用了整整一期介绍alpha指令系统和相关的软硬件成果,气势宏大。这些文章在1992年已经在DEC刊物Digital Technical Journal的第4期发表过。【1】【2】 首先来看看Alpha指令系统设计的目标,DEC公司毕竟设计了VAX指令系统和PDP-11小型机,所以第4条无可厚非,在alpha指令系统中保留了VAX的浮点格式和一些指令,还要二进制兼容VAX和MIPS指令系统(DEC 用MIPS指令系统设计了个人工作站DECstation),所以动态二进制翻译机制被引入指令系统设计。兼容VAX的操作系统,所以有了PALCode指令。有点复杂了,历史包袱太沉重了。从这里也可以看出Alpha和MIPS的渊源颇深。 关于对高性能的分析,随后文章认为之前15-25年计算机的性能增长了1000倍,那么有理由认为今后20年计算机性能的增长仍然是1000倍。Alpha就是按照这个预想设计的。Alpha预计性能增长中10倍来源于频率、10倍来源于微体系结构(多发射等)、10倍来源于多处理机并行。后两个预测很值得期待和努力,但DEC关于频率的重视有待商榷。Alpha处理器在1990年代就能设计出GHz的处理器了。但到10年后的2003年,频率的增长停止了,Denard等比缩放定律逐渐失效了。到了现在25年后了,最高频率也就4GHz上下。 但是Alpha却为了高频率付出了巨大的指令系统面的努力。其中有一点为了减少Load的访问cache的延时,去掉了自动对齐的功能,如果你访问了非字对齐的字节或者半字,你需要两条指令,一条load接着一条移位指令,如果需要符号扩展,需要三条。 Alpha的寻址模式也只有一种,减少访存指令地址计算的延时,下图是CAQA中的RISC寻址模式比较。 Alpha指令系统体系结构不支持精确例外(Trap)。 所有这一切都是为了更高频率,为了更宽的发射宽度。也更严重的违背了组成无关、微结构无关、timing无关指令系统设计原则(IBM)。 将一些常见指令和寻址模式拆成更小的指令,用指令序列实现,增加了指令间的强相关,必须要采用更大的动态指令窗口来支持,利用率往往不高。后来Alpha为了提高整体性能追求多线程技术(提高计算资源利用率),最后21564进一步计划支持同时多线程(SMT),而多线程技术又对Cache和主存系统产生更高的要求,然后1990年代末的“存储墙”问题,然后是2000年代中期的“功耗墙”问题。一个又一个不断地打击着那些“极简”的RISC指令系统。 在这个时期,Intel凭借其强大的半导体工艺优势,也染上了频率综合征,Pentium4的流水线竟然20多级,L1 Cache竟然只有4KB。Intel后来和HP联合继续开发EPIC【3】,期望用编译技术来代替超标了的动态指令调度进一步提高频率,强推x86不兼容的Itanium技术,投了上千亿美金,后来就没有后来了,这样的编译太难做了。 2003年AMD推出兼容32位x86的AMD64(x86-64)的Opteron处理器之后,所有曾经的经典RISC处理器都不行了,最后只有IBM的Power v3.0(PowerPC+POWER)指令还有些市场(现在估计也不行了,开放了OpenPower)。Sparc归了Oracle封闭了,DEC被康柏收购后又被HP收购,而最终都被Intel吸收了。 1990年代中期到2000年代中期的“高频率就是高性能”现在看来更多是Intel出于商业竞争的考虑了,笔者不相信Intel不懂高性能不等于高频率这个事实。但用户不懂啊,你看intel的处理器性能就是比AMD的好,频率就是高,所以高频率等于高性能很合理啊。 在CAQA的书中,CPU性能公式一直贯穿前后。性能=1/执行时间=频率 x IPC(每周期完成执行指令数)/ 动态指令总数量。只追求频率而忽视IPC(多发射乱序执行的效率)和动态指令数(代码密度),是要付出历史代价的。 而Intel追求频率,x86是CISC代码密度低,Intel处理器微码最多3读操作数密度也不差,超标量技术其实大家都差不了太多,关键是自己有一堆集成电路芯片加工工厂,工艺技术至少领先1-2代,各种技术可以做纵向整合。所以Intel追求频率当时还是有点硬道理的,但也差点闪了腰,好在及时调整重归x86-64,大谈“高频率不等于高性能”,从此一统江湖。 来看看2001年的综述文章【4】中性能比较图,每MHz的Spec得分Alpha最低,一旦频率进步遇到瓶颈,就全凉了。而增加频率还有另一个缺点就是功耗,power=1/2aCV 2 f,有文章说电压和频率是相辅相成的,所以功耗的增加大概和频率成3次方的关系,盲目追求频率,功耗增加很大。而影响功耗的封装技术可是几十年变化很小,散热技术也是到这几年才敢大规模用上水冷。 在这方面RISC-V也是比较简单的指令系统,要引以为戒啊,找准定位,不要盲目自大妄想通吃啊。好在RISC-V支持一大堆的扩展指令,可以开发数据并行,而单指令功能比Alpha还是强一些,和MIPS接近。 另外,在Alpha的手册里面有这样一段 与PA-RISC一样,Alpha指令系统也充分认识到了编译-微体系结构协作的重要性,在分支指令、Cache预取和TLB方面设计了丰富的hint机制。这个hint机制我们在设计新时代指令系统时应该重点关注。 【1】Richard, L. S. 1993. Alpha AXP architecture. Communications of the ACM 36(2): 33-44. 【2】McLellan, E. 1993. The Alpha AXP architecture and 21064 processor. Micro, IEEE 13(3): 36-47. 【3】 Michael S.Schlansker andB. Ramakrishna Rau. 2000. “EPIC: Explicitly Parallel Instruction Computing”. Computer, IEEE 33(2): 37-45. 【4】 Ronen, R., et al. and John P. Shen. 2001. Coming challenges in microarchitecture and architecture. Proceedings of the IEEE 89(3): 325-340.
个人分类: 观点评述|3968 次阅读|0 个评论
处理器指令系统漫谈(7):大厂
dthome9180 2019-8-26 16:19
前次写到“组成无关”(微结构无关)应该是指令系统设计的第6个原则。 在IBM 801、Berkeley RISC、Stanford MIPS等先驱之后,RISC指令系统已经成为共识,美国几个计算机大厂分进入RISC指令系统设计领域。来看看1996年出版的CAQA第二版中RISC综述中的指令系统列表,如下图所示。有意思的是,作者没有介绍Alpha指令系统是因为没有版面了,还是因为和MIPS太像了。 惠普的PA-RISC、IBM的PowerPC和DEC的Alpha都是1980年代末、1990年代初推出的,其中PA-RISC最早。惠普公司是硅谷的创始者这一,早期以测试检测设备起家,1970年代向计算机领域转型,采用Intel和Motorola的芯片设计微机,采用自研芯片设计小型机。1981年开始组织人力研究处理器指令系统,并在1986年推出了PA-RISC指令系统,PA是精确架构Precision Architecture的缩写。这个工作的主要思想发表在1985年HP Journal第8期上,名为Beyond RISC。【1】 从这个项目的名称Spectrum(频谱),设计目标是广泛的市场适应性,工艺无关和实现无关、支持容易地将已有的软件应用移植到新的系统。惠普公司处理器设计方面没有历史“包袱”(兼容),全部重新开始。研究方法采用不断迭代的方法,从评估已有软件的性能和特性出发。研究组主要在IBM 370上统计了大量程序行为的统计信息,得出结论是采用RISC指令系统。【2】【3】 Spectrum研究项目最终决定大量使用Cache结构,如下图所示,并将Cache和TLB的功能开放给软件可以控制,因此起名精确架构,希望操作系统能对所有硬件通过指令进行精确的控制。 PA-RISC的总体介绍在1986年的HP Journal第8期发表【2】,其设计理念可以从题目中得到“Simple, but not simpler”尽可能简单,但不能太简单。从这篇论文中,可以看出,PA-RISC无疑是大厂设计必出精品,后续30年出现的任何通用处理器几乎没有出现和PA-RISC结构上颠覆性的差异。 遗憾的是PA-RISC和早期的RISC一样也没有做到“组成无关”(微结构无关),PA-RISC采用了delayed branch、delayed load/store和delayed interrupt等等针对单流水线的指令系统架构,为了支持精确中断和延迟转移的矛盾还设计了附加的结构。 PA-RISC曾经在商业竞争中取得过辉煌,市场份额曾经排列在IBM和DEC之后的第3名,但最终在2000年代初在和SUN的竞争中处于劣势,最后虽然提出了著名的EPIC理论,但最终只能和Intel合作设计itanium了。 HP公司是一个产品广泛的公司,测试测量设备、计算机、打印机等等,也许不像其他计算机企业一样“专注”于处理器设计和计算机业务,导致最终HP收购了康柏后,采用x86处理器(价廉物美)设计各类计算机,最终在PC市场上登上了头把交椅,但逐步放弃了PA-RISC。 PA-RISC仍然有很多宝贵的技术可以在设计新时代指令系统时参考: 1 条件执行,这里叫combined operations,指令在完成功能任务的同时检查条件位是否符合,如果不符合则按“无操作NOP”处理。这个技术非常适合在编译中减少短分支指令块对分支预测器的影响。ARMv4指令系统全部指令都是条件执行的,x86后来也加入了cmov指令系列。RISC-V没有这类指令。 2. Cache Hint技术,在load/store指令中有2比特的cc位用来“暗示”硬件该指令的局部性特性或一致性特性。这种编译指导的软硬件协作技术在后继的许多处理指令系统中都经常出现。RISC-V也有这个特征。 PA-RISC的介绍性论文出现在IEEE Computer杂志的1989年第一期【4】,作者是Ruby Lee。Lee教授目前在Princeton大学,曾经提出过面向多媒体的SIMD指令扩展技术,近十几年主要研究安全体系结构,在Cache抗侧信道攻击领域研究成果颇丰。 【1】Joel S. Birnbaum and William S. Worley,Jr. 1985. Be yond RISC: High-Precision Architecture. Hewlett-Packard Journal 36(8): 4-10. 【2】Michael J. Mahon, RubyBei-Loh Lee, Terrence C. Miller, Jerome C. Huck, and William R.Bryg. 1986. He wlett-Packard Precision Architecture: The Processor. Hewlett-Packard Journal 37(8): 4-21. 【3】Joseph A. Lukes. 1986. Hewlett-Packard Precision Architecture Performance Analysis. Hewlett-Packard Journal 37(8): 30-39 【4】Lee, R. B. 1989. Precision architecture. Computer 22(1): 78-91.
个人分类: 观点评述|3457 次阅读|0 个评论
处理器指令系统漫谈(6):大学
dthome9180 2019-8-22 11:33
我们已经总结了5个指令系统设计的原则了:兼容、代码尺寸、开放、可扩展、简单。 进入1980年代,开启了RISC的时代直到现在。然而,RISC这个概念只是指指令集简单而已,是否所有的RISC指令系统体系结构都整体简单呢,ISA中除了指令集的其他Architecture的简单与否是否也是决定指令系统是否成功、是否长寿的关键因素呢。 先来看看CAQA第一版中RISC综述介绍的早期的RISC指令系统,如下面的照片所示 之前介绍过了,DLX专门为CAQA设计和MIPS类似。i860是Intel设计的,由于x86的极大成功,i860就无疾而终了。M88000是Motorola设计的,很快IBM/Apple/Motorola决定联合开发PowerPC指令系统,所以M88000昙花一现。这两个指令系统从CAQA第二版开始就消失了。 SPARC和MIPS是大学学术成果的衍生,值得介绍一下。MIPS以后再说(也没什么好说的,去看CAQA第3版到第5版,去看两位作者另一部经典教材Computer Organization Design: The Hardwae/Software Interface)。先说说脱胎于最早出现的Berkeley RISC I/II的SPARC指令系统,Sun公司1984-1987年多年研究后推出了SPARCv7指令系统【1】,然后91年SPARCv8,然后94年SPARCv9,然后UltraSPARC,然后OracleSPARC。读了SPARC和之前Berkeley RISC的相关论文后,笔者发现SPARC指令系统”实在不简单”。 先说优点: 1. SPARC指令系统是开放的,是IEEE的一个标准,谁都可以用,日本设计了很多SPARC处理器。SPARC也曾经是很多开源处理器设计的首选。 2. SPARC指令集是RISC的,1987年第一版只有53条定点指令,13条浮点指令。 笔者认为,SPARC指令系统有悖于指令系统体系结构早期定义中的 timing independence、“架构和微结构分离”等原则。 SPARC和早期的RISC I/II的特色有两个:寄存器窗口(Register Windows)和延迟指令(delayed instruction)。 寄存器窗口用来支撑函数快速调用和返回,在ARM中也有类似的设计。但是在Patterson的经典论文【2】中竟然出现了这样一段话,因为Berkeley当时没有编译专家。这个技术带来的结果就是物理寄存器个数多,设计了一大堆状态寄存器,并且和C语言System V ABI不同。关于这个问题,Hennessy在【3】中提出了3个缺点,其中一个就是当时的编译技术已经能很好的利用寄存器堆了,没有必要用寄存器集register set这种技术。 延迟跳转专门针对流水线设计,这显然是“微结构相关的”。这个技术被之后的IBM PowerPC点名批判,不利于多发射乱序指令流水线,被硬件转移预测技术代替了。而直到现在SPARC的手册中仍然为了兼容保留了这个技术,并为此发明了众多指令和状态寄存器。MIPS I也是支持延迟跳转的,但是从MIPS II开始就被去掉了。 SPARC还有tagged architecture技术,还有PSR,还有ASI,还有nPC,还有复杂的多处理器支持内存同步等等一大堆技术和名词,技术真的很优秀,但理解起来很费事。这些怎么在大学课堂上教学生啊,怎么培养下一代啊。 而且为了支持高级语言,专门保留了对Smalltalk 指令级支持 (SOAR架构)【4】 。Bekerley还研究过对 LISP语言支持的指令系统(SPUR架构)【5】。虽然这两个高级语言非常著名(面向对象C++、字节码Java、动态类型Python等等元素都有),但是应该来讲还是影响了SPARC的通用性和简单性。高级编程语言千千万,为啥为了这两种语言专门设计指令,一旦这两个高级语言不流行了,岂不鸡肋了。 SPARC处理器和工作站曾经在2000年前后的互联网时代初期大放异彩(很大的原因是价格适中),后来被x86-64服务器替代了,后来处理器RTL和操作系统源码都开源了(OpenSparc T1/T2轰动一时),后来被Oracle收购了又不开源了。 还有,RISC-V的命名源头就是RISC I、RISC II、SOAR、SPUR后第5个Berkeley开发的RISC指令系统,所以叫RISC-V。好在RISC-V吸取了经验教训,通篇看不到任何微结构相关内容。 大学是产生前沿思想的地方,但是由于资金和人力存在一些限制,由于对前沿技术的迷恋,在处理器指令系统这个领域中往往会起个大早赶个晚集。 当然RISC处理器一直被x86 CISC处理器压制的关键是“市场”。个人PC市场被x86占领之后,很少有那种量大面广的应用市场出现了,众多RISC处理器只能去竞争市场有限的高性能计算市场。而一旦x86-64借着“兼容”的优势进入这个市场,又借着开源Linux的东风(想想为SPARC开发Linux就头痛,虽然笔者也不太懂操作系统),RISC处理器又没戏了。当然也有例外,那就是2000年代中后期出现的智能手机和移动终端市场,ARM这种“ CISC内涵的 RISC ” (平均每4字节操作数多)的指令系统,也是来源于英国剑桥大学,终于发扬了RISC的光大,报了一箭之仇。后来ARMv8 AArch64杀入服务器处理器市场,但仍然很难撼动x86的根基。 讲了这么多。大家认为SPARC这种RISC指令系统简单吗?看看手册,然后咱们一起讨论。 【1】 Garner, R. B., et al. 1988. The scalable processor architecture (SPARC). COMPCON'88. Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference. 【2】Patterson, D. A. 1985. Reduced instruction set computers. Commun. ACM 28(1): 8-21. 【3】Hennessy, J. 1984 VLSI Processor Architecture. TC-33'84. IEEE Transactions on Computers C-33(12): 1221-1246. 【4】Ungar, D., et al. 1984. Architecture of SOAR: Smalltalk on a RISC. ISCA-11'84. Proceedings of the 11th annual international symposium on Computer architecture, ACM: 188-197. 【5】Taylor, G. S., et al. (198606). Evaluation of the SPUR Lisp architecture. ISCA-13'86. Proceedings of the 13th annual international symposium on Computer architecture. Tokyo, Japan, IEEE Computer Society Press: 444-452.
个人分类: 观点评述|2916 次阅读|0 个评论
处理器指令系统漫谈(5):RISC
dthome9180 2019-8-20 14:05
RISC(Reduced Instruction Set Computer)这个词是UC Berkeley的D. Patterson给出的,最早出现在1980年ACM Computer Architecture Letters中【1】。Patterson是个起名字的高手,RAID、NOW、COW等等脍炙人口、不一而足。在这篇论文中,作者首先谈到了计算机越来越复杂的原因,存储墙、微码、代码密度、市场策略、向上兼容、支持高级语言、多道程序等等。 Patterson谈到最初的思路,部分来源于和约翰.科克(John Cocke)的私人交谈(也有说是IBM的研讨会)。科克被誉为RISC的首创者,并因此获得1987年的图灵奖。RISC的最早思想出现在1960年代的CDC 6600,程序执行的大部分指令是少数一些简单指令。而针对IBM 360的一些研究也得到了相同的结果,复杂指令编译器用不好。从1975年10月开始【2】,科克主持了IBM内部的801计算机项目,采用了精简指令指令集。但是801只是IBM的试验型项目,从来也没有打算对外公开,一些信息只是在一些大众杂志报道中出现过。项目的细节,在RISC得到广泛影响后,在1982年第一届ASPLOS发表了总结性的论文。而这之前,Patterson已经在1981年的ISCA上发表了RISC-I的经典文章。【3】 【2】和【3】这两篇文章给出了RISC的基本概念: 单周期执行指令。CISC指令的核心技术之一是采用微码技术来实现复杂指令。而每一条微码(801中叫primitive instruction)可以看成RISC中的一条指令。 固定字长指令。有利于硬连线(hard-wired)实现指令译码。 只用load/store指令访问内存。 依赖编译优化的支持,支持高级语言。 其实RISC指令系统能成功的关键因素就是编译技术的成熟,这也是科克的最主要的贡献。RISC技术的两大核心是指令级并行和编译优化。科克对编译器的代码生成技术进行了深入研究,提出了一系列优化方法,如过程(procedure)集成、循环(loop)变换、公共子表达式(common subexpression)消除、代码移动(code motion)、寄存器定位和存储单元重用等等。1970年代,科克的两本著作都与编译有关,1970年的《Programming languages and Their Compilers》和1972年的《A Catalog of Optimizing Transformations》。 IBM 801的设计思想和体系结构概念引起了加州大学伯克利分校Patterson和斯坦福大学Hennessy的极大兴趣和重视,经过大量的研究、改进和发展,最后形成了RISC这种崭新的计算机体系结构。这之后,几乎所有的指令系统无一不是RISC。 Patterson开展RISC研究还有一段轶事。《计算机系统结构的新黄金时代》中讲到Patterson之前发现,如果处理器制造商遵循大型计算机CISC指令系统设计,需要一种方法来修复微码的错误。Patterson写了一篇论文,但被IEEE Computer杂志拒稿了。审稿人认为构建这样的CISC并支持在线错误修复处理器不是一个很好的想法。这也引发了对CISC指令系统复杂度的疑问,启发了Patterson开始着手研究RISC指令系统。 总之,RISC指令系统体现了CAQA中的设计原则之一“简单的就是美的”。 Simple is beautiful ! 【1】Patterson, D. A. and D. R. Ditzel. 1980. The case for the reduced instruction set computer. SIGARCH Comput. Archit. News 8(6): 25-33. 【2】Radin, G. 1982. The 801 minicomputer. ASPLOS-1'82. Proceedings of the first international symposium on Architectural support for programming languages and operating systems. Palo Alto, California, USA, ACM: 39-47. 【3】Patterson, D. A. and C. H. Sequin. 1981. RISC I: A Reduced Instruction Set VLSI Computer. ISCA-8'81. Proceedings of the 8th annual symposium on Computer Architecture. Minneapolis, Minnesota, USA, IEEE Computer Society Press: 443-457.
个人分类: 观点评述|2171 次阅读|0 个评论
处理器指令系统漫谈(4):开放
dthome9180 2019-8-4 20:33
之前我们介绍了CISC的经典指令系统大型机的360/370和小型机的VAX,总结了代码尺寸是一个比较重要的评价指标。1970年代还有两个指令系统Intel 8086和Motorola 68000。这两个指令系统都是微处理器的早期代表。关于它们我们可以从IEEE MICRO 1981年的比较论文看到。【1】具体的如下表:其中z80和x86兼容的,后两个处理器是国家半导体的NS16000系列,对现在的影响力不太大。 关于x86和68000的具体指令系统不用太关心,关键是这两个指令系统中为什么最终胜利的是x86指令系统?“技术”往往不是最决定的因素。我们来看看他们的设计目标。 8086指令系统的设计目标很简单,显得市场野心并不那么强烈【2】。 1) 兼容8080(第一个商业微处理器,8位),提高性能 2)更多的指令,16位算术运算和可中断字节串处理 3)支持可重入代码、位置无关代码和动态重定位程序 4)支持大于64KB(2MB)地址空间和支持多处理器 反观68000,从文章中看出公司的设计目标比较高大上,但也比较虚幻【3】: 1)处理器系列的体系结构级兼容性 2)易用性和可用性 3)市场性 4)可 扩充性 5)支持高级语言 还是“市场”决定了最终选择的是x86,而不是68000。 虽然68000被选为流行的Apple的Macintosh机,但Macintosh从来没有像PC一样普及(部分原因是Apple不允许使用克隆),68000并没有获得与8086相同的软件普及率。 摩托罗拉68000在技术上可能比8086更显耀,但IBM和IBM开放架构战略的选择相对于68000的技术优势在市场上起到了主导作用。 其实在当时IBM对68000也很感兴趣,但是68000的目标较高,研发时间过长。而Intel当时也想设计32位的指令系统,但是市场不等,所以Intel团队仅用了10个人周大概3个星期就扩展了8080的8位指令系统到8086的16位指令系统。最终Intel按计划(52周)完成了芯片的开发,并提供给IBM,但是公司并没有大张旗鼓的宣传(估计在技术上没啥可宣传的)。 从这个故事看出来,影响指令系统是否成功和是否长寿的一个原因是是否“开放”,在商业模式上允许尽可能多的公司来通过这个指令系统或者处理器来赚钱。Apple和Motorola选择了相对封闭的模式,所以在“市场”上输给了更开放的IBM PC和x86指令系统的Intel处理器。在之后ARM的处理器IP核,Google搜索,智能手机iOS和Andriod等能够成功大多数也都是相对“开放”的商业模式,用的人多了,软件就多了,可以通过附加的其他方式赚钱吗,而不仅仅是从计算机软硬件系统本身上。 “开放”是久经考验的商业模式,最近的RISC-V指令系统也一样采用了这种模式,吸引了众多的开发者,势头强劲。如果今后面向新时代设计的指令系统也应该尊崇“开放”的原则。当然,“开放”、“ 免费 ”、“开源”并不是一个概念,需要进一步好好学习。 还有从x86和68000的设计目标来看,都支持可扩展,在指令编码上支持为未来的指令扩展提供支持,可以扩展新功能指令,也可以支持对32位、64位或者更强其他指标的扩展。 到目前为止(1970年代),我们已经总结了4个指令系统设计的原则了:兼容、代码尺寸、开放、可扩展,这四点RISC-V都做到了。进入1980年代后,微处理器指令系统进入RISC的时代,持续了30年,我们在之后讨论RISC给我们带来的启示。 【1】Toong, H. D. and A. Gupta. 1981. An Architectural Comparison of Contemporary 16-Bit Microprocessors. Micro, IEEE 1(2): 26-37. 【2】Morse, S. P., et al. 1978. The Intel 8086 Microprocessor: a 16-bit Evolution of the 8080. Computer 11(6): 18-27. 【3】Stritter and Gunter. 1979 A Microprocessor Architecture for a Changing World: The Motorola 68000. Computer 12(2): 43-52.
个人分类: 观点评述|2463 次阅读|0 个评论
处理器指令系统漫谈(3):CISC
dthome9180 2019-7-30 11:44
1970年代的指令系统是CISC(Complex Instruction Set Computer,复杂指令系统)的天下,如CAQA下表所示,所有6个版本的CAQA这个表就没变过,永恒的经典。CISC指令系统是由当时的工艺条件(小规模集成电路,硬件少)和计算机科学(编译弱)共同决定的,是极其自然性的选择,其单位字节所能表示的运算操作个数相对多(与RISC对应)。 上次我们谈了IBM 360/370对计算机体系结构和指令系统的提出目的是为了“兼容”,是为了“市场”,关键问题是软件开发成本。70多年来的计算机领域的发展,一直是用户应用先行,软件跟进,硬件再跟进,新应用再出现,循环往复直到永远。新市场、新应用、新软件会永远不停地出现,硬件要在生产工艺的若干限制下不断地改进来支持软件。 IBM 360/370指令系统设计目标之一是重视汇编、编译和其它元程序(metaprogram,应该是函数库的前身)的广泛使用。高级编程语言极大的提升了软件开发生产力,但是高级语言的编译器当时还处在初始阶段,能力不强。同时开发编译器和操作系统本身也非常复杂,开发周期长【1】。硬件设计包括指令系统如何应对这个问题呢。 IBM 360/370是大型机(Mainframe)的代表,特点就是“贵”,只能是非常有钱的政府部门和大公司才能买得起。以DEC PDP-11为代表的的小型机应运而生,经典而传奇,它使得大学购买计算机成为可能,培育了几乎所有早期的计算机学科和计算机人才。【2】1970年代中期,DEC公司发现16位的PDP-11地址空间不够用了,需要新的机器和新的指令系统,VAX应运而生。 VAX指令系统首先要考虑的就是降低系统软件开发成本的问题,架构师们决定高级语言的每条语句对应VAX指令系统的一条指令。另外VAX特别重视代码尺寸(Code Size),因为当时硬件指令存储都不大,而编译出来的二进制程序都不小。【3】【4】 而代码尺寸小,正是CISC为数不多的优点之一。这个优点在2010年代又一次被市场认可。现在流行的x86和ARM的共同点都是平均每字节操作数多的指令系统。而传统RISC每4个字节(32位)才一个操作,二进制代码尺寸大,当“存储墙”不断严峻,取指带宽会严重影响了处理器整体性能。新时代指令系统一定要重视代码尺寸这个问题,RISC-V采用混合指令长度(32/16)和指令压缩概念解决这个问题。这个问题以后还要重点强调。 1977年DEC公司提出 VAX-11的设计目标: 1) 兼容PDP-11 2) 减轻实现编译器和操作系统的负担 3) 充分利用集成电路技术的发展 VAX是一台真正的内存-内存结构计算机。VAX的这种设计被称为“高级语言计算机体系结构(HLLCA, High-Level Language Computer Architecture)”。VAX指令系统极其全面,几乎是所有指令系统的超集,在CAQA和很多指令系统相关论文中被作为指令系统量化分析的基础。 当然, “理想很丰满,现实很骨感”,HLLCA遇到了巨大的性能问题,指令系统太复杂了,使得计算机硬件的指令执行效率(单位时间执行的操作个数)非常不好。 这种HLLCA除了VAX之外,就很少有市场上的建树了,很快在1980年代,让位给了RISC指令系统。 【1】Amdahl, G. M., et al. 196404. Architecture of the IBM System/360. IBM Journal of Research and Development 8(2): 87-101. 【2】Bell, G., et al. 1970. A new architecture for mini-computers: the DEC PDP-11. AFIPS'70. Proceedings of the May 5-7, 1970, spring joint computer conference. Atlantic City, New Jersey, ACM: 657-675. 【3】Bell, G. and W. D. Strecker. 1976. Computer structures: What have we learned from the PDP-11? . ISCA-3'76. Proceedings of the 3rd annual symposium on Computer architecture, ACM: 1-14. 【4】Strecker, W. D. 197805. VAX-11/780-A virtual address extension to the DEC PDP-11 family. AFIPS'78. , ACM: 967.
个人分类: 观点评述|2716 次阅读|0 个评论
处理器指令系统漫谈(2):兼容
dthome9180 2019-7-27 15:19
是什么因素决定一种指令系统是否成功、是否长寿呢?一个答案是“市场最终成为计算机体系结构创新是否成功的关键因素”。这个答案是CAQA的两位作者John Hennessy和David Patterson的2018年的图灵奖演讲中给出的,也是在CAQA书中多次提到的。根据该演讲整理的文章发表在ACM通讯杂志的2019年第2期上,名为《 A New GoldenAge forComputerArchitecture 》。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位浮点寄存器;不同性价比的系列计算机间的二进制兼容;将体系结构和计算机实现分离等。 出现在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的经验总结中得到答案。 “兼容”意味着可减少软件开发成本,意味着新机器硬件被造出来之前就已经有大量可用的软件,意味着可以在旧机器上开发新机器的软件,意味着可以快速形成包括软件和硬件在内的新计算机系统,意味着用户在投资时,可以只考虑硬件的费用,而保留之前的软件生态。“兼容”意味着“市场”。在IBM System/360之后的所有指令系统的设计目标中,我们全都可以看到“兼容”。 其实“兼容”和“市场”是方法和结果,关键是最终用户在购买基于某处理器所构造的计算机系统时,是否已经存在大量成熟的软件可以使用,用户与计算设备的接口是软件而不是硬件。这是为什么提出体系结构概念的关键点。x86和ARM的成功和长寿,是因为市场上已经有巨量的二进制兼容的(或者虚拟机上兼容)、经过长期优化的软件可以用。 而RISC-V或者新时代指令系统能被提出,或者可能被接受的最关键的原因之一是“开源软件”,包括编译器、操作系统、虚拟机、应用程序都可以找到开源软件。这些高级语言编写的开源软件可以被编译成任何的指令系统二进制程序,因此是否具有大量成熟软件,是新时代指令系统的关键问题,但还不是最主要问题。当然,能否将所有开源软件都成功的与硬件匹配,仍然是个巨大的挑战,新时代指令系统还有很长的路要走。 下一个问题是,什么因素决定着指令系统被市场接受,逐渐成长、壮大、成熟,积累大量应用软件,最终成为某个领域的事实上的标准的呢?
个人分类: 观点评述|2998 次阅读|0 个评论
处理器指令系统漫谈(1):CAQA
dthome9180 2019-7-24 14:16
《计算机体系结构:量化研究方法》(Computer Architecture: A Quantitative Approach)是计算机体系结构领域的最经典教材,被称该领域的“圣经”。2017年CAQA出版了第六版,目前国内的英文版和中文版还没有出版。放假一般是重读经典的时间,所以从图书馆借了一本(2019年版),打算细细研读。 由于笔者一直研究指令系统和微处理器设计,所以习惯性的先看目录中关于指令系统的附录部分。CAQA的两位作者John Hennessy和David Patterson是RISC的奠基人,并因此获得2018年的图灵奖。作者在书中特别重视RISC指令系统的系统性讲述。附录A主要介绍指令系统的设计原理,附录K主要给出主流指令系统的综述,附录G和H分别介绍向量机和超长指令字VLIW。附录K/G/H,需要从网上下载电子版,所以一般读者可能不太关心。 第六版在指令系统相关部分做了很大的改动,而CAQA的第三、四、五版中的这部分内容几乎没有变化。为什么出现这种变化呢?CAQA第六版和第五版在指令系统部分中有几个主要的不同: RISC-V替代MIPS成为全书的基础指令系统,作者在附录A.9节介绍RISC-V时写了如下一段话。“RISC-V建立在30年的RISC架构经验基础之上,并“清理”大部分短期杂质和疏忽,从而形成一个实现起来更容易、更有效的架构。”由此可见作者对RISC-V的推崇。 在附录K的指令系统综述部分,服务器/桌面指令系统中增加了ARMv8指令系统。去掉了ALPHA和PA-RISC的内容,用POWER指令系统替代了PowerPC。对此,作者写了一段话“还有另外两个历史上的重要RISC处理器几乎与上面列表中的相同:DEC Alpha处理器,由DEC在1992年至2004年制造,几乎与MIPS64相同。 HP公司的PA-RISC是于1986年至2005年生产的,然后被Itanium取代。 PA-RISC与Power指令系统最密切相关,后者源于IBM Power设计,它本身就是IBM 801的后代。”这一定程度上说明,作者认为ALPHA、PA-RISC和PowerPC已经退出了历史的舞台。 在附录K中嵌入式指令系统部分,去掉了ARMv4、Thumb、SuperH和M32R,增加了RISC-V的RV64GC,保留了MIPS和Thumb-2(ARMv8e的前身)。 这种变化激发笔者找来CAQA所有的版本,从1990年第一版开始,到了2017年第六版了,回顾这进30年的6个版本,我们可以一定程度的看出指令系统发展的历史和兴衰。下图总结了6个版本涉及的指令系统。 图中蓝色的是70年代的CISC指令系统,CAQA的6个版本都介绍了,第二版比较特殊没有详细介绍这些CISC指令系统细节。白色的是80-90年代的RISC指令系统,其中灰色打叉的表明某指令系统从该版的CAQA中删除了。M88000和i860只出现在第一版,DLX作为CAQA第一版和第二版的基础指令系统是专门为这本书而设计的,从第三版开始被MIPS取代。从2003年第三版到2012年第四版,一直是MIPS作为基础指令系统贯穿全书。金色的是2010年后出现的指令系统,x86指令系统40年来一直在不断的扩充,每一次更新都可以视为新指令系统。从第四版开始增加对VLIW和EPIC的介绍。当然,变化最大的是最新的第六版,很多曾经的经典成为历史。 笔者从维基百科中找到了超级计算机(过去叫巨型机)的处理器分布,也能反映每个时代的主流处理器和指令系统,与CAQA中的数据也有一定的呼应。从下图可以看到,90年代中期到2000年中期,RISC处理器是超级计算机和服务器、工作站的主流处理器,MIPS、SPARC、PA-RISC、ALPHA、POWER等等,此消彼长,百家争鸣,百花齐放。2000年代初期IA-64/EPIC(Itanium)曾经辉煌一时。而2000年代中期到现在,几乎全部是x86-64的天下,Power处理器仍然占有一定份额(CAQA中POWER替换了PowerPC的原因)。 以上这些数据能揭示指令系统设计和处理器发展的那些内在因素呢?成功的、长寿的的指令系统需要哪些特质呢?这需要首先回顾微处理器指令系统的发展历史,总结所有著名指令系统的设计目标和特色,提炼出设计指令系统所需考虑的特性。然后从未来的工艺技术发展和应用需求出发,讨论指令系统设计问题。这是要在x86和ARM已经成为事实上的指令系统标准并牢牢占领各级处理器市场,在开放的RISC-V异军突起并在物联网、领域专用加速器等领域攻城略地的背景下开展的讨论。 回想起2017年中科院包云岗研究员提出的关于指令系统的问题“中国是否应该再次考虑推行指令及国家标准?是基于开放指令集RISC-V,还是重新设计一套指令集?”。 【1】 笔者希望讨论的问题是“未来AI+IoT+5G的时代,未来体系结构新黄金时代,新时代是否需要全新的指令系统?RISC-V指令系统是否足够了?新时代的指令系统应该如何设计?”
个人分类: 观点评述|3316 次阅读|0 个评论
[转载][剧情][美国][第五指令/第五位圣戒执行者][蓝光720版BD-RMVB1.08
lcj2212916 2014-3-2 01:15
◎译  名 第五指令/第五位圣戒执行者/第5指令 ◎片  名 The Fifth Commandment REPACK ◎年  代 2008 ◎国  家 美国 ◎类  别 动作/喜剧/犯罪/剧情/惊悚 ◎语  言 英语 ◎字  幕 中字 ◎IMDB评分 4.4/10 606 votes ◎文件格式 BD-RMVB ◎视频尺寸 1280 x 720 ◎文件大小 1.08G ◎片  长 90 Mins ◎导  演 杰西·约翰逊 Jesse V. Johnson ◎主  演 尹成植 Rick Yune ....Chance Templeton       凯斯·大卫 Keith David ....Max Coolbreeze Templeton       Bokeem Woodbine ....Miles Templeton       丹妮亚·莱米里兹 Dania Ramirez ....Angel       袁罗杰 Roger Yuan ....Z       Shaun Delaney ... Photographer       Don Ferguson ... Henchman / bodyguard       Cyril Gouaida ... Henchman / bodyguard       Lex de Groot ... Police officer       David Ismalone ... Henchman / bodyguard       Erik Markus Schuetz ... Guard / Henchman       Damian Mavis ... Desk Sergeant / Henchmen       Antonio Rose ... Roadie (as Anthony Loffredo)       Jonathan Samson ... Roadie       Ron Smoorenburg ... Gang member       Boo Boo Stewart ... Young Chance ◎简  介  在曼谷,一名杀手想洗手不干,因为他发现新的任务离家太近。结果,他发现自己成为杀手集团各位专业杀手的袭击目标。 下载地址: http://www.400gb.com/file/58951270
1468 次阅读|0 个评论

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

GMT+8, 2024-6-2 20:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部