コントロールユニット
.NET が登場する前の時代、コンピュータに何かをさせる前に、実際にコンピュータが何であるかを知る必要がありました。この質問には、たくさんの答えがあったでしょう。
ただし、当時、インターネットは実際には問題ではなく、スタックとヒープの概念が実際には標準ではなかったため、スタックオーバーフローは実際には問題ではありませんでした..
したがって、実際に同じことについて話していることを確認するために、これを説明するだけです..
デジタル コンピューターの制御ユニットは、一連のマイクロオペレーションを開始します。バス指向のシステムでは、マイクロオペレーションを指定する制御信号は、マルチプレクサ、デコーダ、および ALU 内のパスを選択するビットのグループです。
そのため、制御ユニットと、それを実際に実行できるようにするための命令セットに注目しています。コンパイルされたアセンブリがビットシフト、レジスタのクリア、または同様の「低レベル」のものを要求したときに、どのようなステップが発生するかを扱っています。
これらの命令の一部はハードワイヤードされている場合がありますが、通常はすべてではありません。
マイクロプログラム
引用: 「マイクロプログラミングは、従来のコンピューターの制御ユニットを設計する秩序ある方法です」
( http://www2.informatik.hu-berlin.de/rok/ca/data/slides/english/ca9.pdf )
コントロール ユニットのコントロール変数は、 「コントロール ワード」と呼ばれる 1 と 0 の文字列で表すことができます。マイクロプログラム制御ユニットは、バイナリ制御変数がハードワイヤードではなく、メモリに格納されている制御ユニットです。最適化する前は、このメモリをマイクロメモリと呼んでいました ;)
通常、実際には、制御メモリとメイン メモリの 2 つの「メモリ」が表示されます。
コントロールメモリはマイクロプログラム用で、メインメモリは命令とデータ用です
コントロールメモリのコード生成のプロセスは、マイクロプログラミングと呼ばれます。
... わかった?
プロセッサ内のレジスタ間の情報の転送は、バスではなく MUX を介して行われます。通常、いくつかのレジスタがあり、そのうちのいくつかはプログラマーになじみがあり、いくつかはそうではありません。ここで最も注目すべきは、プロセッサ レジスタです。最も一般的な 4 つのプロセッサ レジスタは次のとおりです。
- プログラムカウンター – PC
- アドレスレジスタ – AR
- データレジスタ – DR
- アキュムレータレジスタ - AC
マイクロコードがプロセッサレジスタを使用して処理を行う例
Assembly instruction "ADD"
pseudo micro code: " AC ← AC + M[EA] " where M[EA] is data from main memory register
control word: 0000
Assembly instruction "BRANCH"
pseudo micro code "If (AC < 0) then (PC ← EA) "
control word: 0001
マイクロメモリ
マイクロメモリは、制御メモリ内の内容をどのように整理するかにのみ関係します。ただし、大きな命令セットがある場合は、単にすべての命令を格納するよりも優れた方法を実行できます。コントロール メモリを「コントロール メモリ」と「ナノ メモリ」に分割できます(ナノはマイクロよりも小さいため ;))
マイクロコードで貴重なスペース (チップ領域) を多く無駄にしないので、これは良いことです。
ナノ メモリの概念は、垂直命令と水平命令の組み合わせから派生したものですが、それらの間のトレードオフも提供します。
Motorola M68k マイクロコンピュータは、このナノ メモリ制御設計を備えた初期の普及した µComputer の 1 つです。ここでは、マイクロ命令のグループがマイクロプログラムで頻繁に発生する場合、メモリの大幅な節約が達成できることが示されました。
ここでは、メモリを適切に構成することにより、速度を大幅に犠牲にすることなく、数ビットを使用して命令をアドレス指定できることが示されました。縮小は、マイクロアドレスと比較して、ナノアドレスを指定するために上位の log_2(n) ビットのみが必要になるように行われました。
これは何を意味するのでしょうか?M68K の例にもう少し長くとどまります。640 の命令があり、そのうち 280 だけが一意でした。
命令が単純なマイクロ メモリとしてコーディングされていた場合、以下の容量を消費します。
640x70 bits. or 44800 bits
ただし、70 ビットすべてを満たすのに必要なのは 280 個の一意の命令のみであるため、残りの命令にナノ メモリ技術を適用すると、次のようになります。
8 < log_2(640-280) < 9 = 9
640*9 bit micro control store, and 280x70 bit nano memory store
total of 25360 bits
または19440ビットのメモリ節約..プログラマーのメインメモリとして配置できます:)
これは、式が次のことを示しています。
S = Hm x Wm + Hn x Wn
where:
Hm = Number of words High Level
Wm = Length of words in High Level
Hn = Number of Low Level words
Wn = Length of low level words
S = Control Memory Size (with Nano memory technique)
実生活で保持します。
マイクロメモリは通常垂直に設計されており(Hmが大きく、Wmが小さく)、nanoプログラムは通常Hnが小さく、Wnが大きく反対です。
質問に戻る
問題の言葉遣いを理解するのにいくつか問題がありました。これは、私の母国語がデンマーク語であるためかもしれませんが、それでも何とか理解しようとして、次のようになりました。
proposition 1:
1000 instructions
32 bits
450 uniques
µCode:
1000 * 32 = 32.000 bits
bit width required for nano memory:
log2(1000-450) > 9 => 10
450 * 32 = 14400
(1000-450) * 10 = 5500
32000 - (14400 + 5500) = 12.100 bits saved
これはあなたの答えではありません。説明をお願いします。
アップデート:
"the control word is 32 bit. we can code the 450 pattern with 9 bit and we use these 9 bits instead of 32 bit control word. reduce memory from 1000*(32+x) to 1000*(9+x) is equal to 23kbits. – Ali Movagher"
あなたの問題があります.450パターンを9ビットでコーディングすることはできません.10ビットが必要であることがわかります..