質問

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

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

役に立ちましたか?

解決

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

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

他のヒント

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

  

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

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

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

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

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

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

私は推測します

(a)7ビットASCII および 4ビットBCDを格納するのに少し便利であるため、8ビットアドレス可能メモリが普及しました。他のメモリ幅には大きな利点はありませんでした。

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

(c)理論的にはバス幅が広いとCPUが高速になりますが、CPU全体を単一チップに搭載すると、バス幅がこれまでのマルチパート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ビットのフロントサイドバス(Intel PentiumやAMD K5など)を搭載したプロセッサや、 4ビット幅のバス(LPCバス)。

メモリシステムがバイトマルチプルになりたいため、キャッシュがバイトマルチプルになり、システム全体がバイトマルチプルになります。

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

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

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

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

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

コンピューターは通常、小文字をサポートせずに6ビットの文字セットを使用していたため、コンピューターの語長は6ビットの倍数になる傾向がありました。

IBMは、ロスアラモス向けに64ビットワードの高性能コンピューターSTRETCHを作成しました。コンピュータのメモリ内の個々のビットを直接アドレス指定できるという異常な機能があり、これによりワード長が2の累乗になりました。また、より拡張された文字セットがあり、(小文字に加えて)数学記号を含めることができました。 COLASLという名前の特別な高レベル言語で使用されました。

IBMは、非常に人気のあるSystem / 360メインフレームを発売したとき、ビットアドレッシングがなくても、8ビットバイトを保持しました。これは、主に4桁から10進数のパック10進数を効率的に保存できるようにするためです。そのマシンは非常に人気があったため、非常に影響力があり、DECのPDP-11コンピューターは16ビットワードと8ビットキャラクターで設計されました。 PDP-11は、最初の真のリトルエンディアンでもあり、非常に人気があり、影響力がありました。

しかし、それはファッションを追いかけているだけではありません。 8ビット文字は小文字のテキストを許可し、コンピューターが安価になったため、ワープロで簡単に使用できるようになりました。また、STRETCHがビットを簡単にアドレス指定できるようにビットのサイズが2のべき乗である単語を必要としていたように、今日のコンピューターは8の2のべき乗倍数である単語を必要としていました(たまたま2から3の力自体)を使用して、キャラクターを簡単にアドレス指定できます。

まだ6ビット文字を使用している場合、コンピューターは24、48、または96ビットの単語を持つ傾向があります。

関連しているが、理由ではない可能性があるため、 1バイトに8ビットは、IBMがIBM System / 360アーキテクチャを強化した方法だからです。

一般的な理由は、ビットをバイナリで番号付けできることです。これは、非常に多くの状況で役立ちます。たとえば、ビットシフトまたは回転操作。 16ビット値を0〜15ビットでローテーションできます。 16ビットを超えて回転する試みも簡単です。これは、0ビットを超える回転と同等です。また、1027ビットを超える回転は、3ビットを超える回転と同じです。一般に、Nビットにわたる幅Wのレジスタの回転は、Wを法とするN上の回転に等しく、演算「モジュロW」は、Nビットを超える。 Wが2のべき乗の場合は自明です。

80186、8086、8088、および「リアルモード」 80286以降のプロセッサでは、20ビットのセグメントメモリアドレッシングシステムを使用していました。 80286には24のネイティブアドレス行があり、386以降には32または64がありました。

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

バイトは、主に西側世界の文字のエンコードに関連しているため、8ビットです。 ワードはアドレスの幅に関連するエンコードに関係しないため、4から80などに変化します。

信頼できる古いHP 32S計算機は12ビットでした。

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

ここで何か見つけられるかもしれません: Binary_numeral_system

ICL 1900はすべて24ビット(ワード)でした。でも、これらを覚えている人は多くありません。あなたは??

私たちは、PICマイクロコントローラーを見てみました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top