下面简单说一下CPU的两种指令集:CISC和RISC。
http://zhidao.baidu.com/question/388569767.html这个网址是百度知道的网友回答的CISC和RISC的差别
下面我来说下我的看法(个人看法,如有错误还请高手指正)
RISC是Reduced Instruction Set Computer,精简指令集计算机,典型例子是MIPS处理器
CISC
是Complex Instruction Set
Compute,复杂指令集计算机,典型例子是x86系列处理器(当然现在的x86指令还是当初cisc的指令,但是实际处理器的结构都已经变成了
risc结构了,risc的结构实现流水线等特性比较容易,在计算机前的你如果用的是intel某系列的处理器,则它使用的指令集看上去还是像cisc的
指令,但是实际上你的cpu的结构已经是risc的了)
一般CISC的处理器需要用微指令配合运行,而RISC全部是通过硬连线实现的,也就是
说,当cisc的处理器在执行你的程序前,还得先从另外一个rom里面读出一些数据来“指导”处理器怎么处理你的命令,所以cisc效率比较低,而
risc是完全通过部件和部件之间的连接实现某种功能,极大的提高了工作效率,而且为流水线结构的出现提供了基础。cisc的寄存器数量较少,指令能够实
现一些比较特殊的功能,例如8086的一些寄存器:
ax,bx,cx,dx,si,di等;段寄存器有:cs,ds,es,ss等。相对的指令功能比较特殊,例如xlat将bx中的值作为基地址,al中的值作为偏移,在内存中寻址到的数据送到al当中(以ds为段寄存器)
而risc的处理器则通用寄存器比较多,而指令的功能可以稍微弱一点,例如:
以nios嵌入式处理器来说明,nios处理器有32个通用寄存器(r0~r31),而指令功能相对x86的弱一些,而且x86进行内存访问是直接使用mov指令,nios处理器读内存用的是load,写内存用的是store,
二
者响应中断的方式也不一样,举一个典型的例子,x86的处理器将中断向量表放在了内存的最低地址(0-1023,每个中断向量占四个字节),能容纳256
个中断(以实模式的8086举例)响应中断时,将中断号对应的地址上的cs和ip的值装入到cs和ip寄存器而将原来的地址保存,并且保存状态寄存器然后
进入中断处理,请参见:
http://wenku.baidu.com/view/be670901a6c30c2259019e78.html而
risc则拥有一个共同的中断响应函数,这个函数会根据中断号找到程序向系统注册的函数的地址,并且调用这个函数。一般来说而是用的cisc指令的长度是
不定的,例如x86的xor ax,bx对应机器码是0x31d8、而push ax是0x50、pop
cx是0x59。而risc的指令确是定长的,例如32位。
如果还有不清楚的。。。。。自行百度,要理解这些概念需要一点时间