(57)【要約】【課題】  外部メモリ等の記憶装置に格納されたデータをＣＰＵが取り込むまでの時間を速くすることでＣＰＵシステム全体の性能を向上させることのできるＣＰＵと記憶装置の間に配置される制御装置を提供すること。【解決手段】  ＣＰＵからのデータ読み出し要求に従い、外部メモリ１に格納されているデータを読み出し（フェッチ）、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置されるメモリブリッジ２であって、ＣＰＵからのフェッチに基づき、外部メモリ１にアクセスする手段と、外部メモリからＣＰＵの要求に係るデータと、当該データが格納されたアドレスに続くアドレスに格納されている後続データとを合わせて読み出す手段（プリフェッチ）と、要求に係るデータをＣＰＵに出力するとともに、後続データを補助メモリ３内に保存する手段と、ＣＰＵからの次の読み出し要求に係るデータのアドレスが、補助メモリ３に格納されているデータのアドレスと一致する場合は、補助メモリ３に格納されているデータをＣＰＵに出力する。【選択図】  図１
2005275735.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵからのデータ読み出し要求に従い、記憶装置に格納されているデータを読み出し、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置される制御装置であって、
ＣＰＵからのデータ読み出し要求に基づき、記憶装置にアクセスする手段と、
ＣＰＵの要求に係るデータと、当該データが格納されたアドレスに続くアドレスに格納されている後続データとを合わせて記憶装置から読み出す手段と、
要求に係るデータをＣＰＵに出力するとともに、前記後続データを補助メモリ内に保存する手段と、
ＣＰＵからの次の読み出し要求に係るデータのアドレスが、前記補助メモリに格納されているデータのアドレスと一致する場合は、補助メモリに格納されているデータをＣＰＵに出力する手段とを備えているＣＰＵと記憶装置の間に配置される制御装置。
【請求項２】
ＣＰＵからのデータ読み出し要求に従い、記憶装置に格納されているデータを読み出し、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置される制御装置であって、
ＣＰＵからのデータ読み出し要求に基づき、記憶装置にアクセスする手段と、
要求に係るデータをＣＰＵに出力するとともに、当該データのデコードを行う手段と、
デコードにより、次にＣＰＵから読み出し要求されるデータを予測して、予め記憶装置から読み出す手段と、
読み出されたデータを前記補助メモリ内に保存する手段と、
ＣＰＵからの次の読み出し要求に係るデータのアドレスが、前記補助メモリに格納されているデータのアドレスと一致する場合は、補助メモリに格納されているデータをＣＰＵに出力する手段とを備えているＣＰＵと記憶装置の間に配置される制御装置。
【請求項３】
デコード結果に基づいて、次にＣＰＵから読み出されると予測されるデータが複数通り存在する場合、それらすべてのデータを記憶装置から読み出し前記補助メモリに保存する手段を備えている請求項２に記載の制御装置。
【請求項４】
前記後続データを補助メモリ内に保存する処理を行っている間に、ＣＰＵからのデータ読み出し要求が来た場合は、当該読み出し要求を優先的に行う手段を備えている請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
ＣＰＵからの次の読み出し要求に係るデータが、前記補助メモリに格納されていない場合、補助メモリ内に格納されている全データを破棄する手段と、
データを補助メモリ内に保存する処理を改めて行う手段とを備えている請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
補助メモリ内に保存されたデータが所定時間内に使用されなかった場合、当該データを破棄する手段を備えている請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
請求項１〜６のいずれか１項に記載の制御装置を搭載しているチップセット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵからのデータ読み出し要求に従い、記憶装置に格納されているデータを読み出し、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置される制御装置に関するものである。
【背景技術】
【０００２】
パソコン、サーバー等のコンピュータに用いられているＣＰＵシステムでは、ＣＰＵが記憶装置（メモリやハードディスク）に格納されているデータ（命令コード等）のやり取りを制御装置を介して行っている（図４の手順（Ａ）（Ｂ）（Ｃ）（Ｄ）参照）。かかる制御装置は、チップセットとも呼ばれており、ＣＰＵとメモリの間のデータの入出力の調整を行う機能を有している。ＰＣ／ＡＴ互換機のように、チップセットがノースブリッジとサウスブリッジに機能分離されている場合、ＣＰＵとメモリと間の調整はノースブリッジにより行われている。
【０００３】
近年のＣＰＵシステムでは、ＣＰＵの動作速度の高速化に伴い、外部メモリ（記憶装置）へのアクセス時間がボトルネックとなっており、外部メモリへのアクセス時間を速くする工夫が必要とされる。例えば、ＣＰＵの内部では分岐予測やアウトオブオーダー機能により、実際に使用するタイミングよりも早くデータ（命令コードやそれ以外のデータ）を取り出す工夫が行われている。
【０００４】
しかしながら、ＣＰＵ内部の動作速度とメモリへのアクセス動作時間の差が大きくなるにつれて、これらの機能のみではメモリアクセス時間の遅さをカバーすることが困難な状況になってきている。ＣＰＵの外部メモリとして利用されているのは、メモリとしてはＳＤＲＡＭが用いられており、クロック周波数に同期してクロック波形の山側又は谷側でデータの受け取り／送出を行うメモリである。これに対して、ＤＤＲ−ＳＤＲＡＭは、上記動作を山側と谷側で行うため、クロック周波数の２倍でデータ転送を行うことができる。これにより、アクセス時間を速くすることはできる。しかし、一度のデータの読み取りを行うために多くのオーバーヘッドを必要とすることに変わりはなく、アクセス時間を速くできるにしても限界がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は上記実情に鑑みてなされたものであり、その課題は、外部メモリ等の記憶装置に格納されたデータをＣＰＵが取り込むまでの時間を速くすることでＣＰＵシステム全体の性能を向上させることのできる、ＣＰＵと記憶装置の間に配置される制御装置を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため本発明に係るＣＰＵと記憶装置の間に配置される制御装置は、
ＣＰＵからのデータ読み出し要求に従い、記憶装置に格納されているデータを読み出し、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置される制御装置であって、
ＣＰＵからのデータ読み出し要求に基づき、記憶装置にアクセスする手段と、
ＣＰＵの要求に係るデータと、当該データが格納されたアドレスに続くアドレスに格納されている後続データとを合わせて記憶装置から読み出す手段と、
要求に係るデータをＣＰＵに出力するとともに、前記後続データを補助メモリ内に保存する手段と、
ＣＰＵからの次の読み出し要求に係るデータのアドレスが、前記補助メモリに格納されているデータのアドレスと一致する場合は、補助メモリに格納されているデータをＣＰＵに出力する手段とを備えていることを特徴とするものである。
【０００７】
かかる構成による制御装置の作用・効果を説明する。ＣＰＵからのデータ読み出し要求（フェッチ）が来ると、記憶装置（メモリやハードディスク等）にアクセスし、そのデータが格納されているアドレスから要求に係るデータを取り出す。取り出されたデータは、ＣＰＵに対して出力される。また、その要求に係るデータが格納されていたアドレスに後続するアドレスに格納されているデータも合わせて取り出す（プリフェッチ）。これは命令コード等のデータが、メモリ内の連続したアドレスに格納されていることに着目したものである。
【０００８】
後続するアドレスから読み出されたデータは、補助メモリ内（外部の記憶装置とは異なるメモリ）に保存される。ＣＰＵから次の読み出し要求が来た時に、その要求に係るデータのアドレスが、上記補助メモリ内に格納されているデータのアクセスと一致する場合は、その補助メモリに格納されているデータをＣＰＵに出力する。従って、この場合は直接記憶装置に対してアクセスをしなくて良いので、データの取り出し時間を短縮することができる。また、命令コード等が連続したアドレスに格納されていることに鑑みると、高い確率で上記補助メモリからデータを取り出すことができる。その結果、外部メモリ等の記憶装置に格納されたデータをＣＰＵが取り込むまでの時間を速くすることでＣＰＵシステム全体の性能を向上させることのできるＣＰＵと記憶装置の間に配置される制御装置を提供することができる。
【０００９】
上記課題を解決するため本発明に係る別のＣＰＵと記憶装置の間に配置される制御装置は、
ＣＰＵからのデータ読み出し要求に従い、記憶装置に格納されているデータを読み出し、これをＣＰＵへ出力するためにＣＰＵと記憶装置の間に配置される制御装置であって、
ＣＰＵからのデータ読み出し要求に基づき、記憶装置にアクセスする手段と、
要求に係るデータをＣＰＵに出力するとともに、当該データのデコードを行う手段と、
デコードにより、次にＣＰＵから読み出し要求されるデータを予測して、予め記憶装置から読み出す手段と、
読み出されたデータを前記補助メモリ内に保存する手段と、
ＣＰＵからの次の読み出し要求に係るデータのアドレスが、前記補助メモリに格納されているデータのアドレスと一致する場合は、補助メモリに格納されているデータをＣＰＵに出力する手段とを備えていることを特徴とするものである。
【００１０】
かかる構成による制御装置の作用・効果を説明する。ＣＰＵからのデータ読み出し要求が来ると、記憶装置（メモリやハードディスク等）にアクセスし、そのデータが格納されているアドレスから要求に係るデータを取り出す。取り出されたデータは、ＣＰＵに対して出力される。また、取り出されたデータのデコード（解析）を行う機能を備えさせ、このデコードにより、次に読み出されるべきデータの予測を行うことができる。例えば、データ（命令コード）が分岐命令である場合、命令コードのデコードも行い分岐先のアドレスに格納されているデータを予め取り出しておくことが可能になる。これにより、記憶装置から読み取る場合のオーバーヘッドをなくすことができる。従って、アドレスの順番通りにデータを取り出さない状態であったとしても、補助メモリ内からデータをＣＰＵに出力させることができるので、更にアクセス時間の短縮化に寄与することができ、ＣＰＵシステム全体の性能を向上させることができる。
【００１１】
本発明において、デコード結果に基づいて、次にＣＰＵから読み出されると予測されるデータが複数通り存在する場合、それらすべてのデータを記憶装置から読み出し前記補助メモリに保存する手段を備えていることが好ましい。
【００１２】
デコードの結果により、読み出されるべきデータをすべて補助メモリに保存させておくことで、さらに高い確率でデータを補助メモリ内から取り出すことが可能になる。
【００１３】
本発明において、前記データを補助メモリ内に保存する処理を行っている間に、補助メモリ内に保存されていないアドレスに対するＣＰＵからのデータ読み出し要求が来た場合は、当該読み出し要求を優先的に行う手段を備えていることが好ましい。
【００１４】
補助メモリへのデータを取りこむ処理によりＣＰＵからのアクセスが妨げられると、アクセス時間を早くするという本来の目的を達成できなくなる。そこで、補助メモリ内に保存されていないアドレスに対するＣＰＵからの読み出し要求が来た場合は、補助メモリへのデータ取りこみは中止し、ＣＰＵからの要求を優先的に行う。これにより、アクセス時間の短縮化を図ることができる。
【００１５】
本発明において、ＣＰＵからの次の読み出し要求に係るデータが、前記補助メモリに格納されていない場合、補助メモリ内に格納されている全データを破棄する手段と、
後続データを補助メモリ内に保存する処理を改めて行う手段とを備えていることが好ましい。
【００１６】
ＣＰＵからの読み出し要求に係るデータが、補助メモリにない場合には、補助メモリ内のデータはその後も有効活用されない可能性が高い。そこで、かかる場合には補助メモリ内のデータを破棄し、改めて、補助メモリへのデータの取りこみを行うようにする。これにより、補助メモリの容量を有効活用することができる。
【００１７】
本発明において、補助メモリ内に保存されたデータが所定時間内に使用されなかった場合、当該データを破棄する手段を備えていることが好ましい。これにより、補助メモリの容量を有効に活用することができる。
【００１８】
本発明に係る機能を実現するための各手段は、ハードウェアにより構成することができる。
【発明を実施するための最良の形態】
【００１９】
次に、本発明に係るＣＰＵと記憶装置の間に配置される制御装置の好適な実施形態を図面を用いて説明する。図１は、第１実施形態に係る設定装置の構成を示す概念図である。
【００２０】
＜第１実施形態＞
制御装置は、ＣＰＵと記憶装置との間に配置されるものであり、いわゆるチップセットにより構成されるものである。また、記憶装置はメモリ（外部メモリあるいは主メモリ）あるいはハードディスクが対象となるが、説明の便宜上メモリ１を代表して説明するものとする。また、制御装置はＣＰＵとメモリ１の間のブリッジ的な役割を果たし、ＣＰＵ−メモリブリッジ２（以下、単にメモリブリッジという）と称することとする。メモリブリッジ２は、論理回路等のハードウェアにより構成される。メモリブリッジ２内には、本発明特有の補助メモリ３が設けられている。
【００２１】
本発明に係るＣＰＵシステムのデータの取り出し手順を説明する。メモリ１には、予め読み出すべきデータが格納されている。ここで、データには、命令コードと命令コードではない単なるデータがあるが、これらを総称して「データ」と称することとする。
【００２２】
まずＣＰＵからデータ読み出し命令（命令フェッチ）がなされる（Ａ参照）。メモリブリッジ２は、この命令に基づいてメモリ１に対して読み取りアクセスを行う（Ｂ参照）。メモリ１内の、そのコードが格納されているアドレスからデータが読み出される（Ｃ参照）。更に、ＣＰＵからの読み出し要求に係るデータのみならず、上記アドレスの次のアドレスに格納されたデータも読み出される。
【００２３】
一方、ＣＰＵの読み出し要求に係るデータは、ＣＰＵへ出力される（Ｄ参照）。また、その出力されたデータの次のアドレスから読み出されたデータは補助メモリ３に格納される。このように、メモリブリッジ２は、次のアドレスのデータを順番に読み出していき、補助メモリ３に格納させる処理を行う。このような補助メモリ３へデータを格納していく処理をプリフェッチと称する。また、この補助メモリ３へデータを格納する場合に、そのアドレスデータも合わせて保存される。
【００２４】
次に、ＣＰＵからの次のフェッチ要求がされる（Ｅ参照）。この時、その要求に係るデータのアドレスが補助メモリ３の中のデータのアドレスと一致するか否かを判定し、一致する場合は、補助メモリ３に格納されているデータがＣＰＵへと出力される。
【００２５】
このように補助メモリ３にあるデータが出力できる場合は、メモリ１に対してアクセスする必要がなくなる。従って、メモリ１にアクセスしてデータを読み取るためのオーバーヘッドをなくすことができ、アクセス時間を短縮することができる。
【００２６】
以上の構成において、補助メモリ３へのプリフェッチは、補助メモリ３内に保存されていないアドレスに対するフェッチが来るまで行われる。従って、プリフェッチを行っている間に、補助メモリ３内に保存されていないアドレスに対するＣＰＵからの読み出し命令が来た場合には、プリフェッチを中止し、直ちにＣＰＵからの命令フェッチを処理する。これにより、できるだけ多くのデータをプリフェッチできると共に、プリフェッチによるアクセス時間の低下も防止することができる。
【００２７】
さらに、プリフェッチされるデータは、ＣＰＵからの読み出し要求に係るデータのアドレスに続くデータである。これは、命令コード（データ）の多くが連続したアドレスから取り出されるというしくみを利用するものである。従って、かなり高い確率でプリフェッチされたデータをＣＰＵに出力することができる。
【００２８】
また、ＣＰＵからの次のフェッチ要求がされた時（Ｅ参照）、その要求に係るデータのアドレスが補助メモリ３の中のデータのアドレスと一致しない場合、すなわち、 補助メモリ３の中にデータがプリフェッチされていない場合は、メモリ１にアクセスすることになるが、補助メモリ３内のプリフェッチされたデータは削除する。これは、データが補助メモリ３内になければ、補助メモリ３内のデータは今後もＣＰＵへと出力される確率は低いと考えられる。従って、データは削除し、補助メモリ３の容量を有効活用する。補助メモリ３のデータを削除した場合は、再度プリフェッチをやり直すことになる。
【００２９】
なお、プリフェッチを行うためには、ＣＰＵからの要求に係るデータが命令コードであるのか単なるデータであるのかをメモリブリッジ２で判断できる必要がある。ＣＰＵが読み取り命令を出す時には、命令コードか単なるデータであるのかを区別する信号を使用することで、この信号に基づいて判断することができる。あるいは、命令コードと単なるデータにより読み取りサイズを変えることによっても、取り出されるデータが命令コードか否かを判断することができる。
【００３０】
更に追加される機能として、一定時間経過しても使用されなかったプリフェッチデータは破棄するようにしている。これにより、メモリブリッジ２内の補助メモリ３の容量を有効活用することができる。
【００３１】
＜第２実施形態＞
第１実施形態では、連続するアドレスに対応するデータをプリフェッチする構成を説明した。この場合、分岐命令が実行されると有効にプリフェッチ機能を動作させることができない。そこで、図２に示すように命令デコード手段４の機能を備えておき、命令コードをＣＰＵに出力すると共に（Ｄ参照）、メモリブリッジ２内に設けた命令デコード手段４によるデコード（解析）を行う。このデコード機能は、ＣＰＵ内に設けられている機能と同様である。従って、分岐命令であったとしても、先行してデータをプリフェッチすることができる。すなわち、 この機能により、次にＣＰＵによりフェッチされるデータ（命令コード）をメモリブリッジ２の内部で予測することができる。この予測に基づいて、プリフェッチを行う。なお、分岐命令でなければ、連続するアドレスに対応するデータをプリフェッチすればよい。プリフェッチされたデータは、第１実施形態と同様に補助メモリ３に保存される。
【００３２】
次に、ＣＰＵからの次のフェッチ要求がされる（図３のＧ参照）。この時、その要求に係るデータのアドレスが補助メモリ３の中のデータのアドレスと一致するか否かを判定し、一致する場合は、補助メモリ３に格納されているデータがＣＰＵへと出力される（図３のＧ参照）。ＣＰＵからの要求に係るデータが、補助メモリ３に格納されていない場合は、補助メモリ３内のデータは削除処理され、この点は図１と同様である。また、一定時間経過しても使用されなかったプリフェッチデータは破棄する点は先ほどと同じである。
【００３３】
さらに、命令デコード手段４によリデコードされた命令コードが条件付分岐命令の場合は、次にＣＰＵによりフェッチされるデータが複数通り存在することがある。この場合は、予測される分岐先の命令をすべてメモリ１から取り出し、補助メモリ３にプリフェッチしておく。この場合、分岐先のデータの夫々を別々の補助メモリ３（補助メモリ３を複数設ける）に取り込むようにすること等で、プリフェッチ機能を複数設けることができる。
【００３４】
本発明に係る制御装置は、いわゆるチップセットに搭載することができ、ノースブリッジとサウスブリッジに機能が分かれている場合は、ノースブリッジにその機能を搭載することができる。また、図１に示した機能と第２，３に示した機能の両方を搭載することができる。すなわち、 ＣＰＵからの連続するアドレスに対するフェッチでは、図１に示す機能を使用し、分岐命令等の連続しないアドレスに対しては、図２，３に示す機能を使用することができる。以上のように、メモリ１に対するメモリアクセスのオーバーヘッドを解消することができ、メモリへのアクセス時間の短縮化を図ることができる。
【図面の簡単な説明】
【００３５】
【図１】第１実施形態に係るＣＰＵシステムの構成を示す概念図
【図２】第２実施形態に係るＣＰＵシステムの構成を示す概念図
【図３】第２実施形態に係るＣＰＵシステムの構成を示す概念図
【図４】従来技術に係るＣＰＵシステムの構成を示す概念図
【符号の説明】
【００３６】
１      メモリ
２      メモリブリッジ
３      補助メモリ
４      命令デコード手段
【図１】
2005275735.tif 000003
【図２】
2005275735.tif 000004
【図３】
2005275735.tif 000005
【図４】
2005275735.tif 000006