Wie erhöht das Erhöhen der Anzahl von Transistoren in einem Chip seine Geschwindigkeit?

8

Ist der einzige Zweck von Transistoren in einer CPU, als Schalter zu fungieren, die ihren Befehlssatz definieren? Und wenn ja, warum erhöht dann die Erhöhung der Anzahl der Transistoren die Geschwindigkeit?

Tyler
quelle
Diese Frage wird in dieser Frage zum Austausch von Elektrotechnik-Stapeln ausführlicher beantwortet: electronic.stackexchange.com/questions/5592/… (Es ist nicht klar, ob diese Art von Detail hier angemessen ist.)
Paul A. Clayton

Antworten:

9

Aus dem Kopf:

  • Mehr Cache , schneller als RAM

  • Mehr SIMD-Anweisungen , die schneller verarbeitet werden als Einzeldatenanweisungen

  • Mehr Kerne , sodass Sie zwei oder mehr Dinge gleichzeitig erledigen können

  • Weitere Funktionseinheiten, wie Einbau- FPU s, und mehrere ALU s

  • Pipelines , sodass jeder Kern mehr Dinge gleichzeitig tun kann

  • Bessere Verarbeitungslogik, wie komplexere Verzweigungsvorhersagelogik

Ken
quelle
2

Wenn Sie neugierig auf solche Dinge sind, empfehle ich das Buch The Elements of Computing von Noam Nisan und Shimon Schocken (zumindest in der ersten Hälfte). Nachdem Sie es durchgearbeitet haben, können Sie Ihre eigene Frage detailliert beantworten und die beteiligten Teile genau kennen.

Die Companion-Website enthält einige Beispielkapitel und -notizen. Es ist ein sehr zugängliches Buch. Ich habe es ohne Probleme alleine durchgearbeitet und dann eine brandneue Klasse an meiner Universität besucht, die es als Haupttext verwendete.

Colithium
quelle
2

Die einfache Antwort ist, dass mehr Transistoren den Rest nicht schneller machen , aber anstatt eine Sache pro Zeitraum zu tun, können wir jetzt zwei machen (mit einigen Einschränkungen).

Darth Android
quelle
2

Ken hat bereits einige Gründe in seiner Antwort zusammengefasst . Um das weiter auszubauen

  • Mehr Cache , schneller als RAM

Offensichtlich benötigen größere Caches mehr Transistoren. Mit mehr Transistoren haben wir aber auch die Wahl, schnellere Caches zu verwenden . CPU-Caches sind nur SRAMs, die typischerweise aus 6 Transistoren (AKA 6T SRAM) bestehen. Wenn jedoch genügend Transistoren vorhanden sind, kann es sich lohnen, schnellere, aber größere SRAM-Zellen zu verwenden, die aus mehr als 6 Transistoren bestehen (z. B. 8T, 10T SRAM).

  • Mehr SIMD-Anweisungen , die schneller verarbeitet werden als Einzeldatenanweisungen

Nicht nur SIMD, sondern jede Art von Beschleunigungsanweisung. Beispielsweise verfügen moderne Architekturen häufig über eine AES-Einheit für eine schnellere Verschlüsselung / Entschlüsselung, eine FMA für eine bessere mathematische Berechnung (insbesondere digitale Signalverarbeitung) oder eine Virtualisierung für schnellere virtuelle Maschinen. Wenn Sie mehr Anweisungen unterstützen, sind mehr Ressourcen erforderlich, um sie zu dekodieren und auszuführen

  • Mehr Kerne , sodass Sie zwei oder mehr Dinge gleichzeitig erledigen können
  • Pipelines , sodass jeder Kern mehr Dinge gleichzeitig tun kann

Diese sind ziemlich klar

  • Weitere Funktionseinheiten, wie Einbau- FPU s, und mehrere ALU s

In der Vergangenheit gab es nicht genügend Chipfläche für die FPU, so dass die Leute eine separate kaufen müssen, wenn sie hohe Anforderungen an die Gleitkomma-Arithmetik haben. Mit deutlich mehr Transistoren kann die FPU eingebaut werden, was die Gleitkomma-Mathematik erheblich beschleunigt

Außerdem sind moderne CPUs superskalar und versuchen, mehrere Dinge gleichzeitig zu tun, indem sie unabhängige Datenstücke finden und diese früher berechnen, obwohl der Befehlsstrom linear und seriell ist. Je mehr Dinge sie parallel tun können, desto schneller werden sie. Zu diesem Zweck kann eine CPU mehrere ALUs und eine ALU mehrere Ausführungseinheiten haben. Wenn eine CPU beispielsweise 5 Addierer hat, verglichen mit 4 in der vorherigen Generation, läuft sie in der optimistischsten Situation bereits 25% schneller, ohne dass sich die Uhr ändert. Anspruchsvollere CPUs verwenden sogar eine Ausführung außerhalb der Reihenfolge (was bei den meisten modernen Hochleistungs-CPUs der Fall ist).

  • Bessere Verarbeitungslogik, wie komplexere Verzweigungsvorhersagelogik

Operationen können normalerweise auf verschiedene Arten durchgeführt werden. Wenn Sie mehr Transistoren haben, haben Sie mehr Ressourcen, um eine schnellere Technik zu verwenden. Einige einfache Beispiele:

  • Bitverschiebung:

  • Zusatz:

    • Ein einfacher Addierer wird auch hergestellt, indem Volladdierer in Reihe geschaltet werden . Auf diese Weise benötigt ein N-Bit-Addierer N Takte, um seinen Job zu beenden, was sicherlich nicht das ist, was die Leute von einer CPU erwarten 4-Bit-Addierer
    • Mit mehr Transistoren können wir die Addition beschleunigen, indem wir die Übertragungen mit Carry-Lookahead oder Carry-Save- Addierer vorberechnen . Die Volladdierer werden immer noch verwendet, aber es wird viel mehr Platz für die Übertrag-Vorberechnungseinheit benötigt

Das Gleiche gilt für andere Einheiten wie Multiplikatoren, Teiler, Scheduler ... Zum Beispiel können wir eine Multiplikation mit kombinatorischer Logik extrem schnell in einem einzigen Takt durchführen . Sie können einige einfache Beispiele in der Frage 3-Bit-Multiplikatoren sehen - wie funktionieren sie? . Die benötigten Transistoren wachsen jedoch auf das Quadrat der Eingangsbreiten. Daher verwenden kleine CPUs mit einem Multiplikator stattdessen sequentielle Logik , um viel Platz für den Multiplikator zu sparen:

Ältere Multiplikatorarchitekturen verwendeten einen Shifter und einen Akkumulator, um jedes Teilprodukt, häufig ein Teilprodukt pro Zyklus, zu summieren und die Geschwindigkeit gegen die Chipfläche auszutauschen. Moderne Multiplikatorarchitekturen verwenden den (modifizierten) Baugh-Wooley-Algorithmus, Wallace-Bäume oder Dadda-Multiplikatoren, um die Teilprodukte in einem einzigen Zyklus zu addieren. Die Leistung der Wallace-Baumimplementierung wird manchmal durch eine modifizierte Booth-Codierung eines der beiden Multiplikanden verbessert, wodurch die Anzahl der Teilprodukte verringert wird, die summiert werden müssen

https://en.wikipedia.org/wiki/Binary_multiplier#Implementations

Sobald Sie einen riesigen Pool an Transistoren haben, können Sie sogar kombinatorische Logik verwenden, um eine FMA zu erstellen, die weitaus ressourcenintensiver ist als ein Multiplikator

Moderne Computer können einen dedizierten MAC enthalten, der aus einem in kombinatorischer Logik implementierten Multiplikator, gefolgt von einem Addierer und einem Akkumulatorregister besteht, das das Ergebnis speichert. Der Ausgang des Registers wird zu einem Eingang des Addierers zurückgeführt, so dass bei jedem Taktzyklus der Ausgang des Multiplikators zum Register addiert wird. Kombinationsmultiplikatoren erfordern viel Logik, können jedoch ein Produkt viel schneller berechnen als die für frühere Computer typische Methode zum Verschieben und Hinzufügen.

Multiplizieren-Akkumulieren-Betrieb

phuclv
quelle
1

Das Erhöhen der Anzahl von Transistoren erfolgt normalerweise, indem sie kleiner gemacht werden, wodurch sie näher beieinander liegen, wodurch die Signalausbreitungszeit verringert wird.

pjc50
quelle