(57)【要約】【課題】データ転送の処理時間とメモリ利用効率とを大幅に向上させる。【解決手段】ＤＭＡを有するデータ入出力装置において、ＤＭＡ転送に最適なデータバッファ作成サービスを準備し、プログラムを構成する階層化された各システムでこのデータバッファ作成サービスを利用しデータバッファを作成することにより、ＤＭＡ転送によってＤＭＡに接続されるデバイスから最上位のアプリケーションまでのデータ転送を直接行う。【選択図】図１
2008140059.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡ転送機能を有するデータ入出力装置であって、
ＤＭＡに固有の転送に適したユーザバッファ作成サービスを有することを特徴とするデータ入出力装置。
【請求項２】
当該データ入出力装置を制御するＤＭＡデータ入出力用バッファを必要とするコントローラドライバと、
前記コントローラドライバを使用し、前記コントローラドライバへのデータ入出力用バッファを必要として、ファイルデータのキャッシュ操作を行うファイルシステムと、
前記ファイルシステムを使用し、ファイルシステムへのデータ入出力用バッファを必要とするアプリケーションと
を含むことを特徴とする請求項１に記載のデータ入出力装置。
【請求項３】
前記コントローラドライバは、
前記コントローラドライバに入出力されるデータバッファが前記ＤＭＡに固有の転送に適したバッファであると判断された場合に、前記コントローラドライバでは前記ＤＭＡを有するデータ入出力装置に入出力されるデータバッファを作成せず、
前記コントローラドライバに入力されたデータバッファ領域にキャッシュフラッシュを行ってＤＭＡ転送を指示し、
コントローラドライバから出力されるデータバッファ領域にキャッシュインバリデートを行ってＤＭＡ転送を指示することを特徴とする請求項２に記載のデータ入出力装置。
【請求項４】
前記ファイルシステムにおいて、前記アプリケーションから前記ファイルシステムに入出力されるデータバッファが連続しており、且つ前記ファイルシステムの管理ブロックサイズより大きいと判断された場合に、前記ファイルシステムでは前記コントローラドライバに入出力されるファイルデータをキャッシュするためのデータバッファを作成せず、前記アプリケーションから前記ファイルシステムに入出力されるデータバッファを前記コントローラドライバに入出力されるデータバッファとして使用することを特徴とする請求項２に記載のデータ入出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＤＭＡ転送機能を有するコントローラを有し、接続されるデバイスとデータ転送を行うデータ入出力装置に関する。特に、ＵＳＢホストコントローラを有し、その通信にファイルシステムを用いるマスストレージ通信を使用するデータ入出力装置に関するものである。
【背景技術】
【０００２】
一般にＤＭＡ転送機能を有するコントローラを制御するコントローラドライバにおいては、そのＤＭＡ転送機能に有効なバッファを設けＤＭＡ転送による入出力を行う。
例えば、ＵＳＢホストコントローラのひとつであるＯＨＣＩを使用する場合にＤＭＡによる効果的なバルク転送を行うためにはＤＭＡ転送用のバッファとして４ＫＢ単位を境界として８ＫＢ単位のサイズとすることが望ましい。
【０００３】
一方、前記コントローラにデータの入出力を指示する上位層は、例えばファイルシステムやアプリケーションと、複数に階層化されており、各階層で必要なバッファを作成し、その下位層にデータの入出力を指示している。
更に、一つのアプリケーションやファイルシステムから複数のＤＭＡ転送機能を有するコントローラを利用し接続されるデバイスにデータ転送を行う必要もある。
【０００４】
特許文献１では、データ処理装置に関わり、キャッシュへのプリフェッチアドレスとロード命令アドレスの比較を行う。ここで、一致した場合は、主記憶からキャッシュへの格納とロード命令との実行を同時に行い、キャッシュを通さないで、主記憶から直接ロードするという発明が提案されている。
【０００５】
特許文献２では、フラッシュＲＯＭの管理で、ＦＡＴなど頻繁に書込みが行われる情報に関してはキャッシュメモリにバッファリングを行うという、データの種別によりキャッシュを使用する発明が提案されている。
特許文献３では、アドレス単位でのアクセス可能なフラッシュＲＯＭからバッファを介さずにユーザメモリへデータ転送を行うという発明が提案されている。
【０００６】
【特許文献１】特開平５−１４３４５１号公報
【特許文献２】特開平９−９７１９９号公報
【特許文献３】特開２０００−５７０３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のＤＭＡ転送機能を有するコントローラを備えたデータ入出力装置においては、データバッファを有する上位層からデータの入出力が指示される場合には以下のようになる。即ち、ＤＭＡ転送機能を有するコントローラを制御するコントローラドライバにおいて、上位層から指示された入出力のデータバッファを一度ＤＭＡ転送に有効なバッファを作成し、そのバッファに転送してからＤＭＡ転送を行うことになる。
【０００８】
更に、コントローラドライバの上位層に位置づけられるファイルデータのキャッシュ操作を行うファイルシステムにおいても、アプリケーションから入出力されるデータを一旦キャッシュバッファに格納してからコントローラドライバにデータ転送を行っている。        
【０００９】
このために、階層化された各システムで各々固有のデータバッファを作成し、下位層にデータ転送を行い、下位層では上位層から入出力されたデータを一旦各層に固有のデータバッファに転送を行い、更に下位層へのデータ入出力及びＤＭＡ転送を行う。このことによりメモリ利用効率が低下するとともに不要な処理時間を要することになる。
【００１０】
また、ＤＭＡ転送機能を有するコントローラが複数個あった場合には、各コントローラを制御するコントローラドライバでＤＭＡ転送に有効なバッファを準備する必要がある。
特許文献１では、キャッシュを使用しないで主記憶から直接データをロードするという発明で、ＤＭＡから直接ユーザメモリへ転送することはできない。
特許文献２では、データの種別によりデータのキャッシュを行うという発明であり、ＤＭＡ転送を用いたキャッシュ制御には係わっていない。
また、特許文献３では、アドレス単位でのアクセス可能なフラッシュＲＯＭとユーザメモリのデータ転送に係わり、ＤＭＡ転送を用いたキャッシュ制御とは異なる。
【００１１】
本発明は、上記の課題に鑑みてなされたものであり、ＤＭＡ転送機能を有するコントローラを制御するコントローラドライバにデータの入出力を指示する上位層がＤＭＡ転送に有効なデータバッファを作成しデータの入出力を指示することにより、階層化された各システムで固有のデータバッファを作成することなく上位層から入出力されたデータバッファを下位層へ直接入出力することを可能とするデータ入出力装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のデータ入出力装置は、ＤＭＡ転送機能を有するデータ入出力装置であって、ＤＭＡに固有の転送に適したユーザバッファ作成サービスを有する。
【発明の効果】
【００１３】
本発明によれば、ＤＭＡ転送機能を有するコントローラを備え、接続されるデバイスとデータ転送を行うデータ入出力装置において、前記コントローラを制御するコントローラドライバにデータの入出力を指示する上位層がＤＭＡ転送に有効なデータバッファを作成しデータの入出力を指示することにより、階層化された各システムで固有のデータバッファを作成することなく上位層から入出力されたデータバッファを下位層へ直接入出力することが可能となる。
このことにより、データ転送の処理時間とメモリ利用効率とを大幅に向上させることが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について図面を参照しながら説明する。
図１は、本発明のＤＭＡ転送機能を有するコントローラを有し、接続されるデバイスとの間でデータ転送を行うデータ入出力装置を説明するブロック図である。
【００１５】
図１において、１はＵＳＢホスト機能を有するデータ入出力装置であり、ＤＭＡ転送機能を有し、ＤＭＡに固有の転送に適したユーザバッファ作成サービスを有するものであり、例えばデジタルカメラダイレクトプリンタである。
データ入出力装置１は、アプリケーション４、ファイルシステム５、及びＵＳＢホスト機能６を備えて構成されている。
【００１６】
アプリケーション４は、不図示のＣＰＵ、ＲＡＭ、ＲＯＭ、及び、不図示ＲＯＭに格納され不図示ＲＡＭにそのデータバッファを作成する。ファイルシステム５は、不図示のＲＯＭに格納され不図示のＲＡＭにそのデータバッファを作成する。ＵＳＢホスト機能６は、ＤＭＡ転送機能を有するＵＳＢホストコントローラとこのコントローラを制御する不図示のＲＯＭに格納され、不図示のＲＡＭにそのデータバッファを作成するＵＳＢホストコントローラドライバで構成される。ＵＳＢホストコントローラドライバは、当該データ入出力装置を制御するＤＭＡデータ入出力用バッファを必要とする。
【００１７】
ＵＳＢホスト機能６は、ＵＳＢ通信手段３によって後述のＵＳＢデバイス機能を有するデータ入出力装置２と、例えばマスストレージクラスといった、通信可能な接続がなされる。
【００１８】
図１において、２はＵＳＢデバイス機能を有するデータ入出力装置であり、例えばプリンタと接続しダイレクトプリントを実行可能なデジタルカメラである。
データ入出力装置２は、ＵＳＢデバイス機能７及び記憶装置８を備えて構成されている。
【００１９】
ＵＳＢデバイス機能７は、不図示のＣＰＵ、ＲＡＭ、ＲＯＭ、及びＵＳＢデバイスコントローラとこのコントローラを制御する不図示のＲＯＭに格納されたＵＳＢデバイスコントローラドライバで構成されている。記憶装置８は、前述のＵＳＢ通信手段３においてマスストレージクラス接続を実現するための、例えばコンパクトフラッシュ（登録商標）などのリムーバブルメディアへの入出力を行う。
【００２０】
アプリケーション４は、ファイルシステムを使用し、ファイルシステムへのデータ入出力用バッファを必要とするものである。ＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８に格納されているデータの入出力を行うデータバッファをＵＳＢデバイス機能を有するデータ入出力装置１の不図示のＲＡＭに作成する。そして、ファイルシステム５にデータ入出力の指示を行う。
【００２１】
ファイルシステム５は、ＵＳＢホストコントローラドライバを使用し、当該コントローラドライバへのデータ入出力用バッファを必要として、ファイルデータのキャッシュ操作を行うものである。アプリケーション４のデータ入出力の指示に従い、指定されたデータのセクタ情報を基にキャッシュバッファをＵＳＢデバイス機能を有するデータ入出力装置１の不図示ＲＡＭに作成し、ＵＳＢホスト機能６にデータ入出力の指示を行う。
【００２２】
ＵＳＢホスト機能６を構成するＵＳＢホストコントローラドライバは、ファイルシステム５のデータ入出力の指示に従う。そして、ＵＳＢホストコントローラが有するＤＭＡ機能に有効なＵＳＢデータ転送バッファをＵＳＢデバイス機能を有するデータ入出力装置１の不図示のＲＡＭに作成し、ＤＭＡによるデータ転送を指示する。
【００２３】
図２は、本発明を実現するＤＭＡ転送機能を有するコントローラを有し接続されるデバイス２とデータ転送を行うデータ入出力装置１におけるデータ転送プログラムのフローチャートである。
【００２４】
以下で説明するように、コントローラドライバは、当該コントローラドライバに入出力されるデータバッファがＤＭＡに固有の転送に適したバッファであると判断された場合に、は、以下のように処理する。即ち、コントローラドライバではＤＭＡを有するデータ入出力装置に入出力されるデータバッファを作成せず、コントローラドライバに入力されたデータバッファ領域にキャッシュフラッシュを行ってＤＭＡ転送を指示する。そして、コントローラドライバから出力されるデータバッファ領域にキャッシュインバリデートを行ってＤＭＡ転送を指示する。
【００２５】
ステップＳ１００において、アプリケーション４からＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８に格納されているデータの入出力を行うためのデータバッファ作成をＵＳＢデバイス機能を有するデータ入出力装置１の不図示ＲＡＭに行う。その際に、ＵＳＢホスト機能６を構成するＵＳＢホストコントローラに搭載されているＤＭＡを用いたＤＭＡ転送に適したユーザバッファ作成サービスを呼び出す。例えば、前述のＵＳＢホストコントローラがＯＨＣＩである場合は、作成されるユーザバッファは４ＫＢの境界を先頭に作成される。
【００２６】
また、ＤＭＡ転送機能を有するコントローラが複数個あった場合には、コントローラ毎にコントローラが有するＤＭＡに適してユーザバッファ作成サービスが準備される。そして、アプリケーション４はデータ入出力の対象となる接続装置と通信を行うコントローラを特定し、前述のコントローラが有するＤＭＡに適したユーザバッファ作成サービスを利用する。
【００２７】
ステップＳ１１０において、アプリケーション４からファイルシステム５へステップＳ１００で作成されたユーザバッファへのＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８からのデータの入出力を指示する。
ステップＳ１２０では、ファイルシステム５においてアプリケーション４から指示されたデータ入出力のデータバッファの判定を行う。
【００２８】
ファイルシステム５は、アプリケーション４によるランダムアクセスに対応するためにキャッシュバッファをセクタ単位の管理ブロックで作成する。
アプリケーション４から入出力を指示されたＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８のデータが連続したセクタでありかつ前述の管理ブロックサイズより大きい場合には、以下のようになる。ファイルシステム５では、コントローラドライバに入出力されるファイルデータをキャッシュするためのデータバッファを作成しない。そして、アプリケーション４からファイルシステム５に入出力されるデータバッファをコントローラドライバに入出力されるデータバッファとして使用する。即ち、ステップＳ１００でアプリケーションによって作成されたユーザバッファを指定し管理ブロック単位でステップＳ１４０にてＵＳＢホスト機能６へＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８からのデータの入出力を指示する。
【００２９】
ステップＳ１２０におけるアプリケーション４からのデータバッファ判定に基づき、以下のように場合分けされる。
アプリケーション４から入出力を指示されたＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８のデータが前述の管理ブロックサイズより大きい連続したセクタが指定されていない場合には、以下のようになる。即ち、ステップＳ１３０でファイルシステム５が管理ブロック用のキャッシュバッファ作成を、ＵＳＢホスト機能６を構成するＵＳＢホストコントローラに搭載されているＤＭＡを用いたＤＭＡ転送に適したユーザバッファ作成サービスを呼び出すことにより行う。そして、作成されたキャッシュバッファを指定してステップＳ１４０にてＵＳＢホスト機能６へＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８からのデータの入出力を指示する。
【００３０】
ステップＳ１１０でアプリケーション４から指示されるＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８のデータが複数個の不連続なセクタの集合である場合には、以下のほうになる。即ち、ステップＳ１２０におけるデータバッファの判定を、ファイルシステム５で管理するキャッシュバッファを構成するセクタ単位の管理ブロックで行ってもかまわない。
ステップＳ１５０では、ＵＳＢホスト機能６を構成するＵＳＢホストコントローラドライバにおいてファイルシステム５から指示されたデータ入出力のデータバッファの判定を行う。
【００３１】
ファイルシステム５から入出力を指示されたデータバッファが、ＵＳＢホスト機能６を構成するＵＳＢホストコントローラが有するＤＭＡを用いたＤＭＡ転送に適したバッファであるかの判定を行う。例えば、ＵＳＢホストコントローラがＯＨＣＩである場合は、４ＫＢ単位の境界から８ＫＢのサイズが一度のＵＳＢのバルク転送で最適なデータバッファとなる。
【００３２】
ファイルシステム５から指示されたデータ入出力のデータバッファが４ＫＢ単位の境界を先頭としている場合には、ステップＳ１４０でファイルシステム５によって指定されたデータバッファを指定する。そして、ステップＳ１７０で８ＫＢ単位ごとにＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８からのデータの入出力をＤＭＡデータ転送によって行う。
【００３３】
ステップＳ１５０におけるファイルシステム５からのデータバッファ判定で、ファイルシステム５から入出力を指示されたデータバッファが４ＫＢ単位の境界で開始されていない、またはその転送指定サイズが８ＫＢに満たない場合には、以下のようになる。即ち、ステップＳ１６０で前述のＵＳＢホスト機能６を構成するＵＳＢホストコントローラに搭載されているＤＭＡを用いたＤＭＡ転送に適したユーザバッファ作成サービスを呼び出すことによりデータバッファを作成する。そして、作成されたデータバッファを指定してステップＳ１７０にてＵＳＢデバイス機能を有するデータ入出力装置２の記憶装置８からのデータの入出力をＤＭＡデータ転送によって行う。
【００３４】
ステップＳ１７０でのＤＭＡ転送では、データ入出力装置２の記憶装置８からのデータ入力である場合には、前述のデータバッファをキャッシュインバリデート操作し、その後、ＤＭＡ転送を起動する。一方、データ入出力装置２の記憶装置８へのデータ出力である場合には、前述のデータバッファをキャッシュフラッシュ操作し、その後、ＤＭＡ転送を起動する。
【００３５】
以上が本発明の実施形態の説明であるが、本発明は、これら実施の形態の構成に限られるものではなく、特許請求の範囲で示した機能、または実施の形態の構成が持つ機能が達成できる構成であればどのようなものであっても適用可能である。
【図面の簡単な説明】
【００３６】
【図１】本発明のＤＭＡ転送機能を有するコントローラを有し接続されるデバイスとデータ転送を行うデータ入出力装置を説明するブロック図である。
【図２】本発明を実現するＤＭＡ転送機能を有するコントローラを有し接続されるデバイスとデータ転送を行うデータ入出力装置におけるデータ転送プログラムのフローチャートである。
【符号の説明】
【００３７】
１  ＵＳＢホスト機能を有するデータ入出力装置
２  ＵＳＢデバイス機能を有するデータ入出力装置
３  ＵＳＢ通信手段
４  アプリケーション
５  ファイルシステム
６  ＵＳＢホスト機能
７  ＵＳＢデバイス機能
８  記憶装置
【図１】
2008140059.tif 000003
【図２】
2008140059.tif 000004