Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК 2 Лекционный курс.doc
Скачиваний:
12
Добавлен:
16.08.2019
Размер:
3.92 Mб
Скачать

2.2.Конвейерная обработка данных и команд

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

А что, если выделить отдельные этапы общей операции? Каждый этап, закончив свою работу, передает свой результат следующему, одновременно получая новую порцию данных на входе. Получаем выигрыш в скорости, за счет совмещения ранее разнесенных по времени операций. Если в исходной большой операции можно выделить 5 подопераций, каждая из которых длится единицу времени, то на неделимом последовательном устройстве 100 пар аргументов обработается за 500 единиц времени. Если каждую подоперацию выделим в отдельную часть конвейерного устройства, то на 5-м шаге у нас будут первые 5 пар аргументов в разной стадии обработки. Таким образом, весь набор мы обработаем за 5+99=104 единицы времени – практически пятикратное ускорение (очевидно, что оно зависит от числа ступеней конвейера).

Простым выходом было бы заменить весь конвейер обычным параллелизмом. Т.е. взять 5 устройств и обработать на них 100 пар аргументов. Но, в таком случае мы увеличим объем аппаратуры, соответственно, и ее стоимость.

Обработку команды разделяют на такие этапы:

выборка команды;

дешифровка команды;

выборка операндов;

выполнение команды;

сохранение результатов.

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

Наряду с конвейером команд можно выделить конвейер данных. Вместе они позволяют достичь очень высокой производительности для счетных задач. Максимально используются возможности такой обработки в высокопроизводительных вычислительных конвейерных системах фирмы CRAY. В этих машинах установлен конвейер арифметических и логических операций и конвейер команд. Также применяется обработка информации несколькими устройствами. Пиковая производительность может составлять 12 GFLOPS.

Сейчас созданы однокристальные векторно-конвейерные процессоры. Их основой является скалярный процессор и 8 одинаковых векторных устройств. Суммарная производительность составляет 64 GFLOPS. На основе таких устройств работает система SX-6 (NEC).

2.3.Высокопроизводительные процессоры

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

2.3.1.Суперскалярные процессоры

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

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

Чаще всего в суперскалярных процессорах увеличивают количество целочисленных конвейеров. Это связано с тем, что 80% команд в коде прикладных программ – целочисленные, около 15% - команды условного перехода и очень малый процент – команды с плавающей запятой.

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

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

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

Особенности суперскалярных процессоров, кроме своих плюсов, имеют очевидные минусы:

сложная реализация аппаратной части;

ограниченность окна выполнения. Это заметно уменьшает возможности определения потенциально параллельных программ.

Среди представителей суперскалярных процессоров выделяют Pentium, PowerPC, K6/K7, Alpha. В качестве особенностей одного из суперскалярных процессоров фирмы CRAY можно отметить то, что он имеет 136 (!) процессоров. Среди них четыре процессора Dec-Alpha EV5 (300 Mhz) с локальной памятью и чипом маршрутизации. Процессоры Alpha – суперскалярные процессоры, позволяющие обрабатывать два числа с плавающей запятой за цикл работы конвейера.