Передмова і Пролог
Прихована історія комп’ютера, якого ми досі не розуміємо
Передмова. Для кого ця книга
Якщо ти системний адміністратор, який щодня бачить у логах слова “kernel panic”, “cache miss”, “segmentation fault” — і ніколи не питав себе, звідки вони взялися і чому саме такі, — ця книга для тебе.
Якщо ти програміст, який написав тисячі рядків коду, але ніколи не
тримав у руках процесор і не знає, що відбувається між твоїм
print("hello") і світінням пікселя на екрані, — ця книга
для тебе.
Якщо ти просто людина, яка відчуває, що навколо нас стоїть велетенська невидима машина, і хоче зрозуміти, з чого вона зроблена, на чому стоїть, і чому інколи падає, — ця книга теж для тебе.
Я не обіцяю, що після неї ти зможеш спроектувати процесор. Але обіцяю одне: ти більше ніколи не дивитимешся на свій ноутбук так, як раніше.
Бо він — диво. А водночас — будівля на глиняних ногах, збудована з історичних випадковостей, поспішних рішень і геніальних компромісів, які ми всі успадкували, не питаючись.
Ця книга — про те, як ми сюди дійшли. І куди можемо піти далі.
Структура книги
Частина I. Камінь, що думає — фізика, транзистори, електрика. Чому залізо таке, як воно є, і де межі. - Розділ 1. Троє у лабораторії: як народився транзистор - Розділ 2. Закон, який не був законом: пророцтво Ґордона Мура - Розділ 3. Стіна на 5 гігагерц: чому годинник процесора зупинився - Розділ 4. Привид фон Ноймана: пам’ять, що ніколи не встигає
Частина II. Архітектурний гріх — як процесори стали такими, як є, і чому це проблема. - Розділ 5. Спадок 1978 року: історія x86 - Розділ 6. Повстанці з Кембриджа: ARM і його тиха перемога - Розділ 7. Брехня плоскої пам’яті: кеш, NUMA, і про що мовчать підручники - Розділ 8. Майбутнє, яке не настало: аналогові, нейроморфні, квантові
Частина III. Вавилонська вежа — програмне забезпечення і його нашарування. - Розділ 9. Літо 1969-го: як один відпустковий місяць Кена Томпсона створив Unix - Розділ 10. Примара PDP-11: чому всі мови програмування досі вдають, що живуть у 1974-му - Розділ 11. Linus проти Танненбаума: найважливіший флейм в історії IT - Розділ 12. Чому мов програмування так багато, і чи є з цього вихід
Частина IV. Нова надія — формальна верифікація, мікроядра, і майбутнє. - Розділ 13. Математика в ядрі: що таке формальна верифікація - Розділ 14. seL4: ядро, яке довели - Розділ 15. Забутий ключ: capability-based безпека - Розділ 16. ШІ зустрічає голе залізо: про що ніхто не говорить
Епілог. Що робити тобі, читачу, якщо цей світ тебе зачепив.
Пролог. Один процесор, одна мить
Зараз, коли ти читаєш це речення, у твоєму пристрої відбувається приблизно ось що.
Електрони рухаються крізь мільярди транзисторів розміром у кілька атомів кожен. Процесор виконує близько чотирьох мільярдів операцій на секунду. За той час, поки ти читаєш слово “секунда”, він устигає зробити роботу, яку людина з калькулятором робила б сто років.
Жодна людина у світі не розуміє його повністю.
Це не метафора. Сучасний процесор — це десятки мільярдів транзисторів, операційна система — десятки мільйонів рядків коду, браузер — ще десятки мільйонів. Кожен шар спирається на припущення про шар нижче. Припущення, яких уже давно ніхто не перевіряв.
Коли Лінус Торвальдс писав перше ядро Linux у 1991-му, він думав, що пише курсовий проект. Сьогодні це ядро працює на серверах, які керують ядерними реакторами, лікарнями і соціальними мережами половини людства.
Коли Деніс Рітчі придумував мову C у 1972-му, він проектував її під конкретний комп’ютер — PDP-11 від DEC. Цього комп’ютера немає вже сорок років. А мова C — є, і на ній написано все, що ти використовуєш.
Коли в Intel у 1978-му випускали процесор 8086, їм треба було швидко вийти на ринок, і вони зліпили архітектуру з того, що було. Усі наступні процесори Intel мали вміти запускати код для 8086. Цей код ніхто вже не пише. Але транзистори, які його підтримують, є в кожному Xeon за десять тисяч доларів.
Ось що я маю на увазі під “машиною на глиняних ногах”. Те, на чому сьогодні крутиться цивілізація, збудоване зі старих рішень, прийнятих молодими людьми в гуртожитках і підвалах лабораторій. Рішень, які були правильними на свій час, але які ми тепер не можемо ні прибрати, ні переробити.
Це не катастрофа. Це чудо. Те, що вся ця конструкція працює — дивовижніше за будь-яку піраміду.
Але розуміти її — наш обов’язок. Бо наступний шар будувати нам.
З цього ми й почнемо. З найглибшого, найнижчого шару. З фізики.