สภาพการแข่งขันหมายถึงอะไร


10

ฉันเป็นวิศวกรไฟฟ้าคนใหม่ ฉันได้ยินวิศวกรคนอื่น ๆ ที่ฉันทำงานด้วยพูดคุยเกี่ยวกับสภาพการแข่งขันที่มีอยู่ในวงจรหนึ่งของเรา

นั่นหมายความว่าอย่างไร?


หากคุณต้องการดูตัวอย่างเฉพาะ"De-Glitching RAM Writes"และทั้งสองบทความต่อไปนี้มีการพูดคุยกันนานเกี่ยวกับข้อผิดพลาดที่เท่าที่ฉันสามารถบอกได้ถูกเรียกโดยสภาพการแข่งขัน
davidcary

คำตอบ:


16

มันหมายถึงว่าเพียงสองสิ่งในเวลาเดียวกัน "การแข่งขัน" สำหรับผลลัพธ์

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

แต่ถ้าทั้งคู่ถูกกระตุ้นในเวลาเดียวกันจะเกิดอะไรขึ้น

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

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

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

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


2
ที่นอกเหนือไปจากคำตอบที่ดีนี้ผมจะชี้ให้เห็นว่าฮาร์ดแวร์สามารถประพฤติมากไม่ดีในสถานการณ์เหล่านี้ ฮาร์ดแวร์จริงไม่เคยเปลี่ยนทันทีจาก 0 ถึง 1 มันจะต้องเพิ่มขึ้นในช่วงเวลาสั้น ๆ ระหว่างพวกเขา ตรรกะส่วนใหญ่สันนิษฐานว่ามีเวลามากพอที่จะผ่านไปเนื่องจากการเปลี่ยนแปลงที่ transients ได้ตัดสินใจที่จะ "ใกล้เคียงกับ 0" หรือ "ใกล้เคียงกับ 1" หากช่วงเวลานั้นเป็น ... โชคไม่ดีมันอาจเข้าใกล้ 0.5 ได้ วงจรจำนวนมากกลายเป็น "metastable" ในสถานะนี้ซึ่งหมายความว่าพวกเขาสามารถใช้เวลาในการเปลี่ยนผ่านไม่ได้ตั้งใจทำให้เสถียรทั้งวงจร
Cort Ammon

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

การทำงานที่ไม่ใช่อะตอมเป็นตัวอย่างที่ดีกว่าของสภาพการแข่งขันในซอฟต์แวร์ โปรแกรมสามารถสร้างไฟล์ใหม่โดยใช้ C ของfopen()ข้อมูลเขียนไปfclose()มันแล้วchmod()มันเพื่อความปลอดภัย หน้าต่างสั้น ๆ นั้นระหว่างfopen()และchmod()เปิดสภาวะการแย่งชิงที่เป็นไปได้ซึ่งโหมดไฟล์เริ่มต้นอาจอนุญาตให้บุคคลภายนอกที่ไม่ต้องการทำงานกับไฟล์ในวิธีที่ถูกปฏิเสธหลังจากการchmod()โทร ทางออกคือการสร้างไฟล์ด้วยopen()แทนซึ่งช่วยให้การตั้งค่าโหมดเป็นส่วนหนึ่งของการดำเนินการสร้างไฟล์
Warren Young

6

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

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

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

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

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

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


คุณพูดว่า "... ผลลัพธ์ที่น่ารังเกียจ" นั่นเป็นอีกวิธีในการพูดว่า "metastable state"
โซโลมอนช้า

@james large: เครื่องมือจำลองไม่สามารถจัดการสถานะ metastable ฉันอธิบายผลลัพธ์แรกว่าน่าเกลียดเนื่องจากไม่มีความกว้างพัลส์ขั้นต่ำและเอาต์พุตที่สองมีความเสี่ยงเนื่องจากความเป็นไปได้ของสถานะ metastable
supercat

2

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

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