Как Вселенная может влиять на наши компьютеры
medium

Как Вселенная может влиять на наши компьютеры

Почему электроника иногда даёт сбой сама по себе

Чаще всего сбои в компьютерах вызваны плохим кодом; или сам пользователь сделал что-то такое, на что программа не была рассчитана. В 99,9% случаев компьютеры работают без ошибок и ровно так, как их запрограммировали. 

Но в очень редких случаях в работу электроники вмешивается космос. Вот об этом рассказ. 

Эта статья основана на видео The Universe is Hostile to Computers. Если знаете английский, посмотрите ролик полностью — в нём много интересных исторических фактов, которых нет в статье.

Ошибка на выборах

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

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

Разбираемся в подсчётах

Чтобы понять, как такое могло произойти, эксперты прогнали программу электронного голосования через все возможные тесты и проверили каждую строчку кода. То же самое сделали с железом — проверили все составные части компьютера, но никаких ошибок не было. Так продолжалось до тех пор, пока кто-то не задумался — почему разница составила именно 4096?

С точки зрения компьютера 4096 — это 2 в 12-й степени. Если записать это число в двоичной системе счисления, внутри процессора оно будет выглядеть так:

0001 0000 0000 0000

Получается, чтобы Мария получила лишние 4096 голосов, достаточно поменять один бит во время обработки голосов:

Было: 0000 0010 0000 0010 (514 голосов)

Стало: 0001 0010 0000 0010 (4610 голосов)

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

Хех. Оказалось, что могут. 

Как меняются биты

Учёные стали искать причины такого поведения процессора и обнаружили, что о похожих случаях сообщали почти все крупные компьютерные компании начиная с 70-х годов. Например, в 1978 году Интел сообщила о проблеме с чипом оперативной памяти — при тесте, когда вся память заполняется единицами, на некоторых местах оказался 0:

Как Вселенная может влиять на наши компьютеры
Фрагмент отчёта тестирования чипа памяти

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

  1. Данные в блоке памяти хранятся в транзисторных ячейках.
  2. Значение (0 или 1) в каждой ячейке зависит от того, есть ли положительный или отрицательный заряд электронов на выводах транзистора.
  3. Радиоактивные частицы, которые испускал уран, могли пройти сквозь выводы транзистора и изменить значение заряда на них.
  4. После этого в транзисторе могло оказаться любое число — 0 или 1, смотря где прошла эта частица.

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

Но с железом и чипами в компьютере из Бельгии всё было в порядке — в них не было радиоактивных частиц. Тогда откуда всё-таки возникла ошибка?

Влияние космоса

По космосу постоянно носятся всевозможные волны и частицы: радиоволны, гамма-излучение, всевозможные электроны, нейтрино и что только не. Большая часть этого хозяйства не долетает до Земли благодаря атмосфере. Но кое-что долетает. Одно из таких излучений — космические лучи (осторожно, Википедия!). Они могут обладать большой энергией и проникать за счёт этого сквозь почти любые предметы, в том числе сквозь толщу атмосферы. 

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

Как часто это происходит

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

На одном стриме пользователь с ником DOTA_Teabag проходил на скорость SuperMario64 на консоли. Во время прыжков он неожиданно переместился гораздо выше и сразу оказался на самой верхней платформе. Чтобы выяснить, что это за баг в игре, он объявил награду в 1000 долларов тому, кто сможет это повторить. За 6 лет никто так и не смог этого сделать. Игрок понял, что каким-то образом в памяти поменялся один бит, и даже написал скрипт, который менял этот бит в определённый момент, — и результат оказался точно таким же, как на стриме.

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

И что теперь с этим делать?

Решения три: использовать алгоритмы для проверки и корректировки ошибок; дублировать данные; защищать критически важные микросхемы от таких лучей.

Алгоритмы поиска и коррекции ошибок работают так: в данные закладывается избыточное количество информации, чтобы система могла сама проверить, всё ли в порядке с данными, а потом перепроверить саму себя. Такие алгоритмы не используются в каждом процессоре, потому что они могут сильно замедлить работу системы — их применяют там, где важна абсолютная надёжность, например в космических аппаратах. Тем более что в космосе нет атмосферы, которая фильтровала бы космические лучи, и там их в тысячи раз больше. 

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

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

Это опасно?

Вообще космические лучи опасны: они ломают клетки, вносят мутации и всячески препятствуют обычной жизни. Но это в космосе. 

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

Так что пока у нас есть атмосфера, можно жить дальше. Но атмосферу на всякий случай лучше не уничтожать. 

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
medium