RISC和CISC的关系

CISC指令的特点是指令数量多,功能丰富,但造成的结果就是指令长度不同,执行指令需要的时间也就不同,比如在8086指令中的MOV指令,当操作数不同时,指令长度不同,执行的时间也不同,比如MOV AX,BX需要的时间为2个周期;而MOV BX,12H需要4个周期;MOV [2000H],AX需要10个周期……这样的结果就是只有当前的指令执行之后才能执行下一条指令,执行一段程序需要的时间就很长了。

而RISC指令最大的特点就是“整齐”,即执行时间大部分都相同,指令的长度也大部分相同,因此在一定时间内能执行最多的指令。并且有流水线的原理,在第一条指令被执行的时候第二条指令已经进入CPU就绪了,这样在时间上的“重叠”也加快了RISC指令的执行速度。

因此,RISC和CISC的区别在于指令的长度L和执行时间T上的不同,前者的T和L都比较单一,所以适合与批量和流水线方式的执行(就像工厂生产汽车一样);而后者的T和L长短不一,所以在执行时只能“排队”而不能“蜂拥而入”。所以在执行单位时间执行指令时RISC比CISC能执行更多的指令。

虽然RISC比CISC快,但这是有取舍的:RISC的寻址方式少,没有复杂功能指令(如没有除法指令)。而CISC的寻址方式多样,有复杂功能指令(如有除法指令)。因为除法指令消耗的时间很长,不适合与流水线方式处理,所以在RISC指令中没有除法类指令,乘法都是通过硬件乘法器完成的——可以比较51单片机和AVR单片机,前者是CISC构架,后者是RISC构架;前者有乘法和除法指令,都需要4个周期才能完成,后者只有乘法指令,但通过硬件执行只需要2个周期。但RISC可以通过多条指令的组合来完成CISC一条指令的功能,虽然可能需要更多的时间,但是在实际运行一个功能相同的程序时(如使用C语言编写),RISC生产的机器代码会比CISC有高的多的执行效率,所以说RISC比CISC快!比如在单片机上使用C语言实现相同的功能,在工作频率相同时,AVR会比51快28倍。

现在的奔腾系列CPU使用了RISC和CISC构架相结合的办法,即保留了CISC的指令的多样性,又有RISC的流水线执行方式的高速。而在早期的X86处理器(486之前)都是CISC指令系统。以P4 Prescott核心为例,前端总线为64位(八个字节),只要指令的长度小于8个字节的指令都可以一次读入CPU,这样就节省了时间(P3和之前的CPU至少要分两次把指令读入);CPU核心使用31级流水线,不管指令执行时间有多长,都在31个周期内完成,这样执行31条指令平均时间为为1周期……因此P4 Prescott可以以3GHz以上的速度执行指令,但在这只是为了抵消长流水线的缺点。如果真的纯RISC构架的CPU,那就是IBM的PowerPC处理器。

RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。 

早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。今天只有Intel及其兼容CPU还在使用CISC架构。 

RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值