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

КЛ_АВС

.pdf
Скачиваний:
49
Добавлен:
10.05.2015
Размер:
2.62 Mб
Скачать

КОП

СА

Ак

 

 

 

 

 

 

 

 

 

 

Память

 

 

 

 

 

 

 

РАС

 

 

 

 

 

 

Страница

Старшая часть

 

 

Ас

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ас

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операнд

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистр использующий

 

 

адреса

 

 

 

 

 

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

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

прямая;

относительная;

косвенная регистровая.

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

– 90%. Для команд перехода важную роль играет средняя (типичная)

величина смещения. В подавляющем большинстве случаев переход идет пределах 3-7 команд относительно команды перехода. Приблизительно 70%

переходов идут в сторону увеличения адреса. Из оставшихся, 90% связаны с выполнением циклов.

Косвенная регистровая адресация исполняется в следующих командах перехода: case (switch), исполнение виртуальных функций и методов в объектно-ориентированных языках, исполнение ссылок на функцию и исполнение DLL.

61

8.Цикл выполнения команд процессора

Вархитектуре Фон Кеймана команды обрабатываются под управлением УУ выполняется в систематизированном виде. Последовательность шагов выполняют команды – цикл выполнения команды. Адрес первой выполняемой команды передаётся микропроцессору и запоминается в счётчике команд. Начало работы процессора заключается в том, что адрес из счётчика команд на шину адреса системой магистрали. Одновременно на шину управления подаётся команда “Выборка из основной памяти”, которая воспринимается основной памятью. Получив с шины управления системой магистрали команду, основная память считывает адрес с шины адреса, находит ячейку с этим номером и её содержимое выставляет на шину данных, а на шину управления выставляет сигнал о выполнении команды. Процессор, получив по шине управления сигнал об окончании работы основной памяти, вводит число с шины данных на внутреннюю магистраль процессора и через неё посылает введённую информацию в регистр команд. В регистре команд полученная команда разделяется на кодовую и адресную части. Код команды поступает в блок управления для выработки сигналов, настраивающие микропроцессор на выполнение заданной операции, а также для определения адреса следующей команды, который сразу заносится в счётчик команд.

Адресная часть команды выставляется на шину адреса системы магистрали и сопровождается сигналом выборка “из основной памяти” на шине управления выбранная из оперативной памяти информация поступает на внутреннюю магистраль микропроцессора, с которой вводится в

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

Вкаждом цикле получив команду в регистр команд и выделив

код операции процессор определяет к какому устройству она относится. Если команда должна выполнятся процессором , организуется её выполнение по описанному (ЦП) циклу. Если же команда должна выполнятся в другом устройстве ЭВМ, центральный процессор передаёт её соответствующему устройству. Взаимодействие микропроцессора с внешними устройствами

62

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

Если при обращении ЦП к внешнему устройству продолжение выполнение основной программы возможно только после завершения операции ввода/вывода, то ЦП запустив внешнее устройство переходит в состояние ожидания и находится в нем до тех пор, пока внешнее устройство не сообщит ему об окончании обмена данными. Это – однопрограммный режим, т.к. в каждый момент времени се устройства находятся в режиме ожидания и только одно устройство выполняет программу – синхронный

режим.

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

многопрограммный режим, асинхронный режим.

Вобщем цикле выполнения команд выделяют 6 шагов:

1.выборка команды

2.декодирование команды

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

4.выборка операндов

5.выполнение команды

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

63

9. Совмещение операций

Процессоры с линейным конвейером

Выборка

Декодирование

Выполнение

Запись

Выборка

Декодирование

Переход

1

2

3

4

5

6

7

 

 

 

 

 

 

 

Выборка

Декодирование

Выполнение

Запись

8

9

10

11

 

 

 

 

Выборка

Декодирование

Выполнение

Запись

 

 

 

 

 

 

6 тактов вместо 11

 

Выборка

Декодирование

Переход

 

 

 

 

Выборка

Декодирование

Выполнение

Запись

Характерно для конвейеров (конвейерных линий)

Допустим, что процессор не может работать напрямую с памятью раб. с регистрами

Регистр 1

Регистр 2

Регистр 3

ОП

АЛУ

Сдвиговый регистр

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

64

такт

При падении импульса выставляются затворы регистров,

для того, чтобы данные поступающие из основной памяти записывались в 1

регистр. Кроме того по шине команд передаются инструкции для АЛУ. На

это уходит время сигнала. Затем над надлежащие данные необходимо

отправить в АЛУ. На доставание также тратится время Д , так как прежде чем АЛУ начинает производить вычислительные значения чисел в регистрах, они должны хорошо установиться. После этого АЛУ производит

вычисление АЛУ . После этого этого результат передаются по шине

данных в регистр р При «подъёме» следующих импульсы, они загружаются в регистр.

В каждом цикле есть сигнал, который есть сигнал, который переключает определённые триггеры .Направленные в регистры данные можно загрузить данные лишь в начале импульса (при подъёме импульса), а считывать только в конце.(загрузка в это время блокируется) Именно поэтому АЛУ может течение 1-го такта считать и записывать данные в регистр.

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

1.увеличить скорость прохождения данных

2.сократить время вычисления

3.выполнять как можно меньше операций в течение 1-го такта

На время прохождения данных прохождения данных влияние в основном технологический процесс разработки и температура процессора. Время вычислений можно уменьшить за счёт параллельной обработки команд. А для того чтобы сократить объём производимой в такт работы используется конвейерная обработка .

Рассмотрим способ определения такта конвейера. Один такт работы конвейера – это техническое время операции из всех выполненных данных конвейером плюс время затраченное на выборку данных из регистра и сохранения результатов

Время такта С= Ешн + Д + АЛУ+ Р

Пусть конвейер состоит из N стадий обработки обрабатывания из n команд .

Ткоманды =(N+n-1)*С

Эффекты конвейера – ускорение, даваемое в результате его использования делённое на количество шагов обработки : Е= n/N+n-1 таким образом при N ->эффективность ->1.

65

К сожалению, на практике добиться такого ускорения невозможно, т. е. в потоке данных могут возникнуть зависимости, которые приводят к так называемым конфликтам. Существует три класса конфликтов , которые приводят к сбоям в конвейере :

1. Структурные , которые могут возникнуть из-за конфликта по ресурсам, когда аппаратные средства не могут поддерживать все возможные комбинации команд в режиме одновременного выполнения .

2.По данным возникают в случае, когда выполнение данной команды зависит от результатов предыдущих;

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

Структурные конфликты и способы их минимизации

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

Конфликты по данным

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

Существует 3 вида взаимосвязей между данными, приводящими к сбоям конвейера:

1)Чтение после записи RAW (read after write)т.е попытка прочитать значение , которое ещё не было записано ;

2)Запись после записи WAW (write after write) то есть запись значения до того как предыдущие было записано. Такой тип взаимосвязи возникает в достаточно сложных устройствах., в которых имеется возможность записи на различных этапах обработки. Сбои такого типа наблюдаются также, если в процессоре реализовать сразу несколько конвейеров;

3)Запись перед чтением WAR (write after read) это попытка записи значения до окончания цикла чтения данных предыдущей команды.

66

Так же как и во втором случае (WAW) возникают при наличие нескольких конвейеров .

В общем случае конфликт по данным возникают. Когда применение конвейерной обработки может изменить порядок обращения за операндами так, что этот порядок будет отличаться от порядка , который наблюдается при последовательном выполнение команд на не конвейерной машине . Проблема может быть при помощи достаточно простой аппаратной техники: продвижение (пересылка) данных: обход данных Это аппаратурная работа , следовательно образуется результат операции АЛУ с его выходного регистра, всегда снова подаётся назад на вход АЛУ. Если аппаратура обнаруживает , что предыдущая операция АЛУ записывает результат выполнения в регистр , соответствующего операнда для следующей операции, то логические схемы управления выбираются в качестве входа для АЛУ результат, поступающий по цепи обхода , а не значение прочитанное из файла регистра. Это техника «обходов» может быть обобщена для того, чтобы выполнить передачу результата прямо в ПО функционального устройства, которое в нём нуждается . Т. е. результат с выхода одного устройства поступает непосредственно на вход другого устройства.

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

Конфликты по управлению

Этот самый суровые конфликт могут вызвать даже большие потери производительности, чем конфликт по данным. Когда выполнение команды условного перехода, может изменить (не изменять) значения счётчика команд. Если команда условного перехода заменяет значение счётчика на значением адреса, вычисляемого в команде, то переход называется выполняемый/не выполняемый

В общем случае число тактов теряемых при остановках из-за условного перехода, может быть снижено 2-мя способами :

1. Обнаружение того, является ли условный переход выполнимым или нет на более ранних ступенях конвейера;

2. Более раннее вычисление значений счётчика команд для выполнения этого перехода.

67

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

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

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

III Задержанные переходы

Команда

условного

перехода

Команда 1

Команда n

Целевой адрес

Команды 1..n находятся после команды задержанного перехода. Задача ПО в том, чтобы сделать команды, идущие за командой перехода действительно полезными. Аппаратура гарантирует выполнение этих команд перед реальным выполнением перехода.

1. Временной интервал задержки заполняется независимой командой находящейся перед командой перехода.

АDD R1,R2,R3

If R1=0 THEN

Первая задержка

If R2=0 THEN

АDD R1,R2,R3

R3 –адрес результата

68

Временно интервал задержки заполнен независимой командой, находящейся перед командой условного перехода. Это оптимальная схема, а вторая применяется только тогда , когда данный переход не возможен 2. Команда вычитания

Sub R4,R5,R6

АDD R1,R2,R3

If R2=0 THEN

Интервал

задержки

АDD R1,R2,R3

If R2=0 THEN

Sub R4,R5,R6

R1,R4размеры результата

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

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

АDD R1,R2,R3

If R2=0 THEN

Интервал

задержки

Sub R4,R5,R6

АDD R1,R2,R3

If R2=0 THEN

Sub R4,R5,R6

69

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

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

выполняется. Повышается быстродействие в случае

не выполнения

перехода. Компилятор должен соблюдать данные

требования при

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

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

Предсказание переходов

Существует несколько способов снижения потерь путём предсказания переходов.

2основных подхода:

1.Метод исследования структуры программы – статическое предсказание переходов

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

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

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]