(57)【特許請求の範囲】
【請求項１】
外部記憶装置へのアクセスを行う計算機に、
前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定ステップと、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を記憶領域に一時的に保持するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたかを判定するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたと判定された場合、一定時間を計測するタイマを起動するステップと、
前記記憶領域に、前記パラメータ決定ステップにより決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記記憶領域に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を前記記憶領域に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行ステップと
を実行させるための外部記憶装置ドライバプログラムであって、
前記パラメータ決定ステップは、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量に基づいて前記１つにまとめる書き込み要求の数または書き込みデータ量を算出するパラメータ計算ステップであって、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとし、予め定められた読み出し要求の数または読み出しデータ量をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋｘとして算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋＡとして算出するパラメータ計算ステップを含む
ことを特徴とする外部記憶装置ドライバプログラムを記録した機械読み取り可能な記録媒体。
【請求項２】
外部記憶装置へのアクセスを行う計算機に、
少なくとも、前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定ステップと、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を記憶領域に一時的に保持するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたかを判定するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたと判定された場合、一定時間を計測するタイマを起動するステップと、
前記記憶領域に、前記パラメータ決定ステップにより決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記記憶領域に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を前記記憶領域に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行ステップと
を実行させるための外部記憶装置ドライバプログラムであって、
前記パラメータ決定ステップは、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量と、前記単位時間より大きな時間範囲で取得される読み出し要求の発生頻度ａに対する書き込み要求の発生頻度ｂの比率ｂ／ａとに基づいて、前記１つにまとめる書き込み要求の数または書き込みデータ量を算出するパラメータ計算ステップであって、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとし、予め定められた読み出し要求の数または読み出しデータ量をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋ（ｂｘ／ａ）として算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋ（ｂＡ／ａ）として算出するパラメータ計算ステップを含む
ことを特徴とする外部記憶装置ドライバプログラムを記録した機械読み取り可能な記録媒体。
【請求項３】
外部記憶装置へのアクセスを行う計算機に、
少なくとも、前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定ステップと、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を記憶領域に一時的に保持するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたかを判定するステップと、
前記記憶領域が空の状態にあるときに前記保持するステップが実行されたと判定された場合、一定時間を計測するタイマを起動するステップと、
前記記憶領域に、前記パラメータ決定ステップにより決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記記憶領域に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を前記記憶領域に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行ステップと
を実行させるための外部記憶装置ドライバプログラムであって、
前記パラメータ決定ステップは、前記最も最近の単位時間における読み出し要求の数と前記外部記憶装置への前記最も最近の単位時間における書き込み要求の数との合計値である単位時間当たりの要求数合計値、または前記最も最近の単位時間における読み出しデータ量と前記外部記憶装置への前記最も最近の単位時間における書き込みデータ量との合計値である単位時間当たりのデータ量合計値をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとすると、前記ｘに基づいて前記ｙを算出するパラメータ計算ステップであって、予め定められた要求数合計値またはデータ量合計値をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋｘとして算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋＡとして算出するパラメータ計算ステップを含む
ことを特徴とする外部記憶装置ドライバプログラムを記録した機械読み取り可能な記録媒体。
【請求項４】
外部記憶装置へのアクセスを行う計算機において、
前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定手段と、
前記外部記憶装置への書き込み要求が一時的に保持される書き込み要求記憶手段と、
前記外部記憶装置へのアクセスを実行する外部記憶装置アクセス制御手段とを具備し、
前記パラメータ決定手段は、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量に基づいて前記１つにまとめる書き込み要求の数または書き込みデータ量を算出するパラメータ計算手段であって、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとし、予め定められた読み出し要求の数または読み出しデータ量をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋｘとして算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋＡとして算出するパラメータ計算手段を含み、
前記外部記憶装置アクセス制御手段は、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を前記書き込み要求記憶手段に追加する追加手段と、
前記書き込み要求記憶手段が空の状態にあるときに前記追加手段によって前記書き込み要求記憶手段に前記書き込み要求が追加された場合に起動されて、一定時間を計測するタイマと、
前記書き込み要求記憶手段に、前記パラメータ決定手段により決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記書き込み要求記憶手段に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を記憶手段に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行手段とを含む
ことを特徴とする計算機。
【請求項５】
外部記憶装置へのアクセスを行う計算機において、
少なくとも、前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定手段と、
前記外部記憶装置への書き込み要求が一時的に保持される書き込み要求記憶手段と、
前記外部記憶装置へのアクセスを実行する外部記憶装置アクセス制御手段とを具備し、
前記パラメータ決定手段は、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量と、前記単位時間より大きな時間範囲で取得される読み出し要求の発生頻度ａに対する書き込み要求の発生頻度ｂの比率ｂ／ａとに基づいて、前記１つにまとめる書き込み要求の数または書き込みデータ量を算出するパラメータ計算手段であって、前記最も最近の単位時間における読み出し要求の数または読み出しデータ量をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとし、予め定められた読み出し要求の数または読み出しデータ量をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋ（ｂｘ／ａ）として算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋ（ｂＡ／ａ）として算出するパラメータ計算手段を含み、
前記外部記憶装置アクセス制御手段は、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を前記書き込み要求記憶手段に追加する追加手段と、
前記書き込み要求記憶手段が空の状態にあるときに前記追加手段によって前記書き込み要求記憶手段に前記書き込み要求が追加された場合に起動されて、一定時間を計測するタイマと、
前記書き込み要求記憶手段に、前記パラメータ決定手段により決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記書き込み要求記憶手段に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を記憶手段に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行手段とを含む
ことを特徴とする計算機。
【請求項６】
外部記憶装置へのアクセスを行う計算機において、
少なくとも、前記外部記憶装置への最も最近の単位時間における読み出し要求の数、または当該読み出し要求で指定される前記最も最近の単位時間における読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定手段と、
前記外部記憶装置への書き込み要求が一時的に保持される書き込み要求記憶手段と、
前記外部記憶装置へのアクセスを実行する外部記憶装置アクセス制御手段とを具備し、
前記パラメータ決定手段は、前記最も最近の単位時間における読み出し要求の数と前記外部記憶装置への前記最も最近の単位時間における書き込み要求の数との合計値である単位時間当たりの要求数合計値、または前記最も最近の単位時間における読み出しデータ量と前記外部記憶装置への前記最も最近の単位時間における書き込みデータ量との合計値である単位時間当たりのデータ量合計値をｘとし、前記１つにまとめる書き込み要求の数または書き込みデータ量をｙとすると、前記ｘに基づいて前記ｙを算出するパラメータ計算手段であって、予め定められた要求数合計値またはデータ量合計値をＡとし、予め定められた書き込み要求の数または書き込みデータ量をｋＡとすると、前記ｘが前記Ａ未満の場合には前記ｙをｋｘとして算出し、前記ｘが前記Ａ以上の場合には前記ｙを前記ｋＡとして算出するパラメータ計算手段を含み、
前記外部記憶装置アクセス制御手段は、
前記外部記憶装置への書き込み要求を受け取る毎に、当該書き込み要求を前記書き込み要求記憶手段に追加する追加手段と、
前記書き込み要求記憶手段が空の状態にあるときに前記追加手段によって前記書き込み要求記憶手段に前記書き込み要求が追加された場合に起動されて、一定時間を計測するタイマと、
前記書き込み要求記憶手段に、前記パラメータ決定手段により決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった第１の場合と、前記決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まらなくても、前記タイマが前記一定時間を計測し終えた第２の場合のいずれの場合にも、前記書き込み要求記憶手段に貯まっている書き込み要求を、まとめて１つの書き込み要求として前記外部記憶装置へのアクセスを実行する一方、前記外部記憶装置への読み出し要求に対しては当該読み出し要求を記憶手段に貯めておかずに前記外部記憶装置へのアクセスを実行するアクセス実行手段とを含む
ことを特徴とする計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、磁気ディスク装置に代表される外部記憶装置へのアクセスが行われる計算機システムに係り、特に外部記憶装置を対象とするデータの読み出し／書き込みを高速に行うのに好適な外部記憶装置ドライバプログラムを記録した記録媒体、及び外部記憶装置アクセス機能を有する計算機に関する。
【０００２】
【従来の技術】
従来から、磁気ディスク装置に代表される外部記憶装置が計算機（計算機本体）に接続され、当該計算機が利用者の要求に応じて外部記憶装置をアクセスしながら必要なサービスを提供する計算機システムが知られている。
【０００３】
この種の計算機システムでは、（１）外部記憶装置に対し、複数の読み出し要求と書き込み要求が並列に発生し、（２）当該外部記憶装置を対象とする読み出し／書き込みの処理性能に関して、読み出しデータ量と書き込みデータ量の合計、または読み出しの実行回数と書き込みの実行回数との合計、またはその両方に上限のある場合が多い。
【０００４】
このような計算機システムの１つに、外部記憶装置ドライバプログラムに従い、外部記憶装置に対する複数の書き込み要求をまとめて実行する手法を適用する計算機システムがある。この手法を適用する理由は、書き込み要求を１つずつ実行するよりも、複数の書き込み要求をまとめて実行した方が、書き込みの性能を上げることができることによる。
【０００５】
このため、この種の従来の計算機システムでは、書き込み要求が決められた数または決められたデータ量だけ貯まるまで待ち、貯まった書き込み要求をまとめて１度に書き込みを行っていた。但し、複数の書き込み要求をまとめて実行できるのは、（１）書き込み要求が常に、前回書き込んだ箇所の次から行われ、つまりシーケンシャル書き込みであり、（２）１回の書き込みにかかる時間は、ある程度のサイズまではあまり変わらない場合である。
【０００６】
なお、書き込み要求の並列度が小さいときは、書き込みが一定時間以上遅れることを避けるため、決められた数または量だけ貯まらなくても、一定の時間が経過した時点で書き込みを行うのが一般的である。
【０００７】
【発明が解決しようとする課題】
上記したように従来の計算機システムでは、計算機から外部記憶装置に対する書き込みの性能を向上するために、外部記憶装置ドライバプログラムに従い、複数の書き込み要求をまとめて実行するようにしていた。しかし、その際に読み出し要求については何も考慮されていなかった。
【０００８】
このため、従来の計算機システムでは、読み出し要求と書き込み要求が多数並列に発生した場合に、書き込み要求の処理はまとめ書きをすることで性能を向上させることが可能であったが、読み込み要求の処理の性能を上げることができず、外部記憶装置に対する書き込みと読み出しの処理性能の限界を超えてしまい、結果として計算機の提供するサービスの速度が低下するという問題が存在した。
【０００９】
本発明は上記事情を考慮してなされたものでその目的は、読み出し要求と書き込み要求が並列に多数発生したときの読み出し要求の処理性能を向上させ、計算機の提供するサービスの速度低下を抑えることができる外部記憶装置ドライバプログラムを記録した記録媒体、及び外部記憶装置アクセス機能を有する計算機を提供することにある。
【００１０】
本発明の他の目的は、ランダムな書き込みの場合にもまとめ書きが行える外部記憶装置ドライバプログラムを記録した記録媒体、及び外部記憶装置アクセス機能を有する計算機を提供することにある。
【００１１】
【課題を解決するための手段】
本発明の記録媒体は、少なくとも、外部記憶装置への単位時間当たりの読み出し要求の数、または当該読み出し要求で指定される単位時間当たりの読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量を示すパラメータを決定するパラメータ決定ステップと、外部記憶装置への書き込み要求を記憶領域に一時的に保持しておき、上記パラメータ決定ステップにより決定されたパラメータの示す数または書き込みデータ量分の書き込み要求が貯まった場合に、まとめて１つの書き込み要求として外部記憶装置へのアクセスを実行する一方、外部記憶装置への読み出し要求に対してはそのまま外部記憶装置へのアクセスを実行する外部記憶装置アクセス制御ステップとを、外部記憶装置へのアクセスを行う計算機に実行させるための外部記憶装置ドライバプログラムを記録していることを特徴とする。
【００１２】
このような構成においては、少なくとも、外部記憶装置への単位時間当たりの読み出し要求の数、または当該読み出し要求で指定される単位時間当たりの読み出しデータ量に基づいて、１つにまとめる書き込み要求の数または書き込みデータ量が決定され、この決定された数または書き込みデータ量分の書き込み要求が貯まった段階で、１つの書き込み要求にまとめられて外部記憶装置へのアクセスが実行されることから、外部記憶装置に対する書き込み／読み出しの並列度が両方共に高いときに、書き込みによって読み出しが待たされる、或いは書き込みに時間がかかることを防止し、外部記憶装置へのアクセスが空いているときに書き込みを行うことが可能となる。
【００１３】
さて、書き込み要求を１つにまとめて外部記憶装置へのアクセスを実行した場合、外部記憶装置からの完了通知は、この１つにまとめた書き込み要求に対するものとなる。このため、元の書き込み要求（上記決定された数の書き込み要求）の要求元には、当該元の書き込み要求の各々に対する完了通知を返す必要がある。そのためには、１つの書き込み要求にまとめた際に、その要求の識別情報（ＩＤ）を、上記記憶領域に保持されている元の書き込み要求にそれぞれ対応させて、当該記憶領域に保持しておき、外部記憶装置から当該識別情報を持った完了通知が返された場合に、当該識別情報で上記記憶領域を検索するとよい。このようにすると、元の各書き込み要求を確実に検出して、当該元の各書き込み要求毎に対応する完了通知を作成して要求元に返すことが可能となる。
【００１４】
さて、上記決定された数または書き込みデータ量分の書き込み要求を１つにまとめて効率的に外部記憶装置をアクセスするには、当該決定された数または書き込みデータ量分の書き込み要求の指定する書き込みがシーケンシャルアクセスとなる場合が最適である。このような場合、決定された数または書き込みデータ量分の書き込み要求を１つの新たな書き込み要求に変換するには、書き込み先として、当該決定された数または書き込みデータ量分の書き込み要求のうちの先頭の書き込み要求の指定する書き込み先を、データサイズとして、当該決定された数または書き込みデータ量分の書き込み要求の指定する各データサイズの合計値を用いるだけでよく、この新たな１つの書き込み要求を実行するだけで、対応する上記決定された数または書き込みデータ量分の書き込み要求の指定する書き込みを一括して処理できる。
【００１５】
また本発明は、外部記憶装置への書き込み要求の指定する書き込みがシーケンシャルアクセスとならない場合、つまりランダムアクセスの場合にも、あたかもシーケンシャルアクセスであるかの如く取り扱えるように、外部記憶装置に必ずファイル終端位置からデータが書かれるデータファイルを置き、外部記憶装置に対する書き込み要求を受けて、上記データファイルの終端位置から指定データを書き込む新たな書き込み要求に変換すると共に、変換前の書き込み要求の指定する書き込み先と変換後の書き込み要求の指定する書き込み先との対応を示すインデックスファイルを用いて、当該インデックスファイルに、該当する対応関係を示す情報を設定して、上記変換後の書き込み要求を外部記憶装置への実際の書き込み要求であるとして扱うようにしたことをも特徴とする。
【００１６】
このような構成において、記憶領域に一時的に記憶される書き込み要求の列は、上記データファイルの終端よりデータを書き込むことを要求する新たな書き込み要求に変換されたものであり、したがって変換前の書き込み要求ではランダムアクセスであったとしても、必ずシーケンシャルアクセスとなる。このため、上記決定された数の書き込み要求を１つにまとめて効率的に外部記憶装置をアクセスすることが可能となる。
【００１７】
また本発明は、少なくとも上記単位時間当たりの読み出し要求の数または読み出しデータ量を所定の単調非減少関数に適用して上記１つにまとめる書き込み要求の数または書き込みデータ量を算出するようにしたことをも特徴とする。
【００１８】
このような構成においては、外部記憶装置に対する読み出し要求の数または読み出しデータ量が多いほど、まとめる書き込み要求の数または書き込みデータ量は多くなることから、つまり書き込みの発生頻度が低下されることから、読み出し要求と書き込み要求が並列に多数発生したときの読み出し要求の処理性能を著しく向上させることが可能となる。ここで、書き込みの頻度をあまり下げすぎると、書き込みが速やかに終了しなくなる。このため、まとめる書き込み要求の数または書き込みデータ量には上限値を設け、外部記憶装置に対する読み出し要求の数または読み出しデータ量が所定値以上の範囲では、この上限値を用いるとよい。
【００１９】
また本発明は、上記単調非減少関数が上記単位時間より大きな範囲で取得される読み出し要求の発生頻度と書き込み要求の発生頻度とから動的に設定される構成としたことをも特徴とする。
【００２０】
このような構成においては、１つにまとめる書き込み要求の数または書き込みデータ量は、過去の読み出し要求の発生頻度と書き込み要求の発生頻度をも反映したものとなることから、読み出し要求の発生頻度と書き込み要求の発生頻度が一定でないシステムにおいても、読み出し／書き込みの発生状況に適した設定が可能となる。特に、書き込み要求の発生頻度に対する読み出し要求の発生頻度の比率を適用し、１つにまとめる書き込み要求の数または書き込みデータ量が当該比率に正比例するように上記関数が動的に設定されるようにするならば、外部記憶装置に対する読み出し要求の数または読み出しデータ量が所定値以上の範囲では、読み出しと書き込みの数またはデータ量の比率を常に一定にすることも可能となる。
【００２１】
また本発明は、上記１つにまとめる書き込み要求の数または書き込みデータ量を算出するのに、単位時間当たりの読み出し要求の数または読み出しデータ量だけでなく、外部記憶装置への単位時間当たりの書き込み要求の数または当該書き込み要求で指定される単位時間当たりの書き込みデータ量も加味するようにしたことをも特徴とする。
【００２２】
このような構成においては、書き込み要求の数または書き込みデータ量が少ないにも拘わらず、読み出し要求の数または読み出しデータ量が多いというだけで、１つにまとめる書き込み要求の数または書き込みデータ量が大きな値に決定されるのを防止でき、書き込みの発生頻度を、読み出しと書き込みが並列に同時に多数発生している状態を的確に反映した最適値となるように設定することが可能となる。
【００２３】
なお、上記した外部記憶装置ドライバプログラムを記録した機械読み取り可能な記録媒体に係る本発明は、当該プログラムで実現される機能手段を備えた計算機に係る発明としても成立し、当該プログラムで適用される手順を持つ方法に係る発明としても成立する。
【００２４】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００２５】
［第１の実施形態］
（全体構成）
図１は本発明の第１の実施形態に係る計算機システムの全体構成を示すブロック図である。
【００２６】
図１の計算機システムは、計算機２０４と、磁気ディスク装置に代表される外部記憶装置２０３とが、バス２０５によって接続された構成を適用している。
【００２７】
計算機２０４上では、ソフトウェアとして、アプリケーション（アプリケーションプログラム）２０２と、ＯＳ（オペレーティングシステム）２０１、及び本発明に直接関係するドライバ（外部記憶装置ドライバプログラム）１００が動作している。
【００２８】
計算機システムの利用者は、キーボード、マウス等の入力機器を介してアプリケーション２０２を利用することで、当該計算機システムの提供するサービスを受ける。アプリケーション２０２（を実行するＣＰＵ）は、利用者からの要求に応じて、ＯＳ２０１に対し、外部記憶装置２０３への書き込み要求３０１、または読み出し要求３０２を送る。
【００２９】
ＯＳ２０１は、アプリケーション２０２からの書き込み要求３０１、または読み出し要求３０２を受け取ると、ドライバ１００に対し、対応する書き込み要求３０３、または読み出し要求３０４を送る。
【００３０】
ドライバ１００は、ＯＳ２０１からの書き込み要求３０３、または読み出し要求３０４を受け取ると、外部記憶装置２０３側（具体的には、主記憶と外部記憶装置２０３とのデータ転送を司る図示せぬチャネル装置）に、対応する書き込み要求３０５、または読み出し要求３０６を送る。
【００３１】
書き込み要求３０１，３０３，３０５は、図２（ａ）に示すように、各要求固有のＩＤ番号（識別番号）、書き込み先（どこへ書き込むか）の情報と、書き込み元（どこにあるデータを書き込むか）の情報、書き込むデータのサイズの情報を含んでいる。
【００３２】
同様に、読み出し要求３０２，３０４，３０６は、図２（ｂ）に示すように、各要求固有のＩＤ番号、読み出し元（どこのデータを読み出すか）の情報、読み出し先（どこに読み出すか）の情報、読み出すサイズの情報を含んでいる。
【００３３】
外部記憶装置２０３は書き込み要求３０５、または読み出し要求３０６の実行が終了すると、その旨を示す完了通知３０７をドライバ１００に送る。
【００３４】
ドライバ１００は外部記憶装置２０３からの完了通知３０７を受け取ると、対応するドライバ１００での完了通知３０８をＯＳ２０１に送る。ＯＳ２０１は、完了通知３０８を受け取ると、対応するＯＳ２０１での完了通知３０９をアプリケーション２０２に送る。アプリケーション２０２はＯＳ２０１から完了通知３０９を受け取ることで、書き込み要求３０１、または読み出し要求３０２に対する外部記憶装置２０３での書き込み、または読み出しが終了したことを知ることができる。
【００３５】
上記完了通知３０７，３０８，３０９は、図２（ｃ）に示すように、対応する要求のＩＤ番号を含んでいる。
【００３６】
（ドライバ１００の構成）
次に、ドライバ１００内部の構成について、図１を参照しながら説明する。
まずドライバ１００は、ＯＳ２０１からの要求（書き込み要求３０３、読み出し要求３０４）を受け付け、処理の終了した要求に対して結果を返すＩ／Ｏ（入出力）処理部１１０と、次に述べる外部記憶装置アクセス制御部１３０で利用するパラメータを設定するためのパラメータ決定部１２０と、ＯＳ２０１からの要求に対応した書き込み要求３０５または読み出し要求３０６を外部記憶装置２０３側に送り、外部記憶装置２０３側からの完了通知３０７を受け取る外部記憶装置アクセス制御部１３０との３つの機能手段から構成される。ここで、パラメータ決定部１２０から外部記憶装置アクセス制御部１３０には、書き込みの制御に使われる後述するパラメータ１２１が送られる。
【００３７】
（ドライバ１００内のＩ／Ｏ処理部１１０の機能）
次に、Ｉ／Ｏ処理部１１０の機能について説明する。
アプリケーション２０２からの読み出し要求３０１、書き込み要求３０２は、ＯＳ２０１を通じて、書き込み要求３０３、読み出し要求３０４として、ドライバ１００内のＩ／Ｏ処理部１１０に送られる。
【００３８】
Ｉ／Ｏ処理部１１０は、ＯＳ２０１から読み出し要求３０４を受け取った場合、その受け取った読み出し要求３０４を外部記憶装置アクセス制御部１３０に送ると共にパラメータ決定部１２０にも送る。またＩ／Ｏ処理部１１０は、書き込み要求３０３を受け取った場合には、当該書き込み要求３０３を外部記憶装置アクセス制御部１３０に送る。
【００３９】
（ドライバ１００内のパラメータ決定部１２０の機能）
次に、パラメータ決定部１２０の機能について、図３に示す当該パラメータ決定部１２０のブロック構成図を参照して説明する。
【００４０】
パラメータ決定部１２０は、過去の一定の時間（最も最近の単位時間）にＩ／Ｏ処理部１１０から受け取った読み出し要求３０４の数を記憶する過去データ記憶部１２４と、当該過去データ記憶部１２４の記憶情報、即ち読み出し要求の数１２５をもとに、書き込み要求を貯める数を示すパラメータ１２１を決定するパラメータ計算部１２６とを備えている。パラメータ計算部１２６で決定されたパラメータ１２１は外部記憶装置アクセス制御部１３０に送られる。
【００４１】
過去データ記憶部１２４は、過去の一定の時間（最も最近の単位時間）に受け取った書き込み要求３０３の数を記憶するため、１つのカウンタ１２２と、複数、例えば５つの記憶領域１２３-1〜１２３-5を使って、次のような処理を行う。例として、５秒単位で、その５秒の単位時間内に受け取った要求の数を記憶する場合を挙げる。
【００４２】
まず、１秒間に受け取った読み出し要求３０４の数をカウンタ１２２でカウントし、記憶領域１２３-1に記憶する。次の１秒間に受け取った読み出し要求３０４の数をカウントし、記憶領域１２３-2に記憶する。これを繰り返し、記憶領域１２３-5まで記憶したら、次は記憶領域１２３-1に記憶する。過去５秒間の読み出し要求３０４の数を求めるには、記憶領域１２３-1〜１２３-5までに記憶されている数を合計する。同様の方法で、過去５秒間の読み出し要求３０４で要求されたデータのサイズも、１秒単位で記憶領域１２３-1〜１２３-5に記憶することが可能である。
【００４３】
パラメータ計算部１２６は、過去データ記憶部１２４から、最も最近の単位時間の読み出し要求の数１２５を受け取って、次のような処理を行う。
【００４４】
まず、書き込み要求を貯める数をｙとし、単位時間に受け取った読み出し要求の数をｘとすると、ｙとｘの関係は、ｆ(ｘ)という関数を使って、
ｙ＝ｆ(ｘ)                      ……（１）
と表すことができる。
【００４５】
ここでは、関数ｆ(ｘ)として、
（１）ｘが大きいときには大きく、小さいときには小さくなり
（２）ある程度以上には大きくならない
ような関数を適用する。
【００４６】
さて、上記（１）の条件を満たす関数ｆ(ｘ)を適用する理由は、次の通りである。
（ａ）読み出しの並列度が高い場合（ｘが大きい場合に相当）は、ｙ＝ｆ(ｘ)の値が大きくなって、つまり書き込み要求を貯める数が大きくなって、書き込みの頻度を下げることができるため、書き込み中に読み出し処理が待たされるのを避けることができる。
（ｂ）逆に、読み出しの並列度が低い場合（ｘが小さい場合に相当）には、ｙ＝ｆ(ｘ)の値が小さくなって、つまり書き込み要求を貯める数が小さくなって、書き込みの頻度を上げることができ、書き込みのレスポンスを向上させることができる。
【００４７】
次に、上記（２）の条件を満たす関数ｆ(ｘ)を適用する理由は、読み出しの並列度が高いからといって、書き込みの頻度をあまり下げすぎると、書き込みが速やかに終了しないため、アプリケーション２０２が書き込み終了を待つことになり、逆に性能が上がらなくなってしまう不具合を防止するためである。
【００４８】
本実施形態では、上記（１）と（２）の２つの条件を満たす関数ｆ(ｘ)として、例えば図４に示すような関数ｆ(ｘ)、即ち
0004176933.tif 000002
のように表される関数ｆ(ｘ)を定めている。ここで、ｋはシステムによって異なる定数である。
【００４９】
このように、本実施形態で適用される関数ｆ(ｘ)は、０≦ｘ＜Ａの範囲ではｘに比例して増加し、つまり単調増加し、ｘ≧Ａの範囲では一定値ｋＡをとる、一種の単調非減少関数である。
【００５０】
パラメータ計算部１２６は、過去データ記憶部１２４から、最も最近の単位時間（例えば５秒間）の読み出し要求の数（１２５）を受け取ると、それをｘとして、上記（２）式に従う演算を行うことで、書き込み要求を貯める数ｙを算出し、それをパラメータ１２１として外部記憶装置アクセス制御部１３０に送る。パラメータ計算部１２６は、この動作を、上記単位時間間隔（例えば５秒を単位時間とする時間間隔）で繰り返す。
【００５１】
以上の動作を具体例で説明する。ここでは、ｘ１を過去５秒間に受け取った読み出し要求の数、ｙ１を書き込み要求をためる数とする。
また、本計算機システムでは、過去５秒間に１００個以上読み出し要求を受け取った場合に、書き込み要求を１０個まとめて書き込むことにする。このとき、Ａは１００、ｋは１／１０となる。
【００５２】
つまり、ｘ１，ｙ１の関係は、
0004176933.tif 000003
と表される。
【００５３】
（ドライバ１００内の外部記憶装置アクセス制御部１３０の機能）
次に、外部記憶装置アクセス制御部１３０の機能について、図５に示す当該外部記憶装置アクセス制御部１３０のブロック構成図を参照して説明する。
外部記憶装置アクセス制御部１３０は、Ｉ／Ｏ処理部１１０から受け取った書き込み要求３０３を含む情報を記憶するための記憶領域１３１と、書き込み要求３０３を結合して新たな書き込み要求３０５を生成すると共に、当該書き込み要求３０５に対する外部記憶装置２０３側からの完了通知３０７を、結合した書き込み要求３０３数分の完了通知３０８に分解する要求変換部１３２とを備えている。ここでは、書き込み要求３０３の指定する書き込み先は常に、先行する書き込み要求３０３の指定する（書き込み先とデータサイズとで決まる）書き込み先領域の次の位置であるものとする。つまり、シーケンシャル書き込みが行われるものとする。
【００５４】
要求変換部１３２は、タイムアウトを検出するためのタイマ１３３を内蔵する。このタイマ１３３は、セットされると時間カウントを行って、一定時間後に時間切れ（タイムアウト）を通知する機能を有する。また、タイマ１３３は、リセットされた状態では時間カウントを行わず、したがっていつまでも時間切れにならない。
【００５５】
記憶領域１３１は、書き込み要求記憶部１３４とＩＤ記憶部１３５との組の集合である。書き込み要求記憶部１３４には書き込み要求３０３が記憶される。また、ＩＤ記憶部１３５には、当該ＩＤ記憶部１３５と組をなす書き込み要求記憶部１３４に記憶されている書き込み要求３０３に対応して生成される書き込み要求３０５中のＩＤ（図２（ａ）参照）が記憶される。
【００５６】
一方、Ｉ／Ｏ処理部１１０から読み出し要求３０４を受け取った場合、外部記憶装置アクセス制御部１３０は当該読み出し要求３０４を、そのまま読み出し要求３０６として外部記憶装置２０３側に送る。同様に外部記憶装置アクセス制御部１３０は、外部記憶装置２０３からの読み出し要求３０６に対する完了通知３０７、つまり読み出し終了通知は、そのまま完了通知３０８としてＩ／Ｏ処理部１１０に送る。
【００５７】
次に、外部記憶装置アクセス制御部１３０での書き込み要求制御処理について、図６のフローチャートを参照して説明する。
まず外部記憶装置アクセス制御部１３０は、次の３つのイベント、即ち
（１）書き込み要求３０３がＩ／Ｏ処理部１１０から送られてきたとき
（２）書き込み要求３０３を貯める数（閾値）を表すパラメータ１２１がパラメータ決定部１２０から送られてきたとき
（３）タイマ１３３から時間切れ（タイムアウト）が通知されたとき
のいずれかが発生するまでは待ち状態になる（ステップＳ１）。
【００５８】
ここで、上記（１）のイベントが発生した場合、つまり書き込み要求３０３がＩ／Ｏ処理部１１０から送られてきたときの動作を説明する。
まず外部記憶装置アクセス制御部１３０は、Ｉ／Ｏ処理部１１０から受け取った書き込み要求３０３を、ポインタの指す記憶領域１３１内の書き込み要求記憶部１３４に設定する（ステップＳ２）。このとき記憶領域１３１が空であるならば、ポインタは例えば先頭の書き込み要求記憶部１３４を指すものとする。なお、書き込み要求記憶部１３４と組をなすＩＤ記憶部１３５へのＩＤ設定は行われない。
【００５９】
次に外部記憶装置アクセス制御部１３０は、記憶領域１３１が空の状態での書き込み要求３０３の設定であるか、つまり、まとめ書きの対象となる初めての書き込み要求３０３であるか否かをチェックし（ステップＳ３）、そうであればタイマ１３３をセットする（ステップＳ４）。
【００６０】
外部記憶装置アクセス制御部１３０は、初めての書き込み要求３０３でなければそのまま、初めての書き込み要求３０３であればステップＳ４の後に、書き込みを行うか否かの条件の確認を行う（ステップＳ５）。この条件は、貯まっている書き込み要求の数が、パラメータ決定部１２０からのパラメータ１２１で表される書き込み要求を貯める数以上となったときである。
外部記憶装置アクセス制御部１３０は、上記条件を満たさないときは、書き込みを行わず、ステップＳ１のイベント待ち状態に戻る。
【００６１】
一方、上記条件を満たしたときは、外部記憶装置アクセス制御部１３０は要求変換部１３２により、それまでに記憶領域１３１に貯まっていた書き込み要求３０３のうち、その先頭（つまり最も以前に受け取った書き込み要求３０３）から上記パラメータ１２１で表される数の連続する書き込み要求３０３をまとめて１つの書き込み要求３０５に変換する（ステップＳ６）。記憶領域１３１に書き込み要求３０３として５つの書き込み要求Ａ〜Ｅが貯まったことで、上記条件１または条件２を満たしたものとすると、記憶領域１３１の内容と、書き込み要求３０５は、図７のようになる。
【００６２】
外部記憶装置アクセス制御部１３０は上記ステップＳ６を実行すると、当該ステップＳ６で変換された書き込み要求３０５のＩＤを、元の全ての書き込み要求３０３が記憶されている書き込み要求記憶部１３４と組をなすＩＤ記憶部１３５に、図７に示すように書き込む（ステップＳ７）。次に外部記憶装置アクセス制御部１３０は、外部記憶装置２０３側に書き込み要求３０５を送って書き込みを行わせると共にタイマ１３３をリセットする（ステップＳ８，Ｓ９）。
【００６３】
続いて外部記憶装置アクセス制御部１３０は、書き込み要求３０５で要求した書き込みが終了するまで、つまり書き込み要求３０５に対する完了通知３０７が外部記憶装置２０３から返されるまで待つ（ステップＳ１０）。書き込み要求３０５に対する完了通知３０７が返されたか否かは、書き込み要求３０５と同一のＩＤがセットされた完了通知３０７が返されたか否かにより判定できる。
【００６４】
このような状態で、外部記憶装置２０３から外部記憶装置アクセス制御部１３０に書き込み要求３０５に対する完了通知３０７が返されると、外部記憶装置アクセス制御部１３０は、完了通知３０７から元の全ての書き込み要求３０３に対する完了通知３０８を作成し、Ｉ／Ｏ処理部１１０に送る（ステップＳ１１）。この完了通知３０８の作成方法について、図８を参照して説明する。
【００６５】
まず外部記憶装置アクセス制御部１３０は、外部記憶装置２０３から書き込み要求３０５に対する完了通知３０７が送られた場合、当該完了通知３０７中のＩＤ（ここでは、Ｘ）により、このＩＤ（＝Ｘ）が設定されている記憶領域１３１内のＩＤ記憶部１３５を全て探し、当該ＩＤ記憶部１３５と組をなす書き込み要求記憶部１３４から対応する書き込み要求３０３（ここでは、Ａ〜Ｅの各書き込み要求３０３）を取り出す。そして外部記憶装置アクセス制御部１３０は、取り出した全ての書き込み要求３０３（Ａ〜Ｅ）について、それぞれ当該書き込み要求３０３と同一ＩＤが設定された対応する完了通知３０８を作成する。
【００６６】
このようにして、記憶領域１３１に貯まっている、完了通知３０７に対応した各書き込み要求３０３について、対応する完了通知３０８がそれぞれ作成されて、外部記憶装置アクセス制御部１３０からＩ／Ｏ処理部１１０に送られる。
【００６７】
次に、上記（２）のイベントが発生した場合、つまり書き込み要求３０３を貯める数（閾値）を表すパラメータ１２１がパラメータ決定部１２０から送られてきたときの動作を説明する。
この場合、外部記憶装置アクセス制御部１３０は、そのまま上記ステップＳ５を実行する。即ち外部記憶装置アクセス制御部１３０は、上記（１）のイベントが発生してステップＳ５に進んだ場合と同様にして、書き込みを行うか否かの条件の確認を行う。以降の動作も上記（１）のイベントが発生してステップＳ５を実行した場合と同様である。つまり、条件を満たさなければステップＳ１に戻り、条件を満たすならばステップＳ６〜Ｓ１１を行った後にステップＳ１に戻る。
【００６８】
次に、上記（３）のイベントが発生した場合、つまりタイマ１３３から時間切れが通知されたときの動作を説明する。
この場合、外部記憶装置アクセス制御部１３０は、そのままステップＳ６以降の処理を行う。即ち外部記憶装置アクセス制御部１３０は、上記（１）のイベントが発生して、ステップＳ５で書き込みを行う条件を満たしていることが確認できた場合と同様に、ステップＳ６〜Ｓ１１を実行する。
【００６９】
以上、本発明の第１の実施形態について説明した。
この第１の実施形態においては、アプリケーション２０２の、外部記憶装置２０３に対する書き込み・読み出しの並列度が両方共に高いときに、書き込みによって読み出しが待たされる、或いは書き込みに時間がかかることを避け、外部記憶装置２０３へのアクセスが空いているときに書き込みを行うことができる。
【００７０】
この理由は、読み出しの並列度が高いときに、上記（２）式中のｆ（ｘ）＝ｋｘに従って書き込みを貯める量を増やすことにより、書き込みの頻度を下げることで、書き込みと読み出し合計での外部記憶装置２０３への負荷を均一化することができるためである。
【００７１】
例えば、（２）式でｋ＝１／１０，Ａ＝１００の場合、つまり（３）式の関数を適用した場合、単位時間内の読み出し要求３０４の数が１０，５０，１００，１０００のように変化すると、書き込み要求を貯める数はそれぞれ１，５，１０，１０のように変化する。つまり書き込み要求を貯めておく閾値は、単位時間内の読み出し要求数が多いときは高く、少ないときは低く設定される。また、読み出し要求数が一定数（１００）を超えると、一定数のときの閾値に固定される。
【００７２】
ここで、上記負荷の均一化について図９のグラフを参照して説明する。
図９において、左側の縦軸９０１は書き込み要求の数が０の位置を示し、右方向に書き込み要求の数を示す。一方、右側の縦軸９０２は読み出し要求の数が０の位置を示し、左方向に読み出し要求の数を示す。また、軸９０１，９０２に沿う方向は、時間方向を示す。更に、グラフパターン９０３は書き込み要求数の時間変化を、グラフパターン９０４は読み出し要求数の時間変化を示す。ここでは、外部記憶装置２０３において書き込み要求と読み出し要求を同時に処理できる限界は、軸９０１と軸９０２との間隔で示されるものとする。
【００７３】
図９のグラフにおいて、従来の方法では、グラフパターン９０３及び９０４が重なる部分で外部記憶装置２０３の同時処理の限界を超え、読み出し、書き込みのどちらかが待たされていた。
【００７４】
しか本実施形態においては、外部記憶装置アクセス制御部１３０にて書き込み要求を貯めて、その貯めておいた書き込み要求をまとめて１つの新たな書き込み要求に変換して外部記憶装置２０３側に送るようにし、その際に読み出し要求が増えるにつれ外部記憶装置２０３側への書き込み要求が減るようにしているため、外部記憶装置２０３側に送られる書き込み要求の数はグラフパターン９０５で示されるようになり、読み出し要求は待たされずに処理される。
【００７５】
グラフパターン９０５では、元のグラフパターン９０３と比べて書き込み要求の処理できる量が減っているように見える。しかし、このような箇所では、多くの書き込み要求がまとめて一度に処理されており、最大の効率で書き込みを行うことができる。
【００７６】
このように本実施形態においては、書き込み要求と読み出し要求とが大量に発生したとき、
（１）読み出し要求が待たされずに処理される
（２）書き込み要求が効率的に処理される
ことを同時に可能にしている。
【００７７】
また本実施形態においては、書き込み要求と読み出し要求とが少ないときには、書き込み要求を貯めずに直ちに処理するため、書き込み要求に対するレスポンスを上げることができる。
【００７８】
［第２の実施形態］
前記第１の実施形態では、外部記憶装置２０３に対する書き込みがシーケンシャル書き込みである場合を前提として説明した。しかし、外部記憶装置２０３に対する書き込みには、ランダムアクセスの場合もある。
【００７９】
そこで、ランダムアクセスとなる一連の書き込み要求（３０３）に対して、所定の条件を満たした場合に、前記第１の実施形態と同様にまとめて書き込むことができるようにした本発明の第２の実施形態について説明する。
【００８０】
まず、図１０において符号１０で示すように、一連の書き込み要求３０３（読み出し要求３０４）の指定する外部記憶装置２０３内の書き込み先（読み出し元）が、アドレス（２，１）、アドレス（１，２）、アドレス（３，３）…のように、ランダムとなる利用方法があるとする。ここでは、外部記憶装置２０３の領域を便宜的に２次元的に表している。本実施形態では、このようなランダムな読み出し／書き込みを、図１０中のインデックスファイル１１と外部記憶装置２０３に置かれるデータファイル１２とを利用して、以下に述べる新たなデータの読み出し／書き込みに変換するようにしている。
【００８１】
「データＡをアドレス（２，１）に書く」という処理は、「データファイル１２の終端位置（ｍ）からＡを書く」という処理と、「インデックスファイル１１の（２，１）の位置にデータファイル１２中のＡの位置（ｍ）の情報を書く」という処理の２つの処理に分けることができる。同様に、「アドレス（２，１）からデータＡを読み出す」という処理は、「インデックスファイル１１の（２，１）の位置からデータファイル１２中のＡの位置（ｍ）の情報を読み出す」という処理と、「データファイル１２の位置（ｍ）のデータＡを読み出す」という処理の２つの処理に分けることができる。
【００８２】
ここで、インデックスファイル１１は大容量を必要としない。このためインデックスファイル１１はメモリに常駐させることができ、高速アクセスが可能となる。つまり、インデックスファイル１１を利用することによる、外部記憶装置アクセス速度への影響は無視できる。また、データファイル１２に対する書き込みでは、データは必ず当該データファイル１２の最後に追加されていくので、シーケンシャル書き込みとなり、前記第１の実施形態で前提とした条件に合致する。
【００８３】
図１１に、上記したランダムな読み出し／書き込みをシーケンシャルな読み出し／書き込みに変換する手法を適用する、本発明の第２の実施形態に係る計算機システムの全体構成を示す。なお、図１と同一部分には同一符号を付してある。
【００８４】
この図１１の構成の計算機システムの特徴は、ドライバ１００内の、ＯＳ２０１とのインタフェース部分に、更に具体的に述べるならばＯＳ２０１とＩ／Ｏ処理部１１０との間に、データ変換部１４０を追加し、ＯＳ２０１からの書き込み要求３０３、読み出し要求３０４を、図１０中のデータファイル１２に対する書き込み要求３１０、読み出し要求３１１に変換する点にある。
【００８５】
そのため、データ変換部１４０には、書き込み要求３０３に対しては、当該要求３０３の指定する書き込み先（ｉ，ｊ）に一致する図１０中のインデックスファイル１１の位置（ｉ，ｊ）に、データファイル１２の終端位置の情報を書き込む機能と、データファイル１２の終端位置から当該書き込み要求３０３で指定されたデータを書き込むための新たな書き込み要求３１０に変換する機能とが設けられる。またデータ変換部１４０には、読み出し要求３０４に対しては、当該要求３０３の指定する読み出し元（ｉ，ｊ）に一致する図１０中のインデックスファイル１１の位置（ｉ，ｊ）から、データファイル１２中の対応する位置の情報を読み出す機能と、インデックスファイル１１から読み出した位置情報の示すデータファイル１２の位置から当該読み出し要求３０４で指定されたサイズのデータを読み出すための新たな読み出し要求３１１に変換する機能とが設けられている。
【００８６】
したがって、Ｉ／Ｏ処理部１１０には、前記第１の実施形態における書き込み要求３０３、読み出し要求３０４に代えて、データ変換部１４０から書き込み要求３１０、読み出し要求３１１が送られ、Ｉ／Ｏ処理部１１０からパラメータ決定部１２０には読み出し要求３１１が、外部記憶装置アクセス制御部１３０には書き込み要求３１０、読み出し要求３１１が送られる。但し、これら各部１１０，１２０，１３０の動作は前記第１の実施形態と同様であり、必要ならば書き込み要求３０３を書き込み要求３１０に、読み出し要求３０４を読み出し要求３１１に読み替えられたい。
【００８７】
また本実施形態では、外部記憶装置アクセス制御部１３０から外部記憶装置２０３側に送られた書き込み要求３０５または読み出し要求３０６に対し当該外部記憶装置２０３から完了通知３０７が返された場合、外部記憶装置アクセス制御部１３０からＩ／Ｏ処理部１１０にはドライバ１００内部での完了通知３１２が送られる。この完了通知３１２はＩ／Ｏ処理部１１０からデータ変換部１４０に渡される。するとデータ変換部１４０は当該完了通知３１２、つまりデータファイル１２を対象とする書き込み要求３０５に対するドライバ１００での完了通知３１２を、ＯＳ２０１からの書き込み要求３０３に対する完了通知３０８に変換してＯＳ２０１に渡す。
【００８８】
以上に述べたように、ＯＳ２０１からの書き込み要求３０３、読み出し要求３０４を、図１０中のデータファイル１２に対する書き込み要求３１０、読み出し要求３１１に変換するデータ変換部１４０をドライバ１００内に追加することで、シーケンシャルな書き込みでない場合にも、持つとも最近の単位時間内の読み出し要求３０４の数に応じて決まる書き込み要求数をまとめた書き込みを行うことができる。つまりデータの形式によらず、読み出し要求３０４の数に応じたまとめ書きを行うことができる。
【００８９】
なお、本実施形態では、外部記憶装置２０３上のデータの更新のための書き込み要求であっても、更新が行われるのはインデックスファイル１１上のデータの書き込み先を示す情報のみであり、データはデータファイル１２の最後に追加される。これについて例を挙げて説明する。
【００９０】
今、先に述べたデータＡをデータＡ′に更新するために、「データＡ′をアドレス（２，１）に書く」ことを指定する書き込み要求３０３を処理するものとする。このとき、データファイル１２の終端位置がｎであるものとする。すると、「データＡ′をアドレス（２，１）に書く」処理は、「データファイル１２の終端位置（ｎ）からＡ′を書く」という処理と、「インデックスファイル１１の（２，１）の位置にデータファイル１２中のＡ′の位置（ｎ）の情報を書く」処理に分けられる。ここで、インデックスファイル１１の（２，１）の位置には、データＡが書かれているデータファイル１２の位置ｍの情報が既に書かれている。したがってインデックスファイル１１上では、このｍがｎに更新されることになる。
【００９１】
一方、データファイル１２上では、データＡ′が、位置ｍから（旧データＡに上書きして）書き込まれるのではなく、当該データファイル１２の終端位置ｎから書き込まれる。このため、位置ｍから書かれている旧データＡは物理的には更新されず保存される。したがってデータファイル１２上では、時間経過と共に、更新前の旧データが増加して、外部記憶装置２０３の領域を有効に利用することが困難となる。そこで、インデックスファイル１１に登録されている位置情報で指定されるデータファイル１２上のデータを、適宜新たにデータファイル１２上に再配置して、旧データを削除するとよい。
【００９２】
［第３の実施形態］
次に本発明の第３の実施形態について、図１２に示す計算機システムのブロック構成図を参照して説明する。なお、図１と同一部分には同一符号を付してある。
【００９３】
この本実施形態の特徴は、前記第１及び第２の実施形態では、パラメータ決定部１２０でのパラメータ計算に用いる関数ｆ(ｘ)が、システムに固定のものであることを前提としているのに対し、所定時間当たりの読み出し要求３０４と書き込み要求３０３発生頻度に基づいて動的に変更される点にある。そのために、図１２の構成の計算機システムでは、図１中のＩ／Ｏ処理部１１０、パラメータ決定部１２０に代えて、以下に述べるＩ／Ｏ処理部１１０′、パラメータ決定部１２０′を用いている点にある。
【００９４】
まず本実施形態では、前記単位時間より大きな単位の所定時間、例えば１時間当たりの読み出し要求３０４と書き込み要求３０３の発生頻度をパラメータ決定部１２０′にて調べるようにしている。このため、Ｉ／Ｏ処理部１１０′は、ＯＳ２０１から書き込み要求３０３を受け取った場合、当該書き込み要求３０３を外部記憶装置アクセス制御部１３０の他にパラメータ決定部１２０′にも送るようにしている。つまり、Ｉ／Ｏ処理部１１０′からパラメータ決定部１２０′には、読み出し要求３０４の他に書き込み要求３０３も送られる。パラメータ決定部１２０′では、１時間当たりの読み出し要求３０４と書き込み要求３０３の発生頻度を取得する。これは、前記第１の実施形態において単位時間（５秒）毎の読み出し要求３０４の数を図２中のパラメータ決定部１２０の過去データ記憶部１２４にてカウントするのと同様の手法で行える。
【００９５】
今、読み出し要求と書き込み要求の発生頻度をそれぞれａ，ｂであるとすると、本実施形態では、書き込み要求を貯める数ｙを表す関数ｆ(ｘ)として、
0004176933.tif 000004
のよう決定される。ここで、ｋがシステムによって異なる定数である点は、前記（２），（３）式と同様である。
【００９６】
したがって、ａがａ1，ａ2，ａ3と変化し、ｂがｂ1，ｂ2，ｂ3と変化する場合には、上記（４）式で示される関数ｆ(ｘ)は、図１３のように動的に変化する（図の例は、ａ1／ｂ1＞ａ2／ｂ2＞ａ3／ｂ3の場合）。
【００９７】
この例では、読み出し要求が少ないときは、まとめて書き込む数は少ないが、読み出し要求が大量に発生し、外部記憶装置２０３へのアクセスが混雑しているときには、書き込み要求はｂ／ａずつまとめられるので、外部記憶装置２０３への書き込み要求と読み出し要求の数をほぼ同数にすることができる。
【００９８】
これについて、具体例で説明する。
今、図１２のシステムで、１時間に読み出しが（ａ＝）２００回、書き込みが（ｂ＝）１０００回起こっているとする。このとき、ｘ１を最近の５秒間に受け取った読み出し要求の数、ｙ１を書き込み要求を貯める数とする。
【００９９】
また、図１２のシステムでは、５秒間に１００個以上読み出し要求を受け取った場合には、ｂ／ａ個まとめて書き込むことにする。
このとき、ｂ＝１０００，ａ＝２００，Ａ＝１００，ｋ＝１／１００となり、ｙ１とｘ１との関係は、上記（４）式から、
0004176933.tif 000005
と表される。
【０１００】
上記（５）式から明らかなように、この例では、読み出し要求数が十分に多いとき（５秒間に１００個以上の場合）、書き込み要求は５個ずつまとめられるので、書き込みの発生頻度は等価的に、ｂ／５＝１０００／５＝２００となって、読み出しの発生頻度ａ（＝２００）に一致し、読み出しと書き込みの比率を等しくすることができる。
【０１０１】
もし、動作の途中で、例えばｂ＝２０００，ａ＝２００に変わったとすると、ｋは１／１００、Ａは１００のままで、
0004176933.tif 000006
のように変更される。
【０１０２】
この場合も、読み出し要求数が十分に多いとき（５秒間に１００個以上の場合）、書き込み要求は１０個ずつまとめられるので、書き込みの発生頻度は等価的に、ｂ／１０＝２０００／５＝２００となって、読み出しの発生頻度ａ（＝２００）に一致し、読み出しと書き込みの比率を等しくすることができる。
【０１０３】
このようにして、動作の途中で読み出し／書き込みの頻度が変わるような場合でも、読み出し要求が大量に発生し、外部記憶装置２０３へのアクセスが混雑しているときに、書き込み要求をまとめる比率を調整することにより、読み出し／書き込みの比率が変わらないようにすることができる。つまり、読み出し／書き込みの発生パターンが一定でないシステムにおいても、読み出し／書き込みの状況に最適な設定を行うことができる。
【０１０４】
［第４の実施形態］
前記第１乃至第３の実施形態では、最近の単位時間の読み出し要求の数をｘとして、関数ｆ(ｘ)に基づき、パラメータ決定部１２０（または１２０′）にて書き込み要求を貯める数ｙ＝ｆ(ｘ)を決定する方式を適用する場合について説明した。しかし、読み出し要求の数に比べて書き込み要求の数が少ない場合に、上記方式を適用すると、書き込みの実行が長時間待たされる虞がある。
【０１０５】
そこで、最近の単位時間の読み出し要求の数と書き込み要求の数との合計値をｘとして、関数ｆ(ｘ)に基づき書き込み要求を貯める数ｙ＝ｆ(ｘ)を決定することで、読み出し要求の数に比べて書き込み要求の数が少ない場合に、書き込みの実行が長時間待たされるのを防止するようにした本発明の第２の実施形態について、便宜的に図１２に示す計算機システムのブロック構成図を参照して説明する。
【０１０６】
本実施形態の特徴は、ＯＳ２０１からＩ／Ｏ処理部１１０′に書き込み要求３０３が送られた場合、前記第３の実施形態と同様に、当該書き込み要求３０３がＩ／Ｏ処理部１１０′から外部記憶装置アクセス制御部１３０だけでなく、パラメータ決定部１２０′にも送られる点にある。
【０１０７】
また、本実施形態の特徴は、パラメータ決定部１２０′において単位時間毎に、その単位時間内に受け取った読み出し要求３０４と書き込み要求３０３の数の合計を上記ｘとして求めて、ｙ＝ｆ(ｘ)の計算により書き込み要求３０３を貯める数ｙを算出し、パラメータ１２１として外部記憶装置アクセス制御部１３０に通知する点にある。ここで、関数ｆ(ｘ)には、前記（２）式または（４）式の関数を用いればよい。
【０１０８】
このように本実施形態においては、書き込み要求を貯める数について、最近の単位時間に受け取った読み出し要求３０４と書き込み要求３０３の数の合計値に基づき、その合計値が多いほど多く（つまり外部記憶装置２０３に対する書き込み要求３０５の発生頻度を低く）、少ないほど少なくし（つまり外部記憶装置２０３に対する書き込み要求３０５の発生頻度を高くし）、所定値以上では一定数となるように制御している。これにより、外部記憶装置２０３に対する書き込み要求３０５の発生頻度が、読み出しと書き込みが並列に同時に多数発生している状態を的確に反映した最適値となるように設定される。
【０１０９】
以上は、過去データ記憶部１２４に記憶された、最も最近の単位時間にＩ／Ｏ処理部１１０から受け取った読み出し要求３０４の数（及び書き込み要求３０３の数）１２５（ｘ）をもとに、書き込み要求を貯める数（ｙ）を示すパラメータ１２１をパラメータ計算部１２６にて決定し、そのパラメータ１２１の示す数の書き込み要求を外部記憶装置アクセス制御部１３０で貯めて、１つの書き込み要求３０５に変換する場合について説明したが、これに限るものではない。例えば、単位時間にＩ／Ｏ処理部１１０から受け取った読み出し要求３０４で指定されている、読み込むべきデータのサイズ、つまり読み出しデータ量（及び書き込み要求３０３で指定されている書き込むべきデータのサイズ、つまり書き込みデータ量）の合計を記憶領域１３１に記憶して、そのデータのサイズ（ｘ）をもとに、（１つにまとめる書き込み要求の数に対応した）１つにまとめて書き込むべきデータのサイズ（ｙ）を示すパラメータ１２１をパラメータ計算部１２６にて決定し、そのパラメータ１２１の示すデータサイズを満たす数の書き込み要求（３０３）を外部記憶装置アクセス制御部１３０で貯めて、１つの書き込み要求３０５に変換するようにしてもよい。
【０１１０】
また、単位時間に受け取った読み出し要求３０４（及び書き込み要求３０３）の数と対応するデータサイズ（データ量）との両方を記憶領域１３１に記憶して、１つにまとめる書き込み要求の数と、１つにまとめて書き込むべきデータのサイズ（書き込みデータ量）とをそれぞれパラメータ計算部１２６で求めて、パラメータ１２１として用い、外部記憶装置アクセス制御部１３０では、１つにまとめる書き込み要求の数、またはデータサイズのうち、いずれか一方で条件を満足した場合に、当該条件を満足する数の書き込み要求（３０３）をまとめて１つの書き込み要求３０５に変換するようにしてもよい。
【０１１１】
【発明の効果】
以上詳述したように本発明によれば、少なくとも、単位時間当たりの読み出し要求の数または対応する読み出しデータ量に基づいて決まる数の書き込み要求が貯まった段階で、１つの書き込み要求にまとめて外部記憶装置へのアクセスを実行するようにしたので、読み出し要求と書き込み要求が並列に多数発生したときの読み出し要求の処理性能を向上させ、計算機の提供するサービスの速度低下を抑えることができる。
【０１１２】
また本発明によれば、ランダムな書き込みの場合にも、見かけ上シーケンシャルなアクセスとなるように書き込み要求を変換することにより、シーケンシャルアクセスの場合と同様のまとめ書きを行うことができ、ランダムなアクセスとなる読み出し要求と書き込み要求が並列に多数発生したときの読み出し要求の処理性能も向上させることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る計算機システムの全体構成を示すブロック図。
【図２】同実施形態で適用される、書き込み要求、読み出し要求、及び完了通知のフォーマット例を示す図。
【図３】図１中のパラメータ決定部１２０のブロック構成図。
【図４】同時実施形態で適用される、単位時間に受け取った読み出し要求の数から書き込み要求を貯める数を決定するための関数ｙ＝ｆ(ｘ)の一例を示す図。
【図５】図１中の外部記憶装置アクセス制御部１３０のブロック構成図。
【図６】同実施形態における外部記憶装置アクセス制御部１３０での書き込み要求制御処理の手順を示すフローチャート。
【図７】外部記憶装置アクセス制御部１３０にて、貯めておいた複数の書き込み要求３０３を１つの書き込み要求３０５に変換する場合の動作を説明するための図。
【図８】書き込み要求３０５に対する外部記憶装置２０３からの完了通知３０７に基づき、元の書き込み要求３０３に対する完了通知３０８を作成する動作を説明するための図。
【図９】同実施形態の効果を説明するための図。
【図１０】前記第１の実施形態で適用した複数の書き込み要求をまとめて実行する手法を、シーケンシャル書き込みからランダム書き込みにまで適用可能とした本発明の第２の実施形態を説明するための図。
【図１１】同第２の実施形態に係る計算機システムの全体構成を示すブロック図。
【図１２】本発明の第３及び第４の実施形態に係る計算機システムの全体構成を示すブロック図。
【図１３】同第３の実施形態で適用される、単位時間に受け取った読み出し要求の数、並びに書き込み要求と読み出し要求の発生頻度の比率から、書き込み要求を貯める数を決定するための関数ｙ＝ｆ(ｘ)の一例を示す図。
【符号の説明】
１１…インデックスファイル
１２…データファイル
１００…ドライバ（外部記憶装置ドライバプログラム）
１１０，１１０′…Ｉ／Ｏ処理部
１２０，１２０′…パラメータ決定部
１２１…パラメータ
１２４…過去データ記憶部
１２６…パラメータ計算部
１３０…外部記憶装置アクセス制御部
１３２…要求変換部
１３３…タイマ
１３４…書き込み要求記憶部
１３５…ＩＤ記憶部
１４０…データ変換部
２０１…ＯＳ（オペレーティングシステム）
２０２…アプリケーション
２０３…外部記憶装置
３０１，３０３，３０５，３１０…書き込み要求
３０２，３０４，３０６，３１１…読み出し要求
３０７，３０８，３０９，３１２…完了通知
【図１】
0004176933.tif 000007
【図２】
0004176933.tif 000008
【図３】
0004176933.tif 000009
【図４】
0004176933.tif 000010
【図５】
0004176933.tif 000011
【図６】
0004176933.tif 000012
【図７】
0004176933.tif 000013
【図８】
0004176933.tif 000014
【図９】
0004176933.tif 000015
【図１０】
0004176933.tif 000016
【図１１】
0004176933.tif 000017
【図１２】
0004176933.tif 000018
【図１３】
0004176933.tif 000019