MMIX (computadora)

MMIX (pronunciado em-mix ) es una arquitectura informática RISC de 64 bits desarrollada por Donald Knuth con importantes contribuciones de John Hennessy y Richard Sites. En palabras del propio Donald Knuth:

MMIX - una computadora cuyo propósito es ilustrar aspectos de la programación a nivel de máquina. En mis libros El arte de la programación , reemplaza a MIXuna máquina al estilo de los años 60 que desempeñaba el mismo papel. Traté de diseñarlo de MMIXtal manera que su lenguaje de máquina fuera simple, elegante, fácil de aprender. Al mismo tiempo, traté de incluir toda la complejidad que se necesita para lograr una alta eficiencia en la práctica, de modo que MMIXpueda construirse de manera realista e incluso pueda competir con algunas de las computadoras de propósito general más rápidas del mercado.

Texto original  (inglés)[ mostrarocultar]

MMIXes una computadora destinada a ilustrar aspectos de programación a nivel de máquina. En mis libros El arte de la programación informática , reemplaza a MIXla máquina al estilo de la década de 1960 que anteriormente desempeñó un papel tan importante... Me esforcé por diseñar MMIXpara que su lenguaje de máquina fuera simple, elegante y fácil de aprender. Al mismo tiempo, tuve cuidado de incluir todas las complejidades necesarias para lograr un alto rendimiento en la práctica, de modo que MMIX, en principio, pudiera construirse e incluso quizás competir con algunas de las computadoras de propósito general más rápidas del mercado.

Diseñado para la enseñanza, muy similar a la arquitectura de John Hennessy y David Paterson DLX de Computer Architecture: A Quantitative Approach .

Historial de creación

Cuando Donald Knuth comenzó a escribir su famosa serie de libros El arte de la programación en 1962 , tuvo que decidir qué lenguaje de programación utilizar. Para resolver todos los problemas posibles de una vez por todas, así como para preservar la capacidad de describir estructuras y algoritmos de bajo nivel en el libro, el autor decidió desarrollar su propia computadora, diseñada específicamente para el aprendizaje. Obtuvo el nombre . MIX

Pero durante las siguientes tres décadas, se produjeron cambios importantes en el campo de la tecnología informática. MIXen gran parte desactualizado. Para que el Arte de la programación siga siendo una fuente de información relevante, el autor decidió desarrollar una nueva computadora, MMIXque es un análogo de las computadoras que conquistaron la mayor parte del mercado en los años 90 del siglo XX.

Arquitectura

MMIX es una arquitectura de computadora de 64 bits con 256 registros de propósito general de 64 bits y 32 registros de propósito especial de 64 bits. Tiene instrucciones de 32 bits y un espacio de direcciones de 64 bits. El conjunto de instrucciones de la computadora MMIXincluye 256 códigos de instrucción, uno de los cuales está reservado para futuras expansiones. Implementa aritmética de coma flotante según el estándar IEEE 754.

Instrucciones

Cada instrucción tiene un mnemotécnico. Por ejemplo, la instrucción 32 tiene el mnemotécnico ADD. La mayoría de las instrucciones se escriben como "OP X,Y,Z", donde OP es el mnemotécnico, X es el registro en el que se escribirá el resultado de la instrucción e Y y Z son los operandos de la instrucción. Al codificar, se asignan 8 bits para cada campo.

La mayoría de las instrucciones pueden tomar un operando de registro o un valor inmediato (inmediato), por lo que varios códigos de operación pueden corresponder a la misma mnemotécnica.

Los programas MMIX generalmente se escriben en lenguaje ensamblador MMIXAL. Un programa de ejemplo MMIXAL que muestra el mensaje de texto "Hola, mundo":

Principal GETA $ 255 , cadena ; Escriba la dirección de la cadena en el registro 255. TRAMPA 0 , Fputs , StdOut ; Muestra la cadena cuya dirección está en ; registre 255 en el archivo StdOut. TRAMPA 0 , Detener , 0 ; Finaliza el proceso. cadena BYTE "¡Hola, mundo!" , #a , 0 ; _ constante de cadena. ; #un carácter de nueva línea, ; 0 es el terminador de línea.


Registros

El procesador MMIX tiene 256 registros de propósito general, denotados $0 .. $255; y 32 registros especiales de arquitectura.

Dos registros especiales, rL y rG, controlan la división de ROH en global y local. Los registros en el rango $0... ([rL] - 1) son locales. Los registros en el rango [rL] ... ([rG]-1) se denominan "registros marginales". Devuelven 0 cuando intenta leer de ellos, pero si usa uno de ellos como destino, entonces rL aumentará automáticamente y el registro usado se volverá local. Los registros en el rango [rG] ... $255 son globales y no se almacenan en la pila de registros.

Registros especiales

Implementaciones de hardware

A partir de 2008, MMIXaún no se ha implementado en hardware.

Herramientas de software

El conjunto de instrucciones de la computadora MMIXes compatible con algunos programas de desarrollo de software.

Emuladores y ensambladores

  • MMIXware  es un paquete de software desarrollado por Donald Knuth que incluye un emulador, un ensamblador MMIXAL, documentación completa, programas de muestra y más.

Compilador

La colección de compiladores GNU admite la compilación de programas C / C++ en la arquitectura de destino MMIX.

Véase también

Enlaces