X86、MIPS、ARM三种cpu的体系结构和特点

  • X86——采用CISC指令集。在该指令集中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。
  1. 总线接口单元BIU
    • 4个16位段寄存器(DS、ES、SS、CS)
    • 一个16位指令指针寄存器(IP)
    • 20位物理地址加法器
    • 6字节指令队列(8088为4字节)
    • 总线控制电路,负责与存储器及I/O端口的数据传送
  2. 执行单元EU——任务是从指令队列流中取出指令,然后分析和执行指令,还负责计算操作数的16位偏移地址
    • 算术逻辑单元(ALU)
    • 寄存器阵列(AX、BX、CX、DX、SI、DI、BP、SP)
    • 标志寄存器(PSW)
  3. 寄存器组作用分析
    1. 数据寄存器(AX、BX、CX、DX)均为16位寄存器,每一个又可分为高字节H和低字节L。即AH、BH、CH、DH及AL、BL、CL、DL,均可作为单独的8位寄存器使用。不论16位寄存器还是8位寄存器,它们均可寄存操作数及运算的中间结果。有少数指令指定某个寄存器专用,例如,串操作指令指定CX专门用作记录串中元素个数的计数器。
    2. 段寄存器组(CS、DS、SS、ES)。8086/8088的20位物理地址在CPU内部是由两部分相加形成的,即“段地址+偏移地址”。
      • SP、BP、SI、DI标识20位物理地址的低16位,用于指明其偏移地址。
      • CS、DS、SS、ES标识20位物理地址的高16位,称作段寄存器。它们使用专一,不能互换。一般情况下,DS和ES都须用户在程序中设置初值。
      • CS: 标识当前代码段
      • DS: 标识当前数据段
      • SS: 标识当前堆栈段
      • ES: 标识当前附加段
    3. 控制寄存器组
      • IP——指明当前要执行指令的偏移地址(段地址由CS提供)。
      • FLAG——共有16位,用了其中9位,分为两组:
      • 状态标志: 记录状态信息,由6位组成,包括CF、AF、OF、SF、PF和ZF,它反映前一次涉及ALU操作的结果,对用户来说它只读不写。
      • 控制标志: 记录控制信息由3位组成,包括方向标志DF、中断允许标志IF、陷阱标志TF,IF及TF可通过指令设置。
  • MIPS

    1. 所有指令都是32位编码;
    2. 有些指令有26位供目标地址编码,有些则只有16位,因此要想加载任何一个32位值,就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K)。
    3. 所有的动作理论上要求必须在1个时钟周期内完成,一个动作一个阶段。
    4. 有32个通用寄存器,每个寄存器32位(对32位机)或64位(对64位机)。
    5. 对于MIPS体系结构来说,本身没有任何帮助运算判断的标志寄存器,要实现相应的功能时,是通过测试两个寄存器是否相等来完成。
    6. 所有的运算都是基于32位的,没有对字节和对半字的运算(MIPS里,字定义为32位,半字定义为16位)。
    7. 没有单独的栈指令,所有对栈的操作都是统一的内存访问方式。因为push和pop指令实际上是一个复合操作,包含对内存的写入和对栈指针的移动;
    8. 由于MIPS固定指令长度,所以造成其编译后的二进制文件和内存占用空间比x86的要大,(x86平均指令长度只有3个字节多一点,而MIPS是4个字节)
    9. 寻址方式:只有一种内存寻址方式。就是基地址加一个16位的地址偏移。
    10. 内存中的数据访问必须严格对齐(至少4字节对齐) 。
    11. 跳转指令只有26位目标地址,再加上2位的对齐位,可寻址28位的空间,即256M。
    12. 条件分支指令只有16位跳转地址,加上2位的对齐位,共18位寻址空间,即256K。
    13. MIPS默认不把子函数的返回地址存放到栈中,而是存放到$31寄存器中;这对那些叶子函数有利。如果遇到嵌套函数的话,有另外的机制处理;
    14. 高度的流水线:MIPS指令的五级流水线(每条指令都包含五个执行阶段),所以一条指令要占用四个时钟周期。
      • 第一阶段:从指令缓冲区中取指令,占一个时钟周期。
      • 第二阶段:从指令中的源寄存器域(也可能有两个)的值(为一个数字,指定$0~$31中的某一个)所代表的寄存器中读出数据,占半个时钟周期。
      • 第三阶段:在一个时钟周期内做一次算术或逻辑运算,占一个时钟周期。
      • 第四阶段:指令从数据缓冲中读取内存变量的阶段。平均大约有3/4的指令在这个阶段没做什么事情,但它是指令有序性的保证,占一个时钟周期。
      • 第五阶段:存储计算结果到缓冲或内存的阶段,占半个时钟周期。
  • ARM——ARM处理器是一个32位精简指令集(RISC)处理器架构,广泛使用在嵌入式系统设计。

    1. RISC(Reduced Instruction Set Computer,精简指令集计算机) ,具有如下特点:
      • 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
      • 使用单周期指令,便于流水线操作执行。
      • 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率
    2. ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗
      • 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
      • 可用加载/存储指令批量传输数据,以提高数据的传输效率。
    3. 寄存器结构 :共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:
      • 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器
      • 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位 。
    4. 指令结构
      • 在较新的ARM体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位长度,Thumb指令为16位长度。Thumb指令集是ARM指令集的功能子集,但与等价的ARM指令相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

你可能感兴趣的:(linux,运维,服务器)