(57)【要約】【課題】高速アクセスの必要とされるデータであってアクセス頻度の低いものに対しても高速アクセス可能となるキャッシュメモリを備えるメモリ装置を得る。【解決手段】プログラムを格納するプログラムメモリ領域２１と、プログラム実行用のデータを格納するデータメモリ領域２２と、プログラム実行用のデータより高速アクセスが必要であるテーブルデータを格納するテーブルメモリ領域２３とを有するメインメモリ２０と、メインメモリ２０のプログラムメモリ領域２１を一時的に格納する命令キャッシュ３０と、メインメモリのデータメモリ領域２２を一時的に格納するデータキャッシュ４０と、メインメモリ２０のテーブルメモリ領域２３を一時的に格納するテーブルキャッシュ５０とを有し、ＣＰＵ１０とメインメモリ２０の間に介在されるキャッシュメモリ１００と、を備える。【選択図】      図１
2005018441.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するプログラム領域と、プログラム実行用のデータを格納するデータ領域と、前記プログラム実行用のデータとは別に高速アクセスが必要であるテーブルデータを格納するテーブルデータ領域とを有するメインメモリと、
前記メインメモリのプログラム領域を一時的に格納する命令キャッシュ領域と、前記メインメモリのデータ領域を一時的に格納するデータキャッシュ領域と、メインメモリのテーブルデータ領域を一時的に格納するデータテーブルキャッシュ領域とを有し、ＣＰＵとメインメモリの間に介在されるキャッシュメモリと、
を備えることを特徴とするメモリ装置。
【請求項２】
前記キャッシュメモリは、一次キャッシュであることを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記キャッシュメモリは、二次キャッシュであることを特徴とする請求項１に記載のメモリ装置。
【請求項４】
前記キャッシュメモリは、三次キャッシュであることを特徴とする請求項１に記載のメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はメモリ装置に関するものであり、特に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメインメモリの間でデータを一時的に格納するキャッシュメモリを備えるメモリ装置に関するものである。
【０００２】
【従来の技術】
コンピュータによって行われるデータ処理の高速化を実現するため、ＣＰＵと電気的に接続されたメインメモリからＣＰＵがデータをリード／ライトする時間の短縮化が望まれている。
【０００３】
一般に、メインメモリからＣＰＵがデータのリード／ライトを行う際の時間短縮を行うためには、データのリード／ライトを高速化する必要があることが知られている。このため、データの高速処理が可能な中間処理装置としてＣＰＵとメインメモリの間にメインメモリのデータを一時的に格納するキャッシュメモリを設け、キャッシュメモリ内にメインメモリ内のデータのうち頻繁に使われる情報を格納している。このキャッシュメモリを用いれば、ＣＰＵがメインメモリのデータをリード／ライトするよりもＣＰＵがキャッシュメモリからデータをリード／ライトするほうが高速処理可能なため、頻繁に使われる情報のデータ処理の高速化を図ることが可能となる。
【０００４】
また、メモリキャッシュをメインメモリ内のプログラム領域を一時的に格納するための命令キャッシュとメインメモリ内のデータを一時的に格納するためのデータキャッシュ領域に分離すれば、命令キャッシュとデータキャッシュの夫々に、独立に高いデータ供給バンド幅を与えることができるため高性能のキャッシュメモリを得ることが可能となる。
【０００５】
特許文献１に記載のキャッシュ制御方法では、キャッシュメモリ内に複数の処理手段（仮想計算機）の夫々に対応する占有領域（ローカルＬＲＵキュー）と複数の処理手段（仮想計算機）が共有する共有領域（共有ＬＲＵキュー）を設けている。そして、各処理手段に割り当てられた占有領域に各処理手段毎にアクセス頻度の高い情報を格納するとともに共有領域に全処理手段の中からアクセス頻度の高い情報を格納している。これによって、各処理手段に対して最低限度のヒット率（データがキャッシュメモリ内にあった回数／データにアクセス要求のあった回数）を保証するとともに全処理手段においてアクセス頻度の高い処理手段のヒット率の向上を図っている。
【０００６】
【特許文献１】
特開平８−１４７２１８号公報（第５，１５項）
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来の技術によれば各処理手段に対して最低限度のヒット率を保証するとともに全処理手段の中からアクセス頻度の高い処理手段のヒット率の向上を図ることはできるが、高速アクセスの必要とされるデータであってアクセス頻度の低いものはキャッシュメモリに格納されることが少ないため高速アクセスできないといった問題があった。
【０００８】
この発明は上記に鑑みてなされたものであって、高速アクセスの必要とされるデータであってアクセス頻度の低いものに対しても高速アクセス可能となるキャッシュメモリを備えるメモリ装置を得ることを目的とする。
【０００９】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するために、本発明にかかるメモリ装置にあっては、プログラムを格納するプログラム領域と、プログラム実行用のデータを格納するデータ領域と、前記プログラム実行用のデータとは別に高速アクセスが必要であるテーブルデータを格納するテーブルデータ領域とを有するメインメモリと、前記メインメモリのプログラム領域を一時的に格納する命令キャッシュ領域と、前記メインメモリのデータ領域を一時的に格納するデータキャッシュ領域と、メインメモリのテーブルデータ領域を一時的に格納するデータテーブルキャッシュ領域とを有し、ＣＰＵとメインメモリの間に介在されるキャッシュメモリと、を備えることを特徴とする。
【００１０】
この発明によれば、キャッシュメモリ内に命令キャッシュ領域および第１のデータキャッシュ領域に加えて第２のデータキャッシュ領域を備えたので、ＣＰＵから第２のデータキャッシュ領域へのアクセス頻度が低い場合であっても高速アクセスが必要な所定のデータを第２のテーブルキャッシュ領域に格納することが可能となる。
【００１１】
【発明の実施の形態】
以下、本発明にかかるメモリ装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１および図２に従ってこの発明の実施の形態１について説明する。図１はこの発明の実施の形態１にかかるメモリ装置を備えたコンピュータの構成を示すブロック図である。メモリ装置を備えたコンピュータは、ＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、メインメモリ２０、キャッシュメモリ１００で構成されており、キャッシュメモリ１００はＣＰＵ１０とメインメモリ２０の間に設けられている。
【００１３】
ＣＰＵ１０は、メインメモリ２０に記憶されたプログラムを実行するものであり、メインメモリ２０からデータを受け取るとともにこのデータを演算、加工してメインメモリ２０やその他の装置に出力する。
【００１４】
メインメモリ２０は、プログラムメモリ領域２１、データメモリ領域２２、テーブルメモリ領域２３からなり、プログラムメモリ領域２１は、ＣＰＵ１０が命令を実行する際に用いる読み取り専用プログラムを格納しておく領域である。
【００１５】
テーブルメモリ領域２３は、コンピュータが例えば通信機器に用いられる場合、ＣＰＵ１０がセルやパケット等の送出先を判断するために用いるリード／ライト可能なテーブルデータを格納しておく領域である。テーブルデータには、例えば、ＩＰアドレス等の情報がある。
【００１６】
データメモリ領域２２は、ＣＰＵ１０が命令を実行する際に必要とするリード／ライト可能なデータを格納しておく領域である。データメモリ領域２２で格納するデータは、テーブルデータと区別するために一般データとよぶことにし、例えばメモリの番地等の情報がある。
【００１７】
キャッシュメモリ１００は、命令キャッシュ３０、データキャッシュ４０、テーブルキャッシュ５０からなり、それぞれ独立して構成されている。テーブルキャッシュ５０は、テーブルメモリ領域２３のうちＣＰＵ１０からのアクセス頻度が高いデータを含むテーブルメモリ領域２３を一時的に格納するものである。命令キャッシュ３０は、プログラムメモリ領域２１のうちＣＰＵ１０からのアクセス頻度が高いプログラムを含むプログラムメモリ領域２１を一時的に格納するものであり、データキャッシュ４０は、データメモリ領域２２のうちＣＰＵ１０からのアクセス頻度が高い一般データを含むデータメモリ領域２２を一時的に格納するものである。
【００１８】
そして、テーブルキャッシュ５０、命令キャッシュ３０、データキャッシュ４０は例えばＬＲＵ方式によってデータキャッシュをする。ここで、データキャッシュ方式の１つであるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅ）方式は、ＣＰＵ１０から最近にアクセスされたデータが再びＣＰＵ１０からアクセスされる可能性が高いという統計的な性質を利用して、ＣＰＵ１０からメインメモリ２０に新しくアクセスされたデータをキャッシュメモリ１００に格納するとともに例えばテーブルキャッシュ５０内のデータのうち最後にアクセスされた時刻が最も古いデータをメインメモリ２０に移動して書き戻すものである。
【００１９】
したがって、ＬＲＵ方式でデータキャッシュを行う場合ＣＰＵ１０から長い間アクセスされない領域のデータはキャッシュメモリ１００から追い出されてしまい、アクセス頻度の高い領域のデータのみがキャッシュメモリ１００に格納されることとなる。
【００２０】
このテーブルデータを通信時に用いる場合、１セル時間や１パケット時間にテーブルデータの検索を完了する必要があるためＣＰＵ１０はテーブルデータに高速アクセスする必要がある。しかし、ＬＲＵ方式を用いてデータキャッシュを行うと、ＣＰＵ１０から高速アクセスが必要であるテーブルデータのアクセス頻度が低い場合テーブルデータがキャッシュメモリ１００に格納されずＣＰＵ１０からテーブルデータへの高速アクセスができない。そこで、一般データとは別にＣＰＵ１０からの高速アクセスが必要とされるテーブルデータをテーブルデータ専用のテーブルキャッシュに格納することとする。
【００２１】
実施の形態１の処理について図２に示すフローチャートに従って説明する。図２は実施の形態１にかかるメモリ装置を備えたコンピュータのデータキャッシュ処理手順を示したフローチャートである。
【００２２】
ＣＰＵ１０が命令の実行を行う場合、命令の実行を行うプログラムが命令キャッシュ３０に格納されているか否かを確認する（ステップＳ１００）。そして、命令の実行を行うプログラムが命令キャッシュ３０に格納されていないと判断された場合、メインメモリ２０内のプログラムメモリ領域２１を命令キャッシュ３０に取り込む（ステップＳ１１０）。このとき、命令キャッシュ３０内のデータのうち最後にアクセスされた時刻が最も古いデータを命令キャッシュ３０内で無効にする。これによって、ＣＰＵ１０は高速アクセス可能な命令キャッシュ３０からプログラムを読み出すことが可能となる。
【００２３】
また、ＣＰＵ１０が行う命令によっては命令実行時にメインメモリ内のデータを必要とする場合がある。そこで、ＣＰＵ１０がメインメモリ２０へメモリアクセスする必要があるか否かを判断する（ステップＳ１２０）。
【００２４】
そして、ＣＰＵ１０はメインメモリ２０へメモリアクセスする必要がないと判断された場合はこのままプログラムが実行されることとなる。一方、ＣＰＵ１０はメインメモリ２０へメモリアクセスする必要があると判断された場合、ＣＰＵ１０が必要とするデータはテーブル計算用のデータであるか否かを判断する（ステップＳ１３０）。ＣＰＵ１０が必要とするデータはテーブル計算用のテーブルデータであると判断された場合、テーブルデータが含まれるテーブルメモリ領域２３がテーブルキャッシュ５０内に格納されているか否かを確認する（ステップＳ１４０）。そして、テーブルメモリ領域２３がテーブルキャッシュ５０に格納されていないと判断された場合、必要とするテーブルデータが含まれるテーブルメモリ領域２３をメインメモリ２０からテーブルキャッシュ５０に取り込む（ステップＳ１５０）。このとき、テーブルキャッシュ５０内のテーブルデータのうち最後にアクセスされた時刻が最も古いテーブルデータをメインメモリ２０に移動して書き戻しておく。この後、ＣＰＵ１０は高速アクセス可能なテーブルキャッシュ５０からテーブルデータをリード／ライトする（ステップＳ１６０）。
【００２５】
なお、ＣＰＵ１０がテーブルキャッシュ５０のテーブルデータをライトする場合ライトスルー方式またはライトバック方式が用いられる。ＣＰＵ１０が、テーブルキャッシュ５０のテーブルデータをライトスルー方式でライトする場合、ＣＰＵ１０がテーブルキャッシュ５０内のテーブルデータにライトを行う際にメインメモリ２０内のテーブルデータにもライトを行う。
【００２６】
一方、ＣＰＵ１０がテーブルキャッシュ５０のテーブルデータをライトバック方式でライトする場合、ＣＰＵ１０はテーブルキャッシュ５０内のテーブルデータのみにライトを行う。そして、テーブルデータがライトされたことのメインメモリ２０への反映はテーブルデータを含むテーブルメモリ領域２３をテーブルキャッシュ５０からメインメモリ２０へ書き戻すことによって行われる。
【００２７】
また、ステップＳ１３０においてＣＰＵ１０が必要とするデータはテーブル計算用のデータでないと判断された場合、このデータを一般データとして一般データが含まれるデータメモリ領域２２がデータキャッシュ４０内に格納されているか否かを確認する（ステップＳ１７０）。そして、データメモリ領域２２がデータキャッシュ４０に格納されていないと判断された場合、メインメモリ２０内のデータメモリ領域２２をデータキャッシュ４０に取り込む（ステップＳ１８０）。このとき、データキャッシュ４０内の一般データのうち最後にアクセスされた時刻が最も古い一般データをメインメモリ２０に移動して書き戻しておく。この後、ＣＰＵ１０はデータキャッシュ４０から一般データをリード／ライトする（ステップＳ１９０）。
【００２８】
なお、ＣＰＵ１０がデータキャッシュ４０の一般データをライトする場合ライトスルー方式またはライトバック方式が用いられる。ＣＰＵ１０が、データキャッシュ４０のデータをライトスルー方式でライトする場合、ＣＰＵ１０がテーブルキャッシュ５０内のデータにライトを行う際にメインメモリ２０内のデータにもライトを行う。
【００２９】
一方、ＣＰＵ１０がデータキャッシュ４０の一般データをライトバック方式でライトする場合、ＣＰＵ１０はデータキャッシュ４０内の一般データのみにライトを行う。そして、一般データがライトされたことのメインメモリ２０への反映は一般データを含むデータメモリ領域２２をデータキャッシュ４０からメインメモリ２０へ書き戻すことによって行われる。
【００３０】
そして、ＣＰＵ１０がテーブルキャッシュ５０からテーブルデータをリード／ライトすることやＣＰＵ１０がデータキャッシュ４０から一般データをリード／ライトすることによってプログラムの実行が行われる（ステップＳ２００）。
【００３１】
なお、本実施の形態１においてはキャッシュメモリ１００をＣＰＵ１０とは独立に設ける構成としたが、キャッシュメモリ１００をＣＰＵ１０とは独立に設けた構成に限定されるものではなく、キャッシュメモリ１００をＣＰＵ１０内に設ける構成としてもよい。
【００３２】
このように実施の形態１によれば、キャッシュメモリ１００に命令キャッシュ３０、データキャッシュ４０に加えてテーブルキャッシュ５０を備えた構成としたので、テーブルデータ専用のキャッシュを確保することが可能となる。したがってテーブルデータのアクセス頻度が他のデータ等より低い場合であってもＣＰＵ１０はテーブルキャッシュ５０を用いてテーブルデータへ高速アクセスすることが可能となる。
【００３３】
実施の形態２．
図３および図４に従ってこの発明の実施の形態２について説明する。図３はこの発明の実施の形態にかかるメモリ装置を備えたコンピュータの構成を示すブロック図であり、図３の各構成要素のうち図１に示す実施の形態１のメモリ装置を備えたコンピュータと同一機能を達成する構成要素については同一番号を付しており重複する説明は省略する。
【００３４】
実施の形態２にかかるメモリ装置を備えたコンピュータは、ＣＰＵ１０、メインメモリ２０、キャッシュメモリ１１０からなる。キャッシュメモリ１１０は１次キャッシュメモリ１０１、２次キャッシュメモリ１０２、３次キャッシュメモリ１０３で構成されており、ＣＰＵ１０と１次キャッシュメモリ１０１が電気的に接続され、１次キャッシュメモリ１０１と２次キャッシュメモリ１０２が電気的に接続され、２次キャッシュメモリ１０２と３次キャッシュメモリ１０３が電気的に接続され、３次キャッシュメモリ１０３とメインメモリ２０が電気的に接続された構成となっている。
【００３５】
１次キャッシュメモリ１０１は、１次命令キャッシュ３１、１次データキャッシュ４１、１次テーブルキャッシュ５１からなり、それぞれ独立して構成されている。１次テーブルキャッシュ５１は、テーブルメモリ領域２３のうちＣＰＵ１０からのアクセス頻度が高いテーブルデータを含むテーブルメモリ領域２３を一時的に格納するものである。
【００３６】
１次命令キャッシュ３１は、プログラムメモリ領域２１のうちＣＰＵ１０からのアクセス頻度が高いプログラムを含むプログラムメモリ領域２１を一時的に格納するものであり、１次データキャッシュ４１は、データメモリ領域２２のうちＣＰＵ１０からのアクセス頻度が高い一般データを含むデータメモリ領域２２を一時的に格納するものである。そして、１次テーブルキャッシュ５１、１次命令キャッシュ３１、１次データキャッシュ４１は例えばＬＲＵ方式によってデータキャッシュをする。
【００３７】
２次キャッシュメモリ１０２は、２次命令キャッシュ３２、２次データキャッシュ４２、２次テーブルキャッシュ５２からなり、それぞれ独立して構成されている。２次テーブルキャッシュ５２は、テーブルメモリ領域２３のうちＣＰＵ１０からのアクセス頻度が高いテーブルデータを含むものであって、１次テーブルキャッシュ５１に格納されるテーブルメモリ領域２３よりアクセス頻度が低いテーブルメモリ領域２３を一時的に格納するものである。
【００３８】
２次命令キャッシュ３２は、プログラムメモリ領域２１のうちＣＰＵ１０からのアクセス頻度が高いプログラムを含むものであって、１次命令キャッシュ３１に格納されるプログラムメモリ領域２１よりアクセス頻度が低いプログラムメモリ領域２１を一時的に格納するものである。
【００３９】
２次データキャッシュ４２は、データメモリ領域２２のうちＣＰＵ１０からのアクセス頻度が高い一般データを含むものであって、１次データキャッシュ４１に格納されるデータメモリ領域２２よりアクセス頻度が低いデータメモリ領域２２を一時的に格納するものである。そして、２次テーブルキャッシュ５２、２次命令キャッシュ３２、２次データキャッシュ４２は例えばＬＲＵ方式によってデータキャッシュをする。
【００４０】
３次キャッシュメモリ１０３は、３次命令キャッシュ３３、３次データキャッシュ４３、３次テーブルキャッシュ５３からなり、それぞれ独立して構成されている。３次テーブルキャッシュ５３は、テーブルメモリ領域２３のうちＣＰＵ１０からのアクセス頻度が高いテーブルデータを含むものであって、１次テーブルキャッシュ５１や２次テーブルキャッシュ５２に格納されるテーブルメモリ領域２３よりアクセス頻度が低いテーブルメモリ領域２３を一時的に格納するものである。
【００４１】
３次命令キャッシュ３３は、プログラムメモリ領域２１のうちＣＰＵ１０からのアクセス頻度が高いプログラムを含むものであって、１次命令キャッシュ３１や２次命令キャッシュ３２に格納されるプログラムメモリ領域２１よりアクセス頻度が低いプログラムメモリ領域２１を一時的に格納するものである。
【００４２】
３次データキャッシュ４３は、データメモリ領域２２のうちＣＰＵ１０からのアクセス頻度が高い一般データを含むものであって、１次データキャッシュ４１や２次データキャッシュ４２に格納されるデータメモリ領域２２よりアクセス頻度が低いデータメモリ領域２２を一時的に格納するものである。そして、３次テーブルキャッシュ５３、３次命令キャッシュ３３、３次データキャッシュ４３は例えばＬＲＵ方式によってデータキャッシュをする。
【００４３】
実施の形態２の処理について図４に示すフローチャートに従って説明する。図４は実施の形態２にかかるメモリ装置を備えたコンピュータのデータキャッシュ処理手順を示したフローチャートである。
【００４４】
ＣＰＵ１０が命令の実行を行う場合、命令の実行を行うプログラムを含むプログラムメモリ領域２１が１次命令キャッシュ３１に格納されているか否かを確認する（ステップＳ３００）。そして、命令の実行を行うプログラムを含むプログラムメモリ領域２１が１次命令キャッシュ３１に格納されていないと判断された場合、命令の実行を行うプログラムを含むプログラムメモリ領域２１が２次命令キャッシュ３２または３次命令キャッシュ３３に格納されているか否かを確認する。
【００４５】
命令の実行を行うプログラムを含むプログラムメモリ領域２１が２次命令キャッシュ３２にある場合は、２次命令キャッシュ３２から１次命令キャッシュ３１にこのプログラムメモリ領域２１を取り込む。このとき、１次命令キャッシュ３１内のデータ（プログラムメモリ領域２１）のうち最後にアクセスされた時刻が最も古いデータを無効にする。
【００４６】
命令の実行を行うプログラムを含むプログラムメモリ領域２１が３次命令キャッシュ３３にある場合は、３次命令キャッシュ３３から１次命令キャッシュ３１にこのプログラムメモリ領域２１を取り込む。このとき、１次命令キャッシュ３１内のデータのうち最後にアクセスされた時刻が最も古いデータを無効にする。さらに、２次命令キャッシュ３２内のデータ（プログラムメモリ領域２１）のうち最後にアクセスされた時刻が最も古いデータを無効にする。
【００４７】
命令の実行を行うプログラムが２次命令キャッシュ３２や３次命令キャッシュ３３に無い場合は命令の実行を行うプログラムを含むプログラムメモリ領域２１をメインメモリ２０から１次命令キャッシュ３１に取り込む（ステップＳ３１０）。これによって、ＣＰＵ１０は高速アクセス可能な１次命令キャッシュ３１からプログラムを読み出すことが可能となる。このとき、１次命令キャッシュ３１内のデータのうち最後にアクセスされた時刻が最も古いデータを無効にし、２次命令キャッシュ３２内のデータのうち最後にアクセスされた時刻が最も古いデータを無効にし、３次命令キャッシュ３３内のデータのうち最後にアクセスされた時刻が最も古いデータを無効にする。
【００４８】
また、ＣＰＵ１０が行う命令によっては命令実行時にメインメモリ内のデータを必要とする場合がある。そこで、ＣＰＵ１０がメインメモリ２０へメモリアクセスする必要があるか否かを判断する（ステップＳ３２０）。
【００４９】
そして、ＣＰＵ１０がメインメモリ２０へメモリアクセスする必要がないと判断された場合はこのままプログラムが実行されることとなる。一方、ＣＰＵ１０がメインメモリ２０へメモリアクセスする必要があると判断された場合、ＣＰＵ１０が必要とするデータはテーブル計算用のデータであるか否かを判断する（ステップＳ３３０）。ＣＰＵ１０が必要とするデータはテーブル計算用のデータであると判断された場合、テーブルデータが含まれるテーブルメモリ領域２３が１次テーブルキャッシュ５１内に格納されているか否かを確認する（ステップＳ３４０）。そして、テーブルメモリ領域２３が１次テーブルキャッシュ５１に格納されていないと判断された場合、テーブルデータが含まれるテーブルメモリ領域２３が２次テーブルキャッシュ５２や３次テーブルキャッシュ５３内に格納されているか否かを確認する。
【００５０】
テーブルデータを含むテーブルメモリ領域２３が２次テーブルキャッシュ５２にある場合は、２次テーブルキャッシュ５２から１次テーブルキャッシュ５１にこのテーブルメモリ領域２３を取り込む。このとき、１次テーブルキャッシュ５１内のデータ（テーブルメモリ領域２３）のうち最後にアクセスされた時刻が最も古いデータを２次テーブルキャッシュ５２に移動させて取り込む。
【００５１】
テーブルデータを含むテーブルメモリ領域２３が３次テーブルキャッシュ５３にある場合は、３次テーブルキャッシュ５３から１次テーブルキャッシュ５１にこのテーブルメモリ領域２３を移動させて取り込む。このとき、１次テーブルキャッシュ５１内のデータのうち最後にアクセスされた時刻が最も古いデータを２次テーブルキャッシュ５２に移動させて取り込み、２次テーブルキャッシュ５２内のデータのうち最後にアクセスされた時刻が最も古いデータを３次テーブルキャッシュ５３に移動させて取り込む。
【００５２】
テーブルデータを含むテーブルメモリ領域２３が２次テーブルキャッシュ５２や３次テーブルキャッシュ５３に無い場合はテーブルデータを含むテーブルメモリ領域２３をメインメモリ２０から１次テーブルキャッシュ５１に取り込む（ステップＳ３５０）。このとき、１次テーブルキャッシュ５１内のデータのうち最後にアクセスされた時刻が最も古いデータを２次テーブルキャッシュ５２に移動させて取り込み、２次命令キャッシュ３２内のデータのうち最後にアクセスされた時刻が最も古いデータを３次命令キャッシュ３３に移動させて取り込み、３次命令キャッシュ３３内のデータのうち最後にアクセスされた時刻が最も古いデータをメインメモリ２０に移動させて書き戻す。この後、ＣＰＵ１０は高速アクセス可能な１次テーブルキャッシュ５１からテーブルデータをリード／ライトする（ステップＳ３６０）。
【００５３】
また、ステップＳ３３０においてＣＰＵ１０が必要とするデータはテーブル計算用のデータでないと判断された場合、このデータを一般データとして一般データが含まれるデータメモリ領域２２が１次データキャッシュ４１内に格納されているか否かを確認する（ステップＳ３７０）。そして、データメモリ領域２２が１次データキャッシュ４１に格納されていないと判断された場合、一般データが含まれるデータメモリ領域２２が２次データキャッシュ４２や３次データキャッシュ４３に格納されているか否かを確認する。
【００５４】
一般データを含むデータメモリ領域２２が２次データキャッシュ４２にある場合は、２次データキャッシュ４２から１次データキャッシュ４１にこのデータメモリ領域２２を取り込む。このとき、１次データキャッシュ４１内のデータ（データメモリ領域２２）のうち最後にアクセスされた時刻が最も古いデータを２次データキャッシュ４２に移動させて取り込む。
【００５５】
一般データを含むデータメモリ領域２２が３次データキャッシュ４３にある場合は、３次データキャッシュ４３から１次データキャッシュ４１にこのデータメモリ領域２２を取り込む。このとき、１次データキャッシュ４１内の一般データのうち最後にアクセスされた時刻が最も古い一般データを２次データキャッシュ４２に移動させて取り込み、２次データキャッシュ４２内の一般データのうち最後にアクセスされた時刻が最も古い一般データを３次データキャッシュ４３に移動させて取り込む。
【００５６】
一般データを含むデータメモリ領域２２が２次データキャッシュ４２や３次データキャッシュ４３に無い場合は一般データを含むデータメモリ領域２２をメインメモリ２０から１次データキャッシュ４１に取り込む（ステップＳ３８０）。このとき、１次データキャッシュ４１内の一般データのうち最後にアクセスされた時刻が最も古い一般データを２次データキャッシュ４２に移動して取り込み、２次データキャッシュ４２内の一般データのうち最後にアクセスされた時刻が最も古い一般データを３次データキャッシュ４３に取り込み、３次データキャッシュ４３内の一般データのうち最後にアクセスされた時刻が最も古い一般データをメインメモリ２０に移動させて書き戻す。この後、ＣＰＵ１０は高速アクセス可能な１次データキャッシュ４１から一般データをリード／ライトする（ステップＳ３９０）。
【００５７】
そして、ＣＰＵ１０が１次テーブルキャッシュ５１からテーブルデータをリード／ライトすることやＣＰＵ１０が１次データキャッシュ４１から一般データをリード／ライトすることによってプログラムの実行が行われる（ステップＳ４００）。
【００５８】
なお、ＣＰＵ１０、１次命令キャッシュ３１、２次命令キャッシュ３２、３次命令キャッシュ３３およびメインメモリ２０相互間の接続方法やデータの書き戻しおよび取り込みの方法は実施の形態２に説明した方法に限定されるものではなく、他の接続方法やデータの書き戻しおよび取り込み方法を用いてもよい。
【００５９】
同様に、ＣＰＵ１０、１次データキャッシュ４１、２次データキャッシュ４２、３次データキャッシュ４３およびメインメモリ２０相互間の接続方法やデータの書き戻しおよび取り込みの方法は実施の形態２に説明した方法に限定されるものではなく、他の接続方法やデータの書き戻しおよび取り込み方法を用いてもよい
【００６０】
さらに、ＣＰＵ１０、１次テーブルキャッシュ５１、２次テーブルキャッシュ５２、３次テーブルキャッシュ５３およびメインメモリ２０相互間の接続方法やデータの書き戻しおよび取り込みの方法は実施の形態２に説明した方法に限定されるものではなく、他の接続方法やデータの書き戻しおよび取り込み方法を用いてもよい
【００６１】
なお、本実施の形態２においてはキャッシュメモリ１１０を１次キャッシュメモリ１０１、２次キャッシュメモリ１０２、３次キャッシュメモリ１０３からなる構成としたが、キャッシュメモリはこれら３つに限定されるものではなく、１次キャッシュメモリ１０１および２次キャッシュメモリ１０２からなる構成としてもよいし、４次以上のキャッシュメモリからなる構成としてもよい。
【００６２】
このように実施の形態２によれば、キャッシュメモリ１００に１次キャッシュと２次キャッシュを備えた構成としたので、テーブルデータ専用のキャッシュを効率よく確保することが可能となる。したがってテーブルデータのアクセス頻度が他のデータ等より低い場合であってもＣＰＵ１０はテーブルキャッシュ５０からテーブルデータへ高速アクセスすることが可能となる。
【００６３】
【発明の効果】
以上説明したとおり、この発明によれば、キャッシュメモリに命令キャッシュ、データキャッシュに加えてテーブルキャッシュを備えた構成としたので、テーブルデータ専用のキャッシュを確保することが可能となり、ＣＰＵからテーブルデータのアクセス頻度が他のデータ等より低い場合であってもＣＰＵはテーブルデータへ高速アクセスすることが可能になるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１にかかるメモリ装置を備えたコンピュータの構成を示すブロック図である。
【図２】実施の形態１にかかるメモリ装置を備えたコンピュータのデータキャッシュ処理手順を示したフローチャートである。
【図３】実施の形態２にかかるメモリ装置を備えたコンピュータの構成を示すブロック図である。
【図４】実施の形態２にかかるメモリ装置を備えたコンピュータのデータキャッシュ処理手順を示したフローチャートである。
【符号の説明】
１０  ＣＰＵ、２０  メインメモリ、２１  プログラムメモリ領域、２２  データメモリ領域、２３  テーブルメモリ領域、３０  命令キャッシュ、３１  １次命令キャッシュ、３２  ２次命令キャッシュ、３３  ３次命令キャッシュ、４０  データキャッシュ、４１  １次データキャッシュ、４２  ２次データキャッシュ、４３  ３次データキャッシュ、５０  テーブルキャッシュ、５１  １次テーブルキャッシュ、５２  ２次テーブルキャッシュ、５３  ３次テーブルキャッシュ、１００，１１０  キャッシュメモリ、１０１  １次キャッシュメモリ、１０２  ２次キャッシュメモリ、１０３  ３次キャッシュメモリ。
【図１】
2005018441.tif 000003
【図２】
2005018441.tif 000004
【図３】
2005018441.tif 000005
【図４】
2005018441.tif 000006