Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
99
Добавлен:
10.05.2015
Размер:
1.62 Mб
Скачать
    1. Конвейер команд.

1.3.1. Общие положения

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

При работе конвейера команд могут возникнуть три типа конфликтов [л 2, л 3, л4]:

  1. структурный,

  2. конфликт по данным,

  3. конфликт по управлению.

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

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

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

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

Рассмотрим их по порядку.

1.3.2. Структурные конфликты

Структурные конфликты чаще всего возникает при обращении различных ступеней к памяти.Предположим, что процессор работает с одноадресными командами. Тогда структуру цикла исполнения команды можно представить как последовательность трех этапов (рис.12а): выборка команды из ОЗУ и дешифрация КОП, выборка операнда и выполнение операции. Напомним, что при данной адресности команд второй операнд берется из регистра-аккумулятора и в него же записывается результат арифметической операции.

Закрепим за каждым этапом ступень конвейера. В результате получим следующую временную диаграмму работы конвейера (рис.12б). Очевидно, что для выполнения команд арифметики и ряда логических операций необходимы все 3 ступени конвейера. Для команд управления первая ступень выбирает команду, а третья ступень должна занести на программный счетчик адрес перехода. Вторая ступень в этих случаях простаивает.

Рис.12, а

Т

ступ

1

2

3

4

1 Выборка

команды

К1

К2

К3

К4

Обращение

к ОЗУ

2 Выборка

операнда

К1

К2

К3

Обращение

к ОЗУ

3 Выполн.

операции

К1

К2

Рис.12, б

Способы борьбы с конфликтами по обращению к памяти.

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

  1. расслоение памяти по информации;

  2. расслоение памяти по адресам.

Расслоение памяти (в данном случае имеется в виду ОЗУ) по информации заключается в том, что для команд и данных в состав ядра ЭВМ вводятся два ОЗУ: ОЗУ команд и ОЗУ данных (рис.13). Конфликта между 1-й и 2-й ступенями не возникает т.к. они одновременно обращаются к различным ОЗУ. Однако, при увеличении адресности команды данного типа конфликт может возникнуть при обращении к ОЗУ данных.

Рис. 13

Предположим, что процессор работает с 3-х адресными командами. Цикл исполнения команды можно разделить на 5 следующих этапов (рис.14):

  1. выборка команды и дешифрация КОП,

  2. выборка 1-го операнда,

  3. выборка 2-го операнда,

  4. вычисление результата (для команд арифметических и логических операций),

  5. запись результата в память.

Рис.14

Закрепив данные этапы за ступенями конвейера, получим следующую временную диаграмму работы конвейера (рис. 15).

Рис. 15

При использовании схемы (рис.13) расслоения ОЗУ по информации конфликты будут иметь место при обращении 2-й, 3-й и 5-й ступеней к ОЗУ данных при выборке операндов и записи результата.

Для ликвидации конфликта обращения к памяти различных ступеней конвейера наиболее общей является расслоение памяти поадресам.Этот тип расслоения базируется на связности информации. Под этим термином понимается следующее: все команды программы и элементы массива данных размещаются в памяти по нарастанию адресов.

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

Принцип расслоения ОЗУ.

Предположим, что ОЗУ состоит из 4-х модулей: М0,М1, М2, и М3 (рис.16). Адресованы начальные ячейки модулей (адреса показаны в 16-ричной системе счисления); 0-й адрес соответствует 0-й ячейке модуля М0, 1-й адрес 0-й ячейке модуля М1и т.д.

В этом случае, если адреса команды или данных принадлежат разным модулям, то в 5-м такте конфликт разрешается.

Рис.16

Чем больше модулей в составе ОЗУ, тем меньше вероятность конфликта.

Конфликты могут возникнуть, когда в одном и том же такте различные ступени обращается за командой или данными к одному модулю. В этом случае конвейер приостанавливает свою работу и появляется «пузырь».

Аналогичные конфликты возникают при одновременном обращении различных ступеней конвейера к регистровой памяти. Это имеет место в RISC- процессорах при выполнении команд обработки данных.

Прежде всего, напомним основные особенности процессоров с ограниченным набором команд [л 5]:

  1. все команды имеют одинаковую длину;

  2. команды подразделяются на 2 группы; к первой группе отнесены команды обработки данных, ко второй - все остальные команды;

  3. команды первой группы выполняют только короткие операции; команды длинных операций выносятся на программный уровень;

  4. в командах первой группы используются самые простые способы адресации и относятся к регистровой памяти (РОН).

Чаще всего используется 3-х адресный формат (рис.17).

Рис.17

Такой формат позволяет на основной массе команд в цикле исполнения команды иметь большую экономию времени по обращению за операндами, поскольку время обращения к регистровой памяти много меньше времени обращения к ОЗУ и соизмеримо с тактом работы процессора.

В командах обмена между ОЗУ и РОН, а так же в командах управления в третьем адресе может стоять смещение или косвенный адрес ОЗУ.

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

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

На рис.18 представлена временная диаграмма такого конвейера.

За ступенями конвейера закреплены следующие функции:

1-я – ступень выбирает команды из ОЗУ,

2-я – дешифрирует код операции,

3-я – осуществляет одновременное обращение за операндами к РОН (другое название – регистровый файл),

4-я – ступень выполняет процедуры, указанные в КОП,

5-я – записывает результат в регистровый файл(РФ).

Рис. 18

Структурный конфликт имеет место при обращениях к РФ: в режиме стационарной работы конвейера, когда все ступени работают одновременно, при выборке 3-й ступенью сразу 2-х операндов и 5-й ступенью при записи в РФ результата.

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