Интернет магазин китайских планшетных компьютеров



Компьютеры - Вычислительный конвейер - Примеры

22 января 2011


Оглавление:
1. Вычислительный конвейер
2. Преимущества и недостатки
3. Примеры
4. Трудности



Общий конвейер

Общий четырехуровневых конвейер; цветные квадраты символизируют независимые друг от друга инструкции

Справа изображен общий конвейер с четырьмя стадиями работы:

  1. Получение
  2. Раскодирование
  3. Выполнение
  4. Запись результата

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

Выполнение происходит следующим образом:

Цикл Действия
0 Четыре инструкции ожидают исполнения
1
  • Зеленая инструкция забирается из памяти
2
  • Зеленая инструкция раскодируется
  • Фиолетовая инструкция забирается из памяти
3
  • Зеленая инструкция выполняется
  • Фиолетовая инструкция раскодируется
  • Синяя инструкция забирается из памяти
4
  • Результаты исполнения зеленой инструкции записываются в регистры или в память
  • Фиолетовая инструкция выполняется
  • Синяя инструкция раскодируется
  • Красная инструкция забирается из памяти
5
  • Зеленая инструкция завершилась
  • Результаты исполнения фиолетовой инструкции записываются в регистры или в память
  • Синяя инструкция выполняется
  • Красная инструкция раскодируется
6
  • Фиолетовая инструкция завершилась
  • Результаты исполнения синей инструкция записываются в регистры или в память
  • Красная инструкция выполняется
7
  • Синяя инструкция завершилась
  • Результаты исполнения красной инструкции записываются в регистры или в память
8
  • Красная инструкция завершилась
9 Все инструкции были выполнены

Пузырек

Пузырек в третьем такте обработки задерживает исполнение

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

Очевидно, что наличие пузырька в конвейере дает суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, продемонстрированной выше.

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

Пример 1

Допустим, типичная инструкция для сложения двух чисел это СЛОЖИТЬ A, B, C. Эта инструкция суммирует значения, находящиеся в ячейках памяти A и B, а затем кладет результат в ячейку памяти C. В конвейерном процессоре контроллер может разбить эту операцию на последовательные задачи вида

ЗАГРУЗИТЬ A, R1
ЗАГРУЗИТЬ B, R2
СЛОЖИТЬ R1, R2, R3
ЗАПИСАТЬ R3, C
загрузить следующую инструкцию

Ячейки R1, R2 и R3 являются регистрами процессора. Значения, которые хранятся в ячейках памяти, которые мы называем A и B, загружаются в эти регистры, затем суммируются, и результат записывается в ячейку памяти C.

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

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

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

Пример 2

Чтобы лучше продемонстрировать идею, давайте посмотрим на теоретический трехуровневый конвейер:

Шаг Описание
Загрузка Прочитать инструкцию из памяти
Исполнение Исполнить инструкцию
Запись Записать результат в память и/или регистры

и на псевдоассемблерный листинг, который нужно выполнить:

ЗАГРУЗИТЬ  40, A       ; загрузить число 40 в A
КОПИРОВАТЬ A,  B       ; скопировать A в B
СЛОЖИТЬ    20, B       ; добавить 20 к B
ЗАПИСАТЬ   B,  0x0300  ; записать B в ячейку памяти 0x0300

Теперь как это всё будет исполняться:

Такт 1
Загрузка Исполнение Запись
ЗАГРУЗИТЬ    

Инструкция ЗАГРУЗИТЬ читается из памяти.

Такт 2
Загрузка Исполнение Запись
КОПИРОВАТЬ ЗАГРУЗИТЬ  

Инструкция ЗАГРУЗИТЬ выполняется, тогда как инструкция КОПИРОВАТЬ читается из памяти.

Такт 3
Загрузка Исполнение Запись
СЛОЖИТЬ КОПИРОВАТЬ ЗАГРУЗИТЬ

Инструкция ЗАГРУЗИТЬ находится на шаге записи результата, где её результат записывается в регистр А. В это же время, инструкция КОПИРОВАТЬ исполняется. Так как она должна скопировать содержимое регистра A в регистр B, она должна дождаться окончания инструкции ЗАГРУЗИТЬ.

Такт 4
Загрузка Исполнение Запись
ЗАПИСАТЬ СЛОЖИТЬ СКОПИРОВАТЬ

Загружена инструкция ЗАПИСАТЬ, тогда как инструкция СКОПИРОВАТЬ прощается с нами, а по инструкции СЛОЖИТЬ в данный момент производятся вычисления.

И так далее. Следует учитывать, что иногда инструкции будут зависеть от результатов других инструкций. Когда более, чем одна инструкция ссылается на определенное место, читая его либо записывая в него, исполнение инструкций не в порядке, который был изначально запланирован в оригинальной программе может повлечь за собой «конфликт конвейера»). Существует несколько зарекомендовавших себя приемов для либо предотвращения конфликтов, либо их исправления, если они случились.



Просмотров: 3968


<<< Внеочередное исполнение
Индексный регистр >>>