Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AiPSP_ekzamen_main.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.38 Mб
Скачать

17. Сдвигатель. Функционирование сдвигателя. Выделение и депонирование битовых полей. Флаги состояния сдвигателя. Организация многофункциональных вычислений. Ограничения.

  1. Типы операций (только с ФЗ-данными)

Сдвигатель выполняет:

  • сдвиги;

  • операции с битом (установка, сброс, инверсия, тестирование);

  • операции над битовым полем (выделение и депонирование);

  • поддержка преобразования ФЗ <-> ПЗ.

  1. Функционирование

Сдвигатель читает от 1 до 3 входных операнда (регистры регистрового файла (РФ) или константы в инструкции) в начале такта: X – операнд, который обрабатывается, Y – операнд, специфицирующий абсолютные значения величины сдвига, длины битовых полей или позиции битов, Z – операнд, который обрабатывается или модифицируется.

Сдвигатель записывает 1 результат в регистр РФ в конце такта и модифицирует флаги. Один и тот же регистр РФ может выступать в качестве операнда и приемника результата для любой операции Сдвигателя.

Некоторые операции Сдвигателя генерируют 8- или 6-битный результат, которые помещается в младшие биты ФЗ-поля, а знаковые бит результата распространяется на «свободные» старшие разряды.

  1. Выделение и депонирование битовых полей

    1. Операция депонирования битового поля (по сути копирование куска бит длиной len6 и вставка его начиная с позиции bit6, из всего 40-битного регистра используются только 32 старших бита, поэтому если задать bit6 = 0, то выделенный кусок будет вставлен начиная с бита под номером 8)

Пример:

    1. Операция выделения битового поля (копирование битов в количестве len6, начиная с позиции bit6, вставка их в начало указанного регистра)

  1. Флаги состояния, на которые влияет выполнение операций Сдвигателя (только регистр ASTAT)

    Флаг

    Определение

    Когда устанавливается

    SV

    Флаг переполнения

    когда значащие биты выдвигаются влево за границы ФЗ-поля;

    в операции с битом указан номер бита > 31;

    битовое поле частично или полностью выходит влево за границы ФЗ-поля

    SZ

    Флаг нулевого результата

    результат равен нулю;

    проверяемый бит равен 0;

    в операции с битом указан номер бита > 31

    SS

    Флаг отрицательного входного операнда

    Для операций выделения экспоненты устанавливается в соответствии со знаком операнда. Для остальных операций сбрасывается в 0.

  2. Организация многофункциональных вычислений

Многофункциональное вычисление (инструкция) – выполнение в течение одного такта:

  • одной операции АЛУ и одной операции Умножителя;

  • двух операций АЛУ (только дуальное сложение/вычитание).

Инструкции АЛУ и Умножителя, разрешенные для одновременного выполнения, выбираются из ограниченного набора.

Наборы допустимых для распараллеливания операций различаются для ФЗ и ПЗ-операндов.

В режиме многофункциональной обработки ФЗ-данных Умножитель поддерживает только операции с дробными знаковыми числами(!).

Обновление флагов происходит так же, за исключением того, что в двойной операции ALU сложение/вычитание флаги устанавливаются на основании операции «ИЛИ» между флагами от каждой операции.

  1. Ограничения при размещении операндов для многофункциональных вычислений

При использовании ALU и умножителя для многофункциональных вычислений каждый из четырех входных операндов ограничен своим набором из четырех регистров регистрового файла (см. ниже). Например, операнд Х в ALU может быть только R8, R9, R10 или R11.

18. Архитектура программного секвенсора. Стеки программного секвенсора и их назначение. Организация и принципы реализации ветвлений. Типы переходов (переходы, вызовы, возвраты, условные, безусловные и т.п.).

Функция секвенсора – выполнение инструкций в линейном порядке с инкрементом адреса выборки следующей команды.

Значение адреса следующей команды выбирается программным автоматом из нескольких возможных источников: регистра адреса выборки, регистра адреса декодирования и счетчика команд (PC), которые содержат, соответственно, адреса команд, которые в данный момент выбираются, декодируются и выполняются. Счетчик команд объединен со стеком счетчика команд, который используется для хранения адреса возврата и адреса вершины цикла. Контроллер прерываний выполняет все функции, связанные с обработкой прерывания: например, определяет, маскировано прерывание или нет, и генерирует соответствующий адрес вектора прерывания.

  • Адрес выполняемой (Execute) инструкции – регистр PC.

  • Адрес декодируемой (Decode) инструкции – регистр DADDR.

  • Адрес выбираемой (Fetch) инструкции – регистр FADDR.

Стек адреса цикла и стек счетчика цикла обеспечивают поддержку вложенных циклов. В стеке состояния сохраняется содержимое регистров состояния при выполнении вложенных подпрограмм обработки прерываний.

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

Переходы, вызовы и возвраты могут быть условными и безусловными:

IF cond jump Proc2; jump Proc2;

При переходах и вызовах режим адресации может быть прямой, косвенный, относительный:

call Proc3;

IF cond call (M12, I14);

jump (PC, 0x0004);

Переходы, вызовы и возвраты могут быть обычные и задержанные:

call Proc4; rts (db);

Оба выполняются 3 такта, но обычный выполняет два nop, а задержанный две инструкции после него. Ограничение: в 2-х адресах за инструкцией задержанного перехода не могут находиться инструкции других переходов (вызовов, возвратов), команды работы со стеком Программного секвенсора (PC Stack), инструкции организации циклов (DO... UNTIL...), команда IDLE.

Переход может прерывать выполнение цикла.

jump Proc5 (LA);

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