当前位置:   article > 正文

The case for reduced instruction set computer读后感_the renewed case for the reduced instruction set c

the renewed case for the reduced instruction set computer: avoiding isa bloa

The case for reduced instruction set computer读后感

介绍

计算机体系结构的设计要追求更高的成本效益。而成本包括制造硬件的成本,软件的成本,和与调试软硬件的成本。回顾电脑史会发现它倾向于制造更复杂的机器。也许人们认为,复杂性能提升成本效益。但是,这篇论文就是要告诉人们,这种假设是不一定是正确的。这篇文章想通过例子说明,精简指令体系(RISC)跟复杂指令体系(CISC)一样好。而在下一个大规模集成电路时代,RISC可能比CISC执行起来更高效率。

CISC流行的原因

CPU的速度与内存的速度

故事源于701,701的CPU比主存快10倍,709让程序中的浮点数功能变成指令,因而比701效率要高多了。后面就越来越多体系增加了复杂的指令。但通过复杂的指令去解决CPU速度和内存速度的不匹配问题,是否真的达到我们最初的目的?

微程序和大规模集成电路

跟硬件控制比起来,微程序能够让复杂的计算机体系执行起来成本效益更高。而一旦使用微程序,扩展指令集的成本就非常低了。因为微存储器的容量是2的次幂,放指令集不成问题。所以,很多传统的程序功能都被整合到体系结构里面了,比如字符编辑,整型转浮点,多项式的计算。

代码的密度

早期的计算机,因为内存很昂贵,所以要求程序要尽可能短。人们以为把指令复杂化,就能压缩程序了。然而这是一把双刃剑。因为指令越复杂,它需要越多比特,从而让CPU的负荷增大。浪费CPU跟节省内存相比,明显CPU更重要。

营销策略

很不幸,计算机企业的目标并在于设计出成本效益最高的计算机,它们的目标在赚更多的钱。它们利用复杂指令的噱头来说服客户,它们比竞争对手更优秀。而计算机体系设计者为了保住饭碗,不得不屈服于资本,并不更多地考虑复杂指令的实际使用和成本效益。某种程度上,这也不能怪企业和设计者,因为用户根本没有质疑复杂性跟成本效益是否成正比。

向上兼容性

为了保证销量,需要保证原有客户的利益,那么新的指令体系必须兼容旧的指令体系,即向上兼容。因而改善设计的方法就是不断增加更复杂的指令,而不是创造一个全新的更高效的指令体系。这无疑是让指令体系复杂性不断增加的重要原因。

对高级语言的支持

因为高级语言越来越流行,制造商就渴望提供强大的指令去支持它们。但是,没有证据表明复杂的指令体系真的达到了这一目的。相反,很多情况下复杂指令是弊大于利。

多任务的运行

分时技术要求电脑能够快速响应中断,而中断需要使用微指令和保存各种状态码。复杂的指令体系无疑是增加了这一过程的执行时间。

CISC的现状

软件成本的上升导致了软件开发越来越依赖于高级语言,因为高级语言的开发速度更快,能降低软件的开发成本。与此同时,编译器逐步代替了汇编器。编译器并不懂得优化复杂的指令,只会使用在给定的时空代价下最简单的指令。因而,复杂的指令体系中往往只有一部分指令能够被用到。

CISC的影响

技术的发展和在执行CISC指令系统存在的困难导致了几个有趣的结果:

更快的内存

半导体内存的发展让内存更快和相对便宜。而cache缓存的使用大大地降低了CPU和内存之间的速度差距。

不合理的执行

复杂的指令体系的困境在在于它很难合理地执行。因为,为了特殊功能而设计的指令不见得会比一系列简单指令执行得更快。更小的代码量不意味着执行得更快。更高级的指令也不意味着执行得更快。

设计的时间延长

虽然赋值一个CISC指令系统成本很低,但它的设计时间却很长。DEC公司设计PDP-1只用了6个月的时间,而设计VAX却花了三年时间。设计完后,也许VAX就成了三年前的老技术。这就要求,设计者在设计指令体系的时候,要能预见技术的发展,并且成为技术先锋。

设计错误的增加

复杂指令体系的一大问题就在要为设计打补丁。这意味着在控制存储器中把错误给移除。而IMB360系列却只能读不能写。为了吸取教训,370系列用了可擦除控制存储器。没有人相信最后一个错误已经被找到了。

RISC和超大规模电路技术

对CISC来说,设计一个超大规模电路的单一芯片比设计多个大规模电路的芯片要来得更加困难。以下几个因素表明RISC将会是一个合理的设计选择。

实现的灵活性

实现的灵活性很大程度依赖于能在单个芯片上设计整个CPU。在给定的技术下,无疑精简的指令体系比起复杂的指令体系更容易达到这个目的。超大规模电路技术的提高让单芯片实现变得更加可行。而精简的指令体系无疑是更适合这个技术的。

设计时间

超大规模电路的计算机要获得成功,设计是一个非常关键的因素。如果超大规模电路继续每两年芯片密度至少翻倍,那么2年的设计比起4年的设计更可能利用最新的技术,也可能更有效。

速度

成本效益的最终测试是给定算法的执行速度。更好地利用芯片区域和新技术能够加速芯片。RISC体系由于设计简单因此能在速度上获得提升。而到目前为止,我们没有证据证明复杂的指令体系能在这方面更有收益。

更好地利用芯片区域

如果有多余的芯片区域,为什么不设计CISC呢?但是,如果我们设计RISC,那么我们能获得更多的好处。随着超大规模电路技术不断发展,RISC体系结构总会比CISC体系结构更领先一步。CISC内在的复杂性导致了即使用最新技术,也不容易实现它。

支持高级语言的计算机体系

一些人可能认为简化指令体系的设计不利于支持高级语言系统,但是实际上高级语言系统的支持不见得跟系统的复杂性有关。

高级语言系统应该是有着以下特征的:

1)用高级语言去进行所有的编程、调试和用户/系统交互

2)在高级语言程序中,发现和报告语法和执行时间的错误

3)在用户程序向内部程序转换时,不需要出现转换的界面

所以应该是软硬件的组合能保证程序员总是用高级语言和电脑交互。只要达到这一目的便足够,而这个跟复杂的指令体系没有什么关系。

经验告诉我们,如果指令体系越简单和统一,那么汇编器的工作就越轻松。复杂指令系统的函数太过专门化,以至于它很少被使用,因为它在别的操作中是无用的。简单的系列指令就可以达到一条复杂指令的效果,而且性能上并没啥损失。复杂的指令很容易出现代码上的bug。

RISC架构的应用

在Berkeley,Bell实验室以及IBM中已经有一些RISC的成功应用。一些命题也得到 :RISC相比CISC,成本更低。在实验的过程中32位的RISC设计开始被提出。倘若能够证明简单的架构能够与CISC一样有效的支持高级语言,那么就完成了有效的设计。

结论

毫无疑问,定制的指令能够显著地提高一个程序的速度。然而,我们却很少发现,定制的指令能令整个系统受益。这篇文章通过对CISC与RISC的设计/应用/实现的讨论,认为RISC是提升计算机性能的有效途径,RISC可以减小复杂性提升性能并且适用于高级语言计算机系统。RISC是在VLSI和存储速度的提升的背景下被提出的,在进行RISC与CISC的讨论时,我们要依托计算机发展的背景,关注体系结构技术的发展。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/220092
推荐阅读
相关标签
  

闽ICP备14008679号