Was bedeutet die Ausrichtung an der 16-Byte-Grenze in x86?
Intels offizieller Optimierungsleitfaden enthält ein Kapitel zur Konvertierung von MMX-Befehlen nach SSE, in dem die folgende Anweisung angegeben ist:
Berechnungsanweisungen, die einen Speicheroperanden verwenden, der möglicherweise nicht an einer 16-Byte-Grenze ausgerichtet ist, müssen durch eine nicht ausgerichtete 128-Bit-Last (MOVDQU) ersetzt werden, gefolgt von derselben Rechenoperation, die stattdessen Registeroperanden verwendet.
(Kapitel 5.8 Konvertieren von 64-Bit- in 128-Bit-SIMD-Ganzzahlen, S. 5-43)
Ich kann nicht verstehen, was sie mit "möglicherweise nicht an einer 16-Byte-Grenze ausgerichtet" meinen. Könnten Sie dies bitte erläutern und einige Beispiele nennen?