Машинный и ассемблерный форматы команд

В качестве конкретного примера рассмотрим одноадресную МК с кодом 0100 0101.

Первые 5 битов этой команды являются кодом операции, а последние 3 (101) – кодом регистра процессора bp (указатель базы). По этой команде выполняются следующие действия:

  1. Из bp выбирается двухбайтный код и переносится в АЛУ;
  2. К выбранному коду добавляется 1;
  3. Результат записывается в bp.

В таком виде воспринимать команды человеку очень сложно. Поэтому используются мнемокоды. Например, мнемокод inc увеличивает значение операнда на 1. Он как раз соответствует коду операции 01000, а мнемокод bp заменяет в команде код регистра 101. Таким образом, можно записать inc bp. Это ассемблерный формат записи команды.

Выполнение команд

Центральный процессор выполняет каждую команду за несколько шагов:

1) вызывает следующую команду из памяти и переносит ее в регистр команд;

2) меняет положение счетчика команд, который теперь должен указывать на

следующую команду (Это происходит после декодирования текущей команды, а иногда и после ее выполнения);

3) определяет тип вызванной команды;

4) если команда использует слово из памяти, определяет, где находится это слово;

5) переносит слово, если это необходимо, в регистр центрального процессора. (Следует заметить, что бывают команды, которые требуют загрузки из памяти целого множества слов и их обработки в рамках одной-единственной команды);

6) выполняет команду;

7) переходит к шагу 1, чтобы начать выполнение следующей команды.

 

Такая последовательность шагов (выборка–декодирование–исполнение) является основой работы всех компьютеров.

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

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

 

Прерывания

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

Обрабатывая данные, процессор обращается к байтам оперативной памяти, а для выполнения операций обмена – к портам ввода / вывода. На логическом уровне каждый порт представляет собой 8-мибайтовое запоминающее устройство. Например, порт LPT1 связан с принтером, к порту COM может подключаться мышь или модем.

Каждый порт, как и каждый байт, имеет номер, который считается его адресом. Совокупность адресов портов образует адресное пространство ввода-вывода, которое не зависит от адресного пространства оперативной памяти.

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

Теоретически возможны 2 способа взаимодействия процессора и внешних устройств: опрос и прерывание. Опрос – это периодическое прекращение текущей работы процессора и посылка им запросов каждому из внешних устройств на возможность или необходимость выполнения операции по обмену. Это нерационально.

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

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

Физически прерывание организуется с помощью запроса IRQ (Interrupt ReQuest), поступающего в процессор от одного из устройств компьютера. Получив такой сигнал, процессор запоминает свое текущее состояние и переключается на программу обработки прерываний. В процессе ее выполнения устройство передает процессору некоторую дополнительную информацию о создавшейся во время обмена ситуации. Для каждого устройства есть свой специфичный код завершения, который показывает, правильно ли завершился обмен, полностью или нет, требуется ли вмешательство пользователя и др.

Прерывания делятся на внешние и внутренние. К внешним относят прерывания ввода/вывода, аппаратные прерывания (поступают от устройств в случае их сбоя). Внутренние прерывания происходят в самом процессоре. К ним относятся программные прерывания(например, запросы со стороны программ на начало выполнения ввода или вывода) и прерывания от исключительных ситуаций(деление на 0 и др.).

Память

Основная память

Память – часть компьютера, где хранятся программы и данные. Память представлена группой устройств, которые отличаются друг от друга физической реализацией, способом использования, объемом, стоимостью и некоторыми другими характеристиками.

Компьютер принципиально не может работать без оперативной памяти (ОП). В то время, как отсутствие других видов памяти просто снижает эффективность его работы.

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

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

ОП энергозависима, то есть при отключении электропитания все программы и данные, которые в этот момент находятся в ОП, безвозвратно теряются.

Бит и байт

Основной единицей памяти является двоичный разряд, который называется битом. Бит может содержать 0 или 1. Это самая маленькая единица памяти. (Устройство, в котором хранятся только нули, вряд ли могло быть основой памяти. Необходимы по крайней мере две величины.)

Многие полагают, что в компьютерах используется бинарная арифметика, потому что это «эффективно». Цифровая информация может храниться благодаря различию между разными величинами какой-либо физической характеристики, например напряжения или тока. Чем больше величин, которые нужно различать, тем меньше различий между смежными величинами и тем менее надежна память. Двоичная система требует различения всего двух величин, следовательно, это самый надежный метод кодирования цифровой информации.

Считается, что некоторые компьютеры, например большие IBM, используют и десятичную, и двоичную арифметику. На самом деле здесь применяется так называемый двоично-десятичный код. Для хранения одного десятичного разряда используется 4 бита. Эти 4 бита дают 16 комбинаций для размещения 10 различных значений (от 0 до 9). При этом 6 оставшихся комбинаций не используются. Ниже показано число 1944 в двоично-десятичной и чисто двоичной системах счисления; в обоих случаях используется 16 битов:

десятичное: 0001 10010100 0100 двоичное: 0000011110011000

 

16 битов в двоично-десятичном формате могут хранить числа от 0 до 9999, то есть всего 10000 различных комбинаций, а 16 битов в двоичном формате – 65536 комбинаций. Именно по этой причине говорят, что двоичная система эффективнее.

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

Содержимое любого байта памяти может задаваться и обрабатываться независимо от остальных байтов. Но процессор не может получить доступ к отдельному биту байта.

Из-за того, что есть возможность напрямую обращаться к любому байту, ОП называют еще памятью с прямым доступом, и используют для нее обозначение RAM (Random access memory).

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

ОП естественно рассматривать как упорядоченную в порядке возрастания адресов совокупность байтов. Но любое обращение к памяти со стороны процессора по ряду технических соображений осуществляется не по произвольным адресам байтов, а только по адресам слов памяти.