(57)【要約】【課題】データの転送効率を向上できるデータ転送装置及び半導体集積回路装置を提供すること。【解決手段】データ転送装置１０は、第１メモリ装置２０と第２メモリ装置３０との間のデータ転送を制御するデータ転送制御装置１０であって、前記第１メモリ装置２０から前記第２メモリ装置３０へのデータ５０の転送命令に応答して、前記データ５０を第１転送単位でアドレス順に転送させる第１転送命令を出力する第１転送調停回路１１と、前記第１転送命令に応答して、前記第１転送単位の前記データ５１−０〜５１−７を前記第１転送単位よりも小さい第２転送単位で転送させる第２転送命令を出力する第２転送調停回路１２とを具備し、前記第２転送調停回路１２は、前記第１、第２メモリ装置２０、３０においてアクセス可能なアドレスから順番に前記第２転送命令を出力する。【選択図】      図１
2006313478.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリ装置と第２メモリ装置との間のデータ転送を制御するデータ転送制御装置であって、
前記第１メモリ装置から前記第２メモリ装置へのデータの転送命令に応答して、前記データを第１転送単位でアドレス順に転送させる第１転送命令を出力する第１転送調停回路と、
前記第１転送命令に応答して、前記第１転送単位の前記データを前記第１転送単位よりも小さい第２転送単位で転送させる第２転送命令を出力する第２転送調停回路と
を具備し、前記第２転送調停回路は、前記第１、第２メモリ装置においてアクセス可能なアドレスから順番に前記第２転送命令を出力する
ことを特徴とするデータ転送装置。
【請求項２】
前記第２転送調停回路は、第１転送単位の１つの前記データに関して全ての前記第２転送命令を出力した後にアクノリッジ信号を出力し、
前記第１転送調停回路は、前記アクノリッジ信号に応答して、次のアドレスに対応する前記第１転送命令を出力する
ことを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記第１転送命令を保持する第３メモリ装置を更に備え、
前記第１転送調停回路は、前記第２転送調停回路の処理の進行状況に関わらず前記第１転送命令を順次、前記第３メモリ装置へ格納し、
前記第２転送調停回路は、前記第３メモリ装置に保持されるいずれかの前記第１転送命令に基づいて前記第２転送命令を作成する
ことを特徴とする請求項１記載のデータ転送装置。
【請求項４】
第１メモリ装置と、
前記第１メモリ装置からデータを受け取る第２メモリ装置と、
前記第１、第２メモリ装置間を接続し、前記データを伝送するバスと、
前記バスを介して前記第１、第２メモリ装置間の前記データの転送を制御するデータ転送装置と
を具備し、前記データ転送装置はデータを所定のデータサイズを有する複数の第１分割データに分割して、前記第１メモリ装置から前記第２メモリ装置へ前記第１分割データを転送させる第１転送命令を、アドレス順に発生する第１転送調停回路と、
前記第１転送命令を受けて、前記第１分割データを、前記バスの転送幅を有する複数の第２分割データに分割して転送させる第２転送命令を発生し、前記第１、第２メモリ装置においてアクセス可能な領域から順番に前記第２分割データを転送させる
ことを特徴とする半導体集積回路装置。
【請求項５】
前記第１メモリ装置は、複数のバンクを有するＤＲＡＭであり、
前記第２メモリ装置は、複数のエントリを有し且つデータをＦＩＦＯ方式で取り扱うメモリであり、
前記第１転送調停回路は、前記データを、前記エントリのエントリ幅を有する複数の前記第１分割データに分割し、
前記第２転送調停回路は、前記第１メモリ装置においてアクセス可能ないずれかの前記バンクに保持される前記第２分割データを優先して転送する
ことを特徴とする請求項４記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置及び半導体集積回路装置に関するもので、例えばＤＭＡ（Direct Memory Access）転送に関する。
【背景技術】
【０００２】
近年、ＤＭＡ転送技術が広く使用されてきている。ＤＭＡ転送を行う場合、メモリやデバイスはＤＭＡコントローラ（以下ＤＭＡＣと呼ぶ）と接続される。そして、ＤＭＡＣによってデータの転送制御が行われる（例えば特許文献１、２参照）。ＤＭＡ転送によれば、ＣＰＵ（Central Processing Unit）を介さずにメモリやデバイス間のデータ転送を行うことが出来る。従って、ＣＰＵの負荷を軽減でき、システムの性能を向上出来る。
【０００３】
しかしながら、上記従来のＤＭＡ転送であると、転送元あるいは転送先のデバイスがインオーダー（in-order）でしか読み出しまたは書き込みが出来ない場合、データの転送効率が低下するという問題があった。
【特許文献１】特開平９−２２３１０２号
【特許文献２】特開２００２−２５９３２６号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、上記事情に鑑みてなされたもので、その目的は、データの転送効率を向上できるデータ転送装置及び半導体集積回路装置を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、この発明の一態様に係るデータ転送装置は、第１メモリ装置と第２メモリ装置との間のデータ転送を制御するデータ転送制御装置であって、前記第１メモリ装置から前記第２メモリ装置へのデータの転送命令に応答して、前記データを第１転送単位でアドレス順に転送させる第１転送命令を出力する第１転送調停回路と、前記第１転送命令に応答して、前記第１転送単位の前記データを前記第１転送単位よりも小さい第２転送単位で転送させる第２転送命令を出力する第２転送調停回路とを具備し、前記第２転送調停回路は、前記第１、第２メモリ装置においてアクセス可能なアドレスから順番に前記第２転送命令を出力する。
【０００６】
またこの発明の一態様に係る半導体集積回路装置は、第１メモリ装置と、前記第１メモリ装置からデータを受け取る第２メモリ装置と、前記第１、第２メモリ装置間を接続し、前記データを伝送するバスと、前記バスを介して前記第１、第２メモリ装置間の前記データの転送を制御するデータ転送装置とを具備し、前記データ転送装置はデータを所定のデータサイズを有する複数の第１分割データに分割して、前記第１メモリ装置から前記第２メモリ装置へ前記第１分割データを転送させる第１転送命令を、アドレス順に発生する第１転送調停回路と、前記第１転送命令を受けて、前記第１分割データを、前記バスの転送幅を有する複数の第２分割データに分割して転送させる第２転送命令を発生し、前記第１、第２メモリ装置においてアクセス可能な領域から順番に前記第２分割データを転送させる。
【発明の効果】
【０００７】
この発明によれば、データの転送効率を向上できるデータ転送装置及び半導体集積回路装置を提供できる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施形態を図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
この発明の第１の実施形態に係るデータ転送装置及び半導体集積回路装置について、図１を用いて説明する。図１は本実施形態に係る半導体集積回路（ＬＳＩ）のブロック図である。図示するように、ＬＳＩ１はＤＭＡＣ１０、メモリ２０、３０、及びバス４０を備えている。
【００１０】
ＤＭＡＣ１０は、メモリ２０とメモリ３０との間のデータ転送を制御する。ＤＭＡＣ１０は、インオーダー転送命令発生器（In-order Transfer Instruction Generator：ＩＴＩＧ）１１及びアウトオブオーダー転送命令発生器（Out-of-order Transfer Instruction Generator：ＯＴＩＧ）１２を備えている。そしてＩＴＩＧ１１がデータの転送命令を受信して、転送先メモリまたは転送元メモリのバッファサイズに合わせたデータサイズの転送命令を生成する。ＯＴＩＧ１２は、ＩＴＩＧ１１の生成した転送命令に応答して、該転送命令により指定されたデータを分割し、分割したデータをアウトオブオーダーで転送させる転送命令を生成する。
【００１１】
メモリ２０はアウトオブオーダーによるデータの読み書きが可能なメモリであり、例えばＤＲＡＭ等である。メモリ２０は複数のバンク２１−０〜２１−ｎを有しており、各バンクはランダムにアクセス可能である。
【００１２】
メモリ３０はインオーダーによりデータの読み書きを行うＦＩＦＯ（first in first out）方式のメモリである。以下、便宜上、メモリ３０をＦＩＦＯ３０と呼ぶことにする。ＦＩＦＯ３０は複数のエントリ３１−０〜３１−ｍを有しており、エントリ３１−０〜３１−ｍの順番にデータが格納される。１エントリのビット幅は、例えば１２８ビットである。
【００１３】
バス４０は、メモリ２０とＦＩＦＯ３０との間でデータを伝達し、またＤＭＡＣ１０からの転送命令を伝達する。バス４０のビット幅は例えば３２バイトである。従って、ＦＩＦＯ３０へ（ＦＩＦＯ３０から）データを１エントリ分転送する場合には、４回に分割して行われる（３２バイト×４回＝１２８バイト）。
【００１４】
次に、本実施形態に係るＤＭＡＣ１０によるデータ転送方法について図２及び図３を用いて説明する。図２は本実施形態に係るデータ転送方法のフローチャートである。また図３はデータ転送時における転送データの様子を示す概念図である。
【００１５】
まずＤＭＡＣ１０は、外部からデータの転送命令を受信する（ステップＳ１０）。この際、ＤＭＡＣ１０は、転送元において、転送すべきデータが保持される領域の先頭アドレス（以下ソースアドレスＳｒｃＡｄｄｒと呼ぶ）と、転送先において、転送されたデータを保持すべき領域の先頭アドレス（以下宛先アドレスＤｓｔＡｄｄｒと呼ぶ）と、転送データのデータサイズＴＳｉｚｅを受け取る。例えば図３に示すように、転送データ５０のデータサイズＴＳｉｚｅは１ｋバイトであったとする。
【００１６】
次にＤＭＡＣ１０のＩＴＩＧ１１は、インオーダー方式のメモリのバッファサイズに合わせて転送データ５０を分割し、分割された転送データ毎の転送命令（これを第１転送命令と呼ぶ）を生成する。図１の例であると、インオーダー方式のメモリはＦＩＦＯ３０であり、そのバッファサイズは１２８バイトである。従って図３に示すように、転送データ５０は８個の分割データ５１−０〜５１−７に分割される（１０２４バイト／１２８バイト＝８個）。そして、これらの分割データ５１−０〜５１−７毎に、第１転送命令が生成される。勿論、分割データ５１−０〜５１−７の各データサイズは１２８バイトである。ＩＴＩＧ１１は、まず分割データ５１−０についての第１転送命令をＯＴＩＧ１２へ出力する。第１転送命令は、分割データ５１−０〜５１−７毎に、転送すべき分割データが保持される領域の先頭アドレス（以下ソースアドレスＴｅｍｐＳｒｃＡｄｄｒと呼ぶ）と、転送先において、転送された分割データを保持すべき領域の先頭アドレス（以下宛先アドレスＴｅｍｐＤｓｔＡｄｄｒと呼ぶ）と、分割データのデータサイズＢｕｆＳｉｚｅを含む。これらの情報を、以下ＤＭＡタグと呼ぶ。第１転送命令が出力された段階では、実際のデータ転送はまだ行われない。
【００１７】
次に、ＤＭＡタグを受け取ったＯＴＩＧ１２は、受け取った分割データ５１−０〜５１−７のいずれかを、バスサイズに合わせて更に分割し、分割された分割データ（これを再分割データと呼ぶことにする）毎の転送命令（これを第２転送命令と呼ぶ）を生成する。図１の例であると、バス４０のサイズは３２バイトである。従って図３に示すように、分割データ５１−０〜５１−７の各々は、４個の分割データ５２−０〜５２−３に再分割される。そして、これらの再分割データ５２−０〜５２−３毎に、第２転送命令が生成される。勿論、再分割データ５２−０〜５２−３の各データサイズは３２バイトである。第２転送命令は、再分割データ５２−０〜５１−３毎に、転送すべき再分割データが保持される領域の先頭アドレス（以下ソースアドレスＴｍｐＯｔｉｇＳｒｃＡｄｄｒと呼ぶ）と、転送先において再分割データを保持すべき領域の先頭アドレス（以下宛先アドレスＴｍｐＯｔｉｇＤｓｔＡｄｄｒと呼ぶ）と、再分割データのデータサイズＢｕｓＳｉｚｅを含む。
【００１８】
そしてＯＴＩＧ１２は、転送可能な再分割データ５２−０〜５２−３についての第２転送命令を、メモリ２０及びＦＩＦＯ３０へ出力する。第２転送命令により、メモリ２０とＦＩＦＯ３０との間でデータが転送される。この際、ＯＴＩＧ１２は、必要に応じて第２転送命令の順番を入れ換える。すなわち、必ずしも再分割データ５２−０〜５２−３の順番で第２転送命令を出力するわけではない。例えば再分割データ５２−０が転送不可であり、再分割データ５２−１が転送可能な場合には、再分割データ５２−０より先に再分割データ５２−１についての第２転送命令を出力する。第２転送命令が出力された段階で、初めてデータの転送が実際に行われる。
【００１９】
ある分割データ５１−０〜５１−７のいずれかについての第２転送命令が全て出力され、その分割データのメモリ２０・ＦＩＦＯ３０間の転送が終了すると、ＯＴＩＧ１２はアクノリッジ信号をＩＴＩＧ１１へ返す（ステップＳ４０）。すると、全ての分割データ５１−０〜５１−７の転送が完了していた場合（ステップＳ５０）、処理は終了する。完了していない場合にはステップＳ２０に戻り、ＩＴＩＧは次の分割データについて第１転送命令を出力し、ステップＳ３０、Ｓ４０の処理を繰り返す。
【００２０】
以上によってメモリ２０とＦＩＦＯ３０との間でデータの転送が行われる。次に、ステップＳ２０、Ｓ３０についてより詳細に説明する。まずステップＳ２０のＩＴＩＧ１１の処理について図４のフローチャートを用いて説明する。
【００２１】
まずＤＭＡＣ１０が外部から転送命令を受けると、ＩＴＩＧ１１は転送すべきデータ５０が保持される領域の先頭アドレス（以下ソースアドレスＳｒｃＡｄｄｒと呼ぶ）と、転送先においてデータ５０を保持すべき領域の先頭アドレス（以下宛先アドレスＤｓｔＡｄｄｒと呼ぶ）と、データサイズＴＳｉｚｅを受信する（ステップＳ２１）。
【００２２】
次にＩＴＩＧ１１は、最初に転送すべき分割データ５１−０に関するアドレスＴｅｍｐＳｒｃＡｄｄｒ、ＴｅｍｐＤｓｔＡｄｄｒ、及びデータ５０の転送元における最終アドレスＬａｓｔＳｒｃＡｄｄｒを計算する（ステップＳ２２）。分割データ５１−０のアドレスＴｅｍｐＳｒｃＡｄｄｒ、アドレスＴｅｍｐＤｓｔＡｄｄｒは、当然にＳｒｃＡｄｄｒ及びＤｓｔＡｄｄｒに一致する。また最終アドレスＬａｓｔＳｒｃＡｄｄｒは、ＳｒｃＡｄｄｒ＋ＴＳｉｚｅにより計算できる。
【００２３】
そして、ステップＳ２２で算出したアドレスＴｅｍｐＳｒｃＡｄｄｒ、ＴｅｍｐＤｓｔＡｄｄｒ及びバッファサイズＢｕｆＳｉｚｅに基づき、第１転送命令を作成し、ＯＴＩＧ１２へ出力する（ステップＳ２３）。この第１転送命令が意味するところを図５に示す。図５はメモリ２０からＦＩＦＯ３０へデータを転送する場合を例に、分割データ転送の様子を示す概念図である。図示するように、ステップＳ２３で作成される第１転送命令は、メモリ２０において転送データ５０内の先頭アドレスＳｒｃＡｄｄｒから始まる最初の分割データ５１−０を、ＦＩＦＯ３０における宛先アドレスＤｓｔＡｄｄｒから始まるエントリに転送させる旨の命令である。
【００２４】
次にＩＴＩＧ１１は、ＯＴＩＧ１２からアクノリッジ信号を受けると次の分割データ５１−１に関するアドレスＴｅｍｐＳｒｃＡｄｄｒ及びＴｅｍｐＤｓｔＡｄｄｒを計算する（ステップＳ２４）。この様子を示しているのが図６である。図示するように、次に作成されるべき第１転送命令は、分割データ５１−０の次のアドレスに保持される分割データ５１−１を、ＦＩＦＯ３０において分割データ５１−０の次のアドレス領域に転送させる旨の命令である。従って、ソースアドレスＴｅｍｐＳｒｃＡｄｄｒは、直前のＴｅｍｐＳｒｃＡｄｄｒ＋ＢｕｆＳｉｚｅ、宛先アドレスＴｅｍｐＤｓｔＡｄｄｒは直前のＴｅｍｐＤｓｔＡｄｄｒ＋ＢｕｆＳｉｚｅで計算出来る。
【００２５】
そして、ソースアドレスＴｅｍｐＳｒｃＡｄｄｒが最終アドレスＬａｓｔＳｒｃＡｄｄｒを超えたか否かを判定する。超えた場合は、最後の分割データ５１−７に関する第１転送命令が出力された、すなわち全ての分割データ５１−０〜５１−７について第１転送命令が出力されたことになるので、ＩＴＩＧ１１の処理は終了する。超えていない場合は、まだ分割データが残っているので、ステップＳ２４、Ｓ２５を繰り返す。
【００２６】
次にステップＳ３０のＯＴＩＧ１２の処理について図７のフローチャートを用いて説明する。まずＯＴＩＧ１２はＩＴＩＧ１１から第１転送命令を受け取る（ステップＳ３１）。第１転送命令を受け取ることにより、ＯＴＩＧ１２はＤＭＡタグ（ＴｅｍｐＳｒｃＡｄｄｒ、ＴｅｍｐＤｓｔＡｄｄｒ、ＢｕｆＳｉｚｅ）を受け取る。
【００２７】
次にＯＴＩＧ１２は、分割データ５１−０内において最初に転送すべき再分割データ５１−１に関するアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒ、ＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒ、及び分割データ５１−０の転送元における最終アドレスＬａｓｔＯｔｉｇＳｒｃＡｄｄｒを計算する（ステップＳ３２）。再分割転送データ５２−０のソースアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒ及び宛先アドレスＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒは、当然にＴｅｍｐＳｒｃＡｄｄｒ及びＴｅｍｐＤｓｔＡｄｄｒに一致する。また最終アドレスＬａｓｔＯｔｉｇＳｒｃＡｄｄｒは、ＴｅｍｐＳｒｃＡｄｄｒ＋ＢｕｆＳｉｚｅにより計算できる。
【００２８】
そしてＯＴＩＧ１２は、ステップＳ２３で算出したアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒ、ＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒ及びバスサイズＢｕｓＳｉｚｅに基づき第２転送命令を作成する（ステップＳ３３）。この第２転送命令が意味するところを図８に示す。図８はメモリ２０からＦＩＦＯ３０へデータを転送する場合を例に、再分割データの転送の様子を示す概念図である。図示するように、ステップＳ３３で作成される第２転送命令は、メモリ２０において分割データ５１−０内の先頭アドレスＴｅｍｐＳｒｃＡｄｄｒから始まる最初の再分割データ５２−０を、ＦＩＦＯ３０における宛先アドレスＴｅｍｐＤｓｔＡｄｄｒから始まるエントリに転送させる旨の命令である。
【００２９】
次にＯＴＩＧ１２は、次の再分割データ５１−２に関するアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒ及びＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒを計算する（ステップＳ３４）。この様子を示しているのが図９である。図示するように、次に作成されるべき第２転送命令は、再分割データ５２−０の次のアドレスに保持される再分割データ５２−１を、ＦＩＦＯ３０において再分割データ５２−０の次のアドレス領域に転送させる旨の命令である。従って、ソースアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒは、直前のＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒ＋ＢｕｓＳｉｚｅ、宛先アドレスＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒは直前のＴｅｍｐＯｔｉｇＤｓｔＡｄｄｒ＋ＢｕｓＳｉｚｅで計算出来る。
【００３０】
そして、ソースアドレスＴｅｍｐＯｔｉｇＳｒｃＡｄｄｒが最終アドレスＬａｓｔＯｔｉｇＳｒｃＡｄｄｒを超えたか否かを判定する。超えた場合は、最後の再分割データ５２−３に関する第２転送命令が作成された、すなわち全ての再分割データ５２−０〜５２−３について第２転送命令が作成されたことになる。従ってＯＴＩＧ１２は、分割データ５２−０〜５２−３をその時点で最も効率よく転送出来るように、第２転送命令の順序を入れ換えて、メモリ２０及びＦＩＦＯ３０へ第２転送命令を出力する。
【００３１】
上記のように、この発明の第１の実施形態に係るデータ転送装置及び半導体集積回路装置によれば、効率の良いデータ転送を実現できる。本実施形態によれば、インオーダー方式でデータの読み書きを行うメモリと、アウトオブオーダー方式でデータの読み書きを行うメモリとの間でデータの転送を行う際、インオーダー方式で読み書きを行うメモリで扱われるデータの最小単位については、インオーダー方式でデータを転送する。そしてその最小単位を更に複数のデータに分割して、分割データに関してはアウトオブオーダー方式でデータを転送している。すなわち、マクロなレベルではインオーダー方式を用いつつ、ミクロなレベルではアウトオブオーダー方式でデータを転送している。このように、インオーダー方式のメモリにおいてもアウトオブオーダー方式を用いることが出来るため、データの転送効率を向上出来る。本特徴は、例えばバンクコンフリクト（Bank Conflict）を起こすようなメモリと、インオーダー方式のメモリとの間でデータを転送するような場合に顕著となる。このような場合について、ＤＲＡＭとＦＩＦＯとを例に挙げて、以下第２の実施形態として説明する。
【００３２】
次に、本発明の第２の実施形態に係るデータ転送装置及び半導体集積回路装置について図１０を用いて説明する。本実施形態は、上記第１の実施形態において、メモリ２０がＤＲＡＭである場合に関するものである。図１０は、ＤＲＡＭ２０とＦＩＦＯ３０のメモリ空間の概念図である。
【００３３】
図示するように、ＤＲＡＭ２０に保持されている２５６バイト（ＴＳｉｚｅ）のデータ５０を、ＦＩＦＯ３０のエントリ０、エントリ１に転送する場合を考える。ＦＩＦＯ３０のエントリサイズ（ＢｕｆＳｉｚｅ）は１２８バイトであるから、データ５０はＩＴＩＧ１１によって２つの分割データ５１−０、５１−１に分割される。まずＩＴＩＧ１１は、分割データ５１−０に関する第１転送命令を作成し、ＯＴＩＧ１２へ出力する。ＤＭＡタグの内容は、ＴｍｐＳｒｃＡｄｄｒ＝０ｘＡ０、ＴｍｐＤｓｔＡｄｄｒ＝０ｘ００、ＢｕｆＳｉｚｅ＝１２８である。すなわち、ＤＲＡＭ２０におけるアドレス０ｘＡ０〜０ｘＡＦに保持されているデータ５１−０が、ＦＩＦＯ３０におけるアドレス０ｘ００から始まるエントリに転送させる第１転送命令がＯＴＩＧ１２に与えられる。
【００３４】
次にＯＴＩＧ１２がアウトオブオーダーでの転送を行うべく、第２転送命令を作成する。この様子を示しているのが図１１である。図示するように、ＯＴＩＧ１２は、分割データ５１−０に関して、以下のような４つの第２転送命令を作成する。すなわち、  
１：ＴｍｐＯｔｉｇＳｒｃＡｄｄｒ＝０ｘＡ０  
ＴｍｐＯｔｉｇＤｓｔＡｄｄｒ＝０ｘ００  
ＢｕｓＳｉｚｅ＝３２  
２：ＴｍｐＯｔｉｇＳｒｃＡｄｄｒ＝０ｘＡ４  
ＴｍｐＯｔｉｇＤｓｔＡｄｄｒ＝０ｘ０４  
ＢｕｓＳｉｚｅ＝３２  
３：ＴｍｐＯｔｉｇＳｒｃＡｄｄｒ＝０ｘＡ８  
ＴｍｐＯｔｉｇＤｓｔＡｄｄｒ＝０ｘ０８  
ＢｕｓＳｉｚｅ＝３２  
４：ＴｍｐＯｔｉｇＳｒｃＡｄｄｒ＝０ｘＡＣ  
ＴｍｐＯｔｉｇＤｓｔＡｄｄｒ＝０ｘ０Ｃ  
ＢｕｓＳｉｚｅ＝３２  
そして、これら４つの第２転送命令を、最も転送効率が良くなるように出力する。例えばＤＲＡＭのアドレス０ｘＡ０〜０ｘＡ３の領域（再分割データ５２−０）と、アドレス０ｘＡ４〜０ｘＡ７の領域（再分割データ５２−１）とが、同一のバンクであり、更にアドレス０ｘＡ８〜０ｘＡＢの領域（再分割データ５２−２）と、アドレス０ｘＡＣ〜０ｘＡＦの領域（再分割データ５２−３）とが、同一のバンクであったとする。すると、再分割データ５２−０〜５２−３の順にデータの転送を行おうとすると、バンクコンフリクトの問題が生ずる。
【００３５】
バンクコンフリクトとは、同一のバンクに連続してアクセスした場合、一定時間、そのバンクがビジー（busy）状態となり、アクセス出来ない状態に陥ることである。バンクコンフリクトを生じた場合には、それが解消されるまで処理は待たなければならない。図１２は、ＤＲＡＭにアクセスがなされた場合の各種信号のタイミングチャートである。図示するように、例えば時刻ｔ０であるバンクに対して転送命令が出されたとする。するとそのバンクは時刻ｔ１から一定期間Δｔだけアクセス不能になる。従って、次にそのバンクにアクセス出来るのは時刻ｔ２である。その期間、そのバンクのビジーフラグ（busy flag）が“１”となる。ビジーフラグは、図１３に示すように、バンク毎に設けられており、“１”となることによって当該バンクがアクセス不能であることを知らせるためのものである。
【００３６】
図１１に戻って説明する。ＯＴＩＧ１２は、第２転送命令を出力する順序を決定する際、再分割データ５２−０〜５２−３が格納されているバンクのビジーフラグをチェックする。この際のＯＴＩＧ１２の処理を図１４のフローチャートに示す。図示するように、着目した再分割データを保持する領域のアドレスに対応するバンクのビジーフラグをチェックする（ステップＳ３７−１）。そしてビジーフラグが立っていなければ（ステップＳ３７−２）、そのバンクにはアクセス可能であるので、その再分割データについて第２転送命令を出力する（ステップＳ３７−３）。ビジーフラグが立っていた場合（ステップＳ３７−２）、次のアドレスに格納される再分割データに着目し（ステップＳ３７−４）、ステップＳ３７−１を行う。この処理を、全ての再分割データの転送が終了するまで繰り返す。
【００３７】
例えば図１１の場合、まず再分割データ５２−０を転送したとすると、そのバンクはビジー状態となりその後一定期間はアクセスが出来なくなる。すなわち、再分割データ５２−１にアクセスするにはビジー状態が解消するまで待たなくてはならない。そこでＯＴＩＧ１２は、異なるバンクであり且つビジー状態でないバンクに格納されている再分割データ５２−３の転送を行う。再分割データ５２−３の転送を行っている間に、再分割データ５２−１を保持するバンクのビジー状態が解消された場合、次に再分割データ５２−１の転送を行う。そして最後に再分割データ５２−３の転送を行う。
【００３８】
以上のようにして分割データ５１−０の転送が完了すると、ＯＴＩＧ１２はアクノリッジ信号をＩＴＩＧ１１に返す。するとＩＴＩＧ１１は、分割データ５１−１に関する第１転送命令を出力し、再び上記と同様の処理を繰り返す。
【００３９】
上記のように、ＯＴＩＧ１２が、バンクコンフリクトを生じないように第２転送命令の出力順序を入れ換えることにより、データ転送効率が向上出来る。この点について、図１５のタイミングチャートを用いて説明する。図１５において、ＭＲはＤＲＡＭからのデータの読み出し動作、ＦＷはＦＩＦＯへの書き込み動作、Ｗａｉｔはバンクコンフリクトによる待ち時間を示す。ＭＲ及びＦＷにそれぞれかかる時間は２クロックサイクルで、Ｗａｉｔにかかる時間は３クロックサイクルであったとする。
【００４０】
まず、本実施形態の方法を用いずに、インオーダー方式によって再分割データ５２−０〜５２−３をアドレス順にＤＲＡＭ２０からＦＩＦＯ３０に転送した場合について説明する。図示するように、時刻ｔ０で再分割データ５２−０の転送を開始したとすると時刻ｔ２で転送は終了する。この時点で、データ５２−０、５２−１を保持するバンクはビジー状態となっているため、データ５２−１の転送開始時刻は、最も早くて時刻ｔ２から３クロック後の時刻ｔ４である。データ５２−１、５２−２の転送の際にはバンクコンフリクトは生じないが、データ５２−３を転送する際に再びバンクコンフリクトが生じる。すなわち、時刻ｔ１０にデータ５２−２の転送が終了するが、次のデータ５２−３の転送は、そのバンクのビジー状態が解消する時刻ｔ１２まで待たなくてはならない。その結果、再分割データ５２−０〜５２−３の転送終了は時刻ｔ１３となる。
【００４１】
これに対して本実施形態に係る方法であると、再分割データ５２−０、５２−２、５２−１、５２−３の順にＦＩＦＯ３０へデータが書き込まれる。従って、バンクコンフリクトの問題が生じない。従って、無駄な待ち時間を発生することなく、連続して再分割データの転送処理を実行できる。その結果、インオーダー方式のみを用いて転送する場合に比べて、２回の待ち時間分、すなわち６サイクル分だけ早い時刻ｔ１１にデータ転送は完了する。
【００４２】
次に、この発明の第３の実施形態に係るデータ転送装置及び半導体集積回路装置について図１６を用いて説明する。図１６はＩＴＩＧ１１のブロック図である。本実施形態は、上記第１、第２の実施形態において、ＩＴＩＧ１１をハードウェアによって実現するものである。従って、本実施形態ではＩＴＩＧ１１以外の構成についての説明は省略する。
【００４３】
図示するようにＩＴＩＧ１１は、バッファサイズ検出回路６０、マルチプレクサ６１、６３、加算器６２、６４、６５、及び最終アドレス判定回路６６を備えている。
【００４４】
バッファサイズ検出回路６０は、外部より入力されるアドレスＳｒｃＡｄｄｒ及びＤｓｔＡｄｄｒに基づいて、転送の対象となるデバイスを把握すると共に、バッファサイズＢｕｆＳｉｚｅを検出、出力する。マルチプレクサ６１は、ソースアドレスＳｒｃＡｄｄｒと加算器６２の出力とのいずれかを選択する。加算器６２は、マルチプレクサ６１の出力と、バッファサイズ検出回路６０の出力するバッファサイズＢｕｆＳｉｚｅとを加算して、ソースアドレスＴｅｍｐＳｒｃＡｄｄｒを出力する。マルチプレクサ６３は、宛先アドレスＤｓｔＡｄｄｒと加算器６４の出力とのいずれかを選択する。加算器６４は、マルチプレクサ６３の出力と、バッファサイズ検出回路６０の出力するバッファサイズＢｕｆＳｉｚｅとを加算して、宛先アドレスＴｅｍｐＤｓｔＡｄｄｒを出力する。加算器６５は、外部より入力されるアドレスＳｒｃＡｄｄｒとデータサイズＴＳｉｚｅとを加算して、最終アドレスＬａｓｔＳｒｃＡｄｄｒを出力する。最終アドレス判定回路６６は第１転送命令を出力すると共に、加算器６２の出力するアドレスＴｍｐＳｒｃＡｄｄｒと最終アドレスＬａｓｔＳｒｃＡｄｄｒとを比較して、第１転送命令が全て出力されたか否かを判定する。
【００４５】
次に上記構成のＩＴＩＧ１１の動作について説明する。外部より転送命令を受信した直後は、マルチプレクサ６１、６３はそれぞれソースアドレスＳｒｃＡｄｄｒ及び宛先アドレスＤｓｔＡｄｄｒを選択する。そして加算器６２、６４は、マルチプレクサ６１、６３で選択したソースアドレスＳｒｃＡｄｄｒ及び宛先アドレスＤｓｔＡｄｄｒをそれぞれＴｍｐＳｒｃＡｄｄｒ及びＴｅｍｐＤｓｔＡｄｄｒとする。また加算器６５は、ソースアドレスＳｒｃＡｄｄｒとデータサイズＴＳｉｚｅとを加算して、最終アドレスＬａｓｔＳｒｃＡｄｄｒを出力する。そして最終アドレス判定回路６６から、第１転送命令が出力される。
【００４６】
最初の第１転送命令が出力されると、バッファサイズ検出回路６０はソースアドレスＳｒｃＡｄｄｒと宛先アドレスＤｓｔＡｄｄｒに基づいて、バッファサイズＢｕｆＳｉｚｅを検出する。バッファサイズは、メモリ２０、３０にそれぞれ割り当てられているアドレスから検出出来る。例えば図１７の場合、ソースアドレスＳｒｃＡｄｄｒが０ｘ００〜０ｘ６Ｆであれば対象デバイスの一方はＦＩＦＯ１であるので、バッファサイズＢｕｆＳｉｚｅは１２８バイトである。またソースアドレスＳｒｃＡｄｄｒが０ｘ７０〜０ｘＦＦであれば対象デバイスの一方はＦＩＦＯ２であるので、バッファサイズＢｕｆＳｉｚｅは２５６バイトである。
【００４７】
またマルチプレクサ６１、６３は、ＯＴＩＧ１２からアクノリッジ信号Ａｃｋを受け取ると、それぞれ加算器６２、６４の出力を選択する。従って加算器６２は、マルチプレクサ６１で選択されたソースアドレスＴｅｍｐＳｒｃＡｄｄｒと、バッファサイズ検出回路６０から出力されたバッファサイズＢｕｆＳｉｚｅとを加算して、次のソースアドレスＴｅｍｐＳｒｃＡｄｄｒを出力する。また加算器６４は、マルチプレクサ６３で選択された宛先アドレスＴｅｍｐＤｓｔＡｄｄｒと、バッファサイズ検出回路６０から出力されたバッファサイズＢｕｆＳｉｚｅとを加算して、次の宛先アドレスＴｅｍｐＤｓｔＡｄｄｒを出力する。そしてこれらのデータが第１転送命令として最終アドレス判定回路６６から出力される。
【００４８】
最終アドレス判定回路６６により、ソースアドレスＴｅｍｐＳｒｃＡｄｄｒが最終アドレスを超えた場合には、以後第１転送命令は出力されず、ＩＴＩＧ１１の処理は終了する。
【００４９】
本実施形態によれば、第１転送命令生成・出力処理に特化したハードウェアによってＩＴＩＧ１１を形成している。従って上記第１、第２の実施形態で説明した効果に加えて、ＩＴＩＧ１１の処理速度を向上出来る。
【００５０】
次に、この発明の第４の実施形態に係るデータ転送装置及び半導体集積回路装置について図１８を用いて説明する。図１８はＩＴＩＧ１１のブロック図である。本実施形態は、上記第１、第２の実施形態において、ＩＴＩＧ１１をソフトウェアによって実現するものである。
【００５１】
図示するようにＩＴＩＧ１１は、ＣＰＵ７０、入出力回路７１、７２、メインメモリ７３、及びメモリ７４を備えている。メモリ７４は、アドレス作成プログラム７５及びバッファサイズテーブル７６を保持している。アドレス作成プログラム７５はＤＭＡタグを作成するためのプログラムであり、上記第１、第２の実施形態で説明したステップＳ４の処理を行うためのものである。バッファサイズテーブル７６は、ＤＭＡＣ１０によりデータ転送を制御される複数のデバイスと、それらに割り当てられたアドレスとの関係を保持する。バッファサイズテーブル７６の一例を図１９に示す。図示するように、バッファサイズテーブル７６は、アドレスとそれに対応するメモリの種類及びバッファサイズを格納している。例えばアドレスＡから始まる領域はＤＲＡＭ０のバンク０に対応し、そのバッファサイズは１２８バイトである。アドレスＪから始まる領域はＦＩＦＯ０のエントリ０に対応し、そのバッファサイズは１２８バイトである。またアドレスＮから始まる領域はＦＩＦＯ１のエントリ０に対応し、そのバッファサイズは２５６バイトである。
【００５２】
入出力回路７１は、転送命令により送られるソースアドレスＳｒｃＡｄｄｒ、宛先アドレスＤｓｔＡｄｄｒ、及びデータサイズＴＳｉｚｅ、並びにＯＴＩＧ１２から送られるアクノリッジ信号Ａｃｋを受け取る。ＣＰＵ７０は、必要なプログラム及びデータをメモリ７４からメインメモリ７３に読み出し、ＤＭＡタグを作成する。入出力回路７２は、ＣＰＵ７０によって作成されたＤＭＡタグをＯＴＩＧ１２へ出力する。
【００５３】
上記構成において、アドレスＳｒｃＡｄｄｒ、ＤｓｔＡｄｄｒ、ＴＳｉｚｅが入出力回路７１に入力されると、入出力回路７１はこれらのデータをメモリ７４に保持させる。そしてＣＰＵ７０がこれらのデータと、アドレス作成プログラム７５及びバッファサイズテーブル７６をメインメモリ７３に読み出して、図４に示した処理を行う。ＣＰＵ７０はステップＳ２３の処理を行う際、バッファサイズテーブル７６と、アドレスＳｒｃＡｄｄｒとを照らし合わせてバッファサイズＢｕｆＳｉｚｅを認識する。
【００５４】
また２番目の分割データ以降に関しては、ＯＴＩＧ１２からのアクノリッジを入出力回路７１が受けた際に、これをトリガとしてＣＰＵ７０はアドレス作成プログラム７５を実行する。
【００５５】
本実施形態によれば、第１転送命令生成・出力処理をソフトウェア（コンピュータ）によってＩＴＩＧ１１を形成している。すなわち、ＩＴＩＧ１１となるコンピュータを、ソースアドレスＴｅｍｐＳｒｃＡｄｄｒとバッファサイズＢｕｆＳｉｚｅとを加算するソースアドレス生成手段と、宛先アドレスＴｅｍｐＤｓｔＡｄｄｒとバッファサイズＢｕｆＳｉｚｅとを加算する宛先アドレス生成手段と、ソースアドレスＳｒｃＡｄｄｒとデータサイズＴＳｉｚｅとを加算する最終アドレス生成手段と、バッファサイズテーブル７６とソースアドレスＳｒｃＡｄｄｒとからバッファサイズＢｕｆＳｉｚｅを選択するバッファサイズ生成手段として機能させている。そして、メモリ７４に必要なプログラムを保持させておくことによりＩＴＩＧ１１に第１転送命令生成・出力処理以外の機能を持たせることが可能である。従って上記第１、第２の実施形態で説明した効果に加えて、データ転送装置の多機能化が実現できる。
【００５６】
次に、この発明の第５の実施形態に係るデータ転送装置及び半導体集積回路装置について図２０を用いて説明する。本実施形態は、上記第１乃至第４の実施形態において、ＩＴＩＧ１１とＯＴＩＧ１２との間にキュー（queue）を設けたものである。図２０はＤＭＡＣ１０のブロック図である。
【００５７】
図示するようにＤＭＡＣ１０は、上記第１乃至第４の実施形態で説明した構成において、更にメモリ１３を備えている。メモリ１３は、ＩＴＩＧ１１が作成したＤＭＡタグを保持する。ＩＴＩＧ１１は、ＯＴＩＧ１２からのアクノリッジ信号を待つことなく、転送命令を受けたら次々にＤＭＡタグを作成し、それをメモリ１３に蓄積していく。ＯＴＩＧ１２は、アクノリッジ信号をＩＴＩＧ１１へ送る必要はない。またＯＴＩＧ１２は、メモリ１３に保持されているＤＭＡタグのいずれかを選択して取り出して第２転送命令を作成する。その他の構成及び動作は上記第１乃至第４の実施形態と同様である。
【００５８】
本実施形態によれば、ＯＴＩＧ１２は、メモリ１３に保持されているＤＭＡタグをどれでも自由に選択出来る。すなわち、より多くのＤＭＡタグを選択肢として選択出来る。またＩＴＩＧ１１はＤＭＡタグを作成するためにアクノリッジ信号を待つ必要が無いため、ＤＭＡＣ１０の動作速度を向上出来る。
【００５９】
上記のようにこの発明の第１乃至第５の実施形態によれば、インオーダー方式でデータを転送するシステムにおいて、転送順序が変えられないデータ単位ではインオーダーで転送し、それよりもミクロなデータ単位では順序を入れ換えてアウトオブオーダーでデータを転送している。従って、データの転送効率の低下を抑制出来る。
【００６０】
なお、上記実施形態で説明したデータ転送装置及び半導体集積回路装置は、例えば画像プロセッサなどに適用できる。図２１は、上記実施形態に係るデータ転送装置を備えた画像描画プロセッサシステムＬＳＩのブロック図である。
【００６１】
図示するように、本実施形態に係る画像描画プロセッサシステムＬＳＩ２は、ホストプロセッサ３、Ｉ／Ｏプロセッサ４、メインメモリ５、及びグラフィックプロセッサ６を備えている。ホストプロセッサ３とグラフィックプロセッサ６とは、プロセッサバスＢＵＳによって、相互に通信可能に接続されている。
【００６２】
ホストプロセッサ３は、メインプロセッサ８０、Ｉ／Ｏ部８１〜８３、及び複数の信号処理部（ＤＳＰ：Digital Signal Processor）８４を備えている。これらの回路ブロックは、ローカルネットワークＬＮ１によって相互に通信可能に接続されている。メインプロセッサ８０は、ホストプロセッサ３内の各回路ブロックの動作を制御する。Ｉ／Ｏ部８１は、Ｉ／Ｏプロセッサ４を介してホストプロセッサ３外部とデータの授受を行う。Ｉ／Ｏ部８２は、メインメモリ５との間でデータの授受を行う。Ｉ／Ｏ部８３は、プロセッサバスＢＵＳを介してグラフィックプロセッサ６との間でデータの授受を行う。信号処理部８４は、メインメモリ５や外部から読み込んだデータに基づいて信号処理を行う。
【００６３】
Ｉ／Ｏプロセッサ４は、ホストプロセッサ３と、例えば汎用バス、ＨＤＤやＤＶＤ（Digital Versatile Disc）ドライブ等の周辺機器並びにネットワークとを接続する。この際、ＨＤＤやＤＶＤドライブは、ＬＳＩ２に搭載されているものでも良いし、またはＬＳＩ２外部に設けられていても良い。
【００６４】
メインメモリ５は、ホストプロセッサ３が動作するために必要なプログラムを保持する。このプログラムは、例えば図示せぬＨＤＤ等から読み出されて、メインメモリ５に格納される。
【００６５】
グラフィックプロセッサ６は、ＤＭＡＣ９０、Ｉ／Ｏ部９１、９２、及び演算処理部９３を備えている。ＤＭＡＣ９０は、上記第１乃至第５の実施形態で説明したＤＭＡＣ１０である。Ｉ／Ｏ部９１は、プロセッサバスＢＵＳを介したホストプロセッサ３との間の入出力を司る。Ｉ／Ｏ部９２は、ＰＣＩ等の各種汎用バス、ビデオ及びオーディオ、更に外部メモリ等との入出力を司る。演算処理部９３は、画像処理演算を行う。
【００６６】
演算処理部９３はラスタライザ（rasterizer）９４、複数のピクセルシェーダ（pixel shader）９５−０〜９５−３、及びパケットマネジメントユニット（packet management unit）９６を備えている。なお、本実施形態ではピクセルシェーダ９５の数は４個であるがこれは一例に過ぎず、８個、１６個、３２個等でも良く、その数は限定されるものではない。
【００６７】
ラスタライザ９４は、入力された図形情報に従ってピクセル（pixel）を生成する。ピクセルとは、所定の図形を描画する際に取り扱われる最小単位の領域のことであり、ピクセルの集合によって図形が描画される。生成されたピクセルはピクセルシェーダ９５−０〜９５−３へ投入される。ピクセルシェーダ９５−０〜９５−３は、ラスタライザ９４から投入されたピクセルにつき演算処理を行い、リアライズメモリ上に画像データを生成する。パケットマネジメントユニット９６は、ピクセルシェーダ９５−０〜９５−３毎に設けられたリアライズメモリ（realize memory）を備えている。リアライズメモリは、例えば互いに同一の半導体基板上に形成されたｅＤＲＡＭ（embedded DRAM）であり、それぞれピクセルシェーダ９５−０〜９４−３で描画されたピクセルデータを記憶する。ＤＭＡＣ９０、Ｉ／Ｏ部９１、９２、ラスタライザ９４、及びパケットマネジメントユニット９６は、ローカルネットワークＬＮ２により相互に通信可能に接続されている。
【００６８】
上記構成において、リアライズメモリに格納されたピクセルデータは、Ｉ／Ｏ部９２が保持するＦＩＦＯにＤＭＡ転送され、外部に出力される。ＤＭＡＣ９０は、リアライズメモリとＩ／Ｏ部９２のＦＩＦＯとの間のデータ転送を、上記第１乃至第５の実施形態で説明した方法によって制御する。画像描画装置は扱うデータ量が膨大であるため、上記実施形態で説明した方法が特に有効である。
【００６９】
なお、上記実施形態ではＤＲＡＭとＦＩＦＯとの間でのデータ転送を例に挙げて説明したが、勿論、インオーダー方式でデータを読み出す／書き込む必要があるデータ転送の場合であれば限定されるものではない。
【００７０】
上記のように、この発明の実施形態に係るデータ転送装置は、  
１．第１メモリ装置と第２メモリ装置との間のデータ転送を制御するデータ転送制御装置であって、前記第１メモリ装置から前記第２メモリ装置へのデータの転送命令に応答して、前記データを第１転送単位でアドレス順に転送させる第１転送命令を出力する第１転送調停回路と、  
前記第１転送命令に応答して、前記第１転送単位の前記データを前記第１転送単位よりも小さい第２転送単位で転送させる第２転送命令を出力する第２転送調停回路とを具備し、前記第２転送調停回路は、前記第１、第２メモリ装置においてアクセス可能なアドレスから順番に前記第２転送命令を出力する。  
２．上記１において、前記第２転送調停回路は、第１転送単位の１つの前記データに関して全ての前記第２転送命令を出力した後にアクノリッジ信号を出力し、  
前記第１転送調停回路は、前記アクノリッジ信号に応答して、次のアドレスに対応する前記第１転送命令を出力する。
【００７１】
３．上記１において、前記第１転送命令を保持する第３メモリ装置を更に備え、  
前記第１転送調停回路は、前記第２転送調停回路の処理の進行状況に関わらず前記第１転送命令を順次、前記第３メモリ装置へ格納し、  
前記第２転送調停回路は、前記第３メモリ装置に保持されるいずれかの前記第１転送命令に基づいて前記第２転送命令を作成する。  
また上記実施形態に係る半導体集積回路装置は、  
４．第１メモリ装置と、  
前記第１メモリ装置からデータを受け取る第２メモリ装置と、  
前記第１、第２メモリ装置間を接続し、前記データを伝送するバスと、  
前記バスを介して前記第１、第２メモリ装置間の前記データの転送を制御するデータ転送装置とを具備し、前記データ転送装置はデータを所定のデータサイズを有する複数の第１分割データに分割して、前記第１メモリ装置から前記第２メモリ装置へ前記第１分割データを転送させる第１転送命令を、アドレス順に発生する第１転送調停回路と、  
前記第１転送命令を受けて、前記第１分割データを、前記バスの転送幅を有する複数の第２分割データに分割して転送させる第２転送命令を発生し、前記第１、第２メモリ装置においてアクセス可能な領域から順番に前記第２分割データを転送させる。  
５．上記４において、前記第１メモリ装置は、複数のバンクを有するＤＲＡＭであり、  
前記第２メモリ装置は、複数のエントリを有し且つデータをＦＩＦＯ方式で取り扱うメモリであり、  
前記第１転送調停回路は、前記データを、前記エントリのエントリ幅を有する複数の前記第１分割データに分割し、  
前記第２転送調停回路は、前記第１メモリ装置においてアクセス可能ないずれかの前記バンクに保持される前記第２分割データを優先して転送する。  
更にデータ転送装置は、  
６．上記１において、前記第１メモリ装置と前記第２メモリ装置との少なくともいずれか一方は、アドレス順に前記第１転送単位でデータを転送するインオーダー方式でのみデータ転送が可能である。  
７．上記１において、前記第１転送命令は、前記第１メモリ装置において前記第１転送単位で転送される前記データが保持されるメモリ領域の先頭アドレスを示す第１アドレスと、前記第２メモリ装置において前記第１転送単位で転送された前記データが保持されるべきメモリ領域の先頭アドレスを示す第２アドレスと、前記第１転送単位とを含み、  
前記第２転送命令は、前記第１メモリ装置において前記第２転送単位で転送される前記データが保持されるメモリ領域の先頭アドレスを示す第３アドレスと、前記第２メモリ装置において前記第２転送単位で転送された前記データが保持されるべきメモリ領域の先頭アドレスを示す第４アドレスと、前記第２転送単位とを含む。  
８．上記７において、前記第１転送調停回路は、前記第１メモリ装置における前記データの先頭アドレスに基づいて前記第１転送単位を検出する検出回路と、  
前記第１アドレスと前記第１転送単位とを加算して、次の第１転送命令に関する前記第１アドレスを生成する第１加算器と、  
前記第２アドレスと前記第１転送単位とを加算して、次の第１転送命令に関する前記第２アドレスを生成する第２加算器とを備える。  
９．上記７において、前記第１転送調停回路は、アドレス作成プログラムと第１転送単位テーブルとを保持する第３メモリ装置と、  
前記アドレス作成プログラムと前記第１転送単位テーブルとに基づいて、前記第１、第２アドレス及び前記第１転送単位を算出して、前記第１転送命令を作成するプロセッサとを備え、前記第１転送単位テーブルは、前記第１、第２メモリ装置に対して割り当てられたアドレスと、該アドレスに対応した領域の第１転送単位との関係を保持し、  
前記アドレス作成プログラムは前記プロセッサに対して、前記第１アドレスと前記第１転送単位テーブルから読み出したいずれかの前記第１転送単位とを加算して次の第１転送命令に関する前記第１アドレスを生成し、  
前記第２アドレスと前記第１転送単位テーブルから読み出したいずれかの前記第１転送単位とを加算して、次の第１転送命令に関する前記第２アドレスを生成させる。  
更に半導体集積回路装置は、  
１０．上記４において、前記第２転送調停回路は、１つの前記第１分割データに対応する全ての前記第２分割データの転送が完了した後にアクノリッジ信号を出力し、  
前記第１転送調停回路は、前記アクノリッジ信号に応答して、次の第１分割データに対応する前記第１転送命令を出力する。  
１１．上記４において、前記第１転送命令を保持する第３メモリ装置を更に備え、  
前記第１転送調停回路は、前記第２転送調停回路の処理の進行状況に関わらず前記第１転送命令を順次、前記第３メモリ装置へ格納し、  
前記第２転送調停回路は、前記第３メモリ装置に保持されるいずれかの前記第１転送命令に基づいて前記第２転送命令を作成する。  
１２．上記４において、前記第１メモリ装置と前記第２メモリ装置との少なくともいずれか一方は、前記第１分割データをアドレス順に転送するインオーダー方式でのみデータ転送が可能である。  
１３．上記４において、前記第１転送命令は、前記第１分割データの第１メモリ装置における先頭アドレスを示す第１アドレスと、転送される前記第１分割データの前記第２メモリ装置における先頭アドレスを示す第２アドレスと、前記データサイズとを含み、  
前記第２転送命令は、前記第２分割データの前記第１メモリ装置における先頭アドレスを示す第３アドレスと、転送される前記第２分割データの前記第２メモリ装置における先頭アドレスを示す第４アドレスと、前記バスの転送幅とを含む。  
１４．上記１３において、前記第１転送調停回路は、前記第１メモリ装置における前記データの先頭アドレスに基づいて前記データサイズを検出する検出回路と、  
前記第１アドレスと前記データサイズとを加算して、次の前記第１分割データに関する前記第１アドレスを生成する第１加算器と、  
前記第２アドレスと前記データサイズとを加算して、次の前記第１分割データに関する前記第２アドレスを生成する第２加算器とを備える。  
１５．上記１３において、前記第１転送調停回路は、アドレス作成プログラムとデータサイズテーブルとを保持する第３メモリ装置と、  
前記アドレス作成プログラムと前記第１転送単位テーブルとに基づいて、前記第１、第２アドレス及び前記データサイズを算出して、前記第１転送命令を作成するプロセッサとを備え、前記データサイズテーブルは、前記第１、第２メモリ装置に対して割り当てられたアドレスと、該アドレスに対応した領域の前記データサイズとの関係を保持し、  
前記アドレス作成プログラムは前記プロセッサに対して、前記第１アドレスと前記データサイズテーブルから読み出したいずれかの前記データサイズとを加算して、次に転送すべき第１分割データの前記第１アドレスを生成し、  
前記第２アドレスと前記データサイズテーブルから読み出したいずれかの前記データサイズとを加算して、次に転送すべき第１分割データの前記第２アドレスを生成させる。  
１６．上記５において、前記第１メモリ装置は、ビジー状態か否かを示すビジーフラグを前記バンク毎に保持し、  
前記第２転送調停回路は、前記ビジーフラグをチェックすることによりアクセス可能な前記バンクを認識する。  
また上記実施形態に係るデータ転送方法は、  
１７．第１、第２メモリ装置間におけるデータ転送方法であって、前記第１メモリ装置のデータを第１転送単位でアドレス順に前記第２メモリ装置に転送させる旨の第１転送命令を出力するステップと、  
前記第１転送命令に応答して、前記第１転送単位の前記データを前記第１転送単位よりも小さい第２転送単位で転送させる旨の第２転送命令を生成するステップと、  
前記第１、第２メモリ装置においてアクセス可能なアドレスから順番に、前記第２転送命令を前記第１、第２メモリ装置に出力するステップとを具備する。  
１８．上記１７において、前記第１転送単位の１つの前記データに関して全ての前記第２転送命令を出力した後にアクノリッジ信号を出力するステップと、  
前記アクノリッジ信号に応答して前記第１転送命令を出力するステップに戻り、次のアドレスに対応する前記第１転送命令を出力するステップとを更に備える。  
１９．上記１７において、前記第１転送命令を第３メモリ装置に格納するステップを更に備え、前記第２転送命令を生成するステップは、前記第３メモリ装置に保持されるいずれかの前記第１転送命令に基づいて行われる。
【００７２】
２０．上記１７において、前記第１メモリ装置と前記第２メモリ装置との少なくともいずれか一方は、アドレス順に前記第１転送単位でデータを転送するインオーダー方式でのみデータ転送が可能である。
【００７３】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【００７４】
【図１】この発明の第１の実施形態に係る半導体集積回路装置のブロック図。
【図２】この発明の第１の実施形態に係るデータ転送方法のフローチャート。
【図３】この発明の第１の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図４】この発明の第１の実施形態に係るデータ転送方法のフローチャート。
【図５】この発明の第１の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図６】この発明の第１の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図７】この発明の第１の実施形態に係るデータ転送方法のフローチャート。
【図８】この発明の第１の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図９】この発明の第１の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図１０】この発明の第２の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図１１】この発明の第２の実施形態に係るデータ転送方法を説明するための図であり、転送データの概念図。
【図１２】ＤＲＡＭに対して転送命令が為された際の各種信号のタイミングチャート。
【図１３】ＤＲＡＭのバンク構成を示すブロック図。
【図１４】この発明の第２の実施形態に係るデータ転送方法のフローチャート。
【図１５】この発明の第２の実施形態に係るデータ転送方法の効果を説明するための図であり、データ転送の様子を示すタイミングチャート。
【図１６】この発明の第３の実施形態に係るデータ転送装置の備えるインオーダー転送命令発生器のブロック図。
【図１７】この発明の第３の実施形態に係るデータ転送システムの備えるＦＩＦＯのメモリ空間の概念図。
【図１８】この発明の第４の実施形態に係るデータ転送装置の備えるインオーダー転送命令発生器のブロック図。
【図１９】この発明の第４の実施形態に係るデータ転送装置の備えるインオーダー転送命令発生器内に保持されるバッファサイズテーブルの概念図。
【図２０】この発明の第５の実施形態に係るデータ転送装置のブロック図。
【図２１】この発明の第１乃至第４の実施形態に係るデータ転送装置を備えた画像描画プロセッサのブロック図。
【符号の説明】
【００７５】
１、２…ＬＳＩ、３…ホストプロセッサ、４…Ｉ／Ｏプロセッサ、５、７３…メインメモリ、６…グラフィックプロセッサ、１０、９０…ＤＭＡＣ、１１…インオーダー転送命令発生器、１２…アウトオブオーダー転送命令発生器、１３、２０、３０、３０−１、３０−２、７４…メモリ、２１−０〜２１−ｎ…バンク、３１−０〜３１−ｍ…エントリ、５０…転送データ、５１−０〜５１−７…分割データ、５２−０〜５２−３…再分割データ、６０…バッファサイズ検出回路、６１、６３…マルチプレクサ、６２、６４、６５…加算器、６６…最終アドレス判定回路、７０…ＣＰＵ、７１、７２、８１〜８３、９１、９２…入出力回路、７５…アドレス生成プログラム、７６…バッファサイズテーブル、８０…メインプロセッサ、８４…信号処理部、９４…ラスタライザ、９５−０〜９５−３…ピクセルシェーダ、９６…パケットマネジメントユニット
【図１】
2006313478.tif 000003
【図２】
2006313478.tif 000004
【図３】
2006313478.tif 000005
【図４】
2006313478.tif 000006
【図５】
2006313478.tif 000007
【図６】
2006313478.tif 000008
【図７】
2006313478.tif 000009
【図８】
2006313478.tif 000010
【図９】
2006313478.tif 000011
【図１０】
2006313478.tif 000012
【図１１】
2006313478.tif 000013
【図１２】
2006313478.tif 000014
【図１３】
2006313478.tif 000015
【図１４】
2006313478.tif 000016
【図１５】
2006313478.tif 000017
【図１６】
2006313478.tif 000018
【図１７】
2006313478.tif 000019
【図１８】
2006313478.tif 000020
【図１９】
2006313478.tif 000021
【図２０】
2006313478.tif 000022
【図２１】
2006313478.tif 000023