Организация и функционирование компьютеров

         

Машинная команда


В 1943г. в США была создана первая электронная вычислительная машина – Марк-1. Более удачный вариант – машина ЭНИАК – был создан в 1945г. К работе над ней был привлечен немецкий ученый Джон фон Нейман, который сформулировал основные принципы построения универсальных вычислительных машин. На этих принципах до сих пор строятся все компьютеры. В число этих принципов входит разделение устройств хранения информации и процессора, организация обмена с внешней средой, адресация памяти и т.д.

В числе других фон Нейманом была предложена революционная идея, состоящая в том, что и для данных, и для программ в компьютере отводится одно и то же место - оперативная память. Разница между данными и программами заключается только в интерпретации содержимого конкретного фрагмента памяти. При этом очевидно, что правильно интерпрети­ро­ваться в качестве программы может только информация, специально созданная в соответствии с правилами построения  программ. Другими словами, программа - это такая информация, которую компьютер может интерпретировать как список инструкций (машинных команд) для выполнения определенных действий. Для этого должны существовать определенные правила расшифровки машинных команд, из которых состоит программа. Полный набор этих правил составляет специ­ализированный машинный язык, используемый в компьютере.

В общих чертах машинный язык устроен следующим образом. Программа состоит из машинных команд. Каждая команда представляет собой отдельную инструкцию и предназначена для выполнения одной опе­рации. Команда состоит из нескольких байтов информации (в персональных компьютерах от 2 до 4 байт), то есть разные команды могут иметь разную длину. Команды помещаются в оперативной памяти последовательно, одна за другой. По форме машинная команда представляет собой последовател­ьность двоичных цифр. Первый байт команды содержит код команды, который указывает номер операции. По номеру операции процессор определяет ту микросхему, которая будет выполнять операцию.
Код команды однозначно задает всю последовательность действий, выполняемых компьютером для вычисления результата операции. В частности, в зависимости от кода команды определяется длина команды. Часть команды, за исключением кода операции, указывает на дополнительные осо­бенности операции, которую команда выполняет, и содержит дополнительную информацию (например, адреса данных в оперативной памяти, необходимые для выполнения пересылок, или номера регистров процессора, участвующие в арифметических операторах).

Процесс выполнения машинной команды состоит из 3-х шагов: выборки очередной команды, выполнения команды и вычисления адреса следующей команды. Для выполнения команд в процессоре предусмотрены два специальных регистра: адресный регистр и командный регистр. Адресный регистр содержит адрес начального байта очередной выполняемой команды. Первый шаг заключается в считывании  по шине данных в командный регистр информации, содержащейся по этому адресу в оперативной памяти. Затем процессор выбирает из командного регистра код команды и далее все дальнейшее выполнение операции зависит от значения этого кода. В частности, от него зависит длина текущей команды. Эта длина прибавляется к значению адресного регистра, после чего там автоматически будет содержаться адрес следующей выполняемой команды (напомним, что в памяти компьютера команды расположены одна за другой).

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


Эти значения записываются в активизированный байт.

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

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

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


Содержание раздела