(57)【要約】      （修正有）【課題】ライブラリ装置において、記憶媒体に対して複数のアクセス要求を処理する際の時間を短縮化する。【解決手段】ホストコンピュータ１００において、記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定する処理順番設定部２３と、各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、アクセス要求の処理に要する処理時間を予測するサブプロセス処理時間予測部２７と、サブプロセス処理時間予測部で予測した各アクセス要求の処理に要する処理時間を用いて、一連の処理に要する処理時間を予測するアクセス要求処理時間予測部と、処理順番設定部が設定した複数の処理順番の各々について、一連の処理に要する処理時間をアクセス要求処理時間予測部から取得し、取得した処理時間の中から処理時間が最短と予測される処理順番を決定する処理順番決定部と、を備える。【選択図】図３
2019121342.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定する処理順番設定部と、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測するサブプロセス処理時間予測部と、
前記サブプロセス処理時間予測部で予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測するアクセス要求処理時間予測部と、
前記処理順番設定部が設定した前記複数の処理順番の各々について、前記一連の処理に要する処理時間を前記アクセス要求処理時間予測部から取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する処理順番決定部と、
を備える、
ことを特徴とする、情報処理装置。
【請求項２】
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体上における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも１つである、
ことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも１つである、
ことを特徴とする、請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記処理順番決定部は、前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、請求項１〜請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、
ことを特徴とする、予測方法。
【請求項６】
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、処理をコンピュータに実行させる、
ことを特徴とする予測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、予測方法、及び予測プログラムに関する。
【背景技術】
【０００２】
大量の磁気テープ（以下、単に媒体という）を保管するために、テープライブラリ装置（以下、単にライブラリ装置という）が用いられている。
【０００３】
ライブラリ装置は、媒体を格納するためのカートリッジセル（以下、単にセルという）を備え、セルに格納した媒体をロボットによって搬送し、ドライブ装置（以下、単にドライブという）にこの媒体を投入する。ドライブは、媒体に対してデータの読出し（リード）又は書込み（ライト）等のデータアクセス要求に関する処理を行なう。
【０００４】
ライブラリ装置においては、当該ライブラリ装置を制御するためのホストコンピュータが、ユーザや内部のアプリケーションから読出し要求を受けると、当該読出し要求を受け取って実行待ちキューに蓄積する。そして、ホストコンピュータは、ＦＩＦＯ（First-In First-Out；先入先出法）にて読出し又は書込み要求を処理している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平２−８１３５５号公報
【特許文献２】特開２００１−１０９５９０号公報
【特許文献３】特開２０１５−４９７０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このような従来のライブラリ装置において、複数の媒体に対する複数のアクセス要求を処理する場合、ロードやシーク等の処理が個々のアクセス要求毎に行なわれ、全体の要求を完了するまでに長い時間を要するという課題がある。
【０００７】
１つの側面では、ライブラリ装置において、複数の媒体に対する複数のアクセス要求を処理する際の時間の短縮化を目的とする。
【課題を解決するための手段】
【０００８】
この情報処理装置は、１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定する処理順番設定部と、各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測するサブプロセス処理時間予測部と、前記サブプロセス処理時間予測部で予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測するアクセス要求処理時間予測部と、前記処理順番設定部が設定した前記複数の処理順番の各々について、前記一連の処理に要する処理時間を前記アクセス要求処理時間予測部から取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する処理順番決定部と、を備える。
【発明の効果】
【０００９】
一実施形態によれば、ライブラリ装置において、複数の媒体に対して複数のアクセス要求を処理する際の時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態の一例としてのライブラリ装置の構成を示す斜視図である。
【図２】実施形態の一例としてのライブラリ装置のハードウェア構成を例示する図である。
【図３】実施形態の一例としてのライブラリ装置におけるホストコンピュータの機能構成を例示するブロック図である。
【図４】実施形態の一例としてのライブラリ装置の統括処理部における再計算の動作を説明するためのフローチャートである。
【図５】実施形態の一例としてのライブラリ装置の要求実行時間短化処理部の動作を説明するためのフローチャートである。
【図６】実施形態の一例としてのライブラリ装置のロボット競合見積もり修正処理部の動作を説明するためのフローチャートである。
【図７】実施形態の一例としてのライブラリ装置の異常監視処理部の動作を説明するためのフローチャートである。
【図８】実施形態の一例としてのライブラリ装置における読出し要求の処理全体を説明するためのフローチャートである。
【図９】実施形態の一例としてのライブラリ装置における予測機能群の機能構成を例示するブロック図である。
【図１０】実施形態の一例としてのライブラリ装置における媒体内のテープの構造を模式的に示す図である。
【図１１】実施形態の一例としてのライブラリ装置におけるラップ始端終端位置確認処理部の動作を説明するためのフローチャートである。
【図１２】実施形態の一例としてのライブラリ装置におけるＢＯＴ距離測定処理部の動作を説明するためのフローチャートである。
【図１３】実施形態の一例としてのライブラリ装置におけるシーク時間予測処理部の動作を説明するためのフローチャートである。
【図１４】実施形態の一例としてのライブラリ装置における初期状態把握処理部の動作を説明するためのフローチャートである。
【図１５】実施形態の一例としてのライブラリ装置における要求キュー完了時間予測処理部の動作を説明するためのフローチャートである。
【図１６】実施形態の第一の変形例としてのライブラリ装置における書込み要求の処理を説明するためのフローチャートである。
【図１７】実施形態の第二の変形例としてのライブラリ装置における統括処理部の動作の概要を説明するためのフローチャートである。
【図１８】実施形態の第二の変形例としてのライブラリ装置における要求処理部での要求の処理を依頼する動作を説明するためのフローチャートである。
【図１９】実施形態の第二の変形例としてのライブラリ装置における読出し処理を説明するためのフローチャートである。
【図２０】実施形態の第二の変形例としてのライブラリ装置における要求実行時間短化処理部の動作を説明するためのフローチャートである。
【図２１】実施形態の第二の変形例としてのライブラリ装置における読出し要求の処理全体を説明するためのフローチャートである。
【図２２】実施形態の第二の変形例としてのライブラリ装置における要求キュー完了時間予測処理部の動作を説明するためのフローチャートである。
【図２３】実施形態の第二の変形例としてのライブラリ装置におけるメタデータの設定処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示あり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１２】
〔１〕一実施形態
〔１−１〕一実施形態に係るライブラリ装置の構成例
図１は、実施形態の一例としてのライブラリ装置１の構成を示す斜視図である。
【００１３】
ライブラリ装置１は、コンピュータシステムのデータをバックアップする外部記憶装置として備えられ、多数のカートリッジ式記録装置（可搬性記録媒体）が収納される。
【００１４】
すなわち、ライブラリ装置１は、被搬送物である物品を収納する物品収納装置の一例である。そして、可搬性記録媒体は、被搬送物である物品の一例である。可搬性記録媒体としては、例えば、磁気テープカートリッジ，フレキシブルディスク，光ディスク，リールに巻回された磁気テープ等がある。ここでは、磁気テープを記録媒体に用いた磁気テープカートリッジを可搬性記録媒体として用いる場合を説明する。磁気テープカートリッジは、その内部に磁気記録テープ等の記録媒体を収納する。なお、以下、磁気テープカートリッジを、単に、媒体ともいう。
【００１５】
ライブラリ装置１は、図１に示すように、１つ以上の収納棚（１０ａ，１０ｂ）、１つ以上（図２に示す例では４つ）のドライブ１２、及び１つ以上（図２に示す例では２つ）のロボット（１１ａ，１１ｂ）を備える。なお、以下、収納棚を示す符号としては、複数の収納棚のうち１つを特定する必要があるときには符号１０ａ，１０ｂを用いるが、任意の収納棚を指すときには符号１０を用いる。また、以下、ロボットを示す符号としては、複数のロボットのうち１つを特定する必要があるときには符号１１ａ，１１ｂを用いるが、任意のロボットを指すときには符号１１を用いる。
【００１６】
収納棚１０は、媒体４（図２参照）を収納するものであり、例えば、収納棚１０には、媒体４を収納する複数に区分けされた収納空間部として複数のセル１４がマトリクス状に形成されている。
【００１７】
図１に示すように、収納棚１０には複数のドライブ１２が設置されている。
【００１８】
ロボット１１は、図示しないカートリッジ投入排出機構部（ＣＡＳ：Cartridge Access  Station）から収納棚１０へ媒体４を搬送したり、また、収納棚１０からドライブ１２に対して媒体４を搬送し、ドライブ１２から媒体４を収納棚１０に搬送する搬送手段である。
【００１９】
本ライブラリ装置１においては、ロボット１１を用いることで、収納棚１０のセル１４から媒体４を取り出し、ドライブ１２の何れかに搬送して装着し、データの読出し又は書込みを実行する。このような処理の後、ロボット１１はライブラリコントローラ２（図２参照）からの動作命令を受けるために待機する。
【００２０】
〔１−２〕一実施形態に係るライブラリ装置のハードウェア構成例
図２は実施形態の一例としてのライブラリ装置１のハードウェア構成を例示する図である。なお、図中、同一部分には同一符号を付してある。また、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
【００２１】
本ライブラリ装置１は、図２に示すように、ロボット制御ボード（２０１ａ，２０１ｂ）、及びライブラリコントローラ２を備える。ロボット制御ボード２０１ａは、ロボット１１ａの制御を行ない、ロボット制御ボード２０１ｂは、ロボット１１ｂの制御を行なう。
【００２２】
これらのロボット制御ボード２０１ａ，２０１ｂは互いに同様の構成を備える。以下、ロボット制御ボードを示す符号としては、複数のロボット制御ボードのうち１つを特定する必要があるときには符号２０１ａ，２０１ｂを用いるが、任意のロボット制御ボードを指すときには符号２０１を用いる。
【００２３】
ライブラリコントローラ２は、本ライブラリ装置１における全系統の制御を行なう。ライブラリコントローラ２には、ドライブ１２が接続されるとともに、ホストコンピュータ１００が接続されている。
【００２４】
図２に示すホストコンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１，ＲＡＭ（Random-Access Memory）１０２，及び記憶部１０３を備える。ＣＰＵ１０１は、記憶部１０３にあるＯＳ（Operating System）やプログラムを実行し、ライブラリコントローラ２を介して媒体４に対する情報の読出し又は書込み等の制御を行なう。この読出し要求や書込み要求は、ホストコンピュータ１００のアプリケーション（図示せず）から取得されてもよいし、ユーザコンピュータ等の外部装置（図示せず）において管理者によって入力され、ホストコンピュータ１００によって取得されてもよい。記憶部１０３は、例えば、不揮発性メモリで構成され、ライブラリコントローラ２との通信制御や、媒体４に対する読出し又は書込みを実行するためのプログラムや、セル１４に格納されている媒体４を特定するための識別情報等を格納する。ＣＰＵ１０１は、ロボット１１の位置制御等も行なう。
【００２５】
各ドライブ１２にはライブラリコントローラ２が接続され、ドライブ１２に装着された媒体４に対する情報の読出し又は書込みが、このライブラリコントローラ２により実行される。
【００２６】
ロボット１１は、例えば、ロボット機構部としてピッカー部２２０（アクセッサ）を備え、ピッカー部２２０の内部に媒体４を把持する把持手段として媒体固定ツメ２２０１を備える。
【００２７】
〔１−３〕一実施形態に係るライブラリ装置におけるホストコンピュータの機能構成例及び各処理部の動作
図３は、図２に示すライブラリ装置１におけるホストコンピュータ１００の機能構成を例示したブロック図である。
【００２８】
図３に示すように、一実施形態に係るライブラリ装置１のホストコンピュータ１００は、例示的に、要求受信処理部２１，要求処理部２２，要求実行時間短化処理部２３，ロボット競合見積もり修正処理部２４，統括処理部２５を備えてよい。さらに、一実施形態に係るライブラリ装置１のホストコンピュータ１００は、例示的に、予測完了時刻表示処理部２６，異常監視処理部２８，ドライブ通信プログラム２９ａ，ライブラリ情報取得部２９ｂ，及び予測機能群１０５を備えてよい。また、予測機能群１０５には、予測機能を実現するための各処理部が含まれており、図３の説明では、その中の要求キュー完了時間予測処理部２７を用い、その他の処理部については後述する。
【００２９】
記憶部１０３は、読出し要求キュー３０，実行待ちキュー３１，ロボット使用状況格納テーブル３２，及びラップ始端終端位置情報３３を記憶する。実行待ちキュー３１は複数備えられてもよく、本実施形態では、ドライブ１２毎に実行待ちキュー３１が備えられているものとする。なお、図中、同一部分には同一符号を付してある。また、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
【００３０】
読出し要求キュー３０は、後述する要求受信処理部２１によって取得される読出し要求を格納する。すなわち、読出し要求キュー３０は、ホストコンピュータ１００のアプリケーションや、管理者から送信される読出し要求を格納するための記憶部として機能する。
【００３１】
実行待ちキュー３１は、後述する統括処理部２５から送信される読出し要求を格納する。後述の如く、実行待ちキュー３１は、最短の処理順番となるように読出し要求を格納する。
【００３２】
ロボット使用状況格納テーブル３２は、ロボット１１の使用状況を示す情報を記憶する。すなわち、ロボット使用状況格納テーブル３２は、ドライブ１２毎に割り当てられたロボット１１が動作中であるか否かや、ロボット１１の動作の開始予定時刻と終了予定時間等を記憶するものである。
【００３３】
要求受信処理部２１は、ホストコンピュータ１００のアプリケーションや管理者から読出し要求を取得する。要求受信処理部２１は、読出し要求を取得すると、記憶部１０３に格納される読出し要求キュー３０に当該読出し要求を追加して記憶する。
【００３４】
統括処理部２５は、要求受信処理部２１から読出し要求を受け取り、当該読出し要求を後述する要求実行時間短化処理部２３に送信する。具体的には、統括処理部２５は、要求受信処理部２１から受け取る１つ以上の読出し要求を備える読出し要求群（以下、単に読出し要求ともいう）を要求実行時間短化処理部２３へ送信する。そして、統括処理部２５は、読出し要求を要求実行時間短化処理部２３へ送信する頻度を、読出し要求キュー３０の長さや時間あたりの要求数に基づいて制御する。これについては、図４を用いて後述する。
【００３５】
統括処理部２５は、後述する要求実行時間短化処理部２３から、複数の読出し要求についての処理順番を受信する。また、統括処理部２５は、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部２３から通知された処理順番を変更する（並び替える）。また、統括処理部２５は、例えば、締め切り時刻（Deadline）が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。
【００３６】
統括処理部２５は、変更した処理順番を、要求実行時間短化処理部２３を介して、後述する要求キュー完了時間予測処理部２７に送信し、当該読出し要求の完了予測時刻を取得すると、この完了予測時刻を予測完了時刻表示処理部２６へ送信する。また、統括処理部２５は、後述する要求処理部２２に対して、読出し要求の処理順番を送信し、要求処理部２２は、この処理順番に従って読出し要求を実行待ちキュー３１（の最後尾）に追加する。すなわち、統括処理部２５は、処理順番を要求処理部２２に送信することにより、この処理順番に従って読出し要求を実行待ちキュー３１に追加させる。
【００３７】
さらに、統括処理部２５は、実行待ちキュー３１から、既に処理順番が決定している読出し要求を取り出して（取り戻して）、読出し要求キュー３０に格納されている読出し要求（処理順番が決定していない読出し要求）とまとめる（併合する）。そして、統括処理部２５は、要求実行時間短化処理部２３を介して、後述する要求キュー完了時間予測処理部２７に対し、まとめた読出し要求について処理順番を決定するよう依頼する。これを、再計算ともいう。実行待ちキュー３１に格納されている読出し要求のすべて（既に処理順番が決定している読出し要求）を取り出して再計算を行なうと、再計算前の処理順番で処理した場合よりも時間がかかってしまうことが多い。そこで、実行待ちキュー３１に格納されている読出し要求に関し、実行直前の処理読出し要求（例えば、先頭の読出し要求や、先頭から一定バイト数の読出し要求等）については、取り出さないものとしてもよい。すなわち、実行直前の読出し要求については、既に決定している処理順番のままで処理を行なってもよい。
【００３８】
また、統括処理部２５は、いずれかのドライブ１２において障害やクリーニング要求等が発生し、当該ドライブ１２が使用できなくなった場合、当該ドライブ１２や媒体４を使用不可なものとして再計算を行なうものとする。この場合には、実行中の読出し要求や、実行直前の処理も取り出して再計算を行なうものとする。
【００３９】
実施形態の一例としての統括処理部２５における再計算の処理を、図４に示すフローチャート（ステップＡ１〜Ａ９）に従って説明する。
【００４０】
ステップＡ１において、統括処理部２５は、読出し要求キュー３０に格納される読出し要求の数が一定数（例えば、Ｒ＿ｍａｘ）以上であるか否かを判定する。読出し要求の数が一定数（Ｒ＿ｍａｘ）以上である場合には（ステップＡ１でＹｅｓ）、処理がステップＡ２に移行する。読出し要求の数が一定数に達していない場合には（ステップＡ１でＮｏ）、処理がステップＡ３に移行する。
【００４１】
ステップＡ２において、読出し要求キュー３０に格納される読出し要求を、処理対象要求Ｑとして決定し、処理がステップＡ５に移行する。ここで、処理対象要求Ｑとは、後述する要求キュー完了時間予測処理部２７において処理順番を決定する対象となる、複数の読出し要求のことをいう。
【００４２】
ステップＡ３において、統括処理部２５が要求受信処理部２１より読出し要求を前回受信してから経過した時間がＴ（秒）以上である場合には（ステップＡ３でＹｅｓ）、処理がステップＡ４に移行する。なお、統括処理部２５は、読出し要求を受信する度に、例えば、経過した時間を測定するためのタイマの値を０（秒）に設定（リセット）するものとする。前回の読出し要求を受信してから経過した時間がＴ（秒）未満である場合には（ステップＡ３でＮｏ）、処理がステップＡ１に戻る。すなわち、前回、要求受信処理部２１より読出し要求を受信してから一定時間が経過するまでは、要求実行時間短化処理部２３へ処理を依頼しないように、統括処理部２５から依頼を送出する頻度を抑制する。
【００４３】
ステップＡ４において、統括処理部２５は、実行待ちキュー３１から、既に処理順番が決定している読出し要求を取り出す。そして、統括処理部２５は、実行待ちキュー３１から取り出した読出し要求と、読出し要求キュー３０に格納されている読出し要求（処理順番が決定していない読出し要求）とをまとめて、処理対象要求Ｑとして決定する。その際、処理対象要求Ｑに含まれる読出し要求の数が、Ｒ＿ｍａｘ以下となるようにまとめるものとする。
【００４４】
続くステップＡ５では、統括処理部２５は、要求実行時間短化処理部２３を介して、後述する要求キュー完了時間予測処理部２７に対し、ステップＡ４において処理対象要求Ｑに含まれる読出し要求について処理順番を決定するよう依頼する。そして、統括処理部２５は、要求キュー完了時間予測処理部２７から再計算の結果となる最短の処理順番を取得する。この際、統括処理部２５は、要求キュー完了時間予測処理部２７から、ライブラリ装置１に備えられる各ドライブ１２に対する処理順番を取得するものとする。
【００４５】
続くステップＡ６において、統括処理部２５は、読出し要求の中に、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部２３によって決定された処理順番を変更する（並び替える）。また、統括処理部２５は、例えば、締め切り時刻が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。
【００４６】
続くステップＡ７では、統括処理部２５は、ステップＡ６において変更した処理順番を、要求実行時間短化処理部２３を介して、後述する要求キュー完了時間予測処理部２７に送信する。そして、統括処理部２５は、当該読出し要求の完了予測時刻を取得し、この完了予測時刻を予測完了時刻表示処理部２６へ送信する。
【００４７】
続くステップＡ８では、統括処理部２５は、後述するロボット競合見積もり修正処理部２４に対して、ステップＡ７において取得した完了予測時刻を送信し、その結果、ロボット競合見積もり修正処理部２４から更新（修正）後の完了予測時刻を取得する。なお、このステップＡ８の統括処理部２５における詳細な処理については後述する。統括処理部２５は、ロボット競合見積もり修正処理部２４から更新された完了予測時刻を受信すると、その更新された完了予測時刻を、予測完了時刻表示処理部２６へ再送信してもよい。
【００４８】
続くステップＡ９において、統括処理部２５は、後述する要求処理部２２に対して、処理順番を送信する。これにより、統括処理部２５は、要求処理部２２に対して、当該処理順番に従って読出し要求を実行待ちキュー３１に追加するよう依頼することになる。そして、処理を終了する。
【００４９】
要求処理部２２は、統括処理部２５から処理順番を受信すると、この処理順番に従って読出し要求を実行待ちキュー３１（の最後尾）に追加する。すなわち、要求処理部２２は、統括処理部２５から受信した処理順番に従って、読出し要求を実行待ちキュー３１に並べ替えて格納することになる。
【００５０】
要求実行時間短化処理部２３は、統括処理部２５から複数の読出し要求を受信する。要求実行時間短化処理部２３は、これら複数の読出し要求（アクセス要求）を一連の処理として処理する処理順番を設定するという機能と共に、処理時間（の総和）が最短と予測される処理順番を決定するという機能を併せもつ。読出し要求の処理順番を設定するための手法としては、逐次改善法等の公知の近似アルゴリズムを用いてもよく、また、これら公知のアルゴリズムを組み合わせてもよい。また、要求実行時間短化処理部２３は、ライブラリ装置１に備えられるドライブ１２毎に処理順番を設定するものとする。
【００５１】
そして、要求実行時間短化処理部２３は、読出し要求をドライブ１２毎に分割する。この読出し要求をドライブ１２毎に分割するための手法については、媒体４の世代や読出し要求の優先度等に基づく公知の手法を用いてもよく、また、これら公知の手法を組み合わせてもよい。
【００５２】
さらに、要求実行時間短化処理部２３は、設定した処理順番を、後述する要求キュー完了時間予測処理部２７に送信し、その結果として、当該処理順番での処理時間等を取得する。また、要求実行時間短化処理部２３は、自身が設定した複数の処理順番のうち、最短の処理時間となる処理順番を決定する。この処理順番の決定手法については後述する。
【００５３】
媒体４に対し、これから行なう読出し要求（後の読出し要求）の処理に要する処理時間は、当該読出し要求の前（直前）に行なった読出し要求（前回の読出し要求）の処理により変動する場合がある。例えば、後の読出し要求が、前回の読出し要求と同一の媒体４に対する読出しを要求するものではない場合、前回の読出し要求の際にロードした媒体４をアンロードして新たな媒体４をロードする必要がある。この場合、前回の読出し要求と同一の媒体４に対して読出しを行なう場合と比べて、後の読出し要求を処理する際に、媒体４のロード（及びアンロード）に要する時間が長くなる。また、例えば、後の読出し要求の対象となるデータと、前回の読出し要求の対象となるデータとの、媒体４上での位置が離れていればいるほど、後の読出し要求を処理する際のシークに要する時間が長くなる。したがって、複数の読出し要求を処理する場合、これら複数の読出し要求に係る処理を完了させるまでに要する時間は、各読出し要求の処理順番（前後関係）が影響する場合がある。また、上述したように、各読出し要求の処理時間には、例えば、ロードやシークといった複数種類の処理（サブプロセス）が関係しているので、各読出し要求の処理時間を予測するうえでは、各サブプロセスに要する処理時間を考慮しなければならない場合がある。そこで、本実施形態では、要求実行時間短化処理部２３が処理順番を設定し、要求キュー完了時間予測処理部２７が当該処理順番に従って複数の読出し要求を処理する場合の処理時間を予測する、という処理を、設定可能な処理順番の数だけ繰り返す。これにより、要求実行時間短化処理部２３において設定可能な処理順番の中で、最短の処理時間となる処理順番を決定することが可能となる。
【００５４】
図５には、上述したような、実施形態の一例としての要求実行時間短化処理部２３の処理を、ステップＢ１〜Ｂ４に従って説明する。
【００５５】
ステップＢ１において、要求実行時間短化処理部２３は、統括処理部２５から複数の読出し要求を受信し、公知の並べ替え手法に基づき、受信した複数の読出し要求の処理順番を設定する。また、後述するステップＢ４からステップＢ１に処理が戻った場合には、ステップＢ１において、これまでにまだ用いていない公知の並べ替え手法やこれらの組み合わせのうちのいずれかを用いて、複数の読出し要求の処理順番を設定するものとする。
【００５６】
続くステップＢ２において、要求実行時間短化処理部２３は、公知の手法や、これらを組み合わせた手法を用いて、読出し要求をドライブ１２毎に分割する。
【００５７】
続くステップＢ３では、要求実行時間短化処理部２３は、ステップＢ１において設定した処理順番を、後述する要求キュー完了時間予測処理部２７に送信し、その結果として、要求キュー完了時間予測処理部２７から、当該処理順番での処理時間を取得する。
【００５８】
続くステップＢ４では、要求実行時間短化処理部２３は、最短の処理時間、又は、最短の近似値としての処理時間が取得できたか否かを判断し、最短、又は、最短の近似値としての処理時間が得られた場合には（ステップＢ４でＹｅｓ）、処理を終了する。この最短の近似値としての処理時間を求めるためには、２−ｏｐｔ法等の公知の局所探索法を用いてもよい。一方、ステップＢ４において、最短、又は、最短の近似値としての処理時間が得られなかった場合には（ステップＢ４でＮｏ）、ステップＢ１に戻る。
【００５９】
このようにステップＢ１〜Ｂ４を繰り返すことにより、ホストコンピュータ１００は、複数の読出し要求の処理順番を入れ替えて処理時間の総和を取得して、最短、又は、最短の近似値としての時間で処理を完了することのできる処理順番を決定する。このようにして、ホストコンピュータ１００は、最短、又は、最短の近似値としての処理順番、すなわち、最短と予測される処理順番を決定する。
【００６０】
ロボット競合見積もり修正処理部２４は、記憶部１０３のロボット使用状況格納テーブル３２を参照しつつ、実行待ちキュー３１に含まれる（未処理の）読出し要求の完了予測時刻を修正（補正）し、修正後の完了予測時刻を統括処理部２５に送信する。これは、ライブラリ装置１において、ロボット１１の数がドライブ１２の数よりも少ないために、多くの読出し要求を同時に処理できなかったり、ロボット１１が他の読出し要求を処理しており、受信した読出し要求をすぐに処理できない場合があるためである。また、上述の再計算の結果、処理順番に変更が発生した場合等は、当初算出した完了予測時刻迄に処理を完了することができない読出し要求が発生することがある。このような場合には、完了予測時刻を修正し、より正確な完了予測時刻を算出する。なお、要求キュー完了時間予測処理部２７は、読出し要求の完了予測時刻だけでなく開始予測時刻等も算出し、統括処理部２５は、要求キュー完了時間予測処理部２７から、読出し要求の完了予測時刻や開始予測時刻等を取得するものとする。
【００６１】
実施形態の一例としてのロボット競合見積もり修正処理部２４の処理を、図６に示すフローチャート（ステップＣ１〜Ｃ６）に従って説明する。
【００６２】
ステップＣ１において、ロボット競合見積もり修正処理部２４は、統括処理部２５から、実行待ちキュー３１に含まれる（未処理の）読出し要求と、各読出し要求の完了予測時刻や開始予測時刻を取得する。そして、ロボット競合見積もり修正処理部２４は、記憶部１０３に格納されるロボット使用状況格納テーブル３２の情報を読出す。
【００６３】
ステップＣ２において、ロボット競合見積もり修正処理部２４は、ロボット１１毎に、実行待ちキュー３１に含まれる（未処理の）読出し要求（の組み合わせ）を抽出する。
【００６４】
続くステップＣ３では、ロボット競合見積もり修正処理部２４は、各読出し要求の完了予測時刻や開始予測時刻に基づき、ステップＣ２において抽出した複数の読出し要求の処理時間帯が重なっているかを判定する。処理時間帯が重なっていると判定された場合（ステップＣ３でＹｅｓ）、処理がステップＣ４に移行する。処理時間帯が重なっていないと判定された場合（ステップＣ３でＮｏ）、処理がステップＣ６に移行する。
【００６５】
ステップＣ４において、ロボット競合見積もり修正処理部２４は、ステップＣ２において抽出した複数の読出し要求のうち、より早い開始予測時刻が設定されている読出し要求をαとする。そして、ロボット競合見積もり修正処理部２４は、ステップＣ２において抽出した複数の読出し要求のうち、αの次に早い開始予測時刻が設定されている読出し要求をβとする。ここで、例えば、αの処理が完了しないうちにβの開始予測時刻をむかえるものとする。
【００６６】
続くステップＣ５において、ロボット競合見積もり修正処理部２４は、αの処理とβの処理との重なりがなくなるまで、βの開始予測時刻を必要なだけ後ろに遅らせることにより、βの開始予測時刻を修正する。すなわち、ロボット競合見積もり修正処理部２４は、開始予測時刻が先の読出し要求αを優先して処理し、αの処理が完了した後にβの処理を開始するように、後の読出し要求βの開始予測時刻を修正する。
【００６７】
ステップＣ６において、ロボット競合見積もり修正処理部２４は、実行待ちキュー３１に含まれる読出し要求について、すべての組み合わせを確認したかを判定する。すなわち、ロボット競合見積もり修正処理部２４は、実行待ちキュー３１に含まれるすべての読出し要求について、ステップＣ２〜Ｃ５の処理を行なったかを判定する。すべての組み合わせを確認したと判定された場合（ステップＣ６でＹｅｓ）、処理を終了する。すべての組み合わせを確認したと判定されなかった場合は（ステップＣ６でＮｏ）、処理がステップＣ２に戻る。このようにステップＣ１〜Ｃ６を経て、開始予測時刻が重なる読出し要求が発生した場合にも、開始予測時刻の補正を行なうことにより、より正確な完了予測時刻を算出することができる。
【００６８】
予測完了時刻表示処理部２６は、統括処理部２５から完了予測時刻を受信し、ホストコンピュータ１００のアプリケーションや管理者に通知する。予測完了時刻表示処理部２６は、統括処理部２５から更新された完了予測時刻を受信すると、その更新された完了予測時刻を、ホストコンピュータ１００や管理者に再通知してもよい。また、予測完了時刻表示処理部２６は、実行結果の統計情報や予測精度等を表示する機能を併せもってもよい。
【００６９】
要求キュー完了時間予測処理部２７は、後述する予測機能群１０５内の各処理部を用いて、要求実行時間短化処理部２３から取得した処理順番に従って、読出し要求を処理した場合の処理時間を予測する。そして、要求キュー完了時間予測処理部２７は、予測した処理時間を要求実行時間短化処理部２３に送信する。要求キュー完了時間予測処理部２７において処理時間を予測するための具体的な手法については後述する。
【００７０】
異常監視処理部２８は、要求処理部２２から、読出し要求の完了予測時刻と、当該読出し要求に関する処理が実際に完了した時刻（完了時刻）とを取得し、両者を比較する。例えば、ホストコンピュータ１００のアプリケーションや管理者によって完了時刻に閾値が設定されてもよい。異常監視処理部２８は、完了時刻と完了予測時刻との差分が閾値を超えると、ライブラリ装置１のハードウェアやホストコンピュータ１００において異常が発生したと判断したり、異常の予兆を検出したものと判断してもよい。さらに、異常監視処理部２８は、当該差分が閾値を超えた場合、ホストコンピュータ１００のアプリケーションや管理者に、当該差分の値（時間）と、読出し要求の対象となった媒体４の番号等を通知してもよい。
【００７１】
また、異常監視処理部２８は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ１００において算出した完了予測時刻の精度を分析し、当該ホストコンピュータ１００のアプリケーションや管理者に表示してもよい。これにより、ホストコンピュータ１００のアプリケーションや管理者によって、各種パラメータが調整される等して、算出する完了予測時刻の精度を向上させることが可能となる。
【００７２】
実施形態の一例としての異常監視処理部２８の処理を、図７に示すフローチャート（ステップＤ１〜Ｄ５）に従って説明する。
【００７３】
ステップＤ１において、異常監視処理部２８は、要求処理部２２から、実行待ちキュー３１に格納されている各読出し要求の完了予測時刻を取得する。
【００７４】
続くステップＤ２において、異常監視処理部２８は、各読出し要求の完了時刻を取得する。
【００７５】
続くステップＤ３において、異常監視処理部２８は、完了時刻と完了予測時刻との差分を算出し、当該差分が、例えば、予め設定している閾値以下の場合には（ステップＤ３でＹｅｓ）、処理がステップＤ５に移行する。当該差分が閾値を超えた場合には（ステップＤ３でＮｏ）、異常が発生したものと判断され、処理がステップＤ４に移行する。
【００７６】
ステップＤ４において、異常監視処理部２８は、例えば、ホストコンピュータ１００のアプリケーションや管理者に、異常が発生した旨の通知、又は、異常の予兆を検出した旨の通知を行ない、処理を完了する。同時に、異常監視処理部２８は、当該差分の値（時間）や、読出し要求の対象となった媒体４の番号等を通知してもよい。
【００７７】
ステップＤ５において、異常監視処理部２８は、一定時間スリープした後、ステップＤ１の処理に戻る。
【００７８】
ドライブ通信プログラム２９ａは、ライブラリコントローラ２を介して、ライブラリ装置１に備えられるドライブ１２と通信するために必要な情報を記録したプログラムである。ホストコンピュータ１００が、ライブラリコントローラ２を介して、ライブラリ装置１のドライブ１２と通信するために必要なドライブ通信プログラム２９ａについては公知であるため、ここではその説明を省略する。
【００７９】
ライブラリ情報取得部２９ｂは、ホストコンピュータ１００が、ライブラリコントローラ２を介して、ライブラリ装置１に対してデータの読出しを要求する等の制御を行なう際、ライブラリ装置１や自身の記憶部１０３等から必要なライブラリ情報を取得する。このようなライブラリ情報取得部２９ｂについては公知であるため、ここではその説明を省略する。
【００８０】
上述の如く、図３〜図７を用いて、ホストコンピュータ１００が備える個々の機能を説明したが、図８を用いて、これら複数の機能を連携させて、ホストコンピュータ１００が、読出し要求を受信してから読出し要求を処理（移譲）するまでの処理について説明する。
【００８１】
実施形態の一例としてのライブラリ装置１における読出し要求の処理全体を、図８に例示したフローチャート（ステップＥ１〜Ｅ６，Ａ１〜Ａ９）に従って説明する。
【００８２】
なお、以下、図中、既述の符号と同一の符号を付したステップ（例えば、Ａ１〜Ａ９）は、同様の処理を示しているので、その具体的な説明は省略する。
【００８３】
ステップＥ１において、要求受信処理部２１は、ホストコンピュータ１００のアプリケーションや管理者から読出し要求を取得し、記憶部１０３に格納される読出し要求キュー３０に当該読出し要求を追加して記憶する。
【００８４】
続くステップＥ２において、要求受信処理部２１は、読出し要求の処理を、統括処理部２５に移譲する。
【００８５】
続いて、図４に示したステップＡ１〜Ａ５と同様の処理を行なう。すなわち、ステップＡ１において、統括処理部２５は、読出し要求キュー３０に格納される読出し要求の数が一定数以上であるか否かを判定する。読出し要求の数が一定数以上である場合には、処理がステップＡ２に移行し、統括処理部２５は、読出し要求キュー３０に格納される読出し要求を、処理対象要求Ｑとして決定した後、ステップＡ５に移行する。読出し要求の数が一定数に達していない場合には、処理がステップＡ３に移行する。ステップＡ３では、統括処理部２５が前回要求受信処理部２１より読出し要求を受信してから経過した時間がＴ（秒）以上である場合には、処理がステップＡ４に移行する。前回の読出し要求を受信してから経過した時間がＴ（秒）未満である場合には、処理がステップＡ１に戻る。ステップＡ４では、統括処理部２５は、実行待ちキュー３１から、既に処理順番が決定している読出し要求を取り出して、読出し要求キュー３０に格納されている読出し要求（処理順番が決定していない読出し要求）とまとめ、処理対象要求Ｑとして決定する。続くステップＡ５では、統括処理部２５は、要求実行時間短化処理部２３を介して、要求キュー完了時間予測処理部２７に対し、ステップＡ４において、処理対象要求Ｑに含まれる読出し要求について処理順番を設定するよう依頼する。そして、統括処理部２５は、要求キュー完了時間予測処理部２７から最短の処理順番を取得し、処理がステップＥ３に進む。
【００８６】
続くステップＥ３において、要求キュー完了時間予測処理部２７は、読出し要求の処理に要する処理時間を予測するために、予測機能群１０５内の各処理部を呼び出す。
【００８７】
続いて、図４に示すステップＡ６〜Ａ７の処理を行なう。ステップＡ６において、統括処理部２５は、読出し要求の中に、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部２３によって決定された処理順番を変更する。また、統括処理部２５は、例えば、締め切り時刻が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。続くステップＡ７において、統括処理部２５は、ステップＡ６において変更した処理順番に基づき各読出し要求の完了予測時刻を取得し、予測完了時刻表示処理部２６へ送信する。そして、処理がステップＡ８とＡ９とに進む。すなわち、ステップＡ８〜ステップＥ６の処理と、ステップＡ９〜ステップＥ５との処理が並行して行なわれる。
【００８８】
図４に示すステップＡ８において、ロボット競合見積もり修正処理部２４は完了予測時刻を修正し、統括処理部２５は、修正後の完了予測時刻を取得し、処理がステップＥ６に進む。
【００８９】
ステップＥ６において、予測完了時刻表示処理部２６は、完了予測時刻を受信して、ホストコンピュータ１００のアプリケーションや管理者に通知したり、実行結果の統計情報や予測精度等を表示してもよい。
【００９０】
また、図８に示すステップＡ９において、統括処理部２５は、読出し要求の処理を、要求処理部２２に移譲し、処理がステップＥ４に進む。
【００９１】
ステップＥ４では、当該読出し要求の処理順番になると、要求処理部２２はドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂを用いて、ドライブ１２に対し当該読出し要求のデータ読出し先となる媒体４から目的のデータを読出すよう命令を送信する。そして、要求受信処理部２１は、読出し要求の送信元（例えば、ホストコンピュータ１００のアプリケーションや管理者）に対して、読出したデータを送信する。
【００９２】
ステップＥ５において、異常監視処理部２８は、読出し要求の完了予測時刻と、当該読出し要求に関する処理が実際に完了した時刻（完了時刻）とを比較する。そして、異常監視処理部２８は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ１００において算出した完了予測時刻の精度を分析する等して評価を行ない、処理が終了する。
【００９３】
次に、図９を用いて、図３に示す予測機能群１０５に含まれる各種機能について説明する。図９に示すように、一実施形態に係る予測機能群１０５は、例示的に、ラップ始端終端位置確認処理部４１，終端ブロック位置推定処理部４２，ＢＯＴ距離測定処理部４３，シーク時間予測処理部４４，及び初期状態把握処理部４５を備えてよい。さらに、一実施形態に係る予測機能群１０５は、例示的に、ロード時間予測処理部４６，アンロード時間予測処理部４７，ロボット動作時間予測処理部４８，及びデータ読出し時間予測処理部４９を備えてよい。
【００９４】
次に、図９に示す予測機能群１０５内の各処理部（４１〜４９）について説明するにあたり、図１０を用いて、媒体４内の磁気テープ６０の構造について説明する。図１０は、実施形態の一例としてのライブラリ装置１における媒体４内の磁気テープ６０の構造を模式的に示す図である。
【００９５】
磁気テープ６０は、媒体４内において図示しない軸に巻き付けられており、媒体４に備えられている軸と、ドライブ１２に備えられている軸とが協調して、磁気テープ６０が長手方向に移動する。磁気テープ６０内には、長手方向に対して垂直な方向に並んで複数のエリアが存在し、これらのエリアをラップ６１という。
【００９６】
図１０に示す白抜き矢印は、１つのドライブ１２を用いて、連続して書込みを行なった場合のヘッドの位置の変化を、ラップ一往復分だけ模式的に示したものである。図１０に示すように、ヘッドは、その位置を変化させながら、ＥＯＴ（End Of Tape；テープの終端）までデータを書込み、ＥＯＴに到達する手前で書込みの向きを反転して、ＢＯＴ(Beginning Of Tape；テープの始端)に向けてデータを書込む。ヘッドは、ＢＯＴまで書込みを行なった後は、ＢＯＴに到達する手前で書込みの向きを反転して、ＥＯＴに向けてデータを書込む。ヘッドは、このような往復運動を繰り返すことによりデータの書込みを行なうために、ＢＯＴから始まりＥＯＴの方向にデータが書込まれる順方向のラップ６１と、ＥＯＴから始まりＢＯＴの方向にデータが書込まれる逆方向のラップ６１とが存在する。
【００９７】
続いて、図９に示す予測機能群１０５の機能ブロック図の説明に戻り、予測機能群１０５内のラップ始端終端位置確認処理部４１について説明する。ラップ始端終端位置確認処理部４１は、磁気テープ６０のラップ６１におけるＥＯＴ側の折り返し位置、すなわち、終端ブロック位置を求める。ラップ始端終端位置確認処理部４１は、例えば、媒体４をライブラリ装置１に取り込む際、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂを介してドライブ１２に命令を発行し、ラップ６１の始端ブロック位置や終端ブロック位置を取得してもよい。また、ラップ始端終端位置確認処理部４１は、例えば、記憶部１０３に格納されているラップ始端終端位置情報３３を取得して、ラップ６１の終端ブロック位置を求めてもよい。ラップ６１の始端ブロック位置と終端ブロック位置とは媒体４固有の情報である。そこで、例えば、ホストコンピュータ１００が媒体４からデータの読出しを要求する際、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂを介しドライブ１２に当該媒体４におけるラップ６１の終端ブロック位置の取得を要求する。そして、ホストコンピュータ１００は、取得した、当該媒体４におけるラップ６１の終端ブロック位置をラップ始端終端位置情報３３に格納してもよい。また、図示しない他の情報システムにおいて、媒体４におけるラップ６１の終端ブロック位置を取得した場合には、ホストコンピュータ１００がこれらの値をネットワーク経由で取得し、ラップ始端終端位置情報３３に格納してもよい。
【００９８】
ラップ６１へデータを書込む場合には、既に書込まれているデータの最後尾（End Of Data；最終有効データセットの終端）の次のブロック位置に書込みを行なうことが多い。そこで、ラップ始端終端位置確認処理部４１は、例えば、一つ前のラップ６１の終端ブロック位置を示すアドレス値に１を加算することにより、次のラップ６１の始端ブロック位置を求める。また、データがラップ６１の途中までしか書込まれていない場合、すなわち、データの終端がＢＯＴとＥＯＴとの間である場合、当該ラップ６１の正確な終端ブロック位置を得ることが難しい。このような場合、例えば、ラップ始端終端位置確認処理部４１は、１ラップ当たりのブロック数の平均又は推定値を、始端ブロック位置を示すアドレス値に加算することにより、終端ブロック位置を求めてもよい。
【００９９】
実施形態の一例としてのラップ始端終端位置確認処理部４１の処理を、図１１に示すフローチャート（ステップＦ１〜Ｆ８）に従って説明する。
【０１００】
ステップＦ１において、ラップ始端終端位置確認処理部４１は、例えば、記憶部１０３に格納されているラップ始端終端位置情報３３にアクセスして、磁気テープ６０におけるラップ６１の終端ブロック位置を取得する。そして、処理がステップＦ２に進み、最初のラップ６１についてステップＦ３以降の処理を行なう。
【０１０１】
ステップＦ３において、ラップ始端終端位置確認処理部４１は、データがラップ６１のＥＯＴ（辺り）まで書込まれているかを判定する。データがラップ６１のＥＯＴまで書込まれていると判定された場合（ステップＦ３でＹｅｓ）、ステップＦ４に移行する。そして、ステップＦ４にて、ラップ始端終端位置確認処理部４１は、ステップＦ１において取得したデータを終端ブロック位置とし、処理がステップＦ６に進む。一方、ステップＦ３において、データがラップ６１のＥＯＴまで書込まれていると判定されなかった場合（ステップＦ３でＮｏ）、すなわち、データがラップ６１の途中までしか書込まれていないと判定された場合、処理がステップＦ５に移行する。
【０１０２】
ステップＦ５において、ラップ始端終端位置確認処理部４１は、例えば、１ラップ当たりのブロック数の平均又は推定値から終端ブロック位置を求める。また、ステップＦ５において、ラップ始端終端位置確認処理部４１は、上述したように、ドライブ１２に命令を発行したり、記憶部１０３にアクセスすることにより、当該媒体４の終端ブロック位置を求めてもよい。また、ステップＦ５にてラップ始端終端位置確認処理部４１が取得した、媒体４の終端ブロック位置を記憶部１０３に格納してもよい。
【０１０３】
続くステップＦ６において、ラップ始端終端位置確認処理部４１は、例えば、一つ前のラップ６１の終端ブロック位置に１を加算することにより、次のラップ６１の始端ブロック位置を求める。
【０１０４】
続くステップＦ７において、ラップ始端終端位置確認処理部４１は、当該ラップ６１が最後のラップ６１であるかを判定する。ステップＦ７において、最後のラップ６１であると判定した場合（ステップＦ７でＹｅｓ）、処理を終了する。ステップＦ７において、最後のラップ６１であると判定しなかった場合（ステップＦ７でＮｏ）、ステップＦ８に進み、次のラップ６１に進む。その後、ステップＦ３に戻る。
【０１０５】
このようにステップＦ３〜Ｆ８の処理を繰り返すことにより、ホストコンピュータ１００は、各ラップ６１の始端ブロック位置と終端ブロック位置とを、媒体４毎に求めることができる。
【０１０６】
次に、図９に示す予測機能群１０５の機能ブロック図の説明に戻り、終端ブロック位置推定処理部４２について説明する。読出し要求を受け取った際、終端ブロック位置推定処理部４２は、当該要求において読出しを行なうデータのサイズを始端ブロック位置に加算して、終端ブロック位置を求める。そして、終端ブロック位置推定処理部４２は、算出した終端ブロック位置を要求キュー完了時間予測処理部２７に送信する。
【０１０７】
ＢＯＴ距離測定処理部４３は、読出し要求の対象となるデータがどのラップ６１に属するかを算出する。ＢＯＴ距離測定処理部４３は、例えば、ラップ始端終端位置確認処理部４１において算出されたラップ６１の始端ブロック位置と終端ブロック位置とから、読出し要求の対象となるデータのブロック位置が何番目のラップ６１に属するかを算出する。そして、ＢＯＴ距離測定処理部４３は、算出したラップ６１の番号が奇数であれば順方向のラップ６１に属すると判定し、ラップ６１の番号が偶数であれば逆方向のラップ６１に属すると判定してもよい。
【０１０８】
このようにして、ＢＯＴ距離測定処理部４３は、読出し要求の対象となるデータが属するラップ６１を算出し、これに基づきＢＯＴ距離を算出する。ここで、ＢＯＴ距離とは、読出し要求において取得する対象のブロック位置が、ＢＯＴからどの程度離れているかを示すものであり、磁気テープ６０における各ラップ６１の長さを１として求める。ＢＯＴ距離測定処理部４３は、例えば、下記式（１−１）、又は、下記式（１−２）によりＢＯＴ距離を算出してよい。下記式（１−１）は、読出し要求の対象となるデータが順方向のラップ６１に属する場合に用い、下記式（１−２）は、読出し要求の対象となるデータが逆方向のラップ６１に属する場合に用いるものとする。なお、ｌは、磁気テープ６０における各ラップ６１の長さを１としたときのＢＯＴ距離である。また、Ｗｂ，Ｗｅは、それぞれ、読出し要求の対象となるデータが属するラップ６１の始端ブロック位置，終端ブロック位置であり、Ｂｌｋは、読出し要求の対象となるデータの始端ブロック位置である。なお、Ｗｂ，Ｗｅは、ラップ始端終端位置確認処理部４１において算出されたラップ６１の始端ブロック位置と終端ブロック位置を用いるものとする。そして、ＢＯＴ距離測定処理部４３は、算出したＢＯＴ距離を要求キュー完了時間予測処理部２７に送信する。
【０１０９】
ｌ（Ｂｌｋ，Ｗｂ，Ｗｅ）＝（Ｂｌｋ−Ｗｂ）／（Ｗｅ−Ｗｂ）    （１−１）
【０１１０】
ｌ（Ｂｌｋ，Ｗｂ，Ｗｅ）＝（Ｗｅ−Ｂｌｋ）／（Ｗｅ−Ｗｂ）    （１−２）
【０１１１】
実施形態の一例としてのＢＯＴ距離測定処理部４３の処理を、図１２に示すフローチャート（ステップＧ１〜Ｇ３）に従って説明する。
【０１１２】
ステップＧ１において、ＢＯＴ距離測定処理部４３は、読出し要求の対象となるデータがどのラップ６１に属するかを算出し、ステップＧ２に進む。
【０１１３】
ステップＧ２において、ＢＯＴ距離測定処理部４３は、ラップ始端終端位置確認処理部４１において算出されたラップ６１の始端ブロック位置と終端ブロック位置を取得し、ステップＧ３に進む。
【０１１４】
ステップＧ３において、ＢＯＴ距離測定処理部４３は、例えば、上記式（１−１）又は（１−２）によりＢＯＴ距離を算出し、処理を終了する。
【０１１５】
次に、図９に示す予測機能群１０５の機能ブロック図の説明に戻り、シーク時間予測処理部４４について説明する。複数の読出し要求を処理する場合、１つのデータ（第１のデータ）を読出した後に、次のデータ（第２のデータ）を読出すためにヘッドをシークさせる必要がある。シーク時間予測処理部４４は、このシークに要する時間ｔ１を算出する。シーク時間予測処理部４４は、例えば、下記式（２）を用いて、第１のデータのＢＯＴ距離Ｌ１と第２のデータのＢＯＴ距離Ｌ２とからシークに要する時間ｔ１を算出する。この、第１のデータのＢＯＴ距離Ｌ１と第２のデータのＢＯＴ距離Ｌ２との差分の絶対値が、シークする距離であるので、シーク時間予測処理部４４は、上記差分の絶対値と、一定の距離をシークするのに要する時間τに基づきシークに要する時間を算出する。なお、τの値は、記憶部１０３等に格納されている実績値や、ホストコンピュータ１００のアプリケーションや管理者によって設定される値であってもよい。そして、シーク時間予測処理部４４は、算出した、シークに要する時間を要求キュー完了時間予測処理部２７に送信する。
【０１１６】
ｔ１＝｜Ｌ１−Ｌ２｜×τ    （２）
【０１１７】
実施形態の一例としてのシーク時間予測処理部４４の処理を、図１３に示すフローチャート（ステップＨ１〜Ｈ３）に従って説明する。
【０１１８】
ステップＨ１において、シーク時間予測処理部４４は、一定の距離をシークするのに要する時間τを、例えば、記憶部１０３等や、ホストコンピュータ１００のアプリケーションや管理者から取得し、ステップＨ２に進む。
【０１１９】
ステップＨ２において、シーク時間予測処理部４４は、第１のデータのＢＯＴ距離Ｌ１と第２のデータのＢＯＴ距離Ｌ２との差分の絶対値をシークする距離として算出し、ステップＨ３に進む。
【０１２０】
ステップＨ３では、ステップＨ１において取得した、一定の距離のシークに要する時間τと、ステップＨ２において算出した、シークする距離とを用いて、例えば、上記式（２）によりシークに要する時間を算出し、処理を終了する。
【０１２１】
次に、図９に示す予測機能群１０５の機能ブロック図の説明に戻り、初期状態把握処理部４５について説明する。初期状態把握処理部４５は、ヘッドが位置するブロック位置や、ドライブ１２の状態等を確認する。
【０１２２】
実施形態の一例としての初期状態把握処理部４５の処理を、図１４に示すフローチャート（ステップＩ１〜Ｉ７）に従って説明する。
【０１２３】
ステップＩ１において、初期状態把握処理部４５は、ドライブ１２の実行待ちキュー３１が空であるかを判定する。実行待ちキュー３１が空でない場合（ステップＩ１でＮｏ）、処理がステップＩ２に進む。実行待ちキュー３１が空である場合（ステップＩ１でＹｅｓ）、処理がステップＩ３に進む。
【０１２４】
ステップＩ２において、初期状態把握処理部４５は、ドライブ１２で最後に読出す予定のデータ、すなわち、実行待ちキュー３１に格納されている最後尾の読出し要求の対象データについて、終端ブロック位置を取得する。そして、初期状態把握処理部４５は、要求キュー完了時間予測処理部２７に対して、取得した終端ブロック位置を送信し、処理を完了する。
【０１２５】
ステップＩ３において、初期状態把握処理部４５は、ドライブ１２に媒体４が格納されているか否かを判定する。ドライブ１２に媒体４が格納されていると判定された場合には（ステップＩ３でＹｅｓ）、処理がステップＩ４に進む。ドライブ１２に媒体４が格納されていない（空である）と判定された場合には（ステップＩ３でＮｏ）、処理がステップＩ５に進む。
【０１２６】
ステップＩ４において、初期状態把握処理部４５は、ヘッドの現在の位置、すなわち、ドライブ１２が最後に読出したデータの終端ブロック位置を取得する。そして、要求キュー完了時間予測処理部２７に対して、取得した終端ブロック位置と、ドライブ１２が空でないという情報とを送信し、処理を完了する。
【０１２７】
ステップＩ５において、初期状態把握処理部４５は、ドライブ１２が前回読出したデータが存在するかを判定する。ドライブ１２が前回読出したデータが存在しないと判定された場合には（ステップＩ５でＮｏ）、処理がステップＩ６に進む。ドライブ１２が前回読出したデータが存在すると判定された場合には（ステップＩ５でＹｅｓ）、処理がステップＩ７に進む。
【０１２８】
ステップＩ６において、初期状態把握処理部４５は、ドライブ１２が前回読出したデータが存在しないという情報と、ドライブ１２が空であるという情報とを、要求キュー完了時間予測処理部２７に送信し、処理を完了する。
【０１２９】
ステップＩ７において、初期状態把握処理部４５は、ドライブ１２が前回読出したデータの終端ブロック位置を取得する。そして、初期状態把握処理部４５は、要求キュー完了時間予測処理部２７に対して、取得した終端ブロック位置と、ドライブ１２が空であるという情報とを送信し、処理を完了する。
【０１３０】
このようにステップＩ１〜Ｉ７を経て、ホストコンピュータ１００は、ドライブ１２に媒体４が格納されているか否か（ドライブ１２が空であるか否か）に関する状況や、ヘッドの現在の位置を求めることができる。
【０１３１】
次に、図９に示す予測機能群１０５の機能ブロック図の説明に戻り、ロード時間予測処理部４６について説明する。ロード時間予測処理部４６は、セル１４に入っている媒体４をドライブ１２にロードしてデータの読出しを開始するまでの時間を算出する。そして、ロード時間予測処理部４６は、予測した時間を要求キュー完了時間予測処理部２７に送信する。
【０１３２】
ロード時間予測処理部４６は、以下のＴ１〜Ｔ３を加算することによりデータの読出しを開始するまでの時間を算出する。Ｔ１は、セル１４から媒体４を取り出してドライブ１２に格納するのに要する時間であり、Ｔ２は、ドライブ１２に格納された媒体４を確認するのに要する時間である。また、Ｔ３は、ドライブ１２の軸と媒体４の軸とを協調して磁気テープ６０を回転させて、磁気テープ６０を媒体４から引き出しながら、ヘッドを、読出し対象となるデータの手前までシークするのに要する時間である。上記Ｔ１について、ロード時間予測処理部４６は、後述するロボット動作時間予測処理部４８において算出された時間を取得する。上記Ｔ２について、ロード時間予測処理部４６は、具体的に、ドライブ１２に格納された媒体４のラベル情報やＣＭ（カートリッジメモリ）の情報等に基づき、当該媒体４が要求したものと同一であるか否かを判定してもよい。そのため、ロード時間予測処理部４６は、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂから、ラベル情報やＣＭの情報等を取得してもよい。この場合、上記Ｔ２として、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂから上記情報を取得するのに要する推定値又は実績値を用いてもよい。上記Ｔ３は、ロード時間予測処理部４６が、上記式（２）を用いて取得するものとする。
【０１３３】
アンロード時間予測処理部４７は、媒体４のアンロードに要する時間、すなわち、ドライブ１２内に格納されている媒体４を排出して、セル１４に戻すのに要する時間を算出する。アンロード時間予測処理部４７は、以下のＴ４〜Ｔ６を加算することにより媒体４のアンロードに要する時間を算出する。Ｔ４は、磁気テープ６０を媒体４側の軸に巻き取るのに要する時間であり、Ｔ５は、ドライブ１２におけるアンロード前処理と共に媒体４の排出に要する時間であり、Ｔ６は、媒体４をドライブ１２からセル１４に移動させるのに要する時間である。上記Ｔ４は、シークに要する時間と等しいことから、アンロード時間予測処理部４７は、上記式（２）を用いて取得するものとする。上記Ｔ４は、前回読出したデータの終端ブロック位置からＢＯＴまでをシークするための時間に等しいことから、アンロード時間予測処理部４７が、上記式（２）を用いて上記Ｔ４を取得するものとする。上記Ｔ５については、当該ドライブ１２におけるアンロード前処理に要する時間や、媒体４の排出に要する時間として、推定値又は実績値を用いてもよい。上記Ｔ６について、アンロード時間予測処理部４７は、後述するロボット動作時間予測処理部４８が算出した時間を取得するものとする。
【０１３４】
ロボット動作時間予測処理部４８は、セル１４の格納位置，ドライブ１２の位置に基づき、ライブラリ装置１においてロボット１１の動作に要する動作時間を算出する。この動作時間を算出するためには、公知の関数を用いてもよい。この場合、ロボット１１の動作時間は、ライブラリ装置１の構造や仕様に影響する場合があるので、関数を用いる上で実績値をフィードバックしながらパラメータ等を変更してもよい。
【０１３５】
データ読出し時間予測処理部４９は、読出し対象のデータのサイズに基づき、ヘッドを当該データの始端ブロック位置から終端ブロック位置まで移動させるのに要する時間を算出する。データ読出し時間予測処理部４９は、例えば、下記式（３）を用いて、データ読出し時の際にヘッドを移動させるのに要する時間ｔ２を算出する。ヘッドを移動させるのに要する時間は、データの読出しに用いるドライブ１２の種類によって異なる場合があるので、比例定数τＲを用いる。なお、Ｅ，Ｂはそれぞれ、終端ブロック位置を示すアドレス値，始端ブロック位置を示すアドレス値であり、ｔ０は折り返しに要する定数時間である。また、ｎは折り返しの回数である。
【０１３６】
ｔ２＝（Ｅ−Ｂ）×τＲ＋ｔ０×ｎ    （３）
【０１３７】
要求キュー完了時間予測処理部２７は、上述したように、予測機能群１０５内の各処理部を用いて、要求実行時間短化処理部２３から取得した処理順番に従って、読出し要求を処理した場合に要する処理時間を予測する。
【０１３８】
実施形態の一例としての要求キュー完了時間予測処理部２７の処理を、図１５に示すフローチャート（ステップＪ１〜Ｊ１２，Ｆ１〜Ｆ７，Ｉ１〜Ｉ３，Ｉ５，Ｇ１〜Ｇ３，Ｈ１〜Ｈ３）に従って説明する。
【０１３９】
なお、図中、既述の符号と同一の符号を付したステップ（Ｆ１〜Ｆ７，Ｉ１〜Ｉ３，Ｉ５，Ｇ１〜Ｇ３，Ｈ１〜Ｈ３）は、同様の処理を示しているので、その詳細な説明は省略する。
【０１４０】
ステップＪ１において、終端ブロック位置推定処理部４２は、読出し要求の対象データについて、始端ブロック位置及び終端ブロック位置をそれぞれ算出する。例えば、読出し要求の対象データの数がＭ（Ｍは整数）であるものとする。終端ブロック位置推定処理部４２は、Ｎ番目（Ｎ＝１，２，…，Ｍ；Ｎは整数）の読出し対象データの始端ブロック位置Ｂ［Ｎ］に対して当該データのサイズを加算することにより、当該データの終端ブロック位置Ｅ［Ｎ］を算出する。具体的には、終端ブロック位置推定処理部４２は、図１１のステップＦ１〜Ｆ７の処理を、読出し対象データの個数分繰り返す。
【０１４１】
次に、図１４に示したステップＩ１と同様の処理を行なう。ステップＩ１において、初期状態把握処理部４５は、ドライブ１２の実行待ちキュー３１が空であるかを判定する。実行待ちキュー３１が空でない場合、処理がステップＩ２に進む。実行待ちキュー３１が空である場合、処理がステップＧ１〜Ｇ３に進む。ステップＩ２において、初期状態把握処理部４５は、実行待ちキュー３１に格納されている最後尾の読出し要求の対象データについて、その終端ブロック位置を取得し、処理がステップＪ３に進む。処理がステップＪ３に進んだ場合、ステップＪ３では、ステップＩ２において、初期状態把握処理部４５が取得した、実行待ちキュー３１に格納されている最後尾の読出し要求の対象データの終端ブロック位置をＥ［０］に格納し、処理がステップＪ５に進む。
【０１４２】
処理がステップＧ１に進んだ場合、図１２に示したステップＧ１と同様の処理を行なう。すなわち、ステップＧ１において、ＢＯＴ距離測定処理部４３は、読出し要求の対象となるデータがどのラップ６１に属するかを算出する。続くステップＧ２において、ラップ始端終端位置確認処理部４１において算出されたラップ６１の始端ブロック位置，終端ブロック位置を取得する。そして、続くステップＧ３において、ＢＯＴ距離測定処理部４３は、例えば、上記式（１−１）又は（１−２）によりＢＯＴ距離を算出し、処理がステップＪ２に進む。
【０１４３】
ステップＪ２において、所定の処理順番で当該読出し要求を処理した場合に要する処理時間Ｔを０に初期化する。この処理時間Ｔは、要求キュー完了時間予測処理部２７が最終的に算出する値である。
【０１４４】
次に、図１４に示したステップＩ３と同様の処理を行なう。ステップＩ３において、初期状態把握処理部４５は、ドライブ１２に媒体４が格納されているか否かを判定する。ドライブ１２に媒体４が格納されていると判定された場合には（ステップＩ３でＹｅｓ）、処理がステップＪ３に進む。ドライブ１２に媒体４が格納されていない（空である）と判定された場合には（ステップＩ３でＮｏ）、処理がステップＩ５に進む。ステップＩ５において、初期状態把握処理部４５は、ドライブ１２が前回読出したデータが存在するかを判定する。ドライブ１２が前回読出したデータが存在しないと判定された場合には（ステップＩ５でＮｏ）、処理がステップＪ４に進む。ドライブ１２が前回読出したデータが存在すると判定された場合には（ステップＩ５でＹｅｓ）、処理がステップＪ３に進む。
【０１４５】
ステップＪ３では、ドライブ１２が前回読出したデータの終端ブロック位置をＥ［０］に格納し、処理がステップＪ５に進む。
【０１４６】
ステップＪ４では、Ｅ［０］に０を格納し、処理がステップＪ５に進む。
【０１４７】
続くステップＪ５において、要求キュー完了時間予測処理部２７は、今回の読出し要求は、前回と同一の媒体４からの読出し要求であるかを判定する。すなわち、要求キュー完了時間予測処理部２７は、今回（Ｎ番目）に読出しを行なうデータが格納されている媒体４が、前回（Ｎ−１番目）読出しを行なったデータが格納されている媒体４と同一であるか否かを判定する。前回と同一の媒体４からの読出し要求であると判定された場合には（ステップＪ５でＹｅｓ）、処理がステップＪ７に進む。前回と同一の媒体４からの読出し要求でないと判定された場合には（ステップＪ５でＮｏ）、処理がステップＪ６に進む。
【０１４８】
ステップＪ６において、アンロード時間予測処理部４７は、前回（Ｎ−１番目）読出しを行なった媒体４をアンロードして、今回（Ｎ番目）に読出しを行なう媒体４をロードするのに要する時間を算出する。そして、処理がステップＪ８に進む。
【０１４９】
ステップＪ７において、要求キュー完了時間予測処理部２７は、Ｎ−１の値が０であるか、又は、ドライブ１２が空であるかを判定する。これらの情報は、要求キュー完了時間予測処理部２７が初期状態把握処理部４５から受信した情報に含まれるものである。ステップＪ７において、Ｎ−１の値が０である場合（１番目のデータの読出しである場合）、又は、ドライブ１２が空であると判定された場合（ステップＪ７でＹｅｓ）、処理がシーク時間予測処理部４４（ステップＨ１〜Ｈ３）に進む。一方、ステップＪ７において、Ｎ−１の値が０ではない、且つ、ドライブ１２が空ではないと判定された場合（ステップＪ７でＮｏ）、処理がステップＪ８に進む。
【０１５０】
ステップＪ８において、ロード時間予測処理部４６は、ロードに要する時間を算出し、算出した時間を処理時間Ｔに加算する。そして、処理がＨ１〜Ｈ３に進み、図１３に示すステップＨ１〜Ｈ３と同様の処理を行なう。
【０１５１】
図１３に示したステップＨ１〜Ｈ３では、シーク時間予測処理部４４は、一定の距離のシークに要する時間τを取得し（ステップＨ１）、シークする距離を算出し（ステップＨ２）、例えば、上記式（２）によりシークに要する時間を算出する（ステップＨ３）。そして、要求キュー完了時間予測処理部２７は、シーク時間予測処理部４４が算出したシーク時間を取得して、処理時間Ｔに加算し、処理がステップＪ９に進む。
【０１５２】
続くステップＪ９において、データ読出し時間予測処理部４９は、上述したステップにおいて算出した、Ｂ［Ｎ］，Ｅ［Ｎ］に基づき、ヘッドをデータの始端ブロック位置から終端ブロック位置まで移動させるのに要する時間を算出する。そして、データ読出し時間予測処理部４９は、算出したヘッドを移動させるのに要する時間を処理時間Ｔに加算し、処理がステップＪ１０に進む。
【０１５３】
このようにして、上述した処理を経て累積された処理時間Ｔは、所定の処理順番のもと、当該読出し要求がＮ番目に処理された場合に要する処理時間といえる。ステップＪ１０において、要求キュー完了時間予測処理部２７は、この処理時間Ｔを、Ｎ番目の読出し要求の処理に要する処理時間として、Ｐ［Ｎ］に格納する。
【０１５４】
続くステップＪ１１において、要求キュー完了時間予測処理部２７は、当該Ｎ番目の読出し要求が、最後の読出し要求であるかを判定する。最後の読出し要求であると判定された場合（ステップＪ１１でＹｅｓ）、処理を完了する。最後の読出し要求であると判定されなかった場合（ステップＪ１１でＮｏ）、処理がステップＪ１２に進む。ステップＪ１２において、Ｎの値に１を加算し、ステップＪ５に戻る。ステップＪ１２において、Ｎの値に１を加算し、ステップＪ５に戻る。
【０１５５】
上述の如く構成されたホストコンピュータ１００の動作について、図５を用いて改めて説明する。ステップＢ１において、要求実行時間短化処理部２３は、複数の読出し要求（上述した図１５に示す例ではＭ個の読出し要求）を処理する処理順番を複数設定する。続くステップＢ２において、要求実行時間短化処理部２３は、読出し要求をドライブ１２毎に分割する。続くステップＢ３では、要求実行時間短化処理部２３は、ステップＢ１において設定した処理順番のうちの１つを要求キュー完了時間予測処理部２７に送信する。そして、図１５に示す一連の処理を経て、要求キュー完了時間予測処理部２７は、予測機能群１０５内の各処理部を用い、Ｍ個の読出し要求のうち、それぞれの読出し要求について、所定の処理順番で処理された場合に要する処理時間Ｔを求める。例えば、Ｎ番目の読出し要求について、所定の処理順番で処理された場合に要する処理時間Ｔについては、Ｐ［Ｎ］に格納する。このようにして、Ｍ個の読出し要求のそれぞれについて、所定の処理順番で処理された場合に要する処理時間Ｔを求め、それぞれ、Ｐ［１］〜Ｐ［Ｍ］に格納する。さらに、完了時間予測処理部２７は、Ｐ［１］〜Ｐ［Ｍ］に格納されている各読出し要求の処理時間の総和Ｚを求めることにより、ステップＢ１において設定した処理順番でＭ個の読出し要求を処理した場合に要する処理時間の総和Ｚを算出できる。この処理時間の総和Ｚは、処理順番に依存する場合があるので、本実施形態では、設定可能な処理順番毎に処理時間の総和Ｚを算出することで、設定可能な処理順番の数だけ処理時間の総和Ｚの算出を繰り返す。そして、図５のステップＢ４に示すように、処理時間の総和Ｚが最短となる処理順番を決定するものとする。
【０１５６】
〔２〕一実施形態の第一の変形例
図４〜図８、及び図１１〜１５に示したフローチャートにおいては、ホストコンピュータ１００が、当該ホストコンピュータ１００のアプリケーションや管理者から、読出し要求を取得した場合の処理の流れを説明したが、これに限定されるものではない。例えば、ホストコンピュータ１００が、当該ホストコンピュータ１００のアプリケーションや管理者から、書込み要求を受信してもよい。その場合、例えば、図１６に示すような処理を行なう。
【０１５７】
図１６に示すステップＫ１において、要求受信処理部２１は、当該ホストコンピュータ１００のアプリケーションや管理者から、書込み要求を受信する。そして、要求受信処理部２１は、例えば、図示しないキャッシュ等の記憶装置に当該書込み要求を書込む。
【０１５８】
続くステップＫ２において、要求受信処理部２１は、実行待ちキュー３１やキャッシュ等の状況を考慮して、要求処理部２２に当該書込み要求を送信する。
【０１５９】
続くステップＫ３において、要求受信処理部２１は、当該書込み要求の処理順番になると、ドライブ通信プログラム２９ａに書込み指示を行なう。ドライブ通信プログラム２９ａは、ライブラリコントローラ２を介し、ドライブ１２に対して、媒体４へデータの書込み指示を行なう。そして、処理を完了する。
【０１６０】
〔３〕一実施形態の第二の変形例
上述した一実施形態では、図１〜図１５を用いて、最短の処理時間と予測される処理順番を決定することにより、複数の読出し要求を処理する際の時間を短縮する手法について説明したが、これに限定されるものではない。第二の変形例では、最短の近似値としての処理時間となる処理順番を決定することにより、複数の読出し要求を処理する際の時間を短縮する手法について説明する。
【０１６１】
また、上述した一実施形態では、読出し要求の対象データが格納されている媒体４に関わらず処理順番を決定するものとしたが、第二の変形例では、媒体４毎に処理順番を決定するものとする。すなわち、第二の変形例では、各媒体４に対する読出し要求の対象データが複数ある場合、このうち一の媒体４に対する読出し要求を処理した後に、異なる媒体４に対する読出し要求を処理するような処理順番を決定するものとする。
【０１６２】
なお、本変形例に係るライブラリ装置１の構成（斜視図；図１参照）、及び、ライブラリ装置１のハードウェア構成（図２参照）、ホストコンピュータ１００の機能構成（図３参照）については、上述した一実施形態と同様であるため、ここでは説明を省略する。また、本変形例に係るライブラリ装置１における予測機能群１０５の機能構成（図９参照）、及び、ライブラリ装置１における媒体内のテープの構造（図１０参照）については、上述した一実施形態と同様であるため、ここでは説明を省略する。
【０１６３】
第二の変形例に係るライブラリ装置１における統括処理部２５における動作の概要を、図１７のフローチャート（ステップＡ１〜Ａ３，Ａ５，Ａ７，Ａ９）に例示する。この図１７は、第二の変形例に係る統括処理部２５において、複数の読出し要求の処理順番を決定する動作の概要を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【０１６４】
なお、図１７に示すフローチャートにおける、ステップＡ１〜Ａ３，Ａ５，Ａ７，Ａ９については、一実施形態における図４に示す各処理と同様であるため、ここでは説明を省略する。また、図１７に示すフローチャートでは、上述した図４に示すフローチャートのうち、ステップＡ４，Ａ６，Ａ８に示す処理を省略している。これは、全体の処理の簡略化を目的としたためであり、上述した一実施形態と同様に、これらのステップＡ４，Ａ６，Ａ８に示す処理を経てもよい。
【０１６５】
また、上述のとおり、図１７に例示するフローチャートでは、図４に示すフローチャートのステップＡ４を省略しているため、ステップＡ３でＹｅｓの場合に処理がステップＡ２に移行する点が、上述した一実施形態における統括処理部２５での処理と異なる。すなわち、第二の変形例では、ステップＡ３において、統括処理部２５が要求受信処理部２１より読出し要求を前回受信してから経過した時間がＴ（秒）以上である場合（ステップＡ３でＹｅｓ）、処理がステップＡ２に移行する。
【０１６６】
また、本変形例では、図１７に例示するステップＡ５において、統括処理部２５は、要求実行時間短化処理部２３を介して、要求キュー完了時間予測処理部２７から最短の近似値としての処理順番を取得する。
【０１６７】
このようにして、図１７のステップＡ１〜Ａ３，Ａ５，Ａ７に示す処理を経た後、ステップＡ９において、統括処理部２５は、読出し要求の処理を要求処理部２２に移譲する。この第二の変形例における要求処理部２２の処理を、図１８に示すフローチャート（ステップＸ１〜Ｘ３）を用いて説明する。この図１８は、第二の変形例に係る要求処理部２２において、要求の処理を依頼する動作を説明するためのフローチャートである。
【０１６８】
本変形例において、要求処理部２２は、統括処理部２５から読出し要求の処理が移譲される（図１７に示すステップＡ９）のを契機として実行を開始するのではなく、読出し要求の処理を実行できるようスタンバイしておくものとする。このような処理は、公知の並列処理（マルチスレッド）技術等を用いて実現してもよい。
【０１６９】
ステップＸ１において、要求処理部２２は、初期状態把握処理部４５に対して、実行待ちキュー３１が空であるかを判定するよう依頼する。実行待ちキュー３１が空であると判定した場合（ステップＸ１でＹｅｓ）、処理がステップＸ１に戻る。一方、実行待ちキュー３１が空でないと判定した場合（ステップＸ１でＮｏ）、処理がステップＸ２に進む。すなわち、要求処理部２２は、実行待ちキュー３１に処理すべき読出し要求が存在すれば、当該読出し要求の処理を依頼し、実行待ちキュー３１に処理すべき読出し要求が存在しなければ、当該実行待ちキュー３１に読出し要求が追加されるまで待機する。
【０１７０】
ステップＸ２では、既に読出し要求処理が開始されている（実行中の）媒体４がある場合、要求処理部２２は、後述する媒体４の処理順番に基づき、実行中の媒体４の次に処理対象となる媒体４（実行中の媒体４を除く先頭の媒体４）に対する処理を依頼する。そして、実行中の媒体４の次に処理対象となる媒体４に対する複数の読出し要求は、後述する手順に基づき決定された処理順番に従って処理される。そこで、要求処理部２２は、当該読出し要求の処理順番になると、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂを用いて、ドライブ１２に対して、当該読出し要求のデータ読出し先となる媒体４から的のデータを読出すよう命令を送信する。そして、要求受信処理部２１は、読出し要求の送信元（例えば、ホストコンピュータ１００のアプリケーションや管理者）に対して、読出したデータを送信する。
【０１７１】
続くステップＸ３において、要求処理部２２は、後述する図１９のフローチャートに示すステップＸ’１〜Ｘ’２の処理を実行しているドライブ１２の数又は有無を判定する。そして、媒体４に対してステップＸ’１〜Ｘ’２の処理を実行していないドライブ１２が存在すると判定した場合（ステップＸ３でＹｅｓ）、処理がステップＸ１に戻る。一方、すべてのドライブ１２が媒体４に対して処理を実行していると判定した場合（ステップＸ３でＮｏ）、ステップＸ３の処理を繰り返す。すなわち、いずれかのドライブ１２がステップＸ’１〜Ｘ’２の処理を完了すると、要求処理部２２は、後述するＸ’２の処理にて通知される完了の旨の通知を受信するまで待機する。
【０１７２】
上述したステップＸ２において、要求処理部２２から目的のデータを読出す命令を受信すると、ライブラリ装置１側では、ドライブ１２を制御して媒体４からデータの読出しを実行する。次に、この動作を、図１９に示すフローチャート（ステップＸ’１〜Ｘ’２）に従って説明する。この図１９は、第二の変形例に係るライブラリ装置１における読出し処理を説明するためのフローチャートである。
【０１７３】
ステップＸ’１では、上述したステップＸ２において、要求処理部２２から対象となるデータを読出す命令を受信すると、当該対象となるデータが格納されている媒体４から当該データを読出す処理を実行する。すなわち、ライブラリ装置１側では、決定された処理順番に従って、処理対象要求Ｑに含まれる複数の読出し要求を実行する。
【０１７４】
続くステップＸ’２では、処理対象要求Ｑに含まれる複数の読出し要求のうち、処理順番が最後の読出し要求を処理した後、すべての読出し要求が完了したことを、要求処理部２２に通知する。そして、処理が終了する。
【０１７５】
次に、第二の変形例における、最短の近似値としての処理順番を決定する処理を行なう要求実行時間短化処理部２３の動作を、図２０に示すフローチャート（ステップＹ１〜Ｙ５）に従って説明する。この図２０は、第二の変形例に係る要求実行時間短化処理部２３の動作を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【０１７６】
ステップＹ１において、要求実行時間短化処理部２３は、統括処理部２５から複数の読出し要求を受信し、受信した複数の読出し要求を媒体４毎に分割する。
【０１７７】
続くステップＹ２では、要求実行時間短化処理部２３は、ステップＹ１において媒体４毎に分割した読出し要求について、これら読出し要求の対象となるデータの始端ブロック位置に基づき、処理順番を決定する前処理を行なう。例えば、この前処理において、要求実行時間短化処理部２３は、読出し要求の対象となるデータの始端ブロック位置を示すアドレス値が昇順又は降順となるように、複数の読出し要求の処理順番を決定する。そして、要求実行時間短化処理部２３は、この前処理を媒体４毎に行なう。
【０１７８】
続くステップＹ３では、要求実行時間短化処理部２３は、ステップＹ２に示す前処理において決定した処理順番を初期状態とし、２−ｏｐｔ法等の公知の局所探索法を用いて、この初期状態の処理順番を変更する。そして、要求実行時間短化処理部２３は、この変更した処理順番を新たな処理順番として設定する。なお、本変形例において、読出し要求の処理順番を設定するための手法としては、上記の局所探索法以外の手法を用いてもよく、また、公知のアルゴリズムとを組み合わせてもよい。
【０１７９】
続くステップＹ４では、要求実行時間短化処理部２３は、ステップＹ３において設定した処理順番を要求キュー完了時間予測処理部２７に送信し、その結果として、要求キュー完了時間予測処理部２７から、当該処理順番での処理時間Ｔを取得する。
【０１８０】
本変形例において、要求実行時間短化処理部２３は、ステップＹ３において設定した処理順番で一連の読出し要求を処理した場合に要する処理時間を、これら一連の読出し要求の対象データをシークする際に要する処理時間Ｔの総和により求める。また、ステップＹ３において設定した処理順番で、隣り合う読出し要求を処理する場合に要する各シーク時間は、上述の一実施形態と同様に、シーク時間予測処理部４４が、例えば、上記式（２）を用いて算出する。
【０１８１】
なお、本変形例では、媒体４毎に読出し要求を処理するため、上記式（２）におけるτの値（一定の距離をシークするのに要する時間）を１とする（省略する）。
【０１８２】
続くステップＹ５では、要求実行時間短化処理部２３は、最短の近似値としての処理時間が取得できたか否かを判断する。最短の近似値としての処理時間が得られた場合には（ステップＹ５でＹｅｓ）、処理を終了する。一方、最短の近似値としての処理時間が得られなかった場合には（ステップＹ５でＮｏ）、ステップＹ１に戻る。
【０１８３】
このように、図２０のステップＹ１〜Ｙ５に示す処理を繰り返すことにより、ホストコンピュータ１００は、複数の読出し要求の処理順番を入れ替えて処理時間Ｔの総和を取得して、最短の近似値としての処理時間で処理を完了できる処理順番を決定する。
【０１８４】
本変形例においても、複数の読出し要求を、一連の（連続的な）読出し要求として処理する。そのため、本変形例において、ステップＹ２に示す前処理を行なわず、ステップＹ３に示す２−ｏｐｔ法等の公知の局所探索法だけを用いて処理順番を求めると、まとまった複数の読出し要求が連続的に処理されない処理順番が決定されるおそれがある。そこで、本変形例では、ステップＹ３に示す２−ｏｐｔ法等の公知の局所探索法だけでなく、ステップＹ２に示す前処理も併せて行なうものとする。これにより、特に、性能測定時や、媒体４に格納される大半のデータをまとめて読出す要求を処理する場合、本手法は有効となる。
【０１８５】
上述の如く、図１７〜図２０を用いて、本変形例に係る各機能を説明したが、これら複数の機能を連携させて、ホストコンピュータ１００が読出し要求を受信してから読出し要求を処理（移譲）するまでの処理を図２１に例示する。この図２１に例示したフローチャート（ステップＥ１，Ｅ２，Ａ１〜Ａ３，Ａ５，Ｅ３，Ａ７，Ｅ６，Ａ９，Ｅ４，Ｅ５）は、第二の変形例に係るライブラリ装置１における読出し要求の処理全体を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【０１８６】
この図２１に示すフローチャートにおける、ステップＡ１〜Ａ３，Ａ５，Ａ７，Ａ９の各処理は、図４、及び、図１７における既述の各処理と同様であるため、ここでは説明を省略する。また、図２１に示すフローチャートでは、一実施形態において上述した図８に示すフローチャートのうち、ステップＡ４，Ａ６，Ａ８に示す処理を省略している。これは、全体の処理の簡略化を目的としたためであり、上述した一実施形態と同様に、これらのステップＡ４，Ａ６，Ａ８に示す処理を経てもよい。
【０１８７】
また、図２１に示すフローチャートにおける、ステップＥ１〜Ｅ６の各処理は、図８における既述の各処理と同様であるため、ここでは説明を省略する。
【０１８８】
図２１に示すステップＥ１において、ホストコンピュータ１００のアプリケーションや管理者から取得した要求を取得する。そして、図２１に示すステップＥ２，Ａ１〜Ａ３，Ａ５，Ｅ３，Ａ７を経て、ステップＥ６にて、予測完了時刻表示処理部２６は、ホストコンピュータ１００のアプリケーションや管理者に完了予測時刻を通知する。さらに、ステップＡ９，Ｅ４を経て、ステップＥ５において、異常監視処理部２８は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ１００において算出した完了予測時刻の精度を分析する等して評価を行ない、処理が終了する。
【０１８９】
次に、上述の図１７に示した統括処理部２５の動作の概要のうち、ステップＡ５以降の処理を、図２２のフローチャート（ステップＳ１〜Ｓ７，Ｙ１〜Ｙ５，Ｓ８〜Ｓ１１）を用いて詳細に説明する。したがって、図２２のステップＳ１に示す処理は、図１７のフローチャートにおけるステップＡ２に示す処理を契機として開始するものとする。
【０１９０】
この図２２は、第二の変形例に係る統括処理部２５において、複数の読出し要求の処理順番を決定する動作を具体的に説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【０１９１】
なお、図２２に示すフローチャートにおける、ステップＹ１〜Ｙ５の各処理は、図２０における既述の各処理と同様であるため、ここでは説明を省略する。
【０１９２】
また、後述するステップＳ１〜Ｓ７に示す処理においては、上述のステップＡ２に示す処理にて、統括処理部２５により決定された処理対象要求Ｑに含まれる各読出し要求がその処理対象となるものとする。
【０１９３】
ステップＳ１では、処理対象要求Ｑに含まれる各読出し要求について、当該読出し要求の対象となる媒体４を特定する。ここで、例えば、統括処理部２５は、読出し要求の送信元（例えば、ホストコンピュータ１００のアプリケーションや管理者）やライブラリ装置１から、各読出し要求の対象データが格納される媒体４を特定するための識別情報等を取得してもよい。
【０１９４】
続くステップＳ２において、読出し対象データについての始端ブロック位置とサイズとを取得する。これらの読出し対象データについての始端ブロック位置とサイズとについても、例えば、統括処理部２５が、読出し要求の送信元（例えば、ホストコンピュータ１００のアプリケーションや管理者）やライブラリ装置１から取得してもよい。また、後述する当該読出し対象データのメタデータから取得してもよい。
【０１９５】
続くステップＳ３において、ラップ始端終端位置確認処理部４１は、例えば、ドライブ通信プログラム２９ａやライブラリ情報取得部２９ｂを介してドライブ１２に命令を発行し、ラップ６１の終端ブロック位置を取得してもよい。このドライブ１２に対して発行する命令としては、ＳＣＳＩ（Small Computer System Interface）コマンド等を用いてもよい。
【０１９６】
また、ラップ始端終端位置確認処理部４１は、媒体４をライブラリ装置１に取り込む際にラップ６１の終端ブロック位置を取得し、例えば、記憶部１０３に格納しておいてもよい。そして、ラップ始端終端位置確認処理部４１は、定期的にドライブ１２に命令を発行することにより取得したラップ６１の終端ブロック位置を用いて、記憶部１０３に格納されている情報を更新してもよい。この場合、ラップ始端終端位置確認処理部４１は、記憶部１０３を参照して最新の終端ブロック位置を取得してもよい。
【０１９７】
続くステップＳ４では、ステップＳ１において特定した媒体４が非圧縮であるか否かを判定する。ここでは、例えば、統括処理部２５が、ライブラリ装置１にアクセスすることにより、所定の媒体４の圧縮に関する情報を取得し、この取得した情報に基づき、媒体４が非圧縮であるか否かを判定する。非圧縮であると判定しなかった場合（ステップＳ４のＮｏルート）、処理がステップＳ５に進む。一方、非圧縮であると判定した場合（ステップＳ４のＹｅｓルート）、処理がステップＳ６に進む。
【０１９８】
ステップＳ５において、例えば、統括処理部２５は、読出し対象となるデータの終端ブロック位置を推定する。ここで、読出し対象となるデータの終端ブロック位置を推定する際、例えば、統括処理部２５は、ライブラリ装置１にアクセスして当該データのメタデータを参照する。そして、メタデータに終端ブロック位置が格納されている場合には、この格納されている終端ブロック位置を、当該データの終端ブロック位置として求める。なお、このメタデータの設定処理については後述する。
【０１９９】
また、メタデータに終端ブロック位置が格納されていない場合には、例えば、統括処理部２５は、ラップ始端終端位置確認処理部４１から当該データの終端ブロック位置の推定値を取得する。具体的に、ラップ始端終端位置確認処理部４１は、例えば、ステップＳ２において取得した当該データの始端ブロック位置とサイズ、一般的な圧縮率、及び、ブロックサイズ等から当該データの終端ブロック位置を推定してもよい。そして、処理がステップＳ７に進む。
【０２００】
一方、ステップＳ６において、読出し対象となるデータの終端ブロック位置を求める。例えば、統括処理部２５は、ライブラリ装置１にアクセスして当該データのメタデータを参照する。そして、メタデータに終端ブロック位置が格納されている場合には、この格納されている終端ブロック位置を、当該データの終端ブロック位置として求める。
【０２０１】
また、メタデータに終端ブロック位置が格納されていない場合には、例えば、統括処理部２５は、ラップ始端終端位置確認処理部４１から当該データの終端ブロック位置の推定値を取得する。具体的に、ラップ始端終端位置確認処理部４１は、例えば、ステップＳ２において取得した当該データの始端ブロック位置に、ステップＳ２において取得した当該データのサイズをブロック数に変換した値を加算して、当該データの終端ブロック位置を求めてもよい。そして、処理がステップＳ７に進む。
【０２０２】
続くステップＳ７において、ＢＯＴ距離測定処理部４３は、例えば、上記式（１−１）又は（１−２）によりＢＯＴ距離を算出する。
【０２０３】
そして、上記ステップＳ１〜Ｓ７に示す処理を、処理対象要求Ｑに含まれる各読出し要求の数だけ繰り返す。そして、ステップＹ１〜Ｙ５に移行する。
【０２０４】
ステップＹ１において、処理対象要求Ｑに含まれる複数の読出し要求を、媒体４毎に分割する。そして、上述の図２０のステップＹ２〜Ｙ５に示した処理を経ることにより、ホストコンピュータ１００は、複数の読出し要求の処理順番を入れ替えて処理時間Ｔの総和を取得して、最短の近似値としての処理時間で処理を完了できる処理順番を決定する。
【０２０５】
続くステップＳ８において、初期状態把握処理部４５は、ドライブ１２が空であるか否かを判定する。ドライブ１２が空であると判定した場合（ステップＳ８でＹｅｓ）、ステップＳ９に移行する。一方、ドライブ１２が空でないと判定した場合（ステップＳ８でＮｏ）、処理がステップＳ１０に移行する。
【０２０６】
ステップＳ９において、例えば、要求実行時間短化処理部２３は、公知の並べ替え手法等を用いて、複数の媒体４を処理する順番（媒体４の処理順番）を決定する。そして、処理がステップＳ１１に進む。
【０２０７】
ステップＳ１０では、ドライブ１２に格納されている媒体４を優先して処理するような媒体４の処理順番を決定する。ここで、例えば、要求実行時間短化処理部２３は、公知の並べ替え手法等を用いて媒体４の処理順番を決定するが、ドライブ１２に格納されている媒体４が優先して処理されるように媒体４の処理順番を変更する。そして、処理がステップＳ１１に進む。
【０２０８】
続くステップＳ１１において、要求処理部２２は、ステップＹ１〜Ｙ５を経て決定した読出し要求の処理順番と、ステップＳ１０において決定した媒体４の処理順番とに従って、読出し要求を実行待ちキュー３１に格納する。すなわち、要求処理部２２は、決定した処理順番に従って、読出し要求を実行待ちキュー３１に並べ替えて格納する。そして、処理がステップＳ１に戻る。
【０２０９】
次に、メタデータの設定処理について、図２３のフローチャート（ステップＵ１〜Ｕ４）を用いて説明する。本処理は、媒体４に対してデータの書込みを行なった後に実施される。
【０２１０】
また、本変形例では、媒体４に対して所定のデータの書込みが行なわれた際に、当該データのファイルパスが、当該ライブラリ装置１の図示しない記憶部や外部のＨＤＤ（Hard Disk Drive）等における、媒体４毎に付与された領域に格納されるものとする。
【０２１１】
ステップＵ１において、例えば、ホストコンピュータ１００が、当該ホストコンピュータ１００のアプリケーションや管理者から書込み要求を受信すると、ライブラリ装置１側では、媒体４に対して所定のデータが書込まれる。
【０２１２】
続くステップＵ２では、例えば、統括処理部２５は、ステップＵ１にてデータが書込まれた媒体４に紐付けられた領域から、当該媒体４において、ステップＵ１における書込みの直前に書込まれたデータ（直前の書込みデータ）のファイルパスを取得する。この直前の書込みデータとは、ステップＵ１にて行なわれた書込みの直前の時間に書込まれたデータ、すなわち、媒体４上で、ステップＵ１にて書込まれたデータの直前の位置に書込まれたデータである。
【０２１３】
続くステップＵ３では、ステップＵ２において取得したファイルパスの示すデータ、すなわち、直前の書込みデータの終端ブロック位置を求め、当該直前の書込みデータのメタデータ（後述）に格納する。ここでは、例えば、終端ブロック位置推定処理部４２が、ステップＵ１において書込まれたデータの始端ブロック位置から１を減算することにより、直前の書込みデータの終端ブロック位置を求めてもよい。
【０２１４】
このメタデータとは、書込み対象データに関する終端ブロック位置等の属性を、書込み対象データ毎に格納する情報（拡張属性）である。このメタデータは、例えば、ライブラリ装置１の図示しない記憶部、外部のＨＤＤや媒体等に格納され、ライブラリ装置１の起動時に当該ライブラリ装置１のメモリ（図示せず）等に展開されてもよい。また、このメタデータは、一時的にホストコンピュータ１００の記憶部１０３等にダウンロードされてもよい。また、このメタデータは、例えば、ホストコンピュータ１００のアプリケーションや管理者から参照可能であってもよい。
【０２１５】
続くステップＵ４では、例えば、統括処理部２５は、ステップＵ１において書込まれたデータのファイルパスを、当該ライブラリ装置１の図示しない記憶部や外部のＨＤＤ等における媒体４毎に付与された領域に格納する。
【０２１６】
このようにステップＵ１〜Ｕ４を経て、媒体４に新たにデータが書込まれる際に、当該媒体４における直前の書込みデータに関する終端ブロック位置が、この直前の書込みデータのメタデータに書込まれる。したがって、媒体４に書込まれた最新（最後尾）のデータを除き、既に当該媒体４に書込まれているデータについては、これらの各メタデータから当該データの終端ブロック位置を取得できる。
【０２１７】
なお、本変形例では、最短の近似値としての処理順番に従って、媒体４毎に複数の読出し要求を処理する手法を説明したが、第一の変形例と同様に、処理対象は読出し要求に限られない。また、処理対象となる要求は、書込み要求や、読出し要求と書込み要求とが混在するものであってもよい。
【０２１８】
〔４〕効果
このように、本実施形態、第一の変形例、及び、第二の変形例に係る、媒体４をロードしてアクセスを行なうライブラリ装置１では、受信した複数の読出し要求を所定の処理順番にしたがって処理した場合の、各読出し要求の処理に要する処理時間Ｔを予測する。次に、所定の処理順番にしたがって複数の読出し要求を処理した場合に要する処理時間、すなわち、Ｔの総和を算出する。このような予測を、設定可能な処理順番の数だけ繰り返し、複数の媒体４に対して複数の読出し要求を処理する際に最短、又は、最短の近似値としての処理時間となる処理順番を決定することにより、複数の読出し要求の処理に要する時間を短縮することができる。
【０２１９】
また、本実施形態及び第一の変形例のライブラリ装置１においては、磁気テープ６０上のアクセス対象となる複数のデータの位置に基づき処理時間を算出することで、磁気テープ６０上の各データの配置やデータの偏りを反映させた処理時間を算出することができる。さらに、本実施形態の予測プログラムは、本ライブラリ装置１が備えるヘッド，ドライブ１２，及びロボット等のハードウェア資源の状態や性能を考慮して処理時間を算出することで、より正確な処理時間を算出することが可能となる。
【０２２０】
また、第二の変形例のライブラリ装置１においては、最短の近似値としての処理時間となる処理順番を決定することにより、処理順番のすべてのパターンから最短となる処理順番を求める場合に比して、処理順番の決定に要する計算量を抑えることができる。したがって、第二の変形例のライブラリ装置１においては、複数のデータを読出す処理に要する時間をより短縮することができる。
【０２２１】
また、媒体４やドライブ１２の数の増加に起因してシステム規模が大きくなると、処理順番のパターン数は増大するため、処理順番のすべてのパターンから最短の処理順番を厳密に求めるためには、計算処理能力の高いプロセッサ等が必要となる場合がある。このような場合においても、第二の変形例のライブラリ装置１では、２−ｏｐｔ法等の公知の局所探索法を使用して最短の近似値を求め、略最短となる処理順番を求める。これにより、計算処理能力の高いプロセッサ等を用いることなく、厳密な最短の処理順番に近いものを得ることができる。
【０２２２】
〔５〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０２２３】
上述した一実施形態、及び、第二の変形例では、ライブラリ装置１において、読出し要求を受理した場合に、当該読出し要求の処理順番を決定するものとしたが、これに限られない。また、処理対象とする要求は読出し要求に限定されず、書込み要求を受信してその処理順番を決定するものとしてもよい。
【０２２４】
また、上述した一実施形態、及び、第二の変形例では、記憶部１０３に、読出し要求キュー３０，実行待ちキュー３１，ロボット使用状況格納テーブル３２，ラップ始端終端位置情報３３を格納する構成としたが、これに限られない。また、これらの情報は、ライブラリ装置１の図示しない記憶部に格納してもよい。その場合、ホストコンピュータ１００は、ライブラリコントローラ２を介し、ライブラリ装置１側からネットワーク経由で必要な情報を取得するものとする。また、上述した一実施形態、及び、第二の変形例では、ホストコンピュータ１００が自主的に情報を記憶部１０３に格納するものとしたが、ライブラリ装置１側からネットワーク経由で記憶部１０３や図示しないメモリに書込んでもよい。
【０２２５】
また、上述した一実施形態、及び、第二の変形例では、図２に示すように、ホストコンピュータ１００は、ライブラリコントローラ２を介して、ライブラリ装置１のドライブ１２を制御するものとしたが、これに限られない。また、システムの構成はこれに限定されるものではなく、適宜変更して実施できる。
【０２２６】
〔６〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０２２７】
（付記１）
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定する処理順番設定部と、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測するサブプロセス処理時間予測部と、
前記サブプロセス処理時間予測部で予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測するアクセス要求処理時間予測部と、
前記処理順番設定部が設定した前記複数の処理順番の各々について、前記一連の処理に要する処理時間を前記アクセス要求処理時間予測部から取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する処理順番決定部と、
を備える、
ことを特徴とする、情報処理装置。
【０２２８】
（付記２）
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体上における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも１つである、
ことを特徴とする、付記１記載の情報処理装置。
【０２２９】
（付記３）
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも１つである
ことを特徴とする、付記１又は付記２記載の情報処理装置。
【０２３０】
（付記４）
前記処理順番決定部は、前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記１〜付記３のいずれか一項に記載の情報処理装置。
【０２３１】
（付記５）
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、
ことを特徴とする、予測方法。
【０２３２】
（付記６）
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも１つである、
ことを特徴とする、付記５記載の予測方法。
【０２３３】
（付記７）
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも１つである、
ことを特徴とする、付記５又は付記６記載の予測方法。
【０２３４】
（付記８）
前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記５〜付記７のいずれか一項に記載の予測方法。
【０２３５】
（付記９）
１つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、処理をコンピュータに実行させる、
ことを特徴とする予測プログラム。
【０２３６】
（付記１０）
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体上における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも１つである、
ことを特徴とする、付記９記載の予測プログラム。
【０２３７】
（付記１１）
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも１つである、
ことを特徴とする、付記９又は付記１０記載の予測プログラム。
【０２３８】
（付記１２）
前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記９〜付記１１のいずれか一項に記載の予測プログラム。
【符号の説明】
【０２３９】
１    ライブラリ装置
２    ライブラリコントローラ
４    媒体（記憶媒体）
１０ａ    収納棚
１０ｂ    収納棚
１１ａ    ロボット
１１ｂ    ロボット
１２    ドライブ
１４    セル
２１    要求受信処理部
２２    要求処理部
２３    要求実行時間短化処理部（処理順番設定部，処理順番決定部）
２４    ロボット競合見積もり修正処理部
２５    統括処理部
２６    予測完了時刻表示処理部
２７    要求キュー完了時間予測処理部（サブプロセス処理時間予測部，アクセス要求処理時間予測部）
２８    異常監視処理部
２９ａ    ドライブ通信プログラム
２９ｂ    ライブラリ情報取得部
３０    読出し要求キュー
３１    実行待ちキュー
３２    ロボット使用状況格納テーブル
３３    ラップ始端終端位置情報
４１    ラップ始端終端位置確認処理部
４２    終端ブロック位置推定処理部
４３    ＢＯＴ距離測定処理部
４４    シーク時間予測処理部
４５    初期状態把握処理部
４６    ロード時間予測処理部
４７    アンロード時間予測処理部
４８    ロボット動作時間予測処理部
４９    データ読出し時間予測処理部
６０    磁気テープ
６１    ラップ
１００    ホストコンピュータ（情報処理装置）
１０１    ＣＰＵ
１０２    ＲＡＭ
１０３    記憶部
１０５    予測機能群
２０１ａ    ロボット制御ボード
２０１ｂ    ロボット制御ボード
２２０    ピッカー部
２２０１    媒体固定ツメ
【図１】
2019121342.tif 000003
【図２】
2019121342.tif 000004
【図３】
2019121342.tif 000005
【図４】
2019121342.tif 000006
【図５】
2019121342.tif 000007
【図６】
2019121342.tif 000008
【図７】
2019121342.tif 000009
【図８】
2019121342.tif 000010
【図９】
2019121342.tif 000011
【図１０】
2019121342.tif 000012
【図１１】
2019121342.tif 000013
【図１２】
2019121342.tif 000014
【図１３】
2019121342.tif 000015
【図１４】
2019121342.tif 000016
【図１５】
2019121342.tif 000017
【図１６】
2019121342.tif 000018
【図１７】
2019121342.tif 000019
【図１８】
2019121342.tif 000020
【図１９】
2019121342.tif 000021
【図２０】
2019121342.tif 000022
【図２１】
2019121342.tif 000023
【図２２】
2019121342.tif 000024
【図２３】
2019121342.tif 000025