常见的CPU指令集介绍

一、X86
是微处理器执行的 计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,属于CISC。
1.1、简介
X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU?/FONT> i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,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。
1.2、特点

是一种为了便于编程和提高记忆体访问效率的芯片设计体系,包括两大主要特点:一是使用微代码,指令集可以直接在微代码记忆体里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式;二是拥有庞大的指令集,x86拥有包括双运算元格式、寄存器到寄存器、寄存器到记忆体以及记忆体到寄存器的多种指令类型,为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外,还通过存于只读存储器(ROM)中的微程序来实现极强的功能,微处理器在分析完每一条指令之后执行一系列初级指令运算来完成所需的功能。

1.3、优缺点

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

缺点:

  • 通用寄存器规模小,x86指令集只有8个通用寄存器,CPU大多数时间是在访问存储器中的数据,影响整个系统的执行速度。而RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术,使寄存器资源得到充分的利用
  • 解码器影响性能表现,解码器的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。
  • 寻址范围小,约束用户需要。
  • 单个指令长度不同,运算能力强大,不过相对来说结构复杂,很难将CISC全部硬件集成在一颗芯片上。

1.4、汇编指令

  • 数据传送指令
  • 数据传送指令
  • 逻辑运算指令

  • 串操作指令

  • 控制转移指令

  • 处理器控制指令

  • 保护方式指令

二、X64

又叫“x86-64”,简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品,也是属于CISC。

2.1、简介

“x86-64”1999由AMD设计,AMD首次公开64位集以扩充给IA-32,称为x86-64(后来改名为AMD64)。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过Clackamas Technology (CT)、IA-32e及EM64T。外界多使用"x86-64"或"x64"去称呼此64位架构,从而保持中立,不偏袒任何厂商。

2.2、特点

主要是与X86兼容,既有支持64位通用暂存器、64位整数及逻辑运算,以及64位虚拟地址。设计人员也为架构作出不少改进,部份重大改变如下:新增暂存器,地址阔度加长,“禁止运行”比特 (NX-bit): AMD64其中一个特色是拥有“禁止运行”(No-Execute, NX)的比特,可以防止蠕虫病毒缓冲器满溢的方式来进行攻击(也称:缓存溢出攻击,Buffer Overflow)。

2.3、优缺点

由于源自X86,都是CSIC,所以具有X86差不多的缺点,跟X86比较,有如下优势:

  • 64位寻址空间
  • 扩展的寄存器组
  • 开发者熟悉的命令集
  • 可以在64位结构的操作系统上运行32位程序
  • 可以直接使用32位操作系统

2.4、汇编指令

基本跟X86一样,大多数X86指令在X64的64位模式下是有效的。在64位模式不常使用的指令不在支持。如:BCD码算术指令。

三、ARM

曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括MarvellXScale架构和德州仪器OMAP系列。ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。是为了提高处理器运行速度而设计的芯片体系,它的关键技术在于流水线操作即在一个时钟周期里完成多条指令。属于RISC。

3.1、简介

一颗主要用于 路由器的Conexant ARM处理器是Acorn电脑公司(Acorn Computers Ltd)于1983年开始的开发计划。这个团队由Roger Wilson和Steve Furber带领,着手开发一种新架构,类似进阶的MOS Technology 6502处理器。Acorn有一大堆建构在6502架构上的电脑,因此能设计出一颗类似的芯片即意味着对公司有很大的优势。团队在1985年时开发出ARM1 Sample版,而首颗"真正"的产能型ARM2于次年量产。ARM2具有32位的 数据总线、26位的 寻址空间,并提供64 Mbyte的寻址范围与16个32-bit的 暂存器。这些暂存器其中有一颗做为(word大小)程式计数器,其前面6 bits和后面2 bits用来保存处理器状态标记(Processor Status Flags)。ARM2可能是全世界最简单实用的32位 微处理器,其仅容纳了30,000个晶体管(相较于Motorola六年后的68000其包含了70,000颗)。主要应用于工控/嵌入式和手持设备等领域。
3.2、特点
ARM指令集架构的主要特点:一是体积小、低功耗、低成本、高性能;二是大量使用寄存器且大多数数据操作都在寄存器中完成,指令执行速度更快;三是寻址方式灵活简单,执行效率高;四是指令长度固定,可通过多流水线方式提高处理效率。
3.3、优缺点
  • 体积小,低功耗,低成本,高性能;
  • 支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件; 大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;
  • 寻址方式灵活简单,执行效率高;
  • 指令长度固定;
  • 流水线处理方式
  • Load_store结构:在RISC中,所有的计算都要求在寄存器中完成。而寄存器和内存的通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的。
3.4、汇编指令
  • 算数和逻辑指令
  • 比较指令
  • 跳转指令
  • 移位指令
  • 程序状态字访问指令存
  • 储器访问指令

四、其他

SSE指令集
Streaming SIMD Extensions
由于MMX指令并没有带来3D游戏性能的显著提升,1999年Intel公司在 Pentium IIICPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低。而在SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。 [1]  
SSE2指令集
在Pentium 4 CPU中,Intel公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。其中重要的改进包括引入新的数据格式,如:128位SIMD整数运算和64位双精度浮点运算等。为了更好地利用高速缓存。另外,在Pentium 4中还新增加了几条缓存指令,允许程序员控制已经缓存过的数据。 [1]  
SSE3指令集
相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。 [1]  
SSE4指令集
SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。
SSE4指令集将作为Intel公司未来“显著视频增强”平台的一部分。该平台的其他视频增强功能还有Clear Video技术(CVT)和统一显示接口(UDI)支持等,其中前者是对ATi AVIVO技术的回应,支持高级解码、后处理和增强型3D功能。 [1]  
3D Now!扩展指令集
3D Now!指令集是AMD公司1998年开发的多媒体扩展指令集,共有21条指令。针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力。由于指令有限,3D Now!指令集主要用于3D游戏,而对其他商业图形应用处理支持不足。
EM64T指令集Intel公司的EM64T(Extended Memory 64 Technology)即64位内存扩展技术。该技术为服务器和工作站平台应用提供扩充的内存寻址能力,拥有更多的内存地址空间,可带来更大的应用灵活性,特别有利于提升音频视频编辑、CAD设计等复杂工程软件及游戏软件的应用。常说的64位指的是AMD公司出的64位CPU,而EM64T则是Intel公司按照自己的意思理解出来的64位,也就是和AMD公司的64位对应的另一种叫法。
RISC指令集RISC指令集是以后高性能 CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。使用 RISC指令集的体系结构主要有ARM、MIPS。
3DNow!+指令集
在原有的指令集基础上,增加到52条指令,其中包含了部分SSE指令,该指令集主要用于新型的 AMD CPU上。 [1]  
AVX指令集
Intel AVX指令集在SIMD计算性能增强的同时也沿用了的MMX/ SSE指令集。不过和MMX/SSE的不同点在于增强的AVX指令,从指令的格式上就发生了很大的变化。x86(IA-32/Intel 64)架构的基础上增加了prefix(Prefix),所以实现了新的命令,也使更加复杂的指令得以实现,从而提升了x86 CPU的性能。
AVX并不是x86 CPU的 扩展指令集,可以实现更高的效率,同时和CPU硬件兼容性也更好,并且也有着足够的扩展空间,这都和其全新的命令格式系统有关。更加流畅的架构就是AVX发展的方向,换言之,就是摆脱传统x86的不足,在SSE指令的基础上AVX也使SSE指令接口更加易用。

针对AVX的最新的命令编码系统,Intel也给出了更加详细的介绍,其中包括了大幅度扩充指令集的可能性。比如Sandy Bridge所带来的融合了乘法的双指令支持。从而可以更加容易地实现512bits和1024bits的扩展。而在2008年末到2009年推出的meniikoaCPU“Larrabee(LARAB)”处理器,就会采用AVX指令集。从地位上来看AVX也开始了Intel处理器指令集的新篇章。

猜你喜欢

转载自www.cnblogs.com/yilang/p/CPU.html