
- •Страницы 7–11
- •1 Конвейеризация вычислений
- •1.1 Синхронные линейные конвейеры
- •1.2 Метрики эффективности конвейеров
- •1.3 Нелинейные конвейеры
- •1.4 Конвейер команд
- •1.8 Суперконвейерные процессоры
- •3.1 Общая информация о фирме атмеl и ее продукции
- •3.2 Обзор микроконтроллеров, производимых корпорацией атмеl
- •Архитектура микропроцессорного ядра аvr-микроконтроллеров
- •Обзор Тinу аvr-микроконтроллеров
- •3.6 Обзор Меgа аvr-микроконтроллеров
- •3.7 Система команд Ассемблера микроконтроллеров аvr.
- •3.8 Описание системы команд и программная модель аvr
1.3 Нелинейные конвейеры
Конвейер не всегда представляет собой линейную цепочку этапов. В ряде ситуаций оказывается выгодным, когда функциональные блоки соединены между собой не последовательно, а в соответствии с логикой обработки, при этом одни блоки в цепочке могут пропускаться, а другие – образовывать циклические структуры. Это позволяет с помощью одного и того же конвейера одновременно вычислять более одной функции, однако если эти функции конфликтуют между собой, то такой конвейер трудно загрузить полностью. Структура нелинейного конвейера, одновременно вычисляющего две функции Х и У, приведена на рис. 1.2. Там же показана последовательность, в которой функциями Х и У востребуются те или иные функциональные блоки.
Чтобы определить, когда пора приступать к повторному вычислению той или иной функции, необходимо построить диаграмму однократной реализации этой функции и отследить по ней моменты, когда такой запуск не приведет к конфликту, связанному с одновременным обращением к одному и тому же функциональному блоку.
Так, в ходе реализации функции X запуск очередного ее вычисления возможен после 1, 3 и 6 тактов. Запуск параллельного вычисления функции У возможен после 2 и 4 тактов. При запуске функции У очередной ее запуск позволен после тактов 1,3 и 5, а параллельный запуск функции X допустим после 2 и 4 тактов.
1.4 Конвейер команд
Идея конвейера команд была предложена в 1956 году академиком С. А. Лебедевым. Как известно, цикл команды представляет собой последовательность этапов. Возложив реализацию каждого этапа на самостоятельное устройство, и последовательно соединив устройства, мы получим классическую схему конвейера команд. Для иллюстрации рассмотрим конвейер с шестью ступенями, на котором выполняются девять команд. Выделим в цикле команды шесть этапов:
1. Выборка команды (ВК). Чтение очередной команды из памяти и занесение ее в регистр команды.
2. Декодирование команды (ДК). Определение кода операции и способов адресации операндов.
Вычисление адресов операндов (ВА). Вычисление исполнительных адресов каждого из операндов в соответствии с указанным в команде способом их адресации.
Выборка операндов (ВО). Извлечение операндов из памяти. Эта операция не нужна для операндов, находящихся в регистрах.
Исполнение команды (ИК). Исполнение указанной операции.
Запись результата (ЗР). Занесение результата в память.
________________________________Время
Рисунок 1.3 - Логика работы конвейера команд
На рис. 1.3 показан конвейер с шестью ступенями, соответствующими шести этапам цикла команды. В диаграмме предполагается, что каждая команда обязательно проходит все шесть ступеней, хотя этот случай не совсем типичен. Так, команда загрузки регистра не требует этапа ЗР. Кроме того, здесь принято, что все этапы могут выполняться одновременно. Без конвейеризации выполнение девяти команд заняло бы 9 х 6 = 54 единицы времени. Использование конвейера позволяет сократить время обработки до 14 единиц.
Страницы 21–22