(57)【要約】【課題】複数の周辺装置が接続され場合において、全体としての性能が最大となるようなバッファサイズの動的な調整方法及び装置が求められている。【解決手段】本発明のバッファ管理装置では、データ処理装置３０と、データ処理装置３０に接続された複数の周辺装置６０と、データの入出力を制御する複数のデバイスドライバと３２ａと、バッファサイズを管理するバッファ管理部４０とを備えたバッファ管理装置であって、複数のデバイスドライバ３２ａのうちの特定のデバイスドライバ３２ａから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かの初期処理を行い、前記デバイスドライバ３２ａ全体における動作のスループットに対する前記特定のデバイスドライバ３２ａのスループットの割合に応じて、動的にバッファサイズを変更する。【選択図】図１
2010128743.tif 000002
【特許請求の範囲】
【請求項１】
データの処理を行うデータ処理装置と、
前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、
前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、
前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、
前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部と、
を用いたバッファ管理方法であって、
前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かを行う初期処理と、
前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更する変更処理と、
を有することを特徴とするバッファ管理方法。
【請求項２】
前記変更処理は、
前記動作の開始から完了までの処理時間を計測する処理時間計測処理と、
前記処理時間と前記動作の転送データ量とから前記動作のスループットを計算するスループット計算処理と、
前記スループットに基づき次の前記動作で使用するバッファサイズを計算するバッファサイズ計算処理と、
を有することを特徴とする請求項１記載のバッファ管理方法。
【請求項３】
前記スループット計算処理は、前記転送データ量を前記処理時間で除すことによって前記動作の前記スループットを計算することを特徴とする請求項２記載のバッファ管理方法。
【請求項４】
前記バッファサイズ計算処理は、前記複数のデバイスドライバにおける前記動作の前記スループットの総和を求め、前記特定のデバイスドライバにおける前記動作の前記スループットを前記総和で除し、その計算結果に応じて、次の動作で使用するバッファサイズを計算することを特徴とする請求項２又は３記載のバッファ管理方法。
【請求項５】
データの処理を行うデータ処理装置と、
前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、
前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、
前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、
前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部と、
を備えたバッファ管理装置であって、
前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かの初期処理を行い、前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更することを特徴とするバッファ管理装置。
【請求項６】
前記バッファ管理部は、
前記動作の開始から完了までの処理時間を計測する処理時間計測手段と、
前記処理時間と前記動作の転送データ量とから前記動作のスループットを計算するスループット計算手段と、
前記スループットに基づき次の前記動作で使用するバッファサイズを計算するバッファサイズ計算手段と、
を有することを特徴とする請求項５記載のバッファ管理装置。
【請求項７】
前記スループット計算手段は、前記転送データ量を前記処理時間で除すことによって前記動作の前記スループットを計算することを特徴とする請求項６記載のバッファ管理装置。
【請求項８】
前記バッファサイズ計算手段は、前記複数のデバイスドライバにおける前記動作の前記スループットの総和を求め、前記特定のデバイスドライバにおける前記動作の前記スループットを前記総和で除し、その計算結果に応じて、次の動作で使用するバッファサイズを計算することを特徴とする請求項６又は７に記載のバッファ管理装置。
【請求項９】
前記処理時間計測手段は、前記動作の開始から完了までの間、クロックをカウントして前記処理時間を計測する回路であることを特徴とする請求項６〜８のいずれか１項に記載のバッファ管理装置。
【請求項１０】
データの処理を行うデータ処理装置と、
前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、
前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、
前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、
前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部と、
を用いたバッファ管理プログラムであって、
前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かの処理を行う初期処理と、
前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更するバッファサイズの変更処理と、
を機能させるためのバッファ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、限られたサイズのバッファを複数の周辺装置で共有する場合において、スループットが最大になるように動的にバッファの管理を行うバッファ管理方法、バッファ管理装置及びバッファ管理プログラムに関するものである。
【背景技術】
【０００２】
図４は、従来の一般的なデータ処理装置１０を示す説明図である。
このデータ処理装置１０は、例えば、パーソナルコンピュータ（以下「ＰＣ」という。）等であって、これには、複数の周辺装置（Ｉ／Ｏ）１５等が接続されている。データ処理装置１０は、中央処理装置（以下「ＣＰＵ」という。）１１、リードオンリーメモリ（以下「ＲＯＭ」という。）１２、ランダムアクセスメモリ（以下「ＲＡＭ」という。）１３及びデータバス１４等により構成されている。
【０００３】
大容量のデータをデータ処理装置１０と周辺装置１５との間で入出力を行う場合、ＲＡＭ１３上にバッファを確保し、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）により、ＣＰＵ１１を経由しないで、直接、ハードディスク等の周辺装置１５とＲＡＭ１３間でデータの転送を行うことが行われている。この方法は、ＤＭＡによるデータ転送時には、データバス１４が占有されてしまうこととなる。その結果として、全体の処理速度が低下してしまうという問題があった。この問題を解決するために、図５に示すようなバッファ管理装置が提案されている。
【０００４】
図５は、図４のデータ処理装置１０を用いたバッファ管理装置を示す概略の構成図である。
【０００５】
このバッファ管理装置では、データ処理装置１０と、複数の周辺装置（Ｉ／Ｏ）１５（＝１５−１〜１５−ｎ：ｎは整数）との間に共有メモリ２０が接続されている。共有メモリ２０上には、各周辺装置１５に対応してバッファ２１（＝２１−１〜２１−ｎ）がそれぞれ設けられている。バッファ２１は、データ処理装置１０と周辺装置１５との間において入出力されるデータを一時記憶するものである。更に、ＲＯＭ１２内には、各周辺装置１５に対応して、周辺装置１５と入出力を行うためのプログラムであるデバイスドライバ１２ａ（＝１２ａ―１〜１２ａ―ｎ）が格納されている。
【０００６】
この場合、データ転送時にデータバス１４を使用しないため、ＣＰＵ１の処理が一時的に停止することはなくなり全体の処理速度が低下することを抑えられる。
【０００７】
しかし、ハードウェア的に専用の共有メモリ２０を用意することが必要となるため、ＲＡＭ３上にバッファを確保する場合と比べると小さな領域しか確保できない。この方法を採用した場合、限られた所定のメモリ容量の共有メモリ２０をいかに効率よく使用するかによって全体の処理速度が影響される。
【０００８】
例えば、このように共有メモリ２０に制限がある場合で、接続されている周辺装置１５が１つのときは、共有メモリ２０全体をその周辺装置１５で専有できるため、周辺装置１５とデバイスドライバ１２ａは、許される範囲で最大のバッファ２１を割り当てることが可能であり、与えられた条件での最高の性能が得られることが期待される。
【０００９】
ところが、共有メモリ２０に制限がある場合で、周辺装置１５が複数接続されているときは、次の点を考慮して各周辺装置１５に対しバッファ２１の割り当てをする必要がある。
【００１０】
（１）  複数のデバイスドライバ１２ａが、バッファ２１を確保しようとすると競合が発生するが、特定のデバイスドライバ１２ａにバッファ資源が偏らないようにするためには、割り当てるバッファ２１のサイズを小さくしなければならない。
【００１１】
（２）  一方、当該のデバイスドライバ１２ａの入出力処理のスループットを向上させるためには、バッファサイズは大きい方が望ましい。
【００１２】
（３）  更に、システムの電源を投入したままで動的に周辺装置１５を追加、削除することができるホットスワップの構造を有したシステムの場合、どのような周辺装置１５がいくつ接続されているかによって、バッファ２１の最適な割り当てが変化することになる。
【００１３】
（４）  周辺装置１５によっては、データの入出力の機会が極めてまれなものもあり、このような装置にバッファ２１を固定的に割り当てておくのは無駄である。
【００１４】
共有メモリ２０を複数の周辺装置１５で共有する場合は、上記の（１）〜（４）のような配慮が必要となるが、現状の技術では、一定の大きさのバッファ２１を固定的に割り当てることになり、全体としての性能を最大にするようにバッファサイズを決定することは困難である。
【００１５】
このようなバッファ管理の方法、装置等については、次のような文献に記載されている。
【００１６】
【特許文献１】特開平１１−２８２７４４号公報
【特許文献２】特開２００５−３０３４５８号公報
【００１７】
特許文献１には、業務プログラムが送出するバッファ取得要求に従って、その要求に最も適したサイズのバッファを選出し前記プログラムに引き渡すバッファ取得手段と、前記プログラムが送出するバッファ返却要求に従って指定されたバッファを未使用バッファとして返却しその管理情報を更新するバッファ返却手段と、前記バッファ取得手段および前記バッファ返却手段に指示されてバッファのブロックの拡張および縮退を実行しその管理情報を更新するブロック変更手段と、前記バッファ管理情報ファイルを定期的に参照してバッファサイズごとにその使用状況を監視し前記使用状況に対応してその管理指標を更新するバッファ使用頻度検査手段とを有するバッファ管理方式が記載されている。
【００１８】
特許文献２には、データを送信する前や受信した後にいったんバッファメモリに格納する通信装置において、データをバッファメモリに入出力する際のデータ入出力速度に関する情報に基づき、データを格納するバッファのサイズを決定するバッファサイズ算出部と、バッファサイズ算出部が決定したバッファのサイズに基づき、データを格納可能なバッファ領域を設定するバッファメモリ管理制御部とを備えている通信装置が記載されている。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上記で述べた通り、データの入出力時のバッファ容量に制限があり、且つ、複数の周辺装置１５が動的に追加、削除されるような場合において、全体としての性能が最大となるようなバッファサイズの動的な調整方法及び装置が求められている。
【００２０】
しかしながら、従来の技術では、一定の大きさのバッファを固定的に割り当てることになり、全体としての性能を最大にするようにバッファサイズを決定することは困難である。
【００２１】
一方、特許文献１の発明は、業務プログラムの要求するバッファサイズに合わせてバッファサイズを動的に変化させる技術ではあるが、システム全体のスループットを最大にするように動的にバッファサイズを変更するものではない。
【００２２】
特許文献２の発明は、外部のコンピュータ等から取得したデータ転送レート及びデータ転送周期等の通信パラメータ用いて、バッファサイズを計算する技術であるが、接続されている装置のスループットを動的に算出してバッファサイズを決定する技術ではない。
【課題を解決するための手段】
【００２３】
本発明のバッファ管理方法は、データの処理を行うデータ処理装置と、前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部とを用いたバッファ管理方法であって、前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かを行う初期処理と、前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更する変更処理とを有することを特徴とする。
【００２４】
本発明のバッファ管理装置は、データの処理を行うデータ処理装置と、前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部とを備えたバッファ管理装置であって、前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かの初期処理を行い、前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更することを特徴とする。
【００２５】
本発明のバッファ管理プログラムは、データの処理を行うデータ処理装置と、前記データ処理装置に対してデータの入出力を行う複数の周辺装置と、前記データ処理装置と前記複数の周辺装置との間で入出力される前記データを一時記憶するバッファと、前記各周辺装置に対してそれぞれ設けられ、前記データの入出力を制御する複数のデバイスドライバと、前記デバイスドライバにおける動作のスループットに基づき、前記バッファサイズを管理するバッファ管理部とを用いたバッファ管理プログラムであって、前記複数のデバイスドライバのうちの特定のデバイスドライバから申告のあった前記バッファサイズに関する情報に応じたバッファサイズが確保できるか否かの処理を行う初期処理と、前記デバイスドライバ全体における動作のスループットに対する前記特定のデバイスドライバのスループットの割合に応じて、動的に前記バッファサイズを変更するバッファサイズの変更処理とを機能させるためのバッファ管理プログラムを特徴とする。
【発明の効果】
【００２６】
本発明のバッファ管理方法、バッファ管理装置及びバッファ管理プログラム
によれば、複数のデバイスドライバで限られた大きさの共有メモリをバッファとして利用する場合、バッファ管理装置により、各デバイスドライバのスループットが計算され、全体動作のスループットに対する当該デバイスドライバのスループットの割合に応じて動的にバッファサイズが決まるので、システム全体の性能をより効率的にすることができる。
【００２７】
更に、このとき、バッファサイズの決定は、バッファ管理装置が一元的に行うので各デバイスドライバは、バッファ管理に関して特別の処理を行わなくてもよいので、デバイスドライバの設計を複雑化することが抑えられる。
【発明を実施するための最良の形態】
【００２８】
本発明を実施するための最良の形態は、以下の好ましい実施例の説明を添付図面と照らし合わせて読むと、明らかになるであろう。但し、図面はもっぱら解説のためのものであって、本発明の範囲を限定するものではない。
【実施例１】
【００２９】
（実施例１のバッファ管理装置の構成）
図１は、本発明の実施例１におけるデータ処理装置３０を用いたバッファ管理装置を示す概略の構成図である。
【００３０】
このバッファ管理装置は、ＰＣ等のデータ処理装置３０を有し、このデータ処理装置３０には、バッファ管理部４０を介してプリンタ等の複数の周辺装置６０（＝６０−１〜６０−ｎ）が接続されている。データ処理装置３０は、装置全体を制御するＣＰＵ３１と、各種プログラムを格納するプログラムメモリ３２と、ワーキングデータ等を記憶するＲＡＭ等のデータメモリ３３等とを有し、これらは、データバス３４で相互に接続されている。データバス３４には、バッファ管理部４０が接続されている。
【００３１】
バッファ管理部４０は、共有メモリ４１と、バッファ管理部４０全体をプログラムにより制御する制御部４３とを有しており、各種の周辺装置６０（＝６０−１〜６０−ｎ）に接続されている。共有メモリ４１は、各周辺装置６０との入出力において各デバイスドライバによって、バッファ４２として、例えば、図１のＭ１（４２−１）、Ｍ２（４２−２）、Ｍ３（４２−３）のようにシェアされて使用される。
【００３２】
制御部４３は、デバイスドライバ３２ａ（＝３２ａ−１〜３２ａ―ｎ）の入出力処理時間を計測する処理時間計測手段４３ａ、当該のデバイスドライバ３２ａのスループプットを計算するスループット計算手段４３ｂ、全体のスループットに対する当該のデバイスドライバ３２ａのスループットの割合に応じてバッファサイズを計算するバッファサイズ計算手段４３ｃ及び２つのレジスタを有しており、これらは後に述べる周辺装置ごとの各種レジスタと相互に接続されている。
【００３３】
制御部４３の有するレジスタの内の一つは、各デバイスドライバに割り当てられているバッファ４２の総和を記憶しているバッファ割り当てサイズレジスタ（全体）（以下「ＢＡＲ（全体）」という。）４３ｄであり、別のレジスタは、各デバイスドライバのスループットの総和を記憶するスループットレジスタ（全体）（以下「ＴＰＲ（全体）」という。）４３ｅである。
【００３４】
次に各種レジスタ等について説明する。各種レジスタは、バッファ管理装置４０に接続さている周辺装置６０ごとに用意されている。バッファ要求サイズ（ＭＩＮ）レジスタ（以下「ＢＲＲ（ＭＩＮ）」という。）４４（＝４４−１〜４４−ｎ）は、デバイスドライバ３２ａが、バッファ管理部４０に対し要求するバッファサイズの最小値をセットするレジスタである。バッファ要求サイズ（ＭＡＸ）レジスタ（以下「ＢＲＲ（ＭＡＸ）」という。）４５（＝４５−１〜４５−ｎ）は、デバイスドライバが、バッファ管理部４０に対し要求するバッファサイズの最大値をセットするレジスタである。
【００３５】
バッファ割り当てサイズレジスタ（以下「ＢＡＲ」という。）４６（＝４６−１〜４６−ｎ）には、バッファサイズ計算手段４３ｃが算出したバッファサイズがセットされ、その値をデバイスドライバ３２ａに通知するために使用するレジスタである。バッファ転送バイト数レジスタ（以下「ＢＴＲ」という。）４７（＝４７―１〜４７−ｎ）は、デバイスドライバ３２ａが入出力処理を行ったときの転送バイト数をセットするためのレジスタである。バッファ転送応答カウンタ（以下「ＢＴＣ」という。）４８（＝４８−１〜４８−ｎ）は、デバイスドライバ３２ａが入出力処理を行っている間、処理時間計測手段４３ａがクロックをカウントするカウンタである。
【００３６】
スループットレジスタ（以下「ＴＰＲ」という。）４９（＝４９−１〜４９−ｎ）は、デバイスドライバ３２ａが、入出力処理を行った結果、スループット計算手段４３ｂにおいて計算された当該デバイスドライバ３２ａのスループットを記憶するためのレジスタである。バッファ転送制御レジスタ（以下「ＢＣＲ」という。）５０（＝５０−１〜５０−ｎ）は、デバイスドライバ３２ａがバッファ管理部４０に入出力の開始を通知するためのレジスタである。
【００３７】
（実施例１のバッファ管理方法）
（Ａ）  本実施例１のバッファ管理装置における初期動作
【００３８】
図２は、図１のバッファ管理装置における初期動作を示すフローチャートである。
【００３９】
本実施例１のバッファ管理装置における初期処理の動作は、以下のステップにより構成される。ある周辺装置６０（例えば、周辺装置６０−１）に対応するデバイスドライバ３２ａ（例えば、デバイスドライバ３２ａ―１）は、初めてデータをやり取りする前に、要求するバッファサイズの最小値をＢＲＲ（ＭＩＮ）４４−１に、最大値をＢＲＲ（ＭＡＸ）４５−１に書き込み、使用するバッファをバッファ管理部４０に要求する（ステップＳ１）。
【００４０】
バッファ管理装置４０は、ＢＲＲ（ＭＩＮ）４４−１を参照し（ステップ２）、バッファの割り当てが可能であるかをチェックする（ステップ３）。割り当てが不可能なときは（ＮＯ）、“０”をＢＡＲ４６−１にセットし処理を終了する（ステップ４）。デバイスドライバ３２ａは、ＢＡＲ４６−１を参照し、“０”であればバッファ割り当てが失敗したのでバッファサイズを小さくして再試行を行う。
【００４１】
バッファ管理部４０は、バッファの割り当てが可能なときは（ＹＥＳ）、ＢＲＲ（ＭＩＮ）４４−１を参照し、そこにセットされている最小値をＢＡＲ４６−１にセットする（ステップＳ５）。このとき、各デバイスドライバ３２ａに割り当てられているバッファサイズの総和が再計算され、ＢＡＲ（全体）４３ｄにセットされる。
【００４２】
デバイスドライバ３２ａは、ＢＡＲ４６−１にセットされたサイズのバッファ４２を確保し（ステップＳ６）、入出力要求をＢＣＲ５０−１にセットし（ステップＳ７）、入出力の開始をバッファ管理部４０に通知する。
【００４３】
バッファ管理部４０は、入出力要求を受けるとＢＴＣ４８−１をクリアし（ステップＳ８）、データの転送を開始する。処理時間計測手段４３ａは、データの転送中は、クロックをカウントし、ＢＴＣ４８−１に加算していく（ステップＳ９）。入出力が完了するまではステップＳ９のＢＴＣ４８−１のカウントを繰り返し、入出力が完了したら（ステップＳ１０）処理時間計測手段４３ａは、クロックのカウントを停止して（ステップＳ１１）転送したバイト数をＢＴＲ４７−１にセットする（ステップ１２）。
【００４４】
次にスループット計算手段４３ｂは、ＢＴＲ４７−１にセットされている転送バイト数ＢaをＢＴＣ４８−１にセットされている処理時間Ｐaで除することにより当該のデバイスドライバのスループットＴaを計算してＴＰＲ４９−１にセットする（ステップＳ１３）。例えば、転送バイト数Ｂa＝１０００バイト、処理時間Ｐa＝２００ミリ秒とすると、スループットＴa＝Ｂa／Ｐa＝１０００／０．２＝５０００[バイト／秒]となる。
【００４５】
続いて、全体のスループットＴsumを計算する（ステップＳ１４）。全体のスループットは、共有メモリ４１を共有しているすべての周辺装置６０における入出力処理のスループットＴiの総和であり、次の式で表わされる。
Ｔsum＝ΣＴi      （１）
【００４６】
当該のスループットＴaが計算されると、（１）式が再計算され全体のスループットＴsumが更新される。Ｔsumは、ＴＰＲ（全体）４３ｅにセットされ記憶される。以上、周辺装置６０−１を例として説明したが、他の周辺装置に対する処理についいても同様である。
【００４７】
（Ｂ）  本実施例１のバッファ管理装置における２回目以降の動作
図３は、図１のバッファ管理装置における２回目以降の動作を示すフローチャートであり、図２中の要素と共通の要素には共通の符号が付されている。
【００４８】
本実施例１のバッファ管理装置における２回目以降の動作処理の動作は、以下のステップにより構成される。デバイスドライバ３２ａは、２回目以降のデータをやり取りする前に、バッファ４２をバッファ管理部４０に要求する（ステップＳ２１）。バッファサイズ計算手段４３ｃは、全体動作のスループットに対する当該デバイスドライバのスループットの割合を全体のバッファサイズに乗じてバッファサイズを算出し（ステップ２２）、計算結果をＢＡＲ４６−１にセットする（ステップＳ２３）。
【００４９】
例えば、全体のバッファサイズをＭＳ、デバイスドライバに与えるバッファサイズをＭＳaとすると、
ＭＳa＝ＭＳ×（Ｔa／Ｔsum）      （２）
である。
【００５０】
例えば、ＭＳ＝３０００[バイト]、Ｔa＝５０００[バイト／秒]、
Ｔsum＝５０，０００[バイト／秒]とすると、（２）式から
ＭＳa＝３０００×（５０００／５０，０００）＝３００[バイト]
となる。
【００５１】
デバイスドライバ３２ａは、ＢＡＲ４６−１にセットされたサイズのバッファ４２を確保し（ステップＳ６）、入出力要求をＢＣＲ５０−１にセットし（ステップＳ７）、入出力の開始をバッファ管理部４０に通知する。ステップ６以下の動作は、図２に示したデバイスドライバ及びバッファ管理部４０の動作とほぼ同様である。なお、周辺装置６０−１を例として説明したが、他の周辺装置に対する処理についいても同様である。
【００５２】
（実施例１の効果）
本実施例１のバッファ管理方法、バッファ管理装置及びバッファ管理プログラムによれば、複数のデバイスドライバ３２ａで、限られた大きさの共有メモリ４１をバッファ４２として利用する場合、バッファ管理部４０により、各デバイスドライバ３２ａのスループットが計算され、全体動作のスループットに対する当該デバイスドライバ３２ａのスループットの割合に応じて動的にバッファサイズが決まるので、システム全体の性能をより効率的にすることができる。
【００５３】
更に、このとき、バッファサイズの決定は、バッファ管理部４０が一元的に行うので各デバイスドライバは３２ａ、バッファ管理に関して特別の処理を行わなくてもよいので、デバイスドライバ３２ａの設計を複雑化することが抑えられる。
【００５４】
（変形例）
本発明は、上記実施例に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）〜（ｃ）のようなものがある。
【００５５】
（ａ）  実施例１では、バッファ管理部４０は、プログラム制御で実現されていることで説明したが、各種回路によって実現してもよい。
【００５６】
（ｂ）  実施例１のＣＰＵ３１、プログラムメモリ３２、データメモリ３３、データバス３４及びバッファ管理部４０を１つの大規模集積回路で実現してもよい。
【００５７】
（ｃ）  実施例１では、プログラム等をプログラムメモリ３２に記憶することで説明したが、ハードディスクからデータメモリ３３にプログラムをロードして実行することでもよい。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施例１におけるデータ処理装置３０を用いたバッファ管理装置を示す概略の構成図である。
【図２】図１のバッファ管理装置における初期動作を示すフローチャートである。
【図３】図１のバッファ管理装置における２回目以降の動作を示すフローチャートである。
【図４】従来の一般的なデータ処理装置１０を示す説明図である。
【図５】図４のデータ処理装置１０を用いたバッファ管理装置を示す概略の構成図である。
【符号の説明】
【００５９】
３０            データ処理装置
３１            中央処理装置
３２            プログラムメモリ
３２ａ          デバイスドライバ
３３            データメモリ
３４            データバス
４０            バッファ管理部
４１            共有メモリ
４２            バッファ
４３            制御部
４３ａ          処理時間計測手段
４３ｂ          スループット計算手段
４３ｃ          バッファサイズ計算手段
６０            周辺装置
【図１】
2010128743.tif 000003
【図２】
2010128743.tif 000004
【図３】
2010128743.tif 000005
【図４】
2010128743.tif 000006
【図５】
2010128743.tif 000007