Wie implementiert eine Multi-Core-CPU eine asynchrone Koordination?

8

Ich komme aus der Informatik und möchte Prozessrechnung für die Verwendung im asynchronen Schaltungsdesign studieren .

Ich sehe mich also in der aktuellen Praxis für asynchrone Schaltungen um. Es gibt viele Artikel, die besagen, dass die Unfähigkeit, die Taktrate zu erhöhen, zu einer Multi-Core-CPU-Architektur führt . Keiner sagt jedoch wirklich, wie die asynchrone Koordination zwischen Kernen erreicht wird.

Ich möchte, dass Sie meine folgenden Annahmen darüber bestätigen / korrigieren, wie die aktuelle Mehrkern-CPU mit asynchroner Koordination umgeht:

  1. Jeder Kern hat separate Taktsignale, die nicht miteinander in Phase sein müssen. Andernfalls wäre das Problem der Taktsignalverteilung nicht wirklich gelöst, oder?
  2. Die Kerne koordinieren nur auf Programmebene. Das heißt, Sie müssen einen Speicher (RAM oder Register) testen und einstellen . Und nicht etwas Niedriges wie ein Handschüttelprotokoll mit Rendezvous-Schaltung .
Apiwat Chantawibul
quelle
1
Große Single-Core-CPUs verfügen über mehrere Takte, die zur Leistungsreduzierung verwendet werden. Einige Uhren sind geschlossen, andere werden dynamisch verlangsamt. Fügen Sie einen weiteren Kern hinzu und natürlich hat er mehrere Uhren. Eine einfachere Taktverteilung ist ein Nebeneffekt, aber nicht der Grund, warum es mehrere Uhren gibt.
2
In diesem Artikel
erfahren Sie,
1
(Über die Taktsignalverteilung: Ein Pufferbaum, in dem alle Blattknoten die gleiche Laufzeit von der Quelle haben, ist die Lösung. Sie können dies algorithmisch erstellen. Es ist nicht trivial, aber es funktioniert)
pjc50
1
Es gibt viele Nachteile von Pufferbäumen: Sie können einen Großteil der Energie und 10 bis 30% der verfügbaren Fläche verbrauchen. Wie unser Startup festgestellt hat, besteht das Hauptproblem beim asynchronen Design darin, die gesamte Software-Toolchain zu ändern , um sie effektiv nutzen zu können. IC-Unternehmen sind aufgrund der Herstellungskosten und des Ausfallrisikos überraschend konservativ.
pjc50
1
@ pjc50 ISTR, dass ein Prozessor mit Grid-Layout und Nachrichtenübermittlung (möglicherweise Tilera?) den Taktfluss von links nach rechts und von unten nach oben hatte, da nur die nächsten Nachbarn direkt kommunizieren mussten (Art von a Vielzahl von global asynchronen lokal synchronen).
Paul A. Clayton

Antworten:

1

Sie mischen zwei unabhängige (orthogonale) Ideen in der Theorie digitaler Schaltungen: asynchrone Schaltungen und Mehrkernprozessoren.

Asynchrone Schaltungen: Schaltungen, die mehr als einen Takt haben, und die Takte sind asynchron (dh sie haben eine nicht konstante und unvorhersehbare Phasenbeziehung).

Einige Schaltungen verwenden möglicherweise zwei Takte (zum Beispiel), aber eine ist nur eine Division durch 2 der anderen. Diese Schaltungen sind nicht asynchron, da eine Phasenbeziehung zwischen den beiden Takten bekannt ist, obwohl die Frequenzen der Takte unterschiedlich sind.

Möglicherweise haben Sie eine Single-Core-CPU mit wenigen asynchronen Takten und eine Multi-Core-CPU, bei der alle Kerne auf demselben Takt laufen (letzterer ist nur eine imaginäre CPU - alle echten Multi-Core-CPUs haben viele Takte, die aus mehreren Takten bestehen. asynchrone Taktsätze).

Asynchrone Schaltungen sind ein Hauptthema im digitalen Design. Die obige Erklärung ist grundlegend.

Multi-Core-CPUs: wenige parallel geschaltete Mikroprozessoren (Kerne), die hochentwickelte Hardware und Software verwenden, um eine hohe Leistung zu erzielen.

Die übliche Praxis besteht darin, die Kerne in Bezug auf Uhren / Leistung / Ausführung / etc. So unabhängig wie möglich zu machen. Dies ermöglicht eine dynamische (zur Laufzeit) Anpassung der CPU-Aktivität (dh des Stromverbrauchs) an die tatsächlichen Anforderungen des Systems.

Mein Eindruck ist, dass Sie nach einer Erklärung für Mehrkern-CPUs suchen , nicht für asynchrone Schaltungen.

Dieses Thema ist viel, viel größer als alles, was man in die Antwort einfügen kann.

Die Antworten auf Ihre Fragen:

  1. Die Uhren, die von verschiedenen Kernen verwendet werden (nach meinem besten Wissen), haben dieselben Quellen (können mehrere sein: Kristall, VCO, ...). Jeder Kern hat (normalerweise) wenige gegenseitig asynchrone Taktsätze. Jeder Kern verfügt über eine spezielle Taktsteuerung und Drosselungslogik, mit der der Takt unabhängig für jeden Kern ausgeschaltet oder verlangsamt werden kann. Wenn Sie sich nur für den algorithmischen Aspekt der Parallelität von Kernen interessieren, vergessen Sie (vorerst) die Uhren.
  2. Sie haben gerade den Hauptaspekt der Kerne Parallelität angegeben - wie Sie mehrere Kerne parallel laufen effizient . Dieses Thema ist riesig und enthält sowohl HW- als auch SW-Lösungen. Aus HW-Sicht modifizieren Kerne sowohl einen gemeinsamen Speicher als auch tauschen Steuer- und Statussignale mit Sequenzierungslogik und untereinander aus. Das Bild wird aufgrund des Vorhandenseins von Caches sehr kompliziert. Ich würde vorschlagen, dass Sie zunächst die Caches lesen, dann die Cache-Kohärenz und erst dann die Einzahlungen in Systeme mit mehreren Kernen.

Hoffe das hilft.

Vasiliy
quelle
Die Tatsache, dass CPUs mit unterschiedlicher Geschwindigkeit laufen müssen, bedeutet nicht, dass sie asynchron sein müssen. Es ist äußerst nützlich, um jede Uhr ein Fenster zu haben, in dem sich die Signale garantiert nicht ändern. Selbst wenn zwei Module Taktraten haben, die kein Vielfaches voneinander sind, kann es nützlich sein, beide von einem Gerät erzeugen zu lassen, das sicherstellt, dass sie niemals zu nahe beieinander schalten.
Supercat