ARM体系架构中的存储系统

       基于ARM内核的嵌入式系统可能包含Flash、ROM、SRAM、SDRAM等多种类型的存储器,不同类型的存储器存取速度和数据宽度等都不尽相同。下面主要从地址空间、存储器格式和存储器对齐访问3个方面来描述。

1.地址空间
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(22字节)。当程序正常执行时,每执行一条ARM指令,当前指令计数器的值加4;每执行一条Thumb指令,当前指令计数器的值加2。
2.存储器格式
ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。大端格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

举个例子说明,比如十六进制数字0x12345678在内存中的表示形式为:

(1)大端模式:

A3

A2

A1

A0

78

56

34

12

(2)小端模式:

A3

A2

A1

A0

12

23

56

78

在ARM体系中默认的存储格式为小端对齐,但ARM处理器可以由硬件来选择是大端模式还是小端模式。

3. 存储器对齐访问

 ARM系统中无论取指还是内存访问都应根据指令以字、 半字或字节对齐访问,如果出现非对齐的情况,将发生错误。
1.非对齐指令的预取操作

当处理器处于ARM状态时,如果写入到寄存器PC中的值是非字对齐的(低两位不为0b00,0b00指的二进制的表示的00),要么指令执行的结果不可预知,要么地址值中最低两位被忽略;

当处理器处于Thumb状态时,如果写入到寄存器PC中的值是非半字对齐的(最低位不为0b0),要么指令执行的结果不可预知,要么的重地值中最低位被忽略.

如果系统中指定,当发生非对齐的指令预取操作时,忽略地址值中相应的位,则有存储系统实现这种”忽略”.也就是说,这时该地址值原封不动的送到存储系统.

2.非对齐的数据访问操作

对于Load/Store操作,如果是非对齐的数据访问操作,系统定义了下面3种可能的结果.

(1)执行的结果不可预知.

(2)忽略字单元地址的低两位,即访问地址为(address _and 0xffffffc)的字单元;忽略半字单元地址的最低位的值,即访问地址位(address _and 0xffffffe)的半字单元.

(3)忽略字单元地址值种的低两位的值;忽略半字单元地址的最低位的值.有存储体统实现这种”忽略”.也就是说,这时该地址值原封不动的送到存储系统.

当发生非对齐的数据访问时,到底采用上述3种处理方法种的哪一种,是由各指令系统指定的。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值