19--ARM体系结构.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 这是一个理想的实例,所有的指令都在寄存器中执行,且处理器完全不必离开芯片本身。流水线的容量得到了充分的发挥。 假定:存储器为单周期,32位宽 CPI=1时最理想的,对非超标量体系结构的处理器而言。 典型的CPI为1.9 * 与例1不同,装载(LDR) 操作将数据移进片内导致了指令/数据总线被占用,因此随后紧跟了内部的写周期( writeback)以完成将数据写回寄存器。 数据总线在周期1, 2, 3 被使用,周期6是取指,周期4用于数据装载,而周期5是一个内部周期用来完成载入的数据写回到寄存器中。 周期3为执行周期:产生地址 周器4为数据周期:从存储器中取数据(数据只有在周期4的末尾出现在内核中) 周期5写回周期:通过数据通道中的B总线和ALU将数据写回到寄存器bank 中 周期6的执行被推迟了,直到周期5写回完成(使用ALU )。同样内部周期是不需要等待状体的,但读写存储器时可能需要。 重要的: 指令预取的地址是顺序的,但非顺序的地址的计算要用到存储器中的数据地址 * 分支指令在其第一周期计算分支的目的地,同时在现行PC处完成一次指令预取。这种预取在任何情况下都要做的,因为当判决地址产生时已来不及停止预取。 第二个周期在分支的目标地址完成取指,而返回地址则存于R14如果link位已设置。 第三周期完成目标地址+4的取指,重新填满流水线,并且如果跳转是带链接的还要修改R14(减取4)以便简单地返回: SUB PC,R14,#4 to MOV PC,R14 这会让STM...{R14} LDM...{PC} 类的子程序工作正常。 即不必调整 PC!! = 分支需要三个时钟周期来执行 随后会涉及调整阶段 也许可以问问学员为什么( PC指向 何处?哪里才是我们希望PC返回的地方? =解释 ) * 周期1: 内核被告知有中断 IRQ在现行指令执行完之前不会被响应( MUL and LDM/STM 指令会有长的延迟) 解码阶段:中断被解码(中断已使能,设置了相应标志位… )。如果中断被使能和服务,正常的指令将不会被解码。 周期 2: 此时总是进入ARM状态. 执行中断 ( 获取IR向量的地址), 保存 CPSR 于 SPSR, 改变CPSR模式为 IRQ 模式并禁止进一步的 IRQ 中断输入。 周期 3: 保存 PC (0x800C) 于 r14_irq, 从IRQ异常处理向量处取指 周期 4: 解码向量表中的指令; 调整r14irq 为0x8008 周期 4和 5: 无有用的指令取指, 由于周期 6的跳转 周期 6: 取异常处理子程序的第一条指令; 从子程序返回: SUBS pc,lr,#4 这将恢复工作模式并从响应中断前的下一条指令处取指 如果有多个中断,需堆栈保存返回地址 注意最大的FIQ响应延迟为 29个周期(而非Thumb状态的28周期!) * 图中示出了针对每种数据宽度的有效存取方式。数字是最低位十六进制地址,注意地址取决于基址寄存器的值和偏移,所以需要检查基址寄存器的值。 ARM架构已被设计成快速又简单的32位存储器接口。每次存取只需一个存储周期,因此不能跨4字节边界存取。所有非对齐字和非对齐半字都是不允许的。 编译器将保证变量和结构区域是对齐的 – 因此不必担心编译出的代码。编译器支持__packed 允许非对齐存取,但这样做代码量将非常大且昂贵(见C/C++编译器点滴及技巧 )。 检测不正确的非对齐对保证程序的正确是非常重要的。使用lr_abt 在数据异常处理中。 注意指令预取可能出现非对齐,由于pc[1:0] 没有被有效的取指地址所驱动。存储器系统在取指时必须忽略这两位避免对齐错误。 注意本页图中没有涉及大端或小端方式 本页仅适用于v4 和 v5 内核, v6内核遵循不同的规则。 * ARM7TDMI 的3个带 cache的派生内核分别是: ARM710T, ARM720T 和 ARM740T. 带 cache处理器经常使用在总线速度低于内核的场合,并允许内核速度尽量接近其最大速度。例如,内核可以通过cache(0等待)运行在50MHz,但若没有cache则必须降低到25MHz才能通过总线读写数据。 ARM710T和ARM720T有完全的内存管理单元( MMU ), MMU的作用是将虚拟地址(来自内核)翻译成物理地址以读写存储器,cache地址是虚拟的。 MMU对不同的存储区域也提供可用于cache、可用于缓冲和内存保护的属性,操作系统,像Windows CE,要求MMU支持其任务管理。 ARM740T提供了比MMU更为简单的方法来分配存储区域的特性,但不允许地址转换。以上不需要MMU页表。 写缓冲允许对外

文档评论(0)

ffpg + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档