Предположим, что в машинном коде программы последовательно стоят две инструкции :
умножение двух регистров, содержащих числа с плавающей точкой (графические задачи)
и умножение двух регистров, содержащих целочисленные значения (работа с текстом).
Очевидно, что при выполнении рассмотренных команд конвейеризована может быть
только малая общая часть, касающаяся чтения из регистра и записи в регистр. Операции
умножения целочисленных операндов и операндов с плавающей точкой выполняются на
различных функциональных устройствах, имеющими между собой мало общего. Таким
образом, конвейер вынужден приостанавливаться на довольно значительное время. Если
чередование подобных инструкций встречается часто, конвейер большую часть своего
времени простаивает.
Для устранения подобных задер-
жек в процессоре существует не-
сколько конвейерных устройств –
одно для работы с плавающей точ-
кой, другое для работы с целочис-
ленными значениями. Каждый тип
операций выполняется на своем
конвейере, не задерживая поток
вычислений. Результаты с выхода
каждого из конвейерных устройств
выдаются на исполнительные устройства, записывающие результат в заданные выходные
устройства, показано на рис.
Таким образом, загрузка каждого конвейера будет увеличена и 2 конвейера будут рабо-
тать одновременно, что еще больше повысит скорость вычислений. Данная архитектура
называется суперскалярной.