SSDの容量が2の累乗の理由

このQ&Aのポイント
  • 市販されているSSDの容量は、2の累乗の値であることが多いです。これは、コンピュータが2進数のバイナリデータを扱うためであり、2の累乗の容量が扱いやすいからです。
  • ただし、一部のSSDやHDDでは、2の累乗の容量に当てはまらないものも存在します。これは、代替セクターなどの要素が影響している可能性があります。
  • 一般に、メモリーデバイスの容量が2の累乗の値を取る理由は、記憶素子の数が2の累乗である必要はなく、コンピュータがバイナリデータを扱うためのパターンとして2の累乗が扱いやすいからです。
回答を見る
  • ベストアンサー

SSDの容量が2の累乗の理由

市販されているSSDの容量って、64GB、128GB、256GB、512GBなど、 2のX乗の値であることが多いですよね。 メモリモジュール1枚の容量でも512MB、1GB(1024MB)、2GB(2048MB)、4GB、8GB、16GBなど同様のことが言えると思います。 なんでこうなの?という質問に対して、以前に コンピュータは2進数のバイナリデータを扱うから、必ず2のなんちゃら乗になるんだよ という回答がなされているのを見たことがあります。 でも、実際にはintelのSSDなどは120GBや240GBなどの上記の内容にはあてはまらないものもありますし、HDDで言えばもっといろんなバリエーションがあったと思います。 (代替セクターに使われている分が差し引かれていると考えると当てはまるのかもしれませんが) そもそも、ビットデータしか扱うことしかできないのであっても、記憶素子の集合が表せるパターンが2のX乗通りというだけであって、必ずしもその記憶素子の数が2のX乗でなければならないという理由にはならないと思います。 例えば、1バイトを記憶できる素子を900個並べたら容量900バイトのメモリーになり、 1024バイトの容量しか作れないというわけではありませんよね。 では、なぜメモリーデバイスの容量は2の累乗の値をとることが多いのでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

> 例えば、1バイトを記憶できる素子を900個並べたら容量900バイトのメモリーになり、 > 1024バイトの容量しか作れないというわけではありませんよね。 例えば10ビットのアドレス空間が存在した場合 アドレス空間の大きさは1024バイト分になりますが、 ここでメモリ容量が900バイトしかないとすると 10ビットのアドレス空間の中に利用できない部分ができてしまいます。 これはメモリコントローラーにとっては面倒な話で 本当にそんなメモリが存在しているなら アクセスできない部分を避ける例外処理を実装する必要が出てきてしまいます。 これはコストが高くなるというデメリットに結びつくため、 結果として高コストなくせに容量が少ないという何のメリットもないメモリシステムになってしまいます。 またメモリチップ側を見ると、行アドレスと列アドレスでアクセスできるように メモリセルのアレイを構成するわけですが、 行アドレスと列アドレスのどちらかで使わないアドレス(デコードしないアドレス)を 作れば容量を減らす(メモリセルアレイを小さくする)こと自体はできるでしょう。 しかし、中途半端に容量を減らしてもアドレス信号線の本数を減らすことはできないため、 メモリチップの端子の数は変わりません。 (わざわざ端子を設けて、ボード上に配線までして確保したアドレス空間を使わないというのは非常にもったいないことです。) アドレスデコーダーなどの周辺回路だって大して小さくはならないでしょう。 結果としてメモリチップの製造コストはほとんど変わりません。 むしろ ・前述の例外制御のコスト ・中途半端な容量のメモリチップの設計、検証などの費用(意味の無いラインナップを増やすのはそれだけでコストになる) もかかりますから、理屈上作れたとしてもこんな物作ろうとする人は誰もいないでしょう。 [参考] 第11回: メモリLSIの基本構成 http://ifdl.ec.t.kanazawa-u.ac.jp/~akita/class/old/06/lsi/11.html それから、アドレス空間を残すのがもったいないなら、 データバス幅(1アドレス当たりのビット数)を8bitとかじゃなく9bitにすることは できないのかと思うかとしれませんが、 これも技術上できてもそんな中途半端な物に需要がありません。 メモリ規格もそんな中途半端なバス幅を定めた物はメジャーな規格ではたぶん無いと思います。 (あんまり種類を増やしすぎるのは、それだけでコスト高になります。) というわけで > では、なぜメモリーデバイスの容量は2の累乗の値をとることが多いのでしょうか。 この答えは、そんな中途半端なメモリチップを作っても コスト高になるだけだからです。 ただ、これはメモリチップレベルの話なので、 例えば8Gbitのチップを3枚使って24Gbitとかいう構成ができないわけではないです。 > 市販されているSSDの容量って、64GB、128GB、256GB、512GBなど、 > 2のX乗の値であることが多いですよね。 SSDの容量については別に2のX乗にはなっていません。 256GBというのは、256,000,000byteですからね。 2のX乗である必要があるのであれば、例えば268,435,456byte(2の28乗)等になります。 この理由は、SSDの場合素子の不良に備えて予備領域を取っているためで、 予備領域の大きさ分SSDのシステムとしては領域が減ったように見えるので 2の累乗ではない256GBなどの容量になっています。 だったら、別に257GBとかでも良さそうな物ですが、そうなっていないのは 単に(人間にとって)きりの良い数字にあわせただけのことだと思います。 例えば、  PCパーツ最前線:日本サムスンに聞く「最新SSD“840”のこだわり」/ ランダムアクセス高速化に注力、コストパフォーマンスにも自信  http://akiba-pc.watch.impress.co.jp/hotline/20121117/sp_fline.html では | ―120GBと、250GB、500GBを比べると、オーバープロビジョニングの領域比率が違いますが、 |  それには何か意味があるのですか? | [岡田氏]  一般的に、SSD容量が増えるほど、あるブロックに対する |  書き換え回数は減る傾向にあります。 |  250GBや500GBに比べると、120GBは、やはりその点が不利となる可能性があります。 |  ただ実際には、大きな意味はありません。 |  単純に、数字の語呂を合わせているだけのことです(笑)。 |  例えば、125GBにしてオーバープロビジョニングの領域を減らしたとしても、 |  全く問題のない品質となっています。 のような話が出ていて、語呂をあわせただけだという話が出てます。

marriess
質問者

お礼

アドレス空間やアドレスバスの幅など、新しいことを学べました。 ありがとうございました。

その他の回答 (4)

noname#215107
noname#215107
回答No.5

夏休みの工作や趣味で、メモリのアドレスデコード回路を自作したことがあれば分かると思いますが、アドレッシングをn本のパラレル配線で行う場合、アドレス空間は必然的に2のn乗となります。 10本のアドレスバスで1024とおりの番地を指定できるのに、900バイトしか読み書きできないのであれば、残りの124バイト分は無効であるという信号を送るための別配線または信号伝達が必要となります。そうなると余計な配線またはロジック回路を組まなければなりません。 なお、ハード的に設計余裕がある場合は中途半端な容量でもOKです。最近はそうなのでしょうね。 でも、私の世代では、そんな余裕はありませんでした。

  • yucco_chan
  • ベストアンサー率48% (828/1705)
回答No.4

パソコンに使われるメモリは、PCが32bitバスシステムなら32の倍数(2のx乗でもあります)、 64bitバスシステムなら64の倍数(2のx乗でもあります)になります。 ↑ 結果は、共に同じ容量になりますが。 もし、上記の範囲外の容量にすると、アドレスを中途半端な値までの制御にしなければなりません。 メモリは、高速アクセスが求められるために、変な制御(回路)を入れたくないので、 上記のような倍数のメモリになります。 システムLSIに内蔵されるメモリの場合は、必要な容量のみにして中途半端な容量になる事が あります。 この場合は、ソフトのプログラミングでメモリの無いアドレスにはアクセスしないようにします。 HDDの場合は、容量がアナログ的要素で決まり、2のx乗で増やす事が困難なので、 製造可能な最大容量を確保するために、2のx乗ではない容量になります。 CDやDVD、BDも同じです。 SSDの場合は、特に理由は無いはずで、単にメーカーの戦略のような気がします。

  • parts
  • ベストアンサー率62% (6364/10149)
回答No.2

SSDの60GBは4GB、120GBは8GB、180GBは12GB、240GBは16GB、480GBは32GBという答えが分かれば、わかり易いでしょうけど。 X25-M Mainstream は80GBで16GBですけどね。 これは、Intel SSDのルールです。60GBのSSDは4GBを代替セクターや何らかの緩衝セクターとして利用する仕様です。32GB辺りで、2GBが使われており、128GBなら、8GBになり、256GBなら16GBになります。この辺りは、SSDを見れば多くの人は感づくはずです。容量は若干犠牲にしますが、その代わり信頼性を高めるための措置のために利用されています。 もともとNANDフラッシュは書き換え回数の上限があるため、それによるトラブルが多いですから、こうやって意図的に一部を隠蔽し代替に使うことで、信頼性を高めるのがIntelの戦略と考えられます。 Q/なぜメモリーデバイスの容量は2の累乗の値をとることが多いのでしょうか。 A/一般に2のべき乗になるのは、2進処理を前提とする媒体では当たり前のことです。その理由は、情報の単位が4bit、8bit、16bit・・・と2のべき乗で処理されていることと、それを転送する回路もそれを前提に、バス回路を形成しており、最も効率的に情報伝達ができるが故の仕様です。(もちろん、例外はあります) ハードディスクなどの磁気ディスク媒体や光学ディスク媒体がそういう仕様ではないのは、これらはベースが半導体ではないためです。要は、データの保存デバイスとして専用に特化しており、わざわざ2のべき乗で統一する必要はないのです。 もっとわかりやすく回答すると、メモリデバイスは、ロジック回路の発展として考えられています。 たとえば、CPUが4bitならば、それと相性の良い回路で設計する方が、どの製品でも互換性をもって供給でき、安価に大量生産できるという強みから、2のべき乗の処理に適合した製品とするのです。その後、たとえば一部の機能をソフトウェアまたは、ハードウェアの回路停止によって隠蔽し、停止しているように見せたり、IntelSSDのように別の役割に一部を提供し、実容量から外すということは、比較的よく行われますが、専用品のASIC+オンチップLSI製品でなければ、通常は、2のべき乗を前提とします。これは、汎用性を前提として価格を抑えるための手段です。 たとえば、5bitのバス回路を作った場合、それを余すことなく使えるのは、周波数を相応倍にした10、15、20の回路になります。これを、4bitや8bitでそのまま使えるかというと、一定のアップサンプリングやアップコンバートを必要とするため、その回路をつけるだけでコスト増になります。 しかし、32bit幅と64bit幅だけなら、単純に倍速クロックと等速クロックだけの違いで、処理は終わります。要は、サンプリングを倍速かするか、幅を広めるかの話だけです。そのため、下手にビットを刻んで製品を作るより、半導体の場合は2のべき乗で構成した方が、汎用性(他の機器で使える可能性)が高くなり、歩留まりが上がり生産コストが劇的に下がるという特徴があるのです。 それだけです。 そして、何より重要なのは、容量が必ずしも2のべき乗にならない製品は、2のべき乗で計算したときに、どれだけの容量差が出るかを、他の製品と比べれば理由が分かるはずです。ちなみに、180GBが192GBである理由は、64GBが3枚か、32GBが6枚だからです。緩衝または欠陥管理装置として4/64または2/32として容量を提供すれば、つじつまが合うのですよ。 尚、これが66GBの容量で132GB、264GBとなると、LCD+BISのような特殊なエラー訂正があるか、実際にそういう端数のある規格を作ったかのどちらかとなります。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

>1バイトを記憶できる素子を900個並べたら容量900バイトのメモリー なら、任意の場所のデータを読み書きする時、アドレスを表すのに用いる バス(線のかたまり)は何本いるでしょうか? 9本なら512個、10本なら1024個までアクセスできるのに900個しか使わないというのは もったいなくないですか?

関連するQ&A

  • 大容量SSDから小容量SSDへクローンしたい

    自作パソコンです、トラブルに備え、データ用に使っている120GBのSSDにOS用の256GBのSSDにクローンしたいです。調べましたら「大容量HDDから小容量HDD/SSDへクローン」沢山あります、(大容量HDDから)の部分を(大容量SSDから)読み替えてもよいのでしょうか。要するに、容量の大きいSSDを小容量のSSDにクローンしたいということです。256GBの使用領域は73.8GBです。

  • 交換したSSDの容量について

    ノートPCの記憶媒体を120GBのHDDから240GBのSSDへ交換いたしました。(SATA) 既存のデーターをクローンによりSSDへコピーしPCに装着、うまく認識し作動も早くなりました。 今回、小さい容量の媒体から大きい媒体にクローンを行ったのは初めてです。 クローンなので当たり前とは思いながら、SSDの容量を確認したところ以前(HDD)と変わりませんでした。 SSDの240GBを使用出来るようにする方法を教えてください。 宜しくお願い致します。

  • メモリースティックの容量について

    http://okwave.jp/kotaeru.php3?q_id=2107430 と http://www.memorystick.com/jp/ms/variety1.html#capacity を見て気がついたのですが、どうもメモリースティックの容量が少なく見えます。 もちろん、人間は1,000で、コンピューターは1,024で、それぞれ位をあげるために、実容量は表記より少なくなります。しかし、 256MBの場合…2億5,600万バイトとすれば約244MB、2億5,000バイトとしても約238MBとなるが、256MBのMSは約220MBと、20MBほど少ない 512MBの場合…5億1,200万バイトとすれば約488MB、5億バイトとしても約476MBとなるが、512MBのMSは約465MBと、15MBほど少ない 1GBの場合…10億バイトとしても約953MBながら1GBのMSは約940MBと、13MBも少ない 2GBの場合…2億バイトとしても約1.91GBでありながら2GBのMSは約1.85GBと、0.06GB(60MB)も少ない このように、どのメモリースティックも表記容量を1.024の単位に置き換えた値より少なくなっています。また、256MBは所有しているUSBメモリーよりも26MBも少なく、1GBも所有しているオーディオプレーヤーより30MBほど少ないです。 これは、いったいなぜでしょうか???

  • メディアの容量を2進法で計算しない理由

    PCメディアですが、PCは1,024で位が上がるのに対して、表記上のメディア容量は1,000で位が上がるようになっています。 そのため、たとえばHDD容量が80GBと書いてあっても、「80GB=800億バイト」で計算してしまうために、Windows上では約74.5GBになってしまいます。 疑問に思うことは、なぜWindows上での表記と実際の容量を合致させないのかということです。 Windows上で80GBと表示されるためには約860億バイト必要ですが、HDDメーカー側は約860億バイトの容量を持つHDDは製造していません。 USBメモリも2GBのUSBメモリーは20億バイトで計算してしまうために1.85GB程度になります。本当に2GB分のデータを記録できるようにするには約21.5億バイト必要ですが、21.5億バイトの容量を持つUSBメモリーはありません。 容量単位が大きくなれば、当然表記と実際に使える容量の差は大きくなります。 なぜ、HDDメーカーやメモリメーカーは、「1MB=100万バイト」・「1GB=10億バイト」で計算した容量で出荷しているのでしょうか? ユーザーとしても、表記上の容量も「1MB=104万8,576バイト」・「1GB=10億7,374万1,824バイト」で計算してくれたほうが、計算も楽で容量も多くなるのですが。 あと、DVDはなぜ「4.3GB」(一層)とか、「7.9GB」(2層)とか書かないのでしょうか?実際にはそのくらいしか記録できないのですが…

  • SSD全容量と使用容量の合計が合わないのは普通?

    EeePC901xの4GBのSSD(Cドライブ)全容量は、プロパティで見ると、3,997,450,240バイトでした。 そして、Cドライブ直下のフォルダ(Windows、Program Files、Documents&Settings、Intel)とC直下にあるファイル(隠しファイルも含む)の各プロパティにある各容量(サイズ)を足してみると、合計は3,250,560,862バイトで、SSD容量との差が746,889,378バイトになりました。 フォーマットに関する領域もあるのでしょうが、こういう差が出るのって正常な事なのでしょうか? よろしくお願いします。

  • SSDの容量が少ない場合はどうしたらよいでしょうか

    SSDの容量が少ない場合はどうしたらよいでしょうか? レノボG570のパソコンをSSDに換装しましたが 容量は100GBと表示されましたており 空き領域は48GBとなっています。 以前に空き領域が無くなりパソコンが立ち上がらなくリカバリーをしてから再度使い始めました。 この先 同じように使っていくと同じことの繰り返しになるかと心配しています。 外付けHDDをつけてもSSDから記憶されていき SSDが空き領域が無くなり立ち上がらなくなりましたので解決方法がないかと心配しています よい方法を教えて下さい。

  • FDの記憶容量計算について。

    ただ今、J検3級に向けて勉強中です。 FDの記憶容量計算について、教えてください。 1セクタが512バイト,1トラックが9セクタ,片面80トラックでフォーマットされている両面記録可能なフロッピーディスクの記憶容量を計算してみる。 1トラック分の記憶容量=512×9(バイト) 1面分の記憶容量=1トラック分の記憶容量×80(バイト) したがって、総容量=1面分の記憶容量×2(両面分)=737280B(バイト) =737280÷1024=720KB(キロバイト) セクタサイズだけを1024バイトと変えた場合に、同様の計算をすると、その記憶容量は1.44MB(メガバイト)となる。 上記とあります。 専門用語が分からない私は、まず、何をどのようにイメージしたら分かりやすいでしょうか。 また、専門用語ではなく、分かりやすい言葉で書き換えてくださる方はいらっしゃいませんでしょうか。 よろしくお願いいたします。

  • 外付けSSDのフォーマットについて

    Trancsendの外付けSSDをフォーマットする上で https://jp.transcend-info.com/Products/No-1006 アロケーションサイズ4096Kbyteを選びました。他の外付けHDDもそうです。960GB~3TBの容量(実際は少し少なくなる)があるので4096をチョイスしましたが、古いHDDだと7年以上前のWD REDやSeagete Baraccuda2TB~3TB、昨今購入した外付けSSDは960GBで2019年発売です。下記の資料から、PowerShellやパーティション作成ソフトにてGPTに変換しNTFSでフォーマットしていますが アロケーションサイズは4096Kbyteに統一してフォーマットしていますが、既定の方が良かったのでしょうか?教えてください。 https://support.microsoft.com/ja-jp/help/140365/default-cluster-size-for-ntfs-fat-and-exfat →MSサイトのアロケーションサイズについて (1)非AFTのHDD~ セクターあたりのバイト数 ・・・・512 物理セクターあたりのバイト数・・・・512 (2)AFTのHDD(512E) セクターあたりのバイト数 ・・・・512 物理セクターあたりのバイト数・・・・4096 (3)4K Native のHDD セクターあたりのバイト数 ・・・・4096 物理セクターあたりのバイト数・・・・4096

  • HDDとSSDの容量比較はどのようにするのですか

    PCのカスタマイズ欄でHDD500GBとSSD128GBの選択肢があり迷っています。 データ保存の安全性と速さを追及するならSSDというのはわかったのですが、容量の比較を教えてくれる資料に出会えないのでピンときません。 仮に、500GB相当のデータがあるとして、128GBのSSDに収まるものかどうかが知りたいのです。 また、概算的でも換算する方法があれば知りたいのですが。

  • SSDの容量はどれくらいがいいか?

    無知なのでどなたか教えてください。パソコンでSSDを買うのですがどの容量がいいのかさっぱりです。 データ保存は別途1TBのHDDを買ったのですがSSDはあくまで起動とかを早くしたくて買うのでそこまで容量多くなくてもいいのかなと思ってるのですWindows10とかその他にもアプリ入れたら容量それなりにないとダメなのかなとか思ってしまい結局迷ってしまいます。使用用途はちょっとした調べ物だったりYouTube見たり通販で買い物とかするだけで動画編集とかはしません。画像編集とかはオークション出品の際に商品の画像を載せる際にモザイクとか矢印とか解説書いたりするのにちょっと使うくらいです。(とは言えPhotoScape Xで5分足らずでできます)

専門家に質問してみよう