IP Library › Granted Patent US 11,132,328
Granted Patent B2
US 11,132,328 · App. 14/539,740 · Granted Sep 28, 2021

High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory

Inventors: Keith Lowery (Garland, TX); Vlad Fruchter (Los Altos, CA)
Assignee: RAMBUS, INC.
G06F15/17331G06F3/0619G06F12/0653G06F12/0692G06F13/16H04L67/1097H04L67/2842
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,132,328
App. No.
14/539,740
Granted
Sep 28, 2021
Kind
B2
Abstract

A method of processing memory instructions including receiving a memory related command from a client system in communication with a memory appliance via a communication protocol, wherein the memory appliance comprises a processor, a memory unit controller and a plurality of memory devices coupled to said memory unit controller. The memory related command is translated by the processor into a plurality of commands that are formatted to perform prescribed data manipulation operations on data of the plurality of memory devices stored in data structures. The plurality of primitive commands is executed on data stored in the memory devices to produce a result, wherein the executing is performed by the memory unit controller. A direct memory transfer of the result is established over the communication protocol to a network.

Claims (54)

1. A method comprising:

receiving, by a memory appliance, a memory related command of a client system, said memory related command being an application layer command, wherein said memory appliance comprises a host system, a memory controller, and a plurality of memory devices coupled to said memory controller;

translating, by said memory appliance, said application layer command into a plurality of primitive commands that are lower layer commands than the application layer command and formatted to be executed by said memory controller to perform data manipulation operations on data of said plurality of memory devices stored in data structures;

executing, by said memory controller, said plurality of primitive commands on said data to produce a result;

establishing a direct memory transfer between said memory controller and a network interface of said memory appliance; and

transferring, by said memory controller without transmitting said result to a processor of the host system, said result to said client system, wherein said memory related command is received over said network interface and said result is transferred over said network interface to said client system, wherein said memory related command of said client system is received over said network interface of said memory appliance and comprises an OSI layer 7 command.

2. The method as described in claim 1 , wherein said establishing a direct memory transfer comprises:

establishing a direct memory access (DMA) memory transfer.

3. The method as described in claim 1 , wherein said memory controller comprises a programmable logic device.

4. The method as described in claim 3 , wherein said programmable logic device comprises a field programmable gate array (FPGA) device.

5. The method as described in claim 4 , wherein said plurality of primitive commands are accelerated via execution on said FPGA device.

6. The method as described in claim 1 , wherein said receiving said memory related command comprises receiving said memory related command using a communication protocol that is substantially compliant with a peripheral component interconnect express (PCIE) communication bus protocol.

7. The method as described in claim 1 , further comprising:

storing said plurality of primitive commands as a command chain, wherein said command chain comprises a program operable for re-execution in response to another memory related command of said client system, said another memory related command providing said program with new parameters for said re-execution thereof.

8. The method of claim 1 , wherein said data structures comprise a key-value store memory.

9. The method of claim 1 , wherein said memory related command of said client system comprises an application specific operation generated by an application of said client system.

10. The method of claim 1 , wherein said application layer command comprising at least one of a data sort command or a data compression command.

11. The method of claim 1 , wherein said memory related command of said client system comprises a memcached operation.

12. The method of claim 1 , wherein said application layer command comprising at least one of a get command, a set command, or a delete command.

13. The method of claim 1 , wherein said network interface of said memory appliance comprises at least one of a network interface card (NIC) or a network processing unit (NPU) with access to a network and said network is external to said memory appliance.

14. The method of claim 1 , wherein said host system comprises system memory and wherein transferring said result comprises transferring said result to said client system without copying said result to said system memory of said host system.

15. The method of claim 14 , wherein said client system comprises at least one of a laptop or a handheld device and wherein said host system comprises a server coupled to said plurality of memory devices.

16. The method of claim 1 , wherein said memory related command comprises a single memory related command of the client system and wherein translating said memory related command comprises translating said single memory related command into said plurality of primitive commands that are memory related commands.

17. A method comprising:

receiving, by a memory appliance, a memory related command of a client system, said memory related command being an application layer command, wherein said memory appliance comprises a host system, a memory controller, and a plurality of memory devices coupled to said memory controller;

translating, by said memory appliance, said memory related command into a plurality of commands that are formatted to be executed by said memory controller to perform data manipulation operations on data of said plurality of memory devices stored in data structures;

executing, by said memory controller, said plurality of commands on said data to produce a result;

establishing a direct memory transfer between said memory controller and a network interface of said memory appliance; and

transferring, by said memory controller without transmitting said result to a processor of the host system, said result to said client system, wherein said memory related command is received over said network interface and comprises an OSI layer 7 command, and said result is transferred over said network interface to said client system, wherein said transferring said result further comprises:

storing in a buffer at least one pointer to data in said plurality of memory devices that satisfy said memory related command;

accessing said pointer in said buffer by said network interface;

accessing said data using said pointer; and

returning said data to said network interface for delivery over a network.

18. A method comprising:

receiving, by a memory appliance over a network interface, a memory related command of a client system said memory related command being an application layer command, wherein said memory appliance comprises a host system, a memory controller, and a plurality of memory devices;

translating, by said memory appliance, said application layer command into a plurality of commands more primitive than said memory related command;

storing said plurality of commands in a first queue;

reading, by said memory controller, said plurality of commands from said first queue;

executing, by said memory controller, said plurality of commands on data stored in said plurality of memory devices to produce a result;

establishing a direct memory transfer, without using a processor of the host system, between said memory controller and said network interface to transfer said result to said client system which sent said memory related command, wherein said memory related command is received over said network interface and comprises an OSI layer 7 command, and said result is transferred over said network interface to said client system; and

notifying said host system of said transfer.

19. The method of claim 18 , wherein establishing a direct memory transfer comprises establishing a direct memory access (DMA) memory transfer.

20. The method as described in claim 19 , wherein said establishing a direct memory transfer is initiated by the processor of said host system.

21. A memory appliance comprising:

a network interface operable to receive a memory related command of a client system, said memory related command being an application layer command;

a host system comprising a processor operable to interface with said network interface to receive and translate said memory related command into a plurality of primitive commands that are lower layer command than the application layer command and are formatted to be executed by a memory controller;

a plurality of memory devices comprising data in one or more data structures; and

the memory controller coupled to said plurality of memory devices, wherein said plurality of primitive commands comprise data manipulation operations of data stored in at least one data structure;

wherein the processor is operable to establish a direct memory transfer between said memory controller and the network interface;

wherein said memory controller is operable to execute said plurality of primitive commands on said data to produce a result and to transfer, without transmitting said result to the processor of the host system, said result to said client system; and

wherein said memory related command is received over said network interface and comprises an OSI layer 7 command, and said result is transferred over said network interface to said client system.

22. The memory appliance of claim 21 , further comprising a plurality of memory units, wherein a memory unit of said plurality of memory units comprises said memory controller and said plurality of memory devices.

23. The memory appliance of claim 21 , wherein said memory controller comprises a programmable logic device.

24. The memory appliance of claim 21 , wherein said memory controller comprises an application specific integrated circuit (ASIC).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2015
From: LOWERY, KEITH; FRUCHTER, VLAD
To: RAMBUS INC.
Reel/Frame 034814/0879 →
Continuity (10)
Provisional Application 61919318 · Dec 20, 2013
Provisional Application 61952784 · Mar 13, 2014
Provisional Application 61952800 · Mar 13, 2014
Provisional Application 61952798 · Mar 13, 2014
Provisional Application 61952778 · Mar 13, 2014
Provisional Application 61952796 · Mar 13, 2014
Provisional Application 61990009 · May 7, 2014
Provisional Application 61990014 · May 7, 2014
Provisional Application 61990033 · May 7, 2014
Related Publication 20150178243A1 · Jun 25, 2015