Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Arkhitektura_EVM_uchebnoe_posobie

.pdf
Скачиваний:
54
Добавлен:
13.04.2015
Размер:
2 Mб
Скачать

Рис. 6.3. Логика работы конвейера команд

Наибольшие проблемы при создании эффективного конвейера обусловлены командами, изменяющими естественный порядок вычислений. Простейший конвейер ориентирован на линейные программы. В нем ступень выборки извлекает команды из последовательных ячеек памяти, используя для этого счетчик команд. Адрес очередной команды в линейной программе формируется автоматически, за счет прибавления к содержимому счетчика команд числа, равного длине текущей команды в байтах. Реальные программы практически никогда не бывают линейными. В них обязательно присутствуют команды управления, изменяющие последовательность вычислений: безусловный и условный переход, вызов процедуры, возврат из процедуры и т.п. Доля подобных команд в программе оценивается как 10-20%. Выполнение команд, изменяющих последовательность вычислений, может привести к приостановке конвейера на несколько тактов, из-за чего производительность процессора снижается.

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

вычисление исполнительного адреса перехода на ступени декодирования команды;

использование буфера адресов перехода; использование кэш-памяти для хранения команд, расположенных в точке

перехода; использование буфера цикла.

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

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

140

MOV Rl,

R4

ADD Rl,

8R0

MOV R5,

R6

SUB R5,

R7

CLR R6

 

...

 

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

Суперскалярная архитектура процессора предполагает, что команды (на некотором ограниченном участке программы) могут выполняться не только в порядке их размещения в программе, но и по мере возможности их выполнения независимо от порядка следования. Одним из первых микропроцессоров, реализующих механизм динамического параллелизма, был процессор Pentium Pro (Pentium II, фирмы Intel (рис 6.4). На кристалле процессора размещаются два блока кэш-памяти первого уpoвня, в одном из которых (кэш-C) размещается программа, а в другом (кэш-D) – данные.

Системная шина

Кэш 2-го

уровня

 

Интерфейс шины

Кэш-C

1-го уровня

Кэш-D

1-го уровня

Устройство

 

Устройство дис-

 

Устройст-

выборки/ де-

 

петчирования/

 

во отката

кодирования

 

выполнения

 

 

Пул команд

Рис. 6.4. Структура процессора Pentium Pro

141

Устройство выборки/декодирования выбирает очередную команду из кэш-С (в порядке их размещения в программе), при необходимости заменяет сложные команды на последовательность микрокоманд, снабжает каждую команду полем признаков (тегом) и помещает в память, организованную специальным образом, – пул команд.

Устройство диспетчироваиия постоянно анализирует, с одной стороны, содержимое пула команд и выявляет команды, готовые к выполнению на ка- кой-нибудь стадии, с другой стороны – свободные в данный момент операционные устройства. При совпадении «желания» (команда завершила предыдущую стадию и готова к выполнению следующей) и «возможностей» (свободны соответствующие ресурсы) устройство диспетчирования отправляет команду на выполнение независимо от порядка поступления команд в пул. После завершения обработки на очередной стадии команда возвращается в пул с соответствующей пометкой в поле тега.

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

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

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

Таким образом, принятая в Pentium Pro технология динамического выполнения может быть описана как оптимальное выполнение программы, основанное на предсказании будущих переходов, анализе графа потоков данных с целью выбора наилучшего порядка исполнения команд и на опережающем выполнении команд в выбранном оптимальном порядке. Однако следует иметь в виду, что процессор оптимизирует выполнение только ограниченного участка программы, который в текущий момент располагается в пуле. Суперскалярная архитектура предполагает наличие на кристалле процессора нескольких параллельно работающих операционных устройств (в т.ч. и нескольких одинаковых).

Для реализации динамического параллелизма в процессорах с традиционной системой команд и способами компиляции программного кода требуются весьма сложные схемы организации пула, планировщики, схемы «отката» и др. Процессоры такой архитектуры имеют несколько операционных блоков различного, а иногда и одинакового назначения, которые могут работать параллельно, например, 1-2 блока вычисления адресов, 2-3 блока АЛУ для чисел с

142

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

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

Один из путей дальнейшего повышения эффективности подобных систем лежит в области разработки специальных компиляторов, которые упаковывают несколько простых команд в «очень длинное командное слово» (VLIW – аббревиатура от Very Long Instruction Word) таким образом, чтобы в одной «очень длинной команде» можно было использовать все существующие в процессоре операционные блоки. В этом случае командное слово соответствует набору функциональных устройств.

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

Одним из примеров воплощения идей VLIW может служить предложенная Intel в содружестве с HP концепция 64-разрядной архитектуры микропроцессо-

ра IA-64 (Intel 64-bit Architecture, 64-разрядная архитектура Intel). Для обозначения использована аббревиатура EPIC (Explicitly Parallel Instruction Computing,

вычисления с явным параллелизмом команд).

Процессор, разработанный на базе этой концепции, отличающийся следующими особенностями:

большое количество регистров: 128 64-разрядных регистров общего назначения (целочисленных), плюс 128 80-разрядных регистров арифметики плавающей запятой, плюс 64 1-разрядных предикатных регистра;

масштабируемость архитектуры до большого количества функциональных устройств;

явный параллелизм в машинном коде: поиск зависимостей между командами производит не процессор, а компилятор;

предикация: команды из разных ветвей условного ветвления снабжаются предикатными полями (полями условий) и запускаются на выполнение параллельно;

загрузка по предположению: данные из медленной основной памяти загружаются заранее.

Формат команды IA-64 включает код операции, три 7-разрядных поля операндов – 1 приемник и 2 источника, особые поля для вещественной и целой арифметики, 6-разрядное предикатное поле.

Команды IA-64 упаковываются компилятором в «связку» длиной в 128 разрядов.

143

Вопросы к главе 6

1.Приведите факторы, определяющие развитие архитектуры ВС.

2.Основные направления в области архитектуры ЭВМ.

3.Применение конвейеризации.

4.Характеристики суперскалярной архитектуры.

5.Особенности VLIW-архитектуры.

144

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.Балашов Е.Н., Григорьев В.Л., Петров Г.А. Микро- и мини ЭВМ. – Л.: Энергоатомиздат, 1984. – 376 с.

2.Бройдо В.Л., Ильина О.П. Архитектура ЭВМ. – СПб.: Питер, 2005. –

720 с.

3.Бройдо В.Л. Вычислительные системы, сети и телекоммуникации. –

СПб.: Питер, 2004. – 703с.

4.Гук М.Ю. Аппаратные средства IBM PC. Энциклопедия. – СПб.: Питер, 2006. – 1072с.

5.Жмакин А.П. Архитектура ЭВМ. – СПб.: БХВ-Петербург, 2006. – 320 с.

6.Микропроцессоры. Архитектура и проектирование микро-ЭВМ: Организация вычислительных процессов. Под ред. Л.Н. Преснухина. – М. Высшая школа, 1986. – Т1. – 494 с.

7.Микропроцессоры. Средства сопряжения: Контролирующие и инфор- мационно-управляющие системы. Под ред. Л.Н. Преснухина. – М.: Высшая школа, 1986. – Т2. – 383 с.

8.Микропроцессоры. Средства отладки, лабораторный практикум и задачник. Под ред. Л.Н. Преснухина. – М.: Высшая школа, 1986. – Т3. – 353 с.

9.Микропроцессорный комплект К1810. Структура, программирование, применение. – М.: Высшая школа, 1990. – 269 с.

10.Таненбаум Э. Архитектура компьютера. – СПб.: Питер, 2003. – 697 с.

11.Токхайм Р. Микропроцессоры: Курс и упражнения. М.: Энергоатомиз-

дат, 1988. – 336с.

12.Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем. – СПб.: Питер, 2004. – 668 с.

13.Черняк Н.Г. и др. Архитектура вычислительных систем и сетей. – М.: Финансы и статистика, 1986. – 318 с.

14.Юров В. Assembler. – СПб.: Питер, 2002. – 624 с.

145

Навчальне видання

Андрієнко Володимир Миколайович Шамарін Юрій Володимирович

АРХІТЕКТУРА ЕОМ

Навчальний посібник

Російською мовою

Редактор Р.В. Щадько

План вид. 2007р., поз. №16а