Введение
MIX — гипотетический компьютер, используемый в монографии Дональда Кнута «Искусство компьютерного программирования» (TAOCP). Номер модели MIX — 1009, полученный путем комбинирования номеров моделей и названий нескольких современных коммерческих машин, признанных автором значимыми. Кроме того, "MIX", если читать как римское число, равен 1009. Компьютер MIX, разработанный в 1960-х годах, впоследствии был заменен новой (также гипотетической) компьютерной архитектурой MMIX, которая будет представлена в будущих изданиях TAOCP. Кнут разработал программные реализации для архитектур MIX и MMIX и предоставил их в свободный доступ под названиями "MIXware" и "MMIXware" соответственно. Существуют также различные производные от эмуляторов MIX/MMIX, созданных Кнутом. GNU MDK — один из таких программных пакетов, он бесплатен и работает на широком спектре платформ. Его образовательная цель аналогична архитектуре DLX, разработанной Джоном Л. Хеннесси и Дэвидом А. Паттерсоном в книге «Computer Organization and Design: The Hardware Software Interface».
Архитектура
MIX - гибридный бинарно-децимальный компьютер. При программировании в двоичном виде каждый байт имеет 6 бит (значения изменяются от 0 до 63). В десятичном виде каждый байт имеет 2 десятичные цифры (значения изменяются от 0 до 99). Байты сгруппированы в слова, состоящие из пяти байтов и знака. Большинство программ, написанных для MIX, будут работать как в двоичном, так и в десятичном режиме, если они не пытаются сохранить значение, превышающее 63, в одном байте. Диапазон значений слова составляет от -1 073 741 823 до 1 073 741 823 (включительно) в двоичном режиме и от -9 999 999 999 до 9 999 999 999 (включительно) в десятичном режиме. Представление целых чисел в архитектуре MIX с использованием знака и абсолютной величины различает −0 и +0. Это отличается от современных компьютеров, которые используют представление целых чисел в дополнительном коде, включающее единственное представление для нуля, но диапазон для заданного числа бит содержит на одно отрицательное целое число больше, чем количество представимых положительных целых чисел. Регистры MIX 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (позиция бита) Регистры ± A1 A2 A3 A4 A5 rA, Аккумулятор ± X1 X2 X3 X4 X5 rX, Расширитель Индексные регистры ± I1.4 I1.5 rI1, Индекс 1 ± I2.4 I2.5 rI2, Индекс 2 ± I3.4 I3.5 rI3, Индекс 3 ± I4.4 I4.5 rI4, Индекс 4 ± I5.4 I5.5 rI5, Индекс 5 ± I6.4 I6.5 rI6, Индекс 6 Счетчик программ J4 J5 rJ, Прыжок Флаги кода состояния О Флаг переполнения <=> Флаг сравнения
Память и вход/выход
В памяти MIX-машины содержится 4000 слов (каждое объемом 5 байт и со знаком), адресуемых от 0 до 3999. Также предусмотрены различные устройства ввода-вывода: ленточные накопители (устройства 0–7). Дисковые или барабанные накопители (устройства 8–15). Устройство чтения карт (устройство 16). Устройство перфорации карт (устройство 17). Линейный принтер (устройство 18). Терминал с клавиатурой и принтером (устройство 19). Бумажная лента (устройство 20).
Tape units (devices 0 7). Disk or drum units (devices 8 15). Card reader (device 16). Card punch (device 17). Line printer (device 18). Typewriter terminal (device 19). Paper tape (device 20).