(57)【要約】【課題】ポインタを備えたデータ構造体を用いて記憶部内のデータを高速にアクセスする。【解決手段】複数の構造体を記憶する構造体領域と、データを記憶するデータ領域を持つ記憶部を有するコンピュータシステムにおいて、各構造体は、データ領域に記憶されたデータを指定するポインタと、ポインタを用いて一度アクセスされたデータ領域にあるデータを一時的に保持するデータキャッシュ領域と、データキャッシュ領域に保持されたデータが有効であることを示すフラグと、カウンタレジスタの値が更新される度にカウンタレジスタの値を保持するカウンタ値を有して構成される。記憶部内のデータをアクセスする時に、データアクセス時にカウンタレジスタの内容と構造体のカウンタ値を照合し、その照合結果に応じて、構造体内のデータキャッシュ領域又はポインタによって指定されるデータ領域内のデータにアクセスする。【選択図】図２
2011192012.tif 000002
【特許請求の範囲】
【請求項１】
構造体が持つポインタを用いて、記憶部内のデータをアクセスすることができるコンピュータシステムにおいて、
該記憶部は、複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有し、
該ポインタが指すデータ領域内のあるデータが変更されたときに、その値が更新されるカウンタレジスタを備えると共に、
データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域と、該カウンタレジスタの値が更新される度に該カウンタレジスタの値を保持するカウンタ値を有する該構造体を備え、
該記憶部内のデータにアクセスする時に、該カウンタレジスタの内容と該構造体の該カウンタ値を照合し、該照合の結果に応じて、該構造体内の該データキャッシュ領域又は該ポインタによって指定されるデータ領域のデータにアクセスすることを特徴とするデータ処理システム。
【請求項２】
該記憶部内のデータにアクセスする時に、該カウンタレジスタの内容と該構造体の該カウンタ値を照合して、照合の結果、両者が一致する場合には、該構造体内の該データキャッシュ領域内に記憶されたデータを使用し、不一致の場合には、該ポインタによって指定されるデータ領域内のデータを使用することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
該ポインタを用いてデータ領域内のデータをアクセスした場合、取得された該データを該データキャッシュ領域に保持し、かつ該カウンタレジスタの値を該構造体の該カウンタ値に保存することを特徴とする請求項１乃至２のいずれかの項記載のデータ処理システム。
【請求項４】
該構造体は、該データキャッシュ領域に保持されたデータが有効又は無効であることを示すフラグを有し、該ポインタが指定する該データ領域のデータが変更された場合、該フラグを無効の状態にすることを特徴とする請求項１乃至３のいずれかの項記載のデータ処理システム。
【請求項５】
複数の該構造体が記憶される構造体領域のエントリ数が該カウンタレジスタによって表される最大値よりも大きい場合、該カウンタレジスタの値が一周する前に全ての該エントリを無効化するように、一定の複数ずつの構造体の該フラグを無効の状態にセットすることを特徴とする請求項１乃至４のいずれかの項記載のデータ処理システム。
【請求項６】
該コンピュータシステムは、ネットワークに接続されるネットワークカードと、データ処理するＣＰＵと、前記構造体領域及び前記データ領域を有するメインメモリを有し、
前記構造体は、複数の送信相手のそれぞれに対応した制御情報を保持し、
前記カウンタレジスタは、該ネットワークカード内に設けられ、
前記データ領域は各送信相手に対する経路情報を記憶し、かつ、前記データキャッシュ領域は、ポインタで指定されたデータ領域内の該経路情報を保持し、
ある送信相手へデータを送信する場合、該ネットワークカードは該送信相手に対する制御情報の構造体を、ＤＭＡ転送で該メインメモリ内の構造体領域から読み出し、さらに該データキャッシュ領域又は該構造体内の該ポインタを用いて、ＤＭＡ転送で該データ領域から経路情報を読み出すことを特徴とする請求項１乃至５のいずれかの項記載のデータ処理システム。
【請求項７】
データを記憶する外部低速記録媒体が接続され、かつデータ処理するＣＰＵと、該データ領域及び該構造体領域を持つメモリを有するコンピュータシステムであって、前記ポインタは該外部低速記録媒体に記憶されるデータを指定し、かつ前記データキャッシュ領域は、該外部低速記録媒体に記憶されるデータを保持することを特徴とする請求項１乃至５のいずれかの項記載のデータ処理システム。
【請求項８】
複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有する記憶部内のデータに、構造体が持つポインタを用いてアクセスすることができるアクセス制御方法であって、
該構造体は、データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域を有し、
該記憶部をアクセスする時に、該構造体の該データキャッシュ領域に記憶されたデータが有効であれば、該データキャッシュ領域より該データを得、
該構造体の該データキャッシュ領域に記憶されたデータが有効でなければ、該ポインタを用いて該データ領域をアクセスしてデータを得ることを特徴とするアクセス制御方法。
【請求項９】
複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有する記憶部内のデータに、構造体が持つポインタを用いてアクセスするアクセス制御方法であって、
該構造体は、データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域と、該カウンタレジスタの値が更新される度に該カウンタレジスタの値を保持するカウンタ値を有し、
該記憶部内のデータにアクセスする時に、該ポインタが指すデータ領域内のあるデータが変更されたときにその値が更新される該カウンタレジスタの内容と、該構造体の該カウンタ値を照合し、該照合の結果に応じて、該構造体内の該データキャッシュ領域又は該ポインタによって指定されるデータ領域のデータにアクセスすることを特徴とするアクセス制御方法。
【請求項１０】
該構造体は、該データキャッシュ領域に保持されたデータが有効又は無効であることを示すフラグを有し、該ポインタが指定する該データ領域のデータが変更された場合、該フラグを無効の状態にすることを特徴とする請求項８又は９のアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム及びアクセス制御方法に係り、特にデータプロセッサ及びメモリを有するデータ処理システムにおいて、データ構造体（以下単に構造体という）を用いてメモリをアクセスする制御に関する。
【背景技術】
【０００２】
近年、コンピュータ分野だけでなく、組み込みマイコンを使用した電子機器においても、Ｃ言語等の高級言語によるソフトウェア開発が一般的に行われている。高級言語によるソフトウェア開発において、構造体やポインタの使用は開発効率や品質を向上させる上で重要である。
【０００３】
例えば、図1に示すように、構造体とポインタを用いたデータ構造がメモリ上に存在する場合を考える。構造体中にはポインタ変数がメンバとして存在するので、そのポインタが指す幾つかのメモリアドレスを手繰り、最後に実際のデータにたどり着く。この場合、実際のデータにアクセスするためには、構造体にアクセス後、ポインタの段数分のメモリアクセス回数が必要になる。そのため、実際のデータにアクセスできるまでに、多くの時間がかかり、これによる性能低下が問題となることがある。
【０００４】
この問題を解決する１つの方法として、データを使用する側が高速にアクセスできるハードウェアキャッシュを備えることもできるが、ハードウェアコストが多くかかるという問題がある。
なお、ポインタを用いたメモリ構造体の例としては、特許文献１に開示されたものが知られ、また、データキャッシュの例としては、特許文献１に開示のものが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２５６２６７公報
【特許文献２】特開２００１−４３１３０公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように、ポインタを用いたデータ構造では、データにアクセスするために複数回のメモリアクセスが必要となるため、多くの時間を要し、コンピュータシステムの性能が低下する。
そこで、本発明の目的は、データ構造体を用いたデータ処理システムにおいて、メモリ内のデータに高速にアクセスすることにある。
【課題を解決するための手段】
【０００７】
本発明に係るコンピュータシステムは、好ましくは、構造体が持つポインタを用いて、記憶部内のデータをアクセスすることができるコンピュータシステムにおいて、
該記憶部は、複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有し、
該ポインタが指すデータ領域内のあるデータが変更されたときに、その値が更新されるカウンタレジスタを備えると共に、
データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域と、該カウンタレジスタの値が更新される度に該カウンタレジスタの値を保持するカウンタ値を有する該構造体を備え、
該記憶部内のデータにアクセスする時に、該カウンタレジスタの内容と該構造体の該カウンタ値を照合し、該照合の結果に応じて、該構造体内の該データキャッシュ領域又は該ポインタによって指定されるデータ領域のデータにアクセスすることを特徴とするデータ処理システムとして構成される。
【０００８】
好ましい例においては、該記憶部内のデータにアクセスする時に、該カウンタレジスタの内容と該構造体の該カウンタ値を照合して、照合の結果、両者が一致する場合には、該構造体内の該データキャッシュ領域内に記憶されたデータを使用し、不一致の場合には、該ポインタによって指定されるデータ領域内のデータを使用する。
また、好ましくは、該ポインタを用いてデータ領域内のデータをアクセスした場合、取得された該データを該データキャッシュ領域に保持し、かつ該カウンタレジスタの値を該構造体の該カウンタ値に保存する。
また、好ましくは、該構造体は、該データキャッシュ領域に保持されたデータが有効又は無効であることを示すフラグを有し、該ポインタが指定する該データ領域のデータが変更された場合、該フラグを無効の状態にする。
また、好ましくは、複数の該構造体が記憶される構造体領域のエントリ数が該カウンタレジスタによって表される最大値よりも大きい場合、該カウンタレジスタの値が一周する前に全ての該エントリを無効化するように、一定の複数ずつの構造体の該フラグを無効の状態にセットする。
【０００９】
また、好ましい例では、該コンピュータシステムは、ネットワークに接続されるネットワークカードと、データ処理するＣＰＵと、前記構造体領域及び前記データ領域を有するメインメモリを有し、
前記構造体は、複数の送信相手のそれぞれに対応した制御情報を保持し、
前記カウンタレジスタは、該ネットワークカード内に設けられ、
前記データ領域は各送信相手に対する経路情報を記憶し、かつ、前記データキャッシュ領域は、ポインタで指定されたデータ領域内の該経路情報を保持し、
ある送信相手へデータを送信する場合、該ネットワークカードは該送信相手に対する制御情報の構造体を、ＤＭＡ転送で該メインメモリ内の構造体領域から読み出し、さらに該データキャッシュ領域又は該構造体内の該ポインタを用いて、ＤＭＡ転送で該データ領域から経路情報を読み出す。
【００１０】
また、好ましい例では、データを記憶する外部低速記録媒体が接続され、かつデータ処理するＣＰＵと、該データ領域及び該構造体領域を持つメモリを有するコンピュータシステムであって、前記ポインタは該外部低速記録媒体に記憶されるデータを指定し、かつ前記データキャッシュ領域は、該外部低速記録媒体に記憶されるデータを保持する。
【００１１】
本発明に係るアクセス制御方法は、好ましくは、複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有する記憶部内のデータに、構造体が持つポインタを用いてアクセスすることができるアクセス制御方法であって、
該構造体は、データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域を有し、
該記憶部をアクセスする時に、該構造体の該データキャッシュ領域に記憶されたデータが有効であれば、該データキャッシュ領域より該データを得、
該構造体の該データキャッシュ領域に記憶されたデータが有効でなければ、該ポインタを用いて該データ領域をアクセスしてデータを得ることを特徴とするアクセス制御方法として構成される。
【００１２】
好ましい例によれば、本発明のアクセス制御方法は、複数の該構造体を記憶する構造体領域と、データを記憶するデータ領域を有する記憶部内のデータに、構造体が持つポインタを用いてアクセスするアクセス制御方法であって、
該構造体は、データ領域に記憶されたデータを指定するポインタと、該ポインタを用いてアクセスされた該データ領域にあるデータを一時的に保持するデータキャッシュ領域と、該カウンタレジスタの値が更新される度に該カウンタレジスタの値を保持するカウンタ値を有し、
該記憶部内のデータにアクセスする時に、該ポインタが指すデータ領域内のあるデータが変更されたときにその値が更新される該カウンタレジスタの内容と、該構造体の該カウンタ値を照合し、該照合の結果に応じて、該構造体内の該データキャッシュ領域又は該ポインタによって指定されるデータ領域のデータにアクセスすることを特徴とするアクセス制御方法である。
【発明の効果】
【００１３】
本発明によれば、ポインタを備えたデータ構造を用いてメモリ内のデータに高速にアクセスすることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】ポインタを用いたデータ構造体を示す図。
【図２】一実施例におけるデータ構造体の構成とその配列、及びキャッシュの制御を示す図。
【図３】一実施例におけるデータ更新時のキャッシュ無効化を示す図。
【図４】一実施例によるコンピュータシステムの構成を示すブロック図。
【図５】一実施例における構造体の例を示す図。
【図６】一実施例による経路情報の更新時の動作を示すフローチャート。
【図７】一実施例によるネットワークカードが経路情報を使用する場合の動作を示すフローチャート。
【図８】一実施例によるコンピュータシステムにおけるデータの書込み動作を示す図。
【図９】一実施例によるコンピュータシステムにおけるデータの読出し動作を示す図。
【発明を実施するための形態】
【００１５】
以下、図面を用いて本発明の実施例を具体的に説明する。
【実施例１】
【００１６】
図２は、データ構造体の構成とその配列、及びキャッシュの制御を示す。
コンピュータシステムにおけるメインメモリ等の記憶ユニットに、複数の構造体を格納する構造体領域２１と、構造体のポインタによるアクセス先となるデータを格納するデータ領域２２が確保される。複数の各構造体２１０は例えば送信先ごとに用意される。
各構造体２１０は、データが格納されたアドレスを示すポインタ２１１、アクセスされたデータ領域のデータを保持するデータキャッシュ領域２１３、そのキャッシュデータが有効であることを示すＶビット２１２、カウンタ値２１４の各フィールドを有する。各構造体２１０は例えば６４バイトのように同じ固定長の記憶容量を持つ。また、データキャッシュ領域２１３の記憶容量は一律に例えば１６バイトの如きである。
【００１７】
最初（１回目）、構造体２１０内にデータが存在しない場合、構造体のポインタ２１１を使用して、そのポインタで指定されるデータ領域２２内のアドレスのデータを取得する。その取得したデータをデータキャッシュ領域２１３のフィールドに保存する。これにより２回目以降のデータのアクセスは、ポインタを使用せずに、構造体２１０内のキャッシュ領域２１３このフィールドからデータを読めばよいことになる。
Ｖビット２１２は、データキャッシュ領域２１３のデータが有効か否かを表す。即ち、実際のデータをデータキャッシュ領域２１３に保存するときに、Ｖビットを「1」とし、また、実際のデータが変更された場合などの理由でデータキャッシュ領域２１３の内容を無効にしたいときにＶビットを「０」とする。
【００１８】
構造体内のデータを読む側例えばプロセッサには、高速にアクセスできるカウンタレジスタ２４が用意される。カウンタ値２１４とカウンタレジスタ２４とは、構造体内のデータキャッシュ領域２１３の値と、ポインタ２１１が実際に指すメモリアドレスに対応するデータ領域２２内のデータとの一貫性を保つために必要となるものである。そのため、カウンタ値２１４とカウンタレジスタ２４の内容を比較する比較器２５が用いられる。比較器２５はハードウェアで構成するか或いはソフトウェアで用意してもよい。
ポインタが指すメモリアドレスに存在する実際のデータを変更した際、構造体２１０内のデータキャッシュ２１３の値は、古い値となり、そのデータは使ってはいけないことになる。そのため、構造体内のＶビット２１２を「０」にして、データキャッシュ２１３の内容を無効にする。
【００１９】
次に、データ領域２２内のデータとデータキャッシュ領域２１３内のデータの一貫性保持の制御、及びＶビット２１２の無効化制御について説明する。
Ｖビット２１２の無効化制御は、メモリ内に多数の構造体２１０が配列して存在している場合、それら全ての構造体２１０の要素である全てのＶビット２１２を「０」に書き換えることで行われる。しかし、全てのＶビットに「０」を書き込むには時間がかかり、コンピュータシステムの性能低下を招く。その対策として、データ領域２２の変更した実際のデータをキャッシュしている構造体のみのＶビットを「０」に書き換えることも考えられるが、全要素のポインタを手繰る必要があり、ポインタの段数が多い場合には現実的でない。
【００２０】
本実施例では、カウンタ値２１４を用いて性能の低下を回避する。その方法について以下説明する。ポインタ２１１が指すメモリアドレスに存在する実際のデータを読み、データキャッシュ領域２１３にそのデータを保存するときに、カウンタレジスタ２４の値を構造体２１０内のカウンタ値２１４に保存する。また、ポインタが指すデータ領域２２内のメモリアドレスに存在する実際のデータが変更したときには、カウンタレジスタ２４の値がインクリメントされる。構造体２１のデータキャッシュ領域２１３内のデータを用いる場合には、構造体内のカウンタ値２１４とカウンタレジスタ２４の値を比較器２５で比較し、その結果両者が一致した場合には、データキャッシュ領域内のデータは最新であると判断して、データキャッシュ領域内のデータを使用する。
【００２１】
比較の結果、両者が一致しない場合には、データキャッシュ領域２１３内のデータは古いとみなし、ポインタ２１１を使ってデータ領域２２から最新のデータを読み込み、そのデータを使用する。そして、以後のデータの使用のために、最新のデータをデータキャッシュ領域２１３に保存し、そのときのカウンタレジスタ２４の値を構造体内のカウンタ値２１４に保存する。これにより、ポインタが指すメモリアドレスに存在する実際のデータを変更した際に、構造体内のデータを無効化する必要はない。
【００２２】
しかし、データ領域２２のデータの変更回数が多い場合、カウンタのラップが起こり、構造体内のデータキャッシュが古いにも拘らず、構造体内のカウンタ値２１４とカウンタレジスタ２４の値が等しくなってしまうことがあり得る。例えば、カウンタのビット幅が５ビットの場合、カウンタ値は３２通りなので、３３回目のカウント値は一周して「０」に戻るので、前回の「０」なのか、一周した後の「０」（実際には３３に相当している）なのか、不明になり、Ｖビットの無効化制御が混乱する。
【００２３】
そこで、カウンタレジスタ２４の値が一周する前に、複数全ての構造体２１０内のデータキャッシュ領域２１３を無効にするように制御すればよい。つまり、実際のデータを更新した場合に更新した側が複数のＶビットを「０」にするように制御する。
例えば、カウンタレジスタのビット幅が５ビット、構造体のエントリ数が２５６の場合、３２通りのカウンタ値が一周する時点で全エントリを無効化制御する。図３に示すように、２５６/３２=８エントリを１回の更新で無効化制御する。これにより１回の更新で全て構造体のＶビットを「０」に書き換えて、データキャッシュ領域内のデータを無効化する必要がなくなり、性能の低下を防ぐことができる。
【実施例２】
【００２４】
図４を参照して、コンピュータシステムにおける構造体のメモリアクセス制御について説明する。
このコンピュータシステム４は、データ処理するＣＰＵ４１と、ＣＰＵにバスにより接続されるメインメモリ４２と、ＣＰＵにチップセット４３を介して接続されるネットワークカード４４を有して構成される。ネットワークカード４４はネットワーク９に接続される。メインメモリ４２には、図２に示すような、複数の構造体２１及びデータ領域２２が形成される。ネットワークカード４４内のコントローラＬＳＩ内にはハードウェアとしてカウンタレジスタ４５が用意される。
図中の点線（矢印）はＤＭＡ書き込み、ＤＭＡ読み出しのルートを表す。これらは、ＣＰＵ４１をルートとして通るが、ＣＰＵに内蔵されたメモリコントローラが処理を行うため、ＣＰＵ中の命令がＤＭＡ処理により阻害されることはない。
【００２５】
図５も参照して、構造体２１について説明する。ネットワークカード４４においてネットワーク９へ送信する場合の、送信相手に関する制御情報が構造体２１として用意される。通常、複数の送信相手が存在するので、それらの送信相手に対応して複数のエントリ分の構造体が保持される。各送信相手に対する経路情報は、制御情報を保持する構造体とは別に管理される、メインメモリ４２のデータ領域２２に格納されている。ポインタ２１１は、その経路情報が格納されているデータ領域２２のアドレスを指している。
ある送信相手へデータを送信する場合、ネットワークカード４４はその送信相手に対する制御情報の構造体２１を、ＤＭＡ転送でメインメモリ４２から読み出し、さらにその構造体内のポインタ２１１を用いて、ＤＭＡ転送でメインメモリ４２のデータ領域２２から経路情報を読み出す必要がある。ここで、構造体２１のデータキャッシュ領域２１３に経路情報を保持しておき、制御情報の構造体を読む時に、経路情報も高速にアクセスできるようにする。これにより、送信時に経路情報を読む時間を短縮することができ、送信動作の高速化が図れる。
【００２６】
次に図６を参照して、図５のコンピュータシステムにおけるＣＰＵ４１が経路情報を変更する場合の処理動作について説明する。
メインメモリ４２のデータ領域２２内に記憶されている経路情報が更新されると（Ｓ６０２）、ネットワークカード４４内のカウンタレジスタ４５がインクリメントされる（Ｓ６０３）。次に、幾つかの構造体２１中のＶビットを「０」にしてキャッシュを無効化する（Ｓ６０４）。この無効化制御の動作は前述した通りである。その後、経路情報の更新処理を終了する（Ｓ６０５）。
【００２７】
次に、図７を参照して、ネットワークカードが経路情報を使用する場合の処理について説明する。
経路情報の使用処理が開始されると（Ｓ７０１）、メインメモリ４２から制御情報の構造体２１０をＤＭＡ転送で読み出す（Ｓ７０２）。そして、Ｖビットをチェックした結果、Ｖビットが「１」であり、かつ、構造体内のカウンタ値２１４とネットワークカード４４内のカウンタレジスタ４５の値を比較して、両者の値が一致したら、データキャッシュ領域２１３内データを最新と見なして、データキャッシュ領域内のデータ（経路情報）を使用する（Ｓ７０４）。
【００２８】
一方、Ｖビットが「１」でなく、上記比較の結果、両者が一致しない場合には、データキャッシュ領域内のデータ（経路情報）は最新でないため、構造体２１０内のポインタ２１１を使用して、当該ポインタが示すメインメモリ４２のデータ領域２２のアドレスに記憶されたデータをＤＭＡ転送で読み出してそれを使用する（Ｓ７０５）。その場合、最新の経路情報は、構造体２１０内のデータキャッシュ領域２１３に保管し、同時にそのときのカウンタレジスタ４５の値を構造体２１０内のカウンタ値２１４にコピーする。併せてＶビットを「１」にする（Ｓ７０６）。その後、使用したその構造体２１０を、ＤＭＡ転送でメインメモリ４２に書き戻す（Ｓ７０７）。
【実施例３】
【００２９】
図８及び９を参照して、外部低速媒体を用いたデータ処理システムにおけるデータの書き込み及び読み出しの例について説明する。
最近、ＳＤカードや光学ドライブなどの外部低速媒体の大容量化が進み、これまでのようなＨＤＤ（ハードディスクドライブ）にＯＳ（オペレーティングシステム）を入れるだけでなく、外部低速媒体にＯＳを入れて、外部低速媒体から起動することが提唱されている。
【００３０】
例えば、図８に示すように、ＣＰＵ８１とメモリ（メインメモリ）８２を有するマイクロプロセッサのようなコンピュータ８０と、外部低速記録媒体８８とが接続されたコンピュータシステムにおいて、メモリ８２内に複数の構造体８２１を持つ。この場合、低速記憶媒体にあるポインタをたどっていくと、同じ低速記録媒体８８にデータが存在し、そのデータをアクセスする際、ＣＰＵ８１がメモリ８２にアクセスするのに比べて、非常に遅くなってしまう。
【００３１】
本発明は、ポインタと、外部低速媒体８８中のデータを保管するキャッシュ領域と、当該キャッシュ領域のデータの有効、無効を示すＶビットと、データが最新であるかどうかを示すカウンタ値を１つの構造体として構成し、この構造体をコンピュータ８０内のメモリ８２の一部に保持することによって、外部低速媒体に対するアクセスの高速化を可能とする。
【００３２】
以下、図８及び図９を参照して、データの書込み及び読出しの動作について説明する。
図８に示すように、データ書き込み時はＣＰＵ８１が外部低速媒体に直接データを書き込む（Ｓ８０１）。この時、メモリ８２内のキャッシュデータと外部低速媒体８８中のデータは異なり、それに対応するポインタのキャッシュデータは正しいデータではなくなるため、メモリ８２内キャッシュデータを使わないようにしなければならない。このような場合、ＣＰＵ８１とメモリ８２で構成されたソフトウェアカウンタ８５をインクリメントして、最新のキャッシュでないことを表す（Ｓ８０２）。
そして、ソフトウェアカウンタ８５がオーバーフローし、ラップアラウンドするため、最新のデータがキャッシュされていないにも拘らず、最新であると判定される場合がある。そのため、ソフトウェアカウンタがラップアラウンドするまでに構造体の全エントリのＶビットが無効と判定されていれば上記のケースがなくなる。これより、全エントリ/ソフトウェアカウンタの最大値＋１の分だけ構造体のＶビットを無効とする（Ｓ８０３）。
【００３３】
次に、図９のように、ポインタに対応するデータ読み込み時に、必要なポインタの構造体にキャッシュされているデータが最新かどうかを判定するために、Ｖビットが有効（１である）であり、かつ構造体の中のカウンタ値とソフトウェアカウンタ８５の値を比較して両者が一致するかをチェックする（Ｓ８０４）。チェックの結果、両者が一致した場合、最新の正しいデータがこの構造体にキャッシュされていると判断して、キャッシュされているデータを読み出す（Ｓ８０５）。
【００３４】
一方、構造体のＶビットが無効（０である）であり、または構造体の中のカウンタ値とソフトウェアカウンタの値とが一致しない場合、最新のデータがその構造体にないと判断して、構造体にあるポインタをたどって低速記録媒体からデータを読み出す（Ｓ８０５´）。
そして、低速記録媒体からデータを読み出した後、読み出したデータをキャッシュし、次回同じデータを読み出すようにする。そのために、読み出したデータを構造体のキャッシュにコピーし、ソフトウェアカウンタの値を構造体のカウンタ値にコピーする。そしてＶビットを有効にする（Ｓ８０６´）。
【符号の説明】
【００３５】
２１，２１０：構造体      ２２：データ領域                ２１１：ポインタ      
２１２：Ｖビット          ２１３：データキャッシュ領域    ２１４：カウンタ値
２４：カウンタレジスタ    ２５：比較器
４：コンピュータシステム  ４１：ＣＰＵ                  ４２：メインメモリ  
４３：チップセット        ４４：ネットワークカード      ４５：カウンタレジスタ。
【図１】
2011192012.tif 000003
【図２】
2011192012.tif 000004
【図３】
2011192012.tif 000005
【図４】
2011192012.tif 000006
【図５】
2011192012.tif 000007
【図６】
2011192012.tif 000008
【図７】
2011192012.tif 000009
【図８】
2011192012.tif 000010
【図９】
2011192012.tif 000011