アプリ版:「スタンプのみでお礼する」機能のリリースについて

CPUのビット数は、レジスタの幅らしいです。
この幅は、メモリ(主記憶)のアドレスバスの幅と
一致するのが一般的でしょうか?

32bitCPUのPCのメモリのアドレスバスの幅は32bit。と
いう具合に。

あまりPCの詳細な作りについては無知な部分があり、
見当違いなことを質問しているようでしたら、
ご指摘下さい。。

A 回答 (5件)

 CPUのビット数がアドレス幅を決めるのではありません。

同じ16ビットCPUでもi8086は1MBまで、MC68000は16MBまでのアドレッシングが可能でした。

 8ビットCPUならば、どれも64KBまでが有効アドレスですが、命令が多機能に出来ているMC6809は他のCPUでは冗長になりがちな処理を短くまとめられるので無駄が少なく、プログラムに必要とされるメモリーの節約と高速化に役立っていました。

 また、8086と80386を比べると、同じ1MBしかメモリーを使わなくても、80386の方がレジスタの幅が大きいので32ビット演算が1命令で出来たり、32ビット単位でデータ転送するなど、処理の無駄を減らしたり、高速化が可能になっています。

 無駄が減らせるという長所を考慮すると、8ビットCPUはアドレス幅が同じだから皆同じとは言えない面もあるように思います。

 CPUは必要に応じたメモリーを扱えれば良いわけで、8ビットCPUでもバンク切り替えで1MBまで使えるように設計されたパソコンもありましたし、32ビットCPUでも初期の32ビットパソコンは16~32MBしか使えない時代もありました。

 64ビットCPUは64ビット幅のアドレスだから16PBまで使えるわけではなく、すでに限界がわかっている集積技術がネックになって、最大でも数テラバイトまでしか使えずに終わりそうです。
    • good
    • 1

ちょっと調べたら 4004 のネタも出てきた. やるときはやるなぁ, Intel....


4004: データバス/アドレスバスは 4bit. ただし 1word=8bit かつアドレスは 12bit.
    • good
    • 0

Intel をかばうわけじゃないですが, その表現はちと Intel に厳しすぎのような気もしますよ>#2. 8bit/16bit の時代から「アーキテクチャをひきずってきた (ひきずらざるをえなかった)」Intel と「8bit→16bit, 32bit→RISC のそれぞれで過去のアーキテクチャを捨て去った」Motorola の違いともいえますので.


でふるい話をいくと Motorola 6809 はデータバス 8bit, アドレスバス 16bit. こいつは A, B の 2個のアキュムレータを持っていて, 連結して D レジスタ (16bit) としても使えます. このシリーズでは「4個の 8bit アキュムレータを連結して 32bit として使えます」とかいう謎の機能を持った CPU もいました.
Intel 8080, Zilog Z80 もバス幅は同じ. こいつらは, 内部的には 4bit ずつ処理をしていたんじゃなかったかなぁ.
Intel の 8086 以降を追うと
8086: データバス 16bit, アドレスバス 20bit (8088 はデータバスが 8bit).
80286: データバス 16bit, アドレスバス 24bit
80386: データバス 32bit, アドレスバス 32bit (80386SX はデータバス 16bit, アドレスバス 24bit)
Pentium: データバス 64bit, アドレスバス 32bit.
PentiumPRO: データバス 64bit, アドレスバス 36bit.
EM64T を持つとアドレスバスが 40bit になります.
だから, Intel の場合 CPU のビット数は「レジスタのビット数」と一致してます. 「バス幅」でみると 8088 とか 80386SX のようなやつらもいるけど.
Motorola の方は
MC68000: #2 にあるようにデータバス 16bit, アドレスバス 24bit (68008 はデータバス 8bit. アドレスバスは 20bit だったような気がする)
68020: データバス 32bit, アドレスバス 32bit.
ついでにいえば, Motorola といえど「8bit レジスタと 16bit レジスタが完全に独立」ということはなくって, 「各レジスタの下位部分が 8bit レジスタとして使える」ということです.
    • good
    • 0

CPUのバスには「アドレスバス」と「データバス」があります。



CPUの処理能力を言う場合はデータバス幅を使うのが正当だと思うのですが、インテルでは昔から「数字が多く良さそうな方」を使っていました。つまり、データバスではなくアドレスバスです。対してモトローラではデータバス幅を使用していました。それが理由かどうかは分かりませんが、モトローラのCPUは動作クロックがインテルと比べて遙かに見劣りするのにインテルCPUを搭載したPCより処理能力が高かったものです。

モトローラのMC68000はデータバス16bit、アドレスバス24bit。i386はデータバス16bit、アドレスバス32bitだったかな?
※MC68000は16bitCPU、i386は32bitCPUと呼ばれていた。

インテルCPUのレジスタは扱いが一寸特殊で8bitレジスタをペアで使用して16bitレジスタとして扱うこともあります。モトローラでは8bitレジスタと16bitレジスタが完全に独立していたはず。
そういった意味ではインテルのCPUは未だ8bit/16bitからの脱却が完全には出来ていないと思っています。
Pentiumになってからアセンブラを勉強していないのでハッキリ言ってよく分かりません。
    • good
    • 0

一致しないのが一般的です。



コンピュータの動作原理を説明するためにご質問のような単純なアーキテクチャを想定することはありますけれど(基本情報技術者試験のCASLIIなど)
http://ja.wikipedia.org/wiki/CASL

8bitパソコンなんて昔の時代からCPU内部の処理単位とアドレスバス幅とは一致していません。
http://www.atmarkit.co.jp/icd/root/02/5785802.html
http://www.keyman.or.jp/search/server2/30000858_ …

(それ以前がどうだったかは私よりもっとオジサンが知っているでしょう(^^;
    • good
    • 0

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