Ist die CPU-Taktzeit strikt periodisch?

7658
Gael

Handelt es sich bei der Frequenz einer CPU um einen Mittelwert, um wie viele Taktstiche in einer Sekunde es sich handelt, oder hat sie eine stärkere physische Stabilität?

Meiner Meinung nach darf es weder stabil noch instabil sein. Gibt es Informationen über die Abweichung für eine CPU?

Ist die Zyklusdauer einer CPU streng mit der Quarzschwingung synchronisiert? Oder muss die CPU nur sicher sein, dass vor dem nächsten Tick ein Zyklus erreicht wird?

51
Die Abweichung hängt nicht von der CPU ab, sondern hängt eher von der Hauptplatine, Temperaturschwankungen usw. ab. Wie viel Genauigkeit benötigen Sie in welchem ​​Zeitraum? mpez0 vor 9 Jahren 0
Es gibt viele verschiedene Arten von CPU. Die meisten verwenden einen Kristall, der bei einer bestimmten Frequenz schwingt, um sich selbst zu bestimmen. Das bedeutet, dass die meisten ungefähr so ​​genau wie eine digitale Armbanduhr sind (die den gleichen Quarztyp verwendet, um die Zeit zu halten). http://en.wikipedia.org/wiki/Crystal_oscillator krowe vor 9 Jahren 7
Was auch immer die Abweichung ist, es ist kein Problem für meine persönlichen Bedürfnisse: Ich bin ein Webentwickler, also ist es weit von mir entfernt :) Gael vor 9 Jahren 0
Selbst wenn der Kristall sicher eine stabile Frequenz hat, ist meine Frage spezifischer für die CPU: Ist eine CPU-Befehlsdauer streng mit der Kristallvibration synchronisiert? Oder muss die CPU nur sicher sein, vor dem nächsten Tick eine Anweisung zu erhalten? Gael vor 9 Jahren 0
Je mehr ich darüber nachdenke, desto mehr mag ich diese Frage. misha256 vor 9 Jahren 0
@Gael Für einige Anweisungen sind hunderte von Ticks oder Taktzyklen erforderlich. misha256 vor 9 Jahren 5
@Gael: Es ist auch üblich, dass sich CPUs langsamer oder schneller machen, und das machen sie ziemlich oft. Obwohl ich nicht genau weiß, wie das mit Zecken zusammenhängt. Mooing Duck vor 9 Jahren 1
Abstimmung, um dies zu schließen als * auf der Suche nach Produkt-, Service- oder Lernmaterialempfehlungen *? Wirklich Leute? a CVn vor 9 Jahren 18
Dies ist eine legitime Frage *, die klären soll, wie Hardware funktioniert. ** studiohack vor 9 Jahren 30
Viele Computersysteme beschleunigen oder verlangsamen den CPU-Takt entsprechend den Umständen. Da zum Beispiel die erzeugte Wärme in etwa der Leistung entspricht, wird die Uhr oft verlangsamt, wenn die CPU zu warm wird. Außerdem laufen einige tragbare Systeme langsamer mit der Batterie (und seltsamerweise laufen einige langsamer, wenn die Batterie entfernt wird). Im Allgemeinen werden diese Änderungen durch Änderung der Taktrate erreicht. Es ist jedoch zu verstehen, dass die meisten "modernen" Systeme ein Schema aufweisen, um die Genauigkeit der "Echtzeituhr", die der Software Zeitdienste zur Verfügung stellt, unabhängig aufrechtzuerhalten, trotz der obigen Ausführungen. Daniel R Hicks vor 9 Jahren 0
@krowe: Im Allgemeinen sind Hochfrequenzkristalle weniger genau als die Niederfrequenzkristalle (wobei letzteres unter anderem für Uhren verwendet wird). Uhren verwenden typischerweise 32-kHz-Kristalle. Ein Mikrocontroller, der mit 20 MHz betrieben wird, kann also nicht so genau wie eine dedizierte RTC-Schaltung (Echtzeituhr) arbeiten. PCs können die Zeit genau festlegen, da Motherboards über eine (von CPU getrennte) RTC verfügen, um die Zeit zu verfolgen. Außerdem können sie sich bei der Verwendung von NTP helfen, sofern dies konfiguriert ist. Tim Čas vor 9 Jahren 0

5 Antworten auf die Frage

49
misha256

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

Grundsätzlich wird eine CPU von einer genauen Uhr 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-Anweisungen 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 in Wikipedia beschrieben .

Im Grunde verbraucht eine Anweisung eine bestimmte Anzahl von Taktzyklen . Bei modernen CPUs kann aufgrund von Technologien wie mehreren Kernen, HyperThreading, Pipelining, Caching, Out-of-Order- und spekulativer Ausführung die genaue Anzahl der Taktzyklen für einen einzelnen Befehl nicht garantiert werden und bei jeder Ausgabe eines solchen Befehls variieren !

BEARBEITEN

Gibt es Informationen über die Abweichung für eine bestimmte CPU?

Ja und nein. 99,99% der Endbenutzer sind an der Gesamtleistung interessiert, die anhand verschiedener Benchmarks quantifiziert werden kann.

Nach was Sie fragen, sind sehr technische Informationen. Intel veröffentlicht keine vollständigen oder genauen Informationen über die Latenzzeit und den Durchsatz von CPU-Anweisungen .

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

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

Die angegebenen Zahlen sind Mindestwerte. Fehlversuche im Cache, falsche Ausrichtung und Ausnahmen können die Anzahl der Uhren erheblich erhöhen.

Interessante Lektüre trotzdem!

Kommentare sind nicht für eine erweiterte Diskussion vorgesehen. Dieses Gespräch wurde [zum Chat verschoben] (http://chat.stackexchange.com/rooms/20977/discussion-on-answer-by-misha256-are-cpu-clock-ticks-strictly-periodic-in-nature) . Sathya vor 9 Jahren 1
Sehr schön. "Die CPU ist jedoch zu jedem Zeitpunkt absolut zu 100% an das Taktsignal gekoppelt" gilt nur für synchrone CPUs. Es ist dumm von Zecken in einer asynchronen (ohne Uhr) CPU zu sprechen, aber es fühlte sich für mich wie eine Unterlassung an :) Luaan vor 9 Jahren 4
@Luaan - Richtig. Ich denke, dass echte asynchrone CPUs immer noch recht selten sind, aber sie existieren (oder haben es in der Vergangenheit). Nur wirklich relevant für Forscher und Hardware-Geeks. Daniel R Hicks vor 9 Jahren 1
@DanielRHicks Sie waren für Embedded-Geräte von Interesse (es gibt ein paar alte asynchrone MIPS- und ARM-CPUs), aber ja, nicht wirklich die große Sache auf dem Verbrauchermarkt. Warum sollte man sich für den CPU-Stromverbrauch eines Smartphones sorgen, wenn sich neben ihm das Display befindet, das den Strom hungert. Die Energieeinsparungen (und andere Funktionen) sind jedoch für einige andere Anwendungen möglicherweise sehr kühl - IBM SyNAPSE ist für wissenschaftliche Zwecke ein cooles Projekt. Luaan vor 9 Jahren 0
@Luaan - Der interessante Punkt, als sie zum ersten Mal erfunden wurden, war, dass der Computer genauso schnell / langsam lief, wie er für die Berechnung benötigte. Aber kompliziertere Taktschemata haben im Grunde dasselbe erreicht, sorta. Daniel R Hicks vor 9 Jahren 0
@DanielRHicks Ja, viele Tricks wie Mikroinstruktionen funktionieren ziemlich gut. Wir könnten wahrscheinlich etwas mehr Leistung aus asynchronen CPUs herausholen, aber das lohnt sich wahrscheinlich nicht. Und der Kostenunterschied muss beträchtlich sein, wenn sich beispielsweise die Strom- (und Kühlungs-) Kosten von Supercomputern immer noch lohnen. Die Zeit wird es vielleicht sagen. Luaan vor 9 Jahren 0
29
David Hammen

Ist die Uhrzeit der CPU-Uhr streng periodisch?

Natürlich nicht. Selbst die besten Uhren sind nicht streng periodisch. Die Gesetze der Thermodynamik besagen etwas anderes:

  • Zeroth-Gesetz: Das Universum spielt ein böses kleines Spiel.
  • Erstes Gesetz: Sie können nicht gewinnen.
  • Zweites Gesetz: Aber an einem sehr kalten Tag können Sie sich sogar auf den Beinen halten.
  • Drittes Gesetz: Es wird nie so kalt.

Die Entwickler der allerbesten Uhren bemühen sich sehr, die Gesetze der Thermodynamik zu überwinden. Sie können nicht gewinnen, aber sie kommen dem Break-Even sehr nahe. Die Uhr auf deiner CPU? Es ist Müll im Vergleich zu diesen besten Atomuhren. Deshalb gibt es das Network Time Protocol .


Vorhersage: Wir werden wieder ein bisschen Chaos erleben, wenn die besten Atomuhren der Welt von 2015 30. Juni 23:59:59 UTC bis 2015 30. Juni 23:59:60 UTC bis 2015 1. Juli 2015 00:00:00 gehen KOORDINIERTE WELTZEIT. Zu viele Systeme erkennen keine Schaltsekunden und haben eine sichere Sicherheitsstufe von zwei (was eine Zeitänderung von mehr als einer Sekunde verhindert). Der Clock-Jitter in diesen Systemen bedeutet, dass der Schaltzeitpunkt des Network Time Protocol abgelehnt wird. Eine Reihe von Computern wird wie im Jahr 2012 fertig gestellt.

+1, lustig und informativ. Und das Thema [Schaltsekunde] (http://en.wikipedia.org/wiki/Leap_second) ist auch eine gute Lektüre. jimm-cl vor 9 Jahren 9
Nun, IIRC, der Go-Belly-Up wurde verursacht, weil die Kernel-Clock-Routinen die Möglichkeit von Schaltsekunden * wussten *, aber die Anpassung als Aufruf einer Clock-Anpassungsroutine implementierten, die während der Clock nicht aufgerufen werden durfte wurde bereits eingestellt ... und natürlich hat die Systemuhr nichts mit der CPU-Uhr zu tun. Hagen von Eitzen vor 9 Jahren 9
Lol, großartig. Ich muss etwas zu Ihrer "CPU-Uhr ist Müll im Vergleich zu Atomuhren" hinzufügen. Beobachtung: Tatsächlich! Aber das ist alles sehr subjektiv, ganz zu schweigen von der Relativität. Wir mögen die überragende Genauigkeit unserer besten Atomuhren bestaunen, aber irgendwo da draußen (außerhalb unserer gemütlichen Realität) gibt es möglicherweise eine Technologie, die unsere Atomuhren wie "Müll" aussehen lässt :-p misha256 vor 9 Jahren 1
@ misha256 die Realität ist, kann keine * genaue * Uhr sein. Die Zeit ist relativ. Keltari vor 9 Jahren 2
Die CPU-Uhr kann ein Wermutstropfen sein, aber es gibt nichts Besseres, als ein 8-Bit-Register überlaufen zu lassen, nur um dem 7-Segment-Anzeigetreiber in einem unbekannten Zustand etwas Zeit zu geben, um die Anweisung vor der nächsten Ausgabe zu aktualisieren. Dafür brauchen wir keine Kristalle. Oder was noch wichtiger ist, es gibt nichts Besseres als eine Nanosekunde zu warten, bis die ALU ihre Berechnung abgeschlossen hat, bevor Sie die Ergebnisse in ein Register (oder in einen Bus, der zu einer anderen ALU führt) ablegen. John Dvorak vor 9 Jahren 0
22
MSalters

Um das Jahr 2000, als die Taktraten der CPUs in den Bereich kamen, in dem auch Mobiltelefone betrieben wurden, wurde es üblich, die tatsächliche Taktrate zu variieren. Der Grund ist einfach: Wenn der CPU-Takt genau 900 MHz beträgt, werden alle elektronischen Interferenzen bei dieser Frequenz erzeugt. Variieren Sie die Taktfrequenz etwas zwischen 895 und 905 MHz, und die Interferenz ist auch über diesen Bereich verteilt.

Dies war möglich, da moderne CPUs begrenzt sind. Sie haben keine Probleme, für kurze Zeit etwas schneller zu laufen, da sie sich abkühlen können, wenn die Uhr später abgebremst wird.

Im BIOS wird diese Option häufig als "Spread Spectrum" beschrieben. Mark Sowul vor 9 Jahren 13
Ich habe gelesen, dass die Kerne bei Multi-Core-CPUs auch Offset-Takte verwenden, da dies Funkstörungen vermeidet, die Energieverteilung unterstützt und der Aufbau von Obertönen durch die Kerne vermieden wird. Zan Lynx vor 9 Jahren 1
@ MarkSowul Danke, endlich jemand, der die praktische Anwendung dieses "Spread-Spektrums" erzählt. vor 9 Jahren 3
22
pjc50

Digitaler Logik Designer hier. Die tatsächliche Zeit, die ein logisches Netzwerk benötigt, um sich als Reaktion auf ein Eingangssignal zu ändern, ist die Ausbreitungsverzögerung . Betrachten Sie das System als:

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

Die "Startuhr" ist die Taktflanke, zu der sich der erste Satz von Registern ändert. Die "Capture Clock" ist die nächste Taktflanke eine Periode später. Damit das System funktioniert, muss die Ausgabe der Logikwolke stabil sein, bevor der Capture-Takt ankommt.

Um sicherzustellen, dass dies funktioniert, handelt es sich um eine Timing-Analyse. Ermitteln Sie mithilfe einer physikbasierten Simulation des Systems die Ankunftszeit aller Eingaben für einen beliebigen Ausgang im ungünstigsten Fall . Die größte dieser Zahlen im gesamten System legt die minimale Taktperiode fest.

Beachten Sie den schlimmsten Fall . Die tatsächliche Laufzeit ist kürzer, sie hängt jedoch von der Variation des Fertigungsprozesses, der aktuellen Temperatur und der Chipspannung ( PVT ) ab. Dies bedeutet in der Praxis, dass Sie eine schnellere Uhr (Übertakten) anwenden können, und es funktioniert möglicherweise. Es kann auch anfangen, Fehler zu erzeugen, beispielsweise zu entscheiden, 0x1fffffff + 1 = 0x1f000000ob das Übertragsbit nicht rechtzeitig ankommt.

Chips können auch mehr als eine Uhr an Bord haben (normalerweise ist der FSB langsamer als der Kern), und die tatsächliche Uhr kann für thermische Steuerungen hoch- oder heruntergefahren oder variiert werden (Antwort von MSalter bezüglich der Verwendung des Spreizspektrums für das Bestehen von EMV-Tests).

In einigen Fällen kann der Erfassungszeitpunkt der zweite oder spätere Zyklus sein und nicht der nächste. Bei einigen Konstruktionen wird davon ausgegangen, dass Daten immer mindestens eine gewisse Zeit benötigen (z. B. wenn bekannt ist, dass die Laufzeit zwischen 2,1 und 2,9 Zyklen liegt, könnten Daten ausgegeben und Ergebnisse für jeden Zyklus abgetastet werden), würde jedes abgetastete Ergebnis die Daten aus 3 wiedergeben Zyklen vor); Andere konservativere Designs ändern die Ausgabedaten langsamer und ignorieren das Ergebnis, bis es garantiert stabil ist. supercat vor 9 Jahren 0
2
David Schwartz

Ist die Anweisungsdauer einer CPU streng mit der Quarzschwingung synchronisiert? Oder muss die CPU nur sicher sein, dass sie vor dem nächsten Tick eine Anweisung erhält?

Weder. Die Anweisungsdauer wird eine bestimmte Anzahl von Uhrzeittichen sein, aber diese Anzahl kann je nach den Anforderungen der Anweisung variieren. Wenn zum Beispiel ein Befehl nicht vorwärts gehen kann, bis sich ein bestimmter Speicherplatz im L1-Cache befindet, wird der Befehl nicht vor dem nächsten Takt ausgeführt. Es wird kein Fortschritt in Bezug auf diese Anweisung gemacht, bis dies geschieht.

Wenn sich die CPU jedoch für etwas entscheidet, 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 an diesem Abschnitt ankommt und die Ausgabe an dem nächsten Abschnitt ankommt. Dieser Warteabschnitt ist der Zweck der Uhr.

Stellen Sie sich eine physikalische Schaltung vor, die zwei Binäreingänge aufnimmt und summiert, wobei die Summe auf einem dritten Satz von Drähten ausgegeben wird. Um eine Addition durchzuführen, muss die CPU dafür sorgen, dass die beiden Zahlen addiert werden, um zu diesem Addierer zu gelangen, und die Ausgänge, um beispielsweise zu einem CPU-Registerspeicher zu gelangen. Die CPU kann dem Latch nicht sagen, dass er den Ausgang speichern soll, bis die Eingänge den Addierer erreichen, der Addierer den Ausgang erzeugt und der Ausgang den Latch erreicht. Dies ist der Zweck der Uhr, um die Wartezeit zwischen dem Anordnen der Eingabe an einen bestimmten Ort und der erwarteten Verwendung des Ausgangs einzustellen.