现在的位置: 首页ARM单片机教程正文

ARM体系结构中的存储系统

  1.arm存储系统中的大/小端

  在arm体系结构中,每个字单元包含4字节单元或者2个半字单元,1个半字单元包含2字节单元。但是在字单元中,4字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式,通常称为大端格式或者小端格式,也就是big-endian格式和little-endian格式。大/小端的选择对于不同的芯片来说有一些不同的选择方式,一般都可以通过外部的引脚或内部的寄存器来选择。具体要参见处理器的数据手册。

  在大端模式下的存储格式如下所示。

  31                  24 23                 16 15                 8 7                 0

  字单元A

  半字单元A

  半字单元A+2

  字节单元A

  字节单元A+1

  字节单元A+2

  字节单元A+3

  而在小端模式下的存储格式如下所示。

  31                24 23                16 15                 8 7                   0

  字单元A

  半字单元A+2

  半字单元A

  字节单元A+3

  字节单元A+2

  字节单元A+1

  字节单元A

非对齐的存储访问操作:在ARM体系结构中通常希望字单元的地址是字对齐的(地址的低两位是0b00),半字单元的地址是半字对齐的(地址的最低位为0b0),但在存储单元中地址没有遵守上述的对齐规则,称为非对齐的存储访问操作,在arm体系结构的伪指令集中有专门的align指令来指定对齐格式。

  在ARM体系结构中允许指令预取,在CPU执行当前代码的同时,可以从存储器中预取其后若干条指令,具体预取多少条指令则由不同的arm处理器内核的实现来决定。

  2.arm体系结构中的MMU

  另外一个重要的概念就是MMU(Memory Manager Unit)。arm存储系统的体系结构适应不同的嵌入式系统应用,它的差别很大。最简单的存储系统使用平板式的地址映射机制,地址空间的分配是固定的,系统中各部分都使用物理地址,这样的处理器不带MMU。而一些复杂的系统可能包含一种或多种下面提到的技术,从而提供功能更为强大的存储系统。

  (1)系统中可能包含多种类型的存储器件,一般都有Flash、SRAM、SDRAM等接口。

  (2)使用指令/数据cache及Write Buffer技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。

  (3)系统中包含有MMU单元。

  MMU使用内存映射技术实现虚拟空间到物理空间的映射,这种映射机制对于嵌入式系统尤其重要。通常程序放在ROM/Flash中,这样系统掉电后程序能够保存。但是ROM/Flash比SDRAM速度慢很多,而且在嵌入式系统中,中断向量表存放在RAM中,不过利用内存映射就可以解决这种问题。在系统加电时将ROM/Flash地址映射到0×00000000,在0×00000000 地址处存放启动代码,来完成系统设备的初始化,之后再把内核程序加载到SDRAM,然后把地址映射到SDRAM的地址,跳转到SDRAM地址运行就可以了。

  针对具有MMU的ARM处理器可以移植Linux for arm操作系统,针对没有MMU的处理器,一般都是移植uClinux for arm。比如说Samsung公司的S3C4510、S3C2510都是不带MMU的处理器,只能移植uClinux,而针对S3C2410、PXA27x、OMAP591x等带有MMU单元的arm处理器通常都可以移植Linux操作系统。带有MMU的处理器内部都有用于存储管理的系统控制协处理器CP15,在移植嵌入式操作系统的Boot Loader时,必须要对存储管理单元进行初始化设置。

  3.快速上下文切换技术

  FCSE(Fast Context Switch Extension)技术通过修改系统中不同进程的虚拟地址,避免在进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。通常FCSE位于CPU和MMU之间,其责任就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无须重建TLB等。

在线咨询