"複数の命令を含むプロセスを実行するとともに、インデックス情報とタグ情報を含むメモリアクセス要求を発行する命令制御部と、タグと、前記メモリアクセス要求に対応するデータと、前記命令制御部が実行するプロセスを識別するプロセス識別子を保持するブロックを、複数のインデックス各々に対応して有するキャッシュウェイを複数備えたキャッシュメモリ部と、受信したメモリアクセス要求に含まれるインデックス情報をデコードし、前記デコードしたインデックス情報に対応するブロックを選択するインデックスデコード部と、受信したメモリアクセス要求に含まれるタグ情報と前記インデックスデコード部が選択したブロックに含まれるタグを比較し、前記タグ情報と前記タグが一致する場合には前記インデックスデコード部が選択したブロックに含まれるデータを出力する比較部と、前記プロセス識別子毎に設定された最大キャッシュウェイ数情報に基づき、前記キャッシュメモリ部のインデックス毎に、前記プロセス識別子で識別されるプロセスが使用するキャッシュウェイ数を決定する制御部と、を有することを特徴とする演算処理装置。前記命令制御部は、制御プログラムを実行して、プロセス識別子毎に設定された最大キャッシュウェイ数情報に基づき、前記キャッシュメモリ部のインデックス毎に、前記プロセス識別子で識別されるプロセスが使用するキャッシュウェイ数を決定することを特徴とする請求項1記載の演算処理装置。前記演算処理装置において、前記比較部による比較の結果、前記タグ情報に一致するタグが選択したブロックに存在せずキャッシュミスが発生した場合、前記キャッシュメモリ部は、前記演算処理装置に接続されたメインメモリから読み出した前記メモリアクセス要求に対応するデータを、設定された最大キャッシュウェイ数情報を超えて使用しているプロセスが使用中のブロックのいずれかが保持するデータと置換することを特徴とする請求項1又は2記載の演算処理装置。前記制御部は、プロセス識別子毎に、各プロセス識別子に割り当てる最大ブロック数を、1つのキャッシュウェイあたりのブロック数で除算して、各プロセス識別子に割り当てるキャッシュウェイ数を算出し、プロセス識別子毎に、各プロセス識別子に割り当てる最大ブロック数を、1つのキャッシュウェイあたりのブロック数で除算した剰余を算出して、各プロセス識別子における1キャッシュウェイ分に満たないキャッシュウェイ数を算出し、プロセス識別子毎に、前記キャッシュメモリ部内のすべてのインデックスについて、前記各プロセス識別子に割り当てるキャッシュウェイ数を前記各プロセス識別子に対応する最大キャッシュウェイ数として設定し、プロセス識別子毎に、前記算出した各プロセス識別子における1キャッシュウェイ分に満たないブロック数のインデックス分だけ、前記各プロセス識別子に対応する最大キャッシュウェイ数を加算し、前記加算後の最大キャッシュウェイ数を、前記各プロセス識別子で識別されるプロセスが使用するキャッシュウェイ数として決定することを特徴とする請求項1記載の演算処理装置。前記比較部による比較の結果、前記タグ情報に一致するタグが選択したブロックに存在せずキャッシュミスが発生した場合、前記メモリアクセス要求を発生させたプロセスを識別する要求元プロセス識別子と、前記メモリアクセス要求により特定されるインデックスの各キャッシュウェイに対応して前記キャッシュメモリ部に保持されているプロセス識別子と、前記メモリアクセス要求により特定されるインデックスに対応して決定される前記プロセス識別子毎の最大キャッシュウェイ数とに基づいて、前記メモリアクセス要求に対応するインデックスにおいて前記要求元プロセス識別子に対応するプロセスへの前記キャッシュメモリ部の領域の割当てを行なうキャッシュメモリ制御部を有することを特徴とする請求項4記載の演算処理装置。前記キャッシュメモリ制御部は、前記比較部による比較の結果、前記タグ情報に一致するタグが選択したブロックに存在せずキャッシュミスが発生した場合、前記メモリアクセス要求に含まれるインデックスの各キャッシュウェイに対応して前記キャッシュメモリ部に保持されている各プロセス識別子が前記要求元プロセス識別子と一致するか否かを値1または0で示すビットマスクを生成するマスク生成部と、前記生成されたビットマスクの1または0の数を計数する計数部と、前記計数部が計数した値の数が前記要求元プロセス識別子に対応する最大キャッシュウェイ数に満たない場合には、前記マスク生成部が出力するビットマスクの各ビットを反転たビットマスクを出力し、前記計数部が計数した所定値の数が前記要求元プロセス識別子に対応する最大キャッシュウェイ数に達している場合には、前記マスク生成部が出力したビットマスクを出力するビットマスク選択部と、前記ビットマスク選択部が出力したビットマスクに基づき、前記複数のキャッシュウェイから置換するキャッシュウェイを決定する置換ウェイ決定部を備えることを特徴とする請求項5記載の演算処理装置。プロセス識別子に割り当てるキャッシュウェイ数が0である場合、前記メモリアクセス要求に含まれる要求アドレスに含まれる部分アドレス情報を、前記プロセス識別子における1キャッシュウェイ分に満たないブロック数で除算した剰余に前記所定のインデックス開始位置を加えた値を、前記インデックスデコード部の出力とし、プロセス識別子に割り当てるキャッシュウェイ数が0でない場合、前記要求アドレスに含まれるインデックス情報を前記インデックスデコード部の出力とするアドレスハッシュ生成部を備えることを特徴とする請求項4記載の演算処理装置。前記キャッシュメモリ部は、前記最大キャッシュウェイ数を前記複数のインデックス毎および前記プロセス識別子毎に記憶するメモリを備え、前記制御部は、前記メモリアクセス要求では使用されないアドレスを指定して、前記最大キャッシュウェイ数の更新を指示し、前記キャッシュメモリ部は、前記制御部が指定する前記アドレスを前記メモリのアドレス空間のアドレスに変換して、前記プロセス識別子に対応する最大キャッシュウェイ数を更新することを特徴とする請求項4に記載の演算処理装置。前記プロセス識別子は、前記命令制御部が実行するプロセスを複数の種類にグループ化したときの該各グループを識別し、前記命令制御部が実行するプロセスの実プロセスIDと前記プロセス識別子との対応関係を保持する連想メモリを備え、前記命令制御部が実行するプロセスの実プロセスIDをキーとして前記連想メモリ部を検索して、前記実プロセスIDに対応するプロセス識別子を取得して、前記キャッシュメモリ制御部に出力するプロセスIDマップ部を備えることを特徴とする請求項1記載の演算処理装置。タグと、データと、実行対象のプロセスに対応するプロセス識別子を保持するブロックとを複数のインデックスに対応して有するキャッシュウェイを複数備えたキャッシュメモリ部を有する演算処理装置の制御方法において、前記演算処理装置が有する命令制御部が、複数の命令を含むプロセスを実行するとともに、インデックス情報とタグ情報を含む、前記データに対するメモリアクセス要求を発行し、前記演算処理装置が有するインデックスデコード部が、受信したメモリアクセス要求に含まれるインデックス情報をデコードし、前記デコードしたインデックス情報に対応するブロックを選択し、前記演算処理装置が有する比較部が、受信したメモリアクセス要求に含まれるタグ情報と前記インデックスデコード部が選択したブロックに含まれるタグを比較するとともに、前記タグ情報と前記タグが一致する場合には前記インデックスデコード部が選択したブロックに含まれるデータを出力し、前記演算処理装置が有する制御部が、前記プロセス識別子毎に設定された最大キャッシュウェイ数情報に基づき、前記キャッシュメモリ部のインデックス毎に、前記プロセス識別子で識別されるプロセスが使用するキャッシュウェイ数を決定することを特徴とする演算処理装置の制御方法。しかし、第1の従来技術では、使用中のキャッシュブロック数を、全プロセスについて正しく把握するような機構が必要となって、ハードウェア規模が増大してしまう。また、マルチプロセス環境においてはその効率的な動作の観点から問題があった。また、第2の従来技術では、各キャッシュタグにプロセスIDを固定的に割り当てるのみである。このため、キャッシュメモリ中でのプロセスID間の全体的なサイズ割当てを変更するためには、全キャッシュタグの書換えが必要となってしまうという問題点を有していた。さらに、第3の従来技術も、キャッシュメモリ中でのプロセスID間の全体的なサイズ割当てを変更するような機構は備えていないという問題点を有していた。このため、キャッシュメモリのより効率的な動作が望まれていた。本発明の1つの側面では、プロセスIDに対応してキャッシュメモリ領域をブロック単位で任意に分割可能として、プロセッサの実効性能を向上することを可能とすることにある。態様の一例では、複数の命令を含むプロセスを実行するとともに、インデックス情報とタグ情報を含むメモリアクセス要求を発行する命令制御部と、タグと、メモリアクセス要求に対応するデータと、命令制御部が実行するプロセスを識別するプロセス識別子を保持するブロックを、複数のインデックス各々に対応して有するキャッシュウェイを複数備えたキャッシュメモリ部と、受信したメモリアクセス要求に含まれるインデックス情報をデコードし、デコードしたインデックス情報に対応するブロックを選択するインデックスデコード部と、受信したメモリアクセス要求に含まれるタグ情報とインデックスデコード部が選択したブロックに含まれるタグを比較し、タグ情報とタグが一致する場合にはインデックスデコード部が選択したブロックに含まれるデータを出力する比較部と、プロセス識別子毎に設定された最大キャッシュウェイ数情報に基づき、キャッシュメモリ部のインデックス毎に、プロセス識別子で識別されるプロセスが使用するキャッシュウェイ数を決定する制御部とを有するように構成する。キャッシュメモリ領域をキャッシュブロック単位で任意に分割し、各プロセスに適切なキャッシュブロック数を割り当てることが可能となる。これにより、キャッシュメモリをリソースとして管理し、プロセススケジューリングを最適化することが可能となり、プロセッサの実効性能を向上させることが可能となる。プロセッサの実効性能の向上のためには、キャッシュメモリの高速動作が必要である。データがキャッシュメモリ内のいずれかのラインに存在しているか否かを高速検索するため、各キャッシュセット以下、単にセットと略記を構成するキャッシュブロックは、有効か否かを示す有効フラグ、タグ、及びデータから構成されている。キャッシュブロックのサイズは例えば、有効フラグが1ビット、タグが15ビット、データが128バイトである。ここで、キャッシュセットとは、分割されたキャッシュメモリの領域をいい、各キャッシュセットは複数のキャッシュブロックを含む。一方、プログラムによって指定されるメモリアクセスのための例えば32ビットのアドレスは例えば、下位から7ビットがキャッシュライン内オフセット、10ビットがインデックス、上位15ビットがタグとして使用される。アドレスに対するデータ読出しが要求されると、アドレス内のインデックスアドレスが示すセットが選択される。さらに、選択されたセット内の各キャッシュブロックに対応する形で記憶されているタグがアドレス内のタグと一致するか否かが判定され、タグが一致する場合にはキャッシュヒットが検出され、タグが一致しない場合にはキャッシュミスが検出される。このとき、セット内に複数ウェイのキャッシュブロックデータとタグの組を持てば、同じインデックス値を有するエントリでも上位アドレス値タグ値が異なる複数のデータを格納することが可能となる。このようなキャッシュメモリのデータ格納方式はセットアソシアティブ方式と呼ばれる。メモリのアドレス空間より小さい空間となっているキャッシュのアドレス空間をセット集合に分割し、例えば要求アドレスをそのセットの数で割った余りの数をインデックスとすればセットの数はインデックス数に対応する。各セットインデックスは複数のブロックを含むが、インデックスの指定によって同時に出力されるブロック数がウェイ数である。1ラインがn個のタグにより構成されるn個のブロックを同時に出力する場合、nウエイセットアソシアティブ方式と呼ぶ。書き込まれるデータのサイズがインデックスで指定可能なアドレスの範囲よりも大きい場合に、複数のデータにおいてアドレスの一部分であるインデックスの値が一致し、それらのデータがキャッシュラインを奪い合う競合が発生する可能性がある。このような場合であっても、セットアソシアティブ方式のキャッシュメモリにおいては、インデックスが同じラインが指定されたとしても、キャッシュラインの競合を発生することなく複数のウェイからキャッシュブロックを選択できる。例えば4ウェイ構成のキャッシュメモリでは、同じインデックスを持つ最大で4つまでのデータに対応することができる。指定されたラインのどのウェイのキャッシュブロックにおいてもタグの一致が検出されなかった、またはタグの一致が検出されたキャッシュブロックの有効フラグが無効を示していたら、キャッシュミスとなり、メインメモリ主記憶装置からアクセス対象のデータが読み出される。キャッシュミスの発生時には、指定されたセット上から未使用のウェイが選択されて、そのウェイのキャッシュブロックにメインメモリから読み出されたデータが新たに保持される。これにより、保持されたデータが次回アクセス時にキャッシュヒットし、メインメモリへのアクセスが不要となるため、高速なアクセスが実行される。キャッシュミス時にどのウェイも使用中の場合には、例えばLRULeastRecentlyUsedと呼ばれるアルゴリズムによって、使用中のウェイから1つが選択されて、そのウェイのキャッシュブロックのデータが置換される。LRUアルゴリズムでは、使われてから最も長い時間が経っているキャッシュブロックのデータがメインメモリに追い出されるとともに、メインメモリから読み出されたデータに置換される。セットアソシアティブ方式のキャッシュメモリは以上のような構成を有す。以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、キャッシュメモリの実施形態のブロック図である。本実施形態によるキャッシュメモリ101は、例えば4ウェイまたは8ウェイのセットアソシアティブ方式のキャッシュメモリである。キャッシュメモリ101は、データを1からnの複数行からなるセット103、および各セット103に属するキャッシュブロック102の単位で管理される。例えば、n=1024である。図1の実施形態においては、各セット103を構成するキャッシュブロック102は、有効フラグ例えば1ビット、タグ例えば15ビット、データ例えば128バイトに加えて、物理プロセスID以下、PPIDと称するを有する。PPIDは、オペレーティングシステムが管理するプロセスID以下、PIDと称するを、後述するプロセスIDマップユニットによって変換して得られるプロセス識別情報である。PPIDは、例えば2ビットのデータであり、例えば0~3の4つのPPID値を識別することができる。PPIDを記憶することで、各キャッシュブロック102がどのプロセスに割り当てられているかを区別することができる。キャッシュメモリ101のデータサイズ定義:は、キャッシュブロック102のデータサイズ×キャッシュインデックス数×キャッシュウェイ数で計算され、例えば、1024バイトを1キロバイトとして、4ウェイのキャッシュメモリ101の場合、128バイト×1024インデックス×4ウェイ÷1024=512キロバイトである。一方、プログラムによって指定されるメモリアクセスのためのアドレス107は、例えば32ビットで指定され、下位から7ビットがキャッシュライン内オフセット、10ビットがインデックス、上位15ビットがタグとして使用される。また、本実施形態では、プログラムを実行する場合にオペレーティングシステムから指定されるPIDを、プロセスIDマップユニットによって変換して得られるPPIDが、キャッシュメモリ101に与えられる。以上の構成により、アドレス107に対するデータの読み出し又は書き込みのアクセスが指定されると、アドレス107内の10ビットのインデックスにより、セット103内の1~nのキャッシュブロックのうちの1つが指定される。その結果、1~4の各キャッシュウェイ104から、セット103上の各キャッシュブロック102iのタグ値が読み出され、それぞれ1~4のコンパレータ106に入力する。1~4のコンパレータ106は、読み出された各キャッシュブロック102i内のタグ値と、指定されたアドレス107内のタグ値との一致/不一致を検出する。この結果、1~4のうちタグ値の一致が検出されたコンパレータ106において読み出されているキャッシュブロック102iがキャッシュヒットとなり、そのキャッシュブロック102iに対してデータが読み書きされる。どのコンパレータ106でもタグ値の一致が検出されなかった、又はタグ値の一致が検出されたキャッシュブロック102iの有効フラグが無効を示していたら、キャッシュミスとなり、メインメモリ上のアドレスがアクセスされる。キャッシュミスの発生時には、指定されたライン上から選択された未使用のウェイのキャッシュブロックにデータが新たに保持される。これにより、次回アクセス時にキャッシュヒットとなり、メインメモリへのアクセスが不要となるため、高速なアクセスが実行される。キャッシュミス時にどのウェイも使用中の場合には、本実施形態では、以下に示されるような追い出し制御が実施される。まず、本実施形態では、各セット103のキャッシュブロック102毎にPPIDが記憶されるとともに、1からnのインデックス値毎に、各PPID値例えば1~4に対するMAXWAY数最大ウェイ数105が記憶される。或るインデックス値における或るPPID値に対応するMAXWAY数105は、そのインデックス値において記憶可能なそのPPID値を有するキャッシュブロック102の最大数を示す。本実施形態では、各インデックス値毎に、各PPID値のMAXWAY数105が守られるように、追い出し制御が実施される。各PPID値毎のMAXWAY数105の割合は、オペレーティングシステムOSが定めたPPID値毎のキャッシュブロック数に基づいて決定される。この場合、キャッシュメモリ101中でのPPID値間のサイズ割当て、すなわち各PPIDが使用できるキャッシュメモリの領域のサイズを変更する場合には、各インデックス値へのアクセス発生時に、そのインデックス値の各PPID値毎のMAXWAY数105を順次変更する。キャッシュメモリ101を単純にPPID値によって分割すると、分割量を変更する場合にキャッシュメモリ101内の全キャッシュブロック102のPPID情報を書き換えなくてはいけないので更新オーバヘッドが大きくなる。これに対して、本実施形態では、一時期に全キャッシュブロック102の書換えを行わなくても、インデックス値単位で動的にPPID間のサイズ割当ての変更が可能となるため、情報の更新を最小限に抑えることにより、低オーバヘッドで分割量の変更を行うことが可能となる。図2は、OSが保有する、OSが各PPID値に与える最大キャッシュブロック数のテーブルのデータ構成例を示す図である。PPID値がP1,P2,P3のとき、最大キャッシュブロック数は例えば、それぞれ642111である。さらに図3は、図2に示されるテーブル内容に従って本実施形態において実施されるキャッシュメモリ101の分割例を示す図である。この分割処理においては、キャッシュウェイ104の数が8ウェイである場合の例について示されている。キャッシュメモリのインデックス数は10ビットもしくは11ビットで表わされる数存在するが、ここでは説明を簡単にするため、インデックス方向には例として16個のインデックスがあるものとして説明を行なう。インデックス値毎に、PPID値図3ではP1、P2、P3毎のMAXWAY数105が保持される。そして、キャッシュメモリ101全体で、各PPID値に与えられるMAXWAY数105が、図2のテーブルで設定されたOSが各PPID値に与えるキャッシュブロック数に等しくなるように、各インデックス値毎のMAXWAY数105が設定される。指定されたインデックス値において、或るPPID値を有するキャッシュブロック102についてキャッシュミスが発生したときには、次のような動作が実行される。すなわち、そのセット103上で、そのPPID値に関して既に配分済みのキャッシュウェイ数の合計と、そのPPID値に対応して記憶されているMAXWAY数105とが比較される。配分済みのキャッシュウェイ数の合計がMAXWAY数105に満たない場合は、以下の動作が実行される。すなわち、そのインデックス値上で、他のPPID値に対して配分済みのキャッシュブロック102の中で、配分済みのキャッシュウェイ数の合計が当該PPID値に対応するMAXWAY数105を越えているキャッシュブロックの中から置換ブロックが選択される。図4は、キャッシュミス発生時のキャッシュブロックのリプレース動作を示す説明図である。キャッシュミスが発生したとき、図4に示されるように、例として、PPID値P1に4ブロック、P2に3ブロック、P3に1ブロックが割り当てられていたとする。ここで、P1についてキャッシュミスが発生したときには、P1はそのインデックス値上でのMAXWAY数105を超えておらず、一方、P2がそのインデックス値上でのMAXWAY数105を既に越えている。このため、PPID値としてP2を有するキャッシュブロック102の中からリプレース候補が選択され、図4中の矢印のブロックのデータがメインメモリから読み出されたデータに置換され、PPID値P1の要求するデータがロードされる。このように、本実施形態では、キャッシュミスのアクセスが発生したタイミングで、各PPIDに対するキャッシュサイズの割当てが動的に変更される。キャッシュメモリ101における各PPIDに対するキャッシュサイズの割当てを変更する場合は、MAXWAY数105のマップを変更するだけでよい。MAXWAY数105の指示は、キャッシュアクセス命令に付随させて行うことができる。従来技術では、キャッシュメモリ101内の全キャッシュブロック102のプロセスIDを書き換えることが必要であった。これに対して、本実施形態では、キャッシュアクセス命令に付随して随時各PPIDに対するキャッシュサイズの割当を変化させることができる。なお、全てのインデックス値について、一括して書き換えてもよい。また、同時にスケジューリングされる各プロセスが要求するウェイ数の合計が、実装されているキャッシュメモリ101のウェイ数を超えていても、ウェイの取り合いになるだけでシステム停止などの問題は発生しない。図2のテーブル例の場合、PPID値3に与えるキャッシュブロック数は11である。このため、PPID値3は、インデックス値の数図3では16インデックスの全てに対して、キャッシュブロックを割り当てることができない。このため、図3に示されるキャッシュメモリ101の分割例において、次のようなインデックス方向の割り当て変更が必要となる。すなわち例えば、インデックス方向の先頭5インデックスの領域ではPPID値P3に対するMAXWAY数105は0とされ、それ以後11インデックスの領域でのみPPID値P3に対するMAXWAY数105が1とされる。このため、PPID値3に対応するキャッシュアクセスが発生した場合、命令アドレス中のインデックスによって、先頭5インデックスの領域が指定されないようにし、常に後側11インデックスの領域が指定されるようにする必要がある。この機能として、本実施形態では、図5に示されるハッシュ機構としてのアドレスハッシュユニット501が実装される。このハッシュ機構により、指定された命令アドレスをハッシュして得られるインデックスが、禁止された領域のインデックスを生成しないようにされる。また、OSが管理するプロセスIDは、例えば16ビット以上の値を持つ。従って、16ビット以上の値で示されるプロセスIDをキャッシュメモリ101中の各キャッシュブロック102に保持すると、ハードウェア追加量が大きくなる。そこで、本実施形態では、図6に示されるように、プロセスIDマップユニット601が実装される。このプロセスIDマップユニット601は、キャッシュアクセス命令を実行しているプロセスのプロセスIDを、キャッシュメモリ101のハードウェアが取扱い可能な物理プロセスIDPPIDにマップする。PPIDは、例えば分割されたセット数を指定する2ビットの値を持てばよいため、例えば16ビット以上の値で示されるプロセスIDを保持する場合よりも、キャッシュメモリ101のハードウェア量の増大を防ぐことができる。以上のハードウェア機構により、OSは、プロセッサをプロセス間の共有資源として時分割でスケジューリングして使用するのと同様に、キャッシュメモリ101をプロセス間の共有資源としてサイズと時間で自由にスケジューリング可能となる。例えば、図2のテーブル例のように各PPID値にキャッシュブロック数を割り当てた場合には、下記のようにキャッシュブロック数と当該キャッシュブロック数の使用期間を乗算した値が大きくなれば、優先度を下げる、もしくはキャッシュ割当てブロック数を減らすといったスケジューリングを行うことができる。P1:64×1000マイクロ秒64000→例優先度を下げるP2:21×500マイクロ秒10500P4:11×2000マイクロ秒22000以上のように、本実施形態では、キャッシュメモリ領域をキャッシュブロック単位で任意に分割することができる。従って、共有キャッシュメモリをプロセッサが有する演算器等の演算リソースと同様にリソースとして管理し、プロセススケジューリングを最適化することが可能となり、プロセッサの実効性能を向上させることが可能となる。図7および図8は、図1に示されるキャッシュメモリ101のブロック構成に対応するハードウェア構成例を示す図である。図7および図8において、図1の場合と同じ機能部分には同じ番号を付してある。図1に示されるキャッシュブロック102は、例えば、データ部キャッシュデータ部とタグ部キャッシュタグ部が別々のRAMRandomAccessMemoryによって実装される。図7および図8の実装例では、キャッシュタグ部701において、各セット103を構成するキャッシュブロック102のタグ情報702としては、有効フラグ1ビット、タグ15ビット、PPID2ビットが記憶される。また、各インデックス値毎の各PPID値に対するMAXWAY数105も、キャッシュタグ部701内に保持される。なお、タグ情報702とMAXWAY数105は、さらに別々のRAMに記憶されてもよい。図7において、メモリアクセス要求によりキャッシュアクセスが発生すると、1~4の各キャッシュウェイ104から、指定されたインデックス値上の各キャッシュブロック102iのタグ値が読み出され、1~4のコンパレータ106に入力する。この結果、図1で説明したように、1~4のコンパレータ106のうち、要求元タグ値との一致を検出したコンパレータ106がタグ値を比較したキャッシュブロック102iが、キャッシュヒットしたということになる。そして、キャッシュヒットが検出されたキャッシュブロック102iに対してキャッシュデータ部後述する図18の1804を参照上のデータが読み書きされる。一方、図8において、メモリアクセス要求によりキャッシュアクセスが発生すると、1~4の各キャッシュウェイ104から、指定されたインデックス値上の各キャッシュブロック102iのPPID値が読み出され、1~4のコンパレータ801に入力する。1~4のコンパレータ801は、読み出された各キャッシュブロック102i内のPPID値と、要求元PPIDの値との一致/不一致を検出する。要求元PPIDは、キャッシュアクセス命令を実行しているプロセスのプロセスIDをプロセスIDマップユニット601図6で変換して得られる値である。この結果、キャッシュブロック102iのPPID値が要求元PPIDの値と一致するウェイのコンパレータ801の出力は例えば1、一致しないウェイのコンパレータ801の出力は例えば0となる。従って、1~4のコンパレータ801は、キャッシュブロック102iのPPID値が要求元PPIDの値と一致するウェイを示すビットマップを出力することになる。本実施形態では、このビットマップに含まれる1の数を数え上げることにより、キャッシュミスが発生したインデックス値上で、キャッシュミスを発生させたPPID値に関して既に配分済みのキャッシュウェイ数の合計を算出することができる。そして、前述したように、そのインデックス値上で、キャッシュミスを発生させたPPID値に関して既に配分済みのキャッシュウェイ数の合計と、そのPPID値に対応して記憶されているMAXWAY数105とが比較される。MAXWAY数105としては、図7または図8に示されるように、各インデックス毎に、図2または図3に示される各PPID値P1,P2,P3に対応する値が、キャッシュタグ部701に記憶されている。図2,図3には示していないが、P4についても同様である。そして、上記P1,P2,P3,P4などに対応するMAXWAY数105のうち、要求元PPIDに対応するMAXWAY数が、配分済みのキャッシュウェイ数の合計との比較処理の対象とされる。そして、配分済みのキャッシュウェイ数の合計がMAXWAY数105に満たない場合は、そのインデックス値上で、他のPPID値に対して配分済みのキャッシュブロック102の中で当該PPID値に対応するMAXWAY数105を越えているものの中から置換ブロックが選択されることになる。1~4のコンパレータ801が出力するビットマップに対して置換ブロックを決定するための置換ウェイ制御回路のハードウェア構成については、図11で後述する。図9は、OSが各PPID値に与えるキャッシュブロック数のテーブル図2に基づいて、各インデックス値毎に各PPID値に対するMAXWAY数105図3を決定する処理を示す動作フローチャートである。この処理は例えば、図7、図8を含むキャッシュシステムを制御するプロセッサ例えば後述するCPUコア1802が実行するOSの処理の一部である。まず、図2のテーブル構成が参照され、最初のプロセスに割り当てるブロック数を、1ウェイあたりのインデックス方向のブロック数で除算した値をCとするステップS901。すなわち、Cは、キャッシュメモリ全体で当該プロセスに割り当てられるウェイ数である。次に、当該プロセスに割り当てるブロック数を1ウェイあたりのブロック数で割った余りの値をRとするステップS902。例えば図2の最初のPPID値P1のキャッシュブロック数は64である。また、図3において、1ウェイあたりのインデックス方向のブロック数は16ブロックである。従って、C=64/16=4、その除算の余りは0であるからR=0となる。次に、すべてのインデックスについてMAXWAY数=Cを設定するステップS903。上述のPPID値P1の例では、MAXWAY数105=4が設定される。次に、初期値0から始まって前回のRの値を順次累算することで、R個分のMAXWAY数の増加処理を行う開始位置MAXWAY数増加開始位置を更新するステップS904。続いて、MAXWAY数増加開始位置からR個のインデックス分だけ、MAXWAY数105を1ずつ増加するステップS905。上述のPPID値P1の例では、R=0であるため、ステップS905の増加処理は実行されず、また、MAXWAY数増加開始位置は、初期値0のままである。次に、C=0であるか否かを判定するステップS904。C=0でなくステップS904の判定がNOならば、ステップS908に移行する。この結果、PPID値P1に関するMAXWAY数105は、図3に示されるように、すべてのインデックス値に対して4となる。ステップS904の判定の後、図2のテーブル構成例に対応するデータ構成を参照して、次のプロセスがあるか否かが判定されるステップS908。次のプロセスがありステップS908の判定がYESならば、ステップS901からの処理を繰り返す。図2のテーブル構成例において、PPID値P1の次にまだPPID値P2がある。このため、ステップS901、S902が再び実行される。図2のPPID値P2のキャッシュブロック数は21であるため、C=21/16=1、その除算の余りは5であるからR=5となる。さらに、ステップS903が実行される。PPID値P2の例では、MAXWAY数105=1が設定される。次に、ステップS904およびS905が実行される。PPID値P2の例では、まず、MAXWAY数増加開始位置は、前記アクセスのP1におけるR=0を使って、初期値0R=0となる。そして、今回のR=5であるため、MAXWAY数増加開始位置=0からR=5個分だけMAXWAY数105が1される。この結果、PPID値P2に関するMAXWAY数105は、図3に示されるように、最初の5インデックス値に対して2、残りの11インデックス値に対して1となる。ステップS905の処理の後、ステップS906の判定がNOとなって、ステップS908が判定される。図2のテーブル構成例において、PPID値P2の次にまだPPID値P3がある。このため、ステップS908の判定がYESとなり、ステップS901、S902が再び実行される。図2のPPID値P3のキャッシュブロック数は11であるため、C=11/16=0、その除算の余りは11であるからR=11となる。さらに、ステップS903が実行される。PPID値P3の例では、MAXWAY数105=0が設定される。次に、ステップS904およびS905が実行される。PPID値P3の例では、まず、MAXWAY数増加開始位置は、前記アクセスのP2におけるR=5が累算されて5となる。そして、今回のR=11であるため、MAXWAY数増加開始位置=5からR=11個分だけMAXWAY数105が1される。この結果、PPID値P3に関するMAXWAY数105は、図3に示されるように、最初の5インデックス値に対して0、残りの11インデックス値に対して1となる。次に、C=0であるからステップS906の判定がYESとなって、ステップS907が実行される。ここでは、PPID値P3について、図5のアドレスハッシュユニット501を動作させるためのハッシュ有効化レジスタ後述する図13の1302のP3の行を参照をセットする。ステップS907の処理の後、図2のテーブル構成例において、PPID値P3の次にはもうPPID値がない。このため、ステップS908の判定がNOとなって、図9のフローチャートによるMAXWAY数105の決定処理を終了する。なお、PPID値P4がある場合には、さらにP4についても同様の処理が繰り返される。以上説明したフローチャートにより、OSが各PPID値に与えるキャッシュブロック数のテーブル図2に基づき、各インデックス値毎に各PPID値に対するMAXWAY数105図3を適切に決定可能となる。図10は、図9のフローチャートの処理をプログラム処理として実行した場合のプログラム擬似コードである。各プログラムステップの左には、図9の対応する処理のステップ番号を付してある。まず、各変数NPNBCBROが以下のように定義される。NPNumberofProcessesプロセス数NBNumberofBlocksperway1ウェイあたりのブロック数Cpプロセスpに割り当てるウェイ数Bpプロセスpに割り当てるブロック数Rpプロセスpにおいて1ウェイ分に満たないブロック数OpMAXWAY数増加開始位置まず、図2のテーブル構成から参照される各プロセスpについて、プロセスpに割り当てるブロック数Bpを、1ウェイあたりのインデックス方向のブロック数で除算することにより、プロセスpに割り当てるウェイ数Cpを算出するステップS901。次に、プロセスpに割り当てるブロック数Bpを、1ウェイあたりのインデックス方向のブロック数で除算した余りとして、プロセスpにおいて1ウェイ分に満たないブロック数Rpを算出するステップS902。次に、MAXWAY数増加開始位置OpsとするステップS904。また、ssRpとして更新するステップS905。次に、プロセスpについて、Cp0であるならばステップS906、setreghashval関数を呼び出し、図5のアドレスハッシュユニット501を動作させるためのハッシュ有効化レジスタ後述する図13の1302を参照をセットするステップS907。以上の動作が図2のテーブル構成から参照される全プロセスについて実行される。この結果、各プロセスp毎に、プロセスpに割り当てるウェイ数Cp、プロセスpにおいて1ウェイ分に満たないブロック数Rp、およびMAXWAY数増加開始位置Opが算出される。これらの値を使って、まず、各プロセスp毎に、キャッシュタグ部701内のすべてのインデックスについて、MAXWAY数=Cpを設定するSTORE命令後述する図12参照が実行される。次に、各プロセスp毎に、キャッシュタグ部701内のMAXWAY数増加開始位置からRp個のインデックス分だけ、MAXWAY数=Cp1を設定するSTORE命令後述する図12参照が実行される。以上のプログラム処理により、図9のフローチャートに対応するMAXWAY数105の決定処理が実行される。図11は、図8の1~4のコンパレータ801が出力するビットマップに対して置換ブロックを決定するための置換ウェイ制御回路のハードウェア構成例を示す図である。置換ウェイ制御回路は、ビット数え上げ器1101と置換ウェイ候補決定回路1102と置換ウェイマスク生成回路1103とから構成される。PPIDマッチしたビットマスク1108は、図8の1~4のコンパレータ801の出力である。また、MAXWAY数105は、キャッシュタグ部701図8参照において、現在のキャッシュアクセスのインデクス値に対応して読み出される各PPID値に対応するMAXWAY数105である。まず、ビット数え上げ器1101は、ビットマスク1108のビットのうち1となっているビットを数え上げる。この結果、現在のキャッシュアクセスを発生させたPIDに対応するPPID要求元PPIDに現在割り当てられているキャッシュウェイ数の合計が算出される。次に、選択回路1104が、各PPID値に対応するMAXWAY数105のうち、要求元PPIDに対応するMAXWAY数105を選択して出力する。比較器1105は、ビット数え上げ器1101が出力する要求元PPIDに現在割り当てられているキャッシュウェイ数と、選択回路1104が出力する要求元PPIDに対応するMAXWAY数105とを比較する。比較器1105が比較した結果、要求元PPIDに現在割り当てられているキャッシュウェイ数の合計が要求元PPIDに対応するMAXWAY数105に満たない場合には、選択回路1107は次のように動作する。すなわち、選択回路1107は、ビットマスク1108の各ビットをインバータ1106で反転して得られるビットマスクを選択し、置換ウェイ候補を示すビットマスク1109として出力する。これにより、現在のキャッシュアクセスに対応するセット103上で、要求元PPID値以外の他のPPID値に対して配分済みのキャッシュブロック10が存在するウェイが、置換ウェイ候補とされる。一方、比較器1105が比較した結果、要求元PPIDに現在割り当てられているキャッシュウェイ数の合計が要求元PPIDに対応するMAXWAY数105に達している場合には、選択回路1107は次のように動作する。すなわち、選択回路1107は、ビットマスク1108をそのまま選択し、置換ウェイ候補を示すビットマスク1109として出力する。これにより、現在のキャッシュアクセスに対応するセット103上で、要求元PPID値に対して配分済みのキャッシュブロック10が存在するウェイが、置換ウェイ候補とされる。置換ウェイマスク生成回路1103は、置換ウェイ候補を示すビットマスク1109が示す置換ウェイ候補から、置換ウェイを選択し、置換ウェイを示す置換ウェイマスクを生成して出力する。より具体的には、ビットマスク1109が要求元PPID以外のPPIDを置換ウェイ候補として示しているときには、置換ウェイマスク生成回路1103は、次のように動作する。すなわち、置換ウェイマスク生成回路1103は、キャッシュアクセスに対応するセット103上で、他のPPID値に対し配分済みのキャッシュブロック102の中で、配分済みのキャッシュウェイ数の合計が当該PPID値に対応するMAXWAY数105を越えているキャッシュブロックが選択される。そして、選択されたキャッシュブロックのウェイに対応するビット位置のみが1となる、4ビットからなる置換ウェイマスクを生成する。ビットマスク1109が要求元PPIDを置換ウェイ候補として示しているときには、置換ウェイマスク生成回路1103は、例えばLRUアルゴリズムによって、最も長い期間アクセスなされなかったウェイから選択された置換ウェイのみが1となる4ビットからなる置換ウェイマスクを生成する。キャッシュミスしたメモリアクセス要求に対応するデータはキャッシュデータ部に、また、タグおよびPPIDはキャッシュタグ部701図7参照内の、置換ウェイマスクの4ビットのデータのうち値が1となるビット位置に対応するウェイに出力される。また、メモリアクセス要求内のインデックスが、キャッシュデータ部、キャッシュタグ部701のセット103を指定する。これにより、キャッシュデータ部およびキャッシュタグ部701において、指定されたセット103の選択されたウェイのキャッシュブロック102に、データ、タグ、およびPPIDが書き込まれる。なお、キャッシュデータ部に書き込まれるデータは、メモリアクセス要求が読出し要求の場合には、図示しないメインメモリ上の対応するアドレスから読み出されたデータである。また、メモリアクセス要求が書込み要求の場合には、当該書込み要求に指定されている書込みデータである。図12は、各インデックス値のMAXWAY数105を更新するためのMAXWAY数更新機構を示す実施例を説明する図である。MAXWAY保持部1201には、プロセッサの命令制御部例えば後述する図18の1806からアドレスを指定してMAXWAY数105の更新値を書き込むことができる。このとき、命令制御部は、MAXWAY数105を更新するためのSTORE命令が指定する物理アドレスは、例えば、52ビットの物理アドレス空間を有するとする。上記のSTORE命令が指定する物理アドレスは、MAXWAY数保持部1201内のアドレスマップユニット1202によって、キャッシュのインデックス数に等しいアドレス空間を有するRAM1203上の該当する記憶領域をアクセス可能なアドレスとして、例えば0x00Cに変換される。すなわちアドレスマップユニット1202は例えば、指定されたアドレス0x100000000000Cから上位のアドレス情報0x1000000000を削除して、アドレスを0x00Cに変換する処理を実行する。そして、この変換されたアドレスによって指定されるRAM1203内の記憶領域、例えば0x00Cに、STORE命令によって4バイトのデータ、例えば0x04020101が書き込まれる。そして例えば、この4バイトのデータのうち、最上位の1バイト04が、図2または図3に示されるPPID=P1に対応するMAXWAY数105=4を指定する。また、次の上位1バイト02が、同じくPPID=P2に対応するMAXWAY数105=2を指定する。同様に、次の上位1バイト01が、同じくPPID=P3に対応するMAXWAY数105=1を指定する。そして、最下位の1バイト01が、図2や図3では図示しないが、PPID=P4に対応するMAXWAY数105=1を指定する。この1つのSTORE命令によって書き込まれる4バイト1組のデータが、図7または図8に示される1つのインデックス値上のP1~P4に対応する1組のMAXWAY数105となる。このように、RAM1203上のデータは、4バイトを1組として管理されるため、RAM1203を更新するために命令制御部によって指定される物理アドレスは、4バイトおきに指定されることになる。例えば、0x1000000000000の次は0x1000000000004のごとくである。なお、図8等で前述したように、キャッシュアクセス時には、例えば、メモリアクセスのためのアドレス107内のインデックスの値によって、キャッシュタグ部701が、キャッシュメモリ101に含まれるRAM1203上の該当する記憶領域にアクセスする。前述したように、キャッシュメモリ101のPPID値毎の容量割当てを変更する場合は、MAXWAY数105を保持するキャッシュタグ部701内のRAM1203内での各インデックス値毎のMAXWAY数105の割当てを変更すればよい。この場合に、上述のSTORE命令によるMAXWAY数105の更新指示は、キャッシュアクセス命令に付随させて行ってもよいし、全インデックス値について一括して実行されてもよい。以上説明した図12のMAXWAY数更新処理は、例えば後述する図18に示されるキャッシュシステム1801内のキャッシュメモリ制御部1805が、CPUコア1802内の命令制御部1806からの指示に従って実行する。図13は、図5のアドレスハッシュユニット501のハードウェア構成例を示す図である。ハッシュ有効化レジスタ1302は、PPID値毎に、有効ビット、インデックス数、およびオフセットインデックス数を記憶する。有効ビットとしては、例えば、ハッシュ処理を実行する場合に有効を示す値1を、実行しない場合に無効を示す値0がセットされる。インデックス数としては、1ウェイ分に満たない分のインデックス増加処理を行うブロック数Rpがセットされる。オフセットインデックス数としては、上記増加処理の実行を開始するインデックス位置=MAXWAY数増加開始位置O[p]がセットされる。図9及び図10で前述したように、プロセスpについて、C[p]=0であるならば、setreghashval関数が呼び出されて、ハッシュ有効化レジスタ1302へのセットが実行される。次に、図13において、選択回路1303は、ハッシュ有効化レジスタ1302上の要求元PPID値と一致するPPID値に対応するエントリから、有効ビット、インデックス数、およびオフセットインデックス数を読み出して、モジュロ演算器1301に与える。要求元PPID値は、キャッシュアクセス命令を実行しているプロセスのプロセスIDを、プロセスIDマップユニット601図6で変換して得られる値である。モジュロ演算器1301には、選択回路1303から要求元PPIDに対応する有効ビット、インデックス数、オフセットインデックス数が入力するほか、キャッシュアクセス命令によって指定されるアドレス107の上位ビット部分が入力する。モジュロ演算器1301は、有効ビットがセットされているアドレス107の上位ビット部分をインデックス数で割った余りにオフセットインデックス数を加えた値を計算する。計算結果は、キャッシュタグ部701図7およびキャッシュデータ部後述する図18の1804を参照に、新たなインデックスとして出力される。モジュロ演算器1301は、もし有効ビットがセットされていなければ、アドレス107のインデックスをそのまま、キャッシュタグ部701図7およびキャッシュデータ部後述する図18の1804を参照に、新たなインデックスとして出力する。以上の構成を有するアドレスハッシュユニット501の具体的な動作について、図14および図15の動作説明図と、前述した図2、図3を用いて説明する。ここで、図7および図8に示されるキャッシュタグ部701のハードウェア構成においては、キャッシュタグ部701の具体的なサイズは例えば次のようになる。すなわち、プログラムで指定される32ビットのアドレス107において、下位7ビットでキャッシュライン内オフセットが指定され、その上位10ビットでインデックス、さらにその上位15ビットでタグが指定される例が示されている。従って、この例の場合は、10ビットのインデックスによって指定されるセット103のライン数nは2の10乗=1024であるが、キャッシュタグ部701のサイズはこれに限定されるものではなく、システムごとに適切なその他のサイズ値を採用することができる。システムごとに適切なその他のサイズ値を採用する場合には、アドレス107も適切なビット幅を採用できる。図14および図15では、理解を容易にするために、アドレス107が16ビット、キャッシュライン内オフセットが7ビット、インデックスが4ビット、タグが5ビットである場合の例について説明する。この例の場合、セット103のライン数nは、図3のインデックス方向の行数として示されるように、2の4乗=16となる。図13のハッシュ有効化レジスタ1302において、図3に示されているPPID値がP1,P2,P3と、これらP1,P2,P3以外のP-OTHERSの場合に、C=0となるケースは、PPID値=P3のときで、全ブロック数はインデックス方向のインデックス数16に満たない。このためP3のインデックス数としては、1ウェイ分に満たない分のブロック数RP3=5図10参照がセットされる。オフセットインデックス数としては、上記増加処理の実行を開始するインデックス位置=MAXWAY数増加開始位置O[p]がセットされる。例えば図3において、P3のケースの場合、RP2=5、すなわちC=0となる直前のプロセスP2において図9のS902で計算された当該プロセスP2に割り当るブロック数15を1ウェイあたりのブロック数10で割った余りRP2=5に等しい値5が、O[P3]としてセットされる。図9及び図10で前述したように、プロセスpについて、C[p]=0であるならば、setreghashval関数が呼び出されて、ハッシュ有効化レジスタ1302へのセットが実行される。すなわち、PPID値=P3について、C[P3]=0となるため、ハッシュ有効化レジスタ1302のP3に対応するエントリに、以下の値がセットされる。すなわち、図14に示されるように、有効ビット=1、インデックス数=R[P3]=11、オフセットインデックス数=RP2=5がセットされる。その他のPPID値P1,P2等については、C[p]=0とならないため、ハッシュ有効化レジスタ1302の各PPID値P1,P2に対応するエントリの内容は、図14に示されるように、共に各値が0のクリア状態となる。ここで、図14に示されるように、要求元PPID値として3が入力したとする。この結果、選択回路1303が、ハッシュ有効化レジスタ1302上の要求元PPID値と一致するPPID値=P3に対応するエントリから、有効ビット=1、インデックス数=11、およびオフセットインデックス数=5を読み出す。そして、選択回路1303は、それらの数値データをモジュロ演算器1301に与える。モジュロ演算器1301は、上述のようにもし有効ビットが1にセットされていれば、アドレス107のタグインデックスの上位9ビットのビット値をインデックス数=11で割った余りにオフセットインデックス数=5を加算し、その加算結果を新たなインデックスとして出力する。ここで例えば、要求元PPID値=3で、アドレス107として、下記のアドレスがそれぞれ入力した場合を考える。0xD1520xD1D20xD2520xD2D20xD3520xD3D20xD4520xD4D20xD5520xD5D20xD6520xD6D20xD752図14では、アドレス107として0xD552が入力された場合が示されている。これらの場合、上位9ビットのビット値および各々に対応する10進値は、それぞれ以下のようになる。110100010=418110100011=419110100100=420110100101=421110100110=422110100111=423110101000=424110101001=425110101010=426110101011=427110101100=428110101101=429110101110=430図14では、アドレス1070xD552における上位ビット9ビットが、110101010で、10進表現は426であることが示されている。モジュロ演算器1301は、上記各上位9ビット値に対して、それぞれ以下のようにして、インデックス数=11で割った余りにオフセットインデックス数=5を加算し、その加算結果を新たなインデックスとして出力する。418÷11=38余り0、余り0オフセットインデックス数5=5419÷11=38余り1、余り1オフセットインデックス数5=6420÷11=38余り2、余り2オフセットインデックス数5=7421÷11=38余り3、余り3オフセットインデックス数5=8422÷11=38余り4、余り4オフセットインデックス数5=9423÷11=38余り5、余り5オフセットインデックス数5=10424÷11=38余り6、余り6オフセットインデックス数5=11425÷11=38余り7、余り7オフセットインデックス数5=12426÷11=38余り8、余り8オフセットインデックス数5=13427÷11=38余り9、余り9オフセットインデックス数5=14428÷11=38余り10、余り10オフセットインデックス数5=15429÷11=39余り0、余り0オフセットインデックス数5=5430÷11=39余り1、余り1オフセットインデックス数5=6図14では、上位ビット9ビット値=11010101010進値=426をインデックス数11で割った余りが8であり、その余りにオフセットインデックス数5を加算することにより、新たなインデックスの値13が得られることが示されている。以上の具体例により、図3のP3の11個のブロックを順にアクセスすることができることがわかる。すなわち、新たなインデックスの値は、0~15までの全インデックス範囲のうち、5から15までの範囲P3に収まる。すなわち、PPID値P3に対応する命令が実行されるときに、アドレス107のインデックスは、図3のインデックス方向の全域で指定される可能性がある。これに対して、モジュロ演算器1301は、インデックスの値が5から15までの11個のインデックス範囲のみが指定されるように、マッピングを行うことができる。一方、図15に示されるように、要求元PPID値として1または2が入力したとする。この結果、選択回路1303が、ハッシュ有効化レジスタ1302上の要求元PPID値と一致するPPID値=P1またはP2に対応するエントリから、有効ビット=0、インデックス数=0、およびオフセットインデックス数=0を読み出す。そして、選択回路1303は、それらの数値データをモジュロ演算器1301に与える。モジュロ演算器1301は、上述のようにもし有効ビットが1にセットされていなければ、以下のように動作する。すなわち、アドレス107中の4ビットのインデックスをそのまま、キャッシュタグ部701図7およびキャッシュデータ部後述する図16の1604を参照に、新たなインデックスとして出力する。ここで例えば、要求元PPID値=1で、アドレス107として、前述と同様の0xD152から0xD752までのアドレスが入力したとする。図15では、アドレス107として0xD552が入力された場合が示されている。これらの場合、アドレス107中のインデックスおよび各々に対応する10進値は、それぞれ以下のようになる。0010=20011=30100=40101=50110=60111=71000=81001=91010=101011=111100=121101=131110=14モジュロ演算器1301は、上記各4ビットのインデックスをそのまま、新たなインデックスとして出力する。図15では、アドレス107中のインデックス101010進数で10がそのまま、新たなインデックスとして出力されることが示されている。以上の具体例により、図3のPPID値=P1またはP2については、0~15までの全インデックス範囲をインデックスとして指定できることがわかる。このようにして、或るプロセスpについて、図2のテーブルによって指定されるブロック数が1ウェイ分に満たない場合には、次のような制御が実行される。すなわち、MAXWAY数増加開始位置O[P]から、プロセスpについて割り当て可能な1ウェイ分に満たないブロック数R[p]に対応するインデックス範囲でのみインデックス指定がされるように、新たなインデックスがマッピングされる。ここで、図9または図10のステップS907によってハッシュ有効化レジスタ1302の内容を更新するときには、次のようなアドレス指定を行うことができる。すなわち、図12のMAXWAY数105の更新処理の場合と同様に、メインメモリ等へのメモリアクセス時には使用されないような特定のアドレス空間にマップされた領域を介して、ハッシュ有効化レジスタ1302に対する読み書きを実行できる。以上説明した図13のアドレスハッシュユニット501の構成により、指定された命令アドレス107のインデックスをハッシュして得られるインデックスが、禁止された領域のインデックスを生成しないように制御することが可能となる。図16は、図6のプロセスIDマップユニット601のハードウェア構成例を示す図である。プロセスIDマップユニット601は、OSが管理するPIDと、キャッシュメモリ101のハードウェアが取扱い可能な物理プロセスIDであるPPIDの変換を行う。プロセスIDマップユニット601は、変換のマップを格納するとともに検索が可能な連想メモリ1601で構成されている。なお、プロセスIDマップユニット601は、レジスタで構成されてもよい。要求元PIDの値をキーとして連想メモリ1601の検索を行い、マッチしたPPIDの値を出力する。連想メモリ1601に格納する値は、図12のMAXWAY数105の更新処理の場合と同様に、メインメモリ等へのメモリアクセス時には使用されないような特定のアドレス空間にマップされた領域を介して読み書きできる。図17は、PPID書込み機構を示す図である。図16に示されるプロセスIDマップユニット601から出力される要求元PPIDの値で、キャッシュタグ部701図7内のキャッシュブロック102の更新が行われる。このときキャッシュブロック102をアクセスするインデックスは、図13に示されるアドレスハッシュユニット501から出力された値を用いる。図18は、本実施形態のキャッシュメモリシステムを備える演算処理装置としてのプロセッサの構成例を示す図である。キャッシュシステム1801は、図7に示したキャッシュタグ部701MAXWAY数保持部1201を含む、図5および図13に示したアドレスハッシュユニット501、図6および図16に示したプロセスIDマップユニット601を備える。また、キャッシュシステム1801は、キャッシュデータを保持するキャッシュデータ部1804およびキャッシュタグ部701およびキャッシュデータ部1804へのキャッシュアクセスを制御するキャッシュメモリ制御部1805を備える。キャッシュメモリ制御部1805は、1~4のCPUコア1802内の命令制御部1806から発行されるメモリアクセス命令をデコードして、メインメモリ1803に対するアクセスかキャッシュデータ部1804へのアクセスであるかを判断する。キャッシュメモリ制御部1805は、デコードの結果、メモリアクセス命令がキャッシュデータ部1804へのアクセスである場合には、キャッシュタグ部701およびキャッシュデータ部1804に対して、メモリアクセス命令に含まれるアドレス107図1、図7等参照を発行する。このアドレス107は、アドレスハッシュユニット501で処理された後に、キャッシュタグ部701およびキャッシュデータ部1804に出力する。また、キャッシュメモリ制御部1805は、メモリアクセス命令がキャッシュデータ部1804へのアクセスである場合には、メモリアクセス命令が実行されるPIDをプロセスIDマップユニット601に出力する。プロセスIDマップユニット601は、PIDをPPIDに変換し、キャッシュタグ部701に要求元PPIDとして出力する。キャッシュメモリ制御部1805は、図11および図12に示したハードウェア機構を含み、前述した置換ウェイの制御やMAXWAY数105の更新制御等を実行する。キャッシュシステム1801においてキャッシュミスが発生した場合には、メインメモリ1803からデータが読み出されるとともに、キャッシュメモリ制御部1805内の図11のハードウェア構成によって生成される置換ウェイマスクに対応する置換ウェイのキャッシュブロック102に、そのデータが記憶される。これにより、次回アクセス時にキャッシュヒットとなり、高速なアクセスが実行される。また、キャッシュメモリ制御部1805は、命令制御部1806から、MAXWAY数105の更新を指示するSTORE命令が発行されている場合には図12参照、次のような動作を実行する。すなわち、キャッシュメモリ制御部1805は、MAXWAY数105を保持するキャッシュタグ部701内のRAM1203図12内の、上記STORE命令で指定される物理アドレスに対して、STORE命令で指定される4バイトのデータを書き込む。これにより、該当するインデックス値上の各PPID値P1,P2,P3,P4毎のMAXWAY数105が更新される。STORE命令によるMAXWAY数105の更新指示は、命令制御部1806からの指示により、キャッシュアクセスを発生させるメモリアクセス命令によるメモリアクセスがなされた場合に付随させて行ってもよいし、全インデックス値について一括して実行されてもよい。図19は、本実施形態において、同時にスケジューリングされる各プロセスが要求するウェイ数の合計が、実装されているキャッシュメモリのウェイ数を超えている場合の動作例を示す説明図である。この動作例において、まず、PPID値P1、PPID値P2、PPID値P3の各PPID値に対するMAXウェイ数の設定値を例えば、5、5、3とする。まず、PPID値P3のプロセスに含まれるLOAD命令実行によりキャッシュミスが発生するステップS1701。P3のブロック数=1は、P3のMAXWAY数=3よりも小さいため、他のPPID値のウェイ、図19の例ではPPID値P2のウェイを置換する。さらに、PPID値P3のプロセスに含まれるLOAD命令実行によりキャッシュミスが発生するステップS1702。P3のブロック数=2は、P3のMAXWAY数=3よりも小さいため、さらに他のPPID値のウェイ、図19の例ではPPID値P1のウェイを置換する。このようにして、PPID値P3に割り当てられているブロック数は、最初1ブロックしかないが、PPID値P3のプロセスに含まれるメモリアクセス要求があるとMAXWAY数=3まで他のPPIDのブロックを置換することにより増加する。さらに、PPID値P3のプロセスに含まれるLOAD命令実行によりキャッシュミスが発生したものとするステップS1703。P3のブロック数=3は、P3のMAXWAY数=3以下であるため、自PPIDであるPPID値P3に対応するウェイを置換する。このように、MAXWAY数以上のPPID値P3の要求があっても、PPID値P3に対するキャッシュブロック数はMAXWAY数以上には増えない。次に、PPID値P2のプロセスに含まれるLOAD命令実行によりキャッシュミスが発生したものとするステップS1704。P2のブロック数=1は、P2のMAXWAY数=5よりも小さいため、PPID値P1のウェイを置換する。その後、PPID値P1のプロセスに含まれるメモリアクセス要求があり、同様にしてMAXWAY数=5まで増加するステップS1705、S1706。このように、MAXWAY数に近づくように各PPID値に対応するブロック数が変化することで、実装されているウェイ数を超えるMAXWAY数を設定した場合でも問題なくキャッシュ分割を行うことが可能となる。図20は、時間と優先度でキャッシュブロックをスケジュールする動作を示すフローチャートである。このフローチャートの処理は、一定時間例えば10マイクロ秒毎に実行される。まず、キャッシュブロックを割り当てている各プロセス毎に、キャッシュブロック割当て数blocksとプロセス割当て時間usの積Aを計算するステップS2001。次に、A>Tとなるプロセスが存在するか否かが判定されるステップS2002。ここで、Tは、システム依存の定数しきい値とする。A>Tとなるプロセスが存在しステップS2002の判定がYESならば、プロセス実行優先度が下げられてステップS2003、今回の処理を終了する。A>Tとなるプロセスが存在せずステップS2002の判定がNOならば、何もせずに今回の処理を終了する。上述した実施形態において、MAXWAY数は、キャッシュタグ部内に設けるようにしたが、OSの管理下で制御されるような構成が採用されてもよい。"