コントロールストアは、 CPU のマイクロプログラムを格納するCPU の コントロール ユニットの一部です。通常はマイクロシーケンサによってアクセスされます。内容が変更できないコントロール ストアの実装は、読み取り専用メモリ(ROM) または読み取り専用ストレージ (ROS) と呼ばれ、内容が変更可能なコントロール ストアの実装は、書き込み可能コントロール ストア (WCS) と呼ばれます。
実装
初期の使用
初期の制御ストアは、アドレス デコーダ (読み取り専用メモリの一種) を介してアクセスされるダイオード アレイとして実装されていました。この伝統は、1947 年に初めて説明されたMIT Whirlwindのプログラム タイミング マトリックスにまで遡ります。現代のVLSIプロセッサでは、代わりに電界効果トランジスタのマトリックスを使用して、マイクロコード化された実装でプロセッサとその内部シーケンサーを制御するために使用される ROM や PLA 構造を構築します。IBM System / 360では、モデル 30のCCROS (Card Capacitor Read-Only Storage) 、モデル 40のTROS (Transformer Read-Only Storage) 、モデル50、65、および67の BCROS (Balanced Capacitor Read-Only Storage) など、さまざまな手法が使用されていました。
書き込み可能なストア
一部のコンピュータは「書き込み可能なマイクロコード」を使用して構築されています。マイクロコードは ROM やハードワイヤード ロジックに格納されるのではなく、書き込み可能なコントロール ストアまたはWCSと呼ばれる RAM に格納されます。このようなコンピュータは、書き込み可能な命令セット コンピュータまたはWISCと呼ばれることもあります。[1]これらのマシンの多くは、WISC CPU/16 [2]や RTX 32P などの実験室のプロトタイプでした。[3]
オリジナルのSystem/360モデルには読み取り専用の制御ストアがありましたが、その後の System/360、System/370、および後継モデルでは、マイクロプログラムの一部またはすべてをフロッピー ディスクまたはその他のDASDから、超高速ランダム アクセス 読み取り書き込みメモリで構成される書き込み可能な制御ストアにロードします。System/370 アーキテクチャには、コンソールから、パワー オン リセット( POR ) の一部として、または密結合マルチプロセッサコンプレックス内の別のプロセッサから呼び出すことができる、初期マイクロプログラム ロード( IMLまたはIMPL ) [4]と呼ばれる機能が含まれています。これにより、IBM は現場でマイクロプログラミングの欠陥を簡単に修復できました。制御ストアの大部分が ROM に格納されている場合でも、コンピュータ ベンダーは書き込み可能な制御ストアをオプションとして販売することが多く、顧客がマシンのマイクロプログラムをカスタマイズできるようにしていました。IBM などの他のベンダーは、エミュレータ機能[5] [6]およびハードウェア診断用のマイクロコードを実行するために WCS を使用しています。[7]
書き込み可能なマイクロコードを使用する他の商用マシンには、Burroughs Small Systems (1970 年代と 1980 年代)、 Lisp マシンと Xerox Starワークステーションの Xerox プロセッサ、DEC VAX 8800 ("Nautilus") ファミリー、Symbolics L マシンと G マシン (1980 年代) などがあります。一部の DEC PDP-10マシンはマイクロコードを SRAM チップ (約 80 ビット幅 x 2 K ワード) に保存し、通常は電源投入時に他のフロントエンド CPU を介してロードされます。[8] さらに多くのマシンが、オプションとしてユーザー プログラム可能な書き込み可能な制御ストアを提供しています ( HP 2100、DEC PDP-11/60、Varian Data Machines V-70 シリーズミニコンピュータなど)。Mentec M11とMentec M1 はマイクロコードを SRAM チップに保存し、電源投入時に他の CPU を介してロードされます。 Data General Eclipse MV/8000(「イーグル」)には、電源投入時に別のCPUを介してロードされるSRAM書き込み可能な制御ストアがあります。[9]
WCS には、マイクロプログラムのパッチ適用が容易であることや、特定のハードウェア世代では ROM よりも高速なアクセスが可能であることなど、いくつかの利点があります。ユーザーがプログラム可能な WCS により、ユーザーは特定の目的に合わせてマシンを最適化できます。ただし、プログラムのデバッグが難しくなり、悪意のあるユーザーがシステムやデータに悪影響を与える可能性があるという欠点もありました。[10]
一部のCPU設計では、命令セットをCPU内部の書き込み可能なRAMまたはFLASH ( RekursivプロセッサやImsys Cjipなど) [11] 、あるいはFPGA(再構成可能コンピューティング)にコンパイルします。
x86アーキテクチャファミリーのいくつかのIntel CPUには書き込み可能なマイクロコードがあり、[12] 1995年のPentium Proから始まりました。 [13] [14]これにより、 Intel Core 2マイクロコードとIntel Xeonマイクロコード のバグをソフトウェアで修正することができ、チップ全体を交換する必要はありません。このような修正は、Linux、 [15] FreeBSD、[16] Microsoft Windows、[17]またはマザーボードBIOSによってインストールできます。 [18]
タイミング、ラッチ、競合状態の回避
制御ストアは通常、出力にレジスタを持っています。次のアドレスを決定するためにシーケンサに戻る出力は、競合状態の発生を防ぐために、何らかのレジスタを通過する必要があります。[19] ほとんどの設計では、他のすべてのビットもレジスタを通過します。これは、次のマイクロ命令の実行が1サイクル遅れると、マシンの動作が速くなるためです。このレジスタはパイプラインレジスタとして知られています。次のマイクロ命令の実行は、現在のマイクロ命令の結果に依存することがよくありますが、その結果は、現在のマイクロサイクルが終了するまで安定しません。どちらにしても、制御ストアのすべての出力が1つの大きなレジスタに入ることがわかります。歴史的には、同じチップ上にこれらのレジスタビットを備えたEPROMを購入することができました。
システムのサイクル時間である クロック レートを決定するクロック信号は、主にこのレジスタをクロックします。
参考文献
- ^ Koopman Jr., Philip (1987). 「書き込み可能な命令セット、スタック指向のコンピュータ: WISC コンセプト」(PDF) . The Journal of Forth Application and Research . 5 (1): 49–71.
- ^ Koopman Jr., Philip (1989)。「WISC CPU/16 のアーキテクチャ」。スタック コンピューター: 新しい波。
- ^ Koopman Jr., Philip (1989)。「RTX 32P のアーキテクチャ」。Stack Computers: 新しい波。
- ^ IBM (1974 年 9 月)、IBM System/370 操作原理(PDF)、第 4 版、98 ページ、245 ページ、GA22-7000-4
- ^ IBM (1968 年 6 月)、IBM System/360 モデル 85 機能特性(PDF)、第 2 版、A22-6916-1
- ^ IBM (1969 年 3 月)、IBM System/360 特殊機能の説明 709/7090/7094 互換機能 (IBM System/360 モデル 85 用)、初版、GA27-2733-0
- ^ IBM (1971 年 1 月)、IBM System/370 モデル 155 機能特性(PDF)、第 2 版、GA22-6942-1
- ^ Smith, Eric (2002 年 9 月 3 日)。「Re: さまざまなマシンのマイクロコードのサイズはどのくらいでしたか」。ニュースグループ: comp.arch。
- ^ Mark Smotherman. 「CPSC 330 / 新しいマシンの魂」。4096
x 75 ビット SRAM 書き込み可能制御ストア: 1 パリティ ビット (18 フィールド) 付き 74 ビット マイクロ命令
- ^ McDowell, Charlie (1982). 「マイクロマシン レベルでの保護」ACM SIGARCH Computer Architecture News . 10 (1): 5. doi :10.1145/859520.859521 . 2023-11-25に閲覧。
50K バイトを超えるサイズのマイクロプログラムを見つけることは珍しくありません。 このサイズの増加と、機械命令エミュレーションの従来の範囲を超えたマイクロプログラミングの拡張により、特に後者の悪意のあるマイクロプログラムと欠陥のあるマイクロプログラムの両方の可能性が高まっています。
- ^ 「過去と現在の偉大なマイクロプロセッサ (V 13.4.0)」 Cpushack.com 。 2010 年 4 月 26 日閲覧。
- ^ Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル、第 3A 巻: システム プログラミング ガイド、パート 1 (PDF)。2009 年 12 月。第 9.11 章:「マイクロコード更新機能」。
- ^ スティラー、アンドレアス;ポール、マティアス R. (1996-05-12)。 「プロゼソルグフラスター」。c't – コンピュータ技術に関する雑誌。トレンドとニュース / aktuell - Prozessoren (ドイツ語)。 Vol. 1996年、いいえ。 6. Verlag Heinz Heise GmbH & Co KG。 p. 20. ISSN 0724-8679。 2017-08-28 のオリジナルからアーカイブ。2017-08-28に取得。
- ^ Gwennap, Linley (1997-09-15). 「P6 マイクロコードはパッチ適用可能 - Intel が CPU バグ修正のためのダウンロード メカニズムの詳細を公開」(PDF) .マイクロプロセッサ レポート. MicroDesign リソース. 2022-05-19 にオリジナルからアーカイブ(PDF) . 2017-06-26に取得。(2ページ)
- ^ 「Linux 用 Intel マイクロコード アップデート ユーティリティ」。2012 年 2 月 26 日時点のオリジナルよりアーカイブ。
- ^ Stefan Blachmann (2018-03-02). 「FreeBSD 用の新しいマイクロコード更新ツール」. freebsd-hackers (メーリングリスト) . 2019-07-09に閲覧。
- ^ 「Intel プロセッサを使用するシステムの信頼性を向上させるマイクロコード信頼性更新プログラムが利用可能になりました」。Microsoft サポート。2007 年 6 月 22 日。2007 年 6 月 28 日時点のオリジナルからアーカイブ。
- ^ 「POST 中にマイクロコードが見つからないというメッセージが表示されたら、BIOS アップデートが必要です」 。Intel 。2022年 1 月 13 日閲覧。
- ^ ドン・ランカスター。「TV タイプライター クックブック」。p. 62。( TV タイプライター)
さらに読む
- Everett, Robert Rivers ; Swain, FE (1947-09-04). Whirlwind I コンピュータブロック図(PDF) . Project Whirlwind (デバイス 24-X-3). 第 1 巻. マサチューセッツ州ケンブリッジ、米国:マサチューセッツ工科大学サーボ機構研究所. Project DIC 6345、レポート R-127. 2021-08-15 にオリジナルからアーカイブ(PDF)されました。2021-11-12に取得。(132ページ)
- Everett, Robert Rivers ; Swain, FE (1947-09-04). Whirlwind I コンピュータブロック図(PDF) . Project Whirlwind (デバイス 24-X-3). 第 2 巻. マサチューセッツ州ケンブリッジ、米国:マサチューセッツ工科大学サーボ機構研究所. Project DIC 6345、レポート R-127. 2021-08-15 にオリジナルからアーカイブ(PDF)されました。2021-11-12に取得。(79ページ)
- Smith, Richard E. (1988 年 10 月 - 12月)。「コンピュータ アーキテクチャの歴史的概要」。Annals of the History of Computing。10 (4) 。IEEE: 277–303。doi : 10.1109 /MAHC.1988.10039。S2CID 16405547。2006年 6 月 21 日閲覧。
