Русский
Русский
English
Статистика
Реклама

Старые компьютеры

Перевод 70 лет компьютерной истории, обращенные в музыку

31.12.2020 16:11:51 | Автор: admin

Реконструкция Colossus в британском Национальном музее вычислительной техники, Блетчли парк

Поздно ночью в британском Национальном музее вычислительной техники несколько старейших машин пробудились от длительного механического сна. Композитор и саунд-дизайнер Мэтт Паркер сделал 126 записей звучания компьютеров, заключавших в себе 70-летнюю историю развития, чтобы сохранить эти редчайшие голоса и преобразовать их в музыку.

Рекомендация переводчика: для лучшего погружения читать статью под прилагающуюся музыку из итогового альбома The Imitation Archive.


Паркер в интервью журналу Hyperallergic: Зачастую в целях сохранности предметы ценности прошлого заключаются в прозрачные плексигласовые коробки, чтобы излишне любопытные руки их не донимали. В итоге мы довольствуемся лишь созерцанием диковинных объектов через прозрачное стекло, читая приложенный к ним текст.


Обложка альбома

Через некоторое время вышло готовое 34-минутное аудиовизуальное произведение The Imitation Archive, доступное для платного скачивания на Bandcamp. Все исходные записи музыканта также были переданы им в архив аудио и видео материалов британской библиотеки.

Будучи художником-резидентом музея, Мэтт записал звуки таких исторически значимых машин, как огромный реконструированный Colossus 1943 года, являющийся первым цифровым компьютером в мире, когда-то размещавшимся в Block H. В числе прочих он запечатлел звучание электромеханического криптографического устройства Bombe 1939 года, разработанного Аланом Тьюрингом и Гордоном Уэлшманом, а также старейшего действующего цифрового компьютера Harwell Dekatron (WITCH) 1950 года.

Во время Второй мировой войны в Блетчли парк размещалось главное британское шифровальное подразделение, где Тьюринг занимался расшифровкой данных германской Энигмы. Название произведения The Imitation Archive несет в себе отсылку к фильму The Imitation Game 2014 года, посвященному той самой работе Тьюринга.

В еще одной своей аудиовизуальной инсталляции The Cloud is more than Air and Water Паркер отразил мрачно-футуристичный рокот современных облачных вычислений. Эта инсталляция напоминает о более шумной эпохе, звуки которой находятся на грани исчезновения. Паркер комментирует это так: В проекте реконструкции Colossus честно задействованы техники и оборудование, соответствующие оригинальной конструкции. Но один из инженеров как-то сказал мне, что электронным лампам, использованным для его программирования, осталось, может, лет десять. Вот они выйдут из строя, и что тогда?


Harwell Dekatron Computer (WITCH), Национальный музей вычислительной техники

В ночной тиши закрытого музея Паркер записывал все, что мог, в чем ему помогали волонтеры и инженеры, поддерживавшие функционирование монструозных машин. Тогда при записи гигантского считывателя перфокарт Powers-Samas произошел неприятный инцидент, о котором Мэтт вспоминал так: Один пожилой инженер, которому было уже за 80, поделился, что буквально на следующий день окончательно уходит на пенсию. Когда мы затем начали запускать эту машину, она внезапно обнаружила ошибку и дала сбой, так что мне удалось записать всего 10 секунд ее работы. Самое неприятное, что починить ее мог только этот инженер, который на следующий день выходил на пенсию.


Atvidaberg Facit модель C1-19, Швеция. Национальный музей вычислительной техники


Grimme, Natalis and Co. модель Brunsviga 13ZK, Германия. Национальный музей вычислительной техники

Простой архив звукозаписей может сохранить только отдельные детали функционирования машин. При этом произведение The Imitation Archive отличается своей бесценной звуковой интерпретацией самого духа этих машин. Слова Паркера: Я думаю, что самым сложным для меня было создать то, что я бы слушал с удовольствием, что несло бы эмоциональную историю конкретных объектов, в частности, отражало бы напряженность и удушающие условия работы с Колоссом в Block H или в помещении, где безостановочно функционировали 20 машин Bombe, за которыми трудились инженеры-женщины (WRENS).

Тяжелые компьютерные звуки WITCH отражаются в его многогранной композиции глубокими перекликающимися мотивами, постепенно нарастая параллельно с щелкающими ритмами. По всему звуковому ландшафту прослушивается пульсирующая частота релейных переключателей и трансформаторов, все быстрее по ходу десятилетий, переходящая к огромным мейнфреймам 1970-х и настольным компьютерам 1980-х. В этих глючно-фантомных паттернах ощущается постоянное движение, выражающее непрерывное использование машин и прогресс технологий. Сегодняшние компьютеры в своем большинстве представляют почти бесшумные, мягко урчащие кулерами устройства, в противовес чему The Imitation Archive напоминает о какофоническом аккомпанементе эпохи их зарождения.



Подробнее..

Перевод История компьютерного дизайна Holborn 9100

30.03.2021 12:10:29 | Автор: admin


Если вам интересно, как в конце 70-х большинство людей представляли себе футуристичный компьютер, то ответ кроется в этом малоизвестном нидерландском ПК, поскольку именно такой аппарат я бы ожидал увидеть в фойе отеля Хилтон орбитальной станции из фильма 2001: Космическая Одиссея.



Сверху кадр из 2001: Космическая Одиссея (1968), снизу реклама Holborn 6500. Источник: Technisches Museum

Если бы на Space Station V в упомянутом фильме были персональные компьютеры, то, уверен, они бы однозначно походили на разработку Holborn.

Модель 9100 появилась на рынке в 1981 году. Выпускала эти компьютеры небольшая компьютерная компания Holborn, расположенная в Энсхеде, Нидерланды. Название бренда, фактически, представляло собой сокращение от Born in Holland.

Техническая часть устройства была разработана Хансом Полаком и Хэнни Биверсом, дизайном же занималась студия Vos. Как результат этой совместной разработки, система Holborn 9100 представляла собой единую консоль, состоявшую из монитора и клавиатуры, а также отдельный массивный модуль, в котором размещались два флоппи-дисковода (в качестве опции был доступен HDD 30Мб). Без сомнений можно сказать, что визитной карточкой 9100 явился интегрированный монитор 12, выступавший из консоли, подобно перископу.

Полностью заряженная версия в качестве дополнительного способа ввода включала фоточувствительное световое перо для ЭЛТ-экрана (мыши тогда еще не были широко доступны). В основе аппаратной части Holborn 9100 лежал ЦПУ Zilog Z80A и ОЗУ объемом 72Кб, который можно было расширить до 220Кб. Продавались эти компьютеры с двумя вариантами операционных систем: классической CP/M и собственной Holborn OS.

<img src=habrastorage.org/webt/vp/eb/r4/vpebr4r1vmafwdjmnzqu2bza-hc.png
Рекламное фото Holborn 9100. Обратите внимание на массивный внешний модуль для записи/хранения данных, в котором размещались 2 дисковода 8 и опциональный HDD на 30Мб


До разработки полноценных компьютеров компания Holborn производила терминалы, чей отличительный дизайн и лег в основу модели 9100. Источник: Technisches Museum

Текучая, органичная форма Holborn сильно отличалась от большинства компьютеров того времени, имевших грубые угловатые контуры, например Commodore PET 2001.

Быть может эстетику Holborn вдохновил дизайн модной в то время классической мебели 50-60х годов, изготавливавшейся из литых полимеров (например, стул Tulip Ээра Сааринена или стулья Phantom). Модель 9100, действительно, практически полностью изготавливалась из белого термически формованного пластика. Забавный факт. Многие, включая меня, находят сходство между формой корпуса 9100 и головой персонажа фильма Инопланетянин 1982 года. Конечно же, разработка Holborn происходила намного раньше, так что можно считать это чистым совпадением.

В конечном итоге весь модельный ряд составили четыре модели: 9100, 7100, 6500 и 6100. Причем порядок выпуска получился по убыванию номера модели, то есть сначала появился 9100, а за ним уже остальные модификации. Всего компания выпустила 200 машин, из которых на сегодня уцелело, по примерной оценке, около 20, что делает их одними из редчайших в своем роде.

Эти продукты компании Holborn, имеющие эксклюзивный дизайн и хорошую техническую начинку, на то время можно было назвать достаточно амбициозными устройствами, которые ориентировались на малый и средний сегменты бизнеса.

На деле же появление компьютеров IBM и сравнительно высокая розничная стоимость в $10 000 способствовали коммерческому провалу 9100 и последующих серий, что в конечном счете вынудило Holborn объявить в 1983 году о банкротстве.



Открытый корпус Holborn 6500: верхняя часть с монитором (в модели 6500 клавиатура не была интегрирована, вместо нее устанавливались дисководы) шарнирно прикреплена к плоской панели, на которой находится материнская плата и основная часть электроники. Источник: Technisches Museum


Монитор модели Holborn 6100 с ЭЛТ, покрытой зеленым люминофором. Эти ЭЛТ изготавливались компанией Toshiba. Обратите внимание, что установлена CP/M


Модель 6100 с внешним модулем 6140. Источник: Technisches Museum


Основатели Holborn: Ханс Полак (справа) и Дик Гердзен (слева) на производственной линии завода в Энсхеде, Нидерланды

Примечание редакции: в шапке статьи размещено оригинальное рекламное фото микрокомпьютера Holborn. Источник: Technisches Museum

Подробнее..

Перевод 12-минутный Мандельброт фракталы на 50-летнем мейнфрейме IBM 1401

29.01.2021 10:18:54 | Автор: admin
Когда я узнал, что в Музее компьютерной истории есть работающий компьютер IBM 1401 [1], то заинтересовался, сможет ли он сгенерировать фрактал Мандельброта. Я написал программу фрактала на языке ассемблера и компьютер в течение 12 минут пыхтел, создавая изображение Мандельброта на своём строчном принтере. В процессе этой работы я узнал несколько любопытных фактов о IBM 1401, которые изложу в этой статье.


Мейнфрейм IBM 1401 (слева) из Музея компьютерной истории печатает фрактал Мандельброта на принтере 1403 (справа). Примечание: это строчный принтер, а не матричный.

Компьютер IBM 1401 появился в 1959 году, он стал самым продаваемым компьютером середины 1960-х всего использовалось более 10 тысяч систем. 1401 сдавался в аренду за 2500 долларов в месяц [2] (примерно 20 000 долларов по нынешним ценам) низкой цене, позволившей использовать компьютеры большему количеству компаний. Даже бизнес средних размеров мог использовать 1401 для подсчёта зарплат, ведения бухгалтерии, инвентаризации, обработки заказов, выставления счетов и множества других задач. Благодаря низкой стоимости и большой популярности 1401 прозвали Моделью Т компьютерной отрасли [3]. Даже для своего времени IBM 1401 имел довольно скромную производительность, особенно по сравнению с мощными бизнес-компьютерами наподобие IBM 7080 (стоимость аренды: 48 000 долларов в месяц) [2]. Однако IBM 1401 получил огромную популярность благодаря своей доступности, надёжности, простоте использования, качественному принтеру и стильному внешнему виду [4].

1401 был одним из первых полностью транзисторных компьютеров. Однако это были даже не кремниевые, а германиевые транзисторы технология, использовавшаяся до кремния. Транзисторы и другие компоненты монтировались на печатных платах размером примерно в половину игральной карты. Они назывались платами Standard Modular System (SMS), каждая из них обеспечивала функции наподобие триггера или простых логических функций. IBM 1401 мог содержать тысячи карт SMS, это зависело от необходимых возможностей в базовой системе использовалось примерно 933 карты [5], а в системе, с которой я работал, была 2881 карта SMS. (Подробнее о картах SMS см. в моей предыдущей статье.)


Карты SMS, установленные внутри IBM 1401. Эти карты являются частью системы управления плёночным приводом, усиливающей считываемые с плёнки сигналы.

Карты SMS вставляются в стойки (которые IBM по непонятной причине назвала гейтами), вытягиваемые из компьютера, как показано выше. Одной из задач при проектировании 1401 была простота обслуживания для доступа к гейту достаточно схватиться за рукоятку и он вытягивается из компьютера, позволяя проводить техобслуживание плат и проводников. В нижней части гейта электропроводка соединяет гейт с другими частями компьютера [6]. Всего в машине 24 гейта.


Компьютер IBM 1401 изготовлен из тысяч печатных плат SMS. В этой открытой стойке (называемой гейтом) видно около 150 карт SMS.

Необычные особенности IBM 1401


Изучать старые компьютеры интересно, потому что они работают совершенно иначе, чем современные. Одними из необычных особенностей IBM 1401 являются использование десятичной арифметики и 6-битные символы, слова произвольной длины, а также дополнительные команды, которые можно было арендовать.

IBM 1401 основан на десятичной, а не двоичной арифметике. Разумеется, внутри используются нули и единицы, но числа хранятся как цифры в формате двоично-десятичного кода (binary coded decimal, BCD). Число 123 хранится как три символа: 1, 2 и 3. При сложении 7 и 8 получаются цифры 1 и 5. Адреса указываются в десятичном виде, поэтому объём накопителя кратен 1000, а не 1024: система с 16 КБ памяти хранит ровно 16 000 символов. Вся арифметика выполняется по основанию 10. Поэтому при делении IBM 1401 аппаратно выполняет деление столбиком по основанию 10.

IBM 1401 не использует байты [9]. Вместо них используется 6-битное хранилище BCD. Каждый символ хранится как 4-битная цифра BCD с двумя дополнительными битами, называемыми битами зоны, они имеют имена A и B [7]. Эти два дополнительных бита зоны позволяют хранить буквы в верхнем регистре (и несколько специальных символов), а также цифры [8].

Использование байта в качестве единицы операций стало популярным позже, только в IBM System/360; в начале 1960-х компьютеры использовали странные размеры слов, например, слова из 13, 17, 19, 22, 26, 33, 37, 41, 45 и 50 битов [9].

На фото ниже показан модуль памяти на магнитных сердечниках из IBM 1401, содержащий 4 000 символов памяти. Каждый бит хранится в небольшом торообразном ферритовом сердечнике с пропущенными через центр проводниками. Модуль на сердечниках сложнее, чем можно было бы подумать, суммарно он состоит из 16 слоёв (фреймов). Восемь фреймов содержат 6 битов данных плюс биты метки слова (о них будет сказано ниже) и биты чётности. Шесть фреймов содержат данные с щёток считывателей карт и печатающих молоточков для контроля данных и ошибок [10]. Оставшиеся два фрейма используются только для подключения.


Для модуля памяти с магнитными сердечниками на 4000 символов компьютера IBM 1401 требуется огромное количество электропроводки.

Вероятно, наиболее необычной особенностью 1401 является использование слов переменной длины, при этом каждое слово обозначается метками слова. Можно было бы ожидать, что слова переменной длины позволяют использовать слова длиной 8, 16 и 32 бит. Но IBM 1401 допускал использование слов с произвольным количеством символов, вплоть до полного объёма памяти! Например, команда может переместить 47-символьную строку или сложить числа из 11 цифр. (Лично я считаю, что их проще воспринимать полями переменной длины, а не словами переменной длины.)

Метка слова это бит, задаваемый в участке памяти для обозначения границы слова (т.е. поля) [11]. Команда в IBM 1401 последовательно обрабатывает данные в памяти, пока не дойдёт до метки слова. Важно помнить, что метки слов не являются частью символов, а больше похожи на метаданные, поэтому они сохраняются при считывании и обработке новых записей данных [11].

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

Ещё один интересный факт о IBM 1401: многие команды нужно было докупать отдельно. Функция расширенного программирования позволяла использовать новые команды для перемещения записей, хранения регистров и использования индексных регистров; для этого требовалась установка 105 новых карт SMS и дополнительная ежемесячная оплата в 105 долларов. Даже команда сравнения оплачивалась отдельно. Так как в 1401 используется BCD, для сравнения двух чисел мы не можем просто вычесть одно число из другого, как сделали бы это на большинстве процессоров. В 1401 для операций сравнения используется набор дополнительных схем примерно 37 карт SMS, стоящих дополнительно 75 долларов в месяц [12]. При аренде функции буфера принтера за 375 долларов в месяц вы получали отдельный модуль накопителя на сердечниках, ещё 267 карт SMS и две новые команды. Команда проверки битов стоила всего 20 долларов в месяц, а дополнительные команды контроля перфорации карт 25 долларов в месяц. При покупке одной из этих функций инженер IBM устанавливал новые карты и переключал некоторые провода на соединительной плате. Благодаря соединительным платам с монтажом скруткой значительно упрощалось подключение на месте эксплуатации.

Память 1401 можно было расширить до 16 000 накопителя на сердечниках: 4 000 символов в самом 1401 и 12 000 символов в комплекте расширения 1406 размером примерно с посудомоечную машину. Комплект на 12 КБ продавался за 55 100 долларов (примерно 4,60 доллара за символ) или арендовался за 1 575 долларов в месяц. (Понятно, почему эффективное использование памяти было важно.) Вместе с расширенной памятью предоставлялись дополнительные команды для работы с большим интервалом адресов.


Крошечные магнитные сердечники позволяют хранить в памяти IBM 1401 4 000 символов. Проводники проходят через каждый сердечник для считывания и записи памяти. На этом фото показано несколько слоёв сердечников.

От компьютера можно ожидать наличия команды вызова подпроцедуры и стека. Всего этого у 1401 не было. Для вызова подпрограммы на IBM 1401 нужно было выполнить переход к началу подпроцедуры. В конце подпроцедуры адрес возврата записывался в команду перехода, модифицируя код, чтобы к концу подпроцедуры возвращаться к вызывавшему её участку кода [13]. Если вам нужна рекурсия, реализуйте её самостоятельно.

Некоторые продвинутые возможности 1401


По сравнению с современными компьютерами IBM 1401 чрезвычайно слаб и ограничен. Но он не так примитивен, как можно подумать, и обладает некоторыми на удивление продвинутыми возможностями.

Одной из сложных функций IBM 1401 является редактирование (Editing) некий аналог printf, реализованный аппаратно. Команда Edit получает число, например 00123456789, и строку формата. Компьютер удаляет нули в начале и вставляет нужные запятые, выводя что-то типа 1,234,567.89. Благодаря дополнительной функции расширенного редактирования (всего на 20 долларов в месяц дороже) можно было получить плавающие символы * (******1,234.56) или плавающий символ доллара ($1,234.56), удобные для печати чеков. Не забывайте, что это форматирование выполнялось не подпроцедурой; оно реализовано полностью аппаратно, а форматирование применялось отдельными транзисторами.

Ещё одна продвинутая возможность IBM 1401 расширенный контроль ошибок. При наличии тысяч компонентов на тысячах плат может возникать множество неполадок. 1401 отслеживает неисправности, чтобы они не приводили к катастрофам (например, к печати зарплатных чеков на миллион долларов). Во-первых, память, внутренние пути прохождения данных, декодирование команд и преобразование BCD были защищены проверками чётности и корректности. В АЛУ использовалось qui-binary addition для обнаружения арифметических ошибок. Считыватель карт считывал каждую карту дважды и сравнивал результаты [10]. В каждой строке 1401 проверял работу принтера. (Для проверки считывания, перфорации и печати использовались описанные ранее дополнительные платы памяти на сердечниках.) В результате этого 1401 оказалась очень надёжной машиной.

Поскольку IBM 1401 имел переменную длину слов, он мог выполнять арифметические вычисления произвольной точности. Например, он может умножать или делить тысячеразрядные числа одной командой. Попробуйте-ка повторить такое на процессоре Intel! (Я пробовал умножать 1000-разрядные числа на 1401; операция заняла меньше минуты.) Аппаратное умножение/деление ещё одна дополнительно оплачиваемая функция; чтобы уложиться в требования стоимости 1401, IBM сделала её дополнительной, по довольно умеренной цене в 325 долларов. Однако за эту цену покупатель получал довольно много оборудования примерно 246 дополнительных карт SMS, установленных в два гейта [14]. И помните, что это десятичное умножение и деление, которые гораздо сложнее реализовать аппаратно, чем двоичное.

Компьютер 1401, с которым я работал, является моделью Sterling, поддерживающей арифметические вычисления с фунтами/шиллингами/пенсами. Довольно удивительно видеть аппаратную реализацию таких вычислений. (Вплоть до 1971 британская валюта выражалась в фунтах, шиллингах и пенсах. 12 пенсов это шиллинг, 20 шиллингов это фунт. Как знали многие туристы, это усложняет даже сложение.) Благодаря аппаратной поддержке валютной арифметики 1401 упрощал и ускорял код [15].


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

Реализация Мандельброта на языке ассемблера 1401


Создание кода множества Мандельброта на 1401 довольно сложный процесс, поскольку я писал его на языке ассемблера (под названием Autocoder). Сложнее всего было привыкнуть к меткам слов. Ещё одной проблемой было отсутствие у 1401 арифметики с плавающей запятой, поэтому я использовал фиксированную запятую: каждое число я умножал на 10000, чтобы можно было представить как целое число десятичную дробь с четырьмя знаками после запятой. 1401 проектировался для применения в бизнесе, а не в науке, поэтому он не очень хорошо подходит для генерации фракталов. Однако мне всё равно удалось это сделать.

1401 необязательно программировать на языке ассемблера, он поддерживает такие языки, как Fortran и COBOL, но я хотел полностью погрузиться в опыт работы с 1401. Всё же меня поражает то, что можно запустить компилятор COBOL на машине всего с 4 000 символов памяти. Компилятор Fortran требовал машины с 8 000 ячейками; чтобы разместить компилятор, он выполнял его за 63 этапа.

Код фрактала Мандельброта на языке ассемблера представлен ниже. В первой части кода с помощью DCW задаются константы и переменные. Далее следуют три вложенных цикла для обхода каждой строки и столбца и итерации для каждого пикселя. Примеры команд из кода: M (multiply, умножение), A (add, сложение), S (subtract, вычитание) и C (compare, сравнение). Комментарии начинаются со звёздочек.

               JOB  MANDELBROT     *GENERATES A MANDELBROT SET ON THE 1401     *KEN SHIRRIFF  HTTP://RIGHTO.COM               CTL  6641               ORG  087     X1        DCW  001  *INDEX 1, COL COUNTER TO STORE PIXEL ON LINE               ORG  333     *     *VALUES ARE FIXED POINT, I.E. SCALED BY 10000     *Y RANGE (-1, 1). 60 LINES YIELDS INC OF 2/60*10000     *     YINC      DCW  333     XINC      DCW  220          *STEP X BY .0220     *     *Y START IS -1, MOVED TO -333*30 FOR SYMMETRY     *     Y0        DCW  -09990       *PIXEL Y COORDINATE     *     *X START IS -2.5     *     X0INIT    DCW  -22000       *LEFT HAND X COORDINATE     X0        DCW  00000        *PIXEL X COORDINATE     ONE       DCW  001     ZR        DCW  00000        *REAL PART OF Z     ZI        DCW  00000        *IMAGINARY PART OF Z     ZR2       DCW  00000000000  *ZR^2     ZI2       DCW  00000000000  *ZI^2     ZRZI      DCW  00000000000  *2 *ZR *ZI     ZMAG      DCW  00000000000  *MAGNITUDE OF Z: ZR^2 + ZI^2     TOOBIG    DCW  00400000000  *4 (SCALED BY 10000 TWICE)     I         DCW  00           *ITERATION LOOP COUNTER     ROW       DCW  01     ROWS      DCW  60     COLS      DCW  132     MAX       DCW  24           *MAXIMUM NUMBER OF ITERATIONS     *     *ROW LOOP     *X1 = 1  (COLUMN INDEX)     *X0 = -2.2 (X COORDINATE)     *     START     LCA  ONE, X1     *ROW LOOP: INIT COL COUNT               LCA  X0INIT, X0  *X0 = X0INIT               CS   332         *CLEAR PRINT LINE               CS               *CHAIN INSTRUCTION     *     *COLUMN LOOP     *     COLLP     LCA  @00@, I     *I = 0               MCW  X0, ZR      *ZR = X0               MCW  Y0, ZI      *ZI = Y0     *     *INNER LOOP:     *ZR2 = ZR^2     *ZI2 = ZI^2     *IF ZR2+ZI2 > 4: BREAK     *ZI = 2*ZR*ZI + Y0     *ZR = ZR2 - ZI2 + X0     *     INLP      MCW  ZR, ZR2-6   *ZR2 =  ZR               M    ZR, ZR2     *ZR2 *= ZR               MCW  ZI, ZI2-6   *ZI2 =  ZI               M    ZI, ZI2     *ZI2 *= ZI               MCW  ZR2, ZMAG   *ZMAG = ZR^2               A    ZI2, ZMAG   *ZMAG += ZI^2               C    TOOBIG, ZMAG  *IF ZMAZ > 4: BREAK               BH   BREAK               MCW  ZI, ZRZI-6  *ZRZI = ZI               M    ZR, ZRZI    *ZRZI = ZI*ZR               A    ZRZI, ZRZI  *ZRZI = 2*ZI*ZR               MCW  ZRZI-4, ZI  *ZI = ZRZI (/10000)               MZ   ZRZI, ZI    *TRANSFER SIGN               A    Y0, ZI      *ZI += Y0               S    ZI2, ZR2    *ZR2 -= ZI2               MCW  ZR2-4, ZR   *ZR = ZR2 (/10000)               MZ   ZR2, ZR     *TRANSFER SIGN               A    X0, ZR      *ZR += X0     *     *IF I++ != MAX: GOTO INLP     *               A    ONE, I      *I++               C    MAX, I      *IF I != MAX THEN LOOP               BU   INLP               MCW  @X@, 200&X1  *STORE AN X INTO THE PRINT LINE     BREAK     C    X1, COLS    *COL LOOP CONDITION               A    ONE, X1               A    XINC, X0    *X0 += 0.0227               BU   COLLP               W                *WRITE LINE     *     *Y0 += YINC     *IF ROW++ != ROWS: GOTO ROWLP     *               C    ROW, ROWS   *ROW LOOP CONDITION               A    ONE, ROW               A    YINC, Y0    *Y0 += 0.0333               BU   START     FINIS     H    FINIS       HALT LOOP               END  START

Прежде чем приступать к запуску на реальном компьютере, я скомпилировал и запустил код при помощи компилятора и симулятора ROPE [16]. Карты перфорировались автоматически при помощи перфоратора IBM 029, управляемого PC через несколько контролируемых по USB реле. На фото ниже показан перфоратор в действии. Каждая пустая карта выпадает из подающего устройства в правом верхнем углу. Карта перфорируется, перемещаясь влево. Затем перфорированные карты переворачиваются и складываются стопкой в левой верхней области (на этом фото она пуста).


Перфоратор IBM 029 подготавливает стопку перфокарт, генерирующих фрактал Мандельброта.

Получившаяся стопка перфокарт и результат выполнения программы показаны ниже. Программа уместилась на 16 перфокартах, однако формат карт немного необычен. Машинный код программы Мандельброта перфорируется в левой половине каждой карты, например, с кодом M384417A395417. В 1401 любопытно то, что машинный код почти читаем для человека. M384417 означает переместить (Move) поле из адреса 384 в адрес 417. A395417 означает прибавить (Add) число по адресу 395 к числу по адресу 417. Текст на картах это сам исполняемый машинный код, а не ассемблерный код. Так как устройство машины основано на символах, а не двоичных значениях, нет разницы между символами 428 и адресом.


Стопка перфокарт для генерации фрактала Мандельброта на компьютере IBM 1401, а также результат работы программы. Белая полоса в правой части фрактала возникла из-за неисправного молоточка принтера.

Взглянув на правую половину карт, можно увидеть нечто совершенно иное текст типа L033540,515522,5259534. У компьютера нет операционной системы, поэтому, как это ни невероятно, каждая карта содержит код для копирования своего содержимого в нужное место памяти (команда L), добавления меток слов (команда ,) и загрузки следующей карты. Другими словами, правая половина каждой карты это программа, выполняемая карта за картой, она загружает в память программу из левой половины стопки карт, которая исполняется после загрузки последней карты [17].

Для запуска программы нужно нажать кнопку включения питания Power On на панели IBM 1401. Несколько мгновений пощёлкают реле, включая питание системы, после чего компьютер готов к работе (в отличие от современных компьютеров, загружающихся так долго). Пользователь помещает карты в считыватель карт и нажимает кнопку Load. Карты пролетают через считыватель с впечатляющей скоростью 800 карт в минуту, поэтому программа Мандельброта загружается чуть больше секунды. При выполнении программы панель компьютера мерцает, и каждые несколько секунд строчный принтер выбивает молоточком ещё одну строку фрактала. Спустя 12 минут выполнения фрактал готов. (Довольно любопытно то, что самое первое изображение множества Мандельброта было напечатано на строчном принтере в 1978 году [18].


Панель мейнфрейма IBM 1401. В верхней части показан поток данных через компьютер, из накопителя в регистры B и A и в логическое устройство. Каждое 6-битное значение отображается в виде 1248ABC, где A и B биты зон, а C контрольный бит (чётности). Справа в поле OP отображается исполняемая операция. Ниже расположены ручки для ручного доступа к памяти. Находящаяся слева кнопка Start Reset сбрасывает ошибку, например, сбои считывания карт, с которыми я сталкивался. Внизу расположены важные кнопки включения и отключения компьютера. Рукоятка Emergency Off мгновенно отключает питание.

Заключение


Создание программы Мандельброта для IBM 1401 было интересным проектом. Когда работаешь с десятичными числами и отслеживаешь метки слов, думаешь немного по-другому. Но должен сказать, что сравнение производительности с современными машинами (не говоря уже про объём памяти) заставляет уважать закон Мура.

Музей компьютерной истории в Маунтин-Вью проводит демонстрации IBM 1401 по средам и субботам. Потрясающе, что коллективу реставраторов удалось заставить работать этот фрагмент истории, поэтому если будете поблизости, на него определённо стоит взглянуть. Расписание можно найти здесь. Скажите проводящим демонстрацию ребятам, что вы услышали о компьютере от меня, и возможно они запустят мою программу вычисления простых чисел или программу вычисления пи. Вероятно, вы не захотите ждать, пока выполняется программа Мандельброта.

Благодарю Музей компьютерной истории и сотрудников коллектива реставраторов 1401 Роберта Гарнера, Эда Телена, Вана Снайдера и особенно Стэна Пэддока. На сайте коллектива 1401 (ibm-1401.info) есть куча интересной информации о 1401 и его восстановлении.

Примечания и ссылки


[1] В Музее компьютерной истории есть два работающих 1401: German 1401 и Connecticut 1401 (названных по месту, откуда они были доставлены). Я работал с German 1401, потому что на Connecticut 1401 в то время проводили техобслуживание считывателя карт.

[2] Хотя во многих местах упоминается ежемесячная стоимость аренды 2500 долларов, цена за полную систему с несколькими плёночными приводами могла доходить до 10000 долларов. Цена сильно зависела от модели 1401, количества памяти и периферии (плёночных приводов, считывателя карт, принтера, дискового привода). Минимальная конфигурация (1401 Model A, считыватель карт 1402 и принтер 1403) сдавалась за 2 475 долларов в месяц (или продавалась за 125 600 долларов сейчас почти 1 миллион с учётом инфляции). Рекомендованная конфигурация с 8 КБ памяти, дополнительными функциями процессора и ещё одним принтером сдавалась за 4 610 долларов в месяц. Плёночные приводы повышали цену на 980 долларов в месяц за интерфейс и по 1100 долларов в месяц за каждый плёночный привод 729 IV. Модуль расширения памяти на 4000 символов стоил 575 долларов в месяц.

Подробную информацию о компьютерах 1961 года, в том числе арендные цены, можно найти в интересном обзоре компьютеров 1961 года, тысячестраничном A Third Survey of Domestic Electronic Digital Computing Systems, Report No. 1115, March 1961 (Страница о 1401). Базовая арендная цена IBM указывалась с учётом одной 8-часовой смены (176 часов в месяц). Компьютеры имели счётчик времени и с пользователей взымали дополнительную плату, если они превышали выделенное им время. Клиенты часто платили повышенную цену аренды, чтобы компьютеры могли работать в режиме 24/7.

[3] Комментарий о том, что 1401 стал Моделью Т компьютерной отрасли, взят из статьи IBM System/360 вице-президента IBM Боба Эванса. Любопытный факт из этой статьи: IBM 1620 сдавался в аренду за 1600 долларов в месяц, благодаря чему стал первой системой IBM, арендуемой за цену меньше, чем номер модели.

[4] IBM 1401 имел довольно уникальный стиль, особенно по сравнению с предыдущими компьютерами IBM (например, 650 или 704), имевшими очень утилитарный, промышленный внешний вид. Изящный модернистский стиль 1401 не был выбран случайно, а стал результатом тщательного проектирования промышленного дизайна. В книге The Interface: IBM and the Transformation of Corporate Design представлено очень интересное обсуждение усилий, вложенных IBM в промышленный дизайн. Важные идеи дизайна придумал Эдгар Кауфманн, а дальнейшее развитие они получили благодаря Элиоту Нойесу.

[5] Количество карт SMS в IBM 1401 зависело от модели, установленных опций, инженерных изменений (например, ремонта) и объёма используемой памяти. У меня получилось число 1206: я проанализировал диаграмму подключения SMS и насчитал 933 базовых карт, 267 базовых карт Sterling, 6 карт питания и 11 карт для поддержки памяти. Данная машина является моделью Sterling, то есть она чуть сложнее обычной модели.

[6] IBM 1401 имел 32 потенциальных гейта: 16 спереди и ещё 16 сзади, но электронные схемы содержались только в 24 гейтах. Две потенциальные панели в левом верхнем углу заняты откидывающейся панелью управления, за которой расположена память на сердечниках. За четырьмя панелями располагаются источники питания (однако, как ни странно, бОльшая часть источников питания находится внутри считывателя карт). Ещё два участка заняты на удивление толстыми кабелями, подключающими 1401 к периферии. Остаётся 24 раскрывающихся гейтов, некоторые из которых в зависимости от установленных опций могли не использоваться.

[7] Биты зон тесно связаны с перфорациями зон в перфокартах IBM. Верхняя строка перфокарты это зона 12 (Y), строка под ней зона 11 (X). Число это одно отверстие, перфорированное в соответствующей строке карты (строки с 0 по 9). Символу обычно соответствуют два пробитых отверстия: с 1 до 9 для значения BCD и отверстие зоны для бита зоны. Перфорация зоны это зона карты 11 для установленного бита B, зона карты 12 для битов зон A и B или строка карты 0 для бита зоны A.

Однако существуют некоторые сложности, запутывающие этот паттерн. Во-первых, для символов за пределами интервала 0-9 используется две перфорации цифр: 8 и цифра для нижних трёх битов. (например, символ "#" хранится как биты 8, 2 и 1, поэтому перфорируется как 8 и 3.) Во-вторых, поскольку строка карты 0 используется и для цифры 0, и как перфорация зоны, существует конфликт, и значение 0 при определённых условиях трактуется как 10 (и перфорируется как 8 и 2). Поскольку пустой символ не имеет перфорации и хранится внутри как 0, цифра 0 хранится как 10. Различные системы IBM обрабатывают эти пограничные случаи по-разному. Для обеспечения необходимой совместимости для 1401 существовали настраиваемые функции.

[8] Кроме букв, биты зон использовались и для других вещей. Бит зоны добавляется к цифре младшего порядка числа, обозначая знак числа. Адреса памяти обозначаются тремя цифрами, что обеспечивает доступ к 1000 ячейкам; благодаря использованию битов зон адрес из трёх цифр может обеспечивать доступ к 16000 ячеек. Также биты зон отслеживают переполнение в арифметических операциях.

[9] Изначально байтом называли группу битов, используемую для кодирования символа, даже если он не состоял из 8 битов (см. Planning a Computer System: Project Stretch, стр. 40). Вот некоторые примеры необычных длин слов:

RCA 601 поддерживал 6-, 8-, 12-, 16-битные или слова переменной длины.

В SPEC использовались 13-битные слова.

В Hughes Airborne Computer использовались 17-битные слова, в Hughes D Pat 19-битные, а в Hughes M 252 20-битные слова.

В RW 300 использовались 18-битные слова, а в RW 400 26-битные.

В Packard Cell 250 использовались 22-битные слова.

В UNIVAC 1101 использовались 24-битные слова.

В ALWAC II использовались 32-битные плюс знак (33 бита).

В COMPAC использовались 37-битные слова (36 + знак).

В AN/MJQ использовались 41-битные слова.

В SEAC использовались 45-битные (44 плюс знак).

В AN/FSQ 31 использовались 48-битные слова.

В ORACLE использовались 50-битные слова.

В компьютере Университета Райса использовались 54-битные слова.

Подробнее об этих компьютерах можно узнать в A Third Survey of Domestic Electronic Digital Computing Systems.

[10] Считыватель карт считывает каждую карту дважды и проверяет, чтобы количество отверстий было одинаковым при обоих считываниях. Если количество не совпадает, то считыватель обнаруживает ошибку и прекращает работу. Каждая карта читается вбок, по строке из 80 позиций за раз. В двух битах хранится состояние каждого столбца. Один бит устанавливается, если есть хотя бы одно отверстие. Другой бит переключается с каждым отверстием. (То есть, строго говоря, это не подсчёт, что упрощает логику.) При втором считывании процесс обратный, то есть при правильном считывании оба бита возвращаются в состояние 0.

Так как следующая карта уже начинает считываться ещё при проверке первой карты, требуется два набора битов, один для первой и другой для второй карты. Поэтому для проверки считывания карт используется четыре платы по 80 бит каждая.

Каждая из 240 щёток считывателя карт имеет отдельный провод, проходящий через определённый сердечник в памяти 1401. Аналогично, каждый из 132 печатающих молоточков принтера соединён напрямую с отдельным сердечником. Поэтому между IBM 1401, считывателем карт и принтером проложены толстые кабели, содержащие сотни проводов.

[11] Хочу подробнее рассказать о метках слов. Очевидно, что в IBM 1401 биты хранятся от старшего к младшему, поскольку именно так числа перфорируются на картах. Поскольку арифметические операции должны начинаться с самого младшего порядка, они начинаются с конца числа и проходят в обратном порядке в памяти до самого старшего порядка. Поэтому команде передаётся адрес конца поля и она движется к меньшим адресам, пока не дойдёт до метки слова, то есть начала поля. Если вы программируете на C, то вам это покажется обратным порядком обычно мы начинаем с начала сроки и движемся вперёд, пока не доберёмся до конца.

Кроме того, метки слов используются для обозначения начала каждой команды. Команды могут иметь длину от 1 до 8 символов, а наличие метки слова контролирует длину. Начальная загрузка меток слов для первых команд, загружаемых в компьютер, требует определённых хитростей.

[12] Логика сравнений сложнее, чем можно было бы ожидать. К удивлению, порядок сравнения не соответствует двоичному порядку символов. Кроме того, сравнения не реализованы при помощи вычитания (как в большинстве процессоров). Вместо этого логика сначала определяет, являются ли символы особыми особые символы расположены перед обычными (с некоторыми исключениями: например, - находится между I и J). Поэтому большое количество логики AND-OR фактически выполняет сравнение грубым перебором, рассматривая различные паттерны битов. Результаты сравнения можно увидеть на панели управления в поле Logic. Покупаемая дополнительно логика сравнений показана в Intermediate Level Diagrams (ILD), стр. 37.

[13] В прошлом был распространён самомодифицирующийся код, то есть такой, в котором программа изменяет собственные команды. В руководстве по программированию IBM 1401 1961 года есть целая глава (6), посвящённая этому. В ней говорится, как можно оперировать командами в памяти, как если бы они были данными. Обработкой кода как данных занимались не только программисты на Lisp. В книге эта способность программы к самомодификации называется бесспорно, самой важной функцией концепции хранимой программы. Кроме возвратов из подпроцедур, программисты IBM 1401 использовали самомодифицирующийся код для индексирования, вычисления адресов и сложного условного ветвления. На современных машинах самомодифицирующийся код встречается редко, поскольку его сложнее отлаживать и он запутывает конвейер выполнения команд.

[14] Подробности о внутреннем устройстве операций умножения и деления см. в руководстве по опциональным возможностям. Эта схема содержала в себе сложные оптимизации. Например, для ускорения многократного сложения она при необходимости прибавляла удвоенное значение. Однако для удвоения десятичного значения требуется довольно сложная схема (в отличие от двоичного удвоения, выполняемого тривиальным образом). Кроме того, присутствует контроль ошибок, чтобы удвоение происходило без проблем.

[15] Электрическая схема модели Sterling для поддержки вычислений с sd ещё более сложна, потому что шиллинги и пенсы хранятся в сжатом виде. Очевидным решением было бы двухзначное поле для пенсов (от 0 до 11) и двухзначное поле для шиллингов (от 0 до 19). Но для экономии драгоценной памяти и места на накопителе в стандарте BSI и в несовместимом с ним стандарте IBM используются однозначные поля и особые символы. Ручкой на панели управления можно переключать используемый стандарт. Оборудование Sterling должно выполнять арифметические вычисления с этим сжатым форматом, а также обрабатывать недесятичные основания шиллингов и пенсов.


Этим переключателем на панели управления компьютера IBM 1401 выбирается режим хранения пенсов и шиллингов.

[16] Если вы хотите написать программу для компьютера 1401, инструкции по использованию симулятора ROPE можно найти здесь. Это простая IDE, позволяющая редактировать ассемблерный код (называемый Autocoder), собирать его, а затем выполнять в симуляторе. Если хотите понять, как программировать 1401, изучите A guide to IBM 1401 Programming и Programming the 1401. 1401 Reference Manual тоже полезен для понимания того, что делают команды.

[17] Каждая карта также содержит в последних столбцах четырёхзначный порядковый номер.
Он позволяет пересортировать карты, если стопку уронили и порядок программы перепутался.

[18] Первое изображение множества Мандельброта появилось в статье 1978 года Брукса и Мателски, ещё до статьи Мандельброта. (Благодарю Роберта Гарнера за то, что сообщил мне об этом.)
Ведутся споры о том, кто на самом деле открыл множество Мандельброта. Обсуждение см. в статье
Who Discovered the Mandelbrot Set? в Scientific American.
Подробнее..

Перевод Превращаем компьютер BBC Micro (1981 год) в устройство записи защищённых дисков за 40 000 долларов

24.07.2020 12:09:40 | Автор: admin

Введение


Одна из самых известных историй о защите гибких дисков связана с Dungeon Master. Эта игра, выпущенная в декабре 1987 года, сочетала в себе усложнённый формат физического диска (нечёткие биты) со скрытными проверками защиты, встроенными в сам геймплей.

Рекомендую прочитать эту статью, в которой представлен замечательный обзор гибких дисков, после которого идёт очень подробный обзор защиты нечёткими битами диска Dungeon Master для Atari ST. Есть также вот эта замечательная статья, которая более подробно рассказывает об историях, связанных с защитой Dungeon Master. В ней есть цитата одного из авторов Dungeon Master:

Мы получили преимущество, получив патент на схему защиты гибких дисков, в которой для записи дисков требовалось специализированное оборудование за 40 тысяч долларов. Без этого оборудования образ диска создать было невозможно, а само оборудование было выведено из эксплуатации.

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

Компьютер BBC Micro имел процессор 6502 на 2 МГц и для выполнения его простейших инструкций требовалось два такта, то есть 1 микросекунда. Есть ли надежда, что можно будет записать нечёткие биты в условиях таких ограничений? Посмотрим, как далеко нам удастся зайти. Эта работа будет называться проектом Oiled Otter.

Чтобы вы почувствовали дух времени, вот изображение аппарата дублирования гибких дисков 3,5". Удивительно, насколько он похож на фотокопировальный аппарат, только в приёмник вместо бумаги вставляются диски! Похоже, такую машину даже могла продать вам компания Advanced World Products.


Пользовательский порт BBC Micro


BBC Micro был известен своей превосходной расширяемостью, в том числе и с помощью так называемого пользовательского порта (user port). Этот порт управляется 6522 Versatile Interface Adapter, работающим с частотой 1 МГц. Сам порт имеет 8 контактов данных и 2 контакта управления. Эти контакты обеспечивали очень высокую степень контроля. Контакты данных можно было по отдельности настраивать как вводы и выводы, а логическим уровням выводов можно было задавать высокий или низкий сигнал.

Почему же нам важен user port? Мы попытаемся управлять дисковым приводом непосредственно через него. Устранив из уравнения контроллер гибких дисков, мы, возможно сможем от него избавиться и добиться более прямого контроля над дисковым приводом и передаваемыми потоками данных.


Кабель от user port к дисковому приводу

На изображении выше показан мой кабель, подключающий user port к дисковому приводу. Разъёмы стандартны, а соединяющие их провода это просто перемычки. Я искренне стремлюсь создать нечто, что можно было изготовить в те дни, поэтому не использую никакую дополнительную электронику.

Кабель устроен следующим образом:


Главный вывод, который мне удалось извлечь из этой схемы интерфейс дискового привода, вероятно, проще, чем можно было подумать. Мы можем управлять дисковым приводом и запрашивать его важное состояние всего на 8 контактах. Всё очень просто. Допустим, нам нужно раскрутить привод, тогда достаточно подать низкий сигнал на PB0 и PB1. Если вы хотите дождаться, пока диск довращается до начала дорожки, то нужно запрашивать логический уровень на PB6, пока мы не увидим изменение уровня сигнала с высокого на низкий. Для пошагового движения достаточно задавать логический уровень step in противоположно step out, а затем выполнять пульсацию низкого сигнала на контакте step.

Пока всё отлично, у нас есть базовый контроль над приводом, но мы ещё ничего не записывали.

Проблемы с электрикой


Обязательно краткое отступление о проблемах с электрикой, потому что я с ними столкнулся. При подключении случайных пар компонентов они могут заработать, но иногда требуются ухищрения. Вот интервал напряжений, изначально наблюдавшийся на контакте W/DATA привода:


Пытаемся записывать импульсы на привод с частотой FM в 250 кГц

Напряжение логики 1 равно примерно 3,4 В, а напряжение логики 0 примерно 1,5 В. Это серьёзная проблема! Приемлемые уровни напряжения TTL чётко заданы:

Входящий сигнал TTL считается низким, если имеет напряжение от 0 В до 0,8 В относительно заземляющего вывода, и высоким при напряжении от 2 В до VCC (5 В). Если на вход элемента TTL подаётся сигнал напряжения в интервале от 0,8 В до 2,0 В, то элемент не даёт конкретного ответа, а поэтому сигнал считается неопределённым.

Напряжение логики 0, равное 1,5 В, считается неопределённым, и не вызовет никаких действий. И в самом деле, мой привод с этим сигналом ничего не записывал.

Проблему удалось устранить снятием с привода оконечного резистора кабеля гибких дисков. Вот фотография моего привода, где сборка оконечных резисторов обведена красным:


Это замечательно решает проблему уровней напряжения, после чего всё работает. Похоже, что многие порты BBC Micro кроме дискового порта не имеют достаточно сил для управления кабелем с оконечными резисторами. Но постойте-ка вероятно, для установки этого резистора была какая-то причина? Да. Его снятие имеет два хитрости:

  • Обращайте внимание на длину кабелей. Без оконечного резистора длинные кабели подвержены искажениям сигнала.
  • Следите за уровнями напряжения на неподключенных проводах. Я наблюдал напряжение 1,32 В на контакте привода S/SEL (выбор стороны). Это ненормально, потому что такое значение тоже находится в интервале неопределённости TTL. Куда привод будет записывать данные? Может быть, на верхнюю сторону, может быть, на нижнюю. А может и вообще ни на одну из них! Проблема была решена подключением каждого значимого кабеля и подачей на них высокого или низкого сигнала.

Нужно повысить пропускную способность


Проблема, которую мы пока обходили стороной: как подавать сигнал на контакт W/DATA? Это жёсткий контакт. Он имеет высокую пропускную способность и обладает точными требованиями к таймингам. Давайте на секунду перестанем мечтать о нечётких битах с наносекундной точностью, и попробуем записать на привод простые FM-импульсы.

Большинство дисков для BBC Micro имеют формат FM (они же DFM, они же одиночной плотности), кодируемый с частотой 250 кГц. Запись дорожки FM на самом деле выполняется довольно просто. Нужно проверить, вращается ли привод и открыта ли створка записи. После этого каждые 4 микросекунд или выполняем пульсацию W/DATA на низкий, а потом обратно на высокий сигнал (бит 1), или не делаем этого (бит 0). Чаще всего каждый второй бит должен быть равен 1 (синхронизирующий бит для поддержания тайминга и синхронизации).

Управление W/DATA через процессор безнадёжная задача. 4 микросекунды это 8 тактов процессора; этого определённо не хватит для загрузки байта, его сдвига, записи 0, а потом 1 в логические уровни user port. Простой цикл скорее всего займёт 12 с лишним микросекунд, а это слишком много. Так что для достаточно быстрой записи W/DATA нам придётся воспользоваться возможностями чипа 6522 VIA.

Регистр сдвига 6522 VIA


Самый очевидный кандидат для нашей задачи это регистр сдвига. Регистр сдвига это 8-битный регистр. В соответствующем режиме загрузка регистра сдвига заставит чип последовательно передать 8 бит по одному из контактов user port. Это отлично биты обрабатываются параллельно с работой основного процессора, поэтому процессор может спокойно тратить время на создание нового набора битов, сдвиг которых нужно будет начать.

К сожалению, мне не удалось заставить работать эту схему. Единственный сдвиговый режим, имеющий потенциал достаточно быстрой работы это сдвиг с тактовой частотой системы. В спецификации Western Design Center 6522 есть хорошая схема:


Системный тактовый генератор VIA имеет частоту 1 МГц, поэтому тактовая частота сдвига будет сигналом 500 кГц, а разрешение выводимых битов равно 250 кГц. Этого как раз хватает. Однако я не разобрался, как заставить непрерывно и плавно работать тактовую частоту сдвига. Даже после попыток точного тайминга для перезагрузки регистра сдвига интервал контакта тактовой частоты сдвига всегда выглядела вот так:


Получается, что в единственном сдвиговом режиме, достаточно быстром для наших опытов, перезагрузка регистра сдвига вызывает задержку перед продолжением сдвига. Это нам не подходит.

Режим импульсного вывода 6522 VIA


Малоизвестной функцией 6522 является его режим импульсного вывода. Он описывается в спецификациях не всех вариаций 6522, но вот небольшая запись о нём в спецификации MOS Technology:


Наконец-то мы нашли спецификацию, точно описывающую его поведение. Этот режим очень интересен для нас, потому что одна операция записи в VIA обещает привести к двум отдельным действиям: на выходной контакт подаётся низкий логический сигнал, а спустя 1 такт (1 микросекунду) он возвращается к высокому сигналу без усилий с нашей стороны. Благодаря этому мы можем использовать его для управления выходным сигналом 250 кГц. Ресурсы процессора очень ограничены циклом решить задачу никак не получится, но линейный блок кода 6502 сможет справиться, например:

        \ &70 points to &FE60, aka. user 6522 VIA ORB register.        STA (&70),Y        \ 8 cycles, pulse output        STA (&70),Y        \ 8 cycles, pulse output        STA (&70),Y        \ 8 cycles, pulse output        LDA (&70),Y        \ 8 cycles, do not pulse output        STA (&70),Y        \ 8 cycles, pulse output        ...

Это сработает. На это у процессора как раз хватит мощи. 8 тактов это 4 микросекунды, то есть кратчайшее время между импульсами диска.

К сожалению, такая операция чрезвычайно активно задействует память. Для каждого закодированного бита FM требуется 2 байта линейного кода 6502. Каждый значимый бит данных это два бита FM, потому что каждый второй бит является синхронизирующим. Дорожка состоит из 3125 байт, поэтому потребуется 3125 * 8 * 2 * 2 == 100 кБ линейного кода. BBC Micro имеет 32 кБ ОЗУ, так что здесь нам не повезло. Можно записывать одиночные (маленькие) секторы, в том числе и мощные новые механизмы защиты диска. Но мы не сможем записывать большие (1024 байта) секторы или полные дорожки. Для правильной записи большого количества дисков требуются обе эти операции. Более того, разрешение таймингов равно 1 микросекунде, чего недостаточно для записи множества более сложных защит и поверхностей дисков.

Мы можем быть довольны, что получилось заставить работать хоть что-то, учитывая такие ограничения, но это решение нас не совсем устраивает.

Помощь от ничего не обещающего порта вывода


К счастью, я общаюсь с умными людьми, например, с Bitshifters Collective. (Сходите оценить их последнее демо Evil Influences!) В беседе в Slack Том Седдон (автор эмулятора b2) предложил использовать вывод порта RGB (?)

Кабель-переходник с видео на диск такое не встретишь на Amazon каждый день.

Поначалу я посмеялся над этой идеей, но чем больше размышлял, тем вероятной она мне казалась. В BBC Micro использует для таймингов видеочип 6845. Как и 6522, это капризный процессор, но, по крайней мере, его особенности хорошо разобраны благодаря демо Bitshifters, в которых нещадно эксплуатируется 6845. Кроме того, я занимался реверс-инжинирингом, чтобы заставить эмулятор jsbeeb правильно эмулировать Hitachi 6845. Давайте посмотрим в этом видео на работу Oiled Otter, а потом расскажем, что увидели:


Всё работает благодаря необычному конфигурированию чипа 6845. 6845 работает с частотой 1 МГц, а тайминг кадров настроен так, чтобы на кадр приходилась одна растровая строка на 32 микросекунд/32 байта. При выводе каждого кадра регистры видеопамяти 6845 перезаписываются для получения следующих 32 байтов из потенциально другого места. То есть каждые 32 микросекунд из таблицы паттернов вывода выбирается другой паттерн вывода. Мы сконфигурировали контакты RGB на передачу 8 пикселей в микросекунду, то есть 256 на паттерн вывода. Это даёт нам огромное количество различных возможных паттернов вывода. Но так как мы записываем фрагменты по 32 микросекунд дисковых кодировок FM, подходят нам только несколько паттернов. В 32 микросекунд мы можем уместить 8 импульсов/битов FM. 4 битов будут синхронизирующими, и обычно все они равны 1. 4 бита будут битами данных, и у них существует всего 16 комбинаций.

Например, если мы записываем полубайт данных 0x5, то 32-микросекундный вывод должен выглядеть так:


Видеоданные будут иметь вид 00FFFFFFFFFFFFFF00FFFFFF00FFFFFF00FFFFFFFFFFFFFF00FFFFFF00FFFFFF. Первый, второй, четвёртый и пятый 00 это синхронизирующие биты. Между синхронизирующими битами расположен битовый паттерн данных 0101, или 0x5.

Ограничения процессора и памяти хорошо сбалансированы. В конечном итоге, эта схема похожа на ту, которую бы мы примерили с регистром сдвига VIA, если бы она сработала: какой-то небольшой сопроцессор (видеочип) занимается передачей набора битов FM, а центральный процессор свободен для загрузки и предоставления следующего паттерна. Требования к памяти вполне разумны. Таблица из необходимых выходных фрагментов на 32 микросекунд благодаря специальному линейному режиму адресации вполне помещается в 1024 байтов. Список индексов поиска для всей дорожки примерно равен 12 кБ, то есть всё отлично помещается в 32 КБ ОЗУ BBC Micro.

Особенности BBC Micro / 6845


Последний символ/столбец 6845

Разумеется, чтобы заставить эту схему работать, нельзя не столкнуться с некоторыми забавными особенностями. Первая из них это особенность 6845, из-за которой он выводит чёрный цвет для последнего символа каждой растровой строки. Это проклятие разработчиков демо, а теперь, похоже, и исследователей дисков. Вот слайд из недавнего доклада, на котором я демонстрировал эту проблему:


Слева показан эффект из демо, испорченный вертикальными чёрными полосами, вызванными проблемой последнего чёрного символа/столбца. Несколько растровых строк 6845 размещаются в одном растровом проходе, и, к сожалению, ненамеренно появляются чёрные полосы. При управлении диском эффект намного хуже: чёрные полосы заменяются на нежелательные импульсы, которые записываются на диск.

Справа показано изображение решения: передаваемая на диск волна просто инвертирована. Теперь нормально, что последний столбец всегда будет чёрным (показан оранжевым контуром), потому что там всегда требуется нулевое значение. Строго говоря, это нарушает требования к таймингам некоторых дисковых приводов к пульсации низких сигналов W/DATA. Вот схема таймингов привода той эпохи, Mitsubishi M4852/M4853:


Согласно этой схеме, логический 0 должен удерживаться до 2100 нс. При инвертированной форме сигнала следует ожидать от 3000 нс и более. Однако приводы, которые у меня есть, волнуют только спадающие импульсы данных, а не их длительность. Это неудивительно. Можно было бы проделать пару трюков, чтобы избежать особенностей 6845 и обеспечить время длительности в соответствии со спецификацией, но это оказалось необязательным, а потому я этим не занимался.

Порча DRAM

Порча DRAM (DRAM decay) это кошмар. Она происходит, когда нам не удаётся вовремя обновить DRAM. Цитата из статьи Википедии про обновление памяти:

Этот процесс выполняется автоматически в фоновом режиме электронной схемой памяти и невидим для пользователя.

Это справедливо для современных систем, но не для BBC Micro. На BBC Micro обновление DRAM является побочным эффектом подсистемы видео. При нём используется то свойство, что стандартные экранные режимы итеративно обходят все строки DRAM за короткий промежуток времени. Вероятно, вы уже догадались, к чему всё идёт наш особый видеорежим, используемый для вывода кадров на 32 микросекунды, не является стандартным экранным режимом. Он не гарантирует, что обойдёт все строки DRAM, поэтому происходит порча DRAM! Порча DRAM это не шутки. Из-за незапланированной порчи DRAM я терял различные программы и содержимое дисков. Покажу вам ради смеха программу на BASIC, вызывающую порчу DRAM для самой себя всего за долю секунды:


Печально в порче DRAM то, что если она вас постигла, то вы запросто можете потерять данные.

С другой стороны, если вы ожидаете порчу DRAM, то обычно можете с лёгкостью её обойти. В случае Oiled Otter есть различные критически важные циклы, при которых видеочип 6845 находится в необычном состоянии. Для сохранения обновления DRAM при каждом из таких циклов работает ручной инкремент получения данных из памяти.

Открывшиеся возможности


Теперь, когда у нас есть работающая система записи на диск в обход контроллера гибких дисков, что мы можем с ней сделать? В показанном выше видео мы уже продемонстрировали её способность записи произвольных дисков с кодировкой FM.

Но в этом исследовании нам очень повезло. Благодаря недостаткам регистра сдвига VIA нам пришлось искать решение с контактами видеовыхода и мы получили доступ к гораздо более мелкому разрешению таймингов на контакте W/DATA. Мы используем MODE4 компьютера BBC Micro, задействующий пиксельную тактовую частоту 8 МГц. Это означает, что можно каждые 125 нс выводить чёрные или белые пиксели, переключая импульсы записи с разрешением 125 нс. Если бы мы хотели потратить чуть больше дополнительной памяти (которая у нас есть) на таблицы побольше, то могли бы использовать MODE0, задействующий пиксельную тактовую частоту 16 МГц, что обеспечивает разрешение 62,5 нс. Я убедился, что 125 нс вполне достаточно для всех протестированных дисковых защит, но здорово, что у нас осталось пространство для манёвра.

Защита длинными дорожками

Моя любимая дисковая защита защита длинными дорожками. Она была популярна во времена Amiga. Мне не кажется, что её когда-нибудь использовали на BBC Micro. Мне нравится защита длинными дорожками потому, что она очень фундаментальна: контроллер гибких дисков имеет большой допуск по изменению скоростей записи (потому что дисковые приводы вращаются с разными скоростями), но записывает он только на одной правильной скорости.

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

Может ли Oiled Otter записать такую дорожку? Да, и довольно легко. Учитывая разрешение вывода в 125 нс, можно легко создать несколько элементов таблицы вывода, похожими на обычные, но с вырезанными из каждой 1 микросекунды 125 наносекундами. Вот видео создания защиты длинными дорожками и проверки считывания диска:



Защита нечёткими битами

Наверно, нам давно пора вернуться к тому, с чего мы начали: к защите нечёткими битами. Может ли Oiled Otter создавать нечёткие биты на оборудовании 1981 года? Давайте попробуем. Вот изображение результатов пары считываний сектора после его записи командой FUZZ системы Oiled Otter.


Команда FUZZ записывает полубайт 0x8, а бит данных поступательно откладывается на инкременты по 125 нс. Это похоже на описание того, как записывались нечёткие биты Dungeon Master. Как видно из скриншота, байты данных 0x88 вскоре начинают считываться неверно и недетерминированным образом. Но дисперсия не на 100% случайна, как слабые биты (weak bit) дисперсия заключается в том, достаточно ли поздно записан бит 0x8, чтобы иметь вероятность быть пропущенным. Если он пропущен, мы всё равно можем увидеть, что в этом безумии есть паттерны и логика.

Представленные выше результаты являются применением принципов нечётких битов к данным, закодированным FM. В кодировке FM каждый бит данных перемежается синхронизирующим битом. Это приводит к тому, что иногда тактовые биты проникают в поток данных (см. байты 0xFF в первом прогоне скорее всего, это тактовые биты). Защита Dungeon Master использует нечёткие биты в сочетании с MFM. Это приводит к более простой ситуации, где нечёткие биты перемещаются между двумя валидными кодировками битов данных и не задевают синхронизирующие биты! Разумеется, Oiled Otter может записывать MFM, GCR и любую другую кодировку, которую только можно придумать. Всё это просто разные протоколы одного фундаментального примитива возможности передачи импульса приводу в любой момент времени с хорошим разрешением.

Чтобы правильно его оценить, приведём вид нечётких битов на диске с осциллографа. Максимумы довольно неравноерны, а когда два импульса очень близки друг к другу (1 микросекунда или около того, слишком близко по стандарту любой кодировки), распознанная приводом сила перемагничивания даже начинает ослабевать.


Миссия выполнена

Мы получили возможность записи дисковых импульсов с разрешением 125 нс. Этого совершенно достаточно для создания сложных дисковых защит, в том числе длинных дорожек, слабых битов и нечётких битов. Совсем неплохо для железа 1981 года со скоростью выполнения самой быстрой команды в 1 микросекунду!
Подробнее..

Первое поколение компьютеров от Древнего Рима до Второй Мировой

05.05.2021 10:13:29 | Автор: admin


Лень двигатель прогресса. Стремление человечества хотя бы частично автоматизировать свою деятельность всегда выливалось в различные изобретения. Математические вычисления и подсчеты также не избежали научного прогресса. Ещё в Древнем Риме местные таксисты использовали аналог современного таксометра механическое устройство, которое определяло стоимость поездки в зависимости от длины маршрута. Время шло, и к середине прошлого века эволюция вычислительных систем привела к появлению нового типа устройств компьютеров. Тогда, конечно, их так никто не называл. Для этого использовался другой термин ЭВМ (электронно-вычислительная машина). Но время и прогресс стерли границы между этими определениями. Так как же прогресс дошел до первых ЭВМ и как они работали?

История развития


Арифмометр


Одно из главных событий в истории развития вычислительных систем является изобретение арифмометра. Арифмометр это механическая вычислительная машина, предназначенная для выполнения алгебраических операций. Первая схема такого устройства датируется 1500 годом за авторством Леонардо да Винчи. Вокруг его схемы в 60-х годах 20 века возникло много споров. Доктор Роберто Гуателли, работавший в IBM с 1951 года по проекту воссоздания машин Леонардо да Винчи, в 1968 году создал копию счетной машины по эскизам 16-го века.

Данная машина представляла собой 13-разрядную суммирующую машину.

В следующем году вокруг этой машины начали появляться различные возражения, а именно по поводу её механизма. Существовало мнение о том, что машина да Винчи представляет собой механизм пропорционирования, а не счетную машину. Также возникал вопрос и о её работе: по идее, 1 оборот первой оси вызывает 10 оборотов второй, 100 оборотов третьей и 10 в степени n оборотов n-ной оси. Работа такого механизма не могла осуществляться из-за огромной силы трения. По итогу голоса сторонников и противников счетной машины Леонардо да Винчи разделились, но, тем не менее, IBM решила убрать эту модель из коллекции

Но, оставим наработки Леонардо Да Винчи. Расцвет арифмометров пришелся на 17 век. Первой построенной моделью стал арифмометр Вильгельма Шиккарда в 1623 году. Его машина была 6-разрядной и состояла из 3 блоков множительного устройства, блока сложения-вычитания и блока записи промежуточных результатов.


Копия арифмометра Шиккарда

Также 17 век отметился ещё несколькими арифмометрами: паскалина за авторством Блеза Паскаля, арифмометр Лейбница и машина Сэмюэля Морленда. В промышленных масштабах арифмометры начали производиться в начале 19 века, а распространены были практически до конца 20-го.

Аналитическая и разностная машины Бэббиджа


Чарльз Бэббидж английский математик, родившийся в конце 18 века. На его счету числится большое количество научных работ и изобретений. Но в рамках данной статьи нас интересуют два его проекта: аналитическая машина и разностная машина.

Идея о создании разностной машины не принадлежит Чарльзу Бэббиджу. Она впервые была описана немецким инженером Иоганном Мюллером в книге с очень сложным названием. До конца не ясно, повлияли ли на Бэббиджа идеи Мюллера при создании разностной машины, поскольку Чарльз ознакомился с его работой в переводе, дата создания которого неизвестна.


Книга Иоганна Мюллера

Считается, что основные идеи для создания разностной машины Бэббидж взял из работ Гаспара де Прони и его идей о декомпозиции математических работ. Его идея заключалась в следующем: есть 3 уровня, на каждом из которых математики занимаются решением определенных проблем. На верхнем уровне находятся самые крутые математики и их задача вывод математических выражений, пригодных для расчетов. У математиков на втором уровне стояла задача вычислять значения функций, которые вывели на верхнем уровне, для аргументов, с определенным периодом. Эти значения становились опорными для третьего уровня, задачей которого являлись рутинные расчеты. От них требовалось делать только грамотные вычисления. Их так и называли вычислители. Эта идея навела Бэббиджа на мысль о создании машины, которая могла бы заменить вычислителей. Машина Бэббиджа основывалась на методе аппроксимации функций многочленами и вычисления конечных разностей. Собственно, поэтому машина и называется разностной.

В 1822 году Бэббидж построил модель разностной машины и заручился государственной поддержкой в размере 1500 фунтов стерлингов. Он планировал, что закончит машину в течение 3 лет, но по итогу работа была не завершена и через 9 лет. За это время он получил ещё 15500 фунтов стерлингов в виде субсидий от государства. Но всё же часть машины функционировала и производила довольно точные (>18 знаков после запятой) расчеты.


Созданная на основе работ Бэббиджа разностная машина

Во время работы над разностной машиной у Чарльза Бэббиджа возникла идея о создании аналитической машины универсальной вычислительной машины. Её называют прообразом современного цифрового компьютера, и не зря. Она состояла из арифметического устройства (мельницы), памяти (склада) и устройства ввода-вывода, реализованного с помощью перфокарт различного типа. К сожалению, данная идея осталась лишь на бумаге.


Схема аналитической машины Бэббиджа

Табулятор


История электромеханических машин начинается в 1888 году, когда американский инженер Герман Холлерит, основатель компании CTR (будущая IBM), изобрел электромеханическую счетную машину табулятор, который мог считывать и сортировать данные, закодированные на перфокартах. В аппарате использовались электромагнитные реле, известные еще с 1831 года и до Холлерита не применявшиеся в счетной технике. Управление механическими счетчиками и сортировкой осуществлялось электрическими импульсами, возникающими при замыкании электрической цепи при наличии отверстия в перфокарте. Импульсы использовались и для ввода чисел, и для управления работой машины. Поэтому табулятор Холлерита можно считать первой счетной электромеханической машиной с программным управлением. Машину полностью построили в 1890 году и использовали при переписи населения США в том же году. Впоследствии табуляторы использовались вплоть до 1960-х 1970-х годов в бухгалтерии, учете, обработке данных переписей и подобных работах. И даже если в учреждении имелась полноценная ЭВМ, табуляторы все равно использовали, чтобы не нагружать ЭВМ мелкими задачами.


Табулятор IBM

Электромеханические машины времен ВМВ


Следующий виток в развитии вычислительной техники пришелся на Вторую мировую войну. Расчетные машины использовали для атак на вражеские шифры, расчета баллистики и при разработке сложных видов вооружения (авиация, ядерное оружие).

В 1937 году Клод Шеннон в своей работе A Symbolic Analysis of Relay and Switching Circuits показал, что электронные связи и переключатели могут представлять выражения булевой алгебры. Машины тех лет можно условно на два типа: электромеханические (основанные на электромагнитных переключателях) и электронные (полностью на электровакуумных лампах). К первым относились американский Harvard Mark I и компьютеры немецкого инженера Конрада Цузе.

Mark I


Работа над Mark I началась в 1939 году в Endicott laboratories по субподрядному договору с IBM. В качестве основы использовались наработки Чарльза Бэббиджа. Компьютер последовательно считывал инструкции с перфоленты, условного перехода не было, циклы организовывались в виде склеенных в кольцо кусков перфоленты. Принцип разделения данных и инструкций в Mark I получил известность как Гарвардская архитектура. Машину закончили в 1944 году и передали в ВМФ США. Характеристики:

  • 765 тысяч деталей (электромеханических реле, переключателей и т. п.)
  • Длина 17 м, высота 2.5 м, вес 4.5 тонн
  • Потребляемая мощность 4 кВт
  • Объем памяти 72 числа, состоящих из 23 разрядов (память на десятичных цифровых колесах)
  • Вычислительная мощность 3 операции сложения и вычитания в секунду, 1 операция умножения в 6 секунд, 1 операция деления в 15.3 секунды, логарифм и тригонометрические операции требовали больше минуты.


Mark 1

Z3-Z4


В 1936 немецкий инженер Конрад Цузе начал работу над своим первым вычислителем Z1. Первые две модели из серии Z были демонстративными. Следующий же компьютер, Z3, который закончили в 1941, имел практическое применение: с его помощью делали аэродинамические расчеты (стреловидные крылья самолетов, управляемые ракеты). Машина была выполнена на основе телефонных реле. Инструкции считывались с перфорированной пленки. Так же, как в Mark I, отсутствовали инструкции условного перехода, а циклы реализовывались закольцованной перфолентой. Z3 имел некоторые преимущества перед своими будущими собратьями (ENIAC, Mark I): вычисления производились в двоичной системе, устройство позволяло оперировать числами с плавающей точкой. Так как Цузе изначально исходил из гражданских интересов, его компьютеры более близки к современным, чем тогдашние аналоги. В 1944 году практически был завершен Z4, в котором уже присутствовали инструкции условного перехода. Характеристики Z3:

  • Арифметическое устройство: с плавающей точкой, 22 бита, +, , , /, квадратный корень.
  • Тактовая частота: 5,3 Гц.
  • Средняя скорость вычисления: операция сложения 0,8 секунды; умножения 3 секунды.
  • Хранение программ: внешний считыватель перфоленты.
  • Память: 64 слова с длиной в 22 бита.
  • Ввод: десятичные числа с плавающей запятой.
  • Вывод: десятичные числа с плавающей запятой.
  • Элементов: 2600 реле 600 в арифметическом устройстве и 2000 в устройстве памяти. Мультиплексор для выбора адресов памяти.
  • Потребление энергии: 4 кВт.
  • Масса: 1000 кг.

При постройке Z4 Цузе просил финансирование на замену электромагнитных реле полностью электронными схемами (лампами), но ему отказали. У электромеханических машин имелось два существенных недостатка низкое быстродействие и ограниченная износостойкость контактов (не более 10 млн переключений или 120 суток непрерывной работе при 1 переключении в секунду). Дальнейшая история показала, что перспективный путь это использование электровакуумных ламп.


Z3

Первые ламповые компьютеры


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

ENIAC


Electronic Numerical Integrator and Computer (Электронный числовой интегратор и вычислитель) или ENIAC создавался по заказу от армии США для расчета баллистических таблиц. Изначально, подобные расчеты производились людьми и их скорость не могла соотноситься с масштабом военных действий. Построен компьютер был лишь к осени 1945 года.

Характеристики ENIAC:

  • Вес 30 тонн.
  • Объем памяти 20 число-слов.
  • Потребляемая мощность 174 кВт.
  • Количество электронных ламп 17 468
  • Вычислительная мощность 357 операций умножения или 5000 операций сложения в секунду.
  • Тактовая частота 100 кГц
  • Устройство ввода-вывода данных табулятор перфокарт компании IBM: 125 карт/минуту на ввод, 100 карт/минуту на вывод.


Colossus


Colossus в отличие от ENIAC был очень узконаправленной машиной. Он создавался исключительно с одной целью декодирование немецких сообщений, зашифрованных с помощью Lorenz SZ. Эта машина было схожа с немецкой Enigma, но состояла из большего числа роторов. Для декодирования этих сообщений было решено создать Colossus. Он включал в себя 1500 электронных ламп, потреблял 8,5 КВт и обладал тактовой частотой в 5.8 МГц. Такое значение частоты достигалось за счет того, что Colossus был создан для решения только одной задачи и применяться в других областях не мог. К концу войны на вооружении Британии стояло 10 таких машин. После войны все они были уничтожены, а данные о них засекречены. Только в 2000 году эта информация была рассекречена.


Реконструированная модель Colossus

Принцип работы


Вакуумные лампы


Радиолампа представляет собой стеклянную колбу с электродами, из которой откачан воздух. Простейшая разновидность ламп диод, состоящий из катода и анода, а также спирали, разогревающей катод до температур, при которых начинается термоэлектронная эмиссия. Электроны покидают катод и под действием разности потенциалов притягиваются к аноду. В обратном направлении заряд не переносится, так как заряженных ионов в колбе нет (вакуум). При изменении полярности электроны, покинувшие разогретый электрод, будут притягиваться обратно. До второго электрода они долетать не будут, отталкиваясь от него из-за отрицательного потенциала. Если добавить еще один электрод, то получится триод. В электровакуумном триоде устанавливается сетка между катодом и анодом. При подаче на сетку отрицательного потенциала она начинает отталкивать электроны, не позволяя им достичь анода. При подаче модулированного сигнала ток будет повторять изменения потенциала на сетке, поэтому изначально триоды использовали для усиления сигналов.


Радиолампа и схема триггера на двух триодах

Если взять два триода и соединить анод каждого с сеткой другого, то мы получим триггер. Он может находиться в одном из двух состояний: если через один триод идет ток (триод открыт), то на сетке второго триода появляется потенциал, препятствующий току через второй триод (триод закрыт). Если кратковременно подать отрицательный потенциал на сетку открытого триода, то мы прекратим ток через него, что откроет второй триод, который уже закроет первый. Триоды поменяются местами. Таким образом можно хранить один бит информации. Через другие схемы триодов можно строить логические вентили, реализующие конъюнкцию, дизъюнкцию и отрицание, что позволяет создать электронно-вычислительное устройство.

Запоминающее устройство


На первых порах развития ЭВМ использовались разные подходы к созданию запоминающих устройств. Помимо памяти на триггерах из радиоламп и на электромагнитных реле (как в Z3) имелись следующие виды:

  • Память на магнитных барабанах
  • Память на электронно-лучевых трубках
  • Память на линиях задержки

Линии задержки


Основная идея линий задержки возникла в ходе разработки радаров во время Второй мировой войны. В первых ЭВМ в качестве линий использовались трубки с ртутью (у нее очень низкое затухание ультразвуковых волн), на концах которой располагались передающий и принимающий пьезокристаллы. Информация подавалась с помощью импульсов, модулированных высокочастотным сигналом. Импульсы распространялись в ртути. Информационная емкость трубки в битах равнялась максимальному количеству одновременно передаваемых импульсов. Единица кодировалось присутствием импульса на определенном месте, ноль отсутствием импульса. Приемный пьезокристалл передавал импульс на передающий информация циркулировала по кругу. Для записи вместо регенерации импульсов вводились записываемые. Такой вид памяти использовался в компьютерах EDVAC, EDSAC и UNIVAC I.


Запоминающее устройство на ртутных акустических линиях задержки в UNIVAC I

Запоминающие электронно-лучевые трубки (трубки Уильямса)


При попадании электронного луча на точку на люминофорном экране происходит вторичная эмиссия и участок люминофора приобретает положительный заряд. Благодаря сопротивлению люминофорного слоя, точка долю секунды держится на экране. Однако, если не отключать луч сразу, а сдвинуть его в сторону от точки, рисуя тире, то электроны, испущенные во время эмиссии, поглощаются точкой, и та приобретает нейтральный заряд. Таким образом, если выделить N точек, то можно записать N бит информации (1 нейтральный заряд, 0 положительный заряд). Для считывания информации используется доска с электродами, прикрепленная к внешней стороне экрана. Электронный луч снова направляется в точку, и та приобретает положительный заряд независимо от изначального. С помощью электрода можно определить величину изначального заряда (значение бита), однако информация уничтожается (после каждого считывания нужна перезапись). Так как люминофор быстро теряет заряд, необходимо постоянно считывать и записывать информацию. Такой вид памяти использовался в Манчестерском Марк I и Ferranti Mark1; американских IBM 701 и 702


Трубка Уильямса

Магнитные барабаны


Магнитные барабаны чем-то похожи на современные магнитные диски. На поверхность барабана был нанесен тонкий ферромагнитный слой. Несколько считывающих головок, расположенных по образующим диска, считывают и записывают данные на своей отдельной магнитной дорожке.


Архитектура фон Неймана


Архитектура фон Неймана строилась на следующих принципах:

  • Принцип двоичности:

Информация в компьютере представляется в виде двоичного кода.

  • Принцип программного управления:

Программа представляет собой набор команд, которые процессор выполняет друг за другом в определенном порядке.

  • Принцип однородности памяти:

Программы и данные хранятся вместе в памяти компьютера.

  • Принцип адресуемости памяти:

Память состоит из пронумерованных ячеек, к которым процессор в произвольным момент времени имеет доступ.

  • Принцип условного перехода:

В программе возможно присутствие команд условного перехода, которые изменяют последовательность выполнения команд.

Основным недостатком этой архитектуры является ограничение пропускной способности между памятью и процессором. Из-за того, что программа и данные не могут считываться одновременно, пропускная способность между памятью и процессором существенно ограничивает скорость работы процессора. В дальнейшем, данную проблему решили с помощью введения кеша, что вызвало другие проблемы( например, уязвимость Meltdown).

Справедливости ради необходимо уточнить, что данные идеи не являются идеями Джона фон Неймана в полной степени. Также в их разработке участвовали ещё несколько ученых, пионеров компьютерной техники: Джон Преспер Экерт и Джон Уильям Мокли.

Гарвардская архитектура


Гарвардская архитектура была разработана в 30-е годы прошлого века Говардом Эйкеном в Гарвардском университете (Невероятно, но факт). В отличии от архитектуры фон Неймана, Гарвардская подразумевала разные хранилища для данных и инструкций, а также разные каналы их передачи. Такой подход позволял одновременно считывать команда из программы и данные из памяти, что вело к значительному увеличению общей производительности компьютера. Но, в тоже время, такая схема усложняет саму систему. В дальнейшем Гарвардская архитектура проиграла архитектуре фон Неймана, отчасти из-за этого фактора.

Гарвардская архитектура

Языки


В самых первых компьютерах программы считывались с перфоленты (как в Z3 и Mark I). Устройство чтения перфоленты предоставляло управляющему устройство код операции для каждой инструкции и адреса памяти. Затем управляющее устройство все это декодировало, посылало управляющие сигналы вычислительному блоку и памяти. Набор инструкций жестко задавался в схеме, каждая машинная инструкция (сложение, сдвиг, копирование) реализовывалась непосредственно в схеме. В ENIAC для изменения программы его нужно было перекоммутировать заново, на что уходило значительное время. Машинные коды считают первым поколением языков программирования.


Перфорированная лента с программой вычислений

Первые программисты всегда имели при себе блокнот, в который они записывали наиболее употребляемые подпрограммы независимые фрагменты программы, вызываемые из главной подпрограммы, например извлечение корня или вывод символа на дисплей. Проблема состояла в том, что адреса расположения переменных и команд менялись в зависимости от размещения в главной программе. Для решения этой проблемы кембриджские программисты разработали набор унифицированных подпрограмм (библиотеку), которая автоматически настраивали и размещали подпрограммы в памяти. Морис Уилкс, один из разработчиков EDSAC (первого практически реализованного компьютера с хранимой в памяти программой), назвал библиотеку подпрограмм собирающей системой (assembly system). Теперь не нужно было собирать программу вручную из машинных кодов, специальная программа (ассемблер) автоматически собирала программу. Первые ассемблеры спроектированы Кэтлин Бут в 1947 под ARC2 и Дэвидом Уилером в 1948 под EDSAC. При этом сам язык (мнемоники) называли просто множеством базовых команд или начальными командами. Использовать слово ассемблер для процесса объединения полей в командное слово начали в поздних отчетах по EDSAC. Ассемблер можно назвать вторым поколением языков.


Начальные команды для EDSAC

Компьютеры первого поколения в СССР


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

МЭСМ и БЭСМ


В 1948 году основоположник советской вычислительной техники С.А. Лебедев направил в Академию наук СССР докладную записку: в ней сообщалось о необходимости создания ЭВМ для практического использования и научного прогресса. Для разработки этой машины под Киевом, в Феофании институту отвели здание, ранее принадлежавшее монастырю. Через 2 года МЭСМ (малая электронная счетная машина) произвела первые вычисление нахождение корней дифференциального уравнения. В 1951 году инспекция из академии наук приняла работу Лебедева. МЭСМ имела сложную трехадресную систему команд и следующие характеристики:

  • Тактовая частота 5 КГц
  • Быстродействие 3000 операций в минуту
  • 6000 вакуумных ламп
  • Потребляемая мощность 25 КВт
  • Площадь 60 кв.м
  • Ввод данных: перфокарты или магнитная лента
  • Память на триггерных ячейках


МЭСМ

В 1950 году Лебедева перевели в Москву. Там он начал работать над БЭСМ-1 и к 1953 году построил опытный образец, отличавшийся отличной производительностью. Характеристики были следующими:

  • Быстродействие до 10000 операций в минуту
  • 5000 вакуумных ламп
  • Потребляемая мощность 35 КВт
  • Площадь 1000 кв.м

БЭСМ-1 получилась ЭВМ широкого профиля. Её планировали предоставлять ученым и инженерам для проведения различных работ.


Серия М и Стрела


В тоже время в Москве велась работа над М-1. М-1 была намного менее мощной, чем МЭСМ, но при этом занимала намного меньше места и тратила меньше энергии. Характеристики М-1:

  • 730 вакуумных ламп
  • Быстродействие 15-20 операций в секунду
  • Потребляемая мощность 8 КВт
  • Площадь 4 кв.м
  • Память электронно-лучевых трубках


М-1

В 1952 году на свет выпустили М-2. Её мощность увеличилась практически в 100 раз, при этом количество ламп увеличилось только вдвое. Подобный результат получился благодаря использованию управляющих полупроводниковых диодов. Характеристики М-2 были следующие:

  • 1676 вакуумных ламп
  • Быстродействие 2000-3000 операций в секунду
  • Потребляемая мощность 29 КВт
  • Площадь 22 кв.м
  • Память электронно-лучевых трубках


М-2

В массовое производство первой попала Стрела. Всего было произведено 7 штук. Характеристики Стрелы были следующие:

  • 6200 вакуумных ламп и 60 тыс. диодов.
  • Быстродействие 2000 операций в секунду
  • Потребляемая мощность 150 КВт
  • Площадь 300 кв.м
  • Память электронно-лучевых трубках


Стрела

Во многих смыслах Стрела была хуже М-2. Она выполняла всё те же 2 тысячи операций в секунду, но при этом занимала на порядок больше места и тратила в несколько раз больше электричества. М-2 не попала в массовое производство, поскольку её создатели не уложились в срок. М-1 не обладала хорошей производительностью и к моменту, когда М-2 была доведена до ума, Стрела была отдана в производство.

Следующий потомок серии М М-3 вышел в 1956 году и был в каком-то смысле урезанным вариантом. Она выполняла порядка 30 операций в секунду, но при этом занимала мало места, благодаря чему пошла в серийное производство. Характеристики М-3 были следующие:

  • 774 вакуумных ламп
  • Быстродействие 30 операций в секунду
  • Потребляемая мощность 10 КВт
  • Площадь 3 кв.м


Эпилог


Без технологического рывка, сделанного в 40-е годы, и четко сформированного вектора развития вычислительной техники, возможно, сегодня мы бы и не сидели в компьютерах и телефонах, читая статейки на хабре. Как показал опыт разных ученых, порой уникальные и революционные для своего времени образцы вычислительной техники не были востребованы как государством, так и обществом (например, машины серии Z Конрада Цузе). Переход ко второму поколению компьютеров во многом определился сменой вакуумных ламп на транзисторы и изобретением накопителей на ферритовых сердечниках. Но это уже другая история



Облачные серверы от Маклауд быстрые и надежные. Без древнего железа.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru