したがって、「プログラム」できる最低レベルはプロセッサ上の個々の命令ですが、そもそもそれらの命令は何らかの方法でプログラムする必要がありました。プロセッサは、命令が実行されたときに何をすべきかをどのように知るのですか?
4 に答える
役立つ記事:
http://www.gamezero.com/team-0/articles/math_magic/micro/シンプルなプロセッサの設計方法...
このコースの講義ノート: http://www.stanford.edu/class/ee382/ Processor Design
あなたはこの本が欲しい。
これは「マイクロコード」と呼ばれます(または、少なくとも15年以上前に最後に見たときの名前です)。
プロセッサ内のさまざまなハードウェア機能エンジンは、「マイクロコード」ソフトウェアと連携しています。「マシンコード」のフェッチ、デコード、実行などです。
古いプロセッサのように単純化して考えると、次のようになります。
ほとんどのプロセッサの命令ビットを見ると、パターンが見え始めます。数ビットで入力レジスタの 1 つを定義し、数ビットで別の入力レジスタを定義し、数ビットで結果レジスタを定義し、数ビットで演算を定義します。したがって、ハードウェアの一部はオペランド a を定義するビットを見て、それを使用してオペランド a を alu に接続し、他のハードウェアはオペランド b ビットを使用してオペランド b を alu の b 入力にルーティングします。他のビットは、ALU が実行することになっている演算、加算、および、または xor などを選択します。最後に、結果ビットは、結果を保持するレジスタに ALU の出力をルーティングします。少し単純化されていますが、同時に、ロジックがどのように記述され、従来のプロセッサや多くの小型プロセッサがどのように動作するかからそれほど離れているわけではありません。
より大きな最新のプロセッサの一部はマイクロコード化されています。つまり、実際には内部に命令の別の層があり、c = a + b 操作は一連のマイクロコード化された命令に変わる可能性があり、機械語命令が入ったときに開始されます。これらは実行に役立ちます入力を加算器ロジックにルーティングし、結果を出力タイプのものに戻します。
最近のロジックは、既存のソフトウェア プログラミング言語に非常に近い、verilog や vhdl などのプログラミング言語を使用して実装されています。違いは、「コード」内の多くの行が同時に実行されることであり、通常のソフトウェアの場合のように必ずしも順番どおりに実行されるわけではありません。よく書かれた hdl があれば、言語を理解して何が起こっているのかを理解するのは難しくありません。opencores.org をチェックアウトして、多くのプロセッサ クローンの 1 つのソースを取得することをお勧めします。hdl のコンパイラ ツールは、ソフトウェアに使用されるものからそれほど離れていません。命令の代わりに、コードはロジックまたはゲートに煮詰められ、このビットはそのビットと論理和され、このビットはそのビットと論理和されます。ロジックに簡単に実装でき、相互に接続できるモジュール。