Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вычи экзамен.doc
Скачиваний:
26
Добавлен:
13.11.2019
Размер:
2.29 Mб
Скачать

7. Конвейерная организация. Что такое конвейерная обработка. Простейшая организация конвейера и оценка его производительности. Примеры

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

Простейшая организация конвейера:

  1. Выборка команды (чтение очередной команды из памяти и занесение ее в регистр команды)

  2. Декодирование команды (определение кода операции и способов адресации операндов)

  3. Вычисление адресов (вычисление адреса операнда)

  4. Выборка операндов (извлечение операндов из памяти. Эта операция не нужна для операндов, находящихся в регистрах)

  5. Исполнение команды (непосредственное выполнение команды)

  6. Запись результата

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

8. Методы адресации, Типы команд и типы данных

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

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

Метод адресации

Пример команды

Смысл команды метода Использование

Регистровая

Add R4,R3

R4(R4+R5 Требуемое значение в регистре

Непосредственная или литеральная

Add R4,#3

R4(R4+3 Для задания констант

Базовая со смещением

Add R4,100(R1)

R4(R4+M[100+R1] Для обращения к локальным переменным

Косвенная регистровая

Add R4,(R1)

R4(R4+M[R1] Для обращения по указателю или вычисленному адресу

Индексная

Add R3,(R1+R2)

R3(R3+M[R1+R2] Иногда полезна при работе с массивами: R1 - база, R3 - индекс

Прямая или абсолютная

Add R1,(1000)

R1(R1+M[1000] Иногда полезна для обращения к статическим данным

Косвенная

Add R1,@(R3)

R1(R1+M[M[R3]] Если R3-адрес указателя p, то выбирается значение по этому указателю

Автоинкрементная

Add R1,(R2)+

R1(R1+M[R2] R2(R2+d Полезна для прохода в цикле по массиву с шагом: R2 - начало массива В каждом цикле R2 получает приращение d

Автодекрементная

Add R1,(R2)-

R2(R2-d R1(R1+M[R2] Аналогична предыдущей Обе могут использоваться для реализации стека

Базовая индексная со смещением и масштабированием

Add R1,100(R2)[R3]

R1( R1+M[100]+R2+R3*d Для индексации массивов

Типы команд

Команды традиционного машинного уровня можно разделить на несколько типов

Тип операции

Примеры

Арифметические и логические

Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д.

Пересылки данных

Операции загрузки/записи

Управление потоком команд

Безусловные и условные переходы, вызовы процедур и возвраты

Системные операции

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

Операции с плавающей точкой

Операции сложения, вычитания, умножения и деления над вещественными числами

Десятичные операции

Десятичное сложение, умножение, преобразование форматов и т.д.

Операции над строками

Пересылки, сравнения и поиск строк

Команды управления потоком команд

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