JP5955489B1 - データ転送装置、データ転送方法及びデータ転送プログラム - Google Patents

データ転送装置、データ転送方法及びデータ転送プログラム Download PDF

Info

Publication number
JP5955489B1
JP5955489B1 JP2016517579A JP2016517579A JP5955489B1 JP 5955489 B1 JP5955489 B1 JP 5955489B1 JP 2016517579 A JP2016517579 A JP 2016517579A JP 2016517579 A JP2016517579 A JP 2016517579A JP 5955489 B1 JP5955489 B1 JP 5955489B1
Authority
JP
Japan
Prior art keywords
transfer
data transfer
data
unit
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016517579A
Other languages
English (en)
Other versions
JPWO2017090138A1 (ja
Inventor
寛隆 茂田井
寛隆 茂田井
昌弘 出口
昌弘 出口
章雄 出原
章雄 出原
下谷 光生
光生 下谷
村山 修
修 村山
哲史 藤▲崎▼
哲史 藤▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5955489B1 publication Critical patent/JP5955489B1/ja
Publication of JPWO2017090138A1 publication Critical patent/JPWO2017090138A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/30Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

データ転送装置(10)は、主記憶装置(12)と2次記憶装置(131)といった周辺装置(13)との間のデータ転送を行う。データ転送装置(10)は、プロセッサ(11)で実行されている処理といった情報に基づきデータ転送の発生頻度を推定し、データ転送の発生頻度が高いほど、1回のデータ転送において転送されるデータ量を示す転送長を短く設定し、設定された転送長により、主記憶装置(12)と周辺装置(13)との間のデータ転送を指示する。

Description

この発明は、外部記憶装置から主記憶装置へのデータ転送技術に関する。
特許文献1には、DMA(Direct Memory Access)転送について記載されている。特許文献1に記載されているように、主記憶装置と2次記憶装置とのデータ転送にはDMA転送が用いられる場合がある。DMA転送とは、CPU(Central Processing Unit)からの転送要求に従い、主記憶装置と2次記憶装置とがCPUを介在せず直接にデータ転送を行う技術である。DMA転送を用いることにより、データ転送中にCPUは他の処理を実行することができる。
これに対して、CPUが介在するデータ転送のことをPIO(Programmed IO)という。DMA転送とPIOとのどちらを用いるかが、装置の起動時にOS(Operating System)により設定され、DMA転送とPIOとが混在して用いられることはない。
DMA転送では転送長は、転送を行う装置が対応する範囲で固定的に設定される。具体的には、PCI(Peripheral Component Interconnect)バスで接続された場合、CACHE_LINE_SIZEに指定されたサイズが転送長となる。転送長は、装置の起動時にBIOS(Basic Input/Output System)又はOSに設定される。
DMA転送のトランザクションを実行中は、データの転送にバスが占有されるため、他のDMA転送のトランザクションは待たされる。
特開平05−073476号公報
DMA転送の設定は転送毎に行う必要がある。そのため、DMA転送における転送長が長いほど、設定を行う回数が減り、データ転送にかかる時間を短くできる。しかし、DMA転送における転送長が長いほど、1つのDMA転送の処理に時間がかかるため、他のDMA転送が長く待たされる可能性がある。
この発明は、DMA転送を効率的に行いつつ、待ち時間を短くすることを目的とする。
この発明に係るデータ転送装置は、
主記憶装置と周辺装置との間のデータ転送を行うデータ転送装置であり、
前記データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長を短く設定する設定部と、
前記設定部によって設定された転送長により、主記憶装置と周辺装置との間のデータ転送を指示する転送部と
を備える。
この発明では、データ転送の発生頻度が高いほど転送長が短くなる。そのため、データ転送の発生頻度が低く、待ちが発生し辛い場合には、転送長が長くなり、データ転送時間を短くできる。一方、データ転送の発生頻度が高く、待ちが発生し易い場合には、転送長が短くなり、待ち時間を短くできる。
実施の形態1に係るデータ転送装置10の構成図。 実施の形態1に係るOS20の動作を示すフローチャート。 実施の形態1に係る入出力部30の動作を示すフローチャート。 実施の形態1に係るデータ転送装置10の動作例を示す図。 変形例1に係るデータ転送装置10の構成図。 変形例2に係るデータ転送装置10の構成図。 変形例3に係るデータ転送装置10の構成図。 実施の形態2に係るデータ転送装置10の構成図。 実施の形態2に係るOS20の動作を示すフローチャート。 実施の形態2に係る入出力部30の動作を示すフローチャート。 実施の形態2に係るデータ転送装置10の動作例を示す図。
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係るデータ転送装置10の構成を説明する。
データ転送装置10は、コンピュータである。
データ転送装置10は、プロセッサ11と、主記憶装置12と、周辺装置13と、DMAC14(DMA Controller)とを備える。実施の形態1では、周辺装置13は、2次記憶装置131である。周辺装置13は、オーディオコントローラ、ディスプレイコントローラ、センサー、LED表示器、CAN(登録商標,Controller Area Network)といったネットワークのインタフェースであってもよい。周辺装置13は、複数備えられていてもよい。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
データ転送装置10は、OS20と、入出力部30と、アプリケーション40とを備える。OS20は、機能構成として、要求部21と、アクセス部22とを備える。入出力部30は、OS20とは別に動作するソフトウェアであり、機能構成として、設定部31と、転送部32とを備える。アプリケーション40は、OS20上で動作するソフトウェアである。
2次記憶装置131には、OS20と入出力部30とアプリケーション40とを実現するプログラムが記憶されている。このプログラムは、主記憶装置12にロードされる。主記憶装置12にロードされたプログラムは、プロセッサ11に読み込まれ、プロセッサ11によって実行される。
プロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11は、具体的には、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
主記憶装置12は、具体的には、RAM(Random Access Memory)である。
2次記憶装置131は、具体的には、HDD(Hard Disk Drive)である。また、2次記憶装置は、SD(Secure Digital)メモリカード、CF(CompactFlash)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬記憶媒体であってもよい。
DMAC14は、DMA転送を行うLSI(Large Scale Integration)である。図1では、DMAC14が周辺装置13と独立して示されているが、DMAC14は周辺装置13に内蔵されていてもよい。
プロセッサ11によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、主記憶装置12、又は、プロセッサ11内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ11によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、主記憶装置12に記憶されるものとして説明する。
***動作の説明***
図2から図4を参照して、実施の形態1に係るデータ転送装置10の動作を説明する。
実施の形態1に係るデータ転送装置10の動作は、実施の形態1に係るデータ転送方法に相当する。また、実施の形態1に係るデータ転送装置10の動作は、実施の形態1に係るデータ転送プログラムの処理に相当する。
実施の形態1では、データ転送装置10は、主記憶装置12と2次記憶装置131との間で、DMA転送によりデータ転送を行う。
図2を参照して、実施の形態1に係るOS20の動作を説明する。
OS20では、ステップS101からステップS102の処理と、ステップS103からステップS107の処理とが並行して実行される。
ステップS101では、要求部21は、プロセッサ11で行われている処理が変わったかを判定する。
要求部21は、処理が変わった場合、処理をステップS102に進める。一方、処理が変わっていない場合、一定時間経過後、ステップS101を再び実行する。
ステップS102では、要求部21は、プロセッサ11で行われている処理に応じて、DMA転送の転送長の変更要求を出力する。ここでは、要求部21は、プロセッサ11で行われている処理に応じてデータ転送の発生頻度を推定し、推定したデータ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する。
具体的には、要求部21は、プロセッサ11で行われている処理が変わると、プロセッサ11で行われている処理により、データ転送の発生頻度を推定する。要求部21は、プロセッサ11で実行されるプログラム毎に、単位時間当たりのデータ転送の発生予想数を事前に記憶しておき、プロセッサ11で実行されているプログラムについて記憶された発生予想数を合計してデータ転送の発生頻度を推定することが可能である。要求部21は、データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長が短くなるように転送長を決定する。そして、要求部21は、決定した転送長を主記憶装置12に書き込むとともに、主記憶装置12における変更要求フラグに1を設定する。
ステップS103では、アクセス部22は、アプリケーション40又はOS20の内部処理から発行されるデータの読出要求の受け付け待ちをする。
アクセス部22は、読出要求を受け付けた場合、処理をステップS104に進め、読出要求を受け付けていない場合、一定時間経過後、再びステップS103を実行する。
ステップS104では、アクセス部22は、ステップS102で受け付けた読出要求によって要求されたデータが、2次記憶装置131から主記憶装置12に転送済であるか否かを判定する。具体的には、アクセス部22は、2次記憶装置131から主記憶装置12に転送済になっているデータのインデックスを保持しておき、インデックスから要求されたデータを検索することにより、転送済であるか否かを判定する。
アクセス部22は、未転送の場合、処理をステップS105に進め、転送済の場合、処理をステップS107に進める。
ステップS105では、アクセス部22は、次のDMA転送で読出要求によって要求されたデータが転送されるように、DMAC14に転送要求を追加する。具体的には、アクセス部22は、DMAC14における実行順位の先頭に転送要求を書き込む。なお、アクセス部22は、複数の転送要求が1つの命令としてまとめて記載されたコマンドチェーンがDMAC14に設定されている場合には、コマンドチェーンの先頭に転送要求を書き込む。
アクセス部22は、転送要求として、転送元となる2次記憶装置131のアドレスを示す転送元アドレスと、転送先となる主記憶装置12のアドレスを示す転送先アドレスと、転送長とを書き込む。ここでの転送長は、ステップS102で決定された転送長にしてもよいし、ステップS102で決定された転送長とは無関係に決定されてもよい。具体的には、ここでの転送要求が効率的に処理されるように、ステップS102で決定された転送長とは無関係に転送長を長くしてもよい。
ステップS106では、アクセス部22は、ステップS105で追加した転送要求によって要求されたデータが、主記憶装置12に転送されることを待つ。具体的には、アクセス部22は、DMAC14からDMA転送が完了したことを示す割り込みを受け付ける、又は、ポーリングといった手段によりDMAC14に定期的に確認することにより、データが主記憶装置12に転送されたことを確認する。アクセス部22は、データが主記憶装置12に転送されたことが確認されるまで、プロセッサ11に他の処理を実行させる。
ステップS107では、アクセス部22は、ステップS103で受け付けた読出要求の要求元に転送されたデータを受け渡す。具体的には、アクセス部22は、主記憶装置12におけるデータを読み出してプロセス間通信により要求元に渡す。
図3を参照して、実施の形態1に係る入出力部30の動作を説明する。
ステップS201では、転送部32は、動作開始状態になったか否かを判定する。実施の形態1では、転送部32は、データ転送装置10の起動が開始されると、動作開始状態になったと判定するものとする。なお、転送部32は、OS20の初期化処理が開始された、アプリケーション40の起動を開始された、アプリケーション40が地図といったデータの表示を開始した、外部からの入力を契機としてプロセッサ11が処理を開始したといった他の状態になった場合に、動作開始状態になったと判定してもよい。
転送部32は、動作開始状態になった場合、処理をステップS202に進め、動作開始状態になっていない場合、一定時間経過後、再びステップS201を実行する。
続いて、入出力部30は、2次記憶装置131における転送範囲の転送が終わるまで、ステップS202からステップS205までの処理を繰り返し実行する。
ステップS202では、設定部31は、ステップS102で要求部21から変更要求が出力されたか否かを判定する。具体的には、設定部31は、主記憶装置12における変更要求フラグに1が設定されている場合、変更要求が出力されたと判定する。
設定部31は、変更要求が出力された場合、処理をステップS203に進め、変更要求が出力されていない場合、処理をステップS205に進める。
ステップS203では、設定部31は、変更要求に含まれる転送長を用いるように転送部32に設定する。具体的には、設定部31は、主記憶装置12から転送長を読み出し、主記憶装置12における転送長変数に読み出した転送長を書き込む。
ステップS204では、設定部31は、主記憶装置12の変更要求フラグに0を設定する。これにより、OS20の要求部21に変更要求の変更が完了したことが通知される。
ステップS205では、転送部32は、転送長変数に設定された転送長に従い、主記憶装置12と周辺装置13である2次記憶装置131との間のデータ転送を指示する。具体的には、転送部32は、転送範囲のうち転送が完了していない範囲の先頭のアドレスを転送元アドレスとし、転送先の主記憶装置12のアドレスを転送先アドレスとし、転送長変数に設定された値を転送長とする転送要求をDMAC14に書き込む。
図4を参照して、実施の形態1に係るデータ転送装置10の動作例を説明する。
図4では、データ転送装置10の起動時の動作が示されている。図4では、実線矢印が要求の流れを示しており、破線矢印がデータの流れを示している。ここでは、データ転送は、セクタ単位で行われるとする。
処理A11では、データ転送装置10の起動が開始されると転送部32が動作開始状態になったと判定して(ステップS201)、転送要求をDMAC14に書き込むことによりDMA転送を行う(ステップS205)。ここでは、転送長の初期値は6セクタになっているものとする。つまり、転送長変数には初期値として6セクタが設定されているものとする。これにより、2次記憶装置131のセクタ1〜6が主記憶装置12に転送される。
次に、処理B11では、OS20の初期化が完了したため、要求部21がアプリケーション40の起動前に、転送長を2セクタに変更する変更要求を出力する(ステップS102)。つまり、要求部21は、OS20の初期化後は、OS20の初期化中よりも、データ転送の発生頻度が多いと推定し、転送長を6セクタよりも短い2セクタにすることを要求する。
すると、処理A12では、設定部31が変更要求に応じて転送長変数に2セクタを設定する(ステップS202〜S204)。そして、転送部32が変更後の転送長変数に従い、DMA転送を行う(ステップS205)。これにより、2次記憶装置131のセクタ7〜8が主記憶装置12に転送される。
次に、処理B12では、アクセス部22がアプリケーション40から2次記憶装置131のセクタ1の読出要求を受け付ける(ステップS103)。ここでは、アクセス部22は、セクタ1は既に転送済であるため(ステップS104)、アプリケーション40にセクタ1のデータを受け渡す(ステップS107)。
この間に、転送部32によって2度のDMA転送が行われ、2次記憶装置131のセクタ9〜10及びセクタ11〜12が主記憶装置12に転送されたとする。
次に、処理B13では、アクセス部22がアプリケーション40から2次記憶装置131のセクタ30の読出要求を受け付ける(ステップS103)。ここでは、アクセス部22は、セクタ30は未転送であるため(ステップS104)、次のDMA転送でセクタ30が転送されるように転送要求をDMAC14に追加する。これにより、2次記憶装置131のセクタ30が主記憶装置12に転送される。
その後、転送部32によって2度のDMA転送が行われ、2次記憶装置131のセクタ13〜14及びセクタ15〜16が主記憶装置12に転送されたとする。
次に、処理B14では、アプリケーション40の起動が完了したため、要求部21が転送長を4セクタに変更する変更要求を出力する(ステップS102)。つまり、要求部21は、アプリケーション40の起動後は、アプリケーション40の起動中よりも、データ転送の発生頻度が少ないと推定し、転送長を2セクタよりも長い4セクタにすることを要求する。
すると、処理A13では、設定部31が変更要求に応じて転送長変数に4セクタを設定する(ステップS202〜S204)。そして、転送部32が変更後の転送長変数に従い、DMA転送を行う(ステップS205)。これにより、2次記憶装置131のセクタ17〜20が主記憶装置12に転送される。
以降、転送部32によってDMA転送が繰り返され、2次記憶装置131のセクタ21〜40が主記憶装置12に転送される。
***実施の形態1の効果***
以上のように、実施の形態1に係るデータ転送装置10では、データ転送の発生頻度が高いほど転送長が短くなる。そのため、データ転送の発生頻度が低く、待ちが発生し辛い場合には、転送長が長くなり、データ転送時間を短くできる。一方、データ転送の発生頻度が高く、待ちが発生し易い場合には、転送長が短くなり、待ち時間を短くできる。
実施の形態1に係るデータ転送装置10では、動作開始状態となった場合に、転送部32が予め指定された指定データを周辺装置13である2次記憶装置131から主記憶装置12に転送する。そのため、OS20及びアプリケーション40から要求される前に、OS20及びアプリケーション40から要求されると予想されるデータを主記憶装置12に転送しておくことができる。
実施の形態1では、データ転送装置10の起動が開始されると、動作開始状態になったと判定される。つまり、実施の形態1に係るデータ転送装置10では、データ転送装置10の起動時に、予め指定された指定データを周辺装置13である2次記憶装置131から主記憶装置12に転送する。そのため、データ転送装置10の起動後にOS20及びアプリケーション40からデータを要求される前に、OS20及びアプリケーション40から要求されると予想されるデータを主記憶装置12に転送しておくことができる。
図4を参照して説明したように、要求部21は、データ転送装置10の起動時において、データ転送装置10のOS20の初期化後は、OS20の初期化中よりも、データ転送の発生頻度が多いと推定し、転送長を短くすることを要求する。また、要求部21は、アプリケーション40の起動後は、アプリケーション40の起動中よりも、データ転送の発生頻度が少ないと推定し、転送長を長くすることを要求する。これにより、OS20及びアプリケーション40の起動時の待ち時間を短くしつつ、OS20及びアプリケーション40から要求されると予想されるデータを短時間で主記憶装置12に転送しておくことができる。
カーナビゲーションシステムのような車載器では、ナビゲーション機能とオーディオ機能といった複数の機能が搭載される。各機能の実行に必要なプログラム及びデータは、HDDといった不揮発性の2次記憶装置に格納され、システムの起動時に主記憶装置に読み出され、プロセッサにより実行される。
実施の形態1に係るデータ転送装置10を車載器に適用すれば、起動処理の妨げにならないように待ち時間を減らしつつ、2次記憶装置から主記憶装置へのデータ転送時間を短くできる。これにより、車載器のサービス提供までの時間を短くすることができる。
また、車載器では、走行履歴とオーディオの再生履歴といったシステムの状態を示す情報が、プロセッサにより主記憶装置から2次記憶装置に適宜転送され記憶される。これら情報はシステムの起動時に前回の状態を復元するために用いられる。また、これらの情報は、ユーザが頻繁に向かう目的地を設定する、又は、お気に入りの音楽を再生するといったときに用いられる。
実施の形態1に係るデータ転送装置10を車載器に適用すれば、利用者へのサービス提供のための処理の妨げにならないように待ち時間を減らしつつ、主記憶装置から2次記憶装置へのデータ転送時間を短くできる。これにより、利用者への影響を抑えつつ、サービス提供に重要なデータを確実に保存することが可能になる。
なお、上記説明では、周辺装置13である2次記憶装置131から主記憶装置12にデータが転送される場合を説明した。しかし、主記憶装置12から周辺装置13にデータが転送される場合にも応用できる。
また、上記説明では、変更要求フラグを用いて、変更要求が発生したことが入出力部30に伝達された。しかし、変更要求フラグを用いることに代え、メッセージキュー又はレジスタを用いて、変更要求が発生したことが入出力部30に伝達されてもよい。
***他の構成***
<変形例1>
実施の形態1では、OS20と入出力部30とが同一のプロセッサ11で実行された。しかし、変形例1として、OS20と入出力部30とはそれぞれ別のプロセッサ11で並列に実行されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
図5を参照して、変形例1に係るデータ転送装置10の構成を説明する。
データ転送装置10は、プロセッサ11A及びプロセッサ11Bと、主記憶装置12と、周辺装置13と、DMAC14とを備える。OS20は、プロセッサ11Aに読み込まれ、プロセッサ11Aによって実行される。入出力部30は、プロセッサ11Bに読み込まれ、プロセッサ11Bによって実行される。
<変形例2>
実施の形態1では、入出力部30がOS20とは別に動作するソフトウェアであった。しかし、変形例2として、入出力部30がOS20上で動作するソフトウェアであってもよい。この変形例2について、実施の形態1と異なる点を説明する。
図6を参照して、変形例2に係るデータ転送装置10の構成を説明する。
データ転送装置10は、OS20と、アプリケーション40とを備える。OS20は、機能構成として、要求部21と、アクセス部22と、設定部31と、転送部32とを備える。設定部31と転送部32とは、デバイスドライバであってもよいし、ユーザランドのソフトウェアであってもよい。また、スレッド、プロセスとして動作するソフトウェアであってもよい。
設定部31と転送部32とはOS20上で動作するソフトウェアであるが、ブートローダが起動すれば、設定部31と転送部32とは動作できる。そのため、OS20の起動中であっても、設定部31と転送部32とは動作することができる。ブートローダとは、データ転送装置10についての最小限の初期化をするとともに、OS20を主記憶装置12に読み込むソフトウェアである。
<変形例3>
実施の形態1では、要求部21と、アクセス部22と、設定部31と、転送部32との機能がソフトウェアで実現された。しかし、変形例3として、要求部21と、アクセス部22と、設定部31と、転送部32との機能はハードウェアで実現されてもよい。この変形例3について、実施の形態1と異なる点を説明する。
図7を参照して、変形例3に係るデータ転送装置10の構成を説明する。
要求部21と、アクセス部22と、設定部31と、転送部32との機能がハードウェアで実現される場合、データ転送装置10は、さらに、処理回路15とを備える。処理回路15は、要求部21と、アクセス部22と、設定部31と、転送部32との機能を実現する専用の電子回路である。
処理回路15は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
各部の機能を1つの処理回路15で実現してもよいし、各部の機能を複数の処理回路15に分散させて実現してもよい。
<変形例4>
変形例4として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、要求部21と、アクセス部22と、設定部31と、転送部32とのうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
プロセッサ11と主記憶装置12と処理回路15とを、総称して「プロセッシングサーキットリー」という。つまり、要求部21と、アクセス部22と、設定部31と、転送部32との機能は、プロセッシングサーキットリーにより実現される。すなわち、データ転送装置10が図1と図6と図7とのいずれに示した構成であっても、要求部21と、アクセス部22と、設定部31と、転送部32との機能はプロセッシングサーキットリーにより実現される。
実施の形態2.
実施の形態1では、プロセッサ11で行われている処理により、データ転送の発生頻度が推定され、転送長が決定された。実施の形態2では、さらに、データ転送を要求する要求元の数によっても、データ転送の発生頻度が推定され、転送長が決定される点が実施の形態1と異なる。実施の形態2では、この異なる点について説明する。
***構成の説明***
図8を参照して、実施の形態2に係るデータ転送装置10の構成を説明する。
実施の形態2では、周辺装置13は、2次記憶装置131と、インタフェース132である。
インタフェース132は、Bluetooth(登録商標)、WiFi、CNAといったネットワークのインタフェースである。インタフェース132は、ネットワーク毎に設けられていてもよいし、複数のネットワークで共有された状態で設けられていてもよい。データ転送装置10は、インタフェース132を介して、外部装置50と接続される。
転送部32は、機能構成として、第1転送部321と、第2転送部322とを備える。第1転送部321は、主記憶装置12と2次記憶装置131との間のデータ転送を行うソフトウェアであり、第2転送部322は、主記憶装置12とインタフェース132との間のデータ転送を行うソフトウェアである。
***動作の説明***
図9から図11を参照して、実施の形態2に係るデータ転送装置10の動作を説明する。
実施の形態2に係るデータ転送装置10の動作は、実施の形態2に係るデータ転送方法に相当する。また、実施の形態2に係るデータ転送装置10の動作は、実施の形態2に係るデータ転送プログラムの処理に相当する。
実施の形態2では、データ転送装置10は、主記憶装置12と、2次記憶装置131及びインタフェース132との間で、DMA転送によりデータ転送を行う。ここでは、2次記憶装置131及びインタフェース132は、同一のバスを用いて主記憶装置12とデータ転送を行うものとする。
図9を参照して、実施の形態2に係るOS20の動作を説明する。
OS20では、ステップS301からステップS302の処理と、ステップS303からステップS307の処理と、ステップS308からステップS311の処理とが並行して実行される。
ステップS301では、要求部21は、プロセッサ11で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数との少なくともいずれかが変わったかを判定する。
要求部21は、少なくともいずれかが変わった場合、処理をステップS302に進める。一方、いずれも変わっていない場合、一定時間経過後、ステップS301を再び実行する。
ステップS302では、要求部21は、プロセッサ11で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数とに応じて、DMA転送の転送長の変更要求を出力する。
具体的には、要求部21は、プロセッサ11で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数とにより、データ転送の発生頻度を推定する。要求部21は、データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長が短くなるように転送長を決定する。そして、要求部21は、決定した転送長を主記憶装置12に書き込むとともに、主記憶装置12における変更要求フラグに1を設定する。ここでは、第1転送部321と第2転送部322とについて別々に転送長が書き込まれ、第1転送部321と第2転送部322とについて別々に変更要求フラグが設定される。
ステップS303からステップS307の処理は、図2のステップS103からステップS107の処理と同じである。
ステップS308では、アクセス部22は、アプリケーション40又はOS20の内部処理から発行される、インタフェース132によって接続された外部装置50からのデータの取得要求の受け付け待ちをする。
アクセス部22は、取得要求を受け付けた場合、処理をステップS309に進め、取得要求を受け付けていない場合、一定時間経過後、再びステップS308を実行する。
ステップS309では、アクセス部22は、インタフェース132を有効に設定する。具体的には、アクセス部22は、インタフェース132の電源をオンにする。
ステップS310では、アクセス部22は、インタフェース132からデータが主記憶装置12に転送されることを待つ。具体的には、アクセス部22は、DMAC14からDMA転送が完了したことを示す割り込みを受け付ける、又は、ポーリングといった手段によりDMAC14に定期的に確認することにより、データが主記憶装置12に転送されたことを確認する。アクセス部22は、データが主記憶装置12に転送されたことが確認されるまで、プロセッサ11に他の処理を実行させる。
ステップS311では、アクセス部22は、ステップS308で受け付けた取得要求の要求元に転送されたデータを受け渡す。具体的には、アクセス部22は、主記憶装置12におけるデータを読み出してプロセス間通信により要求元に渡す。
なお、アクセス部22は、データを受け渡すと、インタフェース132を無効にする。具体的には、アクセス部22は、インタフェース132の電源をオフにする。
図10を参照して、実施の形態2に係る入出力部30の動作を説明する。
入出力部30では、ステップS401からステップS405の処理と、ステップS406からステップS410の処理とが並行して実行される。
ステップS401からステップS405の処理は、図3のステップS201からステップS205の処理と同じである。但し、ステップS401からステップS405の処理は、第1転送部321によって実行される。また、ステップS402及びステップS404では、第1転送部321用の変更要求フラグが用いられ、ステップS403では、第1転送部321用の転送長が用いられる。
ステップS406では、第2転送部322は、インタフェース132が接続された外部装置50からデータを受信したか否かを判定する。
第2転送部322は、データを受信した場合、処理をステップS407に進め、受信していない場合、一定時間経過後、再びステップS406を実行する。
続いて、入出力部30は、受信したデータの転送が終わるまで、ステップS407からステップS410までの処理を繰り返し実行する。
ステップS407では、設定部31は、ステップS302で要求部21から変更要求が出力されたか否かを判定する。具体的には、設定部31は、主記憶装置12における第2転送部322用の変更要求フラグに1が設定されている場合、変更要求が出力されたと判定する。
設定部31は、変更要求が出力された場合、処理をステップS408に進め、変更要求が出力されていない場合、処理をステップS410に進める。
ステップS408では、設定部31は、変更要求に含まれる転送長を用いるように転送部32に設定する。具体的には、設定部31は、主記憶装置12から第2転送部322用の転送長を読み出し、主記憶装置12における転送長変数に読み出した転送長を書き込む。
ステップS409では、設定部31は、主記憶装置12の第2転送部322用の変更要求フラグに0を設定する。これにより、OS20の要求部21に変更要求の変更が完了したことが通知される。
ステップS410では、転送部32は、転送要求をDMAC14に書き込む。具体的には、転送部32は、受信されたデータのうち転送が完了していない範囲の先頭のアドレスを転送元アドレスとし、転送先の主記憶装置12のアドレスを転送先アドレスとし、転送長変数に設定された値を転送長とする転送要求を書き込む。
図11を参照して、実施の形態2に係るデータ転送装置10の動作例を説明する。
図11では、データ転送装置10の起動時の動作が示されている。図11では、実線矢印が要求の流れを示しており、破線矢印がデータの流れを示している。ここでは、2次記憶装置131についてのデータ転送はセクタ単位で行われ、インタフェース132についてのデータ転送はバイト単位で行われる。
処理A21,A22と、処理B21とは、図4に示す処理A11,A12と、処理B11と同様であるため、説明を省略する。
処理A22の後、処理B22では、アクセス部22がアプリケーション40からインタフェース132を介して接続された外部装置50からデータを取得する取得要求を受け付ける(ステップS308)。そして、アクセス部22がインタフェース132を有効にする(ステップS309)。ここでは、第2転送部322用の転送長は1536バイトになっているものとする。つまり、第2転送部322用の転送長変数には初期値として1536バイトが設定されているものとする。
この間に、転送部32によって2度のDMA転送が行われ、2次記憶装置131のセクタ9〜10及びセクタ11〜12が主記憶装置12に転送されたとする。
次に、処理B23では、要求部21が第2転送部322についての転送長を512バイトに変更する変更要求を出力する(ステップS302)。つまり、要求部21は、同一のバスを用いるデータ転送を要求する要求元としてインタフェース132が追加され、要求元の数が増えたため、データ転送の発生頻度が多いと推定し、転送長を1536バイトよりも短い512バイトにすることを要求する。
すると、処理A23では、設定部31が変更要求に応じて第2転送部322用の転送長変数に512バイトを設定する(ステップS407〜S409)。そして、第2転送部322が変更後の転送長変数に従い、DMA転送を行う(ステップS410)。これにより、インタフェース132から512バイトのデータが主記憶装置12に転送される。
その後、第1転送部321と第2転送部322とによりDMA転送が行われ(ステップS402〜S405、ステップS407〜S410)、2次記憶装置131のセクタ114まで主記憶装置12に転送され、インタフェース132が受信したデータが全て転送されたとする。
すると、処理B24では、インタフェース132が受信したデータが全て転送されたため、アクセス部22がインタフェース132を無効にする(ステップS410)。これにより、データ転送装置10の電力消費が抑えられる。
処理B25,処理A24は、図4に示す処理B14と、処理A13と同様であるため、説明を省略する。
なお、処理B23では、要求部21は、第2転送部322の転送長だけを短くすることを要求した。しかし、要求部21は、第2転送部322の転送長だけでなく、第1転送部321の転送長も短くすることを要求してもよい。具体的には、要求部21は、第2転送部322の転送長を1536バイトよりも短い512バイトにすることを要求するとともに、第1転送部321の転送長を2セクタよりも短い1セクタにすることを要求してもよい。
***実施の形態2の効果***
以上のように、実施の形態2に係るデータ転送装置10では、プロセッサ11で行われている処理だけでなく、データ転送を要求する要求元の数によっても、データ転送の発生頻度が推定され、転送長が決定される。そのため、データ転送を行う外部装置50が接続された場合には、より適切にデータ転送の発生頻度が推定でき、より適切に転送長を決定することができる。
***他の構成***
<変形例5>
実施の形態2では、データ転送を要求する要求元の数が増えると、転送長が短く設定された。しかし、変形例5として、一部の要求元の転送長を長くし、他の要求元の転送長を短くしてもよい。この変形例5について、実施の形態2と異なる点を説明する。
変形例5では、要求部21は、事前に要求元毎に優先度を定めておく。変形例5では、インタフェース132の優先度が高と定められ、他の優先度が低と定められているとする。
要求部21は、データ転送を要求する要求元の数が増えると、優先度が高である要求元についての転送長を長くし、優先度が低である要求元についての転送長を短くするように要求する。変形例5では、図11の処理B23では、要求部21が第1転送部321についての転送長を2セクタよりも短い1セクタに変更するとともに、第2転送部322についての転送長を1536バイトよりも長い3072バイトに変更する変更要求を出力する。
以上のように、優先度が高い要求元についての転送長を長くすることで、優先度が高い要求元についてのデータ転送を早く完了させることが可能となる。
<変形例6>
実施の形態1と同じように、要求部21と、アクセス部22と、設定部31と、転送部32との機能がソフトウェアで実現された。しかし、実施の形態1の変形例3と同じように、要求部21と、アクセス部22と、設定部31と、転送部32との機能はハードウェアで実現されてもよい。また、実施の形態1の変形例4と同じように、要求部21と、アクセス部22と、設定部31と、転送部32とは、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
10 データ転送装置、11 プロセッサ、12 主記憶装置、13 周辺装置、131 2次記憶装置、132 インタフェース、14 DMAC、20 OS、21 要求部、22 アクセス部、30 入出力部、31 設定部、32 転送部、321 第1転送部、322 第2転送部、40 アプリケーション、50 外部装置。

Claims (6)

  1. 主記憶装置と周辺装置との間のデータ転送を行うデータ転送装置であり、
    前記データ転送装置の起動時において、前記データ転送装置のOS(Operating System)の初期化後は、前記OSの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する要求部と、
    前記データ転送装置の起動時に、前記要求部によって要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示する転送部と
    を備えるデータ転送装置。
  2. 前記要求部は、プロセッサで行われている処理により、前記データ転送の発生頻度を推定する
    請求項1に記載のデータ転送装置。
  3. 前記要求部は、前記データ転送を要求する要求元の数により、前記データ転送の発生頻度を推定する
    請求項1又は2に記載のデータ転送装置。
  4. 前記要求部は、一部の前記要求元については他の前記要求元よりも転送長を長くすることを要求する
    請求項3に記載のデータ転送装置。
  5. 主記憶装置と周辺装置との間のデータ転送を行うデータ転送方法であり、
    データ転送装置の起動時において、前記データ転送装置のOS(Operating System)の初期化後は、前記OSの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求し、
    前記データ転送装置の起動時に、要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示するデータ転送方法。
  6. 主記憶装置と周辺装置との間のデータ転送を行うデータ転送プログラムであり、
    データ転送装置の起動時において、前記データ転送装置のOS(Operating System)の初期化後は、前記OSの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、1回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する要求処理と、
    前記データ転送装置の起動時に、前記要求処理によって要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示する転送処理と
    をコンピュータに実行させるデータ転送プログラム。
JP2016517579A 2015-11-26 2015-11-26 データ転送装置、データ転送方法及びデータ転送プログラム Active JP5955489B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/083156 WO2017090138A1 (ja) 2015-11-26 2015-11-26 データ転送装置、データ転送方法及びデータ転送プログラム

Publications (2)

Publication Number Publication Date
JP5955489B1 true JP5955489B1 (ja) 2016-07-20
JPWO2017090138A1 JPWO2017090138A1 (ja) 2017-11-24

Family

ID=56421677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016517579A Active JP5955489B1 (ja) 2015-11-26 2015-11-26 データ転送装置、データ転送方法及びデータ転送プログラム

Country Status (5)

Country Link
US (1) US20180307640A1 (ja)
JP (1) JP5955489B1 (ja)
CN (1) CN108292284A (ja)
DE (1) DE112015007042B4 (ja)
WO (1) WO2017090138A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132497A (ja) * 1998-10-28 2000-05-12 Nec Corp Dma制御方法及び装置
JP2000187636A (ja) * 1998-12-22 2000-07-04 Nkk Corp Dma転送システム
JP2001223729A (ja) * 2000-02-10 2001-08-17 Sony Corp バスエミュレーション装置
JP2004094452A (ja) * 2002-08-30 2004-03-25 Fujitsu Ltd Dmaコントローラおよびdma転送方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573476A (ja) 1991-09-13 1993-03-26 Yokogawa Electric Corp Dma装置
JP2002024156A (ja) * 2000-07-04 2002-01-25 Mitsubishi Electric Corp Dmaコントローラおよびその転送方法
JP2003167645A (ja) * 2001-12-04 2003-06-13 Nec Yonezawa Ltd 情報処理装置
DE102004030737A1 (de) * 2004-06-25 2006-01-12 Degussa Ag Verfahren und Vorrichtung zur Extraktion von Stoffen aus silanmodifizierten Füllstoffen
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132497A (ja) * 1998-10-28 2000-05-12 Nec Corp Dma制御方法及び装置
JP2000187636A (ja) * 1998-12-22 2000-07-04 Nkk Corp Dma転送システム
JP2001223729A (ja) * 2000-02-10 2001-08-17 Sony Corp バスエミュレーション装置
JP2004094452A (ja) * 2002-08-30 2004-03-25 Fujitsu Ltd Dmaコントローラおよびdma転送方法

Also Published As

Publication number Publication date
CN108292284A (zh) 2018-07-17
US20180307640A1 (en) 2018-10-25
DE112015007042B4 (de) 2022-09-15
DE112015007042T5 (de) 2018-08-23
JPWO2017090138A1 (ja) 2017-11-24
WO2017090138A1 (ja) 2017-06-01

Similar Documents

Publication Publication Date Title
TWI493350B (zh) 用於周邊組件之高優先權命令佇列
KR102330389B1 (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
KR102353782B1 (ko) NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
KR20210011451A (ko) 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링
US11163710B2 (en) Information processor with tightly coupled smart memory unit
WO2018157836A1 (zh) 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
TW201738763A (zh) 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統
JP2009032243A (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US20240185132A1 (en) Data path for gpu machine learning training with key value ssd
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
TWI685744B (zh) 指令處理方法及使用所述方法的儲存控制器
KR20180083688A (ko) 애플리케이션 프로세서 및 집적 회로
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
JP5955489B1 (ja) データ転送装置、データ転送方法及びデータ転送プログラム
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status
US10430291B1 (en) Effective method to backup VMs in larger VM infrastructure
JP2005258509A (ja) ストレージ装置
US20140207980A1 (en) Interface control apparatus, data storage apparatus and method for interface control
US11537542B1 (en) Direct memory access circuitry and method
US11003474B2 (en) Semiconductor device for providing a virtualization technique
JP2016154001A (ja) 画像処理装置、画像処理用データ転送制御方法、及び画像処理用データ転送制御プログラム
JP2007334600A (ja) 半導体集積回路装置
CN116225318A (zh) 命令调度方法、闪存控制器、闪存设备及存储介质
JP2014048751A (ja) 情報処理装置、情報処理方法

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160506

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160614

R150 Certificate of patent or registration of utility model

Ref document number: 5955489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250