(57)【要約】　　　（修正有）【課題】ＤＭＡ転送中のデータの参照を可能にし、ＤＭＡ転送中のＣＰＵの待ち時間を減少させる。【解決手段】ＤＭＡ転送対象のデータに対するＣＰＵ７０からの参照要求を検出する検出手段１２を含み、実行中のＤＭＡ転送よりも優先して、前記参照要求が検出されたデータをＣＰＵ７０に参照させるＤＭＡ転送制御装置１０を用いる。【選択図】　　図１
2004145376.tif 000002
【特許請求の範囲】
【請求項１】
システム・バスを介してＣＰＵ（中央処理装置）に接続されたメイン・メモリを有するデータ処理システムにおいてメモリ・ツー・メモリのＤＭＡ（直接メモリ・アクセス）転送を行うＤＭＡコントローラの制御方法であって、
ＤＭＡ転送中のデータ・ブロックに含まれるデータに対するＣＰＵからのアクセス要求を検出する検出ステップと、
実行中のＤＭＡ転送よりも優先して、ＣＰＵを前記アクセス要求が検出されたデータにアクセスさせる転送制御ステップと
を含むＤＭＡ転送制御方法。
【請求項２】
前記検出ステップが、
前記アクセス要求が検出されたデータのＤＭＡ転送の完了／未完了を判定するステップを含み、
前記転送制御ステップが、
前記アクセス要求が検出されたデータのＤＭＡ転送が完了していれば、ＣＰＵを前記データにアクセスさせる第１のステップと、
前記アクセス要求が検出されたデータのＤＭＡ転送が未完了であれば、そのデータを最優先でＤＭＡ転送し、ＣＰＵをＤＭＡ転送が完了した前記データにアクセスさせる第２のステップと
を含む請求項１のＤＭＡ転送制御方法。
【請求項３】
前記ＤＭＡコントローラが、ＤＭＡ転送が未完了のデータ数が記憶される第１のレジスタと、ＤＭＡ転送中のデータのアドレスが記憶される第２のレジスタとを含み、
前記検出ステップが、前記アクセス要求が検出されたデータのアドレスと、前記第１のレジスタと第２のレジスタから求まるＤＭＡ転送が未完了のデータのアドレスとの一致を検出するステップを含む請求項２のＤＭＡ転送制御方法。
【請求項４】
前記ＤＭＡコントローラがＣＰＵとシステム・バスとの間に接続されており、
前記第２のステップが、
実行中のＤＭＡ転送を中断するステップと、
前記ＤＭＡ転送が未完了のデータをＤＭＡ転送するステップと、
ＣＰＵをＤＭＡ転送が完了した前記データにアクセスさせるステップと、
前記中断しているＤＭＡ転送を再開するステップと
を含む請求項２又は請求項３のＤＭＡ転送制御方法。
【請求項５】
前記ＤＭＡコントローラがシステム・バスを介してＣＰＵとメイン・メモリに接続されており、
前記第２のステップが、
ＣＰＵに前記ＤＭＡ転送が未完了のデータに対するアクセスの再試行を要求するステップと、
ＣＰＵが前記データのアクセスを一旦中止してから再度アクセスするまでの間に、実行中のＤＭＡ転送を中断して、前記データをＤＭＡ転送するステップと、
ＤＭＡ転送が完了した前記データにＣＰＵがアクセスした後、前記中断しているＤＭＡ転送を再開するステップと
を含む請求項２又は請求項３のＤＭＡ転送制御方法。
【請求項６】
システム・バスを介してＣＰＵに接続されたメイン・メモリを有するデータ処理システムにおいてメモリ・ツー・メモリのＤＭＡ転送を制御する装置であって、
ＤＭＡ転送中のデータ・ブロックに含まれるデータに対するＣＰＵからのアクセス要求を検出する検出手段と、
実行中のＤＭＡ転送よりも優先して、ＣＰＵを前記アクセス要求が検出されたデータにアクセスさせる転送制御手段と
を含むＤＭＡ転送制御装置。
【請求項７】
前記検出手段が、
前記アクセス要求が検出されたデータのＤＭＡ転送が未完了であることを検出する手段を含み、
前記転送制御手段が、
前記アクセス要求されたデータを最優先でＤＭＡ転送する手段と、
ＣＰＵをＤＭＡ転送が完了した前記データにアクセスさせる手段と
を含む請求項６のＤＭＡ転送制御装置。
【請求項８】
前記ＤＭＡ転送制御装置が、ＤＭＡ転送が未完了のデータ数が記憶される第１のレジスタと、ＤＭＡ転送中のデータのアドレスが記憶される第２のレジスタとを含み、
前記検出手段が、前記アクセス要求が検出されたデータのアドレスと、前記第１のレジスタと第２のレジスタから求まるＤＭＡ転送が未完了のデータのアドレスとの一致を検出する手段を含む請求項７のＤＭＡ転送制御装置。
【請求項９】
前記検出手段と転送制御手段とが、ＣＰＵとシステム・バスとの間に接続される請求項６乃至請求項８のいずれかのＤＭＡ転送制御装置。
【請求項１０】
前記検出手段がＣＰＵとシステム・バスとの間に接続され、前記転送制御手段がシステム・バスを介してＣＰＵとメイン・メモリに接続される請求項６乃至請求項８のいずれかのＤＭＡ転送制御装置。
【請求項１１】
前記検出手段が、前記ＤＭＡ転送が未完了であることが検出されたデータが一時的に記憶されるバッファ・メモリを含む請求項１０のＤＭＡ転送制御装置。
【請求項１２】
ＣＰＵとシステム・バスとの間にキャッシュ・メモリが接続された請求項６乃至請求項１１のいずれかのＤＭＡ転送制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＤＭＡ（ダイレクト・メモリ・アクセス）転送の制御方法及び制御装置に関し、より詳しくは、メモリ・ツー・メモリ（ｍｅｍｏｒｙ−ｔｏ−ｍｅｍｏｒｙ）のＤＭＡ転送制御方法及び制御装置に関する。
【０００２】
【従来の技術】
図９（ａ），（ｂ），（ｃ），（ｄ）はメイン・メモリのメモリ領域間で行われるメモリ・ツー・メモリのＤＭＡ転送の概略を示す。図９のデータ処理システムでは、システム・バス８０に、ＣＰＵ（中央処理装置）７０及びキャッシュ・ユニット７２と、メイン・メモリ９０と、ＤＭＡコントローラ８２が接続されている。
【０００３】
キャッシュ・ユニット７２は、ＣＰＵ７０とシステム・バス８０との間に接続され、タグ７４とキャッシュ７６を含む。キャッシュ７６はメイン・メモリ９０に記憶されているデータの一部が記憶されるメモリであり、タグ７４はキャッシュ７６に記憶されているデータのアドレスが記憶されるメモリである。ＣＰＵ７０は、アクセスするデータがキャッシュ７６内に有ればキャッシュ７６にアクセスし、アクセスするデータがキャッシュ７６内に無ければメイン・メモリ９０にアクセスする。
【０００４】
メイン・メモリ９０はＤＲＡＭ（ｄｙｎａｍｉｃ　ｒａｎｄｏｍ　ａｃｃｅｓｓ　ｍｅｍｏｒｙ）等の半導体メモリであり、ＤＭＡコントローラ８２は、ＣＰＵ７０を介さずに、メイン・メモリ９０のメモリ領域間でメモリ・ツー・メモリのデータ転送を行う。メモリ領域間のデータ転送は、図９（ａ），（ｂ），（ｃ），（ｄ）に示すように、メイン・メモリ９０内の転送元から転送先へのデータ転送を意味する。ＤＭＡコントローラ８２によるデータ転送（以下、ＤＭＡデータ転送）とＣＰＵ７０の処理とは並行して実行することができる。ＤＭＡデータ転送は、データの移動はもちろん、データのコピーも含む。
【０００５】
例えば複数の命令又は命令群が同一のデータを使用する場合、オリジナルのデータを直接使用せず、メイン・メモリ９０内でそのデータをコピーして使用することが多い。ＤＭＡ転送は、データ・ブロック単位で行われる。データ・ブロックの一例を図１０（ａ）に示す。データ・ブロックＤＢは、メイン・メモリ９０の転送元のアドレスＡＤ１’　，ＡＤ２’　，ＡＤ３’　，ＡＤ４’　，ＡＤ５’　，ＡＤ６’　，ＡＤ７’　，ＡＤ８’のデータＤＡＴＡ１　，ＤＡＴＡ２　，ＤＡＴＡ３　，ＤＡＴＡ４　，ＤＡＴＡ５　，ＤＡＴＡ６　，ＤＡＴＡ７　，ＤＡＴＡ８を含む。各データＤＡＴＡ１　，ＤＡＴＡ２　，ＤＡＴＡ３　，ＤＡＴＡ４　，ＤＡＴＡ５　，ＤＡＴＡ６　，ＤＡＴＡ７　，ＤＡＴＡ８は、メイン・メモリ９０の転送先のアドレスＡＤ１　，ＡＤ２　，ＡＤ３　，ＡＤ４　，ＡＤ５　，ＡＤ６　，ＡＤ７　，ＡＤ８にコピーされる。
【０００６】
ＤＭＡコントローラ８２は、図９（ａ）に示すように、ＤＭＡ転送が未完了のデータ数が記憶されるレジスタ８４（以下、転送カウンタ８４という）と、転送中のデータのアドレスが記憶されるレジスタ８６（以下、転送アドレス８６という）を含む。図１０（ａ）のデータ・ブロックＤＢの場合、転送カウンタ８４には、初期値としてデータ総数の「８」が記憶される。データのＤＭＡ転送が完了する毎に、ＤＭＡコントローラ８２は転送カウンタ８４の値を１つ減少させる。
【０００７】
転送アドレス８６には、ＤＭＡ転送中のデータの転送元アドレスと転送先アドレスとが記憶される。図１０（ａ）のデータ・ブロックＤＢの場合は、初期値として、転送元のアドレスＡＤ１’と転送先のアドレスＡＤ１とが記憶される。データのＤＭＡ転送が完了する毎に、ＤＭＡコントローラ８２は転送元及び転送先のアドレスを更新する。
【０００８】
図１０（ｂ）にデータ・ブロックＤＢのＤＭＡデータ転送の概要を示す。データが転送される毎に転送カウンタ８４と転送アドレス８６が更新され、ＤＡＴＡ１〜ＤＡＴＡ８が順に転送される。ＤＡＴＡ８のＤＭＡ転送が完了すると、転送カウンタは「０」となり（図示していない）、データ・ブロックＤＢのＤＭＡ転送は終了となる。ここで、図中の「ＡＤ１’→ＡＤ１」は、転送元アドレスがＡＤ１’で転送先アドレスがＡＤ１であることを示す。
【０００９】
ＤＭＡ転送が未完了のデータは、ＤＭＡ転送が完了するまでアクセスすることはできない。ＣＰＵ７０がＤＭＡ転送先のデータにアクセスする手順の一例を図１１に示す。図９（ｂ）に示すようにデータ・ブロックＤＢのＤＭＡ転送が開始（Ｓ１６０）された後、ＣＰＵ７０からＤＭＡ転送先のデータへのアクセス要求が発生しても（Ｓ１６２）、ＤＭＡ転送がそのまま続行される（Ｓ１６３）。データ・ブロックＤＢのＤＭＡ転送が終了すると（Ｓ１６４）、図９（ｃ）に示すようにＤＭＡコントローラ８２からＣＰＵ７０にＤＭＡ転送の終了（割込み信号ＩＮＴ）が通知される（Ｓ１６６）。データ・ブロックＤＢのＤＭＡ転送が完了したので、図９（ｄ）に示すようにＣＰＵ７０はＤＭＡ転送後のデータにアクセスする（Ｓ１６８）。
【００１０】
例えば、図１２に示すように、ＤＡＴＡ１の転送完了（Ｓ１８０）後にＣＰＵ７０からＤＡＴＡ７のアクセス要求が発生（Ｓ１６２）した場合、ＤＡＴＡ２〜ＤＡＴＡ８のＤＭＡ転送が完了（Ｓ１８２　，Ｓ１８４　，Ｓ１８６　，Ｓ１８８　，Ｓ１９０　，Ｓ１９２　，Ｓ１９４）した後に、ＣＰＵ７０はＤＡＴＡ７にアクセスする（Ｓ１６８）。ＤＡＴＡ２〜ＤＡＴＡ８のＤＭＡ転送中、ＣＰＵ７０はＤＡＴＡ７にアクセスできず、待ち時間が生じる。もちろん、ＤＭＡ転送と並行してＣＰＵ７０に他の処理を実行させることもできる。しかし、ＤＭＡ転送中に必ずＣＰＵ７０に割り当て可能な他の処理が存在するわけでは無い。
【００１１】
【発明が解決しようとする課題】
本発明の目的は、ＤＭＡ転送中のデータへのアクセスを可能にし、ＤＭＡ転送中のＣＰＵの待ち時間を減少させることにある。
【００１２】
【課題を解決するための手段】
本発明のメモリ・ツー・メモリのＤＭＡ転送制御方法は、ＤＭＡ転送中のデータ・ブロックに含まれるデータに対するＣＰＵからのアクセス要求を検出する検出ステップと、実行中のＤＭＡ転送よりも優先して、ＣＰＵを前記アクセス要求が検出されたデータにアクセスさせる転送制御ステップとを含む。
【００１３】
本発明のＤＭＡ転送制御装置は、ＤＭＡ転送中のデータ・ブロックに含まれるデータに対するＣＰＵからのアクセス要求を検出する検出手段と、実行中のＤＭＡ転送よりも優先して、ＣＰＵを前記アクセス要求が検出されたデータにアクセスさせる転送制御手段とを含む。ＣＰＵがＤＭＡ転送中のデータ・ブロックに含まれるデータにアクセスすることを検出手段で検出し、転送制御手段でそのデータを優先的にＤＭＡ転送できるので、ＣＰＵはＤＭＡ転送中のデータに少ない待ち時間でアクセスできる。
【００１４】
【発明の実施の形態】
次に、本発明に係るメモリ・ツー・メモリのＤＭＡ転送制御方法及び制御装置の実施の形態について、図面に基づいて詳しく説明する。この例では、メイン・メモリのメモリ領域間でメモリ・ツー・メモリＤＭＡ転送が行われるものとする。例示されるデータ処理システムにおいて、ＣＰＵ７０　，キャッシュ・ユニット７２　，システム・バス８０　，メイン・メモリ９０は従来（図９（ａ））と同様であるものとする。さらに、ＤＭＡ転送するデータ・ブロックＤＢは従来（図１０（ａ））と同様であるものとする。
【００１５】
図１に示す本発明のメモリ・ツー・メモリのＤＭＡ転送制御装置（ＤＭＡコントローラ）１０は、ＤＭＡ転送中のデータ・ブロックに含まれるデータに対するＣＰＵ７０からのアクセス要求を検出するＤＭＡヒット検出器１２を含む。ＤＭＡコントローラ１０は、実行中のデータ・ブロックのＤＭＡ転送よりも優先して、ＣＰＵ７０をＤＭＡヒット検出器１２でアクセス要求が検出されたデータにアクセスさせる手段として機能する。ＤＭＡヒット検出器１２を含んだＤＭＡコントローラ１０は、ＣＰＵ７０とシステム・バス８０との間に接続される。
【００１６】
ＤＭＡヒット検出器１２は、ＤＭＡ転送が未完了のデータへのアクセスをＣＰＵ７０が要求しているか否かを検出する。ＤＭＡコントローラ１０は、ＤＭＡヒット検出器１２が検出したＤＭＡ転送が未完了のデータを最優先でＤＭＡ転送し、ＤＭＡ転送後にそのデータをＣＰＵ７０に送る。
【００１７】
ＤＭＡコントローラ１０は、従来と同様に転送カウンタ８４と転送アドレス８６を含む。ＤＭＡヒット検出器１２は、転送カウンタ８４と転送アドレス８６にアクセスすることで、ＤＭＡ転送が未完了のデータのアドレスを知ることができる。ＣＰＵ７０がアクセスするデータのアドレスは、キャッシュ・ユニット７２とＤＭＡコントローラ１０に送られる。ＤＭＡヒット検出器１２は、ＣＰＵ７０がアクセスを要求しているデータ（以下、要求データという）のアドレスと、ＤＭＡ転送が未完了のデータのアドレスとの一致を検出する。以下、要求データのＤＭＡ転送が未完了の場合を「ＤＭＡヒット」と呼ぶ。
【００１８】
ＤＭＡヒットが検出された場合、要求データのＤＭＡ転送は未完了である。ＤＭＡコントローラ１０は、実行中のデータ・ブロックのＤＭＡ転送を中断し、要求データのＤＭＡ転送を先に行う。要求データのＤＭＡ転送が終了すると、ＤＭＡコントローラ１０は要求データをＭＰＵ７０に送る。その後、転送カウンタ８４と転送アドレス８６を参照して、中断していたデータ・ブロックのＤＭＡ転送を再開する。
【００１９】
ＤＭＡヒットが検出されない場合、要求データのＤＭＡ転送は既に完了している。その場合、ＣＰＵ７０は、データ・ブロックのＤＭＡ転送が完了していなくても正しいデータにアクセスできる。ＣＰＵ７０はキャッシュ・ユニット７２を介してキャッシュ７６又はメイン・メモリ９０へアクセスし、要求データにアクセスする。
【００２０】
次に、このようなＤＭＡコントローラ１０を用いたＤＭＡ転送制御について、その作用を説明する。
【００２１】
ＤＭＡ転送制御手順の一例を図３に示す。図１（ｂ）に示すようにＤＭＡコントローラ１０がデータ・ブロックのＤＭＡ転送を開始（Ｓ１６０）した後に、ＣＰＵ７０からデータ・アクセス要求が発生（Ｓ１６２）したとする。図１（ｃ）に示すようにＣＰＵ７０からは要求データＤＡＴＡｎのアドレスＡＤｎがＤＭＡコントローラ１０とキャッシュ・ユニット７２に送られる。ＤＭＡコントローラ１０は、ＤＭＡヒット検出器１２でＤＭＡヒットの検出を行う（Ｓ１１０）。
【００２２】
ＤＭＡヒットが検出された場合、ＤＭＡコントローラ１０は、実行中のデータ・ブロックのＤＭＡ転送を中断し（Ｓ１１２）、図１（ｄ）に示すように要求データのＤＭＡ転送を行う（Ｓ１１４）。ＤＭＡヒットが検出された場合、ＤＭＡコントローラ１０がシステム・バスを優先的に使用する。ＤＭＡ転送が完了すると、ＤＭＡコントローラ１０は、図２（ａ）に示すように、要求データ（ＤＡＴＡｎ）をメイン・メモリ９０からＣＰＵ７０に送り（Ｓ１１６）、その後、中断していたデータ・ブロックのＤＭＡ転送を再開する（Ｓ１２４）。
【００２３】
ＤＭＡヒットが検出されない場合、ＤＭＡコントローラ１０は実行中のデータ・ブロックのＤＭＡ転送を中断する（Ｓ１１２）。図２（ｂ）に示すように、ＣＰＵ７０はキャッシュ・ユニット７２を介してキャッシュ７６又はメイン・メモリ９０にアクセスする（Ｓ１１８）。ＣＰＵ７０から要求データへのアクセスが完了すると、ＤＭＡコントローラ１０は中断していたデータ・ブロックのＤＭＡ転送を再開させる（Ｓ１２４）。
【００２４】
データ・ブロックのデータが全てＤＭＡ転送されると（Ｓ１６４）、ＤＭＡコントローラ１０はＣＰＵ７０にＤＭＡ転送が完了したことを通知する（Ｓ１６６）。
【００２５】
例えば図４に示すように、ＤＭＡ転送が開始（Ｓ１６０）されてＤＡＴＡ１のＤＭＡ転送が完了（Ｓ１８０）した後に、ＣＰＵ７０からＤＡＴＡ７のアクセス要求が発生（Ｓ１６２）すると、ＤＭＡコントローラ１０は実行中のデータ・ブロックＤＢのＤＭＡ転送を中断（Ｓ１１２）して、ＤＡＴＡ７のＤＭＡ転送を先に行う（Ｓ１２０）。ＤＭＡ転送中断時の転送カウンタ８４には「７」，転送アドレス８６には「ＡＤ２’→ＡＤ２」が保持されている。
【００２６】
ＤＡＴＡ７のＤＭＡ転送が完了すると、ＤＭＡコントローラ１０はＤＡＴＡ７をＣＰＵに送り（Ｓ１２２）、その後中断していたデータ・ブロックＤＢのＤＭＡ転送を再開する（Ｓ１２４）。ＤＡＴＡ２〜ＤＡＴＡ８のＤＭＡ転送が終了する（Ｓ１８２　，Ｓ１８４　，Ｓ１８６　，Ｓ１８８　，Ｓ１９０　，Ｓ１９２　，Ｓ１９４）と、ＤＭＡコントローラ１０はＤＭＡ転送が終了したことをＣＰＵ７０に知らせる（Ｓ１６６）。
【００２７】
ＤＡＴＡ２〜ＤＡＴＡ８のＤＭＡ転送と並行して、ＣＰＵ７０はＤＡＴＡ７を使用した処理を実行することができる。図４に示した例では、ＤＡＴＡ７は再度ＤＭＡ転送されている（Ｓ１９２）が、ＣＰＵ７０はＤＡＴＡ７を参照しているだけなので、ＤＡＴＡ７が再度ＤＭＡ転送されても問題は無い。図１（ａ）に示す構成は、ＣＰＵ７０とキャッシュ・ユニット７２とＤＭＡコントローラ１０とが集積されたシングル・プロセッサに応用できる構成である。
【００２８】
以上、本発明の一実施例について説明したが、本発明はその他の態様でも実施し得るものである。例えば、図５（ａ）に示すように、ＤＭＡヒット検出器２２をＣＰＵ７０とシステム・バス８０との間に接続し、ＤＭＡコントローラ２０をシステム・バス８０を介してＣＰＵ７０とメイン・メモリ９０に接続することもできる。ＤＭＡヒット検出器２２は、ＤＭＡコントローラ２０の転送カウンタ８４と転送アドレス８６を参照してＤＭＡヒットを検出する。
【００２９】
ＤＭＡコントローラ２０は、ＤＭＡヒットが検出されると、ＣＰＵ７０に要求データへのアクセスを再試行させる。ＤＭＡコントローラ２０は、ＣＰＵ７０が要求データへのアクセスを一旦中止してから再度アクセスするまでの間に、実行中のデータ・ブロックのＤＭＡ転送を中断し、要求データをＤＭＡ転送する。ＣＰＵ７０がＤＭＡ転送が完了した要求データにアクセスした後、ＤＭＡコントローラ２０は中断しているデータ・ブロックのＤＭＡ転送を再開する。
【００３０】
ＤＭＡ転送制御手順の一例を図７に示す。図５（ｂ）に示すようにＤＭＡコントローラ２０がデータ・ブロックのＤＭＡ転送を開始（Ｓ１６０）した後にＣＰＵ７０からデータ・アクセス要求が発生（Ｓ１６２）したとする。ＣＰＵ７０からは要求データＤＡＴＡｎのアドレスＡＤｎがＤＭＡヒット検出器２２とキャッシュ・ユニット７２に送られる。ＤＭＡヒット検出器２２は、ＤＭＡコントローラ２０の転送カウンタ８４と転送アドレス８６を参照して、ＤＭＡヒットの検出を行う。
【００３１】
ＤＭＡヒットが検出された場合、ＤＭＡヒット検出器２２は、図５（ｃ）に示すように要求データのアドレスＡＤｎをシステム・バス８０を介してＤＭＡコントローラ２０に送る（Ｓ１３０）。このときの要求データはＤＭＡ転送が未完了の無効なデータである。ＤＭＡヒット検出器２２からアドレスＡＤｎを受け取ったＤＭＡコントローラ２０は、図５（ｄ）に示すようにＣＰＵ７０に要求データへのアクセスの再試行（ＲｅＴＲＹ）を要求する（Ｓ１３２）。ＲｅＴＲＹを要求されたＣＰＵ７０は、要求データへのアクセスを一旦中止し、所定時間経過後、再度要求データにアクセスする。ＤＭＡコントローラ２０は、ＣＰＵ７０がデータ・アクセスを一旦中止している間に、図６（ａ）に示すように、実行中のデータ・ブロックのＤＭＡ転送を中断し（Ｓ１１２）、要求データＤＡＴＡｎのＤＭＡ転送を行う（Ｓ１３４）。
【００３２】
ＣＰＵ７０が再度要求データへアクセスしたとき、要求データはＤＭＡ転送が完了した有効なデータに更新されている。図６（ｂ）に示すようにＣＰＵ７０がＤＡＴＡｎにアクセスした後（Ｓ１３６）、ＤＭＡコントローラ２０は中断していたデータ・ブロックのＤＭＡ転送を再開する（Ｓ１２４）。データ・ブロックのデータが全てＤＭＡ転送されると（Ｓ１６４）、ＤＭＡコントローラ２０はＣＰＵ７０にＤＭＡ転送が完了したことを通知する（Ｓ１６６）。
【００３３】
図７において、ＤＭＡヒットが検出されない場合、図６（ｃ）に示すようにＣＰＵ７０はキャッシュ・ユニット７２を介してキャッシュ７６又はメイン・メモリ９０にアクセスする。このとき、ＤＭＡコントローラ２０は実行中のデータ・ブロックのＤＭＡ転送を中断し（Ｓ１１２）、ＣＰＵ７０の要求データへのアクセスが完了すると（Ｓ１１８）、中断していたデータ・ブロックのＤＭＡ転送を再開させる（Ｓ１２４）。
【００３４】
図４と同様に、ＤＭＡ転送が開始（Ｓ１６０）されてＤＡＴＡ１のＤＭＡ転送が完了（Ｓ１８０）した後に、ＣＰＵ７０からＤＡＴＡ７へのアクセス要求が発生（Ｓ１６２）しても、ＤＡＴＡ７のＤＭＡ転送を先に行う（Ｓ１２０）ことができる。ＤＡＴＡ２〜ＤＡＴＡ８のＤＭＡ転送と並行して、ＣＰＵ７０はＤＡＴＡ７を使用した処理を実行することができる。図５（ａ）に示す構成は、ＣＰＵ７０とキャッシュ・ユニット７２とＤＭＡヒット検出器２２とが集積されたマルチ・プロセッサに応用できる構成である。
【００３５】
図８（ａ）に示すように、ＤＭＡヒット検出器３２にバッファ３４を接続することもできる。図８（ｂ）に示すように、ＤＭＡヒットが検出されたデータ又はデータ・ブロックをバッファ３４に一時的に記憶する。バッファ３４へのデータの記憶は、ＣＰＵが要求データへアクセスした後に行う。ＣＰＵ７０がバッファ３４に記憶されたデータに再度アクセスする場合、ＤＭＡヒット検出器３２は、バッファ３４に記憶されているデータをＣＰＵ７０に送る。バッファ３４を備えることにより、再試行要求（ＲｅＴＲＹ）の回数は減少する。
【００３６】
以上、本発明は特定の実施例について説明されたが、本発明はこれらに限定されるものではない。例えば、本明細書では、メイン・メモリのメモリ領域間でのメモリ・ツー・メモリＤＭＡ転送について説明したが、本発明はシステム・バスに接続された任意の高速メモリ間でのメモリ・ツー・メモリＤＭＡ転送に適用可能である。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良，修正，変形を加えた態様で実施できるものである。同一の作用又は効果が生じる範囲内で、いずれかの発明特定事項を他の技術に置換した形態で実施できるものである。一体に構成されている発明特定事項を複数の要素から構成した形態でも、複数の要素から構成されている発明特定事項を一体に構成した形態でも実施できるものである。
【００３７】
【発明の効果】
本発明によれば、ＤＭＡ転送が未完了のデータに対してＣＰＵがアクセスを要求すると、そのデータを先にＤＭＡ転送してＣＰＵにアクセスさせることができるので、ＤＭＡ転送中のＣＰＵの待ち時間を減少できる。
【図面の簡単な説明】
【図１】本発明のメイン・メモリのメモリ領域間のＤＭＡ転送制御の一実施例を示す図であり、（ａ）は一構成例を示す図であり、（ｂ）はＤＭＡ転送の状態を示す図であり、（ｃ）はＣＰＵからデータ・アクセス要求が発生した状態を示す図であり、（ｄ）はＤＭＡヒットが検出されてＣＰＵがアクセスするデータのＤＭＡ転送が行われている状態を示す図である。
【図２】（ａ）は図１（ｄ）に示したＤＭＡ転送が完了したデータをＤＭＡコントローラがＣＰＵに送っている状態を示す図であり、（ｂ）はＤＭＡヒットが検出されず、ＣＰＵがキャッシュ又はメイン・メモリにアクセスしている状態を示す図である。
【図３】図１（ａ）に示すＤＭＡコントローラのＤＭＡ転送制御手順の一例を示す図である。
【図４】図１（ａ）に示すＤＭＡコントローラのデータ・ブロックＤＢのＤＭＡ転送手順の一例を示す図である。
【図５】本発明のメモリ領域間のＤＭＡ転送制御の他の実施例を示す図であり、（ａ）は一構成例を示す図であり、（ｂ）はＤＭＡ転送中にＣＰＵからデータ・アクセス要求が発生した状態を示す図であり、（ｃ）はＤＭＡヒットが検出されてＤＭＡコントローラにＣＰＵがアクセスするデータのアドレスを送っている状態を示す図であり、（ｄ）はＤＭＡコントローラがＣＰＵにデータ・アクセスの再試行を要求している状態を示す図である。
【図６】（ａ）は図５（ｄ）に示した再試行の要求によりＣＰＵがデータ・アクセスを一時中断したとき、ＤＭＡコントローラによるＤＭＡ転送が行われている状態を示す図であり、（ｂ）は（ａ）に示したＤＭＡ転送が完了したデータをＤＭＡコントローラがＣＰＵに送っている状態を示す図であり、（ｃ）はＤＭＡヒットが検出されず、ＣＰＵがキャッシュ又はメイン・メモリへアクセスしている状態を示す図である。
【図７】図５（ａ）に示すＤＭＡコントローラのＤＭＡ転送制御手順の一例を示す図である。
【図８】本発明のメモリ領域間のＤＭＡ転送制御の他の実施例を示す図であり、（ａ）は一構成例を示す図であり、（ｂ）はＤＭＡ転送が完了したデータをＤＭＡコントローラがバッファに送っている状態を示す図であり、（ｃ）は（ｂ）に示すバッファのデータをＤＭＡヒット検出器がＣＰＵに送っている状態を示す図である。
【図９】従来のＤＭＡ転送制御の一実施例を示す図であり、（ａ）は一構成例を示す図であり、（ｂ）はＤＭＡ転送の状態を示す図であり、（ｃ）はＤＭＡコントローラからＣＰＵへＤＭＡ転送完了を知らせている状態を示す図であり、（ｄ）はＣＰＵがキャッシュ又はメイン・メモリにアクセスしている状態を示す図である。
【図１０】（ａ）はＤＭＡ転送を行う単位のデータ・ブロックの一構成例を示す図であり、（ｂ）はＤＭＡコントローラの転送カウンタと転送アドレスの値と各データのＤＭＡ転送状態を示す図である。
【図１１】図９（ａ）に示すＤＭＡコントローラのＤＭＡ転送制御手順の一例を示す図である。
【図１２】図９（ａ）に示すＤＭＡコントローラのデータ・ブロックＤＢのＤＭＡ転送手順の一例を示す図である。
【符号の説明】
１０，２０：ＤＭＡコントローラ（転送制御手段，ＤＭＡ転送制御装置）
１２，２２，３２：ＤＭＡヒット検出器（検出手段）
３４：バッファ（バッファ・メモリ）
７０：ＣＰＵ
７２：キャッシュ・ユニット
７４：タグ
７６：キャッシュ（キャッシュ・メモリ）
８０：システム・バス
８２：従来のＤＭＡコントローラ
８４：転送カウンタ（第１のレジスタ）
８６：転送アドレス（第２のレジスタ）
９０：メイン・メモリ
【図１】
2004145376.tif 000003
【図２】
2004145376.tif 000004
【図３】
2004145376.tif 000005
【図４】
2004145376.tif 000006
【図５】
2004145376.tif 000007
【図６】
2004145376.tif 000008
【図７】
2004145376.tif 000009
【図８】
2004145376.tif 000010
【図９】
2004145376.tif 000011
【図１０】
2004145376.tif 000012
【図１１】
2004145376.tif 000013
【図１２】
2004145376.tif 000014