質問

マイクロプロセッサやオペレーティングシステムの場合、16ビット、32ビット、および64ビットアーキテクチャは何を意味しますか?

マイクロプロセッサの場合、最大サイズを意味しますか General Purpose Registersまたはサイズ Integer またはの数 Address-linesまたは数 Data Bus linesまたは何?

私たちは言うこととはどういう意味ですか」DOS is a 16-bit OS", "Windows in a 32-bit OS"など...?

役に立ちましたか?

解決

違いは、操作のための汎用登録簿に渡された命令セットのビット幅に帰着します。 16ビットは2バイトで動作でき、64バイトで8バイトの命令で動作します。多くの場合、クロックサイクルごとにより密度の高い命令を実行することにより、プロセッサのスループットを増やすことができます。

他のヒント

コメントを理解したい場合は、私の元の答えを以下に示します。

新しい答え

あなたが言うように、さまざまな手段があります。幸いなことに、多くのCPUにとって、多くの措置が同じであるため、混乱はありません。いくつかのデータを見てみましょう(画像のアップロードについて申し訳ありませんが、マークダウンでテーブルを実行する良い方法が見えませんでした)。Table data

ご覧のとおり、多くの列は良い候補です。しかし、私は、一般的な目的登録(緑)のサイズが最もよく理解されている答えであると主張します。

プロセッサのサイズが異なるレジスタに対して非常に多様である場合、それはしばしばより詳細に説明されます、例: モトローラ68K 16/32ビットチップとして説明されています。

他の人は、テーブルの一致する指示バス幅(黄色)であると主張しています。しかし、今日のパイプライニングの世界では、これは一般的な目的登録簿の規模よりもほとんどのアプリケーションにとってはるかに関連性の低い尺度であると主張します。


元の答え

あなたが言うように、いくつかの手段があるので、人によって異なることを意味する可能性があります。したがって、たとえば、記憶のアドレス指定について話している人は、整数の算術について話している人とは異なることを意味するかもしれません。しかし、私は私が共通の理解だと思うものを定義しようとします。

CPUの場合、「標準操作に使用される典型的なレジスタのサイズ」または「データバスのサイズ」(通常は同等です)を意味するということです。

これを次のロジックで正当化します。 Z80 8ビットアキュムレータと8ビットデータバスがあり、16ビットメモリアドレス指定レジスタ(IX、IY、SP、PC)と16ビットメモリアドレスバスがあります。 Z80は8ビットマイクロプロセッサと呼ばれます。これは、人々が通常、メモリアドレス指定サイズではなく、メインの整数算術サイズ、またはデータバスサイズを意味する必要があることを意味します。

Z80(再び)には1,2および3バイトの命令があったため、それは指示のサイズではありませんが、もちろん複数の読み取りでマルチバイトが読み取られました。もう一方の方向に、 8086 16ビットマイクロプロセッサであり、8ビットまたは16ビットの命令を読むことができます。ですから、私はそれが命令サイズであると言う答えに反対しなければなりません。

オペレーティングシステムの場合、「コードはそのサイズのCPUで実行されるようにコンパイルされている」と定義します。したがって、32ビットOSには、32ビットCPUで実行されるようにコードがコンパイルされています(上記の定義に従って)。

CPUのビットの数は、命令の長さとは何かを意味します。 32ビットCPUでは、そのような命令の単語の長さは32ビットです。つまり、これがCPUが命令またはデータとして処理できる幅であり、多くの場合、その幅のバスラインになります。同様の理由で、レジスタはCPUの単語の長さのサイズを持っていますが、多くの場合、さまざまな目的でより大きなレジスタがあります。

を取る PDP-8 例としてコンピューター。これは12ビットコンピューターでした。各命令は12ビットの長さでした。同じ幅のデータを処理するために、アキュムレータも12ビットでした。しかし、12ビットコンピューターを12ビットマシンにしているのは、その命令単語の長さでした。フロントパネルに12個のスイッチがあり、プログラムされた指示により、指示による指示がありました。

これは、8/16/32ビットフォーカスから抜け出すための良い例です。

ビットカウントは、通常、アドレスバスのサイズでもあります。したがって、通常、最大アドレス可能なメモリを指示します。

これには良い説明があります ウィキペディア:

コンピューターアーキテクチャでは、32ビットの整数、メモリアドレス、またはその他のデータユニットは、最大32ビット(4オクテット)幅であるものです。また、32ビットCPUおよびALUアーキテクチャは、そのサイズのレジスタ、アドレスバス、またはデータバスに基づいたものです。 32ビットは、32ビットプロセッサが標準であったコンピューターの世代に与えられる用語でもあります。

それでは、OSについて話しましょう。

OS-ESを使用すると、これはCPUの実際の「ビティ」に拘束されることはありません。通常、オプコードが組み立てられる方法(CPUの単語の長さ)と登録がどのようにまたは抽出されるかを反映しています(ロードできません。 16ビットレジスタの32ビット値)およびメモリのまたはどのようにまたはどのようにまたはどのようにまたはどのようにまたはどのようにまたはどのようにまたはどのようにまたはどのように訴えられますか。完成したコンパイルされたプログラムと考えてください。バイナリ命令として保存されるため、CPUの単語の長さに適合する必要があります。タスクごとに、メモリ全体に対処できる必要があります。そうしないと、適切なメモリ管理を行うことができません。

しかし、それに伴うのは、プログラムが32ビットまたは64ビットであるか(ここではOSが本質的にプログラムである)かどうかです。これは、バイナリ命令の保存方法と、レジスタとメモリにどのように対処されるかです。全体として、これはOS-ESだけでなく、あらゆる種類のプログラムに適用されます。そのため、プログラムは32ビットまたは64ビットでコンパイルされています。

定義は、正確な技術用語よりもマーケティング用語です。

ファジーな技術用語では、実際の実装レジスタやバスの幅よりもアーキテクチャに見える幅に関連しています。たとえば、68008は32ビットCPUとして分類されていましたが、シリコンに16ビットのレジスタがあり、8ビットデータバスと20-ODDアドレスビットのみがありました。

http://en.wikipedia.org/wiki/64-bit#64bit_data_models データモデルは、言語のビットネスを意味します。

「OSはXビット」というフレーズは通常、OSがXビットCPUモード用に記述されたことを意味します。つまり、64ビットウィンドウはX86-64でロングモードを使用します。ここで、レジスタは64ビットで、アドレススペースは64ビットです。大きく、32ビットモードと他の明確な違いがあります。通常、レジスタは幅32ビットで、アドレススペースは32ビットです。 X86では、32ビットモードと64ビットモードの大きな違いは、履歴互換性のために32ビットでのセグメンテーションの存在です。

通常、OSはCPUビットネスを念頭に置いて記述されています。x86-64は数十年の逆方向の互換性の注目すべき例です。16ビットのリアルモードプログラムから32ビット保護モードプログラムから64ビットの長いロング - まですべてを入手できます。モードプログラム。

さらに、仮想化するさまざまな方法があるため、プログラムは32ビットモードのように実行される可能性がありますが、実際にはX86以外のコアによって実行されます。

コンピューターサイエンスの2^nビットアーキテクチャについて話すとき、基本的にメモリレジスタ、アドレスバスのサイズ、またはデータバスのサイズについて話しています。 2^nビットアーキテクチャの用語の背後にある基本概念は、この2^nビットのデータをプロセスごとにサイズ2^nのデータに対処/輸送するために使用できることを意味することです。

私の知る限り、技術的には、それは整数経路の幅です。 32ビットのアドレス指定がある16ビットチップについて聞いたことがあります。ただし、実際には、アドレス幅です。 sizeof(void*)は、16ビットチップで16ビット、32ビットで32ビット、64ビットで64ビットです。

CとC ++はvoid*と積分型の間の変換を可能にするため、これは問題につながります。積分タイプが十分に大きい場合(ポインターと同じサイズ)場合は安全です。これは、あらゆる種類の危険なものにつながります

void* p = something;
int i = (int)p;

これは、void*がintの2倍の大きさであるため、恐ろしくクラッシュして燃焼します(32ビットで動作)。

ほとんどの言語では、取り組んでいるシステムの幅を気にするために一生懸命働かなければなりません。

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