(57)【要約】【課題】マイクロコードの実行を高速化する。【解決手段】所定の機能を実現するプログラム命令を処理するディジタル・システムによって用いられるマイクロコードを格納するマイクロコード・キャッシュ・システム。当システムは、マイクロコードの第１のグループを格納するよう構成された読み出し専用メモリ（ＲＯＭ）及びマイクロコードの第２のグループのブロックを一時的に格納するよう構成されたランダム・アクセス・メモリ（ＲＡＭ）キヤツシュを有する。マイクロコードの第２のグループは、ＲＡＭキャッシユから分離したメモリ装置からＲＡＭキャッシュに直接マップされているので、そのブロックはそのディジタル・システムにスワップイン及びスワップアウトすることが可能である。当マイクロコード・キャッシュ・システムは当ディジタル・システムと集積化されているが、分離したメモリ素子は集積化されていない。【選択図】図２
2006302313.tif 000002
【特許請求の範囲】
【請求項１】
デイジタル・システムが使用するマイクロコードを格納するキャッシュ・システムであって、ディジタル・システムは該ディジタル・システムを制御するプログラム命令を処理し、各プログラム命令は複数の命令フィールドから成り、
そのシステムが
該マイクロコードの第１グループを格納するよう構成された読み出し専用メモリ（ＲＯＭ）（210）と、
該マイクロコードの第２グループのサブセクションを一時的に格納するよう構成されたランダム・アクセス・メモリ（ＲＡＭ）キャツシュ（208）とを含み、
該マイクロコードの前記第２グループは前記ＲＡＭキャッシュとは分離したメモリ素子から前記ＲＡＭキャッシュ（208）にマップされ、前記ＲＡＭキャッシュは前記サブセクションをマイクロコード・キャッシュ・システムにスワップイン及びそこからスワップアウトするように構成されており、
前記マイクロコードをプリデコードする手段であって、前記プリデコード手段が使用されていない前記ＲＯＭ（210）又は前記ＲＡＭ（208）の一つを将来使用することを検出すれば使用可能にするように前記マイクロコードをプリデコードする手段によって特徴づけられることを特徴とするキャッシュ・システム。
【請求項２】
請求の範囲第１項に記載のシステムであって、
マイクロコードを求める要求を受け取り且つ要求されたマイクロコードが前記ＲＯＭ、前記ＲＡＭキャッシュ、又は分離したメモリ素子のどれかに位置するか否かを決定する手段（216、212）をさらに含むことを特徴とするシステム。
【請求項３】
請求の範囲第１項又は第２項に記載のシステムであって、
該マイクロコード・キャッシュ・システムは単一チップ上にあるが、該分離したメモリ素子は前記チップ上にはないことを特徴とするシステム。
【請求項４】
請求の範囲第２項に記載のシステムであって、
該ディジタル・システムはマイクロコード・アドレス範囲を有し、且つ該マイクロコードが前記ＲＯＭ（210）又は前記ＲＡＭ（208）にあるか否かを決定する前記手段（216）は、前記ＲＯＭに対しては前記マイクロコード・アドレス範囲の第１のサブセクションを用い、前記ＲＡＭに対しては第２のサブセクションを用いることを特徴とするシステム。
【請求項５】
請求の範囲第２項に記載のシステムであって、
前記手段は、要求されたマイクロコードが前記ＲＯＭ又は前記ＲＡＭキャッシュにあるか否かを決定する制御論理（216）と、
要求された所望のマイクロコードが要求された時点に前記ＲＡＭキャッシュに実際に常駐し有効か否かを表すタグ・メモリ（212）とを、
さらに含むことを特徴とするシステム。
【請求項６】
請求の範囲第１項乃至第５項中の少なくも一つに記載のシステムであって、
該システムは、所望のマイクロコードを分離したメモリ素子から取り出しそれを前記ＲＡＭキャッシュ（208）に格納する直接アクセス・メモリ・コントローラ（214）をさらに含むことを特徴とするシステム。
【請求項７】
請求の範囲第１項乃至第６項中の少なくも一つに記載のシステムであって、
該マイクロコードの前記第２グループが分離したメモリ素子から前記ＲＡＭキャッシュ（208）に直接マップされることを特徴とするシステム。
【請求項８】
請求の範囲第１項乃至第７項中の少なくも一つに記載のシステムであって、
該マイクロコードの前記第２グループが該マイクロコードの前記第１グループより十分に大きいことを特徴とするシステム。
【請求項９】
請求の範囲第１項乃至第８項中の少なくも一つのシステムであって、
ここでディジタル・システムがグラフィックス・プロセサであることを特徴とするシステム。
【請求項１０】
請求の範囲第１項乃至第９項中の少なくも一つに記載のシステムであって、
マイクロコードの前記第１及び第２のグループのサブセットが診断を行うのに用いられることを特徴とするシステム。
【請求項１１】
ディジタル・システムで用いられるマイクロコードをＲＯＭメモリ・ユニット（２１０）及びＲＡＭメモリ・ユニット（２０８）に格納する方法であって、
ＲＯＭ及びＲＡＭは夫々ｍ及びｋ個のアドレス指定可能なロケーションを有し、且つ該ディジタル・システムに集積されており、ディジタル・システムはｎビットのアドレス空間を有し、
当該格納の方法は、アドレス指定可能なＲＯＭロケーションの１ビットを除く全てのビットをアドレス空間にマップするステップと、
アドレス指定可能なＲＡＭロケーシヨンの１ビットを除く全てのビットをアドレス空間にマップするステップとを、含み、
ｍビット及びｋビットの残りのビットは、該ＲＯＭ又は該ＲＡＭのいずれかをアクセスするための選択ビットとして用いられることを特徴とする方法。
【請求項１２】
請求の範囲第１１項に記載の方法であって、
該ＲＯＭ及び該ＲＡＭの現在の利用状況を監視するよう選択ビットの値をチェックするステップをさらに含むことを特徴とする方法。
【請求項１３】
請求の範囲第１１項又は第１２項に記載の方法であって、
該ＲＯＭと該ＲＡＭ間の将来の切り換えを検出するためマイクロコードのブランチ・アドレスをプリデコードするステップと、
もし切り換えが検出されれば、使用されていないメモリ・ユニットを使用可能にしそれに引き続き他方を使用不能にするステップとを、
さらに含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル・プロセサに関するもので、より具体的には、マイクロコード命令を記憶するためのランダム・アクセス・メモリ（ＲＡＭ）に関するものである。
【背景技術】
【０００２】
マイクロコード、即ちマイクロ・プログラミングは、最初、中央処理装置（ＣＰＵ）の機能を制御するのに使われる論理をより規則正しくする１つの方法として提案された。それは、簡単なデータパスが複雑なプログラム命令を実行するのを可能にするが、複雑なプログラムを実行するのに必要な機能を一連の簡単な操作に分解しそれを順次に行うことによってこれを可能にするのである。マイクロコードを、ＣＰＵの命令セットに対応するプログラム命令と混同してはいけない。
【０００３】
マイクロコードのアドレスは、マイクロコード・エンジン（又はマイクロシーケンサ）にとって内部的ないくつかの状態値と共に、命令レジスタの一部又は全ての内容から形成されている。マイクロシーケンサは、データパスを制御するためにマイクロコードを実行する。マイクロコードの利点は、制御論理が非常に規則的な構造、普通は読み出し専用メモリ（ＲＯＭ）、でインプリメントされることである。命令セットの変更又はそれに追加するには、ＲＯＭのビットを変更するか、新しいＲＯＭを追加しなくてはならない。
【０００４】
より柔軟性を持たせるためＲＯＭの全部又は一部を書き込み可能なＲＡＭで置き換えると言う提案もある。しかし、ＲＡＭ方式は、実現可能なマイクロコード制御ではまだ量的な制限がある。その理由は、ＲＡＭはチップ上に集積するのが高価であるのと、チップ上のＲＯＭに比べて記憶ビット数／チップ面積比が低いからである。（現在、ＲＯＭの記憶ビット数／チップ面積比はＲＡＭに比べて３：１又は４：１で、即ち、同じ記憶容量に対してＲＡＭはＲＯＭの３〜４倍の大きさである。）
【０００５】
あるマイクロコード化されたマシンでは、マイクロプログラムでブランチやサブルーチンを用いることが可能であるが、これは、マイクロシーケンシング論理を非常に複雑なものにする。ＲＩＳＣプロセサの設計者が、マイクロプログラミングで用いられるいくつかの技法を採用したことはあるが、これは、ユーザー・プログラムのレベルである。これらの技法は、遅延ブランチ、ソフトウエア管理のパイプライン・インタロック等である。
【０００６】
マイクロコードは、プログラマに、パイプライン及びハードウエアの詳細を見えるようにするが、これは長所とも短所ともなり得る。マイクロコードを使用するのはより効率的ではあるが、同時に、プログラムするのは難しい。大きな長所の一つは、もし効率的にマイクロコード化されていれば、１サイクル中に複数の操作を行うことができることである。
【０００７】
ＲＯＭのアクセス時間は非常に早いので、頻繁に使われるＲＯＭ操作は、もしそれらがマイクロコード化されていれば高速に動作する。初期のＲＩＳＣの支持者は、命令キャッシュ・メモリもアクセス時間が速いことを指摘していた。
【０００８】
ＲＯＭをベースにしたマイクロコードは、最初の設計者が選んだ静的な命令セットだけを含むのに対して、従来の命令キャッシュは、現在のタスクに適合するようハードウエアが自動的に選んだ頻繁に使用される操作の動的なセットを含むことが可能である。しかし、従来の命令キャッシュは、マイクロコードを格納するのに用いられたことはない。  （種々の商業用コンピュータ・システムに用いられる多数のキャッシュ・メモリ構成については、ステフエン・Ｂ・フアーバー（Stephen  B.Furber）著「VLSI  RISC  アーキテクチヤ及び構造（VLSI  RISC  Architecture  and  Organization”）」（Marcel  Dckker，Inc.，1989）及びジヨン・Ｌ・ヘネシー等（John  L.Hennessy  et  al.）著「コンピュータ・アーキテクチャー定量的手法（Computer  Architecturc-AQuantitative  Approach）」（Morgan  Kaufmann  Publishers，Inc.，San  Mateo，California，1990）を参照のこと。
【０００９】
ＲＩＳＣへの動きはマイクロコードへの反動と見られてきたが、これは、誤解を生むかも知れない。問題になったのは、複雑な命令セットであって、マイクロコード・インプリメンテーシヨンではない。確かに、小さなマシンではマイクロコードが複雑な命令セットをサポートする必要があることは事実だが、簡単な命令セットをマイクロコードすることも等しく可能である。初期のＲＩＳＣの設計ではマイクロコードを用いることを避けていたが、後に出てきたいくつかの商業用ＲＩＳＣ設計では再び採用するようになってきている。ほとんどの命令を単一サイクルで実行するというＲＩＳＣの傾向は、風変わりなマイクロコードの構成を用いるのを嫌うと思われる。単一サイクル命令に関しては、マイクロコードＲＯＭは、実際、単に通常のデコード構成に過ぎない。
【００１０】
ファーバー（Ｆｕｒｂｃｒ）は、その著書で、複雑な命令セットを持つディジタル・プロセサは、ＤＥＣのＶＡＸ−１１／７８０のように、通常は、マイクロコードを用いて比較的簡単なデータパス上で、またいくつかのシーケンシャルなステップで複雑な命令を実行することが可能であると述べている。ここで、簡単な命令のサブルーチンに対してマイクロコードによって得られる利点は、マイクロコードが、主メモリに比較して非常に速いアクセス時間を持つメモリに保持されていることである。しかし、ＣＰＵがプログラム命令用にキャッシュ・メモリを持っていれば、この利点は失われてしまう。マイクロコードは、簡単な命令列の予め選ばれたセットに対して優れた性能を示すが、命令キャッシュは、動的に自己調整した命令列に対して同等な性能を示す。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
以前のＶＡＸ設計では、マイクロコードを格納するのにオフチップのＲＡＭが使われ、そのマイクロコードは直接チップにマップされていた。しかし、マイクロコードをアクセスするためオフチップのＲＡＭとの接続用に余分なピンが必要であった。さらにもう一つの欠点は、必要なマイクロコードを取り出すのにプログラマがコードを書かなくてはならないことであった。
【００１２】
望ましいのは、マイクロコード及びキャッシュ技術双方の高速性を利用したＣＩＳＣ又はＲＩＳＣシステムに於てさらに大きな柔軟性を得ることである。
【課題を解決するための手段】
【００１３】
発明の要約：本発明は、マイクロコードを格納するためのオンチップＲＯＭ及びＲＡＭキャッシュ双方を有するキャッシュ・システム及び方法に関するものである。
【００１４】
本発明は十分な柔軟性を持っており、タグ情報及び対応する命令がデコードされるとき同時にデコードされるターゲット・アドレスに基づく情報を用いてマイクロコードをＲＯＭ又はＲＡＭキャッシュのいずれかに於て探すことが可能である。本発明では、重要なマイクロコードをＲＯＭに格納し、付加的なマイクロコードを必要に応じてＲＡＭにキャッシュしたりＲＡＭから取り出したりすることが可能である。本発明ではさらに、例えば、チップや周辺機器のテストを行なうためオフチップの診断マイクロコードをマイクロコードＲＡＭキャッシュにキャッシュすることが出来る。
【００１５】
本発明は、チップの標準入出力チャネルを用いてマイクロコードのグループをアクセスするが、そのサイズは使用可能なオフチップ・メモリ量又はマイクロコードのアドレス・スペースによってのみ限定される。プログラマの観点からするとマイクロコードＲＡＭキャッシュは透明である。プログラマは、必要なマイクロコードを取り出すのにコードを書く必要はない。従って、本発明は従来の設計に比べて速く効率的である。マイクロコードはキャッシュ・スラッシングを避けるコードを配列できるため、直接にマップされたキャッシュを用いることが出来る。他のキャッシュ・マッピング手法もまた考慮されている。
【００１６】
本発明はまたクロック・サイクルを短縮する。現在の技術によって、クロック速度がアクセス時間を短縮しているので、マイクロコードをオフチツプＲＡＭに記憶させるのはもはや有用ではなくなってきている。５０ＭＨｚのクロックは２０ｎｓのクロック・サイクルということになるが、チップから出てマイクロコードを持ってまたチップに戻ってくるのはクロック・サイクルを消費し過ぎるので効率的でない。一つの解決法は非常に速いオフチップのＲＡＭを用いることであろうが、そのような装置はコスト的に許されないし、パッケージに多くの専用のピンを必要とする。本発明では、オンチップ・キャッシュとしては遅いが安価なＳＲＡＭ又はＤＲＡＭを用いることが可能で、しかもクロック・サイクルの形で貴重な時間を節約できる。
【００１７】
本発明のもう一つの利点は、新しいマイクロコードをシステムに加えることが出来、それ故、それが必要なときに新しいマイクロコードをロードするオーバヘッドが必要となるだけで、組み込みＲＯＭマイクロコードと同じ速度で走らせることが可能なことである。
【００１８】
さらにもう一つの利点は、ＲＡＭマイクロコード又は、例えばＲＡＭに分岐するＲＯＭサブルーチンといったような、ＲＯＭとＲＡＭマイクロコードの組み合わせを用いてバグを修正できることである。ＲＡＭとＲＯＭの間及びその逆の他のパッチ技法もまた考慮されている。
【発明を実施するための最良の形態】
【００１９】
本発明の、上述した、そしてその他の、特長及び利点は、添付図面に示すように、好適な実施例の以下に記載のより具体的な説明から明らかになるであろう。当発明は、添付の図面を参照することにより理解を増すことが出来る。第１図は、従来のマイクロコード記憶システムのブロック図である。第２図は、本発明のマイクロコード・キャッシュ・システムの高レベルのブロック図で  第３図は、主メモリのブロックに格納されたマイクロコードを示す代表的な図である。
【００２０】
図において、同一の要素又は同様の機能を持つ要素は同じ数で表わされる。さらに、番号の一番左の数字は、その番号が最初に出てくる図面の番号を表す。
【００２１】
発明の詳細な説明：本発明は、命令セットは比較的小さいがマイクロコードは非常に複雑なシングル（半導体）チップのグラフィックス・プロセサ用として開発された。その時生じた問題は、データパス中でプログラム命令の処理を如何に高速化するかということであった。この問題を解決することはそのマイクロプロセサを成功させるために大変重要であった。その理由は、グラフィックス・プログラム命令の１つ１つを実行するのに要する機能の数は膨大なものだからである。
【００２２】
１つのグラフィックス・プログラム命令を実行するのには、数百から恐らく数百万の浮動小数点計算を行う必要がある。それ故、例えばグラフィックス・プロセサでは、プログラム命令を実行するため必要な機能を行うマイクロコードに大きな負担が掛かってくる。それに反して、典型的なＣＩＳＣ又はＲＩＳＣ命令の実行にはただ２つの数の加算が必要なだけである。
【００２３】
１９７８年に発表されたＤＥＣのＶＡＸ−１１／７８０はデータパスの制御用として複雑な命令及びマイクロコードを用いるｐｒｅ−ＲＩＳＣアーキテクチャを有していた。そのマイクロコードの一部は固定化されており、また他の一部は書き込み可能であった。書き込み可能な部分は、いくつかの命令をインプリメントしたり他をパッチするのに用いられ、また診断用に命令を構築できるようにするために用いられた。ＶＡＸ−１１／７８０の簡単化したブロック・ダイアグラムを第１図に示す。ＣＰＵ１０２は、プロセサ１０４、固定マイクロコード・ブロツク１０６、及び書き込み可能ブロック１０８を含んでいる。それ以外に第１図には、命令パス１１０、データ読み出し及び書き込みパス１１２及び１１４の夫々、データ・キャッシュ１１６、書き込みバッファ１１８、仮想から物理アドレスへの変換器、即ち、トランスレーション・ルック・アサイド・バッファ（ＴＬＢ）１２０、外部システム・バス１２２、メモリ・サブシステム（主メモリ）１２４、及び入出力サブシステム１２６等が示されている。それら要素の機能は従来と同様である。ここで注意を要するのは、データ・キャッシュ１１６はデータをプロセサ１０４にキャッシュするためだけに用いられることである。
【００２４】
システム・ブロック・ダイアグラム：本発明は、グラフィックス・プロセサ・チップに関して説明されるが、当業者に明かになるように、本発明は、マイクロコードを用いたいかなるシステムにも適用することが可能である。例えば、高速フーリエ変換を行うデイジタル・シグナル・プロセサはマイクロコードを用いて多くの必要な加算操作及び乗算操作を行うことが可能である。従って、本発明は、グラフィックス・プロセサだけに制限されるものではない。
【００２５】
本分野では、プロセサ、ＣＰＵ、及びディジタル・プロセサはしばしば同意語として用いられる。以後プロセサという用語を用いるが、勿論当開示の基礎をなす意味を変えることなく他の同様な用語に置き換えることが出来ると理解する。
【００２６】
チップ、集積回路、半導体デバイス、マイクロエレクトロニクス・デバイスという用語もこの分野ではしばしば同意語として使われている。本発明は当分野で一般に理解されているように上記のものの全てに適用できる。
【００２７】
本発明の集積マイクロコード記憶システムの好適な実施例を第２図の２００に示す。集積マイクロコード記憶システム２００は、マイクロコード・エンジンともよばれるマイクロシーケンサ２０１を含むが、これは、データパスを制御するためにデータパス・デコード論理回路にあるマイクロコード命令を実行する（データパス・デコード論理回路及びデータパスは示されていない）。
【００２８】
マイクロシーケンサ２０１は、プログラム命令で特定された機能に従って予め決められたマイクロコード・ルーチンを実行する。マイクロコードは、１行１行実行される。マイクロコードの各ラインはデコードされ、データパスから成る機能ブロック（レジスタ、マルチプレクサ、及びそれに類似のもの）を制御する。
【００２９】
第２図において、標準的入出力（Ｉ／Ｏ）インタフェース２０２は外部システム・バス１２２に接続されている。内部アドレス・バスは２０６に示されている。ランダム・アクセス・メモリ（ＲＡＭ）ブロック２０８、読み出し専用メモリ・ブロック２１０、キャッシュ・タグ・メモリ・ブロック２１２、制御論理回路ブロック２１６、及び直接メモリ・アクセス（ＤＭＡ）制御ブロック２１４がシステム２００の主要な要素である。システム２００はまた、システム２００とは分離した（即ち、チップ外の）主メモリにインタフェースする。
【００３０】
ＤＭＡ２１４は、マイクロ命令アドレスをメモリ・アドレスに変換することにより、主メモリ又はそれと同類のもの（ここには示されていない）からマイクロコードを取り出すのに用いられる。或いは、ＤＭＡ２１４の機能はマイクロシーケンサ２０１中に組み込むことも可能であろう。
【００３１】
制御論理回路２１６は、ＲＡＭキャッシュ２０８がアクセスされたとき発生するかも知れないキャッシュ・ミスを処理するためのキャッシュ・ミス論理回路を含んでいる。キャッシュ・ミス諭理回路は、キャッシュ・タグ・メモリ・ブロック２１２と共に、ＲＡＭキャッシュ２０８に記憶されたマイクロコードを更新する標準的キャッシュ手法を実行する。当業者には以後明かになるが、システム２００には、ヘネシー等の著書で説明されているような多くの従来のキャッシュ手法を用いることが可能である。マイクロシーケンサには、ネキスト・マイクロコード・アドレス・ジェネレータ（こには示されていない）が含まれているが、それは、次のアドレスに基づいてどちらのメモリ（ＲＡＭ２０８か又はＲＯＭ２１０か）を用いるかを選択する（即ち、次のアドレスは、ＲＡＭのアドレス領域にあるのか又はＲＯＭのアドレス領域にあるのか）。ネキスト・アドレス生成は、現在のアドレス、データパスからのデータ、及び／又はデータパス・デコード論理回路（普通はＲＡＭ２０８又はＲＯＭ２１０の出力）に基づいている。
【００３２】
その後メモリ２０８又は２１０は、夫々バス２２２又は２２４を経由してそのサイクル用のマイクロコード・データをマルチプレクサ（ＭＵＸ）２２６に出力する。制御論理回路ブロック２１６は、ＭＵＸ選択信号を生成し、ライン２２８を介してＭＵＸ２２６に送り、バス２３０を介してマイクロコード・データをデータパス・デコード論理回路に出力する。
【００３３】
このマイクロコード・データは、デコードされ、データパスを制御しネキスト・アドレス・ジェネレータに次アドレスにはどちらのアドレス・ソースを用いるかを告げる（アドレスは、データパスから来るのか、ＲＯＭ／ＲＡＭからのマイクロコード・データから来るのか、或いは単に次の順番のロケーシヨンなのか）
【００３４】
もし次アドレスが有効なＲＡＭアドレスでＲＡＭ２０８がそのアドレスに正しい情報を持っているなら、キャッシュ・ヒットになる。それ以外は、制御論理回路ブロック２１６内のキャッシュ・ミス論理回路がデータパス及びマイクロシーケンサを凍結する。
【００３５】
その後キャッシュ・ミス論理回路は、ＤＭＡ２１４に（双方向バス１２２を経て）、欠落している情報を請求する。ＤＭＡ２１４は、この情報を取り出しＲＡＭ２０８に格納する。これを行うため、ＤＭＡ２１４は、単方向バス２３２を介してＩ／Ｏインタフェース２０２と通信する。Ｉ／Ｏインタフェース２０２は、外部システム・バス１２２を経て主メモリをアクセスする。要請されたマイクロコード・データは、外部システム・バス１２２を介してＩ／Ｏインタフェース２０２に送り戻される。その要請を開始したキャッシュ・ミス論理回路はＲＡＭキャッシュ２０８に単方向バス２３４を通してマイクロコード・データが来ることを告げる。Ｉ／Ｏインタフェース２０２は、新しいマイクロコード・データを単方向バス２３６を通してＲＡＭキャッシュ２０８に送る。次にタグ・メモリ２１２は新しい情報で更新され、システムはキャッシュ・ミスが起きた前の点から続けられる。
【００３６】
或いは、キャッシュ・ミスが起きた時は、順序制御装置は、その要請と共にマイクロコード・ブロック・アドレスを単に送るだけである。マイクロコード・ブロック・アドレスは他のどんな形式にも変換でき、主システム・メモリからそれを取り出すことが可能である。仮想アドレス方式（プロセサでよく用いられるような）又は他のいかなる種類の方式もマイクロコードと共に用いることが出来る。例えば、ＤＭＡ２１４はブロック・アドレスを受け取り、それをワード・アドレスに変換し、それにポインタを付け加える。従って、システムの主メモリを３２ビット・ワードに編成し、マイクロコードを、その空間内のワードでアライメントしたいかなるロケーシヨンからでも始まるように配置することができる。ＲＡＭコードを格納するのに必要な空間の大きさに対する唯一の条件は連続しているということである。マイクロコード・キャッシュと外部マイクロコード・メモリとの間のいかなる相互接続バス上でもバースト・モード・アクセスが利用できるようにキャッシュ・ブロックがアライメントされているのが望ましい。
【００３７】
仮想メモリを採用しているシステムでは、ＲＡＭマイクロコードを仮想メモリ空間に置くようにすることは有効であるかも知れない。このインプリメンテーシヨンは当業者にとって明かになるであろう。物理的ＲＡＭマイクロコード・アドレスをシステム内の仮想アドレスに変換する標準的ＴＬＢ回路が必要となる。システム・ページ・テーブル形式を理解するハードウエアを構築することも可能であろう。或いは、その要請に応えるためホスト・プロセサを中断してもよいであろう。システムはマイクロコード・ページ・テーブルに対する特別な形式を用い、且つハードウエアにはそれ自身の（多分より簡単な）ページ・テーブル形式を持たせることも可能である。
【００３８】
ＲＡＭキャッシュ２０８及びＲＯＭ２１０のサイズは、夫々のインプリメンテーションに特有なものであるが、議論を進めるためにＲＡＭは８マイクロワードの３２ブロックから成るものとする。マイクロコードＲＡＭキャッシュ２０８は直接マッピング形式でインプリメントされる。これにより大量のマイクロコードを主メモリに格納することが可能になる。オフチップでアドレス可能なマイクロコードの実際的な量は１２８Ｋバイトである。
【００３９】
マイクロコードＲＡＭキャッシュ：２０８のアドレス・ロケーシヨンは、ＲＡＭキャッシュ自身より十分に大きな主メモリ（オフチップ・メモリ又はそれと同類のもの）の１つのセクションに直接マップされている。それゆえ、キャッシュ・ミスが起きたとき、主メモリに格納されたマイクロコードのブロックをマイクロコードＲＡＭキャッシュにスワップインしたり、スワップアウトすることが出来る。他の従来のキャッシュ・マッピング方式を本発明で使用できるように適合することができることは、当業者に明かになるであろう。
【００４０】
制御論理回路２１６は、アドレス・バス２０６上のＲＡＭキャッシュ２０８に向けられたマイクロコード要請に対応したアドレスを検出するように構成されている。制御論理回路２１６は、キャッシュ・タグ・メモリ・ブロック２１２から双方向バス２１８又はそれと同類のものに沿って、アドレス・バス２０６上で検出される望ましいアドレスに対応するＲＡＭロケーションの正当性に関する情報を受け取る。
【００４１】
もしＲＡＭキヤツシュ２０８が無効アドレスを含むとき、制御論理回路２１６はマイクロコード制御下の全てのデータ・パス要素を停止し、出入力インタフエース２０２を通して欠落しているマイクロコードをＤＭＡ２１４に要請する。次に制御論理回路２１６は、望ましいマイクロコードのアドレスに対応するブロック・アドレスを双方向バス２２０又はそれと同類のものを通してＤＭＡ２１４に渡す。
【００４２】
ＤＭＡ２１４は、必要なマイクロコードをシステムの主メモリに要請出来るように構成されている。マイクロコードは、主メモリに、第３図に示すようにブロック３０２として格納されている。ＤＭＡ２１４は、最初の主メモリ・ロケーシヨン３０４〜３１０を格納するが、このロケーシヨンはマイクロコードを含む主メモリ・ブロック夫々に対応する。ＤＭＡ２１４は、ポインタを用い、主メモリより戻されたマイクロコードのブロック内にある要請されたマイクロコードを探すためベース・ブロック・アドレスをオフセットする。ＤＭＡ２１４は、要請されたブロックのアドレスに対するベース・ポインタを用いるので、マイクロコードは、システム・メモリ内の殆どどんなロケーシヨンにも格納できる。ただ必要なことは、マイクロコードのベース・アドレスを反映するようにベース・ポインタを変更することだけである。別の方法として、主メモリ・アドレスを生成出来るようにマイクロシーケンサを修正することが可能であるが、その時にはＤＭＡが不要になる。
【００４３】
制御論理回路２１６によってＤＭＡ２１４にアドレスが渡される時、ＤＭＡ２１４は、ベース・ポインタ・アドレス値をブロック・アドレスに付加し、入出力インタフェース２０２を経てよく知られた方法で主メモリからブロックを取り出す。
【００４４】
データパス及びデコーディングは、要請されたマイクロコードがキャッシュに受け取られるまで凍結される。ある好適な実施例では、データパスは完全にパイプライン化されているので、実行を停止する最善の方法は、ゲート化された論理回路（こには示されていない）用の主クロック・バッファをゲートする、即ち「凍結する」ことである。凍結には、マイクロコードＲＡＭにロードするために用いるものを除き全ての回路に対するクロックが休止することが必要である。次に、装置の順序制御要素は外部メモリに欠落したコードを要請し、上述したように、そのコードが検索された時クロックを再びスタートさせる。それに引き続き、入出力インタフェース２０２は主メモリからマイクロコード情報を受け取り、それをデータバス２０７を経てＲＡＭキャッシュ２０８に渡す。
【００４５】
本発明の好適な実施例では、クリティカルな又は使用頻度の高いマイクロコードはＲＯＭ２１０に格納され、それほどクリティカルでないか使用頻度の低いマイクロコードはオンチップＲＡＭ２０８にキャッシュされている。各マイクロコードの格納場所を最適化することにより良好なシステム性能が得られる。ＲＯＭ２１０にあるマイクロコードの要請は、制御論理回路２１６により検証される。それに引き続き、マイクロコードはＲＯＭ２１０から読み出され、データバス２０７に載せられ、マイクロシーケンサがデータパスを制御するのに用いられる。
【００４６】
チップの製造もまたスピードアップされる。その理由は、書いたりデバッグするのに時間が掛かるマイクロコードはＲＯＭ２１０に格納する必要はないからである。後で改善されたマイクロコードは単に主メモリに格納し、必要に応じてマイクロコードＲＡＭキャッシュ２０８にキャッシュすればよい。
【００４７】
さらに、頻繁には使わない特別なテスト又は診断用マイクロコードは、ＲＯＭ２１０に格納し高価な面積を取ってしまうことはない。特別なテスト又は診断用マイクロコードは必要に応じてキャッシュすることが可能である。さらに、特別なテスト又は診断用マイクロコードはいつでも書くことが出来、ＲＯＭ２１０のサイズに制限を受けない。
【００４８】
本発明のマイクロコードＲＡＭキャッシュ２０８のためプログラム命令形式にも柔軟性がある。システムが対応するマイクロコードを探してＲＯＭ２１０又はＲＡＭキャッシュ２０８を見るようにプログラム命令を簡単に変更（例えば、ターゲット変更）することが出来る。もともとＲＯＭに格納されていたマイクロコードに問題があったり、それがもう古くなった時、新しいマイクロコードを加え、ＲＯＭ２１０ではなくＲＡＭキャッシュ２０８で必要なマイクロコードをシステムが探すようにプログラム命令を変更することが出来る。
【００４９】
ＲＯＭからＲＡＭへの分岐及びその逆：本発明の好適な実施例では、ＲＯＭ及びＲＡＭは、連続的主メモリ空間の異なったロケーションにマップされているので、それらは全く同様な方法で用いることが可能である。両者で唯一異なっている点は、それらが異なったアドレスにマップされているということだけである。全メモリ空間がｎビット・アドレスで表されているなら、アドレス空間のある部分はＲＡＭにマップし、アドレス空間の他の部分はＲＯＭにマップすることが可能である。例えば、１４ビットのアドレス空間があるとすれば、ＲＯＭには１３ビットのアドレス空間を割り当て、ＲＡＭにも同様にする。従って、アドレスの最上位ビットはＲＯＭ／ＲＡＭの選択用となる（即ち、ビットがセットされていれば、ＲＡＭが選ばれる）。
【００５０】
ＲＯＭ／ＲＡＭから及びＲＯＭ／ＲＡＭへの分岐に対する現在のインプリメンテーシヨンでは、殆どの時間ただ一つのメモリのみが電力を消費していることを確実にするためプレデコード論理回路をシステムに加えることが必要となる。
【００５１】
プレデコード論理回路は、ＲＯＭ／ＲＡＭの電流使用状況を監視するように設計されている（即ち、それはＲＯＭ／ＲＡＭの選択ビットを監視している）。それはまた「起こりうる」将来のアドレス（例えば、ブランチ・アドレス）を監視しなくてはならない。プレデコード論理回路が、ＲＯＭとＲＡＭの間で切り換えが起きうることを検出すると、それは一方のメモリを使用可能にし、それに引き続き他方を使用不能にする。例えば、ＲＡＭが現在使用されているなら、それは使用可能状態である。もしマイクロコード・ラインが次にＲＯＭへの分岐を実行するなら、プレデコード論理回路は、そのラインが実際に実行される前にＲＯＭを使用可能にする。上述したことは、マイクロコード内の分岐コマンドのルック・アヘッドを実行することによりなされる。
【００５２】
勿論、ユニットをオフにするには、プレデコード論理回路は、そのユニットが「近い」将来使われないことを決めなくてはならないし、またそのユニットが現在使われていてはならない。
【００５３】
プログラマは、サブルーチンを用いプログラム・スペース及び開発時間を節約できる。その結果、ＲＡＭとＲＯＭ間の分岐は些細なこととなり、サブルーチンはＲＯＭは勿論ＲＡＭにも入れることが可能である。最も一般的なのは、ＲＡＭルーチンがＲＯＭサブルーチンを実行し、時間とスペースを節約することである。スペースの節約は、問題にしているサブルーチンをＲＡＭにロードしなくてもよいというところから来ている。時間の節約は、コードを実行するのにＲＡＭでキャッシュ・ミスが起こらないというところから来ており、一方、ＲＯＭは非居住のマイクロコードを取って来るため時間の損失なく常に使用することが可能である。
【００５４】
用いられる特別形式：命令がプロセサに送られる時、この命令を実行するマイクロコードのアドレスがそれに含まれている。これによって命令に対するパッチ（その時点でＲＡＭに存在するであろうが）が可能になりデコード論理をより簡単にできるようになる。パッチは、命令内のマイクロコードの開始アドレスを変更することによりなされる。プロセサ・ソフトウエアは、命令を発するとき、マイクロコードに対応するテーブルを用いる。
【００５５】
マイクロコードが変更されると、新しい命令ルックアップ・テーブルが作られる。命令フオーマットは、ここでの説明に関係する２つのフイールドを含んでいる。「命令番号」フィールドは厳密には必要ではないが、レジスタやＤＭＡコントローラ命令のような固定ハードウエア・コード化命令を付加するのに便利である。「マイクロコード・アドレス」フィールドは、マイクロコード・アドレス空間内にある命令の開始アドレスを保持している。ハードウエアを駆動するソフトウエアは、ブートしたりリスタートしたりする時このテーブルを読んだり用いたりする。
【００５６】
命令番号フィールドは、いかなる開始アドレスにも対応出来、実行する命令を特定するのに一般に用いられる。このテーブルは各命令に対する開始アドレスを供給するのに用いられる。この手法はソフトウエアでのダイナミック・リンキングに類似している。
【００５７】
実際、マイクロコードの複数のセットをインプリメントすることが出来る。例えば、テスト・マイクロコードをブート診断に用い、それをその後機能マイクロコード・セットに置き換えることが可能である。
【００５８】
特殊テスト・コ−ド：特殊コード（例えば、テスト用）は容易に実行可能である。その理由は、命令のアドレスは命令と共に与えられ、望ましいテスト・コードはプロセサの外部より取り出されるからである。これは、プロセサを予め決められたＲＡＭアドレスにジャンプさせ、次いでプロセサにテスト・コードを要請される通りに送ることで行われる。コードは必要なだけ長くすることが出来る（例えば、それは、アドレッシングが１３ビットの長さでもよいし、特殊な取り出しに関してはそれ以上の長さでもよい）。
【００５９】
本発明によれば、プロセサは特殊なテストモードを持つことが出来る。
【００６０】
テストモードを制御するため、外部よりアクセス可能なレジスタを付け加えることが可能である。このテストモードが使用可能にされると、プロセサの通常の実行は停止され、プロセサはテストモードに入る。
【００６１】
このテストモードの一つの実施例では３つのレジスタが用いられる。最初のレジスタはアドレス又はアドレス／制御レジスタである。ＲＯＭおよびＲＡＭは同一のアドレス・スペースにマップされているので、どんなアドレスもアドレス・レジスタにロードすることが出来、必要なＲＯＭ又はＲＡＭワードをアクセスすることが出来る。アドレス／制御レジスタに対して例として挙げた６つのフィールドの機能が表１に掲げられている。他のビットを別のテスト機能のために用いることができることは当業者には明かであろう。第２のレジスタには、ユーザーがそのサイクルにＲＡＭに書き込みたいデータが含まれている（ＲＡＭアドレスはアドレス・レジスタに含まれている）。第３のレジスタには、ＲＯＭ、ＲＡＭ、又はＴＡＧメモリの現在のアドレスにあるデータが含まれている。もしＲＡＭが前に書き込まれたなら、このレジスタにも、少し遅れて、先に書き込まれたのと同じデータが含まれているはずである。テストモードが使用不能にされる時、アドレス・レジスタにロードされているアドレスが、シーケンサがマイクロコードをリスタートさせるアドレスになっている。
【００６２】
【表１】
2006302313.tif 000003
【００６３】
本発明の多くの実施例について上に述べたが、それらは例として挙げられたものであり、限度を示すためのものではない。従って、本発明の広さと範囲は、上述したいかなる典型的な実施例もその限界を与えるものではなく、以下の特許請求範囲及びそれと同等のものに従ってのみ規定される。
【図面の簡単な説明】
【００６４】
【図１】従来のマイクロコード記憶システムのブロック図である。
【図２】本発明のマイクロコード・キャッシュ・システムの高レベルのブロック図である。
【図３】主メモリのブロックに格納されたマイクロコードを示す代表的な図である。
【図１】
2006302313.tif 000004
【図２】
2006302313.tif 000005
【図３】
2006302313.tif 000006
【手続補正書】
【提出日】平成18年8月2日(2006.8.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デジタルシステムのプロセッサが命令を実行する際に使用するマイクロコードを格納するキャッシュ・システムであって、
前記ディジタル・システムが使用するマイクロコードのうち、第１のグループに属するマイクロコードを格納読み出し専用メモリ（ＲＯＭ）と、
前記マイクロコードのうち、第２のグループに属するマイクロコードのサブセクションを一時的に格納するランダム・アクセス・メモリ（ＲＡＭ）キヤツシユと、
該ＲＡＭキャッシュにいずれのマイクロコードが記憶されているかを記憶しており、ＲＡＭキャッシュの内容が書き換えられるのに合わせて更新されるタグメモリと、
前記マイクロコードを作り出すためのマイクロコード要請を、前記ＲＯＭおよびＲＡＭキャッシュにもたらす内部アドレスバスと、
該内部アドレスバスを介して前記マイクロコード要請を受け取って、該マイクロコード要請に対応したマイクロコードが、前記ＲＡＭキャッシュに記憶されているか否かを、前記タグメモリの記憶を用いて判別する制御論理回路と、
前記内部アドレスバスを介してもたらされたマイクロコード要請に対応するマイクロコードが前記ＲＯＭに存在するか、あるいは前記制御論理回路が、前記マイクロコード要請に対応したマイクロコードが前記ＲＡＭキャッシュに存在すると判断したとき、前記ＲＯＭまたはＲＡＭキャッシュから出力されるマイクロコードを、マイクロコードのデコード論理回路に出力するマルチプレックサと、
当該キャッシュ・システムとは外部システムバスで結合され、前記第２のグループのマイクロコードを所定のブロックを単位として記憶している分離したメモリ素子と、
前記制御論理回路が、前記マイクロコード要請に対応したマイクロコードが前記ＲＡＭキャッシュに存在しないと判断したとき、該制御論理回路からの要請を受けて、前記マイクロコード要請に対応したマイクロコードが含まれるブロックを前記ＲＡＭキャッシュに転送するダイレクト・メモリ・アクセス・コントローラと、
与えられた前記命令に含まれるマイクロコードアドレスに基づいて参照され、マイクロコードの開始を含む実行アドレスをデコードするルックアップテーブルであって、ＲＡＭ上に記憶されることで、パッチを当てることが可能なルックアップテーブルと
を備えるキャッシュ・システム。
【請求項２】
請求項１記載のキャッシュ・システムであって、
前記命令は、前記マイクロコードアドレスと共に、固定的なハードウェアをコントロールするハードウェアコード化命令に対応した命令番号を有する
キャッシュ・システム。
【請求項３】
ディジタル・システムのプロセッサが命令の実行に使用するマイクロコードを実行する方法であって、
前記ディジタル・システムが使用するマイクロコードのうち、第１のグループに属するマイクロコードを、前記キャッシュシステムのメモリ空間の所定のアドレスに割り当てられた読み出し専用メモリ（ＲＯＭ）に格納し、
前記マイクロコードのうち、第２のグループに属するマイクロコードのサブセクションを、前記キャッシュシステムのメモリ空間のうち、前記ＲＯＭが割り当てられたアドレスとは異なるアドレスであって該アドレスの上位のビットのみで区別がつくアドレスに割り当てられたランダム・アクセス・メモリ（ＲＡＭ）キヤツシユに一時的に格納し、
該ＲＡＭキャッシュにいずれのマイクロコードが記憶されているかを記憶しているタグメモリの内容を、前記ＲＡＭキャッシュの内容が書き換えられるのに合わせて更新し、
前記マイクロコードを作り出すためのマイクロコード要請を、内部アドレスバスを介して、前記ＲＯＭおよびＲＡＭキャッシュにもたらし、
該内部アドレスバスを介して前記マイクロコード要請を受け取ったとき、該マイクロコード要請に対応したマイクロコードが、前記ＲＡＭキャッシュに記憶されているか否かを、前記タグメモリの記憶を用いて判別し、
前記内部アドレスバスを介してもたらされたマイクロコード要請に対応するマイクロコードが前記ＲＯＭに存在するか、あるいは前記マイクロコード要請に対応したマイクロコードが前記ＲＡＭキャッシュに存在すると判断されたとき、前記ＲＯＭまたはＲＡＭキャッシュから出力されるマイクロコードを、マイクロコードのデコード論理回路に出力し、
当該キャッシュ・システムとは外部システムバスで結合されたメモリ素子に、前記第２のグループのマイクロコードを所定のブロックを単位として記憶しておき、
前記マイクロコード要請に対応したマイクロコードが前記ＲＡＭキャッシュに存在しないと判断されたとき、前記マイクロコード要請に対応したマイクロコードが含まれるブロックを前記ＲＡＭキャッシュに、ダイレクト・メモリ・アクセスによって転送し、
ＲＡＭ上に記憶されており、パッチを当てることが可能なルックアップテーブルを、与えられた前記命令に含まれるマイクロコードアドレスに基づいて参照することにより、マイクロコードの開始を含む実行アドレスをデコードする
方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
データパス及びデコーディングは、要請されたマイクロコードがキャッシュに受け取られるまで凍結される。ある好適な実施例では、データパスは完全にパイプライン化されているので、実行を停止する最善の方法は、ゲート化された論理回路（こには示されていない）用の主クロック・バッファをゲートする、即ち「凍結する」ことである。凍結には、マイクロコードＲＡＭにロードするために用いるものを除き全ての回路に対するクロックが休止することが必要である。次に、装置の順序制御要素は外部メモリに欠落したコードを要請し、上述したように、そのコードが検索された時クロックを再びスタートさせる。それに引き続き、入出力インタフェース２０２は主メモリからマイクロコード情報を受け取り、それをデータバス２３６を経てＲＡＭキャッシュ２０８に渡す。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４５
【補正方法】変更
【補正の内容】
【００４５】
本発明の好適な実施例では、クリティカルな又は使用頻度の高いマイクロコードはＲＯＭ２１０に格納され、それほどクリティカルでないか使用頻度の低いマイクロコードはオンチップＲＡＭ２０８にキャッシュされている。各マイクロコードの格納場所を最適化することにより良好なシステム性能が得られる。ＲＯＭ２１０にあるマイクロコードの要請は、制御論理回路２１６により検証される。それに引き続き、マイクロコードはＲＯＭ２１０から読み出され、データバス２２４に載せられ、マイクロシーケンサがデータパスを制御するのに用いられる。