(57)【特許請求の範囲】
【請求項１】
主記憶装置に格納されているデータの一部の写しが格納されるキャッシュラインを複数備えたデータアレイと、
前記キャッシュライン毎の予約フラグと、
ベクトル処理部からベクトルデータが要求されたときには、前記ベクトルデータを前記データアレイのキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データが前記データアレイに格納されているか否かを判定し、格納されている分割データについては、その分割データが格納されているキャッシュラインの予約フラグをセットし、格納されていない分割データについては、その分割データの格納先にするキャッシュラインを予約フラグがセットされていないキャッシュラインの中から決定して該決定したキャッシュラインの予約フラグをセットした後、該当するデータを前記主記憶装置から読み込んで前記決定したキャッシュラインに格納し、前記ベクトル処理部から要求されたベクトルデータの分割データが全て前記データアレイに格納されていると判定したときには、前記分割データの全てを前記ベクトル処理部に送信した後、前記分割データを格納しているキャッシュラインの予約フラグをリセットし、スカラ処理部からのスカラ命令によってアクセスされるデータが前記データアレイ上に存在しないことにより、キャッシュラインのデータの置き換えを行うことが必要になったときには、予約フラグがセットされていないキャッシュラインを対象にしてデータの置き換えを行い、前記スカラ処理部からのスカラ命令に従ってデータを書き替えるときには、書き替え対象にするデータが予約フラグのセットされているキャッシュラインに格納されていれば、前記予約フラグがリセットされるまで、前記データの書き替えを抑止するキャッシュ制御部とを備えたことを特徴とするキャッシュメモリ。
【請求項２】
請求項１記載のキャッシュメモリと、
前記キャッシュメモリに対してベクトルデータを要求するメモリリクエストを発行するベクトル処理部と、
前記キャッシュメモリに対してスカラ命令を発行するスカラ処理部とを備えたことを特徴とするベクトル処理装置。
【請求項３】
主記憶装置に格納されているデータの一部の写しが格納されるキャッシュラインを複数備えたデータアレイと、前記キャッシュライン毎の予約フラグとを備えたキャッシュメモリが実行するベクトルデータ整列方法であって、
前記キャッシュメモリが、ベクトル処理部からベクトルデータが要求されたときには、前記ベクトルデータを前記データアレイのキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データが前記データアレイに格納されているか否かを判定し、格納されている分割データについては、その分割データが格納されているキャッシュラインの予約フラグをセットし、格納されていない分割データについては、その分割データの格納先にするキャッシュラインを予約フラグがセットされていないキャッシュラインの中から決定して該決定したキャッシュラインの予約フラグをセットした後、該当するデータを前記主記憶装置から読み込んで前記決定したキャッシュラインに格納し、前記ベクトル処理部から要求されたベクトルデータの分割データが全て前記データアレイに格納されていると判定したときには、前記分割データの全てを前記ベクトル処理部に送信した後、前記分割データを格納しているキャッシュラインの予約フラグをリセットし、スカラ処理部からのスカラ命令によってアクセスされるデータが前記データアレイ上に存在しないことにより、キャッシュラインのデータの置き換えを行うことが必要になったときには、予約フラグがセットされていないキャッシュラインを対象にしてデータの置き換えを行い、前記スカラ処理部からのスカラ命令に従ってデータを書き替えるときには、書き替え対象にするデータが予約フラグのセットされているキャッシュラインに格納されていれば、前記予約フラグがリセットされるまで、前記データの書き替えを抑止することを特徴とするベクトルデータ整列方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理部、スカラ処理部、ベクトルロードバッファおよびキャッシュメモリを備えたベクトル処理装置に関し、特に、キャッシュメモリにベクトルロードバッファの機能を持たせることにより、ベクトル処理装置のハードウェア量および消費電力を低減させる技術に関する。
【背景技術】
【０００２】
従来のベクトル処理装置においては、図７に示すように、ベクトル処理部２００内のベクトルレジスタ２０１とメモリ部２２０との間の例えばメモリ制御部２１０内に、メモリ部２２０から不規則なタイミングで返却される一連のベクトルデータを整列してベクトル処理部２００に供給すること、及びベクトルレジスタ２０１が演算で使用中（ビジー中）であっても先行してメモリ部２２０からベクトルデータを読み出してメモリレイテンシを隠蔽することの２つを目的として、専用のベクトルロードバッファ（ＶＬＤＢ；Vector Load Buffer）２１２が設けられている（例えば、特許文献１参照）。なお、整列判定回路２１１は、要求されたベクトルデータが全てベクトルロードバッファ２１２に揃ったことをベクトル処理部２００に通知する回路である。
【０００３】
一方、スカラプロセッサで採用されるキャッシュメモリは、スカラプロセッサからデータが要求される毎に、要求されたデータを１個（１要素）ずつスカラプロセッサのレジスタに返却するように構成されている。
【０００４】
【特許文献１】特開平２−１０１５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年、ベクトルプロセッサの動作周波数の向上に対してメモリレイテンシの改善が追いつかず、このメモリレイテンシを隠蔽するためにベクトルロードバッファの容量（個数）が増加する傾向にある。ベクトルロードバッファの容量を増加させることにより、メモリレイテンシを隠蔽することはできるが、ベクトルロードバッファの容量を増加させた場合には、ハードウェア及び消費電力が増加するという問題が生じる。
【０００６】
このような問題点を解決するためにキャッシュメモリをベクトルロードバッファとして利用することが考えられる。しかし、キャッシュメモリは、スカラプロセッサからデータが１要素要求される毎に、要求されたデータをスカラプロセッサに返却するように構成されており、ベクトルデータの全ての要素が揃ってから連続的に送出する整列機能を備えていないため、ベクトルロードバッファとしては利用することができない。
【０００７】
〔発明の目的〕
そこで、本発明の目的は、キャッシュメモリをベクトルロードバッファとしても利用できるようにすることにより、ベクトル処理装置のハードウェア量および消費電力を低減させることにある。
【課題を解決するための手段】
【０００８】
本発明にかかる第１のキャッシュメモリは、
主記憶装置に格納されているデータの一部の写しが格納されるキャッシュラインを複数備えたデータアレイと、
ベクトル処理部から要求されたベクトルデータを前記データアレイのキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データが前記データアレイに格納されているか否かを判定し、格納されていない分割データについては前記主記憶装置から該当するデータを読み込んで前記データアレイに格納し、前記ベクトルデータが前記データアレイに全て格納されてから前記ベクトル処理部へ送信するキャッシュ制御部とを備えたことを特徴とする。
【０００９】
本発明にかかる第１のベクトル処理装置は、
請求項１乃至４の何れか１項に記載のキャッシュメモリと、
前記キャッシュメモリに対してベクトルデータを要求するメモリリクエストを発行するベクトル処理部と、
前記キャッシュメモリに対してスカラ命令を発行するスカラ処理部とを備えたことを特徴とする。
【００１０】
本発明にかかる第１のベクトルデータ整列方法は、
ベクトル処理部が、キャッシュメモリに対してベクトルデータを要求する第１のステップと、
前記キャッシュメモリが、前記ベクトル処理部から要求された前記ベクトルデータの構成要素の内、自メモリ上に存在しない構成要素を主記憶装置から読み込み、前記ベクトルデータが自メモリ上に全て揃ってから整列させて前記ベクトル処理部へ送信する第２のステップとを含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１３】
〔本発明の実施の形態〕
図１を参照すると、本実施の形態は、ベクトル処理部１００と、キャッシュメモリ１１０と、メモリ部（主記憶装置）１２０と、スカラ処理部１３０とを備えている。
【００１４】
ベクトル処理部１００は、複数のベクトルレジスタ１０１と、リクエスト制御部１０２とを含んでいる。なお、ベクトル処理部１００は、ベクトル演算を行う演算処理部、ベクトル命令が格納される命令レジスタなども含んでいるが、本発明とは直接関係しないので図示を省略している。
【００１５】
ベクトルレジスタ１０１は、メモリ部１２０に格納されているベクトルデータや、図示を省略した演算処理部の演算結果を格納するレジスタ群であり、一般的に１個のベクトルレジスタにはｎ（ｎは複数）個のデータが格納される。このｎ個のデータをベクトルデータと呼ぶ。
【００１６】
リクエスト制御部１０２は、図示を省略した命令レジスタにベクトルロード命令が格納されると、それに対応したメモリリクエストをキャッシュメモリ１１０に対して発行する。このメモリリクエストには、上記ベクトルロード命令が要求しているベクトルデータの開始アドレスと要素数とが含まれる。更に、リクエスト制御部１０２は、ベクトルレジスタ１０１の使用状況を管理しており、キャッシュメモリ１１０から上記メモリリクエストによって要求されたベクトルデータが全てキャッシュメモリ１１０上に揃っていることを示す格納完了通知が送られてきた場合、上記ベクトルロード命令で指定されているベクトルレジスタが使用可能になっていることを条件にして、キャッシュメモリ１１０に対して転送可通知を送信する。
【００１７】
キャッシュメモリ１１０は、キャッシュ制御部１１１と、データアレイ１１２と、予約フラグ１１３と、整列フラグ１１４とを備えている。
【００１８】
データアレイ１１２は、複数のキャッシュラインＬ０〜Ｌｎから構成され、各キャッシュラインＬ０〜Ｌｎには、メモリ部１２０に格納されているデータの一部の写しが格納される。
【００１９】
予約フラグ１１３は、キャッシュラインＬ０〜Ｌｎ毎に設けられており、対応するキャッシュラインがベクトルデータを格納するために使用されるキャッシュラインである場合にセットされる。この予約フラグ１１３は、ベクトルデータをベクトル処理部１００へ送信する前に、スカラ命令によってそのキャッシュラインのデータが置き換えられないようにするためのガードフラグとして機能する。
【００２０】
整列フラグ１１４は、キャッシュラインＬ０〜Ｌｎ毎に設けられており、対応するキャッシュラインにベクトルデータが格納されているか否かを判定するために利用される。本実施の形態では、キャッシュメモリが備えている各キャッシュライン毎の有効ビット（そのキャッシュラインが有効であるか否かを表示するビット）を整列フラグ１１４として利用する。
【００２１】
キャッシュ制御部１１１は、下記（ａ）〜（ｆ）の機能を有する。
【００２２】
（ａ）ベクトル処理部１００からのメモリリクエストが要求しているベクトルデータをデータアレイ１１２のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ１１２に格納されている否かを判定する。ベクトルデータをデータアレイ１１２のキャッシュライン境界で分割するとは、キャッシュラインＬ０〜Ｌｎのサイズをｋバイトとした場合、アドレス（ｎｋ−１）のデータを区切りにしてベクトルデータを分割することである。ここで、ｎは正の整数である。
【００２３】
（ｂ）データアレイ１１２に格納されていると判定した分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ１１３をセットする。
【００２４】
（ｃ）データアレイ１１２に格納されていないと判定した分割データについては、その分割データを格納するキャッシュラインを決定し、そのキャッシュラインに対応する予約フラグ１１３をセットする。更に、メモリ部１２０から該当するデータを読み込んで、上記決定したキャッシュラインに格納し、そのキャッシュラインの整列フラグ１１４をセットする。
【００２５】
（ｄ）メモリリクエストによって要求されているベクトルデータが全てデータアレイ１１２に格納されているか否かを整列フラグ１１４に基づいて判定し、全て格納されていると判定した場合、ベクトル処理部１００に対して格納完了通知を送信する。
【００２６】
（ｅ）ベクトル処理部１００から転送可通知が送られてきた場合、データアレイ１１２に格納されている、メモリリクエストによって要求されたベクトルデータを整列させてベクトル処理部１００へ送信し、その後、上記ベクトルデータが格納されていたキャッシュラインの予約フラグ１１３をリセットする。
【００２７】
（ｆ）スカラ処理部１３０からのスカラ命令を処理する機能。本実施の形態のキャッシュ制御部１１１は、スカラ命令の処理に関しては、下記（ｆ−１）、（ｆ−２）を除いて、通常のキャッシュメモリのキャッシュ制御部と同様の処理を行う。
（ｆ−１）スカラ処理部１３０からのスカラ命令によってアクセスされるデータがデータアレイ１１２上に存在しないことによりキャッシュラインのデータの置き換えを行う場合は、予約フラグ１１３がセットされていないキャッシュラインを対象にしてデータの置き換えを行う。
（ｆ−２）スカラ処理部１３０からのスカラ命令に従って書き替えるデータが予約フラグ１１３がセットされているキャッシュラインに格納されている場合は、予約フラグ１１４がリセットされるまで、上記データの書き替えを抑止する。
【００２８】
スカラ処理部１３０は、キャッシュメモリ１１０に対してスカラ命令（ロード命令、ストア命令）を発行する。
【００２９】
〔実施の形態の動作の説明〕
次に、本実施の形態の動作について説明する。
【００３０】
ベクトル処理部１００内のリクエスト制御部１０２は、命令レジスタにベクトルロード命令が格納されると、それに対応したメモリリクエストをキャッシュメモリ１１０に対して発行する。このメモリリクエストには、ベクトルロード命令によって要求されているベクトルデータの開始アドレスと要素数とが含まれている。
【００３１】
キャッシュ制御部１１１は、メモリリクエストを受信すると、それに含まれている開始アドレスと要素数とによって示されるベクトルデータをデータアレイ１１２のキャッシュライン境界で分割し、分割データを得る。その後、各分割データ毎に、その分割データが整列フラグ１１４がセットされているキャッシュラインに格納されているか否かを調べる。
【００３２】
そして、データアレイ１１２に格納されている分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ１１３をセットする。これに対して、データアレイ１１２に格納されていない分割データについては、その分割データを格納するキャッシュラインを決定し、そのキャッシュラインの予約フラグ１１３をセットする。更に、メモリ部１２０に対して、上記分割データを含むブロックのデータを要求するロードリクエストを発行し、データの到着を待つ。メモリ部１２０からのデータが到着すると、そのデータを既に決定してあるキャッシュラインに格納すると共に、そのキャッシュラインの整列フラグ１１４をセットする。
【００３３】
その後、キャッシュ制御部１１１は、ベクトルデータの分割データを格納するキャッシュラインの整列フラグ１１４が全てセットされたことを検出すると、ベクトルデータが全て揃ったことを知らせるために格納完了通知をベクトル処理部１００に送信する。
【００３４】
ベクトル処理部１００内のリクエスト制御部１０２は、格納完了通知を受信すると、ベクトルロード命令で指定されているベクトルレジスタ１０１が使用可能であることを条件にして、キャッシュメモリ１１０に対して転送可通知を送信する。これにより、キャッシュメモリ１１０内のキャッシュ制御部１１１は、予約フラグ１１３及び整列フラグ１１４がセットされているキャッシュラインに格納されているベクトルデータを整列させてベクトル処理部１００に送信し、送信が完了したキャッシュラインの予約フラグ１１３をリセットする。これにより、ベクトルデータを格納するために使用されていた各キャッシュラインもスカラ命令での置換対象となる。
【００３５】
なお、本実施の形態では、有効ビットを利用して整列フラグ１１４を実現したが有効ビットとは別に整列フラグ１１４を新たに設けるようにしても良い。
【００３６】
〔実施の形態の効果〕
本実施の形態によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。その理由は、キャッシュメモリ１１０をベクトルロードバッファの代用にすることができるからである。キャッシュメモリ１１０をベクトルロードバッファの代用にすることができる理由は、ベクトル処理部１００から要求されたベクトルデータをデータアレイ１１２のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ１１２に格納されているか否かを判定し、格納されていない分割データについてはメモリ部１２０から該当するデータを読み込んでデータアレイ１１２に格納し、ベクトルデータがデータアレイ１１２に全て格納されてからベクトル処理部１００へ整列させて送信するキャッシュ制御部１１０を備えているからである。
【００３７】
また、本実施の形態によれば、スカラ処理部１３０を停止させることなく、キャッシュメモリ１１０をベクトルロードバッファの代用として使用することができる。その理由は、キャッシュ制御部１１１が、ミスヒット時にキャッシュラインのデータの置き換えを行う場合は、予約フラグ１１３がセットされていないキャッシュラインを対象にしてデータの置き換えを行い、スカラ命令に従って書き替えるデータが予約フラグ１１３のセットされているキャッシュラインに格納されている場合は予約フラグ１１３がリセットされるまで、データの書き替えを抑止するようにしているからである。
【００３８】
〔実施例〕
次に、本実施の形態の実施例について説明する。
【００３９】
図２を参照すると、本実施例で利用するキャッシュ制御部１１１は、キャッシュヒット判定手段１１１１と、管理テーブル記憶部１１１２と、整列判定手段１１１３と、格納手段１１１４とを備えている。
【００４０】
キャッシュヒット判定手段１１１１は、下記（ｇ）〜（ｋ）の機能を有する。
【００４１】
（ｇ）リクエスト制御部１０２からのメモリリクエストによって要求されているベクトルデータをデータアレイ１１２のキャッシュライン境界で分割することにより、複数の分割データを生成する。例えば、メモリリクエストに含まれているベクトルデータの開始アドレス、要素数がそれぞれ「１９２」「２５６」、１要素が「１バイト」（説明を分かりやすくするため便宜上１バイトとする）、キャッシュラインＬ０〜Ｌｎそれぞれのサイズが「１２８バイト」であるとすると、アドレス「１９２〜２５５」の分割データと、アドレス「２５６〜３８３」の分割データと、アドレス「３８４〜４４７」の分割データとの３つの分割データを生成することになる。なお、本実施例では、リクエスト制御部１０２からのメモリリクエストには、開始アドレス、要素数に加えて、リクエスト制御部１０２がメモリリクエストを発行する契機となったベクトルロード命令を特定するベクトルロード命令ＩＤも含まれている。
【００４２】
（ｈ）リクエスト制御部１０２から送られてきたメモリリクエスト毎の管理テーブルであって、そのメモリリクエストに関連する各分割データのアドレス情報、キャッシュラインＩＤを管理する管理テーブルを生成して管理テーブル記憶部１１１２に格納し、必要に応じてその内容を更新する。分割データのアドレス情報とは、その分割データのメモリ部１２０上のアドレスを示す情報であり、キャッシュラインＩＤとは、その分割データが格納されている或いは格納されるキャッシュラインを示す情報である。図３に管理テーブルの一例を示す。この例は、ベクトルロード命令ＩＤ「ＶＬｎ」のベクトルロード命令に対応する管理テーブルであり、上記ベクトルロード命令によって要求されているベクトルデータは、アドレス「１９２〜２５５」の分割データと、アドレス「２５６〜３８３」の分割データと、アドレス「３８４〜４４７」の分割データに分割され、各分割データがそれぞれキャッシュラインＩＤ「ＩＤ１」「ＩＤ１０」「ＩＤ３」のキャッシュラインに格納されている或いは格納されることを示している。なお、本実施例では、各キャッシュラインＬ０〜ＬｎにはそれぞれキャッシュラインＩＤとして「ＩＤ１〜ＩＤｎ」が付与されている。また、以下の説明ではベクトルロード命令ＩＤ「ＶＬｎ」のベクトルロード命令を単にベクトルロード命令「ＶＬｎ」と記す場合もある。
【００４３】
（ｉ）分割データ毎に、その分割データがデータアレイ１１２に格納されているか否かを判定する。
【００４４】
（ｊ）データアレイ１１２に格納されていると判定した分割データについては、その分割データが格納されているキャッシュラインに対応する予約フラグ１１３をセット（本実施例では、“１”を設定）する。
【００４５】
（ｋ）データアレイ１１２に格納されていないと判定した分割データについては、その分割データを含んだブロックのデータを要求するロードリクエストをメモリ部１２０に対して発行し、更に、上記分割データを格納するキャッシュラインを決定してそのキャッシュラインに対応する予約フラグ１１３をセットする。
【００４６】
整列判定手段１１１３は、管理テーブル記憶部１１１２に登録されている管理テーブル毎に、その管理テーブルに登録されているキャッシュラインＩＤに対応する整列フラグが全てセットされているか否かを判定することにより、その管理テーブルで管理しているメモリリクエストによって要求されているベクトルデータが全てデータアレイ１１２上に存在するか否かを判定し、全て存在すると判定した場合、ベクトル処理部１００に対して格納完了通知（その管理テーブルに登録されているベクトルロード命令ＩＤを含む）を送信する。その後、ベクトル処理部１００から転送可通知（ベクトルロード命令ＩＤを含む）が送られてきたことを条件として、管理テーブルに格納されているアドレス情報およびキャッシュラインＩＤに基づいて、該当するベクトルデータを整列してベクトル処理部１００へ送信する。
【００４７】
格納手段１１１４は、メモリ部１２０から送られてきたデータをデータアレイ１１２に格納し、データを格納したキャッシュラインの整列フラグ１１４をセットする。
【００４８】
なお、ここでは説明を省略するが、キャッシュ制御部１１１は、スカラ処理部１３０からのスカラ命令を処理する機能を有している。この機能は、前述した実施の形態の通りである。また、本実施例においても、キャッシュメモリが備えている有効ビットを整列フラグ１１４として利用する。
【００４９】
〔実施例の動作の説明〕
次に、本実施例の動作を詳細に説明する。
【００５０】
ベクトル処理部１００内のリクエスト制御部１０２は、命令レジスタにベクトルロード命令がセットされると、それに対応したメモリリクエストをキャッシュメモリ１１０に対して発行する。このメモリリクエストには、ベクトルロード命令が要求しているベクトルデータの開始アドレス及び要素数と、ベクトルロード命令ＩＤとが含まれている。
【００５１】
キャッシュメモリ１１０内のキャッシュヒット判定手段１１１１は、リクエスト制御部１０２からメモリリクエストが送られてくると、図４の流れ図に示す処理を行う。今、例えば、メモリリクエストに含まれている開始アドレス、要素数、ベクトルロード命令ＩＤがそれぞれ「１９２」「２５６」「ＶＬｎ」であり、１要素が「１バイト」、キャッシュラインＬ０〜Ｌｎのサイズがそれぞれ「１２８バイト」であるとすると、キャッシュヒット判定手段１１１１において次のような処理が行われる。
【００５２】
先ず、キャッシュヒット判定手段１１１１は、メモリリクエストによって要求されているベクトルデータ（アドレス「１９２〜４４７」のデータ）を、データアレイ１１２のキャッシュライン境界で分割することにより、複数の分割データを生成する。この例では、アドレス「１９２〜２５５」の分割データＤ１と、アドレス「２５６〜３８３」の分割データＤ２と、アドレス「３８４〜４４７」の分割データＤ３との３つの分割データが生成される。
【００５３】
次に、図３に示すような管理テーブルを生成し、管理テーブル記憶部１１１２に格納する（ステップＳ４１）。但し、この時点では、ベクトルロード命令ＩＤ「ＶＬｎ」と各分割データＤ１〜Ｄ３のアドレス情報だけが登録され、キャッシュラインＩＤは登録されていない。
【００５４】
その後、キャッシュヒット判定手段１１１１は、最初の分割データＤ１に注目し、それがデータアレイ１１２に格納されているか否かを判定する（ステップＳ４２、Ｓ４３）。この判定は、分割データＤ１のアドレス情報によって示されるアドレスの内の何れか１つが、整列フラグ１１４がセットされているキャッシュラインに格納されているか否かを判定することにより行う。
【００５５】
そして、分割データＤ１がデータアレイ１１２に格納されている場合は、分割データＤ１が格納されているキャッシュラインに対応する予約フラグ１１３をセットし、その後、管理テーブルに分割データＤ１のキャッシュラインＩＤとして上記キャッシュラインのＩＤを登録する（ステップＳ４３がＹＥＳ、Ｓ４４、Ｓ４５）。
【００５６】
これに対して、分割データＤ１がデータアレイ１１２に格納されていない場合は、予約フラグ１１３がセットされていないキャッシュラインの中から分割データＤ１を格納するキャッシュラインを１つ決定し、更に、メモリ部１２０に対して分割データＤ１を含むブロックのデータを要求するメモリリクエストを発行する（ステップＳ４３がＮＯ、Ｓ４８）。その後、上記決定したキャッシュラインに対応する予約フラグ１１３をセットし、更に、管理テーブルに分割データＤ１のキャッシュラインＩＤとして上記決定したキャッシュラインのＩＤを登録する（ステップＳ４４、Ｓ４５）。
【００５７】
そして、ステップＳ４５の処理が終了すると、次の分割データＤ２に注目し（ステップＳ４７）、前述した処理と同様の処理を行う。以上の処理を分割データＤ３まで行い、未注目の分割データがなくなると（ステップＳ４６がＹＥＳ）、キャッシュヒット判定手段１１１１は、処理を終了する。
【００５８】
一方、格納手段１１１４では、メモリ部１２０からデータが送られてくる毎に、そのデータをデータアレイ１１２の該当するキャッシュラインに格納し、そのキャッシュラインの整列フラグ１１４をセットする処理を行っている（図６のステップＳ６０、Ｓ６１）。
【００５９】
また、整列判定手段１１１３は、管理テーブル記憶部１１１２に格納されている管理テーブル毎に、図５の流れ図に示す処理を行っている。
【００６０】
整列判定手段１１１３は、例えば、図３に示す管理テーブルが管理テーブル記憶部１１１２に登録されると、管理テーブルに登録されているキャッシュラインＩＤ「ＩＤ１、ＩＤ１０、ＩＤ３」に対応するキャッシュライン「Ｌ１、Ｌ１０、Ｌ３」の整列フラグ１１４が全てセットされるのを待つことにより、ベクトルロード命令「ＶＬｎ」によって要求されているベクトルデータがデータアレイ１１２上に全て揃うのを待つ（ステップＳ５０）。
【００６１】
そして、ベクトルデータが全て揃うと、ベクトル処理部１００内のリクエスト制御部１０２に対して格納完了通知を送信し、リクエスト制御部１０２から転送可通知が送られてくるのを待つ（ステップＳ５０がＹＥＳ、Ｓ５１、Ｓ５２）。なお、格納完了通知には、管理テーブルに登録されているベクトルロード命令ＩＤ「ＶＬｎ」が含まれている。
【００６２】
リクエスト制御部１０２は、ベクトルロード命令「ＶＬｎ」によって指定されているベクトルレジスタが使用可能な状態であることを条件にして、整列判定手段１１１３に対して転送可通知を送信する。この転送可通知には、ベクトルロード命令ＩＤ「ＶＬｎ」が含まれている。
【００６３】
整列判定手段１１１３はベクトルロード命令ＩＤ「ＶＬｎ」を含む転送可通知を受信すると、ベクトルロード命令「ＶＬｎ」によって要求されているベクトルデータをベクトル処理部１００へ送信する（ステップＳ５３）。その際、整列判定手段１１１３は、図３に示した管理テーブルを参照し、先ず、キャッシュラインＬ１に登録されている最若番のアドレス「１９２〜２５５」のデータ、次いでキャッシュラインＬ１０に登録されているアドレス「２５６〜３８３」のデータ、最後にキャッシュラインＬ３に登録されているアドレス「３８４〜４４７」のデータをベクトル処理部１００へ送信する。即ち、ベクトルデータを整列させてベクトル処理部１００へ送信する。
【００６４】
その後、整列判定手段１１１３は処理対象にしていた図３の管理テーブルを削除すると共に、その管理テーブルに登録されていたキャッシュラインＩＤに対応する予約フラグをリセットし（ステップＳ５４）、上記管理テーブルに対する処理を終了する。
【００６５】
〔実施例の効果〕
本実施例によれば、ベクトル処理装置のハードウェア量および消費電力を低減できる。その理由は、キャッシュメモリ１１０をベクトルロードバッファの代用とすることができるからである。キャッシュメモリ１１０をベクトルロードバッファの代用にすることができる理由は、ベクトル処理部１００から要求されたベクトルデータをデータアレイ１１２のキャッシュライン境界で分割することにより得られる分割データ毎に、その分割データがデータアレイ１１２に格納されているか否かを判定するキャッシュヒット判定手段１１１１と、データアレイ１１２に格納されていない分割データについてはメモリ部１２０から該当するデータを読み込んでデータアレイ１１２に格納し、ベクトルデータがデータアレイ１１２に全て格納されてから整列させてベクトル処理部１００へ送信する整列判定手段１１１３とを備えているからである。
【産業上の利用可能性】
【００６６】
本発明は、スーパコンピュータ等に適用すると好適である。
【図面の簡単な説明】
【００６７】
【図１】本発明にかかるベクトル処理装置の実施の形態の構成例を示すブロック図である。
【図２】実施の形態の実施例で使用するキャッシュメモリ１１０の構成例を示すブロック図である。
【図３】管理テーブルの一例を示す図である。
【図４】キャッシュヒット判定手段１１１１の処理例を示す流れ図である。
【図５】整列判定手段１１１３の処理例を示す流れ図である。
【図６】格納手段１１１４の処理例を示す流れ図である。
【図７】従来のベクトル処理装置の構成例を示すブロック図である。
【符号の説明】
【００６８】
１００…ベクトル処理部
１０１…ベクトルレジスタ
１０２…リクエスト制御部
１１０…キャッシュメモリ
１１１…キャッシュ制御部
１１１１…キャッシュヒット判定手段
１１１２…管理テーブル記憶部
１１１３…整列判定手段
１１１４…格納手段
１１２…データアレイ
１１３…予約フラグ
１１４…整列フラグ
１２０…メモリ部
１３０…スカラ処理部
【図１】
0004687729.tif 000002
【図２】
0004687729.tif 000003
【図３】
0004687729.tif 000004
【図４】
0004687729.tif 000005
【図５】
0004687729.tif 000006
【図６】
0004687729.tif 000007
【図７】
0004687729.tif 000008