เราจะมั่นใจได้อย่างไรว่าคอมพิวเตอร์จะไม่เปลี่ยน 0 เป็น 1 โดยไม่ตั้งใจ


63

ฉันได้อ่านเล็กน้อยเกี่ยวกับการก่อสร้างของดิจิตอลคอมพิวเตอร์ใน Shocken / นิสันของ: องค์ประกอบของระบบคอมพิวเตอร์ แต่หนังสือเล่มนี้บอกว่าไม่มีอะไรเกี่ยวกับด้านไฟฟ้าบางอย่างในคอมพิวเตอร์ตัวอย่างเช่นมันมักจะบอกว่า 0 และ 1 ถูกแทนด้วยแรงดันไฟฟ้าถ้าแรงดันไฟฟ้าอยู่ในช่วง [0, 0.9) นั่นก็คือ 0 ถ้าแรงดันไฟฟ้าคือ ในช่วง [0.9, 1.5), แล้วมันคือ 1 (แรงดันไฟฟ้าอาจเปลี่ยนแปลงได้, ฉันแค่ยกตัวอย่าง)

แต่ฉันไม่เคยอ่านสิ่งที่ทำให้แรงดันไฟฟ้า "ดี" ในลักษณะที่ 0 ไม่สามารถกลายเป็น 1 โดยไม่ตั้งใจเนื่องจากความผันผวนของไฟฟ้า [1] ภายในคอมพิวเตอร์ บางทีอาจเป็นไปได้ที่แรงดันไฟฟ้าจะอยู่ใกล้ 0.9 มากแล้วจะทำอย่างไรเพื่อหลีกเลี่ยงให้มันผ่านเกณฑ์?

[1]: หากมีอยู่


7
กระแสไม่เคยอยู่ใกล้ 0.9 มากนักเนื่องจากไม่มีอะไรทำให้กระแสนี้อยู่ใกล้ 0.9 มาก
user253751

7
เพราะสิ่งต่าง ๆ ถูกออกแบบมาเพื่อไม่ให้กระแสออกมาใกล้มาก 0.9 คุณอาจถามว่า "ฉันมีหลักฐานเชิงประจักษ์ที่ชัดเจนว่าแล็ปท็อปของฉันไม่ได้ถูกเรียกเก็บเงิน 50 gigavolts; ทำไมถึงไม่ได้" เพียงเพราะไม่มีเหตุผลมันจะเป็น
user253751

13
Nitpick: ตรรกะดิจิทัลส่วนใหญ่ใช้แรงดันไฟฟ้าไม่ใช่กระแสเพื่อแสดงสถานะโลจิคัล
duskwuff

11
หลักฐานพอสังเขป: ในปี 2554 ฉันมีการแลกเปลี่ยนไฟล์ในฮาร์ดดิสก์ที่ทำงานได้ดีเป็นเวลา 5 ปี
PlasmaHH

7
สวิตช์อุบัติเหตุเหล่านี้สามารถใช้ประโยชน์ได้ คำอธิบายของ Googleเป็นกรณีที่น่าสนใจสำหรับเรื่องนี้ แน่นอนว่าการรักษาความปลอดภัยจะมีความปลอดภัยมากขึ้นเมื่อ API ของ "Set bit X เป็น 1" เป็น "Set bit X เป็น 1 และบางครั้งก็ตั้งค่า Y เป็น 1 โดยไม่ตั้งใจ" สิ่งนี้กลายเป็นเรื่องธรรมดามากในกรณีของการโอเวอร์คล็อกเครื่อง ฉันจำได้ว่าหนึ่ง บริษัท เพิ่มการคำนวณจำนวนมาก (ทุกเฟรม) พร้อมผลลัพธ์ที่ทราบเพื่อดูว่าฮาร์ดแวร์เชื่อถือได้เพียงพอที่จะเรียกใช้เกมหรือไม่
ไบรอัน

คำตอบ:


100

มันมักจะบอกว่า 0 และ 1 ถูกแทนด้วยแรงดันถ้าแรงดันอยู่ในช่วง [0, 0.9) แล้วมันคือ 0 ถ้าแรงดันอยู่ในช่วง [0.9, 1.5) แล้วมันคือ 1 ( แรงดันไฟฟ้าอาจแตกต่างกันฉันแค่ยกตัวอย่างเท่านั้น)

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

ตัวอย่างเช่น 5V CMOS ตรรกะจะส่งออก 0-0.2V สำหรับตรรกะต่ำและ 4.7-5V สำหรับตรรกะสูงและจะยอมรับอย่างต่อเนื่องภายใต้ 1.3V ต่ำหรืออะไรก็ตามที่สูงกว่า 3.7V สูง นั่นคือมีระยะขอบที่แน่นกว่าของเอาต์พุตมากกว่าอินพุตและมีช่องว่างขนาดใหญ่ที่เหลือระหว่างแรงดันซึ่งอาจใช้สำหรับสัญญาณโลจิคัลต่ำ (<1.3V) และที่อาจใช้สำหรับโลจิคัลสูง (> 3.7V) . ทั้งหมดนี้จัดทำขึ้นเป็นพิเศษเพื่อให้เสียงดังและเพื่อป้องกันการสลับโดยไม่ตั้งใจซึ่งคุณกำลังอธิบาย

ต่อไปนี้เป็นภาพที่แสดงถึงเกณฑ์สำหรับความหลากหลายของมาตรฐานตรรกะซึ่งฉันได้ยืมจากinterfacebus.com :

เกณฑ์ระดับตรรกะ] [1]

แต่ละคอลัมน์แสดงถึงหนึ่งมาตรฐานตรรกะและแกนตั้งคือแรงดัน นี่คือความหมายของแต่ละสี:

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

4
คำตอบที่ดีแม้ว่าฉันคิดว่ามันอาจจะสมบูรณ์กว่า: คุณครอบคลุมเฉพาะการป้องกัน (หรือมากกว่าการป้องกัน) เสียง มีกลไกอื่น ๆ อีกมากมายที่รับผิดชอบต่อข้อผิดพลาดทางดิจิตอลและมีวิธีการป้องกันอีกมากมาย สิ่งที่ดีคือผมไม่ได้ครอบคลุมภูมิคุ้มกันให้กับเสียงในคำตอบของฉัน :)
นายMystère

1
@ MisterMystèreนั่นเป็นความจริง! แม้ว่าการแก้ไขข้อผิดพลาดเป็นหัวข้อใหญ่มาก แต่ฉันไม่สามารถครอบคลุมทั้งหมดได้ในคำตอบเดียว
duskwuff

1
@ MisterMystère: "เสียง" เป็นคำที่ครอบคลุมแหล่งที่มาของข้อผิดพลาดสุ่มทุกชนิด ตัวอย่างการรบกวน EM และรังสีคอสมิกของคุณตกอยู่ในหมวดหมู่ของ "เสียงรบกวน" ได้ดี สาเหตุอื่นของข้อผิดพลาดทางดิจิตอลคือสาเหตุที่กำหนดขึ้นมาซึ่งเราเรียกว่า "บั๊ก" แต่คำถามนี้เกี่ยวกับข้อผิดพลาดโดยบังเอิญเท่านั้น
Ben Voigt

ในสัญลักษณ์แสดงหัวข้อย่อยที่สามของคุณฉันเชื่อว่าคุณมีสีหรือตรรกะเปลี่ยน สีชมพูควรต่ำและสีน้ำเงินควรสูง
Guill

@Guill Huh? พื้นที่สีชมพูอยู่เหนือ V_T ดังนั้นจึงไม่สามารถถือว่าเป็นค่าตรรกะที่สูงได้
duskwuff

65

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

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

คำถามคือคุณต้องการให้ระบบของคุณเชื่อถือได้แค่ไหน? ดาวเทียมซึ่งฝังไว้ในระบบคอมพิวเตอร์ที่น่าเชื่อถือที่สุดที่มีอยู่บางครั้งก็ใช้วิธีข้ามความซ้ำซ้อนของระบบที่ไม่เหมือนกันเช่นเดียวกับการโหวต: คอมพิวเตอร์สามเครื่องที่ต่างกันใช้อัลกอริทึมเดียวกันที่เข้ารหัสโดยสามคนที่แตกต่างกัน ของคอมพิวเตอร์นั้นให้ผลลัพธ์ที่แตกต่างจากอีกสองอันมันจะถูกรีสตาร์ท (และหากเกิดขึ้นอีกครั้งแยกต่างหาก) แต่อีกครั้งหากคอมพิวเตอร์สองเครื่องมีความผิดพลาดในเวลาเดียวกันคอมพิวเตอร์ที่ผิดจะถูกรีสตาร์ท / แยก โดยปกติแล้ว "cold redundancy" ก็เพียงพอแล้ว: มีการใช้วงจรหลักและวงจรรองวงจรหลักจะทำงานจนกว่าจะตรวจพบข้อผิดพลาดโดยวงจรตรวจสอบ (ไม่ป้องกัน) และวงจรรองถูกสลับหากเป็นเพียงข้อผิดพลาด ในแรม รหัสสามารถเรียกใช้ใหม่เพื่อรีเฟรชข้อมูล คุณต้องตัดสินใจอย่างชาญฉลาดว่าจะลากเส้นที่ไหนมันเป็นไปไม่ได้ที่จะสร้างวงจรตรวจจับข้อผิดพลาดที่น่าเชื่อถือ 100%

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


2
ฉันไม่แน่ใจว่าคุณตั้งใจจะเขียน 'วงจรอุบาทว์' แต่ 'วงหนืด' ฟังดูตลกไม่แพ้กัน
svavil

1
จริงๆแล้วมันเป็นวงกลม viscious แต่วงกลมหนืดทำให้ฉันหัวเราะ :)
นายMystère

1
ใช้เวลาเพียงล็อก n บิตเพื่อให้สามารถค้นหาและแก้ไขข้อผิดพลาดบิตเดียวในบิต n
Thorbjørn Ravn Andersen

1
สิ่งนี้ทำให้ฉันนึกถึงคำถามล่าสุดเกี่ยวกับการเขียนโปรแกรมเพื่ออธิบายข้อผิดพลาดของฮาร์ดแวร์ในคอมพิวเตอร์ที่สัมผัสกับสารกัมมันตภาพรังสี: stackoverflow.com/questions/36827659/…
Pharap

ฉันไม่รู้เกี่ยวกับสิ่งดาวเทียมที่ 'กลุ่ม' สามกลุ่ม (หรือมากกว่า) กำลังเข้ารหัสสิ่งเดียวกันในวิธีที่ต่างกัน ฟังดูเจ๋ง :)
kalmanIsAGameChanger

33

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

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

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

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

เราเห็นอารมณ์เสียบนพื้นผิว เมมโมรี่สติ๊ก ( DRAM ) ใด ๆ ที่คุณซื้อมี FIT, Failures In Time และชิปใด ๆ ที่มี RAM อยู่ (โปรเซสเซอร์ทั้งหมดและอื่น ๆ อีกมากมาย) จะมีข้อมูลจำเพาะ FIT เช่นกัน (สำหรับบล็อก RAM (SRAM)) RAM มีความหนาแน่นมากกว่าและใช้ทรานซิสเตอร์ขนาดเล็กกว่าดังนั้นจึงมีความอ่อนไหวต่อการทำให้เสียสร้างขึ้นภายในหรือภายนอก เวลาส่วนใหญ่ที่เราไม่ได้สังเกตหรือดูแลเป็นหน่วยความจำที่เราใช้สำหรับข้อมูลการดูวิดีโอ ฯลฯ ถูกเขียนอ่านและไม่ได้ใช้อีกครั้งก่อนที่มันจะนั่งนานพอที่จะอารมณ์เสีย หน่วยความจำบางอย่างเช่นโปรแกรมหนึ่งที่ค้างอยู่หรือเคอร์เนลมีความเสี่ยงมากกว่า แต่เราคุ้นเคยกับแนวคิดที่เพิ่งรีบูตเครื่องคอมพิวเตอร์ของเราหรือรีเซ็ต / รีบูตโทรศัพท์ของเรา (โทรศัพท์ / ยี่ห้อบางยี่ห้อที่คุณต้องถอดแบตเตอรี่ออกเป็นระยะ) อารมณ์เสียหรือซอฟต์แวร์ที่ไม่ดีหรือชุดค่าผสมเหล่านี้หรือไม่

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

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

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

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

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

จากนั้นก็มีการเชื่อมต่อระหว่างชิปหรือบอร์ดและสิ่งเหล่านั้นอาจมีปัญหาเช่นกันและมีเวลาและความพยายามมากมายในการสร้างมาตรฐานและการออกแบบบอร์ด ฯลฯ เพื่อลดข้อผิดพลาดบนอินเทอร์เฟซเหล่านั้น USB , แป้นพิมพ์, เมาส์, HDMI , SATAและอื่น ๆ รวมถึงร่องรอยทั้งหมดบนกระดาน ในและนอกกระดานคุณมีปัญหา crosstalk; อีกครั้งมีเครื่องมือมากมายถ้าคุณใช้และประสบการณ์ในการหลีกเลี่ยงปัญหาตั้งแต่แรก แต่ก็เป็นอีกวิธีหนึ่งที่เราอาจไม่เห็นคนและศูนย์มีส่วนร่วมอย่างเต็มที่

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

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

คุณผลักดันเหล่านั้นไปยังระยะขอบเช่นกัน และโดยทั่วไปจะได้รับความรู้สึกอบอุ่นที่คลุมเครือว่าการออกแบบนั้นโอเคที่จะเริ่มผลิต JTAG / ขอบเขตการสแกนใช้เพื่อเรียกใช้รูปแบบการสุ่มผ่านชิประหว่างแต่ละสถานะแลตช์เพื่อดูเส้นทางการผสมเป็นของแข็งสำหรับการออกแบบ และในกรณีที่มีข้อกังวลอาจมีการทดสอบการใช้งานโดยตรง การทดสอบเพิ่มเติมของซิลิคอนตัวแรกและอาจเป็นการทดสอบแบบสุ่มเพื่อให้แน่ใจว่าผลิตภัณฑ์นั้นดี หาก / เมื่อความล้มเหลวเกิดขึ้นนั่นอาจทำให้คุณกลับไปทดสอบการใช้งานได้มากขึ้นในสายการผลิต มันขึ้นอยู่กับสถิติ / เปอร์เซ็นต์เป็นอย่างมาก 1/1000000 คนที่ไม่ดีออกไปอาจไม่เป็นไรหรือ 1/1000 หรืออะไรก็ตาม ขึ้นอยู่กับว่าคุณคิดว่าคุณจะผลิตชิปนั้นมากแค่ไหน

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


4
ย่อหน้าแรกของคุณทำให้ดูเหมือนว่าจะไม่มีปัญหาเกี่ยวกับสภาพอากาศในอวกาศอีกต่อไปในขณะที่ฉันคิดว่าคุณหมายความว่า SEU ไม่ได้มีประสบการณ์ในสภาพแวดล้อมเหล่านั้นอีกต่อไป
W5VO

โปรดทราบว่า SEUs อาจเกิดจากการบัดกรี SnPb บน BGA เนื่องจากตะกั่วบางส่วนเป็นส่วนหนึ่งของห่วงโซ่การสลายตัวของยูเรเนียมค่อนข้างแตกต่างจากกิจกรรมของนิวตรอนอิสระ
Peter Smith

@ W5VO ใช่ฉันหมายถึงว่าอารมณ์เสียเนื่องจากรังสีไม่ได้เป็นเพียงปัญหาอวกาศอีกต่อไป แต่เป็นปัญหาตลอดระยะทางจนถึงพื้นผิว ไม่เลวเหมือนในอวกาศ แต่มีอยู่
old_timer

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

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

12

หากคุณอยู่หลังคำตอบง่ายๆ:

ส่วนประกอบดิจิตอลแต่ละรายการในคอมพิวเตอร์นั้นถูก จำกัด ในเอาต์พุตที่สร้างมากกว่าที่รับเข้ามา ตัวอย่างเช่นค่า "อินพุต" ใด ๆ จาก 0V ถึง 2V จะได้รับการยอมรับเป็น 0 แต่ "เอาต์พุต" ที่เป็น 0 จะอยู่ในช่วง 0 ถึง 0.5V เสมอ (ดูคำตอบของ duskwuff สำหรับค่าจริงบางอย่าง)

ซึ่งหมายความว่าแต่ละองค์ประกอบช่วยในการ "แก้ไข" สำหรับบางส่วนของการเบี่ยงเบนหรือเสียงที่เกิดขึ้นตามสาย แน่นอนว่าถ้าเสียงดังมากพอระบบจะไม่สามารถชดเชยได้ คอมพิวเตอร์ในสภาพแวดล้อมที่มีการแผ่รังสีสูงอาจได้รับผลกระทบจากการที่ 1s เปลี่ยนเป็น 0 และในทางกลับกัน

โดยทั่วไปคอมพิวเตอร์ได้รับการออกแบบให้ทนต่อเสียงรบกวน / การรบกวนในระดับหนึ่งซึ่งดีพอสำหรับการใช้งานส่วนใหญ่


8

เป็นไปได้ในทางทฤษฎีสำหรับสัญญาณที่จะเปลี่ยนระหว่าง 0 และ 1 เนื่องจากเสียง (และอื่น ๆ ) ความร้อน แต่มันไม่น่าเป็นไปได้อย่างมาก

วงจรดิจิตอลได้รับการออกแบบที่มีคุณลักษณะที่เรียกว่า 'ระยะขอบเสียง' นี่คือจำนวนเงินที่อินพุตมีการเปลี่ยนแปลงก่อนที่สถานะการส่งออกจะพลิก โดยทั่วไปในวงจร CMOS จะมีแรงดันไฟฟ้าประมาณ 50% เสียงรบกวนจากความร้อนที่ไม่สามารถหลีกเลี่ยงได้ (มาจากอิเล็กตรอนที่เคลื่อนที่ไปรอบ ๆ ที่อุณหภูมิสูงกว่า 0 เคลวิน) ในวงจรเหล่านี้ทำให้เกิดเสียง << 1 mV และความน่าจะเป็นที่แหลมเหล่านี้อาจเกิน (พูด) 500 mV

ประตูดิจิตอล (เช่น CMOS) มีลักษณะเกนและความอิ่มตัว สิ่งนี้หมายความว่าเมื่อสัญญาณอินพุตอยู่ใกล้กับช่วงกลางของสัญญาณเอาต์พุตจะเปลี่ยนอย่างรวดเร็ว (อัตราขยายสูง) แต่เมื่อมันอยู่ใกล้กับสุดขั้วของช่วงมันจะเปลี่ยนอย่างช้าๆ ผลลัพธ์ของสิ่งนี้คือเมื่อสัญญาณอินพุต 'ใกล้' กับรางผลลัพธ์จะยิ่งใกล้ - นั่นหมายความว่าเสียงจะไม่ได้รับการขยาย

คุณสมบัติอื่น ๆ ที่กล่าวถึงข้างต้น (การแก้ไขข้อผิดพลาด ฯลฯ ) หมายความว่าข้อผิดพลาดแม้ว่าจะเกิดขึ้นอย่าเผยแพร่


4

ในระบบที่มีแนวโน้มที่จะเกิดข้อผิดพลาดเช่นช่องทางการสื่อสารและที่เก็บข้อมูลแม่เหล็ก (และบางครั้งอาจเป็น RAM) เช็คซัม CRC หรือ ECC จะปฏิเสธข้อมูลที่ไม่ดีหรือแก้ไขข้อผิดพลาดเล็ก ๆ

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

* ช่องทางการสื่อสารสามารถมีอัตราความผิดพลาดสูงขึ้นมาก!


4

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

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


ด้วยข้อยกเว้นของแฟลช MLC ซึ่งความน่าเชื่อถือมีการซื้อขายเพื่อความหนาแน่น
Jasen

3

มีสองวิธีที่ใช้กันโดยทั่วไปเพื่อลดความน่าจะเป็นที่ตรรกะบิตจะเปลี่ยนโดยไม่ตั้งใจ (0 ถึง 1 หรือ 1 ถึง 0)
ครั้งแรกคือโดยการให้เป็นขนาดใหญ่ช่องว่างระหว่างระดับแรงดันไฟฟ้าที่กำหนดไว้สำหรับ 0 และ 1 ที่เป็นไปได้ ดังที่คุณกล่าวถึง 0 จะถูกกำหนดเป็นระดับแรงดันไฟฟ้า <.9v ในขณะที่ 1 ถูกกำหนดเป็นระดับแรงดันไฟฟ้า> 2.9v (ไม่ใช่ที่คุณพูดว่า. 9 ถึง 1.5) ทำให้มีช่องว่างของแรงดันไฟฟ้า 2v ซึ่งหมายความว่าแรงดันสัญญาณจะต้องแตกต่างกันไป 200%ก่อนที่มันจะ "บังเอิญ" เปลี่ยนสถานะของบิต (ไม่น่าเป็นไปได้มาก)
ประการที่สองคือ"ตอกบัตร"สัญญาณลอจิก เนื่องจากแรงดันไฟฟ้า / เสียงรบกวนโดยบังเอิญเกิดขึ้นโดยการอนุญาตให้มีการเปลี่ยนแปลงสถานะโดยเฉพาะอย่างยิ่งช่วงสั้น ๆ ความน่าจะเป็นของการเปลี่ยนแปลงที่เกิดขึ้นในช่วงเวลาของนาฬิกาจะลดลง

มีนอกหลักสูตรวิธีการอื่น ๆ และวิธีการที่ใช้ขึ้นอยู่กับระดับของความน่าเชื่อถือที่จำเป็น (ECD, ECC ฯลฯ )


2

วิศวกรรมที่ดี

มีความพยายามมากมายในการออกแบบเพื่อป้องกันข้อมูลเสียหายหรือ แก้ไขเมื่อไม่สามารถป้องกันได้อย่างเพียงพอ (เช่นหน่วยความจำ ECC )

สิ่งที่อาจทำให้ข้อมูลเสียหายรวมถึง:

  • สภาพแวดล้อมที่มีเสียงดังด้วยไฟฟ้า
  • ปัญหาที่เกี่ยวข้องกับพลังงาน
  • ปัญหาเรื่องเวลา (เช่นระหว่างนาฬิกาและสายข้อมูลหรือระหว่างสองสายที่แตกต่างกัน)
  • ไฟฟ้าคุยข้าม

กล่าวโดยย่อวิศวกรรมจำนวนมากเข้าสู่การออกแบบดิจิทัลเพื่อให้วิศวกรซอฟต์แวร์สามารถทำการสันนิษฐานได้ง่าย ๆ ว่า '0' หมายถึง '0' และ '1' หมายถึง '1'


และแน่นอนว่าหน่วยความจำ ECC ยังสามารถทำสิ่งที่ตลกเช่นทริกเกอร์ non-maskable interrupt (NMI) หากมีบิตเสียหายมากกว่าที่เป็นไปได้ในการซ่อมแซม ฉันคิดว่า ECC RAM ที่ทันสมัยนี้เป็นข้อผิดพลาดมากกว่าหนึ่งบิตใน 64 บิต (การเข้ารหัสสามารถแก้ไขข้อผิดพลาดบิตเดียวและตรวจจับ แต่ไม่ถูกต้องข้อผิดพลาดสองบิต) แต่ฉันอาจผิดเกี่ยวกับเรื่องนั้น ในสถานการณ์ที่คุณสนใจเกี่ยวกับข้อมูลของคุณให้หยุดระบบทันทีหากมีอะไรผิดปกติเกินกว่าจะซ่อมได้อาจดีกว่าที่จะคลานไปโดยไม่รู้ว่าข้อมูลนั้นเชื่อถือได้หรือไม่ (แย่กว่านั้นคือรู้ว่าไม่น่าเชื่อถือ)
CVn

2

พื้นฐานสองประการของคอมพิวเตอร์อิเล็กทรอนิกส์ที่ใช้งานได้คือ:

  1. แหล่งจ่ายไฟที่เสถียรมาก

  2. เวลา (มักกำหนดเป็นความถี่สัญญาณนาฬิกาหรือล่าช้า)

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

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

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

ในทางวิศวกรรมการแก้ปัญหานี้คือการเขียนว่าคุณต้องรอนานแค่ไหนเพื่อให้ได้ผลลัพธ์ที่ถูกต้องบนกระดาษ นี่คือต้นกำเนิดของความถี่สัญญาณนาฬิกาของ CPU จำนวน GHz ที่คุณสามารถใช้งาน CPU นั้นขึ้นอยู่กับระยะเวลาที่ใช้ในการเปลี่ยนแปลงสถานะของ CPU เพื่อให้เสถียร

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

ส่วนที่สองของปัญหาคือสาเหตุที่เราสุ่มตัวอย่างอินพุตเข้าแลตช์หรือรีจิสเตอร์ก่อนประมวลผล สัญญาณอาจเป็นขยะ แต่พวกเขาจะเป็น 0 หรือ 1 ขยะที่ด้านในของรีจิสเตอร์เมื่อประมวลผลแล้ว ส่วนแรกของปัญหาคือสิ่งที่รับประกัน


2

แต่ฉันไม่เคยอ่านสิ่งที่ทำให้แรงดันไฟฟ้า "ทำตัวดี" ในแบบที่ 0 ไม่สามารถกลายเป็น 1 โดยบังเอิญเนื่องจากความผันผวนของไฟฟ้า1ภายในคอมพิวเตอร์ บางทีอาจเป็นไปได้ที่แรงดันไฟฟ้าจะอยู่ใกล้ 0.9 มากแล้วจะทำอย่างไรเพื่อหลีกเลี่ยงให้มันผ่านเกณฑ์?

คำติชมเป็นสิ่งที่ป้องกันไม่ให้มันเข้าใกล้แรงดันไฟฟ้าเกณฑ์และบังคับให้มันทำงานได้ดี

โดยปกติจะอยู่ในรูปแบบของวงจร latching บางประเภทมักจะเป็นวงจร latching clocked

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

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


0

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

ด้วยเหตุนี้หากคุณกำลังเขียนรหัสป้องกัน (ซอฟต์แวร์หรือ HDL) ที่คุณไม่ต้องการล็อคคุณควรพิจารณากรณีที่หมายเลขอาจผิดพลาด ตัวอย่างเช่น,

while(1)
{
  i++;
  do something here
  if (i == 10) break;
}

ดีกว่าที่จะเปลี่ยน==ไป>= เพียงในกรณีที่มูลค่าของiการกระโดด 9-11 หรือหมายเลขใด ๆ มากกว่า 10 ซึ่งจะทำให้คุณไม่เคยออกจากวงจนiล้อมรอบถึง 0 (พูดหลังจากที่ 4 พันล้านซ้ำ)

while(1)
{
  i++;
  do something here
  if (i >= 10) break;
}

มันเกิดขึ้นเชื่อใจฉัน ...


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