ทำไมไมโครคอนโทรลเลอร์ต้องใช้นาฬิกา


31

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

การเปรียบเทียบความจำเป็นของนาฬิกาในไมโครคอนโทรลเลอร์จะเป็นประโยชน์อย่างยิ่ง


6
มีโปรเซสเซอร์แบบอะซิงโครนัส
Leon Heller

6
คุณจะทราบได้อย่างไรว่า "เมื่อคำสั่งก่อนหน้านี้เสร็จสมบูรณ์" ถ้าคุณคิดเกี่ยวกับมันคุณจะต้องรู้ว่าเมื่อ "คำสั่งก่อนหน้านี้เสร็จสมบูรณ์แล้วหรือยัง?" การคำนวณเสร็จสิ้นแล้วและเมื่อ "คำว่า" คำสั่งก่อนหน้านี้เสร็จสมบูรณ์หรือไม่ "การคำนวณ" ได้เสร็จสิ้นแล้วและ ........ มันง่ายกว่าที่จะพูดว่า "ใช้เวลา 0.4 นาโนวินาทีในการสอนให้เสร็จ"
user253751

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

คำตอบ:


31

ตัวอย่างหรือสองตัวอย่างอาจช่วยได้ที่นี่ ดูวงจรสมมุติต่อไปนี้:

schematic

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

สมมติว่าเริ่มต้นทั้ง A และ B สูง (1) เอาต์พุตของ AND คือ 1 และเนื่องจากทั้งสองอินพุตไปยัง XOR เป็น 1 เอาต์พุตจึงเป็น 0

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

ความผิดพลาดไม่ใช่ส่วนที่ต้องการของการทำงานของวงจร แต่ความผิดพลาดเช่นนั้นจะเกิดขึ้นเมื่อใดก็ตามที่มีความแตกต่างของความเร็วในการแพร่กระจายผ่านส่วนต่าง ๆ ของวงจรเนื่องจากจำนวนตรรกะหรือแม้แต่ความยาวของสายไฟ .

วิธีง่าย ๆ อย่างหนึ่งในการจัดการนั่นคือการวางฟลิปฟล็อปที่ขอบทำงานบนเอาต์พุตของตรรกะเชิงผสมของคุณเช่นนี้:

schematic

จำลองวงจรนี้

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


6
ขอขอบคุณที่พูดถึงการล่าช้าในการเผยแพร่เกือบจะในทันทีนั่นอาจเป็น 99% ของคำตอบ

1
ตัวอย่างการทำงานของสิ่งนี้ในทางปฏิบัติสามารถสังเกตได้บนอุปกรณ์ต่อพ่วง I / O ดิจิตอลของไมโครชิป (และอื่น ๆ ) หากคุณใช้ PORT register เพื่ออัพเดตเอาต์พุต (แทนที่จะเป็น LATCH) โดยใช้คำแนะนำอ่าน - แก้ไข - เขียนต่อเนื่องคุณสามารถอ่านสถานะของพินได้ในขณะที่กำลังเปลี่ยนสถานะ ดูในส่วน 10.2.2 ของdsPIC33E / 24Eเอกสารเพื่อดูรายละเอียดเพิ่มเติม
Evil Dog Pie

ฉันเข้าใจถูกต้องหรือไม่ว่าวงจรลำดับต่อเนื่องนั้นจำเป็นต้องมีการตอกบัตรไม่เพียงเพราะพวกเขาจะได้รับความผิดพลาด แต่ยังเป็นเพราะเนื่องจากความผิดพลาดนี้ flip-flop บางตัวอาจจบลงด้วยการเก็บค่าที่ไม่ถูกต้อง
ทะเลสาบ

20

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

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

เช่นกัน:

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


15

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

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

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

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

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

ตรรกะแบบอะซิงโครนัสนั้นเร็วกว่าเพราะมันไม่จำเป็นต้องรอนาฬิกาที่จะต้องขยายไปยังบล็อกอื่นที่อื่น นี่คือความจริงโดยเฉพาะอย่างยิ่งในฟังก์ชั่น register-to-logic-to-register ตรรกะแบบอะซิงโครนัสไม่มีปัญหา "การตั้งค่า" และ "การถือ" หลายอย่างเนื่องจากโครงสร้างอ่างล้างมือตอนจบ (รีจิสเตอร์) มีปัญหาเหล่านั้นซึ่งตรงข้ามกับชุดตรรกะแบบ pipelined ขอบเขต

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

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

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

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

(ฉันหวังว่านี่จะช่วยได้).

ทั้งหมดที่กล่าวว่าถ้าคุณมีเงิน ...


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

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

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

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

10

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

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

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


เป็นที่น่าสังเกตว่ารัฐที่ได้รับการตัดสินสามารถเป็นคนภายในได้เช่นกันเช่นผลการดำเนินการทางคณิตศาสตร์ ความล่าช้าเนื่องจากความยาวบรรทัดอาจส่งผลให้ส่วนหนึ่งของ MCU เห็นผลลัพธ์และโดยไม่ต้องมีนาฬิกาทำหน้าที่มันก่อนส่วนอื่น ๆ
Nick Johnson

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

... และสิ่งใดที่ควรรอคอยอาจจะรักษาไม่ได้ หากมีใครตัดสินใจก่อนว่าใครจะไปก่อนปัญหาดังกล่าวสามารถหลีกเลี่ยงได้ แต่หากปรากฎว่าหน่วยที่ได้รับมอบหมายให้ไปก่อนไม่พร้อมจนกว่าจะนานหลังจากอีกหน่วยหนึ่งประสิทธิภาพอาจแย่ลงอย่างรุนแรง .
supercat

นี่คือเหตุผลว่าทำไมการไปถึงพื้นที่จึงยากความน่าจะเป็นจะเปลี่ยนไปอย่างไม่น่าพอใจ
Magic Smoke

6

MCUs เป็นเพียงตัวอย่างที่ซับซ้อนมากของวงจรลอจิกตามลำดับแบบซิงโครนัส รูปแบบที่ง่ายที่สุดน่าจะเป็น D-flip-flop (D-FF) ที่มีสัญญาณนาฬิกานั่นคือองค์ประกอบหน่วยความจำแบบซิงโครนัส 1 บิต

มีองค์ประกอบหน่วยความจำที่ไม่ตรงกันตัวอย่างเช่น D-latch ซึ่งเทียบเท่ากับอะซิงโครนัสของ D-FF MCU ไม่มีอะไรมากไปกว่าล้านองค์ประกอบหน่วยความจำพื้นฐาน (D-FF) ที่ติดกาวเข้าด้วยกันพร้อมกับประตูลอจิกจำนวนมาก

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

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


5

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

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


3

ที่จริงคุณจะเห็น MCU เป็นหน่วยที่สมบูรณ์ แต่ความจริงคือมันเองจะทำประตูที่แตกต่างกันและ TTL และ RTL ตรรกะมัก FF อาร์เรย์ที่ทุกคนต้องสัญญาณนาฬิกาเป็นรายบุคคล

จะเฉพาะเจาะจงมากคิดเกี่ยวกับเพียงแค่การเข้าถึงที่อยู่ จากหน่วยความจำงานง่าย ๆ นี้เองอาจเกี่ยวข้องกับการดำเนินการหลายอย่างเช่นทำให้ BUS พร้อมใช้งานสำหรับสายข้อมูลและที่อยู่บรรทัด
วิธีที่ดีที่สุดที่จะบอกว่าเป็นคำแนะนำที่ตัวเองเกิดขึ้นในหน่วยเล็ก ๆ ของการดำเนินงานที่จำเป็นต้องมีรอบนาฬิกาเหล่านี้รวมสำหรับรอบเครื่องที่บัญชีสำหรับคุณสมบัติของ MCU ต่างๆเช่นความเร็ว (FLOPS ** ในความซับซ้อนของ MCU), เยื่อบุท่อ ฯลฯ

เพื่อตอบสนอง ความคิดเห็นของ OP

เพื่อให้แม่นยำมากฉันขอยกตัวอย่างว่ามีชิปชื่อALE(ที่อยู่สลักเปิดใช้งาน) โดยทั่วไปเพื่อจุดประสงค์ในการมัลติเพล็กซ์บัสที่อยู่ด้านล่างสำหรับการส่งที่อยู่และข้อมูลบนหมุดเดียวกันเราใช้ออสซิลเลเตอร์ (Intel 8051 ใช้ออสซิลเลเตอร์ในท้องถิ่น 11.059MHz เป็นนาฬิกา) เพื่อดึงข้อมูลที่อยู่

ดังที่คุณอาจทราบว่าส่วนพื้นฐานของ MCU คือ CPU, ALU และการลงทะเบียนภายในและอื่น ๆ CPU (การควบคุม s / g) ส่งที่อยู่ไปยังหมุดหมุดที่อยู่ทั้งหมด 16 ในกรณีที่ 8051 เกิดขึ้นในช่วงเวลาทันที T1 และหลังจากนั้น ที่อยู่เป็นเมทริกซ์ที่สอดคล้องกันของการจัดเก็บประจุ (ประจุเป็นสัญญาณ) ( * การแมปหน่วยความจำ * ) ถูกเปิดใช้งานและเลือก

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

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


ทำให้รู้สึกแบบนั้น แต่ทำไมช่องต่าง ๆ ของ MCU จึงจำเป็นต้องใช้สัญญาณนาฬิกาเพื่อทำงาน? จะเกิดอะไรขึ้นในทางทฤษฎีหากพวกเขาไม่ได้ใช้นาฬิกา
MR

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

3
@SeanBoddy: ประตูลอจิกไม่ได้มีโอกาสเกิดขึ้นในทันทีมีความล่าช้าเล็กน้อยซึ่งสามารถดูได้บนออสซิลโลสโคป หากเราไม่ได้ใช้นาฬิกาความแตกต่างในการกำหนดเวลาเหล่านี้ระหว่างส่วนประกอบอาจทำให้เงื่อนไขการแข่งขันให้ผลลัพธ์ที่ไม่ถูกต้อง
BlueRaja - Danny Pflughoeft

@ BlueRaja - ดี golly gumdrops วิธีการเกี่ยวกับที่ บางทีฉันจะย้อนกลับไปดูโน้ตอิเล็กทรอนิกส์กำลังสี่ปีและการฝึกกองทัพเรือเป็นเวลา 8 ปีเพื่อดูว่าฉันพลาดอะไรไปบ้าง
Sean Boddy

2

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

ในการเปรียบเทียบให้พิจารณาเลเยอร์การขนส่งการสื่อสาร SPI (Serial Peripheral Interface) การใช้งานโดยทั่วไปของสิ่งนี้จะใช้สามบรรทัด: Data In, Data Out และ Clock ในการส่งไบต์บนเลเยอร์การขนส่งนี้ต้นแบบจะตั้งค่าบรรทัด Data Out และยืนยันบรรทัด Clock เพื่อระบุว่าบรรทัด Data Out มีค่าที่ถูกต้อง อุปกรณ์ทาสจะสุ่มตัวอย่าง Data In line เฉพาะเมื่อได้รับคำสั่งให้ทำเช่นนั้นโดยสัญญาณนาฬิกา หากไม่มีสัญญาณนาฬิกาทาสจะทราบได้อย่างไรว่าจะเก็บตัวอย่าง Data In line เมื่อใด มันสามารถสุ่มตัวอย่างก่อนที่จะถูกตั้งค่าโดยต้นแบบหรือในช่วงการเปลี่ยนภาพระหว่างรัฐ โปรโตคอลอะซิงโครนัสเช่น CAN, RS485, RS422, RS232 และอื่น ๆ แก้ปัญหานี้โดยใช้เวลาการสุ่มตัวอย่างที่กำหนดไว้ล่วงหน้าอัตราบิตคงที่และบิต (ค่าใช้จ่าย)

กล่าวอีกนัยหนึ่งมีความรู้ทั่วไปบางอย่างที่จำเป็นในการพิจารณาว่าทรานซิสเตอร์ทั้งหมดในชุดของประตูถึงสถานะสุดท้ายแล้วและคำสั่งนั้นสมบูรณ์ ในตัวต่อปริศนา (100 ตาสีฟ้า) ที่ระบุในลิงก์ด้านบนและอธิบายรายละเอียดในคำถามนี้ใน Maths Stack Exchange คำว่า 'oracle' ทำหน้าที่เป็นนาฬิกาสำหรับผู้คนบนเกาะ

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