Pull to refresh
247
-7
Send message

Ускоряем программу для 50-летнего процессора на 180000%

Level of difficulty Hard
Reading time 36 min
Views 45K

В прошлом году я написал программу, вычисляющую 255 цифр числа π на самом первом микропроцессоре от Intel - 4004. В той статье я упоминал рекорд ENIAC'a - 2035 цифр [^1], но побить его не смог. Настало время закрыть гештальт. В этот раз возьмём одного из преемников от Intel - 4040.

Читать далее
Total votes 289: ↑287 and ↓2 +285
Comments 41

Вычисляем π на первом процессоре от Intel — 4004

Reading time 10 min
Views 16K

Как-то мне пришла в голову мысль о том, насколько же быстрее современные процессоры по сравнению с ранними экземплярами. Да, можно размышлять об этом эмпирически - зная тактовую частоту и особенности микроархитектуры (как устроен конвейер, сколько есть ALU, и т.д.), можно прикинуть производительность Intel 4004. Пусть и не в FLOPS'ах, ибо нативная поддержка чисел с плавающей запятой появилась позже. Но это будет весьма грубая прикидка, так как у этого процессора есть несколько интересных черт: разрядность только 4 бита (а не 64, как у большинства современных машин), очень скудный набор инструкций (нет даже AND'a и XOR'a!) и ограничения переферии (в частности памяти не так уж и много).

Поэтому я решил исследовать вопрос на практике. В качестве бенчмарка выбор пал на вычисления числа π. В конце-то концов, даже ENIAC в дремучем 1949 году справился с этой задачей! [2]

Читать далее
Total votes 109: ↑108 and ↓1 +107
Comments 25

Импульсный блок питания для телетайпа из 1940х (со светящимися ртутными тиратронами!)

Reading time 16 min
Views 20K
Недавно мы начали процесс восстановления телетайпа Model 19, военно-морской системы связи из 1940х [1]. Этот телетайп питался от массивного блока питания постоянного напряжения, который звался «Выпрямитель REC-30». В нём использовались специальные тиратроны на ртутных парах, которые выдавали жуткое голубое свечение при включении, как на фото ниже.


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

REC-30 интересный экземпляр в первую очередь из-за того, что это очень ранний импульсный блок питания. (Я знаю, что весьма спорно называть этот девайс импульсным блоком питания, но, тем не менее, я не вижу хорошей причины не делать этого). Несмотря на то, что в наши дни импульсные блоки питания используются повсеместно (из-за дешевизны высоковольтных транзисторов), они были диковинкой в 1940х. REC-30 огромен — его вес превышает 45 килограмм! Если сравнить его с 300 граммами блока питания для MacBook'а, то виден впечатляющий прогресс в развитии блоков питания с 1940х годов. В данной записи я загляну внутрь блока питания, опишу принципы его работы и сравню его с БП для MacBook'a.

Total votes 39: ↑39 and ↓0 +39
Comments 24

Donkey Kong и Я

Reading time 9 min
Views 9.6K
Осенью 1981 я поступил в вуз и пристрастился к играм Centipede и Tempest на аркадных автоматах Atari. Я немного разбирался в железе персональных компьютеров Atari 400/800 и решился совершить разорительную для студенческого бюджета покупку — Atari 400 и черно-белый телевизор (цветной я не мог себе позволить). Наигравшись с Basic'ом, я купил картридж с Assembler/Editor и принялся корпеть над клоном Centipede. У меня не было возможности опираться на опыт предыдущих игровых проектов и я вынужден был разбираться во всём самостоятельно. Прям как со школьными задачами: нужно найти решение, используя лишь небольшие подсказки из учебников и лекций.

Каждый, кто работал с Asm/Editor, скорее всего, несёт такие же глубокие эмоциональные шрамы на себе как и я! Редактор был невероятно медленным, отладчик работал на ладан, а мне приходилось удалять комментарии и использовать оверлеи в пару килобайт (RAM'ы было не много и все переменные не вмещались, поэтому использовалась техника оверлеев — разные группы переменных размещались по одинаковым адресам. Понятно, что одновременно переменные с разных секций использовать было нельзя, причём не только переменные с одним адресом, но и вообще переменные из разных оверлейных секций.) для того чтобы уместить весь код. Создание игры, которую я назвал Myriapede, заняло три месяца. У меня до сих пор хранятся эскизы и наброски: миллиметровка, исчерченная разноцветными ручками и с шестнадцатеричными значениями цветов, тщательно выписанных на поля. Цвета я подбирал наобум: у меня был только дешевый черно-белый экран, и я заходил к другу на пару часов в гости, чтобы проверить и подстроить значения цветов на его телевизоре.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 13

Приводим в чувство каноничный DEC VT100

Reading time 4 min
Views 10K
Ранее был перевод про восстановление другого терминала — LA30. Курсивом мои комментарии


DEC VT100


VT100, в каком-то смысле, является индустриальным стандартом среди терминалов. Набор команд, поддерживаемых этим терминалом, заимствовался кем только ни попадя. В линейке терминалов от DEC, VT100 первым был выпущен с отдельностоящей клавиатурой. Сердцем аппарата выступает микропроцессор Intel 8080. Похожий корпус был и у терминала VT103, в который были добавлены два ленточных накопителя TU58 и небольшая объединительная плата с QBUS шиной. Кроме того, еще выпускался VT125, который, по сути, отличается от VT100 только наличием дополнительной платы для поддержки инструкций ReGIS, реализующих простую компьютерную графику.

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 13

Восстанавливаем очередной PDP-11/04

Reading time 5 min
Views 11K
Перевод статьи по восстановлению еще одного PDP-11/04. Прошлую трилогию можно почитать тут — часть 1 (сам PDP-11/04), часть 2 (ленточная станция TU60), часть 3 (терминал LA30). Курсивом мои комментарии.

PDP-11/04, присланный Гуннаром


Данный аппарат мы получили от Гуннара Барбро, и с ним шла куча разных вкусностей для PDP-11. Но состояние самого компьютера было далеко от совершенства. Не хватало плат процессора и памяти, переключатель питания был заменен новоделом, к тому же всё было ужасно пыльным. К объединительной плате (backplane) были подключены плата консоли программирования KY11-LB, XY11 (модуль для управления графопостроителем, к примеру IBM 1627, который поставлялся с машинами DEC, и являлся каноничным CalComp 565), KW11-P (модуль программируемого RTC, да-да под RTC шла целая плата!), основная плата RK11-D с набором модулей (контроллер для накопителей на магнитных дисках, это был набор карт (3 или 4 штуки), объединенный общей платой), и DR11-B (контроллер DMA, который, опять же, состоял из нескольких плат: M7194, M971, M5916, M7820, ...), также со всеми модулями.



Чистка


Мы разобрали компьютер на части и аккуратно промыли их с мылом, а затем компрессором продули насухо. После просушки собрали их в единое целое. Во время этих процедур то тут, то там обнаруживались пятна ржавчины.
Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Comments 3

Майним Bitcoin с помощью бумаги и ручки

Reading time 7 min
Views 322K
В один прекрасный момент мне захотелось прикинуть, насколько быстро можно майнить биткойны вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.


Один криптографический раунд
Читать дальше →
Total votes 128: ↑124 and ↓4 +120
Comments 30

Реверс-инжиниринг TL431, крайне распространенной микросхемы, о которой вы и не слышали

Reading time 14 min
Views 107K
Кен, как и планировал, провёл реверс-инжиниринг микросхемы по фотографиям, сделанным BarsMonster. Барс в статье упомянул своё общение с Кеном, но этой переводимой статьи тогда еще не было.

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


Фото кристалла TL431. Оригинал Zeptobars.
Читать дальше →
Total votes 74: ↑73 and ↓1 +72
Comments 30

Чем была вызвана задержка последнего полета Индевора?

Reading time 4 min
Views 8.5K
Последний полёт Шаттла Индевор был задержан на 48 часов (update: вообще на неопределенное количество времени) из-за проблем с отопителем APU и с блоком управления нагрузкой. Мне захотелось разобраться в том, зачем конкретно нужны данные компоненты, поэтому я провёл небольшое исследование. Существует куча детальнейшей информации по Шаттлам доступная в интернете, но её очень трудно найти. Я собрал всё здесь на тот случай, если кто-нибудь еще захочет погрузиться в специфику.


Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 12

Восстановление HP 9830B

Reading time 15 min
Views 56K
Продолжаем оживлять старое железо. После PDP-11 приступаем к «калькулятору» HP 9830B. Много тяжелых картинок. Курсивом — мои комментарии.

Калькулятор HP 9830B с поддержкой BASIC'a


В 1976 был представлен HP 9830B, обновленная версия (больше памяти) HP9830A, выпущенного в 1972. Цена самого калькулятора была $8350. Дополнительный модуль принтера, располагаемый сверху, продавался еще за $3350.

Для всего модельного ряда HP98x0 использовался один и тот же тип 16битного процессора, реализованного на дискретной TTL-логике, которая размещалась большей частью на четырех платах. Для упрощения схемы, ALU был сделан последовательным.

Статья описывает историю превращения устройства из пыльного ящика со сломанными кнопками в полностью рабочий калькулятор.


Читать дальше →
Total votes 68: ↑66 and ↓2 +64
Comments 21

Восстановление PDP 11/04. Терминал LA30 Decwriter

Reading time 5 min
Views 32K
Продолжение перевода статьи по восстановлению одной старой интересной машинки. В первой части наладили основной блок плат. Во второй — ленточную станцию TU60. Много тяжелых картинок. Курсивом мои комментарии.

LA30 Decwriter


Теперь я приступил к заключительной части своего квеста — раздобыть хороший терминал, который был бы таким же винтажным, как и основная система. Мне повезло, что у меня в хранении есть LA30, который я собираюсь теперь начать восстанавливать. Наш экземпляр был изготовлен в начале 1973. Хотя, печатающие головки, видимо, были заменены в 1979.

LA30, по-видимому, был одним из первых матричных принтеров, что делает его интересным, сам по себе, даже в отрыве от PDP-11.

Читать дальше →
Total votes 46: ↑45 and ↓1 +44
Comments 10

Восстановление PDP 11/04. Ленточная станция TU60

Reading time 15 min
Views 27K
Продолжение перевода статьи по восстановлению одной старой интересной машинки. В первой части наладили основной блок плат. Много тяжелых картинок. Курсивом мои комментарии.

Стриммер TU60 и контроллер TA11


В 70х DEC создали простую замену для перфолент, которая базировалась на разновидности простых аудио-кассет. TU60 вмещает два блока стриммеров. 50метровая лента могла хранить до 100Кб:


Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Comments 2

Восстановление PDP 11/04

Reading time 12 min
Views 45K
Перевод статьи по восстановлению одной старой интересной машинки. Много тяжелых картинок. Курсивом мои комментарии.

Этот PDP 11/04 изначально принадлежал Ericsson. Мы получили его в конце восьмидесятых от EDKX — компьютерного клуба Ericsson. Компьютер был передан по частям, но всё было на месте за исключением пары винтиков. Вместе с самим PDP-11 шла ленточная станция TU60.

Панель операторской консоли
Читать дальше →
Total votes 49: ↑47 and ↓2 +45
Comments 8

Смелый план, который мог бы спасти шаттл «Колумбия». Часть 3

Reading time 10 min
Views 48K
Это перевод окончания статьи Ли Хатчинсона. Первая и вторая часть перевода опубликованы в марте, однако спустя два месяца третья часть так и не появилась. Несмотря на то, что я не связывался с автором, всё же решил восполнить сей пробел. Так как я почти не занимаюсь переводами, то немаловероятно некоторое число ошибок и неточностей. О них можно сообщить в личку.

Напёрстки

Во время спасательной операции несколько действий было бы произведено впервые.
— Из Приложения D.13 отчета Комиссии по расследованию катастрофы шаттла «Колумбия»

Теперь (после стыковки шаттлов — прим. переводчика) сложность миссии достигала максимальной отметки. В зависимости от усталости и физического состояния, CM1 и CM2 могли помочь пилоту и командиру Атлантиса в задачах, связанных с удержанием корабля на нужной орбите (исходя из того что CM1 и CM2 были бы командир Рик Хасбэнд и пилот Уильям МакКул с Колумбии). Однако два дополнительных скафандра продолжали бы активно использовать.

Два члена экипажа Атлантиса оставались снаружи, и в то время как CM1 и CM2 снимали бы скафандры, двое с Атлантиса использовали бы свои SAFER ранцы для проверки обшивки и передней кромки крыльев (Колумбия не имела таких SAFER ранцев, поэтому внебортовой осмотр силами экипажа требовал бы куда более сложных техник для перемещения по орбитеру чтобы взглянуть на крыло).

Снятые с CM1 и CM2 скафандры готовили к повторному использованию. EV1 и EV2 возвращали их на Колумбию в шлюзовую камеру, в которой затем выравнивалось давление и она открывалась. Еще двое членов экипажа Колумбии к этому моменту уже должны были надеть скафандры, которые им доставили в первый рейс. Назовём их CM3 и CM4. Они повторяют действия CM1 и CM2 и переходят на Атлантис.

image
Другой вид на перемещение астронавтов между Колумбией и Атлантисом. Source: NASA / CAIB Report

Читать дальше →
Total votes 74: ↑71 and ↓3 +68
Comments 13

Космос: чего ждать в 2013 году. Частники

Reading time 5 min
Views 29K


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

Читать дальше →
Total votes 71: ↑67 and ↓4 +63
Comments 63

Особенности написания и возможные фичи LR-генераторов

Reading time 8 min
Views 6.6K

Введение


Добрый день.
В заключительной части про написание собственного генератора LALR-парсеров я бы хотел описать возможные особенности и фичи. Кроме того я опишу чего мне не хватало в существующих решениях и ради чего я начал писать свой велосипед.

Дабы задать контекст, сообщу, что грамматика для анализа — это ECMAScript, так же известный как JavaScript. Конкретная спецификация — ECMA-262, редакция 5.1 от июня 2011 года.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 4

Написание компилятора LALR(1)-парсеров. Описание LR-генераторов

Reading time 10 min
Views 14K

Предисловие


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

В комментариях к прошлой статье несколько человек интересовались моими мотивами в написании своего компилятора компиляторов. К сожалению, они в этой статье не найдут ответов на этот вопрос. Не скрою, изначально я планировал написать статью без особой теории, но с оправданием задач и целей, ради которых я начал писать генератор, да и хотел поделиться нюансами и особенностями реализации. То есть по объему это довольно прилично: несколько экранов. Но затем я решил всё же описать базовую теорию популистским языком, поэтому статья разрослась до трех частей. Таким образом, дабы не ломать логику изложения, я сначала расскажу про LR/SLR/LALR-анализаторы, а завтра опубликую заключительную, и, думаю, самую интересную часть.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 2

Написание компилятора LALR(1)-парсеров. Базовая теория

Reading time 7 min
Views 22K

Введение, или зачем нужны синтаксические анализаторы


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

Эта часть посвящена базису, общей теории computer science. Возможно, что это даже преподаётся в школах/вузах России. Самая мякота пойдет со второй части.

Итак, зачем же кому-то может понадобиться писать парсер и что вообще это такое? Парсер — это код, который наделяет входящий набор символов семантическим смыслом. То есть, происходит анализ этих символов, и на основе этого анализа программа понимает как интерпретировать эти буквы и цифры. Простой пример — «1+2», после или во время процесса парсинга знак "+" это не просто символ плюса, но обозначение бинарноого оператора сложения, а в "+3" это унарный оператор знака числа. Большинству людей это очевидно, машине — нет.

Парсеры используются всюду — в Word'e для анализа приложений, словоформ, формул, etc; практически на любом сайте при валидации входных данных: email'а, телефонного номера, номера кредитки; конфигурационные файлы; сериализованные данные (например, в xml); во многих играх — скриптовые ролики, скрипты ИИ, консоль. В общем, это неотъемлемая часть computer science.

Читать дальше →
Total votes 65: ↑61 and ↓4 +57
Comments 26

Тонкости при работе с иностранным заказчиком

Reading time 5 min
Views 96K
В соседней теме попросили рассказать о нюансах работы с зарубежными клиентами для ИП/ООО. Для физических лиц работа с нерезидентами ничем не отличается работы с резидентами.
Это скорее даже не статья, а заметка/памятка, но возможно кому-нибудь будет хоть немного полезна.

Регистрация счета


Предположим что вы закончили регистрацию ИП/ООО и открыли рублёвый расчетный счет.
Для того чтобы работать с валютой нужно открыть еще один расчетный счет — валютный. Это просто.
При открытии валютного счета вам создадут дополнительно технический транзитный счет. Его реквизиты и нужно сообщать заказчику.

Здесь мы встречаем потенциальный косяк номер раз: как и в случае с рублевым счетом нужно уведомить налоговую в недельный срок (штраф — 5000 рублей [1]). Затем не забыть уведомить и своё отделение ПФР в тот же срок, иначе опять же штраф, но уже меньше — 2000. Если вы зарегистрированы в ФСС, то нужно не забыть так же и их, всё аналогично случаю с ПФР. [2]

ООО нужно уведомить ПФР и ФСС только если есть работники. ИП — обязательно ПФР, но если есть или были работники, то и ФСС.

Некоторые госслужбы «не шарят» и пытаются оштрафовать если не уведомили о транзитном счете. Это противозаконно и легко решает даже в досудебном порядке, не говоря уже о суде. Заявлять нужно только об обычном счете, о транзитном — не нужно.

В принципе здесь всё кристально ясно, единственно вызывает легкое недоумение зачем носить эти бумажки если банк тоже обязан выслать информацию об открытие счетов.
Читать дальше →
Total votes 82: ↑81 and ↓1 +80
Comments 172

Пара предложений

Reading time 1 min
Views 644
Добрый день.

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

Поэтому предагаю несколько пунктов для модификации:
  • Связь с автором из песочницы. В песочнице опубликовали топик, который мне понравился, однако хотелось бы побеседовать с автором, чтобы узнать для чего ему инвайт. Может это виртуал, или инвайт на продажу. Ну и соответственно возможность анрегнуть приглашенного пользователя в течении месяца с момента его регистрации.
  • Модификация панели html-тегов. Почему не добавить все теги которые есть, при написании комментария? Ну или хотя бы добавить очень полезные — цитирование и тег source.
  • Интеграция с habrastorage. Раз уж habrastorage приветствует меня как пользователя хабра, почему бы ему не хранить список моих файлов?


В общем-то вот такие предложения.
Не думаю что реализовать их сложно.
Total votes 42: ↑30 and ↓12 +18
Comments 41
1

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Registered
Activity