我们马上记住本站网址,www.kcbook.pro,若被浏/览/器/转/码,可退出转/码继续阅读,感谢支持.
“要谈这个问题就要说到计算机工作的特性和发展了,计算机运算是靠无数的0、1逻辑判断组合而成。众多0、1组成了复杂的逻辑门,而众多而又复杂的逻辑门有形成了不同的功能电路,调用不同功能电路对数据进行计算,产生不同的指令运算。早期的计算机是很简陋的,比如世界上第一台电子计算机就是用电子管搭建的,后来又出现了晶体管电子计算机。这些早期的计算机简陋功能单一,那个时候是没有什么构架之分的。各行各业不同的运算要求,产生了不用的计算机型号,每一种都对应一个专业的计算领域。比如石油、化工、数学、天文、航空动力等等。
到了六十年代半导体出现后,计算机开始进入集成电路时代,经过这十年的发展,计算机结构开始复杂化,功能逐渐强大,运用面也开始逐渐广泛。为了节约成本,汤特殊行业之外的一般商业机构也能买的起、用的起计算机,一种跨领域的计算机技术开始出现,就是通用计算机,比如dec公司pdp--8。
一个数学函数,就是一条指令;一个存取动作,也是一条指令。无数的指令叠加,设计到电路之中做成集成电路,这就是处理器。为了满足不同领域的需求,各个公司都针对用户需求,将他们的一个个坚定动作操作,固话为一条条的指令,写入处理器内部电路,指令逐渐复杂起来。这个就是复杂型构架计算机的由来,也就是我在贵杂志《科学》上提到的cisc——复杂指令集计算机。
通用计算机,使用的都是这种复杂构架处理器--cisc。用户编写程序,之间调用助力器内的专用指令,进行组合运用,就可以进行需要的计算处理。将至邻近设计为程序,从数据存储器里调用,不是不可以,但书店哪有集成在处理器内快?
半导体出生到现在已经有十年了,处理器内的叠加的指令也开的越来越多、越来越复杂、各个公司、各种领域、各个不同的用户都试图将自己设计的指令加入处理器,方便他们使用。计算机应用范围的扩大,有加速了这种行为的快速增值。每一条新指令都要设计一个专用的电路,处理器在快速新增的新指令堆积下,慢慢的开始变得不堪承受。这样我就想到了risc--精简指令集计算机构架,让计算机回归最初的设计初衷。”凌世哲对这些问题早做好了准备,回答起来一点难度都没有。
“那么它们之间又什么区别呢,这两种处理器到底谁更加优秀?”
“要说明这个问题,我首先要明白cpu到底是一个什么东西,cpu说白了不是什么神秘的玩意,它仅仅只是一个执行部件,他之所以能执行,也是因为人们在里面制作了各种攻略的硬件电路,人后在用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。简单的说,如果把cpu看做一个人,首先它就要有正常的工作能力(执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要能听懂别人的话(指令集),这样它才能正常的工作。而这些集中在一起就构成了所谓的”构架“,它可以理解为一套“工具”、”方法”和“规范”的集合。不构架之间,工具可能不同,方法可能不同,规范也可能不同,这就造成了它们之间的不兼容———你给一个建筑工程师看厨师的烹饪指南,他当然不知道应该干什么了。
把计算机按照逻辑角度来分类,它们可以被分为两大类,即所谓的“复杂指令集”与“精简指令集”系统,也就是我提出的“cisc”与“risc”。属于这两种类中的各种架构之间最大的区别,在于它们的设计者考虑问题方式的不同。我们可以继续举个例子,比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了,多么简单。
这就是“复杂指令集”和“精简指令集”的逻辑区别。可能有人说,明显是精简指令集好啊,但是我们不好去判断它们之间到底谁好谁坏,因为目前他们两种指令集都有各自不同的应用领域,而且都很成功——我设计的ce400和ce8000就是复杂指令集(cisc)的代表(就是后世x86构架的雏形),而arm则是精简指令集(risc)的代表,甚至arm的名字就直接表明了它的技术:advancedrise——高级risc机。
到了这里你就应该明白为什么risc和cisc之间不好直接比较性能了,因为它们之间的设计思路差异太大。这样的思路导致了cisc和risc分道扬镳——前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。实际上也有很多事情cisc更加合适,而另外一些事情则是risc更加合适,比如在执行高密度的运算任务的时候cisc就更具备优势,而在执行简单重复劳动的时候risc就能占到上风,比如假设我们是在举办吃饭大赛,那么cisc只需要不停的喊“吃饭吃饭吃饭”就行了,而risc则要一遍一遍重复吃饭流程,负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么risc就很难吃的过cisc。但是如果我们只是要两个人把饭舀出来,那么cisc就麻烦得多,因为cisc里没有这么简单的舀饭动作,而risc就只需要不停喊“舀饭舀饭舀饭”就ok。这就是cisc和risc之间的区别。
cisc实际上是以增加处理器本身复杂度作为代价,去换取更高的性能,而risc则是将复杂度交给了编译器,牺牲了程序大小和指令带宽,换取了简单和低功耗的硬件实现。”
“它们之间有什么优点和缺点嘛?”
“cisc体系的优点:能够有效缩短新指令的微代码设计时间,允许设计师实现cisc体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。
缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。
risc体系的优点:在使用相同的晶片技术和相同运行时钟下,risc系统的运行速度将是cisc的2~4倍。由于risc处理器的指令集是精简的,它的记忆体管理单元、浮点单元等都能设计在同一块晶片上。risc处理器比相对应的cisc处理器设计更简单,所需要的时间将变得更短,并可以比cisc处理器应用更多先进的技术,开发更快的下一代处理器。
缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是risc体系的处理器需要更快记忆体,这通常都集成于处理器内部,就是l1cache(一级缓存)。
爱德森看了那自己的采访记录,又问道:“杰斯特,我可不可以这样来理解,cisc的优势在兼容性和通用性上,而risc的优势是在特殊的专业领域上?”
“是的,你说的没错,这两种构架的计算机各有各的优点和缺点,要根据不同领域和用户不同的需求采用最合适的计算机,才是最好的。”
“好的,我的采结束了,我能去参观一下你的工厂吗,听说你为牧场设计了一个新的计算机,能带我去看看嘛?”
凌世哲说道:“可以,我这就代你去看看我的新的计算机,它是世界上第一台risc计算机,我想你一点会大吃一惊的。”说完,凌世哲和爱德森以及安琪尔离开了办公室向工厂走去。