KR20200027045A - 메모리 어드레싱 - Google Patents

메모리 어드레싱 Download PDF

Info

Publication number
KR20200027045A
KR20200027045A KR1020207006016A KR20207006016A KR20200027045A KR 20200027045 A KR20200027045 A KR 20200027045A KR 1020207006016 A KR1020207006016 A KR 1020207006016A KR 20207006016 A KR20207006016 A KR 20207006016A KR 20200027045 A KR20200027045 A KR 20200027045A
Authority
KR
South Korea
Prior art keywords
entry
physical address
physical
array
memory
Prior art date
Application number
KR1020207006016A
Other languages
English (en)
Other versions
KR102149817B1 (ko
Inventor
조나단 엠. 하스웰
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20200027045A publication Critical patent/KR20200027045A/ko
Application granted granted Critical
Publication of KR102149817B1 publication Critical patent/KR102149817B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

메모리 어드레싱을 위한 예시적인 장치는 메모리 셀의 어레이를 포함할 수 있다. 장치는 어드레스 매핑 테이블의 적어도 일부를 저장하도록 구성된 메모리 캐시를 포함할 수 있다. 어드레스 매핑 테이블은 어레이의 논리 어드레스 공간의 각각의 양에 대응하는 다수의 영역을 포함할 수 있다. 어드레스 매핑 테이블은 변환 유닛(TU)을 어레이의 물리적 위치에 매핑할 수 있다. 다수의 영역들 각각은 제 1 테이블을 포함할 수 있다. 제 1 테이블은 각각의 논리 어드레스 공간 량의 각각의 TU 논리 어드레스, 포인터 및 오프셋에 대응하는 엔트리를 포함할 수 있다. 다수의 영역들 각각은 제 2 테이블을 포함할 수 있다. 제 2 테이블은 어레이의 각각의 물리적 어드레스 범위에 대응하는 엔트리를 포함할 수 있다. 제 2 테이블의 엔트리는 각각의 물리적 어드레스 필드 및 대응하는 각각의 카운트 필드를 포함할 수 있다.

Description

메모리 어드레싱
본 발명은 일반적으로 반도체 메모리 및 방법에 관한 것으로, 특히 메모리 어드레싱에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로 및/또는 외부 착탈식 장치로서 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 많은 다른 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하기 위해 전원이 필요할 수 있으며, 특히, RAM(Random-Access Memory), DRAM(Dynamic Random Access Memory) 및 SDRAM(Synchronous Dynamic Random Access Memory)을 포함할 수 있다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지할 수 있으며 NAND 플래시 메모리, NOR 플래시 메모리, PCRAM(phase change random access memory), RRAM(resistive random access memory) 및 MRAM(magnetic random access memory), 등을 포함할 수 있다.
메모리 디바이스는 함께 결합되어 솔리드 스테이트 드라이브(SSD)를 형성할 수 있다. SSD는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서, 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나 휘발성 메모리(예를 들어, DRAM 및/또는 SRAM)를 포함할 수 있다. 플래시 메모리 디바이스는 예를 들어 플로팅 게이트와 같은 전하 저장 구조에 데이터를 저장하는 메모리 셀을 포함할 수 있고, 광범위한 전자 애플리케이션을 위한 비휘발성 메모리로서 사용될 수 있다. 플래시 메모리 디바이스는 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소비를 허용하는 단일-트랜지스터 메모리 셀을 사용한다.
플래시 메모리 디바이스는 광범위한 전자 응용을 위한 휘발성 및 비휘발성 메모리로서 이용될 수 있다. 플래시 메모리 디바이스는 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소비를 허용하는 단일-트랜지스터 메모리 셀을 사용한다. 플래시 메모리 디바이스는 각각의 기본 메모리 셀 구성이 배열되는 논리적 형태와 관련하여, 소위 "NAND" 또는 "NOR"로 호칭되는 메모리 어레이 구조를 가질 수 있다. 플래시 메모리의 용도로는 다른 전자 디바이스들 중에서도, SSD(Solid State Drive), 개인용 컴퓨터, PDA(Personal Digital Assistant), 디지털 카메라, 휴대폰, 휴대용 음악 플레이어(예: MP3 플레이어) 및 영화 플레이어 용 메모리가 포함된다. 프로그램 코드, 사용자 데이터 및/또는 시스템 데이터, 가령, 기본 입출력 시스템(BIOS)과 같은 데이터는 일반적으로 플래시 메모리 디바이스에 저장된다.
플래시 메모리 디바이스는 플래시 전이 계층(FTL)을 포함할 수 있다. FTL을 사용하여(예를 들어, 플래시 메모리 디바이스에서 수행되는 프로그래밍 동작 동안) 데이터 엔트리와 연관된 논리 어드레스를 플래시 메모리의 물리적 어드레스에 매핑할 수 있다. FTL은 매핑 동작을 수행하기 위해 플래시 메모리 디바이스의 로컬 메모리에 어드레스 매핑 테이블을 포함할 수 있다. 그러나, 이전 FTL 접근법들에서 사용된 어드레스 매핑 테이블들의 크기(예를 들어, 저장된 데이터의 양)는 고정되어 있고 스케일링하기가 더 어려울 수 있다. 이전 FTL 방식에 사용된 어드레스 매핑 테이블의 크기가 고정될 수 있기 때문에, 이전 FTL 방식에 사용된 어드레스 매핑 테이블은 다른 유형의 플래시 메모리 디바이스에 적합하지 않을 수 있다. 즉, 이전의 FTL 접근법은한 유형의 플래시 메모리 디바이스에만 사용될 수 있다. 또한, 데이터를 물리적으로 저장하는 메모리의 크기가 증가함에 따라, 어드레스 매핑 테이블은 관리하기 어려운 크기로 증가할 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 다수의 물리 블록을 갖는 메모리 어레이의 일부의 도면을 도시한다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 3a는 호스트 및 메모리 어레이 형태의 장치의 블록도를 도시한다.
도 3b는 본 개시의 다수의 실시예들에 따른 어드레스 매핑 테이블의 블록도를 도시한다.
도 4는 본 개시의 다수의 실시예들에 따른 어드레스 매핑 테이블의 블록도를 도시한다.
도 5는 본 개시의 다수의 실시예에 따른 메모리 어드레싱 방법의 블록도를 도시한다.
메모리 어드레싱을 위한 예시적인 장치가 메모리 셀의 어레이를 포함할 수 있다. 장치는 어드레스 매핑 테이블의 적어도 일부를 저장하도록 구성된 메모리 캐시를 포함할 수 있다. 어드레스 매핑 테이블은 어레이의 논리 어드레스 공간의 각각의 양에 대응하는 다수의 영역을 포함할 수 있다. 어드레스 매핑 테이블은 변환 단위(TU)를 배열의 물리적 위치에 매핑할 수 있다. 다수의 영역들 각각은 각각의 TU 논리 어드레스에 대응하는 엔트리들을 포함하는 제 1 테이블을 포함할 수 있다. 다수의 영역들 각각은 어레이의 각각의 물리적 어드레스 범위에 대응하는 엔트리를 포함하는 제 2 테이블을 포함할 수 있다. 제 1 테이블의 엔트리는 제 2 테이블의 특정 엔트리에 대한 각각의 포인터를 포함할 수 있다. 제 1 테이블의 엔트리는 제 2 테이블의 특정 엔트리에 대응하는 물리적 어드레스 범위 내에서, 각각의 TU에 대응하는 물리적 데이터가 저장되는 위치를 나타내는, 대응하는 각각의 오프셋을 포함할 수 있다. 제 2 테이블의 엔트리는 특정 엔트리에 대응하는 물리적 어드레스 범위의 제 1 물리적 어드레스를 나타내는 각각의 물리적 어드레스 필드를 포함할 수 있다. 제 2 테이블의 엔트리는 특정 엔트리에 대응하는 물리적 어드레스 범위와 연관된 TU의 수량을 나타내는 대응하는 각각의 카운트 필드를 포함할 수 있다.
본 개시의 실시예는 가변 크기를 갖는 테이블(예를 들어, 어드레스 매핑 테이블)을 갖는 플래시 변환 계층을 포함할 수 있다. 즉, 본 발명의 플래시 변환 계층에서 테이블의 크기(예를 들어, 저장된 데이터의 양)는 변할 수 있다. 본 개시의 플래시 변환 계층에서의 테이블의 크기가 변경될 수 있기 때문에, 테이블은 상이한 유형의 플래시 메모리 디바이스에 적응될 수 있다. 즉, 본 개시에 따른 플래시 변환 계층은 상이한 유형의 플래시 메모리 디바이스에 사용될 수 있다.
본 개시의 실시예들은 변환 유닛(TU)의 다수의 논리 어드레스를 어드레스 매핑 테이블의 단일 물리적 어드레스와 상관시키는 어드레스 매핑 테이블을 포함할 수 있다. 이것은 특정 물리적 어드레스에서 시작되는 물리적 위치에서 순차적으로 기록되는 다수의 TU를, 특정 물리적 어드레스를 가리키는 엔트리를 포함하는 물리적 어드레스 엔트리와 상관시킴으로써 수행될 수 있다. 예로서, TU의 논리 어드레스에 대응하는 3 개의 엔트리가 단일 물리 어드레스와 연관될 수 있다. 3 개의 논리 어드레스 엔트리 각각과 관련된 오프셋은 단일 물리 어드레스와 관련하여 TU가 실제로 위치하는 곳을 나타낼 수 있다. 메모리 드라이브의 크기가 계속 증가함에 따라, 어드레스 매핑 테이블의 크기를 줄이는 방법은 논리 어드레스를 실제 어드레스에 매핑하는 데 사용되는 어드레스 매핑 테이블의 대응하는 증가없이 더 큰 메모리 드라이브 크기를 허용할 수 있다. 이러한 방식으로, 어드레스 매핑 테이블을 저장하는데 사용되는 물리적 메모리 공간이 최소화될 수 있고 어드레스 매핑 테이블의 확장성이 증가될 수 있다.
본 발명의 다음의 상세한 설명에서, 본 발명의 일부를 형성하고 본 발명의 다수의 실시예들이 어떻게 실시될 수 있는지를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 프로세스, 전기적 및/또는 구조적 변경이 본 개시의 범위를 벗어나지 않고 이루어질 수 있음을 이해해야 한다.
본 명세서에서 사용되는 바와 같이, "많은" 것은 하나 이상의 그러한 것들을 지칭할 수 있다. 예를 들어, 다수의 메모리 셀은 하나 이상의 메모리 셀을 지칭할 수 있다. 부가적으로, 특히 도면에서 참조 번호와 관련하여 본 명세서에서 사용된 지정자 "N"은 이와 같이 지정된 특정 특징의 다수가 본 개시의 다수의 실시예에 포함될 수 있음을 나타낸다.
본 명세서의 도면은 첫 번째 자리가 도면 번호에 대응하고 나머지 숫자는 도면에서 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 상이한 도면들 사이의 유사한 요소 또는 구성요소는 유사한 디지트를 사용함으로써 식별될 수 있다. 예를 들어, 202는 도 2에서 요소 "02"를 참조할 수 있고, 유사한 요소는 도 3에서 302로 참조될 수 있다. 이해될 바와 같이, 본 명세서의 다양한 실시예에 도시된 요소는 본 개시의 다수의 추가 실시예들을 제공하기 위해 추가, 교환 및/또는 제거될 수 있다. 또한, 이해될 수 있는 바와 같이, 도면에 제공된 구성요소의 비율 및 상대적인 스케일은 본 개시의 실시예를 설명하기 위한 것이며 제한적인 의미로 간주되어서는 안된다.
도 1은 본 개시의 하나 이상의 실시예에 따른 다수의 물리 블록을 갖는 메모리 어레이(100)의 일부의 도면을 도시한다. 메모리 어레이(100)는 예를 들어 NAND 또는 NOR 플래시 비휘발성 메모리 어레이 일 수 있다. 그러나, 본 개시의 실시예들은 특정 유형의 메모리 어레이로 제한되지 않는다. 또한, 도 1에 도시되지는 않았지만, 당업자는 메모리 어레이(100)가 그 동작과 관련된 다양한 주변 회로와 함께 특정 반도체 다이 상에 위치되거나 다수의 반도체 다이에 걸쳐 구성될 수 있다는 것을 이해할 것이다.
도 1에 도시된 바와 같이, 메모리 어레이(100)는 메모리 셀의 다수의 물리 블록(116-0(블록 0), 116-1(블록 1),..., 116-B(블록 B))을 갖는다. 메모리 셀은 단일 레벨 셀 및/또는 다중 레벨 셀일 수 있다. 예로서, 메모리 어레이(100)의 물리 블록의 수는 128 블록, 512 블록 또는 1,024 블록 일 수 있지만, 실시예는 128의 특정 배수 또는 메모리 어레이(100)의 임의의 특정 수의 물리 블록으로 제한되지 않는다.
도 1에 도시된 예에서, 각각의 물리 블록(116-0, 116-1,..., 116-B)는 하나의 유닛으로서 함께 소거될 수 있는 메모리 셀을 포함한다(예를 들어, 각각의 물리 블록의 셀은 실질적으로 동시에 소거될 수 있다). 예를 들어, 각각의 물리 블록의 메모리 셀은 단일 소거 동작으로 함께 소거될 수 있다.
도 1에 도시된 바와 같이, 각각의 물리 블록(116-0, 116-1,..., 116-B)는 액세스 라인(예를 들어, 워드 라인)에 연결된 다수의 물리적인 행(예를 들어, 120-0, 120-1,..., 120-R)의 메모리 셀을 포함한다. 각 물리 블록의 행 수(예를 들어, 워드 라인)는 32 개일 수 있지만, 실시예는 물리 블록 당 특정 수의 행(120-0, 120-1,..., 120-N)에 한정되지 않는다.
당 업자는 각 행(120-0, 120-1,..., 120-R)이 하나 이상의 물리적 페이지의 데이터를 포함(예를 들어, 저장)할 수 있음을 이해할 것이다. 물리적 페이지는 프로그래밍 및/또는 감지 단위(예를 들어, 기능적 메모리 셀 그룹으로서 함께 프로그래밍 및/또는 감지되는 다수의 셀)를 지칭한다. 도 1에 도시된 실시예에서, 각 행(120-0, 120-1,…, 120-R)은 한 페이지의 데이터를 저장한다. 그러나, 본 개시의 실시예는 그렇게 제한되지 않는다. 예를 들어, 본 발명의 하나 이상의 실시예에서, 각 행은 다수의 페이지의 데이터를 저장할 수 있고, 하나 이상의 짝수 페이지의 데이터는 짝수 비트 라인과 연계되고, 하나 이상의 홀수 페이지의 데이터는 홀수 비트 라인과 연계된다. 또한, 멀티 레벨 셀을 포함하는 실시예의 경우, 물리적 페이지는 논리적으로 데이터의 상위 페이지 및 하위 페이지로 분할될 수 있으며, 행의 각 셀은 데이터의 상위 페이지를 향한 하나 이상의 비트 및 데이터의 하위 페이지를 향한 하나 이상의 비트에 기여한다. 하나 이상의 실시예에서, 메모리 어레이는 다수의 물리적인 메모리 셀 블록을 포함할 수 있고 각각의 물리적 블록은 다수의 페이지로 구성될 수 있다.
본 개시의 하나 이상의 실시예들에서, 그리고 도 1에 도시된 바와 같이, 행과 연관된 페이지는 변환 유닛(TU)(122-0, 122-1, . , 122-S)으로 지칭되는 데이터(예를 들어, 프로그래밍 동작 후)를 저장할 수 있다. 각 TU(122-0, 122-1, ... , 122-S)는 데이터의 하나 이상의 논리적 부분에 대응하는 페이지(120-0, 120-1,…, 120-R)의 일부분에 저장될 수 있다. 예를 들어, 특정 TU는 예를 들어, TU들(122-0 내지 122-S)이 페이지(120-0)에 저장되는 것으로 도시된 바와 같이, 페이지에 저장된 특정 논리 섹터에 대응할 수 있다.
페이지(120-0)에 저장된 각각의 TU(122-0, 122-1,..., 122-S)는 예를 들어, 관련된 물리적 블록 번호(PBN)와 같은 물리적 식별자를 가질 것이다. TU(122-0 내지 122-S)와 연관된 PBN은 메모리 어레이(100) 내에서 섹터의 실제 물리적 위치를 식별한다. 예를 들어, PBN은 CE #, LUN, 평면, 블록, 페이지, 위치 및/또는 상태(status)를 식별할 수 있다. 또한, 다수의 PBN은 메모리 어레이(100) 내의 메모리 셀의 물리적 페이지에 매핑될 수 있다. 예를 들어, 하나, 둘 또는 4 개의 PBN은 메모리 어레이(100)의 유형에 따라 물리적 페이지에 매핑될 수 있다. 다수의 실시예에서, 블록은 하나의 단위로서 함께 소거되는 메모리 셀 그룹을 지칭한다. 다수의 블록이 메모리 셀의 평면에 포함될 수 있고 어레이는 다수의 평면을 포함할 수 있다. 일례로서, 메모리 디바이스는 페이지 당 8KB(킬로바이트)의 사용자 데이터, 블록 당 128 페이지의 사용자 데이터, 평면 당 2048 개의 블록, 및 디바이스 당 16 개의 평면을 저장하도록 구성될 수 있다.
이 예에서, TU는 데이터를 전송 및 모니터링하기 위한 변환 유닛 또는 관리 유닛으로서 사용되고 있다. 각 TU는 단일 논리 블록 어드레스(LBA) 또는 둘 이상의 LBA로 구성될 수 있다. 당업자라면 이해할 수 있는 바와 같이, 논리 블록 어드레싱은 논리 데이터 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 방식이다. 예를 들어, 각 논리 섹터는 고유 논리 블록 어드레스(LBA)에 대응할 수 있다. 또한 LBA는 물리적 어드레스에 해당할 수도 있다. 예로서, 논리 데이터 섹터는 다수의 데이터 바이트(예를 들어, 256 바이트, 512 바이트 또는 1,024 바이트) 일 수 있다. 그러나, 실시예는 이러한 예에 제한되지 않는다.
본 개시의 하나 이상의 실시예에서, 다수의 LBA는 논리 페이지 번호(LPN)에 대응할 수 있다. 즉, LPN은 다수의 LBA(예를 들어, 다수의 논리적 데이터 섹터)를 포함할 수 있다. 예를 들어, 하나 이상의 LPN은 LBA 및/또는 LPN의 크기에 따라 하나의 LBA에 논리적으로 매핑될 수 있다. 또한, 가상 페이지 번호(VPN)는 예를 들어 도 2a-5와 연계하여 여기서 또한 기술되는 바와 같이, 테이블(232, 236, 242, 332, 438 및/또는 542))과 같은 테이블에 저장된 데이터의 논리적 어드레스(예를 들어, 위치를 매핑)를 식별하는데 사용될 수 있다. 즉, VPN은 테이블에 저장된 데이터에 대한 LPN과 등가물일 수 있다.
물리 블록들(116-0, 116-1,..., 116-B), 행(120-0, 120-1,..., 120-R), 섹터(122-0, 122-1,..., 122-S), 및 페이지에 대한 다른 구성들이 가능하다는 점에 주목해야 한다. 예를 들어, 물리 블록(116-0, 116-1, 116-B)의 행(120-0, 120-1,..., 120-R)은 예를 들어 512 바이트보다 많거나 적은 데이터를 포함할 수 있는 단일 논리 섹터에 대응하는 데이터를 각각 저장할 수 있다.
도 2는 본 개시의 많은 실시예들에 따른 메모리 시스템(204)을 포함하는 컴퓨팅 시스템(201) 형태의 장치의 블록도이다. 본 명세서에서 사용되는 바와 같이, 메모리 시스템, 제어기 및/또는 메모리 디바이스는 개별적으로 "장치"일 수 있다.
메모리 시스템(204)은 예를 들어 솔리드 스테이트 드라이브(SSD) 일 수 있다. 도 2에 도시된 실시예에서, 메모리 시스템(204)은 호스트 인터페이스(206), 메모리(예를 들어, 다수의 메모리 디바이스(210-1, 210-2,..., 210-N))와, 물리적 호스트 인터페이스(206) 및 메모리 디바이스들(210-1, 210-2,..., 210-N)에 연결된 제어기(208)(예를 들어, SSD 제어기)를 포함한다.
메모리 디바이스들(210-1, 210-2,..., 210-N)은 예를 들어 다수의 비휘발성 메모리 어레이(예를 들어, 비휘발성 메모리 셀의 어레이)를 포함할 수 있다. 예를 들어, 메모리 디바이스들(210-1, 210-2,..., 210-N)은 도 1과 관련하여 이전에 설명된 메모리 어레이(100)와 유사한 다수의 메모리 어레이를 포함할 수 있다. 메모리 디바이스(210-1)는 메모리 디바이스(210-1) 내에 저장된 테이블(211)을 포함할 수 있다. 일부 실시예들에서, 테이블(211)은, 모든 메모리(예를 들어, 메모리 디바이스들(210-1, 201-2,…, 210-N))에 대응하고 모든 메모리의 논리적 대 물리적 매핑을 포함하는, 어드레스 매핑 테이블 일 수 있다.
동작시, 데이터는 예를 들어, 데이터 페이지로서 메모리 시스템의 메모리 디바이스(예를 들어, 메모리 시스템(204)의 메모리 디바이스(210-1,..., 210-N))에 기록 및/또는 판독될 수 있다. 이와 같이, 데이터의 페이지는 메모리 시스템의 데이터 전송 크기로 지칭될 수 있다. 데이터는 섹터(예를 들어, 호스트 섹터)로 지칭되는 데이터 세그먼트에서 (호스트(202)로/로부터) 전송될 수 있다. 이와 같이, 데이터 섹터는 호스트의 데이터 전송 크기로 지칭될 수 있다. 일부 실시예에서, NAND 블록은 소거 블록으로 지칭될 수 있으며, 블록은 소거 단위이고 페이지는 판독 및/또는 기록의 척도이다.
호스트 인터페이스(206)는 메모리 시스템(204)과 호스트(202)와 같은 다른 디바이스 사이에서 정보를 전달하는데 사용될 수 있다. 호스트(202)는 메모리 액세스 디바이스(예를 들어, 프로세서)를 포함할 수 있다. 본 명세서에 사용된 바와 같이, "프로세서"는 병렬 처리 시스템, 다수의 보조 프로세서 등과 같은 다수의 프로세서를 의도할 수 있다. 예시적인 호스트는 개인 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 장치, 모바일(예를 들어, 스마트) 전화, PDA, 메모리 카드 리더, 인터페이스 허브 등을 포함할 수 있다.
호스트 인터페이스(206)는 표준화된 물리적 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(204)이 컴퓨팅 시스템(201)에서 정보 저장을 위해 사용될 때, 호스트 인터페이스(206)는 다른 물리적 커넥터 및/또는 인터페이스 중에서도, SATA(Serial Advanced Technology Attachment) 물리적 인터페이스, PCIe(Peripheral Component Interconnect Express) 물리적 인터페이스 또는 범용 직렬 버스(USB) 물리적 인터페이스일 수 있다. 그러나, 일반적으로, 호스트 인터페이스(206)는 메모리 시스템(204)과, 호스트 인터페이스(206)를 위한 호환 가능한 리셉터를 갖는 호스트(예를 들어, 호스트(202)) 사이에 제어, 어드레스, 정보(예를 들어, 데이터) 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
제어기(208)는 예를 들어 제어 회로 및/또는 로직(예를 들어, 하드웨어 및 펌웨어)을 포함할 수 있다. 제어기(208)는 메모리(210-1, 210-2,..., 210-N)와 동일한 물리적 장치(예를 들어, 동일한 다이) 상에 포함될 수 있다. 예를 들어, 제어기(208)는 물리적 호스트 인터페이스(206) 및 메모리(210-1, 210-2,..., 210-N)를 포함하는 인쇄 회로 기판에 연결된 주문형 집적 회로(ASIC) 일 수 있다. 대안적으로, 제어기(208)는 메모리들(210-1, 210-2,..., 210-N)을 포함하는 물리적 디바이스에 통신 가능하게 연결된 별도의 물리적 장치 상에 포함될 수 있다. 다수의 실시예들에서, 제어기(208)의 구성요소들은 분산 제어기로서 다수의 물리적 디바이스들(예를 들어, 메모리와 동일한 다이 상의 일부 구성요소들 및 상이한 다이, 모듈 또는 보드 상의 일부 구성요소들)에 걸쳐 분산될 수 있다.
제어기(208)는 테이블(209)을 저장하는 캐시(207)(예를 들어, 데이터를 저장하기 위해 DRAM 또는 SRAM을 사용하는 메모리 캐시)를 포함할 수 있다. 테이블(209)은 어드레스 매핑 테이블의 적어도 일부를 포함할 수 있다. 예를 들어, 캐시(207)는 로드된 어드레스 매핑 테이블(예를 들어, 211)의 하나 이상의 영역을 저장할 수 있다. 어드레스 매핑 테이블(211)의 영역은 테이블(211)에 의해 매핑된 메모리(예를 들어, 210-1 내지 210-N)의 각각의 물리적 영역에 대응할 수 있다(도 4와 관련하여 아래에 더 설명 됨).
제어기(208)는 다른 동작들 중에서, 정보를 감지(예를 들어, 판독), 프로그램(예를 들어, 기록) 및/또는 소거하도록 메모리 디바이스들(210-1, 210-2,..., 210-N)과 통신할 수 있다. 또한, 제어기(208)는 메모리 디바이스들(210-1, 210-2,…, 210-N)과 통신하여 기존 데이터를 소거하는 것과 대조적으로 기존 데이터를 새로운 데이터로 덮어 기록할 수 있다. 제어기(208)는 다수의 집적 회로 및/또는 개별 구성요소일 수 있는 회로를 가질 수 있다. 다수의 실시예들에서, 제어기(208)의 회로는 메모리 디바이스들(210-1, 210-2,..., 210-N)을 통한 액세스를 제어하기 위한 제어 회로, 및/또는 호스트(202)와 메모리 시스템(204) 사이에 변환 계층(예를 들어, 플래시 변환 계층)을 제공하기 위한 회로를 포함할 수 있다.
제어기(208)는 정적(예를 들어, 전용) 단일 레벨 셀(SLC) 캐시 및/또는 동적 SLC 캐시(로서 동작하도록, 예를 들어, 각각의 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부를 구성하도록) 각각의 메모리 디바이스(210-1, 210-2,..., 210N)의 블록 어드레싱 부분과 같은 전용 영역의 동작을 제어할 수 있다. 정적 SLC 캐시는 캐시가 변환을 처리하는 동안 업데이트되지 않고 데이터가 삽입되지 않는 캐시를 나타낸다. 정적 캐시가 생성되면 룩업 테이블 대신 캐시가 질의(query)된다. 동적 SLC 캐시는 업데이트될 수 있는 데이터의 일부 또는 데이터의 일부에 액세스할 때 캐시에 삽입된 추가 데이터를 저장하는 캐시를 의미한다. 예를 들어, 각각의 각각의 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부분은 SLC 모드에서 정적 캐시 및/또는 SLC 모드에서 동적 캐시로 동작하도록 구성될 수 있다. 각각의 메모리 디바이스(210-1, 210-2,..., 210-N)의 이 부분은, 예를 들어, (가령, 도 3과 연계하여) 여기에 더 설명될 각각의 메모리 내의 메모리 셀의 제 1 복수의 블록(예를 들어, 물리적 블록)일 수 있고, 메모리의 제 1 부분으로 여기서 지칭될 수 있다. 또한, 각각의 메모리 디바이스(210-1, 210-2,..., 210-N)의 일부는 제 2 복수의 블록, 제 3 복수의 블록 등을 포함할 수 있다.
도 2에 도시된 실시예는 본 개시의 실시예를 모호하게 하지 않기 위해 도시되지 않은 추가 회로, 논리 및/또는 구성요소를 포함할 수 있다. 예를 들어, 메모리 디바이스(204)는 I/O 회로를 통해 I/O 커넥터를 거쳐 제공된 어드레스 신호를 래치하기 위한 어드레스 회로를 포함할 수 있다. 어드레스 신호는 메모리(210-1, 210-2,..., 210-N)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신 및 디코딩될 수 있다. 이 회로에서 특정 회로가 도시되어 있지만, 도시되거나 예시되지 않은 추가 회로가 본 예에 포함되어 사용될 수 있다.
도 3a는 호스트 및 메모리 어레이 형태의 장치(303)의 블록도를 도시한다. 호스트(302)는 화살표(312)로 도시된 데이터를 메모리 셀의 어레이(310)에 전송할 수 있다. 메모리 셀들의 어레이(310)는 다수의 그룹의 메모리 셀들(311-1, 311-2, 311-3)을 포함할 수 있다. 호스트(302)는 순차적 포맷으로 데이터를 전송하여 본 명세서에서 변환 유닛(TU)으로 지칭되는 메모리의 일부로서 기록될 수 있다. 이러한 TU는 실제 메모리에서 특정 양의 데이터를 보다 쉽게 관리하기 위한 관리 유닛으로 사용될 수 있다. 일부 실시예들에서, 이들 메모리 부분들은 임의의 수의 길이 일 수 있다. 일부 예에서, TU의 길이는 4KB 일 수 있다. 각각의 TU는 메모리 어레이 내의 메모리 셀 그룹과 연관될 수 있다. 예를 들어, 제 1 TU(예를 들어, "TU1")는 제 1 그룹의 메모리 셀(311-1)과 연관될 수 있고 물리적 어드레스 위치(313)에서 시작할 수 있다.
호스트는 순차적 포맷으로 TU를 어레이(310)에 기록할 수 있다. 예를 들어, 데이터의 제 1 부분은 제 1 TU(311-1)로서 기록될 수 있고, 데이터의 제 2 부분은 제 2 TU(가령, "TU2")(311-2)로서 기록될 수 있으며, 데이터의 제 3 부분은 제 2 TU(311-2)에 기록한 후에 제 3 TU(예를 들어, "TU3")(311-3)로서 기록될 수 있다. 데이터의 제 2 부분은 물리적 어드레스 위치(314)에서 시작하는 제 2 TU(311-2)로서 기록될 수 있고, 제 3 TU(311-3)는 물리적 어드레스 위치(315)에서 시작하여 기록될 수 있다.
일부 이전의 접근법들에서, 어드레스 매핑 테이블(예컨대, 도 2의 테이블(209))은 논리 어드레스를 제 1 내지 제 3 TU 각각에 대응하는 어드레스 매핑 테이블에 대한 인덱스로서 사용할 수 있고, 어드레스 매핑 테이블은 인덱싱된 각 논리 어드레스에 매핑되는 물리적 어드레스 엔트리를 포함할 수 있다. 이것은 논리적 어드레스와 물리적 어드레스의 1: 1 상관 관계라고 할 수 있다. 그러나, 본 명세서에 설명된 실시예들과 관련하여, 어드레스 매핑 테이블이 저장되는 물리 공간의 양을 최소화하기 위해 상이한 상관이 사용될 수 있다. 이러한 상관을 달성하기 위해, 순차적으로 기록된 데이터의 초기 물리 어드레스 위치가 입력될 수 있고, 물리 어드레스 위치에 이어서 기록된 데이터의 추가 부분은 데이터의 각 부분의 오프셋에 기초하여 입력될 수 있다.
도 3b는 본 개시의 다수의 실시예들에 따른 어드레스 매핑 테이블(328)의 블록도를 도시한다. 어드레스 매핑 테이블(328)은 도 3a에 도시된 변환 유닛(TU1, TU2, TU3)을 기록하는 것에 대응하는 엔트리를 도시한다. 구체적으로, 어드레스 매핑 테이블(328)은 메모리 어레이 내의 변환 유닛(TU)의 논리적-물리적 어드레스 매핑을 도시한다. 어레이에서 TU로 기록되는 데이터는 TU의 크기보다 작은 데이터 량을 기록하는 대신 효율성을 높이기 위해 보다 큰 청크로 순차적으로 기록될 수 있다. 예를 들어, 다수의 TU는 어레이에 한번에 4 개의 TU, 8 개의 TU, 16 개의 TU 또는 보다 더 많은 TU의 청크로 순차적으로 기록될 수 있다. 이러한 순차적 기록을 이용하고 어드레스 매핑 테이블의 크기를 최소화하기 위해, 기록된 제 1 TU의 페이지의 제 1 물리적 어드레스가 입력될 수 있고, TU가 제 1 물리적 어드레스로부터 얼마나 멀리 어레이의 페이지에 기록되는지를 표시하기 위해, 기록된 후속 TU는 대응하는 오프셋과 함께 제 1 물리적 어드레스와 연계될 수 있다.
도 3b에 도시된 바와 같이, 어드레스 매핑 테이블(328)의 제 1 테이블(332)은 TU 논리 어드레스에 대응하는 인덱스를 사용하여 구성될 수 있다. 예를 들어, 제 1 엔트리(333-1)는 제 1 TU(예를 들어, "TU1")에 대응하고, 제 2 엔트리(333-2)는 제 2 TU(예를 들어, "TU2")에 대응하고, 제 3 엔트리(333-3)는 제 3 TU(예를 들어, "TU3")에 대등하고, 등등(도 4에 추가로 도시된 바와 같이 추가 엔트리가 제 1 테이블(332)에 포함될 수 있음)일 수 있다. 엔트리들(333-1, 333-2, 333-3)은 어드레스 매핑 테이블(328)의 제 2 테이블(334)에서 대응하는 엔트리(331)를 가리키는 각각의 포인터들(335-1, 335-2, 335-3)을 포함할 수 있다. 제 1 테이블(332)의 엔트리(333-1, 331-2, 333-3)는, 제 2 테이블(334)의 엔트리에 대응하는 물리적 어드레스 범위 내에서, 각각의 TU에 대응하는 물리 데이터가 저장되는, 위치를 나타내는 각각의 오프셋(336-1, 336-2, 336-3)을 포함할 수 있다.
제 2 테이블(334)은 메모리 어레이(예를 들어, 도 3a의 메모리 어레이(310))의 물리적 어드레스 범위에 대응하는 다수의 엔트리(331)를 포함할 수 있다. 엔트리들의 수(331)는 각각 물리적 어드레스 필드(337) 및 카운트 필드(338)를 포함한다. 물리적 어드레스 필드(337)는 논리 어드레스의 대응하는 데이터가 저장되는 물리적 어드레스("PA")를 나타낼 수 있다. 카운트 필드(338)는 제 2 테이블의 엔트리(331)가 연관된 제 1 테이블(332)의 엔트리의 수량을 나타낼 수 있다.
데이터의 제 1 부분이 어레이(예를 들어, 어레이(310)) 내에 제 1 변환 유닛("TU1")으로서 기록될 때, 제 1 TU와 연관된 제 1 TU 논리 어드레스에 대응하는 제 1 엔트리(333-1)는 제 1 테이블(332)에서 업데이트된다. 제 1 테이블(332)의 업데이트된 제 1 엔트리(333-1)는 제 2 테이블(334)의 엔트리(331)(화살표로 표시됨)를 가리키는 포인터("P")(335-1)를 포함하여, 제 1 TU 논리 어드레스의 데이터는 엔트리(331)에 의해 표현된 물리 어드레스 범위에 저장된다. 물리 어드레스(예를 들어, "PA")(337)는 데이터의 제 1 부분이 기록되는 어레이(예를 들어, 어레이 310) 내 제 1 페이지의 물리 위치의 시작점을 나타낸다. 데이터의 제 1 부분이 이 예에서 다수의 순차적으로 기록된 부분에 기록된 제 1 데이터이므로, 대응하는 오프셋 필드(336)에 0의 오프셋(336-1)(예를 들어, "OS 0")이 입력된다. 대응하는 TU가 제 2 테이블(334) 내 대응하는 엔트리의 물리적 어드레스 위치에서 시작하면서 어레이에 기록됨을 0의 오프셋이 표시한다. 예를 들어, 엔트리(333-1)는 PA(337)에서 제 1 TU로서 데이터를 저장하는 것과 연관된다. 제 1 엔트리(333-1)가 포인터(335-1)에 의해 엔트리(331)와 관련됨에 따라, 엔트리(331)와 연관된 카운트 필드(count field)(338)가 1만큼 증분된다(1의 카운트 필드(338)의 값 - 도시되지 않음). 도시된 예는 각각의 TU 엔트리를 테이블에 하나씩 기록하는 것을 설명하지만, 예는 그렇게 제한되지 않는다. 예를 들어, 하나의 호스트 명령에 4 TU가 포함되어 있으면 메모리 어레이에 대한 4 TU를 모두 제 1 테이블과 제 2 테이블에서 동시에 업데이트할 수 있다.
데이터의 제 2 부분(예를 들어, "TU2")이 제 1 부분 이후에 순차적으로 어레이에 물리적으로 기록될 때, 제 2 부분과 연관된 제 2 TU 논리 어드레스에 대응하는 제 2 엔트리(333-2)가 제 1 테이블(332)에서 업데이트된다. 제 1 테이블(332)에서 업데이트된 제 2 엔트리(333-2)의 포인터(335-2)는 제 2 테이블(334)의 엔트리(331)를 가리킨다(화살표로 표시). 제 2 테이블의 엔트리(331)를 가리키는 제 1 테이블(332)의 엔트리(333-2)는 제 2 부분이 엔트리(331)와 관련된 물리적 어드레스 범위에 기록됨을 나타낸다. 제 2 엔트리(333-2)는 1의 오프셋(336-2)(가령, "OS 1")을 포함한다. 1의 오프셋(336-2)은 제 2 엔트리와 연관된 변환 유닛(TU2)이 제 2 테이블(334)의 엔트리(331)에 표시된 물리적 어드레스("PA")(337) 위치로부터 하나의 변환 유닛 길이만큼 오프셋됨(물리적으로 기록)을 나타낸다. 포인터(335-2)에 의해 제 2 엔트리(333-2)가 엔트리(331)와 연관됨에 따라, 엔트리(331)와 연관된 카운트 필드(338)는 1만큼 증가된다(결과적으로 2의 카운트 필드(338) 값 0 도시되지 않음).
데이터의 제 3 부분(예를 들어, "TU3")이 제 2 부분 이후에 순차적으로 어레이에 물리적으로 기록될 때, 제 3 부분과 연관된 제 3 TU 논리 어드레스에 대응하는 제 3 엔트리(333-3)가 제 1 테이블(332)에서 업데이트된다. 제 1 테이블(332)에서 업데이트된 제 3 엔트리(333-3)의 포인터(335-3)는 (화살표로 표시된) 제 2 테이블(334)의 엔트리(331)를 가리킨다. 제 2 테이블의 엔트리(331)를 가리키는 제 1 테이블(332)의 엔트리(333-3)는 제 3 부분이 엔트리(331)와 연관된 물리적 어드레스 범위에 기록됨을 나타낸다. 제 3 엔트리(333-3)는 2의 오프셋(336-3)(가령, "OS 2")을 포함한다. 2의 오프셋(336-2)은 제 3 엔트리와 연관된 변환 유닛(TU3)이 제 2 테이블(334)의 엔트리(331)에 표시된 물리적 어드레스("PA")(337) 위치로부터 2 개의 변환 유닛 길이만큼 오프셋(물리적으로 기록)됨을 나타낸다. 엔트리(331)와 연관된 카운트 필드(338)는 제 3 엔트리(333-3)가 포인터(335-3)에 의해 엔트리(331)와 연관됨에 따라 1만큼 증가한다(결과적으로, 도 3b에 도시된 바와 같이 카운트 필드(338) 값 3).
이러한 방식으로, 제 1, 제 2 및 제 3 TU(TU1, TU2, TU3)는 어레이의 메모리 셀에 순차적으로 기록되고, 어드레스 매핑 테이블(328)은 논리 어드레스에 대응하는 제 1 테이블(332) 내 3 개의 엔트리(333-1, 333-2, 333-3)와, 물리적 어드레스에 대응하는 제 2 테이블(334) 내 단일 엔트리만을 포함한다. 제 1 테이블(332)의 하나보다 많은 엔트리를 제 2 테이블(334)의 단일 엔트리와 상관시킴으로써, 어드레스 매핑 테이블(328)의 크기가 최소화될 수 있다.
도 4는 본 개시의 다수의 실시예들에 따른 어드레스 매핑 테이블(405)의 블록도를 도시한다. 어드레스 매핑 테이블(405)은 어드레스 매핑 테이블의 다수의 영역(논리적-물리적(L2P) 매핑 영역)("L2P 영역 0", "L2P 영역 1", …, "L2P 영역 N")(428-0, 428 -1,…, 428-N)을 포함할 수 있다. 다수의 영역 각각은 메모리 어레이(예를 들어, 도 1의 메모리 어레이(100))에서 특정 범위의 논리 어드레스(예를 들어, n 개의 TU와 연관된 n 개의 논리 어드레스)에 대응할 수 있다. 일부 실시예들에서, 각각의 영역은 각자의 영역에 대응하는 동일한 n 개의 TU를 포함한다. TU의 값에 대해 특정 기능이 수행될 수 있으며 TU의 특정 어드레스가 어느 영역에 위치 하는지를 결정하기 위해 사용될 수 있다. 예로서, TU의 특정 어드레스가 위치한 영역을 결정하기 위해 TU의 값에 대해 시프트 기능이 수행될 수 있다. 이 예에서, 어드레스 매핑 테이블(405)의 각각의 영역은 제 1 테이블(432-0, 432-1, 432-2)에 8 개의 엔트리를 포함하고 제 2 테이블(434-0, 434-1, 434-2)에 4 개의 엔트리를 포함하지만, 실시예는 이에 제한되지 않는다. 후술하는 바와 같이, 요소 번호는 다수의 요소를 그룹으로 나타낼 수 있다. 예를 들어, 엔트리(433-1 내지 433-8)는 참조를 쉽게 하기 위해 엔트리(433)로 참조될 수 있다.
각 영역("L2P 영역 0", "L2P 영역 1", "L2P 영역 2")(428-0, 428-1,…, 428-N)은 제 1 테이블(테이블(432))에 저장된 다수의 변환 유닛(TU)의 논리 어드레스와 연관된 다수의 엔트리(영역(428-0)의 경우 433, 영역(428-1)의 경우 439, 영역(428-N)의 경우 450)를 포함할 수 있다. 제 1 테이블(432)의 엔트리(433, 439, 450)는 제 2 테이블(예컨대, 제 1 테이블(432)의 엔트리로부터 제 2 테이블(434)의 엔트리로 화살표로 도시되는 제 2 테이블(434))의 대응하는 엔트리를 가리키는 각자의 포인터(435, 440 및 452)를 포함할 수 있다. 제 1 테이블(432)은 오프셋의 엔트리가 가리키는 제 2 테이블(434)의 대응하는 엔트리에서 특정 물리적 어드레스로부터의 오프셋을 나타내는 오프셋(436, 442, 454)을 포함할 수 있다. 각각의 영역(428)의 제 2 테이블(434)은 물리적 어드레스(437)를 포함할 수 있다. 제 2 테이블(434)은 제 2 테이블(434)의 특정 엔트리(431, 444, 456)와 각각 연관된 대응하는 TU의 논리적 어드레스의 양을 각각 나타내는 카운트 필드(438, 448, 458)를 포함할 수 있다.
제 1 영역("L2P 영역 0")(428-0)은 3 개의 상이한 순차적 그룹으로 어레이에 기록되는 8 개의 TU를 포함한다. 예를 들어, TU의 그룹으로서의 데이터의 제 1 순차적 기록은 엔트리(433-1)와 연관되도록 인덱싱된 제 1 TU, 엔트리(433-2)와 관련되도록 인덱싱된 제 2 TU, 및 엔트리(433-3)와 연관되도록 인덱싱된 제 3 TU를 어레이에 기록하는 과정을 포함한다. 제 1 TU는 제 2 테이블(434-0)의 엔트리(431-1)에 입력된 물리적 어드레스(437-1)에 기록될 수 있다. 제 1 TU가 기록됨에 따라, 제 1 테이블(432-0)의 제 1 엔트리(433-1)가 업데이트되고 포인터(435-1)는 제 2 테이블(434-0)의 엔트리(431-1)를 가리킨다. 또한, 엔트리(433-1)의 오프셋(436-1)은 대응하는 TU가 물리적으로 위치하는 물리적 어드레스(437-1)로부터 오프셋이 없음을 나타내기 위해 0("OS 0")으로 설정된다. 또한, 엔트리(431-1)의 카운트 필드(438-1)는 이것이 엔트리(431-1)와 연관된 제 1 TU이므로 1로 설정된다.
제 1 TU가 기록된 후 제 2 TU가 순차적으로 기록될 때, 제 1 테이블(432-0)의 제 2 엔트리(433-2)가 업데이트되고 포인터(435-2)는 제 2 테이블(434-0)의 엔트리(431-1)를 지시한다. 또한, 엔트리(433-2)의 오프셋(436-2)은 1로 설정되고("OS 1") 카운트 필드(438-1)는 1만큼 증가한다(2와 동일). 제 2 테이블(434-0)의 새로운 엔트리는 비 순차적 TU가 기록되거나 엔트리와 관련된 물리 어드레스 범위의 총 물리 공간이 사용되지 않으면 업데이트되지 않는다. 제 2 TU 이후에 제 3 TU가 순차적으로 기록될 때, 제 1 테이블(432-0)의 제 3 엔트리(433-3)가 생성되고 포인터(435-3)는 제 2 테이블(434-0)의 엔트리(431-1)를 가리킨다. 또한, 엔트리(433-3)의 오프셋(436-3)은 2로 설정되고("OS 2"), 카운트 필드(438-1)는 1만큼 증가한다(3과 동일). 이 예에서, 제 1, 제 2 및 제 3 TU는 한 번에 1씩 업데이트되는 것으로 설명되지만, 예는 그렇게 제한되지 않는다. 예를 들어, 제 1, 제 2 및 제 3 TU가 순차적으로 기록될 수 있고, 엔트리들(433-1 내지 433-3 및 431-1) 각각에 대한 업데이트가 배치 업데이트(a batch update)로서 수행될 수 있다.
마찬가지로, 제 4 및 제 5 TU를 포함하는 제 2 순차 그룹은 물리적 어드레스(437-2)에서 시작하면서 기록될 수 있고, 물리적 어드레스(437-2)는 엔트리(437-2)에 저장될 수 있다. 제 4 엔트리(433-4)는 기록된 제 4 TU와 관련되고, 제 5 엔트리(433-5)는 제 1 테이블(432-0)의 인덱싱에 기초하여 제 4 TU 이후에 기록된 제 5 TU와 관련된다. 제 2 테이블(434-0)의 엔트리(437-2)의 필드 카운트(431-2)는 2 개의 TU가 있으므로 2의 카운트를 포함하고, 제 1 테이블(432-0)의 엔트리는 엔트리(431-2)와 연관된다. 제 6, 제 7 및 제 8 TU를 포함하는 제 3 순차 그룹은 엔트리(437-3)에 물리적 어드레스(437-3)로 저장된 어레이의 물리적 어드레스로 시작하여 순차적으로 기록될 수 있다. 제 2 테이블(434-0)의 엔트리(437-3)의 필드 카운트(431-3)는 3 개의 TU가 존재하기 때문에 3의 카운트를 포함하고, 제 1 테이블(432-0)의 대응하는 엔트리는 엔트리(431-3)와 연관된다.
이 예의 설명은 각각의 TU가 기록될 때 각 엔트리의 생성을 설명하지만, 예는 그렇게 제한되지 않는다. 예를 들어, 순차적 TU의 스트링을 기록하고, 해당 스트링의 기록 완료시, 엔트리, 포인터, 오프셋 및 카운트 필드가 생성되어 기록될 수 있다. 도시된 바와 같이, 제 2 테이블(434-0)의 제 4 엔트리(431-4)는 기록된 TU 및 제 1 테이블(432-0)에서의 대응하는 엔트리와 관련되지 않는다. 이는 추가의 물리적 위치가 해당 특정 영역과 연관될 수 있지만 아직 물리적으로 데이터와 함께 기록되지 않았음을 나타낸다. 아래에 더 설명되는 바와 같이, 추가적인 삽입 및 삭제 동작은 그러한 여분의 물리적 공간을 사용하고 이용할 수 있게 한다.
마찬가지로, 제 2 영역("L2P 영역 1")(428-1)은 4 개의 상이한 순차적 그룹으로 어레이에 기록되는 8 개의 TU를 포함한다. 예를 들어, TU 그룹의 제 1 순차적 기록은 제 2 영역(428-1)의 제 2 테이블(434-1)에서 물리 어드레스(437-5)로서 저장된 어레이의 물리 어드레스에 엔트리(439-1)와 연관된 제 1 TU를 기록하는 과정을 포함한다. 엔트리(444-1)와 관련된 카운트 필드(448)는 1의 값을 포함한다. TU 그룹의 제 2 순차 기록은 제 2 영역(428-1)의 제 2 테이블(434-1)에 물리적 어드레스(437-6)로서 저장된 어레이의 물리적 어드레스에 엔트리(439-2)와 연관된 제 2 TU를 기입하는 과정을 포함한다. 엔트리(444-2)와 관련된 카운트 필드(448)는 1의 값을 포함한다. TU 그룹의 제 3 순차적 기록은 엔트리(439-3, 439-4 및 439-5)와 각각 관련된 제 3, 제 4 및 제 5 TU를 엔트리(444-2)와 연관된 어레이 내 물리적 어드레스 범위에 기록하는 과정을 포함하며, 제 2 영역(428-1)의 제 2 테이블(434-1)에서 물리적 어드레스(437-7)에서 시작한다. 엔트리(444-3)와 연관된 카운트 필드(448)는 3 개의 TU가 엔트리(444-3)와 연관됨에 따라 3의 값을 포함한다. TU 그룹의 순차적인 제 4 기록은 엔트리(439-6, 439-7 및 439-8)와 각각 연관된 제 6, 제 7 및 제 8 TU를 각각 엔트리(444-3)와 연관된 어레이의 물리적 어드레스 범위에 기록하는 과정을 포함하며, 제 2 영역(428-1)의 제 2 테이블(434-1) 내 물리적 어드레스(437-8)에서 시작한다. 엔트리(444-4)와 연관된 카운트 필드(448)는 3 개의 TU가 엔트리(444-4)와 연관됨에 따라 3의 값을 포함한다.
또한, 제 3 영역("L2P 영역 N")(428-2)은 4 개의 상이한 순차적 그룹으로 어레이에 기록되는 8 개의 TU를 포함한다. 예를 들어, TU 그룹의 제 1 순차적 기록은 엔트리(450-1)와 관련된 제 1 TU 및 엔트리(450-2)와 관련된 제 2 TU를 엔트리(456-1)와 관련된 물리적 어드레스 범위에 기록하는 과정을 포함한다. 제 1 TU는 엔트리(456-1)에 저장된 물리적 어드레스(437-10)에서 시작하여 기록되고, 제 2 TU는 상기 물리적 어드레스(437-9) 다음에 순차적으로 기록된다. 엔트리(456-1)와 연관된 카운트 필드(458)는 제 1 TU 및 제 2 TU가 엔트리(456-1)와 연관됨에 따라 2의 값을 포함한다. TU 그룹의 제 2 순차적 기록은 엔트리(450-3)와 관련된 제 3 TU 및 엔트리(450-4)와 관련된 제 4 TU를 제 2 테이블(434-N)의 엔트리(456-2)와 관련된 물리적 어드레스 범위에 기록하는 과정을 포함한다. 제 3 TU는 엔트리(456-2)에 저장된 물리적 어드레스(437-10)에서 시작하며 기록되고, 제 4 TU는 물리적 어드레스(437-10) 이후에 순차적으로 기록된다. 엔트리(456-2)와 연관된 카운트 필드(458)는 제 3 TU 및 제 4 TU가 모두 엔트리(456-2)와 연관됨에 따라 2의 값을 포함한다.
TU 그룹의 제 3 순차적 기록은 엔트리(450-5)와 관련된 제 5 TU 및 엔트리(450-6)와 관련된 제 6 TU를, 엔트리(456-3)와 관련된 물리적 어드레스 범위에 기록하는 과정을 포함한다. 제 5 TU는 엔트리(456-3)에 저장되는 물리적 어드레스(437-11)에서 시작하여 기록되며, 제 2 TU는 그 물리적 어드레스(437-11) 이후에 순차적으로 기록된다. 엔트리(456-3)와 연관된 카운트 필드(458)는 제 5 TU 및 제 6 TU가 모두 엔트리(456-3)와 연관됨에 따라 2의 값을 포함한다. TU 그룹의 제 4 순차적 기록은 엔트리(450-7)와 연관된 제 7 TU 및 엔트리(450-8)와 연관된 제 8 TU를 제 2 테이블(434-N)의 엔트리(456-4)와 연관된 물리적 어드레스 범위에 기록하는 과정을 포함한다. 제 7 TU는 엔트리(456-4)에 저장된 물리적 어드레스(437-12)에서 시작하여 기록되고, 제 8 TU는 물리적 어드레스(437-12) 이후에 순차적으로 기록된다. 엔트리(456-4)와 연관된 카운트 필드(458)는 제 7 TU 및 제 8 TU가 모두 엔트리(456-4)와 연관됨에 따라 2의 값을 포함한다.
도 4에 도시된 이 예는 대응하는 제 2 테이블에 물리 어드레스 엔트리 당 최대 3 개의 TU를 도시하지만, 그 예는 그렇게 제한되지 않는다. 일부 예에서, 16 또는 32개의 TU가 순차적으로 기록될 수 있고, 그러한 경우에 16 또는 32개의 TU는 순차적으로 기록되는 각각의 TU와 연관된 16 또는 32의 오프셋과 16 또는 32의 대응하는 카운트 필드를 갖도록 단일 물리적 어드레스 엔트리와 연계될 수 있다. 이러한 확장 기능을 사용하면 어드레스 매핑 테이블이 저장될 메모리 어레이 내 물리적 공간의 크기가 줄어든다. 이러한 방식으로 메모리 드라이브의 크기가 커짐에 따라 어드레스 매핑 테이블의 크기가 엄두를 못낼 정도는 아니다.
일부 실시예들에서, 어드레스 매핑 테이블 영역의 제 2 테이블에 추가 엔트리를 삽입하기 위해 삽입 동작이 수행될 수 있다. 삽입 동작은 호스트가 이전에 기록되지 않은 TU에 데이터를 기록하는 것에 응답하여 수행될 수 있다. 제 2 테이블에 새 엔트리를 삽입한 후, 새로 기록된 TU와 관련된 제 1 테이블의 업데이트된 엔트리는 제 2 테이블에 새로 삽입된 엔트리를 가리킨다. 일부 예에서, 삽입 동작은, 이전에 기록된 TU가 트리밍되고 새로 기록된 TU를 기록하기 전에 데이터가 저장되지 않은 위치에, 새로 기록된 TU를 삽입하기 위해 수행될 수 있다. 삽입 동작은 새로운 데이터가 기록될 물리적 어드레스 위치를 나타내는 제 2 테이블(예를 들어, 도 4에 도시된 제 1 영역(428-0)의 테이블(434-0)과 같은 어드레스 테이블)에 새로운 엔트리를 생성하는 과정을 포함할 수 있다. 새로운 엔트리의 생성은 데이터가 초기에 기록되는 시작 물리적 어드레스 및 기록된 데이터의 길이를 결정하는 과정을 포함할 수 있다. 기록된 데이터가 제 2 테이블에서 TU 엔트리의 길이보다 길면, 추가 엔트리가 생성될 수 있고 기록된 데이터는 제 2 테이블에서 제 1 엔트리의 물리적 어드레스 범위와, 제 2 테이블에서 제 2 엔트리의 물리적 어드레스 범위의 적어도 일부분에 걸쳐있을 수 있다. 새롭게 기록되는 TU의 인덱스 번호에 대응하는 어드레스 매핑 테이블의 제 1 테이블(예컨대, 도 4의 테이블(432-0))의 엔트리는 제 2 테이블에서 새롭게 생성된 엔트리의 물리적 어드레스를 가리킬 수 있다. 대응하는 오프셋 번호가 각각의 엔트리에 입력되어, 제 2 테이블에서 새로 생성된 엔트리와 관련된 물리적 어드레스 범위에서 각각의 TU가 기록되는 위치를 표시할 수 있다.
일부 실시예들에서, 호스트가 이전에 유효한 TU를 새로운 데이터로 덮어씀에 응답하여 교체 동작이 수행될 수 있다. 교체 작업을 수행하기 위해, 새로운 엔트리와 연관된 TU의 수량을 나타내는 물리적 어드레스 및 카운트 필드를 포함하는 제 2 테이블(예를 들어, 도 4의 제 2 테이블(434-0))에 새로운 엔트리가 기록될 수 있다. 호스트가 이전에 유효한 TU를 추가 TU로 덮어 쓰면, 추가 TU에 해당하는 제 1 테이블(예: 도 4의 제 1 테이블(432-0))의 엔트리가 제 2 테이블의 새 엔트리를 가리킬 수 있다. 각 TU가 인덱싱된 형식으로 표시되는 제 1 테이블을 업데이트하면, 특정 인덱싱된 TU와 관련된 데이터가 오래되지 않고 현재 엔트리 데이터가 유효하게 유지됨을 보장할 수 있다.
또한, 제 2 테이블(예를 들어, 제 2 테이블(434-0))은 제 2 테이블의 엔트리와 연관된 카운트 필드를 수정함으로써 업데이트될 수 있다. 예를 들어, 이전에 유효한 데이터를 덮어씀에 따라, 이전에 유효한 데이터가 가리켰던 제 2 테이블의 엔트리가 더 이상 사용되지 않고, 제 2 테이블의 해당 엔트리와 연관된 카운트 필드가 1만큼에 로소해야 한다. 제 2 테이블의 엔트리의 카운트 필드가 0에 도달하면, 제 1 테이블(예를 들어, 도 4의 제 1 테이블(432-0))의 엔트리는 제 2 테이블의 엔트리를 가리키지 않으며, 그 엔트리는 후속 TU 기록 중에 재사용될 수 있음을 나타낸다. 기록 작업 중에 카운트 필드가 감소하여, 제 2 테이블의 엔트리과 연관된 카운트 필드가 0으로 감소되면, 해당 엔트리가 기록 작업에 사용될 수 있고 제 2 테이블의 구멍을 피할 수 있다. 예를 들어, 엔트리(431-4)가 이전에 해당 카운트 필드(438-4)에 1의 값을 가지고 있고 이전에 엔트리(431-4)와 연관된 제 1 테이블(예: 테이블(432-0))의 엔트리를 상이한 물리적 어드레스(및 제 2 테이블(434-0)의 상이한 엔트리)와 관련된 데이터로 덮어쓴 경우, 엔트리(431-4)는 새로운 기록 동작이 새로운 물리적 어드레스를 입력하고 새롭게 기록된 TU를 연관시키기 위해 이용 가능할 것이다.
그러나, 상기 방법을 수행하더라도 제 2 테이블에 구멍이 생성될 수 있다. 예를 들어, 호스트가 두 개의 인접한 TU를 작성하기 위해 두 개의 단일 명령을 제공했지만 명령이 순차적으로 작성되지 않고 제 2 테이블의 동일한 물리적 어드레스 엔트리를 가리키지 않으면, 두 개의 물리적 어드레스 엔트리가 존재할 것이다. 그런 다음 호스트가 인접한 두 TU 모두를 기록하기 위해 단일 명령을 보내서, 이러한 인접한 TU의 이전에 기록된 데이터를 덮어 쓰면, 제 2 테이블의 단일 물리적 어드레스 엔트리가 두 개의 인접한 TU와 연계될 것이다. 이렇게 하면 제 2 테이블에 두 개의 물리적 어드레스 엔트리 중 하나가 생성되어, 카운트 필드가 0이 되고 이 물리적 어드레스 엔트리가 제 2 테이블에 있는 다른 물리적 어드레스 엔트리의 중간에 위치하여 구멍이 생길 수 있다.
또한, 호스트로부터 트림 명령이 발행될 때, 영향을 받는 각 TU와 관련된 엔트리는 영향을 받는 TU와 관련된 엔트리가 더 이상 임의의 유효한 물리적 어드레스를 가리키지 않음을 나타내도록 업데이트될 수 있다. 일례에서, 제 1 테이블(예를 들어, 도 4의 제 1 테이블(432-0))의 특정 번호는 TU가 그것을 저장하는 물리적 메모리가 없음을 나타낼 수 있다. 메모리 드라이브를 처음 포맷했을 때 사용자 데이터를 기록하기 전에, 모든 L2P 영역의 제 1 테이블이 이러한 특정 숫자 값으로 로딩될 수 있다. 예를 들어, 트림 명령이 수신되면, 영향을 받는 각 TU에 대해 제 1 테이블을 업데이트하여 이 TU에 물리적 미디어가 없음을 나타내는 특정 번호를 삽입할 수 있다. 또한, 영향을 받는 TU와 관련된 제 2 테이블(예를 들어, 도 4의 제 2 테이블(434-0))의 엔트리의 카운트 필드가 감소될 수 있다. 이 방법에서는 카운트 필드가 0 인 엔트리로 표시되는 제 2 테이블에 구멍이 생길 수도 있다. 제 2 테이블의 이러한 구멍은 구멍을 그대로두고 처리될 수 있으며, 위에서 설명한 삽입 및 교체 작업에서 시퀀스를 수정하여 제 2 테이블에서 재사용할 구멍을 찾을 수 있다.
시퀀스를 수정하는 제 1 방법은 새로운 엔트리가 기록될 필요가 있을 때 구멍을 찾기 위해 제 2 테이블의 순차적 스캐닝에 의해 수행될 수 있다. 이러한 제 1 수정 방법은 동작들 간에 저장된 어드레스 내 구멍을 가리키는 포인터를 저장함으로써 수행될 수 있어서, 홀드를 쉽게 식별할 수 있고, 엔트리 내의 구멍에 대한 스캔이 반드시 제 2 테이블의 시작에서 개시될 필요가 없게 된다. 또한 카운트 필드가 0 인 제 2 테이블의 각 엔트리를 특정 엔트리 리스트에 추가하여, 추가 기록에 사용할 엔트리 위치를 나타낼 수 있다. 이 리스트의 헤드 포인터는 고유한 위치에 저장될 수 있고, 연결된 포인터 리스트가 제 2 테이블의 해당 엔트리에 저장될 수 있다. 예를 들어, 연결된 포인터 리스트의 포인터는 제 2 테이블의 제 1 자유 물리적 어드레스 엔트리를 가리키고, 해당 엔트리의 실제 어드레스 필드는 다음 자유 엔트리를 가리킬 수 있으며, 등등이다.
시퀀스를 수정하는 제 2 방법은 구멍의 수가 임계 값을 통과할 때 즉시 또는 일부 이후 시점에서 압축 동작을 수행하는 것일 수 있다. 펌웨어보다 하드웨어에서 더 나은 성능을 제공하는 이 압축 작업은 제 2 테이블을 스캔하여 구멍(예: 카운트 필드가 0 인 엔트리)을 찾을 수 있다. 찾은 각 구멍에 대해 제 2 테이블의 마지막 행을 필드 카운트 0 인 엔트리에 복사할 수 있다. 그런 다음 해당 행을 가리키는 제 1 테이블(예: 도 4의 제 1 테이블(432-0)) 엔트리를 업데이트한다.
도 5는 본 개시의 다수의 실시예에 따른 메모리 어드레싱을 위한 방법(507)의 블록도를 도시한다. 방법(507)은 물리적 메모리에서 변환 유닛(TU)에 저장된 데이터를 위치시키는 룩업 동작을 지칭한다. 방법(507)은 단계(560)에서, 어드레스 매핑 테이블의 어느 영역(도 4의 영역(428-0)과 같은)이 TU(예를 들어, 도 4의 제 1 영역(428-0)의 제 1 TU)와 연관된 특정 엔트리(예를 들어, 도 4의 엔트리(433-1))를 포함 하는지를 결정하는 과정을 포함할 수 있다. 어느 영역이 TU를 포함하는지를 결정하는 과정은 TU 값에 대해 시프트 연산의 수행을 포함할 수 있다. 각 영역은 특정한 수의 논리 어드레스 범위(예를 들어, 호스트 어드레스)와 연관될 수 있다.
방법(507)은 단계(562)에서, 특정 엔트리를 포함하는 영역이 캐시 메모리에 로드되는지를 결정하는 단계를 포함할 수 있다. 이 결정은 어느 메모리 영역이 캐시 메모리에 로드되는지, 그리고 그 로드된 영역이 물리 메모리에 위치하는 TU와 관련된 엔트리를 포함하는 영역과 동일한 지 여부를 결정하는 것을 포함할 수 있다. 영역이 캐시 메모리로 로딩되지 않는 것에 응답하여, 방법(507)은 단계(564)에서, 영역이 저장 메모리(예를 들어, DRAM)로부터 캐시 메모리로 로딩될 수 있는 단계를 포함할 수 있다.
영역이 캐시 메모리로 로딩되는 것에 응답하여, 방법(507)은 단계(466)에서 영역 오프셋을 결정하는 단계를 포함할 수 있다. 영역 오프셋은 TU와 연관된 목표 TU 어드레스로부터 영역의 기본 TU 어드레스를 감산함으로써 결정될 수 있다. 예를 들어, 영역 오프셋은 대상 어드레스가 있는 기본 어드레스에서 얼마나 떨어져 있는지 나타낼 수 있다. 방법(507)은 단계(468)에서, 영역 오프셋을 사용하여 영역의 제 1 테이블에서 TU와 연관된 엔트리를 찾는 단계를 포함할 수 있다. TU는 결정된 영역 오프셋을 사용하여 베이스 어드레스로부터 특정 거리에서 영역에 위치될 수 있다.
방법은 단계(570)에서, 제 1 테이블에서의 오프셋에 기초하여 특정 TU에 대한 초기 물리 어드레스로부터의 거리를 결정하는 단계를 포함할 수 있다. 제 1 테이블의 오프셋은 제 1 테이블의 TU와 관련된 위치 엔트리에 있을 수 있다. 위치된 TU가 함께 기록된 TU의 순차 스트링으로 기록되는 제 1 TU 인 경우, 위치된 TU는 특정 TU와 동일한 TU 일 수 있다. 그러나, 배치될 TU가 순차적으로 기록되는 최초의 것이 아니라면, 특정 TU는 시퀀스에서 첫 번째이고, 위치될 TU는 특정 거리만큼 특정 TU로부터 오프셋될 것이다. 특정 거리는 오프셋 필드(예를 들어, 도 4의 오프셋(436))로 표시될 수 있다.
방법(507)은 단계(572)에서 물리 어드레스에 TU 오프셋을 추가함으로써 물리 메모리에서 TU를 판독하는 단계를 포함할 수 있다. TU의 물리적 어드레스는 물리적 어드레스 위치를 포함하는 제 2 테이블(예를 들어, 테이블(434-0))의 엔트리를 가리키는 제 1 테이블(예를 들어, 테이블(432-0))의 엔트리로부터의 포인터를 사용하여 결정될 수 있다. 제 1 테이블의 엔트리에는 오프셋도 포함되며 해당 오프셋은 물리적 메모리에서 TU를 찾기 위해 물리적 어드레스 위치에 추가될 수 있다.
어드레스 매핑 테이블을 저장하기 위한 물리적 메모리 풋 프린트(예를 들어, 물리적 DRAM 메모리에서 사용되는 공간의 양)는 어드레스 매핑 테이블의 영역을 저장하는데 사용되는 물리적 메모리(예를 들어, DRAM)가 가변 크기를 갖도록함으로써 감소될 수 있다. 이를 위해, 물리적 메모리는 영역을 가변 크기 객체 풀로 저장하기 위해 관리될 수 있으며, 고전적인 C/C ++ 용어에서 힙(heap)이라고 지칭된다. 슬래브 할당자(slab allocators) 및 이와 유사한 아이템을 사용하여 조각화를 방지하고 힙의 성능을 최적화할 수 있다. 메모리-내 테이블을 사용하여 DRAM에 로드된 영역뿐만 아니라 영역의 워드 레벨 어드레스까지 추적할 수 있다.
호스트 기록으로 인한 영역의 성장 크기를 관리하는 방법이 수행될 수 있다. 이러한 방법에는 DRAM에 로드된 각 영역 사이에 여유 공간을 할당하여 성장할 수 있다. 이들 방법은, 영역 n이 추가 공간을 필요로할 때, DRAM에서 다음 영역을 제거하고 다음 영역을 다시 물리적 매체에 저장하는 단계를 포함할 수 있다. 이들 방법은 DMA 위치를 통해 메모리에서 영역을 새로운 더 큰 공간으로 이동시키는 단계를 포함할 수 있다. 어드레스 매핑 테이블의 영역은 NAND에 저장될 수 있고, 일부 예시적인 캐싱 방식에서, 각 영역은 NAND 페이지의 크기 또는 이진 배수로 크기가 정해질 수 있다. 이 예제 캐싱 체계에서 영역의 크기는 가변적이므로 이 관계가 더 이상 존재하지 않을 수 있다. 이 문제를 해결하기 위해 NAND를 사용하여 NAND 페이지 내부 및 전체 영역을 저장할 수 있다. 그러나 단일 영역은 NAND 페이지 내에 저장될 수 있으며 추가로 페이지 끝의 공간을 열어 둘 수 있다.
일부 메모리 애플리케이션에서, 메모리 드라이브(예를 들어 솔리드 스테이트 드라이브(SSD))는 완전히 꽉 차지 않는다. 어떤 사용자나 파일링 시스템도 사용가능 공간없이 동작할 수 없고, 통상적으로 랩톱 및 개인용 컴퓨터는 상당한 여유 공간으로 실행되며(예: 25-50 %), 서버에서도 스토리지 공간이 거의 가득 차기는 어려운데, 이는 저장 공간 부족 상태가 임박했음을 의미하는 것이기 때문이다. 예외적으로, 일반적으로 항상 100 % 풀 상태로 구동되는 고급 시스템에서 티어 제로 캐시 디바이스로 사용되는 SSD(Solid State Drive)가 포함될 수 있다. 드라이브가 100 % 풀 상태가 아닌 파일링 시스템에서, 저장된 데이터는 미디어의 LBA 범위에 걸쳐 분산될 수 있고, 즉, 데이터는 드라이브 시작시 압축(pack)되지 않고 그 사이에 구멍을 갖도록 펼쳐져서, 파일의 조각화를 최소화할 수 있다. 부분적으로 풀 상태인 드라이브인 경우, L2P(Logical-to-Physical) 캐시의 모든 영역은 호스트 데이터를 포함하는 일부 유효한 TU와, 트리밍된 일부를 나타낸다. 그러나, 메모리에서 L2P 영역의 크기는 그것이 나타내는 유효 데이터의 양과 무관하므로 이점을 제한할 수 있다. 이것은 여기에 설명된 실시예들에서 회피될 수 있다. 제 1 테이블은 고정된 크기 일 수 있지만, 제 2 테이블은 저장된 실제 사용자 데이터의 양에 따라 크기가 변할 수 있다. 예를 들어, 풀 드라이브의 경우 각 L2P 영역(제 1 테이블 및 제 2 테이블 포함)의 크기는 12,641 바이트 일 수 있다. 드라이브가 50 % 만 가득 찬 경우, 평균 실제 어드레스 테이블의 크기는 6,089 바이트(풀 상태일 때, 그리고 풀 상태가 아니지만 크기 감소 불가능할 때 - 일부 이전 기법) 내지 3,045 바이트로, 또는 총 영역 크기가 9,597 바이트로 줄어들어서, 고정 크기 영역 테이블이 사용할 DRAM 크기의 40%를 절감할 수 있다.
일부 실시예들에서, (예를 들어, 전술한 어드레스 매핑 테이블 방식을 사용하지 않을 때) 일부 이전의 접근법들보다 더 많은 DRAM 액세스들이 사용될 수 있다. 최소한, 단일 TU의 각각의 호스트 판독은 제 1 테이블에 대한 판독 액세스를 사용할 수 있고, 이어서 물리적 제 2 테이블을 이용할 수 있다. 단일 TU에 대한 기록 작업의 경우, 최소 4회의 DRMA 액세스, 2회의 판독 및 2회의 기록, 물리적인 제 2 테이블의 엔트리를 재사용할 수 없는 경우 잠재적으로 3 회의 기록이 수행될 수 있다. 그러나 호스트가 TU가 기록될 때와 동일한 크기의 명령 사이즈 및 정렬을 사용하여 TU를 읽는 경우, n + 1회의 판독이 n개의 TU를 다시 판독하기 위한 모든 정보를 제공할 수 있으므로 DRAM 액세스 수를 줄일 수 있다. 또한, 순차적 판독이 각각의 물리적 엔트리에 대한 길이 필드에 저장된 TU의 수보다 적은 경우, 단 하나의 DRAM 액세스 만이 사용될 수 있다.
특정 실시예가 여기에 도시되고 설명되었지만, 당업자는 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예를 대신할 수 있음을 이해할 것이다. 본 개시는 본 개시의 다수의 실시예들의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기 실시예들과 본 명세서에서 구체적으로 설명되지 않은 다른 실시예들의 조합은 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시의 다수의 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 응용을 포함한다. 그러므로, 본 개시의 다수의 실시예들의 범위는 첨부된 청구 범위를 참조하여 그러한 청구 범위가 부여되는 전체 범위의 등가물과 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 이 개시 방법은 본 개시의 개시된 실시예가 각 청구 범위에 명시적으로 언급된 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 다음의 청구 범위가 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징보다 적다. 따라서, 이하의 청구 범위는 상세한 설명에 포함되며, 각 청구 범위는 그 자체가 별도의 실시예로서 존재한다.

Claims (22)

  1. 장치로서,
    메모리 셀들의 어레이; 및
    상기 어레이의 논리 어드레스 공간의 각자각의 양에 대응하는 다수의 영역을 포함하는 어드레스 매핑 테이블의 적어도 일부를 저장하도록 구성된 메모리 캐시 - 상기 어드레스 매핑 테이블은 변환 유닛(TU)을 상기 어레이의 물리적 위치에 매핑 함 - 를 포함하고, 상기 다수의 영역 각각은:
    논리 어드레스 공간의 각자의 량의 각자의 TU 논리 어드레스에 대응하는 엔트리를 포함하는 제 1 테이블; 및
    상기 어레이의 각자의 물리적 어드레스 범위에 대응하는 엔트리를 포함하는 제 2 테이블을 포함하며,
    상기 제 1 테이블의 엔트리는:
    제 2 테이블의 특정 엔트리에 대한 각자의 포인터; 및
    각자의 TU에 대응하는 물리적 데이터가 저장되는, 제 2 테이블의 특정 엔트리에 대응하는 물리적 어드레스 범위 내의, 위치를 나타내는 대응하는 각자의 오프셋을 포함하고,
    상기 제 2 테이블의 엔트리는:
    특정 엔트리에 대응하는 물리적 어드레스 범위의 제 1 물리적 어드레스를 나타내는 각자의 물리적 어드레스 필드; 및
    특정 엔트리에 대응하는 물리적 어드레스 범위와 연관된 TU의 수량을 나타내는 대응하는 각자의 카운트 필드를 포함하는, 장치.
  2. 제 1 항에 있어서, 상기 제 2 테이블의 엔트리의 수량은 상기 제 1 테이블의 엔트리의 수량보다 적은, 장치.
  3. 제 2 항에 있어서, 상기 제 2 테이블의 엔트리의 수량은 추가 TU가 상기 어레이로부터 기록 및 소거되는 것에 응답하여 변하는, 장치.
  4. 제 1 항에 있어서, 상기 제 2 테이블의 제 1 엔트리와 연관된 각자의 카운트 필드의 값은 상기 제 1 엔트리와 이전에 연관된 변환 유닛들 중 적어도 하나가 후속하여 제 2 테이블의 제 2 엔트리와 연관되는 것에 응답하여 감소되는, 장치.
  5. 제 1 항에 있어서, 상기 제 2 테이블의 제 1 엔트리와 연관된 각자의 카운트 필드의 값은 상기 제 1 엔트리와 이전에 연관된 변환 유닛들 중 적어도 하나가 유효하지 않은 것으로 표시되는 것에 응답하여 감소되는, 장치.
  6. 제 1 항에 있어서, 상기 제 2 테이블의 제 1 엔트리와 연관된 각자의 카운트 필드의 값은 상기 변환 유닛들 중 적어도 하나가 상기 제 1 엔트리와 연관됨에 응답하여 증가되는 장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 메모리 셀 어레이는 NAND 메모리 셀 어레이이고, 상기 메모리 캐시는 DRAM 메모리 캐시인, 장치.
  8. 방법에 있어서,
    메모리 셀의 어레이에서 변환 유닛(TU)의 물리적 위치를 결정하는 단계로서, 상기 단계는,
    어드레스 매핑 테이블의 제 1 테이블에서 TU의 논리 어드레스에 대응하는 엔트리에 액세스하는 단계 - 제 1 테이블의 엔트리는: 상기 어드레스 매핑 테이블의 제 2 테이블에서 각자의 엔트리에 대한 포인터; 및 TU가 저장된 제 2 테이블 내에서 가리켜지는 각자의 엔트리에 의해 표시된 물리적 어드레스 범위 내의 위치를 나타내는 오프셋을 포함함 - 와,
    상기 제 2 테이블의 물리적 어드레스 범위에 대응하는 엔트리에 액세스하는 단계 - 상기 제 2 테이블의 엔트리는: 물리적 어드레스 범위의 제 1 물리적 어드레스를 나타내는 물리적 어드레스 필드; 및 제 2 테이블의 엔트리에 대응하는 물리적 어드레스 범위와 연관된 TU의 수량을 나타내는 카운트 필드를 포함함 - 에 의해 구현되는, 방법.
  9. 제 8 항에 있어서, 상기 오프셋에 의해 표시된 상기 어레이의 상기 제 1 물리 어드레스로부터 떨어진 거리에서 상기 메모리 셀 어레이의 TU를 판독하는 단계를 포함하는, 방법.
  10. 제 8 항에 있어서, 상기 TU에 대응하는 상기 제 1 테이블 및 상기 제 2 테이블의 엔트리를 포함하는 어드레스 매핑 테이블의 다수의 영역 중 일 영역을 결정하는 단계를 포함하고, 각자의 영역은 상기 어레이의 논리 어드레스 공간의 양에 대응하는, 방법.
  11. 제 10 항에 있어서, 상기 제 1 테이블의 엔트리 및 상기 제 2 테이블의 엔트리에 액세스하기 전에:
    영역이 메모리 캐시에 로딩되는지를 결정하는 단계; 및
    영역이 메모리 캐시에 로딩되지 않는 것에 응답하여, 영역을 메모리 캐시에 로딩하는 단계를 포함하는, 방법.
  12. 제 8 항 내지 제 11 항 중 어느 한 항에 있어서, 소정의 추가 TU를 상기 메모리 셀 어레이에 기록함에 응답하여,
    기록된 추가 TU의 수량과 동일한 제 1 테이블의 엔트리 수량을 기록하는 단계; 및
    제 2 테이블에 추가 엔트리를 기록하는 단계를 포함하는, 방법.
  13. 제 12 항에 있어서, 상기 추가 TU 중 하나가 무효화되는 것에 응답하여 상기 추가 엔트리의 카운트 필드를 감소시키는 단계를 포함하는, 방법.
  14. 장치로서,
    메모리 셀들의 어레이;
    변환 유닛(TU)을 어레이의 물리적 위치에 매핑하는 어드레스 매핑 테이블의 적어도 일부를 저장하도록 구성된 메모리 캐시와,
    상기 메모리 캐시에 결합되는 제어기를 포함하며,
    상기 어드레스 매핑 테이블은 상기 어레이의 논리 어드레스 공간의 일부에 대응하는 다수의 영역을 포함하고, 각각의 영역은,
    TU 논리 어드레스에 대응하는 엔트리를 포함하는 제 1 테이블과,
    어레이의 각자의 물리적 어드레스 범위에 대응하는 엔트리를 포함하는 제 2 테이블을 포함하고, 제 1 테이블의 각각의 엔트리는:
    제 2 테이블의 특정 엔트리에 대한 포인터; 및
    각자의 TU에 대응하는 물리적 데이터가 저장되는 위치를 나타내는 오프셋을 포함하고, 제 2 테이블의 각각의 엔트리는,
    대응하는 물리적 어드레스 범위의 제 1 물리적 어드레스를 나타내는 물리적 어드레스 필드; 및
    대응하는 물리적 어드레스 범위와 연관된 TU의 수량을 나타내는 카운트 필드를 포함하며,
    상기 제어기는, 추가 TU가 상기 어레이에 기록되는 것에 응답하여 상기 제 1 테이블 및 상기 제 2 테이블에 엔트리를 추가하도록, 그리고, 대응하는 TU가 유효하지 않아짐에 응답하여 상기 제 1 테이블 및 상기 제 2 테이블로부터 엔트리를 제거하도록 구성되는, 장치.
  15. 제 14 항에 있어서, 상기 영역의 수는 가변 크기 영역을 포함하는, 장치.
  16. 제 15 항에 있어서, 상기 제어기는 가변 크기 테이블 영역을 관리하기 위해 가변 크기 객체의 풀을 사용하도록 구성되는, 장치.
  17. 제 14 항 내지 제 16 항 중 어느 한 항에 있어서, 상기 제 2 테이블은 상기 제 1 테이블 내 새로 추가된 엔트리를 가리키기 위해 가용한 물리적 어드레스 엔트리를 나타내는 추가의 가용한 엔트리 필드를 포함하는, 장치.
  18. 방법으로서,
    어드레스 매핑 테이블의 제 1 테이블에 변환 유닛(TU)의 논리 어드레스에 대응하는 엔트리를 저장하는 단계를 포함하고, 상기 제 1 테이블의 엔트리는:
    어드레스 매핑 테이블의 제 2 테이블에서 각자의 엔트리에 대한 포인터; 및
    TU가 저장되어 있음을 제 2 테이블 내에서 가리켜지는 각자의 엔트리에 의해 지시된 메모리 셀 어레이의 물리적 어드레스 범위 내의 위치를 나타내는 오프셋을 포함하고,
    상기 물리적 어드레스 범위에 대응하는 엔트리를 상기 제 2 테이블에 저장하는 단계를 더 포함하며, 상기 제 2 테이블의 엔트리 각각은:
    물리적 어드레스 범위의 제 1 물리적 어드레스를 나타내는 물리적 어드레스 필드; 및
    제 2 테이블의 엔트리에 대응하는 물리적 어드레스 범위와 연관된 TU의 수량을 나타내는 카운트 필드를 포함하고,
    메모리 셀들의 어레이에 추가적인 TU를 기록하는 것에 응답하여, 제 1 테이블 및 제 2 테이블의 엔트리에 기록하는 단계; 및
    엔트리에 대응하는 TU를 무효화하는 것에 응답하여, 무효화된 TU와 연관된 카운트 필드를 수정하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서, 상기 카운트 필드가 0의 값으로 감소되는 것에 응답하여, LBA가 특정 물리적 어드레스 위치와 연관되지 않음을 표시하기 위해 특정 물리적 어드레스 위치와 연관된 카운트 필드에 특정 값을 추가하는 단계를 포함하는, 방법.
  20. 제 18 항 내지 제 19 항 중 어느 한 항에 있어서, 적어도 4회의 메모리 액세스를 수행함으로써 특정 TU의 기록 동작을 수행하는 단계를 포함하는, 방법.
  21. 제 20 항에 있어서, 상기 기록 동작을 수행하는 단계는 2회의 판독 및 2회의 기록을 수행하는 단계를 포함하는, 방법.
  22. 제 20 항에 있어서, 상기 기록 동작을 수행하는 단계는 2회의 판독 및 3회의 기록을 수행하는 단계를 포함하는, 방법.
KR1020207006016A 2017-07-31 2018-07-27 메모리 어드레싱 KR102149817B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/664,252 US10534718B2 (en) 2017-07-31 2017-07-31 Variable-size table for address translation
US15/664,252 2017-07-31
PCT/US2018/044000 WO2019027815A1 (en) 2017-07-31 2018-07-27 ADDRESSING MEMORY

Publications (2)

Publication Number Publication Date
KR20200027045A true KR20200027045A (ko) 2020-03-11
KR102149817B1 KR102149817B1 (ko) 2020-09-01

Family

ID=65038629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006016A KR102149817B1 (ko) 2017-07-31 2018-07-27 메모리 어드레싱

Country Status (5)

Country Link
US (2) US10534718B2 (ko)
EP (1) EP3662379B1 (ko)
KR (1) KR102149817B1 (ko)
CN (1) CN110998550B (ko)
WO (1) WO2019027815A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200116375A (ko) * 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11237953B2 (en) 2019-05-21 2022-02-01 Micron Technology, Inc. Host device physical address encoding
US11922012B2 (en) 2019-09-10 2024-03-05 Micron Technology, Inc. Memory mapping device and method
EP3792800A1 (en) * 2019-09-12 2021-03-17 Nxp B.V. Managing equally sized virtual memory regions and physical memory regions in an electronic device
US11144250B2 (en) * 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
CN113885779B (zh) 2020-07-02 2024-03-12 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
TWI766526B (zh) * 2020-07-02 2022-06-01 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置
CN113885778B (zh) 2020-07-02 2024-03-08 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
CN113961140A (zh) 2020-07-02 2022-01-21 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
JP2022143762A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム、制御方法およびメモリコントローラ
KR20230100008A (ko) * 2021-12-28 2023-07-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11940926B2 (en) * 2022-05-13 2024-03-26 Micron Technology, Inc. Creating high density logical to physical mapping

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US8543792B1 (en) * 2006-09-19 2013-09-24 Nvidia Corporation Memory access techniques including coalesing page table entries
KR20130120541A (ko) * 2011-03-06 2013-11-04 마이크론 테크놀로지, 인크 논리적 어드레스 변환
US20150127922A1 (en) * 2013-11-06 2015-05-07 International Business Machines Corporation Physical address management in solid state memory
KR20150054964A (ko) * 2012-09-14 2015-05-20 마이크론 테크놀로지, 인크 어드레스 매핑
US20160342509A1 (en) * 2015-05-22 2016-11-24 Sandisk Enterprise Ip Llc Hierarchical FTL Mapping Optimized for Workload
US20170046273A1 (en) * 2013-01-22 2017-02-16 Seagate Technology Llc Variable-size flash translation layer

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7251653B2 (en) 2004-06-30 2007-07-31 Microsoft Corporation Method and system for mapping between logical data and physical data
US8332572B2 (en) 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US20100274961A1 (en) 2009-04-22 2010-10-28 Golla Robert T Physically-indexed logical map table
US8838937B1 (en) * 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
JP6443794B2 (ja) * 2013-08-16 2018-12-26 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
US9229876B2 (en) 2013-12-17 2016-01-05 Sandisk Technologies Inc. Method and system for dynamic compression of address tables in a memory

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543792B1 (en) * 2006-09-19 2013-09-24 Nvidia Corporation Memory access techniques including coalesing page table entries
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
KR20130120541A (ko) * 2011-03-06 2013-11-04 마이크론 테크놀로지, 인크 논리적 어드레스 변환
KR20150054964A (ko) * 2012-09-14 2015-05-20 마이크론 테크놀로지, 인크 어드레스 매핑
US20170046273A1 (en) * 2013-01-22 2017-02-16 Seagate Technology Llc Variable-size flash translation layer
US20150127922A1 (en) * 2013-11-06 2015-05-07 International Business Machines Corporation Physical address management in solid state memory
US20160342509A1 (en) * 2015-05-22 2016-11-24 Sandisk Enterprise Ip Llc Hierarchical FTL Mapping Optimized for Workload

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C. Park, et al., "Hybrid TLB Coalescing: Improving TLB Translation Coverage under Diverse Fragmented Memory Allocations", ISCA ‘17, pp. 444-456, June 24-28, 2017. *

Also Published As

Publication number Publication date
CN110998550A (zh) 2020-04-10
US11232041B2 (en) 2022-01-25
WO2019027815A1 (en) 2019-02-07
US20200151110A1 (en) 2020-05-14
US20190034347A1 (en) 2019-01-31
EP3662379A1 (en) 2020-06-10
CN110998550B (zh) 2022-08-02
EP3662379B1 (en) 2022-09-07
US10534718B2 (en) 2020-01-14
EP3662379A4 (en) 2021-06-02
KR102149817B1 (ko) 2020-09-01

Similar Documents

Publication Publication Date Title
KR102149817B1 (ko) 메모리 어드레싱
US11593259B2 (en) Directed sanitization of memory
US9842030B2 (en) Data storage device and flash memory control method
CN111033477B (zh) 逻辑到物理映射
US7890550B2 (en) Flash memory system and garbage collection method thereof
JP5649742B2 (ja) トランザクションログの復元
US8751731B2 (en) Memory super block allocation
KR101852668B1 (ko) 어드레스 매핑
US10496334B2 (en) Solid state drive using two-level indirection architecture
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
TWI785876B (zh) 映射資訊記錄方法、記憶體控制電路單元與記憶體儲存裝置
KR102366238B1 (ko) 다이 어드레싱
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US11543993B1 (en) Fast garbage collection in zoned namespaces SSDs
TWI763050B (zh) 自適應損耗平衡方法及演算法與相關記憶體裝置及設備
CN111611178A (zh) 数据储存装置以及非挥发式存储器控制方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant