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

Внеочередное завершение команд

Команды, представленные на рис 9.10, диспетчеризируются в том порядке, в ка­ком они расположены в программе. Однако при завершении работы порядок уже иной. Сопряжено ли это с к какими-либо проблемами? Нам с вами приходилось обсуждать вопросы, связанные с зависимостям между командами. Если, к приме­ру, команда I2 зависит от результата, выдаваемого командой I1, выполнение ко­манды I2 будет отложено. При правильной обработке зависимостей выполнение команды откладывать не приходится. Однако когда выполнение команды приво­дит к исключениям, возникают новые проблемы. Исключения могут быть обу­словлены сбоем в работе шины в ходе выборки операнда или попыткой совер­шить недопустимую операцию, например деление на нуль. На такте 4 результаты выполнения команды I2 записываются в регистровый файл. Если команда I1 вы­зывает исключение, команды в конвейере оказываются в несогласованном со­стоянии. Счетчик указывает на команду, послужившую причиной возникнове­ния исключительной ситуации. При этом выясняется, что одна или несколько следующих за ней команд уже выполнены. Такая ситуация называется неточным исключением.


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