Как стать автором
Обновить

Комментарии 65

НЛО прилетело и опубликовало эту надпись здесь

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

в космических системах без дублирования не обходятся, и на земле видимо придётся тоже. Возможно не полностью дублировать, но контроль ошибок как-то вводить. Хотя, проблема вроде уже рассматривалась и ранее: russianelectronics.ru/files/46313/EK_7_2009_12-15.pdf

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


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

Одиночные сбои — это относится к памяти и только к ней
С чего вы взяли? Транзисторы в компбинационной логике ничем не отличаются от транзисторов в памяти и точно так же могут быть уязвимы к попаданиям.

Обойти всю память обычно не проблема.
А вы большой оптимист. Попробуйте например быстро обойти всю конфигурационную память в FPGA.
С чего вы взяли? Транзисторы в компбинационной логике ничем не отличаются от транзисторов в памяти и точно так же могут быть уязвимы к попаданиям.

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


А вы большой оптимист. Попробуйте например быстро обойти всю конфигурационную память в FPGA.

Во‐первых, я сказал «обычно». Во‐вторых, пример некорректен. Для диагностирования вам не нужно обходить память «быстро», вам нужно просто иметь возможность её обходить. Здесь лучше вспомнить, что не все процессоры позволяют напрямую взаимодействовать с кешами. (Возможно, правда, «обычно» не корректно: обычно нам на испытания на радиационную стойкость приходят схемы, где память посмотреть можно. Но нам приходят не все схемы.)




И ещё: судя по статье, CEE воспроизводятся, вам нужно только запустить определённую последовательность инструкций на определённом ядре при определённых условиях, несколько раз, потому что «определённые условия» нельзя легко воспроизвести с нужной точностью. SEU себя так не ведут, если только вы не посылаете специально заряженную частицу в определённое место.

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

событие при этом будет называться не одиночным сбоем (SEU).
Русскоязычный термин «одиночный сбой» — не эквивалент термина SEU, он часто используется для обозначения любых неразрушающих переходных процессов (в том числе SET и ASET) — как противоположность разрушающих «одиночных отказов».
Точный русскояычный эквивалент термина SEU довольно громоздок — «одиночный сбой в запоминающем элементе» или «переключение яченйки памяти под действием отдельной ядерной частицы».

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

Ну и да, озвученная в статье проблема очевидно имеет своей причиной не одиночные эффекты, а недостаточное тестовое покрытие при верификации в процессе проектирования.
т.е. делаем по «эффективной норме» норме 10 нм, чтоб по факту «эффективная норма» была 15-20 нм, т.к. элементы друг друга дублируют или занимаются обслуживанием схемы. Отлично придумано!

Понятно что где-то есть точка равновесия — когда и снижение нормы (увеличение этих нанометров) и дублирование дадут одинаковый эффект (по надёжности или по экономике — это как считать). Дальше этой точки смысла идти не имеет. Только вот какая он сейчас?

Шутка про то, чтобы повторить вызов функции 2 раза подряд, "чтобы наверняка" теперь не шутка?

И обязательно проследить чтобы она выполнилась на разных ядрах.

А потом на разных процессорах…
А потом на процессорах разных поколений…
А потом на процессорах разных производителей…
Как глубока эта кроличья нора?

А потом на разных процессорах…
А потом на процессорах разных поколений…
А потом на процессорах разных производителей…
Вполне реалистичная история в космической индустрии — два дублирующих друг друга бортовых компьютера, независимо разработанных по одному ТЗ разными подрядчиками с применением обязательно разных процессоров. И потом еще эти бортовые компьютеры внутрь спутника надо поставить так, чтобы чипы процессоров и памяти стояли перпендикулярно друг другу.
НЛО прилетело и опубликовало эту надпись здесь
Это не новый подход. Если результат разный — то операция запускается ещё раз. Если разный и во второй раз, то операция признаётся ошибочной и выбрасывается исключение.
НЛО прилетело и опубликовало эту надпись здесь
Есть те, кто это делает. А есть те кто находит причины этого не делать.
НЛО прилетело и опубликовало эту надпись здесь
Ок, два процессора выдали разный результат. А дальше что? )
Если результат разный — повторить все вычисления. Иногда делают дублирование или троирование внутри процессоров поблочно, так легче локализовать проблему и исправить ее (например, сбросив конвейер и выполнив заново не все большое вычисление, а только несколько последних операций), а также радикально меньше вероятность получения трех разных результатов на трех копиях.
НЛО прилетело и опубликовало эту надпись здесь
То есть какой проц данного производителя не возьми, при таких вводных (луна в козероге) — ответ строго такой, а у другого — другой. Во всех прочих случаях норм, а вот в этом сочетании клинч?
Тогда это баг в одном из чипов, и надо лечить баг.
НЛО прилетело и опубликовало эту надпись здесь
Всё ж схема на трёх ядрах одного производителя в этом плане предсказуемее)
Предсказуемее в том плане, что в случае луны в козероге все три ядра сломаются одинаково, и у системы не будет шанса исправить сбой, потому что телеметрия его не поймает?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Распространена, но не всегда применима или не всегда реализуема в разумные сроки в сиду огромной сложности объектов верификации.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Три, наверное? При двух мы можем узнать, что результат вычислений неправильный (и то вероятность одинаковой ошибки есть). А при трёх можно положиться на два совпадающих результата, опять же понимая, что минимальная надёжность такой схемы обусловлена появлением двух одинаковых ошибок в двух блоках.
Не три, два. Если оба совпали — все хорошо. Если не совпали — повторяем вычисления, предполагая, что событие, ставшее причиной случайного сбоя, не повторится.

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

желательно на всех

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

2 раза мало. Нужно хотя бы 3.
Шутка про то, чтобы повторить вызов функции 2 раза подряд, «чтобы наверняка» теперь не шутка?
В аэроспейсе или автомотиве так и делают регулярно.

A deterministic AES mis-computation, which was “selfinverting”: encrypting and decrypting on the same core yielded the identity function, but decryption elsewhere yielded gibberish.

Неправильное вычисление AES: шифрование и дешифрование в одном и том же ядре выполняли функцию идентификации, но дешифрование в другом месте выдавало тарабарщину.

Определенное AES шифрование, не правильное выполненное на одном ярде нивелировано, не правильно выполненным дешифрованием, что позволяет его идентифицировать, ибо дешифрование выполняемое на другом выдает не верные данные.

НЛО прилетело и опубликовало эту надпись здесь

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

Не будет такого. Будпт аналог ECC, иначе это на коммерческом рынке не взлетит. И, по вашему вопросу - зависит от типа нагрузки и требований к инструкциям. Во многих приложениях cpu - вообще не узкое место. Текущий тренд разделения на медленные, глупые, умные и специализированные ядра позволяет оптимизировать как место на кристалле, так и перераспределить транзисторы в пользу планируемого использования.

Вот интересно про ECC: в статье упоминалась инфраструктура Facebook — неужели там нет ECC? Или ошибки происходят заметное количество раз даже с ECC?

ECC - это защита памяти, а не защита вычислений CPU.

Для защиты вычислений есть замечательная вещь, как LockStep. Сделаем 8-ядерный суперскалярный процессор 4-хядерным скалярным, ура!


Заодно заставим снова быдлокодеров писать эффективный код

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

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

Не нужно, в 99,9% случаев результаты будут одинаковые, а в 0.1% случаев можно хоть еще несколько раз повторить.
Специалисты утверждают, что выявленные неполадки не связаны с архитектурой микросхем, и их нельзя обнаружить во время производственных испытаний.

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

Статья о том как видит s/w инженер работу h/w. Но прав ли он на самом деле, чтобы подтвердить, что данных баг не происходил ранее последовательность действий/операций должна быть одинакова, а это невозможно. Всегда есть работа по DDR, обладающий своими случайными задержками. Также возможно изменился паттерн работы процессора, возможно изначально был баг при производстве и внутреннее тестирование не смогло его выявить.

Техпроцесс не получится уменьшать бесконечно, из-за существования физического предела. Например, расстояние между атомами кремния в кристаллической решетке 0,23 нм, да и у других материалов не сильно меньше. И по мере приближения к этому пределу сложность производства будет возрастать, а стабильность работы микрочипов падать.

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

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

Абстрактно - много, а практически всё ограничено строением материалов, атомов, квантовыми эффектами. Электроника подошла к пределам текущего "технологического пакета". Спинтронока, собственно, обещает (уже долго) сокращение сопротивления и потребляемой мощности, но с реальными устройствами там пока ничего не получается.

Дело в том, что чем меньше масштаб системы, тем меньше энергия её разрушения. Если микро-технологии могут работать даже в условиях космической радиации, то современные нано процессоры деградируют под действием обычного солнечного света. Даже если будет создан субатомный процессор, много ли проку от устройства, которое сломается от малейшего внешнего воздействия? — в этой области ещё очень много нерешённых проблем.
Полагаю, что уменьшение техпроцесса в ближайшие годы полностью прекратится, точно также как в свое время остановился рост частоты процессоров.
Лет на десять вперед запас развития точно есть, а может и дальше. До проектных норм 0.5 нм уже четко виден путь.
Весь мир перейдет на нечеткую логику ;)

Особенно в криптографии. Ты ему "Зашифруй мне блок (данные, ключ, IV, что там ещё надо)", а он тебе "Ну примерно 000000...00".

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

В автопроме была такая же ситуация: грузовики на газовых турбинах и легковушки, чуть ли не на реактивных двигателях. А в итоге, самый массовый автомобиль Королла какая-нибудь.

НЛО прилетело и опубликовало эту надпись здесь
Возможно, с какого-нибудь такого сбоя в военном процессоре и начнется восстание машин)
(1.1)^-3=0.751, так при округлении и будет 1
int[(1.1)^-3] = 1
Как это знакомо. Я как раз немного с этой темой пересекаюсь, и уж чего только не насмотрелся чисто статистически. И правда непонятно, что с этим делать в глобальном масштабе — надежность же падает, никакое ECC не спасет, потому что нет гарантий что эти данные не будут посчитаны правильно. Удваивание почти не спасает, утраивание — выправляет ситуацию сильнее, но понятное дело втрое дороже и не решает проблемы до конца. А ведь утраивать надо не только процессоры, память тоже отлично сбоит, значит и ее тоже, всякие флеши тоже сбоят — и их тоже и т.д., т.е. полноценное утроение получается. А еще есть проблема с тотальной невоспроизводимостью сбоев, т.е. анализировать их невозможно никак, поэтому подкладывать соломку приходится наощупь, «по приборам». В отдельных случаях радости добавляет и «легаси», ошибки в котором никто даже не пытается понять и исправить. Вот и получается, что полная errata на какой-нибудь современный x86/arm по объему сопоставима с прочей документацией! Т.е. в современном процессоре есть тысячи документированных (причем порой очень туманно) ошибок, которые хотя бы кто-то видел и пытался исследовать, а сколько еще неизвестных?

p.s. а добавьте сюда неизвестное число подобных же багов в любой ОС — смесь получается реально гремучая и непредсказуемая, про это можно статьи писать…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
ничего, доработают и дальше пойдут до 0.1 нм и меньше. Прогресс не стоит на месте. Чем дальше, тем быстрей развитие

тупой мамкин дрочер поставил дизлайк

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

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

Кроме того, было бы разумным соединить в единую микросхему, по крайней мере, проц и оперативку. Объёмная архитектура позволит это.
К сожалению, не позволит. Объединять две такие технологически разные сущности на одном кристалле очень дорого, а потому экономически нецелесообразно. Продолжат делать, как делают сейчас — многослойные пироги с соединением кристаллов через TSV.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории