Якщо перша частина цієї історії була про зародження ідеї, то друга — про її тріумфальну ходу світом. У XX столітті двійковий код перестав бути просто теорією — він став серцем цифрової епохи. Від перших комп’ютерів, що займали цілі кімнати, до сучасних нейроморфних чіпів і квантових обчислень — усе це стало можливим завдяки простій мові з двох символів. У цій частині ми дослідимо, як двійковий код змінив науку, технології та наше повсякденне життя. Перша частина тут.
Як народився «байт»: від хаосу до стандарту 8 біт
У ранніх ЕОМ розмір символу залежав від архітектури. CDC 6600 з 60-бітним словом використовував 6-бітні символи: 10 штук рівно поміщалися в слово. PDP-10 віддавав перевагу 36-бітному слову і 7-бітному символу, залишаючи один біт під парність. Радянська БЭСМ-6 зберігала символ у 9 бітах, додаючи прапорці, що відповідають за управління.
Перелом стався із виходом IBM System/360 (1964). Інженери вирішили, що 8 бітів достатньо для латиниці, цифр і службових кодів, а головне — легко ділиться на 2 і 4. У 32-бітному адресному просторі чотири байти утворюють слово, а два — півслово. Так «октет» став універсальною одиницею, закріпленою стандартом ISO.
До речі, слово byte вигадав інженер Вернер Буххольц, щоб уникнути плутанини з bit. Спочатку воно писалося «bite», але замінили i на y, щоб не було омоніма «укус».
Від телетайпу до емодзі: навіщо потрібні кодування алфавітів
Комп’ютер бачить лише числа. Щоб зберігати текст, необхідно зіставити числу символ. Така таблиця називається кодуванням. Першою масовою стала ASCII (1963) — 7-бітний набір на 128 символах: латиниця, цифри, розділові знаки та 33 керуючі коди (наприклад, CR — повернення каретки, BEL — дзвінок).
IBM не захотіла ламати сумісність із перфокартами і створила 8-бітний EBCDIC. Літери в ньому розташовані не поспіль, а групами, що відповідають колонкам картки. В результаті програми для ASCII не розуміли EBCDIC і навпаки. Світ розколовся: мейнфрейми говорили EBCDIC, міні-ЕОМ — ASCII.
З розвитком інтернету знадобилася єдина таблиця всіх мов. Консорціум Unicode сформував абстрактний простір кодових точок. Але як укласти їх у байти? Рішення — UTF-8. Якщо код ≤ 0x7F, він ідентичний ASCII та займає 1 байт, кирилиця — 2, рідкісні ієрогліфи — 3-4. Завдяки цьому вебсторінки залишаються сумісними зі старими утилітами, але відображають ???? і???? без проблем.
Ціна одного біта: коли крихітна помилка руйнує мільйони
Іноді достатньо одного невірного біта, щоб дорогий проєкт закінчився катастрофою. Розглянемо чотири відомі випадки, докладно описані у звітах розслідувань.
- Therac-25 (1985-1987). Медичний прискорювач керувався софтом на асемблері PDP-11. Через гонитву потоків 8-бітний лічильник дози іноді скидався, пацієнт отримував 100-кратну дозу радіації. Шестеро людей загинуло, перш ніж знайшли відсутність прапора блокування.
- Ariane 5 Flight 501 (1996). Переповнення 16-бітного регістру швидкості викликало перезавантаження обох навігаційних комп’ютерів. Ракета за $370 млн відхилилася від курсу та самоліквідувалася.
- Pentium FDIV bug (1994). У таблиці коефіцієнтів розподілу не вистачало п’яти значень. Помилка виникала раз на 9 млн операцій, але для наукових розрахунків цього виявилося достатньо. Intel замінила процесори, втративши ~ $475 млн.
- Mars Climate Orbiter (1999). Земне програмне забезпечення видавало імпульси в фунтах-сили, бортовий софт чекав ньютон-секунди. Неузгодженість одиниць виміру не зловили контрольні перевірки, апарат згорів у атмосфері Марса.
Кожен випадок — нагадування: один біт може коштувати життя, грошей та репутації. Тому інженери винайшли цілий арсенал засобів для виявлення та виправлення помилок.
Корекція помилок: від парності до кодів Ріда-Соломона
Найпростіший спосіб – додати до байта parity bit, роблячи суму одиниць парною чи непарною. Метод виявляє окрему помилку, але не вказує, де вона сталася.
В 1950 Річард Хеммінг запропонував код, який не тільки помічає, але і виправляє поодинокий збій. У варіанті (7,4) до чотирьох інформаційних біт додають три перевіркові. Позиція помилкового біта обчислюється синдромом, після чого інвертується.
Для довгих блоків застосовують коди Ріда-Соломона. Вони оперують байт як елементами кінцевого поля GF(256) і відновлюють до t помилок, де t — половина надлишкових символів. CD-аудіо зберігає два рівні такого коду, завдяки чому диск грає без клацань навіть при подряпинах. У мережевих кадрах Ethernet використовується CRC‑32: залишок поліноміального поділу перевіряється на приймачі.
Троїчні та багаторівневі виклики бінарному трону
Двійковий код неодноразово намагалися замінити. Радянська ЕОМ «Сетунь» (1958) працювала у трійковій логіці: −1, 0, +1. Троїчність заощаджувала пам’ять і спрощувала множення, але відсутність компонентів та стандарту погубило проєкт.
Сьогодні флешосередки TLC і QLC розрізняють 8 і 16 рівнів заряду, зберігаючи 3-4 біти в одному осередку. Контролер перетворює багаторівневий сигнал на звичайні біти та додає потужний ECC, тому що на системній шині все одно передаються 0 і 1.
В оптоволокні популярна модуляція PAM-4: чотири амплітуди несуть два біти за символ, подвоюючи пропускну здатність без підвищення тактової частоти. Але що більше рівнів, то суворіші вимоги до лінійності підсилювачів, і ціна устаткування зростає.
Квантовий обрій: кубіт, суперпозиція і все одно 0/1
Кубіт — квантовий аналог біта. Він здатний перебувати у суперпозиції |0⟩ і |1⟩, але вимір завжди дає одне із двох результатів. Квантові алгоритми (наприклад, алгоритм Шора) використовують інтерференцію амплітуд, щоб отримати відповідь швидше за класичні.
Однак електроніка залишається класичною. Програми пишуть на Qiskit або Cirq, компілятор розбиває їх на гейти та передає контролеру бінарні команди: «включити мікрохвильовий імпульс такої частоти, такої тривалості». Навіть у квантовій ері двійковий інтерфейс не зникає, а лише отримує новий рівень абстракції.
Бінарна культура: восьмибітна естетика, демосцена та чіптюн
У середині 1980-х домашні консолі Nintendo NES та Sega Master System пропонували скромні технічні ресурси: роздільну здатність 256 × 240 px, 48 одночасних кольорів та апаратну палітру з трьох біт на канал. Пам’ять картриджа вимірювалася десятками кілобайт, а звук відтворював чотириканальний PSG-чіп із двобітною градацією гучності. Розробники вимушено «стискали» гру до великих квадратних пікселів і складали мелодії в межах трьох-чотирьох одночасних нот.
Народження піксель-арту. Щоб маскувати «драбинки» та дрібні палітри, митці придумали техніки dithering та subpixel outlines, що надавали ілюзію плавних градієнтів. Замість спроби приховати пікселі їх почали підкреслювати, перетворюючи обмеження на виразний прийом. Сьогодні виставки MoMA і V&A включають роботи, створені в 8-бітній стилістиці, а сучасні інді-ігри (Celeste, Undertale) свідомо імітують цю естетику, тому що великий піксель миттєво читається як чесна цифрова форма.
Музика із відеочіпа. Чіпи Ricoh 2A03 (NES) та SN76489 (Master System) генерували звук за допомогою найпростіших цифрових осциляторів: прямокутні імпульси, шум ЛФСР та трикутна хвиля. Композитори, позбавлені можливості писати акорди у широкій смузі частот, навчилися швидко перемикати висоту тону (arpeggio) та гучність (volume sweep), створюючи ілюзію багатої гармонії. Так з’явився жанр чіптюн, який сьогодні звучить на фестивалях Blip Festival та Chipwrecked, а треки пишуться не в DAW, а у трекерах на кшталт Famitracker, де кожна нота все ще кодується парою чисел: висота та тривалість.
Що таке демосцена. Наприкінці 1980-х ентузіасти почали випускати «демо» — неігрові програми, які демонструють графічні та аудіотрюки конкретного заліза. Головний спорт — унеможливити на обмеженій платформі. У 1990-х з’явилися категорії 64 k intro і навіть 256 byte intro. Представте 3D‑анімацію з музикою, поміщену у файл розміром два твітти! Переможці фестивалю Assembly або Revision часто публікували вихідні записи, де кожен байт на рахунку: константи обчислювалися на льоту, а таблиці синусів породжувалися одним рядком коду.
Чому це важливо для нашої теми? І піксель-арт, і чіптюн, і демосцена — культурні феномени, що народилися із твердих бітових рамок. Автори навчилися перетворювати обмеження «усього стільки біт» на художню мову, довівши, що креативність залежить від гігабайтів ресурсів. Тим самим вони ще раз підтвердили універсальність двійкового коду: навіть мінімальна порція здатна нести величезний пласт емоцій і смислів.
Нейроморфні чіпи: від спайків до біт і назад
Навіщо імітувати мозок? Традиційні GPU обробляють матриці ефективно, але споживають сотні ватів. Мозок людини виконує аналогічне завдання розпізнавання образів, витрачаючи лише 20 Вт. Науковці намагаються відтворити цей біологічний «алгоритм ефективності» у кремнії — так народився напрямок нейроморфних обчислень.
Як працюють спайкові мережі. У нейробіології інформація передається не постійною напругою, а короткими імпульсами спайками. Нейрон накопичує вхідний струм до порога, потім вистрілює й обнуляється. Лінія часу перетворюється на чергування подій «є імпульс/немає імпульсу» — знову бінарний принцип, лише у часовій області.
Intel Loihi. Чіп містить 128 «ядер-нейронів», кожне моделює ~1 000 штучних нейронів і до 130 000 синапсів. Нейрони накопичують заряд із кроком 1 мВ (аналоговий елемент), але коли спрацьовує поріг, ядро генерує цифровий пакет — слово з 24 біт, де закодовано ID нейрона, час та вага імпульсу. Пакети подорожують мережею на основі протоколу Address-Event Representation — фактично це асинхронна шина коротких «бітових листів».
IBM TrueNorth. Архітектура містить мільйон нейронів та 256 млн синапсів, але споживає 70 мВт. Кожне ядро зберігає вагу синапсів у 4 бітах і генерує спайкпакети завдовжки 9 біт. Таким чином, дані всередині ядра течуть як аналоговий струм, але межі ядер перетинаються виключно цифровими словами.
Гібридна природа. Усередині кристала обчислення подієве і, по суті, аналогове: струми підсумовуються безперервно. Але як тільки імпульс залишає ядро, він перетворюється на чітко сформований пакет нулів і одиниць, щоб безпомилково дістатися адресата. Аналогово-цифровий компроміс дозволяє поєднати енергоефективність мозку та надійність бінарної комунікації.
Висновок нашої історії. Навіть у передових чіпах, що імітують біологічні нейрони, двійковий код залишається «мовою міжпроцесорного спілкування». Поки потрібно передати сигнал без спотворень, ми змушені пакувати імпульси в послідовності 0 і 1 — саме тому історія бінарності продовжується і в епоху нейроморфних обчислень.
Більше цікавого: