Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Цепочные вычисления




 

Пусть имеем последовательность команд реализующих, например следующие математические операции:

1) X=Y+Z

2) K=X/2

3) S=sin(K)

4) F=A+B

 

Команда 2 не может быть выполнена без предварительного выполнения команды 1. Говорят «команда 2 зависима от команды 1». Команда 3 не может быть выполнена без предварительного выполнения команды 2. Говорят «команда 3 зависима от команды 2». Про команды подобные 1-2-3 говорят что они образуют «цепочное вычисление». При этом, заметим, команда 4 может быть выполнена независимо от других команд, такие команды называют «независимыми».

 

Так вот, процессоры с особенно длинным конвейером («суперконвейерные») могут снижать производительность так же и при выполнении программ отличающихся незначительным объёмом независимых вычислений, при значительном объёме цепочных вычислений. Объяснить природу этого снижения значительно сложнее чем снижение производительности при выполнении алгоритмически сложных программ, но тем не менее, несколько упростив ситуацию, попробуем:

 

1) По различным причинам (например из за того что часто заранее неизвестно сколько времени займёт выборка данных из памяти) часто бывает невозможно точно предсказать не задержится ли (например из за задержки выборки данных из памяти) выполнение той или иной команды.

2) В короткоконвейерных процессорах, в каких на стадии конвейера выполняется большая работа, в процессе выполнения команды уже на первых ступенях конвейера аппаратуре процессора становится понятным не задержится ли выполнение команды. Соответственно аппаратура короткоконвеерного процессора может спланировать порядок загрузки команд в конвейер так, что что команды зависимые от той команды при выполнении которой произойдёт задержка, будут загружены в конвейер только к тому моменту, когда условия для их исполнения созреют. А пока, в конвейер может быть загружены другие команды, независимые от той команды при выполнении которой предсказывается задержка (многие современные процессоры поддерживают «переупорядочивание потока команд», т.е. умеют загружать команды в конвейер не в том порядке, в каком они следуют в программе).

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

 

В целом проблема цепочных вычислений не стоит сколь остро при выполнении программ для каких характерно значительное число независимых вычислений (например программы обрабатывающие вектора и матрицы), но может заметно снизить производительность для программ предлагающих значительные объёмы цепочных вычислений. Учёт этой особенности длинноконвеерных процессоров необходим при создании компиляторов, и просто, при программировании многих задач.

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 456; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.