JP2021517684A - Managing cache behavior using track locks and stride group locks - Google Patents

Managing cache behavior using track locks and stride group locks Download PDF

Info

Publication number
JP2021517684A
JP2021517684A JP2020545285A JP2020545285A JP2021517684A JP 2021517684 A JP2021517684 A JP 2021517684A JP 2020545285 A JP2020545285 A JP 2020545285A JP 2020545285 A JP2020545285 A JP 2020545285A JP 2021517684 A JP2021517684 A JP 2021517684A
Authority
JP
Japan
Prior art keywords
group
cache
track
lock
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.)
Granted
Application number
JP2020545285A
Other languages
Japanese (ja)
Other versions
JP7256815B2 (en
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021517684A publication Critical patent/JP2021517684A/en
Application granted granted Critical
Publication of JP7256815B2 publication Critical patent/JP7256815B2/en
Active 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Detection And Correction Of Errors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】トラック・ロックおよびストライド・グループ・ロックを使用してキャッシュ動作を管理するためのコンピュータ・プログラム製品、システム、および方法を提供する。【解決手段】ストレージ・デバイスからのトラックのグループはキャッシュに記憶される。キャッシュ内のグループ内のトラックへの書き込みのために、キャッシュ内のグループ内のトラックへの排他的トラック・ロックが付与され、排他的トラック・ロックは、キャッシュ内の異なるトラックへの書き込みのために同時に保持することができる。キャッシュ内のトラックのグループへの排他的グループ・ロックが付与されて、グループ内のトラックがキャッシュからストレージ・デバイスにデステージされる。キャッシュ内のグループ内のトラックのストレージ・デバイスへのデステージを完了したことに応答して、排他的グループ・ロックが解除される。【選択図】図3PROBLEM TO BE SOLVED: To provide a computer program product, a system, and a method for managing cache operation by using a track lock and a stride group lock. A group of tracks from a storage device is stored in a cache. For writing to a track in a group in the cache, an exclusive track lock is granted to the track in the group in the cache, and the exclusive track lock is for writing to a different track in the cache. Can be held at the same time. An exclusive group lock is granted to the group of tracks in the cache, and the tracks in the group are destaged from the cache to the storage device. The exclusive group lock is released in response to completing the destage of the trucks in the group in the cache to the storage device. [Selection diagram] Fig. 3

Description

本発明は、トラック・ロックおよびストライド・グループ・ロックを使用してキャッシュ動作を管理するためのコンピュータ・プログラム製品、システム、および方法に関する。 The present invention relates to computer program products, systems, and methods for managing cache operation using track locks and stride group locks.

ストレージ・コントローラは、ストレージ・デバイスの独立ディスク冗長アレイ(RAID:Redundant Array of Independent Disks)のアレイなどの、ストレージ・デバイスのアレイとインターフェースするための1つまたは複数のデバイス・アダプタを維持する。デバイス・アダプタは、接続されたストレージ・デバイスへの要求を管理し、ストレージ・コントローラに対してRAIDコントローラおよび機能を実装する。不揮発性メモリ・エクスプレス(NVMe:Nonvolatile Memory Express)では、NVMeコントローラは、ホスト・システムのサブミッション・キュー内のストレージ・デバイスへの読み出し要求および書き込み要求にアクセスし、ソリッド・ステート・ドライブ(SSD:Solid State Drive)などのストレージ・デバイス間にデータをストライピングするRAID機能を含み得る。 The storage controller maintains one or more device adapters for interfacing with an array of storage devices, such as an array of independent disk redundant arrays (RAIDs) of the storage device. The device adapter manages the requests to the attached storage device and implements the RAID controller and functions for the storage controller. In Nonvolatile Memory Express (NVMe), NVMe controllers access read and write requests to storage devices in the host system's submission queue to access solid state drives (SSDs:). It may include a RAID function that strips data between storage devices such as Solid State Drive).

複数のプロセッサ・コアが、ストレージ・デバイスに記憶される、キャッシュ内のストライド・グループのトラックに対して読み書きする環境において、RAIDアレイなどのストレージ・デバイスのアレイにわたってデータを読み書きするための改善された技術が当技術分野で必要とされている。 Improved for reading and writing data across an array of storage devices such as RAID arrays in an environment where multiple processor cores read and write to the tracks of the stride group in the cache stored in the storage device. Technology is needed in this field.

第1の実施形態は、トラック・ロックおよびストライド・グループ・ロックを使用してキャッシュ動作を管理するためのコンピュータ・プログラム製品、システム、および方法を提供する。ストレージ・デバイスからのトラックのグループはキャッシュに記憶される。キャッシュ内のグループ内のトラックへの書き込みのために、キャッシュ内のグループ内のトラックへの排他的トラック・ロックが付与され、排他的トラック・ロックは、キャッシュ内の異なるトラックへの書き込みのために同時に保持することができる。キャッシュ内のトラックのグループへの排他的グループ・ロックが付与されて、グループ内のトラックがキャッシュからストレージ・デバイスにデステージされる。キャッシュ内のグループ内のトラックのストレージ・デバイスへのデステージを完了したことに応答して、排他的グループ・ロックが解除される。 The first embodiment provides computer program products, systems, and methods for managing cache operations using track locks and stride group locks. A group of tracks from the storage device is cached. An exclusive track lock is granted to a track in the group in the cache for writing to a track in the group in the cache, and an exclusive track lock is granted for writing to a different track in the cache. Can be held at the same time. An exclusive group lock is granted to the group of tracks in the cache, and the tracks in the group are destaged from the cache to the storage device. The exclusive group lock is released in response to completing the destage of the trucks in the group in the cache to the storage device.

第1の実施形態は、書き込み用の複数の排他的トラック・ロックを同時に保持できるようにして、キャッシュ内の異なるトラックへの書き込みを可能にする、コンピュータ技術への改善を提供する。さらに、トラックのグループのデステージのために、トラックのグループに排他的グループ・ロックが付与される。デステージ・プロセスのために排他的グループ・ロックが保持されている間、デステージ対象のトラックにアクセスしようとする異なるプロセスはブロックされる。デステージのための排他的グループ・ロックを解除すると、グループ内のトラックへの同時書き込みのために排他的トラック・ロックを付与することが可能になる。このように、記載した実施形態は、ストライド・グループなどのトラックのグループ内の異なるトラックへの同時書き込みを管理して可能にすると共に、デステージ動作のためのグループ内の全てのトラックのロックを提供する改善を提供する。 The first embodiment provides improvements to computer technology that allow multiple exclusive track locks for writing to be held simultaneously, allowing writing to different tracks in the cache. In addition, an exclusive group lock is granted to the group of trucks due to the destage of the group of trucks. While an exclusive group lock is held for the destage process, different processes attempting to access the destaged track are blocked. When the exclusive group lock for destage is released, it becomes possible to grant the exclusive track lock for simultaneous writing to the tracks in the group. Thus, the described embodiment manages and enables simultaneous writing to different tracks within a group of tracks, such as a stride group, and locks all tracks within the group for destage operation. Provide improvements to provide.

第2の実施形態は任意選択によりさらに、グループ内の対象トラックへの書き込みを受け取ることと、グループへの排他的グループ・ロックが保持されているか否かを判定することと、排他的グループ・ロックが保持されていないと判定したことに応答して、排他的トラック・ロックを対象トラックに付与することと、排他的グループ・ロックが保持されていると判定したことに応答して、対象トラックに対する排他的トラック・ロックへのアクセスを再試行することと、を含み得る。 The second embodiment further optionally receives a write to the target track in the group, determines whether an exclusive group lock to the group is held, and an exclusive group lock. In response to determining that is not held, granting an exclusive track lock to the target track, and in response to determining that an exclusive group lock is held, for the target track It may include retrying access to the exclusive track lock.

第2の実施形態では、デステージ動作のための排他的グループ・ロックが保持されていない場合にのみ、対象トラックへの書き込みを許可して、書き込みが、進行中のデステージ動作に関与するトラックに書き込まないようにする。これにより、トラックのグループ内の異なるトラックへの同時書き込みと、グループ内の全てのトラックをデステージするためのトラックのグループへのデステージ動作とを調整するための改善が提供される。 In the second embodiment, writing to the target track is permitted only when the exclusive group lock for the destage operation is not held, and the writing is a track involved in the ongoing destage operation. Do not write to. This provides improvements for coordinating simultaneous writing to different tracks within a group of tracks and destage behavior to a group of tracks for destage all tracks within the group.

第3の実施形態は任意選択によりさらに、キャッシュ内のグループ内のトラックへの書き込みのために共有グループ・ロックを付与することと、キャッシュ内のトラックへの書き込みが完了したことに応答して、書き込みのための共有グループ・ロックを解除することと、トラックのグループのデステージを開始したことに応答して、任意の共有グループ・ロックが保持されているか否かを判定することであって、排他的グループ・ロックは、デステージするグループに対して保持されている共有グループ・ロックがないと判定したことに応答してのみ付与される、判定することと、を含み得る。 The third embodiment optionally further grants a shared group lock for writing to the tracks in the cache and in response to the completion of writing to the tracks in the cache. Releasing the shared group lock for writing and determining if any shared group lock is held in response to initiating the destage of a group of tracks. An exclusive group lock may include determining that it is granted only in response to determining that there is no shared group lock held for the destaged group.

第3の実施形態では、共有グループ・ロックは、共有グループ・ロックが適用されるグループ内のトラックに同時に書き込む書き込みに対して付与される。同時書き込みが発生している間にデステージ動作をさらに調整するために、書き込みによって保持されている共有グループ・ロックにより、全ての書き込みが完了するまでデステージ動作が開始されなくなり、それは、デステージするトラックのグループに対して保持されている共有グループ・ロックがないことによって示される。 In a third embodiment, the shared group lock is granted for writes that simultaneously write to tracks in the group to which the shared group lock is applied. To further adjust the destage operation while simultaneous writes are occurring, the shared group lock held by the write prevents the destage operation from starting until all writes are complete, which is destage. This is indicated by the fact that there are no shared group locks held for the group of tracks that you want to play.

第4の実施形態は任意選択によりさらに、トラックのグループのデステージがさらに、キャッシュ内のグループ内のトラック内の変更されたデータを特定することと、変更されたデータおよびグループの古いパリティ・データに関するデータを示す読み出し要求を生成して、サブミッション・キューに追加することによって、ストレージ・デバイスのうちの少なくとも1つから読み出して、キャッシュにステージングすることと、キャッシュにステージングされた変更されたデータおよび古いパリティ・データに関する読み出されたデータを使用して、新たなパリティ・データを計算することと、キャッシュ内の新たなパリティ・データおよび変更されたデータをストレージ・デバイスのうちの少なくとも1つに書き込むことであって、排他的グループ・ロックは、新たなパリティ・データおよび変更されたデータの、ストレージ・デバイスのうちの少なくとも1つへの書き込みが完了したことに応答して解除される、書き込むことと、を含むこと、を含み得る。 In the fourth embodiment, the destage of the group of tracks further identifies the modified data in the tracks in the group in the cache, and the altered data and the old parity data of the group. Read from at least one of the storage devices and stage it in the cache by generating a read request indicating the data about and adding it to the submission queue, and the modified data staged in the cache. And using the read data about the old parity data to calculate the new parity data and at least one of the new parity data and the changed data in the cache on the storage device. The exclusive group lock is released in response to the completion of writing the new parity data and the changed data to at least one of the storage devices. It can include writing and including.

第4の実施形態は、ストレージ・デバイスから変更されたデータおよび古いパリティ・データを読み出すための読み出し要求を生成して、キャッシュにステージングし、次いでそのステージングされたデータを使用して新たなパリティ・データを計算することにより、グループ内のトラックのパリティ・データの計算に改善を提供する。新たなパリティ・データを計算している間にデステージ動作によって排他的グループ・ロックが保持され、これは、新たなパリティ・データが計算されてストレージ・デバイスに書き込まれるまで解除されない。これにより、トラックの全ての変更されたデータおよび新たなパリティ・データがデステージされるまで書き込みを防止することによって、デステージ動作とトラックへの書き込みとの調整が改善される。 A fourth embodiment generates a read request to read the modified and old parity data from the storage device, stages it in the cache, and then uses the staged data to create a new parity. Computing the data provides an improvement in the calculation of the parity data of the tracks in the group. The destage operation holds an exclusive group lock while computing the new parity data, which is not released until the new parity data is calculated and written to the storage device. This improves coordination between destaging behavior and writing to the track by preventing writes until all modified and new parity data on the track is destaged.

第5の実施形態は任意選択により、新たなパリティ・データおよび変更されたデータを書き込むことが、キャッシュ内の変更されたデータおよび新たなパリティ・データに関するデータを示す書き込み要求を生成して、サブミッション・キューに追加することによって、キャッシュからストレージ・デバイスのうちの少なくとも1つに転送すること、を含むこと、を含み得る。 In a fifth embodiment, optionally, writing the new parity data and the changed data generates a write request indicating the changed data and the data about the new parity data in the cache, and the sub. By adding to the mission queue, it may include transferring from the cache to at least one of the storage devices.

第5の実施形態では、キャッシュ内の変更されたデータおよび新たなパリティ・データを書き込むための書き込み要求をサブミッション・キューに追加して、キャッシュからストレージ・デバイスに転送する。この書き込み要求の管理は、NVMeコントローラの場合など、サブミッション・キューから読み出し要求および書き込み要求にアクセスするコントローラを配備して、コントローラが、変更されたデータおよび新たなパリティ・データのみをストレージに書き込む部分的グループ・デステージ動作のための、変更されたデータおよびパリティ・データの読み出しおよび書き込みを完了できるようにするシステムにおいて有益である。このように、サブミッション・キューを介して変更されたデータおよび新たなパリティ・データのみを転送することによって、コントローラとシステムとの間の帯域幅が最適化される。 In a fifth embodiment, a write request for writing changed data and new parity data in the cache is added to the submission queue and transferred from the cache to the storage device. This write request management deploys a controller that accesses read and write requests from the submission queue, such as in the case of NVMe controllers, where the controller writes only changed and new parity data to storage. It is useful in systems that allow the read and write of modified and parity data for partial group destage operation to be completed. In this way, the bandwidth between the controller and the system is optimized by transferring only the changed data and the new parity data through the submission queue.

第6の実施形態は任意選択により、読み出し要求を生成することが、グループ内のトラックの変更されたセグメントを特定することと、キャッシュ内のキャッシュ・セグメントを、特定された変更されたセグメントおよび古いパリティ・データのセグメントに割り当てることと、変更されたデータおよびパリティ・データのセグメントと、割り当てられたキャッシュ・セグメントのキャッシュ内の宛先位置とを示すリストを生成することであって、リストは、ストレージ・デバイスのうちの少なくとも1つから読み出してキャッシュ内の宛先位置に書き込むデータを特定するのに使用するために、読み出し要求と共に提供される、生成することと、を含むこと、を含み得る。 A sixth embodiment optionally generates a read request to identify a modified segment of a track in a group and cache segments in the cache, identified modified segments and old. Assigning to a segment of parity data and generating a list showing the segment of modified and parity data and the destination location in the cache of the allocated cache segment, the list is storage. It may include generating, provided with a read request, for use in identifying data to be read from at least one of the devices and written to a destination location in the cache.

第6の実施形態は、サブミッション・キュー内に読み出し要求と共に提供される、変更されたデータおよび古いパリティ・データのセグメントを示すリストを生成することによって、変更されたデータおよびパリティ・データのセグメントをキャッシュにステージングする動作の効率を改善する。コントローラはサブミッション・キューにアクセスして、読み出し要求およびリストを処理し、変更されたデータおよび古いパリティ・データのセグメントをキャッシュにステージングして、新たなパリティ・データの計算に使用し得る。NVMeコントローラなどのコントローラは、サブミッション・キューから読み出し要求にアクセスして、新たなパリティ・データの計算に必要なセグメントをステージングする。記載した実施形態は、部分的ストライド・デステージにおいて、変更のないセグメントではなく変更されたデータのセグメントのみをステージングすることによって、ステージング動作を最適化する。 A sixth embodiment is a segment of modified and parity data by generating a list showing the segments of modified and old parity data provided with the read request in the submission queue. Improves the efficiency of staging operations to the cache. The controller can access the submission queue to process read requests and lists, stage modified and old parity data segments into the cache, and use them to calculate new parity data. A controller, such as an NVMe controller, accesses a read request from the submission queue to stage the segments needed to calculate the new parity data. The described embodiment optimizes the staging behavior by staging only the segments of the data that have changed, not the segments that have not changed, in partial stride destage.

第7の実施形態は、複数のストレージ・デバイスに記憶されたキャッシュ内のトラックへの入力/出力要求を管理するためのコンピュータ・プログラム製品、システム、および方法を提供し、これは、複数の処理コアがコンピュータ可読記憶媒体内のプログラム・コードを実行して、トラックのストライド・グループ内のトラックへの書き込みに対して共有ストライド・ロックを付与することによって行われ、共有ストライド・ロックは、ストライド・グループ内の異なるトラックに同時に書き込む書き込みに対して付与される。トラックのストライド・グループをデステージするためのデステージ要求に応答して、書き込み用の未解除の共有ストライド・ロックがあるか否かについての判定が行われる。書き込み用の未解除の共有ストライド・ロックがないと判定したことに応答して、キャッシュからストレージ・デバイスへのトラックのストライド・グループのデステージのために排他的ストライド・ロックが付与される。 A seventh embodiment provides computer program products, systems, and methods for managing input / output requests to tracks in caches stored in multiple storage devices, which is a plurality of processes. This is done by the core executing program code in computer-readable storage to grant a shared stride lock to writes to the tracks in the stride group of tracks, which is a stride lock. Granted for writes that are written to different tracks in the group at the same time. In response to a destage request to destage a track's stride group, a determination is made as to whether there is an unreleased shared stride lock for writing. An exclusive stride lock is granted for destage of the track stride group from the cache to the storage device in response to determining that there are no unreleased shared stride locks for writing.

第7の実施形態は、複数の処理コアがストライド・グループ内のトラックに書き込む場合に、ストライド・グループ内の異なるトラックに同時に書き込む処理コアに共有ストライド・ロックを付与することにより、改善されたキャッシング技術を提供する。デステージ要求は、排他的ストライド・グループ・ロックが付与されるまで進行することができず、それは、書き込み用の未解除の共有ストライド・ロックがなくならない限り、付与することができない。このように、記載した実施形態は、ストライド・グループ内のトラックに同時に書き込み得る複数のコアによる書き込みと、ストライド・グループ内の全てのトラックへの排他的アクセスを必要とするストライドのデステージ動作とを調整するための改善された技術を提供する。 A seventh embodiment is improved caching by granting a shared stride lock to the processing cores that write to different tracks in the stride group at the same time when multiple processing cores write to tracks in the stride group. Providing technology. The destage request cannot proceed until an exclusive stride group lock has been granted, which cannot be granted until there are no unreleased shared stride locks for writing. Thus, the described embodiments include writing by multiple cores that can write to tracks in the stride group at the same time and destage operation of the stride that requires exclusive access to all tracks in the stride group. Provides improved technology for adjusting.

ストレージ・コントローラの一実施形態を示す図である。It is a figure which shows one Embodiment of a storage controller. トラック・ロックの一実施形態を示す図である。It is a figure which shows one Embodiment of a truck lock. ストライド・グループ内のトラックの読み出し要求を処理するための動作の一実施形態を示す図である。It is a figure which shows one Embodiment of the operation for processing the read request of the track in a stride group. ストライド・グループ内のトラックへの書き込み要求を処理するための動作の一実施形態を示す図である。It is a figure which shows one Embodiment of the operation for processing the write request to the track in a stride group. ストライド・グループ内のトラックの部分的ストライド・デステージを実行するための動作の一実施形態を示す図である。It is a figure which shows one embodiment of the operation for performing a partial stride destage of a track in a stride group. ストライド・グループ内のトラックの完全ストライド・デステージを実行するための動作の一実施形態を示す図である。It is a figure which shows one embodiment of the operation for performing the complete stride destage of a track in a stride group. 図1のコンポーネントが実装され得るコンピューティング環境を示す図である。It is a figure which shows the computing environment in which the component of FIG. 1 can be implemented.

記載した実施形態は、ストレージ・デバイス間にストライピングされるストライド・グループのトラックに対する複数のプロセッサ・コアによる読み出しおよび書き込みの管理を改善するためのキャッシュ・ロック管理技法を提供する。特定の実施形態では、ストレージ・コントローラは、RAID動作を処理するためのデバイス・アダプタを含まなくてもよく、代わりに、ストレージ・デバイスに対して読み書きするためのコントローラによってアクセスされるサブミッション・キューに読み出しおよび書き込みを置いてもよい。記載した実施形態は、複数のプロセッサ・コアによるキャッシュに対する読み出しおよび書き込みの管理と、RAIDアレイ内のストレージ・デバイス間にストライピングされるストライド・グループなどのストレージ・デバイスのアレイに記憶されるグループ内のトラックのデステージとを提供する。記載した実施形態は、独立したコアまたはプロセスがストライド・グループ内の異なるトラックに同時に書き込むことを可能にする排他的トラック・ロックを提供し、ストライド内のトラックのデステージを管理するための排他的および共有グループ・ロックを提供する。デステージ動作は、排他的グループ・ロックを受け取った場合にのみ進行することが許可され得、排他的グループ・ロックは、ストライド・グループ内のトラックへのロックを保持している他のライタが存在しない場合に付与され、付与されると、デステージ動作中に書き込みによってストライド・グループに書き込まれないようにする。 The described embodiments provide cache lock management techniques for improving read and write management by multiple processor cores for stride group tracks striped between storage devices. In certain embodiments, the storage controller does not have to include a device adapter to handle RAID operations, instead the submission queue is accessed by the controller to read and write to the storage device. Reads and writes may be placed in. The described embodiments include management of reads and writes to the cache by multiple processor cores and within a group stored in an array of storage devices, such as stride groups striped between storage devices in a RAID array. Provides a track destage and. The described embodiments provide an exclusive track lock that allows an independent core or process to write to different tracks in a stride group at the same time, and is exclusive for managing the destage of tracks in the stride. And provide shared group locks. The destage operation may only be allowed to proceed if an exclusive group lock is received, the exclusive group lock has other writers holding the lock to the tracks in the stride group. Granted if not, and if granted, prevent writing to the stride group during destage operation.

記載した実施形態は、別個のコントローラがキャッシュとストレージ・デバイスとの間の読み出しおよび書き込みを管理する環境におけるキャッシュ管理技術の改善を提供する。記載した実施形態は、ロックが付与された書き込みが、ストライド・グループ内のトラックに書き込み、ストレージ・デバイスにわたって書き込まれるストライド・グループのデステージ中に書き込みが進行しないように調整することを可能にする。 The described embodiments provide improvements in cache management techniques in an environment where a separate controller manages reads and writes between the cache and the storage device. The described embodiment makes it possible to adjust the locked write to write to a track in the stride group so that the write does not proceed during the destage of the stride group being written across the storage device. ..

図1は、複数のコア102、102....102と、メモリ104とを含むストレージ・コントローラ100または他のタイプのシステムの一実施形態を示しており、メモリ104は、ストレージ・アレイ110内のストレージ・デバイス108からステージングされたトラックをキャッシュして、読み出し要求で利用できるようにするためのキャッシュ106を含む。ストレージ・コントローラ100は、ファブリック114を介してサブシステム112と通信し、ストレージ・デバイス108に対する読み出し要求および書き込み要求は、サブシステム112によって管理される。メモリ104は、コア102、102....102のそれぞれに対して1つずつ、キュー116を含み、各コアのキュー116は、読み出し要求および書き込み要求が追加される1つまたは複数のサブミッション・キュー(SQ:submission queues)118と、完了キュー120(CQ:completion queue)とを含む。キュー118、120は、キューが処理される場合に、要求がそこからアクセスされるキューの一端を指すヘッド・ポインタと、要求が追加されるキューの一端を指すテール・ポインタと、をそれぞれ有する循環キューを備え得る。コア102はI/Oマネージャ122を実行して、コア102が、ストレージ・デバイス108からキャッシュ106にトラックをステージングし、キャッシュ106からストレージ・デバイス108にトラックをデステージするための要求をサブミッション・キュー118に追加する。 FIG. 1 shows a plurality of cores 102 1 , 102 2 . .. .. .. It illustrates an embodiment of a storage controller 100 or other type of system that includes 102 n and memory 104, where memory 104 caches staged tracks from storage device 108 in storage array 110. A cache 106 is included so that it can be used in a read request. The storage controller 100 communicates with the subsystem 112 via the fabric 114, and read and write requests to the storage device 108 are managed by the subsystem 112. The memory 104 has cores 102 1 and 102 2 . .. .. .. Each of the 102 n contains one queue 116, and each core queue 116 includes one or more submission queues (SQs) 118 to which read and write requests are added. Includes completion queue 120 (CQ: completion queue). Queues 118 and 120 have a head pointer that points to one end of the queue from which the request is accessed when the queue is processed, and a tail pointer that points to one end of the queue to which the request is added. May have a queue. Core 102 i executes the I / O manager 122 so that core 102 i sub-stages the track from storage device 108 to cache 106 and destages the track from cache 106 to storage device 108. Add to mission queue 118.

I/Oマネージャ122がコントローラ124内のサブミッション・キュー・ドアベル126に書き込んだ場合に、サブシステム112内のコントローラ124は、I/Oマネージャ122によってサブミッション・キュー118に追加されたストレージ・デバイス108に対する読み出し要求および書き込み要求を取り出す。ストレージ・デバイス108に対する取り出された読み出し要求または書き込み要求を完了したことに応答して、コントローラ124は、読み出し要求または書き込み要求の完了を完了キュー120に返して、読み出し要求または書き込み要求を開始したコア102、102....102に完了を知らせる。I/Oマネージャ122を実行しているコア102は、完了キュー・ドアベル128に書き込んで、完了キュー120に書き込まれた完了を処理し終わったことを示すことによって、完了を調整し得る。 If the I / O manager 122 writes to the submission queue doorbell 126 in the controller 124, the controller 124 in the subsystem 112 is a storage device added to the submission queue 118 by the I / O manager 122. The read request and the write request for 108 are taken out. In response to completing the fetched read or write request to the storage device 108, the controller 124 returns the completion of the read or write request to the completion queue 120 and initiates the read or write request. 102 1 , 102 2 . .. .. .. Notify 102 n of completion. The core 102 i running the I / O manager 122 may adjust the completion by writing to the completion queue doorbell 128 to indicate that it has finished processing the completion written to the completion queue 120.

不揮発性メモリ・エクスプレス(NVMe)の実施形態では、コントローラ124はNVMeコントローラを備え得、I/Oマネージャ122は、NVMeコントローラ124とインターフェースし、キュー116を実装するためのNVMeドライバを含み得る。NVMeコントローラ124は、コア102によって使用される各サブミッション・キューに対して1つずつ、サブミッション・キュー・ドアベル126を含み、また、完了キュー・ドアベル128を含み得る。要求を自身のサブミッション・キュー118に追加するコア102は、コントローラ124のサブミッション・キュー・ドアベル126に書き込んで、コントローラ124に、書き込まれたサブミッション・キュー・ドアベル126に関連付けられたサブミッション・キュー118に追加された読み出し要求または書き込み要求にアクセスさせる。コントローラ124は、フェッチしたコマンドを任意の順序で実行し得る。コア102、102....102が、完了キュー120に示された読み出し/書き込み要求の完了を処理する場合、コア102、102....102は、完了キュー120の完了キュー・ドアベル128に書き込む。コントローラ124は、ストレージ・デバイス108に実装された不揮発性メモリ空間の各部を含む複数のネームスペース130をサポートし得る。ストレージ・コントローラ100は、読み出し要求および書き込み要求を、ストレージ・デバイス108内の不揮発性メモリ空間にマップするネームスペース130に向かわせ得る。ストレージ・デバイス108は、NVMeコントローラ124とインターフェースするためのハードウェアおよびソフトウェアをさらに含むであろう。 In a non-volatile memory express (NVMe) embodiment, the controller 124 may include an NVMe controller, and the I / O manager 122 may include an NVMe driver for interfacing with the NVMe controller 124 and implementing the queue 116. NVMe controller 124, one for each submission queue used by the core 102 i, includes a submission queue doorbell 126 also include a completion queue doorbell 128. The core 102 i, which adds the request to its own submission queue 118, writes to the submission queue doorbell 126 of controller 124 and is associated with the submission queue doorbell 126 written to controller 124. Access read or write requests added to mission queue 118. Controller 124 may execute the fetched commands in any order. Core 102 1 , 102 2 . .. .. .. When 102 n processes the completion of the read / write request indicated in the completion queue 120, cores 102 1 , 102 2 . .. .. .. 102 n writes to the completion queue doorbell 128 of the completion queue 120. The controller 124 may support a plurality of namespaces 130 including each part of the non-volatile memory space mounted on the storage device 108. The storage controller 100 may direct read and write requests to namespace 130, which maps to the non-volatile memory space within the storage device 108. The storage device 108 will further include hardware and software for interfacing with the NVMe controller 124.

図1の実施形態は、ファブリックを介してNVMeを実装し得、ストレージ・コントローラ100およびサブシステム112は、ファブリック114を介して通信する。そのような実施形態では、ストレージ・コントローラ100およびNVMeサブシステム112は、たとえば、リモート・ダイレクト・メモリ・アクセス(RDMA:Remote Direct Memory Access)、RDMAオーバー・コンバージド・イーサネット(R)(RoCE:RDMA over Converged Ethernet)、インターネット・ワイドエリアRDMAプロトコル(iWARP:Internet Wide−area RDMA Protocol)、インフィニバンド、およびファイバ・チャネルなどを使用してネットワーク通信を可能にするトランスポート・レイヤ132、134をそれぞれ含む。代替実施形態では、NVMEサブシステム112などのサブシステム112は、ストレージ・コントローラ100内の周辺機器相互接続エクスプレス(PCIe:Peripheral Component Interconnect Express)カード内に実装され得、ストレージ・コントローラ100およびNVMeサブシステム112は、PCIeインターフェースを介して通信する。 In the embodiment of FIG. 1, NVMe may be implemented via the fabric, and the storage controller 100 and the subsystem 112 communicate via the fabric 114. In such an embodiment, the storage controller 100 and the NVMe subsystem 112 are, for example, remote direct memory access (RDMA), RDMA over-converged Ethernet (R) (RoCE: RDMA over). It includes transport layers 132, 134 that enable network communication using Converged Ethernet), Internet Wide Area RDMA Protocol (iWARP: Internet Wide-area RDMA Protocol), InfiniBand, and Fiber Channel, respectively. In an alternative embodiment, the subsystem 112, such as the NVME subsystem 112, may be implemented within a Peripheral Component Interconnect Express (PCIe) card within the storage controller 100, the storage controller 100 and the NVMe subsystem. The 112 communicates via the PCIe interface.

ファブリック114は、ローカル・エリア・ネットワーク(LAN:Local Area Network)、ストレージ・エリア・ネットワーク(SAN:Storage Area Network)、ワイド・エリア・ネットワーク(WAN:Wide Area Network)、ピアツーピア・ネットワーク、ワイヤレス・ネットワーク、インターネットなどを含む1つまたは複数のネットワークを備え得る。 Fabric 114 includes a local area network (LAN), a storage area network (SAN), a wide area network (WAN: Wide Area Network), a peer-to-peer network, and a wireless network. , The Internet, etc. may be provided with one or more networks.

ストレージ・コントローラ100は、ストレージ・デバイス108からキャッシュ106にトラックをステージングおよびデステージするために、コア102、102....102によって実行される入力/出力(I/O:Input/Output)マネージャ・コード122を保持する。I/Oマネージャ・コード122はさらに、独立ディスク冗長アレイ(RAID)アルゴリズムまたは他のタイプのストレージ・アレイ管理アルゴリズムを実装して、ストライド・グループ内のトラックをストレージ・デバイス108にストライピングし、ストライド・グループ内のトラックのパリティを計算して、トラックと共にストレージ・デバイス108間にストライピングし得る。I/Oマネージャ122は、ストレージ・デバイス108内に構成されるストライド・グループに対してストライド・グループ・ロック200を維持して、異なるコア102、102....102によって実行されているストライド・グループ内のトラックの読み出し、書き込み、ステージング、およびデステージを管理することによって、競合を回避し、キャッシュおよびデステージの一貫性を維持する。 The storage controller 100 has cores 102 1 , 102 2. To stage and destage tracks from storage device 108 to cache 106. .. .. .. Holds the input / output (I / O: Output / Output) manager code 122 executed by 102 n. I / O manager code 122 also implements an independent disk redundant array (RAID) algorithm or other type of storage array management algorithm to strip the tracks in the stride group to storage device 108 and stride. The parity of the tracks in the group can be calculated and striped with the tracks between the storage devices 108. The I / O manager 122 maintains a stride group lock 200 for a stride group configured within the storage device 108 to provide different cores 102 1 , 102 2 . .. .. .. By managing the reads, writes, staging, and destages of tracks within the stride group being performed by 102 n, conflicts are avoided and cache and destage consistency is maintained.

コア102、102....102は、同一の中央処理装置(CPU:central processing unit)/集積回路基板上に複数のコアを備えるか、または別々の処理ユニットを備え得る。各コア102、102....102は、I/Oマネージャ122のコードを実行して、キャッシュ106に保持されている、ストレージ・デバイス108にストライドで構成されたトラックに対する読み出しおよび書き込みを送ることによって、ストレージ・デバイス108からトラックをステージングし、キャッシュ106からトラックのストライド・グループをデステージしてストレージ・デバイス間にストライピングし得る。 Core 102 1 , 102 2 . .. .. .. The 102 n may include a plurality of cores on the same central processing unit (CPU) / integrated circuit board, or may include separate processing units. Each core 102 1 , 102 2 . .. .. .. The 102 n executes the code of the I / O manager 122 to send a read / write to the storage device 108 held in the cache 106 to the track composed of the stride, so that the track can be tracked from the storage device 108. Can be staged and the stride group of tracks destaged from the cache 106 to strip between storage devices.

I/Oマネージャ122は、キャッシュ106内のトラックのインデックスを管理ブロック・ディレクトリ内のキャッシュ管理ブロックに提供するトラック・インデックスを保持し得る。管理ブロック・ディレクトリは、キャッシュ管理ブロックを含み、キャッシュ106内の各トラックに対して1つのキャッシュ管理ブロックが存在し、これは、キャッシュ内のそのトラックに関するメタデータ、たとえば、そのトラックが保持されるストライド・グループに関するストライド・グループ情報などを提供する。トラック・インデックスは、トラックをキャッシュ管理ブロックに関連付けて、キャッシュ106内のトラックに関する情報を提供する。 The I / O manager 122 may hold a track index that provides the index of the track in the cache 106 to the cache management block in the management block directory. The management block directory contains cache management blocks, and there is one cache management block for each track in cache 106, which holds metadata about that track in the cache, for example, that track. Provides stride group information about stride groups. The track index associates a track with a cache management block to provide information about the track in cache 106.

ストレージ・コントローラ100は、インターナショナル・ビジネス・マシーンズ社(IBM(IBM社の登録商標):International Business Machines Corporation)のDS8000(IBM社の登録商標)およびDS8880ストレージ・システム、または他のベンダ製のストレージ・コントローラおよびストレージ・システムなどの、ストレージ・システムを備え得る。(IBM(IBM社の登録商標)およびDS8000(IBM社の登録商標)は、世界中でのインターナショナル・ビジネス・マシーンズ社の商標である。) The storage controller 100 is a storage system manufactured by International Business Machines (IBM (registered trademark of IBM): International Business Machines Corporation) DS8000 (registered trademark of IBM) and DS8880 storage system, or other vendors. It may have a storage system, such as a controller and a storage system. (IBM (registered trademark of IBM) and DS8000 (registered trademark of IBM) are trademarks of International Business Machines, Inc. worldwide.)

ストレージ・アレイ110内のストレージ・デバイス108は、異なるタイプまたはクラスのストレージ・デバイスを備え得、たとえば、磁気ハード・ディスク・ドライブ、磁気テープ・ストレージ、ソリッド・ステート・エレクトロニクスから構成されるソリッド・ステート・ストレージ・デバイス(SSD)、EEPROM(電気的消去可能プログラム可能読み取り専用メモリ:Electrically Erasable Programmable Read−Only Memory)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM:Random Access Memory)ドライブ、ストレージクラス・メモリ(SCM:storage−class memory)など、相変化メモリ(PCM:Phase Change Memory)、抵抗ランダム・アクセス・メモリ(RRAM:resistive random access memory)、スピン注入メモリ(STM−RAM:spin transfer torque memory)、導電性ブリッジRAM(CBRAM:conductive bridging RAM)、磁気ハード・ディスク・ドライブ、光ディスク、テープなどがある。記憶域内のボリュームはさらに、単純ディスク束(JBOD:Just a Bunch of Disks)、ダイレクト・アクセス・ストレージ・デバイス(DASD:Direct Access Storage Device)、独立ディスク冗長アレイ(RAID)アレイ、仮想化デバイスなどの、デバイスのアレイから構成され得る。さらに、ストレージ・アレイ110内のストレージ・デバイス108は、異なるベンダ製の異種のストレージ・デバイス、および異なるタイプのストレージ・デバイス、たとえば、SSDなどの第2のタイプのストレージ・デバイスよりもデータ転送速度が低いハード・ディスク・ドライブなどの第1のタイプのストレージ・デバイスを備え得る。 The storage device 108 in the storage array 110 may comprise a different type or class of storage device, eg, a solid state consisting of a magnetic hard disk drive, magnetic tape storage, and solid state electronics. Storage device (SSD), EEPROM (electrically erasable programmable read-only memory: Electrically Erasable Programmable Read-Only Memory), flash memory, flash disk, random access memory (RAM: Random Access Memory) drive , Storage class memory (SCM: studio-class memory), phase change memory (PCM: Phase Change Memory), resistance random access memory (RRAM: receive random access memory), spin injection memory (STM-RAM: spin) Transfer torque memory), conductive bridge RAM (CBRAM), magnetic hard disk drives, optical disks, tapes and the like. Volumes in storage can also include simple disk bundles (JBOD: Just a Bunch of Disks), direct access storage devices (DASD), independent disk redundant array (RAID) arrays, virtualization devices, and more. , Can consist of an array of devices. In addition, the storage device 108 in the storage array 110 has a higher data transfer rate than different types of storage devices from different vendors and different types of storage devices, such as second type storage devices such as SSDs. It may be equipped with a first type of storage device such as a low hard disk drive.

NVMe実装では、ストレージ・デバイス108は、NVMeのSSDデバイスなど、NVMeサブシステム112とインターフェースするためのNVMeコンポーネントを含むであろう。 In an NVMe implementation, the storage device 108 will include NVMe components for interfacing with the NVMe subsystem 112, such as NVMe SSD devices.

メモリ104は、当技術分野で知られている適切なシステム・メモリを備え得、これには、揮発性および不揮発性メモリ・デバイス、たとえば、ダイナミック・ランダム・アクセス・メモリ(DRAM:Dynamic Random Access Memory)、相変化メモリ(PCM)、磁気抵抗ランダム・アクセス・メモリ(MRAM:Magnetoresistive random−access memory)、スピン注入(STT:Spin Transfer Torque)−MRAM、SRAMストレージ・デバイス、DRAM、強誘電体ランダム・アクセス・メモリ(FeTRAM:ferroelectric random−access memory)、ナノワイヤベースの不揮発性メモリ、およびバイト単位でアドレス指定可能なライトインプレース(write−in−place)メモリを有する不揮発性ダイレクト・インライン・メモリ・モジュール(DIMM:Non−Volatile Direct In−Line Memory Module)などが含まれる。 The memory 104 may include suitable system memory known in the art, which includes volatile and non-volatile memory devices such as Dynamic Random Access Memory (DRAM). ), Magnetoresistive Memory (PCM), Magnetoresistive Random Access Memory (MRAM), Spin Transfer Torque (STT) -MRAM, SRAM Storage Device, DRAM, Intensifier Random Non-volatile direct in-line memory module with access memory (FeTRAM), nanowire-based non-volatile memory, and byte-addressable write-in-place memory. (DIMM: Non-Volatile Direct In-Line Memory Mode) and the like are included.

図2に、ストレージ・デバイス108において構成されるストライド・グループの1つに対するストライド・グループ・ロック200のインスタンスの一実施形態を示し、これは、ストライド・グループを識別するストライド・グループ識別子(ID:identifier)202と、ストライド・グループ202内の各トラックに対するトラック・ロック204、204...204であって、ストライド・グループ202内の各トラックへのトラック・ロック204が、そのトラックに排他的ロックが付与されているか否かを示す排他的トラック・ロック206と、そのトラックに付与されている共有トラック・ロックの数を示す共有トラック・ロック・カウンタ208とを含む、トラック・ロック204、204...204と、ストライド・グループ202への排他的ロックが付与されていることを示す排他的ストライド・ロック210と、付与されている共有ストライド・ロックの数を示す共有ストライド・ロック・カウンタ212と、を含む。ストライド・グループ・ロック200の情報はさらに、ロック204が提供されているストライド・グループ内のトラックを示し得る。 Figure 2 illustrates an embodiment of a stride group lock 200 i instance to one of the configured stride group in storage device 108, which is, stride group identifier (ID for identifying the stride groups : Identifier) 202 and track locks for each track in stride group 202 204 1 , 204 2 . .. .. The track lock 204 i for each track in the stride group 202, which is 204 n , gives the track an exclusive track lock 206 indicating whether or not the track has an exclusive lock. Track locks 204 1 , 204 2. Includes a shared track lock counter 208 that indicates the number of shared track locks that have been made. .. .. 204 n , an exclusive stride lock 210 indicating that an exclusive lock has been granted to the stride group 202, a shared stride lock counter 212 indicating the number of shared stride locks granted, and including. Stride Group lock 200 i information may further indicate the tracks stride in the group lock 204 i is provided.

図3に、ストライド・グループ内のトラックの読み出し要求を処理するためにコア102、102....102によって実行されるI/Oマネージャ122によって実施される動作の一実施形態を示す。(ブロック300で)プロセッサ/コア102、102....102からストライド・グループ内のトラックの読み出しを受け取ると、(ブロック302で)要求されたトラックがキャッシュ106にある場合、I/Oマネージャ122は、(ブロック304で)トラックまたはトラックを含むストライド210に対して排他的トラック・ロック206が保持されているか否かを判定する。保持されている場合、トラックは書き込み中またはデステージ中であり、トラックへの共有ロックを取得するために、(ブロック306で)読み出し要求がキューイングまたは再試行される。(ブロック304で)排他的トラック・ロック206または排他的ストライド・ロック210が保持されていない場合、(ブロック308で)トラックの共有トラック・ロック・カウンタ208をインクリメントして、要求コア102、102....102に共有トラック・ロックが付与される。(ブロック310で)読み出しが完了した場合に共有トラック・ロック・カウンタ208がデクリメントされる。 Figure 3 shows cores 102 1 , 102 2 for processing read requests for tracks in the stride group. .. .. .. An embodiment of an operation performed by the I / O manager 122 performed by 102 n is shown. Processor / Core 102 1 , 102 2 (at block 300). .. .. .. Upon receiving a read of a track in the stride group from 102 n, if the requested track (in block 302) is in cache 106, the I / O manager 122 will use the track or stride 210 containing the track (in block 304). It is determined whether or not the exclusive track lock 206 is held with respect to. If held, the track is being written or destaged, and a read request (at block 306) is queued or retried to acquire a shared lock on the track. If exclusive track lock 206 or exclusive stride lock 210 is not held (at block 304), the track's shared track lock counter 208 is incremented (at block 308) to request cores 102 1 , 102. 2 . .. .. .. A shared track lock is granted to 102 n. The shared track lock counter 208 is decremented when the read is complete (at block 310).

(ブロック302で)要求されたトラックがキャッシュ106にない場合、I/Oマネージャ122は、(ブロック312で)キャッシュ106内で要求されたトラックにセグメントを割り当て、(ブロック314で)要求されたトラックに排他的トラック・ロック206を付与し、共有ストライド・ロック・カウンタ212をインクリメントして、ステージングするトラックを含むストライドに共有ストライド・ロックを付与する。(ブロック316で)要求されたトラックのセグメントを読み出すための読み出し要求が、サブミッション・キュー118にキューイングされる。NVMe実装では、ストレージ・コントローラ100のNVMeドライバは、ファブリック114またはバス・インターフェースを介してサブミッション・キュー・ドアベル126に書き込んで、読み出し要求を開始したコア102のサブミッション・キュー118に処理すべきI/O要求があることをコントローラ124にシグナリングし得る。コントローラ124は、(ブロック318で)トラックのセグメントを、キャッシュ106内でトラックに割り当てられたセグメントに書き込み得る。コントローラ124はまた、要求を開始したコア102の完了キュー120に完了を書き込んで、読み出しが完了したことをシグナリングする。次に、I/Oマネージャ122は、(ブロック320で)要求されたトラックへのトラック・ロック206を解除し、共有ストライド・ロック・カウンタ212をデクリメントして、ステージングするトラックを含むストライドへの共有ストライド・ロックを解除することにより、ステージングするトラックに対して保持されているロックを解除し得る。ステージング・プロセスのために保持されたロックを解除した後、制御はブロック308に進んで、開始コア102にキャッシュ106からトラックを読み出すことを許可し得る。 If the requested track (in block 302) is not in cache 106, the I / O manager 122 allocates a segment to the requested track in cache 106 (in block 312) and the requested track (in block 314). Is granted an exclusive track lock 206 and the shared stride lock counter 212 is incremented to grant a shared stride lock to the stride containing the staging track. A read request to read the requested track segment (at block 316) is queued to submission queue 118. In NVMe implementation, NVMe driver storage controller 100 writes the submission queue doorbell 126 through fabric 114 or bus interface, to process the submission queue 118 of the core 102 i that initiated the read request The controller 124 may be signaled that there is an I / O request to be made. Controller 124 may write a segment of the track (at block 318) to the segment assigned to the track in the cache 106. The controller 124 also writes the completed core 102 i of the completion queue 120 that initiated the request, signaling that the reading has been completed. The I / O manager 122 then releases the track lock 206 to the requested track (at block 320), decrements the shared stride lock counter 212, and shares it to the stride containing the staging track. By releasing the stride lock, the lock held on the staging track can be released. After releasing the locks held for the staging process, control proceeds to block 308, may allow to read the tracks from the cache 106 to start the core 102 i.

図3の実施形態では、読み出し要求のためにキャッシュにステージングするトラックおよびそのトラックを含むストライド・グループに対して、そのトラックに書き込みまたはデステージできるようにする前に、排他的トラック・ロック206および共有ストライド・ロックが保持される。記載した実施形態は、異なるコアがストライド・グループ内の異なるトラックに同時に書き込み得る間に、またはトラックがデステージされているストライド・グループ内のものである間に、トラックの読み出しが発生することを可能にして、コンピュータ技術への改善を提供する。さらに、特定の実施形態では、ストライド・グループ内のトラックに対する保留中の読み出しがある間に、ストライド・グループへのデステージは進行することが許可され得る。記載した実施形態は、キャッシュ内のトラックに対する動作と、キャッシュへのトラックのステージングとを調整するためのロック、データ構造、および機能を提供する。 In the embodiment of FIG. 3, the exclusive track lock 206 and the exclusive track lock 206 and before allowing the track and the stride group including the track to be staged in the cache for a read request to be written or destaged to that track. The shared stride lock is retained. The described embodiment states that track reads occur while different cores can write to different tracks in a stride group at the same time, or while the tracks are in a destaged stride group. Enables and provides improvements to computer technology. Moreover, in certain embodiments, destage to the stride group may be allowed to proceed while there is a pending read on the track within the stride group. The described embodiments provide locks, data structures, and functions for coordinating the behavior of tracks in the cache with the staging of the tracks into the cache.

図4に、ストライド・グループ内のトラックへの書き込み要求を処理するためにコア102、102....102によって実行されるI/Oマネージャ122によって実施される動作の一実施形態を示す。(ブロック400で)プロセッサ/コア102、102....102からストライド・グループ内のトラックへの書き込みを受け取ると、I/Oマネージャ122は、(ブロック402で)排他的206または共有208トラック・ロックがトラックに対して保持されているか否か、あるいは書き込むトラックを含むストライド・グループ200に対して保持されている排他的ストライド・ロック210があるか否かを判定する。保持されている場合、トラックは読み出し、書き込み、またはデステージ中であり、トラックへの排他的ロック206を取得するために(ブロック404で)書き込み要求がキューイングまたは再試行される。(ブロック402で)排他的206/共有208トラック・ロックまたは排他的ストライド・ロック210が保持されていない場合、(ブロック406で)排他的トラック・ロック206が要求コア102、102....102に付与され、(ブロック408で)共有ストライド・ロック・カウンタ212をインクリメントして、書き込むトラックを含むストライド・グループに共有ストライド・ロックが付与される。次に、(ブロック410で)キャッシュ106内で割り当てられたトラックに対して書き込みが実行される。書き込みが完了すると、(ブロック412で)排他的トラック・ロック206が解除され、共有ストライド・ロック・カウンタ212をデクリメントして、共有ストライド・ロックが解除される。 Figure 4 shows cores 102 1 , 102 2 for processing write requests to tracks in the stride group. .. .. .. An embodiment of an operation performed by the I / O manager 122 performed by 102 n is shown. Processor / Core 102 1 , 102 2 (at block 400). .. .. .. Upon receiving a write from 102 n to a track in the stride group, the I / O manager 122 asks whether an exclusive 206 or shared 208 track lock is held on the track (at block 402), or It determines whether there is an exclusive stride lock 210 held against stride group 200 i including the tracks to be written. If held, the track is being read, written, or destaged, and a write request is queued or retried (at block 404) to acquire an exclusive lock 206 on the track. If the exclusive 206 / shared 208 track lock or exclusive stride lock 210 is not held (at block 402), then the exclusive track lock 206 (at block 406) is the request core 102 1 , 102 2 . .. .. .. Granted to 102 n , the shared stride lock counter 212 is incremented (at block 408) to grant shared stride lock to the stride group containing the track to write. A write is then performed to the allocated track in cache 106 (at block 410). When the write is complete, the exclusive track lock 206 is released (at block 412), the shared stride lock counter 212 is decremented, and the shared stride lock is released.

図4の実施形態では、書き込むトラックおよびそのトラックを含むストライド・グループに対して、排他的トラック・ロックおよび共有ストライド・ロックを保持することによって、トラックがキャッシュ106に書き込まれている間に、トラックが読み出されないようにし、またはトラックを含むストライド・グループがデステージされないようにする。記載した実施形態は、異なるコアがストライド・グループ内のトラックに同時に書き込みを行っている間に、トラックへの書き込みが同時に発生することを可能にし、保留中の書き込みの対象となるトラック、またはデステージされているストライド・グループ内のトラックへの書き込みを開始しないことにより、ストライド・グループのデステージと、書き込み動作とを調整することを可能にして、コンピュータ技術への改善を提供する。さらに、記載したロックの実施形態は、共有ストライド・ロック・カウンタ212がゼロより大きいことによって示される、共有ストライド・ロックが保持されていることによって示されるように、ストライド・グループ内のトラックへの保留中の書き込みが存在する間に、デステージが進行しないようにする。 In the embodiment of FIG. 4, the track is written while the track is being written to the cache 106 by holding an exclusive track lock and a shared stride lock for the track to be written and the stride group including the track. Is not read, or the stride group containing the track is not destaged. The described embodiments allow writes to a track to occur simultaneously while different cores are writing to tracks in a stride group at the same time, and the track or device subject to pending writes. By not initiating writing to the tracks within the stride group being staged, it is possible to coordinate the destage of the stride group with the writing behavior, providing improvements to computer technology. In addition, the described lock embodiments are for tracks within the stride group, as indicated by the shared stride lock being held, which is indicated by the shared stride lock counter 212 greater than zero. Prevents destage from progressing while there are pending writes.

図5に、キャッシュ106内にストライド・グループ内の全てではないトラックを有する部分的ストライド・グループをデステージするためにコア102、102....102によって実行されるI/Oマネージャ122によって実施される動作の一実施形態を示す。I/Oマネージャ122は(ブロック500で)、デステージするストライド・グループを選択するための選択アルゴリズム、たとえば、ワイズ・オーダー・ライティング(WOW:Wise Order Writing)、または当技術分野で知られている他の適切なストライド・グループ選択技法などを使用して、デステージ動作を開始し得る。(ブロック502で)共有ストライド・ロック・カウンタ212がゼロより大きいことによって示されるように、共有ストライド・ロックがストライド・グループに対して保持されている場合、排他的ストライド・ロック210を付与できるようになるまで、(ブロック504で)デステージ要求がキューイングまたは再試行される。(ブロック502で)ストライド・グループがデステージする共有ストライド・ロックに対して保持されていない場合、すなわち、共有ストライド・ロック・カウンタ212がゼロである場合、I/Oマネージャ122は、(ブロック506で)デステージするストライド・グループに排他的ストライド・ロック210を付与する。(ブロック508で)キャッシュ106内のストライド・グループの変更されたトラックの特定が行われる。(ブロック510で)キャッシュ106内でキャッシュ・セグメントが特定された変更されたトラックおよび古いパリティ・データに割り当てられて、ストレージ・デバイス108から変更されたトラックの変更前バージョンおよび古いパリティ・データをステージングするのに利用可能になる。I/Oマネージャは(ブロック512で)、割り当てられたキャッシュ・セグメントにステージングする、ストレージ・デバイス108内の変更されたトラックのセグメントと、古いパリティ・データを有するセグメントとの読み出しリストを生成し得る。NVMe実装では、読み出しリストは、ストレージ・デバイス108からキャッシュ106に読み出すセグメントを示す分散収集リスト(SGL:scatter gather list)または物理領域スペース(PRP:Physical Region Space)リストを含み得る。I/Oマネージャ122は(ブロック514で)、読み出す変更されたトラックおよび古いパリティ・データのセグメントと、読み出されたセグメントを記憶するための割り当てられたキャッシュ・セグメントのキャッシュ106内の宛先位置とを識別する読み出しリストを有する読み出し要求(または複数の読み出し要求)を、デステージ動作を実行しているコア102のサブミッション・キュー118に追加する。I/Oマネージャ122は、(ブロック516で)ドアベル・レジスタ、すなわち、サブミッション・キュー・ドアベル126に書き込んで、読み出し要求が追加されたサブミッション・キュー118を読み出すようにコントローラ124にシグナリングする。 FIG. 5, cores 102 1 , 102 2 to destage a partial stride group having, but not all, tracks in the stride group in the cache 106. .. .. .. An embodiment of an operation performed by the I / O manager 122 performed by 102 n is shown. The I / O manager 122 (at block 500) is known in the art as a selection algorithm for selecting stride groups to be destaged, such as Wise Order Writing (WOW). Destage movements can be initiated using other suitable stride group selection techniques and the like. Exclusive stride lock 210 can now be granted if a shared stride lock is held for a stride group, as indicated by the shared stride lock counter 212 (in block 502) being greater than zero. The destage request is queued or retried (at block 504) until. If the stride group is not held against the destaged shared stride lock (in block 502), i.e. if the shared stride lock counter 212 is zero, then the I / O manager 122 (in block 506) Grants an exclusive stride lock 210 to the destaged stride group. The modified track of the stride group in cache 106 is identified (at block 508). A cache segment is assigned to the identified modified track and old parity data in cache 106 (at block 510) to staging the modified version and old parity data of the modified track from storage device 108. Will be available to do. The I / O manager (at block 512) may generate a read list of modified track segments in storage device 108 and segments with old parity data, staging to the allocated cache segment. .. In an NVMe implementation, the read list may include a distributed collection list (SGL) or a physical region space (PRP) list showing the segments read from the storage device 108 into the cache 106. The I / O manager 122 (at block 514) has a segment of modified track and old parity data to read and a destination position in the cache 106 of the allocated cache segment to store the read segment. A read request (or a plurality of read requests) having a read list that identifies is added to the submission queue 118 of the core 102 performing the destage operation. The I / O manager 122 writes to the doorbell register (at block 516), the submission queue doorbell 126, and signals the controller 124 to read the submission queue 118 to which the read request has been added.

コントローラ124が読み出しリスト内のセグメントをストレージ・デバイス108からキャッシュ106内の割り当てられたキャッシュ・セグメントに書き込んだ後に、コントローラ124が(ブロック518で)デステージを実行しているコア102の完了キュー120に完了を追加すると、I/Oマネージャ122は(ブロック520で)、変更されたトラック、変更されたトラックの古いデータ、および古いパリティを使用して、読み出し−変更−書き込み中に実行されるデータに対するXOR計算などにより、新たなパリティを計算して、パリティを更新する。パリティを更新した後、I/Oマネージャ122は(ブロック524で)、デステージするストライド・グループの変更されたトラックと、計算された新たなパリティとを有するキャッシュ106セグメントを示す書き込みリスト、たとえば、NVMe実装の場合は分散収集リストまたはPRPリストを生成する。I/Oマネージャ122は(ブロック526で)、ストレージ・デバイス108内のネームスペース130に書き込む変更されたトラックおよび新たなパリティ・データのキャッシュ・セグメントを識別する書き込みリストを有する書き込み要求(または複数の書き込み要求)をサブミッション・キュー118に追加する。I/Oマネージャ122は、(ブロック528で)ドアベル・レジスタ、すなわち、サブミッション・キュー・ドアベル126に書き込んで、書き込み要求が追加されたサブミッション・キュー118を読み出すようにコントローラ124にシグナリングする。 Completion queue for core 102 i where controller 124 is destage (at block 518) after controller 124 writes a segment in the read list from storage device 108 to an allocated cache segment in cache 106. Adding completion to 120 causes the I / O manager 122 (at block 520) to run during read-modify-write using the modified track, the old data of the modified track, and the old parity. A new parity is calculated by XOR calculation for the data, and the parity is updated. After updating the parity, the I / O manager 122 (at block 524) has a write list showing the cache 106 segments with the modified track of the destaging stride group and the calculated new parity, eg, In the case of NVMe implementation, a distributed collection list or PRP list is generated. The I / O manager 122 (at block 526) has a write request (or a plurality) with a write list that identifies a cache segment of modified tracks and new parity data to write to namespace 130 in storage device 108. Write request) is added to submission queue 118. The I / O manager 122 writes to the doorbell register (at block 528), the submission queue doorbell 126, and signals the controller 124 to read the submission queue 118 to which the write request has been added.

コントローラ124が、書き込みリストに示されたキャッシュ106内のセグメントをストレージ・デバイス108の宛先位置に書き込んだ後に、コントローラ124が(ブロック530で)デステージを実行しているコア102の完了キュー120に完了を追加すると、I/Oマネージャ122は(ブロック532で)デステージされたストライドへの排他的ストライド・ロック210を解除する。 After controller 124 writes a segment in cache 106 shown in the write list to the destination location of storage device 108, the completion queue 120 of core 102 i where controller 124 is destaged (at block 530). Adding completion to the I / O manager 122 releases the exclusive stride lock 210 to the destaged stride (at block 532).

図5の実施形態では、デステージするストライド・グループに対して排他的ストライド・ロックを保持することによって、トラックがデステージされている間にトラックが読み書きされないようにするが、デステージ動作中に、読み出しの保留は継続し得る。記載した実施形態は、デステージ動作中に読み書きが開始されないようにし、デステージするストライド・グループの全てのトラックがキャッシュにない場合に、パリティの更新に使用する変更されたトラックの変更前バージョンのセグメントをステージングすることによって、部分的ストライド・グループをデステージするためのコンピュータ技術への改善を提供する。一方、共有ストライド・ロック・カウンタ212がゼロより大きいことによって示される、共有ストライド・ロックが保持されていることによって示されるように、ストライド・グループ内のトラックへの保留中の書き込みが存在する。 In the embodiment of FIG. 5, an exclusive stride lock is held for the destaged stride group to prevent the track from being read or written while the track is being destaged, but during the destage operation. , Read hold may continue. The described embodiment prevents reading and writing from starting during destage operation and uses an unmodified version of the modified track used to update the parity when all tracks in the destaged stride group are not in the cache. By staging segments, it provides improvements to computer technology for destaging partial stride groups. On the other hand, there are pending writes to the tracks in the stride group, as indicated by the shared stride lock being held, which is indicated by the shared stride lock counter 212 being greater than zero.

図6に、変更されたトラックを含むストライド・グループの全てのトラックがキャッシュ106にある場合に、完全ストライド・グループをデステージするためにコア102、102....102によって実行されるI/Oマネージャ122によって実施される動作の一実施形態を示す。I/Oマネージャ122は(ブロック600で)、デステージするストライド・グループを選択するための選択アルゴリズム、たとえば、ワイズ・オーダー・ライティング(WOW)または当技術分野で知られている他の適切なストライド・グループ選択技法などを使用して、デステージ動作を開始し得る。(ブロック602で)共有ストライド・ロック・カウンタ212がゼロより大きいことによって示されるように、ストライド・グループに対して共有ストライド・ロックが保持されている場合、排他的ストライド・ロック210を付与できるようになるまで、(ブロック604で)デステージ要求がキューイングまたは再試行される。(ブロック602で)ストライド・グループがデステージする共有ストライド・ロックに対して保持されていない場合、すなわち、共有ストライド・ロック・カウンタ212がゼロである場合、I/Oマネージャ122は、(ブロック606で)デステージするストライド・グループに排他的ストライド・ロック210を付与する。次に、I/Oマネージャ122は、(ブロック608で)キャッシュ106内のストライドの全てのトラックからパリティを計算し、パリティを新たなパリティで更新する。 Figure 6 shows cores 102 1 , 102 2 to destage the full stride group when all tracks in the stride group, including the modified track, are in cache 106. .. .. .. An embodiment of an operation performed by the I / O manager 122 performed by 102 n is shown. The I / O Manager 122 (at block 600) has a selection algorithm for selecting the stride group to be destaged, such as Wise Order Writing (WOW) or other suitable stride known in the art. -The destage operation can be started by using a group selection technique or the like. Exclusive stride lock 210 can now be granted if a shared stride lock is held for the stride group, as indicated by the shared stride lock counter 212 (in block 602) being greater than zero. The destage request is queued or retried (at block 604) until. If the stride group is not held against the destaged shared stride lock (in block 602), i.e. if the shared stride lock counter 212 is zero, then the I / O manager 122 (in block 606) Grants an exclusive stride lock 210 to the destaged stride group. The I / O manager 122 then calculates the parity from all tracks of the stride in the cache 106 (at block 608) and updates the parity with the new parity.

I/Oマネージャ122は、(ブロック610で)ストライドの変更されたトラックのセグメントと、計算された新たなパリティとを示す書き込みリストを生成する。I/Oマネージャ122は、(ブロック612で)ストレージ・デバイス108内のネームスペースに書き込む、変更されたトラックおよび新たなパリティ・データのキャッシュ・セグメントを識別する書き込みリストを有する書き込み要求をサブミッション・キュー118に追加する。I/Oマネージャ122は、(ブロック614で)サブミッション・キュー・ドアベル126に書き込んで、書き込み要求が追加されたサブミッション・キュー118を読み出すようにコントローラ124にシグナリングする。 The I / O manager 122 produces a write list showing the segment of the stride modified track (at block 610) and the calculated new parity. The I / O manager 122 submits a write request with a write list that identifies the changed track and the cache segment of new parity data to write to the namespace in storage device 108 (at block 612). Add to queue 118. The I / O manager 122 writes to the submission queue doorbell 126 (at block 614) and signals the controller 124 to read the submission queue 118 to which the write request has been added.

コントローラ124が書き込みリストに示されたキャッシュ106内のセグメントをストレージ・デバイス108の宛先位置に書き込んだ後に、コントローラ124が(ブロック616で)デステージを実行しているコア102の完了キュー120に完了を追加すると、I/Oマネージャ122は(ブロック618で)デステージされたストライドへの排他的ストライド・ロック210を解除する。 The segments in the cache 106 by the controller 124 is shown to the write list after writing to the destination location of the storage device 108, the completion queue 120 of the core 102 i the controller 124 is running (block 616) destage Adding completion releases the exclusive stride lock 210 to the destaged stride (at block 618).

図5および図6の実施形態では、デステージするストライド・グループに対して排他的ストライド・ロックを保持することによって、トラックがデステージされている間にトラックが読み書きされないようにするが、デステージ動作中に、読み出しの保留は継続し得る。記載した実施形態は、デステージ動作中に読み書きが開始されないようにし、デステージするストライド・グループの全てのトラックがキャッシュにない場合に、パリティの更新に使用する変更されたトラックの変更前バージョンのセグメントをステージングすることによって、部分的または完全ストライド・グループをデステージするためのコンピュータ技術への改善を提供する。 In the embodiments of FIGS. 5 and 6, holding an exclusive stride lock on the destaged stride group prevents the track from being read or written while it is being destaged, but destaged. The read hold may continue during operation. The described embodiment prevents reading and writing from starting during destage operation and uses an unmodified version of the modified track used to update the parity when all tracks in the destaged stride group are not in the cache. By staging segments, it provides improvements to computer technology for destaging partial or complete stride groups.

本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはそれらの組み合わせとして実装され得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。 The present invention may be implemented as a system, method, or computer program product or a combination thereof. A computer program product may include a computer-readable storage medium (or a plurality of media) on which computer-readable program instructions for causing a processor to perform aspects of the invention.

コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:portable compact disc read−only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリー・スティック(R)、フロッピー・ディスク(R)、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、および前述の任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波またはその他の自由に伝搬する電磁波、導波管もしくはその他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号など、一過性の信号自体であると解釈されるべきではない。 The computer-readable storage medium can be a tangible device that can hold and store instructions for use by the instruction execution device. The computer-readable storage medium can be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination described above. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer disksets, hard disks, random access memory (RAM), read-only memory (ROM), Erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM: static random access memory), portable compact disk read-only memory (CD-ROM: portable compact disk read-only) Mechanically coded such as memory), digital versatile disc (DVD: static random disk), memory stick (R), floppy disk (R), punch card with instructions or raised groove structure. Devices, and any suitable combination described above. Computer-readable storage media, as used herein, are, for example, radio waves or other freely propagating electromagnetic waves, waveguides or other electromagnetic waves propagating through transmission media (eg, optical pulses through fiber optic cables). ), Or an electrical signal transmitted by wire, should not be construed as a transient signal itself.

本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算/処理デバイスに、あるいは、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワーク、あるいはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはそれらの組み合わせを含み得る。各計算/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれの計算/処理デバイス内のコンピュータ可読記憶媒体に記憶する。 The computer-readable program instructions described herein are from computer-readable storage media to their respective computing / processing devices, or, for example, the Internet, local area networks, wide area networks, or wireless networks, or theirs. It can be downloaded to an external computer or external storage device via a network such as a combination. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers or combinations thereof. The network adapter card or network interface of each computing / processing device receives computer-readable program instructions from the network, transfers the computer-readable program instructions, and stores them in the computer-readable storage medium in each computing / processing device. do.

本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction−set−architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはJava(R)、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行し得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続され得る。一部の実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲートアレイ(FPGA:field−programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、本発明の態様を実行するために、電子回路を個人向けにするためのコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し得る。 Computer-readable program instructions for performing the operations of the present invention include assembler instructions, instruction set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, Alternatively, in any combination of one or more programming languages, including object-oriented programming languages such as Java (R), Smalltalk, C ++, and traditional procedural programming languages such as the "C" programming language or similar programming languages. It can be written source code or object code. Computer-readable program instructions are entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on the remote computer, or completely. It can run on a remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or (eg, the Internet). • Can be connected to an external computer (via the Internet using a service provider). In some embodiments, electronic circuits including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) are described in the present invention. A computer-readable program instruction can be executed by utilizing the state information of a computer-readable program instruction for personalizing an electronic circuit in order to execute the above-described embodiment.

本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。 Aspects of the invention are described herein with reference to flowcharts and / or block diagrams of methods, devices (systems), and computer program products according to embodiments of the invention. It will be appreciated that each block of the flow chart and / or block diagram, and the combination of blocks in the flow chart and / or block diagram, can be implemented by computer-readable program instructions.

これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実施するための手段を生成するようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実施する命令を含む製造品を含むような特定の方法で機能するように、コンピュータ、プログラム可能データ処理装置、または他のデバイスあるいはそれらの組み合わせに指示することが可能なコンピュータ可読記憶媒体に記憶され得る。 These computer-readable program instructions are provided to a general purpose computer, a dedicated computer, or the processor of another programmable data processor, and the instructions executed through the processor of the computer or other programmable data processor are shown in the flowchart. Alternatively, a machine may be created that produces means for performing a specified function / action in one or more blocks of a block diagram or both. Also, these computer-readable program instructions include instructions in which the computer-readable storage medium in which the instructions are stored performs the mode of function / action specified in one or more blocks of the flowchart and / or block diagram. It may be stored on a computer-readable storage medium that can be directed to a computer, a programmable data processor, or other device or a combination thereof to function in a particular way, including a product.

また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の演算ステップを実行させることによって、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行された命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実施するようなコンピュータ実装処理を生成し得る。 A computer can also be loaded with computer-readable program instructions into a computer, other programmable data processor, or other device to perform a series of arithmetic steps on the computer, other programmable device, or other device. Generates a computer-implemented process such that an instruction executed on another programmable device, or other device, performs a specified function / action in one or more blocks of a flowchart or block diagram or both. Can be done.

図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能(複数可)を実施するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。一部の代替的実装形態では、ブロックに示す機能は、図に示す順序以外で発生し得る。たとえば、関与する機能性に応じて、連続して示す2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能または行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも留意されたい。 The flowcharts and block diagrams in the figure show the architecture, functionality, and behavior of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or part of an instruction that contains one or more executable instructions to perform a specified logical function (s). In some alternative implementations, the functions shown in the blocks can occur out of the order shown in the figure. For example, depending on the functionality involved, two blocks shown in succession can actually be executed at substantially the same time, or the blocks can optionally be executed in reverse order. Each block of the block diagram and / or flowchart diagram, and the combination of blocks in the block diagram and / or flowchart diagram, performs a specified function or action, or performs a combination of dedicated hardware and computer instructions. Also note that it can be implemented by a dedicated hardware-based system.

ストレージ・コントローラ100およびサブシステム112を含む図1の計算コンポーネントは、図7に示すコンピュータ・システム702などの1つまたは複数のコンピュータ・システムで実装され得る。コンピュータ・システム/サーバ702は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで記述され得る。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ702は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に配置され得る。 The computational components of FIG. 1, including the storage controller 100 and subsystem 112, may be implemented in one or more computer systems, such as the computer system 702 shown in FIG. The computer system / server 702 may be described in the general context of computer system executable instructions such as program modules executed by the computer system. In general, a program module can include routines, programs, objects, components, logic, data structures, etc. that perform a particular task or implement a particular abstract data type. The computer system / server 702 may be implemented in a decentralized cloud computing environment in which tasks are performed by remote processing devices linked over a communication network. In a distributed cloud computing environment, program modules can be located on both local and remote computer system storage media, including memory storage devices.

図7に示すように、コンピュータ・システム/サーバ702は、汎用コンピューティング・デバイスの形で示している。コンピュータ・システム/サーバ702のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット704と、システム・メモリ706と、システム・メモリ706を含む様々なシステム・コンポーネントをプロセッサ704に結合するバス708と、を含み得るが、これらに限定されない。バス708は、メモリバスまたはメモリ・コントローラ、ペリフェラル・バス、加速グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のうちのいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス規格協会(VESA:Video Electronics Standards Association)ローカル・バス、および周辺機器相互接続(PCI:Peripheral Component Interconnects)バスが含まれる。 As shown in FIG. 7, the computer system / server 702 is shown in the form of a general purpose computing device. The components of the computer system / server 702 include one or more processors or processing units 704, system memory 706, and a bus 708 that connects various system components, including system memory 706, to processor 704. It may include, but is not limited to. Bus 708 is of several types of bus structures, including memory buses or memory controllers, peripheral buses, accelerated graphics ports, and processors or local buses that use any of the various bus architectures. Represents one or more of. By way of example, but not by limitation, such architectures include industry standard architecture (ISA) bus, Micro Channel Architecture (MCA) bus, extended ISA (EISA) bus, and video. -Includes the Video Electronics Standards Association (VESA) local bus and the Peripheral Component Interfaces (PCI) bus.

コンピュータ・システム/サーバ702は、典型的には様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ702によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体の両方を含む。 The computer system / server 702 typically includes various computer system readable media. Such media can be any available medium accessible by the computer system / server 702, including both volatile and non-volatile media, removable and non-removable media.

システム・メモリ706は、ランダム・アクセス・メモリ(RAM)710またはキャッシュメモリ712あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ702は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。ほんの一例として、ストレージ・システム713は、取り外し不可能な不揮発性の磁気媒体(非図示、通常「ハードドライブ」と呼ばれるもの)に読み書きするために設けることができる。図示していないが、取り外し可能な不揮発性の磁気ディスク(たとえば、「フレキシブル・ディスク」)に読み書きするための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、またはその他の光学メディアなどの取り外し可能な不揮発性の光学ディスクに読み書きするための光学ディスク・ドライブを設けることができる。そのような場合、それぞれを、1つまたは複数のデータ・メディア・インターフェースによってバス708に接続することができる。以下にさらに図示および説明するように、メモリ706は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。 The system memory 706 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 710 and / or cache memory 712. The computer system / server 702 may further include other removable / non-removable, volatile / non-volatile computer system storage media. As just one example, a storage system 713 can be provided for reading and writing to a non-removable non-volatile magnetic medium (not shown, commonly referred to as a "hard drive"). Although not shown, removal of magnetic disk drives for reading and writing to and from removable non-volatile magnetic disks (eg, "flexible disks") and removal of CD-ROMs, DVD-ROMs, or other optical media, etc. An optical disk drive for reading and writing can be provided on a possible non-volatile optical disk. In such cases, each can be connected to bus 708 by one or more data media interfaces. As further illustrated and described below, memory 706 includes at least one program product having a set (eg, at least one) of program modules configured to perform the functions of embodiments of the present invention. obtain.

プログラム・モジュール716のセット(少なくとも1つ)を有するプログラム/ユーティリティ714は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ706に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組み合わせはそれぞれ、ネットワーキング環境の実装を含み得る。コンピュータ702のコンポーネントは、本明細書に記載の本発明の実施形態の機能または方法論あるいはその両方を一般的に実行するプログラム・モジュール716として実装され得る。図1のシステムは、1つまたは複数のコンピュータ・システム702で実装され得、複数のコンピュータ・システム702で実装される場合、コンピュータ・システムはネットワークを介して通信し得る。 A program / utility 714 having a set (at least one) of program modules 716 is similar, but not limited to, an operating system, one or more application programs, other program modules, and program data. In addition, it can be stored in the memory 706. Each operating system, one or more application programs, other program modules, and program data or any combination thereof may include an implementation of a networking environment. The components of computer 702 can be implemented as program modules 716 that generally perform the functions and / or methodologies of the embodiments of the invention described herein. The system of FIG. 1 may be implemented in one or more computer systems 702, and when implemented in multiple computer systems 702, the computer systems may communicate over a network.

コンピュータ・システム/サーバ702はまた、キーボード、ポインティング・デバイス、ディスプレイ720などの1つまたは複数の外部デバイス718、ユーザとコンピュータ・システム/サーバ702とのインタラクションを可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ702が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。そのような通信は、入力/出力(I/O)インターフェース722を介して行うことができる。またさらに、コンピュータ・システム/サーバ702は、ネットワーク・アダプタ724を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはそれらの組み合わせなどの、1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ724は、バス708を介してコンピュータ・システム/サーバ702の他のコンポーネントと通信する。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、コンピュータ・システム/サーバ702と共に使用され得ることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。 The computer system / server 702 also includes one or more external devices 718, such as a keyboard, pointing device, display 720, and one or more devices that allow the user to interact with the computer system / server 702. Alternatively, it may communicate with any device (eg, network card, modem, etc.) that allows the computer system / server 702 to communicate with one or more other computing devices, or a combination thereof. Such communication can be done via the input / output (I / O) interface 722. Furthermore, the computer system / server 702 is via a network adapter 724 to a local area network (LAN), a general wide area network (WAN), or a public network (eg, the Internet). Alternatively, it can communicate with one or more networks, such as a combination thereof. As shown, the network adapter 724 communicates with other components of the computer system / server 702 via bus 708. Although not shown, it should be understood that other hardware and / or software components may be used with the computer system / server 702. Examples include, but are not limited to, microcodes, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

「一実施形態(an embodiment)」、「実施形態(embodiment)」、「複数の実施形態(embodiments)」、「その実施形態(the embodiment)」、「それらの実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「いくつかの実施形態(some embodiments)」、および「1つの実施形態(one embodiment)」という用語は、特に明記しない限り、「本発明(複数可)の1つまたは複数の(全てではない)実施形態」を意味する。 "One embodiment", "Embodied", "Multiple embodiments", "The embodied", "The embodied", "The embodied", "The embodied" Unless otherwise specified, the terms "one or more embodied", "some embodiments", and "one embodied" are "the present invention". Means one or more (but not all) embodiments (s).

「含む(including)」、「備える(comprising)」、「有する(having)」という用語およびそれらの変形は、特に明記しない限り、「含むが限定されない(including but not limited to)」ことを意味する。 The terms "inclusion," "comprising," "having," and their variations, unless otherwise stated, mean "inclusion but not limited to." ..

列挙された項目のリストは、特に明記しない限り、項目のいずれかまたは全てが相互に排他的であることを意味するものではない。 The list of listed items does not mean that any or all of the items are mutually exclusive, unless otherwise stated.

「a」、「an」、および「the」という語は、特に明記しない限り、「1つまたは複数(one or more)」を意味する。 The terms "a," "an," and "the" mean "one or more," unless otherwise stated.

互いに通信するデバイスは、特に明記しない限り、互いに継続的に通信する必要はない。さらに、互いに通信するデバイスは、1つまたは複数の仲介物を介して直接的または間接的に通信し得る。 Devices that communicate with each other do not need to communicate continuously with each other unless otherwise specified. In addition, devices communicating with each other may communicate directly or indirectly via one or more intermediaries.

互いに通信するいくつかのコンポーネントを有する一実施形態の説明は、そのようなコンポーネントの全てが必要であることを意味するものではない。むしろ、本発明の多種多様な可能な実施形態を例示するために、多様な任意選択のコンポーネントを説明している。 The description of an embodiment having several components communicating with each other does not mean that all such components are required. Rather, a variety of optional components are described to illustrate a wide variety of possible embodiments of the present invention.

単一のデバイスまたは物品を本明細書で説明している場合、単一のデバイス/物品の代わりに、2つ以上のデバイス/物品が(協働の有無に関係なく)使用され得ることは容易に明らかであろう。同様に、(協働の有無に関係なく)2つ以上のデバイスまたは物品を本明細書に記載している場合、2つ以上のデバイスまたは物品の代わりに単一のデバイス/物品が使用され得、または図示した数のデバイスまたはプログラムの代わりに異なる数のデバイス/物品が使用され得ることは容易に明らかであろう。デバイスの機能性または特徴あるいはその両方は、代替的には、そのような機能性/特徴を有するものとして明示的に説明していない1つまたは複数の他のデバイスによって具現化され得る。このように、本発明の他の実施形態は、デバイス自体を含む必要はない。 When a single device or article is described herein, it is easy for two or more devices / articles (with or without collaboration) to be used instead of a single device / article. It will be clear to. Similarly, if two or more devices or articles (with or without collaboration) are described herein, a single device / article may be used in place of the two or more devices or articles. , Or it will be readily apparent that different numbers of devices / articles may be used in place of the number of devices or programs shown. The functionality and / or features of the device may optionally be embodied by one or more other devices not explicitly described as having such functionality / features. As such, other embodiments of the invention need not include the device itself.

本発明の様々な実施形態の前述の説明は、例示および説明の目的で提示してきた。網羅的であることも、本発明を開示した正確な形態に限定することも意図していない。上記の教示に照らして、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によってではなく、それに添付した特許請求の範囲によって限定されるものとする。上記の明細、例、およびデータは、本発明の構成の製造および使用の完全な説明を提供している。本発明の範囲から逸脱することなく、本発明の多くの実施形態を作成することができるので、本発明は添付後の本明細書の特許請求の範囲に存在する。 The aforementioned description of various embodiments of the present invention has been presented for purposes of illustration and description. It is neither exhaustive nor intended to be limited to the exact form in which the invention is disclosed. Many modifications and modifications are possible in the light of the above teachings. The scope of the present invention shall be limited not by this detailed description but by the claims attached thereto. The above specifications, examples, and data provide a complete description of the manufacture and use of the configurations of the present invention. The present invention is within the scope of the appended claims, as many embodiments of the invention can be made without departing from the scope of the invention.

Claims (25)

複数のストレージ・デバイスへの入力/出力要求を管理するためのコンピュータ・プログラム製品であって、動作を実施するために実行可能なコンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含み、前記動作は、
前記ストレージ・デバイスに記憶されたトラックのグループをキャッシュに記憶することと、
前記キャッシュ内の前記グループ内のトラックへの書き込みのために、前記キャッシュ内の前記グループ内の前記トラックに排他的トラック・ロックを付与することであって、排他的トラック・ロックは、前記キャッシュ内の異なるトラックへの書き込みのために同時に保持することができる、付与することと、
前記グループ内の前記トラックを前記キャッシュから前記ストレージ・デバイスにデステージするために、前記キャッシュ内の前記トラックのグループに排他的グループ・ロックを付与することと、
前記キャッシュ内の前記グループ内の前記トラックの前記ストレージ・デバイスへの前記デステージを完了したことに応答して、前記排他的グループ・ロックを解除することと、
を含む、コンピュータ・プログラム製品。
A computer program product for managing input / output requests to multiple storage devices, including a computer-readable storage medium that embodies computer-readable program code that can be executed to perform an operation. The operation is
To store a group of tracks stored in the storage device in the cache,
Granting an exclusive track lock to the track in the group in the cache for writing to a track in the group in the cache, wherein the exclusive track lock is in the cache. Can be held at the same time for writing to different tracks, granting and
Granting an exclusive group lock to the group of tracks in the cache in order to destage the track in the group from the cache to the storage device.
Releasing the exclusive group lock in response to completing the destage of the truck in the group in the cache to the storage device.
Computer program products, including.
前記動作はさらに、
前記グループ内の対象トラックへの書き込みを受け取ることと、
前記グループへの前記排他的グループ・ロックが保持されているか否かを判定することと、
前記排他的グループ・ロックが保持されていないと判定したことに応答して、排他的トラック・ロックを前記対象トラックに付与することと、
前記排他的グループ・ロックが保持されていると判定したことに応答して、前記対象トラックに対する前記排他的トラック・ロックへのアクセスを再試行することと、
を含む、請求項1に記載のコンピュータ・プログラム製品。
The above operation further
Receiving a write to the target track in the group
Determining if the exclusive group lock to the group is held and
In response to the determination that the exclusive group lock is not held, the exclusive track lock is given to the target track, and
Retrying access to the exclusive track lock for the target track in response to determining that the exclusive group lock is held.
The computer program product according to claim 1.
前記動作はさらに、
前記キャッシュ内の前記グループ内の前記トラックへの書き込みのために共有グループ・ロックを付与することと、
前記キャッシュ内のトラックへの書き込みが完了したことに応答して、前記書き込みのための共有グループ・ロックを解除することと、
前記トラックのグループの前記デステージを開始したことに応答して、任意の共有グループ・ロックが保持されているか否かを判定することであって、前記排他的グループ・ロックは、デステージする前記グループに対して保持されている共有グループ・ロックがないと判定したことに応答してのみ付与される、判定することと、
を含む、請求項1に記載のコンピュータ・プログラム製品。
The above operation further
Granting a shared group lock for writing to the track in the group in the cache.
Releasing the shared group lock for the write in response to the completion of writing to the track in the cache.
In response to initiating the destage of a group of said tracks, determining whether any shared group lock is held, said exclusive group lock is said to destage. Granted only in response to determining that there are no shared group locks held for the group.
The computer program product according to claim 1.
前記トラックのグループの前記デステージはさらに、
前記キャッシュ内の前記グループ内のトラック内の変更されたデータを特定することと、
前記変更されたデータおよび前記グループの古いパリティ・データに関するデータを示す読み出し要求を生成して、サブミッション・キューに追加することによって、前記ストレージ・デバイスのうちの少なくとも1つから読み出して、前記キャッシュにステージングすることと、
前記キャッシュにステージングされた前記変更されたデータおよび前記古いパリティ・データに関する前記読み出されたデータを使用して、新たなパリティ・データを計算することと、
前記キャッシュ内の前記新たなパリティ・データおよび前記変更されたデータを前記ストレージ・デバイスのうちの前記少なくとも1つに書き込むことであって、前記排他的グループ・ロックは、前記新たなパリティ・データおよび前記変更されたデータの、前記ストレージ・デバイスのうちの前記少なくとも1つへの前記書き込みが完了したことに応答して解除される、書き込むことと、
を含む、請求項1に記載のコンピュータ・プログラム製品。
The destage of the group of trucks further
Identifying modified data in tracks within said group in said cache and
Read from at least one of the storage devices by generating a read request indicating the modified data and data about the old parity data of the group and adding it to the submission queue to read from the cache. To staging and
Using the modified data staged in the cache and the read data for the old parity data to calculate new parity data.
Writing the new parity data and the modified data in the cache to the at least one of the storage devices, the exclusive group lock is the new parity data and the new parity data. Writing and releasing the modified data in response to the completion of the writing to at least one of the storage devices.
The computer program product according to claim 1.
前記新たなパリティ・データおよび前記変更されたデータを前記書き込むことは、
前記キャッシュ内の前記変更されたデータおよび前記新たなパリティ・データに関するデータを示す書き込み要求を生成して、前記サブミッション・キューに追加することによって、前記キャッシュから前記ストレージ・デバイスのうちの前記少なくとも1つに転送すること、
を含む、請求項4に記載のコンピュータ・プログラム製品。
Writing the new parity data and the modified data
The at least of the storage devices from the cache by generating write requests indicating the modified data in the cache and data about the new parity data and adding them to the submission queue. Transfer to one,
4. The computer program product according to claim 4.
前記コンピュータ可読プログラム・コードは、前記コンピュータ可読記憶媒体を含むシステムによって実行され、前記システムは、前記ストレージ・デバイスとインターフェースするコントローラに結合され、前記動作はさらに、
前記読み出し要求および前記書き込み要求を前記サブミッション・キューに追加する場合に、前記サブミッション・キューのドアベル・レジスタを設定することであって、前記ドアベル・レジスタの前記設定は、前記読み出し要求を処理して、前記ストレージ・デバイスのうちの前記少なくとも1つから前記キャッシュにデータを転送し、前記書き込み要求を処理して、変更されたデータおよび前記新たなパリティ・データを前記キャッシュから前記ストレージ・デバイスのうちの前記少なくとも1つに転送するように前記コントローラにシグナリングする、設定すること、
を含む、請求項5に記載のコンピュータ・プログラム製品。
The computer-readable program code is executed by a system that includes the computer-readable storage medium, the system is coupled to a controller that interfaces with the storage device, and the operation is further enhanced.
Setting the doorbell register of the submission queue when adding the read request and the write request to the submission queue, the setting of the doorbell register processes the read request. Then, data is transferred from the at least one of the storage devices to the cache, the write request is processed, and the changed data and the new parity data are transferred from the cache to the storage device. Signaling, setting, to forward to at least one of said controllers.
5. The computer program product according to claim 5.
前記読み出し要求を前記生成することは、
前記グループ内のトラックの変更されたセグメントを特定することと、
前記キャッシュ内のキャッシュ・セグメントを、前記特定された変更されたセグメントおよび古いパリティ・データのセグメントに割り当てることと、
前記変更されたデータおよび前記パリティ・データの前記セグメントと、前記割り当てられたキャッシュ・セグメントの前記キャッシュ内の宛先位置とを示すリストを生成することであって、前記リストは、前記ストレージ・デバイスのうちの前記少なくとも1つから読み出して前記キャッシュ内の前記宛先位置に書き込む前記データを特定するのに使用するために、前記読み出し要求と共に提供される、生成することと、
を含む、請求項4に記載のコンピュータ・プログラム製品。
To generate the read request
Identifying modified segments of tracks within the group
Assigning a cache segment in the cache to the identified modified segment and the segment of old parity data,
To generate a list showing the segment of the modified data and the parity data and the destination position of the allocated cache segment in the cache, the list of which is the storage device. Producing, provided with the read request, for use in identifying the data to be read from said at least one of them and written to said destination location in said cache.
4. The computer program product according to claim 4.
前記トラックを前記デステージすることはさらに、
前記グループの全ての前記トラックが前記キャッシュにあると判定することと、
前記キャッシュ内の前記グループの前記トラックから前記グループの新たなパリティ・データを計算することと、
前記キャッシュ内の前記グループの変更されたトラックおよび前記新たなパリティ・データと、前記変更されたトラックおよび前記新たなパリティ・データを書き込む前記ストレージ・デバイスのうちの少なくとも1つにおける宛先位置とを示すリストを含む書き込み要求を生成して、サブミッション・キューに追加することであって、コントローラは、前記サブミッション・キュー内の前記書き込み要求および前記リストにアクセスし、前記リストに示された前記変更されたトラックの前記データおよび前記新たなパリティ・データにアクセスし、前記リストに宛先位置として示された前記ストレージ・デバイスのうちの前記少なくとも1つにわたって書き込む、追加することと、
を含む、請求項1に記載のコンピュータ・プログラム製品。
Destage the track further
Determining that all the tracks in the group are in the cache
Computing new parity data for the group from the track for the group in the cache.
Shows the modified track and the new parity data of the group in the queue and the destination position on at least one of the modified track and the storage device that writes the new parity data. To generate a write request containing a list and add it to the submission queue, the controller accesses the write request and the list in the submission queue and makes the changes shown in the list. Accessing the data and the new parity data of the track, writing and adding over at least one of the storage devices indicated as the destination location in the list.
The computer program product according to claim 1.
前記動作はさらに、
前記ストレージ・デバイスのうちの少なくとも1つから前記キャッシュにトラックのデータをステージングするための動作を開始することと、
前記キャッシュ内のセグメントをステージングする前記データに割り当てることと、
ステージングする前記データに対する前記キャッシュ内の前記割り当てられたセグメントにロックを付与することと、
前記キャッシュにステージングする前記トラックの前記データを示す読み出し要求をサブミッション・キューに追加することと、
前記読み出し要求からの前記データを前記キャッシュ内の前記割り当てられたセグメントに記憶することと、
前記キャッシュ内の前記セグメントの前記データの前記読み出しを完了したことに応答して、前記キャッシュ内の前記セグメントへの前記ロックを解除することと、
を含む、請求項1に記載のコンピュータ・プログラム製品。
The above operation further
Initiating the operation for staging track data into the cache from at least one of the storage devices.
Assigning a segment in the cache to the staging data and
Granting a lock to the assigned segment in the cache for the data to be staged,
Adding a read request to the submission queue indicating the data for the track to be staged in the cache.
To store the data from the read request in the allocated segment in the cache.
Releasing the lock on the segment in the cache in response to completing the read of the data for the segment in the cache.
The computer program product according to claim 1.
複数のストレージ・デバイスに記憶されたキャッシュ内のトラックへの入力/出力要求を管理するためのコンピュータ・プログラム製品であって、複数の処理コアによって実行された場合に動作を実施するコンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含み、前記動作は、
トラックのストライド・グループ内のトラックへの書き込みに対して共有ストライド・ロックを付与することであって、前記共有ストライド・ロックは、前記ストライド・グループ内の異なるトラックに同時に書き込む書き込みに対して付与される、付与することと、
前記トラックのストライド・グループをデステージするためのデステージ要求に応答して、書き込み用の未解除の共有ストライド・ロックがあるか否かを判定することと、
書き込み用の未解除の共有ストライド・ロックがないと判定したことに応答して、前記キャッシュから前記ストレージ・デバイスへのトラックのストライド・グループのデステージのために排他的ストライド・ロックを付与することと、
を含む、コンピュータ・プログラム製品。
A computer program product for managing input / output requests to tracks in cache stored in multiple storage devices, a computer-readable program that performs operations when executed by multiple processing cores. The operation includes a computer-readable storage medium in which the code is embodied.
Granting a shared stride lock to writes to a track in a stride group of tracks, said shared stride lock is granted to writes to write to different tracks in the stride group at the same time. To give and give
Determining if there is an unreleased shared stride lock for writing in response to a destage request to destage the stride group of said track.
Granting an exclusive stride lock for destage of a stride group of tracks from the cache to the storage device in response to determining that there are no unreleased shared stride locks for writing. When,
Computer program products, including.
前記動作はさらに、
ファブリックを介して前記ストレージ・デバイスへのアクセスを管理するコントローラと通信することと、
トラックの読み出し要求に応答するために、前記ストレージ・デバイスから前記キャッシュに前記トラックをステージングするための読み出し要求を少なくとも1つのサブミッション・キューに追加することであって、前記コントローラは、前記ファブリックを介して前記少なくとも1つのサブミッション・キューから前記読み出し要求を取り出して、前記ストレージ・デバイスからデータを読み出して前記キャッシュに書き込む、追加することと、
前記ストライド・グループへの前記排他的ストライド・ロックを受け取ったことに応答して、前記ストライド・グループのデステージする前記トラックを書き込むための書き込み要求を前記少なくとも1つのサブミッション・キューに追加することであって、前記コントローラは、前記ファブリックを介して前記少なくとも1つのサブミッション・キューから前記書き込み要求を取り出して、前記ストレージ・デバイスにデータを書き込む、追加することと、
を含む、請求項10に記載のコンピュータ・プログラム製品。
The above operation further
Communicating with the controller that manages access to the storage device through the fabric
In order to respond to a track read request, a read request from the storage device to stage the track into the cache is added to at least one submission queue, where the controller puts the fabric on. To retrieve the read request from the at least one submission queue via the storage device, read data from the storage device, write to the cache, and add.
Adding a write request to write the destaged track of the stride group to the at least one submission queue in response to receiving the exclusive stride lock to the stride group. The controller retrieves the write request from the at least one submission queue through the fabric and writes or adds data to the storage device.
10. The computer program product of claim 10.
複数のストレージ・デバイスへの入力/出力要求を管理するためのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行された場合に動作を実施するコンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体と、を備え、前記動作は、
前記ストレージ・デバイスに記憶されたトラックのグループをキャッシュに記憶することと、
前記キャッシュ内の前記グループ内のトラックへの書き込みのために、前記キャッシュ内の前記グループ内の前記トラックに排他的トラック・ロックを付与することであって、排他的トラック・ロックは、前記キャッシュ内の異なるトラックへの書き込みのために同時に保持することができる、付与することと、
前記グループ内の前記トラックを前記キャッシュから前記ストレージ・デバイスにデステージするために、前記キャッシュ内の前記トラックのグループに排他的グループ・ロックを付与することと、
前記キャッシュ内の前記グループ内の前記トラックの前記ストレージ・デバイスへの前記デステージを完了したことに応答して、前記排他的グループ・ロックを解除することと、
を含む、システム。
A system for managing input / output requests to multiple storage devices.
With at least one processor
The operation comprises a computer-readable storage medium embodying computer-readable program code that performs the operation when executed by the at least one processor.
To store a group of tracks stored in the storage device in the cache,
Granting an exclusive track lock to the track in the group in the cache for writing to a track in the group in the cache, wherein the exclusive track lock is in the cache. Can be held at the same time for writing to different tracks, granting and
Granting an exclusive group lock to the group of tracks in the cache in order to destage the track in the group from the cache to the storage device.
Releasing the exclusive group lock in response to completing the destage of the truck in the group in the cache to the storage device.
Including the system.
前記動作はさらに、
前記グループ内の対象トラックへの書き込みを受け取ることと、
前記グループへの前記排他的グループ・ロックが保持されているか否かを判定することと、
前記排他的グループ・ロックが保持されていないと判定したことに応答して、排他的トラック・ロックを前記対象トラックに付与することと、
前記排他的グループ・ロックが保持されていると判定したことに応答して、前記対象トラックに対する前記排他的トラック・ロックへのアクセスを再試行することと、
を含む、請求項12に記載のシステム。
The above operation further
Receiving a write to the target track in the group
Determining if the exclusive group lock to the group is held and
In response to the determination that the exclusive group lock is not held, the exclusive track lock is given to the target track, and
Retrying access to the exclusive track lock for the target track in response to determining that the exclusive group lock is held.
12. The system according to claim 12.
前記動作はさらに、
前記キャッシュ内の前記グループ内の前記トラックへの書き込みのために共有グループ・ロックを付与することと、
前記キャッシュ内のトラックへの書き込みが完了したことに応答して、前記書き込みのための共有グループ・ロックを解除することと、
前記トラックのグループの前記デステージを開始したことに応答して、任意の共有グループ・ロックが保持されているか否かを判定することであって、前記排他的グループ・ロックは、デステージする前記グループに対して保持されている共有グループ・ロックがないと判定したことに応答してのみ付与される、判定することと、
を含む、請求項12に記載のシステム。
The above operation further
Granting a shared group lock for writing to the track in the group in the cache.
Releasing the shared group lock for the write in response to the completion of writing to the track in the cache.
In response to initiating the destage of a group of said tracks, determining whether any shared group lock is held, said exclusive group lock is said to destage. Granted only in response to determining that there are no shared group locks held for the group.
12. The system according to claim 12.
前記トラックのグループの前記デステージはさらに、
前記キャッシュ内の前記グループ内のトラック内の変更されたデータを特定することと、
前記変更されたデータおよび前記グループの古いパリティ・データに関するデータを示す読み出し要求を生成して、サブミッション・キューに追加することによって、前記ストレージ・デバイスのうちの少なくとも1つから読み出して、前記キャッシュにステージングすることと、
前記キャッシュにステージングされた前記変更されたデータおよび前記古いパリティ・データに関する前記読み出されたデータを使用して、新たなパリティ・データを計算することと、
前記キャッシュ内の前記新たなパリティ・データおよび前記変更されたデータを前記ストレージ・デバイスのうちの前記少なくとも1つに書き込むことであって、前記排他的グループ・ロックは、前記新たなパリティ・データおよび前記変更されたデータの、前記ストレージ・デバイスのうちの前記少なくとも1つへの前記書き込みが完了したことに応答して解除される、書き込むことと、
を含む、請求項12に記載のシステム。
The destage of the group of trucks further
Identifying modified data in tracks within said group in said cache and
Read from at least one of the storage devices by generating a read request indicating the modified data and data about the old parity data of the group and adding it to the submission queue to read from the cache. To staging and
Using the modified data staged in the cache and the read data for the old parity data to calculate new parity data.
Writing the new parity data and the modified data in the cache to the at least one of the storage devices, the exclusive group lock is the new parity data and the new parity data. Writing and releasing the modified data in response to the completion of the writing to at least one of the storage devices.
12. The system according to claim 12.
前記新たなパリティ・データおよび前記変更されたデータを前記書き込むことは、
前記キャッシュ内の前記変更されたデータおよび前記新たなパリティ・データに関するデータを示す書き込み要求を生成して、前記サブミッション・キューに追加することによって、前記キャッシュから前記ストレージ・デバイスのうちの前記少なくとも1つに転送すること、
を含む、請求項15に記載のシステム。
Writing the new parity data and the modified data
The at least of the storage devices from the cache by generating write requests indicating the modified data in the cache and data about the new parity data and adding them to the submission queue. Transfer to one,
15. The system of claim 15.
前記読み出し要求を前記生成することは、
前記グループ内のトラックの変更されたセグメントを特定することと、
前記キャッシュ内のキャッシュ・セグメントを、前記特定された変更されたセグメントおよび古いパリティ・データのセグメントに割り当てることと、
前記変更されたデータおよび前記パリティ・データの前記セグメントと、前記割り当てられたキャッシュ・セグメントの前記キャッシュ内の宛先位置とを示すリストを生成することであって、前記リストは、前記ストレージ・デバイスのうちの前記少なくとも1つから読み出して前記キャッシュ内の前記宛先位置に書き込む前記データを特定するのに使用するために、前記読み出し要求と共に提供される、生成することと、
を含む、請求項15に記載のシステム。
To generate the read request
Identifying modified segments of tracks within the group
Assigning a cache segment in the cache to the identified modified segment and the segment of old parity data,
To generate a list showing the segment of the modified data and the parity data and the destination position of the allocated cache segment in the cache, the list of which is the storage device. Producing, provided with the read request, for use in identifying the data to be read from said at least one of them and written to said destination location in said cache.
15. The system of claim 15.
複数のストレージ・デバイスへの入力/出力要求を管理するためのシステムであって、
複数の処理コアと、
処理コアによって実行された場合に動作を実施するコンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体と、を備え、前記動作は、
トラックのストライド・グループ内のトラックへの書き込みに対して共有ストライド・ロックを付与することであって、前記共有ストライド・ロックは、前記ストライド・グループ内の異なるトラックに同時に書き込む書き込みに対して付与される、付与することと、
前記トラックのストライド・グループをデステージするためのデステージ要求に応答して、書き込み用の未解除の共有ストライド・ロックがあるか否かを判定することと、
書き込み用の未解除の共有ストライド・ロックがないと判定したことに応答して、キャッシュから前記ストレージ・デバイスへのトラックのストライド・グループのデステージのために排他的ストライド・ロックを付与することと、
を含む、システム。
A system for managing input / output requests to multiple storage devices.
With multiple processing cores
The operation comprises a computer-readable storage medium embodying computer-readable program code that performs the operation when executed by the processing core.
Granting a shared stride lock to writes to a track in a stride group of tracks, said shared stride lock is granted to writes to write to different tracks in the stride group at the same time. To give and give
Determining if there is an unreleased shared stride lock for writing in response to a destage request to destage the stride group of said track.
Granting an exclusive stride lock for destage of a track stride group from the cache to the storage device in response to determining that there is no unreleased shared stride lock for writing. ,
Including the system.
前記動作はさらに、
ファブリックを介して前記ストレージ・デバイスへのアクセスを管理するコントローラと通信することと、
トラックの読み出し要求に応答するために、前記ストレージ・デバイスから前記キャッシュに前記トラックをステージングするための読み出し要求を少なくとも1つのサブミッション・キューに追加することであって、前記コントローラは、前記ファブリックを介して前記少なくとも1つのサブミッション・キューから前記読み出し要求を取り出して、前記ストレージ・デバイスからデータを読み出して前記キャッシュに書き込む、追加することと、
前記ストライド・グループへの前記排他的ストライド・ロックを受け取ったことに応答して、前記ストライド・グループのデステージする前記トラックを書き込むための書き込み要求を前記少なくとも1つのサブミッション・キューに追加することであって、前記コントローラは、前記ファブリックを介して前記少なくとも1つのサブミッション・キューから前記書き込み要求を取り出して、前記ストレージ・デバイスにデータを書き込む、追加することと、
を含む、請求項18に記載のシステム。
The above operation further
Communicating with the controller that manages access to the storage device through the fabric
In order to respond to a track read request, a read request from the storage device to stage the track into the cache is added to at least one submission queue, where the controller puts the fabric on. To retrieve the read request from the at least one submission queue via the storage device, read data from the storage device, write to the cache, and add.
Adding a write request to write the destaged track of the stride group to the at least one submission queue in response to receiving the exclusive stride lock to the stride group. The controller retrieves the write request from the at least one submission queue through the fabric and writes or adds data to the storage device.
18. The system of claim 18.
複数のストレージ・デバイスへの入力/出力要求を管理するための方法であって、
前記ストレージ・デバイスに記憶されたトラックのグループをキャッシュに記憶することと、
前記キャッシュ内の前記グループ内のトラックへの書き込みのために、前記キャッシュ内の前記グループ内の前記トラックに排他的トラック・ロックを付与することであって、排他的トラック・ロックは、前記キャッシュ内の異なるトラックへの書き込みのために同時に保持することができる、付与することと、
前記グループ内の前記トラックを前記キャッシュから前記ストレージ・デバイスにデステージするために、前記キャッシュ内の前記トラックのグループに排他的グループ・ロックを付与することと、
前記キャッシュ内の前記グループ内の前記トラックの前記ストレージ・デバイスへの前記デステージを完了したことに応答して、前記排他的グループ・ロックを解除することと、
を含む、方法。
A method for managing input / output requests to multiple storage devices.
To store a group of tracks stored in the storage device in the cache,
Granting an exclusive track lock to the track in the group in the cache for writing to a track in the group in the cache, wherein the exclusive track lock is in the cache. Can be held at the same time for writing to different tracks, granting and
Granting an exclusive group lock to the group of tracks in the cache in order to destage the track in the group from the cache to the storage device.
Releasing the exclusive group lock in response to completing the destage of the truck in the group in the cache to the storage device.
Including methods.
前記グループ内の対象トラックへの書き込みを受け取ることと、
前記グループへの前記排他的グループ・ロックが保持されているか否かを判定することと、
前記排他的グループ・ロックが保持されていないと判定したことに応答して、排他的トラック・ロックを前記対象トラックに付与することと、
前記排他的グループ・ロックが保持されていると判定したことに応答して、前記対象トラックに対する前記排他的トラック・ロックへのアクセスを再試行することと、
をさらに含む、請求項20に記載の方法。
Receiving a write to the target track in the group
Determining if the exclusive group lock to the group is held and
In response to the determination that the exclusive group lock is not held, the exclusive track lock is given to the target track, and
Retrying access to the exclusive track lock for the target track in response to determining that the exclusive group lock is held.
20. The method of claim 20.
前記キャッシュ内の前記グループ内の前記トラックへの書き込みのために共有グループ・ロックを付与することと、
前記キャッシュ内のトラックへの書き込みが完了したことに応答して、前記書き込みのための共有グループ・ロックを解除することと、
前記トラックのグループの前記デステージを開始したことに応答して、任意の共有グループ・ロックが保持されているか否かを判定することであって、前記排他的グループ・ロックは、デステージする前記グループに対して保持されている共有グループ・ロックがないと判定したことに応答してのみ付与される、判定することと、
をさらに含む、請求項20に記載の方法。
Granting a shared group lock for writing to the track in the group in the cache.
Releasing the shared group lock for the write in response to the completion of writing to the track in the cache.
In response to initiating the destage of a group of said tracks, determining whether any shared group lock is held, said exclusive group lock is said to destage. Granted only in response to determining that there are no shared group locks held for the group.
20. The method of claim 20.
前記トラックのグループの前記デステージはさらに、
前記キャッシュ内の前記グループ内のトラック内の変更されたデータを特定することと、
前記変更されたデータおよび前記グループの古いパリティ・データに関するデータを示す読み出し要求を生成して、サブミッション・キューに追加することによって、前記ストレージ・デバイスのうちの少なくとも1つから読み出して、前記キャッシュにステージングすることと、
前記キャッシュにステージングされた前記変更されたデータおよび前記古いパリティ・データに関する前記読み出されたデータを使用して、新たなパリティ・データを計算することと、
前記キャッシュ内の前記新たなパリティ・データおよび前記変更されたデータを前記ストレージ・デバイスのうちの前記少なくとも1つに書き込むことであって、前記排他的グループ・ロックは、前記新たなパリティ・データおよび前記変更されたデータの、前記ストレージ・デバイスのうちの前記少なくとも1つへの前記書き込みが完了したことに応答して解除される、書き込むことと、
を含む、請求項20に記載の方法。
The destage of the group of trucks further
Identifying modified data in tracks within said group in said cache and
Read from at least one of the storage devices by generating a read request indicating the modified data and data about the old parity data of the group and adding it to the submission queue to read from the cache. To staging and
Using the modified data staged in the cache and the read data for the old parity data to calculate new parity data.
Writing the new parity data and the modified data in the cache to the at least one of the storage devices, the exclusive group lock is the new parity data and the new parity data. Writing and releasing the modified data in response to the completion of the writing to at least one of the storage devices.
20. The method of claim 20.
前記新たなパリティ・データおよび前記変更されたデータを前記書き込むことは、
前記キャッシュ内の前記変更されたデータおよび前記新たなパリティ・データに関するデータを示す書き込み要求を生成して、前記サブミッション・キューに追加することによって、前記キャッシュから前記ストレージ・デバイスのうちの前記少なくとも1つに転送すること、
を含む、請求項23に記載の方法。
Writing the new parity data and the modified data
The at least of the storage devices from the cache by generating write requests indicating the modified data in the cache and data about the new parity data and adding them to the submission queue. Transfer to one,
23. The method of claim 23.
前記読み出し要求を前記生成することは、
前記グループ内のトラックの変更されたセグメントを特定することと、
前記キャッシュ内のキャッシュ・セグメントを、前記特定された変更されたセグメントおよび古いパリティ・データのセグメントに割り当てることと、
前記変更されたデータおよび前記パリティ・データの前記セグメントと、前記割り当てられたキャッシュ・セグメントの前記キャッシュ内の宛先位置とを示すリストを生成することであって、前記リストは、前記ストレージ・デバイスのうちの前記少なくとも1つから読み出して前記キャッシュ内の前記宛先位置に書き込む前記データを特定するのに使用するために、前記読み出し要求と共に提供される、生成することと、
を含む、請求項23に記載の方法。
To generate the read request
Identifying modified segments of tracks within the group
Assigning a cache segment in the cache to the identified modified segment and the segment of old parity data,
To generate a list showing the segment of the modified data and the parity data and the destination position of the allocated cache segment in the cache, the list of which is the storage device. Producing, provided with the read request, for use in identifying the data to be read from said at least one of them and written to said destination location in said cache.
23. The method of claim 23.
JP2020545285A 2018-04-12 2019-04-01 Managing Cache Behavior Using Track Locks and Stride Group Locks Active JP7256815B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/951,168 US11151037B2 (en) 2018-04-12 2018-04-12 Using track locks and stride group locks to manage cache operations
US15/951,168 2018-04-12
PCT/IB2019/052653 WO2019197935A1 (en) 2018-04-12 2019-04-01 Using track locks and stride group locks to manage cache operations

Publications (2)

Publication Number Publication Date
JP2021517684A true JP2021517684A (en) 2021-07-26
JP7256815B2 JP7256815B2 (en) 2023-04-12

Family

ID=68160866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020545285A Active JP7256815B2 (en) 2018-04-12 2019-04-01 Managing Cache Behavior Using Track Locks and Stride Group Locks

Country Status (6)

Country Link
US (1) US11151037B2 (en)
JP (1) JP7256815B2 (en)
CN (1) CN111837102B (en)
DE (1) DE112019001863T5 (en)
GB (1) GB2585320B (en)
WO (1) WO2019197935A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US11231855B2 (en) 2020-04-14 2022-01-25 International Business Machines Corporation Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life using a machine learning module
US11226744B2 (en) 2020-04-14 2022-01-18 International Business Machines Corporation Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life
CN112346891A (en) * 2020-11-26 2021-02-09 北京沃东天骏信息技术有限公司 Message storage method, device, equipment and computer readable medium
CN113687788A (en) * 2021-08-30 2021-11-23 西安超越申泰信息科技有限公司 Data read-write optimization method and device for domestic platform, computer and storage medium
US11720500B2 (en) 2021-09-03 2023-08-08 International Business Machines Corporation Providing availability status on tracks for a host to access from a storage controller cache
US11726913B2 (en) 2021-09-03 2023-08-15 International Business Machines Corporation Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263228A (en) * 1995-03-03 1996-10-11 Internatl Business Mach Corp <Ibm> Method for storage of data into array and storage array system
JP2002323959A (en) * 2001-02-05 2002-11-08 Internatl Business Mach Corp <Ibm> System and method for non-volatile write cache based on log of magnetic disk controller
JP2009098996A (en) * 2007-10-18 2009-05-07 Hitachi Ltd Storage system
JP2015518203A (en) * 2012-03-23 2015-06-25 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. Storage system with multicast DMA and integrated address space
WO2015166540A1 (en) * 2014-04-28 2015-11-05 株式会社日立製作所 Storage apparatus, data-processing method therefor, and storage system
WO2017216887A1 (en) * 2016-06-15 2017-12-21 株式会社日立製作所 Information processing system
US20180018101A1 (en) * 2016-07-13 2018-01-18 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (hmb)

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4354232A (en) * 1977-12-16 1982-10-12 Honeywell Information Systems Inc. Cache memory command buffer circuit
US6520490B1 (en) 1999-09-23 2003-02-18 Soilsoup Inc. Liquid compost aerator and method of using same
US5922057A (en) 1997-01-10 1999-07-13 Lsi Logic Corporation Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore
US6381674B2 (en) * 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
JP3495266B2 (en) * 1998-11-13 2004-02-09 Necエレクトロニクス株式会社 Cache lock device and cache lock method
US6463503B1 (en) 1999-05-12 2002-10-08 International Business Machines Corporation Method and system for increasing concurrency during staging and destaging in a log structured array
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6385683B1 (en) 1999-08-13 2002-05-07 Lsi Logic Corporation Methods and apparatus for raid hardware sequencing to achieve a higher performance raid architecture
US6289039B1 (en) 2000-06-14 2001-09-11 Linex Technologies, Inc. Spread-spectrum communications utilizing variable throughput reduction
US6934318B2 (en) 2000-12-22 2005-08-23 Qualcomm, Incorporated Method and system for energy based frame rate determination
US6950966B2 (en) 2001-07-17 2005-09-27 Seachange International, Inc. Data transmission from raid services
US7389507B2 (en) 2003-02-10 2008-06-17 Tandberg Data Corporation Operating-system-independent modular programming method for robust just-in-time response to multiple asynchronous data streams
US7155655B2 (en) 2003-07-22 2006-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive hybrid ARQ algorithms
US7457980B2 (en) 2004-08-13 2008-11-25 Ken Qing Yang Data replication method over a limited bandwidth network by mirroring parities
US20070118695A1 (en) * 2005-11-18 2007-05-24 International Business Machines Corporation Decoupling storage controller cache read replacement from write retirement
US20090172244A1 (en) 2007-12-31 2009-07-02 Chaoyang Wang Hierarchical secondary raid stripe mapping
US9223642B2 (en) 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US9032151B2 (en) * 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
CN101566977B (en) 2009-06-08 2011-02-02 华为技术有限公司 Method, device and system of processor accessing shared data
US8392800B2 (en) 2009-10-20 2013-03-05 Hewlett-Packard Development Company, L.P. Multi-hop network having increased reliability
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8762609B1 (en) 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
KR101772951B1 (en) 2011-03-10 2017-09-13 삼성전자주식회사 Non-volatile memory device and read method thereof
US8365023B2 (en) 2011-04-29 2013-01-29 International Business Machines Corporation Runtime dynamic performance skew elimination
US8788742B2 (en) * 2011-05-23 2014-07-22 International Business Machines Corporation Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US9798615B2 (en) 2011-07-05 2017-10-24 Dell Products, Lp System and method for providing a RAID plus copy model for a storage network
WO2014021879A1 (en) 2012-07-31 2014-02-06 Hewlett-Packard Development Company, L.P. Systems and methods for controlling access to a shared data structure with reader-writer locks using multiple sub-locks
US9348752B1 (en) * 2012-12-19 2016-05-24 Amazon Technologies, Inc. Cached data replication for cache recovery
US9542344B2 (en) 2014-02-19 2017-01-10 Sandisk Technologies Llc Datapath management in a memory controller
US9304689B2 (en) 2014-03-27 2016-04-05 International Business Machines Corporation Modeling workload information for a primary storage and a secondary storage
US10209898B2 (en) 2014-04-03 2019-02-19 International Business Machines Corporation Estimation of performance utilization of a storage device
JP6211693B2 (en) 2014-05-28 2017-10-11 株式会社日立製作所 Computer system and computer system control method
US9384093B1 (en) 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US20160110283A1 (en) * 2014-10-20 2016-04-21 Microsoft Corporation On-demand expansion of synchronization primitives
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
JP6328335B2 (en) 2015-06-01 2018-05-23 株式会社日立製作所 Storage apparatus and control method thereof
US9772773B2 (en) 2015-07-30 2017-09-26 International Business Machines Corporation Parity stripe lock engine
US10235288B2 (en) * 2015-10-02 2019-03-19 Netapp, Inc. Cache flushing and interrupted write handling in storage systems
US9940250B2 (en) 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for writes to storage write cache
US9946642B2 (en) 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US20170139825A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
US20170139594A1 (en) 2015-11-17 2017-05-18 Samsung Electronics Co., Ltd. Key-value integrated translation layer
US10176064B2 (en) 2016-02-26 2019-01-08 Netapp Inc. Granular consistency group replication
WO2017196315A1 (en) 2016-05-11 2017-11-16 Hitachi, Ltd. Data storage system and process for reducing read and write amplifications
US9824767B1 (en) 2016-06-29 2017-11-21 Intel Corporation Methods and apparatus to reduce threshold voltage drift
KR20180006164A (en) 2016-07-08 2018-01-17 에스케이하이닉스 주식회사 Memory system and operating method of memory system
CN106790599B (en) 2016-12-29 2019-06-28 中国人民解放军国防科学技术大学 A kind of symbiosis virtual machine communication method based on multicore without lock buffer circle
US10416928B2 (en) 2017-06-15 2019-09-17 Hitachi, Ltd. Data storage system and process for data compression of distributed data in a scalable cluster system and computer program for such data storage system
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263228A (en) * 1995-03-03 1996-10-11 Internatl Business Mach Corp <Ibm> Method for storage of data into array and storage array system
JP2002323959A (en) * 2001-02-05 2002-11-08 Internatl Business Mach Corp <Ibm> System and method for non-volatile write cache based on log of magnetic disk controller
JP2009098996A (en) * 2007-10-18 2009-05-07 Hitachi Ltd Storage system
JP2015518203A (en) * 2012-03-23 2015-06-25 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. Storage system with multicast DMA and integrated address space
WO2015166540A1 (en) * 2014-04-28 2015-11-05 株式会社日立製作所 Storage apparatus, data-processing method therefor, and storage system
WO2017216887A1 (en) * 2016-06-15 2017-12-21 株式会社日立製作所 Information processing system
US20180018101A1 (en) * 2016-07-13 2018-01-18 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (hmb)

Also Published As

Publication number Publication date
JP7256815B2 (en) 2023-04-12
CN111837102A (en) 2020-10-27
US20190317898A1 (en) 2019-10-17
CN111837102B (en) 2024-04-19
WO2019197935A1 (en) 2019-10-17
US11151037B2 (en) 2021-10-19
DE112019001863T5 (en) 2020-12-31
GB2585320A (en) 2021-01-06
GB2585320B (en) 2021-06-09
GB202017405D0 (en) 2020-12-16

Similar Documents

Publication Publication Date Title
JP7256815B2 (en) Managing Cache Behavior Using Track Locks and Stride Group Locks
US11704209B2 (en) Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache
US11188431B2 (en) Transfer track format information for tracks at a first processor node to a second processor node
US11188430B2 (en) Determine whether to rebuild track metadata to determine whether a track format table has a track format code for the track format metadata
US10754780B2 (en) Maintaining track format metadata for target tracks in a target storage in a copy relationship with source tracks in a source storage
US10884849B2 (en) Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
US10831597B2 (en) Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US11226899B2 (en) Populating a second cache with tracks from a first cache when transferring management of the tracks from a first node to a second node
US10606776B2 (en) Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests
WO2022029563A1 (en) Obtaining cache resources for expected writes to tracks in write set after the cache resources were released for the tracks in the write set
US11726913B2 (en) Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel
US11550726B1 (en) Maintaining an active track data structure to determine active tracks in cache to process
US11720500B2 (en) Providing availability status on tracks for a host to access from a storage controller cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210830

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230331

R150 Certificate of patent or registration of utility model

Ref document number: 7256815

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150