JP5870213B2 - ストレージシステム及びストレージシステムにおけるデータ転送制御方法 - Google Patents

ストレージシステム及びストレージシステムにおけるデータ転送制御方法 Download PDF

Info

Publication number
JP5870213B2
JP5870213B2 JP2014551437A JP2014551437A JP5870213B2 JP 5870213 B2 JP5870213 B2 JP 5870213B2 JP 2014551437 A JP2014551437 A JP 2014551437A JP 2014551437 A JP2014551437 A JP 2014551437A JP 5870213 B2 JP5870213 B2 JP 5870213B2
Authority
JP
Japan
Prior art keywords
storage device
data
processor
transfer
user data
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.)
Expired - Fee Related
Application number
JP2014551437A
Other languages
English (en)
Other versions
JP2015519619A (ja
Inventor
尚也 岡田
尚也 岡田
正法 高田
正法 高田
洋志 平山
洋志 平山
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2015519619A publication Critical patent/JP2015519619A/ja
Application granted granted Critical
Publication of JP5870213B2 publication Critical patent/JP5870213B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ストレージシステム及びストレージシステムにおけるデータ転送制御方法に関する。
ストレージ装置は、典型的に、磁気ディスク装置又はフラッシュメモリデバイスのディスクアレイと、ディスクアレイとホストコンピュータとの間のデータ転送を制御するストレージコントローラを含む。ストレージコントローラは、ホストコンピュータと接続するためのデバイスであるホストインターフェースと、ディスクアレイと接続するためのデバイスであるドライブインタフェース、データ転送の及びホストコンピュータから頻繁に参照されるデータの格納に用いられるキャッシュ領域を含む主記憶デバイス、及びプロセッサを含む。
ストレージ装置の可用性を上げるために、これらの構成部品を二重化することがある。このとき、構成部品の集合をクラスタと呼び、クラスタを専用インタフェースで相互に接続することがある。例えば、特許文献1は、ストレージシステムを、ストレージ専用LSIを使用して構成し、ホストコンピュータの接続されているクラスタのホストインターフェースから、要求されたデータが格納されている他のクラスタのキャッシュ領域へアクセスする技術を開示している。
この他、非特許文献1は、汎用インタフェース規格であるPCI−Expressの標準技術として、PCIデバイスが、プロセッサにデータを送信する際、データの参照頻度、特性を示すTPH(Transaction Layer Packet Processing Hint)と呼ばれる情報をデータに付与し、プロセッサがこれを参照すると共に、参照頻度が高いと判断した受信データをプロセッサ内蔵キャッシュメモリに格納することを開示している。
特開2010−33125号公報
PCI-SIG PCI-Express Base Specification Revision 3.0(released on 10 Nov. 2010)
データ転送性能向上のため、ストレージ装置は主記憶デバイスを使用して、ユーザデータのキャシングを行う。ユーザデータはホストコンピュータが作成し、ストレージ装置に格納または取出しを行うデータを表す。ストレージ装置のデータ転送量の増加に伴い、主記憶デバイスへのアクセスが増加し、主記憶デバイスの帯域が消費される。主記憶デバイスの帯域の不足は、ストレージシステムのデータ転送性能を低下させる。
あるいは、部品集約やコスト低減などの背景から、専用LSIを用いず、汎用プロセッサが持つ、PCI−Expressインタフェース、メモリインタフェース、クラスタ間接続インタフェース及びDMA機能等を用いて、ストレージ装置を構成する場合がある。例えば、複数クラスタを含むストレージ装置においては、汎用プロセッサの機能制約により、ホストインターフェースやドライブインタフェースから、直接に、他クラスタの主記憶デバイスにアクセスすることができない。
このため、ホストインターフェース又はドライブインタフェースから他のクラスタのキャッシュ領域にアクセスする一つの方法は、各クラスタに備えられている主記憶を用い、ホストインターフェース又はドライブインタフェースと同一クラスタの主記憶デバイスとの通信と、主記憶デバイスと他クラスタの主記憶デバイスとの通信の、2段階通信を行う。しかし、この手法は、主記憶デバイスの帯域を消費してしまうため、ストレージ装置のデータ転送性能を低下させる。
一方、TPH技術を用いて主記憶デバイスの帯域の消費を抑える方法が知られている。しかし、一般に、プロセッサの内蔵キャッシュの容量はせいぜい10〜20MB程度であり、ストレージ装置のキャッシュ機能のために必要な数GB以上の容量に対し、容量が大幅に不足する。
本発明の一態様は、ユーザデータを格納する複数の不揮発性記憶デバイスと、前記複数の不揮発性記憶デバイスとホストコンピュータとの間のデータ転送を制御するコントローラと、を含むストレージシステムである。前記コントローラは、プロセッサコア回路と、プロセッサキャッシュと、ユーザデータを一時的に格納するキャッシュ領域を含む主記憶デバイスと、を含む。前記プロセッサコア回路は、前記ホストコンピュータから受信したコマンドの内容を特定する。前記プロセッサコア回路は、前記コマンドの指定ユーザデータの格納記憶デバイスを特定する。前記プロセッサコア回路は、前記コマンドの種別及び前記特定した格納記憶デバイスに基づいて、前記コントローラにおけるデータ転送において、前記プロセッサキャッシュを転送バッファとして使用するか否かを決定する。
本発明の一態様により、ストレージシステムでのユーザデータのキャッシングにおいて主記憶デバイスの帯域の消費を抑え、データ転送性能の低下を抑えることができる。
本実施形態における、ストレージ装置及びそれを利用するホストコンピュータを含むコンピュータシステムの構成を模式的に示す。 本実施形態における、プロセッサからホストインターフェースLSIへの指示内容を示す。 本実施形態における、ホストインターフェースLSIが、ホストコンピュータからのライト要求を処理する動作を示す。 本実施形態における、プロセッサからドライブインタフェースLSIへの指示内容を示す。 本実施形態において、ドライブインタフェースLSIが、記憶ドライブへのリード処理を行う動作を示す。 本実施形態における、プロセッサからDMAへの指示内容を示す。 本実施形態において、DMAがプロセッサからの指示を受けた場合の動作を示す。 本実施形態における、プロセッサキャッシュ及び主記憶デバイスとメモリ空間との対応関係を示す。 本実施形態における、ホストコンピュータからリードコマンドを受けたデータが他のクラスタのキャッシュ領域上に存在した場合におけるデータ転送フローを示す。 本実施形態における、ホストコンピュータからリードコマンドを受けたデータがキャッシュ領域上に存在しなかった場合におけるデータ転送フローを示す。 本実施形態における、ホストコンピュータからリードコマンドを受け取った場合のフローチャートを示す。 本実施形態における、ホストコンピュータからリードコマンドを受け取った場合のフローチャートを示す。 本実施形態において、ホストコンピュータからのライトコマンドを受け取ってから、データを両クラスタに二重化するまでのデータ転送フローを示す。 本実施形態において、ホストコンピュータからライトコマンドを受け取ってから、データを両クラスタに二重化するまでのプロセッサのフローチャートを示す。 本実施形態において、ホストコンピュータから書き込まれたデータが長い場合における、書き込まれたデータを元にパリティを生成し、記憶ドライブに書き込む際のデータフローを示す。 本実施形態において、ホストコンピュータから書き込まれたデータが短い場合における、書き込まれたデータと記憶ドライブに格納されているデータを元にパリティを生成し、記憶ドライブに書き込む際のデータフローを示す。 本実施形態における、主記憶デバイス又はプロセッサキャッシュに格納されているライトデータを、記憶ドライブに格納する際のフローチャートを示す。 本実施形態における、主記憶デバイスに格納されているライトデータを、記憶ドライブに格納する際のフローチャートを示す。 本実施形態における、プロセッサキャッシュに格納されているライトデータを、記憶ドライブに格納する際のフローチャートを示す。
以下に説明する例は、ストレージ装置において、プロセッサキャッシュをホストフロントエンドとバックエンドとの間のデータ転送の転送バッファ、さらに、クラスタ間のデータ転送の転送バッファとして利用して、主記憶デバイスの消費帯域を削減する。これにより、ストレージ装置の性能を向上させる。以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
図1は、ストレージシステムを構成するストレージ装置101と、ストレージ装置101にアクセスするホストコンピュータ102と、を含むコンピュータシステムの構成例を示している。コンピュータシステムは、データ処理、演算を行うホストコンピュータ102と、ストレージ装置101と、を含む。ストレージ装置101は、ストレージコントローラ201と、ユーザデータを格納する不揮発性の記憶デバイスである記憶ドライブ303(ドライブとも呼ぶ)を収容するドライブ筐体202と、を有する。
ホストコンピュータ102の数は、一つでも複数でも良い。ストレージ装置101が含むストレージコントローラ201、ドライブ筐体202、ドライブ筺体202、ドライブ303のそれぞれの数は、設計に依存する。ドライブ303の種別は問わない。例えば、ハードディスクドライブ(HDD)でもよいし、フラッシュメモリなどの不揮発性メモリを搭載したSolid State Drive(SSD)であってもよい。
ドライブ303は、不揮発性の記憶媒体を含み、ホストコンピュータ102から転送されたユーザデータとユーザデータを基にコア503やDMA511が計算し出力する冗長データを格納する。例えば、複数のドライブ303がRAIDを構成し、RAIDパリティデータを格納することで、ドライブ303に障害が発生した場合のデータ消失を防ぐことが出来る。
ストレージ装置101は、ホストコンピュータ102と、Fibre Channel(FC)やiSCSI等によるデータ転送路11、12で接続している。ストレージコントローラ201は、複数のクラスタを有し、本例において、2つのクラスタ301、302を有する。クラスタ301は、ホストコンピュータ102と接続するためのデバイスであるホストインターフェースLSI403、ドライブ筐体202(に収容されているドライブ303)と接続するためのデバイスであるドライブインタフェースLSI405、内部処理を行うためのプロセッサ401、プロセッサ401に接続されている主記憶デバイス407を含む。
クラスタ302は、ホストコンピュータ102と接続するためのデバイスであるホストインターフェースLSI404、ドライブ筐体202と接続するためのデバイスであるドライブインタフェースLSI406、内部処理を行うためのプロセッサ402、プロセッサ402に接続されている主記憶デバイス408を含む。2つのクラスタ301、302は、高速シリアル汎用インタフェースであるPCI−Express(PCIe)で相互に接続されている。クラスタ301、302間を接続する汎用インタフェースは、設計に依存する。
クラスタ301内のホストインターフェースLSI403、クラスタ302内のホストインターフェースLSI404は、ホストコンピュータ102とストレージコントローラ201との通信に用いられるFC、Fibre Channel Over Ethernet(FCoE)、iSCSI等のプロトコルを、ストレージコントローラ201内部で用いられるPCIeのプロトコルに変換する機能を有する。
クラスタ301内のドライブインタフェースLSI405、302内のドライブインタフェースLSI406は、ドライブ303とストレージコントローラ201の通信に用いられるFC、Serial Attached SCSI(SAS)、Serial Advanced Technology Attachment(SATA)等のプロトコルを、ストレージコントローラ201内部で用いられるプロトコル、例えば、PCIeに変換する機能を有する。
図1に示すように、クラスタ301、302は同様の構成を有している。以下においては、クラスタ301の構成をより具体的に説明する。主記憶デバイス407は、Double Data Rate Synchronous DRAM等の半導体メモリを用いて構成される記憶デバイスである。主記憶デバイス407は、ホストコンピュータ102から読み書きされるデータを一時的に記憶し(ユーザデータのキャッシング)、又、プロセッサ401が内部処理で扱うデータや、ストレージコントローラ201を制御するためのプログラムを格納する。
プロセッサ401は、演算やデータの読み書きを実行してストレージコントローラ201の制御を行うコア503、プロセッサキャッシュ501、主記憶デバイス407とのデータ転送を行うメモリインタフェース513有する。プロセッサのコア回路は、1又は複数のコアを含むことができる。
プロセッサキャッシュ501は、主記憶デバイス407とプロセッサコア503との間ある、主記憶デバイス407の上位階層のメモリである。プロセッサコア503からプロセッサキャッシュ501へのアクセス(リード又はライト)は、主記憶デバイス407へのアクセスよりも高速である。プロセッサキャッシュ501は、典型的には、eDRAMやSRAM等を用いて構成され、プロセッサチップに内蔵されている。
プロセッサキャッシュ501は、典型的には、複数の階層に分割されている。本実施形態において、プロセッサキャッシュ501は、ストレージコントローラ201の制御情報データを一時的に記憶する他、ホストコンピュータ102から読み書きされるユーザデータを一時的に記憶する(ユーザデータのキャッシング)。プロセッサコア503は、主記憶デバイス407からプロセッサキャッシュ501を介してデータのリード及びライトする。
プロセッサ401は、さらに、ホストインターフェースLSI403とプロセッサ401を接続するPCIeインタフェース505、ドライブインタフェースLSI405とプロセッサ401とを接続するPCIeインタフェース509、自クラスタ(ローカルクラスタとも呼ぶ)301の主記憶デバイス407と他のクラスタ(リモートクラスタとも呼ぶ)302とのデータ転送を行うコントローラであるDirect Memory Access(DMA)511、リモートクラスタ302との通信インタフェースとなるNon Transparent Bridge(NTB)507を有する。
プロセッサ401の内部構成要素は、内部ネットワーク20で相互に接続されている。プロセッサキャッシュ501は、プロセッサ401が扱うメモリ空間上のデータのうちの一部を保持する。残りのデータは、主記憶デバイス407に保持される。
図2は、プロセッサ401、402が、それぞれ、ホストインターフェースLSI403、404に対し、データ転送を指示する際の指示内容(ホストインターフェースLSI転送指示パラメータ701)の例である。この指示は、ホストコンピュータ102からのコマンド(リードコマンド/ライトコマンド)に対する対応を行う際に、プロセッサ401、402によって、ホストインターフェースLSI403、404にそれぞれ発行される。
プロセッサ401、402(プロセッサコア503、504)は、ホストコンピュータ102から受信したコマンドを解析し、転送指示パラメータ701を含む本指示を作成する。コマンドは、コマンド種別、ユーザデータのアドレス(ホストコンピュータによる管理ボリューム及びボリューム内アドレス)及び転送データの転送長の情報を含む。
転送指示パラメータ701は、プロセッサ401又は402からの指示内容の種別を示すコマンド制御情報702、転送データの転送長を表すI/O転送長703、ホストコンピュータ102からのコマンドの識別子であるTag番号704、ストレージコントローラ201の主記憶デバイス407又は408上のアドレスを示すメモリアドレス705に加え、ホストインターフェースLSI403又は404が、データ転送を実行する際に、転送データに対しヒント情報(Transaction Layer Packet Processing Hint(TPH))を付加するかどうかの指示706を含む。
図3は、ホストインターフェースLSI403、404が、それぞれのプロセッサ401、402から、ライトコマンドを処理するよう指示を受けた場合における動作を示すフローチャートである。以下において、ホストインターフェースLSI403の処理を例として説明する。
ホストインターフェースLSI403は、プロセッサ401から転送指示パラメータ701を受信すると、ホストコンピュータ102に対し、ライトデータ(ユーザデータ)の受信準備が完了したことを通知し(S4101)、その後、ホストコンピュータ102からライトデータを受信する(S4102)。
次に、ホストインターフェースLSI403は、対応するホストインターフェースLSI転送指示パラメータ701を参照し、ヒント情報付加の指示706の有無を確認する(S4103)。ヒント情報付加の指示がある場合(S4103:YES)、ホストインターフェースLSI403は、データが短い時間内に参照されることを示すヒント情報を、ホストコンピュータ102から受信したユーザデータを含むパケットに付与し、プロセッサ401に対し送信する(S4104)。
パケットを受信したプロセッサ401は、ユーザデータにヒント情報が付与されていることを確認し、その後、受け取ったユーザデータをプロセッサキャッシュ501に格納する。具体的には、PCIeI/F505が、受信したユーザデータにヒント情報が付与されているか否かを判定し、ヒント情報が付与されている場合には、プロセッサキャッシュ501にユーザデータを転送する。プロセッサキャッシュ501(内のコントローラ)は、メモリアドレス705から算出したアドレスに、受信したユーザデータを格納する。
一方、ヒント情報付加の指示がない場合(S4103:NO)、ホストインターフェースLSI403は、ヒント情報を付与せず、プロセッサ401に対し、ホストコンピュータ102から受信したユーザデータを送信する(S4105)。
データを受信したプロセッサ401は、ヒント情報が無いことを確認し、受け取ったデータを主記憶デバイス407に格納する。具体的には、PCIeI/F505が、受信したユーザデータにヒント情報が付与されているか否かを判定し、ヒント情報が付与されていない場合には、メモリIF513を介して主記憶デバイス407にユーザデータを転送する。最後に、ホストインターフェースLSI403は、プロセッサ401にデータの転送が完了したことを通知し(S4106)、処理を終了する。
図4はプロセッサ401、402が、それぞれのドライブインタフェースLSI405、406に対し、データ転送を指示する際の指示内容(ドライブインタフェースLSI転送指示パラメータ801)の例である。この指示は、ドライブ303に対し読み書きの要求を行う際に、プロセッサ401、402によって、それぞれのドライブインタフェースLSI405、403に発行される。プロセッサ401、402は、ホストインターフェースLSI403への指示701と同様に、ホストホストコンピュータ102から受信したコマンドから、この転送指示パラメータ801を含む転送指示を作成する。
転送指示パラメータ801は、プロセッサ401又は402からの指示内容の種別を示すコマンド制御情報802、転送データの転送長を表す転送長803、ドライブ303内に配置されているデータのアドレス(物理アドレス)を示すドライブ内アドレス804、ドライブインタフェースLSI405又は406がデータ転送を実行する際に、ストレージコントローラ201の主記憶デバイス407又は408上のアドレスを示すメモリアドレス805、に加え、ドライブインタフェースLSI405又は406がデータ転送を実行する際に、転送データに対しヒント情報を付加するかどうかの指示806を含む。
図5は、ドライブインタフェースLSI405、406が、それぞれのプロセッサ401、402から、ドライブ303からのリードを行うよう指示を受けた場合における動作を示すフローチャートである。以下において、ドライブインタフェースLSI405の処理を例として説明する。
まず、ドライブインタフェースLSI405は、プロセッサ401から、転送指示パラメータ801を含む転送指示を受信すると、ドライブ303に対し、リードコマンドを発行し、ドライブ303にユーザデータの転送を指示する(S5201)。次に、ドライブインタフェースLSI405は、ドライブ303から、指示に対応したユーザデータを受信する(S5202)。
次に、ドライブインタフェースLSI405は、対応するドライブインタフェースLSI転送指示パラメータ801を参照し、ヒント情報付加の指示806の有無を確認する(S5203)。ヒント情報付加の指示がある場合(S5203:YES)、ドライブインタフェースLSI405は、データが短時間内に参照されることを示すヒント情報を、読みだしたユーザデータを含むパケットに付与し、プロセッサ401に対して送信する(S5204)。
ユーザデータを受信したプロセッサ401は、ヒント情報が付加されていることを確認し、受け取ったデータをプロセッサキャッシュ501に格納する。具体的には、PCIeI/F509が、受信したユーザデータにヒント情報が付与されているか否かを判定し、ヒント情報が付与されている場合には、プロセッサキャッシュ501にユーザデータを転送する。プロセッサキャッシュ501(内のコントローラ)は、メモリアドレス805から算出したアドレスに、受信したユーザデータを格納する。
一方、ヒント情報付加の指示がない場合(S5203:NO)、ドライブインタフェースLSI405は、ヒント情報を付与せず、プロセッサ401に対し、ドライブ303から受信したユーザデータを送信する(S5205)。
ユーザデータを受信したプロセッサ401は、ヒント情報が無いことを確認し、受け取ったデータを主記憶デバイス407に格納する。具体的には、PCIeI/F509が、受信したユーザデータにヒント情報が付与されているか否かを判定し、ヒント情報が付与されていない場合には、メモリI/F513を介して主記憶デバイス407にユーザデータを転送する。最後に、ドライブインタフェースLSI405は、プロセッサ401にデータの転送が完了したことを通知し(S5206)、処理を終了する。
図6は、プロセッサコア503、504が、それぞれのDMA511、512に対し、データ転送やパリティ生成を指示する際の指示内容(DMAパラメータ)の例である。本例において、2種類の指示内容を説明する。一つは、データ転送のためのデータ転送DMAパラメータ901である。以下では、クラスタ間のデータ転送の例を説明する。他の一つは、RAIDパリティの演算を行うためのパリティ生成のDMAパラメータ902である。
プロセッサコアが、異なるクラスタ(リモートクラスタ)のDMAに指示を行う場合、プロセッサコアは、リモートクラスタに、同様の指示内容と共にリモートクラスタのDMAに指示する要求を送信し、それらを受信したリモートクラスタのプロセッサコアが、リモートクラスタのDMAに上記指示内容の指示を行う。
データ転送の指示は、主記憶デバイス又はプロセッサキャッシュ上にあるデータを、他のクラスタの主記憶デバイス又はプロセッサキャッシュに転送する際に用いられる。パリティ生成は、転送指示を受けたDMAと同じクラスタの主記憶デバイス又はプロセッサキャッシュ上にあるデータを元にパリティを生成し、生成したパリティを同じクラスタの主記憶デバイス又はプロセッサキャッシュに格納する際に用いられる。
指示内容がデータ転送のDMAパラメータ901である場合、当該指示は、コマンド種別903、転送データの転送元アドレス904、転送データの転送先アドレス905、転送データの転送長906、転送時のヒント情報付加の有無を示すヒント情報付加指示907を含む。アドレス904、905は、主記憶デバイス又はプロセッサキャッシュのアドレスである。
指示内容がパリティ生成のDMAパラメータ902である場合の場合、当該指示は、コマンド種別908、パリティ生成のための元データのアドレス909、生成したパリティの出力先アドレス910、パリティの生成サイズを示す転送長911、転送時のヒント情報付加の有無を示すヒント情報指示912を含む。アドレス909、910は、主記憶デバイス又はプロセッサキャッシュのアドレスである。
図7は、DMA511、512が、それぞれのプロセッサ401、402から指示を受けた場合における、動作を示すフローチャートである。以下において、DMA511の処理を例として説明する。上述のように、DMAは、リモートプロセッサからの指示を、ローカルプロセッサ(DMAと同一クラスタのプロセッサ)を介して受け取る。
まず、DMA511は、プロセッサ401から受信したDMAパラメータ901/902を参照し、指定されている転送元アドレス905/909から、データを読み込む(S6001)。次に、DMA511は、受信したパラメータ901/902のコマンド種別903/908のフィールドを参照し、処理種別を判定する(S6002)。
処理種別がパリティ生成の場合(S6002:パリティ演算)、DMA511は、次に、ヒント情報指示912のフィールドを参照して、ヒント情報の付加が指示されているか否かを判定する(S6003)。ヒント情報の付加が指示されている場合(S6003:YES)、DMA511は、パリティ(パリティ演算結果)を生成し、それに対しヒント情報を付加して、アドレス情報と共に出力する(S6005)。プロセッサキャッシュ501のコントローラは、出力されたデータを受信し、付加されたヒント情報を検出すると、転送先アドレス905で特定されるアドレスに、受信したパリティを格納する。
一方、ヒント情報の付加が指示されていなければ(S6003:NO)、DMA511は、パリティ演算結果に対しヒント情報を付加せずに、アドレス情報と共に出力する(S6004)。メモリI/F513は、出力されたデータを受信し、ヒント情報が付加されていないことを確認すると、主記憶デバイス407の転送先アドレス905で特定されるアドレスに、受信したパリティを格納する。DMA511は、その後、プロセッサ401にパリティ生成の完了を通知し(S6006)、処理を終了する。
一方、ステップS6002において、処理種別がデータ転送の場合(S6002:データ転送)、DMA511は、次に、ヒント情報付加指示907のフィールドを参照して、ヒント情報付加が指示されているかを判定する(S6007)。ヒント情報付加が指示されている場合(S6007:YES)、DMA511は、転送データに対しヒント情報を付加して、NTB507を介して、リモートクラスタ302のプロセッサ402へデータを出力する(S6008)。
リモートクラスタ302のNTB508は、転送データにヒント情報が付与されていることを確認し、データをプロセッサキャッシュ502に転送する。プロセッサキャッシュ502は、指定されたアドレスに転送データを格納する。
一方、ヒント情報の付加が指示されていなければ(S6007:NO)、DMA511は、転送データに対しヒント情報を付加せずに、NTB507を介して、リモートクラスタ302のプロセッサ402へデータを出力する(S6009)。リモートクラスタ302のNTB508は、転送データにヒント情報が付与されていないことを確認し、データをメモリI/F514を介して、主記憶デバイス408に転送する。その後、DMA511は、プロセッサ401にデータ転送の完了を通知し(S6010)、処理を終了する。
図8は、クラスタ301の主記憶デバイス407及びプロセッサキャッシュ501とメモリ空間との間の関係例を示している。クラスタ302の主記憶デバイス408及びプロセッサキャッシュ502とメモリ空間との間の関係も同様であるが、クラスタ間で対応関係が異なっていてもよい。
ホストコンピュータ102から読み書きされるユーザデータを格納する領域は、キャッシュ領域と、一時領域とに分けられている。キャッシュ領域は、短時間内に参照されないが長時間保持しておくべきデータ、例えば、再参照の可能性が高いデータを格納する。主記憶デバイスでのデータの再参照のため、プロセッサキャッシュ501上のキャッシュ領域に格納するデータは、プロセッサコア503、504の命令によって主記憶デバイス407に追い出される。一時領域は、短時間内に参照されるデータを保持する。主記憶デバイス407上で再参照さる事を防ぐため、プロセッサキャッシュ501の一時領域に格納されるデータは短時間で上書きされる。短時間内に参照されるデータへのアクセスは、プロセッサキャッシュ501に集中するので、プロセッサキャッシュ501へのアクセス頻度が高くなる。
このデータ配置により、プロセッサキャッシュ501へのアクセス頻度が高くなり、主記憶デバイス407へのアクセス頻度が低くなる。また、一時領域は、短時間内に書き換えられるので、限られたプロセッサキャッシュ容量で、主記憶デバイス407へのアクセスを削減することができる。
本例において、プロセッサキャッシュ501は、一時領域の全体を含み、さらに、キャッシュ領域の一部を含む。他のキャッシュ領域は、主記憶デバイス407に含まれる。プロセッサキャッシュ501は、キャッシュ領域を全く含まなくともよい。
本例のように、キャッシュ領域が、プロセッサキャッシュ501と主記憶デバイス407の双方の領域を含む構成において、プロセッサ401は、データの性質やデータの位置情報、またはこれらの組み合わせに応じて、プロセッサキャッシュ501と主記憶デバイス407のキャッシュ領域を使い分けてもよい。例えば、データ長が所定の閾値よりも大きい場合、プロセッサ401は、当該データを主記憶デバイス407に格納し、上記閾値以下である場合に、プロセッサキャッシュ501に格納する。また、データ転送元記憶デバイスがHDDである場合、プロセッサ401は、当該データを主記憶デバイス407に格納し、SSDである場合には、プロセッサキャッシュ501に格納する。
プロセッサ401は、プロセッサキャッシュ501上で参照され、再度参照される可能性が低いデータを格納している領域を解放し、その領域を別のデータの格納に用いる。一方、プロセッサ401は、直近で再度参照されることは無いが、時間経過後に再度参照されるデータ又はその可能性が高いデータを、プロセッサキャッシュ501から主記憶デバイス407へ追い出す(移動する)。データ移動後のプロセッサキャッシュ501の領域は、他のデータの格納に使用される。これにより、プロセッサキャッシュ501の占有量及び主記憶デバイス407へのアクセスを削減する。
図9は、クラスタ301がホストコンピュータ102からリードコマンドを受け、該当するユーザデータが他のクラスタ(リモートクラスタ)302の主記憶デバイス408上に存在する場合における、転送データの流れを示している。
リモートクラスタ302のDMA512は、当該クラスタ302の主記憶デバイス408上のデータを、ホストコンピュータ102に接続されているクラスタ301へ転送する。この転送データは直ちに参照されるデータである。そこで、DMA512は、該当データがすぐに参照されることを示すヒント情報を付与し、NTB508、507を介して、データをプロセッサキャッシュ501に転送する(P3)。
次に、ホストインターフェースLSI403は、プロセッサキャッシュ501のデータを、ホストコンピュータ102に送信する(P4)。データの送信後、ホストインターフェースLSI403はホストコンピュータ102にデータ送信完了を通知する。これにより、ホストコンピュータ102のリードコマンドへの応答が終了する。プロセッサキャッシュ501を用いることで、主記憶デバイス407へのアクセスを削減することができ、その結果、ストレージ装置101の性能を向上することができる。
図10は、ホストからリードコマンドを受け、該当するデータが主記憶デバイス上に存在せず、不揮発性半導体記憶デバイス(SSD)から読み出す場合のデータの流れである。まず、ドライブインタフェースLSI405は、ドライブ303上のデータを読み出す(P5)。
読み出されたデータは、直ちにホストインターフェースLSI403によって参照されるデータである。ドライブインタフェースLSI405は、該当データがすぐに参照されることを示すヒント情報を付与して、データをプロセッサキャッシュ501にPCIe509を介して転送する。以降は、図9のP4が示す動作と同様である(P6)。
図11、12は、ホストコンピュータ102からリードコマンドを受信した際のプロセッサの処理内容を示すフローチャートである。以下において、プロセッサ401がホストコンピュータ102からリードコマンドを受信したとして、処理内容を説明する。
図11に示すように、プロセッサコア503は、ホストコンピュータ102からホストインターフェースLSI403、PCIeI/F505を介して、リードコマンドを受信すると、コマンドの種別を判定する(S3001)。本フローでは、プロセッサコア503は、受信コマンドがリードコマンドであると判定する。プロセッサコア503は、キャッシュ管理情報(不図示)を参照し、コマンドが示すアドレスのユーザデータが過去にドライブ303から読み込まれ、主記憶デバイス上に存在しているかを判定する(S3002)。
指定データが主記憶デバイス上に存在している場合(S3002:YES、データ転送の流れについて図9参照)、プロセッサコア503は、キャッシュ管理情報を参照し、指定ユーザデータがクラスタ301、302のいずれのクラスタの主記憶デバイスに存在するかを判定し、その格納位置を特定する(S3003)。
ローカルクラスタ301と判定した場合、即ち、コマンドを発行したホストコンピュータ102が接続されているクラスタ301の主記憶デバイス407に指定ユーザデータが存在する場合(S3003:ローカルクラスタ)、プロセッサコア503は、該当データをホストコンピュータ102に転送し(S3004)、処理を終了する。
具体的には、プロセッサコア503から指示を受けたホストインターフェースLSI403が、PCIeI/F505を介して主記憶デバイス407上のユーザデータを読み出し、ホストコンピュータ102に転送する。
一方、ステップS3003において、指定ユーザデータがリモートクラスタ302と判定した場合、即ちコマンドを発行したホストコンピュータ102が接続されていないクラスタ302の主記憶デバイス408に存在する場合、ストレージコントローラ201は、主記憶デバイス408上のデータを直接にホストコンピュータ102に転送することができない。
このため、まず、プロセッサコア503は、ローカルクラスタ301のプロセッサキャッシュ501において、一時領域を確保する(S3005)。次に、プロセッサコア503は、リモートクラスタ302のDMA512を用い、リモートクラスタ302の主記憶デバイス408からローカルクラスタ301にデータを転送する。
転送データは、ローカルクラスタ301においてすぐに参照されるデータである。そこで、プロセッサコア503は、リモートクラスタ302のDMA512へ、ヒント情報を付与して指定ユーザデータを転送するよう指示する。ヒント情報を付与されたユーザデータは、NTB508からNTB507に転送され、NTB507は、ヒント情報を確認して、プロセッサキャッシュ501に転送する(S3006)。転送されたユーザデータは、プロセッサキャッシュ501で確保されている領域に格納される。
その後、プロセッサコア503は、ホストインターフェースLSI403を使用して、該当ユーザデータを、プロセッサキャッシュ501からホストコンピュータ102に転送する(S3007)。この後、ローカルクラスタの501のプロセッサキャッシュ501に確保した一時領域のデータは不要となるため、プロセッサコア503は、確保した領域を解放し(S3008)、処理を終了する。
一方、ステップS3002において、指定されたアドレスのユーザデータが主記憶デバイス上に無い場合(S3002:NO)、図12に示すように、プロセッサコア503は、ドライブ303からユーザデータを読み出し、ホストコンピュータ102に転送する。この場合、プロセッサコア503は、ボリュームデータ管理情報(不図示)を参照して、ユーザデータを格納しているドライブの種別が、HDDであるか、SSDであるか判定する(S3009)。ボリュームデータ管理情報は、ホストコンピュータ102により指定されるデータ格納位置(ボリューム及びそのアドレスを含む)と、そのアドレスのデータを格納するドライブの種別とを関連づけて管理する。
ユーザデータの格納先がHDDの場合(S3009:HDD)、その応答速度がSSDと比較して遅いため、同一データへの再度のアクセスに備え、読み出したユーザデータを、ホストコンピュータ102への転送後も、主記憶デバイス407上に保持しておくことが好ましい。そこで、プロセッサコア503は、ホストコンピュータ102への転送後にユーザデータを格納するためのキャッシュ領域を、ローカルクラスタ301の主記憶デバイス407において確保する(S3010)。
プロセッサコア503は、ドライブインタフェースLSI405を用い、ドライブ303からユーザデータを読み出す(S3011)。読み出されたユーザデータは、ホストコンピュータ102への転送ために直ぐに参照される。そこで、プロセッサコア503は、ドライブインタフェースLSI405に対し、ヒント情報を付与してユーザデータを送信することを指示する。PCIeI/F509は、ユーザデータに付与されたヒント情報に従って、プロセッサキャッシュ501にユーザデータを転送する。
その後、プロセッサコア503は、プロセッサキャッシュ501上の該当ユーザデータを、ホストコンピュータ102に、ホストインターフェースLSI403を使用して転送する(S3012)。この後、このユーザデータは、再度、ホストコンピュータ102からリードコマンドが来るまで、参照されることが無い。そこで、プロセッサコア503は、該当データを主記憶デバイスに追い出す操作を行う(S3013)。これにより、参照されないデータがプロセッサキャッシュ501を占有し続けることを防ぐ。
ユーザデータの格納先がSSDの場合(S3009:SSD、データ転送の流れについて図10参照)、SSDの応答速度は速いため、当該ユーザデータを主記憶デバイス407に保持せず、主記憶デバイス407の領域を他のデータに使用することが好ましい。
そこで、プロセッサコア503は、ユーザデータを格納するための一時領域を、ローカルクラスタ301のプロセッサキャッシュ501において確保する(S3014)。
その後、プロセッサコア503は、ドライブインタフェースLSI405を用い、ドライブ303からユーザデータを読み出す(S3015)。プロセッサコア503は、ドライブインタフェースLSI405に対し、ヒント情報を付与してユーザデータを送信することを指示する。PCIeI/F509は、ユーザデータに付与されたヒント情報に従って、プロセッサキャッシュ501にユーザデータを転送する。転送先の指定アドレスは、ステップS3014で確保された一次領域であり、プロセッサキャッシュ501のコントローラは、ユーザデータをそこに格納する。
その後、プロセッサコア503は、プロセッサキャッシュ501上の該当ユーザデータを、ホストコンピュータ102に、ホストインターフェースLSI403を使用して転送する(S3016)。この後、プロセッサコア503は、該当ユーザデータを格納しているプロセッサキャッシュ501の一時領域を解放する(S3017)。
図13は、クラスタ301がホストコンピュータ102からライトコマンドを受けてから、受信したユーザデータを、両クラスタ301、302の主記憶デバイス407、408に二重化するまで(フロントエンドライト)のデータ転送の流れを示している。
ホストインターフェースLSI403は、ホストコンピュータ102からライトデータ(ユーザデータ)を受け取る。受信されたユーザデータは、二重化のため、直ちに参照される。そこで、ホストインターフェースLSI403は、該当ユーザデータがすぐに参照されることを示すヒント情報を付与することで、プロセッサキャッシュ501に格納する(P7)。
次に、ハードウェア障害によるデータ消失を防ぐため、DMA511は、プロセッサキャッシュ501上のデータを、リモートクラスタ302に転送する。転送先のリモートクラスタ302は、データに誤りが無いか、DIF(Data Integrity Field)と呼ばれる保証コードを用いて照合する。
DMA511は、データが短時間内に参照されることを示すヒント情報を付与し、リモートクラスタ302のプロセッサキャッシュ502にデータを転送する(P8)。次に、リモートクラスタ302のプロセッサコア504が、保証コード検証を行う(P9)。
その後、該当ユーザデータは、ドライブ303への書き込みまでの間、アクセスされることが無いため、プロセッサコア503、504は、それぞれのプロセッサキャッシュ501、502から、それぞれの主記憶デバイス407、408に、ユーザデータを追い出す(P10、P11)。
図14は、ホストコンピュータ102からライトコマンドを受信した際のプロセッサ401、402の処理(フロントエンドライト)の内容を示すフローチャートである。以下において、クラスタ301がライトコマンドを受信したものとして、フローチャートの処理を説明する。
プロセッサコア503は、ホストコンピュータ102からホストインターフェースLSI403、PCIeI/F505を介して、ライトコマンドを受信すると、コマンドの種別を判定する(S1009)。本フローでは、プロセッサコア503は、受信コマンドがライトコマンドであると判定する。
プロセッサコア503は、次に、ローカルクラスタ301において、キャッシュ領域を確保する(S1010)。本例では、主記憶デバイス407においてキャッシュ領域を確保する。そして、プロセッサコア503は、ホストインターフェースLSI403に対し、ホストコンピュータ102から受け取ったユーザデータの書き込み(転送)を指示する(S1011)。この時転送されるユーザデータは、リモートクラスタ302への二重化のため直ちに参照されるため、プロセッサコア503は、ホストインターフェースLSI403に対し、ヒント情報を付与してユーザデータを転送するよう指示する。
次に、プロセッサコア503は、リモートクラスタ302におけるキャッシュ領域を確保する(S1012)。本例においては、主記憶デバイス408においてキャッシュ領域を確保する。プロセッサコア503は、リモートクラスタ302のプロセッサコア504に、主記憶デバイス408においてキャッシュ領域を確保することを指示する。
次に、プロセッサコア503は、ローカルクラスタ301のDMA511に対し、ローカルクラスタ301のプロセッサキャッシュ501上のユーザデータを、リモートクラスタ302へ転送することを指示する(S1013)。リモートクラスタ302に転送されたユーザデータは、保証コード検証のため直ちに参照される。そこで。プロセッサコア503は、DMA511に対し、ヒント情報を付与してデータ転送を行うよう指示する。
ヒント情報を付与されたデータは、NTB507を介してNTB508に転送される。NTB508は、転送データのヒント情報を確認し、当該データをプロセッサキャッシュ502に転送する。プロセッサキャッシュ502のコントローラは、指定された主記憶デバイス408のアドレスに対応するプロセッサキャッシュ502アドレスに、受信したデータを格納する。リモートクラスタ302のプロセッサコア504は、転送されたユーザデータの保証コードを検証する(S1014)。
その後、ローカルクラスタ301及びリモートクラスタ302において、データが短時間内に読まれることはない。そこで、リモートクラスタの302のプロセッサコア504は、プロセッサキャッシュ502上のデータを主記憶デバイス408に追い出し(S1015)、ローカルクラスタ301のプロセッサコア503は、プロセッサキャッシュ上501のデータを主記憶デバイス407に追い出す(S1016)。最後に、プロセッサコア503は、ホストコンピュータ102に対し、ライト完了を応答し(S1017)、処理を終了する。
図15は、ホストコンピュータ102から書き込まれ、主記憶デバイスに格納されたユーザデータを使用してRAIDパリティを生成し、ホストコンピュータ102から書き込まれたユーザデータ及び生成したパリティを、ドライブ303に書き込むまで(バックエンドライド)のデータ転送の流れを示している。ここでは、ホストコンピュータ102から書き込まれたユーザデータが十分大きく、書き込まれたユーザデータのみからパリティを計算できる場合を示す。
まず、DMA511は、ホストコンピュータ102から書き込まれたユーザデータを元に、パリティを生成する(P12)。このとき、生成されたパリティは二重化のため直ちに参照される。そのため、DMA511は、該当データがすぐに参照されることを示すヒント情報を付与することで、生成したパリティをプロセッサキャッシュ501に格納する。
次に、DMA511は、ハードウェア障害によるデータ消失を防ぐため、プロセッサキャッシュ501上のパリティを、リモートクラスタ302に転送する。転送先で保証コードの照合を行うため、転送データは直ぐに参照される。そこで、DMA511は、該当データが直ぐに参照されることを示すヒント情報を付与して、リモートクラスタ302のプロセッサキャッシュ502にデータを転送する(P13)。その後、リモートクラスタ302のプロセッサコア504は、DMA511に生成され、転送されたパリティの保証コード検証を行う(P14)。
その後は、ハードウェアに障害が発生しない限り、該当データは参照されることが無い。そこで、リモートクラスタ302のプロセッサコア504は、プロセッサキャッシュ502から、主記憶デバイス408へデータを追い出す(P15)。最後に、ドライブインタフェースLSIドライブインタフェース405は、ホストコンピュータ102から書き込まれたユーザデータ及び生成したパリティを、ドライブ303へ書き込む(P16)。
図16は、ホストコンピュータ102から書き込まれ、主記憶デバイスに格納されたユーザデータと、ドライブ303に格納されているデータとを使用して、RAIDパリティを更新し、ホストコンピュータ102から書き込まれたユーザデータ及び更新されたパリティを、ドライブ303に書き込むまで(バックエンドライト)のデータ転送の流れを示している。ここでは、ホストコンピュータ102から書き込まれたユーザデータが少なく、書き込まれたユーザデータのみでパリティを計算しない場合を示す。
まず、ドライブインタフェースLSI405は、パリティの更新に必要な、更新前パリティ及び更新前ユーザデータを読み出す。これらは読み出し後、直ちにパリティの更新に使われる(参照される)。そこで、ドライブインタフェースLSI405は、該当データがすぐに参照されることを示すヒント情報を付与することで、読み出した更新前パリティ及びユーザデータを、プロセッサキャッシュ501に格納する(P17)。
DMA511は、ホストコンピュータ102から書き込まれたユーザデータ並びにドライブ303から読み出した更新前パリティ及びユーザデータを元に、パリティを生成する(P18)。このとき、生成されたパリティは二重化のため直ちに参照される。そのため、DMA511は、該当データがすぐに参照されることを示すヒント情報を付与することで、生成したパリティをプロセッサキャッシュ501に格納する。
次に、ハードウェア障害によるデータ消失を防ぐため、DMA511は、プロセッサキャッシュ501上のパリティを、リモートクラスタ302に転送する。転送先で保証コードの照合を行うため、転送データは直ぐに参照される。そこで、DMA511は、該当データが直ぐに参照されることを示すヒント情報を付与して、リモートクラスタ302のプロセッサキャッシュ502にデータを転送する(P19)。
その後、その後、リモートクラスタ302のプロセッサコア504は、DMA511に生成され、転送されたパリティをその保証コードを使用して検証する(P20)。その後は、ハードウェアに障害が発生しない限り、該当データは参照されることが無い。そこで、リモートクラスタ302のプロセッサコア504は、プロセッサキャッシュ502から、主記憶デバイス408へデータを追い出す(P21)。最後に、ドライブインタフェースLSIドライブインタフェース405は、ホストコンピュータ102から書き込まれたユーザデータ及び生成したパリティを、ドライブ303へ書き込む(P22)。
図17、図18、図19は、ホストコンピュータ102から書き込まれ、主記憶デバイスに格納されたユーザデータを使用してパリティを適宜生成し、ユーザデータ及びパリティをドライブに書き込むまで(バックエンドライト)のプロセッサの処理を示すフローチャートである。以下において、クラスタ301がホストコンピュータ102からライトコマンドを受信したものとして、フローチャートに従った処理を説明する。
プロセッサコア503は、主記憶デバイス407上にある更新後ユーザデータ(ホストコンピュータ102から受信したユーザデータ)のデータ長を調べる(S2002)。データ長が所定の閾値よりも大きい場合(S2002:大)、主記憶デバイス407の更新後ユーザデータのみを使用してパリティ生成が可能である。
そのため、プロセッサコア503は、DMA511を使用してパリティを生成する。具体的には、DMA511に、主記憶デバイス407から更新後ユーザデータを読み込み、更新後パリティを生成することを指示する。更新後パリティは、リモートクラスタ302への二重化のため直ちに転送される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を使用して更新後パリティを生成して、プロセッサキャッシュ501に格納するように指示する(S2003)。
プロセッサコア503は、リモートクラスタ302にキャッシュ領域を確保する(S2004)。ここでは、主記憶デバイス408におけるキャッシュ領域を確保する。プロセッサコア503は、リモートクラスタ302のプロセッサコア504にキャッシュ領域の確保を指示し、プロセッサコア504がその指示に従って、主記憶デバイス408におけるキャッシュ領域を確保する。
次に、プロセッサコア503は、ローカルクラスタ301のDMA511に対し、プロセッサキャッシュ501上の更新後パリティを、リモートクラスタ302へ転送することを指示する(S2005)。リモートクラスタ302に転送されたデータは、保証コード検証のため直ちに参照される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を付与してデータ転送を行うよう指示する。
プロセッサキャッシュ502のコントローラは、指定された主記憶デバイス408のアドレスに対応するプロセッサキャッシュ502アドレスに、ローカルクラスタ301から受信した更新後パリティを格納する。リモートクラスタ302のプロセッサコア504は、プロセッサキャッシュ502に転送された更新後パリティの保証コードを検証する(S2006)。
その後は、リモートクラスタ302のパリティが直ちに参照されることは無い。そこで、リモートクラスタ302のプロセッサコア504は、プロセッサキャッシュ502上のデータを主記憶デバイス408に追い出す(S2007)。更新後パリティは、クラスタ301、302において二重化されている。
ローカルクラスタ301のプロセッサコア503は、ローカルクラスタ301のドライブインタフェースLSI405に対し、更新後のユーザデータのドライブ303への転送を指示し(S2008)、さらに、更新後パリティのドライブ303への転送を指示する(S2009)。以上で、処理を終了する。
一方、ステップS2002において、主記憶デバイス407上にある更新後ユーザデータのデータ長が閾値以下である場合(S2002:小)、図18に示すように、プロセッサコア503は、ボリュームデータ管理情報を参照して、ライトコマンドの指定する格納先(アドレス)のドライブ303の種別が、HDDであるかSSDであるかを判定する(S2009)。
指定された格納先がHDDの場合(S2009:HDD)、ドライブ303へのアクセスが長い時間を要するため、プロセッサキャッシュ501を用いると、その占有時間が長くなる。また、主記憶デバイス407の帯域はドライブ303の帯域に対し比較的余裕がある。そこで、図19に示すように、プロセッサ401は、プロセッサキャッシュ501を用いず主記憶デバイス407を用いてドライブ303への書き込みを行う。
具体的には、まず、プロセッサコア503は、ドライブインタフェースLSI405に対し、主記憶デバイス407への更新前ユーザデータの転送を指示する(S2010)。さらに、ドライブインタフェースLSI405に対し、主記憶デバイス407への更新前パリティの転送を指示する(S2011)。
プロセッサコア503は、リモートクラスタ302のプロセッサコア504を利用して、リモートクラスタ302において、更新後パリティを格納するためのキャッシュ領域を確保する(S2012)。本例では、主記憶デバイス408にキャッシュ領域を確保する。
次に、プロセッサコア503は、ローカルクラスタ301のDMA511を用い、更新前ユーザデータ、更新前パリティ、ホストコンピュータ102から受信した更新後ユーザデータを使用してパリティを生成し、パリティを更新する(S2013)。更新後パリティは、リモートクラスタ302での二重化のため直ちに参照される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を付与してプロセッサキャッシュ501に更新後パリティを書き込むよう指示する。
次に、プロセッサコア503は、DMA511に対し、ローカルクラスタ301のプロセッサキャッシュ501上の更新後パリティを、リモートクラスタ302へ転送することを指示する(S2014)。リモートクラスタ302に転送されたデータは、保証コード検証のため直ちに参照される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を付与してデータ転送を行うよう指示する。プロセッサキャッシュ502のコントローラは、指定された主記憶デバイス408のアドレスに対応するプロセッサキャッシュ502アドレスに、受信した更新後パリティを格納する。
次に、リモートクラスタ302のプロセッサコア504は、転送された更新後パリティの保証コードを検証する(S2015)。その後、リモートクラスタ302の更新後パリティが短時間内に参照されることは無いため、プロセッサコア504は、プロセッサキャッシュ502上の更新後パリティを、主記憶デバイス408に追い出す(S2016)。更新後パリティは、クラスタ301、302で二重化されている。
次に、ローカルクラスタ301のプロセッサコア503は、ドライブインタフェースLSI405に対し、主記憶デバイス407上の更新後ユーザデータ及びプロセッサキャッシュ501上の更新後パリティを、ドライブ303へ転送することを指示する(S2017)。その後、プロセッサコア503は、プロセッサキャッシュ501上の更新後パリティを、主記憶デバイス407に追い出し(S2018)、処理を終了する。
一方、ステップS2009において、ライトコマンドが指定するアドレスのドライブの種別がSSDである場合(S2009:SSD)、ドライブ303に対するアクセスは短時間で終わるため、プロセッサキャッシュを用いても、その占有時間を短く抑えることができる。また、SSDの帯域(アクセス性能)が大きいため、主記憶デバイスの帯域は相対的に余裕が小さい。
そこで、プロセッサ401は、プロセッサキャッシュ501を用いてドライブ303への書き込みを行う。具体的には、まず、プロセッサコア503は、ドライブインタフェースLSI405に対し、ローカルクラスタのプロセッサキャッシュ501へ更新前ユーザデータを転送することを指示する(S2019)。さらに、ドライブインタフェースLSI405に対し、プロセッサキャッシュ501への更新前パリティを転送することを指示する(S2020)。
次に、プロセッサコア503は、リモートクラスタ302のプロセッサコア504を利用して、リモートクラスタ302に、更新後パリティを格納するためのキャッシュ領域を確保する(S2021)。ここでは、主記憶デバイス408にキャッシュ領域を確保する。
次に、プロセッサコア503は、ローカルクラスタ301のDMA511を用い、ドライブ303から読み出した更新前ユーザデータ及び更新前パリティ並びにホストコンピュータ102から受信した更新後ユーザデータを使用して、パリティを生成して更新する(S2022)。更新後パリティは、リモートクラスタへの二重化のため直ちに参照される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を付与してプロセッサキャッシュ501に更新後パリティを書き込むよう指示する。
次に、プロセッサコア503は、ローカルクラスタ301のDMA511に対し、ローカルクラスタ301のプロセッサキャッシュ501上の更新後パリティを、リモートクラスタ302へ転送することを指示する(S2023)。リモートクラスタ302に転送されたデータは、保証コード検証のため直ちに参照される。そこで、プロセッサコア503は、DMA511に対し、ヒント情報を付与してデータ転送を行うよう指示する。
次に、リモートクラスタ302のプロセッサコア504は、転送された更新後パリティの保証コードを検証する(S2024)。その後、リモートクラスタ302の更新後パリティが短時間内に参照されることはない。そこで、プロセッサコア504は、リモートクラスタ302のプロセッサキャッシュ502上の更新後パリティを、主記憶デバイス408に追い出す(S2025)。
ローカルクラスタ301のプロセッサコア503は、ドライブインタフェースLSI405に対し、主記憶デバイス407上の更新後ユーザデータ及びプロセッサキャッシュ501上の更新後パリティを、ドライブ303へ転送することを指示する(S2026)。その後、プロセッサコア503は、プロセッサキャッシュ501上の更新後パリティを、主記憶デバイス407に追い出し(S2027)、処理を終了する。
本実施形態の構成により、プロセッサキャッシュを用いたストレージ動作を行うことができ、主記憶デバイスへのアクセスを減らすことができる。このため、ストレージ動作に必要な主記憶デバイスの帯域を減らすことができ、ストレージ装置の性能を向上させることができる。この結果、主記憶デバイスのインタフェースの帯域から定まる性能の上限を超えて、ストレージ装置の性能を向上させることができる。
また、プロセッサキャッシュを短時間内に参照されるデータの格納に使用し、参照直後に格納領域を解放する又は格納領域からデータを追い出すことで他のデータ格納に使用できるようにするので、プロセッサキャッシュの占有時間、占有容量を抑えることができ、プロセッサキャッシュの必要容量を抑えることができ、限られたプロセッサキャッシュ容量であっても、主記憶デバイスへのアクセス低減を効果的に行うことができる。
以上、本発明の構成例を説明したが、本発明が上記構成例に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。
上記構成例は、汎用プロセッサを適用したストレージ装置において、ストレージ装置の動作(コマンド種別)とデータ転送先/転送元の記憶デバイスとに基づき、プロセッサキャッシュをデータ転送バッファとして利用するか判定する。その判定を基に、フロントエンド、バックエンド又はプロセッサは、PCIeの標準技術であるTPH(ヒント情報)を転送データに付加し、プロセッサキャッシュに直接データ転送する。その結果、主記憶デバイスへのアクセス回数を削減する事が可能となり、ストレージ装置の装置性能が向上する。
上記構成例は、ホストコマンドが指定するユーザデータの格納記憶デバイスに基づいて、ユーザデータの転送バッファをプロセッサキャッシュ及び主記憶デバイスから選択する。具体的には、ライトデータを格納すべき記憶ドライブの種別や、リードコマンドが指定するユーザデータを格納している主記憶デバイスの位置(所属クラスタ)に基づいて、転送バッファを決定する。また、上記構成例は、リードコマンド及びライトコマンドの双方に対する処理において、プロセッサキャッシュをデータの転送バッファとして使用する。
本発明のストレージシステムは、リードコマンド又はライトコマンドの一方に対する処理においてのみ、プロセッサキャッシュを転送バッファとして利用してもよく、クラスタ間又はストレージ装置間のデータ転送においてのみ、プロセッサキャッシュを転送バッファとして利用してもよい。本発明は、一つのクラスタのみを含むストレージ装置に適用することができる。また三つ以上のクラスタを含むストレージ装置に適用することができる。
上記構成例は、リードコマンドに対して、記憶ドライブから読み出したデータをプロセッサキャッシュに転送する。本発明のストレージシステムは、リードコマンドにより指定されたデータを格納する記憶ドライブの種別及び/又はリードコマンドが要求するデータのデータ長に基づいて、記憶ドライブから読み出したデータの転送先を、プロセッサキャッシュと主記憶デバイスから選択してもよい。
例えば、ストレージシステムは、キャッシュミスにおいて、ユーザデータを読み出す記憶ドライブがHDDである場合に主記憶デバイスをデータ転送バッファとして利用し、ユーザデータを読み出す記憶ドライブがSSDである場合にプロセッサキャッシュをデータ転送バッファとして利用する。ストレージシステムは、さらに、リードコマンドが指定するデータ長に基づいて、転送バッファをプロセッサキャッシュ又は主記憶デバイスから選択してもよい。例えば、データ長が予め定められた閾値よりも大きい場合に主記憶デバイスを使用し、上記閾値以下である場合にプロセッサキャッシュを使用する。
本発明は、データ転送の転送先をプロセッサキャッシュと主記憶デバイスとから選択することができるプロトコルであれば、PCIeと異なるプロトコルによりデータ転送を行うストレージ装置に適用することができる。本発明が適用されるストレージシステムは、一つのストレージ装置又は複数のストレージ装置で構成することができる。クラスタ間のデータ転送の上記手法を、2つのストレージ装置間のデータ転送に適用することができる。
上記構成例は、アクセス性能が異なる不揮発性記憶デバイス(記憶ドライブ)として、SSD及びHDDを含む。本発明は、これらと異なる不揮発性記憶デバイスを実装するストレージシステムに適用することができる。

Claims (15)

  1. ユーザデータを格納する複数の不揮発性記憶デバイスと、
    前記複数の不揮発性記憶デバイスとホストとの間のデータ転送を制御するコントローラと、を含むストレージシステムであって、
    前記コントローラは、プロセッサコア回路と、プロセッサキャッシュと、ユーザデータを一時的に格納するキャッシュ領域を含む主記憶デバイスと、を含み、
    前記プロセッサコア回路は、前記ホストから受信したコマンドの内容を特定し、
    前記プロセッサコア回路は、前記コマンドに対する動作において前記ストレージシステム内で転送するデータの格納記憶デバイスを特定し、
    前記プロセッサコア回路は、前記コマンドの種別及び前記特定した格納記憶デバイスに基づいて、前記ストレージシステム内において前記プロセッサキャッシュを介してデータ転送するかを決定する、ストレージシステム。
  2. 前記プロセッサコア回路は、前記コマンドの種別がリードコマンドである前記受信したコマンドに対して、前記格納記憶デバイスであるコマンド指定ユーザデータの読み出し元記憶デバイスを特定し、
    前記プロセッサコア回路は、前記コマンドの種別及び前記特定した読み出し元記憶デバイスに基づいて、前記データ転送において前記プロセッサキャッシュを介してデータ転送するかを決定する、請求項1に記載のストレージシステム。
  3. 前記コントローラは、第1クラスタと第2クラスタとを含み、
    前記第1クラスタは、前記プロセッサコア回路と、前記プロセッサキャッシュと、前記主記憶デバイスと、を含み、
    前記第2クラスタは、第2プロセッサコア回路と、第2プロセッサキャッシュと、第2主記憶デバイスと、転送制御デバイスと、を含み、
    前記読み出し元記憶デバイスは、前記第2主記憶デバイスであり、
    前記第1クラスタの前記プロセッサコア回路は、前記第2主記憶デバイスから前記ホストへの前記コマンド指定ユーザデータの転送における転送バッファとして、前記プロセッサキャッシュを使用することを決定し、
    前記第1クラスタの前記プロセッサコア回路は、前記転送制御デバイスに、前記第2主記憶デバイスから前記プロセッサキャッシュへの前記コマンド指定ユーザデータの転送を指示する、請求項2に記載のストレージシステム。
  4. 前記複数の不揮発性記憶デバイスは、第1不揮発性記憶デバイスと、当該第1不揮発性記憶デバイスよりも応答速度が遅い第2不揮発性記憶デバイスと、を含み、
    前記リードコマンドの前記読み出し元記憶デバイスは、前記第2不揮発性記憶デバイスであり、
    前記プロセッサコア回路は、前記第2不揮発性記憶デバイスから前記ホストへの前記コマンド指定ユーザデータの転送における転送バッファとして、前記プロセッサキャッシュを使用することを決定し、
    前記プロセッサコア回路は、前記プロセッサキャッシュに格納されている前記コマンド指定ユーザデータを前記ホストに転送した後に、前記コマンド指定ユーザデータを前記プロセッサキャッシュから前記主記憶デバイスに追い出す、請求項2に記載のストレージシステム。
  5. 前記リードコマンドの前記読み出し元記憶デバイスは、第1不揮発性記憶デバイスであり、
    前記プロセッサコア回路は、前記第1不揮発性記憶デバイスから前記ホストへの前記コマンド指定ユーザデータの転送における転送バッファとして前記プロセッサキャッシュを使用することを決定し、
    前記プロセッサコア回路は、前記第1不揮発性記憶デバイスから前記プロセッサキャッシュに格納された前記コマンド指定ユーザデータを前記ホストに転送した後に、前記コマンド指定ユーザデータを格納している前記プロセッサキャッシュの領域を解放する、請求項2に記載のストレージシステム。
  6. 前記プロセッサコア回路は、前記受信したコマンドが指定するユーザデータのデータ長に基づいて、前記コントローラにおけるデータ転送において、前記プロセッサキャッシュを転送バッファとして使用するか否かを決定する、請求項1に記載のストレージシステム。
  7. 前記コントローラは、第1クラスタと第2クラスタとを含み、
    前記第1クラスタは、前記プロセッサコア回路と、前記主記憶デバイスと、転送制御デバイスと、を含み、
    前記第2クラスタは、第2プロセッサコア回路と、前記プロセッサキャッシュと、第2主記憶デバイスと、を含み、
    前記受信したコマンドはライトコマンドであり、前記格納記憶デバイスは前記第2主記憶デバイスであり、
    前記プロセッサコア回路は、前記ライトコマンドに対して、前記ホストから受信したユーザデータの前記第1クラスタから前記第2主記憶デバイスへの転送において、前記プロセッサキャッシュを転送バッファとして使用することを決定し、
    前記プロセッサコア回路は、前記転送制御デバイスに、前記ユーザデータを前記プロセッサキャッシュに転送することを指示し、
    前記転送制御デバイスは、前記プロセッサコア回路からの前記指示に従って、前記ユーザデータを、前記プロセッサキャッシュに転送し、
    前記第2プロセッサコア回路は、前記プロセッサキャッシュの前記ユーザデータの保証コードを検証し、
    前記第2プロセッサコア回路は、前記保証コードが検証された前記ユーザデータを、前記プロセッサキャッシュから前記第2主記憶デバイスに追い出す、請求項1に記載のストレージシステム。
  8. 前記複数の不揮発性記憶デバイスは、複数の第1種不揮発性記憶デバイスと、前記第1不揮発性記憶デバイスよりも応答速度が遅い複数の第2種不揮発性記憶デバイスと、を含み、
    前記受信したコマンドはライトコマンドであり、
    前記格納記憶デバイスは、前記ホストから受信したユーザデータを格納する不揮発性記憶デバイスであり、
    前記ユーザデータのデータ長が閾値以上である場合に、前記プロセッサコア回路は、前記複数の不揮発性記憶デバイスに格納されたデータを使用することなく、前記ユーザデータからパリティデータを生成することを決定し、
    前記データ長が前記閾値未満であり、前記ユーザデータを格納する前記不揮発性記憶デバイスが第2種不揮発性記憶デバイスである場合に、前記プロセッサコア回路は、前記プロセッサキャッシュを介さずに前記ユーザデータのパリティ生成のためのデータを1又は複数の第2種不揮発性記憶デバイスから前記主記憶デバイスに転送することを決定する、請求項1に記載のストレージシステム。
  9. 前記コントローラは、第1クラスタと第2クラスタとを含み、
    前記第1クラスタは、前記プロセッサコア回路と、前記プロセッサキャッシュと、前記主記憶デバイスと、転送制御デバイスと、を含み、
    前記第2クラスタは、第2プロセッサコア回路と、第2プロセッサキャッシュと、第2主記憶デバイスと、を含み、
    前記プロセッサコア回路は、前記生成したパリティデータの前記第2主記憶デバイスへの転送において前記第2プロセッサキャッシュを介して転送することを決定し、
    前記プロセッサコア回路は、前記転送制御デバイスに、前記パリティデータを前記第2プロセッサキャッシュに転送することを指示し、
    前記転送制御デバイスは、前記プロセッサコア回路からの前記指示に従って、前記パリティデータを、前記第2プロセッサキャッシュに転送し、
    前記第2プロセッサコア回路は、前記第2プロセッサキャッシュの前記パリティデータの保証コードを検証し、
    前記第2プロセッサコア回路は、前記保証コードが検証された前記パリティデータを、前記第2プロセッサキャッシュから前記第2主記憶デバイスに追い出す、請求項8に記載のストレージシステム。
  10. 前記コントローラは、第1転送制御デバイス及び第2転送制御デバイスをさらに含み、
    前記プロセッサコア回路は、前記第1転送制御デバイスに、転送先を示す情報付与してデータを前記第2転送制御デバイスに転送することを指示し、
    前記第2転送制御デバイスは、受信した前記データに付与されている前記情報を参照して、前記データを前記プロセッサキャッシュ又は前記主記憶デバイスの一方に転送する、請求項1に記載のストレージシステム。
  11. 不揮発性記憶デバイスと、プロセッサキャッシュと、ユーザデータを一時的に格納するキャッシュ領域を含む主記憶デバイスと、を含むストレージシステムにおける、データ転送制御方法であって、
    ホストから受信したコマンドの内容を特定し、
    前記コマンドに対する動作において前記ストレージシステム内で転送するデータの格納記憶デバイスを特定し、
    前記コマンドの種別及び前記特定した格納記憶デバイスに基づいて、前記ストレージシステム内のデータ転送において前記プロセッサキャッシュを介して転送するか否かを決定する、データ転送制御方法。
  12. 前記コマンドの種別がリードコマンドである前記受信したコマンドに対して、前記格納記憶デバイスであるコマンド指定ユーザデータの読み出し元記憶デバイスを特定し、
    前記コマンドの種別及び前記特定した読み出し元記憶デバイスに基づいて、前記データ転送において前記プロセッサキャッシュを介して転送するか否かを決定する、請求項11に記載のデータ転送制御方法。
  13. 前記ストレージシステムは、第1クラスタと第2クラスタとを含み、
    前記第1クラスタは、前記プロセッサキャッシュと、前記主記憶デバイスと、を含み、
    前記第2クラスタは、第2プロセッサキャッシュと、第2主記憶デバイスと、を含み、
    前記読み出し元記憶デバイスは、前記第2主記憶デバイスであり、
    前記第2主記憶デバイスから前記プロセッサキャッシュを介して前記ホストへの前記コマンド指定ユーザデータの転送をすることを決定し、
    前記第2主記憶デバイスから前記プロセッサキャッシュへ、前記コマンド指定ユーザデータを転送する、請求項12に記載のデータ転送制御方法。
  14. 前記ストレージシステムは、第1クラスタと第2クラスタとを含み、
    前記第1クラスタは、前記主記憶デバイスと、転送制御デバイスと、を含み、
    前記第2クラスタは、前記プロセッサキャッシュと、第2主記憶デバイスと、を含み、
    前記受信したコマンドはライトコマンドであり、前記格納記憶デバイスは前記第2主記憶デバイスであり、
    前記ライトコマンドに対して、前記ホストから受信したユーザデータの前記第1クラスタから前記プロセッサキャッシュを介して前記第2主記憶デバイスへの転送をすることを決定し、
    前記ユーザデータを前記プロセッサキャッシュに転送し、
    前記プロセッサキャッシュの前記ユーザデータの保証コードを検証し、
    前記保証コードが検証された前記ユーザデータを、前記プロセッサキャッシュから前記第2主記憶デバイスに追い出す、請求項11に記載のデータ転送制御方法。
  15. 前記複数の不揮発性記憶デバイスは、複数の第1種不揮発性記憶デバイスと、前記第1不揮発性記憶デバイスよりも応答速度が遅い複数の第2種不揮発性記憶デバイスと、を含み、
    前記受信したコマンドはライトコマンドであり、
    前記格納記憶デバイスは、前記ホストから受信したユーザデータを格納する不揮発性記憶デバイスであり、
    前記ユーザデータのデータ長が閾値以上である場合に、前記複数の不揮発性記憶デバイスに格納されたデータを使用することなく、前記ユーザデータからパリティデータを生成することを決定し、
    前記データ長が前記閾値未満であり、前記ユーザデータを格納する前記不揮発性記憶デバイスが第2種不揮発性記憶デバイスである場合に、前記プロセッサキャッシュを介さずに前記ユーザデータのパリティ生成のためのデータを1又は複数の第2種不揮発性記憶デバイスから前記主記憶デバイスに転送することを決定する、請求項11に記載のデータ転送制御方法。
JP2014551437A 2012-05-16 2012-05-16 ストレージシステム及びストレージシステムにおけるデータ転送制御方法 Expired - Fee Related JP5870213B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/003186 WO2013171789A1 (en) 2012-05-16 2012-05-16 Storage system and method of controlling data transfer in storage system

Publications (2)

Publication Number Publication Date
JP2015519619A JP2015519619A (ja) 2015-07-09
JP5870213B2 true JP5870213B2 (ja) 2016-02-24

Family

ID=49582280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014551437A Expired - Fee Related JP5870213B2 (ja) 2012-05-16 2012-05-16 ストレージシステム及びストレージシステムにおけるデータ転送制御方法

Country Status (3)

Country Link
US (1) US9075729B2 (ja)
JP (1) JP5870213B2 (ja)
WO (1) WO2013171789A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286225B2 (en) 2013-03-15 2016-03-15 Saratoga Speed, Inc. Flash-based storage system including reconfigurable circuitry
US9304902B2 (en) * 2013-03-15 2016-04-05 Saratoga Speed, Inc. Network storage system using flash storage
KR20140124674A (ko) * 2013-04-17 2014-10-27 한국전자통신연구원 파일 수준의 데이터 분산 저장 방법
US10313236B1 (en) 2013-12-31 2019-06-04 Sanmina Corporation Method of flow based services for flash storage
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US20150261681A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Host bridge with cache hints
US9881680B2 (en) 2014-06-03 2018-01-30 Qualcomm Incorporated Multi-host power controller (MHPC) of a flash-memory-based storage device
US9690720B2 (en) * 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9608936B1 (en) 2014-07-03 2017-03-28 Sanmina Corporation Network system with offload services for flash storage
US9672180B1 (en) 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9384147B1 (en) 2014-08-13 2016-07-05 Saratoga Speed, Inc. System and method for cache entry aging
US9715428B1 (en) 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
KR102367982B1 (ko) * 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10606751B2 (en) * 2016-07-01 2020-03-31 Intel Corporation Techniques for cache delivery
US11169746B2 (en) 2018-06-19 2021-11-09 Weka.IO LTD Expanding a distributed storage system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4433374A (en) * 1980-11-14 1984-02-21 Sperry Corporation Cache/disk subsystem with cache bypass
US6378047B1 (en) * 1997-07-07 2002-04-23 Micron Technology, Inc. System and method for invalidating set-associative cache memory with simultaneous set validity determination
US6591332B1 (en) * 2000-04-28 2003-07-08 Hewlett-Packard Development Company, L.P. Apparatus and method for tracking flushes of cache entries in a data processing system
JP4066833B2 (ja) * 2003-02-18 2008-03-26 日本電気株式会社 ディスクアレイ制御装置及び方法並びにディスクアレイ制御プログラム
US7159076B2 (en) * 2003-06-24 2007-01-02 Research In Motion Limited Cache operation with non-cache memory
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US8595313B2 (en) * 2005-11-29 2013-11-26 Netapp. Inc. Systems and method for simple scale-out storage clusters
US7444544B2 (en) * 2006-07-14 2008-10-28 International Business Machines Corporation Write filter cache method and apparatus for protecting the microprocessor core from soft errors
JP4933211B2 (ja) * 2006-10-10 2012-05-16 株式会社日立製作所 ストレージ装置、制御装置及び制御方法
US20100269021A1 (en) * 2007-09-05 2010-10-21 Gower Kevin C Method for Performing Error Correction Operations in a Memory Hub Device of a Memory Module
JP2009093225A (ja) * 2007-10-03 2009-04-30 Nec Corp ストレージ制御装置、方法及びプログラム並びにストレージ装置
JP2010033125A (ja) 2008-07-25 2010-02-12 Hitachi Ltd ストレージ装置及びデータ転送方法
JP4809413B2 (ja) * 2008-10-08 2011-11-09 株式会社日立製作所 ストレージシステム
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
WO2012032582A1 (en) * 2010-09-10 2012-03-15 Hitachi, Ltd. Storage system and data transfer method of storage system

Also Published As

Publication number Publication date
US9075729B2 (en) 2015-07-07
WO2013171789A1 (en) 2013-11-21
US20130311706A1 (en) 2013-11-21
JP2015519619A (ja) 2015-07-09

Similar Documents

Publication Publication Date Title
JP5870213B2 (ja) ストレージシステム及びストレージシステムにおけるデータ転送制御方法
TWI673608B (zh) 使用反向快取表的基於硬體之映射加速
US9569118B2 (en) Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US9235346B2 (en) Dynamic map pre-fetching for improved sequential reads of a solid-state media
US9619180B2 (en) System method for I/O acceleration in hybrid storage wherein copies of data segments are deleted if identified segments does not meet quality level threshold
US8533397B2 (en) Improving performance in a cache mechanism by way of destaging data in partial strides
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
US11741013B2 (en) Prefetch buffer of memory sub-system
US11403011B1 (en) Host memory buffer allocation management
US9921913B2 (en) Flushing host cache data before rebuilding degraded redundant virtual disk
US11372763B2 (en) Prefetch for data interface bridge
TWI792747B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
CN112805692A (zh) 混合式双列直插式存储器模块中的高速缓存操作
US11175859B1 (en) Managing memory commands in a memory subsystem by adjusting a maximum number of low priority commands in a DRAM controller
US11301383B2 (en) Managing processing of memory commands in a memory subsystem with a high latency backing store
US20120017057A1 (en) Data copying device, method for copying data and data storage device
US20240061786A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
EP4303734A1 (en) Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device
US20230019878A1 (en) Systems, methods, and devices for page relocation for garbage collection
US20240012580A1 (en) Systems, methods, and devices for reclaim unit formation and selection in a storage device
CN117609105A (zh) 用于访问存储器页的版本中的数据的方法和设备
CN115809018A (zh) 改善系统的读取性能的设备和方法
KR20120044717A (ko) 패리티 캐시를 이용한 raid 레벨 5의 고속화를 위한 raid 제어 장치 및 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150717

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: 20160105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160108

R150 Certificate of patent or registration of utility model

Ref document number: 5870213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees