Cosmic Rays: ความน่าจะเป็นที่พวกเขาจะมีผลต่อโปรแกรมคืออะไร?


546

อีกครั้งที่ฉันอยู่ในการทบทวนการออกแบบและพบว่ามีความน่าจะเป็นของบางสถานการณ์คือ "น้อยกว่าความเสี่ยงของรังสีคอสมิก" ที่มีผลต่อโปรแกรมและมันเกิดขึ้นกับฉันว่าฉันไม่ได้มีความคิดที่ลึกซึ้งที่สุด ความน่าจะเป็นคือ

"ตั้งแต่ 2 -128คือ 1 จาก 340282366920938463463374607431768211456 ฉันคิดว่าเราเป็นธรรมในการใช้โอกาสของเราที่นี่แม้ว่าการคำนวณเหล่านี้จะถูกปิดด้วยปัจจัยไม่กี่พันล้าน ... เรามีความเสี่ยงมากสำหรับรังสีคอสมิก เชื่อเรา

โปรแกรมเมอร์นี้ถูกต้องหรือไม่? ความน่าจะเป็นที่รังสีคอสมิคชนกับคอมพิวเตอร์และมีผลกระทบต่อการทำงานของโปรแกรมอย่างไร


42
"ลอตเตอรี่ที่ชนะ: ความน่าจะเป็นที่พวกเขาจะส่งผลกระทบต่อโปรแกรมคืออะไร"
kennytm

27
มันขึ้นอยู่กับส่วนที่โปรแกรมถูกประมวลผลและป้องกันได้ดีเพียงใด บนโลกฟลักซ์รังสีคอสมิคต่ำกว่าในอวกาศห้วงลึกหรือใกล้กับวงโคจรของโลก ยกตัวอย่างเช่นกล้องโทรทรรศน์อวกาศฮับเบิลผลิตภาพดิบที่เต็มไปด้วยร่องรอยของรังสีคอสมิก
Adam Hollidge

89
นี่หมายความว่าต่อจากนี้ไปเมื่อมีคนถามอีกครั้งเกี่ยวกับfinallyบล็อกเราจะต้องผ่านการคัดเลือกด้วย "ดำเนินการเสมอยกเว้นในกรณีที่โปรแกรมออกหรือหากได้รับการตีด้วยรังสีคอสมิก"
skaffman

72
ทำงานกับเครื่องตรวจจับอนุภาคต้นแบบเมื่อหลายปีก่อนฉันตั้งโปรแกรมให้พิมพ์ "ouch!" ทุกครั้งที่มันโดนรังสีคอสมิก ช่วงเวลาที่ดี ...
เบต้า

8
ในคำถามที่น่าสนใจที่สุดที่ฉันได้อ่านที่นี่ในขณะที่ เครื่องเปิดตาที่แท้จริง ไว้ใจฉันให้เปิดใหม่
Agnel Kurian

คำตอบ:


308

จากWikipedia :

การศึกษาโดย IBM ในปี 1990 แนะนำว่าโดยทั่วไปแล้วคอมพิวเตอร์จะมีข้อผิดพลาดเกี่ยวกับคอสมิค - เรย์ที่เกิดจากข้อผิดพลาดต่อ RAM ขนาด 256 เมกะไบต์ต่อเดือน [15]

นี่หมายถึงความน่าจะเป็น 3.7 × 10 -9ต่อไบต์ต่อเดือนหรือ 1.4 × 10 -15ต่อไบต์ต่อวินาที หากโปรแกรมของคุณทำงานเป็นเวลา 1 นาทีและมี RAM ขนาด 20 MB แสดงว่ามีโอกาสเกิดความล้มเหลวได้

                 60 × 20 × 1024²
1 - (1 - 1.4e-15)                = 1.8e-6 a.k.a. "5 nines"

การตรวจสอบข้อผิดพลาดสามารถช่วยลดผลพวงจากความล้มเหลวได้ นอกจากนี้เนื่องจากชิปมีขนาดกะทัดรัดมากขึ้นตามที่แสดงความคิดเห็นโดย Joe อัตราความล้มเหลวอาจแตกต่างจากเมื่อ 20 ปีก่อน


10
ที่สำคัญกว่านั้นขนาดของฟีเจอร์ชิปสำหรับซีพียูในปี 1995 อยู่ที่ประมาณ 0.35 µm หรือ 350nm ตอนนี้ 1 / 10th ขนาดนั้นที่ 35nm
Joe Koberg

18
เป็นไปได้ไหมว่าแทนที่จะลดความเสี่ยงขนาดที่ลดลงจะเพิ่มความเสี่ยงเนื่องจากต้องใช้พลังงานน้อยลงในการเปลี่ยนสถานะของแต่ละบิต
Robert

63
ขนาดที่ลดลงจะเพิ่มความเสี่ยงอย่างแน่นอน โปรเซสเซอร์ที่แข็งตัวสำหรับยานอวกาศใช้คุณสมบัติขนาดใหญ่มากเพื่อหลีกเลี่ยงเอฟเฟกต์รังสีคอสมิก
Joe Koberg

22
ไม่ใช่แค่รังสีคอสมิกไอโซโทปกัมมันตรังสีในวัสดุที่ใช้ในชิปเป็นปัญหาที่ใหญ่กว่ามาก ผู้ผลิตมีความยาวมากเพื่อให้แน่ใจว่าซิลิกอนบัดกรีการห่อหุ้มและอื่น ๆ ไม่มีตัวปล่อยอัลฟาหรือเบต้า
Martin Beckett

14
ว้าว! ซึ่งหมายความว่าประมาณ 1 ไบต์ในพีซีของฉันได้รับความเสียหายทุกสองวัน
Stefan Monov

91

เห็นได้ชัดว่าไม่สำคัญ จากบทความนักวิทยาศาสตร์ใหม่ใบเสนอราคาจากคำขอรับสิทธิบัตรของ Intel

"การล่มของคอมพิวเตอร์ Cosmic ray เกิดขึ้นและคาดว่าจะเพิ่มขึ้นตามความถี่ในขณะที่อุปกรณ์ (ตัวอย่างเช่นทรานซิสเตอร์) ลดขนาดในชิปปัญหานี้คาดว่าจะกลายเป็นข้อ จำกัด ที่สำคัญของความน่าเชื่อถือของคอมพิวเตอร์ในทศวรรษหน้า"

คุณสามารถอ่านสิทธิบัตรเต็มได้ที่นี่


7
ทำไมพวกเขาถึงเพิ่มขนาดชิปที่ลดลง? แน่นอนว่าวัตถุที่เล็กกว่ามีโอกาสถูกรังสีน้อยกว่า (เช่นการเปรียบเทียบการขว้างลูกเทนนิสที่กำแพงเพื่อโยนมันลงบนตราประทับ)
โจนาธาน

7
เนื่องจากขนาดของส่วนประกอบลดลงจึงมีความไวต่อรังสีคอสมิคมากขึ้น
ire_and_curses

4
ใช่มีขนาดเล็กกว่ามีแนวโน้มที่จะถูกตีน้อยกว่า แต่มีแนวโน้มว่าการโจมตีจะส่งผลกระทบต่อรัฐ
John Hascall

2
@ire_and_curses [อ้างจำเป็น]
Anko

8
@Anko - เป็นชนิดที่ชัดเจน เนื่องจากส่วนประกอบที่กำหนดมีขนาดเล็กลงจึงต้องการแรงดันไฟฟ้าที่น้อยลงและประจุน้อยลงเพื่อตั้งค่าบิต ทำให้มีความไวต่อการถูกทำลายด้วยพลังงานจากอวกาศ อย่างไรก็ตามนี่คือการอ้างอิงสำหรับคุณ: เนื่องจากอุปกรณ์หน่วยความจำ LSI มีขนาดเล็กลงอุปกรณ์เหล่านี้จึงมีความไวต่อการอ่อนตัวของรังสีนิวเคลียร์
ire_and_curses

55

หมายเหตุ: คำตอบนี้ไม่เกี่ยวกับฟิสิกส์ แต่เกี่ยวกับข้อผิดพลาดของหน่วยความจำเงียบด้วยโมดูลหน่วยความจำที่ไม่ใช่ ECC ข้อผิดพลาดบางอย่างอาจมาจากพื้นที่รอบนอกและบางส่วน - จากพื้นที่ด้านในของเดสก์ท็อป

มีการศึกษาหลายครั้งเกี่ยวกับความล้มเหลวของหน่วยความจำ ECC ในเซิร์ฟเวอร์ฟาร์มขนาดใหญ่เช่น CERN clusters และ Google datacenters ฮาร์ดแวร์ระดับเซิร์ฟเวอร์ที่มี ECC สามารถตรวจจับและแก้ไขข้อผิดพลาดบิตเดียวทั้งหมดและตรวจสอบข้อผิดพลาดหลายบิตจำนวนมาก

เราสามารถสรุปได้ว่ามีเดสก์ท็อปที่ไม่ใช่ ECC จำนวนมาก (และสมาร์ทโฟนมือถือที่ไม่ใช่ ECC) หากเราตรวจสอบเอกสารสำหรับอัตราความผิดพลาดที่แก้ไขได้ ECC (บิตเดียว) เราสามารถทราบอัตราความเสียหายของหน่วยความจำที่เงียบในหน่วยความจำที่ไม่ใช่ ECC

ดังนั้นหากโปรแกรมมีชุดข้อมูลขนาดใหญ่ (หลาย GB) หรือมีอัตราการอ่านหรือการเขียนหน่วยความจำสูง (GB / s หรือมากกว่า) และทำงานเป็นเวลาหลายชั่วโมงเราสามารถคาดหวังได้ถึงบิตเงียบเงียบ ๆ บนฮาร์ดแวร์เดสก์ท็อป อัตรานี้ไม่สามารถตรวจพบได้โดย memtest และโมดูล DRAM นั้นดี

คลัสเตอร์แบบยาวที่ทำงานบนพีซีที่ไม่ใช่ ECC หลายพันเครื่องเช่นการคำนวณแบบกริดทั้งเครือข่ายอินเทอร์เน็ตของ BOINC จะมีข้อผิดพลาดจากบิตการพลิกหน่วยความจำและจากข้อผิดพลาดแบบเงียบของดิสก์และเครือข่าย

และสำหรับเครื่องที่มีขนาดใหญ่กว่า (เซิร์ฟเวอร์นับหมื่น) แม้จะมีการป้องกัน ECC จากข้อผิดพลาดแบบบิตเดียวดังที่เราเห็นในรายงานปี 2012 ของ Sandia อาจมีการเปิดสองครั้งทุกวันดังนั้นคุณจะไม่มีโอกาสทำงานขนาดเต็มขนาน โปรแกรมเป็นเวลาหลายวัน (ไม่มีจุดตรวจปกติและเริ่มต้นใหม่จากจุดตรวจสอบที่ดีในกรณีที่ข้อผิดพลาดสองครั้ง) เครื่องจักรขนาดใหญ่จะได้รับบิตพลิกในแคชและการลงทะเบียน cpu ของพวกเขา (ทริกเกอร์ทั้งสถาปัตยกรรมและภายในเช่นใน ALU datapath) เพราะไม่ใช่ทั้งหมดได้รับการคุ้มครองโดย ECC

PS: ทุกอย่างจะเลวร้ายยิ่งกว่าถ้าโมดูล DRAM ไม่ดี ตัวอย่างเช่นฉันติดตั้ง DRAM ใหม่ลงในแล็ปท็อปซึ่งเสียชีวิตไปหลายสัปดาห์ต่อมา มันเริ่มให้ข้อผิดพลาดของหน่วยความจำมากมาย สิ่งที่ฉันได้รับ: แล็ปท็อปแฮงค์รีบูต linux รัน fsck ค้นหาข้อผิดพลาดในระบบไฟล์รูทและบอกว่าต้องการรีบูตหลังจากแก้ไขข้อผิดพลาด แต่ทุกครั้งที่ทำการรีบูทครั้งต่อไป (ฉันทำประมาณ 5-6 ตัว) ยังมีข้อผิดพลาดที่พบในระบบไฟล์รูท


9
เนื้อหาเพิ่มเติมจาก BH 2011: "Bitsquatting. การหักหลัง DNS โดยไม่มีการเอารัดเอาเปรียบ" media.blackhat.com/bh-us-11/Dinaburg/ ...... แสดงDRAMหลายกิกะไบต์ที่ทันสมัยให้มีประมาณ 10,000-300,000 FIT / Mbit (น้อยกว่า 100 ชั่วโมงระหว่าง ข้อผิดพลาดสำหรับทุก 128MB) กระดาษยังแสดงรายการบทความที่สรุปได้ว่าข้อผิดพลาดที่อ่อนที่สุดส่วนใหญ่มาจากรังสีเกือบทุกกรณี - จากรังสีคอสมิกและบางกรณีจากอัลฟาอิมิตเตอร์ภายในพีซี ผู้เขียน BH ได้ทดลองและได้ 50000 เข้าถึงไปยังโดเมนมี 1 บิตเปลี่ยนจากเว็บไซต์ยอดนิยม
osgx

ความรุ่งโรจน์สำหรับการเพิ่มการศึกษาล่าสุดที่นี่ เนื่องจากการเปลี่ยนแปลงของการลงคะแนน SO และวิธีการสะสมเมื่อเวลาผ่านไปเป็นเรื่องยากที่จะมีการนำเสนอที่ทันสมัยในหัวข้อนี้โดดเด่น (ที่นี่)
Fizz

เรามีปัญหาที่คล้ายกัน เราไม่ได้ทำการศึกษาที่แน่นอน แต่เรามีความผิดพลาดบางอย่างที่เกิดจากการพลิกบิตที่มองเห็นได้ เราตรวจสอบการพลิกบิตเหล่านั้นและมันกลับกลายเป็นว่าพวกเขาอยู่ในส่วนของรหัส เราเปรียบเทียบกับสิ่งที่ควรจะอยู่ที่นั่นและมันก็ดูไม่เหมือนการดัดแปลงโดยเจตนา (เช่นคำสั่งที่ได้ทำให้ไม่สมเหตุสมผล) ในที่สุดเราก็มีแอพพลิเคชั่นที่เรียบง่ายที่เปรียบเทียบความผิดพลาดที่เกิดขึ้นกับรุ่นที่เผยแพร่แล้วและถูกกรองออกไป น่าสนใจที่ฉันคิดว่ากรณีส่วนใหญ่มาจากอิหร่าน, อารเบียและฉันคิดว่าอีกประเทศหนึ่งจากอเมริกาใต้ (จำไม่ได้ตอนนี้)
GiM

2
ในกระดาษของ Google ดูเหมือนว่ากรณีที่ RAM บางส่วนไม่ดีเกี่ยวกับหนึ่งในสามของเครื่องและมากกว่า 8% ของ DIMM ในฝูงบินของเราเห็นข้อผิดพลาดที่แก้ไขได้อย่างน้อยหนึ่งครั้งต่อปี อัตราความผิดพลาดที่แก้ไขได้ของเราต่อ DIMM แปลมาเป็นค่าเฉลี่ย 25,000–75,000 FIT (ความล้มเหลวในเวลาต่อการทำงานหนึ่งพันล้านชั่วโมง) ต่อ Mbit และช่วงมัธยฐาน FIT ที่ 778 - 25,000 ต่อ Mbit (ค่ามัธยฐานสำหรับ DIMM ที่มีข้อผิดพลาด) ในขณะที่การศึกษาล่วงหน้ารายงาน 200-5,000 FIT ต่อ Mbit จำนวนข้อผิดพลาดที่แก้ไขได้ต่อ DIMM นั้นผันแปรสูงโดย DIMM บางตัวประสบข้อผิดพลาดจำนวนมากเมื่อเปรียบเทียบกับข้อผิดพลาดอื่น ๆ
vartec

31

Wikipediaอ้างถึงการศึกษาโดย IBMใน 90s แนะนำว่า "โดยทั่วไปแล้วคอมพิวเตอร์จะพบกับข้อผิดพลาดที่เกิดจากรังสีคอสมิกหนึ่งตัวต่อ 256 เมกะไบต์ของ RAM ต่อเดือน" น่าเสียดายที่การอ้างถึงเป็นบทความใน Scientific American ซึ่งไม่ได้ให้การอ้างอิงเพิ่มเติมใด ๆ โดยส่วนตัวแล้วฉันพบว่าตัวเลขนั้นสูงมาก แต่บางทีข้อผิดพลาดของหน่วยความจำส่วนใหญ่ที่เกิดจากรังสีคอสมิกไม่ก่อให้เกิดปัญหาจริงหรือสังเกตเห็นได้

ในทางกลับกันคนที่พูดถึงความน่าจะเป็นเมื่อพูดถึงสถานการณ์ซอฟต์แวร์โดยทั่วไปจะไม่มีเงื่อนงำอะไรที่พวกเขาพูดถึง


7
ความน่าจะเป็นที่บิตถูกพลิกจะต้องคูณด้วยความน่าจะเป็นของบิตที่มีผลกระทบต่อโปรแกรม ฉันเดาว่าความน่าจะเป็นที่สองนั้นต่ำกว่าที่คุณคิดไว้มาก
Mark Ransom

2
@ Mark: โปรแกรมคอมพิวเตอร์ทั่วไปไม่มีตัวป้องกันข้อบกพร่องในตัว ข้อผิดพลาดบิตเดียวในรหัสโปรแกรมจะมีแนวโน้มมากกว่าที่จะไม่เกิดความผิดพลาดของโปรแกรมหากเรียกใช้รหัสที่ใช้งานไม่ได้
Robert Harvey

75
ใช่ แต่หน่วยความจำส่วนใหญ่มีข้อมูลซึ่งการพลิกจะไม่ใช่แบบ visiblp นั้น
โซล

34
@zoul ฮ่า ๆ ที่ 'visiblp' แต่ถ้า e = 1,100,101 และ p = 1,100,100 แล้วคุณตกเป็นเหยื่อโชคร้ายของ3บิตพลิก!
PaulG

10
@ Paul: หรือหนึ่งสัญลักษณ์นิ้ว
mpen

30

เห็นได้ชัดว่ารังสีคอสมิกทำให้อุปกรณ์อิเล็กทรอนิกส์ในรถยนต์โตโยต้าผิดปกติดังนั้นฉันจะบอกว่าความน่าจะเป็นนั้นสูงมาก :)

รังสีคอสมิคทำให้โตโยต้าเศร้าโศกจริงๆหรือ?


23
"หน่วยงานกำกับดูแลของรัฐบาลกลางกำลังศึกษาว่าการเร่งความเร็วอย่างฉับพลันใน Toyotas เชื่อมโยงกับรังสีคอสมิก" นี่คือเหตุผลที่คุณไม่ควรให้หน่วยงานกำกับดูแลของรัฐบาลกลางมีอำนาจเหนือชีวิตของคุณ

13
ฉันเดาว่าทฤษฏีนี้คือรังสีคอสมิกกำลังหมุนบิตในสมองเก่าทำให้พวกเขาทำงานผิดปกติและกดคันเหยียบผิด
Knox

16
"เห็นได้ชัดว่า"? ฉันจะบอกว่านั่นเป็นสิ่งที่เดาได้ยากในตอนนี้ ฉันเดาได้เองว่าปรากฏการณ์นี้เป็นผลมาจากฝันร้ายเก่าแก่ของระบบสมองกลฝังตัว (ที่จริงแล้วระบบคอมพิวเตอร์ที่ซับซ้อนที่สุด) - สภาพการแข่งขัน
Michael Burr

7
@Knox: ออกหมวกเหล็กวิลาดเก่าของคุณมันมีประโยชน์!

3
มันอาจจะไม่ใช่เรื่องตลก ฉันเคยเห็นสิ่งแปลก ๆ อย่างจริงจังเช่นนั้นเกิดขึ้นมาก่อน ไม่หายากอย่างที่คนส่วนใหญ่คิด
Brian Knoblauch

25

ด้วย ECC คุณสามารถแก้ไขข้อผิดพลาด 1 บิตของ Cosmic Rays เพื่อหลีกเลี่ยง 10% ของกรณีที่รังสีคอสมิคส่งผลให้เกิดข้อผิดพลาดแบบ 2 บิตเซลล์ ECC มักจะมีการแทรกข้ามชิปดังนั้นจึงไม่มีเซลล์สองเซลล์ติดกัน เหตุการณ์รังสีคอสมิกที่มีผลต่อเซลล์สองเซลล์จะส่งผลให้เกิดข้อผิดพลาด 1 บิตที่แก้ไขได้สองข้อ

รัฐอาทิตย์: (หมายเลข 816-5053-10 เมษายน 2545)

โดยทั่วไปแล้วข้อผิดพลาด soft cosmic ray เกิดขึ้นในหน่วยความจำ DRAM ในอัตรา ~ 10 ถึง 100 FIT / MB (1 FIT = 1 อุปกรณ์ล้มเหลวใน 1 พันล้านชั่วโมง) ดังนั้นระบบที่มีหน่วยความจำ 10 GB ควรแสดงเหตุการณ์ ECC ทุกๆ 1,000 ถึง 10,000 ชั่วโมงและระบบที่มี 100 GB จะแสดงเหตุการณ์ทุกๆ 100 ถึง 1,000 ชั่วโมง อย่างไรก็ตามนี่เป็นการประมาณคร่าวๆที่จะเปลี่ยนเมื่อฟังก์ชั่นของเอฟเฟกต์ที่ระบุไว้ข้างต้น


17

ข้อผิดพลาดของหน่วยความจำเป็นจริงและหน่วยความจำ ECC ช่วย หน่วยความจำ ECC ดำเนินการอย่างถูกต้องจะแก้ไขข้อผิดพลาดบิตเดียวและตรวจสอบข้อผิดพลาดบิตคู่ (ลังเลระบบถ้าเช่นข้อผิดพลาดในการตรวจพบ.) คุณสามารถดูจากวิธีการอย่างสม่ำเสมอคนบ่นเกี่ยวกับสิ่งที่ดูเหมือนจะเป็นปัญหาซอฟต์แวร์ที่ได้รับการแก้ไขโดยการเรียกใช้Memtest86และ ค้นพบความทรงจำที่ไม่ดี แน่นอนความล้มเหลวชั่วคราวที่เกิดจากรังสีคอสมิกนั้นแตกต่างจากหน่วยความจำที่ล้มเหลวอย่างต่อเนื่อง แต่มันเกี่ยวข้องกับคำถามที่กว้างขึ้นว่าคุณควรไว้วางใจหน่วยความจำของคุณให้ทำงานอย่างถูกต้องหรือไม่

การวิเคราะห์โดยใช้ขนาดที่พำนัก 20 MB อาจเหมาะสำหรับแอพพลิเคชั่นเล็กน้อย แต่ระบบขนาดใหญ่มักมีเซิร์ฟเวอร์หลายเครื่องที่มีหน่วยความจำหลักขนาดใหญ่เป็นประจำ

ลิงค์ที่น่าสนใจ: http://cr.yp.to/hardware/ecc.html

ลิงก์ Corsair ในหน้าเว็บน่าเสียดายที่ดูเหมือนว่าจะตาย


บิตคอลรังสีคอสมิคอาจไม่กระจายอย่างสม่ำเสมอโดยเฉพาะถ้าเรารวมพายุสุริยะไว้ภายใต้ "ปรากฏการณ์รังสีคอสมิก" หากคุณมีสองบิตขึ้นไปในไบต์เดียวกัน ECC ทั่วไปจะไม่สามารถแก้ไขข้อผิดพลาดได้
tobixen

@tobixen การตรวจจับข้อผิดพลาดสองบิตนั้นดีกว่าการใช้ข้อมูลที่ไม่ดีต่อไป ขั้นตอนต่อไปหลังจาก ECC เป็น Chipkill กับ DIMM มิเรอร์ ...
janm

13

นี่เป็นปัญหาจริงและนั่นคือสาเหตุที่หน่วยความจำ ECC ถูกใช้ในเซิร์ฟเวอร์และระบบฝังตัว และทำไมระบบการบินจึงแตกต่างจากระบบภาคพื้นดิน

ตัวอย่างเช่นโปรดทราบว่าชิ้นส่วนของ Intel ที่กำหนดไว้สำหรับการใช้งาน "ฝังตัว" มักจะเพิ่ม ECC ไปยังแผ่นข้อมูลจำเพาะ Bay Trail สำหรับแท็บเล็ตขาดเนื่องจากจะทำให้หน่วยความจำมีราคาแพงขึ้นเล็กน้อยและอาจช้ากว่า และหากแท็บเล็ตขัดข้องโปรแกรมทุกครั้งในดวงจันทร์สีน้ำเงินผู้ใช้จะไม่สนใจมาก ตัวซอฟต์แวร์เองนั้นมีความน่าเชื่อถือน้อยกว่า HW อยู่ดี แต่สำหรับ SKU ที่มีไว้สำหรับใช้ในเครื่องจักรอุตสาหกรรมและยานยนต์ ECC เป็นสิ่งจำเป็น เนื่องจากที่นี่เราคาดหวังว่า SW จะเชื่อถือได้มากขึ้นและข้อผิดพลาดจากการสุ่มอัปเดตจะเป็นปัญหาที่แท้จริง

ระบบที่ได้รับการรับรองมาตรฐาน IEC 61508 และมาตรฐานที่คล้ายคลึงกันมักจะมีการทดสอบการบู๊ตที่ตรวจสอบว่า RAM ทั้งหมดทำงานได้ (ไม่มีบิตติดอยู่ที่ศูนย์หรือหนึ่ง) รวมถึงการจัดการข้อผิดพลาดที่รันไทม์ที่พยายามกู้คืนจากข้อผิดพลาดที่ตรวจพบโดย ECC และ บ่อยครั้งที่หน่วยความจำเครื่องขัดถูที่ทำหน้าที่อ่านและเขียนหน่วยความจำอย่างต่อเนื่องเพื่อให้แน่ใจว่ามีข้อผิดพลาดเกิดขึ้น

แต่สำหรับซอฟต์แวร์พีซีหลัก? ไม่ใช่เรื่องใหญ่. สำหรับเซิร์ฟเวอร์ที่มีอายุการใช้งานนาน ใช้ ECC และตัวจัดการความผิด หากข้อผิดพลาดที่แก้ไขไม่ได้ฆ่าเคอร์เนลดังนั้นไม่ว่าจะเป็น หรือคุณจะหวาดระแวงและใช้ระบบสำรองที่มีการดำเนินการล็อคขั้นตอนเพื่อที่ว่าหากแกนประมวลผลอันใดอันหนึ่งเสียหายแกนอีกอันก็สามารถเข้ามาแทนที่แกนหลักอันแรกได้


บิตคอลรังสีคอสมิคอาจไม่กระจายอย่างสม่ำเสมอโดยเฉพาะถ้าเรารวมพายุสุริยะไว้ภายใต้ "ปรากฏการณ์รังสีคอสมิก" การระเบิดอย่างกะทันหันอาจทำให้บิตหลาย ๆ ไฟล์อยู่ในไบต์และอัลกอริธึม ECC จะไม่สามารถแก้ไขข้อผิดพลาดได้
tobixen

12

หากโปรแกรมมีความสำคัญต่อชีวิต (โปรแกรมนี้จะฆ่าผู้อื่นหากล้มเหลว) จะต้องมีการเขียนโปรแกรมในลักษณะที่จะทำให้ระบบไม่ปลอดภัยหรือกู้คืนโดยอัตโนมัติจากความล้มเหลวดังกล่าว โปรแกรมอื่น ๆ ทั้งหมด YMMV

Toyotas เป็นจุดในกรณี พูดในสิ่งที่คุณต้องการเกี่ยวกับสายคันเร่ง แต่ไม่ใช่ซอฟต์แวร์

ดูเพิ่มเติมที่http://en.wikipedia.org/wiki/Therac-25


อย่าไปสนใจซอฟต์แวร์สำหรับ throttles เซ็นเซอร์และสายไฟสำหรับคันเร่งเป็นจุดอ่อน เซ็นเซอร์ตำแหน่งคันเร่งมิตซูบิชิของฉันล้มเหลวในการสร้างตัวเลขสุ่ม ... ไม่เร่งความเร็วโดยไม่ได้ตั้งใจ แต่แน่ใจว่าไม่ได้ทำอะไรที่ดีสำหรับส่วนผสมเชื้อเพลิง!
Brian Knoblauch

3
@Brian: ซอฟต์แวร์ที่ดีจะต้องทราบว่าจุดข้อมูลนั้นไม่ต่อเนื่องและสรุปว่าข้อมูลนั้นไม่ดี
Robert Harvey

.. แล้วสิ่งที่ ... ต้องมีข้อมูลที่ดี รู้ดีว่ามันไม่ได้ช่วยอะไรเลย ไม่ใช่สิ่งที่คุณสามารถแก้ไขได้อย่างน่าอัศจรรย์
Brian Knoblauch

3
@Brian: ดีสิ่งหนึ่งคุณสามารถดำเนินการแก้ไขตามความรู้ที่ว่าข้อมูลของคุณไม่ดี คุณสามารถหยุดเร่งตัวอย่างเช่น
Robert Harvey

ใช่คุณสามารถ (และควร) ข้อมูล cheksum สุดยอดไปจบ อย่างไรก็ตามสิ่งนี้จะลดโอกาสของการทุจริตเท่านั้น ลองนึกภาพคำสั่ง "ถูกต้องนี้" ของคุณจะได้รับความเสียหายเล็กน้อยในหน่วยความจำหรือ CPU ลงทะเบียนเมื่อคุณต้องการแยกสาขาไปที่ตัวจัดการข้อผิดพลาด
eckes

11

ฉันเคยตั้งโปรแกรมอุปกรณ์ที่จะบินไปในอวกาศและจากนั้นคุณ (สมมุติไม่มีใครเคยแสดงให้ฉันเห็นกระดาษเกี่ยวกับเรื่องนี้ แต่มันบอกว่าเป็นความรู้ทั่วไปในธุรกิจ) อาจคาดหวังว่ารังสีคอสมิกจะทำให้เกิดข้อผิดพลาดตลอดเวลา


8
เหนือชั้นบรรยากาศสองสิ่งเกิดขึ้น: 1) ฟลักซ์ทั้งหมดสูงกว่า 2) มันมาในรูปแบบของอนุภาคที่หนักและมีพลังมาก (มีพลังงานเพียงพอที่จะพลิกบิตลงในพื้นที่ขนาดเล็ก)
dmckee --- ผู้ดูแลอดีตแมว

สำหรับการอ้างอิงมีหนังสือ (เช่นbooks.google.co.th/books?hl=th&lr=&id=Er5_rzW0q3MC ) การประชุม (เช่นradecs2015.org , seemapld.orgและอื่น ๆ ) และเอกสารมากมายในหัวข้อนี้ . รังสีคอสมิคไม่ใช่เรื่องตลกในอวกาศ พวกเขาเป็นหนึ่งในเหตุผลสำคัญที่ยานอวกาศจำนวนมากใช้คอมพิวเตอร์ชุบแข็งซึ่งส่วนใหญ่มีพลังการประมวลผลของเตาอบเครื่องปิ้งขนมปังสมาร์ทที่ทันสมัย
David Hammen

8

"เหตุการณ์คอสมิคเรย์" ได้รับการพิจารณาว่ามีการแจกแจงที่เหมือนกันในหลายคำตอบที่นี่สิ่งนี้อาจไม่เป็นจริงเสมอไป (เช่นซุปเปอร์โนวา) ถึงแม้ว่า "รังสีคอสมิก" ตามคำจำกัดความ (อย่างน้อยตามวิกิพีเดีย) มาจากนอกโลกฉันคิดว่ามันยุติธรรมที่จะรวมพายุสุริยะในพื้นที่ (อาคาออกมาเป็นหมู่มวลโคโรนาภายใต้ร่มเดียวกันฉันเชื่อว่ามันอาจทำให้หลาย ๆ ช่วงเวลาสั้น ๆ อาจเพียงพอที่จะทำให้เสียหายแม้หน่วยความจำที่เปิดใช้งาน ECC

เป็นที่ทราบกันดีว่าพายุสุริยะนั้นอาจทำให้ระบบไฟฟ้าเสียหาย (เช่นไฟฟ้าดับในควิเบกในเดือนมีนาคม 1989 ) อาจเป็นไปได้ว่าระบบคอมพิวเตอร์อาจได้รับผลกระทบ

ประมาณ 10 ปีก่อนฉันนั่งถัดจากคนอื่นเรานั่งอยู่กับแล็ปท็อปแต่ละเครื่องในช่วงเวลาที่มีสภาพอากาศสุริยะ "พายุ" (นั่งอยู่ในอาร์กติกเราสามารถสังเกตได้ทางอ้อม - ออโรร่า borealis จำนวนมาก จะเห็น) ทันใดนั้น - ในทันทีเดียวกัน - แล็ปท็อปของเราทั้งสองล้มเหลว เขาใช้ OS X และฉันใช้งาน Linux พวกเราทั้งคู่ไม่เคยชินกับแล็ปท็อปที่หยุดทำงาน - เป็นสิ่งที่ค่อนข้างหายากบน Linux และ OS X ข้อผิดพลาดทั่วไปของซอฟต์แวร์สามารถตัดออกได้มากหรือน้อยเนื่องจากเราใช้ระบบปฏิบัติการที่แตกต่างกัน (และไม่เกิดขึ้นระหว่างการกระโดด วินาที) ฉันมาที่เหตุการณ์นี้เพื่อ "รังสีคอสมิก"

ต่อมา "รังสีคอสมิก" ได้กลายเป็นเรื่องตลกภายในที่ทำงานของฉัน เมื่อใดก็ตามที่มีสิ่งใดเกิดขึ้นกับเซิร์ฟเวอร์ของเราและเราไม่สามารถหาคำอธิบายใด ๆ ได้เราจะกล่าวอ้างถึงความผิดของ "รังสีคอสมิค" :-)


7

บ่อยครั้งที่สัญญาณรบกวนอาจทำให้ข้อมูลเสียหายได้ Checksumsใช้ในการต่อสู้ในหลายระดับ ในสายเคเบิลข้อมูลโดยทั่วไปจะมีบิตพาริตี้ที่เดินทางไปพร้อมกับข้อมูล สิ่งนี้ช่วยลดความน่าจะเป็นของการทุจริตได้อย่างมาก จากนั้นในระดับการแยกวิเคราะห์ข้อมูลไร้สาระมักจะถูกละเว้นดังนั้นแม้ว่าความเสียหายบางอย่างจะผ่านบิตพาริตีหรือเช็คซัมอื่น ๆ ในกรณีส่วนใหญ่ก็จะถูกละเว้น

นอกจากนี้ส่วนประกอบบางส่วนได้รับการป้องกันด้วยไฟฟ้าเพื่อป้องกันเสียงรบกวน (อาจไม่ใช่รังสีคอสมิคที่ฉันเดา)

แต่ท้ายที่สุดอย่างที่ผู้ตอบคำถามคนอื่น ๆ บอกไว้มีบิตหรือไบต์เป็นครั้งคราวที่มีสัญญาณรบกวนและมันก็เหลือที่จะมีโอกาสไม่ว่าจะเป็นไบต์ที่สำคัญหรือไม่ กรณีของกรณีที่ดีที่สุดรังสีคอสมิกจะแย่งชิงหนึ่งในบิตที่ว่างเปล่าและไม่มีผลกระทบใด ๆ หรือเกิดปัญหากับคอมพิวเตอร์ (นี่เป็นสิ่งที่ดี แต่กรณีที่เลวร้ายที่สุดดีฉันแน่ใจว่าคุณสามารถจินตนาการ


บิตคอลรังสีคอสมิคอาจไม่กระจายอย่างสม่ำเสมอโดยเฉพาะถ้าเรารวมพายุสุริยะไว้ภายใต้ "ปรากฏการณ์รังสีคอสมิก" หากคุณได้รับสองบิตในไบต์เดียวกันการตรวจสอบบิตพาริตี้จะล้มเหลว บิตหลายอันและอัลกอริธึม ECC อาจจะไม่สามารถแก้ไขข้อผิดพลาดได้
tobixen

5

ฉันได้รับประสบการณ์นี้ - มันไม่ได้ยากสำหรับรังสีคอสมิกที่จะพลิกหนึ่งบิต แต่ก็ไม่น่าเป็นไปได้มากที่คนจะสังเกตเห็นสิ่งนี้

ฉันกำลังทำงานกับเครื่องมือบีบอัดสำหรับตัวติดตั้งในปี 2547 ข้อมูลทดสอบของฉันคือไฟล์การติดตั้ง Adobe บางไฟล์ที่มีขนาดประมาณ 500 MB หรือมากกว่านั้นถูกแตกไฟล์

หลังจากการบีบอัดที่น่าเบื่อและการคลายการบีบอัดเพื่อทดสอบความสมบูรณ์ FC / B แสดงให้เห็นว่าไบต์หนึ่งแตกต่างกัน

ภายในหนึ่งไบต์ MSB ก็พลิกกลับ ฉันพลิกตัวด้วยเช่นกันกังวลว่าฉันมีข้อผิดพลาดบ้า ๆ ที่จะปรากฏภายใต้เงื่อนไขที่เฉพาะเจาะจงมาก - ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มมองหาที่ไหน

แต่มีบางอย่างบอกให้ฉันทำการทดสอบอีกครั้ง ฉันวิ่งแล้วก็ผ่านไป ฉันตั้งค่าสคริปต์เพื่อให้ทดสอบ 5 ครั้งข้ามคืน ในตอนเช้าทั้ง 5 คนผ่านไปแล้ว

นั่นคือการบิตของรังสีคอสมิกแน่นอน


อย่างแน่นอน? เป็นไปได้หรือไม่ที่จะเป็นตัวแปรที่ไม่มีค่าเริ่มต้นซึ่งไม่เคยมีค่าเริ่มต้นที่ไม่ดีในการทดสอบครั้งต่อไป
doug65536

ฉันมักจะคอมไพล์ด้วย W3 หรือ W4 บน VS - นอกจากนี้ Rational Purify ก็ไม่มีข้อบกพร่องของการเรียงลำดับนั้น
rep_movsd

อาขอโทษฉันไม่รู้ว่าตัวเลือกของคอมไพเลอร์และ Rational Purify นั้นผิดพลาดอย่างสิ้นเชิง =)
doug65536

เมื่อพิจารณาว่ารหัสถูกนำไปผลิตและบีบอัดและไม่บีบอัดหลายร้อย GB อย่างถูกต้องไม่มีสัญญาณของข้อผิดพลาดที่คล้ายกัน
rep_movsd

4

คุณอาจต้องการดูฮาร์ดแวร์ Fault Tolerant เช่นกัน

ตัวอย่างเช่น Stratus Technology สร้างเซิร์ฟเวอร์ Wintel ที่เรียกว่า ftServer ซึ่งมี 2 หรือ 3 "เมนบอร์ด" ในขั้นตอนล็อคการเปรียบเทียบผลลัพธ์ของการคำนวณ (สิ่งนี้สามารถทำได้ในยานอวกาศด้วย)

เซิร์ฟเวอร์ Stratus วิวัฒนาการมาจากชิปเซ็ตที่กำหนดเองเพื่อล็อคขั้นตอนที่ backplane

ระบบที่คล้ายกันมาก (แต่ซอฟต์แวร์) คือล็อค VMWare Fault Tolerance ตาม Hypervisor


4

ในฐานะที่เป็นจุดข้อมูลสิ่งนี้เกิดขึ้นกับงานสร้างของเรา:

02:13:00,465 WARN  - In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:133:
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:65: error: use of undeclared identifier '_'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:67: error: use of undeclared identifier 'i'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^

ซึ่งดูเหมือนว่าจะเกิดการพลิกขึ้นเล็กน้อยระหว่างการคอมไพล์ในสถานที่ที่สำคัญมากในไฟล์ต้นฉบับโดยบังเอิญ

ฉันไม่จำเป็นต้องบอกว่านี่คือ "รังสีคอสมิก" แต่อาการตรงกับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.