ARM存储系统概述与数据类型(ARM处理器架构模型——存储系统,上篇)
本文声明:内容来源于网络,进行整合/再创作;部分内容由AI辅助生成。
Tips:本节知识分为上、中、下篇讲述,可通过专栏查找到对应文章。
ARM 存储系统概述
ARM存储器系统可以使用简单的平板式地址映射机制(就像一些简单的单片机一样,地址空间的分配方式是固定的,系统中各部分都使用物理地址),也可以使用以下一些技术提供功能更为强大的存储系统。
- 系统可能提供多种类型的存储器件,如 Flash、ROM、SRAM 等。
- Cache(高速缓冲存储器 )技术。
- 写缓存(Write Buffer)技术。
- 虚拟内存和 I/O 地址映射技术。
大多数的系统可通过以下方法之一,实现对复杂存储系统的管理。
①使用Cache,缩小处理器和存储系统的速度差别,从而提高系统的整体性能。
②使用内存映射技术实现虚拟空间到物理空间的映射,这种映射机制对嵌入式系统非常重要。
通常嵌入式系统程序存放在ROM/Flash中,这样系统断电后程序能够得到保存。但是,ROM/Flash与SDRAM相比读写速度慢很多,而且基于ARM的嵌入式系统通常把异常中断向量表放在RAM中。利用内存映射机制,在系统上电时,将ROM/Flash映射为地址0,这样可以进行一些初始化处理;当这些初始化处理完成后,将SDRAM映射为地址0,并把系统程序加载到SDRAM中运行,这样可很好地满足嵌入式系统的需要。
③引入存储保护机制,增强系统的安全性。
④引入一些机制保证:将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。
将I/O地址映射到内存空间后,在简单的无缓存系统中,CPU的读写能直接作用于设备,结果确定。但引入Cache和Write Buffer后,会引发两个核心问题:
- CPU可能读写的是缓存中的旧数据而非设备真实状态(一致性问题),
- 对设备的多个控制命令可能因缓存和缓冲的优化而乱序到达(顺序性问题)。
为此,系统必须引入关键机制(主要是将I/O内存区域标记为不可缓存/强序访问,并在必要时使用内存屏障指令)绕过或严格管控缓存与缓冲,确保所有I/O操作都能以正确顺序产生确定性的设备效果。
ARM 的数据类型
Cortex-A53处理器采用ARMv8 64位架构,该架构支持整数、浮点数等数据类型。
基本数据类型
ARMv8架构支持的基本数据类型有以下5种:
- Byte:字节,8bit
- Halfword:半字,16bit(半字必须与2字节边界对齐)
- Word:字,32bit(字必须与4字节边界对齐)1 字 = 4 字节 = 4 × 8 = 32 bit
- DoubleWord:双字,64bit
- QueaWord:四字,128bit
ARM架构中,将存储器看作是序号为 0~(32位)的线性字节阵列。其中每一个字节都有唯一的地址。字节可以占用任意位置。
半字占有2个字节的位置,该位置开始于偶数(2的倍数)字节地址(地址末位是0)。
长度为1个字的数据项占用一组4字节的位置,该位置开始于4的倍数的字节地址(地址末两位是00)。
关于ARMv8架构所支持数据类型的注意事项:
- 当将这些数据类型中的任意一种声明成unsigned类型时,n位数据值表示 0~
的非负数,通常使用二进制格式。
- 当将这些数据类型中的任意一种声明成signed类型时,n位数据值表示
~
的整数,使用二进制的补码格式。
- 数据类型指令的操作数具体字类型还是双字类型,由使用的寄存器类型决定。如“ADD W1, W0, #0x1”中的操作数“0x1”作为字类型数据处理;“ADD X1, X0, #0x1”中的操作数0x1”作为双字类型数据处理。
- Load/Store数据传输指令可以从存储器存取传输数据,这些数据可以是字节、半字、字。加载时自动进行字节或半字的零扩展或符号扩展。对应的指令分别为LDR/BSTRB (字节操作)、DRH/STRH (半字操作)、LDR/STR(字操作)。
- ARM 指令编译后是4 个字节(与字边界对齐);Thumb 指令编译后是 2 个字节(与半字边界对齐)
浮点型数据
浮点运算使用在ARM硬件指令集中未定义的数据类型。尽管如此,ARM公司仍然在协处理器指令空间定义了一系列浮点指令。
通常这些指令的实现方式:
- 软件实现:全部可以通过未定义指令异常(兼容硬件不支持的协处理器指令)。
- 硬件实现:小部分也可由浮点运算协处理器FPA10完成。
ARM浮点指令集的替代方法:
- ARM公司提供了C语言编写的浮点库(但Thumb代码只能使用浮点指令集)。该库支持IEEE标准的单/双精度格式。
- C编译器有一个关键字标志(可能是编译器选项或pragma指令)来选择浮点处理方式的编译参数。与软件仿真(通过避免中断、译码和浮点指令仿真)相比,此关键字标志产生的代码既快又紧凑。
