Какие специализированные команды входят в состав системы команд процессоров цос

Обновлено: 06.07.2024

Заказать трехфазный двигатель в Новосибирске с доставкой по городу.

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

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

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

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

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

Примечание!

  1. Собственно синтаксис Ассемблера, мнемоники команд процессора и способов адресации.
  2. Управление процессом трансляции (директивы Ассемблера), позволяющее программисту получить программу с нужными свойствами, например, задать требуемое расположение частей программы в памяти и т.п.
  3. Изучение набора и свойств сервисов используемой операционной системы (стандартных подпрограмм ОС, доступных прикладному программисту).

Для облегчения понимания кратко опишем основные правила записи команд на Ассемблере (они справедливы для многих известных автору Ассемблеров).

1) Как правило, ассемблерная строка однозначно соответствует одной процессорной команде.
2) Команда языка Ассемблера имеет следующую структуру:

Меткаl: КОП Оп1,Оп2,… ;Комментарий

Вот пример команды на языке ассемблера

Пояснение: Данный оператор содержит команду пересылки, которая загружает константу 12A9h в регистр процессора r1. Константа задана программистом в виде шестнадцатиричного числа.

Оператор включает в свой состав следующие поля:

  • Метка — это символическое обозначение адреса. В мнемонике команды, приведенной выше, метка обозначает адрес, начиная с которого байты данной команды будут расположены в ОЗУ после загрузки программы в память. Имя метки часто используется как операнд в командах переходов. (Замечание 1: метки могут обозначать любой адрес, в том числе и тот, с которого расположен операнд. Замечание 2: конкретное значение физического адреса, соответствующего метке будет определено только после загрузки оттранслированной программы в память. При разных запусках этот физический адрес может получиться различным, если программист не принимает специальных мер по заданию определенного значения для этого адреса.).
  • КОП — мнемоническое обозначение кода операции, выполняемой данной командой, например mov — переслать
  • Оп1, Оп2,… — символические обозначения операндов, обычно они разделяются запятыми (хотя в некоторых Ассемблерах для разделения операндов используется пробел). Количество операндов в команде может быть различным, в большинстве современных процессоров — от 0 до 3. Если операндов больше, чем один, некоторые из них являются "источниками", а некоторые другие — "приемниками". Например, команда сложения

содержит указания на два операнда-приемника (слагаемые) — op1 и op2, а также указание на элемент данных (sum), куда команде следует поместить результат.

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

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

  • Комментарий позволяет программисту записать пояснение к строке, и, как правило, игнорируется транслятором.

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

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

Команды пересылки

Пересылки общего назначения

Пересылки общего назначения MOV, L**, LD*, LOD* (от Load — загрузить), ST* (от Store — сохранить). Передают слово/байт данных из одной части ЭВМ в другую без изменения. Иногда в эту группу включают также и команды ввода-вывода для ЭВМ у которых область адресов внешних устройств включена в общее адресное пространство.

Пересылки из/в стек

Пересылки из/в стек: PUSH (втолкнуть), POP (вынуть). Обычно отличаются тем, что используют стековую адресацию (задаваемую неявно.

Пересылки двоичных слов

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

Пересылки между элементами вычислительного ядра

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

Команды обработки

Арифметические команды

Минимальный набор арифметических команд очень мал. Это (например):

  • сложение — ADD;
  • инвертирование — COM / NOT (такая ЭВМ действительно была: PDP-8 (DEC));
  • прибавление "единицы" — INC.

Все остальное можно сделать, комбинируя эти команды.

Однако в современном микропроцессоре арифметических команд обычно больше:

  • SUB — вычитание;
  • CMP — сравнение операндов. Эта команда выполняет вычитание операндов, по результату изменяет флаги, после чего результат теряется (команда предназначена для проверки условий);
  • NEG — смена знака операнда;
  • ASR, ASL, SAR, SAL — арифметические сдвиги операнда (Arithmetic Shift to Right/Left);
  • INC, DEC — увеличение или уменьшение операнда на 1;
  • ADC, SBC/SBB - операции с переносом C (carry-bit) — для выполнения действий с повышенной точностью, когда операнд занимает несколько слов;
  • SXT, SEX, CBW, CWD, CDQ — расширение знака (преобразование в формат с повышенной разрядностью);
  • MUL, DIV — умножение и деление беззнаковых и знаковых чисел.
  • Набор операций с плавающей точкой, включающий обычно значительное количество команд (несколько десятков), в которые часто входят команды вычисления элементарных функций — Sin, Cos, Log, Exp и т.п.

Логические команды

Логические команды — это команды побитовой обработки.

  • OR — поразрядное логическое сложение. Фактически это команда побитовой установки (т.е. записи "единицы" в заданные биты операнда). Пример:
    or opr, 0Ch ;Установка в 1 битов в позициях 2 и 3 в операнде al

Если исходно в al содержался, например, операнд 1101 10012, то после выполнения команды в al будет содержаться: 1101 11 01 (отмечены установленные биты). Второй операнд — обычно константа, задавая которую, программист указывает, какие биты следует установить (он на жаргоне программистов носит название "маска").

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

  • AND — поразрядное логическое умножение. Это команда побитового сброса (записи в заданные биты "нулей"). Пример:
    and bh, 0Fh ;Сброс старшей тетрады (старшего ниббла) в байтовом операнде.

Если, например, исходно в регистре bh содержался операнд 1101 10012, то после выполнения команды в регистре bh будет содержаться 0000 10012 (отмечены очищенные биты). Действие команды AND можно описать следующим образом: команда безусловно сбрасывает в 0 биты в тех позициях первого операнда, которые отмечены "нулями" в маске, оставляя прочие биты первого операнда неизменными.

  • XOR — поразрядное исключающее ИЛИ, eXclusive OR (иногда на русском эту операцию называют "ЛИБО"). Эта двухоперандная команда фактически выполняет выборочное инвертирование битов. Например:
    xor cl,0F0h ;Инвертирование битов старшей тетрады

Если исходно в cl содержалось 1101 10012, то после выполнения команды в cl будет содержаться 0010 10012 (отмечены проинвертированные биты). Действие команды xor можно описать так: команда инвертирует в первом операнде биты в позициях, которые отмечены в маске "единицами", оставляя прочие биты неизменными.

  • TEST — проверка битовых полей. Команда чаще всего двухоперандная, выполняет поразрядное логическое умножение операндов и по результату операции изменяет состояние флагов "нуля" zf и "знака" sf, после чего результат операции теряется.
  • NOT, COM — инвертирование операнда (замена значения каждого бита на противоположное). Это однооперандная команда.

Сдвиги

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

  1. ROR, ROL, RCR, RCL — циклические сдвиги. При циклическом сдвиге то, что выходит за границу разрядной сетки, помещается в освобождающуюся позицию на другом конце операнда.
  2. ASR, ASL/SAR, SAL — арифметические сдвиги. Эта разновидность сдвига осуществляется таким образом, что результат оказывается эквивалентен умножению (при сдвиге влево) или делению (при сдвиге вправо) операнда на основание системы счисления, т.е. на 2. Сравните: если "сдвинуть" цифры в десятичном числе на разряд влево, результат будет эквивалентен исходному числу, умноженному на 10 (12 и 120 после сдвига). Более подробно особенности арифметического сдвига обсуждаются при рассмотрении системы команд процессоров х86.
  3. SHL, SHR — логические сдвиги. При выполнении логических сдвигов биты, "выдвигаемые" из разрядной сетки, теряются, а противоположный конец операнда заполняется "нулями".

Каждая из упомянутых разновидностей может также иметь варианты.

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

Проверки и передача управления

Эти команды позволяют реализовать конструкции:

IF . THEN . ELSE
REPEAT . UNTIL
WHILE . DO
FOR . DO
GOTO .

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

  • равенство нулю;
  • знак;
  • перенос;
  • арифметическое переполнение;
  • перенос между тетрадами и др.

Команды проверки

  • TEST — проверка отдельных битов (логическим умножением).
  • CMP — сравнение операндов.

Кроме того, признаки устанавливаются после выполнения многих команд. Обратите внимание на то, что нет единых правил поведения признаков. (В процессорах фирмы Motorola при пересылке флаги "нуля" и "знака" изменяются, а в процессорах Intel — нет).

Команды ветвления по условию

B** / J*** от слов ( branch / jump). Их может быть 10. 30 штук. (например, BNE — переход, если не равно 0). Набор команд ветвления обсуждается при рассмотрении системы команд процессоров х86.

Адресация в командах ветвления может быть разного типа:

  • а) полный адрес перехода;
  • б) относительная (смещение);
  • в) пропуск команды.

Но чаще всего — короткая относительная. Короткая, потому что участки, которые надо обходить, имеют не очень большую длину. Если необходимо перейти далеко, то надо комбинировать условный переход с безусловным JMP.

Команда безусловной передачи управления

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

Команда организации цикла

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

LOOP*

Команда обращения к подпрограмме (вызов процедуры)

JSR, JMS, CALL

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

При обращении / возврате надо обеспечить:

  • а) передачу управления в любое место памяти, поэтому "длинная" адресация;
  • б) возврат в то место, откуда был вызов (т.е. место вызова должно автоматически запоминаться);
  • в) запоминание промежуточных результатов, имеющихся к моменту вызова (содержимое регистров процессора, а, при рекурсивном вызове, процедуры, — надо запоминать и промежуточные результаты работы самой процедуры). Для запоминания чаще всего используется стек (участок ОЗУ или специальное ОЗУ со стековой адресацией). Часть вышеперечисленной информации запоминается автоматически при выполнении команды CALL, а сохранение оставшегося — дело программиста.

Команды ввода — вывода (обмена с периферийными устройствами)

Фактически команды ввода-вывода — это тоже команды пересылки. Основное отличие между пересылками "регистр-память" и пересылками из/в периферийное устройство ПУ состоит в том, что скорость функционирования ПУ может существенно отличаться от скорости работы процессора и поэтому ПУ далеко не всегда бывает готово к обмену.

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

Варианты структуры взаимодействия процессора и УВВ:

  • а) УВВ имеют свою систему нумерации (адресации), и в системе команд есть отдельные команды I/O, (как в IBM PC):
    •IN — команда ввода из ВНУ;
    •OUT — команда вывода на ВНУ.

В этом случае в формате команды УВВ предусматривается своя система адресации.

  • б) Обращение к УВВ такое же, как к памяти, часть адресов использована для ВНУ (ввод / вывод, отображенный на память).

Достоинства: можно использовать для обмена с ВНУ всю систему команд, в том числе, команды обработки, что сокращает программу.

Система команд - это набор допустимых для данного процессора управляющих кодов и способов адресации данных. Система команд жестко связана с конкретным типом процессора, поскольку определяется аппаратной структурой блока дешифрации команд, и обычно не обладает переносимостью на другие типы процессоров (хотя может иметь место совместимость “снизу-вверх” в рамках серии процессоров, как, например, в серии i 80 x 86 ).

Типовая структура формата команды:

1.КОП - код операции - двоичный код, однозначно указывающий процессору на выполнение конкретных действий (пересылка, сложение и т.п.), и определяющий при этом форму задания адресов операндов; 1 или 2 байта;

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

Индексная (автоинкрементная и автодекрементная ) адресация. Её назначение.

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


Рисунок. Формирование адреса операнда при индексной адресации.

Три вида индексных операции:

а) засылка в индексный регистр начального значения

б) изменение индекса

в) проверка окончания циклических вычислений.

Часто в команду с индексной адресацией включают признак, определяющий шаг индексации Т (Т=1,2,4 и т.д.), что позволяет осуществлять адресацию массивов через байт, слово, двойное слово и т.д.

В современных процессорах (например в Intel 80386 и выше) применяют все возможные сочетания из базового адреса, индексного адреса, относительного адреса и шага.

В систему команд традиционно входят такие группы:

· пересылка данных (регистр-регистр, регистр-память, память-регистр, специфические команды типа память-память);все команды пересылки выполняют, по сути, копирование данных из ячейки-источника в ячейку-приемник;

· логические операции ( and , or , xor , not ) и операции сдвига;

· ввод-вывод – специфические команды для передачи данных между процессором и устройствами ввода-вывода, размещенными в адресном пространстве ввода-вывода;

· передача управления – при выполнении такой команды процессор записывает в счетчик команд PC адрес следующей команды, взятый из адресной части текущей команды;

· специальные – останов, сброс, управление прерываниями, управление режимом пониженного энергопотребления и т.п.

Основные группы команд МП.

По характеру операций различают следующие группы команд:

a) команда арифметических операций для чисел с ПТ и ФТ.

b) команда десятичной арифметики.

c) команда логических операций.

d) команда передачи кодов.

e) команда операций ввода/вывода.

f) команда управления порядком исполнения команд (передача управления).

g) команда управления режимом работы.

Рассмотрим особенности некоторых групп команд.

Команды передачи управления

Для определения адреса текущей команды МП имеет в своем составе специальный регистр указатель адреса команды или счетчик команд PC , IP .

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

n команды перехода

n команды замещения

n команды смены состояния процессора

n команды запроса прерывания

1. команды перехода.

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

Используются команды безусловного и условного переходов.

1.1 Команды безусловного перехода


Переход может осуществляться и переход по косвенному адресу

На косвенную адресацию указывает либо КОП , либо специальный бит в поле команды

1.2 Команды условного перехода

Адрес следующей команды зависит от выполнения некоторого условия :


М- код признака ( маска условия )

Команды могут быть с относительной и косвенной адресацией.


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

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


Команда замещения - вместо очередной команды используется замещающая команда, находящаяся по адресу, указанному в команде “выполнить”. Выполнение этой замещающей команды не должно приводить к изменению РС. После исполнения этой команды продолжается естественный ход программы (это не JMP).

Команда “выполнение” - аналог подпрограммы, состоящей из одной команды без сохранения адреса возврата.

Проектирование системы команд оказывает влияние на структуру ЭВМ. Оптимальную систему команд иногда определяют как совокупность команд, которая удовлетворяет требованиям проблемно-ориентированных применений таким образом, что избыточность аппаратных и аппаратно-программных средств на реализацию редко используемых команд оказывается минимальной. В различных программах ЭВМ частота появления команд различна; например, по данным фирмы DEC в программах для ЭВМ семейства PDP-11 наиболее часто встречается команда передачи MOV(B), на ее долю приходится приблизительно 32% всех команд в типичных программах. Систему команд следует выбирать таким образом, чтобы затраты на редко используемые команды были минимальными.

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

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

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

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

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

Рис. 2.4. Классификация команд.

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

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

Ниже приведен формат двухадресной (двухоперандной) команды процессоров СМ.

Формат команд процессоров СМ:
а) двухадресная команда;
б) одноадресная команда.

Четырехбитный КОП (биты 15-12) кодирует ряд двухоперандных операций, приведенных в таблице 1. Биты (11-6) и (5-0) для команд данного типа определяют адреса источника и приемника данных. Как видно из таблицы, комбинации 0000 и 1000 поля КОП определяют группы одноадресных команд (рис 1,б). КОП 1 (биты 15-12), соответствующий кодам 0000 и 1000, определяет группу одноадресных команд, а КОП 2 (биты 11-6) кодирует конкретную операцию команд данной группы. Таким образом, команды, использующие один операнд, кодируются 10-битным КОП (биты 15-6).

Наиболее гибкая команда требует до четырех операндов. Например, команда сложения может указывать адреса слагаемых, адрес результата и адрес следующей команды. Если для задания адреса требуется 16 бит, то четырехоперандная команда займет 8 байт памяти, не учитывая код операции. Следовательно, получится медленнодействующая ЭВМ с огромной памятью. Поэтому в большинстве микроЭВМ любой команде требуется не более двух операндов. Это достигается следующими приемами:
1. Адрес следующей команды указывается только в командах переходов; в остальных случаях очередная команда выбирается из ячеек памяти, следующих за выполненной командой.
2. Использование ячейки, в которой находится один из операндов, для запоминания результата (например, сумма запоминается в ячейки первого операнда).

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

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

Микропроцессор выполняет программу, которая представляет собой последовательность команд. Каждая команда – это определенное действие, которое выполняет арифметико-логическое устройство.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Внутри АЛУ находятся блоки, каждый из которых может выполнять

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

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Данные, с которыми работает АЛУ – операнды и результат – хранятся в одном из блоков

памяти. Работа с памятью – также функция АЛУ. Скорость обмена данными с внешними блоками памяти очень низкая по сравнению со скоростью работы АЛУ. Поэтому внутри МП предусмотрены ячейки памяти – регистры общего назначения, скорость чтения и записи в которые совпадает со скоростью работы АЛУ. В качестве операндов обычно может использовать только данные, которые хранятся во внутренних регистрах МК общего назначения. Результат также будет помещен в один из этих регистров. В команде обычно указано, из какого регистра берутся входные операнды и в какой регистр должен быть записан результат. Для работы с данными АЛУ сначала копирует данные из памяти в регистры, для чего предусмотрены отдельные команды.Все данные, необходимые для работы в ближайшее время, должны быть скопированы из памяти в регистры. А если получен результат, который не будет использоваться в ближайшее время, он может быть скопирован в память. Этот алгоритм позволяет существенно ускорить работу процессора. Хранить все данные в регистрах невозможно, т.к. объем регистров значительно меньше объема оперативной памяти, т.к. сделать быструю память большого объёма на одном кристалле с АЛУ технологически сложно и дорого.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

По функциональному назначению команды можно разделить на четыре группы: команды

пересылки данных, арифметические команды, логические команды и команды переходов.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Группа арифметических команд реализует большинство арифметических операций –сложение, вычитание, умножение, деление, возведение в степень и другие. Операции над числами с фиксированной запятой (т.е. целыми числами) и над числами с плавающей запятой осуществляются разными командами, т.к. внутри АЛУ эти операции будут выполняться в разных блоках. Также к арифметическим командам относят команду очистка (т.е. запись нулевого значения в некоторый регистр), команды инкремента и декремента – т.е. увеличения или уменьшения значения на 1 и команда сравнения. Команда сравнения в результате выдает 0, если число отрицательно и 1, если число положительно

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост


Лига образования

1.9K пост 16.5K подписчика

Правила сообщества

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

ДЛЯ АВТОРОВ:

Приветствуются:

-уважение к читателю и открытость

Не рекомендуются:

-публикация недостоверной информации

ДЛЯ ЧИТАТЕЛЕЙ:

Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения

В этом сообществе мы все союзники - мы все хотим учиться! :)

Лучше объясни как работает предсказание ветвлений в Intelовских камушках


Битва

Битва


Золотой фонд багоделов

Если в ремастере GTA покачивать машиной из стороны в сторону, она увеличивается в размерах.

Семейные ценности

Семейные ценности


Действительно

Действительно Скриншот, Twitter, Верующие, Апокалипсис, Коронавирус, QR-код

На злобу дня

На злобу дня

Ответ на пост «Не прокатило»

Базовую систему команд микропроцессора можно условно разделить на несколько групп по функциональному назначению:

Кроме базовой системы команд микропроцессора существуют также команды расширений:

  • X87 – расширение, содержащее команды математического сопроцессора (работа с вещественными числами)
  • MMX – расширение, содержащее команды для кодирования/декодирования потоковых аудио/видео данных;
  • SSE – расширение включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных;
  • SSE2 – модификация SSE, содержит инструкции для потоковой обработки целочисленных данных, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше;
  • SSE3, SSE4 – содержат дополнительные инструкции расширения SSE.

В таблице команд приняты следующие обозначения:
r – регистр
m – ячейка памяти
c – константа
8, 16, 32 – размер в битах
На все базовые команды процессора накладываются следующие ограничения:

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

Команды передачи данных

Основной командой передачи данных является команда MOV , осуществляющая операцию присваивания:

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

Команды установки единичного бита

Проверяют условие состояния битов регистра EFLAGS и, если условие выполняется, то младший бит операнда устанавливается в 1, в противном случае в 0. Анализ битов производится аналогич­но условным перехо­дам.

Команды работы со стеком
Команды ввода-вывода
Команды целочисленной арифметики

Особого внимания среди рассмотренных команд целочисленной арифметики заслуживает команда CMP , которая вычитает второй операнд из первого и не сохраняет результат, а устанавливает биты OF, SF, ZF, AF, PF, CF регистра признаков EFLAGS в соответствии с результатом. Команда CMP чаще всего предшествует командам знакового или беззнакового условных переходов.

Логические команды

Выполнение логических операций описано здесь

Сдвиговые команды

Выполнение сдвиговых операций в языке Си рассмотрено здесь .

Команды циклического сдвига

Команды циклического сдвига выполняются в соответствии со схемой

Команды коррекции двично-десятичных чисел

Команды коррекции двоично-десятичных чисел не имеют операндов и используют операнд по умолчанию, хранящийся в регистре AX (паре регистров AH:AL ).

Команды преобразования типов

Команды преобразования типов предназначены для корректного изменения размера операнда, заданного неявно в регистре-аккумуляторе ( EAX , AX , AL ). Непосредственно после аббревиатуры команды операнд не указывается.

Команды управления флагами

Команды управления флагами предназначены для сброса или установки соответствующего бита регистра признаков EFLAGS . Команды управления флагами не имеют операндов.

Команды прерываний
Команды передачи управления

Команды обращения к процедуре (функции)

Команды поддержки языков высокого уровня

Читайте также: