Комментарии 65
то есть сначала делали ядра с предсказателями ветвления для того чтобы получить суперскалярные процессоры, а теперь наоборот-процессоры будут следить друг за другом?
Одиночные сбои — это относится к памяти и только к ней, и вызываются прилетающими из космоса заряженными частицами. Проблему можно относительно легко воспроизвести — частицы могут прилетать и из ускорителя, есть и другие методы. Проблему легко диагностировать: просто сравните то, что вы записали в память с тем, что там должно быть. Обойти всю память обычно не проблема. Есть и адекватные теории, что именно происходит, когда прилетает частица, и методы подавления (которые не ограничиваются контролем ошибок, просто так обычно дешевле сделать).
CEE — это пока что‐то, что происходит непонятно почему, непонятно где конкретно, и непонятно как диагностировать кроме как запускам одной и той же программы на двух разных процессорах и сравнением результатов. Что покажет наличие CEE в тех частях процессора, которые были задействованы, но не отсутствие.
Одиночные сбои — это относится к памяти и только к нейС чего вы взяли? Транзисторы в компбинационной логике ничем не отличаются от транзисторов в памяти и точно так же могут быть уязвимы к попаданиям.
Обойти всю память обычно не проблема.А вы большой оптимист. Попробуйте например быстро обойти всю конфигурационную память в FPGA.
С чего вы взяли? Транзисторы в компбинационной логике ничем не отличаются от транзисторов в памяти и точно так же могут быть уязвимы к попаданиям.
Транзисторы — да. Но событие при этом будет называться не одиночным сбоем (SEU). Кроме того, именно в процессорах, чтобы попадание в комбинационную логику привело к какой‐то проблеме, нужно попасть именно в тот момент, когда неверный выход будет защёлкнут.
А вы большой оптимист. Попробуйте например быстро обойти всю конфигурационную память в FPGA.
Во‐первых, я сказал «обычно». Во‐вторых, пример некорректен. Для диагностирования вам не нужно обходить память «быстро», вам нужно просто иметь возможность её обходить. Здесь лучше вспомнить, что не все процессоры позволяют напрямую взаимодействовать с кешами. (Возможно, правда, «обычно» не корректно: обычно нам на испытания на радиационную стойкость приходят схемы, где память посмотреть можно. Но нам приходят не все схемы.)
И ещё: судя по статье, CEE воспроизводятся, вам нужно только запустить определённую последовательность инструкций на определённом ядре при определённых условиях, несколько раз, потому что «определённые условия» нельзя легко воспроизвести с нужной точностью. SEU себя так не ведут, если только вы не посылаете специально заряженную частицу в определённое место.
Кроме того, именно в процессорах, чтобы попадание в комбинационную логику привело к какой‐то проблеме, нужно попасть именно в тот момент, когда неверный выход будет защёлкнут.И такая вероятность, судя по имеющимся в изобилии экспериментальным данным, всего на порядок ниже вероятности сбоя в памяти.
событие при этом будет называться не одиночным сбоем (SEU).Русскоязычный термин «одиночный сбой» — не эквивалент термина SEU, он часто используется для обозначения любых неразрушающих переходных процессов (в том числе SET и ASET) — как противоположность разрушающих «одиночных отказов».
Точный русскояычный эквивалент термина SEU довольно громоздок — «одиночный сбой в запоминающем элементе» или «переключение яченйки памяти под действием отдельной ядерной частицы».
Для диагностирования вам не нужно обходить память «быстро», вам нужно просто иметь возможность её обходить.Для диагностирования на испытаниях — да, тут вы правы. Я почему-то прочитал ваше сообщение так, что это можно делать в процессе работы чипа.
Ну и да, озвученная в статье проблема очевидно имеет своей причиной не одиночные эффекты, а недостаточное тестовое покрытие при верификации в процессе проектирования.
Понятно что где-то есть точка равновесия — когда и снижение нормы (увеличение этих нанометров) и дублирование дадут одинаковый эффект (по надёжности или по экономике — это как считать). Дальше этой точки смысла идти не имеет. Только вот какая он сейчас?
Шутка про то, чтобы повторить вызов функции 2 раза подряд, "чтобы наверняка" теперь не шутка?
А потом на разных процессорах…
А потом на процессорах разных поколений…
А потом на процессорах разных производителей…
Как глубока эта кроличья нора?
А потом на разных процессорах…Вполне реалистичная история в космической индустрии — два дублирующих друг друга бортовых компьютера, независимо разработанных по одному ТЗ разными подрядчиками с применением обязательно разных процессоров. И потом еще эти бортовые компьютеры внутрь спутника надо поставить так, чтобы чипы процессоров и памяти стояли перпендикулярно друг другу.
А потом на процессорах разных поколений…
А потом на процессорах разных производителей…
Ок, два процессора выдали разный результат. А дальше что? )Если результат разный — повторить все вычисления. Иногда делают дублирование или троирование внутри процессоров поблочно, так легче локализовать проблему и исправить ее (например, сбросив конвейер и выполнив заново не все большое вычисление, а только несколько последних операций), а также радикально меньше вероятность получения трех разных результатов на трех копиях.
То есть какой проц данного производителя не возьми, при таких вводных (луна в козероге) — ответ строго такой, а у другого — другой. Во всех прочих случаях норм, а вот в этом сочетании клинч?Тогда это баг в одном из чипов, и надо лечить баг.
Входные параметры функции почтой отправляются трём независимым компьютерам с разных стран, а при рассогласовании результатов они обсуждают процесс получения результата в группе по вызову этой функции анонимном чате.
желательно на всех
Шутка про то, чтобы повторить вызов функции 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 - вообще не узкое место. Текущий тренд разделения на медленные, глупые, умные и специализированные ядра позволяет оптимизировать как место на кристалле, так и перераспределить транзисторы в пользу планируемого использования.
Нужна система обнаружения и исправления ошибок, не только во внешней памяти, но и в регистрах процессора. Для космического применения такие процессоры уже давно делают.
Специалисты утверждают, что выявленные неполадки не связаны с архитектурой микросхем, и их нельзя обнаружить во время производственных испытаний.
Два основных варианта. Процессор начал деградировать во время работы или же тесты на производстве проморгали сбойный блок.
Как вариант выявления таких проблем: повторный запуск тестов в эксплуатации при разных температурах/частотах/питающих напряжениях процессора. Так же входной контроль тем же способом, мало ли на фабрике недотестировали.
Статья о том как видит s/w инженер работу h/w. Но прав ли он на самом деле, чтобы подтвердить, что данных баг не происходил ранее последовательность действий/операций должна быть одинакова, а это невозможно. Всегда есть работа по DDR, обладающий своими случайными задержками. Также возможно изменился паттерн работы процессора, возможно изначально был баг при производстве и внутреннее тестирование не смогло его выявить.
Полагаю, что уменьшение техпроцесса в ближайшие годы полностью прекратится, точно также как в свое время остановился рост частоты процессоров.
Развитие микроэлектроники пойдет каким-то другим путем, скорее всего за счет все большего распараллеливания вычислительных процессов, а также создания блоков с узкой специализацией, например ядер для целочисленных или тензорных вычислений, аппаратных кодеков для обработки изображений и видео и т.д.
Каждый раз одно и то же, дальше есть спинтроника, магноника и вообще там внизу еще много места
Абстрактно - много, а практически всё ограничено строением материалов, атомов, квантовыми эффектами. Электроника подошла к пределам текущего "технологического пакета". Спинтронока, собственно, обещает (уже долго) сокращение сопротивления и потребляемой мощности, но с реальными устройствами там пока ничего не получается.
Полагаю, что уменьшение техпроцесса в ближайшие годы полностью прекратится, точно также как в свое время остановился рост частоты процессоров.Лет на десять вперед запас развития точно есть, а может и дальше. До проектных норм 0.5 нм уже четко виден путь.
Данная ситуация есть результатом конкурентных гонок производителей. Вытолкаем на рынок продукт, а потом обновлениями долижем. В процессорах — микрокодом, телефоны, мудрые дома — прошивками. А не долижем — вытолкаем что-то новое и маркетингом захвалим его. А технический долг никто не отменяет.
Дальше будет веселее.
int[(1.1)^-3] = 1
p.s. а добавьте сюда неизвестное число подобных же багов в любой ОС — смесь получается реально гремучая и непредсказуемая, про это можно статьи писать…
Кроме того, было бы разумным соединить в единую микросхему, по крайней мере, проц и оперативку. Объёмная архитектура позволит это.
Это гиганский рост производительности.Никакого роста производительности там не будет, потому что все эти транзисторы нельзя будет включать одновременно из-за невозможности отводить тепло. Собственно, это проблема уже вовсю присутствует и в одномерных чипах.
Кроме того, было бы разумным соединить в единую микросхему, по крайней мере, проц и оперативку. Объёмная архитектура позволит это.К сожалению, не позволит. Объединять две такие технологически разные сущности на одном кристалле очень дорого, а потому экономически нецелесообразно. Продолжат делать, как делают сейчас — многослойные пироги с соединением кристаллов через TSV.
Микрочипы становятся непредсказуемыми по мере уменьшения техпроцесса