プロが教えるわが家の防犯対策術!

データバス8本、アドレスバス16本のマイクロプロセッサに結合できる最大メモリ容量は何ワードですか?? アドレスバス16本より、2^16=65536バイトと思っているのですがあっていますか??

A 回答 (4件)

 アドレスバスが16本ですので表せるエリアは2の16乗個なので65536個です。


 しかし、データバスが8本ですので1バイトしか一度にアクセス出来ません。(BYTE=8ビット)
 従って、最大メモリー容量は65536÷2=32768ワードです。(WORD=16ビット)
 8ビットマイクロプロセッサーでしょうか?
 16ビットの演算は大変ですね。キャリーフラグ使いになる必要が有りますね。

この回答への補足

回答ありがとうございます。情報の教科書に載っていたのですが、何ビットプロセッサーかは書いてありませんでした。

補足日時:2012/01/15 00:59
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/15 01:00

ピン数とバス幅が同じ実装のマイクロプロセッサなら、その計算で正しいです。

ただ世の中にはそうでないものがいろいろあるので、断定は難しいです。

コストや実装面積の制約から、外部に出せるピン数には限りがあります。特にこれらの制約が厳しいマイコンでは、ピン数は可能な限り少なくしたい。その場合に使われるのが、時分割によって複数回にわたり信号を出力することで、見かけのピン数よりも広いバス幅を実現するという方法です。見かけ8本のピンだけど、2回に分けて16ビットにしているなどですね。また、MMUのような周辺LSIを追加することで、CPU自身のアドレスバス幅よりも広いメモリ空間を実現する実装も存在します。

ちなみに1ワードが何ビットかというのは、プロセッサ自身のアーキテクチャや言語、あるいはマーケティングに大きく依存する話です。いにしえのi8088は、元祖x86であるi8086のデータバスを8ビットに切り詰めた廉価版ですが、内部的にはレジスタ幅16ビット長だったので、インテルはこれを16ビットCPUとして販売していました。しかし、そのもう少し後にモトローラから出た16ビットCPUのMC68000は、データバス16ビットでレジスタは32ビット長だったので、インテルの流儀に倣えばこれは32ビットCPUになり、逆にモトローラの流儀では8088は8ビットCPUと言うことになります。

なので厳密なメモリ容量の話をする場合には、ワード単位にしない方がいいように思います。もっとうるさいことを言うなら、実は1バイトが8ビットなのはただの慣習であって、厳密に定義されているわけではありません。なので1バイトが10ビットというのも許されるのです。昔はそういう妙ちきりんな実装もありました。でもこれでは、データ量に応じて料金が決まる通信の世界では困ってしまいます。通信会社と客が言う1バイトの長さが違っていては、料金トラブルの元・・・そこで、バイトの代わりにオクテットという単位を使うことがあります。これは1オクテット=8ビットと定義されているため、そうした問題はありません。

この回答への補足

回答ありがとうございます。情報の教科書に載っている問題なのですが、ピン数のことには触れられていませんでした。

補足日時:2012/01/15 00:54
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/15 00:56

基本は質問者の理解の通りですがアドレスバスを二重に使用する方法が採用されています



いわゆるページアドレス、バンク切り替えです

アドレスに2倍の周期を要しますが最大32ビットのアドレスを利用できます
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/15 01:02

> アドレスバス16本より、2^16=65536バイトと思っているのですがあっていますか??



通常なら、こちらで良いと思います。


> 結合できる最大メモリ容量は

結合って言い方が微妙ですが、バンク切り替えとか考慮すると、もっと大きなメモリを取り扱える可能性はあります…。

バンク切り換え - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%B3% …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。バンク切り替え勉強します。

お礼日時:2012/01/15 01:03

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