Prozessor-Anweisung-Zyklus Ausführungszeit
- Meine Vermutung ist, dass die
__no_operation()
intrinsische (ARM -) Unterricht sollten 1/(168 MHz) auszuführen, vorausgesetzt, dass jedeNOP
Ausführung in einem Taktzyklus, die ich möchte, um zu überprüfen, über die Dokumentation. - Ist es eine standard-Speicherort für Informationen zu den instruction-Zyklus Ausführungszeit für einen Prozessor? Ich bin versucht zu ermitteln, wie lange ein STM32f407IGh6 Prozessor zur Ausführung eines NOP-Anweisung ausgeführt, bei 168 MHz.
- Einige Prozessoren benötigen mehrere Zyklen pro Anweisung Zyklus, manche sind 1-zu-1 im Vergleich clock-Zyklen Einweisung-Zyklen.
- Den Begriff "instruction cycle" ist gar nicht vorhanden in der Gesamtheit der Datenblatt zur Verfügung gestellt von STMicro, noch in der Programmier-Handbuch (Auflistung der Prozessor-Befehlssatz, btw). Der 8051-Dokumentation, jedoch eindeutig definiert seine Anweisung cycle-execution-Zeiten, zusätzlich zu seiner Maschine Zyklus Eigenschaften.
InformationsquelleAutor bunkerdive | 2013-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
ALLE Anweisungen, die erfordern mehr als einen Taktzyklus zur Ausführung. Fetch, decode, execute. Wenn Sie auf einem stm32 sind Sie wahrscheinlich mehrere Uhren pro Holen, nur wegen der Langsamkeit des prom, wenn die Ausführung aus dem ram, wer weiß, ob es 168Mhz oder langsamer. die arm-Busse in der Regel die Anzahl der Taktzyklen, etwas zu tun.
Niemand spricht über Unterricht Zyklen mehr, weil Sie nicht deterministisch sind. Die Antwort ist immer "es kommt darauf an".
Es dauert X Stunden, um zu bauen, ein Auto, aber wenn Sie bauen ein Auto dann 30 Sekunden später mit dem Bau beginnen andere und alle 30 Sekunden startet ein weiterer dann nach X Stunden haben Sie ein neues Auto alle 30 Sekunden. Heißt das, es dauert 30 Sekunden, um ein Auto? Natürlich nicht. Aber es bedeutet, dass einmal läuft, können Sie Durchschnitt ein neues Auto alle 30 Sekunden auf, die Produktion.
Genau, wie Prozessoren arbeiten, dauert es eine Anzahl von Takten pro Befehl auszuführen, aber Sie pipeline-Thema, so dass viele im Rohr auf einmal, so dass der Durchschnitt so ist, dass der Kern, wenn die fed die richtigen Anweisungen einen pro Takt, kann vollständige Anleitung eines pro Takt. Mit Verzweigung und langsam Speicher/rom, man kann sogar erwarten, dass.
wenn Sie wollen, um ein experiment auf den Prozessor, dann machen Sie eine Schleife mit ein paar hundert NOPs für
Wenn es dauert Bruchteile einer Sekunde, die Schleife dann entweder die Anzahl der NOPs für größer, oder haben Sie es laufen eine Größenordnung mehr Schleifen. Tatsächlich treffen wollen, eine erhebliche Anzahl von timer-ticks, die nicht unbedingt von Sekunden oder Minuten auf eine Wanduhr, sondern etwas in Bezug auf eine große Anzahl von timer-ticks.
Dann die Mathematik zu tun, und berechnen Sie den Durchschnitt.
Wiederholen Sie das experiment mit dem Programm sitzt im ram statt rom
Langsam der Prozessortakt nach unten, was die Schnellste Zeit ist, die nicht erfordert ein flash-Teiler, wiederholen Sie die Ausführung von flash.
als ein cortex-m4 drehen Sie den I-cache auf, wiederholen Sie die flash verwenden, wiederholen Sie mit ram (168Mhz).
Wenn Sie nicht bekommen, eine Reihe von verschiedenen Ergebnisse aus allen diesen versuchen mit dem gleichen test-Schleife, sind Sie wahrscheinlich etwas falsch machen.
was das bedeutet, ist, wenn Sie haben Dutzende oder Hunderte in einer Reihe, die Durchschnittliche wäre eines Prozessor-Taktzyklus pro Instruktion.
InformationsquelleAutor old_timer
Wenn Sie sorgfältig konfigurieren Sie alle Ihre Uhren in die Reset und die Clock Control (RCT) und Sie wissen, alle Uhren können Sie genau berechnen Sie die Anweisung Ausführungszeit für die meisten von den Anweisungen und haben mindestens ein worst-case-Bewertung für alle von Ihnen. Ich zum Beispiel bin mit einem stm32f439Zi-Prozessor, der cortex-m4-kompatibel mit dem stm32f407. Wenn Sie einen Blick auf das Referenz-Handbuch-die-Uhr-Baum zeigt Ihnen die PLL und alle buss prescalers. In meinem Fall habe ich ein 8 MHz externen Quarz mit PLL konfiguriert, um 84 Mhz system-Takt SYSCLK. Das bedeutet, dass ein Prozessor-Zyklus 1.0/84e6 ~ 12 ns.
Referenz der wie viele Zyklen oder SYSCLK eine Instruktion nimmt Sie die ARM® Cortex®‑M4-Prozessor Technisches Handbuch. Zum Beispiel der MOV-Anweisung in den meisten Fällen dauert ein Zyklus. ADD-Anweisung in den meisten Fällen dauert ein Zyklus, was bedeutet, dass nach 12 ns Sie haben das Ergebnis der addition in einem register gespeichert und bereit für eine Verwendung durch einen anderen Betrieb.
Können Sie diese Informationen verwenden, um planen Sie Ihre Prozessor-Ressourcen in vielen Fällen, wie zum Beispiel periodischer interrupts zum Beispiel, und die Elektro-und die low-level embedded system software Entwickler sind Sie reden und tun, dass, wenn es kommt zu strengen Echtzeit-und sicherheitskritische Systeme. Normalerweise sind die Ingenieure arbeiten mit dem worst-case execution time während der Entwurf ignoriert die pipeline, um eine schnelle und grobe innerhalb der Prozessor-Last. Bei der Umsetzung werden Sie mithilfe von tools für die präzise Analyse und Verfeinerung der software.
In den Prozess der Gestaltung und Umsetzung der nicht-deterministische Dinge reduziert zu vernachlässigen.
InformationsquelleAutor judoka_acl
Die Anzahl der Taktzyklen pro Befehl nicht egal.
Avr, dessen (in der Regel) 1 Instruktion/Takt, also ein 12Mhz AVR läuft bei 12 mips
Auf ein PIC, seine in der Regel 1 Anleitung/4-Takte, also ein 12Mhz PIC läuft mit über 3 mips
Auf einem 8051 (orig) seine 1 Instruktion/12 Uhren, so dass ein 8051 bei 12Mhz läuft bei etwa 1 mips
Wissen, wie viel man erledigen kann, instructions/clock relevant sind. Dies ist der Grund, warum ein AMD Prozessor könnte mehr getan werden /Mhz als ein Intel Prozessor.
InformationsquelleAutor rue_mohr