【嵌入式ARM指令系统】CISC与RISC

目录

一、CISC—复杂指令集计算机

二、RISC—精简指令集计算机

三、ARM 指令结构

冯诺依曼体系与哈佛体系

ARM处理器模式

ARM寄存器


一、CISC—复杂指令集计算机

自从第一台计算机在50年代问世,计算机汇编指令系统经历了几个阶段:

 

  • 50年代的计算机汇编指令系统主要是以定点数为主的简单的加/减和逻辑运算指令,指令数目在10到90条。

 

  • 60年代的计算机汇编指令系统发展到以浮点数为主的加/减,乘除指令,体现在计算机的多种寻址方式,指令数目在100到200条。

 

  • 到70年代,伴随计算机硬件和集成电路的发展,计算机汇编指令系统更为复杂,发展成为了公认的复杂指令集计算机(COMPLEX INSTRUCTION SET COMPUTER-CISC),其最显著的特点是指令繁多,指令长度不固定,长短不一,指令格式多样化,存储器寻址方式多样化。

 

INTEL公司的PENTINUM就是最典型的复杂指令集计算机(CISC),由于计算机硬件的复杂性和指令系统的复杂性的增加,CPU的面积变得大,其功耗也变高,PENTINUM的处理器上装有小风扇就是出于此原因。

 

解释一下:定点数是什么?与浮点数的区别是什么?

在计算机系统的发展过程中,曾经提出过多种方法表达实数。定点数(Fixed Point Number),一种典型的实数表达形式,小数点固定地位于实数所有位数中间的某个位置

货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。

定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或特别小的数。

 

最终,绝大多数现代的计算机系统采纳了所谓的浮点数表达方式。这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa ),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。

比如 123.45 用十进制科学计数法可以表达为 1.2345 × 102 ,其中 1.2345 为尾数,10 为基数,2 为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。

 

 

二、RISC—精简指令集计算机

到了80年代,由于计算机指令系统太复杂,在美国加州大学BERKELEY分校有人提出了精简指令系统计算机(REDUCED INSTRUCTION SET COMPUTER-RISC)的概念,主要思想是选用最常用的指令,指令长度固定,避免繁多的指令格式,存储器寻址方式只有规范的LOAD/STORE方式。

由于指令系统的精简化,基于RISC的CPU面积变小,其功耗也降低。嵌入式设备和手持设备大多采用基于RISC的CPU,小易携带而且功耗低。ARM和MIPS是最典型的基于RISC的处理器。

 

下表1-1是计算机指令系统 CISC 和 RISC 的性能指标比较。

三、ARM 指令结构

  • 冯诺依曼体系与哈佛体系

ARM7为冯诺依曼(VON NEUMANNH)体系结构,其主要特点是低功耗,3级流水线作业,每秒种可处理0.9百万条指令,高密度32位ARM指令集兼容16位的THUMB指令集。可应用于有低价位,低功耗要求的工业控制,手机等设备。

ARM9为哈佛(HARVARD)体系结构,其主要特点是低功耗,5级流水线作业,每秒种可处理1.1百万条指令,高密度32位ARM指令集兼容16位的THUMB指令集,存储管理单元(MMU),指令高速缓冲(INSTRUCTION CACHE)和数据高速缓冲(DATA CACHE)。另外,ARM9E还具有DSP和JAVA的功能,可应用于数码相机,数码摄像机和无线设备。ARM9为哈佛体系结构,可并行处理,每秒种处理的指令比ARM7多了20万条。

 

下图是两种体系结构下CPU读取数据的时序图,可以很明显的看出ARM9的优势。

冯诺依曼和哈佛体系结构下读取数据时序比较图
  • ARM处理器模式

ARM处理器有6种工作模式,分别是:

  1. User(无优先级的模式,大部分认为在此模式下运行)
  2. FIQ(当高级别的快速中断申请后进入)
  3. IRQ(当普通的中断申请后进入)
  4. Supervisor(复位后并且软中断指令执行后进入)
  5. Abort(用于处理内存访问冲突
  6. Undef(用于处理未定义的指令)

 

  • ARM寄存器

ARM有37个寄存器,均为32位长,其中一个PC,一个程序状态寄存器(CPSR),5个可存的程序状态寄存器(SPSR),30个通用寄存器。

程序状态寄存器(CPSR,SPSR),如下图。

图1 ARM程序状态寄存器结构

每种模式下寄存器的分布情况如下图所示,其中通用寄存器R13为堆栈指针寄存器(SP),R14为链接寄存器,R15为PC(Program Counter)寄存器。

ARM 寄存器分布

当带链接操作的分支指令执行完操作后,链接寄存器(LR)的作用是存放返回地址。例如:

        BL Label;   //LR=PC+4,记住返回地址(带链接的分支指令)

        ...

Label:  ADDS R0,R1,R2;
        MOV PC,LR;  //将LR中的返回地址存入PC
发布了59 篇原创文章 · 获赞 16 · 访问量 7191

猜你喜欢

转载自blog.csdn.net/qq_42605300/article/details/105082819