In einem 8-Bit-Mikroprozessor besteht sein Datenbus aus 8 Datenleitungen. In einem 16-Bit-Mikroprozessor besteht sein Datenbus aus 16 Datenleitungen usw.
Warum gibt es weder einen 256-Bit-Mikroprozessor noch einen 512-Bit-Mikroprozessor? Warum erhöhen sie nicht einfach die Anzahl der Datenleitungen und erstellen einen 256-Bit-Mikroprozessor oder einen 512-Bit-Mikroprozessor?
Welches Hindernis verhindert die Erstellung eines 256-Bit-Mikroprozessors oder eines 512-Bit-Mikroprozessors?
microcontroller
microprocessor
architecture
Michael Harris
quelle
quelle
Antworten:
Denk darüber nach. Was genau stellen Sie sich einen "256-Bit" -Prozessor vor? Was macht die Bit-Ness eines Prozessors überhaupt aus?
Ich denke, wenn keine weiteren Qualifikationen vorgenommen werden, bezieht sich die Bit-Ness eines Prozessors auf seine ALU-Breite. Dies ist die Breite der Binärzahl, die in einer einzigen Operation nativ verarbeitet werden kann. Ein "32-Bit" -Prozessor kann daher in einzelnen Befehlen direkt mit Werten arbeiten, die bis zu 32 Bit breit sind. Ihr 256-Bit-Prozessor würde daher eine sehr große ALU enthalten, die 256-Bit-Zahlen in einzelnen Operationen addieren, subtrahieren, ODER-verknüpfen, UND-verknüpfen usw. kann. Warum willst du das? Durch welches Problem lohnt es sich, die große und teure ALU zu haben und zu bezahlen, selbst wenn der Prozessor nur 100 Iterationen einer Schleife und dergleichen zählt?
Der Punkt ist, Sie müssen für die breite ALU bezahlen, ob Sie sie dann häufig oder nur für einen kleinen Teil ihrer Fähigkeiten verwenden. Um eine 256-Bit-ALU zu rechtfertigen, müssten Sie ein ausreichend wichtiges Problem finden, das wirklich von der Manipulation von 256-Bit-Wörtern in einzelnen Anweisungen profitieren kann. Sie können sich wahrscheinlich ein paar Beispiele ausdenken, aber es gibt nicht genug solcher Probleme, die den Herstellern das Gefühl geben, dass sie jemals eine Rendite auf die erheblichen Investitionen erhalten, die für die Herstellung eines solchen Chips erforderlich sind. Wenn es Nischen-, aber wichtige (gut finanzierte) Probleme gibt, die von einer breiten ALU wirklich profitieren können, dann würden wir sehr teure, sehr zielgerichtete Prozessoren für diese Anwendung sehen. Ihr Preis würde jedoch eine breite Verwendung außerhalb der engen Anwendung verhindern, für die sie entworfen wurde. Zum Beispiel, Wenn 256 Bit bestimmte Kryptografieanwendungen für das Militär ermöglichen würden, würden wahrscheinlich spezialisierte 256-Bit-Prozessoren auftauchen, die jeweils 100 bis 1000 Dollar kosten. Sie würden eine davon nicht in einen Toaster, ein Netzteil oder sogar ein Auto stecken.
Ich sollte auch klarstellen, dass die breite ALU nicht nur die ALU verteuert, sondern auch andere Teile des Chips. Eine 256 Bit breite ALU bedeutet auch, dass es 256 Bit breite Datenpfade geben muss. Das allein würde viel Siliziumfläche in Anspruch nehmen. Diese Daten müssen von irgendwoher kommen und irgendwohin gehen, daher müssten Register, Cache, anderer Speicher usw. vorhanden sein, damit die breite ALU effektiv genutzt werden kann.
Ein weiterer Punkt ist, dass Sie mit jedem Breitenprozessor eine beliebige Breitenarithmetik ausführen können. Sie können ein 32-Bit-Speicherwort in ein anderes 32-Bit-Speicherwort in einem PIC 18 in 8-Anweisungen einfügen, während Sie dies in derselben Architektur tun können, die in nur 2 Anweisungen auf 32 Bit skaliert ist. Der Punkt ist, dass eine schmale ALU Sie nicht davon abhält, umfangreiche Berechnungen durchzuführen, sondern dass die umfangreichen Berechnungen länger dauern. Es ist also eine Frage der Geschwindigkeit, nicht der Fähigkeit. Wenn Sie sich das Spektrum der Anwendungen ansehen, für die bestimmte Breitenzahlen erforderlich sind, werden Sie feststellen, dass nur sehr wenige 256-Bit-Wörter benötigen. Die Kosten für die Beschleunigung nur dieser wenigen Anwendungen mit Hardware, die den anderen nicht hilft, lohnen sich nicht und sind keine gute Investition für die Produktentwicklung.
quelle
Nun, ich kenne 256 oder 512 Bit nicht, aber ich habe von einem 1024-Bit-Prozessor gehört (ich kann ihn momentan nicht finden). Das Wort ist VLIW für Very Long Instruction Word . Das ist also der Befehlsbus, nicht die Datenbusbreite. Die Vorteile sind, dass Sie Instruction Level Parallelism (ILP) in großem Umfang implementieren können .
Meine erste Begegnung mit ILP muss vor 20 Jahren mit Motorola-DSPs stattgefunden haben, die Anweisungen zum Durchführen eines MAC (Multiplizieren und Akkumulieren) beim Verschieben von Daten in den und aus dem Speicher enthielten, sodass Sie beim nächsten Befehl ohne Verschwendung einen neuen MAC ausführen können Zeit zwischen zwei MACs zum Verschieben von Daten.
Heute gibt es auch Universalregler, die diese Option anbieten. VLIW wendet dies in einem viel höheren Umfang an.
Da Ihre Datenbusbreite nicht so breit ist, können Sie mehrere Befehle plus Konstanten in einem Befehl haben. Der Grund, warum der Datenbus nicht dem Trend folgt, ist, dass er ziemlich nutzlos ist. Ein 64-Bit-Datenregister kann eine 20-stellige Dezimalzahl darstellen. Wann haben Sie das letzte Mal 20 Stellen Genauigkeit benötigt? Für die meisten Anwendungen gilt 10 = . ∞20 ∞
Lesen Sie weiter
VLIW Architecture
quelle
"Zeuge" eines Mikroprozessors wird üblicherweise in Bezug auf die Größe der Universalregister definiert. Die Größe bestimmt, wie viele Daten ein Prozessor nativ verarbeiten kann und auf wie viel Speicher er zugreifen kann. 64-Bit-Zahlen reichen für fast jeden Algorithmus aus, und die Menge an adressierbarem Speicher (16 Millionen Terabyte) reicht für einige Zeit aus. Es hat einfach keinen Vorteil, die Größe der Allzweckregister zu erhöhen. Auf der anderen Seite skaliert der Bereich der arithmetischen Logikeinheiten (ALU), die zum Ausführen von Operationen an den Registern verwendet werden, mit dem Quadrat der Anzahl von Bits. Eine 256-Bit-ALU wäre 16x größer und deutlich langsamer.
Andererseits ist es sinnvoll, den Prozessor zu verbreitern, um viele kleinere Operationen gleichzeitig ausführen zu können. Die Sandy Bridge- und Ivy Bridge-Prozessoren von Intel bieten genau das. Sie verfügen über 256-Bit-SIMD-Register und können zwei Rechenoperationen und eine Speicheroperation pro Zyklus ausführen. Man könnte sie also 256-Bit- oder sogar 768-Bit-Prozessoren nennen, wenn man ein hinterhältiger Vermarkter wäre, der regelmäßig verwendete Begriffe verbiegen möchte.
quelle
Erstens wird die Bitgröße eines Prozessors normalerweise durch die abstrakte Architektur bestimmt, die für den Maschinensprachenprogrammierer sichtbar ist, und nicht durch Implementierungsdetails wie die Größe des Datenbusses.
Das Motorola 68000 ist beispielsweise ein 32-Bit-Prozessor. Es verfügt über 32-Bit-Datenregister und 32-Bit-Adressregister. In der ersten Version dieser Architekturfamilie sind nur 24 Bit Adressleitungen verfügbar. Darüber hinaus gibt es Varianten, die nur einen 8-Bit-Datenbus haben (daher werden 32-Bit-Speicheroperationen vom Prozessor als Mehrfachzugriffszyklen ausgeführt).
Nun zur Frage, warum nicht zu 256 und 512 wechseln? Prozessoren manipulieren "nativ" mehrere Arten von Datentypen. Daher ist es hilfreich zu prüfen, was 256 oder 512 Bit für jeden dieser Datentypen einzeln bedeuten. Wir haben Ganzzahlen, Zeiger und Gleitkommatypen.
Ganzzahlen: Programme erzielen eine Menge Meilen aus 32- und 64-Bit-Ganzzahlen. Wenn 64 Bit eine Einschränkung darstellen, besteht die Korrektur darin, dass Software-implementierte Bignum-Ganzzahlen vorhanden sind. Hochstufige Sprachen können Integer-Typen implementieren, sodass die Operationen reibungslos zwischen "Fixnums" und "Bignums" wechseln. Natürlich erzielen Sie mit Bignums Leistungseinbußen, aber im Großen und Ganzen müssen Sie berücksichtigen, dass es sich bei wie vielen Operationen in einem Programm um Bignum-Operationen handelt. 256- oder 512-Bit-Nummern machen Bignums nicht überflüssig, sondern erhöhen nur den Headroom, bevor wir auf Bignums umsteigen müssen. Wenn Sie öffentliche 2048-Bit-Schlüssel manipulieren möchten, reichen 512-Bit-Ganzzahlen nicht aus (ein Bignum mit 512-Bit-Ziffern kann jedoch schnell sein).
Zeiger: Breitere Zeiger ermöglichen zwei Dinge: breitere Adressräume und zusätzliche Metadaten, die in einem Zeiger gespeichert sind. Adressräume sind heutzutage virtuell und können daher wachsen, auch wenn die Erinnerungen nicht wachsen. Es wurde vorgeschlagen, dass bei 128-Bit-Zeigern der Adressraum so groß ist, dass Sie alle Benutzerbereichsprozesse eines Betriebssystems und den Kernel an zufälligen Stellen in einem einzigen ungeschützten Bereich ablegen können, was unwahrscheinlich ist kollidieren. Anstatt einfach einen größeren Adressraum zu erstellen, können dickere Zeiger verwendet werden, um Bits zu übertragen, die keine Adressbits sind, wie z. B. Informationen über das Referenzobjekt (Typ, Größe und andere Informationen) oder sicherheitsrelevante Informationen. Es gibt wahrscheinlich eine "optimale Fettigkeit" für diese Art von Dingen, und wenn ich raten würde, würde ich sie immer noch auf 128 Bits begrenzen. Tut es nicht' Es scheint keinen Sinn zu machen, auf 256-Bit-Zeiger zuzugreifen, ganz zu schweigen von 512. Fette Zeiger haben den Nachteil, dass sie alle Datenstrukturen aufblähen, die Zeiger enthalten. Und im Allgemeinen möchten Sie, dass die Zeiger dieselbe Größe haben, andernfalls benötigen Sie Komplikationen in der Befehlssatzarchitektur (wie Speichersegmente), wobei Sie dann vollständige Zeiger (Segmentdeskriptor und Versatz) oder nur lokale Zeiger (Versatz innerhalb eines verstandenen Segments) haben. .
Gleitkommatypen: Mehr Bits in Gleitkommazahlen bedeuten mehr Präzision. Ich würde sagen, dass die Gleitkommatypen am meisten von einer breiteren Darstellung profitieren. Ein 256- oder 512-Bit-Floating-Typ verbessert die Stabilität des numerischen Codes und die Qualität wissenschaftlicher Berechnungen, die viele Iterationen erfordern, und akkumuliert dabei Fehler. Die Genauigkeit in Gleitkommazahlen ist nicht gleichbedeutend mit der Genauigkeit in ganzen Zahlen: Wir können den Gleitkommatyp nicht in Bereiche wie Festkommazahlen oder Grenzkommazahlen unterteilen. Eine höhere Genauigkeit bei Gleitkommazahlen wirkt sich auf die Qualität aller ungenauen Zahlen aus, unabhängig davon, ob sie nahe bei Null liegen oder eine große Größe haben. Mehr Bits in Gleitkommaexponenten können den Bereich der Gleitkommazahlen erheblich erweitern und sind viel schneller als das Hinzufügen von Bits zu einer Bignum-Ganzzahl.
Aus diesen Gründen vermute ich, dass der vorherrschende zukünftige Trend darin bestehen wird, die Breite von Hardware-Gleitkommazahlen zu erhöhen, nicht unbedingt gefolgt von einer Erhöhung der Breite von Zeigern und ganzen Zahlen.
Denken Sie daran, dass Gleitkommazahlen in der Vergangenheit den anderen Typen bereits voraus waren. Zum Beispiel herrschten eine Zeit lang 32-Bit-Prozessoren vor, die 64-Bit-IEEE-Double-Floats unterstützen. Dies liegt daran, dass Sie mit 32-Bit-Zeigern und ganzen Zahlen viel anfangen können, während 32-Bit-Gleitkommazahlen für ernsthafte numerische Arbeiten nur sehr begrenzt zur Verfügung stehen.
Eine sehr, sehr nützliche Funktion, die sich in Gleitkommadarstellungen sehen lässt, wären ein paar Ersatzbits für ein Typ-Tag. Das Implementieren von Gleitkommatypen in dynamischen Hochsprachen (in denen Objekte über einen Typ verfügen, Speicherorte jedoch Werte aller Art enthalten) ist schwierig, da in Zeigern und ganzzahligen Objekten Ersatzbits gefunden werden können, um Teile eines Objekts zu platzieren Das Identifizieren von Typ-Tags ist mit Gleitkommazahlen schwierig. Was häufig passiert, ist, dass Gleitkommazahlen auf Heap zugewiesen werden. Einige Schemata stehlen Bits von der Mantisse, sodass Gleitkommatypen in dieser Sprache im Vergleich zu Gleitkommas in anderen Sprachen auf derselben Maschine an Genauigkeit verlieren.
quelle
Es hilft Ihnen nicht wirklich, etwas Nützliches zu tun. Mit 64-Bit-Zahlen erhalten Sie für fast alle Zwecke eine ausreichende Genauigkeit (Intel-Systeme verfügen jedoch über 80-Bit-Gleitkommazahlen). Die zusätzlichen Leitungen erhöhen jedoch die Kosten und den Stromverbrauch und wirken sich geringfügig negativ auf die Taktrate aus.
In der Vergangenheit verwenden CPUs die Mindestanzahl von Bits, die für den beabsichtigten Zweck sinnvoll ist. Mit den Fortschritten in der Technologie wurden breitere Busse und ALUs möglich, daher die Vergrößerung der Busgröße, um einer breiteren Anwendbarkeit zu dienen:
quelle
Tatsächlich gibt es solche Prozessoren und sie sind abhängig davon, wie Sie die Bitanzahl definieren, üblich. Sie verwenden jetzt mit ziemlicher Sicherheit einen. Wie Olin erklärte, werden 256-Bit-Zahlen nicht häufig verwendet, aber wie steht es mit 4 x 32-Bit-Zahlen? Was wäre, wenn die ALU gleichzeitig 4 Paare von 32-Bit-Zahlen hinzufügen könnte? Solche (mir bekannten) ALUs wurden erstmals in den 1970er Jahren in Vektor-Supercomputern implementiert. Das erste Mal, dass ich einen solchen Computer besaß, war, als ich einen der Intel Pentiums mit MMX hatte.
Erinnerst du dich an die Jungs?
Die MMX-Chips hatten einen SIMD- Befehlssatz (Single Instruction - Multiple Data ), mit dem Sie 1 × 64-Bit-Paare, 2 × 32-Bit-Paare, 4 × 16-Bit-Paare oder 8 × 8-Bit-Paare hinzufügen können.
Aber das ist doch nichts. Eine moderne Grafikkarte verfügt über eine GPU (früher für Graphics Processing Unit, jetzt für General Processing Unit). Dies sind oft breite SIMD-Implementierungen, die in der Lage sind, auf 128 oder 256 Bits gleichzeitig zu verzweigen, zu laden und zu speichern. Intels Larrabee-Prototyp-Mikroarchitektur enthält mehr als zwei 512-Bit-SIMD-Register auf jedem seiner Kerne.
Bitte beachten Sie, dass SIMD nicht mit Multi-Core zu verwechseln ist. Jeder Kern einer CPU hat eine eigene ALU, die eine Reihe von ganzen Zahlen addieren kann.
quelle
Weil wir es noch nicht brauchen.
Normalerweise wird die Bitanzahl (die ich als die Anzahl der Bits in einem Register definieren würde) mehr oder weniger direkt in die Größe des adressierbaren Speichers übersetzt. Dies wird natürlich vereinfacht, da es je nach Prozessor Register geben kann, die die doppelte Bitlänge haben, oder es gibt Techniken, um diese Speicherbeschränkungen zu umgehen (erinnert sich jemand daran, in 16-Bit-Fenstern programmiert zu haben?).
quelle
"Warum erhöhen sie nicht einfach die Anzahl der Datenleitungen und erstellen eine 256-Bit-Version?"
Alle Intel-Prozessoren, die in den LGA-2011-Sockel passen, verfügen tatsächlich über 256 Datenpins, die mit 256 Datenleitungen auf dem Motherboard verbunden sind, die zum DRAM führen. Ich wäre ein wenig überrascht, wenn der neueste Laptop oder Desktop-Computer, den Sie verwendet haben, nicht mindestens 256 Datenleitungen hätte. Darf ich fragen, woher Sie diese falsche Vorstellung haben, dass sie "nicht ... einfach die Anzahl der Datenleitungen erhöhen"?
Das LGA-2011 Socket-Datenblatt , Abschnitt 6.1, gibt an, dass diese CPUs 256 Datenpins und 76 Adresspins (Bankadresse + Speicheradresse) haben.
quelle
weil es keine Anwendung gibt, die Daten mit mehr als 128 Bit gleichzeitig darstellen muss oder kann.
und Sie wissen, Multimedia-Prozessoren und Grafikkarten werden es weit vor den CPU-Mainboards schaffen, nur weil es bei Foto / Video Sinn macht, so große Datenlängen zu verwenden, um auf einmal verarbeitet zu werden.
quelle
Ein Computersystem ist in seiner Bedeutung eine Rechenmaschine, die einige Eingaben erfordert und einige Ausgaben liefert. Wir müssen den Computer in diesen Linien zufriedenstellen, daher kamen die Entwickler zu einem Benchmark mit 3 Bussen, nämlich Adressbus, Datenbus und Steuerbus. 1) Der Adressbus holt / wählt eine bestimmte Adresse im Speicher für Lese- / Schreibvorgänge. 2) Der Datenbus holt dann die vorliegenden Daten zum / vom Prozessor und Speicher für Verarbeitungs- / Speicherzwecke. 3) Der Steuerbus Erstellt ein Schnittstellensteuerungsprotokoll und fordert das System auf, es zu beachten.
Diese werden benötigt, um eine nützliche Berechnung für einen Benutzer / Server / Client durchzuführen. Im Allgemeinen hängt die Leistung (Geschwindigkeit der Aufgabenerfüllung, weniger Störungen usw.) vom Löschen der Flaschenhälse im System ab. Wenn die CPU in der Lage ist, mit einer viel höheren Rate als der Übertragungsgeschwindigkeit von einem Festplattenlaufwerk zu verarbeiten, tritt der Flaschenhals an der Festplatte auf. Ebenso müssen wir eine richtige Verarbeitungsgeschwindigkeit für eine bestimmte Datengeschwindigkeit und Codebreite haben.
Von Anfang an sind aus verschiedenen Gründen, wie z. B. der H / W-Komplexität, den Kosten, den Anforderungen, den effektiven Algorithmen und dem Hauptgrund des Marktumfangs, die Haupthindernisse für die Erzeugung einer hohen Datenbusbreite, wie vom Question Host erwähnt, z 512 bit. Das ist möglich! Die Anforderung ist jedoch noch nicht vorhanden, der Marktumfang ist bei den heutigen Anforderungen und dem Fehlen eines ergänzenden Software-Supports noch nicht ersichtlich.
Ein 256-Bit-Prozessor gibt die Breite des Datenbusses an, die ein bestimmter Prozessor verarbeiten kann, oder die ALU kann in einer einzelnen Ausführung verarbeitet werden. Wir begannen mit 4 Bit, dann mit 8,16,32 und gegenwärtig mit 64 und sogar 128 Bit, die die gegenwärtigen Market Scope-Produkte sind.
Bevor Sie diese Fragen stellen, müssen Sie immer die marktseitige Nachfrage und ihren Umfang sehen. In der Geschichte ist dies der einzige direkte Weg, um die Lebensweisen zu verstehen. Wenn Sie es sich nicht leisten können, wie können Sie es kaufen? und wenn du es nicht kaufen kannst, wie kann der Produzent dann produzieren? und wenn er nicht produzieren kann, dann gibt es keine Existenz für dieses Produkt !!
quelle