処理落ちしても時間が狂わないワケ
ゲームをやっていると処理落ちしたりしますね。
これは演算量が多く、次の画面の描画に間に合わなくなり、前と同じ画面が表示されるからです。
この時、時間に追われるようなゲーム(例えばレースゲームなど)をやっているとゆっくりと操作が出来て有利だと思うかもしれません。
しかし無情にも時間は処理落ちしていても構わず進みます。
何故でしょう?
それは時間の計測にハードウェアタイマーを使っているからです。
CPUは演算をしますが、CPUとは別の独立したところにハードウェアとして簡単なカウンターが組み込んであります。
(CPUと一体化しているものもある)
タイマーは前述のようにカウンターです。
カウンターは簡単な加算器とメモリーから成り立ちます。
カウンターなので単純に+1の加算します。
加算するタイミングはクロック入力からです。
最近のCPUはクロックに関してあまり関心が高くありませんが、少し前まではCPUのスピードというとクロックが深く関わってきていました。
ちょっと話が逸れました。
例えば32bitのカウンターがあったとして、1μsのクロック入力で1カウントをするなら分解能は1μsで最大値は4,294.967296秒。
1.2時間程です。
日付や時計に使うタイマーはもっと分解能が低い代わりに長い時間を計測できます。
例えば、同じように32bitのカウンターでも1秒のクロック入力とすると、最大値は136年になります。
CPUはタイマーを操作したり値(現在時刻)を読み取りますが、いつもいつも構ってあげているわけではありません。
このタイマーに独立した電源を付けてあげれば時計にもなります。
タイマーに電池で電力を供給する事ができれば本体に電源を供給しなくても時計は止まりません。
話は最初に戻します。
ゲームのプログラムは画面を作っているときやユーザーからの入力をきっかけうごきます。
そのときに今どれだけ時間が経ったのかをタイマーから読みだしてゲーム画面に表示する時刻や時間の経過判定に使います。
なので処理落ちしたときでも時間は狂わず進んでしまっているわけです。
この記事が気に入ったらサポートをしてみませんか?