Hallo! Mich beschäftigen zwei Verständnisfragen: 1)Wie wird ein Maschinenbefehl dekodiert und dann als Mikroprogramm realisiert? Das IR-Register enthät ja den aktuellen OP-Code. Und dieser OP-Code wird mit bekannten Mustern verglichen. Nur wie funktioniert das, das dannach daraus einzelne Mikroinstruktionen werden? 2)Jeder Maschinenbefehl hat ein zum Maschinenbefehl gehörendes Mikroprogramm. Nur wie ermittelt das Steuerwerk wo das entsprechende Mikroprogramm im Mikroprogrammspeicher zu finden ist? Über den OP-Code?
:
Bearbeitet durch User
Du solltest angeben, um welchen Mikroprozessor es geht. Denn die Antwort hängt ganz stark davon ab und sollte wohl in der Dokumentation dessen stehen. Im übrigen muss nicht zwangsläufig jeder Befehl die Abarbeitung von Mikrocode auslösen -> Siehe RISC
Pat ". schrieb: > 1)Wie wird ein Maschinenbefehl dekodiert und dann als Mikroprogramm > realisiert? Erfundenes Beispiel: Ein Prozessor, bei dem ein 7 Bit Feld des Befehlscodes die Operation angibt, der Rest des Befehlscodes sind Konstanten und Register. Er hat einen Mikroprogrammspeicher aus 1024 Worten. Jeder der 128 Opcodes verweist direkt auf einen Block aus 8 Mikroprogrammworten. Manche Opcodes brauchen weniger als 8, manche mehr, also wird ungenutzer Platz kurzer Befehle vom Mikroprogramm langer Befehle genutzt, indem dort reingesprungen wird. Reale Fälle sind weniger simpel zu dekodieren. Da wird eine Gatterlogik die relevanten Komponenten des Opcodes in eine Startadresse im Mikroprogrammspeicher umsetzen.
:
Bearbeitet durch User
Da haste einen FPGA-Code fürs decodieren und datapath muxen: https://www.mikrocontroller.net/svnbrowser/pibla/00_hw/src/pibla.vhd?view=markup Projektseite dort: https://www.mikrocontroller.net/articles/PiBla Da das ganze ein Nachbau eines Xilinx-cores ist, kann man bezüglich des Blockdiagrammes auch dort nachschauen: https://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf
Pat ". schrieb: > Mich beschäftigen zwei Verständnisfragen: > > 1)Wie wird ein Maschinenbefehl dekodiert und dann als Mikroprogramm > realisiert? Bei jeder Architektur anders. > Das IR-Register enthät ja den aktuellen OP-Code. Und dieser OP-Code > wird mit bekannten Mustern verglichen. Nein, verglichen wird da nichts. I.d.R. ist die Codierung eines Befehlssatzes darauf ausgelegt, möglichst leicht dekodiert werden zu können. Oft kann man den Opcode in wenige Gruppen von Bits zerlegen, die jeweils ihre eigene Bedeutung haben. Bspw. 4 bit, um eine ALU-Operation auszuwählen, jeweils 3 Bit für Quell- bzw. Zielregister. usw. usf. Wenn du dir mal den Befehlsvorrat einer real existierenden CPU ansiehst, dann wird dir das direkt auffallen. Sehr instruktiv ist in dieser Hinsicht z.B. der 6502, auch weil da jeder Opcode maximal 8 Bit lang ist und man den Befehlssatz in einem 16x16 Gitter darstellen kann. > 2)Jeder Maschinenbefehl hat ein zum Maschinenbefehl gehörendes > Mikroprogramm. Nicht notwendigerweise. Mikroprogrammierung war mal eine Weile in Mode, ist dann aber ganz schnell wieder verschwunden. > Nur wie ermittelt das Steuerwerk wo das entsprechende > Mikroprogramm im Mikroprogrammspeicher zu finden ist? > Über den OP-Code? Natürlich. Wie denn sonst, wenn man davon ausgeht, daß jeder Opcode seine eigene Mikrocode Implementierung braucht?
Sehr schön auch beim Zilog Z80 zu sehen, die Aufteilung in einzelne bits des op-codes. Alle bits gleich 0 löst dann eben keinerlei Reaktion aus, der Befehl lautet schlicht "nop", no operation, einen Zyklus lang nichts tun...
Pat ". schrieb: > 1)Wie wird ein Maschinenbefehl dekodiert und dann als Mikroprogramm > realisiert? 'programm' im englischen bedeudet nicht 100%das selbe wie das deutsche Programmlisting. Programmierung als Ablaufsteuerung kann auch Mechanik sein wie bei dem Webmaschinen mit hölzernen Locvhkarten: https://de.wikipedia.org/wiki/Jacquardwebstuhl Microcode bedeutet hier letzlich steuersignale, die bspw. per Multiplexer oder Gates die Eingänge der ALU mit den jeweiligen srq-datenquellen verbinden (register aus dem Registerblock, Datenport, etc.). Beim Decodieren können u.u. die bits des Instruction codes direkt als steuersignale für die Multiplex etc. genutzt werden. > 2)Jeder Maschinenbefehl hat ein zum Maschinenbefehl gehörendes > Mikroprogramm. Nur wie ermittelt das Steuerwerk wo das entsprechende > Mikroprogramm im Mikroprogrammspeicher zu finden ist? Über den OP-Code? Siehe LUT-Tabelle, der OP-Code innerhalb des Maschiernenbefehls ist die Adresse, der microcode ist dan das Datenwort in der LUT. Ebenfalls im Mikrocode steht die nächste Adresse der LUT bei mehr-Zyklen maschinen. Sieht man gut beim Mototola 68000 (selbst ein NOP braucht 3 Takte), dieser Prozessor gilt auch als Klassiker des Mikrocode-Architektur http://www.easy68k.com/paulrsm/doc/chip68k.jpg http://gendev.spritesmind.net/forum/viewtopic.php?t=3023
A. K. schrieb: > Fpgakuechle K. schrieb: >> selbst ein NOP braucht 3 Takte > > Es sind 4. Danke für die Korrektur, ich war grad zu morgen-faul konkret nachzulesen. Hiermit nachgeholt: http://bitsavers.informatik.uni-stuttgart.de/components/motorola/68000/68000_16-Bit_Microprocessor_Apr83.pdf > Das ist der Grundzyklus. Der Grundzyklus für die kurzen Befehle (16bit Innstruction word). Bei längeren Befehlen dauert es noch länger. Oder wenn die internen 32bit register über den 16bit datenbus beschrieben/gelesen werden müßen.
A. K. schrieb: > Erfundenes Beispiel: Ein Prozessor, bei dem ein 7 Bit Feld des > Befehlscodes die Operation angibt, der Rest des Befehlscodes sind > Konstanten und Register. Er hat einen Mikroprogrammspeicher aus 1024 > Worten. Jeder der 128 Opcodes verweist direkt auf einen Block aus 8 > Mikroprogrammworten. Manche Opcodes brauchen weniger als 8, manche mehr, > also wird ungenutzer Platz kurzer Befehle vom Mikroprogramm langer > Befehle genutzt, indem dort reingesprungen wird. Dann bin ich also nicht der Einzige für den alle Schaltpläne die Ursache eines jeden Spaghetticodes sind.
Pat ". schrieb: > Mich beschäftigen zwei Verständnisfragen: Immer noch? Was ist aus dem Beitrag "Maschinenbefehl" geworden?
Beitrag #6390506 wurde von einem Moderator gelöscht.
A. K. schrieb: > Reale Fälle sind weniger simpel zu dekodieren. Der Spaghetticode ist immer und überall. Mit strukturiertem Programmieren wird er verdeckt. Durch objektorientierte Sprachen wird er verlagert, in die Verwaltungsstrukturen, die Gehirne der Entwickler. Wer das Programmieren an einer objektorientierten Sprache lernt, kommt wahrscheinlich auch im Leben nich' mehr klar. Der Spaghetticode ist immer und überall.
letallec schrieb: > Dann bin ich also nicht der Einzige für den alle Schaltpläne die Ursache > eines jeden Spaghetticodes sind. Mikroprogrammschemata gibts sehr verschiedene. Obiges Beispiel ging von einem im Kern sequentiellem Schema aus, vergleichbar Maschinenprogrammen, mit Mikroprogrammzähler und bedingt verfolgter alternativer Folgeadresse vgl Sprungadresse. Alternativ können auch in jedem Befehl zwei Folgeadressen enthalten sein, ohne jede sequentielle Befehlsfolge. Da gibts dann also keinen inkrementierten Mikroprogrammzähler, sondern die Bedingung entscheidet zwischen beiden Folgeadressen. Das kann dann vogelwild durcheinander gehen. Ein Vorbild dazu ist die IBM 650. Programm und Daten befanden sich auf einem Trommelspeicher. Weshalb es keinen Programmzähler gab, sondern jeder Befehl die Adresse des Folgebefehls enthielt und geschickte Programmierer die Befehle so auf der Trommel anordneten, dass die Laufzeit der Befehle zur Trommelrotation passte. Also eigentlich nie zwei aufeinander folgend ausgeführte Befehle hintereinander standen. Muss Spass gemacht haben, so ein Programm zu lesen.
:
Bearbeitet durch User
A. K. schrieb: > Ein Vorbild dazu ist die IBM 650. Programm und Daten befanden sich auf > einem Trommelspeicher. Infolgedessen war der nächste Befehl zu dem > Zeitpunkt schon wegrotiert, zu dem er gebraucht wurde. Nicht nur Trommelspeicher, sowas gabs dann wieder beim XT bei der Festplatte als interleave factor: https://www.classic-computing.org/tag/st506/#8
Fpgakuechle K. schrieb: > Nicht nur Trommelspeicher, sowas gabs dann wieder beim XT bei der > Festplatte als interleave factor: > https://www.classic-computing.org/tag/st506/#8 Klar, aber da hat das ja keiner mitgekriegt, ausser dem Programmierer des Treibers für Floppy oder HD. Bei der 650 war dieses von der Laufzeit der Befehle abhängige und damit keineswegs konstante Interleaving Teil der Formulierung des Anwenderprogramms.
> alle Schaltpläne die Ursache eines jeden Spaghetticodes sind.
Transputer haben sogar schon Spaghettiopcodes!
Leider ist das Manual dazu als 'Confidential' gekennzeichnet.
Sonst haette ich es mal zu Belustigung angehaengt.
A. K. schrieb: > IBM 650 Dem gegenüber steht mit den objektorientierten Sprachen die Abstraktion einer nicht vorhandenen Realität, der spaghettifreie Code.
letallec schrieb: > A. K. schrieb: >> Reale Fälle sind weniger simpel zu dekodieren. > > Der Spaghetticode ist immer und überall. > > Mit strukturiertem Programmieren wird er verdeckt. Nein und Ja. Spaghetticode ist nicht das Problem, weil 'GOTO' und Sprünge nicht das Problem sind. Das Problem ist Sourcecode ohne hilfreiche Erklärung, Spec,PAP, etc. und Programmierer mit eingeschränkten Wissen über Programmier- und Dokumentationsmöglichkeiten. Man kann verständliche Assemblerprogramme schreiben und dokumentieren. Was aber nichts nutzt, solange der andere Assembler verteufelt und in Denkblockaden rennt sobald es um Hardwarerealisierungen geht. IMHO ist das wie mit dem sog. "Deppen-Apastroph" - manche krakelen, begeifern und ereifern sich über dümmlichen Gebrauch der Zeichensetzung, ander juckt's nicht im Geringsten wenn es seinen Zweck erfüllt. >Dem gegenüber steht mit den objektorientierten Sprachen die Abstraktion >einer nicht vorhandenen Realität, der spaghettifreie Code. Klar kann man Spaghetti durch Lasagne ersetzen, gekotzt wird trotzdem: https://en.wikipedia.org/wiki/Spaghetti_code#Related_phrases
Fpgakuechle K. schrieb: > IMHO ist das wie mit dem sog. "Deppen-Apastroph" - manche krakelen, > begeifern und ereifern sich über dümmlichen Gebrauch der Zeichensetzung, > ander juckt's nicht im Geringsten wenn es seinen Zweck erfüllt. Ich will auf was Anderes hinaus: Die Stringtheorie. Objektorientierte Sprachen sind ein Schritt auf dem Weg zur Umsetzung der perfekten Logik des reinen Kalküls. Leider verschwindet der Traum von der perfekten Maschine nach jedem Erwachen wenn man wieder Hand anlegen muß. Jedesmal.
> ein Schritt auf dem Weg zur Umsetzung > der perfekten Logik des reinen Kalküls. Leider verschwindet der Traum > von der perfekten Maschine nach jedem Erwachen wenn man wieder Hand > anlegen muß. Jedesmal. Kalter Kaffee, so ähnlich hat es schon Douglas Adams im 'Hitchhiker' beschrieben. https://de.wikipedia.org/wiki/Hintergr%C3%BCnde_zu_Per_Anhalter_durch_die_Galaxis#Der_Sinn_des_Universums_beziehungsweise_was_passiert_wenn_er_gefunden_wird%E2%80%A6 „Es gibt eine Theorie, die besagt, wenn jemals irgendwer genau rausfindet, wozu das Universum da ist und warum es da ist, dann verschwindet es auf der Stelle und wird durch etwas noch Bizarreres und Unbegreiflicheres ersetzt. Es gibt eine andere Theorie, nach der das schon passiert ist.“
time2weltherrschaft-- schrieb: > Kalter Kaffee Natürlich. time2weltherrschaft-- schrieb: > „Es gibt eine Theorie, die besagt, wenn jemals irgendwer genau > rausfindet, wozu das Universum da ist und warum es da ist, dann > verschwindet es auf der Stelle und wird durch etwas noch Bizarreres und > Unbegreiflicheres ersetzt. Es gibt eine andere Theorie, nach der das > schon passiert ist.“ Warum nicht gleich Harry Potter? Wenn Du einen Zauberstab vorweisen kannst mit dem man nicht behebbare Disfunktionalitäten wie mit einer objektorientierten Sprache verursachen kann, bin ich ganz nah bei Dir.
P.S.: ...um Dich zu holen. Wo eon Zauberstab ist, da müssen noch mehr sein.
letallec schrieb: > Warum nicht gleich Harry Potter? Wenn Du einen Zauberstab vorweisen > kannst ... bin ich ganz nah bei Dir. Das klingt mir irgendwie zu schwul
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.