Весь цикл исполнения команды можно распределить по ступеням конвейера следующим образом: 1 ступень – выборка команды
2 ступень – выборка операнда по адресу А
3 ступень – выполнение самой операции
4 ступень – запись результата по адресу А
Тогда временная диаграмма будет выглядеть:
такты/ ступени |
Т1 |
Т2 |
Т3 |
Т4 |
1 |
К1 |
К2 |
К3 |
К4 |
2 |
К1 |
К2 |
К3 |
|
3 |
К1 |
К2 |
||
4 |
К1 |
Конфликты, возникающие в конвейерах при обращении к ОЗУ
В соответствии с диаграммой, в конвейере могли бы обрабатываться 4 команды (К1-К4), однако уже во втором такте возникает конфликт между первой и второй ступенями конвейера при обращении к ОЗУ: на первой ступени – за командой, а на второй ступени – за операндом. На 4 такте добавляется конфликт с 4 ступенью при записи результата в ОЗУ.
Для ликвидации конфликта применяют два способа:
1. Расслоение ОЗУ по данным когда в одном блоке хранятся команды, а в другом данные.
Недостатком такого способа является:
v Сложность программирования при распределении.
v При увеличении адресности команды приходится увеличивать число блоков ОЗУ данных.
2. Расслоение ОЗУ по адресам. Это более универсальный способ. ОЗУ в этом случае состоит из m модулей, каждый и которых имеет следующую адресацию: адреса смежных ячеек принадлежат смежным модулям. В соответствии с такой адресацией в модулях размещаются команды и данные.
ОЗУ0 |
ОЗУ1 |
ОЗУ2 |
ОЗУ3 |
|||||||||||||||
0 |
4 |
8 |
С |
1 |
5 |
9 |
D |
2 |
6 |
A |
E |
3 |
7 |
B |
F |
|||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.