Принцип управления каждым тактом машины. Часть 2.

Как отмечалось выше, одна из причин введения динамического управления — это обеспечение параллельного исполнения программы, изложенной программистом последовательно. При динамическом управлении аппаратура фактически исполняет программу не в той последовательности, в которой она записана, при этом обеспечивая семантическую эквивалентность исходной программе.

Таким образом, теряется простота управления, характеризующая первые ЭВМ. Если в команде явно присутствует параллельность, как это имеет место в архитектуре FPS, то исчезает одна из основных причин появления динамического планирования — введение неявной параллельности. Следовательно, можно вернуться к простоте систем, работавших «в реальном масштабе времени», когда последовательность выполнения операций соответствует изложенной в программе, и при этом получить высокую скорость счета. На первый взгляд, при динамическом управлении легче справиться с динамикой, возникающей в результате условных передач управления. Однако при этом следует иметь в виду, что при наличии условных ветвей значительно затрудняется «просмотр вперед», что снижает эффект динамического планирования. Таким образом, излагаемый подход, реализованный в машинах фирмы FPS, делает планирование статическим, т. е. делает его задачей программиста или транслятора. Теперь становится еще более понятным, почему на машинах фирмы FPS практически невозможно программировать в ассемблере. Тем не менее, все это приводит к высокой производительности и экономичности использования оборудования.

Несколько менее последовательно, но, тем не менее, вполне определенно, принцип управления каждым тактом реализован и в машинах фирмы Cray Research и RISC-архитектурах (в последовательном варианте без использования явного распараллеливания).

В этом можно убедиться, пролистав систему команд ЭВМ Cray-1. В ней для каждой команды приводится точная информация, выраженная в машинных тактах, в какой момент времени операция запускается по отношению к процессу исполнения предыдущей, сколько времени выполняется при всех встречающихся вариантах операндов и модификациях команды, условия запуска, блокировки и т. д.

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

В этом смысле интересно проследить историю микропрограммирования. Информационная система условно изображена на рис. 1.1. Алгоритм записывается программистом с помощью системы команд, реализуемой логическими схемами в аппаратуре машины. Неудобство программирования в ассемблере привело к изобретению языков высокого уровня. Структура информационной системы видоизменилась (рис. 1.2).

Схема информационной системы без учета языков высокого уровня