Jump to content

ММИКС

ММИКС
Дизайнер Дональд Кнут
Биты 64-битная
Представлено 1999
Дизайн РИСК
Кодирование Зафиксированный
Ветвление Код состояния
Порядок байтов Большой
Открыть Да, и без лицензионных отчислений
Регистры
32 регистра специального назначения
общего назначения 256

MMIX (произносится как em-mix ) — это 64-битная вычислительная с сокращенным набором команд (RISC) архитектура , разработанная Дональдом Кнутом при значительном вкладе Джона Л. Хеннесси (который внес свой вклад в разработку архитектуры MIPS ) и Ричарда Л. Сайтса ( который был архитектором архитектуры Альфа ). Кнут сказал, что

MMIX — это компьютер, предназначенный для иллюстрации аспектов программирования на машинном уровне. В моих книгах «Искусство компьютерного программирования » он заменяет MIX , машину в стиле 1960-х годов, которая раньше играла такую ​​роль… Я стремился спроектировать MMIX так, чтобы ее машинный язык был простым, элегантным и легким для изучения. В то же время я старался учесть все сложности, необходимые для достижения высокой производительности на практике, чтобы MMIX в принципе можно было построить и даже, возможно, конкурировать с некоторыми из самых быстрых компьютеров общего назначения на рынке». [1]

Кнут начал разработку MMIX в 1999 году и выпустил стабильную версию дизайна в 2011 году. [2] Процессору присвоен номер «2009», и Кнут объяснил, что это среднее арифметическое от номеров других компьютерных архитектур; а также «MMIX» римскими цифрами . [3]

Архитектура [ править ]

MMIX - это (RISC) с обратным порядком байтов 64-битный компьютер с сокращенным набором команд , с 256 64-битными регистрами общего назначения, 32 64-битными регистрами специального назначения, фиксированной длины 32-битными инструкциями и 64-битным виртуальным адресом. космос . Набор инструкций MMIX состоит из 256 кодов операций, один из которых зарезервирован для будущего расширения. [ нужна ссылка ] MMIX использует IEEE 754 числа с плавающей запятой .

Инструкция [ править ]

Все инструкции имеют соответствующую мнемонику. Например, инструкция №20 (32 десятичных числа) связана с ADD. Большинство инструкций имеют символическую форму. OP X,Y,Z, где OP указывает тип инструкции, X указывает регистр, используемый для хранения результата инструкции, а остальные указывают операнды инструкции. Каждое из этих полей имеет ширину восемь бит. Например, ADD $0,$1,3 означает «Установить $0 как сумму $1 и $3».

Большинство инструкций могут принимать либо непосредственные значения, либо содержимое регистра; таким образом, одна мнемоника инструкции может соответствовать одному из двух кодов операций.

Программы MMIX обычно создаются с использованием языка ассемблера MMIXAL. Ниже приведена простая программа MMIXAL, которая печатает строку « Привет, мир! »:

        LOC   #100                   % Set the address of the program
                                     % initially to 0x100.

Main    GETA  $255,string            % Put the address of the string
                                     % into register 255.

        TRAP  0,Fputs,StdOut         % Write the string pointed to by
                                     % register 255 to the standard
                                     % output file.

        TRAP  0,Halt,0               % End process.

string  BYTE  "Hello, world!",#a,0   % String to be printed.  #a is
                                     % newline, 0 terminates the
                                     % string.

Регистры [ править ]

В микросхеме MMIX имеется 256 напрямую адресуемых архитектурных регистров общего назначения, обозначенных цифрами от $0 до $255, и 32 архитектурных регистра специального назначения. Доступ к регистрам специального назначения можно получить с помощью инструкций GET и PUT. Два специальных регистра, rL и rG, определяют, какие из общих регистров являются локальными, а какие глобальными. Все регистры от $0... ([rL] − 1) являются локальными регистрами и представляют собой окно во внутренний стек регистров. [4] Регистры из [rL]... ([rG] − 1) являются «маргинальными регистрами», они всегда возвращают 0, если используются в качестве источника в операции. Использование маргинального регистра в качестве места назначения операции приведет к тому, что машина автоматически увеличит rL для включения этого регистра. Все регистры [rG]... $255 называются глобальными регистрами и не являются частью стека регистров.

Стек локальных регистров [ править ]

Стек локальных регистров предоставляет каждой подпрограмме свои собственные локальные регистры rL, обозначенные от $0 до $(rL − 1) . При каждом вызове подпрограммы несколько локальных регистров перемещаются вниз по стеку (путем смещения начала окна). Аргументы вызванной подпрограммы сохраняются в остальных локальных регистрах. Когда подпрограмма завершается, она извлекает ранее загруженные регистры. Поскольку внутренний стек может содержать только ограниченное число регистров, может возникнуть необходимость сохранить часть стека в памяти. [4] Это реализуется с помощью специальных регистров rO и rS, которые записывают, какая часть стека локальных регистров находится в памяти, а какая часть все еще находится в локальных физических регистрах. Стек регистров обеспечивает быстрое связывание подпрограмм.

Специальные регистры [ править ]

К 32 специальным физическим архитектурным регистрам относятся следующие:

  1. rB, регистр начальной загрузки (отключение)
  2. При отключении rB ← $255 и $255 ← rJ. Таким образом сохранив rJ в общем регистре.
  3. РД, реестр дивидендов
    Деление целого числа без знака использует это как левую половину 128-битного входного сигнала, который должен быть разделен на другой операнд.
  4. rE, регистр эпсилон
    Используется для плавающих сравнений относительно эпсилон.
  5. rH, регистр hisult
    Используется для хранения левой половины 128-битного результата умножения целых чисел без знака.
  6. rJ, регистр обратного перехода
    Используется для сохранения адреса следующей инструкции с помощью PUSH и POP для возврата из PUSH.
  7. rM, регистр маски мультиплексирования
    Используется инструкцией мультиплексирования.
  8. rR, регистр остатка
    Устанавливается на остаток целочисленного деления.
  9. rBB, регистр начальной загрузки (ловушка)
    При отлове rBB ← $255 и $255 ← rJ. Таким образом сохраняя rJ в общем регистре
  10. rC, счетчик циклов
    Увеличивается каждый цикл.
  11. рН, серийный номер
    Константа, идентифицирующая данный конкретный процессор MMIX.
  12. rO, смещение стека регистров
    Используется для реализации стека регистров.
  13. rS, указатель стека регистров
    Используется для реализации стека регистров.
  14. rI, счетчик интервалов
    Уменьшается каждый цикл. Вызывает прерывание при нулевом значении.
  15. rT, регистр адреса ловушки
    Используется для хранения адреса вектора отключения.
  16. rTT, регистр адреса динамической ловушки
    Используется для хранения адреса вектора ловушки.
  17. rK, регистр маски прерывания
    Используется для включения и отключения определенных прерываний.
  18. rQ, регистр запроса прерывания
    Используется для записи прерываний по мере их возникновения.
  19. RU, счетчик использования
    Используется для подсчета выполненных инструкций.
  20. rV, виртуальный регистр трансляции
    Используется для преобразования виртуальных адресов в физические адреса. Содержит размер и количество сегментов, корневое расположение таблицы страниц и номер адресного пространства.
  21. rG, глобальный пороговый регистр
    Все ссылки на регистры общего назначения с номером, большим или равным rG, относятся к глобальным регистрам.
  22. rL, локальный пороговый регистр
    Все ссылки на общие регистры с номером меньшим, чем rL, относятся к локальным регистрам.
  23. rA, регистр арифметического состояния
    Используется для записи, включения и отключения арифметических исключений, таких как переполнение и деление на ноль.
  24. РФ, регистр мест неисправностей
    Используется для хранения адреса инструкции, вызвавшей сбой.
  25. rP, регистр прогнозирования
    Используется условной заменой (CSWAP).
  26. rW, регистр прерывания (отключение)
    Используется при отключении для сохранения адреса инструкции после той, которая была прервана.
  27. rX, регистр выполнения (отключение)
    Используется при отключении для сохранения команды, которая была прервана.
  28. rY, операнд Y (отключение)
    Используется при отключении для сохранения операнда Y прерванной команды.
  29. rZ, операнд Z (отключение)
    Используется при отключении для сохранения операнда Z прерванной команды.
  30. rWW, регистр прерывания (ловушка)
    Используется при перехвате для сохранения адреса инструкции после той, которая была прервана.
  31. rXX, регистр выполнения (ловушка)
    Используется при перехвате для сохранения прерванной инструкции.
  32. rYY, операнд Y (ловушка)
    Используется при перехвате для сохранения операнда Y прерванной инструкции.
  33. rZZ, операнд Z (ловушка)
    Используется при перехвате для сохранения операнда Z прерванной инструкции.

Как и программы, работающие практически на всех других процессорах, Программы MMIX можно прервать несколькими способами. Внешнее оборудование, такое как таймеры, является распространенным источником вытесняющих прерываний . Многие инструкции вызывают прерывание в некоторых исключительных случаях; такие как защиты памяти исключения ошибок страницы , используемые для реализации виртуальной памяти, и обработка исключений с плавающей запятой . В MMIX есть два вида прерываний: «отключения» и «ловушки». Основное различие между «поездками» и «ловушками» состоит в том, что ловушки передают управление программе-обработчику ловушек в операционной системе (перехват), но отключения отправляют управление программе «обработчик отключения» в пользовательском приложении (отключение). Пользователи также могут принудительно запустить любой обработчик прерываний с помощью явных программных инструкций прерывания TRIP и TRAP, аналогично некоторым видам ловушек в других компьютерных системах. В частности, системный вызов из пользовательской программы в операционную систему использует инструкцию TRAP. [1] : 38 

Аппаратные реализации [ править ]

По состоянию на октябрь 2015 г. , не существует известных аппаратных реализаций архитектуры набора команд MMIX. Однако fpgammix [5] Проект реализует MMIX в Verilog , что позволяет реализовать его с помощью программируемой вентильной матрицы .

Программные инструменты [ править ]

Архитектура набора команд MMIX поддерживается рядом программных инструментов для исследования компьютерной архитектуры и разработки программного обеспечения.

Симуляторы и ассемблер [ править ]

Компилятор [ править ]

Коллекция компиляторов GNU MMIX включает в себя серверную часть для компиляторов C / C++ , предоставленную Хансом-Петером Нильссоном и являющуюся частью основного дистрибутива GCC с конца 2001 года. По состоянию на ноябрь 2017 года. Серверная часть MMIX для GCC продолжает активно разрабатываться и поддерживаться добровольцами.

  • Инструкции по установке инструментов GCC + MMIX от Ханса-Петера Нильссона. [8]
  • §3.17.26. Опции MMIX для GNU GCC версии 7.2.0 [9] (Веб-сайт GNU GCC).
  • §9.28.   MMIX-зависимые функции [10] для GNU , начиная с GNU Binutils версии 2.29, серверной части ассемблера для GNU GCC (веб-сайт GNU Binutils).

Вышеупомянутые инструменты теоретически можно использовать для компиляции, сборки и загрузки всего ядра FreeBSD , Linux или другой подобной операционной системы на оборудование MMIX, если такое оборудование существует.

См. также [ править ]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б Кнут, Дональд Э. (октябрь 1999 г.), MMIXware: RISC-компьютер для третьего тысячелетия , Конспекты лекций в учебнике по информатике, том. 1750, Гейдельберг: Springer-Verlag, ISBN  3-540-66938-8 (Ошибка)
  2. ^ «Дом MMIX: Сообщение от Дона Кнута» . mmix.cs.hm.edu . Проверено 23 мая 2021 г.
  3. ^ Кнут, Дональд (9 февраля 1999 г.). MMIX: RISC-компьютер нового тысячелетия (смещение 7:36). Стэнфордская лекция. Архивировано из оригинала 11 декабря 2021 г. ( Cray-1 + IBM 801 + RISC II + Clipper C300 + AMD 29k + Motorola 88k + IBM 601 + Intel i960 + Alpha 21164 + POWER2 + MIPS R4000 + Hitachi Super H4 + StrongARM 110 + SPARC 64) / 14 = 28126/14 = 2009 г.
  4. Перейти обратно: Перейти обратно: а б Кнут, Дональд (2005). «Раздел 1.4.2' ». MMIX — RISC-компьютер нового тысячелетия . Искусство компьютерного программирования. Том. 1, Фаск. 1. Эддисон Уэсли. п. 58.
  5. ^ магистр (24 августа 2008 г.). "фпгаммикс" . Репо.or.cz. ​Проверено 25 мая 2014 г.
  6. ^ «MMIXware» . Cs-faculty.stanford.edu . Проверено 25 мая 2014 г.
  7. ^ «ММИКС» . Малгил.com. 6 марта 2002 г. Проверено 25 мая 2014 г.
  8. ^ Инструкции по установке инструментов GCC + MMIX.
  9. ^ https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/MMIX-Options.html §3.17.26. ММИКС
  10. ^ «§9.28 Зависимые от MMIX функции» . Sourceware.org . Проверено 20 ноября 2017 г.

Дальнейшее чтение [ править ]

  • Дональд Э. Кнут (2005). Искусство компьютерного программирования. Том 1. Выпуск 1: MMIX — RISC-компьютер для нового тысячелетия . Аддисон-Уэсли. ISBN   0-201-85392-2 (опечатки)
  • Мартин Рукерт (2015). Дополнение MMIX, The: Дополнение к книге Дональда Э. Кнута «Искусство компьютерного программирования», тома 1, 2, 3 . Аддисон-Уэсли. ISBN   0-133-99231-4

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: edfbec25edb36e7e6232bd7e1915f62a__1708988520
URL1:https://arc.ask3.ru/arc/aa/ed/2a/edfbec25edb36e7e6232bd7e1915f62a.html
Заголовок, (Title) документа по адресу, URL1:
MMIX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)