ARM体系结构综述

ARM体系结构综述
ARM体系结构综述

第一编ARM编程模式

1. Thumb指令集是ARM指令集的重编码的子集,相较于ARM指令集,Thumb指令集有两个不足:

1)Thumb的代码执行相同的任务需要相较ARM代码更多的指令数,故不适合一些要求最大化执行时间效率的程序;

2)Thumb中不包含一些异常处理需要使用的代码,故不适用编写一些高层次的异常处理代码

2. ARM是一个RISC(精简指令集计算机),包含以下一些特性:

1) 一个大型统一的寄存器表

2) load/store结构,即所有数据操作都仅基于寄存器,而非直接基于内存;

3) 简单寻址模式,即所有load/store寻址仅依靠寄存器内容和指令域决定;

4) 统一和定长的指令格式,简化了指令的解码。

3. ARM有七种处理器模式,分别为:User(用户模式,即正常指令执行模式),FIQ(快速中断模式),IRQ(通用中断处理模式),Supervisor(超级用户模式,即操作系统保护模式),Abort(中止模式,实现内存或虚拟内存的保护),Undefined(未定义模式),System(系统模式,执行特权的系统进程)。模式之间的切换可以通过软件控制或外部的中断或异常引起。

4. 正常的应用程序均在User(用户模式)下运行,此时无法获取一些受限的系统资源,也不可以任意切换处理器模式,除非有异常发生。

5. 除了User外的其他六个均为特权模式,他们可以获取各类系统资源,并能实现相互切换。其中除System外的五个为异常模式。

6. ARM总计拥有37个寄存器,其中31个通用的32-bit寄存器,还有6个32-bit状态寄存器。而在任意时刻,仅有其中的16个通用寄存器是可见的。

7. ARM体系结构中可见的寄存器为R0-R15,可分成三类:未堆积(unbanked)寄存器R0-R7,堆积(banked)寄存器R8-R14和程序计数器R15。

8. R0-R7为所有模式共享,所有模式共用这8个寄存器。

9. R8-R14为堆积寄存器,其又分成两类。一类是R8-R12,分为两组,一组是FIQ模式专用,另一组是其他六种模式共用。另一类是R13和R14,分为六组,分别是User和System共用一组,其他五种异常处理器模式各保有一组R13和R14。R13和R14一般都用来做特殊的用途,其中R13为堆栈指针(SP);R14为链接寄存器,有两种特殊的功能,一种是发生子程序调用时保存子程序返回地址,另一种是异常发生时保存异常返回地址。

10. PC(R15)保存的是程序计数器,为当前指令的地址+8字节。同时,由于ARM指令是字对齐的,所以PC的最低两个位bit[0:1]一般为0。一个例外是当STR或者STM指令保存

R15时,则保存的即可能是当前指令地址+8字节,也可能是当前指令地址+12字节,至于是保存8字节的offset还是12字节的offset,则是由实现来确定的。基于这个原因,应该要尽量避免使用STR或STM指令保存R15。

11. 程序状态寄存器分成CPSR(当前程序状态寄存器)和SPSR(备份程序状态寄存器)。CPSR所有模式共用,而SPSR则是五个异常模式各有一个。

12. 程序状态寄存器中有两类信息,一类是程序控制码标志,一类是程序控制位。除此两类使用的位外其他为保留位。

13. 程序状态寄存器中的程序控制码标志主要包含有N标志(负数标志)、Z标志(零标志)、C标志(进位标志)、V标志(溢出标志)和Q标志(DSP指令溢出或饱和标志)。其中C 标志(进位标志)有四种情况:第一种是加法类指令,若产生进位则C标志置1;第二种是减法类指令,若有借位则置0,否则为1;第三种是移位指令,则C标志为被最后移出的位;最后一种是其他指令,C标志不产生变化。V标志也分成两种情况:一种是加法或减法类指

令,如果发生有符号溢出,则V标志置1;另一种是其他指令,V标志不变。

14. 程序状态寄存器中的程序控制位在CPSR或SPSR的最低八位,包含有I标志(IRQ中断使能)、F标志(FIQ中断使能)、T标志(ARM或Thumb指令选择位,T=1时是Thumb 指令模式)和M[4:0]模式位。

15. 异常是由导致处理器去处理某个事务的内部或外部的源产生的。在异常处理前的处理器状态应该被保存,这样当异常处理完毕后,系统可以回来原来的处理器状态。在同一时刻,可以有不止一个的异常产生。

16. ARM共支持七种类型的异常。当异常发生时,系统会条转到对应某类异常的固定存储地址来进行执行。这些固定的地址被称作异常向量。一般它们占据了0x00000000-0x0000001C 的地址空间(高向量模式为0xFFFF0000-0xFFFF001C),其中地址0x00000014(高向量模式为0xFFFF0014)被保留做未来扩充使用。

17. ARM支持的异常是有优先级的,其中SWI(软件中断)和未定义指令不会同时发生,故此两种异常有相同的优先级。中断优先级保证了在多个异常同时发生的情况下,系统将先进入高优先级异常的执行。

18. ARM支持两种不同的异常向量模式,即正常向量模式和高向量模式。正常向量模式的地址空间是0x00000000-0x0000001C,而高向量模式的地址空间为0xFFFF0000-0xFFFF001C。高向量模式需要硬件的支持,而ARM的CP15的Register 1的bit[13]提供了对正常向量模式和高向量模式的配置。

19. ARM支持的内存模式有大端和小端两种。小端是指对齐位置的字节是对应的字节中的最小有效字节。

而大端是指对齐位置的字节是对应的字节中的最大有效字节。

大小端的设置可通过配置CP15的Register 1的bit[7]来实现。

20. ARM架构中要求指令和数据对齐,即ARM指令的地址最低两位bit[1:0]均为0(Thumb 指令bit[1]为0),而取32位数据时最低两位也应对齐。如果出现非对齐,则可能的情况有非对齐指令预取和非对齐数据获取。非对齐指令预取即R15中的地址是一个非对齐的地址,如果出现此情况,可能导致两种结果,一个是出现不可预测的情况,另一个则是忽略最低位

的地址取指令。而load/store类的指令读取了一个非对齐的内存地址,可能出现三种结果:第一是不可预测的情况;第二是忽略最低位实现读取;第三是对忽略最低位,取出数据,并将最低位作为控制位,实现对读取出的数据的旋转操作(仅限于LDR和SWP指令)。

21. ARM架构中PC(R15)保存的是当前指令地址+8(Thumb模式下为当前指令地址+4),原因是ARM内核会预取两条指令,因此PC会指向当前指令的后两条指令。同时ARM架构支持跳转预测,即当发现跳转指令时,下面预取的指令既可能是跳转指令后接的指令,也可能是跳转目标地址的指令。

22. 理论上,存在这样的情况,即当ARM内核预取了指令后,存储中的对应指令却被修改了。对于这种情况,ARM忽视这种变化,仍然执行已经预取的指令。如果第二次再运行到此位置,则将执行修改的后的指令。

23. ARM体系结构中标准的实现I/O功能的方式是使用存储映射I/O(memory-mapped I/O)。这种方式提供了特殊的一些存储地址,当对这些存储地址实施load或store操作,即实现了对应的I/O功能。

第二编ARM指令集

1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。

2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。如果是Branch and Link 指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压入R14(LR)。而在ARMv4以上支持T的版本中,还有Branch and Exchange指令,此指令可以拷贝通用寄存器Rm的值到PC中,而若其bit[0]为0,则进行ARM至Thumb 的切换。

3. ARM指令集中包含了状态寄存器获取指令MSR和MRS用来对CPSR和SPSR进行操作。同时ARM指令集还提供了对协处理器的操作指令MCR和MRC。

4. SWI提供了软件中断的功能,此指令的bit[23:0]为一个立即数,ARM处理器会忽略这个立即数,但这个立即数可以提供异常处理程序使用。

第三编ARM寻址模式

ARM总共支持五大类的寻址模式,分别是:数据处理操作模式(Data-Processing Operands)、

加载和保存字或无符号字节模式(Load and Store Word or Unsigned Byte)、混合的加载和保存模式(Miscellaneous Loads and Stores)、多重的加载和保存模式(Load and Store Multiple)以及协处理器的加载和保护模式(Load and Store Coprocessor)。

第一节数据处理操作模式

1. 数据处理操作模式的寻址从指令角度可以分为三类:

1)立即数寻址,指令格式如下

2)立即数位移寻址:

3)寄存器位移寻址:

2. 通用的数据处理操作模式的语法是:

{} {S} , ,

其中有11种可选属性,分别为

1)#

属于立即数寻址类

2)

属于立即数位移寻址类,是其的一种特殊形式,即直接根据的值进行寻址,指令中的shift和shift_imm对应位均为0

3), LSL #

属于立即数位移寻址类,是根据中的值进行逻辑(不带进位)左移位4), LSL

属于寄存器位移寻址类,用的值乘以的值来达到对的值进行逻辑左位移的效果

5), LSR #

属于立即数位移寻址类,是根据中的值进行逻辑右移位

6), LSR

属于寄存器位移寻址类,用的值除以的值来达到对的值进行逻辑右位移的效果

7), ASR #

属于立即数位移寻址类,是根据中的值进行算术(带进位)右移位

8), ASR

属于寄存器位移寻址类,用的值对的值进行算术右移位

9), ROR #

属于立即数位移寻址类,根据中的值进行右旋转

10), ROR

属于寄存器位移寻址类,用的值对的值进行右旋转

11), RRX

属于寄存器位移寻址类,是其的一种特殊形式,根据CPSR中的Carry Flag的值来对的值进行右旋转

第二节加载和保存字或无符号字节模式

1. 加载和保存字或无符号字节模式从指令角度可以分为三类:

1)立即数偏移/索引

2)寄存器偏移/索引

3)按比例的寄存器偏移/索引

2. 通用的加载和保存字或无符号字节模式的语法是:

LDR|STR{} {B} {T} ,

其中有九种可选属性,分别为:

1)[, #+/-]

属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个12位立即数偏移来计算寻址地址

2)[, +/-]

属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址

3)[, +/-, #]

属于按比例的寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去对索引寄存器Rm值的偏移或旋转的结果来计算寻址地址

4)[, #+/-]!

属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个12位立即数偏

移来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中

5)[, +/-]!

属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中

6)[, +/-, #]!

属于按比例的寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去对索引寄存器Rm值的偏移或旋转的结果来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中

7)[], #+/-

属于立即数偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去一个12位立即数偏移写回Rn中

8)[], +/-

属于寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去索引寄存器Rm的值的结果写回Rn中

9)[], +/-, #

属于按比例的寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去对索引寄存器Rm 值的偏移或旋转的结果写回Rn中

第三节混合的加载和保存模式

1. 混合的加载和保存模式从指令角度可以分为两类:

1)立即数偏移/索引

2)寄存器偏移/索引

2. 通用的混合的加载和保存模式的语法是:

LDR | STR{}H|SH|SB|D ,

其中有六种可选属性,分别为:

1)[, #+/-]

属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个8位立即数偏移来计算寻址地址

2)[, +/-]

属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址

3)[, #+/-]!

属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个8位立即数偏移来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中

4)[, +/-]!

属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中

5)[], #+/-

属于立即数偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去一个8位立即数偏移写回Rn 中

6)[], +/-

属于寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去索引寄存器Rm的值的结果写回Rn中

第四节多重的加载和保存模式

1. 多重的加载和保存模式的指令格式是:

此类寻址模式会产生一个地址范围,分别为。register list中共有16 bits,表示16个ARM通用寄存器。16个位中同时只能有1个被置位,如果有两个被同时置位或没有任何一个被置位,则会导致不可预知的结果。此外指令会根据和W标志位来决定是否修改Rn的值。

2. 通用的多重的加载和保存模式的语法是:

LDM | STM{} {!}, {^}

其中是以下四种寻址模式之一:

1)IA(Increment After)

指令操作为:

其中ConditionPassed(cond)判断当前指令中的是否与CPSR 中的对应位相同 2)IB (Increment Before ) 指令操作为:

3)DA (Decrement After ) 指令操作为:

4)DB (

第五节 1.

2. 通用的协处理器的加载和保护模式的语法是:

{}{L} ,, 其中有以下四种可选项: 1)[,#+/-*4] 指令操作为:

2

3

4)[],

第四编ARM存储系统

1.多数的系统需要通过以下的一些方式来初始化和控制存储系统设备:

1)使能Cache,以保证Cache执行所能获得的效益最大化

2)为虚拟存储系统建立虚拟到物理存储的映射

3)为不同的存储区域建立约束规则

4)保证在正确的时间,以正确的方式对存储映射I/O的获取

2.存储系统应该按以下的方式配置:

1)主存储区(RAM)应该被配置成cachable和bufferable;

2)ROM存储区通常只配置成cachable和只读,因此bufferable属性不会被设置。

3.一些ARM实现中包含了一种契入式的write buffer,将多次对同一位置的写操作归并成

对主存储区的一次操作。此外一些write buffer还支持写操作的重排序,那样会使处理器提交的写操作顺序与实际的写操作提交给存储区的顺序存在差异。因此,对I/O区域尽量不要配置成bufferable,以保证对I/O设置的写操作能以一个正确的顺序执行。

4. 所有存储和系统相关的特性都由协处理器15(CP15)来控制,因此CP15也被称为系统控制协处理器。其包含共计16个32位的主寄存器。此外,由于寄存器获取指令中可以包含额外的位来辨识特定的寄存器版本和(或者)对寄存器特定的获取方式,所以实际CP15种的32bit物理寄存器可以超过16个。CP15的属性可以是只读、只写或者可读可写。

5. ARM仅仅定义了一类对CP15操作的指令,即MCR和MRC,其中MCR用来将一个ARM 寄存器的值写入CP15,而MRC指令可以将一个CP15寄存器的值读入ARM寄存器中。MRC和MCR指令只有在各个特权模式下才能正常执行,如果是在用户模式下执行这两条指令,则会导致一个未定义指令的异常发生。

6. MCR和MRC的指令语法如下:

MRC{(cond)} p15, 0, , , {, }

MCR{(cond)} p15, 0, , , {, }

对应的指令结构如下图。

其中:

条件域,系统会更加条件域的值置位CPSR中的对应C、V、N和Z等标志位Bit[23:21] 操作数1,应恒为0,如果不等于0则指令为不可预知的

指令转换中涉及的ARM寄存器(MCR指令为源寄存器,MRC指令为目标寄

PU: Reserved

5 Memory protection and control MMU: Fault status

PU: Access permission bits

6 Memory protection and control MMU: Fault address

PU: Protection area control

7 Cache and write buffer Cache/write buffer control

8 Memory protection and control MMU: TLB control

PU: Reserved

9 Cache and write buffer Cache lockdown

10 Memory protection and control MMU: TLB lockdown

PU: Reserved

11 Reserved

12 Reserved

13 Process ID Process ID

14 Reserved

IMPLEMENTA TION DEFINED

15 IMPLEMENTA TION

DEFINED

8. CP15 Register 1是控制寄存器,包含了caches,MMU和其他存储系统块的控制。使用MCR和MRC指令操作CP15 Register 1时,域均应为0。系统重启时,所有位将被置0。

CP15 Register 1中各个位的含义如下:

M(bit[0]) MMU或保护单元使能位

A(bit[1]) 对齐错误校验使能位

C(bit[2]) Cache使能位(如果是统一cache架构,则标识统一cache使能,如果是独立cache架构,则标识数据cache使能)

W(bit[3]) Write buffer使能位

P(bit[4]) 异常处理模式选择位,可选择进入26-bit模式或32-bit模式

D(bit[5]) 26-bit地址异常校验使能位

L(bit[6]) Abort模式版本选择位

B(bit[7]) 大端或小端配置位

S(bit[8]) 系统保护位(在基于MMU的存储系统中使用)

R(bit[9]) ROM保护位(在基于MMU的存储系统中使用)

F(bit[10]) 该位由用户实现定义

Z(bit[11]) 跳转预测使能位

I(bit[12]) 指令cache使能位

V(bit[13]) 常规/高异常向量选择位

RR(bit[14]) cache预测策略使能位

L4(bit[15]) Load类指令如果地址最低位为1,选择是否支持ARM和Thumb间自动切换

Bit[31:16] 未定义

9. MMU即存储管理单元,一般通过提供保存在存储中的转换表来实现其控制功能。其提供的特性包括:

a)虚拟至物理地址的映射

b)存储获取权限管理

c)cacheability和bufferability位

实现一次完整的转换表查找的处理称为Translation Table Walk,这个过程由硬件自动完成。为了减少存储获取的花销,通常Translation Table Walk的结果被缓冲在一个或多个

Translation Lookaside Buffers(TLB)中。

10. 当ARM生成一个存储获取时,MMU首先查找TLB中的虚拟地址入口。如果TLB没有包含一个虚拟地址相关的条目,translation table walk硬件会被调用来从保存在主存储区域的转换表中寻找转换和获取权限信息。一旦找到了这些信息,则会被放入TLB中,可能是一个未使用的条目,也可能覆盖一个已存在的条目。

TLB条目中应该包含以下内容:

a)用来控制cache和write buffer的C(cacheable)位和B(bufferable)位,这两个位决定了获取是否是cached或buffered。

b)用来决定是否拥有获取权限的获取权限控制位或域。如果一次获取是无权限的,MMU 会发起一次存储abort给ARM处理器。

c)对于未cached的存储获取(包括在一个未cached的系统中的所有获取),物理地址被用作对主内存进行获取的地址;如果是一个cached存储获取,物理地址仅仅在发生cache miss 后起效,如果cache hit发生,则物理地址将被简单地忽略。

下图显示了cached MMU存储系统的流程:

11. 在MMU使能前,合适的转换表必须在存储中建立,同时相关的CP15的寄存器必须被配置好。

12. MMU支持基于段或页的存储获取方式:

Sections(段)由1MB大小的存储块组成

Tiny pages(微页)由1KB大小的存储块组成

Small pages(小页)由4KB大小的存储块组成

Large pages(大页)由64KB大小的存储块组成

此外,保存在主存储区中的转换表有两个级别:

一级表(First-level table):保存段转换或指向二级表的指针

二级表(Second-level table):保存大页或小页的转换,另一种类型的二级表还能保存微页转换。

13. 当片内TLB没有保存一个指定的虚拟地址的条目时,转换过程会被初始化。转换表基

寄存器(CP15 Register 2)会保存一级表的物理地址。转换表基寄存器中只有bits[31:14]是有意义的,bits[13:0]必须是0。因此,一级表必须在16K的范围内。

14. 一级表的取得方法是,将虚拟地址的bits[31:20]与转换表基寄存器的值bits[31:14]和两个0bit连接,产生一个新的32-bit物理地址。这个物理地址即保存了一个基于段或者指向一个二级页表的4-bit一级描述符的转换表条目。

15. 一级表中的每个条目是用来描述其是怎样与1MB已映射的虚拟地址空间相结合的描述符。基于描述符的bit[1:0]的不同设置,描述符有以下几种可能表述:

a)bits[1:0]==0b00,则关联的虚拟地址是未映射的,试图获取会导致一个转换错误。这种情况下,软件可以使用描述符中的bits[31:2]做自定义用途。

b)bits[1:0]==0b10,则该条目是一个与虚拟地址相关联的段描述符。

c)bit[0]==1,则该条目给出一个粗糙二级表(bit[1] == 0)或一个精细二级表(bit[1] == 1)的物理地址。每种表都标示了相关联的1MB虚拟地址范围是如何映射的。相比较,精细表可以映射大页、小页和微页,而粗糙表仅能映射大页和小页。

16. 段描述符的各bit意义如下:

bit[1:0] 确定描述符类型(段描述符为0b10)

bit[3:2] cachable和bufferable位

bit[4] 该位由实现定义

bit[8:5] 该域控制块指定了由该描述符控制的段的可能的域,该域有十六种可能。bit[9] 保留位,始终应为0

bit[11:10] 获取权限位,这两个bit用来控制对段的获取权限。(详见第三编20)

bit[19:12] 保留位,应为0

bit[31:20] 用来产生物理地址最高12个bit的段基地址

下图为基于段的存储获取方式参考流程:

17. 由一级描述符中的页表基地址结合虚拟地址中的二级表索引位可以得到二级表描述符的地址。二级描述符根据bits[1:0]的设置不同,可以分为:

a)bits[1:0] == 0b00,则关联的虚拟地址是未映射的,试图获取会导致一个转换错误。这种情况下,软件可以使用描述符中的bits[31:2]做自定义用途。

b)bits[1:0] == 0b01,则该二级描述符条目为大页描述符,对应记述了64K范围的虚拟地址。

大页的描述符在精细二级表中必须重复64次,在粗糙二级表中也必须重复16次,以保证所有的虚拟地址都被描述到。

c)bits[1:0] == 0b10,则该二级描述符条目为小页描述符,对应记述了4K范围的虚拟地址。小页的描述符在精细二级表中必须重复4次,以保证所有的虚拟地址都被描述到。在粗糙二级表中,对于每个二级描述符,一个实体即可。

d)bits[1:0] == 0b11,则该二级描述符条目为微页描述符,对应记述了1K范围的虚拟地址。仅有一个微页描述符的实例在精细二级表中被描述。微页描述符不能出现在粗糙二级表中。

大页描述符的各个位意义如下:

bits[1:0] 定义描述符类型

bits[3:2] cachable和bufferable位

bits[11:4] 获取权限位(详见第三编20)。大页被划分成四个子页,其中:AP0 第一个子页的获取权限

AP1 第二个子页的获取权限

AP2 第三个子页的获取权限

AP3 第四个子页的获取权限

bits[15:12] 保留位,应为0

bits[31:16] 用来形成物理地址的对应位,即物理地址的bits[31:16]

小页描述符的各个位意义如下:

bits[1:0] 定义描述符类型

bits[3:2] cachable和bufferable位

bits[11:4] 获取权限位(详见第三编20)。小页被划分成四个子页,其中:AP0 第一个子页的获取权限

AP1 第二个子页的获取权限

AP2 第三个子页的获取权限

AP3 第四个子页的获取权限

bits[31:12] 用来形成物理地址的对应位,即物理地址的bits[31:12]

微页描述符的各个位意义如下:

bits[1:0] 定义描述符类型

bits[3:2] cachable和bufferable位

bits[5:4] 获取权限位。(详见第三编20)

bits[9:6] 保留位,应为0

bits[31:10] 用来形成物理地址的对应位,即物理地址的bits[31:10]

18. 下图显示了一个完整的通过粗糙二级表的大页转换的过程。

由于页索引的高四位和二级表索引的低四位相互交迭,每个大页的页表条目在粗糙页表情形下必须重复16次。相似的,每个大页的页表条目在精细页表情形下必须重复64次。

19. 下图显示了一个完整的通过粗糙二级表的小页转换过程:

如果小页通过精细二级表转换,则页索引的最高2位和二级表索引的最低2位是交迭的,所以小页的每个页表条目在精细页表情形下必须重复4次。

20. 下图显示了一个完整的通过精细二级表的微页转换过程:

ARM体系结构与接口技术(一)

ARM920TDMA处理器是哈佛结构,包括取指、译码、执行、存储、写入的五级流水线。包括cp14和cp15两个协处理器。16k数据缓存和16k指令缓存。虚拟地址64路相关缓存。每线8字。 ARM的基本数据类型: ARM采用的是32位架构,基本上数据类型有以下三种: Byte :字节,8位 Halfword:半字,16bit(半字必须与2字节边界对齐 Word:字,32bit(必须与4字节边界对齐 所有的数据类型指令的操作数都是字类型。 ARM指令编译后是4字节(与字边界对齐,Thumb指令编译后是2字节(与半字对齐 存储器大/小端 Arm支持大端模式和小端模式。在大端模式下,一个字的高地址放的是数据的地位,在小端模式下,数据的低地址放的是数据的低位。 ARM920T,有7中工作模式: 用户模式(User,正常程序执行模式。 快速中断模式(FIQ,当一个高优先级中断产生时将会进入该模式,一般用于高速数据传输和通道处理。 外部中断模式(IRQ,当一个低优先级中断产生时将会进入该模式,一般用于通常的中断处理

特权模式(Supervise,当复位或软中断指令执行时进入该模式,是一种供操作系统使用的保护模式。 数据访问中止模式(abort,当存取异常时将会进入该模式,用于虚拟存储或存储保护未定义指令中止模式(undef,当执行未定义指令时进入该模式,有时用于通过软件仿真协处理器硬件的工作方式 系统模式(system使用和user模式相同的寄存器集模式,用于运行特权级操作系统任务 除了用户模式,其他六中均为特权模式。在特权模式下,程序可以访问所有的系统资源,也可以任意的进行处理器模式切换。 流水线的概念与原理 处理器按照一系列的步骤来执行每一条指令,典型的步骤如下: 1、从存储器读取指令(fetch 2、译码以鉴别它是属于哪一条指令(decode 3、从指令中提取指令的操作数(这些操作数往往存在于寄存器中(reg 4、将操作数进行组合以得到结果或存储器地址(ALU 5、如果需要,则访问存储器以存储数据(mem 6、将结果写回到寄存器堆(res 流水线的分类: 1、3级流水线ARM组织 取指令—>译码—>执行

ARM体系结构版本

ARM体系结构的版本 前面一段时间我搞过一次《MCU编译与运行》的专题,详细介绍从代码编译到代码运行以及中断机制的流程,这里想在编译部分补充一些知识点。 对于嵌入式开发人员,搭建开发环境是比较困难的一步,市面上针对ARM开发的IDE 非常多,有的编译器诸如ADS或者MDK等老编译器并不支持ARM11或者Contex系列的内核,RVDS号称支持所有ARM,但RVDS4.0仅仅支持RealViewICE,这个调试器将近2万元,个人一般无力购买,因此推荐ARM爱好者使用RVDS2.2,虽然界面和ADS一样粗糙,对Win7的支持也不好,但支持JLink等常用编译器。 之所以有的编译器不支持ARM11是因为此编译器内置的指令集达不到ARM11所需指令集的版本。ARM7与ARM9的指令集相同,是V4版本,因此编译好的ARM7代码是可以在ARM9上运行的(注意,此处仅仅说的是ARM7和ARM9内核的指令集通用,也即代码可以执行,不是指任何代码都可有效运行,毕竟不同芯片中的片内外设以及外设有所不同),ARM11使用V6版本指令集,但ARM指令集向下兼容,因此一般代码也是可以执行,但V6中增加的指令就没法执行了,会出现指令错误异常,程序会死机。下面就来看一下ARM指令集版本的升迁:ARM指令集体系结构,从最初开发至今已有了重大改进,而且将会不断完善和发展。为了精确表达每个ARM实现中所使用的指令集,到目前ARM体系结构共定义了6个版本,以版本号v1~v6表示,各版本特点如下。 1. 版本1(v1) 该版本包括: 1.基本数据处理指令(不包括乘法) 2.字节、字以及半字加载/存储指令 3.分支(branch)指令,包括用于子程序调用的分支与链接(branch-and-link) 指令 4.软件中断指令,用于进行操作系统调用 5.26位地址总线 2. 版本2(v2) 与版本1相比,版本2增加了下列指令: 1.乘法和乘加指令(multiply & multiply-accumulate) 2.支持协处理器 3.原子性(atomic)加载/存储指令SWP和SWPB(稍后的版本称v2a) 4.FIQ中的两个以上的分组寄存器。 3. 版本3(v3) 版本3较以前的版本发生了大的变化,具体改进如下: 1.推出32位寻址能力。 2.分开的CPSR(current program status register,当前程序状态寄存器)和SPSR (saved program status register,备份的程序状态寄存器),当异常发生时,SPSR 用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR 3.增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令 预取中止异常和未定义指令异常 4.增加了MRS指令和MSR指令,用于完成对CPSR和SPSR寄存器的读/写; 修改了原来的从异常中返回的指令 4. 版本4(v4) 版本4在版本3的基础上增加了如下内容:

《ARM体系结构》期末考试试卷含答案

东华理工大学长江学院2011—2012 学年第2学期补考试卷B 课程:嵌入式微处理器体系结构与编程考试形式:闭卷 年级及专业:计算机科学与技术10304101-3班 1.系统调用 2.哈弗结构 3.MMU 4.FIQ 5.SPSR 二、单项选择题(20×2分=40分) 1.ARM系统复位后,第一条执行的指令在( ). A 00000000H B 00000004H C 00000008H D 由编程者确定2.针对没有MMU的ARM芯片,其操作系统可以使用( ). A Windows CE ,Linux B VxWork C uClinux, Uc/OS-II D 以上都可以 3.ATPCS定义了寄存器组中的( )作为参数传递和结果返回寄存器。 A R0,R1,R2,R3 B R4,R5,R6,R7 C R8,R9,R10,R11 D A B C 都可以 4.用汇编指令对R15赋值,可以实现()。 A 程序的跳转 B 实现B指令功能 C 子程序的返回 D A B C都可以 5.ARM汇编语言中,一常量8_5642也代表()。 A 整数5642 B 整数5642H C 整数Ox5642 D 整数2978 6.要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。() (A) 处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断 (C) 处理器支持中断,并且能产生定时中断(D)有大量的存储空间 7.下面哪种操作系统最方便移植到嵌入式设备中。() (A) DOS (B)unix (C) Windows xp (D)linux 8.下列描述不属于RISC计算机的特点的是()。 A.流水线每周期前进一步。B.更多通用寄存器。 C.指令长度不固定,执行需要多个周期。 D.独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。 9.存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存 储,则2000H存储单元的内容为()。 A、0x21 B、0x68 C、0x65 D、0x02 10.IRQ中断的入口地址是()。FIQ的入口地址为0x0000001C A、0x00000000 B、0x00000008 C、0x00000018 D、0x00000014 11. Make预置了一些内部宏,其中$@表示:() A.没有扩展名的当前目标文件 B.当前目标文件 C.当前目标文件最近更新的文件名 D.当前目标文件最近更新的文件名 12.ARM处理器的工作模式有()种。 A. 5 B.6 C. 7 D.8 13.下列CPSR寄存器标志位的作用说法错误的是()。 A. N:负数 B. Z: 零 C. C: 进位 D. V: 借位

华清ARM体系结构试题

嵌入式ARM体系结构试题(时间:60 分钟) 一、单项选择题(每题 2 分,共40 分) 1. 在三级存储结构中,CPU不能直接访问的存储器是(C) A. 高速缓存(cache) B. 主存(内存) C. 辅助存储器(硬盘) 2. 在三级流水线机制下,一条指令的执行的顺序是(A) A. 取指- 译码- 执行 B. 取指- 执行- 译码 C. 取指- 译码- 回写 3.ARM指令集中每条指令都是(C)位宽度 A.8 B.16 C.32 D.64 4.ARM指令在存储器中存储时必须是(C)字节对齐 A.1 B.2 C.4 D.32 5.ARM处理器复位后,处理器处于(B)模式 https://www.360docs.net/doc/5015886391.html,er B.SVC C.System D.IRQ 6.ATPCS协议中规定,栈使用(D)栈 A. 空增 B. 空减 C. 满增 D. 满减 7. 假如想对r4-r7 寄存器进行压栈处理,下列指令正确的是(D) A.stm sp,{r4-r7} B.stmfa r11,{r4-r7} C.stmfd sp,{r4-r7} D.stmfd sp!,{r4-r7} 8.CPSR寄存器中,控制ARM处理器处于ARM状态还是THUMB状态的是(C)位 A.I B.F C.T D.Z 9. 当处理器在执行ARM指令集时,处理器每执行完一条指令后PC的值自增(C) A.1 B.2 C.4 D.32 10.ARM处理器属于(A)处理器 A. 精简指令集 B. 复杂指令集 11. 小端对其是指多字节的数据在存储器中存储时是(A) A. 低地址存储低有效位 B. 低地址存储高有效位 12. 在8 中模式中哪种模式属于非特权模式(A) https://www.360docs.net/doc/5015886391.html,er B.SVC C.IRQ D.System 13. 在IRQ模式下,当前程序的运行状态是由哪个寄存器来决定(B) A.IRQ 模式下的SPSR B.CPSR C.FIQ 模式下的SPSR

ARM处理器结构

ARM处理器结构 体系结构 1 CISC(Complex Instruction Set Computer,复杂指令集计算机) 在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。 2 RISC(Reduced Instruction Set Computer,精简指令集计算机) RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等RISC体系结构应具有如下特点: 1 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2,3种。 2 使用单周期指令,便于流水线操作执行。 3 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。 除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗: 4 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。 5 可用加载/存储指令批量传输数据,以提高数据的传输效率。 6 可在一条数据处理指令中同时完成逻辑处理和移位处理。 7 在循环处理中使用地址的自动增减来提高运行效率。 寄存器结构 ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括: 1 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。

2 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。 指令结构 ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM 指令集的功能子集,但与等价的 ARM代码相比较,可节省30%,40%以上的存储空间,同时具备32位代码的所有优点。 x86是cisc构架, arm是risc构架用途一个是pc,一个是电子产品 X86架构方案与ARM架构方案区别,山水网讯MID方案 X86架构:通俗的将就是能够装Windows 2000、XP\Tablet \windows 7 操作系统的方案架构(CPU) 目前全球仅有3家公司有实力做出这样的架构,他们分别是:Intel 中国台湾威盛(VIA) 和AMD 而目前在低功耗领域AMD甚少介入,也就是在X86架构平板电脑市场仅仅是In X86架构:通俗的将就是能够装Windows 2000、XP\Tablet \windows 7 操作系统的方案架构(CPU) 目前全球仅有3家公司有实力做出这样的架构,他们分别是:Intel 中国台湾威盛(VIA) 和AMD 而目前在低功耗领域AMD甚少介入,也就是在X86架构平板电脑市场仅仅是Intel和威盛的角逐 而X86架构体系分高性能和低功耗版本,山水网讯科技主要研发基于X86架构低功耗系统的方案及产品:MID、UMPC、NetBook 低功耗X86架构体系优点:

ARM体系结构.

ARM是Advanced RISC Machines ( 高级精简指令系统处理器) 的缩写,是ARM公司提供的一种微处理器知识产权( IP) 核 ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字 ARM微处理器的特点 1、体积小、低功耗、低成本、高性能 2、支持Thumb (16位) / ARM (32位) 双指令集,能很好的兼容8位/16位器件 3、大量使用寄存器,指令执行速度更快 4、大多数数据操作都在寄存器中完成 5、寻址方式灵活简单、执行效率高 6、指令长度固定 ARM7系列: 属低端ARM处理器核,最适合用于对价位和功能消耗要求较高的消费类应用 主要应用领域为:工业控制、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用 DSP: Digital Signal Processor 命名解释: ARM7DMI:T表示支持16位压缩指令集(Thumb),D表示支持片上调试(Debug),M表示内嵌硬件乘法器(Multiplier),I 表示嵌入式ICE(仿真器),支持片上断点和调试点( in - circuit emulater ) ARM7系列处理器特点: 1、具有嵌入式ICE逻辑,调试开发方便 2、功耗极低,适合便携式产品开发

3、3级流水线结构 4、支持Thumb 5、支持多种操作系统 6、指令与ARM9、ARM10系列兼容,便于升级 3级流水线(Pipeline) 的执行过程 取指:从存储器装载指令 译码:对刚装载的指令进行识别 执行:处理指令并把结果写回相应的寄存器 ARM9系列处理器特点: 在高性能和低功耗特性方面提供最佳的性能 主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数码相机和数字摄像机 ARM9有5级流水线:FETCH、DECODE、EXECUTE、MEMORY、WRITE ARM 与THUMB 1、THUMB指令是ARM指令的自给 2、可以相互调用,只要遵循一定的调用规则 3、THUMB指令与ARM指令时间效率和空间效率关系:存储空间是ARM代码的60% ~ 70%,指令数比ARM代码多约30% ~ 40%,存储器为32位时ARM代码比THUMB代码

相关主题
相关文档
最新文档