BLOCK DEVICE INTERFACE USING NON-VOLATILE PINNED MEMORY
A method includes 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. 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.
1 . A method comprising:
receiving, by a block device driver, an instruction to read data from one or more storage devices;
writing the data from the one or more storage devices to a first memory location;
performing, by a vector processor, one or more invertible transforms on the data at the first memory location; and
copying the data from the first memory location to a second memory location,
wherein the first 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 directly over a data bus,
wherein the second memory location of the data corresponds to a location in main memory that cannot be accessed by the vector processor via the data bus, and
wherein the block device driver is configured to run on the vector processor or the one or more other processors.
2 . The method of claim 1 , wherein the pinned memory corresponds to non-volatile memory.
3 . 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.
4 . The method of claim 1 , further comprising providing the block device interface.
5 . The method of claim 1 , wherein performing, by the vector processor, the one or more invertible transforms on the data comprises one or more of decrypting, decoding, decompressing, un-deduplicating, or logging.
6 . A system comprising (i) a block device driver, (ii) a vector processor, (iii) one or more other processors, (iv) main memory, (v) pinned memory, (vi) one or more storage devices, and (vii) a data bus, wherein the pinned memory is accessible by the vector processor and the one or more other processors directly over the data bus, and wherein the block device driver is configured to run on the vector processor or the one or more other processors, the system configured to:
receive, by the block device driver, an instruction to read data from the one or more storage devices;
write the data from the one or more storage devices to a first memory location;
perform, by the vector processor, one or more invertible transforms on the data at the first memory location; and
copy the data from the first memory location to a second memory location,
wherein the first memory location of the data corresponds to a location in pinned memory, and
wherein the second memory location of the data corresponds to a location in the main memory that cannot be accessed by the vector processor via the data bus.
7 . The system of claim 6 , wherein the pinned memory corresponds to non-volatile memory.
8 . The system of claim 6 , 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.
9 . The system of claim 6 , wherein the vector processor performs the one or more invertible transforms on the data by one or more of decrypting, decoding, decompressing, un- deduplicating, or logging.