(57)【要約】【課題】従来は、コードキャッシュ検索時間の容認範囲でコードキャッシュ容量を設定し、処理プロセス全体で共通使用の新コードシーケンスをコードキャッシュ外部に退避し、使用時にコードキャッシュ内部に戻す故、メモリ上のアドレスが異なり、命令キャッシュのヒット率低下、パージ処理要で、性能が劣化する。【解決手段】元コードシーケンスのアドレス情報から新コードシーケンスを格納するコードキャッシュデータアレイへのアクセス情報をプロファイル管理テーブルに格納し、このテーブルから参照されコードキャッシュデータアレイの特定エントリを参照する情報を格納する有効キャッシュタグ管理テーブルとテーブルに新コードシーケンス情報を格納する空きがないとき有効キャッシュタグ管理テーブルのエントリを一時退避させる退避キャッシュタグ管理テーブルとを備える。【選択図】      図１
2004199267.tif 000002
【特許請求の範囲】
【請求項１】
元コードシーケンスを新コードシーケンスに変換して処理を実行する情報処理装置におけるコードキャッシュ制御装置において、新コードシーケンスを格納するコードキャッシュデータアレイと、元コードシーケンスのアドレス情報からコードキャッシュデータアレイへのアクセス情報を格納するプロファイル管理テーブルと、プロファイル管理テーブルから参照されコードキャッシュデータアレイの特定エントリを参照するための情報を格納するキャッシュタグ管理テーブルを備え、このキャッシュタグ管理テーブルは処理を実行する新コードシーケンス情報を格納する有効キャッシュタグ管理テーブルと、有効キャッシュタグ管理テーブルに処理を実行する新コードシーケンス情報を格納する空きがないとき有効キャッシュタグ管理テーブルのエントリを選択して一時退避させ、空きを作る退避キャッシュタグ管理テーブルとに分割されたことを特徴とするコードキャッシュ制御装置。
【請求項２】
プロファイル管理テーブルに有効キャッシュタグ管理テーブルの該当エントリを指し示すポインタ情報を格納するフィールドと、キャッシュタグ管理テーブルに関連した元コードシーケンスのアドレス情報を格納するフィールドと、各エントリの使用状況を示すプロファイルエントリ有効フィールドとを備えたことを特徴とする請求項１記載のコードキャッシュ制御装置。
【請求項３】
有効及び退避キャッシュタグ管理テーブルの各エントリに対して、コードキャッシュデータアレイのブロックを固定的に割り当て、キャッシュタグ管理テーブルの各エントリに対応するコードキャッシュデータアレイの該当ブロックの物理アドレスを格納する物理アドレス格納フィールドを備えたことを特徴とする請求項１乃至２記載のコードキャッシュ制御装置。
【請求項４】
コードキャッシュデータアレイの各ブロックの使用状況を管理するコードキャッシュデータアレイ管理テーブルを備え、
コードシーケンスの処理時は、コードキャッシュデータアレイ管理テーブルからコードキャッシュデータアレイの物理アドレスを獲得し、そのアドレスから処理を開始することを特徴とする請求項１乃至２記載のコードキャッシュ制御装置。
【請求項５】
有効キャッシュタグ管理テーブルに、エントリの使用状況を表すフィールドを設けたことを特徴とする請求項１乃至２記載のコードキャッシュ制御装置。
【請求項６】
元コードシーケンスを実行中に、有効キャッシュタグ管理テーブルに該当する新コードシーケンスが登録されておらず、退避キャッシュタグ管理テーブルに該当する新コードシーケンスが登録されているときは、退避キャッシュタグ管理テーブルの対応エントリを有効キャッシュタグ管理テーブルに移動する構成にされたことを特徴とする請求項１乃至２記載のコードキャッシュ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、元コードシーケンスを新コードシーケンスに変換し処理を実行する情報処理装置におけるコードキャッシュ制御に関するものである。
【０００２】
【従来の技術】
元コードシーケンスを新コードシーケンスに変換し、実行する情報処理装置では、処理中に何回も実行される元コードシーケンスの変換済み新コードシーケンスをメモリ上に形成したコードキャッシュに保存して、保存した新コードシーケンスを実行することにより処理を高速化することが可能である。しかし、コードキャッシュが大きすぎる場合、コードキャッシュの検索時間が容認できないほど長くなり、小さすぎると処理性能に差が生じるだけの十分なシーケンスが記憶できなくなる。このため、有限サイズのコードキャッシュにシステム性能をより高速にするためのコードキャッシュ制御手法が提案されている。
【０００３】
図４は例えば、特開平１１−２８８３７６号公報に示された従来のコードキャッシュ制御方式を示すフローチャートである。
ステップ404にてコードキャッシュがいっぱいである。即ち変換の結果得られた新コードシーケンスを格納する空きチャンクがないと判定されると、除去すべきチャンクを判定し、ステップ405にてチャンクを跨いだポインタがある場合は犠牲チャンクの検索を（ステップ407）、チャンクを跨いだポインタがない場合はチャンクを空にする処理（ステップ406）を行う。犠牲チャンクを使用する場合は、除去すべきチャンクの内容を犠牲チャンクに移動する（ステップ408）。
このようにして、処理プロセス全体を通じて共通的に使用されるコードシーケンスについては変換した結果である新コードシーケンスをコードキャッシュの外部に一時的に退避し、再び呼び出された場合には変換することなく、コードキャッシュ内のチャンクに移動し、関連ポインタの変換のみで再び処理を実行できるようにしている。
【０００４】
【特許文献】
特開平１１−２８８３７６号公報
【０００５】
【発明が解決しようとする課題】
従来のコードキャッシュ制御装置は、コードキャッシュの検索時間が容認できる範囲でコードキャッシュの容量を設定し、処理プロセス全体を通じて共通的に使用されるコードシーケンスについては変換済みの新コードシーケンスをコードキャッシュ外部に一時的に退避し、使用する場合にコードキャッシュ内部に戻す処理を行うため、メモリ上に配置されるアドレスが異なり、CPU内部に置かれた命令キャッシュのヒット率が低下する。さらにパージ処理が必要となり、性能が劣化するという問題点があった。
【０００６】
この発明は上記のような問題点を解決するためになされたもので、コードキャッシュの検索時間を短縮し、処理性能に差が生じるだけの十分なシーケンスを記憶できるコードキャッシュにおいてCPU内部の命令キャッシュのヒット率を低下させず、パージ処理が不要であり、高速なコードキャッシュ制御装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係るコードキャッシュ制御装置は、元コードシーケンスを新コードシーケンスに変換して処理を実行する情報処理装置に適用されるもので、新コードシーケンスを格納するコードキャッシュデータアレイと、元コードシーケンスのアドレス情報からコードキャッシュデータアレイへのアクセス情報を格納するプロファイル管理テーブルと、プロファイル管理テーブルから参照されコードキャッシュデータアレイの特定エントリを参照するための情報を格納するキャッシュタグ管理テーブルを備え、このキャッシュタグ管理テーブルは処理を実行する新コードシーケンス情報を格納する有効キャッシュタグ管理テーブルと有効キャッシュタグ管理テーブルに処理を実行する新コードシーケンス情報を格納する空きがないとき有効キャッシュタグ管理テーブルのエントリを選択して一時退避させる退避キャッシュタグ管理テーブルとに分割されたものである。
【０００８】
【発明の実施の形態】
実施の形態１．
図１はこの発明の実施の形態１におけるコードキャッシュ制御装置の構成例である。
図において、１は元コードシーケンスのアドレスを保持するアドレス保持手段、２は元コードシーケンスの各アドレスの実行状況を保持するプロファイル管理テーブルで、２１は元コードシーケンスアドレス保持フィールド、２２は各エントリの使用状況を示すプロファイルエントリ有効フィールド、２３は元コードシーケンスを変換した結果得られた新コードシーケンスに関連した有効キャッシュタグ管理テーブルの該当エントリを示すポインタを格納するポインタ格納フィールドである。
【０００９】
３は有効キャッシュタグ管理テーブルで、３１は各エントリにおける対応する元コードシーケンスアドレスを格納する元コードシーケンスアドレス保持フィールド、３２は各エントリの使用状況を示す有効キャッシュタグエントリ有効フィールド、３３はコードキャッシュデータアレイ５の対応ブロックの物理アドレスを格納する新コードシーケンスアドレス保持フィールドである。
【００１０】
４は退避キャッシュタグ管理テーブルで、４１は各エントリにおける対応する元コードシーケンスアドレスを格納する元コードシーケンスアドレス保持フィールド、４２は各エントリの使用状況を示す退避キャッシュタグエントリ有効フィールド、４３はコードキャッシュデータアレイ５の対応ブロックの物理アドレスを格納する新コードシーケンスアドレス保持フィールドである。
５はコードキャッシュデータアレイで、５１は新コードシーケンスを格納するコードキャッシュデータブロックである。
【００１１】
なお、有効キャッシュタグ管理テーブル３及び退避キャッシュタグ管理テーブル４の各エントリには、予めコードキャッシュデータブロック５１が固定的に割り付けられており、新コードシーケンスアドレス保持フィールド３２および新コードシーケンスアドレス保持フィールド４２には、各エントリに予め対応付けられたコードキャッシュデータブロック５１の物理アドレスが初期値として設定されている。
【００１２】
次に動作について図２に示したフローチャートを用いて説明する。
［ケース１］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在し、その新コードシーケンスが有効コードキャッシュ管理テーブル３に存在する場合。
まず、元コードシーケンスの一処理単位の先頭アドレスをアドレス保持手段１に設定する（ステップ１）。
次にアドレス保持手段１に設定した元コードシーケンスのアドレスを元にプロファイル管理テーブル２を検索する（ステップ２）。対応する新コードシーケンスが存在するので、ステップ２の判定はYesとなる。処理ステップ２は例えばアドレス保持手段１に格納された元コードシーケンスのアドレスとプロファイル管理テーブル２の元コードシーケンスアドレス保持フィールド２１に格納された値の一致、及びプロファイルエントリ有効フィールド２２の値により確認することができる。
【００１３】
次に、プロファイル管理テーブル２のポインタ格納フィールド２３に格納されたポインタで示された領域より、有効コードキャッシュタグ管理テーブル３の該当エントリを読み出す。元コードシーケンスアドレス保持フィールド３１の値とアドレス保持手段１の比較、及び有効キャッシュタグエントリ有効フィールド３２を検査する（ステップ３）。対応する新コードシーケンスが存在するので、ステップ３の判定はYesとなる。
次に、新コードシーケンスアドレス保持フィールド３３により、該当する新コードシーケンスの物理アドレスを指定し、新コードシーケンスを実行する（ステップ４）。
【００１４】
［ケース２］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在し、その新コードシーケンスが有効コードキャッシュ管理テーブル３には存在せず、退避コードキャッシュ管理テーブル４には存在し、有効コードキャッシュ管理テーブル３に空きがある場合。
まず、元コードシーケンスの一処理単位の先頭アドレスをアドレス保持手段１に設定する（ステップ１）。
次にアドレス保持手段１に設定した元コードシーケンスのアドレスを元にプロファイル管理テーブル２を検索する（ステップ２）。対応する新コードシーケンスが存在するので、ステップ２の判定はYesとなる。処理ステップ２は例えばアドレス保持手段１に格納された元コードシーケンスのアドレスとプロファイル管理テーブル２の元コードシーケンスアドレス保持フィールド２１に格納された値の一致、及びプロファイルエントリ有効フィールド２２の値により確認することができる。
【００１５】
次に、プロファイル管理テーブル２のポインタ格納フィールド２３に格納されたポインタで示された領域より、有効コードキャッシュタグ管理テーブル３の該当エントリを読み出す。即ち、元コードシーケンスアドレス保持フィールド３１の値とアドレス保持手段１の比較、および有効キャッシュタグエントリ有効フィールド３２を検査する（ステップ３）。対応する新コードシーケンスが存在しないので、ステップ３の判定はNoとなる。
【００１６】
次に、退避コードキャッシュタグ管理テーブル４を検索する(ステップ５)。対応する新コードシーケンスが存在するので、ステップ５の判定はYesとなる。この検査は処理ステップ２と同様に、例えばアドレス保持手段１に格納された元コードシーケンスのアドレスと退避コードキャッシュ管理テーブル４の元コードシーケンスアドレス保持フィールド４１に格納された値が一致、及び退避コードキャッシュタグエントリ有効フィールド４２の値により確認することができる。なお、その他の手段で新コードシーケンスの存在を検査してもかまわない。
【００１７】
次に、有効コードキャッシュタグ管理テーブル３を検索し、空きエントリがあるかを確認する（ステップ６）。空きエントリがあるので、検査結果はYesになる。ステップ６の検査は例えば、有効コードキャッシュタグエントリ有効フィールド３２の値により確認することができる。
次に、退避コードキャッシュタグ管理テーブル４の該当エントリを有効コードキャッシュタグ管理テーブル３の空きエントリに移動し、退避コードキャッシュタグ管理テーブル４の該当エントリの退避コードキャッシュタグエントリ有効フィールド４２を無効の状態を示す値に設定し、プロファイル管理テーブル２の該当エントリのポインタ格納フィールド２３に有効キャッシュタグ管理テーブル３の該当エントリを示すポインタを格納する（ステップ７）。
新コードシーケンスアドレス保持フィールド３３により、該当する新コードシーケンスの物理アドレスを指定し、新コードシーケンスを実行する（ステップ４）
【００１８】
［ケース３］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在し、その新コードシーケンスが有効コードキャッシュ管理テーブル３には存在せず、退避コードキャッシュ管理テーブル４には存在し、有効コードキャッシュ管理テーブル３に空きがない場合。
ステップ１からステップ５まではケース２と同様の処理である。
ステップ６において、有効コードキャッシュタグ管理テーブル３に空きがないので、検査結果はNoになる。
次に、退避コードキャッシュタグ管理テーブル４を検索し、空きエントリがあるかを確認する（ステップ８）。ステップ８の検査は例えば、退避コードキャッシュタグエントリ有効フィールド４２の値により確認することができる。
【００１９】
次に、退避コードキャッシュタグ管理テーブル４に空きがある場合は空きエントリを選択し、空きがない場合は退避コードキャッシュタグ管理テーブル４の全エントリの中から削除可能なエントリを選択し（ステップ１０）、有効キャッシュタグ管理テーブル３の中から選択したエントリを退避コードキャッシュタグ管理テーブル４の上記選択エントリに移動する。ここで、退避コードキャッシュタグ管理テーブル４から削除するエントリとして、有効コードキャッシュタグ管理テーブル３へ移動するエントリを選択することも可能であるが、この場合は、新たに一時退避領域（図示せず）を設け、有効コードキャッシュタグ管理テーブル３から退避コードキャッシュ管理テーブル４へ移動するエントリを一時退避領域に退避し、退避コードキャッシュ管理テーブル４から有効コードキャッシュタグ管理テーブル３へのエントリ移動が終わった後、一時退避領域に退避したエントリを退避コードキャッシュ管理テーブル４へ移動する。
次に、ステップ７以降の処理をケース２と同様に実行する。
【００２０】
［ケース４］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在し、その新コードシーケンスが有効コードキャッシュ管理テーブル３には存在せず、退避コードキャッシュ管理テーブル４にも存在しなく、さらに有効キャッシュ管理テーブル３に空きがある場合。
ステップ１からステップ３まではケース２と同様の処理である。
ステップ５において、退避コードキャッシュタグ管理テーブル４に空きがないので、検査結果はNoになる。
次に、元コードシーケンスを変換し、新コードシーケンスを生成する（ステップ１１）。
【００２１】
次に、有効コードキャッシュタグ管理テーブル３に空きがあるかを検索する（ステップ１２）。空きがあるので、ステップ１２の検査結果はYesになる。
次に、空きエントリを示すポインタをプロファイル管理テーブル２のポインタ格納フィールド２３に格納し、有効コードキャッシュ管理テーブル３の元コードシーケンスアドレス保持フィールド３１に元コードシーケンスのアドレスを格納し、プロファイルエントリ有効フィールド２２に有効を示す値を格納する（ステップ１６）。
【００２２】
次に、有効コードキャッシュ管理テーブル３の新コードシーケンスアドレス保持フィールド３３に格納されているコードキャッシュデータアレイ５の該当ブロック５１の物理アドレスが示す領域に、変換した新コードシーケンスを格納する（ステップ１７）。
次に、新コードシーケンスを実行する（ステップ４）
【００２３】
［ケース５］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在し、その新コードシーケンスが有効コードキャッシュ管理テーブルに３は存在せず、退避コードキャッシュ管理テーブル４にも存在しなく、さらに有効キャッシュ管理テーブル３に空きがない場合。
ステップ１からステップ１１まではケース４と同様の処理である。
【００２４】
ステップ１２において、有効コードキャッシュタグ管理テーブル４に空きがないので、検査結果はNoになる。
次に、ケース３のステップ８、ステップ９、ステップ１０と同様に、退避コードキャッシュタグ管理テーブル４の検索（ステップ１３）、退避コードキャッシュタグ管理テーブル４からの削除エントリの選択（ステップ１５）、有効コードキャッシュタグ管理テーブル３から退避コードキャッシュ管理テーブル４へのエントリ退避（ステップ１４）、という処理を行い、有効コードキャッシュタグ管理テーブル３に空きエントリを作る。
次に、ステップ１６以降の処理をケース４と同様に実行する。
【００２５】
［ケース６］：元コードシーケンスに対応する変換済みのコードシーケンスがプロファイル管理テーブル２に存在しない場合。
まず、元コードシーケンスの一処理単位の先頭アドレスをアドレス保持手段１に設定する（ステップ１）。
次にアドレス保持手段１に設定した元コードシーケンスのアドレスを元にプロファイル管理テーブル２を検索する（ステップ２）。対応する新コードシーケンスが存在しないので、ステップ２の判定はNoとなる。
次にステップ１１以降の処理をケース４またはケース５と同様に実行する。
【００２６】
以上のように、本実施の形態１によるコードキャッシュ制御装置では、新規に変換した新コードシーケンスを登録する場合には、有効コードキャッシュタグ管理テーブル３に空きがない場合、対応するコードキャッシュデータアレイ５のブロックの物理アドレスを保持したまま退避コードキャッシュタグ管理テーブル４に移動し、退避コードキャッシュタグ管理テーブル４に新コードシーケンスの情報が退避されている場合は、対応するコードキャッシュデータアレイ５のブロックの物理アドレスを保持したまま有効コードキャッシュタグ管理テーブル３に移動するようにしているので、コードキャッシュデータアレイ５の内容を保存することができ、実行時に高速に検索する必要のある有効コードキャッシュタグ管理テーブル３のエントリ数を削減し、高速な処理を実現することができる。
【００２７】
また、コードキャッシュデータアレイ５の内容を保存するので、命令キャッシュのヒット率低下を抑止することができる。また、命令キャッシュのパージ処理を不要にすることができる。
【００２８】
また、応答速度、容量、ビット単価などの異なるメモリ素子でメモリ空間が構成されている場合、有効キャッシュタグ管理テーブル３を高速RAMに配置し、退避キャッシュタグ管理テーブル４を低速RAMに配置することで、高価な高速RAMの使用量を削減しつつ、高速なシステムを実現することができる。
【００２９】
実施の形態２．
以上の実施の形態１では、有効コードキャッシュタグ管理テーブル３および退避コードキャッシュタグ管理テーブル４に、コードキャッシュデータアレイ５の各ブロックを固定的に割り当て、物理アドレスを予め設定しておくようにしたものであるが、次にコードキャッシュデータアレイ５の各ブロックを処理状況に応じて割り当てる場合の実施の形態を示す。
【００３０】
図３は、このような場合の、コードキャッシュの実施の形態を示す構成図であり、アドレス保持手段１及びプロファイル管理テーブル２は実施の形態１と同様の構成及び動作であるので省略する。
図において、３は有効キャッシュタグ管理テーブルで、３１は有効キャッシュタグ管理テーブル３の各エントリにおける対応する元コードシーケンスアドレスを格納する元コードシーケンスアドレス保持フィールド、３２は有効キャッシュタグ管理テーブル３の各エントリの使用状況を示す有効キャッシュタグエントリ有効フィールド、３４はコードキャッシュデータアレイ管理テーブル６のエントリを示すポインタを格納するポインタ格納フィールドである。
【００３１】
４は退避キャッシュタグ管理テーブルで、４１は退避キャッシュタグ管理テーブル４の各エントリにおける対応する元コードシーケンスアドレスを格納する元コードシーケンスアドレス保持フィールド、４２は退避キャッシュタグ管理テーブル４の各エントリの使用状況を示す退避キャッシュタグエントリ有効フィールド、４４はコードキャッシュデータアレイ管理テーブル６のエントリを示すポインタを格納するポインタ格納フィールドである。
【００３２】
５はコードキャッシュデータアレイで、５１は新コードシーケンスを格納するコードキャッシュデータブロックである。６はコードキャッシュデータアレイ管理テーブルで、６１は対応するコードキャッシュデータブロック５１の物理アドレスを格納する新コードシーケンスアドレス格納フィールド、６２は各エントリの使用状況を示すコードキャッシュデータアレイ管理エントリ有効フィールドである。
【００３３】
次に動作について説明する。
元コードシーケンスを新規に変換し、新コードシーケンスを生成し、コードキャッシュに登録する場合：
まず、有効コードキャッシュ管理テーブル３の空きエントリを確保し、元コードシーケンスアドレス保持フィールド３１に元コードシーケンスのアドレスを格納する。次に、コードキャッシュデータアレイ管理テーブル６の空きエントリを検索し、空きエントリを獲得、即ち、コードキャッシュデータアレイ５の空きブロックを獲得する。この検索はコードキャッシュデータアレイ管理エントリ有効フィールド６２の値により判定を行う。次に、獲得したコードキャッシュデータアレイ管理テーブル６の空きエントリを示すポインタを、有効コードキャッシュタグ管理テーブル３のポインタ格納フィールド３４に格納する。次に、有効コードキャッシュ管理テーブル３の有効コードキャッシュタグエントリ有効フィールド３２に有効を示す値を格納し、コードキャッシュデータアレイ管理テーブル６のコードキャッシュデータアレイ管理エントリ有効フィールド６２に有効を示す値を格納する。
【００３４】
次に、退避コードキャッシュタグ管理テーブル４からエントリを削除する場合：
退避コードキャッシュタグ管理テーブル４から削除対象のエントリを選択し、そのポインタ格納フィールド４４に格納されたポインタが示すコードキャッシュデータアレイ管理テーブル６のエントリのコードキャッシュデータアレイ管理エントリ有効フィールド６２に無効を示す値を格納し、退避コードキャッシュ管理テーブル４の退避コードキャッシュタグエントリ有効フィールド４２に無効を示す値を格納する。
【００３５】
次に、新コードシーケンスを実行する場合：
有効コードキャッシュタグ管理テーブル３を検索し、該当するエントリを検出する。該当エントリのポインタ格納フィールド３４に格納されたポインタの示すコードキャッシュデータアレイ管理テーブル６の該当エントリの新コードシーケンスアドレス保持フィールド６１に格納されたコードキャッシュデータアレイ５のコードキャッシュデータブロック５１の物理アドレスを獲得し、そのアドレスから処理を開始する。
なお、その他の動作は実施の形態１と同様であるので省略する。
【００３６】
なお、有効コードキャッシュタグ管理テーブル３および退避コードキャッシュタグ管理テーブル４にコードキャッシュデータアレイ５のコードキャッシュデータブロック５１の物理アドレスを格納するフィールドを設け、新規に新コードシーケンスをコードキャッシュに格納するときに該当するコードキャッシュデータブロック５１の物理アドレスを上記物理アドレス格納フィールド（図１の３３および４３に相当）に格納し、実行時に上記コードキャッシュデータブロック５１の物理アドレスを格納するフィールド（図１の３３および４３に相当）から対応するコードキャッシュデータブロック５１の物理アドレスを獲得しても良い。
【００３７】
以上のように、本発明の実施の形態２によるコードキャッシュ制御装置では、コードキャッシュデータアレイ管理テーブル６を設け、有効コードキャッシュタグ管理テーブル３および退避コードキャッシュタグ管理テーブル４からはコードキャッシュデータアレイ管理テーブル６のエントリを示すポインタを格納するようにしたので、コードキャッシュデータアレイ５のブロック数を有効コードキャッシュタグ管理テーブル３および退避コードキャッシュタグ管理テーブル４のエントリ数と異なった構成とすることができる。
【００３８】
また、新コードシーケンスの処理手順および命令キャッシュの構成等に応じて最適なコードキャッシュデータアレイのブロック配置を行うことができる。
【００３９】
また、応答速度、容量、ビット単価などの異なるメモリ素子でメモリ空間が構成されている場合、共通的に使用されるなど実行頻度の高い新コードシーケンスを格納するブロックを高速RAMに配置し、その他の新コードシーケンスを低速RAMに配置することで、高価な高速RAMの使用量を削減しつつ、高速なシステムを実現することができる。
【００４０】
【発明の効果】
以上のように、本発明によるコードキャッシュ制御装置では、キャッシュタグ管理テーブルを有効コードキャッシュタグ管理テーブルと退避コードキャッシュタグ管理テーブルに分割し、有効コードキャッシュタグ管理テーブルに新コードシーケンスを登録する空きがない場合は、対応コードキャッシュデータアレイのブロックの物理アドレスを保持したまま退避コードキャッシュタグ管理テーブルに移動して空きを作り、退避コードキャッシュタグ管理テーブルに新コードシーケンス情報が退避されている場合は、対応コードキャッシュデータアレイのブロックの物理アドレスを保持したまま有効コードキャッシュタグ管理テーブルに移動するようにしているので、コードキャッシュデータアレイの内容を保存することができ、実行時に高速に検索する必要のある有効コードキャッシュタグ管理テーブルのエントリ数を削減し、高速な処理を実現することができる。
また、コードキャッシュデータアレイの内容を保存するので、命令キャッシュのヒット率低下を抑止することができる。また、命令キャッシュのパージ処理を不要にすることができる。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるコードキャッシュ制御装置の構成図である。
【図２】図１に示すコードキャッシュ制御装置のフローチャートである。
【図３】この発明の実施の形態２によるコードキャッシュ制御装置の構成図である。
【図４】従来のコードキャッシュ制御装置のフローチャートである。
【符号の説明】
１：アドレス保持手段、２：プロファイル管理テーブル、３：有効キャッシュタグ管理テーブル、４：退避キャッシュタグ管理テーブル、５：コードキャッシュデータアレイ、６：コードキャッシュデータアレイ管理テーブル、２２：元コードシーケンスアドレス保持フィールド、２２：プロファイルエントリ有効フィールド、２３：ポインタ格納フィールド、３１：元コードシーケンスアドレス保持フィールド、３２：有効キャッシュタグエントリ有効フィールド、３３：新コードシーケンスアドレス保持フィールド、３４：ポインタ格納フィールド、４１：元コードシーケンスアドレス保持フィールド、４２：退避キャッシュタグエントリ有効フィールド、４３：新コードシーケンスアドレス保持フィールド、４４：ポインタ格納フィールド、５１：コードキャッシュデータブロック、６２：コードキャッシュデータアレイ管理エントリ有効フィールド。
【図１】
2004199267.tif 000003
【図２】
2004199267.tif 000004
【図３】
2004199267.tif 000005
【図４】
2004199267.tif 000006