เหตุใดนาฬิกาจึงถูกใช้ในคอมพิวเตอร์


22

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


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

เป็นไปได้ที่ซ้ำกันของสัญญาณนาฬิกาในคอมพิวเตอร์และเครื่องจักร (และคำถามนั้นถูกปิดเนื่องจากไม่ใช่คำถามจริง ... )
amadeus

สำหรับขอบเขตงานที่แคบคอมพิวเตอร์แบบอะนาล็อกอาจเร็วกว่าคอมพิวเตอร์ดิจิทัล
Nick Alexeev

1
ดังนั้นพวกเขาจึงรู้ว่าเวลาเท่าไหร่! (ขออภัยไม่สามารถต้านทาน)
Scott Seidman

ที่เกี่ยวข้อง: stackoverflow.com/questions/530180/…
Connor Wolf

คำตอบ:


32

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

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

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

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

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


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

ฉันคิดว่ามันคุ้มค่าที่จะทราบว่ามีคอมพิวเตอร์แบบอะซิงโครนัสที่สร้างโดยJacek Karpińskiซึ่งชื่อ KAR-65 น่าเสียดายที่ฉันไม่พบอะไรเกี่ยวกับเรื่องนี้เป็นภาษาอังกฤษ
elmo

6

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

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

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


6

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

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

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

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


4

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

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

ฉันคัดลอกมาจาก Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.


3

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

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

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


1

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

พูดง่าย ๆ : เพราะมนุษย์ไม่ใช่มนุษย์ที่ฉลาดและต้องใช้ทางลัดในการออกแบบวงจรพันล้านองค์ประกอบ

เมื่อเครื่องของเรามีส่วนร่วมมากขึ้นพวกเขาอาจกำจัดนาฬิกาเอาชนะ minigle niggling เช่นทำให้วงจรนาฬิกาน้อยลงสามารถเปลี่ยนได้แม้จะมีการเปลี่ยนแปลงของกระบวนการและใช้ประโยชน์จากความเร็วที่เพิ่มขึ้น

ในการขยายตัวเล็กน้อย: แยกจากกันสิ่งที่สามารถคาดการณ์ได้นั้นง่ายต่อการวิเคราะห์และออกแบบอย่างสมเหตุสมผล ในฐานะที่เป็นประโยชน์เพิ่มมากพวกเขาแก้ไขตัวเอง (ในกรณีนี้เวลาแก้ไขด้วยตนเอง) นี่คือเหตุผลที่เราใช้ตรรกะดิจิทัลตั้งแต่แรก (ในทำนองเดียวกันในการเขียนโปรแกรมเรามักใช้จำนวนเต็มแทน floating-point โครงสร้างการควบคุมที่คุ้นเคยแทน goto-spaghetti และภาษาที่มีกฎไม่กี่กฎที่ชัดเจนแทนที่จะเป็นภาษาที่ "ยืดหยุ่น" ซึ่งคุณไม่แน่ใจว่าจะเกิดอะไรขึ้น จนกว่ารหัสจะทำงาน)


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

หากการออกแบบไม่ตรงกันอาจพบว่าคำสั่งแบบสุ่ม 99% ใช้ 5ns, 0.9% สุ่มใช้ 10ns, 0.09% ใช้เวลา 30ns, 0.009% 100ns, 0.0009% 300ns, 0.00009% 1us, 0.000009% 3us ฯลฯ โดยไม่มี บริษัท รับประกันได้ว่าระบบจะใช้เวลานานเท่าใดในการแก้ปัญหาความกำกวมในเรื่องเวลา ในกรณีส่วนใหญ่การมีประสิทธิภาพซึ่งเหมาะสมที่สุด แต่คาดการณ์ได้ดีกว่าประสิทธิภาพซึ่งเร็วกว่าโดยเฉลี่ย แต่มีความแปรปรวนที่คาดเดาไม่ได้ซึ่งบางครั้งรุนแรง
supercat

@supercat 1) ไม่สามารถออกแบบวงจรที่ไม่เกิดเหตุการณ์พร้อมกันได้หรือไม่? (อย่างน้อยถ้าอินพุตเป็นปกติเพียงพอ) 2) ไม่สามารถออกแบบวงจรที่มันไม่สำคัญว่าจะเกิดเหตุการณ์พร้อมกันหรือไม่?
Aleksandr Dubinsky

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