(57)【要約】【課題】優先度が高いデータを効率よく装置内で転送できること。【解決手段】データ転送装置１００は、ＣＰＵ１０１と、メモリ１０２と、ＤＭＡＣ１１２あるいはＰＩＯＣ１１３によりデータを転送する。データ受信時には、ＤＭＡＣ１１２が装置外部からの受信順にデータをメモリ１０２を介してＣＰＵ１０１にＤＭＡ転送し、データが有する優先度が高い場合、データをＰＩＯＣ１１３により直接ＣＰＵ１０１に転送する。転送方路振分部１２２は、データが有する優先度が高い場合、データをＰＩＯＣ１１３側に切り替える。ＣＰＵ１０１は、ＤＭＡで使用するメモリ１０２からデータをリードし、メモリ１０２にデータがない場合にＰＩＯＣ１１３のデータバッファ１１８からデータをリードする。【選択図】図１
2018025879.tif 000002
【特許請求の範囲】
【請求項１】
データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、
を備えたことを特徴とするデータ転送装置。
【請求項２】
データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、を有し、
前記第一制御部は、装置外部からの受信順にデータを前記第一メモリを介して前記ＣＰＵにＤＭＡ転送し、
前記第二制御部は、装置外部から受信したデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記ＣＰＵに転送する、
ことを特徴とするデータ転送装置。
【請求項３】
前記装置外部から前記データを受信する受信部を有し、
前記第一制御部は、ＤＭＡコントローラであり、
前記第二制御部は、ＰＩＯコントローラであり、
前記振分部は、前記データが有する優先度が高い場合、当該データを前記ＰＩＯコントローラ側に振り分けることを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
前記ＰＩＯコントローラは、前記データが有する優先度が高い場合、他のＤＭＡ転送中の前記データの有無および前記データの受信順にかかわらず、前記ＣＰＵに直接割り込み通知を行い、優先度が高い前記データを直ちに前記ＣＰＵに転送する、
ことを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記優先度は、前記データのヘッダーに設定され、
あらかじめ設定した優先度の情報に基づき、前記振分部による前記データの優先度を判断する優先度の設定情報を保持する設定部、
をさらに有することを特徴とする請求項２〜４のいずれか一つに記載のデータ転送装置。
【請求項６】
前記ＤＭＡコントローラおよび前記ＰＩＯコントローラのそれぞれが有するバッファの使用量を監視し、前記ＰＩＯのバッファ使用量が増大した場合、優先度を有する前記データを前記ＤＭＡコントローラ側に切り替えるよう前記振分部に要求を行うバッファ量監視部を有する、
ことを特徴とする請求項３〜５のいずれか一つに記載のデータ転送装置。
【請求項７】
データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、を有し、
前記ＣＰＵは、装置外部への送信順にデータを前記第一メモリを介してＤＭＡにより前記第一制御部に転送し、
前記装置外部へ送信するデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記第二制御部に転送する、
ことを特徴とするデータ転送装置。
【請求項８】
前記第一制御部は、ＤＭＡコントローラであり、
前記第二制御部は、ＰＩＯコントローラであり、
前記ＤＭＡコントローラあるいは前記ＰＩＯコントローラにより転送された前記データを調停して出力する調停部と、
前記調停部から出力されたデータを送信する送信部と、
をさらに有し、
前記調停部は、前記データが有する優先度が高い場合、当該データを優先的に出力することを特徴とする請求項７に記載のデータ転送装置。
【請求項９】
ＣＰＵと、データを第一メモリに記憶する第一制御部と、データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、を有してデータ転送するデータ転送装置のデータ転送方法において、
前記ＣＰＵは、前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードする、
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送を制御するデータ転送装置およびデータ転送方法に関する。
【背景技術】
【０００２】
データ転送装置は、外部装置と装置内部のデバイスとの間でのデータ転送を制御する。データ転送装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）等のメモリと、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）等を含む。
【０００３】
外部装置に対するデータ送信時には、ＣＰＵがメモリへディスクリプタと送信データを転送する。ＣＰＵは、送信ＤＭＡＣを起動した後、メモリ内のディスクリプタ領域よりディスクリプタをフェッチし、メモリ内のデータバッファからＤＭＡＣのデータバッファへ送信データを転送する。この後、所定の送信タイミングでＤＭＡＣのデータバッファから外部装置へデータを送信する。
【０００４】
外部装置からのデータ受信時には、ＣＰＵが受信ＤＭＡＣを起動した後、メモリ内のディスクリプタ領域よりディスクリプタをフェッチする。そして、ＣＰＵは、外部装置からのデータ受信後、受信データを受信ＤＭＡＣのデータバッファからメモリ内データバッファへ転送し、ＣＰＵがメモリ内のデータバッファから受信データを刈り取る（読み出す）。
【０００５】
従来、データ転送に関し、メモリ領域にパケットデータの優先クラスに応じたバンク割り当てを行いスケジューラによる読み出し制御を行う技術がある（例えば、下記特許文献１参照。）。また、データバス幅より小さいデータをキャッシュを介して利用することで、バス幅相当のデータとして読み出す技術がある（例えば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−０７７４０１号公報
【特許文献２】特開２００５−３３９３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上記従来の技術では、データ受信時には受信した順番にしたがってＣＰＵへデータ転送する。このため、例えば、データ量の大きいデータを受信後に優先転送度の高い、あるいはリアルタイム転送の必要性が高いデータを受信した場合であっても、受信した順番にしたがって、先にデータ量の大きいデータをＣＰＵへ転送することになる。このため、優先転送度の高い、またはリアルタイム転送の必要性が高いデータであっても、順番にしたがってＣＰＵに転送されることになる。これにより、優先転送度が高い、あるいはリアルタイム転送の必要性が高いデータを優先して転送することができなかった。
【０００８】
また、ＤＭＡＣ方式での受信側の転送経路は、ＤＩＭＭ等のメモリを介した転送となるため、ＰＩＯ（Ｐｒｏｇｒａｍ  Ｉ／Ｏ）転送に比べ、リアルタイム性の面においては不利な転送経路の構成となっている。この構成上の問題は、送信側においても同様にメモリを介した転送構成であることから、優先度が高いあるいはリアルタイム転送の必要性が高いデータ送信を直ぐに送信できない場合を生じさせる。
【０００９】
一つの側面では、本発明は、優先度が高いデータを効率よく装置内で転送できることを目的とする。
【課題を解決するための手段】
【００１０】
一つの案では、データを第一メモリに記憶する第一制御部と、データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、を備えたことを要件とする。
【発明の効果】
【００１１】
一つの実施形態によれば、優先度が高いデータを効率よく装置内で転送できるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態にかかるデータ転送装置の受信側の構成例を示すブロック図である。
【図２】図２は、実施の形態にかかるデータ転送装置の送信側の構成例を示すブロック図である。
【図３Ａ】図３Ａは、実施の形態にかかるデータ転送装置の受信データの転送処理の手順を示すタイミングチャートである。（その１）
【図３Ｂ】図３Ｂは、実施の形態にかかるデータ転送装置の受信データの転送処理の手順を示すタイミングチャートである。（その２）
【図３Ｃ】図３Ｂは、実施の形態にかかるデータ転送装置の受信データの転送処理の手順を示すタイミングチャートである。（その３）
【図４Ａ】図４Ａは、実施の形態にかかるデータ転送装置の送信データの転送処理の手順を示すタイミングチャートである。（その１）
【図４Ｂ】図４Ｂは、実施の形態にかかるデータ転送装置の送信データの転送処理の手順を示すタイミングチャートである。（その２）
【発明を実施するための形態】
【００１３】
（実施の形態）
（受信データの転送にかかる構成例）
図１は、実施の形態にかかるデータ転送装置の受信側の構成例を示すブロック図である。データ転送装置１００は、ＣＰＵ１０１と、メモリ１０２と、受信の転送制御部１０３と、デバイス１０４と、バス１０５と、を含む。受信の転送制御部１０３は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等で構成することができる。
【００１４】
ＣＰＵ１０１は、データ転送装置１００全体の制御を司る。ＣＰＵ１０１は、外部装置からＬＡＮ等の伝送路を介して受信データを受信した時には、受信の転送制御部１０３に対する制御を行い、受信の転送制御部１０３が受信した受信データをバス１０５を介してデバイス１０４に転送する制御を行う。この際、受信の転送制御部１０３は、ＤＭＡ転送あるいはＰＩＯ転送により受信データをデバイス１０４に転送する。
【００１５】
メモリ１０２は、例えばＤＩＭＭ等を用いることができる。このメモリ１０２には、受信データのＤＭＡ転送に用いる複数のディスクリプタ１０６の領域を有する。各ディスクリプタ１０６は、データ（受信データ）のデータバッファ（ＤａｔａＢｕｆｆ）１０７の領域を有する。受信ディスクリプタは、一般にＰＭＣ（Ｐａｔｔｅｒｎ  Ｍａｔｃｈ  Ｃｈｅｃｋ）と、ＲＥＣ（Ｒｅｃｅｉｖｅ）と、ＲＥＣＳＴ（ＲＥＣｉｅｖｅ  ＳＴａｔｕｓ）、を組みにして構成される。ＲＥＣが有するデータバッファ１０７に受信データを保持する。
【００１６】
受信の転送制御部１０３は、受信データ制御部１１１と、ＤＭＡコントローラ（ＤＭＡＣ）１１２と、ＰＩＯコントローラ（ＰＩＯ、ＰＩＯＣ）１１３と、バスインタフェース（Ｂｕｓ−ＩＮＦ）１１４と、設定部１１５と、を含む。
【００１７】
ＤＭＡＣ１１２は、メモリ１０２から転送されたディスクリプタ１０６を保持するディスクリプタ１１６の領域と、データバッファ１１７の領域を有する。ＰＩＯコントローラ１１３は、データバッファ１１８の領域を有する。
【００１８】
受信データ制御部１１１は、受信部１２１（外部インタフェース：ＩＮＦ）と、受信データの転送方路を選択する転送方路選択部１２２と、受信データのヘッダーを解析するヘッダー解析部１２３と、バッファ（Ｂｕｆｆ）量監視部１２４と、を含む。
【００１９】
受信部１２１は、外部機器からの受信データを終端処理し、転送方路選択部１２２とヘッダー解析部１２３に出力する。ヘッダー解析部１２３は、終端した受信データのヘッダー解析を行い受信データの優先度を判別する。
【００２０】
転送方路選択部１２２は、ヘッダー解析部１２３が判別した受信データの優先度に基づき、ＤＭＡＣ１１２またはＰＩＯコントローラ１１３のいずれかを選択し、選択側に受信データを転送する。バッファ量監視部１２４は、ＤＭＡＣ１１２とＰＩＯコントローラ１１３のそれぞれのデータバッファ１１７，１１８のバッファ量（データ格納量）を監視する。
【００２１】
設定部１１５は、データ転送装置１００に対する予めのレジスタ設定（ＲＥＧ設定）として、例えば、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）や、受信データに含まれる特定の送信元ＩＰアドレス等を設定する。すなわち、設定部１１５には、受信データの優先度が設定される。
【００２２】
転送方路選択部１２２は、通常のデータ受信時には、ＤＭＡ転送によりＤＭＡＣ１１２側に受信データを転送するが、設定部１１５で設定された優先度を有する受信データの受信時には、ＰＩＯコントローラ１１３側に受信データを転送するよう方路を切り替える。これにより、受信データの受信順に限らず、優先度やリアルタイム性を有する受信データをＰＩＯコントローラ１１３を介して直ちに転送処理させる。バスインタフェース１１４は、バス１０５との間でデータ（受信データおよびディスクリプタ等）を送受信する。
【００２３】
また、バッファ量監視部１２４は、ＤＭＡＣ１１２とＰＩＯコントローラ１１３のそれぞれのデータバッファ１１７，１１８のバッファの使用量を監視する。そして、バッファ量監視部１２４は、受信データに対し、優先的にＰＩＯ転送が選択された場合においてＰＩＯコントローラ１１３のデータバッファ１１８がＦｕｌｌ（残量無し）に近づいたとする。この場合、バッファ量監視部１２４は、転送方路選択部１２２に対しＤＭＡＣ１１２による転送を行うようＤＭＡＣ１１２側に方路を切り替える要求を行い、優先度を有する受信データであっても、ＤＭＡＣ１１２を介したＤＭＡ転送を行う。
【００２４】
ＤＭＡでは、ＰＩＯコントローラ１１３が有するバッファに比して膨大な記憶領域を有するメモリ１０２を用いている。ＰＩＯによる転送が増加し、ＰＩＯの転送を継続すると受信データの廃棄が生じる。例えば、受信データのデータ量は小さいが優先度が高い受信データを連続して受信した場合等には、ＰＩＯコントローラ１１３にデータが集中することになる。バッファ量監視部１２４を設けて、受信データをＤＭＡ転送に切り替えることでデータをメモリ１０２に保持しておくことができ、受信データの破棄を回避できるようになる。
【００２５】
このように、受信の転送制御部１０３は、受信データの優先度と、ＤＭＡＣ１１２およびＰＩＯコントローラ１１３のデータバッファ量を判断することにより、受信データの転送方路が最適となる側を選択する。
【００２６】
ＤＭＡＣ１１２は第一制御部として機能し、ＰＩＯコントローラ１１３は第二制御部として機能する。ＤＭＡＣ１１２は、データを第一メモリとして機能するメモリ１０２に記憶する。ＰＩＯコントローラ１１３は、データを第二メモリとして機能するバッファ１１８に記憶する。バッファ１１８は、メモリ１０２よりも記憶容量が小さい。そして、転送方路選択部１２２は、優先度に応じて第一制御部（ＤＭＡＣ１１２）と、第二制御部（ＰＩＯコントローラ１１３）のいずれかにデータを振り分ける振分部として機能する。ＣＰＵ１０１は、第二メモリ（バッファ１１８）からデータをリードし、第二メモリ（バッファ１１８）にデータがない場合に第一メモリ（メモリ１０２）からデータをリードする。
【００２７】
図１を用いて、データ転送装置１００内での受信データの転送処理の概要を説明する。ＣＰＵ１０１は、受信データのデータ量について大小の閾値、およびデータ種別による優先処理のレジスタ設定を設定部１１５に行っておく（図中ａの経路）。受信データ制御部１１１は、受信データの優先度やリアルタイム性を設定部１１５の設定に基づき判断し、優先度やリアルタイム性の高い受信データをＰＩＯコントローラ１１３（ＰＩＯ転送）によりＣＰＵ１０１へ転送する（図中ｂの経路）。
【００２８】
一方、受信データが優先度あるいはリアルタイム性が低ければ、ＤＭＡＣ１１２（ＤＭＡ転送）にてメモリ１０２へ受信データを転送する（図中ｃの経路）。その後、ＣＰＵ１０１がメモリ１０２上の受信データを刈り取り（読み出し、図中ｄの経路）、デバイス１０４に受信データを転送する。
【００２９】
（送信データの転送にかかる構成例）
図２は、実施の形態にかかるデータ転送装置の送信側の構成例を示すブロック図である。図２に示すデータ転送装置１００において、ＣＰＵ１０１、メモリ１０２、デバイス１０４、バス１０５の各構成は、図１と同じ構成部である。送信側の構成としては、図２に示す送信の転送制御部２０１が加えられることになる。
【００３０】
送信の転送制御部２０１についてもＦＰＧＡ等で構成することができる。送信の転送制御部２０１は、バスインタフェース（Ｂｕｓ−ＩＮＦ）２１１と、ＤＭＡコントローラ（ＤＭＡＣ）２１２と、ＰＩＯコントローラ（ＰＩＯ）２１３と、送信調停処理部２１４と、送信部（外部インタフェース：ＩＮＦ）２１５と、を含む。
【００３１】
メモリ１０２には、送信データのＤＭＡ転送に用いる複数のディスクリプタ２０６の領域を有する。送信のディスクリプタ２０６は、一般にＳＥＮＤのディスクリプタのみを有し、データ（送信データ）のデータバッファ（ＤａｔａＢｕｆｆ）２０７の領域を有する。
【００３２】
ＤＭＡＣ２１２は、メモリ１０２から転送されたディスクリプタ２０６を保持するディスクリプタ２１６の領域と、データバッファ２１７の領域を有する。ＰＩＯコントローラ２１３は、データバッファ２１８の領域を有する。
【００３３】
送信調停処理部２１４は、ＤＭＡＣ２１２あるいはＰＩＯコントローラ２１３から出力される送信データを調停し、ＰＩＯコントローラ２１３から出力される送信データを優先的に出力する制御を行う。送信部２１５は、送信調停処理部２１４から出力された送信データを外部機器に対し送信する。
【００３４】
図２を用いて、データ転送装置１００内での送信データの転送処理の概要を説明する。デバイス１０４から外部に送信する送信データのうち、優先度あるいはリアルタイム性の低いデータは、ＣＰＵ１０１は、ＤＭＡ転送によりメモリ１０２へ格納した後、メモリ１０２からＤＭＡＣ２１２に転送する（図中ａの経路）。
【００３５】
一方、優先度あるいはリアルタイム性の高い送信データについては、ＣＰＵ１０１は、ローカルアクセス（ＰＩＯ転送）により、ＰＩＯ２１３のデータバッファ２１８に転送する。送信調停処理部２１４は、ＤＭＡＣ２１２およびＰＩＯ２１３に転送された送信データを調停し、送信部２１５を介して外部機器に送信する。この際、送信調停処理部２１４は、ＤＭＡ転送データよりもＰＩＯ転送データを優先的に送信する。
【００３６】
上記データの受信および送信時の装置内部でのデータの転送処理において、ＤＭＡ転送では、ディスクリプタを用いる。ここで、上記転送処理によれば、優先度あるいはリアルタイム性の低いデータは、送受信のいずれにおいても、ディスクリプタを用いたＤＭＡ転送を行う。一方、優先度あるいはリアルタイム性の高いデータは、送受信のいずれにおいても、ディスクリプタを用いないＰＩＯ転送を行う。
【００３７】
（受信データの転送処理の詳細）
図３Ａ〜図３Ｃは、それぞれ実施の形態にかかるデータ転送装置の受信データの転送処理の手順を示すタイミングチャートである。図１に示したデータ転送装置１００の受信側の構成を用いて受信データの装置内での転送の手順について順に説明する。
【００３８】
以下の例では、外部装置から３つのデータ（データ１〜３）を順に受信するが、３番目に受信したデータ３が優先度を有するデータである例について説明する。
【００３９】
図３の各図の横軸には、データ受信にかかる受信部１２１、ＤＭＡＣ１１２、メモリ（ＤＩＭＭ）１０２、ＣＰＵ１０１を示している。なお、便宜上、受信部１２１の受信バッファは図１のＤＭＡＣ１１２のデータバッファ１１７、あるいはＰＩＯコントローラ１１３のデータバッファ１１８を指すものとする。
【００４０】
データ受信前において、ＣＰＵ１０１は、メモリ１０２に対し、ディスクリプト・データを転送し（ステップＳ３０１）、メモリ１０２にディスクリプタ１０６の領域を確保する（ステップＳ３０２）。また、ＣＰＵ１０１は、ＤＭＡＣ１１２にディスクリプタ・アドレスを転送し（ステップＳ３０３）、ＤＭＡＣ１１２は、ＰＭＣにディスクリプタ・アドレスを保持する（ステップＳ３０４）。
【００４１】
この後、ＣＰＵ１０１は、ＤＭＡＣ１１２に起動コマンドを送信してＤＭＡＣ１１２を起動させる（ステップＳ３０５）。ＤＭＡＣ１１２は、メモリ１０２にディスクリプタ・アドレスを発行し（ステップＳ３０６）、ＰＭＣのディスクリプト・データフェッチを行い（ステップＳ３０７）、ＤＭＡＣ１１２にＰＭＣ（ディスクリプタ１１６）を保持する（ステップＳ３０８）。
【００４２】
つぎに、ＤＭＡＣ１１２は、ＰＭＣを実行し（ステップＳ３０９）、メモリ１０２の転送先領域の空チェックを確認する（ステップＳ３１０）。ＤＭＡＣ１１２は、メモリ１０２に空きがあるか判断し（ステップＳ３１１）、メモリ１０２に容量がなければ（ステップＳ３１１：Ｎｏ）、ステップＳ３０９のＰＭＣを再実行する。メモリ１０２に空きがあれば（ステップＳ３１１：Ｙｅｓ）、メモリ１０２にディスクリプタ・アドレスを発行し（ステップＳ３１２）、ＲＥＣのディスクリプト・データフェッチを行う（ステップＳ３１３）。そして、ＤＭＡＣ１１２にＲＥＣ（ディスクリプタ１１６）を保持する（ステップＳ３１４）。
【００４３】
つぎに、ＤＭＡＣ１１２は、ＲＥＣを実行し（ステップＳ３１５）、受信部１２１からの受信完了通知を待つ状態となる（ステップＳ３１６）。
【００４４】
受信部１２１が外部装置からデータ１を受信すると、受信部１２１は受信したデータ１を受信バッファ＃１（図１のデータバッファ１１７）に格納する（ステップＳ３１７）。そして、データ１を受信完了するまで（ステップＳ３１８：Ｎｏ）、受信したデータ１を継続して受信バッファに格納していく。そして、データ１を受信完了すると（ステップＳ３１８：Ｙｅｓ）、受信完了の通知をバイト数とともにＤＭＡＣ１１２に通知する（ステップＳ３１９）。
【００４５】
この後、ＤＭＡＣ１１２は、受信バッファ＃１に対し読み出しアドレスを発行する（ステップＳ３２０）。データ１は受信バッファ＃１に保持されており（ステップＳ３２１）、受信バッファ＃１は、メモリ１０２にＤＭＡによりデータ１を転送することを繰り返す（ステップＳ３２２）。メモリ１０２は、データ１をデータバッファ１１７（ＲＥＣの受信バッファ＃１）に保持する（ステップＳ３２３）。
【００４６】
そして、データ１の転送が完了すると（ステップＳ３２４）、ＤＭＡＣ１１２は、メモリ１０２に対しディスクリプタ・アドレスを発行し（ステップＳ３２５）、ＲＥＣＳＴのディスクリプト・データフェッチを行う（ステップＳ３２６）。そして、ＤＭＡＣ１１２はＲＥＣＳＴ（ディスクリプタ１１６）を保持する（ステップＳ３２７）。
【００４７】
つぎに、ＤＭＡＣ１１２は、ＲＥＣＳＴを実行し（ステップＳ３２８）、メモリ１０２に転送バイトと転送領域塞がり書き込みの転送を行う（ステップＳ３２９）。また、ＤＭＡＣ１１２は、ＣＰＵ１０１にデータ１受信完了の割り込み通知を行う（ステップＳ３３０）。
【００４８】
ＣＰＵ１０１は、データ１の割り込みを受信すると（ステップＳ３３１）、メモリ１０２に読み出しアドレスを発行し（ステップＳ３３２）、メモリ１０２からデータ１を刈り取る（読み出す、ステップＳ３３３）ことを繰り返す。そして、ＣＰＵ１０１はデータ１の受信刈り取りを完了する（ステップＳ３３４）。
【００４９】
この後、データ２を受信した場合についてもデータ１と同様の転送処理を行う。データ１と同様の転送処理には同じ符号とし符号末尾にａを付してある。なお、受信部１２１は受信したデータ２を受信バッファ＃２（データバッファ１１７）に格納する（ステップＳ３１７ａ）。
【００５０】
ここで、ＤＭＡＣ１１２がデータ２についてメモリ１０２への転送準備中（ＰＭＣ実行にかかるステップＳ３０６ａ〜ステップＳ３１４ａの実行中）に優先度を有するデータ３を受信したとする。
【００５１】
この場合、受信部１２１が外部装置から優先度を有するデータ３を受信すると、受信したデータ３を受信バッファ＃１（データバッファ１１８）に格納する（ステップＳ３４１）。そして、データ３を外部装置から受信完了するまで（ステップＳ３４２：Ｎｏ）、受信したデータ３を継続して受信バッファに格納していく。そして、データ３を受信完了すると（ステップＳ３４２：Ｙｅｓ）、受信完了の通知をバイト数とともにＣＰＵ１０１に割り込み通知する（ステップＳ３４３）。受信部１２１は、データ３を受信バッファ＃１（データバッファ１１７）に保持する。
【００５２】
ＣＰＵ１０１は、データ３の割り込みを受信すると（ステップＳ３４４）、受信部１２１に読み出しアドレスを発行する（ステップＳ３４５）。そして、受信バッファ＃１（データバッファ１１８）からデータ３をＰＩＯにより刈り取る（読み出す、ステップＳ３４６）ことを繰り返す。そして、ＣＰＵ１０１はデータ３の受信刈り取りを完了する（ステップＳ３４７）。
【００５３】
この後、ＤＭＡＣ１１２は、転送を保留していたデータ２に対する転送処理を再開し、ＤＭＡＣ１１２は、ＲＥＣを実行し（ステップＳ３４８）、受信部１２１からの受信完了通知を待つ状態となる（ステップＳ３４９）。なお、データ２について、ＤＭＡＣ１１２は、受信部１２１でのデータ受信完了の通知を受けていたとする（ステップＳ３１９ａ）。
【００５４】
このデータ２のＤＭＡ転送再開については、データ１と同様の処理を行う。同様の処理には同じ符号とし符号末尾にｂを付してある。
【００５５】
ＤＭＡＣ１１２は、データ２の受信バッファ＃２に対し読み出しアドレスを発行する（ステップＳ３２０ｂ）。受信部１２１は、受信バッファ＃２（データバッファ１１７）のデータ２を保持しており（ステップＳ３２１ｂ）、受信バッファ＃２は、メモリ１０２にＤＭＡによりデータ２を転送することを繰り返す（ステップＳ３２２ｂ）。メモリ１０２は、データ２をデータバッファ１１７（ＲＥＣの受信バッファ＃１）に保持する（ステップＳ３２３ｂ）。
【００５６】
そして、データ２の転送が完了すると（ステップＳ３２４ｂ）、ＤＭＡＣ１１２は、メモリ１０２に対しディスクリプタ・アドレスを発行し（ステップＳ３２５ｂ）、ＲＥＣＳＴのディスクリプト・データフェッチを行う（ステップＳ３２６ｂ）。そして、ＤＭＡＣ１１２はＲＥＣＳＴ（ディスクリプタ１１６）を保持する（ステップＳ３２７ｂ）。
【００５７】
つぎに、ＤＭＡＣ１１２は、ＲＥＣＳＴを実行し（ステップＳ３２８ｂ）、メモリ１０２に転送バイトと転送領域塞がり書き込みの転送を行う（ステップＳ３２９ｂ）。また、ＤＭＡＣ１１２は、ＣＰＵ１０１にデータ２受信完了の割り込み通知を行う（ステップＳ３３０ｂ）。
【００５８】
ＣＰＵ１０１は、データ２の割り込みを受信すると（ステップＳ３３１ｂ）、メモリ１０２に読み出しアドレスを発行し（ステップＳ３３２ｂ）、メモリ１０２からデータ１を刈り取る（読み出す、ステップＳ３３３ｂ）ことを繰り返す。そして、ＣＰＵ１０１はデータ１の受信刈り取りを完了する（ステップＳ３３４ｂ）。
【００５９】
上記処理によれば、受信部１２１がデータ１，２，３の順で受信したとしても、受信したデータ３の優先度が高い場合、このデータ３はＤＭＡＣ１１２を介さずに、直接ＣＰＵ１０１に対してＰＩＯの割り込み通知を行い、ＣＰＵ１０１が刈り取り処理する。これにより、優先度を有するデータ３を優先度が低いデータ２よりも優先して先にＣＰＵ１０１へ転送できるようになる。この例では、データ３とデータ２の転送順序が入れ替わっている。
【００６０】
（送信データの転送処理の詳細）
図４Ａ，図４Ｂは、それぞれ実施の形態にかかるデータ転送装置の送信データの転送処理の手順を示すタイミングチャートである。図２に示したデータ転送装置１００の送信側の構成を用いて送信データの装置内での転送の手順について順に説明する。
【００６１】
以下の例では、外部装置に対し３つのデータ（データ１〜３）を順に送信するが、２番目に送信するデータ２が優先度を有するデータである例について説明する。
【００６２】
図４の各図の横軸には、データ送信にかかる送信部２１５、ＤＭＡＣ２１２、メモリ（ＤＩＭＭ）１０２、ＣＰＵ１０１を示している。なお、便宜上、送信部２１５の送信バッファは図２のＤＭＡＣ２１２のデータバッファ２１７、あるいはＰＩＯコントローラ２１３のデータバッファ２１８を指すものとする。
【００６３】
データ転送装置１００内部のデバイス１０４から受信したデータ１に対し、ＣＰＵ１０１が転送を開始すると（ステップＳ４０１）、データ１はＣＰＵ１０１からメモリ１０２に転送される（ステップＳ４０２）。メモリ１０２は転送されたデータ１を送信バッファ（データバッファ２０７）に保持する（ステップＳ４０３）。
【００６４】
また、ＣＰＵ１０１は、メモリ１０２にＳＥＮＤのディスクリプト・データを転送し（ステップＳ４０４）、メモリ１０２はＳＥＮＤのディスクリプタ２０６を保持する（ステップＳ４０５）。また、ＣＰＵ１０１は、ＤＭＡＣ２１２に対し、ディスクリプタ・アドレスを転送し（ステップＳ４０６）、ＤＭＡＣ２１２は、ＳＥＮＤのディスクリプタ・アドレスを保持する（ステップＳ４０７）。また、ＣＰＵ１０１は、ＤＭＡＣ起動コマンドをＤＭＡＣ２１２に送信し（ステップＳ４０８）、ＤＭＡＣ２１２が起動する（ステップＳ４０９）。
【００６５】
起動したＤＭＡＣ２１２は、メモリ１０２に対し、ディスクリプタ・アドレスを発行し（ステップＳ４１０）、メモリ１０２はディスクリプト・データをフェッチしＤＭＡＣ１１２に転送する（ステップＳ４１１）。ＤＭＡＣ１１２は、ＳＥＮＤのディスクリプタ２１６を保持する（ステップＳ４１２）。
【００６６】
ここで、データ１について、メモリ１０２から送信部２１５へ転送を開始する前に（ステップＳ４１９〜ステップＳ４２４の実行前）に優先度を有するデータ２の転送を開始したとする。
【００６７】
ＣＰＵ１０１がデータ２の転送を開始すると（ステップＳ４１３）、この優先度を有するデータ２はＰＩＯによりＣＰＵ１０１から直接送信部２１５に転送される（ステップＳ４１４）。送信部２１５のバッファ（データバッファ２１８）がこの送信データを保持する（ステップＳ４１５）。データ２の転送が完了すると、ＣＰＵ１０１は、転送完了の通知をバイト数とともに送信部２１５に通知する（ステップＳ４１６）。これにより、データバッファ２１８は、データ２を外部装置に送信出力する（ステップＳ４１７）。
【００６８】
この後、ＤＭＡＣ２１２は、転送を保留していたデータ１に対する転送処理を再開する。ＤＭＡＣ２１２は、メモリ１０２に対し読み出しアドレスを発行し（ステップＳ４１９）、メモリ１０２が送信バッファ（データバッファ）２０７からデータ１を送信部２１５にＤＭＡ転送する（ステップＳ４２０）、ことを繰り返す。送信部２１５は、データ１を送信バッファ（データバッファ２１７）に保持する（ステップＳ４２１）。
【００６９】
そして、ＤＭＡＣ１１２は、データ１の転送が完了するのを待ち（ステップＳ４２２：Ｎｏのループ）、データ１の転送が完了すると（ステップＳ４２２：Ｙｅｓ）、転送完了の通知をバイト数とともに送信部２１５に通知する（ステップＳ４２３）。また、ＤＭＡＣ２１２は、ＣＰＵ１０１にデータ１転送完了の割り込み通知を行い（ステップＳ４２６）、ＣＰＵ１０１はデータ１が転送完了と判断する（ステップＳ４２７）。
【００７０】
そして、送信部２１５は、送信バッファ（データバッファ２１７）に保持されているデータ１を外部機器に送信出力する（ステップＳ４２４）。
【００７１】
つぎに、ＣＰＵ１０１は、データ３の転送を開始する。データ３については、データ１と同様の転送処理を行う。データ１と同様の転送処理には同じ符号として符号末尾にａを付してある。データ３については、一連の転送処理が保留することなくＤＭＡ転送される状態を示している。
【００７２】
上記処理によれば、データの送信順がデータ１，２，３の順であったとしても、データ２の優先度が高い場合、このデータ２はＤＭＡＣ２１２を介さずに、直接送信部（ＰＩＯのデータバッファ２１８に転送処理する。これにより、優先度を有するデータ２を優先度が低いデータ１よりも優先して先に転送できるようになる。この例では、データ１とデータ２の転送順序が入れ替わっている。
【００７３】
以上説明した実施の形態によれば、通常時には、ＤＭＡによるデータ転送を行うが、優先度が高いまたはリアルタイム転送の必要性が高いデータはＰＩＯに切り替えてデータ転送を行う。この切り替えにより、優先度を有するデータ転送については、ＤＭＡ転送で必要なＣＰＵのディスクリプタ制御および転送処理を不要にでき、ＣＰＵの負荷低減および転送時のバス帯域の圧迫を低減することができるようになる。
【００７４】
また、ＰＩＯによる転送を行うことで、メモリを介さない転送が行え、ＤＭＡに比べ転送経路を短絡化でき、データをよりリアルタイムに転送処理でき、リアルタイム転送が必要なデータの要求を満たすことができるようになる。
【００７５】
また、ＰＩＯによる転送が増加し、ＰＩＯの転送を継続すると受信データの廃棄が生じるが、バッファ量監視部を設けることで、受信データをＤＭＡ転送に切り替えることでデータをメモリに保持しておくことができ、受信データの破棄を回避できるようになる。
【００７６】
また、上記実施の形態では、優先度を例にデータ転送を行う構成例を説明したが、ほかにリアルタイム性やＱｏＳに基づき、リアルタイム性やＱｏＳに応じて優先してデータ転送することができる。設定部および受信データのヘッダーには、これら優先度等の値を任意に設定しておけばよい。
【００７７】
なお、本実施の形態で説明したデータ転送方法は、あらかじめ用意された制御プログラムを対象機器（上記データ転送装置）等のコンピュータ（ＣＰＵ等）が実行することにより実現することができる。例えば、実施の形態で説明したＦＰＧＡの機能をＣＰＵが実行する構成とすることもできる。本制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７９】
（付記１）データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、
を備えたことを特徴とするデータ転送装置。
【００８０】
（付記２）データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、を有し、
前記第一制御部は、装置外部からの受信順にデータを前記第一メモリを介して前記ＣＰＵにＤＭＡ転送し、
前記第二制御部は、装置外部から受信したデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記ＣＰＵに転送する、
ことを特徴とするデータ転送装置。
【００８１】
（付記３）前記装置外部から前記データを受信する受信部を有し、
前記第一制御部は、ＤＭＡコントローラであり、
前記第二制御部は、ＰＩＯコントローラであり、
前記振分部は、前記データが有する優先度が高い場合、当該データを前記ＰＩＯコントローラ側に振り分けることを特徴とする付記２に記載のデータ転送装置。
【００８２】
（付記４）前記ＰＩＯコントローラは、前記データが有する優先度が高い場合、他のＤＭＡ転送中の前記データの有無および前記データの受信順にかかわらず、前記ＣＰＵに直接割り込み通知を行い、優先度が高い前記データを直ちに前記ＣＰＵに転送する、
ことを特徴とする付記３に記載のデータ転送装置。
【００８３】
（付記５）前記優先度は、前記データのヘッダーに設定され、
あらかじめ設定した優先度の情報に基づき、前記振分部による前記データの優先度を判断する優先度の設定情報を保持する設定部、
をさらに有することを特徴とする付記２〜４のいずれか一つに記載のデータ転送装置。
【００８４】
（付記６）前記ＤＭＡコントローラおよび前記ＰＩＯコントローラのそれぞれが有するバッファの使用量を監視し、前記ＰＩＯのバッファ使用量が増大した場合、優先度を有する前記データを前記ＤＭＡコントローラ側に切り替えるよう前記振分部に要求を行うバッファ量監視部を有する、
ことを特徴とする付記３〜５のいずれか一つに記載のデータ転送装置。
【００８５】
（付記７）データを第一メモリに記憶する第一制御部と、
データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、
優先度に応じて第一制御部と第二制御部のいずれかにデータを振り分ける振分部と、
前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードするＣＰＵと、を有し、
前記ＣＰＵは、装置外部への送信順にデータを前記第一メモリを介してＤＭＡにより前記第一制御部に転送し、
前記装置外部へ送信するデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記第二制御部に転送する、
ことを特徴とするデータ転送装置。
【００８６】
（付記８）前記第一制御部は、ＤＭＡコントローラであり、
前記第二制御部は、ＰＩＯコントローラであり、
前記ＤＭＡコントローラあるいは前記ＰＩＯコントローラにより転送された前記データを調停して出力する調停部と、
前記調停部から出力されたデータを送信する送信部と、
をさらに有し、
前記調停部は、前記データが有する優先度が高い場合、当該データを優先的に出力することを特徴とする付記７に記載のデータ転送装置。
【００８７】
（付記９）ＣＰＵと、データを第一メモリに記憶する第一制御部と、データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、を有してデータ転送するデータ転送装置のデータ転送方法において、
前記ＣＰＵは、前記第二メモリからデータをリードし、前記第二メモリにデータがない場合に前記第一メモリからデータをリードする、
ことを特徴とするデータ転送方法。
【００８８】
（付記１０）ＣＰＵと、データを第一メモリに記憶する第一制御部と、データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、を有してデータ転送するデータ転送装置のデータ転送方法において、
前記第一制御部は、装置外部からの受信順にデータを前記第一メモリを介して前記ＣＰＵにＤＭＡ転送し、
前記第二制御部は、装置外部から受信したデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記ＣＰＵに転送する、
ことを特徴とするデータ転送方法。
【００８９】
（付記１１）ＣＰＵと、データを第一メモリに記憶する第一制御部と、データを前記第一メモリより容量が小さい第二メモリに記憶する第二制御部と、を有してデータ転送するデータ転送装置のデータ転送方法において、
前記ＣＰＵは、
装置外部への送信順に前記データを前記第一メモリを介してＤＭＡにより前記第一制御部に転送し、
前記装置外部へ送信するデータが有する優先度が高い場合、当該データをＰＩＯにより直接前記第二制御部に転送する、
ことを特徴とするデータ転送方法。
【符号の説明】
【００９０】
１００  データ転送装置
１０１  ＣＰＵ
１０２  メモリ（第一のメモリ）
１０３  転送制御部（受信）
１０４  デバイス
１０５  バス
１０６，１１６，２０６，２１６  ディスクリプタ
１０７，１１７，１１８，２０７，２１７，２１８  データバッファ
１１１  受信データ制御部
１１２，２１２  ＤＭＡコントローラ（第一制御部）
１１３，２１３  ＰＩＯコントローラ（第二制御部）
１１４，２１１  バスインタフェース
１１５  設定部
１２１  受信部
１２２  転送方路選択部（振分部）
１２３  ヘッダー解析部
１２４  バッファ量監視部
２０１  転送制御部（送信）
２１４  送信調停処理部
２１５  送信部
【図１】
2018025879.tif 000003
【図２】
2018025879.tif 000004
【図３Ａ】
2018025879.tif 000005
【図３Ｂ】
2018025879.tif 000006
【図３Ｃ】
2018025879.tif 000007
【図４Ａ】
2018025879.tif 000008
【図４Ｂ】
2018025879.tif 000009