Nicht beantwortet in @ Majenkos Beitrag: Ja, mit einem 8-MHz-Takt benötigt jede Leitung das Doppelte der Zeit. Es sei denn, die Leitung wartet auf etwas, das nicht taktgesteuert ist - z. B. einen externen Eingang.
Zusätzlich zur Antwort von @ Majenko verfügt eine CPU über eine Uhr, um sicherzustellen, dass die Anweisungen vollständig sind, bevor der nächste Schritt beginnt. Eine CPU besteht aus vielen Transistoren (ich habe eine Referenz gefunden, die angibt, dass der AtMega im Bereich von niedrigen Millionen liegt und eine Größenordnung gibt oder nimmt).
Während eines Zyklus fließt der Strom durch den Chip und schaltet die Transistoren ein / aus, wodurch mehr Transistoren auf der ganzen Linie ein- und ausgeschaltet werden. Währenddessen haben einige Teile des Chips einen "falschen" Wert - Sie können sich dies als die Hälfte der Berechnung vorstellen (Sie haben die Spalte "one" und die Spalte "10s" hinzugefügt und beginnen gleich mit der 100s Spalte). Sie möchten nicht, dass dies die Außenwelt beeinflusst, also werden (zum Beispiel) Ihre Ausgangspins verriegelt - auf dem Wert gehalten, den sie haben - bis der Befehl abgeschlossen ist. Wie lange es dauert, eine Anweisung auszuführen, ist unterschiedlich, aber der Hersteller erarbeitet unter den schlimmsten Umständen die langsamste Anweisung.
Für den AtMega (der Chip auf dem Arduino) hat Atmel (der den Chip entworfen hat) angegeben, dass dies 1 / 20.000.000 Sekunden sind - das sind 20 MHz.
Beachten Sie, dass nicht alle Mikroprozessoren alle ihre Befehle mit 1 Befehl pro Zyklus ausführen - einige Befehle können 1, 2 oder 10 Zyklen dauern. Pipelining macht die Sache noch komplizierter - ein Prozessor erledigt möglicherweise einen Teil der Arbeit (z. B. den nächsten Befehl abrufen) in einem Zyklus, führt ihn im nächsten aus - aber während er Befehl 1 ausführt, kann er auch den nächsten Befehl abrufen. Um dies zu tun, muss möglicherweise erraten werden, welche Anweisung als nächstes kommt (im Fall des Maschinencode-Äquivalents eines "goto" - dies wird für Schleifen verwendet), und wenn es falsch errät, muss es damit umgehen Das; Werfen Sie die abgerufene Anweisung weg und rufen Sie die nächste ab, wobei Sie einen Zyklus verlieren.
Die Wikipedia-Seite zum Anweisungs-Pipelining zeigt ein Beispiel für ein RISC-Chip-Pipelining in 5 Stufen - Befehlsabruf, Befehlsdecodierung, Ausführung, Speicherzugriff und Rückschreiben. Sie können also zu einem bestimmten Zeitpunkt der Ausführung 5 Anweisungen haben, die sich überlappen. Bis zur "Rückschreib" -Phase haben die Anweisungen keine wirkliche Wirkung. Sie können sich dies als Fließband vorstellen - das Zusammenstellen eines Widgets dauert 7 Minuten, kann jedoch in 5 Phasen unterteilt werden, wobei die längste Phase 2 Minuten dauert. Alle zwei Minuten wird jedes teilweise fertiggestellte Widget vom Fließband zur nächsten Station verschoben. Sie erhalten alle zwei Minuten ein Widget - Die "Uhr" kann nur so schnell ticken wie der langsamste Schritt. Wenn Sie das Widget schneller herausschieben, werden durch den "Engpass" immer mehr Widgets in die Warteschlange gestellt.