(57)【特許請求の範囲】
【請求項１】
主記憶装置と周辺装置との間のデータ転送を行うデータ転送装置であり、
前記データ転送装置の起動時において、前記データ転送装置のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の初期化後は、前記ＯＳの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する要求部と、
前記データ転送装置の起動時に、前記要求部によって要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示する転送部と
を備えるデータ転送装置。
【請求項２】
前記要求部は、プロセッサで行われている処理により、前記データ転送の発生頻度を推定する
請求項１に記載のデータ転送装置。
【請求項３】
前記要求部は、前記データ転送を要求する要求元の数により、前記データ転送の発生頻度を推定する
請求項１又は２に記載のデータ転送装置。
【請求項４】
前記要求部は、一部の前記要求元については他の前記要求元よりも転送長を長くすることを要求する
請求項３に記載のデータ転送装置。
【請求項５】
主記憶装置と周辺装置との間のデータ転送を行うデータ転送方法であり、
データ転送装置の起動時において、前記データ転送装置のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の初期化後は、前記ＯＳの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求し、
前記データ転送装置の起動時に、要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示するデータ転送方法。
【請求項６】
主記憶装置と周辺装置との間のデータ転送を行うデータ転送プログラムであり、
データ転送装置の起動時において、前記データ転送装置のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の初期化後は、前記ＯＳの初期化中よりも、前記データ転送の発生頻度が高いと推定し、前記データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する要求処理と、
前記データ転送装置の起動時に、前記要求処理によって要求された転送長に従い、指定データを前記周辺装置から前記主記憶装置に転送するデータ転送を指示する転送処理と
をコンピュータに実行させるデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、外部記憶装置から主記憶装置へのデータ転送技術に関する。
【背景技術】
【０００２】
特許文献１には、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送について記載されている。特許文献１に記載されているように、主記憶装置と２次記憶装置とのデータ転送にはＤＭＡ転送が用いられる場合がある。ＤＭＡ転送とは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からの転送要求に従い、主記憶装置と２次記憶装置とがＣＰＵを介在せず直接にデータ転送を行う技術である。ＤＭＡ転送を用いることにより、データ転送中にＣＰＵは他の処理を実行することができる。
これに対して、ＣＰＵが介在するデータ転送のことをＰＩＯ（Ｐｒｏｇｒａｍｍｅｄ  ＩＯ）という。ＤＭＡ転送とＰＩＯとのどちらを用いるかが、装置の起動時にＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）により設定され、ＤＭＡ転送とＰＩＯとが混在して用いられることはない。【０００３】
ＤＭＡ転送では転送長は、転送を行う装置が対応する範囲で固定的に設定される。具体的には、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスで接続された場合、ＣＡＣＨＥ＿ＬＩＮＥ＿ＳＩＺＥに指定されたサイズが転送長となる。転送長は、装置の起動時にＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）又はＯＳに設定される。
ＤＭＡ転送のトランザクションを実行中は、データの転送にバスが占有されるため、他のＤＭＡ転送のトランザクションは待たされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０５−０７３４７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＤＭＡ転送の設定は転送毎に行う必要がある。そのため、ＤＭＡ転送における転送長が長いほど、設定を行う回数が減り、データ転送にかかる時間を短くできる。しかし、ＤＭＡ転送における転送長が長いほど、１つのＤＭＡ転送の処理に時間がかかるため、他のＤＭＡ転送が長く待たされる可能性がある。
この発明は、ＤＭＡ転送を効率的に行いつつ、待ち時間を短くすることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るデータ転送装置は、
主記憶装置と周辺装置との間のデータ転送を行うデータ転送装置であり、
前記データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長を短く設定する設定部と、
前記設定部によって設定された転送長により、主記憶装置と周辺装置との間のデータ転送を指示する転送部と
を備える。
【発明の効果】
【０００７】
この発明では、データ転送の発生頻度が高いほど転送長が短くなる。そのため、データ転送の発生頻度が低く、待ちが発生し辛い場合には、転送長が長くなり、データ転送時間を短くできる。一方、データ転送の発生頻度が高く、待ちが発生し易い場合には、転送長が短くなり、待ち時間を短くできる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るデータ転送装置１０の構成図。
【図２】実施の形態１に係るＯＳ２０の動作を示すフローチャート。
【図３】実施の形態１に係る入出力部３０の動作を示すフローチャート。
【図４】実施の形態１に係るデータ転送装置１０の動作例を示す図。
【図５】変形例１に係るデータ転送装置１０の構成図。
【図６】変形例２に係るデータ転送装置１０の構成図。
【図７】変形例３に係るデータ転送装置１０の構成図。
【図８】実施の形態２に係るデータ転送装置１０の構成図。
【図９】実施の形態２に係るＯＳ２０の動作を示すフローチャート。
【図１０】実施の形態２に係る入出力部３０の動作を示すフローチャート。
【図１１】実施の形態２に係るデータ転送装置１０の動作例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係るデータ転送装置１０の構成を説明する。
データ転送装置１０は、コンピュータである。
データ転送装置１０は、プロセッサ１１と、主記憶装置１２と、周辺装置１３と、ＤＭＡＣ１４（ＤＭＡ  Ｃｏｎｔｒｏｌｌｅｒ）とを備える。実施の形態１では、周辺装置１３は、２次記憶装置１３１である。周辺装置１３は、オーディオコントローラ、ディスプレイコントローラ、センサー、ＬＥＤ表示器、ＣＡＮ（登録商標，Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）といったネットワークのインタフェースであってもよい。周辺装置１３は、複数備えられていてもよい。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１０】
データ転送装置１０は、ＯＳ２０と、入出力部３０と、アプリケーション４０とを備える。ＯＳ２０は、機能構成として、要求部２１と、アクセス部２２とを備える。入出力部３０は、ＯＳ２０とは別に動作するソフトウェアであり、機能構成として、設定部３１と、転送部３２とを備える。アプリケーション４０は、ＯＳ２０上で動作するソフトウェアである。
２次記憶装置１３１には、ＯＳ２０と入出力部３０とアプリケーション４０とを実現するプログラムが記憶されている。このプログラムは、主記憶装置１２にロードされる。主記憶装置１２にロードされたプログラムは、プロセッサ１１に読み込まれ、プロセッサ１１によって実行される。
【００１１】
プロセッサ１１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１１は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
主記憶装置１２は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
２次記憶装置１３１は、具体的には、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、２次記憶装置は、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。
ＤＭＡＣ１４は、ＤＭＡ転送を行うＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）である。図１では、ＤＭＡＣ１４が周辺装置１３と独立して示されているが、ＤＭＡＣ１４は周辺装置１３に内蔵されていてもよい。
【００１２】
プロセッサ１１によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、主記憶装置１２、又は、プロセッサ１１内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ１１によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、主記憶装置１２に記憶されるものとして説明する。
【００１３】
＊＊＊動作の説明＊＊＊
図２から図４を参照して、実施の形態１に係るデータ転送装置１０の動作を説明する。
実施の形態１に係るデータ転送装置１０の動作は、実施の形態１に係るデータ転送方法に相当する。また、実施の形態１に係るデータ転送装置１０の動作は、実施の形態１に係るデータ転送プログラムの処理に相当する。
実施の形態１では、データ転送装置１０は、主記憶装置１２と２次記憶装置１３１との間で、ＤＭＡ転送によりデータ転送を行う。
【００１４】
図２を参照して、実施の形態１に係るＯＳ２０の動作を説明する。
ＯＳ２０では、ステップＳ１０１からステップＳ１０２の処理と、ステップＳ１０３からステップＳ１０７の処理とが並行して実行される。
【００１５】
ステップＳ１０１では、要求部２１は、プロセッサ１１で行われている処理が変わったかを判定する。
要求部２１は、処理が変わった場合、処理をステップＳ１０２に進める。一方、処理が変わっていない場合、一定時間経過後、ステップＳ１０１を再び実行する。
【００１６】
ステップＳ１０２では、要求部２１は、プロセッサ１１で行われている処理に応じて、ＤＭＡ転送の転送長の変更要求を出力する。ここでは、要求部２１は、プロセッサ１１で行われている処理に応じてデータ転送の発生頻度を推定し、推定したデータ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長を短くすることを要求する。
具体的には、要求部２１は、プロセッサ１１で行われている処理が変わると、プロセッサ１１で行われている処理により、データ転送の発生頻度を推定する。要求部２１は、プロセッサ１１で実行されるプログラム毎に、単位時間当たりのデータ転送の発生予想数を事前に記憶しておき、プロセッサ１１で実行されているプログラムについて記憶された発生予想数を合計してデータ転送の発生頻度を推定することが可能である。要求部２１は、データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長が短くなるように転送長を決定する。そして、要求部２１は、決定した転送長を主記憶装置１２に書き込むとともに、主記憶装置１２における変更要求フラグに１を設定する。
【００１７】
ステップＳ１０３では、アクセス部２２は、アプリケーション４０又はＯＳ２０の内部処理から発行されるデータの読出要求の受け付け待ちをする。
アクセス部２２は、読出要求を受け付けた場合、処理をステップＳ１０４に進め、読出要求を受け付けていない場合、一定時間経過後、再びステップＳ１０３を実行する。
【００１８】
ステップＳ１０４では、アクセス部２２は、ステップＳ１０２で受け付けた読出要求によって要求されたデータが、２次記憶装置１３１から主記憶装置１２に転送済であるか否かを判定する。具体的には、アクセス部２２は、２次記憶装置１３１から主記憶装置１２に転送済になっているデータのインデックスを保持しておき、インデックスから要求されたデータを検索することにより、転送済であるか否かを判定する。
アクセス部２２は、未転送の場合、処理をステップＳ１０５に進め、転送済の場合、処理をステップＳ１０７に進める。
【００１９】
ステップＳ１０５では、アクセス部２２は、次のＤＭＡ転送で読出要求によって要求されたデータが転送されるように、ＤＭＡＣ１４に転送要求を追加する。具体的には、アクセス部２２は、ＤＭＡＣ１４における実行順位の先頭に転送要求を書き込む。なお、アクセス部２２は、複数の転送要求が１つの命令としてまとめて記載されたコマンドチェーンがＤＭＡＣ１４に設定されている場合には、コマンドチェーンの先頭に転送要求を書き込む。
アクセス部２２は、転送要求として、転送元となる２次記憶装置１３１のアドレスを示す転送元アドレスと、転送先となる主記憶装置１２のアドレスを示す転送先アドレスと、転送長とを書き込む。ここでの転送長は、ステップＳ１０２で決定された転送長にしてもよいし、ステップＳ１０２で決定された転送長とは無関係に決定されてもよい。具体的には、ここでの転送要求が効率的に処理されるように、ステップＳ１０２で決定された転送長とは無関係に転送長を長くしてもよい。
【００２０】
ステップＳ１０６では、アクセス部２２は、ステップＳ１０５で追加した転送要求によって要求されたデータが、主記憶装置１２に転送されることを待つ。具体的には、アクセス部２２は、ＤＭＡＣ１４からＤＭＡ転送が完了したことを示す割り込みを受け付ける、又は、ポーリングといった手段によりＤＭＡＣ１４に定期的に確認することにより、データが主記憶装置１２に転送されたことを確認する。アクセス部２２は、データが主記憶装置１２に転送されたことが確認されるまで、プロセッサ１１に他の処理を実行させる。
【００２１】
ステップＳ１０７では、アクセス部２２は、ステップＳ１０３で受け付けた読出要求の要求元に転送されたデータを受け渡す。具体的には、アクセス部２２は、主記憶装置１２におけるデータを読み出してプロセス間通信により要求元に渡す。
【００２２】
図３を参照して、実施の形態１に係る入出力部３０の動作を説明する。
ステップＳ２０１では、転送部３２は、動作開始状態になったか否かを判定する。実施の形態１では、転送部３２は、データ転送装置１０の起動が開始されると、動作開始状態になったと判定するものとする。なお、転送部３２は、ＯＳ２０の初期化処理が開始された、アプリケーション４０の起動を開始された、アプリケーション４０が地図といったデータの表示を開始した、外部からの入力を契機としてプロセッサ１１が処理を開始したといった他の状態になった場合に、動作開始状態になったと判定してもよい。
転送部３２は、動作開始状態になった場合、処理をステップＳ２０２に進め、動作開始状態になっていない場合、一定時間経過後、再びステップＳ２０１を実行する。
【００２３】
続いて、入出力部３０は、２次記憶装置１３１における転送範囲の転送が終わるまで、ステップＳ２０２からステップＳ２０５までの処理を繰り返し実行する。
ステップＳ２０２では、設定部３１は、ステップＳ１０２で要求部２１から変更要求が出力されたか否かを判定する。具体的には、設定部３１は、主記憶装置１２における変更要求フラグに１が設定されている場合、変更要求が出力されたと判定する。
設定部３１は、変更要求が出力された場合、処理をステップＳ２０３に進め、変更要求が出力されていない場合、処理をステップＳ２０５に進める。
【００２４】
ステップＳ２０３では、設定部３１は、変更要求に含まれる転送長を用いるように転送部３２に設定する。具体的には、設定部３１は、主記憶装置１２から転送長を読み出し、主記憶装置１２における転送長変数に読み出した転送長を書き込む。
【００２５】
ステップＳ２０４では、設定部３１は、主記憶装置１２の変更要求フラグに０を設定する。これにより、ＯＳ２０の要求部２１に変更要求の変更が完了したことが通知される。
【００２６】
ステップＳ２０５では、転送部３２は、転送長変数に設定された転送長に従い、主記憶装置１２と周辺装置１３である２次記憶装置１３１との間のデータ転送を指示する。具体的には、転送部３２は、転送範囲のうち転送が完了していない範囲の先頭のアドレスを転送元アドレスとし、転送先の主記憶装置１２のアドレスを転送先アドレスとし、転送長変数に設定された値を転送長とする転送要求をＤＭＡＣ１４に書き込む。
【００２７】
図４を参照して、実施の形態１に係るデータ転送装置１０の動作例を説明する。
図４では、データ転送装置１０の起動時の動作が示されている。図４では、実線矢印が要求の流れを示しており、破線矢印がデータの流れを示している。ここでは、データ転送は、セクタ単位で行われるとする。
【００２８】
処理Ａ１１では、データ転送装置１０の起動が開始されると転送部３２が動作開始状態になったと判定して（ステップＳ２０１）、転送要求をＤＭＡＣ１４に書き込むことによりＤＭＡ転送を行う（ステップＳ２０５）。ここでは、転送長の初期値は６セクタになっているものとする。つまり、転送長変数には初期値として６セクタが設定されているものとする。これにより、２次記憶装置１３１のセクタ１〜６が主記憶装置１２に転送される。
【００２９】
次に、処理Ｂ１１では、ＯＳ２０の初期化が完了したため、要求部２１がアプリケーション４０の起動前に、転送長を２セクタに変更する変更要求を出力する（ステップＳ１０２）。つまり、要求部２１は、ＯＳ２０の初期化後は、ＯＳ２０の初期化中よりも、データ転送の発生頻度が多いと推定し、転送長を６セクタよりも短い２セクタにすることを要求する。
すると、処理Ａ１２では、設定部３１が変更要求に応じて転送長変数に２セクタを設定する（ステップＳ２０２〜Ｓ２０４）。そして、転送部３２が変更後の転送長変数に従い、ＤＭＡ転送を行う（ステップＳ２０５）。これにより、２次記憶装置１３１のセクタ７〜８が主記憶装置１２に転送される。
【００３０】
次に、処理Ｂ１２では、アクセス部２２がアプリケーション４０から２次記憶装置１３１のセクタ１の読出要求を受け付ける（ステップＳ１０３）。ここでは、アクセス部２２は、セクタ１は既に転送済であるため（ステップＳ１０４）、アプリケーション４０にセクタ１のデータを受け渡す（ステップＳ１０７）。
この間に、転送部３２によって２度のＤＭＡ転送が行われ、２次記憶装置１３１のセクタ９〜１０及びセクタ１１〜１２が主記憶装置１２に転送されたとする。
【００３１】
次に、処理Ｂ１３では、アクセス部２２がアプリケーション４０から２次記憶装置１３１のセクタ３０の読出要求を受け付ける（ステップＳ１０３）。ここでは、アクセス部２２は、セクタ３０は未転送であるため（ステップＳ１０４）、次のＤＭＡ転送でセクタ３０が転送されるように転送要求をＤＭＡＣ１４に追加する。これにより、２次記憶装置１３１のセクタ３０が主記憶装置１２に転送される。
その後、転送部３２によって２度のＤＭＡ転送が行われ、２次記憶装置１３１のセクタ１３〜１４及びセクタ１５〜１６が主記憶装置１２に転送されたとする。
【００３２】
次に、処理Ｂ１４では、アプリケーション４０の起動が完了したため、要求部２１が転送長を４セクタに変更する変更要求を出力する（ステップＳ１０２）。つまり、要求部２１は、アプリケーション４０の起動後は、アプリケーション４０の起動中よりも、データ転送の発生頻度が少ないと推定し、転送長を２セクタよりも長い４セクタにすることを要求する。
すると、処理Ａ１３では、設定部３１が変更要求に応じて転送長変数に４セクタを設定する（ステップＳ２０２〜Ｓ２０４）。そして、転送部３２が変更後の転送長変数に従い、ＤＭＡ転送を行う（ステップＳ２０５）。これにより、２次記憶装置１３１のセクタ１７〜２０が主記憶装置１２に転送される。
以降、転送部３２によってＤＭＡ転送が繰り返され、２次記憶装置１３１のセクタ２１〜４０が主記憶装置１２に転送される。
【００３３】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係るデータ転送装置１０では、データ転送の発生頻度が高いほど転送長が短くなる。そのため、データ転送の発生頻度が低く、待ちが発生し辛い場合には、転送長が長くなり、データ転送時間を短くできる。一方、データ転送の発生頻度が高く、待ちが発生し易い場合には、転送長が短くなり、待ち時間を短くできる。
【００３４】
実施の形態１に係るデータ転送装置１０では、動作開始状態となった場合に、転送部３２が予め指定された指定データを周辺装置１３である２次記憶装置１３１から主記憶装置１２に転送する。そのため、ＯＳ２０及びアプリケーション４０から要求される前に、ＯＳ２０及びアプリケーション４０から要求されると予想されるデータを主記憶装置１２に転送しておくことができる。
実施の形態１では、データ転送装置１０の起動が開始されると、動作開始状態になったと判定される。つまり、実施の形態１に係るデータ転送装置１０では、データ転送装置１０の起動時に、予め指定された指定データを周辺装置１３である２次記憶装置１３１から主記憶装置１２に転送する。そのため、データ転送装置１０の起動後にＯＳ２０及びアプリケーション４０からデータを要求される前に、ＯＳ２０及びアプリケーション４０から要求されると予想されるデータを主記憶装置１２に転送しておくことができる。
【００３５】
図４を参照して説明したように、要求部２１は、データ転送装置１０の起動時において、データ転送装置１０のＯＳ２０の初期化後は、ＯＳ２０の初期化中よりも、データ転送の発生頻度が多いと推定し、転送長を短くすることを要求する。また、要求部２１は、アプリケーション４０の起動後は、アプリケーション４０の起動中よりも、データ転送の発生頻度が少ないと推定し、転送長を長くすることを要求する。これにより、ＯＳ２０及びアプリケーション４０の起動時の待ち時間を短くしつつ、ＯＳ２０及びアプリケーション４０から要求されると予想されるデータを短時間で主記憶装置１２に転送しておくことができる。
【００３６】
カーナビゲーションシステムのような車載器では、ナビゲーション機能とオーディオ機能といった複数の機能が搭載される。各機能の実行に必要なプログラム及びデータは、ＨＤＤといった不揮発性の２次記憶装置に格納され、システムの起動時に主記憶装置に読み出され、プロセッサにより実行される。
実施の形態１に係るデータ転送装置１０を車載器に適用すれば、起動処理の妨げにならないように待ち時間を減らしつつ、２次記憶装置から主記憶装置へのデータ転送時間を短くできる。これにより、車載器のサービス提供までの時間を短くすることができる。
【００３７】
また、車載器では、走行履歴とオーディオの再生履歴といったシステムの状態を示す情報が、プロセッサにより主記憶装置から２次記憶装置に適宜転送され記憶される。これら情報はシステムの起動時に前回の状態を復元するために用いられる。また、これらの情報は、ユーザが頻繁に向かう目的地を設定する、又は、お気に入りの音楽を再生するといったときに用いられる。
実施の形態１に係るデータ転送装置１０を車載器に適用すれば、利用者へのサービス提供のための処理の妨げにならないように待ち時間を減らしつつ、主記憶装置から２次記憶装置へのデータ転送時間を短くできる。これにより、利用者への影響を抑えつつ、サービス提供に重要なデータを確実に保存することが可能になる。
【００３８】
なお、上記説明では、周辺装置１３である２次記憶装置１３１から主記憶装置１２にデータが転送される場合を説明した。しかし、主記憶装置１２から周辺装置１３にデータが転送される場合にも応用できる。
【００３９】
また、上記説明では、変更要求フラグを用いて、変更要求が発生したことが入出力部３０に伝達された。しかし、変更要求フラグを用いることに代え、メッセージキュー又はレジスタを用いて、変更要求が発生したことが入出力部３０に伝達されてもよい。
【００４０】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、ＯＳ２０と入出力部３０とが同一のプロセッサ１１で実行された。しかし、変形例１として、ＯＳ２０と入出力部３０とはそれぞれ別のプロセッサ１１で並列に実行されてもよい。この変形例１について、実施の形態１と異なる点を説明する。
【００４１】
図５を参照して、変形例１に係るデータ転送装置１０の構成を説明する。
データ転送装置１０は、プロセッサ１１Ａ及びプロセッサ１１Ｂと、主記憶装置１２と、周辺装置１３と、ＤＭＡＣ１４とを備える。ＯＳ２０は、プロセッサ１１Ａに読み込まれ、プロセッサ１１Ａによって実行される。入出力部３０は、プロセッサ１１Ｂに読み込まれ、プロセッサ１１Ｂによって実行される。
【００４２】
＜変形例２＞
実施の形態１では、入出力部３０がＯＳ２０とは別に動作するソフトウェアであった。しかし、変形例２として、入出力部３０がＯＳ２０上で動作するソフトウェアであってもよい。この変形例２について、実施の形態１と異なる点を説明する。
【００４３】
図６を参照して、変形例２に係るデータ転送装置１０の構成を説明する。
データ転送装置１０は、ＯＳ２０と、アプリケーション４０とを備える。ＯＳ２０は、機能構成として、要求部２１と、アクセス部２２と、設定部３１と、転送部３２とを備える。設定部３１と転送部３２とは、デバイスドライバであってもよいし、ユーザランドのソフトウェアであってもよい。また、スレッド、プロセスとして動作するソフトウェアであってもよい。
【００４４】
設定部３１と転送部３２とはＯＳ２０上で動作するソフトウェアであるが、ブートローダが起動すれば、設定部３１と転送部３２とは動作できる。そのため、ＯＳ２０の起動中であっても、設定部３１と転送部３２とは動作することができる。ブートローダとは、データ転送装置１０についての最小限の初期化をするとともに、ＯＳ２０を主記憶装置１２に読み込むソフトウェアである。
【００４５】
＜変形例３＞
実施の形態１では、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能がソフトウェアで実現された。しかし、変形例３として、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能はハードウェアで実現されてもよい。この変形例３について、実施の形態１と異なる点を説明する。
【００４６】
図７を参照して、変形例３に係るデータ転送装置１０の構成を説明する。
要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能がハードウェアで実現される場合、データ転送装置１０は、さらに、処理回路１５とを備える。処理回路１５は、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能を実現する専用の電子回路である。
【００４７】
処理回路１５は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各部の機能を１つの処理回路１５で実現してもよいし、各部の機能を複数の処理回路１５に分散させて実現してもよい。
【００４８】
＜変形例４＞
変形例４として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、要求部２１と、アクセス部２２と、設定部３１と、転送部３２とのうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００４９】
プロセッサ１１と主記憶装置１２と処理回路１５とを、総称して「プロセッシングサーキットリー」という。つまり、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能は、プロセッシングサーキットリーにより実現される。すなわち、データ転送装置１０が図１と図６と図７とのいずれに示した構成であっても、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能はプロセッシングサーキットリーにより実現される。
【００５０】
実施の形態２．
実施の形態１では、プロセッサ１１で行われている処理により、データ転送の発生頻度が推定され、転送長が決定された。実施の形態２では、さらに、データ転送を要求する要求元の数によっても、データ転送の発生頻度が推定され、転送長が決定される点が実施の形態１と異なる。実施の形態２では、この異なる点について説明する。
【００５１】
＊＊＊構成の説明＊＊＊
図８を参照して、実施の形態２に係るデータ転送装置１０の構成を説明する。
実施の形態２では、周辺装置１３は、２次記憶装置１３１と、インタフェース１３２である。
インタフェース１３２は、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷｉＦｉ、ＣＮＡといったネットワークのインタフェースである。インタフェース１３２は、ネットワーク毎に設けられていてもよいし、複数のネットワークで共有された状態で設けられていてもよい。データ転送装置１０は、インタフェース１３２を介して、外部装置５０と接続される。
【００５２】
転送部３２は、機能構成として、第１転送部３２１と、第２転送部３２２とを備える。第１転送部３２１は、主記憶装置１２と２次記憶装置１３１との間のデータ転送を行うソフトウェアであり、第２転送部３２２は、主記憶装置１２とインタフェース１３２との間のデータ転送を行うソフトウェアである。
【００５３】
＊＊＊動作の説明＊＊＊
図９から図１１を参照して、実施の形態２に係るデータ転送装置１０の動作を説明する。
実施の形態２に係るデータ転送装置１０の動作は、実施の形態２に係るデータ転送方法に相当する。また、実施の形態２に係るデータ転送装置１０の動作は、実施の形態２に係るデータ転送プログラムの処理に相当する。
実施の形態２では、データ転送装置１０は、主記憶装置１２と、２次記憶装置１３１及びインタフェース１３２との間で、ＤＭＡ転送によりデータ転送を行う。ここでは、２次記憶装置１３１及びインタフェース１３２は、同一のバスを用いて主記憶装置１２とデータ転送を行うものとする。
【００５４】
図９を参照して、実施の形態２に係るＯＳ２０の動作を説明する。
ＯＳ２０では、ステップＳ３０１からステップＳ３０２の処理と、ステップＳ３０３からステップＳ３０７の処理と、ステップＳ３０８からステップＳ３１１の処理とが並行して実行される。
【００５５】
ステップＳ３０１では、要求部２１は、プロセッサ１１で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数との少なくともいずれかが変わったかを判定する。
要求部２１は、少なくともいずれかが変わった場合、処理をステップＳ３０２に進める。一方、いずれも変わっていない場合、一定時間経過後、ステップＳ３０１を再び実行する。
【００５６】
ステップＳ３０２では、要求部２１は、プロセッサ１１で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数とに応じて、ＤＭＡ転送の転送長の変更要求を出力する。
具体的には、要求部２１は、プロセッサ１１で行われている処理と、同一のバスを用いるデータ転送を要求する要求元の数とにより、データ転送の発生頻度を推定する。要求部２１は、データ転送の発生頻度が高いほど、１回の前記データ転送において転送されるデータ量を示す転送長が短くなるように転送長を決定する。そして、要求部２１は、決定した転送長を主記憶装置１２に書き込むとともに、主記憶装置１２における変更要求フラグに１を設定する。ここでは、第１転送部３２１と第２転送部３２２とについて別々に転送長が書き込まれ、第１転送部３２１と第２転送部３２２とについて別々に変更要求フラグが設定される。
【００５７】
ステップＳ３０３からステップＳ３０７の処理は、図２のステップＳ１０３からステップＳ１０７の処理と同じである。
【００５８】
ステップＳ３０８では、アクセス部２２は、アプリケーション４０又はＯＳ２０の内部処理から発行される、インタフェース１３２によって接続された外部装置５０からのデータの取得要求の受け付け待ちをする。
アクセス部２２は、取得要求を受け付けた場合、処理をステップＳ３０９に進め、取得要求を受け付けていない場合、一定時間経過後、再びステップＳ３０８を実行する。
【００５９】
ステップＳ３０９では、アクセス部２２は、インタフェース１３２を有効に設定する。具体的には、アクセス部２２は、インタフェース１３２の電源をオンにする。
【００６０】
ステップＳ３１０では、アクセス部２２は、インタフェース１３２からデータが主記憶装置１２に転送されることを待つ。具体的には、アクセス部２２は、ＤＭＡＣ１４からＤＭＡ転送が完了したことを示す割り込みを受け付ける、又は、ポーリングといった手段によりＤＭＡＣ１４に定期的に確認することにより、データが主記憶装置１２に転送されたことを確認する。アクセス部２２は、データが主記憶装置１２に転送されたことが確認されるまで、プロセッサ１１に他の処理を実行させる。
【００６１】
ステップＳ３１１では、アクセス部２２は、ステップＳ３０８で受け付けた取得要求の要求元に転送されたデータを受け渡す。具体的には、アクセス部２２は、主記憶装置１２におけるデータを読み出してプロセス間通信により要求元に渡す。
なお、アクセス部２２は、データを受け渡すと、インタフェース１３２を無効にする。具体的には、アクセス部２２は、インタフェース１３２の電源をオフにする。
【００６２】
図１０を参照して、実施の形態２に係る入出力部３０の動作を説明する。
入出力部３０では、ステップＳ４０１からステップＳ４０５の処理と、ステップＳ４０６からステップＳ４１０の処理とが並行して実行される。
【００６３】
ステップＳ４０１からステップＳ４０５の処理は、図３のステップＳ２０１からステップＳ２０５の処理と同じである。但し、ステップＳ４０１からステップＳ４０５の処理は、第１転送部３２１によって実行される。また、ステップＳ４０２及びステップＳ４０４では、第１転送部３２１用の変更要求フラグが用いられ、ステップＳ４０３では、第１転送部３２１用の転送長が用いられる。
【００６４】
ステップＳ４０６では、第２転送部３２２は、インタフェース１３２が接続された外部装置５０からデータを受信したか否かを判定する。
第２転送部３２２は、データを受信した場合、処理をステップＳ４０７に進め、受信していない場合、一定時間経過後、再びステップＳ４０６を実行する。
【００６５】
続いて、入出力部３０は、受信したデータの転送が終わるまで、ステップＳ４０７からステップＳ４１０までの処理を繰り返し実行する。
ステップＳ４０７では、設定部３１は、ステップＳ３０２で要求部２１から変更要求が出力されたか否かを判定する。具体的には、設定部３１は、主記憶装置１２における第２転送部３２２用の変更要求フラグに１が設定されている場合、変更要求が出力されたと判定する。
設定部３１は、変更要求が出力された場合、処理をステップＳ４０８に進め、変更要求が出力されていない場合、処理をステップＳ４１０に進める。
【００６６】
ステップＳ４０８では、設定部３１は、変更要求に含まれる転送長を用いるように転送部３２に設定する。具体的には、設定部３１は、主記憶装置１２から第２転送部３２２用の転送長を読み出し、主記憶装置１２における転送長変数に読み出した転送長を書き込む。
【００６７】
ステップＳ４０９では、設定部３１は、主記憶装置１２の第２転送部３２２用の変更要求フラグに０を設定する。これにより、ＯＳ２０の要求部２１に変更要求の変更が完了したことが通知される。
【００６８】
ステップＳ４１０では、転送部３２は、転送要求をＤＭＡＣ１４に書き込む。具体的には、転送部３２は、受信されたデータのうち転送が完了していない範囲の先頭のアドレスを転送元アドレスとし、転送先の主記憶装置１２のアドレスを転送先アドレスとし、転送長変数に設定された値を転送長とする転送要求を書き込む。
【００６９】
図１１を参照して、実施の形態２に係るデータ転送装置１０の動作例を説明する。
図１１では、データ転送装置１０の起動時の動作が示されている。図１１では、実線矢印が要求の流れを示しており、破線矢印がデータの流れを示している。ここでは、２次記憶装置１３１についてのデータ転送はセクタ単位で行われ、インタフェース１３２についてのデータ転送はバイト単位で行われる。
【００７０】
処理Ａ２１，Ａ２２と、処理Ｂ２１とは、図４に示す処理Ａ１１，Ａ１２と、処理Ｂ１１と同様であるため、説明を省略する。
【００７１】
処理Ａ２２の後、処理Ｂ２２では、アクセス部２２がアプリケーション４０からインタフェース１３２を介して接続された外部装置５０からデータを取得する取得要求を受け付ける（ステップＳ３０８）。そして、アクセス部２２がインタフェース１３２を有効にする（ステップＳ３０９）。ここでは、第２転送部３２２用の転送長は１５３６バイトになっているものとする。つまり、第２転送部３２２用の転送長変数には初期値として１５３６バイトが設定されているものとする。
この間に、転送部３２によって２度のＤＭＡ転送が行われ、２次記憶装置１３１のセクタ９〜１０及びセクタ１１〜１２が主記憶装置１２に転送されたとする。
【００７２】
次に、処理Ｂ２３では、要求部２１が第２転送部３２２についての転送長を５１２バイトに変更する変更要求を出力する（ステップＳ３０２）。つまり、要求部２１は、同一のバスを用いるデータ転送を要求する要求元としてインタフェース１３２が追加され、要求元の数が増えたため、データ転送の発生頻度が多いと推定し、転送長を１５３６バイトよりも短い５１２バイトにすることを要求する。
すると、処理Ａ２３では、設定部３１が変更要求に応じて第２転送部３２２用の転送長変数に５１２バイトを設定する（ステップＳ４０７〜Ｓ４０９）。そして、第２転送部３２２が変更後の転送長変数に従い、ＤＭＡ転送を行う（ステップＳ４１０）。これにより、インタフェース１３２から５１２バイトのデータが主記憶装置１２に転送される。
【００７３】
その後、第１転送部３２１と第２転送部３２２とによりＤＭＡ転送が行われ（ステップＳ４０２〜Ｓ４０５、ステップＳ４０７〜Ｓ４１０）、２次記憶装置１３１のセクタ１１４まで主記憶装置１２に転送され、インタフェース１３２が受信したデータが全て転送されたとする。
すると、処理Ｂ２４では、インタフェース１３２が受信したデータが全て転送されたため、アクセス部２２がインタフェース１３２を無効にする（ステップＳ４１０）。これにより、データ転送装置１０の電力消費が抑えられる。
【００７４】
処理Ｂ２５，処理Ａ２４は、図４に示す処理Ｂ１４と、処理Ａ１３と同様であるため、説明を省略する。
【００７５】
なお、処理Ｂ２３では、要求部２１は、第２転送部３２２の転送長だけを短くすることを要求した。しかし、要求部２１は、第２転送部３２２の転送長だけでなく、第１転送部３２１の転送長も短くすることを要求してもよい。具体的には、要求部２１は、第２転送部３２２の転送長を１５３６バイトよりも短い５１２バイトにすることを要求するとともに、第１転送部３２１の転送長を２セクタよりも短い１セクタにすることを要求してもよい。
【００７６】
＊＊＊実施の形態２の効果＊＊＊
以上のように、実施の形態２に係るデータ転送装置１０では、プロセッサ１１で行われている処理だけでなく、データ転送を要求する要求元の数によっても、データ転送の発生頻度が推定され、転送長が決定される。そのため、データ転送を行う外部装置５０が接続された場合には、より適切にデータ転送の発生頻度が推定でき、より適切に転送長を決定することができる。
【００７７】
＊＊＊他の構成＊＊＊
＜変形例５＞
実施の形態２では、データ転送を要求する要求元の数が増えると、転送長が短く設定された。しかし、変形例５として、一部の要求元の転送長を長くし、他の要求元の転送長を短くしてもよい。この変形例５について、実施の形態２と異なる点を説明する。
【００７８】
変形例５では、要求部２１は、事前に要求元毎に優先度を定めておく。変形例５では、インタフェース１３２の優先度が高と定められ、他の優先度が低と定められているとする。
要求部２１は、データ転送を要求する要求元の数が増えると、優先度が高である要求元についての転送長を長くし、優先度が低である要求元についての転送長を短くするように要求する。変形例５では、図１１の処理Ｂ２３では、要求部２１が第１転送部３２１についての転送長を２セクタよりも短い１セクタに変更するとともに、第２転送部３２２についての転送長を１５３６バイトよりも長い３０７２バイトに変更する変更要求を出力する。
以上のように、優先度が高い要求元についての転送長を長くすることで、優先度が高い要求元についてのデータ転送を早く完了させることが可能となる。
【００７９】
＜変形例６＞
実施の形態１と同じように、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能がソフトウェアで実現された。しかし、実施の形態１の変形例３と同じように、要求部２１と、アクセス部２２と、設定部３１と、転送部３２との機能はハードウェアで実現されてもよい。また、実施の形態１の変形例４と同じように、要求部２１と、アクセス部２２と、設定部３１と、転送部３２とは、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【符号の説明】
【００８０】
１０  データ転送装置、１１  プロセッサ、１２  主記憶装置、１３  周辺装置、１３１  ２次記憶装置、１３２  インタフェース、１４  ＤＭＡＣ、２０  ＯＳ、２１  要求部、２２  アクセス部、３０  入出力部、３１  設定部、３２  転送部、３２１  第１転送部、３２２  第２転送部、４０  アプリケーション、５０  外部装置。
【要約】
データ転送装置（１０）は、主記憶装置（１２）と２次記憶装置（１３１）といった周辺装置（１３）との間のデータ転送を行う。データ転送装置（１０）は、プロセッサ（１１）で実行されている処理といった情報に基づきデータ転送の発生頻度を推定し、データ転送の発生頻度が高いほど、１回のデータ転送において転送されるデータ量を示す転送長を短く設定し、設定された転送長により、主記憶装置（１２）と周辺装置（１３）との間のデータ転送を指示する。【図１】
0005955489.tif 000002
【図２】
0005955489.tif 000003
【図３】
0005955489.tif 000004
【図４】
0005955489.tif 000005
【図５】
0005955489.tif 000006
【図６】
0005955489.tif 000007
【図７】
0005955489.tif 000008
【図８】
0005955489.tif 000009
【図９】
0005955489.tif 000010
【図１０】
0005955489.tif 000011
【図１１】
0005955489.tif 000012