JP2006228258A - マイクロコード・キャッシュ・システム及び方法 - Google Patents
マイクロコード・キャッシュ・システム及び方法 Download PDFInfo
- Publication number
- JP2006228258A JP2006228258A JP2006154768A JP2006154768A JP2006228258A JP 2006228258 A JP2006228258 A JP 2006228258A JP 2006154768 A JP2006154768 A JP 2006154768A JP 2006154768 A JP2006154768 A JP 2006154768A JP 2006228258 A JP2006228258 A JP 2006228258A
- Authority
- JP
- Japan
- Prior art keywords
- microcode
- ram
- rom
- cache
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
【課題】マイクロコードの実行を高速化する。
【解決手段】所定の機能を実現するプログラム命令を処理するディジタル・システムによって用いられるマイクロコードを格納するマイクロコード・キャッシュ・システム。当システムは、マイクロコードの第1のグループを格納するよう構成された読み出し専用メモリ(ROM)及びマイクロコードの第2のグループのブロックを一時的に格納するよう構成されたランダム・アクセス・メモリ(RAM)キヤツシュを有する。マイクロコードの第2のグループは、RAMキャッシユから分離したメモリ装置からRAMキャッシュに直接マップされているので、そのブロックはそのディジタル・システムにスワップイン及びスワップアウトすることが可能である。当マイクロコード・キャッシュ・システムは当ディジタル・システムと集積化されているが、分離したメモリ素子は集積化されていない。
【選択図】図2
【解決手段】所定の機能を実現するプログラム命令を処理するディジタル・システムによって用いられるマイクロコードを格納するマイクロコード・キャッシュ・システム。当システムは、マイクロコードの第1のグループを格納するよう構成された読み出し専用メモリ(ROM)及びマイクロコードの第2のグループのブロックを一時的に格納するよう構成されたランダム・アクセス・メモリ(RAM)キヤツシュを有する。マイクロコードの第2のグループは、RAMキャッシユから分離したメモリ装置からRAMキャッシュに直接マップされているので、そのブロックはそのディジタル・システムにスワップイン及びスワップアウトすることが可能である。当マイクロコード・キャッシュ・システムは当ディジタル・システムと集積化されているが、分離したメモリ素子は集積化されていない。
【選択図】図2
Description
本発明は、ディジタル・プロセサに関するもので、より具体的には、マイクロコード命令を記憶するためのランダム・アクセス・メモリ(RAM)に関するものである。
マイクロコード、即ちマイクロ・プログラミングは、最初、中央処理装置(CPU)の機能を制御するのに使われる論理をより規則正しくする1つの方法として提案された。それは、簡単なデータパスが複雑なプログラム命令を実行するのを可能にするが、複雑なプログラムを実行するのに必要な機能を一連の簡単な操作に分解しそれを順次に行うことによってこれを可能にするのである。マイクロコードを、CPUの命令セットに対応するプログラム命令と混同してはいけない。
マイクロコードのアドレスは、マイクロコード・エンジン(又はマイクロシーケンサ)にとって内部的ないくつかの状態値と共に、命令レジスタの一部又は全ての内容から形成されている。マイクロシーケンサは、データパスを制御するためにマイクロコードを実行する。マイクロコードの利点は、制御論理が非常に規則的な構造、普通は読み出し専用メモリ(ROM)、でインプリメントされることである。命令セットの変更又はそれに追加するには、ROMのビットを変更するか、新しいROMを追加しなくてはならない。
より柔軟性を持たせるためROMの全部又は一部を書き込み可能なRAMで置き換えると言う提案もある。しかし、RAM方式は、実現可能なマイクロコード制御ではまだ量的な制限がある。その理由は、RAMはチップ上に集積するのが高価であるのと、チップ上のROMに比べて記憶ビット数/チップ面積比が低いからである。(現在、ROMの記憶ビット数/チップ面積比はRAMに比べて3:1又は4:1で、即ち、同じ記憶容量に対してRAMはROMの3〜4倍の大きさである。)
あるマイクロコード化されたマシンでは、マイクロプログラムでブランチやサブルーチンを用いることが可能であるが、これは、マイクロシーケンシング論理を非常に複雑なものにする。RISCプロセサの設計者が、マイクロプログラミングで用いられるいくつかの技法を採用したことはあるが、これは、ユーザー・プログラムのレベルである。これらの技法は、遅延ブランチ、ソフトウエア管理のパイプライン・インタロック等である。
マイクロコードは、プログラマに、パイプライン及びハードウエアの詳細を見えるようにするが、これは長所とも短所ともなり得る。マイクロコードを使用するのはより効率的ではあるが、同時に、プログラムするのは難しい。大きな長所の一つは、もし効率的にマイクロコード化されていれば、1サイクル中に複数の操作を行うことができることである。
ROMのアクセス時間は非常に早いので、頻繁に使われるROM操作は、もしそれらがマイクロコード化されていれば高速に動作する。初期のRISCの支持者は、命令キャッシュ・メモリもアクセス時間が速いことを指摘していた。
ROMをベースにしたマイクロコードは、最初の設計者が選んだ静的な命令セットだけを含むのに対して、従来の命令キャッシュは、現在のタスクに適合するようハードウエアが自動的に選んだ頻繁に使用される操作の動的なセットを含むことが可能である。しかし、従来の命令キャッシュは、マイクロコードを格納するのに用いられたことはない。 (種々の商業用コンピュータ・システムに用いられる多数のキャッシュ・メモリ構成については、ステフエン・B・フアーバー(Stephen B.Furber)著「VLSI RISC アーキテクチヤ及び構造(VLSI RISC Architecture and Organization”)」(Marcel Dckker,Inc.,1989)及びジヨン・L・ヘネシー等(John L.Hennessy et al.)著「コンピュータ・アーキテクチャー定量的手法(Computer Architecturc-AQuantitative Approach)」(Morgan Kaufmann Publishers,Inc.,San Mateo,California,1990)を参照のこと。
RISCへの動きはマイクロコードへの反動と見られてきたが、これは、誤解を生むかも知れない。問題になったのは、複雑な命令セットであって、マイクロコード・インプリメンテーシヨンではない。確かに、小さなマシンではマイクロコードが複雑な命令セットをサポートする必要があることは事実だが、簡単な命令セットをマイクロコードすることも等しく可能である。初期のRISCの設計ではマイクロコードを用いることを避けていたが、後に出てきたいくつかの商業用RISC設計では再び採用するようになってきている。ほとんどの命令を単一サイクルで実行するというRISCの傾向は、風変わりなマイクロコードの構成を用いるのを嫌うと思われる。単一サイクル命令に関しては、マイクロコードROMは、実際、単に通常のデコード構成に過ぎない。
ファーバー(Furbcr)は、その著書で、複雑な命令セットを持つディジタル・プロセサは、DECのVAX−11/780のように、通常は、マイクロコードを用いて比較的簡単なデータパス上で、またいくつかのシーケンシャルなステップで複雑な命令を実行することが可能であると述べている。ここで、簡単な命令のサブルーチンに対してマイクロコードによって得られる利点は、マイクロコードが、主メモリに比較して非常に速いアクセス時間を持つメモリに保持されていることである。しかし、CPUがプログラム命令用にキャッシュ・メモリを持っていれば、この利点は失われてしまう。マイクロコードは、簡単な命令列の予め選ばれたセットに対して優れた性能を示すが、命令キャッシュは、動的に自己調整した命令列に対して同等な性能を示す。
以前のVAX設計では、マイクロコードを格納するのにオフチップのRAMが使われ、そのマイクロコードは直接チップにマップされていた。しかし、マイクロコードをアクセスするためオフチップのRAMとの接続用に余分なピンが必要であった。さらにもう一つの欠点は、必要なマイクロコードを取り出すのにプログラマがコードを書かなくてはならないことであった。
望ましいのは、マイクロコード及びキャッシュ技術双方の高速性を利用したCISC又はRISCシステムに於てさらに大きな柔軟性を得ることである。
発明の要約:本発明は、マイクロコードを格納するためのオンチップROM及びRAMキャッシュ双方を有するキャッシュ・システム及び方法に関するものである。
本発明は十分な柔軟性を持っており、タグ情報及び対応する命令がデコードされるとき同時にデコードされるターゲット・アドレスに基づく情報を用いてマイクロコードをROM又はRAMキャッシュのいずれかに於て探すことが可能である。本発明では、重要なマイクロコードをROMに格納し、付加的なマイクロコードを必要に応じてRAMにキャッシュしたりRAMから取り出したりすることが可能である。本発明ではさらに、例えば、チップや周辺機器のテストを行なうためオフチップの診断マイクロコードをマイクロコードRAMキャッシュにキャッシュすることが出来る。
本発明は、チップの標準入出力チャネルを用いてマイクロコードのグループをアクセスするが、そのサイズは使用可能なオフチップ・メモリ量又はマイクロコードのアドレス・スペースによってのみ限定される。プログラマの観点からするとマイクロコードRAMキャッシュは透明である。プログラマは、必要なマイクロコードを取り出すのにコードを書く必要はない。従って、本発明は従来の設計に比べて速く効率的である。マイクロコードはキャッシュ・スラッシングを避けるコードを配列できるため、直接にマップされたキャッシュを用いることが出来る。他のキャッシュ・マッピング手法もまた考慮されている。
本発明はまたクロック・サイクルを短縮する。現在の技術によって、クロック速度がアクセス時間を短縮しているので、マイクロコードをオフチツプRAMに記憶させるのはもはや有用ではなくなってきている。50MHzのクロックは20nsのクロック・サイクルということになるが、チップから出てマイクロコードを持ってまたチップに戻ってくるのはクロック・サイクルを消費し過ぎるので効率的でない。一つの解決法は非常に速いオフチップのRAMを用いることであろうが、そのような装置はコスト的に許されないし、パッケージに多くの専用のピンを必要とする。本発明では、オンチップ・キャッシュとしては遅いが安価なSRAM又はDRAMを用いることが可能で、しかもクロック・サイクルの形で貴重な時間を節約できる。
本発明のもう一つの利点は、新しいマイクロコードをシステムに加えることが出来、それ故、それが必要なときに新しいマイクロコードをロードするオーバヘッドが必要となるだけで、組み込みROMマイクロコードと同じ速度で走らせることが可能なことである。
さらにもう一つの利点は、RAMマイクロコード又は、例えばRAMに分岐するROMサブルーチンといったような、ROMとRAMマイクロコードの組み合わせを用いてバグを修正できることである。RAMとROMの間及びその逆の他のパッチ技法もまた考慮されている。
本発明の、上述した、そしてその他の、特長及び利点は、添付図面に示すように、好適な実施例の以下に記載のより具体的な説明から明らかになるであろう。当発明は、添付の図面を参照することにより理解を増すことが出来る。第1図は、従来のマイクロコード記憶システムのブロック図である。第2図は、本発明のマイクロコード・キャッシュ・システムの高レベルのブロック図で 第3図は、主メモリのブロックに格納されたマイクロコードを示す代表的な図である。
図において、同一の要素又は同様の機能を持つ要素は同じ数で表わされる。さらに、番号の一番左の数字は、その番号が最初に出てくる図面の番号を表す。
発明の詳細な説明:本発明は、命令セットは比較的小さいがマイクロコードは非常に複雑なシングル(半導体)チップのグラフィックス・プロセサ用として開発された。その時生じた問題は、データパス中でプログラム命令の処理を如何に高速化するかということであった。この問題を解決することはそのマイクロプロセサを成功させるために大変重要であった。その理由は、グラフィックス・プログラム命令の1つ1つを実行するのに要する機能の数は膨大なものだからである。
1つのグラフィックス・プログラム命令を実行するのには、数百から恐らく数百万の浮動小数点計算を行う必要がある。それ故、例えばグラフィックス・プロセサでは、プログラム命令を実行するため必要な機能を行うマイクロコードに大きな負担が掛かってくる。それに反して、典型的なCISC又はRISC命令の実行にはただ2つの数の加算が必要なだけである。
1978年に発表されたDECのVAX−11/780はデータパスの制御用として複雑な命令及びマイクロコードを用いるpre−RISCアーキテクチャを有していた。そのマイクロコードの一部は固定化されており、また他の一部は書き込み可能であった。書き込み可能な部分は、いくつかの命令をインプリメントしたり他をパッチするのに用いられ、また診断用に命令を構築できるようにするために用いられた。VAX−11/780の簡単化したブロック・ダイアグラムを第1図に示す。CPU102は、プロセサ104、固定マイクロコード・ブロツク106、及び書き込み可能ブロック108を含んでいる。それ以外に第1図には、命令パス110、データ読み出し及び書き込みパス112及び114の夫々、データ・キャッシュ116、書き込みバッファ118、仮想から物理アドレスへの変換器、即ち、トランスレーション・ルック・アサイド・バッファ(TLB)120、外部システム・バス122、メモリ・サブシステム(主メモリ)124、及び入出力サブシステム126等が示されている。それら要素の機能は従来と同様である。ここで注意を要するのは、データ・キャッシュ116はデータをプロセサ104にキャッシュするためだけに用いられることである。
システム・ブロック・ダイアグラム:本発明は、グラフィックス・プロセサ・チップに関して説明されるが、当業者に明かになるように、本発明は、マイクロコードを用いたいかなるシステムにも適用することが可能である。例えば、高速フーリエ変換を行うデイジタル・シグナル・プロセサはマイクロコードを用いて多くの必要な加算操作及び乗算操作を行うことが可能である。従って、本発明は、グラフィックス・プロセサだけに制限されるものではない。
本分野では、プロセサ、CPU、及びディジタル・プロセサはしばしば同意語として用いられる。以後プロセサという用語を用いるが、勿論当開示の基礎をなす意味を変えることなく他の同様な用語に置き換えることが出来ると理解する。
チップ、集積回路、半導体デバイス、マイクロエレクトロニクス・デバイスという用語もこの分野ではしばしば同意語として使われている。本発明は当分野で一般に理解されているように上記のものの全てに適用できる。
本発明の集積マイクロコード記憶システムの好適な実施例を第2図の200に示す。集積マイクロコード記憶システム200は、マイクロコード・エンジンともよばれるマイクロシーケンサ201を含むが、これは、データパスを制御するためにデータパス・デコード論理回路にあるマイクロコード命令を実行する(データパス・デコード論理回路及びデータパスは示されていない)。
マイクロシーケンサ201は、プログラム命令で特定された機能に従って予め決められたマイクロコード・ルーチンを実行する。マイクロコードは、1行1行実行される。マイクロコードの各ラインはデコードされ、データパスから成る機能ブロック(レジスタ、マルチプレクサ、及びそれに類似のもの)を制御する。
第2図において、標準的入出力(I/O)インタフェース202は外部システム・バス122に接続されている。内部アドレス・バスは206に示されている。ランダム・アクセス・メモリ(RAM)ブロック208、読み出し専用メモリ・ブロック210、キャッシュ・タグ・メモリ・ブロック212、制御論理回路ブロック216、及び直接メモリ・アクセス(DMA)制御ブロック214がシステム200の主要な要素である。システム200はまた、システム200とは分離した(即ち、チップ外の)主メモリにインタフェースする。
DMA214は、マイクロ命令アドレスをメモリ・アドレスに変換することにより、主メモリ又はそれと同類のもの(ここには示されていない)からマイクロコードを取り出すのに用いられる。或いは、DMA214の機能はマイクロシーケンサ201中に組み込むことも可能であろう。
制御論理回路216は、RAMキャッシュ208がアクセスされたとき発生するかも知れないキャッシュ・ミスを処理するためのキャッシュ・ミス論理回路を含んでいる。キャッシュ・ミス諭理回路は、キャッシュ・タグ・メモリ・ブロック212と共に、RAMキャッシュ208に記憶されたマイクロコードを更新する標準的キャッシュ手法を実行する。当業者には以後明かになるが、システム200には、ヘネシー等の著書で説明されているような多くの従来のキャッシュ手法を用いることが可能である。マイクロシーケンサには、ネキスト・マイクロコード・アドレス・ジェネレータ(こには示されていない)が含まれているが、それは、次のアドレスに基づいてどちらのメモリ(RAM208か又はROM210か)を用いるかを選択する(即ち、次のアドレスは、RAMのアドレス領域にあるのか又はROMのアドレス領域にあるのか)。ネキスト・アドレス生成は、現在のアドレス、データパスからのデータ、及び/又はデータパス・デコード論理回路(普通はRAM208又はROM210の出力)に基づいている。
その後メモリ208又は210は、夫々バス222又は224を経由してそのサイクル用のマイクロコード・データをマルチプレクサ(MUX)226に出力する。制御論理回路ブロック216は、MUX選択信号を生成し、ライン228を介してMUX226に送り、バス230を介してマイクロコード・データをデータパス・デコード論理回路に出力する。
このマイクロコード・データは、デコードされ、データパスを制御しネキスト・アドレス・ジェネレータに次アドレスにはどちらのアドレス・ソースを用いるかを告げる(アドレスは、データパスから来るのか、ROM/RAMからのマイクロコード・データから来るのか、或いは単に次の順番のロケーシヨンなのか)
もし次アドレスが有効なRAMアドレスでRAM208がそのアドレスに正しい情報を持っているなら、キャッシュ・ヒットになる。それ以外は、制御論理回路ブロック216内のキャッシュ・ミス論理回路がデータパス及びマイクロシーケンサを凍結する。
その後キャッシュ・ミス論理回路は、DMA214に(双方向バス122を経て)、欠落している情報を請求する。DMA214は、この情報を取り出しRAM208に格納する。これを行うため、DMA214は、単方向バス232を介してI/Oインタフェース202と通信する。I/Oインタフェース202は、外部システム・バス122を経て主メモリをアクセスする。要請されたマイクロコード・データは、外部システム・バス122を介してI/Oインタフェース202に送り戻される。その要請を開始したキャッシュ・ミス論理回路はRAMキャッシュ208に単方向バス234を通してマイクロコード・データが来ることを告げる。I/Oインタフェース202は、新しいマイクロコード・データを単方向バス236を通してRAMキャッシュ208に送る。次にタグ・メモリ212は新しい情報で更新され、システムはキャッシュ・ミスが起きた前の点から続けられる。
或いは、キャッシュ・ミスが起きた時は、順序制御装置は、その要請と共にマイクロコード・ブロック・アドレスを単に送るだけである。マイクロコード・ブロック・アドレスは他のどんな形式にも変換でき、主システム・メモリからそれを取り出すことが可能である。仮想アドレス方式(プロセサでよく用いられるような)又は他のいかなる種類の方式もマイクロコードと共に用いることが出来る。例えば、DMA214はブロック・アドレスを受け取り、それをワード・アドレスに変換し、それにポインタを付け加える。従って、システムの主メモリを32ビット・ワードに編成し、マイクロコードを、その空間内のワードでアライメントしたいかなるロケーシヨンからでも始まるように配置することができる。RAMコードを格納するのに必要な空間の大きさに対する唯一の条件は連続しているということである。マイクロコード・キャッシュと外部マイクロコード・メモリとの間のいかなる相互接続バス上でもバースト・モード・アクセスが利用できるようにキャッシュ・ブロックがアライメントされているのが望ましい。
仮想メモリを採用しているシステムでは、RAMマイクロコードを仮想メモリ空間に置くようにすることは有効であるかも知れない。このインプリメンテーシヨンは当業者にとって明かになるであろう。物理的RAMマイクロコード・アドレスをシステム内の仮想アドレスに変換する標準的TLB回路が必要となる。システム・ページ・テーブル形式を理解するハードウエアを構築することも可能であろう。或いは、その要請に応えるためホスト・プロセサを中断してもよいであろう。システムはマイクロコード・ページ・テーブルに対する特別な形式を用い、且つハードウエアにはそれ自身の(多分より簡単な)ページ・テーブル形式を持たせることも可能である。
RAMキャッシュ208及びROM210のサイズは、夫々のインプリメンテーションに特有なものであるが、議論を進めるためにRAMは8マイクロワードの32ブロックから成るものとする。マイクロコードRAMキャッシュ208は直接マッピング形式でインプリメントされる。これにより大量のマイクロコードを主メモリに格納することが可能になる。オフチップでアドレス可能なマイクロコードの実際的な量は128Kバイトである。
マイクロコードRAMキャッシュ:208のアドレス・ロケーシヨンは、RAMキャッシュ自身より十分に大きな主メモリ(オフチップ・メモリ又はそれと同類のもの)の1つのセクションに直接マップされている。それゆえ、キャッシュ・ミスが起きたとき、主メモリに格納されたマイクロコードのブロックをマイクロコードRAMキャッシュにスワップインしたり、スワップアウトすることが出来る。他の従来のキャッシュ・マッピング方式を本発明で使用できるように適合することができることは、当業者に明かになるであろう。
制御論理回路216は、アドレス・バス206上のRAMキャッシュ208に向けられたマイクロコード要請に対応したアドレスを検出するように構成されている。制御論理回路216は、キャッシュ・タグ・メモリ・ブロック212から双方向バス218又はそれと同類のものに沿って、アドレス・バス206上で検出される望ましいアドレスに対応するRAMロケーションの正当性に関する情報を受け取る。
もしRAMキヤツシュ208が無効アドレスを含むとき、制御論理回路216はマイクロコード制御下の全てのデータ・パス要素を停止し、出入力インタフエース202を通して欠落しているマイクロコードをDMA214に要請する。次に制御論理回路216は、望ましいマイクロコードのアドレスに対応するブロック・アドレスを双方向バス220又はそれと同類のものを通してDMA214に渡す。
DMA214は、必要なマイクロコードをシステムの主メモリに要請出来るように構成されている。マイクロコードは、主メモリに、第3図に示すようにブロック302として格納されている。DMA214は、最初の主メモリ・ロケーシヨン304〜310を格納するが、このロケーシヨンはマイクロコードを含む主メモリ・ブロック夫々に対応する。DMA214は、ポインタを用い、主メモリより戻されたマイクロコードのブロック内にある要請されたマイクロコードを探すためベース・ブロック・アドレスをオフセットする。DMA214は、要請されたブロックのアドレスに対するベース・ポインタを用いるので、マイクロコードは、システム・メモリ内の殆どどんなロケーシヨンにも格納できる。ただ必要なことは、マイクロコードのベース・アドレスを反映するようにベース・ポインタを変更することだけである。別の方法として、主メモリ・アドレスを生成出来るようにマイクロシーケンサを修正することが可能であるが、その時にはDMAが不要になる。
制御論理回路216によってDMA214にアドレスが渡される時、DMA214は、ベース・ポインタ・アドレス値をブロック・アドレスに付加し、入出力インタフェース202を経てよく知られた方法で主メモリからブロックを取り出す。
データパス及びデコーディングは、要請されたマイクロコードがキャッシュに受け取られるまで凍結される。ある好適な実施例では、データパスは完全にパイプライン化されているので、実行を停止する最善の方法は、ゲート化された論理回路(こには示されていない)用の主クロック・バッファをゲートする、即ち「凍結する」ことである。凍結には、マイクロコードRAMにロードするために用いるものを除き全ての回路に対するクロックが休止することが必要である。次に、装置の順序制御要素は外部メモリに欠落したコードを要請し、上述したように、そのコードが検索された時クロックを再びスタートさせる。それに引き続き、入出力インタフェース202は主メモリからマイクロコード情報を受け取り、それをデータバス207を経てRAMキャッシュ208に渡す。
本発明の好適な実施例では、クリティカルな又は使用頻度の高いマイクロコードはROM210に格納され、それほどクリティカルでないか使用頻度の低いマイクロコードはオンチップRAM208にキャッシュされている。各マイクロコードの格納場所を最適化することにより良好なシステム性能が得られる。ROM210にあるマイクロコードの要請は、制御論理回路216により検証される。それに引き続き、マイクロコードはROM210から読み出され、データバス207に載せられ、マイクロシーケンサがデータパスを制御するのに用いられる。
チップの製造もまたスピードアップされる。その理由は、書いたりデバッグするのに時間が掛かるマイクロコードはROM210に格納する必要はないからである。後で改善されたマイクロコードは単に主メモリに格納し、必要に応じてマイクロコードRAMキャッシュ208にキャッシュすればよい。
さらに、頻繁には使わない特別なテスト又は診断用マイクロコードは、ROM210に格納し高価な面積を取ってしまうことはない。特別なテスト又は診断用マイクロコードは必要に応じてキャッシュすることが可能である。さらに、特別なテスト又は診断用マイクロコードはいつでも書くことが出来、ROM210のサイズに制限を受けない。
本発明のマイクロコードRAMキャッシュ208のためプログラム命令形式にも柔軟性がある。システムが対応するマイクロコードを探してROM210又はRAMキャッシュ208を見るようにプログラム命令を簡単に変更(例えば、ターゲット変更)することが出来る。もともとROMに格納されていたマイクロコードに問題があったり、それがもう古くなった時、新しいマイクロコードを加え、ROM210ではなくRAMキャッシュ208で必要なマイクロコードをシステムが探すようにプログラム命令を変更することが出来る。
ROMからRAMへの分岐及びその逆:本発明の好適な実施例では、ROM及びRAMは、連続的主メモリ空間の異なったロケーションにマップされているので、それらは全く同様な方法で用いることが可能である。両者で唯一異なっている点は、それらが異なったアドレスにマップされているということだけである。全メモリ空間がnビット・アドレスで表されているなら、アドレス空間のある部分はRAMにマップし、アドレス空間の他の部分はROMにマップすることが可能である。例えば、14ビットのアドレス空間があるとすれば、ROMには13ビットのアドレス空間を割り当て、RAMにも同様にする。従って、アドレスの最上位ビットはROM/RAMの選択用となる(即ち、ビットがセットされていれば、RAMが選ばれる)。
ROM/RAMから及びROM/RAMへの分岐に対する現在のインプリメンテーシヨンでは、殆どの時間ただ一つのメモリのみが電力を消費していることを確実にするためプレデコード論理回路をシステムに加えることが必要となる。
プレデコード論理回路は、ROM/RAMの電流使用状況を監視するように設計されている(即ち、それはROM/RAMの選択ビットを監視している)。それはまた「起こりうる」将来のアドレス(例えば、ブランチ・アドレス)を監視しなくてはならない。プレデコード論理回路が、ROMとRAMの間で切り換えが起きうることを検出すると、それは一方のメモリを使用可能にし、それに引き続き他方を使用不能にする。例えば、RAMが現在使用されているなら、それは使用可能状態である。もしマイクロコード・ラインが次にROMへの分岐を実行するなら、プレデコード論理回路は、そのラインが実際に実行される前にROMを使用可能にする。上述したことは、マイクロコード内の分岐コマンドのルック・アヘッドを実行することによりなされる。
勿論、ユニットをオフにするには、プレデコード論理回路は、そのユニットが「近い」将来使われないことを決めなくてはならないし、またそのユニットが現在使われていてはならない。
プログラマは、サブルーチンを用いプログラム・スペース及び開発時間を節約できる。その結果、RAMとROM間の分岐は些細なこととなり、サブルーチンはROMは勿論RAMにも入れることが可能である。最も一般的なのは、RAMルーチンがROMサブルーチンを実行し、時間とスペースを節約することである。スペースの節約は、問題にしているサブルーチンをRAMにロードしなくてもよいというところから来ている。時間の節約は、コードを実行するのにRAMでキャッシュ・ミスが起こらないというところから来ており、一方、ROMは非居住のマイクロコードを取って来るため時間の損失なく常に使用することが可能である。
用いられる特別形式:命令がプロセサに送られる時、この命令を実行するマイクロコードのアドレスがそれに含まれている。これによって命令に対するパッチ(その時点でRAMに存在するであろうが)が可能になりデコード論理をより簡単にできるようになる。パッチは、命令内のマイクロコードの開始アドレスを変更することによりなされる。プロセサ・ソフトウエアは、命令を発するとき、マイクロコードに対応するテーブルを用いる。
マイクロコードが変更されると、新しい命令ルックアップ・テーブルが作られる。命令フオーマットは、ここでの説明に関係する2つのフイールドを含んでいる。「命令番号」フィールドは厳密には必要ではないが、レジスタやDMAコントローラ命令のような固定ハードウエア・コード化命令を付加するのに便利である。「マイクロコード・アドレス」フィールドは、マイクロコード・アドレス空間内にある命令の開始アドレスを保持している。ハードウエアを駆動するソフトウエアは、ブートしたりリスタートしたりする時このテーブルを読んだり用いたりする。
命令番号フィールドは、いかなる開始アドレスにも対応出来、実行する命令を特定するのに一般に用いられる。このテーブルは各命令に対する開始アドレスを供給するのに用いられる。この手法はソフトウエアでのダイナミック・リンキングに類似している。
実際、マイクロコードの複数のセットをインプリメントすることが出来る。例えば、テスト・マイクロコードをブート診断に用い、それをその後機能マイクロコード・セットに置き換えることが可能である。
特殊テスト・コ−ド:特殊コード(例えば、テスト用)は容易に実行可能である。その理由は、命令のアドレスは命令と共に与えられ、望ましいテスト・コードはプロセサの外部より取り出されるからである。これは、プロセサを予め決められたRAMアドレスにジャンプさせ、次いでプロセサにテスト・コードを要請される通りに送ることで行われる。コードは必要なだけ長くすることが出来る(例えば、それは、アドレッシングが13ビットの長さでもよいし、特殊な取り出しに関してはそれ以上の長さでもよい)。
本発明によれば、プロセサは特殊なテストモードを持つことが出来る。
テストモードを制御するため、外部よりアクセス可能なレジスタを付け加えることが可能である。このテストモードが使用可能にされると、プロセサの通常の実行は停止され、プロセサはテストモードに入る。
このテストモードの一つの実施例では3つのレジスタが用いられる。最初のレジスタはアドレス又はアドレス/制御レジスタである。ROMおよびRAMは同一のアドレス・スペースにマップされているので、どんなアドレスもアドレス・レジスタにロードすることが出来、必要なROM又はRAMワードをアクセスすることが出来る。アドレス/制御レジスタに対して例として挙げた6つのフィールドの機能が表1に掲げられている。他のビットを別のテスト機能のために用いることができることは当業者には明かであろう。第2のレジスタには、ユーザーがそのサイクルにRAMに書き込みたいデータが含まれている(RAMアドレスはアドレス・レジスタに含まれている)。第3のレジスタには、ROM、RAM、又はTAGメモリの現在のアドレスにあるデータが含まれている。もしRAMが前に書き込まれたなら、このレジスタにも、少し遅れて、先に書き込まれたのと同じデータが含まれているはずである。テストモードが使用不能にされる時、アドレス・レジスタにロードされているアドレスが、シーケンサがマイクロコードをリスタートさせるアドレスになっている。
本発明の多くの実施例について上に述べたが、それらは例として挙げられたものであり、限度を示すためのものではない。従って、本発明の広さと範囲は、上述したいかなる典型的な実施例もその限界を与えるものではなく、以下の特許請求範囲及びそれと同等のものに従ってのみ規定される。
Claims (13)
- デイジタル・システムが使用するマイクロコードを格納するキャッシュ・システムであって、ディジタル・システムは該ディジタル・システムを制御するプログラム命令を処理し、各プログラム命令は複数の命令フィールドから成り、
そのシステムが
該マイクロコードの第1グループを格納するよう構成された読み出し専用メモリ(ROM)(210)と、
該マイクロコードの第2グループのサブセクションを一時的に格納するよう構成されたランダム・アクセス・メモリ(RAM)キャツシュ(208)とを含み、
該マイクロコードの前記第2グループは前記RAMキャッシュとは分離したメモリ素子から前記RAMキャッシュ(208)にマップされ、前記RAMキャッシュは前記サブセクションをマイクロコード・キャッシュ・システムにスワップイン及びそこからスワップアウトするように構成されており、
前記マイクロコードをプリデコードする手段であって、前記プリデコード手段が使用されていない前記ROM(210)又は前記RAM(208)の一つを将来使用することを検出すれば使用可能にするように前記マイクロコードをプリデコードする手段によって特徴づけられることを特徴とするキャッシュ・システム。 - 請求の範囲第1項に記載のシステムであって、
マイクロコードを求める要求を受け取り且つ要求されたマイクロコードが前記ROM、前記RAMキャッシュ、又は分離したメモリ素子のどれかに位置するか否かを決定する手段(216、212)をさらに含むことを特徴とするシステム。 - 請求の範囲第1項又は第2項に記載のシステムであって、
該マイクロコード・キャッシュ・システムは単一チップ上にあるが、該分離したメモリ素子は前記チップ上にはないことを特徴とするシステム。 - 請求の範囲第2項に記載のシステムであって、
該ディジタル・システムはマイクロコード・アドレス範囲を有し、且つ該マイクロコードが前記ROM(210)又は前記RAM(208)にあるか否かを決定する前記手段(216)は、前記ROMに対しては前記マイクロコード・アドレス範囲の第1のサブセクションを用い、前記RAMに対しては第2のサブセクションを用いることを特徴とするシステム。 - 請求の範囲第2項に記載のシステムであって、
前記手段は、要求されたマイクロコードが前記ROM又は前記RAMキャッシュにあるか否かを決定する制御論理(216)と、
要求された所望のマイクロコードが要求された時点に前記RAMキャッシュに実際に常駐し有効か否かを表すタグ・メモリ(212)とを、
さらに含むことを特徴とするシステム。 - 請求の範囲第1項乃至第5項中の少なくも一つに記載のシステムであって、
該システムは、所望のマイクロコードを分離したメモリ素子から取り出しそれを前記RAMキャッシュ(208)に格納する直接アクセス・メモリ・コントローラ(214)をさらに含むことを特徴とするシステム。 - 請求の範囲第1項乃至第6項中の少なくも一つに記載のシステムであって、
該マイクロコードの前記第2グループが分離したメモリ素子から前記RAMキャッシュ(208)に直接マップされることを特徴とするシステム。 - 請求の範囲第1項乃至第7項中の少なくも一つに記載のシステムであって、
該マイクロコードの前記第2グループが該マイクロコードの前記第1グループより十分に大きいことを特徴とするシステム。 - 請求の範囲第1項乃至第8項中の少なくも一つのシステムであって、
ここでディジタル・システムがグラフィックス・プロセサであることを特徴とするシステム。 - 請求の範囲第1項乃至第9項中の少なくも一つに記載のシステムであって、
マイクロコードの前記第1及び第2のグループのサブセットが診断を行うのに用いられることを特徴とするシステム。 - ディジタル・システムで用いられるマイクロコードをROMメモリ・ユニット(210)及びRAMメモリ・ユニット(208)に格納する方法であって、
ROM及びRAMは夫々m及びk個のアドレス指定可能なロケーションを有し、且つ該ディジタル・システムに集積されており、ディジタル・システムはnビットのアドレス空間を有し、
当該格納の方法は、アドレス指定可能なROMロケーションの1ビットを除く全てのビットをアドレス空間にマップするステップと、
アドレス指定可能なRAMロケーシヨンの1ビットを除く全てのビットをアドレス空間にマップするステップとを、含み、
mビット及びkビットの残りのビットは、該ROM又は該RAMのいずれかをアクセスするための選択ビットとして用いられることを特徴とする方法。 - 請求の範囲第11項に記載の方法であって、
該ROM及び該RAMの現在の利用状況を監視するよう選択ビットの値をチェックするステップをさらに含むことを特徴とする方法。 - 請求の範囲第11項又は第12項に記載の方法であって、
該ROMと該RAM間の将来の切り換えを検出するためマイクロコードのブランチ・アドレスをプリデコードするステップと、
もし切り換えが検出されれば、使用されていないメモリ・ユニットを使用可能にしそれに引き続き他方を使用不能にするステップとを、
さらに含むことを特徴とする方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US98006092A | 1992-11-23 | 1992-11-23 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6513176A Division JPH08504044A (ja) | 1992-11-23 | 1993-11-10 | マイクロコード・キャッシュ・システム及び方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006183398A Division JP2006302313A (ja) | 1992-11-23 | 2006-07-03 | マイクロコード・キャッシュ・システム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006228258A true JP2006228258A (ja) | 2006-08-31 |
Family
ID=25527327
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6513176A Pending JPH08504044A (ja) | 1992-11-23 | 1993-11-10 | マイクロコード・キャッシュ・システム及び方法 |
JP2006154768A Withdrawn JP2006228258A (ja) | 1992-11-23 | 2006-06-02 | マイクロコード・キャッシュ・システム及び方法 |
JP2006183398A Withdrawn JP2006302313A (ja) | 1992-11-23 | 2006-07-03 | マイクロコード・キャッシュ・システム及び方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6513176A Pending JPH08504044A (ja) | 1992-11-23 | 1993-11-10 | マイクロコード・キャッシュ・システム及び方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006183398A Withdrawn JP2006302313A (ja) | 1992-11-23 | 2006-07-03 | マイクロコード・キャッシュ・システム及び方法 |
Country Status (2)
Country | Link |
---|---|
JP (3) | JPH08504044A (ja) |
WO (1) | WO1994012929A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105120A (en) * | 1997-01-28 | 2000-08-15 | U.S. Philips Corporation | Method for implementing multiple format addressing in an embedded microcontroller, a compiler being arranged for implementing the method, and a microcontroller being arranged for using the method and compiler |
US5933855A (en) | 1997-03-21 | 1999-08-03 | Rubinstein; Richard | Shared, reconfigurable memory architectures for digital signal processing |
AU7693198A (en) * | 1997-06-04 | 1998-12-21 | Richard Rubinstein | Processor interfacing to memory-centric computing engine |
US6895452B1 (en) | 1997-06-04 | 2005-05-17 | Marger Johnson & Mccollom, P.C. | Tightly coupled and scalable memory and execution unit architecture |
AU7575398A (en) * | 1998-05-15 | 1999-12-06 | Richard Rubinstein | Shared, reconfigurable cache memory execution subsystem |
FR2801695B1 (fr) * | 1999-11-29 | 2003-08-22 | Suisse Electronique Microtech | Dispositif de memoire |
EP1242874A1 (en) * | 1999-12-31 | 2002-09-25 | Intel Corporation | External microcode |
WO2003042837A1 (fr) * | 2001-11-16 | 2003-05-22 | Renesas Technology Corp. | Circuit integre semi-conducteur |
US7971030B2 (en) | 2002-08-07 | 2011-06-28 | Mmagix Technology Limited | Method for using multiple processing resources which share multiple co-processor resources |
JP7004905B2 (ja) | 2018-03-26 | 2022-01-21 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN112256600B (zh) * | 2020-10-22 | 2023-04-11 | 海光信息技术股份有限公司 | 数据读取方法及相关装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2336058A5 (fr) * | 1973-09-03 | 1977-07-15 | Honeywell Bull Soc Ind | Procede et dispositif d'organisation d'une memoire de commande |
DE3138971A1 (de) * | 1981-09-30 | 1983-04-21 | Siemens AG, 1000 Berlin und 8000 München | Mikroprogrammiertr prozessor und verfahren zu seinembetrieb |
JPS628243A (ja) * | 1985-07-04 | 1987-01-16 | Matsushita Electric Ind Co Ltd | キヤツシユ・メモリ |
JPS6368930A (ja) * | 1986-09-10 | 1988-03-28 | Hitachi Ltd | マイクロプロセツサ |
JP2559382B2 (ja) * | 1986-11-05 | 1996-12-04 | 株式会社日立製作所 | 情報処理装置 |
-
1993
- 1993-11-10 JP JP6513176A patent/JPH08504044A/ja active Pending
- 1993-11-10 WO PCT/US1993/010836 patent/WO1994012929A1/en active Application Filing
-
2006
- 2006-06-02 JP JP2006154768A patent/JP2006228258A/ja not_active Withdrawn
- 2006-07-03 JP JP2006183398A patent/JP2006302313A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO1994012929A1 (en) | 1994-06-09 |
JP2006302313A (ja) | 2006-11-02 |
JPH08504044A (ja) | 1996-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006302313A (ja) | マイクロコード・キャッシュ・システム及び方法 | |
US7133968B2 (en) | Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions | |
US6247107B1 (en) | Chipset configured to perform data-directed prefetching | |
KR100257518B1 (ko) | 캐쉬 슬라이스로서 리사이즈 및 재배치가능한 메모리 스크래치패드 | |
US10318407B2 (en) | Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus | |
US4701844A (en) | Dual cache for independent prefetch and execution units | |
KR100403405B1 (ko) | 분산형버스액세스및제어조정에따라다수개의내부신호버스를공유하는다수개의회로기능요소를갖는집적회로 | |
US4811215A (en) | Instruction execution accelerator for a pipelined digital machine with virtual memory | |
US5226130A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US5793941A (en) | On-chip primary cache testing circuit and test method | |
US5748932A (en) | Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence | |
JP3907809B2 (ja) | 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ | |
JP3285644B2 (ja) | キャッシュメモリを有するデータプロセッサ | |
US5940858A (en) | Cache circuit with programmable sizing and method of operation | |
JP2000231549A (ja) | マイクロプロセッサ | |
KR20030010727A (ko) | 변환 색인 버퍼 플러시 필터 | |
JPH10198563A (ja) | マイクロプロセッサ内の動的にロード可能なパターン履歴表 | |
JP2005135395A (ja) | 仮想マシン用のプロセッサおよびその方法 | |
EP0664897B1 (en) | High speed programmable logic controller | |
US5671231A (en) | Method and apparatus for performing cache snoop testing on a cache system | |
US6351797B1 (en) | Translation look-aside buffer for storing region configuration bits and method of operation | |
US5860105A (en) | NDIRTY cache line lookahead | |
US5946718A (en) | Shadow translation look-aside buffer and method of operation | |
US5909566A (en) | Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction | |
US5649137A (en) | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Effective date: 20060703 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060703 |
|
A131 | Notification of reasons for refusal |
Effective date: 20080401 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A761 | Written withdrawal of application |
Effective date: 20080521 Free format text: JAPANESE INTERMEDIATE CODE: A761 |