3.Конвейеризация в сравнении с перекрытием

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

• каждое вычисление базовой функции относительно независимо от предыдущего;

• каждое вычисление требует примерно одной и той же цепочки под­функций;

• подфункции тесно связаны между собой;

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

• между отдельными вычислениями могут иметься некоторые зависи­мости;

• для каждого вычисления может потребоваться отличная от других цепочка подфункций;

• по своему назначению подфункции достаточно различны;

• время, необходимое для одной ступени, не обязательно постоянно;

оно может быть функцией как самой ступени, так и данных, проходящих через нее.

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

Классическим примером статической конвейеризации является конвей­ерный блок, построенный для повторяющегося независимого сложения чисел с плавающей запятой, вырабатываемых другим блоком. Здесь базо­вая функция — сложение с плавающей запятой — относительно проста. В той мере, в какой это касается сумматора, результат одного сложения никак не зависит от предыдущего, последующего или какого-либо еще. Кроме того, имеется много способов разбиения функции сложения на ступени, от двух (в машине IBM 360/91 ) до шести (в машине ASC фирмы Texas Instru­ments) и более ступеней, однако, если разбиение уже выполне­но, все сложения идут по одному пути. Например, на рис. 2. показан ре­зультат разбиения функции сложения с плавающей запятой на следующие подфункции:

• вычитание порядков;

• сдвиг вправо мантиссы числа, имеющего меньший порядок, на вели­чину, равную разности порядков;

• прибавление другой мантиссы к сдвинутой;

• подсчет числа нулей в старших разрядах суммы;

• сдвиг влево суммы на число нулей в старших разрядах и соответствую­щая корректировка порядка.

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

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

Вход А Вход В