将陆续上传本人写的新书《自己动手写处理器》(尚未出版),今天是第三篇,我尽量每周四篇
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。
明日继续!
