Конвейер команд – устройство, предназначенное для ускоренной обработки команд в ЦП. Он позволяет сразу обрабатывать несколько команд.
1 ступень – дешифрация кода операции
2 ступень – дешифрация 1го операнда
3 ступень – дешифрация 2го операнда
4 ступень – выполнение операции
5 ступень – запись результата в память
Внутренний конвейер – команды
последовательно поступают на ступени
конвейера.
Данные и команды хранятся в общей оперативной памяти универсального МП. Цифровые сигнальные процессоры (ЦСП) имеют 2 или 3 изолированных ОЗУ со своими шинами для возможности одновременной передачи по ним команд и данных.
Это пример параллельной системы
Рис. Параллельная обработка команд и данных
В разных процессорах фирмы-производители применяют разное количество ступеней (от 3 до 30). У некоторых процессоров Intel (например, Itanium) есть 3 конвейера команд.
Пусть нам необходимо реализовать действие: e = a*b + c. Понадобятся три команды:
K1 : d = a * b
K2: e = c + d
K3: запись e из регистра в память
Без КК (конвейера команд) действие будет реализовано за 15 тактов, с КК – за 8. Таким образом,
, то есть КК может существенно ускорить обработку команд.
Конвейер называется сбалансированным, если время обработки на каждой ступени приблизительно одинаково. В этом случае потери времени, связанные с ожиданием поступления данных на каждую ступень, будут минимальными.
В ЦП с тремя конвейерами команды группируются в связки определённым образом (|| - команды выполняются параллельно):
1. k1||k2, k3
2. k1, k2||k3
3. k1||k2||k3
4. k1, k2, k3
Параллельные команды могут выполняться независимо, так как не используют результатов выполнения друг друга. Определять параллельность – работа интерпретатора или компилятора. Каждая связка выполняется на одном конвейере.
Найдём ускорение внешнего конвейера (данных) с использованием ПЭ внутреннего конвейера:
Поскольку с использованием КК каждый из процессоров КД будет работать в 1.8 раз быстрее, ускорение также увеличится в 1.8 раз:
Буфер команд
БК (буфер команд)позволяет извлекать команды из памяти за меньшее количество циклов обработки команд и памяти по сравнению с традиционным методом.
Формат всех команд укладывается в 1 байт
16-разрядные процессоры с БК – 2 команды за обращение
32-разрядные процессоры с БК – 4 команды за обращение
Рассмотрим 32-разрядный процессор. Без БК он получает 4 команды за 4 такта, с БК – за 1. Потенциальное возможное ускорение потому есть 4/1 = 4.
Сравним более детально работу 2 ПЭ с БК и без него. Будем считать, что работа с командами и данными различна (команды считываются во внутренние регистры ЦП и далее используются, данные можно ещё изменить и записать в память). Допустим, программа обрабатывает равное количество команд и данных (по 4), которые
а) извлекаются из памяти последовательно в соответствующие регистры ЦП
б) извлекаются с использованием БК для команд
Получим следующую таблицу обращений к памяти:
БК
К
Д
Общее кол-во тактов
нет
3*4 (2 на считывание, 1 на запись, 4 раза)
есть
3*4
В таком случае
Таково оценочное значение U при использовании БК при равном количестве команд и данных. При других соотношениях U будет другим.
Сводная таблица ускорений для задачи умножения матрицы 4х4 на вектор 4х1