IBM System/370
![]()
IBM System/370 (S/370) — серия мейнфреймов, выпущенная компанией IBM.
Впервые анонсирована 30 июля 1970 года. Эти машины обладали теми же преимуществами, что и их предшественники System/360: высокой управляемостью, универсальностью, масштабируемостью и надёжностью при обработке приложений с большим объёмом данных в многопользовательской среде и были совместимы с системами System/360. Основными новациями System/370 можно считать возможность использования нескольких процессоров в рамках одной системы, полноценную поддержку виртуальной памяти и новый 128-разрядный блок вещественной арифметики.
Литература
- Barbara J. Burian Программирование на языке ассемблера системы IBM/370 упрощённый подход = A simple approach to S/370 assembly language programming. — New Jersy: Prentice-Hall, Inc, 1977.
- История компьютерной техники
- Мейнфреймы
- IBM
- Появились в 1970 году
Wikimedia Foundation . 2010 .
- Аракульские Шиханы
- Флеш, Зигфрид
Полезное
Смотреть что такое «IBM System/370» в других словарях:
- IBM System/370 — The IBM System/370 (often: S/370) was a model range of IBM mainframes announced on June 30, 1970 as the successors to the System/360 family. The series maintained backward compatibility with the S/360, allowing an easy migration path for… … Wikipedia
- IBM System/370 — Este artículo o sección necesita una revisión de ortografía y gramática. Puedes colaborar editándolo (lee aquí sugerencias para mejorar tu ortografía). Cuando se haya corregido, borra este aviso por favor. El IBM System/370 (abreviado: S/370) fue … Wikipedia Español
- программа взаимодействия ECF (IBM System/370 и IBM PC) — Обеспечивает пользователям ПЭВ с помощью менюобразного интерфейса возможность работать с данными как в среде ПЭВМ, так и в среде S/370, а также преобразовывав файлы в формат, применяемый в наиболее популярных приложениях. [Е.С.Алексеев, А.А.Мячев … Справочник технического переводчика
- System/370 — IBM mainframe Архитектура 700/7000 series разная System/360 System/370 System/370 S/370 XA ESA/370 System/390 ESA/390 zSeries … Википедия
- IBM System/3 — Un IBM System/3 con una perforadora de tarjetas en exhibición en el Olmsted County Historical Society Museum en Rochester, Minnesota … Wikipedia Español
- IBM System/3 — The IBM System/3 (introduced 1969 discontinued 1985) was a low end business computer aimed at new customers and organizations that still used IBM 1400 series computers or unit record equipment. It was the first member of what IBM refers to as… … Wikipedia
- System/370 — (auch S/370) war eine Großrechner Architektur der Firma IBM. Das System/370 war eine evolutionäre Weiterentwicklung des System/360 und wurde im Sommer 1970 von IBM angekündigt. Das System/370 war der Vorgänger der System/390 und zu den heute… … Deutsch Wikipedia
- IBM System/360 — IBM mainframe Архитектура … Википедия
- IBM System z — IBM mainframe Архитектура 700/7000 series разная System/360 System/370 System/370 S/370 XA ESA/370 System/390 ESA/390 (ARCHLVL 1) zSeries z/Architecture 1 (ARCHLVL … Википедия
- IBM System z10 — BC IBM mainframe Архитектура 700/7000 series разная System/360 System/370 … Википедия
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
System/370 Announcement
The following is the text of an IBM Data Processing Division press release distributed on June 30, 1970.
A new computer system — — the IBM System/370 — — was announced worldwide today by International Business Machines Corporation. Its two models use advanced design techniques previously available only in IBM’s ultra-high-performance computers.
Introducing the new system at a press conference here, Thomas J. Watson, Jr., IBM chairman of the board, said:
«We are confident that the performance of System/370, its compatibility, its engineering and its programming will make it stand out as the landmark for the 1970s that System/360 was for the Sixties.»
System/370 Models 155 and 165 can provide computer users with dramatically higher performance and information storage capacity for their data processing dollars than ever before available from IBM in medium- and large-scale systems.
Business and scientific computers users will be able to move up to the higher performance System/370 to handle their remote computing and large data base needs of the Seventies. They can do so without having to reprogram the vast majority of their existing System/360 applications.
System/370 carries forward the concept of compatibility first introduced by IBM in 1964 for the widely used System/360. Models 155 and 165 can share input and output equipment and proven programming systems that transcend specific models. They can use nearly all existing IBM peripheral devices, as well as a new 2,000-line-per-minute printer and an 800 million character-capacity disk storage. The printer and disk storage units included in today’s announcement are designed to step up input and output capabilities to System/370’s high internal operating speed.
Both models of System/370 are now in production — — Model 155 at Poughkeepsie, N.Y., and Montpelier, France; Model 165 at Kingston, N.Y. Model 155 is being demonstrated today in Poughkeepsie.
«We have met two very important objectives with System/370 — — price/performance and compatibility,» said F. G. Rodgers, president of IBM’s Data Processing Division. «First, we have achieved greatly improved performance by putting much of the advanced technology of IBM’s ultra-high-performance computers within the reach of medium- and large-scale computer users.»
«And we have achieved compatibility since System/360 users will be able to run most of their existing programs on the new system without change,» Mr. Rodgers said.
To illustrate System/370 performance and economy, Mr. Rodgers noted that the new Model 165 operates up to five times faster internally than System/360 Model 65. Yet the user’s equipment cost to achieve the increased performance level is relatively modest in comparison with the gain in processing capability. The Model 155 has up to four times the internal operating speed of System/360 Model 50.
The basic machine cycle times of the Model 165 and 155 central processors are 80 and 115 nanoseconds (billionths of a second), respectively. A cycle — — the time it takes to execute an instruction — — is a major factor in how much work the computer can do in a given period.
Each model uses a buffer memory, an advanced technique previously offered by IBM only with ultra-high-performance systems. The buffer, which operates at the same speed as the central processor, holds large blocks of data and instructions ready for immediate use, thus speeding the processing of information.
Toward expanded applications
«The applications of the Seventies will involve increased multiprogramming, remote computing, management information and tele-processing networks that make a centralized computer data base available to people in many places,» Mr. Rodgers said. «The management of virtually every business wants and needs immediate access to current information organized so it can be used effectively,» Mr. Rodgers said. «To do the job, banks, manufacturing firms and insurance companies — — as well as government agencies and many scientific users — — need faster, more efficient computers and larger capacity data storage. System/370 meets those requirements.»
Although internal operating speed is one way to measure computer performance, users generally are more concerned with how rapidly the system can finish its assigned tasks. This capability — — called throughput — -depends on a number of factors such as memory size, input and output equipment and the efficiency of the operating systems and the user’s programs.
To help customers exploit the full throughput potential of System/370, IBM has built in many advances keyed to reliable performance, including:
- Monolithic integrated circuits, microscopic in size, that perform logical and arithmetic operations at speeds measured in nanoseconds.
- Main core memories having capacities up to 2-million bytes for the Model 155 and 3-million for the Model 165.
- Monolithic buffer storage that holds data and instructions ready before they are actually needed, streaming them into the central processing unit on demand at nanosecond speeds. The buffer effectively matches the data from the larger but slower main memory to the very high internal speed of the processor.
- Expanded channels to carry more data faster between memory and other system units. These new channels are analogous to pipelines whose width and flow pressure have been increased.
- The ability to handle up to 15 different program tasks simultaneously, including programs written for the IBM 1400 and 7000 series, as well as System/360.
New mass storage, printer
Users also can increase system throughput by attaching to System/370 the new IBM 3330 disk storage and the IBM 3211 printer.
Designed for large data base applications that require ready and rapid access to vast amounts of information, the 3330 combines high operating speed with the flexibility of virtually unlimited storage on removable, direct access magnetic disks. It has three-and-a-half times more on-line storage capacity — — up to 800-million bytes (more than 1.5-billion decimal digits) — — than other IBM disk storage facilities and has an average access time of only 30-thousandths of a second.
In addition to the 3330, System/370 users can take advantage of the very fast storage available with the recently announced IBM 2305 fixed head storage facility. This device previously was offered only with IBM’s most powerful computers, System/360 Models 85 and 195. It is designed to provide direct access to data the central processor uses repeatedly, such as control programs and working files. The average access time of the faster of two models is only 2.5 thousandths of a second.
The new IBM 3211 printer will help speed processed information to the various users within an organization. It can turn out reports and other documents at 2,000 lines a minute, almost twice as fast as any previous IBM printer. With a smaller character set, 2,500 lines a minute can be achieved.
Control devices built into the new printer provide highly accurate spacing and clear copies. A powered stacker automatically adjusts for the height of the paper stack. Through an innovative forms control buffer in the printer, the computer can automatically specify the job-to-job formatting instructions. This eliminates the need for operating personnel to switch carriage control tapes when printing formats need to be changed. The 3211 can be used with System/370 and with most System/360 models.
Prices, programming and delivery
Monthly rental for a typical System/370 Model 155 having 768,000 bytes of main memory is $47,985, with a purchase price of $2,248,550. Monthly rental for a typical Model 165 with 1-million bytes of main memory is $98,715, with a purchase price of $4,674,160.
Purchase customers may use IBM maintenance service for the new system. The minimum monthly maintenance charges covering the purchase systems priced above are $6,050 for the Model 155 and $12,450 for the Model 165.
Operating systems support for System/370 will be available at initial delivery of each model. System/370 education courses for customers will begin this fall at all IBM Education Centers. And a variety of new and improved program products that operate with System/370, as well as with certain models of System/360, are being announced today.
First customer shipments of System/370 Models 155 and 165 are scheduled to begin next February and April, respectively.
Принципы работы системы IBM/370
Описание логической структуры вычислительных машин Системы 370. Особенности мультипроцессирования. Команды общего назначения и управления системой, обработки десятичных данных и команды с плавающей точкой. Средства обработки машинных ошибок (коррекция).
| Рубрика | Программирование, компьютеры и кибернетика |
| Вид | книга |
| Язык | русский |
| Дата добавления | 12.06.2014 |
| Размер файла | 658,3 K |
- посмотреть текст работы
- скачать работу можно здесь
- полная информация о работе
- весь список подобных работ
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ПРИНЦИПЫ РАБОТЫ СИСТЕМЫ IBM/370
Это почти точная копия книги “Принципы работы системы IBM/370” (пер. с англ. Под ред. Райкова Л. Д., М., Мир, 1975). Английский оригинал “IBM System/370 principles of operation (Fourth Edition)” был выпущен фирмой IBM в 1973 г. под названием “Принципы работы ЕС ЭВМ”. Без ссылок на американский источник эта книга входила в комплект технической документации, поставляемой вместе с вычислительными машинами Единой Системы.
В настоящем варианте исправлены опечатки и неточности, имевшие место в вышеуказанном печатном издании, а также изменены некоторые предложения в целях повышения удобочитаемости, однако объем внесенных изменений был минимальным. Опущено также приложение 5 “Шестнадцатеричные таблицы”, помогающее вручную быстро переводить шестнадцатеричные числа в десятичные и обратно и выполнять арифметические операции над шестнадцатеричными числами. Приложение 6 “Код EBCDIC” стало приложением 5 “Коды EBCDIC и ДКОИ”.
вычислительный мультипроцессирование десятичный машинный
Предисловие
Предлагаемая вниманию читателей книга представляет собой перевод справочного руководства фирмы IBM и содержит описание логической структуры вычислительных машины Системы 370. С практической точки зрения она включает информацию об общей организации аппаратных средств системы, знакомство с которой будет способствовать наиболее эффективному использованию аппаратных возможностей моделей этой системы при программировании на языке Ассемблера.
Сказанное, конечно, не означает, что любой программист, приступая к практическому программированию, должен изучить эту книгу “от корки до корки”. Детальное знание приведенного здесь материала в первую очередь необходимо тем, кто собирается совершенствовать и развивать существующие системы путем подключения новых внешних устройств или разработки программ, расширяющих возможности стандартных операционных систем (ОС), а также и тем, кто планирует создание специализированных систем программного обеспечения (ПО), базирующихся на аппаратных средствах Системы 370 или других вычислительных машин, имеющих сходную логическую структуру.
Подробное знакомство с материалом этой книги полезно и программистам, пишущим прикладные программы на языке Ассемблера и использующим лишь стандартные возможности системы. Для них она может служить справочным пособием; тем же, кто программирует на языках высокого уровня, книга может быть рекомендована как дополнительная литература. Книга может быть с успехом использована и в качестве учебного пособия для различных курсов (как вузовских, так и повышения квалификации) по вычислительной технике и программированию.
Система IBM 370 является результатом совершенствования и дальнейшего развития широко известной Системы IBM 360. Будучи наиболее распространенными в настоящее время вычислительными машинами, модели Систем 360 и 370 отражают важнейшие тенденции одного из основных направлений развития вычислительной техники. Поэтому помимо чисто утилитарного значения содержащийся в книге фактический материал помогает критически осмыслить современные тенденции и проблемы вычислительной техники.
Логическая структура Системы 370, а следовательно, и текст книги отражают противоречия, постепенно накапливающиеся в процессе развития средств вычислительной техники, которые строятся на традиционных принципах.
Специалистам, внимательно следящим за эволюцией логической структуры вычислительных систем, возможно, будет интересно познакомиться с тем, как требования увеличения производительности, надежности и гибкости системы приводят к постепенному обострению конфликта между традиционным, так называемым концептуальным, порядком выполнения программ и фактической глубоко асинхронной организацией вычислительного процесса. Чтобы понять, в чем состоит этот конфликт, достаточно упомянуть о таких общепринятых особенностях современных вычислительных машин, как высокая степень совмещения операций в процессорах, наличие многоуровневой основной (оперативной) памяти, работа нескольких процессоров с общем полем основной памяти, средства автоматического повторения команд с аппаратных контрольных точек, страничный доступ и виртуальная организация памяти.
Все это требует чрезвычайно сложных и развитых средств, обеспечивающих при необходимости согласование содержимого памятей разного уровня и синхронизацию событий.
Большой интерес представляет в Системе 370 и более развитая по сравнению с Системой 360 система прерываний. Вызванное практическими требованиями совершенствования системы отладки программ это развитие имеет на самом деле более общее значение, так как может послужить предпосылкой создания более простых и безболезненных методов совершенствования самих операционных систем путем введения управляющих программ более высокого уровня, связь с которыми осуществляется через систему прерываний. Такое многоуровневое построение управляющей программы позволит реализовывать новые функции без каких-либо изменений в уже имеющейся исходной системе.
В заключение следует сказать, что благодаря ясности изложения книга представляет значительный интерес для широкого круга специалистов, работающих в области современной вычислительной техники и программирования, и мы надеемся, что они со вниманием отнесутся к ее появлению.
Перевод выполнили А. П. Гагарин, Г. Н. Староверова и А. Г. Чекалов.
Л. Райков
Глава 1. Система 370
Система 370 была создана на основе опыта разработки, производства и эксплуатации Системы 360. Она совместима с Системой 360 по принципу “снизу вверх”, т.е. переход от Системы 360 к Системе 370 столь же легок, как переход в пределах одной системы от младшей модели к старшей. В то же время средства обработки информации Системы 370 отличаются большим совершенством.
В Системе 370 широко используются последние достижения технологии полупроводниковых приборов и интегральных схем. Кроме того, возможности применения этой вычислительной системы расширены за счет введения новых средств и возможностей: динамического преобразования адресов; косвенной адресации данных в каналах; мультипроцессирования; средств отсчета времени; операций с плавающей точкой, обеспечивающих повышенную точность; средств регистрации программных событий; средств обеспечения мониторных программ; блок-мультиплексного канала. Эти средства и возможности значительно повышают надежность, готовность и доступность вычислительной установки.
Динамическое преобразование адресов (динамическая переадресация) выполняется процессором и исключает необходимость назначать для программ фиксированные области реальной основной памяти, ослабляя, следовательно, ограничения, связанные с адресацией, в системных и прикладных программах, а также обеспечивает большую свободу при составлении программ, что позволяет более эффективно и действенно использовать основную память. Динамическая переадресация при условии применения соответствующей ОС позволяет использовать поле виртуальной памяти размером до 16 777 216 байтов.
Косвенная адресация данных в канале — сопутствует динамическому преобразованию адресов и помогает осуществлять преобразование адресов при операциях ввода-вывода. Благодаря этой возможности одна команда канала способна управлять передачей данных, которым отведены несмежные области в реальной основной памяти.
Мультипроцессирование обеспечивает взаимосвязь процессоров с целью повышения готовности системы, а также для совместного использования данных и ресурсов. Мультипроцессирование предполагает наличие основной памяти, общей для процессоров, сигнализацию между процессорами по инициативе программы или специальных технических средств, а также наличие программных средств для смещения первых 4096 байтов реальной основной памяти каждого процессора.
Средства отсчета времени — это часы, компаратор, таймер CPU, а также интервальный таймер, имеющийся и в Системе 360. Часы измеряют истекшее время и могут служить для определения даты и времени суток; их цикл работы составляет приблизительно 143 года, а разрешающая способность такова, что период времени, в течение которого они обновляются, сравним с периодом времени выполнения команды на данной модели. Компаратор вызывает прерывание, как только содержимое часов достигает величины, заданной программно. Таймер CPU — это интервальный таймер с высокой разрешающей способностью, инициирующий прерывание в тот момент, когда его содержимое уменьшается до 0.
Операции с плавающей точкой, обеспечивающие повышенную точность, включают сложение, вычитание и умножение чисел, мантисса которых состоит из 28 шестнадцатеричных цифр. Кроме того, имеется команда для округления чисел, представленных в формате для операций повышенной точности, в числа длинного формата, и чисел длинного формата в числа обычного формата.
Средства регистрации программных событий позволяют выборочно вызывать программные прерывания и предназначены для повышения эффективности процесса отладки.
Средство обеспечения мониторных программ позволяет передавать управление мониторной программе, как только в ходе выполнения программы, выполняемой под контролем этой мониторной программы, встречается специальная команда. Это средство может быть использовано, например, для учета того, какие программы получают управление, как часто и в течение какого времени.
Блок-мультиплексный канал, позволяющий одновременно выполнять несколько программ канала, является эффективным средством управления устройствами ввода-вывода, которые передают данные через интерфейс с высокой скоростью, однако относительно долго простаивают между передачами.
Для использования этих новых функций и средств предусмотрены управляющие регистры, к которым может адресовать программа, и новый режим работы процессора — режим расширенного управления.
В Системе 370 предусмотрена возможность использования ОС, применяемых на моделях Системы 360, а также ОС, разрабатываемых специально для Системы 370 с учетом ее особенностей; при этом прикладные программы и данные остаются без изменений или должны быть изменены незначительно. В то же время в Системе 370 имеется несколько моделей процессора, рассчитанных на различные уровни производительности, что делает многие имеющиеся в Системе 370 новые средства обработки информации доступными как на малых, так и на крупных установках. Таким образом, возможность широкого выбора моделей и их обеспечения наряду с нововведениями и усовершенствованиями делают Систему 370 одной из наиболее гибких современных систем.
1.1 Универсальность
Подобно Системе 360, Система 370 является системой общего назначения, и ее можно легко приспособить для самых различных применений. Основные вычислительные функции реализуются системой с помощью стандартного набора команд, представляющего собой расширение стандартного набора команд Системы 360 и включающего средства защиты памяти. Добавление средств обработки десятичных данных приводит к системе команд для экономических применений, а средств выполнения операций с плавающей точкой — к системе команд для научных применений, к которой в свою очередь могут быть добавлены средства выполнения операций с плавающей точкой с повышенной точностью. Команды обработки десятичных данных и команды с плавающей точкой в сочетании со стандартным набором команд составляют универсальную систему команд. Добавление других средств, например команд условного обмена, позволяет расширить возможности системы в еще большей степени.
Так же, как и в Системе 360, в Системе 370 предусмотрена возможность адресовать в основной памяти до 16 777 216 байтов, а динамическая переадресация в сочетании с соответствующим ПО предоставляет в распоряжение пользователя максимальный диапазон адресов, невзирая на то, что объем имеющейся реальной памяти может быть значительно меньше. Динамическая переадресация в сочетании с ПО позволяет использовать модели Системы 370, оснащенные относительно небольшим объемом основной памяти, для значительно более широкого круга задач, причем во многих случаях, когда требуется очень большой объем основной памяти, использование модели оказывается более экономичным и удобным. Помимо того, во многих моделях Системы 370 скорость обращения к основной памяти повышается благодаря применению буферной памяти, о которой пользователь может не подозревать и которая позволяет получать информацию из основной памяти без задержки, обусловленной самим механизмом обращения к ней.
Другая особенность универсального характера Системы 370 связана с возможностью присоединять к ней большое количество различных устройств ввода-вывода через мультиплексные каналы нескольких типов. Подобно Системе 360, Система 370 имеет байт-мультиплексный канал для присоединения устройств, не имеющих буфера, и значительного количества устройств телеобработки. Кроме того, в Системе 370 предусмотрен блок-мультиплексный канал, который особенно удобен для присоединения устройств с буфером, а также высокоскоростных циклически работающих устройств.
Посредством выбора подходящих компонентов можно построить конкретную систему, наиболее подходящую для данного применения с учетом ее внутренней производительности, функциональных возможностей и используемых устройств ввода-вывода.
1.2 Совместимость
Несмотря на то что модели Системы 370 различны по конструкции и физическим возможностям, логически они совместимы “снизу вверх” и “сверху вниз”. Это означает, что любая программа дает одни и те же результаты на любой модели с учетом ограничений на совместимость, о которых будет сказано ниже. Совместимость позволяет легко наращивать систему, обеспечивает удобство обслуживания и простоту обучения.
Принцип совместимости имеет четыре ограничения.
1. Средства системы, используемые программой, должны быть одинаковыми во всех рассматриваемых случаях. Так, процессоры должны обладать одинаковыми наборами необязательных возможностей, точно так же, как должны быть эквивалентными емкости памяти, количество и типы внешних устройств.
2. Программа не должна зависеть от продолжительности выполнения команд процессора, скорости ввода или вывода данных, времени обращения к памяти, а также абсолютной продолжительности обработки.
3. Программа не должна зависеть от функций, которые определяются как зависящие от модели, результатов, о которых сказано, что их невозможно предсказать, и специальных функций, не рассматриваемых в этой книге.
4. Программа не должна использовать поля, которые впоследствии могут быть закреплены за теми или иными функциями технических средств, или же зависеть от этих полей до тех пор, пока они не будут явным образом предоставлены для использования программами. Кроме того, не следует составлять программу таким образом, чтобы прерывание вызывалось неправильным форматом, например использованием недопустимого кода операции или команды канала.
Система 370 совместима с Системой 360 “снизу вверх”, поэтому, чтобы программы Системы 360 можно было выполнять в Системе 370, кроме перечисленных выше ограничений должны соблюдаться также и следующие:
1. Бит 12 слова состояния программы не должен использоваться в программе как бит, единичное значение которого вызывает выдачу результата в коде ASCII, так как этот код предусмотрен только в Системе 360.
2. Программа не должна зависеть от областей памяти, которые закреплены только в Системе 370, а именно от области, отведенной для кодов прерывания, областей сохранения при сигналах от схем контроля и области расширенной регистрации.
3. В программе, связанной с операциями ввода-вывода, следует учитывать влияние предварительной выборки, производимой каналами, повторения команд, регистрации состояния из-за ошибки в данных канала и особенностей команды ОСТАНОВИТЬ УСТРОЙСТВО.
1.3 Управляющая программа
Система спроектирована для работы с управляющей, или супервизорной, программой, т.е. с программой, которая координирует использование системных ресурсов и выполняет все команды ввода-вывода, обрабатывает особые состояния, осуществляет планирование и выполнение составных программ.
Система 370 может работать с управляющими программами нескольких различных типов. Некоторые из них обеспечивают использование специфических команд Системы 370, средств, повышающих надежность, готовность и доступность вычислительных установок, а также новых возможностей системы ввода-вывода. Кроме того, некоторые из этих управляющих программ создают условия для того, чтобы системные и прикладные программы использовали виртуальную память.
Система 370 может работать в режиме Системы 360, выполняя все управляющие и прикладные программы, составленные для Системы 360 и удовлетворяющие условиям, изложенным в разделе 1.2.
1.4 Готовность
Готовность системы — это способность ее принимать к выполнению и успешно выполнять конкретное задание. Технические средства обеспечивают повышенную готовность Системы 370 по сравнению с Системой 360 за счет того, что 1) позволяют одновременно обрабатывать большее количество более разнообразных заданий, вследствие чего вычислительная установка становится доступнее для выполнения конкретного задания; 2) ограничивают влияние ошибки, а также способствуют более точному нахождению ее причины, в результате чего количество программ, на выполнение которых влияет возникновение ошибки, сводится к минимуму, а исправление этих ошибок становится менее трудоемким делом.
Повышенная готовность определяется следующими фундаментальными особенностями системы.
По мере выполнения программы проверяется корректность команд и данных и индикация ошибок программирования производится отдельно от индикации сбоев технических средств. Подобная система проверки и индикации способствует выявлению неполадок и ограничению их действия.
Средства защиты памяти в сочетании с динамическим преобразованием адресов дают возможность защищать содержимое основной памяти от разрушения или неправильного использования, если программа производит ошибочную или несанкционированную запись в память или выборку. Это позволяет удовлетворить запросы пользователя по обеспечению секретности и одновременно решать задачи, предъявляющие различные требования в этом отношении.
Динамическое преобразование адресов изолирует одну прикладную программу от другой, позволяя им тем не менее разделять между собой общие ресурсы. Это делает возможным реализацию виртуальных вычислительных установок, которые могут одновременно с выполнением прикладных программ служить для разработки и отладки новых ОС. Кроме того, на виртуальных вычислительных установках могут одновременно работать несовместимые ОС.
Мультипроцессирование улучшает использование памяти и процессоров, обеспечивает более эффективную связь между процессорами и позволяет дублировать ресурсы с целью повышения жизнеспособности системы в случае отказа оборудования.
Средство обеспечения мониторных программ, регистрация программных событий и средства отчета времени с высокой разрешающей способностью делают возможной отладку программ без ручного вмешательства одновременно с выполнением других программ; при этом отладка почти не влияет на ход выполнения этих программ.
Эмуляция выполняется под управлением супервизорной программы, благодаря чему создаются возможности одновременно с эмуляцией выполнять другие работы.
На многих моделях для преодоления влияния случайных сбоев технических средств предусмотрены проверка и исправление ошибок основной памяти, а также повторение команд, что снижает общее количество отказов технических средств.
Расширенный механизм обработки сигналов от схем контроля обеспечивает независимую от модели локализацию неисправностей, что сокращает число программ, испытывающих воздействие неисправленных ошибок. Кроме того, от специфики модели не зависит регистрация информации о состоянии машины. Все это приводит к улучшению совместимости моделей в части обработки сигналов от схем контроля, а также увеличивает возможность загрузки и выполнения программы на различных моделях в случае возникновения системных неисправностей.
При основных режимах эксплуатации ручное управление сведено к минимуму и взаимодействие в системе между оператором и вычислительной установкой осуществляется в основном через устройства, действующие как устройства ввода-вывода, что уменьшает возможность случайной ошибки со стороны оператора.
Глава 2. Структура системы
Общая логическая структура Системы 370 предусматривает наличие основной памяти, центрального процессора (CPU), селекторных и мультиплексных каналов и внешних устройств, которые обычно присоединяются к каналам через контроллеры (блоки управления). В различных моделях эти устройства могут быть реализованы по-разному. В состав вычислительной установки могут входить один или несколько процессоров. При этом процессоры можно связать между собой посредством общих внешних устройств, канала или общего поля памяти. На рис. 2.1 изображена логическая структура однопроцессорной (слева) и двухпроцессорной (справа) систем.
¦ . +——T———T-/ /-T————+ . +————T-/
Эмоциональная история процессоров: IBM/370
В первой части были описаны многие разные процессоры до середины 90-х. Для мейнфреймов IBM там места не нашлось, так как эти системы долгое время не использовали процессоры-чипы. Однако, мейнфреймы IBM тесно связаны с другими компьютерными системами, долгое время являясь одними из лучших образцов компьютерной техники, на которые так или иначе ориентировались практически все. Кстати, формат хабр-блога, как и Википедии, позволяет редактирование, что позволило значительно переработать содержимое первой части с учетом поступивших замечаний и прочей дополнительной информации.
В этой части главное внимание уделяется сравнению машинного языка мейнфреймов с другими системами, которые были популярны в период с 70-х по 90-е. Это прежде всего x86, 68k, VAX и ARM. Системы 390 и, в особенности, Z рассматриваются очень фрагментарно – основное внимание уделяется именно системе 370.
IBM/360 была революционной системой. Впервые была реализована концепция совместимости между машинами совершенно разных назначений, производительность которых могла различаться в сотни раз. Эта система также стала первой системой общего назначения, до неё было разделение на коммерческие и научные ЭВМ. Кстати, число 360 означает градусы, эти системы должны были охватить весь круг возможных применений. Однако такой глобалисткий подход начал рушится уже с начала 70-х, когда мини-компьютеры стали успешно вытеснять мейнфреймы во многих областях. Идея иметь единую архитектуру для всех ситуаций оказалась в итоге столь же бесперспективной, как и идея иметь единый язык программирования, что IBM также пыталась реализовать в те годы с языком PL/1.
Первые системы 360 стали поставляться заказчикам с 1965 года, а более совершенные системы 370 с 1970. IBM поддерживает программную совместимость с этими системами до настоящего времени! Удивительно, но до систем 390, поставляемых, как можно догадаться с 1990 года, мейнфреймы работали с 24-битными адресами, т. е. могли адресовать не более 16 мегабайт памяти, столько же, сколько, например, 68000, выпущенный в 1979, или 65816 или 32016, выпущенные в 1982. VAX изначально поддерживал 32-битную адресацию. Популярные процессоры 68020 или 80386, появившись в середине 80-х, также поддерживали 32-битные адреса. Реально 16 МБ памяти для лучших систем второй половины 80-х – это было уже мало. Однако, IBM c 1983 производила совместимые с 370 вычислительные машины, которые могли как расширение использовать 31 разряд для адреса, что снимало проблему объема памяти для лучших компьютеров. Необычно и уникально, что в этих расширениях и системах 390 использовали 31-битный адрес, а не полный 32-битный. В 2000 IBM объявила о первой системе Z, где используются 64-битные адресация и данные. Системы Z стали c 2008 использовать чипы-процессоры. Архитектуру Z c 2007 пытаются соединить в одном чипе с архитектурой POWER, но пока безуспешно. Соединить CISC и RISC в одном чипе пока получилось только у Intel – Pentium Pro в 1995 стал первым чипом такого рода.

IBM System/370-145 c ленточными накопителем 2401 и принтером вместо дисплея, 1971. Может удивить отсутствие дисплея в этой очень дорогой системе при том, что телевизоры массово производятся уже более 20 лет
Кстати, некоторые авторитеты считают, что первым серийным персональным компьютером был IBM 5100, производимый с 1975, который через аппаратный эмулятор мог исполнять инструкции системы 360. Его улучшенные варианты производились до середины 80-х. Хотя скорее всё-таки первым был Datapoint 2200 или Wang 2200. По ценам (примерно $10000) эти первые персоналки были явно не для домашнего использования. Удивительно, но IBM 5100 с бейсиком был в несколько раз медленнее первых дешевых персональных компьютеров, например, Apple II.

IBM 5100, вариант с поддержкой языка APL
С появлением архитектуры IBM PC, которая, как оказалось, на десятилетия определила основное направление развития для вычислительной техники, IBM попыталась в 1983 соединить почти все лучшие тогда компьютерные технологии в одном изделии PC XT/370: свои системы 370, IBM PC XT, Motorola 68000 и Intel 8087. Этот XT/370 можно было использовать как интеллектуальный терминал для работы с мейнфреймом, как обычный IBM XT или для прямого запуска мейнфреймовского софта. Интересно, что в XT/370 была реализована поддержка использования виртуальной памяти, что требовало наличия двух 68000. В 1984, с появлением PC AT был выпущен улучшенный вариант «персонального мейнфрейма» AT/370, который в режиме мейнфрейма был примерно в два раза быстрее XT/370. На этом история таких систем не закончилась, с 90-х производились подобные изделия, соответствующие системам 390. Насколько мне известно, для систем Z такого уже не делали.
IBM для своих мейнфреймов использует довольно необычную для сегодняшнего дня бизнес-модель, при которой компьютеры не продаются, а сдаются в аренду. Одно из преимуществ такой модели в том, что она гарантирует постоянный апгрейд аппаратуры, устаревающая техника автоматически заменяется на обновленную соответствующего класса. У этой модели есть и недостатки. Например, особенно ощутимый недостаток для тех, кто занимается историей компьютерных технологий, – это то, что отслужившие свое компьютеры практически всегда утилизируются и поэтому их практически невозможно встретить ни в каком музее.
Удивительно было обнаружить живую систему IBM 4361 в LCM! Но есть основания предположить, что это возможно не настоящее железо. Доступ посетителей музея к этому компьютеру почему-то закрыт. Непонятно также, какая именно модель там якобы представлена, и это при том, что другие компьютеры в музее идентифицируются весьма точно. Среди систем 4361 известны три модели 3, 4 и 5, причем модель 3 появилась позже моделей 4 и 5. Но система в музее самоидентифицируется как модель 1. Возможно, что это прототип. Однако, сотрудники музея на прямой вопрос о помощи с идентификацией не ответили и это при том, что на другие и часто довольно сложные вопросы они отвечают довольно оперативно. Некоторые особенности таймингов исполнения кодов дают основания, хотя и не абсолютно твердые, предполагать, что скорее всего к сети подключен эмулятор. Летом 2020 в музее, в связи с ковид, явно перешли на эмулятор… Есть ещё шанс добраться до железных мейнфреймов через сеть HNET, но у меня пока не получилось.
Но что бы там ни было, каждый может подключиться и попробовать поработать примерно так же, как работали высокооплачиваемые специалисты с середины 70-х. Цены были такие, что сегодня трудно поверить. Например, час машинного времени стоил в середине 80-х более 20 долларов и надо было ещё доплачивать за место на дисках! Правда речь идет именно о времени работы мейнфрейма, а не терминала, через который шла работа. Поэтому, например, при редактировании текста из часа фактической работы редко набиралось и 5 минут времени на оплату. Цены на сами мейнфреймы также были фантастические. Например, сотрудники Intel вспоминают, что в начале 80-х им предоставляли для работы только один мейнфрейм. Его производительность была 10 MIPS, а цена примерно 20 миллионов тогдашних долларов, которые были раза в три тяжелее сегодняшних! Хотя такая цена похоже это какое-то преувеличение. Типичные цены на мейнфреймы были порядка сотен тысяч долларов. Самые дешевые мейнфреймы могли стоить и десятки тысяч, но самые дорогие до нескольких миллионов. Для примера, суперкомпьютер Cray-1 стоил 8 миллионов в 1978, менфрейм IBM 4361 модель 4 – примерно 130 тысяч в 1985, мейнфрейм IBM 3081 модель QX – более 6 миллионов в том же 1985, мини-мейнфрейм IBM 4321 – более 80 тысяч в 1982. Больше деталей по ценам можно найти здесь или здесь. Сейчас даже Raspberry Pi размером с таблетку и ценой в несколько долларов может запросто выдать более 1000 MIPS. Кстати, на Raspberry Pi или практически любом современном компьютере можно запустить эмулятор IBM/370, который будет работать значительно быстрее, чем любая система IBM из 80-х или даже 90-х. Однако, эмулятор надо настраивать и не все полезные программы для IBM/370 доступны свободно, поэтому бесплатный доступ к хорошо настроенной системе – это часто лучший способ поработать с мейнфреймом. Удивительно, но такие программы для доступа, эмуляторы терминалов 3270, доступны даже на мобильниках! Между прочим, мне удалось наладить свою систему VM/CMS на эмуляторе Hercules и разобраться с переносом файлов, но это потребовало не менее недели времени.
Эмулятор Hercules может эмулировать и более поздние системы IBM/390 и IBM/Z, но из-за проблем с лицензией на программное обеспечением это сделать намного сложнее. В качестве иллюстрации таких проблем приведу известный случай, когда IBM настояла на удалении раздела Эмуляция из уже опубликованной книги! В современных электронных вариантах этой книги этого раздела нет, его можно найти только в типографском издании или отдельным файлом на сайтах, посвященных свободному ПО. Дело в том, что эмуляция на обычных персоналках с начала 2000-х могла быть заметно быстрее, чем исполнение на гораздо более дорогих мейнфреймах. IBM поэтому пришлось изменить лицензии на своё программное обеспечение так, что его можно легально использовать только на аппаратуре, купленной у IBM. Конечно, речь не идет, что эмуляторы быстрее лучших мейнфреймов, они только демонстрируют заметно лучшее отношение быстродействия к стоимости.
Один из способов поработать с системами Z или 390 – это установить Linux в эмуляторе этих систем. Для 390 и Z доступны, как минимум, дистрибутивы Ubuntu и Debian. Тут стоит заметить, что быстрое развитие Linux во многом связано со значительной поддержкой от IBM. В частности, IBM в 2001 вложила миллиард долларов в развитие Linux.
Рассмотрим теперь особенности машинного языка систем, совместимых с 360. Базовый ассемблер таких систем называют BAL – Basic Assembly Language. Удивительно, но если верить слухам об IBM, то ассемблер там до сих пор один из основных рабочих языков программирования.
Ассемблер рассматриваемых мейнфреймов имеет ряд архаических особенностей, которые в большинстве известных архитектур, появившихся позже, уже отсутствовали. Речь, например, идет о том, что мнемоники BAL определяют тип аргументов. Такое, кстати, перешло на ассемблеры Power и PowerPC. Рассмотрим в качестве примера команды ассемблера x86 MOV EAX,EBX и MOV EAX,address – в обоих случаях используется мнемоника MOV. Для BAL для подобных случаев используются разные мнемоники LR и L в командах соответственно LR 0,1 и L 0,address . Однако подобные разные мнемоники позволяют использовать числа для именования регистров, хотя обычно макросы R0, R1,… вместо чисел 0, 1,… – это первое, что определяется в макропакетах для удобства программирования. Другой архаизм – это использование переходов по метке в конструкциях условной компиляции, хотя по моему скромному мнению – это иногда удобнее блочных структур. Но самый известный архаизм – это использование кодировки EBCDIC для работы с символьной информацией. В этой странной даже для вчерашнего дня кодировке буквы английского алфавита кодируются не подряд, например, буква I имеет код 201, а следующая за ней J – 209! Эта кодировка происходит из технологий работы с перфокартами, возникшими ещё в докомпьютерную эпоху. Система 360 на аппаратном уровне поддерживает и кодировку ASCII, но в её древнем и давно забытом варианте, где символ для цифры 0 имеет код 80, а не 48 как сейчас. Насколько мне известно, ASCII с мейнфреймами IBM лучше было даже и не пытаться использовать. Поддержку ASCII убрали уже системах 370, но ввели на новом уровне в системах 390. Некоторые мнемоники BAL поражают своей сверхкраткостью и даже немнемоничностью, например, N значит AND, O – OR, X – XOR, A – ADD, S – SUBTRACT, M – MULTIPLY,…
Ассемблер BAL позволяет работать с тремя основными типами данных: двоичными, десятичными и вещественными числами. Системы 390 для работы с вещественными числами используют ещё один специальный тип. Некоторые системы Z могут ещё использовать и совершенно уникальные данные типа десятичные вещественные числа. Инструкции для работы с каждым типом образуют особый и довольно изолированный класс инструкций. Как правило, за очень редкими исключениями все системы, совместимые с 360, поддерживают инструкции десятичной и вещественной арифметики. Как известно, для архитектур x86 или 68k поддержка работы с вещественными числами появилась не сразу и долгое время была необязательной опцией, а работа с десятичными числами не была чем-то совершенно отдельным от двоичной арифметики – это было скорее расширение.
Для работы с вещественными и двоичными числами используют разные наборы регистров, а для работы с десятичными числами регистры не используются вообще. Система 370 предоставляет 16 32-разрядных регистров общего назначения для целых двоичных чисел, причем счетчик команд – это часть слова состояния процессора. Отдельного стека нет, его можно организовать, используя любой регистр, – так впоследствие реализовали работу со стеком и в ARM. Вызов подпрограмм также сделан как и в ARM, через регистр связи. Практически всегда все регистры взаимозаменяемые, исключения очень редки. Если сравнивать систему двоичных регистров BAL с конкурентной архитектурой VAX, то можно заметить, что у VAX на один регистр меньше. Это верно и для ARM.
Структура операндов в инструкциях покажется довольно знакомой тем, кто знает ассемблер x86. Для двоичных чисел операнды имеют структуру «регистр-регистр» или «регистр-память», причем для последнего случая из памяти можно загружать как 32-битные, так и 16-битные, расширяемые знаково, величины. Например, аналогом x86-инструкции ADD EAX,EBX будет AR 0,1 , ADD EAX,address – A 0,address , ADD EAX,address[EBX] – A 0,address(1) , ADD EAX,address[EBX][EDX] – A 0,address(1,3) . Однако системы 360 и даже их поздние развитие не умеют работать с масштабированием, например, ADD EAX,address[8*EBX] на BAL одной командой не запишешь. С другой стороны, x86 не умеет работать с 16-битными знаковыми расширениями, например, команда BAL AH 0,address , которая означает взять 16-битное знаковое число из памяти и добавить его к содержимому регистра 0, на x86 потребует двух команд для своей реализации.
Редкая особенность BAL в наличии отдельных команд для сложения и вычитания для знаковых и беззнаковых чисел, причем беззнаковые операции в BAL называются логическими. Такая странность вызвана отсутствием в архитектуре 360 привычных для большинства других архитектур флагов. Вместо них используется только два бита, которые устанавливаются по-разному разными инструкциями! Разница между знаковыми и беззнаковыми операциями только в том, что они по-разному устанавливают упомянутые два бита признаков. Для знаковых операций по ним можно узнать, был ли результат равен нулю, был ли он положительный или отрицательный, произошло ли переполнение, а для беззнаковых – был ли результат равен нулю и случился ли перенос или заем. Команды условных переходов позволяют учитывать все 16 подмножеств случаев, которые возможны при использовании 2 бит. По причине такой необычной сегодня работы с признаками операций, инструкции условных переходов получаются трудными для быстрого понимания. Хотя в расширения BAL обычно добавляют довольно удобные для восприятия макросы для условных переходов, где не нужно заниматься разбором каждого из 4-х бит. Тут для справедливости можно заметить, что отдельные команды для знакового и беззнакового сложения и вычитания есть, например, в архитектуре MIPS, где вообще нет флагов!
Другая редкая особенность – в отдельных командах для знакового и беззнакового сравнения. Подобные встречал не только у MIPS, но и на PowerPC и MicroBlaze. В последнем, кстати, перенос – это единственный поддерживаемый флаг.
В системах, совместимых с IBM 360, нет арифметических операций с флагом переноса, поэтому если нам нужно работать с двоичными числами, например, в 128-разрядов, то мы должны для организации их сложения или вычитания проверять признак переноса после выполнения первых 32-битных операций и делать при необходимости переход. Это, конечно, очень громоздко по сравнению с x86, ARM, 68k или даже 6502, но на гораздо более позднем MIPS – это ещё более громоздко. Нормальную работу с переносом сделали только в системе Z.
В BAL нет циклических сдвигов, зато нециклические, как и в x86, могут быть как одинарными, так и двойными. Однако, BAL имеет отдельные инструкции сдвигов для беззнаковых и знаковых чисел, только последние из них устанавливают флаги признаков. Кроме того, знаковые сдвиги (даже влево) не меняют старший бит! Для сдвигов и некоторых других случаев стандартную адресацию используют необычным образом. Величина сдвига задаётся индексной адресацией – двумя регистрами и смещением! Однако, один из регистров просто игнорируется и используется сумма второго регистра и смещения, обращения к памяти не происходит вообще. Вращения добавили только в системы 390.
Среди команд загрузки регистров в BAL есть скорее всего уникальные. Можно загружать модуль целого числа, отрицание этого модуля или число с измененным знаком – нечто отдаленно похожее мне встречалось только в архитектуре ARM. Тут стоит отметить, что вся архитектура 360 тяготеет к знаковой арифметике, а беззнаковая арифметика в этой архитектуре скорее вторична. В BAL изначально не было беззнаковых деления и умножения, их добавили только в систему 390. При загрузке регистра флаги, также как и в x86, не меняются, но есть специальная команда загрузки, которая ставит флаги – это опять напоминает ARM, где установкой флагов можно управлять.
Все знаковые арифметические операций, включая сдвиги, могут генерировать исключение при переполнении. Генерировать ли исключение или нет определяется специальным флагом маски в регистре состояния. Интересно, что двоичные деление и умножение в BAL вообще не влияют на флаги – тут можно вспомнить x86, где деление лишь портит флаги.
Поразрядные логические операции в BAL представлены обычным набором операций И, ИЛИ, исключающее ИЛИ, т. е. отдельной операции отрицания нет. Логические операции могут иметь не только структуру «регистр-регистр» или «регистр-память», но и «память-константа» или «память-память» – последний способ адресации похож на тот, что используется для десятичных чисел. Адресация типа «память-константа» возможна только для работы с байтами. Очевидно, для логических операции, в отличие от арифметических, использование 16-битных чисел невозможно. Для адресации типа «память-память» можно работать с данными длиной до 256 байт! Получается, что мы имеем три типа данных для работы с логическими операциями: байты, 32-битные слова, последовательности байт – и специальные инструкции для каждого такого типа, что скорее как-то неуниверсально.
К логическим операциям в BAL примыкают операции для пересылки байт. Помимо обычной пересылки до 256 байт одной командой, есть ещё уникальная инструкция пересылки тетрад байтов. Можно пересылать только старшие или младшие половинки байт и при этом другие половинки при копировании сохраняют своё значение! Такие странные операции нужны для поддержки особенностей BAL при работе с символьной и десятичной информацией. Есть ещё появившиеся для систем 370 команды пересылки и сравнения для до более 16 миллионов байт за один раз, которые могут прерываться. Удивительно, но также небыстрые команды по работе с блоками длиной до 256 байт прерываться не могут, что может создать неприятную своей длительностью задержку реакции на запрос на прерывание. Команды для пересылки можно использовать и для заполнения памяти заданным байтом. Помимо пересылки из памяти в память, можно ещё и устанавливать заданным значением отдельные байты. Очевидно, что команды для пересылки байт, если не рассматривать новые инструкции для 390 и Z, для x86 реализованы более продвинуто.
BAL также позволяет загружать из памяти или выгружать в память последовательный ряд регистров, причем можно брать ряд регистров через регистр 0. Для таких команд стандартную адресацию опять используют совершенно необычным образом. Например, инструкция с двумя операндами SM 1,10(3,4) означает сохранить регистры с 1-о по 3-й по адресу регистра 4 со смещением 10! Для архитектур ARM или 68k подобные команды реализованы более мощно, но в архитектурах POWER и PowerPC подобные команды стали наоборот менее мощными.
В регистр можно загружать не только значение по заданному адресу, но и сам адрес, как в командах LEA для x86 или 68k. Эта возможность позволяет также напрямую загружать в регистр нужную константу, хотя её максимальное значение не может быть большим 4095. Она же позволяет делать инкремент регистра на величину не более 4095. А вот декремент регистра можно делать только на 1. Как инкремент, так и декремент – это команды работы с адресом, поэтому они не меняют флаги. В регистр можно загружать и отдельные байты и даже группы байт из слова в памяти, например, только первый и третий байты – такое для всех других известных мне 32-битных архитектур возможно только через серию из 4-х команд. Аналогичным образом BAL позволяет выгружать в память только части регистра.
Ряд BAL инструкций очень специализирован – в других архитектурах такие реализуются серией более простых команд. Например, инструкция TR позволяет провести перекодировку строки символов – одним аргументом задаётся строка для перекодировки, а другим адрес перекодировочной таблицы. Особый вариант этой инструкции, TRT, можно использовать для сканирования заданной строки и пропуска пустых символов – это функциональность стандартного вызова strpos языка C. Инструкции ED и EDMK абсолютно уникальны – они имеют функциональность примитивного варианта sprintf! Однако почти все операции со строками имеют ограничение на максимальную длину строки, не более 255 байт, что значительно снижает их мощность.
В BAL из-за отсутствия команд вращения или команд типа SWAP довольно трудно работать с 16-битными беззнаковыми величинами. С систем 390 ситуация с этой проблемой стала лучше. Некоторые инструкции BAL объявлены устаревшими, например, инструкция для полубайтовых сдвигов MVO была вытеснена более удобной SRP. Для блочных пересылок и сравнений лучше использовать новые инструкции, хотя из-за того, что они используют другой способ адресации, это может быть в некоторых редких случаях неоптимальным.
Уже приводились примеры четырех основных режимов адресации BAL. Есть еще пятый для трехадресных команд. Такие режимы, как характерные для VAX, 68k, PDP-11 или даже 6809 режимы с авто-инкрементом или декрементом в BAL отсутствуют. Также нет режимов с двойным косвенным обращением к памяти, которые есть для VAX, 68020 или PDP-11. И, конечно, BAL, в отличие от ассемблеров VAX или PDP-11, совершенно неортогонален. Ближе всего BAL к ассемблерам x86 и ARM — самым успешным современным архитектурам. Порядок операндов в BAL справа-налево так же, как и в ассемблере Intel для x86 или в ассемблере ARM и, соответственно, не так как у VAX, PDP-11 или 68k. Хотя порядок байт в данных в BAL от старшему к младшему (MSB), что отличается от x86, ARM или VAX, но соответствует принятому для 68к или MIPS.
Операции с десятичными числами реализуются в BAL только через адресацию типа «память-память». Десятичные числа могут задаваться участками памяти длиной до 16 байт, что позволяет использовать числа, имеющие до 31 десятичного разряда. Это соответствует точности двоичного числа со 107 разрядами. Таким образом, только самые современные системы программирования, использующие целые двоичные числа, могут работать с большими величинами, чем системы 360 почти 60 лет назад! Конечно, можно через двоичную арифметику реализовывать сколь угодно большие числа, но популярных языков программирования, поддерживающих числа, большие, чем у древней системы 360, почему-то до недавнего времени не было. Да и сейчас поддержка 128-разрядных целых для x86 – это обычно только неофициальные расширения, как например, для GCC.
Десятичные числа на BAL представляются уникально, они должны хранить знак – такого нет для VAX, x86, 68k,… Причем знак хранится в последнем байте представления числа! Для десятичных чисел в BAL есть непосредственная поддержка для всех основных операций: сложения, вычитания, умножения и даже деления – такого также нет ни в одной другой известной мне архитектуре. Кроме того в BAL есть ещё инструкции для копирования, сравнения и сдвигов десятичных чисел. Упоминавшаяся инструкция MVO и SRP предназначены именно для таких сдвигов. Операции могут выполняться только над упакованными десятичными числами, но для их распечатки их надо распаковать, причем и для представления распакованных цифр в BAL также необходим знак, который в этом случае не занимет места, так как помещается в старшую тетраду, что требует особой работы с этой тетрадой перед печатью. Странно, что операции для паковки и распаковки могут работать только с не более чем 16 байтами распакованного десятичного числа, что позволяет использовать с ними только не более, чем 15-разрядные числа. Эта неприятная проблема может быть решена использованием для распаковки инструкций ED или EDMK, а вот упаковку большого неупакованного числа придётся делать через не самую простую последовательность инструкций. В системы 390 добавили новые инструкции, решающме эту проблему. Любопытно, что инструкции для упаковки и распаковки работают с любыми двоичными данными, а не только с десятичными.
В BAL есть специальные уникальные инструкции, позволяющие за раз конвертировать двоичное число в упакованное десятичное и наоборот. Для десятичного числа в этих инструкциях всегда выделяется 8 байт, т. е. 15 цифр и знак. Однако, 32-битного регистра хватает только для представления знакового числа, соответствующего 9-значному десятичному числу, поэтому не всякое десятичное число в правильном формате BAL можно преобразовать в двоичное одной командой. Для систем Z есть расширенные инструкции для подобных преобразований.
Команды переходов в BAL отличаются тем, что они, как правило, парные – адрес перехода можно задать как явно, так и содержимым регистра – в многих других архитектурах переходы по содержимому регистра есть только для безусловных переходов. Кстати, безусловных переходов в BAL нет, они реализуются заданием всегда истинного условия, что аналогично архитектуре ARM. Условные переходы в BAL, как уже отмечалось, имеют уникальный синтаксис. Рассмотрим, например, инструкцию BT 9,address , которая означает сделать переход, если условия 0 и 3 выполнились, но условия после разных команд означают разные вещи. Например, после знакового сложения эти условия означают «результат равен 0 или произошло переполнение», а после беззнакового – «результат 0 и переноса не было или результат не 0 и перенос был». Несмотря на громоздкость и некоторую избыточность нельзя не признать, что такая система работы с условиями для переходов наверное самая гибкая из всех известных. Девятка в команде из примера используется в двоичном представлении 1001, т. е. задаёт номера бит – сама система кодировать все комбинации условий 4 битами используется и в ARM. Помимо переходов по условию в BAL есть ещё переходы по счетчику с декрементом, примерно такие же как в ассеблерах Z80, x86, 68k, PDP-11,… Но BAL ещё имеет две совершенно уникальные инструкции для переходов, которые в зависимости от номера одного из регистров-операндов могут быть трех- или четырехадресными! В этих уникальных командах два регистра складываются и полученная сумма сравнивается с содержимым другого регистра и по результатам этого сравнения определяется делать переход или нет. Считается, что такие необычные инструкции удобны для работы с таблицами переходов.
Как уже отмечалось, вызов подпрограмм в BAL реализован без использования стека, через простое сохранение адреса возврата в регистре. Однако, инструкции BAL для таких вызовов, одна из которых также называется BAL, сохраняют не только адрес возврата, но и часть регистра статуса, в частности, флаги условий, длину текущей инструкции и даже маску для опциональных исключительных ситуаций, например, для целочисленного или десятичного переполнения, – об этом уже упоминалось выше. Такое необычное расширенное сохранение информации связано с тем, что счётчик команд в архитектуре мейнфреймов – это старшая часть машинного слова статуса и инструкции вызова подпрограмм механически сохраняют его старшую часть. Специальных команд для возврата из подпрограмм нет, нужно использовать обычный переход по адресу в регистре. В системах 390 в связи с переходом на 31-разрядную архитектуру появились новые команды для вызова и даже возврата из подпрограмм. Новые инструкции позволяют гибко использовать в одной программе коды, исполняющиеся в разных режимах.
Для быстрого вызова однокомандных подпрограмм в BAL есть уникальная инструкция EX, которая выполняет инструкцию по заданному адресу и переходит к следующей команде. Инструкция EX может модифицировать вызываемую инструкцию, что позволяет использовать в вызываемой инструкции любой нужный регистр или задавать параметры при массовой пересылке байт. Подобная инструкция, но более простая есть ещё в системе команд TMS9900.
Изначально в BAL не было относительных, перемещаемых переходов, таких как есть в Z80 или x86. Их добавили только в системы 390.
Несколько необычны ещё команды SPM, TM, TS, STCK и STPT. Первая из них позволяет одной командой установить все флаги операций и маску опциональных исключений. Команда TM позволяет проверить группу бит и определить три случая: все нули, все единицы, смесь из нулей и единиц. Такую проверку одной командой в других архитектурах не сделать. Однако, TM работает только с отдельными байтами в памяти. TS используется при работе с несколькими процессорами – похожая команда есть для 68k. Инструкция STCK считывает значение внешнего (!) таймера, а инструкция STPT значение внутреннего таймера, встроенного в процессорную схему. Странно, но команда STPT привилегированная, а STCK нет.
Стоит ещё упомянуть инструкции CS и CDS, которые предназначены для поддержки мультипроцессорной работы. Они реализованы для систем 370, т. е. доступны с начала 70-х. В x86 аналог CS, инструкция CMPXCHG, была реализована не ранее 1987, а аналог CDS, инструкция CMPXCHG8B, – только в 1994!
С систем 370 вводится команда самоидентификации системы STIDP, она привилегированная и не слишком информативная. Для x86 подобная команда сделана существенно мощнее. Тут можно ещё заметить, что IBM 4361 в LCM позволяет исполнить STIDP любому пользователю. Это очевидно эмуляция, срабатывающая по исключению.
Четыре адресных режима BAL задают два операнда для инструкции, пятый режим задает трехадресные команды. Однако, игнорирование части информации позволяет иметь одноадресные команды, а использование неявной информации – четырехадресные. При использовании в адресации регистр 0 имеет особую роль: он там просто игнорируется – это позволяет не учитывать базу и индекс при расчете адреса. Все инструкции BAL занимают строго 2, 4 или 6 байт. Это похоже на 68000 или PDP-11, но не на x86, VAX или ARM.
В систему 390 добавили ещё несколько режимов адресации, доведя их число до 18. Число инструкций также возросло весьма значительно, среди новых инструкций есть даже поддерживающие работу с Unicode – такого до сих пор нет для x86! Среди новых инструкций систем 390 есть и другие уникальные. В систему Z добавили ещё несколько режимов адресации, а общее число команд для современных Z весьма велико и наверное даже больше числа команд для современных x86-64!
В системах 360, 370 и 390 смещения при обращении к данным в памяти, как и в ARM, 12-разрядное, т. е. не более 4095, что не очень удобно – в больших кодах может возникнуть нехватка регистров для базы. В x86 такое смещение в реальном режиме 16-разрядное, что, конечно, гораздо удобнее. Но в систему Z добавили поддержку адресации с 20-разрядным смещением, что, конечно, ещё лучше. Хотя, стоит отметить, что в защищенном режиме x86 или в 68020 смещение может быть 32 битным. Как уже отмечалось, в системах до 390, как и в ARM, не было возможности использовать большие константы при работе с регистрами. Архитектура x86 здесь гораздо гибче. Поэтому при использовании ассемблера с системой 360 или 370 часто приходилось использовать литералы, псевдоконстанты, что несколько медленнее.
По быстродействию системы, совместимые с IBM/360, всегда имели неплохие показатели. Мои эксперименты с 4361-1, в частности, в проекте вычисления числа π по алгоритму-затвору, показали очень хорошие тайминги. Инструкции 4361-1 работают практически без задержек, как ARM или другие современные процессоры. Однако, из-за несколько неуклюжей системы команд, полученной в наследство из 60-х, в частности, из-за отсутствия деления на 16-разрядный делитель, результат по эффективности электроники процессора оказался на уровне 80186. Это примерно на 80% хуже результата, показанного лучшим тогда компьютером из семейства VAX, модели 785. Однако, мейнфрейм в LCM явно далеко не самый лучший среди мейнфреймов IBM доступных тогда. Здесь ещё уместно заметить, что мейнфреймы использовали каналы, специализированные процессоры, которые делали ввод-вывод очень быстрым, гораздо более быстрым, чем у большинства современных им компьютеров. Хотя идея канала в некоторой ситуации доводилась до абсурда, например, текстовые терминалы также работали через каналы, что делает невозможным использование популярных текстовых редакторов на мейнфреймах! Известно, например, что с 80-х, когда широко стали использоваться ПК, пользователи мейнфреймов иногда предпочитали переносить тексты на ПК и там их редактировать!
Мне студентом случилось поработать с отечественным клоном IBM/370, ЕС-1045, в 1987 через пакетный режим, а в 1989 через диалоговый. Для пакетного режима приходилось готовить перфокарты. В то время уже использовал домашний компьютер и поэтому использование архаичных перфокарт оставило не лучшее впечатление. А вот диалоговый режим был неплох, только часто ломался, при большом числе пользователей. Поэтому некоторые студенты приезжали работать к 4 утра! С тех пор больше с мейнфреймами дела иметь не получалось, только недавно решил через эмуляцию поразбираться с этой веховой для истории компьютеров технологией.
Клонирование IBM 360 было весьма популярно. Клоны делали в Англии, Германии, Японии и другими компаниями в США. В СССР это клонирование приобрело очень драматический оттенок. Ради этого клонирования произошла свёртка почти всех отечественных разработок в области ИТ, некоторые из которых были весьма перспективны. В частности была закрыта тема компьютеров Урал, о которых потом с теплотой отзывался известный компьютерщик Чарльз Симони. Закрыт был также проект БЭСМ-10, хотя машины предшествующего класса БЭСМ-6 были сравнимы с IBM 360 по быстродействию. Развитие недорогих перспективных почти персональных компьютеров МИР, один из них был даже куплен IBM в 1967, получило низкий приоритет. Также ради этого клонирования сорвали почти заключенный контракт с ICL, возможно с этим контрактом британская индустрия ИТ приобрела бы новую динамику и не пришла бы в упадок. Только суперкомпьютеры Эльбрус, возможно из-за их связи с оборонной промышленностью, уцелели после «вторжения клонов», которое Дейкстра назвал величайшей победой США в холодной войне. Особенно странно, что СССР отказывался от любых прямых производственных контактов с многочисленными производителями мейнфреймов, которые могли бы значительно улучшить качество производимых советских компьютеров.
Как вспоминают люди, работавшие с мейнфреймами в СССР, отечественный клоны отличались чрезвычайно низкой надежностью и требовали к себе постоянного внимания со стороны обслуживающего персонала. В то время как оригинальные американские мейнфреймы IBM были одними из самых надежных компьютеров своего времени. В советские клоны закладывали иногда более десятка (типично более 5) килограмм драгоценных металлов, золота, платины, палладия и серебра, но это не помогло исправить ситуацию с надежностью. Из-за такого большого количества высоколиквидных ценностей трудно представить, что работающий отечественный клон мог где-нибудь сохраниться. Не трудно предположить, что если бы просто продали все такие ценности, использованные при производстве советского мейнфрейма, то за вырученные деньги можно было бы купить надёжный американский или английский мейнфрейм.
В качестве одного из основных аргументов в пользу необходимости перехода на клонирования использовался тезис о том, что отечественная экономика не в состоянии производить нужное программное обеспечение. А клонирование позволяло использовать программы даром, или, если говорить прямо, программы рекомендовалось просто воровать! Однако практика показала, что некоторые отечественные программы для мейнфреймов получились очень удачными и они практически полностью вытеснили фирменные. В качестве одного из примеров таких программ могу назвать диалоговый монитор Primus. Конечно, надо ещё отметить, что реально фирменные программы доставались совсем не даром – они требовали довольно больших усилий для адаптации, в частности, русификации. С последним иногда случался перебор, например, при в языке программирование могли заменить все служебные слова на их перевод – так, например, было с языком кобол.
Интересно, что главный разработчик IBM 360 ушел из IBM и основал фирму Amdahl, которая более двух десятков лет специализировалась на производстве систем, совместимых с мейнфреймами IBM и при этом несколько их превосходящих по быстродействию и надежности при более низких ценах. В итоге из-за больших перемен на рынке мейнфреймов, Amdahl, как и ICL, стали частью японской корпорации Fujitsu.
Помимо компьютеров архитектуры IBM/360 существовали и другие мейнфреймы. В 60-е американские производители мейнфреймов неофициально получили звучное имя Белоснежка и семь гномов. Наверное несложно догадаться, что Белоснежкой была компания IBM. Мейнфреймы оригинальных архитектур производили и в других странах. Особо стоит упомянуть британскую архитектуру ICL 1900. Эпоха мейнфреймов, закат которой начался с середины 70-х, имела несколько неожиданный эффект: практически все компьютерные технологии оказались почти полностью сконцентрированы в США, в других странах, включая СССР, фактически отказались от развития своих процессоров, архитектур и базового программного обеспечения. Это очень парадоксально, так как в дальнейшем производство компьютеров и программ к ним становилось совсем недорогим. Возможно этот парадокс случился из-за того, что усилия IBM по созданию мейнфреймов создали такую колоссальную движущую силу, что подмяли под себя почти все ресурсы национальных экономик других стран в стремлении быть наравне с IBM. В самих США мейнфреймы лишь показали бизнесу, что компьютерные технологии становятся источником для рыночной конкуренции.
Как уже писал, мне удалось настроить рабочую конфигурацию для VM/CMS 6. Однако, обнаружилось, что редактора XEDIT в свободном доступе нет, а простой EDIT слишком своеобразен и неудобен, поэтому редактировать тексты приходится в хосте. Также обнаружилось недоступность штатной программы для переноса файлов с эмулятора терминала на мейнфрейм и обратно, что потребовало использования виртуальных перфокарт для такого переноса. Другая неприятная неожиданность обнаружилась в связи с отладкой. Команда DEBUG не поддерживает пошагового исполнения! В то время как такая возможность была даже для отладчика DDT для процессора 8080. Также удивительно, хотя и менее критично, что DEBUG не умеет делать дизассемблирование, которое часто встраивалось даже в простейшие мониторы процессоров 70-х. Под CMS на низком уровне не поддерживается перенос длинных строк и управляющий символ конца строки! Поэтому при печати из программ на ассемблере нужно форматировать строки вручную, чтобы они не пропадали за правым краем экрана, а также заботиться о заполнении финишными пробелами последней строки. Также необычно отсутствие автоматического вертикального скроллинга.
Тем, кто захочет поработать с мейнфреймами впервые, стоит иметь в виду, что мейнфреймы – это огромная экосистема, где многие привычные понятия могут иметь другую трактовку. Например, простого понятия файл там нет. Одним из ключевых атрибутов файла является размер записи, ничего подобного для файлов Linux или Microsoft Windows нет. Сами файлы различаются по методам доступа к ним и об этом писались и возможно пишутся нетонкие книги. Также необычно, что в CMS имя диска пишется в конце полного имени файла, а разделяются имя, расширение и диск пробелами, причем само имя диска называется почему-то режимом файла. Хотелось бы ещё поразбираться с многозадачной MVS, насколько знаю в СССР до неё так и не дошли.
Вообще несколько неожиданно, что некоторые известные операционные системы, которые использовались на весьма дорогих компьютерах, не поддерживали работу с каталогами файлов, что равняло их с самыми первыми и примитивными ОС для микрокомпьютеров, например, CP/M или Commodore DOS. Не случайно поэтому CMS иногда называли CP/M для мейнфреймов. Удивительно, но насколько мне известно, поддержку для каталогов в CMS так и не ввели, хотя последний выпуск системы датируется 2018. Почему-то работа с каталогами для дорогих компьютеров до 80-х поддерживалась часто плохо. Например, такой поддержки не было в DEC RT-11 и даже одна из лучших ОС для PDP-11, RSX-11, поддерживала только двухуровневые каталоги. Самая популярная IBM ОС до 2000-х была MVS (1974) и даже тут каталоги были сделаны только частично, как и в Apple MFS (1984). Хотя в Unix (1973), MS-DOS (с 1983) или даже 8-битной Apple ProDOS (1983) с этим всё было в порядке с самого начала. Самая продвинутая работа с файлами предлагалась в VAX/VMS (1977), где помимо каталогов есть даже встроенная поддержка версионирования файлов. Вместо каталогов в CMS, как и в RT-11, можно использовать монтирование образов дисков в качестве логических дисков.
Интересно, что язык сценариев для CMS, MVS и некоторых других IBM ОС, REXX, в сокращенном варианте стал языком командных файлов для Commodore Amiga. Возможно это была какая-то компенсация, так как с 1984 Commodore постоянно поддерживала архитектуру IBM PC.
Программы для мейнфреймов, как правило, двухцветные. Терминалы, поддерживающие цвет, использовались сравнительно редко и поэтому цветных программ мало. Также мало программ с динамической графикой, частое обновление экрана приводит к заметному неприятному мерцанию.
Динамическая демка, запущена на эмуляторе IBM 4381 в LCM, терминал 3270-3
В заключении не могу удержаться, чтобы не выразить восхищение технологиями IBM. Они всегда отличались неповторимым своеобразием и высоким уровнем. Особенно хочу отметить очень хорошее качество документации, которая и даже по современным системам есть в открытом доступе. IBM демонстрирует колоссальный динамизм развития технологий и это при том, что это одна из крупнейших компаний в мире. По числу наемных работников она почти равна Microsoft, Google и Intel взятым вместе!
Тема мейнфреймов огромна. Конечно, смог написать только небольшую часть того, что она может вместить. Буду очень признателен за уточнения и дополнительную информацию.
Этот материал доступен и на английском.