Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
22
Добавлен:
16.04.2019
Размер:
6 Мб
Скачать
☆

2.9.1. Risc-микропроцессоры семейства мрс60х (powerpc)

Начало созданию этого семейства было положено в октябре 1991 гг., когда компании IBM, «Motorola» и «Apple Computers» объявили об организации консорциума для совместной раз­работки и внедрения RISC-микропроцессоров новой архитектуры. Их прототипом был выб­ран процессор Power, используемый в широко распространенной рабочей станции RS/6000, которая выпускалась компанией IBM. Для решения этой задачи были сделаны крупные инве­стиции (около 1 млрд долл.) и построен новый центр проектирования в г. Остин (Техас), от­крытый в мае 1992г. Штат центра составили 300 ведущих специалистов из компаний IBM и «Motorola», в результате работы которых уже в октябре 1992 г. были получены первые образ­цы 32-разрядных RISC-микропроцессоров типа PowerPC 601, а с апреля 1993 г. начался их серийный выпуск. В ноябре 1993 г. началось производство следующей модели - PowerPC 603, предназначенной для использования в портативных компьютерах. В апреле 1994 г. было объявлено о выпуске более высокопроизводительной модели PowerPC 604, а в ок­тябре 1994 г. - о создании модели PowerPC 620, которая положила начало ветви 64-раз­рядных микропроцессоров этого семейства. В 1995 г. появились модификации моделей PowerPC 603,604 с тактовой частотой 133 и 166 МГц, а в 1996 г. - с частотой 200 МГц. Эти модели микропроцессоров, выпускаемые фирмой «Motorola», входят в семейство МРСбОх. Все микропроцессоры семейства имеют суперскалярную структуру, которая содержит от 4 до 6 параллельно работающих исполнительных устройств, обеспечивающих одновремен­ное выполнение нескольких команд.

Таким образом, менее чем за четыре года было разработано и выпущено семейство из четырех высокопроизводительных микропроцессоров, на базе которых уже реализова­ны десятки типов компьютеров, серверов и других цифровых систем различного назначе­ния. Эти микропроцессоры послужили основой для создания новых семейств микроконт­роллеров МРСбххх и коммуникационных контроллеров МРС860.

В данном параграфе рассматривается архитектура и функционирование наиболее про­изводительной 32-разрядной модели МРС604, а также дается обзор основных характерис­тик других моделей этого семейства, которое получило название МРСбхх.

Структура и функционирование микропроцессора МРС604. В микропроцессорах PowerPC, как и в семействе М68ххх, реализован принцип выделения отдельных ресурсов для решения задач пользователя и супервизора. В соответствии с этим принципом архитек­тура PowerPC содержит регистры, входящие в модели пользователя или супервизора, а также имеет ряд привилегированных команд, выполняемых только в режиме супервизора.

В регистровую модель пользователя (рис. 2.66), которая является общей для всего се­мейства PowerPC, входят:

  • тридцать два 32-разрядных регистра общего назначения GPR31-0 для хранения цело­численных операндов;

  • тридцать два 64-разрядных регистра FPR31-0 для хранения операндов с плавающей точкой;

• 32-разрядные регистры условий (признаков) CR и состояния при обработке чисел с плавающей точкой FPSR;

• 32-разрядные регистры XER, LR, CTR, используемые при обработке исключений.

В отличие от CISC-процессоров эта регистровая модель не содержит программного счетчика PC и указателя стека SP. Отсутствие PC связано с тем, что микропроцессоры PowerPC не выполняют команд записи или чтения программного счетчика. Эти микропро­цессоры не выполняют также операций со стеком (в случае необходимости стек реализу­ется программно), поэтому они не содержат SP.

Регистр условий CR (рис. 2.67, а) состоит из восьми 4-битовых полей CR7-0. Младшее поле CRO содержит признаки, формируемые в результате целочисленных операций:

LT= 1 -при отрицательном результате;

GT = 1 -при положительном ненулевом результате;

EQ = 1 - при нулевом результате;

SO - принимает значение аналогичного бита в регистре XER.

Поле CR1 содержит признаки FX, FEX, VX, ОХ, устанавливаемые при операциях над числами с плавающей точкой, которые принимают значения аналогичных битов в регистре FPSCR. Содержимое остальных полей CR7-2 устанавливается по результату операций сравнения целых или вещественных (с плавающей точкой) чисел. При сравнении целых чисел формируются признаки LT (меньше), GT (больше), EQ (равно), SO, назначение кото­рых указано выше. При сравнении вещественных чисел устанавливаются аналогичные при­знаки FL (меньше), FG (больше), FE (равно), а также признак FU, который принимает значе­ние FU = 1, если хотя бы один из сравниваемых операндов является не-числом (NAN). Наличие различных полей для признаков позволяет сохранять несколько результатов срав­нения, которые используются по мере необходимости.

Следует отметить, что в микропроцессорах семейства PowerPC принята нумерация разрядов, начиная со старшего. При этом биты АО, DO содержат старшие разряды, а биты А31, D31 - младшие разряды 32-разрядного слова адреса или данных. Соответственно и содержимое регистров микропроцессора представляется в формате, начальный бит кото­рого имеет номер 0 (см. рис. 2.67,2.69,2.70,2.71).

Регистр FPSCR определяет состояние и режим работы блока обработки чисел с плава­ющей точкой.

Регистр XER (рис. 2.67, б) содержит признаки переноса СА, переполнения OV, устанав­ливаемые в результате выполнения арифметических целочисленных операций, и признак общего переполнения SO, который сохраняет установленное при переполнении значение SO = 1 до выполнения команд загрузки в регистр нового содержимого. Значение SO пере­носится в соответствующие биты регистра CR после каждой операции. Таким образом, признак SO = 1 указывает на возникновение переполнения в ранее выполненных командах программы. Поле SS определяет число байтов (длину строк символов), пересылаемых со­ответствующими командами.

Регистр связи LR служит для хранения адреса команды, к которой осуществляется условный или безусловный переход. При вызове подпрограммы в этот же регистр заносится адрес команды возврата. В регистр-счетчик CTR заносится число циклов, которое используется для организации программных циклов. При этом содержимое CTR уменьшается на единицу после завершения очередного цикла. Имеются также специальные команды условного ветвления bcctr, использующие содержимое CTR в качестве адреса перехода.

Следует отметить, что в микропроцессорах PowerPC имеются команды обращения к служебным регистрам - mfspr (чтение), mtspr (запись). Поэтому для служебных регистров, кроме имени XER, LR, CTR и др., принята цифровая нумерация SPR1, SPR8, SPR9 и т. д. (рис. 2.66, 2.68), где номер служит для идентификации регистров при обращении к ним с помощью этих команд.

Регистровая модель супервизора (рис. 2.68) включает в себя регистровую модель пользо­вателя, а также содержит несколько групп служебных регистров, часть из которых являются общими для всего семейства PowerPC, а часть - специфичными для модели PowerPC 604.

В группе регистров конфигурации основным является регистр управления MSR, опре­деляющий режим функционирования процессора. Биты его содержимого имеют следую­щее назначение (рис. 2.69):

ROW - переводит при значении ROW = 1 процессор в режим отключения с понижен­ным потреблением мощности;

ILE - определяет порядок адресации байтов в слове при обработке исключений: начиная со старшего байта (big-endian) при ILE = 0, начиная с младшего байта (little-endian) при ILE = 1;

ЕЕ - разрешает при ЕЕ = 1 обслуживание внешних запросов прерывания и периодичес­ких прерываний от регистра декремента DEC;

PR - задает режим работы процессора: при PR = 0 - режим супервизора, при PR = 1 -пользователя;

FP - разрешает при FP = 1 выполнение операций над числами с плавающей точкой;

ME, SE, BE - разрешают обслуживание внешнего запроса прерывания МСР# (при ME = 1), выполнение пошаговой трассировки (при SE = 1) и трассировки после команд переходов (при BE = 1);

FEO, FE1 - запрещают при FEO = FE1 = 0 обслуживание исключений при обработке чисел с плавающей точкой, при других значениях FEO, FE1 обеспечивают различные вари­анты обслуживания;

ЕР -определяет базовый адрес размещения векторов исключений: $00000000 при ЕР = О, $РРРОООООприЕР=1;

IT, DT - разрешают трансляцию адресов команд (при IT = 1) и данных (при DT = 1) с помо­щью устройств управления памятью IMMU, DMMU;

РМ - задает режим процессора, при котором осуществляется контроль эффективности его работы;

RE - обеспечивает при RE = 1 возврат к выполнению прерванной программы после установки начального состояния (RESET) или обслуживания прерывания по внешнему зап­росу МСР#;

LE - определяет порядок адресации байтов в слове: начиная со старшего байта (big-endian) при LE = 0 или начиная с младшего разряда (little-endian); при переходе к обслужи­ванию исключений LE принимает значение ELE.

Регистр HI DO содержит биты Hi, определяющие функционирование отдельных устройств микропроцессора. Биты НО-3 в этом регистре разрешают обслуживание исключения типа «контроль процессора» при поступлении внешнего сигнала МСР#, при нарушении четности в циклах обращения к внутренней кэш-памяти или внешней памяти. Бит Н15 запрещает при значении Н15 = 1 выполнение начальной установки при поступлении внешнего сигнала RESET. Биты Н16-21 определяют режим функционирования внутренних кэшей команд и данных. При значении бита Н24 = 0 обеспечивается последовательное выполнение посту­пающих команд, т. е. не реализуется параллельная работа исполнительных устройств в суперскалярной структуре. Бит Н29 управляет работой блока предсказания ветвлений, за­давая статический (при Н29 = 0) или динамический (при Н29 = 1) способ предсказания дальнейшего хода программы.

Регистр PVR содержит коды, указывающие тип микропроцессора и его модификацию, кото­рые записываются в процессе изготовления микросхемы и затем могут только считываться.

Отдельная группа регистров используется в процессе обслуживания исключений. В эту фуппу входят регистры: DAR, хранящий адрес операнда, выборка которого вызвала ис­ключение; DSISR, содержащий код команды, вызвавшей исключение; SRRO, SRR1, в кото­рые заносятся адрес следующей команды и текущее содержимое регистра MSR для воз­врата к основной программе после обслуживания исключения. Микропроцессор имеет так­же четыре регистра SPRGO-4, которые обычно служат для хранения адресов, используе­мых подпрограммой обработки исключения.

К группе вспомогательных регистров относятся регистры: декремента DEC, базового времени ТВ, адресов останова в контрольной точке IABR, DABR, идентификации PIR, а так­же регистр EAR, используемый для обращения к внешним устройствам с помощью специ­альных команд eciwx, ecowx.

Регистр DEC работает как вычитающий счетчик с частотой, равной 1/4 от тактовой часто­ты Ft. Когда его содержимое становится равным нулю, формируется запрос исключения. Та­ким образом, можно использовать регистр DEC для реализации периодических прерываний.

Регистр PIR содержит 4-разрядный код идентификации PID, определяющий номер мик­ропроцессора в мультипроцессорных системах.

Таймер базового времени ТВ представляет собой 64-разрядный счетчик, переключаю­щийся с частотой Ft. Его содержимое может записываться и считываться путем обраще­ния к 32-разрядным регистрам TBU (младшие 32 разряда) и TBL (старшие 32 разряда). Отметим, что этот регистр доступен также в режиме пользователя, но только для чтения его содержимого.

Регистр IABR содержит адрес команды, а регистр DABR - адрес операнда, при обраще­нии к которым реализуется исключение останова в контрольной точке.

Кроме того, в состав модели супервизора входят пять регистров (MMCRO, PMC1, РМС2, SDA, SIA), которые используются для контроля эффективности работы микропроцессора. В зависимости от значения битов РМ, PR в MSR и содержимого регистра управления MMCRO в регистры РМС1, РМС2 при работе процессора заносятся такие показатели, как число выполненных циклов, число команд, завершившихся в данном цикле, общее количество выполненных ветвлений, число неправильно предсказанных ветвлений, число кэш - про­махов и др. Общее число таких контролируемых параметров составляет 46. Эти данные позволяют программисту оценить эффективность программного обеспечения и оптимизи­ровать его в процессе отладки.

При возникновении исключений их вектора (начальные адреса подпрограмм обслужи­вания) выбираются из таблицы, базовый адрес которой определяется значением бита ЕР в регистре MSR (рис. 2.68, а). Виды исключений и относительные адреса соответствующих векторов приведены в табл. 2.64. Отдельные виды исключений маскируются путем уста­новки в нуль битов ЕЕ, SE, BE, ME в регистре MSR. При реализации большинства исключе­ний в регистр SRRO заносится адрес следующей команды программы, обеспечивающий возврат к ее выполнению после обслуживания исключения, а в регистр SRR1 -текущее содержимое MSR. После выполнения подпрограммы обслуживания команда возврата из исключения RFI производит восстановление содержимого программного счетчика и регист­ра состояния MSR из SRRO, SRR1.

При исключениях типа «системный сброс», «контроль процессора» в регистре SRRO со­храняется ранее записанное содержимое. Поэтому после их обслуживания можно обеспе­чить переход к заданной команде, адрес которой предварительно заносится в SRRO. В регистре SRR1 при исключении «контроль процессора» отдельные биты указывают на поступ­ление сигналов ТЕА# = О, МСР# = 0, нарушение четности при обращениях к кэшам команд или данных, при выборке команд или данных из внешней памяти. Анализ содержимого SRR1 позволяет в этом случае определить причину исключения. Если исключение «контроль про­цессора» замаскировано (в регистре MSR бит ME = 0), то микропроцессор останавливает свою работу, выдавая внешний сигнал контрольной остановки CKSTP - OUT# = 0. При ис­ключениях типа «ошибка выбора данных», «нарушение выравнивания» в регистр DAR зано­сится код выполнявшейся команды, а в регистр DSISR - адрес операнда, выборка которого вызвала исключение.

Микропроцессор МРС604 имеет суперскалярную структуру (рис. 2.70), которая содер­жит шесть параллельно работающих исполнительных устройств: блок обработки ветвле­ний BPU, два устройства для выполнения простых (одноцикловых) целочисленных опера­ций SIU1, SIU2, одно устройство для выполнения сложных (многоцикловых) целочислен­ных операций MIU, устройство обработки чисел с плавающей точкой FPU и блок выборки операндов из памяти LSU. При этом обеспечивается одновременное выполнение четырех команд. Все операции обработки данных выполняются с регистровой адресацией. Выбор­ка данных из памяти производится только командами пересылки, которые выполняются блоком LSU и осуществляют загрузку данных в регистры GPR, FPR или запись содержимо­го этих регистров в память.

При параллельной работе исполнительных устройств, возможно, их одновременное об­ращение к одним регистрам. Чтобы избежать ошибок, возникающих при этом, в случае записи в регистр нового содержимого до того, как другим устройством будет считано пре­дыдущее, введены буферные регистры -12 для GPR, 8 для FPR. Эти регистры служат для промежуточного хранения операндов, дублируя регистры GPR, FPR, используемые при выполнении текущих операций. После завершения этих операций производится переза­пись полученных результатов в GPR, FPR (обратная запись).

Конвейер выполнения команд имеет шесть основных каскадов: выборка команды (1) и ее дешифрация (2), распределение команд по исполнительным устройствам (3), выпол­нение команд (4), запись результатов в буфер (5) и обратная запись результатов в регист­ры SPR или FPR. Устройство управления одновременно выбирает из кэша и декодирует четыре команды, которые распределяются в соответствующие исполнительные устрой­ства. Большинство команд выполняется за один такт. Эти команды реализуются с помо­щью SIU1, SIU2, которые осуществляют сложение - вычитание, сравнение, сдвиги, логи­ческие операции. Выполнение ряда команд требует нескольких тактов. Например, цело­численное умножение осуществляется за 3-4 такта, деление за 20 тактов. Эти операции производятся MIU. Большинство операций с плавающей точкой (кроме деления), выполня­ется за три такта, поэтому во внутренней структуре FPU реализовано три исполнительных каскада. Блок завершения обеспечивает получение правильной последовательности ре­зультатов выполняемых операций. Он содержит буферную память типа очереди, в кото­рую по мере поступления записываются результаты, получаемые от исполнительных уст­ройств. Обратная запись результатов из буфера в регистры GPR, FPR производится в соответствии с порядком поступления команд, выбираемых устройством управления, т. е. восстанавливается необходимая последовательность результатов.

Блок обработки ветвлений BPU предсказывает направление ветвления программы при поступлении соответствующих команд. В микропроцессорах семейства МРСбхх реализу­ется два механизма предсказания: статическое предсказание, которое дается программи­стом и содержится в тексте выполняемой программы, и динамическое предсказание, кото­рое выполняется BPU по результатам предыдущих ветвлений. Блок BPU использует для предсказания кэш-адресов ветвлений ВТАС и таблицу истории ветвлений ВНТ. Кэш ВТАС хранит 64 адреса ветвлений, выполнявшихся предыдущими командами. Если поступившая команда ветвления содержит адрес, совпадающий с одним из имеющихся в ВТАС, то про­цессор предсказывает ветвление по этому адресу и выбирает команды из соответствую­щей ветви в конвейер (ветвление выполняется). Если адрес ветвления не содержится в ВТАС, то выбирается следующая команда программы (ветвление отсутствует).

При поступлении команд условных ветвлений BPU анализирует таблицу ВНТ, которая представляет собой кэш-память, где содержатся 512 адресов условных предыдущих ветв­лений. Для каждого адреса в таблице имеются два бита, определяющие вероятность ветв­ления поданному адресу: 00 - практически не выполняется, 01 -выполняется редко, 10-выполняется часто, 11 - выполняется очень часто. Значения этих битов меняются после каждой операции ветвления: если производится ветвление по данному адресу, то вероят­ность увеличивается на единицу (максимальное значение 11), если данный адрес не ис­пользован, то вероятность уменьшается на единицу (минимальное значение 00). Новые адреса вводятся в ВНТ вместо адресов с нулевой вероятностью. Ветвление по имеюще­муся в таблице адресу предсказывается, если его вероятность больше 01. Правильность предсказания проверяется после определения соответствующих признаков в регистре ус­ловий CR. Если условия не выполняются (неправильное предсказание), то процессор ос­вобождает конвейер от команд из неправильно выбранной ветви, и загружает новые ко­манды из другой ветви. Таким образом, при неправильных предсказаниях требуется пере­загрузка конвейера, что снижает производительность процессора.

Так как одновременно могут выполняться несколько команд, изменяющих значения признаков в регистре CR, то в BPU имеются восемь буферных регистров, дублирующих содержимое CR. Эти регистры используются исполнительными различными устройства­ми, а после завершения соответствующих операций их содержимое переносится в основ­ной регистр условий CR (обратная запись), обеспечивая правильный порядок выполнения условных команд.

Микропроцессор МРС604 осуществляет раздельную выборку команд и данных с помо­щью двух устройств управления памятью IMMU, DMMU, которые могут выполнять сегмент­ную, страничную и блочную адресацию. Внутренние кэши команд 1C и данных DC имеют емкость по 16 Кбайт.

Контроллер шины BID обеспечивает интерфейс микропроцессора с внешними устрой­ствами. Системная шина передает 32-разрядный адрес АО-31 и 64-разрядные данные DHO-31 (старшее слово), DLO-31 (младшее слово). Для каждого байта адреса и данных пе­редаются и принимаются биты четности, с помощью которых осуществляется контроль оши­бок обращения к шине. Увеличенная разрядность шины данных позволяет быстрее произво­дить загрузку строк кэш-памяти, которые содержат по 32 байта. При кэш-промахе произво­дится пакетная передача данных, которая обеспечивает пересылку содержимого строки за 4 последовательных цикла. Контроллер BIU реализует выдачу и прием необходимых сигна­лов для управления обменом, выполнения прерываний, захвата шин, снупинга (обращения внешнего устройства к внутреннему кэшу данных) и установки начального состояния (RESET). Формируются также сигналы для управления внешней кэш-памятью 2-го уровня.

Микропроцессор содержит специализированный, последовательный порт для выполне­ния тестирования по стандарту JTAG (IEEE 1149.1). Тестирование осуществляется с помо­щью специального тест-порта ТАР также, как в микропроцессоре МС68060 и ряде моделей семейства М683хх.

Для питания микропроцессора используется напряжение Vn = 3,3В. При тактовой частоте Ft = 100 МГц потребление мощности не превышает 10 Вт. Пониженное энергопот­ребление (400 мВт) обеспечивается при останове микропроцессора, который осуществля­ется программно путем установки в регистре MSR значения бита POW = 1. В этом случае прекращается выполнение команд, продолжают работать только базовый таймер ТВ, регистр декремента DEC и блок обслуживания запросов прерывания. Микропроцессор уста­навливает выходной сигнал HALTED = 1, информируя о своем останове внешние устрой­ства. Выход из этого состояния происходит при поступлении внешних сигналов прерыва­ния INT#, MCP#, SMI# или начальной установки RESET#, а также при запросе периодичес­кого прерывания от регистра DEC.

Способы адресации и система команд. Микропроцессоры семейства PowerPC ис­пользуют следующие способы адресации:

  • регистровую;

  • косвенно-регистровую со смещением;

  • косвенно-регистровую с индексированием;

  • относительную;

  • абсолютную;

  • непосредственную.

Все команды арифметических и логических операций, сравнения и сдвигов (табл. 2.65-2.67) выполняются только с регистровой и непосредственной адресацией. Благодаря этому обеспечивается высокая производительность, так как при обработке данных не требуется выполнять циклов обращения к шине для выбора операндов. Трехадресный формат команд позволяет исключить лишние пересылки данных между регистрами. При этом в качестве гО, гА, гВ указываются номера регистров GPR31-0, определяющие регистр размещения резуль­тата (rD) и регистры операндов (гА, гВ). Непосредственный операнд со знаком Sim или без знака Dim задается 32-разрядным словом, следующим за кодом команды.

Таблица 2.65

Команды загрузки и сохранения содержимого регистров (табл. 2.68) используют при об­ращении к памяти косвенно-регистровую адресацию со смещением или индексированием. Эффективный адрес операнда ЕА определяется выражениями:

ЕА =(гА! О) +d32 - при адресации со смещением;

ЕА = (гА! О) + (гВ ) - при адресации с индексированием,

где гА, гВ - номера регистров общего назначения GPR31—1, d32-32 - разрядное смещение. Регистр GPRO не используется при этих способах адресации: если в качестве номера гА указан нуль, то формируется адрес ЕА = d32 при адресации со смещением, ЕА = (гВ) при адресации с индексированием. Так реализуется прямая (абсолютная) адресация с обра­щением по заданному в команде адресу d32 и косвенно-регистровая адресация по адресу, заданному содержимым регистра гВ.

Команды ветвления (табл. 2.69) используют прямую или относительную адресацию. При этом адресом перехода служит указанный в команде адрес t-adr или сумма (PC + t-adr).

Все команды микропроцессора имеют 32-разрядный формат кода операции. При ис­пользовании непосредственной адресации после кода команды следует 32-разрядный операнд. В командах, использующих косвенно-регистровую адресацию со смещением, после кода операции следует 32-разрядное смещение, а в командах ветвления - 32-разрядный адрес t-adr. Таким образом, все команды содержат 4 или 8 байтов.

Команды арифметических операций (табл. 2.65) имеют ряд модификаций, отличающихся формированием признаков по результатам операций. Если после мнемокода операции идет символ «.», то по результатам операции устанавливаются соответствующие значения битов SO, EQ, GT, LT в поле CRO регистра CR (рис. 2.67, а). Если мнемокод команды имеет суф­фикс «о», то по результату ее выполнения устанавливаются биты OV, SO в регистре XER (рис. 2.67, б), при этом бит SO дублируется в поле CRO. Команды сложения addic, addc, adde, addme, addze и вычитания subfc, subfic, subfe, subfme, subfee вызывают установку признака переноса СА в регистре XER по результату операции. Команда addi при значении гА = 0 про­изводит загрузку непосредственного операнда со знаком Sim в регистр rD, а при гА -I. О выполняет сложение этого операнда с содержимым регистра гВ. Команда непосредствен­ного сложения со сдвигом addis производит при гА =/ 0 сложение содержимого гА с непос­редственным операндом Sim, сдвинутым на четыре разряда влево, а при гА = 0 загружает сдвинутый операнд Sim в регистр rD.

Команды умножения и деления могут оперировать с операндами без знака и со знаком. При знаковом умножении 16-разрядных операндов (команды mulli, mullw) в регистре rD раз­мещается 32-разрядный результат. При умножении 32-разрядных чисел со знаком (команда mulhw) или без знака (команда mulhwu) в регистр rD поступают старшие 32 разряда резуль­тата, а в следующий регистр с номером (гВ + 1) - младшие 32 разряда. При делении 32-разрядных чисел со знаком (команда divw) или без знака (команда divwu) в регистр rD зано­сится 32-разрядное частное.

Команда neg меняет знак операнда. Команда extsb преобразует младший байт содер­жимого регистра rS путем расширения знака в 32-разрядное слово, размещаемое в rD. Ко­манда extsh выполняет аналогичное расширение для 16 младших разрядов (младшее полу­слово) содержимого регистра rS.

Команды логических операций (табл. 2.66) производятся над операндами без знака, содержащимися в регистрах (rS, rB) или заданными непосредственно в команде (Dim). Мик­ропроцессор реализует восемь логических операций-И, ИЛИ, Исключающее ИЛИ, НЕ-И, НЕ - ИЛИ, Запрет, Импликация, Эквивалентность. При выполнении команд, имеющих пос­ле мнемокода символ «.», производится установка соответствующих признаков в поле CRO регистра условий CR. Команды логических операций со сдвигом andis., oris., xoris. перед выполнением операций И, ИЛИ, Исключающее ИЛИ производят сдвиг непосредственного операнда влево на 16 разрядов. В данную группу входит также команда cntizw, определяю­щая число последовательно расположенных нулей в регистре rS, начиная со старшего раз­ряда. Это число заносится в регистр гА.

Команды сравнения (табл. 2.67) осуществляют вычитание двух операндов, содержащих­ся в регистрах (гА, гВ) или заданных непосредственно (Sim, Ulm), которые могут быть числа­ми со знаком (знаковое сравнение) или без знака (беззнаковое сравнение). По результатам вычитания осуществляется установка признаков в поле CRi регистра условий CR. Номер поля i = 7...2 задается операндом crfD в команде Ассемблера. Если этот операнд не задан или равен 0, то признаки устанавливаются в поле CRO. Операнд L в этих командах для мик­ропроцессора МРС604 задается равным 0.

Команды сдвигов (табл. 2.67) реализуют многоразрядные логические (slw, srw), ариф­метические (sraw, srawi) и циклические (rlwinm, rlwnm, rlwimi) сдвиги содержимого регистра rS с размещением результата в гА. Число разрядов сдвига задается непосредственно опе­рандом Ns или содержимым шести младших разрядов регистра. На вход NMI гВ. При логических сдвигах влево (команда slw) или вправо (команда srw) освободившиеся разряды заполняются ну­лями. При арифметическом сдвиге вправо (команды sraw, srawi) в освободившихся слева разрядах дублируется знак исходного операнда.

Таблица 2.67

Циклические сдвиги производятся только влево, причем результат сдвига логически умножается на маску М. Маска формируется в соответствии с задаваемыми в команде номерами начального Mb и конечного Me битов. Биты маски с номерами от Me до Mb имеют значение «1», поэтому соответствующие биты результата сохраняются. Остальные биты маски имеют значение «О», и соответствующие биты результата принимают такое же зна­чение. Полученный после маскирования результат размещается в регистре гА. При выпол­нении команд rlwinm, rlwnm предыдущее содержимое гА не сохраняется. Команда rlwimi сохраняет в регистре гА значения битов, соответствующих замаскированным битам ре­зультата (для которых биты маски равны нулю).

Команды сдвигов могут вызывать установку признаков в поле CRO регистра CR в соот­ветствии с результатом операции. Для этого после мнемокода команды следует поста­вить символ «.».

Команды загрузки и сохранения (табл. 2.68) производят загрузку в регистр GPR с номе­ром rD байта, слова или полуслова (16-разрядное слово) из памяти (команды, начинающие­ся с буквы «I» - load), либо записывают в память байт, слово или полуслово из регистра rS (команды, начинающиеся с букв «st» -store). Для обращения к памяти используется косвен­но-регистровая адресация со смещением или индексированием. При адресации с индекси­рованием в команде указываются адресный (гА) и индексный (гВ) регистры (мнемокод этих команд заканчивается буквой «х»), при адресации со смещением - адресный регистр (гА) и смещение d32. При загрузке байта (команды Ibz, Ibzx) старшие разряды регистра rD заполня­ются нулями (расширение нулями). При загрузке полуслова старшие разряды заполняются либо нулями (команды Ihhz, Ihzx), либо значением старшего (знакового) бита Ы 5 загружаемо­го слова (команды lha, lhax, расширение знаком).

Таблица 2.68

Команды загрузки-сохранения имеют модификации с суффиксом и (указаны в скобках). При наличии данного суффикса в регистр гА после пересылки загружается эффективный адрес ЕА, использованный в данной команде. Эти модификации позволяют, например, ре­ализовать постинкрементную адресацию байтов, полуслов или слов, если задать в соот­ветствующих командах значения смещения d32 = 1,2 или 4. В командах загрузки с суффик­сом и нельзя использовать номера rD = гА, при этом реализуется исключение с адресом вектора Av = $00700 (неправильный код команды, табл. 2.64).

Команды Ihbrz, Iwbrz осуществляют перестановку байтов при загрузке в регистр rD по­луслова (Ihbrz) или слова (Iwbrz). Команды sthbrx, stwbrx выполняют аналогичную переста­новку байтов при записи из регистра rS в память полуслова (sthbrx) или слова (stwbrx).

Команды групповой пересылки Imw, stmw производят загрузку или запись в память со­держимого группы регистров, начиная с заданного в команде номера rD или rS до после­днего регистра с номером GPR31. Загружаемые или записываемые данные располагаются в ячейках памяти, начиная с адреса ЕА, определяемого косвенно-регистровой адресацией со смещением. Регистр гА не должен входить в группу адресуемых регистров, иначе реали­зуется исключение с адресом Av = $00700 (неправильный код команды).

Команды пересылки строк символов Iswi, Iswx, stswi, stswx осуществляют загрузку в регистры или запись в память п символов (байтов). Число пересылаемых байтов задает­ся данным в команде операндом Mb (команды Iswi, stswi), или значением 8 старших битов (поле SS, рис. 2.67, а) в регистре XER (команды Iswx, stswx). Начальный адрес пересыла­емых байтов ЕА = (гА) - для команд Iswi, stswi (косвенно-регистровая адресация) и ЕА = (гАЮ) + (гВ) - для команд Iswx, stswx (адресация с индексированием). Данные в регистрах размещаются или выбираются, начиная с младшего байта регистра rD или rS.

Команды вызывают исключение с адресом Av = $00700 (неправильный код команды), если гА или гВ входит в число регистров, в которые загружается или из которых выбирает­ся строка символов.

Управление программой производится командами безусловных и условных ветвлений (их мнемокоды начинаются с буквы «b» - branch), программных прерываний tw, twi, сис­темного вызова sc и возврата из прерывания rfi (табл. 2.69). При ветвлениях адрес коман­ды перехода определяется с помощью прямой (команды ba, bla, bca, bcla) или относитель­ной (команды Ь, Ы, be, bcl) адресации. Заданное в команде число t-adr служит при этом абсолютным адресом или смещением, определяющим значение адреса перехода. Если мнемокод команды ветвления имеет суффикс I (команды Ы, bla, bcl, bcla), то при ее выпол­нении текущее содержимое программного счетчика PC заносится в регистр связи LR, обес­печивая возможность возвращения к следующей команде программы. Таким образом, эти команды могут служить для вызова подпрограмм.

Команды be, bca, bcl, bcla реализуют условные ветвления или вызовы подпрограмм. Усло­вием ветвления является совпадение содержимого поля CRi в регистре условий CR с четырь­мя младшими битами заданного в команде операнда ВО. Номер используемого для сравнения поля i задается операндом BI. При совпадении заданного значения ВО и содержимого поля CRi производится переход к команде, адрес которой определяется абсолютной (команды bca, bcla) или относительной (команды be, bcl) адресацией. При их несовпадении выполняется следую­щая команда программы. Команды bcl, bcla, сохраняющие в регистре LR адрес следующей команды, служат для реализации условных вызовов подпрограммы.

Команды bclr, bclrl реализуют условный возврат из подпрограмм, если заданное значе­ние ВО совпадает с содержимым поля CRi. При этом в программный счетчик PC загружа­ется содержимое регистра связи LR. Команда bcrlri сохраняет в регистре LR текущее со­держимое PC, обеспечивая возможность возвращения к подпрограмме.

При выполнении команд bcctr, bcctrl в программный счетчик PC загружается содержи­мое регистра CTR, если выполняется условие ВО = CRi. Команда bcctrl обеспечивает со­хранение текущего содержимого PC в регистре связи LR.

При условных ветвлениях программист может указать на повышенную вероятность вет­вления, задав значение «1», для пятого бита операнда ВО. В этом случае блок обработки ветвления BPU обеспечит выборку в конвейер следующих команд в соответствии с дан­ным предсказанием. Такой способ предсказания ветвлений называется статическим. При нулевом значении пятого бита в операнде ВО блок BPU осуществляет динамическое пред­сказание ветвлений с помощью кэша адресов ВТАС и таблицы истории ветвлений ВНТ.

Команды программных прерываний tw, twi производят условное обращение к подпрог­рамме обслуживания, вектор которой Ve размещен по адресу Av = $00700 (см. табл. 2.64). Текущее содержимое PC и MSR сохраняется в регистрах SRRO, SRR1. Условием обраще­ния является совпадение признаков в поле CRO, устанавливаемых при сравнении содер­жимого регистра гА с непосредственным операндом Sim (команда twi) или с содержимым регистра гВ (команда tw), с битами заданного в команде 4-разрядного операнда ТО. Пре­рывание реализуется, если хотя бы один из установленных в «1» признаков в CRO совпа­дает с соответствующим битом ВО. Содержимое гА, гВ и операнд Sim представляются при сравнении числами со знаком.

Команда sc осуществляет вызов системного прерывания с подпрограммой обслужива­ния, вектор которой Ve размещен по адресу Av = $ООСОО (см. табл. 2.64). Команда rfi реали­зует возврат из прерывания, при котором из регистров SRRO, SRR1 восстанавливается содержимое программного счетчика PC и регистра управления MSR, обеспечивая возвра­щение к выполнению прерванной программы. Команда rfi может выполняться только в ре­жиме супервизора, так как она изменяет содержимое регистра MSR.

При выполнении команд условных переходов используется содержимое различных полей регистра условий CR. Различные операции с содержимым этого регистра реализуются с помо­щью специальных команд (табл. 2.70). Команда mtcrf производит загрузку в CR содержимого регистра rS, которое логически умножается на 32-битовую маску, заданную в команде. Эта команда устанавливает требуемые значения содержимого CR или его немаскированных полей. Пересылка содержимого CR в регистр rD производится командой mfcr. Команда mcrxr копирует четыре младших бита из регистра исключений XER (признаки SO, OV, СА, рис. 2.67, а) в поле CRi регистра CR, где номер поля i задается операндом crfD. После копиро­вания признаки SO, OV, СА в регистре XER принимают значение «О». Команда mcrf копирует содержимое поля CRi в поле CRJ, где значения i, j задаются операндами crfS, crfD.

Ряд команд выполняет логические операции над отдельными битами bi, bj содержимо­го регистра CR (табл. 2.70). Номера i, j этих битов задаются операндами crbA, crbB, резуль­тат операции размещается в бите bk, номер которого к определяется операндом crbD. Дан­ные команды обеспечивают выполнение операций И (crand), ИЛИ (сгог), Исключающее ИЛИ (сгхог), НЕ/И (crnand), НЕ/ИЛИ (crnor), Эквивалентность (creqv), Запрет (crandc), Им­пликация (сгогс).

В группу служебных команд (табл. 2.71) входят команды пересылки содержимого служеб­ных регистров. Команды mtmsr, mfmsr, пересылки содержимого регистра управления MSR выполняются только в режиме супервизора. Команды mtspr, mfspr осуществляют пересылку содержимого служебных регистров SPRi, номер которых i задается операндом SPR. Боль­шинство служебных регистров входит в модель супервизора (см. рис. 2.68), поэтому обраще­ние к ним допускается только в режиме супервизора. Исключение составляют регистры XER (SPR1), LR (SPR8), CTR (SPR9), входящие в модель пользователя (см. рис. 2.66). Обраще­ние к этим регистрам осуществляется командами mtspr, mfspr, выполняемыми в режиме пользователя, при значениях операнда SPR = 1,8 или 9. Команда mftb производит считыва­ние в регистр rD старшего (TBU) или младшего (TBL) слова из базового таймера.

Команды Iwarx, stwcx. обычно используются совместно. При этом задаются одинаковые значения гА, гВ и rD = rS. Команда Iwarx загружает операнд из памяти в регистр rD, а команда stwcx. возвращает его обратно по тому же адресу ЕА = (гА!0) + (гВ), устанавливая в поле CRO соответствующие признаки EQ, GT, LT. Если же перед командой stwcx. произошла новая заг­рузка rD или запись по адресу ЕА, то эта команда не вызовет каких-либо операций. Данная пара команд обычно используется операционной системой для проверки значений программ­ных «семафоров», аналогично команде ТАЗ в микропроцессорах семейства М68ххх. При по­ступлении этих команд на внешних выводах микропроцессора, определяющих тип выполняе­мого цикла, устанавливается определенная комбинация сигналов, которая должна запретить другим устройствам обращение к общей шине до завершения их выполнения.

Команды sync, isync, eieio используются для синхронизации выполнения программ не­сколькими совместно работающими микропроцессорами. Команда sync вызывает завер­шение выполнения всех предшествующих команд, а затем разрешает выполнение после­дующих команд, т. е. осуществляет задержку конвейера до освобождения всех исполни­тельных устройств. Команда isync обеспечивает завершение выполнения предшествую­щих команд, после чего освобождает конвейер от поступивших в него последующих команд и выбирает из памяти новую пару команд. Таким образом, эта команда производит очистку конвейера. Команда eieio вызывает завершение выполнения предыдущих команд, требую­щих обращения к внешней памяти данных. Последующие обращения к памяти данных про­изводятся только после выполнения этой команды, т. е. реализуется задержка обращений, которая может быть использована другими устройствами. При выполнении данной коман­ды на внешних выводах, определяющих тип цикла обращения к шине, устанавливается определенная комбинация сигналов, которая используется, чтобы упорядочить обраще­ния различных устройств к общей оперативной памяти. Команды isync, eieio выполняются микропроцессором только в режиме супервизора.

Команды eciwx, ecowx обеспечивают обращение микропроцессора к выделенным ресур­сам системы - специализированным внешним устройствам или разделам памяти, для кото­рых устанавливаются 4-разрядные коды идентификации RID. При обращении к этим ресурсам соответствующий код RID загружается в старшие разряды Ь31-28 регистра EAR (см. рис. 2.68). Младший разряд ЬО этого регистра содержит бит Е, определяющий вид обращения: при Е = О разрешается выполнение команды ecowx, посылающей слово из регистра rS в устройство, идентифицированное кодом RID, при Е = 1 - команды eciwx, принимающей слово от идентифи­цированного устройства в регистр rD. Код RID выдается микропроцессором на специальные внешние выводы, а на адресную шину поступает адрес ЕА = (гА) + (гВ). При этом на выводах, определяющих тип цикла, устанавливается определенная комбинация сигналов, указываю­щая на выполнение команды ecwix или ecwox. Данные команды используются микропроцес­сором при обращении к выделенным внешним устройствам для приема или передачи управ­ляющей информации.

Напомним, что команды rfi, mtmsr, mfmsr, mtspr, mfspr, isync, eoeoi (отмечены симво­лом «*» в табл. 5.69, 5.71) выполняются микропроцессором только в режиме супервизо­ра.

Кроме описанных команд микропроцессор выполняет команды обработки чисел с пла­вающей точкой и команды управления кэшами и внешней памятью.

Обработка чисел с плавающей точкой. Операции над числами с плавающей точкой выполняются с использованием 64-разрядных регистров FPR31 -0 и регистра управления и состояния FPSCR, входящих в регистровую модель пользователя (см. рис. 2.66). Обрабаты­ваемые числа представляются в формате одинарной (ОТ, 32 разряда) или двойной (ДТ, 64 разряда) точности в соответствии со стандартом IEEE 754. Данные форматы обеспечивают также представление бесконечности и не-чисел (NAN) двух типов-SNAN и QNAN.

Регистр FPSCR управляет обслуживанием исключений при обработке чисел с плаваю­щей точкой, а также определяет вид используемого округления. Отдельные биты содержи­мого FPSR (рис. 2.71) имеют следующее функциональное назначение:

FX - признак общего исключения FPU, принимает значение FX = 1, если в регистре FPSCR установлен в «1» какой-либо из признаков исключения VX, OX, UX, ZX, XX;

FEX - признак разрешенного общего исключения FPU, принимает значение FEX = 1, если хотя бы один из установленных признаков исключения разрешен для обслуживания битами VE.OE, UE.ZE.XE;

VX —общий признак исключения при выполнении неправильной операции FPU; прини­мает значение VX = 1, если в FPSCR установлен в «1» какой-либо из признаков неправиль­ной операции (эти признаки отмечены начальными символами VX);

ОХ - признак переполнения принимает значение ОХ = 1, если результат превышает максимальную допустимую величину max;

UX - признак антипереполнения принимает значение UX = 1, если результат меньше минимальной допустимой величины min;

ZX - признак деления на нуль принимает значение ZX = 1 при нулевом делителе;

XX - признак неточного результата принимает значение XX = 1, если произошла потеря точности при округлении (XX копирует признак FI);

VXSNAN, VXISI, VXIDI, VXZDZ, VXIMZ, VXVC.VXSOFT, VXSQRT, VXCVI - признаки непра­вильной операции FPU при использовании в качестве операнда не-числа (VXSNAN = 1), при вычитании или делении бесконечностей (VXISI = 1 или VXIDI = 1), при делении нуля на нуль (VXZDZ -1) или умножении нуля на бесконечность (VXIMZ = 1), при программном вызо­ве исключения неправильного кода команды (установка VXSOFT = 1 с помощью команд mcrfs, mtfsf, mtfsfi, mtfsbl), попытке извлечения квадратного корня из отрицательного чис­ла (VXSQRT = 1) или неопределенном результате сравнения (VXCVI = 1);

FR - признак округления принимает значение FR = 1, если при выполнении команды производится округление результата;

FI - признак потери точности принимает значение FI = 1, если округление вызывает потерю точности (признак FI копируется в XX);

FPRF или FPCC - поле, определяющее результат выполняемых FPU арифметических операций, округления или сравнения (табл.2.72);

VE, ОЕ, UE, ZE, ХЕ-биты разрешения обслуживания исключений при выполнении не­правильной операции (VE = 1), переполнении (ОЕ = 1), антипереполнении (UE = 1), делении на нуль (ZE =1), получении неточного результата (ХЕ = 1);

N1 - переводит FPU при N1 =1 в режим выполнения некоторых операций, не предусмот­ренных стандартом IEEE 754;

RN - определяет вид выполняемого округления: к ближайшему числу (RN = 00), к нулю (RN = 01), к + -(РМ = 10) или к - ~(RN = 11).

При выполнении команд FPU, вызывающих изменение содержимого регистра условий CR (такие команды имеют символ «.» после мнемокода, см. табл. 2.73 - 2.75), содержимое четырех младших разрядов регистра FPSCR (признаки FX, FEX, VX, ОХ) копируется в поле CR1 регистра CR (рис. 2.67, а).

Признаки FX, OX, UX, ZX, XX, VXSNAN, VXISI, VXIDI, VXZDZ, VXIMZ, VXVC, VXSOFT, VXSQRT, VXCVI сохраняют установленное значение «1», пока оно не будет изменено с помощью команд mcrfs, mtfsfi, mtfsf, mtfsbO. Таким образом, эти признаки хранят информацию о при­чинах возникших замаскированных исключений, которая в дальнейшем может быть ис­пользована подпрограммой обслуживания.

Значения битов 15-19 в регистре FPSCR (поле FPRF или FPCC) зависят от типа вы­полняемой команды. При арифметических операциях (табл. 2.73) и операциях округления (табл. 2.74) значения битов FPRF устанавливаются согласно табл. 2.72 в соответствии с полученным результатом. При выполнении команд сравнения fcmpu, fcmpo биты 16-19 (поле FPCC) принимают такие же значения (табл. 2.71), как признаки FL (меньше), FG (боль­ше), FE (равно), FU (не сравнимо) в поле CRi регистра условий CR, номер которого задает­ся операндом crfd команды (табл. 2.74).

Команды арифметических операций сложения (fadd), вычитания (fsub), умножения (fmul), деления (fdiv), вычисления квадратного корня (fsqrt), обратной величины (fres) и обратной величины от квадратного корня (fsqrte) выполняются с операндами, располага­емыми в регистрах FPR, номера которых frA, frB, frC, frD задаются в команде (табл. 2.73). Блок FPU реализует также комбинированные операции умножение-сложение (fmadd), умножение-вычитание (fmsub) и аналогичные операции с изменением знака результата (fnmadd, fnmsub). Операции производятся над вещественными числами одинарной точности ОТ, если мнемокод команды имеет в конце суффикс «s», или двойной точности ДТ, если суффикс отсутствует.

Команды fres, frsqrte выполняются только с числами двойной точности. Команда fsei производит сравнение содержимого регистра frA с нулем: если оно больше или равно нулю, то в регистр frD загружается содержимое frC, если меньше нуля или не-число, то содержимое frB.

При операциях сравнения (команды fcmpu, fcmpo) производится сравнение содержи­мого указанных в команде регистров frA, frB и установка соответствующих признаков в поле CRi регистра условий CR (см. рис. 2.67, а), номер которого i определяется операн­дом crfD (табл. 2.74). Два варианта операции сравнения, выполняемые FPU, отличаются установкой значений признаков исключений в регистре FPSCR. Команда fcmpu устанавли­вает значение признака VXSNAN = 1, если какой-либо из сравниваемых операндов являет­ся не-числом SNAN. Команда fcmpo в этом случае тоже устанавливает значение VXSNAN = 1, а если исключения при неправильном результате операции не разрешены (в регистре FPSCR бит VE = 0), то устанавливается также признак VXVC. Если же операндом является не-число QNAN, то устанавливается только признак VXVC - 1.

Команда frsp преобразует число двойной точности (64 разряда) из регистра frA в чис­ло одинарной точности (32 разряда), посылаемое в регистр frD. В случае необходимости выполняется округление числа в соответствии со значением поля RN в регистре FPSCR. Команды fctiw, fctiwz преобразуют число двойной точности из регистра frA в целое 32-разрядное число со знаком, загружаемое в регистр frD. При этом команда fctiw проводит округление в соответствии с полем RN в регистре FPSCR, а команда fctiwz выполняет округление к нулю.

Таблица 2.74

Команды fmr, fneg, fabs, fnabs (табл. 2.75) производят пересылку содержимого регистра FPR с номером frA в регистр с номером frD. При этом команда fneg изменяет знак операн­да, команда fabs пересылает его абсолютное значение, команда fnabs устанавливает от­рицательный знак операнда.

Отдельная группа команд служит для пересылки и изменения содержимого регистра FPSCR. Команда mffs пересылает содержимое FPSCR в регистр FPR с номером frD. Коман­да mcrfs пересылает 4-битовое поле, номер которого задается операндом crfS, из регистра FPSCR в поле CRi регистра условий CR, где значение i = crfD. Команда mtfsfi загружает 4-битовый непосредственный операнд Im в поле регистра FPSCR, номер которого равен crfD. Команда mtfsf заносит в регистр FPSCR старшее 32-разрядное слово (frA)h из регистра с номером frA (разряды 63-32 содержимого регистра FPR), логически умноженные на задан­ную в команде 32-битную маску FM. Установка в «О» и «1» отдельных битов bi в регистре FPSCR производится командами mtfsbO, mtfsbl, в которых задается номер бита i = crbD.

Большинство рассмотренных команд может изменять содержимое поля CR1 в регист­ре условий CR (см. рис. 2.67, а), перенося в него значения признаков FX, FEX, VX, ОХ, устанавливаемых в регистре FPSCR. Для этого необходимо после мнемокода команды поставить символ «.» (см. табл. 2.73-2.75).

Команды загрузки и сохранения (табл. 2.76) производят загрузку в регистр FPR с номе­ром frD вещественного числа одинарной (ОТ) или двойной (ДТ) точности из памяти (коман­ды, начинающиеся с буквы «I» - load), либо записывают в память число ОТ или ДТ из регис­тра frS (команды, начинающиеся с букв «st» - store). Для обращения к памяти используется эффективный адрес ЕА, формируемый с помощью косвенно-регистровой адресации со сме­щением или индексированием (мнемокод команд с индексированием заканчивается буквой «х»). Команда stfiwx выполняет запись в память по адресу ЕА младшего 32-разрядного слова (frS)l из регистра FPR с номером frS (разряды 31-0 содержимого регистра).

Команды загрузки-сохранения имеют модификации с суффиксом и (указаны в скобках). При наличии этого суффикса в регистр GPR с номером гА после пересылки загружается эффективный адрес ЕА, использованный в данной команде. Эти модификации позволяют реализовать постинкрементную адресацию операндов.

Внутренняя кэш-память и устройства управления памятью. Микропроцессор МРС604 имеет отдельные устройства управления памятью IMMU, DMMU и внутренние кэши для команд 1C и данных DC (см. рис. 2.70). Емкость каждого кэша составляет 16 Кбайт. Устройства управления IMMU, DMMU обеспечивают блочную, сегментную и стра­ничную организацию памяти, а также обращение к внешним устройствам с использовани­ем специального протокола DS.

Принцип работы кэшей команд и данных аналогичен описанному для микропроцессо­ров семейства М680хх. Однако их организация и функционирование в МРС604 имеет неко­торые особенности. Оба кэша организованы в виде группы из 128 наборов, каждый из которых содержит по четыре 32-байтной строки. В качестве тега в МРС604 используются 20 старших разрядов адреса. Старшие 7 разрядов адреса определяют номер набора строк, в котором должны размещаться выбираемые данные или команда. Младшие 5 разрядов адресуют расположенные в строке байт, полуслово или слово. При кэш-промахе в выбран­ном наборе производится замещение пустой (недостоверной) строки или строки, к которой дольше всего не производилось обращение (метод замещения LRU - least-recently used). Каждая строка в кэше содержит 20-разрядный тег, восемь 32-разрядных слов (данные или команды) и биты, идентифицирующие текущее состояние строки: V или I -для кэша ко­манд, М, Е, 5или I-для кэша данных.

Для строк кэша команд 1C возможны два состояния: V (valid) —достоверное или I (invalid) -недостоверное содержимое строки. Недостоверное (незаполненное) состояние строк это­го кэша устанавливается при сбросе процессора в начальное состояние (reset) путем заг­рузки соответствующего содержимого в регистр конфигурации HIDO или с помощью коман­ды icbi (табл. 2.77), аннулирующей содержимое строки. При заполнении строки устанавли­вается достоверное состояние ее содержимого.

Для кэша данных DC введено четыре возможных состояния строки, идентификация которых обеспечивает возможность совместного использования нескольких кэшей в мультипроцессорной системе:

М (modified) - содержимое строки модифицировано путем записи по соответствующему адресу, и новое содержимое не переписано в ОЗУ;

Е (exclusive) - содержимое строки хранится только в этом кэше и ОЗУ;

S (shared) - содержимое строки хранится в данном кэше, ОЗУ и каком-либо другом устройстве (кэше);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]