• ベストアンサー

メモリについての質問

基本的なことですが、自分では解決できないので質問させてもらいます。 (1)1つのアドレスは8ビットときまってますが、8ビットである必然性はあるのでしょうか?別に9ビットでも7ビットでもいいと思うのですが、ただの歴史的な慣習でしょうか? (2)CPUの性能はアクセスできるビット数が16,32と上がってますが、一つのアドレスのメモリを2倍(8→16ビット)にしたら同様にコンピュータの性能が上がると思うのですが、どうしてそうならないのでしょうか?

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

  • ベストアンサー
  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

(1)バイトマシンだからです。1バイト=8ビット  昔、キャラクタマシンというのも存在していました。  1キャラクタ=6ビットでした。    今、8ビット以外を使うと、文字コードの互換性など  大混乱を起こすでしょう。売れないのでありえません。  処理性能の問題とともに互換性の問題も大きいでしょう。  なお、7ビットや9ビットはデータ効率が悪いと思いま  すよ。 (2)そのようなマシンも昔ありました。ワードマシンです。  32ビット単位のアドレッシングですね。無くなったで  しょう。16ビット単位もありました。  パソコンが世の中に出る前から全てバイトマシンに統一  されたようです。互換性の問題と処理効率の問題だと  思います。  ワードマシンが存在した大きな意味はアドレス空間の  拡大だと思います。  32ビット命令→64ビット命令と命令が扱うアドレスが  拡大するにつれ、バイトアドレスでも十分なアドレス  空間が得られ、バイト処理も効率よく出来ます。  しかし、考えようでは現時点で、16ビットや32ビットの  64ビットデータを扱う命令が存在しますので、  アドレッシングは、8ビット、16ビット、32ビット、64ビ  ット単位を併用していると言えます。  32ビットデータの命令に0,4,8,12など4の倍数でないアド  レスを与えると、命令の速度が落ちるのが一般でしょう。  なのでコンパイラは、データ領域が4の倍数のアドレスに  なるように調整しています。

szatmari
質問者

お礼

回答ありがとうございます。バイトマシンなる単語は初めて聞きました。

その他の回答 (3)

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.4

(1) コンピュータ内部では、基本的に2進数が使用されていますが 2進数では人間にとっては理解するのが難しいので、ビットを 組み合わせて理解し易い様にしています。 2進数で4ビットで表す事ができるのが、0000~1111で、これは 10進数にすると0から15までの値となり、10から15にはAからFを 割り当てて、F(15)の次は桁あがりして10とする16進数が使用 されます。 この4ビットを2組使用したものが8ビットになります。 #00からFFで表記されます。 9ビットや7ビットにした場合、4ビット+5ビットまたは3ビット +4ビットとなり上位桁と下位桁の進数が異なる事により計算が 困難になってしまいます。 #5ビットの場合は32進数となり、これも理解しづらくなる原因 #となります。 (2) 一つのアドレスの値を8ビットから16ビットにした場合、8ビット 以内で済むデータでも16ビットのメモリが必要となります。 メモリの容量当たりの単価は安くなってきてはいますが、無駄な 領域を増やす事は結局、処理能力の低下につながります。

szatmari
質問者

お礼

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

  • hs001120
  • ベストアンサー率60% (473/788)
回答No.3

(1)歴史的な慣習です、その昔には3bitや4bit、6bitを最小単位とする物も存在していました。 http://blogs.itmedia.co.jp/pina/2006/06/8_bf7b.html (2)同時にアクセスするビット数を増やせば一回でアクセス可能なデータが増える。という発想は間違っていないのですが、 例えば32bitのデータにアクセスするとき それを、人間が8bitデータ×4アドレスと定義するか、1つのアドレスに32bitのデータと定義するかは 単に人間の"認識"上の都合に過ぎないです。 人間が4つのアドレスと認識しているからといって、 必ずしも実際の処理において1バイトづつ4回に分けてアクセスしている と言う事ではありません。

szatmari
質問者

お礼

回答ありがとうございます。少しCPUの知識が増えました。

  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.2

(1) 必然性はありません。私が知っているだけで、1,4,8,12,16,32,36などのビット数のものがあります。あとは扱うデータの大きさとの整合性の問題で効率の善し悪しがあります。1ビットとか256ビットだと効率が悪いのはわかるでしょう。 主に扱うデータ長と「1アドレスのデータ長」が等しい物をワードマシン、扱うデータ長が何種類かありどれも「1アドレスのデータ長」の整数倍の物をバイトマシンと言います。後者の場合の「1アドレスのデータ長」をバイトといいます。言葉の意味からは1バイト=8ビットとは限らないのですが、現在は事実上そうなっています。 8ビットなのは、2の累乗が処理に都合がいいからです。4ビットだと1文字を表せない。16ビットだと欧米文字を表すと無駄が出る(2文字詰め込むと処理が面倒)。Unicodeが40年前にあれば事情は違っていたかもしれませんね。 (2)逆です。CPUの性能向上を有効に生かすためにビット長が長くなったのです。また、現在のCPUでは連続したアドレスのデータを一度にアクセスできますので、1アドレスの語長をふやしても速度の向上はありません。

szatmari
質問者

お礼

回答ありがとうございます。文字の処理効率があるのですね。 CPUの性能向上を有効に生かすためにビット長が長くなったのです。また、現在のCPUでは連続したアドレスのデータを一度にアクセスできますので、1アドレスの語長をふやしても速度の向上はありません。 貴重な情報ありがとうございます。

関連するQ&A

  • コンピュータにおけるメモリアドレス

    【質問1】  以下、『』に記す内容について、使用できるアドレス範囲は、なぜ、2^{32}-1になるのか  理解できません。特に、-1となるのが分かりません。  ご教示頂ける方がいましたら、ご教示の程、宜しくお願い致します。  『コンピュータ・アーキテクチャは、単に32ビットとか64ビットなどと表現されることがある。  これは例えば32ビットアーキテクチャのコンピュータが処理できる数の最大値が32ビットで  表現できることを意味する。これを「ワード長」と呼ぶ。コンピュータが利用できる物理メモリの  サイズもこのワード長に制限される。32ビットコンピュータが使用できるアドレスの範囲は 0 から  4294967295 (2^{32}-1) であり、4ギビバイトのメモリを使用できる。』 【質問2】  私の私有PCで、システムの種類:「64ビット オペレーティングシステム、×64ベース  プロセッサ」と表示されます。これは、どういうなのでしょうか?  ご教示頂ける方がいましたら、ご教示の程、宜しくお願いいたします。

  • 32bit 64bit メモリを効率的?

    32bit OSと64bit OSの違いについて 使用できるメモリの量が違う=メモリを効率的に利用できる でしょうか? それとも、 両者は、異なるのでしょうか?(同じメモリの量、32bitで利用できるメモリ量でも、64bitの方が処理が早い) 「32 ビット」と「64 ビット」という用語は、コンピューターのプロセッサ (CPU とも呼ばれます) が情報を処理する方法を指します。64 ビット バージョンの Windows は大容量のランダム アクセス メモリ (RAM) を、32 ビット システムに比べてより効率的に処理できます。

  • プロセッサの実効性能だけを2倍に向上させても

    プロセッサの実効性能だけを2倍に向上させても、コンピュータ全体の処理性能は2倍に向上しないことをキャッシュメモリを含めたメモリ階層の仕組みと関係つけて説明せよ。 という問題でまた新たに解答を考え直してみました。 メモリデバイスには、速度や記憶容量の違いなど様々な種類がありますが、高速性と大容量は両立しない。ゆえにプロセッサの実行性能、つまり高速性と大容量を二倍にしてもそれは両立できず結果的にコンピュータの処理性能は二倍にはならない。このため、主記憶には高速・小容量なメモリと低速・大容量なメモリを組合わせて、メモリアーキテクチャを設計する。 この構成方式を記憶階層と呼ぶ。 記憶階層では、参照の局所性と呼ばれる性質をうまく利用している。 メモリ内で、あるアドレスがアクセスされたとき、次にアクセスされるのは、その近辺のアドレスである可能性が高く、それを参照の局所性と呼ぶ。 ご確認お願い致します。

  • 高速メモリは生かせているの?

    チップセット「Intel 945」シリーズが登場して FSB 667MHzのCPUとDDR2-667のメモリに対応し FSBはベースクロックはの4倍、 メモリクロックは2倍と考えた場合、 メモリだけが高速で、 良く言われる非同期(同期=DDR333)と思われます。 FSBとメモリクロックがアンバランスな状況で パソコン全体の性能は向上しているのでしょうか?

  • コンピュータの動作環境について(CPUとメモリ値)

    コンピュータの動作環境であるCPUとメモリの値が自分のパソコンにおいてどうなのか知るにはどうしたらいいのか教えて下さい。性能の面である値が必要なのです。

  • メモリの増設について。

    メモリの増設について。 windows7のホームプレミアムエディションノートパソコン32ビットを買おうと検討しております。メモリスロット数が全部2あり、うち1GBを載せて販売しているマウスコンピュータ製のものです。この空いたスロットにいきなり2GBのメモリを挿して、全部で3GBで使った場合、ディアルチャンネルメモリなどは弊害が起きるのでしょうか? それとも、1GBに空いたスロットに1GB挿して合計2GBで使ったほうが良いのでしょうか? 今持っている別のノートがwindows7でメモリ最大数4GBの32ビットモデルを使っており、これが2GB+2GBなので、片方のスロットともう片方のスロットを同じように合わせたほうがよいのか?ここを教えてください。よろしくお願いします。

  • メモリが半分認識しない

    メモリが半分認識しない CPUはcore i7 860でメモリは2G×4でOSはWindows 7 pro 64bitです。 マウスコンピューターで購入したものですが先月何かしらの理由でマザーボードが焦げてしまい、マウスコンピューターに送ってマザーボードを新しいものに変えてもらいました。 一週間ほど前にパソコンは返ってきたのですがなぜかコントロールパネルで確認すると実装メモリ(RAM):8.00GB(3.99GB使用可能)となっています。BIOSでも8GBで認識されているのになぜか3.99GB使用可能と半分しか使えません。マウスコンピューターに電話してもしかしたらメモリ自体が壊れているかもしれないと言われ、新しいメモリを送ってもらいました。 しかし新しいメモリに差し替えても症状は変わらず、OSを再インストールしてもやはり同じ症状が続きます。なお、マウスコンピューターに確認したところ仕様上BIOSにメモリ関連の設定項目はないそうです。 マウスコンピューターにもう一回パソコンを送ってくれと言われましたが、先月送ったばかりですし自分もパソコンがないと不便なのでできれば自分で何とかしたいと思いここで質問させていただくことにしました。もし解決方法がわかる方がいましたら教えて下さい。どうしても直らないようであれば送ろうと思います。

  • 基本情報の問題2次キャッシュを用いたときの性能

    基本CPIが1、クロック周波数2GHz 主記憶アクセス時間が100ns,一次キャッシュミス率10パーセントとする 一次キャッシュはクロック周波数で動作し、 ここにアクセス時間10nsの2次キャッシュを導入すると ミス率を1パーセントまで下げられる これによりCPUの性能は何倍になるか という問題なのですが よくわかりません 教えてください

  • CPUとメモリについて

    ノートPC購入予定です。 そこで悩んでいるのが Intel Core 2 Duo T8100(動作周波数2.1GHz 2次キャッシュ3M)メモリ1G Intel Core 2 Duo T7250(動作周波数2GHz  2次キャッシュ2M)メモリ2G 上記の条件で、どちらを購入するか悩んでいます。 T8100の方がCPU性能はいいがメモリ1GのPC(OSはXP)と CPU性能は若干劣るがメモリ2GのPC(OSはVISTA) どちらも値段は8万円弱です。 どちらがいいと思いますか? PS:子供のビデオ編集等やろうと思ってます。

  • メモリチャンネル数とメモリバンド幅について

    CPUの性能でメモリチャンネル数とメモリバンド幅があるので、それも調べてからCPUを選択した 方がいいとアドバイスを受けました。早速、インテルのHPに行ったのですが、どこにそれが掲載 されているのかわかりませんでした。何か別の表記で載っているのでしょうか? お詳しい方いましたら、教えて下さい。 現在、私は科学技術系のソフトを使用していますが、インテルCPUで最速は何になるのでしょうか?(1CPUでの処理速度) Nehalem-EX X7560? X5600? 宜しくお願い致します。