1,000換算と1,024換算が混在するコンピュータの世界



 9月18日付(現地時間)のロイター通信の記事(Reuters - Technology, Computer Makers Sued Over Hard-Drive Size Claims)によれば、Apple、Dell、Gateway、HP、IBM、シャープ、ソニー、東芝の8社が、複数の個人によってHDDの記載容量を巡る集団訴訟を起こされたのだという。要するに、実際のHDD容量がPCベンダの広告に記載されている容量よりも少ないことに腹を立てたらしい。

 HDD容量の食い違いは、古くからPCを使っている人にとってまさに常識の話なのだが、それが通用しない時代に突入してしまった。洗濯機に子供を放り込んで洗ってみたり、電子レンジにペットを入れて乾燥してみたりと、世の中には誰もが想像もつかないことをするユーザが必ず現れる。

 これはあまりにも極端な例だが、PCもコモディティ化が急速に進んでおり、過去の常識(PCの世界でいうところの一般常識)が通用しないユーザに使用される確率は日々高まっている。今回の一件は、それを示す大きな証拠となった。

●“PCをちょっとだけ知っている”PCユーザの存在

 最近では、丁寧なスタートアップガイドやビデオを添付することにより、“PCをまったく知らない”PCユーザでもWindowsのデスクトップ画面を表示するくらいまでは行き着けるようになった。しかし、これからの時代は“PCをちょっとだけ知っている”PCユーザに誤解を招かないような対策も同時に立てていかなければならない。“PCをちょっとだけ知っている”PCユーザは、PC以外の世界で常識とされることや独自に学んだPCの知識が一種の固定観念となり、”PCをよく知る”PCユーザにとっての常識を「非常識」と判断する可能性が高いからだ。

 「トラブルが発生するのはユーザの勉強不足に原因がある」とユーザに責任転嫁するのは簡単なことだ。たぶん5年前だったらまかり通っただろう。しかし、すでに時代は移り変わり、そんな責任転嫁で済まされない状況にある。筆者は、PCのコモディティ化に合わせて、PCベンダも、そしてPC関連情報を伝えるメディアの我々も、”PCをよく知る”PCユーザにとっての常識を、あらゆるPCユーザにとっての常識となるように啓蒙する努力をしなければならないと考えている。今回は、そんな啓蒙活動(?)の一環として、1,000換算と1,024換算が混在するコンピュータの世界について取り上げていく。

●世の中の常識はあくまでも十進法

 まず、世の中にあるほとんどのものは、0から9という10個の数字、すなわち十進法によって表現されている。なかには、時刻にちなんだ十二進法や六十進法などの非十進法が引っ張り出されることもあるが、これらは一部の宗教や思想上どうしても必要だったり、子供の頭脳を特別に鍛える学習材料として用いられるくらいにとどまる。つまり、ほとんどの人間にとって、日常生活の常識はあくまでも十進数なのだ。

 国際単位系(SI)の定義によれば、次元的に独立であると見なされる物理量は、長さ(メートル[m])、質量(キログラム[kg])、時間(秒[s])、電流(アンペア[A])、熱力学温度(ケルビン[K])、物質量(モル[mol])、光(カンデラ[Ca])の7種類である。その他の物理単位(組立単位)は、これらの7種類の基本単位から数値係数を含まない乗除算によって導き出せる。

 物理量は対象とするものによって大小さまざまだが、これらを簡潔に表現できるように、国際単位系では10の24乗を表すヨタ[Y]から10の-24乗を表すヨクト[y]まで、10の整数乗倍を作るための接頭語が20種類用意されている(表1)。いうまでもなく、これらの接頭語は十進法に基づいて定義されたものだ。

【表1】国際単位系で定義されている接頭語の記号とその読み方
倍数接頭語読み方
10の24乗Yヨタ
10の21乗Zゼタ
10の18乗Eエクサ
10の15乗Pペタ
10の12乗Tテラ
10の9乗Gギガ
10の6乗Mメガ
10の3乗kキロ
10の2乗hヘクト
10の1乗daデカ
10の-1乗dデシ
10の-2乗cセンチ
10の-3乗mミリ
10の-6乗μマイクロ
10の-9乗nナノ
10の-12乗pピコ
10の-15乗fフェムト
10の-18乗aアト
10の-21乗zゼプト
10の-24乗yヨクト

●コンピュータの基本は二進法

 一方、情報理論を学んだことがある人ならばご存じのように、コンピュータの基本は二進法である。二進法とは、0と1という2つの数字だけを用いる表記法のことだ。現在のコンピュータの仕組みは、マサチューセッツ工科大学(MIT)で研究助手をしていたクロード・シャノンが1930年代に築き上げた、電気スイッチ回路と二進法によるコンピュータの基礎理論に基づいている。二進法を採用した理由は、1と0の数字をスイッチのON、OFFで簡単に対応づけられるからだ。もっと今風に言えば、電気回路(素子)の電圧が高いか低いかに対応づけられるからということになる。

 そこで、二進法の数字と符号の系列で表せる情報の1つ1つの桁を「bit」と定め、これを1個以上使用することで情報を表現している。また、人間が識別できる文字や記号を表すために、8bitをひとまとめにしたB(byte)という情報単位も生まれた。歴史をさかのぼれば、6bitや7bitをひとまとめにした時代もあったが、現在では英数字や制御コードを表すために8bitをひとまとめ(これが1B)にするのが一般的だ。

 さて、こうした情報を蓄積するための記憶装置には、半導体メモリ(DRAM、SRAM、フラッシュメモリ)、磁気記憶装置(フロッピーディスク、ハードディスク、テープ)、光記憶装置(CD、DVD)、光磁気記憶装置(MO、MD-Data)などがある。これらに蓄積される情報も、そのほとんどは二進法に基づいている。

 例えば、半導体メモリのDRAMならば、コンデンサに蓄積される電荷の有無によって0と1、すなわち1bitの情報を記憶している。また、磁気記憶装置ならば、記録面(磁区)の磁化方向がN-SかS-Nかによって、光記憶装置(相変化記録方式)ならば、記録面の相変化材料が結晶状態か非結晶状態かによって、それぞれ0と1を記憶している。最近では、1箇所に1bit超の情報を記録する多値記録技術が用いられることもあり、事情は少々複雑になってしまったが、記憶装置全体で見れば情報のやり取りは現在もなお二進法に基づいている。

●コンピュータのために生まれた新しい接頭語

 bitなりbyteなり、これらの情報単位が複数集まると、その総数をカウントしたり、その中にある情報の位置を指定する必要性が生じる。世の中の常識からすれば、こうした個数、位置の表現に十進法を用いるのが一般的だが、コンピュータはこれらに対しても二進法を用いている。なぜならば、個数や位置を記憶する“器”そのものが二進法に基づくものだからだ。

 HDDを例にとれば、セクタ(データの読み書き単位)を連番で管理するLBA(Logical Block Addressing)方式では、LBA番号を指定する場所として28bitもしくは48bitのレジスタを用意している。つまり、ソロバンのように0から9の数字が複数桁用意された十進数に基づく表現ではなく、0と1だけが入る器が28個または48個用意された二進数に基づく表現を採用しているわけだ。

 ここでは、特にbitやbyteの個数に焦点を当てていこう。これらの個数が多数に膨れ上がったとき、これらを簡潔に表現するには国際単位系と同様に接頭語を使用すればよいことが分かる。しかし、二進法で表現している以上は、十進法に基づく接頭語をそのまま使用するのは都合が悪い。

 そこで登場したのが、二進法に基づくコンピュータのための接頭語だ。十進法での1,000に最も近く、しかも2の累乗で表せる数値は1,024(2の10乗)なので、コンピュータの世界では1,024を基準とした接頭語が用いられるようになった。こうすれば、二進法の流儀に従いながら、十進法の接頭語にかなり近い形で簡略表記できる。例えば、1,024B(バイト)の情報量は1KB(キロバイト)と表現される。なお、キロの単位に関しては、k(=1,000)と区別するために大文字のK(=1,024)が使用される。Kより上位の接頭語については国際単位系と同じ記号が用いられ、Kの1,024倍がM(メガ)、Mの1,024倍がG(ギガ)、Gの1,024倍がT(テラ)といった感じで定義される(表2)。

【表2】コンピュータのために生まれた接頭語。
1,024倍ごとに上位の接頭語につながる
接頭辞読み方倍数1,000換算との誤差
Kキロ2の10乗= 1,024 2.4%
Mメガ2の20乗= 1,048,576= 1,024K4.9%
Gギガ2の30乗= 1,073,741,824= 1,024M7.4%
Tテラ2の40乗= 1,099,511,627,776= 1,024G10.0%
Pペタ2の50乗= 1,125,899,906,842,620= 1,024T12.6%

●半導体メモリは1,024換算、それ以外の記憶装置は1000換算が主流

 次に、接頭語が用いられている具体的な例を見ていこう。まず、メインメモリの場合、今日のPCではMB(メガバイト)やGB(ギガバイト)という接頭語付きの単位が多く用いられる。結論からいうと、これらのMやGは二進法をベースとした1,024換算の接頭語である。例えば、512MBのメモリモジュール(DIMM)ならば、4,294,967,296bit(=512×1,024×1,024×8)の情報を記憶できる計算となる。

 同じ考えに従えば、磁気記憶装置や光記憶装置、もしくはこれらの記録メディアに対しても1,024換算の接頭語を適用するのが自然な流れといえる。しかし、半導体メモリ以外の記憶装置では、十進法をベースとした1,000換算の接頭語が広く用いられている。例えば、今回大きな争点となっているHDDの記憶容量に加え、光ディスクのメディア容量なんかも1,000換算が堂々とまかり通っている。

 今回は、特にHDDの記憶容量について調べていこう。HDD上のセクタ位置は、LBA番号(古くかシリンダ、ヘッド、セクタ番号の組み合わせ)によって指定される。例えば、某社から発売されている200GBのHDDは、LBA番号として0から398,297,087までが使用される。通常、1セクタの記憶容量は512Bなので、HDD全体の記憶容量は203,928,109,056B(=512×398,297,088)という計算になる(論理フォーマットを施したHDDの実質的な記憶容量については考えない)。

 問題は、これに接頭語を付けて表現するときに、1,024換算とするのか、それとも1,000換算とするのかということだ。世の中の常識である1,000換算で計算すると、約203.9GB(≒203,928,109,056÷1,000÷1,000÷1,000)となり、確かにHDDベンダが公表している200GBという記憶容量を満たしていることが分かる。しかし、半導体メモリと同じく1,024換算で計算すると、約189.9GB(≒203,928,109,056÷1,024÷1,024÷1,024)となり、公表値より10GB以上も少なくなってしまう。

 記憶容量に10GBの違いが生じると、MPEG-2の高画質動画(ビットレート8Mbps)ならば約3時間、MP3の音楽(ビットレート128kbps)ならば約182時間もの差になって現れることになる。これは、多くのユーザにとって無視できないほどの違いだ。実際、今回の集団訴訟のきっかけもその辺にあるのだという。

●HDDも1,024換算で記憶容量を記載するように切り替えるべき

 筆者は、かつてディスクストレージに通じた数々の技術者に「なぜHDDの記憶容量は1,000換算を採用するのか?」という質問をしたことがある。公式的には「世の中の常識である1,000換算のほうが理解しやすいから」ということらしいが、いまいち納得がいかない。一方、非公式ながら一部から核心を突くような回答も返ってきた。それは「HDDの記憶容量を、なかば合法的により大きく見せられるから」というものだった。

 HDDの記憶容量が100MBにも満たない時代だったら、1,024換算でも1,000換算でも目くじら立てるほど大きな違いは現れなかった。1,000換算を用いて少しだけ大きく見せられるのだから、それはHDDベンダのかわいい工夫(テクニック)とも見なせた。しかし、HDDの記憶容量が何百GBにも達すると、1,000換算ではGB単位で記憶容量の差が生まれるため、古くからPCを使い慣れている寛容なユーザでもない限り、異論を唱えられても致し方ない。しかも、今回は訴訟沙汰にまで発展してしまったわけだから、“なかば合法的に”という言い分ももう通らないだろう。

 筆者は、冒頭で「1,000換算を基本とするHDD容量の常識をあらゆるPCユーザに対する常識と見なせるように啓蒙しよう」と述べたが、その反面、HDDベンダには「こんな悪しき常識を捨て去り、そろそろ1,024換算による表記に切り替えようよ」ということも勧告したい。今回の集団訴訟はPCベンダをターゲットとしたものだが、本をただせば今回の原因を作っているのはHDDベンダである。すべての記憶装置で1,000換算が採用されているのであれば、古くからの慣習に従おうという気持ちになれなくもないが、メインメモリが1,024換算で、HDDが1,000換算なのは明らかに不自然だ。

 今すぐに変えることは難しいかもしれないが、近い将来はすべての記憶装置で1,024換算が採用され、ウソ偽りのない正確な記憶容量があらゆるエンドユーザに伝わるような時代が訪れることをぜひとも期待したい。

【追記】

 脱稿後にさらに調査を進めたので、追記という形でご報告したい。

 IEC(International Electrotechnical Commission:国際電気標準会議)では、'98年12月に二進数に基づく接頭語の新たな定義を承認している。新たな定義によれば、1,024は大文字のKではなく、Ki(kibi)という接頭語になる。また、Kiの1,024倍はMi(mebi)、Miの1024倍はGi(gibi)、以後Ti(tibi)、Pi(pebi)、Ei(exbi)と定義されている。こちらの接頭語が世界で広く認知されるようになれば、1,000換算では国際単位系と同じ接頭辞を、1,024換算ではIECによる新しい接頭語を使い分けられる。

 また、HDDが1,000換算を採用したのは、国際単位系で定められた本来の接頭語を尊重して、もっと具体的に言えばIECで定められた国際規格「IEC 60027-2」に従って接頭語を使用しているからということが分かった。“容量が大きく見える”というのは単なる副産物であって、故意ではなかったのだ。正確な情報をつかめたのでいまここで早急に訂正したい。

 しかし、国際単位系の接頭語を二進法ベースでも使用することが常識となっている現在、国際規格に基づいているからとはいえ、ユーザーから誤解を招くことに変わりはない。解決方法としては、製品の仕様表に接頭語のない記憶容量を必ず併記するか、IECで新たに承認された新しい接頭辞を早く普及させて、こちらを積極的に使用するかの二通りということになる。最も美しい解決法は、やはり後者を採用することだ。

□Physics Laboratory of NIST, Prefixes for binary multiples
http://physics.nist.gov/cuu/Units/binary.html

バックナンバー

(2003年9月22日)

[Text by 伊勢雅英]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.