3

メモリに保存できる最小値がビット (1 ビット) ではなくバイト (8 ビット) であるのはなぜですか? ブール値もバイトとして格納されます。CPU のレジスタのように、最小数を 32 ビットまたは 64 ビットに増やすことはありますか?

編集:多くの回答がクエストの性質について混乱しているように見えるので明確にするために。この質問は、バイトが7ビット、1ビット、32ビットなどではない理由に関するものです(下位ビットのプリミティブがハードウェアの最小バイト内に収まらなければならない理由ではありません)。たとえば、一部のハードウェアには10ビットバイトがあるため、8ビットバイトは単に歴史的なものです。それとも、一般的な処理では10ビットと言うのに対し、8ビットが理想的であるという数学的な理由はありますか?

4

4 に答える 4

5

ハードウェアは、データをブロック (バイト、後のワード、および dword) で読み取るように構築されています。これにより、個々のビットにアクセスするよりも効率が向上し、アドレス範囲も広がります。そのため、ほとんどのデータは少なくともバイト境界に揃えられます。バイトではなくビット シーケンスで動作するエンコーディングが存在しますが、それらは非常にまれです。

現在、データはほとんどの場合、とにかく dword (32 ビット) 境界に揃えられています。さらに、一部のハードウェア (ARM など) は、整列されていないマルチバイト変数にアクセスできません。つまり、16 ビット ワードは dword 境界を「越える」ことができず、例外がスローされます。

于 2011-01-05T18:14:09.283 に答える
3

コンピュータはメモリをバイト レベルでアドレス指定するため、バイトより小さいものはアドレス指定できません。

于 2011-01-05T18:11:59.657 に答える
1

プロセッサ アクセスの基本的な方法は、使用可能な最小レジスタのサイズに制限されています。ほとんどのアーキテクチャでは、そのサイズは 8 ビットです。これらのより小さな部分を使用できます。たとえば、C には構造体にビットフィールド機能があり、特定のビット長のみが必要なフィールドを組み合わせることができます。アクセスするには、バイト全体を読み取る必要があります。

一部の古いエキゾチックなアーキテクチャでは、実際には「ワード サイズ」が異なっていました。これらのマシンでは、10 ビットが一般的なサイズかもしれません。

最後に、プロセッサはほとんど常に下位互換性があります。たとえば、Intel は 386 以降の完全な命令互換性を維持しています。386 用にコンパイルされたプログラムを使用しても、i7 プロセッサで実行できます。ワード サイズを変更すると、互換性が失われます。したがって、それ可能ですが、どのメーカーもそれを行うことはありません。

于 2011-01-05T18:14:50.470 に答える