Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Архитектура MMIX

Основными устройствами для хранения информации в процессоре MMIX являются регистры. Именно с их содержимым в той или иной степени оперируют все инструкции процессора. MMIX содержит большое число регистров: единовременно их может быть подключено до 256 (это, кстати, неизбежно следует из факта, что под номер каждого регистра в командах отводится один байт, а значит номер регистра может изменяться от 0 до 255). Тем не менее, архитектура машины позволяет дополнительно увеличить общее количество регистров за счет специального механизма переключения. Иными словами, хотя в каждый момент времени доступно тлько 256 регистров, но они могут с помощью специальных команд выбираться из гораздо большего количества.

Не вдаваясь в подробности, можно считать все регистры процессора равноправными. При более детальном чтении документации оказывается, что это не совсем так, но в данной статье мы не будем обращать внимание на эти детали.

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

Итак, для учебной модели регистров в MMIX больше чем достаточно. И хотя начинающим для упражнений даже половина из имеющихся регистров вряд ли потребуется, тем не менее, имеет смысл разобрать методы взаимодействия процессора MMIX с оперативной памятью: все-таки на практике исходные данные берутся именно из ОЗУ, и туда же помещается результат их обработки, а в регистрах хранится лишь промежуточная информация.

Память в MMIX имеет байтовую организацию, т.е. минимальным количеством информации при чтении и записи является 1 байт. Чтобы обеспечить возможность обращения к любому байту памяти, все они пронумерованы и, следовательно, каждый из них имеет свой собственный номер (адрес).

Для хранения данных, занимающих несколько байт, необходимое их количество объединяют. Так, для числа в MMIX требуется 8 последовательно расположенных байт. По существующей традиции адресом всей информации в таких случаях принято считать адрес самого первого байта, т.е. наименьший из всех адресов. Кроме того, для MMIX обязательно требуется, чтобы адрес данных был кратен их длине (делился на нее без остатка): иными словами, адрес числа должен делится на 8, а команды – на 4; адрес однобайтовых данных, естественно, может быть любым.

Рассмотрим теперь порядок записи байтов данных в память. Очевидно, что здесь возможно два альтернативных способа: либо записывать данные “слева направо”, т.е. так, чтобы самому старшему байту соответствовал минимальный номер, либо, наоборот, начать с младшего байта. Первый способ получил название big-endian, а второй – little-endian5. MMIX использует более естественный для человека big-endian метод хранения информации. Для справки заметим, что IBM PC, напротив, имеет little-endian архитектуру запоминающего устройства.

Для того чтобы прочитать из ОЗУ требуемую информацию, необходимо предварительно в одном из регистров задать ее адрес, а затем выполнить команду обмена с памятью, содержащую ссылку на номер используемого регистра. Подобный механизм адресации данных, когда адрес интересующей ячейки памяти храниться не в самой команде, а в регистре процессора, и регистр, в свою очередь, указывается в качестве операнда, называется методом косвенной адресации. Именно он лежит в основе работы всех современных микропроцессоров.

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

команда записи в память

Рассмотрим для иллюстрации две инструкции записи содержимого регистра $1 (знаком $ Кнут помечает номера регистров, чтобы не путать их с числами) в ОЗУ:

AE 01 02 03 – сохраняет содержимое регистра $1 в 8 последовательных байт начиная с адреса, равного сумме значений регистров $2 и $3;

AF 01 02 03 – единственное отличие данной команды от предыдущей состоит в том, что начальный адрес ОЗУ равен сумме значения регистра $2 и константы 3.

Нетрудно сообразить, что если в последнем случае положить константу равной нулю, то получится метод косвенной адресации “в чистом виде”, когда адрес ОЗУ определяется только одним регистром. Подчеркнем также, что представление адреса операнда в виде суммы двух значений необычайно удобно для доступа к последовательно расположенным данным – массивам (см. задачу 3 в разделе “Примеры простых программ”).



5 терминология восходит к книге Д.Свифта “Приключения Гулливера”, где описаны две антагонистические партии, спорившие, с какого конца необходимо разбивать яйцо – с тупого (по-английски big end) или острого (little end)


На начало статьи      Дальше


© Е.А.Еремин, 2002
Статья:
Еремин Е.А. MMIX – учебный RISC-процессор нового тысячелетия от Дональда Кнута. - Газета "Информатика", 2002, N 40, с.18-27


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting