第2章ARM体系结构.ppt

  1. 1、本文档共287页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3 DCache和写缓冲 使能和禁止DCache和写缓冲 复位时,DCache项无效,DCache被禁止,并且写缓冲内容被丢弃。ARM920T没有实现明确的写缓冲使能位。写缓冲通过以下方式被使用: 通过向Ccr位写1使能DCache,写0禁止DCache。 ?MMU使能时必须使能DCache。因为MMU变换表定义了每个存储器区域的Cache和写缓冲配置。 ?如果DCache使能后又被禁止,Cache中的所有内容都被忽略,此时所有数据访问都作为单独的非连续访问出现在AMBA ASB接口上,并且Cache不被更新。如果DCache紧接着又被重新使能,它的内容不会发生改变。根据软件系统设计,通常需要在禁止DCache之后清理它,在重新使能DCache之前使它无效。 通过使用一条单独的MCR指令修改控制寄存器(CP15寄存器1)的M位和C位,可以同时使能或禁止MMU和DCache。 3 DCache和写缓冲 DCache和写缓冲操作 每个存储器区域的DCache和写缓冲配置情况由MMU变换表中的每个段和页描述符中的Ctt位和Btt位控制。通过使用CP15控制寄存器中的DCache使能位可以修改该配置,该位被称为Ccr。 如果DCache被使能,不管相关的变换表描述符是何值,每一次数据访问开始都要由ARM9TDMI CPU内核执行一次DCache查找。 如果找到了所需的数据,这次查找被称为Cache命中。如果没有找到所需的数据,这次查找被称为Cache未命中。 这里数据访问的含义指任何类型的加载(读)、存储(写)和交换指令,包括LDR、LDRB、LDRH、LDM、LDC、STR、STRB、STRH、STC、SWP和SWPB。 3 DCache和写缓冲 DCache和写缓冲操作 Ctt Ccr Btt Dcache 写缓冲行为 0 0 NCNB 0 1 NCB 1 0 WT(Write Through) 1 1 WB(Write Back) 3 DCache和写缓冲 交换指令 交换指令(SWP或SWPB)的行为依赖于存储器区域是否是可高速缓存的。 对于可高速缓存的存储器区域的交换指令可用于在多线程单一处理器软件系统中实现旗语或其他同步原语。当一个交换指令访问一个可高速缓存的存储器区域时(写直达和写回),DCache和写缓冲的行为与正常情况下的加载后紧跟一次存储的操作相同。 对于不可高速缓存的存储器区域的交换指令可用于多主控(multi-master)总线系统中的两个总线主控器之间的同步。这里可以是两个处理器,或者一个处理器和一个DMA控制器。当一个交换指令访问一个不可高速缓存(NCB或NCNB)的存储器区域时,写缓冲被排空,并且从AMBA ASB接口读取一个字或一个字节。 3 DCache和写缓冲 DCache锁定 数据可以被锁定到DCache中,这样就可以保证DCache永远命中,从而提供最佳的且可预测的执行时间。 通过控制丢弃者指针以及强制加载到DCache中,可以实现将指令锁定在DCache中。要将数据锁定到DCache中,必须首先确保被锁定的数据不在DCache内。为了确保这一点,可以通过使整个DCache或指定行无效来实现。使DCache无效和清理操作的实现代码如下: MCR p15,0,Rd,c7,c6,0 ;使DCache无效 MCR p15,0,Rd,c7,c6,1 ;使用MVA使DCache单个项无效 MCR p15,0,Rd,c7,c10,1 ;使用MVA清理DCache单个项 MCR p15,0,Rd,c7,c14,1 ;使用MVA清理并使DCache单个项无效 MCR p15,0,Rd,c7,c10,2 ;使用索引清理DCache单个项 MCR p15,0,Rd,c7,c14,2 ;使用索引清理并使DCache单个项无效 ? 4 Cache一致性 ICache和DCache中包含的内容通常是主存信息的副本。如果这些主存信息的副本由于一个更新而另一个没有更新而造成步调混乱,则称它们是不一致的。如果DCache包含一个被存储或交换指令修改的行,并且主存储器还没有被更新,那么该Cache行被认为是脏的。清理操作将迫使Cache中的脏行写回到主存中。ICache必须在MVA上出现指令变化之后,新指令执行之前与发生变化的存储区域保持一致。 DCache清理操作举例: for seg=0 to 7 for index=0 to 63 Rd={seg,index} MCR p

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档