ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Теория › Тема 4. Управляющее устройство процессоров платформы с5000

# Электронный учебно-методический
комплекс по дисциплине
"Проектирование проблемно-ориентированных вычислительных средств"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

4.4. Организация конвейера в процессорах платформы С5000
4.4.1. Ступени конвейера

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

- Предварительная выборка команды. На шину адреса программы (PAB) выдается адрес следующей команды, которая будет выбрана.
- Выборка команды. Слово команд выбирается по шины программы (РВ) и загружается в регистр команды (IR). Это заканчивает последовательность вывыборки команды состоящую из этого и предыдущего такта.
- Декодирование. Содержимое регистра команды (IR), декодируется, чтобы определить тип операции доступа к памяти и управляющей последовательности в устройстве генерации адресов данных (DAGEN) и центральном процессоре.
- Доступ. Устройство DAGEN выдает адрес читаемого операнда на шину адреса данных DAB. Если требуется второй операнд, на другую шину адреса данных CAB, также выдается соответствующий адрес. Также обновляются вспомогательные регистры при косвенной адресации и указатель (SP). Это считается первым этапом 2-этапной последовательности чтения операнда.
- Чтение. Читается операнд(ы) данных, если таковые имеются, данные считываются по шинам данных DB и CB. На этом заканчивает 2-этапная последовательность чтения операнда. В то же самое время начинается 2-этапная последовательность записи операнда. Адрес данных записываемого операнда, если таковой вообще имеются, выдается на шину адреса записи данных (ЕАВ). Для регистров с отображением на память операнд данных считывается и записывается с использованием шины DB.
- Выполнение. Завершается запись данных в последовательности записи операнда, с использованием шины записи данных (ЕВ). В этой фазе выполняется команда.

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

######

###### Рисунок 4.5 – Ступени конвейера

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

Выполнение отдельных операций в конвейере представлено на рис.4.6.

######

###### Рисунок 4.6 – Выполнение операций в конвейере

Рассматриваемые далее примеры демонстрируют работу конвейера при выполнении различных типов команд. Если специально не отмечено, то все команды, используемые в примерах, считаются командами длиной в одно слово с временем выполнения один такт, находящимися во внутренней памяти процессора.
Конвейер изображается в этих примерах как ряд ступенчатых строк, в которых каждая строка соответствует одному слову команды, двигающемуся по ступеням конвейера.
Каждая строка в примере помечена слева как команда, операнд, многотактовая команда или очистка конвейера. Числа вверху диаграммы представляют собой одиночные командные такты. В некоторых тактах не показаны операции конвейера - это сделано преднамеренно, чтобы избежать отображения ненужной информации.
Каждый прямоугольный блок в примере содержит соответствующие действия, которые происходят на этой ступени конвейера. Названия каждой ступени конвейера показано над блоком, в котором происходит действие.
Затенение представляет все шаги выборки команды и очистки конвейера, которые необходимы, чтобы завершить команду, выполнение которой показано.

4.4.2. Особенности выполнения отдельных команд и обработки прерываний в конвейре
Выполнение команды перехода в конвейере

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

Рисунки 4.7 и 4.8 показывают поведению конвейера во время выполнения команды перехода (B) и команды задержанного перехода (BD), соответственно.
Поскольку команда перехода состоит из двух слов команды, потребуется по крайней мере два командных такта, чтобы команда выполнилась полностью. Однако, стандартная команда перехода фактически занимает четыре такта выполнения. Это проиллюстрировано на рис.4.7.

######

###### Рисунок 4.7 – Выполнение команды перехода (B)

Для команды перехода, чтобы выполниться полностью, происходят следующие события:
Такт 1: PAB загружается адресом команды перехода.
Такты 2 и 3: Выбираются два слова команды перехода.
Такты 4 и 5: Выбираются еще две команды, i3 и i4. Хотя эти две команды после команды перехода, i3 и i4, выбраны центральным процессором C54x, они не доходят до фазе декодирования и в конечном счете игнорируются. После того, как второе слово команды перехода (обозначенное b1 в левом столбце) декодировано, PAB загружается этим новым значением (в такте 5).
Такты 6 и 7: команда перехода с двумя словами вводит фазу выполнения конвейера в тактах 6 и 7. Кроме того, в такте 6 выбирается команда j1 по адресу b1.
Такты 8 и 9: Эти такты также используются той же самой командой перехода, так как следующим двум командам, i3 и i4, не разрешено завершить их выполнение; вот почему команда перехода требует четыре такта для выполнения.
Такт 10: Команда j1 завершает выполнение.
Рисунок 4.8 показывает поведение конвейера для команды задержанного перехода.

######

###### Рисунок 4.8 – Выполнение команды задержанного перехода (BD)

В этом случае, конвейер ведет себя так же, как и для обычной команды перехода. Однако, двум командам после перехода, i3 и i4, разрешено завершить их выполнение. Поэтому, только такты 6 и 7 используются командой задержанного перехода, превращая задержанный переход в команду с 2 тактами.

Выполнение команды вызова подпрограммы в конвейере

Стандартная команда вызова использует четыре такта для выполнения. Хотя стандартная команда вызова содержит два слова и, кажется, нуждается только в двух тактах, она фактически очищает конвейер для двух тактов, и занимает четыре такта для выполнения.
Рисунок 4.9 показывает поведение конвейера во время выполнения команды вызова подпрограммы.

######

###### Рисунок 4.9 – Выполнение команды вызова подпрограммы (CALL)

В этом случае происходят следующие события:
Такт 1: PAB загружается адресом команды вызова.
Такты 2 и 3: Выбираются два слова команды вызова.
Такт 4: Указатель стека SP декрементируется, потому что адрес возврата помещается в стек. Команда i3 выбрана; однако, она не доходят до фазе декодирования.
Такт 5: Шина адреса записи (ЕАВ) загружается содержимым SP, и внутренний регистр возврата (RTN) загружается адресом возврата a3. После того, как второе слово команды вызова (b1) декодировано, PAB загружается новым значением в такте 5 (показано в строке j1).
Такты 6 и 7: Содержимое регистра RTN записывается в стек, используя EB в такте 6. Команда, j1, по адресу b1 выбирается в такте 6. Команда вызова с двумя словами вводит фазу выполнения конвейера в тактах 6 и 7.
Такты 8 и 9: Эти такты используются командой вызова, потому что следующим двум командам не разрешено завершить их выполнение.
Такт 10: Команда j1 завершает выполнение.

Рисунок 4.10 показывает поведение конвейера во время выполнения команды задержанного вызова подпрограммы.

######

###### Рисунок 4.10 – Выполнение команды задержанного вызова подпрограммы (CALLD)

Выполнение команды условного выполнения в конвейере

Поскольку команда XC длиной слово, то требуется по крайней мере один командный такт, чтобы полностью ее выполнить. Рисунок 4.11 показывает поведение конвейера во время выполнения XC.

######

###### Рисунок 4.11 – Выполнение команды условного выполнения (XC)

В этом случае, происходят следующие события:
Такт 4: PAB загружается адресом команды XC.
Такт 5: Выбирается код операции команды XC.
Такт 7: Когда команда XC доходит до фазы доступа в такте 7, проверяются условия, определенные командой XC. Если проверенные условия истинны, следующие две команды, i5 и i6, декодируются и выполняются. Однако, если проверенные условия ложны, i5, и i6 не декодированы.
Чтобы выполнить XC в одном такте, центральный процессор оценивает проверяемые условия в фазе доступа конвейера. Это означает, что две команда длиной в слово (или одна команда длиной 2 слова) предшествующие команде XC не будут полностью выполнены прежде, чем условия будут проверены. Поскольку коды условия изменяются командами только в фазе выполнения, эти две команды не имеют никакого влияния на команду XC.

Разрешение конфликтов в конвейере

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

- Вспомогательные регистры (AR0 - AR7)
- Регистр Размера блока (BK)
- Указатель вершины стека (SP)
- Временный Регистр (T)
- Регистр состояния режима Процессора (PMST)
- Регистры Состояния (ST0 и ST1)
- Счетчик повторения Блока команд (BRC)
- Регистры Аккумуляторов с отображением на память (AG, AH, AL, BG, BH, BL)
Однако, определенные команды могут обратиться к этим регистрам, не вызывая конфликты конвейера, если Вы учтете соответствующие такты ожидания. Список этих команд в таблице 4.2.
Данные в таблице истинны, только если программисты ограничивают себя теми командами, которые перечислены в столбце 3, чтобы выполнить функции, перечисленные в столбце 2. Иначе, необходимо найти время ожидания каждой отдельной команды. Кроме того, эта таблица является справочником по задержкам конвейера. Она не описывает все возможные задержки конвейера и не обеспечивает подробную информацию о задержках.

Таблица 4.2 - Рекомендуемые команды для того, чтобы обратиться к регистрам с отображением на память

Категория | Функция | Команды | Задержка | Дополнительные Ограничения
1 | Запись ARx/BK без использования аккумулятора | STM MVDK MVMM MVMD | Обновление ARx: Нет Обновления ВК: следующее 1 слово не должно использовать циклическую адресацию | Нет
2 | Запись ARx/BK с использованием аккумулятора | STLM STH/STL Запись ‡ | Следующие 2 слова (ARx) или 3 слова (ВК) не должны использовать соответствующий регистр | Следующая команда не должна писать ни в один ARx, ВК или SP, используя STM, MVDK или MVMD
3 | Выталкивание ARx/BK из стека | POPM | Следующее 1 слово (ARx) или 2 слова (ВК) не должны использовать соответствующий регистр. | Перед категорией 3 не должно быть команд с категориями 2 или 5, которые пишут в любой ARx, ВК или SP
4 | Запись в SP без использования аккумулятора | STM MVDK MVMM MVMD | Нет, если CPL=0 Следующее 1 слово не должно использовать SP если CPL=1 # | Нет
5 | Запись в SP с использованием аккумулятора | STLM STH/STL Запись ‡ | Следующие 2 слова (если CPL=0) или 3 слова (если CPL=1) не должны использовать SP # | Следующая команда не должна писать в ARx, ВК или SP, используя STM, MVDK или MVMD
6 | Запись в T без использования аккумулятора | STM MVDK LD Smem, T - “ - || ST | Нет | Нет
7 | Запись в T с использованием аккумулятора | STLM STH/STL | Следующее 1 слово не должно использовать T | Нет
8 | Запись в BRC без использования аккумулятора | STM MVDK | Нет | Нет
9 | Запись в BRC с использованием аккумулятора | STLM STH/STL Запись ‡ | Следующая команда не должна быть RPTB[D] | Нет
10 | Запись в ARP | LD #k, ARP | Нет | Нет
11 | Запись в DP | LD #k, DP LD Smem, DP | Нет | Нет
12 | Изменение CPL | RSBX SSBX | Следующие 3 слова не должны использовать прямую адресацию | Нет
13 | Изменение SXM | RSBX SSBX | Следующее 1слово не должно зависеть от состояния SXM | Нет
14 | Запись в ASM | LD #k, ASM LD Smem, ASM | Нет | Нет
15 | Изменение BRAF | RSBX SSBX | Следующие 5 слов не должны содержать последнее слово команды в цикле RPTB | Нет
16 | Запись BRC в память | SRCCD | Следующие 2 слова не должны содержать последнее слово команды в цикле RPTB | Нет
17 | Запись в OVLY, MP/MC или IPTR | ANDM ORM XORM | Следующие 6 тактов не должны содержать команды, выбираемые из адресного пространства внутренней памяти | Внешний шинный цикл может потребовать дополнительный такт ожидания
18 | Запись в бит DROM | ANDM ORM XORM | Следующие 3 слова не должны обращаться к адресному пространству DROM | Внешний шинный цикл может потребовать дополнительный такт ожидания
19 | Вычисление экспоненты | EXP | Следующая команда не должна использовать регистр T | Нет
20 | Манипуляции со стеком в режиме компилятора (CPL=1) | FRAME POPM/POPD PSHM/PSHD | Следующая команда не должна использовать режим прямой адресации (CPL=1) | Нет
21 | Чтение AG, AH, AL, BG, BH или BL как регистров с отображением на память | Любая команда чтения из памяти | Предыдущая команда не должна изменять аккумулятор A или B | Нет

‡ Любая другая команда типа записи.
# Прерывания вызывают обновление SP. Это обновление SP может столкнуться с предыдущей записью в SP. Поэтому, должны быть приняты специальные меры при использовании прерываний и выполнении команд обновления SP.

Оглавление | Программа | Теория| Практика | Контроль знаний | Об авторах
© БГУИР , 2012