MMIX

MMIX

MMIX [ˌɛmɪks] ist ein 64-Bit-Modellcomputer (engl: abstract machine) mit einem RISC-Befehlssatz. Donald Knuth benutzt ihn in seinem mehrbändigen Standardwerk The Art of Computer Programming, um die vorgestellten Algorithmen zu beschreiben. MMIX ersetzt den älteren MIX-Modellcomputer der ersten Auflagen durch eine moderne, erweiterte Version.

Knuth begründet diese Wahl mit dem Hinweis, dass das Programmieren in einer hypothetischen Assemblersprache verhindert, dass sein Werk rasch veraltet wirkt. Man hätte in den letzten Jahrzehnten immer wieder neue Programmiersprachen gesehen, die nur kurze Zeit Interesse fanden. Zudem erlaubt eine hardwarenahe Sprache, die Probleme bei der effizienten Implementation von Algorithmen konkreter darzustellen als eine höhere Programmiersprache.

Der MMIX wird über 256 Maschinenbefehle gesteuert. Die meisten, insbesondere die arithmetisch-logischen Befehle, besitzen ausschließlich Register-Operanden. Wie moderne RISC-Prozessoren verfügt der MMIX über eine relativ hohe Zahl von Allzweck-Registern, 256 beim MMIX. Zusätzlich verfügt er über 32 Spezialregister zum Anzeigen von Fehlern und bestimmten Zuständen. Daneben erlaubt MMIX, im Gegensatz zum erwähnten MIX, auch virtuelle Adressierung und damit die Untersuchung von Speicheralgorithmen.

Die Tatsache, dass der MMIX nicht als Hardware, sondern als Software-Simulation implementiert ist, ist wohl einer der Gründe, warum er vor allem in der Forschung und der Lehre eingesetzt wird. Insbesondere auf dem Gebiet der Algorithmenentwicklung und der Effizienzmessung von Algorithmen ist der MMIX von großem Nutzen. Die Simulatorsoftware gibt Auskunft über die Laufzeit bzw. die benötigten Taktzyklen und die Anzahl der ausgeführten Befehle einzelner Algorithmen und ermöglicht so einen direkten und ungestörten Vergleich verschiedener Algorithmen.

Inhaltsverzeichnis

Architektur

MMIX ist ein Binärcomputer mit einem 64-Bit großen virtuellen Adressraum und 32-Bit Befehlen, die die big-endian-Konvention benutzen.

Befehle

Alle Befehle besitzen zugehörige Mnemonics. Zum Beispiel gehört Befehl 32 zu ADD. Die meisten Befehle haben die Form OP X,Y,Z, wobei OP für die Anweisung und X für das Register, in dem das Ergebnis gespeichert werden soll, steht. Der Rest steht für die Operanden der Anweisung. Jedes Feld ist acht Bit breit. ADD $0,$1,3, wird beispielsweise den Inhalt aus Register $1 mit 3 addieren und in Register $0 speichern.

MMIX Programme benutzen normalerweise die MMIXAL-Assembler Sprache (siehe dazu die Hello-World-Seite).

Register

Es gibt 256 Allzweckregister im MMIX-Chip, die von $0 bis $255 durchnummeriert sind, und 32 Spezialregister. Wenn X eine Zahl von 0 bis einschließlich 255 bezeichnet, legen die Register rL und rG fest, ob $X ein lokales oder globales Register ist.

Lokaler Registerstack

Der lokale Registerstack führt seine eigenen Unterroutinen mit eigenen rL lokalen Registern ($0 bis $(rL-1)) durch. Die Argumente der Unterprogramme verbleiben bei Aufruf in lokalen Registern des Unterprogramms. Beim Rücksprung aus dem Unterprogramm werden die zuvor gepushten Register zurückgepopt. Da nur 512 lokale, physische Register vorliegen, wird ein Teil des Stacks im Hauptspeicher abgelegt. Mit den Spezialregistern rO und rS kann man einsehen, welcher Teil des lokalen Registerstacks bereits im Speicher liegt.

Spezialregister

Die 32 Spezialregister sind:

  1. rB, das Bootstrap-Register (trip)
    Beim Zuweisen von, rB ← $255 und $255 ← rJ. Somit wird rJ in einem normalem Register gespeichert.
  2. rD, Dividendenregister
    Unsigned Integer Division verwendet dieses Register.
  3. rE, Epsilonregister
    Für Gleitkommavergleiche mit Beachtung des Epsilons.
  4. rH, Himultregister
    Zum Speichern des linken Teils eines 128-Bit Ergebnisses nach einer unsigned integer Multiplikation.
  5. rJ, return Jump register
    Beim Ausführen von PUSH wird die Adresse der nächsten Anweisung hier gespeichert und beim Rücksprung von POP gelesen.
  6. rM, Multiplex mask register
    Wird vom Multiplex Befehl verwendet.
  7. rR, Restregister
    Für den Rest einer Integerdivision.
  8. rBB, Bootstrap register (trap)
    Beim Zuweisen von, rB ← $255 und $255 ← rJ. Somit wird rJ in einem normalem Register gespeichert.
  9. rC, Cycle counter
    Wird bei jedem Zyklus erhöht.
  10. rN, Seriennummer
    Eine Konstante, die den MMIX Prozessor bezeichnet.
  11. rO, Registerstack Offset
    Zur Umsetzung des Registerstacks.
  12. rS, Registerstack Pointer
    Zur Umsetzung des Registerstacks.
  13. rI, Interval counter
    Wird bei jedem Zyklus verringert. Löst bei 0 ein Interrupt aus.
  14. rT, Trap address Register
    Zum Speichern der Adresse des Tripvektors.
  15. rTT, dynamic Trap address register
    Zum Speichern der Adresse des Tripvektors.
  16. rK, Interrupt mask register
    Zum Aktivieren/Deaktivieren von Interrupts.
  17. rQ, Interrupt request register
    Zum Speichern der Interrupts bei ihrem Auftreten.
  18. rU, Usage counter
    Zählt die ausgeführten Befehle.
  19. rV, Virtual translation register
    Zum Übersetzen einer virtuellen Adresse in eine physische.
  20. rG, Global threshold register
    Alle Register größer-gleich rG gehören zu den globalen Registern.
  21. rL, Local threshold register
    Alle Register kleiner als rL gehören zu den globalen Registern.
  22. rA, Arithmetic status register
    Zum Aufzeichnen arthmetischer Exceptions wie Overflows oder Division durch Null.
  23. rF, Failure location register
    Hier wird die Adresse des Befehls gespeichert, der einen Fehler ausgelöst hat.
  24. rP, Prediction register
    Wird von conditional swap (CSWAP) verwendet.
  25. rW, Where-interrupted register (trip)
    Zum Speichern des nachfolgenden Befehls der von einem Interrupt unterbrochen wurde.
  26. rX, Execution register (trip)
    Zum Speichern des Befehls der von einem Interrupt unterbrochen wurde.
  27. rY, Y Operand (trip)
    Zum Speichern des Y Operanden bei einem Interrupt.
  28. rZ, Z Operand (trip)
    Zum Speichern des Z Operanden bei einem Interrupt.
  29. rWW, Where-interrupted register (trap)
    Zum Speichern des nachfolgenden Befehls der von einem Interrupt unterbrochen wurde.
  30. rXX, Execution register (trap)
    Zum Speichern des Befehls der von einem Interrupt unterbrochen wurde.
  31. rYY, Y Operand (trap)
    Zum Speichern des Y Operanden bei einem Interrupt.
  32. rZZ, Z Operand (trap)
    Zum Speichern des Z Operanden bei einem Interrupt.

Literatur

  • Anlauff, Böttcher, Ruckert: Das MMIX-Buch – Ein praxisnaher Zugang zur Informatik, Heidelberg: Springer-Verlag, 2002, Lecture Notes in Computer Science, no. 1750.
  • Knuth, Donald E.: MMIXware A RISC Computer for the Third Millennium, Heidelberg: Springer-Verlag, 1999, viii+550pp. ISBN 3-540-66938-8
  • Knuth, Donald E.: Vol.1, Fascicle 1: MMIX – A RISC Computer for the New Millennium, Addison-Wesley, ISBN 0-201-85392-2, 134 Seiten

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • MMIX — may also refer to the year 2009, in Roman numerals. MMIX (pronounced em mix ) is a 64 bit RISC instruction set architecture (ISA) designed by Donald Knuth, with significant contributions by John L. Hennessy (who contributed to the design of the… …   Wikipedia

  • MMIX — est à la fois un jeu d instructions 64 bit RISC et un architecture informatique conçu par Donald Knuth, avec une aide importante de John L. Hennessy (qui a conçu l architecture logicielle MIPS) et de Richard L. Sites (un architecte logiciel pour… …   Wikipédia en Français

  • MMIX — MMIX: MMIX  запись римскими цифрами числа 2009. MMIX (компьютер)  64 битная RISC архитектура компьютера, предложенная и используемая Дональдом Кнутом в своих книгах для кодирования алгоритмов …   Википедия

  • MMIX — es una arquitectura de 64 bits, provista de 256 registros de propósito general de tipo RISC y 32 registros de 64 bits de propósito especial. Es una maquina de tipo Big endian con instrucciones de 32 bits y 64 bits de espacio de memoria virtual.… …   Wikipedia Español

  • MMIX (компьютер) — Эта статья  о архитектуре компьютера. О годе (MMIX в записи римскими цифрами) см. 2009. MMIX (произносится эм микс)  64 битная RISC архитектура компьютера, разработанная Дональдом Кнутом с существенным вкладом Джона… …   Википедия

  • MMIX — матем. • Запись числа 2009 римскими цифрами …   Словарь обозначений

  • Lateinische Zahlen — MMIX (2009) Die Römischen Zahlen haben ihren Ursprung im antiken Römischen Reich. Das auf den römischen Ziffern beruhende Zahlensystem stellt natürliche Zahlen in einem Additionssystem zur Basis 10 mit der Hilfsbasis 5 dar. Ein Zeichen für die… …   Deutsch Wikipedia

  • Römische Zahl — MMIX (2009) Die Römischen Zahlen haben ihren Ursprung im antiken Römischen Reich. Das auf den römischen Ziffern beruhende Zahlensystem stellt natürliche Zahlen in einem Additionssystem zur Basis 10 mit der Hilfsbasis 5 dar. Ein Zeichen für die… …   Deutsch Wikipedia

  • Römische Zahlen — MMIX (2009) Die Römischen Zahlen haben ihren Ursprung im antiken Römischen Reich. Das auf den römischen Ziffern beruhende Zahlensystem stellt natürliche Zahlen in einem Additionssystem zur Basis 10 mit der Hilfsbasis 5 dar. Ein Zeichen für die… …   Deutsch Wikipedia

  • Römische Ziffer — MMIX (2009) Die Römischen Zahlen haben ihren Ursprung im antiken Römischen Reich. Das auf den römischen Ziffern beruhende Zahlensystem stellt natürliche Zahlen in einem Additionssystem zur Basis 10 mit der Hilfsbasis 5 dar. Ein Zeichen für die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”