Method and apparatus for performing atomic operations on local cache slots of a shared global memory

US11074113B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-11074113-B1
Application numberUS-202016879831-A
CountryUS
Kind codeB1
Filing dateMay 21, 2020
Priority dateMay 21, 2020
Publication dateJul 27, 2021
Grant dateJul 27, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A storage system includes at least two independent storage engines interconnected by a fabric, each storage engine having two compute nodes. A shared global memory is implemented using cache slots of each of the compute nodes. Memory access operations to the slots of shared global memory are managed by a fabric adapter to guarantee that the operations are atomic. To enable local cache operations to be managed independent of the fabric adapter, a cache metadata data structure includes a global flag bit for each cache slot, that is used to designate the cache slot as globally available or temporarily reserved for local IO processing. The cache metadata data structure also includes a mutex (Peterson lock) for each cache slot to enforce a mutual exclusion concurrency control policy on the cache slot between the two compute nodes of the storage engine when the cache slot is used for local IO processing.

First claim

Opening claim text (preview).

What is claimed is: 1. A storage system, comprising: a first storage engine having a first compute node, a second compute node, a first fabric adapter, and a second fabric adapter, the first compute node having a first cache and the second compute node having a second cache; a second storage engine having a third compute node, a fourth compute node, a third fabric adapter, and a fourth fabric adapter, the third compute node having a third cache and the fourth compute node having a fourth cache; the first cache, second cache, third cache, and fourth cache each containing respective cache slots, and at least a subset of the cache slots forming a shared global memory for use by the first, second, third and fourth compute nodes; and a cache metadata data structure having an entry for each of the cache slots forming the shared global memory, each entry including a global flag bit and a mutex, the global flag bit identifying a respective cache slot as either being managed by one of the fabric adapters or not managed by the one of the fabric adapters, and the mutex being configured to enforce a mutual exclusion concurrency control policy on the cache slot when the cache slot is not managed by the one of the fabric adapters. 2. The storage system of claim 1 , wherein the mutex is a Peterson lock. 3. The storage system of claim 1 , further comprising control logic configured to: receive an IO operation by the storage system; provide the IO operation to the first compute node of the first storage engine; select, by the first compute node, a cache slot from the shared global memory to be used to process the IO operation; if the selected cache slot is not located within the first storage engine, manage the IO operation by the first fabric adapter of the first compute node; and if the selected cache slot is located within the first storage engine: set the global flag bit for the selected cache slot in the cache metadata data structure; obtain control of the mutex for the selected cache slot in the cache metadata data structure; and process the IO operation against the selected cache slot without use of the first fabric adapter of the first compute node. 4. The storage system of claim 3 , wherein the IO operation is a write operation. 5. The storage system of claim 4 , wherein the control logic configured to process the IO operation comprises control logic configured to write data to the selected cache slot and destage the data from the selected cache slot to a location in permanent storage. 6. The storage system of claim 3 , wherein the IO operation is a read operation. 7. The storage system of claim 3 , further comprising control logic configured to release control of the mutex for the selected cache slot after processing the IO operation against the selected cache slot. 8. The storage system of claim 3 , further comprising control logic configured to clear the global flag bit for the selected cache slot after releasing control of the mutex for the selected cache slot. 9. A non-transitory tangible computer readable storage medium having stored thereon a computer program for performing atomic operations on cache slots of a shared global memory, the computer program including a set of instructions which, when executed by a computer, cause the computer to perform a method comprising the steps of: receiving an IO operation by a storage system, the storage system having at least two independent storage engines interconnected by a fabric, each storage engine having two compute nodes, each compute node having a cache with a plurality of cache slots and a fabric access module controlling access to the cache slots, wherein the fabric access modules are configured to enable at least a subset of the cache slots of each compute node to be accessible by each of the other compute nodes to form a shared global memory; providing the IO operation to a first of the compute nodes of a first of the storage engines; selecting, by the first of the compute nodes, a cache slot from the shared global memory to be used to process the IO operation; if the selected cache slot is not located within the first of the storage engines, managing the IO operation by the fabric access module of the first of the compute nodes; and if the selected cache slot is located within the first of the storage engines: setting a global flag bit for the selected cache slot in a cache metadata data structure; obtaining control of a mutex for the selected cache slot in the cache metadata data structure, the mutex being configured to enforce a mutual exclusion concurrency control policy on the cache slot between the two compute nodes of the first of the storage engines; and processing the IO operation against the selected cache slot without the fabric access module of the first of the compute nodes. 10. The non-transitory tangible computer readable storage medium of claim 9 , wherein the mutex is a Peterson lock. 11. The non-transitory tangible computer readable storage medium of claim 9 , wherein the IO operation is a write operation. 12. The non-transitory tangible computer readable storage medium of claim 11 , wherein the step of processing the IO operation comprises writing data to the selected cache slot and destaging the data from the selected cache slot to a location in permanent storage. 13. The non-transitory tangible computer readable storage medium of claim 9 , wherein the IO operation is a read operation. 14. The non-transitory tangible computer readable storage medium of claim 9 , further comprising releasing control of the mutex for the selected cache slot after the step of processing the IO operation against the selected cache slot. 15. The non-transitory tangible computer readable storage medium of claim 9 , further comprising clearing the global flag bit for the selected cache slot after the step of releasing control of the mutex for the selected cache slot. 16. A method of performing atomic operations on cache slots of a shared global memory, comprising: receiving an IO operation by a storage system, the storage system having at least two independent storage engines interconnected by a fabric, each storage engine having two compute nodes, each compute node having a cache with a plurality of cache slots and a fabric access module controlling access to the cache slots, wherein the fabric access modules are configured to enable at least a subset of the cache slots of each compute node to be accessible by each of the other compute nodes to form a shared global memory; providing the IO operation to a first of the compute nodes of a first of the storage engines; selecting, by the first of the compute nodes, a cache slot from the shared global memory to be used to process the IO operation; if the selected cache slot is not located within the first of the storage engines, managing the IO operation by the fabric access module of the first of the compute nodes; and if the selected cache slot is located within the first of the storage engines: setting a global flag bit for the selected cache slot in a cache metadata data structure; obtaining control of a mutex for the selected cache slot in the cache metadata data structure, the mutex being configured to enforce a mutual exclusion concurrency control policy on the cache slot between the two compute nodes of the first of the storage engines; and processing the IO operation against the selected cache slot without the fabric access module of the first of the compute nodes. 17. The method of claim 16 , wherein the mutex is a Peterson lock.

Assignees

Inventors

Classifications

  • In storage controller · CPC title

  • being distributed · CPC title

  • Storage comprising a plurality of storage devices · CPC title

  • Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title

  • by multiple requestors · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11074113B1 cover?
A storage system includes at least two independent storage engines interconnected by a fabric, each storage engine having two compute nodes. A shared global memory is implemented using cache slots of each of the compute nodes. Memory access operations to the slots of shared global memory are managed by a fabric adapter to guarantee that the operations are atomic. To enable local cache operation…
Who is the assignee on this patent?
Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F12/0857. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 27 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 5 related publications on this page (citations in our corpus or others sharing the same primary CPC).