Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Система команд ЭВМ






 

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

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

В коде команды выделяются определенные разряды (поля) для размещения сведений:

-о типе операции,

- адресов ячеек оперативной памяти, в которых хранятся обрабатываемые данные,

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

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

Примеры форматов команд приведены на рисунке 5.

Рисунок 5

Главным элементом кода команды является код операции (КОП), что определяет, какие действия будут выполнены по данной команде. Под него выделяется N старших разрядов формата.

В остальных разрядах размещаются А1 и А2 - адреса операндов, А3 - адрес результата.

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

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

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

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

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

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

Различают исполнительный адрес операнда и адресный код команды.

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

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

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

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

1) по наличию адресной информации в команде на:

- явную адресацию. При таком способев коде команде есть поле адреса операнда;

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

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

- непосредственную адресацию (direct addressing). При непосредственной адресации операнд располагается непосредственно в адресном поле команды (рисунок 6).

Рисунок 6

- прямую адресацию (immediate addressing). При прямой адресации обращение за операндом производится по адресному коду в поле команды. При этом исполнительный адрес совпадает с адресом кода команды. Это можно проиллюстрировать следующим рисунком (рисунок 7).

Рисунок 7

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

Рисунок 7

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

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

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

- Б - код базы;

- И - код индекса;

- С - код смещения.

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

Виды относительной адресации:

1) Индексная адресация (рисунок 9).

Рисунок 9

Для формирования адреса операнда используется регистровая память.

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

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

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

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

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

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

Рисунок 9

Для чтения записи доступен только один регистр - вершина стека.

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

Стековая память реализуется на основе обычной памяти с использованием указателя стека и автоиндексной адресации. Логически ячейки памяти, отводимые под стек, организованы так, чтобы считывание последнего записанного адреса производилось первым, а первого записанного адреса производилось последним. Такая логическая организация формируется специальным счётчиком. Этот счётчик называется указателем стека SP – это регистр микропроцессора. Ячейка памяти, в которую в данный момент может быть записан, например адрес возврата из подпрограммы, называется вершиной стека. Количество ячеек памяти, предназначенных для организации стека, называется глубиной стека. Последняя ячейка памяти, в которую можно производить запись называется дном стека. Запись в стек производится с использованием автодекрементной адресации, а чтение - с использованием автоинкрементной адресации (рисунок 10).

Рисунок 10

Пример. Вызов подпрограммы, написанной на языке С.

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

Подпрограмма:

Основная программа:

Например, в определённом месте программы вызывается функция f с аргументами х = 2, у = 3. Вызывающая программа помещает фактические значения аргументов х и у функции f в стек, при этом наверху стека лежит первый аргумент функции, под ним — второй аргумент. При выполнении инструкции вызова функции вверх стека помещается также адрес возврата. В начале работы функции f стек имеет следующий вид:

Перед выполнением функция f должна захватить в стеке область памяти под свои локальные переменные а, b, с.

Множество реализуемых машинных действий образует её систему команд.

Несмотря на большое число разновидностей ЭВМ, на самом низком (“машинном”) уровне они имеют много общего.

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

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

- обмен между регистрами процессора,

- процессора и оперативной памятью,

- процессора и периферийными установками.

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

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

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

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

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

Рассматривая систему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором – RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически. Таким образом, если существенно ограничить набор операций до наиболее простых и коротких,, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации “отброшенных” команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.