Вот пример выхода из строя трубопровода от «Семейства микропроцессоров Intel» Джеймса Антонакоса.Неполадки с ультрафиолетовыми трубопроводами
Рассмотрите эту последовательность инструкций. Для этого примера создается количество тактовых циклов, назначенных каждой команде.
1: MOV AL, 2 ; 1 cycle
2: MOV DL, [SI] ; 3 cycles
3: MUL DL ; 2 cycles
4: INC SI ; 1 cycle
5: SUB BX, 4 ; 1 cycle
6: ADD AX, BX ; 1 cycle
7: MOV CX, 2000 ; 1 cycle
Планирование инструкции в порядке между двумя трубопроводами: (я знаю основную концепцию этого.)
Clock Cycle Pipeline # 1 Pipeline # 2
1 MOV AL, 5 MOV DL, [SI]
2 idle busy
3 idle busy
4 MUL DL INC SI
5 busy SUB BX, 4
6 ADD AX, BX MOV CX, 2000
инструкции Планирование из строя между двумя трубопроводами:
Clock Cycle Pipeline # 1 Pipeline # 2
1 MOV AL, 5 MOV DL, [SI]
2 INC SI SUB BX, 4
3 MOV CX, 2000 busy
4 MUL DL idle
5 ADD AX, BX idle
Может кто-нибудь объяснить мне, как не работает конвейер? Спасибо!
есть блок, который анализирует предстоящий код и вычисляет зависимости между отдельными инструкциями , если (скажем) загружается загрузка памяти, которая некоторое время остановит канал, процессор попытается запланировать некоторые другие независимые инструкции до/после операции загрузки, поэтому они могут выполняться, пока загрузка ожидает, что система памяти будет отвечать. при этом действуют одни и те же инструкции, но работают меньше циклов, потому что вы тратите впустую циклы на ожидание других вещей. –
Я вижу. Другой вопрос. Когда нас просят нарисовать УФ-конвейер, NOP используется в качестве заполнителя. В чем разница между занятой и простой в конвейерной обработке? – ellekaie
Занято означает, что трубопровод все еще заканчивает инструкцию (так как некоторые инструкции занимают более 1 цикла). Idle означает, что трубопровод ничего не делает. – jliv902