Конвейерная обработка данных и команд
Предположим, что мы хотим сложить два числа, представленных в форме с плавающей запятой. Для этого нам потребуется выполнить операции сравнения порядков, выравнивания порядков, сложения мантисс и т.д. Первые ЭВМ выполняли все эти операции для каждой пары аргументов, одна за другой, пока не получали конечное число. Затем, следующая пара слагаемых. А что, если выделить отдельные этапы общей операции? Каждый этап, закончив свою работу, передает свой результат следующему, одновременно получая новую порцию данных на входе. Получаем выигрыш в скорости, за счет совмещения ранее разнесенных по времени операций. Если в исходной большой операции можно выделить 5 подопераций, каждая из которых длится единицу времени, то на неделимом последовательном устройстве 100 пар аргументов обработается за 500 единиц времени. Если каждую подоперацию выделим в отдельную часть конвейерного устройства, то на 5-м шаге у нас будут первые 5 пар аргументов в разной стадии обработки. Таким образом, весь набор мы обработаем за 5+99=104 единицы времени – практически пятикратное ускорение (очевидно, что оно зависит от числа ступеней конвейера). Простым выходом было бы заменить весь конвейер обычным параллелизмом. Т.е. взять 5 устройств и обработать на них 100 пар аргументов. Но, в таком случае мы увеличим объем аппаратуры, соответственно, и ее стоимость. Обработку команды разделяют на такие этапы: выборка команды; дешифровка команды; выборка операндов; выполнение команды; сохранение результатов. Нетрудно заметить, что каждый из этапов выполняется один раз и строго по завершению предыдущего этапа. А раз так, то, после передачи результатов на следующий этап, можно переходить к новым, пришедшим с предыдущего. Если каждую из операций выделить в отдельную часть устройства и расположить в порядке выполнения, то получим конвейер. Каждая часть общего устройства называется ступенью конвейера, а общее количество ступеней – его длинной. Наряду с конвейером команд можно выделить конвейер данных. Вместе они позволяют достичь очень высокой производительности для счетных задач. Максимально используются возможности такой обработки в высокопроизводительных вычислительных конвейерных системах фирмы CRAY. В этих машинах установлен конвейер арифметических и логических операций и конвейер команд. Также применяется обработка информации несколькими устройствами. Пиковая производительность может составлять 12 GFLOPS. Сейчас созданы однокристальные векторно-конвейерные процессоры. Их основой является скалярный процессор и 8 одинаковых векторных устройств. Суммарная производительность составляет 64 GFLOPS. На основе таких устройств работает система SX-6 (NEC).
|