เวลาวัดในระบบคอมพิวเตอร์อย่างไร


13

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

ทำ 2 + 2 แล้วรอ 5 วินาที

โปรเซสเซอร์รู้ได้อย่างไรว่า "5 วินาที" คืออะไร? เวลาวัดในระบบคอมพิวเตอร์อย่างไร มีชิปเฉพาะสำหรับจุดประสงค์เดียวนั้นหรือไม่? มันทำงานยังไง?

ขอบคุณสำหรับการตอบกลับใด ๆ ; ฉันสนใจวิทยาศาสตร์คอมพิวเตอร์มากและจะรักความช่วยเหลือใด ๆ ที่คุณสามารถให้ฉัน = D


2
ต่อไปนี้เป็นคำอธิบายที่ง่ายต่อการอ่านและทำความเข้าใจว่าคอมพิวเตอร์ทำได้อย่างไร: eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htmนี่คือคำอธิบายเพิ่มเติมเกี่ยวกับความแม่นยำของนาฬิกาคอมพิวเตอร์: ntp.org/ ntpfaq / NTP-s-sw-clock-quality.htm
Synetech

คำตอบ:


13

ในขณะที่คำตอบของโจเอลนั้นถูกต้อง แต่ในความเป็นจริงมันซับซ้อนกว่าเล็กน้อย

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

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

ที่นี่เรามาถึงจุดถัดไป: มีนาฬิกาภายในที่ใช้สำหรับการวัดเวลาและการนับถอยหลังที่แม่นยำ

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

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

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

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

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

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


1
คำตอบที่ดี ฉันไม่รู้ว่าดาวเทียม GPS มีนาฬิกาอะตอมของตัวเองอยู่บนเครื่อง จะเปิดออกแต่ละ 24 มี 4 อะตอมนาฬิกาแต่ละชนิดตามบทความนี้: science.nasa.gov/science-news/science-at-nasa/2004/...
deltaray

2
คำตอบที่ละเอียดมาก! ขอบคุณที่สละเวลาเขียนสิ่งนั้นออกไป!
DRK3

1
สิ่งที่น่าสนใจเป็นพิเศษคือบิตเกี่ยวกับวิธีการที่นาฬิกาพึ่งพาความเร็วสัญญาณนาฬิกาของ CPU แต่เมื่อพิจารณาว่าความเร็วสัญญาณนาฬิกาของ CPU เป็นตัวแปรในวันนี้ ขอบคุณอีกครั้ง.
DRK3

@ DRK3 ต่อไปนี้เป็นวิดีโอที่ยอดเยี่ยมเกี่ยวกับนาฬิกาอะตอม: wimp.com/atomicclock
Griffin

1
คำตอบนี้ค่อนข้างสับสนเกี่ยวกับแนวคิดของ "ความถูกต้อง", "ความแม่นยำ" และ "ความละเอียด" ในภาษาของเครื่องมือวัด "ความแม่นยำ" หมายถึงความสามารถในการวัดซ้ำ เครื่องมือสามารถแม่นยำมากโดยไม่ถูกต้องหากไม่ได้ทำการสอบเทียบอย่างถูกต้อง (อย่างไรก็ตามมันไม่ถูกต้องหากไม่แม่นยำ) และเนื่องจาก HPET ทำเครื่องหมาย 10 ล้านครั้งต่อวินาทีดังนั้นจึงมีความละเอียดสูงกว่า - ไม่รับประกันว่ามันแม่นยำกว่าสิ่งใดที่ทำเครื่องหมายทุกมิลลิวินาทีหรือมากกว่า
เจมี่ Hanrahan

11

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


3
ฉันเชื่อว่ามันยังคงเป็นผลึก (คุณอาจสามารถเห็นสี่เหลี่ยมเล็ก ๆ โลหะสี่เหลี่ยมโค้งมนประทับ“ 14MHz” หรือ“ 14.3MHz” หรือความถี่อื่น ๆ - ที่มีผลึกคริสตัลบนเมนบอร์ด)
Synetech

ขอบคุณสำหรับคำตอบ! ฉันไม่รู้ว่าจะใช้คริสตัล (ควอตซ์)
DRK3

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

คำตอบที่ง่ายมาก! นี่คือสิ่งที่เกิดขึ้นในนาฬิกาควอทซ์ด้วยหรือไม่
Nicolas Barbulesco

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