IP Library Granted Patent US 11,263,144
Granted Patent B2
US 11,263,144 · App. 16/556,575 · Granted Mar 1, 2022

Block device interface using non-volatile pinned memory

Inventors: Stuart John Inglis (Cambridge, NZ); Timothy Kelly Dawson (Cambridge, NZ); Xavier Aldren Simmons (Cambridge, NZ); Sheridan John Lambert (Cambridge, NZ); Rafael John Patrick Shuker (Cambridge, NZ); Dominic Joseph Michael Houston Azaris (Cambridge, NZ); Alexander Kingsley St. John (Cambridge, NZ)
Assignee: Nyriad Limited
G06F12/10G06F3/065G06F3/0607G06F9/30036G06F9/30123G06F9/3877G06F11/1004G06F11/1088G06F12/0246G06F12/0815G06F12/12G06F12/1408G06F3/0679G06F2212/1052G06F2212/657
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,263,144
App. No.
16/556,575
Granted
Mar 1, 2022
Kind
B2
Abstract

A method comprising: receiving, at a block device interface, an instruction to write data, the instruction comprising a memory location of the data; copying the data to pinned memory; performing, by a vector processor, one or more invertible transforms on the data; and writing the data from the pinned memory to one or more storage devices asynchronously; wherein the pinned memory of the data corresponds to a location in pinned memory, the pinned memory being accessible by the vector processor and one or more other processors.

Claims (54)

1. A method comprising:

receiving, at a block device interface, an instruction to write data, the instruction comprising a memory location of the data;

copying the data to pinned memory located in main memory;

performing, by a vector processor, one or more invertible transforms on the data;

confirming that the data has been written to one or more storage devices in response to copying the data to the pinned memory located in the main memory before writing the data to one or more storage devices; and

writing the data from the pinned memory located in the main memory to the one or more storage devices asynchronously;

wherein the pinned memory of the data corresponds to a location in pinned memory, the pinned memory being accessible by the vector processor and one or more other processors;

wherein the pinned memory corresponds to non-volatile memory;

wherein the pinned memory is configured as a write-back cache such that writing the data to the one or more storage devices is deferred until space is needed in the write-back cache or until a level of clean capacity retained by the write-back cache falls below a threshold; and

wherein writing the data from the pinned memory to one or more storage devices asynchronously comprises: determining that a part of the write-back cache associated with the data is dirty; writing the data to one or more storage devices; and marking the part of the write-back cache as clean.

2. The method of claim 1 , wherein the confirming occurs before performing one or more invertible transforms on the data.

3. The method of claim 1 , wherein the write-back cache comprises a plurality of partitions, each partition being associated with a source.

4. The method of claim 1 , wherein the non-volatile memory comprises: a plurality of non-volatile memory units; and wherein the data in the pinned memory is in each of the plurality of non-volatile memory units.

5. The method of claim 4 , wherein the plurality of non-volatile memory units comprises:

one or more pairs of NV-DIMMs.

6. The method of claim 4 , further comprising:

determining that a first of the plurality of non-volatile memory units has been replaced with a replacement; and

mirroring the data from another of the plurality of non-volatile memory units to the replacement.

7. The method of claim 1 , wherein the block device interface comprises a block device interface for a meta-device, the meta-device corresponding to the one or more storage devices.

8. The method of claim 1 :

wherein receiving an instruction to write data comprises:

receiving an instruction to modify data stored on the one or more storage devices; and

reading the data stored on the one or more storage devices to the non-volatile write-back cache; and

wherein writing the data to a non-volatile write-back cache comprises:

modifying the data in the non-volatile write-back cache based on the instruction.

9. The method of claim 1 , further comprising:

providing the block device interface.

10. The method of claim 1 , wherein performing, by a vector processor, one or more invertible transforms on the data comprises one or more of:

encryption;

encoding;

compressing;

deduplicating; or

logging.

11. The method of claim 1 , further comprising:

receiving, at a block device interface, an instruction to read data from one or more storage devices;

writing the data from one or more storage devices to a memory location; and

performing, by a vector processor, one or more invertible transforms on the data at the memory location;

wherein the memory location of the data corresponds to a location in pinned memory, the pinned memory being accessible by the vector processor and one or more other processors; and

wherein the pinned memory corresponds to non-volatile memory.

12. The method of claim 11 , wherein the block device interface comprises a block device interface for a meta-device, the meta-device corresponding to the one or more storage devices.

13. The method of claim 11 , further comprising:

providing the block device interface.

14. The method of claim 11 , wherein performing, by a vector processor, one or more invertible transforms on the data comprises one or more of:

decryption;

decoding;

decompressing;

un-deduplicating; or

logging.

15. A system comprising:

one or more vector processors;

one or more CPUs; and

a memory comprising pinned memory;

wherein the memory comprises instructions which, when executed by the one or more vector processors and/or the one or more CPUs, configure the one or more vector processors and/or the one or more CPUs to perform the method of claim 1 .

16. One or more non-transitory computer readable media comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method of claim 1 .

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDRESS OF ASSIGNEE PREVIOUSLY RECORDED ON REEL 66856 FRAME 603. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 25, 2024
From: NYRIAD; NYRIAD, INC.
To: DAEDALUS CLOUD LLC
Reel/Frame 067239/0096 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2024
From: NYRIAD; NYRIAD INC.
To: DAEDALUS CLOUD LLC
Reel/Frame 066856/0603 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2022
From: NYRIAD
To: NYRIAD, INC.
Reel/Frame 059759/0556 →
CHANGE OF NAME Recorded Apr 14, 2022
From: NYRIAD LIMITED
To: NYRIAD
Reel/Frame 059718/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2022
From: INGLIS, STUART JOHN; DAWSON, TIMOTHY KELLY; SIMMONS, XAVIER ALDREN; SHUKER, RAFAEL JOHN PATRICK; AZARIS, DOMINIC JOSEPH MICHAEL HOUSTON; LAMBERT, SHERIDAN JOHN
To: NYRIAD LIMITED
Reel/Frame 059336/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2021
From: ST. JOHN, ALEXANDER KINGSLEY
To: NYRIAD LIMITED
Reel/Frame 058382/0193 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2021
From: ST. JOHN, ALEXANDER KINGSLEY
To: NYRIAD LIMITED
Reel/Frame 058381/0738 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2021
From: SIMMONS, XAVIER ALDREN; ST. JOHN, ALEXANDER KINGSLEY
To: NYRIAD LIMITED
Reel/Frame 058381/0624 →
Continuity (4)
Provisional Application 62746981 · Oct 17, 2018
Provisional Application 62725703 · Aug 31, 2018
Provisional Application 62725691 · Aug 31, 2018
Related Publication 20200073824A1 · Mar 5, 2020
Cited By (2)
US 12,229,055 US 12,235,772