Wie kommunizieren Geräte mit unterschiedlicher externer Uhr auf einem Motherboard miteinander?

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.

Durch die Verwendung synchroner Protokolle.

Antworten (2)

Es gibt zwei verschiedene Möglichkeiten, wie Chips auf einem Motherboard miteinander kommunizieren: synchrone Kommunikation und asynchrone Kommunikation.

Synchrone 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.

Asynchrone Kommunikation

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 :

  • Die Datenquelle sendet einen metronomähnlichen "Bustakt", der weniger als die Hälfte der vom Ziel verwendeten Taktrate beträgt (entweder der tatsächliche Takt der Datenquelle, wenn er langsam genug ist, oder ein langsameres Signal, das von der Uhr abgeleitet wird). der Datenquelle), die dem Ziel mitteilt, wann die Daten auf den Datenleitungen abgerufen werden sollen. Das Ziel registriert den "Bustakt" und die Datenleitungen und übernimmt die neuen Daten bei der vereinbarten Flanke des Taktsignals. Die Datenquelle hält die Datenleitungen vor und nach dieser "Takt"-Flanke konstant, lange genug, dass die korrekten Daten unabhängig von der relativen Taktrate der Quelle und des Ziels zwischengespeichert werden.
  • Die Datenquelle verwendet Gray-Code für Daten, die zwischen Taktdomänen übertragen werden, sodass das Ziel unabhängig davon, wann das Ziel die Daten erfasst (kurz vor, während oder kurz nach einer Änderung), gültige Daten sieht.
  • Die Datenquelle verwendet ein asynchrones Kommunikationsprotokoll , das im Allgemeinen Daten auf einige Leitungen setzt und dann eine Leitung setzt, die anzeigt, dass die Daten bereit sind. Die Datenquelle hält diese Datenleitungen konstant, bis sie ein Signal vom Empfänger empfängt, das anzeigt, dass der Empfänger diese Daten empfangen hat und für die nächsten bereit ist.
2022 Nitpick: Die meisten CPUs haben heutzutage einen internen 100-MHz-Taktgenerator. So billige/beliebte ($100) Motherboards haben kein Clockgen. Teurere (250 US-Dollar) Motherboards verfügen über einen externen Clockgen, der eine Feinsteuerung beim Übertakten ermöglicht.

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.

Was ist die Motherboard-Uhr?
@ropbla9 Normalerweise gibt es auf einem PC-Motherboard eine Master-Oszillatorschaltung, von der fast jedes andere benötigte Taktsignal abgeleitet wird (am häufigsten mit digitaler Frequenzteilung).
@LorenzoDonati, was ist also ein Taktzyklus?
Google: In einem Computer ist der Taktzyklus die Zeit zwischen zwei benachbarten Impulsen des Oszillators, der das Tempo des Computerprozessors bestimmt.
@ ropbla9 Hinzufügen zu dem, was SomeHWGuy gesagt hat. Ein Taktsignal ist normalerweise ein zweistufiges periodisches Signal (eine Rechteckwelle). Eine Periode dieses Signals wird auch als Taktzyklus bezeichnet .