Sind CPU-Takt-Ticks streng periodisch?


51

Ist die Frequenz einer CPU ein Mittelwert für die Anzahl der Taktimpulse in einer Sekunde oder weist sie eine stärkere physikalische Stabilität auf?

Meiner Meinung nach darf es weder stabil noch instabil sein. Gibt es also Informationen zur Varianz einer CPU?

Ist die Zyklusdauer einer CPU genau auf die Kristallschwingung abgestimmt? Oder muss die CPU nur sicher sein, einen Zyklus vor dem nächsten Tick zu erreichen?


7
Es gibt viele verschiedene CPU-Typen. Die meisten verwenden einen Kristall, der mit einer bestimmten Frequenz schwingt, um selbst Zeit zu gewinnen. Das heißt, die meisten sind ungefähr so ​​genau wie eine digitale Armbanduhr (die dieselbe Art von Kristall verwendet, um die Zeit zu messen). en.wikipedia.org/wiki/Crystal_oscillator
krowe

5
@Gael einige Anweisungen Hunderte von Zecken übernehmen, oder Taktzyklen , zu vervollständigen.
Mischa256

1
@Gael: Außerdem verlangsamen oder beschleunigen sich CPUs häufig, und das tun sie auch ziemlich oft. Obwohl ich nicht genau weiß, wie das mit Zecken zusammenhängt.
Mooing Duck

18
Stimmen Sie ab, wenn Sie Produkt-, Dienstleistungs- oder Lernmaterialempfehlungen suchen ? Wirklich Leute?
ein Lebenslauf vom

30
Dies ist eine berechtigte Frage, um zu klären, wie Hardware funktioniert.
studiohack

Antworten:


49

Wie bei jeder komplizierten Sache können Sie die Funktionsweise einer CPU auf verschiedenen Ebenen beschreiben.

Auf der grundlegendsten Ebene wird eine CPU von einem genauen Takt gesteuert. Die Frequenz der Uhr kann sich ändern. Denken Sie an Intels SpeedStep. Aber zu allen Zeiten die CPU ist absolut 100% gesperrt auf das Taktsignal.

CPU-Befehle arbeiten auf einer viel höheren Ebene. Eine einzelne Anweisung ist eine komplexe Sache und kann von weniger als einem Zyklus bis zu Tausenden von Zyklen dauern , wie hier auf Wikipedia erläutert .

Ein Befehl wird also im Grunde eine gewisse Anzahl von Taktzyklen verbrauchen . In modernen CPUs ist aufgrund von Technologien wie Mehrkern, HyperThreading, Pipelining, Caching, nicht ordnungsgemäßer und spekulativer Ausführung die genaue Anzahl der Taktzyklen für einen einzelnen Befehl nicht garantiert und variiert bei jeder Ausgabe eines solchen Befehls !

BEARBEITEN

Gibt es Informationen zur Varianz für eine bestimmte CPU?

Ja und nein. 99,99% der Endbenutzer sind an der Gesamtleistung interessiert , die durch Ausführen verschiedener Benchmarks quantifiziert werden kann.

Was Sie verlangen, sind hochtechnische Informationen. Intel veröffentlicht keine vollständigen oder genauen Informationen über die Latenz / den Durchsatz von CPU-Anweisungen .

Es gibt Forscher, die es auf sich genommen haben, dies herauszufinden. Hier sind zwei PDFs, die von Interesse sein könnten:

Leider ist es schwierig, Abweichungsdaten zu erhalten . Zitat aus dem ersten PDF:

Die angegebenen Zahlen sind Mindestwerte. Cache-Fehler, Fehlausrichtungen und Ausnahmen können die Taktanzahl erheblich erhöhen.

Trotzdem eine interessante Lektüre!


1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Sathyajith Bhat

4
Sehr schön. But at all times the CPU is absolutely 100% locked to the clock signalGilt natürlich nur für synchrone CPUs. Es ist albern, über Ticks in einer asynchronen (
taktlosen

1
@Luaan - Stimmt. Ich denke, dass echte asynchrone CPUs noch ziemlich selten sind, aber sie existieren (oder haben in der Vergangenheit). Nur wirklich relevant für Forscher und Hardware-Freaks.
Daniel R Hicks

@DanielRHicks Sie waren für eingebettete Geräte von Interesse (es gibt einige alte asynchrone MIPS- und ARM-CPUs), aber ja, das ist nicht wirklich die große Sache auf dem Verbrauchermarkt. Warum sollte man sich immerhin um den CPU-Stromverbrauch eines Smartphones kümmern, wenn sich das stromhungrige Display direkt daneben befindet? Die Energieeinsparung (und andere Funktionen) können jedoch für einige andere Anwendungen sehr cool sein - IBM SyNAPSE sieht aus wie ein cooles Projekt für wissenschaftliche Zwecke.
Luaan,

@Luaan - Der interessante Punkt, als sie zum ersten Mal erfunden wurden, war, dass der Computer genau so schnell / langsam lief, wie es für die Durchführung der Berechnung erforderlich war. Aufwändigere Taktschemata erreichten jedoch im Grunde dasselbe, sorta.
Daniel R Hicks

29

Sind CPU-Takt-Ticks von Natur aus streng periodisch?

Natürlich nicht. Sogar die allerbesten Uhren sind nicht streng periodisch. Die Gesetze der Thermodynamik sagen etwas anderes:

  • Zeroth-Gesetz: Es gibt ein böses kleines Spiel, das das Universum für Sie spielt.
  • Erstes Gesetz: Sie können nicht gewinnen.
  • Zweites Gesetz: Aber Sie könnten an einem sehr kalten Tag die Gewinnschwelle überschreiten.
  • Drittes Gesetz: So kalt wird es nie.

Die Entwickler der allerbesten Uhren sind sehr bemüht, die Gesetze der Thermodynamik zu überwinden. Sie können nicht gewinnen, aber sie sind fast ausgeglichen. Die Uhr auf Ihrer CPU? Es ist Müll im Vergleich zu diesen besten Atomuhren. Aus diesem Grund gibt es das Network Time Protocol .


Vorhersage: Wir werden wieder ein bisschen Chaos erleben, wenn die besten Atomuhren der Welt vom 30. Juni 2015 um 23:59:59 UTC bis zum 30. Juni 2015 um 23:59:60 UTC bis zum 1. Juli 2015 um 00:00:00 Uhr laufen KOORDINIERTE WELTZEIT. Zu viele Systeme erkennen keine Schaltsekunden und haben eine Sicherheitsstufe von zwei (was eine Zeitänderung von mehr als einer Sekunde verhindert). Der Clock-Jitter in diesen Systemen bedeutet, dass die Schaltsekunde des Network Time Protocol abgelehnt wird. Eine Reihe von Computern wird aus dem Ruder laufen, so wie sie es 2012 getan haben.


9
+1, lustig und informativ. Und auch das Thema Leap Second ist eine gute Lektüre.
Jimmy-Cl

9
Nun, IIRC, der Go-Bauch-up wa verursacht , da die Kernel - Uhr - Routinen waren bewusst von der Möglichkeit der Schaltsekunden, aber implementiert , um die Einstellung als Aufruf zu einer Takteinstellungsroutine , die nicht erlaubt war , genannt zu werden , während die Uhr bereits war wird angepasst ... Und natürlich hat die Systemuhr nichts mit der CPU-Uhr zu tun.
Hagen von Eitzen

1
Lol, großartig. Ich muss etwas zu Ihrer Beobachtung "CPU-Uhr ist Müll im Vergleich zu Atomuhren" hinzufügen : In der Tat! Aber es ist alles sehr subjektiv, von Verwandten ganz zu schweigen. Wir können die überlegene Genauigkeit unserer besten Atomuhren bewundern, aber irgendwo da draußen (außerhalb unserer gemütlichen Realität) gibt es Technologien, die unsere Atomuhren wie "Müll" aussehen lassen :-p
misha256

2
@misha256 die realität ist da kann keine genaue uhr sein. Die Zeit ist relativ.
Keltari,

Die CPU-Uhr kann Müll sein, aber es gibt nichts Schöneres, als ein 8-Bit-Register überlaufen zu lassen, um dem 7-Segment-Anzeigetreiber in einem unbekannten Zustand etwas Zeit zu geben, um Ihre Anweisung zu zerlegen, bevor Sie die nächste ausgeben. Wir brauchen dafür keine Kristalle. Noch wichtiger ist, dass Sie nicht eine Nanosekunde warten müssen, bis die ALU ihre Berechnung abgeschlossen hat, bevor Sie ihre Ergebnisse in einem Register (oder auf einem Bus, der zu einer anderen ALU führt) ablegen.
John Dvorak

22

Um das Jahr 2000, als die Taktraten von CPUs in den Bereich kamen, in dem auch Mobiltelefone betrieben wurden, wurde es üblich, eine Variation der tatsächlichen Taktrate hinzuzufügen. Der Grund ist einfach: Wenn der CPU-Takt genau 900 MHz beträgt, werden alle elektronischen Interferenzen mit dieser Frequenz erzeugt. Verändern Sie die Taktfrequenz ein wenig zwischen 895 und 905 MHz, und die Interferenz wird ebenfalls über diesen Bereich verteilt.

Dies war möglich, weil moderne CPUs hitzebeschränkt sind. Sie haben kein Problem damit, für kurze Zeit etwas schneller zu laufen, da sie sich abkühlen können, wenn die Uhr später verlangsamt wird.


13
Im BIOS wird diese Option häufig als "Spread Spectrum"
Mark Sowul

1
Ich habe gelesen, dass in Mehrkern-CPUs die Kerne auch versetzte Taktgeber verwenden, da dies zur Vermeidung von Funkstörungen, zur Verbesserung der Energieverteilung und zur Vermeidung von Oberschwingungen beim Aufbau der Kerne beiträgt.
Zan Lynx

3
@MarkSowul danke, endlich erzählt jemand die praktische Verwendung dieses "Spread Spectrum".

22

Digital Logic Designer hier. Die tatsächliche Zeit, die ein Logiknetzwerk benötigt, um sich als Reaktion auf ein Eingangssignal zu ändern, ist die Ausbreitungsverzögerung . Stellen Sie sich das System vor als:

registers A,B,C... ---> logic cloud ---> registers A',B',C'

Die "Startuhr" ist die Taktflanke, zu der sich der erste Registersatz ändert. Die "Erfassungstakt" ist die nächste Taktflanke eine Periode später. Damit das System funktioniert, muss die Ausgabe der Logikwolke stabil sein, bevor der Erfassungstakt eintrifft.

Der Prozess, um sicherzustellen, dass dies funktioniert, ist die Timing-Analyse. Ermitteln Sie mithilfe einer physikbasierten Simulation des Systems die ungünstigste Ankunftszeit aller Eingaben für alle Ausgaben. Die größte dieser Zahlen im System legt die minimale Taktperiode fest.

Beachten Sie den schlimmsten Fall . Die tatsächliche Ausbreitungszeit ist kürzer, hängt jedoch von den Schwankungen des Herstellungsprozesses, der aktuellen Temperatur und der Chipspannung ( PVT ) ab. In der Praxis bedeutet dies, dass Sie eine schnellere Taktung anwenden können (Übertakten) und dies möglicherweise funktioniert. Es kann auch anfangen, Fehler zu produzieren, wie zum Beispiel zu entscheiden, 0x1fffffff + 1 = 0x1f000000ob das Übertragsbit nicht rechtzeitig ankommt.

Chips können auch mehr als einen Takt an Bord haben (normalerweise ist der FSB langsamer als der Kern), und der tatsächliche Takt kann zu Zwecken der Wärmesteuerung hoch- oder heruntergefahren oder variiert werden (MSalters Antwort zur Verwendung des Streuspektrums zum Bestehen von EMV-Tests).


In einigen Fällen kann der Erfassungstakt der zweite oder spätere Zyklus sein und nicht der nächste. Einige Designs gehen davon aus, dass die Daten immer mindestens eine bestimmte Mindestzeit benötigen (z. B. wenn bekannt ist, dass die Ausbreitungsverzögerung zwischen 2,1 und 2,9 Zyklen liegt, könnten Daten ausgegeben und Ergebnisse in jedem Zyklus abgetastet werden; jedes abgetastete Ergebnis würde die Daten von 3 widerspiegeln Zyklen vorher); Bei anderen konservativeren Designs werden die Ausgabedaten langsamer geändert und das Ergebnis ignoriert, bis die Stabilität garantiert ist.
Supercat

2

Ist die Befehlsdauer einer CPU genau auf die Kristallschwingung abgestimmt? Oder muss die CPU nur sicher sein, vor dem nächsten Tick eine Anweisung zu erhalten?

Weder. Die Anweisungsdauer wird eine Anzahl von Takten sein, aber diese Anzahl kann basierend auf den Anforderungen der Anweisung variieren. Wenn zum Beispiel ein Befehl keinen Vorwärtsfortschritt machen kann, bis sich ein bestimmter Speicherplatz im L1-Cache befindet, wird der Befehl nicht vor dem nächsten Takt-Tick abgeschlossen. Solange dies nicht der Fall ist, werden keine Vorwärtsbewegungen bei dieser Anweisung ausgeführt.

Wenn die CPU jedoch entscheidet, etwas zu tun, besteht die grundlegende Methode darin, ihre internen Schalter so einzurichten, dass eine bestimmte Information zu einem bestimmten Teil der CPU gelangt. Sie wartet darauf, dass die Eingabe diesen Teil erreicht und die Ausgabe den nächsten Teil. Dieser Warteabschnitt ist der Zweck der Uhr.

Stellen Sie sich eine physikalische Schaltung vor, die zwei Binäreingänge verwendet und diese summiert und die Summe auf einem dritten Kabelsatz ausgibt. Um eine Addition durchzuführen, muss die CPU dafür sorgen, dass die beiden Zahlen zu diesem Addierer addiert werden und die Ausgänge beispielsweise zu einem CPU-Register-Latch gelangen. Die CPU kann dem Latch nicht mitteilen, die Ausgabe zu speichern, bis die Eingaben den Addierer erreichen, der Addierer die Ausgabe erzeugt und die Ausgabe den Latch erreicht. Dies ist der Zweck der Uhr - um die Wartezeit zwischen dem Anordnen von Eingaben zu einem bestimmten Zeitpunkt und der Erwartung, dass die Ausgabe einsatzbereit ist, festzulegen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.