KR101573089B1 - 병렬 메모리 어레이들의 블록 어드레싱 - Google Patents

병렬 메모리 어레이들의 블록 어드레싱 Download PDF

Info

Publication number
KR101573089B1
KR101573089B1 KR1020107002399A KR20107002399A KR101573089B1 KR 101573089 B1 KR101573089 B1 KR 101573089B1 KR 1020107002399 A KR1020107002399 A KR 1020107002399A KR 20107002399 A KR20107002399 A KR 20107002399A KR 101573089 B1 KR101573089 B1 KR 101573089B1
Authority
KR
South Korea
Prior art keywords
memory
blocks
delete delete
addresses
block
Prior art date
Application number
KR1020107002399A
Other languages
English (en)
Other versions
KR20100051804A (ko
Inventor
데이비드 에글레스톤
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20100051804A publication Critical patent/KR20100051804A/ko
Application granted granted Critical
Publication of KR101573089B1 publication Critical patent/KR101573089B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple 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

병렬 메모리 어레이들의 블록 어드레싱{BLOCK ADDRESSING FOR PARALLEL MEMORY ARRAYS}
본 발명의 실시예들은 일반적으로 집적 회로들에 관한 것이다. 구체적으로, 본 발명의 실시예들은 메모리 회로들에 관한 것이다.
반도체 메모리 장치들은 디지털 전자 장치들 내에 편재한다. 이러한 장치들의 예는 컴퓨터, 카메라, 디지털 매체 재생기, 게임기, 개인용 휴대 단말기, 이동 전화, 네비게이션 장치, 비휘발성 저장 장치 제품 등을 포함한다. 비휘발성 저장 장치 제품들의 예는 컴팩트 플래시(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는 메모리 맵들의 예들을 나타낸다.
본 명세서에 특정 실시예들이 설명되지만, 여기에 설명되는 모든 이익들 및 특징들을 제공하지는 않는 실시예들을 포함하는 본 발명의 다른 실시예들은 이 분야의 통상의 기술자들에게 명백할 것이다.
본 발명의 일 실시예는, 둘 이상의 메모리 어레이의 양호한 블록들로부터의 데이터 페이지들과 같은 데이터가 속도를 위해 교대 방식으로 기입 또는 판독될 수 있거나, 비교적 넓은 데이터 채널들에 데이터를 제공하기 위해 병렬로 기입 또는 판독될 수 있도록 하기 위해, 둘 이상의 메모리 어레이의 블록들의 연관 맵핑을 제공한다. 예를 들어, 이것은 상이한 행들 사이에 퍼져 있는 관련 데이터에 액세스하기 위한 제어기 중재를 없애며, 구성될 경우에, 둘 이상의 어레이로부터 데이터를 교대 판독하는 능력을 제공함으로써 데이터의 처리량을 증가시킬 수 있다. 예를 들어, 하나의 어레이로부터의 데이터가 캐시에 로딩되고 있는 동안, 캐시에 이미 로딩된 다른 어레이로부터의 데이터가 판독될 수 있다. 일례에서, 맵핑된 블록들은 플래시 장치의 최소의 소거 가능 엔티티에 대응한다. 다른 예에서, 맵핑된 블록들은 비교적 많은 수의 메모리 셀들에 대응한다. 또한, 어레이의 비교적 적은 수의 양호한 블록들이 사용되지 않게 된다.
도 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 (39)

  1. 둘 이상의 상이한 메모리 어레이 사이에 퍼져있는 데이터의 매칭되는 블록들에 대한 액세스를 구성하기 위한 장치로서,
    프로세서로부터 생성되는 논리 어드레스들의 적어도 블록 부분을 수신하도록 구성되는 어드레스 변환기 - 상기 블록 부분은 메모리의 블록들을 선택하기 위한 어드레스 범위에 대응하고, 상기 블록들은 플래시 메모리의 소거 가능한 유닛들에 대응하고, 상기 어드레스 변환기는 수신된 논리 어드레스들의 적어도 수신된 블록 부분을 변경하여 제1의 변경된 어드레스들 또는 제2의 변경된 어드레스들 중 적어도 하나를 생성하도록 구성되고, 상기 제1의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제1 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제2의 변경된 어드레스들은 상기 둘 이상의 메모리 어레이 중 제2 메모리 어레이에 대한 메모리 블록들의 선택을 위한 것이고, 상기 제1의 변경된 어드레스들 및 상기 제2의 변경된 어드레스들은, 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이의 매칭되는 블록들로부터의 데이터의 페이지들이 상이한 물리 어드레스들을 갖더라도 별개의 액세스들 없이 액세스되도록 상기 논리 어드레스의 블록 부분에 대한 동일한 논리 어드레스를 이용하여 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이의 매칭되는 블록들을 각각 선택하도록 구성되고, 상기 상이한 물리 어드레스들은 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이의 상이한 행들에 대응함 -;
    상기 어드레스 변환기와 통신하여, 상기 제1의 변경된 어드레스들을 수신하고, 상기 제1 메모리 어레이에 결합되는 제1 행 디코더;
    상기 어드레스 변환기와 통신하여, 상기 제2의 변경된 어드레스들을 수신하고, 상기 제2 메모리 어레이에 결합되며, 상기 제1 행 디코더와 별개인 제2 행 디코더; 및
    매칭된 블록들의 페이지들로 또는 그로부터 데이터를 전송하기 위한 하나 이상의 캐시 레지스터들 - 상기 하나 이상의 캐시 레지스터가 속도를 위해 데이터의 페이지들을 사전 로딩하면서, 하나의 메모리 어레이로부터의 데이터의 페이지가 기입되거나 또는 판독되고, 그 후 또 다른 메모리 어레이로부터의 매칭되는 블록으로부터의 데이터의 페이지가 기입되거나 또는 판독되도록 교대하는 방식으로 데이터의 페이지들이 액세스되며, 상기 매칭되는 블록들이 상이한 물리적 어드레스들을 갖는 행들을 포함할 때에도 상기 교대하는 방식으로 데이터가 액세스됨 -
    를 포함하는 장치.
  2. 제1항에 있어서, 상기 어드레스 변환기는 적어도 하나의 탐색(lookup) 테이블을 포함하는 장치.
  3. 제1항에 있어서, 상기 어드레스 변환기, 상기 제1 행 디코더, 상기 제2 행 디코더, 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이는 집적 회로 내에 구현되는 장치.
  4. 제1항에 있어서, 상기 어드레스 변환기는 상기 수신된 논리 어드레스들을 상기 둘 이상의 메모리 어레이의 각각에 대한 변경된 어드레스들로 변환하도록 더 구성되는 장치.
  5. 제1항에 있어서, 상기 둘 이상의 메모리 어레이에 대한 NAND 플래시의 둘 이상의 메모리 어레이를 더 포함하는 장치.
  6. 제1항에 있어서, 상기 어드레스 변환기는 프로그래밍가능한 장치.
  7. 제1항에 있어서, 상기 어드레스 변환기의 적어도 일부는 상기 제1 메모리 어레이 또는 상기 제2 메모리 어레이에 대한 프로그래밍가능한 행 디코더로서 구현되는 장치.
  8. 제1항에 있어서, 상기 장치는 메모리 장치 외부의 제어기 내에 구현되는 장치.
  9. 제1항에 있어서, 상기 장치는 메모리 장치 내에 구현되는 장치.
  10. 제1항에 있어서, 상기 어드레스 변환기는 상기 제1 및 제2 메모리 어레이들의 불량 블록들을 논리 블록 어드레스들의 범위의 끝에 있는 논리 블록 어드레스들과 연관시키도록 더 구성되는 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
KR1020107002399A 2007-07-03 2008-06-30 병렬 메모리 어레이들의 블록 어드레싱 KR101573089B1 (ko)

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 KR20100051804A (ko) 2010-05-18
KR101573089B1 true 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747660B2 (en) 2017-12-22 2020-08-18 SK Hynix Inc. Method and system for forming and using memory superblocks based on performance grades

Families Citing this family (40)

* Cited by examiner, † Cited by third party
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
KR101111615B1 (ko) * 2010-06-01 2012-02-15 서울통신기술 주식회사 휴대용 단말기의 프로그램 업데이트 장치 및 방법
JP5559616B2 (ja) 2010-06-17 2014-07-23 ラピスセミコンダクタ株式会社 半導体メモリ装置
KR20120003283A (ko) * 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
KR101293223B1 (ko) * 2011-04-01 2013-08-05 (주)아토솔루션 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법
KR101293226B1 (ko) * 2011-06-30 2013-08-05 (주)아토솔루션 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법
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
US10261876B2 (en) * 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
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 에스케이하이닉스 주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
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 キオクシア株式会社 メモリシステム、制御方法およびメモリコントローラ

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US20060083096A1 (en) * 2004-10-05 2006-04-20 Yang Joong S Semiconductor memory device and package thereof, and memory card using the same

Family Cites Families (28)

* Cited by examiner, † Cited by third party
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
KR100608592B1 (ko) * 2004-01-27 2006-08-03 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
JP4135680B2 (ja) * 2004-05-31 2008-08-20 ソニー株式会社 半導体記憶装置および信号処理システム
JP4492218B2 (ja) * 2004-06-07 2010-06-30 ソニー株式会社 半導体記憶装置
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 삼성전자주식회사 데이터 버스트 주파수를 증가시킬 수 있는 원낸드 플래시메모리 장치
ATE518190T1 (de) * 2005-12-09 2011-08-15 Sandisk Il Ltd Verfahren zur flash-speicher-verwaltung
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US20060083096A1 (en) * 2004-10-05 2006-04-20 Yang Joong S Semiconductor memory device and package thereof, and memory card using the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747660B2 (en) 2017-12-22 2020-08-18 SK Hynix Inc. Method and system for forming and using memory superblocks based on performance grades

Also Published As

Publication number Publication date
TW200910088A (en) 2009-03-01
WO2009006442A1 (en) 2009-01-08
CN101772810A (zh) 2010-07-07
US9436609B2 (en) 2016-09-06
TWI376601B (en) 2012-11-11
CN101772810B (zh) 2013-03-27
KR20100051804A (ko) 2010-05-18
US20090013148A1 (en) 2009-01-08
US20150220441A1 (en) 2015-08-06

Similar Documents

Publication Publication Date Title
KR101573089B1 (ko) 병렬 메모리 어레이들의 블록 어드레싱
US7567466B2 (en) Non-volatile memory with redundancy data buffered in remote buffer circuits
US7224605B1 (en) Non-volatile memory with redundancy data buffered in data latches for defective locations
US7352635B2 (en) Method for remote redundancy for non-volatile memory
US7394690B2 (en) Method for column redundancy using data latches in solid-state memories
US6728860B2 (en) Address mapping in solid state storage device
US20060291283A1 (en) Redundant memory content substitution apparatus and method
JP4492218B2 (ja) 半導体記憶装置
US20240126701A1 (en) Methods of memory address verification and memory devices employing the same
US10185662B2 (en) Methods for reprogramming data and apparatuses using the same
US6525987B2 (en) Dynamically configured storage array utilizing a split-decoder
US20080288813A1 (en) Method for repairing a neighborhood of rows in a memory array using a patch table
EP2002447B1 (en) Non-volatile memory and method with redundancy data buffered in remote buffer circuits
KR101363965B1 (ko) 결함 위치들에 대한 데이터 래치들에 용장 데이터가 버퍼되는 비휘발성 메모리 및 방법

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