私が困惑しているのはこれです。コンピューターはどのように正確に時間を調節し、伝えているのですか?例:これを行うプログラムを作成する場合:
2 + 2を実行してから5秒待ちます
プロセッサは「5秒」がどのように認識されるのですか?コンピューターシステムでの時間の測定方法 その唯一の目的のための特定のチップはありますか?どのように機能しますか?
返信いただきありがとうございます。私はコンピューターサイエンスに本当に興味があります。
私が困惑しているのはこれです。コンピューターはどのように正確に時間を調節し、伝えているのですか?例:これを行うプログラムを作成する場合:
2 + 2を実行してから5秒待ちます
プロセッサは「5秒」がどのように認識されるのですか?コンピューターシステムでの時間の測定方法 その唯一の目的のための特定のチップはありますか?どのように機能しますか?
返信いただきありがとうございます。私はコンピューターサイエンスに本当に興味があります。
回答:
ジョエルの答えは正しいですが、実際には、もう少し複雑です。
最初に考慮しなければならないことは(そして、ここでは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などの時間管理無線局からの時間情報をデコードする特別な無線受信機を使用することです。このようなタイムステーションには独自の高精度の時刻源があり、無線で出力を送信します。電波は光の速度で伝わるため、多くの場合、遅延はわずかです。
IIRC、電流が流れると特定の周波数で振動する小さな結晶があります。各動きがカウントされ、それらの特定の数がクロックサイクルをトリガーします。
HPETは10 MHzクロックを使用します
HPETは、少なくとも 10 MHzのクロックを使用します。10 Mhzよりも正確になりますが、それ以下になることはありません。
http://en.wikipedia.org/wiki/High_Precision_Event_Timer#Comparison_to_predecessors