У меня есть идея о том, как предотвратить однократное переворачивание (из-за космического излучения или аналогичного события, вызванного извне) из-за того, что перечисления (перечисление) изменяются от одного определенного значения до другое определенное значение относительно простым способом. Проще говоря, каждое значение должно иметь четное количество единиц, двоичный разговор. Если один щелкнуть, перечисление будет нечетным и гарантированно не будет соответствовать ни одному другому перечислению.Как создать набор перечислений с четным числом единиц
Я не уверен, как на самом деле «сгенерировать» такую последовательность, чтобы ее можно использовать в качестве значений перечисления, поскольку эти значения должны быть константой времени компиляции. Макрофункция, возвращающая элемент n: th в наборе, будет работать отлично.
Первые несколько чисел в последовательности будут 0 (000), 3 (011), 5 (101), 6 (110). Я думаю, вы поняли эту идею.
Ответы на неперечисление (не компилируемое время) оцениваются, так как это может помочь мне понять, как это сделать сам.
Чтобы сделать себе ясно, что я хочу макрос, генерирующий п: е чисел в перечислении с четным числом единиц в двоичных разрядах, подобных макросы, порождающих последовательность fibbonachi. Самый младший бит по существу является битом четности.
Большая часть моей памяти защищена аппаратными средствами ECC, а кеш L1 является одним из исключений. Одна бит-ошибка в L1 была измерена как раз каждые 10000 часов, что достаточно хорошо видно из моих требований.
VRAM однако не защищен. Там у меня в основном RGB (A) растровый, несколько растровых растровых объектов (например, трафарет) и некоторая геометрия. Растровый RGB довольно нечувствителен к бит флип, поскольку он используется только для визуализации. Ошибочная геометрия в целом очень заметна, очень редка (несколько килобайт) и по дизайну должна быть разрешена путем перезагрузки, вызванной пользователем.
Для бинарных ошибок в размере 4096x4096x8 бит (~ 16 МБ) в моей среде примерно раз в 8 часов для средней космической радиации, чаще всего во время солнечных бурь. На мой взгляд, это не так уж плохо, но мне бы не хотелось заполнять бумажную работу, подтверждающую моих офицеров, почему это прекрасно в моем приложении, и каждый из них использует данные трафарета, независимо от того, как используются данные. Если иметь значение бита четности в значении трафарета, я бы смог обнаружить большинство ошибок и, если необходимо, повторно сгенерировать трафарет, надеясь получить лучшие результаты. Трафарет может быть сгенерирован менее чем за секунду, поэтому риск ошибок, возникающих дважды подряд, считается низким.
Так что, в основном, создавая набор перечислений с четностью, я уклоняюсь от пули текущей и будущей работы с документами и исследованиях относительно того, как это может повлиять на мое приложение и другие.
и что, если два бита получить переворачивается? мы здесь не для разработки вашей системы/кода для вас. Мы исправим то, что вы написали. все остальное просто мы делаем вашу работу за вас. –
Подумайте о комбинациях: все возможные 2 бита из 16; то все возможные 4 бита из 16; 6/16; 8/16 и т. Д. –
Я не вижу смысла в этом методе, потому что он не обеспечивает механизм для восстановления перечисления после того, как бит был перевернут; если вы видите '001' его двусмысленным, должно ли оно быть' 0', '3' или' 5' – vu1p3n0x