Принцип программного управления
В ЭВМ вся последовательность команд на вычисление предварительно записывается в память вычислительной машины и выполняется последовательно автоматически. Впервые принцип вычислительной машины с автоматическим выполнением команд предложил американский ученый фон Нейман. Он описал основные узлы, которые должна содержать такая машина. Этот принцип получил название фон-неймановской вычислительной машины. Большинство современных ЭВМ в настоящее время построено именно по этому принципу.
Машина фон Неймана состояла из памяти, представлявшей собой набор регистров, АЛУ (арифметико-логическое устройство), устройства ввода-вывода и устройства управления (УУ).
Рис. 2. Машина фон Неймана
Устройство ввода передает команды и данные в АЛУ, откуда они записываются в память. Все команды, совокупность которых называется программой, записываются в память в соседние ячейки по возрастанию их адресов, а данные, которые требуют обработки,— в ячейки с произвольными адресами. Последняя команда программы — это обязательно команда остановки работы. Каждая команда содержит код операции, которую необходимо выполнить, и адреса ячеек, в которых находятся данные, обрабатываемые этой командой. Устройство управления содержит специальный регистр, который называется «Счетчик команд». После загрузки программы и данных в память в счетчик команд записывается адрес первой команды программы. После чего вычислительная машина переходит в режим автоматического выполнения программы.
Устройство управления считывает из памяти содержимое ячейки памяти, адрес которой находится в счетчике команд, и помещает его в специальное устройство — «Регистр команд». Регистр команд хранит команду во время ее исполнения. Устройство управления расшифровывает тип операции команды, считывает из памяти данные, адреса которых указаны в команде, и приступает к ее выполнению. Для каждой команды устройство управления имеет свой алгоритм обработки, который заключается в выработке управляющих сигналов для всех остальных устройств машины. Этот алгоритм реализован на основе комбинационных логических схем или с помощью специальной внутренней памяти, куда эти алгоритмы были записаны в виде микрокоманд, объединенных в микропрограммы. Выполнение микропрограммы происходит по тому же принципу, что и программы в основной памяти, т.е. по принципу фон Неймана. Каждая микрокоманда содержит набор управляющих сигналов для устройств машины.
Микропрограмма выполнения любой команды обязательно содержит сигналы, изменяющие содержимого счетчика команд на единицу. Таким образом, после завершения выполнения очередной команды, счетчик команд указывает на следующую ячейку памяти, в которой находилась следующая команда программы. Устройство управления считает команду, адрес которой находится в счетчике команд, помещает ее в регистр команд и т.д. Этот процесс продолжается до тех пор, пока очередная исполняемая команда не оказывается командой останова исполнения программы. И команды, и данные, находящиеся в памяти, представляют собой целочисленные двоичные наборы. Отличить команду от данных устройство управления не может, поэтому, если программист забыл закончить программу командой останова, устройство управления читает следующие ячейки памяти, в которых уже нет команд программы, и пытается интерпретировать их как команды.
Особым случаем можно считать команды безусловного или условного перехода, когда требуется выполнить команду, не следующую по порядку за текущей, а отстоящую от данной на какое-то количество адресов. В этом случае команда перехода содержит адрес ячейки, куда требуется передать управление. Этот адрес записывается устройством управления непосредственно в счетчик команд и происходит переход на соответствующую команду программы.