Cache ist der König der Leistung: Brauchen Prozessoren ein viertes Caching-Level?



Die Lücke zwischen der Geschwindigkeit der Prozessoren im allgemeinen Sinne und der Geschwindigkeit des Haupt-DRAM im allgemeinen Sinne war in den letzten 30 Jahren ein Problem - in dieser Zeit begann sich die Lücke wirklich zu vergrößern. Und es ist ehrlich zu sagen, dass die Ingenieure, die sowohl die Ausrüstung als auch die Programme entwickelt haben, die die Cache-Hierarchie erstellt haben, und die Software, die sie nutzen kann, einfach brillant waren. Dies ist eine der schwierigsten Architekturen, die der Mensch je erdacht hat.

Jetzt, da wir uns jedoch am Rande einer stetig wachsenden Speicherhierarchie befinden, erscheinen nichtflüchtige Speicher wie Optane 3D XPoint (eine Speichervariante mit Phasenwechsel) in den Formaten DIMM und SSD sowie neue Protokolle (CXL, OpenCAPI, CCIX, NVLink und Gen-Z) stellt sich die Frage: Ist es an der Zeit, den Servern einen Cache der vierten Ebene hinzuzufügen? Da die Arbeit einer solchen Anzahl von Geräten vom CPU-Komplex abhängt - von denen einige näher liegen, während andere weiter entfernt sind - ist es logisch zu überlegen, ob wir eine weitere Cache-Ebene benötigen, die die Verzögerungen dieser anderen Speichertypen überdeckt und den Durchsatz des gesamten Systems erhöht.

Um die Möglichkeiten vorzustellen, stöberten wir in unserem eigenen Gedächtnis und sprachen gleichzeitig mit Chip-Architektur-Entwicklern von IBM, Intel, AMD und Marvell, um zu verstehen, was sie über die Verwendung des L4-Cache in Servern denken. L4-Cache ist natürlich kein neues Wort für Geschwindigkeit, aber es ist in Systemarchitekturen nicht so verbreitet.

Bevor wir jedoch auf die Geschichte des Problems eingehen sollten.

Das Hinzufügen eines Cache der ersten Ebene zu Prozessoren, die zu diesem Zeitpunkt nur einen Kern hatten, war ein Kompromiss in den 1980er Jahren, der die Latenz von Speichersubsystemen erhöhte und gleichzeitig die durchschnittliche Latenz von Datenanforderungen und Anweisungen von Prozessoren verringerte. L1-Caches befanden sich ursprünglich im externen SRAM auf den Motherboards und waren mit dem CPU-Speicherkomplex verbunden. Ein solcher L1-Cache war sowohl hinsichtlich der Taktfrequenz als auch des physischen Platzes auf der Platine sehr nahe am Prozessor und ermöglichte die Erhöhung der CPU-Last. Dann wurden diese Caches aufgeteilt, so dass häufig verwendete Daten in einem Block und beliebte Anweisungen im zweiten Block gespeichert werden konnten, was die Leistung leicht erhöhte. Irgendwann bei der Erhöhung der Prozessortaktrate und der entsprechenden Lücke in der Geschwindigkeit von CPU und DRAM wurden mehr fette, aber auch langsamere L2-Caches hinzugefügt (aber bandbreitenmäßig günstiger), die sich zunächst wieder außerhalb des CPU-Gehäuses befanden, aber dann in sie integriert. Und als mehr und mehr Kerne zur CPU hinzugefügt wurden, sowie mehr und mehr DRAM-Controller, um sie zu laden, wurden der Hierarchie noch größere L3-Cache-Blöcke hinzugefügt.

Ein solches System funktionierte größtenteils recht gut. In einigen CPU-Schaltkreisen sehen wir sogar bestimmte praktische Regeln, die die Ebenen der Cache-Hierarchie widerspiegeln, wodurch wir die mit der vierten Ebene verbundenen Möglichkeiten abschätzen können.

Chris Gianos, ein Chip-Ingenieur und Architekt bei Intel, der die Entwicklung vieler Generationen von Xeon-Prozessoren vorangetrieben hat, erklärt dies folgendermaßen: „Mit jeder Cache-Ebene müssen wir in der Regel stark genug aus der vorherigen Ebene herauswachsen, damit sich all dies lohnt Um die Systemleistung spürbar zu steigern, müssen Sie eine interessante Häufigkeit erfolgreicher Anrufe erreichen. Wenn Sie nur in wenigen Prozent der Fälle auf zwischengespeicherte Daten zugreifen, ist dies nur schwer zu erkennen. Alles andere verlangsamt Ihre Geschwindigkeit, und diese Steigerung wird nicht wahrnehmbar sein. Daher sind relativ große Caches erforderlich, und wenn es um höhere Ebenen geht, sind wirklich große Caches erforderlich. Heute wird L2 in Megabyte gemessen, L3 in Dutzenden oder Hunderten von Megabyte. Wenn Sie also über den L4-Cache nachdenken, sprechen wir von Hunderten von Megabyte, wenn nicht von Gigabyte. Und eine solche Größe wird definitiv zu hohen Kosten führen. Es ist notwendig, dass bestimmte Bedingungen vorliegen, damit diese Option interessant wird, und sie wird sicherlich nicht billig sein. “

Die von uns befragten AMD-Ingenieure wollten anonym bleiben, weil sie nicht den Eindruck erwecken wollten, dass das Unternehmen den L4-Cache in die Epyc-Prozessorlinie aufnehmen würde - und genau gesagt, AMD versprach so etwas nicht. Das Unternehmen erkennt jedoch, dass dies der nächste naheliegende Schritt ist, den es in Betracht zu ziehen gilt, und ist genau wie bei Intel der Ansicht, dass alle Ingenieure über die Implementierung des L4-Caches nachdenken. Laut AMD wurden die mit Cache-Levels und Latenzen verbundenen Kompromisse sowohl in der Industrie als auch im akademischen Bereich eingehend untersucht. Mit jedem neuen Level, das größer und langsamer als das vorherige ist, ist ein Kompromiss bei der Erhöhung des Gesamtwegs zum DRAM verbunden. Dies wird auch von Intel Gianos angegeben, die über die Notwendigkeit sprechen, ein Gleichgewicht zwischen erfolgreichen Cache-Anforderungen und seinem Volumen zu finden.

IBM hat in den 2000er Jahren einigen seiner X86-Chipsätze L4-Cache hinzugefügt und in den 2010er Jahren NUMA-Chipsätzen ( ungleichmäßiger Speicherzugriff ) auf System z11-Mainframes L4 hinzugefügt. Der z11-Prozessor verfügt über vier Kerne, einen 64-KB-L1-Cache für Anweisungen und einen 128-KB-L1-Cache für Daten sowie einen 1,5-MB-L2-Cache für jeden Kern und einen gemeinsam genutzten 24-MB-L3-Cache für alle Kerne. Der NUMA-Chipsatz für z10 verfügte über zwei Bänke mit 96 MB L4-Cache, dh insgesamt 192 MB. Durch die Freigabe von z12 reduzierte IBM die Größe des L1-Caches auf 98 KB pro Kern, erhöhte jedoch den L2-Cache auf 2 MB pro Kern und teilte ihn wie im Fall von L1 in zwei Teile für Anweisungen und Daten auf. Sie hat auch die Größe des L3-Cache für sechs Kerne auf 48 MB verdoppelt und die Größe des L4-Cache für ein Paar Chips im Chipsatz auf 384 MB erhöht. Mit dem Wechsel der Generationen von System z-Prozessoren wuchsen die Cache-Größen. Für die im September angekündigten z15-Prozessoren wiegen zwei L1-Caches jeweils 128 KB, zwei L2-Caches jeweils 4 MB und ein gemeinsam genutzter L3-Cache für 256 Kerne hat eine Kapazität von 256 MB. Der L4-Cache in jedem Mainframe-Schacht ist 960 MB groß, und das Gesamtvolumen für das gesamte System, das aus fünf Schächten besteht, beträgt 4,68 GB.

Wie bereits erwähnt , haben Power8- und Power9-Prozessoren Arbeitsspeicher gepuffert, und IBM fügte jedem Centaur-Puffer 16 MB L4-Cache hinzu, was 128 MB L4-Cache pro Socket für 32 Speichersteckplätze entspricht. Die billigsten Power9-Maschinen haben keinen Speicherpuffer und daher keinen L4-Cache. Die Architekten, die das Power10-Diagramm entwickelten, waren mit der Entwicklung des Diagramms für Power11 beschäftigt und konnten daher unsere Fragen nicht beantworten. William Stark, der die Entwicklung von Power10 leitete, fand jedoch etwas Zeit für uns und stellte Folgendes fest:

"Im Allgemeinen sind wir zu dem Schluss gekommen, dass Caches der letzten Ebene auf großer Ebene nützlich sind, um die Geschwindigkeit industrieller Systeme zu erhöhen", erklärte Stark uns per E-Mail. "Die mit dem nichtflüchtigen Speicher verbundene hohe Latenz, insbesondere mit dem Phasenzustandsspeicher, erzeugt eine Cache-Anforderung - möglicherweise für einen Cache vom Typ L4 - in der Hierarchie des Speichers."

Genau das dachten wir. Übrigens behaupten wir nicht, dass sich der L4-Cache notwendigerweise in unmittelbarer Nähe des gepufferten Speichers des zukünftigen DDR5-DIMM befindet. Vielleicht ist es besser, es zwischen dem PCI-Express- und dem L3-Prozessor-Cache und noch besser in den Speicherpuffern und zwischen dem PCI-Express- und dem L3-Prozessor-Cache zu platzieren. Möglicherweise muss es in der zukünftigen Serverarchitektur, die der Foveros-Technologie von Intel ähnelt , auf dem E / A-Controller und dem Speicher platziert werden .

Es ist möglich, dies aus einer anderen Perspektive zu betrachten - IBM hatte beispielsweise die Möglichkeit, die Größe des Kristalls zu ändern, und die Ingenieure entschieden sich, den L4-Cache dem System-z-NUMA-Bus oder dem Power8- und Power9-Speicherpuffer-Chip hinzuzufügen, und zwar nicht aus eigenem Grund, sondern nur deswegen Sie hatten immer noch die Möglichkeit, Transistoren hinzuzufügen, nachdem alle erforderlichen Funktionen implementiert wurden. Manchmal scheint es uns, dass die Anzahl der Kerne in Intel X86-Prozessoren von der Größe des L3-Caches abhängt, den sie sich leisten können. Es scheint manchmal, dass Intel einem Kristall die maximale Größe des L3-Caches zuweist, und danach werden Xeon-Kristalle in drei verschiedenen Größen einfach gemäß diesen Spezifikationen hergestellt - in den neuesten Generationen haben sie 10, 18 oder 28 Kerne in einem 14-nm-Herstellungsprozess.

All dies sind natürlich rein akademische Fragen, aber sie geben uns die potenzielle Motivation für IBM und andere Chipsatzhersteller, den L4-Cache hinzuzufügen. Dies kann nicht nur in einigen Fällen helfen, es ist auch eine ziemlich offensichtliche Sache. Wir glauben, dass auf einem solchen E / A-Monster wie dem System z-Mainframe der L4-Cache ohne Fragen an seinem Platz ist und allen Kunden zugutekommt, indem er den Durchsatz dieser Computer erhöht und ihnen ermöglicht, bei 98-99% Prozessorauslastung zu arbeiten, da wie viele Kerne vorhanden sind , und der Umfang von NUMA in Großrechnern ist in letzter Zeit stark gewachsen.

Es gibt keinen Grund, den L4-Cache ausschließlich auf dem eingebauten DRAM (wie IBM es bei seinen Chips tut) oder auf der Basis eines viel teureren SRAM zu erstellen - daran erinnert uns Rabin Sugumar, Chip-Architekt von Cray Research, Sun Microsystems, Oracle, Broadcom , Cavium und Marvell:

"Unsere L3-Caches sind bereits groß genug", sagt Sugumar. - L4 muss für den Fall, dass Sie interessiert sind, mit einer anderen Technologie ausgeführt werden. Vielleicht eDRAM oder sogar HBM oder DRAM. In diesem Zusammenhang scheint eine Implementierung eines HBM-basierten L4-Cache eine interessante Option zu sein, und dieser Cache löst weniger das Latenzproblem als vielmehr die Bandbreite. Da die HBM-Kapazität begrenzt und die Bandbreite groß ist, können wir eine gewisse Geschwindigkeitssteigerung erzielen - und in einigen Sonderfällen sehen wir tatsächlich eine deutliche Erhöhung der Bandbreite. " Sugumar fügt hinzu, dass für eine relativ große Anzahl von Anwendungen eine relativ große Anzahl von Cache-Fehlern beobachtet wird. Sie müssen jedoch berechnen, ob sich das Hinzufügen der nächsten Cache-Ebene lohnt.

Ein anderer möglicher Anwendungsfall für so etwas wie den L4-Cache, sagt Sugumar, ist die Verwendung eines lokalen DRAM als Cache. „Wir führen keine derartigen Untersuchungen im Labor durch, nehmen jedoch an, dass auf dem Chip eine Schnittstelle mit hoher Bandbreite vorhanden ist, die mit einem gemeinsam genutzten Speicher in einem Abstand von 500 ns bis 1 μs am anderen Ende der Schleife verbunden ist. Dann besteht einer der Anwendungsfälle darin, einen Cache zu erstellen, der diese Daten aus dem gemeinsam genutzten Speicher in den lokalen DRAM verschiebt. Sie können sich die Arbeit der Zustandsmaschine vorstellen, die diesen Speicher verwaltet, so dass die Anrufe die meiste Zeit an den lokalen DRAM gehen und Sie die Anzahl der Anrufe an den allgemeinen verteilten DRAM minimieren können.

Diese Option scheint uns eine sehr interessante Art von NUMA zu sein. Übrigens arbeitete Sugumar bereits vor dem Erscheinen des nichtflüchtigen Speichers an verteiltem Speicher für parallele Hochgeschwindigkeitssysteme in Sun Microsystems. Und eines der Probleme bei diesen verschiedenen Varianten der Speicherhierarchie war, dass die gesamte Maschine abstürzt, wenn eine von ihnen aufgrund eines Netzwerk- oder Busausfalls verloren geht. „Auf verteilten Speichersystemen müssen Netzwerkfehler eleganter behandelt werden, was viele Designherausforderungen mit sich bringt.“

Ein weiterer Punkt ist, dass jeder High-Level-Cache, nicht einmal L4, mit Hilfe von Eisen maximal und mit Hilfe von Software minimal realisiert werden soll. Die Betriebssystemkerne und andere Software benötigen immer etwas Zeit, um mit der Hardware Schritt zu halten, unabhängig davon, ob neue Kernel, L3- oder L4-Caches oder ein adressierbarer nichtflüchtiger Speicher hinzugefügt werden.

"Irgendwann wird eine zusätzliche Cache-Ebene unvermeidlich", sagt Gianos. - Wir haben die erste Cache-Ebene und irgendwann erschien die zweite. Und dann haben wir endlich eine dritte hinzugefügt. Und eines Tages werden wir einen vierten haben. Die Frage ist nur wann und warum. Und es scheint mir, dass Ihre Beobachtungen in Bezug auf die Fähigkeiten dieses Caches ziemlich interessant sind. Aber Intel hat noch nicht entschieden, wann oder warum solche Dinge veröffentlicht werden. Andere Unternehmen beschäftigen sich ebenfalls mit diesem Thema. es wäre dumm, es nicht zu untersuchen. Früher oder später wird das passieren, aber bald wird es sein oder nicht sehr - es ist noch nicht klar. "

Source: https://habr.com/ru/post/de485374/


All Articles