|
MMIX – учебный RISC-процессор нового тысячелетия от Дональда Кнута
Наверное, нет человека, интересующегося компьютерными вычислениями, которому был бы неизвестен фундаментальный многотомный труд Дональда Кнута «Искусство программирования на ЭВМ». В нем проведено всестороннее
исследование практически всех наиболее важных вычислительных алгоритмов. В
качестве примера достаточно упомянуть, что в одном из разделов книги
обсуждается влияние временных характеристик движения магнитной ленты на эффективность сортировки больших массивов информации. Такой детальный подход к исследованию вычислительных задач невозможен без анализа времени исполнения машинных операций, а значит, без рассмотрения конкретной системы команд ЭВМ. Д. Кнут в своей книге предложил условную вычислительную машину собственной конструкции, которую назвал MIX1. MIX является виртуальной машиной, но она очень похожа на наиболее распространенные ЭВМ того времени. С лукавым юмором Кнут заявляет, что MIX есть римская запись числа 1009, получающегося как средний номер моделей всех машин, которые он проанализировал при создании своей модели [1]:
(360+650+709+7070+U3+SS80+1107+1604+G20+B220+S2000+920+601+H800+PDP4+II)/16
Несмотря на то, что модель MIX содержит минимальное количество технических деталей, за четыре десятилетия она все-таки устарела. И вот недавно Кнут решил ее модернизировать и заменить на более современную, которую он назвал MMIX2. Здесь снова есть столь любимый Кнутом шутливый подтекст: если название считать состоящим из римских цифр, то из них образуется число 2009, которое автор предполагает годом выпуска окончательной редакции своего многотомника.
Возможно, у вас на языке вертится недоуменный вопрос: а надо ли на современном этапе развития вычислительной техники знать внутренние основы ее работы. Приведем подробный ответ самого Дональда Кнута (цитируется по тексту официальной домашней страницы MMIX [2]; перевод автора статьи):
«Многие читатели без сомнения думают: "Почему Кнут заменил MIX другой машиной вместо того, чтобы просто перейти к языку программирования высокого уровня? Едва ли кто-то использует сейчас ассемблер."
Эти люди имеют право на свое мнение, и им не стоит утруждать себя чтением частей моей книги, связанных с машинным языком. Тем не менее, причины применения машинного языка, которые я приводил в предисловии к первому тому, написанному в начале 60-х, остаются в силе и сегодня:
- Одна из принципиальных целей моей книги состоит в том, чтобы показать, как конструкции высокого уровня на самом деле реализуются в машинах, а не просто показать, как они применяются. Я объясняю взаимодействие соподпрограмм, древовидные структуры, генерацию случайных чисел, арифметику
повышенной точности, перевод из одной системы счисления в другую, уплотнение информации, комбинаторный поиск, рекурсию и т.д. с учетом мельчайших деталей.
- Программы, которые требуются в моей книге, как правило, такие короткие, что их главные моменты могут быть легко осознаны.
- Людям, которые действительно интересуются компьютерами,
следует знать по крайней мере некоторые идеи о том, что представляет собой
используемое ими оборудование. В противном случае программы, которые они
напишут, будут достаточно причудливыми.
- Машинный язык необходим, во всяком случае, как выходной для многих программ, которые я описываю.
- Представление основных методов таких, как, например, алгоритмы сортировки и поиска, на машинном языке дает возможность провести
всестороннее исследование влияния на них размера кэша и ОЗУ, а также других
аппаратных характеристик (быстродействие памяти, конвейеризация, multiple
issue, буферы с записью lookaside, размер блоков кэша и т.д.), сравнивая различные схемы.
- Кроме того, если бы я действительно использовал язык высокого уровня, какой это был бы язык? В 60-х я, вероятно, выбрал бы Algol-W3; затем в 70-х мне пришлось бы переписать мои книги, используя Паскаль; в 80-х я непременно изменил бы все на C; в 90-х я был бы вынужден переключиться на C++ и, вероятно, на Яву. В 2000-х еще один язык, несомненно, будет de rigueur. Я не могу позволить себе тратить время на переписывание моих книг потому, что языки входят в моду и выходят из моды; языки не являются предметом моих книг, их предметом скорее является то, что вы можете делать на своем любимом языке. Мои книги фокусируются на "вечных истинах".
Поэтому я буду продолжать использовать в TAOCP4 английский как язык высокого уровня, и буду продолжать использовать язык низкого уровня, чтобы показывать, как машина на самом деле считает. Читателям, которые хотят видеть только алгоритмы, уже готовые к употреблению и написанные
на наиболее часто используемом языке, следует покупать книги других людей. »
Да простят меня читатели за длинную цитату, но она очень хорошо описывает суть дела.
Итак, MMIX – это учебная модель компьютера, созданная Д.Кнутом для изучения эффективности работы различных численных методов. Тем не менее, это не единственно возможное ее применение. Благодаря хорошему соответствию между данной моделью и реальными процессорами (Кнут упоминает, что при разработке он во многом ориентировался на процессоры AMD), MMIX может быть использован для целей обучения, например, для знакомства с основными принципами устройства и функционирования современных компьютеров. Именно поэтому автор считает публикацию данной статьи в педагогическом, а не в техническом издании достаточно актуальной. Возможностям использования модели в учебном процессе посвящен специальный раздел.
Статья имеет еще одну цель: дать некоторую доступную информацию на русском языке об интересной и масштабной разработке Кнута. Дело в том, что пока описание MMIX существует лишь в виде обновляемых авторских материалов, публикуемых на Интернет-сайте Дональда Кнута [2], что, к сожалению, для многих непригодно по причине языковых трудностей. Кроме того, Кнут не принадлежит к числу популяризаторов науки – скорее это серьезный профессор, излагающий свои знания академически строго и сжато в предположении
некоторой предварительной подготовки читателей. Напротив, автор данной статьи надеется, что она будет понятна любому, кто интересуется работой компьютера: от школьника до преподавателя вуза.
Основные характеристики MMIX
Архитектура MMIX
Форматы команд MMIX
Форматы данных
Наиболее важные команды MMIX
Примеры простых программ
Чем может быть полезен MMIX нам?
Ссылки
- Кнут Д. Искусство программирования на ЭВМ. Том 1. – М.: Мир, 1976. – 736 с.
- Официальная страница MMIX (на английском языке)
- Бруснецов Н.П. Микрокомпьютеры. – М.: Наука, 1985. – 208 с.
- Андреева Е., Фалина И. Информатика: Системы счисления и компьютерная арифметика. – М.: Лаборатория Базовых Знаний, 1999. – 256 с.
- MMIX – RISC-компьютер для нового тысячелетия: аудиозапись интервью с Дональдом Кнутом (на английском языке)
- Обязательный минимум содержания среднего (полного) общего образования по информатике. /В сб. Программно-методические
материалы: Информатика. 7-11 кл. /Сост. Л.Е.Самовольнова . – М.: Дрофа, 2001. – с.6-18
- Боеттчер А. Windows-версия имитатора MMIX с видеопамятью (на английском языке)
- Основы информатики и вычислительной техники: Проб. учеб. пособие для сред. учеб. заведений. В 2-х ч. Ч.2/ А.П.Ершов, В.М.Монахов, А.А.Кузнецов и др.; Под ред. А.П.Ершова, В.М.Монахова. - М.: Просвещение, 1986. - 143 с.
- Основы информатики и вычислительной техники: Проб. учеб. пособие для 10-11 кл. сред. шк./ В.А.Каймин, А.Г.Щеголев, Е.А.Ерохина, Д.П.Федюшкин. - М.: Просвещение, 1989. - 272 с.
- Кушниренко А.Г. и др. Информатика. 7-9 кл.: Учеб. для общеобразоват. учеб. заведений / А.Г. Кушниренко, Г.В. Лебедев, Я.Н.
Зайдельман. – М.: Дрофа, 2000. – 336 с.
- Кузнецов А.А., Угринович Н.Д., Цветкова М.С. Материалы
для подготовки и проведения итоговой аттестации выпускников IX классов общеобразовательных учреждений в 2001/2002 учебном году. – Информатика и образование, 2002, N 1, с.10-12
- Еремин Е.А. Компилятор? Это очень просто. Компьютер УКНЦ. М.: Компьютика, 1995, N 3, c.25-33.
- Еремин Е.А. Компилятор? Это довольно просто! Информатика, 2001, N 40, с.7-17; N 43, с.7-14; N 45 с.21-29; N 46, с.19-25; N 47, с.8-10
- Учебные модели компьютера
- Проект rEd-MMI
Дополнительный материал
- Игорь Гордиенко. В плену у совершенства
- Андрей Зубинский. x86 – у последней черты...
1
mix переводится с английского как "смесь"
2 сам автор рекомендует читать это сокращение как "эм-микс", причем первая буква М "скромно" обозначает millennium – т.е. новое тысячелетие
3 версия
Алгола, реализованная Виртом
4 первые буквы слов в английском названии книги "Искусство программирования на ЭВМ"
© Е.А.Еремин, 2002
Статья:
Еремин Е.А. MMIX – учебный RISC-процессор нового тысячелетия от Дональда Кнута. - Газета "Информатика", 2002, N 40, с.18-27
|