CPUは、コマンドと命令が実際に意味するものをどのように「認識」しますか?


73

プロセッサは、さまざまなコマンドの意味をどのように「知る」のですか?

私はMOV、PUSH、CALLなどのアセンブリレベルのコマンドを考えています...


これは非常に有益ですが、私が探しているのは、CPUがコマンドを受信して​​送信できるようにするものですか?

私はそのコメントを理解していません。CPUは、アドレスで命令を要求することにより、メモリから命令を「受信」します。CPUが「少なくとも」送信するコマンド(少なくとも単純化したビューでは)は、データを配信するためのメモリへのコマンドと、I / Oデバイスを操作するためのI / Oバス上のコマンドです。
ダニエルRヒックス

すべてのCPUの中心には、単純な手順を実行するために(文字通り)組み込まれたロジックがあります。命令アドレスレジスタから値を取得し、メモリに送信し、メモリが返す命令を取得してから、命令の意味と実行方法を「理解」するハードワイヤードロジックの複雑なネスト。ああ、そこのどこかで命令アドレスレジスタをインクリメントします。
ダニエルRヒックス

回答:


88

コンピューターがアセンブリレベルの命令を解釈すると、これらの命令は、CPUが読み取るための同等のバイナリに変換されます。CPUは命令を実行すると、命令のオペコード部分を、マイクロコードに相当するものを含む個々の「マイクロプログラム」に解釈します。ご存知のように、完全なアセンブリ命令は、必要に応じてオペコードとそれに付随する適用可能なデータ(レジスタ名、メモリアドレスなど)で構成されます。

マイクロコード命令は非常に低レベルで(アセンブリよりも)、マイクロプロセッサ内のロジックのフローを制御する実際のデジタル信号を制御します。たとえば、1つのマイクロコード命令で条件コードレジスタフラグを新しい値で更新したり、CPU レジスタALUユニットの1つに接続したりできます。より複雑な作業が可能ですが、これはあなたの一般的な考えを示してのために使用されているマイクロコードを。

コンパイルから実行までの一般的な流れは次のとおりです。アセンブリー命令がアセンブルされます(バイナリーの同等の0と1、または今後は論理信号に変換されます)。これらの論理信号は、CPUによって順番に解釈され、特定の命令を実行するようにCPUのフローを指示するより低レベルの論理信号に変換されます。これには、プロセッサのアーキテクチャと設計に応じて、1つまたは複数のクロックサイクルがかかる場合があります(ほとんどのプロセッサリファレンスマニュアルでは、特定の命令を実行するのに必要なクロックサイクル数を説明しています(例:))。

これはすべて、実際に低レベルのロジックゲートを介してフローを指示するハードプログラムされたマイクロコード(製造時に設定される何らかのROMのプロセッサ内に物理的に埋め込まれます)で行われます。これにより、抽象アセンブリ命令とプロセッサ内の物理的電気ロジック間のインターフェイスが提供されます。


したがって、要約すると、プロセッサーの命令はプロセッサーによってアセンブルおよびロードされます。プロセッサは、これらの命令を使用して、その特定の命令に対応するマイクロプログラム(マイクロコードの形式)を検索します。これは、命令を「実際に」実行します。特定の命令のマイクロコードが実行されると(1つ以上のクロックサイクルを要する可能性があります)、プロセッサはマイクロコードを実行して次の命令をフェッチし、サイクルが繰り返されます。


2
わかりました、私は思う:)それで、コマンドビットは、プロセッサが受信したデータで特定のことをするようにする「スイッチ」を切り替えますか?
サイモンVerbeke

4
@Simon Verbeke、正確に正しい。スイッチを切り替えるだけで、プロセッサ内の電気信号の流れを指示します(さらにコマンドを再ロードするよう指示することもできます!)。すべてがデジタル(ロジック1/0またはtrue / false)であるため、スイッチの類推は良好です。ご存知のように、論理レベルは実際の電圧です。0または1を指定するかどうかはエンジニア次第です(たとえば、ロジック1は2ボルト以上として指定できます)。
ブレークスルー

1
コンパイラーまたはアセンブラーがすべてを要約する「同等のバイナリ命令」は、オペコードと呼ばれます。MIPSやARMなどのRISCアーキテクチャのオペコード構造を見ると、オペコードのさまざまなビットが特定の操作にどのようにマッピングされているかがわかります。Intelは長寿命であり、時間を延長する傾向があるため、単純なマッピング構造はもうありません。
ローレンス

3
いいえ、x86アーキテクチャの寿命と時間の延長により、オペコード内の個々のビットのマイクロ操作へのマッピングは、MIPSやARMのようにきちんとカットされていません。ある程度(d.umn.edu/~gshute/spimsal/talref.htmlを参照してください。たとえば、Intelオペコードはこのようなものではありません)。私はインテルが1978年のx86 CPUを導入したとき、「RISC」の多くの概念があったとは思わない
LawrenceC

5
一部の CPU のみがマイクロコード化されていることに注意してください。一部(ほとんどの場合、より小さいデバイス)は、アセンブリオペコードから直接動作します。それはアーキテクチャに依存します。
偽の名前

37

プロセッサは、コマンドが何であるかを実際に「認識」していません。コマンドは、バイナリパターンであり、プロセッサがコマンドを解釈することを意味します。

たとえば、ADD-R1-into-R2操作により、レジスタ1および2の値がALU(算術および論理ユニット)に到達し、ALUが他のさまざまなものの代わりに加算器の出力を使用し、 (これらの事のすべてを達成するために、単純な論理回路がありますレジスタ2の値を置き換えるために、ALUの出力マルチプレクサ加算器カウンタ本物のプロセッサは非常に複雑な最適化を使用していますが、、...)。

それは、ブレーキを押すと車がどのように減速するかを尋ねているようなものです。車は知りません、ブレーキペダルはたまたま間接的にハードパッドがホイールに押し付けられる方法を制御します。


5
車のブレーキペダルとの素敵なアナロジー。
rjmunro

10

たとえば、x86 / IA-32プロセッサに即時8ビット値をレジスタに移動するよう指示する命令を考えてみましょう。この命令のバイナリコードは10110で、その後に使用するレジスタの3ビット識別子が続きます。ALレジスタの識別子は000であるため、次のマシンコードはALレジスタにデータ01100001をロードします。

10110000 01100001

このバイナリコンピュータコードは、次のように16進数で表現することにより、人間が読みやすい形式にできます。

B0 61

ここで、B0は「次の値のコピーをALに移動する」ことを意味し、61は値01100001の16進表現で、10進数では97です。Intelアセンブリ言語は、このような命令にニーモニックMOV(moveの略語)を提供するため、上記のマシンコードはアセンブリ言語で次のように記述でき、セミコロンの後に必要に応じて説明コメントを付けます。これは読みやすく覚えやすいです。

http://en.wikipedia.org/wiki/Assembler_language

つまり、アセンブリプログラムを「アセンブル」するとき、次のような指示があります。

MOV AL, 61h

CPUは特別な意味を関連付けて、それに応じて機能します。


2
また、この特定のビットパターンへのニーモニックシンボル「mov」の割り当ては完全に任意であることに注意してください。原則として、その命令を「oof」と呼ぶアセンブラーを書くことができます。覚えるのが難しいだけでなく、同じように機能します。
dmckee

6

推奨読書:

また、学生がCPUを実装するコースであるUCバークレーのCS152:Computer Architecture and Engineeringのコースノートもご覧ください

「home-built cpu」をグーグルで検索すると、たくさんのグッズが見つかります。


4

最も極端なレベルでは、CPUができることはすべて追加することだけです。加算から、減算、乗算、除算を行うことができます(これらは異なる方法での加算であるためです)。CPUはこれを使用して、メモリアドレスに追加を適用することにより、メモリ内でデータを移動します。

ただし、これは可能な限り最低レベルであることに注意してください。CPUは実際、特定のコマンドをマイクロコードの形で「理解」します。Breakthroughの回答をご覧ください。非常によく書かれています。


7
AND、OR、NOTなどの論理演算、およびビットシフトは、加算よりも基本的です。追加は、実際にはこれらの操作の観点から表現できます。実際には、これらの操作を実行する以外に何もしないディスクリートIC(Texas Instruments LSシリーズ)があり、それらからソートのCPUを構築することが可能です。Googleの「Pongスケマティック」。たとえば、CPUなしでゲームがどのように作成されるかを確認できます。
ローレンス

よりソフトウェアの観点から私は意味しました:)はい、ハードウェア/ロジックに関しては、非常に多くのNANDおよびNORゲートがあります。いい視点ね。
n0pe

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.