プロセッサは、さまざまなコマンドの意味をどのように「知る」のですか?
私はMOV、PUSH、CALLなどのアセンブリレベルのコマンドを考えています...
プロセッサは、さまざまなコマンドの意味をどのように「知る」のですか?
私はMOV、PUSH、CALLなどのアセンブリレベルのコマンドを考えています...
回答:
コンピューターがアセンブリレベルの命令を解釈すると、これらの命令は、CPUが読み取るための同等のバイナリに変換されます。CPUは命令を実行すると、命令のオペコード部分を、マイクロコードに相当するものを含む個々の「マイクロプログラム」に解釈します。ご存知のように、完全なアセンブリ命令は、必要に応じてオペコードとそれに付随する適用可能なデータ(レジスタ名、メモリアドレスなど)で構成されます。
マイクロコード命令は非常に低レベルで(アセンブリよりも)、マイクロプロセッサ内のロジックのフローを制御する実際のデジタル信号を制御します。たとえば、1つのマイクロコード命令で条件コードレジスタフラグを新しい値で更新したり、CPU レジスタをALUユニットの1つに接続したりできます。より複雑な作業が可能ですが、これはあなたの一般的な考えを示して何のために使用されているマイクロコードを。
コンパイルから実行までの一般的な流れは次のとおりです。アセンブリー命令がアセンブルされます(バイナリーの同等の0と1、または今後は論理信号に変換されます)。これらの論理信号は、CPUによって順番に解釈され、特定の命令を実行するようにCPUのフローを指示するより低レベルの論理信号に変換されます。これには、プロセッサのアーキテクチャと設計に応じて、1つまたは複数のクロックサイクルがかかる場合があります(ほとんどのプロセッサリファレンスマニュアルでは、特定の命令を実行するのに必要なクロックサイクル数を説明しています(例:))。
これはすべて、実際に低レベルのロジックゲートを介してフローを指示するハードプログラムされたマイクロコード(製造時に設定される何らかのROMのプロセッサ内に物理的に埋め込まれます)で行われます。これにより、抽象アセンブリ命令とプロセッサ内の物理的電気ロジック間のインターフェイスが提供されます。
したがって、要約すると、プロセッサーの命令はプロセッサーによってアセンブルおよびロードされます。プロセッサは、これらの命令を使用して、その特定の命令に対応するマイクロプログラム(マイクロコードの形式)を検索します。これは、命令を「実際に」実行します。特定の命令のマイクロコードが実行されると(1つ以上のクロックサイクルを要する可能性があります)、プロセッサはマイクロコードを実行して次の命令をフェッチし、サイクルが繰り返されます。
プロセッサは、コマンドが何であるかを実際に「認識」していません。コマンドは、バイナリパターンであり、プロセッサがコマンドを解釈することを意味します。
たとえば、ADD-R1-into-R2操作により、レジスタ1および2の値がALU(算術および論理ユニット)に到達し、ALUが他のさまざまなものの代わりに加算器の出力を使用し、 (これらの事のすべてを達成するために、単純な論理回路がありますレジスタ2の値を置き換えるために、ALUの出力マルチプレクサ、加算器、カウンタ本物のプロセッサは非常に複雑な最適化を使用していますが、、...)。
それは、ブレーキを押すと車がどのように減速するかを尋ねているようなものです。車は知りません、ブレーキペダルはたまたま間接的にハードパッドがホイールに押し付けられる方法を制御します。
たとえば、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は特別な意味を関連付けて、それに応じて機能します。
推奨読書:
また、学生がCPUを実装するコースであるUCバークレーのCS152:Computer Architecture and Engineeringのコースノートもご覧ください。
「home-built cpu」をグーグルで検索すると、たくさんのグッズが見つかります。
最も極端なレベルでは、CPUができることはすべて追加することだけです。加算から、減算、乗算、除算を行うことができます(これらは異なる方法での加算であるためです)。CPUはこれを使用して、メモリアドレスに追加を適用することにより、メモリ内でデータを移動します。
ただし、これは可能な限り最低レベルであることに注意してください。CPUは実際、特定のコマンドをマイクロコードの形で「理解」します。Breakthroughの回答をご覧ください。非常によく書かれています。
Programmers.stackexchange.comで関連する回答を提供しました。コンピューターの仕組みをご覧ください。ここでは、コンピュータが命令を解釈して電子を移動させる方法について、最初からすべてを簡単に説明しました。