(57)【特許請求の範囲】
【請求項１】
演算処理を行う演算処理部を有するとともに、バスを介して記憶装置に接続される演算処理装置において、
データを記憶するキャッシュメモリと、
前記バスを介して、前記記憶装置からデータを受信するバス制御部と、
前記バス制御部が受信したデータを保持する第１のバッファ部と、
前記第１のバッファ部が保持するデータのうち、前記キャッシュメモリに書き込むデータを保持する第２のバッファ部と、
前記第２のバッファ部を監視し、前記第２のバッファ部の空きを検出する監視部と、
前記監視部が前記第２のバッファ部の空きを検出した場合、前記第１のバッファ部が保持するデータを、前記第２のバッファ部に書き込ませる書込制御部と
を有することを特徴とする演算処理装置。
【請求項２】
前記監視部の制御により、前記バス制御部の入出力制御を行う入出力制御部と、
前記バス制御部が出力するデータと前記第１のバッファ部が出力するデータとを入力し、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータ又は前記第１のバッファ部が出力するデータのいずれかを選択して、前記第２のバッファ部に出力する選択部と
をさらに有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記選択部は、
前記監視部が前記第２のバッファ部の空きを検出し、かつ、前記第１のバッファ部にデータが保持されていない場合、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータを選択して、前記第２のバッファ部に出力することを特徴とする請求項２記載の演算処理装置。
【請求項４】
バスを介して記憶装置に接続されるとともに、データを記憶するキャッシュメモリを制御するキャッシュメモリ制御装置において、
前記バスを介して、前記記憶装置からデータを受信するバス制御部と、
前記バス制御部が受信したデータを保持する第１のバッファ部と、
前記第１のバッファ部が保持するデータのうち、前記キャッシュメモリに書き込むデータを保持する第２のバッファ部と、
前記第２のバッファ部を監視し、前記第２のバッファ部の空きを検出する監視部と、
前記監視部が前記第２のバッファ部の空きを検出した場合、前記第１のバッファ部が保持するデータを、前記第２のバッファ部に書き込ませる書込制御部と
を有することを特徴とするキャッシュメモリ制御装置。
【請求項５】
前記監視部の制御により、前記バス制御部の入出力制御を行う入出力制御部と、
前記バス制御部が出力するデータと前記第１のバッファ部が出力するデータとを入力し、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータ又は前記第１のバッファ部が出力するデータのいずれかを選択して、前記第２のバッファ部に出力する選択部と
をさらに有することを特徴とする請求項４記載のキャッシュメモリ制御装置。
【請求項６】
前記選択部は、
前記監視部が前記第２のバッファ部の空きを検出し、かつ、前記第１のバッファ部にデータが保持されていない場合、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータを選択して、前記第２のバッファ部に出力することを特徴とする請求項５記載のキャッシュメモリ制御装置。
【請求項７】
バスを介して記憶装置に接続されるとともに、データを記憶するキャッシュメモリを制御するキャッシュメモリ制御装置の制御方法において、
前記キャッシュメモリ制御装置が有するバス制御部が、前記バスを介して、前記記憶装置からデータを受信するステップと、
前記キャッシュメモリ制御装置が有する第１のバッファ部が、前記バス制御部が受信したデータを保持するステップと、
前記キャッシュメモリ制御装置が有する監視部が、前記キャッシュメモリ制御装置が有し前記第１のバッファ部に接続される第２のバッファ部を監視し、前記第２のバッファ部の空きを検出するステップと、
前記監視部が前記第２のバッファ部の空きを検出した場合、前記キャッシュメモリ制御装置が有する書込制御部が、前記第１のバッファ部が保持するデータを、前記第２のバッファ部に出力させるステップと
を有することを特徴とする制御方法。
【請求項８】
前記キャッシュメモリ制御装置が有する入出力制御部が、前記監視部の制御により、前記バス制御部の入出力制御を行うステップと、
前記キャッシュメモリ制御装置が有する選択部が、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータ又は前記第１のバッファ部が出力するデータのいずれかを選択して、前記第２のバッファ部に出力するステップと
をさらに有することを特徴とする請求項７記載の制御方法。
【請求項９】
前記選択部は、
前記監視部が前記第２のバッファ部の空きを検出し、かつ、前記第１のバッファ部にデータが保持されていない場合、前記入出力制御部が出力する選択信号に基づき、前記バス制御部が出力するデータを選択して、前記第２のバッファ部に出力することを特徴とする請求項８記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、キャッシュメモリ制御装置及び制御方法に関し、特に、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができる演算処理装置、キャッシュメモリ制御装置及び制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータなどの情報処理装置においては、一般にアクセス速度が低いメインメモリへのアクセス回数を減らしてＣＰＵ（Central Processing Unit）の処理速度を向上させるため、ＣＰＵ上にキャッシュメモリが搭載される構成が主流となっている。キャッシュメモリは、高速アクセスが可能であるものの、容量がメインメモリよりも小さいため、ＣＰＵが必要とするデータがキャッシュメモリに記憶されていない（キャッシュミス）ことがあり、このような場合には、２次キャッシュなどの上位キャッシュやメインメモリに記憶されているデータをＣＰＵ上のキャッシュメモリへムーブインする必要が生じる。
【０００３】
キャッシュメモリへムーブインされるデータは、一旦キャッシュメモリに接続されるデータレジスタによって取り込まれ、データレジスタからキャッシュメモリに書き込まれるのが一般的である。
【０００４】
ところで、近年の技術の目覚しい進歩により、ＣＰＵの処理速度はますます向上しているとともに、メインメモリの容量はますます増大している。この結果、単位時間当たりにＣＰＵが必要とするデータ量は多くなる一方で、これらのデータをメインメモリから探し出すのには長時間を要するようになり、ＣＰＵとメインメモリの速度が乖離し、相対的にメモリレイテンシが増大しつつある。
【０００５】
このような状況下では、キャッシュメモリへのデータのムーブインを適切に制御することが重要になってきており、例えば特許文献１では、メインメモリの負荷が大きくなるとムーブインするデータ量を削減し、メインメモリの負荷が小さくなると削減した分のデータのムーブインを再開する技術が開示されている。
【０００６】
特許文献１の技術では、キャッシュミス発生時のデータのムーブインを効率的に調整することができるものの、ムーブインされるデータを使用するＣＰＵの処理速度がメインメモリの速度によって制限されることになり、増大しているメモリレイテンシを完全にカバーすることはできない。そこで、キャッシュミスに対するデータのムーブインを実行中に、ＣＰＵが後続する処理を次々に実行してスループットを向上することが考えられる。この場合、同時期に発生するキャッシュミスが多くなってムーブインされるデータ量が増えるため、キャッシュメモリにデータを書き込むデータレジスタが一度に取り込み可能なデータ量を増加させることが望まれる。
【０００７】
【特許文献１】特開平７−２１０４６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、データレジスタの容量を増加させるため、単にデータレジスタ内のデータキューを大きくすると、現行のチップの面積には収まりきらなくなるため、ＣＰＵが搭載されるチップの面積の増大を招き、チップの小型化に逆行することになり現実的ではない。
【０００９】
また、データレジスタの代用として低コストのＲＡＭ（Random Access Memory）を使用することも考えられるが、データレジスタは、キャッシュメモリに書き込まれるデータを一時的に取り込むものであるため、データレジスタの代用となるＲＡＭは、キャッシュメモリよりは大幅に小さい容量で十分である。そして、容量が小さいにも拘らず、データレジスタの代用として機能しスループットを向上するためには、ＲＡＭの単位時間当たりのデータの流入量および流出量をキャッシュメモリへの書き込みに合わせて大きくする必要がある。このため、ＲＡＭの使用に伴う制御回路やデータバスが大きい面積を占めることになり、結果としてデータレジスタの代用部分が空間的にもコスト的にも肥大してしまう。
【００１０】
本発明はかかる点に鑑みてなされたものであり、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができる演算処理装置、キャッシュメモリ制御装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、キャッシュ制御装置は、キャッシュメモリにデータを書き込むキャッシュ制御装置であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを保持する第１バッファ手段と、前記第１バッファ手段に保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを保持する第２バッファ手段と、前記第２バッファ手段に保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御手段とを有する構成を採る。
【００１２】
また、キャッシュ制御装置は、上記構成において、前記第１バッファ手段は、前記キャッシュメモリへの書き込みが同時に要求され得るすべてのデータを記憶可能な容量のＲＡＭを含む構成を採る。
【００１３】
また、キャッシュ制御装置は、上記構成において、前記第２バッファ手段に空き領域があるか否かを監視する監視手段をさらに有し、前記第１バッファ手段は、前記監視手段によって前記第２バッファ手段に空き領域があることが確認された場合に、データを前記第２バッファ手段へ出力する構成を採る。
【００１４】
また、キャッシュ制御装置は、上記構成において、前記第２バッファ手段は、前記キャッシュメモリの近傍に配置され、前記第１バッファ手段は、前記第２バッファ手段よりも前記キャッシュメモリから遠方に配置される構成を採る。
【００１５】
また、キャッシュ制御装置は、上記構成において、前記第１バッファ手段は、複数の外部バスからのデータの流入を制御する外部バス制御手段を含み、前記第２バッファ手段は、外部バスそれぞれに対応する領域であって同量のデータを保持する領域を備える構成を採る。
【００１６】
また、キャッシュ制御装置は、上記構成において、前記第２バッファ手段は、外部バスそれぞれについて２回の書き込み分のデータを保持する領域を備える構成を採る。
【００１７】
また、キャッシュ制御装置は、上記構成において、外部から流入するデータに前記第１バッファ手段をバイパスさせるバイパス手段と、前記第１バッファ手段から出力されるデータまたは前記バイパス手段から出力されるデータのいずれか一方を選択して前記第２バッファ手段へ出力する選択手段とをさらに有する構成を採る。
【００１８】
また、キャッシュ制御装置は、上記構成において、前記選択手段は、前記第２バッファ手段に空き領域がある場合に、前記バイパス手段から出力されるデータを選択する構成を採る。
【００１９】
また、キャッシュ制御装置は、上記構成において、前記書込制御手段は、前記第１バッファ手段から前記第２バッファ手段へデータが出力されると、このデータの前記キャッシュメモリへの書き込みを前記第２バッファ手段に実行させる構成を採る。
【００２０】
また、キャッシュ制御方法は、キャッシュメモリにデータを書き込むキャッシュ制御方法であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを第１バッファに保持する第１保持工程と、前記第１保持工程にて保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを第２バッファに保持する第２保持工程と、前記第２保持工程にて保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御工程とを有するようにした。
【発明の効果】
【００２１】
本発明によれば、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下では、それぞれ１次キャッシュ（Ｌ１キャッシュ）を備えた２つのＣＰＵコアおよび２次キャッシュ（Ｌ２キャッシュ）が１つのチップに搭載されており、Ｌ２キャッシュへのデータのムーブインが行われる場合について説明するが、本発明は、他のキャッシュへのデータの書き込み時にも同様に適用することができる。
【００２３】
図１は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。図１に示すチップは、外部バス制御部１０１、ムーブイン（Move-in：以下「ＭＩ」と略記する）データＲＡＭ１０２、バイパス経路部１０３、セレクタ１０４、入出力制御部１０５、監視部１０６、ＣＰＵコア１０７−１、１０７−２、Ｌ１キャッシュ１０７ａ−１、１０７ａ−２、データレジスタ部１０８、ムーブインバッファ（Move-in Buffer：以下「ＭＩＢ」と略記する）１０９、書込制御部１１０、およびＬ２キャッシュ１１１を有している。なお、図１においては、チップに対して４つのＭＩデータの流入パスが設けられているが、ＭＩデータの流入パス数は、１でも４以外の複数でも良い。
【００２４】
外部バス制御部１０１は、チップ外の図示しない上位キャッシュ、メインメモリ、または他のチップなどと外部バスを通じて接続されており、チップ内へのデータの流入パスとなる複数（図１では４つ）の外部バスを制御し、各外部バスから流入するＭＩデータを一時的に内部のレジスタに登録する。そして、外部バス制御部１０１は、入出力制御部１０５の制御に応じたタイミングで、いずれかの外部バスからのＭＩデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力する。
【００２５】
ＭＩデータＲＡＭ１０２は、外部バス制御部１０１から出力されるＭＩデータを記憶し、データレジスタ部１０８にＭＩデータを取り込むための空きが生じるとセレクタ１０４を経由してデータレジスタ部１０８へＭＩデータを出力する。すなわち、ＭＩデータＲＡＭ１０２は、データレジスタ部１０８の前段に設けられたバッファとして機能する。具体的には、ＭＩデータＲＡＭ１０２は、同時期に発行されるすべてのムーブイン要求に対する応答としてＭＩデータが転送されてきた場合、すべてのＭＩデータを記憶可能な容量のＳＲＡＭ（Static Random Access Memory）などから構成されている。
【００２６】
このＭＩデータＲＡＭ１０２は、データレジスタ部１０８のバッファであるため、単位時間当たりのデータの流入量および流出量をキャッシュへの書き込みに合わせて大きくする必要はない。ただし、外部バスからのデータの流入量に対応する程度のスループットを達成する必要はある。
【００２７】
バイパス経路部１０３は、外部バス制御部１０１から出力されるＭＩデータをバイパスし、データレジスタ部１０８にＭＩデータを取り込むための空き領域がある場合や、ＣＰＵコア１０７−１、１０７−２へ直接ＭＩデータを出力する場合に、セレクタ１０４を経由してデータレジスタ部１０８またはＣＰＵコア１０７−１、１０７−２へＭＩデータを出力する。
【００２８】
セレクタ１０４は、入出力制御部１０５の制御に応じて、ＭＩデータＲＡＭ１０２に記憶されているＭＩデータまたはバイパス経路部１０３を通過するＭＩデータのいずれか一方を選択し、データレジスタ部１０８およびＣＰＵコア１０７−１、１０７−２へ出力する。
【００２９】
入出力制御部１０５は、外部バスのサイクルで外部バス制御部１０１へ流入するＭＩデータをＣＰＵサイクルに合わせてＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力させるとともに、ＭＩデータＲＡＭ１０２またはバイパス経路部１０３からのＭＩデータをセレクタ１０４からＭＩデータを出力させる。このとき、入出力制御部１０５は、監視部１０６から報告されるデータレジスタ部１０８の空き状況に応じて、ＭＩデータＲＡＭ１０２およびバイパス経路部１０３のどちらを選択するか決定し、決定された処理部からのＭＩデータを出力するようにセレクタ１０４を制御する。
【００３０】
また、入出力制御部１０５は、セレクタ１０４からＭＩデータを出力させると、出力されたＭＩデータに関する情報をＭＩＢ１０９へ通知する。なお、入出力制御部１０５によるＭＩデータの入出力のタイミングについては、後に詳述する。
【００３１】
監視部１０６は、データレジスタ部１０８における空き状況を監視し、データレジスタ部１０８にＭＩデータを取り込む空き容量がある場合に、その旨を入出力制御部１０５へ報告する。なお、詳細は後述するが、監視部１０６は、図２に示すように、データレジスタ部１０８内のムーブインデータキュー（以下「ＭＩＤＱ」と略記する）１０８ａの空き状況を監視する。このとき、監視部１０６は、ＭＩＤＱ１０８ａの容量を外部バスの数に等分し、それぞれの外部バスに対応する容量の空き領域を監視するようにしても良い。こうすることにより、チップに複数の外部バスが接続されている場合、各外部バスから流入するデータを均等にＭＩＤＱ１０８ａへ取り込ませることができる。
【００３２】
ＣＰＵコア１０７−１、１０７−２は、それぞれ内部にＬ１キャッシュ１０７ａ−１、１０７ａ−２を備えており、Ｌ１キャッシュ１０７ａ−１、１０７ａ−２に記憶されたデータ、Ｌ２キャッシュ１１１から読み出されたデータ、およびチップ外からのＭＩデータなどを用いて所定の処理を実行する。
【００３３】
データレジスタ部１０８は、Ｌ２キャッシュ１１１へ書き込まれるデータおよびＬ２キャッシュ１１１から読み出されるデータを一度取り込み、ＭＩデータを含む書き込みデータをＬ２キャッシュ１１１へ書き込み、読み出しデータを例えばＣＰＵコア１０７−１、１０７−２のＬ１キャッシュ１０７ａ−１、１０７ａ−２などへ出力する。具体的には、データレジスタ部１０８は、例えば図２に示すように、ＭＩＤＱ１０８ａ、ライトバックデータキュー（以下「ＷＢＤＱ」と略記する）１０８ｂ、ムーブアウトデータキュー（以下「ＭＯＤＱ」と略記する）１０８ｃ、およびリードデータキュー（以下「ＲＤＱ」と略記する）１０８ｄを有している。
【００３４】
ＭＩＤＱ１０８ａは、セレクタ１０４から出力されるＭＩデータを取り込み、取り込まれたＭＩデータをＬ２キャッシュ１１１に書き込む。ＭＩＤＱ１０８ａは、１つの外部バスについて２単位のデータを取り込み可能な容量を有している。すなわち、本実施の形態においては、４つの外部バスがチップに接続されているため、合計で８単位のデータを取り込み可能な容量を有している。この構成により、データがＭＩＤＱ１０８ａに取り込まれている最中に、既にＭＩＤＱ１０８ａに取り込まれているデータをＬ２キャッシュ１１１に書き込むという動作がすべての外部バスからのデータについて可能となる。
【００３５】
ＷＢＤＱ１０８ｂは、Ｌ１キャッシュ１０７ａ−１、１０７ａ−２から書き戻されるライトバックデータを取り込み、取り込まれたライトバックデータをＬ２キャッシュ１１１に書き込む。ＭＯＤＱ１０８ｃは、Ｌ２キャッシュ１１１からのムーブアウトがチップの外部から要求されたムーブアウトデータ（図２では「ＭＯデータ」）をＬ２キャッシュ１１１から読み出し、ムーブアウト要求元のチップ外部へ出力する。ＲＤＱ１０８ｄは、ＣＰＵコア１０７−１、１０７−２によって読み出しが要求されたリードデータをＬ２キャッシュ１１１から読み出し、ＣＰＵコア１０７−１、１０７−２へ出力する。
【００３６】
図１に戻って、ＭＩＢ１０９は、Ｌ２キャッシュ１１１へのムーブインを要求するリクエストを記憶するバッファであり、入出力制御部１０５からＭＩデータに関する情報が通知されると、このＭＩデータに対応するリクエストを消去するとともに、その旨を書込制御部１１０へ通知する。
【００３７】
書込制御部１１０は、ＭＩＢ１０９から消去されたリクエストに対応するＭＩデータをＬ２キャッシュ１１１に書き込むようにデータレジスタ部１０８を制御する。具体的には、書込制御部１１０は、ＭＩＢ１０９からリクエストを消去した旨が通知されると、ＭＩＤＱ１０８ａに取り込まれているＭＩデータであって消去されたリクエストに対応するＭＩデータをＬ２キャッシュ１１１へ書き込むようにデータレジスタ部１０８に指示する。
【００３８】
Ｌ２キャッシュ１１１は、ＣＰＵコア１０７−１、１０７−２によって必要とされるデータを記憶しており、ＣＰＵコア１０７−１、１０７−２が必要とするデータが記憶されていない場合（キャッシュミスが発生した場合）には、チップ外の上位キャッシュ、メインメモリ、または他のチップなどから所望のデータがムーブインされる。
【００３９】
これらの処理ブロックのうち、外部バス制御部１０１、ＭＩデータＲＡＭ１０２、バイパス経路部１０３、セレクタ１０４、入出力制御部１０５、監視部１０６、データレジスタ部１０８、ＭＩＢ１０９、および書込制御部１１０は、Ｌ２キャッシュ１１１へのＭＩデータの書き込みを制御しており、本実施の形態に係るキャッシュ制御装置を構成している。
【００４０】
次いで、上記のように構成されたチップのＬ２キャッシュ１１１へのデータムーブイン時における動作について説明する。
【００４１】
ＣＰＵコア１０７−１、１０７−２によってＬ２キャッシュ１１１からのデータの読み出しが要求された際、Ｌ２キャッシュ１１１に所望のデータが記憶されておらずキャッシュミスが発生すると、チップ外の上位キャッシュ、メインメモリ、または他のチップなどへデータのムーブインが要求される。このムーブイン要求時に発行されるリクエストは、ＭＩＢ１０９に記憶される。
【００４２】
その後、このムーブイン要求に対する応答として、チップの外部バス制御部１０１にＭＩデータが流入する。図１は４つのＭＩデータがそれぞれ異なる外部バスから外部バス制御部１０１に流入する様子を示しているが、各外部バスからＭＩデータが流入するタイミングは重なっていても異なっていても良い。ここでは、いずれか１つの外部バスからＭＩデータが流入する場合について説明を続ける。
【００４３】
外部バス制御部１０１に流入するＭＩデータは、例えば図３に示すようなパケットで構成されている。すなわち、外部バスの１サイクル目で４バイトのヘッダが外部バス制御部１０１へ流入し、外部バスの２サイクル目から９サイクル目でＭＩデータの本体である応答データ（ＷＯＲＤ０〜７）が外部バス制御部１０１へ流入することになる。図３に示すように、ＭＩデータのパケットのヘッダには、このパケットがコマンドなどのパケットではなくデータパケットであることを示すオペコード（ＯＰＣＯＤＥ）や、パケットの誤り検出に用いられるパリティビット（ＰＡ）などが含まれている。
【００４４】
また、外部バスの各サイクルで流入するデータ量は４バイト（＝３２ビット）であるが、それぞれのサイクルの先頭には、当該サイクルがヘッダであるかデータであるかを示すタグが付加されている。具体的には、例えば図３において、タグが「００１」のサイクルはヘッダであり、タグが「１００」のサイクルはデータであり、さらにタグが「１０１」であるサイクルはデータの末尾である。
【００４５】
このようなパケットとして外部バスから外部バス制御部１０１へ流入したＭＩデータは、外部バス制御部１０１内のレジスタに一度登録された後、入出力制御部１０５の制御によって外部バス制御部１０１からＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力される。このとき、入出力制御部１０５は、外部バスのサイクルとＣＰＵサイクルとの違いや外部バスの転送容量とチップ内の内部バスの転送容量との違いなどを考慮して、外部バスから流入するＭＩデータが外部バス制御部１０１内のレジスタのデータ許容量を超えない速度で外部バス制御部１０１からＭＩデータを出力させ、ＭＩデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力する。なお、本実施の形態においては、ＭＩデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３の双方に入力するため、バイパス経路部１０３を通過したデータをＭＩデータＲＡＭ１０２から再送することができるが、データの再送が不要であれば、以下のセレクタ１０４による選択に応じて、ＭＩデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３のいずれか一方のみに入力するようにしても良い。
【００４６】
一方、監視部１０６によって、データレジスタ部１０８のＭＩＤＱ１０８ａの空き状況が常に監視されており、ＭＩＤＱ１０８ａにＭＩデータを取り込み可能な空き領域があれば、その旨が入出力制御部１０５へ報告されている。そこで、入出力制御部１０５によって、ＭＩＤＱ１０８ａに空き領域があれば、セレクタ１０４にＭＩデータＲＡＭ１０２またはバイパス経路部１０３からＭＩＤＱ１０８ａへＭＩデータを出力させる。
【００４７】
このとき、入出力制御部１０５は、ＭＩデータが外部バス制御部１０１から出力される時点でＭＩＤＱ１０８ａに空き領域があり、かつ、ＭＩデータＲＡＭ１０２にＭＩデータが記憶されていなければ、セレクタ１０４にバイパス経路部１０３からのＭＩデータを出力させるようにする。また、入出力制御部１０５は、ＭＩデータＲＡＭ１０２に既にＭＩデータが記憶されていれば、セレクタ１０４にＭＩデータＲＡＭ１０２からのＭＩデータを出力させるようにする。
【００４８】
このようにセレクタ１０４から出力されるＭＩデータが選択されることにより、外部バスからチップに流入した順序でＭＩデータがＭＩＤＱ１０８ａへ出力されるとともに、ＭＩデータＲＡＭ１０２にＭＩデータが記憶されていない場合は、バイパス経路部１０３から直接ＭＩデータがＭＩＤＱ１０８ａへ出力され、ＭＩデータがＭＩデータＲＡＭ１０２に書き込まれる時間を削減することができる。
【００４９】
また、入出力制御部１０５は、例えばプリフェッチ時などＣＰＵコア１０７−１、１０７−２が直接ＭＩデータを要求している場合は、セレクタ１０４を制御してバイパス経路部１０３からのＭＩデータを直接ＣＰＵコア１０７−１、１０７−２へ出力させるようにしても良い。
【００５０】
そして、入出力制御部１０５によってセレクタ１０４が制御され、ＭＩデータがＭＩＤＱ１０８ａへ出力されると、このＭＩデータに関する情報がＭＩＢ１０９へ通知される。そして、ＭＩＢ１０９によって、入出力制御部１０５から通知されたＭＩデータに対応するムーブイン要求のリクエストが消去され、その旨が書込制御部１１０へ通知される。ムーブイン要求のリクエストがＭＩＢ１０９から消去されると、対応するＭＩデータのムーブインを完了するため、書込制御部１１０によって、データレジスタ部１０８内のＭＩＤＱ１０８ａに対して、ＭＩＢ１０９から消去されたリクエストに対応するＭＩデータのＬ２キャッシュ１１１への書き込みが指示される。この指示を受け、ＭＩＤＱ１０８ａによって、ＭＩデータがＬ２キャッシュ１１１へ書き込まれ、ムーブインが完了する。
【００５１】
以降、ムーブインが完了すると、ＭＩＤＱ１０８ａには空き領域ができるため、監視部１０６によって空き領域があることが入出力制御部１０５へ報告され、再びセレクタ１０４から、ＭＩデータＲＡＭ１０２またはバイパス経路部１０３からのＭＩデータが出力されることになる。
【００５２】
次に、入出力制御部１０５によって、ＭＩデータＲＡＭ１０２にＭＩデータが入出力されるタイミングについて、具体例を挙げながら説明する。以下では、ＣＰＵサイクルは外部バスのサイクルの３倍の速度であり、内部バスの転送容量は外部バスの転送容量の２倍であるとする。また、ＭＩデータとしては、図３に示したパケットが外部バス制御部１０１へ流入しているものとする。
【００５３】
図４に示すように、ＭＩデータは、外部バスの１サイクル（ＣＰＵの３サイクル）ごとにヘッダ、データＷ０、データＷ１、…、データＷ７の順にチップに受信される。すなわち、ＣＰＵの３サイクルにつき４バイトずつのデータが受信され、受信データは、外部バス制御部１０１に流入し、外部バス制御部１０１内のレジスタ＃１に保持される。その後、内部バスの転送容量に合わせて、４バイトずつ受信されたデータＷ０〜Ｗ７が８バイトずつにまとめられてレジスタ＃２に保持される。このとき、レジスタ＃２が８バイトを単位としてデータを保持するため、それぞれの４バイトのデータＷ０〜Ｗ７がレジスタ＃２に保持される時間は、８バイト分のデータの受信に要するＣＰＵの６サイクルとなる。
【００５４】
以上は１つの外部バスからのデータの流入を示しているが、本実施の形態においては、外部バス＃１〜＃４の４つの流入パスから外部バス制御部１０１にＭＩデータが流入する。これらのいずれの外部バス＃１〜＃４からも上述したのと同様にＭＩデータが流入しているため、ＣＰＵの６サイクルの間に４つの外部バスすべてからデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力する必要がある。ここでは、それぞれ外部バス＃１〜＃４にＣＰＵの１サイクルずつ割り当てて、割り当てられたサイクルで各外部バスからのデータをＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力するようにすれば良い。こうすることにより、４つの外部バス＃１〜＃４のデータは、ＣＰＵの４サイクルでＭＩデータＲＡＭ１０２およびバイパス経路部１０３に入力されることになり、外部バス制御部１０１内のレジスタが溢れることがない。
【００５５】
このように外部バスの数、チップのクロックレート、および外部バスと内部バスの転送容量の差などにより、１サイクルでＭＩデータＲＡＭ１０２に入力されるデータ量が異なるため、ＭＩデータＲＡＭ１０２は、１サイクルで入力されるデータ量を受け付け可能である必要がある。ただし、このデータ量は、データレジスタ部１０８内のＭＩＤＱ１０８ａが１サイクルで受け付けるデータ量よりも大幅に少ない。したがって、データレジスタの代用としてＲＡＭが用いられる場合と比して、ＭＩデータＲＡＭ１０２に付随する制御回路やデータバスの面積は無視できるほど小さい。
【００５６】
ところで、ＭＩデータＲＡＭ１０２は、通常１サイクル中にデータの読み書きの一方しか実行することができない。そのため、６サイクル中４サイクルが各外部バス＃１〜＃４からのデータの入力に費やされると、残りの２サイクル中１サイクルは、データの出力に用いられる。そして、さらに残りの１サイクルは、データの入力と出力の間の何もしないインターバルのサイクルとしておき、データの入出力間での干渉を防止するのが望ましい。
【００５７】
このように、外部バス＃１〜＃４の４つの外部バスがチップに接続されている場合は、内部バスの転送容量やＣＰＵのクロックレートによるチップ内部でのスループットが外部バスの少なくとも６倍であれば、図５−１に示すように、６サイクル中にすべての外部バス＃１〜＃４からのデータがＭＩデータＲＡＭ１０２に入力されるとともに、このデータがＭＩデータＲＡＭ１０２から出力される。このとき、外部バス＃１〜＃４すべてから同じタイミングでデータが流入するとは限らないが、例えば外部バス＃１と外部バス＃４からはデータが遅れて流入したとしても、図５−２に示すように、必ずすべての外部バス＃１〜＃４のデータをＭＩデータＲＡＭ１０２に入力するタイミングとＭＩデータＲＡＭ１０２から出力するタイミングとが６サイクル中にある。
【００５８】
そして、４つの外部バス＃１〜＃４のデータがＭＩデータＲＡＭ１０２から溢れることがないように入出力されるため、チップにデータレジスタ部１０８のみが備えられた場合よりもＬ２キャッシュ１１１に書き込まれるデータを多く取り込むことができる。また、このＭＩデータＲＡＭ１０２は、直接Ｌ２キャッシュ１１１に接続されるのではなく、データレジスタ部１０８のＭＩＤＱ１０８ａと接続され、バッファが二段構成となっている。このため、ＭＩデータＲＡＭ１０２自体の単位時間当たりのデータの流入量および流出量は、ＭＩＤＱ１０８ａよりも大幅に小さくて良く、ＭＩデータＲＡＭ１０２に付随する制御回路やデータバスの小型化および低コスト化を図ることができる。
【００５９】
さらに、バッファを二段構成として、ＭＩＤＱ１０８ａにＲＡＭを接続したことにより、ＲＡＭとＭＩＤＱ１０８ａとの空間的距離に制限がなく、チップ上でＭＩデータＲＡＭ１０２を配置する位置を自由に決定することができる。このため、チップ上での回路配置を柔軟に決定することができるとともに、データレジスタ部１０８の大きさは変わらないため、例えば図６に示すように、チップ上で何の機能も果たさない死に地（図中斜線部）を最小限に抑制することができる。ただし、図６においては、ＭＩＤＲはＭＩデータＲＡＭ１０２の位置を示しており、制御ブロックは入出力制御部１０５、監視部１０６、ＭＩＢ１０９、および書込制御部１１０などの処理ブロックの位置を示している。
【００６０】
以上のように、本実施の形態によれば、チップ内のデータレジスタの前段にＭＩデータを記憶するＲＡＭを設け、チップ内に流入するＭＩデータを記憶させるため、キャッシュメモリに書き込まれるＭＩデータをチップに多く取り込むことができるとともに、ＲＡＭ自体がキャッシュメモリへの書き込みを行うわけではないので、ＲＡＭを設けたことによる回路規模の増大およびコストの増大は最小限ですむ。
【００６１】
なお、上記実施の形態においては、ＭＩデータＲＡＭ１０２からＭＩＤＱ１０８ａへ出力された順序でデータがＬ２キャッシュ１１１に書き込まれることとなるが、例えばＬ２キャッシュ１１１に書き込まれたデータのリプレース処理などが発生することにより、ＭＩＤＱ１０８ａからＬ２キャッシュ１１１への書き込みを待機する必要が生じることがある。このような状況は、ＭＩＢ１０９において入出力制御部１０５からの通知と記憶されているリクエストとから把握することが可能であるため、ＭＩＤＱ１０８ａに取り込まれたデータの書き込みの待機が生じた場合、一度ＭＩＤＱ１０８ａに取り込まれたデータを廃棄し、後続のデータをＭＩデータＲＡＭ１０２から取り込んで書き込みを行うようにしても良い。そして、廃棄されたデータは、改めてＭＩＤＱ１０８ａに取り込まれて書き込みが行われるようにすれば良い。
【産業上の利用可能性】
【００６２】
本発明は、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込む場合に適用することができる。
【図面の簡単な説明】
【００６３】
【図１】図１は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。
【図２】図２は、一実施の形態に係るデータレジスタ部の内部構成を示すブロック図である。
【図３】図３は、一実施の形態に係るムーブインデータのパケット構成の一例を示す図である。
【図４】図４は、一実施の形態に係るチップへのデータ流入の様子を示す図である。
【図５−１】図５−１は、一実施の形態に係るＲＡＭへのムーブインデータの入出力タイミングの一例を示す図である。
【図５−２】図５−２は、一実施の形態に係るＲＡＭへのムーブインデータの入出力タイミングの他の一例を示す図である。
【図６】図６は、一実施の形態に係るチップ上の回路配置の一例を示す図である。
【符号の説明】
【００６４】
１０１  外部バス制御部
１０２  ＭＩデータＲＡＭ
１０３  バイパス経路部
１０４  セレクタ
１０５  入出力制御部
１０６  監視部
１０７−１、１０７−２  ＣＰＵコア
１０７ａ−１、１０７ａ−２  Ｌ１キャッシュ
１０８  データレジスタ部
１０８ａ  ＭＩＤＱ
１０８ｂ  ＷＢＤＱ
１０８ｃ  ＭＯＤＱ
１０８ｄ  ＲＤＱ
１０９  ＭＩＢ
１１０  書込制御部
１１１  Ｌ２キャッシュ
【図１】
0004409620.tif 000002
【図２】
0004409620.tif 000003
【図３】
0004409620.tif 000004
【図４】
0004409620.tif 000005
【図５−１】
0004409620.tif 000006
【図５−２】
0004409620.tif 000007
【図６】
0004409620.tif 000008