KR20210003957A - 데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치 - Google Patents

데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치 Download PDF

Info

Publication number
KR20210003957A
KR20210003957A KR1020207037788A KR20207037788A KR20210003957A KR 20210003957 A KR20210003957 A KR 20210003957A KR 1020207037788 A KR1020207037788 A KR 1020207037788A KR 20207037788 A KR20207037788 A KR 20207037788A KR 20210003957 A KR20210003957 A KR 20210003957A
Authority
KR
South Korea
Prior art keywords
memory
data
physical
logical block
block addresses
Prior art date
Application number
KR1020207037788A
Other languages
English (en)
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 KR20210003957A publication Critical patent/KR20210003957A/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/7211Wear leveling

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 개시는 데이터의 2개의 부분을 갖는 메모리에서 데이터 재배치를 위한 장치, 방법 및 시스템을 포함한다. 일 실시형태는 메모리 셀의 복수의 물리 블록을 갖는 메모리, 및 관련된 제1 및 제2 수의 논리 블록 어드레스를 각각 갖는 데이터의 제1 및 제2 부분을 포함한다. 셀의 복수의 물리 블록 중 2개는 그 안에 데이터가 저장되지 않는다. 회로는 제1 수의 논리 블록 어드레스 중 하나와 관련된 제1 부분의 데이터를, 데이터가 저장되지 않은 셀의 2개의 물리 블록 중 하나에 재배치하는 것, 제2 수의 논리 블록 어드레스 중 하나와 관련된 제2 부분의 데이터를, 데이터가 저장되지 않은 셀의 2개의 물리 블록 중 다른 하나에 재배치하는 것을 수행하도록 구성된다.

Description

데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치
본 개시는 일반적으로 반도체 메모리 및 방법에 관한 것으로, 더욱 특히 데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 다른 전자 디바이스의 내부 디바이스, 반도체 디바이스, 집적 회로 디바이스 및/또는 외부 착탈식 디바이스로서 제공된다. 휘발성 및 비휘발성 메모리를 포함한 많은 다른 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하기 위한 전력을 필요로 할 수 있으며, 랜덤 액세스 메모리(Random-Access Memory: RAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM) 및 동기식 동적 랜덤 액세스 메모리(Synchronous Dynamic Random Access Memory: SDRAM)를 포함할 수 있다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있으며, 그 중에서도 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(read only memory)(ROM) 및 저항 가변 메모리(resistance variable memory), 예를 들어 위상 변화 랜덤 액세스 메모리(phase change random access memory)(PCRAM), 저항 랜덤 액세스 메모리(resistive random access memory)(RRAM) 및 자기 랜덤 액세스 메모리(magnetic random access memory)(MRAM)를 포함할 수 있다.
메모리 디바이스는 함께 결합되어 솔리드 스테이트 드라이브(Solid State Drive)(SSD), 임베디드 멀티미디어카드(embedded MultiMediaCard)(e.MMC) 및/또는 범용 플래시 스토리지(Universal Flash Storage)(UFS) 디바이스를 형성할 수 있다. SSD, e.MMC 및/또는 UFS 디바이스는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서, 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고, 및/또는 휘발성 메모리(예를 들어, DRAM 및/또는 SDRAM)를 포함할 수 있다. 비휘발성 메모리는 특히 퍼스널 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 셀룰러 텔레폰, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어 등의 광범위한 전자 애플리케이션에 사용될 수 있다.
플래시 메모리 디바이스는, 예를 들어 플로팅 게이트와 같은 전하 저장 구조에 데이터를 저장하는 메모리 셀을 포함할 수 있다. 플래시 메모리는 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소비를 허용하는 하나의 트랜지스터 메모리 셀(one-transistor memory cell)을 사용한다. 저항 가변 메모리 디바이스는 저장 요소(예를 들어, 가변 저항을 갖는 저항 메모리 요소)의 저항 상태에 기초하여 데이터를 저장할 수 있는 저항 메모리 셀을 포함할 수 있다.
메모리 셀은 어레이로 배열될 수 있으며, 어레이 아키텍처의 메모리 셀은 타겟(예를 들어, 원하는) 상태로 프로그래밍될 수 있다. 예를 들어, 플래시 메모리 셀을 특정 데이터 상태로 프로그래밍하기 위해 전하가 셀의 전하 저장 구조(예를 들어, 플로팅 게이트) 상에 배치되거나 그로부터 제거될 수 있다. 셀의 전하 저장 구조 상에 저장된 전하는 셀의 임계 전압(Vt)을 나타낼 수 있다. 플래시 메모리 셀의 상태는 셀의 전하 저장 구조에 저장된 전하(예를 들어, Vt)를 감지함으로써 결정될 수 있다.
추가 예로서, 저항 메모리 셀은 저항 메모리 요소의 저항 레벨을 변화시킴으로써 타겟 데이터 상태에 대응하는 데이터를 저장하도록 프로그래밍될 수 있다. 저항 메모리 셀은 양 또는 음의 전기 펄스(예를 들어, 양 또는 음 전압 또는 전류 펄스)와 같은 전기장 또는 에너지의 소스를 특정 기간 동안 셀에(예를 들어, 셀의 저항 메모리 요소에) 인가함으로써 타겟 데이터 상태(예를 들어, 특정 저항 상태에 대응함)로 프로그래밍될 수 있다. 저항 메모리 셀의 상태는 인가된 인터로게이션 전압(interrogation voltage)에 응답하는 셀을 통해 전류를 감지함으로써 결정될 수 있다. 셀의 저항 레벨에 기초하여 변경되는 감지된 전류는 셀의 상태를 나타낼 수 있다.
싱글 레벨 메모리 셀(single level memory cell)(SLC)은 2진 단위 1 또는 0으로 표현될 수 있는 2개의 상이한 데이터 상태 중 하나를 대상으로 프로그래밍될 수 있다. 일부 플래시 및 저항 메모리 셀은 3개 이상의 데이터 상태(예를 들어, 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110 및 1110) 중 하나를 대상으로 프로그래밍될 수 있다. 이러한 셀은 멀티 스테이스 메모리 셀(multi state memory cell), 멀티유닛 셀(multiunit cell) 또는 멀티레벨 셀(multilevel cell)(MLC)이라고 지칭될 수 있다. MLC는 각 셀이 둘 이상의 디지트(예를 들어, 둘 이상의 비트)를 나타낼 수 있기 때문에 메모리 셀의 수를 증가시키지 않고 고밀도 메모리를 제공할 수 있다.
도 1은 본 개시의 실시형태에 따른 다수의 물리 블록을 갖는 메모리 어레이의 일부 도면을 도시한다.
도 2는 본 개시의 실시형태에 따른 메모리 디바이스 형태의 장치 및 호스트를 포함하는 컴퓨팅 시스템의 블록도이다.
도 3은 본 개시의 실시형태에 따른 메모리에서 데이터 재배치 동작을 수행하기 위한 회로의 블록도이다.
도 4는 본 개시의 실시형태에 따른 메모리에서 수행되는 데이터 재배치 동작의 개념적인 예를 도시한다.
도 5a는 본 개시의 실시형태에 따른 메모리에서 수행되는 데이터 재배치 동작의 시퀀스의 개념적인 예를 도시한다.
도 5b는 본 개시의 실시형태에 따른 메모리에서 수행되는 데이터 재배치 동작의 시퀀스와 관련된 값의 표이다.
본 개시는 데이터의 2개의 부분을 갖는 메모리에서 데이터 재배치를 위한 장치, 방법 및 시스템을 포함한다. 일 실시형태는 메모리 셀의 복수의 물리 블록을 갖는 메모리, 및 관련된 제1 및 제2 수의 논리 블록 어드레스를 각각 갖는 데이터의 제1 및 제2 부분을 포함한다. 셀의 복수의 물리 블록 중 2개는 그 안에 데이터가 저장되지 않는다. 회로는 제1 수의 논리 블록 어드레스 중 하나와 관련된 제1 부분의 데이터를, 데이터가 저장되지 않은 셀의 2개의 물리 블록 중 하나에 재배치하는 것, 제2 수의 논리 블록 어드레스 중 하나와 관련된 제2 부분의 데이터를, 데이터가 저장되지 않은 셀의 2개의 물리 블록 중 다른 하나에 재배치하는 것을 수행하도록 구성된다.
웨어 레벨링 동작(wear-leveling operation)은 메모리의 하나의 물리 위치에 현재 저장되는 데이터를 메모리의 다른 물리 위치에 재배치하기 위한 동작을 포함 및/또는 지칭할 수 있다. 이러한 웨어 레벨링 동작을 수행하는 것은 메모리의 성능 향상(예를 들어, 속도 증가, 신뢰성 증가 및/또는 전력 소비 감소)을 가능하게 하고, 및/또는 메모리의 내구성(예를 들어, 수명) 증가를 가능하게 한다.
이전의 웨어 레벨링 동작은 테이블을 사용하여 메모리 내에 데이터를 재배치할 수 있다. 그러나, 이러한 테이블은 클 수 있고(예를 들어, 메모리에서 많은 양의 공간을 사용할 수 있고), 웨어 레벨링 동작을 느려지게 할 수 있다. 대조적으로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 데이터가 재배치되어 있는 물리 위치(예를 들어, 물리 블록)를 식별하는 데 사용하기 위해 대수 매핑(algebraic mapping)(예를 들어, 논리 어드레스와 물리 어드레스 간의 대수 매핑)을 유지할 수 있다. 따라서, 본 개시에 따른 데이터를 재배치하기 위한 동작은 이전의 웨어 레벨링 동작보다 메모리의 공간을 덜 사용할 수 있고, 더 고속일 수 있다.
또한, 메모리는 본 명세서에 추가로 설명되는 바와 같이 데이터의 2개의 상이한 부분(예를 들어, 논리 영역)을 포함할 수 있다(예를 들어, 그 부분으로 분리 및/또는 분할될 수 있다). 이러한 경우, 이전의 웨어 레벨링 동작은 메모리의 각각의 부분에 독립적으로 적용되어야 할 수도 있고(예를 들어, 개별 동작이 각각의 부분마다 사용될 필요가 있을 수 있고), 각각의 부분의 데이터는 메모리의 분율에 걸쳐서만 재배치될 수 있다(예를 들어, 각각의 부분의 데이터는 메모리의 개별 물리 영역에 남아있을 수 있다). 그러나, 이러한 접근법은 메모리의 성능 및/또는 내구성을 향상시키는 데 효과적이지 않을 수 있다. 예를 들어, 2개의 상이한 논리 영역의 크기 및/또는 그에 대한 워크로드가 다를 수 있으므로, 이러한 접근법에서는 물리 영역 중 하나가 다른 것보다 더 많은 스트레스를 받을 수 있다.
대조적으로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 이전의 웨어 레벨링 동작보다 2개의 상이한 부분을 포함하는 메모리 상에서 더 효과적으로 작동할 수 있다(예를 들어, 성능 및/또는 내구성을 증가시킬 수 있다). 예를 들어, 본 개시에 따른 데이터를 재배치하기 위한 동작은 메모리의 각각의 부분에 동시에 적용될 수 있다(예를 들어, 동일한 동작이 양쪽 부분에서 사용될 수 있다). 또한, 각각의 부분의 데이터는 전체 메모리에 걸쳐 재배치될 수 있다(예를 들어, 각각의 부분의 데이터는 메모리의 모든 상이한 물리 위치에 걸쳐 슬라이딩할 수 있다). 따라서, 본 개시에 따른 데이터를 재배치하기 위한 동작은 2개의 부분의 크기 및/또는 워크로드의 차이를 고려(예를 들어, 보상)할 수 있다.
또한, 이전의 웨어 레벨링 동작은 하드웨어로 구현 가능하지 않을 수 있다. 대조적으로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 하드웨어로 구현 가능(예를 들어, 완전히 구현 가능)할 수 있다. 예를 들어, 본 개시에 따른 데이터를 재배치하기 위한 동작은 메모리의 컨트롤러로, 또는 메모리 자체 내에서 구현 가능할 수 있다. 따라서, 본 개시에 따른 데이터를 재배치하기 위한 동작은 메모리의 레이턴시에 영향을 미치지 않을 수 있고, 메모리에 추가적인 오버헤드를 부가하지 않을 수 있다.
실시형태가 특정 유형의 메모리 또는 메모리 디바이스에 한정되지 않지만, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 스토리지 클래스 메모리(storage class memory)일 수 있는 제1 메모리 어레이 및 NAND 플래시 메모리일 수 있는 다수의 제2 메모리 어레이를 포함하는 하이브리드 메모리 디바이스 상에서 수행(예를 들어, 실행)될 수 있다. 예를 들어, 동작은 하이브리드 메모리의 성능 및/또는 내구성을 향상시키기 위해 제1 메모리 어레이 및/또는 다수의 제2 메모리 어레이 상에서 수행될 수 있다.
본 명세서에 사용된 바와 같이, 단수("a", "an"), 또는 "다수의"는 하나 이상의 어떤 것을 지칭할 수 있고, "복수의"는 하나 이상의 이러한 것을 지칭할 수 있다. 예를 들어, 메모리 디바이스는 하나 이상의 메모리 디바이스를 지칭할 수 있고, 복수의 메모리 디바이스는 2개 이상의 메모리 디바이스를 지칭할 수 있다. 또한, 특히 도면에서 참조 번호와 관련하여 본 명세서에 사용된 지시자 "R", "B", "S" 및 "N"은 이렇게 지정된 다수의 특정 특징부가 본 개시의 다수의 실시형태에 포함될 수 있음을 나타낸다.
본 명세서의 도면은, 제1 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면의 요소 또는 구성 요소를 식별하는 번호 부여 규칙을 따른다. 상이한 도면들 간의 유사한 요소 또는 구성 요소는 유사한 숫자의 사용에 의해 식별될 수 있다. 예를 들어, 214는 도 2에서 요소 "14"를 언급할 수 있고, 유사한 요소가 도 3에서는 314로서 언급될 수 있다.
도 1은 본 개시의 실시형태에 따른 다수의 물리 블록을 갖는 메모리 어레이(101)의 일부 도면을 도시한다. 메모리 어레이(101)는, 예를 들어 NAND 플래시 메모리 어레이일 수 있다. 추가 예로서, 메모리 어레이(101)는, 그 중에서도, 예를 들어 3D XPoint 메모리 어레이, 강유전성 RAM(FRAM) 어레이, 또는 PCRAM, RRAM, 또는 스핀 토크 전달(spin torque transfer)(STT) 어레이와 같은 저항 가변 메모리 어레이 등의 스토리지 클래스 메모리(SCM) 어레이일 수 있다. 메모리 어레이(101)는 (예를 들어, 도 2와 관련하여) 본 명세서에 추가로 설명되는 바와 같이 하이브리드 메모리의 일부일 수 있다. 또한, 도 1에는 나타내지 않았지만, 메모리 어레이(101)는 그 동작과 관련된 다양한 주변 회로와 함께 특정 반도체 다이 상에 배치될 수 있다.
도 1에 나타낸 바와 같이, 메모리 어레이(101)는 메모리 셀의 다수의 물리 블록(107-0(BLOCK 0), 107-1(BLOCK 1), …, 107-B(BLOCK B))을 갖는다. 메모리 셀은 싱글 레벨 셀 및/또는 예를 들어, 2 레벨 셀, 3 레벨 셀(TLC) 또는 4 레벨 셀(QLC)과 같은 멀티레벨 셀일 수 있다. 일례로서, 메모리 어레이(101) 내의 물리 블록의 수는 128 블록, 512 블록 또는 1,024 블록일 수 있지만, 실시형태는 메모리 어레이(101) 내의 특정의 2의 제곱 또는 임의의 특정 수의 물리 블록에 한정되지 않는다.
메모리 셀의 다수의 물리 블록(예를 들어, 블록(107-0, 107-1, …, 107-B))이 메모리 셀의 평면에 포함될 수 있으며, 메모리 셀의 다수의 평면이 다이에 포함될 수 있다. 예를 들어, 도 1에 나타낸 예에서, 각 물리 블록(107-0, 107-1, …, 107-B)은 단일 다이의 일부일 수 있다. 즉, 도 1에 도시된 메모리 어레이(101)의 일부는 메모리 셀의 다이일 수 있다.
도 1에 나타낸 바와 같이, 각 물리 블록(107-0, 107-1, …, 107-B)은 액세스 라인(예를 들어, 워드 라인)에 결합된 메모리 셀의 다수의 물리 행(예를 들어, 103-0, 103-1, …, 103-R)을 포함한다. 각 물리 블록 내의 행(예를 들어, 워드 라인)의 수는 32일 수 있지만, 실시형태는 물리 블록당 특정 수의 행(103-0, 103-1, …, 103-R)에 한정되지 않는다. 또한, 도 1에는 나타내지 않았지만, 메모리 셀은 감지 라인(예를 들어, 데이터 라인 및/또는 디지트 라인)에 결합될 수 있다.
당업자가 이해할 수 있는 바와 같이, 각 행(103-0, 103-1, …, 103-R)은 메모리 셀의 다수의 페이지(예를 들어, 물리 페이지)를 포함할 수 있다. 물리 페이지는 프로그래밍 및/또는 감지하는 단위(예를 들어, 기능 그룹으로서 함께 프로그래밍 및/또는 감지되는 다수의 메모리 셀)를 지칭한다. 도 1에 나타낸 실시형태에서, 각 행(103-0, 103-1, …, 103-R)은 메모리 셀의 하나의 물리 페이지를 포함한다. 그러나, 본 개시의 실시형태는 이에 한정되지 않는다. 예를 들어, 일 실시형태에서, 각 행은 메모리 셀의 다수의 물리 페이지(예를 들어, 짝수 비트 라인에 결합된 메모리 셀의 하나 이상의 짝수 페이지, 및 홀수 비트 라인에 결합된 메모리 셀의 하나 이상의 홀수 페이지)를 포함할 수 있다. 또한, 멀티레벨 셀을 포함하는 실시형태의 경우, 메모리 셀의 물리 페이지는 데이터의 다수의 페이지(예를 들어, 논리 페이지)(예를 들어, 데이터의 상위 페이지 및 데이터의 하위 페이지, 물리 페이지 내의 각 셀이 데이터의 상위 페이지로 향하는 하나 이상의 비트 및 데이터의 하위 페이지로 향하는 하나 이상의 비트를 저장함)를 저장할 수 있다.
본 개시의 실시형태에서, 그리고 도 1에 나타낸 바와 같이, 메모리 셀의 페이지는 다수의 물리 섹터(105-0, 105-1, …, 105-S)(예를 들어, 메모리 셀의 서브세트)를 포함할 수 있다. 셀의 각 물리 섹터(105-0, 105-1, …, 105-S)는 데이터의 다수의 논리 섹터를 저장할 수 있다. 또한, 데이터의 각 논리 섹터는 데이터의 특정 페이지의 일부에 대응할 수 있다. 일례로서, 특정 물리 섹터에 저장된 데이터의 제1 논리 섹터는 데이터의 제1 페이지에 대응하는 논리 섹터에 대응할 수 있고, 특정 물리 섹터에 저장된 데이터의 제2 논리 섹터는 데이터의 제2 페이지에 대응할 수 있다. 각 물리 섹터(105-0, 105-1, …, 105-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있고, 및/또는 에러 정정 코드(ECC) 데이터, 논리 블록 어드레스(LBA) 데이터 및 메타데이터와 같은 오버헤드 데이터를 포함할 수 있다.
논리 블록 어드레싱은 데이터의 논리 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 체계(scheme)이다. 예를 들어, 각 논리 섹터는 고유한 논리 블록 어드레스(LBA)에 대응할 수 있다. 추가적으로, LBA는 또한 메모리에서 데이터의 해당 논리 섹터의 물리 위치를 표시할 수 있는 물리 블록 어드레스(PBA)와 같은 물리 어드레스에 대응(예를 들어, 동적으로 매핑)할 수 있다. 데이터의 논리 섹터는 데이터의 다수의 바이트(예를 들어, 256바이트, 512바이트, 1,024바이트, 또는 4,096바이트)일 수 있다. 그러나, 실시형태는 이들 예에 한정되지 않는다. 또한, 본 개시의 일 실시형태에서, 메모리 어레이(101)는 (예를 들어, 도 2와 관련하여) 본 명세서에 추가로 설명되는 바와 같이 관련된 제1 수의 LBA를 갖는 데이터의 제1 논리 영역 및 관련된 제2 수의 LBA를 갖는 데이터의 제2 논리 영역으로 분리 및/또는 분할될 수 있다.
물리 블록(107-0, 107-1, …, 107-B), 행(103-0, 103-1, …, 103-R), 섹터(105-0, 105-1, …, 105-S) 및 페이지에 대한 다른 구성이 가능함에 유의해야 한다. 예를 들어, 물리 블록(107-0, 107-1, …, 107-B)의 행(103-0, 103-1, …, 103-R)은, 예를 들어 데이터의 512 초과 또는 미만의 바이트를 포함할 수 있는 단일 논리 섹터에 대응하는 데이터를 각각 저장할 수 있다.
도 2는 본 개시의 실시형태에 따른 메모리 디바이스(206) 형태의 장치 및 호스트(202)를 포함하는 컴퓨팅 시스템(200)의 블록도이다. 본 명세서에 사용된 바와 같이, "장치"는, 예를 들어 회로 또는 회로망, 다이 또는 다이스, 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 다양한 구조 또는 구조들의 조합 중 임의의 것을 지칭할 수 있지만, 이에 한정되지 않는다. 또한, 일 실시형태에서, 컴퓨팅 시스템(200)은 메모리 디바이스(206)와 유사한 다수의 메모리 디바이스를 포함할 수 있다.
도 2에 도시된 실시형태에서, 메모리 디바이스(206)는 제1 유형의 메모리(예를 들어, 제1 메모리 어레이(210)) 및 제2 유형의 메모리(예를 들어, 다수의 제2 메모리 어레이(212-1, …, 212-N))를 포함할 수 있다. 메모리 디바이스(206)는 하이브리드 메모리 디바이스일 수 있으며, 여기서 메모리 디바이스(206)는 다수의 제2 메모리 어레이(212-1, …, 212-N)와는 다른 유형의 메모리인 제1 메모리 어레이(210)를 포함한다. 제1 메모리 어레이(210)는, 제2 수의 메모리 어레이(212-1, …, 212-N)보다 더 빠른 액세스 시간을 갖기 때문에 메모리 디바이스(206)에 대한 메인 메모리로서 기능하는 비휘발성 메모리일 수 있는 스토리지 클래스 메모리(SCM)일 수 있다. 예를 들어, 제1 메모리 어레이(210)는 특히 3D XPoint 메모리, FRAM, 또는 PCRAM, RRAM 또는 STT와 같은 저항 가변 메모리일 수 있다. 제2 수의 메모리 어레이(212-1, …, 212-N)는 메모리 디바이스(206)에 대한 데이터 저장소(예를 들어, 스토리지 메모리)로서 기능할 수 있고, 다른 유형의 메모리 중에서 NAND 플래시 메모리일 수 있다.
도 2에 도시된 실시형태가 제1 유형의 메모리의 하나의 메모리 어레이를 포함하지만, 본 개시의 실시형태는 이에 한정되지 않는다. 예를 들어, 일 실시형태에서, 메모리 디바이스(206)는 다수의 SCM 어레이를 포함할 수 있다. 그러나, 메모리 디바이스(206)는 제2 유형의 메모리보다 적은 제1 유형의 메모리를 포함할 수 있다. 예를 들어, 메모리 어레이(210)는 메모리 어레이(212-1, …, 212-N)에 저장되는 것보다 적은 데이터를 저장할 수 있다.
메모리 어레이(210) 및 메모리 어레이(212-1, …, 212-N)는 각각 도 1과 관련하여 전술한 메모리 어레이(101)와 유사한 방식으로 메모리 셀의 복수의 물리 블록을 가질 수 있다. 또한, 메모리(예를 들어, 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N))는 데이터의 2개의 상이한 부분(예를 들어, 논리 영역)을 포함할 수 있다(예를 들어, 그 부분으로 분리 및/또는 분할될 수 있다). 예를 들어, 메모리는 관련된 제1 수(예를 들어, 제1 수량)의 논리 블록 어드레스(LBA)를 갖는 데이터의 제1 부분, 및 관련된 제2 수(예를 들어, 제2 수량)의 LBA를 갖는 데이터의 제2 부분을 포함할 수 있다. 제1 수의 LBA는, 예를 들어 LBA의 제1 시퀀스를 포함할 수 있고, 제2 수의 LBA는, 예를 들어 LBA의 제2 시퀀스를 포함할 수 있다.
예를 들어, 데이터의 제1 부분은 사용자 데이터를 포함할 수 있고, 데이터의 제2 부분은 시스템 데이터를 포함할 수 있다. 추가 예로서, 데이터의 제1 부분은 메모리 상에서 수행되는 프로그램 및/또는 감지 동작 동안 특정 주파수 또는 그 이상에서 액세스되어 있는 데이터(예를 들어, 관련 LBA가 액세스되어 있는 데이터)를 포함할 수 있고, 데이터의 제2 부분은 메모리 상에서 수행되는 프로그램 및/또는 감지 동작 동안 특정 주파수 아래에서 액세스되어 있는 데이터(예를 들어, 관련 LBA가 액세스되어 있는 데이터)를 포함할 수 있다. 이러한 예에서, 데이터의 제1 부분은 "핫(hot)" 데이터로 분류된 데이터를 포함할 수 있고, 데이터의 제2 부분은 "콜드(cold)" 데이터로 분류된 데이터를 포함할 수 있다. 추가 예로서, 데이터의 제1 부분은 운영 체제 데이터(예를 들어, 운영 체제 파일)를 포함할 수 있고, 데이터의 제2 부분은 멀티미디어 데이터(예를 들어, 멀티미디어 파일)를 포함할 수 있다. 이러한 예에서, 데이터의 제1 부분은 "중요한(critical)" 데이터로 분류된 데이터를 포함할 수 있고, 데이터의 제2 부분은 "중요하지 않은(non-critical)" 데이터로 분류된 데이터를 포함할 수 있다.
제1 및 제2 수의 LBA는 동일할 수 있거나(예를 들어, 데이터의 제1 및 제2 부분이 동일한 크기일 수 있거나), 제1 수의 LBA는 제2 수의 LBA와 다를 수 있다(예를 들어, 데이터의 제1 부분과 데이터의 제2 부분의 크기가 다를 수 있다). 예를 들어, 제1 수의 LBA는 제2 수의 LBA보다 클 수 있다(예를 들어, 데이터의 제1 부분의 크기가 데이터의 제2 부분의 크기보다 클 수 있다). 또한, 제1 수의 LBA의 각각의 것의 크기는 제2 수의 LBA의 각각의 것의 크기와 동일할 수 있거나, 제1 수의 LBA의 각각의 것의 크기는 제2 수의 LBA의 각각의 것의 크기와 다를 수 있다. 예를 들어, 제1 수의 LBA의 각각의 것의 크기는 제2 수의 LBA의 각각의 것의 크기의 배수일 수 있다. 또한, 메모리의 각각의 부분과 관련된 LBA는 랜덤화될 수 있다. 예를 들어, LBA는 정적 랜덤화기(static randomizer)에 의해 처리될 수 있다.
일 실시형태에서, 메모리의 복수의 물리 블록 중 적어도 2개는 그 안에 유효 데이터가 저장되지 않을 수 있다. 예를 들어, 메모리의 물리 블록 중 2개는 블랭크일 수 있다. 이들 물리 블록은 메모리 내의 데이터의 제1 부분과 데이터의 제2 부분을 분리할 수 있다(예를 들어, 이들 사이에 있을 수 있다). 예를 들어, 이들 2개의 물리 블록 중 제1 블록은 데이터의 제1 부분 뒤와 데이터의 제2 부분 앞에 있을 수 있고, 2개의 물리 블록 중 제2 블록은 제2 부분 뒤와 제1 부분 앞에 있을 수 있다. 이들 물리 블록은 본 명세서에서 분리 블록이라고 지칭될 수 있다. 2개의 이러한 분리 블록에 의해 분리된 2개의 상이한 데이터 부분을 갖는 메모리를 도시하는 예가 (예를 들어, 도 4와 관련하여) 본 명세서에 추가로 설명될 것이다.
도 2에 도시된 바와 같이, 호스트(202)는 인터페이스(204)를 통해 메모리 디바이스(206)에 결합될 수 있다. 호스트(202) 및 메모리 디바이스(206)는 인터페이스(204) 상에서 통신(예를 들어, 커맨드 및/또는 데이터를 전송)할 수 있다. 호스트(202)는 다른 호스트 시스템 중에서 랩톱 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 디바이스, 모바일 텔레폰, PDA, 메모리 카드 판독기 또는 인터페이스 허브일 수 있으며, 메모리 액세스 디바이스(예를 들어, 프로세서)를 포함할 수 있다. 당업자는 "프로세서"가 병렬 프로세싱 시스템, 다수의 코프로세서 등과 같은 하나 이상의 프로세서를 의도할 수 있음을 이해할 것이다.
인터페이스(204)는 표준화된 물리 인터페이스의 형태일 수 있다. 예를 들어, 메모리 디바이스(206)가 컴퓨팅 시스템(200)에 정보 저장을 위해 사용될 때, 인터페이스(204)는 다른 물리 커넥터 및/또는 인터페이스 중에서도 SATA(Serial Advanced Technology Attachment) 물리 인터페이스, PCIe(Peripheral Component Interconnect Express) 물리 인터페이스, USB(Universal Serial Bus) 물리 인터페이스, 또는 SCSI(small computer system interface)일 수 있다. 그러나, 일반적으로, 인터페이스(204)는 메모리 디바이스(206)와 인터페이스(204)에 대해 호환 가능한 리셉터를 갖는 호스트(예를 들어, 호스트(202)) 사이에서 제어, 어드레스, 정보(예를 들어, 데이터) 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 디바이스(206)는 호스트(202)와, 그리고 제1 메모리 어레이(210) 및 다수의 제2 메모리 어레이(212-1, …, 212-N)와 통신하기 위한 컨트롤러(208)를 포함한다. 컨트롤러(208)는 제1 메모리 어레이(210) 및 다수의 제2 메모리 어레이(212-1, …, 212-N)에 대한 동작을 수행하기 위한 커맨드를 전송할 수 있다. 컨트롤러(208)는 제1 메모리 어레이(210) 및 다수의 제2 메모리 어레이(212-1, …, 212-N)와 통신하여, 다른 동작 중에서도 데이터를 감지(예를 들어, 판독), 프로그래밍(예를 들어, 기록), 이동 및/또는 소거할 수 있다.
컨트롤러(208)는 메모리(210 및 212-1, …, 212-N)와 동일한 물리 디바이스(예를 들어, 동일한 다이)에 포함될 수 있다. 대안적으로, 컨트롤러(208)는 메모리(210 및 212-1, …, 212-N)를 포함하는 물리 디바이스에 통신 가능하게 결합되는 별개의 물리 디바이스에 포함될 수 있다. 일 실시형태에서, 컨트롤러(208)의 구성요소는 분산형 컨트롤러로서 다수의 물리 디바이스(예를 들어, 메모리와 동일한 다이의 일부 구성요소, 및 다른 다이, 모듈 또는 보드의 일부 구성요소)에 걸쳐 분산될 수 있다.
호스트(202)는 메모리 디바이스(206)와 통신하기 위한 호스트 컨트롤러를 포함할 수 있다. 호스트 컨트롤러는 인터페이스(204)를 통해 메모리 디바이스(206)에 커맨드를 전송할 수 있다. 호스트 컨트롤러는 메모리 디바이스(206) 및/또는 메모리 디바이스(206) 상의 컨트롤러(208)와 통신하여, 다른 동작 중에서도 데이터를 판독, 기록 및/또는 소거할 수 있다.
메모리 디바이스(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 제어 회로 및/또는 로직(예를 들어, 하드웨어 및 펌웨어)을 포함할 수 있다. 일 실시형태에서, 메모리 디바이스(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 물리 인터페이스를 포함하는 인쇄 회로 기판에 결합된 ASIC(application specific integrated circuit)일 수 있다. 또한, 메모리 디바이스(206) 및/또는 호스트(202)는 휘발성 및/또는 비휘발성 메모리의 버퍼 및 다수의 레지스터를 포함할 수 있다.
예를 들어, 도 2에 나타낸 바와 같이, 메모리 디바이스는 회로(214)를 포함할 수 있다. 도 2에 도시된 실시형태에서, 회로(214)는 컨트롤러(208)에 포함된다. 그러나, 본 개시의 실시형태는 이에 한정되지 않는다. 예를 들어, 일 실시형태에서, 회로(214)는 (예를 들어, 컨트롤러(208) 대신에) 메모리(210) 및/또는 메모리(212-1, …, 212-N) 내에(예를 들어, 그와 동일한 다이 상에) 포함될 수 있다.
회로(214)는, 예를 들어 하드웨어를 포함할 수 있고, 본 개시에 따른 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N)에 저장된 데이터를 재배치하기 위한 웨어 레벨링 동작을 수행할 수 있다. 예를 들어, 회로(214)는 제1 수의 LBA 중 특정의 것과 관련된 데이터의 제1 부분의 데이터를 2개의 분리 블록 중 하나에 재배치할 수 있고, 제2 수의 LBA 중 특정의 것과 관련된 데이터의 제2 부분의 데이터를 2개의 분리 블록 중 다른 하나에 재배치할 수 있다.
예를 들어, 회로(214)는 제1 수의 LBA 중 최종의 것(예를 들어, LBA의 제1 시퀀스에서 최종 LBA)과 관련된 제1 부분의 데이터를 제2 분리 블록(예를 들어, 제2 부분 뒤와 제1 부분 앞에 있는 분리 블록)에 재배치할 수 있고, 회로(214)는 제2 수의 LBA 중 최종의 것(예를 들어, LBA의 제2 시퀀스에서 최종 LBA)과 관련된 제2 부분의 데이터를 제1 분리 블록(예를 들어, 제1 부분 뒤와 제2 부분 앞에 있는 분리 블록)에 재배치할 수 있다. 이러한 데이터 재배치는 메모리의 2개의 상이한 물리 블록이 그 안에 유효 데이터가 저장되지 않게 할 수 있다(예를 들어, 메모리의 2개의 상이한 물리 블록이 분리 블록이 되게 할 수 있다). 예를 들어, 제1 수의 LBA 중 최종의 것과 관련된 제1 부분의 데이터를 재배치하는 것은 상이한 물리 블록이 제2 부분 뒤와 제1 부분 앞에 있는 분리 블록이 되게 할 수 있고, 제2 수의 LBA 중 최종의 것과 관련된 제2 부분의 데이터를 재배치하는 것은 상이한 물리 블록이 제1 부분 뒤와 제2 부분 앞에 있는 분리 블록이 되게 할 수 있다. 또한, 제1 수의 LBA 중 최종의 것과 관련된 제1 부분의 데이터를 재배치하는 것은 제1 수의 LBA 중 다른 것(예를 들어, LBA의 제1 시퀀스에서 끝에서 두 번째 LBA)가 제1 수의 LBA 중 최종의 것이 되게 할 수 있고, 제2 수의 LBA 중 최종의 것과 관련된 제2 부분의 데이터를 재배치하는 것은 제2 수의 LBA 중 다른 것(예를 들어, LBA의 제2 시퀀스에서 끝에서 두 번째 LBA)가 제2 수의 LBA 중 최종의 것이 되게 할 수 있다. 이러한 데이터 재배치 동작을 도시하는 예가 (예를 들어, 도 3 및 도 4와 관련하여) 본 명세서에 추가로 설명될 것이다.
일 실시형태에서, 회로(214)는 트리거링 이벤트에 응답하여 데이터를 재배치하기 위한 동작을 수행할 수 있다. 트리거링 이벤트는, 예를 들어 메모리 상에서 수행되는(예를 들어, 실행되는), 예를 들어 100개의 프로그램 동작과 같은 특정 수의 프로그램 동작일 수 있다. 예를 들어, 카운터(도 2에는 미도시)는 수행되는 특정 수의 프로그램 동작에 응답하여 시작 신호를 전송하도록 구성될 수 있으며, 회로(214)는 카운터로부터 시작 신호를 수신하는 것에 응답하여 데이터를 재배치하기 위한 동작을 수행할 수 있다. 추가 예로서, 트리거링 이벤트는, 예를 들어 메모리 디바이스(206)가 활성 모드로부터 대기 모드, 유휴 모드 또는 파워다운(power-down) 모드로 이행하는 것과 같은 메모리에서 발생하는 전력 상태 전이일 수 있다.
일 실시형태에서, 제2 부분의 데이터는 제1 부분의 데이터가 재배치되는 즉시 재배치될 수 있다. 그러나, 일부 경우에, 호스트(202)에 의해 요청된 프로그램 또는 감지 동작과 같은 동작을 수행하기 위해 데이터를 재배치하기 위한 동작이 보류될 필요가 있을 수 있다. 이러한 경우, 호스트에 의해 요청된 동작은 제1 부분의 데이터가 재배치될 때(예를 들어, 데이터의 재배치가 완료될 때) 수행될 수 있고, 제2 부분의 데이터는 요청된 동작이 수행될 때(예를 들어, 동작이 완료될 때) 재배치될 수 있다.
데이터가 재배치되면, 회로(214)는 대수 매핑을 사용하여 데이터가 재배치되어 있는 메모리 내의 물리 위치를 식별할 수 있다. 예를 들어, 회로(214)는 대수 매핑(예를 들어, 대수 논리 대 물리 매핑(algebraic logical to physical mapping))을 사용하여, 제1 부분의 데이터가 재배치되어 있는 물리 블록의 메모리 내의 위치(예를 들어, PBA)(예를 들어, 제2 분리 블록의 위치), 및 메모리의 제2 부분의 데이터가 재배치되어 있는 물리 블록의 메모리 내의 위치(예를 들어, PBA)(예를 들어, 제1 분리 블록의 위치)를 식별(예를 들어, 컴퓨팅)할 수 있다. 예를 들어, 회로(214)는 대수 매핑을 사용하여, 재배치된 데이터를 감지하기 위한 동작 동안(예를 들어, 제1 수의 LBA 중 하나를 판독하기 위한 호스트(202)로부터의 요청을 수신할 때) 제1 부분의 데이터가 재배치되어 있는 물리 블록의 메모리 내의 위치를 식별하고, 재배치된 데이터를 감지하기 위한 동작 동안(예를 들어, 제2 수의 LBA 중 하나를 판독하기 위한 호스트(202)로부터의 요청을 수신할 때) 제2 부분의 데이터가 재배치되어 있는 물리 블록의 메모리 내의 위치를 식별할 수 있다. 이러한 대수 매핑은 (예를 들어, 도 3과 관련하여) 본 명세서에 추가로 설명될 것이다.
회로(214)는 메모리의 수명 전체에 걸쳐 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N)에 저장된 데이터를 추가로 재배치하기 위한 추가(예를 들어, 후속) 웨어 레벨링 동작을 수행할 수 있다. 예를 들어, 회로(214)는 추가(예를 들어, 후속) 트리거링 이벤트에 응답하여 데이터를 재배치하기 위한 추가(예를 들어, 후속) 동작을 수행할 수 있다.
예를 들어, 본 명세서에서 전술한 예시적인 동작에 후속하여 수행되는 메모리 내에 데이터를 재배치하기 위한 동작에 있어서, 회로(214)는 지금 최종의 것이 되는 제1 수의 LBA 중 다른 것(예를 들어, 이전에 LBA의 제1 시퀀스에서 끝에서 두 번째 LBA이었던 것)과 관련된 제1 부분의 데이터를 지금 제2 부분 뒤와 제1 부분 앞에 있는 분리 블록이 되는 다른 물리 블록에 재배치할 수 있고, 회로(214)는 지금 최종의 것이 되는 제2 수의 LBA 중 다른 것(예를 들어, 이전에 LBA의 제2 시퀀스에서 끝에서 두 번째 LBA이었던 것)과 관련된 제2 부분의 데이터를 지금 제1 부분 뒤와 제2 부분 앞에 있는 분리 블록이 되는 다른 물리 블록에 재배치할 수 있다. 이러한 데이터 재배치는 다시 한 번 메모리의 2개의 상이한 물리 블록이 분리 블록이 되게 하고, 제1 및 제2 수의 LBA 중 다른 것들이 각각 제1 및 제2 수의 LBA 중 최종의 것이 되게 할 수 있으며, 후속 데이터 재배치 동작이 유사한 방식으로 계속 수행될 수 있다. 이러한 후속 데이터 재배치 동작의 시퀀스를 도시하는 예가 (예를 들어, 도 5a 및 도 5b와 관련하여) 본 명세서에 추가로 설명될 것이다.
도 2에 도시된 실시형태는 본 개시의 실시형태를 모호하게 하지 않도록 도시되지 않은 추가 회로, 로직 및/또는 구성요소를 포함할 수 있다. 예를 들어, 메모리 디바이스(206)는 I/O 회로를 통한 I/O 커넥터를 통해 제공된 어드레스 신호를 래치하기 위한 어드레스 회로를 포함할 수 있다. 어드레스 신호는 메모리 어레이(210 및 212-1, …, 212-N)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신되고 디코딩될 수 있다. 또한, 메모리 디바이스(206)는, 예를 들어 메모리 어레이(210-1 및 212-1, …, 212-N)로부터 분리되고 및/또는 이에 추가되는 DRAM 또는 SDRAM과 같은 메인 메모리를 포함할 수 있다.
도 3은 본 개시의 실시형태에 따른 메모리에서 데이터 재배치 동작을 수행하기 위한 회로(314)의 블록도이다. 회로(314)는, 예를 들어 도 2와 관련하여 전술한 회로(214)일 수 있다.
도 3에 나타낸 바와 같이, 회로(314)는 4개의 레지스터(예를 들어, 제1 레지스터(320-1), 제2 레지스터(320-2), 제3 레지스터(320-3) 및 제4 레지스터(320-4))를 포함할 수 있다. 레지스터(320-1)는 제1 수의 LBA 중 첫 번째 것(예를 들어, LBA의 제1 시퀀스에서 제1 LBA)과 관련된 메모리의 제1 부분의 데이터에 대한 PBA를 나타내는(예를 들어, 지시하는) 값을 저장할 수 있다. 이 값은 본 명세서에서 "SA"라고 지칭될 수 있다.
레지스터(320-2)는 데이터가 저장되지 않은 메모리의 2개의 물리 블록 중 하나에 대한 PBA를 나타내는 값을 저장할 수 있고, 레지스터(320-3)는 데이터가 저장되지 않은 2개의 물리 블록 중 다른 하나에 대한 PBA를 나타내는 값을 저장할 수 있다. 예를 들어, 레지스터(320-2)는 데이터의 제1 부분 뒤와 데이터의 제2 부분 앞에 있는 물리 블록(예를 들어. 제1 분리 블록)에 대한 PBA를 나타내는 값을 저장할 수 있고, 레지스터(320-3)는 제2 부분 뒤와 및 제1 부분 앞에 있는 물리 블록(예를 들어, 제2 분리 블록)에 대한 PBA를 나타내는 값을 저장할 수 있다. 레지스터(320-2)에 의해 저장된 값은 본 명세서에서 "gA"라고 지칭될 수 있고, 레지스터(320-3)에 의해 저장된 값은 본 명세서에서 "gB"라고 지칭될 수 있다.
레지스터(320-4)는 메모리의 데이터의 제2 부분에서 제2 수의 LBA 중 첫 번째 것(예를 들어, LBA의 제2 시퀀스에서 제1 LBA)의 상대 위치를 나타내는 값을 저장할 수 있다. 이 값은 본 명세서에서 "rB"라고 지칭될 수 있다.
회로(314)는 레지스터(320-1, 320-2, 320-3 및 320-4)에 저장된 값(예를 들어, SA, gA, gB 및 rB)을 사용하여 본 개시에 따른 메모리에서의 데이터 재배치 동작을 수행할 수 있다. 예를 들어, 회로(314)는 본 개시에 따른 데이터 재배치 동작을 수행하기 위해 실행 가능한 명령어를 나타내는 아래의 코드 예를 사용할 수 있다. 아래 예에서 "nPBA"는 메모리 내의 PBA의 총 수(예를 들어, 수량)를 나타내고, "nA"는 데이터의 제1 부분과 관련된 LBA(예를 들어, 제1 수의 LBA)의 총 수를 나타내며, "nB"는 데이터의 제2 부분과 관련된 LBA(예를 들어, 제2 수의 LBA)의 총 수를 나타내고, "sep"는 각각의 분리 블록마다의 PBA의 수를 나타낸다.
1: 절차 스텝
2: StepB 수행
3: StepA 수행
4: 절차 종료
1: 절차 StepB
2: PBA gB - 1(mod nPBA)의 콘텐츠를 gA + sep - 1 (mod nPBA)로 이동시킴
3: gB ← gB - 1 (mod nPBA)
4: rB ← rB + 1 (mod nB)
5: 절차 종료
1: 절차 StepA
2: PBA gA - 1(mod nPBA)의 콘텐츠를 gB + sep (mod nPBA)로 이동시킴
3: gA ← gA - 1 (mod nPBA)
4: gA = SA이면
5: SA ← SA + nB + 2sep (mod nPBA)
6: if 종료
7: 절차 종료
또한, 회로(314)는 레지스터(320-1, 320-2, 320-3 및 320-4)에 저장된 값(예를 들어, SA, gA, gB 및 rB)을 사용하여, (예를 들어, 본 명세서에 전술한 바와 같이 감지 동작 동안) 데이터가 재배치되어 있는 메모리 내의 물리 위치(예를 들어, PBA)를 식별하기 위한 대수 매핑(예를 들어, 대수 논리 대 물리 매핑)을 수행할 수 있다. 예를 들어, 회로(314)는 아래의 "제1 부분 매핑"을 이용하여 데이터의 제1 부분과 관련된, 아래에 "l"로 나타낸 임의의 LBA에 대한 아래에 "p"로 나타낸 PBA를 컴퓨팅할 수 있고, 회로(314)는 아래의 "제2 부분 매핑"을 이용하여 데이터의 제2 부분과 관련된 임의의 LBA에 대한 PBA를 컴퓨팅할 수 있다.
제1 부분 매핑
Figure pct00001
여기서 l ∈ {0,…, nA - 1}
제2 부분 매핑
p = ((l + rB) mod nB + gA + sep) mod nPBA
여기서, l ∈ {0,…, nB - 1}
도 4는 본 개시의 실시형태에 따른 메모리에서 수행되는 데이터 재배치 동작의 개념적인 예(430)를 도시한다. 메모리는, 예를 들어 도 2와 관련하여 전술한 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N)일 수 있고, 데이터 재배치 동작은, 예를 들어 도 2 및 도 3과 관련하여 각각 전술한 회로(214 및/또는 314)에 의해 수행될 수 있다.
도 4에 도시된 예에서, 메모리는 PBA 0 내지 9로 나타낸 메모리 셀의 10개의 물리 블록을 포함한다(예를 들어, PBA 0은 제1 물리 블록에 대응하고, PBA 1은 제2 물리 블록에 대응하며, PBA 2는 제3 물리 블록에 대응하며, 기타 등등이다). 또한, 도 4에 도시된 예에서, 메모리는 부분 A 및 부분 B라고 지칭될 수 있는 데이터의 2개의 상이한 부분(예를 들어, 논리 영역)을 포함한다(예를 들어, 그 부분으로 분리 및/또는 분할된다). 도 4에 나타낸 바와 같이, 부분 A의 데이터는 그와 관련된 5개의 LBA(예를 들어, LBA A0 내지 A4)를 갖고, 부분 B의 데이터는 그와 관련된 3개의 LBA(예를 들어, LBA B0 내지 B2)를 갖는다. 도 4에 도시된 예에서, LBA 크기는 부분 A와 부분 B에 대해 동일하다. 또한, 도 4에 나타낸 "SA"는 LBA A0과 관련된 부분 A의 데이터에 대한 PBA를 나타내고, 도 4에 나타낸 "rB"는 부분 B 내의 LBA B0의 상대 위치(예를 들어, 부분 B와 관련된 LBA의 시퀀스에서 LBA B0의 상대 위치)를 나타낸다.
또한, 도 4에 도시된 예에서, 메모리의 물리 블록 중 2개는 그 안에 유효 데이터가 저장되어 있지 않고, 부분 A와 부분 B를 분리한다(예를 들어, 이들 사이에 있다). 이들 블록은 (본 명세서에서 전술한 바와 같이) 분리 블록이라고 지칭될 수 있고, 도 4에 "--" 기호로 나타낸다. 도 4에 도시된 예에서, "gA"는 부분 A 뒤와 부분 B 앞에 있는 분리 블록에 대한 PBA를 나타내고, "gB"는 부분 B 뒤와 부분 A 앞에 있는 분리 블록에 대한 PBA를 나타낸다.
도 4에 도시된 예에서, 각각의 분리 블록은 부분 A 및 B에 대한 LBA 크기와 동일한 크기인 하나의 PBA를 포함한다. 그러나, 예를 들어 한 부분의 크기가 다른 부분의 배수인 경우와 같은, 부분 A 및 B에 대한 LBA 크기가 다른 예에서, 각 분리 블록 내의 PBA의 수는 그 배수와 같을 수 있다. 예를 들어, B 부분에 대한 LBA 크기가 PBA 크기와 같지만 부분 A에 대한 LBA 크기가 4개의 PBA인 경우, 각 분리 블록 내의 PBA의 수는 4개일 것이다.
도 4에 "스텝 0"으로 라벨링된 열은 데이터 재배치 동작이 수행되기 전의 메모리에서의 데이터 할당을 나타낸다. 예를 들어, 도 4에 도시된 바와 같이, 데이터 재배치 동작이 수행되기 전에 부분 A의 데이터가 PBA 0 내지 4에 배치되고, 부분 B의 데이터가 PBA 6 내지 8에 배치되며, 부분 A 뒤와 부분 B 앞에 있는 분리 블록이 (예를 들어, gA로 나타낸 바와 같이) PBA 5에 배치되고, 부분 B 뒤와 부분 A 앞에 있는 분리 블록이 (예를 들어, gB로 나타낸 바와 같이) PBA 9에 배치된다. 또한, 데이터 재배치 동작이 수행되기 전의 부분 B 내의 LBA B0의 상대 위치는 도 4에 도시된 바와 같이 첫 번째이다(예를 들어, LBA B0은 rB에 대한 값으로 나타낸 바와 같이 부분 B와 관련된 LBA의 시퀀스에서 첫 번째이다).
데이터 재배치 동작은 도 4의 "스텝 1B" 및 "스텝 1A" 열로 나타내는 2개의 서브스텝으로 분할될 수 있다. 도 4에 나타낸 바와 같이, 제1 서브스텝(예를 들어, 스텝 1B) 동안, 부분 B의 최종 LBA와 관련된 부분 B의 데이터(예를 들어, LBA B2와 관련된 데이터)는 부분 A 뒤와 부분 B 앞에 있는 분리 블록(예를 들어, gA로 나타낸 분리 블록)에 재배치된다. 즉, 제1 서브스텝(예를 들어, 스텝 1B)은 부분 B의 제1 LBA 앞에 있도록 부분 B의 최종 LBA와 관련된 데이터를 위로 이동시킨다(예를 들어, LBA B2와 관련된 데이터가 LBA B0 및 B1과 관련된 데이터 앞에 있도록 위로 이동된다). 제2 서브스텝(예를 들어, 스텝 1A) 동안, 부분 A의 최종 LBA와 관련된 부분 A의 데이터(예를 들어, LBA A4와 관련된 데이터)는 도 4에 도시된 바와 같이 부분 B 뒤와 부분 A 앞에 있는 분리 블록(예를 들어, gB로 나타낸 분리 블록)에 재배치된다. 즉, 제2 서브스텝은 부분 B의 LBA 뒤에 있도록 부분 A의 최종 LBA와 관련된 데이터를 아래로 이동시킨다(예를 들어, LBA A4와 관련된 데이터가 LBA B2, B0 및 B1과 관련된 데이터 뒤에 있도록 아래로 이동된다).
데이터 재배치 동작의 결과로서(예를 들어, 스텝 1B 및 1A가 수행된 후에), 도 4에 도시된 바와 같이(예를 들어, 스텝 1B 후에, 각각 gA 및 gB로 나타낸 바와 같이), PBA 4는 부분 A 뒤와 부분 B 앞에 있는 분리 블록이 되고, PBA 8은 부분 B 뒤와 부분 A 앞에 있는 분리 블록이 된다. 또한, 데이터 재배치 동작의 결과로서, 도 4에 도시된 바와 같이, 부분 A의 마지막에서 두 번째의 LBA(예를 들어, LBA A3)는 부분 B 앞의 부분 A의 최종 LBA가 되고, 부분 B의 마지막에서 두 번째의 LBA(예를 들어, LBA B1)는 부분 B의 최종 LBA가 된다. 또한, 데이터 재배치 동작의 결과로서, 도 4에 도시된 바와 같이, 부분 A의 데이터는 PBA 0 내지 3 및 9에 배치하게 되고, 부분 B의 데이터는 PBA 5 내지 7에 배치하게 된다. 또한, 데이터 재배치 동작의 결과로서, 도 4에 도시된 바와 같이, 부분 B 내의 LBA B0의 상대 위치는 두 번째가 된다(예를 들어, LBA B0은 rB에 대한 값으로 나타낸 바와 같이 부분 B와 관련된 LBA의 시퀀스에서 두 번째가 된다).
도 4에 도시된 예에서, 각 서브세트는 데이터 재배치 동작 동안 한번 실행된다. 그러나, 예를 들어 한 부분의 크기가 다른 부분의 배수인 경우와 같은, 부분 A 및 B에 대한 LBA 크기가 상이한 예에서, 스텝 1A 및/또는 스텝 1B는 두 번 이상 실행될 필요가 있을 수 있다. 예를 들어, 부분 B에 대한 LBA 크기가 PBA 크기와 같지만 부분 A에 대한 LBA 크기가 4개의 PBA인 예에서, 스텝 1B는 네 번 실행되고, 스텝 1A은 한 번 실행될 것이다.
도 5a는 본 개시의 실시형태에 따른 메모리에서 수행되는 데이터 재배치 동작의 시퀀스의 개념적인 예(540)를 도시한다. 메모리는, 예를 들어 도 4와 관련하여 전술한 메모리와 유사하고, 데이터 재배치 동작은, 예를 들어 도 2 및 도 3과 관련하여 각각 전술한 회로(214 및/또는 314)에 의해 수행될 수 있다. 도 5b는 데이터 재배치 동작의 시퀀스와 관련된 SA, gA, gB 및 rB에 대한 값의 표(545)이다. SA, gA, gB 및 rB는 도 4와 관련하여 전술한 SA, gA, gB 및 rB와 각각 유사하다. 도 5a 및 5b의 각 "스텝" 열은 서브스텝 B 및 서브세트 A 모두를 수행한 효과를 나타낸다(예를 들어, "스텝 1"은 도 4와 관련하여 설명된 서브스텝 1B 및 서브스텝 1A의 조합이다).
도 5a에 "스텝 0"으로 라벨링된 열은 시퀀스의 제1 데이터 재배치 동작이 수행되기 전의 메모리 내의 데이터 할당을 나타내고 있고, 도 4와 관련하여 설명된 "스텝 0" 열과 유사하다. 예를 들어, 도 5b에 나타낸 바와 같이, (예를 들어, 제1 데이터 재배치 동작이 수행되기 전) 스텝 0 열 내의 SA, gA, gB 및 rB에 대한 값은 도 4와 관련하여 설명된 바와 같이 각각 0, 5, 9 및 0이다.
도 5a에 "스텝 1" 내지 "스텝 6"으로 라벨링된 열은 시퀀스에서 각각의 데이터 재배치 동작의 수행 후의 메모리 내의 데이터 할당을 나타낸다. 예를 들어, 스텝 1 열은 제1 데이터 재배치 동작의 수행 후의 데이터 할당을 나타내고 있고, 도 4와 관련하여 설명된 서브스텝 1B와 서브스텝 1A의 조합된 효과와 유사하다. 스텝 2 열은 제2 데이터 재배치 동작의 수행 후의 데이터 할당을 나타내고 , 스텝 3 열은 제3 데이터 재배치 동작의 수행 후의 데이터 할당을 나타낸다. 또한, 도 5b에 "스텝 1" 내지 "스텝 6"으로 라벨링된 열은 시퀀스에서 각각의 데이터 재배치 동작의 수행 후의 SA, gA, gB 및 rB에 대한 값을 나타낸다. 예를 들어, 도 5a 및 도 5b의 스텝 1 열에 나타낸 데이터 할당 및 값은 각각 도 4와 관련하여 설명된 재배치 동작 후의 데이터 할당 및 SA, gA, gB 및 rB 값과 유사하다.
도 5a의 스텝 2 열에 나타낸 바와 같이, 시퀀스에서 제2 데이터 재배치 동작의 수행 후, 스텝 1 후의 부분 B의 최종 LBA와 관련된 부분 B의 데이터(예를 들어, LBA B1과 관련된 데이터)가 스텝 1 후에 부분 A 뒤와 부분 B 앞에 있던 분리 블록(예를 들어, PBA 4)에 재배치되며, 스텝 1 후의 부분 A의 최종 LBA와 관련된 부분 A의 데이터(예를 들어, LBA A3과 관련된 데이터)가 스텝 1 후에 부분 B 뒤와 부분 A 앞에 있던 분리 블록(예를 들어, PBA 8)에 재배치된다. 또한, 도 5a의 스텝 2 열에 나타낸 바와 같이, 도 5b의 스텝 2 열에 gA 및 gB로 각각 나타낸 바와 같이, PBA 3은 부분 A 뒤와 부분 B 앞에 있는 분리 블록이 되고, PBA 7은 부분 B 뒤와 부분 A 앞에 있는 분리 블록이 된다. 또한, 도 5a의 스텝 2 열에 나타낸 바와 같이,스텝 1 후에 부분 A의 마지막에서 두 번째의 LBA이었던 LBA(예를 들어, LBA A2)는 부분 B 앞의 부분 A의 최종 LBA가 되고, 스텝 1 후에 부분 B의 마지막에서 두 번째의 LBA이었던 LBA(예를 들어, LBA B0)는 부분 B의 최종 LBA가 된다. 도 5a의 스텝 2 열에 나타낸 바와 같이, 부분 A의 데이터가 PBA 0 내지 2 및 8 내지 9에 배치하게 되고, 부분 B의 데이터가 PBA 4 내지 6에 배치하게 되며, LBA A0과 관련된 부분 A의 데이터에 대한 PBA가 도 5b의 스텝 2 열에 SA에 대한 값으로 나타낸 바와 같이 PBA 0에 남아 있는다. 또한, 도 5a의 스텝 2 열에 나타낸 바와 같이, 부분 B 내의 LBA B0의 상대 위치는 도 5b의 스텝 2 열에 rB에 대한 값으로 나타낸 바와 같이 세 번째가 된다.
도 5a의 스텝 3 열에 나타낸 바와 같이, 시퀀스에서 제3 데이터 재배치 동작의 수행 후, 스텝 2 후의 부분 B의 최종 LBA와 관련된 부분 B의 데이터(예를 들어, LBA B0과 관련된 데이터)는 스텝 2 후에 부분 A 뒤와 부분 B 앞에 있던 분리 블록(예를 들어, PBA 3)에 재배치되며, 스텝 2 후의 부분 A의 최종 LBA와 관련된 부분 A의 데이터(예를 들어, LBA A2과 관련된 데이터)는 스텝 2 후에 부분 B 뒤와 부분 A 앞에 있던 분리 블록(예를 들어, PBA 7)에 재배치된다. 또한, 도 5a의 스텝 2 열에 나타낸 바와 같이, 도 5b의 스텝 3 열에 gA 및 gB로 각각 나타낸 바와 같이, PBA 2는 부분 A 뒤와 부분 B 앞에 있는 분리 블록이 되고, PBA 6은 부분 B 뒤와 부분 A 앞에 있는 분리 블록이 된다. 또한, 도 5a의 스텝 3 열에 나타낸 바와 같이, 스텝 2 후에 부분 A의 마지막에서 두 번째의 LBA이었던 LBA(예를 들어, LBA A1)는 부분 A의 최종 LBA가 되고, 스텝 2 후에 부분 B의 마지막에서 두 번째의 LBA이었던 LBA(예를 들어, LBA B2)는 부분 B의 최종 LBA가 된다. 또한, 도 5a의 스텝 3 열에 나타낸 바와 같이, 부분 A의 데이터는 PBA 0 내지 1 및 7 내지 9에 배치하게 되고, 부분 B의 데이터는 PBA 3 내지 5에 배치하게 되며, LBA A0과 관련된 부분 A의 데이터에 대한 PBA가 도 5b의 스텝 3 열에 SA에 대한 값으로 나타낸 바와 같이 PBA 0에 남아 있는다. 또한, 도 5a의 스텝 3 열에 나타낸 바와 같이, 부분 B 내의 LBA B0의 상대 위치는 도 5b의 스텝 3 열에 rB에 대한 값으로 나타낸 바와 같이 첫 번째가 된다.
시퀀스의 제4, 제5 및 제6 데이터 재배치 동작은 도 5a 및 도 5b에 스텝 4, 스텝 5 및 스텝 6 열에 각각 나타낸 바와 같이 유사한 방식으로 계속될 수 있다. 이와 같이, 데이터 재배치 동작의 효과는 부분 B의 제1 LBA 앞에 있도록 부분 B의 최종 LBA와 관련된 데이터를 순차적으로 위로 이동시키고, 부분 B의 LBA 뒤에 있도록 부분 A의 최종 LBA와 관련된 데이터를 순차적으로 아래로 이동시켜, 메모리의 동작 전체에 걸쳐 부분 B가 위로 이동하고 부분 A가 아래로 이동하도록 하는 것임을 알 수 있다. 따라서, 시퀀스의 데이터 재배치 동작은 메모리의 동작 전체에 걸쳐 각각의 LBA와 관련된 데이터를 다른 PBA로 이동시킬뿐만 아니라, 데이터의 2개의 다른 부분은 정적이 아니다(예를 들어, 각각의 부분의 데이터가 배치되는 PBA는 메모리의 동작 전체에 걸쳐 계속해서 변경된다). 즉, 각각의 부분의 데이터는 메모리의 동작을 통해 전체 메모리에 걸쳐 재배치될 수 있다.
시퀀스에서 각각의 데이터 재배치 동작은 (예를 들어, 도 2와 관련하여) 본 명세서에 전술한 바와 같이 별도의 트리거링 이벤트에 응답하여 수행될 수 있다. 도 5a 및 도 5b에 도시된 예시적인 시퀀스는 6개의 데이터 재배치 동작을 포함하지만, 본 개시의 실시형태는 이에 한정되지 않는다. 예를 들어, 추가 데이터 재배치 동작은 메모리의 수명 전체에 걸쳐 유사한 방식으로 (예를 들어, 후속 트리거링 이벤트에 응답하여) 계속 수행될 수 있다.
특정 실시형태들이 본 명세서에 도시되고 설명되었지만, 이 기술 분야에서 통상의 지식을 가진 자라면, 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시형태 대신에 사용될 수 있다는 것을 이해할 수 있을 것이다. 본 발명은 본 발명의 다수의 실시형태의 적응 또는 변형을 포함하도록 의도되어 있다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기 실시형태 및 본 명세서에 구체적으로 설명되지 않은 다른 실시형태의 조합은 상기 설명을 검토할 때 이 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 본 발명의 다수의 실시형태의 범위는 상기 구조 및 방법이 사용되는 다른 적용예를 포함한다. 따라서, 본 발명의 다수의 실시형태의 범위는 첨부된 청구범위를 참조하여 이러한 청구범위가 부여되는 균등물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징은 본 발명을 간소화하기 위해 단일 실시형태에서 함께 그룹화되어 있다. 이 개시 방법은 본 발명의 개시된 실시형태가 각 청구항에 명시적으로 언급된 것보다 더 많은 특징을 이용해야 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 이하의 청구범위가 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시형태의 모든 특징보다 적다. 따라서, 다음의 청구범위는 상세한 설명에 포함되며, 각 청구항은 그 자체가 별개의 실시형태를 기반으로 하고 있다.

Claims (23)

  1. 장치에 있어서,
    메모리 셀의 복수의 물리 블록을 갖는 메모리로서,
    상기 메모리는 관련된 제1 수의 논리 블록 어드레스를 갖는 데이터의 제1 부분, 및 관련된 제2 수의 논리 블록 어드레스를 갖는 데이터의 제2 부분을 포함하고;
    상기 메모리 셀의 복수의 물리 블록 중 2개는 그 안에 데이터가 저장되지 않는, 상기 메모리;
    회로로서,
    상기 제1 수의 논리 블록 어드레스 중 하나와 관련된 상기 제1 부분의 상기 데이터를, 데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 하나에 재배치하는 것; 및
    상기 제2 수의 논리 블록 어드레스 중 하나와 관련된 상기 제2 부분의 상기 데이터를, 데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 다른 하나에 재배치하는 것을 수행하도록 구성되는, 상기 회로
    를 포함하는, 장치.
  2. 제1항에 있어서, 데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개는 상기 메모리에서 상기 데이터의 제1 부분과 상기 데이터의 제2 부분을 분리하는, 장치.
  3. 제1항에 있어서,
    상기 제1 수의 논리 블록 어드레스 중 상기 하나는 상기 제1 수의 논리 블록 어드레스 중 최종의 것이고;
    상기 제2 수의 논리 블록 어드레스 중 상기 하나는 상기 제2 수의 논리 블록 어드레스 중 최종의 것인, 장치.
  4. 제1항에 있어서,
    상기 데이터의 제1 부분은 사용자 데이터를 포함하고;
    상기 데이터의 제2 부분은 시스템 데이터를 포함하는, 장치.
  5. 제1항에 있어서,
    상기 데이터의 제1 부분은 상기 메모리 상에서 수행되는 프로그램 또는 감지 동작 동안 특정 주파수 또는 그 이상에서 액세스되어 있는 데이터를 포함하고;
    상기 데이터의 제2 부분은 상기 메모리 상에서 수행되는 프로그램 또는 감지 동작 동안 특정 주파수 아래에서 액세스되어 있는 데이터를 포함하는, 장치.
  6. 제1항에 있어서,
    상기 데이터의 제1 부분은 운영 체제 데이터를 포함하고;
    상기 데이터의 제2 부분은 시스템 멀티미디어 데이터를 포함하는, 장치.
  7. 메모리를 동작시키는 방법으로서,
    상기 메모리의 제1 부분에 포함되고 상기 메모리의 상기 제1 부분의 다수의 논리 블록 어드레스 중 하나와 관련된 데이터를 데이터가 저장되지 않은 상기 메모리의 물리 블록에 재배치하는 단계; 및
    상기 메모리의 제2 부분에 포함되고 상기 메모리의 상기 제2 부분의 다수의 논리 블록 어드레스 중 하나와 관련된 데이터를 데이터가 저장되지 않은 상기 메모리의 다른 물리 블록에 재배치하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 방법은,
    대수 매핑(algebraic mapping)을 사용하여, 상기 메모리의 상기 제1 부분 내의 상기 데이터가 재배치되어 있는 물리 블록의 상기 메모리 내의 위치를 식별하는 단계; 및
    대수 매핑을 사용하여, 상기 메모리의 상기 제2 부분 내의 상기 데이터가 재배치되어 있는 상기 다른 물리 블록의 상기 메모리 내의 위치를 식별하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 방법은,
    상기 대수 매핑을 사용하여, 해당의 재배치된 데이터를 감지하기 위한 동작 동안 상기 메모리의 상기 제1 부분 내의 상기 데이터가 재배치되어 있는 상기 물리 블록의 상기 메모리 내의 상기 위치를 식별하는 단계; 및
    상기 대수 매핑을 사용하여, 해당의 재배치된 데이터를 감지하기 위한 동작 동안 상기 메모리의 상기 제2 부분 내의 상기 데이터가 재배치되어 있는 상기 다른 물리 블록의 상기 메모리 내의 상기 위치를 식별하는 단계를 포함하는, 방법.
  10. 제7항에 있어서, 상기 방법은 트리거링 이벤트에 응답하여 상기 메모리의 상기 제1 부분에 포함된 데이터를 재배치하는 단계 및 상기 메모리의 상기 제2 부분에 포함된 상기 데이터를 재배치하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 상기 트리거링 이벤트는 상기 메모리 상에서 수행되고 있는 특정 수의 프로그램 동작인, 방법.
  12. 제10항에 있어서, 상기 트리거링 이벤트는 상기 메모리에서 발생하는 전력 상태 전이(power state transition)인, 방법.
  13. 제7항에 있어서,
    상기 메모리의 상기 제1 부분에 포함된 상기 데이터를 상기 메모리의 상기 물리 블록에 재배치하는 단계는 상기 메모리의 제3 물리 블록이 그 안에 데이터가 저장되지 않게 하며;
    상기 메모리의 상기 제2 부분에 포함된 상기 데이터를 상기 메모리의 상기 다른 물리 블록에 재배치하는 단계는 상기 메모리의 제4 물리 블록이 그 안에 데이터가 저장되지 않게 하고;
    상기 방법은,
    상기 메모리의 상기 제1 부분에 포함되고 상기 메모리의 상기 제1 부분의 상기 다수의 논리 블록 어드레스 중 다른 하나와 관련된 데이터를 상기 메모리의 상기 제3 물리 블록에 재배치하는 단계; 및
    상기 메모리의 상기 제2 부분에 포함되고 상기 메모리의 상기 제2 부분의 상기 다수의 논리 블록 어드레스 중 다른 하나와 관련된 데이터를 상기 메모리의 상기 제4 물리 블록에 재배치하는 단계를 추가로 포함하는, 방법.
  14. 장치에 있어서,
    메모리 셀의 복수의 물리 블록을 갖는 메모리로서,
    상기 메모리는 관련된 제1 수의 논리 블록 어드레스를 갖는 데이터의 제1 부분, 및 관련된 제2 수의 논리 블록 어드레스를 갖는 데이터의 제2 부분을 포함하고;
    상기 메모리 셀의 복수의 물리 블록 중 2개는 그 안에 데이터가 저장되지 않고 상기 메모리에서 상기 데이터의 제1 부분과 상기 데이터의 제2 부분을 분리하는, 상기 메모리;
    회로로서,
    상기 제1 수의 논리 블록 어드레스의 최종의 것과 관련된 상기 제1 부분의 데이터를, 데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 하나에 재배치하는 것; 및
    상기 제2 수의 논리 블록 어드레스 중 최종의 것과 관련된 상기 제2 부분의 상기 데이터를, 데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 다른 하나에 재배치하는 것을 수행하도록 구성되는, 상기 회로
    를 포함하는, 장치.
  15. 제14항에 있어서, 상기 제1 수의 논리 블록 어드레스의 각각의 것의 크기는 상기 제2 수의 논리 블록 어드레스의 각각의 것의 크기와 다른, 장치.
  16. 제14항에 있어서, 상기 회로는 상기 메모리에 포함되는, 장치.
  17. 제14항에 있어서, 상기 회로는 상기 장치의 컨트롤러에 포함되는, 장치.
  18. 제14항에 있어서, 상기 회로는,
    상기 제1 수의 논리 블록 어드레스 중 첫 번째 것과 관련된 상기 제1 부분의 상기 데이터에 대한 물리 블록 어드레스를 나타내는 값을 저장하도록 구성된 제1 레지스터;
    데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 하나에 대한 물리 블록 어드레스를 나타내는 값을 저장하도록 구성된 제2 레지스터;
    데이터가 저장되지 않은 상기 메모리 셀의 복수의 물리 블록 중 상기 2개 중 다른 하나에 대한 물리 블록 어드레스를 나타내는 값을 저장하도록 구성된 제3 레지스터; 및
    데이터의 상기 제2 부분 내의 상기 제2 수의 논리 블록 어드레스 중 첫 번째 것의 상대 위치를 나타내는 값을 저장하도록 구성된 제4 레지스터를 포함하는, 장치.
  19. 메모리를 동작시키는 방법으로서,
    상기 메모리의 제1 부분에 포함되고 상기 메모리의 상기 제1 부분의 다수의 논리 블록 어드레스 중 최종의 것과 관련된 데이터를, 데이터가 저장되지 않고 상기 메모리에서 상기 메모리의 상기 제1 부분 앞에 있는 상기 메모리의 물리 블록에 재배치하는 단계; 및
    상기 메모리의 제2 부분에 포함되고 상기 메모리의 상기 제2 부분의 다수의 논리 블록 어드레스 중 최종의 것과 관련된 데이터를, 데이터가 저장되지 않고 상기 메모리에서 상기 메모리의 상기 제2 부분 뒤에 있는 상기 메모리의 물리 블록에 재배치하는 단계를 포함하는, 방법.
  20. 제19항에 있어서, 상기 방법은,
    대수 매핑을 사용하여, 상기 메모리의 상기 제1 부분의 상기 다수의 논리 블록 어드레스 중 최종의 것과 관련된 상기 데이터가 재배치되어 있는 상기 물리 블록에 대한 물리 블록 어드레스를 식별하는 단계; 및
    대수 매핑을 사용하여, 상기 메모리의 상기 제2 부분의 상기 다수의 논리 블록 어드레스 중 최종의 것과 관련된 상기 데이터가 재배치되어 있는 상기 물리 블록에 대한 물리 블록 어드레스를 식별하는 단계를 포함하는, 방법.
  21. 제19항에 있어서, 상기 메모리의 상기 제1 부분에 대한 상기 다수의 논리 블록 어드레스 및 상기 메모리의 상기 제2 부분에 대한 상기 다수의 논리 블록 어드레스는 랜덤화되는, 방법.
  22. 제21항에 있어서, 상기 방법은 상기 메모리의 상기 제1 부분에 포함된 상기 데이터를 재배치하는 즉시 상기 메모리의 상기 제2 부분에 포함된 상기 데이터를 재배치하는 단계를 포함하는, 방법.
  23. 제19항에 있어서, 상기 방법은,
    상기 메모리의 상기 제1 부분에 포함된 상기 데이터를 재배치할 때 상기 메모리에 대한 동작을 수행하는 단계; 및
    상기 메모리에 대한 동작을 수행할 때 상기 메모리의 상기 제2 부분에 포함된 데이터를 재배치하는 단계를 포함하는, 방법.
KR1020207037788A 2018-05-31 2019-04-24 데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치 KR20210003957A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/994,477 US10585795B2 (en) 2018-05-31 2018-05-31 Data relocation in memory having two portions of data
US15/994,477 2018-05-31
PCT/US2019/028854 WO2019231584A1 (en) 2018-05-31 2019-04-24 Data relocation in memory having two portions of data

Publications (1)

Publication Number Publication Date
KR20210003957A true KR20210003957A (ko) 2021-01-12

Family

ID=68693947

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207037788A KR20210003957A (ko) 2018-05-31 2019-04-24 데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치

Country Status (6)

Country Link
US (2) US10585795B2 (ko)
EP (1) EP3803605A4 (ko)
JP (1) JP2021525924A (ko)
KR (1) KR20210003957A (ko)
CN (1) CN112204533A (ko)
WO (1) WO2019231584A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761739B2 (en) * 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
JP2000285001A (ja) * 1999-03-31 2000-10-13 Seiko Epson Corp 半導体フラッシュメモリ装置及びその制御方法
JP2003216506A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd フラッシュメモリを搭載した記憶装置及び計算機
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
EP1713085A1 (en) 2002-10-28 2006-10-18 SanDisk Corporation Automated wear leveling in non-volatile storage systems
JP2004296014A (ja) * 2003-03-27 2004-10-21 Mitsubishi Electric Corp 不揮発性メモリの消去回数平準化方法
JP2004326539A (ja) * 2003-04-25 2004-11-18 Fuji Photo Film Co Ltd 記録媒体の記録方法
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
JP2007133683A (ja) * 2005-11-10 2007-05-31 Sony Corp メモリシステム
US7791952B2 (en) 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US8140737B2 (en) * 2007-01-30 2012-03-20 Skymedi Corporation Method for enhancing life cycle of memory
JP4899946B2 (ja) * 2007-03-06 2012-03-21 横河電機株式会社 ディスク装置およびこれを用いた測定装置
US8239611B2 (en) 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8255613B2 (en) * 2009-04-30 2012-08-28 International Business Machines Corporation Wear-leveling and bad block management of limited lifetime memory devices
CN102543177B (zh) * 2010-12-17 2016-01-06 西安奇维测控科技有限公司 一种固态盘静态磨损平衡算法
KR20130021026A (ko) 2011-08-22 2013-03-05 엘지이노텍 주식회사 웨이퍼 표면 처리 방법
US9081665B2 (en) * 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
CN102789423B (zh) * 2012-07-11 2014-12-10 山东华芯半导体有限公司 四池闪存磨损均衡方法
US20140122774A1 (en) 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
CN103902461A (zh) * 2012-12-27 2014-07-02 中兴通讯股份有限公司 不同Nand闪存兼容方法及装置
JP2016170703A (ja) 2015-03-13 2016-09-23 富士通株式会社 記憶装置、記憶装置の制御方法、及び情報処理システム
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
US10102138B2 (en) 2015-10-22 2018-10-16 Western Digital Technologies, Inc. Division of data storage in single-storage device architecture
US10983704B1 (en) * 2016-05-20 2021-04-20 Emc Corporation Method and system for adaptive wear leveling in solid state memory
US10649665B2 (en) 2016-11-08 2020-05-12 Micron Technology, Inc. Data relocation in hybrid memory
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
KR20180065075A (ko) * 2016-12-06 2018-06-18 에스케이하이닉스 주식회사 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
KR20190019429A (ko) * 2017-08-17 2019-02-27 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US20190129627A1 (en) 2017-10-31 2019-05-02 EMC IP Holding Company LLC Method and system for wear-leveling using a multi-gap progress field

Also Published As

Publication number Publication date
EP3803605A1 (en) 2021-04-14
EP3803605A4 (en) 2022-03-09
US20190370166A1 (en) 2019-12-05
JP2021525924A (ja) 2021-09-27
US11194708B2 (en) 2021-12-07
US10585795B2 (en) 2020-03-10
CN112204533A (zh) 2021-01-08
WO2019231584A1 (en) 2019-12-05
US20200183828A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
US11157417B2 (en) Memory having a static cache and a dynamic cache
KR102271643B1 (ko) 하이브리드 메모리의 데이터 재배치
US9552888B2 (en) Methods, devices, and systems for data sensing
KR101405741B1 (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
US9342371B2 (en) Boot partitions in memory devices and systems
US8300467B2 (en) Nonvolatile memory device and related method of operation
US11983403B2 (en) Data relocation in memory
US10902924B2 (en) Memory system varying pass voltage based on erase count of target memory block and operating method thereof
KR20210003957A (ko) 데이터의 2개의 부분을 갖는 메모리에서의 데이터 재배치
KR20200117555A (ko) 메모리 시스템, 메모리 장치 및 메모리 컨트롤러

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application