(57)【要約】【課題】ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えること。【解決手段】ベクトル計算機システムは、複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、そのキャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、を備える。ベクトルプロセッサがベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいてアロケート制御信号を生成する。キャッシュメモリは、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、各々のストアリクエストを処理する。【選択図】図２
2010086496.tif 000002
【特許請求の範囲】
【請求項１】
複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、
前記ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、
前記キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と
を備え、
前記ベクトルプロセッサが前記ベクトルストア命令を発行した時、前記ライトアロケート決定部は、前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々に関して前記アロケート制御信号を生成し、
前記キャッシュメモリは、前記ライトアロケート方式と前記非ライトアロケート方式のうち前記アロケート制御信号で指定される一方に従って、前記各々のストアリクエストを処理する
ベクトル計算機システム。
【請求項２】
請求項１に記載のベクトル計算機システムであって、
前記メインメモリの１ブロックは、前記キャッシュメモリの１ラインに対応付けられ、
前記書き込みパターンは、
前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第１パターンと、
前記メインメモリのあるブロックに対して１回だけストアリクエストが発生する第２パターンと、
前記第１パターン及び前記第２パターン以外の第３パターンと
のうち少なくとも１つを含み、
前記第１パターンあるいは前記第２パターンの場合、前記ライトアロケート決定部は、前記非ライトアロケート方式を指定する前記アロケート制御信号を生成し、
前記第３パターンの場合、前記ライトアロケート決定部は、前記ライトアロケート方式を指定する前記アロケート制御信号を生成する
ベクトル計算機システム。
【請求項３】
請求項２に記載のベクトル計算機システムであって、
前記複数のストアリクエストの対象データは、前記メインメモリ上で連続的に位置し、
前記書き込みパターンは、少なくとも前記第１パターンを含む
ベクトル計算機システム。
【請求項４】
請求項２に記載のベクトル計算機システムであって、
前記複数のストアリクエストの対象データは、前記メインメモリ上で離散的に位置し、
前記書き込みパターンは、前記第２パターンと前記第３パターンのうち少なくとも一方を含む
ベクトル計算機システム。
【請求項５】
請求項２乃至４のいずれか一項に記載のベクトル計算機システムであって、
前記ベクトルプロセッサは、１ブロック分のデータと共に、前記１ブロック分のデータに含まれる各要素が書き込み対象か否かを示すライトイネーブル信号を出力し、
前記ライトアロケート決定部は、前記ライトイネーブル信号を前記書き込みパターンとして受け取り、前記ライトイネーブル信号が前記第１パターン、前記第２パターン及び前記第３パターンのいずれに相当するか判定する
ベクトル計算機システム。
【請求項６】
請求項２乃至４のいずれか一項に記載のベクトル計算機システムであって、
前記ベクトルプロセッサは、前記複数のストアリクエストに関して、ブロック毎に反転する同一ブロックフラグを出力し、
前記ライトアロケート決定部は、前記同一ブロックフラグを前記書き込みパターンとして受け取り、前記同一ブロックフラグが前記第１パターン、前記第２パターン及び前記第３パターンのいずれに相当するか判定する
ベクトル計算機システム。
【請求項７】
ベクトルプロセッサ用のライトバック方式のキャッシュメモリであって、
前記キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、
前記ライトアロケート方式と前記非ライトアロケート方式のうち前記アロケート制御信号で指定される一方に従って、ストアリクエストを処理する書き込みコントローラと
を備え、
前記ベクトルプロセッサが複数のストアリクエストを含むベクトルストア命令を発行した時、前記ライトアロケート決定部は、前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々に関して前記アロケート制御信号を生成する
キャッシュメモリ。
【請求項８】
請求項７に記載のキャッシュメモリであって、
メインメモリの１ブロックは、前記キャッシュメモリの１ラインに対応付けられ、
前記書き込みパターンは、
前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第１パターンと、
前記メインメモリのあるブロックに対して１回だけストアリクエストが発生する第２パターンと、
前記第１パターン及び前記第２パターン以外の第３パターンと
のうち少なくとも１つを含み、
前記第１パターンあるいは前記第２パターンの場合、前記ライトアロケート決定部は、前記非ライトアロケート方式を指定する前記アロケート制御信号を生成し、
前記第３パターンの場合、前記ライトアロケート決定部は、前記ライトアロケート方式を指定する前記アロケート制御信号を生成する
キャッシュメモリ。
【請求項９】
ベクトルプロセッサとライトバック方式のキャッシュメモリとを備えるベクトル計算機システムの動作方法であって、
前記ベクトルプロセッサが、複数のストアリクエストを含むベクトルストア命令を発行するステップと、
前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々をライトアロケート方式と非ライトアロケート方式のどちらで処理するかを指定するステップと、
前記キャッシュメモリが、前記ライトアロケート方式と前記非ライトアロケート方式のうち前記指定された一方に従って、前記各々のストアリクエストを処理するステップと
を含む
ベクトル計算機システムの動作方法。
【請求項１０】
請求項９に記載のベクトル計算機システムの動作方法であって、
メインメモリの１ブロックは、前記キャッシュメモリの１ラインに対応付けられ、
前記書き込みパターンは、
前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第１パターンと、
前記メインメモリのあるブロックに対して１回だけストアリクエストが発生する第２パターンと、
前記第１パターン及び前記第２パターン以外の第３パターンと
のうち少なくとも１つを含み、
前記第１パターンあるいは前記第２パターンの場合、前記非ライトアロケート方式が指定され、
前記第３パターンの場合、前記ライトアロケート方式が指定される
ベクトル計算機システムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライトバック方式のキャッシュメモリの制御技術に関する。特に、本発明は、ベクトルプロセッサ用のライトバック方式キャッシュメモリの制御技術に関する。
【背景技術】
【０００２】
計算機システムの分野において、プロセッサによるデータアクセスを高速化するために、キャッシュメモリ技術が広く用いられている。キャッシュメモリは、メインメモリよりも小規模で高速なメモリであり、プロセッサとメインメモリとの間に設けられる。キャッシュメモリは階層的に設けられる場合もあるが、以下では簡単のため、１つのキャッシュメモリと下位記憶階層としてのメインメモリだけを考える。複数のキャッシュメモリが階層的に設けられる場合であっても、同じ議論が適用され得る。
【０００３】
キャッシュメモリには、メインメモリに記憶されているデータの一部が格納される。より詳細には、キャッシュメモリには、「ライン（あるいはブロック）」と呼ばれる単位でデータが格納される。すなわち、キャッシュメモリは複数のラインを有しており、各ラインにラインサイズ分のデータが格納される。ラインサイズとは、１ライン当たりのデータサイズであり、例えば３２バイトである。メインメモリに格納されているあるデータがキャッシュメモリに転送される際は、当該データを含むラインサイズ分のブロックデータが、メインメモリからキャッシュメモリ中のあるラインにコピーされる。
【０００４】
プロセッサがデータアクセス命令を発行すると、キャッシュメモリは、アクセス対象アドレスのデータがいずれかのラインに格納されているか否かを調べる。アクセス対象アドレスのデータがいずれかのラインに格納されている場合は、以下「キャッシュヒット」と参照される。一方、アクセス対象アドレスのデータがいずれのラインにも格納されていない場合は、以下「キャッシュミス」と参照される。
【０００５】
データリード時の処理は、次の通りである。キャッシュミスの場合、データはメインメモリから読み出され、プロセッサに送られる。また、当該データを含むラインサイズ分のブロックデータが、キャッシュメモリ中のあるラインにコピーされる。一方、キャッシュヒットの場合、データは、キャッシュメモリ中の該当ラインから読み出され、プロセッサへ送られる。すなわち、メインメモリへのアクセスは発生せず、データはより高速なキャッシュメモリから読み出される。従って、データ読み出し速度が向上する。
【０００６】
データライト時の処理に関しては、図１に示されるような様々な方式が提案されている。データライト方式は、おおまかに「ライトスルー（write-through）方式」と「ライトバック方式（write-back）方式」の２つに分類される。更に、ライトバック方式は、「非ライトアロケート（no-write-allocate）方式」と「ライトアロケート（write-allocate）方式」に分類される。
【０００７】
ライトスルー方式の場合の処理は、次の通りである。キャッシュミスの場合、書き込みデータは、キャッシュメモリには書き込まれず、メインメモリにだけ書き込まれる。一方、キャッシュヒットの場合、書き込みデータは、キャッシュメモリ中の該当ラインと共に、メインメモリにも書き込まれる。従って、ライトスルー方式の場合は、データリード時にしかキャッシュメモリの恩恵が得られない。
【０００８】
ライトバック方式の場合の処理は、次の通りである。キャッシュヒットの場合、書き込みデータは、メインメモリには書き込まれず、キャッシュメモリ中の該当ラインのみに書き込まれる。従って、データ書き込み速度が向上する。尚、キャッシュメモリにのみ格納されており、メインメモリに反映されていない最新データは、どこかのタイミングでメインメモリに書き戻される。キャッシュミスの場合は、非ライトアロケート方式とライトアロケート方式とで処理が異なる。
【０００９】
非ライトアロケート方式の場合、ライトスルー方式と同じように、書き込みデータは、キャッシュメモリには書き込まれずメインメモリにだけ書き込まれる。一方、ライトアロケート方式の場合、アクセス対象アドレスのデータを含むラインサイズ分のブロックデータが、メインメモリから読み出される。読み出されたブロックデータはキャッシュメモリ中のあるラインに格納され、その後、書き込みデータが当該ラインに書き込まれる。このように、ライトアロケート方式の場合、メインメモリからキャッシュメモリにブロックデータを転送する必要があり、非ライトアロケート方式よりも時間がかかる。但し、局所性（メインメモリ上で連続するアドレスが連続的にアクセスされる傾向や、短期間に同じアドレスが繰り返しアクセスされる傾向がある）の観点から言えば、ライトアロケート方式によって、続くデータ書き込み要求時のキャッシュヒットの確率が高まることが期待される。
【００１０】
このように、ライトアロケート方式と非ライトアロケート方式は、それぞれ一長一短を有している。ライトアロケート方式と非ライトアロケート方式のいずれを採用するか決定することは、システム処理効率の観点から重要である。
【００１１】
特許文献１（特開平１１−３１２１２３号公報）によれば、ユーザが、ライトアロケート方式と非ライトアロケート方式のいずれか一方を指定可能である。具体的には、キャッシュ制御装置は、ライトアロケート方式あるいは非ライトアロケート方式を指定する情報が格納されるレジスタを有している。ユーザは、レジスタの内容を書き換えることにより、方式を指定することができる。
【００１２】
特許文献２（特開平７−１５２６５０号公報）に記載されているキャッシュ制御装置は、ライトバック方式のキャッシュメモリと、レジスタと、比較器と、制御回路とを備えている。あるデータの書き込み要求時にキャッシュミスが発生した場合、当該データを含むブロックアドレスがレジスタに格納される。その後のデータ書き込み要求の際、比較器は、レジスタに格納されているブロックアドレスと、現在アクセス対象となっているブロックアドレスとを比較する。制御回路は、比較器による比較結果に基づいて、キャッシュミス時の処理方法を決定する。具体的には、比較結果が一致の場合、制御回路はライトアロケート方式で処理を行う。一方、比較結果が不一致の場合、制御回路は非ライトアロケート方式で処理を行い、また、レジスタを更新する。すなわち、メモリ上のあるブロックに対するデータ書き込み要求時、まずは非ライトアロケート方式で処理が行われる。続くデータ書き込み要求が同じブロックに対するものである場合、その時に初めて、ライトアロケート方式によりメモリ上の当該ブロックデータがキャッシュメモリにコピーされる。同じブロックに対するデータ書き込み要求は連続すると予測されるため、３回目以降のデータ書き込み要求時にはキャッシュヒットが期待される。
【００１３】
特許文献３（特開平７−２１０４６３号公報）には、ファーストキャッシュメモリとセカンドキャッシュメモリを備えるキャッシュメモリシステムが開示されている。ストア（書き込み）命令に対するファーストキャッシュメモリでのキャッシュミス時、ライトアロケート方式に従ってセカンドキャッシュメモリからファーストキャッシュメモリへブロック転送を行うか否かは、場合による。そのブロック転送（ライトアロケート）の可否を判定するために判定部が設けられている。この判定部は、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作に対してのみブロック転送を禁止し、それ以外に対してはブロック転送を許容する。例として、１ラインが４個のキャッシュデータを含む場合を考える。命令バッファレジスタは、直列４段の命令プリフェッチキューを備える。判定部は、直列４段の命令プリフェッチキューのそれぞれが保持する情報を並列的に受け取る。更に、判定部は、それぞれの命令がストア（書き込み）かロード（読み出し）かを検出し、また、それぞれの命令のアクセス対象が同一ブロックかどうかを検出する。そして、単一ラインの全てのキャッシュデータが連続的に書き換えられるような連続ストア命令の場合、判定部はライトアロケートを禁止する。例えば、当該特許文献の図１０に示されているような「４連続ストア」の場合、判定部はライトアロケートを禁止する。一方、ストアが１回だけである「１ストア−３ロード」の場合、判定部はライトアロケートを許可する。
【００１４】
【特許文献１】特開平１１−３１２１２３号公報
【特許文献２】特開平７−１５２６５０号公報
【特許文献３】特開平７−２１０４６３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式のいずれを使用するか決定することは、システム処理効率の観点から重要である。
【００１６】
上述の関連技術では、同じブロックに対する連続的なデータ書き込み要求や、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作を検出する必要がある。しかしながら、スカラプロセッサの場合、あるデータ書き込み要求の次にアクセスされるアドレスを予測することは一般に困難である。従って、同じブロックに対する連続的なデータ書き込み要求や、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作を検出するためには、上述の関連技術に記載されているような複雑な構成及び処理が必要となる。
【００１７】
本発明の１つの目的は、ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えることにある。
【課題を解決するための手段】
【００１８】
本発明の第１の観点において、ベクトル計算機システムが提供される。そのベクトル計算機システムは、複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、そのキャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、を備える。ベクトルプロセッサがベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々に関してアロケート制御信号を生成する。キャッシュメモリは、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、各々のストアリクエストを処理する。
【００１９】
本発明の第２の観点において、ベクトルプロセッサ用のライトバック方式のキャッシュメモリが提供される。そのキャッシュメモリは、当該キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、ストアリクエストを処理する書き込みコントローラと、を備える。ベクトルプロセッサが複数のストアリクエストを含むベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々に関してアロケート制御信号を生成する。
【００２０】
本発明の第３の観点において、ベクトルプロセッサとライトバック方式のキャッシュメモリとを備えるベクトル計算機システムの動作方法が提供される。その動作方法は、（Ａ）ベクトルプロセッサが、複数のストアリクエストを含むベクトルストア命令を発行するステップと、（Ｂ）複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々をライトアロケート方式と非ライトアロケート方式のどちらで処理するかを指定するステップと、（Ｃ）キャッシュメモリが、ライトアロケート方式と非ライトアロケート方式のうち指定された一方に従って、各々のストアリクエストを処理するステップと、を含む。
【発明の効果】
【００２１】
本発明によれば、ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えることが可能となる。それにより、システム処理効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２２】
添付図面を参照して、本発明の実施の形態を説明する。本実施の形態は、ベクトル演算を実行するベクトルプロセッサが搭載されたベクトル計算機システムにおけるキャッシュ制御に関する。
【００２３】
１．基本構成
図２は、本実施の形態に係るベクトル計算機システム１の構成を概略的に示すブロック図である。ベクトル計算機システム１は、ベクトルプロセッサ１０、キャッシュメモリ２０、メインメモリ３０、及びライトアロケート決定部４０を備えている。
【００２４】
キャッシュメモリ２０は、ベクトルプロセッサ１０用のキャッシュメモリであり、ベクトルプロセッサ１０とメインメモリ３０との間に設けられている。典型的には、ベクトルプロセッサ１０とキャッシュメモリ２０は１チップで構成される。尚、キャッシュメモリは階層的に設けられる場合もあるが、ここでは簡単のため、キャッシュメモリ２０の下位記憶階層としてメインメモリ３０だけを考える。複数のキャッシュメモリが階層的に設けられる場合であっても、同じ議論が適用され得る。本実施の形態において、キャッシュメモリ２０は、ライトバック方式でデータライト処理を行い、ライトアロケート方式と非ライトアロケート方式の両方をサポートしている。後に詳しく説明されるように、ライトアロケート方式と非ライトアロケート方式とを動的に切り替え可能である。
【００２５】
キャッシュメモリ２０には、メインメモリ３０に記憶されているデータの一部が格納される。そのデータの格納領域が、データアレイ２１である。データアレイ２１はｎ本（ｎは２以上の整数）のラインＬ０〜Ｌ（ｎ−１）を有しており、各ラインにラインサイズ分のデータが格納される。メインメモリ３０に格納されているあるデータがキャッシュメモリ２０に転送される際は、当該データを含むラインサイズ分のブロックデータが、メインメモリ３０からあるラインにコピーされる。
【００２６】
図３は、キャッシュメモリ２０のラインとメインメモリ３０のブロックとの間の対応関係を示している。例として、１データ単位が８バイトであり、１ラインのラインサイズが３２バイトである場合を考える。この場合、メインメモリ３０の１つのブロックの大きさは、ラインサイズと同じ３２バイトである。そして、キャッシュメモリ２０の１つのラインとメインメモリ３０の１つのブロックとが、互いに対応付けられる。より詳細には、メインメモリ３０の先頭から順番に、ブロックが１つずつラインＬ０〜Ｌ（ｎ−１）に対応付けられる。すなわち、メインメモリ３０の先頭からｎ個のブロックＢＬ００〜ＢＬ０（ｎ−１）が、ラインＬ０〜Ｌ（ｎ−１）のそれぞれに割り当てられる。これらブロックＢＬ００〜ＢＬ０（ｎ−１）は、１つのフレームＦＲ０を構成している。また、続くフレームＦＲ１も同様にｎ個のブロックＢＬ１０〜ＢＬ１（ｎ−１）を含み、それらブロックＢＬ１０〜ＢＬ１（ｎ−１）が、ラインＬ０〜Ｌ（ｎ−１）のそれぞれに割り当てられる。つまり、異なるフレームに属する複数のブロックが、同じ１つのラインに割り当てられる。メインメモリ３０は、例えばｍ個のフレームＦＲ０〜ＦＲ（ｍ−１）を備える。
【００２７】
尚、セットアソシアティブ（set associative）方式のキャッシュメモリ２０の場合、図３に示されるように、同様のデータアレイ２１が複数設けられる（その数は“ｗａｙ”と呼ばれる）。例えば２−ｗａｙの場合、同様の構成を有する２つのデータアレイ２１−０、２１−１が設けられる。そして、データアレイ２１−０、２１−１のそれぞれは、同じ１つのラインに対応付けられている異なるフレームのブロックデータを格納することができる。例えば、一方のデータアレイ２１−０のラインＬ０に、フレームＦＲ０のブロックＢＬ００のデータが格納され、他方のデータアレイ２１−１のラインＬ０に、異なるフレームＦＲ１のブロックデータＢＬ１０のデータが格納され得る。
【００２８】
メインメモリ３０に格納されているあるデータがキャッシュメモリ２０に転送される際は、当該データを含む３２バイトのブロックデータが、当該ブロックに割り当てられた１つのラインにコピーされる。このとき、その１つのラインに元々格納されているブロックデータは、必要に応じてメインメモリ３０に書き戻される。
【００２９】
再度図２を参照して、ベクトルプロセッサ１０は、ベクトル演算処理を行うプロセッサであり、複数要素からなるベクトルデータ（データ構造が配列）を扱う。より詳細には、ベクトルプロセッサ１０は、「ベクトルロード」、「ベクトル演算」、「ベクトルストア」等のベクトル命令を発行する。ベクトルロードは、メインメモリ３０からベクトルデータを読み出す命令であり、ベクトルストアは、メインメモリ３０へベクトルデータを書き込む命令である。通常のスカラプロセッサの場合と異なり、ベクトルロード／ベクトルストア命令は、開始アドレス、データサイズ、アクセス対象データ間隔（ストライド、ディスタンス）等により規定される。それら情報はベクトル制御レジスタにセットされ、それにより、各要素に対するロード／ストアが順次実行される。
【００３０】
図４は、ベクトルストア命令の一例を概念的に示している。ここでは、ベクトル１要素は８バイトであり、２５６要素からなるベクトルデータのベクトルストア命令が例として示されている。より詳細には、ベクトルストア命令は、ベクトルデータの２５６要素のそれぞれに対応する時間的に連続した２５６個のストアリクエストを含んでいる。ディスタンスは、１ベクトル要素分の８バイトである。つまり、ストアリクエストの対象アドレスは連続的であり、開始アドレス“ａ”から終了アドレス“ａ＋８Ｂ×２５５”にわたっている。それら開始アドレス、終了アドレス、及びディスタンスは、このベクトルストア命令の発行時に明らかになる。すなわち、どのアドレスに対してデータストアが行われるかを、ベクトルストア命令の発行時に認識することが可能である。
【００３１】
尚、図４に示されるように、ベクトルストア命令の開始アドレスは、あるブロックの先頭アドレスになるとは限らない。また、ベクトルストア命令の終了アドレスは、あるブロックの最終アドレスになるとは限らない。従って、全てのデータに対してアクセスが発生するようなブロックもあれば、一部のデータに対してだけアクセスが発生するようなブロックもあり得る。言い換えれば、ストアリクエストの対象アドレスのパターンは、１つのブロックに対して１回だけアクセスするパターン、２回アクセスするパターン、３回アクセスするパターン、最大の４回アクセスするパターンを含み得る。そのようなストアリクエストの対象アドレスのパターンは、以下、「書き込みパターンＰＡＴ」と参照される。あるベクトルストア命令の書き込みパターンＰＡＴは、そのベクトルストア命令の発行時点で知ることができることに留意されたい。
【００３２】
本実施の形態は、上記ベクトルストア命令に関する書き込みパターンＰＡＴに応じて、キャッシュメモリ２０の動作方式をライトアロケート方式と非ライトアロケート方式との間で動的に切り替えることを特徴とする。そのための構成が、図２で示される「ライトアロケート決定部（ライトアロケート決定部）４０」である。このライトアロケート決定部４０は、ベクトルプロセッサ１０内に構築されてもよいし、キャッシュメモリ２０内に構築されてもよい。
【００３３】
ベクトルプロセッサ１０がベクトルストア命令を発行した時、ライトアロケート決定部４０は、上述の書き込みパターンＰＡＴを認識し、その書き込みパターンＰＡＴに基づいて「アロケート制御信号ＣＯＮ」を生成する。アロケート制御信号ＣＯＮは、キャッシュメモリ２０におけるライトアロケートの可否、すなわち、キャッシュメモリ２０がライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定する。このアロケート制御信号ＣＯＮは、ベクトルストア命令の各ストアリクエストに関して生成される。キャッシュメモリ２０は、アロケート制御信号ＣＯＮを受け取り、受け取ったアロケート制御信号ＣＯＮで指定される方式に従って、各ストアリクエストを処理する。
【００３４】
２．ライトアロケートの可否
次に、ライトアロケートの可否の判断基準の一例を説明する。尚、下記の判断基準はあくまでも一例であり、システム構成に応じて適宜変更されてもよい。図５は、ベクトルストア命令に関する書き込みパターンＰＡＴが含み得る３種類のパターンＰ１〜Ｐ３を概念的に示している。書き込みパターンＰＡＴは、これら３種類のパターンＰ１〜Ｐ３のうち少なくとも１つを含む。
【００３５】
第１パターンＰ１は、ある１つのブロックに含まれる全てのデータに対してストアリクエストが発生するパターンである。この第１パターンＰ１の場合、当該１つのブロックに対して８バイト書き込みが連続的に４回行われ、全てのデータが更新される。仮に、キャッシュメモリ２０がライトアロケート方式で動作する場合を考える。１回目の８バイト書き込み時にキャッシュミスであれば、当該８バイトデータを含む３２バイトのブロックデータが、キャッシュメモリ２０中の該当ラインにロードされる（ラインリプレース）。その後、当該８バイトデータがそのラインに書き込まれる。続く２〜４回目の８バイト書き込み時には、キャッシュヒットが保証される。しかしながらこの場合、ライトアロケートにより最初にキャッシュメモリ２０にロードされた３２バイトのブロックデータは、１度も参照されることなく、全て書き換えられてしまう。すなわち、最初の３２バイトのブロックデータのロードは、結果的に無意味な操作となってしまう。このことは、下位記憶階層であるメインメモリ３０に不要な要求（ロードリクエスト）を与えてしまったことを意味する。従って、第１パターンＰ１の場合にライトアロケート方式を指示することは好ましくない。本実施の形態では、第１パターンＰ１の場合、ライトアロケート決定部４０は、「非ライトアロケート方式」を指定するアロケート制御信号ＣＯＮを生成する。その結果、メインメモリ３０にかかる負荷が軽減される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。
【００３６】
第２パターンＰ２は、ある１つのブロックに対して、１回だけストアリクエストが発生するパターンである。この第２パターンＰ２の場合、当該１つのブロックに対して８バイト書き込みが１回だけ行われる。仮に、キャッシュメモリ２０がライトアロケート方式で動作する場合を考える。キャッシュミスであれば、当該８バイトデータを含む３２バイトのブロックデータが、キャッシュメモリ２０中の該当ラインにロードされる（ラインリプレース）。その後、当該８バイトデータがそのラインに書き込まれる。しかしながら、その後は当該１つのブロックに対して書き込みは行われず、キャッシュヒットの恩恵が得られない。すなわち、最初の３２バイトのブロックデータのロードは、ベクトルストア動作の高速化に一切寄与しない。このことは、下位記憶階層であるメインメモリ３０に不要な要求（ロードリクエスト）を与えてしまったことを意味する。従って、第２パターンＰ２の場合にライトアロケート方式を指示することは好ましくない。本実施の形態では、第２パターンＰ２の場合、ライトアロケート決定部４０は、「非ライトアロケート方式」を指定するアロケート制御信号ＣＯＮを生成する。その結果、メインメモリ３０にかかる負荷が軽減される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。
【００３７】
第３パターンＰ３は、第１パターンＰ１及び第２パターンＰ２以外のパターンである。すなわち、第３パターンＰ３の場合、ある１つのブロックに対して、２回あるいは３回のストアリクエストが発生する。仮に、キャッシュメモリ２０がライトアロケート方式で動作する場合を考える。１回目の８バイト書き込み時にキャッシュミスであれば、当該８バイトデータを含む３２バイトのブロックデータが、キャッシュメモリ２０中の該当ラインにロードされる。その後、当該８バイトデータがそのラインに書き込まれる。続く２回目（及び３回目）の８バイト書き込み時には、キャッシュヒットが保証される。このことは、ベクトルストア動作の高速化に寄与する。更に、ライトアロケートにより最初にキャッシュメモリ２０にロードされた３２バイトのブロックデータの一部は、書き換えられることなく、そのまま残る。つまり、最初の３２バイトのブロックデータのロードは、無意味ではなく、その後のキャッシュヒット率の向上が期待される。従って、第３パターンＰ３の場合はライトアロケート方式が好適である。本実施の形態では、第３パターンＰ３の場合、ライトアロケート決定部４０は、「ライトアロケート方式」を指定するアロケート制御信号ＣＯＮを生成する。
【００３８】
図６は、ベクトルストア命令の一例を概念的に示している。本例では、メインメモリ３０上で連続的に位置する４０要素に対するベクトルストア命令が発行される。そのベクトルストア命令は、それら４０要素のそれぞれに対するストアリクエストを含んでおり、アクセス対象データ間隔は１ベクトル要素分の８バイトである。つまり、それぞれのストアリクエストの対象アドレスは連続している。全ての対象アドレス（書き込みパターンＰＡＴ）は、当該ベクトルストア命令の発行時に判明することに留意されたい。最初のブロックＢＬ（ｉ）に対する書き込みパターンは、２回のストアリクエストが発生する上述の第３パターンＰ３である。従って、それら２回のストアリクエストに関しては、ライトアロケート方式が指定される。続くブロックＢＬ（ｉ＋１）〜ＢＬ（ｉ＋９）に対する書き込みパターンは上述の第１パターンＰ１であるため、非ライトアロケート方式が指定される。最後のブロックＢＬ（ｉ＋１０）に対する書き込みパターンは再び第３パターンＰ３であるため、ライトアロケート方式が指定される。
【００３９】
図７は、ベクトルストア命令の他の例を概念的に示している。本例では、メインメモリ３０上で離散的に位置する２０要素に対するベクトルストア命令が発行される。そのベクトルストア命令は、それら２０要素のそれぞれに対するストアリクエストを含んでおり、アクセス対象データ間隔は２ベクトル要素分の１６バイトである。つまり、それぞれのストアリクエストの対象アドレスは、１６バイト置きに飛び飛びで変化する。全ての対象アドレス（書き込みパターンＰＡＴ）は、当該ベクトルストア命令の発行時に判明することに留意されたい。最初のブロックＢＬ（ｉ）に対する書き込みパターンは、ストアリクエストが１回だけ発生する上述の第２パターンＰ２である。従って、その１回のストアリクエストに関しては、非ライトアロケート方式が指定される。続くブロックＢＬ（ｉ＋１）〜ＢＬ（ｉ＋９）に対する書き込みパターンは上述の第３パターンＰ３であるため、ライトアロケート方式が指定される。最後のブロックＢＬ（ｉ＋１０）に対する書き込みパターンは再び第２パターンＰ２であるため、非ライトアロケート方式が指定される。
【００４０】
以上に説明されたように、本実施の形態によれば、ベクトルストア命令の書き込みパターンＰＡＴが着目される。その書き込みパターンＰＡＴは、そのベクトルストア命令の発行時点で知ることができる。そして、その書き込みパターンＰＡＴに応じて、キャッシュメモリ２０の動作方式が、ライトアロケート方式と非ライトアロケート方式との間で動的に切り替えられる。具体的には、第１パターンＰ１あるいは第２パターンＰ２のストアリクエストに関しては、非ライトアロケート方式が採用される。その結果、不要なライトアロケートが排除され、下位記憶階層であるメインメモリ３０にかかる負荷が軽減される。従って、メインメモリ３０の性能低下が防止される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。このように、システム処理効率を向上させることが可能となる。
【００４１】
３．キャッシュメモリ２０
図８は、本実施の形態に係るベクトル計算機システム１に搭載されるキャッシュメモリ２０の基本構成の一例を示している。例として、セットアソシアティブ方式のキャッシュメモリ２０を考える。そのキャッシュメモリ２０は、上述のデータアレイ２１に加えて、タグアレイ２２、ＬＲＵアレイ２３、比較器２４、及び書き込みコントローラ２５を有している。
【００４２】
上述の通り、キャッシュメモリ２０の各ラインとメインメモリ３０の各ブロックとの間の対応関係は、予め定められている（図３参照）。そして、データアレイ２１のラインＬ０〜Ｌ（ｎ−１）の各々には、対応付けられたブロックのデータが格納される。また、セットアソシアティブ方式の場合、Ｗａｙ数分のデータアレイ２１が設けられる。例えば図８において、同様の構成を有する２つのデータアレイ２１−０、２１−１が設けられている。異なるＷａｙの同じ１つのラインには、当該１つのラインに対応付けられている異なるフレームのブロックデータを格納することができる（図３参照）。例えば図３を参照して、データアレイ２１−０のラインＬ０に、フレームＦＲ０のブロックＢＬ００のデータが格納され、データアレイ２１−１のラインＬ０に、異なるフレームＦＲ１のブロックデータＢＬ１０のデータが格納され得る。
【００４３】
タグアレイ２２は、データアレイ２１の各ラインにどのフレームのブロックデータが格納されているかを示す。より詳細には、タグアレイ２２は、ラインＬ０〜Ｌ（ｎ−１）のそれぞれに対応するライン数分のエントリを有している。各エントリには「タグ情報」が格納される。タグ情報は、対応ラインにどのフレームのデータが格納されているかを示し、典型的には、当該ブロックのアドレスの上位ビットで構成される。また、セットアソシアティブ方式の場合、データアレイ２１と同様に、Ｗａｙ数分のタグアレイ２２が設けられる。例えば図８において、同様の構成を有する２つのタグアレイ２２−０、２２−１が設けられている。タグアレイ２２−０、２２−１のそれぞれには、データアレイ２１−０、２１−１のそれぞれに関するタグ情報が格納される。
【００４４】
上述の通り、異なるＷａｙの同じ１つのラインには、当該１つのラインに対応付けられている異なるフレームのブロックデータが格納され得る。例えば、データアレイ２１−０のラインＬ０に、フレームＦＲ０のブロックＢＬ００のデータが格納され、データアレイ２１−１のラインＬ０に、異なるフレームＦＲ１のブロックデータＢＬ１０のデータが格納されているとする（図３参照）。ここで、更に異なるフレームのブロックデータであって、同じラインＬ０に割り当てられているブロックデータが、新たにキャッシュメモリ２０に格納される場合を考える。この場合、ラインリプレースが必要であり、いずれかＷａｙのラインＬ０を解放する必要がある。いずれのＷａｙのラインＬ０を解放するかは、所定のアルゴリズムに従って決定される。例えば、一番長く使われていない方のＷａｙのラインＬ０が解放される。このような方式は、「ＬＲＵ（Least Recently Used）方式」と呼ばれている。各ラインに関して最も長く使われていないＷａｙを示す情報は、以下「ＬＲＵ情報ＬＲＵ」と参照される。ＬＲＵ情報ＬＲＵは、ラインリプレース時にどのＷａｙを解放するかを示す指針であると言える。
【００４５】
キャッシュメモリ２０のラインＬ０〜Ｌ（ｎ−１）のそれぞれに関するＬＲＵ情報ＬＲＵを示すのが、図８に示されるＬＲＵアレイ２３である。より詳細には、ＬＲＵアレイ２３は、ラインＬ０〜Ｌ（ｎ−１）のそれぞれに対応するライン数分のエントリを有している。各エントリには、対応ラインに関するＬＲＵ情報ＬＲＵが格納される。あるラインのリプレース時には、当該ラインのＬＲＵ情報ＬＲＵが参照される。
【００４６】
メインメモリ３０上のあるアドレスに対して、書き込みデータＤＷが書き込まれる場合を考える。このとき、キャッシュメモリ２０には、書き込みデータＤＷと書き込み対象アドレスを示すアドレス信号ＡＤＤが入力される。アドレス信号ＡＤＤからは、どのラインに対応付けられたブロックがアクセス対象か判明する。従って、アドレス信号ＡＤＤを用いることにより、該当ラインの情報を読み出すことができる。具体的には、タグアレイ２２が参照され、タグアレイ２２−０、２２−１の各々から該当ラインのタグ情報が読み出される。また、ＬＲＵアレイ２３が参照され、ＬＲＵアレイ２３から該当ラインのＬＲＵ情報ＬＲＵが読み出される。
【００４７】
比較器２４は、アドレス信号ＡＤＤに含まれるタグ情報と、各タグアレイ２２から読み出されたタグ情報との比較を行う。比較結果が一致の場合、それはキャッシュヒットを意味する。一方、比較結果が不一致の場合、それはキャッシュミスを意味する。比較器２４は、キャッシュヒットあるいはキャッシュミスを示すヒット／ミス信号ＨＭを出力する。
【００４８】
書き込みコントローラ２５は、ヒット／ミス信号ＨＭ、ＬＲＵ情報ＬＲＵ、及び書き込みデータＤＷを受け取る。更に、本実施の形態によれば、書き込みコントローラ２５は、上述のライトアロケート決定部４０によって生成されたアロケート制御信号ＣＯＮを受け取る。その後の書き込みコントローラ２５の処理は、ヒット／ミス信号ＨＭ及びアロケート制御信号ＣＯＮに依存して変わる。
【００４９】
図９は、本実施の形態に係るベクトル計算機１の動作を示すフローチャートである。まず、ベクトルプロセッサ１０がベクトルストア命令を発行する（ステップＳ１０）。次に、ライトアロケート決定部４０は、各ストアリクエストに関してライトアロケート方式あるいは非ライトアロケート方式を指定する（ステップＳ２０）。具体的には、ライトアロケート決定部４０は、ベクトルストア命令の書き込みパターンＰＡＴに基づいて、各ストアリクエストに関して上述のアロケート制御信号ＣＯＮを生成する。そして、ライトアロケート決定部４０は、生成したアロケート制御信号ＣＯＮを書き込みコントローラ２５に出力する。キャッシュメモリ２０において、書き込みコントローラ２５は、ヒット／ミス信号ＨＭ及びアロケート制御信号ＣＯＮに応じて適切な書き込み処理を実行する（ステップＳ３０）。
【００５０】
ヒット／ミス信号ＨＭがキャッシュヒットを示している場合（ステップＳ３１；Ｙｅｓ）、書き込みコントローラ２５は、キャッシュメモリ２０中の該当ラインへ書き込みデータＤＷを書き込む（ステップＳ３２）。これにより、書き込み処理が高速化される。
【００５１】
ヒット／ミス信号ＨＭがキャッシュミスを示している場合（ステップＳ３１；Ｎｏ）、書き込みコントローラ２５は、アロケート制御信号ＣＯＮに従って、ライトアロケート方式あるいは非ライトアロケート方式のいずれかで動作する。アロケート制御信号ＣＯＮが非ライトアロケート方式を指定している場合（ステップＳ３３；Ｙｅｓ）、書き込みコントローラ２５は、メインメモリ３０へ書き込みデータＤＷを書き込む（ステップＳ３４）。
【００５２】
一方、アロケート制御信号ＣＯＮがライトアロケート方式を指定している場合（ステップＳ３３；Ｎｏ）、書き込みコントローラ２５はライトアロケートを実施する。具体的には、書き込みコントローラ２５は、メインメモリ３０に対して、書き込み対象アドレスを含むブロックを要求するロードリクエストＬＲＥＱを発行する（ステップＳ３５）。メインメモリ３０は、そのロードリクエストＬＲＥＱに応答して当該ブロックデータＤＬＩＮＥ’を読み出し、読み出したブロックデータＤＬＩＮＥ’を書き込みコントローラ２５に送る。書き込みコントローラ２５は、当該ブロックデータＤＬＩＮＥ’を受け取り、そのブロックデータＤＬＩＮＥ’を用いてラインリプレースを行う（ステップＳ３６）。具体的には、書き込みコントローラ２５は、ＬＲＵ情報ＬＲＵで示されるＷａｙの該当ラインを解放する。この時、必要に応じて、書き込みコントローラ２５は、該当ラインに元々格納されているラインデータＤＬＩＮＥをメインメモリ３０にライトバックする。そして、書き込みコントローラ２５は、上記ブロックデータＤＬＩＮＥ’を新たなラインデータとして、該当ラインに書き込む。この時、該当ラインのタグ情報やＬＲＵ情報も更新される。その後、書き込みコントローラ２５は、該当ラインへ書き込みデータＤＷを書き込む（ステップＳ３７）。
【００５３】
以上に説明されたように、書き込みコントローラ２５は、アロケート制御信号ＣＯＮに従って、ライトアロケート方式と非ライトアロケート方式を切り替える。そのアロケート制御信号ＣＯＮを生成するライトアロケート決定部４０としては、以下に説明されるように、様々な形態が考えられる。
【００５４】
４．ライトアロケート決定部４０
４−１．第１の例
図１０は、ライトアロケート決定部４０の第１の例を示すブロック図である。アドレスレジスタ５１には、対象アドレスが格納される。対象アドレスは、ディスタンスずつ更新される。ディスタンスレジスタ５２には、ディスタンスが格納される。残要素数レジスタ５３には、ストアリクエストの残数、すなわち、書き込み対象要素の残数が格納される。全要素数レジスタ５３には、ベクトルストア命令に含まれるストアリクエストの総数、すなわち、書き込み対象要素の総数が格納される。
【００５５】
ブロック変化判定部６１は、現在の対象アドレスとディスタンスに基づいて、次の対象アドレスがブロック境界を超えるか否かを判定する。具体的には、現在の対象アドレスのうち上位ビットが示す現在のブロック境界アドレス（３２Ｂ境界アドレス）が、レジスタに保持される。現在のブロック境界アドレスにブロックサイズ（３２バイト）を足すことにより、次のブロック境界アドレスが得られる。また、現在の対象アドレスにディスタンスを足すことにより、次の対象アドレスが得られる。ブロック変化判定部６１は、次の対象アドレスを次のブロック境界アドレスと比較し、その比較結果を出力する。次の対象アドレスが次のブロック境界アドレスより小さい場合、すなわち、書き込み対象ブロックが次も同じである場合、ブロック変化判定部６１は「１」を出力する。一方、次の対象アドレスが次のブロック境界アドレス以上である場合、すなわち、書き込み対象ブロックが次に変化する場合、ブロック変化判定部６１は「０」を出力する。
【００５６】
ディスタンス判定部６２は、ディスタンスが１要素分（８バイト）か否かを判定する。すなわち、ディスタンス判定部６２は、ベクトルストア命令が連続的（図６参照）か離散的（図７参照）かを判定する。ディスタンスが８バイトである場合、ディスタンス判定部６２は「０」を出力する。それ以外の場合、ディスタンス判定部６２は「１」を出力する。
【００５７】
ＡＮＤゲート６６は、ブロック変化判定部６１の出力とディスタンス判定部６２の出力を受け取る。書き込み対象ブロックが次も同じであり、且つ、ディスタンスが８バイトではない場合、ＡＮＤゲート６６の出力は「１」となる。この場合は、例えば図７で示された第３パターンＰ３に相当する。ＡＮＤゲート６６の出力が「１」であるため、ＯＲゲート６７の出力、すなわちアロケート制御信号ＣＯＮは「１」となる。このように、図７で示された第３パターンＰ３の場合、ライトアロケートを指定するアロケート制御信号ＣＯＮが出力される。
【００５８】
また、図６で示されたように、ディスタンスが８バイトである場合も第３パターンＰ３を含み得る。図６で示された第３パターンＰ３の場合も、ＯＲゲート６７の出力、すなわちアロケート制御信号ＣＯＮが「１」である必要がある。しかしながら、ディスタンスが８バイトである場合、ディスタンス判定部６２は「０」を出力するため、ＡＮＤゲート６６の出力も「０」となる。ＯＲゲート６７の出力を「１」にするためには、ＡＮＤゲート６６以外から「１」をＯＲゲート６７に入力する必要がある。そのために、開始ブロック判定部６３及び最終ブロック判定部６４が設けられている。開始ブロック判定部６３は、開始ブロックに対する書き込みパターンが第３パターンＰ３である場合に、「１」を出力する。最終ブロック判定部６４は、最終ブロックに対する書き込みパターンが第３パターンＰ３である場合に、「１」を出力する。その結果、図６で示された第３パターンＰ３の場合も、ＯＲゲート６７の出力、すなわちアロケート制御信号ＣＯＮが「１」となる。
【００５９】
より詳細には、開始ブロック判定部６３は、対象アドレスの下位ビット（３２Ｂ境界以下アドレス）をディスタンスで割る。比較器６８は、その割り算で得られた商が１あるいは２であることを検出する。つまり、比較器６８は、例えば図６で示された第３パターンＰ３を検出する。その一方で、比較器６５は、残要素数レジスタ５３に格納されている残要素数と全要素数レジスタ５４に格納されている全要素数との比較を行う。残要素数が全要素数と同じである場合、すなわち、開始ブロックの場合、比較器６５は「１」を出力する。ＡＮＤゲート６９は、比較器６５、６８の出力を受け取る。そして、開始ブロックにおいて第３パターンＰ３が発生する場合、ＡＮＤゲート６９（開始ブロック判定部６３）は、「１」を出力する。
【００６０】
最終ブロック判定部６４は、上記ブロック変化判定部６１の出力と、残要素数レジスタ５３に格納されている残要素数を受け取る。書き込み対象ブロックが次も同じであり、且つ、残要素数が２あるいは３である場合、それは最終ブロックにおいて第３パターンＰ３が発生することを意味する。従って、その場合、最終ブロック判定部６４は「１」を出力する。
【００６１】
以上に説明されたように、第３パターンＰ３の場合、ＯＲゲート６７の出力は「１」となり、ライトアロケートを指定するアロケート制御信号ＣＯＮが出力される。それ以外の場合は、ＯＲゲート６７の出力は「０」となり、非ライトアロケートを指定するアロケート制御信号ＣＯＮが出力される。このように、書き込みパターンＰＡＴに応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。本例では、ベクトルストア命令から判明する対象アドレス、ディスタンス及び要素数が、書き込みパターンＰＡＴに相当していると言える。図１０で示された構成は、例えばベクトルプロセッサ１０内に構築される。
【００６２】
４−２．第２の例
図１１は、ベクトル計算機システム１の一例を概略的に示している。図１１の例では、１ブロック分（３２バイト）のデータがベクトルプロセッサ１０からキャッシュメモリ２０に転送される。このとき、ベクトルプロセッサ１０は、ライトイネーブル信号ＷＥも出力する。ライトイネーブル信号ＷＥは、１ブロック分（３２バイト）のデータに含まれる各要素（８バイト）が書き込み対象か否かを示す４ビットの信号である。例えば、ＷＥ＝「１００１」の場合、最初と最後の要素が書き込み対象である。また、ＷＥ＝「１１１１」の場合、全ての要素が書き込み対象である。このように、ライトイネーブル信号ＷＥは、上述の書き込みパターンＰＡＴに相当すると言える。従って、ライトアロケート決定部４０は、ライトイネーブル信号ＷＥを書き込みパターンＰＡＴとして受け取り、そのライトイネーブル信号ＷＥに基づいてアロケート制御信号ＣＯＮを生成することができる。
【００６３】
図１２は、本例におけるライトアロケート決定部４０の構成を示している。ライトアロケート決定部４０は、パターン判定部７０を有している。このパターン判定部７０は、ライトイネーブルキューからライトイネーブル信号ＷＥを受け取る。そして、パターン判定部７０は、ライトイネーブル信号ＷＥが上述の第１〜第３パターンＰ１〜Ｐ３のいずれに相当するかの判定を行い、その判定結果に応じたアロケート制御信号ＣＯＮを出力する。
【００６４】
より詳細には、パターン判定部７０は、ＥＸＯＲゲート７１、ＡＮＤゲート７２〜７７、ＯＲゲート７８、及びＡＮＤゲート７９を備えている。ＥＸＯＲゲート７１の出力は、ＷＥ＝「１１１１」の場合に「０」となり、それ以外の場合は「１」となる。また、ＷＥ＝「１０００」、「０１００」、「００１０」、「０００１」の場合にＡＮＤゲート７２〜７７の全ての出力が「０」となり、それ以外の場合はＡＮＤゲート７２〜７７の少なくとも１つの出力が「１」となる。従って、ＯＲゲート７８の出力は、ＷＥ＝「１０００」、「０１００」、「００１０」、「０００１」の場合に「０」となり、それ以外の場合は「１」となる。その結果、ＡＮＤゲート７９の出力は、ＷＥ＝「１１１１」、「１０００」、「０１００」、「００１０」、「０００１」の場合に「０」となり、それ以外の場合は「１」となる。すなわち、第１パターンＰ１あるいは第２パターンＰ２の場合、アロケート制御信号ＣＯＮは「０」となり、第３パターンＰ３の場合、アロケート制御信号ＣＯＮは「１」となる。このように、書き込みパターンＰＡＴ（ライトイネーブル信号ＷＥ）に応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。
【００６５】
４−３．第３の例
図１３は、マルチコアの場合のベクトル計算機システム１を概略的に示している。この場合、キャッシュメモリ２０は、複数のベクトルプロセッサ１０によって共有される。例えば図１３において、キャッシュメモリ２０は、ベクトルプロセッサ１０−０、１０−１によって共有される。このとき、上述の第２の例のような転送バンド幅の大きなデータパスを設けることが実装的に不可能な場合がある。
【００６６】
そこで、各ベクトルプロセッサ１０は、同一ブロックに対するストアリクエストを示す「同一ブロックフラグＦＬＧ」を出力する。同一ブロックフラグＦＬＧは、同一ブロックへのストアリクエストに関しては同じ値に設定され、また、対象ブロックが変わるたびに反転させられる。つまり、同一ブロックフラグＦＬＧは、ブロック毎に反転（トグル）させられる。例えば、同一ブロックフラグＦＬＧの列が「１１００００１１」の場合、１番目と２番目が同じブロックへのストアリクエストであり、３番目から６番目が次の同じブロックへのストアリクエストであり、７番目と８番目が更に次の同じブロックへのストアリクエストである。リクエストアービタ８０は、同一ブロックフラグＦＬＧを参照し、同一ブロックフラグＦＬＧが同じ値を示す間は、連続してストアリクエストをアービトレーションする。
【００６７】
本例では、複数のストアリクエストに関する同一ブロックフラグＦＬＧが、上述の書き込みパターンＰＡＴに相当する。従って、ライトアロケート決定部４０は、同一ブロックフラグＦＬＧを書き込みパターンＰＡＴとして受け取り、その同一ブロックフラグＦＬＧに基づいてアロケート制御信号ＣＯＮを生成することができる。つまり、ライトアロケート決定部４０は、同一ブロックフラグＦＬＧの列が上述の第１〜第３パターンＰ１〜Ｐ３のいずれに相当するかの判定を行い、その判定結果に応じたアロケート制御信号ＣＯＮを出力する。
【００６８】
図１４は、本例におけるライトアロケート決定部４０の構成を示している。ライトアロケート決定部４０は、パターン判定部９０、ブロック変化検出部１００、及びレジスタ１１０を有している。
【００６９】
パターン判定部９０は、直近の複数の同一ブロックフラグＦＬＧに基づいて、同一ブロックへのストアリクエストが何回続くか判定する。つまり、パターン判定部９０は、直近の同一ブロックフラグＦＬＧの列が第１〜第３パターンＰ１〜Ｐ３のいずれに相当するかの判定を行う。具体的には、図１４に示されるように、パターン判定部９０は、ＮＯＲゲート９１〜９３、ＡＮＤゲート９４〜９６、ＯＲゲート９７、ＮＯＲゲート９８、及びＡＮＤゲート９９を含んでいる。ＮＯＲゲート９１とＡＮＤゲート９４は、直近の２個の同一ブロックフラグＦＬＧの状態を検出する。ＮＯＲゲート９２とＡＮＤゲート９５は、直近の３個の同一ブロックフラグＦＬＧの状態を検出する。ＮＯＲゲート９３とＡＮＤゲート９６は、直近の４個の同一ブロックフラグＦＬＧの状態を検出する。同一ブロックへのストアリクエストが２回あるいは３回続く場合、ＡＮＤゲート９９の出力は「１」となり、それ以外の場合、ＡＮＤゲート９９の出力は「０」となる。すなわち、パターン判定部９０は、第３パターンＰ３の場合に「１」を出力し、第１パターンＰ１あるいは第２パターンＰ２の場合に「０」を出力する。
【００７０】
ブロック変化検出部１００は、ストアリクエストの対象ブロックの変化を検出する。直近の２個の同一ブロックフラグＦＬＧが反転（トグル）していれば、それは対象ブロックの変化を意味する。従って、ブロック変化検出部１００は、直近の２個の同一ブロックフラグＦＬＧに基づいて、対象ブロックの変化を検出することができる。対象ブロックの変化を検出すると、ブロック変化検出部１００はリセット信号をレジスタ１１０に出力する。
【００７１】
レジスタ１１０は、パターン判定部９０の出力データを受け取り、リセット信号が入力されるまでそのデータを保持する。そして、レジスタ１００で保持されているデータが、アロケート制御信号ＣＯＮとして出力される。すなわち、第１パターンＰ１あるいは第２パターンＰ２の場合、アロケート制御信号ＣＯＮは「０」となり、第３パターンＰ３の場合、アロケート制御信号ＣＯＮは「１」となる。このように、書き込みパターンＰＡＴ（ライトイネーブル信号ＷＥ）に応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。
【００７２】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【図面の簡単な説明】
【００７３】
【図１】図１は、キャッシュメモリを備える計算機システムにおけるデータライト方式を示している。
【図２】図２は、本発明の実施の形態に係るベクトル計算機システムの構成を概略的に示すブロック図である。
【図３】図３は、キャッシュメモリのラインとメインメモリのブロックとの間の対応関係を概念的に示している。
【図４】図４は、ベクトルプロセッサによって発行されるベクトルストア命令の一例を概念的に示している。
【図５】図５は、ベクトルストア命令に関する書き込みパターンが含み得る３種類のパターンを概念的に示している。
【図６】図６は、ベクトルストア命令の一例を概念的に示している。
【図７】図７は、ベクトルストア命令の他の例を概念的に示している。
【図８】図８は、本実施の形態に係るベクトル計算機システムに搭載されるキャッシュメモリの基本構成の一例を示すブロック図である。
【図９】図９は、本実施の形態に係るベクトル計算機の動作を示すフローチャートである。
【図１０】図１０は、本実施の形態に係るライトアロケート決定部の第１の例を示すブロック図である。
【図１１】図１１は、本実施の形態に係るベクトル計算機システムの一例を示すブロック図である。
【図１２】図１２は、本実施の形態に係るライトアロケート決定部の第２の例を示すブロック図である。
【図１３】図１３は、本実施の形態に係るベクトル計算機システムの他の例を示すブロック図である。
【図１４】図１４は、本実施の形態に係るライトアロケート決定部の第３の例を示すブロック図である。
【符号の説明】
【００７４】
１      ベクトル計算機システム
１０      ベクトルプロセッサ
２０      キャッシュメモリ
２１      データアレイ
２２      タグアレイ
２３      ＬＲＵアレイ
２４      比較器
２５      書き込みコントローラ
３０      メインメモリ
４０      ライトアロケート決定部
７０      パターン判定部
８０      リクエストアービタ
９０      パターン判定部
ＣＯＮ    アロケート制御信号
【図１】
2010086496.tif 000003
【図２】
2010086496.tif 000004
【図３】
2010086496.tif 000005
【図４】
2010086496.tif 000006
【図５】
2010086496.tif 000007
【図６】
2010086496.tif 000008
【図７】
2010086496.tif 000009
【図８】
2010086496.tif 000010
【図９】
2010086496.tif 000011
【図１０】
2010086496.tif 000012
【図１１】
2010086496.tif 000013
【図１２】
2010086496.tif 000014
【図１３】
2010086496.tif 000015
【図１４】
2010086496.tif 000016