モニタは電子線を用いてイメージを画面に描画します(カラーモデルなら電子 線 3 つで、モノクロモニタなら電子線 1 つです)。スクリーンの前面は色付 きの蛍光体(ピクセル)のパターンで覆われています。蛍光体に電子が当たると 光子が出て、見えるようになります。
電子線は水平な線(スキャンライン)を画面の左から右、上から下に向かって描 画します。電子線の強度を変えることにより、様々な色や明るさのピクセルを 描画することができます。
各スキャンラインの後には、電子線は画面の左側に戻り、次の行に移動しなけ ればなりません。これは水平復帰(horizontal retrace)と呼ばれます。画面 (フレーム)全体を描いた後には、電子線は画面の左上隅に戻ります。これは垂 直復帰(vertical retrace)と呼ばれます。水平復帰や垂直復帰の間には、電子 線は止まります(ブランク状態になります)。
電子線がピクセルを描画する速度は、グラフィックスボードのドットクロック 値によって決まります。例えばドットクロック値が 28.37516 MHz(一秒あたり 数百万サイクル)の場合には、それぞれのピクセルあたりの長さは 35242 ps (ピコ秒)です:
1/(28.37516E6 Hz) = 35.242E-9 s
画面の解像度が 640x480 ならば、1 スキャンライン分の 640(xres)ピクセル を描画するのにかかる時間は
640*35.242E-9 s = 22.555E-6 s
となります。ですが、水平復帰にも時間がかかる(例えば 272 「ピクセル」) ので、1 スキャンライン全体でかかる時間は
(640+272)*35.242E-9 s = 32.141E-6 s
となります。ですから水平スキャンレートは約 31 kHz と言えます:
1/(32.141E-6 s) = 31.113E3 Hz
画面全体では 480(yres)行ありますが、垂直復帰(例えば 49 「ピクセル」)も 考えなければなりません。ですから、画面全体では
(480+49)*32.141E-6 s = 17.002E-3 s
かかります。 垂直スキャンレートは約 50 Hz になります:
1/(17.002E-3 s) = 58.815 Hz
つまり、画面のデータは 1 秒あたり約 59 回書き直されるということです。 目に見えるようなちらつきを起こさずに安定したピクセルを得るために VESA が推奨している垂直スキャンレートは最低 72 Hz です。しかし、我慢できる ちらつきというのは人それぞれです。50Hz で使っても全く問題ないという人 もいれば、筆者のように 80 Hz より小さいと気付いてしまうという人もいま す。
新しいスキャンラインがいつ始まるかはモニタには分からないので、グラフィッ クスボードはスキャンラインごとに同期信号(水平同期または hsync)を出しま す。同様に、新しいフレームごとにも同期信号(垂直同期または vsync)を出し ます。画面における画像の位置は、同期信号が発生するタイミングの影響を受 けます。
全てのタイミングを以下の図にまとめました。水平復帰時間は左マージン (left margin)、右マージン(right margin)、水平同期の長さ(hsync len)の合 計です。垂直復帰時間は上部マージン(upper_margin)、下部マージン (lower_margin)、垂直同期の長さ(vsync_len)の合計です。
+----------+---------------------------------------------+----------+-------+
| | x | | |
| | |upper_margin | | |
| | x | | |
+----------###############################################----------+-------+
| # x # | |
| # | # | |
| # | # | |
| # | # | |
| left # | # right | hsync |
| margin # | xres # margin | len |
|<-------->#<---------------+--------------------------->#<-------->|<----->|
| # | # | |
| # | # | |
| # | # | |
| # |yres # | |
| # | # | |
| # | # | |
| # | # | |
| # | # | |
| # | # | |
| # | # | |
| # | # | |
| # | # | |
| # x # | |
+----------###############################################----------+-------+
| | x | | |
| | |lower_margin | | |
| | x | | |
+----------+---------------------------------------------+----------+-------+
| | x | | |
| | |vsync_len | | |
| | x | | |
+----------+---------------------------------------------+----------+-------+
フレームバッファデバイスは、全ての水平タイミング値がドットクロック(ピ コ秒(1E-12 秒)単位)の数であることと、全ての垂直タイミング値がスキャン ラインの数であることを期待します。