(57)【要約】【課題】データ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることが可能なデータ転送装置を提供することである。【解決手段】本発明のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送する。そして、装置に内蔵された一次記憶領域と、上記転送元記憶領域と上記一次記憶領域との間に設けられた第１アライナと、上記一次記憶領域と上記転送先記憶領域との間に設けられた第２アライナを備える。上記第１アライナは、上記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、上記第２アライナは、上記データ転送要求で指定された転送先記憶領域の先頭位置以降に上記一次記憶領域のデータを格納するようにシフト処理を行う。【選択図】図１
2007188357.tif 000002
【特許請求の範囲】
【請求項１】
要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられた第１アライナと、
前記一次記憶領域と前記転送先記憶領域との間に設けられた第２アライナを備え、
前記第１アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記第２アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
【請求項２】
前記データ転送の要求元からの１回の転送指示を基に、前記転送元記憶領域から前記一次記憶領域、前記一次記憶領域から前記転送先記憶領域までのデータ転送処理が実行され、
転送されるデータが、前記一次記憶領域に格納された時点で、前記データ転送の要求元に対し、その一次記憶領域までのデータ転送が完了したことを示す割り込みを出力することを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記データ転送の要求元は、前記転送元記憶領域から前記一次記憶領域へのデータ転送、前記一次記憶領域から前記転送先記憶領域へのデータ転送、それぞれについてその都度、転送指示を出し、
転送されるデータが、前記一次記憶領域に格納された時点で、その一次記憶領域までのデータ転送が完了したことを示すフラグが装置内の予め決められたレジスタに設定されることを特徴とする請求項１記載のデータ転送装置。
【請求項４】
要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置。
【請求項５】
要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、
前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置に関し、特に、ＣＰＵ（Central Processing Unit）からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域にＤＭＡ（Direct Memory Access）転送するデータ転送装置に関する。
【背景技術】
【０００２】
ＣＰＵからのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域にＤＭＡ転送するデータ転送装置が知られている。
ＤＭＡ転送については、以下に示すような技術が開示されている。
【０００３】
まず、特許文献１には、ＤＭＡ転送することが指示されたパケットが、ＲＡＭの離れたメモリ領域に格納されている場合、そのパケットを構成するデータのそれぞれに対してＤＭＡを起動し、それぞれのデータ毎にアシンクロナスＦＩＦＯに書き込むことで、アシンクロナスパケット（ＩＥＥＥ（Institute of Electrical and Electronics Engineers）１３９４の非同期通信パケット）をより好適に転送できる技術が示されている。
【０００４】
特許文献２には、通信フレームをヘッダ部とデータ部で別々の領域にＤＭＡ転送する場合に、データアライメントの不一致が検出された場合でも、最大バス幅での転送を可能とする技術が示されている。
【０００５】
特許文献３には、記憶装置と入出力装置との間のＤＭＡ転送において、データの先頭アドレスまたはデータの転送バイト数がメインバスのデータ長の倍数でない場合に、データ転送時間を短縮する技術が示されている。
【０００６】
特許文献４には、ＤＭＡ転送中のデータ入れ替えを高速に実行可能なデータ転送装置が示されている。
特許文献５には、ミスアライメント状態でのデータ転送を高速に実行することを可能としたＤＭＡコントローラが示されている。
【特許文献１】特開２００２−３６６５０８号公報「データ転送方法」
【特許文献２】特開２００３−６７３２１号公報「データ転送装置及び該データ転送装置内に具備されるアライナ」
【特許文献３】特開平５−６７０３５号公報「ＤＭＡ転送におけるデータアライメント方式」
【特許文献４】特開平１０−３３４０３８号公報「データ転送装置」
【特許文献５】特開平３−２４４０５９号公報「ＤＭＡコントローラ」
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることについては、上記した技術には示されていない。
【０００８】
本発明の課題は、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることが可能なデータ転送装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の第１態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記転送元記憶領域と前記一次記憶領域との間に設けられた第１アライナと、前記一次記憶領域と前記転送先記憶領域との間に設けられた第２アライナを備え、前記第１アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、前記第２アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置である。
【００１０】
ここで、データ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元記憶領域から一次記憶領域へのデータ転送処理の終了までに発生していると、その一次記憶領域へのデータ転送処理が終了した時点でバスが空くので、そのデータ転送処理が終わるまで待つことなく、その優先度の高い他の処理を実行することができる。
【００１１】
本発明の第２態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置である。
【００１２】
本発明の第３態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置である。
【発明の効果】
【００１３】
本発明によれば、内蔵ＲＡＭへのデータの格納が終了したタイミング、または、転送先記憶領域へのその回のデータの格納が終了したタイミングでバスが空くので、待機中の他のバス処理をパイプライン的に実行できる。
【００１４】
また、本発明によれば、ＤＭＡ転送実行中のデータのアライメントの入れ替えや、アドレス操作はハードウェアで処理するため、ＤＭＡ転送処理が高速に行える。
また、本発明によれば、内蔵ＲＡＭおよび設定レジスタ部をデータ転送装置内に設けることにより、内蔵ＲＡＭおよび設定レジスタ部に直接アクセスできなくなるため、そのデータ転送装置の耐タンパ性、すなわち、非正規な手段によるデータ読み取りを防ぐ能力を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図１は、本発明の各実施形態に共通するＤＭＡコントローラ（データ転送装置）を含む全体構成を示すブロック図である。
【００１６】
図１において、ＤＭＡコントローラ１は、ＣＰＵ２からのデータ転送要求に基づいて、転送元記憶領域３のデータをバス５を介して転送先記憶領域４にＤＭＡ転送する。
転送元記憶領域３としては、ＲＡＭ（Random Access Memory）、通信ＦＩＦＯ（First-In First-Out）、ＲＯＭ（Read Only Memory）、等が考えられる。また、転送先記憶領域４としては、ＲＡＭ、通信ＦＩＦＯ、等が考えられる。
【００１７】
図２は、本発明の第１実施形態のデータ転送装置（ＤＭＡコントローラ）１０の構成を示すブロック図である。
図２において、データ転送装置（ＤＭＡコントローラ）１０は、ＲＡＭ１１と、転送制御部１２を備える。転送制御部１２は、ＲＡＭ１１への書き込み時にデータ長Ｌ１のデータが書き込まれる第１データ記憶部１３、第２データ記憶部１４、第３データ記憶部１５、ＲＡＭ１１からの読み出し時にデータ長Ｌ２のデータが書き込まれる第４データ記憶部１６、第５データ記憶部１７、第６データ記憶部１８を備える。
【００１８】
データ長Ｌ１は、例えばデータ長Ｌ２に一致するが、データ長Ｌ１とＬ２が一致しない場合もある。
ＲＡＭ１１は、データ転送装置１０に内蔵される。本実施形態においては、ＣＰＵ２からのデータ転送要求に基づいて実行されるＤＭＡ転送において、転送元記憶領域３からのデータは、まず、ＲＡＭ１１に書き込まれる。そして、その後、ＲＡＭ１１から転送先記憶領域４へのデータ転送が実行される。
【００１９】
すなわち、転送元記憶領域３から読み出されたデータ長Ｌ１のデータは、第１データ記憶部１３に書き込まれる。第１データ記憶部１３は、保持するデータ長Ｌ１を持つデータを第２データ記憶部１４に出力する。転送制御部１２は、データの読み出し元（転送元記憶領域３）と書き込み先（ＲＡＭ１１）アドレスを基に、第１データ記憶部１３と第２データ記憶部１４から第３データ記憶部１５へのデータ書き込み時のシフトパターン（並べ替えパターン）を決定する。そして、転送制御部１２は、その決定されたシフトパターンを基に、第１データ記憶部１３と第２データ記憶部１４から第３データ記憶部１５へのデータ書き込みを実行する。第３データ記憶部１５は、保持するデータ長Ｌ１のデータをＲＡＭ１１に出力する。
【００２０】
また、ＲＡＭ１１から読み出されたデータ長Ｌ２のデータは、第４データ記憶部１６に書き込まれる。第４データ記憶部１６は、保持するデータ長Ｌ２を持つデータを第５データ記憶部１７に出力する。転送制御部１２は、データの読み出し元（ＲＡＭ１１）と書き込み先（転送先記憶領域４）アドレスを基に、第４データ記憶部１６と第５データ記憶部１７から第６データ記憶部１８へのデータ書き込み時のシフトパターン（並べ替えパターン）を決定する。そして、転送制御部１２は、その決定されたシフトパターンを基に、第４データ記憶部１６と第５データ記憶部１７から第６データ記憶部１８へのデータ書き込みを実行する。第６データ記憶部１８は、保持するデータ長Ｌ２のデータを転送先記憶領域４に出力する。
【００２１】
ＲＡＭ１１へのデータ書き込みの場合、図２の第１データ記憶部１３は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け初段（ＦＦ）」に対応し、第２データ記憶部１４は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け２段目（ＦＦ）」に対応し、第３データ記憶部１５は、図８Ａ〜図８Ｄの「内蔵ＲＡＭ書き込み（ＦＦ）」に対応する。
【００２２】
また、図２の転送制御部１２は、図３の内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２４、２５、２８、２９の組み合わせに対応する。図２の第１データ記憶部１３は、例えば、図３のＦＦ２４に対応する。図２の第２データ記憶部１４は、例えば、図３のバスマスタインタフェース部２３内に設けられるが、内蔵ＲＡＭコントローラ２２内に設けることもできる。図２の第３データ記憶部１５は、例えば、図３のＦＦ２５に対応する。
【００２３】
図２の第４データ記憶部１６は、例えば、図３のＦＦ２８に対応する。図２の第５データ記憶部１７は、例えば、図３のバスマスタインタフェース部２３内に設けられるが、内蔵ＲＡＭコントローラ２２内に設けることもできる。図２の第６データ記憶部１８は、例えば、図３のＦＦ２９に対応する。
【００２４】
図３は、図２のＤＭＡコントローラ１０のより具体的なハードウェア構成を示すブロック図である。
図３において、ＤＭＡコントローラ１０は、内蔵ＲＡＭ１１、内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、フリップフロップ（以下、ＦＦ）２４、２５、２８、２９、設定レジスタ部３１、バススレーブインタフェース部３２、から構成される。
【００２５】
ＣＰＵ２からのデータ転送要求は、バススレーブインタフェース部３２を介して設定レジスタ部３１に書き込まれる。転送元記憶領域３からのデータは、ＦＦ２４、バスマスタインタフェース部２３、内蔵ＲＡＭコントローラ２２、ＦＦ２５を介して、内蔵ＲＡＭ１１に書き込まれる。また、内蔵ＲＡＭ１１に書き込まれたデータは、ＦＦ２８、内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２９を介して、転送先記憶領域４に書き込まれる。
【００２６】
なお、図中、信号ＨＧＲＡＮＴは、バスの使用を調整するアービタ（不図示）からＤＭＡコントローラ１０に出力される、バスへのアクセス権を付与する信号である。この信号ＨＧＲＡＮＴは、バスマスタインタフェース部２３からアービタに対し出力される、バスの使用を要求する信号ＨＢＵＳＲＥＱ（図中は不図示）に対応してアービタからＤＭＡコントローラ１０に出力される信号である。また、信号ＨＲＥＡＤＹは、アービタからＤＭＡコントローラ１０に出力されるＤＭＡ転送処理が終了したことを示す信号である。
【００２７】
内蔵ＲＡＭ１１のサイズは、用途に応じて設定される。この内蔵ＲＡＭ１１のサイズとしては、Ethernet(登録商標)の最大フレームサイズ（約１．５ＫＢ）等が考えられる。
なお、バスマスタインタフェース部２３、内蔵ＲＡＭコントローラ２２はいずれもステートマシンを有するが、互いに独立して動作する訳ではなく、バスマスタインタフェース部２３のステートマシンが内蔵ＲＡＭコントローラ２２のステートマシンの上位に位置する。すなわち、内蔵ＲＡＭコントローラ２２のステートマシンは、バスマスタインタフェース部２３のステートマシンから呼び出されるサブステートマシンということができる。
【００２８】
図４は、本発明の第１実施形態のデータ転送装置（ＤＭＡコントローラ）の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
図４では、第１実施形態のデータ転送装置（ＤＭＡコントローラ）１０の構成が機能ブロックとして示されている。図３のＦＦ２４、バスマスタインタフェース部２３、内蔵ＲＡＭコントローラ２２、ＦＦ２５の組み合わせにより、転送元記憶領域３と内蔵ＲＡＭ１１の間に設けられた第１アライナ４１が構成される。また、図３のＦＦ２８、内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２９の組み合わせにより、内蔵ＲＡＭ１１と転送先記憶領域４の間に設けられた第２アライナ４２が構成される。なお、第１アライナ４１は、図２の転送制御部１２、第１データ記憶部１３、第２データ記憶部１４、第３データ記憶部１５の組み合わせに対応し、第２アライナ４２は、図２の転送制御部１２、第４データ記憶部１６、第５データ記憶部１７、第６データ記憶部１８の組み合わせに対応する。
【００２９】
第１アライナ４１は、内蔵ＲＡＭ１１の先頭位置以降に転送元記憶領域３のデータを連続して格納するようにシフト処理を行い、第２アライナ４２は、ＣＰＵからのデータ転送要求で指定された転送先記憶領域４の先頭位置以降に内蔵ＲＡＭ１１に格納されたデータを格納するようにシフト処理を行う。
【００３０】
設定レジスタ部３１は、例えば、前回のＤＭＡ転送処理が終わるタイミングにその内容（データ転送要求）をクリアする。そして、新たなＣＰＵからのデータ転送要求が設定レジスタ部３１に上書きされると、ハードウェア上の処理によって、転送元記憶領域３のいくつの不連続な領域にデータが分散しているかを示す分散データ数と、分散しているデータのデータサイズの総和である総データ長を算出し、分散データ数用レジスタ、総データ長用レジスタに算出結果を設定する。
【００３１】
分散データ数や総データ長のように、通常、ソフトウェアの処理によって算出する量をハードウェアを用いて算出することで、本実施形態では、ＤＭＡ転送処理を一層高速に行うことができる。
【００３２】
図５は、本発明の第１実施形態のＤＭＡ転送処理のフローチャートである。この処理は、図３のデータ転送装置（ＤＭＡコントローラ）１０によって実行される。
ＣＰＵからのデータ転送要求が設定レジスタ部３１に上書きされたことをトリガとして、一連の処理が開始される。なお、このデータ転送処理で転送されるデータは、転送元記憶領域３の不連続な領域に分散しているものとする。また、このフローチャートの処理では、バス幅を３２ｂｉｔ（＝１ワード）としている。
【００３３】
まず、ステップＳ１０１で、バスマスタインタフェース部２３によって、設定レジスタ部３１に設定された転送対象のデータのうちの先頭のデータの転送元アドレス、転送サイズがリードされる。
【００３４】
続く、ステップＳ１０２で、内蔵ＲＡＭコントローラ２２によって、リードされた転送元アドレスの下位（末尾）２ビットと、内蔵ＲＡＭ１１上の転送先アドレスの下位２ビットを基に、第１アライナ４１が備える第１データ記憶部１３および第２データ記憶部１４から第３データ記憶部１５へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。
【００３５】
ステップＳ１０３では、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、決定された並べ替えパターンにしたがった第１アライナ４１による並べ替えを介して、転送元記憶領域３から内蔵ＲＡＭ１１へデータがＤＭＡ転送される。
【００３６】
このＤＭＡ転送処理では、第１アライナ４１内の第１データ記憶部１３（例えば、ＦＦ２４）にラッチされているデータを第２データ記憶部１４にラッチする第１のデータラッチ処理と、図６に示すように、転送元記憶領域３から第１アライナ４１内の第１データ記憶部１３へ、データを常にワード単位で転送して、その第１データ記憶部１３にラッチする第２のデータラッチ処理と、決定された並べ替えパターンを基に、第１アライナ４１内の第１データ記憶部１３および第２データ記憶部１４から第３データ記憶部１５（例えば、ＦＦ２５）にデータを書き込むデータ書き込み処理が実行される。なお、第３データ記憶部１５に書き込まれたデータは、第３データ記憶部１５から内蔵ＲＡＭ１１に出力される。
【００３７】
続く、ステップＳ１０４では、バスマスタインタフェース部２３によって、現在転送しているデータの転送が完了したかが判定される。すなわち、ステップＳ１０１でリードされた転送サイズ（バイト単位）からステップＳ１０３で内蔵ＲＡＭ１１に書き込まれた有効データ数が減算され、その減算結果が「０」より大きいかが判定される。
【００３８】
ステップＳ１０４で、現在転送しているデータの転送が完了していないと判定された場合、ステップＳ１０３に戻り、再度、その決定された並べ替えパターンにしたがった並べ替えを介して、転送元記憶領域３から内蔵ＲＡＭ１１へデータがＤＭＡ転送される。
【００３９】
ステップＳ１０４で、現在転送しているデータの転送が完了したと判定された場合、ステップＳ１０５で、バスマスタインタフェース部２３によって、転送すべきデータの組がすべて完了したかが判定される。すなわち、ステップＳ１０５に制御が移る毎に、転送されるデータが転送元記憶領域３のいくつの不連続な領域に分散しているかを示す分散データ数を１ずつ減算し、その減算結果が「０」であるかどうかを判定する。
【００４０】
ステップＳ１０５で、転送すべきデータの組がすべて完了していないと判定された場合、ステップＳ１０１に戻る。ステップＳ１０１では、バスマスタインタフェース部２３によって、設定レジスタ部３１に設定された転送対象のデータのうちの次のデータの転送元アドレス、転送サイズがリードされる。
【００４１】
ステップＳ１０５で、転送すべきデータの組がすべて完了したと判定された場合、その時点で、バスを使用する、より優先度の高い他の処理が実行待ちの状態でなければ、ステップＳ１０６に進んで、内蔵ＲＡＭ１１から転送先記憶領域４へのＤＭＡ転送処理を実行する。
【００４２】
また、その時点ではバスが空いているので、より優先度の高い他の処理が実行待ちの状態であれば、そのより優先度の高い他の処理を実行させてから、ステップＳ１０６に進む。
【００４３】
より具体的には、次のような場合がある。
１．ＣＰＵ２は、ＤＭＡ転送指示を１回だけ出す場合。この場合、ＤＭＡコントローラ１０側で、この１回の転送指示を基に、転送元記憶領域３から内蔵ＲＡＭ１１、内蔵ＲＡＭ１１から転送先記憶領域４までのＤＭＡ転送処理を実行する。
２．ＣＰＵ２は、転送元記憶領域３から内蔵ＲＡＭ１１へのデータ転送、内蔵ＲＡＭ１１から転送先記憶領域４へのデータ転送、それぞれについてその都度、転送指示を出す場合。
【００４４】
上記１．の場合、ＤＭＡコントローラ１０は、内蔵ＲＡＭ１１までのデータ転送処理が完了すると、その内蔵ＲＡＭ１１までのデータ転送処理が完了したことを示す割り込みをＣＰＵ２に出力する。ＣＰＵ２は、その割り込みを受け取った時点で、バスを使用する、より優先度の高い他の処理（バス処理）が実行待ちの状態でない場合は、そのまま何もしない。この場合、ＤＭＡコントローラ１０は、内蔵ＲＡＭ１１から転送先記憶領域４までのデータ転送処理に移る。一方、ＣＰＵ２は、その割り込みを受け取った時点で、バス処理が実行待ちの状態の場合、ＣＰＵ２は、ＤＭＡコントローラ１０に対し、ＤＭＡ転送処理を中断する指示を出すとともに、そのバス処理に起動指示を出す。その後、そのバス処理が完了したことを示す割り込みをＣＰＵ２は受け取ると、ＣＰＵ２は、ＤＭＡコントローラ１０に対し、ＤＭＡ転送処理を再開する指示を出す。
【００４５】
上記２．の場合、ＤＭＡコントローラ１０は、内蔵ＲＡＭ１１までのデータ転送処理が完了すると、その内蔵ＲＡＭ１１までのデータ転送処理が完了したことを示すフラグを、ＤＭＡコントローラ１０内の予め決められたレジスタ（不図示）に設定する。ＣＰＵ２は、そのレジスタのフラグを参照する。その参照が行われた時点で、バス処理が実行待ちの状態でない場合、ＣＰＵ２は、ＤＭＡコントローラ１０に対し、内蔵ＲＡＭ１１から転送先記憶領域４までのＤＭＡ転送処理の実行指示を出す。一方、その参照が行われた時点で、バス処理が実行待ちの状態の場合、ＣＰＵ２は、そのバス処理に起動指示を出す。その後、そのバス処理が完了したことを示す割り込みをＣＰＵ２は受け取ると、ＣＰＵ２は、ＤＭＡコントローラ１０に対し、内蔵ＲＡＭ１１から転送先記憶領域４までのＤＭＡ転送処理の実行指示を出す。
【００４６】
内蔵ＲＡＭ１１から転送先記憶領域４へのＤＭＡ転送処理（ステップＳ１０６〜ステップＳ１１５の処理）について以下に説明する。
まず、ステップＳ１０６で、バスマスタインタフェース部２３によって、転送先記憶領域４における転送先アドレスの下位２ビットが参照され、その値によって処理が分岐する。
【００４７】
ステップＳ１０６で転送先アドレスの下位２ビットが「０１」または「１１」であると判定された場合、ステップＳ１０７で、転送先アドレスの下位２ビットを基に、第２アライナ４２が備える第４データ記憶部１６（例えば、ＦＦ２８）および第５データ記憶部１７から第６データ記憶部１８（例えば、ＦＦ２９）へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。そして、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、決定された並べ替えパターンにしたがった第２アライナ４２による並べ替えを介して、内蔵ＲＡＭ１１から転送先記憶領域４へ対象となる１バイト分のデータがＤＭＡ転送される。
【００４８】
なお、ステップＳ１０７以降の処理の説明では、第５データ記憶部１７に第４データ記憶部１６のデータをラッチする第１のデータラッチ処理や、内蔵ＲＡＭ１１からのワード単位のデータを第４データ記憶部１６にラッチする第２のデータラッチ処理については説明を省略する。これらのラッチ処理は、先頭や末尾に３バイトのデータが残った場合、すなわち、ステップＳ１０７からステップＳ１０９に進む場合、ステップＳ１１５からステップＳ１１３に進む場合、を除いては、各ステップのＤＭＡ転送処理の間に実行される。各ステップのＤＭＡ転送処理において、転送された有効データのバイト数は総データ長から減算される。減算結果の値は、ステップＳ１１１やステップＳ１１２の判定で用いられる。
【００４９】
続く、ステップＳ１０８では、バスマスタインタフェース部２３によって、転送先アドレスの下位２ビットの上位側、すなわち、daddr[1]が「０」であるかが判定される。
ステップＳ１０８で、その転送先アドレスの下位２ビットの上位側が「０」でないと判定された場合、ステップＳ１０９において、ステップＳ１０７で決定された並べ替えパターン中の未転送のハーフワード分のデータについて転送先記憶領域４へのＤＭＡ転送が実行され、ステップＳ１１０に進む。
【００５０】
ステップＳ１０８で、その転送先アドレスの下位２ビットの上位側が「０」であると判定された場合、ステップＳ１１０に進む。
ステップＳ１０６で転送先アドレスの下位２ビットが「１０」であると判定された場合、ステップＳ１０９で、転送先アドレスの下位２ビットを基に、第２アライナ４２が備える第４データ記憶部１６（例えば、ＦＦ２８）および第５データ記憶部１７から第６データ記憶部１８（例えば、ＦＦ２９）へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。そして、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、決定された並べ替えパターンにしたがった第２アライナ４２による並べ替えを介して、内蔵ＲＡＭ１１から転送先記憶領域４へ対象となるハーフワード分のデータがＤＭＡ転送される。そして、ステップＳ１１０に進む。
【００５１】
ステップＳ１０６で転送先アドレスの下位２ビットが「００」であると判定された場合、ステップＳ１１０に進む。
ステップＳ１１０では、ステップＳ１０６から制御が移った場合は、転送先アドレスの下位２ビットを基に、並べ替えパターンを決定する。それ以外のステップＳ１０８、Ｓ１０９、等のステップＳ１０６以外のステップからステップＳ１１０に制御が移った場合は、並べ替えパターンは既に決定しているので、並べ替えパターンの決定処理は行わない。そして、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、決定された、または、既に決定している並べ替えパターンにしたがった第２アライナ４２による並べ替えを介して、内蔵ＲＡＭ１１から転送先記憶領域４へ対象となる１ワード分のデータがＤＭＡ転送される。
【００５２】
ステップＳ１１１では、バスマスタインタフェース部２３によって、転送データのうち、未転送のデータのバイト数が４バイト以上あるかが判定される。
ステップＳ１１１で、未転送のデータのバイト数が４バイト以上あると判定された場合、ステップＳ１１０に戻り、対象となる１ワード分のデータに対するＤＭＡ転送が実行される。
【００５３】
一方、ステップＳ１１１で、未転送のデータのバイト数が４バイト未満であると判定された場合、ステップＳ１１２で、バスマスタインタフェース部２３によって、未転送のデータのバイト数が判定され、その判定結果により処理が分岐される。
【００５４】
ステップＳ１１２で、未転送のデータのバイト数が「００（０バイト）」と判定された場合、一連の処理を終了する。
ステップＳ１１２で、未転送のデータのバイト数が「０１（１バイト）」と判定された場合、ステップＳ１１３で、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、既に決定している並べ替えパターンにしたがった第２アライナ４２による並べ替えを介して、内蔵ＲＡＭ１１から転送先記憶領域４へ対象となる１バイト分のデータがＤＭＡ転送され、一連の処理を終了する。
【００５５】
ステップＳ１１２で、未転送のデータのバイト数が「１０（２バイト）」または「１１（３バイト）」と判定された場合、ステップＳ１１４で、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２によって、既に決定している並べ替えパターンにしたがった第２アライナ４２による並べ替えを介して、内蔵ＲＡＭ１１から転送先記憶領域４へ対象となるハーフワード分のデータがＤＭＡ転送される。ステップＳ１１２で、未転送のデータのバイト数が「１１（３バイト）」と判定された場合、まず、ハーフワード分のデータが転送されるのは、その３バイト分のデータが内蔵ＲＡＭ１１上で左詰めに格納されているからである。
【００５６】
ステップＳ１１４に続く、ステップＳ１１５では、バスマスタインタフェース部２３によって、未転送のデータのバイト数が「０１（１バイト）」であるかが判定される。
ステップＳ１１５では、未転送のデータのバイト数が「０１（１バイト）」でないと判定された場合、一連の処理を終了する。
【００５７】
ステップＳ１１５では、未転送のデータのバイト数が「０１（１バイト）」であると判定された場合、ステップＳ１１３で、バスマスタインタフェース部２３および内蔵ＲＡＭコントローラ２２は、ステップＳ１１４で未転送だった１バイト分のデータについて、内蔵ＲＡＭ１１から転送先記憶領域４へＤＭＡ転送を実行し、一連の処理を終了する。
【００５８】
図７は、第２アライナから転送先記憶領域へのデータ転送を説明する図である。
図７に示すように、転送されるデータの先頭部分や末尾部分では、ワード転送以外のバイト転送やハーフワード転送が発生し得る。
【００５９】
図８Ａ〜図８Ｄは、アライナが備える第１および第２データ記憶部から書き込み先（第３データ記憶部）へのデータ書き込み時のシフトパターンである並べ替えパターンを示す図である。この並べ替えパターンは、上記したように、転送元アドレスの下位２ビットと、転送先アドレスの下位２ビットによって決定される。なお、これらの図中、第１データ記憶部は「リードデータバス上のデータ受け初段（ＦＦ）」、第２データ記憶部は「リードデータバス上のデータ受け２段目（ＦＦ）」、第３データ記憶部は「内蔵ＲＡＭ書き込み（ＦＦ）」と表記されている。
【００６０】
本実施形態の場合、並べ替えパターンは全部で１６パターンあり、そのうちの４パターンが、図８Ａ、図８Ｂ、図８Ｃ、図８Ｄにそれぞれ示されている。
図８Ａは書き込み先（内蔵ＲＡＭ１１または転送先記憶領域４）アドレスの下位２ビットが「００」の場合、図８Ｂは書き込み先アドレスの下位２ビットが「０１」の場合、図８Ｃは書き込み先アドレスの下位２ビットが「１０」の場合、図８Ｄは書き込み先アドレスの下位２ビットが「１１」の場合、の並べ替えパターンをそれぞれ示している。
【００６１】
図８Ａ、図８Ｂ、図８Ｃ、図８Ｄのいずれの図も、データの読み出し元アドレス（ソースアドレス）の下位２ビットが「００」の場合を１行目、「０１」の場合を２行目、「１０」の場合を３行目、「１１」の場合を４行目に示している。
【００６２】
図９は、初段ＦＦ（ＦＦ２４またはＦＦ２８）に有効データを受けた場合、転送先（第３データ記憶部１５または第６データ記憶部１８）へ書き込みを１サイクル後に行うか２サイクル後に行うかを示す図である。
【００６３】
図９では、転送先として内蔵ＲＡＭ１１が想定されている。
図９において、sadd[1:0]は転送元下位２ビットを、RAM_add[1:0]は転送先のＲＡＭの下位２ビットを示している。例えば、sadd[1:0]＝００とRAM_add[1:0]＝００とが交差する位置での書き込みタイミングを示す値は「２」になっているので、図８Ａの第１行に示す並べ替えパターンは、初段ＦＦに有効データを受けた２サイクル後に転送先へ書き込みを行うパターンとなっている。
【００６４】
また、例えば、sadd[1:0]＝００とRAM_add[1:0]＝０１とが交差する位置での書き込みタイミングを示す値は「１」になっているので、図８Ｂの第１行に示す並べ替えパターンは、初段ＦＦに有効データを受けた１サイクル後に転送先へ書き込みを行うパターンとなっている。
【００６５】
図４のデータ（データａ、データｂ、データｃ）が転送元記憶領域３から内蔵ＲＡＭ１１に転送される様子を図１０Ａおよび図１０Ｂを用いて説明する。
まず、バスマスタインタフェース部２３によって、設定レジスタ部３１に設定された転送対象のデータのうちの先頭のデータであるデータａの転送元アドレス、転送サイズがリードされる。
【００６６】
第１実施形態の場合、内蔵ＲＡＭ１１の先頭からデータは書き込まれるので、書き込み先アドレスの下位２ビットは「００」に初期化されている。また、データａの転送元記憶領域３での先頭位置の下位２ビットは「０１」である。これにより、図８Ａの第２行の並び替えパターンが第１アライナ４１が備える第１データ記憶部１３および第２データ記憶部１４から第３データ記憶部（図１０Ａでは不図示）１５へのデータ書き込み時のシフトパターンとして決定される。
【００６７】
図１０Ａに先立って、第１データ記憶部１３にラッチされているデータを第２データ記憶部１４にラッチする第１のデータラッチ処理が実行されるが、この時点では、第１データ記憶部１３に有効データはラッチされていないので、このラッチ処理の結果として第２データ記憶部１４にも有効データはラッチされない。
【００６８】
続いて、図１０Ａの（１）で、転送元記憶領域３から第１データ記憶部１３へのワード単位のデータ転送により、１ワード分のデータ「？，ａ１，ａ２，ａ３」を、その第１データ記憶部１３でラッチする第２のデータラッチ処理が実行される。ここで、「？」、「ａ１」、「ａ２」、「ａ３」はいずれも１バイトのデータを示している。このうち、「？」は、有効データでないデータである。残りの「ａ１」以降のデータは有効データである。
【００６９】
上記図８Ａの第２行の並び替えパターンに対応する図９中の位置、すなわち、sadd[1:0]＝０１とRAM_add[1:0]＝００とが交差する位置では、書き込みタイミングを示す値は「２」になっている。このため、図８Ａの第２行に示す並べ替えパターン（データａの書き込み時に使用する並べ替えパターン）は、第１データ記憶部１３に有効データをラッチした２サイクル後に転送先（内蔵ＲＡＭ１１）へ書き込みを行うパターンとなっている。したがって、この時点では、内蔵ＲＡＭ１１への書き込みは開始されない。
【００７０】
続いて、（２）で、第１データ記憶部１３にラッチされているデータを第２データ記憶部１４にラッチする第１のデータラッチ処理が実行される。このラッチ処理によって、第２データ記憶部１４の内容が「？，ａ１，ａ２，ａ３」に変更される。また、転送元記憶領域３から第１データ記憶部１３への（次の）ワード単位のデータ転送により、１ワード分のデータ「ａ４，ａ５，ａ６，？」を、その第１データ記憶部１３でラッチする第２のデータラッチ処理が実行される。
【００７１】
この時点で、有効データ（「？，ａ１，ａ２，ａ３」）が第１データ記憶部１３にラッチされてから２サイクル後となり、（３）で、図８Ａの第２行の並び替えパターンを基に、第１データ記憶部１３および第２データ記憶部１４から不図示の第３データ記憶部１５へデータの書き込みが実行され、その後、第３データ記憶部１５から内蔵ＲＡＭ１１へデータが書き込まれる。
【００７２】
（４）では、第１データ記憶部１３にラッチされているデータを第２データ記憶部１４にラッチする第１のデータラッチ処理が実行される。このラッチ処理によって、第２データ記憶部１４の内容が「ａ４，ａ５，ａ６，？」に変更される。なお、この時点では、データａを第１データ記憶部１３を介してすべて読み込み済みであるが、内蔵ＲＡＭ１１へのデータａの書き込みは終了していない。このような場合、転送元記憶領域３から第１データ記憶部１３への（次の）ワード単位のデータ転送は行われない。
【００７３】
そして、（５）で、図８Ａの第２行の並び替えパターンを基に、第１データ記憶部１３および第２データ記憶部１４から（第３データ記憶部１５を介して）内蔵ＲＡＭ１１へデータの書き込みが実行される。図１０Ａに示すように、この内蔵ＲＡＭ１１へのデータの書き込みにおける書き込み先アドレス（書き込み開始位置）は、前回、すなわち、（３）の内蔵ＲＡＭ１１へのデータ書き込みにおける有効データが書き込まれた末尾位置の次の位置である。
【００７４】
上述したように、ＤＭＡコントローラ１１は、内蔵ＲＡＭ１１へのデータ書き込みを行う毎に、その回に書き込んだ有効データ数（バイト数）をリードしたデータサイズから減算している。よって、図１０Ａに示す（５）の書き込みが完了した状態で、内蔵ＲＡＭ１１上の「ａ６」を書き込んだ位置で、データａの書き込みが完了したことをＤＭＡコントローラ１１側では認識している。すなわち、内蔵ＲＡＭ１１に次に書き込むデータの書き込み先アドレスは、内蔵ＲＡＭ１１上の「ａ６」を書き込んだ位置の次の位置である。
【００７５】
以上の（１）〜（５）の処理によって、データａの内蔵ＲＡＭ１１への書き込みが終了したと判断され、次のデータであるデータｂの処理が開始される。
まず、バスマスタインタフェース部２３によって、設定レジスタ部３１に設定された転送対象のデータのうちの次のデータであるデータｂの転送元アドレス、転送サイズがリードされる。
【００７６】
データｂの内蔵ＲＡＭ１１への書き込みによって、内蔵ＲＡＭ１１への書き込み先アドレスの下位２ビットは「１０」に設定されている。これは、内蔵ＲＡＭ１１上の「ａ６」を書き込んだ位置の次の位置に対応する下位２ビットの値である。また、データｂの転送元記憶領域３での先頭位置の下位２ビットは「０１」である。これにより、図８Ｃの第２行の並び替えパターンが第１アライナ４１が備える第１データ記憶部１３および第２データ記憶部１４から第３データ記憶部（図１０Ｂでは不図示）１５へのデータ書き込み時の並べ替えパターンとして決定される。
【００７７】
図１０Ｂの（６）で、次のデータであるデータｂの第１データ記憶部１３への第２のデータラッチ処理が開始される。なお、（６）の直前の状態では、第１データ記憶部１３と第２データ記憶部１４にラッチされるデータがいずれも「ａ４，ａ５，ａ６，？」である。このため、この第２のデータラッチ処理の直前の第１のデータラッチ処理において、第１データ記憶部１３のデータを第２データ記憶部１４にラッチしても、第２データ記憶部１４の内容は変更されない。
【００７８】
そして、（６）の第２のデータラッチ処理によって、第１データ記憶部１３の内容が「？，ｂ１，ｂ２，ｂ３」に変更される。
上記図８Ｃの第２行の並び替えパターンに対応する図９中の位置、すなわち、sadd[1:0]＝０１とRAM_add[1:0]＝１０とが交差する位置では、書き込みタイミングを示す値は「１」になっている。このため、図８Ｃの第２行に示す並べ替えパターン（データｂの書き込み時に使用する並べ替えパターン）は、第１データ記憶部１３に有効データを受けた１サイクル後に転送先（内蔵ＲＡＭ１１）へ書き込みを行うパターンとなっている。
【００７９】
すなわち、次の（７）で、図８Ｃの第２行の並び替えパターンを基に、第１データ記憶部１３および第２データ記憶部１４から不図示の第３データ記憶部１５へデータの書き込みが実行され、その後、第３データ記憶部から内蔵ＲＡＭ１１へデータが書き込まれる。
【００８０】
ＤＭＡコントローラ１１側では、前回のデータａの書き込みで、内蔵ＲＡＭ１１の「ａ６」の位置まで有効データが書き込まれたことを把握している。したがって、（７）のうち、破線で示される書き込みは、有効データを上書きするものとして例えばマスク処理が行われて禁止される。
【００８１】
そして、（８）で、第１データ記憶部１３にラッチされているデータを第２データ記憶部１４にラッチする第１のデータラッチ処理が実行される。このラッチ処理によって、第２データ記憶部１４の内容が「？，ｂ１，ｂ２，ｂ３」に変更される。なお、この時点では、データｂを第１データ記憶部１３を介してすべて読み込み済みであるが、内蔵ＲＡＭ１１へのデータｂの書き込みは終了していない。このような場合、転送元記憶領域３から第１データ記憶部１３への（次の）ワード単位のデータ転送は行われない。
【００８２】
そして、（９）で、図８Ｃの第２行の並び替えパターンを基に、第１データ記憶部１３および第２データ記憶部１４から（不図示の第３データ記憶部を介した）内蔵ＲＡＭ１１へデータの書き込みが実行される。図１０Ｂに示すように、この内蔵ＲＡＭ１１へのデータの書き込みにおける書き込み先アドレス（書き込み開始位置）は、前回、すなわち、（７）の内蔵ＲＡＭ１１へのデータ書き込みにおける有効データが書き込まれた末尾位置の次の位置である。
【００８３】
上述したように、ＤＭＡコントローラ１１は、内蔵ＲＡＭ１１へのデータ書き込みを行う毎に、その回に書き込んだ有効データ数（バイト数）をリードしたデータサイズから減算している。よって、図１０Ｂに示す（９）の書き込みが完了した状態で、内蔵ＲＡＭ１１上の「ｂ３」を書き込んだ位置で、データｂの書き込みが完了したことをＤＭＡコントローラ１１側では認識している。すなわち、内蔵ＲＡＭ１１に次に書き込むデータの書き込み先アドレスは、内蔵ＲＡＭ１１上の「ｂ３」を書き込んだ位置の次の位置である。
【００８４】
後続のデータ（データｃ）についても同様に処理が行われる。
内蔵ＲＡＭ１１に格納された図４のデータ（データａ、データｂ、データｃ）が、内蔵ＲＡＭ１１から転送先記憶領域４に転送される様子を図１１Ａおよび図１１Ｂを用いて説明する。
【００８５】
まず、バスマスタインタフェース部２３によって、設定レジスタ部３１に設定された転送先記憶領域４の転送先アドレスがリードされる。
上述の図１０Ａおよび図１０Ｂに示される処理によって、内蔵ＲＡＭ１１の先頭位置以降に連続して書き込まれた、転送元記憶領域３からのデータ（データａ、データｂ、データｃ）は、今回の転送処理で、内蔵ＲＡＭ１１から読み出され、第２アライナ４２を介して、転送先記憶領域４に書き込まれる。
【００８６】
今回の転送処理では、内蔵ＲＡＭ１１はデータの読み出し元になる。内蔵ＲＡＭ１１の読み出し元アドレスの下位２ビットは、第１実施形態では、常に「００」である。よって、第１実施形態における、内蔵ＲＡＭ１１から転送先記憶領域４へのデータ転送時に用いる並べ替えパターンは、転送先記憶領域４の書き込み先アドレスの下位２ビットが「００」、「０１」、「１０」、「１１」のいずれであるかによって、４通り存在することになる。
【００８７】
図１２は、第１実施形態の内蔵ＲＡＭ１１から転送先記憶領域４へのデータ転送時に用いる並べ替えパターンを示す図である。この並べ替えパターンは、図８Ａ〜図８Ｄから、それぞれ第２行を抽出することで得られる。以降の説明では、書き込みタイミングを示す図９との対応がより明確であるという理由から、この転送処理においても、図８Ａ〜図８Ｄを用いて説明する。
【００８８】
転送するデータ（データａ＋データｂ＋データｃ）の内蔵ＲＡＭ１１での先頭位置の下位２ビットは「００」である。また、転送先記憶領域４の書き込み先アドレスの下位２ビットは、この場合、「０１」である。これにより、図８Ｂの第１行の並び替えパターンが第２アライナ４２が備える第４データ記憶部１６（例えば、ＦＦ２８）および第５データ記憶部１７から第６データ記憶部１８（例えば、ＦＦ２８、図１１Ａでは不図示）への書き込み時のシフトパターンとして決定される。第６データ記憶部１８に書き込まれたデータは、転送先記憶領域４に出力される。
【００８９】
図１１Ａに先立って、第４データ記憶部１６にラッチされているデータを第５データ記憶部１７にラッチする第１のデータラッチ処理が実行されるが、この時点では、第４データ記憶部１６に有効データはラッチされていないので、このラッチ処理の結果として第５データ記憶部１７にも有効データはラッチされない。
【００９０】
続いて、図１１Ａの（１）で、内蔵ＲＡＭ１１から第４データ記憶部１６へのワード単位のデータ転送により、１ワード分のデータ「ａ１，ａ２，ａ３，ａ４」を、その第４データ記憶部１６でラッチする第２のデータラッチ処理が実行される。
【００９１】
上記図８Ｂの第１行の並び替えパターンに対応する図９中の位置、すなわち、sadd[1:0]＝００とRAM_add[1:0]＝０１とが交差する位置では、書き込みタイミングを示す値は「１」になっている。このため、図８Ｂの第１行に示す並べ替えパターン（転送するデータの転送先記憶領域４への書き込み時に使用する並べ替えパターン）は、第４データ記憶部１６に有効データを受けた１サイクル後に転送先（転送先記憶領域４）へ書き込みを行うパターンとなっている。このため、次のサイクル、すなわち、（２）で、転送先記憶領域４への書き込みが実行される。この書き込み処理では、１バイト分の「ａ１」のデータのＤＭＡ転送処理が実行される。なお、転送先記憶領域４は、内蔵ＲＡＭ１１とは異なり、ＤＭＡ転送用のデータを一時的に記憶する領域ではない。このため、並べ替えパターンに基づく書き込みによって、転送先記憶領域４内の転送されるデータが書き込まれる範囲を外れた場所に、データが上書きされることがあってはならない。
【００９２】
このため、（２）では、第５データ記憶部１７からの適正範囲を外れたデータの書き込みを禁止している。
続く、（３）では、第４データ記憶部１６および第５データ記憶部１７の状態は（２）と同じ状態に保ちつつ、（２）で書き込まなかった残りのデータ、すなわち、ハーフワード分の「ａ２」と「ａ３」のデータの転送先記憶領域４へのＤＭＡ転送処理が実行される。
【００９３】
図１１Ｂに移り、続く、（４）では、第４データ記憶部１６のデータ（「ａ１，ａ２，ａ３，ａ４」）を第５データ記憶部１７にラッチする第１ラッチ処理と、内蔵ＲＡＭ１１からの次の１ワード分のデータ（「ａ５，ａ６，ｂ１，ｂ２」）を第４データ記憶部１６でラッチする第２ラッチ処理とが実行される。
【００９４】
この例では、転送されるデータは、「ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ｂ１，ｂ２，ｂ３，ｃ１，ｃ２，ｃ３，ｃ４，ｃ５」である。よって、１４バイトのデータが内蔵ＲＡＭ１１から転送先記憶領域４に転送されることになる。この時点では、「ａ１，ａ２，ａ３」のデータが転送先記憶領域４に書き込まれているので、未転送データのバイト数＝「１１バイト」である。この値は「１ワード＝４バイト」より大きいので、続く、（５）で、決定された図８Ｂの第１行の並び替えパターンを基に、１ワード分のデータ転送が実行される。
【００９５】
以下、同様に処理が続くが、転送されるデータの末尾付近での処理について説明する。
（６）では、転送されるデータの末尾を含む１ワード分のデータ（「ｃ４，ｃ５，？，？」）が第４データ記憶部１６にラッチされている。前回までの転送先記憶領域４への書き込み処理によって、転送先記憶領域４には、「ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ｂ１，ｂ２，ｂ３，ｃ１，ｃ２」の１１バイト分のデータを転送済みである。つまり、この時点では、未転送データのバイト数＝「３バイト」である。この値は「１ワード＝４バイト」未満なので、続く、（７）で、決定された図８Ｂの第１行の並び替えパターンを基に、この３バイトのうちのハーフワード分のデータ（「ｃ３，ｃ４」）のデータ転送が実行される。そして、（８）で、この３バイトの残りの１バイトである（「ｃ５」）のデータを転送して内蔵ＲＡＭ１１から転送先記憶領域４へのＤＭＡ転送処理が終了する。
【００９６】
なお、転送先記憶領域４上のデータ末尾位置（「ｃ５」）以降の図８Ｂの第１行の並び替えパターンに基づくデータ書き込みは適正範囲外の書き込みとなり禁止される。
図１３は、第１実施形態の効果を説明する図である。
【００９７】
図１３の上側は、第１実施形態のＤＭＡ転送処理の流れを、下側は、従来技術のＤＭＡ転送処理の流れをそれぞれ示している。
第１実施形態の場合、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵ＲＡＭへのデータ転送処理の終了までに発生していると、その内蔵ＲＡＭへのデータ転送処理が終了した時点（図中、ｔ１の時点）でバスが空くので、その優先度の高い他の処理を実行することができる。
【００９８】
これに対し、従来技術の場合、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、そのＤＭＡ転送処理が終了した時点（図中、ｔ２の時点）までバスが空かないので、そのＤＭＡ転送処理の終了時点以降でなければ、その優先度の高い他の処理を実行することはできない。すなわち、第１実施形態の方が従来技術より、その差（ｔ２−ｔ１）だけ早く、その優先度の高い他の処理を実行することができるという利点を有する。
【００９９】
続いて、第２実施形態について説明する。
図１４は、本発明の第２実施形態のデータ転送装置（ＤＭＡコントローラ）５０の構成を示すブロック図である。
【０１００】
図１４において、データ転送装置（ＤＭＡコントローラ）５０は、ＲＡＭ１１と、転送制御部５２を備える。転送制御部５２は、ＲＡＭ１１への書き込み時にデータ長Ｌ３のデータが書き込まれる第１データ記憶部５３、第２データ記憶部５４、第３データ記憶部５５を備える。
【０１０１】
ＲＡＭ１１は、データ転送装置５０に内蔵される。本実施形態においては、ＣＰＵ２からのデータ転送要求に基づいて実行されるＤＭＡ転送において、転送元記憶領域３からのデータは、まず、ＲＡＭ１１に書き込まれる。そして、その後、ＲＡＭ１１から転送先記憶領域４へのデータ転送が実行される。
【０１０２】
すなわち、転送元記憶領域３から読み出されたデータ長Ｌ３のデータは、第１データ記憶部５３に書き込まれる。第１データ記憶部５３は、保持するデータ長Ｌ３を持つデータを第２データ記憶部５４に出力する。転送制御部５２は、データの読み出し元（転送元記憶領域３）と書き込み先（ＲＡＭ１１）アドレスを基に、第１データ記憶部５３と第２データ記憶部５４から第３データ記憶部５５へのデータ書き込み時のシフトパターン（並べ替えパターン）を決定する。そして、転送制御部５２は、その決定されたシフトパターンを基に、第１データ記憶部５３と第２データ記憶部５４から第３データ記憶部５５へのデータ書き込みを実行する。第３データ記憶部５５は、保持するデータ長Ｌ３のデータをＲＡＭ１１に出力する。
【０１０３】
また、転送制御部５２は、ＲＡＭ１１から読み出されたデータ長Ｌ４のデータに対し、（シフト処理を施すことなく）そのまま、転送先記憶領域４に出力する。
データ長Ｌ４は、例えば上記データ長Ｌ３に一致するが、データ長Ｌ４とＬ３が一致しない場合もある。
【０１０４】
ＲＡＭ１１へのデータ書き込みの場合、図１４の第１データ記憶部５３は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け初段（ＦＦ）」に対応し、第２データ記憶部５４は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け２段目（ＦＦ）」に対応し、第３データ記憶部５５は、図８Ａ〜図８Ｄの「内蔵ＲＡＭ書き込み（ＦＦ）」に対応する。
【０１０５】
図１４のＤＭＡコントローラ５０のより具体的なハードウェア構成は、第１実施形態の図３と同様である。すなわち、図１４の転送制御部５２は、図３の内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２４、２５、２８、２９の組み合わせに対応する。図１４の第１データ記憶部５３は、例えば、図３のＦＦ２４に対応する。図１４の第２データ記憶部５４は、例えば、図３のバスマスタインタフェース部２３内に設けられるが、内蔵ＲＡＭコントローラ２２内に設けることもできる。図１４の第３データ記憶部５５は、例えば、図３のＦＦ２５に対応する。
【０１０６】
図１５は、本発明の第２実施形態のデータ転送装置（ＤＭＡコントローラ）の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
第１実施形態では、転送元記憶領域３と内蔵ＲＡＭ１１の間、内蔵ＲＡＭ１１と転送先記憶領域４の間に第１アライナ４１と第２アライナ４２がそれぞれ設けられているが、第２実施形態では、転送元記憶領域３と内蔵ＲＡＭ１１の間にのみアライナ５８が設けられている。このアライナ５８は、図３のＦＦ２４、バスマスタインタフェース部２３、内蔵ＲＡＭコントローラ２２、ＦＦ２５の組み合わせによって構成される。なお、アライナ５８は、図１４の第１データ記憶部５３、第２データ記憶部５４、第３データ記憶部５５を備える転送制御部５２に対応する。
【０１０７】
第２実施形態では、内蔵ＲＡＭ１１と転送先記憶領域４の間でデータを転送する際にシフト処理（並べ替え）を行わなくて済むように、アライナ５８は、ＣＰＵ２からのデータ転送要求で指定された転送先記憶領域４の先頭位置に対応する内蔵ＲＡＭ１１の位置以降に転送元記憶領域３からのデータを連続して格納するようにシフト処理を行う。
【０１０８】
すなわち、第１実施形態の図５のフローチャートのステップＳ１０２で、リードされた転送元アドレスの下位（末尾）２ビットと、内蔵ＲＡＭ１１上の転送先アドレスの下位２ビットを基に、アライナ５８が備える第１データ記憶部５３（例えば、ＦＦ２４）および第２データ記憶部５４から（第３データ記憶部５５を介した）転送先記憶領域（この場合、内蔵ＲＡＭ１１）への書き込み時のシフトパターンである並べ替えパターンを決定する際に、内蔵ＲＡＭ１１上の転送先アドレスとして、設定レジスタ部３１に設定されている転送先記憶領域４の転送先アドレスを用いている。
【０１０９】
このため、第２実施形態では、図３のＦＦ２８、内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２９の組み合わせは、アライナとしての機能を有さない。内蔵ＲＡＭ１１から転送先記憶領域４へのデータ転送に用いる並べ替えパターン（この並べ替えパターンは、図８Ａの第１行、図８Ｂの第２行、図８Ｃの第３行、図８Ｄの第４行のいずれかのパターンである）にしたがって書き込みを行ったとき、その書き込み先が、転送先記憶領域４において転送対象のデータが書き込まれる範囲から外れた場合にそのデータ書き込みを禁止する以外は、ＦＦ２８、ＦＦ２９は、転送対象となるデータのうちの１ワード分をその都度、ラッチするだけである。
【０１１０】
第２実施形態においても、第１実施形態同様に、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵ＲＡＭへのデータ転送処理の終了までに発生していると、その内蔵ＲＡＭへのデータ転送処理が終了した時点でバスが空くので、その優先度の高い他の処理を実行することができる。
【０１１１】
続いて、第３実施形態について説明する。
図１６は、本発明の第３実施形態のデータ転送装置（ＤＭＡコントローラ）６０の構成を示すブロック図である。
【０１１２】
図１６において、データ転送装置（ＤＭＡコントローラ）６０は、ＲＡＭ１１と、転送制御部６２を備える。転送制御部６２は、ＲＡＭ１１からの読み出し時にデータ長Ｌ６のデータが書き込まれる第１データ記憶部６３、第２データ記憶部６４、第３データ記憶部６５を備える。
【０１１３】
ＲＡＭ１１は、データ転送装置１０に内蔵される。本実施形態においては、ＣＰＵ２からのデータ転送要求に基づいて実行されるＤＭＡ転送において、転送元記憶領域３からのデータは、まず、ＲＡＭ１１に書き込まれる。そして、その後、ＲＡＭ１１から転送先記憶領域４へのデータ転送が実行される。
【０１１４】
すなわち、転送元記憶領域３から読み出されたデータ長Ｌ５のデータは、転送制御部６２を介して、（シフト処理を施されることなく）そのまま、ＲＡＭ１１に書き込まれる。
データ長Ｌ５は、例えば上記データ長Ｌ６に一致するが、データ長Ｌ５とＬ６が一致しない場合もある。
【０１１５】
また、ＲＡＭ１１から読み出されたデータ長Ｌ６のデータは、第１データ記憶部６３に書き込まれる。第１データ記憶部６３は、保持するデータ長Ｌ６を持つデータを第２データ記憶部６４に出力する。転送制御部６２は、データの読み出し元（ＲＡＭ１１）と書き込み先（転送先記憶領域４）アドレスを基に、第１データ記憶部６３と第２データ記憶部６４から第３データ記憶部６５へのデータ書き込み時のシフトパターン（並べ替えパターン）を決定する。そして、転送制御部６２は、その決定されたシフトパターンを基に、第１データ記憶部６３と第２データ記憶部６４から第３データ記憶部６５へのデータ書き込みを実行する。第３データ記憶部６５は、保持するデータ長Ｌ６のデータを転送先記憶領域４に出力する。
【０１１６】
ＲＡＭ１１へのデータ書き込みの場合、図２の第１データ記憶部６３は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け初段（ＦＦ）」に対応し、第２データ記憶部６４は、図８Ａ〜図８Ｄの「リードデータバス上のデータ受け２段目（ＦＦ）」に対応し、第３データ記憶部６５は、図８Ａ〜図８Ｄの「内蔵ＲＡＭ書き込み（ＦＦ）」に対応する。
【０１１７】
図１６のＤＭＡコントローラ６０のより具体的なハードウェア構成は、第１実施形態の図３と同様である。すなわち、図１６の転送制御部６２は、図３の内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２４、２５、２８、２９の組み合わせに対応する。図１６の第１データ記憶部６３は、例えば、図３のＦＦ２８に対応する。図１６の第２データ記憶部６４は、例えば、図３のバスマスタインタフェース部２３内に設けられるが、内蔵ＲＡＭコントローラ２２内に設けることもできる。図１６の第３データ記憶部６５は、例えば、図３のＦＦ２９に対応する。
【０１１８】
図１７は、本発明の第３実施形態のデータ転送装置（ＤＭＡコントローラ）の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
第１実施形態では、転送元記憶領域３と内蔵ＲＡＭ１１の間、内蔵ＲＡＭ１１と転送先記憶領域４の間に第１アライナ４１と第２アライナ４２がそれぞれ設けられているが、第３実施形態では、内蔵ＲＡＭ１１と転送先記憶領域４の間にのみアライナ６８が設けられている。このアライナ６８は、図３のＦＦ２８、内蔵ＲＡＭコントローラ２２、バスマスタインタフェース部２３、ＦＦ２９の組み合わせによって構成される。アライナ６８は、ＣＰＵ２からのデータ転送要求で指定された転送先記憶領域４の先頭位置以降に内蔵ＲＡＭ１１に格納された転送元記憶領域３のデータを連続して格納するようにシフト処理を行う。なお、アライナ６８は、図１６の第１データ記憶部６３、第２データ記憶部６４、第３データ記憶部６５を備える転送制御部５２に対応する。
【０１１９】
第３実施形態では、内蔵ＲＡＭ１１と転送先記憶領域４の間でデータを転送する際には、図３のＦＦ２４、ＦＦ２５は、転送対象となるデータのうちの１ワード分をその都度、ラッチするだけである。この結果、第３実施形態では、内蔵ＲＡＭ１１にも、転送元記憶領域３同様、不連続なデータが分散して格納される。
【０１２０】
第３実施形態の内蔵ＲＡＭ１１から転送先記憶領域４にデータを転送する処理は、図５のフローチャートに変更を加えて得られる。
すなわち、ステップＳ１０３とＳ１０４の処理を、ステップＳ１０６〜Ｓ１１５の処理で置き換える。具体的には、図５のステップＳ１０２からステップＳ１０６に制御が渡るようにする。そして、ステップＳ１１２で残りバイト数が「００（０バイト）」の場合、ステップＳ１１５で、内蔵ＲＡＭに残っている転送データのバイト数が「１」ではないと判定された場合、ステップＳ１１３が実行された場合は、ステップＳ１０５に制御が移るようにする。
【０１２１】
第３実施形態の場合も、ステップＳ１０６〜ステップＳ１１５の処理において、ステップＳ１０７からステップＳ１０９に進む場合、ステップＳ１１５からステップＳ１１３に進む場合を除いて、各ステップのＤＭＡ転送処理の間には、第２データ記憶部６４に第１データ記憶部６３のデータをラッチする第１のデータラッチ処理、内蔵ＲＡＭ１１からのワード単位のデータを第１データ記憶部６３にラッチする第２のデータラッチ処理が実行される。
【０１２２】
第３実施形態では、ステップＳ１０６〜Ｓ１１５の処理は、内蔵ＲＡＭ１１上に不連続に分散して存在するそれぞれのデータ（図１６のデータ例であれば、データａ、データｂ、データｃ）について実行される。よって、各ステップのＤＭＡ転送処理において、転送された有効データのバイト数は現在転送しているデータの転送サイズから減算され、ステップＳ１１１やステップＳ１１２の判定で用いられる。
【０１２３】
第３実施形態においても、第１実施形態同様に、ＤＭＡ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵ＲＡＭへのデータ転送処理の終了までに発生していると、その内蔵ＲＡＭへのデータ転送処理が終了した時点でバスが空くので、その優先度の高い他の処理を実行することができる。
【０１２４】
なお、以上の説明ではバス幅は３２ｂｉｔ（４バイト）としたが、６４ｂｉｔ、１２８ｂｉｔ、等のそれ以外のビット数であってもよい。例えば、バス幅を６４ｂｉｔ（８バイト）とした場合、転送元アドレスの下位３ビットと、転送先アドレスの下位３ビットを基に、アライナが備える第１および第２データ記憶部から書き込み先（第３データ記憶部）への書き込み時のシフトパターン（６４通り（＝８×８））が決定される。
【０１２５】
すなわち、並べ替えパターンとは、転送されるデータの転送元記憶領域での先頭位置を識別する情報と、転送されるデータの転送先記憶領域での先頭位置を識別する情報を基づく、アライナが備える第１および第２データ記憶部から書き込み先（第３データ記憶部）への書き込み時のシフトパターンである。
【０１２６】
また、転送元記憶領域３内に保持されるデータの総サイズが内蔵ＲＡＭ１１に収まらない場合も考えられる。この場合、複数回に分けて、転送元記憶領域３、内蔵ＲＡＭ１１、転送先記憶領域４の順にデータが移動することになるが、優先度の高い他の処理による割り込みがどのタイミングで発生しても、その直後の区切りがいいところ（内蔵ＲＡＭ１１へのデータの格納が終了したタイミング、または、転送先記憶領域４へのその回のデータの格納が終了したタイミング）でバスが空くので、ＤＭＡ転送処理が終わるまで待つことなく、その優先度の高い他の処理を実行することができる。
【０１２７】
本発明は下記構成でもよい。
（付記１）  要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられた第１アライナと、
前記一次記憶領域と前記転送先記憶領域との間に設けられた第２アライナを備え、
前記第１アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記第２アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
（付記２）  前記第１および第２アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第１、第２、および第３データ記憶部をそれぞれ備え、
前記第１アライナは、転送されるデータの前記転送元記憶領域での先頭位置を識別する情報と、転送されるデータの前記一次記憶領域での書き込み開始位置を識別する情報を基に、前記第１および第２データ記憶部から前記第３データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に前記第３データ記憶部へのデータ書き込みを実行し、該第３データ記憶部は書き込まれたデータを前記一次記憶領域に出力し、
前記第２アライナは、転送されるデータの前記一次記憶領域での先頭位置を識別する情報と、転送されるデータの前記転送先記憶領域での先頭位置を識別する情報を基に、前記第１および第２データ記憶部から前記第３データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に前記第３データ記憶部へのデータ書き込みを実行し、該第３データ記憶部は書き込まれたデータを前記転送先記憶領域に出力することを特徴とする付記１記載のデータ転送装置。
（付記３）  前記データ転送の要求元からの１回の転送指示を基に、前記転送元記憶領域から前記一次記憶領域、前記一次記憶領域から前記転送先記憶領域までのデータ転送処理が実行され、
転送されるデータが、前記一次記憶領域に格納された時点で、前記データ転送の要求元に対し、その一次記憶領域までのデータ転送が完了したことを示す割り込みを出力することを特徴とする付記１記載のデータ転送装置。
（付記４）  前記データ転送の要求元は、前記転送元記憶領域から前記一次記憶領域へのデータ転送、前記一次記憶領域から前記転送先記憶領域へのデータ転送、それぞれについてその都度、転送指示を出し、
転送されるデータが、前記一次記憶領域に格納された時点で、その一次記憶領域までのデータ転送が完了したことを示すフラグが装置内の予め決められたレジスタに設定されることを特徴とする付記１記載のデータ転送装置。
（付記５）  要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置。
（付記６）  前記アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第１、第２、および第３データ記憶部を備え、
前記アライナは、転送されるデータの前記転送元記憶領域での先頭位置を識別する情報と、転送されるデータの前記一次記憶領域での書き込み開始位置を識別する情報を基に、前記第１および第２データ記憶部から前記第３データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に、前記第３データ記憶部へのデータ書き込みを実行し、該第３データ記憶部は書き込まれたデータを前記一次記憶領域に出力することを特徴とする付記５記載のデータ転送装置。
（付記７）  要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、
前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
（付記８）  前記アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第１、第２、および第３データ記憶部を備え、
前記アライナは、転送されるデータの前記一次記憶領域での先頭位置を識別する情報と、転送されるデータの前記転送先記憶領域での書き込み開始位置を識別する情報を基に、前記第１および第２データ記憶部から前記前記第３データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に、前記第３データ記憶部へのデータ書き込みを実行し、該第３データ記憶部は書き込まれたデータを前記転送先記憶領域に出力することを特徴とする付記７記載のデータ転送装置。
【図面の簡単な説明】
【０１２８】
【図１】本発明の各実施形態に共通するＤＭＡコントローラ（データ転送装置）を含む全体構成を示すブロック図である。
【図２】本発明の第１実施形態のＤＭＡコントローラの構成を示すブロック図である。
【図３】図２のＤＭＡコントローラのより具体的なハードウェア構成を示すブロック図である。
【図４】本発明の第１実施形態のＤＭＡコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
【図５】本発明の第１実施形態のＤＭＡ転送処理のフローチャートである。
【図６】転送元記憶領域から第１アライナへのデータ転送を説明する図である。
【図７】第２アライナから転送先記憶領域へのデータ転送を説明する図である。
【図８Ａ】第１および第２データ記憶部から書き込み先（第３データ記憶部）への並び替えパターンを示す図（その１）である。
【図８Ｂ】第１および第２データ記憶部から書き込み先（第３データ記憶部）への並び替えパターンを示す図（その２）である。
【図８Ｃ】第１および第２データ記憶部から書き込み先（第３データ記憶部）への並び替えパターンを示す図（その３）である。
【図８Ｄ】第１および第２データ記憶部から書き込み先（第３データ記憶部）への並び替えパターンを示す図（その４）である。
【図９】図８Ａ〜図８Ｄの並べ替えパターンによる書き込みのタイミングを示す図である。
【図１０Ａ】図４のデータ（データａ、データｂ、データｃ）が転送元記憶領域から内蔵ＲＡＭに転送される様子を説明する図（その１）である。
【図１０Ｂ】図４のデータ（データａ、データｂ、データｃ）が転送元記憶領域から内蔵ＲＡＭに転送される様子を説明する図（その２）である。
【図１１Ａ】内蔵ＲＡＭに格納された図４のデータ（データａ、データｂ、データｃ）が、内蔵ＲＡＭから転送先記憶領域に転送される様子を説明する図（その１）である。
【図１１Ｂ】内蔵ＲＡＭに格納された図４のデータ（データａ、データｂ、データｃ）が、内蔵ＲＡＭから転送先記憶領域に転送される様子を説明する図（その２）である。
【図１２】第１実施形態の内蔵ＲＡＭから転送先記憶領域へのデータ転送時に用いる並べ替えパターンを示す図である。
【図１３】第１実施形態の効果を説明する図である。
【図１４】本発明の第２実施形態のＤＭＡコントローラの構成を示すブロック図である。
【図１５】本発明の第２実施形態のＤＭＡコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
【図１６】本発明の第３実施形態のＤＭＡコントローラの構成を示すブロック図である。
【図１７】本発明の第３実施形態のＤＭＡコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
【符号の説明】
【０１２９】
１，１０，５０，６０  ＤＭＡコントローラ
２  ＣＰＵ
３  転送元記憶領域
４  転送先記憶領域
５  バス
１１  内蔵ＲＡＭ
１２，５２，６２  転送制御部
１３，５３，６３  第１データ記憶部
１４，５４，６４  第２データ記憶部
１５，５５，６５  第３データ記憶部
１６  第４データ記憶部
１７  第５データ記憶部
１８  第６データ記憶部
２２  内蔵ＲＡＭコントローラ
２３  バスマスタインタフェース部
２４，２５，２８，２９  ＦＦ
３１  設定レジスタ部
３２  バススレーブインタフェース部
４１  第１アライナ
４２  第２アライナ
５８，６８  アライナ
【図１】
2007188357.tif 000003
【図２】
2007188357.tif 000004
【図３】
2007188357.tif 000005
【図５】
2007188357.tif 000006
【図９】
2007188357.tif 000007
【図１０Ａ】
2007188357.tif 000008
【図１０Ｂ】
2007188357.tif 000009
【図１１Ａ】
2007188357.tif 000010
【図１１Ｂ】
2007188357.tif 000011
【図１３】
2007188357.tif 000012
【図１４】
2007188357.tif 000013
【図１６】
2007188357.tif 000014
【図４】
2007188357.tif 000015
【図６】
2007188357.tif 000016
【図７】
2007188357.tif 000017
【図８Ａ】
2007188357.tif 000018
【図８Ｂ】
2007188357.tif 000019
【図８Ｃ】
2007188357.tif 000020
【図８Ｄ】
2007188357.tif 000021
【図１２】
2007188357.tif 000022
【図１５】
2007188357.tif 000023
【図１７】
2007188357.tif 000024