说起CISC和RISC机器的,一个称之为复杂指令计算机,另外一个称之为精简指令计算机。复杂指令计算机方面主要代表有大名鼎鼎的X86架构,8位cisc嵌入式代表主要有因特尔的8051,16位的有80196,32位的有瑞萨的CISC架构,具体啥名字忘记了,相对比较非主流。精简指令计算机代表有arm,mips,sparc,powerpc,以及一些非主流的cpu。
risc方面我只用过arm和mips,感觉这两家公司其实在技术方面,早期mips是完全领先于arm,体系架构设计也比arm要简单实用,并且中期的mips架构也曾经用到了sgi公司的高性能超级计算机上,可谓是经验累累,然而后期mips的管理层却出现了一连串的决策失误,导致今天arm市场霸主的低位,大家可以看看Patterson D A& Hennessy J 的最新版计算机组成与设计硬件/软件接口,这本书的主要介绍arm,而这两位中那位大名鼎鼎的斯坦福校长,即是mips公司的创始人,一个mips创始人写书不写mips而写arm,颇有点被逼上梁山的感觉,大家如果感兴趣的话,可以去看看那本-MIPS 体系结构透视。这本书翻译得当,写的很不错,是学习arm和mips的重要教材。为何是学习arm的重要教材? ;) 在这里在啰嗦几句,其实arm公司在撰写教材这方面真的做的很差,另外在协处理文档使用方面做的是更差。arm公司更希望你能雇佣相应的技术顾问来进行这方面的底层开发。这种赚钱的方式有点让人鄙视。哈哈。
闲话不扯了,回到本质问题上来。说到risc和cisc的区别,前段时间跟导师聊得时候,导师来了一句:cisc就是指令多,risc就是指令少,晕, :0 这种说法是绝对错误的!什么叫做risc和cisc,放在台面上的说法就是cisc的ISA是不定长的,有长有短,指令相对丰富,可以对内存中的数据进行运算操作,与之相反risc指令,一般来说ISA都是定长的,对内存的操作也只有简单的存储和读取两种方式的指令,数据全部都是放在register中去操作的。往深入的说还可以说成cisc指令一般来说都是非正交指令,risc则是正交指令,cisc计算机中寄存器数量比较少,相应的专用寄存器数量比较多,而risc寄存器数量较多,应该没有专用的储存器,全部交给编译器来做!
那么肯定会有人问了,cisc的isa这么丰富,那么它应该会碉堡了吧。其实不是这样的。
第一点是因为一块芯片的die是有限的,因此晶体管的数量是一定,如果你的isa相对比较丰富,那么你的register和cache的面积就必须做小,这样就直接导致了register个数较小和1/2/3 level cache没有办法做大,而往往决定处理器运行速度快慢是cache,而不是所谓的isa
第二点有些人可能会问了,那我们不计较成本呢,通过加大die的面积,改进设备工艺,让die上能够容纳更多的晶体管。这样问题不就解决了吗?好,问题的确是解决了一部分,但是你又没有想过,软件方面的支持呢?一个cpu要运行的快。不仅仅是硬件部分要设计的,编译器如果不支持这些高级指令,一样白搭,就相当于大量的die面积没有使用,而往往编译器的设计及开发并没有想象中cpu设计开发的那么快,因此你的cpu总是会有一部分die是属于空闲状态,并且那种优秀的编译器不仅仅价格昂贵,并且很多普通用户根本听都没有听说过。例如intel公司的ICC,敢问博客园中有几个人是专门用它来写代码?就算用它来写代码,你能够保证你用的lib都是最新的吗? 如果你说这些你都能够保证,那好,我无话可说。 :)
相对于risc机器,就完全不一样了,指令就那么多,虽然也有更新,但那是数量上相对比较少,并且定长的isa可以有效的构造流水线,加快指令级并行,提高频率,另外大量的die面积可以用来构造通用型register和cache,往往对于计算机来说,内存墙问题才是真正影响到速度的关键!与此同时,工程师们可以通过simd,乱序,超标量技术,多核等技术来加快速度。收到的效果往往比cisc要好很多,好啦,今天就讲这么多吧,改天我再给大家用举例的形式讲一讲cisc与risc的区别
参考文献
Sweetman D, 李鹏, 鲍峥, 等. MIPS 体系结构透视[J]. 2008.
JL· 亨尼西 (美), Hennessy J L, DA· 帕特森 (美), 等. 计算机体系结构: 量化研究方法: 英文版·[M]. 机械工业出版社, 2003.
Dayid A. Patter son, John L. Hennes sy[J]. 计算机组成与设计: 硬件软件接口, 2006: 368-383.
计算机组织与体系结构: 性能设计[M]. 斯托林斯 清华大学出版社有限公司, 2006.
我对risc及cisc机器的认识,布布扣,bubuko.com