(57)【要約】【課題】キャッシュメモリシステムにおいて、メインメモリに対してダイレクト・メモリ・アクセス（ＤＭＡ）により書き込みする場合、メインメモリの内容とキャッシュメモリの内容とが不一致となってプロセッサが誤動作することを防止するため、ＤＭＡライトするごとに対応するキャッシュメモリのデータを無効化（パージ）せねばならず、ＤＭＡライトするたびにパージ時間分処理が遅れてしまうという問題点があった。【解決手段】ＤＭＡ転送時に必要とされるパージ処理の方法を状況に応じて切り替えることで、従来必要とされていたパージ時間を短縮する。【選択図】図２
2005209163.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有するシステムにおける制御方法であって、
前記メインメモリへ転送されるデータ量が任意の値に達する場合、ＤＭＡ転送によって前記メインメモリ内に書き込まれたデータのアドレスに対応するキャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項２】
請求項１記載の制御方法であって、
前記メインメモリへ転送されるデータ量が任意の値に達する前に、ＤＭＡ転送にて前記メインメモリに書き込まれたデータへ前記中央処理装置からアクセス要求があった場合には、前記ＤＭＡ転送によって前記メインメモリに書き込まれたデータのアドレスに対応する前記キャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項３】
請求項１記載の制御方法であって、
前記メインメモリへ転送されるデータ量が任意の値に達する前に、ＤＭＡ転送により前記メインメモリに書き込むべきデータが全て転送された場合、ＤＭＡ転送により前記メインメモリに書き込まれたデータのアドレスに対応する前記キャッシュメモリ内のデータを全て無効化することを特徴とするメモリシステム制御方法。
【請求項４】
請求項２記載の制御方法であって、
前記メインメモリへ転送されるデータ量が任意の値に達する前及びＤＭＡ転送にて前記メインメモリに書き込まれたデータへ前記中央処理装置からアクセス要求がある前に、ＤＭＡ転送により前記メインメモリに書き込むべきデータが全て転送された場合、ＤＭＡ転送により前記メインメモリに書き込まれたデータのアドレスに対応する前記キャッシュメモリ内のデータを全て無効化することを特徴とするメモリシステム制御方法。
【請求項５】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有するシステムにおける制御方法であって、
ＤＭＡ転送にて前記メインメモリに書き込まれたデータへ前記中央処理装置からアクセス要求があった場合に、ＤＭＡ転送によって前記メインメモリに書き込まれたデータのアドレスに対応する前記キャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項６】
請求項５記載のメモリシステム制御方法であって、
ＤＭＡ転送にて前記メインメモリに書き込まれたデータへ前記中央処理装置からアクセス要求があった場合に、ＤＭＡ転送によって前記メインメモリに書き込まれたデータ量が任意の値以下ならば、前記キャッシュメモリ内のデータを無効化せず、前記中央処理装置が前記キャッシュメモリを使用せずに前記メインメモリからＤＭＡ転送によって書き込まれたデータを読み出すことを特徴とするメモリシステム制御方法。
【請求項７】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有するシステムにおける制御方法であって、
ＤＭＡ転送にて前記メインメモリに書き込まれたデータへ前記中央処理装置からアクセス要求があった場合に、前記中央処理装置からのアクセス要求があったメインメモリ内のデータのアドレスに対応する前記キャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項８】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有するシステムにおける制御方法であって、
前記メインメモリへ転送されるデータ量が前記メインメモリの記録可能容量に達する場合、ＤＭＡ転送を停止することを特徴とするメモリシステム制御方法。
【請求項９】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有するシステムにおける制御方法であって、
前記メインメモリへＤＭＡ転送されるデータ量が前記メインメモリの記録可能容量に達する場合、ＤＭＡ転送によって前記メインメモリに書き込まれたデータのアドレスに対応するキャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項１０】
請求項９記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに書き込まれたデータのアドレスに対応するキャッシュメモリ内のデータを無効化して、前記中央処理装置がＤＭＡ転送によって前記メインメモリに書き込まれたデータを読み出すことを特徴とするメモリシステム制御方法。
【請求項１１】
請求項１０記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに書き込まれたデータ量が任意の値以下ならば、前記キャッシュメモリ内のデータを無効化せず、前記中央処理装置が前記キャッシュメモリを使用せずに前記メインメモリからＤＭＡ転送によって書き込まれたデータを読み出すことを特徴とするメモリシステム制御方法。
【請求項１２】
請求項１から１１のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであることを特徴とするメモリシステム制御方法。
【請求項１３】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであり、前記メインメモリへＤＭＡ転送されるデータ量が前記任意の閾値に達する場合とは、前記メインメモリへのデータ書き込み位置が前記メインメモリの最終アドレスに達する場合であることを特徴とするメモリシステム制御方法。
【請求項１４】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであり、前記メインメモリへＤＭＡ転送されるデータ量が前記任意の閾値に達する場合とは、前記メインメモリへのデータ書き込み位置が前記メインメモリの最終アドレスから先頭アドレスへ移動した場合であることを特徴とするメモリシステム制御方法。
【請求項１５】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであり、前記メインメモリへＤＭＡ転送されるデータ量が前記任意の閾値に達する場合とは、前記メインメモリへのデータ書き込み位置が前記メインメモリに記録されていて読み出されていないデータの先頭アドレスに達する場合であることを特徴とするメモリシステム制御方法。
【請求項１６】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであり、前記メインメモリへＤＭＡ転送されるデータ量が前記任意の閾値に達する場合とは、前記メインメモリへのデータ書き込み位置がＤＭＡ転送により前記メインメモリへのデータ書き込み開始アドレスに達する場合であることを特徴とするメモリシステム制御方法。
【請求項１７】
請求項８から１１のいずれか記載のメモリシステム制御方法であって、
前記メインメモリはリングバッファのＦＩＦＯメモリであり、前記メインメモリへＤＭＡ転送されるデータ量が前記メインメモリの記録可能容量に達する場合とは、前記メインメモリに転送されるデータが前記メインメモリに書き込まれているデータの先頭のアドレスに達する場合であることを特徴とするメモリシステム制御方法。
【請求項１８】
請求項１から１７のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータは一または複数の一塊のデータから構成されていることを特徴とするメモリシステム制御方法。
【請求項１９】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータは一または複数の一塊のデータから構成されており、前記任意の値は前記一塊のデータのデータ量であることを特徴とするメモリシステム制御方法。
【請求項２０】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータは一または複数の一塊のデータから構成されており、前記任意の値は任意の前記一塊のデータ数のデータ量であることを特徴とするメモリシステム制御方法。
【請求項２１】
請求項１から１７のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータはセクション形式であることを特徴とするメモリシステム制御方法。
【請求項２２】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータはセクション形式であり、前記任意の値は１セクションのデータ量であることを特徴とするメモリシステム制御方法。
【請求項２３】
請求項１から４のいずれか記載のメモリシステム制御方法であって、
ＤＭＡ転送によって前記メインメモリに転送されるデータはセクション形式であり、前記任意の値は任意のセクション数のデータ量であることを特徴とするメモリシステム制御方法。
【請求項２４】
請求項２記載のメモリシステム制御方法であって、
前記中央処理装置は前記メインメモリ内のアクセス要求したデータを含む所定のアドレス幅を持つ一または複数のブロックで読み出し、前記中央処理装置が前記一または複数のブロックを読み出す前に前記一または複数のブロックの領域に対応するキャッシュメモリ内のデータを無効化することを特徴とするメモリシステム制御方法。
【請求項２５】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有し、前記中央処理装置が前記メインメモリに対して所定のブロック単位でデータ読出しするシステムにおける制御方法であって、
ＤＭＡ転送により前記メインメモリに書き込まれたデータに対し前記中央処理装置がアクセス要求をするアクセス要求工程と、
前記中央処理装置によってアクセス要求された前記メインメモリ内のデータを含む全ての前記所定のブロックの領域に対応する前記キャッシュメモリ内のデータを無効化する無効化工程と、
前記メインメモリ内の前記第一のデータを含む全ての前記所定のブロックの領域のデータを前記中央処理装置が読み出す読み出し工程を備えることを特徴とするメモリシステム制御方法。
【請求項２６】
中央処理装置とキャッシュメモリとメインメモリを備え、前記メインメモリへのＤＭＡ転送機能を有し、前記中央処理装置が前記メインメモリに対して所定アドレス幅を持つブロック単位でデータ読出しするシステムにおける制御方法であって、
前記メインメモリ内に記録されている第一のデータを含む一または複数のブロックで前記中央処理装置が読み出す第一読み出し工程と、
前記第一のデータを前記キャッシュメモリに格納する格納工程と、
前記格納工程の後、ＤＭＡ転送により前記メインメモリに第二のデータを書き込む書き込み工程と、
前記第二のデータを一または複数のブロックで前記中央処理装置が読み出す第二読み出し工程とを備え、
前記第二読み出し工程において前記一または複数のブロック内に前記第一のデータの一部または全部を含むブロックがある場合、前記第二読み出し工程にて読み出した前記メインメモリ内のブロックに対応する前記キャッシュメモリ内のアドレスを全て無効化することを特徴とするメモリシステム制御方法。
【請求項２７】
請求項２４から請求項２６のいずれか記載のメモリシステム制御方法であって、前記ブロックはキャッシュブロックであることを特徴とするメモリシステム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリとメインメモリ、メインメモリに対するＤＭＡ制御を行うＤＭＡコントローラを有するプロセッサシステムにおける、メモリアドレッシング制御に関する。
【背景技術】
【０００２】
従来プロセッサの高速化を図るための手法として、メインメモリからデータプログラム等を読み出すために、プロセッサの近傍にメインメモリに対して小容量で高速アクセス可能なメモリ（キャッシュメモリ）を設け、メインメモリのデータプログラム等の一部をそのキャッシュメモリに格納して高速にデータプログラム等にアクセスするキャッシュメモリシステムが普及している。
【０００３】
このようなキャッシュメモリシステムでは、キャッシュメモリにはメインメモリ内のデータの一部を読み込んでおき、そのキャッシュメモリに読み込んでおかれたデータの一部がメインメモリのどのアドレスに格納されているかを管理することを行っているので、プロセッサは所望のデータを読み出す場合に、そのデータがキャッシュメモリに存在する場合には、キャッシュメモリから所望のデータを取得することができる。図１０にメインメモリ内のデータとキャッシュメモリ内のデータとの関係を示す。メインメモリ（ａ）内のデータの一部がキャッシュメモリ（ｂ）内に格納されており、プロセッサ・ユニット若しくは専用のアドレス管理手段がキャッシュメモリ（ｂ）内のデータがメインメモリ内のどのアドレスに対応するデータであるかを管理している。このようなシステムを利用すれば、メインメモリからデータを読み込む場合に比べ、高速なデータアクセスが実現できる。このようにキャッシュメモリに格納しておくデータとしては、プロセッサが頻繁に取得するデータ、例えば頻繁に実行するプログラムデータ等が挙げられる。
【０００４】
また、キャッシュメモリとして、一次キャッシュメモリと一次キャッシュメモリよりは大容量でアクセスが低速になる二次キャッシュメモリとを備えたシステムもあり、このシステムでは、一次キャッシュメモリには最もアクセス頻度の高いデータを格納し、二次キャッシュメモリには比較的アクセス頻度の高いデータを格納するという使用の仕方ができる。また一次キャッシュメモリ、二次キャッシュメモリだけでなく、三次キャッシュメモリをさらに搭載するシステム等もある。
【０００５】
また、外部インターフェースから転送されるデータをプロセッサを介さずに、直接メインメモリに転送するダイレクト・メモリ・アクセス（ＤＭＡ）制御が普及している。この制御を行うためのＤＭＡコントローラを備えることで、プロセッサの負荷を減らすことができ、また外部機器との高速なデータ転送を可能にすることで、外部インターフェースのパフォーマンスを向上させることができる。
【０００６】
このようなＤＭＡ転送コントローラを備えたキャッシュメモリシステムについては特許文献特開平５−３０７５１８号公報等に記載されており、以下にその構成図と動作について説明する。
【０００７】
図８は、従来のＤＭＡコントローラを備えたキャッシュメモリシステムを表す図である。図８において、１０１はこのシステムのＣＰＵ（中央処理装置）であり、ＣＰＵ１０１にはバスを介してキャッシュメモリ１０２とバスインタフェースバッファ１０３が直接接続される。これらのデバイスにはＣＰＵ１０１は高速にアクセスすることができる。また、バスインタフェースバッファ１０３を介してメインメモリ１０４及びシステムの外部に接続されるＩ／Ｏ１０５などが接続される。また、Ｉ／Ｏ１０５を介して転送されるデータをメインメモリ１０４に転送するための制御をＤＭＡコントローラ１０６が行う。
【０００８】
ＣＰＵ１０１がデータの書き込みを実行する場合には、キャッシュメモリ１０２及びバスインタフェースバッファ１０３へ書き込み命令を送信し、キャッシュメモリ１０２には高速にデータの書き込みが行われる。一方バスインタフェースバッファ１０３には、書き込み命令と書き込みデータをラッチするためのライトバッファが内蔵されており、メインメモリ１０４へのアクセスタイミングに応じて書き込みデータをメインメモリ１０４に書き込むことができ、ＣＰＵ１０１はメインメモリ１０４へのアクセス速度に動作を合わせる必要がなく、高速動作を可能にしている。
【０００９】
ＣＰＵ１０１がデータの読み込みを実行する場合には、読み出し命令をバスインタフェースバッファ１０３へ送信し、バスインタフェースバッファ１０３に内蔵されるリードバッファにて命令をラッチし、メインメモリ１０４へのアクセスタイミングに応じて読み出し命令をメインメモリ１０４へ送信し、メインメモリ１０４からデータの読み出しを実行する。メインメモリ１０４から読み出されたデータはバスインタフェースバッファ１０３内のリードバッファを経由してＣＰＵ１０１へと送信される。
【００１０】
また、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送を行う場合、ＤＭＡコントローラ１０６は、ＣＰＵ１０１やバスインタフェースバッファ１０３等のバスマスタへ対して、動作をホールドさせるためのホールド信号を送信する。このホールド信号を受け、ＣＰＵ１０１及びバスインタフェースバッファ１０３がホールド確認信号をＤＭＡコントローラ１０６へ返送することで、ＤＭＡコントローラ１０６はＤＭＡ転送を開始する。
【００１１】
ＤＭＡ転送が行われると、メインメモリ１０４のデータが書き換えられるが、これによってメインメモリ１０４内のデータと、メインメモリ１０４のデータに対応したキャッシュメモリ１０２内のデータが不一致になってしまう。そのため、ＣＰＵ１０１は正確なデータのアクセスが不可能になってしまう。それを解消するために、ＤＭＡ転送されたデータが書き込まれたメインメモリ１０４のアドレスを管理するアドレス管理手段１０７と、アドレス管理手段１０７により指定されるメインメモリ１０４内のデータが書き換わったアドレスに対応しているキャッシュメモリ１０２内のデータを無効化（パージ）するための無効化手段１０８を備えている。その結果、メインメモリ１０４内の書き換わったデータと、キャッシュメモリ１０２内に格納されているメインメモリ１０４内の書き換わる前のデータの不一致を防ぐことができる。
【特許文献１】特開平５−３０７５１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記のＤＭＡ転送機能を備えたキャッシュメモリシステムによれば、ＤＭＡ転送によるメインメモリ内の書き換わったデータと、キャッシュメモリ内のメインメモリの書き換わる前のデータとの不一致を防ぐことができ、ＣＰＵは正確にデータの読み出しを実行することができる。しかしながら、従来のこのような方法において、ＤＭＡ転送によってメインメモリの書き換わったデータに対して、ＣＰＵからのデータ読み出し要求がないにも関わらず、ＤＭＡ転送の都度、ある一定の単位でキャッシュメモリ内の対応するデータのパージを実行していた。例えば、ＤＭＡ転送データ単位がバイト（８ビット）ならば１バイト転送される度に、ハーフワード（１６ビット）ならば１ハーフワード転送される度に、ワード（３２ビット）ならば、１ワード転送される度に無効化の処理が行われる。
【００１３】
図８のＤＭＡ転送機能を有するキャッシュメモリシステムにおいて、ＤＭＡ転送データ単位がバイトである場合の、ＤＭＡ転送開始から終了までの処理フローを図９に示す。ＤＭＡ転送要求が発生すると、前述したように、ＤＭＡコントローラ１０６はＣＰＵ１０１及びバスインタフェースバッファ１０３の動作をホールドし、ＤＭＡ転送制御を開始する（Ｓ９０１）。ＤＭＡコントローラはＩ／Ｏ１０５及びメインメモリ１０４を制御して、Ｉ／Ｏ１０５を介して転送されてくるデータをメインメモリ１０４へ格納する（Ｓ９０２）。メインメモリ１０４へ転送されるデータがＤＭＡ転送単位である１バイトに達すると（Ｓ９０５）、ＤＭＡ転送によって、メインメモリ１０４内のデータが書き換わったアドレスに対応するキャッシュメモリ１０２内のデータを、アドレス管理手段１０７及び無効化手段１０８によって無効化する（Ｓ９０６）。
【００１４】
Ｓ９０２からＳ９０５の処理の間に、ＤＭＡ転送によって転送すべきデータが全てメインメモリ１０４へ転送完了となると（Ｓ９０３）、ＤＭＡ転送終了となる（Ｓ９０７）。
【００１５】
また、ＤＭＡ転送処理中にＣＰＵ１０１からリード命令が発生した場合にも（Ｓ９０４）、ＤＭＡコントローラ１０６はＤＭＡ転送を中断する（Ｓ９０７）。一方、ＤＭＡ転送によるデータ転送が完了してなく、ＣＰＵ１０１からのリード要求等もない場合には、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送を継続し、Ｓ９０２からＳ９０６の処理を実行する。
【００１６】
以上のような従来の処理では、ＤＭＡ転送データ単位のデータがメインメモリに書き込まれる度にキャッシュメモリの無効化を行うため、ＤＭＡコントローラの処理効率の悪化を招き、処理工数や処理時間の増加という問題が生じてしまう。
【課題を解決するための手段】
【００１７】
本発明は、上記の問題を鑑みて、ＤＭＡ転送機能を有したキャッシュメモリシステムにおいてより処理効率を上げ、処理工数や処理時間を削減することを目的としたものである。本発明では、ＤＭＡ転送データ単位のデータがメインメモリに転送される度にキャッシュメモリ内の対応する無効化処理を実行するのではなく、ＤＭＡ転送によって転送され、メインメモリに書き込まれるデータ量がある任意の量に達することで、若しくはＤＭＡ転送されるデータがメインメモリの書き込み容量に達することでキャッシュメモリ内の対応するデータの無効化処理を実行する。
【００１８】
また他の手法として、メインメモリにＤＭＡ転送されるデータの大きさによって、キャッシュメモリ内のデータを無効化して、ＣＰＵがＤＭＡ転送さてきたデータに対しキャッシュメモリを使用したデータアクセスを実行するか、キャッシュメモリ内のデータの無効化を行わずに、ＣＰＵがＤＭＡ転送されてきたデータに対しキャッシュメモリを使用せずに、メインメモリにのみデータアクセスを実行するかを切り替える。ＤＭＡ転送されるデータがある大きさ以下であるならば、キャッシュメモリを使用せずに、メインメモリのみへデータアクセスしてもシステムとしての処理効率の大きな低下にはならず、キャッシュメモリの無効化処理を削減することができるので、結果的にシステムの処理効率を向上することができる。
【発明の効果】
【００１９】
本発明によれば、ＤＭＡ転送機能を有するキャッシュメモリシステムにおいて、従来のキャッシュメモリ内のデータの無効化手法と比較して、キャッシュメモリ内のデータの無効化処理回数を大幅に削減できる。特にＤＭＡ転送によって転送されるデータの量が大きいシステムにおいては、本発明の効果がより発揮される。
【発明を実施するための最良の形態】
【００２０】
本発明では、従来技術の図８に示したキャッシュメモリシステムにおいて、さらに無効化手段を制御して、ＤＭＡ転送によって書き換えられたメインメモリ内のデータに対応するキャッシュメモリ内のデータの無効化するタイミング等を切り替える無効化制御手段をさらに有することを特徴とする。図１に無効化制御手段を有するキャッシュメモリシステムを示す。図１において、図８に示す構成と同様の機能を有するものには同じ符号を付している。このキャッシュメモリシステムでは、無効化制御手段がアドレス管理手段が有するアドレス情報に基づき無効化手段を制御するものである。アドレス管理手段は、ＤＭＡコントローラからＤＭＡ転送によって書き換えられるメインメモリ内のデータアドレス等が送られ、メインメモリ内のデータのアドレス管理を行っている。以下に、無効化制御手段が実行する制御方法を含めて、図１に示すキャッシュメモリシステムの制御について、各実施の形態の中で説明する。
【００２１】
(第一の実施の形態)
図２は、本発明の第一の実施の形態にかかる制御方法の概略を示すものであり、ＤＭＡ転送開始からＤＭＡ転送終了までの中で処理内容を表したフローチャート図である。以下にその動作を説明する。
【００２２】
まずＤＭＡ転送要求が発生すると、ＤＭＡコントローラ１０６は、ＣＰＵ１０１やバスインタフェースバッファ１０３等のバスマスタへ対して、動作をホールドさせるためのホールド信号を送信する。このホールド信号を受け、ＣＰＵ１０１及びバスインタフェースバッファ１０３がホールド確認信号をＤＭＡコントローラ１０６へ返送することで、ＤＭＡコントローラ１０６はＤＭＡ転送を開始する（Ｓ２０１）。ＤＭＡコントローラ１０６はＩ／Ｏ１０５を介して転送されてくるデータをメインメモリに転送し、メインメモリへデータを書き込んでいく（Ｓ２０２）。
【００２３】
この間に、ＤＭＡ転送による転送データが全て転送完了となった場合（Ｓ２０３）、ＤＭＡコントローラは無効化手段を制御して、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータの無効化を実行する（Ｓ２０４）。そしてＤＭＡコントローラ１０６はＤＭＡ転送を終了し、ＣＰＵ１０１及びバスインタフェースバッファ１０３にＤＭＡ転送の終了を通知する（Ｓ２０５）。
【００２４】
なお、Ｓ２０４におけるキャッシュメモリ１０２内のデータの無効化処理は、この段階で行わなくてもよく、Ｓ２０５のＤＭＡ転送終了後に、ＣＰＵ１０１からのデータアクセスが発生したときに、キャッシュメモリ１０２内のデータを無効化することも可能である。
【００２５】
ＤＭＡ転送が継続され（Ｓ２０３）、その間にＣＰＵ１０１からのデータアクセス命令が発生した場合（Ｓ２０６）、ＣＰＵ１０１はＤＭＡコントローラ１０６へホールド信号を通知し、ＤＭＡコントローラ１０６はそのホールド信号に従い、ＤＭＡ転送を中断する。
【００２６】
なお、このＣＰＵ１０１の割り込みに対しては、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せずに、ＣＰＵ１０１の割り込みを許可しないことも可能である。ＣＰＵ１０１のリード処理とＤＭＡ転送処理の優先度に応じて、優先度の高い処理が優先されて実行することができる。ＤＭＡ転送が中断された場合には、無効化制御手段１０９に設定される閾値との比較を行い（Ｓ２０８）、書き換えられたデータ量が閾値以下ならば、ＣＰＵ１０１はキャッシュメモリ１０２を使用してデータアクセスを行わず、メインメモリ１０４にのみデータアクセスする（Ｓ２０９）。書き換えられたデータ量が閾値以上ならば、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータを無効化する（Ｓ２１０）。
【００２７】
なおＳ２１０の無効化処理は、ＣＰＵ１０１が読み出すメインメモリ内のデータのアドレスに対応するキャッシュメモリ１０２内のデータについてのみ無効化する処理でも構わない。キャッシュメモリ１０２内のデータの無効化が行われると、ＣＰＵ１０１はキャッシュメモリ１０２を使用してメインメモリ１０４へのデータアクセスを行う（Ｓ２１１）。この設定された閾値とＤＭＡ転送によるメインメモリ１０４へのデータ書き込み量の比較結果に応じて、キャッシュメモリ１０２を使用してアクセスするかどうかを切り替えることによって、システムとしての処理数を軽減することができる。すなわち、ＤＭＡ転送によるデータ量が大きくなければ、あえてキャッシュメモリ１０２内のデータの無効化を実行せず、メインメモリ１０４へのみデータアクセスする方が、結果的に処理速度が速くなるのである。この閾値は、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、または設計段階等にて決定することができる。Ｓ３１０若しくはＳ３１１にてＣＰＵ１０１がデータアクセスを終了すると、ＣＰＵはＤＭＡコントローラ１０６に対して、ホールド解除信号を通知し、ＤＭＡコントローラ１０６は再度ＤＭＡ転送制御を開始する（Ｓ２１２）。
【００２８】
ＤＭＡ転送が継続されると（Ｓ２０３）、アドレス管理手段１０７はＤＭＡ転送によりメインメモリ１０４内に書き込まれていくデータのアドレスを更新していくが、無効化制御手段１０９ではこのメインメモリ内に書き込まれていくデータの量に対して、任意の閾値を設定している。無効化制御手段１０９は、ＤＭＡ転送により書き込まれるメインメモリ１０４内のデータがこの任意の閾値以上になった場合（Ｓ２１３）、その都度メインメモリ１０４内の書き換わったデータに対応するキャッシュメモリ１０２内のデータを無効化していく（Ｓ２１４）。
【００２９】
上記閾値は、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、又は設計段階等にて決定することができる。また、この閾値を、メインメモリ１０４内の記録可能な残りの領域の全容量と設定することも可能であり、この場合キャッシュメモリ１０２内の無効化処理の処理数を最大限少なくすることができる。また、メインメモリ１０４の記録可能な領域は、ＣＰＵ１０１からの読み出し等があると変更されるので、ＣＰＵ１０１からの読み出しがある度に変更し直すことが可能である。
【００３０】
なおキャッシュメモリ１０２内のデータの無効化処理については、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するデータがキャッシュメモリ１０２内に存在しなければ、無効化処理を実行しないように、無効化制御手段１０９にて切り替え制御を行うことも可能である。
【００３１】
また、ＤＭＡコントローラ１０６の制御によるＤＭＡ転送処理とＣＰＵ１０１によるメモリアクセス処理は必ずしも排他的な関係になるわけではなく、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送とＣＰＵ１０１からのメインメモリ１０４へのデータアクセスは同時に実行できるシステムにおいては、本実施の形態で説明したような、ＣＰＵ１０１からのデータアクセス命令が発生した場合でも、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せず、ＤＭＡ転送を継続しつつ、ＣＰＵ１０１がメインメモリ１０４へのデータアクセスを実行できる。
【００３２】
また、メインメモリ１０４にＤＭＡ転送されてきたが、既にＣＰＵ１０１からアクセス済みのデータや、不要と判断されるデータが書き込まれているアドレスに対しては、ＤＭＡ転送によってデータを上書きしていくことができる。
【００３３】
本実施の形態によれば、従来ＤＭＡ転送データ単位ごとにキャッシュメモリ内のデータの無効化処理を実行していたのに対し、メインメモリへのＤＭＡ転送データが設定された閾値に到達する度に、キャッシュメモリ内のデータの無効化処理を実行するので、無効化処理の処理数を削減することができる。例えば、ＤＭＡ転送データ単位が１バイトであるシステムにおいて、従来では１バイト単位でキャッシュメモリ内のデータを無効化していたが、本発明にて無効化制御手段に設定される閾値を１０バイトとすれば、無効化処理を１／１０に削減することができる。また、閾値をメインメモリ内の記録可能な領域の容量とすることで、メインメモリを最大限有効活用して、キャッシュメモリ内の無効化処理を少なくすることも可能である。
【００３４】
また、ＤＭＡ転送によるメインメモリ内の書き換わったデータが閾値に満たない場合でも、ＣＰＵからのデータアクセスに先立って、キャッシュメモリ内のデータの無効化処理を実行するので、洩れなく無効化することができる。
【００３５】
（第二の実施の形態）
次に、本発明の第二の実施の形態について説明する。図３は、本実施の形態に係る制御方法のＤＭＡ転送開始からＤＭＡ転送終了までの概略を示すフローチャート図である。以下にその動作について説明する。
【００３６】
まずＤＭＡ転送要求が発生すると、ＤＭＡコントローラ１０６は、ＣＰＵ１０１やバスインタフェースバッファ１０３等のバスマスタへ対して、動作をホールドさせるためのホールド信号を送信する。このホールド信号を受け、ＣＰＵ１０１及びバスインタフェースバッファ１０３がホールド確認信号をＤＭＡコントローラ１０６へ返送することで、ＤＭＡコントローラ１０６はＤＭＡ転送を開始する（Ｓ３０１）。
【００３７】
ＤＭＡコントローラ１０６はＩ／Ｏ１０５を介して転送されてくるデータをメインメモリ１０４に転送し、メインメモリ１０４へデータを書き込んでいく（Ｓ３０２）。この間に、ＤＭＡ転送による転送データが全て転送完了となった場合（Ｓ３０３）や、ＤＭＡ転送によってメインメモリ１０４へ転送されるデータの量がメインメモリ１０４の書き込み可能容量に達した場合（Ｓ３０４）、無効化制御手段１０９は無効化手段１０８を制御して、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータの無効化を実行する（Ｓ３０５）。そしてＤＭＡコントローラ１０６はＤＭＡ転送を終了し、ＣＰＵ１０１及びバスインタフェースバッファ１０３にＤＭＡ転送の終了を通知する（Ｓ３０６）。
【００３８】
なお、Ｓ３０５におけるキャッシュメモリ１０２内のデータの無効化処理は、この段階で行わなくてもよく、Ｓ３０６のＤＭＡ転送終了後に、ＣＰＵ１０１からのデータアクセスが発生したときに、キャッシュメモリ１０２内のデータを無効化することも可能である。またＳ３０４で、メインメモリへのＤＭＡ転送データ量がメインメモリ内の書き込み可能容量に達した場合に、Ｓ３０６のＤＭＡ転送終了に移行するが、ＣＰＵ１０１がメインメモリ１０４へデータアクセスした後、すぐにＤＭＡ転送を再開するという制御も可能である。
【００３９】
ＤＭＡ転送が継続され（Ｓ３０３、Ｓ３０４）、その間にＣＰＵ１０１からのデータアクセス命令が発生した場合（Ｓ３０７）、ＣＰＵ１０１はＤＭＡコントローラ１０６へホールド信号を通知し、ＤＭＡコントローラ１０６はそのホールド信号に従い、ＤＭＡ転送を中断する。なお、このＣＰＵ１０１の割り込みに対しては、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せずに、ＣＰＵ１０１の割り込みを許可しないことも可能である。ＣＰＵ１０１のリード処理とＤＭＡ転送処理の優先度に応じて、優先度の高い処理が優先されて実行することができる。
【００４０】
ＤＭＡ転送が中断された場合には、ＤＭＡ転送によってメインメモリ１０４に書き換えられたデータの量と、無効化制御手段１０９に設定される閾値との比較を行い（Ｓ６０９）、書き換えられたデータ量が閾値以下ならば、ＣＰＵ１０１はキャッシュメモリ１０２を使用してデータアクセスを行わず、メインメモリ１０４にのみデータアクセスする（Ｓ３１０）。書き換えられたデータ量が閾値以上ならば、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータを無効化する（Ｓ３１１）。
【００４１】
なおＳ３１１の無効化処理は、ＣＰＵ１０１が読み出すメインメモリ内のデータのアドレスに対応するキャッシュメモリ１０２内のデータについてのみ無効化する処理でも構わない。キャッシュメモリ１０２内のデータの無効化が行われると、ＣＰＵ１０１はキャッシュメモリ１０２を使用してメインメモリ１０４へのデータアクセスを行う（Ｓ３１２）。
【００４２】
この設定された閾値とＤＭＡ転送によるメインメモリ１０４へのデータ書き込み量の比較結果に応じて、キャッシュメモリ１０２を使用してアクセスするかどうかを切り替えることによって、システムとしての処理数を軽減することができる。すなわち、ＤＭＡ転送によるデータ量が大きくなければ、あえてキャッシュメモリ１０２内のデータの無効化を実行せず、メインメモリ１０４へのみデータアクセスする方が、結果的に処理速度が速くなるのである。
【００４３】
この閾値は、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、または設計段階等にて決定することができる。
【００４４】
Ｓ３１０若しくはＳ３１１にてＣＰＵ１０１がデータアクセスを終了すると、ＣＰＵはＤＭＡコントローラ１０６に対して、ホールド解除信号を通知し、ＤＭＡコントローラ１０６は再度ＤＭＡ転送制御を開始する（Ｓ３１３）。
【００４５】
なお、キャッシュメモリ１０２内のデータの無効化処理については、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するデータがキャッシュメモリ１０２内に存在しなければ、無効化処理を実行しないように、無効化制御手段１０９にて切り替え制御を行うことも可能である。
【００４６】
また、ＤＭＡコントローラ１０６の制御によるＤＭＡ転送処理とＣＰＵ１０１によるメモリアクセス処理は必ずしも排他的な関係になるわけではなく、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送とＣＰＵ１０１からのメインメモリ１０４へのデータアクセスは同時に実行できるシステムにおいては、本実施の形態で説明したような、ＣＰＵ１０１からのデータアクセス命令が発生した場合でも、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せず、ＤＭＡ転送を継続しつつ、ＣＰＵ１０１がメインメモリ１０４へのデータアクセスを実行できる。
【００４７】
また、メインメモリ１０４にＤＭＡ転送されてきたが、既にＣＰＵ１０１からアクセス済みのデータや、不要と判断されるデータが書き込まれているアドレスに対しては、ＤＭＡ転送によってデータを上書きしていくことができる。
【００４８】
本実施の形態によれば、従来ＤＭＡ転送データ単位ごとにキャッシュメモリ内のデータの無効化処理を実行していたのに対し、ＣＰＵからリード要求が発生することで、キャッシュメモリ内のデータの無効化処理を実行するので、無効化処理の処理数を削減することができる。例えば、ＤＭＡ転送データ単位が１バイトであるシステムにおいて、従来では１バイト単位でキャッシュメモリ内のデータを無効化していたが、本発明にてＤＭＡ転送が行われている間にＣＰＵからのデータアクセスが発生する頻度が、ＤＭＡ転送データ量約１０バイトで１回であるならば、無効化処理を１／１０に削減することができる。
【００４９】
（第三の実施の形態）
次に、本発明の第三の実施の形態について説明する。本実施の形態では、第一の実施の形態において、キャッシュメモリシステムのメインメモリをリングバッファのＦＩＦＯ（先入れ先出し）メモリとしたものである。したがって、図１におけるメインメモリ１０１は、以下リングバッファのＦＩＦＯメモリとして扱う。
【００５０】
図５はメインメモリ１０４内のアドレス状態を表す図である。また本実施の形態の制御方法の概略は第一の実施の形態と同様であり、図２に示すフローチャート図と図１、及び図５を用いて本実施の形態について説明する。
【００５１】
まず、ＤＭＡ転送要求が発生すると、ＤＭＡコントローラ１０６は、ＣＰＵ１０１やバスインタフェースバッファ１０３等のバスマスタへ対して、動作をホールドさせるためのホールド信号を送信する。このホールド信号を受け、ＣＰＵ１０１及びバスインタフェースバッファ１０３がホールド確認信号をＤＭＡコントローラ１０６へ返送することで、ＤＭＡコントローラ１０６はＤＭＡ転送を開始する（Ｓ２０１）。ＤＭＡコントローラ１０６はＩ／Ｏ１０５を介して転送されてくるデータをメインメモリ１０４に転送し、メインメモリ１０４へデータを書き込んでいく（Ｓ２０２）。
【００５２】
このときのＦＩＦＯメモリであるメインメモリへのデータの書き込み状態を図５を用いて説明する。Ａ１はＤＭＡ転送によって転送されたデータがメインメモリ１０４へ書き込み開始されるアドレスを表している。メインメモリ１０４内にデータが記録されていなければ、メインメモリ１０４の先頭アドレスをアドレスＡ１として、メインメモリ１０４の先頭アドレスから書き込みが可能である。ＤＭＡ転送されてくるデータはアドレスＡ１から順次メインメモリ１０４に書き込まれていくが、Ａ２は順次書き込まれていくデータの任意の時点におけるデータの書き込み位置を表すアドレスである。ＦＩＦＯメモリにおいてアドレスＡ２はＤＭＡ転送データが書き込まれていくことで、ＦＩＦＯメモリの最終アドレスに近づくが、アドレスＡ２がこの最終アドレスに達した場合、ＦＩＦＯメモリの先頭アドレスからデータの書き込みが行われる。なお、このようにデータを書き込んでいく領域は書き込み可能領域でなければならず、この書き込み可能領域は元から記録されていたデータが読み出されるなどで増やすことができる。したがって、後述するがＤＭＡ転送中にＣＰＵ１０１によるデータの読み出しの割り込みが行われ、若しくは平行してＣＰＵ１０１によるデータの読み出しが行われると、データ書き込み可能領域は増加する。これらのアドレスＡ１、Ａ２はアドレス管理手段にて管理されている。
【００５３】
このようにデータが順次メインメモリ１０４に書き込まれている間に、ＤＭＡ転送による転送データが全て転送完了となった場合（Ｓ２０３）、無効化制御手段１０９は無効化手段１０８を制御して、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータの無効化を実行する（Ｓ２０４）。そしてＤＭＡコントローラ１０６はＤＭＡ転送を終了し、ＣＰＵ１０１及びバスインタフェースバッファ１０３にＤＭＡ転送の終了を通知する（Ｓ２０５）。
【００５４】
なお、Ｓ２０４におけるキャッシュメモリ１０２内のデータの無効化処理は、この段階で行わなくてもよく、Ｓ５０５のＤＭＡ転送終了後に、ＣＰＵ１０１からのデータアクセスが発生したときに、キャッシュメモリ１０２内のデータを無効化することも可能である。
【００５５】
ＤＭＡ転送が継続され（Ｓ２０３）、その間にＣＰＵ１０１からのデータアクセス命令が発生した場合（Ｓ２０６）、ＣＰＵ１０１はＤＭＡコントローラ１０６へホールド信号を通知し、ＤＭＡコントローラ１０６はそのホールド信号に従い、ＤＭＡ転送を中断する。
【００５６】
なお、このＣＰＵ１０１の割り込みに対しては、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せずに、ＣＰＵ１０１の割り込みを許可しないことも可能である。ＣＰＵ１０１のリード処理とＤＭＡ転送処理の優先度に応じて、優先度の高い処理が優先されて実行することができる。ＤＭＡ転送が中断された場合には、無効化制御手段１０９に設定される閾値との比較を行い（Ｓ２０８）、書き換えられたデータ量が閾値以下ならば、ＣＰＵ１０１はキャッシュメモリ１０２を使用してデータアクセスを行わず、メインメモリ１０４にのみデータアクセスする（Ｓ２０９）。
【００５７】
書き換えられたデータ量が閾値以上ならば、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータを無効化する（Ｓ２１０）。なおＳ２１０の無効化処理は、ＣＰＵ１０１が読み出すメインメモリ内のデータのアドレスに対応するキャッシュメモリ１０２内のデータについてのみ無効化する処理でも構わない。キャッシュメモリ１０２内のデータの無効化が行われると、ＣＰＵ１０１はキャッシュメモリ１０２を使用してメインメモリ１０４へのデータアクセスを行う（Ｓ２１１）。この設定された閾値とＤＭＡ転送によるメインメモリ１０４へのデータ書き込み量の比較結果に応じて、キャッシュメモリ１０２を使用してアクセスするかどうかを切り替えることによって、システムとしての処理数を軽減することができる。すなわち、ＤＭＡ転送によるデータ量が大きくなければ、あえてキャッシュメモリ１０２内のデータの無効化を実行せず、メインメモリ１０４へのみデータアクセスする方が、結果的に処理速度が速くなるのである。
【００５８】
この閾値は、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、または設計段階等にて決定することができる。
【００５９】
Ｓ３１０若しくはＳ３１１にてＣＰＵ１０１がデータアクセスを終了すると、ＣＰＵはＤＭＡコントローラ１０６に対して、ホールド解除信号を通知し、ＤＭＡコントローラ１０６は再度ＤＭＡ転送制御を開始する（Ｓ２１２）。
【００６０】
ＤＭＡ転送が継続されると（Ｓ２０３）、アドレス管理手段１０７はＤＭＡ転送によりメインメモリ１０４内に書き込まれていくデータのアドレスを更新していくが、無効化制御手段１０９ではこのメインメモリ１０４内に書き込まれていくデータの量に対して、任意の閾値を設定している。無効化制御手段１０９は、ＤＭＡ転送により書き込まれるメインメモリ１０４内のデータがこの任意の閾値に達した場合（Ｓ２１３）、その都度メインメモリ１０４内の書き換わったデータに対応するキャッシュメモリ１０２内のデータを無効化していく（Ｓ２１４）。
【００６１】
以下に、この閾値の設定パターンについて図５を用いてより詳細に説明する。Ａ３は無効化制御手段１０９に設定される閾値を定めるアドレスである。任意の時点での書き込み位置を表すアドレスＡ２がアドレスＡ３に達することで、ＤＭＡ転送によってメインメモリ１０４へ書き込まれるデータが閾値に達すると判断する。このアドレスＡ３の設定の仕方についてさらに説明する。
【００６２】
ＤＭＡ転送開始時において、アドレスＡ３の設定のパターンについて説明する。
【００６３】
まず、（１）アドレスＡ３を、ＤＭＡ転送によるメインメモリ１０４への書き込み開始位置であるアドレスＡ１からメインメモリ１０４の最終アドレスの間の任意のアドレスとして定める場合がある。
【００６４】
この場合、現在の書き込み位置であるアドレスＡ２がアドレスＡ３に達するときに、ＤＭＡ転送によってメインメモリに書き込まれるデータが閾値に達したと判断する。すなわち、アドレスＡ２≧アドレスＡ３となったときである。
【００６５】
次に、（２）アドレスＡ３がＦＩＦＯメモリであるメインメモリ１０４の最終アドレスとして定められる場合がある。
【００６６】
この場合アドレスＡ２がメインメモリ１０４の最終アドレスに達するときに、ＤＭＡ転送によってメインメモリ１０４に書き込まれるデータが閾値に達したと判断する。すなわち、アドレスＡ２＝最終アドレス、若しくはアドレスＡ２が最終アドレスまで達して、メインメモリの先頭アドレスから書き込まれる場合は、先頭アドレス≦アドレスＡ２≦Ａ１となったときである。
【００６７】
次に、（３）アドレスＡ３がＦＩＦＯメモリであるメインメモリ１０４の先頭アドレスからアドレスＡ１との間の任意のアドレスとして定める場合がある。
【００６８】
すなわち、アドレスＡ２がＦＩＦＯメモリの最終アドレスに到達し、ＦＩＦＯメモリの先頭アドレスからＤＭＡ転送データの書き込みが行われ、さらに書き込みが行われアドレスＡ２がアドレスＡ３に到達したとき、つまり、アドレスＡ２がＦＩＦＯメモリの最終アドレスに達した後にアドレスＡ２≧Ａ３となったとき、ＤＭＡ転送によってメインメモリ１０４に書き込まれるデータが閾値に達したと判断する。
【００６９】
次に、（４）アドレスＡ３がＤＭＡ転送によって書き込みが開始された位置であるアドレスＡ１として定められる場合がある。
【００７０】
すなわち、アドレスＡ２がＦＩＦＯメモリの最終アドレスに到達し、ＦＩＦＯメモリの先頭アドレスからＤＭＡ転送データの書き込みが行われ、さらに書き込みが行われアドレスＡ２がアドレスＡ１に到達したとき、つまり、アドレスＡ２がＦＩＦＯメモリの最終アドレスに達した後にアドレスＡ２≧Ａ１となったとき、ＤＭＡ転送によってメインメモリ１０４に書き込まれるデータが閾値に達したと判断する。
【００７１】
ただし、以上のようなアドレスＡ３の各設定パターンには制限があり、アドレスＡ３は未だデータの読み出しがされていない領域に設定することができない。したがって、閾値設定のために決定されるアドレスＡ３は、その時点に応じたメモリ空き容量により変化する。また、最もメモリを有効に使用するならば、アドレスＡ３はデータ記録可能な領域全体を指定するように設定するのが好ましい。
【００７２】
図５において、Ａ４は未だ読み出されていないデータの先頭アドレスを示すが、この場合アドレスＡ４からアドレスＡ１までの領域が未だ読み出されていないデータが存在することになる。したがって、アドレスＡ１からメインメモリの最終アドレスまでの領域と、メインメモリ１０４の先頭アドレスからアドレスＡ４までの領域には、データの書き込みが可能な状態である。すなわち、アドレスＡ３はこれらの領域に設定可能であり、アドレスＡ３＝アドレスＡ４と設定すれば、最もメモリを有効に使用でき、キャッシュメモリ１０２内のデータの無効化処理を少なくすることができる。また、ＣＰＵ１０１によるメインメモリ１０４へのデータアクセスがあった場合には、そのアクセスされたデータ分だけメインメモリ１０４内に書き込み可能領域が増え、アドレスＡ４は更新されるので、このときアドレスＡ３についても再設定することが好ましい。
【００７３】
なお、アドレスＡ３は必ずしも上述したようにアドレスＡ４と同一にする必要はなく、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、又は設計段階等にて決定することができる。
【００７４】
なお、上述したような各設定は、アドレス管理手段１０７が管理するメインメモ１０４内のアドレスに基づいて無効制御手段１０９が行い、必要に応じて無効化手段１０８にキャッシュメモリ１０２内のデータの無効化処理を行わせる。
【００７５】
なお、キャッシュメモリ１０２内のデータの無効化処理については、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するデータがキャッシュメモリ１０２内に存在しなければ、無効化処理を実行しないように、無効化制御手段１０９にて切り替え制御を行うことも可能である。
【００７６】
また、ＤＭＡコントローラ１０６の制御によるＤＭＡ転送処理とＣＰＵ１０１によるメモリアクセス処理は必ずしも排他的な関係になるわけではなく、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送とＣＰＵ１０１からのメインメモリ１０４へのデータアクセスは同時に実行できるシステムにおいては、本実施の形態で説明したような、ＣＰＵ１０１からのデータアクセス命令が発生した場合でも、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せず、ＤＭＡ転送を継続しつつ、ＣＰＵ１０１がメインメモリ１０４へのデータアクセスを実行できる。
【００７７】
本実施の形態によれば、従来ＤＭＡ転送データ単位ごとにキャッシュメモリ内のデータの無効化処理を実行していたのに対し、メインメモリへのＤＭＡ転送データが設定された閾値に到達する度に、キャッシュメモリ内のデータの無効化処理を実行するので、無効化処理の処理数を削減することができる。例えば、ＤＭＡ転送データ単位が１バイトであるシステムにおいて、従来では１バイト単位でキャッシュメモリ内のデータを無効化していたが、本発明にて無効化制御手段に設定される閾値を１０バイトとすれば、無効化処理を１／１０に削減することができる。また、ＦＩＦＯメモリの特性を生かし、容易にデータ書き込み可能な領域を管理することができ、また閾値の設定についてもメモリ内のデータ書き込み可能領域に応じて容易に設定することができるので、閾値設定についても処理を簡略化できる。
【００７８】
また、ＤＭＡ転送によるメインメモリ内の書き換わったデータが閾値に満たない場合でも、ＣＰＵからのデータアクセスに先立って、キャッシュメモリ内のデータの無効化処理を実行するので、洩れなく無効化することができる。
【００７９】
（第四の実施形態）
次に、本発明の第四の実施の形態について説明する。本実施の形態では、第二の実施の形態において、キャッシュメモリシステムのメインメモリをリングバッファのＦＩＦＯ（先入れ先出し）メモリとしたものである。したがって、図１におけるメインメモリは、以下リングバッファのＦＩＦＯメモリとして扱う。図５はメインメモリを表すＦＩＦＯメモリである。又本実施の形態の制御方法の概略は第二の実施の形態と同様であり、図３に示すフローチャート図と図１、及び図５を用いて本実施の形態について説明する。
【００８０】
まず、ＤＭＡ転送要求が発生すると、ＤＭＡコントローラ１０６は、ＣＰＵ１０１やバスインタフェースバッファ１０３等のバスマスタに対して、動作をホールドさせるためのホールド信号を送信する。このホールド信号を受け、ＣＰＵ１０１及びバスインタフェースバッファ１０３がホールド確認信号をＤＭＡコントローラ１０６へ返送することで、ＤＭＡコントローラ１０６はＤＭＡ転送を開始する（Ｓ３０１）。ＤＭＡコントローラ１０６はＩ／Ｏ１０５を介して転送されてくるデータをメインメモリ１０４に転送し、メインメモリ１０４へデータを書き込んでいく（Ｓ３０２）。
【００８１】
このとき、ＦＩＦＯメモリであるメインメモリ１０４へのデータの書き込み状態については、第三の実施の形態にて説明したものと同様であり、図５にその状態を示す。ＤＭＡ転送されてきたデータはメインメモリ１０４内のアドレスＡ１から書き込みを開始され、遷移していく書き込み位置を示すアドレスＡ２は、書き込みが進むことでメインメモリ１０４内の最終アドレスに近づき、書き込み位置であるアドレスＡ２が最終アドレスに到達すると、メインメモリ１０４内の先頭アドレスから書き込みが行われる。書き込みが進行すると、アドレスＡ２は書き込みを開始したアドレスＡ１に近づいていく。なお、第三の実施の形態でも説明したように、メインメモリ１０４内に未だ読み出しがされていないデータが存在する場合、そのデータが記録される領域については書き込みができないので、読み出しを待って書き込みを行う。例えば、ＤＭＡ転送開始時に、図５に示すように、アドレスＡ４からアドレスＡ１の間の領域にデータが書き込まれていた場合には、ＤＭＡ転送によって書き込みが行える領域は、アドレスＡ１からメインメモリ１０４の最終アドレスまでの領域と、メインメモリ１０４の先頭アドレスからアドレスＡ４までの領域となる。
【００８２】
なお、後述するが、ＤＭＡ転送中に、ＣＰＵ１０１からのデータ読み出しが割り込みがあり、若しくはＣＰＵ１０１からのデータ読み出しが並列実行された場合には、アドレスＡ４は更新される。
【００８３】
このように順次ＤＭＡ転送によって転送されてきたデータが順次メインメモリ１０４に書き込まれている間に、ＤＭＡ転送による転送データが全て転送完了となった場合（Ｓ３０３）や、ＤＭＡ転送によってメインメモリ１０４へ転送されるデータの量がメインメモリ１０４の書き込み可能容量に達した場合（Ｓ３０４）、無効化制御手段１０９は無効化手段１０８を制御して、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータの無効化を実行する（Ｓ６０５）。そしてＤＭＡコントローラ１０６はＤＭＡ転送を終了し、ＣＰＵ１０１及びバスインタフェースバッファ１０３にＤＭＡ転送の終了を通知する（Ｓ３０６）。
【００８４】
なお、Ｓ３０５におけるキャッシュメモリ１０２内のデータの無効化処理は、この段階で行わなくてもよく、Ｓ３０６のＤＭＡ転送終了後に、ＣＰＵ１０１からのデータアクセスが発生したときに、キャッシュメモリ１０２内のデータを無効化することも可能である。またＳ３０４で、メインメモリ１０４へのＤＭＡ転送データ量がメインメモリ１０４内の書き込み可能容量に達した場合に、Ｓ３０６のＤＭＡ転送終了に移行するが、ＣＰＵ１０１がメインメモリ１０４へデータアクセスした後、すぐにＤＭＡ転送を再開するという制御も可能である。
【００８５】
ここで、Ｓ３０４におけるメインメモリ１０４へ転送されるデータの量がメインメモリ１０４の書き込み可能容量に達することを判断する工程について、以下に説明する。この工程は、すなわちメインメモリ１０４の記録可能な領域にすべてＤＭＡ転送によるデータが書き込まれてしまい、メインメモリ１０４へのデータ書き込みができなくなってしまうことを判断する工程である。メインメモリ１０４へのデータ書き込みがこれ以上できなくなってしまうことを検知する判断手段についてさらに詳細に説明する。
【００８６】
以下、図１０を参照して、ＤＭＡ転送によりメインメモリ１０４へデータが書き込まれていき、メインメモリ１０４への書き込みができなくなるまでの処理を説明する。まず、ＦＩＦＯメモリであるメインメモリ１０４内にアドレスＡ４からアドレスＡ１までの領域に読み出されていないデータが存在している状態で、ＤＭＡ転送が開始され、メインメモリ１０４内のアドレスＡ１からデータの書き込みが開始される。データが書き込まれていくと、メインメモリ１０４内のデータ書き込み位置を示すアドレスＡ２は、メインメモリ１０４の最終アドレスに到達する。アドレスＡ２がメインメモリ１０４の最終アドレスに到達するとき、ＤＭＡ転送によって転送されてきたデータがメインメモリ１０４内のアドレスＡ１から最終アドレスまでの間の領域に書き込まれたことになるので、ＤＭＡ転送によるデータはメインメモリ１０４内の先頭アドレスから書き込みが開始される。すなわち、アドレスＡ２はメインメモリ１０４の最終アドレスに到達すると、メインメモリ１０４の先頭アドレスに移動し、アドレスＡ４に近づいていく。
【００８７】
ＤＭＡ転送が進み、アドレスＡ２がアドレスＡ４に到達したとき、メインメモリ１０４へ転送されるデータの量がメインメモリ１０４の書き込み可能容量に到達したと判断する。これらのアドレスＡ１、Ａ２、Ａ４は、ＤＭＡ転送を制御するＤＭＡコントローラ１０６から通知されてアドレス管理手段１０７にて管理する。またアドレスＡ２がアドレスＡ４に到達することの検出方法としては、無効化制御手段１０９にてアドレスＡ２＝アドレスＡ４になることを検出するか、ＤＭＡ転送によりメインメモリ１０４に書き込み開始されたアドレスＡ１とアドレスＡ２との差分が、ＤＭＡ転送前にメインメモリ１０４に書き込まれていたデータ量と一致することを検出する方法がある。なおＣＰＵ１０１からのメインメモリアクセスがあって、メインメモリ１０４内のデータが読み出された場合には、アドレスＡ４は変更されるが、その点については後述する。
【００８８】
ＤＭＡ転送が継続され（Ｓ３０３、Ｓ３０４）、その間にＣＰＵ１０１からのデータアクセス命令が発生した場合（Ｓ３０７）、ＣＰＵ１０１はＤＭＡコントローラ１０６へホールド信号を通知し、ＤＭＡコントローラ１０６はそのホールド信号に従い、ＤＭＡ転送を中断する。
【００８９】
なお、このＣＰＵ１０１の割り込みに対しては、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せずに、ＣＰＵ１０１の割り込みを許可しないことも可能である。ＣＰＵ１０１のリード処理とＤＭＡ転送処理の優先度に応じて、優先度の高い処理が優先されて実行することができる。
【００９０】
ＤＭＡ転送が中断された場合には、ＤＭＡ転送によってメインメモリ１０４に書き換えられたデータの量と、無効化制御手段１０９に設定される閾値との比較を行い（Ｓ３０９）、書き換えられたデータ量が閾値以下ならば、ＣＰＵ１０１はキャッシュメモリ１０２を使用してデータアクセスを行わず、メインメモリ１０４にのみデータアクセスする（Ｓ３１０）。書き換えられたデータ量が閾値以上ならば、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するキャッシュメモリ１０２内の無効化されていなかったデータを無効化する（Ｓ３１１）。
【００９１】
なおＳ２１０３１１の無効化処理は、ＣＰＵ１０１が読み出すメインメモリ内のデータのアドレスに対応するキャッシュメモリ１０２内のデータについてのみ無効化する処理でも構わない。キャッシュメモリ１０２内のデータの無効化が行われると、ＣＰＵ１０１はキャッシュメモリ１０２を使用してメインメモリ１０４へのデータアクセスを行う（Ｓ３１２）。この設定された閾値とＤＭＡ転送によるメインメモリ１０４へのデータ書き込み量の比較結果に応じて、キャッシュメモリ１０２を使用してアクセスするかどうかを切り替えることによって、システムとしての処理数を軽減することができる。
【００９２】
すなわち、ＤＭＡ転送によるデータ量が大きくなければ、あえてキャッシュメモリ１０２内のデータの無効化を実行せず、メインメモリ１０４へのみデータアクセスする方が、結果的に処理速度が速くなるのである。この閾値は、このキャッシュメモリ１０２が使用されるシステムの用途や、メインメモリ１０４の容量、ＤＭＡ転送されるデータ量、ＣＰＵ１０１のデータアクセス回数等に応じて、最適な値に自動的に若しくはユーザーによって変更可能であり、又は設計段階等にて決定することができる。Ｓ３１０若しくはＳ３１１にてＣＰＵ１０１がデータアクセスを終了すると、ＣＰＵ１０１はＤＭＡコントローラ１０６に対して、ホールド解除信号を通知し、ＤＭＡコントローラ１０６は再度ＤＭＡ転送制御を開始する（Ｓ３１３）。
【００９３】
なお、ＣＰＵ１０１からのデータアクセスでメインメモリ１０４からデータが読み出された場合、メインメモリ内のデータの書き込まれている領域が変化するので、図５におけるメインメモリ１０４内のアドレスＡ４は変更される。また、ＤＭＡ転送が再開され、メインメモリ１０４へのデータの書き込みが再開されるとき、その書き込み開始位置であるアドレスＡ１も変更されている。これらの変更されたアドレスＡ１、Ａ４については、ＤＭＡ転送を制御するＤＭＡコントローラ１０６から通知されるアドレス管理手段１０７にて管理している。
【００９４】
なお、キャッシュメモリ１０２内のデータの無効化処理については、ＤＭＡ転送によって書き換えられたメインメモリ１０４内のデータに対応するデータがキャッシュメモリ１０２内に存在しなければ、無効化処理を実行しないように、無効化制御手段１０９にて切り替え制御を行うことも可能である。
【００９５】
また、ＤＭＡコントローラ１０６の制御によるＤＭＡ転送処理とＣＰＵ１０１によるメモリアクセス処理は必ずしも排他的な関係になるわけではなく、Ｉ／Ｏ１０５からメインメモリ１０４へのＤＭＡ転送とＣＰＵ１０１からのメインメモリ１０４へのデータアクセスは同時に実行できるシステムにおいては、本実施の形態で説明したような、ＣＰＵ１０１からのデータアクセス命令が発生した場合でも、ＤＭＡコントローラ１０６はＤＭＡ転送を中断せず、ＤＭＡ転送を継続しつつ、ＣＰＵ１０１がメインメモリ１０４へのデータアクセスを実行できる。
【００９６】
また、メインメモリ１０４にＤＭＡ転送されてきたが、既にＣＰＵ１０１からアクセス済みのデータや、不要と判断されるデータが書き込まれているアドレスに対しては、ＤＭＡ転送によってデータを上書きしていくことができる。すなわち、Ｓ３０４におけるメインメモリ１０４の容量とは、上書きすることのできないデータが占有する容量以外の部分を示すことになる。
【００９７】
本実施の形態によれば、従来ＤＭＡ転送データ単位ごとにキャッシュメモリ内のデータの無効化処理を実行していたのに対し、ＣＰＵからリード要求が発生することで、キャッシュメモリ内のデータの無効化処理を実行するので、無効化処理の処理数を削減することができる。例えば、ＤＭＡ転送データ単位が１バイトであるシステムにおいて、従来では１バイト単位でキャッシュメモリ内のデータを無効化していたが、本発明にてＤＭＡ転送が行われている間にＣＰＵからのデータアクセスが発生する頻度が、ＤＭＡ転送データ量約１０バイトで１回であるならば、無効化処理を１／１０に削減することができる。
【００９８】
（第五の実施の形態）
次に、本発明の第五の実施の形態について説明する。第一から第四の実施の形態に説明したキャッシュメモリシステムは、種々の機器に利用可能である。例えば、デジタルテレビにおけるデジタル放送受信機器に、本発明のキャッシュメモリシステムを導入可能である。以下に、デジタル放送受信機器における本発明の制御方法を第五の実施の形態として説明する。
【００９９】
デジタル放送では、データ放送、ＥＰＧ（電子番組表）になどに必要とされるデータをＭＰＥＧ２−ｓｙｓｔｅｍトランスポートストリームのようなトランスポートストリームのセクションと呼ばれるデータ構造で伝送している。デジタル放送受信機器では、受信したトランスポートストリームの中からセクションを抽出し、バッファに格納する処理が行われる。
【０１００】
図１１はデジタル放送受信機器の構成を概略して示すブロック図である。二重線矢印はデータの流れを示す。１１１はＣＰＵ、１１２はキャッシュメモリ、１１３はＣＰＵよりアクセス可能なメインメモリ、１１４はチューナであり、これらの構成により、受信電波の中から目的の搬送波を周波数選択し、さらに復調および誤り訂正を行う。これらの構成では、搬送波から1つのTSを選択し出力するところまでを行う。
【０１０１】
１１５はトランスポートストリーム分離装置である。このトランスポートストリーム分離装置１１５は、同期手段１１０１、PIDフィルタ１１０２、デスクランブラ１１０３、セクションフィルタ１１０４、ＤＭＡ１１０５を備える。同期手段１１０１は、入力されるTSから先頭データを検出し、TSPを抽出して出力する。PIDフィルタ１１０２は同期手段１１０１から入力されたTSPのPIDを基に、必要なTSPだけを出力し、必要でないTSPを破棄する。デスクランブラ１１０３はPIDフィルタ１１０２から入力されるTSPにスクランブルがかかっていた場合、データにかかったスクランブルを解除(デスクランブル)し、ＴＳ１１０２として出力する。スクランブルがかかっていなかった場合、何もせずにＴＳ１１０２として出力する。セクションフィルタ１１０４は、入力されるTSPの中からセクションを取り出し、セクションのヘッダ部に対してフィルタリングを行い、必要なセクションだけをTS１１０３として出力し、必要でないセクションを破棄する。ＤＭＡ１１０５は、メモリ１１２にセクションデータをバッファリングする。
【０１０２】
１１６はＡＶデコーダであり、トランスポートストリーム分離装置１１５より供給される映像、および音声のPES複合処理を行い映像として出力する。１１７はデータ放送表示部であり、メモリ１１２にバッファリングされたセクションデータを用いてデータ放送の出力を行う。１１７はEPG表示部であり、メモリ１１２にバッファリングされたセクションデータを用いてＥＰＧの出力を行う。
【０１０３】
本実施の形態では、このセクションのバッファリング処理のように、可変長のある大きさに区切られた一塊とみなすデータに対して、ＤＭＡ転送を行う場合について、第一から第四の実施の形態を参照して説明する。
【０１０４】
例えば、第一、三の実施の形態における制御方法においては、図２の制御フローチャート図のＳ２０２で、ＤＭＡ転送によりメインメモリ１０４へデータを書き込む際には、メインメモリ１０４内にセクションを形成したデータを書き込んでいく。また、Ｓ２０９におけるＣＰＵ１０１のデータアクセスは、セクションを単位として行われる。また、無効化制御手段１０９にてメインメモリ内に書き込まれていくデータの量に対して設定している任意の閾値を１セクションとすることができる。すなわち、任意の閾値を１セクションとすることで、Ｓ２１１においてＤＭＡ転送によってメインメモリ１０４に書き込まれるデータが１セクション分溜まる度に、そのメインメモリ１０４内の１セクションのデータに対応するキャッシュメモリ１０２内のデータを無効化することができる。
【０１０５】
なお、閾値を１セクション分ではなく、任意のセクション数分で設定することも可能である。その場合、ＤＭＡ転送されてメインメモリ１０４に書き込まれた複数のセクションに対応するキャッシュメモリ１０２内のデータをまとめて無効化することができ、より無効化処理を削減することができる。また図２におけるＳ２０８では、ＤＭＡ転送によりメインメモリ１０４に書き込まれたセクションのサイズと設定されている閾値との比較を行うことになる。
【０１０６】
また、図２におけるＳ２０６のＣＰＵ１０１からのデータアクセス命令は、メインメモリ１０４に１セクション転送されると発生するように制御することも可能である。その場合Ｓ２０８では、その１セクションのデータ量と設定される任意の閾値を比較して、閾値以下ならＳ２０９に、閾値以上ならＳ２１０に進むように設定可能である。
【０１０７】
また図２のＳ２１１において、閾値をメインメモリの最終アドレスとして設定した場合、メインメモリに書き込まれるセクションがメインメモリの最終アドレスに達し、メインメモリの先頭アドレスから書き込まれる場合がある。この場合は、先頭アドレスから書き込まれているデータ部分に対応するキャッシュメモリ内のデータについても無効化を行う。
【０１０８】
また例えば、第二、第四の実施の形態における制御方法においては、図３の制御フローチャート図のＳ３０２でＤＭＡ転送によりメインメモリ１０４へデータを書き込む際には、メインメモリ内にセクションを形成したデータを書き込んでいく。
【０１０９】
また、Ｓ３０４のＤＭＡ転送によってメインメモリ１０４に転送されるデータの量がメインメモリ１０４の書き込み可能容量に達するかを判断する工程においては、メインメモリ１０４のアドレス状態を表した図７に示すように、アドレスＣ１を記録可能な領域の境界とした場合、アドレスＡ８はアドレスＣ１以下なので、セクション１まではデータの書き込みができるが、さらにセクション２をメインメモリ１０４に書き込んだ場合、書き込み後のデータ位置を示すアドレスＡ９が閾値アドレスＣ１を越えてしまい、書き込みができなくなってしまう。
【０１１０】
このような事態を考慮して、ＤＭＡコントローラ１０６は、ＤＭＡ転送されるセクションデータのデータ量を管理し、メインメモリ１０４へ書き込むことでメインメモリ１０４の書き込み可能容量を越えてしまうセクション２をＤＭＡ転送によりメインメモリ１０４に書き込む場合に、次のように処理する。すなわち、ＤＭＡコントローラ１０６は、予めメインメモリ１０４への書き込みデータ量がメインメモリ１０４の書き込み容量を越えてしまうと判断し、Ｓ３０５のＤＭＡ転送によりメインメモリ１０４に書き込まれたデータに対応するキャッシュメモリ１０２内のデータの無効化処理や、若しくはＳ３０５の無効化処理を行わずにＳ３０６のＤＭＡ転送終了処理、若しくはＣＰＵ１０１へのデータ読み出し要求等を行う。
【０１１１】
このような特徴を有する本発明によれば、セクションバッファリング時に必要とされるパージ処理の方法を状況に応じて切り替えることで、従来必要とされていたパージ時間を短縮する事が可能となる。そのことによってセクションバッファリングの処理時間が短縮され、ＥＰＧおよびデータ放送をより高速に表示可能なデジタル放送受信装置を構成可能となる。
【０１１２】
なお、本実施の形態では、ＭＰＥＧ２―ｓｙｓｔｅｍトランスポートストリームを例に、セクション単位のデータ処理を説明したが、本実施の形態の制御方法の利用可能用途はこれに限定されるものでなく、セクションのような一塊のデータが意味をなすデータを扱う場合に有効である。
【０１１３】
なお、以上の第一から第五の実施の形態において、メインメモリ１０４に書き込まれたデータに対して、ＣＰＵ１０１からのアクセスをキャッシュブロックといわれる所定のブロック単位で実行する場合について、図６に示すメインメモリ内のアドレス状態を用いて説明する。
【０１１４】
通常、ＣＰＵ１０１がメインメモリ１０４内のデータをアクセスする場合、キャッシュブロックといわれる所定の幅を持ったブロック単位で行われ、キャッシュメモリ１０２にはアクセスされたキャッシュブロックが格納される。例えば図６において、アドレスＡ５からアドレスＡ６に記録されているデータ１全体にアクセスする場合、キャッシュブロックＢ１−Ｂ２、Ｂ２−Ｂ３、Ｂ３−Ｂ４、Ｂ４−Ｂ５の４つのキャッシュブロックにアクセスすることとなる。このとき、キャッシュブロックＢ１−Ｂ２、Ｂ２−Ｂ３、Ｂ３−Ｂ４、Ｂ４−Ｂ５のデータがキャッシュメモリに格納される。また例えば、データ１のアドレスＢ４からアドレスＡ６の部分のデータにアクセスする場合は、キャッシュブロックＢ４−Ｂ５にアクセスする。またこのとき、キャッシュブロックＢ４−Ｂ５のデータがキャッシュメモリ１０２に格納される。以下に、ＣＰＵ１０１からメインメモリ１０４内のデータ１のアドレスＢ４からＡ５の領域のデータ部分に対してアクセス要求が発生した場合の動作と、さらにその後、データ１に隣接するアドレスＡ６からＡ７にデータ２が書き込まれ、キャッシュブロックＢ４−Ｂ５中に含まれているデータ２のアドレスＡ６からＢ５の領域のデータ部分に対してＣＰＵからアクセス要求が発生したときの動作を図４のフローチャート図と図６のメインメモリ１０４の図を用いて説明する。
【０１１５】
まず、ＤＭＡ転送によってメインメモリ内のアドレスＡ５からＡ６にデータ１が書き込まれる（Ｓ４０１）。次に、ＣＰＵ１０１からデータ１のアドレスＢ１からＡ６に対してアクセス要求が発生する（Ｓ４０２）。そして、ＣＰＵ１０１はメインメモリ１０４からキャッシュブロックＢ１−Ｂ５のデータを読み出し、キャッシュメモリ１０２にはキャッシュブロックＢ１−Ｂ５のデータが格納される（Ｓ４０３）。次に、ＤＭＡ転送によりメインメモリ１０４内のアドレスＡ６からＡ７にデータ２が書き込まれる（Ｓ４０４）。そしてメインメモリ１０４にデータ２が書き込まれた後、ＣＰＵ１０１がデータ２のアドレスＡ６からＢ５のデータ部分にアクセス要求を発生する（Ｓ４０５）。すると、Ｓ４０３の工程でキャッシュメモリ１０２に格納されたメインメモリ１０４内のアドレスＡ６からＢ５のデータと、Ｓ４０４の工程にて書き換わったメインメモリ１０４内のアドレスＡ６からＢ５のデータとの不一致が生じてしまっているので、この不整合を防ぐために、メインメモリ１０４のキャッシュブロックＢ４−Ｂ５に対応するキャッシュメモリ１０２内のデータを無効化する（Ｓ４０６）。そして、ＣＰＵ１０１はキャッシュブロックＢ４−Ｂ５のデータをメインメモリ１０４から読み出し、キャッシュメモリ１０２に改めてキャッシュブロックＢ４−Ｂ５のデータが格納される（Ｓ４０７）。なお、データ１がＤＭＡ転送によってキャッシュメモリ１０２に書き込まれる前のメインメモリ１０４のアドレスＢ４−Ａ６に書き込まれていたデータがキャッシュメモリ１０２に格納されていた状態で、Ｓ４０２におけるＣＰＵ１０１からメインメモリ１０４内のアドレスＢ４−Ａ６のデータへのデータアクセス要求が発生した場合には、Ｓ４０３にてＣＰＵ１０１がキャッシュブロックＢ４−Ｂ５を読み出して、キャッシュメモリ１０２にキャッシュブロックＢ４−Ｂ５のデータを格納する処理を行う前に、メインメモリ１０４のキャッシュブロックＢ４−Ｂ５の領域に対応するキャッシュメモリ１０２内のデータの無効化を行う。また、データ１とデータ２は隣接している場合ではなくても、データ１とデータ２が一つのキャッシュブロックの領域に含まれているデータ部分を有していれば、上記の処理が有効である。
【０１１６】
以上の処理では、ＣＰＵからの読み出しの対象となるデータの中の一部が、すでに読み出されているデータとキャッシュブロックを共有している場合、その共有のキャッシュブロックの領域に対応するキャッシュメモリに格納されているデータについて無効化処理を行うので、ＣＰＵがキャッシュブロック単位でのデータ読み出しをする際にも、メインメモリ内のデータとそのデータのアドレスに対応するキャッシュメモリ内のデータとの不整合を防ぐことができる。
【０１１７】
なお以上の処理は、データ１とデータ２は隣接している場合に限らず、データ１とデータ２の一部がキャッシュメモリを共有している場合にも有効である。すなわち、メインメモリがリングバッファのＦＩＦＯメモリのような場合には、図６に示すようにデータ１とデータ２が隣接して書き込まれていくので、図４のフローチャートに示す制御が有効であるし、メインメモリがそれ以外のメモリであっても、データ１とデータ２が隣接して書き込まれている場合、若しくはデータ１とデータ２が隣接していないがそれぞれの一部がキャッシュブロックを共有している場合に図４のフローチャートに示す制御は有効である。
【０１１８】
また、以上の第一から第五の実施の形態の説明の中で、ＣＰＵのデータアクセスとＤＭＡコントローラのＤＭＡ転送制御を独立に実行させる例について説明したが、これらは互いに制御を行うことも可能である。具体的には、ＤＭＡ転送によるメインメモリへのデータの格納において、ＣＰＵが要求するものだけをＤＭＡ転送するようにＤＭＡコントローラに指示することで、ＤＭＡ転送されてくるデータ量がメインメモリの書き込み可能容量を上回らないように制御することができる。または、ＤＭＡ転送によってメインメモリに書き込まれるデータがメインメモリへの書き込み可能容量に達した場合に、ＣＰＵの読み出し制御が行われるようにすることも可能である。このような制御方法を採ることで、例えば第二、第三の実施の形態の制御フローチャート図である図３のＳ３０４のような工程を起こさなくしたり、Ｓ３０４の工程とＳ３０７の工程を一つのタイミングとすることができ、本発明のキャッシュメモリシステムはより少ない処理数で、高速に動作することができる。
【０１１９】
また、以上の第一から第五の実施の形態の中で用いる本発明のキャッシュメモリの構成は、必ずしも図１の構成に限定されるものではなく、無効化手段やアドレス管理手段、無効化制御手段等は一つの制御部として統合することもでき、またこれらの手段はＤＭＡコントローラやＣＰＵの一部の機能として含むことも可能である。また、ＤＭＡ転送によりメインメモリに転送されるデータはＩ／Ｏを介して外部から転送されてくるものとして説明したが、Ｉ／Ｏを介さずに他のメモリ等から転送されてくる場合でも構わない。
【産業上の利用可能性】
【０１２０】
本発明は、ＤＭＡ転送機能を有するキャッシュメモリシステムを搭載する機器に応用可能であり、例えば、デジタルテレビ等におけるトランスポートストリームのセクション取得処理などに利用できる。
【図面の簡単な説明】
【０１２１】
【図１】本発明に係るＤＭＡ転送機能を有するキャッシュメモリシステムの構成図
【図２】本発明に係る制御方法を示す第１のフローチャート
【図３】本発明に係る制御方法を示す第２のフローチャート
【図４】本発明に係る制御方法を示す第３のフローチャート
【図５】メインメモリ内の第１のアドレス状態図
【図６】メインメモリ内の第２のアドレス状態図
【図７】メインメモリ内の第３のアドレス状態図
【図８】従来のＤＭＡ転送機能を有するキャッシュメモリシステムの構成図
【図９】従来のメモリ制御方法を示すフローチャート図
【図１０】メインメモリ内のデータとキャッシュメモリ内のデータの関係図
【図１１】デジタル放送受信機器の概要構成図
【符号の説明】
【０１２２】
１０１    ＣＰＵ
１０２    キャッシュメモリ
１０３    バスインタフェースバッファ
１０４    メインメモリ
１０５    Ｉ／Ｏ
１０６    ＤＭＡコントローラ
１０７    アドレス管理手段
１０８    無効化手段
１０９    無効化制御手段
【図１】
2005209163.tif 000003
【図２】
2005209163.tif 000004
【図３】
2005209163.tif 000005
【図４】
2005209163.tif 000006
【図５】
2005209163.tif 000007
【図６】
2005209163.tif 000008
【図７】
2005209163.tif 000009
【図８】
2005209163.tif 000010
【図９】
2005209163.tif 000011
【図１０】
2005209163.tif 000012
【図１１】
2005209163.tif 000013