コンピューターシステムでの時間の測定方法


13

私が困惑しているのはこれです。コンピューターはどのように正確に時間を調節し、伝えているのですか?例:これを行うプログラムを作成する場合:

2 + 2を実行してから5秒待ちます

プロセッサは「5秒」がどのように認識されるのですか?コンピューターシステムでの時間の測定方法 その唯一の目的のための特定のチップはありますか?どのように機能しますか?

返信いただきありがとうございます。私はコンピューターサイエンスに本当に興味があります。


2
ここではコンピュータがそれを行う方法を簡単に読んで理解するための説明です:eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htmは、ここにコンピュータの時計の精度のオプションの説明です:ntp.org/ ntpfaq / NTP-s-sw-clocks-
quality.htm

回答:


12

ジョエルの答えは正しいですが、実際には、もう少し複雑です。

最初に考慮しなければならないことは(そして、ここではPCのみに焦点を当てます)、コンピューターにはいくつかのクロックがあり、それぞれが独自の用途を持っているということです。

最も人気があり、最も理解しやすいのはリアルタイムクロックです。それは基本的に内部に単純な時計を持っているチップです。彼らは通常、標準的な時計と同じタイプの水晶振動子を持ち、通常、コンピュータの電源が切れたときに時間を保つためのバッテリーを持っています。それらの問題は、Syntechのリンクからわかるように、あまり正確ではないことです。32.768 kHzの水晶は、プロセッサがメガヘルツおよびギガヘルツの範囲にある最新のシステムで計時するには遅すぎます。

ここで次のポイントに進みます。正確な時間測定とカウントダウンに使用される内部クロックがあります。

単純なクロックは、プログラム可能なインターバルタイマーです。これは、一定時間待機してからCPUに割り込みを送信します。CPUは割り込みを受信すると、実行中の処理をすべて停止し、割り込みを生成したタスクを処理します。これにより、CPUは何かが行われたかどうかを常に確認する必要がなくなります。代わりに、他のジョブに焦点を当て、ジョブが完了したときにPITに通知させることができます。PITは1.193182 MHzクロックソースを使用するため、単純なRTCよりもはるかに正確です。

次の興味深い測定システムはタイムスタンプカウンターです。その背後にある考え方は、さまざまなシステムタイマーを使用するプロセッサのクロックソースを使用して、より正確な時間の測定値を取得できるということです。PITには1.193182 MHzのクロックがありますが、最も初期のx86プロセッサーでさえ、はるかに高いクロックを備えていました。そのため、プロセッササイクルの設定量ごとに更新されるタイマーがあります。当時、プロセッサには非常に安定したクロックがあり、TSCを使用することで正確な時間測定を行うことができました。ただし、TSCを使用すると多くの問題が発生します。プロセッサごとにティックレートが異なり、異なる速度で時間を測定します。その後、技術が進歩するにつれて、周波数を変更できる最新のプロセッサが手に入りました。これは大きな問題です。CPUクロックはもはや一定ではなく、それを使用して時間を測定することはできません。

それが、現在、高精度のイベントタイマーがある理由です。HPETは10 MHzクロックを使用するため、PITよりも正確です。一方、そのクロックソースはCPUのクロックに依存せず、CPUのクロックが変化しても時間の測定に使用できます。カウントダウンとして機能するPITとは異なり、HPETはコンピューターの電源を入れてからの時間を測定し、現在の時間とアクションが必要な時間を比較します。

私が言及する必要があると思うコンピュータ用に利用可能な他のタイムソースがあります。一部のコンピューターは原子時計に接続されており、それらを使用して正確に時間を測定できます。

より安価なオプションであり、より一般的なのは、外部タイムソースを使用してコンピューターの内部タイムソースを調整することです。たとえば、GPS衛星には内部原子時計があるため、GPS受信機を使用して高精度の時間測定を行うことができます。

GPS受信機ほど一般的ではない別のオプションは、たとえばDCF77などの時間管理無線局からの時間情報をデコードする特別な無線受信機を使用することです。このようなタイムステーションには独自の高精度の時刻源があり、無線で出力を送信します。電波は光の速度で伝わるため、多くの場合、遅延はわずかです。


素晴らしい答え。GPS衛星に独自の原子時計が搭載されていることは知りませんでした。:24のそれぞれは、4つのアトミッククロック各記事によれば有し、判明science.nasa.gov/science-news/science-at-nasa/2004/...
deltaray

2
非常に詳細な答え!それをすべて書いてくれてありがとう!
DRK3

1
特に興味深いのは、クロックがCPUクロック速度にどのように依存していたかということですが、今日のCPUクロック速度がどのように変化するかを考えると、それが問題になります。再度、感謝します。
DRK3

@ DRK3これは原子時計に関する素晴らしいビデオです:wimp.com/atomicclock-
グリフィン

1
この答えは、「精度」、「精度」、および「解像度」の概念を多少混乱させます。計装の言語では、「精度」とは、測定の再現性を指します。機器は、適切に較正されていなければ、正確でなくても非常に正確になる可能性があります。(ただし、正確でないと正確ではありません。)そして、HPETが1秒間に1,000万回ティックするため、解像度が高いため、ミリ秒ごとにティックするものよりも正確であることを保証しません。
ジェイミーハンラハン

11

IIRC、電流が流れると特定の周波数で振動する小さな結晶があります。各動きがカウントされ、それらの特定の数がクロックサイクルをトリガーします。


3
まだクォーツだと思います。(マザーボードに水晶振動子を含む「14MHz」または「14.3MHz」またはその他の周波数が刻印された小さな金属製の丸い長方形を見ることができる場合もあります。)
Synetech

答えてくれてありがとう!水晶(クォーツ)が使用されているとは知りませんでした。
DRK3

1
彼らは常に水晶振動子を使用するとは限りません。いくつかの非常に安価なマイクロコントローラーは、代わりに「セラミック共振器」を使用します。市販のマザーボードの水晶振動子駆動のタイミングでさえ、それほど正確ではありません(つまり、タイミングは異なる場合があります)。一般的に、それらは典型的なデジタル時計よりも優れています。
ジェイミーハンラハン

非常に簡単な答え!これはクォーツ時計でも起こりますか?
ニコラスバルブレスコ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.