Интернет магазин китайских планшетных компьютеров |
||
Компьютеры - Вычислительный конвейер - Примеры22 января 2011Оглавление: 1. Вычислительный конвейер 2. Преимущества и недостатки 3. Примеры 4. Трудности Общий конвейерСправа изображен общий конвейер с четырьмя стадиями работы:
Верхняя серая область список инструкций, которые предстоит выполнить. Нижняя серая область список инструкций, которые уже были выполнены. И средняя белая область является самим конвейером. Выполнение происходит следующим образом:
ПузырекКогда в выполнении по каким-либо причинам случается небольшой сбой или задержка, в конвейере получается «пузырек», в котором не происходит ничего полезного. Во втором такте обработка фиолетовой инструкции задерживается и вместо стадии расшифровки в третьем такте теперь находится пузырек. Всё, что находится «за» фиолетовой инструкцией, испытывает задержку в один такт, тогда как все, что находится «перед» фиолетовой инструкцией продолжает исполняться. Очевидно, что наличие пузырька в конвейере дает суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, продемонстрированной выше. Пузырьки это как заглушки, в которых не случается ничего полезного при их прочтении, раскодировании, исполнении и записи результата. Они могут быть выражены при помощи инструкции NOP. Пример 1Допустим, типичная инструкция для сложения двух чисел это ЗАГРУЗИТЬ 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 Теперь как это всё будет исполняться:
Инструкция ЗАГРУЗИТЬ читается из памяти.
Инструкция ЗАГРУЗИТЬ выполняется, тогда как инструкция КОПИРОВАТЬ читается из памяти.
Инструкция ЗАГРУЗИТЬ находится на шаге записи результата, где её результат записывается в регистр А. В это же время, инструкция КОПИРОВАТЬ исполняется. Так как она должна скопировать содержимое регистра A в регистр B, она должна дождаться окончания инструкции ЗАГРУЗИТЬ.
Загружена инструкция ЗАПИСАТЬ, тогда как инструкция СКОПИРОВАТЬ прощается с нами, а по инструкции СЛОЖИТЬ в данный момент производятся вычисления. И так далее. Следует учитывать, что иногда инструкции будут зависеть от результатов других инструкций. Когда более, чем одна инструкция ссылается на определенное место, читая его либо записывая в него, исполнение инструкций не в порядке, который был изначально запланирован в оригинальной программе может повлечь за собой «конфликт конвейера»). Существует несколько зарекомендовавших себя приемов для либо предотвращения конфликтов, либо их исправления, если они случились. Просмотров: 4956
|