Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Лекции - Организация ЭВМ и систем - файл Глава_3_Часть2-1.doc


Загрузка...
Лекции - Организация ЭВМ и систем
скачать (989.6 kb.)

Доступные файлы (10):

ВВЕДЕНИЕ-12.03.doc25kb.19.05.2004 10:51скачать
ГЛАВА 1,2-12.03.doc286kb.19.05.2004 10:51скачать
Глава_3_Часть1.doc232kb.19.05.2004 10:51скачать
Глава_3_Часть2-1.doc237kb.19.05.2004 10:51скачать
ГЛАВА 4.-12.03.Отч.doc852kb.19.05.2004 10:51скачать
ГЛАВА 5.-12.03.doc184kb.19.05.2004 10:51скачать
ГЛАВА 6.-241203_Отч.doc2397kb.19.05.2004 10:51скачать
ГЛАВА 7.-12.03.doc313kb.19.05.2004 10:51скачать
ЛИТЕРАТУРА.doc23kb.19.05.2004 10:51скачать
ОГЛАВЛЕНИЕ.doc52kb.19.05.2004 10:51скачать

Глава_3_Часть2-1.doc

Реклама MarketGid:
Загрузка...
При выполнении операции сложения производится сложение двоичных кодов, включая разряды знаков. Если при этом возникает перенос из знакового разряда суммы при отсутствии переноса в этот разряд или перенос в знаковый разряд при отсутствии переноса из разряда знака, то имеется переполнение разрядной сетки соответственно при отрицательной и положительной суммах. Если нет переносов из знакового разряда и в знаковый разряд суммы или есть оба эти переноса, то переполнения нет и при О в знаковом разряде сумма положительна и представлена в прямом коде, а при 1 в знаковом разряде сумма отрицательна и представлена в дополнительном коде.

В состав АЛУ входят n-разрядный параллельный комбинационный сумматор См, регистр сумматора РгСм, входные регистры сумматора РгВ и РгА, входной регистр АЛУ Рг1 (см. рис. 3.11).

Из оперативной памяти по входной информационной шине ШИВх в АЛУ поступают операнды. Операнды размещаются в РгВ (первое слагаемое или уменьшаемое) и Рг1 (второе слагаемое или вычитаемое): Рг1 соединен с РгА цепями прямой и инверсной передачи кода. Прямая передача используется при операции алгебраического сложения, а инверсная - при операции вычитания. Результат операции выдается из АЛУ в оперативную память по выходной информационной шине ШИВых.

При выполнении операции в АЛУ помимо результата операции формируется 2-разрядный код признака результата ПР, который принимает следующие значения:

Результат операции Признак результата

0 0 0

<0 0 1

>0 1 0

Переполнение 1 1

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

При выполнении алгебраического сложения поступившие в АЛУ коды операндов находятся на входных регистрах РгВ и РгА сумматора. Код суммы формируется на выходах схемы См и фиксируется в регистре РгСм.

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

Z=X-Y=X+(-Y)

вычитаемого Y и операции алгебраического сложения. Изменению знака соответствует следующая процедура: принятый в Рг1 код числа передается инверсно в РгА и при сложении осуществляется подсуммирование 1 в младший разряд сумматора.

Передачи информации в регистрах АЛУ производятся отдельными




Рис. 3.11. Структурная схема АЛУ для сложения и вычитания

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

Микропрограммы операций сложения и вычитания на языке микроопераций имеют следующий вид:

ПрРгВ : РгВ:=ШИВх (прием 1 операнда),

ПрРг1 : Рг1:=ШИВх (прием 2 операнда);

Прием: если сложение, то РгА:= Рг1 иначе РгА: = ;

Сумма: если сложение, то РгСм:= РгА + РгВ иначе

РгСм:= РгА + РгВ+1,

ПрУБ: если ПР=11, то прерывание иначе

ПрШИВых: ШИВых:= РгСм (выдача результата);

конец.

Микрооперация ПрУБ состоит в выдаче в управляющий блок признака и в формировании запроса прерывания при переполнении разрядной сетки.

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

Произведение двух (n-1) - разрядных чисел может иметь 2(n-1) значащих разряда. Поэтому при операции умножения целых чисел необходимо предусмотреть возможность формирования в АЛУ произведения, имеющего двойную по сравнению с сомножителями длину. В ЭВМ, в которых числа с фиксированной точкой являются дробями, младшие n-1 разрядов произведения часто отбрасываются (при отбрасывании может производиться операция округления произведения).

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

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

В зависимости от способа формирования суммы частичных произведений различают четыре основных метода выполнения умножения и соответственно четыре структуры АЛУ для этой операции. Для определенности сначала будем считать, что оба сомножителя - положительные числа.

1. Умножение, начиная с младших разрядов множителя, со сдвигом суммы частичных произведений вправо при неподвижном множимом.

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

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

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

2. Умножение, начиная с младших разрядов множителя, при сдвиге множимого влево и неподвижной сумме частичных произведений.

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

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

3. Умножение, начиная со старших разрядов множителя, при сдвиге суммы частичных произведений влево и неподвижном множимом. Регистр множителя и сумматор частичных произведений должны иметь цепи сдвига влево. Регистр множимого не имеет цепей сдвига.

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

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

4. Умножение, начиная со старших разрядов множителя, при сдвиге вправо множимого и неподвижной сумме частичных произведений.

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

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

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

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

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

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

1. Берутся модули от сомножителей.

2. Исходное значение суммы частичных произведений принимается равным 0.

3. Если анализируемая цифра множителя равна 1, то к сумме частичных произведений прибавляется множимое, а если эта цифра равна 0, то прибавление не производится.

4. Производится сдвиг суммы частичных произведений вправо на один разряд.

5. Пункты 3 и 4 последовательно выполняются для всех цифровых разрядов множителя, начиная с младшего.

6. Произведению присваивается знак плюс, если знаки сомножителей одинаковы, в противном случае - знак минус.

Особенностью умножения целых чисел является необходимость представления результата умножения двух n-разрядных слов двойным словом, при этом число цифровых разрядов двойного слова 2N-1 на 1 больше числа 2n-2 цифровых разрядов произведения двух чисел, содержащих n-1 цифровых разрядов.

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

Умножение чисел со знаком можно свести к взятию модулей от сомножителей, их перемножению и формированию знакового разряда произведения.

На рис. 3.12 представлена структурная схема АЛУ для умножения n-разрядных целых двоичных чисел. В состав АЛУ входят входной регистр множимого Рг1, регистры множителя Рг2 и Рг2’, на которых с помощью косой передачи вправо Рг2’:=П(1) Рг2 и передачи Рг2:= Рг2’ выполняется сдвиг множителя вправо; сумматор См для образования суммы частичных


^

Рис. 3.12. Структурная схема АЛУ для умножения целых чисел



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

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

В зависимости от значения 0 или 1 младшего разряда множителя к частичному произведению прибавляется либо 0, либо Х, для чего соответствующее значение присваивается регистру РгА; полученная сумма умножается на 2-1 путем передачи кода с выхода сумматора на РгСм со сдвигом на один разряд вправо.

Одновременно множитель подготавливается к перемещению в ^ Рг2 так, чтобы на месте анализируемого младшего разряда Рг2 оказался следующий разряд множителя. Для этого содержимое Рг2 переносится в Рг2’ со смещением вправо на один разряд. Разряд 0 Рг2’ при этом остается свободным, и в него заносится младший разряд суммы выходящий при сдвиге за пределы РгСм (Рг2’[0]: =См[n-1]). В следующем такте завершается сдвиг множителя путем занесения содержимого Рг2’ в Рг2, и в РгВ образуется сдвинутая сумма частичных произведений. Кроме того, в этом такте уменьшается на 1 содержимое счетчика циклов.

Когда счетчик циклов установится в 0, в РгСм и Рг2 будут храниться соответственно старшие и младшие разряды произведения, требующие сдвига на один разряд вправо для правильного расположения в формате двойного

слова. После выполнения этого сдвига результат операции из РгСм и РгВ поступает на ШИВых. Микрооперации выдачи произведения на ШИВых на рисунке не показаны.

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

Дополнительные затраты оборудования при реализации логических методов ускорения умножения не зависят от разрядности операндов. Усложняется в основном схема управления АЛУ. В ЭВМ для ускорения умножения часто используются комбинации этих методов.

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

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

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

Рассмотрим особенности деления на примере деления целых чисел. Пусть Z=X/Y, где Х - делимое, представляемое обычно двойным словом (2n-1 цифровых разрядов), Y - делитель и Z - частное, представляемые словами, содержащими n-1 цифровых разрядов. Будем для простоты считать, что делению подвергаются целые числа, представляемые в прямом коде. Так как Z - слово, то должно выполняться неравенство |Z|<2n-1. Это возможно при (|X’| - |Y|)<0, где |X’|=|X|2- (n-1). Для получения |X’| - |Y| следует вычесть из делимого |X| делитель Y, выровняв их так, чтобы младший разряд |Y| был под n-м разрядом. Этого можно добиться, сдвинув |Y| относительно |X| на n-1 разряд влево. Если результат пробного вычитания больше 0, то |Z|>=2n-1 и деление невозможно, если он меньше 0, то можно выполнить деление.

В соответствии с правилами деления очередной цифрой частного является 1, если после вычитания делителя из остатка получается положительный результат, и 0, если отрицательный. В последнем случае восстанавливается остаток, который был до вычитания. Затем делитель смещается на разряд вправо, и процедура повторяется.

Реализовать деление можно двумя основными способами: деление с неподвижным делимым и сдвигаемым вправо делителем (недостатком такого АЛУ является двойная длина сумматора и его регистров), деление с неподвижным делителем и сдвигаемым влево делимым.

Алгоритм деления с неподвижным делителем с восстановлением остатка:

1. Берутся модули от делимого и делителя.

2. Исходное значение частичного остатка полагается равным старшим разрядам делимого.

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

4. Из сдвинутого частичного остатка вычитается делитель и анализируется знак результата вычитания.

5. Очередная цифра модуля частного равна 1, если результат вычитания положителен, и 0, если отрицателен. В последнем случае значение остатка восстанавливается до того, которое было до вычитания.

6. Пункты 3-5 последовательно выполняются для получения всех цифр модуля частного.

7. Знак частного плюс, если знаки делимого и делителя одинаковы, и минус в противном случае.

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

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

Пункты 1-3 совпадают с аналогичными пунктами алгоритма деления с восстановлением остатка.

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

5. Очередная цифра модуля частного равна 1, если результат положителен, и 0, если отрицателен.

Пункты 6, 7 совпадают с аналогичными пунктами предыдущего алгоритма.

Следует отметить, что частичные остатки после выполнения сложения при делении без восстановления остатка получаются такими же, как и после сдвига восстановленного остатка при делении с восстановлением остатка.
3.5. Принципы организации системы прерывания программ

3.5.1. Состояние процессора
Понятие состояния процессора (состояния программы) занимает важное место в организации вычислительного процесса в ЭВМ.

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

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

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

Совокупность значений этих информационных элементов получила название вектора состояния или слова состояния процессора (программы).

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

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

Наборы информационных элементов, образующих векторы состояния, отличаются у ЭВМ разных типов. Например, вектор состояния микропроцессора К580 включает в себя содержимое 16-разрядного счетчика команд (адрес очередной команды), содержимое 8-разрядного регистра признаков, называемое в документации на этот микропроцессор словом состояния процессора, и содержимое 8-разрядного регистра аккумулятора АЛУ.

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

^ 3.5.2. Организация прерываний в ЭВМ, система прерываний

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

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

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

Каждое событие, требующее прерывания, сопровождается сигналом, оповещающим ЭВМ. Назовем эти сигналы запросами прерывания. Программу, затребованную запросом прерывания, назовем прерывающей программой, противопоставляя ее прерываемой программе, выполнявшейся машиной до появления запроса.

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

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

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

^ Характеристики системы прерывания.

Общее число запросов прерывания (входов в систему прерывания).

Время реакции - время между появлением запроса прерывания и началом выполнения прерывающей программы.

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

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

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

^ Затраты времени на переключение программ (издержки прерывания) равны суммарному расходу времени на запоминание (tз) и восстановление состояния программы (tв):

tизд = tз + tв

^ Глубина прерывания - максимальное число программ, которые могут прерывать друг друга.

Если после перехода к прерывающей программе и вплоть до ее окончания прием других запросов запрещается, то говорят, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Глубина прерывания обычно совпадает с числом уровней приоритета в системе прерываний.

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

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


ОСП

^

Рис. 3.13. Разделение запросов на классы прерывания



Запросы всех источников прерывания поступают на регистр запросов прерывания РгЗП, устанавливая соответствующие его разряды (флажки) в состояние 1, указывающее на наличие запросов прерывания определенного источника. Запросы прерывания ЗПК1-ЗПКk формируются элементами ИЛИ, объединяющими разряды РгЗп, относящиеся к соответствующим классам (уровням). Еще одна схема ИЛИ формирует общий сигнал прерывания ОСП, поступающий в устройство управления процессора. Значение сигнала ОСП определяется выражением



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

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

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

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

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

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

^ Процедура прерывания с опросом источников (флажков) прерывания. При указанном способе задания приоритета между запросами каждому источнику запросов соответствует разряд (флажок) в регистре запросов прерывания (регистре флажков).

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

Существуют различные способы реализации процедуры опроса источников сигналов прерывания: программный опрос; циклический опрос; цепочечный однотактный опрос.

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

Более гибким и динамичным является векторное прерывание, при котором исключается опрос источников прерывания (флажков регистра прерывания).

^ Прерывание называется векторным, если источник прерывания, выставляя запрос прерывания, посылает в процессор (выставляет на шины интерфейса) код адреса в памяти своего вектора прерывания.

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

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

В современных ЭВМ в основном применяется способ реализации программно-управляемого приоритета прерывающих программ, на основе использования порога прерывания.

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

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

Рассмотрим особенности системы прерывания микроЭВМ.

^ Запросы прерываний. Пример схемы цепей запросов и разрешений прерываний представлен на рис. 3.14. Запросы внешних прерываний генерируются периферийными устройствами (ПУ). Имеется четыре уровня


Рис. 3.14. Схема цепей запросов и разрешений прерываний

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

запросы прямого доступа к памяти. Каждый уровень обслуживает своя линия запросов прерывания (ЗПi) , к которой параллельно (по схеме ИЛИ) подсоединяются ПУ соответствующего уровня приоритета. Имеется одна линия для выдаваемого арбитром сигнала разрешения прерывания (РП), проходящая последовательно через все ПУ с приоритетом от четвертого до седьмого. Кроме того, имеется отдельная линия для сигнала разрешения прямого доступа к памяти (РПД), также проходящая последовательно через все ПУ, подключенные к линии запросов прямого доступа (ЗПД).

Схема Арбитр из выставленных запросов выделяет запрос старшего уровня приоритета и сравнивает его уровень с приоритетом процессора, т.е. с программно-устанавливаемым в регистре слова состояния процессора порогом прерывания. Если уровень наиболее приоритетного из выставленных запросов

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

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

Последней командой прерывающей программы – командой «возврат из прерываний» - первое слово вектора состояния прерванной программы загружается из стека в счетчик команд, а второе слово – в регистр слова состояния процессора.

Имеются особенности в процедуре выполнения запросов прерываний ЗП8 (запросов прямого доступа к памяти). Их приоритет всегда выше приоритета процессора. Поэтому в ответ на запрос ЗПД (ЗП8) сигнал разрешения РПД посылается немедленно, даже если не завершено выполнение текущей команды, и производится обмен данными между периферийным устройством и ОП без участия процессора.
^ 3.6. Выполнение команд процессором

3.6.1. Рабочий цикл процессора

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

На рис. 3.15 показан вариант рабочего цикла для четырех групп команд: основных (осуществляющих арифметические, логические и пересылочные операции); передачи управления; ввода-вывода; системных (устанавливающих состояние процессора, маску прерывания, слово состояния программы и др.).

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

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

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


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

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

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

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

Команды ввода-вывода инициируют в канале операцию обмена информацией между основной памятью ЭВМ и периферийным устройством. Сама эта операция выполняется каналом под управлением его собственной программы. Поэтому на долю процессора остается только процедура опроса состояний канала и периферийного устройства - свободны ли они для операции ввода-вывода. Если свободны, процессор выдает в канал информацию, необходимую для начала операции ввода-вывода. В противном случае процессор переключается в состояние Ожидание и ждет сигнала прерывания от этого канала.
^ 3.6.2. Конвейер операций

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

tпосл =t1+t2+t3+t4+t5 (1)

и производительность процессора, операций (команд)/секунду,

Pпосл =1/tпосл =1/(t1+t2+t3+t4+t5) (2)

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

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

Пусть рабочий цикл процессора состоит из k этапов, причем i-й этап имеет продолжительность ti, тогда при последовательном выполнении этапов продолжительность процедуры

, (3)

и общая производительность процессора, операций в секунду

. (4)

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

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

Разбиение процедуры на этапы и выбор длительности такта производятся согласно условиям

t =max{ti}, i=1, ..., k; (5)

ti+ti+1> tT , i=1, ..., k, (6)

причем в силу цикличности рабочего процесса в последнем неравенстве принимаем tk+1=t1.

Если для каких-либо смежных этапов условие (6) не выполняется, то их следует объединить в один этап, либо наиболее длинный этап разбить на несколько этапов. В последнем случае заново выбирается tT и вновь проверяется условие (5).

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

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

Номинальная производительность синхронного конвейера при его полной загрузке

(7)


Найдем соотношение производительностей процессора при конвейерной обработке и при последовательном выполнении этапов рабочего цикла. Из (3) и (5) имеем

, (8)

а из (3) и (6) получаем

(9)

Из [8] и [9] получаем

. (10)

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

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

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

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

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

f1  f2  f3  ...  fk ,

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

Приведенные выше элементы теории синхронного конвейера команд остаются в силе и для синхронного арифметического конвейера. Если tт - такт конвейера, то после полной загрузки он станет выдавать значения функции Ф через интервалы времени tт. Увеличение производительности процессора за счет использования арифметического конвейера можно оценить по формуле (10).

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

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

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


Скачать файл (989.6 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru