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

Для большинства опера­ций этого вполне достаточно, но некоторым, в частности делению, требуется больше времени. Рассмотрим пример, который проиллюстрирован на рис. 9.3. Для совершения операции, задаваемой командой I2, нужно три такта: от 4 до 6. Поэтому выполнение операции записи на тактах 5 и 6 откладывается — данные, которые должны быть обработаны этой командой, еще не готовы. Информация в буфере В2 должна оставаться неприкосновенной, пока не завершатся операции, производимые на ступени выполнения. Это означает, что ступень 2, а вместе с ней и ступень 1, блокируются до конца операции и не могут принимать новые ко­манды, поскольку нельзя перезаписать информацию в буфере Bl. Таким образом, как показано на рисунке, выполнение шагов D4 и F5 должно быть отложено.


Рис. 9.3. Результаты выполнения операции, занимающей более одного такта

Работа конвейера, который вы видите на рис. 9.3, приостанавливается на два такта. Его нормальное функционирование возобновляется во время такта 7 . Об­стоятельства, в силу которых приостанавливается работа конвейера, называют конфликтами.

Мы рассмотрели пример конфликта по данным


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