# US 9,436,609 B2 · Block addressing for parallel memory arrays

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

- Number: US 9,436,609 B2
- Document ID: US9436609B2
- Status: Granted
- Kind: B2
- Application number: 14/616,468
- Filed: 2015-02-06
- Published: 2015-08-06
- Granted: 2016-09-06
- Earliest claimed: 2007-07-03
- Assignees: Micron Technology, Inc.
- Applicants: Micron Technology, Inc.
- Inventors: David Eggleston
- Web page: https://patentgrep.com/patent/US9436609B2

## CPC

- G06F 12/0853: Cache with multiport tag or data arrays
- G06F 3/0611: {in relation to response time}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/1072: Decentralised address translation, e.g. in distributed shared memory systems
- G11C 8/12: Group selection circuits, e.g. for memory block selection, chip selection, array selection
- G11C 29/76: {using address translation or modifications}
- G06F 12/0292: {using tables or multilevel address translation means (G06F12/023 takes precedence; address translation in virtual memory systems G06F12/10)}
- G06F 2212/1024: Latency reduction
- G06F 2212/2022: Flash memory
- G06F 2212/283: Plural cache memories
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F 2212/7208: Multiple device management, e.g. distributing data over multiple flash devices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

Apparatus and methods provide associative mapping of the blocks of two or more memory arrays such that data, such as pages of data, from the good blocks of the two or more memory arrays can be read in an alternating manner for speed or can be read in parallel for providing data to relatively wide data channels. This obviates the need for processor intervention to access data and can increase the throughput of data by providing, where configured, the ability to alternate reading of data from two or more arrays. For example, while one array is loading data to a cache, the memory device can be providing data that has already been loaded to the cache.

## Claims

### Claim 1

An apparatus comprising a memory device, the apparatus comprising:
a plurality of memory arrays including at least a first memory array and a second memory array;
an address translator configured to receive at least a block portion of logical addresses originating from a processor, wherein the block portion corresponds to an address range for selecting blocks of memory, wherein the address translator is configured to modify the received block portion of the logical addresses to generate first modified addresses for the first memory array and second modified addresses for the second memory array for a contiguous logical addresses space;
wherein blocks of memory from the first memory array and the second memory array are paired for simultaneous access even when the blocks have disparate physical addresses, wherein pairing blocks from the first memory array and the second memory array is performed by:
identifying good blocks and bad blocks of the first memory array and good blocks and bad blocks of the second memory array;
mapping a good block at a starting physical address of the first memory array with a good block at a starting address of the second memory array; and
consecutively stepping through physical addresses of the first memory array and the second memory array, mapping a next good block of the first memory array with a next good block of the second memory array, skipping only bad blocks of the first memory array and bad blocks of the second memory array, until all good blocks of the first memory array or the second memory array are paired;
wherein accesses to pages from paired blocks are interleaved; and
a plurality of cache registers including at least a first cache register and a second cache register, wherein the first cache register is disposed in a first signal path between a bus and the first memory array, wherein the second cache register is disposed in a second signal path between the bus and the second memory array, wherein the first cache register is configured to provide first data originally retrieved from the first memory array to a data bus while the second cache register is retrieving second data from the second memory array.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the first and second cache registers are configured to altematingly load data and provide data from the first cache register and the second cache register.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the first and second cache registers are configured to hold data for programming to the first and second memory arrays, respectively, wherein one of the first or the second cache registers is configured to provide data to the first or the second memory array while the other of the first or the second cache registers receives new data from the bus.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the plurality of memory arrays comprise NAND flash memory arrays.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the address translator is programmable.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein at least a portion of the address translator is embodied as a programmable row decoder for the first memory array or the second memory array.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the apparatus is embodied in a controller outside of a memory device.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the apparatus is embodied within a memory device.

### Claim 9

A method of accessing data from a memory device, the method comprising:
retrieving first data from a first memory array of the memory device and loading the first data to a first cache register of the memory device;
receiving at least a block portion of logical addresses originating from a processor, wherein the block portion corresponds to an address range for selecting blocks of memory;
modifying the received block portion of the logical addresses to generate first modified addresses for the first memory array and second modified addresses for a second memory array for a contiguous logical addresses space;
pairing blocks of memory from the first memory array and the second memory array for simultaneous access even when the blocks have disparate physical addresses, wherein pairing blocks of the first memory array and the second memory array comprises:
identifying good blocks and bad blocks of the first memory array and good blocks and bad blocks of the second memory array;
mapping a good block at a starting physical address of the first memory array with a good block at a starting address of the second memory array; and
consecutively stepping through physical addresses of the first memory array and the second memory array, mapping a next good block of the first memory array with a next good block of the second memory array, skipping only bad blocks of the first memory array and bad blocks of the second memory array, until all good blocks of the first memory array or the second memory array are paired;
wherein accesses to pages from paired blocks are interleaved; and
providing the first data from the first cache register to a data bus while retrieving second data from the second memory array of the memory device and loading the second data to a second cache register of the memory device.

### Claim 10 (depends on 9)

The method of claim 9, further comprising alternatingly loading data and providing data from the first cache register and the second cache register.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
holding data for programming to the first and second memory arrays, respectively; and
providing data to the first or the second memory array from one of the first or the second cache registers while receiving new data from the bus to the other of the first or the second cache registers.

### Claim 12 (depends on 9)

The method of claim 9, wherein the first memory array and the second memory array each comprise NAND flash memory arrays.

### Claim 13 (depends on 9)

The method of claim 9, wherein the modifying the received block portion of the logical addresses is performed by an address translator, and wherein the address translator is programmable.

### Claim 14 (depends on 9)

The method of claim 9, wherein at least a portion of the address translator is embodied as a programmable row decoder for the first memory array or the second memory array.

### Claim 15 (depends on 9)

The method of claim 9, wherein the method is embodied in a controller outside of a memory device.

### Claim 16 (depends on 9)

The method of claim 9, wherein the method is embodied within a memory device.

### Claim 17

An apparatus comprising:
a host processor; and
a memory device comprising:
a plurality of memory arrays including at least a first memory array and a second memory array;
an address translator configured to receive at least a block portion of logical addresses originating from a processor, wherein the block portion corresponds to an address range for selecting blocks of memory, wherein the address translator is configured to modify the received block portion of the logical addresses to generate first modified addresses for the first memory array and second modified addresses for the second memory array for a contiguous logical addresses space;
wherein blocks of memory from the first memory array and the second memory array are paired for simultaneous access even when the blocks have disparate physical addresses, wherein pairing blocks from the first memory array and the second memory array is performed by:
identifying good blocks and bad blocks of the first memory array and good blocks and bad blocks of the second memory array;
mapping a good block at a starting physical address of the first memory array with a good block at a starting address of the second memory array; and
consecutively stepping through physical addresses of the first memory array and the second memory array, mapping a next good block of the first memory array with a next good block of the second memory array, skipping only bad blocks of the first memory array and bad blocks of the second memory array, until all good blocks of the first memory array or the second memory array are paired;
wherein accesses to pages from paired blocks are interleaved; and
a plurality of cache registers including at least a first cache register and a second cache register, wherein the first cache register is disposed in a first signal path between a bus and the first memory array, wherein the second cache register is disposed in a second signal path between the bus and the second memory array, wherein the first cache register is configured to be able to provide first data originally retrieved from the first memory array to a data bus while the second cache register is retrieving second data from the second memory array.

### Claim 18 (depends on 17)

The apparatus of claim 17, wherein the first and second cache registers are configured to alternatingly load data and provide data from the first cache register and the second cache register.

### Claim 19 (depends on 17)

The apparatus of claim 17, wherein the first and second cache registers are configured to hold data for programming to the first and second memory arrays, respectively, wherein one of the first or the second cache registers is configured to provide data to the first or the second memory array while the other of the first or the second cache registers receives new data from the bus.

### Claim 20 (depends on 17)

The apparatus of claim 17, wherein the plurality of memory arrays comprise NAND flash memory arrays.
