(57)【要約】  例えばマルチ・コア・システムにおけるキャッシュメモリアクセスのためのパイプラインの混雑緩和を目的として、キャッシュメモリ制御装置が、例えば各コアから与えられる命令が、その実行時にキャッシュメモリにアクセスが行われる命令か、行われない命令かを判定する判定部と、アクセスが行われると判定された命令をパイプライン処理に投入し、行われないと判定された命令をパイプライン処理に投入せずに、直接外部に出力するための経路切替部とを備える。
2008155802.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリにアクセスする命令のパイプライン処理を制御するキャッシュメモリ制御装置であって、
外部から与えられる命令が、その実行時にキャッシュメモリにアクセスが行われる命令か、あるいはキャッシュメモリのアクセスが行われない命令かを判定するキャッシュアクセス判定手段と、
キャッシュメモリにアクセスが行われると判定された命令を前記パイプライン処理に投入する一方、キャッシュメモリへのアクセスが行われないと判定された命令は前記パイプライン処理に投入せずに外部に出力するよう、命令の経路を切り替える経路切替手段とを備えることを特徴とするキャッシュメモリ制御装置。
【請求項２】
前記キャッシュメモリ制御装置が、マルチ・コア・システムを構成する複数のコアに接続され、
前記キャッシュアクセス判定手段が、該複数のコアのそれぞれから与えられる命令に対する判定を行うことを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記キャッシュメモリ制御装置が、前記複数のコアのそれぞれから出力され、その実行時に前記キャッシュメモリにアクセスが行われないと判定された複数の命令に対して、前記直接外部に出力する優先度を決定することを特徴とする請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
前記キャッシュアクセス判定手段が、前記外部から与えられる命令のデータの一部をデコードして、そのデコード結果に対応して前記判定を行うことを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項５】
前記実行時にキャッシュメモリにアクセスが行われない命令が、ソフトウェアからのデータのライト／リードが可能なレジスタに対するデータのライト、またはリードの命令を含むことを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項６】
キャッシュメモリアクセスのためのパイプライン制御方法であって、
外部から与えられる命令が、その実行時にキャッシュメモリにアクセスが行われる命令か、あるいはアクセスが行われない命令かを判定するステップと、
キャッシュメモリにアクセスが行われると判定された命令を前記パイプラインに投入し、アクセスが行われないと判定された命令を前記パイプラインに投入せずに、直接外部に出力するステップとを備えることを特徴とするパイプライン制御方法。
【請求項７】
前記キャッシュメモリアクセスのためのパイプラインの制御装置が、マルチ・コア・システムを構成する複数のコアに接続され、
前記判定のステップにおいて、該複数のコアのそれぞれから与えられる命令に対する判定を行うことを特徴とする請求項６に記載のパイプライン制御方法。
【請求項８】
前記複数のコアのそれぞれから出力され、その実行時に前記キャッシュメモリにアクセスが行われないと判定された複数の命令に対して、さらに前記直接外部に出力する優先度を決定することを特徴とする請求項７に記載のパイプライン制御方法。
【請求項９】
メモリと、
演算処理を行う演算処理部と、
前記メモリから読み出された情報を保持するキャッシュメモリに対するアクセスのパイプライン処理制御を実行するキャッシュ部と、を備え、
前記キャッシュ部は、
命令が、その実行時にキャッシュメモリへのアクセスを要する命令か、あるいはキャッシュメモリへのアクセスを要さない命令かを判定する判定部と、
前記判定部の判定結果に応じて、前記命令がキャッシュメモリへのアクセスを要する命令である場合には当該命令を前記パイプライン処理にする側に命令の経路を切り替え、前記命令がキャッシュメモリへのアクセスを要さない命令である場合には当該命令を前記パイプライン処理に投入せずに外部に出力する側に命令の経路をきりかえる切替部と、を備えることを特徴とする情報処理装置。
【請求項１０】
前記情報処理装置において、前記演算処理部と前記キャッシュ部とは、同一の演算処理装置の一部を構成することを特徴とする、請求項９に記載の情報処理装置。
【請求項１１】
前記情報処理装置において、前記キャッシュ部は、複数の演算処理部によって共有されていることを特徴とする、請求項９に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのキャッシュメモリ制御方式に係り、さらに詳しくはパイプライン処理方式が用いられるキャッシュメモリの制御装置において、パイプラインの混雑を回避するために有効なキャッシュメモリ制御装置、およびパイプライン制御方法に関する。
【背景技術】
【０００２】
キャッシュメモリは従来からコンピュータシステムにおいて使用されている。その使用の目的は、例えば中央処理装置（ＣＰＵ）によって使用されたデータがすぐに再び使われることを予測して、そのデータを高速のキャッシュメモリに保持し、そのデータに対するアクセスを高速化可能とすることによって、主記憶装置のアクセス速度の制限を克服することである。【０００３】
しかしながら、近年においてコンピュータシステムがマルチ・コア・システムとなり、しかもキャッシュメモリへのアクセス方式としてパイプライン処理方式が用いられるようになり、パイプラインの混雑が進み、その緩和のための対策が必要となっているという問題点がある。【０００４】
図１は、マルチ・コア・システムにおけるパイプライン制御方式の従来例の説明図である。同図においてＭＩ（ムーブ・イン）−ＰＯＲＴは、例えばマルチ・コア・システムの各コアから送られる新しいリクエストとしての命令を格納するポートである。このポートに格納された命令に対しては、ＰＲ（プライオリティ）１のステージで、それぞれのコアから出力された命令の間での優先度が判定される。続いてＰＲ２のステージで他のポート、すなわちコアからキャッシュ側への応答や、コアからのムーブ・アウト・データを格納するＭＯ（ムーブ・アウト）−ＰＯＲＴ、システム・コントローラ（ＳＣ）から与えられるオーダを格納するＳＣ−ＰＯＲＴとの間で命令の優先度が判定され、優先度の高い命令からキャッシュメモリへのアクセス処理のためのパイプラインのステージ、すなわちＸＰ０からＸＰ６に次々と命令が投入され、このパイプラインを抜けた命令はシステム・コントローラへのリクエストＳＣ−ＲＥＱとして、ＣＰＵの外部インターフェース部に出力される。【０００５】
この従来例においては、その命令の実行に当たってキャッシュメモリへのアクセスが必要となる命令は当然のこととして、またキャッシュメモリへのアクセスが必要とならない命令、例えばＡＳＩ（アドレス・スペース・アイデンティファイ）レジスタへのデータのライト、あるいはリードのための命令のような命令も、図１のＸＰ０からＸＰ６のパイプラインを通して外部インターフェース部に与えられていたために、マルチ・コア・システムにおいてコアの数が増え、処理すべき命令の数が大幅に増加すると、パイプラインの混雑がひどくなるという問題点があった。【０００６】
このようなキャッシュメモリの制御に関する従来技術としての特許文献１には、バス上のアドレスが所定のアドレス範囲に入っている時にはＭＰＵから出力されたアドレス、およびデータを直接メインメモリ側に供給するバイパス経路側にバスを切り替えることによって、キャッシュメモリに移さないノンキャッシュ領域として指定されたメインメモリ上の領域の一部を高速でアクセス可能とする技術が開示されている。【０００７】
次に特許文献２には、プロセッサからのキャッシュにないメモリ位置へのアクセスの頻度の値を検査し、その値が閾値を超えていればキャッシュにアクセスを実行し、閾値を超えていなければキャッシュをバイパスすることによって、キャッシュメモリの使用効率を改善する技術が開示されている。
【特許文献１】特開平２−３２４３６号公報  「バッファ記憶装置」
【特許文献２】特許第２７３５７８１号公報  「キャッシュ・メモリ制御システム及び方法」
【０００８】
しかしながらこのような従来技術を用いても、コアの数が増加したマルチ・コア・システムにおいて、その命令の実行時にキャッシュメモリにアクセスを行わない命令を含めて、全ての命令をキャッシュメモリアクセスのためのパイプラインを通す場合に、パイプラインの混雑がひどくなるという問題点を解決することはできなかった。
【発明の開示】
【０００９】
本発明の目的は、例えばマルチ・コア・システムを構成する複数のコアのそれぞれから送られる命令のうちで、その実行時にキャッシュメモリにアクセスを行わないノンキャッシュ系の命令を、キャッシュメモリ制御のためのパイプラインを通すことなく、外部にバイパスさせることによって、パイプラインの混雑を緩和し、システム性能の向上を図ることである。
【００１０】
本発明のキャッシュメモリ制御装置は、キャッシュメモリにアクセスする命令のパイプライン処理を制御する装置であり、少なくともキャッシュアクセス判定手段と、経路切替手段とを備える。
【００１１】
キャッシュアクセス判定手段は、外部、例えばマルチ・コア・システムを構成する複数のコアのそれぞれから与えられる命令が、その実行時にキャッシュメモリにアクセスが行われない命令か、あるいはアクセスが行われる命令かを判定するものであり、経路切替手段は、キャッシュメモリにアクセスが行われると判定された命令を前記パイプライン処理に投入し、アクセスが行われないと判定された命令を前記パイプライン処理に投入せずに、直接外部に出力するものである。
【００１２】
本発明のパイプライン制御方法は、キャッシュメモリへのアクセスのためのパイプライン処理の制御方法であり、前述のキャッシュメモリ制御装置におけると同様に、外部から与えられる命令が、その実行時にキャッシュメモリにアクセスが行われない命令か、行われる命令かを判定し、アクセスが行われると判定された命令をパイプライン処理に投入し、アクセスが行われないと判定された命令をパイプライン処理に投入せずに、直接外部に出力するものである。
【００１３】
以上のように本発明によれば、例えばマルチ・コア・システムを構成するコアのそれぞれから与えられる命令のうちで、その実行時にキャッシュメモリにアクセスが行われる命令のみがパイプライン処理に投入され、アクセスが行われない命令はパイプライン処理に投入されることなく、直接外部に出力される。
【００１４】
本発明によれば、例えばマルチ・コア・システムを構成するコアの数が多くなり、それぞれのコアから与えられる命令の総数が非常に多くなっても、キャッシュメモリにアクセスするためのパイプラインの混雑を緩和することが可能となり、システム性能の向上に寄与するところが大きい。
【図面の簡単な説明】
【００１５】
【図１】パイプライン制御方式の従来例の説明図である。
【図２】本実施形態におけるキャッシュメモリ制御装置の構成ブロック図である。
【図３】本実施形態におけるマルチ・コア・システムの構成例の全体構成ブロック図である。
【図４】キャッシュ部の基本構成のブロック図である。
【図５】本実施形態におけるパイプライン制御方式の説明図である。
【図６】ムーブ・イン・ポートのデータ格納例の説明図である。
【図７】経路切替制御部の構成例の回路図である。
【発明を実施するための最良の形態】
【００１６】
図２は、本実施形態におけるキャッシュメモリ制御装置の構成ブロック図である。同図においてキャッシュメモリ制御装置１は、キャッシュアクセス判定部２、および経路切替部３を備える。【００１７】
キャッシュアクセス判定部２は、外部、例えばマルチ・コア・システムを構成する複数のコアのそれぞれから与えられる命令が、その実行時にキャッシュメモリにアクセスが行われない命令か、あるいはアクセスが行われる命令かを判定するものである。【００１８】
経路切替部３は、キャッシュメモリにアクセスすると判定された命令をパイプライン処理に投入し、アクセスが行われないと判定された命令をパイプラインに投入することなく、直接外部に出力するものである。【００１９】
図３は、マルチ・コア・システムの構成例のブロック図である。同図のシステム内には中央処理装置（ＣＰＵ）が２台備えられ、２つのＣＰＵ１０１、１０２は、システム・コントローラ１２を介してメモリ１１と接続されている。システム・コントローラ（ＳＣ）１２は、２つのＣＰＵ１０１、１０２とメモリ１１との間でのリクエストやデータのやり取りを制御する装置であるが、例えば図示しない外部の装置の制御も行うものである。【００２０】
それぞれのＣＰＵ１０１、１０２の内部には、それぞれ２個ずつのコア部１５、各コア部１５と接続されたキャッシュ部１６、キャッシュ部１６とシステム・コントローラ１２との間に介在する外部インターフェース部１７を備えている。【００２１】
図４は、図３のキャッシュ部１６の構成ブロック図である。同図においてキャッシュ部は、３つのポートＭＩ−ＰＯＲＴ２０、ＭＯ−ＰＯＲＴ２１、ＳＣ−ＰＯＲＴ２２、プライオリティ決定部２３、パイプライン２４、ＴＡＧ２５、およびムーブ・イン・バッファ（ＭＩＢ）２６を備えている。キャッシュメモリとしては、データを保持するデータ部が当然必要であるが、図４においては省略されている。【００２２】
図４のプライオリティ決定部２３は、３つのポート２０、２１、２２に格納されているリクエスト（命令）の優先度を決定し、その優先度に対応してポート２０、２１、２２からのリクエストをパイプライン２４に投入する。パイプライン２４は、投入されたリクエストのアドレス(adrs)を用いてＴＡＧ２５の検索を行い、キャッシュにヒットすればコア部１５に対して要求されたデータを返す。一方、キャッシュにミスした場合にはムーブ・イン・バッファ２６の内部にムーブ・イン・データを格納すべき領域を確保し、システム・コントローラ１２に対してムーブ・イン要求、すなわちＳＣ−ＲＥＱを発行する。なお、ムーブ・イン・バッファ２６に格納されたデータに対しては、パイプライン２４によって検索が行われ、ヒットした場合にはアドレスマッチ信号（adrs-match)がパイプライン２４に与えられる。【００２３】
図５は、本実施形態におけるパイプライン制御方式の説明図である。同図において、ＰＲ０からＰＲ３は図４のプライオリティ決定部２３による処理のステージを表わし、この処理ステージでＭＩ−ＰＯＲＴ２０、ＭＯ−ＰＯＲＴ２１、およびＳＣ−ＰＯＲＴ２２に格納されたリクエスト（命令）の優先順位の決定が行われる。【００２４】
ＸＰ０からＸＰ６は、ＰＲ０からＰＲ３後のキャッシュメモリアクセスのためのパイプライン処理のステージを表わし、各ステージにおいてパイプライン上の処理が行われ、必要に応じて外部インターフェース部１７に対して、例えば図４のムーブ・イン・バッファ２６からのＳＣ−ＲＥＱが与えられる。【００２５】
本実施形態においては、ＰＲ０で各コア部から送られたリクエスト（命令）がＭＩ−ＰＯＲＴ２０に格納され、これらのリクエストのうちで、その実行時にキャッシュメモリにアクセスが行われるキャッシュ系のリクエストと、キャッシュメモリにアクセスが行われないノンキャッシュ系などのリクエストとが区別されて、リクエストの経路の切替が切替処理３０によって行われる。そしてリクエスト経路の切替は後述するように、ＭＩ−ＰＯＲＴ２０に格納された命令のデータを用いて、切替制御処理３１によって制御される。なお切替処理３０は、ハードウェア構成（回路）としては、例えばアドレスバスやデータバスなどに対する切替スイッチに相当するが、ここでは処理の流れを中心に説明している。【００２６】
その実行時にキャッシュメモリへのアクセスが行われない、すなわちキャッシュを持たないリクエスト（命令）として、ノンキャッシュ系リクエストとＡＳＩ系リクエストとがある。ノンキャッシュ系リクエストは、例えばメインメモリ上でキャッシュメモリにデータが移されることがない領域、すなわちノンキャッシュ領域に対応するリクエストである。ノンキャッシュ系リクエストの種類としては、ノンキャッシュ・リード、ノンキャッシュ・ライト、ノンキャッシュ・ブロック・リード、ノンキャッシュ・ブロック・ライトの４種類がある。ＡＳＩ系リクエストとは、ソフトウェアからのライト／リードが可能なＡＳＩ（アドレス・スペース・アイデンティファイ）レジスタへのデータのライト／リードのリクエストであり、ＡＳＩリード、ＡＳＩライトの２種類がある。【００２７】
これらのキャッシュアクセスを持たないリクエストは、切替処理３０によってキャッシュメモリへのアクセスのパイプラインとは別の経路にバイパスされ、ＰＲ１でコア間の優先順位が決定された後に、ＮＡ（ノンキャッシュＡＳＩ）−ＲＥＱとして外部インターフェース部に直接与えられる。これに対して、その実行時にキャッシュメモリへのアクセスが行われるキャッシュ系のリクエストに対しては、ＰＲ１でコア間、ＰＲ２でポート間の優先順位が決定され、その優先順位に対応してＸＰ０からＸＰ６までのパイプラインに投入される。これによってこのパイプラインに投入されるリクエストは、マルチ・コア・システムにおいても大幅に減少させることが可能となり、パイプラインの混雑は大幅に緩和される。【００２８】
図６、図７は、図５の切替制御処理３１の説明図である。図６は、ＭＩ−ＰＯＲＴに格納される命令（リクエスト）のデータを示し、例えばｎ＋１個のエントリのそれぞれに、コア部から送られた命令のデータが格納される。そのデータは、まずバリッド・フラグ（ＶＬＤ）、命令の種類を示すコマンド（ＣＭＤ）、例えばメモリアクセスのためのアドレス（ＡＤＲＳ）、リクエストの識別子（ＲＥＱＩＤ）、およびその他のデータである。このうちＣＭＤは、例えば６ビットが命令の種類を示し、その上位２ビットが“００”の時にパイプラインに投入すべき命令を、“０１”の時にパイプラインに投入することなく、外部インターフェース部に直接出力すべき命令を示すものとする。【００２９】
図７は、図５の切替制御処理３１に相当する切替制御部の構成例の回路図である。同図において、２つの３入力ＡＮＤゲート３５、３６によって切替制御部が構成される。ＡＮＤゲート３５には、バリッド・フラグ（ＶＬＤ）の値と、ＣＭＤ６ビットのうちで０ビット目からみて上位２ビット、すなわち５ビット目と４ビット目の値が与えられる。ここで、ＣＭＤの５ビット目の値は反転されてＡＮＤゲート３５に入力し、ＡＮＤゲート３５からは入力したＣＭＤに対するリクエストがパイプライン処理をバイパスして外部インターフェース部に直接出力されるべきことを示すＮＡ−ＲＥＱが出力され、図５の切替処理３０に相当する切替スイッチに与えられる。【００３０】
これに対してＡＮＤゲート３６には、ＶＬＤの値がそのままで、またＣＭＤの５ビット目と４ビット目の値がそれぞれ反転されて与えられる。これによって、ＡＮＤゲート３６からは入力したＣＭＤに対応するリクエストがパイプラインに投入されるべきことを示すＰＩＰＥ−ＲＥＱが出力され、切替スイッチに与えられることになる。【００３１】
切替スイッチでは、ＡＮＤゲート３５から出力されるＮＡ−ＲＥＱあるいはＡＮＤゲート３６から出力されるＰＩＰＥ−ＲＥＱの値に応じて、リクエストを出力すべき経路を選択・切り替える。【００３２】
最後に本実施形態の効果についてさらに説明する。この効果はノンキャッシュ系の命令とＡＳＩ系の命令が多いほど大きくなる。例えばシステム起動時には命令のうち半数以上がノンキャッシュ系であり、残りの命令にはＡＳＩ系も含まれる。これに対してＯＳの通常起動時には命令のほぼすべてがキャッシュ系となるが、ＡＳＩ系も含まれる。ただしこのとき、例えば外部ディスクなどへのアクセスがあればノンキャッシュ系命令が発行される。【００３３】
従ってシステム起動時にノンキャッシュ系命令が大量に発行される場合、またＯＳ通常起動時にも外部ディスクへのアクセスが集中する場合などに、パイプライン混雑の緩和効果が大きくなる。
【図１】
2008155802.tif 000003
【図２】
2008155802.tif 000004
【図３】
2008155802.tif 000005
【図４】
2008155802.tif 000006
【図５】
2008155802.tif 000007
【図６】
2008155802.tif 000008
【図７】
2008155802.tif 000009
【国際調査報告】
2008155802.tif 000010
2008155802.tif 000011