-
Figurenliste
-
Die hierin beschriebenen Konzepte werden in den begleitenden Figuren beispielhaft und nicht einschränkend illustriert. Zur Einfachheit und Klarheit der Veranschaulichung sind die in den Figuren veranschaulichten Elemente nicht unbedingt maßstabgerecht gezeichnet. Wo als angebracht erachtet, wurden Referenzzeichen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzuzeigen.
- 1 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform eines Rechenzentrums zum Ausführen von Arbeitslasten mit disaggregierten Ressourcen;
- 2 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform eines Schranks, der im Rechenzentrum von 1 enthalten sein kann;
- 3 ist eine perspektivische Ansicht mindestens einer Ausführungsform eines Racks, das im Schrank von 2 enthalten sein kann;
- 4 ist eine seitliche Draufsicht des Racks von 3;
- 5 ist eine perspektivische Ansicht des Racks von 3 mit einem darin montierten Einschub;
- 6 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Oberseite des Einschubs von 5;
- 7 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Unterseite des Einschubs von 6;
- 8 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines im Rechenzentrum von 1 verwendbaren Recheneinschubs;
- 9 ist eine perspektivische Draufsicht mindestens einer Ausführungsform des Recheneinschubs von 8;
- 10 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines im Rechenzentrum von 1 verwendbaren Beschleunigungseinschubs;
- 11 ist eine perspektivische Draufsicht mindestens einer Ausführungsform des Beschleunigungseinschubs von 10;
- 12 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines im Rechenzentrum von 1 verwendbaren Speichereinschubs;
- 13 ist eine perspektivische Draufsicht mindestens einer Ausführungsform des Speichereinschubs von 12;
- 14 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines im Rechenzentrum von 1 verwendbaren Arbeitsspeichereinschubs;
- 15 ist ein vereinfachtes Blockdiagramm eines Systems, das im Rechenzentrum von 1 eingerichtet werden kann, um Arbeitslasten mit verwalteten Knoten auszuführen, die aus disaggregierten Ressourcen bestehen;
- 16 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Rechenvorrichtung zum raschen Booten mit ECC-Arbeitsspeicher;
- 17 ist ein Blockdiagramm mindestens einer Ausführungsform einer Umgebung, die von der Rechenvorrichtung von 16 eingerichtet werden kann; und
- 18-19 sind ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens zum Durchführen eines raschen Bootens mit ECC-Arbeitsspeicher, das von der Rechenvorrichtung von 16 ausgeführt werden kann.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Während die Konzepte der vorliegenden Offenbarung für verschiedene Modifikationen und alternative Formen geeignet sind, wurden spezifische Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt und werden hierin im Detail beschrieben. Es versteht sich jedoch, dass nicht die Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen zu beschränken, vielmehr sollen im Gegenteil alle Modifikationen, Äquivalente und Alternativen abgedeckt werden, die mit der vorliegenden Offenbarung und den beigefügten Ansprüchen vereinbar sind.
-
Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft enthalten kann, aber jede Ausführungsform kann oder kann nicht notwendigerweise dieses bestimmte Merkmal, diese bestimmte Struktur oder Eigenschaft enthalten. Darüber hinaus beziehen sich solche Formulierungen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner, wenn ein bestimmtes Merkmal, Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird vorgebracht, dass es im Wissen von Fachleuten liegt, ein solches Merkmal, eine solche Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen zu erwirken, egal, ob es bzw. sie explizit beschrieben wird oder nicht. Darüber hinaus sollte klar sein, dass Elemente, die in einer Liste in Form von „mindestens ein A, B und C“ enthalten sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können. Gleichermaßen können Elemente, die in Form von „mindestens eines von A, B oder C“ aufgelistet sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können.
-
Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination daraus implementiert werden. Die offenbarten Ausführungsformen können auch als Anweisungen implementiert werden, die von einem transitorischen oder nicht transitorischen maschinenlesbaren (z. B. computerlesbaren) Speichermedium getragen werden oder auf diesem gespeichert sind und von einem oder mehreren Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann als eine beliebige Speichervorrichtung, ein beliebiger Speichermechanismus oder eine andere physische Struktur zum Speichern oder Senden von Informationen in einer von einer Maschine lesbaren Form ausgeführt sein (z. B. als ein flüchtiger oder nicht flüchtiger Speicher, eine Medienplatte oder andere Medienvorrichtung).
-
In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Reihenfolgen gezeigt sein. Es sollte jedoch klar sein, dass derartige spezifische Anordnungen und/oder Reihenfolgen möglicherweise nicht erforderlich sind. Vielmehr können derartige Merkmale in einigen Ausführungsformen auf eine andere Art und/oder in einer anderen Reihenfolge als in den veranschaulichenden Figuren gezeigt angeordnet sein. Zusätzlich soll das Einbeziehen eines Struktur- oder Verfahrensmerkmals in einer bestimmten Figur nicht implizieren, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist, und es kann in einigen Ausführungsformen nicht enthalten sein oder mit anderen Merkmalen kombiniert sein.
-
Nach Starten oder Neustarten durchläuft eine Rechenvorrichtung einen Bootprozess. Der Bootprozess kann von Firmware wie einem grundlegenden Eingabe/Ausgabesystem (BIOS) ausgeführt werden. Das BIOS kann ermitteln, welche Hardware vorhanden ist, Treiber laden, Hardware konfigurieren, Software laden usw. Nach Abschließen des Bootprozesses initialisiert das BIOS üblicherweise ein Betriebssystem.
-
Nach dem Booten können die Daten in einem Arbeitsspeicher, wie einem dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM), zufällig oder anderweitig beim Booten unbekannt sein. Für Fehlerkorrekturcode(ECC)-Arbeitsspeicher können die anfänglichen zufälligen Daten, wenn auf sie zugegriffen wird, einen Fehler aufgrund von Hinweisen auf Fehlern in den Fehlerkorrekturcodes verursachen. Eine Aufgabe, die möglicherweise vom BIOS oder von einer anderen Komponente der Rechenvorrichtung durchgeführt werden muss, ist eine Initialisierung des ECC-Arbeitsspeichers, wie zum Beispiel durch Schreiben in alle Arbeitsspeicheradressen des ECC. Bei großen Mengen an ECC-Arbeitsspeicher kann dieser Teil des Bootens viel Zeit brauchen.
-
Nun auf 1 Bezug nehmend, enthält ein Rechenzentrum 100, in dem disaggregierte Ressourcen gemeinsam eine oder mehr Arbeitslasten (z. B. Anwendungen im Auftrag von Kunden) ausführen können, mehrere Schränke 110, 120, 130, 140, von denen jeder eine oder mehrere Reihen von Racks enthält. Natürlich, obwohl das Rechenzentrum 100 mit mehreren Schränken gezeigt ist, kann das Rechenzentrum 100 in einigen Ausführungsformen als ein einziger Schrank ausgebildet sein. Wie hierin ausführlicher beschrieben wird, nimmt jedes Rack mehrere Einschübe auf, von denen jeder hauptsächlich mit einem bestimmten Typ von Ressource (z. B. Arbeitsspeichervorrichtungen, Datenspeichervorrichtungen, Beschleunigervorrichtungen, Universalprozessoren) ausgestattet sein kann, d. h. Ressourcen, die logisch gekoppelt werden können, um einen zusammengesetzten Knoten zu bilden, der beispielsweise als ein Server fungieren kann. In der veranschaulichten Ausführungsform sind die Einschübe in jedem Schrank 110, 120, 130, 140 mit mehreren Schrankswitches (z. B. Switches, die Datenkommunikationen zu und von Einschüben im Inneren des Schranks leiten) verbunden. Die Schrankswitches sind wiederum mit Spine-Switches 150 verbunden, die Kommunikationen zwischen Schränken (z. B. den Schränken 110, 120, 130, 140) im Rechenzentrum 100 schalten. In einigen Ausführungsformen können die Einschübe unter Verwendung von Intel-Omni-Path-Technologie mit einer Fabric verbunden sein. In anderen Ausführungsformen können die Einschübe mit anderen Fabrics verbunden sein, wie InfiniBand oder Ethernet. Wie hierin ausführlicher beschrieben wird, können Ressourcen in Einschüben im Rechenzentrum 100 einer Gruppe (die hierin als ein „verwalteter Knoten“ bezeichnet wird) zugeordnet sein, die Ressourcen von einem oder mehreren Einschüben beinhaltet, die gemeinsam bei der Ausführung einer Arbeitslast eingesetzt werden können. Die Arbeitslast kann ausgeführt werden, als ob sich die Ressourcen, die zum verwalteten Knoten gehören, auf dem gleichen Einschub befinden würden. Die Ressourcen in einem verwalteten Knoten können zu Einschüben gehören, die zu verschiedenen Racks gehören, und sogar zu verschiedenen Schränken 110, 120, 130, 140. Als solche können einige Ressourcen eines einzigen Einschubs einem verwalteten Knoten zugeordnet sein, während andere Ressourcen des gleichen Einschubs einem anderen verwalteten Knoten zugeordnet sind (z. B. ist ein Prozessor einem verwalteten Knoten zugewiesen und ein anderer Prozessor des gleichen Einschubs ist einem anderen verwalteten Knoten zugewiesen).
-
Ein Rechenzentrum, das disaggregierte Ressourcen umfasst, wie das Rechenzentrum 100, kann in einer breiten Vielfalt von Kontexten eingesetzt werden, wie in Unternehmen, der Regierung, bei Clouddienstanbietern und Kommunikationsdienstanbietern (z. B. Telcos), sowie in einer breiten Vielfalt an Größen, von Megarechenzentren von Clouddienstanbietern, die mehr als 100.000 Quadratfuß einnehmen, bis Einzel- oder Mehrrackinstallationen zur Verwendung in Basisstationen.
-
Das Disaggregieren von Ressourcen auf Einschübe, die vorwiegend aus einem einzigen Ressourcentyp bestehen (z. B. Recheneinschübe, die hauptsächlich Rechenressourcen umfassen, Arbeitsspeichereinschübe, die hauptsächlich Arbeitsspeicherressourcen beinhalten), und das selektive Zuordnen und Aufheben von Zuordnungen der disaggregierten Ressourcen, um einen verwalteten Knoten zu bilden, dem zugewiesen ist, eine Arbeitslast auszuführen, verbessert den Betrieb und die Ressourcennutzung des Rechenzentrums 100 gegenüber typischen Rechenzentren, die aus hyperkonvergierten Servern bestehen, die Rechen-, Arbeitsspeicher-, Speicher- und möglicherweise zusätzliche Ressourcen in einem einzigen Gehäuse beinhalten. Da Einschübe beispielsweise hauptsächlich Ressourcen eines bestimmten Typs beinhalten, können Ressourcen eines bestimmten Typs unabhängig von anderen Ressourcen hochgerüstet werden. Darüber hinaus, da unterschiedliche Ressourcentypen (Prozessoren, Speicher, Beschleuniger usw.) üblicherweise unterschiedliche Aktualisierungsraten aufweisen, können eine größere Ressourcennutzung und reduzierte Gesamtbetriebskosten erzielt werden. Ein Rechenzentrumsbetreiber kann zum Beispiel die Prozessoren in seiner gesamten Anlage nur durch Austauschen der Recheneinschübe hochrüsten. In einem solchen Fall können Beschleuniger und Speicherressourcen nicht gleichzeitig hochgerüstet werden und es kann vielmehr ermöglicht werden, dass diese weiter arbeiten, bis die eigene Erneuerung dieser Ressourcen geplant ist. Die Ressourcennutzung kann sich auch erhöhen. Falls zum Beispiel verwaltete Knoten auf Grundlage von Anforderungen der Arbeitslasten zusammengesetzt sind, die auf ihnen laufen werden, ist es wahrscheinlicher, dass Ressourcen innerhalb eines Knotens vollständig genutzt werden. Eine derartige Nutzung kann ermöglichen, dass mehr verwaltete Knoten in einem Rechenzentrum mit einer bestimmten Ressourcenmenge laufen oder dass ein Rechenzentrum, von dem erwartet wird, dass es eine bestimmte Menge an Arbeitslasten ausführt, unter Verwendung von weniger Ressourcen läuft.
-
Nun auf 2 Bezug nehmend, enthält der Schrank 110 in der veranschaulichenden Ausführungsform einen Satz von Reihen 200, 210, 220, 230 aus Racks 240. Jedes Rack 240 kann mehrere Einschübe (z. B. sechzehn Einschübe) aufnehmen und den aufgenommenen Einschüben Leistungs- und Datenverbindungen bereitstellen, wie hierin ausführlicher beschrieben wird. In der veranschaulichenden Ausführungsform sind die Racks in jeder Reihe 200, 210, 220, 230 mit mehreren Schrankswitches 250, 260 verbunden. Der Schrankswitch 250 enthält einen Satz von Anschlüssen 252, mit denen die Einschübe der Racks des Schranks 110 verbunden sind, und einen anderen Satz von Anschlüssen 254, die den Schrank 110 mit den Spine-Switches 150 verbinden, um anderen Schränken im Rechenzentrum 100 Konnektivität bereitzustellen. Gleichermaßen enthält der Schrankswitch 260 einen Satz von Anschlüssen 262, mit denen die Einschübe der Racks des Schranks 110 verbunden sind, und einen Satz von Anschlüssen 264, die den Schrank 110 mit den Spine-Switches 150 verbinden. Als solche bietet die Nutzung des Paars von Switches 250, 260 dem Schrank 110 ein Ausmaß an Redundanz. Falls beispielsweise einer der Switches 250, 260 versagt, können die Einschübe im Schrank 110 weiterhin über den anderen Switch 250, 260 eine Datenkommunikation mit dem Rest des Rechenzentrums 100 (z. B. mit Einschüben anderer Schränke) aufrechterhalten. Ferner können die Switches 150, 250, 260 in der veranschaulichenden Ausführungsform als optische Switches mit zwei Modi ausgeführt sein, die fähig sind, sowohl Ethernetprotokoll-Kommunikationen, die Internetprotokoll-Pakete (IP-Pakete) tragen, als auch Kommunikationen gemäß einem zweiten Hochleistungs-Verbindungsschichtprotokoll (z. B. der Omni-Path-Architektur von Intel, Infiniband, PCI Express, Compute Express Link (CXL), QUIC) über optische Signalgebungsmedien einer optischen Fabric zu leiten.
-
Es sollte klar sein, dass jeder der anderen Schränke 120, 130, 140 (sowie alle zusätzlichen Schränke des Rechenzentrums 100) ähnlich wie der in 2 gezeigte und in Bezug auf diesen beschriebenen Schrank 110 strukturiert sein kann und ähnliche Komponenten aufweisen kann (z. B. kann jeder Schrank Reihen von Racks aufweisen, die mehrere Einschübe aufnehmen, wie oben beschrieben). Darüber hinaus, während zwei Schrankswitches 250, 260 gezeigt sind, sollte klar sein, dass in anderen Ausführungsformen jeder Schrank 110, 120, 130, 140 mit einer anderen Anzahl an Schrankswitches verbunden sein kann, die noch mehr Ausfallsicherungskapazitäten bereitstellt. Natürlich können Schränke in anderen Ausführungsformen anders als die Konfiguration mit Zeilen mit Racks angeordnet sein, die in 1-2 gezeigt ist. Beispielsweise kann ein Schrank als mehrere Gruppen von Racks ausgebildet sein, in denen jede Rackgruppe radial angeordnet ist, d. h., die Racks sind von einem zentralen Switch äquidistant.
-
Nun auf 3-5 Bezug nehmend, enthält jedes veranschaulichende Rack 240 des Rechenzentrums 100 zwei verlängerte Stützpfosten 302, 304, die vertikal angeordnet sind. Die verlängerten Stützpfosten 302, 304 können sich beispielsweise bei Einsatz von einem Boden des Rechenzentrums 100 nach oben erstrecken. Das Rack 240 enthält auch ein oder mehrere horizontale Paare 310 von verlängerten Stützarmen 312 (in 3 durch eine gestrichelte Ellipse identifiziert), die ausgelegt sind, einen Einschub des Rechenzentrums 100 zu tragen, wie unten besprochen wird. Ein verlängerter Stützarm 312 des Paars der verlängerten Stützarme 312 verläuft vom verlängerten Stützpfosten 302 nach außen und der andere verlängerte Stützarm 312 verläuft vom verlängerten Stützpfosten 304 nach außen.
-
In den veranschaulichenden Ausführungsformen ist jeder Einschub des Rechenzentrums 100 als ein gehäuseloser Einschub ausgeführt. Das heißt, jeder Einschub weist ein gehäuseloses Leiterplattensubstrat auf, auf dem physische Ressourcen (z. B. Prozessoren, Arbeitsspeicher, Beschleuniger, Speicher usw.) montiert sind, wie unten ausführlicher besprochen wird. Als solches ist das Rack 240 ausgelegt, die gehäuselosen Einschübe aufzunehmen. Jedes Paar 310 von verlängerten Stützarmen 312 definiert einen Einschubschlitz 320 des Racks 240, der ausgelegt ist, einen entsprechenden gehäuselosen Einschub aufzunehmen. Hierzu enthält jeder veranschaulichende Stützarm 312 eine Leiterplattenführung 330, die ausgelegt ist, das gehäuselose Leiterplattensubstrat des Einschubs aufzunehmen. Jede Leiterplattenführung 330 ist an einer Oberseite 332 des entsprechenden verlängerten Stützarms 312 gesichert oder anderweitig montiert. In der veranschaulichenden Ausführungsform ist beispielsweise jede Leiterplattenführung 330 an einem distalen Ende des entsprechenden verlängerten Stützarms 312 relativ zum entsprechenden verlängerten Stützpfosten 302, 304 montiert. Zur Verdeutlichung der Figuren ist möglicherweise nicht jede Leiterplattenführung 330 in jeder Figur referenziert.
-
Jede Leiterplattenführung 330 enthält eine Innenwand, die einen Leiterplattenschlitz 380 definiert, der ausgelegt ist, das gehäuselose Leiterplattensubstrat eines Einschubs 400 aufzunehmen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 des Racks 240 aufgenommen ist. Hierzu richtet ein Benutzer (oder Roboter) wie in 4 gezeigt das gehäuselose Leiterplattensubstrat eines veranschaulichenden gehäuselosen Einschubs 400 an einem Einschubschlitz 320 aus. Der Benutzer oder der Roboter kann dann das gehäuselose Leiterplattensubstrat vorwärts in den Einschubschlitz 320 schieben, sodass jede Seitenkante 414 des gehäuselosen Leiterplattensubstrats in einem entsprechenden Leiterplattenschlitz 380 der Leiterplattenführungen 330 des Paars 310 der verlängerten Stützarme 312 aufgenommen wird, die den entsprechenden Einschubschlitz 320 definieren, wie in 4 gezeigt. Dadurch, dass jeder Ressourcentyp Einschübe aufweist, auf die Roboter zugreifen können und die Roboter manipulieren können und die disaggregierte Ressourcen umfassen, kann jeder Ressourcentyp unabhängig voneinander und mit seiner eigenen optimierten Aktualisierungsrate nachgerüstet werden. Darüber hinaus sind die Einschübe ausgelegt, blind mit Energie- und Datenkommunikationskabeln in jedem Rack 240 zusammenzupassen, was ihre Fähigkeit verbessert, schnell entfernt, nachgerüstet, neu installiert und/oder ausgetauscht zu werden. Als solches kann das Rechenzentrum 100 in einigen Ausführungsformen ohne menschliche Beteiligung vor Ort im Rechenzentrum arbeiten (z. B. Arbeitslasten ausführen, einer Wartung und/oder Nachrüstungen unterzogen werden usw.). In anderen Ausführungsformen kann ein Mensch ein oder mehrere Wartungs- oder Nachrüstvorgänge im Rechenzentrum 100 ermöglichen.
-
Es sollte klar sein, dass jede Leiterplattenführung 330 doppelseitig ist. Das heißt, jede Leiterplattenführung 330 enthält eine Innenwand, die auf jeder Seite der Leiterplattenführung 330 einen Leiterplattenschlitz 380 definiert. Auf diese Weise kann jede Leiterplattenführung 330 auf beiden Seiten ein gehäuseloses Leiterplattensubstrat tragen. Als solcher kann ein einziger zusätzlicher verlängerter Stützpfosten zum Rack 240 hinzugefügt werden, um das Rack 240 in eine Zwei-Rack-Lösung umzuwandeln, die doppelt so viele Einschubschlitze 320 halten kann, wie in 3 gezeigt. Das veranschaulichende Rack 240 enthält sieben Paare 310 von verlängerten Stützarmen 312, die entsprechende sieben Einschubschlitze 320 definieren, die jeweils ausgelegt sind, einen entsprechenden Einschub 400 aufzunehmen und zu tragen, wie oben besprochen. Natürlich kann das Rack 240 in anderen Ausführungsformen zusätzliche oder weniger Paare 310 von verlängerten Stützarmen 312 enthalten (d. h. zusätzliche oder weniger Einschubschlitze 320). Es sollte klar sein, dass der Einschub 400 eine Gesamthöhe aufweisen kann, die sich von typischen Servern unterscheidet, da der Einschub 400 gehäuselos ist. Als solche kann die Höhe jedes Einschubschlitzes 320 in einigen Ausführungsformen kürzer als die Höhe eines typischen Servers sein (z. B. kürzer als eine einzelne Höheneinheit, „1 HE“). Das heißt, die vertikale Distanz zwischen jedem Paar 310 von verlängerten Stützarmen 312 kann kleiner als eine Standard-Höheneinheit „1 HE“ sein. Darüber hinaus kann die Gesamthöhe des Racks 240 in einigen Ausführungsformen aufgrund der relativen Verringerung der Höhe der Einschubschlitze 320 geringer als die Höhe von herkömmlichen Rackgehäusen sein. In einigen Ausführungsformen kann jeder der verlängerten Stützpfosten 302, 304 beispielsweise eine Länge von sechs Fuß oder darunter aufweisen. In anderen Ausführungsformen kann das Rack 240 wiederum andere Abmessungen aufweisen. Beispielsweise kann die vertikale Distanz zwischen jedem Paar 310 von verlängerten Stützarmen 312 in einigen Ausführungsformen größer als ein Standard-Rack bis „1 HE“ sein. In derartigen Ausführungsformen ermöglicht die größere vertikale Distanz zwischen den Einschüben, dass größere Kühlkörper an den physischen Ressourcen befestigt sind und größere Lüfter zum Kühlen jedes Einschubs verwendet werden (z. B. in der unten beschriebenen Lüfteranordnung 370), die wiederum ermöglichen können, dass die physischen Ressourcen mit erhöhten Leistungspegeln arbeiten. Ferner sollte klar sein, dass das Rack 240 keine Wände, Gehäuse oder Ähnliches enthält. Das Rack 240 ist vielmehr ein gehäuseloses Rack, das zur lokalen Umgebung hin offen ist. In einigen Fällen kann natürlich in den Fällen, in denen das Rack 240 ein Rack am Ende einer Reihe im Rechenzentrum 100 bildet, eine Endplatte an einem der verlängerten Stützpfosten 302, 304 befestigt sein.
-
In einigen Ausführungsformen können verschiedene Zwischenverbindungen nach oben oder unten durch die verlängerten Stützpfosten 302, 304 geleitet sein. Um eine solche Leitung zu erleichtern, enthält jeder verlängerte Stützpfosten 302, 304 eine Innenwand, die eine innere Kammer definiert, in der sich Zwischenverbindungen befinden können. Die durch die verlängerten Stützpfosten 302, 304 geleiteten Zwischenverbindungen können als ein beliebiger Typ von Zwischenverbindungen ausgebildet sein, einschließlich Daten- oder Kommunikationszwischenverbindungen, um jedem Einschubschlitz 320 Kommunikationsverbindungen bereitzustellen, Energiezwischenverbindungen, um jeden Einschubschlitz 320 mit Energie zu versorgen, und/oder andere Arten von Zwischenverbindungen.
-
Das Rack 240 enthält in der veranschaulichenden Ausführungsform eine Trägerplattform, auf der ein entsprechender optischer Datenanschluss (nicht gezeigt) montiert ist. Jeder optische Datenanschluss ist mit einem entsprechenden Einschubschlitz 320 assoziiert und ist ausgelegt, in einen optischen Datenanschluss eines entsprechenden Einschubs 400 einzugreifen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 aufgenommen ist. In einigen Ausführungsformen erfolgen optische Verbindungen zwischen Komponenten (z. B. Einschübe, Racks und Switches) im Rechenzentrum 100 durch eine blind steckbare optische Verbindung. Eine Klappe an jedem Kabel kann beispielsweise verhindern, dass Staub den Leiter im Inneren des Kabels verunreinigt. Beim Anschließen an einen blind steckbaren optischen Verbindungsmechanismus wird die Klappe aufgedrückt, wenn sich das Ende des Kabels dem Verbindungsmechanismus nähert oder in diesen eindringt. Danach kann der optische Leiter in ein Gel im Inneren des Verbindungsmechanismus eindringen, und der optische Leiter eines Kabels kommt im Gel im Inneren des Verbindungsmechanismus mit dem optischen Leiter eines anderen Kabels in Kontakt.
-
Das veranschaulichende Rack 240 enthält auch eine Lüfteranordnung 370, die an die Querstützarme des Racks 240 gekoppelt ist. Die Lüfteranordnung 370 enthält eine oder mehrere Reihen von Kühllüftern 372, die in einer horizontalen Linie zwischen den verlängerten Stützpfosten 302, 304 ausgerichtet sind. In der veranschaulichenden Ausführungsform enthält die Lüfteranordnung 370 eine Reihe von Kühllüftern 372 für jeden Einschubschlitz 320 des Racks 240. Wie oben besprochen enthält keiner der Einschübe 400 irgendein integriertes Kühlsystem in der veranschaulichenden Ausführungsform und die Lüfteranordnung 370 sorgt als solche für Kühlung für jeden im Rack 240 aufgenommenen Einschub 400. Jedes Rack 240 in der veranschaulichenden Ausführungsform enthält auch eine mit jedem Einschubschlitz 320 assoziierte Energieversorgung. Jede Energieversorgung ist an einem der verlängerten Stützarme 312 des Paars 310 von verlängerten Stützarmen 312 gesichert, die den entsprechenden Einschubschlitz 320 definieren. Das Rack 240 kann zum Beispiel eine Energieversorgung enthalten, die an jeden verlängerten Stützarm 312 gekoppelt oder gesichert ist, der sich vom verlängerten Stützpfosten 302 erstreckt. Jede Energieversorgung enthält einen Energieanschluss, der ausgelegt ist, in einen Energieanschluss des Einschubs 400 einzugreifen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 aufgenommen ist. In der veranschaulichenden Ausführungsform enthält der Einschub 400 keine integrierte Energieversorgung und die im Rack 240 vorgesehenen Energieversorgungen liefern als solche Energie an entsprechende Einschübe 400, wenn sie am Rack 240 montiert sind. Jede Energieversorgung ist ausgelegt, die Leistungsanforderungen für ihren zugehörigen Einschub zu erfüllen, die von Einschub zu Einschub variieren können. Darüber hinaus arbeiten die im Rack 240 vorgesehenen Energieversorgungen unabhängig voneinander. Das heißt, innerhalb eines einzelnen Racks kann eine erste Energieversorgung, die einen Recheneinschub mit Energie versorgt, Energiepegel bereitstellen, die von Energiepegeln verschieden sind, die von einer zweiten Energieversorgung geliefert wird, die einen Beschleunigereinschub mit Energie versorgt. Die Energieversorgungen können auf Einschubebene oder Rackebene steuerbar sein und können lokal durch Komponenten auf dem zugehörigen Einschub oder aus der Ferne gesteuert werden, wie durch einen andren Einschub oder eine Orchestrierungseinheit.
-
Nun auf 6 Bezug nehmend ist der Einschub 400 in der veranschaulichenden Ausführungsform ausgelegt, in einem entsprechenden Rack 240 des Rechenzentrums 100 montiert zu werden, wie oben besprochen. In einigen Ausführungsformen kann jeder Einschub 400 zum Durchführen bestimmter Aufgaben, wie Rechenaufgaben, Beschleunigungsaufgaben, Datenspeicheraufgaben usw., optimiert oder anderweitig konfiguriert sein. Der Einschub 400 kann zum Beispiel als ein Recheneinschub 800 wie unten in Bezug auf 8-9 besprochen, ein Beschleunigungseinschub 1000 wie unten in Bezug auf 10-11 besprochen, ein Speichereinschub 1200 wie unten in Bezug auf 12-13 besprochen oder als ein Einschub ausgebildet sein, der optimiert oder anderweitig ausgelegt ist, um andere spezialisierte Aufgaben durchzuführen, wie ein Arbeitsspeichereinschub 1400, der unten in Bezug auf 14 besprochen wird.
-
Wie oben besprochen enthält der veranschaulichende Einschub 400 ein gehäuseloses Leiterplattensubstrat 602, das verschiedene physische Ressourcen trägt (z. B. elektrische Komponenten), die darauf montiert sind. Es sollte klar sein, dass das Leiterplattensubstrat 602 in dem Sinn „gehäuselos“ ist, dass der Einschub 400 keine Einhausung oder Umhüllung enthält. Vielmehr ist das gehäuselose Leiterplattensubstrat 602 zur lokalen Umgebung hin offen. Das gehäuselose Leiterplattensubstrat 602 kann aus einem beliebigen Material gebildet sein, das fähig ist, die verschiedenen, darauf montierten elektrischen Komponenten zu tragen. In einer veranschaulichenden Ausführungsform ist das gehäuselose Leiterplattensubstrat 602 aus einem FR-4-glasverstärkten Epoxylaminatmaterial geformt. Natürlich können in anderen Ausführungsformen auch andere Materialien verwendet werden, um das gehäuselose Leiterplattensubstrat 602 zu formen.
-
Wie unten ausführlicher besprochen wird, enthält das gehäuselose Leiterplattensubstrat 602 mehrere Merkmale, die die thermalen Kühleigenschaften der verschiedenen elektrischen Komponenten verbessern, die auf dem gehäuselosen Leiterplattensubstrat 602 montiert sind. Wie besprochen enthält das gehäuselose Leiterplattensubstrat 602 keine Einhausung oder Umhüllung, was den Luftstrom über die elektrischen Komponenten des Einschubs 400 durch Reduzieren derjenigen Strukturen verbessern kann, die den Luftstrom behindern können. Da das gehäuselose Leiterplattensubstrat 602 nicht in einem individuellen Gehäuse oder in einer individuellen Umhüllung positioniert ist, gibt es beispielsweise keine vertikal angeordnete Rückwandplatine (z. B. eine Rückplatte des Gestells), die am gehäuselosen Leiterplattensubstrat 602 befestigt ist, die einen Luftstrom über die elektrischen Komponenten verhindern könnte. Darüber hinaus weist das gehäuselose Leiterplattensubstrat 602 eine geometrische Form auf, die ausgelegt ist, die Länge des Luftstrompfads über die elektrischen Komponenten zu reduzieren, die am gehäuselosen Leiterplattensubstrat 602 montiert sind. Das veranschaulichende gehäuselose Leiterplattensubstrat 602 weist zum Beispiel eine Breite 604 auf, die größer als eine Tiefe 606 des gehäuselosen Leiterplattensubstrats 602 ist. In einer bestimmten Ausführungsform weist das gehäuselose Leiterplattensubstrat 602 beispielsweise eine Breite von ungefähr 21 Zoll und eine Tiefe von ungefähr 9 Zoll auf, im Vergleich zu einem typischen Server, der eine Breite von ungefähr 17 Zoll und eine Tiefe von ungefähr 39 Zoll aufweist. Als solcher weist ein Luftstrompfad 608, der von einer Vorderkante 610 des gehäuselosen Leiterplattensubstrats 602 zu einer Hinterkante 612 verläuft, relativ zu typischen Servern eine kürzere Distanz auf, was die thermalen Kühlungsmerkmale des Einschubs 400 verbessern kann. Ferner, obwohl in 6 nicht veranschaulicht, sind die verschiedenen physischen Ressourcen, die am gehäuselosen Leiterplattensubstrat 602 montiert sind, an entsprechenden Positionen montiert, sodass keine zwei elektrischen Komponenten, die wesentliche Wärme erzeugen, einander begleiten, wie unten ausführlicher besprochen wird. Das heißt, keine zwei elektrischen Komponenten, die während des Betriebs merkliche Wärme erzeugen (d. h. größer als eine nominale Wärme, die ausreicht, um die Kühlung anderer elektrischer Komponenten nachteilig zu beeinflussen), sind am gehäuselosen Leiterplattensubstrat 602 linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 montiert (d. h. entlang einer Richtung, die von der Vorderkante 610 zur Hinterkante 612 des gehäuselosen Leiterplattensubstrats 602 verläuft).
-
Wie oben besprochen, enthält der veranschaulichende Einschub 400 eine oder mehrere physische Ressourcen 620, die an einer Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind. Obwohl in 6 nur zwei physische Ressourcen 620 gezeigt sind, sollte klar sein, dass der Einschub 400 in anderen Ausführungsformen eine, zwei oder mehr physische Ressourcen 620 enthalten kann. Die physischen Ressourcen 620 können als ein beliebiger Typ von einem Prozessor, einer Steuerung oder einem anderen Rechenschaltkreis ausgebildet sein, der verschiedene Aufgaben wie Rechenfunktionen und/oder Steuern der Funktionen des Einschubs 400 durchführen kann, beispielsweise abhängig vom Typ oder der beabsichtigten Funktionalität des Einschubs 400. Wie unten ausführlicher besprochen wird, können die physischen Ressourcen 620 beispielsweise als Hochleistungsprozessoren in Ausführungsformen, in denen der Einschub 400 als ein Recheneinschub ausgebildet ist, als Beschleunigungs-Coprozessoren oder Schaltkreise in Ausführungsformen, in denen der Einschub 400 als ein Beschleunigungseinschub ausgebildet ist, als Speichersteuerungen in Ausführungsformen, in denen der Einschub 400 als ein Speichereinschub ausgebildet ist, oder eine Gruppe von Arbeitsspeichervorrichtungen in Ausführungsformen ausgebildet sein, in denen der Einschub 400 als ein Arbeitsspeichereinschub ausgebildet ist.
-
Der Einschub 400 enthält auch eine oder mehrere zusätzliche physische Ressourcen 630, die an einer Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind. In der veranschaulichenden Ausführungsform enthalten die zusätzlichen physischen Ressourcen eine Netzwerkschnittstellensteuerung (NIC), wie unten ausführlicher besprochen wird. Natürlich können die physischen Ressourcen 630 in anderen Ausführungsformen abhängig vom Typ und der Funktionalität des Einschubs 400 zusätzliche oder andere elektrische Komponenten, Schaltkreise und/oder Vorrichtungen enthalten.
-
Die physischen Ressourcen 620 sind über ein Eingabe/Ausgabe(E/A)-Subsystem 622 kommunikativ an die physischen Ressourcen 630 gekoppelt. Das E/A-Subsystem 622 kann als eine Verschaltung und/oder Komponenten ausgebildet sein, um Eingabe/Ausgabe-Operationen mit den physischen Ressourcen 620, den physischen Ressourcen 630 und/oder anderen Komponenten des Einschubs 400 zu ermöglichen. Das E/A-Subsystem 622 kann beispielsweise als Arbeitsspeichersteuerungshubs, Eingabe/Ausgabe-Steuerungshubs, integrierte Sensorhubs, Firmwarevorrichtungen, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verknüpfungen, Busverbindungen, Drähte, Kabel, Wellenleiter, Lichtleiter, Bahnen auf gedruckten Leiterplatten usw.) und/oder andere Komponenten und Subsysteme ausgebildet sein oder diese anderweitig enthalten, um die Eingabe/Ausgabe-Operationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist das E/A-Subsystem 622 als ein doppelter Datenraten-4(DDR4)-Datenbus oder ein DDR5-Datenbus ausgebildet oder enthält einen solchen anderweitig.
-
In einigen Ausführungsformen kann der Einschub 400 auch eine Ressource-zu-Ressource-Zwischenverbindung 624 enthalten. Die Ressource-zu-Ressource-Zwischenverbindung 624 kann als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, der fähig ist, Ressource-zu-Ressource-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Ressource-zu-Ressource-Zwischenverbindung 624 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Ressource-zu-Ressource-Zwischenverbindung 624 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Ressource-zu-Ressource-Kommunikationen zweckbestimmt ist.
-
Der Einschub 400 enthält auch einen Energieanschluss 640, der ausgelegt ist, in einen entsprechenden Energieanschluss des Racks 240 einzugreifen, wenn der Einschub 400 im entsprechenden Rack 240 montiert ist. Der Einschub 400 empfängt über den Energieanschluss 640 Energie von einer Energieversorgung des Racks 240, um Energie an die verschiedenen elektrischen Komponenten des Einschubs 400 zu liefern. Das heißt, der Einschub 400 enthält keine lokale Energieversorgung (d. h. eine integrierte Energieversorgung), um die elektrischen Komponenten des Einschubs 400 mit Energie zu versorgen. Der Ausschluss einer lokalen oder integrierten Energieversorgung ermöglicht die Reduktion des Gesamtplatzbedarfs des gehäuselosen Leiterplattensubstrats 602, was die thermalen Kühlungsmerkmale der verschiedenen elektrischen Komponenten erhöhen kann, die auf dem gehäuselosen Leiterplattensubstrat 602 montiert sind, wie oben besprochen. In einigen Ausführungsformen sind Spannungsregler auf einer Unterseite 750 (siehe 7) des gehäuselosen Leiterplattensubstrats 602 direkt den Prozessoren 820 (siehe 8) gegenüber platziert, und Energie wird durch Durchkontaktierungen, die durch das Leiterplattensubstrat 602 verlaufen, von den Spannungsreglern zu den Prozessoren 820 geleitet. Eine derartige Konfiguration bietet ein erhöhtes Wärmebudget, zusätzlichen Strom und/oder zusätzliche Spannung und eine bessere Spannungsregelung im Vergleich zu typischen gedruckten Leiterplatten, bei denen Prozessorenergie von einem Spannungsregler teilweise durch gedruckte Leiterbahnen geliefert wird.
-
In einigen Ausführungsformen kann der Einschub 400 auch Montageelemente 642 enthalten, die ausgelegt sind, in einen Montagearm oder einer anderen Struktur eines Roboters einzugreifen, um die Platzierung des Einschubs 600 durch den Roboter in einem Rack 240 zu ermöglichen. Die Montageelemente 642 können als ein beliebiger Typ von physischen Strukturen ausgebildet sein, die dem Roboter ermöglichen, den Einschub 400 zu ergreifen, ohne das gehäuselose Leiterplattensubstrat 602 oder die darauf montierten elektrischen Komponenten zu beschädigen. In einigen Ausführungsformen können die Montageelemente 642 als nicht leitende Anschlussfelder ausgebildet sein, die am gehäuselosen Leiterplattensubstrat 602 befestigt sind. In anderen Ausführungsformen können die Montageelemente als Halterungen, Klammern oder andere ähnliche Strukturen ausgebildet sein, die am gehäuselosen Leiterplattensubstrat 602 befestigt sind. Die spezifische Anzahl, Form, Größe und/oder der spezifische Aufbau des Montageelements 642 kann von der Konstruktion des Roboters abhängen, der ausgelegt ist, den Einschub 400 zu verwalten.
-
Nun auf 7 Bezug nehmend, enthält der Einschub 400 zusätzlich zu den physischen Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind, auch eine oder mehrere Arbeitsspeichervorrichtungen 720, die auf einer Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert sind. Das heißt, das gehäuselose Leiterplattensubstrat 602 ist als eine doppelseitige Leiterplatte ausgebildet. Die physischen Ressourcen 620 sind über das E/A-Subsystem 622 kommunikativ an die Arbeitsspeichervorrichtungen 720 gekoppelt. Die physischen Ressourcen 620 und die Arbeitsspeichervorrichtungen 720 können zum Beispiel über eine oder mehrere Durchkontaktierungen kommunikativ gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jede physische Ressource 620 kann in einigen Ausführungsformen kommunikativ an eine andere Gruppe aus einer oder mehreren Arbeitsspeichervorrichtungen 720 gekoppelt sein. Alternativ kann jede physische Ressource 620 in anderen Ausführungsformen kommunikativ an jede Arbeitsspeichervorrichtung 720 gekoppelt sein.
-
Die Arbeitsspeichervorrichtungen 720 können als ein beliebiger Typ von Arbeitsspeichervorrichtung ausgebildet sein, der fähig ist, während eines Betriebs des Einschubs 400 Daten für die physischen Ressourcen 620 zu speichern, wie beispielsweise ein beliebiger Typ von flüchtigem (z. B. dynamischem Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) usw.) oder nichtflüchtigem Arbeitsspeicher. Flüchtiger Arbeitsspeicher kann ein Speichermedium sein, das Energie erfordert, um den Zustand von vom Medium gespeicherten Daten zu bewahren. Nicht einschränkende Beispiele von flüchtigem Arbeitsspeicher können verschiedene Arten von Arbeitsspeicher mit wahlfreiem Zugriff (RAM) wie dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) oder statischen Arbeitsspeicher mit wahlfreiem Zugriff (SRAM) enthalten. Ein bestimmter Typ von DRAM, der in einem Arbeitsspeichermodul verwendet werden kann, ist synchroner dynamischer Arbeitsspeicher mit wahlfreiem Zugriff (SDRAM). In bestimmten Ausführungsformen kann der DRAM einer Arbeitsspeicherkomponente einen von JEDEC veröffentlichten Standard erfüllen, wie JESD79F für DDR-SDRAM, JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM, JESD79-4A für DDR4-SDRAM, JESD209 für Niedrigenergie-DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 für LPDDR4. Derartige Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speichervorrichtungen, die derartige Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
-
In einer Ausführungsform ist die Arbeitsspeichervorrichtung eine blockadressierbare Arbeitsspeichervorrichtung, wie diejenigen, die auf NAND- oder NOR-Technologien basieren. Eine Arbeitsspeichervorrichtung kann auch nichtflüchtige Vorrichtungen zukünftiger Generationen enthalten, wie einen Intel 3D XPoint™-Arbeitsspeicher oder andere Byte-adressierbare, in situ beschreibbare nichtflüchtige Arbeitsspeichervorrichtungen. In einer Ausführungsform kann die Arbeitsspeichervorrichtung Arbeitsspeichervorrichtungen sein oder solche enthalten, die Chalkogenglas, NAND-Flashspeicher mit mehreren Schwellenpegeln, NOR-Flashspeicher, Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln, einen resistiven Arbeitsspeicher, Nanodrahtspeicher, ferroelektrischen Transistorspeicher mit wahlfreiem Zugriff (FeTRAM), antiferroelektrischen Arbeitsspeicher, magnetoresistiven Arbeitsspeicher mit wahlfreiem Zugriff (MRAM), der Memristor-Technologie einbindet, resistiven Arbeitsspeicher auf Metalloxidbasis, Sauerstoffleerstellenbasis und Leiterbrückenarbeitsspeicher mit wahlfreiem Zugriff (CB-RAM) oder Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Spintronik-Magnetübergang-Arbeitsspeicherbasis, eine Vorrichtung auf Magnettunnelübergangsbasis (MTJ-Basis), eine Vorrichtung auf Domänenwand(DW)- und SOT(Spin-Orbit-Transfer)-Basis, eine Arbeitsspeichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigen der obigen oder einen anderen Arbeitsspeicher einsetzen. Die Arbeitsspeichervorrichtung kann den Chip selbst und/oder ein verpacktes Arbeitsspeicherprodukt bezeichnen. In einigen Ausführungsformen kann die Arbeitsspeichervorrichtung eine transistorlose stapelbare Koppelpunkt-Architektur umfassen, in der Arbeitsspeicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und in der eine Bitspeicherung auf einer Änderung im Bulkwiderstand basiert.
-
Nun auf 8 Bezug nehmend, kann der Einschub 400 als ein Recheneinschub 800 ausgeführt sein. Der Recheneinschub 800 ist optimiert oder anderweitig ausgelegt, um Rechenaufgaben durchzuführen. Natürlich, wie oben besprochen, kann sich der Recheneinschub 800 auf andere Einschübe, wie Beschleunigungseinschübe und/oder Speichereinschübe, stützen, um derartige Rechenaufgaben durchzuführen. Der Recheneinschub 800 enthält verschiedene physische Ressourcen (z. B. elektrische Komponenten), die den physischen Ressourcen des Einschubs 400 ähnlich sind, die in 8 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6 und 7 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Recheneinschubs 800 und wird hierin aus Gründen der Klarheit der Beschreibung des Recheneinschubs 800 nicht beschrieben.
-
Im veranschaulichenden Recheneinschub 800 sind die physischen Ressourcen 620 als Prozessoren 820 ausgebildet. Obwohl in 8 nur zwei Prozessoren 820 gezeigt sind, sollte klar sein, dass der Recheneinschub 800 in anderen Ausführungsformen zusätzliche Prozessoren 820 enthalten kann. Veranschaulichend sind die Prozessoren 820 als Hochleistungsprozessoren 820 ausgebildet und können ausgelegt sein, mit einer relativ hohen Nennleistung zu arbeiten. Obwohl die Prozessoren 820 beim Arbeiten mit größeren Nennleistungen als übliche Prozessoren (die mit ungefähr 155-230 W arbeiten) zusätzliche Wärme generieren, ermöglichen die oben besprochenen verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 den Betrieb bei höherer Leistung. In der veranschaulichenden Ausführungsform sind die Prozessoren 820 beispielsweise ausgelegt, mit einer Nennleistung von mindestens 250 W zu arbeiten. In einigen Ausführungsformen können die Prozessoren 820 ausgelegt sein, mit einer Nennleistung von mindestens 350 W zu arbeiten.
-
In einigen Ausführungsformen kann der Recheneinschub 800 auch eine Prozessor-zu-Prozessor-Zwischenverbindung 842 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Prozessor-zu-Prozessor-Zwischenverbindung 842 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Kommunikationen der Prozessor-zu-Prozessor-Zwischenverbindung 842 zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Prozessor-zu-Prozessor-Zwischenverbindung 842 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Prozessor-zu-Prozessor-Zwischenverbindung 842 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist.
-
Der Recheneinschub 800 enthält auch einen Kommunikationsschaltkreis 830. Der veranschaulichende Kommunikationsschaltkreis 830 enthält eine Netzwerkschnittstellensteuerung (NIC) 832, die auch als eine Host-Fabric-Schnittstelle (HFI) bezeichnet werden kann. Die NIC 832 kann als ein beliebiger Typ von integriertem Schaltkreis, von diskreten Schaltkreisen, Steuerungschips, Chipsätzen, Zusatzplatinen, Tochterkarten, Netzwerkschnittstellenkarten oder anderen Vorrichtungen, die vom Recheneinschub 800 verwendet werden können, um an eine andere Rechenvorrichtung (z. B. an andere Einschübe 400) anzubinden, ausgebildet sein oder einen derartigen Typ anderweitig enthalten. In einigen Ausführungsformen kann die NIC 832 als ein Teil eines Ein-Chip-Systems (SoC) ausgebildet sein, das einen oder mehrere Prozessoren enthält, oder auf einem Mehrchippaket enthalten sein, das auch einen oder mehrere Prozessoren enthält. In einigen Ausführungsformen kann die NIC 832 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Arbeitsspeicher (nicht gezeigt) enthalten, die beide lokal zur NIC 832 sind. In derartigen Ausführungsformen kann der lokale Prozessor der NIC 832 fähig sein, eine oder mehrere der Funktionen des Prozessors 820 durchzuführen. Zusätzlich oder alternativ kann der lokale Arbeitsspeicher der NIC 832 in derartigen Ausführungsformen in eine oder mehrere Komponenten des Recheneinschubs auf Platinenebene, Sockelebene, Chipebene und/oder anderen Ebenen integriert sein.
-
Der Kommunikationsschaltkreis 830 ist kommunikativ an einen optischen Datenanschluss 834 gekoppelt. Der optische Datenanschluss 834 ist ausgelegt, in einen entsprechenden optischen Datenanschluss des Racks 240 einzugreifen, wenn der Recheneinschub 800 im Rack 240 montiert ist. Veranschaulichend enthält der optische Datenanschluss 834 eine Vielzahl von optischen Leitern, die von einer Gegenfläche des optischen Datenanschlusses 834 zu einem optischen Sende-Empfänger 836 führen. Der optische Sende-Empfänger 836 ist ausgelegt, eingehende optische Signale vom rackseitigen optischen Datenanschluss in elektrische Signale umzuwandeln und elektrische Signale in ausgehende optische Signale an den rackseitigen optischen Datenanschluss umzuwandeln. Obwohl der optische Sende-Empfänger 836 in der veranschaulichenden Ausführungsform als einen Teil des optischen Datenanschlusses 834 bildend gezeigt ist, kann er in anderen Ausführungsformen einen Abschnitt des Kommunikationsschaltkreises 830 bilden.
-
In einigen Ausführungsformen kann der Recheneinschub 800 auch einen Erweiterungsanschluss 840 enthalten. In derartigen Ausführungsformen ist der Erweiterungsanschluss 840 ausgelegt, in einen entsprechenden Anschluss eines gehäuselosen Erweiterungs-Leiterplattensubstrats einzugreifen, um dem Recheneinschub 800 zusätzliche physische Ressourcen bereitzustellen. Die zusätzlichen physischen Ressourcen können zum Beispiel von den Prozessoren 820 während des Betriebs des Recheneinschubs 800 verwendet werden. Das gehäuselose Erweiterungs-Leiterplattensubstrat kann im Wesentlichen dem oben besprochenen gehäuselosen Leiterplattensubstrat 602 ähnlich sein und kann verschiedene darauf montierte elektrische Komponenten enthalten. Die bestimmten elektrischen Komponenten, die am gehäuselosen Erweiterungs-Leiterplattensubstrat montiert sind, können von der beabsichtigten Funktionalität des gehäuselosen Erweiterungs-Leiterplattensubstrats abhängen. Das gehäuselose Erweiterungs-Leiterplattensubstrat kann beispielsweise zusätzliche Rechenressourcen, Arbeitsspeicherressourcen und/oder Speicherressourcen bereitstellen. Als solche können die zusätzlichen physischen Ressourcen des gehäuselosen Erweiterungs-Leiterplattensubstrats Prozessoren, Arbeitsspeichervorrichtungen, Speichervorrichtungen und/oder Beschleunigerschaltkreise enthalten, sind jedoch nicht darauf beschränkt, einschließlich, beispielsweise, feldprogrammierbare Gatearrays (FPGA), anwendungsspezifische integrierte Schaltungen (ASICs), Sicherheits-Coprozessoren, Grafikverarbeitungseinheiten (GPUs), Schaltkreise für maschinelles Lernen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltkreise.
-
Nun auf 9 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Recheneinschubs 800 gezeigt. Wie gezeigt sind die Prozessoren 820, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Eine beliebige geeignete Befestigungs- oder Montagetechnologie kann verwendet werden, um die physischen Ressourcen des Recheneinschubs 800 am gehäuselosen Leiterplattensubstrat 602 zu montieren. Die verschiedenen physischen Ressourcen können zum Beispiel in entsprechenden Sockeln (z. B. einem Prozessorsockel), Halterungen oder Klammern montiert sein. In einigen Fällen können einige der elektrischen Komponenten direkt durch Löten oder ähnliche Techniken am gehäuselosen Leiterplattensubstrat 602 montiert sein.
-
Wie oben besprochen sind die einzelnen Prozessoren 820 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten. In der veranschaulichenden Ausführungsform sind die Prozessoren 820 und der Kommunikationsschaltkreis 830 an entsprechenden Positionen auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass sich keine zwei der physischen Ressourcen linear in einer Reihe mit anderen entlang der Richtung des Luftstrompfads 608 befinden. Es sollte klar sein, dass, obwohl sich der optische Datenanschluss 834 in einer Reihe mit dem Kommunikationsschaltkreis 830 befindet, der optische Datenanschluss 834 während des Betriebs keine oder nominale Wärme erzeugt.
-
Die Arbeitsspeichervorrichtungen 720 des Recheneinschubs 800 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 400 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 an die Prozessoren 820 gekoppelt, die sich auf der Oberseite 650 befinden. Da das gehäuselose Leiterplattensubstrat 602 als eine doppelseitige Leiterplatte ausgebildet ist, können die Arbeitsspeichervorrichtungen 720 und die Prozessoren 820 kommunikativ durch eine oder mehrere Durchkontaktierungen, Anschlüsse oder andere Mechanismen gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jeder Prozessor 820 kann natürlich in einigen Ausführungsformen kommunikativ an eine andere Gruppe aus einer oder mehreren Arbeitsspeichervorrichtungen 720 gekoppelt sein. Alternativ kann jeder Prozessor 820 in anderen Ausführungsformen kommunikativ an jede Arbeitsspeichervorrichtung 720 gekoppelt sein. In einigen Ausführungsformen können die Arbeitsspeichervorrichtungen 720 auf einer oder mehreren Arbeitsspeicherzwischenschichten auf der Unterseite des gehäuselosen Leiterplattensubstrats 602 montiert sein und mit einem entsprechenden Prozessor 820 über eine Kugelgitteranordnung verbunden sein.
-
Jeder der Prozessoren 820 enthält einen daran gesicherten Kühlkörper 850. Aufgrund der Montage der Arbeitsspeichervorrichtungen 720 auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 (sowie der vertikalen Beabstandung der Einschübe 400 im entsprechenden Rack 240) enthält die Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 eine zusätzliche „freie“ Fläche oder einen zusätzlichen „freien“ Raum, der die Verwendung von Kühlkörpern 850 mit einer größeren Größe relativ zu herkömmlichen, in typischen Servern verwendeten Kühlkörpern ermöglicht. Aufgrund der verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 enthält darüber hinaus keiner der Kühlkörper 850 daran befestigte Kühllüfter. Das heißt, jeder der Kühlkörper 850 ist als ein lüfterloser Kühlkörper ausgebildet. In einigen Ausführungsformen können die Kühlkörper 850, die auf den Prozessoren 820 montiert sind, mit dem am Kommunikationsschaltkreis 830 befestigten Kühlkörper aufgrund ihrer größeren Größe in der Richtung des Luftströmungspfads 608 überlappen, wie veranschaulichend durch 9 angedeutet.
-
Nun auf 10 Bezug nehmend, kann der Einschub 400 als ein Beschleunigungseinschub 1000 ausgeführt sein. Der Beschleunigungseinschub 1000 ist ausgelegt, spezialisierte Rechenaufgaben durchzuführen, wie maschinelles Lernen, Verschlüsselung, Hashing oder eine andere rechenintensive Aufgabe. In einigen Ausführungsformen kann ein Recheneinschub 800 zum Beispiel während des Betriebs Aufgaben an den Beschleunigungseinschub 1000 auslagern. Der Beschleunigungseinschub 1000 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 10 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Beschleunigungseinschubs 1000 und wird hierin aus Gründen der Klarheit der Beschreibung des Beschleunigungseinschubs 1000 nicht beschrieben.
-
Im veranschaulichenden Beschleunigungseinschub 1000 sind die physischen Ressourcen 620 als Beschleunigungsschaltkreise 1020 ausgebildet. Obwohl in 10 nur zwei Beschleunigungsschaltkreise 1020 gezeigt sind, sollte klar sein, dass der Beschleunigungseinschub 1000 in anderen Ausführungsformen zusätzliche Beschleunigungsschaltkreise 1020 enthalten kann. Wie beispielsweise in 11 gezeigt, kann der Beschleunigungseinschub 1000 in einigen Ausführungsformen vier Beschleunigungsschaltkreise 1020 enthalten. Die Beschleunigungsschaltkreise 1020 können als ein beliebiger Typ von Prozessor, Coprozessor, Rechenschaltkreis oder eine andere Vorrichtung ausgebildet sein, die Rechen- oder Verarbeitungsoperationen durchführen kann. Die Beschleunigungsschaltkreise 1020 können zum Beispiel als feldprogrammierbare Gatearrays (FPGA), anwendungsspezifische integrierte Schaltkreise (ASICs), Sicherheits-Coprozessoren, Grafikverarbeitungseinheiten (GPUs), neuromorphe Prozessoreinheiten, Quantencomputer, Schaltkreise für maschinelles Lernen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltkreise ausgebildet sein.
-
In einigen Ausführungsformen kann der Beschleunigungseinschub 1000 auch eine Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 600 kann die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Beschleuniger-zu-Beschleuniger-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist. In einigen Ausführungsformen können die Beschleunigungsschaltkreise 1020 mit einem primären Beschleunigungsschaltkreis 1020, der über das E/A-Subsystem 622 mit der NIC 832 und dem Arbeitsspeicher 720 verbunden ist, und einem sekundären Beschleunigungsschaltkreis 1020 in Reihe geschaltet sein, der über einen primären Beschleunigungsschaltkreis 1020 mit der NIC 832 und dem Arbeitsspeicher 720 verbunden ist.
-
Nun auf 11 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Beschleunigungseinschubs 1000 gezeigt. Wie oben besprochen, sind die Beschleunigungsschaltkreise 1020, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Wiederum sind die einzelnen Beschleunigungsschaltkreise 1020 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten, wie oben besprochen. Die Arbeitsspeichervorrichtungen 720 des Beschleunigungseinschubs 1000 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 600 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 (z. B. über Durchkontaktierungen) an die Beschleunigungsschaltkreise 1020 gekoppelt, die sich auf der Oberseite 650 befinden. Ferner kann jeder der Beschleunigungsschaltkreise 1020 einen Kühlkörper 1070 enthalten, der größer als ein herkömmlicher, in einem Server verwendeter Kühlkörper ist. Wie oben in Bezug auf die Kühlkörper 870 besprochen, können die Kühlkörper 1070 aufgrund der „freien“ Fläche, die dadurch bereitgestellt wird, dass sich die Arbeitsspeicherressourcen 720 auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 anstatt auf der Oberseite 650 befinden, größer als herkömmliche Kühlkörper sein.
-
Nun auf 12 Bezug nehmend, kann der Einschub 400 als ein Speichereinschub 1200 ausgeführt sein. Der Speichereinschub 1200 ist ausgelegt, Daten in einem zum Speichereinschub 1200 lokalen Datenspeicher 1250 zu speichern. Beispielsweise kann ein Recheneinschub 800 oder ein Beschleunigungseinschub 1000 während des Betriebs Daten im Datenspeicher 1250 des Speichereinschubs 1200 speichern und aus diesem abrufen. Der Speichereinschub 1200 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 12 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Speichereinschubs 1200 und wird hierin aus Gründen der Klarheit der Beschreibung des Speichereinschubs 1200 nicht beschrieben.
-
Im veranschaulichenden Speichereinschub 1200 sind die physischen Ressourcen 620 als Speichersteuerungen 1220 ausgebildet. Obwohl in 12 nur zwei Speichersteuerungen 1220 gezeigt sind, sollte klar sein, dass der Speichereinschub 1200 in anderen Ausführungsformen zusätzliche Speichersteuerungen 1220 enthalten kann. Die Speichersteuerungen 1220 können als ein beliebiger Typ von Prozessor, Steuerung oder Steuerschaltkreis ausgebildet sein, der bzw. die fähig ist, die Speicherung und das Abrufen von Daten in den Datenspeicher 1250 auf Grundlage von über den Kommunikationsschaltkreis 830 empfangenen Anforderungen zu steuern. In der veranschaulichenden Ausführungsform sind die Speichersteuerungen 1220 als Prozessoren oder Steuerungen mit relativ niedriger Leistung ausgebildet. In einigen Ausführungsformen können die Speichersteuerungen 1220 zum Beispiel ausgelegt sein, mit einer Nennleistung von ungefähr 75 Watt zu arbeiten.
-
In einigen Ausführungsformen kann der Speichereinschub 1200 auch eine Steuerung-zu-Steuerung-Zwischenverbindung 1242 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Steuerung-zu-Steuerung-Zwischenverbindung 1242 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Steuerung-zu-Steuerung-Zwischenverbindung 1242 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Steuerung-zu-Steuerung-Zwischenverbindung 1242 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist.
-
Nun auf 13 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Speichereinschubs 1200 gezeigt. In der veranschaulichenden Ausführungsform ist der Datenspeicher 1250 als eine Speichereinhausung 1252, die ausgelegt ist, eine oder mehrere Festkörperlaufwerke (SSDs) 1254 aufzunehmen, ausgebildet oder enthält eine solche Speichereinhausung. Hierzu enthält die Speichereinhausung 1252 eine Anzahl an Montageschlitzen 1256, von denen jeder ausgelegt ist, ein entsprechendes Festkörperlaufwerk 1254 aufzunehmen. Jeder der Montageschlitze 1256 enthält eine Anzahl an Laufwerksführungen 1258, die zusammenarbeiten, um eine Zugangsöffnung 1260 des entsprechenden Montageschlitzes 1256 zu definieren. Die Speichereinhausung 1252 ist so am gehäuselosen Leiterplattensubstrat 602 gesichert, dass die Zugangsöffnungen vom gehäuselosen Leiterplattensubstrat 602 abgewandt sind (d. h., zur Vorderseite dieses zeigen). Als solche sind die Festkörperlaufwerke 1254 zugänglich, während der Speichereinschub 1200 in einem entsprechenden Rack 204 montiert ist. Ein Festkörperlaufwerk 1254 kann beispielsweise aus einem Rack 240 (z. B. über einen Roboter) ausgelagert werden, während der Speichereinschub 1200 im entsprechenden Rack 240 montiert bleibt.
-
Die Speichereinhausung 1252 enthält veranschaulichend sechzehn Montageschlitze 1256 und kann sechzehn Festkörperlaufwerke 1254 montieren und unterbringen. Natürlich kann die Speichereinhausung 1252 in anderen Ausführungsformen ausgelegt sein, zusätzliche oder weniger Festkörperlaufwerke 1254 unterzubringen. Zusätzlich sind die Festkörpertreiber in der veranschaulichenden Ausführungsform vertikal in der Speichereinhausung 1252 montiert, aber können in anderen Ausführungsformen in einer unterschiedlichen Ausrichtung in der Speichereinhausung 1252 montiert sein. Jedes Festkörperlaufwerk 1254 kann als ein beliebiger Typ von Datenspeichervorrichtung ausgebildet sein, der Daten langfristig speichern kann. Hierzu können die Festkörperlaufwerke 1254 die oben besprochenen flüchtigen und nichtflüchtigen Arbeitsspeichervorrichtungen enthalten.
-
Wie in 13 gezeigt, sind die Speichersteuerungen 1220, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 veranschaulichend an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Wiederum kann wie oben besprochen eine beliebige geeignete Befestigungs- oder Montagetechnologie verwendet werden, um die elektrischen Komponenten des Speichereinschubs 1200 am gehäuselosen Leiterplattensubstrat 602 zu montieren, einschließlich beispielsweise Sockel (z. B. Prozessorsockel), Halterungen, Klammern, gelötete Verbindungen und/oder andere Montage- oder Sicherungstechniken.
-
Wie oben besprochen sind die einzelnen Speichersteuerungen 1220 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten. Die Speichersteuerungen 1220 und der Kommunikationsschaltkreis 830 sind zum Beispiel an entsprechenden Positionen auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass sich keine zwei dieser elektrischen Komponenten linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 befinden.
-
Die Arbeitsspeichervorrichtungen 720 des Speichereinschubs 1200 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 400 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 an die Speichersteuerungen 1220 gekoppelt, die sich auf der Oberseite 650 befinden. Wiederum, da das gehäuselose Leiterplattensubstrat 602 als eine doppelseitige Leiterplatte ausgebildet ist, können die Arbeitsspeichervorrichtungen 720 und die Speichersteuerungen 1220 kommunikativ durch eine oder mehrere Durchkontaktierungen, Anschlüsse oder andere Mechanismen gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jede der Speichersteuerungen 1220 enthält einen daran gesicherten Kühlkörper 1270. Wie oben besprochen, aufgrund der verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 des Speichereinschubs 1200, enthält keiner der Kühlkörper 1270 daran befestigte Kühllüfter. Das heißt, jeder der Kühlkörper 1270 ist als ein lüfterloser Kühlkörper ausgebildet.
-
Nun auf 14 Bezug nehmend, kann der Einschub 400 als ein Arbeitsspeichereinschub 1400 ausgeführt sein. Der Speichereinschub 1400 ist optimiert oder anderweitig ausgelegt, anderen Einschüben 400 (z. B. den Recheneinschüben 800, den Beschleunigungseinschüben 1000 usw.) Zugriff auf einen zum Arbeitsspeichereinschub 1200 lokalen Arbeitsspeicherbestand (z. B. in zwei oder mehr Gruppen 1430, 1432 von Arbeitsspeichervorrichtungen 720) bereitzustellen. Während des Betriebs kann ein Recheneinschub 800 oder ein Beschleunigungseinschub 1000 beispielsweise entfernt unter Verwendung eines logischen Adressraums, der auf physische Adressen in den Arbeitsspeichergruppen 1430, 1432 abbildet, in eine oder mehrere der Arbeitsspeichergruppen 1430, 1432 des Arbeitsspeichereinschubs 1200 schreiben und/oder aus diesen lesen. Der Arbeitsspeichereinschub 1400 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 14 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Arbeitsspeichereinschubs 1400 und wird hierin aus Gründen der Klarheit der Beschreibung des Arbeitsspeichereinschubs 1400 nicht wiederholt.
-
Im veranschaulichenden Arbeitsspeichereinschub 1400 sind die physischen Ressourcen 620 als Arbeitsspeichersteuerungen 1420 ausgebildet. Obwohl in 14 nur zwei Arbeitsspeichersteuerungen 1420 gezeigt sind, sollte klar sein, dass der Arbeitsspeichereinschub 1400 in anderen Ausführungsformen zusätzliche Arbeitsspeichersteuerungen 1420 enthalten kann. Die Arbeitsspeichersteuerungen 1420 können als ein beliebiger Typ von Prozessor, Steuerung oder Steuerschaltkreis ausgebildet sein, der bzw. die fähig ist, das Schreiben und Lesen von Daten in die Arbeitsspeichergruppen 1430, 1432 auf Grundlage von über den Kommunikationsschaltkreis 830 empfangenen Anforderungen zu steuern. In der veranschaulichenden Ausführungsform ist jede Arbeitsspeichersteuerung 1420 mit einer entsprechenden Arbeitsspeichergruppe 1430, 1432 verbunden, um in die Arbeitsspeichervorrichtungen 720 innerhalb der entsprechenden Arbeitsspeichergruppe 1430, 1432 zu schreiben und aus diesen zu lesen und alle Berechtigungen (z. B. Lesen, Schreiben usw.) geltend zu machen, die mit dem Einschub 400 verknüpft sind, der eine Anforderung an den Arbeitsspeichereinschub 1400 gesendet hat, einen Arbeitsspeicherzugriffvorgang (z. B. Lesen oder Schreiben) durchzuführen.
-
In einigen Ausführungsformen kann der Arbeitsspeichereinschub 1400 auch eine Steuerung-zu-Steuerung-Zwischenverbindung 1442 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Steuerung-zu-Steuerung-Zwischenverbindung 1442 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Steuerung-zu-Steuerung-Zwischenverbindung 1442 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Steuerung-zu-Steuerung-Zwischenverbindung 1442 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist. Als solche kann eine Arbeitsspeichersteuerung 1420 in einigen Ausführungsformen über die Steuerung-zu-Steuerung-Zwischenverbindung 1442 auf Arbeitsspeicher zugreifen, der sich in der Arbeitsspeichergruppe 1432 befindet, die mit einer anderen Arbeitsspeichersteuerung 1420 verknüpft ist. In einigen Ausführungsformen besteht eine skalierbare Arbeitsspeichersteuerung aus mehreren kleineren Arbeitsspeichersteuerungen, die hierin als „Chiplet“ bezeichnet werden, auf einem Arbeitsspeichereinschub (z. B. dem Arbeitsspeichereinschub 1400). Die Chiplets können miteinander verbunden sein (z. B. unter Verwendung von EMIB (Embedded Multi-Die Interconnect Bridge)). Die kombinierte Chiplet-Arbeitsspeichersteuerung kann auf eine relativ große Anzahl an Arbeitsspeichersteuerungen und E/A-Anschlüssen hochskalieren (z. B. auf bis zu 16 Arbeitsspeicherkanäle). In einigen Ausführungsformen können die Arbeitsspeichersteuerungen 1420 eine Arbeitsspeicherverschränkung implementieren (z. B. ist eine Arbeitsspeicheradresse auf die Arbeitsspeichergruppe 1430 abgebildet, die nächste Arbeitsspeicheradresse ist auf die Arbeitsspeichergruppe 1432 abgebildet und die dritte Adresse ist auf die Arbeitsspeichergruppe 1430 abgebildet usw.). Die Verschränkung kann innerhalb der Arbeitsspeichersteuerung 1420 verwaltet oder von CPU-Sockeln (z. B. des Recheneinschubs 800) über Netzwerkverbindungen mit den Arbeitsspeichergruppen 1430, 1432 hinweg verwaltet werden und kann die mit dem Durchführen von Arbeitsspeicherzugriffvorgängen assoziierte Latenzzeit im Vergleich zum Zugreifen auf fortlaufende Arbeitsspeicheradressen von der gleichen Arbeitsspeichervorrichtung verbessern.
-
Ferner kann der Arbeitsspeichereinschub 1400 in einigen Ausführungsformen unter Verwendung des Wellenleiteranschlusses 1480 über einen Wellenleiter mit einem oder mehreren anderen Einschüben 400 (z. B. im gleichen Rack 240 oder einem benachbarten Rack 240) verbunden sein. In der veranschaulichenden Ausführungsform sind die Wellenleiter 64-Millimeter-Wellenleiter, die 16 Rx-Leitungen (d. h. Empfangsleitungen) und 16 Tx-Leitungen (d. h. Sendeleitungen) bereitstellen. Jede Leitung ist in der veranschaulichenden Ausführungsform entweder 16 GHz oder 32 GHz. In anderen Ausführungsformen können die Frequenzen unterschiedlich sein. Die Verwendung eines Wellenleiters kann einen Zugriff mit hohem Durchsatz auf den Arbeitsspeicherbestand (z. B. die Arbeitsspeichergruppen 1430, 1432) auf einem anderen Einschub (z. B. einen Einschub 400 im gleichen Rack 240 wie der Arbeitsspeichereinschub 1400 oder einem diesem benachbarten Rack 240) bieten, ohne die Belastung des optischen Datenanschlusses 834 zu erhöhen.
-
Nun auf 15 Bezug nehmend kann ein System zum Ausführen einer oder mehrerer Arbeitslasten (z. B. Anwendungen) in Übereinstimmung mit dem Rechenzentrum 100 implementiert werden. In der veranschaulichenden Ausführungsform enthält das System 1510 einen Orchestratorserver 1520, der als ein verwalteter Knoten ausgebildet sein kann, der eine Rechenvorrichtung (z. B. einen Prozessor 820 auf einem Recheneinschub 800) umfasst, die Verwaltungssoftware (z. B. eine Cloud-Betriebsumgebung wie OpenStack) ausführt, die kommunikativ an mehrere Einschübe 400 gekoppelt ist, die eine große Anzahl an Recheneinschüben 1530 (die z. B. jeweils dem Recheneinschub 800 ähnlich sind), Arbeitsspeichereinschüben 1540 (die z. B. jeweils dem Arbeitsspeichereinschub 1400 ähnlich sind), Beschleunigungseinschüben 1550 (die z. B. jeweils dem Beschleunigungseinschub 1000 ähnlich sind) und Speichereinschüben 1560 (die z. B. jeweils dem Speichereinschub 1200 ähnlich sind) enthalten. Ein oder mehrere der Einschübe 1530, 1540, 1550, 1560 können in einen verwalteten Knoten 1570, zum Beispiel durch den Orchestratorserver 1520, gruppiert sein, um gemeinsam eine Arbeitslast (z. B. eine Anwendung 1532, die in einer virtuellen Maschine oder einem Container ausgeführt wird) auszuführen. Der verwaltete Knoten 1570 kann als eine Anordnung physischer Ressourcen 620, wie Prozessoren 820, Arbeitsspeicherressourcen 720, Beschleunigungsschaltkreise 1020 oder Datenspeicher 1250 vom gleichen oder von anderen Einschüben 400 ausgebildet sein. Ferner kann der verwaltete Knoten vom Orchestratorserver 1520 zu dem Zeitpunkt, zu dem eine Arbeitslast dem verwalteten Knoten zuzuweisen ist, oder zu einem anderen Zeitpunkt eingerichtet, definiert oder „hochgefahren“ werden und kann unabhängig davon existieren, ob derzeit dem verwalteten Knoten irgendwelche Arbeitslasten zugewiesen sind. In der veranschaulichenden Ausführungsform kann der Orchestratorserver 1520 den Einschüben 400 physische Ressourcen 620 selektiv zuordnen und/oder deren Zuordnung aufheben und/oder dem verwalteten Knoten 1570 einen oder mehrere Einschübe 400 als eine Funktion von Dienstqualitätszielen (QoS-Zielen) (z. B. Leistungszielen, die mit einem Durchsatz, einer Latenzzeit, Anweisungen pro Sekunde usw. assoziiert sind), die mit einer Dienstgütevereinbarung für die Arbeitslast (z. B. die Anwendung 1532) assoziiert sind, hinzufügen oder von diesem entfernen. Dadurch kann der Orchestratorserver 1520 Telemetriedaten empfangen, die auf Leistungsbedingungen (z. B. Durchsatz, Latenzzeit, Anweisungen pro Sekunde usw.) in jedem Einschub 400 des verwalteten Knotens 1570 hinweisen, und die Telemetriedaten mit den Dienstqualitätszielen vergleichen, um zu ermitteln, ob die Dienstqualitätsziele erfüllt sind. Der Orchestratorserver 1520 kann zusätzlich ermitteln, ob die Zuordnung einer oder mehrerer physischen Ressourcen zum verwalteten Knoten 1570 aufgehoben werden kann, während weiterhin die QoS-Ziele erfüllt werden, wodurch diese physischen Ressourcen zur Verwendung in einem anderen verwalteten Knoten freigegeben werden (um z. B. eine andere Arbeitslast auszuführen). Falls die QoS-Ziele derzeit nicht erfüllt werden, kann der Orchestratorserver 1520 alternativ ermitteln, zusätzliche physische Ressourcen dynamisch zuzuordnen, um bei der Ausführung der Arbeitslast (z. B. der Anwendung 1532) zu helfen, während die Arbeitslast ausgeführt wird. Gleichermaßen kann der Orchestratorserver 1520 ermitteln, die Zuordnung physischer Ressourcen dynamisch von einem verwalteten Knoten aufzuheben, falls der Orchestratorserver 1520 ermittelt, dass eine Aufhebung der Zuordnung der physischen Ressource dazu führen würde, dass QoS-Ziele weiterhin erreicht werden.
-
In einigen Ausführungsformen kann der Orchestratorserver 1520 zusätzlich Trends in der Ressourcennutzung der Arbeitslast (z. B. der Anwendung 1532) identifizieren, zum Beispiel durch Identifizieren von Ausführungsphasen (z. B. Zeitperioden, in denen unterschiedliche Operationen durchgeführt werden, die jeweils unterschiedliche Ressourcennutzungseigenschaften aufweisen) der Arbeitslast (z. B. der Anwendung 1532) und präventives Identifizieren von verfügbaren Ressourcen im Rechenzentrum 100 und Zuordnen dieser zum verwalteten Knoten 1570 (z. B. innerhalb einer vordefinierten Zeitperiode, ab dem Beginn der assoziierten Phase). In einigen Ausführungsformen kann der Orchestratorserver 1520 eine Leistung auf Grundlage von verschiedenen Latenzzeiten und eines Verteilungsschemas modellieren, um Arbeitslasten unter Recheneinschüben und anderen Ressourcen (z. B. Beschleunigungseinschüben, Arbeitsspeichereinschüben, Speichereinschüben) im Rechenzentrum 100 zu verteilen. Der Orchestratorserver 1520 kann zum Beispiel ein Modell einsetzen, das die Leistung von Ressourcen auf den Einschüben 400 (z. B. FPGA-Leistung, Arbeitsspeicherzugriffslatenz usw.) und die Leistung (z. B. Anhäufung, Latenz, Bandbreite) des Pfads durch das Netzwerk zur Ressource (z. B. FPGA) berücksichtigt. Als solcher kann der Orchestratorserver 1520 auf Grundlage der Gesamtlatenzzeit, die mit jeder möglichen, im Rechenzentrum 100 verfügbaren Ressource assoziiert ist, ermitteln, welche Ressource(n) mit welchen Arbeitslasten verwendet werden sollte(n) (z. B. die mit der Durchführung der Ressource selbst assoziierte Latenzzeit, zusätzlich zur Latenzzeit, die mit dem Pfad um das Netzwerk zwischen dem Recheneinschub, der die Arbeitslast ausführt, und dem Einschub 400, auf dem sich die Ressource befindet, assoziiert ist).
-
In einigen Ausführungsformen kann der Orchestratorserver 1520 unter Verwendung von von den Einschüben 400 gemeldeten Telemetriedaten (z. B. Temperaturen, Lüfterdrehzahlen usw.) eine Karte der Wärmeerzeugung im Rechenzentrum 100 erstellen und verwalteten Knoten Ressourcen als eine Funktion der Karte der Wärmeerzeugung und der vorhergesagten Wärmeerzeugung zuordnen, die mit unterschiedlichen Arbeitslasten assoziiert ist, um eine Zieltemperatur und Zielwärmeverteilung im Rechenzentrum 100 beizubehalten. Zusätzlich oder alternativ kann der Orchestratorserver 1520 in einigen Ausführungsformen empfangene Telemetriedaten in ein hierarchisches Modell organisieren, das auf eine Beziehung zwischen den verwalteten Knoten hinweist (z. B. eine räumliche Beziehung wie die physischen Positionen der Ressourcen der verwalteten Knoten innerhalb des Rechenzentrums 100 und/oder eine funktionale Beziehung, wie Gruppierungen der verwalteten Knoten durch die Kunden, für die die verwalteten Knoten Dienste bereitstellen, die Arten der von den verwalteten Knoten üblicherweise durchgeführten Funktionen, verwaltete Knoten, die üblicherweise Arbeitslasten untereinander verteilen oder austauschen, usw.). Auf Grundlage von Unterschieden in den physischen Positionen und Ressourcen in den verwalteten Knoten kann eine bestimmte Arbeitslast unterschiedliche Ressourcennutzungen über die Ressourcen verschiedener verwalteter Knoten hinweg zeigen (z. B. eine unterschiedliche interne Temperatur verursachen, einen unterschiedlichen Prozentsatz von Prozessor- oder Arbeitsspeicherkapazität verwenden). Der Orchestratorserver 1520 kann die Unterschiede auf Grundlage der im hierarchischen Modell gespeicherten Telemetriedaten ermitteln und die Unterschiede in eine Vorhersage von zukünftiger Ressourcennutzung einer Arbeitslast einbeziehen, falls die Arbeitslast von einem verwalteten Knoten einem anderen verwalteten Knoten neu zugewiesen wird, um die Ressourcennutzung im Rechenzentrum 100 genau auszugleichen.
-
Um die Rechenbelastung des Orchestratorservers 1520 und die Datentransferbelastung des Netzwerks zu reduzieren, kann der Orchestratorserver 1520 in einigen Ausführungsformen Selbsttestinformationen an die Einschübe 400 senden, um zu ermöglichen, dass jeder Einschub 400 lokal (z. B. auf dem Einschub 400) ermittelt, ob vom Einschub 400 generierte Telemetriedaten eine oder mehrere Bedingungen erfüllen (z. B. eine verfügbare Kapazität, die einen vordefinierten Schwellwert erfüllt, eine Temperatur, die einen vordefinierten Schwellwert erfüllt, usw.). Jeder Einschub 400 kann dann ein vereinfachtes Ergebnis (z. B. ja oder nein) an den Orchestratorserver 1520 zurückmelden, die der Orchestratorserver 1520 beim Ermitteln der Zuordnung von Ressourcen zu verwalteten Knoten einsetzen kann.
-
Nun auf 16 Bezug nehmend kann eine Rechenvorrichtung 1600 für rasches Booten einen oder mehrere Prozessoren 1602 und ECC-Arbeitsspeicher 1604 enthalten. In Verwendung kann ein BIOS der Rechenvorrichtung 1600 in der veranschaulichenden Ausführungsform verschiedenen Prozessoren 1602 und Kernen der Prozessoren Arbeitsspeicheradressen des ECC-Arbeitsspeichers 1604 zuweisen. Ein Prozessor 1602 oder ein Kern auf einem Prozessor kann dann BIOS-Operationen durchführen, während die anderen Prozessoren 1602 oder anderen Kerne die Arbeitsspeicheradressen des ECC-Arbeitsspeichers 1604 initialisieren können. In einigen Ausführungsformen kann der ECC-Arbeitsspeicher 1604 mit Direktspeicheroperationen initialisiert werden, die den Zwischenspeicher umgehen und eine relativ große Menge an Daten in einer einzigen Anweisung in den ECC-Arbeitsspeicher 1604 schreiben, wie zum Beispiel 64 Bytes. Mit diesem Ansatz kann die Rechenvorrichtung 1600 fähig sein, ein rasches Booten durchzuführen. Wie hierin verwendet bezeichnet Booten den Prozess zum Initialisieren der Rechenvorrichtung 1600 und Vorbereiten darauf, dass eine Steuerung an das Betriebssystem übergeben wird. In einigen Ausführungsformen kann das Booten die gesamte Zeit enthalten, die sich der Prozessor im Realmodus befindet, bis zu dem Zeitpunkt, zu dem der Prozessor in den geschützten Modus wechselt. Ein rasches Booten bezeichnet ein Booten, bei dem der ECC-Arbeitsspeicher 1604 nicht mit jeweils einer Arbeitsspeicherposition zu einem Zeitpunkt durch einen Prozessor initialisiert wird.
-
Die Rechenvorrichtung 1600 kann als ein beliebiger Typ von Rechenvorrichtung ausgebildet sein, die die hierin beschriebenen Funktionen durchführen kann. Beispielsweise kann die Rechenvorrichtung 1600 ohne Einschränkung als ein Servercomputer, ein Desktopcomputer, ein Einschub oder ein Blade eines Racks, ein disaggregiertes Rechensystem wie ein Architektursystem auf Rackskala, ein Smartphone, ein Mobiltelefon, ein tragbarer Computer, ein eingebettetes Rechensystem, ein Ein-Chip-System (SoC), ein Tablet-Computer, ein Notebook-Computer, ein Laptop-Computer, ein Handapparat, eine Nachrichtenübermittlungsvorrichtung, eine Kameravorrichtung, ein Mehrprozessorsystem, ein prozessorbasiertes System, eine Endverbraucher-Elektronikvorrichtung und/oder eine beliebige andere Rechenvorrichtung ausgebildet oder anderweitig in einer bzw. einem solchen enthalten sein.
-
Die veranschaulichende Rechenvorrichtung 1600 enthält den Prozessor 1602, einen ECC-Arbeitsspeicher 1604, ein Eingabe/Ausgabe(E/A)-Subsystem 1606, eine Kommunikationsverschaltung 1608 und einen Datenspeicher 1610. Eine oder mehrere der veranschaulichenden Komponenten der Rechenvorrichtung 1600 können in einigen Ausführungsformen in eine andere Komponente eingebunden sein oder anderweitig einen Teil dieser bilden. Der ECC-Arbeitsspeicher 1604 oder Abschnitte davon können zum Beispiel in einigen Ausführungsformen in den Prozessor 1602 eingebunden sein.
-
Der Prozessor 1602 kann als ein beliebiger Typ von Prozessor ausgebildet sein, der die hierin beschriebenen Funktionen durchführen kann. Der Prozessor 1602 kann als ein Einzel- oder ein Mehrkernprozessor bzw. Einzel- oder Mehrkernprozessoren, ein Einzel-oder Mehrsockelprozessor, ein digitaler Signalprozessor, ein Mikrocontroller oder ein anderer Prozessor oder Verarbeitungs-/Steuerschaltkreis ausgebildet sein. In der veranschaulichenden Ausführungsform enthalten der eine oder die mehreren Prozessoren 1602 jeweils zwei oder mehr Prozessorkerne. Zusätzlich oder alternativ können einige oder alle der Prozessoren 1602 in einigen Ausführungsformen nur einen Kern aufweisen. In Ausführungsformen mit mehr als einem Prozessor 1602 kann ein Prozessor 1602 als der Bootstrap-Prozessor (BSP) designiert sein und die anderen Prozessoren 1602 können als die Anwendungsprozessoren designiert sein. Der Bootstrap-Prozessor kann für das Booten des Systems verantwortlich sein, wie zum Beispiel durch Ausführen eines BIOS. Der Prozessor 1602, der als der Bootstrap-Prozessor designiert ist, kann auf eine beliebige geeignete Weise derart designiert sein, wie zum Beispiel durch eine Position auf einer Leiterplatte, eine Einstellung im Prozessor, eine Einstellung in der Rechenvorrichtung 1600 oder durch dynamische Auswahl nach Einschalten der Rechenvorrichtung 1600.
-
Der ECC-Arbeitsspeicher 1604 kann als ein beliebiger Typ von flüchtigem oder nichtflüchtigem Arbeitsspeicher oder Datenspeicher ausgebildet sin, der fähig ist, die hierin beschriebenen Funktionen durchzuführen. Im Betrieb kann der ECC-Arbeitsspeicher 1604 verschiedene Daten und Software speichern, die während des Betriebs der Rechenvorrichtung 1600 verwendet werden, wie Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der ECC-Arbeitsspeicher 1604 ist über das E/A-Subsystem 1606, das als eine Verschaltung und/oder Komponenten ausgebildet sein kann, um Eingabe/Ausgabe-Operationen mit dem Prozessor 1602, dem ECC-Arbeitsspeicher 1604 und anderen Komponenten der Rechenvorrichtung 1600 zu ermöglichen, kommunikativ an den Prozessor 1602 gekoppelt. Das E/A-Subsystem 1606 kann beispielsweise als Arbeitsspeichersteuerungshubs, Eingabe/Ausgabe-Steuerungshubs, Firmwarevorrichtungen, Kommunikationsverbindungen (d. h. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtleiter, Bahnen auf gedruckten Leiterplatten usw.) und/oder andere Komponenten und Subsysteme ausgebildet sein oder diese anderweitig enthalten, um die Eingabe/Ausgabe-Operationen zu ermöglichen. In einigen Ausführungsformen kann das E/A-Subsystem 1606 einen Abschnitt eines Ein-Chip-Systems (SoC) bilden und zusammen dem Prozessor 1602, dem ECC-Arbeitsspeicher 1604 und anderen Komponenten der Rechenvorrichtung 1600 auf einem einzigen integrierten Schaltkreischip eingebunden sein.
-
In der veranschaulichenden Ausführungsform kann die Rechenvorrichtung 1600 uneinheitlichen Arbeitsspeicherzugriff (NUMA) verwenden. In diesen Ausführungsformen weist jeder Prozessor 1602 ECC-Arbeitsspeicher 1604 auf, der in der Nähe dieses Prozessors 1602 angeordnet ist, direkt durch einen oder mehrere Drähte zu diesem Prozessor 1602 verbunden ist oder anderweitig mit diesem Prozessor 1602 assoziiert ist. Die Latenz von jedem Prozessor 1602 zu seinem lokalen ECC-Arbeitsspeicher 1604 kann geringer als die Latenz von einem Prozessor 1602 zum ECC-Arbeitsspeicher 1604 sein, der lokal zu einem anderen Prozessor 1602 ist. Zusätzlich oder alternativ kann der Durchsatz von jedem Prozessor 1602 zu seinem lokalen ECC-Arbeitsspeicher 1604 kann größer als der Durchsatz von einem Prozessor 1602 zum ECC-Arbeitsspeicher 1604 sein, der lokal zu einem anderen Prozessor 1602 ist. In solchen Ausführungsformen kann die Rechenvorrichtung 1600 ein E/A-Subsystem 1606 einsetzen, das für ein NUMA-System geeignet ist, wie Intel® QuickPath Interconnect (QPI) oder Intel® Ultra Path Interconnect (UPI). In einigen Ausführungsformen kann das E/A-System 106 ein verzeichnisbasiertes Snoop-Kohärenzprotokoll aufweisen.
-
Der ECC-Arbeitsspeicher 1604 kann eine oder mehrere Arbeitsspeichervorrichtungen 214 enthalten. Wie hierin verwendet bezeichnet eine Arbeitsspeichervorrichtung 214 eine diskrete physische Vorrichtung oder Komponente, die einen Teil des Arbeitsspeichers 214 bildet. Eine Arbeitsspeichervorrichtung 214 kann zum Beispiel ein doppelreihiges Arbeitsspeichermodul (DIMM) sein und der ECC-Arbeitsspeicher 1604 kann mehrere DIMMs enthalten. Eine Arbeitsspeichervorrichtung 214 kann sich auch auf einen einzelnen Chip beziehen, wie einen Chip auf einem DIMM. Es sollte klar sein, dass in einigen Ausführungsformen etwas oder alles vom ECC-Arbeitsspeicher 1604 vom Prozessor 1602 disaggregiert sein kann und fähig sein kann, mehr als einen Prozessor 1602 zu unterstützen.
-
Die Kommunikationsverschaltung 1608 kann als ein beliebiger Typ von Schnittstelle ausgebildet sein, die fähig ist, die Rechenvorrichtung 1600 an ein Netzwerk oder andere Rechenvorrichtungen anzukoppeln. Die Kommunikationsverschaltung 1608 kann auch als eine Netzwerkschnittstellensteuerung (NIC) bezeichnet werden oder ausgebildet sein. Die Kommunikationsverschaltung 1608 kann fähig sein, an einen beliebigen angemessenen Kabeltyp anzukoppeln, wie ein elektrisches Kabel oder ein optisches Kabel. Die Kommunikationsverschaltung 1608 kann ausgelegt sein, eine oder mehrere Kommunikationstechnologien und zugehörige Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX, Nahfeldkommunikation (NFC), Omni-Path usw.) zu verwenden. Ferner kann sich die Kommunikationsverschaltung 1608 in einigen Ausführungsformen in einem vom Prozessor 1602 getrennten Gehäuse, in einem Mehrchipgehäuse mit dem Prozessor 1602 oder in einem Ein-Chip-System mit dem Prozessor 1602 befinden.
-
Der Datenspeicher 1610 kann als ein beliebiger Typ von Vorrichtung oder Vorrichtungen ausgebildet sein, die für die kurzfristige oder langfristige Speicherung von Daten ausgelegt ist bzw. sind. Der Datenspeicher 1610 kann zum Beispiel eine beliebige oder mehrere beliebige Arbeitsspeichervorrichtungen und -schaltkreise, Arbeitsspeicherkarten, Festplattenlaufwerke, Festkörperlaufwerke oder andere Datenspeichervorrichtungen enthalten. Der Datenspeicher 1610 kann Firmware und ein BIOS enthalten. In einigen Ausführungsformen kann auf einen Teil oder die Gesamtheit des Datenspeichers 1610 unmittelbar nach Rücksetzen des Prozessors 1602 durch den Prozessor 1602 zugegriffen werden.
-
In einigen Ausführungsformen kann die Rechenvorrichtung 1600 einen Datenstreamingbeschleuniger (DSA) 1612 enthalten. Der DSA 1612 kann als ein beliebiger ASIC, FPGA, integrierter Schaltkreis, funktionaler Block, eine beliebige Hardwarelogik, Auslagerungsengine oder ein beliebiger anderer Hardwarebeschleuniger ausgebildet sein, der bzw. die fähig ist, die hierin beschriebenen Funktionen durchzuführen. Der DSA 1612 kann ausgelegt sein, Arbeitsspeicheroperationen einschließlich Arbeitsspeicherzugriffsoperationen, Arbeitsspeicherkopieroperationen, einer Prüfsummenerstellung oder -verifizierung, einer virtuellen Adressenübersetzung und Seitenfehlerhandhabung oder andere Arbeitsspeicheroperationen zu beschleunigen. Der DSA 1612 kann fähig sein, mehrere Operationen in einer vorbestimmten Reihenfolge oder parallel durchzuführen. Wie weiter unten beschrieben, kann der Prozessor 1602 den DSA 1612 programmieren, eine Initialisierung des ECC-Arbeitsspeichers 1604 durchzuführen. Obwohl in 16 als eine separate Komponente veranschaulicht, die an das E/A-Subsystem 1606 gekoppelt ist, sollte klar sein, dass der DSA 1612 und/oder die vom DSA 1612 bereitgestellte Funktionalität in einigen Ausführungsformen in eine oder mehrere andere Komponenten der Rechenvorrichtung 160 eingebunden sein kann, wie dem E/A-Subsystem 1606, eine Arbeitsspeichersteuerung oder eine andere Komponente.
-
Natürlich kann die Rechenvorrichtung 1600 in einigen Ausführungsformen zusätzliche Komponenten enthalten, die man oft in einer Rechenvorrichtung 1600 findet, wie zum Beispiel eine oder mehrere periphere Vorrichtungen 1614. Die peripheren Vorrichtungen 1614 können eine Anzeige, eine Tastatur, eine Maus, eine Kamera usw. enthalten. Die Anzeige kann als ein beliebiger Typ von Anzeige ausgebildet sein, auf der Informationen einem Benutzer der Rechenvorrichtung 1600 angezeigt werden können, wie eine Flüssigkristallanzeige (LCD), eine lichtemittierende Diodenanzeige (LED-Anzeige), eine Kathodenstrahlröhrenanzeige (CRT-Anzeige), eine Plasmaanzeige, ein Bildprojektor (z. B. 2D oder 3D), ein Laserprojektor, eine Berührungsbildschirmanzeige, eine Blickfeldanzeige und/oder eine andere Anzeigetechnologie.
-
Nun auf 17 Bezug nehmend, richtet die Rechenvorrichtung 1600 in einer veranschaulichenden Ausführungsform eine Umgebung 1700 während des Betriebs ein. Die veranschaulichende Umgebung 1700 enthält ein grundlegendes Eingabe/Ausgabesystem (BIOS) 1702 und ein Betriebssystem 1704. Die verschiedenen Komponenten der Umgebung 1700 können als Hardware, Software, Firmware oder eine Kombination daraus ausgebildet sein. Beispielsweise können die verschiedenen Komponenten der Umgebung 1700 einen Abschnitt des Prozessors 1602, des ECC-Arbeitsspeichers 1604 oder von anderen Hardwarekomponenten der Rechenvorrichtung 1600 bilden oder anderweitig durch diese eingerichtet sein. Als solche können eine oder mehrere der Komponenten der Umgebung 1700 in einigen Ausführungsformen als eine Verschaltung oder eine Sammlung von elektrischen Vorrichtungen ausgebildet sein (z. B. BIOS-Verschaltung 1702, Betriebssystemverschaltung 1704 usw.). Es sollte klar sein, dass in derartigen Ausführungsformen einer oder mehrere der Schaltkreise (z. B. die BIOS-Verschaltung 1702, die Betriebssystemverschaltung 1704 usw.) einen Abschnitt eines oder mehrerer des Prozessors 1602, des ECC-Arbeitsspeichers 1604, des E/A-Subsystems 1606, des Datenspeichers 1608 und/oder anderer Komponenten der Rechenvorrichtung 1600 bilden können. Beispielsweise kann das BIOS 1702 als der Prozessor 1602 und zugehörige, im Datenspeicher 1608 und/oder dem ECC-Arbeitsspeicher 1604 gespeicherte Anweisungen ausgebildet sein, die vom Prozessor 1602 ausgeführt werden können. Zusätzlich können eine oder mehrere der veranschaulichenden Komponenten in einigen Ausführungsformen einen Abschnitt einer anderen Komponente bilden und/oder eine oder mehrere der veranschaulichenden Komponenten können unabhängig voneinander sein. Ferner können eine oder mehrere der Komponenten der Umgebung 1700 in einigen Ausführungsformen als virtualisierte Hardwarekomponenten oder emulierte Architektur ausgebildet sein, die vom Prozessor 1602 oder anderen Komponenten der Rechenvorrichtung 1600 eingerichtet und gepflegt werden können. Es sollte klar sein, dass etwas der Funktionalität einer oder mehrerer der Komponenten der Umgebung 1700 eine Hardwareimplementierung erfordern kann, wobei Ausführungsformen von Komponenten, die eine derartige Funktionalität implementieren, zumindest teilweise als Hardware ausgebildet werden.
-
Das BIOS 1702, das als Hardware (z. B. Verschaltung), Firmware, Software, virtualisierte Hardware, eine emulierte Architektur und/oder eine Kombination daraus wie oben besprochen ausgebildet sein kann, ist ausgelegt, die Rechenvorrichtung 1600 nach dem Einschalten oder Rücksetzen zu initialisieren. Wie hierin verwendet, kann ein BIOS einen beliebigen Satz von Anweisungen bezeichnen, die als Teil des anfänglichen Startprozesses der Rechenvorrichtung 1600 durchzuführen sind. Das BIOS kann z. B. als System-BIOS, schreibgeschütztes Arbeitsspeicher-BIOS (ROM-BIOS), Personalcomputer(PC)-BIOS, eine erweiterbare Firmwareschnittstelle (EFI), eine vereinheitlichte erweiterbare Firmwareschnittstelle (UEFI) usw. ausgebildet sein. In der veranschaulichenden Ausführungsform wird ein kleiner Abschnitt des BIOS in den Prozessor 1602 geladen, und dieser kleine Abschnitt konfiguriert einen Abschnitt des ECC-Arbeitsspeichers 1604 und lädt danach den Rest des BIOS in den ECC-Arbeitsspeicher 1604.
-
Das BIOS 1702 enthält eine ECC-Arbeitsspeicher-Adressenzuweisungseinheit 1706, einen ECC-Arbeitsspeicher-Initialisierer 1708 und einen Vorrichtungs-Initialisierer 1710. Die ECC-Arbeitsspeicher-Adressenzuweisungseinheit 1706 ist ausgelegt, dem einen oder den mehreren Prozessoren 1602 und/oder Kernen des einen oder der mehreren Prozessoren 1602, die zu initialisieren sind, Arbeitsspeicheradressen zuzuweisen. In der veranschaulichenden Ausführungsform mit einem NUMA-System wird jedem Prozessor 1602 und/oder jedem Kern jedes Prozessors 1602 der entsprechende lokale ECC-Arbeitsspeicher 1604 zugewiesen. Es sollte klar sein, dass dem Prozessor 1602 und/oder dem Kern des Prozessors 1602, der die BIOS-Operationen durchführt, in der veranschaulichenden Ausführungsform keine Arbeitsspeicherpositionen zugewiesen werden können, was ermöglicht, dass BIOS-Operationen während der Initialisierung des ECC-Arbeitsspeichers 1604 fortgesetzt werden. In einigen Ausführungsformen kann die Zuweisung von Arbeitsspeicherpositionen vorbestimmt sein. Beispielsweise kann die Rechenvorrichtung 102 so ausgelegt sein, dass jeder Prozessor 1602 den ECC-Arbeitsspeicher 1604, der mit diesem Prozessor 1602 assoziiert ist, ohne irgendeine explizite Zuweisung initialisiert.
-
In einigen Ausführungsformen eines NUMA-Systems können unterschiedliche Prozessoren 1602 unterschiedliche Mengen an ECC-Arbeitsspeicher 1604 aufweisen. In diesen Ausführungsformen kann ein Teil des ECC-Arbeitsspeichers 1604 eines Prozessors 1602 mit einer größeren Menge an ECC-Arbeitsspeicher 1604 einem Prozessor 1602 zugewiesen werden, der eine kleinere Menge von ECC-Arbeitsspeicher 1604 aufweist.
-
Der ECC-Arbeitsspeicher-Initialisierer 1708 ist ausgelegt, den ECC-Arbeitsspeicher 1604 zu initialisieren. In der veranschaulichenden Ausführungsform kann der ECC-Arbeitsspeicher-Initialisierer 1708 die Rechenvorrichtung 1600 auslegen, eine rasche Initialisierung des ECC-Arbeitsspeichers 1604 zu ermöglichen. Beispielsweise kann der ECC-Arbeitsspeicher-Initialisierer 1708 die Rechenvorrichtung 1600 auslegen, Einschränkungen zu deaktivieren, die anderweitig für bestimmte Anweisungen festgelegt werden können, wie AVX-512-Anweisungen. Diese Einschränkungen können z. B. bestimmte Anweisungen während des Bootens nicht erlauben, bevor der Prozessor in einen Benutzermoduszustand wie die aktuelle Privilegierungsstufe (CPL) 3 tritt. Diese Einschränkungen können auch den Prozessor 1602, den ECC-Arbeitsspeicher 1604 und/oder das E/A-Subsystem 1606 während der Ausführung dieser Befehle drosseln. Der ECC-Arbeitsspeicher-Initialisierer 1708 kann auch die Rechenvorrichtung 1600 auslegen, den einen oder die mehreren Prozessoren 1602, den ECC-Arbeitsspeicher 1604 und/oder das E/A-Subsystem 1606 zu betreiben, um mit einer maximalen Taktfrequenz zu arbeiten. Der ECC-Arbeitsspeicher-Initialisierer 1708 kann ferner ein beliebiges Snoop-Kohärenzprotokoll deaktivieren, um die Leistung zu verbessern.
-
Der ECC-Arbeitsspeicher-Initialisierer 1708 kann dann den ECC-Arbeitsspeicher 1604 durch Beschreiben jeder der zugewiesenen Arbeitsspeicheradressen vom entsprechenden zugewiesenen Prozessor 1602 initialisieren. In der veranschaulichenden Ausführungsform kann der ECC-Arbeitsspeicher-Initialisierer 1708 Direktspeicheroperationen verwenden, die alle Zwischenspeicherebenen umgehen und direkt in den ECC-Arbeitsspeicher 1604 schreiben. Die Direktspeicheroperationen können eine relativ große Menge an Daten in einer Anweisung speichern, wie zum Beispiel 64 Bytes (512 Bits). Der ECC-Arbeitsspeicher-Initialisierer 1708 kann zum Beispiel die „MOVDIR64B“-Anweisung eines Intel®-Prozessors verwenden. In einigen Ausführungsformen kann der ECC-Arbeitsspeicher-Initialisierer 1708 eine andere 64-Byte-Direktspeicheroperation oder einen anderen atomaren 64-Byte-Zwischenspeicherleitung-Schreibvorgang ohne Lesevorgang verwenden.
-
Es sollte klar sein, dass in einigen Ausführungsformen einige oder alle der Prozessoren 1602 möglicherweise MOVDIR64B oder eine beliebige ähnliche Operation nicht unterstützen. Um in derartigen Ausführungsformen richtig zu arbeiten, kann der ECC-Arbeitsspeicher-Initialisierer 1708 prüfen, ob der Prozessor 1602 die zu verwendenden Anweisungen unterstützt, wie durch Prüfen der CPU-ID des Prozessors 1602. Falls die zu verwendenden Anweisungen nicht vorhanden sind, kann der ECC-Arbeitsspeicher-Initialisierer 1708 andere Techniken verwenden, um den ECC-Arbeitsspeicher 1604 zu initialisieren, zusätzlich oder anstatt der hierin beschriebenen Techniken, wie zum Beispiel unter Verwendung eines Generatorprüfers für konvergierte Muster (CPGC).
-
Zusätzlich oder alternativ kann der ECC-Arbeitsspeicher-Initialisierer 1708 in einigen Ausführungsformen den Datenstreamingbeschleuniger (DSA) 1612 verwenden, um den ECC-Arbeitsspeicher 1604 zu initialisieren. Der DSA kann parallel zu einem oder mehreren der Prozessoren 1602 arbeiten, die BIOS-Operationen durchführen oder auch den ECC-Arbeitsspeicher 1604 initialisieren können. Es sollte klar sein, dass der DSA in der veranschaulichenden Ausführungsform auf Arbeitsspeicherpositionen zugreifen kann, ohne irgendwelche Zwischenspeicherebenen zu durchlaufen.
-
Der Vorrichtungs-Initialisierer 1710 ist ausgelegt, eine oder mehrere Vorrichtungen der Rechenvorrichtung 1600 während des Bootens zu initialisieren, wie den Datenspeicher 1608, PCIe- und/oder CXL-Vorrichtungen, die Kommunikationsverschaltung 1608 usw. Es sollte klar sein, dass, während der ECC-Arbeitsspeicher-Initialisierer 1708 den Arbeitsspeicher 1604 initialisiert, der Vorrichtungs-Initialisierer 1710 und/oder andere Komponenten des BIOS 1702 einen Prozessor 1602 und/oder einen Kern eines Prozessors 1602 verwenden können, um fortzufahren, BIOS-Operationen durchzuführen.
-
Nachdem der ECC-Arbeitsspeicher 1604 initialisiert ist und andere notwendige Funktionen des BIOS 1702 abgeschlossen sind, kann das BIOS 1702 den Betrieb an das Betriebssystem 1704 übergeben. In einigen Ausführungsformen kann etwas oder die Gesamtheit des BIOS 1702 z. B. im Arbeitsspeicher 1604 während des Betriebs des Betriebssystems 1704 bleiben und auf dieses bzw. diese kann während des Betriebs der Rechenvorrichtung 1600 zugegriffen werden. In anderen Ausführungsformen kann das BIOS 1702 aus dem ECC-Arbeitsspeicher 1604 entfernt werden und kann nicht mehr verwendet werden, bis die Rechenvorrichtung 1600 zurückgesetzt wird. Es sollte klar sein, dass das BIOS eine zusätzliche Funktion ausführen kann, die oben nicht ausdrücklich beschrieben ist, wie Sicherheitsprüfungen, Betreiben einer einfachen Benutzerschnittstelle, Durchführen einer Energieverwaltungsfunktion, Laden des Betriebssystems 1704 usw.
-
Das Betriebssystem 1704 ist ausgelegt, eine Steuerung des Rechensystems 1600 zu empfangen, nachdem der Betrieb des BIOS 1702 abgeschlossen wurde. Das Betriebssystem 1704 kann eine Benutzerschnittstelle bereitstellen, Benutzeranwendungen ausführen, mit anderen Vorrichtungen kommunizieren und anderweitig allgemeine Rechenaufgaben durchführen.
-
Nun auf 18 Bezug nehmend kann die Rechenvorrichtung 1600 ein Verfahren 1800 zum Booten der Rechenvorrichtung 1600 ausführen. Das Verfahren 1800 beginnt bei Block 1802, in dem einige oder alle der Prozessoren 1602 der Rechenvorrichtung 1600 rückgesetzt werden. Die Prozessoren 1602 können z. B. nach Einschalten der Rechenvorrichtung 1600, Drücken einer Rücksetztaste an der Rechenvorrichtung 1600, Neubooten der Rechenvorrichtung 1600, Neukonfigurieren von Hardware oder Software auf der Rechenvorrichtung 1600 und/oder dergleichen rückgesetzt werden.
-
In Block 1804 entdeckt die Rechenvorrichtung 1600 den ECC-Arbeitsspeicher 1604. Die Rechenvorrichtung 1600 kann z. B. einen Abschnitt eines BIOS verwenden, um den ECC-Arbeitsspeicher 1604 zu entdecken.
-
In Block 1806 initialisiert die Rechenvorrichtung 1600 einen Abschnitt des ECC-Arbeitsspeichers 1604. In der veranschaulichenden Ausführungsform initialisiert die Rechenvorrichtung 1600 den Abschnitt des ECC-Arbeitsspeichers mit Direktspeicheroperationen, die einen Zwischenspeicher umgehen, in Block 1808.
-
In Block 1810 lädt die Rechenvorrichtung 1600 das BIOS in den initialisierten Abschnitt des ECC-Arbeitsspeichers 1604. In einigen Ausführungsformen kann die Rechenvorrichtung 1600 den Abschnitt des ECC-Arbeitsspeichers durch Laden des BIOS in diesen Abschnitt des ECC-Arbeitsspeichers 1604 initialisieren.
-
In Block 1812 weist die Rechenvorrichtung 1600 dem einen oder den mehreren Prozessoren 1602 Arbeitsspeicheradressen des ECC-Arbeitsspeichers 1604 zu. In einigen Ausführungsformen kann die Rechenvorrichtung 1600 Arbeitsspeicheradressen jedem von mehreren Kernen auf jedem des einen oder der mehreren Prozessoren 1602 in Block 1814 zuweisen.
-
In der veranschaulichenden Ausführungsform mit einem NUMA-System wird jedem Prozessor 1602 und/oder jedem Kern jedes Prozessors 1602 der entsprechende lokale ECC-Arbeitsspeicher 1604 in Block 1816 zugewiesen. Es sollte klar sein, dass dem Prozessor 1602 und/oder dem Kern des Prozessors 1602, der die BIOS-Operationen durchführt, in der veranschaulichenden Ausführungsform keine Arbeitsspeicherpositionen zugewiesen werden können, was ermöglicht, dass BIOS-Operationen während der Initialisierung des ECC-Arbeitsspeichers 1604 fortgesetzt werden. In einigen Ausführungsformen kann die Zuweisung von Arbeitsspeicherpositionen vorbestimmt sein. Beispielsweise kann die Rechenvorrichtung 102 so ausgelegt sein, dass jeder Prozessor 1602 den ECC-Arbeitsspeicher 1604, der mit diesem Prozessor 1602 assoziiert ist, ohne irgendeine explizite Zuweisung initialisiert. In einigen Ausführungsformen eines NUMA-Systems können unterschiedliche Prozessoren 1602 unterschiedliche Mengen an ECC-Arbeitsspeicher 1604 aufweisen. In diesen Ausführungsformen kann ein Teil des ECC-Arbeitsspeichers 1604 eines Prozessors 1602 mit einer größeren Menge an ECC-Arbeitsspeicher 1604 einem Prozessor 1602 zugewiesen werden, der eine kleinere Menge von ECC-Arbeitsspeicher 1604 aufweist.
-
Nun auf 19 Bezug nehmend kann die Rechenvorrichtung 1600 in Block 1818 sich für eine rasche Arbeitsspeicherinitialisierung selbst konfigurieren. Hierzu kann die Rechenvorrichtung 1600 Einschränkungen in Block 1820 deaktivieren, die anderweitig für bestimmte Anweisungen, wie AVX-512-Anweisungen festgelegt werden können. Diese Einschränkungen können z. B. bestimmte Anweisungen während des Bootens nicht erlauben, bevor der Prozessor in einen Benutzermoduszustand wie die aktuelle Privilegierungsstufe (CPL) 3 tritt. Diese Einschränkungen können auch den Prozessor 1602, den ECC-Arbeitsspeicher 1604 und/oder das E/A-Subsystem 1606 während der Ausführung dieser Befehle auf Grundlage eines Energieverbrauchs drosseln. Das Entfernen dieser Einschränkungen oder Ändern dieser, um eine Ausführung bestimmter Anweisungen, wie einer MOVDIR64B-Anweisung während eines anderen CPL-Zustands, wie CPL-Zustand 0, 1 oder 2, zu ermöglichen, kann eine Initialisierung des ECC-Arbeitsspeichers 1604 mit einer höheren Rate mit weniger oder keiner Drosselung ermöglichen. Es sollte klar sein, dass, auch wenn eine Leistungsgrenze für bestimmte Anweisungen entfernt oder geändert werden kann, eine Gesamtleistungsgrenze der Rechenvorrichtung 1600, der Prozessoren 1602 und/oder des Arbeitsspeichers 1604 weiterhin durchgesetzt werden kann.
-
Die Rechenvorrichtung 1600 kann sich in Block 1822 selbst konfigurieren, den einen oder die mehreren Prozessoren 1602, den ECC-Arbeitsspeicher 1604 und/oder das E/A-Subsystem 1606 zu betreiben, um mit einer maximalen Taktfrequenz zu arbeiten. Der ECC-Arbeitsspeicher-Initialisierer 1708 kann ferner ein beliebiges Snoop-Kohärenzprotokoll deaktivieren, um die Leistung zu verbessern, in Block 1824.
-
Zusätzlich oder alternativ kann sich die Rechenvorrichtung 1600 selbst auf andere Weisen für eine rasche Arbeitsspeicherinitialisierung konfigurieren. Beispielsweise kann die Rechenvorrichtung 1600 in einigen Ausführungsformen spekulative Arbeitsspeicherlasten und/oder Arbeitsspeichervorabrufvorgänge deaktivieren, bis der ECC-Arbeitsspeicher 1604 initialisiert ist. Ein derartiger Ansatz kann einen Zugriff auf nicht initialisierte Positionen des ECC-Arbeitsspeichers 1604 verhindern oder mindern, der anderweitig einen Fehler verursachen könnte.
-
In Block 1826 initialisiert die Rechenvorrichtung 1600 den ECC-Arbeitsspeicher 1604 durch Beschreiben jeder der zugewiesenen Arbeitsspeicheradressen vom entsprechenden zugewiesenen Prozessor 1602. In der veranschaulichenden Ausführungsform kann die Rechenvorrichtung 1600 in Block 1828 Direktspeicheroperationen verwenden, die alle Zwischenspeicherebenen umgehen und direkt in den ECC-Arbeitsspeicher 1604 schreiben. Die Direktspeicheroperationen können eine relativ große Menge an Daten in einer Anweisung speichern, wie zum Beispiel 64 Bytes (512 Bits). Die Rechenvorrichtung 1600 kann zum Beispiel die „MOVDIR64B“-Anweisung eines Intel®-Prozessors verwenden. In Block 1830 kann die Rechenvorrichtung 1600 fortfahren, das BIOS auf einem Prozessor 1600 oder auf einem Kern eines Prozessors 1600 gleichzeitig mit der Initialisierung des ECC-Arbeitsspeichers 1604 zu betreiben.
-
In Block 1832 kann das BIOS die Operation abschließen. Das BIOS kann z. B. Vorrichtungen initialisieren, Vorrichtungstreiber laden, Software wie ein Betriebssystem laden usw. In der veranschaulichenden Ausführungsform kann das BIOS ein Aktivieren von Rundgangs-Scrubbing verzögern, bis eine Initialisierung des ECC-Arbeitsspeichers 1604 abgeschlossen ist. In Block 1834 übergibt das BIOS die Steuerung an ein Betriebssystem, und die Rechenvorrichtung 1600 startet das Betriebssystem.
-
Es sollte klar sein, dass das BIOS in einigen Ausführungsformen die Steuerung vor einem Initialisieren von etwas oder der Gesamtheit des EC-Arbeitsspeichers 1604 an ein Betriebssystem übergeben kann. In derartigen Ausführungsformen kann das BIOS (oder in Ausführungsformen, in denen der DSA 1612 den ECC-Arbeitsspeicher 1604 initialisiert, der DSA 1612) ein Flag setzen, um dem Betriebssystem anzuzeigen, dass etwas oder die Gesamtheit des ECC-Arbeitsspeichers 1604 nicht initialisiert wurde, sowie einen Hinweis darauf bereitzustellen, welche Positionen nicht initialisiert wurden. Falls das BIOS zum Beispiel alle Aufgaben mit Ausnahme einer Initialisierung des ECC-Arbeitsspeichers 1604 abgeschlossen hat, kann das BIOS eine Initialisierung des ECC-Arbeitsspeichers 1604 anhalten und dem Betriebssystem einen Hinweis darauf geben, welche Positionen initialisiert wurden und welche nicht. Natürlich kann das Betriebssystem in derartigen Ausführungsformen dann den ECC-Arbeitsspeicher 1604 auf eine beliebige geeignete Weise initialisieren, wie zum Beispiel unter Verwendung von Aspekten des hierin beschriebenen Ansatzes (z. B. Durchführen von 64-Byte-Direktspeicheroperationen in jedem von mehreren Prozessoren 1602, ein Verzögern einer Aktivierung von Rundgangs-Scrubbing, bis die Initialisierung des ECC-Arbeitsspeichers 1604 abgeschlossen ist, usw.).
-
Es sollte klar sein, dass bestimmte, oben beschriebene Mittel in einigen Ausführungsformen eine bestimmte, oben beschriebene Funktionalität durchführen können. Beispielsweise kann die Rechenvorrichtung 1600 in einigen Ausführungsformen Mittel zum Initialisieren, durch jeden von mehreren Prozessoren, einer unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers enthalten, die dem entsprechenden Prozessor zugewiesen ist. Derartige Mittel können z. B. als einer oder mehrere der Prozessoren 1602 und/oder der DSA 1612 zusammen mit entsprechender Software im Datenspeicher 1610, ECC-Arbeitsspeicher 1604 und/oder anderem Speicher wie schreibgeschütztem Speicher ausgebildet sein. Die Software kann die hierin beschriebenen Algorithmen implementieren, wie die im Verfahren 1800 beschriebenen Algorithmen, einschließlich des Algorithmus zum Initialisieren der ECC-Arbeitsspeicheradressen, der in Block 1826 beschrieben ist.
-
Die Rechenvorrichtung 1600 kann auch Mittel zum Initialisieren eines Abschnitts des ECC-Arbeitsspeichers 1604, Laden zumindest eines Abschnitts eines BIOS in den Abschnitt des ECC-Arbeitsspeichers 1604 nach dem Hochfahren und gleichzeitigem Betreiben des BIOS mit einer Initialisierung anderer Abschnitte des ECC-Arbeitsspeichers 1604 enthalten. Derartige Mittel können z. B. als einer oder mehrere der Prozessoren 1602 und/oder der DSA 1612 zusammen mit entsprechender Software im Datenspeicher 1610, ECC-Arbeitsspeicher 1604 und/oder anderem Speicher wie schreibgeschütztem Speicher ausgebildet sein. Die Software kann die hierin beschriebenen Algorithmen implementieren, wie die im Verfahren 1800 beschriebenen Algorithmen, einschließlich des Algorithmus zum Initialisieren eines Abschnitts des ECC-Arbeitsspeichers 1604, der in Block 1806 beschrieben ist, des Algorithmus zum Laden eines BIOS in den initialisierten Abschnitt des ECC-Arbeitsspeichers 1604, der in Block 1810 beschrieben ist, und des Algorithmus zum gleichzeitigen Betreiben des BIOS mit einer Arbeitsspeicherinitialisierung, wie in Block 1830 beschrieben.
-
BEISPIELE
-
Nachstehend werden veranschaulichende Beispiele der hierin offenbarten Technologien bereitgestellt. Eine Ausführungsform der Technologien kann eine oder mehrere und eine beliebige Kombination der nachfolgend beschriebenen Beispiele enthalten.
-
Beispiel 1 enthält eine Rechenvorrichtung, umfassend eine Vielzahl von Prozessoren; einen Fehlerkorrekturcode(ECC)-Arbeitsspeicher; und ein grundlegendes Eingabe/Ausgabesystem (BIOS), um durch jeden der Vielzahl von Prozessoren eine unterschiedliche Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers zu initialisieren, die dem entsprechenden Prozessor zugewiesen ist.
-
Beispiel 2 enthält den Gegenstand von Beispiel 1 und wobei die Rechenvorrichtung ausgelegt ist, beim Hochstarten zumindest einen Abschnitt des BIOS in einen ersten Abschnitt des ECC-Arbeitsspeichers zu laden.
-
Beispiel 3 enthält den Gegenstand eines der Beispiele 1 und 2 und wobei die Rechenvorrichtung ferner ausgelegt ist, durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor das BIOS gleichzeitig mit der Initialisierung des ECC-Arbeitsspeichers durch die Vielzahl von Prozessoren zu betreiben.
-
Beispiel 4 enthält den Gegenstand eines der Beispiele 1-3 und wobei jeder der Vielzahl von Prozessoren ausgelegt ist, unter einer Leistungsgrenze auf Prozessorebene zu arbeiten, wobei jeder der Vielzahl von Prozessoren ausgelegt ist, ohne eine Leistungsgrenze auf Anweisungsebene zu arbeiten, um eine Operation von MOVDIR64B-Operationen während des Betriebs des BIOS zu drosseln.
-
Beispiel 5 enthält den Gegenstand eines der Beispiele 1-4 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, umfasst, durch einen Kern jedes der Vielzahl von Prozessoren und mit Ausführung von MOVDIR64B-Operationen, die Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, mit einer maximalen Prozessorkernfrequenz während des Betriebs des BIOS zu initialisieren, wobei das BIOS ferner den ECC-Arbeitsspeicher mit einer maximalen Arbeitsspeicherbandbreitenfrequenz gleichzeitig mit einem Betrieb des BIOS und einer Ausführung von MOVDIR64B-Operationen zu betreiben hat.
-
Beispiel 6 enthält den Gegenstand eines der Beispiele 1-5 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, umfasst, durch jeden der Vielzahl von Prozessoren, eine Vielzahl von Direktspeicheroperationen in die Vielzahl von Arbeitsspeicheradressen durchzuführen, die dem entsprechenden Prozessor zugewiesen ist, wobei jede der Vielzahl von Direktspeicheroperationen den entsprechenden Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des entsprechenden Prozessors zu schreiben.
-
Beispiel 7 enthält den Gegenstand eines der Beispiele 1-6 und wobei das BIOS ferner durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor einen Abschnitt des ECC-Arbeitsspeichers unter Verwendung einer oder mehrerer Direktspeicheroperationen zu initialisieren hat, wobei jede der einen oder mehreren Direktspeicheroperationen den ersten Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des ersten Prozessors zu schreiben.
-
Beispiel 8 enthält den Gegenstand eines der Beispiele 1-7 und wobei der ECC-Arbeitsspeicher ein Arbeitsspeicher mit uneinheitlichem Speicherzugriff (NUMA) ist und jeder Prozessor der Vielzahl von Prozessoren einen Abschnitt des ECC-Arbeitsspeichers aufweist, der ein zum entsprechenden Prozessor lokaler Arbeitsspeicher ist, wobei das BIOS ferner jedem der Vielzahl von Prozessoren eine Vielzahl von Arbeitsspeicheradressen zuzuweisen hat, die dem lokalen Arbeitsspeicher des entsprechenden Prozessors entspricht.
-
Beispiel 9 enthält den Gegenstand eines der Beispiele 1-8 und wobei ein oder mehrere Prozessoren der Rechenvorrichtung eine erste Menge an lokalem Arbeitsspeicher aufweisen, die zum entsprechenden Prozessor lokal ist, und ein oder mehrere Prozessoren der Rechenvorrichtung eine zweite Menge an lokalem Arbeitsspeicher aufweisen, die größer als die erste Menge von lokalem Arbeitsspeicher ist und zum entsprechenden Prozessor lokal ist, wobei das BIOS ferner jedem des einen oder der mehreren Prozessoren mit der ersten Menge an lokalem Arbeitsspeicher eine Vielzahl von Arbeitsspeicheradressen von Arbeitsspeicher zuzuweisen hat, die zu dem einen oder den mehreren Prozessoren mit der zweiten Menge an lokalem Arbeitsspeicher lokal ist.
-
Beispiel 10 enthält den Gegenstand eines der Beispiele 1-9 und wobei das BIOS ferner ein Snoop-Kohärenzprotokoll für zumindest einen Abschnitt des ECC-Arbeitsspeichers während der Initialisierung, durch jeden der Vielzahl von Prozessoren, der entsprechenden Vielzahl von Arbeitsspeicheradressen des ECC zu deaktivieren hat.
-
Beispiel 11 enthält ein Verfahren zum Booten einer Rechenvorrichtung, wobei das Verfahren ein Initialisieren, durch jeden von einer Vielzahl von Prozessoren, einer unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers umfasst, die dem entsprechenden Prozessor zugewiesen ist.
-
Beispiel 12 enthält den Gegenstand von Beispiel 11 und enthält ferner ein Laden eines grundlegenden Eingabe/Ausgabesystems (BIOS) in einen ersten Abschnitt des ECC- Arbeitsspeichers.
-
Beispiel 13 enthält den Gegenstand eines der Beispiele 11 und 12 und enthält ferner ein Betreiben, durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor, des BIOS gleichzeitig mit der Initialisierung des ECC-Arbeitsspeichers durch die Vielzahl von Prozessoren.
-
Beispiel 14 enthält den Gegenstand eines der Beispiele 11-13 und wobei jeder der Vielzahl von Prozessoren ausgelegt ist, unter einer Leistungsgrenze auf Prozessorebene zu arbeiten, wobei jeder der Vielzahl von Prozessoren ausgelegt ist, ohne eine Leistungsgrenze auf Anweisungsebene zu arbeiten, um eine Operation von MOVDIR64B-Operationen während des Betriebs des BIOS zu drosseln.
-
Beispiel 15 enthält den Gegenstand eines der Beispiele 11-14 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, ein Initialisieren, durch einen Kern jedes der Vielzahl von Prozessoren und mit Ausführung von MOVDIR64B-Operationen, der Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, mit einer maximalen Prozessorkernfrequenz während des Betriebs des BIOS umfasst, ferner umfassend ein Betreiben des ECC-Arbeitsspeichers mit einer maximalen Arbeitsspeicherbandbreitenfrequenz gleichzeitig mit einem Betrieb des BIOS und einer Ausführung von MOVDIR64B-Operationen.
-
Beispiel 16 enthält den Gegenstand eines der Beispiele 11-15 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, ein Durchführen, durch jeden der Vielzahl von Prozessoren, einer Vielzahl von Direktspeicheroperationen in die Vielzahl von Arbeitsspeicheradressen umfasst, die dem entsprechenden Prozessor zugewiesen ist, wobei jede der Vielzahl von Direktspeicheroperationen den entsprechenden Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des entsprechenden Prozessors zu schreiben.
-
Beispiel 17 enthält den Gegenstand eines der Beispiele 11-16 und enthält ferner ein Initialisieren, durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor, eines ersten Abschnitts des ECC-Arbeitsspeichers der Rechenvorrichtung unter Verwendung einer oder mehrerer Direktspeicheroperationen, wobei jede der einen oder mehreren Direktspeicheroperationen den ersten Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des ersten Prozessors zu schreiben.
-
Beispiel 18 enthält den Gegenstand eines der Beispiele 11-17 und wobei der ECC-Arbeitsspeicher ein Arbeitsspeicher mit uneinheitlichem Speicherzugriff (NUMA) ist und jeder Prozessor der Vielzahl von Prozessoren einen Abschnitt des ECC-Arbeitsspeichers aufweist, der ein zum entsprechenden Prozessor lokaler Arbeitsspeicher ist, wobei das Verfahren ferner ein Zuweisen, zu jedem der Vielzahl von Prozessoren, einer Vielzahl von Arbeitsspeicheradressen umfasst, die dem lokalen Arbeitsspeicher des entsprechenden Prozessors entspricht.
-
Beispiel 19 enthält den Gegenstand eines der Beispiele 11-18 und wobei ein oder mehrere Prozessoren der Rechenvorrichtung eine erste Menge an lokalem Arbeitsspeicher aufweisen, die zum entsprechenden Prozessor lokal ist, und ein oder mehrere Prozessoren der Rechenvorrichtung eine zweite Menge an lokalem Arbeitsspeicher aufweisen, die größer als die erste Menge von lokalem Arbeitsspeicher ist und zum entsprechenden Prozessor lokal ist, wobei das Verfahren ferner ein Zuweisen, zu jedem des einen oder der mehreren Prozessoren mit der ersten Menge an lokalem Arbeitsspeicher, einer Vielzahl von Arbeitsspeicheradressen von Arbeitsspeicher umfasst, die zu dem einen oder den mehreren Prozessoren mit der zweiten Menge an lokalem Arbeitsspeicher lokal ist.
-
Beispiel 20 enthält ein oder mehrere computerlesbare Medien, die eine Vielzahl von darauf gespeicherten Anweisungen umfassen, die bei Ausführung eine Rechenvorrichtung veranlasst, durch jeden der Vielzahl von Prozessoren eine unterschiedliche Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers zu initialisieren, die dem entsprechenden Prozessor zugewiesen ist.
-
Beispiel 21 enthält den Gegenstand von Beispiel 20 und wobei die Vielzahl von Anweisungen ferner die Rechenvorrichtung veranlasst, ein grundlegendes Eingabe/Ausgabesystem (BIOS) in einen ersten Abschnitt des ECC-Arbeitsspeichers zu laden.
-
Beispiel 22 enthält den Gegenstand eines der Beispiele 20 und 21 und wobei die Vielzahl von Anweisungen die Rechenvorrichtung ferner veranlasst, durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor das BIOS gleichzeitig mit der Initialisierung des ECC-Arbeitsspeichers durch die Vielzahl von Prozessoren zu betreiben.
-
Beispiel 23 enthält den Gegenstand eines der Beispiele 20-22 und wobei jeder der Vielzahl von Prozessoren ausgelegt ist, unter einer Leistungsgrenze auf Prozessorebene zu arbeiten, wobei die Vielzahl von Anweisungen die Rechenvorrichtung ferner veranlasst, eine Leistungsgrenze auf Anweisungsebene zu deaktivieren, um eine Operation von MOVDIR64B-Operationen während des Betriebs des BIOS zu drosseln.
-
Beispiel 24 enthält den Gegenstand eines der Beispiele 20-23 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, umfasst, durch einen Kern jedes der Vielzahl von Prozessoren und mit Ausführung von MOVDIR64B-Operationen, die Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, mit einer maximalen Prozessorkernfrequenz während des Betriebs des BIOS zu initialisieren, wobei die Vielzahl von Anweisungen ferner die Rechenvorrichtung veranlasst, den ECC-Arbeitsspeicher mit einer maximalen Arbeitsspeicherbandbreitenfrequenz gleichzeitig mit einem Betrieb des BIOS und einer Ausführung von MOVDIR64B-Operationen zu betreiben.
-
Beispiel 25 enthält den Gegenstand eines der Beispiele 20-24 und wobei das Initialisieren, durch jeden der Vielzahl von Prozessoren, der unterschiedlichen Vielzahl von Arbeitsspeicheradressen des ECC-Arbeitsspeichers, die dem entsprechenden Prozessor zugewiesen ist, umfasst, durch jeden der Vielzahl von Prozessoren, eine Vielzahl von Direktspeicheroperationen in die Vielzahl von Arbeitsspeicheradressen durchzuführen, die dem entsprechenden Prozessor zugewiesen ist, wobei jede der Vielzahl von Direktspeicheroperationen den entsprechenden Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des entsprechenden Prozessors zu schreiben.
-
Beispiel 26 enthält den Gegenstand eines der Beispiele 20-25 und wobei die Vielzahl von Anweisungen die Rechenvorrichtung ferner veranlasst, durch einen von der Vielzahl von Prozessoren verschiedenen ersten Prozessor, einen ersten Abschnitt des ECC-Arbeitsspeichers der Rechenvorrichtung unter Verwendung einer oder mehrerer Direktspeicheroperationen zu initialisieren, wobei jede der einen oder mehreren Direktspeicheroperationen den ersten Prozessor nicht veranlasst, Daten der entsprechenden Direktspeicheroperation in eine Zwischenspeicherhierarchie des ersten Prozessors zu schreiben.
-
Beispiel 27 enthält den Gegenstand eines der Beispiele 20-26 und wobei der ECC-Arbeitsspeicher ein Arbeitsspeicher mit uneinheitlichem Speicherzugriff (NUMA) ist und jeder Prozessor der Vielzahl von Prozessoren einen Abschnitt des ECC-Arbeitsspeichers aufweist, der ein zum entsprechenden Prozessor lokaler Arbeitsspeicher ist, wobei die Vielzahl von Anweisungen ferner die Rechenvorrichtung veranlasst, jedem der Vielzahl von Prozessoren eine Vielzahl von Arbeitsspeicheradressen zuzuweisen, die dem lokalen Arbeitsspeicher des entsprechenden Prozessors entspricht.
-
Beispiel 28 enthält den Gegenstand eines der Beispiele 20-27 und wobei ein oder mehrere Prozessoren der Rechenvorrichtung eine erste Menge an lokalem Arbeitsspeicher aufweisen, die zum entsprechenden Prozessor lokal ist, und ein oder mehrere Prozessoren der Rechenvorrichtung eine zweite Menge an lokalem Arbeitsspeicher aufweisen, die größer als die erste Menge von lokalem Arbeitsspeicher ist und zum entsprechenden Prozessor lokal ist, wobei die Vielzahl von Anweisungen ferner die Rechenvorrichtung veranlasst, jedem des einen oder der mehreren Prozessoren mit der ersten Menge an lokalem Arbeitsspeicher eine Vielzahl von Arbeitsspeicheradressen von Arbeitsspeicher zuzuweisen, die zu dem einen oder den mehreren Prozessoren mit der zweiten Menge an lokalem Arbeitsspeicher lokal ist.