Arbeitsspeicher: Optimierungen beim Betriebsablauf

Interleaving

Interleaving ist eine Technik, die es dem Prozessor gestattet, alternierend auf zwei Speicherbänke des Arbeitsspeichers zuzugreifen. Interleaving wird häufig in Servern und Workstations eingesetzt, um den reellen Datendurchsatz zu erhöhen. Die Speicherbank benötigt bei einem Zugriff immer einen Takt, um einen Refresh durchzuführen. Dem Prozessor ist es nun möglich, in dieser Wartezeit eine andere Bank zu selektieren und wertvolle Zeit einzusparen. Speichermodule mit Unterstützung für Interleaving ermöglichen es sogar, unabhängig vom Prozessor ein Interleaving durchzuführen, um die Geschwindigkeit zu optimieren. Beispielsweise sind SDRAMs in zwei oder mehrere interne Speicherbänke aufgeteilt. Diese Bänke haben nichts mit den Arbeitsspeicher Steckbänken auf dem Mainboard zu tun, sondern sind eine modulinterne Einrichtung. Sie sorgen dafür, dass ein fortlaufender Datenstrom entsteht und die Transferrate erhöht wird.

Bursting

Bursting ist ein Verfahren, das auf der Idee beruht, dass mehrere Datenbits, die hintereinander stehen auch oftmals zusammengehören. Zumindest ist die Wahrscheinlichkeit deutlich höher, als dass sie nicht zusammengehören. Aufgrund dieser Annahme wird beim Bursting statt eines einzelnen Bits, gleich ein Block mit definierter Größe geladen um somit unnötige Adressierungszeit einzusparen. Möglicherweise kommt Ihnen das aus dem FPM bekannt vor. Der Unterschied besteht allerdings darin, dass die Page beim FPM lediglich in die Sense Amps geladen wird. Im Burstmode geht es darum, dass die Daten auch tatsächlich über den I/O-Port wandern und in den Prozessor (oder auch zu einer anderen Instanz) gelangen. Theoretisch könnte die Burst-Länge genau so groß sein, wie die Page Size, Tests haben aber gezeigt, dass die besten Ergebnisse mit einer Burst-Length von 8 (früher 4) erreicht werden. Gängig sind Burst-Längen von 1, 2, 4, 6, 8 und teilweise sogar 16, wobei eine Burst-Length von 1 natürlich bedeutet, dass der Burst-Modus nicht verwendet wird. Häufig wird der Burstmode über eine Einstellung wie 7-2-2-2 geregelt. Diese Zahlen geben die Anzahl der Nanosekunden an, die für das Laden eines der Bits benötigt wird. Für das erste Bit wird immer etwas mehr Zeit benötigt, weil die erste Datenspalte der Page erst noch initialisiert werden muss. Seit der Zeit von SDRAMs obliegt diese Einstellung jedoch nicht mehr dem Benutzer, sondern dem BIOS, das die Zeiten automatisch dem Systemtakt anpasst.

Pipelining

Pipelining ist eine Architektur für Mikroprozessoren, die es der CPU gestattet, mehrere komplexe Maschinenbefehle zeitgleich auszuführen. Diese Prallelisierung der Abläufe kann die Leistung teilweise mehr als verdreifachen. Dies wird erreicht, indem komplexe Befehle in simple Fragmente zerteilt werden, die innerhalb von einem Takt bearbeitet werden können. So eine „Befehlsschachtel“, in der ein Befehlsfragment abgelegt wird, wird als „Stage“ bezeichnet. Möglicherweise wird in einigen Befehlen z.B. eine Variable des Vorbefehls verwendet. Es wäre sinnlos, wenn der Prozessor so lange keine Anfrage startet, bis er für diese eine Anfrage eine Antwort bekommen hat. Daher wird der Ablauf solche Befehlsstrukturen prozessorgesteuert verschachtelt. Wie der Prozessor das Pipelining gestaltet, ist von CPU zu CPU verschieden. Die Anzahl der Pipeline-Elemente variiert zwischen 4 und 20. Die Pipeline ist keine Software-Einheit, sondern physische Architektur. Möglicherweise fragen Sie sich, warum die CPU die Daten erst mühsam fragmentiert und weshalb dabei nicht eher Geschwindigkeitseinbußen entstehen. Nun zum einen ist es bei den neuen Prozessoren so, dass ihr Takt um ein Vielfaches höher ist, als der Systemtakt. Daher hat der Prozessor viel Zeit, interne Berechnungen durzuführen, weil ohnehin keine Daten über den FSB wandern. Für den Arbeitsspeicher ist dies deshalb interessant, weil Prozessoren mit Pipelining die Speichernutzung sehr effizient gestalten können.

Das Pipelineverfahren hat aber auch einen Nachteil, der sich exakt an der gleichen Stelle zeigt, wir der Vorteil. Ab und an kann es zu einem Pipeline Flush kommen. So ein Flush ist kein einfacher Datenverlust, sondern eine Leerung der Pipeline durch ein Programm. Nach so einem Flush muss die Pipeline wieder mit Daten gefüllt werden, was unter Umständen zu einem unschönen Performanceverlust führt. Je ausgefeilter jedoch die Pipeline-Architektur ist, desto weniger dramatisch ist ein Flush. Ferner werden mittlerweile Verfahren eingesetzt, die einen Datenverlust durch flushing verhindern können.

Es gibt drei Formen von Pipelining

  • einfaches Pipelining

    Beim einfachen Pipelining wird in jeder Stage exakt ein Befehl, oder gar keiner ausgeführt. Eine Überlappung von mehreren Befehlen innerhalb einer Stage kommt nicht vor. Selbst diese einfach Art von Pipelining bringt ein Geschwindigkeitsplus von 30% – 100%, je nach Prozessor und Anwendung. Ein Pipeline Flush hat hier allerdings gravierende Folgen, weil sämtliche Informationen erneut aus dem Arbeitsspeicher gelesen werden müssen und wertvolle Rechenzeit verloren geht.

  • Superpipelining

    Das Superpipelining gestattet sogar eine Abarbeitung von zwei Befehlen zu einem Zeitpunkt. Allerdings kann die Abarbeitung nicht zeitgleich, sondern muss etwas versetzt initialisiert werden. Es reicht dabei aus, wenn der erste Befehl angepasst wird, alle anderen werden dementsprechend eingereiht. Dieses Verfahren bringt ein maximales Geschwindigkeitsplus von 50% im Vergleich zum normalen Pipelining. Ein Pipeline-Flush wirkt sich hier weniger dramatisch aus, weil die Daten schneller wieder reinitialisiert werden können.

  • Super Skalar Pipelining

    In der Theorie bedeutet Super Skalar Pipelining eine Verdoppelung der Prozessorkapazität. Dadurch, dass zwei Befehle innerhalb einer Stage zeitgleich abgehandelt werden können, ergibt sich ein maximales Geschwindigkeitsplus von 100%. Das bedeutet natürlich auch, dass die Pipeline nach einem Flush doppelt so schnell gefüllt werden kann, wie bei einfachem Pipelining.

Gute Organisation ist die halbe Miete

Die Spaltenanzahl (cols) innerhalb von ICs ist ein entscheidendes Kriterium für die Effizienz der Chips und deshalb auch des Speichermoduls. Wie bereits im Vorkapitel angesprochen wurde, hängt die Anzahl der Sense Amps einer Reihe direkt von seiner Page Size, also der Anzahl an Spalten ab. Die Anzahl der Spalten innerhalb eines ICs hängt wiederum von der Chiporganisation ab. Die Organisation ist eine selten aufgeführte Größe, allerdings für die Leistungsfähigkeit eines Moduls von großer Bedeutung. Wir möchten Ihnen einen Einblick in dieses Kapitel geben, damit Sie im Zweifelsfall wissen, wovon gesprochen wird.

Die Organisation eines Chips sagt aus, wieviele Datenleitungen ein Chip zur Kommunikation benutzt, wie viele interne Bänke genutzt werden und welche Größe die Speicherzellen haben. Mit der Organisation eines Chips lässt sich auch die Kapazität des ganzen Moduls ermitteln, umgekehrt jedoch nicht. So kann ihr Schreibtisch beispielsweise 1 Meter breit und 1,5 Meter tief sein und damit eine Oberfläche von 1,5 Quadratmetern aufweisen. Nun könnte ein Tisch, der 1,5 Quadrameter oberfläche hat, aber auch mit 1,22 Meter an allen Seiten quadratisch sein. Eine ähnliche Situation stellt sich bei der Organisation von Chips und Modulen dar. Allerdings kommt erschwerend hinzu, dass der rechteckige Schreibtisch einfach um 90 Grad gedreht werden kann, um eine „Umorganisation“ durchzuführen, was bei den Chips so einfach nicht möglich ist. Nach so einer „Drehung“ muss der Chip komplett neu spezifiziert werden, weil sich die Anzahl der Datenleitungen geändert hat. Es gibt beispielsweise 128MB-Module mit folgenden Organisationen:

  • 128MB = 8M x 16
  • 128MB = 16M x 8
  • 128MB = 32M x 4

Für Chips mit 128Mbit Kapazität, wird von einer Zeilanzahl von 4096 ausgegangen, damit die Zellen mit einem 4k-Refresh erneuert werden können. Für Chips ab 256MBit Kapazität sind 8192 Zeilen (8k-Refresh) vorgesehen und für Kapazitäten über 1GBit 16384 Zeilen (16k-Refresh). Es handelt sich hierbei aber weder um Spezifikationen, noch um Vorschriften, wie die Hersteller ihre Module zu gestalten haben. Diese Werte sind lediglich weitestgehend angepasst und sollten im Bedarfsfall noch einmal bei einem Fachhandel geprüft werden. Für eine Zeilenanzahl von 4096 Zeilen pro Chip lässt sich bei einem 128MB-Modul eine Spaltenanzahl von 512, 1024 oder auch 2048 messen.

Fazit

Die Wahl des richtigen Speichermoduls ist viel schwieriger, als in aller Regel geahnt wird. Die meisten Anwender interessieren sich nicht dafür, ob das Speichermodul optimal für ihr System funktioniert oder nicht, Hauptsache es funktioniert überhaupt. Wir hoffen, dass wir Ihnen zeigen konnten, dass sich ein genauer Blick auf den Speicher sehr lohnen kann. Falls Sie nicht ganz sicher sind, wie viel Speicher, welchen Speicher, oder welche Organisation Sie benötigen, zögern Sie nicht uns anzurufen. Das Team von Indusys berät Sie gerne bei Ihren Fragen.