2009-10-19 8 views
8

4バイトアドレス可能なメモリ(または64ビットの8バイトアドレス可能なメモリ)ではなく、バイトアドレス可能なメモリを持つコンピュータはなぜですか?ええ、私は時にはそれが役に立つことがある方法を参照してください、それはちょうどエレガントで過度のようです。利点は充実しているのですか?バイトアドレス可能なメモリで、4バイトアドレス可能なメモリではないのはなぜですか?

+0

基本的にピザを8枚にカットするのはなぜですか?あなたがピザを16スライスにカットしたのを待ってください! –

答えて

6

プロセッサ実際にはdoアクセスメモリは64ビット(x86はPentiumなど以降)でした。 64ビットプロセッサには、しばしば128ビットバスがあります。さらに、メインメモリにアクセスすると、キャッシュライン全体を満たすバーストが発生します。これは、さらに大きなメモリユニットです。

これはバイトベースのアドレス指定だけです。オーバーヘッドがほとんどなく、過度ではありません。

今日、ネットワークプロトコルには、絶対にバイトベースのアドレス指定が必要です。ワードベースのアドレス指定でTCPを実装するのは難しいでしょう:あなたが17バイトのどこで受信した場合にread()を返すのですか?同様に、より高いレイヤーはバイトベースです: "GET/HTTP/1.0"のようなリクエストラインを4バイト単位で表示すると、HTTPの実装がかなり困難になります。基本的には、ワードをシフト操作などでバイトに分割し直す必要があります(バイトベースのアドレッシングのおかげでプロセッサはハードウェアで実行されます)。

+0

ワードアドレスのCPUでは、ネットワークカードは各ネットワークオクテットをマシンワードに格納できます(また、その逆もあります)。あるいは、4バイトを32ビットワードにパックする(Alpha AXPのように、初期ロードでバイトロード/バイトストア命令がない)場合、TCPの例は17になります。これはソフトウェア最後の単語のパディングをシフトを使って処理します。(アルファは一種のバイト・アドレス可能でしたが、I/Oアドレス・スペースのためのいくつかのハックを伴い、32または64ビットのワード・ロード/ストアをサポートしていました。http://www.tldp.org/HOWTO/Alpha-HOWTO- 8.html) –

+0

Alphaは後でバイトロード/ストアを追加しましたが、TCPを使用していないTCP(通常のPCIネットワークカード、AFAIKを使用)をサポートしていました。これは事実上ワードワードマシンになりましたが、64ビットアドレスの下位ビットは無視されます(または0にする必要があります)。 –

7

ほとんどの歴史的な理由 - CPUが理解する標準になっています。

一般的に、サイズがデータと マシン命令の両方に便利なこと に選択しなければならない:Hereは、それには良い議論です。 の共通文字を英語で、一部を 他の言語に対応するには、8ビット(256 の値)で十分です。 8ビットの プロセッサの設計者は、おそらく、 が1つのバイトとして256の共通命令をエンコードできることが「合理的な のトレードオフ」であることを見出した。そして当時、8ビットは であり、一般的に他の ピクセルカラーや の画面座標などをエンコードするのに十分でした。バイトサイズが2の累乗である であると、 が「きれいな」デザインであると感じられている可能性があります。 例えば、Marxer、E.(1974)、データ処理の要素 は、コンピュータがの たかどうかに応じて、6ビット、8ビットのいずれか ものとしてバイト を記述する、ということに注意することは興味深いこと あります"8進数"または "16進数"の型。

当然、他のサイズも使用されていました。

0

私たちは標準化のためにある程度のサイズを解決する必要がありました。上記のShaneが述べた理由から、人々は8ビットサイズを選択しました。それ以来、私たちはバイトアドレス可能なメモリに悩まされています。様々な互換性の問題や、OPCODESが1バイト長のみであるという事実のために変更することは不可能です。トリックを使用すると、データ/アドレスをフェッチ/ストアするためにメモリが簡単にワードアドレスになります!

関連する問題