[Перевод] IBM PC 41 год назад

image-loader.svg


История создания легендарного IBM PC, первого массового ПК от IBM, включая его техническую реализацию и программные особенности. Какие новаторские решения были применены в этой модели, и что обусловило именно такой их выбор?

Не подумайте, у OS/2 Museum (источник материала) нет ни машины времени, ни проблем с математикой. На момент написания статьи мы проживаем август 2021, а о выходе IBM PC было объявлено именно в августе 1981 года, то есть 40 лет назад.

Однако проектирование этих ПК компания начала годом ранее в августе 1980. Один год кажется невероятно коротким промежутком времени для разработки такого продукта, как персональный компьютер, и это верно, особенно для IBM, чей типичный цикл разработки на то время составлял около пяти лет.

Столь сжатый график стал определяющим для дизайна ПК: никаких кастомных или не имеющихся в наличии микросхем, никакой серьезной разработки ПО, предпочтение проверенным и знакомым технологиям.

С учетом этих установок планируемый дизайн был обрисован в ряде документов к 10 августа 1980 года. Некоторые из чертежей — ранее не опубликованные — представлены в этой статье. Глоссарий по используемым в них сокращениях находится в конце.

image-loader.svg


Дизайн IBM PC, август 1980

При внимательном рассмотрении чертежей видно, что, несмотря на некоторые отличия между версиями 1980 и 1981 года, основа осталась прежней:

  • два дисковода;
  • пять слотов расширения;
  • отдельная клавиатура;
  • ЦПУ Intel 8088 с опциональным сопроцессором 8087;
  • контроллер прерываний 8259А;
  • контроллер DMA 8237–5;
  • ОЗУ на системной плате с возможностью установки дополнительных карт ОЗУ;
  • видеоадаптер;
  • подключаемый монитор либо ТВ.


Выбор указанных микросхем оказался не случаен, и причина была очевидна: IBM System/23 Datamaster.

Наследие Datamaster


На аппаратную часть IBM PC очень сильно повлиял опыт разработки проектной командой машины Datamaster. Это может показаться странным, учитывая, что о выходе Datamster было объявлено в июле 1981 года, всего за несколько недель до PC. Но в реальности разработка этого продукта началась в 1978 году, а его аппаратная часть была закончена летом 1980. Выпуск Datamaster сильно откладывался ввиду сложностей с реализацией выбранного IBM диалекта BASIC.

image-loader.svg


IBM System/23 Datamaster (Model 5322)

В Datamaster использовался 8-битный ЦПУ 8085, контроллер прерываний 8259, контроллер DMA 8237 и программируемый таймер 8253. В нем также применялась шина расширения во многом схожая с использованной в PC.

Выбор ЦП


Команда Datamaster выяснила, что 64Кб адресного пространства 8-битного ЦПУ будет недостаточно для выполнения предполагаемых IBM задач. Расширение возможностей адресации было реализовано с помощью пагинации, но это все сильно усложняло.

С учетом этого руководство IBM хотело использовать для PC ЦПУ с намного большим пространством адресов. Логичным выбором стала модель Intel 8086 или 8088. Чуть более высокая производительность 8086 в расчет не бралась из-за его повышенной сложности и стоимости. Intel 8088 же предоставлял удачный компромисс между поддержкой 16-битного ПО с огромным на то время 1Мб адресного пространства и использованием при этом более дешевой и знакомой 8-битной шины данных.

Под 8086 тогда уже существовали Microsoft BASIC и другие инструменты, поэтому портирование программ с 8085 проблем не составило. В качестве дополнительного бонуса у IBM также были системы Intel MDS (microcomputer development system) с поддержкой разработки 8085 и 8086 процессоров.

Ввиду всего указанного, легко ответить на вопросы вроде «Почему IBM не использовали Motorola 68000». В 1980-м этот процессор являлся малодоступным, для него еще не было BASIC и сопутствующего ПО, и у IBM отсутствовал опыт работы с ним. Выбор 68000 отложил бы выход PC гораздо дальше допустимых для IBM сроков. Одного только этого хватало, чтобы отклонить вариант с его использованием.

Внутреннее устройство


Согласно начальной схеме, блок питания занимал левую сторону корпуса PC, а платы адаптеров делили пространство с внутренними дисководами. В итоговом же дизайне БП сместился за дисководы, оставив больше места для длинных адаптерных плат.

IBM воспользовались этим высвободившимся местом, разместив платы на более просторной стороне.

Шина расширения


Datamaster повлиял не только на выбор для PC ЦПУ и сопутствующих микросхем, но также во многом определил реализацию 62-контактной шины расширения ввода/вывода, позже названной ISA-шиной. Насколько значительным оказалось влияние Datamaster? Здесь нам ответят следующие две схемы:

image-loader.svg


Расширение ввода/вывода IBM Datamaster (декабрь 1980)

Выше представлена схема из мануала IBM Datamaster от декабря 1980 года, а ниже вы видите схему подключения расширений из технического руководства IBM PC от августа 1981 года.

image-loader.svg


Расширение ввода/вывода IBM PC (август 1981)

Схемы зеркальны (выводы А слева на верхней соответствуют выводам А справа на нижней), но при этом очень похожи. Бывшие биты выбора страниц 0–3 превратились в адресные биты 16–19. Уровни прерываний и DMA (прямого доступа к памяти), имевшие особое назначение в Datamaster, в PC стали универсальными. Есть и реальные отличия, например вывод B20 в Datamaster был DMA request 0, а в PC стал системным тактовым сигналом. Поскольку PC выделил канал 0 DMA под обновление DRAM, DMA request 0 утратил свой смысл. Вывод В04, не использованный в Datamaster, стал линией запроса прерываний 2.

Это сходство означало, что существующие адаптерные платы для Datamaster можно было использовать в IBM PC с минимальными изменениями, если вообще не без них. Это существенно ускоряло начальную стадию разработки, потому что отсутствовала необходимость создавать, например, новый контроллер дисковода или последовательный адаптер.

Память


Первая системная плата IBM PC поддерживала от 16 до 64 Кб RAM при том, что персональный компьютер того времени мог поддерживать максимум 64Кб. Также были доступны карты 32/64Кб, которые вставлялись в слоты расширения PC. Установив три такие карты (это был предел, так как два слота занимались видеоадаптером и контроллером дисководов) можно было расширить память PC до 256 Кб.

Макетная плата на фото ниже содержит чипы памяти Mostek MK4232 (32К х 1). При этом всего на ней есть 18 слотов под такие чипы, что позволяет установить до 64Кб ОЗУ (два банка по 32Кб) с контролем четности.

image-loader.svg


Макетная плата IBM PC (журнал BYTE)

В то время использование проверки четности для низкобюджетных ПК было редкостью, но в IBM решили, что дополнительная возможность обнаружения ошибок стоит некоторых лишних затрат.

С самого начала адресное пространство 1Мб было поделено на несколько областей. В старшей области 128Кб отводились под прошивку, 128Кб под другую память и 128Кб под память дисплея. Итого оставалось 640Кб под системную ОЗУ, хотя это было чисто теоретически — оригинальный PC поддерживал максимум 256Кб ОЗУ. Даже PC/AT мог нести на системной плате только 256 или 512Кб.

Схема памяти PC была весьма рациональна, и пресловутый лимит в 640Кб не сыграл роли вплоть до конца 80-х, что оказалось намного дольше ожидаемого проектного ресурса этой системы. В то время тормозом прогресса стало не железо (286 и 386 процессоры), а программное обеспечение (DOS).

Внешние устройства хранения


Как видно на чертежах, первичный дизайн PC предполагал внешние дисководы 8», которых в итоге он не получил. А вот остальная часть подсистемы хранения данных итоговой модели почти полностью совпала с его начальным дизайном.

Дисководы 8» использовались в Datamaster, а PC в итоге получил их альтернативу под дискеты 5¼″. Они гораздо удобнее в работе (8» устройства были огромны), да и сам форм-фактор PC не позволял установить дисководы 8».

В качестве их контроллера в Datamaster применялся NEC μPD765. Со своей задачей он справлялся и был хорошо знаком инженерам IBM, так что причин подбирать для PC другой вариант они не видели.

В PC применялись дискеты с размером сектора 512Кб. В последствии это стало настолько повсеместным стандартом, что другие варианты встречались крайне редко. Хотя в 1980/81 годах фигурировали размеры 128, 256 и даже 1,024 байта. В Datamaster использовался тот же стандарт 512 байтов, и только первая дорожка диска содержала сектора размером 128 байтов, что тогда было типичным. В PC же все было упрощено, и уже по всему диску использовались сектора из 512 байтов.

Наверняка можно было и увеличить объем дискет за счет использования размера 1,024 байта, но такой вариант, по всей видимости, даже не рассматривался. Здесь есть интересный компромисс: каждый сектор требует некоторой дополнительной обработки и дополнительного резервного пространства, но в то же время каждый файл впустую тратит некоторую неиспользуемую область своего последнего сектора. То есть, чем меньше секторов (чем они обширнее), тем больше полезная область хранилища и быстрее обработка, но выше трата пространства в последнем секторе каждого файла. В итоге получается, что размер 512 байтов определяет хороший баланс между низкой нагрузкой при обработке и отсутствием утраты остаточного пространства последнего сектора с каждым файлом.

Подсистема сохранения информации PC не требовала совместимости с существовавшими на тот момент системами и устанавливала собственные стандарты.

Оборудование дисплея


При изучении чертежей PC можно заметить, что в значительной степени его итоговый дизайн отличался от начального именно оборудованием дисплея. Это же отличало его и от Datamaster.

Дисплей Datamaster был исключительно текстовым и использовал ЭЛТ-контроллер Intel 8275 (CRTC). Для отображения графики PC требовался другой CRTC, в качестве которого был выбран Motorola 6845. Кроме того, PC была нужна поддержка ТВ, а также отдельных мониторов, в результате чего возможности CGA (цветного графического адаптера) определялись характеристиками системы NTSC.

image-loader.svg


PC в домашней обстановке (рекламное фото IBM)

Изначальный дизайн PC предполагал для отображения текстовой информации разрешение 80×24, которое использовалось в Datamaster, а также являлось стандартным для терминалов. В конечном же счете выбор был сделан в пользу соотношения 80×25, которое сегодня вполне типично, но в 1981 году было крайней редкостью.

Для графики же сначала задумывалось разрешение 280×192 (как в Apple II), но итоговая версия PC (CGA) получила разрешение 320×200. Наиболее вероятным ответом на вопрос «Почему?» будет то, что это вписывалось в ограничения NTSC и 16Кб ОЗУ дисплея.

Видеоадаптер нес на себе 16Кб ОЗУ (16,384 байта). Четырехцветное (по 2 бита на пиксель) разрешение 320×200, или двухцветное разрешение 640×200 задействует ровно 16,000 байтов. При этом памяти оставалось достаточно для еще нескольких строк графики, но не для строки текста, использующего ячейки символов 8×8 точек (почти минимальный размер ячейки, при котором текст остается удобочитаемым).

Исключительно текстовая альтернатива в виде MDA (монохроматического адаптера дисплея) оснащалась 4Кб (4,096 байта) ОЗУ. При этом для сохранения строки текста (80 символов с байтом атрибутов) требовалось 160 байтов, а значит места хватало максимум на 25 строк текста, занимавших 4,000 байтов.

Несмотря на то, что использованное в PC разрешение 320×200 было на тот момент новшеством, в Commodore 64 (вышел несколькими месяцами позже) использовалось такое же. В PC поддерживаемые разрешения для текста и графики находились на грани возможностей, учитывая объем памяти дисплея и использованное оборудование.

Клавиатура


Раскладка клавиатуры PC была идентична его предшественнику Datamaster (клавиатура Model F), но при этом отличались метки клавиш, и сама клавиатура подключалась уже отдельно, а не была встроенной. Если в Datamaster использовалось параллельное подключение внутри корпуса, то в PС применялось последовательное соединение через длинный спиральный шнур.

image-loader.svg


Оригинальная раскладка клавиатуры IBM PC

Сегодня оригинальная 83-клавишная клавиатура PC выглядит чуждо, поскольку еще в конце 80-х в обиход вошла раскладка из 101/102 клавиш.

Обратите внимание, что нажатие последовательности Ctrl-Alt-Del на оригинальной клавиатуре PC (намеренно) требовало использования двух рук, так как Ctrl и Alt располагались только с ее левой стороны, а Del находилась справа.

Технический справочник


Ключевым ингредиентом успешности PC стал технический справочник. Несмотря на то, что он не являлся конкретным руководством и не содержал объемного описания, в нем была полная схема IBM PC, а также весь исходный код BIOS с подробными комментариями. Любой мало-мальски компетентный инженер мог найти спецификации использованных в IBM компонентов и посмотреть конкретно схему их подключения. Можно было даже собрать клон PC.

Технический справочник IBM являлся, опять же, прямым следствием сжатого графика разработки. Времени было недостаточно на привлечение команды технических писателей и составления документации в стиле, характерном для продуктов IBM того времени. С другой стороны, опубликовать существующие схемы и исходный код BIOS было достаточно просто, что очень оценили инженеры, занятые разработкой аппаратного обеспечения и ПО для IBM PC.

Остров ASCII в море EBCDIC


В 80-е годы системы IBM, включая Datamaster, практически эксклюзивно использовали отличный от ASCII код EBCDIC. Но для PC, согласно его проектной документации, изначально планировалось применение ASCII. Это может показаться удивительным, но в процессе разработки подобное решение не вызвало никаких серьезных проблем.

Команду разработки PC специально отделили от остальной части IBM. В Microsoft BASIC использовалась ASCII, в DOS тоже использовалась ASCII. Машины Intel MDS также работали с ASCII, и именно на них велась разработка BIOS для PC.

Разделение ASCII/EBCDIC внесло в процесс разработки PC некоторые неудобства лишь на стадии переноса листингов BIOS (ASCII) на мейнфреймы IBM перед их публикацией в технической документации.

Прерывания BIOS


В Datamaster прерывания использовались как точки входа в программы ПЗУ, и PC этот подход перенял. Несмотря на то, что прямые обращения к известным адресам для машин того времени были типичными, Datamaster не мог с легкостью использовать эту технику из-за пагинации.

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

IBM применили этот подход в контроллере жестких дисков PC/XT (добавив в новую ПЗУ прерывание INT 13h для обслуживания HDD и подключившись к старой службе BIOS для обращения к дисководу) и EGA (использовав дополнительную ПЗУ для управления EGA, но вернувшись к системному BIOS для поддержки CGA/MDA).

Как оказалось, в DOS тоже был выбран вариант системного обслуживания с помощью программных прерываний, что внесло аналогичную универсальность и возможность расширения (а местами и беспорядок).

ПО для IBM PC


Изначально IBM планировали снабдить PC встроенным в ПЗУ BASIC (ROM BASIC) и операционной системой CP/M. Оба этих решения считались стандартными для ПК тех лет. В то время корпорация Microsoft выступала доминирующим поставщиком BASIC для OEM-компаний и уже имела в своем распоряжении его вариацию под 8086 процессор, так что IBM оставалось лишь заключить с ними контракт и реализовать требуемый Microsoft интерфейс OEM.

PC выпускался с ROM BASIC объемом 32Кб, который назывался «Кассетный BASIC», намекая на тот факт, что он может использовать в качестве внешнего хранилища только кассетную пленку. В составе DOS компания IBM также поставляла Disk BASIC и Advanced BASIC (BASIC.COM и BASICA.COM), которые для работы с дисководами задействовали ROM BASIC.

Что касается операционной системы, то здесь все было не столь гладко. На эту тему ходит много легенд и противоречивых историй (англ.) при малом количестве реальных фактов.

Самый серьезный из до сих пор открытых вопросов звучит так: «Почему IBM PC не был снабжен CP/M?». Есть разные слухи о том, как Гэри Килдалл, создатель этой ОС и руководитель Digital Research (DRI), отказался от встречи с руководством IBM, отправившись вместо этого летать на одном из своих самолетов, или же, наоборот, прилетел навстречу слишком поздно и опоздал. Тем не менее ни одна из этих историй не звучит убедительно, так как любую встречу можно просто перенести.

Из других слухов следует, что Килдалл вообще был не при делах, поскольку тогда обсуждением OEM-контрактов занималась его жена. Еще одна версия гласит, что супруга не стала встречаться с IBM, потому что уже была запланирована встреча с HP, после которой она уходила в отпуск. Хотя и эти версии я не нахожу правдивыми, так как всегда можно назначить другую встречу.

Мне кажется, что в действительности история была гораздо прозаичнее: у DRI просто не было готового для продажи продукта, поскольку CP/M-86 не существовало в 1980, ну или в 1981 году.

IBM же ждать были не готовы и предпочли альтернативный план. Microsoft, уже заключившие с этой компанией контракт на предоставление языковых инструментов для IBM PC (ассемблер, Pascal, FORTRAN, и т.д.), нуждались лишь в операционной системе, которую знали, где взять.

История с DOS хорошо задокументирована (англ.). В 1979 году компания Seattle Computer Products (SCP) занялась созданием систем на базе 8086 процессора и нуждалась в операционной системе. CP/M для 8086 на тот момент еще не существовало, и было непонятно, когда она появится. Решение этой проблемы было поручено молодому программисту Тиму Патерсону, который быстренько набросал QDOS, Quick and Dirty OS, вскоре переименованную в 86-DOS.

Это было голое подобие CP/M, которое могло лишь управлять файлами на дискетах и запускать программы. Главным преимуществом данной ОС стало то, что она позволяла относительно легко портировать существующие приложения CP/M для 8085 процессора на 8086, что, по большому счету, делалось через машинный перенос.

В итоге Microsoft купили у Патерсона 86-DOS за довольно скромную сумму, после чего продали лицензию на ее использование IBM по схеме роялти, получив, таким образом, на весь остаток 80-х и начало 90-х неплохой пассивный приток финансов.

IBM PC как фундамент империй


Если задуматься, то можно заметить, что IBM PC заложил основы двух бизнес-империй, ни одной из которых ни стала сама IBM.

Благодаря ему DOS стала стандартным ПО для ПК, и Microsoft с радостью продавали ее лицензию любому стороннему производителю. На протяжении многих лет руководство Microsoft получало большие комиссионные с продаж лицензий на DOS, не прикладывая особых усилий к ее улучшению. Гэри Килдалл даже припугнул их иском за кражу интеллектуальной собственности (которым Билл Гейтс был явно обеспокоен), но Microsoft успели заменить DOS на Windows до того, как DRI удалось реально подорвать их финансовый приток.

Intel же, судя по всему, пришли к созданию своей империи x86 исключительно по воле судьбы. Их детище, 8086, изначально рассматривался как краткосрочный продукт. В качестве минимального апгрейда за ним последовал 80286, а 80386 уже создавался как в некотором роде бесперспективный проект, после чего, ввиду серьезного провала iAPX 432, он стал главным стратегическим преимуществом компании. По сути, именно IBM PC подтолкнул Intel идти по пути x86.

В данном случае весьма уместно выражение «Оказаться в нужное время, в нужном месте».

Итоги


Цикл разработки IBM PC оказался очень коротким, продлившись всего год с момента старта фазы проектирования и до завершающей стадии готового продукта. Изначально в своей основе дизайн сильно упирался на опыт разработки IBM Datamaster. Ключевая часть архитектуры PC в большей степени повторяла именно этого его предшественника, кроме одного существенного отличия — апгрейда ЦП (Intel 8088 вместо Intel 8085). Подсистема ввода/вывода PC, с другой стороны, получила лишь частичное сходство с Datamaster в плане внешнего хранилища и коммуникаций, а в плане дисплея вообще почти ничего общего с ним уже не имела. Таким образом в PC уже закладывались новые стандарты.

Сжатый график разработки определил практически весь дизайн PC, начиная с оборудования (существенное заимствование решений Datamaster) и заканчивая ПО (использование доступных сторонних программ, не дожидаясь CP/M-86). IBM PC оказался правильным продуктом, появившимся в правильное время, а его успех и продолжительная востребованность превзошли самые дерзкие ожидания.

Пояснения


В проектных зарисовках используются сокращения, которые лучше пояснить. Вот моя попытка расшифровать некоторые из акронимов и формулировок IBM:

  • CD: Карта (карта расширения или карта ввода-вывода);
  • CH: Канал;
  • DEC: Декодирование или декодер;
  • DRV: Дисковод;
  • 1LPC: 1 линия на канал—сколько проводов умещается в область 0.1 дюйма между контактами компонентов; более высокое значение LPC подразумевает более дорогостоящее производство;
  • MPU: Микропроцессор aka ЦПУ;
  • PCK: Проверка четности;
  • Planar: Системная плата;
  • ROS: Хранилище только для чтения aka ПЗУ;
  • RQ/GT: Запрос/Одобрение.


Источники


  • The Creation of the IBM PC, David J. Bradley, BYTE, September 1990
  • A Personal History of the IBM PC, David Bradley, IEEE Computer, August 2011
  • Whence Came the IBM PC, Jon Titus, EDN, September 15, 2001
  • Recollections of Gary Kildall, an interview with Gordon Eubanks by Clive Akass
  • IBM PC Technical Reference, IBM, publication no. 6025008, August 1981
  • IBM 5322 Computer Service Manual, IBM, publication SY34–0171–0, December 1980
  • Personal correspondence with Dr. David J. Bradley

image-loader.svg

© Habrahabr.ru