(57)【要約】【課題】Ｉ／Ｏパターンに適応的に動作してＩ／Ｏ処理効率を向上させるためのストレージコントローラの動作方法を提供する【解決手段】本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、前記選択された同時アクセスグループに含まれたデータをプリフェッチ（ｐｒｅ−ｆｅｔｃｈ）バッファに格納するデータ配置部とを有する。【選択図】図３
2015219926.tif 000002
【特許請求の範囲】
【請求項１】
特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、
前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、
前記選択された同時アクセスグループに含まれたデータをプリフェッチ（ｐｒｅ−ｆｅｔｃｈ）バッファに格納するデータ配置部とを有することを特徴とするストレージコントローラ。
【請求項２】
前記同時アクセスグループの複数のデータは予め設定された時間窓に含まれ、前記時間窓で共にアクセスされることを特徴とする請求項１に記載のストレージコントローラ。
【請求項３】
前記データ配置部は前記時間窓で前記読込み要求されたデータと共にアクセスされるデータを前記プリフェッチバッファに格納することを特徴とする請求項２に記載のストレージコントローラ。
【請求項４】
前記同時アクセスグループマッチング部は前記生成された同時アクセスグループを示すビットベクトルを利用して前記読込み要求されたデータとマッチングする同時アクセスグループを選択することを特徴とする請求項１に記載のストレージコントローラ。
【請求項５】
前記読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、
前記同時アクセスグループマッチング部はその中から単位時間当りの発生頻度が最も高い同時アクセスグループを選択することを特徴とする請求項１に記載のストレージコントローラ。
【請求項６】
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、
前記同時アクセスグループマッチング部は前記プリフェッチバッファの状態に基づいて一つの同時アクセスグループを選択することを特徴とする請求項５に記載のストレージコントローラ。
【請求項７】
前記同時アクセスグループマッチング部は、
前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合はその長さが最も長い同時アクセスグループを選択し、
前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合はその長さが最も短い同時アクセスグループを選択することを特徴とする請求項６に記載のストレージコントローラ。
【請求項８】
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、
前記同時アクセスグループマッチング部は二つ以上の同時アクセスグループを選択することを特徴とする請求項５に記載のストレージコントローラ。
【請求項９】
外部に位置するストレージアレイに接続され、
前記データ配置部は前記ストレージアレイに格納された前記選択された同時アクセスグループに含まれたデータを前記プリフェッチバッファに伝送することを特徴とする請求項１に記載のストレージコントローラ。
【請求項１０】
前記プリフェッチバッファのＩ／Ｏレートは前記ストレージアレイのＩ／Ｏレートより高いことを特徴とする請求項９に記載のストレージコントローラ。
【請求項１１】
受信されたＩ／Ｏ要求の構文解析処理を行い、前記構文解析処理を行ったＩ／Ｏ要求を前記同時アクセスパターンマイニング部または前記同時アクセスグループマッチング部に提供するＩ／Ｏ要求構文解析部をさらに有することを特徴とする請求項１に記載のストレージコントローラ。
【請求項１２】
前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部に提供する同時アクセスグループデータベースをさらに有することを特徴とする請求項１に記載のストレージコントローラ。
【請求項１３】
前記同時アクセスグループデータベースに格納される同時アクセスグループに対するレコードは、
前記同時アクセスグループのＩＤ、発生頻度、長さ及び前記同時アクセスグループに含まれるデータのアドレスリストを含むことを特徴とする請求項１２に記載のストレージコントローラ。
【請求項１４】
前記同時アクセスパターンは、
前記特定の時間区間の中の第１時間区間で共にアクセスされるデータの第１同時アクセスサブパターンと、
前記特定の時間区間の中の第２時間区間で共にアクセスされるデータの第２同時アクセスサブパターンとを含み、
前記第１同時アクセスサブパターンと前記第２同時アクセスサブパターンは時間間隔をおいてアクセスされることを特徴とする請求項１に記載のストレージコントローラ。
【請求項１５】
前記第１同時アクセスサブパターンに従うデータに対する読込み要求が発生した場合、前記データ配置部は前記第２同時アクセスサブパターンに従うデータを前記プリフェッチバッファに格納することを特徴とする請求項１４に記載のストレージコントローラ。
【請求項１６】
前記データ配置部は前記第２同時アクセスサブパターンに従うデータを前記時間間隔の間に前記プリフェッチバッファに格納することを特徴とする請求項１５に記載のストレージコントローラ。
【請求項１７】
特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、
前記生成された同時アクセスグループ数を減少させるための最適化を行う同時アクセスグループ最適化部とを有することを特徴とするストレージコントローラ。
【請求項１８】
前記同時アクセスグループ最適化部は、
同時にアクセスされる同時アクセスグループをクラスタリングするクラスタリング部と、
前記クラスタリングされた同時アクセスグループを一つの同時アクセスグループに統合する同時アクセスグループ統合部とを含むことを特徴とする請求項１７に記載のストレージコントローラ。
【請求項１９】
前記クラスタリング部は前記生成された同時アクセスグループに対する時間的発生パターン（ｔｅｍｐｏｒａｌ  ｏｃｃｕｒｒｅｎｃｅ  ｐａｔｔｅｒｎ）を示すベクトルを利用して同じ前記時間区間にアクセスされる同時アクセスグループをクラスタリングすることを特徴とする請求項１８に記載のストレージコントローラ。
【請求項２０】
前記同時同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納する同時アクセスグループデータベースをさらに有し、
前記同時アクセスグループ最適化部は前記同時アクセスグループデータベースに格納された同時アクセスグループに対して最適化を行うことを特徴とする請求項１７に記載のストレージコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージコントローラに関し、特にＩ／Ｏパターンに適応的に動作してＩ／Ｏ処理効率を向上させるためのストレージコントローラに関する。
【背景技術】
【０００２】
データＩ／Ｏの際Ｉ／Ｏ時間を短縮し、Ｉ／Ｏ性能を向上させるためにプリフェッチ（ｐｒｅ−ｆｅｔｃｈ）技法が利用される。例えば、Ｉ／Ｏ作業において特定データをアクセスする場合、前記データに隣接したデータをプリフェッチしてメモリ装置に予めロードする。そうすると、次のＩ／Ｏ作業で前記データに隣接したデータをアクセスするとき、前記隣接したデータをストレージからフェッチする必要なく、プリフェッチされてメモリ装置にロードされているデータを読込みする。しかし、このような方式は、複数のＩ／Ｏ作業を行う場合、隣接したデータを順次に処理しないランダムＩ／Ｏでは限界がある。ランダムＩ／Ｏが頻繁に発生する場合はＩ／Ｏストリームの特性を考慮してプリフェッチ技法を利用する必要がある。
【０００３】
特許公開第２００８−２６９０１５号公報は記憶システム及びその制御方法について開示している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は上記従来のＩ／Ｏ作業における問題点に鑑みてなされたものであって、本発明が解決しようとする課題は、Ｉ／Ｏパターンに適応的に動作してＩ／Ｏ処理効率を向上させるためのストレージコントローラを提供することにある。
【０００５】
本発明が解決しようとする他の課題は、Ｉ／Ｏパターンに適応的に動作してＩ／Ｏ処理効率を向上させるためのストレージコントローラの動作方法を提供することにある。
【０００６】
本発明が解決しようとする課題は、以上で言及した課題に制限されず、言及されていないまた他の課題は次の記載から通常の知識を有する者に明確に理解できるであろう。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、前記選択された同時アクセスグループに含まれたデータをプリフェッチ（ｐｒｅ−ｆｅｔｃｈ）バッファに格納するデータ配置部とを有することを特徴とする。
【０００８】
前記同時アクセスグループの複数のデータは予め設定された時間窓に含まれ、前記時間窓で共にアクセスされることが好ましい。
前記データ配置部は前記時間窓で前記読込み要求されたデータと共にアクセスされるデータを前記プリフェッチバッファに格納することが好ましい。
前記同時アクセスグループマッチング部は前記生成された同時アクセスグループを示すビットベクトルを利用して前記読込み要求されたデータとマッチングする同時アクセスグループを選択することが好ましい。
【０００９】
前記読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部はその中から単位時間当りの発生頻度が最も高い同時アクセスグループを選択することが好ましい。
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部は前記プリフェッチバッファの状態に基づいて一つの同時アクセスグループを選択することが好ましい。
前記同時アクセスグループマッチング部は、前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合はその長さが最も長い同時アクセスグループを選択し、前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合はその長さが最も短い同時アクセスグループを選択することが好ましい。
【００１０】
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部は二つ以上の同時アクセスグループを選択することが好ましい。
外部に位置するストレージアレイに接続され、前記データ配置部は前記ストレージアレイに格納された前記選択された同時アクセスグループに含まれたデータを前記プリフェッチバッファに伝送することが好ましい。
前記プリフェッチバッファのＩ／Ｏレートは前記ストレージアレイのＩ／Ｏレートより高いことが好ましい。
【００１１】
受信されたＩ／Ｏ要求の構文解析処理を行い、前記構文解析処理を行ったＩ／Ｏ要求を前記同時アクセスパターンマイニング部または前記同時アクセスグループマッチング部に提供するＩ／Ｏ要求構文解析部をさらに有することが好ましい。
前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部に提供する同時アクセスグループデータベースをさらに有することが好ましい。
前記同時アクセスグループデータベースに格納される同時アクセスグループに対するレコードは、前記同時アクセスグループのＩＤ、発生頻度、長さ及び前記同時アクセスグループに含まれるデータのアドレスリストを含むことが好ましい。
【００１２】
前記同時アクセスパターンは、前記特定の時間区間の中の第１時間区間で共にアクセスされるデータの第１同時アクセスサブパターンと、前記特定の時間区間の中の第２時間区間で共にアクセスされるデータの第２同時アクセスサブパターンとを含み、前記第１同時アクセスサブパターンと前記第２同時アクセスサブパターンは時間間隔をおいてアクセスされることが好ましい。
前記第１同時アクセスサブパターンに従うデータに対する読込み要求が発生した場合、前記データ配置部は前記第２同時アクセスサブパターンに従うデータを前記プリフェッチバッファに格納することが好ましい。
前記データ配置部は前記第２同時アクセスサブパターンに従うデータを前記時間間隔の間に前記プリフェッチバッファに格納することが好ましい。
【００１３】
上記目的を達成するためになされた本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループ数を減少させるための最適化を行う同時アクセスグループ最適化部とを有することを特徴とする。
【００１４】
前記同時アクセスグループ最適化部は、同時にアクセスされる同時アクセスグループをクラスタリングするクラスタリング部と、前記クラスタリングされた同時アクセスグループを一つの同時アクセスグループに統合する同時アクセスグループ統合部とを含むことが好ましい。
前記クラスタリング部は前記生成された同時アクセスグループに対する時間的発生パターン（ｔｅｍｐｏｒａｌ  ｏｃｃｕｒｒｅｎｃｅ  ｐａｔｔｅｒｎ）を示すベクトルを利用して同じ前記時間区間にアクセスされる同時アクセスグループをクラスタリングすることが好ましい。
前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納する同時アクセスグループデータベースをさらに有し、前記同時アクセスグループ最適化部は前記同時アクセスグループデータベースに格納された同時アクセスグループに対して最適化を行うことが好ましい。
【発明の効果】
【００１５】
本発明に係るストレージコントローラによれば、Ｉ／Ｏ要求ストリームの時間的流れに対する傾向性を分析して得られた同時アクセスグループ情報を利用してプリフェッチを行うため、順次Ｉ／ＯだけでなくランダムＩ／Ｏでも効果的なプリフェッチを行うことができ、窮極的にはＩ／Ｏ効率の極大化が得られる。また同時アクセスグループ情報をクラスタリングすることによって同時アクセスグループデータベース及びメモリ空間を節約し、Ｉ／Ｏ命令の処理費用を節減することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によるストレージシステムを説明するための概略ブロック図である。
【図２】本発明の一実施形態によるストレージコントローラを説明するための概略ブロック図である。
【図３】図２の同時アクセス分析部を説明するための概略ブロック図である。
【図４】データの同時アクセスパターンを検出する実施形態を説明するための概略図である。
【図５】データの同時アクセスパターンを検出する実施形態を説明するための概略図である。
【図６】図４に示す実施形態でストレージコントローラの動作を説明するための概略図である。
【図７】データの同時アクセスパターンを検出する他の実施形態を説明するための概略図である。
【図８】図７に示す実施形態でストレージコントローラの動作を説明するための概略図である。
【図９】本発明の一実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
【図１０】本発明の一実施形態によるストレージコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。
【図１１】本発明の一実施形態によるストレージコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。
【図１２】本発明の他の実施形態によるストレージコントローラの同時アクセス分析部を説明するための概略ブロック図である。
【図１３】図１２の同時アクセスグループ最適化部を説明するための概略ブロック図である。
【図１４】図１２の同時アクセスグループ最適化部の動作を説明するための概略図である。
【図１５】図１２の同時アクセスグループ最適化部の動作を説明するための概略図である。
【図１６】本発明の他の実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
【図１７】ＴＯＰベクトルアレイを利用してクラスタリングを行うことを説明するための概略図である。
【図１８】本発明の一実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。
【図１９】本発明の他の実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。
【図２０】本発明のまた他の実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、本発明の一実施形態によるストレージシステムを説明するための概略図である。
【００１８】
図１を参照すると、本発明の一実施形態によるストレージシステム１は、コントローラ（１００  ＣＯＮＴＲＯＬＬＥＲ）、ストレージアレイ（２００  ＳＴＯＲＡＧＥ  ＡＲＲＡＹ）及びプリフェッチバッファ（３００  ＰＲＥ−ＦＥＴＣＨ  ＢＵＦＦＥＲ）を含み得る。
【００１９】
コントローラ１００はストレージシステム１の動作の全般を制御し、データＩ／Ｏ要求（Ｉ／Ｏ  ＲＥＱＵＥＳＴ）によりデータＩ／Ｏ作業を行う。例えば、コントローラ１００はホストシステムからデータを読込みするというＩ／Ｏ要求を受信し、ストレージシステム１に格納されたデータを読込みし、その結果または応答（ＲＥＳＰＯＮＳＥ）を前記ホストシステムに伝送する。また、コントローラ１００はホストシステムからデータを書出し（ｗｒｉｔｅ）するというＩ／Ｏ要求を受信し、前記ホストシステムから受信したデータをストレージシステム１に格納する。
【００２０】
ストレージアレイ２００はデータを格納する。本発明のいくつかの実施形態でストレージアレイ２００は一つ以上のストレージ装置を含み得る。例えば、ストレージアレイ２００はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のうち少なくとも一つを含み得る。前記一つ以上のストレージ装置は互いに電気的に接続してアレイを構成する。
【００２１】
プリフェッチバッファ３００はコントローラ１００とストレージアレイ２００との間のバッファとして動作する。具体的には、プリフェッチバッファ３００はコントローラ１００を介して入力される各種命令または変数を格納する。また、ストレージアレイ２００に入出力されるデータ、各種パラメータ及び変数を格納する。
本発明のいくつかの実施形態で、コントローラ１００は読込み要求されたデータを読込みするため、先にプリフェッチバッファ３００を検索する。仮に、読込み要求されたデータがプリフェッチバッファ３００に存在する場合、コントローラ１００はプリフェッチバッファ３００に格納されたデータを読込みし、前記読込み要求に対する応答を送信する。これと異なり、読込み要求されたデータがプリフェッチバッファ３００に存在しない場合、コントローラ１００はストレージアレイ２００を検索し、ストレージアレイ２００に格納されたデータを読込みし、前記読込み要求に対する応答を送信する。
本発明のいくつかの実施形態で、プリフェッチバッファ３００のＩ／Ｏレートはストレージアレイ２００のＩ／Ｏレートより高くてもよい。また、本発明のいくつかの実施形態で、プリフェッチバッファ３００はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＤＲ  ＳＤＲＡＭ  （Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）をはじめとする揮発性メモリまたはフラッシュメモリをはじめとする不揮発性メモリを含み得る。
【００２２】
図２は本発明の一実施形態によるコントローラを説明するための概略図である。
【００２３】
図２を参照すると、本発明の一実施形態によるコントローラ１００はプロセッサ（１１０  ＰＲＯＣＥＳＳＯＲ）、同時アクセス分析部（１２０  ＣＯ−ＡＣＣＥＳＳ  ＡＮＡＬＹＳＩＳ  ＵＮＩＴ）、Ｉ／Ｏインターフェース（１３０  Ｉ／Ｏ  ＩＮＴＥＲＦＡＣＥ）、ストレージインターフェース（１４０  ＳＴＯＲＡＧＥ  ＩＮＴＥＲＦＡＣＥ）及びバッファインターフェース（１５０  ＢＵＦＦＥＲ  ＩＮＴＥＲＦＡＣＥ）を含み得る。
【００２４】
プロセッサ１１０は、回路、ロジック、コードまたはこれらの組み合わせによって実現することができ、コントローラ１００を含むストレージシステム１の動作の全般を制御する。ストレージシステム１に電源が印加されると、プロセッサ１１０はストレージシステム１の動作のためのソフトウェア、例えば、ファームウェアを駆動させることによってストレージシステム１の動作の全般を制御する。また、プロセッサ１１０はＩ／Ｏインターフェース１３０を介して受信する命令を解釈し、解釈結果に応じてストレージアレイ２００の動作の全般を制御する。また、プロセッサ１１０はアドレスマッピングテーブルを使用してデータの論理アドレスを物理的アドレスにマッピングし得る。
【００２５】
同時アクセス分析部１２０は特定の時間区間で共にアクセスされるデータの同時アクセス（ｃｏ−ａｃｃｅｓｓ）パターンを分析する。また、同時アクセス分析部１２０は特定の時間区間（例えば、１秒）で共にアクセスされるデータを検出し、これらのデータを含む同時アクセスグループを生成する。仮に前記同時アクセスグループのうち一つのデータに対して読込み要求が発生した場合、同時アクセス分析部１２０は前記読込み要求が発生したデータと共に同時アクセスグループを成す他のデータをプリフェッチバッファ３００に格納する。すなわち、同時アクセス分析部１２０は前記読込み要求が発生したデータと共に同時アクセスグループを成す他のデータに対しても読込み要求が発生すると予測してプリフェッチ作業を行う。
本発明のいくつかの実施形態で、同時アクセス分析部１２０はハードウェアだけでなくソフトウェアでも実現される。例えば、同時アクセス分析部１２０はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）などを含むハードウェアで実現され得る。一方、同時アクセス分析部１２０はコントローラ１００上で駆動されるファームウェアまたはホストシステムで駆動されるユーザアプリケーションをはじめとするソフトウェアによって実現することができる。
【００２６】
Ｉ／Ｏインターフェース１３０は、コントローラ１００を含むストレージシステム１とホストシステムとの間のインターフェースを行う。特に、Ｉ／Ｏインターフェースはホストシステムから読込み要求を受信し、プロセッサ１１０に提供し、前記読込み要求に対する応答をホストシステムに伝送し得る。本発明のいくつかの実施形態で、Ｉ／Ｏインターフェース１３０は予め決定されたプロトコルによってホストシステムとデータを送受信し得る。例えば、予め決定されたプロトコルはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＰＣＩ  ｅｘｐｒｅｓｓ、ＡＴＡ、ＰＡＴＡ（Ｐａｒａｌｌｅｌ  ＡＴＡ）、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）などであり得るが、これに限定されない。
【００２７】
ストレージインターフェース１４０は、コントローラ１００とストレージアレイ２００との間にデータを送受信する。ストレージインターフェース１４０を介してプロセッサ１１０が要求する命令がストレージアレイ２００に提供され、またコントローラ１００からストレージアレイ２００にデータが伝送され得る。また、ストレージアレイ２００から出力されるデータはストレージインターフェース１４０を介してコントローラ１００に提供される。
【００２８】
バッファインターフェース１５０は、コントローラ１００とプリフェッチバッファ３００との間にデータを送受信する。バッファインターフェース１５０を介してプロセッサ１１０が要求する命令がプリフェッチバッファ３００に提供され得、またコントローラ１００からプリフェッチバッファ３００にデータが伝送され得る。また、プリフェッチバッファ３００から出力されるデータはバッファインターフェース１５０を介してコントローラ１００に提供される。
【００２９】
本発明のいくつかの実施形態で、前述したプロセッサ１１０、同時アクセス分析部１２０、Ｉ／Ｏインターフェース１３０、ストレージインターフェース１４０、及びバッファインターフェース１５０はシステムバスを介して電気的に接続され得る。
【００３０】
図３は図２の同時アクセス分析部を説明するための概略図である。
【００３１】
図３を参照すると、図２の同時アクセス分析部１２０はＩ／Ｏ要求構文解析部（１２１  Ｉ／Ｏ  ＲＥＱＵＥＳＴ  ＰＡＲＳＩＮＧ  ＵＮＩＴ）同時アクセスパターンマイニング部（１２３  ＣＯ−ＡＣＣＥＳＳ  ＰＡＴＴＥＲＮ  ＭＩＮＩＮＧ  ＵＮＩＴ）、同時アクセスグループマッチング部（１２５  ＣＯ−ＡＣＣＥＳＳ  ＰＡＴＴＥＲＮ  ＭＡＴＣＨＩＮＧ  ＵＮＩＴ）、同時アクセスグループデータベース（１２７  ＣＯ−ＡＣＣＥＳＳ  ＧＲＯＵＰ  ＤＡＴＡＢＡＳＥ）、及びデータ配置部（１２８  ＤＡＴＡ  ＰＬＡＣＥＭＥＮＴ  ＵＮＩＴ）を含み得る。
【００３２】
Ｉ／Ｏ要求構文解析部１２１はＩ／Ｏインターフェース１３０を介して受信されたＩ／Ｏ要求の構文解析処理を行い、構文解析処理を行ったＩ／Ｏ要求を同時アクセスパターンマイニング部１２３または同時アクセスグループマッチング部１２５に提供する。例えば、Ｉ／Ｏ要求構文解析部１２１はＩ／Ｏインターフェース１３０を介してＩ／Ｏ要求のストリームを受信し、Ｉ／Ｏ要求構文解析部１２１は前記Ｉ／Ｏ要求のストリームに含まれたそれぞれのＩ／Ｏ要求を識別し得る。
本発明のいくつかの実施形態で、Ｉ／Ｏ要求構文解析部１２１は前記識別されたＩ／Ｏ要求と共に、前記識別されたＩ／Ｏ要求が発生した時刻または前記識別されたＩ／Ｏ要求と関連するデータのアドレスに関する情報を同時アクセスパターンマイニング部１２３に提供し、同時アクセスパターンマイニング部１２３が同時アクセスパターンを検出するようにし得る。一方、本発明のいくつかの実施形態で、Ｉ／Ｏ要求構文解析部１２１は前記識別されたＩ／Ｏ要求を同時アクセスグループマッチング部１２５に提供し、同時アクセスグループマッチング部１２５が前記識別されたＩ／Ｏ要求と関連するデータと同時アクセスグループをマッチングするようにし得る。
【００３３】
同時アクセスパターンマイニング部１２３は特定の時間区間で共にアクセスされるデータの同時アクセスパターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する。具体的には、同時アクセスパターンマイニング部１２３は特定の時間区間（例えば、１秒）を単位とする時間の流れに応じて繰り返して共にアクセスされるデータを検出し、それらを同時アクセスパターンとして認識する。その後、同時アクセスパターンマイニング部１２３は検出した同時アクセスパターンを形成する複数のデータを含む同時アクセスグループを生成する。
本発明のいくつかの実施形態で、時間の流れに応じて様々なＩ／Ｏ要求が発生するＩ／Ｏ要求ストリームには予め設定された時間窓が定義され、同時アクセスグループの複数のデータは前記時間窓に含まれて共にアクセスされ得る。同時アクセスパターンと同時アクセスグループを決定する過程についての具体的な説明は図４、図５及び図７を参照して後述する。
【００３４】
一方、本発明のいくつかの実施形態で、同時アクセスパターンマイニング部１２３は同時アクセスグループを生成するために頻出アイテムマイニング（Ｆｒｅｑｕｅｎｔ  Ｉｔｅｍｓｅｔ  Ｍｉｎｉｎｇ）アルゴリズムを利用する。例えば、同時アクセスパターンマイニング部１２３は頻出アイテムマイニングアルゴリズムとしてｅｌｃａｔ、ａｐｒｉｏｒｉ、ｆｐ−ｇｒｏｗｔｈアルゴリズムを利用し得る。
【００３５】
同時アクセスグループマッチング部１２５は同時アクセスパターンマイニング部１２３により生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択し得る。すなわち、同時アクセスグループマッチング部１２５はＩ／Ｏ要求構文解析部１２１から受信されたＩ／Ｏ要求（例えば、読込み要求）に関連するデータと、同時アクセスパターンマイニング部１２３により生成された同時アクセスグループをマッチングする。
本発明のいくつかの実施形態で、同時アクセスグループデータベース１２７は同時アクセスパターンマイニング部１２３により生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部１２５に提供し得る。
【００３６】
データ配置部１２８は同時アクセスグループマッチング部１２５によって選択された同時アクセスグループに含まれたデータ、すなわち、前記時間窓で読込み要求されたデータと共にアクセスされるデータをストレージアレイ２００から読込みしてプリフェッチバッファ３００に格納する。
【００３７】
図４及び図５はデータの同時アクセスパターンを検出する実施形態を説明するための概略図である。
【００３８】
図４を参照すると、図４に示すデータ（Ｄ１〜Ｄ８）はＩ／Ｏ要求（すなわち、読込み要求）に関連するデータを示すか、またはそのアドレスを示す。本実施形態でデータ読込み要求は時間の流れに応じて総１０回発生し、読込み要求に応じてアクセスされるデータには丸印を付けて示す。例えば、時間区間ｔ１でアクセスされるデータはデータ（Ｄ１、Ｄ２、Ｄ５、Ｄ８）であり、時間区間ｔ２でアクセスされるデータはデータ（Ｄ３、Ｄ６）であり、時間区間ｔ３でアクセスされるデータはデータ（Ｄ２、Ｄ７）である。時間区間（ｔ１〜ｔ１０）それぞれの長さは本発明の多様な実施形態によるコントローラ１００の運用により任意の長さに設定され得る。
【００３９】
同時アクセスパターンマイニング部１２３はそれぞれの時間区間（ｔ１〜ｔ１０）で共にアクセスされるデータの同時アクセスパターン４０１を検出する。例えば、時間区間ｔ１ではデータ（Ｄ１、Ｄ２、Ｄ５、Ｄ８）が共にアクセスされ、時間区間（ｔ４、ｔ８、ｔ１０）ではデータ（Ｄ１、Ｄ２、Ｄ３、Ｄ５、Ｄ６、Ｄ８）が共にアクセスされるため、同時アクセスパターンマイニング部１２３は同時アクセスパターン４０１として“｛Ｄ１、Ｄ２、Ｄ５、Ｄ８｝”を検出し得る。このように同時アクセスパターン４０１を検出することは、一つの同時アクセスパターン４０１を成すデータ（Ｄ１、Ｄ２、Ｄ５、Ｄ８）のうち何れか一つのデータ（例えば、Ｄ１）がアクセスされる場合に他のデータ（Ｄ２、Ｄ５、Ｄ８）もアクセスされる確率は非常に高いという仮定の下で成される。その後、同時アクセスパターンマイニング部１２３は同時アクセスパターン４０１に従う複数のデータを含む同時アクセスグループを生成する。本発明のいくつかの実施形態で、同時アクセスグループは同時アクセスパターン４０１に従う複数のデータのアドレスを含み得る。
【００４０】
同様に、図５を参照すると、時間区間（ｔ２、ｔ６）ではデータ（Ｄ３、Ｄ６）が共にアクセスされ、時間区間（ｔ４、ｔ８、ｔ１０）ではデータ（Ｄ１、Ｄ２、Ｄ３、Ｄ５、Ｄ６、Ｄ８）が共にアクセスされるため、同時アクセスパターンマイニング部１２３は同時アクセスパターン４０３として“｛Ｄ３、Ｄ６｝”を検出し得る。その後同時アクセスパターンマイニング部１２３は同時アクセスパターン４０３に従う複数のデータを含む同時アクセスグループを生成する。
【００４１】
図６は図４に示す実施形態でコントローラの動作を説明するための概略図である。
【００４２】
図６は図４の同時アクセスパターン４０１“｛Ｄ１、Ｄ２、Ｄ５、Ｄ８｝”に従う同時アクセスグループが生成された場合を示す。本実施形態で、コントローラ１００はデータＤ８に対する読込み要求を受信（ステップＳ５０１）した後、ストレージアレイ２００に前記読込み要求を送信（ステップＳ５０３）する。ストレージアレイ２００が前記読込み要求によりデータＤ８を読込みし、コントローラ１００に送信（ステップＳ５０５）すると、コントローラ１００は前記読込み要求に対する応答としてデータＤ８を例えば、ホストシステムに送信（ステップＳ５０７）する。
【００４３】
一方、同時アクセスグループマッチング部１２５は同時アクセスパターンマイニング部１２３により生成された同時アクセスグループのうち、データＤ８とマッチングする同時アクセスグループ、すなわち、同時アクセスパターン４０１“｛Ｄ１、Ｄ２、Ｄ５、Ｄ８｝”に従う同時アクセスグループを選択する。
本発明のいくつかの実施形態で、同時アクセスグループマッチング部１２５は同時アクセスグループデータベース１２７を検索してデータＤ８とマッチングする同時アクセスグループを選択することもできる。その後、データ配置部１２８は選択された同時アクセスグループに含まれたデータ（Ｄ１、Ｄ２、Ｄ５）をプリフェッチバッファに格納（ステップＳ５０９）する。本発明のいくつかの実施形態で、データ（Ｄ１、Ｄ２、Ｄ５）をプリフェッチバッファに格納（ステップＳ５０９）することは、前記読込み要求に対する応答としてデータＤ８を送信（ステップＳ５０７）した後に行われ得る。
【００４４】
その後、コントローラ１００がデータ（Ｄ１、Ｄ２、Ｄ５）に対する読込み要求を受信（ステップＳ５１１）すると、コントローラ１００は先にプリフェッチバッファ３００を検索（ステップＳ５１３）する。読込み要求されたデータ（Ｄ１、Ｄ２、Ｄ５）はプリフェッチバッファ３００に存在するため、コントローラ１００はプリフェッチバッファ３００に格納されたデータ（Ｄ１、Ｄ２、Ｄ５）を読込み（ステップＳ５１５）し、前記読込み要求に対する応答としてデータ（Ｄ１、Ｄ２、Ｄ５）を例えば、ホストシステムに送信（ステップＳ５１７）する。
【００４５】
図７は、データの同時アクセスパターンを検出する他の実施形態を説明するための概略図である。
【００４６】
図７を参照すると、同時アクセスパターンマイニング部１２３はそれぞれの時間区間（ｔ１〜ｔ１０）で共にアクセスされるデータの同時アクセスパターン４０５を検出する。本実施形態で、時間区間ｔ１でデータ（Ｄ１、Ｄ２）がアクセスされた後、時間区間（ｔ３、ｔ４）でデータ（Ｄ３、Ｄ５、Ｄ６、Ｄ７）が共にアクセスされる。一方、時間区間ｔ６でデータ（Ｄ１、Ｄ２、Ｄ５）がアクセスされた後、時間区間（ｔ８、ｔ９）でデータ（Ｄ２、Ｄ３、Ｄ５、Ｄ６、Ｄ７）が共にアクセスされる。その後同時アクセスパターンマイニング部１２３はデータ（Ｄ１、Ｄ２）が読込みされた後は時間間隔Ｔｄ（例えば、１秒）をおいてデータ（Ｄ３、Ｄ５、Ｄ６、Ｄ７）が読込みされるパターンを検出し得る。
【００４７】
すなわち、同時アクセスパターンは特定の時間区間中の第１時間区間（すなわち、“ｔ１”）で共にアクセスされるデータの第１同時アクセスサブパターン（すなわち、“｛Ｄ１、Ｄ２｝”）と、特定の時間区間中の第２時間区間（すなわち、“ｔ３”、“ｔ４”）で共にアクセスされるデータの第２同時アクセスサブパターン（すなわち、“｛Ｄ３、Ｄ５、Ｄ６、Ｄ７｝”）を含み得、第１同時アクセスサブパターンと第２同時アクセスサブパターンは時間間隔Ｔｄをおいてアクセスされ得る。その後、第１同時アクセスサブパターンに従うデータ（すなわち、データ（Ｄ１、Ｄ２））に対する読込み要求が発生した場合、データ配置部１２８は第２同時アクセスサブパターンに従うデータ（すなわち、データ（Ｄ３、Ｄ５、Ｄ６、Ｄ７））をプリフェッチバッファ３００に格納し得る。特に、データ配置部１２８は第２同時アクセスサブパターンに従うデータ（すなわち、データ（Ｄ３、Ｄ５、Ｄ６、Ｄ７））を前記時間間隔Ｔｄ内にプリフェッチバッファ３００に格納し得る。
【００４８】
図８は図７に示す実施形態でコントローラの動作を説明するための概略図である。
【００４９】
図８は、図７の同時アクセスパターン４０５に従う同時アクセスグループが生成された場合を示す。本実施形態で、コントローラ１００はデータ（Ｄ１、Ｄ２）に対する読込み要求を受信（ステップＳ５２１）した後、ストレージアレイ２００に前記読込み要求を送信（ステップＳ５２３）する。ストレージアレイ２００が前記読込み要求によりデータ（Ｄ１、Ｄ２）を読込みし、コントローラ１００に送信（ステップＳ５２５）すると、コントローラ１００は前記読込み要求に対する応答としてデータ（Ｄ１、Ｄ２）を例えば、ホストシステムに送信（ステップＳ５２７）する。
【００５０】
一方、同時アクセスグループマッチング部１２５は同時アクセスパターンマイニング部１２３により生成された同時アクセスグループのうち、第１同時アクセスサブパターン（すなわち、“｛Ｄ１、Ｄ２｝”）とマッチングする同時アクセスグループ、すなわち、第２同時アクセスサブパターン（すなわち、“｛Ｄ３、Ｄ５、Ｄ６、Ｄ７｝”）に従う同時アクセスグループを選択する。その後、データ配置部１２８は選択された同時アクセスグループに含まれたデータ（Ｄ３、Ｄ５、Ｄ６、Ｄ７）をプリフェッチバッファに格納（ステップＳ５２９）する。
【００５１】
その後、コントローラ１００がデータ（Ｄ５、Ｄ６、Ｄ７）に対する読込み要求を受信（ステップＳ５３１）すると、コントローラ１００は先にプリフェッチバッファ３００を検索（ステップＳ５３３）する。読込み要求されたデータ（Ｄ５、Ｄ６、Ｄ７）はプリフェッチバッファ３００に存在するため、コントローラ１００はプリフェッチバッファ３００に格納されたデータ（Ｄ５、Ｄ６、Ｄ７）を読込み（ステップＳ５３５）し、前記読込み要求に対する応答としてデータ（Ｄ５、Ｄ６、Ｄ７）を例えば、ホストシステムに送信（ステップＳ５３７）する。
【００５２】
また、コントローラ１００がデータ（Ｄ３、Ｄ５）に対する読込み要求を受信（ステップＳ５３９）すると、コントローラ１００は先にプリフェッチバッファ３００を検索（ステップＳ５４１）する。読込み要求されたデータ（Ｄ３、Ｄ５）もプリフェッチバッファ３００に存在するため、コントローラ１００はプリフェッチバッファ３００に格納されたデータ（Ｄ３、Ｄ５）を読込み（ステップＳ５４３）し、前記読込み要求に対する応答としてデータ（Ｄ３、Ｄ５）を例えば、ホストシステムに送信（ステップＳ５４５）する。
【００５３】
図９は本発明の一実施形態によるコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
【００５４】
前述したように、同時アクセスパターンマイニング部１２３により生成された同時アクセスグループは同時アクセスグループデータベース１２７に格納される。図９を参照すると、本発明のいくつかの実施形態で、前記同時アクセスグループデータベース１２７に格納される同時アクセスグループレコード４１０は同時アクセスグループＩＤ（４１１  ＣＧＩＤ）、同時アクセスグループの発生頻度（４１３  ＳＶ）、同時アクセスグループの長さ（４１５  ＬＥＮ）、予備フィールド（４１７  ＡＵＸ）及び同時アクセスグループのアドレスリスト（４１９  ＣＧ  ＡＤＤＲ  ＬＩＳＴ）を含み得る。ここで同時アクセスグループの発生頻度４１３はＩ／Ｏ要求によって共にアクセスされる同時アクセスグループの単位時間当りの発生頻度であり、例えば、同時アクセスグループの発生頻度の値が０．０３５であるならば、前記同時アクセスグループは１０００回のＩ／Ｏの間に３５回発生する可能性があることを意味する。
【００５５】
図１０及び図１１は本発明の一実施形態によるコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。
【００５６】
図１０を参照すると、それぞれの同時アクセスグループは前述した発生頻度値を有し得る。例えば、同時アクセスグループＩＤが‘１’である同時アクセスグループはアドレス‘Ａ’、‘Ｂ’、‘Ｃ’、‘Ｇ’を有するデータを含み、その発生頻度値は‘０．３１’である。また、同時アクセスグループＩＤが‘２’である同時アクセスグループはアドレス‘Ａ’、‘Ｂ’、‘Ｄ’、‘Ｅ’を有するデータを含み、その発生頻度値は‘０．２７’である。
【００５７】
図１１を参照すると、図１０に示すような同時アクセスグループが生成される場合、それぞれの同時アクセスグループに含まれるデータのアドレスが垂直列であり、それぞれの同時アクセスグループＩＤが水平列であるビットベクトルのアレイを構成し得る。例えば、アドレス‘Ｂ’に対するビットベクトルは“｛１１１０１１１０｝”であり、これにより、アドレス‘Ｂ’を有するデータは同時アクセスグループＩＤが１、２、３、５、６及び７である同時アクセスグループに含まれる。また、アドレス‘Ｅ’に対するビットベクトルは“｛０１００１１０１｝”であり、これによりアドレス‘Ｅ’を有するデータは同時アクセスグループＩＤが２、５、６、８である同時アクセスグループに含まれる。
【００５８】
本発明のいくつかの実施形態で、同時アクセスグループマッチング部１２５は生成された同時アクセスグループを示すビットベクトル（すなわち、アドレス（Ａ〜Ｇ）に対するビットベクトル）を利用して読込み要求されたデータとマッチングする同時アクセスグループを選択し得る。例えば、アドレス‘Ｂ’を有するデータとアドレス‘Ｅ’を有するデータに対して読込み要求が発生した場合、これとマッチングする同時アクセスグループを決定するため、‘Ｂ’に対するビットベクトル“｛１１１０１１１０｝”とアドレス‘Ｅ’に対するビットベクトル“｛０１００１１０１｝”に対してＡＮＤ論理演算を行う。その結果、“｛０１００１１００｝”というマスクベクトルが得られ、これにより同時アクセスグループＩＤが‘２’、  ‘５’、‘６’である同時アクセスグループがアドレス‘Ｂ’を有するデータとアドレス‘Ｅ’を有するデータに同時にマッチングすることが分かる。
【００５９】
ただし、このように、読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部１２５はその中で単位時間当りの発生頻度が最も高い同時アクセスグループを選択し得る。例えば、同時アクセスグループＩＤが‘５’、‘６’である同時アクセスグループが読込み要求されたデータとマッチングする場合、発生頻度値がさらに高い同時アクセスグループＩＤが‘５’である同時アクセスグループを選択し得る。
【００６０】
本発明のいくつかの実施形態で、単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部１２５はプリフェッチバッファ３００の状態に基づいて一つの同時アクセスグループを選択し得る。例えば、プリフェッチバッファ３００の使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合、同時アクセスグループマッチング部１２５はその長さが最も長い同時アクセスグループを選択し得る。例えば、前述したように読込み要求されたデータとマッチング可能な同時アクセスグループＩＤが‘５’、‘６’である同時アクセスグループの発生頻度が同じであれば、その中で長さがさらに長い同時アクセスグループを選択し得る。一方、プリフェッチバッファ３００の使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合、同時アクセスグループマッチング部１２５はその長さが最も短い同時アクセスグループを選択し得る。
【００６１】
一方、本発明のいくつかの実施形態で、単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部１２５は二つ以上の同時アクセスグループを選択することもできる。例えば、前述したように読込み要求されたデータとマッチング可能な同時アクセスグループＩＤが‘５’、‘６’である同時アクセスグループの発生頻度が同じであれば、二つの同時アクセスグループをすべて選択し得る。これによれば、同時アクセスグループＩＤが‘５’である同時アクセスグループはアドレス‘Ａ’、‘Ｂ’、‘Ｅ’、‘Ｆ’を含み、同時アクセスグループＩＤが‘６’である同時アクセスグループはアドレス‘Ａ’、‘Ｂ’、‘Ｃ’、‘Ｄ’、‘Ｅ’を含むため、アドレス‘Ａ’、‘Ｂ’、‘Ｃ’、‘Ｄ’、‘Ｅ’、‘Ｆ’に該当するデータがプリフェッチされ得る。
【００６２】
図１２は本発明の他の実施形態によるコントローラの同時アクセス分析部を説明するための概略図である。図１３は図１２の同時アクセスグループ最適化部を説明するための概略図である。
【００６３】
図１２を参照すると、本発明の他の実施形態によるコントローラ１００の同時アクセス分析部１２０が図３に示す同時アクセス分析部１２０と違う点は、Ｉ／Ｏ要求構文解析部（１２１  Ｉ／Ｏ  ＲＥＱＵＥＳＴ  ＰＡＲＳＩＮＧ  ＵＮＩＴ）同時アクセスパターンマイニング部（１２３  ＣＯ−ＡＣＣＥＳＳ  ＰＡＴＴＥＲＮ  ＭＩＮＩＮＧ  ＵＮＩＴ）、同時アクセスグループマッチング部（１２５  ＣＯ−ＡＣＣＥＳＳ  ＰＡＴＴＥＲＮ  ＭＡＴＣＨＩＮＧ  ＵＮＩＴ）、同時アクセスグループデータベース（１２７  ＣＯ−ＡＣＣＥＳＳ  ＧＲＯＵＰ  ＤＡＴＡＢＡＳＥ）の他に同時アクセスグループ最適化部（１２９  ＣＯ−ＡＣＣＥＳＳ  ＧＲＯＵＰ  ＯＰＴＩＭＩＺＩＮＧ  ＵＮＩＴ）をさらに含み得るという点である。同時アクセスグループ最適化部１２９は同時アクセスパターンマイニング部１２３により生成された同時アクセスグループ数を減少させるための最適化を行う。具体的には、同時アクセスグループ最適化部１２９は同時アクセスグループデータベース１２７に格納された同時アクセスグループを分析し、時間の流れに応じて同時にアクセスされる同時アクセスグループを一つの同時アクセスグループに統合する。これに関する具体的な説明は図１４及び図１５を参照して後述する。
【００６４】
図１３を参照すると、同時アクセスグループ最適化部１２９はクラスタリング部（１２９ａ  ＣＬＵＳＴＥＲＩＮＧ  ＵＮＩＴ）及び同時アクセスグループ統合部（１２９ｂ  ＣＯ−ＡＣＣＥＳＳ  ＧＲＯＵＰ  ＭＥＲＧＩＮＧ  ＵＮＩＴ）を含み得る。クラスタリング部１２９ａは同時にアクセスされる同時アクセスグループをクラスタリングし、同時アクセスグループ統合部１２９ｂはクラスタリングした同時アクセスグループを一つの同時アクセスグループに統合する。
【００６５】
図１４及び図１５は図１２の同時アクセスグループ最適化部の動作を説明するための概略図である。
【００６６】
図１４は１２個の同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿１２）がアクセスされる時点をタイムスロット（１〜２０）に対して示すものである。例えば、同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿０３）はタイムスロット（２、６、１０、１３、１７、２０）でアクセスされ、同時アクセスグループ（ＣＧＩＤ＿０４）はタイムスロット（４、６、１２、１７、２０）でアクセスされる。図１４で示すように、３個の同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿０３）は同じタイムスロット（２、６、１０、１３、１７、２０）でアクセスされるため、３個の同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿０３）を一つの同時アクセスグループ（Ｃ＿ＣＧＩＤ＿０１）として扱う。
【００６７】
図１５は同じタイムスロットでアクセスされる同時アクセスグループを統合した結果を示す。
具体的には、タイムスロット（２、６、１０、１３、１７、２０）でアクセスされる同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿０３）は一つの同時アクセスグループ（Ｃ＿ＣＧＩＤ＿０１）に統合し、タイムスロット（３、８、１３、１６、１９）でアクセスされる同時アクセスグループ（ＣＧＩＤ＿０５、ＣＧＩＤ＿０９、ＣＧＩＤ＿１１、ＣＧＩＤ＿１２）は一つの同時アクセスグループ（Ｃ＿ＣＧＩＤ＿０３）に統合し、タイムスロット（１、７、１３、１９）でアクセスされる同時アクセスグループ（ＣＧＩＤ＿０７、ＣＧＩＤ＿０８）は一つの同時アクセスグループ（Ｃ＿ＣＧＩＤ＿０５）に統合したものである。
【００６８】
図１６は本発明の他の実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
【００６９】
同時アクセスグループ最適化部１２９は同時アクセスグループデータベース１２７に格納された同時アクセスグループを分析し、最適化を行い、その結果を同時アクセスグループデータベース１２７に格納し得る。図１６を参照すると、本発明のいくつかの実施形態で、前記同時アクセスグループデータベース１２７に格納される同時アクセスグループレコード４１０は同時アクセスグループＩＤ（４１１  ＣＧＩＤ）、同時アクセスグループの発生頻度（４１３  ＳＶ）、同時アクセスグループの長さ（４１５  ＬＥＮ）、クラスターＩＤ（４１６  ＣＩＤ）、ＴＯＰベクトル（４１８  ＴＯＰ  ＶＥＣＴＯＲ）及び同時アクセスグループのアドレスリスト（４１９  ＣＧ  ＡＤＤＲ  ＬＩＳＴ）を含み得る。ここでクラスターＩＤ４１６はクラスタリングが行われ統合された同時アクセスグループに付与するＩＤであり、ＴＯＰベクトル４１８は同時アクセスグループに対する時間的発生パターン（ｔｅｍｐｏｒａｌ  ｏｃｃｕｒｒｅｎｃｅ  ｐａｔｔｅｒｎ）を示すベクトルである。
【００７０】
図１７はＴＯＰベクトルアレイを利用してクラスタリングを行うことを説明するための概略図である。
【００７１】
クラスタリング部１２９ａは生成された同時アクセスグループに対する時間的発生パターンを示すＴＯＰベクトル４１８を利用して同じ時間区間にアクセスされる同時アクセスグループをクラスタリングする。図１７は図１４に示す１２個の同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿１２）それぞれに対するＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）を示す。
図１７を参照すると、同時アクセスグループ（ＣＧＩＤ＿０１）に対するＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］）は“０１０００１０００１００１０００１００１”であり、同時アクセスグループ（ＣＧＩＤ＿０４）に対するＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［４］）は“０００１０１０００００１００００１００１”として、時間的発生パターンを２進コード化（ｂｉｎａｒｙ  ｅｎｃｏｄｉｎｇ）したものである。
これにより、ＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］、ＴＯＰ＿ＶＥＣ［４］）での‘１’の位置はそれぞれ同時アクセスグループ（ＣＧＩＤ＿０１）がアクセスされるタイムスロット（２、６、１０、１３、１７、２０）と同時アクセスグループ（ＣＧＩＤ＿０４）がアクセスされるタイムスロット（４、６、１２、１７、２０）に対応する。このような方式で１２個の同時アクセスグループ（ＣＧＩＤ＿０１〜ＣＧＩＤ＿１２）の全てに対してそれぞれのＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）を生成し得る。
【００７２】
本発明のいくつかの実施形態では、生成されたＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）に対してＫ平均法（Ｋ−ｍｅａｎｓ）アルゴリズムを適用してクラスタリングを行う。すなわち、生成されたＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）をＫ平均法アルゴリズムに対する入力値にして最適のＫ値を見つけるまでクラスタリングを行う。その結果、例えば、ＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）それぞれに対して“｛６、６、６、５、４、３、２、２、４、１、４、４｝”のクラスターＩＤが付与され、ＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［３］）はクラスターＩＤが‘６’である一つのクラスターになる。結局１２個のＴＯＰベクトル（ＴＯＰ＿ＶＥＣ［１］〜ＴＯＰ＿ＶＥＣ［１２］）から６個のクラスターが生成され得る。
【００７３】
図１８は本発明の一実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
【００７４】
図１８を参照すると、本発明の一実施形態によるコントローラの動作方法は、Ｉ／Ｏ要求（例えば、読込み要求）を受信（ステップＳ６０１）した後、読込み要求されたデータがプリフェッチバッファ３００に存在有無をチェック（ステップＳ６０３）する。読込み要求されたデータがプリフェッチバッファ３００に存在しない場合、ストレージアレイ２００に格納されたデータを取り出（ステップＳ６０５）した後、読込み要求されたデータと関連する同時アクセスデータをプリフェッチバッファ３００に格納（ステップＳ６０７）する。一方、読込み要求されたデータがプリフェッチバッファ３００に存在する場合はプリフェッチバッファ３００に格納されたデータを取り出す（ステップＳ６０９）する。
【００７５】
ここで、読込み要求されたデータと関連する同時アクセスデータをプリフェッチバッファ３００に格納（ステップＳ６０７）することは、特定の時間区間で共にアクセスされるデータの同時アクセスパターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成し、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択し、前記選択された同時アクセスグループに含まれたデータをプリフェッチ３００バッファに格納することを含み得る。
【００７６】
図１９は、本発明の他の実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
【００７７】
図１９を参照すると、本発明の他の実施形態によるコントローラの動作方法は、それぞれの同時アクセスグループに含まれるデータのアドレスが垂直列であり、それぞれの同時アクセスグループＩＤが水平列であるビットベクトルのマトリックスから第１ビットベクトルと第２ビットベクトルを抽出（ステップＳ７０１）する。次に第１ビットベクトルと第２ビットベクトルに対してＡＮＤ論理演算を行い（ステップＳ７０３）、候補同時アクセスグループを抽出（ステップＳ７０５）する。抽出された候補同時アクセスグループが複数である場合、その中で同時アクセスグループを決定（ステップＳ７０９）する。抽出された候補同時アクセスグループが複数である場合、その中で同時アクセスグループを決定（ステップＳ７０９）することは、図１１と共に前述したように、単位時間当りの発生頻度が最も高い同時アクセスグループを選択したり、プリフェッチバッファ３００の状態に基づいてその長さが最も長かったり短い同時アクセスグループを選択し得る。
【００７８】
図２０は、本発明のまた他の実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
【００７９】
図２０を参照すると、本発明のまた他の実施形態によるコントローラの動作方法は、同時アクセスグループに対してＴＯＰ情報を抽出（ステップＳ８０１）してＴＯＰベクトルアレイを構成（ステップＳ８０３）する。ＴＯＰベクトルアレイに対して例えばＫ平均法（Ｋ−ｍｅａｎｓ）のようなクラスタリングアルゴリズムを適用して同時アクセスグループをクラスタリング（ステップＳ８０５）する。その後、それぞれのクラスタリングされたＴＯＰベクトルに関連するアドレスアイテムを統合（ステップＳ８０９）し、同時アクセスグループを再構成（ステップＳ８１１）する。
【００８０】
前述した本発明の多様な実施形態によれば、Ｉ／Ｏ要求ストリームの時間的流れに対する傾向性を分析して得られた同時アクセスグループ情報を利用してプリフェッチを行う。これにより、順次Ｉ／ＯだけでなくランダムＩ／Ｏでも効果的なプリフェッチを行うことができ、窮極的にはＩ／Ｏ効率の極大化が企てられる。また同時アクセスグループ情報をクラスタリングすることによって同時アクセスグループデータベース及びメモリ空間を節約し、Ｉ／Ｏ命令の処理費用を節減することができる。
【符号の説明】
【００８１】
１    ストレージシステム
１００    コントローラ
１１０    プロセッサ
１２０    同時アクセス分析部
１２１    Ｉ／Ｏ要求構文解析部
１２３    同時アクセスパターンマイニング部
１２５    同時アクセスグループマッチング部
１２７    同時アクセスグループデータベース
１２８    データ配置部
１２９    同時アクセスグループ最適化部
１３０    Ｉ／Ｏインターフェース
１４０    ストレージインターフェース
１５０    バッファインターフェース
２００    ストレージアレイ
３００    プリフェッチバッファ
【図１】
2015219926.tif 000003
【図２】
2015219926.tif 000004
【図３】
2015219926.tif 000005
【図４】
2015219926.tif 000006
【図５】
2015219926.tif 000007
【図６】
2015219926.tif 000008
【図７】
2015219926.tif 000009
【図８】
2015219926.tif 000010
【図９】
2015219926.tif 000011
【図１０】
2015219926.tif 000012
【図１１】
2015219926.tif 000013
【図１２】
2015219926.tif 000014
【図１３】
2015219926.tif 000015
【図１４】
2015219926.tif 000016
【図１５】
2015219926.tif 000017
【図１６】
2015219926.tif 000018
【図１７】
2015219926.tif 000019
【図１８】
2015219926.tif 000020
【図１９】
2015219926.tif 000021
【図２０】
2015219926.tif 000022