
- •1. Введение
- •Декодирование
- •1 2 3 4 5
- •1 2 3
- •1 2 3 4
- •2. Функциональное разбиение и разбиение на ступени
- •3.Конвейеризация в сравнении с перекрытием
- •E f
- •4. Классификация конвейеров
- •5. Временные диаграммы
- •6. Помехи
- •7. Исторический обзор
- •8. Сравнение с параллелизмом
- •Подфункция
- •1.Введение………………………………………………………………………………………………………………………………….1
8. Сравнение с параллелизмом
В середине 60-х годов стоимость аппаратных средств значительно упала, что позволило разработчикам архитектуры ЭВМ рассматривать "размножение" ЭВМ в целом или их подсистем как жизнеспособный метод разработки высокопроизводительных систем. Такое размножение аппаратных средств может позволить одновременно производить сходную обработку различных данных или же позволить различным блокам аппаратуры одновременно обрабатывать четко выделенные части одной задачи. Согласно современной терминологии, эти машины называются параллельными. Хотя, как говорилось ранее, понятия параллелизма и конвейерности имеют одно и то же происхождение и трудно разделимы на практике, представления о них у многих сегодняшних практиков достаточно различны, чтобы оправдать их сравнение. Оба метода направлены на увеличение производительности при выполнении некоторой функции за счет увеличения числа аппаратных модулей, работающих одновременно. Применительно к модулю с традиционной структурой, выполняющему ту или иную функцию, можно использовать любой из этих методов для получения новой структуры, обеспечивающей работу в N раз быстрее. Однако, если в чисто конвейерных структурах базовый модуль расщепляется на N фрагментов, то в чисто параллельных структурах этот модуль повторяется N раз и все N блоков одновременно обрабатывают различные данные. Совместное применение этих двух методов приводит к структурам с перекрытием. Хотя по производительности параллельная и" конвейерная машины могут быть эквивалентны, их организационные структуры кардинально отличаются. Например, машины ILLIAC IV и STAR-100 были построены для решения очень больших научных задач. Однако машина ILLIAC IV, являющаяся высокопараллельной, использует 64 копии блока, сходного с арифметическим устройством более традиционной машины. Каждая копия имеет свои регистры, сумматор и память; все копии могут работать одновременно. В противоположность этому, в машине STAR используются модули с явно выраженной конвейеризацией. В организации обеих машин очень мало сходства.
На рис.4. показаны основные различия между этими подходами. Разумеется, в реальных машинах контрасты не столь велики, поскольку зачастую используются смешанные методы. Например, в высокопараллельной машине ILLIAC IV используется конвейеризация с перекрытием, тогда как в высококонвейеризованной машине STAR функциональные устройства повторены.
Вход
Подфункция
Вход
Конвейерность
Подфункция
Функция
Подфункция
Параллелизм
Выход
Выход
Вход
Вход Вход
Функция Функция Функция
Выход Выход Выход
Различия между этими двумя подходами легче всего увидеть, если рассмотреть варианты базовой архитектуры, которую может иметь ЭВМ. Согласно одному из определений архитектура машины — это такие ее характеристики (ресурсы — набор команд, структура памяти и организация), которые видны программисту или проектировщику логики верхнего уровня. В схеме, предложенной Флинном, все машины по их архитектуре разбиваются на четыре класса: ОКОД, ОКМД, МКОД и МКМД. Машины класса ОКОД (один поток команд — один поток данных) соответствуют традиционным, в которых команды исполняются последовательно, а отдельная команда имеет дело не более чем с одной операцией над данными (такой, как сложение). Машины, класса ОКМД (один поток команд — много потоков данных) имеют команды, которые могут непосредственно запускать большое число одинаковых операций над различными данными. В эту категорию попадают рассмотренные ранее векторные процессоры. Машины класса МКМД (много потоков команд — много потоков данных) характеризуются одновременным исполнением многих различных потоков команд (программ), в которых команды каждого потока имеют дело с различными наборами данных. Типичным примером машин этой категории служат многопроцессорные системы. Наконец, в машинах МКОД один поток данных проходит одновременно обработку многими командами.
Конвейеризация часто применяется в качестве поддержки в машинах класса ОКОД или ОКМД. Как было описано в предыдущем разделе, в большинстве ЭВМ с традиционной архитектурой используется в какой-то степени конвейеризация /перекрытие — от простого расслоения памяти до сильной конвейеризации всех фаз исполнения команды. Далее, машины, ранее определенные как векторные процессоры, попадают в класс машин с явно выраженной архитектурой ОКМД. Были сделаны попытки спроектировать машины класса МКМД из исходных конвейерных структур, хотя обычно это делалось по соображениям улучшения показателя стоимость-эффективность, а не увеличения производительности. К машинам последнего класса относятся периферийные процессоры семейства 6000 и Tl ASC. В других задач в реальных системах используются менее сложные коммутаторы, что приводит к снижению общности. Однако во многих системах даже такие "урезанные" коммутаторы определяют значительный процент общей стоимости системы. Заинтересованного читателя мы отсылаем к работам, в которых дается введение в методы построения современных коммутаторов
В противоположность сказанному в конвейерных машинах, как правило, используется многократно расслоенная память только с одним или несколькими путями между памятью и процессором. Далее, поскольку по своей сущности конвейер подразумевает некоторый естественный поток, то, как правило, в нем бывает лишь небольшое число внутренних путей между различными ступенями. Поэтому, хотя организация памяти является обычно более сложной, чем у параллельной машины, для конвейерной машины не требуются дорогие сети внутренних связей.
Это различие в организации памяти отражается также на скорости доступа (числе чтений/записей в секунду), которую память должна обеспечивать в современных структурах. В случае параллельной машины с многими модулями памяти бывают периоды, когда все модули должны выдавать данные в одно и то же время, и периоды — без интенсивного обмена. Поэтому овальная скорость доступа меняется, достигая весьма высоких значений на короткие периоды времени, когда все процессоры одновременно требуют обслуживания. В противоположность сказанному система памяти конвейерной машины обычно выдает данные гораздо более плавно с более постоянной скоростью, поскольку сами конвейеры принимают данные с постоянным шагом по времени. Разумеется, поскольку основную массу данных в такой системе вводят в эту единственную память и извлекают из нее, фактическая скорость доступа в случае конвейерной машины, имеющей такую же производительность, как у параллельной машины, должна быть существенно выше. В обоих случаях большая доля исследований посвящена тому, как спроектировать подсистемы памяти, способные удовлетворять таким требованиям.
Существенные различия имеются также и в управлении подобными процессорами. В случае параллельных процессоров ускорение возможно, если только пользователь распределит индивидуальные задания по отдельным процессорам. Обычно требуется, чтобы пользователь мог в достаточно полной мере знать, что происходит в системе, и управлять происходящим, например, внутренними связями между процессорами. Напротив, в случае конвейерной машины разработчик во многом заранее определяет разбиения базовых функций, так что пользователь почти не нуждается в доступе к управлению конвейером и обычно его почти не имеет. Вместо этого задача пользователя состоит в написании программы, которая избегает последовательностей, способных замедлить исполнение задачи за счет неполной загрузки конвейера. Например, нежелательна последовательность команд, которые при их исполнении вызывают блокировки, а также нежелательна обработка очень коротких векторов, для которых время первоначального наполнения конвейера велико по сравнению с временем, определяемым числом запускаемых операций и глубиной конвейера.
Теперь рассмотрим степень, до которой может быть доведено разбиение машины. В случае параллельных архитектур исходными ограничениями для произвольно высокой степени разбиения являются стоимость, в частности, стоимость внутренних связей, и скорость света, поскольку с ростом числа процессоров физические расстояния между ними также возрастают, а это ограничивает скорость обмена данными. В свою очередь, функцию нельзя разбить на произвольно большое число ступеней конвейера, даже если не учитывать стоимость. При любой технологии всегда имеется некоторая граница минимального времени, необходимого для прохождения через каждую ступень. Иначе говоря, на каждой ступени должен быть по меньшей мере один уровень обрабатывающих логических схем для того, чтобы они делали что-то отличное от простой передачи данных. Этот предел в свою очередь также ограничен скоростью света, но не до такой степени, как в параллельных машинах, поскольку в большинстве своем конвейеры являются линейными и данная ступень может монтироваться вблизи предыдущей.
Другой крупной проблемой, связанной с разбиением конвейерных машин, является, как упоминалось выше, обеспечение большой скорости доступа к памяти конвейера. В параллельных структурах обычно можно многократно повторять модули памяти, возможно, с увеличением стоимости коммутации для достижения большей скорости доступа. Конвейеры, как правило, пропускают все операции обращения к памяти через небольшое число внутренних связей.
Наконец, сравним способность структуры обеспечивать некоторую избыточность для повышения надежности. Во многих параллельных машинах можно добавить за небольшую стоимость дополнительные копии процессоров, которые могут быть при необходимости подключены к системе. Этого нельзя сделать во многих конвейерных структурах, у которых ступени различны между собой. Здесь на каждой ступени может быть использован свой метод обеспечения избыточности, который должен быть введен в систему в начале ее проектирования.
ОГЛАВЛЕНИЕ.