KR20220066402A - 자가-적응형 웨어 레벨링 방법 및 알고리즘 - Google Patents

자가-적응형 웨어 레벨링 방법 및 알고리즘 Download PDF

Info

Publication number
KR20220066402A
KR20220066402A KR1020227014195A KR20227014195A KR20220066402A KR 20220066402 A KR20220066402 A KR 20220066402A KR 1020227014195 A KR1020227014195 A KR 1020227014195A KR 20227014195 A KR20227014195 A KR 20227014195A KR 20220066402 A KR20220066402 A KR 20220066402A
Authority
KR
South Korea
Prior art keywords
memory
level
counter
physical
wear leveling
Prior art date
Application number
KR1020227014195A
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 KR20220066402A publication Critical patent/KR20220066402A/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

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

Description

자가-적응형 웨어 레벨링 방법 및 알고리즘
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 더 구체적으로 자가-적응형 웨어 레벨링 방법 및 알고리즘에 관한 것이다.
본 기술 분야에서 잘 알려진 바와 같이, 메모리 디바이스는 전형적으로 컴퓨터 또는 기타 전자 디바이스에서 내부, 반도체, 집적 회로 및/또는 외부 이동식 디바이스로 제공된다. 휘발성 및 비휘발성 메모리를 비롯한 많은 다양한 유형의 메모리 디바이스가 있다. 휘발성 메모리는 그 데이터를 유지하기 위해 전원이 필요할 수 있으며, 특히, RAM(random-access memory), DRAM(동적 random access memory), SDRAM(synchronous 동적 random access memory)을 포함할 수 있다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지할 수 있으며, 특히, NAND 플래시 메모리, NOR 플래시 메모리, PCRAM(phase change random access memory), RRAM(resistive random access memory) 및 MRAM(magnetic random access memory)과 같은 저장 메모리를 포함할 수 있다.
"메인 메모리"는 프로세서에 의해 직접 액세스 및 조작될 수 있는 데이터를 저장하는 메모리를 설명하기 위해 본 분야에서 사용되는 용어이다. 메인 메모리의 예는 DRAM이다. 메인 메모리는 데이터의 주 저장소를 제공하며 휘발성 또는 비휘발성일 수 있고; 예를 들어, 메인 메모리로서 관리되는 비휘발성 RAM은 NV-DIMM으로 알려진 비휘발성 이중 인라인 메모리 모듈일 수 있다.
보조 저장소는 데이터의 보조 저장소를 제공하는 데 사용될 수 있으며, 프로세서에서 직접 액세스할 수 없다.
메모리 디바이스는 함께 조합되어 SSD(solid state drive)와 같은 메모리 시스템의 저장 체적을 형성할 수 있다. 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서, SSD는 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나 휘발성 메모리(예를 들어, DRAM 및/또는 SRAM)를 포함할 수 있다.
SSD는 로컬 주 저장소를 핸들링하여 SSD가 보조 저장소에 대해 상대적으로 복잡한 메모리 관리 동작을 수행할 수 있게 하는 제어기를 가질 수 있다. 그러나, 제어기의 로컬 주 저장소는 대부분의 보조 저장소에 비교하여 제한적이고 상대적으로 값비싼 자원이다.
제어기의 로컬 주 저장소의 상당한 부분은, 논리적 어드레스에 대한 논리적 어드레스 대 물리적 어드레스 변환을 저장하는, 논리적 대 물리적 테이블을 저장하는 데 전용될 수 있다.
논리적 어드레스는 실행 중인 애플리케이션 프로그램의 관점에서 메모리 유닛(즉, 메모리 셀, 데이터 섹터, 데이터 블록 등)이 상주하는 것처럼 보이는 어드레스이며, 호스트 디바이스 또는 프로세서에 의해 생성된 어드레스일 수 있다. 반대로, 물리적 어드레스는 데이터 버스가 메모리 셀, 데이터 섹터 또는 데이터 블록과 같은 물리적 메모리의 특정 단위에 액세스할 수 있게 하는 메모리 어드레스이다.
이에 관련하여, 메모리 디바이스가 메모리의 한 물리적 위치에 현재 저장된 데이터를 메모리의 다른 물리적 위치로 재배치하게 할 수 있게 구성하는 것이 매우 중요하다. 이 동작은 웨어 레벨링로 알려져 있으며, 메모리 디바이스의 서비스 수명을 연장하는 데 유용한 기술이며, 메모리 디바이스는, 이렇게 하지 않으면, 너무 많은 기록 사이클에 의해 영향을 받아 개별적으로 기록 가능한 세그먼트를 신뢰할 수 없게 된다.
본 개시의 목적은 현재까지 채택된 공지의 웨어 레벨링 해결책의 특징을 개선하는 자가-적응형 웨어 레벨링 방법 및 알고리즘을 개시하는 것이다
도 1은 본 개시의 실시예에 따른 복수의 물리적 블록을 갖는 메모리 어레이의 일부의 도면을 예시한다.
도 2는 본 개시의 실시예에 따른 메모리 디바이스 형태의 장치 및 호스트를 포함하는 컴퓨팅 시스템의 블록도이다.
도 3은 본 개시의 실시예에 따른 L2P(Logical-to-Physical) 테이블 아키텍처의 개략도를 도시한다.
도 4는 본 개시의 실시예에 따른 제2 레벨 테이블(SLT) 구조를 개략적으로 도시한다.
도 5는 본 개시의 실시예에 따른 L2P 테이블 세그먼트의 구조의 더 상세한 도면을 도시한다.
도 6은 본 개시의 실시예에 따른 L2P 테이블의 물리적 메모리 위치의 순환 목록(circular list)을 도시한다.
도 7은 본 개시의 실시예에 따라 새롭게 제안된 테이블 스와핑 메커니즘과 조합하여 도 6의 목록을 도시하고 있는 다른 개략도이다.
도 8은 본 개시의 방법을 구현하는 알고리즘의 흐름도를 도시한다.
도 9는 본 개시의 실시예에 따른 자가-적응형 정적 임계값 웨어 레벨링를 관리하기 위한 방법에 관한 다른 알고리즘의 흐름도를 도시한다.
도 10은 도 8 및 도 9의 자체 조절 알고리즘이 본 개시의 실시예에 따라 상이한 핫니스(hotness) 특성을 갖는 2개의 워크로드와 함께 동작하는 방법의 예를 도시한다.
도 11은 본 개시의 실시예에 따른 동일한 물리적 테이블 어드레스(PTA) 상의 SLT 테이블의 3개의 후속 기록 사이클에 관한 구현예를 도시한다.
도 12는 본 개시의 실시예에 따른 L2P 세그먼트 스크램블링이 있거나 없는 시뮬레이션의 결과를 도시한다.
본 개시는 데이터의 2개의 부분을 갖는 메모리에서 데이터 재배치를 위한 장치, 방법 및 시스템에 관한 것이다. 실시예는 메모리 셀의 복수의 물리적 블록을 갖는 메모리, 및 그와 관련된 각각의 제1 및 제2 수의 논리적 블록 어드레스를 갖는 데이터의 제1 및 제2 부분을 포함한다. 셀의 복수의 물리적 블록 중 2개에는 내부에 데이터가 저장되어 있지 않다. 회로부는 제1 수의 논리적 블록 어드레스 중 하나와 관련된 제1 부분의 데이터를 내부에 데이터가 저장되어 있지 않은 셀의 2개의 물리적 블록 중 하나로 재배치하고, 제2 수의 논리적 블록 어드레스 중 하나와 관련된 제2 부분의 데이터를 내부에 데이터가 저장되어 있지 않은 셀의 2개의 물리적 블록 중 다른 하나로 재배치하도록 구성된다. L2P(logical to physical) 테이블은 웨어 레벨링된 블록에 저장된 데이터의 물리적 어드레스 변경을 반영하도록 업데이트된다. L2P 테이블은 테이블 레벨의 수에 제한되지 않고, 서로 다른 레벨, 예를 들어 제1 레벨 테이블과 제2 레벨 테이블을 가질 수 있다.
내구성은 메모리 기술의 핵심 특성이다. 메모리 셀이 최대 허용 기록 사이클 수에 도달하면 더 이상 신뢰할 수 없다(수명 종료).
본 개시는 메모리 셀 에이징(aging)을 제어하기 위해 비트 변경 가능한 NVM 및 웨어 레벨링 알고리즘을 위한 L2P 테이블 아키텍처를 제안한다.
일반적으로, 웨어 레벨링 알고리즘은 물리적 어드레스가 기록되는 횟수를 모니터링하고 기록 카운터 값을 기초로 논리적 대 물리적 맵핑을 변경한다.
웨어 레벨링 동작은 메모리의 하나의 물리적 위치에 현재 저장되어 있는 데이터를 메모리의 다른 물리적 위치로 재배치하는 동작을 포함 및/또는 의미할 수 있다. 이러한 웨어 레벨링 동작을 수행하는 것은 메모리의 성능을 증가시킬 수 있고(예를 들어, 속도를 증가시키고, 신뢰성을 증가시키고, 및/또는 전력 소비를 감소시킴), 및/또는 메모리의 내구성(예를 들어, 수명)을 증가시킬 수 있다.
이전의 또는 알려진 웨어 레벨링 동작은 테이블을 사용하여 메모리에서 데이터를 재배치할 수 있다. 그러나, 이러한 테이블은 클 수 있고(예를 들어, 메모리에서 많은 양의 공간을 사용할 수 있음), 웨어 레벨링 동작을 느리게 할 수 있다. 또한, 테이블 정보를 저장하는 메모리 셀은 웨어 레벨링 동작 동안 업데이트되어야 하므로 이러한 메모리 셀은 가속화된 에이징을 경험할 수 있다.
반대로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 데이터가 재배치된 물리적 위치(예를 들어, 물리적 블록)을 식별하는 데 사용하기 위한 대수 맵핑(예를 들어, 논리적 및 물리적 어드레스 사이의 대수 맵핑)을 유지할 수 있다. 따라서, 본 개시에 따른 데이터 재배치 동작은 이전의 웨어 레벨링 동작보다 메모리 공간을 덜 사용할 수 있고, 더 빠르고 더 신뢰적일 수 있다.
본 개시의 일 실시예에서, 웨어 레벨링 알고리즘의 업데이트 페이즈(phase) 동안, 제2 레벨 테이블의 단일 섹터라도 과도하게 재기록된 경우, 제2 레벨 테이블은 다른 물리적 위치로 이동된다.
이 해결책은 값비싼 휘발성 메모리 부분에 의해 구현되는 제1 레벨 테이블(FLT)의 크기를 제한적으로 유지하는 큰 이점을 갖는다.
달리 말해서, 본 개시에서 제안하는 해결책에 따르면, 제2 레벨 테이블의 단일 세그먼트가 미리 결정된 재기록 사이클의 양에 도달하면, 후속 업데이트 페이즈를 위해 전체 제2 레벨 테이블을 변경하기에 충분하다.
본 개시의 일 실시예는 관리되는 메모리 디바이스를 위한 자가-적응형 웨어 레벨링 방법에 관한 것으로, 여기서 제1 레벨 테이블은 메모리 디바이스에 대한 포인터를 포함하는 복수의 제2 레벨 테이블을 어드레싱하고, 이 방법은:
- 상기 제2 레벨 테이블의 세그먼트의 업데이트 페이즈의 수를 검출하는 단계;
- 이 수가 정의된 임계값을 충족한 것에 기초하여 제2 레벨 테이블 중 하나를 다른 제2 레벨 테이블의 위치로 시프트시키는 단계를 포함한다.
위의 자가-적응형 웨어 레벨링 방법에서 검출 페이즈는 업데이트되고 있는 L2P 엔트리와 동일한 제2 레벨 테이블의 세그먼트에 제공된 업데이트 카운터의 값을 판독하는 것을 포함한다. 시프트 페이즈는 하나의 제2 레벨 테이블 전체를 이 하나의 제2 레벨 테이블의 시작 물리적 위치와 상이한 물리적 위치, 예를 들어, 덜 광범위하게 액세스된 다른 제2 레벨 테이블의 물리적 위치로 시프트시키는 것을 포함할 수 있다.
본 개시가 중점을 두는 메모리 컴포넌트는 본 출원에서 추가로 설명되는 바와 같이 데이터의 2개의 상이한 부분(예를 들어, 논리적 구역)을 포함(예를 들어, 이들로 분리 및/또는 분할)될 수 있다. 이러한 경우에, 이전 웨어 레벨링 동작은 메모리의 각각의 부분 각각에 독립적으로 적용되어야 할 수 있고(예를 들어, 각각의 부분 각각에 대해 별개의 동작이 사용될 필요가 있을 수 있음), 각각의 부분 각각의 데이터는 단지 메모리의 일부에 걸쳐서만 재배치될 수 있다(예를 들어, 각각의 부분 각각의 데이터는 메모리의 별개의 물리적 구역에 유지될 수 있음). 그러나, 이러한 접근법은 메모리의 성능 및/또는 내구성을 증가시키는 데 비효율적일 수 있다. 예를 들어, 2개의 상이한 논리적 구역의 크기 및/또는 그에 대한 워크로드가 상이할 수 있기 때문에, 이러한 접근법에서는 물리적 구역 중 하나가 다른 구역보다 더 많이 스트레스를 받을 수 있다.
대조적으로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 이전 웨어 레벨링 동작보다 2개의 상이한 부분을 포함하는 메모리에 대해 보다 효과적으로 작동할(예를 들어, 성능 및/또는 내구성을 증가시킬) 수 있다. 예를 들어, 본 개시에 따른 데이터 재배치 동작은 메모리의 각각의 부분 각각에 동시에 적용될 수 있다(예를 들어, 동일한 동작이 양자 모두의 부분에 사용될 수 있다). 또한, 각각의 부분 각각의 데이터는 전체 메모리에 걸쳐 재배치될 수 있다(예를 들어, 각각의 부분 각각의 데이터는 메모리의 모든 상이한 물리적 위치에 걸쳐 슬라이드(slide)할 수 있다). 따라서, 본 개시에 따라 데이터를 재배치하는 동작은 2개의 부분의 크기 및/또는 워크로드의 차이를 고려(예를 들어, 보상)할 수 있을 수 있다.
또한, 이전 웨어 레벨링 동작은 하드웨어로 구현할 수 없을 수 있다. 대조적으로, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 하드웨어로 구현가능(예를 들어, 완전히 구현가능)할 수 있다. 예를 들어, 본 개시에 따른 데이터를 재배치하는 동작은 메모리의 제어기에서 또는 메모리 자체 내에서 구현가능할 수 있다. 따라서, 본 개시에 따른 데이터를 재배치하는 동작은 메모리의 레이턴시에 영향을 미치지 않을 수 있고 메모리에 추가적인 오버헤드를 추가하지 않을 수 있다. 일부 실시예에서, 개시된 해결책은 펌웨어 및/또는 소프트웨어로 적어도 부분적으로 구현될 수 있다.
실시예가 특정 유형의 메모리 또는 메모리 디바이스에 제한되지 않지만, 본 개시에 따른 데이터를 재배치하기 위한 동작(예를 들어, 웨어 레벨링 동작)은 저장소 클래스 메모리일 수 있는 제1 메모리 어레이 및 NAND 플래시 메모리일 수 있는 다수의 제2 메모리 어레이를 포함하는 하이브리드 메모리 디바이스 상에서 수행(예를 들어, 실행)될 수 있다. 예를 들어, 하이브리드 메모리의 성능 및/또는 내구성을 증가시키기 위해 제1 메모리 어레이 및/또는 제2 수의 메모리 어레이에 대해 동작이 수행될 수 있다.
본 출원에 사용될 때, 부정 관사("a", "an") 또는 "다수의(a number of)"는 하나 이상의 대상을 의미할 수 있고, "복수의(a plurality of)"는 2개 이상의 이러한 대상을 의미할 수 있다. 예를 들어, 메모리 디바이스는 하나 이상의 메모리 디바이스를 지칭할 수 있고, 복수의 메모리 디바이스는 2개 이상의 메모리 디바이스를 지칭할 수 있다.
도 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) 데이터 및 메타데이터 같은 오버헤드 데이터를 포함할 수 있다.
논리적 블록 어드레싱은 데이터의 논리적 섹터를 식별하기 위해 호스트에서 사용할 수 있는 체계이다. 예를 들어, 각각의 논리적 섹터는 고유한 논리적 블록 어드레스(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는 본 개시의 실시예에 따른 호스트(202) 및 메모리 디바이스(206) 형태의 장치를 포함하는 전자 또는 컴퓨팅 시스템(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)는 SCM(storage class memory)일 수 있고, 이는 제2 수의 메모리 어레이(212-1, …, 212-N)보다 더 빠른 액세스 시간을 갖기 때문에 메모리 디바이스(206)의 메인 메모리 역할을 하는 비휘발성 메모리일 수 있다. 예를 들어, 제1 메모리 어레이(210)는 특히 3D XPoint 메모리, FeRAM, 또는 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는 예를 들어 제1 LBA 시퀀스를 포함할 수 있고, 제2 수의 LBA는 예를 들어 제2 LBA 시퀀스를 포함할 수 있다.
예를 들어, 데이터의 제1 부분은 사용자 데이터를 포함할 수 있고, 데이터의 제2 부분은 시스템 데이터를 포함할 수 있다. 추가적인 예로서, 데이터의 제1 부분은 메모리 상에서 수행되는 프로그램 및/또는 감지 동작 동안 특정 빈도 이상으로 액세스된 데이터(예를 들어, 관련된 LBA가 액세스된 데이터)를 포함할 수 있고, 데이터의 제2 부분은 메모리 상에서 수행되는 프로그램 및/또는 감지 동작 동안 특정 빈도 미만으로 액세스된 데이터(예를 들어, 관련된 LBA가 액세스된 데이터)를 포함할 수 있다. 이러한 예에서, 데이터의 제1 부분은 "핫" 데이터로 분류되는 데이터를 포함할 수 있고, 데이터의 제2 부분은 "콜드" 데이터로 분류되는 데이터를 포함할 수 있다. 추가적인 예로서, 데이터의 제1 부분은 운영 체제 데이터(예를 들어, 운영 체제 파일)를 포함할 수 있고, 데이터의 제2 부분은 멀티미디어 데이터(예를 들어, 멀티미디어 파일)를 포함할 수 있다. 이러한 예에서, 데이터의 제1 부분은 "임계(critical)" 데이터로 분류되는 데이터를 포함할 수 있고, 데이터의 제2 부분은 "비임계(non-critical)" 데이터로 분류되는 데이터를 포함할 수 있다.
LBA의 제1 및 제2 수는 동일할 수 있거나(예를 들어, 데이터의 제1 및 제2 부분은 동일한 크기일 수 있음), 또는 LBA의 제1 수는 LBA의 제2 수와 상이할 수 있다(예를 들어, 데이터의 제1 부분 및 데이터의 제2 부분의 크기가 상이할 수 있음). 예를 들어, LBA의 제1 수는 LBA의 제2 수보다 더 클 수 있다(예를 들어, 데이터의 제1 부분의 크기가 데이터의 제2 부분의 크기보다 더 클 수 있음). 또한, 제1 수의 LBA의 각각의 LBA 각각의 크기는 제2 수의 LBA의 각각의 LBA 각각의 크기와 동일할 수 있거나, 또는 제1 수의 LBA의 각각의 LBA 각각의 크기는 제2 수의 LBA의 각각의 LBA 각각의 크기와 상이할 수 있다.
예를 들어, 제1 수의 LBA의 각각의 LBA 각각의 크기는 제2 수의 LBA의 각각의 LBA 각각의 크기의 배수일 수 있다. 또한, 메모리의 각각의 부분 각각과 관련된 LBA는 랜덤화될 수 있다. 예를 들어, LBA는 정적 랜덤화기에 의해 처리될 수 있다.
실시예에서, 메모리의 복수의 물리적 블록 중 적어도 2개는 내부에 저장된 유효 데이터를 갖지 않을 수 있다. 예를 들어, 메모리의 물리적 블록 중 2개는 공백일 수 있다. 이들 물리적 블록은 메모리에서 데이터의 제1 부분과 데이터의 제2 부분을 분리(예를 들어, 그 사이에 있을 수 있음)할 수 있다. 예를 들어, 이들 2개의 물리적 블록 중 제1 블록은 데이터의 제1 부분의 이후 및 데이터의 제2 부분 이전에 있을 수 있고, 2개의 물리적 블록 중 제2 블록은 제2 부분 이후 및 제1 부분 이전에 있을 수 있다. 이러한 물리적 블록은 본 출원에서 분리 블록으로 지칭될 수 있다.
도 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)일 수 있다. 또한, 메모리 디바이스(206) 및/또는 호스트(202)는 휘발성 및/또는 비휘발성 메모리의 버퍼와 다수의 레지스터를 포함할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 메모리 디바이스는 회로부(214)를 포함할 수 있다. 도 2에 예시된 실시예에서, 회로부(214)는 제어기(208)에 포함된다. 그러나, 본 개시의 실시예는 이에 제한되지 않는다.
예를 들어, 실시예에서, 회로부(214)는 (예를 들어, 제어기(208) 대신에) 메모리(210) 및/또는 메모리(212-1, …, 212-N)에(예를 들어, 동일한 다이 상에) 포함될 수 있다.
회로부(214)는 예를 들어 하드웨어를 포함할 수 있고, 본 개시에 따라 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N)에 저장된 데이터를 재배치하기 위해 웨어 레벨링 동작을 수행할 수 있다. 예를 들어, 회로부(214)는 제1 수의 LBA 중 특정 LBA와 관련된 데이터의 제1 부분의 데이터를 2개의 분리 블록 중 하나에 재배치할 수 있고, 제2 수의 LBA 중 특정 LBA와 관련된 데이터의 제2 부분의 데이터를 2개의 분리 블록 중 다른 하나에 재배치할 수 있다. 회로부(214)는 또한 상세히 설명될 바와 같이, 임의의 데이터 재배치로 이들을 업데이트된 상태로 유지하기 위해 논리적 대 물리적(L2P) 대응관계 테이블을 관리할 수 있다.
예를 들어, 회로부(214)는 제1 수의 LBA 중 마지막 LBA(예를 들어, 제1 LBA 시퀀스에서 마지막 LBA)와 관련된 제1 부분의 데이터를 제2 분리 블록(예를 들어, 제2 부분 이후 및 제1 부분 이전의 분리 블록)에 재배치할 수 있고, 회로부(214)는 제2 수의 LBA 중 마지막 LBA(예를 들어, 제2 LBA 시퀀스에서 마지막 LBA)와 관련된 제2 부분의 데이터를 제1 분리 블록(예를 들어, 제1 부분 이후 및 제2 부분 이전에 있는 분리 블록)에 재배치할 수 있다. 이러한 데이터 재배치는 내부에 유효 데이터가 저장되어 있지 않은 메모리의 2개의 상이한 물리적 블록을 초래할 수 있다(예를 들어, 메모리의 2개의 상이한 물리적 블록이 분리 블록이 되는 결과를 초래할 수 있음).
예를 들어, 제1 수의 LBA 중 마지막 LBA와 관련된 제1 부분의 데이터를 재배치하는 것은 다른 물리적 블록이 제2 부분 이후 제1 부분 전방에 있는 분리 블록이 되게 할 수 있고, 제2 수의 LBA 중 마지막 LBA와 관련된 제2 부분의 데이터를 재배치하는 것은 다른 물리적 블록이 제1 부분 이후 및 제2 부분 이전에 있는 분리 블록이 되게 할 수 있다. 또한, 제1 수의 LBA 중 마지막 LBA와 관련된 제1 부분의 데이터를 재배치하는 것은 제1 수의 LBA 중 다른 LBA(예를 들어, 제1 LBA 시퀀스에서 끝에서 2번째 LBA)가 제1 수의 LBA 중 마지막 LBA가 되게 할 수 있고, 제2 수의 LBA 중 마지막 LBA와 관련된 제2 부분의 데이터를 재배치하는 것은 제2 수의 LBA 중 다른 LBA(예를 들어, 제2 LBA 시퀀스의 끝에서 2번째 LBA)가 제2 수의 LBA 중 마지막 LBA가 되게 할 수 있다.
각각의 물리적 블록 재배치에서, 논리적 어드레스에 대한 액세스가 요청될 때 올바른 물리적 블록 매트가 어드레싱되도록 L2P 테이블(도 2에는 도시되지 않음)이 또한 업데이트된다. 일 실시예에 따르면, L2P 테이블은 적어도 2개의 레벨로 체계화되며; 동작 동안, 제1 레벨 테이블은 더 빠른 속도를 위해 휘발성 메모리에 복사된다(테이블은 또한 전원 차단 동안 정보 손실을 방지하기 위해 비휘발성 메모리에 유지됨). 제1 레벨 테이블 엔트리는 제2 레벨 테이블을 포인팅하고, 이는 차례로 물리적 메모리 어드레스를 포인팅한다. 제2 레벨 테이블은 일부 예에서 비트 변경 가능 비휘발성 메모리에서 구현된다. L2P 테이블의 특별한 관리는 핫 데이터(예를 들어, 빈번하게 액세스되는 데이터)에 대응하는 제2 레벨 테이블을 콜드 데이터(예를 들어, 거의 액세스되지 않는 데이터)에 대응하는 제2 레벨 테이블이 있는 물리적 위치로 스와핑 또는 시프트시키는 것을 포함할 수 있다.
이러한 데이터 재배치 동작 및 대응하는 L2P 테이블 업데이트를 예시하는 예가 (예를 들어, 도 3 및 도 4와 관련하여) 본 개시에 따라 본 출원에서 더 설명될 것이다.
실시예에서, 회로부(214)는 트리거링 이벤트에 응답하여 데이터를 재배치하는 동작을 수행할 수 있다. 트리거링 이벤트는, 예를 들어, 메모리 상에서 수행(예를 들어, 실행)되는 예를 들어 100개의 프로그램 동작과 같은 특정 수의 프로그램 동작일 수 있다. 예를 들어, 카운터(도 2에 도시되지 않음)는 수행되는 특정 수의 프로그램 동작에 응답하여 개시 신호를 전송하도록 구성될 수 있고, 회로부(214)는 카운터로부터의 개시 신호 수신에 응답하여 데이터를 재배치하는 동작을 수행할 수 있다. 추가적인 예로서, 트리거링 이벤트는 활성 모드에서 대기 모드, 유휴 모드 또는 전원 차단 모드로 진행하는 예를 들어 메모리 디바이스(206)와 같은 메모리에서 발생하는 전원 상태 전이일 수 있다.
실시예에서, 제2 부분의 데이터는 제1 부분의 데이터가 재배치되는 즉시 재배치될 수 있다. 그러나, 일부 경우에, 호스트(202)가 요청한 프로그램 또는 감지 동작과 같은 동작을 수행하기 위해 데이터를 재배치하는 동작을 일시 중단해야 할 수 있다.
이러한 경우, 호스트가 요청한 동작은 제1 부분의 데이터가 재배치될 때 수행될 수 있고(예를 들어, 데이터 재배치 완료시), 제2 부분의 데이터는 요청된 동작이 수행될 때(예를 들어, 동작 완료시) 재배치될 수 있다.
회로부(214)는 메모리의 수명 동안 메모리 어레이(210) 및/또는 메모리 어레이(212-1, …, 212-N)에 저장된 데이터를 추가로 재배치하기 위해 추가적인(예를 들어, 후속하는) 웨어 레벨링 동작을 수행할 수 있다. 예를 들어, 회로부(214)는 추가적인(예를 들어, 후속) 트리거링 이벤트에 응답하여 데이터를 재배치하기 위해 추가적인(예를 들어, 후속) 동작을 수행할 수 있다.
예를 들어, 본 출원에서 앞서 설명된 예시적인 동작에 후속하여 수행되는 메모리에서 데이터를 재배치하는 동작에서, 회로부(214)는 이제 마지막 LBA가 된 제1 수의 LBA 중 다른 LBA(예를 들어, 제1 LBA 시퀀스에서 이전에 끝에서 2번째 LBA였던 LBA)와 관련된 제1 부분의 데이터를 제2 부분 이후 및 제1 부분 이전에 있는, 이제 분리 블록이 된 다른 물리적 블록으로 재배치할 수 있고, 회로부(214)는 이제 마지막 LBA가 된 제2 수의 LBA 중 다른 LBA(예를 들어, 제2 LBA 시퀀스에서 이전에 끝에서 2번째 LBA였던 LBA)와 관련된 제2 부분의 데이터를 제1 부분 이후 및 제2 부분 이전에 있는, 이제 분리 블록이 된 다른 물리적 블록으로 재배치할 수 있다. 이러한 데이터 재배치는 다시 한 번 메모리의 2개의 상이한 물리적 블록이 분리 블록이 되고 제1 및 제2 수의 LBA 중 서로 다른 LBA가 각각 제1 및 제2 수의 LBA의 마지막 LBA가 될 수 있게 하고, 후속 데이터 재배치 동작은 유사한 방식으로 계속 수행될 수 있다.
도 2에 예시된 실시예는 본 개시의 실시예를 모호하게 하지 않도록 예시되지 않은 추가적인 회로부, 로직, 및/또는 컴포넌트를 포함할 수 있다. 예를 들어, 메모리 디바이스(206)는 I/0 회로부를 통해 I/0 커넥터를 통해 제공된 어드레스 신호를 래치하기 위한 어드레스 회로부를 포함할 수 있다.
어드레스 신호는 메모리 어레이(210 및 212-1, …, 212-N)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신 및 디코딩될 수 있다. 또한, 메모리 디바이스(206)는 메모리 어레이들(210-1 및 212-1, …, 212-N)과 별도로 및/또는 이에 추가하여, 예를 들어 DRAM 또는 SDRAM과 같은 메인 메모리를 포함할 수 있다.
이전 접근법에 따르면, NAND 메모리는 물리적 블록, 펌웨어 코드, L2P 테이블 및 기타 FTL(Flash Translaton Layer) 정보를 저장하는 데 사용된다. L2P 테이블은 논리적 블록(LBA) 대 물리적 블록(PBA) 어드레스 맵핑을 제공하며 다수의 레벨로 구조화된다. NAND 기술은 비트 변경이 불가능하기 때문에, 단일 PBA를 수정하려면 L2P 테이블의 전체 부분을 다른 페이지에 복사해야 한다.
본 개시의 실시예에 따르면, L2P 테이블은 비트 변경 가능한 NVM(예를 들어, 3D XPoint)에 저장되고; 따라서, LBA에 관련된 PBA는 그것이 속한 L2P 테이블의 부분을 이동시키지 않고 업데이트 인플레이스(update in-place)될 수 있다.
전형적으로, LBA의 서브세트만 빈번하게 기록된다(이후 이 메모리 섹터를 "핫" LBA라 지칭한다). 이는 L2P 테이블의 일부 엔트리만 빈번하게 기록되는 반면, 나머지는 거의 업데이트되지 않음을 의미한다. 목표 저장 디바이스 수명을 달성하기 위해, L2P 테이블의 일부를 주기적으로 다른 물리적 위치로 이동시켜 빈번하게 기록하는 엔트리를 다른 물리적 어드레스에 저장한다(웨어 레벨링). LBA 기록 분포는 사용 모델에 크게 기초하여 변경된다는 점을 유의하여야 한다.
본 개시는 L2P 테이블 웨어 레벨링를 최적화하기 위한 개선된 방법 및 이러한 새로운 웨어 레벨링 방법을 구현하는 제어기 펌웨어가 제공된 메모리 디바이스를 정의한다.
다음 설명에서, 본 개시의 실시예는, 외부 호스트 디바이스 또는 장치(202)가 논리적 블록 어드레스(LBA)로 알려진 블록 또는 메모리 부분을 알 수 있다는 개념에서, "관리"되는 것으로 정의되는 유형의 메모리 디바이스, 예를 들어, 비휘발성 메모리 디바이스에 관련하여 설명된다.
반대로, 상주 메모리 제어기(208) 및 관련 펌웨어는 논리적 블록 어드레스(LBA)와 상이할 수 있는 물리적 블록 어드레스(PBA)로 알려진 위치에 메모리 디바이스의 물리적 공간을 체계화하도록 구조화된다.
달리 말해서, 메모리 디바이스의 논리적 및 물리적 처계화가 다르며 외부 엔티티(예를 들어, 호스트 디바이스)에 의해 사용되는 논리적 어드레스와 내부 제어기 및 그 펌웨어에 의해 사용되는 물리적 어드레스 사이의 대응관계를 보고하는 L2P(논리적-대-물리적을 의미) 테이블이 제공된다. 다른 실시예에 따르면, P2P 테이블은 해당 분야의 전문가에게 자명한 필요한 적응과 함께 호스트에 의해 직접 관리될 수 있다.
이제, L2P 테이블은 비트 변경이 불가능하고 메모리 셀의 업데이트 인플레이스의 수행을 허용하지 않는다는 개념에서 미리 결정된 세분화도를 갖는 비휘발성 플래시 또는 NAND 메모리 부분으로 일반적으로 구조화된다. 반대로, 3D 크로스 포인트 비휘발성 메모리 디바이스는 단일 비트라도 업데이트를 수행하는 것이 허용된다.
도 3은 본 개시에 따른 L2P 테이블의 로직 구조의 개략도를 도시하며, 여기서 FLT(First Level Table) 박스로 표시된 적어도 제1 레벨은 블록 SLT(Second Level Table)로 표시된 복수의 제2 레벨 테이블 중 하나를 추적하는 물리적 위치에 저장된다.
페이지 기반 FTL에서, L2P 테이블은 각각의 논리적 블록 어드레스(LBA)로부터 물리적 블록 어드레스(PBA)를 제공한다. L2P 테이블은 다수의 레벨로 구조화된다. 도 3은 2-레벨 구조를 도시하고: 제1 레벨(FLT)은 제2 레벨 테이블(SLT)에 대한 물리적 포인터를 함유한다. 예를 들어, 장치 설계 및 용량에 따라, 예를 들어, 제1 레벨 테이블, 제2 레벨 테이블 및 제3 레벨 테이블을 포함하는 더 많은 레벨이 일부 실시예에서 존재할 수 있다. 본 개시에서, SLT 테이블은 PTA(Physical Table Address)라고 지칭되는 물리적 위치에 저장된다. SLT 테이블은 L2P 엔트리를 함유한다.
각각의 LBA에 대한 L2P 엔트리가 있다. L2P 엔트리는 PBA를 지정하며, 이는 다른 LBA 특정 정보를 함유할 수 있다. 제1 레벨 테이블은 SRAM에 복사되고, 반면에, SLT 테이블은 NVM에 있다. 각각의 SLT 테이블은 테이블ID로 지정된다.
테이블ID는 0에서 RoundUp(DevCapacity/SLTSize)-1까지의 범위이고, 여기서:
Figure pct00001
DevCapacity는 LBA의 수이고,
Figure pct00002
SLTSize는 SLT 테이블의 엔트리의 수이다.
3D XPoint와 같은 비트 변경 가능한 NVM에서, 해당 엔트리가 속한 전체 SLT 테이블을 이동하지 않고도 L2P 엔트리를 업데이트 인플레이스(update in-place)할 수 있다. 방법을 알아본다.
일반적으로, FLT는 메모리 디바이스의 시작 페이즈 동안, 즉, 부스트 페이즈 동안에 항상 휘발성 메모리 부분, 예를 들어 RAM 메모리 부분에 로딩된다. 이는 제1 레벨 테이블의 물리적 위치 및 물리적 구조가 다른 제2 레벨 테이블의 것과 다르다는 것을 의미한다.
제2 레벨 테이블은 각각의 단일 LBA에 대해, 표시된 논리적 위치에 대해 물리적 위치를 변환하는 데 사용되는 포인터를 저장하는 테이블이다.
달리 말해서, 호스트 디바이스가 단일 LBA를 재기록하거나 업데이트해야 할 때마다 해당 데이터가 저장된 올바른 물리적 위치를 추적해야 한다. 또한, 심지어 물리적 위치에 대한 포인터를 함유하는 제2 레벨 테이블도 따라서 업데이트되어야 한다.
호스트는 단지 업데이트할 논리적 어드레스의 표시만 제공하고 제어기 펌웨어가 L2P 테이블의 도움으로 이러한 위치를 추적하는 올바른 물리적 위치에 대한 맵핑 및 적절한 업데이트를 수행해야 한다.
호스트 디바이스가 요청한 임의의 업데이트에서, 메모리 디바이스의 제2 레벨 테이블에 저장된 포인터의 대응 업데이트가 수행된다.
본 개시에 따르면, 제2 레벨 테이블은 비트 변경 가능한 비휘발성 메모리 부분, 예를 들어 3D 크로스 포인트(3D Xpoint) 메모리 부분으로 구조화된다. 이는 소위 업데이트 인플레이스, 또는, 달리 말해서, 포인터의 동일한 물리적 위치를 업데이트하는 것을 가능하게 하는 큰 이점이 있다.
호스트가 볼 수 있는 어드레싱 가능 공간에서, 이러한 핫 메모리 영역에 대해 상대적으로 빈번한 액세스가 이루어진다는 개념에서 "핫"으로 정의될 수 있는 메모리 부분 또는 위치 또는 영역이 존재하는 반면, 다른 메모리 부분 또는 위치 또는 영역은 거의 액세스되지 않는다는 개념에서 "콜드"로 정의될 수 있다.
따라서, 특정 빈도로 동일한 포인터를 업데이트 인플레이스할 가능성을 고려하면 해당 포인터를 저장하는 데 사용되는 메모리 셀이 다른 메모리 영역보다 훨씬 빨리 에이징될 수 있다.
에이징된 메모리 부분을 포함하는 메모리 디바이스가 그 성능이 극적으로 감소할 수 있거나, 서비스 불가 상태가 되어 호스트 디바이스를 향해 매우 빈번한 오류를 생성하여 무용화될 위험이 있기 때문에 이는 매우 심각한 문제일 수 있다.
이 문제는 이미 직면한 문제여서, 물리적 어드레스가 기록되는 횟수를 모니터링하고 기록 카운터 값을 기초로 논리적 대 물리적 맵핑을 시프트시킬 수 있는 웨어 레벨링 알고리즘이 사용된다.
그러나, 일부 웨어 레벨링 알고리즘에 의해 제공되는 알려진 해결책은 예상대로 메모리 디바이스의 수명을 개선시키는 것을 허용하지 않으며 본 개시는 앞서 설명한 알려진 해결책의 제한을 극복할 수 있는 새로운 웨어 레벨링 메커니즘을 교시하는 목적을 가지고 있다.
이와 관련하여, 도 4의 예를 참조하여 이하에서 개시되는 제2 레벨 테이블(STL)의 체계화가 매우 중요하다. 이러한 체계화 덕분에, 본 개시의 본 발명의 웨어 레벨링 방법을 채택하는 것이 가능하다.
도 4는 행렬(400)의 행으로 체계화된 복수의 N 세그먼트 0, 1, …, n-1을 포함하고, 복수의 P개의 행렬 열이 최종 카운터 WLCnt에 의해 완성되는 SLT 테이블의 개략도를 도시한다.
도 4는 SLT 테이블 구조를 개략적으로 도시한다. 각각의 SLT 테이블은 n개의 L2P 세그먼트를 포함한다. L2P 세그먼트는 SLT 테이블을 판독하거나 기록할 수 있는 세분화도이다. L2P 세그먼트는 L2P 엔트리 또는 테이블 메타데이터를 함유할 수 있다.
L2P 세그먼트에는 복수의 P L2P 엔트리가 있다(도 4 참조). 각각의 L2P 세그먼트는 WLCnt(웨어 레벨링 카운터)를 함유한다. 이 카운터는 L2P 세그먼트가 기록될 때마다 증분되며, 그 값은 동적 웨어 레벨링 알고리즘에 의해 사용된다.
SLT 세그먼트의 웨어 레벨링 카운터가 정의된 임계값에 도달하면, 그것이 속한 전체 SLT 테이블이 다른 물리적 위치로 이동되고, 이러한 SLT 테이블의 모든 웨어 레벨링 카운터가 0으로 재설정된다.
테이블이 그 물리적 위치로 이동한 시기에 대한 표시는 L2P 테이블 메타데이터에 저장된다. 각각의 SLT 테이블 이동시 단조적 카운터(Table스탬프)가 증분된다. 테이블을 이동할 때, 현재 테이블스탬프(TableStamp) 값이 테이블 메타데이터에 복사된다.
L2P 테이블을 저장하는 데 전용되는 물리적 영역은 테이블이 이동될 때 사용되는 일부 여분의 PTA를 함유하기 때문에 필요한 것보다 더 크다. 여분의 또는 이용 가능한 PTA의 물리적 테이블 어드레스는 도 6에 도시된 바와 같이 목록, 즉, PTA 목록에 저장된다. PTA 목록은 순환 버퍼로 체계화된다. PTA 목록의 헤드는 테이블 이동에서 목적지 어드레스로 사용할 PTA(PTADEST)를 포인팅한다. 테이블이 이동된 후, 이전 PTA가 PTA 목록의 테일에 추가된다.
언급한 바와 같이, 이 제2 레벨 테이블의 각각의 세그먼트(400i)는 메모리 디바이스에 대한 포인터의 업데이트가 가능한 최소 세분화도를 나타낸다. 달리 말해서, 포인터를 변경하고 세그먼트의 단일 엔트리를 업데이트해야 하는 경우, 특정 엔트리를 포함하여 전체 세그먼트를 재기록해야 한다.
각각의 업데이트 페이즈에서 수행되는 동작은 순차적으로 다음과 같다: 전체 테이블 세그먼트의 판독, 업데이트 인플레이스 및 기록. 분명히, 일반 K 번째 세그먼트의 업데이트 페이즈 동안 다른 테이블 세그먼트는 관여되지 않는다.
행렬(400)의 각각의 박스는 라벨 L2P로 표현되어 있고, 일반 외부 논리적 블록 어드레스 LBA에 대응하는 물리적 메모리 위치의 포인터의 존재를 나타낸다. 외부라는 용어는 외부 호스트에 의해 이루어진 어드레싱된 메모리 디바이스를 향한 요청을 나타낸다.
도 5는 때때로 세그먼트 카운터 또는 단순히 카운터라고도 지칭되는 웨어 레벨링 카운터 WLCnt가 뒤따르는 복수의 포인터(L2P[0], …, L2P[P-1])를 포함하는 단일 세그먼트(400i)의 보다 상세한 도면을 도시한다.
행렬(400)의 최종 행(n-1)은 테이블 메타데이터 및 최종 카운터를 포함한다. 메타데이터 세그먼트는 테이블이 시프트될 때만 기록된다.
SLT 테이블 행렬(400)의 최종 열은 주어진 섹터가 업데이트된 횟수를 카운팅하도록 각각 구성된 카운터만을 포함한다. 대응 카운터에 저장된 값의 증분은 업데이트 페이즈의 레코드를 유지할 수 있게 한다.
재기록 사이클의 수를 나타내는 열 P의 카운터 중 하나에 함유된 레코딩된 값이 미리 결정된 임계값에 도달하면, 그 후, 전체 포인터 테이블이 다른 PTA로 이동된다.
카운터의 컨텐츠는 알려져 있으며, 그 이유는, 업데이트가 필요할 때마다 업데이트에 수반되는 동작 시퀀스가 판독 페이즈, 업데이트 인플레이스 및 재기록을 포함하기 때문이다. 따라서, 업데이트 페이즈가 시작될 때 카운터 레코드의 컨텐츠가 판독된다.
이러한 방식으로, 업데이트 페이즈를 처리하는 제어기 펌웨어는 카운터 값이 설정된 임계값을 초과했음을 즉시 인식하고 메모리 디바이스의 다른 물리적 위치에서 테이블을 시프트시키거나 복사하기 위한 프로그래밍 페이즈를 시작한다.
명확성을 위해, 위의 문장은 주어진 보조 레벨 로직 테이블이 다른 물리적 위치(PTA)로 시프트되었음을 의미한다.
그러나, 이 해결책은 주어진 제2 레벨 테이블에 통합된 복수의 세그먼트를 완전히 활용하는 것을 허용하지 않는다.
본 개시는 이러한 추가적인 문제를 해결하고 에이징된 세그먼트의 보다 상세한 평가에 기초하여 보다 효율적인 웨어 레벨링 해결책을 제공한다.
마지막 메타데이터 세그먼트는 대응 물리적 위치에서 선택된 보조 레벨 테이블을 식별하는 데 유용한 정보를 함유하지만, "최종 카운터"라고 지칭되는 이러한 메타데이터 섹터와 관련된 카운터는 얼마나 많은 시프트가 수행되었는지를 나타내는 요약 값을 함유한다. 테이블 자체가 얼마나 "핫"한지에 대한 표시는 테이블 메타데이터 세그먼트의 테이블스탬프 필드에 저장된다.
이 최종 카운터는 맨 처음에 "0"으로 설정되고 대응 테이블이 새로운 물리적 위치로 시프트할 때마다 증분되어 해당 최종 카운터를 포함하는 대응 테이블의 "상태"에 대한 동적 표시를 제공한다.
메타데이터 섹터와 최종 카운터의 조합된 정보는 메타데이터 섹터가 k번째 물리적 위치에 저장된 i번째 테이블에 대한 정보를 함유하고, 동시에, 최종 카운터가 얼마나 많은 테이블 변위가 발생했는지를 제시한다는 개념에서 주어진 SLT 테이블의 완전한 상태를 식별할 수 있게 한다.
2개 이상의 최종 카운터의 값을 비교하거나 최종 카운터에 함유된 값을 임계값(SLT의 시프트를 트리거링하는 데 사용되는 임계값과 상이한 제2 임계값일 수 있음)과 단순히 비교하는 것으로, 예를 들어, 사용 지표와 같은 정성적 라벨(예를 들어, "핫" 또는 "콜드")을 테이블에 연관시키고 이러한 테이블을 변위 프로그램에 포함할지 여부를 지정하는 것이 가능하다.
각각의 대응하는 섹터와 관련된 카운터 및 메타데이터 섹터와 관련된 최종 카운터에 의해 획득된 교차 정보는 주어진 테이블의 시프트 여부를 판정하기 위해 조합될 수 있다.
예를 들어: 단일 카운터가 미리 결정된 임계값을 충족하거나 초과하는 양까지 그 값이 증분되어야 하는 경우, 전체 테이블을 시프트시키라는 펌웨어 요청을 자동으로 생성하지만, 최종 카운터가 소위 "콜드" 테이블을 나타내는 경우, 이 정보는 해당 테이블이 최근에 그다지 많이 활용되지 않았기 때문에 가능한 시프트 지연에 대해 이전 정보와 조합될 수 있다.
최종 카운터의 정보는 매우 중요하며, 단일 세그먼트에 관한 정보보다 우선순위를 가질 수 있으므로 "콜드" 테이블의 물리적 위치가 다른 덜 콜드한 또는 더 나은, 핫 테이블의 컨텐츠를 호스팅하기 위한 가능한 물리적 위치로서 제공될 수 있다.
이 가능성은 이하에서 보게 될 대응 알고리즘에 의해 규제된다.
도 6은 물리적 테이블 어드레스(PTA)로 표시되고 소위 핫 테이블의 위치를 변경하거나 시프트하는 데 일반적으로 사용되는 물리적 위치의 순환 목록(600)을 도시한다. 이 목록(600)의 엔트리는 테이블을 저장하는 데 이용할 수 있는 자유 물리적 위치(PTA)를 나타낸다.
어떤 이유에서든 새로운 위치로 테이블을 시프트해야 할 때마다, 이 목록의 상단측 또는 헤드로부터 물리적 위치 PTA를 선택해야 하는 반면, 제거된 테이블은 목록의 테일 위치에 배치된다. 달리 말해서, 새로운 물리적 위치로 시프트된 테이블의 오래된 물리적 위치를 테일의 마지막 이용 가능한 위치에 추가하거나 대기열화하는 대기열 규칙 FIFO(선입 선출)에 따라 목록이 관리된다.
물론, 우리는 여기에서 본 개시의 목적을 위해 테이블(PTA)에 대해 이용 가능한 총 공간의 수가 테이블의 수보다 더 많다는 것을 고려하고 있다.
도 6의 간단한 목록에서 제안된 메커니즘은 "핫" 및 "콜드" 테이블의 순환이 단지 순환적이라는 개념에서 강성적이다.
도 7은 본 개시에 따라 새롭게 제안된 테이블 스와핑 메커니즘과 조합하여 도 6의 목록을 도시하고 있는 다른 개략도이다.
도 7은 본 개시의 웨어 레벨링 알고리즘이 핫 SLT 테이블을 콜드 SLT 테이블과 스와핑하는 방법을 예시한다. L2P 세그먼트가 기록될 때마다, 그 웨어 레벨링 카운터가 증분된다. 카운터가 정의된 임계값(DynWLTh)에 도달할 때, 전체 SLT 테이블이 그 현재 물리적 위치(PTA_n)로부터 다른 위치로 이동된다.
PTA_m에 저장된 콜드 SLT 테이블이 이전에 식별된 경우, 이때, 콜드 SLT 테이블은 PTA 목록(PTA_i)의 헤드에 있는 PTA로 이동된다. 그런 다음, 핫 SLT 테이블은 이전에 콜드 SLT 테이블(PTA_m)이 있던 위치로 이동되고, 그 PTA(PTA_n)가 PTA 목록에 첨부된다. 콜드 테이블이 식별되지 않은 경우, 테이블 스와핑이 이루어지지 않고, 핫 SLT 테이블은 PTA 목록의 헤드로부터 취해진 PTA_i로 이동된다.
콜드 PTA 선택은 모든 SLT 테이블 메타데이터의 주기적 스캔을 통해 수행되고: 메타데이터 필드에 저장된 테이블스탬프는 현재 테이블스탬프 값과 비교된다. 두 값 사이의 차이가 임계값(정적WL)보다 더 크면 SLT는 콜드 상태이다.
도 7에 도시된 테이블(700)은 SLT 테이블을 저장하는 데 이용 가능한, 가능한 K 메모리 위치(PTA)를 나타낸다.
박스(710)는 이전에 개시된 동적 웨어 레벨링 방법에 따라 핫으로 식별된 테이블에 대응하는 PTA 위치를 나타낸다.
박스(720)는 이전에 개시된 정적 웨어 레벨링 방법에 따라 콜드로 식별된 테이블에 대응하는 PTA 위치를 나타낸다.
박스(730)는 도 6의 목록에서(예를 들어, 목록의 헤드에서) 이용 가능한, 그리고, 사용될 최초의 것으로 식별된 일반 및 프리 PTA 위치를 나타낸다.
본 개시에 따른 방법은 콜드 테이블(720)을 테이블(730)이 나타내는 첫 번째 이용 가능한 위치로 시프팅 또는 스와핑하는 것을 제안한다. 이 단계는 도 7에 보고된 화살표(1)로 도시된다.
콜드 테이블의 위치는 이제 자유 상태이기 때문에, 이전 해결책에서 제안한 것처럼 목록 테일에서 이러한 위치를 이용 가능하게 하는 대신 핫 테이블(710)을 호스팅하는 데 사용된다.
따라서, 본 개시에 따르면, 제2 단계(2)로서 핫 테이블(710)을 콜드 테이블(720)의 위치로 시프트 또는 스와핑한다.
마지막으로, 단계 (3)에서 테이블(710)은 도 6의 목록의 테일 위치에 대기열화된다.
이러한 방식으로:
Figure pct00003
빈번하게 기록되는 엔트리를 함유하는 L2P 테이블의 부분(핫 테이블)은 거의 기록되지 않는 것(콜드 테이블)과 스와핑되고;
Figure pct00004
콜드 부분을 식별하는 임계값은 워크로드 특성에 기초하여 자동으로 조절된다.
달리 말해서, 펌웨어가 핫 로직 테이블을 스와핑하여 이전에 콜드 로직 테이블이 차지했던 물리적 위치에 이를 기록한다. 동시에, 콜드 로직 테이블은 도 6의 목록에서 핫 테이블을 스와핑하는 데 이용 가능한 첫 번째 물리적 위치에 기록된다.
앞서 설명한 메커니즘은 소위 콜드 테이블을 적절하게 검출하는 것이 가능한 경우에만 올바르게 작동한다.
기록 카운터는 임계값과 비교되어 맵핑을 수정해야 하는 시기를 결정한다. 성능을 최적화하기 위해 워크로드에 기초하여 임계값을 적절하게 설정해야 한다. 잘못된 임계값은, 빈번하게 기록되는 데이터가 다른 물리적 어드레스에 충분히 빈번하게 재맵핑할 수 없기 때문에, 또는, 반대로 이러한 재맵핑이 너무 빈번하게 발생하게 되기 때문에, 디바이스 수명이 단축되게 할 수 있다.
정적WL 임계값은 임계(critical) 웨어 레벨링 알고리즘 파라미터이다. 너무 높으면, 스와핑을 위한 콜드 테이블을 찾기 어려울 수 있으며, 핫 테이블은 PTA 목록에서 검색된 PTA로 이동될 것이다. PTA 목록의 PTA는 주로 다른 핫 테이블에 사용된다는 점에 유의한다. 반면에, 정적WL 임계값이 너무 낮으면, 이때, 발견된 PTA가 다른 핫 테이블에 이미 사용되었을 수 있으며 스와핑은 이점이 없다. 안타깝게도, 정적WL 임계값의 최적 값은 워크로드의 핫니스 특성에 따라 달라지며, 따라서, 간단한 방법으로 미리 정의할 수 없다. 이 문제를 해결하기 위해 자가-적응형 정적WL 임계값 알고리즘이 정의되고 개시된다.
나중에 도 9에서 예시될 바와 같이, 각각의 정적WL Check_interval이 종료될 때 히트 수(number of hits)가 평가된다. 정적인 것(Min_Hit_rate)으로 발견된 PTA가 너무 적으면, 현재 정적WL 임계값이 너무 높음을 의미하고, 이때, 그 값은 delta_th만큼 감소된다.
반면에, 정적인 것(Max_Hit_rate)으로 발견된 PTA가 너무 많으면, 현재 정적WL 임계값이 너무 낮음을 의미하며, 이때, 그 값은 delta_th만큼 증가된다. 정적WL Check_interval 및 delta_th의 값을 변경하면, 워크로드 변경에 따라 알고리즘의 반응성을 제어하는 것이 가능하다.
제안된 방법에서, 워크로드 특성에 따라 임계값이 자동으로 조절된다.
도 8은 본 개시의 방법을 구현하는 알고리즘의 주요 단계를 흐름도의 형태로 도시한다. 정적 WL 스캔은 테이블 이동과 동일한 속도로 수행되며, 발견된 가능한 콜드 테이블은 테이블 스왑에서 즉시 사용된다. 대안적으로, 콜드 테이블 목록을 미리 준비할 수 있다.
단계 801에서, L2P 세그먼트가 PTA_n에 기록될 때마다, 그 웨어 레벨링 카운터가 증분된다(즉, WearLevCnt += 1). 그 다음, 방법은 테스트 단계 802로 진행하고, 여기서, PTA_n에 저장된 테이블이 핫인지 여부가 결정된다.
달리 말해서, 카운터가 정의된 임계값(DynWL_th), 즉, WearLevCnt > DynWL_th에 도달하면 PTA_n에 저장된 테이블이 핫이라고 결정된다. 그렇지 않으면, PTA_n에 저장된 테이블이 핫이 아닌 것으로 결정된다.
PTA_n에 저장된 테이블이 핫이 아닌 경우 방법이 종료되고 빠져나간다.
반대로, PTA_n이 핫이라고 결정되면, 방법은 단계 803으로 진행하여 정적WL_cursor에 의해 선택된 PTA_m을 검사한다.
정적WL_cursor은 앞서 설명한 정적WL 임계값이라고도 지칭된다. 그 다음, 테스트 단계 804에서, PTA_m에 저장된 테이블이 콜드인지 여부를 결정한다. 결정 방법은 이전에 개시된 것과 동일하므로 중복을 피하기 위해 더 이상 설명하지 않는다.
PTA_m에 저장된 테이블이 콜드인 것으로 결정되면, 방법은 단계 805로 진행하고, 여기서 PTA 목록의 헤드로부터 정적 WL에 대한 프리 PTA를 검색해야 한다(즉, PTA_SWL = PTAList.head()).
그 다음, 방법은 단계 806으로 진행하고, 여기서, PTA_m에 저장된 콜드 SLT 테이블은 단계 805에서 검색된 PTA_SWL로 이동된다. 이 경우, 단계 807에서 PTA_m이 동적WL에 대한 목표 PTA로 설정되고, 즉, PTA_DWL = PTA_m이며, 그 다음, 방법은 단계 809로 진행하고, 여기서, 핫 SLT 테이블이 PTA_n으로부터 PTA_DWL로 이동된다.
PTA_m에 저장된 테이블이 콜드가 아닌 것으로 결정되면, 방법은 단계 808로 진행하고, 여기서, PTA 목록의 헤드로부터 동적WL에 대한 프리 PTA를 검색해야 한다(즉, PTA_DWL = PTAList.head()).
단계 807 및 808 양자 모두는 단계 809로 진행되며, 여기서 핫 SLT 테이블은 PTA_n로부터 이전 단계에서 검색된 PTA_DWL로 이동된다.
핫 SLT 테이블이 PTA_n로부터 PTA_DWL로 이동된 후, 방법은 단계 810으로 진행하고, 여기서, PTA_n이 PTA 목록의 테일에 추가되고, 즉, PTAList.tail() = PTA_n이고, 정적WL_cursor이 증분된다.
도 9는 자가-적응형 정적 웨어 레벨링 임계값을 관리하는 방법에 관한 알고리즘 흐름도를 도시한다.
방법은 메타데이터 필드에 저장된 테이블스탬프가 현재 테이블스탬프 값과 비교되는 단계 901에서 시작된다(즉, 테이블스탬프 - 정적WL.cursor().테이블스탬프 > 정적WL_th?).
두 값 사이의 차이가 임계값(정적WL_th)보다 더 크면, 이때, SLT 테이블은 콜드로 설정된다.
그 다음, 방법은 단계 902로 진행하고, 여기서, 정적WL 검사 히트의 수가 증분되고, 즉, Nr_of_Hits++이 이루어지고, 동시에, 단계 903에서 정적WL 검사의 수가 증분(즉, Nr_of_Checks++)된다.
메타데이터 필드에 저장된 테이블스탬프와 현재 테이블스탬프 값 사이의 차이가 임계값(정적WL_th)보다 더 크지 않은 경우, 방법은 단계 903으로 직접 진행한다.
그 후, 각각의 정적WL Check_interval이 종료될 때 히트 수가 평가된다. 단계 904에서, 정적WL 검사의 수가 정적WL Check_interval과 동일한지 여부가 결정된다(즉, Nr_of_Checks = Check_interval?).
정적WL Check_interval가 종료되지 않은 경우, 달리 말해서, 정적WL 검사의 수가 정적WL Check_interval과 같지 않으면, 방법이 종료되고 빠져나간다.
정적WL 검사 수가 정적WL Check_interval과 같으면, 정적WL Check_interval의 종료를 의미한다. 그리고, 그 후, 히트 수가 평가된다. 단계 905에서, 정적인 것으로 발견된 PTA가 너무 적으면(즉, Nr_of_Hits < Min_Hit_rate), 이는 현재 정적WL 임계값이 너무 높음을 의미하며, 그 값은 단계 906에서 delta_th(즉, 정적WL_th-= delta_th)만큼 감소된다. 그 후, 방법이 종료되고 빠져나간다.
반면, 그렇지 않다면, 단계 907에서 정적인 것으로 발견된 PTA가 너무 많은지가 결정된다(즉, Nr_of_Hits > Max_Hit_rate?). 너무 많은 PTA가 정적으로 발견된 경우, 이는 현재 정적WL 임계값이 너무 낮음을 의미하고, 그 값은 단계 908에서 delta_th(즉, 정적WL_th+ = delta_th)만큼 증가된다. 그 후, 방법이 종료되고 빠져나간다.
정적WL Check_interval 및 delta_th의 값을 변경하면, 워크로드 변경에 따라 알고리즘의 반응성을 제어하는 것이 가능하다.
각각의 정적WL Check_interval이 종료되면, 정적WL 검사 히트 수(Nr_of_Hits)와 정적WL 검사 수(Nr_of_Checks) 양자 모두가 0으로 재설정되고(즉, Nr_of_Hits = 0 및 Nr_of_Checks = 0); 그 후, 방법은 종료되고 단계 909에서 빠져나간다.
도 10은 핫니스 특성이 다른 두 워크로드에서 자체 조절 알고리즘이 동작하는 방법의 예를 도시한다.
도 10에서 알 수 있는 바와 같이, 정적WL 임계값은 워크로드 특성에 따라 자동으로 조절된다.
두 도면에서: (a) 중간 핫니스 워크로드 및 (b) 높은 핫니스 워크로드에서, 정적WL 임계값은 상이한 방식으로 변경된다. 구체적으로, 중간 핫니스 워크로드에서 정적WL 임계값은 상대적으로 작은 빈도로 조절되는 반면 높은 핫니스 워크로드에서는 정적WL 임계값이 상대적으로 큰 빈도로 조절된다. 자체 조절 알고리즘은 이미 이전에 설명되었다.
이제, 도 11의 예를 더 참조하여, L2P 테이블 엔트리 스크램블링에 기초한 본 발명의 웨어 레벨링 방법의 다른 양태가 개시될 것이다.
웨어 레벨링에 대한 추가 개선은 SLT 테이블 내에서 L2P 세그먼트를 스크램블링하여 달성할 수 있다.
본 발명의 방법의 이러한 추가 양태는 L2P 테이블 메타데이터가 L2P 세그먼트보다 덜 자주 기록되고; 따라서, SLT 테이블 레이아웃에서 그 물리적 위치를 이동하는 데 이점이 있다는 고려에서 시작한다.
또한, SLT 테이블 내에는 나머지 엔트리보다 훨씬 더 자주 기록된 L2P 엔트리가 있을 수 있다. 어드레스 스크램블링은 테이블이 동일한 PTA에 맵핑될 때 L2P 세그먼트가 다른 물리적 위치에 기록되도록 해야 한다.
SLT 테이블은 테이블ID로 지정되고 그 물리적 위치는 PTA로 지정된다.
도 11은 동일한 PTA에서 SLT 테이블의 3회의 후속 기록 사이클에 대한 구현예를 도시한다.
또한, 해시 함수를 사용하여 L2P 세그먼트 스크램블링을 생성할 수 있다. 테이블 메타데이터가 항상 동일한 물리적 위치에 저장되는 것을 방지하려면 해시 함수 입력에서 테이블ID를 사용하는 것으로 충분하다. 테이블ID는 테이블에 특정하기 때문에, 해시 함수는 다른 테이블이 동일한 PTA에 맵핑될 때 다른 L2P 세그먼트 스크램블링을 반환한다.
L2P 세그먼트 스크램블링의 무작위화는 또한 테이블ID 대신 테이블스탬프를 이용하여 획득할 수 있다. 이 방법은 테이블이 동일한 PTA에 여러 번 맵핑될 때 동일한 스크램블링의 생성을 방지한다.
해시 함수의 예는 모듈로 함수이다. 테이블이 N L2P 세그먼트를 함유하는 경우, 오프셋은 다음과 같이 계산된다:
오프셋 = 테이블 ID mod N
그 후, 오프셋을 사용하여 스크램블링된 L2P 세그먼트 ID를 획득한다:
스크램블링된 엔트리 ID =(엔트리 ID + 오프셋) mod N
도 12는 L2P 세그먼트 스크램블링이 있거나 없는 시뮬레이션 결과를 도시한다.
시뮬레이션 결과는 L2P 세그먼트 스크램블링이 없는 상황과 비교하여 L2P 세그먼트 스크램블링이 있는 기록 카운터 값의 상당한 감소를 나타낸다. L2P 세그먼트 스크램블링으로 L2P 기록 사이클이 감소되어 예상대로 메모리 디바이스의 수명을 개선시킬 수 있다.
본 개시에서 제안하는 방법은 테이블 스와핑을 개선하여 메모리 디바이스의 수명을 연장시킨다. 이 해결책은 메모리 디바이스의 일부가 메모리 디바이스가 설치된 전자 디바이스(즉, 휴대폰, 컴퓨터 또는 임의의 다른 가능한 디바이스)에서 실행되는 애플리케이션에 의해 단지 드물게만 액세스된다는 것이 알려져 있기 때문에 큰 이점이 있다.
본 개시의 핫 및 콜드 테이블 스와핑 방법으로, 심지어 메모리 디바이스의 원격 액세스된 부분조차도 메모리 디바이스의 더 나은 더 규칙적으로 분산된 기록 페이즈를 위해 사용된다.

Claims (29)

  1. 관리되는 메모리 디바이스에 대한 자가-적응형 웨어 레벨링(self-adaptive wear leveling) 방법에 있어서, 제1 레벨 테이블이 상기 메모리 디바이스에 대한 포인터를 포함하는 복수의 제2 레벨 테이블을 어드레싱하고,
    - 상기 제2 레벨 테이블의 세그먼트의 업데이트 페이즈(updating phase)의 수를 검출하는 단계;
    - 상기 수가 정의된 임계값을 충족한 것에 기초하여, 상기 제2 레벨 테이블 중 하나를 다른 제2 레벨 테이블의 위치로 시프트시키는 단계(shifting)를 포함하는, 자가-적응형 웨어 레벨링 방법.
  2. 청구항 1에 있어서, 상기 검출하는 단계는 상기 하나의 제2 레벨 테이블의 엔트리와 동일한 세그먼트에 제공된 웨어 레벨링 카운터의 값을 판독하는 단계를 포함하는, 자가-적응형 웨어 레벨링 방법.
  3. 청구항 2에 있어서, 상기 제2 레벨 테이블 중 하나를 시프트시키는 단계는 상기 카운터가 상기 정의된 임계값에 도달한 것에 기초하여 상기 전체 하나의 제2 레벨 테이블을 상기 위치로 시프트시키는 단계를 포함하는, 자가-적응형 웨어 레벨링 방법.
  4. 청구항 1에 있어서, 상기 시프트시키는 단계는 상기 전체 하나의 제2 레벨 테이블을 상기 하나의 제2 레벨 테이블의 시작 물리적 위치와 다른 물리적 위치로 시프트시키는 단계를 포함하는, 자가-적응형 웨어 레벨링 방법.
  5. 청구항 1에 있어서, 상기 하나의 제2 레벨 테이블의 최종 세그먼트는 테이블 메타데이터로서 사용되고, 상기 최종 세그먼트와 관련된 최종 카운터는 상기 하나의 제2 레벨 테이블이 시프트될 때마다 증분되고, 상기 최종 카운터는 상기 하나의 제2 레벨 테이블이 얼마나 많은 시프트가 수행되었는지를 나타내는, 자가-적응형 웨어 레벨링 방법.
  6. 청구항 5에 있어서, 상기 최종 카운터는 제2 임계값과 비교되어 상기 하나의 제2 레벨 테이블의 물리적 위치 변위 프로그램에 포함될 상기 하나의 제2 레벨 테이블에 대한 정성적 라벨에 연관시키는, 자가-적응형 웨어 레벨링 방법.
  7. 청구항 1에 있어서, 상기 하나의 제2 레벨 테이블은 개개의 웨어 레벨링 카운터를 각각 함유하는 복수의 세그먼트를 포함하고, 이러한 카운터는 대응하는 세그먼트가 기록되거나 업데이트될 때마다 증분되는, 자가-적응형 웨어 레벨링 방법.
  8. 청구항 7에 있어서, 상기 하나의 제2 레벨 테이블을 상기 위치로 시프트시키는 단계는 상기 하나의 제2 레벨 테이블의 상기 웨어 레벨링 카운터를 0으로 재설정하는 단계를 포함하는, 자가-적응형 웨어 레벨링 방법.
  9. 청구항 1에 있어서, 상기 시프트시키는 단계는 상기 하나의 제2 레벨 테이블의 개개의 세그먼트와 관련된 웨어 레벨링 카운터 및 상기 하나의 제2 레벨 테이블의 메타데이터 세그먼트와 관련된 최종 카운터에 의해 획득된 정보의 교차 검사 후에 수행되는, 자가-적응형 웨어 레벨링 방법.
  10. 청구항 1에 있어서, 상기 시프트시키는 단계는 이용 가능한 물리적 테이블 어드레스의 목록을 검사하는 단계를 포함하는, 자가-적응형 웨어 레벨링 방법.
  11. 청구항 10에 있어서, 상기 제2 레벨 테이블 중 하나는 빈번하게 업데이트되는 테이블을 포함하고, 상기 다른 제2 레벨 테이블은 거의 업데이트되지 않는 테이블을 포함하며, 상기 시프트시키는 단계는 상기 빈번하게 업데이트되는 테이블의 어드레스를 이용 가능한 물리적 테이블 어드레스의 목록에 삽입하기 전에 수행되는, 자가-적응형 웨어 레벨링 방법.
  12. 청구항 1에 있어서, 상기 하나의 제2 레벨 테이블 내의 논리적-대-물리적 세그먼트의 스크램블링(scrambling)을 더 포함하는, 자가-적응형 웨어 레벨링 방법.
  13. 청구항 12에 있어서, 상기 스크램블링은 해시 함수를 이용하여 상기 하나의 제2 레벨 테이블의 스크램블링 시퀀스를 생성하는 단계를 포함하고, 상기 해시 함수는 상이한 테이블이 동일한 물리적 테이블 어드레스에 맵핑될 때 상이한 논리적-대-물리적 세그먼트 스크램블링을 반환하는, 자가-적응형 웨어 레벨링 방법.
  14. 상이한 논리적 및 물리적 체계화(organization)를 갖고 논리적 메모리 어드레스와 물리적 메모리 어드레스 사이의 대응관계 테이블을 적어도 포함하는 메모리 디바이스에 있어서,
    - 상기 메모리 디바이스에 대한 포인터를 포함하는 복수의 제2 레벨 테이블을 어드레싱하는 적어도 제1 레벨 테이블;
    - 상기 복수의 제2 레벨 테이블 내의 복수의 세그먼트를 포함하고 - 각각은 대응하는 세그먼트의 업데이트 페이즈의 수를 검출하기 위한 카운터를 포함함 -, 메모리 디바이스.
  15. 청구항 14에 있어서, 상기 제2 레벨 테이블은 비트 변경 가능한 비휘발성 메모리 부분으로 구조화되는, 메모리 디바이스.
  16. 청구항 15에 있어서, 상기 비트 변경 가능한 메모리 부분은 3D 크로스 포인트 메모리 부분인, 메모리 디바이스.
  17. 청구항 14에 있어서, 상기 제2 레벨 테이블의 각각의 세그먼트의 카운터는 상기 대응하는 세그먼트가 기록되거나 업데이트될 때마다 증분되도록 구성된 웨어 레벨링 카운터를 포함하는, 메모리 디바이스.
  18. 청구항 17에 있어서, 상기 웨어 레벨링 카운터에 대한 증분을 검출하고 정의된 임계값을 충족하거나 초과하는 상기 웨어 레벨링 카운터에 저장된 수에 기초하여 상기 제2 레벨 테이블을 다른 물리적 위치로 시프트시키기 위한 펌웨어를 포함하는, 메모리 디바이스.
  19. 청구항 14에 있어서, 상기 제2 레벨 테이블의 최종 세그먼트는 테이블 메타데이터로서 사용되고, 상기 메타데이터 세그먼트와 관련된 최종 카운터를 포함하는, 메모리 디바이스.
  20. 청구항 19에 있어서, 상기 최종 카운터는 상기 대응하는 테이블이 다른 물리적 위치로 시프트될 때마다 증분되도록 구성되는, 메모리 디바이스.
  21. 청구항 14에 있어서, 상기 카운터와 임계값 사이의 비교 및/또는 최종 세그먼트와 관련된 최종 카운터와 제2 임계값 사이의 비교의 결과에 기초하여 상기 제2 레벨 테이블을 시프트시키도록 구성된, 메모리 디바이스.
  22. 청구항 14에 있어서, 상기 복수의 제2 레벨 테이블 내의 제2 레벨 테이블이 다른 물리적 위치로 시프트할 때마다 업데이트되도록 구성된 이용 가능한 물리적 테이블 어드레스의 목록을 포함하는, 메모리 디바이스.
  23. 관리되는 메모리 디바이스 및 상기 관리되는 메모리 디바이스에 결합된 호스트 디바이스를 포함하는 장치에 있어서,
    - 상이한 논리적 및 물리적 체계화를 갖고 논리적 메모리 어드레스와 물리적 메모리 어드레스 사이의 대응관계 테이블을 적어도 포함하는 메모리 구조를 포함하고, 상기 메모리 구조는
    - 상기 관리되는 메모리 디바이스의 물리적 어드레스에 대한 포인터를 포함하는 복수의 제2 레벨 테이블을 어드레싱하는 적어도 제1 레벨 테이블;
    - 상기 제2 레벨 테이블의 복수의 세그먼트- 각각은 대응하는 세그먼트의 업데이트 페이즈의 수를 검출하기 위한 세그먼트 카운터를 포함하는, 장치.
  24. 청구항 23에 있어서, 상기 복수의 제2 레벨 테이블은 비트 변경 가능한 비휘발성 메모리 부분으로 구조화되는, 장치.
  25. 청구항 23에 있어서, 상기 비트 변경 가능한 메모리 부분은 3D 크로스 포인트 메모리 부분인, 장치.
  26. 청구항 23에 있어서, 각각의 세그먼트는 상기 대응하는 세그먼트가 기록되거나 업데이트될 때마다 증분되도록 구성된 웨어 레벨링 카운터를 포함하는, 장치.
  27. 청구항 26에 있어서, 상기 웨어 레벨링 카운터의 증분을 검출하고, 정의된 임계값을 충족하거나 초과하는 카운터에 저장된 수에 기초하여 상기 복수의 제2 레벨 테이블 중 하나를 다른 물리적 위치로 시프트시키기 위한 펌웨어를 포함하는, 장치.
  28. 청구항 23에 있어서, 상기 제2 레벨 테이블의 테이블은 메타데이터 세그먼트 및 개개의 메타데이터 세그먼트와 관련된 최종 카운터를 포함하는, 장치.
  29. 청구항 23에 있어서, 상기 복수의 제2 레벨 테이블의 테이블은 카운터와 임계값 사이의 비교 및/또는 최종 세그먼트와 관련된 최종 카운터와 제2 임계값 사이의 비교의 결과에 기초하여 시프트되도록 구성된, 장치.
KR1020227014195A 2019-10-09 2019-10-09 자가-적응형 웨어 레벨링 방법 및 알고리즘 KR20220066402A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2019/000970 WO2021069943A1 (en) 2019-10-09 2019-10-09 Self-adaptive wear leveling method and algorithm

Publications (1)

Publication Number Publication Date
KR20220066402A true KR20220066402A (ko) 2022-05-24

Family

ID=75437221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227014195A KR20220066402A (ko) 2019-10-09 2019-10-09 자가-적응형 웨어 레벨링 방법 및 알고리즘

Country Status (7)

Country Link
US (1) US20210406169A1 (ko)
EP (1) EP4042283A4 (ko)
JP (1) JP2022551627A (ko)
KR (1) KR20220066402A (ko)
CN (1) CN114503086A (ko)
TW (1) TWI763050B (ko)
WO (1) WO2021069943A1 (ko)

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
WO2007072313A2 (en) * 2005-12-22 2007-06-28 Nxp B.V. Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information
TWI362668B (en) * 2008-03-28 2012-04-21 Phison Electronics Corp Method for promoting management efficiency of an non-volatile memory storage device, non-volatile memory storage device therewith, and controller therewith
US8180995B2 (en) * 2009-01-21 2012-05-15 Micron Technology, Inc. Logical address offset in response to detecting a memory formatting operation
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
KR101692417B1 (ko) * 2011-12-29 2017-01-05 인텔 코포레이션 다이렉트 액세스를 갖는 다중-레벨 메모리
US9558069B2 (en) * 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9710176B1 (en) * 2014-08-22 2017-07-18 Sk Hynix Memory Solutions Inc. Maintaining wear spread by dynamically adjusting wear-leveling frequency
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
TWI563509B (en) * 2015-07-07 2016-12-21 Phison Electronics Corp Wear leveling method, memory storage device and memory control circuit unit
TWI604308B (zh) * 2015-11-18 2017-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US10593421B2 (en) * 2015-12-01 2020-03-17 Cnex Labs, Inc. Method and apparatus for logically removing defective pages in non-volatile memory storage device
KR102593552B1 (ko) * 2016-09-07 2023-10-25 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
US10824554B2 (en) * 2016-12-14 2020-11-03 Via Technologies, Inc. Method and apparatus for efficiently sorting iteration with small sorting set
JP2019020788A (ja) * 2017-07-11 2019-02-07 東芝メモリ株式会社 メモリシステムおよび制御方法
CN114546293A (zh) * 2017-09-22 2022-05-27 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
KR20190107504A (ko) * 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10922221B2 (en) * 2018-03-28 2021-02-16 Micron Technology, Inc. Memory management

Also Published As

Publication number Publication date
CN114503086A (zh) 2022-05-13
TWI763050B (zh) 2022-05-01
US20210406169A1 (en) 2021-12-30
JP2022551627A (ja) 2022-12-12
EP4042283A1 (en) 2022-08-17
WO2021069943A1 (en) 2021-04-15
EP4042283A4 (en) 2023-07-12
TW202127262A (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
KR102382887B1 (ko) 가비지 컬렉션
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
KR102569783B1 (ko) 비순차적 구역 네임스페이스들
KR102149817B1 (ko) 메모리 어드레싱
KR101759811B1 (ko) 솔리드 스테이트 메모리를 포멧팅하기 위한 메모리 제어기, 방법, 및 솔리드 스테이트 메모리 시스템
JP5728672B2 (ja) ハイブリッドメモリ管理
US20150098271A1 (en) System and method of storing data in a data storage device
JP2012519899A (ja) メモリブロックの選択
JP2013544414A (ja) トランザクションログの復元
CN114730598A (zh) 利用分区命名空间简缩ssd中的逻辑到物理表指针
CN112463647A (zh) 使用散列来减小前向映射表的大小
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US20140013030A1 (en) Memory storage device, memory controller thereof, and method for writing data thereof
CN114730290A (zh) 将变化日志表移动至与分区对准
CN117043753A (zh) Zns设备中的不同写入优先级
TWI388986B (zh) 快閃記憶體裝置的運作方法及快閃記憶體裝置
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
US20210019254A1 (en) Wear leveling based on sub-group write counts in a memory sub-system
CN113391760B (zh) 分区存储中的快照管理
TWI763050B (zh) 自適應損耗平衡方法及演算法與相關記憶體裝置及設備
CN117015766A (zh) 在分区命名空间ssd中的快速垃圾收集
JP2021525924A (ja) データの2つの部分を有するメモリのデータの再配置
US20240152449A1 (en) Read and write address translation using reserved memory pages for multi-page translation units
US11409459B2 (en) Data parking for SSDs with zones
US11789861B2 (en) Wear leveling based on sub-group write counts in a memory sub-system