(57)【要約】【課題】演算処理装置におけるストリームアクセスの性能向上及び消費電力の低減を図る。【解決手段】命令発行部から発行されたストア命令によるキャッシュメモリに対する書き込み処理要求をストリームウェイトフラグを設けたエントリに登録し、登録されている書き込み処理要求の内からストリームウェイトフラグが非設定状態の書き込み処理要求をキャッシュメモリに対しパイプライン処理を行うパイプライン処理部に出力するキャッシュ書き込み処理キューを備え、ストア命令に付加されたストリームフラグが設定されている場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、ストリームウェイトフラグを設定状態にして書き込み処理要求をエントリに登録するとともに、同一のデータ領域に対するストア命令による書き込み処理要求を１つの書き込み処理要求にまとめて保持する。【選択図】図２
2014063385.tif 000002
【特許請求の範囲】
【請求項１】
プログラムをデコードし、デコード結果に応じて命令を発行する命令発行部と、
キャッシュ書込み抑止フラグを設けた複数のエントリを有し、前記命令発行部から発行された前記命令がストア命令である場合に、キャッシュメモリに対する当該ストア命令による書き込み処理要求を前記エントリに登録し、登録されている書き込み処理要求の内からキャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力するバッファ部と、
前記バッファ部から出力された書き込み処理要求を受けて、前記キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行うパイプライン処理部とを備え、
前記バッファ部は、供給される前記ストア命令に付加されている第１のフラグが設定されている場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、前記キャッシュ書込み抑止フラグを設定状態にし前記ストア命令による書き込み処理要求を前記エントリに登録するとともに、同一のデータ領域に対する前記ストア命令による書き込み処理要求を１つの書き込み処理要求にまとめて保持することを特徴とする演算処理装置。
【請求項２】
前記バッファ部は、供給される前記ストア命令に付加されている、前記第１のフラグとは異なる第２のフラグが設定されている場合には、当該ストア命令が同一のデータ領域に対する前記ストア命令の内の最後のストア命令であると判断して、前記ストア命令による書き込み処理要求を前記エントリに登録するときに前記キャッシュ書込み抑止フラグを非設定状態にすることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記バッファ部は、供給される前記ストア命令に示されるアクセスアドレス及びデータ長に基づいて、当該ストア命令が１回の前記パイプライン処理で書き込み可能な連続データ長における最後のデータに係るストア命令であると判断した場合には、前記ストア命令による書き込み処理要求を前記エントリに登録するときに前記キャッシュ書込み抑止フラグを非設定状態にすることを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記第１のフラグは、連続したデータ領域に対する連続アクセスであるストリームアクセスを示すフラグであることを特徴とする請求項１〜３の何れか１項に記載の演算処理装置。
【請求項５】
前記第１のフラグは、連続したデータ領域に対する連続アクセスであるストリームアクセスを示すフラグであり、
前記第２のフラグは、前記ストリームアクセスの完了を示すフラグであることを特徴とする請求項２又は３記載の演算処理装置。
【請求項６】
演算処理装置の命令発行部がプログラムをデコードしてデコード結果に応じた命令を発行し、
前記発行された命令がストア命令である場合に、キャッシュ書込み抑止フラグを設けた複数のエントリを有する前記演算処理装置のバッファ部が、キャッシュメモリに対する当該ストア命令による書き込み処理要求を前記エントリに登録し、
前記バッファ部が、前記エントリに登録されている書き込み処理要求の内から前記キャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力し、
前記演算処理装置のパイプライン処理部が、前記出力された書き込み処理要求を受けて、前記キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行い、
前記バッファ部が、前記エントリに前記書き込み処理要求を登録する際、前記ストア命令に付加されている第１のフラグが設定されている場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、前記キャッシュ書込み抑止フラグを設定状態にし、同一のデータ領域に対する前記ストア命令による書き込み処理要求を１つの書き込み処理要求にまとめて保持することを特徴とする演算処理装置の制御方法。
【請求項７】
前記演算処理装置のバッファ部が、前記キャッシュ書込み抑止フラグが設定状態で登録された場合であって、処理要求が前記キャッシュ書込み抑止フラグが設定状態のまま所定期間が経過したとき、又は、前記演算処理装置のバッファ部のエントリに空きがなくなったとき、前記キャッシュ書込み抑止フラグを初期化することを特徴とする請求項６記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、連続したアドレスのデータ領域に対する連続アクセスであるストリームアクセスの性能向上のための技術に、ハードウェアプリフェッチ技術がある。ハードウェアプリフェッチ技術は、キャッシュライン単位（例えば１２８バイトなど）で連続アクセスがあることをハードウェアで検出し、将来必要になるであろうデータを事前にキャッシュメモリに登録すべくプリフェッチを行う技術である。
【０００３】
マイクロプロセッサに書き込みバッファを配置し、メモリへの書き込みを書き込みバッファに記憶し、メモリバスやキャッシュメモリが使用できるときに書き込みバッファの内容をキャッシュメモリ又はメインメモリに非同期で書き込む技術が提案されている（例えば、特許文献１参照）。また、ストアデータを保持するストアバッファ及びライトバッファを有し、ストアバッファからライトバッファへストアデータを転送させる際に、ストアデータのマージ処理を行う技術が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１５２５６６号公報
【特許文献２】特開２００６−４８１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ハードウェアプリフェッチ技術は、キャッシュメモリにキャッシュミスが発生するキャッシュミスケースにおける主記憶装置等へのアクセスレーテンシによる性能オーバーヘッドを隠蔽することが可能である。しかし、ハードウェアプリフェッチ技術は、キャッシュメモリにヒットするキャッシュヒットケースにおけるストリームアクセスの性能向上の効果はない。
【０００６】
また、ストリームアクセスが完了したことをハードウェアにより検出することは難しい。そのため、ハードウェアプリフェッチ技術を用いると、ストリームアクセスの最後には不要なデータまでプリフェッチしてしまうのが一般的であり、ハードウェアプリフェッチと同様な手法では、より細かい数命令単位でストリームアクセスを高精度に検出するのは難しいという課題があった。さらに、キャッシュメモリへの書き込み回数を低減することは行われなかったため、消費電力を低減させるという発想がなかった。
【０００７】
１つの側面では、本発明の目的は、演算処理装置におけるストリームアクセスの性能を向上させるとともに消費電力を低減することにある。
【課題を解決するための手段】
【０００８】
演算処理装置の一態様は、プログラムをデコードしデコード結果に応じて命令を発行する命令発行部と、キャッシュ書込み抑止フラグを設けた複数のエントリを有し、キャッシュメモリに対するストア命令による書き込み処理要求をエントリに登録し、登録されている書き込み処理要求の内からキャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力するバッファ部と、バッファ部から出力された書き込み処理要求を受けて、キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行うパイプライン処理部とを備える。バッファ部は、供給されるストア命令に付加されている第１のフラグが設定されている場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、キャッシュ書込み抑止フラグを設定状態にしストア命令による書き込み処理要求をエントリに登録する。また、バッファ部は、同一のデータ領域に対するストア命令による書き込み処理要求を１つの書き込み処理要求にまとめて保持する。
【発明の効果】
【０００９】
発明の一態様においては、同一のデータ領域に対するストア命令による書き込み処理要求が１つの書き込み処理要求にまとめられ、キャッシュメモリに対する書き込み回数を削減して性能を向上させることができるとともに消費電力を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における演算処理装置の構成例を示す図である。
【図２】本実施形態におけるキャッシュ書き込み処理キューの構成例を示す図である。
【図３】本実施形態におけるストア命令のキャッシュ書き込み処理キューへの登録処理を示すフローチャートである。
【図４】本実施形態におけるキャッシュアクセスのパイプライン動作の一例を示す図である。
【図５】従来技術でのキャッシュアクセスのパイプライン動作の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図面に基づいて説明する。
演算処理装置では、ロード命令やストア命令が実行されると、その命令単位でキャッシュメモリに対する読み書きを行っていた。そのため、ストリームアクセスでは、連続したデータ領域に対して、キャッシュパイプライン処理やキャッシュメモリに対する読み書き処理が命令単位で繰り返すように行われていた。
【００１２】
以下に説明する本実施形態における演算処理装置は、ストリームアクセスにおける複数のストア命令によるキャッシュメモリへの複数の書き込み処理を１つの書き込み処理にまとめて実行する。キャッシュメモリに対する複数の書き込み処理を１つの書き込み処理にまとめて実行することで、キャッシュメモリに対する書き込み回数を削減して、性能を向上させるとともに消費電力を低減する。
【００１３】
図１は、本実施形態における演算処理装置の構成例を示すブロック図である。本実施形態における演算処理装置は、命令発行部１１、ロード・ストア命令キュー１２、キャッシュ書き込み処理キュー（Write Buffer）１３、パイプライン処理発行部・調停部１４、パイプライン実行制御部１５、及びキャッシュメモリ部１６を有する。
【００１４】
命令発行部１１は、主記憶装置等から読み出されたプログラムをデコードして命令を発行する。命令発行部１１から発行された命令が、メモリ等からデータを読み出すロード命令ＬＤＩやメモリ等にデータを書き込むストア命令ＳＴＩであれば、その命令ＬＤＩ／ＳＴＩがロード・ストア命令キュー１２に入る。なお、図１においては、ロード命令ＬＤＩ及びストア命令ＳＴＩでない命令については省略しているが、命令発行部１１からは演算器等の各機能部に対する演算処理命令等の他の処理命令も発行される。
【００１５】
ロード・ストア命令キュー１２は、ロード命令ＬＤＩが命令発行部１１から入ると、そのロード命令ＬＤＩに応じたキャッシュ読み出し処理要求ＲＤＲＥＱをパイプライン処理発行部・調停部１４に出力する。また、ロード・ストア命令キュー１２は、ストア命令ＳＴＩが命令発行部１１から入って実行することが確定される、すなわちコミット（commit）されると、そのコミット済みストア命令ＣＳＴＩをキャッシュ書き込み処理キュー１３に出力する。
【００１６】
キャッシュ書き込み処理キュー１３は、コミット済みストア命令ＣＳＴＩを、演算器等から供給される書き込みデータ（ストアデータ）とともに、キャッシュ書き込み待ちのキャッシュ書き込み処理要求として滞留させる。また、キャッシュ書き込み処理キュー１３は、滞留しているキャッシュ書き込み処理要求がキャッシュ書き込み可能な状態になると、キャッシュ書き込み処理要求ＷＲＲＥＱをパイプライン処理発行部・調停部１４に出力する。例えば、キャッシュ書き込み処理キュー１３は、キャッシュミスなどの要因で即座にキャッシュ書き込み処理が起動できない場合には、キャッシュ書き込み可能な状態になるまで要求を滞留させ続ける。そして、キャッシュ書き込み可能な状態になった時点で、キャッシュ書き込み処理キュー１３は、キャッシュ書き込み処理要求ＷＲＲＥＱを出力する。
【００１７】
さらに、本実施形態ではキャッシュ書き込み処理キュー１３のエントリ毎にストリームウェイト（stream_wait）フラグを設け、キャッシュ書き込み処理キュー１３は、登録されているキャッシュ書き込み処理要求の出力を、ストリームウェイトフラグに応じて制御する。キャッシュ書き込み処理キュー１３は、ストリームウェイトフラグが立っている（値が“１”である）場合には、キャッシュ書き込み可能な状態であってもキャッシュ書き込み処理要求の出力を抑止して滞留させ続ける。また、入力された後続のストア命令のアクセス先が、滞留している先行のストア命令によるキャッシュ書き込み処理要求でアクセス可能なデータ領域に含まれる場合には、キャッシュ書き込み処理キュー１３は、先行のキャッシュ書き込み処理要求と後続のストア命令をマージして１つのキャッシュ書き込み処理要求にまとめた状態で保持する。
【００１８】
パイプライン処理発行部・調停部１４は、ロード・ストア命令キュー１２からのキャッシュ読み出し処理要求ＲＤＲＥＱ及びキャッシュ書き込み処理キュー１３からのキャッシュ書き込み処理要求ＷＲＲＥＱを受ける。パイプライン処理発行部・調停部１４は、キャッシュ読み出し処理要求ＲＤＲＥＱやキャッシュ書き込み処理要求ＷＲＲＥＱに基づいて、一次キャッシュメモリへのアクセスに係るパイプライン処理ＰＬを発行する。また、パイプライン処理発行部・調停部１４は、パイプライン処理の発行に際し、キャッシュメモリ部１６におけるキャッシュミス等に応じて内部的な処理の調停を行う。
【００１９】
パイプライン実行制御部１５は、パイプライン処理発行部・調停部１４から発行されたパイプライン処理ＰＬに応じて、キャッシュメモリ部１６に対してデータを読み出すキャッシュ読み出し処理ＲＤやデータを書き込むキャッシュ書き込み処理ＷＲを実行する。キャッシュメモリ部１６は、複数のＲＡＭ（Random Access Memory）を有する。
【００２０】
図２は、本実施形態におけるキャッシュ書き込み処理キューの内部構成例を示すブロック図である。図２において、図１に示した構成要素と同一の構成要素には同一の符号を付し、重複する説明は省略する。キャッシュ書き込み処理キュー１３は、フラグ設定部２１、エントリ部２２、及びパイプライン投入要求選択部２８を有する。
【００２１】
フラグ設定部２１は、コミット済みストア命令ＣＳＴＩに付加されているストリーム（stream）フラグＳＦＬＧ及びストリーム完了（stream_complete）フラグＳＣＦＬＧを参照し、フラグＳＦＬＧ、ＳＣＦＬＧの値に応じてストリームウェイトフラグの設定を行う。なお、ロード・ストア命令キュー１２から出力されるコミット済みストア命令ＣＳＴＩには、ストアデータ、アクセスアドレス、データ長（データ幅）の情報が含まれる。
【００２２】
ここで、本実施形態において、ストア命令には、ストリームフラグＳＦＬＧ及びストリーム完了フラグＳＣＦＬＧが付加されている。ストリームフラグＳＦＬＧ及びストリーム完了フラグＳＣＦＬＧは、先行のストア命令によりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があるか否かを判断するために、ストア命令単位でストリームアクセスに係る状態をソフトウェア（プログラム側）からハードウェアに指示するためのものである。
【００２３】
ストリームアクセスであることを示すストリームフラグＳＦＬＧは、ストリームアクセスである場合には値が“１”であり、非ストリームアクセスである場合には値が“０”である。また、ストリームアクセスの完了を示すストリーム完了フラグＳＣＦＬＧは、ストリームアクセスの最後のストア命令ＳＴＩでは値が“１”であり、それ以外（非ストリームアクセスを含む）のストア命令ＳＴＩでは値が“０”である。
【００２４】
すなわち、ストリームアクセス継続中のストア命令は、プログラム側で、ストリームフラグＳＦＬＧの値が“１”にされ、ストリーム完了フラグＳＣＦＬＧの値が“０”にされて発行される。ストリームアクセス完了時、つまりストリームアクセスの最後のストア命令は、プログラム側で、ストリームフラグＳＦＬＧの値が“１”にされ、ストリーム完了フラグＳＣＦＬＧの値が“１”にされて発行される。また、非ストリームアクセスにおけるストア命令は、プログラム側で、ストリームフラグＳＦＬＧ及びストリーム完了フラグＳＣＦＬＧの値がともに“０”にされて発行される。
【００２５】
フラグ設定部２１は、コミット済みストア命令ＣＳＴＩに付加されたストリームフラグＳＦＬＧ及びストリーム完了フラグＳＣＦＬＧに基づいて、このストア命令ＣＳＴＩによりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があるか否かを判定する。フラグ設定部２１は、その判定結果と、ストア命令ＣＳＴＩで示されるアクセスアドレス及びデータ長に応じて、以下のようにストリームウェイトフラグの設定を行う。以下に説明するフラグ設定部２１によるストリームウェイトフラグの設定は、例えばストリームフラグＳＦＬＧ、ストリーム完了フラグＳＣＦＬＧ、データ長に応じたアクセスアドレスの下位ビット値を用いた論理演算回路を用いて実現される。
【００２６】
（Ａ）コミット済みストア命令ＣＳＴＩに付加されたストリームフラグＳＦＬＧの値が“１”かつストリーム完了フラグＳＣＦＬＧの値が“０”である場合
【００２７】
（Ａ−１）フラグ設定部２１は、ストア命令ＣＳＴＩで示されるアクセスアドレス及びデータ長に基づいて、キャッシュ書き込み可能な連続データ長での最後のデータに対するストア命令でない場合には、同一のデータ領域に対する後続のストア命令があると判定する。このストア命令ＣＳＴＩによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー１３のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を抑止するために、フラグ設定部２１は、当該エントリのストリームウェイトフラグの値を“１”に設定する。
【００２８】
例えば、同時キャッシュ書き込み可能な連続データ長が１６バイトである場合、ストア命令ＣＳＴＩで示されるデータ長が１バイトのときには、アクセスアドレスの下位４ビットの値が“０ｘＦ”以外であれば１６バイト幅での最後のストア命令ではない。同様に、ストア命令ＣＳＴＩで示されるデータ長が４バイトのときには、アクセスアドレスの下位４ビットの値が“０ｘＣ”以外であれば１６バイト幅での最後のストア命令ではない。そのため、フラグ設定部２１は、ストリームウェイトフラグの値を“１”に設定し、キャッシュ書き込み処理要求の出力を抑止し滞留させる。同時キャッシュ書き込み可能な連続データ長は、WriteBuffer部のエントリ構成や、キャッシュメモリ部のRAM構成などの、ハードウェア実装によって決まる。
【００２９】
（Ａ−２）フラグ設定部２１は、ストア命令ＣＳＴＩで示されるアクセスアドレス及びデータ長に基づいて、キャッシュ書き込み可能な連続データ長での最後のデータに対するストア命令である場合には、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令ＣＳＴＩによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー１３のエントリに登録するとき、フラグ設定部２１は、当該エントリのストリームウェイトフラグの値を“０”に設定する。この状態は、ストリーム完了フラグＳＣＦＬＧの値が“０”であるが、ハードウェア制御上、キャッシュ書き込み処理要求をこれ以上滞留させても性能は改善されないため、ストリームウェイトフラグの値を“０”に設定する。
【００３０】
例えば、同時キャッシュ書き込み可能な連続データ長が１６バイトである場合、ストア命令ＣＳＴＩで示されるデータ長が１バイトのときには、アクセスアドレスの下位４ビットの値が“０ｘＦ”であれば１６バイト幅での最後のストア命令である。同様に、ストア命令ＣＳＴＩで示されるデータ長が４バイトのときには、アクセスアドレスの下位４ビットの値が“０ｘＣ”であれば１６バイト幅での最後のストア命令である。そのため、フラグ設定部２１は、ストリームウェイトフラグの値を“０”に設定し、キャッシュ書き込み処理要求の出力を可能にする。
【００３１】
（Ｂ）コミット済みストア命令ＣＳＴＩに付加されたストリームフラグＳＦＬＧの値が“１”かつストリーム完了フラグＳＣＦＬＧの値が“１”である場合
フラグ設定部２１は、ストリームアクセスが完了し、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令ＣＳＴＩによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー１３のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を可能にするために、フラグ設定部２１は、当該エントリのストリームウェイトフラグの値を“０”に設定する。
【００３２】
（Ｃ）コミット済みストア命令ＣＳＴＩに付加されたストリームフラグＳＦＬＧの値が“０”である場合
フラグ設定部２１は、ストリームアクセスではなく、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令ＣＳＴＩによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー１３のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を可能にするために、フラグ設定部２１は、当該エントリのストリームウェイトフラグの値を“０”に設定する。
【００３３】
エントリ部２２は、ストア命令ＣＳＴＩによるキャッシュ書き込み処理要求が登録される複数のエントリを有する。図２には、エントリ０〜エントリ３の４つのエントリを有するエントリ部２２を一例として示しているが、エントリの数は任意である。各エントリは、書き込むデータであるストアデータ２３、書き込み先を示すアドレス２４、書き込むデータのバイト位置を示すストアバイト情報２５、各種制御に用いられる制御フラグ２６、及びストリームウェイトフラグ２７を有する。キャッシュ書き込み処理キュー１３では、ストリームフラグＳＦＬＧの値が“１”のストア命令ＣＳＴＩを受けると、ストア命令ＣＳＴＩに示されるアクセスアドレスと各エントリのアドレス２４とを比較し、同一のデータ領域に対するエントリがあればストア命令ＣＳＴＩをマージして１つにまとめる。
【００３４】
パイプライン投入要求選択部２８は、エントリ部２２の各エントリのストリームウェイトフラグ２７を参照し、その値に応じてエントリに基づくキャッシュ書き込み処理要求ＷＲＲＥＱをパイプライン処理発行部・調停部１４に出力する。パイプライン投入要求選択部２８は、キャッシュ書き込み可能な状態であるストリームウェイトフラグ２７の値が“０”であるエントリがあると、そのエントリに基づくキャッシュ書き込み処理要求ＷＲＲＥＱをパイプライン処理発行部・調停部１４に出力する。
【００３５】
図３は、本実施形態におけるストア命令のキャッシュ書き込み処理キュー１３への登録処理を示すフローチャートである。
ストリームフラグＳＦＬＧ及びストリーム完了フラグＳＣＦＬＧが付加されたコミット済みストア命令ＣＳＴＩがキャッシュ書き込み処理キュー１３に入力されると、フラグ設定部２１がストリームフラグＳＦＬＧの値を確認する（Ｓ１１）。ストリームフラグＳＦＬＧの値が“０”であれば、フラグ設定部２１が非ストリームアクセスであると判定してストリームウェイトフラグの値が“０”に設定され、ストア命令ＣＳＴＩによるキャッシュ書き込み処理要求がエントリに登録される（Ｓ１２）。
【００３６】
一方、ストリームフラグＳＦＬＧの値が“１”の場合には、次にフラグ設定部２１がストリーム完了フラグＳＣＦＬＧの値を確認する（Ｓ１３）。ストリーム完了フラグＳＣＦＬＧの値が“１”であれば、フラグ設定部２１がストリームアクセスの完了であると判定してストリームウェイトフラグの値が“０”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令ＣＳＴＩによるキャッシュ書き込み処理要求がマージされてエントリに登録される（Ｓ１４）。
【００３７】
ステップＳ１３での判定の結果、ストリーム完了フラグＳＣＦＬＧの値が“０”の場合には、次にフラグ設定部２１がストア命令ＣＳＴＩで示されるアクセスアドレス及びデータ長に基づいてキャッシュ書き込み可能な連続データ長での最後のデータであるか否かを確認する（Ｓ１５）。ストア命令ＣＳＴＩがキャッシュ書き込み可能な連続データ長での最後のデータのものであれば、フラグ設定部２１によりストリームウェイトフラグの値が“０”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令ＣＳＴＩによるキャッシュ書き込み処理要求がマージされてエントリに登録される（Ｓ１４）。一方、ストア命令ＣＳＴＩがキャッシュ書き込み可能な連続データ長での最後のデータのものでなければ、フラグ設定部２１によりストリームウェイトフラグの値が“１”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令ＣＳＴＩによるキャッシュ書き込み処理要求がマージされてエントリに登録される（Ｓ１６）。
【００３８】
本実施形態によれば、ストア命令ＣＳＴＩによりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があると判定した場合には、ストリームウェイトフラグを設定して（値を“１”にして）、ストア命令ＣＳＴＩによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー１３のエントリに登録する。ストリームウェイトフラグを設定することにより、キャッシュ書き込み可能な状態であっても、そのエントリからのキャッシュ書き込み処理要求の出力を抑止してキャッシュ書き込み処理キュー１３に滞留させ続ける。そして、同一のデータ領域に対する後続のストア命令がコミットされると、滞留されている先行のキャッシュ書き込み処理要求と後続のストア命令をマージして１つのキャッシュ書き込み処理要求にまとめて保持する。これにより、ストリームアクセスのストア命令により出力されるキャッシュ書き込み処理要求が減少し、キャッシュアクセスに係るパイプラインの使用数及びキャッシュメモリに対する書き込み回数が削減できる。したがって、演算処理装置におけるストリームアクセスの性能を向上させるとともに消費電力を低減することが可能になる。
【００３９】
例えば、１サイクルにキャッシュ書き込み可能な連続データ長が１６バイトである場合に、１６進数表記でアドレス０ｘ０００〜０ｘ０１２をアクセス先とする１バイトのストア命令によるストリームアクセスと、アドレス０ｘ１１０、０ｘ１１１をアクセス先とする１バイトのロード命令を実行するとする。この場合、ストア命令毎にキャッシュ書き込み処理要求が出力されると、図５に示すように各サイクルにおいてパイプライン処理が投入される。
【００４０】
一方、本実施形態によれば、図４に示すように、アドレス０ｘ０００〜０ｘ００Ｆをアクセス先とする１６個の１バイトのストア命令、及びアドレス０ｘ０１０〜０ｘ０１２をアクセス先とする３個の１バイトのストア命令を、それぞれを１回のキャッシュ書き込み処理要求にまとめてパイプライン処理が投入される。したがって、キャッシュアクセスに係るパイプラインの使用効率を向上させることができるとともに、キャッシュメモリに対する書き込み回数を削減することができる。
【００４１】
なお、図４及び図５においては、キャッシュアクセスに係るパイプラインが、「Ｐ（Priority）」、「Ｔ（Tag）」、「Ｍ（Match）」、「Ｂ（BufferRead）」、及び「Ｒ（Result）」の５段パイプラインである例を示している。Ｐステージではプライオリティ論理回路が実行する命令の優先順位を決定し、Ｔステージではキャッシュメモリにアクセスしてタグの読み出しを行い、Ｍステージではタグのマッチング処理を行う。また、Ｂステージではデータを選択してバッファに格納し、Ｒステージではデータの転送を行う。
【００４２】
また、例えば、１サイクルにキャッシュ書き込み可能な連続データ長が３２バイトである場合に、１バイトのストア命令によるストリームアクセスでは３２個のストア命令を、４バイトのストア命令によるストリームアクセスでは８個のストア命令を、１回のキャッシュ書き込み処理要求にまとめることができる。
【００４３】
なお、前述した本実施形態では、フラグ設定部２１が、ストリーム完了フラグＳＣＦＬＧの値や、ストア命令ＣＳＴＩで示されるアクセスアドレス及びデータ長に基づいて、ストリームウェイトフラグの値を“０”に設定する。これ以外にも、ストリームウェイトフラグの値が“１”のままである一定の数の命令数を受けた場合や、キャッシュ書き込み処理キュー１３のエントリに空きがなくなった場合に、フラグ設定部２１がストリームウェイトフラグの値を強制的に“０”に設定するようにしても良い。このようにした場合には、プログラムミスにより、ストリームアクセスの最後のストア命令においてストリーム完了フラグＳＣＦＬＧの値が“０”とされても、キャッシュ書き込み処理キュー１３にキャッシュ書き込み処理要求が滞留し続けることを防止することができる。
【００４４】
また、キャッシュ書き込み処理キュー１３のフラグ設定部２１において、同一のデータ領域に対する後続のストア命令があるか否かを判定する手法として、以下のような手法を適用しても良い。プログラム側では、ストア命令に対してストリームアクセスであることを示すストリームフラグＳＦＬＧのみを付加させる。命令発行部１１として機能するハードウェアが、実行しているプログラムでのループ処理が最内のループを回っている間（例えば、分岐予測ＴＡＫＥＮが続いている間）を同様の処理が続いていると判断して、命令発行部１１が値“０”のストリーム完了フラグＳＣＦＬＧの情報を生成しストア命令を発行する。また、そのハードウェアが、最内のループの処理が完了したと判断した場合（例えば、分岐予測ＮＯＴ−ＴＡＫＥＮの場合）に、命令発行部１１が値“１”のストリーム完了フラグＳＣＦＬＧの情報を生成しストア命令を発行する。
【００４５】
また、プログラムとは命令の実行順序が入れ違う可能性のある、いわゆるアウトオブオーダーの演算処理装置の場合には、ストリームウェイトフラグの値を“１”から“０”に変更するようなストア命令は、同一のデータ領域に対する他のストア命令のすべてが実行された後に実行するようにすれば良い。これにより、同一のデータ領域に対するストア命令のすべてが実行される前に、ストリームウェイトフラグの値が“１”から“０”に変更されてキャッシュ書き込み処理要求が出力されてしまうことを防止することができる。
【００４６】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４７】
１１  命令発行部
１２  ロード・ストア命令キュー
１３  キャッシュ書き込み処理キュー
１４  パイプライン処理発行部・調停部
１５  パイプライン実行制御部
１６  キャッシュメモリ部
２１  フラグ設定部
２２  エントリ部
２３  ストアデータ
２４  アドレス
２７  ストリームウェイトフラグ
２８  パイプライン投入要求選択部
【図１】
2014063385.tif 000003
【図２】
2014063385.tif 000004
【図３】
2014063385.tif 000005
【図４】
2014063385.tif 000006
【図５】
2014063385.tif 000007