This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARMv8-A中如何正确使用LDNP/STNP指令?


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:

LDR X0, [X3]

DMB nshld

LDNP X2, X1, [X0]

从处理器来看:

LDR X0, [X3]

LDNP X2, X1, [X0]

这两条指令应该是相关的吧,第二条用到了第一条的结果,为何文档中说第二条可能先于第一条执行完毕?