(57)【要約】      （修正有）【課題】空きＤＭＡ期間を短縮し、ハードウェアリソースをより有効に使用することができるデータ転送装置等を提供する。【解決手段】データ転送装置１０は、ファームウェア２０で動作するタスクから通知された順に起動コマンドとこのコマンドに対応するタスク番号をキューに格納する起動キュー制御部１１と、この起動キュー制御部からキューに格納されている順に起動コマンドとタスク番号の通知を受け、この通知を受けた順に起動コマンドとタスク番号を複数のＤＭＡチャネルのうち転送を行っていないものに通知するＤＭＡチャネル制御部１３とを備えている。ＤＭＡチャネル制御部から起動コマンドとタスク番号の通知を受けたＤＭＡチャネルは、起動コマンドとタスク番号を格納すると共に起動コマンドに従ってデータ転送を行う。【選択図】図１
2007249635.tif 000002
【特許請求の範囲】
【請求項１】
同一機能のＤＭＡチャネルを複数備えたデータ転送装置において、
ファームウェアで動作するタスクから通知された順に起動コマンドとこのコマンドに対応するタスク番号をキューに格納する起動キュー制御部と、
この起動キュー制御部から前記キューに格納されている順に前記起動コマンドと前記タスク番号の通知を受け、この通知を受けた順に前記起動コマンドと前記タスク番号を前記複数のＤＭＡチャネルのうち転送を行っていないものに通知するＤＭＡチャネル制御部とを備え、
このＤＭＡチャネル制御部から前記起動コマンドと前記タスク番号の通知を受けた前記ＤＭＡチャネルは、前記起動コマンドと前記タスク番号を格納すると共に前記起動コマンドに従ってデータ転送を行うことを特徴としたデータ転送装置。
【請求項２】
前記データ転送を終了した前記ＤＭＡチャネルから前記タスク番号の通知を受け、このタスク番号と前記データ転送が終了したことを示す情報を前記ファームウェアに通知する転送終了通知制御部を備えたことを特徴とした請求項１に記載のデータ転送装置。
【請求項３】
同一機能の複数のＤＭＡチャネルを用いたデータ転送方法において、
ファームウェアで動作するタスクから通知された順に、起動コマンドとこのコマンドに対応するタスク番号をキューに格納する起動キュー制御工程と、
前記キューに格納された順に、前記起動コマンドを前記複数のＤＭＡチャネルのうちデータ転送を行っていないものに通知するＤＭＡチャネル制御工程と、
この工程で前記通知を受けた前記ＤＭＡチャネルが前記起動コマンドに従ってデータ転送を実行するデータ転送工程とを備えたことを特徴としたデータ転送方法。
【請求項４】
前記データ転送工程の終了後に、前記起動コマンドに対応するタスク番号と前記データ転送が終了したことを示す情報を前記ファームウェアに通知する転送終了通知工程を備えたことを特徴とした請求項３に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送機能を有する装置に関し、特に同一機能のDMA転送機能を複数個備えた装置に関する。
【背景技術】
【０００２】
一般に同一機能のDMA（Direct Memory Access）転送機能を複数個有する装置においてDMA転送を使用する場合、その装置を制御するファームウェアが使用するDMAを番号（以下、「DMAch番号」と書く）で管理し、DMAch番号を指定して転送起動／転送終了や複数DMAの空き状況などの管理を行う必要があった。
特許文献１には、このような従来のＤＭＡコントローラが記載されている。このＤＭＡコントローラは、ひとつのＤＭＡ要求をデータ転送サイズの小さい複数のＤＭＡ要求に分割することにより、ＤＭＡ転送処理とＣＰＵの周辺ＩＯデバイスへの直アクセスとによる内部バスの競合を減少させるように構成されているが、ＤＭＡ転送に使用するチャネルはＣＰＵが指定するようになっている。
【０００３】
【特許文献１】特開２００２−３６６５０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ファームウェアがDMAの管理をする場合、例えばファームウェア内部で複数のタスクが動作していて、各タスクがDMAを使用する場合、各タスクがどのDMAch番号のDMAを使用するかの調停を行っている間、空きDMA（転送を行っていないDMA）は動作しないことになり、つまりその間は空きDMAは動作せず、ハードウェアリソースを有効に使用できないという問題があった。
【０００５】
本発明の目的は、空きDMA期間を短縮し、ハードウェアリソースをより有効に使用することができるデータ転送装置等を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の、データ転送装置は、ファームウェアで動作するタスクから通知された順に起動コマンドとこのコマンドに対応するタスク番号をキューに格納する起動キュー制御部と、この起動キュー制御部からキューに格納されている順に起動コマンドとタスク番号の通知を受け、この通知を受けた順に起動コマンドとタスク番号を複数のＤＭＡチャネルのうち転送を行っていないものに通知するＤＭＡチャネル制御部とを備えている。ＤＭＡチャネル制御部から起動コマンドとタスク番号の通知を受けたＤＭＡチャネルは、起動コマンドとタスク番号を格納すると共に起動コマンドに従ってデータ転送を行う（請求項１および請求項２）。
【０００７】
上記データ転送装置によれば、起動コマンドは、ファームウェアから通知された順にキュー制御部に格納され、格納順に実行されるから、データ転送装置に起動コマンドを発行するファームウェアは、ファームウェアで動作している各タスクがどのＤＭＡチャネルを使用するか決定する必要がなく、起動コマンドとそれに対応するタスク番号をキュー制御部に通知するだけでよい。
そのため、ＤＭＡチャネルへのタスク割り当てをファームウェアで管理する場合よりもＤＭＡチャネルが空き状態である期間を短くすることが出来、より効率的にハードウェアリソースを活用することができる。また、ファームウェアの処理を簡単化および効率化することができる。
【０００８】
上記データ転送装置において、データ転送を終了したＤＭＡチャネルからタスク番号の通知を受け、このタスク番号とデータ転送が終了したことを示す情報をファームウェアに通知する転送終了通知制御部を備えるようにしてもよい（請求項２）。
このようにすれば、起動コマンドを発行したファームウェアは、そのコマンドによるデータ転送が終了したことを確実に知ることができる。
【０００９】
本発明のデータ転送方法は、ファームウェアで動作するタスクから通知された順に、起動コマンドとこのコマンドに対応するタスク番号をキューに格納する起動キュー制御工程と、キューに格納された順に、起動コマンドを複数のＤＭＡチャネルのうちデータ転送を行っていないものに通知するＤＭＡチャネル制御工程と、この工程で通知を受けたＤＭＡチャネルが起動コマンドに従ってデータ転送を実行するデータ転送工程とによりデータ転送を行う（請求項３及び請求項４）。
【００１０】
上記データ転送方法によれば、起動コマンドは、ファームウェアから通知された順にキューに格納され、格納順に実行されるから、起動コマンドを発行するファームウェアは、ファームウェアで動作している各タスクがどのＤＭＡチャネルを使用するか決定する必要がなく、起動コマンドとそれに対応するタスク番号をキュー制御部に通知するだけでよい。
そのため、ＤＭＡチャネルへのタスク割り当てをファームウェアで管理する場合よりもＤＭＡチャネルが空き状態である期間を短くすることが出来、より効率的にハードウェアリソースを活用することができる。また、ファームウェアの処理を簡単化および効率化することができる。
【００１１】
上記データ転送方法において、データ転送工程の終了後に、起動コマンドに対応するタスク番号とデータ転送が終了したことを示す情報をファームウェアに通知する転送終了通知工程を備えるようにしても良い（請求項４）。
このようにすれば、起動コマンドを発行したファームウェアは、そのコマンドによるデータ転送が終了したことを確実に知ることができる。
【発明の効果】
【００１２】
本発明によれば、起動コマンドは、ファームウェアから通知された順にキューに格納され、格納順に実行されるから、起動コマンドを発行するファームウェアは、ファームウェアで動作している各タスクがどのＤＭＡチャネルを使用するか決定する必要がなく、起動コマンドとそれに対応するタスク番号をキュー制御部に通知するだけでよい。
そのため、ＤＭＡチャネルへのタスク割り当てをファームウェアで管理する場合よりもＤＭＡチャネルが空き状態である期間を短くすることが出来、より効率的にハードウェアリソースを活用することが可能である。また、ファームウェアの処理を簡単化および効率化することができる。
【発明を実施するための最良の形態】
【００１３】
次に、図を参照しながら本発明の一実施形態であるデータ転送装置１０の構成と動作について説明する。
図１は、本発明の一実施形態であるデータ転送装置１０の構成を示すブロック図である。
データ転送装置１０は、この装置を制御するＣＰＵ等で動作するファームウェア２０（図では、「ＦＷ」と表記する）からコマンドの送信を受け、二つのメモリまたはＩＯデバイスの間でデータ転送を行う装置であり、起動キュー制御部１１（図では、「起動Ｑｕｅｕｅ制御部と表記」と表記する）とＤＭＡｃｈ制御部１３とＤＭＡ本体部１５と転送終了通知制御部１７とを備えている。
【００１４】
ファームウェア２０内部で動作している１０個のタスク（図１のTask0ないしTask9）からの起動コマンドとタスク番号は信号線２１を通して起動キュー制御部１１に通知される。起動キュー制御部１１は、通知されたタスク番号をＦＩＦＯ（First In First Out）方式で１０個まで格納可能な構成となっている。そして、格納した起動コマンドとタスク番号の組を、信号線１２を通してDMAch制御部１３へ通知する。
【００１５】
DMAch制御部１３は、DMA本体部１５内部の各DMA（図１のDMA0ないしDMA3）から、たとえば空きＤＭＡになったときにアクティブになるインプット・レディ（Input Ready）信号を受信することにより、各DMAの空き状況を常に把握しており、起動キュー制御部１１から信号線１２を通して通知された起動コマンドとタスク番号を空きDMAに信号線１４を通して割り振っていく。また、上記のインプット・レディ信号等により起動キュー制御部１１に起動コマンドを要求する。
【００１６】
DMA本体部１５は、同時動作可能な同一機能のDMAを４個備えており、DMAch制御部１３からDMAのDMAch番号と起動コマンドとタスク番号を信号線１４を通して通知されると、指定されたDMAがタスク番号を格納して、データ転送を開始する。
また、DMA本体部１５の各DMAはデータ転送が終了すると、格納していたタスク番号と転送終了通知を信号線１６を通して転送終了通知制御部１７へ通知する。データ転送を終了したDMAは空きDMAとなる。
【００１７】
転送終了通知制御部１７は、DMA本体部１５の各DMAから信号１６を通して転送終了通知とタスク番号を受け取り、これらを、ファームウェア２０に対して信号線１８を通して通知する。
【００１８】
なお、図１に示したファームウェア２０の内部で動作するタスクの数、起動キュー制御部１１に格納可能な起動コマンド数とタスク番号の個数、DMA本体部１５内部のDMAの個数は一例であり、これらはシステム要件によって変更することが可能である。
【００１９】
次に、データ転送装置１０の動作について、図２ないし図５を用いて説明する。動作の開始時点では、起動キュー制御部１１のQueue０ないしQueue９はすべて格納内容が空な状態（図では「Idle」と表記する）であり、DMA０ないしDMA３はすべてデータ転送を行っていない（図では「Idle」と表記する）ものとして説明する。
図２において、ファームウェア２０は、その内部で動作するTask０からTask９までを順番に信号２１を通して起動キュー制御部１１に対して、各タスクが発行する起動コマンドとそのコマンドを発行したタスクを特定するタスク番号を通知する。
起動キュー制御部１１にはファームウェア２０から通知された順番に起動コマンドとそのタスク番号が対応付けされて格納されていく。ファームウェア２０からの通知が完了した時点では、キュー１１ａには、先頭（図では下方）から順にTask0,Task1,・・・，Task9が格納されキュー１１ａは満杯となる。
【００２０】
次に、図３において起動キュー制御部１１に格納されていたTask0ないしTask3の起動コマンドとタスク番号が信号線１２を通ってDMAch制御部１３に通知される。
DMAch制御部１３は、DMA本体部１５において、DMA０ないし３のすべてが空きDMAであることを把握しているため、DMA０にTask０の起動コマンドとタスク番号、DMA１にTask１の起動コマンドとタスク番号、DMA２にTask２の起動コマンドとタスク番号、DMA３にTask３の起動コマンドとタスク番号を割り振っている。
また、起動キュー制御部１１では格納していたTask０ないし３の起動コマンドとタスク番号をDMAch制御部１３に通知してしまったため、キュー１１ａの内容はQueue６ないし９がIdleとなり、Queue０ないし５には、Task4ないし9の起動コマンドとタスク番号が格納された状態となる。
DMA本体部１５においては、起動コマンドとタスク番号を割り振られたDMA０ないし３は、それぞれデータ転送を開始する。
【００２１】
次に、図４には、DMA０、DMA２、DMA３がデータ転送を終了し、DMA1はデータ転送を実行中である状態を示している。
データ転送を終了したDMA0、DMA2、DMA3は、それぞれ信号線１６を通して転送終了通知制御部１７へ転送終了と終了した起動コマンドを発行したタスクのタスク番号を通知している。
転送終了通知を受けた転送終了通知制御部１７はファームウェア２０に対して、信号線１８を通してTask０、Task２、Task３のタスク番号と転送終了通知を通知している。
また、転送が終了したDMA０、DMA２、DMA３は空きDMAとなっている。
【００２２】
次に、図５では、DMA０，DMA２、DMA３が空きDMAとなったため、起動キュー制御部１１に格納されているTask４ないし６の起動コマンドとタスク番号が信号線１２を通ってDMAch制御部１３に通知され、DMAch制御部１３は空きDMAである、DMA０、DMA２，DMA３にTask４ないし６の起動コマンドとタスク番号を割り振っている。キュー１１ａの内容はQueue３ないし９がIdleとなり、Queue０ないし２には、Task７ないし９の起動コマンドとタスク番号が格納された状態となる。
新たに起動コマンドとタスク番号を割り振られたDMA０、DMA２、DMA３が再度転送を開始する。
【００２３】
以上のような動作を、起動キュー制御部１０に格納されている起動コマンドとタスク番号がなくなるまで繰り返し、起動キュー制御部１１に格納された起動コマンドとタスク番号はDMA本体部１５内部の空きDMAとなった各DMAにDMAch制御部１３によって自動的に割り振られていく。
【００２４】
データ転送装置１０によれば、空きDMAへの起動をDMAch制御部１３で自動的に割り振る事が出来るため、ファームウェア２０で管理するよりもDMAが空き状態である期間を短くすることが出来、より効率的にハードウェアリソースを活用することが出来る。
また、ファームウェア２０の各タスクが使用するDMAの管理をする必要が無くなるため、ファームウェア処理を簡単化及び効率化することも出来る。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態であるデータ転送装置のブロック図である。
【図２】図１のデータ転送装置の動作を説明する図である。
【図３】図１のデータ転送装置の動作を説明する図である。
【図４】図１のデータ転送装置の動作を説明する図である。
【図５】図１のデータ転送装置の動作を説明する図である。
【符号の説明】
【００２６】
１０  データ転送装置
１１  起動キュー制御部
１３  DMAch制御部
１５  DMA本体部
１７  転送終了通知制御部
２０  ファームウェア
【図１】
2007249635.tif 000003
【図２】
2007249635.tif 000004
【図３】
2007249635.tif 000005
【図４】
2007249635.tif 000006
【図５】
2007249635.tif 000007