Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций / Конспект лекций.pdf
Скачиваний:
63
Добавлен:
07.02.2016
Размер:
1.36 Mб
Скачать

 

19

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

типов:

 

Тип операции

Примеры

 

Арифметические и

Целочисленные арифметические и логические операции:

логические

сложение, вычитание, логическое сложение, логическое

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

умножение и т.д.

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

 

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

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

команд

возвраты

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

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

 

памятью и т.д.

Операции с

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

плавающей точкой

вещественными числами

 

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

Операции над

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

строками

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

В английском языке для указания команд безусловного перехода, как правило, используется термин jump, а для команд условного перехода - термин branch, хотя разные поставщики не обязательно придерживаются этой терминологии. Например, компания Intel использует термин jump и для условных, и для безусловных переходов. Можно выделить четыре основных типа команд для управления потоком команд: условные переходы, безусловные переходы, вызовы процедур и возвраты из процедур.

Частота использования этих команд по статистике примерно следующая. В программах доминируют команды условного перехода. Среди указанных команд управления на разных программах частота их использования колеблется от 66 до 78%. Следующие по частоте использования - команды безусловного перехода (от 12 до 18%). Частота переходов на выполнение процедур и возврата из них составляет от 10 до 16%.

Глава 4.5. Конвейеризация.

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

Конвейеризация (или конвейерная обработка) в общем случае основана на

20

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

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

BU (Bus Unit) - шинный блок (считывание из памяти и портов ввода/вывода);

IU (Instruction Unit) - командный блок (дешифрация команд);

EU (Executive Unit) - исполнительный блок (выполнение команд);

AU (Address Unit) - адресный блок (вычисляет все адреса, формирует физический адрес).

 

Таблица 5.1. Конвейеризация команд в МП 80286

 

Микрооперации

 

 

Циклы шины

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выборка

N+1

N+2

 

 

 

 

 

B

 

 

 

 

 

 

 

команды

 

 

 

 

 

 

 

U

 

 

 

 

 

 

 

N-1

Дешифр.

N+1

 

N+2

 

 

 

 

I

 

 

 

 

 

 

 

команды

 

 

 

 

 

 

 

U

 

 

 

 

 

 

N-2

N-1

Форм.

 

N+1

N+2

 

 

 

 

 

 

 

 

 

 

 

адр. A

 

 

 

 

 

 

 

операнда

 

 

 

 

 

 

U

 

 

 

 

 

 

N-2

N-1

 

Выборка

N+1

N+2

 

 

 

 

 

B

 

 

 

 

 

 

 

операнда

 

 

 

 

 

 

 

U

 

 

 

 

 

N-2

 

N-1

Выполнение N+1

20

21

 

E

 

 

команды U

 

 

 

 

N-2

N-1

Запись B

 

 

результата

U

Идея конвейеризации была развита в следующих моделях этого семейства. В МП Intel-486 реализован пятиступенчатый конвейер для обработки команд:

PF (Prefetch) - предвыборка команд;

D1 (Instruction Decode) - декодирование команды;

D2 (Address Generate) - формирование адреса;

EX (Execute) - выполнение команды в АЛУ и доступ к кэш-памяти;

WB (Write Back) - обратная запись.

Рис. Блок-схема архитектуры МП Pentium

Новая микроархитектура процессоров Pentium (рис.) и более поздних базируется на идее суперскалярной обработки. Под суперскалярностью подразумевается наличие более одного конвейера для обработки команд (в отличие от скалярной - одноконвейерной архитектуры). В МП Pentium команды распределяются по двум независимым исполнительным конвейерам (U и V). Конвейер U может выполнять любые команды семейства IA-32, включая целочисленные команды и команды с плавающей точкой. Конвейер V предназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой. Команды могут направляться в каждое из этих устройств одновременно, причем при выдаче устройством управления в одном такте пары команд более сложная команда

22

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

Таблица. Конвейеризация команд в МП Pentium

Этапы конвейеров

 

Циклы шины

 

 

PF

 

 

 

 

 

 

 

 

К1

К3 К5 К7

 

К2

К4

К6 К8

 

 

 

 

 

 

 

 

 

 

D1

 

К1

К3

К5 К7

 

 

К2

К4

К6

К8

 

 

 

 

 

 

 

 

 

 

 

D2

 

 

К1

К3

К5

К7

 

 

 

К2

К4

К6

К8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EX

 

 

 

К1

К3

К5

К7

 

 

 

 

 

К2

К4

К6

К8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WB

 

 

 

 

К1

К3

К5

К7

 

 

 

 

 

К2

К4

К6

К8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 4.6. Суперскалярная архитектура

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

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

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

22

23

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

Теперь рассмотрим сборочный цех предприятия. Здесь ведется сборка изделий из комплектующих деталей. Существуют естественные, обусловленные конструкцией изделия, ограничения на использование при сборке описанных способов распараллеливания работ. Так, например, при сборке автомобилей нужно сначала установить на шасси двигатель, сидения, и т.д. и лишь затем закрывать все это кузовом. Тем не менее, используя принцип конвейера, можно «одновременно» производить и эти операции. Пусть время сборки одного изделия составляет T. Разобьем сборку на S этапов так, чтобы продолжительность каждого составляла T/S, и организуем конвейер так, что на i-й (i= 1,2, … ,P) позиции конвейера будет выполняться i-й этап сборки, причем, после того как на каждой позиции конвейера закончены работы по соответствующему этапу сборки изделия, оно перемещается на следующую позицию, а на данную позицию поступает то, что собрано на всех предыдущих. Тогда очевидно, что готовые изделия будут сходить с конвейера с периодом T/S, хотя время сборки каждого отдельного изделия останется прежним. Несмотря на то, что сборка каждого конкретного изделия на конвейере ведется последовательно – этап за этапом, тем не менее одновременно собираются несколько находящихся на разных позициях конвейера изделий. Поэтому конвейер – это распараллеливание процесса производства серии изделий.

Все три описанные способа распараллеливания присущи в той или иной мере современным ЭВМ.

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

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