ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC

这篇具有很好参考价值的文章主要介绍了ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


上篇文章:ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍

ARM64 DC 与 IC 指令

AArch64指令集中有两条关于缓存维护(cache maintenance)的指令,分别是IC和DC。

  • IC 是用于指令缓存操作;
  • DC 是用于数据缓存操作。

IC 和DC指令都属于系统指令(system instruction),系统指令还包括 AT,BRB,CFP,CPP,DVP和TLBI。

IC指令的语法格式如下

IC <ic_op>, {<Xt>}

其中,是可选的 64-bit 通用源寄存器。

  • IC IALLU: 表示 Invalidate all to PoU,无效化所有到PoU(Point of Unification,统一点)的指令缓存行。
  • IC IALLUIS: 表示 Invalidate all to PoU, Inner Shareable,无效化所有到PoU的,内部可共享(Inner Shareable)的指令缓存行。
  • IC IVAU: 表示 Invalidate Virtual Address to PoU,无效化虚拟地址到PoU的指令缓存行。

关于 shareable 及 POC, POC 见以前文章:
ARM Cache 系列文章 3 – Cache 与 MPU关系学习
ARM Cache 系列文章 2 – Cache Coherence及内存顺序模学习

ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC,# ARM 常见汇编指令学习,ARM64 DC,ARM64 IC,IC IVAU,IC IALLU,DC CIVAC,DC IVAC

DC指令的语法格式如下

DC <dc_op>, <Xt>

其中,是可选的64-bit通用源寄存器

DC 指令后操作选项 <dc_op> 用于指定具体的操作类型,比如:

  • DC IVAC:表示Invalidate Virtual Address to PoC,无效化虚拟地址到 PoC 的缓存行。

  • DC ISW: 表示Invalidate Set/Way,无效化缓存组/路。缓存维护操作可以通过缓存组(set),路(way)或虚拟地址(VA)执行。在做高速缓存维护操作前,需要知道高速缓存的一些信息,比如系统中有多少级高速缓存,缓存行的大小,每一级缓存的组织结构等等。这些基本信息保存在系统寄存器中,在系统上电过程中,操作系统访问这些寄存器来获得缓存的信息。这些寄存器有 CLIDR_EL1CSSELR_EL1CCSIDR_EL1CTR_EL1等。

  • DC CIVAC:这个指令的含义是:C–Clean, I–Invalidate,

    • Clean:将缓存中的数据写回到主存中,以确保主存中的数据是最新的。
    • Invalidate:使缓存中的指定数据无效,这样在下次访问该数据时,处理器会从主存中重新加载数据,而不是使用缓存中的旧数据。
    • Architectural Event Broadcast通道:这是一个硬件机制,用于在多核处理器中同步不同核之间的缓存操作。
  • 举例来说,如果你执行了 “DC CIVAC, X0” 这条指令,那么处理器会清除并无效化寄存器X0中指定的地址对应的缓存行。

adr x0, data_pool1
adr x1, data_pool2
adr x2, data_pool3

/* clean adn invalidate */
dsb sy
dc CIVAC,x0
dc CIVAC,x1
dc CIVAC,x2
dsb sy

data_pool1:
    ...
data_pool2:
    ...
data_pool3:
    ...

上篇文章:ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍文章来源地址https://www.toymoban.com/news/detail-625145.html

到了这里,关于ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习

    下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL 在 ARM 汇编中,“ .macro ” 是用来定义一个宏的指令。宏可以看作是一个可以在汇编程序中重用的代码段。当调用宏时,汇编器会将宏的内容插入到调

    2024年02月14日
    浏览(43)
  • 【ARM64 常见汇编指令学习 16 -- ARM64 SMC 指令】

    上篇文章:ARM64 常见汇编指令学习 15 – ARM64 标志位的学习 下篇文章:ARM64 常见汇编指令学习 17 – ARM64 BFI 指令 在ARMv8架构中,同步异常主要包括以下几种: Undefined Instruction :未定义指令异常,当处理器尝试执行一条未定义的指令时会触发。 Supervisor Call (SVC) :这是一种特殊

    2024年02月13日
    浏览(44)
  • 【ARM 常见汇编指令学习 2 -- 存储指令 STP 与 LDP】

    上篇文章:ARM 常见汇编指令学习 1 – 跳转指令 BL 与 BLR 区别 下篇文章:ARM 常见汇编指令学习 3 – ARM64 无符号位域提取指令 UBFX 在 ARMv8 架构中,STP指令用于将两个通用寄存器的值存储到内存中。STP指令的语法如下: 或 其中: Wt1 和 Wt2 表示两个要存储的32位通用寄存器, Xt

    2024年02月09日
    浏览(41)
  • 【ARM64 常见汇编指令学习 20 -- ARM 指令 .include与 .asciz 详细介绍】

    在 ARM 汇编语言中, .include 命令用于插入另一个源文件的内容。它的作用类似于 C 语言中的 #include 预处理命令。这个命令通常在源文件的顶部使用,但也可以在任何地方使用。 语法如下: 这里的 \\\"filename\\\" 是你想要包含的文件名。这个文件名可以是绝对路径,也可以是相对于

    2024年02月11日
    浏览(53)
  • 【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

    上篇文章:ARM 常见汇编指令学习 2 – 存储指令 STP 与 LDP 下篇文章:ARM 常见汇编指令学习 4 – ARM64 比较指令 cbnz 与 b.ne 区别 在代码中如何监控寄存器的某1bit, 或者某几bit ? ARM 提供了一个汇编指令:UBFX 就可以用于该功能。 UBFX 有2种语法分别是对32bit 寄存器和64bit寄存器。

    2024年02月15日
    浏览(35)
  • 【ARM64 常见汇编指令学习 21 -- ARM RET 与 ERET】

    请阅读 【嵌入式开发学习必备专栏 】 在 ARMv8 架构中, RET 指令用于从函数或者过程返回。它主要负责从当前过程跳转回调用者,并恢复调用者的程序计数器 (PC) 的值。 语法: Xn 是一个可选的寄存器,通常为 X30 (也称为 LR ,链接寄存器),其中包含返回地址。如果没有指

    2024年04月10日
    浏览(136)
  • 【ARM 常见汇编指令学习 4 -- ARM64 比较指令 cbnz 与 b.ne 区别】

    上篇文章:ARM 常见汇编指令学习 3 – ARM64 无符号位域提取指令 UBFX 下篇文章:ARM 常见汇编指令学习 5 – arm64汇编指令 wzr 和 xzr B.NE 指令格式 B.NE指令的含义是:如果上一个指令的结果不等于零(即条件标志位Z为0),那么跳转到指定的地址。如果结果等于零,则继续执行下一

    2024年02月14日
    浏览(62)
  • 【ARM 常见汇编指令学习 1 -- 跳转指令 BL 与 BLR 区别】

    下篇文章:ARM 常见汇编指令学习 2 – 存储指令 STP 与 LDP ARM 中跳转指令主要分为无条件跳转和有条件跳转,有条件跳转是一种根据特定条件进行跳转的指令。它会根据条件码寄存器(Condition Code Register)中的状态,判断是否满足特定条件,然后根据条件的结果决定是否进行跳

    2024年02月07日
    浏览(37)
  • 【ARM 常见汇编指令学习 7 - LDR 指令与LDR伪指令及 mov指令】

    上篇文章:ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或) 下篇文章:ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 LDR指令 与 LDR伪指令 两者虽然名字相同但是作用却不相同,区分两者的方法就是看第二个参数,如果有等号,就是LDR伪指令。 LDR 指令 上面语句的

    2024年02月14日
    浏览(55)
  • 【ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍】

    上篇文章:ARM 常见汇编指令学习 7 - LDR 指令与LDR伪指令及 mov指令 下篇文章:ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC 数据同步屏障是一种特殊类型的内存屏障。 只有当DSB指令执行完毕后,才会执行程序中位于此指令后的指令。 当满足以下条件时,此指令才会完成:

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包