Система команд процессора и способы адресации


Разнообразие типов данных, форм их представления и действий, которые не­обходимы для обработки информации и управления ходом вычислений, по­рождает необходимость использования различных команд – набора команд. Каждый процессор имеет собственный вполне определенный набор команд, называемый системой команд процессора. Система команд должна обладать двумя свойствами – функциональной полнотой и эффективностью /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;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.