人们很早就发现,虽然复杂的指令单条执行的时间要长一些,但是却能使整个程序运行的更快,原因在于:执行指令的步骤有时可以重叠,或者用不同的硬件并行执行。所以高性能计算机的指令一般要多一些。到了20世纪50年代后期,当时占统治地位的IBM意识到支持一个所有计算机都执行相同指令的计算机序列是十分重要的,无论是对IBM自己还是IBM的用户都具有很多的优势,于是IBM引入了体系结构这个属于来描述这一个层次的兼容性。他们希望同系列的计算机的体系结构相同,可以用不同的实现的方法来执行同样的指令,只是在价格和速度上有所不同。
但是如何是低成本的计算机可以执行高价高性能的计算机的复杂指令呢?答案就是Cambridge的Wilkes在1951年提出的关于解释的理念。这个理念成就了IBM System/360体系结构的一系列兼容计算机,从通过解释来执行复杂指令的低端机到不通过解释直接由硬件实现复杂指令的高端机,IBM形成了一条完备的产品线。
解释执行指令的简单计算机有很多的优势。首先,可以在解释过程中改正指令实现的错误,甚至是补偿基础硬件中的设计缺陷;其次,可以以最小的代价来增加新的指令,甚至是在计算机发货之后也可以做到这一点;再次就是结构化的设计使对复杂的指令有效的进行开发、测试和编制文档成为可能。
到了20世纪70年代的后期,人们发现几乎所有的复杂的指令都可以被解释,设计者于是开始试图弥补高级语言和机器语言之间的“语义代沟”,几乎没人想到设计一台简单点的计算机,就像现在很少人去研究设计功能简练些的操作系统一样。
到了80年代,Berkeley的一个研究小组开始研究不用解释器的超大规模集成电路CPU芯片,并首次创造了RISC这个概念,并将他们的CPU命名为RISC I,接着又推出了RISC II。这种处理器和当时的商业处理器有着很大的区别,新的CPU并不存在与过去的产品间的兼容性问题,而且它可以自由选择新的指令集从而最大限度的提高系统的整体性能。由于设计的初期就强调选用可以快速执行的简单指令,大家很快意识到设计出可以快速启动的指令才是提高性能的关键,每秒钟能启动的指令的条数要比单条指令执行时间更重要。
实际上RISC是Reduced Instruction Set Computer的缩写,而与之对应的CISC则指代Complex Instruction Set Computer。RISC的支持者认为 即使RISC需要4条或5条指令来完成CISC的一条指令的功能,但是如果RISC能比CISC快10倍的话(因为RISC并不需要解释执行),那么还是RISC的速度占优。另外,随着主存的速度越来越快,解释执行的代价已经高了很多。
也许有人会想,依靠RISC在速度上的优势,RISC机(Sun的UltraSPARC)应该已经在市场上超出CISC机了(Intel的Pentium),但事实上并非如此,这是为什么呢?
首先由于向后兼容的问题,要考虑到N多的公司在Intel系列的CPU上投资的数十亿美元的软件,同时要注意到,Intel在它的CISC架构中也采用了RISC的思想,从486开始,Intel的CPU就包含了RISC核心,能在单个数据通路周期中执行一些最简单也是最常用的指令,同时复杂的指令还是用CISC的方式执行的,这样一来,常用的指令执行速度很快,而不常见的指令执行就会慢一些。显然这种混合的方案不如纯RISC方案快,但是它却可以在不加修改旧程序的前提下给出极具竞争力的整体性能。
2008年11月8日星期六
订阅:
博文评论 (Atom)

没有评论:
发表评论