8. Сравнение с параллелизмом

В середине 60-х годов стоимость аппаратных средств значительно упала, что позволило разработчикам архитектуры ЭВМ рассматривать "размноже­ние" ЭВМ в целом или их подсистем как жизнеспособный метод разработки высокопроизводительных систем. Такое размножение аппаратных средств может позволить одновременно производить сходную обработку различ­ных данных или же позволить различным блокам аппаратуры одновремен­но обрабатывать четко выделенные части одной задачи. Согласно современ­ной терминологии, эти машины называются параллельными. Хотя, как го­ворилось ранее, понятия параллелизма и конвейерности имеют одно и то же происхождение и трудно разделимы на практике, представления о них у мно­гих сегодняшних практиков достаточно различны, чтобы оправдать их срав­нение. Оба метода направлены на увеличение производительности при вы­полнении некоторой функции за счет увеличения числа аппаратных модулей, работающих одновременно. Применительно к модулю с традиционной струк­турой, выполняющему ту или иную функцию, можно использовать любой из этих методов для получения новой структуры, обеспечивающей работу в N раз быстрее. Однако, если в чисто конвейерных структурах базовый модуль расщепляется на N фрагментов, то в чисто параллельных структу­рах этот модуль повторяется N раз и все N блоков одновременно обрабаты­вают различные данные. Совместное применение этих двух методов приво­дит к структурам с перекрытием. Хотя по производительности параллель­ная и" конвейерная машины могут быть эквивалентны, их организационные структуры кардинально отличаются. Например, машины ILLIAC IV и STAR-100 были построены для решения очень больших научных задач. Од­нако машина ILLIAC IV, являющаяся высокопараллельной, использует 64 копии блока, сходного с арифметическим устройством более традицион­ной машины. Каждая копия имеет свои регистры, сумматор и память; все копии могут работать одновременно. В противоположность этому, в маши­не STAR используются модули с явно выраженной конвейеризацией. В ор­ганизации обеих машин очень мало сходства.

На рис.4. показаны основные различия между этими под­ходами. Разумеется, в реальных машинах контрасты не столь велики, по­скольку зачастую используются смешанные методы. Например, в высо­копараллельной машине ILLIAC IV используется конвейеризация с пере­крытием, тогда как в высококонвейеризованной машине STAR функцио­нальные устройства повторены.

Вход

Подфункция

Вход Конвейерность

Подфункция

Функция

Подфункция

Параллелизм

Выход

Выход

Вход Вход Вход

Функция

Функция

Функция

Выход Выход Выход

Различия между этими двумя подходами легче всего увидеть, если рас­смотреть варианты базовой архитектуры, которую может иметь ЭВМ. Согласно одному из определений архитектура машины — это такие ее харак­теристики (ресурсы — набор команд, структура памяти и организация), которые видны программисту или проектировщику логики верхнего уров­ня. В схеме, предложенной Флинном, все машины по их архитектуре разбиваются на четыре класса: ОКОД, ОКМД, МКОД и МКМД. Машины клас­са ОКОД (один поток команд — один поток данных) соответствуют тради­ционным, в которых команды исполняются последовательно, а отдельная команда имеет дело не более чем с одной операцией над данными (такой, как сложение). Машины, класса ОКМД (один поток команд — много пото­ков данных) имеют команды, которые могут непосредственно запускать большое число одинаковых операций над различными данными. В эту ка­тегорию попадают рассмотренные ранее векторные процессоры. Машины класса МКМД (много потоков команд — много потоков данных) харак­теризуются одновременным исполнением многих различных потоков ко­манд (программ), в которых команды каждого потока имеют дело с раз­личными наборами данных. Типичным примером машин этой категории служат многопроцессорные системы. Наконец, в машинах МКОД один по­ток данных проходит одновременно обработку многими командами.

Конвейеризация часто применяется в качестве поддержки в машинах класса ОКОД или ОКМД. Как было описано в предыдущем разделе, в боль­шинстве ЭВМ с традиционной архитектурой используется в какой-то сте­пени конвейеризация /перекрытие — от простого расслоения памяти до силь­ной конвейеризации всех фаз исполнения команды. Далее, машины, ранее определенные как векторные процессоры, попадают в класс машин с явно выраженной архитектурой ОКМД. Были сделаны попытки спроектировать машины класса МКМД из исходных конвейерных структур, хотя обычно это делалось по соображениям улучшения показателя стоимость-эффектив­ность, а не увеличения производительности. К машинам последнего клас­са относятся периферийные процессоры семейства 6000 и Tl ASC. В других задач в реальных системах используются менее сложные коммутаторы, что приводит к снижению общности. Однако во многих системах даже такие "урезанные" коммутаторы определяют значительный процент общей сто­имости системы. Заинтересованного читателя мы отсылаем к работам, в которых дается введение в методы построения современных коммутаторов

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

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

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

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

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

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

ОГЛАВЛЕНИЕ.