(57)【要約】【課題】シングルタスクでない複数のプロセスを同時進行する過程においても、特定の命令の常駐優先を選択容易にしてキャッシュを有効利用する。【解決手段】プロセッサの指示に基づいてメインメモリからのデータを一時記憶するデータメモリ領域２００ａ、２００ｂと、この一時記憶したデータのアドレスを記憶するタグメモリ領域２０２ａ、２０２ｂとを持つキャッシュメモリにおいて、プログラムの一連の実行を表すプロセス毎に識別番号とキャッシュ常駐優先を含む属性を付与してテーブルとして記憶するプロセス情報管理テーブル２１１を備え、タグメモリ領域内にプロセス対応の識別番号を指定する欄を設けて、プロセスの実行時には識別番号に基づく指定属性の処理に従ってキャッシュを使用するようにした。【選択図】　　　　図２
2004110240.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの指示に基づいてメインメモリからのデータを一時記憶するデータメモリ領域と、該一時記憶したデータのアドレスを記憶するタグメモリ領域とを持つキャッシュメモリにおいて、
プログラムの一連の実行を表すプロセス毎に識別番号とキャッシュ常駐優先を含む属性を付与してテーブルとして記憶するプロセス情報管理テーブルを備え、
上記タグメモリ領域内に上記プロセス対応の識別番号を指定する欄を設けて、該プロセスの実行時には上記識別番号に基づく指定属性の処理に従ってキャッシュを使用するようにしたことを特徴とするキャッシュメモリ装置。
【請求項２】
プロセス情報管理テーブルは、プロセス対応の属性として常駐優先、またはキャッシュ書き込み禁止の情報を記憶するようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
プロセス情報管理テーブルは、プロセス対応の属性として優先度の属性も記憶し、
プロセスの実行時には上記優先度も考慮した処理に従ってキャッシュを使用するようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項４】
プロセス情報管理テーブルは、各種の優先度を含む常駐優先、またはキャッシュ書き込み禁止のプロセスに対して記憶を割付けて、該使用以外の通常使用のプロセスは、上記プロセス情報管理テーブルを参照しないでキャッシュを使用するようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項５】
プロセス情報管理テーブルは、プロセス毎に識別管理することに換えて、プログラムのアドレスで属性を識別するようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項６】
プロセス情報管理テーブルは、プロセス毎に識別管理することに換えて、プログラムのアドレスで属性を識別するようにしたことを特徴とする請求項３または請求項４記載のキャッシュメモリ装置。
【請求項７】
プロセス情報管理テーブルは、プロセス毎に加えて、プログラムのアドレスでも属性を識別するようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理におけるキャッシュメモリ装置に関するものである。
【０００２】
【従来の技術】
従来のキャッシュメモリ装置は、キャッシュタグを収容するタグＲＡＭ（アドレスアレイ）に一対一のエントリを有するリプレースメントアレイとプライオリティアレイを設け、常駐優先権の制御を行う。新しいデータをキャッシュにロードしたとき、複数のウェイ（ロウ）にある同一インデックス（カラムアドレス）のデータのうち一つを選択する（特許文献１参照）。この場合、リプレースメントアレイの情報をもとにＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｒｙ　Ｕｓｅｄ）法により、データの最も古いものを判定するとともに、プライオリティアレイを設けて、その内容により追出したくないウェイを指定（常駐優先指定）することができる。常駐優先指定は、キャッシュのブロック毎に常駐優先領域レジスタ群（常駐優先領域の上限と下限アドレスを指示する）で、キャッシュにデータがロードされるときに設定される。この方式により、最も古いデータであっても常駐優先指定があれば、そのウェイのデータは追出し対象にはならず、より新しいが常駐優先指定のないウェイのデータが追出した対象となる。つまり、常駐優先指定をしたプロセスは、キャッシュからのデータの追い出しが減るため、性能のバラツキが少なく、リアルタイム性を要求されるプロセスには有効である。
【０００３】
キャッシュ常駐指定を行なう従来の第２の方法、特開２００２−４９５２９号公報の装置では、キャッシュメモリのリプレース制御部として先にリプレースするキャッシュのアドレスをパターンとして選択条件表に保持し、これをプロセッサがマスクすることで常駐を優先するアドレスを制御している。
また従来の第３の方法である特開平４−６９７５１号公報の装置では、キャッシュに読み込む命令またはデータ毎にキャッシュ常駐を優先するかどうかの優先ビットを１ビットまたは複数ビット付加して、付加ビットを判定してそのままキャッシュに命令またはデータを残す方法を示している。
【０００４】
【特許文献１】
特開平５−２３３４５４号公報
【０００５】
【発明が解決しようとする課題】
上記のキャッシュメモリ装置は、常駐優先指定ビットをタグＲＡＭの中に直接格納しているため、複数のプロセスが時分割で動く場合、プロセスの生成、切り替え、消滅にすばやく対応することが困難であるという課題がある。というのは、タグＲＡＭに直接書かれた常駐優先指定ビットをプロセスの生成、切り替え、消滅のたびに即座に書き換えることは困難である。
このことはキャッシュ常駐を優先する他の、従来の第２の方法においても同様の課題が残る。複雑なパターンを短時間にマスク制御することは困難である。
また従来の第３の方法では、各命令毎に付加ビットを作成・付加して、この内容をキャッシュ読み込み時に解読した後、それをキャッシュメモリに転記するので、キャッシュメモリの領域を余分に使用することになるうえに、優先ビットを１ビット以上付加しているので、マルチプロセスにおけるプロセス消滅のためのキャッシュ明け渡しが困難である。
【０００６】
さらに、キャッシュのブロックの追い出し制御を、アプリケーションプログラムのみならず、ＯＳカーネル内の特定アドレスの領域に対しても必要である。例えば、タスクスイッチルーチンや割り込み処理ルーチンは、リアルタイム処理プロセスを実行するときに必要であり、キャッシュからは追い出さないような制御が必要である。
しかし一方で、データの再利用性が低いプロセスやＯＳカーネルの特定アドレス範囲へのアクセスは、キャッシュにデータをロードしても性能向上の効果がないばかりか、他のプロセスやルーチンのデータをキャッシュから追出してしまい、システム全体としての性能を低下させるので、命令とアドレスの組み合わせが重要である。
【０００７】
この発明は上記の課題を解決するためになされたもので、シングルタスクでない複数のプロセスを同時処理する過程においても、特定の命令の常駐優先を選択容易にしてキャッシュを有効利用することを目的とする。
また更に、アドレスを基に常駐優先を可能にする。例えばＯＳカーネル内の特定アドレスのものは優先して常駐させ、また他の効果が少ない特定プロセスや特定アドレスのそれはキャッシュへのロードをしないようにする。
【０００８】
【課題を解決するための手段】
この発明に係るキャッシュメモリ装置は、プロセッサの指示に基づいてメインメモリからのデータを一時記憶するデータメモリ領域と、この一時記憶したデータのアドレスを記憶するタグメモリ領域とを持つキャッシュメモリにおいて、
プログラムの一連の実行を表すプロセス毎に識別番号とキャッシュ常駐優先を含む属性を付与してテーブルとして記憶するプロセス情報管理テーブルを備え、
タグメモリ領域内にプロセス対応の識別番号を指定する欄を設けて、プロセスの実行時には識別番号に基づく指定属性の処理に従ってキャッシュを使用するようにした。
【０００９】
また更に、プロセス情報管理テーブルは、プロセス対応の属性として常駐優先、またはキャッシュ書き込み禁止の情報を記憶するようにした。
【００１０】
また更に、プロセス情報管理テーブルは、プロセス対応の属性として優先度の属性も記憶し、
プロセスの実行時には上記優先度も考慮した処理に従ってキャッシュを使用するようにした。
【００１１】
また更に、プロセス情報管理テーブルは、各種の優先度を含む常駐優先、またはキャッシュ書き込み禁止のプロセスに対して記憶を割付けて、この使用以外の通常使用のプロセスは、上記プロセス情報管理テーブルを参照しないでキャッシュを使用するようにした。
【００１２】
また更に、プロセス情報管理テーブルは、プロセス毎に識別管理することに換えて、プログラムのアドレスで属性を識別するようにした。
【００１３】
また更に、プロセス情報管理テーブルは、プロセス毎に識別管理することに換えてプログラムのアドレスで属性を識別するようにし、優先度も考慮した処理に従って、または各種の優先度を含む常駐優先、またはキャッシュ書き込み禁止のプロセスに対して記憶を割付けて、この使用以外の通常使用のプログラム・アドレスでは、プロセス情報管理テーブルを参照しないでキャッシュを使用するようにした。
【００１４】
また更に、プロセス情報管理テーブルは、プロセス毎に加えて、プログラムのアドレスでも属性を識別するようにした。
【００１５】
【発明の実施の形態】
実施の形態１．
図１はこの発明の実施の形態１であるキャッシュメモリ装置を示すもので、図において、１はプロセッサ、２はキャッシュメモリ、３はメモリである。図２は、図１における主要な構成要素の詳細とその接続関係を示す図である。図において、２００ａ、２００ｂはデータＲＡＭ、２０２ａ、２０２ｂはタグＲＡＭ、２１１はプロセス毎のキャッシュに対する要求事項を格納するプロセス固有情報管理テーブル、実行プロセス番号レジスタ２１２は１が実行しているプロセスの番号を保持する実行プロセス番号レジスタである。プログラムの実行イメージをプロセスと呼び、プロセッサ１はいろいろなプログラムを処理するが、処理に際して必要な命令やデータをキャッシュメモリ２またはメモリ３から取ってくる。キャッシュメモリ２は、プロセッサ１からのデータ要求を受けたら、データＲＡＭ２００にデータがあるかどうかをタグＲＡＭ２０２により調べ、持っていればデータＲＡＭ２００から該データを取り出しプロセッサ１に送る。キャッシュメモリ２が所望のデータを持っていなければメモリ３からデータを取ってきてプロセッサ１に渡す。このときメモリ３からのデータは通常は、データＲＡＭ２００に格納され、タグＲＡＭ２０２にアドレス等の制御情報が格納される。
【００１６】
以下、プロセス固有情報管理テーブルの詳細を示す図３と、図３中のウェア判定回路の判定論理を示す図４を用い、具体的なプロセスの例を用いてこの構成による詳細動作を説明する。
先ず概念的には、キャッシュを使う必要のないプロセス（プロセス番号＝０１２３とする）が動作している例を述べる。実行プロセス番号レジスタ２１２に実行中のプロセス番号＝０１２３が書かれる。プロセス固有情報管理テーブル２１１の内容と実行プロセス番号レジスタ２１２を比較すると、データＲＡＭ２００に書き込む必要のないプロセスであることがわかるので、メモリ３からのデータをキャッシュメモリ２に書きこまない。低速動作が許されたプロセスの場合、データＲＡＭ２００を使用せず、他のプロセスがキャッシュをもっと有効に使用する。
【００１７】
本発明に直接関係する、プロセスＡ（プロセス番号＝０４５６）とプロセスＢ（プロセス番号＝０７８９）が時分割で動作していて、キャッシュメモリを時に書き換える例を述べる。プロセスＡは、キャッシュに優先して留まり、その書かれたデータが優先して留まることが要求されているプロセスであり、プロセスＢは、そのような特別な要求はないプロセスとする。これらのプロセス毎の要求事項はプロセス固有情報管理テーブル２１１に格納されている。
【００１８】
まずプロセスＡが動作している。このとき実行プロセス番号レジスタ２１２にはプロセスＡのプロセス番号＝０４５６が格納される。プロセスＡは必要なデータをキャッシュメモリ２の内部のデータＲＡＭ２００に書き込みながら処理をすすめる。次に、何らかのきっかけで、別のプロセスＢに切り替わったとする。このとき、実行プロセス番号レジスタ２１２もプロセスＢのプロセス番号＝０７８９に書き換わる。プロセスＢは、必要なデータをキャッシュメモリ２のデータＲＡＭ２００に書き込みながら処理をするめる。しかしながら、プロセス固有情報管理テーブル２１１の制御により、データＲＡＭ２００のデータは、プロセスＡのものは、以下に説明する構成と動作によりプロセスＢによって追出されない。つまり、再びプロセスＡに切り替わったとき、プロセスＡの必要なデーはデータＲＡＭ２００に残っているので、プロセスＡの実行性能は低下しない。プロセスＡとしては例えばリアルタイムプロセスなど規定時間以内の高速動作が要求される処理がある。
【００１９】
次に詳細動作を述べるが、本実施の形態においては、図２のキャッシュ装置は２ウェイ（ウェイ０とウェイ１）のセットアソシアティブからなると想定する。図において、２００ａはデータＲＡＭ（ウェイ０）、２００ｂはデータＲＡＭ（ウェイ１）、２０２ａはタグＲＡＭ（ウェイ０）、２０２ｂはタグＲＡＭ（ウェイ１）、２０４はプロセッサアドレスレジスタ、２０５ａはウェイ０のタグＲＡＭ出力レジスタ、２０５ｂはウェイ１のタグＲＡＭ出力レジスタ、２０７ａはウェイ０のタグアドレス比較器、２０７ｂはウェイ１のタグアドレス比較器、２０９はキャッシュＨＩＴ判定回路、２１０は出力データのセレクタ、２１１はプロセス固有情報管理テーブル、２１２は実行プロセス番号レジスタ、２１３ａはウェイ０のタグＲＡＭからの制御信号（有効信号、ＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）、エントリ番号）、２１３ｂはウェイ１のタグＲＡＭからの制御信号（有効信号、ＬＲＵ、エントリ番号）、２１５はプロセス固有情報管理テーブル２１１の出力で書き込みウェイを指示するウェイ指示信号、２１６はプロセス固有情報管理テーブル２１１の出力でプロセス固有情報管理テーブルのエントリ番号を指示するエントリ番号指示信号、２１７はタグＲＡＭ入力レジスタ（有効信号、タグアドレス、ＬＲＵ、エントリ番号）、２１８はメモリ書き込み信号生成回路である。
【００２０】
プロセス固有情報管理テーブル２１１の内部構造を示した図３においては、最大４個のプロセスを想定している。図において、２１１０１、２１１０２、２１１０３、２１１０４は、それぞれ１つのプロセスの管理情報が入っているエントリで、各エントリ番号を順に０番、１番、２番、３番とする。また各エントリには、プロセス番号、有効フラグ、非書込フラグ（本プロセスのデータをキャッシュの書き込む必要がないことを示す）、非追出フラグ（本プロセスのデータをキャッシュから追出したくない優先プロセスであることを示す）がある。２１１０５、２１１０６、２１１０７、２１１０８は実行中プロセスと各エントリのプロセス番号を比較する比較器、２１１０９はエントリ番号を生成するエンコーダ、２１１１０は非書込フラグ（と有効フラグ）のセレクタ、２１１１１はセレクタ２１１１０の出力、２１１１２、２１１１３は追出フラグと有効フラグのセレクタ、２１１１４は書き込みウェイ判定回路である。
【００２１】
図２でまず、キャッシュのデータＲＡＭ不使用の場合を説明する。図のプロセッサアドレスレジスタ２０４にプロセッサからのアドレスが格納されるとインデックスをＲＡＭのアドレスとしてタグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれタグＲＡＭ出力レジスタ２０５ａ、ｂを経由して、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、タグアドレス比較器２０７ａ、ｂ共に不一致を検出し、キャッシュＨＩＴ判定回路２０９ではキャッシュミスが出力される。プロセス固有情報管理テーブル２１１からは書き込みウェイを指示するウェイ指示信号２１５とエントリ番号指示信号２１６の信号が生成されるが、書き込みウェイを指示するウェイ指示信号２１５はいずれのウェイにも書き込まないことを出力するのでメモリ書き込み信号生成回路２１８から各メモリへのライト信号はいずれもアサートされず、データＲＡＭ２００ａ、ｂのいずれにもデータは書き込まれない。すなわち、キャッシュにはメモリから取ってきたデータが書き込まない動作をしたことになる。
【００２２】
次に図３を用いてプロセス固有情報管理テーブル２１１の動きを詳しく説明する。プロセス固有情報管理テーブル２１１の各エントリ２１１０１、２１１０２、２１１０３、２１１０４にはプロセスの条件が格納されている。具体例として２１１０１（エントリ０番）にプロセス番号＝“０１２３”、有効フラグ＝１、非書込フラグ＝１、非追出フラグ＝０が書かれているとする。つまり、プロセス番号“０１２３”のプロセスのデータは、キャッシュに格納する必要がないことをあらかじめ指示されている。この情報は、ＯＳがプロセスを生成するときに書き込まれる。実行中のプロセスが“０１２３”になると実行プロセス番号レジスタ２１２に“０１２３”が設定され、エントリ０番とプロセス番号が一致するので各比較器２１１０５＝１、２１１０６＝０、２１１０７＝０、２１１０８＝０となり、エンコーダ２１１０９の出力は０になる。従って、セレクタ２１１１０でエントリ０番の非書込フラグと有効フラグが選択され、出力２１１１１は、有効フラグ＝１、非書込フラグ＝１となる。この信号が書き込みウェイ判定回路２１１１４に入り、書き込みウェイの判定を行う。ここで、有効フラグが１のときは、記述を簡便にするため、“有効非書込フラグ＝１”と記述し、有効フラグ＝１かつ書込フラグ＝１であること、つまり無効なフラグ状態を除いた状態であることを示すことにする。追出フラグに関しても同様に、“有効追出フラグ＝１”と記述した場合、有効フラグ＝１かつ追出フラグ＝１であることを表す。
【００２３】
図４は、先に述べたようにウェイ判定回路２１１１４の入力条件による出力結果をさらに詳しく定義した論理テーブルである。図の最終行により、有効非書込フラグ＝１のとき、他のいかなる入力条件に関わらずウェイ０とウェイ１の書込み指示が共に０であることが判る。つまり書き込みウェイを指示するウェイ指示信号２１５はウェイ０の書込み＝０、ウェイ１の書込み＝０となり、図２のメモリ書き込み信号生成回路２１８のウェイ０とウェイ１の両方の書き込み信号を抑止している。従って、データＲＡＭへの書き込みが行われない。
【００２４】
次に図２で、データＲＡＭを書き換える動作を説明する。まずプロセスＡが動作しているとする。プロセス番号は“０４５６”として、この値が図２の実行プロセス番号レジスタ２１２に保持されている。プロセッサアドレスレジスタ２０４に実行中のプロセッサからのアドレスが格納されると、インデックスをＲＡＭのアドレスとしてタグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれタグＲＡＭ出力レジスタ２０５ａ、ｂを経由して、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、タグアドレス比較器２０７ａ、ｂで不一致を検出し、キャッシュＨＩＴ判定回路２０９ではキャッシュミスが出力される。同時にプロセス固有情報管理テーブル２１１で書き込みウェイを指示するウェイ指示信号２１５とエントリ番号指示信号２１６の信号が生成されるが、ウェイ０に書き込むことを指示するので、その結果を受けたメモリ書き込み信号生成回路２１８から各メモリへのライト信号はメモリ装置からのデータをデータＲＡＭ２００ａに書き込む。エントリ番号指示信号２１６は、プロセス固有情報管理テーブル２１１のエントリ番号を示す。プロセス固有情報管理テーブル２１１のエントリ１番（２番目のエントリ）にプロセスＡの番号“０４５６”が格納されていると想定すると、ここではエントリ番号指示信号２１６＝“１”が示され、この番号が、タグＲＡＭ入力レジスタ２１７のエントリ番号フィールドに書き込みまれ、このタグ情報はメモリ書き込み信号生成回路２１８からの書き込み信号によりタグＲＡＭ２０２ａに書き込まれる。
【００２５】
図３を用いてプロセス固有情報管理テーブル２１１の動きを詳しく説明する。ここでは、具体例としてエントリ２１１０２のプロセス番号が“０４５６”、有効フラグ＝１、非書込フラグ＝０、非追出フラグ＝１が書かれているとする。つまり、プロセス番号“０４５６”のプロセスＡのデータは、キャッシュにひとたび格納されたら優先使用することをあらかじめ指示されている。いま、実行中のプロセス番号が“０４５６”であるので実行プロセス番号レジスタ２１２に“０４５６”が設定され、エントリ１番とプロセス番号が一致するので各比較器２１１０５＝０、２１１０６＝１、２１１０７＝０、２１１０８＝０となり、エンコーダ２１１０９の出力は１になる。従って、エントリ番号指示信号２１６からはエントリ番号が１番であるこを表す“１”が出力される。また、非書込フラグ＝０なので、プロセスＡはキャッシュブロックを使い、書き込みウェイ判定回路２１１１４は図４の例えば１行目の判断により書き込みウェイを指示するウェイ指示信号２１５として、ウェイ０を書き込む指示となる。
【００２６】
次にプロセッサの動作がプロセスＢに切り替わったとする。プロセス番号は“０７８９”として、この値が図２の実行プロセス番号レジスタ２１２に保持されている。実行中のプロセッサからのプロセッサアドレスレジスタ２０４にアドレスが格納されると、インデックスをＲＡＭのアドレスとしてタグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれタグＲＡＭ出力レジスタ２０５ａ、ｂを経由して、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、タグアドレス比較器２０７ａ、ｂで不一致を検出し、キャッシュＨＩＴ判定回路２０９ではキャッシュミスが出力される。ここでプロセス固有情報管理テーブル２１１より書き込みウェイを指示するウェイ指示信号２１５とエントリ番号指示信号２１６の信号が生成されるが、いま、キャッシュに格納しようとするデータのウェイ０のインデックスが先のプロセスＡで一致し、ウェイ１のインデックスは最近プロセスＢで使用された場合を想定する。この場合、プロセス固有情報管理テーブル２１１は最近プロセスＢで使用されたにも関わらず、書き込みウェイを指示するウェイ指示信号２１５でウェイ１に書き込みを指示するので、その結果を受けたメモリ書き込み信号生成回路２１８から各メモリへのライト信号はメモリからのデータをデータＲＡＭ２００ｂに書き込む。エントリ番号指示信号２１６は、プロセス固有情報管理テーブル２１１のエントリ番号を示す。プロセス固有情報管理テーブル２１１のエントリ２番（３番目のエントリ）にプロセスＢの番号“０７８９”が格納されているとすると、ここではエントリ番号指示信号２１６＝“２”が示され、この番号が、タグＲＡＭ入力レジスタ２１７の特定フィールドに書き込みまれ、このタグ情報はメモリ書き込み信号生成回路２１８からの書き込み信号によりタグＲＡＭ２０２ｂに書き込まれる。
【００２７】
図３を用いてプロセス固有情報管理テーブル２１１の動きを詳しく説明する。ここでは、具体例としてエントリ２１１０３のプロセス番号が“０７８９”、有効フラグ＝１、非書込フラグ＝０、非追出フラグ＝０が書かれているとする。つまり、プロセス番号“０７８９”のプロセスＢのデータは、通常のキャッシュとして使うことをあらかじめ指示されている。いま、実行中のプロセス番号が“０７８９”であるので実行プロセス番号レジスタ２１２に“０７８９”が設定され、エントリ２番とプロセス番号が一致するので各比較器２１１０５＝０、２１１０６＝０、２１１０７＝１、２１１０８＝０となり、エンコーダ２１１０９の出力は２になる。従って、エントリ番号指示信号２１６からはエントリ番号が２番であるこを表す“２”となる。また、タグＲＡＭ出力レジスタ２０５に格納されたウェイ０のタグ情報のＬＲＵ情報とエントリ番号がタグＲＡＭからの制御信号２１３としてプロセス固有情報管理テーブル２１１に伝えられる。該当インデックスが先のプロセスＡに一致していてデータがウェイ０に格納されているのでタグＲＡＭからの制御信号２１３のエントリ番号フィールドはプロセスＡが入っている１番を表す“１”となっている。プロセス固有情報管理テーブル２１１１２は、エントリ１番（２１１０２）の有効非追出フラグを選択し、“１”が出力される。一方、タグＲＡＭからの制御信号２１３ｂで示されるエントリ番号フィールドはプロセスＢが入っている２番を表す“２”となっているので、セレクタ２１１１３の出力は、エントリ番号２番（２１１０３）の有効非追出フラグを選択し、“０”が出力される。該当インデックスのウェイ０には以前にプロセスＡで利用されたためタグＲＡＭからの制御信号２１３ａのＬＲＵフィールドは“１”となっており、ウェイ１は最近プロセスＢで利用されたのでタグＲＡＭからの制御信号２１３ｂのＬＲＵフィールドは“０”である。
【００２８】
ここで、書き込みウェイ判定回路２１１１４により、書き込みウェイを判定するが、入力信号の値は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝０である。従って、図４に示す論理の４行目によりウェイ１への書き込み指示が出される。ここで重要なのは、ＬＲＵのフラグのみでは、プロセスＡにより使用されたウェイ０のデータが古いので、こちらを書き換える指示となるはずが、ウェイ０の非追出フラグも参照することにより、ウェイ０への書き込み指示が抑止される。
【００２９】
このようにデータメモリ、タグＲＡＭの他に、キャッシュ情報管理テーブルを備え、キャッシュ情報管理テーブルのエントリ番号をタグＲＡＭに格納する構成としたので、キャッシュのブロック単位のきめの細かい制御ができるようになり、性能向上、メモリコスト削減が可能である。その指定がタグＲＡＭに常駐しないので、タグＲＡＭ自体の書き換えが必要なく、しかも優先使用を継続できる。
具体的な詳細例として、キャッシュ情報管理テーブルを、プロセス固有の情報を管理するプロセス固有情報管理テーブルとして、このテーブルに有効フラグ、プロセス番号（プロセスの識別番号）を設け、キャッシュのブロックに新たなデータをロードしてくるときにプロセス固有情報管理テーブルのエントリ番号をタグＲＡＭに格納するようにすることで、キャッシュブロックをプロセス毎に制御できる。
【００３０】
さらに、プロセス固有情報管理テーブルのエントリにキャッシュブロックの書き込み禁止フラグを設け、キャッシュのロード処理時にこのフラグを参照するようすることで、キャッシュにロードしても性能向上効果がないプロセスをキャッシュにロードするのを抑止し、他のプロセスがそのキャッシュブロックを使用することで真に高速動作が必要なプロセスがキャッシュ使用できるようにして、性能が向上する。
また、プロセス固有情報管理テーブルのエントリに追出し禁止フラグを設け、キャッシュブロックの追い出しブロックの決定のときに、このフラグを参照するようことで、キャッシュに常駐させておきたいプロセスを指定でき、リアルタイムプロセスなど実行時間がシステム上厳しく制限されているプロセスの実行速度を維持できる。
【００３１】
実施の形態２．
複数のキャッシュ使用優先度を設けて競合時のキャッシュ使用を定める構成を説明する。先の実施の形態では、プロセスＡのみがキャッシュの追出しを禁止したいプロセスであったが、本実施の形態ではプロセスＡとプロセスＢの両者がキャッシュの追出しを禁止したいプロセスと想定し、プロセス間に優先度の差を持たせ、より優先度が高いプロセスのキャッシュデータを残すという動作を説明する。ここではプロセスの優先度を０，１，２，３の４段階と想定し、３が最高、０が最低とする。まず競合動作１として、プロセスＡの優先度＝２、プロセスＢの優先度＝１の動作を、次に競合動作２として、プロセスＡの優先度＝２、プロセスＢの優先度＝３の動作を述べる。
【００３２】
図５は、優先度を考慮したプロセス固有情報管理テーブル２１１の構造を表すが、図３で示した構成要素はすべて含み、図３との差分を中心に示している。また、図５中の番号で図３と同じものは同じ構成要素を表すものとする。ここで、図３との差分を説明すると、エントリ２１１０１、２１１０２、２１１０３、２１１０４は、プロセス番号、有効フラグ、非追出フラグ、非書込フラグの他に該当プロセスの優先度を示すフィールドを持つ。書き込みウェイ判定回路２１１１４の出力は、図３での書き込みウェイを指示するウェイ指示信号２１５を別の信号２１１２０で出すとともに、新たに優先度判定を指示する信号２１１２１を追加する。この他、２１１２２と２１１２３はタグ中（それぞれウェイ０とウェイ１）のエントリ番号から優先度を選択するセレクタ、２１１２４は優先度判定回路、２１１２５は優先度判定回路２１１２４の出力、２１１２６は信号２１１２０と信号２１１２５のマージ回路（ビット毎の論理和）である。さらに、２２０の実行プロセス優先度を格納する実行プロセス優先度レジスタを設ける。
図６は、書き込みウェイ判定回路２１１１４の判定論理を示した図である。図７は、優先度判定回路２１１２４の優先度判定論理をに示した図である。
【００３３】
競合動作１（プロセスＡの優先度＝２、プロセスＢの優先度＝１）の動作を述べる。実施の形態１におけるキャッシュ書き換え動作と同様に、エントリ１番２１１０２にプロセスＡ（プロセス番号＝０４５６、有効＝１、非追出＝１、非書込＝０、優先度＝２）が、エントリ２番２１１０３にプロセスＢ（プロセス番号＝０７８９、有効＝１、非追出＝１、非書込＝０、優先度＝１）が登録されている。また、現在実行中のプロセスはプロセスＡであり、実行プロセス優先度レジスタ２２０には優先度＝２が書き込まれている。プロセスＡの該当キャッシュインデックスのキャッシュミスが発生した場合、キャッシュのタグにおいてはウェイ０はエントリ番号＝１（プロセスＡ）、ウェイ１はエントリ番号＝２（プロセスＢ）が書かれているとする。ウェイ０は、ウェイ１より過去に使われたとする。このとき、書き込みウェイ判定回路２１１１４の入力信号は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝１となる。書き込みウェイ判定回路２１１１４は図６の６行目により、ウェイ０書き込み指示、ウェイ１書き込み指示とも０を信号２１１２０として出力する。しかしこのとき、書き込みウェイ判定回路２１１１４は優先度判定指示＝１を出力し、信号２１１２１＝１となる。
【００３４】
信号２１１２１＝１により、優先度判定回路２１１２４による優先度判定を行う。ウェイ０にあるデータの使用者（プロセスＡ）の優先度（ウェイ０の優先度と呼ぶ）は、セレクタ２１１２２を経由してエントリ１番に格納されたプロセスＡの優先度（＝２）が出力される。同様に、ウェイ１（プロセスＢが使用者）の優先度は、セレクタ２１１２３を経由してエントリ２番に格納されたプロセスＢの優先度（＝１）が出力される。実行中のプロセス優先度＝２、ウェイ０の優先度＝２、ウェイ１の優先度＝１なので優先度判定回路２１１２４は図７の１行目により、ウェイ０書き込み指示＝０、ウェイ１書き込み指示＝１を出力する。この出力結果信号２１１２５と２１１２０をマージ回路２１１２６はマージして、ウェイ０書き込み指示＝０、ウェイ１書き込み指示＝１を書き込みウェイを指示するウェイ指示信号２１５として出力する。こうして、キャッシュのウェイ１にデータが書き込まれることになる。
【００３５】
次に競合動作２（プロセスＡの優先度＝２、プロセスＢの優先度＝３）の動作を述べる。先の実施の形態におけるキャッシュ書き換え動作と同様に、エントリ１番２１１０２にプロセスＡ（プロセス番号＝０４５６、有効＝１、非追出＝１、非書込＝０、優先度＝２）が、エントリ２番２１１０３にプロセスＢ（プロセス番号＝０７８９、有効＝１、非追出＝１、非書込＝０、優先度＝３）が登録されている。また、現在実行中のプロセスはプロセスＡであり、実行プロセス優先度レジスタ２２０には優先度＝２が書き込まれている。プロセスＡの該当キャッシュインデックスのキャッシュミスが発生した場合、キャッシュのタグにおいてウェイ０はエントリ番号＝１（プロセスＡ）、ウェイ１はエントリ番号＝２（プロセスＢ）が書かれているとする。ウェイ０は、ウェイ１より過去に使われたとする。このとき、書き込みウェイ判定回路２１１１４の入力信号は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝１となる。書き込みウェイ判定回路２１１１４は図６の６行目により、ウェイ０書き込み指示、ウェイ１書き込み指示とも０を信号２１１２０として出力する。しかしこのとき、同時に優先度判定指示＝１を出力し、信号２１１２１＝１となる。
【００３６】
信号２１１２１＝１により、優先度判定回路２１１２４による優先度判定を行う。実行中のプロセス優先度＝２、ウェイ０の優先度＝２（使用者プロセスＡ）、ウェイ１の優先度＝３（使用者プロセスＢ）なので優先度判定回路２１１２４は図７の５行目により、ウェイ０書き込み指示＝１、ウェイ１書き込み指示＝０を出力する。この出力結果信号２１１２５と２１１２０をマージ回路２１１２６はマージして、ウェイ０書き込み指示＝１、ウェイ１書き込み指示＝０を書き込みウェイを指示するウェイ指示信号２１５として出力する。こうして、キャッシュのウェイ０にデータが書き込まれることになる。
【００３７】
プロセス固有情報管理テーブルにプロセスの優先度を追加し、キャッシュブロックの追い出しブロックの決定のときに、この優先度も参照するようにすることで、複数のリアルタイムプロセスの間でもキャッシュブロックの使用に優先順位を指定できる。リアルタイム性を要求される処理同士のキャッシュブロックの取り合いが発生したとき、リアルタイム性がシステムにより重要な影響をあたえるルーチンを優先することができ、より安定したシステムが実現できる。
【００３８】
実施の形態３．
実施の形態１の書き換え動作において、プロセスＡは、非追出指定をするプロセスであったが、プロセスＢは、キャッシュを従来どおりいかなるキャッシュの優先使用も、また使用禁止も指定しないものであった。これに加えて、若干の論理回路の追加でプロセスＢは、プロセス固有情報管理テーブル２１１のエントリを使用しないようにすることが可能である。具体的には、図３におけるエンコーダ２１１０９の論理を図８に示すように構成し、セレクタ２１１１０、２１１１２、２１１１３の論理を図９のように構成すればよい。図８の５行目（最終行）は、実行中のプロセス番号が、プロセス固有情報管理テーブル２１１のすべてのエントリ（２１１０１〜２１１０４）と一致しなかったときを表し、エントリに実在しない番号（ここではＮＵＬＬ値と読んでいる）を出力する。このＮＵＬＬ値はタグのエントリ番号フィールドにも保持される。また、セレクタ２１１１０は、選択信号がＮＵＬＬ値のときは、図９の５行目（最終行）で表すように、値＝０を出力する。つまり、非書込要求はないことを表す。もともとプロセスＢには非書込要求はないので問題ない。さらに、セレクタ２１１１２、２１１１３において、タグのエントリ番号フィールドのＮＵＬＬ値が選択信号に入ってきた場合も、図９の５行目（最終行）で表すように、値＝０を出力する。つまり、そのウェイのキャッシュデータを使っていたプロセスには、非追出の要求はなかったことを表す。実施の形態１の書き換え動作では、ウェイ０のタグにはプロセスＡ（非追出の要求あり）を示すエントリ番号＝１番が入っており、図９の２行目が選択され、２１１１２の出力（有効非追出フラグ）は“１”である。一方、ウェイ１のタグにはプロセスＢ（非追出の要求あり）を示すエントリ番号＝ＮＵＬＬが入っており、図９の５行目が選択され、２１１１３の出力（有効非追出フラグ）は“０”である。
【００３９】
セレクタ２１１１２と２１１１３の出力は、実施の形態１の書き換え動作と同じであり、このあとの動作も同様に動く。キャッシュデータの書き込みは、ウェイ０は抑止され、ウェイ１に行われる。本実施の形態においては、プロセスＢのような特殊な要求がないプロセスをプロセス固有情報管理テーブル２１１のエントリに格納しなくて済むので、プロセス固有情報管理テーブル２１１を構成するための論理量が削減でき、コンパクト化が図れる。同一のエントリ数なら、より多くのプロセス数を扱うことができ、並列性が高まり性能が向上する。
【００４０】
本実施の形態における、プロセスＡ＝非追出要求有り、プロセスＢ＝特別な要求がないという２つのプロセスの時分割並列動作において、プロセスＡの処理が終了した場合を考える。
プロセスＡの終了（消滅）と同時にＯＳは、プロセス固有情報管理テーブル２１１のプロセスＡが格納されているエントリである２１１０２の有効フラグを０にクリアする。こうすることで、この後実行したプロセスＢによるキャッシュデータの置き換え作業において、制御信号２１３または２１４によってエントリ番号＝１が指定された場合、それぞれのセレクタ２１１１２または２１１１３の出力であるエントリ１番の有効非追出フラグの出力は必ず０になる。即ち、キャッシュブロックは追出し禁止にはならず、プロセスＢにより有効に活用される。つまり、各タグのエントリ番号フィールドには“１番”が残っていても、プロセスＢにより即座にキャッシュメモリを有効に使うことができ、プロセスＢの性能を向上できる。
【００４１】
プロセスＡが終了した直後に、他のプロセス（例えばプロセスＣ）をエントリ１番に割り付けると、プロセスＡでは使われたがプロセスＣでは使われないキャッシュブロックが、プロセスＣで使われたと誤判断され、システムの誤動作や性能低下の原因となり得る。
そこで、図１０のフローにより消滅したプロセスのタグ内の痕跡を消し去る、無効化処理が必要である。プロセスＡの消滅によりすべてのキャッシュタグのエントリ番号フィールドに“１”が書かれているものを“ＮＵＬＬ”に書き換える作業である。タグのエントリ番号フィールドをひとつチェックするごとに“１”かどうか判定し、もし１であったらＮＵＬＬに書き換えるという処理をすべてのタグ（すべてのウェイ×すべてのインデックス）について実施する。この処理をＯＳが時分割で行う。このすべての処理が終了したら、本キャッシュにはプロセスＡの痕跡がすべてなくなり、エントリ１番を他の特別な要求があるプロセスに割り当てることが可能となる。
【００４２】
このように、プロセス固有情報管理テーブルからエントリ番号にエントリの存在しないことを表す特殊な番号（ＮＵＬＬ）を定義し、この番号がタグのエントリに現れると、そのキャッシュブロックを使用しているプロセスは、リアルタイム性などの要求事項は持たないことを表す。こうなればプロセス固有情報管理テーブルが効率的に使用できるようになり、ハードウェア量（論理ゲート規模）を削減する、または、より多くのプロセスを並列処理できる。
さらに、プロセスの消滅とともに該プロセス固有情報管理テーブルの有効フラグをクリアすれば、有効フラグがクリアされたキャッシュラインは、要求事項を持たないプロセスにより使用可能となる。即ちより多くのプロセスを並列処理できる。
さらに、プロセス固有情報管理テーブルの有効フラグがクリアされているキャッシュブロックのタグについて、プロセス固有情報テーブルのエントリ番号をＮＵＬＬ値に設定すれば、ＮＵＬＬ値に設定されたキャッシュブロックは、すべてのプロセスから使用可能となり、キャッシュを有効使用できる。
【００４３】
実施の形態４．
これまで、プロセスによるキャッシュブロックの制御方式の例を示してきたが、ここからは、アドレス範囲に基づくキャッシュブロックの制御方式を説明する。図１１は本実施の形態におけるキャッシュメモリ装置を示図であり、図において、２２１はアドレス範囲毎のキャッシュに対する要求事項を格納するアドレス空間固有情報管理テーブルである。その他の図に示す図１と同番号は、ここでも同様な機能を持つ要素であるとする。
キャッシュメモリ装置２は、プロセッサ１からのデータ要求を受けたら、データＲＡＭ２００にデータがあるかどうかをタグＲＡＭ２０２により調べ、持っていればデータＲＡＭ２００から該データを取り出し１に送る。データＲＡＭ２００が所望のデータを持っていなければメモリ装置３からデータを取ってきてプロセッサ１に渡す。このときメモリ装置３からのデータは通常は、データＲＡＭ２００に格納され、タグＲＡＭ２０２にアドレス等の制御情報が格納される。以下２つの動作例の概念で説明する。
【００４４】
動作例３の概念
キャッシュを使う必要のないデータ範囲を扱っているプロセスが動作している例を考える。アドレス空間固有情報管理テーブル２２１の内容と実行中のアドレスと比較すると、データＲＡＭ２００に書き込む必要のないアドレス範囲内にあることがわかるので、メモリ装置３からのデータをデータＲＡＭ２００に書きこまない。低速動作が許されたプロセスの場合、データＲＡＭ２００を使用せず、他のプロセスにより、もっと有効に使われる。
【００４５】
動作例４の概念
また、複数のプログラムルーチンを時分割で動作しているプログラム例を考える。ルーチンＣは、キャッシュにキャッシュにひとたび書かれたデータを追出すことを禁止するアドレス範囲（４０００〜４ＦＦＦ番地）で動作させ、ルーチンＤは、そのような特別な要求はないアドレス範囲（５０００〜５ＦＦＦ番地）で動作すると想定する。これらのアドレス毎の要求事項はアドレス空間固有情報管理テーブル２２１に格納されている。
【００４６】
まずルーチンＣが動作している。ルーチンＣは必要なデータをキャッシュメモリ装置２の内部のデータＲＡＭ２００に書き込みながら処理をすすめる。次に、何らかのきっかけで、別のルーチンＤに切り替わったとする。ルーチンＤは、必要なデータをデータＲＡＭ２００に書き込みながら処理をするめる。しかしながら、アドレス空間固有情報管理テーブル２２１の制御により、データＲＡＭ２００のデータは、ルーチンＣのものは、ルーチンＤによって追出されない。従って、再びルーチンＣに切り替わったとき、ルーチンＣの必要なデータはデータＲＡＭ２００に残っているので、ルーチンＣの実行性能は低下しない。ルーチンＣはリアルタイムプロセスなど規定時間以内の高速動作が要求されるカーネル内の処理を想定している。
【００４７】
以上の動作例３、動作例４の詳細を下位レベルのブロック図である図１２、図１３、図１４により説明する。
図２のキャッシュ装置は２ウェイ（ウェイ０とウェイ１）のセットアソシアティブを想定している。図において、２１７はタグＲＡＭ入力レジスタ（有効ビット、タグアドレス、ＬＲＵ、エントリ番号）、２２１はアドレス空間固有情報管理テーブル、アドレス信号線２２２は実行中のアドレスを２２１に伝えるアドレス信号線である。その他の図２と同一番号のものは、図２のそれと同様のものを表わす。
【００４８】
図１３は、アドレス空間固有情報管理テーブル２２１の内部構造を示したものである。図は最大４個のプロセスを想定している。図において、２２１０１、２２１０２、２２１０３、２２１０４は、それぞれ１つのアドレス範囲の管理情報が入っているエントリで、各エントリ番号を順に０番、１番、２番、３番とする。また各エントリには、アドレスの範囲（上限値、下限値）、有効フラグ、非書込フラグ（本プロセスのデータをキャッシュの書き込む必要がないことを示す）、非追出フラグ（本プロセスのデータをキャッシュから追出したくないことを示す）がある。その他の図３に示す番号と同一番号のものは、ここでも同様に図３のそれと同様のものを表わす。図１４は書き込みウェイ判定回路が行う論理を表している。
【００４９】
図１２でまず、動作３の詳細を説明する。図１２のプロセッサアドレスレジスタ２０４にプロセッサからのアドレスが格納されると、タグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、共に不一致を検出し、従ってキャッシュミスが出力される。同時に信号２１５、２１６によりいずれのウェイにも書き込まないことを出力するのでメモリ書き込み信号生成回路２１８から各メモリへのライト信号はいずれもアサートされず、データＲＡＭ２００ａ、ｂにはメモリから取ってきたデータが書き込まれない。
【００５０】
図１３により、アドレス空間固有情報管理テーブル２２１の動きを詳しく説明する。アドレス空間固有情報管理テーブル２２１の各エントリ２２１０１、２２１０２、２２１０３、２２１０４にはプログラムルーチンの条件が格納されている。具体例として２２１０１（エントリ０番）のアドレス範囲は“上限値＝１０００、下限値＝１ＦＦＦ”、有効フラグ＝１、非書込フラグ＝１、非追出フラグ＝０が書かれているとする。つまり、アドレス範囲が１０００番地から１ＦＦＦ番地に格納されているデータは、キャッシュに格納する必要がないことをあらかじめ指示されている。実行中のルーチンのアドレスが例えば１２３４番地であると、エントリ０番のアドレス範囲に含まれるので比較器２２１０５＝１、２２１０６＝０、２２１０７＝０、２２１０８＝０となり、エンコーダ２２１０９の出力は０になる。従って、セレクタ２２１１０でエントリ０番の非書込フラグと有効フラグが選択され、信号２２１１１は、有効追出フラグ＝１（有効フラグ＝１、非書込フラグ＝１）となる。この信号が判定回路２２１１４に入り書き込みウェイの判定を行う。
【００５１】
図１４は、判定回路２２１１４の入力条件と出力結果をさらに詳しく定義した表であり、この図の最終行により、有効非書込フラグ＝１のとき、他のいかなる入力条件に関わらずウェイ０とウェイ１の書き込み指示が共に０であることが判る。つまり信号２１５はウェイ０の書き込み＝０、ウェイ１の書き込み＝０となり、図１２のメモリ書き込み信号生成回路２１８のウェイ０とウェイ１の両方の書き込み信号を抑止している。従って、メモリデータのキャッシュメモリへの書き込みが行われない。
【００５２】
次に図１２で、動作例４の詳細を説明する。まずルーチンＣが動作しているとする。今、アクセスしたデータのアドレスが４１２０番地で、それがプロセッサアドレスレジスタ２０４に格納される。インデックスをＲＡＭのアドレスとしてタグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、不一致を検出し、従ってキャッシュミスが出力される。同時に信号２１５と２１６によりウェイ０に書き込みことを指示するので、その結果を受けたメモリ書き込み信号生成回路２１８から各メモリへのライト信号はメモリ装置からのデータをデータＲＡＭ２００に書き込む。エントリ番号指示信号２１６は、プロセス固有情報管理テーブル２１１のエントリ番号を示す。アドレス空間固有情報管理テーブル２２１のエントリ１番（２番目のエントリ）にルーチンＣのアドレス範囲４０００〜４ＦＦＦ番地が格納されているとすると、アドレス信号線２２２は４１２０であるので２１６＝“１”が示され、この番号が、タグＲＡＭ入力レジスタ２１７のエントリ番号フィールドに書き込みまれ、このタグ情報はメモリ書き込み信号生成回路２１８からの書き込み信号によりタグＲＡＭ２０２に書き込まれる。
【００５３】
図１３により、アドレス空間固有情報管理テーブル２２１の動きを詳しく説明する。ここでは、具体例としてエントリ２２１０２のアドレス範囲が４０００〜４ＦＦＦ番地、有効フラグ＝１、非書込フラグ＝０、非追出フラグ＝１が書かれているとする。つまり、アドレス４１２０番地のルーチンＣのデータは、キャッシュにひとたび格納されたら追出したくないことをあらかじめ指示されている。いま、実行中のアドレスが４１２０番地であるのでアドレス信号線２２２から“４１２０”が伝達され、エントリ１番のアドレス範囲が一致するので比較器２２１０５＝０、２２１０６＝１、２２１０７＝０、２２１０８＝０となり、エンコーダ２２１０９の出力は１になる。従って、エントリ番号指示信号２１６からはエントリ番号が１番であるこを表す“１”が出力される。また、非書込フラグ＝０なので、ルーチンＣはキャッシュブロックを使うので、判定回路２２１１４は図１４の例えば１行目の判断により指示信号２１５はウェイ０を書き込む指示を出力する。
【００５４】
次にプロセッサの動作がルーチンＤに切り替わったとする。その時のアドレス範囲は５０００〜５ＦＦＦ番地、例えば５１２０番地を動作し、この値が図１２のアドレス信号線２２２から伝達される。実行中のプロセッサからプロセッサアドレスレジスタ２０４にアドレスが格納されると、タグＲＡＭ２０２ａ、ｂの内容が読み出され、それぞれのタグアドレスがプロセッサアドレスレジスタ２０４の上位アドレスとそれぞれタグアドレス比較器２０７ａ、ｂで比較されその結果がキャッシュＨＩＴ判定回路２０９に入る。このケースでは、不一致を検出し、従ってキャッシュミスが出力される。ここで信号２１５、２１６と、キャッシュに格納しようとするデータのウェイ０のインデックスが先のルーチンＣで一致し、ウェイ１のインデックスは最近ルーチンＤで使用された場合を想定する。この場合、アドレス空間固有情報管理テーブル２２１は最近ルーチンＤで使用されたにも関わらず、指示信号２１５でウェイ１に書き込みことを指示するので、各メモリへのライト信号はメモリ装置からのデータをデータＲＡＭ２００ｂに書き込む。指示信号２１６は、アドレス空間固有情報管理テーブル２２１のエントリ番号を示す。アドレス空間固有情報管理テーブル２２１のエントリ２番（３番目のエントリ）にルーチンＤのアドレス範囲“５０００〜５ＦＦＦ番地”が格納されているとすると、ここでは指示信号２１６＝“２”が示され、この番号が、タグＲＡＭ入力レジスタ２１７のエントリ番号フィールドに書き込みまれ、このタグ情報はタグＲＡＭ２０２ｂに書き込まれる。
【００５５】
図１３により、このときのアドレス空間固有情報管理テーブル２２１の動きを詳しく説明する。ここでは、具体例としてエントリ２２１０３のアドレス範囲が“５０００〜５ＦＦＦ”、有効フラグ＝１、非書込フラグ＝０、非追出フラグ＝０が書かれているとする。つまり、ルーチンＤのデータは、通常のキャッシュとして使うことをあらかじめ指示されている。いま、実行中のアドレスが５１２０番地であるのでアドレス信号線２２２から５１２０が伝達され、エントリ２番とプロセス番号が一致するので比較器２２１０５＝０、２２１０６＝０、２２１０７＝１、２２１０８＝０となり、エンコーダ２２１０９の出力は２になる。従って、指示信号２１６からはエントリ番号が２番であるこを表す“２”が出力される。また、タグＲＡＭ出力レジスタ２０５に格納されたウェイ０のタグ情報のＬＲＵ情報とエントリ番号がアドレス空間固有情報管理テーブル２２１に伝えられる。該当インデックスが先のルーチンＣに一致してデータがウェイ０に格納されているので制御信号２１３のエントリ番号フィールドはルーチンＣが入っている１番であることを表す“１”が示される。追出フラグ２２１１２は、エントリ１番（２２１０２）の有効非追出フラグを選択し、“１”が出力される。一方、制御信号２１４のエントリ番号フィールドはルーチンＤが入っている２番を表す“２”が示されるので、有効フラグ２２１１３の出力は、エントリ番号２番（２２１０３）の有効非追出フラグを選択し、“０”が出力される。該当インデックスのウェイ０には昔ルーチンＣで利用されたため２１３のＬＲＵフィールドには“１”が格納され、ウェイ１は最近ルーチンＤで利用されたので制御信号２１４のＬＲＵフィールドは“０”である。
【００５６】
ここで、判定回路２２１１４により、書き込みウェイを判定するのだが、その入力信号の条件は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝０となる。従って、図１４の表の４行目によりウェイ１への書き込み指示が出される。ここで重要なのは、ＬＲＵのフラグのみでは、ルーチンＣにより使用されたウェイ０が古いので追出しにふさわしいと判断されたにもかかわらず、ウェイ０の非追出フラグにより、ウェイ０への書き込み指示が抑止されたことである。
【００５７】
このように、ＯＳカーネルの動作時には、アドレス範囲を指定するアドレス空間固有情報管理テーブルとし、特定のアドレスの範囲にアクセスしたときに、キャッシュのタグにそのアドレス範囲であることを示すためにテーブルのエントリ番号を格納した。こうしてカーネル内のアドレス範囲毎に、データをキャッシュメモリに常駐させる、キャッシュメモリにロードしない（外部メモリを利用する）、通常のキャッシュとして使用するといった木目細かい制御が可能となり、システム性能を向上できる。
さらに、アドレス空間固有情報管理テーブルのエントリにキャッシュブロックの書き込み禁止フラグを設け、キャッシュのロード処理時にこのフラグを参照する動作として、特定アドレス範囲をキャッシュに割り当てない制御が可能になる。即ちキャッシュの効果の少ないメモリ空間にこの設定をすることで、キャッシュが効率的に利用できる。
また、アドレス空間固有情報管理テーブルのエントリに追出し禁止フラグを設け、キャッシュブロックの追い出しブロックの決定のときに、このフラグを参照するようにした。こうして、リアルタイム性の要求される処理（プロセススイッチ処理、割り込み処理）をキャッシュに常駐させ、高速性を要求されるリアルタイム処理が可能である。
【００５８】
実施の形態５．
図１５、図１６、図１７により別の実施の形態を説明する。上記の動作４では、ルーチンＣのみがキャッシュ追出しを禁止したいルーチンであったが、本実施の形態ではルーチンＣとルーチンＤの両者がキャッシュの追出しを禁止したいルーチンと想定する。この場合、ルーチンのアドレス範囲に優先度を持たせ、より優先度が高いルーチンのキャッシュデータを残すという動作例を説明する。
ルーチンの優先度を０，１，２，３の４段階と想定し、３が最高、０が最低とする。まず動作５として、ルーチンＣの優先度＝２、ルーチンＤの優先度＝１の動作例を、次に動作６として、プロセスＣの優先度＝２、ルーチンＤの優先度＝３の動作例を説明する。
【００５９】
図１５は、優先度を考慮したアドレス空間固有情報管理テーブル２２１の構造を表すが、図１３で示した構成要素はすべて含み、図１３との差分だけを示している。また、図１５中の番号で図１３と同じものは同じ構成要素を表すものとする。ここで、図１３との差分を説明すると、エントリ２２１０１、２２１０２、２２１０３、２２１０４は、アドレス範囲、有効フラグ、非追出フラグ、非書込フラグの他に該当アドレス範囲の優先度を示すフィールドを持つ。判定回路２２１１４の出力は、図１３での指示信号２１５を別の信号２２１２０で出すとともに、新たに優先度判定を指示する信号２２１２１を追加する。この他、２２１２４は優先度判定回路、２２１２５は優先度判定回路２２１２４の出力、２２１２６は信号２２１２４と２２１２５のマージ回路（ビット毎の論理和）である。図１６は、書き込みウェイ判定回路２２１１４の入力対応の出力論理を詳細に示したのもである。図１７は、その優先度判定論理を詳細に示したものである。
【００６０】
動作５（ルーチンＣの優先度＝２、ルーチンＤの優先度＝１）を説明する。動作４と同様に、エントリ２２１０２にルーチンＣ（アドレス範囲＝４０００〜４ＦＦＦ、有効＝１、非追出＝１、非書込＝０、優先度＝２）が、エントリ２２１０３にルーチンＤ（アドレス範囲＝５０００〜５ＦＦＦ、有効＝１、非追出＝１、非書込＝０、優先度＝１）が登録されている。ルーチンＣの該当キャッシュインデックスのキャッシュミスが発生した場合、キャッシュのタグはウェイ０はエントリ番号＝１（ルーチンＣ）、ウェイ１はエントリ番号＝２（ルーチンＤ）が書かれているとする。ウェイ０は、ウェイ１より過去に使われたとする。このとき、書き込みウェイ判定回路２２１１４の入力信号は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝１となる。書き込みウェイ判定回路２２１１４は図１６の６行目により、ウェイ０書き込み指示、ウェイ１書き込み指示とも０を信号２２１２０に出力する。しかしこのとき、優先度判定指示＝１を出力し、優先度判定を指示する信号２２１２１＝１となる。
【００６１】
優先度判定を指示する信号２２１２１＝１により、優先度判定回路２２１２４による優先度判定を行う。ウェイ０にあるデータの使用者（ルーチンＣ）の優先度（ウェイ０の優先度と呼ぶ）は、セレクタ２２１２２を経由してエントリ１番に格納されたルーチンＣの優先度（＝２）が出力される。同様に、ウェイ１（ルーチンＤが使用者）の優先度は、セレクタ２２１２３を経由してエントリ２番に格納されたルーチンＤの優先度（＝１）が出力される。出力信号２２１１１は実行中のルーチンのエントリ番号＝１が示されるので、信号２２１３０は優先度＝２を示す。実行中のプロセス優先度＝２、ウェイ０の優先度＝２、ウェイ１の優先度＝１なので優先度判定回路２２１２４は図１７の１行目により、ウェイ０書き込み指示＝０、ウェイ１書き込み指示＝１を出力する。この出力結果２２１２５と信号２２１２０をマージして、ウェイ０書き込み指示＝０、ウェイ１書き込み指示＝１を指示信号２１５に出力する。こうして、キャッシュのウェイ１にデータが書き込まれることになる。
【００６２】
次に動作６（ルーチンＣの優先度＝２、ルーチンＤの優先度＝３）の場合を説明する。動作４と同様に、エントリ２２１０２にルーチンＣ（アドレス範囲＝４０００〜４ＦＦＦ、有効＝１、非追出＝１、非書込＝０、優先度＝２）が、エントリ２１１０３にルーチンＤ（アドレス範囲＝５０００〜５ＦＦＦ、有効＝１、非追出＝１、非書込＝０、優先度＝３）が登録されている。また、現在実行中のアドレスは４１２０番地である。ルーチンＣの該当キャッシュインデックスのキャッシュミスが発生した場合、キャッシュのタグはウェイ０はエントリ番号＝１（ルーチンＣ）、ウェイ１はエントリ番号＝２（ルーチンＤ）が書かれているとする。ウェイ０は、ウェイ１より過去に使われたとする。このとき、判定回路２２１１４の入力信号は、有効非書込＝０、ウェイ０有効ＬＲＵ＝１、ウェイ１有効ＬＲＵ＝０、ウェイ０有効非追出＝１、ウェイ１有効非追出＝１となる。判定回路２２１１４は図１６の６行目により、ウェイ０書き込み指示、ウェイ１書き込み指示とも０を信号２２１２０に出力する。しかしこのとき、優先度判定指示＝１を出力し、優先度判定を指示する信号２２１２１＝１となる。
【００６３】
優先度判定を指示する信号２２１２１＝１により、優先度判定回路２２１２４による優先度判定を行う。出力信号２２１１１は、エントリ番号１を示すので実行中のプロセス優先度＝２である。また、ウェイ０の優先度＝２（使用者ルーチンＣ）、ウェイ１の優先度＝３（使用者ルーチンＤ）なので、優先度判定回路２２１２４は図１７の５行目により、ウェイ０書き込み指示＝１、ウェイ１書き込み指示＝０を出力する。この出力結果２２１２５と信号２２１２０をマージして、ウェイ０書き込み指示＝１、ウェイ１書き込み指示＝０を書き込みウェイを指示する指示信号２１５として出力する。こうして、キャッシュのウェイ０にデータが書き込まれることになる。
【００６４】
このように、アドレス空間固有情報管理テーブルにアドレス範囲のキャッシュ要求度を示す優先度フィールドを追加し、キャッシュブロックの追い出しブロックの決定のときに、この優先度も参照するようにした。こうしてリアルタイム性を要求される処理同士のキャッシュブロックの取り合いが発生したとき、リアルタイム性がシステムにより重要な影響をあたえるルーチンを優先することができ、より安定したシステムが実現できる。
また、プロセス固有情報管理エントリとアドレス空間固有情報管理エントリの両者をキャッシュ情報管理テーブルに持つようにして、ユーザプロセスとＯＳカーネルのキャッシュ制御が可能となり、実用的なシステムの性能向上が実現できる。
【００６５】
実施の形態６．
これまでの実施形態は、プロセス固有情報とアドレス空間情報のどちらか一方を持つ例であったが、図１８でプロセス固有情報とアドレス空間情報の両者を持つ例を示す。図において、２３１はキャッシュ情報管理テーブルで、２３１０１、２３１０２、２３１０３はアドレス空間固有情報エントリであり、２３１０４、２３１０５、２３１０６、２３１０７はプロセス固有情報エントリである。本システムは、全部で７個のエントリをもち、キャッシュのタグの管理番号は３ビットで構成され、１（２進数００１）から７（２進数１１１）のエントリ番号またはＮＵＬＬを表す０が入る。ＯＳのカーネルの特別な要求（キャッシュ追出し禁止やキャッシュへ書き込み禁止）があるアドレス範囲を１番から３番のエントリで設定し、特別な要求があるユーザプロセスを４番から７番のエントリで設定することを想定している。
【００６６】
以上の実施例では、シングルプロセッサ、２ウェイのセットアソシアティブキャッシュの構成を示したが、プロセッサ数が２以上のマルチプロセッサの構成も容易に考えられる。また、ウェイ数は２以上の構成も可能である。
【００６７】
【発明の効果】
以上のようにこの発明によれば、プロセス情報管理テーブルを備え、またタグメモリ領域内にプロセス対応の識別番号を指定する欄を設けて、指定属性によりプロセスを処理するので、タグＲＡＭ自体の書換が必要なく、しかもプロセス毎に常駐優先を選択できる効果があり、処理速度が向上する。
【図面の簡単な説明】
【図１】この発明の実施の形態１における情報処理装置におけるキャッシュメモリ装置の概要構成を示す図である。
【図２】実施の形態１におけるキャッシュメモリの詳細構成を示す図である。
【図３】実施の形態１におけるプロセス固有情報管理テーブルの詳細と動作を説明する図である。
【図４】実施の形態１におけるウェイ判定回路の判定論理を示す図である。
【図５】この発明の実施の形態２におけるプロセス固有情報管理テーブルの詳細と動作を説明する図である。
【図６】実施の形態２におけるウェイ判定回路の判定論理を示す図である。
【図７】実施の形態２における優先度判定回路の判定論理を示す図である。
【図８】この発明の実施の形態３における書き込みエンコーダの動作論理を示す図である。
【図９】実施の形態３における書き込みセレクタの動作論理を示す図である。
【図１０】実施の形態３におけるプロセス固有情報管理テーブル無効化処理動作を示すフロー図である。
【図１１】この発明の実施の形態４における情報処理装置におけるキャッシュメモリ装置の概要構成を示す図である。
【図１２】実施の形態４におけるキャッシュメモリの詳細構成を示す図である。
【図１３】実施の形態４におけるプロセス固有情報管理テーブルの詳細と動作を説明する図である。
【図１４】実施の形態４におけるウェイ判定回路の判定論理を示す図である。
【図１５】この発明の実施の形態５におけるプロセス固有情報管理テーブルの詳細と動作を説明する図である。
【図１６】実施の形態５におけるウェイ判定回路の判定論理を示す図である。
【図１７】実施の形態５における優先度判定回路の判定論理を示す図である。
【図１８】この発明の実施の形態６におけるキャッシュ情報管理テーブルの例を示す図である。
【符号の説明】
１　プロセッサ、２　キャッシュメモリ装置、３　メモリ装置、２００ａ　データＲＡＭ（ウェイ０）、２００ｂ　データＲＡＭ（ウェイ１）、２０２ａ　タグＲＡＭ（ウェイ０）、２０２ｂ　タグＲＡＭ（ウェイ１）、２１１　プロセス固有情報管理テーブル、２１２　実行プロセス番号レジスタ、２２１　アドレス空間固有情報管理テーブル、２１１０１　エントリ０番、２１１０２　エントリ１番、２１１０３　エントリ２番、２１１０４　エントリ３番、２１１０５　比較器、２１１０６　比較器、２１１０７　比較器、２１１０８　比較器、２１１０９　エンコーダ、２１１１０　セレクタ、２１１１２　セレクタ、２１１１３
セレクタ、２１１１４　書き込みウェイ判定回路。
【図１】
2004110240.tif 000003
【図２】
2004110240.tif 000004
【図３】
2004110240.tif 000005
【図４】
2004110240.tif 000006
【図５】
2004110240.tif 000007
【図６】
2004110240.tif 000008
【図７】
2004110240.tif 000009
【図８】
2004110240.tif 000010
【図９】
2004110240.tif 000011
【図１０】
2004110240.tif 000012
【図１１】
2004110240.tif 000013
【図１２】
2004110240.tif 000014
【図１３】
2004110240.tif 000015
【図１４】
2004110240.tif 000016
【図１５】
2004110240.tif 000017
【図１６】
2004110240.tif 000018
【図１７】
2004110240.tif 000019
【図１８】
2004110240.tif 000020