最近一直比较疑惑,RISC指令集以及CISC指令集区别在哪些方面呢?趁机也就补充了相关资料,进行了一些总结。
目前CISC(复杂指令集)的代表为X86(CISC),RISC(精简指令集)的代表为ARM、MIPS(RISC)还有新兴的RISCV指令集架构。
很长一段时间,我关于处理器的相关知识,都是大学课程《微机系统原理》中的8086,甚至不涉及到x86处理器。在实际项目或者工作中,更多的却是ARM/MIPS等处理器。所以工作过程中,难免疑惑不解,张冠李戴。为什么很多基本知识在面对ARM和MIPS时不再适用,主要是因为X86属于复杂指令集系统(CISC),而ARM,MIPS属于精简指令集系统(RISC)。
load-store体系结构
RISC使用的是load-store结构。load-store结构的本质,在于RISC技术的CPU只处理(指逻辑,算术运算处理)寄存器中的数据。相反,X86却能够直接处理存储器中的数据。
RISC体系架构的CPU,存储器和寄存器之间的数据交互,由专门的load和store指令负责。存储器是指内存或者Flash(NOR Flash)等可以被CPU直接寻址的存储单元。CPU要将某个地址的数据放入寄存器中,只能够使用load指令;要将寄存器中的值存放到存储器中,只能够使用store指令。
CISC体系架构的CPU对存储器数据操作则要复杂得多。在X86下,数据的传送都是使用MOV指令。MOV指令既负责寄存器和寄存器之间数据的交互,又负责寄存器和存储器之间的数据交互。X86能够直接处理存储器中的数据,而这一点在RISC体系的CPU中是无法做到的。
将存储器单元0x00000020中的数加
本文探讨了RISC(精简指令集)和CISC(复杂指令集)的区别,以X86(CISC)和ARM、MIPS(RISC)为例。RISC采用load-store体系,指令长度固定,拥有更多通用寄存器,适合流水线处理。CISC如X86则可以直接处理存储器中的数据,指令多样但执行较复杂。
订阅专栏 解锁全文
8708





