Method and apparatus to use DRAM as a cache for slow byte-addressible memory for efficient cloud applications
US-12174739-B2 · Dec 24, 2024 · US
US2017192889A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2017192889-A1 |
| Application number | US-201715397865-A |
| Country | US |
| Kind code | A1 |
| Filing date | Jan 4, 2017 |
| Priority date | Jan 4, 2016 |
| Publication date | Jul 6, 2017 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A storage system includes a plurality of storage devices, and a server including a memory and an interface. The server is configured to store, in the memory, each of data pieces that are received through the interface from a client as a series of data to be written, in association with a single write command or a series of write commands received through the interface from the client, for each data piece, determine a target storage device and a logical address thereof at which the data piece is to be written, based on an identifier of the data piece received in association with the data piece through the interface from the client, and carry out, in parallel, writing of the data pieces stored in the memory at the determined logical addresses.
Opening claim text (preview).
What is claimed is: 1 . A storage system comprising: a plurality of storage devices; and a server including a memory and an interface, the server being configured to store, in the memory, each of data pieces that are received through the interface from a client as a series of data to be written, in association with a single write command or a series of write commands received through the interface from the client, for each data piece, determine a target storage device and a logical address thereof at which the data piece is to be written, based on an identifier of the data piece received in association with the data piece through the interface from the client, and carry out, in parallel, writing of the data pieces stored in the memory at the determined logical addresses. 2 . The storage system according to claim 1 , wherein the server includes one or more processors on which transmission processors are executed in a time-divided manner, and each of the transmission processors transmits to a target storage device, a request to write one of the data pieces at a corresponding logical address. 3 . The storage system according to claim 1 , wherein the server further includes a plurality of processing circuits operable in parallel, each of the processing circuits communicating with a target storage device to write one of the data pieces at a corresponding logical address. 4 . The storage system according to claim 1 , wherein the writing of the data pieces in parallel is carried out over a plurality of steps and the server proceeds to a next step only upon completion of a current step for all of the data pieces. 5 . The storage system according to claim 4 , wherein the server is further configured to store, in the memory, a progress state of the writing for each of the data pieces, and proceeds to the next step with reference to the progress states. 6 . The storage system according to claim 5 , wherein the server is further configured to transmit, in each step and for each data piece, a request to cause the corresponding target storage device to be in a predetermined operation state, and update the progress state for the data piece upon receiving an acknowledgement from the corresponding target storage device. 7 . The storage system according to claim 6 , wherein for each data piece, the server transmits a lock request to cause a corresponding target storage device to deny writing of another data piece at the corresponding logical address, a commit request to write the data piece at the corresponding logical address, and an unlock request to cause the corresponding target storage device to allow writing of another data piece at the corresponding logical address. 8 . The storage system according to claim 1 , wherein for each of the data pieces, the server encodes the identifier of the data piece, and determines the target storage device based on a first portion of the encoded identifier and the logical address thereof based on a second portion of the encoded identifier. 9 . The storage system according to claim 8 , wherein for each of the data pieces, the server calculates a hash value of the identifier of the data piece as the encoded identifier. 10 . The storage system according to claim 9 , wherein when the hash values of two or more data pieces are the same, the target storage device writes the two or more data pieces at different physical locations thereof. 11 . The storage system according to claim 10 , wherein at least one of the two or more data pieces is written in a cache memory of the target storage device. 12 . The storage system according to claim 10 , wherein when the first storage device detects that the hash values of two or more data pieces are the same, the first storage device increments a conflicts counter stored in a memory thereof. 13 . A method of operating a storage system including a plurality of storage devices and a server, comprising: storing, in a memory of the server, each of data pieces that are received from a client as a series of data to be written, in association with a single write command or a series of write commands received from the client, for each data piece, determining a target storage device and a logical address thereof at which the data piece is to be written, based on an identifier of the data piece received in association with the data piece from the client; and carrying out, in parallel, writing of the data pieces stored in the memory at the determined logical addresses. 14 . The method according to claim 13 , further comprising: executing on one or more processors in the server, a plurality of transmission processors in a time-divided manner; and transmitting, by each of the transmission processors, to a target storage device, a request to write one of the data pieces at a corresponding logical address. 15 . The method according to claim 13 , wherein the writing of the data pieces in parallel is carried out over a plurality of steps and a next step is carried out only upon completion of a current step for all of the data pieces. 16 . The method according to claim 15 , further comprising: storing, in the memory of the server, a progress state of the writing for each of the data pieces, wherein the writing proceeds to the next step with reference to the progress states. 17 . The method according to claim 16 , further comprising: in each step and for each data piece, transmitting a request to cause the corresponding target storage device to be in a predetermined operation state, and updating the progress state for the data piece upon receiving an acknowledgement from the corresponding target storage device. 18 . The method according to claim 17 , further comprising: for each data piece, transmitting a lock request to cause a corresponding target storage device to deny writing of another data piece at the corresponding logical address, a commit request to write the data piece at the corresponding logical address, and an unlock request to cause the corresponding target storage device to allow writing of another data piece at the corresponding logical address. 19 . The method according to claim 13 , further comprising: for each of the data pieces, encoding the identifier of the data piece, wherein the target storage device is determined based on a first portion of the encoded identifier, and the logical address thereof is determined based on a second portion of the encoded identifier. 20 . The method according to claim 19 , wherein the encoding includes calculating a hash value of the identifier of the data piece.
with multilevel cache hierarchies · CPC title
in relation to data integrity, e.g. data losses, bit errors · CPC title
Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Plural cache memories · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.