JP6832187B2 - データストレージサブシステムにおけるキャッシングのための方法およびシステム - Google Patents

データストレージサブシステムにおけるキャッシングのための方法およびシステム Download PDF

Info

Publication number
JP6832187B2
JP6832187B2 JP2017028194A JP2017028194A JP6832187B2 JP 6832187 B2 JP6832187 B2 JP 6832187B2 JP 2017028194 A JP2017028194 A JP 2017028194A JP 2017028194 A JP2017028194 A JP 2017028194A JP 6832187 B2 JP6832187 B2 JP 6832187B2
Authority
JP
Japan
Prior art keywords
data
physical
cache
block
list
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.)
Active
Application number
JP2017028194A
Other languages
English (en)
Other versions
JP2017151982A5 (ja
JP2017151982A (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.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
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 Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2017151982A publication Critical patent/JP2017151982A/ja
Publication of JP2017151982A5 publication Critical patent/JP2017151982A5/ja
Application granted granted Critical
Publication of JP6832187B2 publication Critical patent/JP6832187B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache 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/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0877Cache access modes
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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)

Description

発明の詳細な説明
発明の分野
本発明は、概してデータストレージシステムに関し、より具体的には、キャッシュメモリを有するデータストレージシステムに関する。
背景
キャッシュメモリを有するデータストレージサブシステムは、ホストコンピュータシステムと、ディスクドライブアレイまたは不揮発性(たとえば、フラッシュ)メモリアレイなどのバックエンドデータストレージとの間で頻繁にアクセスされたデータのためのバッファとして機能し得る。キャッシュメモリを有するデータストレージサブシステムは、たとえば、ホストとバックエンドデータストレージとの間のデータアクセスレイテンシの低下を促進するアクセラレータカードの形態であり得る。キャッシングシステムは、キャッシュメモリ内に格納されたデータがアクセスされた頻度を判定し、最も高い頻度でアクセスされたデータのみをキャッシュメモリ内に維持しつつ、最も低い頻度でアクセスされたデータを追出し得る。
キャッシングシステムにおいては、レイテンシを最小限にすることが望ましい。レイテンシとは、データを書込みまたは読出しせよというホストからの要求の受信と、書込み動作または読出し動作の完了との間の時間である。レイテンシに影響を与える特性は、キャッシングシステムが、ホストにより識別された論理アドレスをキャッシュメモリ内の物理ストレージ位置に変換するのに必要なルックアップ時間、および、その後キャッシングシステムが、これらのストレージ位置へ、またはこれらのストレージ位置からデータを転送するのに必要な時間である。
キャッシングの一般的なタイプは「ライトバック」として知られる。「ライトバック」とは、書込み要求でホストから受信されたデータが、まずはキャッシュメモリ内に格納されてホストにより読出し可能となり、後で、レイテンシへの影響がより少なく、コピー動作が容易になる条件のときにバックエンドストレージにコピーされることである。キャッシュメモリ内に格納されているがまだバックエンドストレージにコピーされていないデータは、一般的に「ダーティ(dirty)」データと呼ばれる。ライトバックキャッシングの欠点は、停電などのシステム障害によってダーティデータが損失しやすいことである。同様に、データ損失は、キャッシュメモリ内へのデータ格納処理がこのような障害により中断されることに起因する場合がある。これにより、望ましくないことに、一連のストレージ位置が、第1の書込み要求に関連付けられたデータの一部と、後続の書込み要求に関連付けられたデータの一部とを含むことになり得る。
キャッシングシステムは、ダイレクトマップ方式、フルアソシアティブ方式、またはこれらのタイプのハイブリッドであってもよい。ダイレクトマップ方式のキャッシングシステムにおいて、データブロックの論理アドレスは、このデータブロックが格納され得るキャッシュメモリ内のただ1つのアドレスまたは物理位置にマッピングされる。たとえば、物理アドレスは以下のモジュロ演算により算出され得る。
キャッシュアドレス=論理アドレス MOD(キャッシュメモリ内のアドレスの数)
一方、フルアソシアティブ方式のキャッシングシステムでは、キャッシュブロックはキャッシュメモリ内の任意の物理メモリ位置に格納され得る。フルアソシアティブ方式のキャッシングシステムは、概してメモリ使用の効率性およびヒット率において有利である。しかしながら、フルアソシアティブ方式のキャッシングシステムの欠点は、識別された論理アドレスをキャッシュメモリ内の物理ストレージ位置に変換するためのルックアップ処理の速度が遅く、したがって、レイテンシに影響を与える可能性があることである。
概要
本発明の実施形態は、キャッシングのシステムおよび動作方法に関する。例示的な実施形態では、キャッシングシステムは、キャッシュメモリと、上記方法を実行するようにプログラムまたは構成された処理システムとを備える。
例示的な実施形態では、上記方法は、1つ以上の論理アドレスと、当該1つ以上の論理アドレスに対応して書込まれる1つ以上のデータブロックとを示す書込み要求を受信するステップと、書込み要求に応答して、キャッシュメモリ内の1つ以上の物理位置をフリーリストから割当てるステップと、上記1つ以上の論理アドレスに対する何らかの読出し要求が待ち状態であるか否かに関係なく、上記1つ以上のデータブロックを上記1つ以上の物理位置に格納するステップと、上記1つ以上のデータブロックが上記1つ以上の物理位置に格納された後、上記1つ以上の論理アドレスに対して何らかの読出し要求が待ち状態であるか否かに関係なく、メタデータを更新し、上記1つ以上の物理位置を上記1つ以上の論理アドレスに関連付けるステップと、有効データを有する、キャッシュメモリ内の各物理位置に対して待ち状態である、読出し要求を含むデータアクセス要求の使用カウントを維持するステップと、上記物理位置に対して待ち状態のデータアクセス要求が無いことを使用カウントが示す場合、物理位置をフリーリストに戻すステップとを含む。
本発明の例示的な実施形態に係るキャッシングシステムを示すブロック図である。 例示的な実施形態に係る一般化されたキャッシュメモリのマップを示す概念図である。 例示的な実施形態に係るデータ構造間の例示的な関係を示すデータ関係図である。 例示的な実施形態に係る、例示的なキャッシュセグメント連結リストおよび関連付けられた例示的なバッファブロックを示す別のデータ関係図である。 例示的な実施形態に係る例示的なスキャッタギャザーリストを示す図である。 例示的な実施形態に係る書込み動作を示すフロー図である。 図6Aのフロー図の続きを示す図である。 例示的な実施形態に係る読出し動作を示すフロー図である。 図7Aのフロー図の続きを示す図である。 例示的な実施形態に係るシステムの動作の方法を示すフロー図である。 例示的な実施形態に係るフラッシュ(flush)動作を示すフロー図である。
明細書
図1に示すように、本発明の例証的または例示的な実施形態において、ストレージサブシステム10はホストシステム12とバックエンドストレージ14との間でキャッシングを提供する。ホストシステム12は、如何なるタイプの従来のコンピュータシステムまたはコンピュータシステムのネットワークであってもよい。バックエンドストレージ14は、如何なるタイプの従来のデータマスストレージシステムであってもよい。たとえば、バックエンドストレージ14は、複数の物理データストレージデバイス16、18、20…のアレイを含んでもよい。このような物理データストレージデバイス16、18、20…の例として、ディスクドライブ、フラッシュメモリモジュール、および他のタイプの不揮発性データストレージデバイスがある。
本明細書に記載の例示的な実施形態では、バックエンドストレージ14における複数の物理データストレージデバイス16、18、20…のアレイは、一般的に「RAID」、すなわち「redundant array of independent (またはinexpensive) disks」のもとに参照される原理のうちの1つ以上に準拠してもよい。たとえば、ストライピングとして公知の一般的なRAID原理に従って、バックエンドストレージ14はストライプ22を単位にしてデータを格納してもよい。物理データストレージデバイス16、18、20…の各々は、各ストライプ22の一部を格納する。バックエンドストレージ14は、如何なる数の物理ストレージデバイス16、18、20…を含んでもよい(図1の省略記号(「…」)は、アレイに含まれるが明確化のため個別には図示されない他の物理データストレージデバイスを示す)。ストライピングなどのRAID原理は、当業者ならばよく理解するものであるため、この原理については本明細書でさらに詳述はしない。また、上記のバックエンドストレージ14の説明は、本発明が関連付けられ得る例示的なデータストレージ環境またはコンテキストを説明する目的で、ディスクなどの複数の物理データストレージデバイス16、18、20…を含むものとして、または、RAID原理などに準拠するものとして提示したに過ぎず、限定するように意図したものではない。たとえば、本明細書で用いられる「論理アドレス」という用語は、本発明を、如何なる特定の物理データストレージ環境、組織、スキームなどに限定するものとしても解釈すべきではない。
例示的な実施形態では、ストレージサブシステム10はキャッシュメモリ24を含む。キャッシュメモリ24は、たとえばDDR DRAM(double data rate dynamic random access memory)など、如何なるタイプであってもよい。ストレージサブシステム10は、中央処理装置(CPU)26およびワーキングメモリ28も含む。ワーキングメモリ28は、たとえばスタティックRAMなど、如何なるタイプであってもよい。CPU26は一般的な処理タスクを行なってもよいが、ストレージサブシステム10は、以下の特化された処理要素をさらに含む。すなわち、メッセージプロセッサ30、コマンドプロセッサ32、キャッシュプロセッサ34、バッファプロセッサ36、バックエンドプロセッサ38、およびダイレクトメモリアクセス(DMA:direct memory access)エンジン40である。例示的な実施形態ではストレージサブシステム10がこれらの特化された処理要素を含むが、他の実施形態では、処理要素をより少なく、またはより多く含んでもよい。そのような他の実施形態において、処理要素は本明細書に記載の処理動作のうちのいくつかまたはすべてを行なってもよい。ストレージサブシステム10は、バスのシステムまたはマトリックスなどのシステムインターコネクト42も含む。このシステムインターコネクト42を介して上記の処理要素は互いに通信する。上記の要素間の他の通信経路または信号経路も含まれ得る。ストレージサブシステム10がホストシステム12と通信するために介在するホストインターフェイス44、およびストレージサブシステム10がバックエンドストレージ14と通信するために介在するストレージインターフェイス46も含まれ得る。ホストインターフェイス44は、たとえばピーシーアイエクスプレス(PCIe:Peripheral Component Interconnect Express)などの通信バス規格に準拠し、関連付けられたPCIeコントローラを含んでもよい。メモリインターフェイスなどの他のインターフェイス、および関連付けられたメモリコントローラも含まれ得るが、明確化のため図示はしない。図示はしないが、ストレージサブシステム10は、ホストシステム12のバックプレーンまたはマザーボードに差込まれるアクセラレータカードの一部を定義してもよい。上記の処理要素のうちのいくつかまたはすべてが、たとえばFPGA(field-programmable gate array)、特定用途向け集積回路(ASIC:application-specific integrated circuit)、または他のデバイスなどの集積回路デバイス(図示せず)内に含まれてもよい。
図2に示すように、キャッシュメモリ24を用いて、いくつかのタイプの後述のキャッシング関連情報を格納してもよい。しかしながら、他の実施形態では、異なるタイプのデータが異なるメモリに格納されてもよく、または他の如何なる態様で組織されてもよい。例示的な実施形態では、キャッシュメモリ24は、データ領域48と、キャッシュセグメント(CS:cache segment)領域50と、ハッシュテーブル領域52と、スキャッタギャザーリスト(SGL:scatter-gather list)領域54と、その他領域56とを含む。当業者ならば理解するように、図2では明確化のため、キャッシュメモリ24のこれらの領域の空間的配置が概念的に示されている。情報は、如何なる態様でキャッシュメモリ24または他のメモリ内にマッピングされてもよく、または他の方法で配置されてもよい。
キャッシュされたデータは、バッファブロック(BB:buffer block)と呼ばれる単位でデータ領域48内に格納される。単位は、たとえば4キロバイト(KB)などのデータ量を定義する。「ブロック」という用語は、データが連続することを意味する。例示的な実施形態では、上記のストライプ22はたとえば64KBから成り、したがって、各ストライプ22は16個のバッファブロックに対応する。以下でさらに詳しく説明するように、バッファブロックの順序付けに関係なく、および、バッファブロックの物理アドレスと論理アドレスとの関係に関係なく、如何なるバッファブロックも、データ領域48内の任意の利用可能な物理位置(たとえば、アドレス)にキャッシュまたは格納され得る。結果として、ストライプ22に対応するバッファブロックは、必ずしも互いに連続して格納されるわけではない。この特性は結合規則(associativity)と呼ばれる。
説明のために、いくつかの例示的なバッファブロック58、60、62、64、66、68、70、72…は、データ領域48内のさまざまな物理位置に格納されているものとして示される(データ領域48内の省略記号は、明確化のために図示されない他の物理位置の他のバッファブロックを示す)。データ領域48のストレージ容量は、バックエンドストレージ14のストレージ容量よりも実質的に少なくてもよい。たとえば、バックエンドストレージ14のストレージ容量はテラバイトのオーダーであってもよく、一方、データ領域48のストレージ容量はギガバイトまたはメガバイトのオーダーであってもよい。処理を容易にするために、データ領域48内の物理位置は、インデックスまたは物理メモリアドレスからのオフセットとして機能するバッファブロック識別子(BBID:buffer block identifier)により識別されてもよい。例に関して以下で説明するように、例示的なバッファブロック68、66、70、62、および64は破線矢印で示すように順序付けされる。例示的なバッファブロック68はシーケンスの最初であり、例示的なバッファブロック64はシーケンスの最後である(他のバッファブロックは省略記号で示すが、明確化のために図示しない)。図2において、例示的なバッファブロック58、60、62、64、66、68、70、および72は、集結するのではなくデータ領域48にわたって分散されるように示されており、これは結合規則を例示するように意図される。
説明のために、いくつかの例示的なキャッシュセグメント74、76、78…は、キャッシュセグメント領域50内の物理位置に格納されているものとして示す。他のキャッシュセグメントは省略記号で示すが、明確化のために図示しない。以下でさらに詳しく説明するように、キャッシュセグメントは、キャッシュされたバッファブロックを記述するメタデータを含むデータ構造である。
ハッシュテーブル80がキャッシュセグメント102と関る態様を図3に示す。ハッシュテーブル80は、ハッシュテーブル領域52(図2)に格納されてもよい。ハッシュ関数84は、ホストシステム12により開始された書込み動作または読出し動作(それぞれ、書込み入力/出力(I/O)動作および読出しI/O動作とも呼ばれる)の対象であるデータの論理アドレスに適用される。書込み動作または読出し動作は、一般的に、書込み要求または読出し要求と、書込みまたは読出しされるデータの量を示すものと、データの1つ以上の論理アドレスとを、ストレージサブシステム10がホスト12から受信することに応答して開始される。当業者ならばよく理解するように、「論理アドレス」という用語は、ホストシステム12がデータに対して動作するアドレス空間を指す。これに対して物理アドレス空間は、ストレージサブシステム10とバックエンドストレージ14とがデータに対して動作する空間である。
ハッシュテーブル80は複数(n個)のスロットを含む。これらの複数のスロットのうち、第1の例示的なスロット82、第2の例示的なスロット84、…別の例示的なスロット86、…最後すなわち「n番目の」例示的なスロット88までを図示する。他のスロットは省略記号で示すが、明確化のために図示はしない。ハッシュテーブル80は如何なる数のスロットを有してもよいが、その数は一般的にホストアドレス空間内の論理アドレスの数よりも実質的に少ない。ハッシュ関数84の一例は、Slot=(LBA)MOD(n)である(「Slot」はハッシュテーブル80内のスロットのインデックスを表わし、「LBA」は論理アドレスを表わし、MODすなわちモジュロはモジュロ演算関数である)。ハッシュ関数を用いてテーブルにインデックスを付けることは当該技術分野においてよく理解されているため、本明細書でさらに詳述はしない。
各スロットは複数のエントリ90を有する。たとえば、ハッシュテーブル80の各スロットは4つのエントリ90を有してもよい。ハッシュテーブルスロット1つにつき1つのエントリではなく、ハッシュテーブルスロット1つにつき複数(すなわち、2つ以上)のエントリ90を採用することは、「衝突(collision)」を最小限にするのに役立ち得る。ハッシュテーブルアドレスの衝突は当該技術分野においてよく取上げられるものである。以下で説明するように、(ミス(miss)の場合)スロット内の任意の空の(empty)エントリ90を用いて書込み要求を実行することができる。スロットのエントリのうちのすべてが占有されている例では、他のエントリ92、94…が連結リストの形で追加され得る。
各エントリ90は、論理アドレスフィールド96と、キャッシュセグメント識別子(CSID:cache segment identifier)フィールド98と、有効エントリフィールドまたはビット(V)100とを含む。書込み動作および読出し動作の例に関して以下で説明するように、キャッシュセグメント識別子フィールド98は、キャッシュセグメント領域50(図2)に格納されたキャッシュセグメントを識別し、またはこのキャッシュセグメントにインデックスを付けるキャッシュセグメント識別子(たとえば、ポインタ)を格納するように構成されている。
キャッシュセグメント識別子により識別される各キャッシュセグメントは、図3に示す例示的なキャッシュセグメント102の構造を有してもよい。このようなキャッシュセグメントの各々は複数のキャッシュセグメントリスト要素を含む。これらの複数のキャッシュセグメントリスト要素のうち、第1の例示的なキャッシュセグメントリスト要素104、第2の例示的なキャッシュセグメントリスト要素106、…最後の例示的なキャッシュセグメントリスト要素108を図示する。他のキャッシュセグメントリスト要素は省略記号で示すが、明確化のために個別には図示しない。例示的な実施形態では、上記のストライプ22は16個のバッファブロックに対応し、各キャッシュセグメントはそれに対応して16個のキャッシュセグメントリスト要素を有し、各キャッシュセグメントリスト要素がそれらのバッファブロックのうちの1つに対応するようにしてもよい。ただし、他の実施形態では、各キャッシュセグメントは如何なる数のキャッシュセグメントリスト要素を有してもよい。
各キャッシュセグメントリスト要素は、以下のフラグフィールドを含む。すなわち、バッファブロック識別子(BBID)フィールド110、有効バッファブロックフィールドまたはビット(V)112、ダーティバッファブロックフィールドまたはビット(D)114、フラッシュバッファブロックフィールドまたはビット(F)116、および使用カウント(CNT)フィールド118である。書込み動作および読出し動作に関して、これらのフラグフィールドに格納されたフラグが用いられる態様について以下で述べるが、以下のことに留意されたい。キャッシュセグメントリスト要素の有効(バッファブロック)ビット112は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110により識別されたバッファブロックが有効であるか否かを示す。当業者ならば理解するように、「有効(valid)」という用語はキャッシングの文脈において一般的に用いられ、データが書込まれたキャッシュメモリ内の位置を表わす。キャッシュセグメントリスト要素のダーティ(バッファブロック)ビット114は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110により識別されたバッファブロックがダーティか否かを示す。当業者ならば理解するように、「ダーティ(dirty)」という用語はキャッシングの文脈において一般的に用いられ、まだバックエンドストレージ14にコピーされていないキャッシュされたデータを指す。キャッシュセグメントリスト要素のフラッシュ(バッファブロック)ビット116は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110により識別されたバッファブロックがバックエンドストレージ14へ追出されている最中である、すなわち、「フラッシュされている(flushed)」最中であるか否かを示す。キャッシュセグメントリスト要素の使用カウントフィールド118は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110により識別されたバッファブロックに対して待ち状態である、読出し要求およびフラッシュ動作を含むデータアクセス要求の数を示す。このように、キャッシュセグメントのこれらのフィールドは、そのキャッシュセグメントのバッファブロック識別子フィールド110により識別されたバッファブロックの局面を記述するメタデータとして機能する。
各キャッシュセグメントは、前のキャッシュセグメント識別子フィールド120および次のキャッシュセグメント識別子フィールド122も含む。図4に示すように、これらのフィールドを用いて、複数のキャッシュセグメントを二重連結リストでリンクすることができる。たとえば、別の例示的なキャッシュセグメント124は例示的なキャッシュセグメント102に連結可能であり、さらに別の例示的なキャッシュセグメント126は例示的なキャッシュセグメント124に連結可能である、等々である。キャッシュセグメントのこのような二重連結リストの他の例(図示せず)は、如何なる数のキャッシュセグメントを含んでもよい。このような連結リスト内の各キャッシュセグメントは、(そのバッファブロック識別子フィールド110により、)データ領域48(図1)に格納された1つ以上のバッファブロックを識別し、またはそれらに関連付けられる。たとえば、図4を参照するとともに、再び図2も参照すると、例示的なキャッシュセグメント102は、例示的なバッファブロック68、66、および70、ならびに別の例示的なバッファブロック128までの他のバッファブロック(個別には図示されないが省略記号で表わされる)を識別し、またはそれらに関連付けられてもよい。例示的なキャッシュセグメント124は、さらに別の例示的なバッファブロック130、およびバッファブロック62までの他のバッファブロック(個別には図示されないが省略記号で表わされる)を識別し、またはそれらに関連付けられてもよい。例示的なキャッシュセグメント126は、例示的なバッファブロック64を識別し、またはバッファブロック64に関連付けられてもよい。
上記のストライプ22が16個のバッファブロックに対応する例示的な実施形態によれば、以下のことに留意されたい。すなわち、キャッシュセグメント102の16個のキャッシュセグメントリスト要素(図示せず)は、16個の例示的なバッファブロック68、66、70、…128に対応すること、および、キャッシュセグメント124の16個のキャッシュセグメントリスト要素(図示せず)は、16個の例示的なバッファブロック130、…62に対応することである。図2および図4に示す例において、連結リスト内の最終キャッシュセグメント126はただ1つの例示的なバッファブロック64に対応することに留意されたい。なぜなら、この例では、関与するバッファブロックの総数が16の倍数ではないからである。この例では、キャッシュセグメント126の1つのキャッシュセグメントリスト要素は有効バッファブロック識別子を含む一方、残りの15個は有効バッファブロック識別子を含まないであろう(したがって、それらの有効ビットは「0」すなわちディアサートであろう)。以下で説明するように、書込み要求は、書込みのための任意の数のバッファブロックを示し得る。キャッシュセグメント内のキャッシュセグメントリスト要素の数(たとえば、16個)よりも少ない数のバッファブロックを示す書込み要求は、完了するのに1つのキャッシュセグメントを必要とするのみであり得るが、一方、そのバッファブロックの数よりも多い数を示す書込み動作は、(上述のように互いにリンクされた)複数のキャッシュセグメントを必要とし得る。
データ構造であるスキャッタギャザーリスト(SGL)を採用して、バッファブロックが格納されたデータ領域48内の物理位置を識別する情報を伝達してもよい。如何なる数のSGLが互いにリンクされてもよい。たとえば、図5に示すように、第1のSGL132は、例示的なバッファブロック68、66、および70の物理位置を識別する情報を含むスキャッタギャザーエントリ(SGE:scatter-gather entry)を有してもよく、一方、第2のSGL134は、例示的なバッファブロック62および64の物理位置を識別する情報を含むスキャッタギャザーエントリ(SGE)を有してもよい。第1のSGL132は第2のSGL134を指し示すリンク(SGL ID)を含む。少なくとも第1のSGL132は、バッファブロックに関連付けられたキャッシュセグメントのキャッシュセグメント識別子(CSID)も含み得る。
図6A〜図6Bのフロー図で示すように、書込み要求は以下のように処理され得る。ブロック136で示すように、ストレージサブシステム10は書込み要求通知をホストシステム12から受信する。書込み要求は、1つ以上の論理アドレスと、当該1つ以上の論理アドレスに対応して書込まれる1つ以上のデータブロックとを示す。データは、たとえば4KBなど、バッファブロックと同じサイズのブロック単位でホスト12から受信される。書込み要求は、書込まれる任意の数のデータブロックを示し得る。さらに図1を参照すると、メッセージプロセッサ30は書込み要求を受信して、コマンドプロセッサ32による書込み動作開始を可能にする情報をコマンドプロセッサ32に提供し得る。
ブロック138(図6A)で示すように、バッファプロセッサ36(図1)は、データ領域48内の1つ以上の物理位置をフリーリスト(図示せず)から割当てることによって、書込み動作の開始に応答する。フリーリストは、格納された有効バッファブロックが無いためバッファブロックストレージに利用可能である、すなわち「空いている(free)」、データ領域48内の物理位置を示す。物理位置は、バッファブロックの順序に関係なく選択され、または割当てられる。たとえば図2では、例示的なバッファブロック62、64、66、68、および70が格納された物理位置は互いに無関係であるが、ただ書込み動作が行なわれたときにそれらの物理位置の各々がフリーリストに含まれており、結果としてそれらが上記位置に格納されただけであるということに留意されたい。例示的なバッファブロック62、64、66、68、および70の論理アドレスは、それらの間の破線矢印で示す順序に従ってもよいが、その順序は、それらが格納されたデータ領域48内での物理位置と無関係である。
ブロック140で示すように、割当てられた物理位置を識別する情報を含む1つ以上のSGL(図示せず)が生成されてもよい。SGLはDMAエンジン40(図1)に伝達される。ブロック142でさらに示すように、DMAエンジン40は、SGL情報を用いて、ホスト12からの書込み要求により識別されたデータブロックをデータ領域48内の割当てられた物理位置へ転送する。キャッシュメモリ24のデータ領域48内に格納されると、データブロックは上述のようにバッファブロックを定義する。
以下で説明するように、書込み要求に応答してデータがホスト12からデータ領域48へ転送されることに引き続いて、キャッシュプロセッサ34(図1)がメタデータを更新して書込み動作を完了する。データの転送は読出し動作により中断され得ないという意味において、書込み要求に応答する書込み動作の完了は不可分であることに留意すべきである。別の言い方をすれば、バッファブロックがデータ領域48内の物理位置に格納された後、何らかの読出し要求が論理アドレスに対して待ち状態であるか否かに関係なく、メタデータが更新されて物理位置が論理アドレスに関連付けられる。トランザクション処理の語彙では、キャッシュプロセッサ34はメタデータを更新することによって書込みトランザクションを「コミット(commit)」し、これにより、不可分性を確保する。以下の動作は、そのようなメタデータの更新に関する。
ブロック144で示すように、キャッシュプロセッサ34は上記のハッシュテーブル80(図3)内の、書込み要求内で識別された1つ以上の論理アドレスをルックアップする。上述のように、ハッシュ関数84は、論理アドレスを、ハッシュテーブル80内のスロットのインデックスに変化させる。ブロック146で示すように、キャッシュプロセッサ34は、論理アドレスをそのスロット内の各エントリと比較して、その論理アドレスにおいてデータが既にキャッシュされていることを示す一致、すなわち「ヒット(hit)」があるか否かを判断する。4つのエントリのうちいずれも一致ではない場合、キャッシュプロセッサ34は上述の連結リストに従って追加のエントリに進んでもよい。論理アドレスに一致するエントリが無い場合、ハッシュテーブルルックアップの結果は「ミス(miss)」である。
ハッシュテーブルルックアップの結果がミスであるとキャッシュプロセッサ34が判断する場合(ブロック146)、ブロック148で示すように、キャッシュプロセッサ34は新たなキャッシュセグメントを割当てる。新たなキャッシュセグメントは、上述のようにCSIDにより識別される。キャッシュプロセッサ34は、CSIDをスロットエントリのうちの利用可能な1つに格納するか、または、スロット自体のすべて(たとえば、4つ)のエントリが占有されている場合には、スロットの「リンク」エントリのCSIDが更新され、新たに追加されたCSIDに次のハッシュリンクが設定される。新たなCSIDの前のハッシュリンクは、ハッシュテーブルの参照されたスロット内の「リンク」エントリのCSIDに設定される。次いで、ブロック150で示すように、新たに割当てられたキャッシュセグメント内のキャッシュセグメントリスト要素の各々について、キャッシュプロセッサ34は、SGLからバッファブロック識別子フィールド110(図3)内にバッファブロック識別子をコピーし、それらの有効ビットおよびダーティビットを設定するとともに、フラッシュビットおよび使用カウントをクリアする。また、ブロック152で示すように、キャッシュプロセッサ34は、新たに割当てられたキャッシュセグメントのキャッシュセグメント識別子を、最後に使用されてから最も長い時間が経過した(LRU:least-recently used)ダーティ連結リスト(図示せず)の末尾に追加する。以下で説明するように、LRUダーティ連結リストは、キャッシュされたデータをバックエンドストレージ14にフラッシュする際に用いられてもよい。ブロック146、148、150、および152で示す動作は、書込み要求内のデータの1つのストライプ22に関係する。ブロック154で示すように、書込み要求が2つ以上のストライプ22にまたがる場合、これらの動作が、ハッシュテーブルルックアップの結果がミスであるストライプ22の各々について繰返される。
ハッシュテーブルルックアップの結果がヒットであるとキャッシュプロセッサ34が判断する場合(ブロック146)、ブロック156で示すように、キャッシュプロセッサ34は、スロットエントリにより識別されたキャッシュセグメントを読出す。次いで、ブロック158で示すように、「空である」、すなわちそのバッファブロック識別子フィールド110内に有効バッファブロック識別子を既に含むものではないキャッシュセグメントリスト要素の各々に対して、キャッシュプロセッサ34は、SGLからそのバッファブロック識別子フィールド110内にバッファブロック識別子をコピーする。そのキャッシュセグメントリスト要素において、キャッシュプロセッサ34は以下のフラグも設定する(図3)。すなわち、有効ビット112は値「1」(「真」)に設定され、ダーティビット114は値「1」(「真」)に設定され、使用カウント118は値ゼロに設定される。空ではない、すなわち有効バッファブロック識別子を含むキャッシュセグメントリスト要素すべてについて、処理はブロック162(図6B)に続く。
ブロック162および164で示すように、キャッシュセグメントリスト要素のフラッシュビット116が「0」(「偽」)でない、または、キャッシュセグメントリスト要素の使用カウント118がゼロ以外の値を含むとキャッシュプロセッサ34が判断する場合、ブロック166で示すように、キャッシュプロセッサ34は、フラグ(すなわち、有効ビット112の値、ダーティビット114の値、フラッシュビット116の値、および使用カウントフィールド118の値)を、(元のリスト要素BBID値によりインデックスが付けられた状態で、)たとえばキャッシュメモリ24(図1)のその他領域56内にコピーまたは保存する。フラグが保存されると、ブロック168で示すように、キャッシュプロセッサ34は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110を、SGLから得られたバッファブロック識別子で上書きしてもよい。フラグは、新たに書込まれたバッファブロックと同じ段階に設定される。すなわち、フラッシュ=0、ダーティ=1、有効=1、使用カウント=0である。
しかしながら、キャッシュセグメントリスト要素のフラッシュビット116が「0」(「偽」)であり、かつ、キャッシュセグメントリスト要素の使用カウント118が値ゼロを含むとキャッシュプロセッサ34が判断する場合(ブロック162および164)、ブロック170で示すように、キャッシュプロセッサ34は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110内のバッファブロック識別子の割当てを解除する。すなわち、バッファブロック識別子は上記のフリーリストに戻される。次いで、ブロック168で示すように、キャッシュプロセッサ34は、そのキャッシュセグメントのバッファブロック識別子フィールド110を、SGLから得られたバッファブロック識別子で上書きする。
また、ブロック172で示すように、ハッシュテーブルヒットに応答して、キャッシュプロセッサ34はLRUダーティ連結リストを更新する。より具体的には、キャッシュセグメント識別子がLRUダーティ連結リスト内の位置に既に存在すると判断された場合、キャッシュセグメント識別子はその位置から取除かれ、そのキャッシュセグメント識別子のための新たな位置がLRUダーティ連結リストの末尾に追加される(すなわちリンクされる)。このように、最も新しく書込まれたキャッシュセグメント識別子がLRUダーティ連結リストの末尾に移動する。以下で説明するように、このような態様でLRUダーティ連結リストを維持することにより、より前に書込まれた(すなわち、最も古い)データをバックエンドストレージ14に追出し、またはフラッシュすることが容易になる。次いで処理は、ブロック158に関して上述したように続く。
書込み要求が2つ以上のストライプ22にまたがる場合、ブロック154で示すように、ハッシュテーブルルックアップの結果がヒットであるストライプ22の各々について上述の動作が繰返される。上述の態様で書込み動作のすべてのストライプ22が処理されると、ブロック174で示すように、ホスト12は、書込み動作が完了したことを通知される。
図7のフロー図で示すように、読出し要求は以下のように処理され得る。ブロック180で示すように、ストレージサブシステム10は読出し要求をホストシステム12から受信する。読出し要求は、データの読出しが行なわれる1つ以上の論理アドレスを示す。読出し要求は、読出されるデータの量を示してもよい。ホストシステム12は、たとえば4KBなど、バッファブロックと同じサイズのデータブロックを読出す。さらに図1を参照すると、メッセージプロセッサ30は読出し要求を受信して、コマンドプロセッサ32による読出し動作開始を可能にする情報をコマンドプロセッサ32に提供し得る。
ブロック182で示すように、キャッシュプロセッサ34は、ハッシュテーブル80(図3)のルックアップを行なうことにより、読出し動作の開始に応答する。すなわち、書込み動作に関して上述したのと同じ態様で、ハッシュ関数84が各論理アドレスに適用され、1つ以上のインデックスがハッシュテーブル80に生成される。各インデックスは、読出される1つのスロットを示す。ハッシュテーブル80から読出されるスロットの数は、読出し要求により示されるデータの量に依存する。上述のように、各スロットは1つのストライプ22を表わし、1つのストライプ22は、たとえば64KBに対応してもよい。読出し要求は複数のストライプ22にまたがってもよい。示されたスロットの各々が読出されて、結果がヒットであるかミスであるかが判断される。より具体的には、読出し動作の結果として以下の3つの可能性がある。すなわち、要求されたデータのうちのすべてがデータ領域48内に存在する(この結果は完全ヒットと呼ばれる)という結果、要求されたデータのうちの一部がデータ領域48内に存在する(この結果は部分ヒットと呼ばれる)という結果、または、要求されたデータのうちいずれもデータ領域48内に存在しない(この結果はミスまたは完全ミスと呼ばれる)という結果である。
ブロック184で示すように、ハッシュテーブルルックアップの結果がヒットであるとキャッシュプロセッサ34が判断する場合(完全ヒットまたは部分ヒットの場合があり得る)、ブロック186で示すように、キャッシュプロセッサ34は、ヒットをもたらしたエントリにより示されたキャッシュセグメントを読出す。図3に関して上述したように、そのキャッシュセグメントの各キャッシュセグメントリスト要素は、有効(バッファブロック)ビット112を有する。この有効(バッファブロック)ビット112は、そのキャッシュセグメントリスト要素のバッファブロック識別子フィールド110内で識別されたバッファブロックが有効であるか否かを示す。読出し要求内で示された論理アドレスの最下位ビットを用いて、要求されたバッファブロックのバッファブロック識別子を含むキャッシュセグメントリスト要素の始まりを識別することができる。次いで、ブロック188で示すように、バッファブロックが識別されたキャッシュセグメントリスト要素の、有効ビット112により有効であると判断された要求バッファブロックの各々について、および、ダーティビット114によりダーティであると判断された要求バッファブロックの各々について、キャッシュプロセッサ34は、そのキャッシュセグメントリスト要素の使用カウントフィールド118内の値すなわちカウントをインクリメントする。次いで、キャッシュプロセッサ34はブロック190で示すように、データ領域48からデータを読出す際に用いられる1つ以上のSGL(図示せず)を生成およびポピュレートする。次いで、キャッシュプロセッサ34はブロック192で示すように、読出し要求が別のストライプ22にまたがっているか否かを判断する。別のストライプ22が読出される場合、処理はブロック184に戻る。ハッシュテーブルルックアップの結果がミスであると判断された場合(ブロック184)、キャッシュプロセッサ34はブロック194で示すようにミスカウントをインクリメントし、処理はブロック192に関して上述したように続く。
読出し要求に関連付けられたすべてのストライプが読出された後、処理はブロック196に続く(図7B)。キャッシュプロセッサ34は上記のミスカウントを用いて、結果が完全ミスであるか否か、すなわちストライプのうちいずれもヒットではないか、または、完全ヒット(ブロック197)、すなわちストライプのうちのすべてがヒットであるかを判断し得る(ブロック196)。結果が完全ミスであるとキャッシュプロセッサ34が判断する場合(ブロック196)、ブロック198で示すように、バックエンドプロセッサ38(図1)は、要求されたデータをバックエンドストレージ14(図1)から読出す。DMAエンジン40は、バックエンドストレージ14からホスト12へデータを転送することに関与してもよい。結果が完全ヒットであるとキャッシュプロセッサ34が判断する場合(ブロック197)、ブロック199で示すように、キャッシュプロセッサ34は、要求されたデータのうちのすべてをデータ領域48から読出す(図2)。結果が部分ヒットである、すなわち、完全ミスでもなく(ブロック196)完全ヒットでもない(ブロック197)とキャッシュプロセッサ34が判断する場合、ブロック200で示すように、キャッシュプロセッサ34は、データ領域48内で見つからない要求されたデータのバッファブロックをバックエンドストレージ14から読出し、ブロック201で示すように、データ領域48内で見つかった要求されたデータのバッファブロックをデータ領域48から読出す。データ転送が完了すると、ブロック202で示すように、ホスト12は読出し動作が完了したことを通知される。
上述したように、SGLを用いてデータ領域48からのデータの転送を容易にすることができる。完全ヒットではなく部分ヒットの場合、キャッシュプロセッサ34は、ダーティバッファブロックおよび非ダーティバッファブロックを識別する情報を用いて、いずれのバッファブロックをデータ領域48から読出すか、および、いずれのバッファブロックをデータ領域48内で「飛ばして(skip over)」代りにバックエンドストレージ14から読出すか、を示す情報をSGL内に含める。有効かつダーティなバッファブロックはデータ領域48から読出さなければならないが、有効かつ非ダーティなバッファブロックはバックエンドストレージ14から読出し得る。キャッシュマネージャ34は、部分ヒットの場合はバックエンドプロセッサ38へ、または、完全ヒットの場合はDMAエンジン40へ、SGL(または互いにリンクされた複数のSGL)を送信する。ブロック200で示すように、次いで、データ領域48、バックエンドストレージ14、またはデータ領域48とバックエンドストレージ14との組合せから、要求されたバッファブロックが読出される。
図8に示すように、キャッシング方法は以下を含み得る。すなわち、(ブロック204)1つ以上の論理アドレスと、当該1つ以上の論理アドレスに対応して書込まれる1つ以上のデータブロックとを示す書込み要求を受信するステップと、(ブロック206)書込み要求に応答して、キャッシュメモリ内の1つ以上の物理位置をフリーリストから割当てるステップと、(ブロック208)上記1つ以上の論理アドレスに対する何らかの読出し要求が待ち状態であるか否かに関係なく、上記1つ以上のデータブロックを上記1つ以上の物理位置に格納するステップと、(ブロック210)上記1つ以上のデータブロックが上記1つ以上の物理位置に格納された後、上記1つ以上の論理アドレスに対して何らかの読出し要求が待ち状態であるか否かに関係なく、メタデータを更新し、上記1つ以上の物理位置を上記1つ以上の論理アドレスに関連付けるステップと、(ブロック212)有効データを有する、キャッシュメモリ内の各物理位置に対して待ち状態であるデータアクセス要求、すなわち「使用」のカウントを維持するステップと、(ブロック214)物理位置に対して待ち状態のデータアクセス要求が無いことを使用カウントが示す場合、物理位置をフリーリストに戻すステップと、である。物理位置がフリーリストに戻されるとき(ブロック214)、対応するキャッシュセグメントリスト要素の有効ビットがディアサートされることに留意してもよい。
データ領域48からバックエンドストレージ14へデータを転送することは、一般的に当該技術分野において、キャッシュメモリからデータを追出す、またはデータをフラッシュする、と称されるが、詳細は説明しない。なぜなら、データの追出しまたはフラッシュは、当業者ならば理解する従来の態様で行なわれ得るからである。簡潔に述べると、図9のフロー図を参照して、ブロック216で示すように、フリーリスト内のバッファブロックの数が閾値未満に減少したと判断された場合に、バッファブロックはデータ領域48からバックエンドストレージ14にフラッシュされ得る。ブロック218で示すように、上述したLRUダーティ連結リストによってフラッシュが容易になり得る。なぜなら、最後に書込まれてから最も長い時間が経過したバッファブロックを識別するキャッシュセグメントが、LRUダーティ連結リストの先頭に維持されるからである。このような、最後に書込まれてから最も長い時間が経過したバッファブロックをバックエンドストレージ14にフラッシュし、LRUダーティ連結リストを更新して、対応するキャッシュセグメントを取除くことが可能である。このようなフラッシュ動作は、上述した書込み動作および読出し動作とは独立して、すなわちバックグラウンドで行なわれ得ることに留意されたい。さらに、明確化のために図9には示さないが、1つ以上のバッファブロックがフラッシュされた後、図8のブロック212で示すように、使用カウントがデクリメントされる。図8のブロック214と同様に、デクリメントされた使用カウントがゼロになることで、読出し要求またはフラッシュ動作(本明細書では、まとめてデータアクセス要求と呼ばれる)のいずれも(BBIDにより識別された)物理位置に対して待ち状態でないことが示されると、物理位置がフリーリストに戻され、対応するキャッシュセグメントリスト要素の有効ビットがディアサートされる。
図6A〜図6B、図7A〜図7B、図8、および図9のフロー図は記載された方法の根底にある論理について、例示的または例証的であるように意図されたに過ぎないことを理解すべきである。さまざまな実施形態において、ストレージサブシステムは記載された方法を実行するために任意のさまざまな方法で構成され得ることを、当業者ならば理解し得る。いくつかの実施形態において、図6A〜図6B、図7A〜図7B、図8、および図9に関して上述したステップまたは動作は、互いに並行して行なわれること、および非同期的に行なわれることを含む如何なる好適な順序またはシーケンスで行なわれてもよい。いくつかの実施形態において、上述したステップまたは動作は他のものと組合されてもよく、または省略されてもよい。明確化のために、図1の個々の処理要素ならびに図6A〜図6B、図7A〜図7B、図8、および図9の個々のフロー図の形態で示したが、根底にある論理は、如何なる好適な態様でハードウェア要素またはソフトウェア要素の任意の組合せの中でモジュール化または分配されてもよい。
本発明の原理および概念を示すために、1つ以上の例示的な実施形態を参照して本発明が説明されたことに留意すべきである。本発明はこれらの実施形態に限定されない。当業者ならば理解するであろうが、本明細書で提供された説明を考慮して、本明細書に記載の実施形態に対して多くの変形がなされ得て、すべてのそのような変形例は本発明の範囲内である。
10 ストレージサブシステム、12 ホストシステム、14 バックエンドストレージ、16、18、20 物理ストレージデバイス、22 ストライプ、24 キャッシュメモリ、26 CPU、28 ワーキングメモリ、30 メッセージプロセッサ、32 コマンドプロセッサ、34 キャッシュプロセッサ、36 バッファプロセッサ、38 バックエンドプロセッサ、40 DMAエンジン、42 システムインターコネクト、44 ホストインターフェイス、46 ストレージインターフェイス。

Claims (9)

  1. データストレージサブシステムにおけるキャッシングのための方法であって、
    1つ以上の論理アドレスと、前記1つ以上の論理アドレスに対応して書込まれる1つ以上のデータブロックとを示す書込み要求を受信するステップと、
    前記書込み要求に応答して、キャッシュメモリ内の1つ以上の物理位置をフリーリストから割当てるステップと、
    前記1つ以上のデータブロックを前記1つ以上の物理位置に格納するステップと、
    論理アドレスに応答してハッシュテーブルスロットを決定するステップと、
    前記ハッシュテーブルスロット内の複数のエントリのうちのいずれかが前記論理アドレスを識別するか否かを判断するステップと、
    1つ以上のデータ構造内に前記1つ以上の物理位置を識別する識別情報を格納するステップと、
    前記1つ以上のデータ構造へのポインタを含むように、ハッシュテーブル内のエントリを更新するステップと、
    有効データを有する、前記キャッシュメモリ内の各物理位置に対して待ち状態である、読出し要求を含むデータアクセス要求のカウントを保存するステップと、
    理位置に対して待ち状態のデータアクセス要求が無いことを前記カウントが示すときに、前記物理位置を前記フリーリストに戻すステップとを含む、方法。
  2. 前記1つ以上の物理位置を割当てるステップは、前記キャッシュメモリ内の前記1つ以上の物理位置の順序に関係なく前記1つ以上の物理位置を前記フリーリストから選択するステップを含む、請求項1に記載の方法。
  3. 前記1つ以上の物理位置を割当てるステップは、前記書込み要求に関連付けられた前記1つ以上の論理アドレスに関係なく前記1つ以上の物理位置を前記フリーリストから選択するステップを含む、請求項1に記載の方法。
  4. 前記1つ以上の物理位置を割当てるステップは、前記1つ以上の物理位置を識別する情報を含むスキャッタギャザーリスト(SGL)を生成するステップを含み、
    前記1つ以上のデータブロックを前記1つ以上の物理位置に格納するステップは、
    前記SGLをダイレクトメモリアクセス(DMA)エンジンに提供するステップと、
    前記SGLに応答して、前記DMAエンジンが、ホストインターフェイスから前記キャッシュメモリへ前記1つ以上のデータブロックを転送するステップとを含む、請求項1に記載の方法。
  5. 前記1つ以上のデータ構造は連結リストを定義する、請求項1に記載の方法。
  6. 前記方法はさらに、前記ハッシュテーブルスロット内の前記エントリのうちいずれも前記論理アドレスを識別しないと判断することに応答して、前記連結リストに新たなデータ構造を追加するステップを含む、請求項5に記載の方法。
  7. 前記連結リスト内の前記新たなデータ構造を識別する情報を、最後に使用されてから最も長い時間が経過したダーティリストに追加するステップをさらに含む、請求項6に記載の方法。
  8. 前記1つ以上のデータ構造の各々は複数のサブ構造を含み、
    各サブ構造は、前記キャッシュメモリ内の前記物理位置のうちの1つを識別する前記識別情報を格納するように構成され、
    各サブ構造はさらに、前記識別情報により識別された前記物理位置に対して待ち状態の前記データアクセス要求のカウントを格納するように構成されている、請求項1に記載の方法。
  9. 各サブ構造はさらに、前記識別情報により識別された前記物理位置がダーティデータを含むか否かを示すダーティインジケータを格納するように構成されている、請求項8に記載の方法。
JP2017028194A 2016-02-19 2017-02-17 データストレージサブシステムにおけるキャッシングのための方法およびシステム Active JP6832187B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/048,080 2016-02-19
US15/048,080 US10169232B2 (en) 2016-02-19 2016-02-19 Associative and atomic write-back caching system and method for storage subsystem

Publications (3)

Publication Number Publication Date
JP2017151982A JP2017151982A (ja) 2017-08-31
JP2017151982A5 JP2017151982A5 (ja) 2019-10-24
JP6832187B2 true JP6832187B2 (ja) 2021-02-24

Family

ID=59629440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017028194A Active JP6832187B2 (ja) 2016-02-19 2017-02-17 データストレージサブシステムにおけるキャッシングのための方法およびシステム

Country Status (4)

Country Link
US (1) US10169232B2 (ja)
JP (1) JP6832187B2 (ja)
KR (1) KR20170098187A (ja)
CN (1) CN107102955B (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004668A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Searchable hot content cache
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10282301B2 (en) * 2017-05-18 2019-05-07 Avago Technologies International Sales Pte. Limited Method and system for hardware accelerated read-ahead caching
US10528438B2 (en) * 2017-05-25 2020-01-07 Avago Technologies International Sales Pte. Limited Method and system for handling bad blocks in a hardware accelerated caching solution
US10565109B2 (en) * 2017-09-05 2020-02-18 International Business Machines Corporation Asynchronous update of metadata tracks in response to a cache hit generated via an I/O operation over a bus interface
CN107577439B (zh) * 2017-09-28 2020-10-20 苏州浪潮智能科技有限公司 分配处理资源的方法、装置、设备及计算机可读存储介质
US10819647B2 (en) * 2017-12-06 2020-10-27 Marvell Israel (M.I.S.L) Ltd. Network device having reduced latency
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
US11755499B2 (en) * 2018-05-31 2023-09-12 Secturion Systems, Inc. Locally-stored remote block data integrity
KR20200100956A (ko) * 2019-02-19 2020-08-27 에스케이하이닉스 주식회사 메모리 시스템의 맵 데이터 관리 방법 및 장치
US11106609B2 (en) * 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US11392515B2 (en) * 2019-12-03 2022-07-19 Micron Technology, Inc. Cache architecture for a storage device
US11157193B2 (en) * 2019-12-16 2021-10-26 Micron Technology, Inc. Coherency issue resolution in logical to physical page translation in a memory sub-system
US11245774B2 (en) * 2019-12-16 2022-02-08 EMC IP Holding Company LLC Cache storage for streaming data
CN112988623B (zh) * 2019-12-17 2021-12-21 北京忆芯科技有限公司 加速sgl处理的方法与存储设备
US11210168B1 (en) * 2020-06-25 2021-12-28 Micron Technology, Inc. Error handling optimization in memory sub-system mapping
CN115407942B (zh) * 2022-08-29 2023-07-14 深圳市锦锐科技股份有限公司 一种适用于单片机芯片的数据处理方法
CN116303138B (zh) * 2023-05-08 2023-08-29 北京云脉芯联科技有限公司 一种缓存架构及缓存方法、电子设备
CN117609314A (zh) * 2024-01-22 2024-02-27 北京象帝先计算技术有限公司 一种缓存数据处理方法、缓存控制器、芯片及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3690295B2 (ja) * 2001-03-15 2005-08-31 日本電気株式会社 ディスクアレイ制御装置
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US8495299B2 (en) 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US20140344503A1 (en) * 2013-05-17 2014-11-20 Hitachi, Ltd. Methods and apparatus for atomic write processing
GB2534956A (en) * 2013-10-09 2016-08-10 Hitachi Ltd Storage system and storage control method
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US9910797B2 (en) * 2015-10-05 2018-03-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Space efficient formats for scatter gather lists

Also Published As

Publication number Publication date
CN107102955B (zh) 2020-03-13
US20170242794A1 (en) 2017-08-24
US10169232B2 (en) 2019-01-01
CN107102955A (zh) 2017-08-29
JP2017151982A (ja) 2017-08-31
KR20170098187A (ko) 2017-08-29

Similar Documents

Publication Publication Date Title
JP6832187B2 (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
US11709597B2 (en) Memory system and method for controlling nonvolatile memory
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US11748256B2 (en) Memory system and method for controlling nonvolatile memory
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
US10152428B1 (en) Virtual memory service levels
US9792073B2 (en) Method of LUN management in a solid state disk array
US9286209B2 (en) System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array
US11144451B2 (en) Memory system and method for controlling nonvolatile memory
US20100100664A1 (en) Storage system
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
CN108319430B (zh) 处理io请求的方法及装置
US20230297288A1 (en) Memory system and method of controlling nonvolatile memory and for reducing a buffer size
KR101823983B1 (ko) 메모리 디바이스들 및 방법들
JP4734432B2 (ja) データ記憶システム
US11436150B2 (en) Method for processing page fault by processor
CN111480151A (zh) 将高速缓存线从共用存储器页面冲洗到存储器
US11392509B2 (en) Command memory buffer systems and methods
CN113254363A (zh) 具有部分逻辑到物理地址转换表的非易失性存储控制器
US20240211406A1 (en) Systems, methods, and apparatus for accessing data from memory or storage at a storage node
EP4109231A1 (en) Method and storage device for managing a migration of data
CN115809018A (zh) 改善系统的读取性能的设备和方法
JP2024077215A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190910

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210201

R150 Certificate of patent or registration of utility model

Ref document number: 6832187

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150