Шинные циклы и конвейерная обработка команд, страница 2

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

Для более четкого представления об этих режимах процессоров корпорации Intel они сведены в таблицу VIII.2.

                                                                           Таблица VIII.2

Архитектура и

режим

Операционная система

Требуется перекомпиляция приложений

Размер адресации

Размер

операндов

Размер

регистров

РОН

IA-32

Legacy IA-32 Mode

32-разрядная

нет

32

32

32

 IA-32e

Compatibility Mode 64/32

 64-разрядная

            нет

32

32

32

16

16

16, 8

64-bit Mode 64/64

64-разрядная

да

64

32

64

 IA-64

IA-64 Mode

64-разрядная

Другая система команд

64

64

64

Число линий в шинах 64-разрядных процессоров архитектур IA-32e и IA-64, будут, естественно, отличаться от приведенных ранее, хотя в настоящее время, число адресных линий (разрядов) и в процессорах архитектуры IA32e используется гораздо меньше 64 (40-50, в крайнем случае).

                          2. Конвейерная обработка команд.

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

Как правило, процессор выполняет программу, по очереди выбирая из памяти и активизируя ее команды. Представим себе для простоты, что процесс обработки команды в процессоре разбит на 4 этапа. Структура такого четырехступенчатого конвейера, и последовательность выполнения на нем четырех команд программы, приведена на рис.VIII.1.

Условные обозначения на рисунке:

В: → Выборка команды из памяти.

Д:→Декодирование команды и выборка (при необходимости) ее исходных операндов.

И: → Исполнение заданной в команде операции.

С: → Сохранение результата по целевому адресу.

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

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

Рис VIII.1  Схема структуры 4–х ступенчатого конвейера и пример

                                   выполнения команды за 4 такта.

          Декодированная команда поступает в буфер Б2 и обрабатывается исполнительным блоком И, в то время как в буфер Б1 поступает команда на декодирование, а блок В выбирает из памяти очередную команду, и т.д. Таким образом, по мере обработки команды конвейером в промежуточные буферы должна поступать вся необходимая для очередного этапа информация. Например, для четвертого такта буферные памяти должны содержать следующую информацию.

·  Буфер Б1: команда К3, выбранная на такте 3 и обрабатываемая блоком декодирования команды.

·  Буфер Б2: исходные операнды команды К2 и спецификация выполняемой операции. Эта информация сформирована схемами дешифратора на такте 3. Буфер Б2 включает также информацию, необходимую для этапа С2,  на котором осуществляется запись команды К2. Хотя она и не нужна на этапе исполнения, на следующем такте она передается на этап сохранения (записи) для осуществления соответствующей операции.

·  Буфер Б3: результаты, которые сформированы блоком выполнения

          команды, и информация о месте назначения данных команды К1.

Каждая ступень (этап) конвейерного выполнения команды должен завершаться за один такт. И, в этом случае, в каждом такте результат выполнения очередной команды записывается в память. Таким образом, можно сказать, что каждая команда выполняется за один такт работы процессора.

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

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

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

Рассмотрим, например, схему возникновения так называемого конфликта по данным. Этот пример иллюстрирован на рис. VIII.2. В этом случае конфликт образуется вследствие того, что обработка данных при исполнении команды (например, команды деления) требует интервала времени на данном этапе более одного тактового интервала.

Рис.VIII.2  Иллюстрация прохождения команд по 4-х ступенчатому

               конвейеру, в случае этапа (ступени) исполнения команды И2,

               занимающего более одного  тактового интервала.

Как следует из рисунка, в данном конкретном  случае, работа конвейера приостанавливается на два такта. Его нормальное функционирование возобновляется во время такта 7.

Интервалы простоя называют pipelinebubbles (конвейерные пузырьки). Образовавшись в результате задержки на одной ступени, пузырек спускается вниз, пока не достигнет последнего блока.