Würden sich die Daten in Registern mit Lichtgeschwindigkeit ändern und möglicherweise instabil/undefiniert werden, oder würde der Prozessor den Zustand überhaupt nicht mehr ändern?
Um allen Gattern Zeit zu geben, den Zustand der gesamten Kette zu ändern, verwenden wir eine Uhr. Der Takt ist eine Eingabe an die CPU, die zwischen 0 und 1 umschaltet (Signal wird niedrig, Signal wird hoch, Signal wird niedrig usw.), die die CPU antreibt, um Operationen auszuführen.
Wenn die Taktrate auf 100 GHz erhöht wird, beträgt ein Zyklus 0,01 Nanosekunden ... Was passiert, wenn diese Größenbeschränkung verletzt wird? Was passiert, ist, dass sich bestimmte Teile Ihrer Schaltung im "aktuellen" Zyklus befinden und andere Teile im "vorherigen" Zyklus. Es wird wirklich schwierig, mit solchen verteilten Systemen umzugehen.
Aber dann sagt dieser Beitrag :
es wird einfach aufhören
Ich bin also verwirrt über das Ergebnis.
Wenn ich mir einen einfachen timer register
Anschluss an einen Addierer vorstelle und bei jedem Taktzyklus seine Daten verarbeitet werden ++1
, bedeutet ein konstantes Hoch nicht, dass die Registerdaten mit Lichtgeschwindigkeit durch den Addierer und zurück zu sich selbst schleifen und sich auf unbestimmte Zeit addieren? anstatt aufzuhören?
Ihre Zweifel ergeben sich aus einem mangelnden Verständnis der Grundlagen synchroner sequentieller Logiknetzwerke , für die moderne CPUs und verwandte Basisblöcke wie Zähler nur bestimmte Beispiele sind.
Wie jemand anderes bereits darauf hingewiesen hat, können solche Netzwerke ihren Zustand nur als Folge einer Taktflanke ändern, dh eines Taktsignalübergangs.
Ich schlage vor, dass Sie das grundlegende Verhalten von flankengetriggerten Flip-Flops (dh statischer 1-Bit-Speicher, etwas vereinfachend :-) und andere grundlegende Konzepte zu synchronen Netzwerk-Timing-Anforderungen wie Setup-Zeit , Haltezeit und Laufzeitverzögerung untersuchen .
BEARBEITEN (Um einige Kommentare von OP @Dan anzugehen)
Sie erwähnen immer wieder die "Lichtgeschwindigkeit", aber Sie sollten diesen Begriff wirklich aus Ihrem System entfernen.
Lichtgeschwindigkeit ist eine "Geschwindigkeit" im physikalischen Sinne, also ein Verhältnis von Raum zu Zeit. Geschwindigkeit beschreibt, wie schnell sich physische Körper bewegen. In der digitalen Logik sprechen wir von Verarbeitungsgeschwindigkeit , dh wie viele Bits pro Sekunde verarbeitet werden.
Die Beziehung zwischen den beiden ist überhaupt nicht trivial (ein Haufen Ladungen, die sich bewegen, ist nicht unbedingt dasselbe wie ein Haufen Bits, die sich "bewegen").
Asynchrone (dh „taktlose“) Logik ist theoretisch schneller, da Geräte reagieren können, ohne auf die Taktflanke zu warten. Das bedeutet nicht, dass das einzelne Gerät „unendlich“ schnell ist. Mit der gleichen Technologie und der gleichen Schaltungskomplexität spart Ihnen das Weglassen der Uhr nur die Zeit, die einige der getakteten Geräte verschwenden, wenn sie auf die Taktflanke warten, wenn ihre Eingänge bereits "bereit" sind. Dies erhöht nicht die Geschwindigkeit, mit der ein einzelner Transistor den Zustand wechselt. Sie werden also immer noch Ausbreitungsverzögerungen haben. ( https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_circuits ).
OTOH, das Entwerfen eines komplexen asynchronen Systems ist ein Timing-Alptraum, da jedes Subsystem jederzeit reagieren kann und Sie dennoch die Anforderungen an die Setup- und Haltezeit erfüllen müssen.Andere Blöcke schalten ihre Ausgänge, da Sie kein Synchronisationssignal haben. Darüber hinaus benötigen Sie immer noch eine Synchronisierung , da einige Aufgaben warten müssen, bis andere abgeschlossen sind. Ohne Taktsignale wird dies viel komplexer.
Sie könnten dies interessant finden:
https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU .
Der Takt muss von niedrig nach hoch übergehen und sich in einem regelmäßigen Muster wiederholen.
Es sind diese Übergänge , die Änderungen in der Logik bewirken, nicht der hohe Pegel. Keine Übergänge = keine Logikänderung. Ohne Übergänge funktioniert es also nicht mehr.
Dies schließt "extra hohe" Spannung ein (sie wird wahrscheinlich beschädigt werden).
Wenn nur statische Elemente beteiligt sind, scheint der Betrieb während der gesamten Dauer der Taktentfernung vollständig "einzufrieren". Starten Sie die Uhr neu, und sie wird genau dort fortgesetzt, wo sie aufgehört hat (als ob überhaupt keine Zeit vergangen wäre).
Wenn dynamische Elemente beteiligt sind (wahrscheinlich heute, wie Watchdog-Timer, Interrupt-on-Change, DRAM-Speicheraktualisierung usw.), wird während einer langen Taktpause wahrscheinlich etwas übersehen oder beschädigt. Im Falle eines DRAM-Verlusts ist der aktuell ausgeführte Code nun Müll, sodass der Prozessor in kurzer Zeit einen Fehler macht, wenn er versucht, Müllcode auszuführen.
Es sind die Übergänge der Uhr, die dem Prozessor signalisieren, "den nächsten Schritt zu tun". Der Low-High-Übergang oder -Rand (Legacy) und auch der High-Low-Rand (Modern) tun jetzt beide etwas.
Bei den modernen Prozessoren von heute bedeuten mehrere Kerne mit mehreren Threads, dass jeder Taktzyklus an jeder Taktflanke Hunderte, sogar Tausende von Dingen parallel erledigt .
Taktflanken müssen verwendet werden, da sie sequentiell sind , und diese Flanken müssen durch eine gewisse Zeitspanne getrennt sein, damit sich der "Schritt" vollständig ausbreiten oder abschließen kann, bevor der nächste gestartet wird. "Overclocking" erhöht die Taktrate über den normalen Wert hinaus. Die typische Taktrate beinhaltet eine Sicherheitsmarge, sodass diese meist noch etwas erhöht werden kann. Eine Erhöhung führt dazu, dass der Prozessor härter arbeitet, sodass normalerweise eine leichte Spannungserhöhung erforderlich ist, um den Betrieb aufrechtzuerhalten. Aber eine zu starke Erhöhung der Taktrate wird schließlich diese Schrittzeiten verletzen, insbesondere über alle möglichen Temperaturbereiche.
clock helps with transitions
. Wie macht es das? Die Uhr ist ein kontinuierliches Muster aus 1 und 0. Werden die 1 und 0 als einer ihrer Eingänge in Gatter eingespeist, um möglicherweise ihren Zustand basierend auf ihren anderen Eingängen zu ändern?Normalerweise mag ich keine Wasseranalogien für Elektrizität, aber...
Die Uhr mit synchroner Logik ist so etwas wie eine Brunnenwasserpumpe. Die Pumpwirkung ist nicht kontinuierlich, sie erfolgt in Schüben. Wenn Sie den Pumpenarm nach oben heben, saugt die Pumpe ein wenig Wasser von unten ein, und wenn Sie den Pumpenarm wieder nach unten drücken, stößt sie dieses Wasser stromaufwärts aus. Bewegen Sie den Pumpenarm wiederholt auf und ab, und er kann ziemlich viel Wasser stromaufwärts bewegen. Stoppen Sie mit dem Arm nach oben, und es passiert nichts mehr. Stoppen Sie mit dem Arm nach unten, und es passiert nichts mehr.
Es gibt auch ein optimales Saugvermögen (dies gilt auch für synchrone Logikschaltungen). Wenn die Pumpe zu langsam pulsiert, verliert sie an Schwung, sodass der Wasserdruck und die Geschwindigkeit nicht ihr volles Potenzial erreichen. Aber pulsieren Sie die Pumpe zu schnell, und das Wasser kann einfach nicht schnell genug in das Laufrad strömen. Die Metapher bricht ein wenig zusammen, weil Schaltkreise keine Viskosität haben ...
In synchronen Schaltungen haben wir sogenannte digitale Schaltungen, die wirklich analoge Schaltungen sind, die vorgeben, den netten sauberen digitalen Designregeln zu folgen. Digitale Schaltungen haben eine Eigenschaft, die als „ Störfestigkeit“ bezeichnet wird": Ein logisch hoher oder logisch niedriger Pegel ist ein Spannungsbereich. Für einen Digitaldesigner gibt es keinen sinnvollen Unterschied zwischen einem logisch hohen Wert von 2,6 V und 2,8 V, solange er sich innerhalb des VIH-Spannungsbereichs des Eingangs befindet behandelt es garantiert als logisch hohen Pegel. Aber die zugrunde liegende Schaltung besteht aus Transistoren, und wenn sie zwischen hohen und niedrigen Pegeln umschaltet, muss sie alle dazwischen liegenden Spannungen durchlaufen. Reale Schaltungen schalten nicht sofort. Also Es ist eine begrenzte Zeitspanne erforderlich, damit sich das Signal auf den richtigen Wert einschwingt.Diese Zeitspanne wird als Ausbreitungsverzögerung bezeichnet. Addieren Sie alle Ausbreitungsverzögerungszeiten aller verschiedenen Elemente der kombinatorischen Logikschaltung, die das Signal durchlaufen muss, und das bestimmt die kürzeste (schnellste) Taktperiode, die die Schaltung tolerieren kann. Der Betrieb mit einer schnelleren Taktgeschwindigkeit lässt der internen Kombinationslogik nicht genügend Zeit, um immer den korrekten Wert zu erreichen. Es hat immer einen gewissen Wert, es ist nur nicht garantiert, dass es der richtige Wert ist, bis die gesamte Ausbreitungsverzögerungszeit verstrichen ist.
Es gibt viele Faktoren, die die erforderliche Ausbreitungsverzögerungszeit bestimmen. Einiges davon hängt von nominalen Designwerten ab, wie der Kapazitätsbelastung und dem Drahtwiderstand und ähnlichen Dingen. Diese Faktoren hängen von den Gesetzen der Physik, der Form und Abmessungen der Materialien und anderen Materialeigenschaften sowie der Temperatur ab; damit wir die Ausbreitungsverzögerung abschätzen können. Bei hergestellten Geräten gibt es jedoch kleine Abweichungen von einer Einheit zur anderen. In den 1970er Jahren waren diese Herstellungstoleranzen nicht so eng wie heute, aber es gibt immer noch einige unvorhersehbare Abweichungen von einem Gerät zum anderen. Dies führte also zu einem Computer-Bastler-Trend namens "Overclocking", nach dem Sie anscheinend sehr genau fragen.
Overclocking-Enthusiasten gingen im Grunde ein kleines Risiko ein, indem sie ihren eigenen PC so modifizierten, dass er mit einer höheren Taktrate lief, zum Beispiel eine 6-MHz-CPU mit 8 MHz. Es ist nicht garantiert, dass es funktioniert. Und es ist auch nicht garantiert, dass es auf offensichtliche Weise fehlschlägt, was schlimmer sein könnte, als wenn es einfach nicht sofort funktioniert. Wenn Sie eine große Simulation ausgeführt haben und ein kleiner unentdeckter Berechnungsfehler aufgetreten ist, der erst auftritt, nachdem eine Reihe großer Berechnungen durchgeführt wurden und ein Hotspot aufgetreten ist, wissen Sie möglicherweise nicht, dass Sie ein schlechtes Ergebnis erhalten haben. Auf der anderen Seite, wenn Sie es nur zum Spielen verwenden, schadet es nicht. Aber selbst ein Hack wie Overclocking muss immer noch einen sich ständig ändernden Takteingang liefern. Einfach den Clock-Eingang immer-low oder immer-high zu verbinden ist keine Zauberei,
Hier ist ein wenig detaillierter darüber, wofür das Taktsignal tatsächlich verwendet wird. Die einfachste Idee einer synchronen Logikschaltung wäre eine endliche Zustandsmaschine, die aus einigen "D"-Flip-Flops und einigen Logikgattern besteht. Alle D-Flip-Flops empfangen das Taktsignal. Die Ausgänge der Flip-Flops treiben die Eingänge des Labyrinths aus Logikgattern an, und die Ausgänge aus dem Wirrwarr der Logik werden in die Eingänge der D-Flip-Flops zurückgeführt. Es gibt also eine Art Rückkopplungsschleife, aber die Flip-Flops unterbrechen diese Rückkopplungsschleife, indem sie eine Zeitdisziplin auferlegen. Das Flip-Flop ignoriert so ziemlich alles, was an seinem Dateneingang passiert, bis kurz vor der steigenden Flanke des Takts, und dann werden plötzlich die Ausgänge geändert, um mit dem Wert der Eingänge übereinzustimmen. Dies geschieht sehr schnell, im Idealfall ist es so, als würde man einen Schnappschuss der Eingabe machen und diesen Wert für den Rest des Taktzyklus kontinuierlich steuern. Wenn das Flip-Flop seine Ausgänge kontinuierlich aktualisieren würde, um mit seinen Eingängen übereinzustimmen, solange der Takteingang hoch war, wäre das kein Flip-Flop; es wäre ein transparenter Riegel. Und wir brauchen Flip-Flops, keine transparenten Latches, um Zustandsmaschinen zu bauen.Es gibt keine Änderung an der fallenden Flanke der Uhr. Schließlich bestimmt die kombinatorische Logik einen neuen Wert für die Flip-Flop-Eingänge. Aber die Maschine "weiß" nur, dass der neue Wert angekommen ist, ist, dass die steigende Flanke der Uhr auftritt. Das treibt den Prozess der Aktualisierung des Registerwerts an, sodass der Rest der Logik mit der Berechnung des nächsten Schritts beginnen kann. Dies ist das grundlegende Funktionsprinzip aller endlichen Zustandsmaschinen und aller anderen synchronen Logik.
Die Uhr synchronisiert den Betrieb aller inneren Komponenten jeder CPU. Wenn es aufhört (oder konstant hoch wird), sollte die CPU einfach auch aufhören. Mindestens 8051 Mikrocontroller verhält sich so. Es wird die CPU definitiv nicht "übertakten" (auch bekannt als es wird nicht so schnell wie möglich arbeiten). Alle unangenehmen Nebeneffekte wie Löschen/Ändern von Registern, undefinierter Status usw. können ebenfalls auftreten.
Uhr angehalten: Wenn die Register und die Logik statisch sind, hält die Maschine ihren Zustand. Wenn sie dynamisch sind, wird der Zustand schließlich beschädigt oder geht verloren.
(Dynamische Logik wird in einigen Architekturen verwendet, um die Fläche zu reduzieren. Wie DRAM muss es zyklisch durchlaufen werden, um seinen Zustand zu aktualisieren. Dies war in der NMOS-Ära häufiger, obwohl es immer noch in CMOS verwendet wird.)
Die Uhr läuft über die Maschinengrenzen hinaus: Instabiler Betrieb, da die Einrichtungszeiten der Flip-Flops nicht eingehalten werden, sodass ihr Zustand nicht vorhersehbar ist.
Das grundlegende Zyklus-Timing muss nicht geringer sein als der Worst-Case-Flop-Clock-to-Output + Routing-Verzögerung + Setup zur nächsten Flop-Stufe.
Es gibt auch eine gewisse Einschränkung bei hohen und niedrigen Taktraten, da Flops aus Latches bestehen, die auf entgegengesetzten Taktpegeln aktiviert werden: Sie benötigen eine minimale Impulszeit, um sich auszubreiten.
Feuerstelle
jsotola
light speed
ist kein Maß für ein Zeitintervall, es sei denn, es wird eine Entfernung angegebenBenutzer1850479
Dan
Benutzer1850479
Rackandboneman
Matthäus Watson
John Doty
Navin