将陆续上传本人写的新书《自己动手写处理器》(尚未出版),今天是第三篇,我尽量每周四篇
MIPS指令集架构自上世纪80年代出现后,一直在进行着更新换代,从最初的MIPS I到MIPS V,发展到可支持扩展模块的MIPS32、MIPS64系列,再到集成代码压缩技术的microMIPS32、microMIPS64。每个MIPS ISA都是其前一个的超集,没有任何遗漏,只有增加新的功能。
1、MIPS Ⅰ
提供加载/存储、计算、跳转、分支、协处理及其它特殊指令。该指令集架构用于最初的MIPS处理器R2000/R3000。R2000是1985年推出的首款MIPS CPU,由110000个晶体管组成,是一个8MHz的32位处理器。R3000是R2000的下一代产品,与前者相比仅仅是时钟频率不同。
2、MIPS Ⅱ
增加了自陷指令、链接加载指令、条件存储指令、同步指令、可能分支指令、平方根指令。最初计划用在MIPS 处理器R6000上,但由于工艺选择的问题,R6000从1988年开始设计后,就一直问题不断,最终未能大规模生产。但MIPSⅡ指令集架构是后期MIPS32指令集架构的直接先驱。
3、MIPS Ⅲ
提供了32位指令集,同时支持64位指令集。最初用于MIPS处理器R4000。R4000是于1991年推出的64位处理器,首次加入了浮点处理器单元,主时钟频率提高到了100MHz。后来出现了一系列的R4000处理器。
4、MIPS Ⅳ
在MIPS III基础上增加了条件移动指令、预取指令以及一些浮点指令。最初用于MIPS处理器R8000,后来应用于R5000/R10000。R5000与R10000虽然使用相同的指令集架构,但是两者微架构的设计理念完全不同。R5000于1995年推出,采用的是经典的五级流水线、顺序执行。R10000于1996年推出,采用的是乱序执行。
5、MIPS Ⅴ
在MIPS IV的基础上增加了可以提高代码生产效率和数据转移效率的指令。但是没有任何一个处理器基于该架构。MIPS V指令集架构是后期MIPS64指令集架构的直接先驱。
6、MIPS32/64
MIPS32/64于1998年提出,MIPS32以MIPS II架构为基础,选择性地加入了MIPS III、MIPS IV、MIPS V,提高了代码生成和数据移动的效率。MIPS64以MIPS V架构为基础,同时兼容MIPS32。该架构第一次包含了被称为协处理器0的“CPU控制”功能。1999年以后设计的大多数MIPS处理器都与该标准兼容。2003年,发布了MIPS32/64指令集架构的第二版(Release 2),也称为MIPS32/64 R2。最新的是第五版(Release 5),也称为MIPS32/64
R5。但目前广泛使用的是第二版,非常成功的MIPS 4K、24K系列处理器遵循的就是MIPS32 R2架构。
MIPS32/64在基本指令的基础上,还提供了一些面向特定应用的指令,这些指令采用特定应用扩展(ASE:Application-SpecificExtensions)的形式。一种处理器是否实现了某种扩展,可以通过设置标准的配置寄存器指明。主要的扩展列举如下。
- MIPS 16e:是专门为嵌入式系统及存储空间有限情况下的应用而设计的,可以在一个程序中执行16位和32位两种混合长度的指令,能使最终代码长度减少40%。MIPS32、MIPS64都支持MIPS 16e。
- SmartMIPS:是为了满足智能卡和灵活小系统的市场需要而设计的,是一套能高效节省存储空间的扩展指令集,此外还能提高智能卡领域非常关键的加密运算的性能。MIPS32支持SmartMIPS。
- MIPS-3D:提供了更好的几何运算处理,具有成对单精度数据类型,还提供专用指令来加快对该类型数据的处理。MIPS64支持MIPS-3D, MIPS32第二版也支持MIPS-3D。
- MCU:Micro-Control Unit微控制单元,增强了内存映射I/O的处理、提供了更低的中断延迟。MIPS32、MIPS64都支持MCU。
7、microMIPS32/64
microMIPS32/64指令集架构集成了16位和32位优化指令的高性能代码压缩技术,保持了98%的MIPS32性能,同时减少了至少30%的代码体积,从而降低芯片成本,也有助于降低系统功耗。MIPS M14K内核是MIPS科技于2009年发布的首款遵循microMIPS指令集架构的MIPS32兼容内核。
MIPS指令集架构的演变可以使用图1-3描述。注意图中没有Release 4,这是因为对于很多人来说,4是个不吉利的数字,所以MIPS没有发布Release 4,而是直接发布Release 5。
明日继续!
自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变,布布扣,bubuko.com