Moderne CPUs sind sehr schnell im Vergleich zu allen externen Dingen, einschließlich Arbeitsspeicher (RAM).
Es ist verständlich, da die CPU-Taktfrequenz einen Punkt erreicht hat, an dem ein elektrisches Signal mehrere Taktimpulse benötigt, um von der CPU über den Bus zu den RAM-Chips und zurück zu gelangen.
Dies verkompliziert auch das Leben auf vielen Ebenen: Cache-Hierarchien mit mehreren Ebenen werden erstellt, um Daten näher an die CPU zu liefern, was wiederum eine komplexe Synchronisationslogik im Chip erfordert. Programme müssen cachefreundlich geschrieben werden, um Wartezeiten beim Abrufen von Daten zu vermeiden.
Viele dieser Probleme könnten vermieden werden, wenn sich eine erhebliche Menge RAM direkt auf dem CPU-Chip befände. Es muss nicht exklusiv vereinbart werden: Je nach Klasse können 1 bis 4 GB auf dem Chip gespeichert und zusätzlicher Speicher separat installiert werden.
Ich bin mir sicher, dass es gute Gründe gibt, warum Intel, AMD und dergleichen dies nicht tun. Was sind diese Gründe? Ist es so, dass auf dem Chip kein Platz mehr ist?
Antworten:
Intels Haswell (oder zumindest jene Produkte, die die Iris Pro 5200-GPU enthalten) und IBMs POWER7 und POWER8 enthalten alle eingebetteten DRAM, "eDRAM".
Ein wichtiges Problem, das dazu geführt hat, dass eDRAM bis vor kurzem nicht verbreitet war, ist, dass der DRAM-Herstellungsprozess nicht inhärent mit Logikprozessen kompatibel ist, so dass zusätzliche Schritte eingeschlossen werden müssen (die die Kosten erhöhen und die Ausbeute verringern), wenn eDRAM gewünscht wird. Es muss also einen zwingenden Grund dafür geben, ihn aufnehmen zu wollen, um diesen wirtschaftlichen Nachteil auszugleichen. Alternativ kann der DRAM auf einem separaten Chip platziert werden, der unabhängig von der CPU hergestellt, dann aber in dasselbe Gehäuse integriert wird. Dies bietet die meisten Vorteile der örtlichen Gegebenheiten, ohne die Schwierigkeiten zu haben, die beiden auf wirklich integrierte Weise herzustellen.
Ein weiteres Problem ist, dass DRAM nicht wie SRAM ist, da es seinen Inhalt nicht unbegrenzt speichert, während Strom angelegt wird, und das Lesen zerstört auch die gespeicherten Daten, die anschließend zurückgeschrieben werden müssen. Daher muss es regelmäßig und nach jedem Lesevorgang aktualisiert werden. Und da eine DRAM-Zelle auf einem Kondensator basiert, dauert das Aufladen oder Entladen des Kondensators so lange, bis die nächste Auffrischung einen bestimmten Zeitraum in Anspruch nimmt. Diese Ladezeit ist bei SRAM nicht erforderlich, da es sich lediglich um eine Verriegelung handelt. Folglich kann es mit der gleichen Taktrate wie die CPU getaktet werden, wohingegen der DRAM auf ungefähr 1 GHz begrenzt ist, während ein angemessener Energieverbrauch aufrechterhalten wird. Dies hat zur Folge, dass der DRAM eine höhere inhärente Latenz als der SRAM aufweist, weshalb er nur für die größten Caches verwendet werden sollte, bei denen sich die verringerte Fehlerrate auszahlt.
Auch in Bezug auf die Latenz besteht ein großer Teil der Schwierigkeit darin, dass die physikalischen Abstandssignale übertragen werden müssen. In der Taktperiode einer 3-GHz-CPU kann sich das Licht nur 10 cm bewegen. Natürlich laufen die Signale nicht geradlinig über den Chip und breiten sich auch nicht mit einer Geschwindigkeit aus, die der Lichtgeschwindigkeit nahe kommt, da Pufferung und Fan-Out erforderlich sind, was zu Laufzeitverzögerungen führt. Die maximale Entfernung, die ein Speicher von einer CPU entfernt sein kann, um 1 Takt-Latenzzyklus aufrechtzuerhalten, beträgt daher höchstens einige Zentimeter, wodurch die Menge an Speicher begrenzt wird, die in dem verfügbaren Bereich untergebracht werden kann. Der Nehalem-Prozessor von Intel hat die Kapazität des L2-Caches im Vergleich zu Penryn reduziert, um die Latenz zu verbessern, was zu einer höheren Leistung führte.
Es sollte auch beachtet werden, dass die Cache-Trefferrate für die meisten Workloads sehr hoch ist: in fast allen praktischen Fällen weit über 90% und nicht selten sogar über 99%. Daher beschränkt sich der Vorteil des Einbindens größerer Speicher in den Chip inhärent darauf, die Auswirkung dieser wenigen Prozent der Fehler zu verringern. Prozessoren, die für den Enterprise-Server-Markt vorgesehen sind (wie z. B. POWER), haben normalerweise enorme Caches und können eDRAM rentabel einschließen, da es nützlich ist, die großen Arbeitsmengen vieler Enterprise-Workloads zu berücksichtigen. Haswell muss die GPU unterstützen, da die Texturen groß sind und nicht im Cache gespeichert werden können. Dies sind die Anwendungsfälle für eDRAM heute, keine typischen Desktop- oder HPC-Workloads, die von den typischen Cache-Hierarchien sehr gut bedient werden.
So gehen Sie auf einige in Kommentaren angesprochene Probleme ein:
Diese eDRAM-Caches können nicht anstelle des Hauptspeichers verwendet werden, da sie als L4-Opfer-Caches ausgelegt sind. Dies bedeutet, dass sie flüchtig und effektiv inhaltsadressierbar sind, sodass die darin gespeicherten Daten nicht als an einem bestimmten Ort befindlich behandelt werden und jederzeit verworfen werden können. Diese Eigenschaften lassen sich nur schwer mit der Anforderung vereinbaren, dass RAM direkt zugeordnet und dauerhaft sein muss. Wenn Sie sie jedoch ändern, werden die Caches für den beabsichtigten Zweck unbrauchbar. Es ist natürlich möglich, Speicher konventionellerer Bauart einzubetten, wie dies bei Mikrocontrollern der Fall ist. Dies ist jedoch für Systeme mit großen Speichern nicht gerechtfertigt, da eine geringe Latenz im Hauptspeicher nicht so vorteilhaft ist wie in einem Cache, was zu einer Vergrößerung führt oder das Hinzufügen eines Cache ist eine lohnendere Angelegenheit.
Hinsichtlich der Möglichkeit sehr großer Caches mit einer Kapazität in der Größenordnung von Gigabyte ist es nur erforderlich, dass ein Cache höchstens die Größe des Arbeitssatzes für die Anwendung hat. HPC-Anwendungen können Terabyte-Datasets verarbeiten, haben jedoch eine gute zeitliche und räumliche Lokalität, sodass ihre Arbeitssets in der Regel nicht sehr groß sind. Anwendungen mit großen Arbeitsmengen sind z. B. Datenbanken und ERP-Software, aber es gibt nur einen begrenzten Markt für Prozessoren, die für diese Art von Arbeitslast optimiert sind. Wenn die Software dies nicht wirklich benötigt, führt das Hinzufügen von mehr Cache zu sehr schnell sinkenden Erträgen. Kürzlich haben wir gesehen, dass Prozessoren Prefetch-Anweisungen erhalten, sodass Caches effizienter genutzt werden können: Mit diesen Anweisungen können Fehler vermieden werden, die durch die Unvorhersehbarkeit von Speicherzugriffsmustern und nicht durch die absolute Größe der Arbeitsgruppe verursacht werden.
* Die Verbesserung der Latenz war nicht nur auf die geringere physische Größe des Caches zurückzuführen, sondern auch auf die verringerte Assoziativität. Die gesamte Cache-Hierarchie in Nehalem wurde aus verschiedenen Gründen erheblich geändert, wobei nicht alle auf die Verbesserung der Leistung abzielten. Obwohl dies als Beispiel ausreicht, ist es kein vollständiger Account.
quelle
Die Hauptgründe dafür, dass größerer Speicher (GB DRAM) nicht im CPU-Chip selbst enthalten ist, sind in erster Linie die Kosten. Der Platz auf dem CPU-Chip ist aufgrund des Herstellungsprozesses, der für die Herstellung der sehr kleinen Features erforderlich ist, erheblich teurer. Es ist möglicherweise auch nicht möglich, die beiden auf demselben Werkzeug herzustellen, obwohl ich nicht genug über die Details weiß, um hier eine endgültige Antwort zu geben.
Lassen Sie uns die Machbarkeit prüfen, eine große Menge DRAM direkt auf den CPU-Chip zu setzen.
Zum Vergleich der Skalierung kann ein moderner CPU-Chip ~ 180 mm groß sein (ungefähr die Größe von Intel Haswell-Chips). Ich habe keine genauen Zahlen für die CPU-DRAM-Chipgrößen, aber nehmen wir an, dass 1 GB herkömmlicher DRAM 140 mm (berechnet aus den GPU-DRAM-Größen). In erster Näherung verdoppeln Sie ungefähr die CPU-Chipgröße, was bedeutet, dass sich die Kosten für einen Prozessor mindestens verdoppeln, und wahrscheinlich mehr für 1 GB DRAM auf demselben Chip Holen Sie sich 1 GB DRAM, und ich glaube nicht, dass jemand würde.22 2
Die Idee, Speicher näher an der CPU zu platzieren, geht jedoch nicht vollständig verloren. Dies ist wahrscheinlich, wo sich das Gedächtnis in Zukunft bewegen wird, da die Lichtgeschwindigkeit endlich ist und es nur möglich ist, über eine bestimmte Distanz so schnell zu kommunizieren.
Realistische Techniken zur Annäherung des Arbeitsspeichers an die CPU (beachten Sie, dass diese auch Nachteile gegenüber herkömmlichen Techniken aufweisen):
Stapeln Sie sie auf der CPU selbst. Dies geschieht bereits auf dem Raspberry Pi und ist Teil des Wide I / O-Speicherstandards. Der Speicher ist immer noch ein separater Chip, der in einem separaten Prozess hergestellt wird. Dies hat jedoch das Problem, dass die in der CPU abgeführte Wärme den Speicher passieren muss, bevor sie einen Kühlkörper erreicht. Dies bedeutet, dass es für Hochleistungsprozessoren nicht funktioniert und dass die Hauptanwendung für diese Technologie in mobilen Prozessoren / anderen eingebetteten Anwendungen liegt, in denen Ihre CPU nicht viele Dutzend oder Hunderte von Watt verbraucht.
Kleben Sie sie ganz in der Nähe auf ein kostengünstigeres Substrat. Dies ist, wie HBM entworfen wurde, um mit einem sehr großen Bus zu arbeiten, der auf einem kostengünstigeren "Interposer" -Die hergestellt wird, und ist die Richtung, in die High-End-GPU-Speicher gehen, weil die Bandbreite signifikant höher ist. Die Speicherchips und der Interposer werden immer noch auf unterschiedlichen Chips des eigentlichen Prozessors hergestellt.
quelle
Es gibt mehrere Gründe, warum das Hinzufügen großer Mengen von DRAM zu einer CPU nicht möglich sein könnte.
Der Prozess und die Fab sind möglicherweise nicht für DRAM eingerichtet. DRAM erfordert spezielle Schaltungselemente, deren Herstellung zusätzliche Herstellungsschritte erfordert. Dies erhöht die Herstellungskosten.
All dieser Speicher muss getestet werden. Gedächtnistests verlängern Ihre Testzeit. Das ist eine weitere Kostensteigerung.
Das Vergrößern des Chips selbst ist eine Kostensteigerung, da es weniger Chips pro Wafer bedeutet. Dies wirkt sich auch auf die Ausbeute aus - ein Defekt entfernt einen größeren Teil Ihres Wafers. Ein extremes Beispiel hierfür sind die Kosten für Vollbild-Bildsensoren (35 mm) in Kameras.
Die Entwicklung eines Prozesses, der mit bestimmten Arten von Speicher umgehen kann, kostet mehr Zeit, Geld und Arbeit und birgt ein höheres Ausfallrisiko. Jedes Problem mit dem DRAM würde die Freigabe der CPU verzögern. Desktop-CPUs sind in der Halbleiterfertigung auf dem neuesten Stand, daher kann eine Verzögerung ein großer Wettbewerbsnachteil sein. (Siehe: AMD vs. Intel in den letzten Jahren.)
DRAM erfordert eine analoge Abtastung für Lesevorgänge sowie ein periodisches Auffrischen. Ich bin kein DRAM-Experte, aber ich bezweifle, dass es jemals so schnell sein könnte wie eine High-End-CPU, unabhängig davon, ob es sich um eine Off-Chip- oder eine On-Chip-CPU handelt. Sie werden wahrscheinlich immer noch mit SRAM-Caching stecken.
Selbst wenn Sie die oben genannten Probleme lösen und ein paar Gigabyte DRAM auf einen CPU-Würfel packen können, reicht es nicht aus, einen Desktop-PC, einen Laptop oder einen Server zu betreiben, sodass Sie ohnehin Speicher außerhalb des Chips benötigen .
quelle
Neben den anderen Antworten kann noch mehr über ein solches System gesagt werden. Das Verschieben des Speichers in den Hauptchip würde eine Vielzahl anderer technischer Probleme mit sich bringen. Sie müssten die Busse umleiten, einen DMA-Controller in den Hauptprozessor einbauen, den IRQ-Bus umstrukturieren und festlegen, wie Sie all die zusätzliche Wärme, die Sie in einem konzentrierten Bereich abgeben würden, loswerden. Dies bedeutet, dass sich auch der Motherboard-Hersteller engagieren müsste, um eine so wesentliche Änderung zu unterstützen. Während Low-End-Systeme wahrscheinlich von einer solchen Änderung profitieren würden, würden High-End-Systeme wahrscheinlich eine erhebliche Kühlung erfordern. Ich bezweifle, dass ein durchschnittlicher Laptop zum Beispiel mit einem solchen Chip umgehen kann.
Ein solcher Chip wäre weitaus teurer, obwohl das Mainboard im Preis fallen würde (obwohl wahrscheinlich nicht nennenswert). Wenn Sie die Pakete für einen DMA-Controller und die RAM-Pakete gesehen haben, werden Sie kaum glauben können, dass all diese Logik in einen einzigen Chip gepreßt werden könnte, der nicht wesentlich größer wäre. Denken Sie auch daran, dass CPUs aus großen Wafern mit einer bestimmten Größe geschnitten werden. Dies bedeutet, dass der Hersteller auch weit weniger Prozessoren pro Wafer haben würde, was auch die Gesamtkosten erhöhen würde.
Denken Sie daran, dass es sich nicht um eine Verringerung des Stromverbrauchs im gesamten System handelt, sondern vielmehr um eine noch stärkere Konzentration des Stromverbrauchs (und damit der Wärme) in einem einzelnen Bereich, wodurch sich wahrscheinlich die Wahrscheinlichkeit erhöht Fehler.
Schließlich gibt es hier einen weiteren Nachteil, nämlich die Möglichkeit, kundenspezifische Systeme bereitzustellen. Derzeit können Hersteller Systeme mit identischen Prozessoren und unterschiedlichem Speicher oder mit unterschiedlichen Prozessoren und gleichem Speicher je nach Kundenwunsch ausstatten. Um die Vielzahl unterschiedlicher Konfigurationen anbieten zu können, müssten sie unterschiedliche Matrizen auf unterschiedlichen Montagelinien bauen.
AMD nutzt aktiv Technologien, die auf diese Weise funktionieren. Dabei handelt es sich bei jedem Teil des Prozessorchips um eine diskrete Logikeinheit, die gegen andere Konfigurationen ausgetauscht werden kann. Wenn ein solches Design realisierbar ist, könnten wir in Zukunft CPUs, die In-Chip-Speicher anbieten, als teures Modul-Upgrade sehen, wobei möglicherweise im Gegenzug etwas Rechenleistung ausgetauscht wird oder andere Verbesserungen vorgenommen werden. Zum Beispiel könnten wir eines Tages die Wahl zwischen 256 Kernen ohne eingebauten Speicher oder 128 Kernen mit eingebautem Speicher oder sogar anderen Konfigurationen wie GPU-Teil, CPU-Teil, RAM-Teil haben.
quelle
Fast alle der oben genannten + ein weiteres Problem: die Hitze.
Die DRAM-Zellen sind im wesentlichen undichte Kondensatoren. Und das Dielektrikum ist hier die SiO2-Schicht selbst. Mit steigender Temperatur steigen die Ableitströme proportional an. Diese entladen die DRAM-Zellen viel schneller, was viel schnellere Auffrischungsraten erfordern würde, was die Komplexität erhöhen würde, den Strom erfordern würde und natürlich etwas mehr Wärme hinzufügen würde.
quelle
Neben den bereits gegebenen Antworten gibt es noch einen weiteren Aspekt: Die Verschwendung aufgrund von Produktionsfehlern:
Angenommen, 1/100 aller CPUs eines bestimmten Modells sind fehlerhaft (in Wirklichkeit ist es natürlich weniger; 1/100 ist einfacher zu berechnen) und 1/100 aller hergestellten RAMs sind fehlerhaft.
Wenn beide Komponenten auf einem einzigen Chip kombiniert würden, hätten 1/100 aller Chips eine defekte CPU und 1/100 aller Chips einen defekten RAM.
Das würde bedeuten:
Bei der Herstellung separater Chips wird wie folgt gerechnet:
Beachten Sie, dass ein GB RAM in der Regel in Form einer aus acht Chips bestehenden Bank erstellt wird. Sie müssen also nicht zwei, sondern 9 Komponenten auf einem Chip kombinieren, wenn Sie RAM und CPU auf demselben Chip platzieren möchten. Dies würde zu ungefähr 865 defekten Teilen von 10000 führen, die in dem einfachen obigen Beispiel hergestellt wurden.
Die "IBM Cell" -CPUs hatten genau dieses Problem. Die "Playstation" -Konsole verwendete Chips, die teilweise defekt waren. Die Playstation-Software wurde so geschrieben, dass die defekten Kerne und SRAMs nicht verwendet wurden.
quelle
Es gibt zwei Arten von RAM. Sie sind statischer RAM und dynamischer RAM. Statische Speicher sind sehr schnell, verursachen jedoch höhere Kosten. Währenddessen ist der dynamische RAM im Vergleich zum statischen RAM langsam, im Vergleich zum statischen RAM jedoch kostengünstig.
Cache-Speicher fällt in statischen RAM. Sie können sehen, dass sie in KB- oder MB-Größen geliefert werden. Sie sind schnell. Aber hohe Kosten.
quelle
Zusätzlich zu den anderen genannten Gründen haben viele Systeme mehr als einen CPU-Kern. Zu Zeiten, in denen Informationen, die im Haupt-DRAM gespeichert sind, mit allen zwischengespeicherten Kopien konsistent sind, haben alle Prozessoren, die nicht über die zwischengespeicherten Informationen verfügen, gleichen Zugriff darauf. Einige Architekturen basieren auf der Annahme, dass jeder CPU-Kern einen bestimmten Adressraum "besitzt", und selbst wenn eine CPU auf Speicher zugreifen kann, der anderen Prozessoren gehört, sind solche Zugriffe viel langsamer als Zugriffe auf ihren eigenen Speicher , aber x86 ist in der Regel nicht so implementiert.
Wenn ein System unter der Annahme entworfen wurde, dass Prozessorkerne bestimmte Adressbereiche besitzen und der Code versuchen sollte, die Verwendung der Adressbereiche anderer Prozessoren zu minimieren, wäre es sinnvoll, dass jeder Prozessorcode eine großzügige Menge an On-Chip-Speicher enthält. Ein solches Design könnte die Zeit verringern, die ein Prozessorkern benötigt, um auf seinen eigenen Speicher zuzugreifen, aber es würde wahrscheinlich die Zeit erhöhen, die er benötigt, um auf den Speicher eines anderen Prozessors zuzugreifen. Wenn das System nicht auf eine solche Annahme ausgelegt ist, werden die Daten wahrscheinlich auf die Prozessoren verteilt, ohne dass berücksichtigt wird, wer sie wann benötigt. Selbst wenn die zusätzliche Zeit für den Datenzugriff von einer anderen CPU (im Vergleich zu einem externen Speichersystem) nur halb so lang war wie die Zeit, die bei einem internen Zugriff eingespart wurde,
Wenn man ein System von Grund auf neu entwerfen würde, um es an die heutigen Technologien anzupassen, könnte eine ungleichmäßige Speicherarchitektur mehr kosten als eine, die es allen Prozessoren ermöglicht, effizient auf den gesamten Speicher zuzugreifen. In Anbetracht der heutigen Software-Designs ist ein externes Speichersystem, das von den Prozessoren gemeinsam genutzt wird, effizienter als der Versuch, Massendatenspeicher in den Prozessoren selbst zu haben.
quelle
Während alle vorherigen Antworten richtig sind, um zu verdeutlichen, warum es so schwierig ist, der CPU mehr Speicher hinzuzufügen, ist es auch richtig, dass moderne CPUs ziemlich viel Speicher haben.
Bei Echtzeitoperationen, bei denen deterministische Verzögerungen wichtig sind, ist es nicht ungewöhnlich, den On-Chip-Cache als adressierbaren Speicher für Code und / oder Daten zu verwenden. Der Vorteil ist eine schnelle und konstante Zugriffszeit und der Nachteil ist, dass der On-Chip-Speicher ziemlich begrenzt ist.
quelle
Die Probleme, die Sie in Ihrer ursprünglichen Frage beschrieben haben, könnten nur vermieden werden, wenn der gesamte Arbeitsspeicher des Computers in der CPU enthalten wäre. Jeder zusätzliche Speicher, der dem Computer über Steckplätze auf der Hauptplatine hinzugefügt wird, unterliegt denselben von Ihnen beschriebenen Verzögerungen und erfordert Marshalling- und Logiksteuerungsgeräte zwischen der CPU / dem RAM und dem integrierten RAM.
RAM ist billig und wird in der Regel von Benutzern ein- oder zweimal zwischen dem Aufrüsten ihrer CPUs erweitert.
Denken Sie auch daran, dass ein typischer "Fetch" -Aufruf, selbst wenn der RAM mit CPU-Takt läuft, zu einer Anzahl von Leerlauf-Ticks auf der CPU führt.
Die traditionelle Organisation des Arbeitsspeichers auf einer Maschine ist eine Pyramide mit den CPU-Registern an der Spitze, dann Cache, dann RAM, dann Platte. In der Regel weisen Computer mit guter Leistung eine Kombination aus einer angemessenen Taktrate, einer angemessenen Menge an Cache, einer guten Menge an RAM und einer Hochgeschwindigkeitsfestplatte (oder einem Array) auf. In den letzten Jahren erzielte die Disc-Leistung bei den meisten PCs und Discs mit hoher Drehzahl in der Regel die beste Leistungssteigerung. Discs mit Cache und Solid-State-Discs sorgen für eine gute Leistungssteigerung.
Ja, eine Maschine mit vollem RAM auf dem Chip würde in modernen Anwendungen eine gute Leistung erbringen, aber eine Maschine mit etwas RAM auf dem Chip, auf der ein Standardbetriebssystem ausgeführt wird, würde wahrscheinlich nicht die Leistungssteigerung bieten, die Sie vielleicht glauben würden.
quelle