(57)【特許請求の範囲】
【請求項１】
ロード命令による記憶アクセス要求とプリフェッチ命令による記憶アクセス要求とを識別させる識別情報を付加して記憶アクセス要求を発行する１つもしくは複数の命令プロセッサと、
上記記憶アクセス要求の対象となる記憶装置と、
上記一つもしくは複数のプロセッサから発行される記憶アクセス要求を受けて上記記憶装置に送出する送出回路と、
上記記憶装置から返されるアクセス結果を要求元の命令プロセッサに返送する返送回路とを有し、
上記送出回路と上記返送回路の少なくとも一方は、上記識別情報により識別して、ロード命令による記憶アクセス要求をプリフェッチ命令による記憶アクセス要求より優先して処理することを特徴とするプロセッサシステム。
【請求項２】
一つもしくは複数の命令プロセッサと、上記命令プロセッサからの記憶アクセス要求の対象である一つもしくは複数の記憶装置と、上記命令プロセッサから発行される記憶アクセス要求を受けて、上記記憶装置に記憶アクセス要求を送出し、アクセス結果を要求元のプロセッサに返送する一つもしくは複数の記憶制御装置とを有するプロセッサシステムに用いられる記憶制御装置であり、
上記記憶制御装置は、上記１つもしくは複数の命令プロセッサから発行される記憶アクセス要求をプリフェッチ命令による記憶アクセス要求かロード要求による記憶アクセス要求かに区別し、ロード命令による記憶アクセス要求を優先して処理する処理手段を有する記憶制御装置。
【請求項３】
上記処理手段は、上記１つもしくは複数の命令プロセッサから発行される記憶アクセス要求をプリフェッチ命令による記憶アクセス要求かロード要求による記憶アクセス要求かに区別してそれぞれ要求キューを形成し、ロード要求による記憶アクセス要求を優先して上記記憶装置に送出する送出回路を有する請求項２記載の記憶制御装置。
【請求項４】
上記処理手段は、上記記憶装置から得られるアクセス結果をアクセス要求元のプロセッサ毎に、かつプリフェッチ命令によるアクセス要求の結果かロード命令によるアクセス要求の結果かで区別してキューを形成し、ロード命令によるアクセス要求の結果を優先してアクセス要求元に返送する返送回路を有する請求項２記載の記憶制御装置。
【請求項５】
一つもしくは複数の命令プロセッサと、上記命令プロセッサからの記憶アクセス要求の対象である一つもしくは複数の記憶装置と、上記命令プロセッサから発行される記憶アクセス要求を受けて、上記記憶装置に記憶アクセス要求を送出する一つもしくは複数の記憶制御装置とを有するプロセッサシステムに用いる命令プロセッサであり、
上記命令プロセッサには、前記記憶アクセス要求のうちプリフェッチ命令による記憶アクセス要求とロード要求による記憶アクセス要求を区別し、ロード命令による記憶アクセス要求を優先して前記記憶制御装置に発行するアクセス要求発行回路を有することを特徴とする命令プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータキャッシュを有する命令プロセッサのプロセッサシステムに関し、特に命令プロセッサを高速に動作させるための記憶アクセス制御に関する。
【０００２】
【従来の技術】
近年、半導体プロセス、論理方式の進歩により、命令プロセッサの動作速度の向上が著しい。これに対して主記憶は大容量化することが重要であるため、高速化が難しく、主記憶アクセス性能がボトルネックとなっている。この課題を解決する手段の一つに、命令プロセッサに近いところに高速に動作する小容量のデータキャッシュを設け、主記憶の一部の写しを持つ方法がある。
【０００３】
命令プロセッサがロード命令を処理する場合、主記憶よりデータを読み出し、レジスタに書き込むと同時にデータキャッシュに登録する。一旦、データキャッシュに登録されたデータに対してロード命令があった場合には、命令プロセッサは主記憶をアクセスせずに、データキャッシュに対して高速なロード処理を行なうことができる。なお、主記憶アクセスパターンに局所性があることを考慮して、データキャッシュへのデータ登録は真に必要なデータ(クリティカルデータ)のみ行なうのではなく、アドレスが連続する数10Byteのデータをブロックとし、ブロック単位(ライン)でまとめて登録する方式が一般的である。
【０００４】
ロード命令で使用するデータがあらかじめ予見できる場合には、特開平10-283192号に示されているようにプリフェッチ命令を用いて、先行してデータキャッシュにデータの登録を行なう方法がある。ロード命令を処理する際に、データの登録が既に完了しているほど充分前にプリフェッチ命令を発行できれば、命令プロセッサは必要なデータをデータキャッシュから得ることができる。
【０００５】
ロード命令で使用するデータがあらかじめ予見できない場合や、予見できたとしても、プリフェッチ命令によるデータ登録完了後でロード命令処理前に必要なデータがデータキャッシュから追い出されることがある。ロード要求のあったデータが、データキャッシュ上にない状態をキャッシュミスという。ロードデータの読み出しが完了するまで、ロードデータを使用する後続の命令の実行が中断されるため、キャッシュミスしたロードデータの読み出しを短時間で完了することは性能上重要である。この問題を解決する手段として、特開平5-233422号に示されているように、主記憶制御装置において、ストア処理より、ロード処理を優先させることによって、ロード処理時間を短縮する方式が知られている。
【０００６】
【発明が解決しようとする課題】
命令プロセッサにより先行して発行されたプリフェッチ命令の要求が完了する前に、後続のロード命令がキャッシュミスするとロード要求の処理がプリフェッチ要求処理の影響を受けて遅くなる。これにより、ロード要求を送出した命令プロセッサがロード処理待ちで中断している時間が長くなり、システムの性能が低下する。
【０００７】
【課題を解決するための手段】
プリフェッチ要求かロード要求かを区別する信号を要求に付加して、命令プロセッサから主記憶制御装置に対して要求を発行し、主記憶制御装置はロード要求を優先的に処理する。
【０００８】
具体的には命令プロセッサと主記憶制御装置でロード要求とプリフェッチ要求で別々のキューを持ち、セレクタにおいてロード要求を優先的に選択する。またロード要求を実行中であることを先の処理回路にあらかじめ伝達しておくことで、ロード要求を優先的に処理する。
【０００９】
【発明の実施の形態】
図1は、本発明の一実施例のプロセッサシステムである。
【００１０】
本システムは、命令プロセッサ1と命令プロセッサ2、これらの命令プロセッサからのロード要求、ストア要求、プリフェッチ要求を処理する記憶制御装置3、記憶制御装置3からアクセスされる主記憶装置4からなる。命令プロセッサ1と主記憶制御装置3は、要求(リクエスト)を送出するためのアドレスパス11とデータを送受信するための双方向切り替えデータパス12と切り替え制御のための信号線17で結ばれる。同様に、命令プロセッサ2と主記憶制御装置3は、アドレスパス13と双方向切り替えデータパス14と切り替え制御のための信号線18で結ばれる。記憶制御装置3と主記憶装置4は、アドレスパス15と双方向切り替えデータパス16で結ばれる。
【００１１】
アドレスユニット38は、ロード命令、ストア命令、プリフェッチ命令を処理する。
【００１２】
アドレスユニット38がストア命令を処理する際、ストア要求のアドレスをストア要求キュー31に格納し、ストアデータをレジスタ36からストアデータキュー34に格納する。なお、ストア要求キュー31にリクエストを登録する場合、登録したいストアリクエストのアドレスとロード要求キュー32とプリフェッチ要求キュー33の全てのリクエストのアドレスと比較して、アドレスが一致した場合は、ロード要求キュー32とプリフェッチ要求キュー33のリクエストが送出され、一致するアドレスがなくなるまで登録を中断する。
【００１３】
アドレスユニット38がロード命令を処理する際、まず、データキャッシュ37に要求データが登録されているかどうかチェックする。要求データが登録されていた場合、データキャッシュ37に登録されたデータをアドレスユニット38を介してレジスタ36に転送して処理を完了する。要求データが登録されていなかった場合、ロード要求キュー32にリクエストアドレスを格納し、データがリプライバッファ35に戻ってきて、データがレジスタ36に格納された段階で処理を完了する。
【００１４】
アドレスユニット38がプリフェッチ命令を処理する際、まず、データキャッシュ37に要求データが登録されているかどうかチェックする。要求データが登録されていた場合、何もせずに処理を完了する。要求データが登録されていなかった場合、プリフェッチ要求キュー33にリクエストアドレスを格納し、処理を完了する。
【００１５】
プライオリティ回路21はキュー31〜33に格納されたリクエストを、どの順番でアドレスパス11に送出するかを決定する回路である。この際、リクエストにはアドレスに加えて、どの種類の命令(ロード、プリフェッチ、ストア)によるリクエストであるかという２ビットの情報を付加して送出する。具体的には図３に示すようにロードリクエストは図2(a)のフォーマットで、プリフェッチリクエストは図2(b)のフォーマットで、ストアリクエストは図2(c)のフォーマットでリクエストを送出する。命令プロセッサはロード命令とプリフェッチ命令によるリクエストにはさらに要求プロセッサ番号とID番号を付加して送出する。
【００１６】
セレクタ61はリクエストフォーマットの最初の２ビットを見てどの種類の命令によるリクエストかを判断し、対応したキューにリクエストを送出するための回路であり、ロードリクエストはロード要求キュー42に、プリフェッチリクエストはプリフェッチ要求キュー43に、ストアリクエストはストア要求キュー41に送出する。また、セレクタ61はストアリクエストを処理する際、ロード要求キュー42とプリフェッチ要求キュー43に登録されたリクエストとのアドレス比較を行ない、一致した場合は同一アドレスの先行リクエストが次の要求キューに送出されるまで後続リクエストのストア要求キュー41への送出を中断する。
【００１７】
プライオリティ回路21の順序決定方法を図４のフローに示す。
【００１８】
ストア要求キュー41、ロード要求キュー42、プリフェッチ要求キュー43にいずれも一つ以上のエントリの空きがある場合において処理を行なう。空きがない場合には、空きができるまで処理を待つ。
【００１９】
ロード要求キュー32にリクエストが存在する場合、ロード要求キュー32の最も古いリクエストとストア要求キュー31の全てのリクエストのアドレスを比較する。アドレスの一致するリクエストがなければ、ロード要求キュー32の最も古いリクエストをアドレスパス11とセレクタ61を経由してロード要求キュー42に送出する。リクエストのアドレスが一致した場合、データパス12の使用権を確保した後、ストア要求キュー31の全てのリクエストをアドレスパス11とセレクタ61を経由してストア要求キュー41に送出すると同時に、ストアデータキュー34の全てのストアデータ(フォーマット図2(f))を双方向データパス12と切り替え制御回路72とプライオリティ回路23を経由してストアデータキュー51に格納する。その後、ロード要求キュー32の最も古いリクエストをアドレスパス11とセレクタ61を経由してロード要求キュー42に送出する。
【００２０】
ロード要求キュー32にリクエストが存在せず、かつプリフェッチ要求キュー33にリクエストが存在する場合、プリフェッチ要求キュー33の最も古いリクエストとストア要求キュー31の全てのリクエストのアドレスを比較する。アドレスの一致するリクエストがなければ、プリフェッチ要求キュー33の最も古いリクエストをアドレスパス11とセレクタ61を経由してプリフェッチ要求キュー43に送出する。リクエストのアドレスが一致した場合、データパス12の使用権を確保した後、ストア要求キュー31の全てのリクエストをアドレスパス11とセレクタ61を経由してストア要求キュー41に送出すると同時に、ストアデータキュー34の全てのストアデータをデータパス12と切り替え制御回路72とプライオリティ回路23を経由してストアデータキュー51に格納する。その後、プリフェッチ要求キュー33の最も古いリクエストをアドレスパス11とセレクタ61を経由してプリフェッチ要求キュー43に送出する。
【００２１】
ロード要求キュー32にリクエストが存在せず、かつプリフェッチ要求キュー33にリクエストが存在しない場合、データパス12の使用権を確保した後、ストア要求キュー31の最も古いリクエストをアドレスパス11とセレクタ61を経由してストア要求キュー41に送出すると同時に、ストアデータキュー34の最も古いリクエストのストアデータをデータパス12と切り替え制御回路72とプライオリティ回路23を経由してストアデータキュー51に格納する。
【００２２】
プロセッサ2からも同様にアドレスパス13とセレクタ62を経由して、ロードリクエストはロード要求キュー45に、プリフェッチリクエストはプリフェッチ要求キュー46に、ストアリクエストはストア要求キュー44に格納される。また、ストアデータはデータパス14と切り替え制御回路73とプライオリティ回路24を経由してストアデータキュー54に格納される。
【００２３】
次に、命令プロセッサ1からのロード要求キュー42のリクエストと、命令プロセッサ2からのロード要求キュー45のリクエストは、全ロード要求キュー48に格納される。同様に、命令プロセッサ1からのプリフェッチ要求キュー43のリクエストと、命令プロセッサ2からのプリフェッチ要求キュー46のリクエストは、全プリフェッチ要求キュー49に格納される。命令プロセッサ1からのストア要求キュー41のリクエストと、命令プロセッサ2からのストア要求キュー44のリクエストは、全ロード要求キュー48と全プリフェッチ要求キュー49に同一アドレスのリクエストが存在しなければ、全ストア要求キュー47に格納される。同時に、命令プロセッサ1からのストアデータキュー51のデータと、命令プロセッサ2からのストアデータキュー54のデータは、全ストアデータキュー57に格納される。
【００２４】
プライオリティ回路22はプライオリティ回路21と同様の順序決定方法でリクエストの処理順序を決定する。ただし、この場合リクエストキューに送出するのではなく、アドレスパス15を経由してリクエストを主記憶装置4に送出することにより要求を実行する。プライオリティ回路22によって決定されたデータパスの方向切り替えは、切り替え制御回路71が行なう。
【００２５】
全ロード要求キュー48のリクエストが実行された場合、主記憶装置4はロードデータをデータパス16と切り替え制御回路71を経由してセレクタ63に返す。セレクタ63はプライオリティ回路22からの信号を受けて、それがプロセッサ1からのリクエストであった場合にはロードデータキュー52に、プロセッサ2からのリクエストであった場合にはロードデータキュー55に返す。また、リクエスト実行と同時にプライオリティ回路22は、実行中のリクエストがプロセッサ1からのロードであった場合には、プライオリティ回路23に対して実行中であることを通知する。実行中のリクエストがプロセッサ2からのロードであった場合には、プライオリティ回路24に対して実行中であることを通知する。
【００２６】
全プリフェッチ要求キュー49のリクエストが実行された場合、主記憶装置4はプリフェッチデータをデータパス16と切り替え制御回路71を経由してセレクタ63に返す。セレクタ63はプライオリティ回路22からの信号を受けて、それがプロセッサ1からのリクエストであった場合にはプリフェッチデータキュー53に、プロセッサ2からのリクエストであった場合にはプリフェッチデータキュー56に返す。
【００２７】
全ストア要求キュー47のリクエストが実行された場合、主記憶制御装置3は全ストアデータキュー57のデータを切り替え制御回路71とデータパス16を経由して主記憶のリクエストアドレスにストアする。
【００２８】
プライオリティ回路23の順序決定方法を図５のフローに示す。
【００２９】
プロセッサ1へのロードデータキュー52にロードデータが一つでも存在する場合、切り替え制御回路72によってデータパス12の使用権を確保し、ロードデータキュー52の全てのロードデータを切り替え制御回路72とデータパス12と切り替え制御回路74を経由してプロセッサ1のリプライバッファー35に送出(フォーマット図2(d))する。この際同時に、プライオリティ回路21がストアデータを送出するために、切り替え制御回路74を用いて使用権を確保しようとしたときも、ロードデータの送出を優先させる。使用権の情報は信号線17によって、切り替え制御回路72と74をお互いに伝達する。
【００３０】
プロセッサ1へのロードデータキュー52にロードデータがなく、プライオリティ回路23にプライオリティ回路22からロードリクエスト実行中の通知がなく、プロセッサ1へのプリフェッチデータキュー53にライン分以上のプリフェッチデータが存在する場合、データパス12の使用権を確保し、プリフェッチデータキュー53の全てのプリフェッチデータをデータパス12を経由してプロセッサ1のリプライバッファー35に送出(フォーマット図2(e))する。この際同時に、プライオリティ回路21がストアデータを送出するためにデータパス12の使用権を確保しようとしたときも、プリフェッチデータの送出を優先させる。
【００３１】
プロセッサ1へのロードデータキュー52にロードデータがなく、プライオリティ回路23にプライオリティ回路22からロードリクエスト実行中の通知がなく、プロセッサ1へのプリフェッチデータキュー53にライン分未満のプリフェッチデータが存在する場合、データパス12の使用権を確保し、プリフェッチデータキュー53の最も古いプリフェッチデータをデータパス12を経由してプロセッサ1のリプライバッファー35に送出する。この際同時に、プライオリティ回路21がストアデータを送出するためにデータパス12の使用権を確保しようとしたときは、ストアデータの送出を優先させる。
【００３２】
プロセッサ2へのロードデータキュー55とプロセッサ2へのプリフェッチデータキュー56とプライオリティ回路24と切り替え制御回路73とデータパス14と信号線18は、プロセッサ1に対する処理と同様の処理を命令プロセッサ2に対して行なう。
【００３３】
ロード命令によるクリティカルデータがリプライバッファー35に格納された際には、リプライバッファー35からレジスタ36へクリティカルデータを送出する。プリフェッチ命令によるデータとロード命令によるデータは、リプライバッファ35において同一ラインのデータが揃った時点でデータキャッシュ37に登録する。
【００３４】
もう一つの実施例を図６に示す。図６の実施例では命令プロセッサと主記憶制御装置がバス結合になっている。バスアービトレーションプロトコルは、奥川峻史著「並列計算機アーキテクチャー」に示される優先順位付きプロトコルを用いる。この際ロードミスリクエストはプリフェッチリクエスト
やストアリクエストよりも優先順位の高いプロトコルとして取り扱う。
【００３５】
本実施例では、命令プロセッサの数を2、主記憶制御装置の数を1、主記憶装置の数を1としたが、命令プロセッサ、主記憶制御装置、主記憶装置ともに任意の数で実現可能である。また、命令プロセッサ、主記憶制御装置、主記憶装置の接続形態も図示したものに限定されない。
【００３６】
【発明の効果】
先行して大量のプリフェッチリクエストが主記憶制御装置に対して発行されていた場合にも、後続のロードリクエストを優先的に処理し、ロード処理待ちでプロセッサが中断している時間を軽減することができる。メモリレイテンシで数十％、実行時間で数％の性能向上が可能である。
【００３７】
これにより、先行しているプリフェッチ要求の処理時間が増加することが考えられる。しかし、プリフェッチ要求はレジスタに対する書き込みはないため、完了が遅れることによる性能の低下は小さい。プリフェッチ要求のデータはロード要求のデータより後に必要としているデータであるのに対し、ロード要求のデータはプロセッサが直に必要としているデータである。従って、ロード要求を優先的に処理することの効果は大きい。
【図面の簡単な説明】
【図１】本発明の一実施例のプロセッサシステムの詳細図である。
【図２】図１のプロセッサシステムで用いるリクエストフォーマットとデータフォーマットである。
【図３】命令プロセッサがリクエスト発行時に生成するリクエストフェーマットの生成手順の詳細図である。
【図４】図１のプライオリティ回路21の順序決定手順のフロー図である。
【図５】図１のプライオリティ回路23の順序決定手順のフロー図である。
【図６】本発明のもう一つの実施例のプロセッサシステムの詳細図である。
【符号の説明】
1,2：命令プロセッサ
3：記憶制御装置
4：主記憶装置
11,13,15：アドレスパス
12,14,16：データパス
17,18：信号線
21,22,23,24：プライオリティ回路
31：ストア要求キュー
32：ロード要求キュー
33：プリフェッチ要求キュー
34：ストアデータキュー
35：リプライバッファー
36：レジスタ
37：データキャッシュ
38：アドレスユニット
41,44：ストア要求キュー
42,45：ロード要求キュー
43,46：プリフェッチ要求キュー
47：全ストア要求キュー
48：全ロード要求キュー
49：全プリフェッチ要求キュー
51,54：ストアデータキュー
52,55：ロードデータキュー
53,56：プリフェッチデータキュー
57：全ストアデータキュー
61,62,63：セレクタ
71,72,73,74：切り替え制御回路。
【図１】
0003873589.tif 000002
【図２】
0003873589.tif 000003
【図３】
0003873589.tif 000004
【図４】
0003873589.tif 000005
【図５】
0003873589.tif 000006
【図６】
0003873589.tif 000007