- •Глава 1. Основные понятия 9
- •Глава 8. Организация виртуальной памяти 227
- •Глава 9. Организация кэш-памяти 246
- •Глава1. Основные понятия
- •1.1. Система программно-аппаратных средств обработки информации
- •1.2.Традиционная классификация эвм
- •1.3. Структуры эвм
- •1.4. Многомашинные комплексы и многопроцессорные системы
- •1.5. Эволюция режимов работы эвм
- •1.5. Особенности построения и эксплуатации современных многопроцессорные и многомашинных комплексов.
- •Глава 2. Программная модель процессора
- •2.1. Общие понятия
- •2.2. Виды используемых структур памяти по принципам размещения и поиска информации
- •2.3. Организация оперативной памяти
- •2.3.1. Оперативная память и адресные пространства процессора
- •2.3.2. Адресация многобайтовых объектов в оперативной памяти
- •2.3.3. Структура и типы команд
- •2.4. Режимы адресации
- •2.5. Типы машинных арифметик
- •2.6. Управление потоком команд.
- •2.7. Контекст программы
- •2.8. Команды cisc- и risc-архитектуры
- •Глава 3. Программная модель мп Intel
- •3.1. Режимы работы
- •3.2. Программная модель 16-ти битового микропроцессора мп ia-16
- •3.2.1. Модель памяти
- •3.2.2. Порты ввода/вывода
- •2.2.3. Регистровый файл
- •3.2.4. Структура команд
- •3.3. Программная модель 32-битового микропроцессора
- •3.3.1. Основные особенности организации
- •3.3.2. Модель памяти
- •3.3.3. Регистровый файл
- •3.3.4. Структура команд и режимы адресации
- •3.3.5. Структура данных
- •Глава 4. Программные модели мп корпорации dec
- •4.1. Программная модель процессоров семейства pdp-11
- •4.2. Программная модель процессоров эвм vax-11 (см 1700)
- •Глава 5. Система прерывания
- •5.1.Функции системы прерывания и общие решения по реализации
- •5.2. Система прерывания в мп intel
- •5.2.1. Система прерывания в мп ia-16
- •5.2.2. Особенности системы прерывания в мп ia-32
- •5.2.3. Организация системы прерывания в pdp 11
- •Глава 6. Организация ввода-вывода
- •6.1. Система ввод/вывода
- •6.2.Теоретические основы операций ввода/вывода
- •6.3. Синхронизация передачи данных при вводе/выводе
- •6.3.1. Ввод/вывод с проверкой готовности
- •6.3.2. Ввод/вывод с использованием системы прерывания
- •6.3.3. Ввод/вывод с использованием устройств прямого доступа к памяти
- •Глава 7. Шинные интерфейсы
- •7.1. Общие положения
- •7.2. Асинхронный системный интерфейс "Общая шина"
- •7.3. Системные интерфейсы мп ia
- •7.4. Локальный интерфейс микропроцессора i80386
- •7.4.1. Особенности локального интерфейса i80386
- •7.4.2. Диаграммы работы локального интерфейса мп i80386
- •7.4.3. Модель функционирования локального интерфейса мп i80386. (интерфейс с конвейерной передачей данных)
- •7.4.4. Специальные циклы
- •7.5. Локальный интерфейс микропроцессора i486 (интерфейс с пакетной передачей данных)
- •7.5.1. Особенности локального интерфейса i486
- •7.5.2. Диаграммы работы локального интерфейса мп i486
- •7.5.3. Модель функционирования локального интерфейса мп i486
- •7.6. Локальный интерфейс мп Pentium (интерфейс с пакетной передачей данных и конвейеризацией передачи адреса)
- •7.7. Интерфейсы с расщепленными транзакциями
- •Глава 8. Организация виртуальной памяти
- •8.2. Основные задачи виртуальной памяти
- •8.3. Страничная организации виртуальной памяти
- •8.3.1. Страничная организация памяти
- •8.3.2. Виртуальная память на основе таблицы математических страниц
- •8.3.3. Упрощенная схема виртуальной памяти на основе таблицы физических страниц
- •8.3.4. Схема виртуальной памяти на основе таблицы физических страниц.
- •Глава 9. Организация кэш-памяти
- •9.1. Назначение и общая схема подключения кэш-памяти
- •9.2. Системы адресации кэш-памяти
- •9.3. Режимы работы кэш-памяти
- •9.4. Иерархическая структура кэш-памяти и средства управления кэш-памятью
- •9.5. Организация когерентности системы кэш-памяти в многопроцессорных системах с общей оперативной памятью.
- •Основные переходы. При запросах на чтение (r):
- •Чтение (sr2):e в s. При запросах на запись (w):
- •Глава 10. Организация системы памяти на жестких дисках
- •10.1.Дисковые массивы и уровни raid
- •125Стр. Из 292
2.3.3. Структура и типы команд
При компиляции программ (преобразовании исходной программы в программу на уровне команд процессора) производится декомпозиция процедур программ до уровня операций обработки двух или одного операндов. В первом случае команда является двухместной (пример – сложение двух чисел с получением числа-результата), во втором – одноместной (пример – изменение знака операнда).
В любом случае команда должна задавать операцию и операнды. Обычно операция задается номером (кодом) операции во множестве операций, определенных для операционного устройства. Если операнды, используемые в операции, являются результатами ранее выполненных операций (тип операндов – переменная), то они задаются номерами (адресами) зарезервированных для них ячеек памяти. Если операнд известен до выполнения операции, то он может задаваться в команде своим значением (непосредственный операнд).
В случае двухместной операции команда должна задавать (явно или неявно):
1. операцию,
2. адрес или значение первого операнда,
3. адрес или значение второго операнда,
4. адрес сохранения результата,
5. адрес следующей команды (или двух альтернативных адресов команды для реализации ветвлений).
Задание операции
Операция задается полем кода операции. Это основное назначение кода операции. Каждый процессор ориентирован на аппаратную реализацию определенного конечного набора операций. В поле кода операции обычно пишется номер операции из набора реализованных операций. По этому номеру или выбирается специализированное исполнительное устройства, или универсальное исполнительное устройство настраивается на заданный вид обработки. Возможны комбинации этих решений.
Кроме исполняемой операции, код операции часто задает формат и тип обрабатываемых данных. Под форматом здесь понимается размерность операндов (байт, слово, двойное слово и т.д.), а под типом – тип арифметики (целочисленные операции, с плавающей точкой, векторные операции и т.д.).
Поле адресов
Если все перечисленные адреса задаются явно (соответствующими полями), то команда имеет четырех- или пятиадресную структуру (рис. 2.5). Два альтернативных адреса следующей команды необходимы для реализации ветвлений.
-
Код операции
Адрес 1
Адрес 2
Адрес 3
Адрес 4 (4,5)
Рис. 2.5 Структура четырехадресной команды
Четырехадресная структура определяет необходимый набор адресов для задания двухместной операции. Но все указанные адреса задавать в явном виде необязательно. Здесь возможны различные варианты.
Трехадресная система команд
Адрес следующей команды связывает отдельные команды в программу, определяющую всю последовательность операций, т.е. процедуру обработки. Но этот адрес можно не задавать явно в каждой команде. Вместо этого, команды программы можно располагать в ячейках памяти в той последовательности, в которой они должны выполняться, а в схеме процессора предусмотреть специальное устройство – счетчик команд (указатель команд), назначение которого – вычисление адреса следующий команды. Команда становится трехадресной (рис. 2.6).
Вычисление адреса следующей команды производится путем прибавления длины выполняемой команды (например, в байтах) к её адресу. Но отдельные смежные фрагменты программы могут размещаться и в несмежных участках памяти. Для их соединения в единую программу используются команды передачи управления, содержащие указание на начало следующего линейного участка программы.
Например, команда безусловного перехода:
Jmp <адрес передачи управления>.
В адресной части этих команд указывается адрес первой команды следующего фрагмента программы. Команды передачи управления могут быть условными, когда передача управления производится с учетом кода условия, хранящегося в регистре состояния ЭВМ.
Например, команда JEZ - переход, если признак результата предыдущей команды равен нулю:
JEZ <адрес передачи управления при выполнении условия перехода>
Команды условной передачи управления позволяют разрабатывать разветвляющиеся и циклические программы. Разновидностью команд передачи управления являются команды передачи управления с возвратом (команды переходов на подпрограммы). При выполнении этих команд перед передачей управления на подпрограмму запоминается адрес возврата (содержимое счетчика команд до передачи управления). Адрес возврата используется другой разновидностью команд передачи управления – командами выхода из подпрограммы. Адрес возврата обычно запоминается в специальном регистре PSW (слово состояния программы, семейство PDP-11), ячейке оперативной памяти (семейство IBM/370), или в аппаратном стеке (персональные компьютеры, программно совместимые с IBM PC).
Таким образом, переход к трехадресной системе команд сопровождается:
отказом от независимости в расположении отдельных команд в программе,
введением в состав процессора специального устройства (счетчика команд), вычисляющего адрес следующей команды,
введением в состав команд процессора специальных команд для задания точек нарушения выполнения команд в естественном порядке и указания адресов переходов. Это команды задания условного и безусловного переходов (с возвратом или без возврата).
По сути дела в этом варианте одну сложную команду, задающую операцию и связь со следующей командой, разбили на две команды: команду, задающую текущую операцию, и команду возможного перехода на новый линейный участок программы. По статистике на каждые шесть команд обработки данных приходится только одно указание на передачу управления. Следовательно, выделение относительно "редких" операций передачи управления в отдельные команды значительно сокращает командный код.
Двухадресная система команд
В качестве адреса результата операции можно использовать адрес одного из исходных операндов. При этом результат операции записывается "поверх" одного из операндов, значение которого теряется, но команда становится компактнее (рис. 2.7).
Это двухадресные команды. В двухадресных командах один адрес рассматривается как адрес-источник, а другой – как адрес-приемник.
Естественно, что в этих командах только операнд-источник можно задавать непосредственным значением.
Неизбежная потеря значения одного из операндов при использовании двухадресных команд потребовала введения в состав команд процессора команды пересылки (копирования) объекта-источника в ячейку приемника. Примером такой команды может служить команда пересылки MOV:
MOV А1, А2.
Необходимость такого копирования данных в некоторых случаях значительно удлиняла программный код.
Одноадресная система команд
Дальнейшее уменьшение количества адресов, явно заданных в команде, приводит к одноадресной структуре команд (рис. 2.8).
В процессоре с одноадресной структурой команд предусматривается специальный регистр – аккумулятор. Это регистр, в котором находится один из операндов, и в который записывается результат операции (поверх исходного операнда).
Для начальной загрузки аккумулятора и сохранения его содержимого в памяти в наборе команд предусматриваются команда загрузки и команда сохранения содержимого аккумулятора.
Возможно и дальнейшее упрощение команды. Это безадресная система команд. Такая система существует, но она ориентирована на использование стековой памяти. В этих командах указываются или код операции или данные. Одни команды загружают данные в стек или выводят из стека результаты, другие команды задают операции над данными из вершины стека. Такая система команд использовалась в некоторых калькуляторах, но широкого применения не нашла.
Сравним эффективность программирования в одноадресной и трехадресной системе команд.
Вычисление оператора С = А+В в трехадресной системе команд можно задать одной командой
ADD <A>, <B>, <C>;
а в одноадресной – тремя командами:
MOVAC <A>; загрузить в регистр-аккумулятор число А
ADD <B>; содержимое аккумулятора увеличить на значение числа В
MOVM <C>; сохранить содержимое аккумулятора в ячейке памяти С.
Здесь в командах используются условные обозначения: угловые скобки задают не значения операндов А, В, С, а их адреса.
На первый взгляд переход на одноадресные команды не имеет преимуществ. Длина программного кода не уменьшается, только адреса записываются не в строчку, а разнесены по трем командам. Вместо одного кода операции используются три. Но одноадресная структура команд более гибкая. Кроме этого, следует учитывать высокую вероятность передачи результатов текущей операции непосредственно последующей. В этих случаях сохранения содержимого аккумулятора в памяти не требуется, и программный код значительно сокращается.
Например, для оператора A=BC+D–E программа в трехадресной системе команд будет содержать 3 команды:
MULT <B>, <C>, <A>
ADD <A>, <D>, <A>
SUB <A>, <E>, <A>,
а в одноадресной системе – 5 коротких команд:
MOVAC <B>
MULT <C>
ADD <D>
SUB <E>
MOVM <A>.
Как видно из примера, код программы значительно сокращается. По этой причине одноадресные ЭВМ получили широкое распространение.
Дальнейшее совершенствование структуры команд связано с отставанием роста быстродействия памяти по сравнению с ростом быстродействия процессора. Это отставание стало серьезным препятствием в развитии вычислительной техники.
Но статистика обращений к памяти показала, что на каждое обращение по записи приходится, в среднем, 13 обращений по чтению, Это означает, что каждый полученный в процессоре результат или выбранный из памяти операнд с большой вероятностью будет использоваться в последующей команде.
Следовательно, временные потери процессора на ожидание данных из памяти можно уменьшить введением в состав процессора не одного аккумулятора, а множества регистров для сохранения и повторного использования данных. Появление дополнительного множества регистров в процессоре и необходимость их адресации существенно повлияли на дальнейшее развитие структуры команд.
Дальнейшее усовершенствование системы команд привело к усложнению системы адресации ячеек оперативной памяти. Адреса оперативной памяти стали задавать не явно, а компонентами. Для хранения компонентов адреса стали использовать те же регистры. Появилась дополнительная индексная (адресная) арифметика для вычисления адреса по компонентам. Дополнительные регистры стали использоваться для хранения как операндов, так и компонентов адреса. А регистры получили название "регистры общего назначения" ( РОНы).
Многие фирмы (Intel,DEC) для гибкости системы программирования стали использовать множество формул (режимов адресации) для вычисления адресов.
С появлением РОНов команды снова стали двухадресными. Один – адрес оперативной памяти, другой – РОНа, или оба адреса – номера используемых РОНов.
В случае использования РОНов команды, в зависимости от расположения исходных операндов, разделяются на типы: регистр-регистр, регистр-память.
Команды типа регистр-регистр являются наиболее компактными по размерам и быстрыми по выполнению. Они используют короткие адреса и независимы от задержек при обращении к памяти. Как исключение, некоторые ЭВМ (например, IBM/370) сохранили команды и типа память-память.
Кроме РОНов, современные процессоры содержат ряд других программно доступных регистров, которые образуют регистровый файл процессора.
Вопросы для самопроверки:
1. Двухместные операции.
2. Назначение четвертого адреса в четырехадресной команде.
Особенности структуры процессора, использующего команды без явного задания четвертого адреса в двухместной команде.
Особенности структуры процессора, использующего команды без явного задания четвертого и третьего адреса в двухместной команде.
Особенности структуры процессора, использующего команды без явного задания четвертого, третьего и второго адреса в двухместной команде.
Основные преимущества одноадресной системы команд.
Причины введения в состав процессора РОНов.
Адресация РОНов в командах.
Понятие типов команд: регистр-регистр и регистр-память.