IP Library Granted Patent US 10,282,122
Granted Patent B2
US 10,282,122 · App. 15/335,178 · Granted May 7, 2019

Methods and systems of a memory controller for hierarchical immutable content-addressable memory processor

Inventor: David R. Cheriton (Palo Alto, CA)
Assignee: INTEL CORPORATION
G06F3/064G06F3/0604G06F3/0631G06F3/0673G06F12/023G06F12/0223G06F12/0815G06F12/10G06F12/109G11C15/00G11C15/04G06F12/0261G06F2212/1044G06F2212/621
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 10,282,122
App. No.
15/335,178
Granted
May 7, 2019
Kind
B2
Abstract

Improved memory management is provided according to a Hierarchical Immutable Content Addressable Memory Processor (HICAMP) architecture. In HICAMP, physical memory is organized as two or more physical memory blocks, each physical memory block having a fixed storage capacity. An indication of which of the physical memory blocks is active at any point in time is provided. A memory controller provides a non-duplicating write capability, where data to be written to the physical memory is compared to contents of all active physical memory blocks at the time of writing, to ensure that no two active memory blocks have the same data after completion of the non-duplicating write.

Claims (38)

1. A memory controller comprising:

a fetcher to:

receive a data element to be written to a physical memory having a plurality of physical memory blocks, wherein each physical memory block is associated with an indication of whether it is active, and is further structured to include a reference count field indicating a number of references to the physical memory block, and a data field; and

determine whether the data element is already contained in an active physical memory block of the physical memory; and

a block data directory to allocate a physical memory block of the physical memory using the reference count field of the physical memory block, responsive to a determination by the fetcher that the data element is not already contained in any active physical memory block of the physical memory.

2. The memory controller of claim 1 , wherein the fetcher is to receive the data element with a block fetch by content (BFBC) instruction.

3. The memory controller of claim 2 , wherein the fetcher is to return a block address corresponding to the active physical memory block that already contains the data element responsive to reception of the BFBC instruction and responsive to a determination by the fetcher that the data element is already contained in the active physical memory block.

4. The memory controller of claim 3 , wherein the block address is a virtual block identifier (ID).

5. The memory controller of claim 3 , wherein the block address is a physical block identifier (ID).

6. The memory controller of claim 2 , wherein the fetcher is to return a block address corresponding to the block allocated by the block data directory responsive to reception of the BFBC instruction and responsive to a determination by the fetcher that the data element is not already contained in any of the active physical memory blocks.

7. The memory controller of claim 1 , further comprising a virtual to physical block ID mapping (VPBIM) to map virtual block identifiers (IDs) to physical block IDs for one or more contents of the physical memory.

8. The memory controller of claim 1 , wherein the physical memory is a binary content-addressable memory (CAM) and each physical memory block has a fixed storage capacity.

9. A method of computer memory management at a memory controller comprising:

receiving a data element to be written to a physical memory having a plurality of physical memory blocks, wherein each physical memory block is associated with an indication of whether it is active, and is further structured to include a reference count field indicating a number of references to the physical memory block, and a data field;

determining whether the data element is contained in any active physical memory block as an existing data element; and

using the existing data element in response to a determination that one of the active physical memory blocks already contains the data element as the existing data element.

10. The method of claim 9 , further comprising:

returning a block address corresponding to the active physical memory block that contains the existing data element in response to receiving the data element.

11. The method of claim 10 , wherein the block address is a virtual block identifier (ID).

12. The method of claim 10 , wherein the block address is a physical block identifier (ID).

13. The method of claim 9 , wherein the data element is a first data element, the existing data element is a first existing data element, and the method further comprises:

receiving a second data element to be written to the physical memory;

determining whether the second data element is contained in any active physical memory block as a second existing data element; and

allocating a physical memory block using the reference count field of the physical memory block, in response to determining that the second data element is not contained in any of the active physical memory blocks as a second existing data element.

14. The method of claim 13 , further comprising:

returning a physical block identifier (ID) of the allocated physical memory block in response to receiving the second data element.

15. A computer system comprising:

a memory comprising a plurality of physical memory blocks, wherein each physical memory block is associated with an indication of whether it is active, and is further structured to include a reference count field indicating a number of references to the physical memory block, and a data field; and

a memory controller coupled with the memory to:

receive a data element to be written to the memory;

determine whether the data element is already contained in any active physical memory block of the memory as an existing data element;

use the existing data element in response to a determination that the data element is already contained in one of the active physical memory blocks as the existing data element; and

allocate a physical memory block of the plurality of physical memory blocks using the reference count field of the physical memory block, in response to a determination that the data element is not already contained in any active physical memory block of the plurality of physical memory blocks.

16. The computer system of claim 15 , wherein the memory is a content-addressable physical memory.

17. The computer system of claim 15 , wherein the memory is conventional dynamic random access memory (DRAM).

18. The computer system of claim 15 , further comprising a processor coupled with the memory controller, wherein the memory controller is to receive the data element from the processor.

19. The computer system of claim 18 , wherein the data element is included in a block fetch by content (BFBC) instruction.

20. The computer system of claim 18 , wherein the memory is a content-addressable physical memory and the processor includes a content-addressable cache.

Continuity (8)
Continuation 14569007 · Dec 12, 2014
Continuation 14062301 · Oct 24, 2013
Continuation 13533125 · Jun 26, 2012
Continuation 13271137 · Oct 11, 2011
Continuation 12653889 · Dec 17, 2009
Continuation 12011311 · Jan 25, 2008
Provisional Application 60897773 · Jan 26, 2007
Related Publication 20170109049A1 · Apr 20, 2017