
- •Вычислительные системы
- •Систолические процессоры. Параллельная обработка данных.
- •Сравнение последовательных и параллельных алгоритмов
- •Конвейеры команд и данных
- •Буфер команд
- •Понятие архитектуры эвм
- •Архитектура эвм и языки программирования
- •Эвм Фон-Неймана
- •Показатель эффективности архитектурных свойств эвм.
- •Первое поколение (1949-1951[формирование поколений])
- •Второе поколение (1955-1966[формирование поколений])
- •Третье поколение эвм (1963 – 1965[формирование поколений])
Конвейеры команд и данных
Конвейер команд – устройство, предназначенное для ускоренной обработки команд в ЦП. Он позволяет сразу обрабатывать несколько команд.
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. Таким образом,
,
то есть КК может существенно ускорить
обработку команд.
Конвейер называется сбалансированным, если время обработки на каждой ступени приблизительно одинаково. В этом случае потери времени, связанные с ожиданием поступления данных на каждую ступень, будут минимальными.
В ЦП с тремя конвейерами команды группируются в связки определённым образом (|| - команды выполняются параллельно):
k1||k2, k3
k1, k2||k3
k1||k2||k3
k1, k2, k3
Параллельные команды могут выполняться независимо, так как не используют результатов выполнения друг друга. Определять параллельность – работа интерпретатора или компилятора. Каждая связка выполняется на одном конвейере.
Найдём ускорение внешнего конвейера (данных) с использованием ПЭ внутреннего конвейера:
Поскольку с использованием КК каждый из процессоров КД будет работать в 1.8 раз быстрее, ускорение также увеличится в 1.8 раз:
Буфер команд
БК (буфер команд) позволяет извлекать команды из памяти за меньшее количество циклов обработки команд и памяти по сравнению с традиционным методом.
Формат всех команд укладывается в 1 байт
16-разрядные процессоры с БК – 2 команды за обращение
32-разрядные процессоры с БК – 4 команды за обращение
Рассмотрим 32-разрядный процессор. Без БК он получает 4 команды за 4 такта, с БК – за 1. Потенциальное возможное ускорение потому есть 4/1 = 4.
Сравним более детально работу 2 ПЭ с БК и без него. Будем считать, что работа с командами и данными различна (команды считываются во внутренние регистры ЦП и далее используются, данные можно ещё изменить и записать в память). Допустим, программа обрабатывает равное количество команд и данных (по 4), которые
а) извлекаются из памяти последовательно в соответствующие регистры ЦП
б) извлекаются с использованием БК для команд
Получим следующую таблицу обращений к памяти:
БК |
К |
Д |
Общее кол-во тактов |
нет |
4 |
3*4 (2 на считывание, 1 на запись, 4 раза) |
16 |
есть |
1 |
3*4 |
13 |
В таком случае
Таково оценочное значение U при использовании БК при равном количестве команд и данных. При других соотношениях U будет другим.
Сводная таблица ускорений для задачи умножения матрицы 4х4 на вектор 4х1
ВС (выч. сист.) с ПЭ |
Ускорение без БК |
Ускорение с БК |
Вид выполнения |
1 ПЭ без КК |
1 |
1.23 |
Последовательное |
1 ПЭ с КК |
1.8 |
2.214 |
Последовательное |
5 ПЭ без КК |
1.8 |
2.214 |
Параллельное |
5 ПЭ с КК |
3.24 |
3.98 |
Параллельное |