55

8 ビット、16 ビット、32 ビット、および 64 ビットのハードウェア アーキテクチャとオペレーティング システムがあります。しかし、たとえば、42 ビットまたは 69 ビットのものではありません。

なんで?2^n ビットをより良い選択にする基本的なものですか、それとも既存のシステムとの互換性に関するものですか? (64 ビット レジスタが 2 つの 32 ビット ポインターを保持できること、または 32 ビット データ ユニットが 4 バイトを保持できることは明らかに便利です。)

4

18 に答える 18

31

それは主に伝統の問題です。それは常に真実でさえありません。たとえば、プロセッサの浮動小数点ユニット (最新のものでも) には 80 ビットのレジスタがあります。そして、13 ビット バイトの代わりに 8 ビット バイトを強制するものは何もありません。

時々、これには数学的推論があります。たとえば、N ビットのバイトを持つことに決め、整数の乗算を実行したい場合、結果を格納するには正確に 2N ビットが必要です。次に、これらの 2N ビット整数を加算/減算/乗算する必要があるため、加算/減算結果を格納するための 2N ビット汎用レジスタと、乗算結果を格納するための 4N ビット レジスタが必要になります。

于 2009-10-22T12:25:11.487 に答える
26

http://en.wikipedia.org/wiki/Word_%28computer_architecture%29#Word_size_choice

さまざまな精度のデータ値を格納するために、さまざまな量のメモリが使用されます。一般的に使用されるサイズは、通常、アドレス解決の単位 (バイトまたはワード) の 2 の累乗倍数です。配列内の項目のインデックスを項目のアドレスに変換するには、乗算ではなくシフト演算のみが必要です。場合によっては、この関係により、除算の使用を回避することもできます。その結果、最新のコンピューター設計のほとんどは、ワード サイズ (およびその他のオペランド サイズ) がバイト サイズの 2 乗になっています。

于 2009-10-22T12:29:58.153 に答える
20

部分的には、対処の問題です。N ビットのアドレスを持つことで、最大で 2^N ビットのメモリをアドレス指定でき、ハードウェアの設計者はこの機能を最大限に活用することを好みます。したがって、3ビットを使用して8ビットバスなどをアドレス指定できます...

于 2009-10-22T12:33:51.297 に答える
7

由緒あるPDP-10は 36 ビットでした。

于 2009-10-22T12:23:39.617 に答える
6

多くの(ほとんど?)初期のプレマイクロプロセッサCPUには、2の累乗ではないワードあたりのビット数があります。

特に、Seymour Crayと彼のチームは、2の累乗ではないワードサイズとアドレスサイズ(12ビット、48ビット、60ビットなど)を備えた非常に影響力のある多くのマシンを構築しました。

驚くほど多くの初期のコンピューターは36ビットの単語を持っていましたが、これは完全に人間が10本の指を持っているという事実によるものです。ウィキペディアの「36ビット」の記事には、10本の指と36ビットの関係の詳細が記載されており、歴史的に重要であるが人気がなくなった他の多くのビットサイズに関する記事へのリンクがあり、そのほとんどは2の累乗ではありません。

私はそれを推測します

(a)8ビットのアドレス指定可能なメモリが普及したのは、7ビットのASCIIと4ビットのBCDを格納するのに、厄介なパッキングや文字ごとに複数のビットを無駄にすることなく、わずかに便利だったためです。そして、他のメモリ幅には大きな利点はありませんでした。

(b)Stephen C. Steelが指摘しているように、わずかな利点に規模の経済と市場の力が倍増します。8ビット幅のメモリがより多く使用されるため、規模の経済によってメモリがわずかに安くなり、さらに8ビットになります。 -新しいデザインなどで使用されているビット幅のメモリ。

(c)理論上、バス幅が広いとCPUが高速になりますが、CPU全体を1つのチップに搭載すると、バス幅が以前のマルチパートCPUシステムよりも大幅に安くなり、おそらくわずかに高速になります。最初は4ビットCPU、次に8ビットCPUに十分なトランジスタがほとんどありませんでした。その後、16ビットCPUに十分なトランジスタがほとんどなく、大規模なファンファーレと「16ビット」のマーケティングキャンペーンが行われました。ちょうどその頃、24ビットCPUが期待されます...

(d)RISC革命が発生しました。最初の2つのRISCチップは何らかの理由で32ビットであり、人々は「ビットが多いほど良い」と考えるように条件付けられていたため、すべてのメーカーが32ビットの時流に乗った。また、IEEE 754-1985は、32ビットおよび64ビットの浮動小数点数で標準化されました。24ビットCPUがいくつかありましたが、ほとんどの人はそれらについて聞いたことがありません。

(e)ソフトウェアの互換性の理由から、メーカーは、64ビットのフロントサイドバスを備えたプロセッサ(IntelPentiumやAMDK5など)や4ビット幅のマザーボード上でも32ビットのデータバスの錯覚を維持していました。バス(LPCバス)。

于 2010-06-10T06:03:50.883 に答える
5

メモリシステムはバイト倍数になりたいので、キャッシュもバイト倍数になり、システム全体がバイト倍数になりたがります。

ハードウェア設計者として言えば、通常、CPU とバイトの境界を何らかの種類 (つまり 8 の倍数) に設計する必要があります。そうしないと、mod-8 ビットを利用するために、49 ビット システムに多くの厄介な回路を追加する必要があります。 、または余分なビットを無視することになります。この場合、命令に余分なビットが必要な場合を除き、無駄でした.16ビット以上のシステムでは決してそうではありません.

于 2009-10-22T12:32:30.787 に答える
3

他の人が指摘しているように、初期の頃は、物事はそれほど明確ではありませんでした。言葉はあらゆる種類の奇妙なサイズで登場しました。

しかし、8ビットバイトでの標準化の推進は、メモリチップテクノロジによっても推進されました。初期の頃、多くのメモリチップはアドレスごとに1ビットとして編成されていました。nビットワードのメモリは、n個のグループのメモリチップを使用して構築されました(対応するアドレスラインが相互に接続され、各チップはnビットワードの1ビットに寄与する単一のデータビットを備えています)。

メモリチップの密度が高くなるにつれて、メーカーは複数のチップを1つのパッケージに詰め込みました。使用されている最も一般的なワードサイズは8ビットの倍数であったため、8ビットメモリが特に人気がありました。これは、最も安価であることも意味します。ますます多くのアーキテクチャが8ビットバイトのバンドワゴンに飛び込むにつれて、8ビットバイトを使用しなかったメモリチップの価格プレミアムはますます大きくなりました。同様の議論は、8-> 16、16-> 32、32->64からの移動を説明しています。

24ビットメモリを使用してシステムを設計することもできますが、そのメモリは、32ビットメモリを使用する同様の設計よりもはるかに高価になる可能性があります。24ビットに固執する本当に正当な理由がない限り、ほとんどの設計者は、より安価でより高性能な32ビットを選択します。

于 2009-10-22T19:23:03.037 に答える
1

関連して、おそらく理由ではないのですが、1 バイトが 8 ビットであるという規則は、IBM が IBM System/360 アーキテクチャをどのように装備したかによるものだと聞きました。

于 2009-10-22T12:30:04.847 に答える
1

一般的な理由は、ビットを 2 進数で番号付けできることです。これはかなりの数の状況で役に立ちます。たとえば、ビットシフトまたは回転操作で。0 ~ 15 ビットで 16 ビット値をローテーションできます。16 ビットをローテーションしようとする試みも自明です。これは 0 ビットをローテーションするのと同じです。また、1027 ビットのローテーションは 3 ビットのローテーションに相当します。一般に、N ビットにわたる幅 W のレジスタのローテーションは、W を法とする N 上のローテーションに等しく、W が 2 のべき乗である場合、演算「モジュロ W」は自明です。

于 2009-10-22T12:41:53.700 に答える
1

別の反例: PIC16C8X シリーズ マイクロコントローラには、14 ビット幅の命令セットがあります。

于 2009-10-22T15:19:01.313 に答える
0

ここで何かを見つけることができるかもしれません:Binary_numeral_system

于 2009-10-22T14:32:30.940 に答える
0

アドレス用に予約されたスペースは常に固定数のビットであるためです。固定アドレス (またはポインター) サイズを定義したら、それを最大限に活用したいので、格納できる最大数まですべての値を使用する必要があります。ビットの倍数 (0 または 1) から取得できる最大数は、常に 2 のべき乗です。

于 2009-10-22T14:05:17.377 に答える
0

私の信頼できる古い HP 32S 電卓は 12 ビットでした。

于 2009-10-22T12:56:56.733 に答える
0

PIC マイクロコントローラを見てください。

于 2010-02-20T19:45:41.660 に答える
0

ICL 1900 はすべて 24 ビット (ワード) でした。これらを覚えている人はそう多くはないでしょう。あなたがやる ??

于 2009-10-22T14:49:03.713 に答える