Методы параллельного выполнения команд
Методы параллельного выполнения команд подразделятся
на скалярные, векторные, суперскалярные и мультискалярные (мультитрейдинговые) методы обработки.
Под скалярным процессором понимается процессор, оперирующий с потоком чисел. Это традиционная архитектура.
Векторный процессор оперирует с массивом чисел (вектором), то есть одна операция выполняется параллельно над массивом данных.
Примером реализации «векторности» в процессоре являются архитектурные расширения IA32, начиная с процессоров Р-ММХ.
ММХ - мультимедийное расширение для работы с целыми числами с использованием регистров сопроцессора. Применяется для обработки текстур или звука, но для нормальных геометрических преобразований не годится. Реализовано в Р-ММХ, Р-11, Р-111, К6 (AMD).
3DNow! - расширение для работы с плавающей запятой в процессорах AMD К6-2, К6-3 совместно командами ММХ. Свыше 20 векторных команд, также используются регистры сопроцессора.
SSE - Streaming SIMD Extention -расширение для процессоров Интел, начиная с РIII. 70 новых команд, использующих 8 новых 128-разрядных регистров. За один такт выполняется команда над 4-мя числами одновременно.
SSE-2 - расширение для процессоров Р4. Предусмотрены 144 новых команды над 128-разрядными целыми и 128-разрядными с плавающей запятой двойной точности.
AltiVec - расширение для процессоров ИБМ PowerPC. 32 128-разрядных универсальных регистра. Наиболее подходит для алгоритмов ЦОС.
Под суперскалярным процессором понимается процессор, который за счёт нескольких устройств обработки выполняет несколько команд одновременно над несвязанными между собой данными.
Основными особенностями суперскалярных процессоров является наличие нескольких независимых конвейеров, отдельных, скажем, для операций арифметики, обмена данными, ветвления. То есть параллелизм реализуется на уровне команд. Главным здесь оказывается наличие аппаратных средств, которые выявляют независимость этих команд по данным и как следствие этого обеспечивают возможность выполнения команд в последовательности отличной от исходной.
Хорошей предпосылкой для реализации таких конвейеров является фиксированная длина команды, характерная для RISC- процессоров.
А как быть в случае CISC – архитектуры, например, Интел х86?
Практически для удовлетворения суперскалярности в Пентиумах пришлось поступить следующим образом.
1. Процессор извлекает команды из памяти (кэш) последовательно в соответствии с программой.
2. Каждая команда преобразуется в последовательность микрокоманд фиксированной длины. ( в Р-4 кэш второго уровня на 12000 микрокоманд).
3. Микрокоманды выполняются на нескольких конвейерах в оптимальном порядке с точки зрения производительности.
4. Процессор фиксирует результаты в порядке, соответствующем исходному.
То есть, Р-2+ состоит из SISC оболочки вокруг RISC ядра.
Технология |
0,18 мкм |
Кол. Транзисторов |
42 млн |
Кэш второго уровня Разрядность Частота Скорость передачи Ёмкость Поддерживает память |
32х8 = 256 бит 1,5 ГГц 48 ГБ 256 КБ 4 ГБ |
Кэш данных 1-го уровня |
8 КБ |
Кэш декодированных команд 1-го уровня |
12000 микроинструкций |
Внешняя память |
до 64 ГБ |
Архитектура |
NetBurst |
Конвейер команд |
до 20 ступеней |
Конвейер ветвлений |
20 |
Системная шина |
100х4=400 МГц |
Два блока целочисленных операций на частоте |
1,5 ГГц, каждый |
Динамическое выполнение команд Просмотр Обработка Выполнение |
До 126 команд 24 команды 48 операций |
SIMD – SSE-2 добавлены 128-разрядные операции (целочисленные и с плавающей запятой), всего |
144 команды |
В основе всех процессоров Pentium 4 (Xeon, Celeron) лежит архитектура NetBurst. (Точнее следует говорить об организации). Теоретически такой процессор способен обрабатывать до четырёх команд за такт (два АЛУ для «быстрых» операций, работающие на удвоенной частоте).
Тактовая частота 2,53-3, 8 ГГц. Однако его прыть сдерживает ряд обстоятельств.
- Пропускная способность блока обработки не более трёх микроопераций за такт
- Ограниченный набор быстрых операций
- Большое число холостых тактов и т. д.
Мультискалярный процессор разбивает последовательный поток команд на задачи. Каждая задача выполняется отдельным процессором - технология HyperTreading. Технология Hyper-Treading это одно ядро Northwood, которое за счёт добавления некоторых служебных регистров фактически работает, как два ядра. Появление этой технологии обязано наличию в структуре нескольких исполнительных устройств, обеспечивающих суперскалярность.
Процессор Intel Pentium 4 3,06 ГГц HyperTreading .
Что же скрывается за этим названием?
С технической стороны - пятипроцентное увеличение площади процессорного ядра за счет дублирования нескольких регистров и логических блоков процессора.
В результате один физический процессор определятся как два логических, при условии использования ОС, 'понимающей' многопроцессорные конфигурации (Windows XP Prof.).
При включении в настройках БИОС опции "HyperTreading" система начинает видеть два процессора. Всё дело в том, что хотя процессоры Intel P4 имеют длинный конвейер (19 стадий), ошибки в предсказании переходов обходятся процессорам P4 'дороже', чем процессорам P3. При выполнении задачи, активно использующей сначала одни логические блоки процессора, а затем другие, может возникнуть (и возникает) ситуация простоя процессорного конвейера - такты процессорного времени тратятся впустую из-за невозможности перейти к следующему этапу выполнения задачи, т.к.
данные для этого этапа еще не рассчитаны.
Новая технология Intel призвана минимизировать вред от таких простоев - во время 'простоя' незанятые процессорные блоки могут заниматься выполнением другой задачи!
Более того, если операционная система умеет распараллеливать инструкции и приложение в процессе своей работы инициирует несколько потоков (одновременно выполняющихся задач) - мы вправе ожидать прироста производительности, ведь с точки зрения приложения в системе установлено два процессора, а не один.
Естественно, что двух кратного прироста производительности не будет - даже на "настоящих" двухпроцессорных конфигурациях его величина редко превышает 70% - но на величину от 5 до 25% мы можем рассчитывать. Следует также учесть, что не все приложения сразу же нормально заработают с новой технологией - корпорация Intel сама предупреждает об этом и призывает оптимизировать программы приложений для полноценного использования возможностей HyperTreading процессоров. В общем, складывается ситуация, чем-то похожая на положение дел с инструкциями SSE2. К моменту их первого появления они мало что давали. Но с накоплением ПО, оптимизированного под этот набор инструкций, процессоры Intel P4 получили "второе дыхание" и смогли показать более высокий результат.
Пока компанией Intel выпущен только один процессор с поддержкой HT - Intel Pentium 4 3,06 ГГц (FSB 533, L2 - 512K).
Сейчас уже выпущены новые процессоры с поддержкой HT с частотами 2.4, 2.8 и 3.2ГГц.
Их отличительной особенностью является поддержка более скоростной системной шины - 800 МГц.
Появление двуядерных процессоров обусловлено следующими обстоятельствами:
- увеличение полезной площади кристалла за счёт совершенствования технологии
- обеспечение требований мультизадачности
- всё возрастающие требования к производительности
Двуядерные процессоры пример симметричного мультипроцессора (SMP – симметричный мультипроцессор с общей памятью).
Основная проблема – подключение процессоров к памяти. Имеется два основных варианта решения этой проблемы.
- Подключение собственной шины каждого процессора (FSB) к чипсет наряду с DMA, контроллером памяти, видеокартой и т. д. через коммутатор. Недостаток - сложность FSB. Отсюда ограничение на количество подключаемых процессоров.
- Объединение процессоров на самой FSB. Недостаток - необходимость арбитра между процессорами на FSB.
Следует заметить, что с ростом числа процессоров производительность каждого процессора снижается. ( Один процессор – 100%; два – 85%; четыре – 55%).
В двуядерном Pentium D (два ядра Prescott в одном кристалле) оба ядра сидят на общей FSB.
Падение производительности одно и двуядерных процессорах при параллельном запуске в WinRAR 3.4 и Doom 3 .
Pentium 4 EE 3,73 ГГц – 11,2%
Pentium D 3,2 ГГц - 41.1
Оценка быстродействия.
Анализ состава операций в системе команд и времени их выполнения позволяет произвести оценку быстродействия и производительности процессоров.
Номинальное быстродействие оценивается по длительности выполнения опервции сложения с фиксированной точкой..
Vн = 1/?сл
оп/сек
Среднее быстродействие (на отдельном алгоритме или классе алгоритмов) учитывает как длительность выполнения отдельных операций, так и частоту появления каждой операции.
Vср = N/Tэкв
, где
N - количество операций в алгоритме;
Tэкв - ?l i=1 ?i ni , где
l – количество типов операций
?i - время выполнения i-ой операции
ni - число i-ых операций
Vср = N/ ?l i=1 ?i ni = 1/ ?l i=1 ?i ni/N = 1/ ?l i=1 ?i qi,
где
ni/N =qi
– частота появления операций i-го типа.
?i … ?l – характеризует систему команд,
qi … ql – характеризует алгоритм.
Можно считать, что
Vн характеризует тактовую частоту, а
Vср характеризует набор операций.
Оценка производительности.
Время (Т), затрачиваемое на решение задачи, зависит от числа команд (N), среднего количества тактов (S), требуемого для выполнения одной команды, и тактовой частоты процессора (F):
T=NxS/F - основная формула вычисления производительности.
N сокращается, когда минимизируется число команд в программе.
S уменьшается, когда сокращается число тактов в команде (за счёт упрощения команды, усложнения аппаратуры или за счёт одновременного выполнения нескольких команд).
Более объективной является оценка производительности компьютера путём сравнения величины Т для испытуемого компьютера и эталонного компьютера при решении тестовой задачи (или набора задач).
Мировой рекорд производительности
- 280 терафлопс\сек достигнут на совместном достижении фирмы IBM и Ливерморской национальной лаборатории Blue Gene/1.