Другая идея состоит в следующем: стремясь максимально за-
грузить оборудование, приходят к идее конвейерной обработки.
Для этого принимают во внимание возможность мысленно раздро-
бить оборудование и программу на мелкие единицы и совместить
их так, чтобы единица оборудования обрабатывала соответствую-
щую единицу программы, и чтобы все такие обработки проводились
одновременно. Такой подход позволяет минимизировать простои,
но он требует специального оборудования — так называемых кон-
вейерных функциональных устройств; последние, как нам извест-
но, можно моделировать последовательно соединенными простыми
функциональными устройствами.
Заметим, что само понятие конвейерной обработки весьма от-
носительно. Действительно, переход от последовательной обработ-
ки к конвейерной выглядит следующим образом.
Первоначально поток данных разбит на некоторые порции,
каждая из которых может обрабатываться некоторым функцио-
нальным устройством: на его вход подается упомянутая порция
данных, и до окончания обработки этой порции следующая пор-
ция данных не может обрабатываться. На некотором этапе изуче-
ния этого процесса выясняется, что рассматриваемые порции дан-
ных в нашем функциональном устройстве проходят сложную обра-
ботку, при которой часть оборудования функционального устрой-
ства простаивает. В таком случае имеет смысл представить пор-
цию данных в виде конечной последовательности более мелких пор-
ций, а функциональное устройство "раздробить" на более мелкие
функциональные устройства с тем, чтобы процесс обработки вести
более мелкими порциями на указанной последовательности мел-
ких функциональных устройств. В результате загруженность ис-
ходного функционального устройства возрастает, ибо нет необхо-
димости ждать, пока закончится обработка исходной порции, что-
бы приступить к обработке следующей. Исходное функциональное
устройство, разбитое указанным образом на более мелкие функци-
ональные устройства, называется теперь "конвейерным функцио-
нальным устройством", а исходный поток работ, разбитый на мел-
кие порции, подвергается теперь "конвейерной обработке". Однако
нетрудно видеть, что дальнейшим усовершенствованием алгоритма
было бы его дальнейшее измельчение с тем, чтобы попытаться вы-
делить в полученных ранее мелких функциональных устройствах
простаивающие части и загрузить их способом, описанным выше.
125