(57)【要約】【課題】ＤＭＡ転送の読み出しを高速化する。【解決手段】転送元アドレス設定検知部３０５は、マスタ３０１がＤＭＡＣ３０２に対して複数回行うレジスタ設定のうちＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得する。先行読み出し処理部３０３は、ＤＭＡＣ３０２がＤＭＡ転送を開始する前に、ＤＭＡ転送元アドレスが指定するリソース３０４上のデータを先行読み出しし、さらにＤＭＡ転送元アドレスをインクリメントして先行読み出しを繰り返す。ＤＭＡＣ３０２は、マスタ３０１によるレジスタ設定が終わればＤＭＡ転送を開始し、先行読み出し処理部３０３上に既に先行読み出ししているＤＭＡ転送元領域のデータを読み出し、リソース３０４上のＤＭＡ転送先領域に転送する。【選択図】図３
2009211248.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡＣ(Direct Memory Access Controller)と、
前記ＤＭＡＣを制御するマスタと、
ＤＭＡ(Direct Memory Access)転送でアクセスされる少なくとも一つのリソースと、
ＤＭＡ転送を開始するため前記マスタが前記ＤＭＡＣに行なうレジスタ設定のうち、ＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得する転送元アドレス設定検知手段と、
前記転送元アドレス設定検知手段が検知した前記リソース上のＤＭＡ転送元アドレスへリード要求する先行読み出し手段とを備えている、
ことを特徴とするＤＭＡ転送装置。
【請求項２】
複数の転送チャネルを持つＤＭＡＣ(Direct Memory Access Controller)と、
前記ＤＭＡＣ(Direct Memory Access Controller)を制御するマスタと、
ＤＭＡ転送でアクセスされる少なくとも一つのリソースと、
各ＤＭＡ転送を開始するため前記マスタが前記ＤＭＡＣの前記各転送チャネル毎に行うレジスタ設定のうち、ＤＭＡ転送元領域の転送開始アドレス設定より各々のＤＭＡ転送元アドレスを取得する転送元アドレス設定検知手段と、
先行読み出し手段とを備え、
前記先行読み出し手段は、
前記転送元アドレス設定検知手段が検知したＤＭＡ転送元アドレスを保持する先行読み出しチャネルを一つ以上備え、
前記各先行読み出しチャネルが保持する前記リソース上の各ＤＭＡ転送元アドレスへリード要求する、
ことを特徴とするＤＭＡ転送装置。
【請求項３】
請求項２において、
全ての前記先行読み出しチャネルが使用中のとき、前記マスタにこれ以上ＤＭＡ転送を開始しないよう要求するＤＭＡ転送制御手段をさらに備える、
ことを特徴とするＤＭＡ転送装置。
【請求項４】
請求項２において、
全ての前記先行読み出しチャネルが使用中のとき、前記マスタがさらに開始した新しい前記転送チャネルのＤＭＡ転送はＤＭＡ転送元アドレスを前記先行読み出しチャネルに格納しない、
ことを特徴とするＤＭＡ転送装置。
【請求項５】
請求項２において、
特定の前記転送チャネルが行うＤＭＡ転送以外のＤＭＡ転送はＤＭＡ転送元アドレスを前記先行読み出しチャネルに格納しない、
ことを特徴とするＤＭＡ転送装置。
【請求項６】
請求項２において、
複数の先行読み出しチャネルがそれぞれ出力するリード要求を調停する調停手段をさらに備える、
ことを特徴とするＤＭＡ転送装置。
【請求項７】
請求項１〜６のいずれか１つにおいて、
前記先行読み出し手段が出力するリード要求により先行読み出ししたデータを格納する先行データ格納バッファをさらに備えている、
ことを特徴とするＤＭＡ転送装置。
【請求項８】
請求項１〜６のいずれか１つにおいて、
前記先行読み出し手段が出力するリード要求により先行読み出ししたデータを格納するキャッシュをさらに備えている、
ことを特徴とするＤＭＡ転送装置。
【請求項９】
請求項１〜６のいずれか１つにおいて、
前記先行読み出し手段が出力するリード要求により先行読み出ししたデータを格納する、前記ＤＭＡＣと１つ以上のバスマスタで共有される共有キャッシュをさらに備えている、
ことを特徴とするＤＭＡ転送装置。
【請求項１０】
請求項９において、
前記共有キャッシュは複数のキャッシュを含み、
前記複数のキャッシュのうちの少なくとも１つを前記ＤＭＡＣが専有し、
前記先行読み出し手段が出力するリード要求により先行読み出ししたデータを前記ＤＭＡＣが専有するキャッシュに格納する、
ことを特徴とするＤＭＡ転送装置。
【請求項１１】
請求項８〜１０のいずれか１つにおいて、
先行読み出ししたデータを前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送元アドレス領域に格納し、さらにこのデータのコピーを前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送先アドレス領域へ格納することでＤＭＡ転送先への書き出しを行う、
ことを特徴とするＤＭＡ転送装置。
【請求項１２】
請求項１１において、
コピー済みの前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送元アドレス領域をインバリデートする、
ことを特徴とするＤＭＡ転送装置。
【請求項１３】
請求項８〜１０のいずれか１つにおいて、
先行読み出ししたデータを前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送元アドレス領域に格納し、さらに前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送元アドレス領域のタグをＤＭＡ転送先アドレス領域のタグに変更することでＤＭＡ転送先への書き出しを行う、
ことを特徴とするＤＭＡ転送装置。
【請求項１４】
請求項８〜１０のいずれか１つにおいて、
先行読み出ししたデータを前記キャッシュまたは前記共有キャッシュ上のＤＭＡ転送先アドレス領域に格納する、
ことを特徴とするＤＭＡ転送装置。
【請求項１５】
請求項１１〜１４のいずれか１つにおいて、
先行読み出ししたデータを前記キャッシュまたは前記共有キャッシュ上の転送先アドレス領域へ書き込む際、前記キャッシュのタグ領域にキャッシュ属性を書き込む属性指定手段をさらに備えている、
ことを特徴とするＤＭＡ転送装置。
【請求項１６】
請求項１〜１５のいずれか１つにおいて、
前記先行読み出し手段がリード要求を行った後、前記先行読み出し手段が保持するＤＭＡ転送元アドレスをインクリメントしてさらにリード要求を行う、
ことを特徴とするＤＭＡ転送装置。
【請求項１７】
請求項１６において、
先行読み出し終了アドレス保持手段をさらに備え、
ＤＭＡ転送元アドレスが前記先行読み出し終了アドレス保持手段が保持するアドレスに達するとインクリメントを止め、先行読み出しを終了させる、
ことを特徴とするＤＭＡ転送装置。
【請求項１８】
請求項１６において、
前記先行読み出し手段がリード要求を行った回数を計測する総転送回数計測手段と、
前記総転送回数計測手段で計測できる上限を保持する総転送数保持手段とをさらに備え、
前記総転送回数計測手段で計測した値が前記総転送数保持手段で保持する上限に達すると先行読み出しを終了させる、
ことを特徴とするＤＭＡ転送装置。
【請求項１９】
請求項１６〜１８のいずれか１つにおいて、
前記ＤＭＡＣが行うリード要求より前に先行して前記先行読み出し手段がリード要求を行った数を計測する連続先行読み出し回数計測手段と、
前記連続先行読み出し回数計測手段で計測できる上限回数を保持する連続読み出し数保持手段とをさらに備え、
前記連続先行読み出し回数計測手段で計測した値が前記連続読み出し数保持手段で保持する上限に達すると先行読み出しを停止させる、
ことを特徴とするＤＭＡ転送装置。
【請求項２０】
請求項１〜１９のいずれか１つにおいて、
シングル転送で先行読み出しする、
ことを特徴とするＤＭＡ転送装置。
【請求項２１】
請求項１〜１９のいずれか１つにおいて、
バースト転送で先行読み出しする、
ことを特徴とするＤＭＡ転送装置。
【請求項２２】
請求項１〜１９のいずれか１つにおいて、
矩形転送の際先行読み出しする、
ことを特徴とするＤＭＡ転送装置。
【請求項２３】
請求項１〜２２のいずれか１つにおいて、
先行読み出し手段の起動、及び停止が制御できる、
ことを特徴とするＤＭＡ転送装置。
【請求項２４】
請求項１〜２３のいずれか１つにおいて、
ＤＭＡ転送を開始するため前記マスタが前記ＤＭＡＣに行うレジスタ設定のうち、何ワードＤＭＡ転送するか指示するＤＭＡ転送サイズ設定よりＤＭＡ転送サイズを取得するＤＭＡ転送サイズ検知手段をさらに備える、
ことを特徴とするＤＭＡ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＤＭＡ(Direct Memory Access)転送装置に関し、特に、ＤＭＡＣ(Direct Memory Access Controller)がＤＭＡ転送する際に転送元のデータを先行読み出しすることでＤＭＡ転送を高速化する技術に関する。
【背景技術】
【０００２】
図１のように、ＤＭＡ転送装置１０１はＤＭＡＣ１０２、リソース１０３から構成され、ＤＭＡＣ１０２がリソース１０３上のＤＭＡ転送元領域をリードし、リードしたデータをリソース１０３上のＤＭＡ転送先領域へライトすることでＤＭＡ転送が行なわれる。以下、ＤＭＡ転送を高速化する従来の先行読み出し技術について図２を用いて説明する。
【０００３】
ＤＭＡ転送装置２０１は、ＤＭＡＣ２０２，先行読み出し処理部２０３，リソース２０４を備えている。ＤＭＡＣ２０２は、先行読み出し処理部２０３を介してリソース２０４上のＤＭＡ転送元領域のデータを読み出し、リソース２０４上のＤＭＡ転送先領域に出力するＤＭＡ転送を行う。
【０００４】
また、先行読み出し処理部２０３は、先行アドレスレジスタ２０５，コントローラ２０６，先行データ格納バッファ２０７，加算回路２０８，セレクタ２０９，セレクタ２１０を備える。先行アドレスレジスタ２０５には、ＤＭＡＣ２０２がリード予定のＤＭＡ転送元領域へのリードアドレスが格納される。セレクタ２０９は、先行アドレスレジスタ２０５に格納されているリードアドレスとＤＭＡＣ２０２が出力するリードアドレスのどちらかを選択しリソース２０４へ出力する。先行データ格納バッファ２０７には、リソース２０４より先行読み出ししたデータが格納される。セレクタ２１０は、先行データ格納バッファ２０７に格納されたデータをＤＭＡＣ２０２に返すか、リソース２０４から読み出したデータを直接ＤＭＡＣ２０２に返すかを切り替える。コントローラ２０６は、セレクタ２０９，２１０の切り替えを制御する。
【０００５】
先行読み出し処理部２０３は、ＤＭＡＣ２０２よりリードアドレスを受けると、受けたリードアドレスと先行アドレスレジスタ２０５に格納されているリードアドレスとを比較する。
【０００６】
両者が一致するときは、リードアドレスが指定するリソース２０４上のデータが既に先行データ格納バッファ２０７に格納されているため、先行データ格納バッファ２０７に格納されているデータをＤＭＡＣ２０２に返し、さらに先行アドレスレジスタ２０５に格納されているリードアドレスを加算回路２０８によりインクリメントし、当該インクリメント後のリードアドレスが指定するリソース２０４上のデータを読み出し、先行データ格納バッファ２０７に格納する。
【０００７】
一方、両者が一致しないときは、リードアドレスが指定するリソース２０４上のデータが先行データ格納バッファ２０７に格納されていないため、ＤＭＡＣ２０２より受けたリードアドレスをリソース２０４に出力し、読み出したデータを直接ＤＭＡＣ２０２に返す。さらにリードアドレスを加算回路２０８でインクリメントして先行アドレスレジスタ２０５に格納し、先行アドレスレジスタ２０５が指定するリソース２０４上のデータを読み出し、先行データ格納バッファ２０７に格納する。これら動作によりＤＭＡ転送元領域の先行読み出しを行い、ＤＭＡ転送を高速化している(例えば特許文献１参照)。
【特許文献１】特開平2-110646号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ＤＭＡＣ２０２がＤＭＡ転送によりＤＭＡ転送元領域の連続したアドレス空間を読み出すとき、従来の先行読み出し処理部２０３は、ＤＭＡＣ２０２が１回目のリードアドレスを出力すると、代わりにリソース２０４よりデータを読み出しＤＭＡＣ２０２に返すとともに、受け取ったリードアドレスをインクリメントしてＤＭＡＣ２０２が次に読み出すリードアドレスを求め、このリードアドレスが指定するリソース２０４上のデータを先行読み出しする。そしてＤＭＡＣ２０２が次のリードアドレスを出力すると、すでに先行読み出ししたデータをＤＭＡＣ２０２に返すことでＤＭＡＣ２０２のＤＭＡ転送元データ読み出しを高速化している。しかしこれら従来の先行読み出し処理部２０３では、ＤＭＡ転送元領域へのリードのうち１回目のリードは高速化できない。
【０００９】
さらに一般的なＤＭＡＣは、ＤＭＡＣを制御するマスタがＤＭＡＣに対して行うレジスタ設定(転送元アドレス，転送先アドレス，転送方法など)が完了するまでＤＭＡＣはＤＭＡ転送を開始できない。つまり従来の先行読み出し処理部では、マスタがＤＭＡＣに対する設定を開始してからＤＭＡ転送元領域の１回目のリード完了までのサイクルが高速化の対象外となり、ＤＭＡを即、起動したいシステムにおいては問題となる。
【００１０】
本発明は上記の点に鑑みてなされたものであり、ＤＭＡ転送を高速化させることを目的としている。
【課題を解決するための手段】
【００１１】
前記の課題を解決するために、本発明では、マスタがＤＭＡＣに対して複数回行うレジスタ設定のうち、ＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得し、ＤＭＡ転送元アドレスが指定するリソース上のデータを先行読み出しする。
【００１２】
そのために、本発明によるＤＭＡ転送装置は、マスタがＤＭＡＣに対して複数回行うレジスタ設定よりＤＭＡ転送元アドレスを取得する転送元アドレス設定検知手段と、ＤＭＡ転送元アドレスが指定するリソース上のデータを先行読み出しする先行読み出し手段とを有する。先行読み出し手段は、ＤＭＡ転送元アドレスを格納する先行アドレスレジスタと、先行アドレスレジスタに格納された転送元アドレスをリソースに発行し、読み出したデータを格納する先行データ格納バッファとを有する。
【発明の効果】
【００１３】
本発明では、マスタがＤＭＡＣに対して複数回行うレジスタ設定のうち、ＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得する。これに応答して先行読み出し手段は、ＤＭＡＣのＤＭＡ転送開始を待たずに、上記ＤＭＡ転送元アドレスが指定するデータを先行読み出しする。ＤＭＡＣは、ＤＭＡ転送元の読み出しを先行読み出し手段が先行読み出ししたデータから行う。これにより、ＤＭＡ転送の一回目のリードを高速化させることができる。
【００１４】
さらに、マスタがＤＭＡＣに対して行う複数のレジスタ設定のうちＤＭＡ転送元領域の転送開始アドレス設定を一番初めに設定させ、先行読み出しを開始させることでそれ以降のレジスタ設定サイクルも隠蔽させることができる。
【００１５】
また、ＤＭＡＣが利用するキャッシュを備え、先行読み出ししたデータをキャッシュに格納し、格納した先行読み出しデータをキャッシュ上のＤＭＡ転送先へ転送させることでＤＭＡ転送のライトも高速化させることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１７】
図３は本発明の実施の形態１〜３におけるＤＭＡ転送装置の全体構成を表した図である。ＤＭＡ転送装置３０６は、ＤＭＡＣ３０２と、ＤＭＡＣ３０２を制御するマスタ３０１と、先行読み出し処理部３０３と、転送元アドレス設定検知部３０５とを備える。
【００１８】
転送元アドレス設定検知部３０５は、マスタ３０１がＤＭＡＣ３０２に対して複数回行うレジスタ設定のうちＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得する。先行読み出し処理部３０３は、転送元アドレス設定検知部３０５によって取得されたＤＭＡ転送元アドレスが指定するリソース３０４上のデータを先行読み出しする。
【００１９】
マスタ３０１によるＤＭＡＣ３０２のレジスタ設定が終わると、ＤＭＡＣ３０２は、ＤＭＡ転送を開始し、先行読み出し処理部３０３により先行読み出しされたリソース３０４上のＤＭＡ転送元領域のデータを読み出し、リソース３０４上のＤＭＡ転送先領域へ転送する。
【００２０】
(実施の形態１)
本実施形態におけるＤＭＡ転送装置の全体構成は図３に示すとおりであり、本実施形態における先行読み出し処理部３０３は図４に示した構成をとる。
【００２１】
図４に示すように、先行読み出し処理部３０３は、加算回路４０２，先行アドレスレジスタ４０３，アドレス選択部４０５，先行データ格納バッファ４０６，先行読み出し無効レジスタ４０７，先行読み出し終了アドレス保持部４０８，データ選択部４０９を備えている。先行アドレスレジスタ４０３はアドレスを保持する。アドレス選択部４０５は、先行アドレスレジスタ４０３に格納されたアドレスとＤＭＡＣ３０２から受けるリードアドレスのどちらかを選択しリソース３０４に出力する。先行データ格納バッファ４０６には、リソース３０４から読み出されたデータが格納される。データ選択部４０９は、先行データ格納バッファ４０６に格納されたデータとリソース３０４から受けるデータのどちらかを選択しＤＭＡＣ３０２に出力する。
【００２２】
次に、本実施形態におけるＤＭＡ転送装置３０６の動作について説明する。
【００２３】
転送元アドレス設定検知部３０５よりＤＭＡ転送元アドレスを受け取ると、先行読み出し処理部３０３は、これを先行アドレスレジスタ４０３に格納する。さらに先行読み出し処理部３０３は、アドレス選択部４０５を制御し、先行アドレスレジスタ４０３が保持するリソース３０４上のアドレスへシングルリード要求を行って１ワードデータを先行読み出しし、当該先行読み出しした１ワードデータを先行データ格納バッファ４０６に格納する。
【００２４】
ＤＭＡＣ３０２よりリードアドレスを受けると、先行読み出し処理部３０３は、すでに先行データ格納バッファ４０６に格納されているデータすなわち当該リードアドレスが指定するリソース３０４上のデータをデータ選択部４０９により選択しＤＭＡＣ３０２に返すとともに、先行アドレスレジスタ４０３に保持されているアドレスを加算回路４０２により１ワード分インクリメントし、次のＤＭＡ転送に備えてさらに先行読み出しする。これを繰り返すことでリソース(スレーブ)３０４上のＤＭＡ転送元領域を先行読み出しすることができる。
【００２５】
さらに、先行読み出し無効レジスタ４０７は、アドレス選択部４０５がＤＭＡＣ３０２より受けたリードアドレスを直接リソース(スレーブ)３０４に出力し、リソース(スレーブ)３０４から読み出したデータをデータ選択部４０９で選択し直接マスタ３０１に返すよう制御する。これにより、先行読み出し機能を起動・停止させることができる。
【００２６】
さらに、先行読み出し終了アドレス保持部４０８はＤＭＡ転送元領域の終了アドレスを保持する。先行アドレスレジスタ４０３のアドレスが、先行読み出し終了アドレス保持部４０８が保持する終了アドレスに達すれば、先行読み出しをこれ以上行なわないよう制御することで、全てのＤＭＡ転送元領域の先行読み出しを終えれば先行読み出しを停止させることができる。
【００２７】
なお、マスタ３０１のレジスタ設定により、先行読み出し無効レジスタ４０７と先行読み出し終了アドレス保持部４０８が保持する値を設定，変更することができる。
【００２８】
(実施の形態２)
本実施形態におけるＤＭＡ転送装置の全体構成は図３に示すとおりであり、本実施形態における先行読み出し処理部３０３は図５に示した構成をとる。
【００２９】
図５に示すように、先行読み出し処理部３０３は、加算回路５０２，先行アドレスレジスタ５０３，複数ワード格納できる先行データ格納バッファ５０６，連続先行読み出し回数計測部５０７，総転送回数計測部５０８，総転送数保持部５０９，連続先行読み出し数保持部５１０を備えている。
【００３０】
次に、本実施形態におけるＤＭＡ転送装置３０６の動作について説明する。
【００３１】
転送元アドレス設定検知部３０５よりＤＭＡ転送元アドレスを受け取ると、先行読み出し処理部３０３は、これを先行アドレスレジスタ５０３に格納する。さらに先行読み出し処理部３０３は、先行アドレスレジスタ５０３が保持するリソース３０４上のアドレスへバーストリード要求(８ワード連続読み出し要求)を行って８ワードデータを先行読み出しし、当該先行読み出しした８ワードデータを先行データ格納バッファ５０６に格納する。
【００３２】
ＤＭＡＣ３０２よりリードアドレスを受けると、先行読み出し処理部３０３は、すでに先行データ格納バッファ５０６に格納されているデータすなわち当該リードアドレスが指定するリソース３０４上のデータをＤＭＡＣ３０２に返す。先行データ格納バッファ５０６に空きができると、次のＤＭＡ転送に備えて加算回路５０２で先行アドレスレジスタ５０３が保持するアドレスを８ワード分インクリメントしてバーストリード要求を行い、さらに次の８ワードを先行読み出しする。
【００３３】
これを繰り返すことでリソース(スレーブ)３０４上のＤＭＡ転送元領域をバースト転送で先行読み出しすることができる。
【００３４】
さらに、連続先行読み出し回数計測部５０７は、先行アドレスレジスタ５０３が保持するリソース３０４上のリードアドレスへリード要求が行われるとカウントアップし、ＤＭＡＣ３０２が先行データ格納バッファ５０６に格納された先行読み出しデータを読み出すとカウントダウンする。連続先行読み出し数保持部５１０は、連続先行読み出し回数計測部５０７のカウント数の上限を指定する。連続先行読み出し回数計測部５０７のカウント値が連続先行読み出し数保持部５１０に設定した上限を超えるとリードアドレスの発行を一時的に止め、上限を下回ると再開させることで、先行データ格納バッファ５０６の容量を超えた先行読み出しを行わないよう制御することができる。
【００３５】
さらに、総転送回数計測部５０８は、先行アドレスレジスタ５０３が保持するリソース３０４上のリードアドレスへリード要求が行われた回数をカウントする。総転送数保持部５０９は、総転送回数計測部５０８のカウント数の上限を指定する。総転送回数計測部５０８で計測したリード要求数が、総転送数保持部５０９に設定した数に達するまで先行読み出しさせることで、全てのＤＭＡ転送元領域の先行読み出しを行なわせることができる。
【００３６】
また、マスタ３０１のレジスタ設定により、連続先行読み出し数保持部５１０，総転送数保持部５０９が保持する値を設定，変更することができる。
【００３７】
(実施の形態３)
本実施形態におけるＤＭＡ転送装置の全体構成は図３に示すとおりであり、本実施形態における先行読み出し処理部３０３は図６に示した構成をとる。
【００３８】
図６に示すように先行読み出し処理部３０３は、加算回路６０２，先行アドレスレジスタ６０３，先行データ格納バッファ６０６，Ｘ方向転送数計測部６０７，Ｙ方向転送数計測部６０８，Ｘ方向転送数保持部６０９，Ｙ方向転送数保持部６１０，不連続サイズ保持部６１１を備えている。
【００３９】
先行アドレスレジスタ６０３はリード要求を行う。先行データ格納バッファ６０６は読み出したデータを保持する。Ｘ方向転送数計測部６０７はリード要求数をカウントする。Ｘ方向転送数保持部６０９は、Ｘ方向転送数計測部６０７のカウント数の上限を保持する。不連続サイズ保持部６１１は、Ｘ方向転送数計測部６０７のカウント値がＸ方向転送数保持部６０９で設定した上限に達すれば先行アドレスレジスタ６０３に加えるオフセット値を保持する。Ｙ方向転送数計測部６０８は、オフセットを加えた回数を保持する。Ｙ方向転送数保持部６１０は、Ｙ方向転送数計測部６０８のカウント数の上限を保持する。
【００４０】
次に、本実施形態におけるＤＭＡ転送装置３０６の動作について説明する。
【００４１】
転送元アドレス設定検知部３０５よりＤＭＡ転送元アドレスを受け取るとると、先行読み出し処理部３０３は、これを先行アドレスレジスタ６０３に格納する。さらに先行読み出し処理部３０３は、先行アドレスレジスタ６０３が保持するリソース３０４上のアドレスへシングルリード要求を行って１ワードデータを先行読み出しし、当該先行読み出しした１ワードデータを先行データ格納バッファ６０６に格納する。
【００４２】
ＤＭＡＣ３０２よりリードアドレスを受けると、先行読み出し処理部３０３は、すでに先行データ格納バッファ６０６に格納されているデータすなわち当該リードアドレスが指定するリソース３０４上データをＤＭＡＣ３０２に返すとともに、先行アドレスレジスタ６０３に保持されているアドレスを加算回路６０２により１ワード分インクリメントし、次のＤＭＡ転送に備えてさらに先行読み出しする。
【００４３】
また、先行アドレスレジスタ６０３からリソース３０４へリード要求を発行した数をＸ方向転送数計測部６０７でカウントする。Ｘ方向転送数計測部６０７のカウント値がＸ方向転送数保持部６０９に設定された値を超えると、不連続サイズ保持部６１１が保持するオフセット値を先行アドレスレジスタ６０３が保持するアドレスに加え、さらにＹ方向転送数計測部６０８を１カウントアップし、Ｘ方向転送数計測部６０７のカウント数を０からカウントを再開する。そしてＹ方向転送数計測部６０８のカウント値がＹ方向転送数保持部６１０で保持する上限まで先行読み出しを繰り返すよう制御することで、矩形転送の先行読み出しを実現できる。
【００４４】
なお、Ｘ方向転送数保持部６０９，Ｙ方向転送数保持部６１０，不連続サイズ保持部６１１に保持する値はマスタ３０１のレジスタ設定により設定することができる。
【００４５】
(実施の形態４)
本実施形態におけるＤＭＡ転送装置の全体構成は図７に示すとおりである。このＤＭＡ転送装置７０１は、複数転送チャネルを持つＤＭＡＣ７０３と、ＤＭＡＣ７０３を制御するマスタ７０２と、転送元アドレス設定検知部７０４と、先行読み出し処理部７０５と、リソース７０６と、先行読み出し指定部７１８とを備える。
【００４６】
ＤＭＡＣ７０３は、複数の転送チャネルが出力するリードアドレスを調停し出力するアドレス選択部７１４を備える。
【００４７】
先行読み出し処理部７０５は、アドレス選択部７０７，ＤＭＡ転送制御部７０８，先行読み出しチャネル７０９〜７１１，アドレス選択部７１２，先行データ格納バッファ７１３，調停部７１５，データ選択部７１６，ＤＭＡ転送領域補保持部７１７を備えている。先行読み出しチャネル７０９〜７１１はアドレスを保持する。アドレス選択部７１２は、先行読み出しチャネル７０９〜７１１に格納されているアドレスとＤＭＡＣ７０３より受け取ったリードアドレスとの中から１つを選択してリソース７０６に出力する。先行データ格納バッファ７１３は、複数のデータ部とタグ部の対から構成され、リソース７０６より読み出されたデータを格納する。データ選択部７１６は、先行データ格納バッファ７１３に格納されたデータ，または，リソース７０６が出力するデータを選択してＤＭＡＣ７０３へ出力する。ＤＭＡ転送領域補保持部７１７は、先行読み出しチャネル７０９〜７１１により先行読み出しされるＤＭＡ転送元領域のアドレス範囲を保持する。
【００４８】
転送元アドレス設定検知部７０４は、ＤＭＡＣ７０３の１つの転送チャネルを転送開始するためマスタ７０２が行うレジスタ設定のうちＤＭＡ転送元領域の転送開始アドレス設定よりＤＭＡ転送元アドレスを取得する。アドレス選択部７０７は、先行読み出しチャネル７０９〜７１１よりチャネル使用状態を調べ、空いている先行読み出しチャネルの１つにＤＭＡ転送元アドレスを格納する。さらに、ＤＭＡＣ７０３の他の転送チャネルを転送開始するためマスタ７０２がＤＭＡＣ７０３に対してレジスタ設定を行うと、転送元アドレス設定検知部７０４が再度ＤＭＡ転送先アドレスを取得し、アドレス選択部７０７は先行読み出しチャネル７０９〜７１１からチャネル使用状態を調べ、空いている先行読み出しチャネルの１つにＤＭＡ転送元アドレスを格納する。
【００４９】
アドレス選択部７１２は、先行読み出しチャネル７０９〜７１１のチャネル使用状況を調べ、ＤＭＡ転送アドレスが格納された先行読み出しチャネルがあるときは当該ＤＭＡ転送アドレスが格納された先行読み出しチャネルを１つ選択し、選択した先行読み出しチャネルに格納されたアドレスが指定するリソース７０６上のデータを先行読み出しして先行データ格納バッファ７１３のデータ部に格納する。この時、先行データ格納バッファ７１３に格納したデータがどのアドレスを読み出したものか区別するため、データを格納したデータ部に対応するタグ部にリソース７０６に出力したアドレスを格納する。
【００５０】
ＤＭＡＣ７０３は、転送チャネルのレジスタ設定が完了すると、レジスタ設定が完了した転送チャネルよりＤＭＡ転送を開始し、ＤＭＡ転送元領域を読み出すため先行データ格納バッファ７１３へリードアドレスを発行する。先行読み出し処理部７０５は、ＤＭＡＣ７０３より受けたリードアドレスが、ＤＭＡ転送領域保持部７１７が保持するＤＭＡ転送範囲内か否かを調べる。範囲内の場合、当該リードアドレスのデータはすでに先行データ格納バッファ７１３に先行読み出しされているため、先行データ格納バッファ７１３のタグ部と当該リードアドレスとを比較し、一致したタグ部に対応するデータをＤＭＡＣ７０３に返す。一方、範囲内でない場合、当該リードアドレスのデータは先行データ格納バッファ７１３に先行読み出しされていないため、アドレス選択部７１２により当該リードアドレスをリソース７０６へ直接発行し、読み出したデータをデータ選択部７１６で選択し、ＤＭＡＣ７０３へ直接返す。
【００５１】
以上のように、複数転送チャネルを持つＤＭＡＣ７０３のＤＭＡ転送をリソース(スレーブ)７０６上のＤＭＡ転送元領域を先行読み出しすることで高速化することができる。
【００５２】
また、ＤＭＡ転送領域保持部７１７で保持するＤＭＡ転送元領域のアドレス範囲以外のリードアドレスをＤＭＡＣ７０３より受けた場合、ＤＭＡＣ７０２より受け取ったリードアドレスをアドレス選択部７１２で選択してリソース７０６へ出力し、読み出したデータをデータ選択部７１６で選択しＤＭＡＣ７０３に直接返すよう制御することで、全ての先行読み出しチャネル７０９〜７１１が使用中のときにマスタ７０２がさらに開始した転送チャネルのＤＭＡ転送は先行読み出しチャネル７０９〜７１１で先行読み出しを開始しないように制御することもできる。
【００５３】
さらに、調停部７１５は、複数の先行読み出しチャネル７０９〜７１１に格納されているＤＭＡ転送元アドレスを順番にアドレス選択部７１２が選択しリソース７０６にリード要求を送れるよう調停する。これにより、複数のＤＭＡ転送チャネルの転送元領域を時分割に先行読み出しすることができる。
【００５４】
また、ＤＭＡ転送制御部７０８は、先行読み出しチャネル７０９〜７１１の動作状況をモニタし、全て使用していればこれ以上ＤＭＡＣ７０３の新しい転送チャネルを開始させないようマスタ７０２にＤＭＡ転送制御要求を送る。これにより、マスタ７０２が先行読み出し処理部７０５の能力を超える量の転送チャネルを開始するのを防ぐことができる。
【００５５】
また、先行読み出し指定部７１８は、転送元アドレス設定検知部７０４がＤＭＡＣ７０３の特定チャネルのＤＭＡ転送元アドレスのみ取得するよう制限する。これにより、先行読み出しさせたいＤＭＡＣ７０３の転送チャネルのＤＭＡ転送のみ先行読み出しするよう制御することができる。
【００５６】
(実施の形態５)
本実施形態におけるＤＭＡ転送装置の全体構成は図８に示すとおりである。このＤＭＡ転送装置８０８は、ＤＭＡＣ８０２と、ＤＭＡＣ８０２を制御するマスタ８０１と、キャッシュ８０３と、リソース８０４と、先行読み出し処理部８０６とを備える。キャッシュ８０３は、ＤＭＡＣ８０２が利用するリソース８０４上のデータのキャッシュが置かれ、ＤＭＡＣ８０２は先行読み出し処理部８０６とキャッシュ８０３を介してリソース８０４上でＤＭＡ転送を行う。
【００５７】
先行読み出し処理部８０６は、ＤＭＡ転送を開始するためマスタ８０１がＤＭＡＣ８０２に対して行うレジスタ設定のうちＤＭＡ転送元領域の開始アドレス設定よりＤＭＡ転送元アドレスを取得し、さらに、何ワードＤＭＡ転送するか指定するＤＭＡ転送サイズ設定よりＤＭＡ転送サイズを取得すると、ＤＭＡ転送元アドレスが指定するリソース８０４上のデータのキャッシュを格納するようキャッシュ８０３へリフィル要求を行う。キャッシュ８０３がリフィル完了時に出力するリフィル完了通知を受けると、先行読み出し処理部８０６は、さらに次のアドレスに対しリフィル要求を行う。これを繰り返し、ＤＭＡ転送元アドレスからＤＭＡ転送サイズまでの全てのＤＭＡ転送元領域をキャッシュ８０３に格納するよう制御する。また、マスタ８０１によるＤＭＡＣ８０２のレジスタ設定が完了するとＤＭＡＣ８０２はＤＭＡ転送を開始し、キャッシュ８０３上に格納したＤＭＡ転送元領域のデータを読み出し、リソース８０４上のＤＭＡ転送元へ転送する。
【００５８】
次に先行読み出し処理部８０６、キャッシュ８０３の構成と動作について説明する。図９に示すように、先行読み出し処理部８０６は、転送元アドレス設定検知部９０２，ＤＭＡ転送サイズ設定検知部９０３，加算回路９０４，先行アドレスレジスタ９０５，先行読み出し終了サイズ保持部９０６を備えており、キャッシュ９０７は、コントローラ９０８，キャッシュメモリ９０９を備えている。
【００５９】
先行読み出し処理部８０６は、ＤＭＡＣ８０２が行うレジスタ設定のうちＤＭＡ転送元アドレスを転送元アドレス設定検知部９０２により取得し、先行アドレスレジスタ９０５に格納する。また先行読み出し処理部８０６は、ＤＭＡ転送サイズ設定検知部９０３によりＤＭＡ転送サイズを取得し、先行読み出し終了サイズ保持部９０６に格納する。両方の格納が終わると先行読み出し処理部８０６は、キャッシュ８０３の先行アドレスレジスタ９０５が保持するアドレスへリフィル要求を発行する。
【００６０】
先行読み出し処理部８０６よりリフィル要求を受けると、キャッシュ８０３のコントローラ９０８は、当該リフィル要求に含まれるアドレスが指定する１ワードがキャッシュメモリ９０９上にあるか否かを確認するためキャッシュメモリ９０９にアドレスを発行する。これに応答してキャッシュメモリ９０９は、データがあればヒット、なければミスを表す制御信号をコントローラ９０８に返す。ミスを表す制御信号を受け取ると、コントローラ９０８は、上記リフィル要求に含まれるアドレスが指すリソース８０４上のデータ１ワードを読み出しキャッシュメモリ９０９に格納するキャッシュリフィル動作を行う。またコントローラ９０８は、キャッシュメモリ９０９よりヒットを表す制御信号を受け取るか、上記キャッシュリフィル動作が終わると、リフィル完了通知を先行読み出し処理部８０６に発行する。
【００６１】
リフィル完了通知を受け取ると、先行読み出し処理部８０６は、先行アドレスレジスタ９０５に格納されたアドレスを加算回路９０４により１ワード分インクリメントし、次のＤＭＡ転送元領域をリフィルするよう再度キャッシュ８０３にリフィル要求を発行する。これをＤＭＡ転送サイズが指示するＤＭＡ転送したいワード分繰り返すことで、リソース８０４上の全てのＤＭＡ転送元領域をキャッシュメモリ９０９上に先行読み出しすることができる。
【００６２】
(実施の形態６)
本実施形態におけるＤＭＡ転送装置の全体構成は図１０に示すとおりである。このＤＭＡ転送装置１００８は、ＤＭＡＣ１００２、ＤＭＡＣを制御するマスタ１００１、共有キャッシュ１００３、リソース１００４、先行読み出し処理部１００６を備える。共有キャッシュ１００３は、マスタ１００１とＤＭＡＣ１００２が利用するリソース１００４上のデータのキャッシュが置かれ、ＤＭＡＣ１００２は先行読み出し処理部１００６と共有キャッシュ１００３を介してリソース１００４上でＤＭＡ転送を行う。
【００６３】
先行読み出し処理部１００６は、ＤＭＡ転送を開始するためマスタ１００１がＤＭＡＣ１００２に対して行うレジスタ設定をモニタし、その中のＤＭＡ転送元領域の開始アドレス設定よりＤＭＡ転送元アドレスを取得し、さらに、何ワードＤＭＡ転送するか指示するＤＭＡ転送サイズ設定よりＤＭＡ転送サイズを取得し、取得したＤＭＡ転送元アドレスとＤＭＡ転送サイズを共有キャッシュ１００３に発行する。
【００６４】
共有キャッシュ１００３は、受け取ったＤＭＡ転送元アドレスからＤＭＡ転送サイズまでのＤＭＡ転送元領域をリソース１００４から読み出し、共有キャッシュ１００３上にコピーを格納するリフィル動作を行う。さらに共有キャッシュ１００３は、ＤＭＡ転送元領域全てのリフィルが完了すると、リフィル完了通知をＤＭＡＣ１００２に発行する。
【００６５】
ＤＭＡＣ１００２は、リソース１００４上のＤＭＡ転送元領域のキャッシュを共有キャッシュ１００３に格納完了したことをリフィル完了通知により認識する。ＤＭＡＣ１００２は、格納したＤＭＡ転送元データをＤＭＡ転送先に出力するため、ＤＭＡ転送元領域の先頭アドレスであるＤＭＡ転送先アドレスを共有キャッシュ１００３に発行する。ＤＭＡ転送先アドレスを受けると共有キャッシュ１００３は、先行読み出し処理部１００６が指定する共有キャッシュ１００３上のＤＭＡ転送元アドレスからＤＭＡ転送サイズまでのＤＭＡ転送元領域を、共有キャッシュ１００３上のＤＭＡ転送先アドレスからＤＭＡ転送サイズまでの転送先空間へ転送する。
【００６６】
次に先行読み出し処理部１００６、共有キャッシュ１００３の詳細な構成と動作について説明する。図１１に示すように先行読み出し処理部１００６は、転送元アドレス設定検知部１１０２，ＤＭＡ転送サイズ設定検知部１１０３，先行アドレスレジスタ１１０５，先行読み出し終了サイズ保持部１１０６を備えており、共有キャッシュ１００３は、コントローラ１１０８，キャッシュメモリ１１０９を備えている。
【００６７】
先行読み出し処理部１００６は、ＤＭＡＣ１００２が行うレジスタ設定のうちＤＭＡ転送元アドレスを転送元アドレス設定検知部１１０２で取得し、先行アドレスレジスタ１１０５に格納する。また先行読み出し処理部１００６は、ＤＭＡＣ１００２が行うレジスタ設定のうちＤＭＡ転送サイズをＤＭＡ転送サイズ検知部１１０３で取得し、先行読み出し終了サイズ保持部１１０６に格納する。両方の格納が終わると先行アドレスレジスタ１１０５と先行読み出し終了サイズ保持部１１０６からＤＭＡ転送元アドレスとＤＭＡ転送サイズを共有キャッシュ１００３に発行する。
【００６８】
ＤＭＡ転送元アドレスとＤＭＡ転送サイズを受けると共有キャッシュ１００３のコントローラ１１０８は、受け取ったＤＭＡ転送元アドレスをキャッシュメモリ１１０９に発行する。キャッシュメモリ１１０９は、当該ＤＭＡ転送元アドレスにより指定されるアドレスのデータがあればヒット、なければミスを表す制御信号をコントローラ１１０８に返す。ミスを表す制御信号を受け取ると、コントローラ１１０８は、ＤＭＡ転送元アドレスが指定するリソース１００４上のデータを読み出しキャッシュメモリ１１０９に格納するキャッシュリフィル動作を行う。これをＤＭＡ転送元アドレスからＤＭＡ転送サイズまでの領域に繰り返し行うことで全てのＤＭＡ転送元領域をキャッシュに格納することができる。さらにコントローラ１１０８は、全てのリフィル動作が完了すると、リフィル完了を知らせるためリフィル完了通知をＤＭＡＣ１００２に発行する。
【００６９】
ＤＭＡＣ１００２よりＤＭＡ転送先アドレスを受けると、共有キャッシュ１００３のコントローラ１１０８は、ＤＭＡ転送元アドレスが指定するキャッシュメモリ１１０９上の１ライン(８ワード)を読み出し、ＤＭＡ転送先アドレスが指定するキャッシュメモリ１１０９上の１ライン(８ワード)へ書き出す。これを繰り返し、ＤＭＡ転送元アドレスからＤＭＡ転送サイズまでの全てのＤＭＡ転送元領域をＤＭＡ転送先アドレスからＤＭＡ転送サイズまでの全てのＤＭＡ転送先領域へ格納することで、共有キャッシュ１００３に先行読み出ししたＤＭＡ転送元領域のデータをそのまま共有キャッシュ１００３上のＤＭＡ転送先領域へ転送させることができる。
【００７０】
次に、図１１のキャッシュメモリ１１０９が図１２の構成であり、メモリ部１２１７の初期状態が図１３(ａ)の時、図１４のアドレス１，アドレス２が指定するリソース１００４上のデータのキャッシュをメモリ部１２１７に格納するリフィル要求を受けた時の、動作と構成を説明する。
【００７１】
まずキャッシュメモリ１１０９の構成を説明する。キャッシュメモリ１１０９は、セットアソシアティブ方式のキャッシュである。メモリ部１２１７は、複数のライン(ライン０〜３)から構成され、それぞれのラインは、タグ領域１２０４、validビット領域１２０５、データ領域１２０６を備えている。データ領域１２０６は、リソース１００４上のデータのコピーを格納する８ワード領域を備える。タグ領域１２０４には、データ領域１２０６に格納したデータがどこのアドレスのデータか区別するためにアドレスの一部(フレームアドレス)が格納される。また、キャッシュメモリ１１０９が受けるアドレスは、フレームアドレスと、ライン０〜３のうちどのラインを使うか選択するため使われる０〜３までのアドレス範囲からなるエントリアドレスと、８ワードからなるデータ領域１２０６から１ワード選択するため０〜７までのアドレス範囲からなるワードアドレスを備えている。
【００７２】
次に動作について説明する。コントローラ１１０８は、アドレス１のデータが既にメモリ部１２１７に格納されているか確認するためアドレス１(図１４参照)をキャッシュメモリ１１０９に出力する。アドレス１を受けると、キャッシュメモリ１１０９のアドレスデコーダ１２０８は、アドレス１のエントリアドレス０をデコードし、メモリ部１２１７のライン０を選択する(図１３(ａ)参照)。次にヒット判定部１２１０は、ライン０のタグ領域１２０４(図１３(ａ)参照)とアドレス１のフレームアドレス(図１４参照)が一致し、かつ、ライン０上のvalidビット領域１２０５が有効であるか調査する。ここでは全て条件を満たしているためライン０上に目的のデータがあると判断し、ヒット判定部１２１０は、キャッシュメモリ１１０９上にデータがあることを知らせるためコントローラ１１０８にヒット情報を通知する。
【００７３】
次にアドレス２(図１４参照)を受け取ると、アドレスデコーダ１２０８は、アドレス２のエントリアドレス１をデコードし、メモリ部１２１７のライン１を選択する。次にヒット判定部１２１０は、ライン１のタグ領域１２０４とアドレス２のフレームアドレス２が一致し、かつ、ライン１上のvalidビット領域１２０５が有効であるか調査する。ここでは条件を満たしていないためライン１上にデータがないと判断し、ヒット判定部１２１０は、キャッシュメモリ１１０９上にデータがないことを知らせるためコントローラ１１０８にミス情報を通知する。ミス情報を受けるとコントローラ１１０８は、リソース１００４上のアドレス２のワードアドレス０〜７のアドレス範囲の８ワードを読み出し、キャッシュメモリ１１０９のワードデコーダ１２０７を制御し、ライン１上のデータ領域１２０６のワード０〜７領域に順に書き込む。さらにタグ書き込み部１２０２によりライン１のタグ領域１２０４にアドレス２のフレームアドレス２を格納し、valid bit書き込み部１２０３によりライン１のvalidビット領域１２０５を有効に設定する。以上の動作により、リソース１００４上のＤＭＡ転送元のデータをキャッシュメモリ１１０９へリフィルさせることができ、リフィル後のメモリ部１２１７は図１３(ｂ)に示すような状態となる。
【００７４】
次に図１１のキャッシュメモリ１１０９が図１２の構成であり、メモリ部１２１７の初期状態が図１５(ａ)の時、図１６に示すアドレス３とアドレス４をコントローラ１１０８より受け取り、アドレス３が指定するメモリ部１２１７上のＤＭＡ転送元領域１ライン(８ワード)を読み出し、アドレス４が指定するメモリ部１２１７上のＤＭＡ転送先領域１ライン(８ワード)へ格納した時のキャッシュ動作を説明する。
【００７５】
キャッシュメモリ１１０９はアドレス３(図１６参照)を受けると、アドレス３のエントリアドレス１をアドレスデコーダ１２０８でデコードし、メモリ部１２１７のライン１を選択する。次にヒット判定部１２１０は、ライン１上のタグ領域１２０４とアドレス３のフレームアドレス２が一致し、かつ、ライン１のvalidビット領域１２０５が有効か調査する。ここでは全て条件を満たしているため、ヒット判定部１２１０は、コントローラ１１０８へヒット情報を送る。またワードセレクタ１２１１は、ライン１上のデータ領域１２０６の８ワードを順に読み出し、コントローラ１１０８に送る。
【００７６】
次にコントローラ１１０８は、ＤＭＡ転送先へ書き出すためアドレス４(図１６参照)と、先ほど読み出したＤＭＡ転送元データ８ワードをキャッシュメモリ１１０９へ出力する。キャッシュメモリ１１０９は、アドレス４のエントリアドレス３をアドレスデコーダ１２０８でデコードし、メモリ部１２１７のライン３を選択する。次にライン３上のタグ領域１２０４にタグ書き込み部１２０２によりアドレス４のフレームアドレス４を格納し、さらにvalid bit書き込み部１２０３によりライン３のvalidビット領域１２０５を有効に設定し、受け取ったデータをワードデコーダ１２０７でライン３のデータ領域１２０６のワード０〜７領域に順に格納する。
【００７７】
以上の動作により、キャッシュメモリ１１０９上に格納したＤＭＡ転送元領域の１ライン(８ワード)をキャッシュメモリ１１０９上のＤＭＡ転送先領域へ転送させることができ、転送後のメモリ部１２１７は図１５(ｂ)に示すような状態となる。
【００７８】
さらに、キャッシュメモリ１１０９に格納したＤＭＡ転送元領域のデータを読み出し、キャッシュメモリ１１０９上のＤＭＡ転送先領域へ格納した時、valid bit書き込み部１２０３により読み出したラインのvalidビット領域１２０５を無効に書き換え、転送済みのＤＭＡ転送元のデータをキャッシュ上から削除することで、キャッシュの有効利用を図ることができる。
【００７９】
(実施の形態７)
本実施形態におけるＤＭＡ転送装置の全体構成は図１０に示すとおりであり、本実施形態における共有キャッシュ１００３、先行読み出し処理部１００６は図１１の構成をとる。またそれぞれの構成とその動作については実施の形態６で説明したとおりであるが、キャッシュメモリ１１０９の構成が異なる。
【００８０】
キャッシュメモリ１１０９が図１７の構成であり、メモリ部１７０３の初期状態が図１８(ａ)の時、図１９のアドレス１、アドレス２が指定するリソース１００４上のデータのキャッシュをメモリ部１７０３に格納するリフィル要求を受けた時の、動作と構成を説明する。
【００８１】
まずキャッシュメモリ１１０９の構成を説明する。キャッシュメモリ１１０９はフルアソシアティブ方式のキャッシュであり、メモリ部１７０３は複数のライン(ライン０〜３)から構成され、それぞれのラインはタグ領域１７０５、データ領域１７０６を備えている。データ領域１７０６は、リソース１００４上のデータのコピーを格納する８ワード領域を備える。タグ領域１７０５には、データ領域１７０６に格納したデータがどこのアドレスのデータか区別するためにアドレスの一部(フレームアドレス)が格納される。またキャッシュメモリ１１０９が受けるアドレスは、フレームアドレスと、ワードアドレスとを備えている。ワードアドレスは、８ワードからなるデータ領域１７０６から１ワード選択するため０〜７までのアドレス範囲からなる。
【００８２】
次に動作について説明する。コントローラ１１０８は、アドレス１のデータが既にメモリ部１７０３に格納されているか確認するためアドレス１(図１９参照)をキャッシュメモリ１１０９に出力する。アドレス１を受けるとキャッシュメモリ１１０９のヒット判定部１７０７は、アドレス１のフレームアドレス１００とメモリ部１７０３の全てのラインのタグ領域１７０５とを比較する。ここではライン０が一致するためキャッシュメモリ１１０９上のライン０にデータがあると判断し、ヒット判定部１７０７は、コントローラ１１０８にヒット情報を通知する。次にアドレス２(図１９参照)を受け取ると、アドレス２のフレームアドレス１０１とメモリ部１７０３の全てのラインのタグ領域１７０５とを比較する。ここでは１つも一致しないためキャッシュメモリ１１０９の全てのラインにデータがないと判断し、ヒット判定部１７０７は、コントローラ１１０８にミス情報を通知する。ミス情報を受けるとコントローラ１１０８は、リソース１００４上のアドレス２のワードアドレス０〜７の範囲より８ワードを読み出し、ヒット判定部１７０７が選択する空のライン１のデータ領域１７０６のワード０〜７領域へワードデコーダ１７０８を制御し順に書き込む。さらにタグ書き込み部１７０２により、ライン１上のタグ領域１７０５にアドレス２のフレームアドレス１０１を格納する。以上の動作により、リソース１００４上のＤＭＡ転送元のデータをキャッシュメモリ１１０９へリフィルさせることができ、リフィル後のメモリ部１７０３は図１８(ｂ)に示すような状態となる。
【００８３】
次に図１１のキャッシュメモリ１１０９が図１７の構成であり、メモリ部１７０３の初期状態が図２０の時、コントローラ１１０８より図２１のアドレス３とアドレス４を受け取り、アドレス３が指定するメモリ部１７０３上のＤＭＡ転送元領域１ライン(８ワード)を読み出し、アドレス４が指定するメモリ１７０３上のＤＭＡ転送先領域１ライン(８ワード)へ格納した時のキャッシュ動作を説明する。
【００８４】
キャッシュメモリ１１０９がアドレス３(図２１参照)を受けると、ヒット判定部１７０７でアドレス３のフレームアドレス１０１とメモリ部１７０３の全てのラインのタグ領域１７０５とを比較する。ここではライン１が一致するためヒット判定部１７０７は、一致したライン１を選択し、さらにキャッシュメモリ１１０９上にデータがあることを知らせるためコントローラ１１０８へヒット情報を送る。次にキャッシュメモリ１１０９がアドレス４を受けると、ヒット判定部１７０１により先ほど選択されたライン１のタグ領域１７０５をタグ書き込み部１７０２によりアドレス４(図２１参照)のフレームアドレス２０１に書き換える。これにより、キャッシュメモリ１１０９の１ライン(８ワード)をＤＭＡ転送させることができる。また、転送後のメモリ部１７０３は図２０(ｂ)に示すような状態となる。
【００８５】
さらにキャッシュメモリ１１０９上のＤＭＡ転送元領域のタグをＤＭＡ転送先領域のものに変更する際、属性指定部１７１０は、このデータをキャッシュに保持するライトバック属性(ＷＢ)か、キャッシュに保持するがリソース１００４にも書き出すライトスルー属性(ＷＴ)か、キャッシュに保持しないノンバッファブル属性かを指定する。属性指定部１７１０が指定するキャッシュ属性はメモリ部１７０３の属性領域１７１１に保持される。これにより、キャッシュメモリ１１０９のＤＭＡ転送先領域に転送したデータをキャッシュメモリ１１０９に保持してよいかリソース１００４に書き出さなければいけないか指定することができる。
【００８６】
(実施の形態８)
本実施形態におけるＤＭＡ転送装置の全体構成は図１０に示すとおりであり、本実施形態における共有キャッシュ１００３、先行読み出し処理部１００６は図１１の構成をとる。またそれぞれの構成とその動作については実施の形態６で説明したとおりであるが、キャッシュメモリ１１０９の構成が異なる。
【００８７】
本実施形態におけるキャッシュメモリ１１０９の構成を図２２に示す。このキャッシュメモリ１１０９は、ＤＭＡ転送用のデータを格納するキャッシュメモリＢ２２０６、それ以外のデータを格納するキャッシュメモリＡ２２０５を備えている。
【００８８】
キャッシュメモリ１１０９にリードアドレス及びライトアドレスが入力されるとキャッシュ制御部２２０２は、ＤＭＡ転送領域保持部２２０９が保持するＤＭＡ転送範囲アドレスと比較し、範囲内のアドレスならＤＭＡ転送と判断してキャッシュメモリＢ２２０６を選択し、それ以外ならキャッシュメモリＡ２２０５を選択する。また、このアドレスをアドレス制御部２２０３で制御し、キャッシュ制御部２２０２が選択したキャッシュメモリ２２０５または２２０６へ入力する。またキャッシュメモリ１１０９に入力されたデータがあればライトデータ制御部２２０４で制御し、キャッシュ制御部２２０２が選択するキャッシュメモリ２２０５または２２０６へ入力する。またキャッシュ制御部２２０２が選択したキャッシュメモリ２２０５または２２０６が出力するヒット，ミスの情報をタグ参照結果制御部２２０７で選択し、コントローラ１１０８に出力する。またキャッシュ制御部２２０２が選択したキャッシュメモリ２２０５または２２０６が出力するデータがあればリードデータ制御部２２０８で選択し、コントローラ１１０８に出力する。以上の動作により、ＤＭＡＣ１００２がＤＭＡ転送で使用するキャッシュメモリとマスタ１００１が使用するキャッシュメモリを分けることができる。
【００８９】
(実施の形態９)
本実施形態におけるＤＭＡ転送装置の全体構成は図２３に示すとおりである。このＤＭＡ転送装置２３０８は、ＤＭＡＣ２３０２と、ＤＭＡＣ２３０２を制御するマスタ２３０１と、共有キャッシュ２３０３と、リソース２３０４と、先行読み出し処理部２３０６とを備える。共有キャッシュ２３０３は、マスタ２３０１とＤＭＡＣ２３０２で共有され、リソース２３０４上のデータのキャッシュが置かれる。ＤＭＡＣ２３０２は、先行読み出し処理部２３０６と共有キャッシュ２３０３を介してリソース２３０４上でＤＭＡ転送を行う。
【００９０】
次にそれぞれの動作を説明する。共有キャッシュ２３０３は、先行読み出し処理部２３０６より受け取ったＤＭＡ転送元アドレスが指定するリソース２３０４上のデータを先行読み出しする。またＤＭＡＣ２３０２は、マスタ２３０１によるレジスタ設定が終わるとＤＭＡ転送を開始し、リソース２３０４上のＤＭＡ転送先領域の先頭アドレスであるＤＭＡ転送先アドレスを共有キャッシュ２３０３に発行する。共有キャッシュ２３０３は、ＤＭＡ転送先アドレスを受けると、先行読み出ししたデータを共有キャッシュ２３０３上のＤＭＡ転送先アドレスが指定する領域へ格納する。
【００９１】
さらに共有キャッシュ２３０３は、ＤＭＡ転送元アドレスとＤＭＡ転送先アドレスをそれぞれインクリメントし、ＤＭＡ転送元アドレスが指定するリソース２３０４上のデータを共有キャッシュ２３０３のＤＭＡ転送先アドレス領域へ格納し、これをＤＭＡ転送サイズまで繰り返すことで、全てのリソース２３０４上のＤＭＡ転送元領域のキャッシュを共有キャッシュ２３０３上のＤＭＡ転送先領域へ格納することができる。
【００９２】
また先行読み出し処理部２３０６は、実施の形態６で説明した先行読み出し処理部１００６(図１０)と同様の動作を行う。
【産業上の利用可能性】
【００９３】
本発明は、瞬時に転送が開始されるＤＭＡ転送や、高速なＤＭＡ転送が要求される半導体装置において有用である。
【図面の簡単な説明】
【００９４】
【図１】一般的なＤＭＡ転送装置の概略構成を示す図である。
【図２】先行読み出しによりＤＭＡ転送を高速化する従来のＤＭＡ転送装置の概略構成を示す図である。
【図３】本発明の実施の形態１〜３におけるＤＭＡ転送装置の全体構成を示す図である。
【図４】本発明の実施の形態１における先行読み出し処理部の内部構成を示す図である。
【図５】本発明の実施の形態２における先行読み出し処理部の内部構成を示す図である。
【図６】本発明の実施の形態３における先行読み出し処理部の内部構成を示す図である。
【図７】本発明の実施の形態４におけるＤＭＡ転送装置の全体構成を示す図である。
【図８】本発明の実施の形態５におけるＤＭＡ転送装置の全体構成を示す図である。
【図９】本発明の実施の形態５における先行読み出し処理部とキャッシュの内部構成を示す図である。
【図１０】本発明の実施の形態６におけるＤＭＡ転送装置の全体構成を示す図である。
【図１１】本発明の実施の形態６における先行読み出し処理部と共有キャッシュの内部構成を示す図である。
【図１２】図１１に示したキャッシュメモリの内部構成を示す図である。
【図１３】(ａ)メモリ部の初期状態を示す図である。(ｂ)リフィル後のメモリ部の状態を示す図である。
【図１４】アドレスの例を示す図である。
【図１５】(ａ)メモリ部の初期状態を示す図である。(ｂ)キャッシュメモリ上に格納したＤＭＡ転送元領域の１ライン(８ワード)をキャッシュメモリ上のＤＭＡ転送先領域へ転送後のメモリ部の状態を示す図である。
【図１６】アドレスの例を示す図である。
【図１７】本発明の実施の形態７におけるキャッシュメモリの内部構成を示す図である。
【図１８】(ａ)メモリ部の初期状態を示す図である。(ｂ)リフィル後のメモリ部の状態を示す図である。
【図１９】アドレスの例を示す図である。
【図２０】(ａ)メモリ部の初期状態を示す図である。(ｂ)キャッシュメモリの１ライン(８ワード)をＤＭＡ転送後のメモリ部の状態を示す図である。
【図２１】アドレスの例を示す図である。
【図２２】本発明の実施の形態８におけるキャッシュメモリの内部構成を示す図である。
【図２３】本発明の実施の形態９におけるＤＭＡ転送装置の全体構成を示す図である。
【符号の説明】
【００９５】
101,201,306,701,808,1008,2308…ＤＭＡ転送装置
102,202,302,703,802,1002,2302…ＤＭＡＣ
103,204,304,706,804,1004,2304…リソース
203,303,705,806,1006,2306…先行読み出し処理部
205,403,503,603,905,1105…先行アドレスレジスタ
206,908,1108…コントローラ
207,506,606…先行データ格納バッファ
208,402,502,602,904…加算回路
209,210…セレクタ
301,702,801,2301…マスタ
305,704,902,1102…転送元アドレス設定検知部
405,707,712,714…アドレス選択部
406,713…先行データ格納バッファ
407…先行読み出し無効レジスタ
408…先行読み出し終了アドレス保持部
409,716…データ選択部
507…連続先行読み出し回数計測部
508…総転送回数計測部
509…総転送数保持部
510…連続先行読み出し数保持部
607…Ｘ方向転送数計測部
608…Ｙ方向転送数計測部
609…Ｘ方向転送数保持部
610…Ｙ方向転送数保持部
611…不連続サイズ保持部
708…ＤＭＡ転送制御部
709,710,711…先行読み出しチャネル
715…調停部
717…ＤＭＡ転送領域補保持部
718…先行読み出し指定部
803…キャッシュ
903,1103…ＤＭＡ転送サイズ設定検知部
906,1106…先行読み出し終了サイズ保持部
909,1109…キャッシュメモリ
1003,2303…共有キャッシュ
1202,1702…タグ書き込み部
1203…Valid bit書き込み部
1204,1705…タグ領域
1205…Validビット領域
1206,1706…データ領域
1207,1708…ワードデコーダ
1208…アドレスデコーダ
1210,1707…ヒット判定部
1211,1709…ワードセレクタ
1217,1703…メモリ部
1710…属性指定部
1711…属性領域
2202…キャッシュ制御部
2203…アドレス制御部
2204…ライトデータ制御部
2205…キャッシュメモリＡ
2206…キャッシュメモリＢ
2207…タグ参照結果制御部
2208…リードデータ制御部
2209…ＤＭＡ転送領域保持部
【図１】
2009211248.tif 000003
【図２】
2009211248.tif 000004
【図３】
2009211248.tif 000005
【図４】
2009211248.tif 000006
【図５】
2009211248.tif 000007
【図６】
2009211248.tif 000008
【図７】
2009211248.tif 000009
【図８】
2009211248.tif 000010
【図９】
2009211248.tif 000011
【図１０】
2009211248.tif 000012
【図１１】
2009211248.tif 000013
【図１２】
2009211248.tif 000014
【図１３】
2009211248.tif 000015
【図１４】
2009211248.tif 000016
【図１５】
2009211248.tif 000017
【図１６】
2009211248.tif 000018
【図１７】
2009211248.tif 000019
【図１８】
2009211248.tif 000020
【図１９】
2009211248.tif 000021
【図２０】
2009211248.tif 000022
【図２１】
2009211248.tif 000023
【図２２】
2009211248.tif 000024
【図２３】
2009211248.tif 000025