Mehrdimensionale Arrays werden vom Compiler auf einen Vektor von aufenanderfolgenden Speicherzellen im Memory abgebildet. Die Art der Abbildung, nämlich zeilenweise oder Spaltenweise, ist von einer Programmiersprache verschieden. Ungeschickte Addressierung von Speicherzellen führt jedoch dazu, daß immer Feldelemente außerhalb des Cache angesprochen werden und sich die Laufzeiten der Programme verlängern.
Lineare Auslegung des 2--dimensionalen Arrays a(l,m) im Speicher :
=8.5 cm felder2d.eps
Lineare Auslegung des 3--dimensionalen Arrays a(l,m,n) im Speicher :
=9.5 cm felder3d.eps
Beispiel: Skalierung einer Matrix,
günstig (Zugriff auf aufeinanderfolgende Speicherzellen):
DO 10 i=1,l
DO 20 j=1,l
A(j,i)=b*A(j,i)
20 CONTINUE
10 CONTINUE
ungünstig (Überspringen von je l Speicherzellen beim Datenzugriff):
DO 10 i=1,l
DO 20 j=1,l
(A(i,j)=b*A(i,j)
20 CONTINUE
10 CONTINUE