Программирование на JAVA

Это ситуация, ко­гда либо исходный, либо результирующий операнд команды не доступен в поло­женное время. В результате операция, которой он нужен, откладывается, а работа конвейера приостанавливается.

Еще одна причина останова конвейера может заключаться в задержке поступ­ления очередной команды. Возможная причина такой задержки — промах при по­пытке выборки команды из кэш-памяти. Конфликты этого типа называются кон­фликтами по управлению. На рис. 9.4 показано, как отсутствие команды в КЭШе отражается на работе конвейера. Команда I1 выбирается из кэша во время такта 1 и выполняется обычным образом. Далее, на такте 2, производится выборка ко­манды I2, а при обращении к кэшу происходит промах. Из-за этого работа блока выборки команд приостанавливается до получения команды I2. Мы полагаем, что команда I2 поступает и загружается в буфер Bl в конце такта 5. С этого момента возобновляется нормальная работа конвейера.


а


б

Рис. 9.4. Останов конвейера, вызванный промахом при обращении к кэшу на шаге F2:

шаги при выполнении команды на последовательных тактах (а); действия, выполняемые на ступенях конвейера во время последовательных тактов (б)


<< назад вперед >>