(57)【要約】【課題】  バースト転送が可能なデータ転送装置によって任意のアドレス範囲のデータ転送を行う際に、バースト転送可能な領域と不可能な領域を転送前に計算することによって、データ転送装置内で転送毎にバースト転送の可否を判断する必要なく、バースト転送を使った効率的な転送を実現する。【解決手段】  バースト転送が可能なデータ転送装置からデータ転送開始アドレスとデータ転送サイズと使用するバースト長を得て、データ転送回数生成装置がバースト転送可能な領域と、その前後のバースト転送不可能な領域に分解し、それに従ってデータ転送装置がシングル転送とバースト転送を用いてデータ転送を行う。【選択図】  図１
2007087181.tif 000002
【特許請求の範囲】
【請求項１】
メモリ間のシングル転送及びバースト転送が可能なデータ転送装置から、データ転送開始アドレスと、データ転送バイト数と、転送に利用するバースト長とを得る手段と、
前記データ転送開始アドレスと前記データ転送バイト数から特定されるデータ転送範囲のうち、バースト転送を行うことが可能な回数と、前記データ転送装置がバースト転送を行うことが可能なアドレス条件を満たしていない領域の、バースト転送を行うことが可能な範囲の前の領域及び後の領域のバイト数とを計算する手段と、
前記データ転送装置に対して前記計算した3つの値を与える手段とを備えるデータ転送回数生成装置。
【請求項２】
メモリ間のシングル転送及びバースト転送が可能なデータ転送装置から、データ転送開始アドレスと、3の倍数に制限されるデータ転送バイト数を3で割った値と、転送に利用するバースト長の3倍の値とを得る手段と、
前記データ転送開始アドレスと前記データ転送バイト数を3で割った値から特定されるデータ転送範囲のうち、3回連続のバースト転送をひとかたまりとしたときにそれを行うことが可能な回数と、前記データ転送装置が3回連続でバースト転送を行うことが可能なアドレス条件を満たしていない領域の、3回連続でバースト転送を行うことが可能な範囲の前の領域及び後の領域のバイト数を3で割った値とを計算する手段と、
前記データ転送装置に対して前記計算した3つの値を与える手段とを備える請求項1記載のデータ転送回数生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
データ転送装置に関する。
【背景技術】
【０００２】
近年の半導体プロセスの発展、及びアーキテクチャの進化によってプロセッサの処理速度が非常に高まってきている。それによって以前は専用のハードウェアによってソフトウェアの介在無しに実現していた処理のいくつかは、プロセッサ上のソフトウェアによって実現することが可能になってきている。
【０００３】
プロセッサはその動作周波数が上がることで性能の向上を遂げてきたが、メモリの動作周波数はプロセッサのそれよりも向上の度合いが低く、プロセッサとメモリの動作周波数の差がプロセッサの性能向上の足枷となってしまってきている。そこでプロセッサにはメモリアクセスのレイテンシを短縮するために、メインメモリとプロセッサの間に低レイテンシでアクセスが可能なキャッシュメモリを配置する場合が多い。キャッシュメモリは同じアドレスのデータを繰り返しアクセスすることが多い、というデータアクセスの局所性を利用したもので、プロセッサによって行われる多くの処理がこれによって高速化される。
【０００４】
画像処理においても、高画質化を実現するために処理が複雑化、また多様化しており、ハードウェアによって単純かつ固定の処理を行うよりはプロセッサによって柔軟に処理したいという要求が出てきている。
【０００５】
しかしながら、画像処理においては対象となる画像のデータ容量が大きい上に、データが配置されているアドレス範囲の端から順番にアクセスするような場合が多く、データアクセスの局所性が非常に低い。よって、キャッシュメモリによる処理の高速化の効果が非常に低い。その代わり、アクセスパターンに規則性が高く、画像処理内容があらかじめ分かっていれば、プロセッサのアクセスを予測することが比較的容易である。
【０００６】
そこでキャッシュメモリだけでなく、プロセッサから自由に読み込み、書き込みが可能な小容量かつ低レイテンシでアクセス可能なローカルメモリを配置し、プロセッサはこのローカルメモリ上で処理を行う。このローカルメモリにはDMA(Direct Memory Access)可能なデータ転送装置が付いており、プロセッサの処理と並列に、次の処理に必要なデータをメインメモリ上からローカルメモリ上に転送し、処理結果のデータをローカルメモリ上からメインメモリ上に書き戻す。これによってメインメモリへのアクセスレイテンシを隠蔽することができ、処理の高速化がなされる。
【０００７】
このような方法で処理を行う場合、DMA可能なデータ転送装置はメインメモリ、ローカルメモリ間を高速でデータ転送できることが、全体の画像処理を高速に行う為には重要である。そこで、DMA可能なデータ転送装置はDRAM等のメモリに接続されているメモリコントローラに対して、転送開始アドレスと転送長を指定することで転送を行うデータを指定する。この時、DMA可能なデータ転送装置とメモリコントローラ間を接続するデータバスのビット幅何回分を転送するかで一回の転送長を指定し、バスの単位時間あたりの転送データ量を増加させることが可能となり、結果メモリ間を高速にデータ転送できるようになる。
【０００８】
この一回で転送する転送長をバースト長と呼ぶ。
【０００９】
従来例としては、例えば特許文献１と特許文献２と特許文献３をあげることが出来る。
【特許文献１】特開２０００−１７２６２９号公報
【特許文献２】特開２００３−１３２００８号公報
【特許文献３】特開平１０−１２４４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記のような手法によってデータ転送の高速化を実現した場合、メモリコントローラに接続されているメモリの形式によっては転送開始アドレスとバースト長に制限が存在する。特に画像データやプログラム等色々なデータを格納しておく必要のあるメインメモリはある程度の容量が必要であり、メモリの形式としてDRAMを使う場合が多い。DRAMを使った場合には、それに接続されるメモリコントローラはDRAM特有のアドレス指定及びデータ転送方法を用いる必要があり、DMA可能なデータ転送装置がメモリコントローラに対してバースト転送を要求する際の転送開始アドレスとバースト長に制限を受けることになる。例えば、バースト長として16バイトを使う場合には開始アドレスが16の倍数でなくてはならないという制限である。
【００１１】
このような条件下でメインメモリ上に存在する画像データの一部をローカルメモリに転送する場合、メインメモリ上に存在する転送元データ領域の開始アドレスが16の倍数で、転送サイズも16の倍数であればバースト転送のみを用いてデータ転送を完了することが可能である。しかし、実際には必ずしもその条件を満たしているわけではなく、任意の開始アドレスから任意の転送サイズを転送しなくてはならない。
【００１２】
そこで、DMA可能なデータ転送装置は目的のデータ転送を実現する為にシングル転送とバースト転送を状況によって使い分ける必要がある。その為、DMA可能なデータ転送装置内部にはメモリコントローラに対してデータ転送を一回要求するごとに、そのデータ転送の開始アドレスの生成手段と共にバースト転送可能かどうかを判断する手段を内部に備えている。データ転送する全体の領域は実際には数多くのデータ転送要求に分解してメモリコントローラに要求するが、このような構成ではその一つ一つについて毎回バースト転送可能かどうかを判断する必要がある。
【００１３】
また、メモリコントローラが変更された場合や、接続されるメモリの形式が変更になった場合にはバースト転送におけるデータ転送開始アドレスとバースト長の制限が変更になる場合が考えられる。その場合、DMA可能なデータ転送装置内に密に依存した状態でバースト転送可能かどうかを判断する手段を内蔵している場合には、制限の変更に追従するのに困難が伴う可能性が有る。
【００１４】
本発明は上記問題点を解決するためになされたもので、DMA可能なデータ転送装置が内部で毎回バースト転送可能かどうかを判断する必要をなくし、また、DMA可能なデータ転送装置とバースト条件を判断する手段との依存関係を最小限にすることでバースト転送可能条件が変更された場合に柔軟に対応可能にすることを目的とする。
【課題を解決するための手段】
【００１５】
本発明の請求項1記載のデータ転送回数生成装置は、メモリ間のシングル転送及びバースト転送が可能なデータ転送装置から、データ転送開始アドレスと、データ転送バイト数と、転送に利用するバースト長とを得る手段と、前記データ転送開始アドレスと前記データ転送バイト数から特定されるデータ転送範囲のうち、バースト転送を行うことが可能な回数と、前記データ転送装置がバースト転送を行うことが可能なアドレス条件を満たしていない領域の、バースト転送を行うことが可能な範囲の前の領域及び後の領域のバイト数とを計算する手段と、前記データ転送装置に対して前記計算した3つの値を与える手段とを備えるようにしたものである。
【００１６】
本発明の請求項2記載のデータ転送回数生成装置は、メモリ間のシングル転送及びバースト転送が可能なデータ転送装置から、データ転送開始アドレスと、3の倍数に制限されるデータ転送バイト数を3で割った値と、転送に利用するバースト長の3倍の値とを得る手段と、前記データ転送開始アドレスと前記データ転送バイト数を3で割った値から特定されるデータ転送範囲のうち、3回連続のバースト転送をひとかたまりとしたときにそれを行うことが可能な回数と、前記データ転送装置が3回連続でバースト転送を行うことが可能なアドレス条件を満たしていない領域の、3回連続でバースト転送を行うことが可能な範囲の前の領域及び後の領域のバイト数を3で割った値とを計算する手段と、前記データ転送装置に対して前記計算した3つの値を与える手段とを備えるようにしたものである。
【００１７】
請求項2記載における3回連続のバースト転送を行う場合は、1ピクセルがR、G、BまたはY、Cb、Cr等の3バイトであらわされているカラーの画像データを対象として処理を行うときである。データ転送回数生成装置に対してバースト長を3倍した値を与えることで、データ転送回数生成装置はこのモードとして動作するようになっている。
【発明の効果】
【００１８】
以上に述べたように本発明によれば、データ転送装置が、一つの転送ごとにバースト転送が可能かどうかを判断する必要無く、単純なカウンタのみを備えることでバースト転送を利用した高速なデータ転送を行うことができ、また、データ転送装置とデータ転送回数生成装置とのやりとりを転送処理前のみで行うことで、データ転送装置はバースト転送時における制限の影響を受けにくく、その変化に柔軟に対応することが可能となる。
【発明を実施するための最良の形態】
【００１９】
次に、本発明における一実施例を図面を用いて説明する。
【００２０】
図1は本発明の一例の構成を示した図である。
【００２１】
1はDMA可能なデータ転送装置で、以下の部分からなっている。11はループカウンタaで、データ転送領域の転送開始アドレスからバースト転送可能なアドレスまでの領域の転送回数を初期値とするカウンタである。12はループカウンタbで、指定されたバースト長によるバースト転送が行うことのできる回数を初期値とするカウンタである。13はループカウンタcで、バースト転送可能な領域の後から、転送終了アドレスまでの領域の転送回数を初期値とするカウンタである。14、15、16はそれぞれ転送開始アドレス出力手段、転送サイズ出力手段、バースト長出力手段で、この図で図示しない部分から得たそれぞれの値を出力する。その他には図示しない制御装置、バス接続装置等である。
【００２２】
2はデータ転送回数生成装置で、以下の部分からなっている。
【００２３】
21は転送回数a生成装置で、データ転送領域の転送開始アドレスからバースト転送可能なアドレスまでの領域の転送回数を生成する。22は転送回数b生成装置で、指定されたバースト長によるバースト転送が行うことのできる回数を生成する。23は転送回数c生成装置で、バースト転送可能な領域の後から、転送終了アドレスまでの領域の転送回数を生成する。24は制御装置で、データ転送装置1とのデータの入出力の制御、及び転送回数生成装置21、22、23の制御を行う。
【００２４】
転送回数a生成装置21内部は、データ転送領域の開始アドレスと利用するバースト長またはバースト長を3倍したものを入力にして、図３〜図７に示すような出力を生成するようになっている。
【００２５】
転送回数b生成装置22内部は、データ転送バイト数または転送バイト数を3で割ったものと、利用するバースト長またはバースト長を3倍したものと、転送回数a生成装置21の出力と、転送回数c生成装置23の出力とを入力にして図８に示すような出力を生成するようになっている。
【００２６】
転送回数c生成装置23内部は、データ転送領域の開始アドレスと転送バイト数または転送バイト数を3で割ったものを入力にして、図９〜図１２に示すような出力を生成するようになっている。
【００２７】
次にこの構成を使ったデータ転送を行う一例を示す。
【００２８】
アドレス範囲0x0000ee66番地から0x0000f0ad番地までの転送バイト数0x0248のデータをアドレス範囲0x0010ab66番地から0x0010adad番地までにバースト長32バイトを使って転送する。このとき、データ転送装置1はデータ転送回数生成装置2に対指定可の3つのパラメータを出力する。
【００２９】
データ転送開始アドレス = 0x0000ee66
データ転送バイト数 = 0x0248
バースト長 = 32
データ転送回数生成装置2はその内部の制御装置24によって3つのパラメータをデータ転送装置1から受け取り、転送回数a生成装置21、転送回数b生成装置22、転送回数c生成装置23に対して入力し、それぞれに対して値の出力をするように制御する。転送回数a生成装置21、転送回数b生成装置22、転送回数c生成装置23はそれぞれ図２〜図１２に示した表に従って以下の値を出力する。
【００３０】
転送回数a生成装置21の出力 = 0x001a
転送回数b生成装置22の出力 = 0x0011
転送回数c生成装置23の出力 = 0x000e
次に、データ転送回数生成装置2内部の制御装置24は3つの出力が完了したことをデータ転送装置1に対して通知する。この通知を受けたデータ転送装置1は3つの出力を受け取り、それぞれをその内部のループカウンタa、ループカウンタb、ループカウンタcの初期値とする。このとき、データ転送回数生成装置2内部の制御装置24はデータ転送装置1が出力を受け取った後に、次の入力を受けることが可能な状態に移行し、次の入力を待つ。
【００３１】
ここでデータ転送装置1は実際のデータ転送処理に移行する。
【００３２】
まず、データ転送装置1は内部に保持するアドレスレジスタにデータ転送元開始アドレスである0x0000ee66と、データ転送先開始アドレスである0x0010ab66を保持する。その後、ループカウンタaが保持する回数分、転送元アドレスから転送先アドレスへ1バイトずつ転送を行い、その度ごとに転送元アドレスと転送先アドレスを1ずつインクリメントする。
【００３３】
ループカウンタaが保持する回数分の転送が終わったら次にループカウンタbが保持する回数分、転送元アドレスから転送先アドレスへ32バイトのバースト転送を行い、その度ごとに転送元アドレスと転送先アドレスを32ずつインクリメントする。
【００３４】
ループカウンタbが保持する回数分の転送が終わったら次にループカウンタcが保持する回数分、転送元アドレスから転送先アドレスへ1バイトのずつ転送を行い、その度ごとに転送元アドレスと転送先アドレスを1ずつインクリメントする。
【００３５】
以上の操作によって、アドレス範囲0x0000ee66番地から0x0000f0ad番地までの転送バイト数0x0248のデータをアドレス範囲0x0010ab66番地から0x0010adad番地までにバースト長32 バイトを使って転送することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】構成図。
【図２】転送回数a生成装置。
【図３】転送回数a生成装置。
【図４】転送回数a生成装置。
【図５】転送回数a生成装置。
【図６】転送回数a生成装置。
【図７】転送回数a生成装置。
【図８】転送回数b生成装置。
【図９】転送回数c生成装置。
【図１０】転送回数c生成装置。
【図１１】転送回数c生成装置。
【図１２】転送回数c生成装置。
【符号の説明】
【００３７】
1  データ転送装置1
11  ループカウンタa
12  ループカウンタb
13  ループカウンタc
14  転送開始アドレス出力手段
15  転送サイズ出力手段
16  バースト長出力手段
2  データ転送回数生成装置
21  転送回数a生成装置
22  転送回数b生成装置
23  転送回数c生成装置
24  制御装置
【図１】
2007087181.tif 000003
【図２】
2007087181.tif 000004
【図３】
2007087181.tif 000005
【図４】
2007087181.tif 000006
【図５】
2007087181.tif 000007
【図６】
2007087181.tif 000008
【図７】
2007087181.tif 000009
【図８】
2007087181.tif 000010
【図９】
2007087181.tif 000011
【図１０】
2007087181.tif 000012
【図１１】
2007087181.tif 000013
【図１２】
2007087181.tif 000014