Система команд процессора и способы адресации
Разнообразие типов данных, форм их представления и действий, которые необходимы для обработки информации и управления ходом вычислений, порождает необходимость использования различных команд – набора команд. Каждый процессор имеет собственный вполне определенный набор команд, называемый системой команд процессора. Система команд должна обладать двумя свойствами – функциональной полнотой и эффективностью /6/.
Функциональная полнота – это достаточность системы команд для описания любого алгоритма. Требование функциональной полноты не является слишком жестким. Доказано, что свойством функциональной полноты обладает система, включающая всего три команды (система Поста): присвоение 0, присвоение 1, проверка на 0. Однако составление программ в такой системе команд крайне неэффективно.
Эффективность системы команд – степень соответствия системы команд назначению ВМ, т. е. классу алгоритмов, для выполнения которых предназначается ВМ, а также требованиям к производительности ВМ. Очевидно, что реализация развитой системы команд связана с большими затратами оборудования и, следовательно, с высокой стоимостью процессора. В то же время ограниченный набор команд приводит к снижению производительности и повышенным требованиям к памяти для размещения программы. Даже простые и дешевые современные микропроцессоры поддерживают систему команд, содержащую несколько десятков (а с модификациями – сотен) команд.
Система команд процессора характеризуется тремя аспектами: форматами, способами адресации и типом выполняемых операций.
Под форматом команды следует понимать длину команды, количество, размер, положение, назначение и способ кодировки ее полей.
Команды, как и любая информация в ВМ, кодируются двоичными словами, которые должны содержать в себе следующие виды информации:
· тип операции, которую следует реализовать в данной команде (КОП);
· место в памяти, откуда следует взять первый операнд (А 1);
· место в памяти, откуда следует взять второй операнд (А2);
· место в памяти, куда следует поместить результат (АЗ).
Каждому из этих видов информации соответствует своя часть двоичного слова – поле, а совокупность полей (их длины, расположение в командном слове, способ кодирования информации) называется форматом команды. В свою очередь, некоторые поля команды могут делиться на подполя. Формат команды, поля которого перечислены выше, называется трехадресным (рис.2.7-а).
Команды трехадресного формата занимают много места в памяти, в то же время далеко не всегда поля адресов используются в командах эффективно. Действительно, наряду с двухместными операциями (сложение, деление, конъюнкция и др.) встречаются и одноместные (инверсия, сдвиг, инкремент и др.), для которых третий адрес не нужен. При выполнении цепочки вычислений часто результат предыдущей операции используется в качестве операнда для следующей. Более того, нередко встречаются команды, для которых операнды не определены (СТОП) или подразумеваются самим кодом операций (DАА, десятичная коррекция аккумулятора).
Поэтому в системах команд реальных ВМ трехадресные команды встречаются редко. Чаще используются двухадресные команды (рис.2.7-б), в этом случае в бинарных операциях результат помещается на место одного из операндов.
Для реализации одноадресных форматов (рис.2.7-в)в процессоре предусматривают специальную ячейку - аккумулятор. Первый операнд и результат всегда размещаются в аккумуляторе, а второй операнд адресуется полем А.
Реальная система команд обычно имеет команды нескольких форматов, причем тип формата определяется в поле КОП (рис.2.7-г).
Способ адресации определяет, каким образом следует использовать информацию, размещенную в поле адреса команды.
Существует пять основных способов адресации операндов в командах.
· Прямая – в этом случае в адресном поле располагается адрес операнда. Разновидность – прямая регистровая адресация, адресующая не ячейку памяти, а РОН. Поле адреса регистра имеет в команде значительно меньшую длину, чем поле адреса памяти.
· Непосредственная – в поле адреса команды располагается не адрес операнда, а сам операнд. Такой способ удобно использовать в командах с константами.
· Косвенная – в поле адреса команды располагается адрес ячейки памяти, в которой хранится адрес операнда («адрес адреса»). Такой способ позволяет оперировать адресами как данными, что облегчает организацию циклов, обработку массивов данных и др. Его основной недостаток – потеря времени на двойное обращение к памяти – сначала за адресом, потом – за операндом. Разновидность – косвенно-регистровая адресация, при которой в поле команды размещается адрес РОН, хранящего адрес операнда. Этот способ, помимо преимущества обычной косвенной адресации, позволяет обращаться к большой памяти с помощью коротких команд и не требует двойного обращения к памяти (обращение к регистру занимает гораздо меньше времени, чем к памяти).
· Относительная – адрес формируется как сумма двух слагаемых: базы, хранящейся в специальном регистре или в одном из РОН, и смещения, извлекаемого из поля адреса команды. Этот способ позволяет сократить длину команды (смещение может быть укороченным, правда в этом случае не вся память доступна в команде) и/или перемещать адресуемые массивы информации по памяти (изменяя базу). Разновидности – индексная и базово-индексная адресации. Индексная адресация предполагает наличие индексного регистра вместо базового. При каждом обращении содержимое индексного регистра автоматически модифицируется (обычно увеличивается или уменьшается на 1). Базово-индексная адресация формирует адрес операнда как сумму трех слагаемых: базы, индекса и смещения.
· Безадресная – поле адреса в команде отсутствует, а адрес операнда или не имеет смысла для данной команды, или подразумевается по умолчанию (рис.2.7-г). Часто безадресные команды подразумевают действия над содержимым аккумулятора. Характерно, что безадресные команды нельзя применить к другим регистрам или ячейкам памяти.
Одной из разновидностей безадресного обращения является использование т. н. магазинной памяти или стека. Имеется фиксированная ячейка, называемая верхушкой стека. При чтении слово извлекается из верхушки, а все остальное содержимое «поднимается вверх» так, что в верхушке оказывается следующее по порядку слово. Одно слово нельзя прочитать из стека дважды. При записи новое слово помещается в верхушку стека, а все остальное содержимое «опускается вниз» на одну позицию. Таким образом, слово, помещенное в стек первым, будет прочитано последним. Говорят, что стек поддерживает дисциплину LIFO – Last In First Out (последний пришел – первый ушел). Реже используется безадресная память типа очередь с дисциплиной FIFO – First In First Out (первый пришел – первый ушел).
По типам выполняемых операций команды принято делить на основных пять классов.
· Арифметико-логические и специальные – команды, в которых выполняется собственно преобразование информации. К ним относятся арифметические операции сложение, вычитание, умножение и деление (с фиксированной и плавающей занятой), команды десятичной арифметики, логические операции конъюнкции, дизъюнкции, инверсии и др., сдвиги, преобразование чисел из одной системы счисления в другую и такие экзотические, как извлечение корня, решение системы уравнений и др.
· Пересылки и загрузки – обеспечивают передачу информации между процессором и памятью или между различными уровнями памяти (Кэш память ОЗУ). Разновидность – загрузка регистров и ячеек константами.
· Ввода/вывода – обеспечивают передачу информации между процессором и внешними устройствами. По структуре они очень похожи на команды предыдущего класса. В некоторых ЭВМ принципиально отсутствует различие между ячейками памяти и регистрами внешних устройств (единое адресное пространство) и класс команд ввода/вывода не выделяется, все обмены осуществляются в рамках команд пересылки и загрузки.
· Передачи управления – команды, которые изменяют естественный порядок выполнения команд программы. Эти команды меняют содержимое программного счетчика, обеспечивая переходы по программе. Существуют команды безусловной и условной передачи управления. В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда. В качестве условий обычно используются признаки результата предыдущей операции, которые хранятся в специальном регистре признаков (флажков). Различают три разновидности команд передачи управления: переходы, вызовы и возвраты из подпрограмм.
Команды переходов помещают в программный счетчик содержимое своего адресного поля – адрес перехода. При этом старое значение программного счетчика теряется. В микропроцессорных системах часто для экономии длины адресного поля команд условных переходов адрес перехода формируется как сумма текущего значения программного счетчика и относительно короткого знакового смещения, размещаемого в команде. В крайнем случае, в командах условных переходов можно и вовсе обойтись без адресной части – при выполнении условия команда «перепрыгивает» через следующую команду, которой обычно является безусловный переход.
Команда вызова подпрограммы работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно сохраняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программный счетчик. Команды вызова и возврата работают «в паре». Подпрограмма, вызываемая командой вызова, должна заканчиваться командой возврата, что обеспечивает по окончании работы подпрограммы передачу управления в точку вызова. Хранение адресов возврата в стеке обеспечивает возможность реализации вложенных подпрограмм.
· Системные – команды, управляющие процессом обработки информации и внутренними ресурсами процессора. К таким командам относятся команды управления подсистемой прерывания, команды установки и изменения параметров защиты памяти, команда останова программы и некоторые другие. В простых процессорах класс системных команд немногочисленный, а в сложных мультипрограммных системах предусматривается большое число системных команд.
Контрольные вопросы и задания
1.Из каких основных устройств состоит процессор?
2.Какие функции выполняет устройство управления процессора?
3.Проведите сравнительный анализ устройств управления с аппаратной и программируемой логикой.
4.Какие из устройств управления обеспечивают большее быстродействие процессоров?
5.Какие из устройств управления обеспечивают реализацию большего набора команд процессора?
6.Какие функции выполняет арифметико-логическое устройство процессора?
7.Какие функции выполняет операционное устройство? Какие типы операционных устройств используются в микропроцессорах?
8.Проведите сравнительный анализ операционных устройств с жесткой и магистральной структурой.
9.Какие форматы команд применяется в микропроцессорах?
10.Назовите основные способы адресации.
11.Для каких целей используются системные команды микропроцессора?
12.Назовите достоинства и недостатки CISC и RISC процессоров.
Дата добавления: 2021-12-14; просмотров: 370;