(57)【要約】  転送されるデータのエラー検出を行うDMA転送において、エラーデータを破棄しつつ、データ転送効率を向上させることができるデータ転送制御装置。この装置において、DMAパラメータ退避制御部（１１１２）は、複数のパラメータを、退避資源に一時的に退避させ、データ処理部（１２０１）は、転送されるデータに対してエラー検出処理を行い、DMAパラメータ復帰制御部（１１２２）は、エラー検出処理における処理結果がエラーであるデータの転送時に用いたパラメータを、次回以降のデータ転送用のパラメータとして、退避資源から復帰させ、完了通知遅延制御部（１１２１）は、複数のパラメータにおいて、各パラメータを用いたデータ転送が正常に完了しことを示す、上位システムへの完了通知を、各パラメータよりも設定順がより早いパラメータを用いたデータ転送が正常に完了するまで待機させる。
2012014400.tif 000002
【特許請求の範囲】
【請求項１】
データ転送実行中に、次回以降のデータ転送の起動要求及びデータ転送に用いるパラメータ設定を受け付け可能であり、上位システムから設定された複数の起動要求を設定順に処理するデータ転送制御装置であって、
複数のパラメータを、退避資源に一時的に退避させる退避制御部と、
転送されるデータに対してエラー検出処理を行うデータ処理部と、
前記エラー検出処理における処理結果がエラーであるデータの転送時に用いた前記パラメータを、次回以降のデータ転送用のパラメータとして、前記退避資源から復帰させる復帰制御部と、
前記複数のパラメータにおいて、各パラメータを用いたデータ転送が正常に完了したことを示す、前記上位システムへの完了通知を、前記各パラメータよりも前記設定順がより早いパラメータを用いたデータ転送が正常に完了するまで待機させる完了通知制御部と、
を具備するデータ転送制御装置。
【請求項２】
前記パラメータは、前記パラメータを用いて転送されるデータに対して前記エラー検出処理が行われたか否かを示す情報を含む、
請求項１記載のデータ転送制御装置。
【請求項３】
前記完了通知制御部は、
前記処理結果がエラーであるデータの転送時に用いた前記パラメータを、次回以降のデータ転送用のパラメータとして前記退避資源から復帰させるように、復帰要求を前記復帰制御部に通知し、
前記処理結果が正常であるデータの転送時に用いた前記パラメータを、前記退避資源から解放させるように、解放要求を前記復帰制御部に通知する、
請求項１記載のデータ転送制御装置。
【請求項４】
前記完了通知制御部は、前記処理結果がエラーであるデータの転送時から、前記処理結果がエラーであるデータの転送時に用いた第１のパラメータを復帰させて行うデータ転送が正常に完了するまでの間に、前記第１のパラメータと異なる第２のパラメータを用いたデータ転送が正常に完了した場合、前記第２のパラメータを用いたデータ転送の完了通知を待機させ、
前記第１のパラメータを用いたデータ転送が正常に完了すると、前記第１のパラメータを用いたデータ転送の完了通知と、前記第２のパラメータを用いたデータ転送の完了通知とを、前記上位システムに通知する、
請求項１記載のデータ転送制御装置。
【請求項５】
前記完了通知制御部は、前記第１のパラメータを用いたデータ転送の完了通知と、待機させられた前記第２のパラメータを用いたデータ転送の完了通知とを、１回でまとめて前記上位システムに通知する、
請求項４記載のデータ転送制御装置。
【請求項６】
前記完了通知制御部は、前記第１のパラメータを用いたデータ転送の完了通知、及び、待機させられた前記第２のパラメータを用いたデータ転送の完了通知を、１つずつ個別に前記上位システムに通知する、
請求項４記載のデータ転送制御装置。
【請求項７】
前記完了通知制御部は、
前記処理結果がエラーであるデータの第１の転送時から、前記第１の転送に用いた第１のパラメータを復帰させて行うデータ転送が正常に完了するまでの間に実施された、前記第１のパラメータと異なる第２のパラメータを用いた第２の転送における前記処理結果がエラーである場合、
前記第１の転送から前記第２の転送までの間において、前記第１のパラメータ及び前記第２のパラメータの双方と異なる他のパラメータを用いた、前記処理結果が正常であるデータ転送の第１の完了通知と、前記第２の転送時から前記第１のパラメータを復帰させて行うデータ転送が正常に完了するまでの間において、前記第１のパラメータ及び前記第２のパラメータの双方と異なる他のパラメータを用いた、前記処理結果が正常であるデータ転送の第２の完了通知と、を識別可能にして待機させ、
前記第１のパラメータを復帰させて行うデータ転送が正常に完了した場合、前記第１のパラメータを用いたデータ転送の完了通知と前記第１の完了通知とを前記上位システムに通知し、
前記第２のパラメータを復帰させて行うデータ転送が正常に完了した場合、前記第２のパラメータを用いたデータ転送の完了通知と前記第２の完了通知とを前記上位システムに通知する、
請求項１記載のデータ転送制御装置。
【請求項８】
前記エラー検出処理におけるエラーの発生状況に応じて、エラー割込要求を前記上位システムに通知するエラー割込制御部、を更に具備し、
前記完了通知制御部は、前記エラー割込部が前記エラー割込要求を前記上位システムに通知した場合、前記エラー割込要求の通知後に受け取る完了通知を破棄する、
請求項１記載のデータ転送制御装置。
【請求項９】
前記エラー割込制御部は、前記エラー検出処理においてエラーを検出してから、前記エラーを検出したデータ転送に用いられたパラメータを復帰させて行うデータ転送が正常に完了するまでの間に、前記完了通知制御部において待機させられた前記完了通知の数が予め設定された上限値に到達した場合、前記エラー割込要求を前記上位システムに通知する、
請求項８記載のデータ転送制御装置。
【請求項１０】
前記エラー割込制御部は、前記エラー検出処理において、エラーを検出してから、エラーを検出したデータ転送に用いられたパラメータを復帰させて行うデータ転送が正常に完了するまでの時間が予め設定された上限値に到達した場合、前記エラー割込要求を前記上位システムに通知する、
請求項８記載のデータ転送制御装置。
【請求項１１】
前記エラー割込制御部は、前記エラー検出処理において検出したエラーの数が予め設定された上限値に到達した場合、前記エラー割込要求を前記上位システムに通知する、
請求項８記載のデータ転送制御装置。
【請求項１２】
前記退避制御部は、前記複数のパラメータのうち、データ転送に伴い更新されたパラメータのみを、前記退避資源に退避させる、
請求項１記載のデータ転送制御方法。
【請求項１３】
前記上位システムは、中央処理装置（Central Processing Unit）、又は、シーケンサである、
請求項１記載のデータ転送制御装置。
【請求項１４】
前記シーケンサは、ディスクリプタ管理領域を１つずつ更新するポインタで管理する、
請求項１３記載のデータ転送制御装置。
【請求項１５】
データ転送実行中に、次回以降のデータ転送の起動要求及びデータ転送に用いるパラメータ設定を受け付け可能であり、上位システムから設定された複数の起動要求を設定順に処理するデータ転送制御装置において、
複数のパラメータを、退避資源に一時的に退避させ、
転送されるデータに対してエラー検出処理を行い、
前記エラー検出処理における処理結果がエラーであるデータの転送時に用いた前記パラメータを、次回以降のデータ転送用のパラメータとして、前記退避資源から復帰させ、
前記複数のパラメータにおいて、各パラメータを用いたデータ転送が正常に完了したことを示す、前記上位システムへの完了通知を、前記各パラメータよりも前記設定順がより早いパラメータを用いたデータ転送が正常に完了するまで待機させる、
データ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクリプタ及び転送パラメータのキューイング機構を活用して、データ転送効率化を図るデータ転送制御装置及びデータ転送制御方法に関する。
【背景技術】
【０００２】
近年、IOインタフェースは、SDXC（SD eXtended Capacity）、USB（Universal Serial Bus）、及びSATA（Serial Advanced Technology Attachment）等に代表されるように、高速化が進んでいる。また、データ転送技術は、IOインタフェース内のバッファと主記憶装置との間の複数のデータ転送を実行する際、IOインタフェースにおける高速スループットの特徴を損なうことなくデータ転送を効率化させる技術が提案されている。例えば、特許文献１及び２には、ディスクリプタを用いたDMA（Direct Memory Access）転送技術が提案されている。【０００３】
例えば、特許文献１には、ディスクリプタを用いたDMA転送により、ホストCPU（Central Processing Unit：中央処理装置）の負荷を軽減しつつ、データ転送途中にデータのエラーを検出する技術が開示されている。具体的には、DMAコントローラ（DMAC：データ転送制御装置）は、データ転送途中にデータのエラーを検出すると、エラーが検出されたデータの転送に用いたパラメータと同一のDMAパラメータを再度用いて、データ転送を行う。データの転送に用いたパラメータ（以下、DMAパラメータと称する）は、例えば、データの転送元アドレス、転送先アドレス、転送データサイズ等を含む。つまり、エラーデータは、同一のDMAパラメータで転送された正常なデータによって上書きされる。こうすることで、データ転送制御装置は、エラーデータの破棄を実現している。このように、特許文献１のDMA転送では、エラーデータの破棄をホストCPUでの処理を介さずに実現することにより、トータルスループットの向上（データ転送の効率化）を実現している。【０００４】
また、特許文献２には、DMAパラメータ設定及びDMA起動要求に対してキューイング機構を設けて、データ転送を並列化することが開示されている。これにより、特許文献２は、データ転送の効率化を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平２−１８１２４８号公報
【特許文献２】特開平１１−２１２９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された従来技術では、エラー発生時に、エラーデータの転送に用いられたDMAパラメータと同一のDMAパラメータを次のデータの転送に用いる。このため、特許文献１に記載されたデータ転送制御装置は、前の転送処理が完了してから次の転送処理を開始する必要がある。よって、特許文献１に記載されたデータ転送制御装置では、DMA転送の間隔が空いてしまい（データ転送できない期間が生じてしまい）、データ転送効率が低下してしまう。すなわち、特許文献１に記載された従来技術では、エラーデータの破棄は実現できるが、データ転送効率が犠牲になるという課題がある。【０００７】
一方、特許文献２に記載された従来技術では、DMAパラメータ設定及びDMA起動要求をキューイングする。こうすることにより、特許文献２に記載された従来技術では、前のデータ転送が完了次第、次のデータ転送を開始することができ、データ転送の効率を向上させることができる。しかしながら、特許文献２に記載された従来技術では、或るデータ転送でエラーが発生した際、エラーが発生したデータ転送の次のデータ転送が既に開始されている可能性がある。この場合、エラーが発生したデータ転送の次のデータ転送が正常に完了すると、データ転送制御装置の上位システムでは、エラーが発生したデータ転送も完了したと認識することになる。よって、エラーが発生したデータ転送時と同一のDMAパラメータは、次のデータ転送に用いることができず、エラーデータの破棄を実現できない。すなわち、特許文献２に記載された技術では、データ転送効率を向上させることはできるが、エラーデータの破棄を実現できないという課題がある。【０００８】
本発明の目的は、転送されるデータのエラー検出を行うDMA転送において、エラーデータを破棄しつつ、データ転送効率を向上させることができるデータ転送制御装置及びデータ転送制御方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明の第１の態様に係るデータ転送制御装置は、データ転送実行中に、次回以降のデータ転送の起動要求及びデータ転送に用いるパラメータ設定を受け付け可能であり、上位システムから設定された複数の起動要求を設定順に処理するデータ転送制御装置であって、前記複数のパラメータを、退避資源に一時的に退避させる退避制御部と、転送されるデータに対してエラー検出処理を行うデータ処理部と、前記エラー検出処理における処理結果がエラーであるデータの転送時に用いた前記パラメータを、次回以降のデータ転送用のパラメータとして、前記退避資源から復帰させる復帰制御部と、前記複数のパラメータにおいて、各パラメータを用いたデータ転送が正常に完了しことを示す、前記上位システムへの完了通知を、前記各パラメータよりも前記設定順がより早いパラメータを用いたデータ転送が正常に完了するまで待機させる完了通知制御部と、を具備する構成を採る。【００１０】
本発明の第２の態様に係るデータ転送制御方法は、データ転送実行中に、次回以降のデータ転送の起動要求及びデータ転送に用いるパラメータ設定を受け付け可能であり、上位システムから設定された複数の起動要求を設定順に処理するデータ転送制御装置において、前記複数のパラメータを、退避資源に一時的に退避させ、転送されるデータに対してエラー検出処理を行い、前記エラー検出処理における処理結果がエラーであるデータの転送時に用いた前記パラメータを、次回以降のデータ転送用のパラメータとして、前記退避資源から復帰させ、前記複数のパラメータにおいて、各パラメータを用いたデータ転送が正常に完了しことを示す、前記上位システムへの完了通知を、前記各パラメータよりも前記設定順がより早いパラメータを用いたデータ転送が正常に完了するまで待機させる構成を採る。
【発明の効果】
【００１１】
本発明によれば、転送されるデータのエラー検出を行うDMA転送において、エラーデータを破棄しつつ、データ転送効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１に係るデータ転送システムの構成を示すブロック図
【図２】本発明の実施の形態１に係る完了通知遅延制御部の内部構成を示すブロック図
【図３】本発明の実施の形態１に係る完了通知キューの一例を示す図
【図４】本発明の実施の形態１に係る完了通知処理の流れを示すフローチャート図
【図５】本発明の実施の形態１に係る完了通知処理の一例を示す図
【図６】本発明の実施の形態２に係るデータ転送システムの構成を示すブロック図
【図７】本発明の実施の形態２に係る完了通知遅延制御部の内部構成及びエラー割当制御部の内部構成を示すブロック図（ケース１）
【図８】本発明の実施の形態２に係る完了通知遅延制御部の内部構成及びエラー割当制御部の内部構成を示すブロック図（ケース２）
【図９】本発明の実施の形態２に係る完了通知遅延制御部の内部構成及びエラー割当制御部の内部構成を示すブロック図（ケース３）
【図１０】本発明の実施の形態２に係る完了通知処理の流れを示すフローチャート図
【図１１】本発明に係るその他の完了通知キューの一例を示す図
【図１２】本発明に係るその他のデータ転送システムの構成を示すブロック図
【図１３】本発明に係るデータ転送システムの適用例を示すブロック図
【発明を実施するための形態】
【００１３】
以下、本発明の各実施の形態について図面を参照して詳細に説明する。なお、以下の説明において同一の機能を有する構成要素については同一の符号を付与し、説明は省略する。また、以下で示す実施の形態は一例であり、システムの構成、機能ブロックの構成は限定されるものではない。
【００１４】
（実施の形態１）
図１は、本実施の形態に係るデータ転送システムの構成を示す。図１において、データ転送システムは、ＣＰＵ１００１、データ転送制御装置１００４、転送元１００２、および転送先１００３から構成される。図１において、CPU１００１は、データの転送元アドレス、転送先アドレス、転送データサイズ等の転送パラメータであるDMAパラメータを設定する。
【００１５】
転送元１００２は、例えば、SDIOインタフェース、SATAインタフェース又はUSBインタフェース等であって、データ転送制御装置１００４を介してデータを転送先１００３に転送する。
【００１６】
転送先１００３は、例えば、主記憶装置として使用されるDRAM等であって、転送元１００２からのデータを、データ転送制御装置１００４を介して受信する。また、転送先１００３は、転送元１００２からのデータ転送が完了した旨を示す完了通知を、データ転送制御装置１００４を介して、CPU１００１に送信する。CPU１００１は、完了通知を受信することで、その完了通知に対応するデータ以前のデータが転送先１００３で正常に受信されたと認識する。
【００１７】
データ転送制御装置１００４は、CPU１００１で設定されたDMAパラメータに従って、転送元１００２からデータを読み出し（リードし）、転送先１００３へのデータ転送を制御する。また、データ転送制御装置１００４は、或るデータのデータ転送実行中に、次回以降のデータ転送の起動要求及びDMAパラメータ設定を受け付け可能な構成を採る。また、データ転送制御装置１００４は、上位システムであるCPU１００１で設定された複数のDMAパラメータを設定順に用いる。
【００１８】
図１に示すように、データ転送制御装置１００４は、チャネル制御部１１００及びデータパス部１２００の２つの機能ブロックに大きく分けられる。チャネル制御部１１００は、CPU１００１で設定されたDMAパラメータを管理し、転送元１００２及び転送先１００３に発行する転送パラメータを生成する。一方、データパス部１２００は、転送元１００２からのデータの読み出し、及び、転送先１００３へのデータの転送を制御する。以下、データ転送制御装置１００４の構成について詳細に説明する。
【００１９】
まず、図１に示すデータ転送制御装置１００４のチャネル制御部１１００の構成について説明する。
【００２０】
図１において、チャネル制御部１１００は、DMAパラメータ管理部１１１０、完了通知制御部１１２０、チャネル調停部１１３０、及びパラメータ制御部１１４０を有する。
【００２１】
更に、DMAパラメータ管理部１１１０は、アドレスデコーダ１１１１、DMAパラメータ退避制御部１１１２、調停部１１１３、及びDMAパラメータ保持部１１１４、を有する。
【００２２】
アドレスデコーダ１１１１は、CPU１００１から出力されるアドレスを受けて、アクセス先となるパラメータを特定し、DMAパラメータ退避制御部１１１２及びDMAパラメータ保持部１１１４に対してアクセス要求を出力する。なお、DMAパラメータ保持部１１１４へのアクセス要求は、後述のとおり、調停部１１１３にて他のアクセス要求と調停される。
【００２３】
DMAパラメータ退避制御部１１１２は、DMAパラメータ保持部１１１４から入力されるDMAパラメータ（退避されたDMAパラメータ）を、退避されたDMAパラメータを保持する退避資源に一時的に退避させる。図１に示すDMAパラメータ退避制御部１１１２は、退避されたDMAパラメータを保持する退避資源として、退避資源０及び退避資源１を有する。ただし、退避資源は、例えば、DMAチャネル毎に図１に示す退避資源０及び退避資源１を有するケース、又は、退避資源を３つ以上有するケースも想定される。また、DMAパラメータ退避制御部１１１２は、完了通知制御部１１２０のDMAパラメータ復帰制御部１１２２からの復帰指示又は解放指示に従って、退避資源０又は１で保持するDMAパラメータの復帰及び解放を制御する。なお、完了通知制御部１１２０のDMAパラメータ復帰制御部１１２２については、後述する。
【００２４】
また、DMAパラメータ退避制御部１１１２の退避設定レジスタ１１１５は、DMAパラメータの退避制御処理に関する設定（例えば、退避資源の数等）を保持する。
【００２５】
調停部１１１３は、アドレスデコーダ１１１１から入力されるDMAパラメータ（DMAパラメータ設定要求）、DMAパラメータ退避制御部１１１２から入力されるDMAパラメータ（DMAパラメータ復帰要求）の調停を行う。また、調停部１１１３は、パラメータ制御部１１４０から入力される更新後のDMAパラメータ（DMAパラメータ更新要求）の調停を行う。そして、調停部１１１３は、調停結果に従って、これらのDMAパラメータをDMAパラメータ保持部１１１４に出力する。
【００２６】
DMAパラメータ保持部１１１４は、調停部１１１３から入力されるDMAパラメータを保持する。また、DMAパラメータ保持部１１１４は、DMA起動時に、退避設定レジスタ１１１５の設定に応じて、DMAパラメータ（アドレス及びサイズ等）を、DMAパラメータ退避制御部１１１２に退避させる。具体的には、DMAパラメータ保持部１１１４は、DMAパラメータの内、データ転送に伴いパラメータ制御部１１４０で更新されるDMAパラメータの更新前の値を、DMAパラメータ退避制御部１１１２に退避させる。また、DMAパラメータ保持部１１１４は、調停部１１１３を介して、更新後のDMAパラメータがパラメータ制御部１１４０から入力されると、保持しているDMAパラメータの内、対応するDMAパラメータを更新する。また、DMAパラメータ保持部１１１４は、調停部１１１３を介して、復帰したDMAパラメータがDMAパラメータ退避制御部１１１２から入力されると、保持しているDMAパラメータの内、対応するDMAパラメータを更新する。つまり、DMAパラメータ保持部１１１４は、当該対応するDMAパラメータを、更新前の状態に復帰させることになる。
【００２７】
なお、DMAパラメータ保持部１１１４は、DMAチャネル毎にDMAパラメータを保持する。また、DMAパラメータ保持部１１１４は、DMAチャネル毎に、次回以降のデータ転送に用いるDMAパラメータ設定を先行的に受け付けるための複数の資源を有する。つまり、DMAパラメータ保持部１１１４では、DMAパラメータに対してDMAチャネル毎にキューイング機構が設けられている。例えば、図１の例では、DMAチャネル１（ch1）からDMAチャネルＮ（chN）までのＮ個のDMAチャネルに対して、それぞれ２つの資源が備えられている。例えば、DMAチャネル１（ch1）では、「ch1 DMAパラメータ0」と「ch1 DMAパラメータ1」）の２つの資源が備えられている。ここで、Ｎは、１以上の整数である。また、本実施の形態は、DMAチャネル数が１つの場合も含む。
【００２８】
例えば、DMAチャネル１（ch1）では、ch1 DMAパラメータ0、ch1 DMAパラメータ1の順に、DMAパラメータが格納される。また、ch1 DMAパラメータ0に格納されたDMAパラメータは、現在のデータ転送に対応し、ch1 DMAパラメータ1に格納されたDMAパラメータは次回のデータ転送に対応する。そして、ch1 DMAパラメータ0に格納されたDMAパラメータに示される転送サイズ（例えば、転送残りサイズ）は、パラメータ制御部１１４０におけるパラメータ更新により０（つまり、転送残りサイズが０）に更新される。すると、ch1 DMAパラメータ1に格納されたDMAパラメータは、ch1 DMAパラメータ0にシフトする。そして、ch1 DMAパラメータ0にシフトしたDMAパラメータを参照した次のデータ転送が開始される。又は、ch1 DMAパラメータ0に格納されたDMAパラメータに示される転送サイズ（例えば、転送残りサイズ）は、パラメータ制御部１１４０におけるパラメータ更新により０（つまり、転送残りサイズが０）に更新される。次のデータ転送に関するDMAパラメータの参照先は、ch1 DMAパラメータ0からch1 DMAパラメータ1にシフトし、ch1 DMAパラメータ1に格納されたDMAパラメータを参照した次のデータ転送が開始されてもよい。
【００２９】
また、図１に示すDMAパラメータ保持部１１１４では、各DMAチャネルのDMAパラメータを保持する資源を２つとする場合について説明するが、各DMAチャネルのDMAパラメータを保持する資源は３つ以上であってもよい。また、DMAパラメータの切替タイミングは、例えば、DMAチャネル１（ch1）におけるDMAパラメータを、ch1 DMAパラメータ0からch1 DMAパラメータ1に切り替えることを前述した。つまり、DMAパラメータの切替タイミングは、パラメータ制御部１１４０にて所定のサイズ分のコマンドを生成して、残り転送サイズが０になった時点で切り替える場合に限定されない。例えば、DMAパラメータの切替タイミングは、残り転送サイズが０になった上で、その最後の転送が完了するのを待ってからDMAパラメータを切り替えてもよい。
【００３０】
また、図１では、DMAパラメータ保持部１１１４が、CPU１００１が設定したDMAパラメータを別資源（DMAパラメータ退避制御部１１１２）に退避させて、設定されたDMAパラメータを転送に伴い更新する構成を示している。しかし、DMAパラメータ保持部１１１４では、CPU１００１が設定したDMAパラメータをそのまま保持し、転送に伴い更新するDMAパラメータを別資源にロードして、その別資源においてDMAパラメータを更新する場合も想定される。
【００３１】
図１において、チャネル制御部１１００の完了通知制御部１１２０は、完了通知遅延制御部１１２１、及びDMAパラメータ復帰制御部１１２２を有する。
【００３２】
完了通知遅延制御部１１２１は、完了判定部１２０３から完了通知を受信する。完了通知は、DMAチャネル毎のデータ転送の完了通知であって、同一DMAチャネルで複数のデータ転送が実行中に、いずれのDMAパラメータを用いたデータ転送であるかを識別可能な通知である。同様に、完了通知遅延制御部１１２１は、データ処理部１２０１から処理結果を受信する。処理結果は、DMAチャネル毎の処理結果（例えば、エラーの有無）であって、同一DMAチャネルで複数のデータ転送が実行中には、いずれのDMAパラメータを用いたデータ転送に対応するかを識別可能な通知である。
【００３３】
完了通知遅延制御部１１２１は、処理結果がエラーであるデータ（エラーパケット）の転送に対応する完了通知である場合、その完了通知を破棄する。また、完了通知遅延制御部１１２１は、次の場合、破棄した完了通知に対応するデータ転送時に用いたDMAパラメータと異なる別のDMAパラメータを用いたデータ転送の完了通知を、CPU１００１に通知せずに待機（ウェイト）させる。なお、以下において、破棄した完了通知に対応するデータ転送時に用いたDMAパラメータは、DMAパラメータAと称する。次の場合とは、特定の期間の間に、DMAパラメータAと異なる別のDMAパラメータを用いたデータ転送が正常に完了した場合である。また、特定の期間とは、破棄した完了通知に対応するデータ転送時から、DMAパラメータAを次回以降のデータ転送用のDMAパラメータとして復帰させて行うデータ転送が、正常に完了するまでの間の期間である。そして、完了通知遅延制御部１１２１は、DMAパラメータAを用いたデータ転送が正常に完了すると、DMAパラメータAを用いたデータ転送の完了通知をCPU１００１に通知（転送完了割込）する。DMAパラメータAを用いたデータ転送の完了通知とともに、完了通知遅延制御部１１２１は、待機（ウェイト）させていた完了通知（別のDMAパラメータを用いたデータ転送の完了通知）を、CPU１００１に通知（転送完了割込）する。つまり、CPU１００１への完了通知は、各DMAパラメータを用いたデータ転送が正常に完了しことを示す。
【００３４】
つまり、完了通知遅延制御部１１２１は、CPU１００１で設定された複数のDMAパラメータにおいて、設定順がより早いDMAパラメータを用いたデータ転送が正常に完了するまで、前記CPU１００１への完了通知を待機（遅延）させる。
【００３５】
その際、完了通知遅延制御部１１２１は、DMAパラメータAを用いたデータ転送の完了通知、及び、待機（ウェイト）させていた別のDMAパラメータを用いたデータ転送の完了通知を、１つずつ個別にCPU１００１に通知してもよい。また、完了通知遅延制御部１１２１は、DMAパラメータAを用いたデータ転送の完了通知と、待機（ウェイト）中の別のDMAパラメータを用いたデータ転送の完了通知とを、１つの転送完了割込として、CPU１００１に通知してもよい。これにより、完了通知遅延制御部１１２１は、１回でまとめて通知することにより、CPU１００１の負荷軽減を図ることができる。
【００３６】
なお、完了通知遅延制御部１１２１における完了通知処理の詳細については後述する。
【００３７】
DMAパラメータ復帰制御部１１２２は、次の場合に、DMAパラメータ退避制御部１１１２に対して、特定のDMAパラメータを、次回以降のデータ転送用のDMAパラメータとして、退避資源からDMAパラメータ保持部１１１４に復帰（再設定）させるように指示する。すなわち、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２に対して、特定のDMAパラメータの復帰要求を通知する。次の場合とは、データ処理部１２０１（後述する）から通知される処理結果が異常（エラー有り）を示す場合である。また、特定のDMAパラメータは、DMA起動時に退避されたDMAパラメータの内、データ処理部１２０１での処理結果がエラーであるデータの転送時に用いたDMAパラメータである。
【００３８】
ここで、エラーが検出されたデータ（エラーパケット）は、転送先１００３（例えばDRAM）に転送される。エラーパケットは、例えばSDIOインタフェースを介して無線LANデバイスから受け取った、チェックサムエラーとなった受信パケットである。しかし、データ転送制御装置１００４では、エラーパケットの転送に用いられたDMAパラメータを復帰させて、再度同じDMAパラメータで後続の受信パケットが転送される。これにより、データ転送制御装置１００４では、転送先１００３（DRAM）のエラーパケットがその受信パケットにより上書きされ、結果として正常なパケットのみを転送先１００３（DRAM）上に格納することが可能となる。
【００３９】
一方、DMAパラメータ復帰制御部１１２２は、次の場合に、DMAパラメータ退避制御部１１１２に対して、特定のDMAパラメータを退避資源から解放（破棄）させるように指示する。すなわち、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２に対して、特定のDMAパラメータの解放要求を通知する。次の場合とは、データ処理部１２０１（後述する）から通知される処理結果が正常（エラー無し）を示し、かつ、完了判定部１２０３（後述する）から、処理結果が正常であるデータのデータ転送の完了通知が通知される場合である。また、特定のDMAパラメータは、DMA起動時に退避されたDMAパラメータの内、データ処理部１２０１での処理結果が正常であるデータの転送時に用いたDMAパラメータである。
【００４０】
チャネル調停部１１３０は、DMAパラメータ保持部１１１４から入力される複数のDMAチャネルのDMA要求の調停を行う。そして、チャネル調停部１１３０は、調停結果に従って、各DMAチャネルのDMAパラメータをパラメータ制御部１１４０に出力する。
【００４１】
パラメータ制御部１１４０は、チャネル調停部１１３０から入力されるDMAパラメータに基づいて、転送パラメータ（アドレス、サイズ等）を生成し、生成した転送パラメータをデータパス部１２００に出力する。例えば、パラメータ制御部１１４０は、転送データのサイズに対して、所定のサイズ分の転送を指示する転送パラメータを生成する。パラメータ制御部１１４０は、転送パラメータを生成するとともに、DMAパラメータに示されるデータサイズから当該所定のサイズを差し引いた転送残りサイズである更新後のDMAパラメータを、調停部１１１３に出力する。
【００４２】
次に、図１に示すデータ転送制御装置１００４のデータパス部１２００の構成について説明する。
【００４３】
データパス部１２００は、チャネル制御部１１００のパラメータ制御部１１４０から入力される転送パラメータに従って、転送元１００２からデータを読み出し（リードし）、読み出したデータを転送先１００３に書き出す（ライトする）。また、データパス部１２００は、データ処理部１２０１、データバッファ１２０２及び完了判定部１２０３、を有する。
【００４４】
データ処理部１２０１は、転送元１００２から転送先１００３へ転送されるデータに対してチェックサム（エラー検出処理）及び暗号・復号等の処理を行う。そして、データ処理部１２０１は、転送されるデータが正常に処理完了されたか、あるいはエラーで処理完了されたかを処理結果として、完了通知遅延制御部１１２１及びDMAパラメータ復帰制御部１１２２に通知する。チェックサムを行う場合、データ処理部１２０１は、チェックサムエラーを検出したか否かを処理結果として通知する。また、暗号・復号処理を行う場合、データ処理部１２０１は、暗号方式のデータ単位に満たないデータサイズの転送（異常な転送）であるか否かを処理結果として通知する。また、データ処理部１２０１は、処理結果とDMAチャネルの情報とを対応付ける。こうすることで、データ処理部１２０１は、同一のDMAチャネルの転送を複数実行中の場合でも、何れの転送に対応する処理結果であるかを識別可能として、各処理結果を通知する。
【００４５】
なお、図１では、データ処理部１２０１が、転送元１００２とデータバッファ１２０２との間のデータに対して処理する場合について説明している。なお、データ処理部１２０１は、データバッファ１２０２に格納されているデータに対して処理してもよく、データバッファ１２０２と転送先１００３との間のデータに対して処理してもよい。
【００４６】
データバッファ１２０２は、転送元１００２とデータ転送制御装置１００４との間の転送速度、及び、データ転送制御装置１００４と転送先１００３との間の転送速度に基づき、必要に応じて速度吸収等の目的でデータを一時的に格納する。
【００４７】
完了判定部１２０３は、転送先１００３からデータ転送の完了通知を受信し、データパス部１２００における転送完了をDMAチャネル毎に判定する。そして、完了判定部１２０３は、各DMAチャネルの完了通知を、完了通知遅延制御部１１２１及びDMAパラメータ復帰制御部１１２２に通知する。また、完了判定部１２０３は、完了通知とDMAチャネルの情報とを対応付ける。こうすることで、完了判定部１２０３は、同一のDMAチャネルの転送を複数実行中の場合でも、何れの転送の完了通知であるかを識別可能として、各完了通知を通知する。
【００４８】
次に、完了通知遅延制御部１１２１における完了通知処理の詳細について説明する。図２は、完了通知遅延制御部１１２１の内部構成を示す。図２に示すように、完了通知遅延制御部１１２１は、完了通知キュー２１２６、及び完了通知生成部２１２７を備える。
【００４９】
図２において、完了通知キュー２１２６は、転送先１００３に転送された、各DMAチャネルの転送データに対する処理結果（正常又はエラー）、及び、転送状態（転送完了又は転送中）をキューイングする。
【００５０】
図３は、完了通知キュー２１２６でキューイングされる情報（つまり、完了通知キュー２１２６で管理される情報）を示す例である。キューイングされる情報は、例えば、キュー番号「No.」、転送される転送データのDMAチャネル「ｃｈ」、同一DMAパラメータにおいてどのDMAパラメータで発生したエラーであるかを識別するための「エラーID」、データ処理部１２０１から入力される「処理結果」、転送データの転送が完了したか否かを示す「状態」（完了又は転送中）、により構成される。
【００５１】
DMAチャネルによっては、或るDMAパラメータを用いたデータ転送中に次のDMAパラメータを用いたデータ転送が先行的に（つまり、或るDMAパラメータを用いたデータ転送の完了を待たずに）開始される。このため、同一DMAチャネルでは、異なるDMAパラメータを用いたデータ転送で複数のエラーが発生することが想定される。そこで、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２に対してDMAパラメータの復帰要求をする際、図３に示す「エラーID」をDMAパラメータに付与する。すなわち、データ転送制御装置１００４が用いるDMAパラメータは、当該DMAパラメータを用いて転送されるデータに対して、データ処理部１２０１でのエラー検出処理が行われたか否かを示す情報であるエラーIDを含む。また、「エラーID」は、データ処理部１２０１からの「処理結果」と共に完了通知キュー２１２６に通知される。
【００５２】
上記に示すように、エラーIDと、復帰したDMAパラメータによるデータ転送とは、関連付けられる。このために、完了通知遅延制御部１１２１は、同一DMAチャネルで発生している複数のエラーの内、完了通知キュー２１２６に格納される各エラーが、いずれのDMAパラメータを用いたデータ転送のエラーであるかを管理することができる。
【００５３】
また、図３では、各DMAチャネルにおいて、「処理結果」が正常である場合には「エラーID」として０が付与される。また、「処理結果」がエラーである場合には、各DMAパラメータに対してそれぞれ異なる「エラーID」（１以上の値）が付与される。例えば、図３に示すNo.(1)の転送データと、No.(6)の転送データとは、同一DMAチャネル（ch1）であり、同一のエラーID＝１が付与されている。これは、同一DMAチャネルの同一DMAパラメータを用いて、データ転送された転送データであることを意味する。換言すると、図３において、No.(6)の転送データは、No.(1)の転送データで用いたDMAパラメータを復帰させて転送されたことを意味する。一方、図３に示すNo.(1)の転送データと、No.(5)の転送データとは、同一DMAチャネル（ch1）であるが、異なるエラーID＝１、２がそれぞれ付与されている。これは、異なるDMAパラメータを用いて、データ転送された転送データであることを意味する。
【００５４】
また、図３に示す「状態」は、データ処理部１２０１からの処理結果が入力された段階では「転送中」となり、完了判定部１２０３から完了通知が入力されると、「完了」となる。
【００５５】
また、完了通知キュー２１２６は、次の場合、処理結果と共に通知されるエラーIDに対応する転送データの情報をキューイングしない。次の場合とは、データ処理部１２０１から入力される「処理結果」がエラーであり、かつ、処理結果と共に通知される「エラーID」が、既にキューイングされている同一DMAチャネルの「エラーID」と同一である場合である。つまり、同一DMAチャネルの「エラーID」と同一である場合とは、復帰させたDMAパラメータを用いたデータ転送で、再びエラーが発生した場合である。
【００５６】
このように、完了通知遅延制御部１１２１は、各DMAチャネルの各DMAパラメータを用いて転送された転送データの処理結果（正常又はエラー）、及び、転送状態（転送中又は転送完了）を、完了通知キュー２１２６で管理する。
【００５７】
完了通知生成部２１２７は、完了通知キュー２１２６を参照して、CPU１００１に対する完了通知の出力を制御する。
【００５８】
具体的には、完了通知生成部２１２７は、完了判定部１２０３から入力される完了通知に対応する転送データの「処理結果」がエラーである場合、当該完了通知を破棄する。ただし、このとき、破棄された完了通知に対応する転送データに関する情報は、完了通知キュー２１２６にキューイングされる。破棄された完了通知に対応する転送データに関する情報とは、例えば、図３に示すNo.(1)、No.(4)及びNo.(5)の転送データ（処理結果：エラー）に関する情報である。
【００５９】
また、完了通知生成部２１２７は、次の場合に、完了通知をCPU１００１にそのまま出力（転送完了割込）する。次の場合とは、完了判定部１２０３から入力される完了通知に対応する転送データの「処理結果」が正常の場合である。かつ、当該完了通知に対応するDMAチャネルと同一DMAチャネルにおいて、「処理結果」がエラーである完了通知が完了通知キュー２１２６にキューイングされていない場合である。
【００６０】
また、完了通知生成部２１２７は、次の場合に、完了判定部１２０３から受け取った完了通知に対応する転送データの「処理結果」及び「エラーID」に基づいて、完了通知の出力を制御する。次の場合とは、完了判定部１２０３から完了通知を受け取った時点で、その完了通知に対応するDMAチャネルと同一のDMAチャネルにおいて、「処理結果」がエラーである転送データの完了通知が完了通知キュー２１２６にキューイングされている場合である。
【００６１】
具体的には、完了通知生成部２１２７は、次の場合に、受け取った完了通知をそのままCPU１００１へ出力せず、完了通知キュー２１２６にキューイングしたままにする。次の場合とは、受け取った完了通知に対応する転送データの「処理結果」が正常の場合である。かつ、受け取った完了通知に対応する転送データの「エラーID」が、キューイングされている同一DMAチャネルにおける転送データ（処理結果：エラー）の「エラーID」と異なる場合である。つまり、完了通知生成部２１２７は、受け取った完了通知に対応する同一のDMAチャンネルのデータ転送で、用いたDMAパラメータよりも設定順がより早いDMAパラメータでエラーが発生した場合、受け取った完了通知をウェイトする。
【００６２】
例えば、図３のNo.(2)は、転送データ（ch1、処理結果：正常、エラーID＝0）に対応する完了通知を受け取った場合を示すものであり、以下に説明する。この場合、完了通知キュー２１２６には、No.(1)の転送データ（ch1、処理結果：エラー、エラーID＝1）の完了通知（受け取った完了通知と同一DMAチャネルでエラーIDが異なる完了通知）がキューイングされている。このため、完了通知生成部２１２７は、No.(2)の転送データの「状態」を完了に更新して、完了通知キュー２１２６にキューイングしたままにする。図３のNo.(3)は、転送データ（ch1、処理結果：正常、エラーID＝0）に対応する完了通知を受け取った場合を示すもので、同様である。
【００６３】
一方、完了通知生成部２１２７は、次の場合に、完了通知キュー２１２６にキューイングされている同一DMAチャネル内で「処理結果」が、正常である転送データの完了通知をCPU１００１にまとめて出力する。次の場合とは、受け取った完了通知に対応する転送データの「処理結果」が正常である場合である。かつ、受け取った完了通知に対応する転送データの「エラーID」が、キューイングされている同一DMAチャネルにおける転送データ（処理結果：エラー）の「エラーID」と同一である場合である。
【００６４】
例えば、図３のNo.(6)は、転送データ（ch1、処理結果：正常、エラーID＝１）に対応する完了通知を受け取った場合を示すもので、以下に説明する。つまり、No.(6)の転送データは、No.(1)の転送データで用いたDMAパラメータを復帰させて転送された転送データである。この場合、完了通知生成部２１２７は、完了通知キュー２１２６にキューイングされているDMAチャネル１（ch1）の完了通知の内、No.(6)の転送データに対応するNo.(1)の転送データの完了通知をCPU１００１に出力する。さらに、完了通知生成部２１２７は、No.(1)以降の「処理結果」が正常である転送データ（No.(2)及びNo.(3)）の転送データの完了通知を、CPU１００１に出力する。そして、完了通知生成部２１２７は、No.(1)〜（3）の転送データ、及び、No.(1)と同一DMAパラメータを用いたNo.(6)の転送データに関する情報を、完了通知キュー２１２６から削除する。
【００６５】
なお、複数の転送データの完了通知（ここでは、図３に示すNo.(1)〜（3）の転送データの完了通知）の上位システムへの出力方法としては、複数の転送データの完了通知をまとめて１つの転送完了割込として通知する方法がある。つまり、上位システムがCPU１００１の場合は、複数の転送データの完了通知を個別に１つずつの転送完了割込として通知するのではなく、複数の転送データの完了通知をまとめて１つの転送完了割込として通知する。これにより、本実施の形態に係るデータ転送制御装置１００４は、CPU１００１への割込による負荷を軽減することができる。
【００６６】
同様にして、図３に示すNo.(4)の転送データ（ch2、処理結果：エラー、エラーID＝１）の完了通知は、DMAチャネル２（ch2）のエラーID＝１である転送データが正常に転送された時点でCPU１００１に出力される。
【００６７】
なお、図３では、完了通知キュー２１２６に対して、DMAチャネル１（ch1）であり、エラーID＝１である転送データの「処理結果」が入力されると、No.(6)の転送データとして新たにキューイングされる例について説明した。しかし、本実施の形態では、完了通知遅延制御部１１２１は、エラーID＝１である転送データの「処理結果」（正常）を受けた時点で、「処理結果」をエラーから正常に更新し、「状態」を完了から転送中に更新してもよい。
【００６８】
次に、データ転送制御装置１００４におけるデータ転送の完了通知処理の流れについて説明する。図４は、データ転送制御装置１００４におけるデータ転送の完了通知処理の流れを示すフローチャートである。
【００６９】
図４において、ステップ（以下、「ＳＴ」という）１０１において、データ転送制御装置１００４は、DMAパラメータを設定した後、DMA転送を起動し、データ転送を開始する。
【００７０】
ＳＴ１０２において、データ転送制御装置１００４（データ処理部１２０１）は、転送データに対してチェックサム（エラー検出処理）等のデータ処理を行う。
【００７１】
ＳＴ１０３において、データ転送制御装置１００４は、ＳＴ１０２での転送データに対する処理結果（エラー検出結果）が正常であるか否かを判断する。処理結果がエラーの場合（ＳＴ１０３：ＮＯ）は、ＳＴ１０４に進む。一方、処理結果が正常である場合（ＳＴ１０３：ＹＥＳ）は、ＳＴ１０７に進む。
【００７２】
ＳＴ１０４において、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２に対して、処理結果がエラーである転送データに用いたDMAパラメータを復帰させて再度データ転送を行う。このため、DMAパラメータ復帰制御部１１２２は、処理結果がエラーである転送データに用いたDMAパラメータの復帰要求を通知する。このとき、DMAパラメータ復帰制御部１１２２は、完了通知遅延制御部１１２１の完了通知キュー２１２６（図３）に格納されている、DMAチャネル番号「ch」及び「エラーID」も通知する。
【００７３】
DMAパラメータ退避制御部１１１２は、通知されたDMAチャネル番号「ch」を用いて、退避資源に退避されているDMAパラメータの中から復帰させるDMAパラメータを特定する。また、DMAパラメータ退避制御部１１１２は、通知された「エラーID」を用いて、復帰させたDMAパラメータでの転送及びデータ処理部１２０１の処理結果（正常又はエラー）が、どのエラーに対応するかを特定する。
【００７４】
ＳＴ１０５において、データ転送制御装置１００４（完了判定部１２０３）は、転送先１００３から、転送データ（エラー）の転送完了通知を受け取る。
【００７５】
ＳＴ１０６において、データ転送制御装置１００４（完了通知遅延制御部１１２１）は、ＳＴ１０５で受け取った処理結果が、エラーである転送データの完了通知を破棄する。ただし、このとき、破棄された完了通知に対応する転送データに関する情報は、完了通知キュー２１２６にキューイングされる。なお、転送データに関する情報は、例えば、図３に示すNo.(1)、No.(4)及びNo.(5)の転送データ（処理結果：エラー）に関する情報である。
【００７６】
ＳＴ１０７において、データ転送制御装置１００４（完了判定部１２０３）は、転送先１００３から、転送データ（正常）の転送完了通知を受け取る。
【００７７】
ＳＴ１０８において、データ転送制御装置１００４（完了通知遅延制御部１１２１）は、ＳＴ１０７で受け取った完了通知の処理結果が、正常である転送データと同一のDMAチャネルにおいて、エラーが発生しているか否かを判断する。具体的には、完了通知遅延制御部１１２１は、完了通知を受け取ったその転送データより、前に転送された他の転送データでエラーが発生しているか（つまり、DMAパラメータを復帰させて転送データを再度転送しているか）否かを判断する。すなわち、完了通知遅延制御部１１２１は、ＳＴ１０７で完了通知を受け取った転送データのキューNo.よりも小さいキューNo.に、処理結果がエラーである他の転送データの完了通知がキューイングされているか否かを判断する。
【００７８】
ＳＴ１０７で完了通知を受け取った転送データのキューNo.よりも小さいキューNo.に、処理結果がエラーである他の転送データの完了通知がキューイングされていない場合（ＳＴ１０８：ＮＯ）は、ＳＴ１０９に進む。一方、ＳＴ１０７で完了通知を受け取った転送データのキューNo.よりも小さいキューNo.に、処理結果がエラーである他の転送データの完了通知がキューイングされている場合（ＳＴ１０８：ＹＥＳ）は、ＳＴ１１０に進む。ＳＴ１０９において、完了通知遅延制御部１１２１は、ＳＴ１０７で受け取った、転送データの完了通知を上位システム（ここではCPU１００１）に通知する。
【００７９】
ＳＴ１１０において、完了通知遅延制御部１１２１は、ＳＴ１０７で完了通知を受け取った転送データに対する「エラーID」が、０より大きいか否か（エラーID＞０であるか否か）を判断する。つまり、完了通知遅延制御部１１２１は、ＳＴ１０７で完了通知を受け取った転送データの転送が、エラー発生によりDMAパラメータを復帰させて実行したデータ転送であるか否かを判断する。
【００８０】
エラーIDが０より大きい場合（ＳＴ１１０：ＹＥＳ）、ＳＴ１０７で完了通知を受け取った転送データの転送が、復帰させたDMAパラメータを用いたデータ転送である場合（エラーID＞０（正常なデータ））は、ＳＴ１１１に進む。ＳＴ１１１において、完了通知遅延制御部１１２１は、キューイング中の転送データの完了通知（待機（ウェイト）されている完了通知）を、まとめて上位システム（ここではCPU１００１）に通知する。
【００８１】
一方、エラーIDが０より大きくない場合（ＳＴ１１０：ＮＯ）、つまり、ＳＴ１０７で完了通知を受け取った転送データの転送が、復帰させたDMAパラメータを用いた転送でない場合は、ＳＴ１１２に進む。この場合、完了通知遅延制御部１１２１は、その転送データよりも前にエラーが発生したDMAパラメータを用いたデータ転送が正常に完了していないと判断する。つまり、上記エラーが発生したDMAパラメータは、ＳＴ１０７で完了通知を受け取った転送データに用いられたDMAパラメータよりも設定順がより早いDMAパラメータである。そこで、ＳＴ１１２において、完了通知遅延制御部１１２１は、ＳＴ１０７で完了通知を受け取った転送データの完了通知をCPU１００１に通知することなく、完了通知キュー２１２６にキューイングしたままとする。
【００８２】
次に、図４に示すデータ転送の完了通知処理の一例について説明する。以下の説明は、図２に示す完了判定部１２０３が、ＳＴ１０７においてNo.(6)の転送データに対応する完了通知を受け取った場合についての説明である。この場合、完了通知キュー２１２６には、No.(1)の転送データに対応する完了通知が、キューイングされている。No.(1)の転送データに対応する完了通知は、No.(6)の転送データに対応する完了通知と同一DMAチャネル（ch1）である。また、No.(1)の転送データに対応する完了通知は、キューNo.がキューNo.(6)よりも小さく、「処理結果」がエラーである完了通知である（ＳＴ１０８：ＹＥＳ）。また、キューNo.(6)の転送データのエラーIDは、１（ＳＴ１１０：ＹＥＳ）である。よって、完了通知遅延制御部１１２１は、No.(6)の転送データ（エラーID=1）が、No.(1)の転送データ（エラーID＝１）で用いたDMAパラメータを復帰させて転送された転送データであると判断する。そして、完了通知遅延制御部１１２１は、図３に示すキューNo.(1)〜No.(3)の転送データに対応する完了通知（キューイング中の完了通知）を、上位システム（CPU１００１）に通知する（ＳＴ１１１）。
【００８３】
次に、以下では、「処理結果」がエラーである転送データの転送時から、その転送時に用いたDMAパラメータを復帰させて行うデータ転送が正常に完了するまでの間の期間において、次の場合に実施される処理を説明する。次の場合とは、上記DMAパラメータと異なるDMAパラメータを用いたデータ転送における「処理結果」がエラーである場合である。つまり、ここでは、図４に示すＳＴ１１０において、同一DMAチャネルに複数のエラーIDが付与されている場合について、説明する。ただし、ここでは、同一DMAチャネルにおける動作についてのみ説明する。また、ここでは、「処理結果」がエラーである転送データの転送は、第１データ転送と称する。また、第１データ転送時に用いたDMAパラメータは、第１DMAパラメータと称する。また、第１DMAパラメータと異なるDMAパラメータは、第２DMAパラメータと称する。また、第２DMAパラメータを用いたデータ転送は、第２データ転送と称する。
【００８４】
完了通知遅延制御部１１２１には、第１データ転送と第２データ転送との間において、第１DMAパラメータ及び第２DMAパラメータの双方と異なる他のDMAパラメータを用いた、「処理結果」が正常であるデータ転送の完了通知が通知される。なお、ここで通知された完了通知は、第１完了通知と称する。第１完了通知は、例えば、図３に示すNo.(2)及びNo.(3)の転送データの完了通知である。また、完了通知遅延制御部１１２１には、次の期間において、第１DMAパラメータ及び第２DMAパラメータの双方と異なる他のDMAパラメータを用いた、「処理結果」が正常であるデータ転送の完了通知が通知される。次の期間とは、第２データ転送時から第１DMAパラメータを復帰させて行うデータ転送が正常に完了するまでの期間である。なお、ここで通知された完了通知は、第２完了通知と称する。第２完了通知は、例えば、図３に示すNo.(5)とNo.(6)との間に存在する転送データの完了通知（図示せず）である。完了通知遅延制御部１１２１は、第１完了通知と第２完了通知とを識別可能にして待機させる。
【００８５】
次いで、第１DMAパラメータを復帰させて行うデータ転送は、正常に完了したとする（図３に示すNo.(6)のデータ転送時）。この場合、完了通知遅延制御部１１２１は、第１DMAパラメータを用いたデータ転送の完了通知（つまり、図３に示すNo.(6)に対応するNo.(1)の転送データの完了通知）と第１完了通知とを、CPU１００１に通知する。
【００８６】
次いで、第２DMAパラメータを復帰させて行うデータ転送は、正常に完了したとする（図３に示すNo.(6)のデータ転送よりも後のデータ転送時（図示せず））。この場合、完了通知遅延制御部１１２１は、第２DMAパラメータを用いたデータ転送の完了通知（図３に示すNo.(5)の転送データの完了通知）と第２完了通知とを、CPU１００１に通知する。
【００８７】
これにより、完了通知遅延制御部１１２１は、上位システム（CPU１００１）で設定された複数のDMAパラメータを用いたデータ転送の完了通知を、複数のDMAパラメータの設定順に上位システムへ通知することが可能となる。
【００８８】
次に、データ転送制御装置１００４におけるデータ転送の完了通知処理の一例について説明する。
【００８９】
以下の説明では、図５に示すように、DMAパラメータ１，２，３，４，５，…が、CPU１００１で設定される。よって、データ転送制御装置１００４は、DMAパラメータ１，２，３，４，５，…を設定順に用いて、転送元１００２から入力されるデータを転送先１００３に転送する。また、図５に示すように、データ転送制御装置１００４のDMAパラメータ退避制御部１１１２は、DMAパラメータを一時的に退避させるための退避資源０及び１を備える。また、完了通知遅延制御部１１２１は、転送データの完了通知を一時的に待機（ウェイト）させるための完了通知資源を備える。また、図５に示すように、データ転送制御装置１００４は、DMAパラメータ設定及びDMA起動要求をキューイングすることにより、前のデータ転送が完了次第、次のデータ転送を開始する。また、以下の説明では、同一のDMAチャネルにおいてDMAパラメータ１〜５を用いるものとする。
【００９０】
図５に示すように、まず、データ転送制御装置１００４は、DMAパラメータ１を用いて、転送元１００２から入力されるデータを転送する。このとき、図５に示すように、DMAパラメータ保持部１１１４は、DMAパラメータ１をDMAパラメータ退避制御部１１１２の退避資源０に退避させる。また、データ処理部１２０１は、転送元１００２から入力される転送データ（DMAパラメータ１）に対してエラーチェック等のデータ処理を行い、「処理結果」が正常（OK）であると判定する。
【００９１】
次いで、データ転送制御装置１００４は、DMAパラメータ２を用いて、転送元１００２から入力されるデータを転送する。このとき、図５に示すように、DMAパラメータ保持部１１１４は、DMAパラメータ２をDMAパラメータ退避制御部１１１２の退避資源１に退避させる。また、データ処理部１２０１は、転送元１００２から入力される転送データ（DMAパラメータ２）に対してエラーチェック等のデータ処理を行い、「処理結果」がエラー（NG）であると判定する。
【００９２】
ここで、図５に示すように、転送先１００３においてDMAパラメータ１を用いたデータ受信処理が完了すると、完了判定部１２０３は、転送先１００３から、DMAパラメータ１を用いたデータ転送の完了通知を受け取る。このとき、完了通知遅延制御部１１２１は、DMAパラメータ１を用いたデータ転送の完了通知をCPU１００１にそのまま出力（転送完了割込）する。完了通知をそのまま出力する理由は、DMAパラメータ１を用いたデータ転送の「処理結果」が正常であり、かつ、「処理結果」がエラーである完了通知が完了通知資源（完了通知キュー２１２６）にキューイングされていないためである。更に、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２の退避資源０に退避されたDMAパラメータ１を解放するように指示する。
【００９３】
次いで、データ転送制御装置１００４は、DMAパラメータ３を用いて、転送元１００２から入力されるデータを転送する。このとき、図５に示すように、DMAパラメータ保持部１１１４は、DMAパラメータ３をDMAパラメータ退避制御部１１１２の退避資源０に退避させる。また、データ処理部１２０１は、転送元１００２から入力される転送データ（DMAパラメータ３）に対してエラーチェック等のデータ処理を行い、「処理結果」が正常（OK）であると判定する。
【００９４】
次いで、図５に示すように、転送先１００３においてDMAパラメータ２を用いたデータ受信処理が完了すると、完了判定部１２０３は、転送先１００３から、DMAパラメータ２を用いたデータ転送の完了通知を受け取る。このとき、完了通知遅延制御部１１２１は、「処理結果」がエラー（NG）であるので、当該完了通知を破棄する。ただし、このとき、破棄された完了通知に対応する転送データに関する情報は、完了通知キュー２１２６にキューイングされる。なお、転送データに関する情報とは、例えば、図３に示すNo.(1)、No.(4)及びNo.(5)の転送データ（処理結果：エラー）に関する情報である。
【００９５】
また、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２の退避資源１に退避されたDMAパラメータ２を解放せずに、復帰させるように指示する。これにより、データ転送制御装置１００４は、図５に示すように、既に実施されているDMAパラメータ３を用いたデータ転送が完了次第、復帰させたDMAパラメータ２を用いたデータ転送を行う。このとき、データ処理部１２０１は、転送元１００２から入力される転送データ（DMAパラメータ２）に対してエラーチェック等のデータ処理を行い、「処理結果」が正常（OK）であると判定する。
【００９６】
ここで、図５に示すように、転送先１００３においてDMAパラメータ３を用いたデータ受信処理が完了すると、完了判定部１２０３は、転送先１００３から、DMAパラメータ３を用いたデータ転送の完了通知を受け取る。このとき、完了通知遅延制御部１１２１では、同一DMAチャネルにおいて、受け取った完了通知に対応する転送データで用いたDMAパラメータ３よりも前の転送に用いられたDMAパラメータ２でエラーが、発生している。このため、完了通知遅延制御部１１２１は、受け取った完了通知（DMAパラメータ３）を完了通知資源で待機（ウェイト）させる。なお、この場合、次のDMA転送には、DMAパラメータ３よりも設定順がより早いDMAパラメータ２が用いられる。また、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２の退避資源０に退避されたDMAパラメータ３を解放するように指示する。
【００９７】
次いで、図５に示すように、転送先１００３では、DMAパラメータ２（復帰させたDMAパラメータ）を用いたデータ受信処理が完了する。転送先１００３でデータ受信処理が完了すると、完了判定部１２０３は、転送先１００３から、DMAパラメータ２を用いたデータ転送の完了通知を受け取る。このとき、完了通知遅延制御部１１２１は、DMAパラメータ２を用いたデータ転送の「処理結果」が正常であり、復帰させたDMAパラメータによるデータ転送の完了通知を受け取る。これにより、完了通知遅延制御部１１２１は、受け取った完了通知（DMAパラメータ２）及び完了通知資源にキューイング中の転送データの完了通知（DMAパラメータ３）を、まとめて上位システム（ここではCPU１００１）に通知する。そして、DMAパラメータ復帰制御部１１２２は、DMAパラメータ退避制御部１１１２の退避資源１に退避されたDMAパラメータ２を解放するように指示する。
【００９８】
なお、図５に示すDMAパラメータ４及びDMAパラメータ５を用いたデータ転送は、上記と同様である。
【００９９】
このようにして、データ転送制御装置１００４は、使用しているDMAパラメータを一時的に退避させ、転送データのエラーを検出した際には、エラーが検出された転送データで用いたDMAパラメータを復帰させて後続のデータ転送に用いる。例えば、図５では、データ転送制御装置１００４は、エラーが検出された転送データで用いたDMAパラメータ２を再利用（復帰）して後続のデータ転送を実行する。これにより、転送先１００３では、エラーデータを後続のデータで上書きすることで、エラーデータの破棄を実現できる。
【０１００】
更に、データ転送制御装置１００４は、転送データのエラーを検出した際に後続のデータ転送が既に実行されている場合には、当該後続のデータ転送の完了通知を、待機させる。具体的には、データ転送制御装置１００４は、当該後続のデータ転送の完了通知を、エラーを検出したデータ転送で用いたDMAパラメータを再利用したデータ転送が正常に完了するまで、待機（ウェイト）させるキューイング機構を備える。例えば、図５では、データ転送制御装置１００４は、エラーを検出した、DMAパラメータ２を用いたデータ転送が正常に完了するまで、後続のDMAパラメータ３を用いたデータ転送の完了通知を待機（ウェイト）させる。
【０１０１】
ここで、上位システム（CPU１００１）では、或るDMAパラメータを用いたデータ転送の正常完了を示す完了通知を受け取ると、そのDMAパラメータを用いたデータ転送よりも前のデータ転送についても正常完了したと認識する。これに対して、データ転送制御装置１００４では、エラーが発生したDMAパラメータを用いたデータ転送が、正常に完了するまで後続のデータ転送の完了通知が待機（ウェイト）される。これにより、上位システムでは、エラーが発生したデータ転送よりも後続のデータ転送が先に正常完了した場合でも、エラーが発生したDMAパラメータを用いたデータ転送（未完了）が正常完了したと誤認識することを防ぐことができる。すなわち、上位システム（CPU１００１）には、上位システムで設定されたDMAパラメータの設定順でデータ転送が正常に完了したことを示す完了通知が入力される。
【０１０２】
このようにして、データ転送制御装置１００４は、DMAパラメータ設定及びDMA起動要求をキューイングすることにより、データ転送の効率を向上させることができる。また、データ転送制御装置１００４は、エラーを検出したデータ転送で用いたDMAパラメータを再利用したデータ転送が正常に完了するまで、後続のデータ転送の完了通知を待機（ウェイト）させる。このことにより、データ転送制御装置１００４は、上位システムでのデータ転送状況の誤認識を防止しつつ、転送先１００３でのエラーデータの破棄を実現することができる。
【０１０３】
よって、本実施の形態によれば、転送されるデータのエラー検出を行うDMA転送において、エラーデータを破棄しつつ、データ転送効率を向上させることができる。
【０１０４】
例えば、本実施の形態に係るデータ転送制御装置は、SDIOインタフェース対応の無線LANモジュール、USBインタフェース対応機器、及び、SDXC対応のメモリカード等との間のデータ転送を効率化することが可能となる。
【０１０５】
（実施の形態２）
実施の形態１では、エラーが発生し破棄された完了通知に対応するデータ転送に用いたDMAパラメータを復帰させ、転送が正常に完了するまでの間、後続の別のDMAパラメータを用いたデータ転送の完了通知（正常完了）が待機させられる。ここで、エラーが発生し、破棄された完了通知に対応するデータ転送に用いたDMAパラメータは、DMAパラメータAと称する。このとき、別のDMAパラメータを用いたデータ転送の完了通知（正常完了）を待機（ウェイト）させる期間が長くなると、システム全体の応答性に問題が生じる可能性がある。別のDMAパラメータを用いたデータ転送の完了通知を待機させる期間が長くなる場合は、復帰させたDMAパラメータAを用いたデータ転送において再度エラーが発生した場合等が挙げられる。
【０１０６】
そこで、本実施の形態２に係るデータ転送制御装置は、エラー発生の状況に応じてエラー割込を上位システムに通知するようにしたものである。
【０１０７】
図６は、本実施の形態２に係るデータ転送システムの構成を示す。図６に示すデータ転送制御装置１００５において、チャネル制御部１１００のDMAパラメータ管理部１１５０は、実施の形態１（図１に示すDMAパラメータ管理部１１１０）の構成と異なる。具体的には、DMAパラメータ管理部１１５０は、図１に示すDMAパラメータ管理部１１１０の構成に加え、上限設定レジスタ１１５１、及び、統計情報レジスタ１１５２を更に備える。
【０１０８】
上限設定レジスタ１１５１は、完了通知遅延制御部１１６１（後述する）において、完了通知を待機（ウェイト）させる期間を判断する判断パラメータの上限設定値を保持する。なお、上限設定値は、CPU１００１からアドレスデコーダ１１１１を介して通知される。完了通知遅延制御部１１６１（後述する）において、完了通知を待機（ウェイト）させる期間の判断基準の一例としては、次のものが挙げられる。すなわち、判断基準は、或るDMAパラメータを用いたデータ転送でエラーを検出してからの時間、完了通知遅延制御部１１６１で待機（ウェイト）させられている完了通知の数、又は、各DMAチャネルにおけるエラーの発生回数等である。
【０１０９】
統計情報レジスタ１１５２は、統計情報管理部１１６３（後述する）において算出された、データ処理部１２０１での処理結果の統計情報を保持する。処理結果の統計情報としては、例えば、エラー回数、エラー発生率等がある。CPU１００１は、アドレスデコーダ１１１１に対して、統計情報レジスタ１１５２で保持されている統計情報を、デバッグ及び解析のために読み出す要求を通知する。このとき、アドレスデコーダ１１１１は、統計情報レジスタ１１５２で保持されている統計情報を選択してCPU１００１に出力する。
【０１１０】
また、図６に示すデータ転送制御装置１００５において、チャネル制御部１１００の完了通知制御部１１６０は、実施の形態１（図１に示す完了通知制御部１１２０）の構成と異なる。具体的には、完了通知制御部１１６０は、図１に示す完了通知制御部１１２０の構成に加え、エラー割込制御部１１６２、及び、統計情報管理部１１６３を更に備える。
【０１１１】
完了通知制御部１１６０において、完了通知遅延制御部１１６１は、実施の形態１（完了通知遅延制御部１１２１）と同様の処理を行う。それに加え、完了通知遅延制御部１１６１は、完了通知をウェイトさせる期間を判断する判断パラメータを測定する。例えば、判断パラメータは、或るDMAパラメータを用いたデータ転送でエラーを検出してから、エラーを検出したデータ転送に用いられたDMAパラメータを復帰させて行うデータ転送が正常に完了するまでの時間である。または、判断パラメータは、完了通知遅延制御部１１６１でウェイトされている完了通知の数、又は、各DMAチャネルにおけるエラーの発生回数等である。また、完了通知遅延制御部１１６１は、エラー割込制御部１１６２がエラー割込要求を上位システム（CPU１００１）に通知した場合、そのエラー割込要求の通知後に受け取る完了通知を破棄する。
【０１１２】
エラー割込制御部１１６２は、完了通知遅延制御部１１６１から入力される判断パラメータと、上限設定レジスタ１１５１が保持する、判断パラメータの上限設定値とを比較する。そして、エラー割込制御部１１６２は、比較結果に基づいて、上位システム（ここではCPU１００１）へのエラー割込要求の出力を制御する。具体的には、判断パラメータが上限設定値より小さい場合には、エラー割込制御部１１６２は、エラー割込みを行わない。すなわち、完了通知遅延制御部１１６１では、データ転送の正常完了を示す完了通知が待機（ウェイト）し続ける。一方、判定パラメータが上限設定値に到達した場合には、エラー割込制御部１１６２は、エラー割込みを行う。
【０１１３】
統計情報レジスタ１１５２は、データ処理部１２０１での処理結果の統計情報（例えば、エラー回数、エラー発生率等）を算出し、算出した統計情報を統計情報レジスタ１１５２に出力する。
【０１１４】
次に、完了通知制御部１１６０における完了通知のエラー割込制御処理の詳細について説明する。以下では、完了通知のエラー割込制御処理のケース１〜ケース３について説明する。
【０１１５】
＜ケース１＞
ケース１では、データ転送制御装置１００５は、完了通知を待機（ウェイト）させる期間を判断する判断パラメータとして、データ処理部１２０１での処理結果としてエラーが検出されてからの時間を用いる。
【０１１６】
つまり、上限設定レジスタ１１５１は、データ処理部１２０１での処理結果としてエラーが検出された時点から、完了通知遅延制御部１１６１において完了通知を待機（ウェイト）させることが可能な時間の上限設定値を保持する。
【０１１７】
図７は、完了通知遅延制御部１１６１の内部構成、及び、エラー割込制御部１１６２の内部構成を示す。
【０１１８】
まず、完了通知遅延制御部１１６１の内部構成について説明する。図７に示すように、完了通知遅延制御部１１６１は、実施の形態１（完了通知遅延制御部１１２１）の構成に加え、エラータイマー４１２８を備える。
【０１１９】
エラータイマー４１２８は、次の場合、エラー検出時からの時間を計測する。次の場合とは、データ処理部１２０１から入力される処理結果がエラーの場合である。かつ、そのエラーに対応する完了通知が、完了通知キュー２１２６にキューイングされる、「処理結果」がエラーである最初の完了通知の場合である。
【０１２０】
ただし、次の期間において別のDMAパラメータを用いたデータ転送においてエラーが発生する場合もあり得る。次の期間とは、データ処理部１２０１でエラーが検出されてから、そのエラーを検出したデータ転送に用いられたDMAパラメータを復帰させて行うデータ転送が正常に完了するまでの間の期間である。そこで、エラータイマー４１２８は、次の場合、計測値をリセットして、時間の計測を開始する。次の場合とは、先にエラーが検出されたデータ転送で用いたDMAパラメータを復帰させて行うデータ転送が正常に完了した時点で、計測値（判定パラメータ）が上限設定値に到達していない場合である。すなわち、次の場合とは、エラー割込が発生しない場合である。
【０１２１】
ここでは、例えば、完了通知キュー２１２６の状態が図３である場合について説明する。
【０１２２】
図３では、エラータイマー４１２８は、キューイングされている、「処理結果」がエラーである完了通知の内、最初のエラーを検出した時点で、時間の計測を開始する。つまり、エラータイマー４１２８は、図３に示すNo.(1)の転送データに対する処理結果（エラー）が入力された時点で、時間の計測を開始する。
【０１２３】
エラータイマー４１２８は、最初にキューイングされている「処理結果：エラー」と同一のDMAチャネル（ch1）、及び同一エラーID（エラーID=1）の転送データの転送が正常に完了した時点で、時間の計測を停止（リセット）する。この場合の転送データとは、復帰したDMAパラメータを用いた転送データである。この転送データは、例えば、図３に示すNo.(6)の転送データである。このように、エラータイマー４１２８は、エラーが検出されてから、エラーが検出されたデータ転送に用いられたDMAパラメータを復帰させて行うデータ転送が正常に完了するまでの期間を計測する。
【０１２４】
また、図３では、DMAチャネル１（ch1）、エラーID＝１の転送データの転送が正常に完了した時点（No.(6)）で、別のDMAパラメータを用いたデータ転送におけるエラーが発生（No.（4）及び(5)）している。そこで、エラータイマー４１２８は、No.(6)の転送データの処理結果（正常）が入力されると、計測時間をリセットするとともに、再度時間の計測を開始する。
【０１２５】
次に、エラー割込制御部１１６２の内部構成について説明する。図７に示すエラー割込制御部１１６２は、比較部４１３１及びエラー割込生成部４１３２を備える。
【０１２６】
比較部４１３１は、エラータイマー４１２８から入力される計測値と、上限設定レジスタ１１５１が保持する上限設定値とを比較する。そして、比較部４１３１は、比較結果をエラー割込生成部４１３２に出力する。
【０１２７】
エラー割込生成部４１３２は、計測値が上限設定値より小さい比較結果（計測値＜上限設定値）が比較部４１３１から入力される場合、何もしない。一方、エラー割込生成部４１３２は、計測値が上限設定値に到達した比較結果（計測値＝上限設定値）が比較部４１３１から入力される場合、エラー割込要求を生成し、上位システム（ここではCPU１００１）に出力する。
【０１２８】
実施の形態１と同様に上位システム（CPU１００１）で設定されたDMAパラメータの設定順で正常なデータ転送を行う場合、データ転送制御装置１００５は、次のことを上位システム（CPU１００１）に通知することができる。すなわち、データ転送制御装置１００５は、正常に完了したデータ転送の完了通知が、他のデータ転送におけるエラーの発生により待機（ウェイト）させられることで、データ転送が滞っていることを通知することができる。つまり、上位システム（CPU１００１）は、データ転送制御装置１００５でデータ転送が滞っていることを検出することが可能となる。
【０１２９】
なお、図７は、エラータイマー４１２８を１つだけ備えるケースを記載している。しかし、データ転送制御装置１００５は、これに限らず、エラータイマー４１２８を複数備えて、複数のエラーに対してエラー発生によるデータ転送の滞り具合を確認するようにしてもよい。
【０１３０】
＜ケース２＞
ケース２では、データ転送制御装置１００５は、完了通知を待機（ウェイト）させる期間を判断する判断パラメータとして、完了通知遅延制御部１１６１で待機（ウェイト）させられている完了通知の数を用いる。
【０１３１】
つまり、上限設定レジスタ１１５１は、完了通知遅延制御部１１６１において待機（ウェイト）させることが可能な完了通知の数の上限設定値を保持する。
【０１３２】
図８は、完了通知遅延制御部１１６１の内部構成、及び、エラー割込制御部１１６２の内部構成を示す。図８に示す完了通知遅延制御部１１６１において、エラータイマー４１２８の代わりに、ウェイト数カウンタ５１２８が備えられる点がケース１と異なる。
【０１３３】
図８において、ウェイト数カウンタ５１２８は、次の場合、ウェイト数カウンタをリセットする。次の場合とは、データ処理部１２０１から入力される処理結果がエラーの場合、かつ、そのエラーに対応する完了通知が、完了通知キュー２１２６でキューイングされる、「処理結果」がエラーである最初の完了通知の場合である。そして、ウェイト数カウンタ５１２８は、次の期間において、別のDMAパラメータを用いたデータ転送が正常に完了した数をカウントする。次の期間とは、エラーが検出されてから、そのエラーを検出したデータ転送に用いられたDMAパラメータを復帰させて行うデータ転送が正常に完了するまでの間の期間である。また、別のDMAパラメータを用いたデータ転送が正常に完了した数は、完了通知遅延制御部１１６１で待機（ウェイト）させられている完了通知の数である。
【０１３４】
ここでは、例えば、完了通知キュー２１２６の状態が図３である場合について説明する。
【０１３５】
図３では、ウェイト数カウンタ５１２８は、次の期間において、キューイングされている「処理結果」がエラーである完了通知の内、完了通知キュー２１２６にキューイングされた、「処理結果」が正常である完了通知の数をカウントする。次の期間とは、最初のエラーを検出した時点から、最初にキューイングされた「処理結果：エラー」と同一のDMAチャネル（ch1）、及び同一エラーID（エラーID＝1）の転送データの転送が、正常に完了した時点までの期間である。最初のエラーを検出した時点は、例えば、図３に示すNo.(1)の転送データに対する処理結果（エラー）が入力された時点である。また、この場合の転送データとは、復帰したDMAパラメータを用いた転送データである。この転送データは、例えば、図３に示すNo.(6)の転送データである。つまり、図３では、ウェイト数カウンタ５１２８は、No.(2)の転送データ及びNo.(3)の転送データの２つの完了通知をカウントする。
【０１３６】
そして、エラー割込制御部１１６２は、ウェイト数カウンタ５１２８でカウントされた完了通知の数が、上限設定レジスタ１１５１に予め設定された上限設定値に到達した場合、エラー割込要求を上位システム（CPU１００１）に通知する。
【０１３７】
上位システム（CPU１００１）で設定されたDMAパラメータの設定順で正常なデータ転送を行う場合、ケース１と同様、データ転送制御装置１００５は、次のことを上位システム（CPU１００１）に通知することができる。すなわち、データ転送制御装置１００５は、正常に完了したデータ転送の完了通知が、他のデータ転送におけるエラーの発生により待機（ウェイト）させられることでデータ転送が、滞っていることを通知することができる。つまり、上位システム（CPU１００１）は、データ転送制御装置１００５でデータ転送が滞っていることを検出することが可能となる。
【０１３８】
更に、完了通知キュー２１２６でキューイング可能な完了通知の数には限りがある。このため、データ転送制御装置１００５は、完了通知キュー２１２６でキューイング可能な数に到達したこと（又は到達する恐れがあること）を、上位システムに通知することが可能となる。
【０１３９】
なお、図８は、ウェイト数カウンタ５１２８を１つだけ備えるケースを記載している。しかし、データ転送制御装置１００５は、これに限らず、ウェイト数カウンタ５１２８を複数備えて、複数のエラーに対してエラー発生によるデータ転送の滞り具合を確認するようにしてもよい。
【０１４０】
＜ケース３＞
ケース３では、データ転送制御装置１００５は、完了通知を待機（ウェイト）させる期間を判断する判断パラメータとして、データ処理部１２０１で検出されるエラーの発生回数を用いる。
【０１４１】
つまり、上限設定レジスタ１１５１は、データ処理部１２０１で検出されるエラーの発生回数の上限設定値を保持する。
【０１４２】
図９は、完了通知遅延制御部１１６１の内部構成、及び、エラー割込制御部１１６２の内部構成を示す。図９に示す完了通知遅延制御部１１６１において、エラータイマー４１２８の代わりに、エラーカウンタ６１２８が備えられる点がケース１と異なる。
【０１４３】
図９において、エラーカウンタ６１２８は、データ処理部１２０１から入力される処理結果がエラーの場合、エラーカウント数をインクリメントする。一方、エラーカウンタ６１２８は、次の場合、エラーカウント数をデクリメントする。次の場合とは、完了通知キュー２１２６にキューイングされている、「処理結果：エラー」と同一DMAチャネル、同一エラーIDかつ「処理結果」が正常である完了通知が入力される場合である。つまり、次の場合とは、復帰させたDMAパラメータを用いたデータ転送の完了通知（正常）が入力される場合である。
【０１４４】
ここでは、例えば、完了通知キュー２１２６の状態が図３である場合について説明する。
【０１４５】
図３において、「処理結果」がエラーである転送データは、No.(1)、No.(4)、及びNo.(5)の転送データである。そこで、エラーカウンタ６１２８は、これらの「処理結果」がエラーである転送データに対応する完了通知が入力される度にエラーカウント数をインクリメントする。
【０１４６】
また、エラーカウンタ６１２８は、次の場合に、エラーカウント数をデクリメントする。次の場合とは、キューイングされている「処理結果：エラー」の転送データと同一のDMAチャネル（ch1）、及び同一のエラーID（エラーID=1）である。かつ、「処理結果」が正常である転送データに対応する完了通知が、正常な「処理結果」として入力される場合である。つまり、復帰したDMAパラメータを用いた転送データに対応する完了通知が入力される場合である。ここで、キューイングされている「処理結果：エラー」の転送データは、例えば、図３に示すNo.(1)の転送データである。また、図３において、No.(1)の転送データと同一のDMAチャネル（ch1）及びエラーID（エラーID=1）であり、「処理結果」が正常である転送データは、No.(6)の転送データである。
【０１４７】
そして、エラー割込制御部１１６２は、エラーカウンタ６１２８でカウントされたエラーカウント数が、上限設定レジスタ１１５１に予め設定された上限設定値に到達した場合、エラー割込要求を上位システム（CPU１００１）に通知する。
【０１４８】
上位システム（CPU１００１）で設定されたDMAパラメータの設定順で正常なデータ転送を行う場合、ケース１及びケース２と同様、データ転送制御装置１００５は、次のことを上位システム（CPU１００１）に通知することができる。すなわち、データ転送制御装置１００５は、正常に完了したデータ転送の完了通知が、他のデータ転送におけるエラーの発生により待機（ウェイト）させられることでデータ転送が、滞っていることを通知することができる。つまり、上位システム（CPU１００１）は、データ転送制御装置１００５でデータ転送が滞っていることを検出することが可能となる。
【０１４９】
更に、データ転送制御装置１００５は、次の場合に、転送元１００２とデータ転送制御装置１００５との間の通信状況が悪化しエラーが頻発する状況を、上位システム（CPU１００１）に通知することが可能となる。次の場合とは、SDIOインタフェースに対応した無線LANデバイス（転送元１００２）からの受信パケットに対するチェックサムエラーが、検出される場合である。
【０１５０】
なお、図９は、エラーカウンタ６１２８を１つだけ備えるケースを記載している。しかし、データ転送制御装置１００５は、これに限らず、エラーカウンタ６１２８を複数備えて、複数のエラーに対してエラー発生によるデータ転送の滞り具合を確認するようにしてもよい。
【０１５１】
以上、完了通知のエラー割込制御処理のケース１〜ケース３について説明した。
【０１５２】
次に、データ転送制御装置１００５におけるデータ転送の完了通知処理の流れについて説明する。ここでは、一例として、ケース３（エラー発生回数に基づくエラー割込み処理を行う場合）について説明する。
【０１５３】
図１０は、データ転送制御装置１００５におけるデータ転送の完了通知処理の流れを示すフローチャートである。なお、図１０において、実施の形態１（図４）と同一の処理については同じ符号を用い、説明を省略する。
【０１５４】
図１０に示すＳＴ１０３において、転送データの処理結果がエラーの場合（ＳＴ１０３：ＮＯ）は、ＳＴ２０１に進む。ＳＴ２０１において、データ転送制御装置１００５（エラーカウンタ６１２８）は、エラーカウント数ErrCntをインクリメントする。また、データ転送制御装置１００５（DMAパラメータ復帰制御部１１２２）は、実施の形態１と同様、DMAパラメータ退避制御部１１１２に対して、処理結果がエラーである転送データに用いたDMAパラメータの復帰要求を通知する。これは、処理結果がエラーである転送データに用いたDMAパラメータを復帰させて再度データ転送を行うためである。
【０１５５】
ＳＴ２０２において、データ転送制御装置１００５（比較部４１３１）は、エラーカウンタ６１２８でカウントされたエラーカウント数ErrCntと、上限設定レジスタ１１５１が保持する上限設定値とを比較する。そして、比較部４１３１は、比較結果に基づいて、ErrCntが上限設定値に到達したか否か（ErrCnt＝上限設定値であるか否か）を判断する。
【０１５６】
ErrCntが上限設定値に到達した場合（ＳＴ２０２：ＹＥＳ）は、ＳＴ２０３に進む。ＳＴ２０３において、データ転送制御装置１００５（エラー割込生成部４１３２）は、上位システム（ここではCPU１００１）に対してエラー割込要求を出力する。ErrCntが上限設定値に到達していない場合（ＳＴ２０２：ＮＯ）は、エラー割込生成部４１３２は何もせずに、ＳＴ１０５の処理に進む。
【０１５７】
また、エラーIDが０より大きい場合（ＳＴ１１０：ＹＥＳ）は、ＳＴ２０４に進む。ここで、エラーIDが０より大きい場合（ＳＴ１１０：ＹＥＳ）は、ＳＴ１０７で完了通知を受け取った転送データの転送が復帰させたDMAパラメータを用いたデータ転送である場合である。ＳＴ２０４において、データ転送制御装置１００５（エラーカウンタ６１２８）は、エラーカウント数ErrCntをデクリメントする。
【０１５８】
このようにして、本実施の形態によれば、データ転送制御装置１００５は、実施の形態１と同様、DMAパラメータ設定及びDMA起動要求をキューイングする。また、データ転送制御装置１００５は、実施の形態１と同様、エラーを検出したデータ転送で用いたDMAパラメータを復帰させて再利用したデータ転送が正常に完了するまで、後続のデータ転送の完了通知を待機（ウェイト）させる。これにより、データ転送制御装置１００５は、転送されるデータのエラー検出を行うDMA転送において、エラーデータを破棄しつつ、データ転送効率を向上させることができる。
【０１５９】
更に、データ転送制御装置１００５は、エラー発生の状況に応じてエラー割込要求を上位システムに通知し、かつ、エラー割込要求の通知後に受け取った完了通知を破棄する。これにより、データ転送エラーが頻発する場合でも、上位システムは、データ転送制御装置１００５でデータ転送が滞っていることを検出することが可能となる。
【０１６０】
以上、本発明の各実施の形態について説明した。
【０１６１】
なお、上記実施の形態では、完了通知キュー２１２６（図３）のように、全てのDMAチャネルに対して共通のキューを用いる場合について説明した。しかし、本発明では、データ転送制御装置は、例えば、図１１に示すように、DMAチャネル毎に個別のキューを備えてもよい。
【０１６２】
また、上記実施の形態では、データ転送制御装置のDMAパラメータ退避制御部１１１２は、上位システムで設定されたDMAパラメータ全てを退避資源に退避させる場合について説明した。しかし、本発明では、データ転送制御装置のDMAパラメータ退避制御部１１１２は、上位システムで設定された複数のDMAパラメータの内、データ転送に伴い更新されたDMAパラメータのみを、退避資源に退避させてもよい。
【０１６３】
また、上記実施の形態では、上位システムがCPUである場合について説明した。しかし、上位システムは、CPUに限らず、例えば、シーケンサでもよい。図１２は、シーケンサを上位システムとするデータ転送システムの構成例を示す。図１２において、シーケンサ３００５は、CPU１００１が設定したディスクリプタに従って、周辺IF、及び、データ転送制御装置１００４（又はデータ転送制御装置１００５）を制御する。周辺IFは、例えば、SDIOインタフェース３００６、及びUSBインタフェース３００７等である。データ転送制御装置１００４は、シーケンサ３００５がディスクリプタをFIFOにより１つずつ更新するポインタで管理している場合、データ転送の完了通知（転送完了割込）を個別に１つずつシーケンサ３００５に通知する。また、シーケンサ３００５は、CPU１００１で設定されたディスクリプタに基づいて、データ転送制御装置１００４の各DMAパラメータを設定する。なお、図１２は、ディスクリプタがシーケンサ３００５に設定される場合について図示している。しかし、CPU１００１は、ディスクリプタをDRAM３３０４に格納してもよい。そして、シーケンサ３００５は、データ転送制御装置１００４のDMAチャネルを用いて、ディスクリプタを、DRAM３３０４からシーケンサ３００５の内部のローカルメモリ領域へ転送してもよい。
【０１６４】
また、上記実施の形態に係るデータ転送制御装置を含むデータ転送システムは、例えば、図１３に示すように、記憶領域間の複数のデータ転送を行うような集積回路製品等に有効である。記憶領域間は、例えば、WLANモジュール３００２、USBコネクタ８３０３と、DRAM３３０４との間である。また、集積回路製品は、例えば、LSI３３０１を含む回路基盤９０１である。また、上記実施の形態に係るデータ転送制御装置を含むデータ転送システムは、例えば、デジタル家電製品、パーソナルコンピュータ、及び、携帯端末（例えば、図１３に示す携帯電話９１２）等に有効である。デジタル家電製品は、例えば、図１３に示すように、デジタルテレビ９１０、放送受信装置（蓄積再生装置）９１１、デジタルカメラムービー９１３、車載端末９１４、及び自動車９１５等である。
【０１６５】
また、DMAパラメータは、DMAコマンドと称されることもある。
【０１６６】
また、本実施の形態で説明した各手段は、典型的には集積回路であるＬＳＩ（Large Scale Integration）により構成される。これら各手段は、個別に１チップ化されていてもよいし、一部又は全てを含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いによりＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法は、ＬＳＩに限るものではなく、専用回路または汎用プロセッサにより行ってもよい。本実施の形態では、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）を利用して各部を厚生してもよい。また、本実施の形態では、ＬＳＩ内部の回路セルの接続や設定を再構成可能なコンフィギュラブル・プロセッサを利用して各部を構成してもよい。さらには、本実施の形態は、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術により各部の集積化を行ってもよい。本実施の形態は、例えば、バイオ技術を適用することによって集積化を行ってもよい。
【０１６７】
２０１０年７月２７日出願の特願２０１０−１６８２１７の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
【産業上の利用可能性】
【０１６８】
本発明は、複数のデータ転送を実行する場合において効率的な転送制御が実現できる。特に、本発明は、各データ転送において転送サイズが異なる場合、及び、データ転送に異常が発生し繰り返し同一転送を行う場合、従来技術に比べてデータ転送待ち時間を大幅に短縮でき、データ転送スループットの飛躍的な向上に奏功する。したがって、本発明は、SDXC、USB、及びSATA等に代表される高速ＩＯインタフェースと、主記憶装置との間のデータ転送を行うような集積回路製品に有効である。本発明は、その他、記憶領域間の複数のデータ転送を行うような集積回路製品、デジタル家電製品、パーソナルコンピュータ、および携帯電話などにも有効である。
【符号の説明】
【０１６９】
１００１  CPU
１００２  転送元
１００３  転送先
１００４，１００５  データ転送制御装置
１１００  チャネル制御部
１２００  データパス部
１１１０，１１５０  DMAパラメータ管理部
１１２０，１１６０  完了通知制御部
１１３０  チャネル調停部
１１４０  パラメータ制御部
１１１１  アドレスデコーダ
１１１２  DMAパラメータ退避制御部
１１１３  調停部
１１１４  DMAパラメータ保持部
１１１５  退避設定レジスタ
１１２１，１１６１  完了通知遅延制御部
１１２２  DMAパラメータ復帰制御部
１２０１  データ処理部
１２０２  データバッファ
１２０３  完了判定部
２１２６  完了通知キュー
２１２７  完了通知生成部
１１５１  上限設定レジスタ
１１５２  統計情報レジスタ
１１６２  エラー割込制御部
１１６３  統計情報管理部
４１２８  エラータイマー
４１３１  比較部
４１３２  エラー割込生成部
５１２８  ウェイト数カウンタ
６１２８  エラーカウンタ
【図１】
2012014400.tif 000003
【図２】
2012014400.tif 000004
【図３】
2012014400.tif 000005
【図４】
2012014400.tif 000006
【図５】
2012014400.tif 000007
【図６】
2012014400.tif 000008
【図７】
2012014400.tif 000009
【図８】
2012014400.tif 000010
【図９】
2012014400.tif 000011
【図１０】
2012014400.tif 000012
【図１１】
2012014400.tif 000013
【図１２】
2012014400.tif 000014
【図１３】
2012014400.tif 000015
【国際調査報告】
2012014400.tif 000016
2012014400.tif 000017
2012014400.tif 000018