👽 Как защититься от космических лучей? Часть 3
Две части теории — теперь практика. Если не разобрались с прошлым постом, то я сделал интерактивную симуляцию кода Хэмминга, где можно пощупать всё руками:
🍔 HAMMING 🍔
🎓 А теперь к тому кто вообще это придумал?
А придумал Ричард Хэмминг аж в 1940-е годы. На фото как раз его компьютер Bell Model V — релейный монстр из 9000 реле. Ну как его. Он был одним из многих так сказать.
Реле — это такая катушка, которая притягивает контакт магнитом. Ток есть — замкнут (1). Нет — разомкнут (0). Из таких вот штук была построена вся память и логика. 9000 реле = компьютер. Типа 9000 тумблеров.
Так вот эти все реле залипали, окислялись, пружины в них уставали. В общем вся эта байда и без космических лучей ломалась 2-3 раза в день.
Если попадался хотя бы один битый бит, то машина хотя и обнаруживала сбой, но не знала где. И единственный вариант — начать заново.
В будни за всей этой адской машиной следил оператор саппорта — чинил и перезапускал.
Но Хэмминг был любителем запустить на выходных и пойти расчиливаться. В выходные саппорт спал и не работал. В итоге когда случалась поломка программы Хэмминга тоже переставали работать;
В какой-то момент он ушел с работы на выходные, предварительно поставив рассчет. А когда пришел в понедельник, то увидел, что машина сломалась в самом начал ерасчетов и все выходные ничего не делалала.
Достоверно неизвестно, что точно сказал тогда Хэмминг, но до нам дошла явно очищенная от американского фольклора фраза:
"Damn it, if the machine can detect an error, why can't it locate the position of the error and correct it?"
«Чёрт возьми, если машина может обнаружить ошибку, почему она не может найти её позицию и исправить?»
Уверен, что так он все и сказал. После чего в 1950 году вышла его статья "Error Detecting and Error Correcting Codes". Где и был представлен разобранный нами алгоритм. С тех пор прошло 76 лет.
🖥 Как это работает сейчас?
До недавнего времени проблема космических лучей не сильно всех волновала. Да и на самом деле биты могут флипнуться не только из-за них. Простого электромагнитного воздействия или банально сбоя в работе хардвера будет достаточно.
⚡ Инциденты
Amazon S3 (2008) — один перевёрнутый бит во внутреннем сообщении (без контрольной суммы) распространился по всем серверам. S3 лежал 8 часов.
Super Mario 64 (2013) — на стриме Марио телепортировался от бит-флипа. Значение высоты изменилось на один бит. Награда $1000 за воспроизведение не востребована.
😮 А как сегодня относятся к битым битам?
В 2009 Google опубликовала статью "DRAM Errors in the Wild”. В которой сообщила, что ошибки в памяти встречаются в 10-30x чаще чем думали. ~4000 исправлений на планку в год 😱 8% планок ловили ошибку за год.
В 2021 году плотность чипов так сильно увеличилась, что на DDR5 стали применять уже технологию Error Correction Codes (ECC)
То есть в 2021 году ECC стала де-факто стандартом в оперативке и основана как раз на кодах Хэмминга. Ибо они очень экономичные как по памяти так и по вычислениям. Алгоритм там немного модифицирован и позволяет исправить одну ошибку и отловить если их больше двух.
🅰️ Итого: Какую практическую пользу можно из этого извлечь? Ну помимо отмазки, что в вашей серверной стоит DDR4 и поэтому все так лагает под напором космической энергии.
Думаю, что тут можно извлечь красоту инженерной мысли! Идея Хэмминга безумно элегантная. На таких решениях можно учиться смиряться с несовершенством мира. Да, твои реле могут постоянно переключаться, припаиваться, космические лучи будут уничтожать твои бульки. Но ты всегда можешь сам отследить и восстановить то что поломалось. Это чем-то похоже на способность человека восстанавливаться после порезов.
Короче, вот такая серия постов. Я иногда пишу просто про такие вот инженерные штучки. Надеюсь, что они тут вам не мешаются и вы тоже от них кайфуете 🐈
#инженерныештучки #кодхэмминга #помехоустойчивость
Post #415
464

- ❤ 3
- 🔥 2