説明

情報処理装置およびキャッシュメモリ制御装置

【課題】メモリアクセスをアウトオブオーダで処理する情報処理装置において、不要な命令再実行を確実に抑止し、処理性能の低下を招くことなく確実にTSO保証を実現する。
【解決手段】ロード命令の対象データがキャッシュ212から演算器400に転送された後にキャッシュ212のデータに対する無効化要求を受信し、受信した無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令が命令ポート210に存在する場合、第1判定部214Aは、第1フラグ(RIM)を有効化する。命令ポート210のエントリに保持されたロード命令の対象データについてキャッシュミスした後に対象データが転送されてきたと判定した場合、第2判定部215Aは第2フラグ(RIF)を有効化する。命令再実行判定部216は、第1フラグおよび第2フラグがいずれも有効化されている場合に命令の再実行を指示する。

【発明の詳細な説明】
【技術分野】
【0001】
本件は、情報処理装置およびキャッシュメモリ制御装置に関し、例えばメモリアクセスをアウトオブオーダで処理する処理部等に適用可能な技術に関する。
【背景技術】
【0002】
現在主流となっている高性能プロセッサでは、高い並列度を維持して命令を実行するためにアウトオブオーダ処理を採用している。アウトオブオーダ処理とは、キャッシュミスなどの理由で、ある命令のデータの読出が滞っている間に後続の命令のデータの読出を先に実行し、その後で滞っていた命令のデータの読出を実行する処理である。
【0003】
しかし、このような処理を行なうと、後から実行された先行するデータの読出が最新のデータを取り出し、先に実行された後続するデータの読出が古いデータを読み出す場合が発生し、TSO(Total Store Ordering)に違反する場合が出てくる。
ここで、TSOとは、データの読出結果がデータの書込順序を正しく反映することであり、実行順序の一貫性と呼ばれ、メモリアクセスを行なう命令の順序に対し、実際にメモリにデータを書き込む順序の入れ替えの制約を定めたメモリオーダリング(memory ordering)の一つである。TSOのルールは次の三点である。
【0004】
・ロード命令は、先行するロード命令を追い越して処理してはいけない。
・ストア命令は、先行するロード命令および先行するストア命令を追い越して処理してはいけない。
・アトミックロードストア命令は、先行するロード命令および先行するストア命令を追い越して処理してはいけない。
【0005】
つまり、図15に示すように、ロード命令(load)は、先行するストア命令(store)を追い越して処理してもよいが、その他のパターンの追い越しを禁止される。ただし、ロード命令の対象データが先行するストア命令の対象データに含まれている場合は、当該ロード命令はそのストア命令のデータをロードしなければならないのは当然である。
【0006】
ここで、メモリアクセスをアウトオブオーダで処理するプロセッサ(CPUもしくはCPU−CORE)においては、ロード命令が先行するロード命令を追い越して先にデータを命令制御部に返すことを可能にする。図16に示すように、命令制御部100と、この命令制御部100からのメモリアクセス要求に応じてキャッシュメモリに対するアクセスを行なう一次キャッシュ制御部200とを含む情報処理装置では、以下のような処理が行なわれる。例えば、先行するロード命令(load-A)の対象データがキャッシュミスし、後続のロード命令(load-B)の対象データがキャッシュヒットする場合、一次キャッシュ制御部200は、先行するロード命令(load-A)を追い越して後続のロード命令(load-B)のデータを命令制御部100に返すことになる。
【0007】
しかし、実際の命令実行は命令の順序に従って実行されるため、ロードデータを順不同で読み出したとしても、ロード命令とストア命令との間のTSOを守っていれば、シングルプロセッサ構成の情報処理装置におけるソフトウエアからはTSOが守られているように見える。ところが、マルチプロセッサ構成の情報処理装置では、ソフトウエアからロード命令間のTSO違反が見えるケースがある。
【0008】
例として、図17(a)〜図17(c)に、キャッシュメモリ(cache)212の領域A,Bのデータに対し、プロセッサCPU−αではストア命令store-A,store-Bがこの順で発行され、プロセッサCPU−βではロード命令load-B,load-Aがこの順で発行されるケースを示す。
【0009】
なお、図17中、FP(Fetch Port)210は、キャッシュメモリ212のデータにアクセスする命令を保持する命令ポートであり、このFP210においては、FP番号0,1で特定される各エントリに、各命令が保持される。また、図17(a)〜図17(c)に示す情報処理装置において、CPU−αおよびCPU−βのそれぞれは、命令制御部100および一次キャッシュ制御部200を有している。さらに、CPU−αおよびCPU−βは、下位階層の二次キャッシュ制御部300を共用している。また、キャッシュメモリは、単にキャッシュという場合がある。なお、以下の説明では、CPU−αにおける命令制御部100,一次キャッシュ制御部200,FP210およびキャッシュメモリ212を特定する際には、各符号にaを付し、100a,200a,210a,212aと表記する。同様に、CPU−βにおける命令制御部100,一次キャッシュ制御部200,FP210およびキャッシュメモリ212を特定する際には、各符号にbを付し、100b,200b,210b,212bと表記する。CPU−αおよびCPU−βを特定する必要のない場合には、単に符号100,20,210,212を用いる。
【0010】
図17(a)に示すように、CPU−αの一次キャッシュ制御部200aでは、store-A,store-Bがいずれもキャッシュミスし、二次キャッシュ制御部300にデータが要求される。また、CPU−βの一次キャッシュ制御部200bでは、load-Bがキャッシュミスして対象データを命令制御部100bに返せない間に、load-Aがキャッシュヒットしてload-Bを追い越して対象データdata-A(old)が命令制御部100bに返される。
【0011】
ついで、図17(b)に示すように、CPU−αの一次キャッシュ装置200aにおける処理対象命令はストア命令(store-A)である。このため、二次キャッシュ装置300経由でCPU−βのキャッシュメモリ212bに対する無効化要求が発行された後、2つのストア命令store-A,store-Bがこの順で処理される。
この後、図17(c)に示すように、CPU−βに対しCPU−αからストアを完了した領域Bのデータが送られ、CPU−βでload-Bが処理されデータdata-B(new)が命令制御部100bに返される。
【0012】
この結果、CPU−αでは、2つのストア命令store-A,store-Bがこの順に発行されたにも関わらず、CPU−βでは、load-Bについてストア済みデータdata-B(new)が返される一方、load-Aについてストア前データdata-A(old)が返されたことになる。つまり、CPU−βでの命令処理は、TSOのロード命令間の追い越し禁止に違反したことになる。
【0013】
これを回避するために、TSOを違反する可能性がある場合には、後続ロード命令が再実行されている。つまり、先行するロード命令を追い越してデータを返した後続ロード命令があるとき、その後続ロード命令の対象データを他プロセッサが使用するために無効化した場合にはその旨を自プロセッサが記憶しておく。そして、先行するロード命令がデータを読み出したときに、TSO違反の可能性があることを命令制御部100に通知し、その次の命令(上記後続ロード命令)以降の命令が再実行される。
【0014】
例えば、CPU−βにおいてload-Bを追い越してload-Aが処理された後、領域Aのデータに対する無効化処理が要求された場合に、その旨を示す信号(フラグ)が有効化される。その後、load-Bが処理されデータが返されるときにその信号(フラグ)が有効であれば、ロード命令間のTSO違反の可能性があることが命令制御部100bに通知される。そして、命令制御部100bがload-Aを再発行することで、その後にload-Aが返すデータはCPU−αでのstore-Aが反映されることになり、TSO違反が回避される。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特許第4180569号
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、上記信号(フラグ)を用いてロード命令の再実行を行なうことによりTSO違反を回避する手法では、不要な命令再実行を要求してしまい、データ化けを生じさせることはないが、その不要な命令再実行が処理性能の低下要因となる場合がある。
このような処理性能の低下要因は、マルチコア化に伴う二次キャッシュ制御部の構成や制御の変更によっては定常的に発生することが考えられる。そのような場合、不要な命令再実行が定常的に発生するため、メモリアクセスをアウトオブオーダで処理する情報処理装置において、極めて大きな性能低下を招くおそれがある。
【0017】
本件の目的の一つは、メモリアクセスをアウトオブオーダで処理する情報処理装置において、不要な命令再実行を確実に抑止し、処理性能の低下を招くことなく確実にTSO保証を実現することである。
【課題を解決するための手段】
【0018】
(1)本件の情報処理装置は、メモリアクセスをアウトオブオーダで処理する複数の処理部を有し、各処理部が、キャッシュメモリと、前記キャッシュメモリのデータにアクセスする命令をエントリに保持する命令ポートと、第1判定部と、第2判定部と、命令再実行判定部とを有している。ここで、前記第1判定部は、前記命令ポートのエントリに保持されたロード命令に応じて、ロード命令の対象データが前記キャッシュメモリから演算器に転送された後に前記キャッシュメモリのデータに対する無効化要求を受信し、受信した無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令が前記命令ポートに存在すると判定した場合、第1フラグを有効化する。前記第2判定部は、前記命令ポートのエントリに保持されたロード命令の対象データについてキャッシュミスした後に当該キャッシュミスに応じて対象データが転送されてきたと判定した場合、第2フラグを有効化する。前記命令再実行判定部は、前記命令ポートのエントリに保持されたロード命令の完了時に前記第1フラグおよび前記第2フラグがいずれも有効化されていると判定した場合、その次の命令からの再実行を指示する。
【0019】
(2)本件のキャッシュメモリ制御装置は、メモリアクセスをアウトオブオーダで処理すべく、キャッシュメモリと、前記キャッシュメモリのデータにアクセスする命令を、各エントリに保持する命令ポートとを有し、前記キャッシュメモリの制御を行なうものであり、上記(1)における情報処理装置と同様の第1判定部,第2判定部および命令再実行判定部を有している。
【発明の効果】
【0020】
開示の技術では、メモリアクセスをアウトオブオーダで処理する情報処理装置において、TSO違反の回避に関わらない不要な命令再実行が確実に抑止され、不要な命令再実行要求が削減される。これにより、処理性能の低下を招くことなく、確実にTSO保証が実現され、あるプロセッサで処理されるストア命令の順序性が他プロセッサで実行されるロード命令に反映されることを確実に保証することができる。
【図面の簡単な説明】
【0021】
【図1】本実施形態の一次キャッシュ制御部の構成の一例を示すブロック図である。
【図2】本実施形態の一次キャッシュ制御部を適用される情報処理装置の構成の一例を示すブロック図である。
【図3】図1に示すRIM判定部による判定動作を説明するためのフローチャートである。
【図4】図1に示すRIF判定部による判定動作を説明するためのフローチャートである。
【図5】図17(a)〜図17(c)に示すTSO違反を回避する機能を有する一次キャッシュ制御部の構成の一例を示すブロック図である。
【図6】図5に示す一次キャッシュ制御部におけるフェッチポートに係る構成の一例を示すブロック図である。
【図7】図5に示す一次キャッシュ制御部におけるフェッチポートにおける各エントリのフォーマットの一例を示す図である。
【図8】図5に示すRIM判定部による判定動作を説明するためのフローチャートである。
【図9】図5に示すRIF判定部による判定動作を説明するためのフローチャートである。
【図10】図5に示す命令再実行判定部の動作例を説明するためのフローチャートである。
【図11】(a)〜(c)は、図5に示す一次キャッシュ制御部による、マルチプロセッサ構成におけるTSO違反回避動作の一例を説明するための図である。
【図12】(a),(b)は、図5に示す一次キャッシュ制御部による、マルチプロセッサ構成におけるTSO違反回避動作の一例を説明するための図である。
【図13】一次キャッシュ制御部におけるキャッシュバイパス構成の一例を示すブロック図である。
【図14】不要なRIMフラグ有効化によって不要な命令再実行要求が発生するケースの一例を説明するためのフロー図である。
【図15】一般的なTSOのルールを示す図である。
【図16】アウトオブオーダ処理を行うプロセッサにおけるロード命令どうしの追い越し例を示す図である。
【図17】(a)〜(c)は、マルチプロセッサ構成におけるTSO違反の一例を説明するための図である。
【発明を実施するための形態】
【0022】
以下、図面を参照して実施の形態を説明する。
〔1〕実施形態の概要
まず、図5〜図14を参照しながら、本実施形態の概要について説明する。
図5は、図17(a)〜図17(c)に示すTSO違反を回避する機能を有する一次キャッシュ制御部200の構成の一例を示すブロック図である。図6は、図5に示す一次キャッシュ制御部200におけるフェッチポート(FP)210に係る構成の一例を示すブロック図である。図7は、図5に示す一次キャッシュ制御部200におけるFP210における各エントリのフォーマットの一例を示す図である。
【0023】
命令制御部100からのキャッシュアクセスの要求は、一旦、一次キャッシュ制御部200におけるFP210に保持される。このFP210に係る構成の一例が図6に示される。各要求は、プログラム上の順番に従ってFP210の各エントリに割り当てられてエントリに格納され、FP210の各エントリは循環して使用される。例えばFP210が16個のエントリを有している場合、命令制御部からの要求は、FP#0から順に割り当てられ、FP#15の次はFP#0に割り当てられることになる。なお、FP#n(n=0〜15)は、FP210におけるエントリの一つを特定するもので、FP番号という場合もある。
【0024】
FP210には、図6に示すように、プライオリティ部211が付設されている。このプライオリティ部211は、FP210内のどのエントリの要求(request#0−#15)を処理するかについて調停するものである。このプライオリティ部211は、上述のTSOを保証するために、命令処理順の後続ストア命令が先行ロード命令を追い越さないこと、または、後続ストア命令が先行ストア命令を追い越さないことを保証し、後続ロード命令が先行ロード命令を追い越すことは可能にする。その上で、プライオリティ部211は、アウトオブオーダつまり順不同にFP210のエントリ(request#n)を一つずつ選択し、その命令の処理を実行させる。また、FP210の各エントリは、一番古いエントリから順にインオーダで解放される。ここで、有効なエントリのうち最も古いエントリはFetch-Port-Top-of-Queue(FP−TOQ)によって指示される。つまり、FP−TOQで指示されていないFP210のエントリは、そのエントリにおける命令の処理を完了しても直ぐには解放されない。そして、FP−TOQで指示されたエントリにおける命令の処理を完了した時点で、FP−TOQで指示されたエントリから古い順に処理済みのエントリが解放される。
【0025】
FP210の各エントリのフォーマットつまり各エントリの内容が図7に示される。この図7に示すように、FP210の各エントリには“valid”,“status”,“opcode”,“address”,“RIM”,“RIF”が保持される。“valid”は、そのエントリが有効であるか否かを示すフラグである。“status”は、そのエントリに保持されたキャッシュアクセス要求の処理が完了しているか否かを示すフラグである。“opcode”は、そのエントリに保持されたキャッシュアクセスの要求種別(load/store等)を示す。“address”は、そのエントリに保持されたキャッシュアクセスの要求アドレスを示す。“RIM”および“RIF”は、TSO保証制御に使用するフラグである。RIMフラグは、あるエントリに保持されたロード命令によりその対象データを演算器400に転送した後、そのエントリが解放されるまでの間に受信した無効化要求によりその対象データがキャッシュメモリ212から追い出された場合、後述のRIM判定部214によって有効化される。RIMフラグは「第1フラグ」の一例である。RIFフラグは、あるエントリに保持されたロード命令がキャッシュミスした後に、そのロード命令の対象データが転送されてきた場合、後述のRIF判定部215によって有効化される。RIFフラグは「第2フラグ」の一例である。
【0026】
このような構成のFP210やプライオリティ部211を有する一次キャッシュ制御部200の詳細な構成および動作について、図5を参照しながら説明する。この図5に示す一次キャッシュ制御部200は、TSOを保証すべく命令再実行要求を実現するための構成を有するものであり、より具体的には、図17(a)〜図17(c)に示すTSO違反を回避する機能を有している。
【0027】
図5に示すように、一次キャッシュ制御部200は、命令制御部100や演算器400と接続されるとともに、二次キャッシュ制御部300と接続されている。一次キャッシュ制御部200は、図6を参照しながら上述したFP210やプライオリティ部211のほかに、キャッシュメモリ(cache RAM)212,アクセス調停部213,RIM判定部214,RIF判定部215および命令再実行判定部216を有している。なお、図5では、便宜上、複数エントリからなるFP210のうちの1エントリのみを図示し、プライオリティ部211の図示を省略している。
【0028】
プライオリティ部211(図6参照)は、FP210の各エントリに保持される要求(命令)の一つを選択し、選択した要求を処理すべくキャッシュメモリ212にアクセスする。その際、アクセス調停部213は、プライオリティ部211が選択した要求と二次キャッシュ制御部300から受信したデータ登録要求や無効化要求等とについて、キャッシュメモリ212に対するアクセスの調停を行なう。このアクセス調停部213での調停により、FP210からの要求が優先権を獲得すると、その要求を処理するためのキャッシュメモリ212に対するアクセスが実行される。その要求が例えばロード要求である場合、そのロード要求の対象データについてキャッシュメモリ212の検索が実行され、キャッシュヒットすれば該当データが演算器400に転送される。一方、キャッシュミスすれば、該当データの転送要求が二次キャッシュ制御部400に対して発行される。
【0029】
一次キャッシュ制御部200は、該当データの転送要求に対する二次キャッシュ制御部300からのデータ転送の応答を受信すると、該当データの登録要求(data登録要求)をアクセス調停部213に送る。そして、アクセス調停部213での調停により、該当データの登録要求が優先権を獲得すると、該当データがキャッシュメモリ212に登録される。これと同時に、二次キャッシュ制御部300からの該当データの登録要求に係る情報は、RIF判定部215に送られる。このRIF判定部215は、登録要求に係る情報に基づき、図9に示すフローチャート(ステップS21〜S24)に従って、FP210のエントリのRIFフラグを有効化するか否かの判定を行なう。
【0030】
つまり、キャッシュメモリ212への登録データが二次キャッシュ制御部300から転送されてくると(ステップS21)、RIF判定部215は、FP210の全てのエントリを検索する(ステップS22)。そして、RIF判定部215は、「valid=1」のエントリ即ち有効なエントリがFP210に存在するか否かを判定し(ステップS23)、有効なエントリがFP210に存在する場合(YESルート)、FP−TOQが指示するエントリから有効なエントリまでのFP210の全てのエントリについてRIFフラグを“1”にする(ステップS24)。換言すると、FP210における、あるエントリに保持されたロード命令がキャッシュミスした後に、そのロード命令の対象データが二次キャッシュ制御部300から転送されてきた場合、RIF判定部215は、対象となるエントリのRIFフラグを有効化する。なお、有効なエントリがFP210に存在しない場合(ステップS23のNOルート)、RIF判定部215は、RIF判定処理を終了する。
【0031】
また、一次キャッシュ制御部200は、二次キャッシュ制御部300から、キャッシュメモリ212に対する無効化要求を受信すると、その無効化要求をアクセス調停部213に送る。そして、アクセス調停部213での調停により、二次キャッシュ制御部300からの無効化要求が優先権を獲得すると、キャッシュメモリ212の該当データの無効化が行なわれる。これと同時に、二次キャッシュ制御部300からの無効化要求に係る情報は、RIM判定部214に送られる。このRIM判定部214は、無効化要求に係る情報に基づき、図8に示すフローチャート(ステップS11〜S15)に従って、FP210のエントリのRIMフラグを有効化するか否かの判定を行なう。
【0032】
つまり、キャッシュメモリ212に対する無効化要求を二次キャッシュ制御部300から受信すると(ステップS11)、RIM判定部214は、FP210の全てのエントリを検索する(ステップS12)。そして、RIM判定部214は、「valid=1」且つ「status=完了」且つ「opcode=ロード系」のエントリがFP210に存在するか否かを判定する(ステップS13)。即ち、RIM判定部214は、FP210に保持されたロード命令に応じて対象データがキャッシュメモリ212から演算器400に転送された後、そのエントリが解放されるまでの間にキャッシュメモリ212の対象データに対する無効化要求を二次キャッシュ制御部300から受信したか否かを判定する。このようなエントリがFP210に存在する場合(ステップS13のYESルート)、RIM判定部214は、該当エントリのアドレスのキャッシュインデクス部分と、二次キャッシュ制御部300から受信した無効化要求の対象アドレスのキャッシュインデクス部分とが一致するか否かを判定する(ステップS14)。双方のアドレスが一致する場合(S14のYESルート)、RIM判定部214は、FP−TOQが指示するエントリから有効なエントリまでの全てのエントリについてRIMフラグを“1”にする(ステップS15)。換言すると、FP210における、あるエントリに保持されたロード命令によりその対象データを演算器400に転送した後、そのエントリが解放されるまでの間に無効化要求によりその対象データがキャッシュメモリ212から追い出された場合、RIM判定部214は、対応するエントリのRIMフラグを有効化する。なお、対象エントリがFP210に存在しない場合(ステップS13のNOルートまたはステップS14のNOルート)、RIM判定部214は、RIM判定処理を終了する。
【0033】
そして、FP210の各エントリにおける命令の処理を完了すると、命令再実行判定部216は、当該エントリのRIMフラグおよびRIFフラグを参照し、図10に示すフローチャート(ステップS31〜S33)に従って、当該エントリにおける命令の再実行を行なうか否かの判定を行なう。つまり、FP210の各エントリ(FP#n)における要求の処理を完了すると(ステップS31)、命令再実行判定部216は、FP#nのエントリにおけるRIMフラグおよびRIFフラグがいずれも有効化されているか否か、即ち「RIM=1」且つ「RIF=1」であるか否かを判定する(ステップS32)。いずれも有効化されている場合(YESルート)、命令再実行判定部216は、命令制御部100に対し、そのエントリに対応する命令の次の命令からの命令再実行を指示すべく、命令再実行要求を発行する。なお、ステップS32でNO判定の場合、命令再実行判定部216は、判定処理を終了する。
【0034】
次に、上述のごとく構成された一次キャッシュ制御部200が、図17(a)〜図17(c)に示すTSO違反を回避する際の動作、つまりTSO保証のための命令再実行要求の動作について、図11(a)〜図11(c)および図12(a),図12(b)を参照しながら説明する。ここで、図11(a)〜図11(c)および図12(a),図12(b)は、図5に示す一次キャッシュ制御部200による、マルチプロセッサ構成におけるTSO違反回避動作の一例を説明するための図である。なお、図11(a)〜図11(c)および図12(a),図12(b)においても、図17(a)〜図17(c)に示すケースと同様、プロセッサCPU−αでは、キャッシュメモリ212aの領域A,Bのデータに対しストア命令store-A,store-Bがこの順で発行され、プロセッサCPU−βでは、キャッシュメモリ212bの領域A,Bのデータに対しロード命令load-B,load-Aがこの順で発行されるケースを示す。

【0035】
図11(a)に示すように、CPU−βにおいて、load-B→load-Aの順でロード命令を処理する際、FP−TOQ=0の場合には、FP#0のエントリにload-Bがセットされ、FP#1のエントリにload-Aがセットされる。このとき、load-Bはキャッシュミスし、領域Bのデータの転送が二次キャッシュ制御部300に要求されるものとする。一方、load-Aはキャッシュヒットしたとした場合、load-Aはload-Bを追い越し、data-A(old)がキャッシュメモリ212bから演算器400(命令制御部100b)に転送され、load-Aの処理を完了する。また、図11(a)に示すように、CPU−αにおいて、store-A→store-Bの順でストア命令を処理する際、FP#0のエントリにstore-Aがセットされ、FP#1のエントリにstore-Bがセットされる。store-A,store-Bは、いずれもキャッシュミスし、領域A,Bのデータの転送が二次キャッシュ制御部300に要求されるものとする。
【0036】
このとき、store-Aに対応するデータ(data-A(old))はCPU−βに存在しているため、図11(b)に示すように、二次キャッシュ制御部300経由でCPU−βの一次キャッシュ制御部200bに対し無効化要求が発行される。そして、図11(b)に示すように、store-A,store-Bに対応するデータがCPU−αの一次キャッシュ制御部200aに転送されてキャッシュメモリ212aに登録された後、ストア命令store-A,store-Bが実行され、キャッシュメモリ212aの領域A,領域Bが更新される。(data-A(new),data-B(new))
【0037】
また、このとき、図11(b)に示すように、CPU−βの一次キャッシュ制御部200bでは、RIM判定部214の機能によりFP210bのエントリのRIMフラグが有効化される。つまり、RIM判定部214は、FP#1における、既に処理完了したロード命令のキャッシュインデクス部分のアドレスと無効化処理要求のキャッシュインデクス部分のアドレスとが一致すると判定する。この判定結果に応じて、他のCPU(ここではCPU−α)によってデータ(data-A(old))が更新される可能性を示すRIMフラグが有効化される。
【0038】
CPU−βにおいてload-Bが要求していた領域BのデータはCPU−αによって保持されているため、図11(c)に示すように、CPU−αからCPU−βに対しstore-Bによって更新済みのデータ(data-B(new))が転送され、このデータ(data-B(new))がCPU−βにおけるキャッシュメモリ212bの領域Bに格納される。このとき、CPU−βの一次キャッシュ制御部200bでは、RIF判定部215の機能によりRIFフラグが有効化される。つまり、RIF判定部215は、FP210bにおける有効な全エントリ(valid=1の全エントリ)におけるRIFフラグ、即ち、他のCPU(ここではCPU−α)からのデータ転送の可能性があることを示すフラグを有効化する。
【0039】
そしてload-Bに応じて、CPU−βのキャッシュメモリ212bの領域Bに格納されたデータ(data-B(new))が演算器400(命令制御部100b)に転送されload-Bの処理を完了する際、命令再実行判定部216が、FP#0におけるRIMフラグおよびRIFフラグが共に有効な状態になっているか否かをチェックする。図11(c)に示す例において、これらのフラグは共に有効な状態になっているため、命令再実行判定部216は、TSO違反の可能性があると判断し、命令制御部100に対し、命令再実行を要求する。
【0040】
この命令再実行要求に応じ、図12(a)に示すように、CPU−βでは、命令制御部100によってload-Aが再実行される。つまり、FP#0におけるload-Bの次の命令であるFP#1におけるload-Aが再実行される。しかし、図12(a)ではload-Aは一旦キャッシュミスし、領域Aへのデータの転送が二次キャッシュ制御部300に要求される。このとき、load-Aに対応するデータはCPU−αに存在しているため、図12(b)に示すように、CPU−αからCPU−βに対しstore-Aによって更新済みのデータ(data-A(new))が転送され、このデータ(data-A(new))がCPU−βにおけるキャッシュメモリ212bの領域Aに格納される。そして、この更新済みデータ(data-A(new))が演算器400(命令制御部100b)に転送される。以上の動作により、図17(a)〜図17(c)を参照しながら説明したTSO違反が解消されることになる。
【0041】
ところで、図5〜図12を参照しながら上述した、TSO違反を回避する機能を有する一次キャッシュ制御部200では、以下に説明する状況によって不要な命令再実行要求が発行され、処理性能の低下を招く場合がある。そのような状況について、図13および図14を参照しながら説明する。ここで、図13は、一次キャッシュ制御部200におけるキャッシュバイパス構成の一例を示すブロック図である。また、図14は、不要なRIMフラグ有効化によって不要な命令再実行要求が発生するケースの一例を説明するためのフロー図である。
【0042】
図8を参照しながら上述したように、RIM判定部214がRIMフラグを有効化する条件として、FP210における処理完了済みのロード命令のアドレス(キャッシュインデクス)と無効化要求の対象アドレス(キャッシュインデクス)との一致をみている。この無効化要求は、あるプロセッサのキャッシュ212に保持されているデータを、他のプロセッサのキャッシュ212に転送する際に生じるが、そのほかにも、あるデータをキャッシュ212に登録すべく登録先にある既存データの置換を行なう際にも生じる。このとき、キャッシュミスしたロード命令のキャッシュインデクス部分のアドレスと、既存データの置換処理に伴う無効化要求のキャッシュインデクス部分のアドレスとは必ず一致することになる。
【0043】
一方、情報処理装置においては、処理高速化のために、下位階層キャッシュもしくはメインメモリから転送されてくるキャッシュ登録データを、キャッシュに登録する前に、このキャッシュをバイパスして演算器に転送する機構がそなえられる場合がある。図13に示す例では、一次キャッシュ制御部200において、二次キャッシュ制御部300からの転送データについてキャッシュ212を迂回させるバイパス218がそなえられている。そして、バイパス218からのデータとキャッシュ212からのデータとのいずれか一方を選択して演算器400に出力する選択部217がそなえられている。
【0044】
図14に示すフロー図(ステップA1〜A16)を参照しながら、上述のようなバイパス構成を有する一次キャッシュ制御部200において、不要なRIMフラグ有効化によって不要な命令再実行要求が発生するケースについて説明する。ここで、キャッシュミスしたロード命令に対応するデータが二次キャッシュ制御部300から転送されてきたときに、そのデータのキャッシュ212への登録がバイパスされ、そのデータがキャッシュ212に登録される前に演算器400に転送された場合について考える。さらに、そのデータのキャッシュ212への登録に伴う置換処理によって、当該ロード命令のキャッシュインデクスと同一のキャッシュインデクスを有するが当該ロード命令の対象アドレスとは異なるアドレスのデータに対する無効化処理が行なわれる場合について考える。その際、図14に示すごとく、RIMフラグが不要に有効化され、不要な命令再実行要求が発生する。
【0045】
図14に示すケースでは、まず、命令制御部100からFP#0にロード命令(address=A)が発行され、FP#0が確保される(ステップA1)。キャッシュミス時、つまりこのロード命令(address=A)の該当データが一次キャッシュ212に存在しない場合、一次キャッシュ制御部200は二次キャッシュ制御部300に対しデータ転送要求(address=A)が発行される(ステップA2)。次に、命令制御部100からFP#1にロード命令(address=B)が発行され、FP#1が確保される(ステップA3)。このロード命令(address=B)の一次キャッシュ212上のキャッシュインデクス(cache-index)はiであるとする。このロード命令(address=B)の該当データも一次キャッシュ212に存在しなかった場合、一次キャッシュ制御部200は二次キャッシュ制御部300に対しデータ転送要求(address=B)を発行する(ステップA4)。
【0046】
この後、ステップA3で発行された後続ロード命令の対象データ(address=B)の転送要求が、ステップA1で発行された先行ロード命令の対象データ(address=A)の転送要求よりも先に二次キャッシュ制御部300から発行されたとする(ステップA5)。このデータ転送要求を受信したことで、一次キャッシュ制御部200では、まず、図13で述べたバイパス構成により、一次キャッシュ212へのデータ登録前に後続ロード命令の対象データ(address=B)が演算器400に転送される(ステップA6)。これによりFP#1のstatusは「完了」に設定される(ステップA7)。
【0047】
一方、データ転送要求を二次キャッシュ制御部300から受信したことで、図9に示す手順で判定を行なうRIF判定部215により、FP#0およびFP#1におけるRIFフラグが「1」に設定される(ステップA8)。
【0048】
さらに、データ転送要求を二次キャッシュ制御部300から受信したことで、address=B/index=iのデータを一次キャッシュ212に登録するために、一次キャッシュ212のindex=iに既に登録されていた全く別のデータ(address=C/index=i)の置換処理が開始される(ステップA9)。この置換処理に伴い、一次キャッシュ制御部200は、二次キャッシュ制御部300から、address=C/index=iのデータに対する無効化処理を受信する(ステップA10)。このとき、そのキャッシュインデクス(index=i)がFP#1のキャッシュインデクスと一致するため、図8に示す手順で判定を行なうRIM判定部214により、FP#0およびFP#1におけるRIMフラグが「1」に設定される(ステップA11)。
【0049】
その後、A1で発行された先行ロード命令の対象データ(address=A)の転送要求が、二次キャッシュ制御部300から発行されると(ステップA12)、図13で述べたバイパス構成により、一次キャッシュ212へのデータ登録前に先行ロード命令の対象データ(address=A)が演算器400に転送される(ステップA13)。これによりFP#0のstatusは「完了」に設定される(ステップA14)。このとき、FP#0においてRIM=RIF=1であるため(ステップA15)、図10に示す手順で判定を行なう命令再実行判定部216により、命令制御部100に対し命令再実行要求が発行されることになる(ステップA16)。
【0050】
以上のような一連のフローに従って説明した通り、同一キャッシュインデクスであるが全く異なるデータ(address B≠C)に対する無効化要求によってRIMフラグ有効化が生じ、不要な命令再実行要求が発生する。これにより、データ化けを生じさせることはないが、不要な命令再実行が、情報処理装置の処理性能の低下要因となる。
【0051】
また、これとは別に、RIFフラグは、下位階層のキャッシュ(例えば二次キャッシュ制御部300)もしくはメモリからデータが転送されたときに有効になるフラグである。しかし、RIMフラグが無効な時点でRIFフラグを有効にすると、その後、たとえRIMフラグが有効となるような無効化処理が要求されたとしても、TSO違反にはなりえない。つまり、TSO違反となるケースは、図11や図12に示したように、他CPUにおけるストア処理に伴う無効化処理によりRIMフラグが有効になった後、他CPUにおけるストア済みデータが自CPUに転送されてきてRIFフラグが有効になる場合のみである。従って、RIMフラグが有効になる前にRIFフラグを有効にする必要はない。それにも関わらず、図9に示す手順で判定を行なうRIF判定部215では、RIFフラグを有効にした後にもRIMフラグが有効になり得るため、不要な命令再実行要求が発生する。これによっても、不要な命令再実行が、情報処理装置の処理性能の低下要因となる。
【0052】
これらの性能低下の要因は、二次キャッシュ制御部300からのデータ転送タイミングと置換制御に伴う無効化要求のタイミングとの前後関係によるものである。しかし、マルチコア化などによる二次キャッシュ制御部200の構成や制御の変更によってはこのタイミング関係が定常的に発生し得ることが考えられる。そのような場合、置換処理毎に不要な命令再実行が発生し、性能低下が定常的に発生することとなるため、メモリアクセスをアウトオブオーダで処理する情報処理装置において、極めて大きな性能低下を招くおそれがある。
【0053】
図1〜図4を参照しながら後述する、本実施形態の一次キャッシュ制御部200A(200A−a,200A−b)や、この一次キャッシュ制御部200Aを適用される情報処理装置(CPU1)は、上述した不要な命令再実行を抑止する構成/機能を有している。本実施形態のCPU−αやCPU−βでは、上述した一次キャッシュ制御部200に代えて、一次キャッシュ制御部200A(200A−a,200A−b)が用いられる。
【0054】
〔2〕実施形態の構成
図1は、本実施形態の一次キャッシュ制御部200A(200A−a,200A−b)の構成の一例を示すブロック図、図2は、本実施形態の一次キャッシュ制御部200Aを適用される情報処理装置(CPU1)の構成の一例を示すブロック図である。なお、図中、既述の符号と同一の符号は同一もしくはほぼ同一の部分を示しているので、その説明は省略する。また、以下の説明でも、CPU−αにおける構成要素を特定する際には各符号にaを付す一方、CPU−βにおける構成要素を特定する際には各符号にbを付す。CPU−α,CPU−βを特定する必要の無い場合には、a,bを付すことなく符号の表記を行なう。
【0055】
図2に示すように、本実施形態の一次キャッシュ制御部200Aを適用されるCPU1は、マルチプロセッサ構成を採用している。つまり、CPU1は、2つの処理部としてのCPU−CORE10(CPU−αおよびCPU−β)を有し、これらの2つのCPU−CORE10は、下位階層の二次キャッシュ制御部300を共用している。また、各CPU−CORE10は、メモリアクセスをアウトオブオーダで処理するもので、命令制御部100,演算器としての演算制御部400および一次キャッシュ制御部200Aを有している。さらに、CPU1(二次キャッシュ制御部300)は、システム制御バス2に接続され、図示しないメインメモリ等と通信可能に接続されている。なお、各一次キャッシュ制御部200Aには一次キャッシュ212がそなえられ、二次キャッシュ制御部300Aには二次キャッシュ301がそなえられている。
【0056】
そして、図1に示すように、一次キャッシュ制御部200Aは、FP210,プライオリティ部,キャッシュ212,アクセス調停部213,RIM判定部214A,RIF判定部215Aおよび命令再実行判定部216をそなえて構成されている。なお、図1では、便宜上、複数エントリからなるFP210のうちの1エントリのみを図示し、プライオリティ部の図示を省略している。プライオリティ部については図6のプライオリティ部211参照。
【0057】
ここで、図1に示す、本実施形態の一次キャッシュ制御部200Aは、キャッシュ212に対するロード要求のキャッシュミスに伴うデータ転送要求時に、そのデータ転送要求とともに、その要求元のFP番号も、二次キャッシュ制御部300に送出する。要求元のFP番号は、当該ロード要求を保持しているFP210のエントリを特定するものである。
【0058】
また、本実施形態の二次キャッシュ制御部300は、図1に示すように、上記データ転送要求に伴う置換処理の無効化要求発行時に、その無効化要求とともに、その無効化要求が置換処理に伴うものであることを示す情報と、データ転送要求元のFP番号とを一次キャッシュ制御部200Aに通知する。一次キャッシュ制御部200Aでは、RIM判定部214AおよびRIF判定部215Aが、二次キャッシュ制御部300からの上述のような情報を用いて、図3および図4を参照しながら後述するごとく判定処理を行なう。
【0059】
図1に示す、本実施形態の一次キャッシュ制御部200AにおけるRIM判定部214A,RIF判定部215Aおよび命令再実行判定部216は、以下のような機能を果たすものである。
【0060】
RIM判定部214Aは、以下のような条件判定を行ない、所定条件を満たす場合に第1フラグとしてのRIMフラグを有効化する第1判定部として機能する。このRIM判定部214Aは、まず、図5に示すRIM判定部214と同様の判定を行なう。つまり、RIM判定部214Aは、FP210のエントリに保持されたロード命令に応じて対象データがキャッシュ212から演算器300に転送されてからそのエントリが解放されるまでの間に、キャッシュ212のデータに対する無効化要求を一次キャッシュ制御部200Aが受信した場合に、当該無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令がFP210のエントリに存在するか否かを判定する。換言すると、FP210のエントリに保持されたロード命令に応じて対象データがキャッシュ212から演算器400に転送された後、そのエントリが解放されるまでの間にキャッシュ212のデータに対する無効化要求が受信され、当該無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令がFP210のエントリに存在するか否かが判定される。このようなエントリがFP210に存在しないと判定した場合、RIM判定部214Aは、RIMフラグの有効化を行なわない。
【0061】
一方、上述の条件に合うエントリがFP210に存在する場合、RIM判定部214Aは、二次キャッシュ制御部300からの情報に基づいて、当該無効化要求が置換処理に起因するものであるか否かを判定する。さらに、RIM判定部214Aは、上記キャッシュインデクスの一致したロード命令を保持するFP210のエントリ(FP番号)と当該置換処理の要求元命令を保持するFP210のエントリ(FP番号)とが一致するか否かを、当該無効化要求に付与されたFP番号を用いて判定する。そして、当該無効化要求が置換処理に起因しない場合、または、上記FP番号が一致しない場合、RIM判定部214Aは、そのエントリのRIMフラグを有効化する。つまり、RIM判定部214Aは、上述のようなエントリがFP210に存在するときには、当該無効化要求が置換処理に起因し且つ上記FP番号が一致する場合を除いて、そのエントリのRIMフラグを有効化する。さらに換言すると、RIM判定部214Aは、上述のようなエントリがFP210に存在する場合であって、無効化要求が置換処理に起因し且つ上記FP番号が一致する場合には、RIMフラグの有効化を抑止する。
【0062】
また、RIF判定部215Aは、以下のような条件判定を行ない、所定条件を満たす場合に第2フラグとしてのRIFフラグを有効化する第2判定部として機能する。このRIF判定部215Aは、まず、図5に示すRIF判定部215と同様の判定を行なう。つまり、RIF判定部215Aは、FP210のエントリに保持されたロード命令の対象データについてキャッシュミスしたとき、当該対象データが二次キャッシュ制御部300から転送されてきたか否かを判定する。ロード命令がキャッシュミスした後にそのロード命令の対象データが転送されていない場合、RIF判定部215Aは、RIFフラグの有効化を行なわない。
【0063】
一方、ロード命令がキャッシュミスした後にそのロード命令の対象データが二次キャッシュ制御部300から転送されてきた場合、RIF判定部215Aは、さらに、RIMフラグを有効化されたエントリがFP210に既に存在するか否かを判定する。そして、RIMフラグを有効化されたエントリがFP210に既に存在する場合、RIF判定部215AはそのエントリのRIFフラグを有効化する。一方、RIMフラグを有効化されたエントリがFP210に存在しない場合、RIF判定部215AはそのエントリのRIFフラグの有効化を抑止する。
【0064】
そして、命令再実行判定部216は、図5に示したものと同様に機能する。つまり、命令再実行判定部216は、FP210のエントリに保持されたロード命令の完了時に、RIMフラグおよびRIFフラグがいずれも有効化されているか否かを判定し、いずれも有効化されていると判定した場合、その次の命令からの再実行を命令制御部100に対し指示する。
【0065】
〔3〕実施形態の動作
次に、上述のごとく構成された本実施形態の一次キャッシュ制御部200A(200A−a,200A−b)の動作について、図3および図4を参照しながら説明する。ここで、図3は、RIM判定部214Aによる判定動作を説明するためのフローチャート、図4は、RIF判定部215Aによる判定動作を説明するためのフローチャートである。
【0066】
図5に示すRIM判定部214は、FP210に保持しているロード命令の対象アドレス(キャッシュインデクス)と無効化要求の対象アドレス(キャッシュインデクス)とが一致したときに、RIMフラグを有効にしている。これに対し、図1のRIM判定部214Aでは、無効化処理が正にロード対象データのキャッシュ登録処理に伴う置換処理によるものである場合には、RIMフラグの有効化を抑止することで、不要な命令再実行要求の発生を抑止している。
【0067】
つまり、図14において説明した不要な命令再実行要求の発行を抑止すべく、二次キャッシュ制御部300からの無効化要求には、無効化処理が置換処理に起因するものであるか否かを示す情報(図1図示「置換」)が付加される。無効化要求が置換処理に起因する場合、この無効化要求には、さらに、その無効化要求の発生要因となったデータ転送要求元のFP番号(図1図示「FP#」)を示す情報も付加される。
【0068】
図14では、FP#1に保持されたロード命令の対象データ(address=B/index=i)のデータをキャッシュ212に登録するために、それと全く異なるデータだが同一インデクスである既存データ(address=C/index=i)が置換される。その際、address=Cのデータに対する無効化処理がFP#1のロード命令の対象データに対する無効化処理であるかのように、RIM判定部214が判定してしまうことにある。ここで、図8に示す手順で判定を行なうRIM判定部214でも、無効化要求のアドレスとFPのアドレスとの一致をアドレスの全ビットに基づき判定すれば、図14で説明したケースにおいてもaddress B≠Cを判定することができ、不要な命令再実行要求の発行を抑止可能になる。しかし、高い動作周波数や少ない回路量で本機能を実現するためには、無効化要求のアドレスとFPのアドレスとの一致をキャッシュインデクス部分のみで判定することが望ましい。この利点を維持しつつ、性能低下を回避するために、本実施形態において、RIM判定部214Aは、図3に示すフローチャート(ステップS11〜S15,S141,S142)に従って判定動作を行なっている。
【0069】
つまり、キャッシュ212に対する無効化要求を二次キャッシュ制御部300から受信すると(ステップS11)、RIM判定部214は、FP210の全てのエントリを検索する(ステップS12)。そして、RIM判定部214Aは、「valid=1」且つ「status=完了」且つ「opcode=ロード系」のエントリがFP210に存在するか否かを判定する(ステップS13)。即ち、RIM判定部214Aは、FP210に保持されたロード命令に応じて対象データがキャッシュ212から演算器400に転送された後、そのエントリが解放されるまでの間にキャッシュ212の対象データに対する無効化要求を二次キャッシュ制御部300から受信したか否かを判定する。
【0070】
このようなエントリがFP210に存在する場合(ステップS13のYESルート)、RIM判定部214Aは、該当エントリのアドレスのキャッシュインデクス部分と二次キャッシュ制御部300から受信した無効化要求の対象アドレスのキャッシュインデクス部分とが一致するか否かを判定する(ステップS14)。キャッシュインデックス部分が一致する場合(S14のYESルート)、RIM判定部214Aは、その無効化要求が置換処理に起因するものであるか否かを判定する(ステップS141)。無効化要求が置換処理に起因するものでなければ(NOルート)、RIM判定部214Aは、FP−TOQが指示するエントリから有効なエントリまでの全てのエントリについてRIMフラグを“1”にする(ステップS15)。
【0071】
一方、無効化要求が置換処理に起因するものであれば(ステップS141のYESルート)、RIM判定部214Aは、上記キャッシュインデクスの一致したロード命令を保持するFP210のエントリ(FP番号)と当、該置換処理の要求元命令を保持するFP210のエントリ(FP番号)とが一致するか否かを判定する(ステップS142)。これらのFP番号が一致した場合(YESルート)、たとえステップS14においてキャッシュインデクス部分(例えば図14におけるindex=i)が一致したとしても、その無効化処理は、該当FPエントリの対象データ(例えば図14におけるaddress=Bのデータ)に対するものではない。その無効化処理は、例えば図14におけるaddres=Cのデータに対するものである。このため、RIM判定部214Aは、そのエントリのRIMフラグの有効化を行なわずRIM判定処理を終了する。なお、対象エントリがFP210に存在しない場合(ステップS13のNOルートまたはステップS14のNOルート)も、RIM判定部214Aは、RIM判定処理を終了する。
【0072】
一方、これらのFP番号が一致しない場合(ステップS142のNOルート)、その無効化処理は、該当FPエントリの対象データに対するものである可能性がある。つまり、その無効化処理は、例えば図14におけるaddress=Bのデータに対するものである可能性がある。このため、RIM判定部214Aは、FP−TOQが指示するエントリから有効なエントリまでの全てのエントリについてRIMフラグを“1”にする(ステップS15)。
【0073】
このように、無効化処理が置換処理に起因するものであり、且つ、キャッシュインデクスの一致した、ロード命令を保持するエントリと当該置換処理の要求元命令を保持するエントリとのFP番号が一致した場合には、RIM判定部214AはRIMフラグの有効化を抑止する。これにより、命令再実行判定部216によって、図14に示すケースのごとく、TSO違反の回避に関わらない不要な命令再実行要求が発行されることを抑止することができる。
【0074】
図5に示すRIF判定部215は、図9に示す手順で判定を行ない、単純にFP210のいずれかのエントリが有効である場合にRIFフラグを有効化している。このため、RIFフラグを有効にした後にもRIMフラグが有効になり得る。これに対し、図1のRIF判定部215Aでは、キャッシュ212に対するデータ転送が行なわれたことに伴ってRIFフラグを有効にする際、FP210のいずれかのエントリに有効なRIMフラグが存在する、という条件を追加している。つまり、RIMフラグが有効化された後にキャッシュ212に対するデータ転送が行なわれた場合に、RIFフラグの有効化が行なわれる。しかし、キャッシュ212に対するデータ転送が行なわれた時点で、有効なRIMフラグを有するエントリがFP210に存在しない場合には、RIFフラグの有効化を抑止することで、不要な命令再実行要求の発生を抑止している。
【0075】
図1のRIF判定部215Aは、図4に示すフローチャート(ステップS21〜S24,S231)に従って判定動作を行なっている。
つまり、キャッシュメモリ212への登録データが二次キャッシュ制御部300から転送されてくると(ステップS21)、RIF判定部215Aは、FP210の全てのエントリを検索する(ステップS22)。そして、RIF判定部215Aは、「valid=1」のエントリ即ち有効なエントリがFP210に存在するか否かを判定し(ステップS23)、存在する場合(YESルート)、「RIM=1」のエントリが存在するか否かを判定する(ステップS231)。「RIM=1」のエントリが存在する場合(YESルート)、RIF判定部215Aは、FP−TOQが指示するエントリから有効なエントリまでの全てのエントリについてRIFフラグを“1”にする(ステップS24)。換言すると、RIMフラグが有効化された後にキャッシュ212に対するデータ転送が行なわれた場合、RIF判定部215Aは、RIFフラグを有効化する。なお、有効なエントリがFP210に存在しない場合(ステップS23のNOルート)や、「RIM=1」のエントリがFP210に存在しない場合(ステップS231のNOルート)、RIF判定部215Aは、RIF判定処理を終了する。
【0076】
このように、キャッシュ212に対するデータ転送が行なわれた時点で、RIMフラグを有効化されているエントリが無ければ、RIFフラグの有効化が抑止される。これにより、命令再実行判定部216によって、TSO違反の回避に関わらない不要な命令再実行要求が発行されることを抑止することができる。
【0077】
〔4〕実施形態の効果
本実施形態によれば、メモリアクセスをアウトオブオーダで処理するCPU1におけるTSO保証のための命令再実行処理において、TSO違反の回避に関わらない不要な命令再実行要求の発行を確実に抑止することができる。より具体的には、無効化処理が置換処理に起因するものであり、且つ、キャッシュインデクスの一致した、ロード命令を保持するエントリと当該置換処理の要求元命令を保持するエントリとのFP番号が一致した場合には、RIMフラグの有効化が抑止される。また、キャッシュ212に対するデータ転送が行なわれた時点で、RIMフラグを有効化されているエントリが無ければ、RIFフラグの有効化が抑止される。
【0078】
従って、図5に示す一次キャッシュ制御部200では存在していた不要な命令再実行要求が、図1等に示す一次キャッシュ制御部200Aにおいては確実に抑止され、不要な命令再実行要求が削減される。これにより、CPU1の処理性能の低下を招くことなく、確実にTSO保証が実現され、例えば符号10aで示すプロセッサ(CPU−CORE)で処理されるストア命令の順序性が、例えば符号10bで示す他プロセッサで実行されるロード命令に反映されることを確実に保証することができる。
【0079】
〔5〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、本実施形態では、処理部(CPU−CORE)の数が2である場合について説明したが、本発明はこれに限定されるものではない。
【0080】
また、上述したプライオリティ部211,アクセス調停部213,RIM判定部/第1判定部214A,RIF判定部/第2判定部215Aおよび命令再実行判定部216としての機能(その全部または一部の機能)は、コンピュータ(CPU1,CPU−CORE10を含む)が所定のアプリケーションプログラム(キャッシュメモリ制御プログラム)を実行することによって実現される。
【0081】
そのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RWなど),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RW,ブルーレイディスクなど)等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【0082】
ここで、コンピュータとは、ハードウエアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウエアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記キャッシュメモリ制御プログラムは、上述のようなコンピュータに、上記各部211,213,214A,215A,216としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
【符号の説明】
【0083】
1 CPU(情報処理装置)
2 システム制御バス
10 CPU−CORE(処理部)
100,100a,100b 命令制御部
200A,200A−a,200A−b 一次キャッシュ制御部(キャッシュメモリ制御装置)
210,210a,210b FP(命令ポート)
211 プライオリティ部
212,212a,212b キャッシュRAM(キャッシュメモリ,一次キャッシュ)
213 アクセス調停部
214A RIM判定部(第1判定部)
215A RIF判定部(第2判定部)
216 命令再実行判定部
217 選択部
218 バイパス
300 二次キャッシュ制御部
301 キャッシュRAM(キャッシュメモリ,二次キャッシュ)
400 演算制御部(演算器)

【特許請求の範囲】
【請求項1】
メモリアクセスをアウトオブオーダで処理する複数の処理部を有する情報処理装置であって、
各処理部が、
キャッシュメモリと、
前記キャッシュメモリのデータにアクセスする命令をエントリに保持する命令ポートと、
前記命令ポートのエントリに保持されたロード命令に応じて、ロード命令の対象データが前記キャッシュメモリから演算器に転送された後に前記キャッシュメモリのデータに対する無効化要求を受信し、受信した無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令が前記命令ポートに存在すると判定した場合、第1フラグを有効化する第1判定部と、
前記命令ポートのエントリに保持されたロード命令の対象データについてキャッシュミスした後に当該キャッシュミスに応じて対象データが転送されてきたと判定した場合、第2フラグを有効化する第2判定部と、
前記命令ポートのエントリに保持されたロード命令の完了時に前記第1フラグおよび前記第2フラグがいずれも有効化されていると判定した場合、その次の命令からの再実行を指示する命令再実行判定部とをそなえた、情報処理装置。
【請求項2】
前記第1判定部は、前記受信した無効化要求が置換処理に起因するものであり、且つ上記キャッシュインデクスの一致したロード命令を保持する前記命令ポートのエントリと当該置換処理の要求元命令を保持する前記命令ポートのエントリとが一致する場合には、前記第1フラグを有効化しない、請求項1記載の情報処理装置。
【請求項3】
前記第2判定部は、前記命令ポートのエントリに保持されたロード命令の対象データがキャッシュミスした後に前記対象データが転送されてきたと判定されたことに加え、前記第1フラグが有効化されたエントリが前記命令ポートに既に存在すると判定した場合、前記第2フラグを有効化する、請求項1または請求項2記載の情報処理装置。
【請求項4】
前記命令ポートのエントリに、前記第1フラグおよび前記第2フラグが保持されている、請求項1〜請求項3のいずれか一項に記載の情報処理装置。
【請求項5】
メモリアクセスをアウトオブオーダで処理すべく、キャッシュメモリと、前記キャッシュメモリのデータにアクセスする命令を、各エントリに保持する命令ポートとを有し、前記キャッシュメモリの制御を行なうキャッシュメモリ制御装置であって、
前記命令ポートのエントリに保持されたロード命令に応じて、ロード命令の対象データが前記キャッシュメモリから演算器に転送された後に前記キャッシュメモリのデータに対する無効化要求を受信し、受信した無効化要求の対象アドレスのキャッシュインデクスと一致するキャッシュインデクスを有するロード命令が前記命令ポートに存在すると判定した場合、第1フラグを有効化する第1判定部と、
前記命令ポートのエントリに保持されたロード命令の対象データについてキャッシュミスした後に当該キャッシュミスに応じて対象データが転送されてきたと判定した場合、第2フラグを有効化する第2判定部と、
前記命令ポートのエントリに保持されたロード命令の完了時に前記第1フラグおよび前記第2フラグがいずれも有効化されていると判定した場合、その次の命令からの再実行を指示する命令再実行判定部とをそなえた、キャッシュメモリ制御装置。
【請求項6】
前記第1判定部は、前記受信した無効化要求が置換処理に起因するものであり、且つ上記キャッシュインデクスの一致したロード命令を保持する前記命令ポートのエントリと当該置換処理の要求元命令を保持する前記命令ポートのエントリとが一致する場合には、前記第1フラグを有効化しない、請求項5記載のキャッシュメモリ制御装置。
【請求項7】
前記第2判定部は、前記命令ポートのエントリに保持されたロード命令の対象データがキャッシュミスした後に前記対象データが転送されてきたと判定されたことに加え、前記第1フラグが有効化されたエントリが前記命令ポートに既に存在すると判定した場合、前記第2フラグを有効化する、請求項5または請求項6記載のキャッシュメモリ制御装置。
【請求項8】
前記命令ポートのエントリに、前記第1フラグおよび前記第2フラグが保持されている、請求項5〜請求項7のいずれか一項に記載のキャッシュメモリ制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−134205(P2011−134205A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−294549(P2009−294549)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】