Поясним основные понятия, которыми мы должны будем пользоваться при разборе архитектуры (и которые уже использовались в принципах фон Неймана).
Адрес – способ обратиться к содержимому ячейки памяти. Обычно в качестве минимально адресуемой ячейки памяти выбирается восьмиразрядная ячейка памяти (байт), поэтому можно считать, что адрес это номер байта в адресном пространстве.
Адресное пространство – диапазон доступных процессу адресов памяти. Не утверждается, что все эти адреса доступны безусловно. Возможно, что для корректного доступа к каким-то из них требуется некая специальная процедура. Не утверждается также и того, что обращение по любому из них обязательно должно быть успешно – возможно, попытка обратиться по адресу Х приведёт к немедленному прерыванию программы, но важно, что потенциально можно использовать этот диапазон, т.е. породить адрес.
Размер объема памяти обычно измеряют в кило-, мега-, гига-, тера- и петабайтах (больше пока не употребляются). Название «килобайт» общепринято, но формально неверно, так как приставка кило-, в этом случае означает умножение не на 1000, а на 210 т.е. на 1024. При этом обозначение Кбайт (и все остальные тоже) начинают с прописной буквы в отличие от строчной буквы к для обозначения множителя 103. Приведем определения для всех введенных приставок.
Название
Символ
Степень
Степень ГОСТ
Кбайт
KiB
210
103
Мбайт
MiB
220
106
Гбайт
GiB
230
109
Тбайт
TiB
240
1012
Пбайт
PiB
250
1015
Машинная команда (она же инструкция) – «Слово» машинного языка располагающееся в памяти. У каждой команды есть свой код, который называют код операции (англ. operation code). Код операции показывает, какую именно операцию из системы команд процессора надо выполнить. В отличие от самого кода операции, машинные команды, которые обрабатывает процессор, обычно включают один или два операнда(англ. operand), над которыми должна выполняться операция, хотя некоторые операции могут совсем их не иметь.
Для того чтобы исполнить команду, процессор должен прочитать ее из памяти. Для того чтобы произвести операцию над данными, процессор должен прочитать их из памяти, и, возможно, после произведения над ними определенного действия, записать их обратно в память в обновленном (измененном) виде. Команды и данные идентифицируются их адресом, который, по сути, представляет собой порядковый номер ячейки памяти.
Операнд - аргумент операции или, иначе говоря, элемент данных, над которым производятся машинные операции, Операнды могут быть обозначением регистра – операнд регистр, непосредственно числами (константами) – непосредственный операнд, значениями адреса – операнд память (в этом случае действие производится над данными расположенными по этому адресу).
Большинство команд требуют двух операндов, один из которых является операндом-источником, а второй — операндом назначенияили приемником. В двухоперандной машинной команде возможны следующие сочетания операндов:
- Регистр – регистр;
- Регистр – память;
- Память – регистр;
- непосредственный операнд – регистр;
- непосредственный операнд – память.
Программа– это просто список инструкций, выполняемых процессором.
Регистр процессора – сверхбыстрая память внутри процессора или иначе ячейка процессора. Регистр предназначен, прежде всего, для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или данных, необходимых для работы процессора (специальные регистры). Можно сказать, что регистры общего назначения - это переменные, как X или Y в алгебре. Только регистры физически существуют в отличие от абстрактных переменных. С точки зрения схемотехники регистр это многоразрядная ячейка памяти, которая состоит из нескольких триггеров.
В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту. Например, при выборке из памяти очередной команды она помещается в регистр команд. Программист обратиться к этому регистру не может. Имеются так же регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы. Этими регистрами пользуются в основном разработчики операционных систем.
Регистры могут быть восьмиразрядные (в такой регистр помещаются 8 бит, т.е. 1 байт), шестнадцатиразрядные (в такой регистр помещается два байта или говорят машинное слово), 32-разрядные и т.д.
Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти.
Счетчик команд – регистр процессора, содержащий адрес текущей выполняемой команды.