Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
422
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

Форматы команд

111

 

 

Индексная адресация

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

Рис. 2.48. Индексная адресация: а — с индексным регистром; б — с использованием одного из РОН

Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из памяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнительных адресов будет следующей: N, N + 1, N + 2 и т. д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из поля АК команды, а в выбранный регистр, называемый индексным регистром, сначала заносится 0. После каждой операции содержимое индексного регистра увеличивается на 1.

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

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

AИСП = AК + (R), R (R) + 1 или R (R) + 1, AИСП = AК + (R),

(2.18)

где (R) — содержимое индексного регистра с адресом R.

В первом варианте увеличение содержимого индексного регистра происходит после формирования исполнительного адреса, и этот способ называется постин­

112

Глава 2. Архитектура системы команд

 

 

крементным автоиндексированием. Во втором случае сначала производится увеличение содержимого индексного регистра, и уже новое значение используется для формирования исполнительного адреса. Тогда говорят о преинкрементном автоиндексировании.

Автоиндексирование с уменьшением содержимого индексного регистра носит название автодекрементной адресации и может быть описано так:

AИСП = AК + (R), R (R) – 1 или R (R) – 1, AИСП = AК + (R).

(2.19)

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

Интересным и весьма полезным является еще один вариант индексной адресации — индексная адресация с масштабированием и смещением: содержимое индексного регистра умножается на масштабный коэффициент и суммируется с AК. Масштабный коэффициент может принимать значения 1, 2, 4 или 8, для чего в адресной части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.

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

Страничная адресация

Страничная адресация (СТА) предполагает разбиение адресного пространства на страницы. Страница определяется своим начальным адресом, выступающим в качестве базы. Старшая часть этого адреса хранится в специальном регистре — регистре адреса страницы (РАС). В адресном коде команды указывается смещение внутри страницы, рассматриваемое как младшая часть исполнительного адреса. Исполнительный адрес образуется конкатенацией (присоединением) AК к содер-

жимомуРАС,какпоказанонарис.2.49.Нарисункесимволточки•обозначаетопе- рацию конкатенации.

Рис. 2.49. Страничная адресация

Форматы команд

113

 

 

Показатели эффективности страничной адресации имеют вид:

 

CСТА = log2Ni – log2M €, TСТА = TРОН + TЗУ,

(2.20)

где M — количество страниц в памяти.

 

Блочная адресация

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

Стековая адресация

Данный вид адресации был рассмотрен при описании стековой архитектуры системы команд.

Распространенность различных видов адресации

Частота использования различных способов адресации существенно зависит от типа АСК. Для машин со стековой архитектурой очевидно, что основным способом адресации является стековая адресация. Для ВМ с аккумуляторной АСК главные способы адресации — это прямая и непосредственная.

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

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

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

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

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

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

114

Глава 2. Архитектура системы команд

 

 

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

Для команд перехода чрезвычайно важно, насколько далеко адрес перехода отстоит от адреса команды перехода, иными словами, какова типичная величина смещения. Исследования показывают, длина смещения в основном не превышает 8 битов, что соответствует смещению в пределах ±128 относительно команды ветвления. В подавляющем большинстве случаев переход идет в пределах 3–7 команд относительно команды перехода.

Система операций

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

Связь системы операций с алгоритмами решаемых задач проявляется в степени ее приспособленности для записи программ реализации этих алгоритмов. Степень приспособленности характеризуется близостью списка операций системы команд и операций, используемых на каждом шаге выполнения алгоритмов. Простоту программирования алгоритма часто определяют термином «программируемость вычислительной машины». Чем меньше команд требуется для составления программы реализации какого-либо алгоритма, тем программируемость выше. В архитектурах типа CISC улучшения программируемости добиваются введением в систему операций большого количества операций, в том числе и достаточно сложных. Это может приводить и к повышению производительности ВМ, хотя в любом случае увеличивает аппаратурные затраты.

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

Показатели эффективности системы операций

Качество системы операций (СО) можно характеризовать двумя свойствами: функциональной полнотой и эффективностью.

Функциональная полнота — это достаточность системы операций для описания любых алгоритмов. Системы операций ВМ включают в себя большое количество машинных операций и практически всегда являются функционально полными.

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

Форматы команд

115

 

 

Затраты оборудования C можно описать выражением

C = CПР + CЗУ ,

где CПР — затраты в процессоре на реализацию системы операций, CЗУ — затраты памяти на размещение данных и программ, представляющих алгоритм в терминах заданной системы операций.

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

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

Выбор системы операций

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

В качестве примера рассмотрим один из способов решения этой задачи — выбор системы операций на основе структурирования алгоритмов.

Метод структурирования алгоритмов предполагает следующую формулировку за­ дачи выбора системы операций: необходимо выбрать такую систему Fn, которая обеспечивает реализацию алгоритма A за заданное время T = TДОП при минимальной стоимости ВМ.

Иерархия операций F1, ..., Fp, функционально полных для алгоритма A, может быть определена процедурой структурирования [17], сводящейся к следующему. Алгоритм A рассматривается как один оператор, реализующий операцию f1 над исходными данными с целью получения требуемых результатов, то есть F1 = { f1}. Затем оператор разделяется на части — программируется последовательностью более простых операторов. Последовательное применение процедуры структурирования (разделения оператора на более простые операторы) позволяет выявить системы

операций F1 = { f1}, F2 = { f2, f3}, F3 = { f3, f4, f5}, F4 = { f4, f5, f6, f7}, ... , и тем самым построить иерархию операций F1, ..., Fp.

Для каждой операции в Fi можно определить количество ng ее выполнений при одной реализации алгоритма. Тогда сумма

G

 

Ni = ng

(2.21)

fg Fi

116

Глава 2. Архитектура системы команд

 

 

будет представлять количество операций, выполняемых при одной реализации алгоритма, запрограммированного в терминах Fi. Характеристики элементной базы позволяют задать приближенное значение средней длительности τi операции в ВМ. С учетом этого время выполнения алгоритма на основе Fi составит Ti = τiNi, что дает возможность поставить в соответствие иерархии систем операций F1, ..., Fp затраты времени на реализацию алгоритма T1, ..., Tp, причем T1 < ... < Tp. Можно предположить, что минимум аппаратных затрат достигается при Fn {F1, ..., Fp), обеспечивающей время реализации алгоритма Tn максимально близкое к заданному значению TДОП. В силу сказанного, выбор системы операций сводится к нахождению такой системызначение.Fn, для которой разность (TДОП Tn) имеет минимальное положительное

Контрольные вопросы

1.Какие характеристики вычислительной машины охватывает понятие «архитектура системы команд»?

2.Охарактеризуйте эволюцию архитектур системы команд вычислительных машин.

3.В чем состоит проблема семантического разрыва?

4.Поясните различия в подходах по преодолению семантического разрыва, применяемых в ВМ с CISC- и RISC-архитектурами.

5.Какая форма записи математических выражений наиболее соответствует стековой архитектуре системы команд и почему?

6.Какие средства используются для ускорения доступа к вершине стека в ВМ со стековой архитектурой?

7.Чем обусловлено возрождение интереса к стековой архитектуре?

8.Какие особенности аккумуляторной архитектуры можно считать ее достоинствами и недостатками?

9.Какие доводы можно привести за и против увеличения числа регистров общего назначения в ВМ с регистровой архитектурой системы команд?

10. Почему для ВМ с RISC-архитектурой наиболее подходящей представляется АСК с выделенным доступом к памяти?

11. Какую позицию запятой в формате с фиксированной запятой можно считать общепринятой?

12. Чем в формате с фиксированной запятой заполняются избыточные старшие разряды?

13. Какое минимальное количество полей должен содержать формат с плавающей запятой?

14. Как в формате с плавающей запятой решается проблема работы с порядками, имеющими разные знаки?

15. В чем состоит особенность трактовки нормализованной мантиссы в стандарте IEEE 754?

16. От чего зависят точность и диапазон представления чисел в формате с плавающей запятой?

Контрольные вопросы

117

 

 

17. Чем обусловлено появление форматов с упакованными числами в современных микропроцессорах?

18. Какие факторы влияют на выбор разрядности целых чисел?

19. Сказывается ли на производительности ВМ порядок следования в памяти байтов «длинного» числа и выбор адреса, с которого начинается запись числа?

20. По какому признаку при передаче потока десятичных чисел можно определить окончание одного числа и начало следующего?

21. Какой общий принцип лежит в основе различных таблиц кодировки символов?

22. Чем обусловлен переход от кодировки ASCII к кодировке Unicode? 23. В чем состоит особенность обработки логических данных?

24. Какие трактовки включает в себя понятие «строка»?

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

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

27. Какой вид команд пересылки данных характерен для ВМ с RISC-архитек­ турой?

28. Чем вызвана необходимость заполнения освободившихся разрядов значением знакового разряда при арифметическом сдвиге вправо?

29. В чем состоит особенность SIMD-команд и в каком формате должны быть представлены операнды?

30. Что такое «арифметика с насыщением» и где она применяется? 31. Какие виды команд относят к командам ввода/вывода?

32. Какие виды команд условного перехода обычно доминируют в реальных программах?

33. Какие факторы определяют выбор формата команд?

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

35. Какая особенность фон-неймановской архитектуры позволяет отказаться от указания в команде адреса очередной команды?

36. Какие факторы необходимо учитывать при выборе оптимальной адресности команд?

37. С какими ограничениями связано использование непосредственной адресации?

38. В каких случаях может быть удобна многоуровневая косвенная адресация? 39. Какие преимущества дает адресация относительно счетчика команд?

40. В чем проявляются сходство и различия между базовой и индексной адресацией?

41. В чем состоит сущность автоиндексирования и в каких ситуациях оно применяется?

42. С какой целью применяется адресация с масштабированием?

43. Какие способы адресации переходов используются в командах управления потоком команд?

44. Как можно оценить эффективность системы операций при разработке архитектуры системы команд?

Глава 3

Функциональная организация фон-неймановской ВМ

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

Функциональная схема фон-неймановской вычислительной машины

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

Примем, что гипотетическая ВМ имеет следующие особенности:

Одноадресные команды. Адресная часть команды (АЧ) содержит только один адрес. При выполнении операций с двумя операндами предполагается, что операнд, адрес которого в команде не указан, находится в специальном регистре АЛУ — аккумуляторе, а также, что результат остается в аккумуляторе.

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

Список команд, выполняемых гипотетической ВМ, приведен в табл. 3.1.

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

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

Назначение устройства управления (УУ) было определено ранее при рассмотрении структурной схемы ВМ, где отмечалось, что эта часть ВМ организует

Функциональная схема фон-неймановской вычислительной машины

119

 

 

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

Рис. 3.1. Функциональная схема гипотетической фон-неймановской ВМ

Таблица 3.1. Команды гипотетической вычислительной машины

Мнемоническое

КОП1

АЧ

Описание

обозначение

 

 

 

LDA

1

ADR

Загрузка в аккумулятор содержимого ячейки основной

 

 

 

памяти (ОП) с адресом ADR

STA

2

ADR

Запись содержимого аккумулятора в ячейку ОП с адре-

 

 

 

сом ADR

ADD

3

ADR

Сложение содержимого аккумулятора и ячейки ОП,

 

 

 

имеющей адрес ADR. Результат остается в аккумуля-

 

 

 

торе

продолжение

120

 

Глава 3. Функциональная организация фон-неймановской ВМ

 

 

 

 

 

Таблица 3.1 (продолжение)

 

 

 

 

 

 

 

Мнемоническое

КОП1

АЧ

Описание

обозначение

 

 

 

 

SUB

4

ADR

Вычитание из содержимого аккумулятора числа, хра-

 

 

 

 

нящегося в ячейке ОП, имеющей адрес ADR. Результат

 

 

 

 

остается в аккумуляторе

 

INP

5

IPRT

Ввод в аккумулятор информации с периферийного уст­

 

 

 

 

ройства, подключенного к порту ввода с номером IPRT

 

OUT

6

OPRT

Вывод содержимого аккумулятора на периферийное

 

 

 

 

устройство, подключенное к порту вывода с номером

 

 

 

 

OPRT

 

JMP

7

ADR

Безусловный переход к команде, хранящейся по адресу

 

 

 

 

ADR

 

BRZ

8

ADR

Переход к команде, хранящейся по адресу ADR, при

 

 

 

 

условии, что результат предыдущей арифметической

 

 

 

 

операции равен 0, иначе естественный порядок вычисле-

 

 

 

 

ний не нарушается

 

 

9-E

 

Прочие возможные команды

 

 

 

 

 

 

HLT

F

 

Останов вычислений

 

1 Шестнадцатеричный код операции.

Счетчик команд

Счетчик команд (СК) — неотъемлемый элемент устройства управления любой фон-неймановской ВМ. В соответствии с принципом программного управления команды программы хранятся в смежных ячейках памяти ВМ, то есть в ячейках со смежными адресами. Выполняются команды в естественной последовательности, в порядке их следования в программе (если изменение этой последовательности не предусмотрено программой). Из этого вывод: адрес очередной команды может быть вычислен путем добавления единицы к адресу текущей команды (в нашем примере любая команда занимает одну ячейку). Такое вычисление обеспечивает счетчик команд. Перед началом вычислений в СК заносится адрес ячейки основной памяти, где хранится первая команда. К моменту завершения очередной команды, не изменяющей естественную последовательность вычислений, содержимое СК увеличивается на единицу (по сигналу управления +1СК). Таким образом, адрес следующей команды программы всегда берется из счетчика команд. Для изменения естественного порядка вычислений (перехода в иную точку программы) вместо прибавления единицы нужно занести в СК адрес точки перехода.

Хотя термин «счетчик команд» считается общепринятым, его нельзя признать удачным из-за того, что он может создать неверное впечатление о задачах данного узла. По этой причине разработчики ВМ используют и иные названия, в частности программный счетчик (PC, Program Counter) или указатель команды (IP, Instruction Pointer). Последнее определение представляется наиболее удачным, поскольку точнее отражает назначение рассматриваемого узла УУ.

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