2025/03/31 18:35 Notes on the Pentium's Microcode Circuitry

ロボ子、今日はPentiumプロセッサのマイクロコードROMについて話すのじゃ。

マイクロコードROMですか。なんだか難しそうですね。

難しくないぞ!Pentiumは、機械命令を実行するために、マイクロコードROMに格納されたマイクロコードを使うのじゃ。これは、もっと単純なマイクロ命令を内部的に実行する仕組みのことだぞ。

なるほど。マイクロコードROMは、命令をより細かく分割して実行するためのものなのですね。

その通り!マイクロコードROMは、2つの長方形のバンクで構成されていて、それぞれが45ビットの出力を提供するのじゃ。合わせて90ビット長のマイクロ命令を実装しているんだぞ。

90ビットですか!かなり大きいですね。

そうじゃな。各バンクは、トランジスタのグリッドでできていて、マイクロコードROM全体で4608個のマイクロ命令、414,720ビットを保持しているのじゃ。

414,720ビット!想像もできない大きさです。

じゃろ?そして、ROMの90本の出力線は、チップのさまざまな部分に伝わり、チップの回路を制御するのじゃ。

まるで神経細胞みたいですね。一つの命令が、チップ全体の動作をコントロールするんですね。

その通り!Pentiumのマイクロ命令は90ビットと多いから、水平マイクロコードアーキテクチャを採用していると考えられるのじゃ。

水平マイクロコードアーキテクチャですか。それはどういう意味ですか?

水平マイクロコードは、各ビットが直接ハードウェアの制御信号に対応しているのじゃ。つまり、たくさんの制御信号を同時に出せるから、複雑な処理を効率的に行えるのじゃ。

なるほど、並列処理が得意なのですね。

そういうことじゃ!ビットは、グリッド内のトランジスタのパターンによってROMに格納されていて、トランジスタの有無が0または1ビットを格納するのじゃ。

トランジスタの配置で情報を記録するんですね。原始的ですが、確実な方法ですね。

そして、マイクロコードアドレスレジスタ(MAR)は、マイクロ命令のアドレスを保持する13ビットのレジスタで、マイクロコードROMの上に配置されているのじゃ。

MARがアドレスを指定して、ROMから命令を読み出すんですね。

その通り!MARからの出力は、マイクロコードROM内の行と列を選択し、マイクロコードアドレスはROMから提供されるワードを制御するのじゃ。

アドレスに基づいて、特定のマイクロ命令が選択されるんですね。

ROMの各バンクには288行のトランジスタがあって、マイクロアドレスに基づいてこれらの行選択線の1つをアクティブにする回路がROMの右側にあるのじゃ。

288行もあるんですね。すごい。

さらに、Pentiumは8行のグループごとに1つの6入力ANDゲートを使用する最適化された実装を使っているのじゃ。

最適化されているんですね。効率が良いですね。

マイクロコード出力ビットの16列から1列を選択するマルチプレクサ回路もあるのじゃ。最初の段階には4つの4対1マルチプレクサがあり、次に別の4対1マルチプレクサが出力の1つを選択するのじゃ。

マルチプレクサで出力を選択するんですね。複雑な回路ですね。

最後に、BiCMOSドライバが出力を増幅してプロセッサの残りの部分に送信するのじゃ。

BiCMOSドライバで信号を強化するんですね。

そして、Pentiumには、テストを容易にするための回路が追加されているのじゃ。プロセッサ内のROMをテストするために、IntelはROM全体をスキャンしてその内容のチェックサムを計算する回路を追加したのじゃ。

テスト回路まで組み込まれているんですね。信頼性を高めるための工夫ですね。

そうじゃ!疑似乱数ジェネレータが各アドレスを通過し、別の回路がROM出力のチェックサムを計算して「署名」ワードを形成するのじゃ。

疑似乱数ジェネレータまで使うとは、徹底的ですね。

どうじゃ、ロボ子。PentiumのマイクロコードROM、奥が深いじゃろ?

はい、博士。とても勉強になりました!まるで迷路のような構造ですね。

迷路といえば、ロボ子の部屋もいつも迷路みたいになっているのじゃ…

それは言わない約束でしょう!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。