In Teil 1 dieses Artikels [1] wurden die Anforderungen an eine zukunftsfähige Speicherarchitektur nach DDR3 aufgezeigt und erste Lösungsansätze wie die FlexPhase-Technologie, Near-Ground-Signaling, FlexClocking-Architektur und Dynamic-Point-to-Point aufgezeigt. Dieser zweite Teil beleuchtet nun die speziellen Anforderungen von Multicore-Architekturen.
Im Folgenden wird das Modul-Threading vorgestellt, das besonders bei Multicore-Architekturen wichtig ist und bei Kombination mit der Near-Ground-Signaling- und FlexClocking-Technologie die Gesamtleistungsaufnahme des Speichersystems um mehr als 40 % reduzieren kann. Threading-Techniken wie das Modul-Threading und das Micro-Threading können den Energiebedarf für die Zugriffe auf das DRAM verringern und die Effizienz der Datentransfers verbessern.
In modernen Rechnersystemen findet man üblicherweise einen hierarchisch gestaffelten Speicher vor, in dem die Daten für die internen Rechenregister durch verschachtelte Cache-Ebenen bereitgestellt werden. Datenzugriffe auf Cache-Zeilen werden rekursiv im Anschluss an Cache-Misses (nicht fündig werdende Zugriffe) durchgeführt – beginnend bei der ersten Cache-Ebene über die verschiedenen Ebenen bis hin zum externen Speichersystem. Datenzugriffe erfolgen bei modernen Prozessoren meist in Blöcken von jeweils 64 byte. Dies entspricht der Zeilenlänge des Level-1- oder Level-2-Cache. Die Länge der Cache-Zeile ist stets ein Kompromiss zwischen der Zahl der Speicherzugriffe (hier wären längere Cache-Zeilen vorteilhafter) und der Möglichkeit, mehr relevante Datenelemente vorzuhalten, die nicht unbedingt räumliche Lokalität aufweisen (hier wären kürzere Cache-Zeilen günstiger). Darüber hinaus kann die Zeilenlänge des Level-3-Cache durch den Mindestumfang für das jeweilige Speicher-Subsystem limitiert sein.
Der neue Trend zur Multicore-Verarbeitung und zu CPU/GPU-Kombinationen hat höhere Anforderungen an die Leistungsfähigkeit des DRAM-Subsystems zur Folge. Multi-Thread-Computing und Grafik setzen nicht nur eine größere Speicher-Bandbreite voraus, sondern generieren auch mehr wahllos verteilte Zugriffe auf kleinere Datenelemente. Besonders die Grafikverarbeitung neigt zu Zugriffen auf eine große Zahl kleiner Datenelemente, die für Polygone oder Abschnitte einer Ansicht stehen.
Granularität der DRAM-Zugriffe
Kleine Datentransfers gestalten sich mit jeder DRAM-Generation schwieriger. Auch wenn die Speicherschnittstellen schneller geworden sind (Datenraten bis 1600 MHz bei DDR3), liegt die Taktfrequenz des Speicherbausteins nach wie vor zwischen 100 und 200 MHz. Aus diesem Grund ist in DRAMs das Core-Prefetching implementiert. Hierbei werden Daten aus dem Speicher gelesen und seriell auf eine schnellere Off-Chip-Schnittstelle gegeben. Dieses Core-Prefetch-Verhältnis hat von 2:1 bei den DDR-DRAMs auf 8:1 bei den aktuellen DDR3-DRAMs zugenommen. Extrapoliert man diese Entwicklung in die Zukunft, dürfte das Core-Prefetch-Verhältnis bei künftigen DRAMs beispielsweise 16:1 betragen. Im Falle eines DDR3-DRAM lässt sich die minimale effiziente Transferlänge errechnen, indem man die Burst-Länge von 8 bit mit der Schnittstellenbreite von 8 bzw. 16 bit multipliziert, was einen Nettotransfer von 8 bis 16 byte pro Komponente ergibt. (Die Burst-Länge gibt an, wieviele Speicherwörter am Stück ohne erneute Adressierung übertragen werden können. Vom Beginn der Adressierung bis zur Übertragung des ersten Speicherwortes vergehen mehrere Taktzyklen. Alle weiteren Speicherwörter innerhalb der Burst-Länge werden dann jeweils mit einem Takt Verzögerung übertragen.) Für ein künftiges Arbeitsspeicher-DRAM mit 16 bit Burst-Länge errechnet sich analog dazu eine minimale Transferlänge von 16 bis 32 byte pro Komponente. In DDR3-DRAMs ist das so genannte „Burst-Chop-Verfahren“ implementiert, um kleinere Transfergrößen zu ermöglichen, allerdings wird hierbei lediglich der Transfer auf 8 bis 4 bit beschnitten. Die internen Timing-Restriktionen der DRAM-Bausteine wie etwa tCCD müssen nach wie vor das Minimum von vier Taktzyklen einhalten. Die Rate der Speicherzugriffe verbessert sich somit nicht, und folglich nimmt auch die effektive Menge der übertragenen Daten nicht zu, wenn man die Burstlänge von 8 auf 4 bit verringert.