
IBM370
.pdfячейке основной памяти доступ к ней разрешается в соответствии с приоритетами; при этом каналы имеют наивысший приоритет, а процессоры – переменный. Если в результате первого обращения содержимое ячейки изменилось, то любая последующая выборка из нее дает это измененное содержимое.
Основная память может быть как энергозависимой, так и энергонезависимой. При отключе-
нии питания в случае энергозависимой памяти ее содержимое не сохраняется. При включении или отключении питания в случае энергонезависимой памяти ее содержимое остается неиз-
менным при условии, что процессор находится в состоянии “стоп” и в момент отключения пита-
ния нет обращения к основной памяти со стороны каналов. При отключении питания содержи-
мое ключей защиты памяти в случае использования обоих типов памяти не сохраняется.
Структура информации
Между основной памятью, процессором и каналом информация передается блоками, число битов в которых равно или кратно 8. Восьмибитовый блок называется байтом и является ос-
новным элементом всех форматов.
Биты в байте нумеруются последовательно слева направо от 0 до 7. В любом формате в программе или в любом операнде фиксированной длины, состоящем из нескольких байтов, би-
ты, образующие формат, нумеруются последовательно слева направо, начиная с 0. Левые би-
ты иногда называют старшими битами, правые – младшими.
С целью обнаружения ошибок, а в некоторых моделях и с целью их исправления с каждым байтом или группой байтов передается один контрольный бит или несколько таких битов. Кон-
трольные биты генерируются в системе автоматически, и программа не может оказать на них непосредственного влияния. Далее при указании размеров полей данных и регистров кон-
трольные биты не учитываются. Емкость памяти выражается независимо от ширины обраще-
ния к памяти.
Байты могут храниться и обрабатываться каждый отдельно или группами (полями), состоя-
щими из нескольких байтов. Полуслово представляет собой группу из двух последовательно расположенных байтов и является основным образующим блоком команд. Слово является группой из четырех последовательно расположенных байтов; двойное слово представляет со-
бой группу из двух последовательно расположенных слов. Положение любого поля или группы байтов определяется адресом самого левого байта.
Длина поля либо определяется кодом операции, которая должна быть выполнена (т.е. за-
дается неявно), либо задается явно как часть команды. Когда длина задана неявно, говорят,
что информация имеет фиксированную длину, которая может быть равна 1, 2, 4 или 8 байтам.
Когда длина поля не определяется кодом операции, а задается явно, то говорят, что ин-
формация имеет переменную длину. Поля переменной длины отличаются между собой по длине на целое число байтов.
11
Когда информация заносится в основную память, изменяется содержимое только байтовых ячеек, входящих в поле, адрес и длина которого заданы в команде, хотя ширина обращения к памяти может превосходить размеры этого поля.
Адресация
Ячейки памяти, содержащие байты, нумеруются последовательно слева направо, начиная с нуля. Каждый номер считается адресом соответствующего байта. При адресации группы бай-
тов в памяти указывается адрес самого левого байта этой группы. Число байтов в группе либо подразумевается, либо явно определяется операцией. Для адресации используется 24-
битовый адрес, который дает возможность адресоваться самое большее к 16 777 216 байтам.
Адресация в памяти организована циклически: за ячейкой памяти с максимальным адресом
16 777 215 следует ячейка с адресом 0. Информация может быть помещена частично в по-
следние и частично в первые ячейки памяти, причем обработка ее ведется без специальной индикации пересечения границы максимального адреса.
При обращении в основную память можно использовать адреса трех видов: абсолютные,
реальные и логические.
Абсолютные адреса относятся к низшему уровню адресов, распознаваемых программой; в
данном случае это адреса физических ячеек памяти. На некоторых моделях оператор может изменять соответствие между абсолютными адресами и физическими ячейками памяти. Но в каждый момент одна физическая ячейка памяти соответствует не более чем одному абсолют-
ному адресу.
Если процессор оборудован для мультипроцессирования, то предусматривается механизм преобразования адресов, который позволяет отображать первые 4096 байтов реальной основ-
ной памяти каждого процессора на области с различными абсолютными адресами памяти.
Этот механизм называется префиксацией. Большинство генерируемых процессором адресов подвержено действию механизма префиксации и преобразуются, если в этом возникает необ-
ходимость. Адреса, подлежащие воздействию механизма префиксации, называются реальны-
ми. При отсутствии механизма префиксации реальный адрес совпадает с соответствующим абсолютным адресом.
Когда динамическое преобразование адресов включено, адреса, задаваемые программой,
обычно преобразуются в реальные адреса до того, как произойдет обращение к основной па-
мяти. Программа задает адрес, называемый логическим адресом. При отсутствии динамиче-
ского преобразования логический адрес и соответствующий реальный адрес совпадают.
Все процессоры и каналы, имеющие доступ к общей ячейке памяти, имеют также доступ и ко всему блоку объемом 2048 байтов, содержащему эту ячейку, а также к соответствующему ключу памяти. Процессоры и каналы обращаются к общей ячейке основной памяти, используя один и тот же абсолютный адрес.
Память обычно имеет абсолютные адреса, начинающиеся с нуля, и объем ее кратен 2048
байтам. При попытке обращения к основной памяти по абсолютному адресу, которому не соот-
12
ветствует никакая физическая ячейка, распознается особый случай. Обычно это происходит только тогда, когда информация, связанная с абсолютным адресом, действительно требуется для выполнения операции. Если операция может завершиться без использования этой инфор-
мации, то особый случай не распознается.
Расположение информации
Целочисленные границы
Поля фиксированный длины, такие, как полуслова или двойные слова, должны размещать-
ся в основной памяти, начиная с целочисленной границы для данного блока информации. Гра-
ница для некоторого блока информации называется целочисленной, когда ее адрес кратен числу байтов в блоке. Например, слово (4 байта) размещено на целочисленной границе, если его адрес кратен 4. Полуслово (2 байта) должно быть размещено в памяти так, чтобы его адрес был кратен 2, а двойное слово (8 байтов) должно иметь адрес, кратный 8 (рис. 2.2).
· |
|
|
|
|
|
|
· ------ |
Адреса памяти |
|
|
|
|
|
· |
|
|
|
|
|
|
· |
|
|
|
|
|
|
+------------------------------------- |
|
|
|
|
|
|
????? |
|
¦ 0 ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ |
||||
+------------------------------------- |
|
|
|
|
|
|
· |
· |
· |
· |
· |
|
|
· |
· |
· |
· |
· |
|
|
· |
· |
· |
· |
· |
|
|
+------------------------------------- |
|
|
|
|
|
|
????????? |
¦ 0 |
¦ 2 |
¦ 4 |
¦ 6 |
¦ 8 |
|
+------------------------------------- |
|
|
|
|
|
|
· |
|
· |
|
· |
|
|
· |
|
· |
|
· |
|
|
· |
|
· |
|
· |
|
|
+------------------------------------- |
|
|
|
|
|
|
????? |
|
¦ 0 |
|
¦ 4 |
|
¦ 8 |
+------------------------------------- |
|
|
|
|
|
|
· |
|
|
|
· |
|
|
· |
|
|
|
· |
|
|
· |
|
|
|
· |
|
|
+------------------------------------- |
|
|
|
|
|
|
??????? ????? ¦ 0 |
|
|
|
¦ 8 |
||
+------------------------------------- |
|
|
|
|
|
|
Рис. 2.2. Примеры для байтов, полуслов, слов и двойных слов
13
При использовании двоичного кода целочисленные границы для полуслов, слов и двойных слов задаются двоичными адресами, у которых соответственно один, два или три младших би-
та равны нулю.
Команда должна располагаться на целочисленной границе полуслова; слова команды кана-
ла и операнды некоторых привилегированных команд должны располагаться на целочисленной границе.
Допустимость произвольной байтовой границы
На всех моделях Системы 370 допускается расположение операндов большинства непри-
вилегированных операций на произвольной байтовой границе.
Это несправедливо для адресов команд и операндов команд СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ. Команды должны быть выровнены по границам четных байтов. Младший бит адреса при выполнении перехода должен быть равен нулю, и команда ВЫПОЛНИТЬ должна указывать команду с четным адресом. Команда СРАВНЕНИЕ С ОБМЕНОМ должна указывать операнд на границе слова, а команда СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ – на границе двойного слова.
Замечания по программированию
Если операнды в памяти не расположены по адресам, кратным их длинам, производитель-
ность в большинстве случаев заметно падает. Для обеспечения оптимальной производитель-
ности вычислительной установки операнды в памяти должны быть выровнены по целочислен-
ным границам, а операнды, не выровненные по целочисленным границам, следует применять лишь в исключительных случаях.
2.2.Процессор
Процессор – это центр всей системы, управляющий последовательностью и ходом выпол-
нения команд, действиями при прерываниях, работой средств отсчета времени, начальной за-
грузкой программы, а также другими функциями.
Процессор во всех моделях Системы 370 выполняет одни и те же логические функции, хотя его конструкция может изменяться от модели к модели. Результат выполнения действительной команды будет одинаковым вне зависимости от используемой модели.
Процессор может обрабатывать числа, записанные в двоичном коде, числа с плавающей точкой фиксированный длины, десятичные числа переменной длины и логическую информа-
цию, имеющую фиксированную или переменную длину. Обработка может идти параллельно или последовательно; размеры элементарных блоков информации при обработке, количество одновременных сдвигов и степень совмещения при выполнении арифметических операций мо-
гут различаться у разных процессоров, но это не влияет на получаемые логические результа-
ты.
Выполняемые процессором команды образуют пять классов: команды управления систе-
мой, общие команды, команды для выполнения действий над десятичными числами, команды
14
для выполнения действий над числами с плавающей точкой и команды ввода-вывода. Команды управления системой и команды ввода-вывода являются привилегированными командами, ко-
торые могут выполняться только тогда, когда процессор находится в состоянии “супервизор”.
Общие команды применяются при выполнении переходов, логических операций над числами с фиксированной точкой и других операций, связанных с управлением системой и обработкой данных. Десятичные команды обрабатывают данные, имеющие десятичный формат, команды с плавающей точкой – данные, имеющие формат с плавающей точкой.
Для выполнения своих функций процессор помимо основной памяти имеет некоторую внут-
реннюю память. Программа может задать использование областей этой памяти, например слова состояния программы, регистров с плавающей точкой, управляющих регистров, регистра префикса, а также регистров, связанных со средствами отсчета времени.
В текущем слове состояния программы содержится информация, которая определяет по-
следовательность выполнения команд, а также позволяет фиксировать и производить индика-
цию состояний системы по отношению к выполняемой в данный момент программе. Регистры,
связанные с отсчетом времени, – это часы, компаратор и таймер CPU. Общие регистры, реги-
стры с плавающей точкой и управляющие регистры описаны ниже. Код операции в команде определяет тип регистра, используемого в этой операции.
Общие регистры
Центральный процессор может обращаться за информацией к 16 общим регистрам. Общие регистры могут быть использованы в качестве регистров индекса в операциях над адресами и при индексации, а также как накапливающие регистры в арифметических операциях с фикси-
рованной точкой и логических операциях. В регистр можно поместить одно слово (32 бита).
Общие регистры определяются числами от 0 до 15 и задаются в команде с помощью четы-
рехбитового поля R. Некоторые команды имеют по несколько полей R, чтобы обеспечить адре-
сацию нескольких общих регистров.
При выполнении некоторых операций два смежных регистра используются совместно, поз-
воляя работать с двойными словами. В этом случае адресуемый регистр содержит старшие биты операнда и должен иметь четный адрес, тогда как регистр, содержащий младшие биты операнда, имеет следующий по порядку нечетный адрес. Программа в этом случае должна указывать четный регистр, содержащий старшие биты. Следующий регистр с большим номе-
ром содержит младшие биты.
Регистры с плавающей точкой
Для операций с плавающей точкой предусмотрено четыре специализированных регистра,
названных регистрами с плавающей точкой. Они нумеруются числами 0, 2, 4 и 6. Эти регистры имеют длину 64 бита и могут содержать как короткие (32-битовые), так и длинные (64-битовые)
операнды с плавающей точкой. При арифметических операциях с короткими операндами эти операнды занимают старшие биты регистра, в то время как младшие биты регистра игнориру-
ются и их содержимое не изменяется. Для расширенных операндов используются две пары со-
15
седних регистров с плавающей точкой: регистры 0, 2 и регистры 4, 6. Каждая из этих пар обес-
печивает 128-битовый формат.
Управляющие регистры
Процессор может использовать 16 управляющих регистров по 32 бита каждый (рис. 2.3).
Биты регистров закреплены за конкретными средствами, такими, например, как средство реги-
страции программных событий. Они содержат особую информацию, необходимую для функци-
онирования этих средств, а также разрешают или запрещают определенные действия. Управ-
ляющий регистр конкретной модели только в том случае содержит определенный бит, если на этой модели имеется средство, за которым этот бит закреплен.
Управляющие регистры нумеруются от 0 до 15, которые в командах ЗАГРУЗКА УПРАВЛЕНИЯ и ЗАПИСЬ В ПАМЯТЬ УПРАВЛЕНИЯ указываются в четырехбитовом поле R. С
помощью этих команд можно обращаться к группе управляющих регистров.
2.3.Ввод и вывод
К операциям ввода-вывода относятся операции передачи информации из основной памяти на внешние устройства и наоборот. Внешние устройства присоединяются к каналам, которые управляют передачей данных между внешними устройствами и основной памятью.
Поле |
Но- |
Общие |
Регистры с плавающей точ- |
Управляю- |
Реги- |
мер ре- |
регистры |
кой |
щие регистры |
стра |
гистра |
|
|
|
|
|
|
|
|
0000 |
0 |
32 бита |
64 бита |
32 бита |
|
|
|
|
|
0001 |
1 |
|
|
|
|
|
|
|
|
0010 |
2 |
|
|
|
|
|
|
|
|
0011 |
3 |
|
|
|
|
|
|
|
|
0100 |
4 |
|
|
|
|
|
|
|
|
0101 |
5 |
|
|
|
|
|
|
|
|
0110 |
6 |
|
|
|
|
|
|
|
|
0111 |
7 |
|
|
|
|
|
|
|
|
1000 |
8 |
|
|
|
|
|
|
|
|
1001 |
9 |
|
|
|
|
|
|
|
|
1010 |
10 |
|
|
|
|
|
|
|
|
1011 |
11 |
|
|
|
|
|
|
|
|
1100 |
12 |
|
|
|
|
|
|
|
|
1101 |
13 |
|
|
|
|
|
|
|
|
1110 |
14 |
|
|
|
|
|
|
|
|
1111 |
15 |
|
|
|
|
|
|
|
|
Рис. 2.3. Общие регистры, регистры с плавающей точкой
16
и управляющие регистры
Каналы
Каналы связаны с процессором и основной памятью непосредственно, а через интерфейс ввода-вывода – с контроллерами. Канал освобождает центральный процессор от прямого со-
единения с внешними устройствами и позволяет обрабатывать данные одновременно с выпол-
нением операции ввода-вывода.
В одних случаях канал может представлять собой независимую единицу оборудования, об-
ладающую всеми необходимыми логическими возможностями и способностью хранить инфор-
мацию, в других — функции канала может выполнять процессор, а сам канал физически объ-
единяется с процессором. В обоих случаях функции канала идентичны. Каналы, однако, могут иметь различные возможности передачи данных.
В Системе 370 имеются три типа каналов: байт-мультиплексный, блок-мультиплексный и селекторный.
Интерфейс ввода-вывода
Для большинства внешних устройств обмен информацией между контроллером и каналом осуществляется через интерфейс ввода-вывода, который обеспечивает независимость управ-
ляющих сигналов от типа контроллера и канала; интерфейс, таким образом, предоставляет единообразные средства присоединения внешних устройств различного типа и управления ими.
Во внешних устройствах, работающих без интерфейса ввода-вывода, используются тот же формат информации и та же последовательность сигналов управления, что и во внешних устройствах, работающих с интерфейсом.
Внешние устройства и контроллеры
К внешним устройствам относятся устройства чтения перфокарт и перфораторы, лентопро-
тяжные устройства, диски, барабаны, устройства телеобработки и устройства приема инфор-
мации от датчиков.
Многие внешние устройства работают с такими документами, как перфокарты или магнит-
ные ленты. Некоторые из устройств обрабатывают только электрические сигналы, аналогичные сигналам в цепях управления. В любом случае работа внешнего устройства управляется кон-
троллером. Функции контроллера могут быть возложены на само внешнее устройство, переда-
ны процессору или реализованы отдельной единицей оборудования. Во всех случаях обеспе-
чиваются все логические и буферные возможности, необходимые для работы соответствующе-
го внешнего устройства. С точки зрения программирования большинство функций контроллера неотделимо от функций самого внешнего устройства.
2.4.Пульт управления системой
Пульт управления системой позволяет оператору следить за действиями системы и вмеши-
ваться в них. Пульт управления включает панель управления системой и в большинстве случа-
ев соответствующее пультовое устройство, которое может быть использовано как внешнее устройство для связи с управляющей и прикладными программами. Технические средства и
17
управляющая программа выполнены так, что потребность в ручном управлении со стороны оператора сведена к минимуму.
Пульт управления системой позволяет производить включение и отключение питания,
сброс, начальную загрузку программ, останов и пуск, а также индикацию и занесение информа-
ции.
18
Глава 3. Выполнение программы
Обычно процессор выполняет команды последовательно. Слово состояния программы
(PSW), содержащее основную, необходимую для выполнения программы информацию, опре-
деляет, какая команда должна быть выполнена. Изменение последовательности операций мо-
жет быть вызвано переходом, загрузкой слова состояния программы, прерыванием или вмеша-
тельством оператора.
3.1.Команды
Каждая команда состоит из кода операции, указывающего, какая операция должна выпол-
няться, и кода, задающего операнды.
Операнды
Имеются три класса операндов: регистровые операнды, непосредственные операнды и операнды в основной памяти. Операнды могут быть указаны как явно, так и неявно.
Регистровые операнды могут размещаться в общих регистрах, регистрах с плавающей точ-
кой и в управляющих регистрах, причем тип регистра определяется кодом операции. Четы-
рехбитовое поле R регистра содержит номер (адрес) регистра, хранящего регистровый опе-
ранд. Операнды некоторых команд содержатся в неявно заданном регистре, т.е. в этих коман-
дах код операции задает (неявно) номер регистра.
Непосредственные операнды располагаются в самой команде; восьмибитовое поле, содер-
жащее непосредственный операнд, называется полем I.
Длина операндов, находящихся в основной памяти, может быть задана либо неявно, либо битовой маской, либо в некоторых случаях содержимым четырехили восьмибитового поля L
команды. Для задания адреса операнда, находящегося в основной памяти, применяется фор-
мат, в котором содержимое общего регистра используется как компонент адреса. Это позволя-
ет:
—сокращенно указывать полный адрес;
—изменять и анализировать адрес с помощью команд, операнды которых размещаются в общих регистрах;
—изменять адреса программными средствами, не изменяя при этом самих команд;
—вести обработку данных независимо от их местоположения, непосредственно используя адреса, полученные от других программ.
Адрес для обращения к основной памяти содержится в регистре, номер которого помещен в поле команды, или вычисляется по базовому адресу, индексу и смещению, обозначаемым в команде соответственно полями B, X и D.
Как правило, при выполнении команды используются два операнда, а результат помещает-
ся на место первого. Команды, в название которых входит слово ЗАПИСЬ, являются исключе-
нием; результат выполнения таких команд помещается на место второго операнда. За исклю-
чением окончательного результата, записываемого в память, содержимое всех регистров и
19
ячеек памяти, участвующих в вычислении адресов и выполнении операции, остается неизмен-
ным.
Формат команд
Команда имеет длину в одно, два или три полуслова и должна располагаться в основной памяти на целочисленной границе полуслова. Каждая команда имеет один из шести основных форматов: RR, RX, RS, SI, S и SS, причем последний используется в двух вариантах (рис. 3.1).
Формат некоторых команд несколько отличается от основного формата, а в ряде команд выполняемое действие не подчиняется общим правилам, перечисленным в данном разделе.
Все подобные исключения явно оговариваются в описаниях конкретных команд.
Обозначение формата команды выражает в общем виде, операнды каких классов участвуют в операции: RR обозначает операцию типа “регистр—регистр”; RX – операцию “регистр— память”, в которой адрес памяти индексируется; RS – операцию типа “регистр—память” (без индексации); SI – операцию типа “память – непосредственный операнд”; SS – операцию типа
“память—память”, S — операцию, один операнд которой задан неявно, а другой находится в памяти.
20