CD の読み取り、書き込み速度は、音楽CDが基準となっています。
CDの1セクタは2352バイトで、1秒間は75フレーム(セクタ)ですから、
2352 × 75 = 176,400 Byte/sec となります。
データCDでは、Mode1の場合1セクタあたりの実データは2048バイトですから、
2048 × 75 = 153,600 Byte/sec に見えます。
実際には、位置情報やエラー訂正情報、サブチャネルの情報なども
同時に読み書きしているので、メディアとドライブとの間では、
より多くのデータの授受がおこなわれています。
MMC の速度に関するコマンドでは、音楽CD の基準で設定するはずです。
DVD では、1倍速は 11.08 Mbps といわれています。
これは、11.08 / 8 × 1000 × 1000 = 1,385,000 Byte/sec だそうです。
1024ではなくて1000らしいです (DVD-FAQを参照)。
しかも、DVD 1セクタあたりの実データ容量の2048バイトで割り切れません。
この 11.08Mbps という数字、DVD-Videoを1時間で再生するための値
ということで、4,700,000,000 Byte をこれで割れば大体1時間になります。
でも、DVD-Video は MPEG-2 という劣化圧縮だから、
秒あたりのデータ量は一定じゃないですよね。
ドライブにバッファメモリが備わっているのですから、
先読みなどの技術を使っているのでしょうか。
よく考えると、4,700,000,000 も 2048 で割り切れません。
実際の DVD±R/W メディアでは、メーカーによる違いはありますが
4,700,000,000 よりも少し大きな値になっています。
ImgBurn では、正確な容量が表示されます。
MMC では、READ DISC STRUCTURE で取得できます。
まあ、ディスクにはファイル名、更新日時、ディスク上のファイルの位置とサイズなど
の管理情報も記録せねばなりませんし、
ファイルはセクタで区切らねばなりませんから、
実際には、ファイルの総バイト数より多い容量が必要です。
CD でも同じですが。
だから、一般ユーザー向けにはあいまいな表現でいいのかもしれません。
プログラマーにとっては死活問題ですが。
…何故か容量の話になってしまった。
ついでですから、測定単位の接頭語の話もしましょう。
長さや重量などの規格では、キロ、メガ、ギガは 1000 の倍数です。
でも、コンピュータ内ではCPU内での計算の容易さからか、
1024 の倍数で表記することが多いんですよね。
これが混乱の元になるわけで。
なお、MMC の仕様書では、小文字の場合 1000 の倍数、
大文字の場合、1024 の倍数になっています。
“k”は 1,000
“K”は 1,024
“m”は 1,000,000
“M”は 1,048,576
“g”は 1,000,000 000
“G”は 1,073,741 824
です。
速度に関する記述を書き出してみると、
MODE SENSE コマンドの CD/DVD Capabilities and Mechanical Status で取得する速度は [kbytes/sec]
SET CD SPEED コマンドで設定する速度は [Kbytes/sec]
GET PERFORMANCE コマンドの Performance で取得する速度は [1,000 Bytes/second]
GET PERFORMANCE コマンドの Write Speed で取得する速度は [kilobytes per second]
SET STREAMING コマンドでは、容量は [kilobytes]、その読み書きにかかる時間は [milliseconds]
となります。例によって使ったことのないコマンドも多いですが。
ややこしくありませんか。
ですから、このブログでは、なるべく接頭語のないバイト単位で
話をしたいわけです。本当は。出来ていないけれど。