ARM,MIPS,X86三种典型指令集的简介及其特点

更新时间:2023-11-21 23:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ARM、MIPS、X86三种典型指令集的特点

20122261 梅亮亮

1.ARM指令集

1.1 ARM指令集的特点:

? 体积小,低功耗,低成本,高性能;

? 支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件; ? 大量使用寄存器,指令执行速度更快; ? 大多数数据操作都在寄存器中完成; ? 寻址方式灵活简单,执行效率高; ? 指令长度固定; ? 流水线处理方式

? Load_store结构:在RISC中,所有的计算都要求在寄存器中完成。而寄存器和内存的

通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的。

1.2 Thumb指令及应用

Thumb指令集是ARM指令集的一个子集,所有的Thumb指令都有对应的ARM指令。它舍弃了ARM指令集的一些特性

如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。 Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。Thumb指令集中操作数仍然是32位,指令地址也为32位,指令编码16位。

由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。

1.2.1 Thumb指令优势与局限性 优势:

– Thumb代码所需的存储空间约为ARM代码的60%~70% ; – Thumb代码使用的指令数比ARM代码多约30%~40% ; – 若使用32位的存储器,ARM代码比Thumb代码快约40% ;

– 若使用16位的存储器,Thumb代码比ARM代码快约40%~50%;

– 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。 局限性:

条件跳转限制在256byte 偏移范围内,无条件跳转限制为4K偏移范围内,而ARM为32 Mbytes偏移 。它不支持乘法和累加指令;没有协处理器指令;没有信号量指令;没有访问CPSR指令。

1.3 对ARM指令的一些总结

ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。

ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL汇编是不同的,刚接触的人很不易理解。

与x86相比,ARM采用的RISC体系最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行,因此有较快运行速度。因此,ARM处理器才成为是当前最流行的处理器系列,是几种主流的嵌入式处理体系结构之一。

2.MIPS指令集

2.1 MIPS简介

MIPS是高效精简指令集计算机(RISC)体系结构中最优雅的一种;即使连MIPS的竞争对手也这样认为,这可以从MIPS对于后来研制的新型体系结构比如DEC的Alpha和HP的Precision产生的强烈影响看出来。虽然自身的优雅设计并不能保证在充满竞争的市场上长盛不衰,但是MIPS微处理器却经常能在处理器的每个技术发展阶段保持速度最快的同时保持设计的简洁。

相对的简洁对于MIPS来说是一种商业需要,MIPS起源于一个学术研究项目,该项目的设计小组连同几个半导体厂商合伙人希望能制造出芯片并拿到市场上去卖。结果是该结构得到了工业领域内最大范围的具有影响力的制造商们的支持。从生产专用集成电路核心(ASIC Cores)的厂家(LSI Logic,Toshiba, Philips, NEC)到生产低成本CPU的厂家(NEC, Toshiba,和IDT),从低端64位处理器生产厂家(IDT, NKK, NEC)到高端64位处理器生产厂家(NEC, Toshiba和IDT).

低端的CPU物理面积只有1.5平方毫米(在SOC系统里面肉眼很难找到).而高端的R10000处理器,第一次投放市场时可能是世界上最快的CPU,它的物理面积几乎有1平方英寸,发热近30瓦特.虽然MIPS看起来没什么优势,但是足够的销售量使其能健康发展:1997年面市的44M的MIPS CPU,绝大多数使用于嵌入式应用领域.

MIPS CPU是一种RISC结构的CPU, 它产生于一个特殊的蓬勃发展的学术研究与开发时期.RISC(精简指令集计算机)是一个极有吸引力的缩写名词,与很多这类名次相似,可能遮掩的真实含义超过了它所揭示的.但是它的确对于那些在1986到1989年之间投放市场的新型CPU体系结构提供了一个有用的标识名,这些新型体系结构的非凡的性能主要归功于几年前的几个具有开创性的研究项目所产生的思想。有人曾说:\任何在1984年以后定义的计算机体系结构都是RISC\;虽然这是对于工业领域广泛使用这个缩写名词的嘲讽,但是这个说法也的确是真实的-1984年以后没有任何一款计算机能够忽视RISC先驱者们的工作。

在斯坦福大学开展的MIPS项目是这些具有开创性的项目中的一个。该项目命名为MIPS(主要是无内锁流水段微型计算机的关键短语的缩略)同时也是\每秒百万条指令数\的双关语。斯坦福研究小组的工作表明虽然流水线已经是一种众所周知的技术,但是以前的体系结构对它研究的远远不够,流水线技术其实能够被更好的利用。尤其是当结合了1980年的硅材料设计水平时。

2.2 MIPS的指令格式只有3种:

1、R(register)类型的指令。该类型指令从寄存器堆(register file)中读取两个源操作数,计算结果写回寄存器堆。

2、I(immediate)类型的指令。该类型指令使用一个16位的立即数作为一个源操作数。

1

3、J(jump)类型的指令。该类型指令使用一个26位的立即数作为跳转的目标地址(target address)。

MIPS的指令种类有: 1、算术运算。 2、逻辑运算。 3、数据传送。 4、条件转移。 5、无条件跳转。 6、特殊指令。 7、例外指令。 8、协处理器指令。

9、系统控制协处理器指令。

2.3 MIPS特点

? 所有指令都是32位编码;

? 有些指令有26位供目标地址编码;有些则只有16位。因此要想加载任何一个32位值,

就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K);

? 所有的动作原理上要求必须在1个时钟周期内完成,一个动作一个阶段; ? 所有的运算都是基于32位的,没有对字节和对半字的运算(MIPS里,字定义为32位,

半字定义为16位);

? 没有单独的栈指令,所有对栈的操作都是统一的内存访问方式。因为push和pop指令

实际上是一个复合操作,包含对内存的写入和对栈指针的移动;

? 由于MIPS固定指令长度,所以造成其编译后的二进制文件和内存占用空间比x86的要

大,(x86平均指令长度只有3个字节多一点,而MIPS是4个字节);

? 寻址方式:只有一种内存寻址方式。就是基地址加一个16位的地址偏移; ? 内存中的数据访问必须严格对齐(至少4字节对齐);

? 跳转指令只有26位目标地址,再加上2位的对齐位,可寻址28位的空间,即256M; ? 条件分支指令只有16位跳转地址,加上2位的对齐位,共18位寻址空间,即256K; ? MIPS默认不把子函数的返回地址(就是调用函数的受害指令地址)存放到栈中,而是

存放到$31寄存器中;这对那些叶子函数有利。如果遇到嵌套的函数的话,有另外的机制处理;

3.x86指令集

3.1 x86指令集简介

X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU?/FONT> i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,

2

Intel陆续研制出更新型的i80386、i80486直到今天的Pentium Ⅲ(以下简为PⅢ)系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。 另外除Intel公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Intel CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。当然在目前的台式(便携式)电脑中并不都是使用X86系列CPU,部分服务器和苹果(Macintosh)机中还使用美国DIGITAL(数字)公司的Alpha 61164和PowerPC 604e系列CPU。

3.2 80x86汇编指令 (1) 数据传送指令。 (2) 算术运算指令。 (3) 逻辑运算指令。 (4) 串操作指令。 (5) 控制转移指令。 (6) 处理器控制指令。 (7) 保护方式指令。

3.3 CISC指令集:

x86采用了CISC指令集。在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。

长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式.甚至某些指令可支持高级语言语句归类后的复杂操作.至使硬件越来越复杂,造价也相应提高.为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能 ,傲处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.一般CISC计算机所含的指令数目至少300条 以上,有的甚至超过500条.

3.4 CISC体系的优缺点 优点:

能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。

缺点:

指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

3.5 X86指令集特点总结

3

X86采用CISC,具有大量的复杂指令、可变的指令长度、多种的寻址方式这些CISC的特点,也是CISC的缺点,因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用X86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的理由就是为了兼容大量的x86平台上的软件,同时,它的体系结构组成的实现不太困难。

4

本文来源:https://www.bwwdw.com/article/2erv.html

Top