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

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

3天内不再提示

Cortex R52内核Cache的具体操作(2)

瑞萨MCU小百科 来源:瑞萨MCU小百科 2024-07-15 15:44 次阅读

本节内容主要讲述CortexR52内核Cache的具体操作包括使缓存无效(invalidate)操作,清除(clean)缓存。有的时候客户可能需要对cache做一些清理,比如invalidate,clean等操作。虽然目前在cortex R52内核很少需要操作cache,但是本节依然给一些操作指导和实践,以备以后不时之须。

Cache Line缓存行的概念

操作cache相关指令需要通过汇编代码来操作,也都是以缓存行(Cache Line)为单位来进行操作。CortexR52缓存行的长度是64字节,比如下面的invalidate指令:

49d67ae8-427b-11ef-b8af-92fbcf53809c.png

点击可查看大图

指令的解释如下:

49eff9f0-427b-11ef-b8af-92fbcf53809c.png

点击可查看大图

1__asm volatile

这表示这是一段内联汇编代码,并且使用volatile关键字告诉编译器不要对这段代码做优化。

2"mcr p15, #0, %[bsc_sdram_cs3_mirror_space], c7, c6, #1 "

这是ARM处理器的指令。mcr是一个协处理器数据操作指令,用于向协处理器(如CP15)中的特定寄存器写入数据。在这里,它将数据写入到CP15寄存器中。p15, #0: 指定了协处理器的编号,这里表示CP15。

3%[bsc_sdram_cs3_mirror_space] "r" (n)

这里使用了内联汇编中的替换字符串(substitution strings),%[bsc_sdram_cs3_mirror_space] 用于指定一个替换占位符,它将在后面的 :: 部分中提供实际的值。"r" (n) 则表示使用寄存器(register)约束,这意味着n是一个变量。通常情况下,使用 "i" 约束表示将一个立即数直接嵌入到汇编指令中,而不是从变量中加载。但在你的代码中,你想要从一个变量中加载一个值传递给汇编指令。因此,你应该使用 "r" 约束来表示将一个寄存器中的值传递给汇编指令,而不是使用 "i"。

4:: 和 : "memory"

这两个部分是内联汇编的修饰符。:: 表示没有输出寄存器,"memory" 则表示该内联汇编代码可能会对内存进行读写操作,因此编译器需要考虑到内存屏障(memory barrier)的影响。

以RZT2M为例对cache作一些操作

1以rzt2m读取SDRAM为例,做一个打开和关闭cache的性能比较

SDRAM在代码中如果使用external Address sapce mirror的地址空间,那么开启和关闭cache的配置如下图所示:

4a11616c-427b-11ef-b8af-92fbcf53809c.png

点击可查看大图

4a4374b8-427b-11ef-b8af-92fbcf53809c.png

点击可查看大图

从上图可以看出关闭cache后读取数据的时间是打开cache后时间开销的十多倍。所以cache是否使能,性能差别十分显著。

2如果同样是读取10K bytes的数据,加上一起对cache invalidate/clean的操作之后,时间开销如下

4a69f7a0-427b-11ef-b8af-92fbcf53809c.png

点击可查看大图

上面的代码每读取sdram一次,都有对cache做操作。所以时间开销增加了很多,但是实际情况,是否需要频繁的操作cache需要看实际情况而定。注意每次对cache的操作都是以,cache line的长度(64字节)对cache做处理的。比如invalidate某段sdram地址对应的cache, 0x58000000-0x58000040, 那么对这段地址的invalidate操作是:

左右滑动查看完整内容

__asm volatile ( "mcr p15, #0 , %[bsc_sdram_cs3_mirror_sapce], c7, c6, #1      
"   /*DCIMVAC ->Invalidate data cache line by VA to PoC: test OK*/
::[bsc_sdram_cs3_mirror_sapce] "i" (0x58000000) : "memory");

注意代码中 "i" 与 "r" 的区别,在上文中已经有提到。

注意对cache的操作需要十分慎重,并且充分验证的情况下进行。

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

    关注

    3

    文章

    1382

    浏览量

    40413
  • 指令
    +关注

    关注

    1

    文章

    611

    浏览量

    35809
  • Cortex
    +关注

    关注

    2

    文章

    203

    浏览量

    46593

原文标题:解密Cortex R52内核Cache:操作实践、性能测试与深度解析(4)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    可编程交换机如何无缝卸载集体操作

    在本文中,Juniper技术专家兼高级工程总监Sharada Yeluri深入研究了 AI/ML 训练/推理中使用的集体操作,并讨论如何将其中一些功能卸载到网络交换机上,以减少拥塞并提高结构的性能
    的头像 发表于 10-22 16:04 289次阅读
    可编程交换机如何无缝卸载集<b class='flag-5'>体操作</b>

    请问TAS5805M低频、中频、高频、三个喇叭分频怎么具体操作

    TAS5805M:低频、中频、高频、三个喇叭分频怎么具体操作
    发表于 10-12 07:14

    九芯电子NVH/NVF语音芯片OTA升级操作方法

    OTA(Over-The-Air)升级是指通过无线网络远程对设备进行软件升级的过程。对于九芯电子NVH/NVF语音芯片,OTA升级可以通过WiFi模组实现,方便快捷‌。具体操作步骤如下:1.打开
    的头像 发表于 10-09 08:01 376次阅读
    九芯电子NVH/NVF语音芯片OTA升级<b class='flag-5'>操作</b>方法

    变压器低压侧电压过高怎么办

    当变压器低压侧电压过高时,可以采取以下几种方法来调节和解决: 一、检查并调整变压器档位 变压器通常具有多个档位,通过调整高压侧的抽头来改变变比,从而稳定低压侧的电压。具体操作时,可以根据负载情况
    的头像 发表于 09-12 14:26 2622次阅读

    解析Arm Neoverse N2 PMU事件L2D_CACHE_WR

    有客户希望我们帮忙分析 Eigen gemm 基准测试的一些执行情况。具体来说是为什么 L1D_CACHE_WR 的值会低于 L2D_CACHE_WR,这种情况令人费解。
    的头像 发表于 09-03 11:42 1376次阅读
    解析Arm Neoverse N<b class='flag-5'>2</b> PMU事件L<b class='flag-5'>2D_CACHE</b>_WR

    Arm Cortex-R82AE赋能高性能区域控制器设计

    在之前的一篇推文中我曾谈到过,汽车行业的近期发展趋势正在推动对汽车架构中区域控制器和域控制器的需求。而基于 Armv8-R 的 Arm Cortex-R52Cortex-R52+ 核心正是满足
    的头像 发表于 09-02 10:23 602次阅读

    RM57L843基于ARM® Cortex®-R内核的Hercules™微控制器数据表

    电子发烧友网站提供《RM57L843基于ARM® Cortex®-R内核的Hercules™微控制器数据表.pdf》资料免费下载
    发表于 08-08 10:52 4次下载
    RM57L843基于ARM® <b class='flag-5'>Cortex</b>®-<b class='flag-5'>R</b><b class='flag-5'>内核</b>的Hercules™微控制器数据表

    TMS570LC4357基于ARM Cortex®-R内核的Hercules™微控制器数据表

    电子发烧友网站提供《TMS570LC4357基于ARM Cortex®-R内核的Hercules™微控制器数据表.pdf》资料免费下载
    发表于 08-07 11:01 4次下载
    TMS570LC4357基于ARM <b class='flag-5'>Cortex</b>®-<b class='flag-5'>R</b><b class='flag-5'>内核</b>的Hercules™微控制器数据表

    Cortex R52内核Cache的相关概念(1)

    在开始阅读本系列文章之前,请先参阅《有关CR52 MPU配置说明》。因为这篇文章讲述了,cache配置所涉及到的寄存器的设置和MPU的一些基本概念。如果读者都已经理解了上述内容,可以跳过。本章内容主要讲述cache属性的
    的头像 发表于 07-15 10:37 1751次阅读
    <b class='flag-5'>Cortex</b> <b class='flag-5'>R52</b><b class='flag-5'>内核</b><b class='flag-5'>Cache</b>的相关概念(1)

    Cortex R52内核Cache的相关概念(2

    读/写分配是一种内存访问策略,用于确定处理器在访问内存时是否需要将数据加载到高速缓存中。
    的头像 发表于 07-15 10:35 1218次阅读
    <b class='flag-5'>Cortex</b> <b class='flag-5'>R52</b><b class='flag-5'>内核</b><b class='flag-5'>Cache</b>的相关概念(<b class='flag-5'>2</b>)

    CortexR52内核Cache具体操作

    本节内容主要讲述CortexR52内核Cache具体操作包括使缓存无效(invalidate)操作,清除(clean)缓存。有的时候客户可
    的头像 发表于 07-15 10:32 1383次阅读
    CortexR<b class='flag-5'>52</b><b class='flag-5'>内核</b><b class='flag-5'>Cache</b>的<b class='flag-5'>具体操作</b>

    摩芯半导体与安谋科技达成合作

    近日,无锡摩芯半导体有限公司(摩芯半导体)与安谋科技(中国)有限公司(安谋科技)携手合作,共同推进车载芯片技术的发展。摩芯半导体依托Arm® Cortex® -R52以及更高端的Cortex-R系列平台,结合自身在半导体领域深厚
    的头像 发表于 05-14 10:42 763次阅读

    RZ/T2M直流伺服电机解决方案

    瑞萨电子RZ/T2M是一款具有最大频率为800 MHz的双Arm Cortex-R52内核,行业领先的高性能、多功能MPU,可实现AC伺服系统和工业电机等工业设备的高速处理、高精度控制以及功能安全。
    的头像 发表于 04-18 14:05 929次阅读
    RZ/T<b class='flag-5'>2</b>M直流伺服电机解决方案

    什么是内存语义?CXL是如何划分语义的

    从IB提供的具体操作来看,Send/Receive,RDMA_Read,RDMA_Write和ATOMIC操作实际上都是针对内存的操作,所不同的是,Send/Receive操作的请求端
    的头像 发表于 04-08 10:27 6446次阅读
    什么是内存语义?CXL是如何划分语义的

    Cortex-M85内核单片机如何快速上手

    2022年4月,Arm推出了全新的MCU级内核Cortex-M85。截止目前(2024年2月),Cortex-M85是最新、最强的Cortex
    发表于 02-29 09:35 807次阅读
    <b class='flag-5'>Cortex</b>-M85<b class='flag-5'>内核</b>单片机如何快速上手