นี่คือความคิดและความคิดบางอย่าง:
ใช้ ROM อย่างสร้างสรรค์ยิ่งขึ้น
เก็บทุกสิ่งที่คุณสามารถทำได้ใน ROM แทนที่จะคำนวณสิ่งต่าง ๆ ให้เก็บตารางการค้นหาใน ROM (ตรวจสอบให้แน่ใจว่าคอมไพเลอร์ของคุณกำลังส่งออกตารางค้นหาของคุณไปยังส่วนอ่านอย่างเดียว! พิมพ์ที่อยู่หน่วยความจำที่รันไทม์เพื่อตรวจสอบ!) จัดเก็บตารางเวกเตอร์ขัดจังหวะของคุณใน ROM แน่นอนเรียกใช้การทดสอบบางอย่างเพื่อดูว่า ROM ของคุณเชื่อถือได้อย่างไรเมื่อเปรียบเทียบกับ RAM ของคุณ
ใช้ RAM ที่ดีที่สุดของคุณสำหรับสแต็ก
SEUs ในสแต็กน่าจะเป็นแหล่งที่มาของการล่มมากที่สุดเพราะเป็นที่ที่สิ่งต่าง ๆ เช่นตัวแปรดัชนีตัวแปรสถานะที่อยู่ผู้ส่งคืนและพอยน์เตอร์ที่หลากหลาย
ใช้งานตัวจับเวลา timer และ watchdog
คุณสามารถเรียกใช้รูทีน "การตรวจสุขภาพจิต" ทุกครั้งที่มีการติ๊กติ๊กรวมถึงการเฝ้าระวังเป็นประจำเพื่อจัดการกับการล็อคระบบ รหัสหลักของคุณสามารถเพิ่มตัวนับเป็นระยะเพื่อระบุความคืบหน้าและชุดตรวจสอบการมีสติสามารถทำให้มั่นใจได้ว่าสิ่งนี้เกิดขึ้น
ใช้รหัสแก้ไขข้อผิดพลาดในซอฟต์แวร์
คุณสามารถเพิ่มความซ้ำซ้อนในข้อมูลของคุณเพื่อให้สามารถตรวจจับและ / หรือแก้ไขข้อผิดพลาด สิ่งนี้จะเพิ่มเวลาในการประมวลผลซึ่งอาจปล่อยให้ตัวประมวลผลสัมผัสกับรังสีเป็นเวลานานขึ้นซึ่งจะเป็นการเพิ่มโอกาสของข้อผิดพลาดดังนั้นคุณต้องพิจารณาการแลกเปลี่ยน
จำแคช
ตรวจสอบขนาดของแคช CPU ของคุณ ข้อมูลที่คุณเข้าถึงหรือแก้ไขเมื่อเร็ว ๆ นี้อาจอยู่ในแคช ฉันเชื่อว่าคุณสามารถปิดการใช้งานแคชได้อย่างน้อย (โดยมีค่าใช้จ่ายสูง) คุณควรลองทำสิ่งนี้เพื่อดูว่าแคชมีความอ่อนไหวต่อ SEU อย่างไร หากแคชนั้นยากกว่า RAM คุณสามารถอ่านและเขียนข้อมูลที่สำคัญเป็นประจำเพื่อให้แน่ใจว่าแคชนั้นอยู่ในแคชและนำ RAM กลับเข้าบรรทัด
ใช้เครื่องมือจัดการข้อบกพร่องของหน้าอย่างชาญฉลาด
หากคุณทำเครื่องหมายหน้าหน่วยความจำว่าไม่ปรากฏอยู่ CPU จะออกข้อบกพร่องของหน้าเมื่อคุณพยายามเข้าถึง คุณสามารถสร้างตัวจัดการข้อบกพร่องของเพจซึ่งทำการตรวจสอบก่อนที่จะทำการร้องขอการอ่าน (ระบบปฏิบัติการ PC ใช้สิ่งนี้เพื่อโหลดหน้าเว็บที่ถูกสลับไปยังดิสก์อย่างโปร่งใส)
ใช้ภาษาแอสเซมบลีสำหรับสิ่งที่สำคัญ (ซึ่งอาจเป็นทุกอย่าง)
ด้วยภาษาแอสเซมบลีคุณรู้ว่ามีอะไรอยู่ในรีจิสเตอร์และอะไรอยู่ในแรม คุณรู้ว่าหน่วยความจำซีพียูนั้นใช้ตารางอะไรเป็นพิเศษและคุณสามารถออกแบบสิ่งต่าง ๆ ในทางอ้อมเพื่อลดความเสี่ยง
ใช้ objdump
เพื่อดูภาษาแอสเซมบลีที่สร้างขึ้นจริงและคำนวณจำนวนรหัสของรูทีนแต่ละครั้งที่ใช้
หากคุณใช้ระบบปฏิบัติการขนาดใหญ่เช่น Linux คุณจะต้องพบปัญหา มีความซับซ้อนมากมายและหลายสิ่งหลายอย่างที่ผิดพลาด
จำไว้ว่ามันเป็นเกมแห่งความน่าจะเป็น
ผู้วิจารณ์กล่าวว่า
รูทีนทุกครั้งที่คุณเขียนเพื่อตรวจจับข้อผิดพลาดจะต้องล้มเหลวจากสาเหตุเดียวกัน
ในขณะนี้เป็นจริงโอกาสของข้อผิดพลาดใน (พูด) 100 ไบต์ของรหัสและข้อมูลที่จำเป็นสำหรับรูทีนการตรวจสอบการทำงานอย่างถูกต้องมีขนาดเล็กกว่าโอกาสของข้อผิดพลาดที่อื่น หาก ROM ของคุณน่าเชื่อถือและรหัส / ข้อมูลเกือบทั้งหมดเป็น ROM จริงๆราคาของคุณจะดีขึ้นกว่าเดิม
ใช้ฮาร์ดแวร์ที่ซ้ำซ้อน
ใช้การตั้งค่าฮาร์ดแวร์ที่เหมือนกัน 2 ชุดขึ้นไปพร้อมรหัสที่เหมือนกัน หากผลลัพธ์ต่างกันการรีเซ็ตควรเริ่มต้นขึ้น ด้วยอุปกรณ์ 3 เครื่องขึ้นไปคุณสามารถใช้ระบบ "การลงคะแนน" เพื่อพยายามระบุว่าอุปกรณ์ใดถูกบุกรุก