(57)【要約】【課題】ＤＭＡＣによるＤＭＡ転送の前に、ＣＰＵによってデータのコヒーレンシを保つために、データキャッシュのパージおよびインバリデートの動作が必要であった。【解決手段】ＤＭＡＣ１５０によるＤＭＡ転送の前に、ＣＰＵ１１０の代わりにデータキャッシュ１２０のパージおよびインバリデートを行うパージ制御部１６０を設けることで、ＣＰＵ１１０の負荷を減らす。【選択図】      図１
2004258935.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、データキャッシュと、周辺デバイスと、主メモリと、ＤＭＡＣとからなる半導体装置であって、
前記ＤＭＡＣからアドレスとデータの指示によって前記データキャッシュ上に格納されているデータを前記主メモリに書き戻す強制パージ手段と、
前記ＣＰＵからの起動を受け前記主メモリと前記周辺デバイスとの間のＤＭＡ動作の制御を行うＤＭＡＣ制御部と、
前記ＤＭＡＣのＤＭＡ動作の際に前記主メモリ上の転送元領域を示すアドレスを格納する転送元アドレスカウンタと、
前記ＤＭＡＣのＤＭＡ動作の際に前記周辺デバイス上の転送先領域を示すアドレスを格納する転送先アドレスカウンタと、
前記ＤＭＡＣのＤＭＡ動作の際に転送するデータ長を格納するデータ転送長カウンタと、
前記ＤＭＡＣ制御部からの指示を受けて、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタから値を入力し、ＤＭＡ動作の前に前記データキャッシュ上のデータで前記主メモリ上の転送元領域内に書き戻されるべきデータを前記主メモリに書き戻すために、前記強制パージ手段に対しアドレスとパージ動作のためのデータを出力するパージ制御部と
を有する半導体装置。
【請求項２】
転送元アドレスカウンタの値とデータ転送長カウンタの値から、転送元アドレスカウンタの値がデータキャッシュのデータブロックのサイズのアドレス境界毎に、ＤＭＡＣ制御部に対してＤＭＡ動作を停止を指示するキャッシュブロック境界判定部を有し、
ＤＭＡＣ制御部は、パージ制御部から強制パージ手段に対して、次の転送元領域のデータブロックのサイズ分をデータキャッシュから主メモリに書き出す指示を与え、書き出しの終了を前記パージ制御部が前記ＤＭＡＣ制御部に対して通知し、それを受けた前記ＤＭＡＣ制御部がＤＭＡ動作を再開するよう構成した
請求項１記載の半導体装置。
【請求項３】
転送元アドレスカウンタ，転送先アドレスカウンタ，データ転送長カウンタにロードすべき値を複数個保持するＤＭＡディスクリプタと、
ＤＭＡＣ制御部の指示を受けて、１回のＤＭＡ動作の開始前に、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値が、前記ＤＭＡディスクリプタテーブルのどこに格納されているかを示し、格納していた全ての前記ＤＭＡディスクリプタテーブルのＤＭＡ動作が終了したことを通知するディスクリプタカウンタと、
前記ディスクリプタカウンタからの入力を受け、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値を、前記転送元アドレスメモリ、前記転送先アドレスメモリ、前記転送データ長メモリから選択し出力するディスクリプタセレクタと
を有し、前記ＤＭＡＣ制御部は、前記転送元アドレスメモリ、前記転送先アドレスメモリ、前記転送データ長メモリから前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタに値をロードした後に、パージ制御部に対し、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタからの値の取り込みと、その値からデータキャッシュのパージ動作の対象となる範囲を求め、前記強制パージ手段に対し前記データキャッシュの強制パージ動作を行わせるよう構成した
請求項１記載の半導体装置。
【請求項４】
主メモリに設けられ、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタにロードすべき値を複数個保持するＤＭＡディスクリプタテーブルと、
ＤＭＡの開始前に、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値が、前記ＤＭＡディスクリプタテーブルのどこにあるのかを示すアドレスを格納するディスクリプタアドレスカウンタと、
ＣＰＵから起動され、まずパージ制御部に対し、前記ディスクリプタアドレスカウンタの値をロードさせ、それを受けて前記パージ制御部は、前記ＤＭＡディスクリプタテーブルをデータキャッシュから前記主メモリに書き出させ、それに続いて、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタにロードすべき値をＤＭＡ動作により設定するよう構成したディスクリプタＤＭＡ制御部とを設けた
請求項１記載の半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリを有するＣＰＵと、ＤＭＡコントローラを搭載した半導体装置に関する。
【０００２】
【従来の技術】
従来、この種の半導体装置は図３９に示すように構成されている。
７００は半導体装置の全体ブロックである。７１０はＣＰＵであり、半導体装置７００の内部で処理を行う。７１１は強制パージ手段で、ＣＰＵ７１０からアドレスとデータの指示によって、データキャッシュ７２０上のデータブロック７２１に格納されているデータを、共有バス７８０を経由して主メモリ７４０に書き戻すものである。７１２はＣＰＵ内部インタフェースで、ＣＰＵ７１０からの指示を強制パージ手段７１１へ伝える。
【０００３】
７２０はデータキャッシュで、ＣＰＵ７１０から頻繁にアクセスする主メモリ７４０上のデータをキャッシュする。７２１はデータキャッシュ７２０のデータブロックで、データを記憶する主メモリ７４０上のデータを格納するものである。７２２はデータキャッシュ７２０のタグアドレスで、データブロック７２１上に格納されているデータが主メモリ７４０のどのアドレスに対応するかを格納する。
【０００４】
７３０は周辺デバイスで、半導体装置７００と外部周辺機器との入出力を行う。７３１は周辺デバイス７３０の転送先領域で、周辺デバイス７３０の入出力データを格納する。
【０００５】
７４１は主メモリ７４０の転送元領域で、周辺デバイス７３０と主メモリ７４０との間でＤＭＡ動作を行うＤＭＡＣ７５０のＤＭＡ動作によって、周辺デバイス７３０の転送先領域７３１との間で転送すべきデータを格納する。
【０００６】
ＤＭＡＣ７５０は次のように構成されている。
７５１はデータセレクタで、アドレスデコーダ７５４の指示により、共有バス７８０にデータを出力しないか、あるいは内部バッファ７５５の値を出力するかを選択する。７５２はデマルチプレクサで、アドレスデコーダ７５４の指示により、共有バス７８０上のデータを入力しないか、あるいは内部バッファ７５５とＤＭＡＣ制御部７５６と転送元アドレスカウンタ７５７と転送先アドレスカウンタ７５８とデータ転送長７５９のいずれかに入力するかを選択する。
【０００７】
７５３はアドレスセレクタで、ＤＭＡＣ制御部７５６の指示により、共有バス７８０上のアドレスを出力しないか、あるいは転送元アドレスカウンタ７５７と転送先アドレスカウンタ７５８のいずれかの値を出力するかを選択する。
【０００８】
前記アドレスデコーダ７５４は、共有バス７８０上のアドレスをデコードし、データセレクタ７５１とデマルチプレクサ７５２の選択を指示する。前記内部バッファ７５５は、ＤＭＡＣ７５０による、主メモリ７４０と周辺デバイス７３０との間のＤＭＡ動作の際に、中継のために一旦データを格納する。前記ＤＭＡＣ制御部７５６は、ＣＰＵ７１０から共有バス７８０経由でＤＭＡ動作の起動を受け、主メモリ７４０と周辺デバイス７３０との間のＤＭＡ動作の制御を行う。前記転送元アドレスカウンタ７５７は、ＤＭＡ動作の際に主メモリ７４０上の転送元領域７４１を示すアドレスを格納する。前記転送先アドレスカウンタ７５８は、ＤＭＡ動作の際に周辺デバイス７３０上の転送先領域７３１を示すアドレスを格納する。前記データ転送長カウンタ７５９は、ＤＭＡ動作の際に転送するデータ長を格納する。
【０００９】
上記のように構成された半導体装置の動作を、図４０〜図４５を用いて説明する。
図４０はＤＭＡ動作開始前のデータ位置を示す。
【００１０】
８２２はデータキャッシュ７２０内のデータブロック７２１の中の１ブロックであって、ＣＰＵ７１０から主メモリ７４０上の転送元領域７４１内の部分領域８４１に対して書き込まれたデータを一時格納している。
【００１１】
８４１は主メモリ７４０上の転送元領域７４１内の部分領域であって、ＣＰＵ７１０からの書き込みデータを格納するデータブロック８２２上のデータが本来格納されるべき領域である。
【００１２】
図４１はＣＰＵ７１０によるデータキャッシュのパージ動作を示し、図４２はＣＰＵ７１０によるＤＭＡ起動の動作を示す。
図４３はＤＭＡ起動直後からのＤＭＡＣの動作を示す。
【００１３】
８７１はＤＭＡＣ７５０内の内部バッファ７５５内の部分領域であって、ＤＭＡＣ７５０の動作によって転送元領域７４１のデータを内部バッファ７５５に転送した際に、部分領域８４１上のデータを一時保持する。
【００１４】
図４４は内部バッファ７５５への転送直後のＤＭＡＣ７５０の動作を示す。
８３２は周辺デバイス７３０上の転送先領域７３１の部分領域であって、ＤＭＡＣ７５０の動作によって内部バッファ７５５のデータを転送先領域７３１に転送した際に、前記部分領域８７１上のデータを保持する。
【００１５】
図４５はＤＭＡ動作終了の際のＤＭＡＣ７５０の動作を示す。
すなわち、図４０に示すようにデータキャッシュ７２０は、本来、主メモリ７４０上の転送元領域７４１内の部分領域８４１に格納されるべきデータをキャッシュして、データブロック８２２に保持している。この状態からＣＰＵ７１０は、ＤＭＡの転送元アドレスとデータ転送長からデータキャッシュ７２０のパージ動作の対象となる範囲を求め、ＣＰＵ内部インタフェース７１２を経由して、強制パージ手段７１１にアクセスする。
【００１６】
その結果、データキャッシュ７２０上のデータブロック８２２にあるデータは、主メモリ７４０の転送元領域７４１内の部分領域８４１に書き戻される。
次にＣＰＵ７１０は、ＤＭＡＣ７５０内の転送元アドレスカウンタ７５７に転送元領域７４１の先頭アドレスを、転送先アドレスカウンタ７５８に転送先領域７３１の先頭アドレスを、データ転送長カウンタ７５９にＤＭＡ転送を行うデータ長をそれぞれセットした後、ＤＭＡＣ制御部７５６に対してＤＭＡの起動をかける。
【００１７】
図４３に示すように、ＤＭＡＣ制御部７５６は、次に転送元アドレスカウンタ７５７の値とデータ転送長カウンタ７５９の値に基づいて、転送元領域７４１のデータを内部バッファ７５５に格納する。その際、部分領域８４１上のデータは、内部バッファ７５５内の部分領域８７１にコピーされる。
【００１８】
図４４に示すように、ＤＭＡＣ制御部７５６は、次に転送先アドレスカウンタ７５８の値とデータ転送長カウンタ７５９の値に基づいて、内部バッファ７５５のデータを周辺デバイス７３０の転送先領域７３１に転送する。その際、部分領域８７１のデータは、転送先領域７３１の部分領域８３２にコピーされる。
【００１９】
図４５に示すように、ＤＭＡＣ制御部７５６は、共有バス７８０上の割り込み通知線を使用して、ＣＰＵ７１０に対し、ＤＭＡ転送が終了したことを通知する。これでＤＭＡの一連の動作が終了する。
【００２０】
すなわち、以上の構成により、データキャッシュ７２０内のデータブロック８２２にデータが格納されている領域を含む転送元領域から周辺デバイス７３０へのＤＭＡ動作が可能となる（例えば、非特許文献１参照）。
【００２１】
【非特許文献１】
Ｍｉｃｒｏｓｏｆｔ  ｃｏｒｐｏｒａｔｉｏｎ、“Ｋｅｒｎｅｌ−Ｍｏｄｅ  Ｄｒｉｖｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：  Ｗｉｎｄｏｗｓ  ＤＤＫ−  Ｆｌｕｓｈｉｎｇ  Ｃａｃｈｅｄ  Ｄａｔａ  ｄｕｒｉｎｇ  ＤＭＡ  Ｏｐｅｒａｔｉｏｎｓ”（英語）、［ｏｎｌｉｎｅ］、２００２年１０月２日、平成１５年２月１０日検索、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｌｉｂｒａｒｙ／ｄｅｆａｕｌｔ．ａｓｐ？ｕｒｌ＝／ｌｉｂｒａｒｙ／ｅｎ−ｕｓ／ｋｍａｒｃｈ／ｈｈ／ｋｍａｒｃｈ／ｉｐｕｔｏｐｕｔ＿８ｌｎｒ．ａｓｐ＞
【００２２】
【発明が解決しようとする課題】
上記のように従来の半導体装置では、ＤＭＡ動作を行う前にＣＰＵ７１０がデータキャッシュのパージ動作を行うことが必要であり、そのためＣＰＵ７１０に負荷がかかる。
【００２３】
本発明は、ＤＭＡ動作を行う場合にＣＰＵの負荷を低減できる半導体装置を提供することを目的とする。
【００２４】
【課題を解決するための手段】
前記の課題を解決するために、本発明の半導体装置では、ＤＭＡＣの転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタの値から値を入力し、ＤＭＡＣの起動後、ＤＭＡ動作の前にデータキャッシュのパージ動作をＣＰＵの代わりに行う、パージ制御部を備えることで、ＣＰＵの負荷を減らしながら、ＤＭＡ動作を正しく行うことが可能となる。
【００２５】
本発明の請求項１記載の半導体装置は、ＣＰＵと、データキャッシュと、周辺デバイスと、主メモリと、ＤＭＡＣとからなる半導体装置であって、前記ＤＭＡＣからアドレスとデータの指示によって前記データキャッシュ上に格納されているデータを前記主メモリに書き戻す強制パージ手段と、前記ＣＰＵからの起動を受け前記主メモリと前記周辺デバイスとの間のＤＭＡ動作の制御を行うＤＭＡＣ制御部と、前記ＤＭＡＣのＤＭＡ動作の際に前記主メモリ上の転送元領域を示すアドレスを格納する転送元アドレスカウンタと、前記ＤＭＡＣのＤＭＡ動作の際に前記周辺デバイス上の転送先領域を示すアドレスを格納する転送先アドレスカウンタと、前記ＤＭＡＣのＤＭＡ動作の際に転送するデータ長を格納するデータ転送長カウンタと、前記ＤＭＡＣ制御部からの指示を受けて、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタから値を入力し、ＤＭＡ動作の前に前記データキャッシュ上のデータで前記主メモリ上の転送元領域内に書き戻されるべきデータを前記主メモリに書き戻すために、前記強制パージ手段に対しアドレスとパージ動作のためのデータを出力するパージ制御部とを有することを特徴とする。
【００２６】
本発明の請求項２記載の半導体装置は、請求項１において、転送元アドレスカウンタの値とデータ転送長カウンタの値から、転送元アドレスカウンタの値がデータキャッシュのデータブロックのサイズのアドレス境界毎に、ＤＭＡＣ制御部に対してＤＭＡ動作を停止を指示するキャッシュブロック境界判定部を有し、ＤＭＡＣ制御部は、パージ制御部から強制パージ手段に対して、次の転送元領域のデータブロックのサイズ分をデータキャッシュから主メモリに書き出す指示を与え、書き出しの終了を前記パージ制御部が前記ＤＭＡＣ制御部に対して通知し、それを受けた前記ＤＭＡＣ制御部がＤＭＡ動作を再開するよう構成したことを特徴とする。
【００２７】
本発明の請求項３記載の半導体装置は、請求項１において、転送元アドレスカウンタ，転送先アドレスカウンタ，データ転送長カウンタにロードすべき値を複数個保持するＤＭＡディスクリプタと、ＤＭＡＣ制御部の指示を受けて、１回のＤＭＡ動作の開始前に、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値が、前記ＤＭＡディスクリプタテーブルのどこに格納されているかを示し、格納していた全ての前記ＤＭＡディスクリプタテーブルのＤＭＡ動作が終了したことを通知するディスクリプタカウンタと、前記ディスクリプタカウンタからの入力を受け、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値を、前記転送元アドレスメモリ、前記転送先アドレスメモリ、前記転送データ長メモリから選択し出力するディスクリプタセレクタとを有し、前記ＤＭＡＣ制御部は、前記転送元アドレスメモリ、前記転送先アドレスメモリ、前記転送データ長メモリから前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタに値をロードした後に、パージ制御部に対し、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタからの値の取り込みと、その値からデータキャッシュのパージ動作の対象となる範囲を求め、前記強制パージ手段に対し前記データキャッシュの強制パージ動作を行わせるよう構成したことを特徴とする。
【００２８】
本発明の請求項４記載の半導体装置は、請求項１において、主メモリに設けられ、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタにロードすべき値を複数個保持するＤＭＡディスクリプタテーブルと、ＤＭＡの開始前に、前記転送元アドレスカウンタ、前記転送先アドレスカウンタ、前記データ転送長カウンタにロードすべき値が、前記ＤＭＡディスクリプタテーブルのどこにあるのかを示すアドレスを格納するディスクリプタアドレスカウンタと、ＣＰＵから起動され、まずパージ制御部に対し、前記ディスクリプタアドレスカウンタの値をロードさせ、それを受けて前記パージ制御部は、前記ＤＭＡディスクリプタテーブルをデータキャッシュから前記主メモリに書き出させ、それに続いて、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタにロードすべき値をＤＭＡ動作により設定するよう構成したディスクリプタＤＭＡ制御部とを設けたことを特徴とする。
【００２９】
【発明の実施の形態】
以下、本発明の各実施の形態を図１〜図３８に基づいて説明する。
（実施の形態１）
図１〜図６は本発明の（実施の形態１）を示す。
【００３０】
図１は本発明の（実施の形態１）に係わる半導体装置を示す。
１００は半導体装置の全体ブロックである。１１０はＣＰＵで、半導体装置１００内部で処理を行う。１１１は強制パージ手段で、ＣＰＵ１１０あるいは共有バス１８０で接続されているＤＭＡＣ１５０からアドレスとデータの指示によって、データキャッシュ１２０上のデータブロック１２１に格納されているデータを、共有バス１８０経由で主メモリ１４０に書き戻すものである。１１２はＣＰＵ内部インタフェースで、ＣＰＵ１１０からの指示を強制パージ手段１１１へ伝える。１１３はＣＰＵにも受けられた共有バスインタフェースで、共有バス１８０を経由した前記ＤＭＡＣ１５０からの指示を強制パージ手段１１１へ伝える。
【００３１】
１２０はデータキャッシュで、ＣＰＵ１１０から頻繁にアクセスする主メモリ１４０上のデータをキャッシュする。１２１はデータキャッシュ１２０のデータブロックで、主メモリ１４０上のデータを格納する。１２２はデータキャッシュ１２０のタグアドレスで、データブロック１２１上に格納されているデータが主メモリ１４０のどのアドレスに対応するかを格納する。
【００３２】
１３０は周辺デバイスで、半導体装置１００と外部周辺機器との入出力を行う。１３１は周辺デバイス１３０の転送先領域で、周辺デバイス１３０の入出力データを格納する。
【００３３】
１４１は主メモリ１４０の転送元領域で、周辺デバイス１３０と主メモリ１４０との間でＤＭＡ動作を行うＤＭＡＣ１５０のＤＭＡ動作によって、周辺デバイス１３０の転送先領域１３１との間で転送すべきデータを格納する。
【００３４】
ＤＭＡＣ１５０は次のように構成されている。
１５１はデータセレクタで、アドレスデコーダ１５４の指示により、共有バス１８０にデータを出力しないか、あるいは内部バッファ１５５と後述のパージ制御部１６０のいずれかの値を出力するかを選択する。１５２はデマルチプレクサで、アドレスデコーダ１５４の指示により、共有バス１８０上のデータを入力しないか、あるいは内部バッファ１５５とＤＭＡＣ制御部１５６と転送元アドレスカウンタ１５７と転送先アドレスカウンタ１５８とデータ転送長１５９のいずれかに入力するかを選択する。
【００３５】
１５３はアドレスセレクタで、ＤＭＡＣ制御部１５６の指示により、共有バス１８０上のアドレスを出力しないか、あるいは転送元アドレスカウンタ１５７と転送先アドレスカウンタ１５８と後述のパージ制御部１６０のいずれかの値を出力するかを選択する。
【００３６】
前記アドレスデコーダ１５４は、共有バス１８０上のアドレスをデコードし、データセレクタ１５１とデマルチプレクサ１５２の選択を指示する。前記内部バッファ１５５は、ＤＭＡＣ１５０による、主メモリ１４０と周辺デバイス１３０との間のＤＭＡ動作の際に、中継のために一旦データを格納する。前記ＤＭＡＣ制御部１５６は、ＣＰＵ１１０から共有バス１８０経由でＤＭＡ動作の起動を受け、主メモリ１４０と周辺デバイス１３０との間のＤＭＡ動作の制御を行う。前記転送元アドレスカウンタ１５７は、ＤＭＡ動作の際に主メモリ１４０上の転送元領域１４１を示すアドレスを格納する。前記転送先アドレスカウンタ１５８は、ＤＭＡ動作の際に周辺デバイス１３０上の転送先領域１３１を示すアドレスを格納する。前記データ転送長カウンタ１５９は、ＤＭＡ動作の際に転送するデータ長を格納する。
【００３７】
ここで、前記パージ制御部１６０は、ＤＭＡＣ制御部１５６からの指示を受けて、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を入力し、ＤＭＡ動作の前にデータキャッシュ１２０上のデータをパージするために、共有バス１８０に共有バスインタフェース１１３のアドレスとパージ動作のためのデータを出力するものである。
【００３８】
上記のように構成された半導体装置の動作を、図２〜図６を用いて説明する。
図２はＤＭＡ動作開始前のデータ位置を示す。
２２２はデータキャッシュ１２０内のデータブロック１２１の中の１ブロックであって、ＣＰＵ１１０から主メモリ１４０上の転送元領域１４１内の部分領域２４１に対して書き込まれたデータを一時格納している。
【００３９】
２４１は主メモリ１４０上の転送元領域１４１内の部分領域であって、ＣＰＵ１１０からの書き込みデータを格納するデータブロック２２２上のデータが本来格納されるべき領域である。
【００４０】
図３はＤＭＡ起動直後からのＤＭＡＣの動作を示し、図４はデータキャッシュパージ後のＤＭＡＣ１５０の動作を示す。２７１はＤＭＡＣ１５０内の内部バッファ１５５内の部分領域であって、ＤＭＡＣ１５０の動作によって転送元領域１４１のデータを内部バッファ１５５に転送した際に、部分領域２４１上のデータを一時保持する。
【００４１】
図５は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。２３２は周辺デバイス１３０の転送先領域１３１の部分領域であって、ＤＭＡＣ１５０の動作によって内部バッファ１５５のデータを転送先領域１３１に転送した際に、部分領域２７１上のデータを保持する。図６はＤＭＡ動作終了の際のＤＭＡＣ１５０の動作を示す。
【００４２】
すなわち、図２に示すようにデータキャッシュ１２０は、本来、主メモリ１４０上の転送元領域１４１内の部分領域２４１に格納されるべきデータをキャッシュして、データブロック２２２に保持している。この状態からＣＰＵ１１０は、ＤＭＡＣ１５０内の転送元アドレスカウンタ１５７に、転送元領域１４１の先頭アドレスを、転送先アドレスカウンタ１５８に転送先領域１３１の先頭アドレスを、データ転送長カウンタ１５９にＤＭＡ転送を行うデータ長をセットした後、ＤＭＡＣ制御部１５６に対してＤＭＡの起動をかける。
【００４３】
図３に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【００４４】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１１に対し、共有バスインタフェース１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２２にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４１に書き戻される。
【００４５】
図４に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９の値に基づいて、転送元領域１４１のデータを内部バッファ１５５に格納する。その際、部分領域２４１上のデータは、内部バッファ１５５内の部分領域２７１にコピーされる。
【００４６】
図５に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９の値に基づいて、内部バッファ１５５のデータを周辺デバイス１３０の転送先領域１３１に転送する。その際、部分領域２７１のデータは、転送先領域１３１の部分領域２３２にコピーされる。
【００４７】
図６に示すように、ＤＭＡＣ制御部１５６は、共有バス１８０上の割り込み通知線を使用して、ＣＰＵ１１０に対し、ＤＭＡ転送が終了したことを通知する。これでＤＭＡの一連の動作が終了する。
【００４８】
すなわち、以上の構成により、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果がある。
【００４９】
（実施の形態２）
図７〜図１５は本発明の（実施の形態２）を示す。
図７は本発明の（実施の形態２）に係わる半導体装置を示し、（実施の形態１）において説明した図１と同様のブロックについては、同一の番号を付し、その説明を省略する。
【００５０】
１６１はＤＭＡＣ１５０に設けられたキャッシュブロック境界判定部で、転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９の値から、転送元アドレスカウンタ１５７の値がデータキャッシュ１２０のデータブロックのサイズのアドレス境界毎に、ＤＭＡＣ制御部１５６に対してＤＭＡ動作の停止を指示する。
【００５１】
キャッシュブロック境界判定部１６１からＤＭＡ動作停止の指示を受けたＤＭＡ制御部１５６は、パージ制御部１６０から強制パージ手段１１１に対して、次の転送元領域１４１のデータブロックサイズ分をデータキャッシュ１２０から主メモリ１４０に書き出す指示を与え、書き出しの終了をパージ制御部１６０がＤＭＡＣ制御部１５６に対して通知し、それを受けたＤＭＡ制御部１５６はＤＭＡ動作を再開するものである。その他は図１と同じである。
【００５２】
上記のように構成された半導体装置の動作について、図８〜図１５を用いて説明する。
図８はＤＭＡ動作開始前のデータ位置を示す。
【００５３】
２２３はデータキャッシュ１２０内のデータブロック１２１の中の１ブロックであって、ＣＰＵ１１０から主メモリ１４０上の転送元領域１４１内の部分領域２４２に対して書き込まれたデータを一時格納している。
【００５４】
２４２は主メモリ１４０上の転送元領域１４１内の部分領域であって、ＣＰＵ１１０からの書き込みデータを格納するデータブロック２２３上のデータが本来格納されるべき領域である。
【００５５】
図９はＤＭＡ起動直後からのＤＭＡＣ１５０の動作を示し、図１０はデータキャッシュ１２０のデータブロック２２２のパージ後のＤＭＡＣ１５０の動作を示す。図１１は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。図１２は転送先領域２３２へのＤＭＡ直後からのＤＭＡＣ１５０の動作を示し、図１３はデータキャッシュ１２０のデータブロック２２３のパージ後のＤＭＡＣ１５０の動作を示す。
【００５６】
２７２はＤＭＡＣ１５０内の内部バッファ１５５内の部分領域であって、ＤＭＡＣ１５０の動作によって転送元領域１４１のデータを内部バッファ１５５に転送した際に、部分領域２４２上のデータを一時保持するものである。
【００５７】
図１４は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。２３３は周辺デバイス１３０の転送先領域１３１の部分領域であって、ＤＭＡＣ１５０の動作によって内部バッファ１５５のデータを転送先領域１３１に転送した際に、部分領域２７２上のデータを保持するものである。図１５はＤＭＡ動作終了の際のＤＭＡＣ１５０の動作を示す。
【００５８】
すなわち、図８に示すようにデータキャッシュ１２０は、本来、主メモリ１４０上の転送元領域１４１内の部分領域２４１に格納されるべきデータをキャッシュしてデータブロック２２２に保持し、部分領域２４２に格納されるべきデータをキャッシュしてデータブロック２２３に保持している。
【００５９】
この状態からＣＰＵ１１０は、ＤＭＡＣ１５０内の転送元アドレスカウンタ１５７に転送元領域１４１の先頭アドレスを、転送先アドレスカウンタ１５８に転送先領域１３１の先頭アドレスを、データ転送長カウンタ１５９にＤＭＡ転送を行うデータ長をセットした後、ＤＭＡＣ制御部１５６に対してＤＭＡの起動をかける。
【００６０】
図９に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９、キャッシュブロック境界判定部１６１から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。その際、パージ制御部１６０はパージ動作の範囲の末尾を、データキャッシュ１２０のデータブロックのサイズのアドレス境界と、残りデータ転送長の小さい方とする。
【００６１】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２２にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４１に書き戻される。
【００６２】
図１０に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９とキャッシュブロック境界判定部１６１の値に基づいて、転送元領域１４１からキャッシュデータブロックのサイズのアドレス境界までと、残りデータ転送長の小さい方の分のデータとを内部バッファ１５５に格納する。その際、主メモリ１４０の転送元領域１４１の部分領域２４１上のデータは、内部バッファ１５５内の部分領域２７１にコピーされる。
【００６３】
図１１に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９とキャッシュブロック境界判定部１６１の値に基づいて、内部バッファ１５５からキャッシュデータブロックのサイズのアドレス境界までと、残りデータ転送長の小さい方の分のデータとを周辺デバイス１３０の転送先領域１３１に転送する。その際、部分領域２７１のデータは、転送先領域１３１の部分領域２３２にコピーされる。
【００６４】
図１２に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９、キャッシュブロック境界判定部１６１から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。その際、パージ制御部１６０はパージ動作の範囲の末尾を、データキャッシュ１２０のデータブロックのサイズのアドレス境界と残りデータ転送長の小さい方とする。
【００６５】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２３にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４２に書き戻される。
【００６６】
図１３に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９とキャッシュブロック境界判定部１６１の値に基づいて、主メモリ１４０の転送元領域１４１からキャッシュデータブロックのサイズのアドレス境界までと、残りデータ転送長の小さい方の分のデータとを内部バッファ１５５に格納する。その際、部分領域２４２上のデータは、内部バッファ１５５内の部分領域２７２にコピーされる。
【００６７】
図１４に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９とキャッシュブロック境界判定部１６１の値に基づいて、内部バッファ１５５からキャッシュデータブロックのサイズのアドレス境界までと、残りデータ転送長の小さい方の分のデータとを周辺デバイス１３０の転送先領域１３１に転送する。その際、部分領域２７２のデータは、転送先領域１３１の部分領域２３３にコピーされる。
【００６８】
図１５に示すように、ＤＭＡＣ制御部１５６は、共有バス１８０上の割り込み通知線を使用して、ＣＰＵ１１０に対し、ＤＭＡ転送が終了したことを通知する。これでＤＭＡの一連の動作が終了する。
【００６９】
すなわち、以上の構成により、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果と、データキャッシュのデータブロック内のデータの主メモリへの書き戻しが集中することによる共有バスの一時的なトラフィック集中を防ぐ効果がある。
【００７０】
（実施の形態３）
図１６〜図２６は本発明の（実施の形態３）を示す。
図１６は本発明の（実施の形態３）に係わる半導体装置を示し、（実施の形態１）において説明した図１と同様のブロックについては、同一の番号を付し、その説明を省略する。
【００７１】
１３２は周辺デバイス１３０の転送先領域であり、周辺デバイス１３０の入出力データを格納する。１４２は主メモリ１４０の転送元領域で、ＤＭＡＣ１５０のＤＭＡ動作によって、周辺デバイス１３０の転送先領域１３２との間で転送すべきデータを格納する。
【００７２】
１６２はＤＭＡディスクリプタテーブルで、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値をＤＭＡディスクリプタＭと、後述のディスクリプタカウンタ１６３と、ディスクリプタセレクタ１６４で構成されている。
【００７３】
詳しくは、ＤＭＡディスクリプタは転送元アドレスメモリ１６５，１６８と、転送先アドレスメモリ１６６，１６９と、転送データ長メモリ１６７，１７０とを有している。
【００７４】
前記ディスクリプタカウンタ１６３は、ディスクリプタセレクタ１６４に対して、次のＤＭＡの開始前に、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値が、転送先アドレスメモリ１６５および１６８、転送元アドレスメモリ１６６および１６９、転送データ長メモリ１６７および１７０のどれに格納されているディスクリプタかを示し、ＤＭＡＣ制御部１５６に対して、格納していた全てのＤＭＡディスクリプタのＤＭＡ動作が終了したことを通知するものである。
【００７５】
ディスクリプタセレクタ１６４は、ディスクリプタカウンタ１６３からの入力を受け、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値を、転送元アドレスメモリ１６５および１６８、転送先アドレスメモリ１６６および１６９、転送データ長メモリ１６７および１７０から選択し出力する。
【００７６】
上記のように構成された半導体装置の動作について、図１７〜図２６を用いて説明する。
図１７はＤＭＡ動作開始前のデータ位置を示す。
【００７７】
２２４はデータキャッシュ１２０内のデータブロック１２１の中の１ブロックであって、ＣＰＵ１１０から主メモリ１４０上の転送元領域１４１内の部分領域２４３に対して書き込まれたデータを一時格納している。
【００７８】
２２５はデータキャッシュ１２０内のデータブロック１２１の中の１ブロックであって、ＣＰＵ１１０から主メモリ１４０上の転送元領域１４１内の部分領域２４４に対して書き込まれたデータを一時格納している。
【００７９】
２４３は主メモリ１４０上の転送元領域１４１内の部分領域で、ＣＰＵ１１０からの書き込みデータを格納するデータブロック２２４上のデータが本来格納されるべき領域である。
【００８０】
２４４は主メモリ１４０上の転送元領域１４１内の部分領域であって、ＣＰＵ１１０からの書き込みデータを格納するデータブロック２２５上のデータが本来格納されるべき領域である。
【００８１】
図１８はＤＭＡ起動直後からのＤＭＡＣ１５０の動作を示し、図１９はＤＭＡディスクリプタテーブル１６２の転送元アドレスメモリ１６５、転送先アドレスメモリ１６６、転送データ長メモリ１６７から、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９に値がロードされた直後のＤＭＡＣ１５０の動作を示す。図２０はデータキャッシュ１２０のデータブロック２２４のパージ後のＤＭＡＣ１５０の動作を示す。
【００８２】
２７３はＤＭＡＣ１５０内の内部バッファ１５５内の部分領域であって、ＤＭＡＣ１５０の動作によって転送元領域１４１のデータを内部バッファ１５５に転送した際に、部分領域２４３上のデータを一時保持するものである。
【００８３】
図２１は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。図２２は転送先領域１３１へのＤＭＡ直後からのＤＭＡＣ１５０の動作を示す。図２３はＤＭＡディスクリプタテーブル１６２の転送元アドレスメモリ１６８、転送先アドレスメモリ１６９、転送データ長メモリ１７０から、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９に値がロードされた直後のＤＭＡＣ１５０の動作を示す。
【００８４】
図２４はデータキャッシュ１２０のデータブロック２２５のパージ後のＤＭＡＣ１５０の動作を示す。２７４はＤＭＡＣ１５０内の内部バッファ１５５内の部分領域で、ＤＭＡＣ１５０の動作によって転送元領域１４２のデータを内部バッファ１５５に転送した際に、部分領域２４４上のデータを一時保持する。
【００８５】
図２５は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。２３４は周辺デバイス１３０の転送先領域１３１の部分領域で、ＤＭＡＣ１５０の動作によって内部バッファ１５５のデータを転送先領域１３１に転送した際に、部分領域２７４上のデータを保持する。図２６はＤＭＡ動作終了の際のＤＭＡＣ１５０の動作を示す。
【００８６】
すなわち、図１７に示すようにデータキャッシュ１２０は、本来、主メモリ１４０上の転送元領域１４１内の部分領域２４３に格納されるべきデータをキャッシュしてデータブロック２２４に保持し、部分領域２４４に格納されるべきデータをキャッシュしてデータブロック２２５に保持している。
【００８７】
この状態からＣＰＵ１１０は、ＤＭＡＣ１５０内のＤＭＡディスクリプタテーブル１６２の、転送先アドレスメモリ１６５に転送元領域１４１の先頭アドレスを、転送元アドレスメモリ１６６に転送先領域１３１の先頭アドレスを、転送データ長メモリ１６７にＤＭＡ転送を行うデータ長を、転送先アドレスメモリ１６８に転送元領域１４２の先頭アドレスを、転送元アドレスメモリ１６９に転送先領域１３２の先頭アドレスを、転送データ長メモリ１７０にＤＭＡ転送を行うデータ長をセットした後、ＤＭＡＣ制御部１５６に対してＤＭＡの起動をかける。
【００８８】
図１８に示すように、ＤＭＡＣ制御部１５６からの入力を受けて、ディスクリプタカウンタ１６３が、ディスクリプタセレクタ１６４に対し、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値を、転送元アドレスメモリ１６５、転送先アドレスメモリ１６６、転送データ長メモリ１６７と選択し、出力する。
【００８９】
図１９に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【００９０】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２４にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４３に書き戻される。
【００９１】
図２０に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９との値に基づいて、転送元領域１４１からデータを内部バッファ１５５に格納する。その際、部分領域２４３上のデータは、内部バッファ１５５内の部分領域２７３にコピーされる。
【００９２】
図２１に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９との値に基づいて、内部バッファ１５５からデータを周辺デバイス１３０の転送先領域１３１に転送する。その際、部分領域２７３のデータは、転送先領域１３１の部分領域２３３にコピーされる。
【００９３】
図２２に示すように、ＤＭＡＣ制御部１５６からの入力を受けて、ディスクリプタカウンタ１６３が、ディスクリプタセレクタ１６４に対し、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値を、転送元アドレスメモリ１６８、転送先アドレスメモリ１６９、転送データ長メモリ１７０と選択し、出力する。
【００９４】
図２３に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【００９５】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２５にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４４に書き戻される。
【００９６】
図２４に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９との値に基づいて、転送元領域１４１からデータを内部バッファ１５５に格納する。その際、部分領域２４４上のデータは、内部バッファ１５５内の部分領域２７４にコピーされる。
【００９７】
図２５に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９との値に基づいて、内部バッファ１５５からデータを周辺デバイス１３０の転送先領域１３２に転送する。
その際、部分領域２７４のデータは、転送先領域１３２の部分領域２３４にコピーされる。
【００９８】
図２６に示すように、ＤＭＡＣ制御部１５６は、共有バス１８０上の割り込み通知線を使用して、ＣＰＵ１１０に対し、ＤＭＡ転送が終了したことを通知する。これでＤＭＡの一連の動作が終了する。
【００９９】
すなわち、以上の構成により、ＤＭＡディスクリプタテーブルを持ち、複数のＤＭＡを１回の起動で実行できるＤＭＡＣに対しても、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果がある。
【０１００】
（実施の形態４）
図２７〜図３８は本発明の（実施の形態４）を示す。
図２７は本発明の（実施の形態４）に係わる半導体装置を示し、（実施の形態３）において説明した図１６と同様のブロックについては、同一の番号を付し、その説明を省略する。
【０１０１】
１４３はＤＭＡディスクリプタテーブルで、主メモリ１４０内において、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値を複数個保持する。
【０１０２】
１４４は転送元アドレスで、主メモリ１４０内において、転送元アドレスカウンタ１５７にロードすべき値を保持する。
１４５は転送先アドレスで、主メモリ１４０内において、転送先アドレスカウンタ１５８にロードすべき値を保持する。
【０１０３】
１４６は転送データ長で、主メモリ１４０内において、データ転送長カウンタ１５９にロードすべき値を保持する。
１４７は転送元アドレスで、主メモリ１４０内において、転送元アドレスカウンタ１５７にロードすべき値を保持する。
【０１０４】
１４８は転送先アドレスで、主メモリ１４０内において、転送先アドレスカウンタ１５８にロードすべき値を保持する。
１４９は転送データ長で、主メモリ１４０内において、データ転送長カウンタ１５９にロードすべき値を保持する。
【０１０５】
ＤＭＡＣ１５０には、ディスクリプタアドレスカウンタ１７１とディスクリプタＤＭＡ制御部１７２が追加されている。
ディスクリプタアドレスカウンタ１７１は、ディスクリプタセレクタ１６４に対して、次のＤＭＡの開始前に、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値が、転送先アドレス１４４および１４７、転送元アドレスメモリ１４５および１４８、転送データ長メモリ１４６および１４９に格納されているどのディスクリプタかを示すためにディスクリプタの先頭アドレスを格納するものである。
【０１０６】
ディスクリプタＤＭＡ制御部１７２は、ＣＰＵ１１０から起動され、まずパージ制御部１６０に対し、ディスクリプタカウンタ１７１の値をロードさせ、それを受けてパージ制御部１６０は、ディスクリプタアドレスカウンタの値からＤＭＡディスクリプタテーブル１４３をデータキャッシュ１２０から主メモリ１４０に書き出させ、それに続いて、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードすべき値を、転送元アドレス１６５、転送先アドレスメモリ１６６、転送データ長メモリ１６７からＤＭＡ動作により設定するものである。
【０１０７】
上記のように構成された半導体装置の動作について、図２８〜図３８を用いて説明する。
図２８はＤＭＡ動作開始前のデータ位置を示す。
【０１０８】
２２６はデータキャッシュ１２０内のデータブロック１２１の中の１ブロックであって、ＣＰＵ１１０から主メモリ１４０上の転送元領域１４１内の部分領域２４５に対して書き込まれたデータを一時格納している。部分領域２４５は主メモリ１４０上のＤＭＡディスクリプタテーブル１４３内の部分領域で、ＣＰＵ１１０からの書き込みデータを格納するデータブロック２２６上のデータが本来格納されるべき領域である。
【０１０９】
図２９はＤＭＡ起動直後からのＤＭＡＣ１５０の動作を示し、図３０はデータキャッシュ１２０のデータブロック２２６のパージ後のＤＭＡＣ１５０の動作を示す。図３１はＤＭＡディスクリプタテーブル１４３の転送元アドレス１４４、転送先アドレス１４５、転送データ長１４６から、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９に、ＤＭＡ動作によって、値がロードされた直後のＤＭＡＣ１５０の動作を示す。図３２はデータキャッシュ１２０のデータブロック２２４のパージ後のＤＭＡＣ１５０の動作を示し、図３３は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。図３４は転送先領域１３１へのＤＭＡ直後からのＤＭＡＣ１５０の動作を示す。図３５はＤＭＡディスクリプタテーブル１４３の転送元アドレス１４７、転送先アドレス１４８、転送データ長１４９から、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９に、ＤＭＡ動作によって値がロードされた直後のＤＭＡＣ１５０の動作を示す。図３６はデータキャッシュ１２０のデータブロック２２５のパージ後のＤＭＡＣ１５０の動作を示す。図３７は内部バッファ１５５への転送直後のＤＭＡＣ１５０の動作を示す。図３８はＤＭＡ動作終了の際のＤＭＡＣ１５０の動作を示す。
【０１１０】
すなわち、図２８に示すようにデータキャッシュ１２０は、本来、主メモリ１４０上の転送元領域１４１内の部分領域２４３に格納されるべきデータをキャッシュしてデータブロック２２４に保持し、部分領域２４４に格納されるべきデータをキャッシュしてデータブロック２２５に保持し、部分領域２４５に格納されるべきデータをキャッシュしてデータブロック２２６に保持している。
【０１１１】
データブロック２２６に保持されているデータには、転送先アドレス１４４に格納されるべき転送元領域１４１の先頭アドレス、転送元アドレス１４５に格納されるべき転送先領域１３１の先頭アドレス、転送データ長１４６に格納されるべきＤＭＡ転送を行うデータ長、転送先アドレス１４７に格納されるべき転送元領域１４２の先頭アドレス、転送元アドレス１４８に格納されるべき転送先領域１３２の先頭アドレス、転送データ長１４９に格納されるべきＤＭＡ転送を行うデータ長が含まれている。
【０１１２】
この状態からＣＰＵ１１０は、ＤＭＡＣ１５０内のディスクリプタアドレスカウンタ１７１にＤＭＡディスクリプタテーブル２４５の先頭アドレスをセットした後、ディスクリプタＤＭＡ制御部１７２に対してＤＭＡの起動をかける。
【０１１３】
図２９に示すように、ディスクリプタＤＭＡ制御部１７２からの指示を受けて、パージ制御部１６０はディスクリプタアドレスカウンタ１７１から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【０１１４】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バスインタフェース１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２６にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４５に書き戻される。
【０１１５】
図３０に示すように、ディスクリプタＤＭＡ制御部１７２はディスクリプタアドレスカウンタ１７１の示すアドレスから、転送元アドレス１４４、転送先アドレス１４５、転送データ長１４６のデータをＤＭＡ動作によって、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードする。続いて、ディスクリプタＤＭＡ制御部１７２は、ＤＭＡＣ制御部１５６にＤＭＡ起動を行う。
【０１１６】
図３１に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【０１１７】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バスインタフェース１３１と共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２４にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４３に書き戻される。
【０１１８】
図３２に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９との値に基づいて、転送元領域１４１からデータを内部バッファ１５５に格納する。その際、部分領域２４３上のデータは、内部バッファ１５５内の部分領域２７３にコピーされる。
【０１１９】
図３３に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９との値に基づいて、内部バッファ１５５からデータを周辺デバイス１３０の転送先領域１３１に転送する。その際、部分領域２７３のデータは、転送先領域１３１の部分領域２３３にコピーされる。
【０１２０】
図３４に示すように、ディスクリプタＤＭＡ制御部１７２はディスクリプタアドレスカウンタ１７１の示すアドレスから、転送元アドレス１４７、転送先アドレス１４８、転送データ長１４９のデータをＤＭＡ動作によって、転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９にロードする。続いて、ディスクリプタＤＭＡ制御部１７２は、ＤＭＡＣ制御部１５６にＤＭＡ起動を行う。
【０１２１】
図３５に示すように、ＤＭＡＣ制御部１５６からの指示を受けて、パージ制御部１６０は転送元アドレスカウンタ１５７、転送先アドレスカウンタ１５８、データ転送長カウンタ１５９から値を取り込む。その値からデータキャッシュ１２０のパージ動作の対象となる範囲を求める。
【０１２２】
それに基づいて、パージ制御部１６０はＣＰＵ１１０の強制パージ手段１１２に対し、共有バスインタフェース１３０と共有バス１８０を経由して、データキャッシュ１２０の強制パージ動作を行う。その結果、データキャッシュ１２０上のデータブロック２２５にあるデータは、主メモリ１４０の転送元領域１４１内の部分領域２４４に書き戻される。
【０１２３】
図３６に示すように、ＤＭＡＣ制御部１５６は、次に転送元アドレスカウンタ１５７の値とデータ転送長カウンタ１５９との値に基づいて、転送元領域１４１からデータを内部バッファ１５５に格納する。その際、部分領域２４４上のデータは、内部バッファ１５５内の部分領域２７４にコピーされる。
【０１２４】
図３７に示すように、ＤＭＡＣ制御部１５６は、次に転送先アドレスカウンタ１５８の値とデータ転送長カウンタ１５９との値に基づいて、内部バッファ１５５からデータを周辺デバイス１３０の転送先領域１３２に転送する。その際、部分領域２７４のデータは、転送先領域１３２の部分領域２３４にコピーされる。
【０１２５】
図３８に示すように、ＤＭＡＣ制御部１５６は、共有バス１８０上の割り込み通知線を使用して、ＣＰＵ１１０に対し、ＤＭＡ転送が終了したことを通知する。これでＤＭＡの一連の動作が終了する。
【０１２６】
すなわち、以上の構成により、主メモリ１２０上にＤＭＡディスクリプタテーブルを持ち、複数のＤＭＡを１回の起動で実行できるＤＭＡＣ１５０に対しても、データキャッシュ１２０内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイス１３０へのＤＭＡ動作が可能となり、ＣＰＵ１１０によるデータキャッシュ１２０のデータブロック内のデータの主メモリ１４０への書き戻しが必要ないという効果がある。
【０１２７】
【発明の効果】
以上のように本発明の請求項１の構成によると、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果がある。
【０１２８】
また、本発明の請求項２の構成によると、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果と、データキャッシュのデータブロック内のデータの主メモリへの書き戻しが集中することによる共有バスの一時的なトラフィック集中を防ぐ効果がある。
【０１２９】
また、本発明の請求項３の構成によると、ＤＭＡディスクリプタテーブルを持ち、複数のＤＭＡを１回の起動で実行できる場合でも、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果がある。
【０１３０】
また、本発明の請求項４の構成によると、主メモリ上にＤＭＡディスクリプタテーブルを持ち、複数のＤＭＡを１回の起動で実行できる場合でも、データキャッシュ内のデータブロックにデータが格納されている領域を含む転送元領域から周辺デバイスへのＤＭＡ動作が可能となり、ＣＰＵによるデータキャッシュのデータブロック内のデータの主メモリへの書き戻しが必要ないという効果がある。
【図面の簡単な説明】
【図１】本発明の（実施の形態１）に係わる半導体装置のブロック図
【図２】同実施の形態のＤＭＡ動作開始前のデータ位置を示す説明図
【図３】同実施の形態のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図４】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図５】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図６】同実施の形態のＤＭＡ動作終了の際のＤＭＡＣの動作を示す説明図
【図７】本発明の（実施の形態２）に係わる半導体装置のブロック図
【図８】同実施の形態のＤＭＡ動作開始前のデータ位置を示す説明図
【図９】同実施の形態のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図１０】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図１１】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図１２】同実施の形態のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図１３】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図１４】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図１５】同実施の形態のＤＭＡ動作終了の際のＤＭＡＣの動作を示す説明図
【図１６】本発明の（実施の形態３）に係わる半導体装置のブロック図
【図１７】同実施の形態のＤＭＡ動作開始前のデータ位置を示す説明図
【図１８】同実施の形態のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図１９】同実施の形態のＤＭＡディスクリプタテーブルの転送元アドレスメモリ、転送先アドレスメモリ、転送データ長メモリから、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタに値がロードされた直後のＤＭＡＣの動作を示す説明図
【図２０】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図２１】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図２２】同実施の形態の転送先領域へのＤＭＡ直後からのＤＭＡＣの動作を示す説明図
【図２３】同実施の形態のＤＭＡディスクリプタテーブルの転送元アドレスメモリ、転送先アドレスメモリ、転送データ長メモリから、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタに値がロードされた直後のＤＭＡＣの動作を示す説明図
【図２４】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図２５】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図２６】同実施の形態のＤＭＡ動作終了の際のＤＭＡＣの動作を示す説明図
【図２７】本発明の（実施の形態４）に係わる半導体装置のブロック図
【図２８】同実施の形態のＤＭＡ動作開始前のデータ位置を示す説明図
【図２９】同実施の形態のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図３０】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図３１】同実施の形態のＤＭＡディスクリプタテーブルの転送元アドレス、転送先アドレス、転送データ長から、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタに、ＤＭＡ動作によって、値がロードされた直後のＤＭＡＣの動作を示す説明図
【図３２】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図３３】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図３４】同実施の形態の転送先領域へのＤＭＡ直後からのＤＭＡＣの動作を示す説明図
【図３５】同実施の形態のＤＭＡディスクリプタテーブルの転送元アドレス、転送先アドレス、転送データ長から、転送元アドレスカウンタ、転送先アドレスカウンタ、データ転送長カウンタに、ＤＭＡ動作によって、値がロードされた直後のＤＭＡＣの動作を示す説明図
【図３６】同実施の形態のデータキャッシュパージ後のＤＭＡＣの動作を示す説明図
【図３７】同実施の形態の内部バッファへの転送直後のＤＭＡＣの動作を示す説明図
【図３８】同実施の形態のＤＭＡ動作終了の際のＤＭＡＣの動作を示す説明図
【図３９】従来例に係わる半導体装置のブロック図
【図４０】同従来例のＤＭＡ動作開始前のデータ位置を示す説明図
【図４１】同従来例のＣＰＵ７１０によるデータキャッシュのパージ動作を示す説明図
【図４２】同従来例のＣＰＵ７１０によるＤＭＡ起動の動作を示す説明図
【図４３】同従来例のＤＭＡ起動直後からのＤＭＡＣの動作を示す説明図
【図４４】同従来例の内部バッファ７５５への転送直後のＤＭＡＣ７５０の動作を示す説明図
【図４５】同従来例のＤＭＡ動作終了の際のＤＭＡＣ７５０の動作を示す説明図
【符号の説明】
１００  半導体装置
１１０  ＣＰＵ
１１１  強制パージ手段
１１２  ＣＰＵ内部インタフェース
１１３  共有バスインタフェース
１２０  データキャッシュ
１２１  データブロック
１２２  タグアドレス
１３０  周辺デバイス
１３１  転送先領域
１４０  主メモリ
１４１  転送元領域
１４３  ＤＭＡディスクリプタテーブル
１５０  ＤＭＡＣ
１５１  データセレクタ
１５２  デマルチプレクサ
１５３  アドレスセレクタ
１５４  アドレスデコーダ
１５５  内部バッファ
１５６  ＤＭＡＣ制御部
１５７  転送元アドレスカウンタ
１５８  転送先アドレスカウンタ
１５９  データ転送長カウンタ
１６０  パージ制御部
１６１  キャッシュブロック境界判定部
１６２  ＤＭＡディスクリプタテーブル
１６３  ディスクリプタカウンタ
１６４  ディスクリプタセレクタ
１６５，１６８  ＤＭＡディスクリプタである転送元アドレスメモリ
１６６，１６９  ＤＭＡディスクリプタである転送先アドレスメモリ
１６７，１７０  ＤＭＡディスクリプタである転送データ長メモリ
１７１  ディスクリプタアドレスカウンタ
１７２  ディスクリプタＤＭＡ制御部
１８０  共有バス
【図１】
2004258935.tif 000003
【図２】
2004258935.tif 000004
【図３】
2004258935.tif 000005
【図４】
2004258935.tif 000006
【図５】
2004258935.tif 000007
【図６】
2004258935.tif 000008
【図７】
2004258935.tif 000009
【図８】
2004258935.tif 000010
【図９】
2004258935.tif 000011
【図１０】
2004258935.tif 000012
【図１１】
2004258935.tif 000013
【図１２】
2004258935.tif 000014
【図１３】
2004258935.tif 000015
【図１４】
2004258935.tif 000016
【図１５】
2004258935.tif 000017
【図１６】
2004258935.tif 000018
【図１７】
2004258935.tif 000019
【図１８】
2004258935.tif 000020
【図１９】
2004258935.tif 000021
【図２０】
2004258935.tif 000022
【図２１】
2004258935.tif 000023
【図２２】
2004258935.tif 000024
【図２３】
2004258935.tif 000025
【図２４】
2004258935.tif 000026
【図２５】
2004258935.tif 000027
【図２６】
2004258935.tif 000028
【図２７】
2004258935.tif 000029
【図２８】
2004258935.tif 000030
【図２９】
2004258935.tif 000031
【図３０】
2004258935.tif 000032
【図３１】
2004258935.tif 000033
【図３２】
2004258935.tif 000034
【図３３】
2004258935.tif 000035
【図３４】
2004258935.tif 000036
【図３５】
2004258935.tif 000037
【図３６】
2004258935.tif 000038
【図３７】
2004258935.tif 000039
【図３８】
2004258935.tif 000040
【図３９】
2004258935.tif 000041
【図４０】
2004258935.tif 000042
【図４１】
2004258935.tif 000043
【図４２】
2004258935.tif 000044
【図４３】
2004258935.tif 000045
【図４４】
2004258935.tif 000046
【図４５】
2004258935.tif 000047