chapter_2(9-16).ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapter_2(9-16).ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ARM7 内核 存储器 控制器 存储器 2.12 存储器及存储器映射I/O 简介 ARM7定义了局部总线的接口时序 各芯片厂商制定了自己的接口时序 ARM7局部总线 一般在两者之间加入存储器控制器 2.12 存储器及存储器映射I/O 简介 ARM7TDMI处理器将存储器看作是一个从0开始的线性递增的字节集合: 字节0到3保存第1个存储的字 字节4到7保存第2个存储的字 字节8到11保存第3个存储的字 依此类推 2.12 存储器及存储器映射I/O 简介 ARM7TDMI处理器可以将存储器中的字以下列格式存储(详细说明见“存储器格式”小节): 大端格式(Big-endian) 小端格式(Little-endian) 2.12 存储器及存储器映射I/O 地址空间 ARM结构使用单个平面的232个8位字节地址空间。字节地址按照无符号数排列,从0到232-1。地址空间可以看作是包含230个32位字 ,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。 注意:如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。 2.12 存储器及存储器映射I/O 地址空间 跳转目标的计算方法: (当前指令的地址) + 8 + 偏移量 下一条指令位置的计算方法: (当前指令的地址) + 4 2.12 存储器及存储器映射I/O 存储器格式 地址空间的规则: 位于地址A的字包含的字节位于地址A,A+1,A+2和A+3; 位于地址A的半字包含的字节位于地址A和A+1; 位于地址A+2的半字包含的字节位于地址A+2和A+3; 位于地址A的字包含的半字位于地址A和A+2; 字节 字节 字节 字节 地址A A+1 A+2 A+3 半字 半字 字 存储器系统有两种映射机制: 小端存储器系统: 在小端格式中,高位数字存放在高位字节中。因此存储器系统字节0连接到数据线7~0。 大端存储器系统: 在大端格式中,高位数字存放在低位字节中。因此存储器系统字节0连接到数据线31~24。 0数据的大小端存储方式 2.12 存储器及存储器映射I/O 存储器格式 0x12 高位地址 低位地址 0x34 0x56 0x78 大端模式 0x78 高位地址 低位地址 0x56 0x34 0x12 小端模式 一个基于ARM内核的芯片可以只支持大端模式或小端模式,也可以两者都支持。 在ARM指令集中不包含任何直接选择大小端的指令,但是一个同时支持大小端模式的ARM芯片可以通过硬件配置(一般使用芯片的引脚来配置)来匹配存储器系统所使用的规则。 2.12 存储器及存储器映射I/O 存储器格式 注意:如果实际的存储器格式与芯片的存储器格式不符时,只有以字为单位的数据存取才正确,否则将出现不可预期的结果。 ARM结构通常希望所有的存储器访问都合理的对齐。具体来说就是字访问的地址通常是字对齐的,而半字访问使用的地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。 将一个非字(半字)对齐的地址写入ARM(Thumb)状态的R15寄存器,将引起非对齐的指令取指。 在一个非字(半字)对齐的地址读写一个字(半字),将引起非对齐的数据访问: 2.12 存储器及存储器映射I/O 未对齐的存储器访问 许多ARM实现在前一条指令的执行尚未完成时将指令从存储器中取出。这个动作称为指令的预取。指令的预取并不是实际执行指令。芯片的生产厂商可以自由选择预取指令的数目。被预取的指令可能得不到运行,可能的原因是: 发生异常; 发生跳转; 2.12 存储器及存储器映射I/O 指令的预取和自修改代码 当读取PC时,得到的指令地址比正在执行指令的地址落后两条指令: 对于ARM指令,得到的地址是它自身地址+8; 对于Thumb指令,得到的地址是它自身地址+4; 虽然生产厂商可以选择预取指令的数目,但是仍然可以保证读取PC所得到地址比它自身地址落后两条指令。 2.12 存储器及存储器映射I/O 指令的预取和自修改代码 在预取之前要进行转移预测,例如在执行一条分支指令,此时要判断是预取分支指令之后的指令还是转移目标地址的指令。 2.12 存储器及存储器映射I/O 指令的预取和自修改代码 ??? ??? ??? 内核流水性 执行 译码 预取 LDR R0,Add

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档