揭阳自助建站软件,做网站前台后台是怎么连接的,app应用开发,涿州吧文章目录 ARM64 DC 与 IC 指令 上篇文章#xff1a;ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 ARM64 DC 与 IC 指令
AArch64指令集中有两条关于缓存维护#xff08;cache maintenance#xff09;的指令#xff0c;分别是IC和DC。
IC 是用于指令缓存操作… 文章目录 ARM64 DC 与 IC 指令 上篇文章ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 ARM64 DC 与 IC 指令
AArch64指令集中有两条关于缓存维护cache maintenance的指令分别是IC和DC。
IC 是用于指令缓存操作DC 是用于数据缓存操作。
IC 和DC指令都属于系统指令system instruction系统指令还包括 ATBRBCFPCPPDVP和TLBI。
IC指令的语法格式如下
IC ic_op, {Xt}其中是可选的 64-bit 通用源寄存器。 IC IALLU: 表示 Invalidate all to PoU无效化所有到PoUPoint 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及内存顺序模学习 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 sydata_pool1:...
data_pool2:...
data_pool3:...上篇文章ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍