Леонид Черняк – История электронных компьютеров (страница 24)
Рождение IBM System/360
В начале 1960-х IBM столкнулась с критически важной проблемой: компания выпускала множество отдельных моделей компьютеров с несовместимыми архитектурами и программным обеспечением. Клиентам приходилось переписывать программы при переходе на более мощные машины, а поддержка каждой модели обходилась дорого.
Для выхода из положения было решено объединить разнообразные вычислительные системы в единый стандарт, который позволял бы масштабировать мощности без переписывания программ. Стратегическая инициатива исходила от Томаса Уотсона-младшего, который видел необходимость рационализировать продуктовую линейку и обеспечить конкурентоспособность компании. Однако конкретная архитектурная концепция, набор инструкций, стандарты совместимости, операционные системы и проект периферийных устройств создавались и вырабатывались командой инженеров, ученых и архитекторов:
• Фред Брайант и его группа архитекторов отвечали за совместимость моделей;
• Джон Бэкус и другие специалисты разрабатывали стандарты программирования и набор инструкций;
• Десятки инженеров, математиков и экспертов по периферийным устройствам работали над масштабируемостью, надежностью и многопользовательской архитектурой.
Замысел состоял в том, чтобы построить архитектуру, способную покрыть весь рынок вычислительных машин. Это и нашло отражение в названии System/360 – намеке на полный охват вычислительного пространства. Линейка стала революцией: единая архитектура, совместимость программ между моделями, общие языки и операционные системы, возможность роста производительности без переписывания кода. Таким образом, System/360 – это продукт командной инженерной работы, в которой стратегическая рамка задавалась руководством, а все технологическое содержание и инновации исходили от инженеров и ученых IBM.
От идеи к железу: реализация System/360
После того как инженеры IBM определили цель – создать единый стандарт, охватывающий весь спектр вычислительных задач, – перед ними встал ряд конкретных проблем:
• Совместимость моделей разного уровня мощности. Команда должна была спроектировать архитектуру так, чтобы программы для «малых» моделей работали на «больших» без изменений. Это потребовало унификации набора инструкций (Instruction Set Architecture, ISA) и стандартов работы с памятью, вводом-выводом и периферией. Фред Брайант и его группа архитекторов разработали единый набор команд, который включал арифметические, логические и управляющие операции, а также инструкции для работы с потоками данных и устройствами.
• Масштабируемость и производительность. В линейке System/360 существовали модели от относительно скромных 360/30 и 360/40 до мощных 360/75 и 360/195. Инженеры использовали модульную конструкцию процессоров, позволяющую добавлять процессоры, расширять память и подключать новые устройства без перепроектирования всей системы. Для этого применялись блоки общей архитектуры, которые могли наращиваться как строительные блоки.
• Управление памятью и виртуализация. Одним из прорывов стало внедрение систем управления памятью и виртуальных адресов. Это позволило запускать несколько программ одновременно (многозадачность) и обеспечивать изоляцию процессов. Работу этих систем проектировали совместно инженеры по аппаратной архитектуре и специалисты по операционным системам.
• Периферийные устройства и стандартизация интерфейсов. Впервые IBM стандартизировала подключение дисковых накопителей, лент, принтеров и терминалов. Это позволяло клиенту без переделки ПО или аппаратуры подключать новое устройство. Команда инженеров по периферии разработала унифицированные интерфейсы и протоколы обмена данными.
• Программная поддержка. Джон Бэкус и группа разработчиков языков программирования создавали стандарты для COBOL, FORTRAN и ассемблера под System/360. Важной задачей было, чтобы программы на высокоуровневых языках корректно работали на всех моделях линейки. Это обеспечивало полную совместимость и минимизировало затраты клиентов на переписывание ПО.
В 1964 году IBM представила 360/30 и 360/40 – малые и средние модели, и 360/65 и 360/75 – более мощные варианты для крупных организаций. В 1965–1966 году линейка расширилась до самых производительных моделей, включая 360/195, способные выполнять миллионы операций в секунду. Каждая модель использовала один набор инструкций, единые стандарты памяти и ввода-вывода, но отличалась производительностью и количеством подключаемых модулей.
Основные трудности при создании IBM System/360
Создание принципиально новой архитектуры было необычайно сложной задачей. Требовалось объединить требования разных типов клиентов: малых и средних предприятий, крупных корпораций и научных центров. Каждая категория имела свои потребности – бизнес нуждался в точных и надежных вычислениях, научные центры – в высокой производительности для сложных расчетов. Объединить все это в единой архитектуре, не ограничивая возможности мощных моделей и не перегружая малые, было инженерным вызовом.
Не меньшей проблемой оказалось определение набора команд. Команды компьютера задают его функциональность, и каждая прежняя модель имела собственный набор инструкций. При проектировании System/360 нужно было разработать универсальный компромиссный Instruction Set Architecture, который был бы достаточно богатым для сложных вычислений, но при этом не усложнял бы малые модели и не делал их медленными и дорогими. Найти баланс между универсальностью и эффективностью оказалось крайне непросто.
Одновременно инженеры сталкивались с задачей управления памятью и поддержки многозадачности. В крупных организациях уже тогда возникала потребность запускать одновременно несколько программ, обеспечивая при этом изоляцию процессов. Разработчикам пришлось создать систему виртуальной адресации и управления памятью, которая работала бы одинаково на всех моделях линейки и позволяла каждому процессу видеть «свою» память, независимо от физического объема ресурсов. Это было особенно сложно с учетом технических ограничений того времени: интегральные схемы только появлялись, дисковые и ленточные накопители были медленными, а интерфейсы ввода-вывода ограничены.
Не меньше усилий потребовала разработка масштабируемой аппаратной конструкции. Модели System/360 должны были различаться по мощности, но использовать одни и те же архитектурные принципы. Инженеры создали модульные процессоры и блоки памяти, которые можно было наращивать по мере необходимости, обеспечивая плавный переход от малых машин до крупных вычислительных центров.
Особое внимание уделялось периферийным устройствам. До System/360 каждая машина имела свои ленты, диски, принтеры и терминалы, что делало расширение и модернизацию сложными и дорогими. Для новой системы нужно было разработать унифицированные интерфейсы и протоколы обмена данными, которые позволяли подключать любую периферию ко всем моделям.
И, наконец, сама архитектура была бы бесполезна без программной поддержки. Программы должны были работать на всех моделях линейки без изменений. Для этого инженеры IBM синхронизировали разработку аппаратной части с созданием операционных систем и стандартизировали языки программирования COBOL, FORTRAN и ассемблер. Такое параллельное проектирование «железа» и софта было новым подходом для того времени и потребовало тесного взаимодействия различных групп специалистов.
Только преодолев все эти трудности – разработав единую архитектуру, стандартизовав набор команд, спроектировав масштабируемые процессоры и модули памяти, унифицировав периферию и создав универсальные операционные системы – команда IBM смогла перейти к конкретной линейке моделей System/360, которая объединила малые, средние и крупные системы в единую экосистему, задав стандарты для всей индустрии.
Принципиальные новшества System/360
Создание System/360 требовало не просто улучшения существующих технологий, а разработки принципиально новых подходов как в аппаратной архитектуре, так и в программной поддержке.
Прежде всего, инженерам IBM пришлось впервые в истории объединить разноуровневые модели в единую архитектурную платформу. Прежде каждая машина проектировалась отдельно, и каждая имела собственный набор команд. System/360 ввела концепцию универсального набора инструкций, одинакового для всех моделей, что позволило запускать одну и ту же программу как на малой, так и на сверхмощной машине. Это была революционная идея совместимости «по вертикали» – масштабируемости программного обеспечения вместе с ростом мощности аппаратуры.
Второе принципиальное новшество касалось управления памятью и многозадачностбю. В System/360 впервые была реализована система виртуальной адресации и разделения памяти между процессами, что позволяло запускать несколько программ одновременно и изолировать их друг от друга. До этого большинство компьютеров работало с физической памятью напрямую, и любая ошибка в одной программе могла повредить данные другой. Новая концепция стала предвестником будущих систем виртуализации, которые сегодня лежат в основе серверов и облачных вычислений.
Третье – масштабируемая модульная архитектура процессоров и блоков памяти. Для того чтобы разные модели линейки отличались по мощности, но оставались совместимыми, инженеры придумали принцип «строительных блоков» – процессоры, память и устройства ввода-вывода проектировались так, чтобы их можно было наращивать. Это было совершенно новым подходом: до System/360 инженеры просто проектировали отдельную машину под каждую задачу.