将陆续上传本人写的新书《自己动手写处理器》(尚未出版),今天是第三篇。我尽量每周四篇

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。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpc2hhbmd3ZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

明日继续!

自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变的更多相关文章

  1. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...

  2. 自己动手写处理器之第四阶段(1)——第一条指令ori的实现

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第11篇,我尽量每周四篇 第4章 第一条指令ori的实现 前面几章介绍了非常多预备知识,也描绘了即将要实现的OpenMIPS处 ...

  3. 自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明

    将陆续上传新书<自己动手写CPU>,今天是第47篇. 9.7 ll.sc指令实现思路 9.7.1 实现思路 这2条指令都涉及到訪问链接状态位LLbit,能够将LLbit当做寄存器处理,ll ...

  4. 自己动手写了第三阶段的处理器——教学OpenMIPS处理器蓝图

    我们会继续上传新书<自己动手写处理器>(未公布).今天是第十条.我每星期试试4 从本章開始将一步一步地实现教学版OpenMIPS处理器.本章给出了教学版OpenMIPS的系统蓝图,首先介绍 ...

  5. 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第五篇,我尽量每周四篇         通过上一章的介绍,读者应该知道CPU内部有一些主要的电路,比方:译码电路.运算电路.控 ...

  6. 自己动手写CPU之第九阶段(4)——载入存储指令实现思路

    将陆续上传新书<自己动手写CPU>,今天是第40篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9 ...

  7. 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...

  8. 自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)

    将陆续上传新书<自己动手写CPU>.今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了.一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9 ...

  9. 自己动手写CPU之第九阶段(7)——MIPS32中的LL、SC指令说明

    将陆续上传新书<自己动手写CPU>,今天是第46篇. 在MIPS32指令集中有两条特殊的存储载入指令:链接载入指令LL.条件存储指令SC,本次将介绍这两条指令.在兴许将实现这两条指令. 9 ...

随机推荐

  1. Swift - 使用NSURLSession同步获取数据(通过添加信号量)

    过去通过 NSURLConnection.sendSynchronousRequest() 方法能同步请求数据.从iOS9起,苹果建议废除 NSURLConnection,使用 NSURLSessio ...

  2. asp.net导出Excel类库

    using System; using System.Collections.Generic; using System.Reflection; using System.Web; using Exc ...

  3. wkhtmltopdf 生成pdf

    public class PdfHelper { static string RootPath { get { string AppPath = ""; HttpContext H ...

  4. C++操作符的优先级

    C++操作符的优先级 C++操作符的优先级 操作符及其结合性 功能 用法 L L L :: :: :: 全局作用域 类作用域 名字空间作用域 ::name class::name namespace: ...

  5. C#超级有用的一种类型—匿名类型

    顾名思义 匿名类型就是没有名字的类型.当一个新的匿名对象定义与前面已经存在的类型定义的内部变量类型同样时,编译器就会仅仅生成一个类定义,而不是各一个. 匿名类型对象中仍然能够再包括匿名对象. 在C#3 ...

  6. 【linux】 Makefile之make menuconfig /uImage

      欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http: ...

  7. 全方位深度剖析--性能测试之LoardRunner 介绍

    一.介绍 LoardRunner是一种预测系统行为和性能负载的测试工具.通过模拟上千万用户实施并发负载及实时性能监控的方式来确认和查找系统的瓶颈,LoardRunner能够对整个企业架构进行测试.通过 ...

  8. 初探eXtreme scale

    Note: This document was based on WebSphere Extreme Scale 8.6. It doesn’t supported for lower version ...

  9. APNS 那些事!

    之前在消息推送中间件APush里实现了对APNS的桥接.并利用业余时间阅读了官方指南Local and Push Notification Programming Guide.蛮有心得的.稍作总结.分 ...

  10. SQL 2008 数据库迁移

    1,改动迁移路径 USE master GO ALTER DATABASE 数据库名  --主数据 MODIFY FILE(NAME='数据库名', FILENAME='F:\DataBase\数据库 ...