ARM体系的存储器系统

ARM是知识产权(IP)供应商,不制造芯片,也不出售芯片,而是转让设计方案。ARM架构是ARM公司第一款低成本RISC微处理器。

RISC结构特性

ARM内核采用精简指令集计算机体系结构(RISC),其指令集和相关的译码机制比复杂指令集计算机(CISC)要简单。

其目标是,设计出一套能在高时钟频率下,单周期执行,简单而有效的指令集

其设计的重点,在于降低处理器中指令执行部件的硬件复杂度,这是因为软件比硬件更容易提供更大的灵活性和更高的智能化,因此ARM具备了非常典型的RISC结构特性:

大量通用的寄存器;

通过装载/保存(load-store)结构,使用独立的load和store指令完成数据在寄存器与外部存储器之间的传送,处理器只处理寄存器中的数据,从而避免多次访问存储器;

寻址方式简单,所有装载/保存的地址都只由寄存器内容和指令域决定;

使用统一和固定长度的指令格式;

ARM体系存储系统

ARM处理器采用冯.诺依曼结构,因此指令和数据共用一条32位总线,因此只有装载、存储和交换指令可以对存储器中的数据进行访问。

ARM规范仅仅定义了其处理器内核与存储器系统之间的信号,以及局部总线,而实际的芯片(CPU芯片,而不是指内核)一般在外部总线与处理器核的局部总线之间有一个存储器管理部件:

负责将局部总线的信号和时序转换为现实的外部总线信号和时序。

因此,外部总线的信号和时序与具体的芯片相关,而不是ARM规范定义的标准。具体的某个芯片的外部存储系统的设计,需要参考其芯片的使用手册。

对ARM来说,它将存储器看成是一个从0开始的线性递增的字节集合:

字节0-3保存第1个存储的字;

字节4-7保存第2个存储的字;

字节8-11保存第3个存储的字;

……

ARM处理器可以将存储器中的字以两种格式存储:  大端格式和小端格式。前者高位数据存取低地址,低位数据存入高地址。后者反之。

地址空间

ARM结构使用2的32次方个8位字节的地址空间,字节地址从:0到2∧32-1。

地址空间同样也可以看作是2∧30个32位字,地址则以字为单位进行分配。就是将字节地址除以4,如此,地址为A的字包含4个字节,其地址分别为A、A+1、A+2、A+3。

地址空间还可以看做包含2∧31个16位半字,地址是按照半字分配。地址为A的半字,包含两个字节: A和A+1。

地址的计算通常通过普通的 整数指令 实现。这意味着,若地址向上或向下溢出地址空间通常会发生反转,也就是说计算的结果以2∧32为模。如果地址的计算没有发生翻转,那么结果仍然位于0-2∧32-1范围内。

大多数指令都是通过指令所指定的偏移量与PC值相加并将结果写入PC来计算目标地址。若用公式

PC+偏移值=[(当前程序执行位置)+8]+偏移量

来确定溢出地址空间,那么该指令依赖于地址的翻转。由此可见,在技术上是不可预测的,因此程序应该保证穿过地址0xFFFF FFFF的向前转移和穿过地址0x0000 0000的向后转移的情况都不发生。

此外正常连续执行的指令,实际上是通过“当前程序执行位置+4”来确定下一条将要执行的指令。


存储器的字与半字

ARM处理器直接支持8位字节,16位半字或32位字的数据类型。其中,以能被4整除的地址开始连续的4个字节构成1个字,字的数据类型为4个连续的字节。从偶数地址开始连续的两个字节构成一个半字,半字的数据类型为2个连续的字节。ARM的指令的长度刚好是一个字,而Thumb指令的长度刚好为一个半字。

字对齐与非字对齐

如果数据以字的方式存储,那么它就是字对齐。否则就是非字对齐。如果一个数据是以半字方式存储的,那么它就是半字对齐,否则就是非半字对齐。


表半字与字对齐

ARM处理器是直接支持 对齐存放的半字或字数据的存取,就是说可用一条相应的指令来实现对应操作:

程序执行效率

如果访问非对齐的半字或字数据,将需要多条指令组合 才能实现对应的操作,这个弊端就很明显了,这会大大地影响程序的执行效率,因此,在C语言编程中,定义的多字节变量或结构体,最好使其为对齐存放。

对齐存放的目的就是为提高代码的执行效率,而减少执行指令数。

存储器格式

地址空间要求洗地址A的规则:

位于地址A的字所包含的字节位于A、A+1、A+2、A+3。

上面并不能完全定义字、半字和字节之间的映射,存储系统使用以下两种映射机制的其中一种:小端存储器系统

大端存储器系统


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,788评论 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,694评论 1 20
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,297评论 0 13
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,808评论 0 5
  • ARM手册中都会有一些Programmers’ Model章节。那么什么是Programmers’ Model,P...
    赵国开阅读 1,146评论 1 1