next up previous contents
Next: Hierarchische Speicherorganisation Up: Speicherorganisation und Programmierung Previous: Speicherorganisation und Programmierung

Datenauslegung von Arrays

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

Slogan: Der erste Index wackelt in Forgram am meisten, in C der letzte.

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


Web Master
Tue Mar 12 15:25:06 MET 1996