Làm thế nào được đo thời gian trong hệ thống máy tính?


13

Một cái gì đó tôi đã bối rối là đây: làm thế nào chính xác một máy tính điều tiết và cho biết thời gian? Ví dụ: nếu tôi viết một chương trình đã làm điều này:

Làm 2 + 2 sau đó đợi 5 giây

Làm thế nào để bộ xử lý biết "5 giây" là gì? Làm thế nào được đo thời gian trong hệ thống máy tính? Có một con chip cụ thể cho mục đích duy nhất đó không? Làm thế nào nó hoạt động?

Cảm ơn cho bất kỳ trả lời; Tôi thực sự quan tâm đến khoa học máy tính và rất thích bất kỳ trợ giúp nào bạn có thể cung cấp cho tôi = D.


2
Đây là một lời giải thích dễ đọc và dễ hiểu về cách máy tính thực hiện: eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htmlm Đây là một giải thích tùy chọn về độ chính xác của đồng hồ máy tính: ntp.org/ ntpfaq / NTP-s-sw-clock-quality.htm
Synetech

Câu trả lời:


13

Mặc dù câu trả lời của Joel là chính xác, nhưng thực tế, nó phức tạp hơn một chút.

Điều đầu tiên cần được xem xét (và tôi sẽ chỉ tập trung vào PC ở đây) là có một số đồng hồ trong máy tính và mỗi loại có một công dụng riêng.

Phổ biến nhất và dễ hiểu nhất là đồng hồ thời gian thực . Về cơ bản, nó là một con chip có đồng hồ đơn giản bên trong. Chúng thường có cùng loại tinh thể thạch anh như đồng hồ tiêu chuẩn và thường có pin để giữ thời gian khi máy tính bị tắt nguồn. Vấn đề với họ là chúng không chính xác lắm, như có thể thấy từ các liên kết của Syntech. Tinh thể 32.768 kHz là quá chậm đối với bất kỳ máy chấm công nào trên các hệ thống hiện đại có bộ xử lý nằm trong phạm vi megahertz và gigahertz.

Ở đây chúng ta đến điểm tiếp theo: Có đồng hồ bên trong được sử dụng để đo thời gian và đếm ngược chính xác.

Một đồng hồ đơn giản là bộ đếm thời gian lập trình . Những gì nó làm là đợi một khoảng thời gian nhất định và sau đó gửi một ngắt đến CPU. Khi CPU nhận được ngắt, nó sẽ dừng bất cứ thứ gì nó đang làm và hướng đến nhiệm vụ tạo ra ngắt. Bằng cách này, CPU không phải liên tục kiểm tra nếu có gì đó được thực hiện. Thay vào đó, nó có thể tập trung vào các công việc khác và yêu cầu thuế TNCN khi công việc được hoàn thành. PIT sử dụng nguồn xung nhịp 1.193182 MHz và do đó chính xác hơn nhiều so với RTC đơn giản.

Hệ thống đo lường thú vị tiếp theo là bộ đếm thời gian . Ý tưởng đằng sau đó là chúng ta có thể có được các phép đo thời gian chính xác hơn nhiều bằng cách sử dụng nguồn đồng hồ của bộ xử lý sử dụng các bộ định thời hệ thống khác nhau. PIT có xung nhịp 1.193182 MHz, nhưng ngay cả bộ xử lý x86 sớm nhất cũng có xung nhịp cao hơn nhiều. Vì vậy, chúng ta sẽ có một bộ đếm thời gian được cập nhật sau mỗi chu kỳ bộ xử lý. Vào thời điểm đó, bộ xử lý có đồng hồ rất ổn định và sử dụng TSC là một cách hay để thực hiện các phép đo thời gian chính xác. Việc sử dụng TSC tuy nhiên mang lại một số vấn đề. Các bộ xử lý khác nhau có tốc độ đánh dấu khác nhau và đo thời gian ở các tốc độ khác nhau. Sau này, khi công nghệ tiến bộ, chúng tôi đã có bộ xử lý hiện đại có thể thay đổi tần số của chúng. Đó là một vấn đề lớn, vì đồng hồ CPU không còn nữa và chúng ta không thể sử dụng nó để đo thời gian.

Và đó là lý do tại sao chúng ta có bộ hẹn giờ sự kiện chính xác cao . HPET sử dụng xung nhịp 10 MHz và do đó chính xác hơn PIT. Mặt khác, nguồn đồng hồ của nó không phụ thuộc vào đồng hồ của CPU và nó có thể được sử dụng để đo thời gian ngay cả khi đồng hồ của CPU thay đổi. Không giống như PIT, hoạt động như đếm ngược, HPET đo thời gian kể từ khi máy tính được bật và so sánh thời gian hiện tại khi cần một hành động.

Có những nguồn thời gian khác có sẵn cho máy tính mà tôi tin rằng cần phải được đề cập. Một số máy tính được kết nối với đồng hồ nguyên tử và có thể sử dụng chúng để đo thời gian chính xác.

Một tùy chọn ít tốn kém và phổ biến hơn nhiều là sử dụng nguồn thời gian bên ngoài để hiệu chỉnh các nguồn thời gian bên trong của máy tính. Ví dụ, máy thu GPS có thể được sử dụng để cung cấp các phép đo thời gian chính xác cao, bởi vì các vệ tinh GPS có đồng hồ nguyên tử bên trong của chúng.

Một tùy chọn khác ít phổ biến hơn máy thu GPS là sử dụng máy thu radio đặc biệt để giải mã thông tin thời gian từ các đài phát thanh thời gian như DCF77 chẳng hạn. Các trạm thời gian như vậy có nguồn thời gian chính xác cao của riêng họ và truyền đầu ra của họ qua radio. Vì sóng vô tuyến truyền đi với tốc độ ánh sáng, độ trễ thường không đáng kể.


1
Câu trả lời chính xác. Tôi không biết các vệ tinh GPS có đồng hồ nguyên tử của riêng mình trên tàu. Lần lượt ra, mỗi người trong số 24 có 4 Atomics đồng hồ mỗi theo bài viết này: science.nasa.gov/science-news/science-at-nasa/2004/...
deltaray

2
Câu trả lời rất chi tiết! Cảm ơn đã dành thời gian để viết tất cả ra!
DRK3

1
Đặc biệt thú vị là một chút về cách các đồng hồ phụ thuộc vào tốc độ xung nhịp của CPU, nhưng việc xem tốc độ xung nhịp của CPU ngày nay có thể thay đổi như thế nào, điều đó trở thành một vấn đề. Cảm ơn một lần nữa.
DRK3

@ DRK3 Đây là một video tuyệt vời về đồng hồ nguyên tử: wimp.com/atomicclock
Griffin

1
Câu trả lời này phần nào nhầm lẫn giữa các khái niệm "chính xác", "chính xác" và "độ phân giải". Trong ngôn ngữ của thiết bị, "độ chính xác" dùng để chỉ độ lặp lại của phép đo. Một thiết bị có thể rất chính xác mà không chính xác, nếu nó không được hiệu chỉnh đúng. (Tuy nhiên, điều đó không thể chính xác nếu nó không chính xác.) Và chỉ vì HPET đánh dấu 10 triệu lần một giây - do đó có độ phân giải cao hơn - không đảm bảo rằng nó chính xác hơn thứ gì đó cứ sau mỗi mili giây.
Jamie Hanrahan

11

IIRC, có một tinh thể nhỏ dao động ở một tần số cụ thể khi một dòng điện được truyền qua nó. Mỗi chuyển động được tính và một số lượng cụ thể của chúng kích hoạt một chu kỳ đồng hồ.


3
Tôi tin rằng nó vẫn là thạch anh. (Bạn thậm chí có thể thấy ít, kim loại, hình chữ nhật tròn đóng dấu “14MHz” hoặc “14.3MHz” -Hoặc một số khác tần số có chứa một tinh thể thạch anh trên bo mạch chủ.)
Synetech

Cảm ơn câu trả lời! Tôi không biết rằng một tinh thể (thạch anh) được sử dụng.
DRK3

1
Họ không luôn luôn sử dụng một tinh thể thạch anh. Thay vào đó, một số bộ vi điều khiển rất rẻ tiền sử dụng "bộ cộng hưởng gốm". Ngay cả thời gian điều khiển tinh thể thạch anh trên bo mạch chủ hàng hóa cũng không hoàn toàn chính xác (tức là thời gian của nó có thể thay đổi). Chúng thường không tốt hơn một chiếc đồng hồ kỹ thuật số thông thường.
Jamie Hanrahan

Câu trả lời rất đơn giản! Đây có phải là những gì xảy ra quá trong đồng hồ thạch anh?
Nicolas Barbulesco

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.