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

    文章

    1334

    浏览量

    40045
  • 指令
    +关注

    关注

    1

    文章

    591

    浏览量

    35487
  • Cortex
    +关注

    关注

    2

    文章

    200

    浏览量

    46160

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

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

收藏 人收藏

    评论

    相关推荐

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

    电子发烧友网站提供《RM57L843基于ARM® Cortex®-R内核的Hercules™微控制器数据表.pdf》资料免费下载
    发表于 08-08 10:52 0次下载
    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 0次下载
    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 846次阅读
    <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 692次阅读
    <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 920次阅读
    CortexR<b class='flag-5'>52</b><b class='flag-5'>内核</b><b class='flag-5'>Cache</b>的<b class='flag-5'>具体操作</b>

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

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

    威纶通触摸屏远程上下载程序需要什么工具?具体操作步骤是什么?

    威纶通触摸屏远程上下载程序需要什么工具?具体操作步骤是什么?
    的头像 发表于 01-17 15:34 3377次阅读
    威纶通触摸屏远程上下载程序需要什么工具?<b class='flag-5'>具体操作</b>步骤是什么?

    Arm Cortex-M52的主要特性和规格

    Arm Cortex-M52是一款采Arm Helium 技术的新型微控制器内核,旨在将AI功能引入更小、成本更低的物联网设备,而不是基于Arm Cortex-M55内核的SoC,Ar
    的头像 发表于 01-02 11:12 1042次阅读
    Arm <b class='flag-5'>Cortex-M52</b>的主要特性和规格

    Arm Cortex R4F内核与M4F内核有什么区别?

    TI的FAE给推荐了一款基于Arm Cortex R4F内核的MCU TMS570系列,不知道这个内核与ARM Cortex M4F
    发表于 11-06 07:13

    Armv8-R Cortex-R52+软件集成的最佳实践

    增加。该行业正越来越多地转向基于Armv8-R的解决方案,如Cortex-R52Cortex-R52+cpu(在论文中总结为Cortex-R52+),以实现这种软件集成的愿景。一些汽
    的头像 发表于 11-02 16:51 972次阅读
    Armv8-<b class='flag-5'>R</b> <b class='flag-5'>Cortex-R52</b>+软件集成的最佳实践

    Cache内容锁定是什么

    “锁定”在cache中的块在常规的cache替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁定”在c
    的头像 发表于 10-31 11:31 577次阅读

    AT32系列MCU flash具体操作说明

    AT32 MCU Flash Application Note为了让用户能够更全面的了解Artery AT32 系列的flash 相关操作
    发表于 10-23 06:51

    PLC远程上下载程序需要什么工具?具体操作步骤是什么?

    台达PLC是工业自动化控制领域常见的可编程逻辑控制器,可以实现多种工业设备的自动化控制和高效率生产。当PLC销往全国各地后,出现故障就需要厂家进行维护,进行PLC编程调试和上下载程序等操作,需要出差
    的头像 发表于 10-13 13:51 1307次阅读
    PLC远程上下载程序需要什么工具?<b class='flag-5'>具体操作</b>步骤是什么?

    用户大会丨四维图新旗下杰发科技发布首款符合功能安全ASIL-D多核高主频车规MCU芯片AC7870x 布局高端MCU市场

    基于Arm Cortex R52内核的多核高主频MCU—AC7870x。AC7870x的发布将正式开启杰发科技在高端车规级MCU领域的布局,并有力推动智能汽车电子电气架构的创新与发展,提升自主汽车芯片
    的头像 发表于 10-12 18:10 365次阅读
    用户大会丨四维图新旗下杰发科技发布首款符合功能安全ASIL-D多核高主频车规MCU芯片AC7870x  布局高端MCU市场

    杰发科技发布首款符合功能安全ASIL-D多核高主频车规MCU芯片AC7870x 布局高端MCU市场

    10月10日,“智进新途·匠芯而生”2023四维图新用户大会汽车电子芯片主题论坛在上海成功举办。会上,四维图新旗下杰发科技宣布推出首款符合功能安全ASIL-D基于Arm Cortex R52内核
    发表于 10-11 16:57 1297次阅读
    杰发科技发布首款符合功能安全ASIL-D多核高主频车规MCU芯片AC7870x   布局高端MCU市场