ARMv8-A增加了LDNP/STNP指令,不知指这类指令的应用场景在哪?手册中说这类指令带hint作用,目的是告诉内存系统,所操作的数据不需要入cache,仅单次使用即可,这个怎么理解? 这种类型和device或者SO有何不同呢?
另外DEN0024A_v8_architecture_PG.pdf手册中6-17给出了LDNP指令的一个例子:
For example:
LDR X0, [X3]
LDNP X2, X1, [X0] // Xo may not be loaded when the instruction executes!
To correct the above, you need an explicit load barrier:
DMB nshld
LDNP X2, X1, [X0]
从处理器来看:
这两条指令应该是相关的吧,第二条用到了第一条的结果,为何文档中说第二条可能先于第一条执行完毕?
大赞joeyxu的专业且精准的回复,使我对LDNP/STNP有一个全面且深入的了解,非常感谢!
joeyxu果然Cortex-A达人