超标量处理器设计5-指令集体系
1. 简介
指令集体系(ISA)是规定处理器的外在行为的一系列内容的统称,它包括基本数据类型,指令,寄存器,寻址模式,存储系统,中断,异常等内容。
2. 指令类型
- 算术指令(add/ xor)
- 访存指令(load/store)
- 分支指令(branch/jump/return)
3. 异常类型
- 处理器的外部事件引起的异常(interrupt)
- 虚拟地址到物理地址的转换引起的异常(page fault)
- 指令自身引起的错误(undefine, 用户态的非法指令,整数运算时产生溢出)
- 指令自身引起的异常(trap)
4. 异常处理
从处理器外部看起来,产生异常的指令之前的所有指令都已经完成了,而这条产生异常的指令及其之后的所有指令都不允许完成。处理器会跳转到对应的异常处理程序的入口地址,开始执行异常处理程序。
5. 小结
- 为啥以前用CISC,而现在常用RISC
以前的内存贵,如果一条指令可以执行很多操作,那么程序总的指令条数就少,程序的代码量少,减少内存的占用。同时寄存器也贵,随着通用寄存器的个数增加,用于编码的rs/rd的位宽也增加,指令码的整体位宽也增加,当然就希望指令功能越复杂越好,从而减少内存占用。
首先在CISC指令集中,指令的周期数长,并且发现80%的指令只有在20%的时间内被使用。同时,CISC中通用寄存器的个数较少,就会导致程序频繁访问内存,随着CPU和访存时间的差距越来越大,就希望减少内存访问,从而采用RISC. - ARM指令集和MIPS指令集的区别
ARM支持多种寻址方式,如寄存器间接寻址,变址寻址等,能方便地访问内存中的数据结构。MIPS寻址相对简单,有利于简化硬件设计。
在立即数的处理上,ARM的立即数位宽有限,额外增加移位量来支持多个数据,但是仍然无法满足32bit的立即数,因此许多立即数需要通过访问存储器来实现,但是MIPS可以通过两条指令来实现该功能,立即数都是16bit,两条指令完成拼接。