JP2015219926A - ストレージコントローラ - Google Patents

ストレージコントローラ Download PDF

Info

Publication number
JP2015219926A
JP2015219926A JP2015103220A JP2015103220A JP2015219926A JP 2015219926 A JP2015219926 A JP 2015219926A JP 2015103220 A JP2015103220 A JP 2015103220A JP 2015103220 A JP2015103220 A JP 2015103220A JP 2015219926 A JP2015219926 A JP 2015219926A
Authority
JP
Japan
Prior art keywords
simultaneous access
data
access group
simultaneous
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015103220A
Other languages
English (en)
Other versions
JP6639107B2 (ja
Inventor
明 俊 鄭
Myung-June Jung
明 俊 鄭
柱 坪 李
Ju-Pyong Yi
柱 坪 李
凱 員 柳
Gae-Won You
凱 員 柳
鎬 式 李
Ho-Shik Lee
鎬 式 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2015219926A publication Critical patent/JP2015219926A/ja
Application granted granted Critical
Publication of JP6639107B2 publication Critical patent/JP6639107B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】I/Oパターンに適応的に動作してI/O処理効率を向上させるためのストレージコントローラの動作方法を提供する【解決手段】本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、前記選択された同時アクセスグループに含まれたデータをプリフェッチ(pre−fetch)バッファに格納するデータ配置部とを有する。【選択図】図3

Description

本発明は、ストレージコントローラに関し、特にI/Oパターンに適応的に動作してI/O処理効率を向上させるためのストレージコントローラに関する。
データI/Oの際I/O時間を短縮し、I/O性能を向上させるためにプリフェッチ(pre−fetch)技法が利用される。例えば、I/O作業において特定データをアクセスする場合、前記データに隣接したデータをプリフェッチしてメモリ装置に予めロードする。そうすると、次のI/O作業で前記データに隣接したデータをアクセスするとき、前記隣接したデータをストレージからフェッチする必要なく、プリフェッチされてメモリ装置にロードされているデータを読込みする。しかし、このような方式は、複数のI/O作業を行う場合、隣接したデータを順次に処理しないランダムI/Oでは限界がある。ランダムI/Oが頻繁に発生する場合はI/Oストリームの特性を考慮してプリフェッチ技法を利用する必要がある。
特許公開第2008−269015号公報は記憶システム及びその制御方法について開示している。
本発明は上記従来のI/O作業における問題点に鑑みてなされたものであって、本発明が解決しようとする課題は、I/Oパターンに適応的に動作してI/O処理効率を向上させるためのストレージコントローラを提供することにある。
本発明が解決しようとする他の課題は、I/Oパターンに適応的に動作してI/O処理効率を向上させるためのストレージコントローラの動作方法を提供することにある。
本発明が解決しようとする課題は、以上で言及した課題に制限されず、言及されていないまた他の課題は次の記載から通常の知識を有する者に明確に理解できるであろう。
上記目的を達成するためになされた本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、前記選択された同時アクセスグループに含まれたデータをプリフェッチ(pre−fetch)バッファに格納するデータ配置部とを有することを特徴とする。
前記同時アクセスグループの複数のデータは予め設定された時間窓に含まれ、前記時間窓で共にアクセスされることが好ましい。
前記データ配置部は前記時間窓で前記読込み要求されたデータと共にアクセスされるデータを前記プリフェッチバッファに格納することが好ましい。
前記同時アクセスグループマッチング部は前記生成された同時アクセスグループを示すビットベクトルを利用して前記読込み要求されたデータとマッチングする同時アクセスグループを選択することが好ましい。
前記読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部はその中から単位時間当りの発生頻度が最も高い同時アクセスグループを選択することが好ましい。
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部は前記プリフェッチバッファの状態に基づいて一つの同時アクセスグループを選択することが好ましい。
前記同時アクセスグループマッチング部は、前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合はその長さが最も長い同時アクセスグループを選択し、前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合はその長さが最も短い同時アクセスグループを選択することが好ましい。
前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、前記同時アクセスグループマッチング部は二つ以上の同時アクセスグループを選択することが好ましい。
外部に位置するストレージアレイに接続され、前記データ配置部は前記ストレージアレイに格納された前記選択された同時アクセスグループに含まれたデータを前記プリフェッチバッファに伝送することが好ましい。
前記プリフェッチバッファのI/Oレートは前記ストレージアレイのI/Oレートより高いことが好ましい。
受信されたI/O要求の構文解析処理を行い、前記構文解析処理を行ったI/O要求を前記同時アクセスパターンマイニング部または前記同時アクセスグループマッチング部に提供するI/O要求構文解析部をさらに有することが好ましい。
前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部に提供する同時アクセスグループデータベースをさらに有することが好ましい。
前記同時アクセスグループデータベースに格納される同時アクセスグループに対するレコードは、前記同時アクセスグループのID、発生頻度、長さ及び前記同時アクセスグループに含まれるデータのアドレスリストを含むことが好ましい。
前記同時アクセスパターンは、前記特定の時間区間の中の第1時間区間で共にアクセスされるデータの第1同時アクセスサブパターンと、前記特定の時間区間の中の第2時間区間で共にアクセスされるデータの第2同時アクセスサブパターンとを含み、前記第1同時アクセスサブパターンと前記第2同時アクセスサブパターンは時間間隔をおいてアクセスされることが好ましい。
前記第1同時アクセスサブパターンに従うデータに対する読込み要求が発生した場合、前記データ配置部は前記第2同時アクセスサブパターンに従うデータを前記プリフェッチバッファに格納することが好ましい。
前記データ配置部は前記第2同時アクセスサブパターンに従うデータを前記時間間隔の間に前記プリフェッチバッファに格納することが好ましい。
上記目的を達成するためになされた本発明によるストレージコントローラは、特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、前記生成された同時アクセスグループ数を減少させるための最適化を行う同時アクセスグループ最適化部とを有することを特徴とする。
前記同時アクセスグループ最適化部は、同時にアクセスされる同時アクセスグループをクラスタリングするクラスタリング部と、前記クラスタリングされた同時アクセスグループを一つの同時アクセスグループに統合する同時アクセスグループ統合部とを含むことが好ましい。
前記クラスタリング部は前記生成された同時アクセスグループに対する時間的発生パターン(temporal occurrence pattern)を示すベクトルを利用して同じ前記時間区間にアクセスされる同時アクセスグループをクラスタリングすることが好ましい。
前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納する同時アクセスグループデータベースをさらに有し、前記同時アクセスグループ最適化部は前記同時アクセスグループデータベースに格納された同時アクセスグループに対して最適化を行うことが好ましい。
本発明に係るストレージコントローラによれば、I/O要求ストリームの時間的流れに対する傾向性を分析して得られた同時アクセスグループ情報を利用してプリフェッチを行うため、順次I/OだけでなくランダムI/Oでも効果的なプリフェッチを行うことができ、窮極的にはI/O効率の極大化が得られる。また同時アクセスグループ情報をクラスタリングすることによって同時アクセスグループデータベース及びメモリ空間を節約し、I/O命令の処理費用を節減することができる。
本発明の一実施形態によるストレージシステムを説明するための概略ブロック図である。 本発明の一実施形態によるストレージコントローラを説明するための概略ブロック図である。 図2の同時アクセス分析部を説明するための概略ブロック図である。 データの同時アクセスパターンを検出する実施形態を説明するための概略図である。 データの同時アクセスパターンを検出する実施形態を説明するための概略図である。 図4に示す実施形態でストレージコントローラの動作を説明するための概略図である。 データの同時アクセスパターンを検出する他の実施形態を説明するための概略図である。 図7に示す実施形態でストレージコントローラの動作を説明するための概略図である。 本発明の一実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。 本発明の一実施形態によるストレージコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。 本発明の一実施形態によるストレージコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。 本発明の他の実施形態によるストレージコントローラの同時アクセス分析部を説明するための概略ブロック図である。 図12の同時アクセスグループ最適化部を説明するための概略ブロック図である。 図12の同時アクセスグループ最適化部の動作を説明するための概略図である。 図12の同時アクセスグループ最適化部の動作を説明するための概略図である。 本発明の他の実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。 TOPベクトルアレイを利用してクラスタリングを行うことを説明するための概略図である。 本発明の一実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。 本発明の他の実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。 本発明のまた他の実施形態によるストレージコントローラの動作方法を概略的に説明するためのフローチャートである。
図1は、本発明の一実施形態によるストレージシステムを説明するための概略図である。
図1を参照すると、本発明の一実施形態によるストレージシステム1は、コントローラ(100 CONTROLLER)、ストレージアレイ(200 STORAGE ARRAY)及びプリフェッチバッファ(300 PRE−FETCH BUFFER)を含み得る。
コントローラ100はストレージシステム1の動作の全般を制御し、データI/O要求(I/O REQUEST)によりデータI/O作業を行う。例えば、コントローラ100はホストシステムからデータを読込みするというI/O要求を受信し、ストレージシステム1に格納されたデータを読込みし、その結果または応答(RESPONSE)を前記ホストシステムに伝送する。また、コントローラ100はホストシステムからデータを書出し(write)するというI/O要求を受信し、前記ホストシステムから受信したデータをストレージシステム1に格納する。
ストレージアレイ200はデータを格納する。本発明のいくつかの実施形態でストレージアレイ200は一つ以上のストレージ装置を含み得る。例えば、ストレージアレイ200はHDD(Hard Disk Drive)及びSSD(Solid State Drive)のうち少なくとも一つを含み得る。前記一つ以上のストレージ装置は互いに電気的に接続してアレイを構成する。
プリフェッチバッファ300はコントローラ100とストレージアレイ200との間のバッファとして動作する。具体的には、プリフェッチバッファ300はコントローラ100を介して入力される各種命令または変数を格納する。また、ストレージアレイ200に入出力されるデータ、各種パラメータ及び変数を格納する。
本発明のいくつかの実施形態で、コントローラ100は読込み要求されたデータを読込みするため、先にプリフェッチバッファ300を検索する。仮に、読込み要求されたデータがプリフェッチバッファ300に存在する場合、コントローラ100はプリフェッチバッファ300に格納されたデータを読込みし、前記読込み要求に対する応答を送信する。これと異なり、読込み要求されたデータがプリフェッチバッファ300に存在しない場合、コントローラ100はストレージアレイ200を検索し、ストレージアレイ200に格納されたデータを読込みし、前記読込み要求に対する応答を送信する。
本発明のいくつかの実施形態で、プリフェッチバッファ300のI/Oレートはストレージアレイ200のI/Oレートより高くてもよい。また、本発明のいくつかの実施形態で、プリフェッチバッファ300はDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)またはDDR SDRAM (Double Data Rate Synchronous DRAM)をはじめとする揮発性メモリまたはフラッシュメモリをはじめとする不揮発性メモリを含み得る。
図2は本発明の一実施形態によるコントローラを説明するための概略図である。
図2を参照すると、本発明の一実施形態によるコントローラ100はプロセッサ(110 PROCESSOR)、同時アクセス分析部(120 CO−ACCESS ANALYSIS UNIT)、I/Oインターフェース(130 I/O INTERFACE)、ストレージインターフェース(140 STORAGE INTERFACE)及びバッファインターフェース(150 BUFFER INTERFACE)を含み得る。
プロセッサ110は、回路、ロジック、コードまたはこれらの組み合わせによって実現することができ、コントローラ100を含むストレージシステム1の動作の全般を制御する。ストレージシステム1に電源が印加されると、プロセッサ110はストレージシステム1の動作のためのソフトウェア、例えば、ファームウェアを駆動させることによってストレージシステム1の動作の全般を制御する。また、プロセッサ110はI/Oインターフェース130を介して受信する命令を解釈し、解釈結果に応じてストレージアレイ200の動作の全般を制御する。また、プロセッサ110はアドレスマッピングテーブルを使用してデータの論理アドレスを物理的アドレスにマッピングし得る。
同時アクセス分析部120は特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを分析する。また、同時アクセス分析部120は特定の時間区間(例えば、1秒)で共にアクセスされるデータを検出し、これらのデータを含む同時アクセスグループを生成する。仮に前記同時アクセスグループのうち一つのデータに対して読込み要求が発生した場合、同時アクセス分析部120は前記読込み要求が発生したデータと共に同時アクセスグループを成す他のデータをプリフェッチバッファ300に格納する。すなわち、同時アクセス分析部120は前記読込み要求が発生したデータと共に同時アクセスグループを成す他のデータに対しても読込み要求が発生すると予測してプリフェッチ作業を行う。
本発明のいくつかの実施形態で、同時アクセス分析部120はハードウェアだけでなくソフトウェアでも実現される。例えば、同時アクセス分析部120はFPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、GPGPU(General−Purpose computing on Graphics Processing Units)などを含むハードウェアで実現され得る。一方、同時アクセス分析部120はコントローラ100上で駆動されるファームウェアまたはホストシステムで駆動されるユーザアプリケーションをはじめとするソフトウェアによって実現することができる。
I/Oインターフェース130は、コントローラ100を含むストレージシステム1とホストシステムとの間のインターフェースを行う。特に、I/Oインターフェースはホストシステムから読込み要求を受信し、プロセッサ110に提供し、前記読込み要求に対する応答をホストシステムに伝送し得る。本発明のいくつかの実施形態で、I/Oインターフェース130は予め決定されたプロトコルによってホストシステムとデータを送受信し得る。例えば、予め決定されたプロトコルはUSB(Universal Serial Bus)、SCSI(Small Computer System Interface)、PCI express、ATA、PATA(Parallel ATA)、SATA(Serial ATA)、SAS(Serial Attached SCSI)、PCIe(PCI Express)などであり得るが、これに限定されない。
ストレージインターフェース140は、コントローラ100とストレージアレイ200との間にデータを送受信する。ストレージインターフェース140を介してプロセッサ110が要求する命令がストレージアレイ200に提供され、またコントローラ100からストレージアレイ200にデータが伝送され得る。また、ストレージアレイ200から出力されるデータはストレージインターフェース140を介してコントローラ100に提供される。
バッファインターフェース150は、コントローラ100とプリフェッチバッファ300との間にデータを送受信する。バッファインターフェース150を介してプロセッサ110が要求する命令がプリフェッチバッファ300に提供され得、またコントローラ100からプリフェッチバッファ300にデータが伝送され得る。また、プリフェッチバッファ300から出力されるデータはバッファインターフェース150を介してコントローラ100に提供される。
本発明のいくつかの実施形態で、前述したプロセッサ110、同時アクセス分析部120、I/Oインターフェース130、ストレージインターフェース140、及びバッファインターフェース150はシステムバスを介して電気的に接続され得る。
図3は図2の同時アクセス分析部を説明するための概略図である。
図3を参照すると、図2の同時アクセス分析部120はI/O要求構文解析部(121 I/O REQUEST PARSING UNIT)同時アクセスパターンマイニング部(123 CO−ACCESS PATTERN MINING UNIT)、同時アクセスグループマッチング部(125 CO−ACCESS PATTERN MATCHING UNIT)、同時アクセスグループデータベース(127 CO−ACCESS GROUP DATABASE)、及びデータ配置部(128 DATA PLACEMENT UNIT)を含み得る。
I/O要求構文解析部121はI/Oインターフェース130を介して受信されたI/O要求の構文解析処理を行い、構文解析処理を行ったI/O要求を同時アクセスパターンマイニング部123または同時アクセスグループマッチング部125に提供する。例えば、I/O要求構文解析部121はI/Oインターフェース130を介してI/O要求のストリームを受信し、I/O要求構文解析部121は前記I/O要求のストリームに含まれたそれぞれのI/O要求を識別し得る。
本発明のいくつかの実施形態で、I/O要求構文解析部121は前記識別されたI/O要求と共に、前記識別されたI/O要求が発生した時刻または前記識別されたI/O要求と関連するデータのアドレスに関する情報を同時アクセスパターンマイニング部123に提供し、同時アクセスパターンマイニング部123が同時アクセスパターンを検出するようにし得る。一方、本発明のいくつかの実施形態で、I/O要求構文解析部121は前記識別されたI/O要求を同時アクセスグループマッチング部125に提供し、同時アクセスグループマッチング部125が前記識別されたI/O要求と関連するデータと同時アクセスグループをマッチングするようにし得る。
同時アクセスパターンマイニング部123は特定の時間区間で共にアクセスされるデータの同時アクセスパターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する。具体的には、同時アクセスパターンマイニング部123は特定の時間区間(例えば、1秒)を単位とする時間の流れに応じて繰り返して共にアクセスされるデータを検出し、それらを同時アクセスパターンとして認識する。その後、同時アクセスパターンマイニング部123は検出した同時アクセスパターンを形成する複数のデータを含む同時アクセスグループを生成する。
本発明のいくつかの実施形態で、時間の流れに応じて様々なI/O要求が発生するI/O要求ストリームには予め設定された時間窓が定義され、同時アクセスグループの複数のデータは前記時間窓に含まれて共にアクセスされ得る。同時アクセスパターンと同時アクセスグループを決定する過程についての具体的な説明は図4、図5及び図7を参照して後述する。
一方、本発明のいくつかの実施形態で、同時アクセスパターンマイニング部123は同時アクセスグループを生成するために頻出アイテムマイニング(Frequent Itemset Mining)アルゴリズムを利用する。例えば、同時アクセスパターンマイニング部123は頻出アイテムマイニングアルゴリズムとしてelcat、apriori、fp−growthアルゴリズムを利用し得る。
同時アクセスグループマッチング部125は同時アクセスパターンマイニング部123により生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択し得る。すなわち、同時アクセスグループマッチング部125はI/O要求構文解析部121から受信されたI/O要求(例えば、読込み要求)に関連するデータと、同時アクセスパターンマイニング部123により生成された同時アクセスグループをマッチングする。
本発明のいくつかの実施形態で、同時アクセスグループデータベース127は同時アクセスパターンマイニング部123により生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部125に提供し得る。
データ配置部128は同時アクセスグループマッチング部125によって選択された同時アクセスグループに含まれたデータ、すなわち、前記時間窓で読込み要求されたデータと共にアクセスされるデータをストレージアレイ200から読込みしてプリフェッチバッファ300に格納する。
図4及び図5はデータの同時アクセスパターンを検出する実施形態を説明するための概略図である。
図4を参照すると、図4に示すデータ(D1〜D8)はI/O要求(すなわち、読込み要求)に関連するデータを示すか、またはそのアドレスを示す。本実施形態でデータ読込み要求は時間の流れに応じて総10回発生し、読込み要求に応じてアクセスされるデータには丸印を付けて示す。例えば、時間区間t1でアクセスされるデータはデータ(D1、D2、D5、D8)であり、時間区間t2でアクセスされるデータはデータ(D3、D6)であり、時間区間t3でアクセスされるデータはデータ(D2、D7)である。時間区間(t1〜t10)それぞれの長さは本発明の多様な実施形態によるコントローラ100の運用により任意の長さに設定され得る。
同時アクセスパターンマイニング部123はそれぞれの時間区間(t1〜t10)で共にアクセスされるデータの同時アクセスパターン401を検出する。例えば、時間区間t1ではデータ(D1、D2、D5、D8)が共にアクセスされ、時間区間(t4、t8、t10)ではデータ(D1、D2、D3、D5、D6、D8)が共にアクセスされるため、同時アクセスパターンマイニング部123は同時アクセスパターン401として“{D1、D2、D5、D8}”を検出し得る。このように同時アクセスパターン401を検出することは、一つの同時アクセスパターン401を成すデータ(D1、D2、D5、D8)のうち何れか一つのデータ(例えば、D1)がアクセスされる場合に他のデータ(D2、D5、D8)もアクセスされる確率は非常に高いという仮定の下で成される。その後、同時アクセスパターンマイニング部123は同時アクセスパターン401に従う複数のデータを含む同時アクセスグループを生成する。本発明のいくつかの実施形態で、同時アクセスグループは同時アクセスパターン401に従う複数のデータのアドレスを含み得る。
同様に、図5を参照すると、時間区間(t2、t6)ではデータ(D3、D6)が共にアクセスされ、時間区間(t4、t8、t10)ではデータ(D1、D2、D3、D5、D6、D8)が共にアクセスされるため、同時アクセスパターンマイニング部123は同時アクセスパターン403として“{D3、D6}”を検出し得る。その後同時アクセスパターンマイニング部123は同時アクセスパターン403に従う複数のデータを含む同時アクセスグループを生成する。
図6は図4に示す実施形態でコントローラの動作を説明するための概略図である。
図6は図4の同時アクセスパターン401“{D1、D2、D5、D8}”に従う同時アクセスグループが生成された場合を示す。本実施形態で、コントローラ100はデータD8に対する読込み要求を受信(ステップS501)した後、ストレージアレイ200に前記読込み要求を送信(ステップS503)する。ストレージアレイ200が前記読込み要求によりデータD8を読込みし、コントローラ100に送信(ステップS505)すると、コントローラ100は前記読込み要求に対する応答としてデータD8を例えば、ホストシステムに送信(ステップS507)する。
一方、同時アクセスグループマッチング部125は同時アクセスパターンマイニング部123により生成された同時アクセスグループのうち、データD8とマッチングする同時アクセスグループ、すなわち、同時アクセスパターン401“{D1、D2、D5、D8}”に従う同時アクセスグループを選択する。
本発明のいくつかの実施形態で、同時アクセスグループマッチング部125は同時アクセスグループデータベース127を検索してデータD8とマッチングする同時アクセスグループを選択することもできる。その後、データ配置部128は選択された同時アクセスグループに含まれたデータ(D1、D2、D5)をプリフェッチバッファに格納(ステップS509)する。本発明のいくつかの実施形態で、データ(D1、D2、D5)をプリフェッチバッファに格納(ステップS509)することは、前記読込み要求に対する応答としてデータD8を送信(ステップS507)した後に行われ得る。
その後、コントローラ100がデータ(D1、D2、D5)に対する読込み要求を受信(ステップS511)すると、コントローラ100は先にプリフェッチバッファ300を検索(ステップS513)する。読込み要求されたデータ(D1、D2、D5)はプリフェッチバッファ300に存在するため、コントローラ100はプリフェッチバッファ300に格納されたデータ(D1、D2、D5)を読込み(ステップS515)し、前記読込み要求に対する応答としてデータ(D1、D2、D5)を例えば、ホストシステムに送信(ステップS517)する。
図7は、データの同時アクセスパターンを検出する他の実施形態を説明するための概略図である。
図7を参照すると、同時アクセスパターンマイニング部123はそれぞれの時間区間(t1〜t10)で共にアクセスされるデータの同時アクセスパターン405を検出する。本実施形態で、時間区間t1でデータ(D1、D2)がアクセスされた後、時間区間(t3、t4)でデータ(D3、D5、D6、D7)が共にアクセスされる。一方、時間区間t6でデータ(D1、D2、D5)がアクセスされた後、時間区間(t8、t9)でデータ(D2、D3、D5、D6、D7)が共にアクセスされる。その後同時アクセスパターンマイニング部123はデータ(D1、D2)が読込みされた後は時間間隔Td(例えば、1秒)をおいてデータ(D3、D5、D6、D7)が読込みされるパターンを検出し得る。
すなわち、同時アクセスパターンは特定の時間区間中の第1時間区間(すなわち、“t1”)で共にアクセスされるデータの第1同時アクセスサブパターン(すなわち、“{D1、D2}”)と、特定の時間区間中の第2時間区間(すなわち、“t3”、“t4”)で共にアクセスされるデータの第2同時アクセスサブパターン(すなわち、“{D3、D5、D6、D7}”)を含み得、第1同時アクセスサブパターンと第2同時アクセスサブパターンは時間間隔Tdをおいてアクセスされ得る。その後、第1同時アクセスサブパターンに従うデータ(すなわち、データ(D1、D2))に対する読込み要求が発生した場合、データ配置部128は第2同時アクセスサブパターンに従うデータ(すなわち、データ(D3、D5、D6、D7))をプリフェッチバッファ300に格納し得る。特に、データ配置部128は第2同時アクセスサブパターンに従うデータ(すなわち、データ(D3、D5、D6、D7))を前記時間間隔Td内にプリフェッチバッファ300に格納し得る。
図8は図7に示す実施形態でコントローラの動作を説明するための概略図である。
図8は、図7の同時アクセスパターン405に従う同時アクセスグループが生成された場合を示す。本実施形態で、コントローラ100はデータ(D1、D2)に対する読込み要求を受信(ステップS521)した後、ストレージアレイ200に前記読込み要求を送信(ステップS523)する。ストレージアレイ200が前記読込み要求によりデータ(D1、D2)を読込みし、コントローラ100に送信(ステップS525)すると、コントローラ100は前記読込み要求に対する応答としてデータ(D1、D2)を例えば、ホストシステムに送信(ステップS527)する。
一方、同時アクセスグループマッチング部125は同時アクセスパターンマイニング部123により生成された同時アクセスグループのうち、第1同時アクセスサブパターン(すなわち、“{D1、D2}”)とマッチングする同時アクセスグループ、すなわち、第2同時アクセスサブパターン(すなわち、“{D3、D5、D6、D7}”)に従う同時アクセスグループを選択する。その後、データ配置部128は選択された同時アクセスグループに含まれたデータ(D3、D5、D6、D7)をプリフェッチバッファに格納(ステップS529)する。
その後、コントローラ100がデータ(D5、D6、D7)に対する読込み要求を受信(ステップS531)すると、コントローラ100は先にプリフェッチバッファ300を検索(ステップS533)する。読込み要求されたデータ(D5、D6、D7)はプリフェッチバッファ300に存在するため、コントローラ100はプリフェッチバッファ300に格納されたデータ(D5、D6、D7)を読込み(ステップS535)し、前記読込み要求に対する応答としてデータ(D5、D6、D7)を例えば、ホストシステムに送信(ステップS537)する。
また、コントローラ100がデータ(D3、D5)に対する読込み要求を受信(ステップS539)すると、コントローラ100は先にプリフェッチバッファ300を検索(ステップS541)する。読込み要求されたデータ(D3、D5)もプリフェッチバッファ300に存在するため、コントローラ100はプリフェッチバッファ300に格納されたデータ(D3、D5)を読込み(ステップS543)し、前記読込み要求に対する応答としてデータ(D3、D5)を例えば、ホストシステムに送信(ステップS545)する。
図9は本発明の一実施形態によるコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
前述したように、同時アクセスパターンマイニング部123により生成された同時アクセスグループは同時アクセスグループデータベース127に格納される。図9を参照すると、本発明のいくつかの実施形態で、前記同時アクセスグループデータベース127に格納される同時アクセスグループレコード410は同時アクセスグループID(411 CGID)、同時アクセスグループの発生頻度(413 SV)、同時アクセスグループの長さ(415 LEN)、予備フィールド(417 AUX)及び同時アクセスグループのアドレスリスト(419 CG ADDR LIST)を含み得る。ここで同時アクセスグループの発生頻度413はI/O要求によって共にアクセスされる同時アクセスグループの単位時間当りの発生頻度であり、例えば、同時アクセスグループの発生頻度の値が0.035であるならば、前記同時アクセスグループは1000回のI/Oの間に35回発生する可能性があることを意味する。
図10及び図11は本発明の一実施形態によるコントローラの動作方法により同時アクセスパターンをマッチングすることを説明するための概略図である。
図10を参照すると、それぞれの同時アクセスグループは前述した発生頻度値を有し得る。例えば、同時アクセスグループIDが‘1’である同時アクセスグループはアドレス‘A’、‘B’、‘C’、‘G’を有するデータを含み、その発生頻度値は‘0.31’である。また、同時アクセスグループIDが‘2’である同時アクセスグループはアドレス‘A’、‘B’、‘D’、‘E’を有するデータを含み、その発生頻度値は‘0.27’である。
図11を参照すると、図10に示すような同時アクセスグループが生成される場合、それぞれの同時アクセスグループに含まれるデータのアドレスが垂直列であり、それぞれの同時アクセスグループIDが水平列であるビットベクトルのアレイを構成し得る。例えば、アドレス‘B’に対するビットベクトルは“{11101110}”であり、これにより、アドレス‘B’を有するデータは同時アクセスグループIDが1、2、3、5、6及び7である同時アクセスグループに含まれる。また、アドレス‘E’に対するビットベクトルは“{01001101}”であり、これによりアドレス‘E’を有するデータは同時アクセスグループIDが2、5、6、8である同時アクセスグループに含まれる。
本発明のいくつかの実施形態で、同時アクセスグループマッチング部125は生成された同時アクセスグループを示すビットベクトル(すなわち、アドレス(A〜G)に対するビットベクトル)を利用して読込み要求されたデータとマッチングする同時アクセスグループを選択し得る。例えば、アドレス‘B’を有するデータとアドレス‘E’を有するデータに対して読込み要求が発生した場合、これとマッチングする同時アクセスグループを決定するため、‘B’に対するビットベクトル“{11101110}”とアドレス‘E’に対するビットベクトル“{01001101}”に対してAND論理演算を行う。その結果、“{01001100}”というマスクベクトルが得られ、これにより同時アクセスグループIDが‘2’、 ‘5’、‘6’である同時アクセスグループがアドレス‘B’を有するデータとアドレス‘E’を有するデータに同時にマッチングすることが分かる。
ただし、このように、読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部125はその中で単位時間当りの発生頻度が最も高い同時アクセスグループを選択し得る。例えば、同時アクセスグループIDが‘5’、‘6’である同時アクセスグループが読込み要求されたデータとマッチングする場合、発生頻度値がさらに高い同時アクセスグループIDが‘5’である同時アクセスグループを選択し得る。
本発明のいくつかの実施形態で、単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部125はプリフェッチバッファ300の状態に基づいて一つの同時アクセスグループを選択し得る。例えば、プリフェッチバッファ300の使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合、同時アクセスグループマッチング部125はその長さが最も長い同時アクセスグループを選択し得る。例えば、前述したように読込み要求されたデータとマッチング可能な同時アクセスグループIDが‘5’、‘6’である同時アクセスグループの発生頻度が同じであれば、その中で長さがさらに長い同時アクセスグループを選択し得る。一方、プリフェッチバッファ300の使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合、同時アクセスグループマッチング部125はその長さが最も短い同時アクセスグループを選択し得る。
一方、本発明のいくつかの実施形態で、単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、同時アクセスグループマッチング部125は二つ以上の同時アクセスグループを選択することもできる。例えば、前述したように読込み要求されたデータとマッチング可能な同時アクセスグループIDが‘5’、‘6’である同時アクセスグループの発生頻度が同じであれば、二つの同時アクセスグループをすべて選択し得る。これによれば、同時アクセスグループIDが‘5’である同時アクセスグループはアドレス‘A’、‘B’、‘E’、‘F’を含み、同時アクセスグループIDが‘6’である同時アクセスグループはアドレス‘A’、‘B’、‘C’、‘D’、‘E’を含むため、アドレス‘A’、‘B’、‘C’、‘D’、‘E’、‘F’に該当するデータがプリフェッチされ得る。
図12は本発明の他の実施形態によるコントローラの同時アクセス分析部を説明するための概略図である。図13は図12の同時アクセスグループ最適化部を説明するための概略図である。
図12を参照すると、本発明の他の実施形態によるコントローラ100の同時アクセス分析部120が図3に示す同時アクセス分析部120と違う点は、I/O要求構文解析部(121 I/O REQUEST PARSING UNIT)同時アクセスパターンマイニング部(123 CO−ACCESS PATTERN MINING UNIT)、同時アクセスグループマッチング部(125 CO−ACCESS PATTERN MATCHING UNIT)、同時アクセスグループデータベース(127 CO−ACCESS GROUP DATABASE)の他に同時アクセスグループ最適化部(129 CO−ACCESS GROUP OPTIMIZING UNIT)をさらに含み得るという点である。同時アクセスグループ最適化部129は同時アクセスパターンマイニング部123により生成された同時アクセスグループ数を減少させるための最適化を行う。具体的には、同時アクセスグループ最適化部129は同時アクセスグループデータベース127に格納された同時アクセスグループを分析し、時間の流れに応じて同時にアクセスされる同時アクセスグループを一つの同時アクセスグループに統合する。これに関する具体的な説明は図14及び図15を参照して後述する。
図13を参照すると、同時アクセスグループ最適化部129はクラスタリング部(129a CLUSTERING UNIT)及び同時アクセスグループ統合部(129b CO−ACCESS GROUP MERGING UNIT)を含み得る。クラスタリング部129aは同時にアクセスされる同時アクセスグループをクラスタリングし、同時アクセスグループ統合部129bはクラスタリングした同時アクセスグループを一つの同時アクセスグループに統合する。
図14及び図15は図12の同時アクセスグループ最適化部の動作を説明するための概略図である。
図14は12個の同時アクセスグループ(CGID_01〜CGID_12)がアクセスされる時点をタイムスロット(1〜20)に対して示すものである。例えば、同時アクセスグループ(CGID_01〜CGID_03)はタイムスロット(2、6、10、13、17、20)でアクセスされ、同時アクセスグループ(CGID_04)はタイムスロット(4、6、12、17、20)でアクセスされる。図14で示すように、3個の同時アクセスグループ(CGID_01〜CGID_03)は同じタイムスロット(2、6、10、13、17、20)でアクセスされるため、3個の同時アクセスグループ(CGID_01〜CGID_03)を一つの同時アクセスグループ(C_CGID_01)として扱う。
図15は同じタイムスロットでアクセスされる同時アクセスグループを統合した結果を示す。
具体的には、タイムスロット(2、6、10、13、17、20)でアクセスされる同時アクセスグループ(CGID_01〜CGID_03)は一つの同時アクセスグループ(C_CGID_01)に統合し、タイムスロット(3、8、13、16、19)でアクセスされる同時アクセスグループ(CGID_05、CGID_09、CGID_11、CGID_12)は一つの同時アクセスグループ(C_CGID_03)に統合し、タイムスロット(1、7、13、19)でアクセスされる同時アクセスグループ(CGID_07、CGID_08)は一つの同時アクセスグループ(C_CGID_05)に統合したものである。
図16は本発明の他の実施形態によるストレージコントローラによって使用される同時アクセスグループレコードを説明するための概略図である。
同時アクセスグループ最適化部129は同時アクセスグループデータベース127に格納された同時アクセスグループを分析し、最適化を行い、その結果を同時アクセスグループデータベース127に格納し得る。図16を参照すると、本発明のいくつかの実施形態で、前記同時アクセスグループデータベース127に格納される同時アクセスグループレコード410は同時アクセスグループID(411 CGID)、同時アクセスグループの発生頻度(413 SV)、同時アクセスグループの長さ(415 LEN)、クラスターID(416 CID)、TOPベクトル(418 TOP VECTOR)及び同時アクセスグループのアドレスリスト(419 CG ADDR LIST)を含み得る。ここでクラスターID416はクラスタリングが行われ統合された同時アクセスグループに付与するIDであり、TOPベクトル418は同時アクセスグループに対する時間的発生パターン(temporal occurrence pattern)を示すベクトルである。
図17はTOPベクトルアレイを利用してクラスタリングを行うことを説明するための概略図である。
クラスタリング部129aは生成された同時アクセスグループに対する時間的発生パターンを示すTOPベクトル418を利用して同じ時間区間にアクセスされる同時アクセスグループをクラスタリングする。図17は図14に示す12個の同時アクセスグループ(CGID_01〜CGID_12)それぞれに対するTOPベクトル(TOP_VEC[1]〜TOP_VEC[12])を示す。
図17を参照すると、同時アクセスグループ(CGID_01)に対するTOPベクトル(TOP_VEC[1])は“01000100010010001001”であり、同時アクセスグループ(CGID_04)に対するTOPベクトル(TOP_VEC[4])は“00010100000100001001”として、時間的発生パターンを2進コード化(binary encoding)したものである。
これにより、TOPベクトル(TOP_VEC[1]、TOP_VEC[4])での‘1’の位置はそれぞれ同時アクセスグループ(CGID_01)がアクセスされるタイムスロット(2、6、10、13、17、20)と同時アクセスグループ(CGID_04)がアクセスされるタイムスロット(4、6、12、17、20)に対応する。このような方式で12個の同時アクセスグループ(CGID_01〜CGID_12)の全てに対してそれぞれのTOPベクトル(TOP_VEC[1]〜TOP_VEC[12])を生成し得る。
本発明のいくつかの実施形態では、生成されたTOPベクトル(TOP_VEC[1]〜TOP_VEC[12])に対してK平均法(K−means)アルゴリズムを適用してクラスタリングを行う。すなわち、生成されたTOPベクトル(TOP_VEC[1]〜TOP_VEC[12])をK平均法アルゴリズムに対する入力値にして最適のK値を見つけるまでクラスタリングを行う。その結果、例えば、TOPベクトル(TOP_VEC[1]〜TOP_VEC[12])それぞれに対して“{6、6、6、5、4、3、2、2、4、1、4、4}”のクラスターIDが付与され、TOPベクトル(TOP_VEC[1]〜TOP_VEC[3])はクラスターIDが‘6’である一つのクラスターになる。結局12個のTOPベクトル(TOP_VEC[1]〜TOP_VEC[12])から6個のクラスターが生成され得る。
図18は本発明の一実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
図18を参照すると、本発明の一実施形態によるコントローラの動作方法は、I/O要求(例えば、読込み要求)を受信(ステップS601)した後、読込み要求されたデータがプリフェッチバッファ300に存在有無をチェック(ステップS603)する。読込み要求されたデータがプリフェッチバッファ300に存在しない場合、ストレージアレイ200に格納されたデータを取り出(ステップS605)した後、読込み要求されたデータと関連する同時アクセスデータをプリフェッチバッファ300に格納(ステップS607)する。一方、読込み要求されたデータがプリフェッチバッファ300に存在する場合はプリフェッチバッファ300に格納されたデータを取り出す(ステップS609)する。
ここで、読込み要求されたデータと関連する同時アクセスデータをプリフェッチバッファ300に格納(ステップS607)することは、特定の時間区間で共にアクセスされるデータの同時アクセスパターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成し、前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択し、前記選択された同時アクセスグループに含まれたデータをプリフェッチ300バッファに格納することを含み得る。
図19は、本発明の他の実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
図19を参照すると、本発明の他の実施形態によるコントローラの動作方法は、それぞれの同時アクセスグループに含まれるデータのアドレスが垂直列であり、それぞれの同時アクセスグループIDが水平列であるビットベクトルのマトリックスから第1ビットベクトルと第2ビットベクトルを抽出(ステップS701)する。次に第1ビットベクトルと第2ビットベクトルに対してAND論理演算を行い(ステップS703)、候補同時アクセスグループを抽出(ステップS705)する。抽出された候補同時アクセスグループが複数である場合、その中で同時アクセスグループを決定(ステップS709)する。抽出された候補同時アクセスグループが複数である場合、その中で同時アクセスグループを決定(ステップS709)することは、図11と共に前述したように、単位時間当りの発生頻度が最も高い同時アクセスグループを選択したり、プリフェッチバッファ300の状態に基づいてその長さが最も長かったり短い同時アクセスグループを選択し得る。
図20は、本発明のまた他の実施形態によるコントローラの動作方法を概略的に説明するためのフローチャートである。
図20を参照すると、本発明のまた他の実施形態によるコントローラの動作方法は、同時アクセスグループに対してTOP情報を抽出(ステップS801)してTOPベクトルアレイを構成(ステップS803)する。TOPベクトルアレイに対して例えばK平均法(K−means)のようなクラスタリングアルゴリズムを適用して同時アクセスグループをクラスタリング(ステップS805)する。その後、それぞれのクラスタリングされたTOPベクトルに関連するアドレスアイテムを統合(ステップS809)し、同時アクセスグループを再構成(ステップS811)する。
前述した本発明の多様な実施形態によれば、I/O要求ストリームの時間的流れに対する傾向性を分析して得られた同時アクセスグループ情報を利用してプリフェッチを行う。これにより、順次I/OだけでなくランダムI/Oでも効果的なプリフェッチを行うことができ、窮極的にはI/O効率の極大化が企てられる。また同時アクセスグループ情報をクラスタリングすることによって同時アクセスグループデータベース及びメモリ空間を節約し、I/O命令の処理費用を節減することができる。
1 ストレージシステム
100 コントローラ
110 プロセッサ
120 同時アクセス分析部
121 I/O要求構文解析部
123 同時アクセスパターンマイニング部
125 同時アクセスグループマッチング部
127 同時アクセスグループデータベース
128 データ配置部
129 同時アクセスグループ最適化部
130 I/Oインターフェース
140 ストレージインターフェース
150 バッファインターフェース
200 ストレージアレイ
300 プリフェッチバッファ

Claims (20)

  1. 特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、
    前記生成された同時アクセスグループのうち、読込み要求されたデータとマッチングする同時アクセスグループを選択する同時アクセスグループマッチング部と、
    前記選択された同時アクセスグループに含まれたデータをプリフェッチ(pre−fetch)バッファに格納するデータ配置部とを有することを特徴とするストレージコントローラ。
  2. 前記同時アクセスグループの複数のデータは予め設定された時間窓に含まれ、前記時間窓で共にアクセスされることを特徴とする請求項1に記載のストレージコントローラ。
  3. 前記データ配置部は前記時間窓で前記読込み要求されたデータと共にアクセスされるデータを前記プリフェッチバッファに格納することを特徴とする請求項2に記載のストレージコントローラ。
  4. 前記同時アクセスグループマッチング部は前記生成された同時アクセスグループを示すビットベクトルを利用して前記読込み要求されたデータとマッチングする同時アクセスグループを選択することを特徴とする請求項1に記載のストレージコントローラ。
  5. 前記読込み要求されたデータとマッチングする同時アクセスグループが複数存在する場合、
    前記同時アクセスグループマッチング部はその中から単位時間当りの発生頻度が最も高い同時アクセスグループを選択することを特徴とする請求項1に記載のストレージコントローラ。
  6. 前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、
    前記同時アクセスグループマッチング部は前記プリフェッチバッファの状態に基づいて一つの同時アクセスグループを選択することを特徴とする請求項5に記載のストレージコントローラ。
  7. 前記同時アクセスグループマッチング部は、
    前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値以上である場合はその長さが最も長い同時アクセスグループを選択し、
    前記プリフェッチバッファの使用空間に対する余裕空間の比率が予め設定された臨界値未満である場合はその長さが最も短い同時アクセスグループを選択することを特徴とする請求項6に記載のストレージコントローラ。
  8. 前記単位時間当りの発生頻度が最も高い同時アクセスグループが複数存在する場合、
    前記同時アクセスグループマッチング部は二つ以上の同時アクセスグループを選択することを特徴とする請求項5に記載のストレージコントローラ。
  9. 外部に位置するストレージアレイに接続され、
    前記データ配置部は前記ストレージアレイに格納された前記選択された同時アクセスグループに含まれたデータを前記プリフェッチバッファに伝送することを特徴とする請求項1に記載のストレージコントローラ。
  10. 前記プリフェッチバッファのI/Oレートは前記ストレージアレイのI/Oレートより高いことを特徴とする請求項9に記載のストレージコントローラ。
  11. 受信されたI/O要求の構文解析処理を行い、前記構文解析処理を行ったI/O要求を前記同時アクセスパターンマイニング部または前記同時アクセスグループマッチング部に提供するI/O要求構文解析部をさらに有することを特徴とする請求項1に記載のストレージコントローラ。
  12. 前記同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納し、前記格納された同時アクセスグループを前記同時アクセスグループマッチング部に提供する同時アクセスグループデータベースをさらに有することを特徴とする請求項1に記載のストレージコントローラ。
  13. 前記同時アクセスグループデータベースに格納される同時アクセスグループに対するレコードは、
    前記同時アクセスグループのID、発生頻度、長さ及び前記同時アクセスグループに含まれるデータのアドレスリストを含むことを特徴とする請求項12に記載のストレージコントローラ。
  14. 前記同時アクセスパターンは、
    前記特定の時間区間の中の第1時間区間で共にアクセスされるデータの第1同時アクセスサブパターンと、
    前記特定の時間区間の中の第2時間区間で共にアクセスされるデータの第2同時アクセスサブパターンとを含み、
    前記第1同時アクセスサブパターンと前記第2同時アクセスサブパターンは時間間隔をおいてアクセスされることを特徴とする請求項1に記載のストレージコントローラ。
  15. 前記第1同時アクセスサブパターンに従うデータに対する読込み要求が発生した場合、前記データ配置部は前記第2同時アクセスサブパターンに従うデータを前記プリフェッチバッファに格納することを特徴とする請求項14に記載のストレージコントローラ。
  16. 前記データ配置部は前記第2同時アクセスサブパターンに従うデータを前記時間間隔の間に前記プリフェッチバッファに格納することを特徴とする請求項15に記載のストレージコントローラ。
  17. 特定の時間区間で共にアクセスされるデータの同時アクセス(co−access)パターンを検出し、前記同時アクセスパターンに従う複数のデータを含む同時アクセスグループを生成する同時アクセスパターンマイニング部と、
    前記生成された同時アクセスグループ数を減少させるための最適化を行う同時アクセスグループ最適化部とを有することを特徴とするストレージコントローラ。
  18. 前記同時アクセスグループ最適化部は、
    同時にアクセスされる同時アクセスグループをクラスタリングするクラスタリング部と、
    前記クラスタリングされた同時アクセスグループを一つの同時アクセスグループに統合する同時アクセスグループ統合部とを含むことを特徴とする請求項17に記載のストレージコントローラ。
  19. 前記クラスタリング部は前記生成された同時アクセスグループに対する時間的発生パターン(temporal occurrence pattern)を示すベクトルを利用して同じ前記時間区間にアクセスされる同時アクセスグループをクラスタリングすることを特徴とする請求項18に記載のストレージコントローラ。
  20. 前記同時同時アクセスパターンマイニング部によって生成された同時アクセスグループを格納する同時アクセスグループデータベースをさらに有し、
    前記同時アクセスグループ最適化部は前記同時アクセスグループデータベースに格納された同時アクセスグループに対して最適化を行うことを特徴とする請求項17に記載のストレージコントローラ。
JP2015103220A 2014-05-20 2015-05-20 ストレージコントローラ Active JP6639107B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140060411A KR102295769B1 (ko) 2014-05-20 2014-05-20 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법
KR10-2014-0060411 2014-05-20

Publications (2)

Publication Number Publication Date
JP2015219926A true JP2015219926A (ja) 2015-12-07
JP6639107B2 JP6639107B2 (ja) 2020-02-05

Family

ID=53396180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015103220A Active JP6639107B2 (ja) 2014-05-20 2015-05-20 ストレージコントローラ

Country Status (5)

Country Link
US (2) US9996271B2 (ja)
EP (1) EP2947557B1 (ja)
JP (1) JP6639107B2 (ja)
KR (1) KR102295769B1 (ja)
CN (1) CN105094694B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606601B2 (en) 2017-02-03 2020-03-31 Fujitsu Limited Method, system and non-transitory computer-readable storage medium for analyzing access to storage device

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102305584B1 (ko) * 2015-01-19 2021-09-27 삼성전자주식회사 언어 모델 학습 방법 및 장치, 언어 인식 방법 및 장치
JP2016162243A (ja) * 2015-03-02 2016-09-05 富士通株式会社 データ格納制御プログラム、データ格納制御装置、およびデータ格納制御方法
US10592171B2 (en) 2016-03-16 2020-03-17 Samsung Electronics Co., Ltd. Multi-stream SSD QoS management
KR102007086B1 (ko) * 2017-09-29 2019-08-02 연세대학교 산학협력단 프리페치 장치 및 방법과 이에 관한 기록매체
FR3076002B1 (fr) * 2017-12-22 2021-05-07 Bull Sas Procede d'amelioration du temps d'execution d'une application informatique
KR102031490B1 (ko) * 2018-04-26 2019-10-11 연세대학교 산학협력단 프리페치 장치 및 방법
FR3086408A1 (fr) * 2018-09-21 2020-03-27 Bull Sas Procede de determination du type de sequence temporelle d'acces memoire se deroulant lors d'une execution d'une application informatique
CN112328185B (zh) * 2020-12-28 2021-03-23 烽火通信科技股份有限公司 一种基于分布式存储的智能预读方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082890A1 (en) * 2008-09-30 2010-04-01 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations
US20100115206A1 (en) * 2008-11-04 2010-05-06 Gridlron Systems, Inc. Storage device prefetch system using directed graph clusters

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6963959B2 (en) 2002-10-31 2005-11-08 International Business Machines Corporation Storage system and method for reorganizing data to improve prefetch effectiveness and reduce seek distance
US7496592B2 (en) 2005-01-31 2009-02-24 International Business Machines Corporation Systems and methods for maintaining closed frequent itemsets over a data stream sliding window
JP5094193B2 (ja) 2007-04-16 2012-12-12 株式会社日立製作所 記憶システム及びその制御方法
US8316288B2 (en) 2007-11-09 2012-11-20 Carnegie Mellon University High efficiency, high performance system for writing data from applications to a safe file system
US8214608B2 (en) 2008-11-04 2012-07-03 Gridiron Systems, Inc. Behavioral monitoring of storage access patterns
US8959481B2 (en) 2009-04-30 2015-02-17 International Business Machines Corporation Determining system level dependencies
US8296517B2 (en) * 2009-08-19 2012-10-23 Oracle International Corporation Database operation-aware striping technique
KR101105363B1 (ko) 2010-01-18 2012-01-16 연세대학교 산학협력단 롱 트랜잭션 데이터 스트림을 위한 빈발항목집합 탐색 방법
US8645631B2 (en) * 2010-03-29 2014-02-04 Via Technologies, Inc. Combined L2 cache and L1D cache prefetcher
CN102142992A (zh) 2011-01-11 2011-08-03 浪潮通信信息系统有限公司 通信告警频繁项集挖掘引擎及冗余处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082890A1 (en) * 2008-09-30 2010-04-01 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations
US20100115206A1 (en) * 2008-11-04 2010-05-06 Gridlron Systems, Inc. Storage device prefetch system using directed graph clusters

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606601B2 (en) 2017-02-03 2020-03-31 Fujitsu Limited Method, system and non-transitory computer-readable storage medium for analyzing access to storage device

Also Published As

Publication number Publication date
EP2947557A1 (en) 2015-11-25
JP6639107B2 (ja) 2020-02-05
CN105094694B (zh) 2019-12-10
CN105094694A (zh) 2015-11-25
US20180260117A1 (en) 2018-09-13
KR20150133524A (ko) 2015-11-30
US9996271B2 (en) 2018-06-12
KR102295769B1 (ko) 2021-08-30
EP2947557B1 (en) 2019-07-03
US20150339235A1 (en) 2015-11-26
US10296225B2 (en) 2019-05-21

Similar Documents

Publication Publication Date Title
JP6639107B2 (ja) ストレージコントローラ
US20170364304A1 (en) Tracking hot areas of disk drive
CN105612518B (zh) 用于自主存储器搜索的方法及系统
US20170124077A1 (en) Flash module provided with database operation unit, and storage device
US10976964B2 (en) Storage system and method for hit-rate-score-based selective prediction of future random read commands
US11816015B2 (en) Management of event log information of a memory sub-system
US9904807B2 (en) Memory system and information processing system
US11874779B2 (en) Scheduling of read operations and write operations based on a data bus mode
US11604749B2 (en) Direct memory access (DMA) commands for noncontiguous source and destination memory addresses
JP7411127B2 (ja) ストレージ装置及びデータ処理方法
US10534562B2 (en) Solid state drive
CN113448511B (zh) 通过链接阵列依序预提取
US11106390B1 (en) Combining in-process reads to reduce die collisions
TWI652570B (zh) 非依電性記憶體裝置及其位址分類方法
EP3759582B1 (en) Performing operation on data blocks concurrently and based on performance rate of another operation on data blocks
US20170277445A1 (en) Data storage device, operating method thereof, and data processing system including the same
JPWO2017082323A1 (ja) 分散処理システム、分散処理装置、分散処理方法およびプログラム
CN112397113B (zh) 要求延迟及数据值相关的存储器预提取系统及方法
US20220291869A1 (en) Data processing device
US20210405876A1 (en) Storing data based on a probability of a data graph
US11210225B2 (en) Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host
US12007898B2 (en) Utilizing a designated memory address to pre-fetch for memory sub-system with cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190605

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191224

R150 Certificate of patent or registration of utility model

Ref document number: 6639107

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250