ARMv8中的prfm("Prefetch Memory")指令用于预取内存中的数据,以利用CPU的处理时间。具体流程如下:
1.获取要预取的数据的地址和预取的类型。 例:预取内存地址0x1000中的数据到L1 Cache中,类型为Exclusive读取。 ldr x0, =0x1000 prfm pldl1keep, [x0]
2.检查缓存行是否存在CPU的寄存器或Cache中。 如果已经存在,则不进行预取。 如果不存在,则进行预取操作。
3.向系统总线发送预取命令。
示例代码:
;将内存地址0x1000中的数据预取到L1 Cache中,类型为Exclusive读取
ldr x0, =0x1000
prfm pldl1keep, [x0]