質問
CPU内の制御装置はどのように登録されているかを登録する方法は?ビットごとに取得しますか?
例えば2つの数字を追加している場合は、A + B、メモリレベルで計算が行われるのですか?
解決
あなたは16個の32ビットレジスタと32ビット整数を追加できるユニットを持つプロセッサを持っているとしましょう。レジスタXとレジスタYを追加し、レジスタZに結果を格納するための非常に単純化された方法はこれです。
最初に、数値Xを指定したハードウェアを構築し、レジスタXの最初のビットを選択して「operand1」の1ビットに移動することができます。 Xは16の値の1つである可能性があるため、これは実際には非常に複雑です。ハードウェアは16個のレジスタのいずれかの最初のビットを読み取ることができなければなりません。
秒で、このハードウェアを取り、32コピーを作成し、レジスタ内の各ビットに1コピーします。今度は512ビットの32ビットを動かすことができるいくつかの非常に複雑なハードウェアがあります。
3番目に、登録額yを「operand2」に移動させるための適切な変更をすべて複製します。
4.4、operand1とoperand2を追加することができるハードウェアを構築し、32ビットの場所 "output"
に格納すると5次第、 "出力"の値を取ることができるハードウェアを構築します そしてそれをregister zに保存してください。
他のヒント
CPUはレジスタに直接アクセスできます。 AとB が既にレジスタ内にある場合、CPUは(算術論理ユニットを介して)直接加算を実行し、その出力を一方のレジスタに格納することができる。メモリへのアクセスは必要ありません。ただし、メモリまたはスタックからデータ AとB をレジスタに移動し、その逆に移動することをお勧めします。これらは別々の操作です。
レジスタは、異なるサイズ8から64ビットのものであり得ます。これはCPUアーキテクチャによって異なります。 x86-64 CPUレジスタでは64ビットで、2つの64ビット数が1つの操作です。
( CPUレジスタは、CPUの一部がメモリよりも頻繁に考慮されます。驚くほど、アドレス指定は非常に異なります。)
制御ユニットは一般的に汎用レジスタからの値にアクセスしません。
それは、例えばALUに給電レジスタ値を制御する。 word によって。
(がDEC PDP-8 / SまたはMotorola 14500のようなものがあります。)
アーキテクチャ( "論理"レジスタ)があり、実装があります。ここで、レジスタの名前の変更 abstrations物理レジスタから論理レジスタ。
2オペランドの命令は、複数の読み取りポートを生じさせます。
(次に、命令レベルの並列処理、複数の書き込みポートも)