mikrocontroller.net

Forum: PC Hard- und Software Begriffsabgrenzung Maschinenzyklus Befehlszyklus


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Habe ich den Unterschied zwischen Befehlszyklus, Maschinenzyklus und 
Taktzyklus richtig verstanden?

Befehlszyklus:
Fetch->Decode->Execute

Machinenzyklus nur für den Fetch-Befehl:
Taktperiode1->Taktperiode2->Taktperiode3

: Bearbeitet durch User
von Hugo H. (hugohurtig1)


Bewertung
-1 lesenswert
nicht lesenswert
Was lernt Torben denn?

von Theor (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Es gibt keinen "Fetchbefehl".

Beitrag #6135649 wurde von einem Moderator gelöscht.
Beitrag #6135650 wurde von einem Moderator gelöscht.
von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht lesenswert
Ein Befehlszyklus besteht aus der kompletten Abarbeitung eines 
Maschinenbefehls und benötigt min. einen, meist aber mehrere 
Maschinenzyklen, die jeweils einen Taktzyklus benötigen.

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Okay. Nehmen wir mal den ADD-Befehl.

Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die 
irgendwie benennen?

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Das kann bei jeder Implementierung anders aussehen.

von Mike B. (mike_b97) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert

von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Okay. Nehmen wir mal den ADD-Befehl.

meinst du damit Assembler-Anweisungen?

Torben S. schrieb:
> Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die
> irgendwie benennen?

Die findest du im Datenblatt der von dir nicht benannten CPU...

;-)

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Die findest du im Datenblatt der von dir nicht benannten CPU...

In x86 Datasheets steht das schon seit Jahrzehnten nicht mehr drin.

von Helmut S. (helmuts)


Bewertung
0 lesenswert
nicht lesenswert
Auf der Seite gibt es eine Beschreibung der Begriffe.
Dazu das Bild ganz am Ende der Webseite mal anschauen - Kapitel 
Befehlszyklus.
http://www.netzmafia.de/skripten/dvs/dvs2.html

Ein Befehlszyklus besteht aus mehreren Maschinenzyklen
Ein Maschinenzykus kann mehrere Takte benötigen.

: Bearbeitet durch User
Beitrag #6135722 wurde von einem Moderator gelöscht.
von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die
> irgendwie benennen?

Das hängt vom jeweiligen Prozessor ab.
Möglich wäre zB. Operanden in die/das Registerladen, verarbeiten 
(besteht oft auch aus mehreren Maschinenzyklen), zurück in den Speicher 
schreiben.
Bei einigen Befehlen ist es aber quasi unerlässlich, über den Ablauf 
genauere Kenntnis zu besitzen, zB: 
https://de.wikipedia.org/wiki/RMW-Befehl

von yoop (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
A. K. schrieb:
> In x86 Datasheets steht das schon seit Jahrzehnten nicht mehr drin.

Deswegen ja meine bitte um Konkretsierung! :-)

Handelt es sich um eine CPU (Assembler basiert) oder Hochsprache (C..., 
Pascal, usw....)

Oder um eine rein theoretische verallgemeinerte Definition?


:-(

von Sebastian S. (amateur)


Bewertung
-2 lesenswert
nicht lesenswert
@Torben S.

Ich bin ja mal gespannt, wann Du merkst, dass Deine Informationen völlig 
unzureichend sind.

Meine Glaskugel zeigt auf jeden Fall nur Nebel.

Redest Du von einer SPS (wenn ja: welche)?
Redest Du von einem Mikrocontroller (da soll es auch verschiedene 
geben)?
Redest Du über die Definitionen des Herrn Sowieso in eurem Lehrbuch?

Kannst aber auch ein Geheimnis draus machen.

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Sebastian S. schrieb:
> Redest Du von einer SPS (wenn ja: welche)?
> Redest Du von einem Mikrocontroller (da soll es auch verschiedene
> geben)?
> Redest Du über die Definitionen des Herrn Sowieso in eurem Lehrbuch?

(^_^)

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Sebastian S. schrieb:
> Meine Glaskugel zeigt auf jeden Fall nur Nebel.

Da kann ich dir helfen. In einem vorherigen Thread verwies er auf Intels 
Nehalem und verlinkte deshalb auf Coffee Lake. ;-)

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
A. K. schrieb:
> Intels
> Nehalem und verlinkte deshalb auf Coffee Lake. ;-)

Danke!
Dann bin ich hier raus!
Kenne ich, mag hier aber nicht drüber disputieren/diskutieren...

:-(

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Nimms nicht ganz so ernst. Neben Ausblicken in Gefilde, die von ihm noch 
ein paar Lichtjahre entfernt sind, steht bei ihm ein m.W. bisher 
ungenanntes Lehrbuch rum, an dem er sich bisher mühsam Zeile für Zeile 
und Thread für Thread abarbeitet. Zwischendurch guckt er ab und zu in 
die funkelnden Sterne und verwirrt sich. ;-)

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Oder um eine rein theoretische verallgemeinerte Definition?

Ich habe an keine spezielle Maschine gedacht. Mir ging es tatsächlich 
nur um ein rein theoretisches Beispiel.

Ich kann selber nicht richtig beschreiben, was ich meine. Ich glaube 
deshalb gibt es hier jetzt so viel Unruhe.

Ich bin auf die Frage gestoßen, weil in meinem Lehrbuch Elektrotechnik 
von Esper und Gemmel geschrieben steht, dass ein Maschinenzyklus in der 
Theorie 4 Taktperioden umfasst. Nun ja ich weiß, was Taktperioden sind, 
aber unter Maschinenzyklus kann ich mir nichts vorstellen. Ich finde es 
komisch, dass in einem Schulbuch das Wort verwendet wird, aber nicht 
beschrieben.

Es muss doch irgendeinen Grund haben, warum die Autoren ausgerechnet von 
4 ausgehen.

: Bearbeitet durch User
von Theor (Gast)


Bewertung
1 lesenswert
nicht lesenswert
@ Torben

Zunächst finde ich es gut, dass Du diese Dinge tiefer verstehen willst. 
Sehr lobenswert. :-)

Das Thema ist in den Büchern und im Internet sehr weit und tief 
abgedeckt. Ein guter Einstiegspunkt ist 
https://de.wikipedia.org/wiki/Befehlszyklus (wo man auch sieht, das 
"Befehlszyklus" und "Maschinenzyklus" üblicherweise synonym benutzt 
werden.) Empfehlenswert sind auch und vor allem die englischen Seiten 
der Wikipedia.

Eventuell wird es auch sehr hilfreich sein, - falls Du da noch Lücken 
hast -, dass Du erst einmal boolsche Logik, logische Gatterschaltungen 
und einfache Schaltungen wie Flip-Flops und Register betrachtest und wie 
man sie in einfachen Fällen zusammensetzt.

Ich nehme an, mit diesen Voraussetzungen kannst Du gezieltere Fragen 
stellen und andere Fragen, die ich hier von Dir gesehen habe, werden 
sich von selbst erledigen.

In diesem Forum wird vor allem versucht, dabei zu helfen, sich selbst zu 
helfen. Siehe 
https://www.mikrocontroller.net/articles/Netiquette#Keine_Rundumschlagprobleme_als_Aufgaben_stellen 
und den Rest des Artikels. In einem übertragenen Sinn sind Deine Fragen 
hauptsächlich als "Rundumschlagsfragen" zu betrachten. Das ist 
vermutlich mit ein Grund, dass die Antworten häufig relativ herb 
formuliert sind.

Ich wünsche erfolgreiches Lernen. Das muss man übrigens auch lernen, das 
Lernen. :-)

Beitrag #6135760 wurde von einem Moderator gelöscht.
von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Psychoanalytiker schrieb im Beitrag #6135722:
> Warum schlägst du nicht in deinem Vorlesungsskript nach, was dein Prof
> mit den Zyklen meint?

Das Problem ist: Ich bin der Prof.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Ich habe an keine spezielle Maschine gedacht.

Doch, hast du, ohne es zu wissen. Nämlich an die vielleicht 
hypothetische Maschine aus deinem Lehrbuch. Und irrtümlich angenommen, 
das wäre wohl immer genau so.

: Bearbeitet durch User
von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Das Problem ist: Ich bin der Prof.

;-)

Schwerpunkt antike Philosophie?

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> yoop schrieb:
>> Oder um eine rein theoretische verallgemeinerte Definition?
>
> Ich habe an keine spezielle Maschine gedacht. Mir ging es tatsächlich
> nur um ein rein theoretisches Beispiel.
>
> Ich kann selber nicht richtig beschreiben, was ich meine. Ich glaube
> deshalb gibt es hier jetzt so viel Unruhe.
>
> Ich bin auf die Frage gestoßen, weil in meinem Lehrbuch Elektrotechnik
> von Esper und Gemmel geschrieben steht, dass ein Maschinenzyklus in der
> Theorie 4 Taktperioden umfasst. Nun ja ich weiß, was Taktperioden sind,
> aber unter Maschinenzyklus kann ich mir nichts vorstellen. Ich finde es
> komisch, dass in einem Schulbuch das Wort verwendet wird, aber nicht
> beschrieben.
>
> Es muss doch irgendeinen Grund haben, warum die Autoren ausgerechnet von
> 4 ausgehen.

Ich denke nicht, dass das wörtlich so dasteht, oder auch nur sinngemäß, 
dass "die Theorie lautet, dass eine Maschinenzyklus 4 Takte umfasst". 
Das wäre Unsinn. Es gibt keinerlei Notwendigkeit dass es 4 Takte sind 
und zahlreiche Gegenbeispiele.
Es wird vermutlich vielmehr so sein, dass die Autoren eine 
hypothetische CPU beschreiben oder auch eine /konkrete/ CPU, bei der 
das so ist.
Das habe ich Dir übrigens auch schon in einem anderen Thread 
geschrieben. Warum ist die Frage noch nicht erledigt? :-)


Falls Du auf Deiner Aussage bestehst, mach mal einen Scan von der 
entsprechenden Seite. Es fällt mir schwer das zu glauben. Sorry. :-) 
Aber es gibt andererseits so viele Bücher in denen Unsinn steht. Es wäre 
immerhin möglich, dass Du den Text richtig wiedergibst.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Es muss doch irgendeinen Grund haben, warum die Autoren ausgerechnet von
> 4 ausgehen.

Vielleicht fanden die Autoren die Zahl 4 schön. Auf der Ebene dieser 
Betrachtungen tut es diese Antwort genau so gut wie ein schnödes "nein". 
Wenns daran geht, Transistoren über die Implementierung auszukippen, 
wirds relevanter.

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Torben S. schrieb:
> Das Problem ist: Ich bin der Prof.

Wenn ernst: Respekt! :-)

Das ist eine Minimal-Bedingung.
1. Lade den Befehl
2. Lade den/die Operanden
3. Führe den Befehl aus
4. Speichere das Ergebnis

Wobei 1.+ 2. + 4 von der Datenbreite/CPU-Struktur abhängig ist und 3. 
vom auszuführenden Befehl.
Auf 8-bit CPUs können das vier Maschinentakte sein.

:-)

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Psychoanalytiker schrieb im Beitrag #6135722:
>> Warum schlägst du nicht in deinem Vorlesungsskript nach, was dein Prof
>> mit den Zyklen meint?
>
> Das Problem ist: Ich bin der Prof.

Hüstel. Ähm ... Kannst Du das mal näher erläutern?

von Psychoanalytiker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Das Problem ist: Ich bin der Prof.

Wo ist dann das Problem? Solche Vollpfosten hatte ich auch als Prof.
Verteile alles, was du nicht verstehst, als Seminarthemen. Deine Opfer 
sollen sich mit vernünftiger Literatur einlesen in die Grundlagen, die 
du nicht verstehst. Es gibt immer 1-2 fähige Nerds, die das hinbekommen. 
Anschließend lässt du es dir von deinen Tutoren erklären.

Einfach jedes Semester wieder ein Seminar zu diesen Themen. Jedes mal 
verstehst du etwas mehr von dem Stoff, den du unterrichten sollst. In 10 
Jahren ist das zwar alles veraltet, aber dann dämmert es dir vielleicht, 
worum es eigentlich geht.

Und wieder ist erwiesen, Professoren brauchen kein Fachwissen, nur eine 
große Portion Narzissmus.

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> In einem übertragenen Sinn sind Deine Fragen
> hauptsächlich als "Rundumschlagsfragen" zu betrachten.

Ich muss leider zugeben, dass ich mir die Foren-Regeln nicht 
durchgelesen hatte. So viele Leute mit meinen Fragen zu belästigen ist 
mir rückblickend tatsächlich sehr peinlich.

Theor schrieb:
> Falls Du auf Deiner Aussage bestehst, mach mal einen Scan von der
> entsprechenden Seite. Es fällt mir schwer das zu glauben. Sorry. :-)

Ich habe jetzt noch einmal die Seite aufgeschlagen. Dort steht es leicht 
anders. Die Autoren schreiben: Alle Assemblerbefehle benötigen eine 
bestimmte Zeit, um vom Mikrocontroller abgearbeitet zu werden. Meist ist 
dies ein einziger Maschinenzyklus mit einer Dauer von 4 Taktperioden.

Nachdem ich den Wikipedia-Artikel gelesen habe, verstehe ich es so, dass 
sich ein Maschinenzyklus aus den Schritten Fetch->Decode->Execute->Save 
zusammensetzen kann. Für jeden Schritt braucht es in diesem speziellen 
Fall natürlich eine Taktperiode. Darum insgesamt 4 Taktperioden. Wenn 
ich euch richtig verstanden habe, dann kann der Befehlszyklus aber auch 
mehrere Schritte umfassen und somit mehr als 4 Taktperioden.

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Psychoanalytiker schrieb:
> Verteile alles, was du nicht verstehst, als Seminarthemen. Deine Opfer
> sollen sich mit vernünftiger Literatur einlesen in die Grundlagen, die
> du nicht verstehst. Es gibt immer 1-2 fähige Nerds, die das hinbekommen.

Da ist bestimmt auch etwas Wahres dran, ich würde das aber nicht so 
negativ sehen.

: Bearbeitet durch User
von Psychoanalytiker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Wenn
> ich euch richtig verstanden habe,

Überhaupt nichts hast du richtig verstanden. Du bist Juniorprof, ja? Ein 
Fehler, aber der wird sich in 5 Jahren erledigt haben.

Solltest du Prof auf Lebenszeit sein, darfst du trotzdem kündigen. Mach 
das.

von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Auf 8-bit CPUs können das vier Maschinentakte sein.

Torben S. schrieb:
> Wenn
> ich euch richtig verstanden habe, dann kann der Befehlszyklus aber auch
> mehrere Schritte umfassen und somit mehr als 4 Taktperioden.

Das siehst du richtig. Das Operanden/Operator-Handling ist CPU-Abhängig. 
Das können halt 8-n.Bit sein. Dazu kommt die Topologie der Cpu. Die 
Grundbedingung ist aber immer der von mir beschriebene vier Schritte- 
Prozess.
Je neuer die Cpu desto komplexer wird das halt...

;-)

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Das siehst du richtig. Das Operanden/Operator-Handling ist CPU-Abhängig.
> Das können halt 8-n.Bit sein. Dazu kommt die Topologie der Cpu. Die
> Grundbedingung ist aber immer der von mir beschriebene vier Schritte-
> Prozess.
> Je neuer die Cpu desto komplexer wird das halt...

Ich habe eben deinen Beitrag von oben gelesen. Er war mir vorher nicht 
aufgefallen.

Vielen Dank an alle!

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Grundbedingung ist aber immer der von mir beschriebene vier Schritte-
> Prozess.

Das würde ich so nicht unterschreiben.

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
A. K. schrieb:
> Das würde ich so nicht unterschreiben.

Dann bist du deine Beschreibung schuldig...

:-(

von Theor (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Naja. Es können auch weniger als 4 Taktzyklen sein.

Für gewisse Fälle, läuft dieser Einwand darauf hinaus, dass 
Zustandsübergänge bei beiden Taktflanken geschehen.

Für andere Fälle darauf, dass gewisse Phasen in einem Takzyklus (oder 
der Zeit zwischen zwei Flanken) vereinigt werden können.


Das übergeordnete Prinzip, um das sich das alles dreht, ist, dass die 
Signalpfade zwischen Speichern (inkl. Registern) und kombinatorischer 
Logik in der Weise gesteuert werden müssen, dass jeweils ein 
festgelegter (der gewollten Funktion entsprechender) Zusammenhang 
hergestellt wird.

Als Erklärung eines Prinzips ist das notwendigerweise sehr abstrakt.

Deswegen mein Hinweis, sich zunächst einmal mit Kombinatorik und 
Speichern zu beschäftigen. Dann sieht man warum bestimmte Dinge so 
gemacht werden und welche Variationsmöglichkeiten es gibt.


Ich will darauf hinaus, dass Du Dich nicht so auf irgendwelche N 
Takzyklen fixierst. Wer geschickt ist, macht Dir so eine CPU auch 
komplett asynchron. Das ist garnicht der Punkt. Es geht darum einen 
"geordneten" Ablauf hinzukriegen. Diese "Ordnung" ist der springende 
Punkt.

Deswegen: Schaue Dir einfache Modell-CPUs an und gehe dann erst zu 
komplexen über.

von A. K. (prx)


Bewertung
2 lesenswert
nicht lesenswert
yoop schrieb:
> Dann bist du deine Beschreibung schuldig...

Und würde damit den gleichen Fehler machen.

Man muss sich eine bestimmte Implementierung vornehmen, egal ob 
hypothetisch oder echt. Bei dieser bleibt man und spielt die Abläufe der 
Befehle durch. In diesem Stadium des Lernprozessess sind 
Verallgemeinerungen oder Ausflüge in andere Implementierungen nicht 
sonderlich sinnvoll. Erst einmal diese vollständig verstehen, nicht 
alles auf einmal.

Erst wenn man das durch hat, kann man sich Varianten widmen. Und wird 
dann vielleicht feststellen, dass in komplexeren Implementierungen bei 
manchen Befehlen trotz formal sich aus der Natur des Befehls erfolgender 
Lese- und Schreiboperationen tatsächlich weder gelesen noch geschrieben 
wird (z.B. FXCH ab Pentium, MOV r,r heute).

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ha! :-) Da fällt mir noch eine schöne Analogie ein. Ich liebe ja 
Auto-Vergleiche. Lach.

Deine Frage ist etwa so, als wenn Du wissen wolltest, ob Ampeln immer 
drei Phasen haben und was da genau geschieht.

Nun wissen wir aber, es gibt auch Fussgänger-Ampeln mit zwei Phasen. Wir 
wissen auch, dass die gelbe "Achtung"-Phase prinzipiell genauso gut 
wegfallen könnte. Und wir wissen schliesslich, dass sich Strassen auch 
ganz ohne Ampeln kreuzen können und die diese Kreuzungen überquert 
habenden Autofahrer das regelmäßog überleben. :-)

Es geht darum eine Festlegung zu treffen, damit es funktioniert, 4 Takte 
sind eine mögliche Festlegung. Fetch und Decode als durch Takteflanke 
getrennte Phasen sind eine mögliche Festlegung. Es gibt auch andere - 
und in Frankreich, Thailand und Italien funktioniert das ganz anders. 
Grins.

Ist das etwas einleuchtender?

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Theor schrieb:
> Naja. Es können auch weniger als 4 Taktzyklen sein.

Bitte keine Detail Verbissenheit!
Es ändert doch nichts da dran, das ein Cpu den von mir vier beschrieben 
Prozeßschritten arbeitet. Das im Detail das entsprechende Handling von 
der der Cpu abhängig ist wurde ja ebenfalls dargestellt. Ja, es gibt 
Cpus die einiges in steigender/fallender Flanke machen können. Das ist 
aber die Komplexe- und nicht die Prinzip-Betrachtung.
Der TO hatte nach dem Prinzip gefragt.

bye :-)

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> Ist das etwas einleuchtender?

Man muss also genau bleiben und den Rahmen klar abgrenzen, in dem man 
sich bewegen will.

Gehen wir von 4 Taktperioden aus und von einem mikroprogrammierbaren 
Steuerwerk. Werden nun die einzelnen Mikrobefehle eines Makrobefehls in 
n Harmonische der Trägerfrequenz abgearbeitet?

: Bearbeitet durch User
von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Werden nun die einzelnen Mikrobefehle eines Makrobefehls in
> n Harmonische der Trägerfrequenz abgearbeitet?

Wahrscheinlich nicht....

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Von gelegentlichen Abirrrungen eines Psychos abgesehen, verlief es 
bisher doch recht harmonisch. Ansonsten sind diese Begriffe hier 
ziemlich daneben.

: Bearbeitet durch User
von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
>> Werden nun die einzelnen Mikrobefehle eines Makrobefehls in
>> n Harmonische der Trägerfrequenz abgearbeitet?
>
> Wahrscheinlich nicht....

Die Frage wird dir detailliert mit Sicherheit nur der Hersteller 
beantworten können. Gerade bei den Multicore-Cpus ist das nicht mehr 
transparent. Ich mache das normal so, das ich den Cpu-timer-Tick nehme 
und mess ...
Varianz ist Messanfang und -ende. Deterministisch ist das nicht ;-)

:-)

von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht noch als Hinweis:
Das wird wird Cpu-Intern sowohl als Hardware- Als auch Software gelöst. 
Stichwort "Micrcode".

von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Stichwort "Micrcode".

natürlich "Microcode"...

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Theor schrieb:
>> Naja. Es können auch weniger als 4 Taktzyklen sein.
>
> Bitte keine Detail Verbissenheit!

Und Du weise mich bitte nicht zurecht. Ich entscheide und ich alleine 
entscheide, was ich wann und wie ausdrücke.

> [...] Das ist
> aber die Komplexe- und nicht die Prinzip-Betrachtung.
> Der TO hatte nach dem Prinzip gefragt.
>
> bye :-)

Der Rest des von Dir zitierten Beitrags stellt genau diesen Zusammenhang 
her.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Ich mache das normal so, das ich den Cpu-timer-Tick nehme
> und mess ...

Agner Fog, die wohl beste Quelle für Befehlslaufzeiten und Analysen von 
x86 Implementierungen, hat mittlerweile seine liebe Not mit schwankenden 
Corefrequenzen und unzuverlässigen Taktzählern.

: Bearbeitet durch User
von yoop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> Und Du weise mich bitte nicht zurecht. Ich entscheide und ich alleine
> entscheide, was ich wann und wie ausdrücke.

Ich dich persönlich zurechtgewiesen? Ich habe meine Meinung allgemein 
geäußert... (????)

A. K. schrieb:
> Agner Fog, die wohl beste Quelle für Laufzeitmessungen und Analysen

Guter Tipp. Kannte ich noch nicht. Werde ich mir anschauen. Danke!

:-)

von A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Torben S. schrieb:
> anders. Die Autoren schreiben: Alle Assemblerbefehle benötigen eine
> bestimmte Zeit, um vom Mikrocontroller abgearbeitet zu werden.

Wichtig: Mikrocontroller, vmtl. sind damit implizit auch nur einfache 
Mikrocontroller gemeint.

> Meist ist
> dies ein einziger Maschinenzyklus mit einer Dauer von 4 Taktperioden.

Diese Aussage ist in dieser Allgemeinheit schlicht und einfach falsch. 
Sollte sich aber herausstellen, dass die Autoren sich irgendwo anders im 
Text auf 8-Bit PICs beschränken...

: Bearbeitet durch User
von Psychoanalytiker (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Torben S. schrieb:
> Torben S. schrieb:
>> Werden nun die einzelnen Mikrobefehle eines Makrobefehls in
>> n Harmonische der Trägerfrequenz abgearbeitet?
>
> Wahrscheinlich nicht....

Der Prof redet mit sich selbst und beantwortet seine eigenen Fragen 
wider besseren Wissens falsch... Neue Methodik der Didaktik, oder 
dümmlicher Troll?

Selbstverständlich arbeiten Prozessoren intern mit unterschiedlichen, 
auch nicht-ganzzahligen Vielfachen eines Grundtakts, Stichwort PLL und 
Clock Multiplier.

Hier gehts wohl nicht mehr um inhaltliche Fragen, sondern um Torbens 
Ausleben seines Narzissmuss.

von Torben S. (Firma: privat) (torben_25)


Bewertung
0 lesenswert
nicht lesenswert
Psychoanalytiker schrieb:
> Selbstverständlich arbeiten Prozessoren intern mit unterschiedlichen,
> auch nicht-ganzzahligen Vielfachen eines Grundtakts, Stichwort PLL und
> Clock Multiplier.

Dank für deine Hilfe.

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
yoop schrieb:
> Theor schrieb:
>> Naja. Es können auch weniger als 4 Taktzyklen sein.
>
> Bitte keine Detail Verbissenheit!
> Es ändert doch nichts da dran, das ein Cpu den von mir vier beschrieben
> Prozeßschritten arbeitet.

Nein. Das ist vor allem von der Wortwahl her vollkommen daneben. Ich 
zitiere es nochmal:

yoop schrieb:
>
> 1. Lade den Befehl
> 2. Lade den/die Operanden
> 3. Führe den Befehl aus
> 4. Speichere das Ergebnis
>
> Wobei 1.+ 2. + 4 von der Datenbreite/CPU-Struktur abhängig ist und 3.
> vom auszuführenden Befehl.
> Auf 8-bit CPUs können das vier Maschinentakte sein.

Zum ersten sind 1. bis 4. keine "Schritte". Schon gar nicht "Zyklen" 
oder "Takte". Man könnte eventuell noch "Phase" oder "Stadium" dazu 
sagen. Aber je nach Befehl können 2. oder 4. auch leer sein [1][2]. Und 
bei "NOP" könnte man durchaus der Meinung sein, daß auch 3. leer ist.

Vor allem aber suggeriert der Begriff "Zyklus" - in "Befehlszyklus" 
genauso wie in "Maschinenzyklus" als auch "Taktzyklus" eine bestimmte, 
wohldefinierte Zeitdauer. Beim Taktzyklus ist noch sehr klar, was 
gemeint ist: das ist eine Periode der Taktfrequenz. Und wenn wir mal vom 
Normalfall einer konstanten Taktfrequenz ausgehen: eine konstante Zeit.

Beim "Befehlszyklus" gibt es immerhin eine logisch konsistente 
Bedeutung: das ist die Zeit, die benötigt wird, um einen 
(Maschinen)befehl auszuführen. Aber auch hier bekommen wir mit 
Prefetching (hatten schon die ersten 68xxer) oder gar Pipelining ernste 
Probleme, weil sich die Ausführung von Befehlen überlappen kann.

Spätestens bei "Maschinenzyklus" verlassen wir das Gebiet allgemein 
gültiger Begrifflichkeiten. Dieser Begriff hat außerhalb einer konkreten 
Architektur (vollkommen egal ob hypothetisch oder real existierend) 
keine exakte Bedeutung.

Und deswegen ist die Frage des TE - so wie er sie gestellt hat - 
sinnlos.  Deswegen ist auch unglaubwürdig, daß das so in einem Buch 
gestanden haben soll. Trotzdem habe ich hier ein Buch im Regal stehen, 
das genau von Befehls-, Machinen und Taktzyklen spricht. Aber in diesem 
Buch geht es eben um eine konkrete Architektur (den U880 = Z80).


[1] "CLR R1" = "lösche R1" - hat keinen Operanden zu laden
[2] "SEI" = "setze das I-Flag (erlaube Interrupts)" hat weder einen 
Operanden zu laden noch ein Ergebnis zu speichern

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Axel S. schrieb:
> Deswegen ist auch unglaubwürdig, daß das so in einem Buch
> gestanden haben soll.

Wobei nicht jeder, der ein Lehrbuch schreibt, die Weisheit mit Löffeln 
gefressen hat. Es kommt schon mal vor, dass jemand den Raum zwischen 
sich und seinem Brett vorm Kopf als Universum definiert.

> Buch geht es eben um eine konkrete Architektur (den U880 = Z80).

Vielleicht ist das auch der Fall, steht aber nicht so genau drin. Oder 
diese Assoziation wurde hier unterschlagen.

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Bewertung
0 lesenswert
nicht lesenswert
Axel S. schrieb:
> Spätestens bei "Maschinenzyklus" verlassen wir das Gebiet allgemein
> gültiger Begrifflichkeiten. Dieser Begriff hat außerhalb einer konkreten
> Architektur (vollkommen egal ob hypothetisch oder real existierend)
> keine exakte Bedeutung.

Volle Zustimmung.

Axel S. schrieb:
> Aber in diesem
> Buch geht es eben um eine konkrete Architektur (den U880 = Z80).

Das könnte hinkommen, beim Z80 ist der Begriff "Maschinenzyklus" 
definiert.

"zilog UM0080.pdf" dort unter Timing
http://www.zilog.com/force_download.php?filepath=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTk2T0RBdlZVMHdNRGd3TG5Ca1pnPT0=

Bei den ganzen 65xx und 68xx(x) taucht der Begriff eher weniger auf. Die 
brauchen aber auch nicht immer so viele Takte für einen Befehl wie 
etliche 8xxx.

War früher mal eine echter Glaubenskrieg ob der 6502 oder der doppelt so 
schnell getaktet Z80 nun schneller ist:-)

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Irgend W. schrieb:
> Das könnte hinkommen, beim Z80 ist der Begriff "Maschinenzyklus"
> definiert.

Die 4 Taktzyklen passen aber nicht ganz dazu, denn bei der Z80 sind es 
eine Mischung aus 4 und 3 Takten pro Maschinenzyklus.

Auch im Kontext von Microchips PICs findet sich dieser Begriff, und dort 
sind es immer 4 Takte. Oben zitiert Torben die Autoren:

"Alle Assemblerbefehle benötigen eine bestimmte Zeit, um vom 
Mikrocontroller abgearbeitet zu werden. Meist ist dies ein einziger 
Maschinenzyklus mit einer Dauer von 4 Taktperioden."

Die Z80 würde kaum jemand als Mikrocontroller bezeichnen.

: Bearbeitet durch User
von Helmut (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Thorben,
so weit ich weiß, ist im Moment der modernste Kurs zum erlernen der 
grundlegenden Strukturen der Kurs

"from NAND to Tetris"

Der geht los vom Nand-Gatter und wird bis zum FPGA-Computer inclusive 
OO-Compiler durchgezogen.

https://www.nand2tetris.org/

Youtube-Video "Shimon Schocken: The self-organizing computer course"

Wenn Du ein wirklich tiefes, fundiertes Wissen erarbeiten willst, 
solltest Du den mal durch machen.

von Torben (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Axel S. schrieb:
> Nein. Das ist vor allem von der Wortwahl her vollkommen daneben. Ich
> zitiere es nochmal:
>
> yoop schrieb:
>>
>> 1. Lade den Befehl
>> 2. Lade den/die Operanden
>> 3. Führe den Befehl aus
>> 4. Speichere das Ergebnis
>>
>> Wobei 1.+ 2. + 4 von der Datenbreite/CPU-Struktur abhängig ist und 3.
>> vom auszuführenden Befehl.

Möglicherweise hat der User yoop einen kleveren Ansatz gewählt.
Statt die Frage zu beantworten, was ein Maschinenzyklus ist, hat er 
einfach ein Schema (Lade Befehl, Lade Operand, Führe aus, Speichere) 
vorgegeben und dieses als einen Vertreter eines beispielhaften 
Maschinenzyklus herangezogen unabhängig auf welcher Maschine er 
ausgeführt wird.

Wenn man anderer Meinung ist, müsste man widerlegen, dass der Zyklus

1. Lade den Befehl
2. Lade den/die Operanden
3. Führe den Befehl aus
4. Speichere das Ergebnis

ein Maschinenzyklus ist. Dann dürfte dieser Zyklus auf keinen einzigen 
Maschinenbefehl zutreffen. (PS.: Wie heißt diese Form der 
Beweisführung?)

Kann das jemand?

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> "Alle Assemblerbefehle benötigen eine bestimmte Zeit, um vom
> Mikrocontroller abgearbeitet zu werden. Meist ist dies ein einziger
> Maschinenzyklus mit einer Dauer von 4 Taktperioden."

Der erste Satz ist etwas missverständlich - ja, jeder Befehl braucht 
eine bestimmte Zeit, aber nicht alle die gleiche.

Der zweite Satz ist dagegen eine unzulässige Verallgemeinerung, das 
stimmt nicht mal für den uralten Z80.

Axel S. schrieb:
> Deswegen ist auch unglaubwürdig, daß das so in einem Buch
> gestanden haben soll

Überhaupt nicht, es stimmt längst nicht alles nur weil es in einem Buch 
steht. Und was an Universitäten über Prozessoren und Kontroller gelehrt 
wird ist oft haarsträubend.

Georg

von Zeno (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Torben S. schrieb:
> Das Problem ist: Ich bin der Prof.

Ganz schlecht, wenn der Prof dümmer als die Studenten ist.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
georg schrieb:
>> "Alle Assemblerbefehle benötigen eine bestimmte Zeit, um vom
>> Mikrocontroller abgearbeitet zu werden. Meist ist dies ein einziger
>> Maschinenzyklus mit einer Dauer von 4 Taktperioden."
>
> Der erste Satz ist etwas missverständlich - ja, jeder Befehl braucht
> eine bestimmte Zeit, aber nicht alle die gleiche.

Schlimmer: Nicht jeder Befehl braucht immer die gleiche Zeit, denn der 
exakt gleiche Befehl kann u.U. mal schneller und mal langsamer sein. 
Sogar bei bei so einfachen Prozessoren wie 6502. Wodurch dieser Satz zur 
Nullnummer eindampft, zumal ausserhalb von Mikrocontrollern nicht jeder 
Befehl überhaupt Zeit braucht.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Zeno schrieb:
> Ganz schlecht, wenn der Prof dümmer als die Studenten ist.

Dass Profs bei bestimmten Kenntnissen etwas hinterdrein hoppeln, das war 
auch in meinem Informatik-Studium Anfang der 80er der Fall. 
Mikroprozessoren waren recht neu, erst recht wirklich brauchbare wie 
68000. Die Profs waren aber nicht ganz so neu. Aktuelle Kenntnisse waren 
bei den Assistenten deutlich verbreiteter als bei den Profs - die Assis 
hielten auch nicht selten die Vorlesungen.

Das entwertete die Profs freilich nicht, denn es ging im Studium nicht 
um Details der 68000 CPU. Grundlegende Vorlesungen wie "Compilerbau" 
oder "Betriebssysteme" haben kaum Bezug zu realer Hardware. Weshalb der 
Begriff "dümmer" nicht angebracht war.

: Bearbeitet durch User
von Wissen ist Macht (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Okay. Nehmen wir mal den ADD-Befehl.
>
> Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die
> irgendwie benennen?

Dein Ansatz alles als 'Programm' aufzufassen ist falsch respektive an 
seine Grenzen gestossen.
Wenn du verstehen willst, was beim ADD Befehl passiert, dann solltest du 
mal eine CPU selber bauen. Mit Verilog oder VHDL ist das kein Hexenwerk 
und dabei erklärt sich Fetch (RegisterTransfer von extern in 
CPU-Register), Decode (Inhalt InstructionRegister schaltet Datenpfad in 
CPU) und Execute (Transfer Operandenregister über ALU-Rechenwerk in 
Zielregister (entsprechend geschaltetet Datenpfad)) von selbst.

Der Picoblaze ist gut dokumentiert und es hat auch einen 
VHDL-Nachbau-Code:

https://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf
https://www.mikrocontroller.net/articles/PiBla

von Helmut (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Wenn du verstehen willst, was beim ADD Befehl passiert, dann solltest du
>mal eine CPU selber bauen.

Das hatte ich schon erwähnt, scheint aber nicht von Interesse.

Mittlerweile gibt's ja für die Studenten ziemlich gute Kurse:
>https://www.nand2tetris.org/

von Wissen ist Macht (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Helmut schrieb:
>>Wenn du verstehen willst, was beim ADD Befehl passiert, dann solltest du
>>mal eine CPU selber bauen.
>

> Mittlerweile gibt's ja für die Studenten ziemlich gute Kurse:
>>https://www.nand2tetris.org/

Hm, kann ich schlecht bewerten ob der Kurs gut oder schlecht ist, für 
mich als einen der das seit 30 Jahren macht, scheint 
https://b1391bd6-da3d-477d-8c01-38cdf774495a.filesusr.com/ugd/56440f_96cbb9c6b8b84760a04c369453b62908.pdf 
(aus dem nand2tetris-kurs) brauchbar. Aber manche haben halt ihre ganz 
spezielle Lernweise,

> Das hatte ich schon erwähnt, scheint aber nicht von Interesse.

von der sie nicht im geringsten abweichen können und bspw. auch unter 
dem Damoklesschwert der Zwangsexmatrikulation praktische Laborarbeit 
scheuen wie der Teufel das Weihwasser.

von 8bit (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Schlimmer: Nicht jeder Befehl braucht immer die gleiche Zeit, denn der
> exakt gleiche Befehl kann u.U. mal schneller und mal langsamer sein.
> Sogar bei so einfachen Prozessoren wie 6502.

Aber nicht bei dem noch einfacheren bo8.

Beim bo8 hängt bei Verzweigungen die Dauer zwar davon ab,
ob gesprungen wird. Beim 6502 hängt sie aber auch davon ab,
ob eine 256-Byte-Grenze übersprungen wird.

von yoop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert

von Torben (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ein Text in einem Schulbuch war der Grund, warum ich in diesem Thread 
wissen wollte, ob ich die Begriffe Masschinenzyklus und Taktzyklus 
richtig abgrenze.

Esper, Gemmel, Malburg und Stolzenburg sind in ihrem Lehrbuch 
Elektrotechnik für den Ausbildungsberuf IT-Systemelektroniker vom 
Westermann-Verlag der Meinung, alle Assemblerbefehle benötigten eine 
bestimmte Zeit, um vom Mikrocontroller abgearbeitet zu werden, dies sei 
meist ein einziger Maschinenzyklus mit einer Dauer von 4 Taktperioden.

Ich verstehe es nun so, dass die Autoren damit sagen wollen, dass bei 
der ersten Taktflanke die Fetch-Phase eingeleitet wird, bei der zweiten 
die Load, bei der dritten die Execute und bei der vierten die Store. 
Mithilfe des Formus habe ich jetzt herausgefunden, dass die Autoren eine 
Verallgemeinerung aufgestellt haben. Man kann diese Aussage nicht auf 
alle Prozessoren und Architekturen übertragen.

Im Nachhinein ist mir ausgefallen, dass sich die Autoren in ihrem Buch 
auf den PIC16F84A beziehen. Das haben auch einiger hier im Forum schon 
vermutet.

Wichtige Kommentare in diesem Zusammenhang waren:

georg schrieb:
> Der zweite Satz ist dagegen eine unzulässige Verallgemeinerung, das
> stimmt nicht mal für den uralten Z80.

yoop schrieb:
> Das ist eine Minimal-Bedingung.
> 1. Lade den Befehl
> 2. Lade den/die Operanden
> 3. Führe den Befehl aus
> 4. Speichere das Ergebnis

Wenn es keine Einwände mehr gibt. Würde ich das Thema hiermit beenden 
und mich bei allen bedanken.

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben S. schrieb:
> Okay. Nehmen wir mal den ADD-Befehl.
>
> Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die
> irgendwie benennen?

Bein Kaugummiautomaten konnte man die "Maschinenzyklen" früher in etwa 
hören.

Der ADD Befehl beim Intel (8086/8088) und anderen Cpus ist 
problematisch, da wahrscheinlich intern (Geschichtsbedingt) 
beschleunigt.

Vom Hexcode einfacher wäre push all: - 5a (01011010) bzw. Münzeinwurz 
beim Kaugummiautomaten.


Takt war wohl so einmal pro Woche.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.