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

книги из ГПНТБ / Королев, Л. Н. Структуры ЭВМ и их математическое обеспечение учебное пособие

.pdf
Скачиваний:
25
Добавлен:
21.10.2023
Размер:
10.26 Mб
Скачать

А р и ф м е т и ч е с к и е о п е р а т о р ы .

В системе

команд В-6500/7500

предусмотрены действия

над

операндами, которые

могут представлять

целые,

числа

с плавающей запятой одинарной точности, с плавающей запятой двойной точности. Процессор может выполнять сложение, вычитание, умножение, деление, целочисленное деление, деление с остатком, преобразование веществен­ ного (с плавающей запятой) числа в целое с округлением и отсечением, преобразование операнда двойной точно­ сти в операнд одинарной точности и наоборот, может выполнять полноразрядное умножение (умножение с уд­ военным количеством разрядов). Арифметические опера­ торы (команды) обрабатывают слова, находящиеся е вер­ хушке стека, т. е. в регистрах А, В, X, Y. При выполне­ нии двуместных операций результат помещается в вер­ хушку стека, а два исходных операнда исчезают из стека. В машинах В-6500/7500 принято следующее пред­ ставление данных. Вещественные числа одинарной точ­ ности представляются как числа с плавающей запятой и занимают одно машинное слово. Три старших разряда такого слова служат для задания тега, сопровождающе­ го каждое слово, в котором содержится информация, поз­ воляющая арифметическому устройству различать чис­ ла одинарной и двойной точности. Для задания порядка со знаком используется семь разрядов. Порядок принят октальный. Это позволяет представлять числа в диапазо­ не от (8+13—1)-8+63 до 8_и,т. е. порядок смещен в сторо­ ну больших по абсолютной величине чисел. Эта «несим­ метричность» вызвана тем, что запятая в мантиссе фиксирована не перед старшим ее разрядом, а после млад­ шего. При нулевом коде порядка тем самым разряды ман­ тиссы могут быть использованы для представления целых чисел. Такой способ представления чисел с плавающей запятой и целых упрощает алгоритмы преобразования переменных из одного типа в другой и не требует спе­ циальных средств для того, чтобы отличить один тип от другого. Вещественные числа удвоенной точности пред­ ставляются двумя словами. Первое слово по структуре такое же, как и слово для представления одинарного ве­ щественного. Второе слово содержит продолжение зна­ чащих цифр мантиссы (дробная часть мантиссы), а разря­ ды порядка второго слова используются как старшие разряды порядка, т. е. как «левое» продолжение поряд-

180

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

(813—1)-83267 до 8-32 ~‘ъ&.

Число значащих двоичных цифр, которое определяет точность, для одинарных вещественных чисел равно 39 знакам, для вещественных двойной точности равно 78 знакам, что эквивалентно 12 десятичным знакам в пер­ вом случае и 25 десятичным знакам во втором случае.

>На рис. 15 дано распределение разрядов в словах, пред­ ставляющих вещественные и целые числа.

504048*046

ПредставлениеВещественных

3938 с одинарнойточностью

РазряВыт

f

1

Щ о

ега' Гее

| 010

*■Порядок

''Знакмантиссы или целого ПредставлениеВещественных

у 46неиспольз. с дВошюй точностью

Порядок

Матисса

i

Второеслово

ОТО

Младшиеразрядыпорядка

 

'СтаршиеразряВы порядка

 

Рис.

15.

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

кточности. Правила выполнения операций с разнотипными операндами четко оговорены, и все нарушения этих пра­ вил фиксируются прерыванием. Кроме обычных ариф­ метических операций сложения, вычитания, умножения и деления над числами двойной и одинарной точности, ариф­ метическое устройство В-6500/7500 выполняет такие операции, как целочисленное деление, деление с остат-

181

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

О п е р а т о р ы с р а в н е н и я . Набор операций сравнения, выполняемых процессором, соответствует пол­ ному списку операций отношений АЛГОЛа: больше, больше или равно, равно, меньше или равно, меньше, не равно, эквивалентно. Эти операции отношений выпол­ няются над двумя операндами, находящимися в верхуш­ ке стека. Результатом операции является булево зна­ чение, разряд, принимающий значение О или 1, который помещается в головку стека. Исходные операторы исче­ зают в стеке.

О п е р а ц и и н а д с т р о к а м и (String Opera­ tor). В системе команд В-6500/7500 предусмотрен широ­ кий набор команд обработки последовательностей сим­ волов или строк. Пожалуй, по составу команд обработки строк машины фирмы Барроуз превзошли все другие. Это и понятно: с самого начала фирма специализировалась на машинах коммерческого применения, а в задачах этой области огромная часть работы связана с обработкой символов, с редактированием входных и выходных доку­ ментов, с выдачей результатов в виде отчетов, где тексты занимают большую часть информации. Одной из основ­ ных особенностей языка КОБОЛ, применяемого для программирования планово-экономических и бухгалтер­ ских задач, является его приближенность к обычному языку и развитость операторов обработки текстов и за­ дания форм отчетных документов. Язык КОБОЛ яв­ ляется неотъемлемой частью математического обеспе­ чения машин этой фирмы. Несомненно, этот язык оказал прямое влияние на систему команд, на развитие набора операций обработки текстовой информации. В этом на­ боре предусмотрено пять типов операций перемещения строковой информации по памяти, 16 типов операций поиска в строке нужной комбинации символов, 12 ти­ пов операций сравнения, предусмотрены команды транс­ ляции, распаковки и упаковки двоично-кодированных десятичных чисел, аппаратно выполняемые операции пе­ ревода из десятичной системы в двоичную и обратно. Кроме того, в этот набор входят пять типов операций ре­

182

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

ния

этих сложных операций.

П р и в и л е г и р о в а н н ы е к о м а н д ы . На­

бор

привилегированных команд, использование которых

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

§ 2. Общая схема организации программ

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

Вычислительная часть (собственно программа) со­ держит последовательность командных силлабул и

183

констант. Эта часть не изменяется в процессе вычи­ слений.

В В-6500/7500, как и в других современных маши­ нах, выполняется требование, обеспечивающее возмож­ ность «коллективного» использования одной и той же последовательности команд. Это свойство, как уже гово­ рилось, называется свойством повторной входимости (реентерабельности). Программа может состоять из нескольких подпрограмм, процедур, и для каждой из них может быть выделен собственный участок памяти, кото­ рый называется командным сегментом или сегментом ке­ дов программы (Object Program Code Segment). Под массивы данных и переменные выделяются в памяти обла­ сти данных, массивы, которые также могут располагать­ ся на любом месте памяти и через дескрипторы связы­ ваются с программой. Наконец, для каждой программы выделяется массив памяти для ее стека (магазина). Пе­ речисленные выше участки памяти могут быть разбро­ саны произвольным образом. Распределением памяти ве­ дает главная управляющая программа (Master Control Program — МСР) — главная часть операционной си­ стемы В-6500/7500.

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

1.Программные сегменты, содержащие последова­ тельности команд, строки силлабул.

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

3.Область памяти, выделенная для стека, связанного

сданной программой.

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

Машины В-6500/В-7500, впрочем, как и все современ­ ные машины, в которых реакция на прерывания и дина­

184

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

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

машинах В-6500/7500 эти функции

административ­

ных систем переложены, главным

образом, на аппара­

туру.

следующей структу­

Рассмотрим пример программы

ры. Внешний охватывающий блок (ОБ)

содержит обра­

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

185

Рис. 16.

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

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

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

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

те

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

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

187

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

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

Итак, мы проследили, как произошло обращение из охватывающего блока к процедуре А и что при этом произошло со стеком и регистрами F и S центрального процессора. В какой-то момент процедура А обратится к программному сегменту С. Это делается точно по той же схеме, как было рассказано выше, но при этом будет использован новый D-регистр, обеспечивая возможность в свою очередь процедуре С обращаться к более «глубо­ ким» процедурам. Если процедура С нуждается во внеш­ них данных, генерированных процедурой А, то она ими может воспользоваться, например, с помощью указания младшего по номеру D-регистра. Если ей нужны пере­ менные охватывающей процедуры, она также может ими воспользоваться через косвенную ссылку по D-регистру. Окончив свое выполнение, процедура С выйдет на коман-

188

ду возврата, и процедура А продолжит свое выполнение. Вся необходимая для возврата информация находится в стеке, а адрес, опираясь на который можно осуществить этот возврат, находится в регистре F. В самом деле, в сле­ дующем слове за MSCW, на которое указывает F, рас­ положено управляющее слово внешней процедуры, а в самом MSCW находится ссылка на MSCW, указывающая состояние стека внешней процедуры. Этот возврат де­ лается аппаратно, и управляющие регистры центрально­ го процессора приводятся в то состояние, которое они имели к моменту ухода на вложенную подпрограмму (процедуру, блок). В свою очередь, закончив свое вы­ полнение, процедура А осуществляет возврат в самый внешний блок. Таким же путем производится обращение к процедуре В и от В и С. Вот здесь следут заметить, что теперь процедура С будет использовать в качестве внеш­ них переменные величины, накопленные в стеке проце­ дурой В, а не процедурой А, как в предыдущем случае. При этом менять команды процедуры С нет никакой на­ добности, она воспользуется именно теми значениями, ко­ торые необходимы. Как можно заметить, аппарат обра­ щения к переменным внешней процедуры построен по рекурсивному принципу, и, если к процедуре С произо­ шло обращение от процедур очень глубоких уровней вло­ женности, путаницы не произойдет, обращение будет произведено к переменным охватывающей процедуры. В частности, этот механизм обеспечивает обращение процедуры к самой себе, т. е. обеспечивает рекурсивные обращения. Если использовать только возможности ап­ паратуры для организации вложений, то глубина не должна превышать 32 (для рабочих программ — 30). Практически это не является ограничением. Опыт про­ граммирования задач на АЛГОЛе говорит о том, что глубина вложений обычно равна 2—3, в достаточно ред­ ких случаях достигает 7—8. Разумеется, легко можно выдумать задачу, где глубина вложений может быть очень велика.

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

189

Соседние файлы в папке книги из ГПНТБ