0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cache内容锁定是什么

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-10-31 11:31 次阅读

“锁定”在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,

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6867

    浏览量

    88800
  • 指令
    +关注

    关注

    1

    文章

    606

    浏览量

    35646
  • Cache
    +关注

    关注

    0

    文章

    129

    浏览量

    28294
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68324
收藏 人收藏

    评论

    相关推荐

    看完cache后的疑惑

    我最近看6437的cache。话说如果不使能所有cache.那dspcpu也是可以访问ddr2的是吧。那这个路径是怎么样的呢。在手册上的Block Diagram等都没看到。都讲的是ddr2到l2,l1到cpu这么个cache
    发表于 08-02 07:15

    刚学FREERTOS,任务锁定是哪个函数?

    刚学FREERTOS,任务锁定是哪个函数?UC里是OSSchedLock();
    发表于 06-15 04:35

    QPLL没有锁定是为什么?

    嗨,大家好,我有一个拒绝锁定的QPLL。设计采用Coregen 14.4生成,目标设备为XC7V2000T Initial ES。 QPLL的参考时钟直接来自IBUFDS_GTE2实例,为100
    发表于 07-28 08:55

    什么是Cache

    什么是Cache  英文缩写: Cache 中文译名: 高速缓存器 分  类: IP与多媒体 解  释: 信息在本地的临时存储
    发表于 02-22 17:26 1010次阅读

    高速缓存(Cache),高速缓存(Cache)原理是什么?

    高速缓存(Cache),高速缓存(Cache)原理是什么? 高速缓存Cache是位于CPU和主存储器之间规模较小、存取速度快捷的静态存储器。Cache一般由
    发表于 03-26 10:49 6818次阅读

    Buffer和Cache之间区别是什么?

    集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。当然若cache中没有cpu所需要的内容,还是要访问内存的。
    的头像 发表于 04-02 10:35 6731次阅读

    cache结构与工作原理

    更详细的讲,cache的结构其实和内存的结构类似,也包含地址和内容,只是cache内容除了存的数据(data)之外,还包含存的数据的物理内存的地址信息(tag),因为CPU发出的寻址
    发表于 06-03 14:24 1.2w次阅读
    <b class='flag-5'>cache</b>结构与工作原理

    Linux内核Page Cache和Buffer Cache两类缓存的作用及关系如何

    在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty
    的头像 发表于 07-02 14:25 2699次阅读
    Linux内核Page <b class='flag-5'>Cache</b>和Buffer <b class='flag-5'>Cache</b>两类缓存的作用及关系如何

    关于Cache的其它内容

    关于Cache的其它内容 上面我们所描述情况,在访问cache前,已经将虚拟地址转换成了物理地址,其实,不一定,也可是是虚拟地址直接访问cache,倒底是使用物理地址还是虚拟地址,这就
    的头像 发表于 11-21 11:12 2345次阅读

    什么是 Cache? Cache读写原理

    由于写入数据和读取指令分别通过 D-Cache 和 I-Cache,所以需要同步 D-Cache 和 I-Cache,即复制后需要先将 D-Cach
    发表于 12-06 09:55 2346次阅读

    CPU Cache伪共享问题

    当CPU想要访问主存中的元素时,会先查看Cache中是否存在,如果存在(称为Cache Hit),直接从Cache中获取,如果不存在(称为Cache Miss),才会从主存中获取。
    的头像 发表于 12-12 09:17 650次阅读

    深入理解Cache工作原理

    按照数据关系划分:Inclusive/exclusive Cache: 下级Cache包含上级的数据叫inclusive Cache。不包含叫exclusive Cache。举个例子,
    的头像 发表于 05-30 16:02 771次阅读
    深入理解<b class='flag-5'>Cache</b>工作原理

    Cache的原理和地址映射

    cache存储系统中,把cache和主存储器都划分成相同大小的块。 主存地址由块号B和块内地址W两部分组成,cache地址由块号b和块内地址w组成。 当CPU访问cache时,CPU
    的头像 发表于 10-31 11:21 1554次阅读

    Cache分类与替换算法

    根据不同的分类标准可以按以下3种方法对Cache进行分类。 •1)数据cache和指令cache •● 指令cache:指令预取时使用的cache
    的头像 发表于 10-31 11:26 918次阅读
    <b class='flag-5'>Cache</b>分类与替换算法

    Cache写入方式原理简介

    提高高速缓存命中率的最好方法是尽量使Cache存放CPU最近一直在使用的指令与数据,当Cache装满后,可将相对长期不用的数据删除,提高Cache的使用效率。 为保持Cache中数据与
    的头像 发表于 10-31 11:43 1196次阅读