Полезные заметки/История компьютера
Механические аналоговые вычислители
Механические вычислительные машины существовали намного дольше, чем большинство может подумать, представив себе советский арифмометр «Железный Феликс» — как только научились делать шестерёнки с достаточной точностью, появились и машины. Вот только были они аналоговыми или большей частью аналоговыми — величина задаётся углом поворота стрелки. Это и обыкновенные часы с кукушкой — они считают количество ходов маятника и переводят это число в количество минут и часов (спусковой механизм часов дискретен, но это не делает часы цифровым вычислителем). Ей являлся и античный Антикитерский механизм — прибор на шестеренках, предназначавшийся для астрономических расчётов (аналогичные приборы упоминаются в различных античных источниках, Антикитерский просто единственный, найденный археологами).
Навигационные и баллистические вычислители тоже делали аналоговыми из-за простоты ввода, надёжности и достаточной точности (в любом случае расстояния известны ±лапоть[1]), пока электронная цифра не заняла и эту нишу. И поныне данные в такие вычислители часто вводятся крутилками — потенциометром с АЦП или энкодером.
У советских космонавтов была аналоговая машина «Глобус», показывавшая положение корабля над Землёй, а также решавшая две задачи: когда корабль выйдет на свет или в тень (нужно прикинуть, стыковка будет на свету или в тени), и куда корабль упадёт, если начнём тормозить прямо сейчас. Никакой информации с навигационных систем машина не брала, это просто очень продвинутые часы, бравшие частоту с бортовой сети корабля. Работает только с круговыми орбитами, под каждое наклонение приходится делать свой глобус; большинство настроены на 51,8° — стандартное наклонение «Союзов». Широта Байконура 45,97° и потому это самое энергетически удобное наклонение (максимально используется энергия вращения Земли), но чтобы на старте ракета не пролетала над западным Китаем (тогда враждебная страна → тяжело эвакуироваться), её направляют чуть к югу. Глобус стоял на панели «Союзов» до 2002 года, и уже тогда некоторые космонавты просили заменить его более ценными приборами. Интересно и устройство глобуса: экватор — пластина толщиной в несколько миллиметров; с одной из её сторон подведён валик, отвечающий за вращение полушарий (суточное вращение Земли). Экватор наклонён на те самые 51,8°.
- Аналоговый механический баллистический вычислитель: https://habr.com/ru/post/503696/
Цифровые механические вычислительные машины
- NB. Цифровой вычислительной машиной считаем всё, что имеет индикатор и может хотя бы полуавтоматически переносить в следующий разряд. То есть счёты нет (индикатор без переноса), палочки Женая тоже нет (перенос без индикатора), а одометр и счислитель Куммера — уже да.
Цифровые механические вычислительные машины делятся на такие крупные категории:
- счётчик — выполняет операции ±1 (скакалка со счётчиком прыжков, автомобильный одометр, счётчик электроэнергии, кликер для транспортных расчётов);
- счётчик со сдвигом — выполняет операции ±10a (некоторые дешёвые западные «типа-суммирующие-машины»). Чтобы вычислить 123+405: сбрасываем машину, жмём 100 один раз, 10 дважды, 1 трижды, 100 четырежды, 1 пять раз;
- суммирующая машина — автоматизированные счёты, выполняющие операции ±a·10b (и даже методы умножения и деления чисто счётовские). Чтобы вычислить 123+405: сбрасываем машину, жмём 100, 20, 3, 400, 5;
- арифмометр — в нём разделили цифронаборник и сумматор, а последний расположили на подвижной каретке и добавили счётчик оборотов — арифмометр делает одновремено две операции: для сумматора ±aaaaa·10b, для счётчика оборотов ±10b с возможностью считать в отрицательные (ручным переключателем или автоматически). Это замедлило сложение и вычитание, зато позволило множить и делить:
- 123 + 456 выполняется так: сбросить сумматор, каретку в единицы, набрать на цифронаборнике 123, оборот ручки, набрать 456, оборот ручки;
- при многократном суммировании по счётчику оборотов контролируем, не пропущено ли слагаемое;
- 456·128 с учётом того, что 8=10−2: сбросить счётчик оборотов и сумматор, набрать 456, каретку в сотни, 1 оборот ручки, каретку в десятки, 2 оборота + ещё один для 8-ки, каретку в единицы, 2 оборота назад, убедиться, что на счётчике оборотов 128 или 13ƻ=130−2 в зависимости от модели;
- если перекрутили ручку — её можно провернуть обратно; соответственно на счётчике уменьшится цифра. Но: из-за особенностей механизма переноса начатый оборот надо докрутить, а потом сделать обратно — иначе будет ошибка;
- деление — многократным вычитанием: делимое в сумматоре, делитель на цифронаборнике, частное на счётчике оборотов «отрицательными» цифрами;
- отсюда разделение обязанностей: в банках, где множить и делить практически не надо, используется суммирующая машина, а в конструкторских бюро — арифмометр;
- есть компромиссная схема под названием клавишный арифмометр — на каретке не сумматор, а наборный регистр. Счётчик «оборотов» (чаще нажатий рычага) часто одноразрядный. Такая схема используется в недорогих клавишных машинах. Как и арифмометр, не имеет никаких преимуществ перед калькулятором и быстро был заменён им — в отличие от суммирующей машины типа «Комптометр», чьей фишкой было аккордное нажатие кнопок. По принципам работы близок к арифмометру, с двумя отличиями: 1) сильно упрощено суммирование ценой остального; 2) частное выходит по одной цифре и надо его записывать на бумагу.
- 123 + 456 выполняется так: сбросить сумматор, каретку в единицы, набрать на цифронаборнике 123, оборот ручки, набрать 456, оборот ручки;
- более продвинутые машины, вычисляющие сложные функции по жёсткой программе (разностная машина Бэббиджа);
- табулятор — для программируемой обработки больших массивов данных;
- можно при желании и настоящий компьютер (то есть Тьюринг-полную машину) сделать, но в металле его сделали уже на электронике.
В 1960-е годы найден чертёж Леонардо да Винчи — он изображал цифровой счётчик (возможно, кусок более сложной машины). Однако первой достоверно документированной МВМ, которая могла произвольно выполнять все четыре арифметических действия, считаются «Считающие часы» Шиккарда (1623 год). По реконструкции 2020, часы состояли из трёх несвязанных частей: счётчика-сумматора, механической таблицы умножения, ускорявшей XXXXX·Y, и регистра «на всякий случай» (например, для запоминания цифр частного). Чтобы умножить 456·123, пользователь должен был добавить к сумматору 45600, потом умножить умножалкой 456·2 и добавить полученное в сумматор со сдвигом на разряд, и аналогично 456·3. Но как складывать быстро, а не считать щелчки, придумает…
Математик Блез Паскаль около 1642 сделал суммирующую машину с главной её особенностью: захватываем колесо заострённым штырём и ведём до упора (все суммирующие машины, кроме очень продвинутых, так будут работать). Он активно рекламировал своё изобретение, несколько штук дошли да нас, но не взлетело: что обычно суммируют? — Деньги! — французская денежная система была 1 ливр = 20 су, 1 су = 12 денье, так что машина градуировалась или в деньгах, или в десятках, что мешало универсальности (десятичные деньги будут после Французской революции). Забегаю вперёд — Англия избавилась от такой же системы в 1971 и в XX веке существовали десятичные арифмометры с совершенно дикими аддонами, чтобы работать в фунтах-шиллингах-пенсах. Да и умножение, как и подобает продвинутым счётам, работало только многократным сложением.
А Готфрид Лейбниц около 1673 сделал настоящий, хоть и громоздкий арифмометр с двумя регистрами — цифронаборником и сумматором (счётчик оборотов только одноразрядный). Французский изобретатель и предприниматель Шарль Томá в 1823 году улучшил машину Лейбница и адаптировал её для мелкосерийного производства. Главный элемент этой машины — валик Лейбница, цилиндр с десятью дорожками, от 0 до 9 зубцов на каждой. Таких цилиндров было по штуке на разряд цифронаборника, отсюда немаленький размер: около дециметра на разряд.
Чудовищно огромный вклад в развитие вычислительной техники, кибернетики и механики внесли французские ткачи. Провансальский механик Базиль Бушон из Лиона в 1725 году придумал использовать перфорированную бумажную ленту для записи программы, чтобы упростить изготовления сложных узоров на ткацком станке. На ленте была записана программа, какую именно нить задействовать в данном прогоне, это позволяло быстро писать «программки» для разных станков под любой рисунок. Фактически получился первый в истории программируемый автоматический станок. На рубеже XIX века его дальний родич и свойственник Жозеф Мари Жаккар усовершенствовал его станок, введя, помимо перфолент, и металлические перфокарты, это позволило резко улучшить станки и получать немыслимые прежде для живого ткача по детальности рисунка, окраске и качеству ткани, которые тоже стали называть жаккардовыми. Многие узлы и механизмы его станков тут же стали использовать в других областях техники — музыкальных и игральных автоматах, различных сверлильных и точильных станках и, разумеется, в вычислительной технике.
Читатель ждёт уж имя «Бэббидж»? Ну вот, возьми его скорей! Машина Бэббиджа отличалась от машин Шиккарда, Паскаля, Лейбница и Тома тем, что управлялась не специально обученным рукоятором, а вводом данных с перфокарты, и её можно было программировать. Амбициозный проект, увы, не был завершён, Бэббиджу удалось в 1820-е построить в металле только обыкновенную МВМ — разностную машину, которая умела производить больше действий, чем классические арифмометры (она умела приближенно считать логарифмы и тригонометрические функции), программируемая же аналитическая машина реализации так и не дождалась. Однако и это было ценным изобретением, разностные машины стали строиться другими изобретателями и использоваться для составления логарифмических таблиц.
В середине XIX века некто Куммер из Санкт-Петербурга (близкий родственник другого Куммера, которого упоминают на матанализе) изобрёл самую простую суммирующую машину — счислитель Куммера. Состоит из плоского корпуса и N зубчатых реек, всё. Передвигая рейки заострённым штырём, можно складывать и вычитать. В 1920-е немцы начали производить такие счислители под маркой «Аддиатор», и гаджет даже стал популярным — одних только оригинальных аддиаторов было сделано несколько миллионов. Даже солидный бизнесмен мог вытащить аддиатор в красивом латунном корпусе и начать гонять цифры. В СССР счислители производились малой серией как игрушки (счёты — наше всё), а вот за бугром они даже некоторое время конкурировали с калькуляторами за счёт меньшей цены (единицы долларов против сотни) — последний аддиатор выпустили в 1982.
До ветвлений ещё далеко, но важнейший сценарий для линейной цепочки — исполнить её многократно на целом массиве данных, желательно в реальном времени. Это и реализовано табулятором Холлерита (1890). Он использовал перфокарты и предназначался для автоматизации большого количества простых операций — сложения и вычитания, имел электрический привод. Это изобретение пошло в массы и производилось во многих странах мира. К слову, именно фирма, основанная Холлеритом для производства табуляторов, впоследствии получила название «Международная корпорация деловых машин» (International Business Machines Corporation, или попросту IBM).
В том же 1890 году в Петербурге наладили производство арифмометров Однера. Основой является колесо Однера — цифронаборное колесо, на котором вырастает от 0 до 9 зубцов. Единственный недостаток этой схемы — не очень удобный цифронаборник (нужно перемещать шпенёк от 0 до 9), но и эту проблему в дальнейших машинах (не в СССР) закрыли. Зато такая схема дешева и компактна (около сантиметра на разряд; «железный Феликс» стоил в пределах 25$ и имел 8 разрядов счётчика оборотов, 9 — цифронаборника и 13 — сумматора), и все ручные арифмометры быстро перешли на однеровскую схему. Но в послевоенные годы, казалось бы, устаревшая схема Лейбница-Томá наносит ответный удар в виде карманного арифмометра «Курта». Валик Лейбница удивительно красиво вписан в цилиндрическую компоновку «Курты». Это было что-то: 230 граммов, 6 разрядов счётчика оборотов, 8 — цифронаборника и 11 — сумматора (была и более крупная версия с 8/11/15 разрядами). Из-за высокой цены было выпущено около 140 тысяч штук.
Электроника быстро вытеснила механику с «переднего края» расчётов. Но вот на столе банковского клерка или инженера красовалась именно механическая машина: калькулятор стал более-менее доступным порядка 1980. Автогонщики любили вышеупомянутую «Курту»: штурман мог считать среднюю скорость на дорожном этапе[2] на ощупь, а глазами ловить ориентиры и километровые знаки — да и в тряске калькуляторы быстро ломались. А в банках суммирующие машины типа «Комптометр» были вытеснены даже не калькуляторами, а СУБД: хороший комптометр позволяет нажимать кнопки аккордом, что в разы быстрее калькулятора. А языки dBase и SQL, несмотря на страшный КОБОЛоподобный вид, всё-таки позволили программируемо проводить повторяющиеся расчёты и обучить этому не компьютéрика, а экономиста.
- Комптометр https://habr.com/ru/company/timeweb/blog/691654/
- Считающие «часы» Вильгельма Шиккарда https://habr.com/ru/companies/rshb/articles/792290/
Пневматические и гидравлические компьютеры (как цифровые, так и аналоговые)
Так вышло, что несжимаемость воды и законы гидростатики сделали её отличным кандидатом на аналоговые машины, а подвижность и сложные законы воздуха — на цифровые. Хотя есть исключения.
Те, кто добрался в институте до уравнений в частных производных, знают, как сложно решить аналитически даже в простейших случаях, когда область интегрирования квадрат или круг. А запрограммировать численное решение с нуля — гиблое дело, лучше пользоваться готовыми пакетами. А теперь открутим время до межвоенных годов — ЭВМ пока только на кульманах, а уравнения считать надо. И тут светлые умы придумали гидроинтегратор — аналоговую машину для численного решения уравнений в частных производных. Занимает целую комнату, использовался грубо до 70-х, когда прогресс по численным методам и языкам программирования позволил-таки эти пакеты написать, а потом портировать с машины на машину.
В 1949 новозеландский студент Уильям Филлипс сделал аналоговую водяную машину MONIAC, моделирующую экономические процессы — просто как учебное пособие.
Джон Конуэй, будущий главный спец по клеточным автоматам, около 1957 сделал небольшую цифровую водяную ВМ — видимо, просто шутки ради. Нечто подобное около 2022 сделал и известный научный блогер Стив Моулд, уже с использованием 3D-принтеров.
С 1960-х в СССР делали типовые элементы цифровой пневмоавтоматики (и сейчас делают!) — они действуют там, где с электричеством напряг, а сжатого воздуха хватает. А также в шахтах и прочих местах, где недопустимо пользоваться электричеством. Да и электричество было изрядно ненадёжным, а в пневматике на эффекте пограничного слоя (эффекте Коанды) вообще не было движущихся частей. Дырочки в этих элементах были меньше миллиметра. Полноценного компьютера, конечно же, не сделали, это девайс слишком сложный, зато автоматика двигателя самолёта Ан-124 «Руслан» была сплошь пневматической!
Больше о пневматической логике: https://habr.com/ru/company/ruvds/blog/695210/, https://habr.com/ru/post/374309/, http://web.archive.org/web/20190528173336/http://www.smc-pneumatik.ru/cat.php?sub=86
Гидравлический компьютер XIX века https://habr.com/ru/companies/ruvds/articles/819585/
Аналоговая электроника
« | Ещё более экзотическим |
» |
— Полезные заметки/Сложная устаревшая технология |
- https://habr.com/ru/company/cloud4y/blog/701274/ — аналоговая… электроника!
Релейные компьютеры
В 1930-е появились первые цифровые электромеханические компьютеры, которые еще не являлись электронными, а работали на реле — электромагнитных катушках, которые могли замыкаться и размыкаться, таким образом, принимали значение 0 или 1. Изобретателем этих машин был немец Конрад Цузе. К 1941 году он сумел построить полностью функциональный электромеханический компьютер Z3, в котором уже присутствовали типичные для современных машин решения: двоичная система, арифметика с плавающей запятой, а для следующего компьютера Z4 он разработал даже язык программирования, который назывался Планкалькюль (нем. «План расчетов»). Машина нашла применение в Люфтваффе для расчета аэродинамики летательных аппаратов.
Релейный компьютер разрабатывали и в США, под названием «Марк 1». Это была менее совершенная машина, разработчики которой так и не сделали шаг за пределы «арифмометровой» парадигмы и пытались сделать ее десятичной, как машины Бэббиджа, Лейбница и Паскаля. Разработчиком этого чудного компьютера была компания IBM, которая ранее выпускала уже упоминавшиеся табуляторы Холлерита и которая в будущем создаст всем известный PC.
Ламповые ЭВМ
Электронные лампы были куда лучшей материально-технической базой, чем реле, и американцы вскоре это поняли, когда построили ENIAC — первый универсальный тёплый ламповый компьютер (1945). Он разрабатывался для составления артиллерийских таблиц, но к моменту его создания Вторая Мировая война уже закончилась и началась ядерная гонка, и ENIAC нашли лучшее применение — его стали использовать для расчета выпадения ядерных осадков и таблиц стрельбы тактическими ядерными боеприпасами. Эта машина, как и Марк-1, была десятичной. Память измерялась в десятичных разрядах вместо бит. Как и Марк-1, ENIAC был построен по гарвардской архитектуре, в которой память для кода и память для данных были раздельны.
Следующим значимым ламповым компьютером был EDVAC (1946), который уже был двоичным и частично построенным на архитектуре фон Неймана с единой оперативной памятью (её объём составлял 5,5 Кбайт). Читал он уже не с перфокарт, а с магнитной ленты. Полностью архитектура фон Неймана была реализована в английской машине EDSAC (1949). В 1951 году появилась американская мелкосерийно выпускаемая ЭВМ UNIVAC.
Советские ученые включились в гонку в 1950 году, когда появился первый отечественный компьютер МЭСМ. В 1952 году в СССР появилась следующая ЭВМ, БЭСМ-1, а в 1953 мелкосерийная ЭВМ БЭСМ-2 «Стрела».
Транзисторные ЭВМ
К концу 1950-х ламповые ЭВМ стали уступать место транзисторным. Здесь на сцену вновь вышла компания IBM, которая вернулась на рынок ЭВМ с серией транзисторных мейнфреймов IBM 7000. В 1960 году компания DEC выпустила ультракомпактный мейнфрейм PDP-1, который был размером не с комнату, а всего лишь с холодильник. Эта машина была интересна не только размерами, а еще и тем, что в комплекте с ней поставлялись монитор и клавиатура. Монитор выглядел чудно на современный взгляд, он был круглый, а в качестве клавиатуры использовалась электрическая печатная машинка. Именно на этом компьютере была написана первая в мире видеоигра Space War. Умельцы из MIT разработали для PDP-1 и звуковую карту, которая умела пищать музыку по нотам. До нашего времени дошло три экземпляра PDP-1, из которых один — рабочий и демонстрируется в Музее истории компьютеров в Маунтин-Вью, Калифорния.
В СССР в это время попытались пойти в другом направлении и разработали троичные компьютеры. Мелкосерийный троичный компьютер «Сетунь» был разработан в 1959 году. Троичная система была удобнее тем, что в трайт помещалось куда больше возможных значений, чем в байт, при сложении троичных чисел нужно проводить меньше операций, больше возможно логических функций. Но непривычная логика не встретила понимания у руководства СССР, и развития эта линейка не получила. Вместо этого решили развивать двоичные машины, чтоб как у людей, и продолжать развивать линейку БЭСМ, переведя ее на транзисторы. В 1967 году в СССР была построена транзисторная супер-ЭВМ БЭСМ-6.
Компьютеры этого поколения уже стали потихоньку обрастать привычными нам технологиями. Вошли в оборот языки программирования, например, Фортран, Алгол и Кобол. Широкое распространение получили терминалы — мониторы с клавиатурой, которые во множестве подключались к мейнфрейму в качестве тонких клиентов и позволяли многим людям работать на одной машине.
Интегральные схемы
В 1960-е появились первые интегральные схемы — небольшие чипы, которые в одной детали совмещали функционал множества транзисторов. В 1964 году IBM выпустила мейнфрейм на интегральных схемах IBM/360, крупносерийную высокопроизводительную машину во множестве модификаций, в которой окончательно утвердились такие решения, как восьмибитный байт, жесткие магнитные диски, полноценная операционная система System/360.
В СССР, ничтоже сумняшеся, эту машину скопировали и назвали ЕС ЭВМ. Пока возились с БЭСМ-6, успели отстать и прозевали революцию интегральных схем, и создавать собственную крупносерийную машину на них уже не было времени. Также был разработан аналог и свеженькой машины от DEC, PDP-11, под названием СМ ЭВМ. Серия же БЭСМ уже в 1970-е получила продолжение в виде оригинальных машин на интегральных схемах серии «Эльбрус».
В начале 1970-х начали стремительно умнеть и обзаводиться своей собственной вычислительной мощностью терминалы, такие, как Datapoint 2200. Вскоре это привело к тому, что они развились в первые персональные компьютеры. Но единственным полноценным персональным компьютером на малых интегральных схемах был Wang 2200: все последующие уже были основаны на центральном процессоре.
Центральные процессоры
Центральный процессор — это тоже интегральная схема, но ещё более интегральная: в одном чипе собрано всё, что нужно для вычислений. Остальные потроха компьютера служат задачам ввода, вывода, хранения данных, вспомогательных вычислений, например, обсчёта графики. Благодаря этому изобретению стало возможно изобрести настольный персональный компьютер. Первым крупносерийным ПК считается Altair 8800, но по своей философии он представлял собой скорее очень маленький мейнфрейм, чем привычный нам ПК.
Дальнейшую историю персональных компьютеров вы можете прочесть в статье Восьмибитные компьютеры, DOS и PC. А здесь закончим про мейнфреймы и суперкомпьютеры. После распространения ПК они… нет, не вымерли, мейнфреймы ещё существуют, но их стало куда меньше. Во многих сферах применения уже в 1990-е их заменили серверы — компьютеры, которые, по сути, устроены аналогично персональным, но мощнее. По сути, после того, как вымерли IBM/360 и ЕС ЭВМ, последующие семейства мейнфреймов представляли собой просто большие сервера с высокой надежностью. Во многих сферах применения их подменяют кластеры — сборки на базе множества процессоров от ПК.
Примечания
- ↑ Есть анекдот: подходит сын к штурману и спрашивает: сколько будет 7·4? Он достаёт навигационную линейку: — 30±5. На следующий день: — Мне поставили двойку за такое, ответ 28. Он за линейку: — Да, 28, но зачем такая точность?
- ↑ Ралли имели дорожные участки, где надо ехать по ПДД с определённой средней скоростью, и спецучастки, куда трафик не допускался и надо ехать как можно быстрее. В высших классах ралли в счёт идут только спецучастки, отнимающие 10…20 минут, в ралли-рейдах часами гоняют по безлюдной пустыне — а вот в низших спецучастки прокладываются по разного рода технологическим плацам, которые легко закрыть от движения, и длятся пару минут, а дорожная ошибка может стоить первого места. Потому, собственно, и перестали считать дорожные участки, что это «игра в дырки»: на них нельзя выиграть, но можно проиграть.