2

私はビットアーキテクチャについて少し混乱しています。自分の質問に答える良い記事が見つからないので、SOに聞いてみようと思いました。

質問1:

16ビットアーキテクチャと言えば、各RAMアドレスが16ビット長であることを意味しますか?したがって、C ++でint(32ビット)を作成すると、変数は2つのアドレスを使用しますか?

質問2:

16ビットアーキテクチャでは、RAM内のアドレス数は2 ^ 16(65536)のみです。なぜ彼らはもっと追加できないのですか?これは、16ビットがより高い値を表すことができず、したがって65535を超えるアドレスを参照できないためですか?

4

4 に答える 4

2

16ビットアーキテクチャと言えば、各RAMアドレスが16ビット長であることを意味しますか?したがって、C ++でint(32ビット)を作成すると、変数は2つのアドレスを使用しますか?

16ビットアーキテクチャについて話している人は誰でも、それが何を意味するのかを尋ねる必要があります。これは、アドレスが16ビット長であることを意味している可能性があります。これは、汎用CPUレジスタが16ビット長であることを意味している可能性があります。彼らは何か他のものを意味するかもしれません。しかし、架空の人物が何を意味するのかを知る方法はありません。何かを「16ビットアーキテクチャ」にするものの普遍的な定義はありません。

たとえば、8032は、8ビットの汎用レジスタを備えた8ビットアーキテクチャです。ただし、65,536バイトのストレージをアドレス指定するために使用できる16ビットのポインタレジスタがあります。

ビット数に関係なく、ほとんどすべてのシステムがバイトアドレスを使用します。したがって、32ビット変数は任意のビット数のマシンで4つのアドレスを使用します。

16ビットアーキテクチャでは、RAM内のアドレス数は2 ^ 16(65536)のみです。なぜ彼らはもっと追加できないのですか?これは、16ビットがより高い値を表すことができず、したがって65535を超えるアドレスを参照できないためですか?

16ビットの場合、これらのビットを設定できる方法は65,536しかありません。したがって、16ビットレジスタには65,536個の可能な値があります。

于 2012-12-17T18:00:03.243 に答える
1
  1. はい。ただし、int16ビットアーキテクチャでは通常、16ビット幅であることに注意してください。
    また、変数が2つのアドレスを「使用する」と言っても意味がないことに注意してください。正しい言い方は、32ビット変数は16ビットプラットフォームでは2つのポインターと同じ幅であるということです。 アーキテクチャに関係なく、4バイトのスペースを占有します。

  2. はい; それがまさに16ビットアドレスの意味です。
    これらの各アドレスは、1バイトのメモリを指していることに注意してください。

于 2012-12-17T17:58:23.553 に答える
1

8ビットおよび16ビットアーキテクチャの定義によって異なります。

6502は8ビット値(レジスタサイズ)で動作し、16ビットアドレスを持っていたため、8ビットCPUと見なされていました。

68000は16ビットCPUと見なされていましたが、32ビットのレジスタとアドレスがありました。

x86では、通常、アーキテクチャを定義するのはアドレスサイズです。

また、「64ビット」CPUには、必ずしも完全な64ビット外部アドレスバスがあるとは限りません。それらはそのサイズのアドレスを内部的に処理する可能性があるため、仮想アドレス空間は大きくなる可能性がありますが、それはそれらがそれほど多くの外部メモリを持つことができるという意味ではありません。

于 2012-12-17T18:00:44.067 に答える
1

ウィキペディアの例-すべての内部レジスタと内部および外部データバスは16ビット幅であり、8086の「16ビットマイクロプロセッサ」IDをしっかりと確立しました。20ビットの外部アドレスバスは1MBの物理アドレススペースを提供しました(2 ^ 20 = 1,048,576)。このアドレス空間は、内部の「セグメンテーション」によってアドレス指定されました。データバスは、標準の40ピンデュアルインラインパッケージに適合するようにアドレスバスと多重化されました。16ビットI/Oアドレスは、64KBの個別のI/ Oスペース(2 ^ 16 = 65,536)を意味します。内部レジスタの幅が16ビットしかないため、最大線形アドレス空間は64KBに制限されていました。64 KB境界を超えるプログラミングには、セグメントレジスタの調整が含まれ(以下を参照)、80386がより広い(32ビット)レジスタ(およびより高度なメモリ管理ハードウェア)を導入するまでその状態が続きました。

したがって、16ビットアーキテクチャには16のアドレスラインのみがあるという固定ルールがないことがわかります。信じるのは直感的ですが、2つのことを混同しないでください。

于 2013-10-16T12:26:04.133 に答える