Простейшая организация конвейера

Глава 30. Конвейерная организация обработки команд

Принцип конвейерной обработки

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

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

 

Простейшая организация конвейера

Для иллюстрации основных принципов построения ядер процессоров будет использоваться простейшая структура, содержащая 32 целочисленных регистра общего назначения (R0,...,R31), 32 регистра данных с плавающей точкой (F0,...,F31) и счетчик команд (РНК). Будем считать, что набор команд процессора включает типичные арифметические и логические операции, операции с плавающей точкой, операции пересылки данных, операции управления потоком команд и системные операции. В арифметических командах используется трехадресный формат, типичный для RISC-архитектур, а для обращения к оперативной памяти используются операции загрузки и записи содержимого регистров в оперативную память.

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

ВК - считывание команды;

ДК – дешифрация команды;

ЧО - считывание операндов;

ВП- выполнение команды;

ЗР - запись результата.

Идеальнымявляется конвейер, в котором:

все этапы (ступени) имеют одинаковое время срабатывания;

отсутствуют конфликты;

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

Выполнение команд в таком конвейере представлено в табл. 30.1.

 

 

Таблица 30.1. Порядок выполнения команд в 5-ступенчатом конвейере

 

Команда Такт
i ВК ДК ЧО ВП ЗР        
i+1   ВК ДК ЧО ВП ЗР      
i+2     ВК ДК ЧО ВП ЗР    
i+3       ВК ДК ЧО ВП ЗР  
i+4         ВК ДК ЧО ВП ЗР

 

Анализ табл. 30.1 показывает, что при конвейерной обработке после того, как получен результат выполнения первой команды (после заполнения конвейера), результат очередной команды появляется ежетактно.

При последовательном выполнении каждой команды время выполнения N команд составит:

Tпосл = N*(tВК + tДК + tЧО + tВП + tЗР) = 5Nτ

Предположим, что конвейер выполнения команд идеальный и времена срабатывания ступеней равны 1 такту (τ).

Время выполнения N команд в идеальном конвейере составит:

 

Tид.конв = *(tВК + tДК + tЧО + tВП + tЗР)+(N-1)τ = 5τ+(N-1)τ

Для данного примера при больших значениях Nускорение будет близко к 5 .

Очевидно, что при достаточно длительной работе конвейера его быстродействие будет существенно превышать быстродействие, достигаемое при последовательном выполнении всех этапов команд. Это увеличение будет тем больше, чем меньше длительность такта конвейера и чем больше количество выполненных за рассматриваемый период команд.

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