Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на матвеева.docx
Скачиваний:
25
Добавлен:
23.04.2019
Размер:
735.41 Кб
Скачать

4. Форматы команд. Адресация данных. Адресация команд.

  1. Форматы команд. Адресация данных.

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

Любая команда ЭВМ представляет собой некоторую упорядоченную последовательность битов, которая определяет:

1. Операцию, инициируемую этой командой.

2. Адреса операндов, участвующих в этой операции.

Поэтому в большинстве ЭВМ команда имеет операционно-адресную систему:

Код операции

Код адресов (операндов)

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

Определение. Под форматом команды понимается состав, назначение и расположение отдельных полей команды.

Первоначально система команд имела следующий Формат:

КОп

А1

А2

А3

А4

А3:= (А1)*(А2)

СчАК := А4, где СчАК – счетчик адреса команд, * - операция, (х) – содержимое адреса х.

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

КОп

А1

А2

А3

А3:= (А1)*(А2)

СчАК := (СчАК)+1

Даже переход к такому формату слабо уменьшает длину команды. Большинство вычислений имеет рекуррентную схему вычислений, следовательно, систему команд можно сделать двухадресной:

КОп

А1

А2

(А1):= (А1)*(А2)

СчАК := (СчАК)+1

Такая схема вычислений является основной для современных ЭВМ.

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

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

Коп

А1

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

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

  1. Адресация команд.

Любая машинная команда – машинный код, который определяет:

1. Операцию.

2. Указывает на данные.

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

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

1. Прямые способы адресации.

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

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

1.1. Неявная адресация. В таких командах явного адресного поля нет (безадресная команда). Операнд задается кодом операции. Обычно такой способ адресации используется для фиксированных программно доступных регистров процессора (аккумуляторный принцип).

1.2. Непосредственная адресация. В адресном поле фактически указывается не адресный код, а сам операнд. Этот способ не требует дополнительных обращений к памяти за операндами, но адресное поле должно иметь длину операнда. Обычно применяется для задания констант вычисления.

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

2. Не прямые способы адресации.

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

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

2.1. Базирование (относительная адресация). Процедура формирования исполнительного адреса: Аисп – Абаза + <смещение>. Для реализации этого способа в ЭВМ выделяются специальные ячейки, которые выполняют функции базовых регистров. В общем случае в ЭВМ может быть несколько базовых регистров. Тогда адресный код включает в себя два поля:

В

Disp

B – адрес регистра базирования; Disp – смещение.

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

Любая схема базирования обеспечивает перемещение программ по памяти ЭВМ.

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

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

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

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

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

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

5. Типы машинных команд. Классификация процессоров по системе команд.

Типы машинных команд

Современные ЭВМ имеют от 60 до 120 базовых команд. Общее количество команд, которое может быть в процессорах, с учетом способов адресации и регистров, 250-400. Такое большое количество команд, по замыслу разработчиков, должно сокращать длину программы пользователя, следовательно, уменьшается время решения задачи. Практика же показывает, что программист всем возможным множеством команд никогда не пользуется. Обычно пользователь ограничивается некоторым подмножеством команд, которые он четко понимает и знает. Все команды ЭВМ разделяют по следующим признакам:

1. Функциональное назначение.

1.1. Команды передачи данных.

1.2. Команды обработки данных.

1.3. Команды передачи управления.

1.4. Дополнительные команды.

2. Адресность команды.

2.1. Безадресные команды.

2.2. Одноадресные команды.

2.3. Двухадресные команды.

2.4. Прочие команды.

3. По способам адресации.

3.1. Данных.

3.2. Команд.

4. Способ кодирования операций.

4.1. Команды с фиксированным полем кода операций.

4.2. Команды с расширяющимся полем кода операций.

5. По длине.

5.1. Однобайтные.

5.2. Двухбайтные.

5.3. Многобайтные.

Классификация процессоров по системе команд

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

1. классические процессоры CISC (Complex Instruction Set Computing) - процессор с полным набором команд, выполняющий до 300 машинных инструкций.

Семейство микропроцессоров 80х86, поддерживаемых фирмами Intel, AMD, Cyrix и NEC, являются CISC-процессорами.

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

2. Процессоры RISC (Reduced Instruction Set Computing) - с сокращенным набором команд.

Процессор RISC - процессор, в котором:

- реализован упрощенный набор команд, имеющих одинаковую длину;

- большинство команд выполняются за один цикл процессора;

- отсутствуют макрокоманды;

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

RISC и CISC - это некие идеализированные концепции. Реальные же микропроцессоры классифицировать очень трудно. В последнее время производители используют одни и те же технологии и схожие инженерные решения. Граница проводится больше из исторических соображений и с каждым годом размывается все сильнее.

3. Процессоры MISC - c минимальным набором длинных команд.

4. Процессоры VLIW с набором сверхдлинных команд.

2. Совмещение выполнения операций во времени.

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

Совмещение операций осуществляется следующими методами. На уровне процессора - совмещением обработки данных (например, сложения, вычитания или умножения чисел) с обработкой команд программ (например, с выборкой команд, расшифровкой кода операции, модификацией адресов); совмещением выполнения нескольких (до 4—8) соседних команд одной программы; совмещением операций по обработке данных в независимых блоках. На уровне памяти - одновременным обращением к нескольким однотипным блокам памяти, что обеспечивается разделением оперативной памяти на независимые блоки с собственной адресацией и введением нескольких каналов внешней памяти; независимым обменом данными между носителями информации. На уровне устройств ввода-вывода информации - организацией мультиплексного режима работы или одновременного обслуживания нескольких устройств ввода-вывода за счёт быстрого обмена данными с процессором и медленной подготовки к обмену.

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

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

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

1. Выборка команды из памяти (IF).

2. Декодирование команды (ID).

3. Выполнение операции (EX).

4. Сохранение результата (WB).

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

Такт 1

Такт 2

Такт 3

Такт 4

Такт 5

Такт 6

Такт 7

Команда 1

IF

ID

EX

WB

Команда 2

IF

ID

EX

WB

Команда 3

IF

ID

EX

WB

Команда 4

IF

ID

EX

WB

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