Ich habe keine praktischen Kenntnisse über elektronische Schaltungen. Eigentlich bin ich ein hochqualifizierter Softwareprogrammierer und habe gerade erst begonnen, etwas über Computerhardware und Elektronik zu lernen.
Grundsätzlich verstehe ich, dass jedes Gerät seine eigene interne Frequenz hat, aber sie verwenden eine externe Frequenz, um über einen „Bus“ mit anderen Geräten wie der CPU zu kommunizieren.
Und ich weiß, dass das Motherboard auch eine eigene Uhr hat.
Was ich nicht erkennen kann, ist, wie diese Geräte miteinander kommunizieren können, wenn sie unterschiedliche Uhren haben, und wie genau diese Kommunikation abläuft? Was ist ein Taktzyklus und was hat die „Uhr des Mainboards“ damit zu tun? Was passiert, wenn ich eine 1000-MHz-CPU mit einem 1333-MHz-Speicher verwende?
Alle Erklärungen im Internet variieren und sind nicht sehr klar. Ich weiß, wenn ich anfange, Elektrotechnik von Anfang an zu studieren, wird sich das alles automatisch klären, aber jetzt muss ich ein genaues Gefühl dafür haben, wie alles funktioniert.
Es gibt zwei verschiedene Möglichkeiten, wie Chips auf einem Motherboard miteinander kommunizieren: synchrone Kommunikation und asynchrone Kommunikation.
Die meisten Motherboards verfügen über einen Taktgenerator , der ein globales Taktsignal steuert, das den Speicher, die CPU und einige andere Chips synchronisiert. Ein sogenannter „DDR3-1333-Speicher“ soll bis 166,7 MHz arbeiten. Wenn es an ein Motherboard mit einem Speichertakt von 100 MHz angeschlossen ist, läuft dieser Speicher tatsächlich mit 100 MHz und funktioniert gut mit einer CPU mit einem Speichertakt von 100 MHz. (Dieser Speicher hat keinen internen 166,7-MHz-Takt). Wenn jemand die globale Taktfrequenz ändern würde (die meisten modernen Motherboards ermöglichen es einer Person, die Frequenz einfach mit einer BIOS-Einstellung zu ändern), würde der Speicher tatsächlich mit der Frequenz laufen, die der Taktgenerator an den Speicherchip sendet.
Es erinnert mich an einen 130-mph-Autoreifen. Sie fahren nicht immer mit 130 mph. Etwas anderes steuert die tatsächliche Geschwindigkeit, mit der sich der Reifen bewegt, und der Reifen ist so konzipiert, dass er jede von ihm angeforderte Geschwindigkeit bewältigen kann, solange diese Geschwindigkeit nicht mehr als 130 Meilen pro Stunde beträgt.
Aus verschiedenen Gründen laufen viele Geräte auf einem typischen Motherboard mit einer anderen Taktrate als das metronomähnliche globale Taktsignal des Motherboards.
Einige dieser Geräte, wie viele moderne CPUs, haben einen internen Oszillator, der phasenstarr ist , um mit einer bestimmten Frequenz zu oszillieren, die ein festes Verhältnis kleiner Ganzzahlen relativ zum globalen Taktsignal der Hauptplatine ist.
Andere dieser Geräte, wie der Echtzeituhr- Chip, haben ihren eigenen Kristalloszillator, der völlig unabhängig von dem an den Taktgenerator angeschlossenen Kristalloszillator ist. (Das Verhältnis ihrer Frequenzen ist oft keine rationale Zahl und driftet manchmal langsam ab).
Während einige Forscher taktlose CPUs gebaut haben , sind so ziemlich alle kommerziellen CPUs entweder vollständig synchron oder global asynchron lokal synchron (GALS).
Wenn zwei Geräte mit unterschiedlichen Oszillatoren (oder zwei verschiedenen Taktdomänen auf einem GALS-Chip) Daten miteinander übertragen müssen, sind meines Wissens nach die 3 beliebtesten Techniken für das Kreuzen der Taktdomänen :
Nun, im Allgemeinen gibt es eine gewisse Übereinstimmung darüber, mit welcher Frequenz die Schnittstelle betrieben wird, damit zwei Chips miteinander kommunizieren können. In Ihrem Speicherfall würde die Speicherschnittstelle mit 1333 MHz laufen, und während die CPU nur mit 1 GHz läuft, ist die Speicherschnittstelle auf diesem CPU-Chip so ausgelegt, dass sie mit 1333 MHz läuft.
Von da an haben Sie zwei interessante Probleme. Stellen Sie sich vor, die Speicherschnittstelle hätte 1 GHz, die CPU aber nur 100 MHz. Vielleicht benötigt dieses System nur einen langsamen Zugriff auf den Speicher, sodass Sie sein volles Potenzial nicht nutzen. Wenn Sie diese Speicherbandbreite benötigen, könnten Sie einfach einen viel breiteren internen Bus von der CPU zu seinem Speichercontroller bringen. Angenommen, Sie verschieben Daten intern mit 256 Bit, aber der externe Speicherbus ist nur 32 Bit breit. Nur als Beispiel.
Dies wirft dann auch ein weiteres Problem der Cross-Clock-Domäne auf. Wenn Ihre Uhren alle synchrone Vielfache voneinander sind, die aus einer gemeinsamen Quelle stammen, sagen Sie den CPU-Oszillator, ist dies kein Problem. Aber wenn die Uhren stattdessen mit nicht Vielfachen oder auf andere Weise asynchron zueinander laufen, können Sie auf domänenübergreifende Probleme stoßen. Hier müssen Sie die richtigen Techniken anwenden, um sicherzustellen, dass die Daten und Befehle sauber von einer Taktdomäne zur anderen verschoben werden, oder Sie könnten am Ende mit fehlenden oder beschädigten Daten oder Metastabilitätsproblemen enden.
Weitere Informationen dazu finden Sie unter CDC oder Cross-Clock-Domain als Suchbegriff.
Ignacio Vazquez-Abrams