MMIX: 64-битная RISC-архитектура от Дональда Кнута
MMIX
MMIX: 64-битная RISC-архитектура от Дональда Кнута. Простота, элегантность и высокая производительность. Альтернатива MIX для изучения программирования.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
64-битная RISC-архитектура, разработанная Дональдом Кнутом
архитектура набора команд
64 bit RISC architecture designed by Donald Knuth
the instruction set architecture
MMIX (произносится как "эм микс") — это 64-битная архитектура с упрощенным набором команд (RISC), разработанная Дональдом Кнутом с существенным вкладом Джона Л. Хеннесси (который участвовал в разработке архитектуры MIPS) и Ричарда Л. Сайта (который был архитектором архитектуры Alpha). Кнут говорил, что
MMIX (pronounced em mix) is a 64 bit reduced instruction set computing (RISC) architecture designed by Donald Knuth, with significant contributions by John L. Hennessy (who contributed to the design of the MIPS architecture) and Richard L. Sites (who was an architect of the Alpha architecture). Knuth has said that,
MMIX — это компьютер, предназначенный для иллюстрации аспектов программирования на машинном уровне. В моих книгах «Искусство программирования» он заменяет MIX, машину образца 1960-х годов, которая ранее выполняла такую роль. Я стремился спроектировать MMIX так, чтобы его машинный язык был простым, элегантным и легким в освоении. В то же время я старался учесть всю сложность, необходимую для достижения высокой производительности на практике, чтобы MMIX в принципе можно было построить и, возможно, сделать конкурентоспособным с одними из самых быстрых компьютеров общего назначения на рынке. Кнут начал разработку MMIX в 1999 году и выпустил стабильную версию проекта в 2011 году. Процессор имеет номер «2009», поскольку, по словам Кнута, это среднее арифметическое от номеров других компьютерных архитектур, а также соответствует римской записи "MMIX".
MMIX is a computer intended to illustrate machine level aspects of programming. In my books The Art of Computer Programming, it replaces MIX, the 1960s style machine that formerly played such a role I strove to design MMIX so that its machine language would be simple, elegant, and easy to learn. At the same time I was careful to include all of the complexities needed to achieve high performance in practice, so that MMIX could in principle be built and even perhaps be competitive with some of the fastest general purpose computers in the marketplace." Knuth started the design of MMIX in 1999, and released the stable version of the design in 2011. The processor is numbered as "2009" with Knuth explaining that this is the arithmetic mean from the numbers of other computer architectures; as well as being "MMIX" in Roman numerals.
Архитектура
MMIX — это 64-битный компьютер с прямой последовательностью байтов (big endian) и упрощенным набором команд (RISC), оснащенный 256 64-битными регистрами общего назначения, 32 64-битными специальными регистрами, инструкциями фиксированной длины 32 бита и 64-битным виртуальным адресным пространством. Набор инструкций MMIX состоит из 256 опкодов, один из которых зарезервирован для будущего расширения. MMIX использует числа с плавающей точкой в формате IEEE 754.
MMIX is a big endian 64 bit reduced instruction set computer (RISC), with 256 64 bit general purpose registers, 32 64 bit special purpose registers, fixed length 32 bit instructions and a 64 bit virtual address space. The MMIX instruction set comprises 256 opcodes, one of which is reserved for future expansion. MMIX uses IEEE 754 floating point numbers.
Реестры
В чипе MMIX имеется 256 архитектурных регистров общего назначения, адресуемых напрямую, обозначенных от $0 до $255, и 32 архитектурных регистра специального назначения. Доступ к регистрам специального назначения осуществляется с помощью инструкций GET и PUT. Два специальных регистра, rL и rG, определяют, какие из регистров общего назначения являются локальными, а какие – глобальными. Все регистры от $0 до ([rL] − 1) являются локальными регистрами и представляют собой окно во внутренний стек регистров. Это реализовано с помощью специальных регистров rO и rS, которые фиксируют, какая часть стека локальных регистров находится в памяти, а какая – в локальных физических регистрах. Стек регистров обеспечивает быстрое связывание подпрограмм.
There are 256 directly addressable general purpose architectural registers in an MMIX chip, designated by $0 through $255, and 32 special purpose architectural registers. The special purpose registers can be accessed with the GET and PUT instructions. Two of the special registers, rL and rG, determine which of the general registers are local and which are global. All registers from $0 ([rL] − 1) are local registers, and represent a window into an internal stack of registers. This is implemented with the special registers rO and rS which record which part of the local register stack is in memory and which part is still in local physical registers. The register stack provides for fast subroutine linkage.
Программные инструменты
Архитектура набора команд MMIX поддерживается рядом программных средств для исследований в области компьютерной архитектуры и разработки программного обеспечения.
The MMIX instruction set architecture is supported by a number of software tools for computer architecture research and software development.
Симуляторы и сборщики
MMIXware – простой (поведенческий) симулятор MMIX, ассемблер MMIXAL, набор тестов, примеры программ, полная документация и архитектурный (конвейерный) симулятор MMIX (архивный файл, сжатый с помощью gzip). MMIXX – графический пакет на основе X11, разработанный Эндрю Почински из Центра теоретической физики MIT, который в сочетании с исходными кодами MMIXware, описанными выше, расширяет возможности виртуальной машины MMIX, добавляя виртуальный дисплей с разрешением 640×480 пикселей и поддержкой true color (для UNIX/Linux).
MMIXware – Donald Knuth's MMIX SIM simple (behavioral) simulator, MMIXAL assembler, test suite, sample programs, full documentation, and MMIX architectural (pipeline) simulator (gzipped tar file). MMIXX – An X11 based graphics package contributed by Andrew Pochinsky of MIT’s Center for Theoretical Physics which, when combined with the MMIXware sources above, augments the MMIX virtual machine with a 640×480 pixel, true color ‘virtual display’ (for UNIX/Linux).
Компилятор
GNU Compiler Collection включает в себя бэкэнд MMIX для своих компиляторов C/C++, разработанный Хансом Петером Нильссоном и являющийся частью основного дистрибутива GCC с конца 2001 года. По состоянию на 2017 год, бэкэнд MMIX для GCC продолжает активно разрабатываться и поддерживаться добровольцами. Инструкция по установке инструментов GCC + MMIX от Ханса Питера Нильсона. §3.17.26. Опции MMIX для GNU GCC версии 7.2.0 (веб-сайт GNU GCC). §9.28. Функции, зависящие от MMIX, для GNU. Начиная с GNU Binutils версии 2.29, бэкэнд ассемблера для GNU GCC (веб-сайт GNU Binutils). Теоретически, вышеуказанные инструменты могли бы быть использованы для компиляции, сборки и загрузки всего ядра FreeBSD, Linux или другой подобной операционной системы на аппаратное обеспечение MMIX, если бы такое оборудование существовало.
The GNU Compiler Collection includes an MMIX back end for its C/C++ compilers, contributed by Hans Peter Nilsson and part of the main GCC distribution since late 2001. as of 2017, the MMIX back end to GCC continues to be actively developed and maintained by volunteers. Installation instructions for GCC + MMIX tools by Hans Peter Nilsson. §3.17.26. MMIX Options for GNU GCC version 7.2.0 (GNU GCC Web site). §9.28. MMIX dependent Features for GNU as from GNU Binutils version 2.29, the assembler back end for GNU GCC (GNU Binutils Web site). The above tools could theoretically be used to compile, build, and bootstrap an entire FreeBSD, Linux, or other similar operating system kernel onto MMIX hardware, were such hardware to exist.