Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Системы с конвейерной обработкой данных



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

Конвейеризация (или конвейерная обработка) в общем случае основана на разделе­нии подлежащей исполнению функции на более мелкие части, называемые ступенями, и выделении для каждой из них отдельного блока аппаратуры. Так обработку любой ма­шинной команды можно разделить на несколько этапов (несколько ступеней), организо­вав передачу данных от одного этапа к следующему. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени операций. Пред­положим, что в операции можно выделить пять микроопераций, каждая из которых вы­полняется за одну единицу времени. Если есть одно неделимое последовательное устрой­ство, то 100 пар аргументов оно обработает за 500 единиц. Если каждую микрооперацию выделить в отдельный этап (или иначе говорят - ступень) конвейерного устройства, то на пятой единице времени на разной стадии обработки такого устройства будут находится первые пять пар аргументов, а весь набор из ста пар будет обработан за 5+99=104 едини­цы времени - ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).

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

выборка команды - IF (по адресу, заданному счетчиком команд, из памяти извлека­ется команда);

декодирование команды / выборка операндов из регистров - ID; выполнение операции / вычисление эффективного адреса памяти - ЕХ; обращение к памяти - MEM; запоминание результата - WB.

Работу конвейера можно условно представить, используются временные диаграммы, (рис. 3.6), на которых обычно изображаются выполняемые команды, номера тактов и эта­пы выполнения команд.

Команда   Номер такта  
                 
Команда i   IF   ID   EX   MEM   WB                  
Команда i-t-l       IF   ID   EX   MEM   WB              
Команда i+2           IF   ID   EX   MEM   WB          
Команда i+3               IF   ID   EX   MEM   WB      
Команда i+4                   IF   ID   EX   MEM   WB  

Рис. 3.6. Диаграмма работы простейшего конвейера

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


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

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

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

3. Конфликты по управлению, которые возникают при конвейеризации команд перехо­дов и других команд, которые изменяют значение счетчика команд.

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

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.