Компьютеры с современный мир

Учебные модели компьютера. Структура и форматы машинных команд Виды команд эвм

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

Адресная часть содержит инф. о адресах операндов.

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

А1, А2 - адреса операндов (для однооперандных команд имеется одно поле А1)

А3 - адрес, по которому размещается результат выполняемой операции.

А4 - адрес следующей команды, подлежащей выполнению.

Данный формат является избыточным и не используется в ЭВМ т.к. команды (исп. команды переходов) выполняются в естественном порядке следования их в программе. Это позволяет процессору автоматически вычислять адрес следующей команды, прибавляя к текущему адресу А, выполняемой команды, ее длину L байт.

Поэтому в форматах команд поле А4 не указывается Это приводит к трёхадресной команде, имеющей формат:

Операнды размещаются по адресам А1, А2 , а результат выполнения операции заносится по адресу первого операнда А1 при этом значение операнда теряется. Использование аккумулятора позволяет по умолчанию размещать один из операндов в нём и не указывать адрес этого операнда в команде. В этом случае команда одноадресная и имеет формат

Адресная часть команд, представленная в приведённых выше форматах, имеет схематический характер в том смысле, что в этой части команды могут представляться не непосредственно адреса операндов, а некоторый код, позволяющий определить адрес. Конкретный бит адресной части формата команды определяется спосовом адресации. В современных ЭВМ используется несколько способов адресации.

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

В общем случае команда состоит из:

¨ операционной части (содержит код операции);

¨ адресной части (содержит адресную информацию о местонахождении обрабатываемых данных и месте хранения результатов).

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

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

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

Пример формата команды процессора i486.

mod r/m - спецификатор режима адресации;

r/m - регистр памяти;

SS - масштабный множитель для режима масштабирования индексной адресации;

КОП - код операции;

index - определяет индексный регистр;

base - определяет базовый регистр.

Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и форматов команды, т.е. ее длины, назначения и размерности отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выполняемых различных операций и соответственно команд (в компьютерах с CISC-архитектурой более 200 команд) и значительно увеличилась емкость адресуемой основной памяти (32, 64 Мб), это приводит к недопустимо большой длине формата команды.

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

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 3.1 (б), содержать следующую информацию: А1, А2 - адреса операндов, А3 - адрес результата, А4 - адрес следующей команды (принудительная адресация команд).

Рис. 3.1. Структуры команд: а) обобщенная, б) четырехадресная, в) трехадресная, г) двухадресная, д) одноадресная, е)безадресная

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


Можно установить, как это принято для большинства машин, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (K+L)-ой ячейки. Такой порядок выборки команды называется естественным. Он нарушается только специальными командами (передачи управления). В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды.

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

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

В одноадресной команде (рис. 3.1, д) подразумеваемые адреса имеют уже и результат операции и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумулятором. Результат операции записывается в тот же регистр.

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

С точки зрения программиста, наиболее естественны и удобны трехадресные команды. Обычно в ЭВМ используется несколько структур и форматов команд разной длины. Приведенные на рис. 3.1. структуры команд достаточно схематичны. В действительности адресные поля команд большей частью содержат не сами адреса, а только информацию, позволяющую определить действительные (исполнительные) адреса операндов в соответствии с используемыми в командах способами адресации.

Представление данных в ЭВМ

Для оценки количества информации и упорядочения процесса ее обработки используются структурные единицы информации.

За единицу информации принимается один бит.

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

Последовательность битов, имеющая определенный смысл, называется полем.

Поле длиной 8 бит называется байтом.

Байт, как правило, является минимальной (неделимой) единицей информации, с которой оперирует ЭВМ. Все остальные единицы информации являются его производными (рис. 2.1).

Рис. 2.1.

Основной структурной единицей информации, обрабатываемой ЭВМ, является машинное слово.

В современных ЭВМ длина машинного слова обычно составляет два байта. Как правило, в одном машинном слове может быть представлено либо одно число, либо одна команда. Для обеспечения требуемой точности вычислений и экономии памяти большинство ЭВМ могут оперировать также с двойным словом.

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

Группа массивов может объединяться в сегмент. Количество информации в больших массивах оценивается с помощью производных единиц, кратных количеству байтов в степени числа два (1кбайт = 1024 байт = 2 10 байт; 1Мбайт = 1 048 576 байт = 2 20 байт).

Вычислительная машина оперирует с двумя видами информации: управляющей информацией и числовыми данными.

Для представления числовых данных в ЭВМ используются естественная и нормальная формы записи чисел.

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

Рис. 2.2.

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

Максимальным по абсолютному значению целым числом, представляемым в естественной форме, будет число, определяемое по формуле (2 m - 1) (рис. 2.3).

Нормальная форма записи числа имеет вид N = m Ч q p , где m мантисса числа (m<1); p порядок; q основание системы счисления.

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

Рис. 2.3.

Такая форма представления чисел называется формой с плавающей точкой. В этом случае машинное слово делится на два основных поля. В одном поле записывается мантисса числа, во втором указывается порядок числа с учетом знака порядка (характеристика числа). Один разряд отводится для представления знака числа. Распределение разрядов в четырехбайтовом слове для случая с плавающей точкой приведено на рисунке 2.4.

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

Рис. 2.4.

В современных ЭВМ используются обе формы представления чисел.

Представление команд в ЭВМ

Программа работы машины, определяющая процесс обработки информации в ЭВМ, состоит из последовательности команд.

Под командой ЭВМ понимается информация, обеспечивающая выработку управляющих сигналов для выполнения машиной определенного действия.

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

Рис. 2.5.

Трехадресная команда, выполняющая, например, операцию сложения, должна содержать код операции сложения и три адреса. Действия, выполняемые такой командой, определяются примерно следующей последовательностью:

1) взять число, хранящееся по первому адресу;

2) взять число, хранящееся по второму адресу, и сложить его с первым числом;

3) результат сложения записать по третьему адресу.

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

1) вызов в сумматор числа, хранящегося по адресу A1;

2) вызов числа, хранящегося по адресу A2, и сложение его с первым числом;

3) стереть число по адресу A1;

4) запись результата по адресу A1.

Таким образом, чем меньше адресность команд ЭВМ, тем большее число команд требуется для составления одной и той же программы работы машины.

Увеличивая адресность ЭВМ, приходиться увеличивать длину машинного слова, чтобы отвести в нем необходимые поля для адресной части команд. С увеличением объема памяти ЭВМ увеличивается длина поля, необходимого для одного адреса. В то же время не все команды полностью используют адресные поля. Например, для команды записи числа по заданному адресу требуется только одно адресное поле.

Входное воздействие в виде двоичного кода, предназначенное для управления микропроцессором, называется командой (или инструкцией). Ее главная функция – выполнение операций над данными. Команда предписывает шаги по реализации микропроцессором заданной операции, представляющей собой функционально завершенное действие, которое определяется типом используемых данных, источником их получения, операцией над ними, приемником размещения результата, источником получения следующей команды . Машинное представление команды в памяти, состоящее из ряда нулей и единиц, называется объектным кодом команды. Для лучшего восприятия команды используется ее символическое обозначение или мнемокод.

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

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

Способы уменьшения формата команды. Рас смотрим гипотетическую ситуацию. Допустим, что в формате команды:

  • поле кода операций (КО) занимает 4 разряда, что позволяет закодировать 24 = 16 операций;
  • под адреса двух операндов-источников, адрес места расположения результата, адрес следующей команды выделены поля AO1, А02, АР, АСК (рис. 5.20) по 12 разрядов, что позволяет в каждом случае адресовать 212 = 4К ячеек памяти.

Рис. 5.20.

Как видно из рис. 5.20, несмотря на скромные возможности команды, ее общая длина составляет достаточно большое число (52) бит. Для сокращения количества разрядов команды часть информации должна быть задана неявно и не должна зависеть от особенностей конкретной команды.

Наиболее употребительными являются следующие способы сокращения длины кода команды:

  • использование специально предусмотренных для адресации регистров : программного счетчика, указателя стека и др. Например, при выполнении команд с последовательно возрастающими адресами программный счетчик автоматически считывает из памяти следующую команду. В этом случае в формате команды отсутствует поле адреса следующей команды;
  • использование неявных способов адресации. Например, при использовании неявной регистровой адресации адрес следующей команды или операнда хранится в регистре, код которого содержит значительно меньшее число разрядов, чем код исполнительного адреса;
  • совмещение источника одного из операндов с приемником результата. В этом случае в формате команды исключается поле адреса результата;
  • использование команд с укороченной адресацией , т.е. части адресного пространства памяти;
  • использование для некоторой группы операции одного регистра. Наиболее часто для этой цели используется аккумулятор. В операциях с аккумулятором не требуется его кодировка. Например, команда ADD В выполняет операцию сложения содержимого регистра В с аккумулятором А и в него же помещает результат. Такая команда является одноадресной. Ее формат состоит из двух полей: кода операции и адреса операнда. Однако одноадресные команды требуют дополнительных команд для предварительной загрузки операндов в аккумулятор и последующего размещения результатов в памяти;
  • использование нескольких аккумуляторов (Motorola 6800, National РАСЕ, Signetic 2650). В этом случае каждая команда имеет два адреса, однако адрес источника и места назначения может быть задан другим аккумулятором.

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

  • засылку команд (первого байта) в регистр команд с дальнейшей их дешифрацией для активизации устройства управления;
  • поступление данных (последующих байт) в аккумулятор или другие регистры для обработки в АЛ У.

Форматы команд 8-разрядного процессора. Длина команды составляет от 1 до 3 байт. Код операции всегда размещается в первом байте команды. Второй и третий байты отводятся под непосредственные данные, адрес порта или ячейки памяти. В командах допускается явное задание только одного адреса памяти. Поэтому система команд процессора относится к классу одноадресных команд.

Форматы команд процессора 8086 изображены на рис. 5.21, где обозначено: ОРС (Operation Code) – код операции; X – биты кода

Рис. 5.21.

операции; dst, src – указатели приемника и источника данных; port – адрес порта; data – данные; addr – адрес памяти; LB, НВ – младший и старший байты.

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

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

Несмотря на отдельные отличия, системы машинных команд имеют много общего. Любая ЭВМ обязательно содержит следующие группы команд обработки информации.

1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.

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

3. Логические операции , позволяющие компьютеру производить анализ получаемой информации. После выполнения такой команды, с помощью условного перехода ЭВМ способна выбрать дальнейший ход выполнения программы. Простейшими примерами команд рассматриваемой группы могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того, к ним часто добавляется анализ отдельных битов кода, их сброс и установка.

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

5. Команды ввода и вывода информации для обмена с внешними устройствами.

6. Команды управления , к которым прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: любой цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят операции по управлению процессором; с ростом сложности устройства процессора количество такого рода команд увеличивается.

По степени сложности команд и их ассортименту процессоры разделяют на две группы - RISC и CISC (см. “Процессор ”).

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

Любая команда ЭВМ обычно состоит из двух частей - операционной и адресной. Операционная часть (иначе она еще называется кодом операции - КОП) указывает, какое действие необходимо выполнить с информацией . Адресная часть описывает, где используемая информация хранится и куда поместить результат .

Команды могут быть одно-, двух- и трехадресные в зависимости от количества возможных операндов. Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес А3. Для реализации этого сложения на одноадресной машине потребуется выполнить не одну, а три команды:

a) извлечь содержимое ячейки А1 в сумматор;

b) сложить сумматор с числом из А2;

c) записать результат из сумматора в А3.

Может показаться, что одноадресной машине для решения любой задачи потребуется втрое больше команд, чем трехадресной. На самом деле это далеко не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения Y = (X 1 + X 2) * X 3/X 4 и вы с удивлением обнаружите, что потребуется 3 трехадресных команды и всего 5 одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, т.к. она не производит ненужной записи в память промежуточных результатов.

Ради полноты изложения следует сказать о возможности реализации безадресной (нульадресной) машины, использующей особый способ организации памяти - стек. Хотя подобная машина неудобна для человека, она легко реализуется в компьютере; в частности, именно так устроена JAVA-машина.

Чтобы получить хотя бы некоторое представление об уровне машинных команд, приведем примеры нескольких типичных инструкций для процессоров семейства Intel.

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

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

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

Эксперименты показывают 5 , что для процессоров типа Pentium и ниже простые инструкции (пересылки, сложение регистров и т.п.) выполняются примерно за один такт. Таким образом, тактовая частота вполне может служить приблизительной оценкой количества таких операций, выполняемых за 1 секунду. Для более поздних моделей картина существенно “размывается” из-за сложных методов одновременного выполнения нескольких операций.

Курс информатики основной школы

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

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

Курс информатики в старших классах

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

Принципы исполнения программы в машинных командах можно также изучать с помощью известного по методической литературе приема - учебной модели ЭВМ, такой, как “Кроха”, “Нейман”, “Малютка”, и др. 6 . Достоинство такого подхода заключается в том, что учебная модель компьютера, отражая его наиболее важные черты, в то же время устроена наиболее просто и не содержит “отвлекающих” внимание учеников второстепенных деталей. На базе учебного компьютера можно продемонстрировать ученикам следующие вопросы: программный принцип работы ЭВМ, система команд, хранение данных в ОЗУ - и некоторые другие. При наличии соответствующего учебного ПО (его можно взять, например, с указанного выше сайта) можно даже продемонстрировать ученикам на базе изучаемой модели, что такое языки ассемблер и Паскаль.

5 См., например, эксперименты 3.6.2 в: Еремин Е.А. Популярные лекции об устройстве компьютера. СПб.: BHV-Петербург, 2003, 272 с.

6 Подробному описанию учебных моделей посвящен сайт http://educomp.runnet.ru/ .

Похожие публикации