The Art of Computer Programming (TAOCP)[3]



RISC
[en] Reduced Instruction Set Computer
[fr] Ordinateur à Jeu d'Instruction Réduit


MMIX[4]



MMIXware[5]

MMIX

Etudes et variations / Studies and variations

Version complète en pdf / Full version in pdf.

[fr] "Pour que l'esprit gagne en sagacité, on doit lui donner de l'exercice en lui faisant chercher ce que les autres ont déjà trouvé, et en lui faisant examiner méthodiquement toutes les techniques humaines, même les plus insignifiantes, mais de préférence celles qui manifestent ou présupposent un ordre."
Descartes - Règles pour la direction de l'esprit - Règles X - Vers 1628.

[en] "For the mind to gaining wisdom, one must give it the exercise by seeking what others have already found, and making it methodically examine all human techniques, even the most insignificant, but preferably ones which manifest or presuppose an order."
Descartes - Rules for the Direction of the Mind - Rules X - Toward 1628.


Motivation / Motivation

[fr] Lorsque l'on se passionne pour la programmation de logiciels, on croise tôt ou tard l'œuvre de Donald E. Knuth, "The Art of Computer Programming (TAOCP)" / "L'Art de la Programmation des Ordinateurs"[3]. Cette rencontre est surprenante, voire déconcertante au début, tant par la rigueur et la densité du travail exposé que par l'approche de programmation utilisée par son auteur, résumé en quatre lettres MMIX. L'ensemble des algorithmes exposés dans le TAOCP sont écrits en langage machine, ou assembler, initialement en MIX, une architecture numérique inventée dans les années 1960 par l'auteur, aujourd'hui en MMIX[4], architecture RISC 64-bits moderne du même inventeur. La phrase d'introduction de Donald E. Knuth de son ouvrage MMIXware[5] nous donne la clé pour comprendre son approche, "MMIX est un ordinateur destiné à illustrer au niveau de la machine les aspects de la programmation", et la couverture du fascicule 1 décrivant son architecture, nous livre comme une promesse découvertes, "MMIX, un ordinateur RISC pour le nouveau millénaire".

N'est-ce pas suffisant pour en attaquer l'étude ?

[en] When we has a passion for software programming, sooner or later we cross the work of Donald E. Knuth, "The Art of Computer Programming" (TAOCP)[3]. This meeting is surprising, even disconcerting at first, both for the rigor and the density of work exhibited, as the programming approach used by its author, summarized in four letters MMIX. All of the algorithms presented in the TAOCP are written in machine language, or assembly, initially in MIX, a digital architecture invented in the 1960s by the author, today in MMIX[4], modern 64-bits RISC architecture of the same inventor. The introductory phrase of Donald E. Knuth of his book MMIXware[5] gives us the key to understanding his approach: "MMIX is a computer intended to illustrate machine-level aspects of programming", and the cover of the fascicule 1 describing its architecture, gives us like a promise of discoveries, "MMIX a RISC Computer for the New Millennium".

Is it not sufficient to tackle the study?

Architecture / Architecture

[fr] Un processeur est défini par son jeu d'instructions. Celui-ci contient les opérations élémentaires, ou instructions, à l'œuvre sur des données, contenue dans des cases de taille fixe, les registres ou la mémoire. Ces opérations sont soit d'ordre mathématique (et logique, ou logique, ... addition entière, soustractions entière, ...), soit fonctionnelles (déplacer un donnée d'une case A à une case B, interrompre un traitement suite à un événement particulier, ...).

Le jeu d'instructions reflète aussi l'architecture du coeur processeur, l'idée générale, le fonctionnement d'ensemble qui ont prévalu à sa définition. MMIX a la particularité d'avoir été créé avec un soucis de rigueur, de complétude et de régularité, afin de corriger des défauts subtiles que l'on peut rencontrer sur d'autres architectures processeur.

Le fascicule 1 du volume 1 de TAOCP, "MMIX, A RISC Computer for the New Millennium"[4], présente cette architecture.

[en] A processor is defined by its instruction set. This contains the basic operations or instructions to work on data, contained in fixed size boxes, registers or memory. These operations are either mathematical (logical and, laogical or... integer addition, integer subtraction, ...) or functional (move a given data from box A to box B, interrupt treatment after an particular event, ...).

The instruction set also reflects the architecture of the processor core, the general idea, the overall operation that prevailed in its definition. MMIX has the particularity to have been created with a rigor worries, completeness and consistency, to correct subtle defects that may be encountered on other processor architectures.

The fascicle 1 of the volume 1 of TAOCP, "MMIX, A RISC Computer for the New Millennium"[4], presents this architecture.

Etudes et variations / Studies and variations

[fr] Ce document regroupe une partie des études et variations que je réalise à titre personnel sur MMIX. Comme j'y travaille sur mon temps libre, je le complète trés lentement au gré des sujets qui m'imperpellent. Pour ne rien arranger, d'autres domaines me passionnent...

Comme vous le constatez, ce travail est bi-langue. Il est rédigé en français, par attachement à ma belle langue, élégante et précise, ce qui facilite ma réflexion. Il est traduit en anglais pour échanger avec un plus large public.

J'espère que ce travail vous intéressera.

[en] This document gathers a part of the studies and variations that I realize personally on MMIX. As I work on my free time, I complete it very slowly at the whim of the subjects that inspire me. To make matters worse, other areas fascinate me ...

As you can see, this work is bi-language. It is written in French, by attachment to my beautiful language, elegant and precise, which facilitates my reflection. It is translated into English to exchange with a wider audience.

I hope this work will interest you.

Version comète en pdf / Full version in pdf.

Ressources et références / Resources and references

[1] MMIX Home Page - Documentation, Sources, Binaries, Links, Examples, Contributions

[2] Donald Knuth's page - MMIX 2009, a RISC computer for the third millennium

[3] Donald E. Knuth. The Art of Computer Programming (TAOCP), Addison-Wesley.

[4] Donald E. Knuth. MMIX, A RISC Computer for the New Millennium, volume 1, fascicle 1 of The Art of Computer Programming. Addison-Wesley, 2005.

[5] Donald E. Knuth. MMIXware, A RISC Computer for the Third Millennium. Springer, 1999.

[6] Martin Ruckert. The MMIX Supplement, to The Art of Computer Programming volumes 1, 2, 3. Addison-Wesley, 2015.