- •7 Форма представления чисел с фиксированной точкой
- •8 Форма представления чисел с плавающей точкой
- •9 Форматы двоично-десятичных чисел
- •10. Машинные коды
- •Прямой код
- •Обратный код
- •. Дополнительный код
- •11 Составные части компьютера
- •13. Триггеры
- •12 Логические элементы
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •14 Асинхронный и синхронный d-триггеры
- •17. Дешифраторы
- •18 Одноразрядный сумматор
- •Полусумматор
- •19. Многоразрядные сумматоры
- •20 Двоично-десятичные сумматоры
- •21 Мультиплексоры
- •22. Демультиплексоры
- •23. Регистры
- •24 Счетчики
- •25 Двоично-десятичные счетчики
- •26 Классификация архитектур системы команд
- •27 Классификация по составу и сложности команд
- •28 Классификация по месту хранения операндов
- •29 Архитектура с выделенным доступом к памяти
- •30 Типы команд
- •Команды пересылки данных
- •Операции с целыми числами
- •Операции с числами в форме с плавающей запятой
- •Логические операции
- •Операции сдвигов
- •Операции с десятичными числами
- •Simd-команды
- •Команды для работы со строками
- •Команды преобразования
- •Команды ввода/вывода
- •Команды управления системой
- •Команды управления потоком команд
- •31 Формат команд
- •Длина команды
- •Разрядность полей команды
- •32 Выбор адресности команд
- •33. Способы адресации операндов
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •34 Косвенная регистровая адресация
- •Адресация со смещением
- •Относительная адресация
- •35 Базовая регистровая адресация
- •Индексная адресация
- •Страничная адресация
- •Блочная адресация
- •36 Распространенность различных видов адресации
- •Способы адресации в командах управления потоком команд
- •37 Функциональная организация фон-неймановской вычислительной машины
- •38 Устройство управления
- •39 Арифметико-логическое устройство
- •40 Основная память
- •Модуль ввода/вывода
- •41. Стандартный цикл команды
- •42 Организация шин
- •43 Шины «процессор-память»
- •Шина ввода/вывода
- •44 Системная шина
- •45 Иерархия шин
- •46 Арбитраж шин
- •47 Протокол шины
- •48 Методы повышения эффективности шин
- •49 Стандартизация шин
Непосредственная адресация
При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 2.62). Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Код операции |
Способ адресации |
Непосредственный операнд |
Рис. 2.62. Непосредственная адресация
Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова.
В 50-60% команд с непосредственной адресацией длина операнда не превышает 8 бит, а в 75-80% – 16 бит. Таким образом, в подавляющем числе случаев шестнадцати разрядов вполне достаточно, хотя для вычисления адресов могут потребоваться и более длинные константы.
Наиболее интенсивно данный вид адресации используется в арифметических операциях и командах сравнения. В то же время загрузка констант в большинстве программ, очевидно, не такая частая операция.
Непосредственная адресация сокращает
время выполнения команды, так как не
требуется обращение к памяти за операндом.
Кроме того, экономится память, поскольку
отпадает необходимость в ячейке для
хранения операнда. В плане эффективности
этот способ можно считать «идеальным»
,
и его можно рекомендовать к использованию
во всех ситуациях, когда тому не
препятствуют вышеупомянутые ограничения.
Прямая адресация
При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (рис. 2.63), то есть адресный код совпадает с исполнительным адресом.
Рис. 2.63. Прямая адресация
При всей простоте использования способ имеет существенный недостаток – ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений. Это ограничивает возможности по произвольному размещению программы в памяти.
Прямую адресацию характеризуют следующие
показатели эффективности:
,
- где
– количество адресуемых операндов.
Косвенная адресация
Одним из путей
преодоления проблем, свойственных
прямой адресации, может служить прием,
когда с помощью ограниченного адресного
поля команды указывается адрес ячейки,
в свою очередь, содержащей полноразрядный
адрес операнда (рис. 2.64). Этот способ
известен как косвенная
адресация
(КА). Запись (
)
означаетчает содержимое ячейки, адрес
которой указан в скобках.
При косвенной адресации содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. Дополнительно такой прием упрощает обработку массивов и списков, а также передачу параметров подпрограмм.
Недостатком косвенной адресации
является необходимость в двукратном
обращении к памяти: сначала для извлечения
адреса операнда, а затем для обращения
к операнду (
).
Сверх того задействуется лишняя ячейка
памяти для хранения исполнительного
адреса операнда. Способу свойственны
следующие затраты оборудования:
, (2.15)
где
– разрядность
ячейки памяти, хранящей исполнительный
адрес;
–
количество ячеек для хранения
исполнительных адресов;
– количество адресуемых операндов.
Здесь выражение
определяет разрядность сокращенного
адресного поля команды (обычно
).
Рис. 2.64. Косвенная адресация
В качестве варианта
косвенной адресации, правда, достаточно
редко используемого, можно упомянуть
многоуровневую
или каскадную
косвенную адресацию:
,
когда к исполнительному адресу цепочка
косвенных адресов. В этом случае один
из битов в каждом адресе служит признаком
косвенной адресации. Состояние бита
указывает, является ли содержимое ячейки
очередным адресом в цепочке адресов
или это уже исполнительный адрес
операнда. Особых преимуществ у такого
подхода нет, но в некоторых специфических
ситуациях он оказывается весьма удобным,
например, при обработке многомерных
массивов. В то же время очевиден и его
недостаток – для доступа к операнду
требуется три и более обращений к памяти.
