全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 存储技术 >

Cache内容锁定是什么

时间:2023-10-31 11:31

人气:

作者:admin

标签: 指令  Cache  数据  代码 

导读:“锁定”在cache中的块在常规的cache替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁定”在cache中的块也将受到相应的影响。 用LINELEN表...

“锁定”在cache中的块在常规的cache替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁定”在cache中的块也将受到相应的影响。

用LINELEN表示cache的块大小,用ASSOCIATIVITY表示每个cache组中的块数,用NSETS表示cache中的组数。

cache的“锁定”是以锁定块(lockdown block)为单位进行的。每个锁定块中包括cache中每个组中各一个块,这样cache中最多可有ASSOCIATIVITY个锁定块,编号为0~ASSOCIATIVITY-1。

其中编号为0的锁定块中包含cache组0中的0号块、组1中的0号块,一直到ASSOCIATIVITY-1中的0号块。

“N锁定块被锁定”是指编号为0~N-1的锁定块被锁定在cache中,

编号为N~ASSOCIATIVITY-1的锁定块可用于正常的cache替换操作。

实现N锁定块被锁定的操作步骤说明如下:

•1)确保在整个锁定过程中不会发生异常中断,否则必须保证与该异常中断相关的代码和数据位于非缓冲(uncachable)的存储区域。

•2)如果锁定的是指令cache或者统一的cache,必须保证锁定过程所执行的代码位于非缓冲的存储区域。

•3)如果锁定的是数据cache或者统一的cache,必须保证锁定过程所涉及的数据位于非缓冲的存储区域。

•4)确保将要被锁定的代码和数据位于缓冲(cachable)的存储区域。

•5)确保将要被锁定的代码和数据尚未在cache中,可以通过使无效相应cache中的块达到这一目的。

•6)对于I=0到N-1,重复执行下面的操作:

•a)Index=I写入CP15的C9寄存器,当使用B格式的锁定寄存器时,令L=1;

•b)在锁定块I中的各cache块内容从主存中预取到cache中,对于数据cache和统一cache可以使用LDR指令读取一个位于该块中的数据,将块预取到cache中;对于指令cache,通过操作CP15的C7寄存器,将相应的块预取到指令cache中。

•7)将index=N写入CP15的C9寄存器,当使用B格式的锁定寄存器时,令L=0。解除N锁定块被锁定只须执行以下操作:将index=0写入CP15的C9寄存器,当使用B格式的锁定寄存器时,令L=0。

Cache和Writer Buffer编程接口

ARM处理器中的Cache和Write Buffer操作是通过写CP15的C7寄存器来实现的。访问CP15的C7寄存器的指令格式如下所示:

mcr p15, 0, , , crm,

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信