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
Beitrag #6135649 wurde von einem Moderator gelöscht.
Beitrag #6135650 wurde von einem Moderator gelöscht.
Ein Befehlszyklus besteht aus der kompletten Abarbeitung eines Maschinenbefehls und benötigt min. einen, meist aber mehrere Maschinenzyklen, die jeweils einen Taktzyklus benötigen.
Okay. Nehmen wir mal den ADD-Befehl. Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die irgendwie benennen?
Das kann bei jeder Implementierung anders aussehen.
Torben S. schrieb: > Okay. Nehmen wir mal den ADD-Befehl. > > Welche Maschinenzyklen gehören denn zu diesem Befehl? Kann man die > irgendwie benennen? https://books.google.de/books?id=djUjBgAAQBAJ&pg=PA337&lpg=PA337&dq=maschinenzyklus+add&source=bl&ots=rxZfjiBZwH&sig=ACfU3U0U1tH_pTK1WAOpmLZe5iRJoWLwTw&hl=de&sa=X&ved=2ahUKEwjHutfmnsDnAhUD36QKHW8WCNAQ6AEwAXoECAUQAQ
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... ;-)
yoop schrieb: > Die findest du im Datenblatt der von dir nicht benannten CPU... In x86 Datasheets steht das schon seit Jahrzehnten nicht mehr drin.
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.
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
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? :-(
@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.
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? (^_^)
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. ;-)
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... :-(
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. ;-)
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
@ 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.
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.
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
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.
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.
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. :-)
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?
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.
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.
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
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.
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... ;-)
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!
yoop schrieb: > Grundbedingung ist aber immer der von mir beschriebene vier Schritte- > Prozess. Das würde ich so nicht unterschreiben.
A. K. schrieb: > Das würde ich so nicht unterschreiben. Dann bist du deine Beschreibung schuldig... :-(
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.
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).
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?
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 :-)
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
Torben S. schrieb: > Werden nun die einzelnen Mikrobefehle eines Makrobefehls in > n Harmonische der Trägerfrequenz abgearbeitet? Wahrscheinlich nicht....
Von gelegentlichen Abirrrungen eines Psychos abgesehen, verlief es bisher doch recht harmonisch. Ansonsten sind diese Begriffe hier ziemlich daneben.
:
Bearbeitet durch User
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 ;-) :-)
Vielleicht noch als Hinweis: Das wird wird Cpu-Intern sowohl als Hardware- Als auch Software gelöst. Stichwort "Micrcode".
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.
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
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! :-)
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
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.
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.
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
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
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:-)
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
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/ https://www.youtube.com/watch?v=iE7YRHxwoDs Wenn Du ein wirklich tiefes, fundiertes Wissen erarbeiten willst, solltest Du den mal durch machen.
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?
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
Torben S. schrieb: > Das Problem ist: Ich bin der Prof. Ganz schlecht, wenn der Prof dümmer als die Studenten ist.
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.
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
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
>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/
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.
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.