IP Library Granted Patent US 8,938,580
Granted Patent B2
US 8,938,580 · App. 14/062,301 · Granted Jan 20, 2015

Hierarchical immutable content-addressable memory processor

Inventor: David R. Cheriton (Palo Alto, CA)
Assignee: Hicamp Systems, Inc.
G11C15/04G06F12/0223G06F12/10G06F12/109G11C15/00G06F12/023G60F12/0261G06F2212/1044
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 8,938,580
App. No.
14/062,301
Granted
Jan 20, 2015
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 (35)

1. A computer system comprising:

a physical memory including a plurality of physical memory blocks, wherein once any memory block is initialized with specified data, its contents are considered immutable; and

a memory controller configured to:

receive a data to be written to the physical memory; and

avoid writing the data to a memory block with contents considered immutable.

2. The system of claim 1 , wherein the memory controller provides a multi-block data convention specifying a representation for data items requiring two or more of the physical memory blocks to store wherein the memory controller avoids writing multi-block data considered immutable.

3. The system of claim 1 , wherein each of the physical memory blocks has the same storage capacity.

4. The system of claim 1 , further comprising a processor in communication with the memory controller wherein the processor is capable of writing to the physical memory only by avoiding writing data to a memory block considered immutable.

5. The system of claim 1 , wherein the physical memory is volatile.

6. The system of claim 1 , wherein the memory controller is further configured to:

compare the data to be written with contents of the memory block using a block fetch by content (BFBC) instruction.

7. A method of computer system memory management comprising:

in a physical memory including a plurality of physical memory blocks, initializing any memory block with specified data so that its contents are considered immutable;

receiving a data to be written to the physical memory; and

avoiding writing the data to a memory block with contents considered immutable.

8. The method of claim 7 , further comprising:

specifying a representation for data items requiring two or more of the physical memory blocks to store according to a multi-block data convention wherein the memory controller avoids writing multi-block data considered immutable.

9. The method of claim 7 , wherein once any memory block is allocated, its contents are considered immutable.

10. The method of claim 7 , further comprising maintaining a flag for each of the plurality of physical memory blocks, indicating whether or not contents of a memory block are considered immutable.

11. The method of claim 7 , further comprising:

maintaining a reference count for each of the plurality of physical memory blocks, indicating the number of active references to a memory block; and

identifying memory blocks having a corresponding reference count greater than zero as active memory blocks.

12. The method of claim 11 , further comprising mapping virtual block IDs to physical block IDs for an active memory block.

13. The method of claim 12 , wherein the memory controller writes data using a block fetch by content (BFBC) instruction having block data as an input and a block address as an output,

wherein the block address is an address of an active memory block if the block data is a duplicate of data in a member of the set prior to executing the BFBC instruction, and

wherein the block address is an address of a newly-allocated physical memory block if the block data is not a duplicate of data in a member of the set prior to executing the BFBC instruction.

14. The method of claim 13 , wherein the block address is either a physical block ID or a corresponding virtual block ID.

15. The method of claim 11 , wherein the active physical memory blocks are organized as a plurality of directed acyclic graphs (DAGs).

16. The method of claim 15 , wherein the plurality of DAGs is constrained to include no multi-DAG cyclic reference loop.

17. The method of claim 7 , wherein a sequential read and compare capability for some or all contents of the physical memory provides addressability.

18. The method of claim 7 wherein a parallel read and compare capability for some or all contents of the physical memory provides addressability.

19. The method of claim 7 , further comprising:

partitioning the physical memory into N banks, where N is an integer>1; and

hashing block data to provide a hash value for the block data according to a hashing function having N possible outputs.

20. The method of claim 7 , wherein the set of memory blocks that are compared includes all of the memory blocks that are indicated as being in an active state at the time of writing.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: CHERITON, DAVID R.
To: INTEL CORPORATION
Reel/Frame 037668/0654 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2014
From: HICAMP SYSTEMS, INC.
To: CHERITON, DAVID R
Reel/Frame 034247/0551 →
Continuity (6)
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 20140149656A1 · May 29, 2014