Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
11.9. Параллельная работа ЗУ, АУ, устройств управления и вызова команд
Каждая
исполняемая команда управляет совокупностью вентилей и триггеров, в результате
чего в ЦВМ выполняется определенная последовательность операций. Многие из
этих операций могут выполняться одновременно, причем логический ход программы
не будет нарушаться. За выигрыш в быстродействии, получающийся при этом,
приходится расплачиваться усложнением устройства управления. Так, операции
перехода, занесения в память и сложения можно было бы совместить в одной
команде. Логических прерываний в работе при этом происходить не будет, но
длина кода команды становится весьма большой. В качестве примера предположим,
что адреса чисел и команд содержат по 12 разрядов, а коды операций — по шесть
разрядов. В итоге длина кода команды, содержащей три кода операций и два
адреса, должна быть равна 42 двоичным разрядам.
Дополнительное
распараллеливание (которое можно также рассматривать как поточную обработку)
получается при параллельной работе ЗУ команд и ЗУ чисел, так что выполнение
очередной команды может быть начато до завершения предыдущей. При этом
возникает опасность, что две команды могут потребовать от одного и того же
устройства выполнения различных действий. Другая опасность состоит в том, что
некоторая условная команда (например, условный переход) может быть выполнена
неправильно, так как к началу ее выполнения еще не была закончена предыдущая
команда, которая может изменить условие перехода.
Существует
несколько методов, позволяющих избежать таких ошибок. Один из них — введение
блокирующей цепи, обнаруживающей ситуации, ведущие к ошибкам, и соответственно
задерживающей вызов и исполнение последующих команд. Второй метод — аккуратная
проработка и синхронизация последовательности операций для каждой команды и
введение определенных правил программирования. Этот метод будет продемонстрирован
в разд. 11.10 при рассмотрении FDP.