Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦИУ - курс лекций.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.78 Mб
Скачать
        1. Линейный модификатор

Включается если в регистр М загружено число FFFF. В этом случае используется нормальная, 16-ти битная линейная арифметика. При вычислении адреса используется 16-ти битное смещение N инкремент и декремент. Диапазон смещения для знаковых чисел от – 32768 до 32767 и от 0 до 65535 для беззнаковых чисел. Поддерживается переполнение, как через верхнюю границу, так и через нижнюю. Для верхней границы из суммы вычитается 65536, для нижней границы к разнице надо прибавить 65536.

        1. Модульный модификатор

Включается, если в регистр М загружено число от 1 до 32767. Модуль рассчитывается как число из регистра М+1. При включении модульного модификатора в памяти данных создается множество буферов размером равным модулю. Причем модуль однозначно определяет нижнюю и верхнюю границу всех буферов. Нижняя граница или базовый адрес буфера определяется из неравенства

,

где Mod – модуль;

К – количество младших разрядов, которые всегда будут равны 0 у всех базовых адресов.

Верхняя граница рассчитывается как

,

где ;

В – номер буфера.

Количество буферов

.

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

,

где P-целое число.

В этом случае регистр R переходит из одного циклического буфера в другой, отстоящий от первого на P буферов. Для определения номера активного буфера Ba используются следующие соображения

;

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

.

При постинкременте:

;

;

.

Количество брошенных ячеек

;

.

        1. Модификатор реверсивного переноса

Данный режим включается, если в регистр М загружено число 0. Модификация адреса в этом режиме осуществляется путем реализации на аппаратном уровне переноса на арифметических операциях в обратном направлении от старших битов к младшим.

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

Модификатор реверсивного переноса используется для эффективного вычисления адресов при реализации алгоритма БПФ с прореживанием по времени.

      1. Программный контроллер

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

- программный счетчик PC (Program Counter);

- регистр адреса цикла LA (Loop Address);

- счетчик петли LC (Loop Counter);

- регистр статуса SR (Status Register);

- регистр режима операций OMR (Operating Mode Register);

- указатель стека SP (Stack Pointer).

Системный стек представляет собой отдельный блок внутренней памяти, используемый для хранения регистра статуса и программного счетчика при вызовах подпрограмм и длительных прерываниях. В стеке также хранятся LA и LC при организации аппаратных циклов. Все эти регистры могут быть прочитаны или записаны через внутрисхемный эмулятор для упрощения отладки системы. Конвейер программного контроллера имеет три уровня, каждый из которых выполняет параллельно одно действие. Первый уровень отвечает за считывание следующей команды, второй уровень за декодирование, третий за выполнение. Таким образом, за один машинный цикл виртуально команда считывается, декодируется и выполняется одновременно. Нарушение работы конвейера происходит, если в программе встречается команда условного ветвления. Процессор всегда в конвейер считывает команду следующую при условии верности условия.