コードではタイマーを使用しています。私はそれの実際の実装についてただ興味があります。CPUロジック回路またはCPUダイの外側にタイマーがありますか?たとえば、外部クロックなどですか?
そうでない場合、タイマーはどこにありますか?ハードウェアタイマーがどのように作成されるかについての詳細な説明は必要ありません。私たちが持っているハードウェアボード上でタイマーを見つけることに集中してください。
コンピュータハードウェアには、さまざまな種類の時計とタイマーがあります。すべての基本的なコンピューターには、CPUを同期するために使用され、Hz単位の「クロック速度」を形成するデジタル時計のような水晶があります。
ほとんどのCPUには、クロック速度を使用して2点間の相対時間を計算する多数のタイマーが組み込まれています。これにより、システムプログラマーは、水晶の特定のクロックサイクル数で「オフ」になるタイマーを設定できます。タイマーは、プログラマーがコードの一部を添付する割り込みラインを上げることにより、定義された時間が経過したことをCPUに警告します。
オペレーティングシステムとプログラミング言語は通常、割り込みタイマーを抽象化するため、直接操作する必要はありません。
PCのようなほとんどの高度なコンピュータには、実際のカレンダーの時刻と日付を保存できるリアルタイムクロックがありますが、タイミング操作にはあまり使用されません。
あなたの質問に答えて:
私たちが持っているハードウェアボード上のタイマーの位置
ハードウェアと興味のあるタイマーに大きく依存します。ほとんどのタイマーや時計を物理的に見ることはできませんが、クリスタルは見つけやすく、小さな金属製のカプセルのように見えます。http://wwwを参照してください。 .electronicrepairguide.com / how-to-test-crystal.html
x86マシンには多くのタイマーがあります。最もよく知られているのはTSC(タイムスタンプカウンター)です。それはCPUの内部にあります。次に、Intel 8253や8254のように、マザーボード上にチップとしてPIT(Programmable Interval Timer)があります。ただし、それらがまだ使用されているかどうかはわかりません。もう1つのタイマーは、HPET(High Precision Event Timer)です。これはCPUの内部ではなく、3つのうち最新のものです。
もちろん、電池式のリアルタイムクロックもあります。これがタイマーとしてカウントされるかどうかはわかりません。おそらくそうではありません。
使用するタイマーは、オペレーティングシステムによって決まります。一部のシステムではTSCが使用され、他のシステムではHPETが使用されます。TSCは、CPU内にあるため、通常は優先されます。これにより、アクセスが非常に高速になります。ハードウェアと直接通信するアセンブリ命令がなければ、Cコードから特定のタイマーに直接アクセスすることはできません。