【嵌入式系统设计师笔记】——复杂指令集(CISC) vs 精简指令集(RISC)
精简指令集架构(英语:Reduced Instruction Set Computing,缩写:RISC)
是计算机中央处理器的一种设计模式。这种设计思路可以想像成是一家流水线工厂,对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。背后的主要思想是通过使用由几个基本步骤组成的指令集来简化硬件,这些指令集用于进行加载,评估和存储操作,就像load命令将加载数据,store命令将存储数据一样。
复杂指令集架构(英语:Complex Instruction Set Computing;缩写:CISC)
是一种微处理器指令集架构,每个指令可执行若干低端操作,诸如从存储器读取、存储、和计算操作,全部集于单一指令之中。主要思想是,一条指令将完成所有加载,评估和存储操作,就像乘法命令将完成加载,评估和存储数据之类的事情一样,因此非常复杂。
两种方法都试图提高CPU性能
- RISC:以每个程序的指令数为代价,减少每个指令的周期。
- CISC:CISC方法试图将每个程序的指令数量减至最少,但以增加每个指令的周期数为代价。
早些时候使用汇编语言进行编程时,人们感到有必要使指令完成更多的任务,因为汇编语言中的编程很繁琐且容易出错,因此CISC体系结构得到了发展,但是由于高级语言对汇编的依赖性降低了RISC体系结构的普遍性。
RISC的特点:
- 更简单的指令,需要简单的指令解码。
- 指令的大小不超过一个单词。
- 指令只需一个时钟周期即可执行。
- 通用寄存器数量更多。
- 简单的寻址模式。
- 较少的数据类型。
- 可以实现流水线化。
CISC的特点:
- 复杂指令,需要复杂指令解码。
- 指令大于一个单词的大小。
- 指令可能需要多个时钟周期才能执行。
- 由于在存储器本身中执行操作的通用寄存器数量较少。
- 复杂的寻址模式。
- 更多数据类型。
示例
假设我们必须添加两个8位数字:
CISC方法:为此将有一条命令或指令(如ADD)执行任务。
RISC方法:此处程序员将首先编写加载命令,接着讲数据加载到寄存器中,然后将使用合适的运算符,最后将结果存储在所需的位置。
由上面的例子我们可以看出,由于RISC程序操作的步骤较长,并且需要存储更多的存储器,所以加法操作分为多个部分,即加载,操作和存储,但由于命令的复杂程度较低,因此需要的晶体管也较少,也就简化了计算机的结构。
现如今,由于计算机技术其他领域的进步。 RAM的价格已大大降低。 1977年,1MB的DRAM成本约为5,000美元。到1994年,相同数量的内存成本仅为6美元(经通胀因素调整后)。除了像英特尔x86少数公司任然保留CISC架构的芯片,但由于RICS的优越性,嵌入式领域很多都采用RISC。和CISC架构相比较,尽管RISC架构有上述的优点,但决不能认为RISC架构就可以取代CISC架构。事实上,RISC 和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一。
在PC机和服务器领域,以X86为代表的CISC体系结构是市场的主流。在嵌入式系统领域,由于降低成本和功耗比保持向下兼容更为重要,RISC结构的微处理器将占有重要
的位置。