# US 7,149,855 B2 · Network attached memory and implementation thereof

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,149,855 B2
- Document ID: US7149855B2
- Status: Granted
- Kind: B2
- Application number: 10/763,889
- Filed: 2004-01-23
- Published: 2004-08-05
- Granted: 2006-12-12
- Earliest claimed: 2003-01-22
- Assignees: InteliTrac, Inc.
- Inventors: Tianlong Chen; Jonathan Vu; Yingbin Wang
- Web page: https://patentgrep.com/patent/US7149855B2

## CPC

- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 11/1666: {where the redundant component is memory or memory area}
- G06F 11/20: using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F 12/1036: for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence)
- G06F 12/1072: Decentralised address translation, e.g. in distributed shared memory systems
- G06F 11/2056: {by mirroring}
- G06F 11/2069: {Management of state, configuration or failover}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A Distributed Memory Computing Environment (herein called “DMCE”) architecture and implementation is disclosed in which any computer equipped with a memory agent can borrow memory from other computer(s) equipped with a memory server on a distributed network. A memory backup and recovery as an optional subsystem of the Distributed Memory Computing system is also disclosed. A Network Attached Memory (herein called “NAM” or “NAM Box” or “NAM Server”) appliance is disclosed as a dedicated memory-sharing device attached to a network. A Memory Area Network (herein called “MAN”) is further disclosed, such a network is a network of memory device(s) or memory server(s) which provide memory sharing service to memory-demanding computer(s) or the like, when one memory device or memory server fails, its service will seamlessly transfer to other memory device(s) or memory server(s).

## Claims

### Claim 1

A network attached memory device comprising:
a CPU, and said network attached memory device having a device ID, and said device ID comprising an index to a device entry in a device ID lookup table;
a memory having at least one memory block, and said memory block having a block ID;
a connection to a network; and
a memory management function managing said memory block in said memory,
means for providing access to said memory block to a computing device attached elsewhere to said network such that a memory location in said memory block has a virtual address comprising said device ID, said block ID and an offset in said memory block.

### Claim 2 (depends on 1)

A network attached memory device according to claim 1 wherein said computing device has a said device ID lookup table, and said device ID is an index to a device entry in the said device ID lookup table, and said device entry includes at least network connection information to the said network attached memory device.

### Claim 3 (depends on 1)

A network attached memory device according to claim 1 wherein said memory management function includes a memory block ID lookup table, and said block ID of said memory block is an index to an entry in said memory block ID lookup table, and said entry having at least a starting address of said memory block.

### Claim 4 (depends on 3)

A network attached memory device according to claim 3 wherein said means for providing access to a memory location in said memory block by combining said starting address that is associated with said block ID which is part of said virtual address of said memory location and said offset of said virtual address of said memory location.

### Claim 5 (depends on 1)

A network attached memory device according to claim 1 wherein said computing device can send a request to said network attached memory device to reserve a second memory block in said memory in said network attached memory device.

### Claim 6 (depends on 5)

A network attached memory device according to claim 5 wherein said request includes at least a desired memory size of said second memory block.

### Claim 7 (depends on 6)

A network attached memory device according to claim 6 wherein said network attached memory device returns a failure message to said computing device if available memory in said memory is less than said desired memory size at the time of said request.

### Claim 8 (depends on 6)

A network attached memory device according to claim 6 wherein said network attached memory device returns at least a partial success message to computing device if available memory in said memory is less than said desired memory size but not empty at the time of said request, and the said available memory is reserved for said computing device.

### Claim 9 (depends on 8)

A network attached memory device according to claim 8 wherein said partial success message comprises the size of reserved said second memory block.

### Claim 10 (depends on 6)

A network attached memory device according to claim 6 wherein said network attached memory device returns at least a success message to said computing device if available memory in said memory is larger than said desired memory size at the time of said request, and a said second memory block of said desired size is reserved for said computing device.

### Claim 11 (depends on 10)

A network attached memory device according to claim 10 wherein said success message comprises the desired size.

### Claim 12 (depends on 1)

A network attached memory device according to claim 1 wherein said computing device sends an access request to a memory location in said network attached memory device by sending at least said virtual address of said memory location to the said network attached memory device.

### Claim 13 (depends on 1)

A network attached memory device according to claim 1 wherein said memory block has a backup block in said network attached memory device, and the content of said memory block can be copied from or to said backup block.

### Claim 14 (depends on 13)

A network attached memory device according to claim 13 wherein said backup block is a second memory block in said network attached memory device.

### Claim 15 (depends on 13)

A network attached memory device according to claim 13 wherein said network attached memory device further comprises a non-volatile storage, and said backup block is a storage block in said non-volatile storage.

### Claim 16 (depends on 13)

A network attached memory device according to claim 13 wherein said network attached memory device further comprises a backup lookup table, and said backup block has an associated entry in said block lookup table.

### Claim 17 (depends on 16)

A network attached memory device according to claim 16 wherein said associated entry comprises at least block ID of said memory block, a starting address of said backup block and a size of said backup block.

### Claim 18 (depends on 1)

A network attached memory device according to claim 1 wherein said memory block has a backup block in a second network attached device, and the content of said memory block can be copied from or to said backup block in said second network attached device.

### Claim 19 (depends on 18)

A network attached memory device according to claim 18 wherein said network attached memory device further comprises a backup lookup table, and said backup block has an associated entry in said backup lookup table.

### Claim 20 (depends on 19)

A network attached memory device according to claim 19 wherein said associated entry comprises at least block ID of said memory block, a starting address of said backup block and a size of said backup block.

### Claim 21

A memory service architecture comprising:
a first network attached memory device having first memory, having first device ID, said first device ID is a first index to a first entry in a device ID lookup table, and said first memory comprises at least a first memory block having a first block ID; and
a second network attached memory device having second memory, having second device ID, said second device ID is a second index to a second entry in said device ID lookup table, and said second memory comprises at least a second memory block having a second block ID; and
said first network attached memory device and said second network attached memory device are connected to a network;
wherein said first and second network attached memory devices provide to a separate computing device access said first memory and said second memory through said network connection, and a first memory location in said first memory block having a first virtual address comprising said first device ID, said first block ID and a first offset in said first memory block; and a second memory location in said second memory block having a second virtual address comprising said second device ID, said second block ID and a second offset in said second memory block.

### Claim 22 (depends on 21)

A memory service architecture according to claim 21 further comprising a service dispatch function which has a said device ID lookup table and dispatches memory access requests from said separate computing device to said first or said second network attached memory devices.

### Claim 23 (depends on 22)

A memory service architecture according to claim 22 wherein said service dispatch function resides on said first network attached memory device.

### Claim 24 (depends on 21)

A memory service architecture according to claim 21 wherein said first entry comprises at least network connection information to said first network attached memory device, and said second entry comprises at least network connection information to said second network attached memory device.

### Claim 25 (depends on 21)

A memory service architecture according to claim 21 wherein said separate computing device has a said device ID lookup table.

### Claim 26 (depends on 21)

A memory service architecture according to claim 21 wherein said separate computing device sends a first access request to said first network attached memory device by sending at least first virtual address of a first targeting memory location in said first network attached memory device.

### Claim 27 (depends on 21)

A memory service architecture according to claim 21 wherein said first memory block has a first backup block.

### Claim 28 (depends on 27)

A memory service architecture according to claim 27 wherein said first backup block is a third memory block in said first network attached memory device or in said second network attached memory device.

### Claim 29 (depends on 27)

A memory service architecture according to claim 27 wherein said first network attached memory device further comprises a first hard disk, and said first backup block is a storage block in said first hard disk.

### Claim 30 (depends on 27)

A memory service architecture according to claim 27 wherein said second network attached memory device further comprises a second hard disk, and said first backup block is a storage block is said second hard disk.
