Sibprompost.ru

Стройка и ремонт
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Цикл выполнения команды

Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

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

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды. Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды. Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов. Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды. АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память. Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

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

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

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

Для чего увеличивается длина счетчика команд

Адресация информации. Способы адресации

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

Команда – это описание элементарной операции, которую должен выполнить компьютер.

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

В зависимости от количества операндов команды бывают одно-, двух-, трех- и переменно-адресные.

Команды хранятся в ячейках памяти в двоичном коде.

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

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

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

· одноадресная команда add x (содержимое ячейки x сложить с содержимым сумматора, а результат оставить в сумматоре)

· двухадресная команда add x, y (сложить содержимое ячеек x и y, а результат поместить в ячейку y)

· трехадресная команда add x, y, z (содержимое ячейки x сложить с содержимым ячейки y, сумму поместить в ячейку z)

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

· из ячейки памяти, адрес которой хранится в счетчике команд, выбирают очередную команду; содержимое счетчика команд при этом увеличивается на длину команды;

· выбранную команду передают в устройство управления на регистр команд;

· устройство управления расшифровывает адресное поле команды;

· по сигналам УУ операнды считываются из памяти и записываются в АЛУ на специальные регистры операндов;

· УУ расшифровывает код операции и выдает в АЛУ сигнал выполнить соответствующую операцию над данными;

· результат операции либо остается в процессоре, либо отправляется в память, если в команде был указан адрес результата;

· все предыдущие этапы повторяют до достижения команды «стоп».

Важным вопросом построения любой системы команд является оптимальное кодирование команд, что отражается на размере полей кода операции, на размере и количестве полей адресной части, т. е. форматах команд. Последние определяются методами адресации, количеством операндов, предполагаемым объемом ОЗУ, количеством регистров общего назначения (РОН), а также сложностью аппаратуры, необходимой для декодирования. Поэтому в современных RISC-процессорах, в отличие от CISC-процессоров, используют простые методы адресации, позволяющие резко упростить декодирование команд.

Читайте так же:
Веб камера с счетчиком

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

Адресоваться могут не только операнды, но и те места в памяти, куда они или результаты операции будут записываться. При адресации ОЗУ существуют понятия логического и физического адреса.

Логическим адресом оперирует программа, которая не привязана к определенным адресам ОЗУ и может располагаться в любом месте.

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

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

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

Неявная адресация. Местоположение операнда предопределено кодом операции. Обычно операнд находится в специальном регистре процессора, например в регистре-аккумуляторе или в вершине стека.

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

Страничная адресация . Физический адрес ячейки ОП формируется из двух полей: номера страницы (старшие разряды адреса )и номера ячейки в странице (младшие разряды адреса). Номер страницы определяется содержимым регистра, номер которого указывают в адресном поле команды. Номер ячейки в пределах

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

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

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

Косвенная регистровая адресация . Указатель адреса операнда хранится не в ОП, а в регистре процессора, номер которого указывают в адресной части команды. Поскольку время обращения к регистрам процессора обычно в 5–…10 раз меньше, чем к ячейкам ОП, то время выборки операнда увеличивается незначительно – на 10–…20 %. Достоинствами косвенной адресации являются возможность обработки адреса операнда, уменьшение длины адресной части команды при косвенной регистровой адресации, так как адрес регистра значительно короче адреса ячейки памяти.

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

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

Для чего увеличивается длина счетчика команд

Основные характеристики вычислительной машины.

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

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

Читайте так же:
Счетчик импульсов за минуту

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

Арифметико-логическое устройство (АЛУ) — обеспечивает арифметическую и логическую обработку двух входных переменных, в результате которой формируется выходная переменная. Функции АЛУ обычно сводятся к простым логическим и арифметическим операциям, а также операциям сдвига. Помимо результатов операции АЛУ формирует ряд признаков результата (флагов), характеризующих полученный результат и события, произошедшие в процессе его получения (равенство нулю, чётность, перенос, переполнение, знак и т.д.). Флаги могут анализироваться в УУ для принятия решения о дальнейшей последовательности выполнения команд программы.УУ и АЛУ тесно взаимосвязаны и их обычно рассматривают как единое устройство, известное как центральный процессор (ЦП). Помимо УУ и АЛУ в процессор входит также набор регистров общего назначения (РОН), служащих для промежуточного хранения информации в процессе её обработки.

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

Узлы устройства управления.

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

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

Регистр команды (РК). Счетчик команд определяет адрес команды, выбираемый из памяти на РК. В РК команда хранится в течение всего времени её выполнения. Так как любая команда содержит два поля, то РК иногда рассматривают как совокупность двух регистров — регистра кода операций (РКоп) и регистра адреса (РА). Если команда занимает более одной ячейки памяти (несколько последовательных байтов), то код операции всегда находится в первом слове команды. По коду операции определяется необходимость считывания из памяти и загрузки в РК остальных слов команды. Выполнение команды начинается только после занесения в РК её полного кода.

Указатель стека (УС). Это регистр, где хранится адрес вершины стека. В реальных вычислительных машинах стек реализуется в виде участка основной памяти, обычно расположенной в области наибольших адресов. Заполнение стека происходит в сторону уменьшения адресов, при этом вершина стека – это ячейка, куда была произведена последняя по времени запись. При выполнении операции push (занесение в стек) содержимое УС сначала уменьшается на единицу, после чего используется в качестве адреса, по которому производится запись. Соответствующая ячейка становится вершиной стека. Считывание из стека (операция pop) происходит из ячейки, на которую указывает текущий адрес УС, после чего содержимое указателя стека увеличивается на единицу. Вершина стека опускается, а считанное слово считается удалённым из стека (физически считанное слово осталось в ячейке памяти).

Регистр адреса памяти (РАП) предназначен для хранения адреса ячейки основной памяти вплоть до завершения операции (считывания или записи) с этой ячейкой. Наличие РАП позволяет компенсировать различия в быстродействии ОП и прочих устройств машины.

Регистр данных памяти (РДП) призван компенсировать разницу в быстродействии ОП и устройств, являющихся источником или потребителем хранимой информации. При чтении в РДП заносится содержимое ячейки основной памяти, при записи – помещается информация, которую следует сохранить в ячейки основной памяти. Момент считывания из ячейки определяется сигналом ЧтЗУ, момент записи — сигналом ЗпЗУ.

Дешифратор кода операции (ДКоп) преобразует код операции в форму, требуемую для работы микропрограммного автомата (МПА). Информация после декодирования (унитарный код УнитК) определяет последующие действия МПА, её вид зависит от организации МПА.

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

Читайте так же:
Счетчик посетителей rstat easy инструкция

Узлы арифметического логического устройства

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

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

Регистры операндов РХ и РУ обеспечивают сохранение операндов на входе операционного блока вплоть до получения результата операции и его записи (в аккумулятор).

Регистр признаков (РПрз) предназначен для фиксации и хранения признаков результата последней выполненной команды (флагов). Такие признаки информируют о равенстве результата нулю, о знаке результата, о возникновении переноса из старшего разряда, переполнении разрядной сетки и т.д. Содержимое РПрз обычно используется УУ для реализации условных переходов по результатам операций АЛУ. Для каждого признака отводится отдельный разряд в РПрз.

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

Основная память

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

Модуль ввода/вывода

Задачей модуля ввода/вывода (МВВ) является обеспечение подключения к ВМ различных периферийных устройств (ПУ) и обмена информацией с ними. На нашей схеме МВВ состоит из дешифратора порта ввода/вывода, множества портов ввода и множества портов вывода.

Периферийное устройство (ПУ) – это устройство, которое конструктивно отделено от центральной части и имеет собственное управление, выполняет запросы микропроцессора без его непосредственного вмешательства.

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

Дешифратор номера порта ввода/вывода обеспечивает преобразование номера порта в сигнал, разрешающий операцию ввода или вывода на соответствующем порте. Непосредственно ввод (вывод) происходит при поступлении из МПА сигнала Вв или Выв.

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

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

И какова длина каждого из этих регистров?

2 ответа

  • MIPS Регистр Команд

Если битовый шаблон 0x0C000000 помещен в регистр команд, то какая команда MIPS будет выполнена? Я не уверен, что этот вопрос означает регистр команд и как он относится к битовому шаблону.

Я изучаю assembly 8086 и понимаю, что assembly программ часто используют регистры, как это возможно, что 2 assembly программ, работающих в одно и то же время, могут использовать один и тот же регистр, не прерывая друг друга. Я подумал, что, возможно, a PC может иметь наборы регистров, например 100.

Вам всегда понадобится и то, и другое. Счетчик программ (PC) содержит адрес следующей инструкции, которая должна быть выполнена, в то время как регистр команд (IR) содержит закодированную инструкцию. При извлечении инструкции счетчик программы увеличивается на единицу «address value» (до местоположения следующей инструкции). Затем инструкция декодируется и выполняется соответствующим образом.

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

[Начало выполнения программы]

  1. PC содержит 0x00000000 (скажем, это начальный адрес программы в памяти)
  2. Закодированная инструкция извлекается из памяти и помещается в PC.
  3. Инструкция декодируется и выполняется.
  4. Теперь пришло время перейти к следующей инструкции, поэтому мы возвращаемся к PC, чтобы посмотреть, каков адрес следующей инструкции. Однако у нас есть проблема, потому что предыдущий адрес PC был удален, поэтому мы понятия не имеем, где находится следующая инструкция.

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

Читайте так же:
Счетчик цэ 6807 гост

P.S. ширина регистров варьируется в зависимости от размера слова архитектуры. Например, для 32-разрядного процессора размер слова равен 32 битам. Следовательно, регистры на CPU будут иметь be 32 бит. Регистры команд ничем не отличаются по размерам. Разница заключается в поведении и интерпретации. Инструкции кодируются в различных формах, однако они по-прежнему занимают 32-разрядный регистр. Например, процессор Nios II от Altera содержит 3 различных типа команд, каждый из которых закодирован по-разному. См. страницу 6 из ftp://ftp.altera.com/up/pub/Tutorials/DE2/Computer_Organization/tut_nios2_introduction.pdf

Вы также можете узнать больше о структуре процессора Nios II по ссылке выше. Это простой IP CPU. Конечно, у Intel есть свои собственные спецификации/дизайн, и они будут отличаться.

Как вы уже сказали, Счетчик программ (PC) содержит адрес следующей инструкции для выполнения, а регистр команд (IR) хранит фактическую инструкцию для выполнения (но не ее адрес).

В зависимости от длины этих регистров текущие машины имеют 64-bit PCs. Длина IR (с логической точки зрения) зависит от архитектуры:

  • RISC машины обычно имеют инструкции фиксированной длины. Например, большинство инструкций SPARC кодируются в 32-разрядных форматах.
  • CISC машины (Intel, AMD) имеют инструкции переменной длины. Например, см. Руководства для разработчиков программного обеспечения Intel® 64 и IA-32 Architectures

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

  • Разница между счетчиком программ и Регистром ссылок?

У меня есть этот вопрос, специфичный для архитектуры arm. Я видел в наборе регистров ARM, что у нас есть регистр ссылок (r14) и счетчик программ (r15). Во время переключения контекста регистр связи получает адрес значения счетчика программы последней выполненной функции. но контекстный.

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

Похожие вопросы:

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

Чем отличаются друг от друга регистр адресов памяти(MAR) и счетчик программ(PC)?

Я работаю с HCS08 CPU (используется в Freescale MCUs) и не могу понять инструкцию ветвления. Вот инструкция . Счетчик программ в этой архитектуре указывает на следующую команду, которая должна быть.

Если битовый шаблон 0x0C000000 помещен в регистр команд, то какая команда MIPS будет выполнена? Я не уверен, что этот вопрос означает регистр команд и как он относится к битовому шаблону.

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

У меня есть этот вопрос, специфичный для архитектуры arm. Я видел в наборе регистров ARM, что у нас есть регистр ссылок (r14) и счетчик программ (r15). Во время переключения контекста регистр связи.

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

Я столкнулся со следующей проблемой на предыдущем экзамене из моего класса операционных систем. Рассмотрим архитектуру, в которой инструкция TRAP имеет два эффекта: загрузка предопределенного.

Я пытаюсь отладить segfault в Демоне surfaceflinger Android на изготовленной на заказ плате ARM. Процесс завершается сбоем перед сбросом стека вызовов и регистрационного содержимого, включая счетчик.

Можно ли просмотреть текущий счетчик программ и регистр команд в gdb? Вот вывод базовой программы C (добавьте int и верните его) в gdb на ubuntu14: Я думал, что увижу что-то вроде pc или ir , но.

Для чего увеличивается длина счетчика команд

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

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

Главным элементом кода команды является код операции (КОП), что определяет, какие действия будут выполнены по данной команде. Под него выделяется N старших разрядов формата. В остальных разрядах размещаются А1 и А2 v адреса операндов. А3 — адрес результата.

Распределение полей в формате команды может изменяться при смене способа адресации. Длина команды зависит от числа адресных полей. По числу адресов команды делятся на:

безадресные
одно-, двух-, трехадресные

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

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

По функциональному назначению в системе команд ЭВМ различают следующие группы:

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

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

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

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

Существуют 2 различных принципа поисков операндов в памяти: ассоциативный и адресный.

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

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

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

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

Способы адресации классифицируют:

по наличию адресной информации в команде (явная и неявная адресация).

по кратности обращения в оперативную память.

по способу формирования адресов ячеек памяти.

При явной адресации операнда в команде есть поле адреса этого операнда.

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

По кратности обращения в оперативную память различают:

непосредственную адресацию (direct addressing)

прямую адресацию (immediate addressing)

косвенную адресацию (indirect addressing)

Непосредственная адресация

При непосредственной адресации операнд располагается непосредственно в адресном поле команды.

Прямая адресация

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

Косвенная адресация

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

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

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

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

Б v код базы,
И v код индекса,
С v код смещения.

Эти составляющие используются в различных сочетаниях.

Относительная адресация

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

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

Адрес i-того операнда в массиве определяется как сумма начального адреса массива операнда, задаваемого смещением S, и индекса I , записанного в одном из регистров регистровой памяти, называемым индексным регистром.

Адрес индексного регистра задается в команде полем адреса индекса Аи.

В каждом i-том цикле содержимое индексного регистра изменяется на постоянную величину, как правило, это 1.

В некоторых моделях ЭВМ относительная адресация выполняется без суммирования по следующей схеме:

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

Стековая память широко используется в современных ЭВМ. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления:

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

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

Запись в стек производится с использованием автодекрементной адресации, а чтение — с использованием автоинкрементной адресации.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector