KR20100051804A - 병렬 메모리 어레이들의 블록 어드레싱 - Google Patents
병렬 메모리 어레이들의 블록 어드레싱 Download PDFInfo
- Publication number
- KR20100051804A KR20100051804A KR1020107002399A KR20107002399A KR20100051804A KR 20100051804 A KR20100051804 A KR 20100051804A KR 1020107002399 A KR1020107002399 A KR 1020107002399A KR 20107002399 A KR20107002399 A KR 20107002399A KR 20100051804 A KR20100051804 A KR 20100051804A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- blocks
- addresses
- address
- array
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
장치들 및 방법들은 둘 이상의 메모리 어레이(502, 504)의 양호한 블록들로부터의 데이터 페이지들과 같은 데이터가 속도를 위해 교대 방식으로 기입 또는 판독될 수 있거나, 비교적 넓은 데이터 채널들에 데이터를 제공하기 위해 병렬로 기입 또는 판독될 수 있도록 하기 위해, 둘 이상의 메모리 어레이의 블록들의 연관 맵핑(도 5)을 제공한다. 이것은 데이터에 액세스하기 위한 프로세서 중재를 없애며, 구성될 경우에, 둘 이상의 어레이(502, 504)로부터 데이터를 교대 판독하는 능력을 제공함으로써 데이터의 처리량을 증가시킬 수 있다. 예를 들어, 하나의 어레이가 캐시(206/208)에 데이터를 로딩하고 있는 동안, 메모리 장치는 캐시(206/208)에 이미 로딩되어 있는 데이터를 제공할 수 있다.
Description
본 발명의 실시예들은 일반적으로 집적 회로들에 관한 것이다. 구체적으로, 본 발명의 실시예들은 메모리 회로들에 관한 것이다.
반도체 메모리 장치들은 디지털 전자 장치들 내에 편재한다. 이러한 장치들의 예는 컴퓨터, 카메라, 디지털 매체 재생기, 게임기, 개인용 휴대 단말기, 이동 전화, 네비게이션 장치, 비휘발성 저장 장치 제품 등을 포함한다. 비휘발성 저장 장치 제품들의 예는 컴팩트 플래시(CF) 카드, 멀티미디어 카드(MMC), 보안 디지털(SD) 카드, 플래시 PC 카드(예컨대, ATA 플래시 카드), 스마트 매체 카드, 반도체 디스크(SSD), 하이브리드 하드 드라이브 및 메모리 스틱을 포함한다. 반도체 메모리는 데이터의 저장 및 검색을 제공한다.
다양한 타입의 반도체 메모리가 존재한다. 메모리들의 예는 다양한 타입의 랜덤 액세스 메모리(RAM)(SRAM, DRAM 및 SDRAM을 포함함), 플래시 메모리, 전기적으로 소거 가능한 프로그래밍가능 판독 전용 메모리(EEPROM), 자기 저항 랜덤 액세스 메모리(MRAM), 프로그래밍가능한 도체 메모리, 강유전체 메모리 등을 포함한다. 또한, 이러한 메모리들 내에는 다양한 서브타입들이 존재한다.
일반적으로, 메모리 장치의 메모리 셀들은 하나 이상의 어레이 내에 배열되며, 적절한 워드 라인들(행들) 및 비트 라인들(열들)의 활성화에 의해 액세스된다. 대다수 타입의 메모리 장치들에서, 각각의 셀은 단일 데이터 비트를 저장한다. 그러나, 플래시 메모리 셀과 같은 일부 셀들은 하나보다 많은 레벨에 데이터를(셀당 둘 이상의 비트) 저장할 수 있다.
메모리 장치들은 페이지들로, 또한 블록들로 구성될 수도 있다. 예컨대, NAND 플래시는 일반적으로 블록들 및 페이지들로 구성된다. 이러한 구조는 NOR 플래시, 전기적으로 소거 가능한 프로그래밍가능 판독 전용 메모리(EEPROM) 및 프로그래밍가능한 판독 전용 메모리(PROM)에서 발견될 수도 있다. 블록들 및 페이지들의 크기들은 매우 넓은 범위에서 변할 수 있다. 2 기가바이트(GB) 메모리 어레이의 일례는 2048개의 블록을 갖고, 각각의 블록은 64개의 페이지를 가지며, 각각의 페이지는 2048개의 데이터 바이트 및 64개의 스페어 바이트를 포함하는(스페어 블록, 페이지, 행, 열 등은 포함하지 않음) 2112개의 바이트를 갖는다. 개념적으로, 이것은 도 1에 도시되어 있다.
불량 또는 사용 불가능한 메모리 셀들은 테스트 동안에 식별될 수 있다. 예를 들어, 메모리 셀은 특정 논리 상태에 교착되거나, 타이밍 사양을 충족시키지 못하는 등의 이유로 고장날 수 있다. 제조 동안, 이러한 고장들은 맵핑될 수 있으며, 결함 행들 및/또는 열들을 어레이 내의 여분 또는 중복(redundant) 행들 및/또는 열들로 대체함으로써 고쳐질 수 있다. 이러한 타입의 고장은 통상적으로 어레이 내의 개별 행들 및 어드레스들에 대한 내부 어드레스들의 영구적 맵핑에 의해 처리되며, 최종 사용자에게 투명하다.
셀들은 필드(field)에서도 고장날 수 있다. 예를 들어, 다양한 비휘발성 메모리 타입들은 다수의 기입 사이클 동안 낡을 수 있다. 일부 메모리 장치들은 또한 에러 정정 코드(ECC)를 포함할 수 있으며, 정정 가능한 한계들 내의 불량 셀들을 묵인한다. 소정 형태의 에러 정정에 의해 정정 가능하지 않은 경우, 불량 또는 사용 불가능한 메모리 셀들은 사용되지 않아야 한다. 불량 또는 사용 불가 메모리 셀들은 더 높은 등급의 메모리 유닛들의 이용성에 영향을 미칠 수 있다. 예를 들어, 불량 셀들은 행을 사용 불가능하게 하고, 행의 페이지(들)를 사용 불가능하게 할 수 있다. 메모리의 블록들은 또한 불량 페이지들을 대체하기 위한 스페어 페이지들을 구비할 수 있다. 블록에 대해 불충분한 수의 페이지들이 이용 가능한 경우, 전체 블록이 불량 블록으로 표시될 수 있으며, 통상적으로 그 블록의 페이지들의 어느 것도 액세스될 수 없다.
불량 블록들의 처리에 있어서 문제가 발생한다. 불량 블록들은 불량 블록 테이블 내에 표시될 수 있다. 예를 들어, 제조 테스트 동안에 블록이 불량인 것으로 결정되는 경우, 불량 블록을 스페어 블록으로 교체하기 위하여 수리 절차가 이용될 수 있다.
도 2를 참조하면, 일례에서, 둘 이상의 어레이가 데이터 버스로부터의 데이터를 저장하거나, 데이터 버스에 데이터를 제공한다. 한 페이지의 데이터를 캐시 레지스터(206, 208)에 또는 그로부터 기입하거나 판독하는 것보다, 어레이(202, 204)에 또는 그로부터 기입하거나 판독하는 것이 더 오래 걸릴 수 있다. 속도를 위해, 메모리들은, 하나의 메모리(202)로부터의 페이지가 먼저 기입되거나 판독된 후에, 제2 어레이(204)로부터의 페이지가 기입되거나 판독되고, 이어서 제1 어레이(202)로부터의 새로운 페이지가 기입되거나 판독되는 것 등이 이루어지도록 배열될 수 있다. 이것은 "핑퐁"으로 알려져 있으며, 교대하는 어레이로부터의 데이터가 이용 가능한 캐시 레지스터(206, 208) 내에 사전 로딩되는 동안에 다른 캐시로부터의 데이터가 기입되거나 판독될 수 있으므로 빠르다. 다른 레지스터들(210, 212)은 데이터의 기입 또는 페칭을 지원할 수 있다. 어레이들(202, 204)이 동일 칩 상에 존재하는 경우, 캐시 레지스터들(206, 208)이 공유될 수 있는데, 즉 통상적으로 하나의 캐시 레지스터만이 존재하게 된다.
그러나, 어드레스들이 순차적이 아닌 경우, 사전 로딩이 효율적으로 이루어지지 못할 수 있다. 예컨대, 데이터를 제공하기 위하여 2개의 8비트 칩이 사용되는 경우, 2개의 칩에 제공되는 어드레스 라인들은 통상적으로 공유되며, 어드레스 라인의 최하위 비트(LSB)는 중복이다. 다수의 어레이를 갖는 통상의 칩에서는, 어드레스 라인들이 공유될 뿐만 아니라, 통상적으로 행 디코더도 다수의 어레이 사이에 공유된다. 어레이의 블록이 불량일 때, 수리 솔루션은 상이한 블록을 양호한 블록과 동일한 논리 어드레스로 맵핑할 수 있다. 그러나, 교체 블록에 대한 행 라인들의 상이한 세트의 활성화는 기입 또는 판독 시간을 상당히 늘릴 수 있는데, 이는 예를 들어 2개의 상이한 물리 메모리 위치가 기입 또는 판독을 위해 메모리 장치 내로부터 액세스되기 때문이다. 이것은 도 3에 도시되어 있다.
도 3은 2개의 상이한 메모리 어레이(302, 304)로부터의 블록들을 짝짓기하기 위한 통상의 기술의 일례를 나타낸다. 둘보다 많은 메모리 어레이가 "쌍을 이루거나" 매칭될 수 있는데, 즉 저장 및 검색을 위해 서로 연관될 수 있다. 다른 예에서는, 4개의 어레이 또는 8개의 어레이가 "쌍을 이룬다". 도시된 예에서, 메모리 어레이 A(302)로부터의 처음 4개의 블록(1A-4A)(306, 308, 310, 312)은 양호하다. 메모리 어레이 B(304)로부터의 제1 블록 1B(314), 제2 블록 2B(316) 및 제4 블록 4B(320)는 양호하다. 그러나, 메모리 어레이 B(304)의 제3 블록 3B(318)는 불량이다. 제1 블록 1A(306) 및 제1 블록 1B(314)는 쌍을 이룬다. 제2 블록 2A(308) 및 제2 블록 2B(316)는 쌍을 이룬다. 제4 블록 4A(312) 및 제4 블록 4B(320)는 쌍을 이룬다.
그러나, 어레이 A(302)로부터의 제3 블록 3A(310)는 어레이 B(304)로부터의 제3 블록 3B(318)와 쌍을 이루지 못하는데, 이는 제3 블록 3B(318)이 불량이고 사용할 수 없기 때문이다. 오히려, 제3 블록 3A(310)는 어레이 B로부터의 다른 블록 XB(322)와 쌍을 이룬다. 통상적으로, 어레이의 (물리 어드레스에 의해) 끝에 있는 양호한 블록들은 스페어 블록들이며, 사용되는 다른 블록 XB(322)는 스페어 블록들 중에서 선택된 하나의 블록이다. 예컨대, 블록 XB(322)는 적어도 2048개의 양호한 블록을 갖도록 지정되는 어레이의 2050 번째 블록일 수 있다. 제3 블록 3A(310) 및 다른 블록 XB(322)는 상이한 물리 어드레스에 있으며, 데이터의 페이지들이 각각에 저장되거나 그로부터 검색될 때, 제3 블록 3A(310)로부터의 페이지들 및 블록 XB(322)로부터의 페이지들은 "핑퐁" 없이 2개의 개별 액세스를 이용하여 내부적으로 액세스된다. 이것은 성능을 감소시킨다. 예를 들어, 도 3에 도시된 기술은 통상적으로 소정 형태의 내부 제어기 중재를 이용하여, 교체 블록(들)을 선택하고, 개별 내부 메모리 판독들로부터의 데이터를 결합하는데, 이는 액세스를 더 느리게 한다.
데이터에 대한 다수의 어레이의 사용이 일반적이다. 다수의 데이터 채널을 갖는 시스템들에서, 데이터 스트림을 위하여 다수의 어레이로부터의 데이터가 존재할 수 있다. 블록들이 쌍을 이룰 수 있는 또 하나의 예는 32비트 폭의 데이터 버스에서와 같이 데이터 버스가 비교적 넓고, 4개의 메모리 어레이의 각각이 32비트의 데이터 중 8비트를 처리하는 경우이다.
도 4는 2개의 상이한 메모리 어레이(402, 404)로부터의 블록들을 짝짓기하기 위한 통상의 기술의 일례를 나타낸다. 이러한 기술에서, 불량 블록의 전체 물리 어드레스는 스킵되며, 둘 이상의 양호한 블록의 다음 물리 어드레스가 사용된다. 이러한 기술은 여전히 통상적으로 제어기 중재를 이용하여, 물리 어드레스들에서의 점프를 관리한다. 도시된 예에서, 메모리 어레이 A(402)로부터의 처음 4개의 블록(1A-4A)(406, 408, 410, 412)은 양호하다. 메모리 어레이 B(404)로부터의 제1 블록 1B(414), 제2 블록 2B(416) 및 제4 블록 4B(420)는 양호하다. 그러나, 메모리 어레이 B(404)의 제3 블록 3B(418)는 불량이다. 제1 블록 1A(406) 및 제1 블록 1B(414)는 쌍을 이룬다. 제2 블록 2A(408) 및 제2 블록 2B(416)는 쌍을 이룬다. 제4 블록 4A(412) 및 제4 블록 4B(420)는 쌍을 이룬다.
그러나, 어레이 A(402)로부터의 제3 블록 3A(410)는 어레이 B(404)로부터의 제3 블록 3B(418)와 쌍을 이루지 못하는데, 이는 제3 블록 3B(418)이 불량이고 사용할 수 없기 때문이다. 블록 3A(310)가 계속 사용되는 도 3의 예와 달리, 도 4의 예에서는, 제3 블록 3A(410)은 양호하지만, 쌍을 이루지 않은 채로 남겨지며, 사용되지 않는다. 이것은, 이러한 방식으로 배열된 쌍을 이루는 블록들이 동일 물리 어드레스를 사용하고, 공유되는 행 디코더의 동일 행들의 활성화에 의해 액세스될 수 있음에 따라 관련 블록들의 다양한 페이지들을 판독할 때 속도를 위해 어레이들(402, 404)이 "핑퐁"하는 능력을 유지한다. 그러나, 제3 블록 3A(410)은 그의 실용성에도 불구하고 사용되지 않으며, 실제로 불량 블록으로서 처리된다. 이것은 어레이에 대해 이용가능한 블록들의 수를 감소시키며, 양호한 블록들의 유효 수가 지정된 최소치 아래로 떨어지는 경우, 이것은 제조 수율을 감소시키고, 제조 비용을 증가시킬 수 있다.
본 명세서의 도면들 및 관련 설명은 실시예들을 예시하기 위해 제공되며, 제한적인 것을 의도하지 않는다.
도 1은 어레이들 내에 다수의 페이지들 및 블록들을 갖는 메모리 아키텍처를 나타낸다.
도 2는 고속 액세스 또는 병렬 액세스를 위한 다수의 메모리로부터의 판독을 나타낸다.
도 3은 비교적 느린 데이터 액세스로 이어지는, 상이한 메모리 어레이들로부터의 블록들을 짝짓기하는 종래의 기술을 나타낸다.
도 4는 메모리 공간의 비효율적인 이용으로 이어지는, 상이한 메모리 어레이들로부터의 블록들을 짝짓기하는 종래의 기술을 나타낸다.
도 5는 2개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다.
도 6은 4개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다.
도 7은 제어기, 어드레스 변환기 및 메모리 장치의 일례를 나타낸다.
도 8은 어드레스 변환기들을 구비한 메모리 칩의 개략도이다.
도 9는 어드레스 변환의 구현을 위한 탐색 테이블(LUT)의 일례를 나타낸다.
도 10은 집합적 블록 맵핑을 일반적으로 나타내는 흐름도이다.
도 11은 어레이 내의 블록 맵핑을 일반적으로 나타내는 흐름도이다.
도 12A 및 12B는 메모리 맵들의 예들을 나타낸다.
도 1은 어레이들 내에 다수의 페이지들 및 블록들을 갖는 메모리 아키텍처를 나타낸다.
도 2는 고속 액세스 또는 병렬 액세스를 위한 다수의 메모리로부터의 판독을 나타낸다.
도 3은 비교적 느린 데이터 액세스로 이어지는, 상이한 메모리 어레이들로부터의 블록들을 짝짓기하는 종래의 기술을 나타낸다.
도 4는 메모리 공간의 비효율적인 이용으로 이어지는, 상이한 메모리 어레이들로부터의 블록들을 짝짓기하는 종래의 기술을 나타낸다.
도 5는 2개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다.
도 6은 4개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다.
도 7은 제어기, 어드레스 변환기 및 메모리 장치의 일례를 나타낸다.
도 8은 어드레스 변환기들을 구비한 메모리 칩의 개략도이다.
도 9는 어드레스 변환의 구현을 위한 탐색 테이블(LUT)의 일례를 나타낸다.
도 10은 집합적 블록 맵핑을 일반적으로 나타내는 흐름도이다.
도 11은 어레이 내의 블록 맵핑을 일반적으로 나타내는 흐름도이다.
도 12A 및 12B는 메모리 맵들의 예들을 나타낸다.
본 명세서에 특정 실시예들이 설명되지만, 여기에 설명되는 모든 이익들 및 특징들을 제공하지는 않는 실시예들을 포함하는 본 발명의 다른 실시예들은 이 분야의 통상의 기술자들에게 명백할 것이다.
본 발명의 일 실시예는, 둘 이상의 메모리 어레이의 양호한 블록들로부터의 데이터 페이지들과 같은 데이터가 속도를 위해 교대 방식으로 기입 또는 판독될 수 있거나, 비교적 넓은 데이터 채널들에 데이터를 제공하기 위해 병렬로 기입 또는 판독될 수 있도록 하기 위해, 둘 이상의 메모리 어레이의 블록들의 연관 맵핑을 제공한다. 예를 들어, 이것은 상이한 행들 사이에 퍼져 있는 관련 데이터에 액세스하기 위한 제어기 중재를 없애며, 구성될 경우에, 둘 이상의 어레이로부터 데이터를 교대 판독하는 능력을 제공함으로써 데이터의 처리량을 증가시킬 수 있다. 예를 들어, 하나의 어레이로부터의 데이터가 캐시에 로딩되고 있는 동안, 캐시에 이미 로딩된 다른 어레이로부터의 데이터가 판독될 수 있다. 일례에서, 맵핑된 블록들은 플래시 장치의 최소의 소거 가능 엔티티에 대응한다. 다른 예에서, 맵핑된 블록들은 비교적 많은 수의 메모리 셀들에 대응한다. 또한, 어레이의 비교적 적은 수의 양호한 블록들이 사용되지 않게 된다.
도 5는 2개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다. 집합적 맵핑의 원리들 및 이익들은 매우 넓은 수의 범위의 메모리들에 적용될 수 있다. 예를 들어, 도 6은 4개의 어레이의 블록들을 집합적으로 맵핑하는 일례를 나타낸다. 양호 또는 불량으로서의 블록의 상태는 제조 동안에 또는 나중에 필드에서 결정될 수 있다. 블록이 양호한지 불량인지를 결정하기 위해 다양한 기술이 이용될 수 있다. 이 분야의 통상의 기술자에 의해 이용 가능 기술이 쉽게 결정될 것이다. 더욱이, 블록이 양호한 경우에도, 예를 들어 이용 가능한 메모리 셀들이 에러 정정 코드(ECC)들에 의해 정정될 수 없는 하나 이상의 에러 내에 있거나, 이용 가능 메모리 셀들이 마모 한계들 근처에 있는 등의 경우에는, 블록을 불량으로서 표시하는 것이 바람직할 수 있다.
바람직하게는, 어레이들의 양호한 블록들은 논리적으로 함께 어드레싱되며, 따라서 제어기, 프로세서, CPU 또는 기타 장치와 같은 액세싱 전자 처리 유닛은 어드레스 점프를 행하거나 어레이들로부터 개별적으로 데이터를 판독할 필요 없이 어레이들로부터 병렬로 빠르게 데이터를 판독할 수 있다. 일 실시예에서, 양호한 블록들은 메모리의 연속 어드레스가능한 양호한 블록들을 형성하도록 논리적으로 재배열된다. 일 실시예에서는, 양호한 블록들이 비교적 낮은 어드레스들로 맵핑되고, 존재할 경우에, 불량 블록들 또는 미사용 스페어 블록들이 비교적 높은 어드레스들로 맵핑되도록 맵핑이 수행된다. 미사용 블록들(불량 블록 또는 스페어 블록들)의 맵핑은 중요하지 않다. 도 12A 및 12B와 관련하여 아래에 예들이 설명된다. 일례에서, 메모리 장치의 행 디코더들은 어레이들 사이에 공유되지 않는다. 이것은 어레이들로부터의 메모리의 블록들의 독립적인 행 어드레싱을 허가한다. 어레이 내의 불량 블록들을 스킵하고 양호한 블록들의 연속 맵핑을 유지하기 위한 행 디코더 또는 어드레스 변환기의 그러한 프로그래밍이 제조 테스트에서 쉽게 제공될 수 있다. 또한, 필드에서 고장난 블록들의 수리도 제공될 수 있다. 예를 들어, 퓨즈들의 뱅크가 수리 솔루션을 저장하는 데 사용될 수 있다. 퓨즈들은 불량이 된 오리지널 블록에 대응하는 논리 어드레스 범위를 식별하도록 프로그래밍될 수 있다. 논리 어드레스 범위를 만나는 경우, (사전 중복인) 양호한 블록이 불량 블록을 대체한다. 퓨즈들은 필드 기반 수리를 위한 수리 솔루션의 리프로그래밍을 허가하는 플래시 기반 퓨즈들일 수 있다.
도 5를 참조하면, 어레이 A(502) 및 어레이 B(504)의 블록들이 집합적으로 연관된다. 어레이 A(502) 및 어레이 B(504)는 동일 칩 상에 또는 다른 칩들 상에 위치할 수 있다. 어레이 A(502) 및 어레이 B(504)의 블록들은 논리적인 어드레스들(506, 508)을 가지며, 내부 어드레스들(510, 512)을 갖는다. 논리 어드레스들(506, 508)은 제어기, 프로세서, CPU 등과 같이 메모리에 액세스하는 장치들에 의해 사용된다. 내부 어드레스들(510, 512)은 어레이들 내의 오리지널 물리 어드레스들과 관련된다.
설명의 목적으로, 도 5는 내부 어드레스들(510, 512)을 블록들에 대한 기준들로서 이용하여 일반적으로 설명될 것이다. 이 예에서, 어레이 A에 대해, 내부 어드레스를 갖는 블록들 1A(514), 2A(516), 3A(518), 4A(520), 5A(522), 6A(524), 7A(526) 및 8A(528)가 도시되어 있다. 블록들 1A(514), 2A(516), 3A(518), 4A(520), 5A(522), 7A(526) 및 8A(528)는 양호하며, 블록 6A(524)는 불량이다. 어레이 B에 대해, 내부 어드레스를 갖는 블록들 1B(530), 2B(532), 3B(534), 4B(536), 5B(538), 6B(540), 7B(542) 및 8B(544)가 도시되어 있다. 블록들 1B(530), 2B(532), 4B(536), 5B(538), 7B(542) 및 8B(544)는 양호하며, 블록들 3B(534) 및 6B(540)는 불량이다.
블록 1A(514)는 블록 1B(530)와 쌍을 이루며, 이들 양 블록은 블록의 제1 페이지에 대하여 통상적으로 0인, 블록들에 대한 시작 논리 어드레스에 맵핑된다. 블록 2A(516)는 블록 2B(532)와 쌍을 이루며, 이들 양 블록은 다음 블록 어드레스, 즉 제1 페이지에 대한 제2 논리 블록 어드레스에 맵핑된다. 이것은 통상적으로 0으로부터의 일정한 오프셋이며, 통상적으로 블록에 대한 페이지들의 수에 따라 변한다.
불량인 블록 3B(534)는 의도적으로 짝짓기 되지 않으며, 어레이에 대한 어드레스들의 범위의 끝에 가까운 어드레스와 같은 미사용 어드레스에 맵핑된다. 일 실시예에서, 맵핑 프로세스는 최종 이용 가능한 블록 어드레스들(가장 높은 어드레스들)로 시작되는 불량 블록들을 먼저 리맵핑하고, 불량 블록들을 만남에 따라 점차로 불량 블록들을 더 낮은 어드레스들에 맵핑한다. 이것은 양호한 블록들이 어레이의 블록들의 시작에 있는 제1 연속 어드레스 공간(시작 블록 어드레스)에 맵핑되고, 불량 블록들이 어드레스 범위의 끝에 있는 제2 연속 어드레스 공간에 맵핑되는 것을 허가한다. 양호한 블록들의 비교적 큰 연속 어드레스 공간으로의 맵핑은 사용자에게 비교적 큰 사용 가능 메모리 영역을 제공한다. 그러나, 불량 블록들로부터 양호한 블록들에 대한 논리 어드레스들을 분리하기 위한 다른 기술들이 이 분야의 통상의 기술자에 의해 쉽게 결정될 것이다.
블록 3A(518)는 블록 4B(536)와 쌍을 이루며, 이들 양 블록은 제3 논리 블록 어드레스에 맵핑된다. 리맵핑 및 각각의 어레이에 대한 개별 행 디코더들의 사용과 관련하여, 블록 3A(518) 및 블록 4B(536) 양자는, 어레이들(502, 504) 내에서 내부적으로, 블록들이 어레이들(502, 504) 내의 행 카운트에 의해 결정되는 바와 같은 상이한 내부 어드레스에 있는 경우에도, 동일 논리 어드레스(508)에 맵핑되고 동시에 액세스될 수 있다. 블록 4A(520)는 블록 5B(538)와 쌍을 이루며, 제4 논리 블록 어드레스로 맵핑된다. 블록 5A(522)는 블록 7B(542)와 쌍을 이루며, 제5 논리 블록 어드레스에 맵핑된다. 블록 6A(524)는 불량으로서, 쌍을 이루지 않으며, 어레이 A(502)에 대한 어드레스들의 끝을 행해 맵핑된다. 블록 6B(540)는 불량이고, 쌍을 이루지 않으며, 어레이 B(504)에 대한 어드레스들의 끝을 행해 맵핑된다. 블록 7A(526)는 블록 8B(544)와 쌍을 이루며, 제6 논리 블록 어드레스에 맵핑된다.
전술한 맵핑과 관련하여, 양호한 블록들의 각각의 쌍은 매칭되는 논리 어드레스(506, 508)를 가지며, 양 어레이들(502, 504)로부터의 블록들은 예를 들어 연속 어드레스들에 대한 데이터 기입들 또는 판독들에 의한 빠른 데이터 액세스를 위해 동시에 액세스될 수 있다. 일 실시예에서, 어레이 A(502)로부터의 데이터의 페이지들은 어레이 B(504)로부터의 데이터의 페이지들과 인터리빙되어, 제어기가 데이터의 페이지들을 기입하거나 판독할 때 어레이들(502, 504) 사이에서 앞뒤로 "핑퐁"하는 것을 가능하게 한다.
도 6은 4개의 어레이(602, 604, 606, 608)의 블록들을 집합적으로 맵핑하는 일례를 나타낸다. 각각의 어레이(602, 604, 606, 608)의 처음 4개의 양호한 블록들에 대한 집합적 맵핑이 도시되어 있다. 어레이들은 통상적으로 많은 블록, 예컨대 수천 개의 블록을 갖는다는 것을 이해할 것이다. 명료화를 위해, 블록들은 아래의 설명에서, 제어기, 프로세서 등과 같은 호스트들에 의해 사용되는 논리 어드레스들로 맵핑되는 그들의 내부 어드레스들(예를 들어, 물리 행 어드레스)을 통해 참조될 것이다. 매칭된 블록들이 상이한 물리 어드레스들(행들에 의해 상이함)에 있는 경우에도, 매칭된 블록들은 개별 기입들 또는 판독들 없이 동시에 기입 또는 판독될 수 있으며, 이는 메모리 성능을 향상시킨다.
어레이 A(602)의 도시된 부분은 4개의 블록 1A(610), 2A(612), 3A(614), 4A(616)를 가지며, 이들 모두는 양호하다. 어레이 B(604)는 양호한 블록들 1B(620), 2B(622), 3B(624) 및 5B(628)를 갖는다. 블록 4B(626)는 양호하지 않다. 어레이 C(606)는 양호한 블록들 1C(630), 3C(634), 4C(636) 및 5C(638)를 갖는다. 블록 2C(632)는 양호하지 않다. 어레이 D는 양호한 블록들 1D(640), 2D(642), 3D(644) 및 5D(648)를 갖는다. 블록 4D는 양호하지 않다.
도시된 예에서, 블록들은 다음과 같이 매칭된다. 블록 1A(610), 블록 1B(620), 블록 1C(630) 및 블록 1D(640)가 매칭된다. 블록 2A(612), 블록 2B(622), 블록 3C(634) 및 블록 2D(642)가 매칭된다. 블록 3A(614), 블록 3B(624), 블록 3C(636) 및 블록 3D(644)가 매칭된다. 블록 4A(616), 블록 5B(628), 블록 5C(638) 및 블록 5D(648)가 매칭된다.
블록 4B(626), 블록 2C(632) 및 블록 4D(646)는 불량 블록들이며, 양호한 블록들에 대해 사용되는 연속 어드레스 공간들 밖의 어드레스 공간에 맵핑된다. 예를 들어, 불량 블록들은 어드레스 공간의 끝에 맵핑될 수 있다.
전술한 블록들의 매칭 또는 "짝짓기"는 메모리에 액세스하기 위한 어드레스들의 연속성을 유지하며, 이는 어레이들 사이에서 교대로 메모리의 블록들을 빠르게 판독하는 것을 허가하고, 그리고/또는 어레이들로부터 데이터를 병렬로 판독하는 것을 허가한다. 그러나, 블록들은 연속 논리 어드레스들의 이익을 유지하기 위하여 순차적인 내부 어드레스 순으로 맵핑될 필요는 없다. 일 실시예에서, 데이터는 제어기, 프로세서 또는 CPU에 의해 보여질 때는 순차적으로 어드레스되지만, 메모리 칩 내의 물리 블록들의 실제 순서는 다를 수 있으며, 통상적으로 제어기 또는 프로세서에 투명할 것이다. 일 실시예에서, 맵핑은 플래시 퓨즈와 같은 퓨즈들을 이용하여 맵핑 데이터를 저장하도록 구현된다. 맵핑은 제조 테스트 동안에 최초로 결정되고, 필드에서 갱신될 수 있다. 일 실시예에서, 퓨즈들은 행 디코더의 밖에 위치하지만, 디코딩 솔루션에 영향을 미친다. 예를 들어, 퓨즈들은 어드레스 변환기 회로의 일부이거나, 정상적인 행 디코딩을 무효로 하는 오버라이드 회로의 일부이거나, 기타 등등일 수 있다. 다른 실시예에서, 퓨즈들은 행 디코더 자체의 프로그램 가능성을 제공한다.
도 7은 제어기(702), 어드레스 변환기(704) 및 메모리 장치(들)(706)의 일례를 나타낸다. 제어기(702)는 메모리 장치(706)를 사용하는 제어기 또는 다른 프로세서를 나타낸다. 다른 제어기들 또는 프로세서들도 예를 들어 직접 메모리 액세스(DMA)(708)를 통해 메모리 장치(706)를 사용할 수 있다. 어드레스 변환기(704)는 적용 가능할 때 메모리 장치(706)의 블록들에 대한 어드레스들의 맵핑 및/또는 리맵핑을 제공한다.
일 실시예에서, 어드레스 변환기(704)는 도 7에 도시된 바와 같이 메모리 장치(706)의 밖에 위치한다. 이것은 오프-더 -쉘프(off-the-shelf) 메모리 장치(들)(706)가 사용되는 것을 가능하게 하며, 어드레스 변환기(704)마다 비교적 많은 메모리 장치들(706)이 사용되는 것을 허가한다.
다른 실시예에서, 어드레스 변환기(704)는 메모리 장치(706)의 일부이다. 단일 메모리 장치(706)가 다수의 메모리 어레이를 저장할 수 있다는 점에 유의해야 한다. 어드레스 변환기(704)는 대안으로 제어기(702)와 통합되거나, DMA 제어기와 통합되거나, 개별 칩일 수 있다. 일 실시예에서, 어드레스 변환기는 제어기(702)와 같은 메모리 장치(706)를 사용하는 장치들에 의해 보여지는 바와 같은 논리 어드레스들을 메모리 장치(706)로부터 데이터를 검색하는 데 사용되는 어드레스들로 변환 또는 맵핑한다. 맵핑 정보는 탐색 테이블(LUT)에 저장될 수 있다. 도시된 실시예에서, 메모리의 블록들은 어드레스들의 최상위 비트(MSB) 부분들에 대해 어드레스되고(어드레스들의 블록 부분), 페이지들(존재할 경우) 및 바이트들은 어드레스들의 최하위 비트(LSB) 부분들에 대해 어드레스된다. 어레이들의 페이지들이 "핑퐁" 방식으로 판독되기를 의도하는 경우, 그들의 어드레스 변환은 그에 따라 변경될 수 있다.
도 8은 어드레스 변환기(802)를 갖는 메모리 칩(800)의 개략도이다. 도시된 예에서, 메모리 칩(800)은 메모리 어레이 A(804) 및 메모리 어레이 B(806)를 구비한다. 명료화를 위해, 메모리 어레이 B(806)에 대한 잡다한 지원 회로들은 도시되지 않았으며, 일 실시예에서는 메모리 어레이 A(804)에 대하여 설명되는 것과 동일하다. 2개의 어레이(804, 806)는 동일 칩 상에 구현될 때 캐시 레지스터(808)를 공유할 수 있다.
어드레스 변환기(802)는 논리 어드레스들을 입력으로 수신하고, 변환된 어드레스들을 출력으로 제공한다. 논리 어드레스들은 입출력 회로(809)에 결합되는 예를 들어 제어기, 프로세서, CPU 등으로부터 발생할 수 있다. 일 실시예에서, 어드레스 변환기의 변환 기능은 인에이블 신호(810)를 통해 선택적으로 인에이블되거나 디스에이블될 수 있다. 어드레스 변환기(802)는 또한 프로그래밍을 위한 모드 및 정상 사용을 위한 모드를 가질 수 있으며, 이들은 프로그램 신호(812)를 이용하여 선택될 수 있다. 예컨대, 어드레스 변환기(802)는 양호한 블록들을 연속 어드레스 공간으로 맵핑하도록 제조 테스트 동안에 프로그래밍될 수 있다.
어드레스 변환기(802)의 출력들은 어레이 A(804)에 대한 어드레스 래치(814)로 그리고 어레이 B(806)에 대한 다른 어드레스 래치(도시되지 않음)로 제공된다. 어레이 A(804)와 어레이 B(806) 사이의 맵핑은 상이할 수 있으며, 따라서 래치되는 어드레스들도 상이할 수 있다. 어드레스 변환기(802)는 통상적으로 어드레스 버스의 모든 비트를 변환할 필요는 없으며, 적어도 블록들을 선택하는 데 사용되는 어드레스 비트들을 변환하면 된다는 점에 유의한다.
어드레스 래치 A(814)의 출력은 행 디코더(816)에 입력으로서 제공된다. 일 실시예에서, 메모리 어레이 A(804)에 대한 행 디코더(816)는 메모리 어레이 B(806)에 대한 행 디코더와 별개이다. 이것은 메모리 어레이 A(804) 및 메모리 어레이 B(806)로부터의 데이터의 상이한 물리 페이지들(물리 행 어드레스가 상이함)이 공통 논리 어드레스를 이용하여 동시에 액세스되는 것을 가능하게 한다. 일 실시예에서, 행 디코더(816)는 또한 행들 및/또는 열들 내의 불량 메모리 위치들을 정정하도록 맵핑될 수 있다. 예를 들어, 블록이 필드에서 불량이 되는 경우, 퓨즈들의 뱅크는 불량 블록에 대한 어드레스 범위를 검출하고, 그렇지 않은 중복 블록으로 교체하여 어레이를 수리하도록 프로그래밍될 수 있다. 행 디코더(816)는 데이터의 판독을 위해 적절한 행들을 선택한다. 예를 들어, NAND 플래시와 관련하여, 행 디코더(816)는 특정 행(워드라인으로도 알려짐)을 활성화할 수 있으며, 다른 관련 행들이 턴 "온"되어, 선택된 행의 특정 셀들이 기입 또는 판독될 수 있게 된다.
어드레스 래치(814)의 출력은 또한 열 디코더(818)에 입력으로서 제공된다. 일 실시예에서, 행 디코더(816)에 대한 어드레스들은 어드레스 변환기(802)에 의해 변환되지만, 열 디코더(818)에 대한 어드레스들은 변환되지 않는다. 감지/드라이버 회로들(820)은 열 디코더(818) 및 어레이 A(804)와 통신하여, 어레이 A(804)에 데이터를 기입하거나 그로부터 데이터를 판독한다. 데이터 버퍼들/래치들(822)은 메모리 어레이(A)(804) 내의 저장을 위해 입출력 회로(809)로부터의 데이터를 저장하며, 데이터 레지스터들(824, 826)은 메모리 어레이 A(804) 및 메모리 어레이 B(806)로부터 각각 검색된 데이터를 저장한다. 캐시 레지스터(808)는 데이터의 빠른 액세스를 위해 데이터 레지스터들(824, 826)로부터의 데이터를 제공한다. 메모리 어레이 A(804) 및 메모리 어레이 B(806)가 동일 칩 상에 있지 않은 경우, 캐시 레지스터(808)는 통상적으로 공유되지 않을 것이다.
도 9는 어드레스 변환의 구현을 위한 탐색 테이블(LUT)(902)의 일례를 나타낸다. 일 실시예에서, 탐색 테이블(902)은 EEPROM 또는 플래시 메모리(NOR 또는 NAND)와 같은 프로그래밍가능한 비휘발성 메모리로서 구현된다. 일 실시예에서, 어드레스 변환기(904)는 제조 테스트 동안 탐색 테이블(902)을 프로그래밍하고, 동작 동안 프로그래밍된 탐색 테이블을 사용함으로써 구현된다. 일 실시예에서, 탐색 테이블(902)은 또한 펌웨어 또는 상태 머신 제어 등을 통해 필드에서 다시 프로그래밍될 수 있다. 탐색 테이블(902)은 대안으로서 사용 전에 적절한 데이터가 로딩된 정적 RAM과 같은 휘발성 메모리 장치에 의해 구현될 수 있는데, 이는 사용 동안에 더 빠른 속도를 제공할 수 있다.
도시된 실시예에서, 어드레스 변환기(904)는 논리 어드레스(906)를 입력으로 수신하고, 둘 이상의 어드레스(908, 909)를 출력으로 제공한다. 논리 어드레스(906)는 완전한 어드레스일 필요는 없으며, 예를 들어 블록들을 어드레스하기 위한 어드레스들의 일부일 수 있다. 하나의 어드레스(908)는 하나의 어레이의 데이터에 어드레스하기 위한 것일 수 있으며, 다른 어드레스(909)는 쌍을 이루는 다른 어레이의 데이터에 어드레스하기 위한 것일 수 있다. 도시된 실시예에서, 양 어레이에 대한 어드레스들은 CPU에 대한 데이터의 효율적인 액세스를 위해 변환된다. 예를 들어, CPU는 데이터가 연속 어드레스들에서 이용 가능한 경우에 더 빠르게 데이터를 판독할 수 있다.
그러나, 어레이에 대한 어드레스들은 변환되지 않은 상태로 유지될 수 있으며, 다른 어레이들의 양호한 블록들에 대한 어드레스들은 변환되지 않은 어레이의 변환되지 않은 어드레스들과 매칭되도록 변환될 수 있다. 예를 들어, 프로그래밍 프로세스 동안, 어드레스 변환기(904)는 논리 어드레스(906)를 변경 없이 하나 이상의 변환된 어드레스(908, 909)로 통과시키도록 구성될 수 있다. 변환된 어드레스들(908, 909)은 서로 상이할 수 있으며, 따라서 상이한 어드레스들의 블록들로부터의 데이터가 효율적으로 검색될 수 있다. 어드레스 변환기(904)가 변환 동작을 위해 인에이블될 때, 논리 어드레스(906)는 메모리 위치에 대한 어드레스로서 탐색 테이블(902)에 적용될 수 있으며, 변환된 어드레스(908)는 탐색 테이블(902)의 저장된 데이터로부터 검색될 수 있다.
도시된 실시예에서, 탐색 테이블(902)은 2개의 어레이에 대한 맵들을 갖는다. 다른 실시예에서, 탐색 테이블(902)은 둘보다 많은 어레이들에 대한 맵들을 저장할 수 있다. 또한, 탐색 테이블(902)은 대안으로서 각각의 어레이에 대한 각각의 맵을 개별 테이블들에 저장하도록 구성될 수 있다. 일 실시예에서, 마이크로프로세서, 마이크로컨트롤러, 라이센스 가능 코어, 상태 머신 등과 같은 프로세서(910)는 탐색 테이블(902)에 저장되는 맵을 생성하도록 구성된다. 프로세서(910)는 메모리 장치의 일부이거나, 시스템 내의 개별 칩이거나, 메모리를 사용하는 장치의 프로세서이거나, 기타 등등일 수 있다. 일 실시예에서, 프로세서(910)는 테스트 장비에 의해 구현된다. 탐색 테이블(902)은 다양한 방식으로 구현될 수 있다. 예를 들어, 일 실시예에서, 메모리 블록 레벨의 어드레스 데이터에 대한 블록 어드레스 부분들(어드레스 내의 비트 범위 등)만이 탐색 테이블(902)에 저장되며, CPU로부터의 어드레스의 나머지가 메모리 어레이에 대한 완전한 어드레스를 형성하도록 결합된다. 따라서, 리맵핑되는 블록 어드레스의 일부는 어드레스의 그 부분에 대한 교체 데이터와 같은 파라미터를 이용하여 리맵핑될 수 있다. 예를 들어, 다른 실시예에서, 탐색 테이블(902)은 어드레스 자체가 아니라 새로운 어드레스를 생성하기 위한 오프셋들을 저장하며, 리맵핑에 사용되는 파라미터는 오프셋일 수 있다.
도 10은 집합적 블록 맵핑을 일반적으로 나타내는 흐름도이다. 이 분야의 실무자들은 도시된 프로세스가 다양한 방식으로 변경될 수 있다는 것을 알 것이다. 예를 들어, 다른 실시예에서, 도시된 프로세스의 다양한 부분들은 결합되거나, 다른 시퀀스로 재배열되거나, 제거되거나, 기타 등등일 수 있다. 도시된 프로세스는 둘 이상의 메모리 어레이에 대한 블록들을 매칭시키는 데 사용될 수 있다.
프로세스는 어레이, 예를 들어 어레이 "A"의 양호한 블록들의 적어도 일부를 연속 어드레스 공간(논리 어드레스들)에 맵핑(1002)함으로써 시작된다. 일 실시예에서, 연속 부분은 어레이에 대해 지정된 메모리 용량을 충족시키기에 충분한 메모리 공간을 제공하기에 적어도 충분한 양호한 블록들을 포함한다. 따라서, 적어도 충분한 양호한 블록들은 모두보다 적은 양호한 블록들을 포함할 수 있다. 일 실시예에서, 연속 블록들의 일부는 도 12A에 도시된 바와 같이 모든 양호한 블록을 포함한다. 다른 실시예에서, 연속 블록들의 일부는 도 12B에 도시된 바와 같이 어레이에 대하여 지정된 메모리 용량을 충족시키기에 충분한 메모리 공간을 제공하는 데 충분한 양호한 블록들의 일부만을 포함한다. 맵핑(1002)을 수행하기 위한 프로세스의 일 실시예가 도 11과 관련하여 나중에 더 상세히 설명될 것이다.
도 10을 다시 참조하면, 프로세스는 하나 이상의 다른 어레이, 예컨대 어레이 "B"의 양호한 블록들의 적어도 부분들을 동일한 연속 어드레스 공간에 맵핑(1004)하는 단계로 진행된다. 양호한 블록들의 동일한 연속 어드레스 공간으로서의 맵핑은 이렇게 맵핑되는 어레이들의 블록들이 효율적인 액세스를 위해 동일한 논리 어드레스들을 공유하는 것을 보장한다. 예컨대, 상이한 어레이들은 별개의 행 디코더들을 사용함으로써, 상이한 물리 어드레스들의 블록들에 대한 액세스를 동시에 허가할 수 있다.
프로세스는 다양한 메모리 어레이의 특정 블록들로의 어드레스 변환에 대한 맵핑들을 저장하는 단계(1006)로 진행한다. 일 실시예에서, 맵핑들은 도 9와 관련하여 전술한 바와 같이 탐색 테이블에 저장된다. 다른 실시예에서, 어레이에 대한 특정 맵핑들은 어레이에 대한 행 디코더를 프로그래밍함으로써 저장된다.
도 11은 어레이 내의 블록 맵핑을 일반적으로 나타내는 흐름도이다. 도시된 프로세스는 어레이의 양호한 블록들을 연속 어드레스 공간에 맵핑한다. 프로세스는 필요에 따라 다른 어레이들에 대해 반복될 수 있다. 이 분야의 실무자는 도시된 프로세스가 다양한 방식으로 변경될 수 있다는 것을 알 것이다. 예컨대, 다른 실시예에서, 도시된 프로세스의 다양한 부분들은 결합되거나, 다른 시퀀스로 재배열되거나, 제거되거나, 기타 등등일 수 있다.
프로세스는 변수들을 초기화하는 단계(1102)에 의해 시작된다. 흐름도에서, n은 물리 또는 내부 블록 번호(어드레스)를 나타내며, 예를 들어 0으로 초기화될 수 있다. 변수 i는 논리 어드레스를 나타내며, 어레이 A의 제1 블록에 대한 시작 논리 어드레스로 초기화되어야 한다. 설명의 목적으로, 변수 i는 0에서 시작될 수 있다.
프로세스는 블록 n(어드레스 n)이 양호한지를 결정하는 단계(1104)로 진행한다. 예컨대, 메모리 장치들은 통상적으로 어느 메모리 블록들이 양호하고 어느 것이 불량인지를 지시하는 공지된 양호한 메모리 공간 내에 제조 테스트 동안 채워지는(그리고 예를 들어 사용 중에 제어기에 의해 갱신 가능한) 참조 테이블을 갖는다. 블록이 불량인 경우, 프로세스는 블록 번호 n을 불량 블록 테이블에 저장한다(1106). 프로세스는 상태 1106에서 판정 블록(1110)으로 진행한다.
블록이 양호한 경우, 프로세스는 논리 어드레스 i와 블록 번호 n을 연관시킨다(1108). 프로세스는 상태 1108에서 판정 블록(1110)으로 진행한다.
프로세스는 이것이 처리되고 있는 어레이의 블록들에 대해 행해졌는지를 결정한다(1110). 이것이 아직 행해지지 않은 경우, 프로세스는 상태 1112로 진행하며, 여기서 프로세스는 블록 번호 n을 증가시켜 다음 블록의 처리를 준비한다. 이어서, 프로세스는 상태 1112에서 판정 블록 1104로 복귀한다.
프로세스가 완료된 경우, 프로세스는 판정 블록 1110에서 상태 1114로 진행하며, 여기서 프로세스는 상태 1106에서 수집된 불량 블록들을 탐색 테이블의 끝의 어드레스들 또는 행 디코더에 대한 어드레스 범위의 끝에 연관시키거나 맵핑한다. 불량 블록들은 대안으로서 상태 1106에서와 같은 프로세스 내의 상이한 포인트에서 탐색 테이블의 끝에 맵핑될 수 있다. 프로세스는 다른 관련된 어레이들에 대해 반복될 수 있다. 도 11과 관련하여 설명된 프로세스의 한 가지 이점은 개별 어레이들의 블록들이 연속 블록들에서 어드레스가능하도록 처리될 수 있으며, 따라서 다른 어레이들의 양호한 블록들의 위치들의 지식이 필요하지 않다는 것이다.
도 12A는 메모리 어레이에 대한 메모리 맵의 일례를 나타내며, 모든 양호한 블록들은, 사용되거나(1202) 스페어인지에(1204) 관계없이, 논리 메모리 어드레스들의 연속 공간(1206)으로 맵핑된다. 도 12B는 메모리 어레이의 메모리 맵에 대한 다른 예를 나타내며, 사용될 양호한 블록들(1208)은 논리 어드레스들의 연속 공간으로 맵핑되고, 스페어 블록들(1210)인 양호한 블록들은 사용되는 양호한 블록들에 대한 어드레스 공간에 연속하지 않은 어드레스 공간에 맵핑된다.
본 발명의 실시예들은 이롭게도 제어기 등이 동일 논리 어드레스를 이용하여 상이한 어레이들의 매칭되는 블록들로부터의 데이터에 어드레스하는 것을 가능하게 한다. 예를 들어, 메모리 어레이들의 하나 이상의 양호한 블록의 어드레스들은 제어기가 상이한 물리 어드레스들을 갖는 상이한 어레이들의 매칭되는 블록들로부터의 데이터에 액세스할 때 둘 이상의 상이한 논리 어드레스 사이에서 앞뒤로 스위칭할 필요가 없게 하도록 맵핑된다. 개별 행 디코더들은 상이한 물리 어드레스들을 갖는 매칭된 블록들의 데이터의 페이지들이 동시에 저장되거나 다수의 어레이들로부터 검색되는 것을 가능하게 한다. 이것은 예를 들어 다중 채널 데이터 버스들, 핑퐁되는 어레이들 등에서 데이터가 비교적 효율적으로 액세스되는 것을 허가할 수 있다.
일 실시예는 둘 이상의 상이한 메모리 어레이 사이에 퍼져있는 데이터의 매칭되는 블록들에 대한 액세스를 구성하기 위한 장치로서, 프로세서로부터 생성되는 논리 어드레스들의 적어도 블록 부분을 수신하도록 구성되는 어드레스 변환기-상기 블록 부분은 메모리의 블록들을 선택하기 위한 어드레스 범위에 대응하고, 상기 어드레스 변환기는 수신된 논리 어드레스들의 적어도 수신된 블록 부분을 변경하여 제1의 변경된 어드레스들 또는 제2의 변경된 어드레스들 중 적어도 하나를 생성하도록 구성되고, 상기 제1의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제1 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제2의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제2 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들은 상기 논리 어드레스의 블록 부분에 대한 동일한 논리 어드레스를 이용하여 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이의 매칭되는 블록들을 각각 선택하도록 구성됨-; 상기 어드레스 변환기와 통신하여, 상기 제1의 변경된 어드레스들을 수신하고, 상기 제1 메모리 어레이에 결합되는 제1 행 디코더; 및 상기 어드레스 변환기와 통신하여, 상기 제2의 변경된 어드레스들을 수신하고, 상기 제2 메모리 어레이에 결합되며, 상기 제1 행 디코더와 별개인 제2 행 디코더를 포함하는 장치이다.
일 실시예는 동일한 논리 어드레스를 이용하여 매칭 블록들과 연관된 데이터의 액세스를 위해 둘 이상의 메모리 어레이에 대한 메모리 공간의 블록들을 매칭시키는 방법으로서, 연속적인 논리 어드레스 공간에서 상기 둘 이상의 메모리 어레이 중 제1 어레이의 사용가능한 양호한 블록들과 상기 둘 이상의 메모리 어레이 중 제2 어레이의 사용가능한 양호한 블록들을 연관시켜, 상기 둘 이상의 메모리 어레이에 대한 메모리의 매칭되는 양호한 블록들이 상기 논리 어드레스의 블록 부분에 대한 동일한 논리 어드레스를 이용하여 논리적으로 어드레스가능하게 하는 단계-상기 제2 어레이의 양호한 블록들과 연관된 상기 제1 어레이의 사용가능한 양호한 블록들의 적어도 일부는 상이한 물리 어드레스들을 가지며, 상기 제1 어레이 및 상기 제2 어레이의 연관된 양호한 블록들은 상이한 물리 어드레스들을 이용해서도 동시에 액세스 가능함-; 및 논리 어드레스 변환을 위해 상기 연관들을 저장하는 단계를 포함하는 방법이다.
일 실시예는 둘 이상의 상이한 메모리 어레이에 대한 액세스를 위한 어드레스들을 변경하는 방법으로서, 둘 이상의 상이한 메모리 어레이의 메모리 위치들에 대한 액세스를 위해 프로세서로부터 논리 어드레스들을 수신하는 단계-상기 논리 어드레스들의 블록 부분들은 메모리 어레이들 내의 특정 블록들의 어드레싱과 관련됨-; 상기 논리 어드레스들, 및 제1 메모리 어레이의 선택된 메모리 블록들에 대응하는 저장된 파라미터들로부터 상기 제1 메모리 어레이에 대한 제1의 변경된 어드레스들을 생성하여, 상기 선택된 메모리 블록들에 대한 액세스를 재배열함으로써, 상기 제1 메모리 어레이에 대해 지정된 적어도 최소 수의 양호한 메모리 블록들이 연속하는 논리 메모리 어드레스 공간에서 액세스 가능하고, 불량 블록들은 상기 연속하는 논리 메모리 어드레스 공간에서 어드레스되지 못하게 하는 단계; 상기 논리 어드레스들, 및 제2 메모리 어레이의 선택된 메모리 블록들에 대응하는 저장된 파라미터들로부터 상기 제2 메모리 어레이에 대한 제2의 변경된 어드레스들을 생성하여, 상기 선택된 메모리 블록들에 대한 액세스를 재배열함으로써, 상기 제2 메모리 어레이에 대해 지정된 적어도 최소 수의 양호한 메모리 블록들 중 적어도 제2 그룹의 양호한 메모리 블록들이 상기 연속하는 논리 메모리 어드레스 공간에서 액세스 가능하고, 불량 블록들은 상기 연속하는 논리 메모리 어드레스 공간에서 어드레스되지 못하게 하는 단계; 및 상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들을 이용하여 상기 제1 메모리 어레이 및 상기 제2의 메모리 어레이의 매칭되는 블록들에 액세스함으로써, 상기 매칭되는 블록들이 상기 논리 어드레스에 대한 동일 블록 부분을 이용하여 상기 프로세서에 의해 어드레스가능하고, 상기 매칭되는 블록들이 상이한 물리 어드레스들을 갖는 경우에도 동시에 어드레스가능하게 하는 단계를 포함하는 방법이다.
다양한 실시예들이 위에서 설명되었다. 본 발명은 그러한 특정 실시예들과 관련하여 설명되었지만, 이러한 설명은 제한적인 것이 아니라, 예시적인 것을 의도한다. 첨부된 청구항들에 정의되는 바와 같은 본 발명의 진정한 사상 및 범위를 벗어나지 않고 이 분야의 기술자들에게는 다양한 변경 및 응용이 떠오를 것이다.
Claims (23)
- 둘 이상의 상이한 메모리 어레이 사이에 퍼져있는 데이터의 매칭되는 블록들에 대한 액세스를 구성하기 위한 장치로서,
프로세서로부터 생성되는 논리 어드레스들의 적어도 블록 부분을 수신하도록 구성되는 어드레스 변환기 - 상기 블록 부분은 메모리의 블록들을 선택하기 위한 어드레스 범위에 대응하고, 상기 어드레스 변환기는 수신된 논리 어드레스들의 적어도 수신된 블록 부분을 변경하여 제1의 변경된 어드레스들 또는 제2의 변경된 어드레스들 중 적어도 하나를 생성하도록 구성되고, 상기 제1의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제1 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제2의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제2 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들은 상기 논리 어드레스의 블록 부분에 대한 동일한 논리 어드레스를 이용하여 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이의 매칭되는 블록들을 각각 선택하도록 구성됨 -;
상기 어드레스 변환기와 통신하여, 상기 제1의 변경된 어드레스들을 수신하고, 상기 제1 메모리 어레이에 결합되는 제1 행 디코더; 및
상기 어드레스 변환기와 통신하여, 상기 제2의 변경된 어드레스들을 수신하고, 상기 제2 메모리 어레이에 결합되며, 상기 제1 행 디코더와 별개인 제2 행 디코더
를 포함하는 장치. - 제1항에 있어서, 상기 어드레스 변환기는 적어도 하나의 탐색(lookup) 테이블을 포함하는 장치.
- 제1항에 있어서, 상기 어드레스 변환기, 상기 제1 행 디코더, 상기 제2 행 디코더, 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이는 집적 회로 내에 구현되는 장치.
- 제1항에 있어서, 상기 어드레스 변환기는 상기 수신된 논리 어드레스들을 상기 둘 이상의 메모리 어레이의 각각에 대한 변경된 어드레스들로 변환하도록 더 구성되는 장치.
- 제1항에 있어서, 상기 둘 이상의 메모리 어레이에 대한 NAND 플래시의 둘 이상의 메모리 어레이를 더 포함하는 장치.
- 제1항에 있어서, 상기 어드레스 변환기는 프로그래밍가능한 장치.
- 제1항에 있어서, 상기 어드레스 변환기의 적어도 일부는 상기 제1 메모리 어레이 또는 상기 제2 메모리 어레이에 대한 프로그래밍가능한 행 디코더로서 구현되는 장치.
- 제1항에 있어서, 상기 장치는 메모리 장치 외부의 제어기 내에 구현되는 장치.
- 제1항에 있어서, 상기 장치는 메모리 장치 내에 구현되는 장치.
- 동일한 논리 어드레스를 이용하여 매칭 블록들과 연관된 데이터의 액세스를 위해 둘 이상의 메모리 어레이에 대한 메모리 공간의 블록들을 매칭시키는 방법으로서,
상기 둘 이상의 메모리 어레이에 대한 메모리의 매칭되는 양호한 블록들이 상기 논리 어드레스의 블록 부분에 대한 동일한 논리 어드레스를 이용하여 논리적으로 어드레스가능하도록, 연속적인 논리 어드레스 공간에서 상기 둘 이상의 메모리 어레이 중 제1 어레이의 사용가능한 양호한 블록들과 상기 둘 이상의 메모리 어레이 중 제2 어레이의 사용가능한 양호한 블록들을 연관시키는 단계 - 상기 제2 어레이의 양호한 블록들과 연관된 상기 제1 어레이의 사용가능한 양호한 블록들의 적어도 일부는 상이한 물리 어드레스들을 가지며, 상기 제1 어레이 및 상기 제2 어레이의 연관된 양호한 블록들은 상이한 물리 어드레스들을 이용하더라도 동시에 액세스 가능함 -; 및
논리 어드레스 변환을 위해 상기 연관들을 저장하는 단계
를 포함하는 방법. - 제10항에 있어서, 상기 저장 단계는 상기 둘 이상의 메모리 어레이로부터의 양호한 블록들과 논리 어드레스들의 연관들을 저장하도록 하나 이상의 탐색 테이블을 프로그래밍하는 단계를 더 포함하는 방법.
- 제11항에 있어서, 상기 연관들을 저장하기 위해 논리 어드레스들의 블록 부분을 교체하는 파라미터들을 저장하는 단계를 더 포함하는 방법.
- 제11항에 있어서, 상기 연관들을 저장하기 위해 논리 어드레스들과 결합되는 오프셋들을 저장하는 단계를 더 포함하는 방법.
- 제10항에 있어서, 하나 이상의 행 디코더의 프로그래밍을 통해 상기 연관들을 저장하는 단계를 더 포함하는 방법.
- 제10항에 있어서,
상기 연관시키는 단계는,
메모리 어레이의 블록들이 양호한지 또는 불량인지를 결정하는 단계;
연속 어드레스 공간에서 상기 메모리 어레이에 대한 시작 어드레스에서 시작하는 어드레스들을 상기 메모리 어레이의 양호한 블록들에 대해 순차적으로 연관시키는 단계; 및
상기 메모리 어레이의 불량 블록들을 상기 메모리 어레이에 대한 어드레스 범위의 끝에 있는 어드레스들과 연관시키는 단계
를 포함하는 방법. - 제10항에 있어서, 제조 테스트 동안에 상기 방법을 수행하는 단계를 더 포함하는 방법.
- 제10항에 있어서, 필드(field) 어플리케이션에서 상기 방법을 수행하는 단계를 더 포함하는 방법.
- 둘 이상의 상이한 메모리 어레이에 대한 액세스를 위한 어드레스들을 변경하는 방법으로서,
둘 이상의 상이한 메모리 어레이의 메모리 위치들에 대한 액세스를 위해 프로세서로부터 논리 어드레스들을 수신하는 단계 - 상기 논리 어드레스들의 블록 부분들은 메모리 어레이들 내의 특정 블록들의 어드레싱과 관련됨 -;
상기 논리 어드레스들, 및 제1 메모리 어레이의 선택된 메모리 블록들에 대응하는 저장된 파라미터들로부터 상기 제1 메모리 어레이에 대한 제1의 변경된 어드레스들을 생성하여, 상기 선택된 메모리 블록들에 대한 액세스를 재배열함으로써, 상기 제1 메모리 어레이에 대해 지정된 적어도 최소 수의 양호한 메모리 블록들 중 적어도 제1 그룹의 양호한 메모리 블록들이 연속하는 논리 메모리 어드레스 공간에서 액세스가능하고, 불량 블록들은 상기 연속하는 논리 메모리 어드레스 공간에서 어드레스되지 않게 하는 단계;
상기 논리 어드레스들, 및 제2 메모리 어레이의 선택된 메모리 블록들에 대응하는 저장된 파라미터들로부터 상기 제2 메모리 어레이에 대한 제2의 변경된 어드레스들을 생성하여, 상기 선택된 메모리 블록들에 대한 액세스를 재배열함으로써, 상기 제2 메모리 어레이에 대해 지정된 적어도 최소 수의 양호한 메모리 블록들 중 적어도 제2 그룹의 양호한 메모리 블록들이 상기 연속하는 논리 메모리 어드레스 공간에서 액세스가능하고, 불량 블록들은 상기 연속하는 논리 메모리 어드레스 공간에서 어드레스되지 않게 하는 단계; 및
상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들을 이용하여 상기 제1 메모리 어레이 및 상기 제2의 메모리 어레이의 매칭되는 블록들에 액세스함으로써, 상기 매칭되는 블록들이 상기 논리 어드레스에 대한 동일 블록 부분을 이용하여 상기 프로세서에 의해 어드레스가능하고, 상기 매칭되는 블록들이 상이한 물리 어드레스들을 갖는 경우에도 상기 매칭되는 블록들이 동시에 액세스가능하게 하는 단계
를 포함하는 방법. - 제18항에 있어서, 상기 변경된 어드레스들은 상기 둘 이상의 메모리 어레이에 대한 데이터의 기입을 위해 변경되는 방법.
- 제18항에 있어서, 상기 변경된 어드레스들은 상기 둘 이상의 메모리 어레이에 대한 데이터의 판독을 위해 변경되는 방법.
- 제18항에 있어서, 상기 파라미터들은 논리 어드레스들의 블록 부분에 대한 대체물을 포함하는 방법.
- 제18항에 있어서, 상기 파라미터들은 상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들을 생성하기 위한 오프셋들을 포함하는 방법.
- 제18항에 있어서, 적어도 제1 그룹의 양호한 메모리 블록들이 상기 적어도 최소 수의 양호한 메모리 블록들의 모든 양호한 메모리 블록들을 포함하며, 적어도 제2 그룹의 양호한 메모리 블록들이 상기 적어도 최소 수의 양호한 메모리 블록들의 모든 양호한 메모리 블록들을 포함하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/773,321 | 2007-07-03 | ||
US11/773,321 US20090013148A1 (en) | 2007-07-03 | 2007-07-03 | Block addressing for parallel memory arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100051804A true KR20100051804A (ko) | 2010-05-18 |
KR101573089B1 KR101573089B1 (ko) | 2015-11-30 |
Family
ID=40222341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107002399A KR101573089B1 (ko) | 2007-07-03 | 2008-06-30 | 병렬 메모리 어레이들의 블록 어드레싱 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20090013148A1 (ko) |
KR (1) | KR101573089B1 (ko) |
CN (1) | CN101772810B (ko) |
TW (1) | TWI376601B (ko) |
WO (1) | WO2009006442A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101111615B1 (ko) * | 2010-06-01 | 2012-02-15 | 서울통신기술 주식회사 | 휴대용 단말기의 프로그램 업데이트 장치 및 방법 |
KR101293226B1 (ko) * | 2011-06-30 | 2013-08-05 | (주)아토솔루션 | 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법 |
KR101293223B1 (ko) * | 2011-04-01 | 2013-08-05 | (주)아토솔루션 | 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009244962A (ja) * | 2008-03-28 | 2009-10-22 | Toshiba Corp | メモリシステム |
US8068380B2 (en) | 2008-05-15 | 2011-11-29 | Micron Technology, Inc. | Block repair scheme |
TWI406130B (zh) * | 2009-03-10 | 2013-08-21 | Phison Electronics Corp | 資料處理系統、控制器及其搜尋特定記憶體區的方法 |
US8201024B2 (en) * | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
JP5559616B2 (ja) | 2010-06-17 | 2014-07-23 | ラピスセミコンダクタ株式会社 | 半導体メモリ装置 |
KR20120003283A (ko) * | 2010-07-02 | 2012-01-10 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 배드 블록 관리 방법 |
GB2493340A (en) * | 2011-07-28 | 2013-02-06 | St Microelectronics Res & Dev | Address mapping of boot transactions between dies in a system in package |
KR20130044657A (ko) * | 2011-10-24 | 2013-05-03 | 삼성전자주식회사 | 파일 시스템 및 그 제어 방법 |
US9418700B2 (en) * | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
US9032244B2 (en) | 2012-11-16 | 2015-05-12 | Microsoft Technology Licensing, Llc | Memory segment remapping to address fragmentation |
US9318168B2 (en) * | 2012-11-27 | 2016-04-19 | Samsung Electronics Co., Ltd. | Memory system for continuously mapping addresses of a memory module having defective locations |
KR102076067B1 (ko) * | 2012-11-27 | 2020-02-11 | 삼성전자주식회사 | 메모리 모듈 및 메모리 시스템 |
US9136873B2 (en) | 2013-03-11 | 2015-09-15 | Intel Corporation | Reduced uncorrectable memory errors |
CN103902475B (zh) * | 2014-04-23 | 2017-01-25 | 哈尔滨工业大学 | 一种基于队列管理机制的固态硬盘并行访问方法及装置 |
US20150339223A1 (en) * | 2014-05-22 | 2015-11-26 | Kabushiki Kaisha Toshiba | Memory system and method |
JP5748887B2 (ja) * | 2014-06-06 | 2015-07-15 | ラピスセミコンダクタ株式会社 | 半導体メモリ装置 |
US9910650B2 (en) * | 2014-09-25 | 2018-03-06 | Intel Corporation | Method and apparatus for approximating detection of overlaps between memory ranges |
US9715342B2 (en) * | 2015-07-03 | 2017-07-25 | Xitore, Inc. | Apparatus, system, and method of logical address translation for non-volatile storage memory |
CN105609129A (zh) * | 2015-07-10 | 2016-05-25 | 上海磁宇信息科技有限公司 | 一种具有替换行或列的mram芯片及替换、读写方法 |
KR102415385B1 (ko) | 2015-07-22 | 2022-07-01 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치 |
US9766814B2 (en) * | 2015-08-10 | 2017-09-19 | Intel Corporation | Method and apparatus for defect management in a non-volatile memory device |
JP6542152B2 (ja) * | 2016-03-29 | 2019-07-10 | 東芝メモリ株式会社 | オブジェクトストレージ、コントローラおよびプログラム |
US10146604B2 (en) * | 2016-08-23 | 2018-12-04 | Oracle International Corporation | Bad block detection and predictive analytics in NAND flash storage devices |
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US10261876B2 (en) * | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
US10445199B2 (en) * | 2016-12-22 | 2019-10-15 | Western Digital Technologies, Inc. | Bad page management in storage devices |
KR102395434B1 (ko) * | 2017-03-20 | 2022-05-09 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10115441B1 (en) | 2017-07-20 | 2018-10-30 | Macronix International Co., Ltd. | Row decoder and memory system using the same |
TWI630616B (zh) * | 2017-08-11 | 2018-07-21 | 旺宏電子股份有限公司 | 列解碼器及應用其之記憶體系統 |
JP7074454B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
KR20190052315A (ko) * | 2017-11-08 | 2019-05-16 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
KR102504765B1 (ko) | 2017-12-22 | 2023-03-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11086539B2 (en) * | 2019-10-21 | 2021-08-10 | Sandisk Technologies Llc | Mapping consecutive logical block addresses to consecutive good blocks in memory device |
US11436144B2 (en) * | 2020-04-10 | 2022-09-06 | Micron Technology, Inc. | Cache memory addressing |
CN113689902B (zh) * | 2020-05-19 | 2023-09-01 | 长鑫存储技术有限公司 | 生成存储器地址数据的方法、计算机可读存储介质及设备 |
US20210406170A1 (en) * | 2020-06-24 | 2021-12-30 | MemRay Corporation | Flash-Based Coprocessor |
US11579772B2 (en) * | 2020-11-25 | 2023-02-14 | Micron Technology, Inc. | Managing page retirement for non-volatile memory |
JP2022143762A (ja) * | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、制御方法およびメモリコントローラ |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6047623B2 (ja) * | 1982-02-12 | 1985-10-22 | 株式会社日立製作所 | アドレス変換方式 |
JP2685770B2 (ja) * | 1987-12-28 | 1997-12-03 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP3169155B2 (ja) * | 1993-12-22 | 2001-05-21 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 情報をキャッシュするための回路 |
JPH08278916A (ja) * | 1994-11-30 | 1996-10-22 | Hitachi Ltd | マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路 |
US5815456A (en) * | 1996-06-19 | 1998-09-29 | Cirrus Logic, Inc. | Multibank -- multiport memories and systems and methods using the same |
JPH10283770A (ja) * | 1997-04-07 | 1998-10-23 | Oki Electric Ind Co Ltd | 半導体メモリ装置およびその読み出しおよび書き込み方法 |
US5923605A (en) * | 1997-09-29 | 1999-07-13 | Siemens Aktiengesellschaft | Space-efficient semiconductor memory having hierarchical column select line architecture |
KR100297713B1 (ko) * | 1998-09-01 | 2001-08-07 | 윤종용 | 멀티뱅크 반도체 메모리장치 |
JP3850134B2 (ja) * | 1998-03-31 | 2006-11-29 | 川崎マイクロエレクトロニクス株式会社 | データ検索装置 |
JP3860436B2 (ja) * | 2001-07-09 | 2006-12-20 | 富士通株式会社 | 半導体記憶装置 |
US7009910B2 (en) * | 2001-08-23 | 2006-03-07 | Winbond Electronics Corporation | Semiconductor memory having a flexible dual-bank architecture with improved row decoding |
US7123512B2 (en) * | 2002-07-19 | 2006-10-17 | Micron Technology, Inc. | Contiguous block addressing scheme |
US6938142B2 (en) * | 2002-08-28 | 2005-08-30 | Micron Technology, Inc. | Multi-bank memory accesses using posted writes |
KR100490084B1 (ko) * | 2002-09-12 | 2005-05-17 | 삼성전자주식회사 | 효율적인 리던던시 구제율을 갖는 반도체 메모리 장치 |
US6906961B2 (en) * | 2003-06-24 | 2005-06-14 | Micron Technology, Inc. | Erase block data splitting |
US6950352B1 (en) * | 2003-11-18 | 2005-09-27 | Lsi Logic Corporation | Method and apparatus for replacing a defective cell within a memory device having twisted bit lines |
US20050144516A1 (en) * | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
KR100608592B1 (ko) * | 2004-01-27 | 2006-08-03 | 삼성전자주식회사 | 플래시 메모리의 데이터 관리 장치 및 방법 |
JP4135680B2 (ja) * | 2004-05-31 | 2008-08-20 | ソニー株式会社 | 半導体記憶装置および信号処理システム |
JP4492218B2 (ja) * | 2004-06-07 | 2010-06-30 | ソニー株式会社 | 半導体記憶装置 |
KR100624960B1 (ko) * | 2004-10-05 | 2006-09-15 | 에스티마이크로일렉트로닉스 엔.브이. | 반도체 메모리 장치 및 이의 패키지 및 이를 이용한메모리 카드 |
US7420874B2 (en) * | 2005-04-06 | 2008-09-02 | Rambus Inc. | Integrated circuit memory device, system and method having interleaved row and column control |
US20060282610A1 (en) * | 2005-06-08 | 2006-12-14 | M-Systems Flash Disk Pioneers Ltd. | Flash memory with programmable endurance |
KR100739722B1 (ko) * | 2005-08-20 | 2007-07-13 | 삼성전자주식회사 | 플래시 메모리 관리 방법 및 플래시 메모리 시스템 |
KR100660553B1 (ko) * | 2005-10-18 | 2006-12-22 | 삼성전자주식회사 | 데이터 버스트 주파수를 증가시킬 수 있는 원낸드 플래시메모리 장치 |
WO2007066326A2 (en) * | 2005-12-09 | 2007-06-14 | Sandisk Il Ltd. | Method for flash-memory management |
KR100735024B1 (ko) * | 2005-12-29 | 2007-07-03 | 삼성전자주식회사 | 반도체 장치의 어드레스 변환기 및 반도체 메모리 장치 |
JP4171749B2 (ja) * | 2006-04-17 | 2008-10-29 | Tdk株式会社 | メモリコントローラおよびフラッシュメモリシステム |
US7680988B1 (en) * | 2006-10-30 | 2010-03-16 | Nvidia Corporation | Single interconnect providing read and write access to a memory shared by concurrent threads |
US7669092B2 (en) * | 2007-02-26 | 2010-02-23 | Micron Technology, Inc. | Apparatus, method, and system of NAND defect management |
-
2007
- 2007-07-03 US US11/773,321 patent/US20090013148A1/en not_active Abandoned
-
2008
- 2008-06-30 KR KR1020107002399A patent/KR101573089B1/ko active IP Right Grant
- 2008-06-30 WO PCT/US2008/068849 patent/WO2009006442A1/en active Application Filing
- 2008-06-30 CN CN2008801022316A patent/CN101772810B/zh active Active
- 2008-07-02 TW TW097124899A patent/TWI376601B/zh active
-
2015
- 2015-02-06 US US14/616,468 patent/US9436609B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101111615B1 (ko) * | 2010-06-01 | 2012-02-15 | 서울통신기술 주식회사 | 휴대용 단말기의 프로그램 업데이트 장치 및 방법 |
KR101293223B1 (ko) * | 2011-04-01 | 2013-08-05 | (주)아토솔루션 | 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법 |
US9262099B2 (en) | 2011-04-01 | 2016-02-16 | Industrial Bank Of Korea | Non-volatile memory device, electronic control system, and method of operating the non-volatile memory device |
KR101293226B1 (ko) * | 2011-06-30 | 2013-08-05 | (주)아토솔루션 | 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법 |
Also Published As
Publication number | Publication date |
---|---|
TW200910088A (en) | 2009-03-01 |
US20090013148A1 (en) | 2009-01-08 |
US20150220441A1 (en) | 2015-08-06 |
WO2009006442A1 (en) | 2009-01-08 |
KR101573089B1 (ko) | 2015-11-30 |
CN101772810A (zh) | 2010-07-07 |
US9436609B2 (en) | 2016-09-06 |
CN101772810B (zh) | 2013-03-27 |
TWI376601B (en) | 2012-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9436609B2 (en) | Block addressing for parallel memory arrays | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
KR100663738B1 (ko) | 동시 다중 데이터 섹터 프로그래밍 및 다른 지정 블럭들에대한 물리적 블럭 특성들의 저장기능을 갖는 플래시이이피롬 시스템 | |
JP5736439B2 (ja) | ソリッドステート記憶装置におけるトランスレーションレイヤ | |
US7733697B2 (en) | Programmable NAND memory | |
JP4492218B2 (ja) | 半導体記憶装置 | |
US20240126701A1 (en) | Methods of memory address verification and memory devices employing the same | |
KR20110127728A (ko) | 메모리 블록 선택 | |
WO2001065372A1 (en) | Address mapping in solid state storage device | |
CN110678851A (zh) | 存储器地址验证方法及采用所述方法的存储器装置 | |
US20100037102A1 (en) | Fault-tolerant non-volatile buddy memory structure | |
US10185662B2 (en) | Methods for reprogramming data and apparatuses using the same | |
CN111143235A (zh) | 多内核存储器系统中的逻辑地址分配 | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
JP2009048680A (ja) | 記憶装置 | |
US8635426B2 (en) | Diagonally accessed memory array circuit | |
US7966518B2 (en) | Method for repairing a neighborhood of rows in a memory array using a patch table | |
KR101347590B1 (ko) | 용장 데이터가 원격 버퍼 회로들에 버퍼되는 비휘발성 메모리 및 방법 | |
CN113515466A (zh) | 用于多内核之间动态逻辑块地址分布的系统和方法 | |
KR101363965B1 (ko) | 결함 위치들에 대한 데이터 래치들에 용장 데이터가 버퍼되는 비휘발성 메모리 및 방법 | |
WO2008143815A1 (en) | Memory device and method for repairing a neighborhood of rows in a memory array using a patch table | |
CN118412031A (zh) | 存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181119 Year of fee payment: 4 |