Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Навигация
9.11, б. Если, например, вывод команды I2 будет отложен из-за промаха при обращении к кэш-памяти за ее исходным операндом, на такте 4 целочисленный блок окажется занятым, и подготовка команды I4 к выполнению станет невозможной. Корректна ли в этом случае диспетчеризация команды I5? В принципе, да, если для команды I4 в буфере реорганизации зарезервировано место, что обеспечит выход команд из конвейера в правильном порядке. Однако внеочередная диспетчеризация команд требует большой осторожности. Приступая к ней, нужно иметь гарантию, что не произойдет взаимоблокировки.
Взаимоблокировкой называется ситуация, когда два блока, скажем А и В, совместно используют один ресурс. Предположим, блок В не может завершить работу до тех пор, пока блок А не закончит свою. В то же время блоку В выделен ресурс, который нужен блоку А. При таком раскладе ни один из двух блоков не сможет решить свою задачу. Блок А будет ожидать освобождения ресурса, а блок В, «оккупировавший» нужный ресурс, — завершения работы блока А.
Рассмотрим, вследствие чего происходит взаимоблокировка, если команды диспетчеризируются не по порядку. Допустим, процессор имеет только один временный регистр, который резервируется для команды I5, когда она диспетчеризируются
<< назад вперед >>