Block addressing for parallel memory arrays
AssigneeMicron Technology, Inc.
InventorDavid Eggleston
Life of this patent
Estimating the term…
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.
Claims20
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.
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.
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.
Dependencies are inferred from the claim text.