プロが教える店舗&オフィスのセキュリティ対策術

いつも思うのですが、フラッシュメモリの容量って、2の数乗なんですよね。
1(2^0)・2(2^1)・4(2^2)・8(2^3)・16(2^4)・32(2^5)・64(2^6)・128(2^7)・256(2^8)・512(2^9)といった調子で、10GBとか40GBとか96GBとかいった容量はほとんど見かけません。

HDDでは10GBとか20GBとかキリのいい数になっているのに、なぜメモリではそうなるのでしょうか?

A 回答 (5件)

その差はメーカーでなければ解らない話ですが、想像はできます。



まず、ファイルを管理するための領域が必要と言うこと。保存されているファイル群がどこにどんな並びで入っているかも、データと一緒に書いて覚えておく必要があり、そのために容量のいくばくかが消費されます。大容量なメモリであればあるほど、より多くのファイルが格納でき、それを管理する領域も大きなものが必要です。

後は、フラッシュメモリ固有の事情です。フラッシュメモリは書き換え可能回数が1万回程度と、HDDより圧倒的に書き換え耐久度が劣るメディアなので、ファイルを削除して別のファイルを書き込むと、さっきまで使っていた場所を避けて書くようにし、なるべく全体を平均的に使うように制御しています(平準化処理:ウェアレベリングとも)。

ところが、もし容量一杯にファイルが書かれてしまうと、この制御が破綻します。それでは困りますから、あらかじめ予備のブロックを作っておいてそれに備えます。当然、ここは容量のうちには含まれないため、メモリ本来の容量とは差が生じる(少なくなる)わけです。こうした制御を行わなければ、フラッシュメモリはすぐに書き換え回数の限界に達してしまい、使えなくなります。HDDではこんな処理はもちろん必要ありません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
結局、HDDもメモリも一長一短みたいですね。将来フラッシュメモリ以上の耐震性とHDD以上の耐久性を兼ね備えたメディアでも出れば、まだ状況は変わるかもしれませんが…

お礼日時:2009/10/03 15:05

> 例えばこの穴のところをシステム領域として活用



そんなことはできません。「メモリがない=そこに書いたデータは消えてなくなってしまう」です。例えて言うなら、16階建てと称して販売しているマンションが、実は手抜き工事で10階しかないみたいなものです。業者がいくら16階ですって言っても、物理的に存在しない部屋には住めません。今回もそう言うものだと思ってもらえれば。
    • good
    • 0
この回答へのお礼

再びありがとうございました。

確かに、システム領域は管理者用の階として考えると、物理的に無い階には管理者室も置けませんね。
ところでこの「システム領域」ですが、大容量になるほど領域を消費している気がしてなりませんが、気のせいでしょうか???

当方はS社製のMP3プレーヤーを所有していますが、8GBが8,082,391,040バイトで、16GBが16,334,684,160バイトなんですよね。
メモリ本来の容量は虫食い厳禁ならば8GBは8,589,934,592バイト、16GBは17,179,869,184バイトです。

ということは、8,589,934,592-8,082,391,040=507,543,552バイトがシステム領域になるわけですが、そうなると16GBは本来なら16,672,325,632バイトである筈なんですよね。
上記の例で考えると、16GBは8GBよりも337,641,472バイトも多くシステム領域を使っていることになりますが、この337,641,472バイトはどこへ行ってしまったのでしょうか?
「メモリがない=そこに書いたデータは消えてなくなってしまう」ならば、8,000,000,000バイトや16,000,000,000バイトにするわけにはいきませんが…

お礼日時:2009/09/15 21:17

これは、メモリの構成を考えればそうなっている理由が解ります。



メモリの場合は、アドレス指定はアドレス線の組み合わせで行います。アドレス線1本が1ビットを示し、アドレス線が8本で8ビット(256バイト)、16本で16ビット(64kバイト)のメモリアドレスが指定できます。

ではここで例として、10kバイトのメモリチップを作ることを考えてみましょう。10kバイトのメモリアドレスを指し示すのに必要なアドレス線は、

2^13=8192=8kバイト(足りない)
2^14=16384=16kバイト(足りるけど余る)

であり、14本必要です。すると、このメモリは10kバイトしか容量がないのに、アドレス線を14本(16kバイト分)占有することから、見かけ上は16kバイトあるように見えます。ここでさらにメモリを増設した場合は、アドレス線は15本目から割り当てる必要があり、メモリ配置は「10kバイトのメモリ」「6kバイトの穴」「次のメモリ」という虫食い状態となってしまいます。

もしこの穴のところにデータやプログラムが置かれると消えてしまい、致命的誤動作を引き起こします。なので、メモリチップは必ず2のべき乗に等しい容量で作られ、穴を開けないようにしているわけです。

一方のHDDでは、LBA(48ビット)を使っていて、この範囲内であればどんな容量でも作ることができ、穴が空いたりはしません。

ただ、今のHDDの容量は従来からのコンピュータ的計算方法にマッチしていません。本当であれば、参考URLのような表示方法とすべきなのですが。

参考URL:http://ja.wikipedia.org/wiki/2進接頭辞
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

フラッシュメモリにもこういった特徴があるのですね。
とはいえ、フラッシュメモリはシステム領域が設けられるのですが(WindowsやMP3プレーヤーなどが使用するデータの格納部)、例えばこの穴のところをシステム領域として活用する(上の図の場合、「6kバイトの穴」にOS等が所要するデータを格納した場合)と、どのような誤動作が起こるのでしょうか?

お礼日時:2009/09/13 08:54

Q/HDDでは10GBとか20GBとかキリのいい数になっているのに、なぜメモリではそうなるのでしょうか?



A/これはメインメモリと同じですね。基本的にコンピュータの演算は2進数(デジタル)で行われます。また、現在のメインプロセッサ(CPUやMPU)はそれに合わせて全て2のべき乗のbit数で演算を行います。そのため、半導体デバイスの基本容量は全て2のべき乗になるのです。

例えば、10進数で演算できる半導体デバイスが中心であれば、10単位で容量が増えるでしょうが、CPUが2のべき乗である以上それは効率的とは言い難くなるのです。

ちなみに、半導体記憶デバイスで10GBなどの容量を作る場合は、8GB+2GBといった具合で作ります。

こうした方が、コストパフォーマンス面でも作りやすくなります。

尚、HDDなどの記録デバイスは、磁性体の密度と読み書きを行うヘッドの性能に依存しますから、容量はそれによって変化します。即ち1.5GBなどの半端な数値になることがあるのです。ただし、極端に1295GBなどというのは、消費者に分かり難いイメージを与えますから、極力プラッター(ドライブ内部の記録メディア)の数とファームウェア(ハードウェアを制御するソフトウェア)で調整し端数がでない容量にしています。
    • good
    • 0
この回答へのお礼

ありがとうございました。

HDDとメモリにはこうした違いがあるのですね。

お礼日時:2009/09/13 08:54

>HDDでは10GBとか20GBとかキリのいい数になっているのに


それはパッケージに便宜的に書かれているだけです。
中身は1024バイトの基本単位で管理されています。

従って10Gと言っても中身は10Gピタリではありませんよ。
1Gを1024で計算するか1000で表示、計算するかの話に
なります。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
    • good
    • 0
この回答へのお礼

ありがとうございました。

>10Gと言っても中身は10Gピタリではありませんよ。
それはフラッシュメモリも同様なんですよね。2の数乗という容量もパッケージに便宜的に書かれているだけにすぎません。

HDDは20GBと書いてあっても18.9GB程度ですが、16GBと書いてあっても実際は14.5GB程度だったりします。
64,000,000B≒61MB、16,000,000,000B≒14.9GBになりますので、結局一緒だと思います。

お礼日時:2009/09/12 10:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!