В основы построения подавляющего большинства компьютеров положены следующие общие принципы, сформулированные в 1945 году американским учёным Джоном фон Нейманом.
Принцип программного управления. Программа состоит из набора команд, выполняющихся процессором автоматически в определённой последовательности.
Выбор команд программы выполняется с помощью счётчика команд. Этот регистр процессора последовательно увеличивает хранимый в нём адрес очередной команды на длину команды тем самым организуется выборка цепочки команд программы из последовательно расположенных ячеек памяти. Последовательность выполнения команд может меняться с использованием команд условного или безусловного перехода, которые заносятся в счётчик команд номер ячейки памяти, содержащий следующую команду. Выборка команд из памяти прекращается после достижения и выполнения команды «стоп».
Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти, поэтому компьютер не различает, что хранится в данной ячейке памяти – число, текст или команда. Над командами можно выполнять такие же действия, как и над данными.
Это открывает целый ряд возможностей. Например, программам в процессе своего выполнения может подвергаться переработке, что позволяет задать в самой программе правила получения некоторых её частей (циклы и подпрограммы).
Более того, команды одной программы могут быть получены с помощью другой программы. На этом принципе основаны методы трансляции – перевода текста программы с языка программирования высокого уровня на язык конкретной машины.
Принцип адресности. Структурно основная память состоит из пронумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка.
Отсюда следует возможность давать имена областям памяти так, чтобы к запомненным в них значениям можно было в последствии, обращаться или менять их в процессе выполнения программы с использованием присвоенных имён.
Принцип прямого доступа к памяти. Используя адреса памяти, можно обратиться на прямую к определённой области памяти.
Структура команд компьютера и её выполнение
Команда – это описание элементарной операции, которую должен выполнить процессор. В общем случае команда содержит следующую информацию:
код выполняемой операции;
указания по определению операндов;
указания по размещению получаемого результата.
В зависимости от количества операндов команды бывают:
add
x
add
x
y
add
x
y
z
одноадресные;
двухадресные;
трёхадресные;
переменно-адресные.
На примере показано несколько возможных вариантов команды сложения.
Все команды программы хранятся в памяти в двоичном коде и занимают о двух до четырёх байт. Адресная часть команды может быть весьма разнообразна. В ней может быть указан:
сам операнд (число или символ);
адрес операнда (номер байта, с которого начинается операнд);
адрес адреса операнда (номер байта, начиная с которого расположен адрес операнда).
Запуск конкретной программы приводит к последовательному выполнению очередной команды, которое можно проследить по упрощённой структурной схеме компьютера. Как правило, этот процесс разбивается на следующие этапы:
Æ из ячейки памяти, адрес которой хранится в счётчике команд, выбирается очередная команда; содержимое счётчика команд увеличивается при этом на длину команды;
Æ выбранная команда передаётся в УУ на регистр команд;
Æ УУ расшифровывает адресное поле команды;
Æ по сигналам УУ операнды считываются из памяти и записываются в АЛУ на специальные регистры операндов;
Æ УУ расшифровывает код операции и выдаёт сигнал в АЛУ выполнить соответствующую операцию над данными;
Æ результат операции либо остаётся в процессоре (на сумматоре), либо отправляется в память, если в команде был указан адрес результата;
Æ все предыдущие этапы повторяются до достижения команды «стоп».