Упрощенная учебная машина (УУМ) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Упрощенная учебная машина (УУМ)



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

Во многих отношениях УУМ похожа на типичную микро-ЭВМ. Подобно многим другим ЭВМ, которые выпускаются промышленностью, УУМ имеется в двух вариантах: в виде стандартной модели и модели УУМ/ДС (где индекс ДС означает с "дополнительными средствами" или, возможно, за "дополнительную стоимость"). Оба варианта спроектированы таким образом, чтобы обеспечивалась совместимость "снизу вверх". Это означает, что объектная программа для стандартной модели УУМ будет правильно выполняться и на УУМ/ДС. (Такая совместимость часто встречается в реально существующих семействах ЭВМ.) Характеристики стандартной модели УУМ описываются в разд. 1.3.1, а дополнительные возможности, включенные в УУМ/ДС, - в разд. 1.3.2.

 

Структура УУМ

Память

Оперативная память состоит из 8-разрядных байтов. Три последовательных байта составляют слово (24 разряда). УУМ имеет байтовую адресацию. Слова адресуются по адресу байта с наименьшим номером. Общий объем оперативной памяти составляет 32768 (215) байт.

Регистры

Имеется пять регистров, у каждого из которых есть собственное назначение. В таблице, приведенной ниже, указаны мнемонические имена регистров, их номера и назначение. (Система нумерации регистров выбрана таким образом, чтобы была обеспечена совместимость с моделью УУМ/ДС.)

 

Имя Номер Назначение

 
 


А 0 Сумматор. Используется при выполнении

арифметических операций

X 1 Индексный регистр. Используется для адресации

L 2 Регистр связи. Команда перехода на подпрограмму

(JSUB) запоминает в этом регистре адрес возврата

PC 8 Счетчик команд. Данный регистр содержит адрес

очередной команды, выбираемой для исполнения

SW 9 Слово состояния. Данный регистр содержит

системную информацию, включая код условия

(СС- Conditional Code)

 
 


Форматы данных

Значения целого типа хранятся в виде 24-разрядного двоичного числа. Для представления отрицательных чисел используется дополнительный код. Значения символьного типа хранятся в 8-разрядном коде ASCII (см. приложение Б). Аппаратные средства для выполнения действий над числами с плавающей точкой в стандартной модели УУМ отсутствуют.

Форматы команд

Все машинные команды стандартной модели УУМ имеют следующий 24-разрядный формат:

8 1 15

код операции (ор) Х адрес (addr)

Признак x используется для задания индексного способа адресации.

Способы адресации

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

Способ Признак Вычисление

адресации адресации целевого адреса ________________________________________________

Прямая x=0 TA=addr

Индексная x=l TA=addr+(X) ________________________________________________

 

Система команд

Для решения большинства простых задач вполне достаточно базового набора команд УУМ. Он включает команды загрузки регистра и записи его содержимого и память (LDA, LDX, STA, STX и т. п.), а также команды целочисленной арифметики (ADD, SUB, MUL, DIV). Все арифметические команды выполняются над содержимым сумматора и содержимым слова оперативной памяти. Результат остается в сумматоре. Специальная команда (СОМР- СОМРаге) служит для сравнения значения, содержащегося в сумматоре, со значением, хранимым в слове оперативной памяти. Эта команда устанавливает код условия СС, являющийся признаком результата сравнения (<, =,>). Команды условного перехода (JLT, JEQ, JGT) проверяют установленное значение СС и выполняют соответствующую передачу управления. Две команды предназначены для организации взаимодействия подпрограмм: JSUВ - переход на подпрограмму с занесением адреса возврата в регистр L; RSUB - возврат по адресу, содержащемуся в регистре L.

В приложении А приведен полный список всех команд УУМ и УУМ/ДС с указанием их кодов и описанием выполняемых функций.

Средства ввода-вывода

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

Команда проверки состояния устройства (TD- Test Device) проверяет готово ли требуемое устройство передать или принять очередной байт данных. Для индикации результата проверки используется код условия. Значение кода условия "<" указывает на готовность устройства к обмену; значение "=" означает, что устройство занято; значение ">" означает что данное устройство неисправно или не подключено к машине. Программа, желающая выполнить обмен, должна ждать до тех пор, пока устройство не будет готово, и только после этого она может выполнить команду чтения данных (RD - Read Data) или команду записи данных (WD - Write Data). Эта последовательность действий должна быть повторена для каждого байта данных, участвующего в обмене. Программа, показанная на рис. 2.1 (гл. 2), иллюстрирует такой способ выполнения обмена.

Структура УУМ/ДС

Память

Структура памяти УУМ/ДС аналогична описанной ранее для УУМ. Однако максимальный объем памяти доступной в УУМ/ДС составляет 1 Мбайт (220 байт). Такое увеличение требует изменения формата команд и спо собов адресации.

Регистры

Дополнительные регистры УУМ/ДС приведены в следующей таблице:

 

Имя Номер Назначение

 

В 3 Базовый регистр. Используется для

адресации

S 4 Общий рабочий регистр. Специального

назначения не имеет

Т 5 То же

F 6 Сумматор с плавающей точкой (48 разрядов)

 

 

Форматы данных

Наряду с форматами данных, которые есть в стандартной модели УУМ/ДС предоставляет дополнительный формат для данных с плавающей точкой:

1 11 36

S порядок Мантисса

Мантисса интерпретируется как число между 0 и 1, т. е. предполагается, что двоичная точка стоит непосредственно перед ее старшим разрядом. Для нормализованных чисел старший разряд мантиссы должен равняться единице. Порядок интерпретируется как двоичное целое без знака в диапазоне от 0 до 2047. Если порядок имеет значение е, а мантисса значение f, то абсолютная величина числа будет представлена как

f * 2 (e -1024)

Знак числа с плавающей точкой указывается с помощью значения разряда s (0 - положительное число, 1 - отрицательное число). Машинный нуль представляется в виде слова, содержащего нули во всех разрядах.

Форматы команд

Большой объем оперативной памяти, доступный в УУМ/ДС, означает что в общем случае 15-разрядного поля для задания адреса будет недостаточно. Таким образом, формат команд стандартной модели УУМ не подходит для УУМ/ДС. Существует два способа решения этой проблемы: либо использовать относительную адресацию, либо расширять адресное поле до 20 разрядов. Оба эти способа используются в УУМ/ДС (см. форматы 3 и 4 в нижеследующем описании). Кроме того, в УУМ/ДС имеются команды, которые вообще не ссылаются на оперативную память. Для этих команд используются форматы 1 и 2.

Ниже приведены форматы команд УУМ/ДС. Значения разрядов-признаков в форматах 3 и 4 будут рассмотрены при об суждении способов адресации. Разряд е используется для того, чтобы различать форматы 3 и 4 (е = О - формат 3, е =l- формат 4). В приложении А для каждой команды УУМ/ДС указан номер ее формата. Формат 1 (1 байт):

 

код операции (ор)

Формат 2 (2 байт):

8 4 4

код операции (ор) r1 r2

Формат 3 (3 байт):

6 1 1 1 1 1 1 12

код операции (ор) n i x b p e Смещение (disp)

Формат 4 (4 байт):

6 1 1 1 1 1 1 20

код операции (ор) n i x b p e Адрес (addr)

 

Способы адресации

По сравнению со стандартной моделью в УУМ/ДС реализованы два новых способа относительной адресации, для которых используются командный формат 3. Их суть описывается следующей таблицей:

Способ Признаки Вычисление

адресации адресации целевого адреса

 

Относительно b = l TA = (B) + disp (0 <= disp>=

4095)

базы p = 0

Относительно b = 0 TA = (PC) + disp (-2048 <= disp

>= 2047)

счетчика р = 1

команд

 

Для способа адресации относительно базы поле смещения в командном формате 3 интерпретируется как 12-разрядное целое без знака. Для способа адресации относительно счетчика команд это поле интерпретируется как 12-разрядное целое со знаком, причем отрицательные величины представляются в дополнительном коде.

Если в командном формате 3 разряды b и р одновременно установлены в О, то в качестве целевого адреса используется значение поля disp. Для командного формата 4 разряды b и p должны оба равняться нулю, а целевой адрес берется из поля адреса команды. Мы будем называть такой способ прямой адресацией в отличие от относительной адресации, описанной выше.

Каждый из этих способов адресации может сочетаться с индексированием адреса. Признаком индексирования является значение разряда х, равное 1, и в этом случае выражение для вычисления целевого адреса содержит дополнительное слагаемое (Х). Заметим, что стандартная модель УУМ использует только прямую адресацию (с индексированием или без него).

Разряды i и n в форматах 3 и 4 определяют способ использования целевого адреса. Если i = 1, а n = 0, то собственно значение целевого адреса используется в качестве операнда без выполнения каких-либо дополнительных ссылок в оперативную память. Такой способ задания операнда называется непосредственной адресацией. Если i = 0, а n = 1, то содержимое слова по целевому адресу используется в качестве адреса операнда. Такой способ называется косвенной адресацией. Если разряды i и n оба равны 0 или 1, то целевой адрес задает местонахождение операнда. Мы будем называть такой способ простой адресацией. При использовании непосредственной и косвенной адресации использование индексирования невозможно.

 

 

* * (В)=006000
* * (РС)=003000
* * (Х)=000090
* *  
     
* *  
* *  
* *  
     
* *  
* *  
* *  
* *  
* *  
  00С303  
* *  
* *  
* *  
* *  
* *  
* *  
С303    
* *  
* *  
* *  
* *  
  а  

 

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

Команды УУМ/ДС, в которых не используется непосредственная или косвенная адресации, переводятся ассемблером в машинные коды, имеющие в разрядах i и n значение 1.Ассемблер стандартной модели УУМ устанавливает в этих разрядах нулевые значения (так как 8-разрядный код операций всех команд стандартной модели заканчивается кодом 00). В УУМ/ДС предусмотрены специальные аппаратные средства для обеспечения упомянутой ранее совместимости "снизу вверх". Если оба разряда i и n имеют нулевое значение, то разряды b, р, е рассматриваются как часть поля адреса

 

Машинная команда    
Шестнадцатеричное Двоичное   Значение, загружаемое в регистр А
  ор n i x b p e Смещение / адрес Целевой адрес
                0110 0000 0000    
                0011 0000 0000    
                0000 0011 0000    
                0000 0011 0000    
                0110 0000 0000    
                0000 1100 0011 0000 0011    

 

б

Рис.1.1 Примеры команд и способов адресации УУМ/ДС.

 

(а не как признаки способа адресации). Таким образом, командный формат 3 становится идентичным командному формату, который используется в стандартной модели УУМ, что и обеспечивает требуемую совместимость.

На рис. 1.1 приведены примеры различных способов адресации, которые обеспечиваются УУМ/ДС. На рис. 1.1а показано содержимое регистров В, PC и X, а также некоторых специально подобранных ячеек оперативной памяти. Значения приведены в шестнадцатеричном виде. Машинный код команды загрузки сумматора, ее целевой адрес и загружаемое значения показаны на рис. 1.16. Вам следует тщательно изучить эти примеры и убедиться в том, что вы правильно понимаете различные способы адресации.

В приложении А дается полное описание всех форматов и способов адресации, используемых в УММ/ДС.

Система команд

УУМ/ДС обеспечивает выполнение всех команд стандартной модели. Дополнительно введены команды загрузки и запоминания содержимого новых регистров (LOB, STB и др.), а также команды арифметики с плавающей точкой (ADDF, SUBF, MULT, DIVF). Имеются команды, использующие в качестве операндов значения регистров. К ним наряду с командой пересылки содержимого одного регистра в другой регистр (RMO) относятся арифметические команды, выполняющие действия над содержимым регистров (ADDRSUBR, MULR, DIVR). Кроме едена специальная команда для обращения к супервизору (SVC). Выполнение этой команды вызывает прерывание, которое может быть использовано для связи с операционной системой. Подробно организация обращений к супервизору и прерывания будут обсуждаться в гл. 6.

Имеются и другие дополнительные команды. Полный список команд УУМ/ДС с указанием их кода операции и выполняемых функций приведен в приложении А.

Средства ввода-вывода

Команды ввода-вывода, рассмотренные нами для стандартной модели выполняются и на УУМ/ДС. Кроме того, данная модель имеет каналы ввода-вывода, которые могут работать независимо от центрального процессора. Это позволяет совместить операции обмена с процессом вычислений и тем самым повысить общую эффективность системы. Для начала (start)проверки (test) и прекращения (halt) канальных операций обмена используются соответственно команды SIO, TIO и HIO. Более детально эти вопросы будут обсуждаться в гл.6.

Структура System / 370

В этом разделе дается краткое введение в System/370. System/370 представляет собой скорее архитектуру, нежели конкретную ЭВМ. Эта архитектура, реализованная на ряде различных машин, представляет модели семейства 370. Хотя эти модели различаются в аппаратной части и по другим физическим характеристикам, они логически совместимы друг с другом. Любая программа должна дать одинаковые результаты на любой ЭВМ семейства 370 при условии, что ее выполнение не связано с временными или другими машинно-зависимыми характеристиками. Архитектура System/370 совместима снизу вверх с машинами System/360, т. е. программы для System/360 должны правильно выполняться на ЭВМ System/370 (при вышеназванных условиях). Весьма похожие архитектуры были реализованы на некоторых других процессорах фирмы IBM и процессорах других фирм.

В этом разделе приводятся основные сведения, которые необходимы чтобы понять примеры программного обеспечения System/370, обсуждаемые в дальнейшем. Дополнительную информацию можно найти в IBM [1983] и Страбл [1983].

Память

Память состоит из 8-разрядных байтов; каждый байт имеет уникальный адрес. Группа из последовательных 2 байт, первый из которых имеет адрес, кратный 2, называется полусловом. Аналогично группа из последовательных 4 байт, начинающаяся с адреса, кратного 4, называется словом, а группа из 8 байт, начинающаяся с адреса, кратного 8,- двойным словом. Таким образом, полуслово имеет длину 16 разрядов, слово - 32 и двойное слово - 64 разряда.

 

Байтовые адреса                     А В С D E F      
Полуслова                  
Слова        
Двойные слова    

Рис. 1.2. Деление памяти System/370 на байты, полуслова, слова и двойные слова.

 

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

Машинные команды должны быть обязательно выравнены по границе полуслова (т. е. должны начинаться с адресов, кратных 2). В большинстве случаев операнды команд могут располагаться в памяти с любого адреса. Например, 16-разрядный операнд в команде АН (Add Halfword) может начинаться с любого места, т. е. он не должен выравниваться по границе полуслова. Однако скорость выполнения команд значительно выше, если операнды выравнены по границам, соответствующим их длинам. Максимальный объем оперативной Памяти, который обычно доступен в System/370, составляет 16 Мбайт (224 байт).

Регистры

В System/370 имеется 16 регистров общего назначения, пронумерованных от 0 до 15. Для их обозначения часто пользуются символическими именами вида R0,...,К15. Каждый регистр состоит из 32 разрядов. Для некоторых команд два последовательных регистра составляют один логический 64-разрядный операнд. Каждый регистр общего назначения может использоваться в качестве сумматора в арифметических и логических операциях. Кроме того, все эти регистры, за исключением RO, могут использоваться как базовые или индексные регистры. Имеется еще четыре других регистра, которые используются для операций с плавающей точкой. Каждый из этих регистров состоит из 64 разрядов. Некоторые команды используют два таких последовательных регистра для хранения 128-разрядных величин с плавающей точкой.

Все упомянутые выше регистры доступны в прикладных программах. В дополнение к ним есть 16 управляющих регистров, которыми пользуется операционная система. Существует также специальный регистр PSW (Program Status Word), содержащий различную системную информацию (счетчик команд, код условия и т. п.).

Форматы данных

System/370 обеспечивает хранение двоичных и десятичных целых, величин с плавающей точкой и символов. Символы хранятся в 8-разрядном коде EBCDIC. Двоичное целое хранится как 16-разрядная (полуслово) или 32-разрядная (слово) двоичная величина. В зависимости от команды эти величины могут рассматриваться как целое со знаком или целое без знака. Для представления отрицательных целых со знаком используется дополнительный код.

Десятичные целые представляются либо в зонном десятичном формате, либо в упакованном десятичном формате. В любом случае представление имеет переменную длину. Число используемых байтов выбирается программистом и зависит от величины максимального хранимого числа. В зонном десятичном формате четыре младших разряда каждого байта содержат двоичное представление десятичных цифр (от 0 до 9). Четыре старших разряда каждого байта, за исключением последнего, обычно содержат код 1111 (шестнадцатеричное F). В этом случае представление в виде зонного десятичного формата совпадает с представлением десятичных цифр в коде EBCDIC. Четыре старших разряда последнего байта могут интерпретироваться как знак. Обычно для положительных чисел эти разряды содержат шестнадцатеричный код С, для отрицательных - код D и для целых без знака (которые рассматриваются как положительные) - код F. Например, десятичное целое +53 842 представляется в зонном десятичном формате как шестнадцатеричное F5F3F8F4C2 (5 байт), а - 6071 - как F6FOF7DI (4 байт). В упакованном десятичном формате каждый байт делится на два 4-разрядных поля. Во всех байтах, за исключением последнего, каждое из этих полей содержит двоичное представление десятичной цифры. В каждом байте первое поле содержит десятичную цифру, а второе - знак (по схеме, описанной выше). Таким образом, десятичное целое +53842 представляется в упакованном десятичном формате как шестнадцатеричное 53842С (3 байт), а - 6071 - как 0607D (3 байт).

Величины с плавающей точкой представляются в одном из следующих форматов:

Короткий формат (слово):

1 7 24

S e f

Длинный формат (двойное слово):

1 7 56

s e F

Расширенный формат (два последовательных двойных cловa):

1 7 56

s el Fl

1 7 56

s e2 f2

 

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

f *16(e -64)

Знак числа определяется значением разряда s (0 - положительное, 1 - отрицательное). Число нуль представляется кодом, содержащим нули во всех разрядах.

Отметим, что порядок чисел с плавающей точкой в Sуstem/370 интерпретируется как степень 16 (а не 2, как в большинстве машин). Это сделано для того, чтобы увеличить порядок чисел, которые могут быть представлены с помощью одного 32-разрядного слова. Поэтому мантиссу следует интерпретировать как шестнадцатеричное (а не двоичное) число. Это означает, что три старших разряда мантиссы могут равняться нулю (если старшая шестнадцатеричная цифра равна 1). В силу этого количество значащих разрядов в мантиссе может быть различным в зависимости от величины числа.

Форматы команд

В System/370 имеется восемь основных форматов команд. В этом разделе мы кратко остановимся на трех наиболее общих из них. Детальное описание всех восьми форматов можно найти в IBM [1983].

У большинства команд System/370 есть два операнда. Для этих команд существуют три возможных варианта расположения операндов в памяти: оба операнда в регистрах; один в регистре, другой в памяти; оба в памяти. Следующие форматы команд являются типичными для каждого из этих случаев.

Формат RR:

8 4 4

ор r1 r2

Формат RX:

8 4 4 4 12

Op r1 x2 b2 d2

Формат SS:

8 4 4 4 12 4 12

op i1 i2 bl dl b2 d2

 

В формате RR оба операнда находятся либо в регистрах общего назначения, либо в регистрах с плавающей точкой. Номер регистра кодируется в команде (как rl или r2). Тип регистра определяется кодом операции. Для команд формата RX один операнд находится в регистре rl, а другой - в оперативной памяти. Для задания полного адреса в System/370 требуется 24 разряда. Для того чтобы уменьшить объем памяти, занимаемый командой, исполнительный адрес (в общем случае) за дается с помощью базового регистра b2, индексного регистра x2 и 12-разрядного смещения d2. (Порядок вычисления целевого адреса для каждого способа адресации будет описан ниже.) В формате SS оба операнда расположены в памяти. Если команда данного типа ссылается на операнды переменной длины, то длина операндов задается в команде с помощью полей 11 и 12. Адреса операндов определяются с помощью базового регистра и смещения. Использование индексного регистра запрещено.

В некоторых других форматах команд поле кода операции расширено до 16 разрядов (форматы RRE и SSE). Формат RX можно изменить так, чтобы разрешить использование второго регистрового операнда вместо индексного регистра (формат RS) или чтобы включить 8-разрядный непосредственный операнд вместо двух номеров регистров (формат SI). Одна из модификаций формата SS определяет 8-разрядный код, который используется в обоих операндах. Другая модификация имеет только один операнд.

Способы адресации

В System/370 команды, которые ссылаются на операнды, расположенные в оперативной памяти, должны использовать относительную адресацию с базированием. Целевой адрес получается как сумма содержимого базового регистра, индексного регистра (если он задан) и смещения. Смещение интерпретируется как 12-разрядное целое без знака (отрицательное смещение запрещено). Регистр общего назначения R0 нельзя использовать как базовый или индексный регистр. Если в команде задан в качестве базового или индексного регистра регистр с номером нуль, то при вычислении целевого адреса соответствующий регистр использоваться не будет. В System/370 применяются два способа непосредственной адресации. В команде LA (Load Address) целевой адрес загружается в заданный регистр (вместо того чтобы вызывать операнд из оперативной памяти). Некоторые другие команды, например такие, как MVI (MoVe Immediate), используют непосредственый однобайтовый операнд прямо из команды. Однако это особые случаи, когда непосредственная адресация определяется как часть команды. В большинстве команд использование непосредственных операндов невозможно.

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

Система команд

Команды System/370 делятся на пять классов: общего назначения десятичной арифметики, арифметики с плавающей точкой, управляющие и ввода-вывода. Многие команды устанавливают 4-разрядный код условия для индикации различных ситуаций. Команды условного перехода могут проверить установленный код и выполнить соответствующее ветвление. Полный список команд System/370 с указанием устанавливаемых ими кодов условия можно найти в IBM [1983].

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

А сложение слова, память - регистр;

АН сложение полуслова, память - регистр;

AL сложение слова, без знака, память-регистр;

ALR сложение слова, без знака, регистр - регистр;

AR сложение слова, регистр - регистр.

К группе команд общего назначения относятся также команды условного и безусловного переходов, логические операции, команды пересылки данных и многие другие операции. В System/370 имеется команда обращения к супервизору (SVC), похожая на аналогичную команду УУМ/ДС.

Команды десятичной арифметики могут быть использованы для выполнения арифметических операций над целыми в упакованном десятичном формате. Кроме того, имеются команды для преобразования зонного десятичного формата в упакованный и наоборот (команды PACK и UNPACK), а также команды преобразования двоичного целого в упакованный десятичный формат и обратно (команды CVD и CVB). Две другие команды предоставляют возможности для редактирования данных, выполняя, например, такие операции, как вставка запятой и десятичной точки в числовые величины.

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

АD сложение с нормализацией, длинный формат память - регистр;

ADR сложение с нормализацией, длинный формат регистр - регистр;

АЕ сложение с нормализацией, короткий формат память - регистр;

АЕR сложение с нормализацией, короткий формат регистр - регистр;

AU сложение без нормализации, короткий формат память - регистр;

AUR сложение без нормализации, короткий формат регистр - регистр;

AW сложение без нормализации, длинный формат память - регистр;

AWR сложение без нормализации, длинный формат регистр - регистр;

AXR сложение с нормализацией, расширенный формат регистр - регистр.

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

Средства ввода-вывода

В System/370 обмен с внешними устройствами осуществляется с помощью каналов ввода-вывода, похожих на те, что были описаны для УУМ/ДС. Команды ввода-вывода позволяют центральному процессору (ЦП) начать, остановить и проверить каналы, а также выполнить другие управляющие операции. Имеется, кроме того, возможность, позволяющая ЦП выполнять прямую побайтную передачу с помощью специального интерфейса, не зависящего от каналов.

 

Структура ЭВМ VAX

Семейство ЭВМ VAX было представлено фирмой DEC в 1978 г. Аббревиатура VAX указывает на одну из наиболее важных особенностей данной архитектуры - виртуальное адресное расширение (Virtual Address eXtension). Хотя многие другие ЭВМ (включая System/370) были модифицированы для предоставления виртуальной памяти, система VAX с самого начала проектировалась в расчете на виртуальное адресное пространство. Виртуальная память позволяет программам работать так, как будто они имеют доступ к очень большой памяти, вне зависимости от объема реальной оперативной памяти, используемой в системе. Заботу об управлении па мятью берет на себя операционная система. Мы обсудим виртуальную па мять в связи с изучением операционных систем в гл. 6.

При проектировании архитектуры ЭВМ VAX была предусмотрена совместимость с более ранним семейством ЭВМ PDP-11. Средства совмести мости обеспечены на уровне аппаратуры, что позволяет выполнять без каких-либо изменений многие программы PDP-11 на ЭВМ VAX. Более того имеется возможность одновременной работы в многопользовательском ре жиме программ для PDP-11 и VAX.

В этом разделе дается сводная информация о некоторых основных характеристиках архитектуры ЭВМ VAX. Дополнительную информацию можно найти в DEC [1981] и Баас [1983].

Память

Память ЭВМ VAX состоит из 8-разрядных байтов, каждый из которых имеет свой адрес. Два последовательных байта составляют слово (word) четыре - длинное слово (longword), восемь - квадрослово (quadword) шестнадцать - октослово (octaword). Как и в System/370, для уменьшения времени доступа к оперативной памяти желательно, чтобы слова, длинные слова, квадрослова и октослова были выравнены по соответствующей границе.

Реальная оперативная память ЭВМ VAX может достигать 223 байт. В то же время все программы VAX работают в виртуальном адресном пространстве объемом 232 байт. Объем реальной оперативной памяти обычно никак не влияет на выполнение прикладных программ. Половина виртуального адресного пространства называется системным пространством (system space). Эта часть содержит программы операционной системы и используется совместно всеми программами. Другая половина адресного пространства называется пространством процессов (process space). Пространство процессов определено отдельно для каждой программы. Часть этого пространства содержит стеки, доступные программе. Для работы со стеками имеются специальные регистры и команды.

Регистры

В ЭВМ VAX есть 16 регистров общего назначения, которые обозначаются как R0 - R15. В то же время некоторые из этих регистров имеют специальные имена и назначение. Длина каждого регистра общего назначения - 32 разряда. Регистр R15 используется как счетчик команд и имеет имя PC. Во время выполнения команды его значение изменяется таким образом, чтобы всегда указывать на очередной обрабатываемый байт команды. Регистр R14 используется в качестве указателя стека (stack pointer) и именуется SP. Этот регистр указывает на вершину стека данной программы в пространстве процессов. Хотя для этой цели можно использовать и другие регистры, однако в машинных командах, косвенно обращающихся к стеку, всегда используется регистр SР. Регистр R13 используется как указатель фрейма (frame pointer) и носит имя FP. Соглашение о связях между процедурами в ЭВМ VAX построено на структуре данных, называемой стеком фреймов. При вызове процедуры адрес фрейма в стеке фреймов помещается в регистр FP. Регистр R12 имеет имя АР и используется в качестве указателя аргументов (argument pointer). В соответствии с соглашением о связях при вызове процедуры этот регистр используется для передачи адреса начала списка фактических параметров.

У регистров R6 - R11 нет специального назначения, и они могут использоваться в программах для обычных целей. Точно так же можно использовать и регистры R0 - R5, но они, кроме того, применяются специальным образом в некоторых командах.

Кроме регистров общего назначения имеется регистр состояния процессора PSL (Processor Status Longword), который содержит переменные состояния и признаки, связанные с процессом. Наряду со многими другими информационными полями PSL содержит код условия и признак, указывающий на работу процесса а режиме совместимости с PDP-11. Есть также ряд управляющих регистров, употребляемых для поддержания различных функций операционной системы.

Форматы данных

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



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 419; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.191.214 (0.12 с.)