KR20130114233A - 메모리 어드레스 변환 - Google Patents

메모리 어드레스 변환

Info

Publication number
KR20130114233A
KR20130114233A KR1020137020633A KR20137020633A KR20130114233A KR 20130114233 A KR20130114233 A KR 20130114233A KR 1020137020633 A KR1020137020633 A KR 1020137020633A KR 20137020633 A KR20137020633 A KR 20137020633A KR 20130114233 A KR20130114233 A KR 20130114233A
Authority
KR
South Korea
Prior art keywords
record
entry
records
logical address
address corresponding
Prior art date
Application number
KR1020137020633A
Other languages
English (en)
Other versions
KR101497860B1 (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 KR20130114233A publication Critical patent/KR20130114233A/ko
Application granted granted Critical
Publication of KR101497860B1 publication Critical patent/KR101497860B1/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
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명은 메모리 어드레스 변환을 위한 디바이스, 시스템, 및 방법을 포함한다. 하나 이상의 실시예는 메모리 어레이와 이 어레이에 연결된 제어기를 포함한다. 이 어레이는 다수의 레코드를 구비하는 제1 테이블을 포함하고, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제2 테이블을 포함하며, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제1 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제3 테이블을 더 포함하며, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다.

Description

메모리 어드레스 변환{MEMORY ADDRESS TRANSLATION}
본 발명은 일반적으로 반도체 메모리 디바이스, 방법 및 시스템에 관한 것으로, 보다 상세하게는 메모리 어드레스 변환에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로 및/또는 외부 이동식 디바이스로 제공된다. 여기에는 특히, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기 동적 랜덤 액세스 메모리(SDRAM), 위상 변화 랜덤 액세스 메모리(PCRAM) 및 플래시 메모리를 포함하는 많은 상이한 유형의 메모리들이 있다.
플래시 메모리 디바이스는 광범위한 전자 애플리케이션을 위한 휘발성 및 비휘발성 메모리로 사용될 수 있다. 플래시 메모리 디바이스는 일반적으로 높은 메모리 밀도, 고신뢰성, 및 저전력 소비를 가능하게 하는 하나의 트랜지스터 메모리 셀을 사용한다. 플래시 메모리 디바이스는 종종 각각의 기본 메모리 셀 구성이 배열된 논리적 형태를 위해 "NAND" 또는 "NOR" 메모리 어레이 아키텍처를 구비할 수 있다. 플래시 메모리를 위한 사용은 다른 전자 디바이스 중에서 특히 고체 상태 드라이브(solid state drive)(SSD), 퍼스널 컴퓨터, 퍼스널 디지털 어시스턴트(personal digital assistant)(PDA), 디지털 카메라, 셀룰러 전화, 휴대용 음악 플레이어(예를 들어, MP3 플레이어) 및 영화 플레이어를 위한 메모리를 포함한다. 프로그램 코드, 유저 데이터와 같은 데이터 및/또는 기본 입력/출력 시스템(BIOS)과 같은 시스템 데이터는 일반적으로 플래시 메모리 디바이스에 저장된다.
플래시 메모리 디바이스는 플래시 전이층(flash transition layer)(FTL)을 포함할 수 있다. FTL은 (예를 들어, 플래시 메모리 디바이스에 수행되는 프로그래밍 동작 동안) 플래시 메모리에서 데이터 엔트리(entry)와 연관된 논리적 어드레스를 물리적 어드레스로 매핑(mapping)하는데 사용될 수 있다. FTL은 매핑 동작을 수행하기 위해 플래시 메모리 디바이스의 국부 메모리에 어드레스 매핑 테이블을 포함할 수 있다. 그러나, 이전의 FTL 접근법에 사용된 어드레스 매핑 테이블의 사이즈(예를 들어, 이에 저장된 데이터의 양)은 고정되어 있을 수 있다.
도 1은 본 발명의 하나 이상의 실시예에 따라 다수의 물리적 블록을 구비하는 메모리 어레이의 일부를 도시한 도면;
도 2a는 본 발명의 하나 이상의 실시예에 따른 메모리 디바이스의 블록도;
도 2b는 본 발명의 하나 이상의 실시예에 따른 다수의 테이블 간의 관계를 도시한 도면;
도 3은 본 발명의 하나 이상의 실시예에 따른 테이블의 일부를 도시한 도면;
도 4는 본 발명의 하나 이상의 실시예에 따른 서브 테이블(sub-table)의 일부를 도시한 도면;
도 5는 본 발명의 하나 이상의 실시예에 따른 테이블의 일부를 도시한 도면.
본 발명은 메모리 어드레스 변환을 위한 디바이스, 시스템 및 방법을 포함한다. 하나 이상의 실시예는 메모리 어레이 및 이 어레이에 연결된 제어기를 포함한다. 이 어레이는 다수의 레코드(record)를 구비하는 제1 테이블을 포함하되, 여기서 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제2 테이블을 포함하되, 여기서 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 제1 테이블의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제3 테이블을 더 포함하되, 여기서 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 제2 테이블의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다.
본 발명의 실시예는 가변 사이즈를 구비하는 테이블(예를 들어, 어드레스 매핑 테이블)을 가지는 플래시 변환 층(flash translation layer)을 포함할 수 있다. 즉, 본 발명의 플래시 변환 층에서 테이블의 사이즈(예를 들어, 이에 저장되는 데이터의 양)는 변할 수 있다. 본 발명의 플래시 변환 층에서 테이블의 사이즈는 변할 수 있으므로, 테이블은 상이한 유형의 플래시 메모리 디바이스에 적응될 수 있다. 즉, 본 발명에 따른 플래시 변환 층은 상이한 유형의 플래시 메모리 디바이스에 사용될 수 있다.
본 발명의 이하 상세한 설명에서는, 본 발명의 다수의 실시예를 실시할 수 있는 방법을 예를 들어 도시하고 본 명세서의 일부를 형성하는 첨부 도면을 참조한다. 이들 실시예는 이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 실시예를 실시할 수 있을 만큼 충분히 상세히 설명되고, 다른 실시예들이 사용될 수도 있으며 본 발명의 범위를 벗어남이 없이 공정, 전기적 및/또는 구조적 변경이 이루어질 수 있는 것으로 이해된다.
본 명세서에 사용된 바와 같이, "다수의" 것이란 하나 이상의 것을 말할 수 있다. 예를 들어, 다수의 테이블은 하나 이상의 테이블을 말할 수 있다. 추가적으로, 특히 도면에 있는 참조 부호에 대해 본 명세서에 사용된 바와 같이 "B", "D", "E", R", 및 "S"는 이렇게 지시된 다수의 특정 특징부의 부호가 본 발명의 다수의 실시예에 포함될 수 있다는 것을 나타낸다.
본 명세서에 있는 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자는 도면에서 요소 또는 성분을 식별하는 도면 부호 부여 규정을 따른다. 상이한 도면들 사이에서 유사한 요소 또는 성분은 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, (232)은 도 2에서 요소 "32"를 나타낼 수 있고, 도 3에 있는 유사한 요소는 (332)로 지칭될 수 있다. 이해되는 바와 같이, 본 명세서에서 여러 실시예에 도시된 요소는 본 발명의 다수의 추가적인 실시예를 제공하도록 추가, 교환 및/또는 제거될 수 있다. 나아가, 이해되는 바와 같이, 도면에 제공된 요소의 비율과 상대적인 축척은 본 발명의 특정 실시예를 예시하려고 의도된 것이므로 발명을 제한하는 것으로 해석되어서는 안 된다.
도 1은 본 발명의 하나 이상의 실시예에 따라 다수의 물리적 블록을 구비하는 메모리 어레이(100)의 일부를 도시한다. 메모리 어레이(100)는 예를 들어, NAND 또는 NOR 플래시 비휘발성 메모리 어레이일 수 있다. 그러나, 본 발명의 실시예는 특정 유형의 메모리 어레이로 제한되지 않는다. 나아가, 도 1에 도시되지는 않았으나, 이 기술 분야에 통상의 지식을 가진 자라면 메모리 어레이(100)는 동작과 연관된 여러 주변 회로와 함께 특정 반도체 다이 상에 위치될 수 있다는 것을 이해할 수 있을 것이다.
도 1에 도시된 바와 같이, 메모리 어레이(100)는 메모리 셀의 다수의 물리적 블록(116-0 (블록 0), 116-1 (블록 1), ..., 116-B (블록 B))을 구비한다. 메모리 셀은 단일 레벨 셀(single level cell) 및/또는 다중 레벨 셀(multilevel cells)일 수 있다. 일례로서, 메모리 어레이(100)에서 물리적 블록의 개수는 128개의 블록, 512개의 블록 또는 1024개의 블록일 수 있으나, 실시예는 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-R)으로 제한되지 않는다.
이 기술 분야에 통상의 지식을 가진 자라면, 각 행(120-0, 120-1, ..., 120-R)이 하나 이상의 물리적 데이터 페이지를 포함(예를 들어, 저장)할 수 있다는 것을 이해할 수 있을 것이다. 물리적 페이지는 프로그래밍 및/또는 센싱 유닛(예를 들어, 메모리 셀의 기능 그룹으로 함께 프로그래밍 및/또는 센싱되는 다수의 셀)을 말한다. 도 1에 도시된 실시예에서, 각 행(120-0, 120-1, ..., 120-R)은 하나의 데이터 페이지를 저장한다. 그러나, 본 발명의 실시예는 이로 제한되지 않는다. 예를 들어, 본 발명의 하나 이상의 실시예에서, 각 행은 다수의 데이터 페이지를 저장할 수 있다.
본 발명의 하나 이상의 실시예에서 그리고 도 1에 도시된 바와 같이, 행과 연관된 페이지는 다수의 물리적 섹터(122-0, 122-1, ..., 122-S)에 따라 (예를 들어, 프로그래밍 동작 후에) 데이터를 저장할 수 있다. 각 물리적 섹터(122-0, 122-1, ..., 122-S)는 하나 이상의 논리적 데이터 섹터에 대응하는 데이터를 저장할 수 있다. 예를 들어, 특정 물리적 섹터(예를 들어, 특정 물리적 섹터에 저장된 데이터)는 특정 논리적 섹터에 대응할 수 있다. 추가적으로, 하나 이상의 물리적 섹터에 저장된 데이터의 일부는 특정 논리적 섹터에 대응할 수 있다. 예를 들어, 특정 물리적 섹터에 저장된 데이터의 제1 부분은 제1 논리적 섹터에 대응할 수 있고, 특정 물리적 섹터에 저장된 데이터의 제2 부분은 제2 논리적 섹터에 대응할 수 있다. 각 물리적 섹터(122-0, 122-1, ..., 122-S)는 시스템 및/또는 유저 데이터를 더 저장할 수 있고, 에러 정정 코드(error correction code)(ECC) 정보 및 논리적 블록 어드레스(logical block address)(LBA) 정보와 같은 오버헤드 정보를 포함할 수 있다.
각 물리적 섹터(122-0, 122-1, ..., 122-S)는 예를 들어 연관된 물리적 블록 수(physical block number)(PBN)와 같은 물리적 어드레스를 구비할 수 있다. 물리적 섹터의 PBN은 메모리 어레이(100) 내 섹터의 실제 물리적 위치를 식별할 수 있다. 예를 들어, PBN은 CE#, LUN, 플랜(plane), 블록, 페이지, 위치 및/또는 상태를 식별할 수 있다. 나아가, 다수의 PBN은 메모리 어레이(100) 내 메모리 셀의 물리적 페이지로 매핑될 수 있다. 예를 들어, 1개, 2개 또는 4개의 PBN은 메모리 어레이(100)의 유형에 따라 물리적 페이지로 매핑될 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 논리적 블록 어드레싱은 데이터의 논리적 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 구조(scheme)이다. 예를 들어, 각 논리적 섹터는 고유한 논리적 블록 어드레스(LBA)에 대응할 수 있다.
본 발명의 하나 이상의 실시예에서, 다수의 LBA는 논리적 페이지 수(logical page number)(LPN)에 대응할 수 있다. 즉, LPN은 다수의 LBA(예를 들어, 데이터의 다수의 논리적 섹터)를 포함할 수 있다. 예를 들어, 하나 이상의 LPN은 LBA 및/또는 LPN(들)의 사이즈에 따라 하나의 LBA로 논리적으로 매핑될 수 있다. 추가적으로, 가상 페이지 번호(virtual page number)(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 미만 또는 512 초과하는 바이트의 데이터를 포함할 수 있는 단일 논리적 섹터에 대응하는 데이터를 저장할 수 있다.
도 2a는 본 발명의 하나 이상의 실시예에 따라 메모리 디바이스(201)의 블록도를 도시한다. 도 2a에 도시된 바와 같이 메모리 디바이스(201)는 메모리 어레이(200)와 메모리 어레이(200)에 연결(예를 들어, 통신 가능하게 연결)된 제어기(230)를 포함한다.
메모리 어레이(200)는 예를 들어, 도 1과 관련하여 전술된 메모리 어레이(100)일 수 있다. 하나의 메모리 어레이가 도 2a에 도시되어 있으나, 본 발명의 실시예는 이로 제한되지 않는다(예를 들어, 메모리 디바이스(201)는 제어기(230)에 연결된 하나를 초과하는 메모리 어레이를 포함할 수 있다).
도 2a에 도시된 바와 같이, 제어기(230)는 제어기 메모리(231)를 포함한다. 제어기 메모리(231)는 예를 들어, 다른 유형의 메모리 중에서 특히 정적 랜덤 액세스 메모리(static random access memory)(SRAM)일 수 있다. 제어기(230)는 예를 들어, 제어 회로 및/또는 펌웨어를 더 포함할 수 있고, 메모리 어레이(200)와 동일한 물리적 디바이스(예를 들어, 동일한 다이) 상에 포함되거나 또는 메모리 어레이(200)를 포함하는 물리적 디바이스에 통신가능하게 연결된 별개의 물리적 디바이스 상에 포함될 수 있다.
도 2a에 도시된 실시예에서, 메모리 디바이스(201)는 3개의 테이블(예를 들어, 테이블(232, 236, 242))을 포함한다. 테이블(232, 236, 242)(예를 들어, 테이블(232, 236, 242)에 저장된 데이터)은 본 명세서에 더 설명되는 바와 같이 요구 기반 플래시 변환 층(demand-based flash translation layer)의 일부일 수 있다. 예를 들어, 테이블(232, 236, 242)은 본 명세서에 더 설명되는 바와 같이 메모리 어레이(200) 내 다수의 메모리 셀과 연관된 논리적 어드레스(예를 들어, 호스트에 의해 제공되는 LBA)를 메모리 셀과 연관된 물리적 어드레스(예를 들어, PBN)로 매핑하는데 사용될 수 있다.
테이블(232, 236, 242)은 예를 들어 각각 데이터 블록 룩업 테이블, 글로벌 디렉토리 룩업 테이블(global directory lookup table) 및 루트 디렉토리 룩업 테이블(root directory lookup table)일 수 있다. 테이블(232)은 도 2a에 도시된 바와 같이 메모리 어레이(200)에 위치(예를 들어, 저장)된다. 테이블(236, 242)은 도 2a에 도시된 바와 같이 제어기(230)에 (예를 들어, 제어기 메모리(231)에) 위치된다. 테이블(232, 236, 242)은 본 명세서에 더 설명되는 바와 같이 다수의 논리적 어드레스를 물리적 어드레스로 매핑하는 것을 포함할 수 있다.
테이블(232)은 다수의 레코드를 포함할 수 있다. 테이블(232)에서 각 레코드는 다수의 엔트리를 포함할 수 있고, 레코드에서 각 엔트리는 메모리 어레이(200)에 저장된 데이터 세그먼트(예를 들어, 데이터 섹터)에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, LPN)를 포함할 수 있다. 즉, 테이블(232)에서 각 엔트리는 LPN에서 PBN으로의 매핑을 포함할 수 있다. 테이블(232)에서 레코드와 엔트리는 (예를 들어, 도 3과 관련하여) 본 명세서에 더 설명된다.
도 2a에 도시된 바와 같이 제어기(230)(예를 들어, 제어기 메모리(231))는 테이블(232)에 연결된 캐시(234)를 포함한다. 캐시(234)는 캐싱된 매핑 엔트리(235)를 포함한다. 캐시(234)(예를 들어, 캐싱된 매핑 엔트리(235))는 테이블(232)에서 다수의 레코드 중 하나 이상을 저장할 수 있다. 여러 실시예에서, 캐시(234)에 저장된 하나 이상의 레코드는 캐시(234)에 임시 저장된 테이블(232)의 활성 레코드(active record)일 수 있다. 테이블(232)에서 레코드가 캐시(234)에 현재 포함되어 있는지 여부(예를 들어, 테이블(232)에서 레코드가 현재 활성인지 여부)의 결정은 예를 들어, 레코드 내의 엔트리가 (예를 들어, 애플리케이션에 의해) 현재 사용되고 있는지 여부 및/또는 메모리 어레이(200)에서 특정 데이터 세그먼트의 물리적 어드레스를 결정하는데 이전에 사용된 적이 있는지 여부에 기초할 수 있다.
예를 들어, 캐시(234)에서 하나 이상의 레코드가 메모리 어레이(200)에서 특정 데이터 세그먼트의 물리적 어드레스를 결정하는데 가장 최근에 사용된 엔트리를 가지는 테이블(232)의 레코드일 수 있다. 즉, 캐시(234)에 현재 있지 않는 테이블(232)의 레코드는 캐시(234)에 현재 있는 테이블(232)의 레코드보다 더 최근에 메모리 어레이(200)에 특정 데이터 세그먼트의 물리적 어드레스를 결정하는데 사용된 엔트리를 구비하지 않을 수 있다. 추가적으로 및/또는 대안적으로, 캐시(234)에서 하나 이상의 레코드는 메모리 어레이(200)에서 특정 데이터 세그먼트의 물리적 어드레스를 결정하는데 이전에 적어도 두 번 사용된 엔트리를 가지는 테이블(232)의 레코드일 수 있다.
도 2a에 도시된 바와 같이, 테이블(236)은 캐시(234)에 연결되고 2개의 서브 테이블(예를 들어, 서브 테이블(238, 240))을 포함한다. 서브 테이블(238)은 다수의 레코드를 포함할 수 있고, 서브 테이블(240)은 추가적인 다수의 레코드를 포함할 수 있다. 서브 테이블(238)에서 각 레코드는 다수의 엔트리를 포함할 수 있고, 서브 테이블(238)의 레코드에서 각 엔트리는 테이블(232)의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)를 포함할 수 있다. 서브 테이블(240)에서 각 레코드는 다수의 엔트리를 포함할 수 있고, 서브 테이블(240)의 레코드에서 각 엔트리는 캐시(234)의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)를 포함할 수 있다. 즉, 서브 테이블(238, 240)에서 각 엔트리는 VPN을 PBN으로 매핑하는 것을 포함할 수 있다. 테이블(236)에서 (예를 들어, 서브 테이블(238, 240)에서) 레코드와 엔트리는 (예를 들어, 도 4와 관련하여) 본 명세서에 더 설명된다.
도 2a에 도시되지는 않았으나, 서브 테이블(238)의 사본이 백업으로 (예를 들어, 예기치 못한 전력 손실에 대비한 안전 장치로서) 메모리 어레이(200)에 저장될 수 있다. 이와는 대조적으로, 서브 테이블(240)의 사본은 서브 테이블(240)이 캐시(234)에 레코드를 매핑하여 예기치 않는 전력 손실에 의해 영향을 받지 않을 수 있기 때문에 메모리 어레이(200)에 저장되지 않을 수 있다.
도 2a에 도시된 바와 같이, 테이블(242)은 테이블(236)에 연결된다. 테이블(242)은 다수의 레코드를 포함할 수 있다. 테이블(242)에서 각 레코드는 다수의 엔트리를 포함할 수 있고, 각 엔트리를 테이블(236)(예를 들어, 서브 테이블(238) 및/또는 서브 테이블(240))의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)를 포함할 수 있다. 즉, 테이블(242)에서 각 엔트리는 VPN을 PBN으로 매핑하는 것을 포함할 수 있다.
본 발명의 하나 이상의 실시예에서, 테이블(232, 236 및/또는 242)은 가변 사이즈를 구비할 수 있다. 즉, 테이블(232, 236 및/또는 242)의 사이즈(예를 들어, 이에 저장된 데이터의 양)가 변할 수 있다. 테이블(232, 236 및/또는 242)의 사이즈가 변할 수 있으므로, 테이블(232, 236 및/또는 242)은 상이한 유형의 플래시 메모리 디바이스에 적응될 수 있다. 즉, 테이블(232, 236, 242)을 가지는 플래시 변환 층은 상이한 유형의 플래시 메모리 디바이스에 사용될 수 있다.
추가적으로, 테이블(232)은 메모리 어레이(200)보다 더 작은 사이즈를 구비할 수 있고, 테이블(236)은 테이블(232)보다 더 작은 사이즈를 구비할 수 있고, 테이블(242)은 테이블(236)보다 더 작은 사이즈를 구비할 수 있다. 예를 들어, 메모리 어레이(200)의 사이즈에 대한 테이블(232) 사이즈의 비는 약 1 내지 1000일 수 있고, 테이블(236)은 테이블(232)보다 약 3자리수(three orders of magnitude) 더 작을 수 있고, 테이블(242)은 테이블(236)보다 약 3자리수 더 작을 수 있다. 그러나, 본 발명의 실시예는 메모리 어레이(200) 및 테이블(232, 236, 242) 사이에 특정 사이즈 관계로 제한되지 않는다.
도 2a에 도시된 실시예가 3개의 테이블(예를 들어, 테이블(232, 236, 242))을 포함하지만, 본 발명의 실시예는 특정 개수의 테이블로 제한되지 않는다. 예를 들어, 본 발명의 실시예는 요구 기반 플래시 변환 층의 일부로서 테이블(232, 236, 242)에 더하여 하나 이상의 추가적인 테이블(도 2a에 미도시)을 포함할 수 있다. 예를 들어, 제어기(230)(예를 들어, 제어기 메모리(231))는 테이블(236 및/또는 242)에 유사한 테이블(236, 242)에 더하여 하나 이상의 추가적인 테이블(도 2a에 미도시)을 더 포함할 수 있다.
도 2a에 도시된 실시예는 본 발명의 실시예를 불명확하게 하지 않도록 하기 위하여 도시되지 않은 추가적인 회로를 더 포함할 수 있다. 예를 들어, 메모리 디바이스(201)는 I/O 회로를 통해 I/O 커넥터를 통해 제공된 어드레스 신호를 래칭하는 어드레스 회로를 포함할 수 있다. 어드레스 신호는 메모리 어레이(200)에 액세스하기 위해 행 디코더와 열 디코더에 의해 수신되고 디코딩될 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 어드레스 입력 커넥터의 개수는 메모리 디바이스(201) 및/또는 메모리 어레이(200)의 밀도와 아키텍처에 따라 좌우될 수 있다는 것을 이해할 수 있을 것이다.
도 2b는 테이블(232, 236, 242) 간의 관계를 도시한 도면(202)이다. 도 2b에 도시된 바와 같이, 메모리 어레이(200)에서 특정 데이터 세그먼트(예를 들어, 특정 데이터 섹터)에 대응하는 논리적 어드레스(예를 들어, LBA)에 대응하는 테이블(242)의 레코드에서 엔트리는 호스트로부터 수신된 주어진 논리적 어드레스에 기초하여 결정될 수 있다. 테이블(242)에서 결정된 엔트리를 사용하여 테이블(236) (예를 들어, 서브 테이블(238) 및/또는 서브 테이블(240))의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)는 도 2b에 도시된 바와 같이 결정될 수 있다.
도 2b에 도시된 바와 같이, 메모리 어레이(200)에서 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 테이블(236)의 레코드에서 엔트리가 결정될 수 있다. 즉, 메모리 어레이(200)에서 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 서브 테이블(238) 및/또는 서브 테이블(240)에서 엔트리가 결정될 수 있다.
서브 테이블(238)에서 결정된 엔트리를 사용하여 테이블(232)의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)가 도 2b에 도시된 바와 같이 결정될 수 있다. 즉, 도 2b에 도시된 실시예에서, 테이블(236)의 레코드에서 결정된 엔트리는 서브 테이블(238)의 엔트리이다. 추가적으로 및/또는 대안적으로, 테이블(236)의 레코드에서 결정된 엔트리가 서브 테이블(240)의 엔트리인 실시예에서, 캐시(234)의 레코드에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, VPN)는 서브 테이블(240)에서 결정된 엔트리를 사용하여 결정될 수 있다.
도 2b에 도시된 바와 같이, 메모리 어레이(200)에서 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 테이블(232)의 레코드에서 엔트리가 결정될 수 있다. 추가적으로 및/또는 대안적으로, 캐시(234)의 레코드에 대응하는 물리적 어드레스가 결정되는 실시예에서, 메모리 어레이(200)의 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 캐시(234)의 레코드에서 엔트리가 결정될 수 있다.
테이블(232) 및/또는 캐시(234)에서 결정된 엔트리를 사용하여, 메모리 어레이(200)의 데이터 세그먼트에 대응하는 물리적 어드레스(예를 들어, PBN)와 논리적 어드레스(예를 들어, LPN)는 도 2b에 도시된 바와 같이 결정될 수 있다.
도 3은 본 발명의 하나 이상의 실시예에 따라 테이블(332)의 일부를 도시한다. 테이블(332)은 예를 들어, 도 2a와 관련하여 이전에 설명된 테이블(232)일 수 있다.
도 3에 도시된 바와 같이, 테이블(332)은 다수의 레코드(352-0, 352-1, ..., 352-D)를 포함한다. 각 레코드(352-0, 352-1, ..., 352-D)는 다수의 엔트리(354-1, 354-2, ..., 354-E)를 포함한다. 레코드(352-0, 352-1, ..., 352-D)에서 각 엔트리(354-1, 354-2, ..., 354-E)는 예를 들어, 도 3에 도시된 바와 같이 논리적 페이지 수(LPN)를 물리적 블록 수(PBN)으로 매핑을 포함할 수 있다. PBN은 메모리 어레이(예를 들어, 도 2a와 관련하여 이전에 설명된 메모리 어레이(200))의 특정 데이터 세그먼트에 대응할 수 있다. 추가적으로, 레코드(352-0, 352-1, ..., 352-D)에서 각 엔트리(354-1, 354-2, ..., 354-E)는 메모리 어레이와 연관된 논리적 페이지 수(LPN)의 선형 매핑에 기초하여 논리적으로 어드레싱될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 레코드(352-0)에서 엔트리(354-1)는 메모리 어레이에서 메모리 셀의 제1 논리 페이지에 대해 LPN과 연관된 데이터 세그먼트에 대응하는 PBN를 포함할 수 있고, 레코드(352-1)에서 엔트리(354-2)는 메모리 어레이에서 메모리 셀의 제2 논리적 페이지에 대해 LPN과 연관된 데이터 세그먼트에 대응하는 PBN을 포함할 수 있으며, 이와 같이 계속된다.
추가적으로, 각 레코드(352-0, 352-1, ..., 352-D)는 도 2a와 관련하여 이전에 설명된 캐시(234)에 레코드를 병합하도록 구성된 링크를 포함할 수 있다. 예를 들어, 링크는 레코드를 조작함이 없이 캐시(234)로 레코드의 전송을 가능하게 할 수 있는 위치 홀더(position holder)일 수 있다. 레코드가 (예를 들어, 레코드가 캐시(234)에 저장되는 동안) 캐시(234)로 전송된 후에, 링크는 예를 들어, 캐시(234) 및/또는 테이블(332)에서 논리적 및/또는 물리적 어드레스와 같은 메모리 어드레스에 대응할 수 있다.
도 4는 본 발명의 하나 이상의 실시예에 따라 서브 테이블(438)의 일부를 도시한다. 서브 테이블(438)은 예를 들어, 도 2a와 관련하여 이전에 설명된 서브 테이블(238)일 수 있다.
도 4에 도시된 바와 같이, 서브 테이블(438)은 다수의 레코드(462-0, 462-1, ..., 462-D)를 포함한다. 각 레코드(462-0, 462-1, ..., 462-D)는 다수의 엔트리(464-1, 464-2, ..., 464-E)를 포함한다. 레코드(462-0, 462-1, ..., 462-D)에서 각 엔트리(464-1, 464-2, ..., 464-E)는 예를 들어, 도 4에 도시된 바와 같이 가상 페이지 수(VPN)를 물리적 블록 수(PBN)로 매핑을 포함할 수 있다. PBN은 도 3과 관련하여 이전에 설명된 테이블(332) 내 특정 레코드에 대응할 수 있다. 추가적으로, 레코드(462-0, 462-1, ..., 462-D)에서 각 엔트리(464-1, 464-2, ..., 464-E)는 테이블(332)과 연관된 VPN의 선형 매핑에 기초하여 논리적으로 어드레싱될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 레코드(462-0)에서 엔트리(464-1)는 테이블(332)에서 레코드(352-0)에 대해 VPN과 연관된 PBN을 포함할 수 있고, 레코드(462-0)에서 엔트리(464-2)는 테이블(332)에서 레코드(352-1)에 대해 VPN과 연관된 PBN을 포함할 수 있고, 이와 같이 계속된다.
레코드(462-0, 462-1, ..., 462-D)에서 각 엔트리(464-1, 464-2, ..., 464-E)는 도 2a와 관련하여 이전에 설명된 서브 테이블(240)의 엔트리와 일대일 대응(one-to-one correspondence)을 구비할 수 있다. 예를 들어, 서브 테이블(240)에서 각 엔트리는, 서브 테이블(240)에서 각 엔트리가 도 2a와 관련하여 이전에 설명된 캐시(234)의 특정 레코드에 대응하는 VPN을 PBN으로 매핑을 포함할 수 있고 서브 테이블(240)에서 각 엔트리가 캐시(234)와 연관된 VPN의 선형 매핑에 기초하여 논리적으로 어드레싱될 수 있는 것을 제외하고는, 레코드(462-0, 462-1, ..., 462-D)에서 엔트리(464-1, 464-2, ..., 464-E)와 유사할 수 있다.
추가적으로, 서브 테이블(240)에서 엔트리는 엔트리에 의해 매핑된 테이블(332)에서 레코드가 캐시(234)에 현재 저장된 경우에만 유효할 수 있다. 예를 들어, 테이블(332)에서 레코드가 캐시(234)로부터 제거될 때에는, 캐시(234)에 레코드를 매핑하는데 사용된 서브 테이블(240)의 엔트리는 유효하지 않고, 테이블(332)에서 레코드를 매핑하는데 사용되는 서브 테이블(438)의 엔트리가 업데이트될 수 있다.
도 5는 본 발명의 하나 이상의 실시예에 따른 테이블(542)의 일부를 도시한다. 테이블(542)은 예를 들어, 도 2a와 관련하여 이전에 설명된 테이블(242)일 수 있다.
도 5에 도시된 바와 같이, 테이블(542)은 다수의 레코드(572-0, 572-1, ..., 572-D)를 포함한다. 각 레코드(572-0, 572-1, ..., 572-D)는 다수의 엔트리(574-1, 574-2, ..., 574-E)를 포함한다.
결론
본 발명은 메모리 어드레스 변환을 위한 디바이스, 시스템 및 방법을 포함한다. 하나 이상의 실시예는 메모리 어레이와 이 어레이에 연결된 제어기를 포함한다. 이 어레이는 다수의 레코드를 구비하는 제1 테이블을 포함하며, 여기서 각 레코드는 다수의 엔트리를 포함하고, 각 엔트리는 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제2 테이블을 포함하며, 여기서 각 레코드는 다수의 엔트리를 포함하고, 각 엔트리는 제1 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다. 제어기는 다수의 레코드를 구비하는 제3 테이블을 더 포함하며, 여기서 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함한다.
특정 실시예들이 본 명세서에 도시되고 설명되었으나, 이 기술 분야에 통상의 지식을 가진 자라면 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예 대신에 사용될 수 있다는 것을 이해할 수 있을 것이다. 본 명세서는 본 발명의 다수의 실시예의 적응 또는 변형을 커버하도록 의도된다. 상기 상세한 설명은 예시적인 방식으로 이루어진 것일 뿐, 발명을 제한하는 것이 아닌 것으로 이해된다. 상기 실시예의 조합 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예는 상기 상세한 설명을 검토할 때 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 본 발명의 다수의 실시예의 범위는 상기 구조와 방법이 사용되는 다른 응용을 포함한다.
상기 상세한 설명에서, 일부 특징은 본 명세서를 간결하게 하기 위하여 단일 실시예로 서로 그룹화되어 있다. 본 발명의 방법은 본 발명의 개시된 실시예가 각 청구범위에 명시적으로 언급된 것보다 더 많은 특징을 사용하여야 하는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하 청구범위에서 나타나듯이, 본 발명의 주제는 단일 개시된 실시예의 모든 특징보다 더 적다. 따라서, 이하 청구범위는 본 상세한 설명에 포함되며, 각 청구범위는 별도의 실시예로서 각자 존재한다.

Claims (32)

  1. 어드레스 변환을 위한 메모리 디바이스로서,
    메모리 어레이로서, 상기 어레이는 다수의 레코드(record)를 구비하는 제1 테이블을 포함하며, 각 레코드는 다수의 엔트리(entry)를 포함하며, 각 엔트리는 상기 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 메모리 어레이; 및
    상기 어레이에 연결된 제어기를 포함하되,
    상기 제어기는,
    다수의 레코드를 구비하는 제2 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제1 테이블의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제2 테이블; 및
    다수의 레코드를 구비하는 제3 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제2 테이블의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제3 테이블을 포함하는 메모리 디바이스.
  2. 제1항에 있어서, 상기 제어기는 상기 제1 테이블에서 상기 다수의 레코드 중 하나 이상을 저장하는 캐시를 포함하고,
    상기 제2 테이블은 추가적인 다수의 레코드를 포함하며, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인 메모리 디바이스.
  3. 제2항에 있어서, 상기 제2 테이블은 제1 서브 테이블과 제2 서브 테이블을 포함하고,
    상기 제1 서브 테이블은 상기 제1 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 엔트리를 구비하는 다수의 레코드를 포함하며,
    상기 제2 서브 테이블은 상기 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 엔트리를 구비하는 추가적인 다수의 레코드를 포함하는 것인 메모리 디바이스.
  4. 제1항에 있어서, 상기 제1, 제2 및 제3 테이블에서 각 엔트리에 포함된 물리적 어드레스는 물리적 블록 수(physical block number)인 것인 메모리 디바이스.
  5. 제1항에 있어서, 상기 제1 테이블에서 각 엔트리는 상기 메모리 어레이와 연관된 논리적 페이지 수의 선형 매핑에 기초하여 논리적으로 어드레싱되고,
    상기 제2 테이블에서 각 엔트리는 상기 제1 테이블에서 다수의 레코드의 선형 매핑에 기초하여 논리적으로 어드레싱되고,
    상기 제3 테이블에서 각 엔트리는 상기 제2 테이블에서 다수의 레코드의 선형 매핑에 기초하여 논리적으로 어드레싱되는 것인 메모리 디바이스.
  6. 제1항에 있어서, 상기 제2 테이블은 상기 제1 테이블보다 더 작은 사이즈를 구비하고,
    상기 제3 테이블은 상기 제2 테이블보다 더 작은 사이즈를 구비하는 것인 메모리 디바이스.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 제1 테이블은 가변 사이즈를 구비하는 것인 메모리 디바이스.
  8. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 제2 테이블 및 상기 제3 테이블은 가변 사이즈를 구비하는 것인 메모리 디바이스.
  9. 어드레스 변환을 위한 메모리 디바이스로서,
    메모리 어레이로서, 상기 어레이는 다수의 레코드를 구비하는 제1 테이블을 포함하며, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 메모리 어레이; 및
    상기 어레이에 연결된 제어기를 포함하되,
    상기 제어기는,
    상기 제1 테이블에서 다수의 레코드 중 하나 이상을 저장하는 캐시;
    상기 다수의 레코드를 구비하는 제2 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적인 어드레스를 포함하는 것인, 상기 제2 테이블; 및
    다수의 레코드를 구비하는 제3 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제3 테이블을 구비하는 것인 메모리 디바이스.
  10. 제9항에 있어서, 상기 제2 테이블은 추가적인 다수의 레코드를 포함하며, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제1 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인 메모리 디바이스.
  11. 제9항 또는 제10항에 있어서, 상기 캐시에서 상기 하나 이상의 레코드는 상기 어레이에서 다수의 상기 메모리 셀의 물리적 어드레스를 결정하는데 가장 최근에 사용된 엔트리를 구비하는 상기 제1 테이블의 다수의 레코드를 포함하는 것인 메모리 디바이스.
  12. 제9항 또는 제10항에 있어서, 상기 캐시에서 하나 이상의 레코드는 상기 어레이에 저장된 데이터 세그먼트의 물리적 어드레스를 결정하기 위해 이전에 적어도 2번 사용된 엔트리를 구비하는 상기 제1 테이블의 다수의 레코드를 포함하는 것인 메모리 디바이스.
  13. 제9항 또는 제10항에 있어서, 상기 제1 테이블은 데이터 블록 룩업 테이블이고, 상기 제2 테이블은 글로벌 디렉토리 룩업 테이블이고, 상기 제3 테이블은 루트 디렉토리 룩업 테이블인 것인 메모리 디바이스.
  14. 어드레스 변환을 위한 메모리 디바이스로서,
    메모리 어레이로서, 상기 어레이는 다수의 레코드를 구비하는 제1 테이블을 포함하고, 각 레코드는 다수의 엔트리를 포함하고, 각 엔트리는 상기 어레이에 저장된 데이터 세그먼트에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 메모리 어레이; 및
    상기 어레이에 연결된 제어기를 포함하되,
    상기 제어기는,
    상기 제1 테이블에서 상기 다수의 레코드 중 하나 이상을 저장하는 캐시;
    상기 제2 테이블로서, 상기 제2 테이블은,
    다수의 레코드를 구비하는 제1 서브 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제1 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제1 서브 테이블; 및
    다수의 레코드를 구비하는 제2 서브 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제2 서브 테이블을 포함하는 것인, 제2 테이블; 및
    다수의 레코드를 구비하는 제3 테이블로서, 각 레코드는 다수의 엔트리를 포함하며, 각 엔트리는 상기 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 포함하는 것인, 상기 제3 테이블을 구비하는 것인 메모리 디바이스.
  15. 제14항에 있어서, 상기 메모리 어레이는 플래시 메모리 어레이인 것인 메모리 디바이스.
  16. 제14항에 있어서, 상기 제어기는 정적 랜덤 액세스 메모리(static random access memory)(SRAM)를 포함하고,
    상기 SRAM은 상기 캐시, 상기 제2 테이블 및 상기 제3 테이블을 포함하는 것인 메모리 디바이스.
  17. 제14항 내지 제16항 중 어느 한 항에 있어서, 상기 제1 테이블에서 각 레코드는 상기 레코드를 상기 캐시에 병합하도록 구성된 링크를 포함하는 것인 메모리 디바이스.
  18. 제14항 내지 제16항 중 어느 한 항에 있어서, 상기 제1 서브 테이블에서 각 엔트리는 상기 제2 서브 테이블에서 엔트리와 일대일 대응을 구비하는 것인 메모리 디바이스.
  19. 메모리 어드레스 변환 방법으로서,
    메모리 디바이스에 저장된 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 제1 테이블의 레코드의 엔트리를 결정하는 단계;
    상기 제1 테이블에서 결정된 엔트리를 사용하여, 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제2 테이블의 상기 레코드의 엔트리를 결정하는 단계;
    상기 제2 테이블에서 결정된 엔트리를 사용하여, 제3 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제3 테이블의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 제3 테이블에서 결정된 엔트리를 사용하여, 상기 데이터 세그먼트에 대응하는 물리적 어드레스를 결정하는 단계를 포함하는 메모리 어드레스 변환 방법.
  20. 제19항에 있어서, 상기 방법은,
    상기 제2 테이블에서 상기 결정된 엔트리를 사용하여, 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계로서, 상기 캐시에서 레코드는 상기 제3 테이블에서 다수의 레코드 중 하나인 것인, 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 캐시에서의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 캐시에서 결정된 엔트리를 사용하여 상기 데이터 세그먼트에 대응하는 물리적 어드레스를 결정하는 단계를 포함하는 메모리 어드레스 변환 방법.
  21. 제19항에 있어서, 상기 제1 테이블과 상기 제2 테이블은 상기 메모리 디바이스의 제어기에 위치되고,
    상기 제3 테이블은 상기 메모리 디바이스의 메모리 어레이에 위치되는 것인 메모리 어드레스 변환 방법.
  22. 제19항에 있어서, 상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스는 논리적 블록 어드레스인 것인 메모리 어드레스 변환 방법.
  23. 제19항 내지 제22항 중 어느 한 항에 있어서, 상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제1 테이블의 레코드의 엔트리는 호스트로부터 수신된 논리적 어드레스에 적어도 부분적으로 기초하여 결정되는 것인 메모리 어드레스 변환 방법.
  24. 메모리 어드레스 변환 방법으로서,
    메모리 어레이에 저장된 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하는 제1 테이블의 레코드의 엔트리를 결정하는 단계;
    상기 제1 테이블에서 결정된 엔트리를 사용하여, 제2 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제2 테이블의 상기 레코드의 엔트리를 결정하는 단계;
    상기 제2 테이블에서 결정된 엔트리를 사용하여, 캐시에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계로서, 상기 캐시에서 상기 레코드는 제3 테이블에서 다수의 레코드 중 하나인 것인, 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 캐시의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 캐시에서 결정된 엔트리를 사용하여 상기 데이터 세그먼트에 대응하는 물리적 어드레스를 결정하는 단계를 포함하는 메모리 어드레스 변환 방법.
  25. 제24항에 있어서, 상기 방법은,
    상기 제2 테이블에서 결정된 엔트리를 사용하여, 상기 제3 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제3 테이블의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 제3 테이블에서 결정된 엔트리를 사용하여, 상기 데이터 세그먼트에 대응하는 상기 물리적 어드레스를 결정하는 단계를 포함하는 메모리 어드레스 변환 방법.
  26. 제24항 또는 제25항에 있어서, 상기 방법은 상기 제3 테이블의 다수의 레코드 중 하나를 상기 캐시에 저장하는 단계를 포함하는 것인 메모리 어드레스 변환 방법.
  27. 제24항 또는 제25항에 있어서, 상기 데이터 세그먼트는 상기 메모리 어레이에 저장된 데이터의 섹터인 것인 메모리 어드레스 변환 방법.
  28. 제24항 또는 제25항에 있어서, 상기 방법은 상기 제1 테이블의 사본과 상기 제2 테이블의 사본을 상기 메모리 어레이에 저장하는 단계를 포함하는 것인 메모리 어드레스 변환 방법.
  29. 메모리 어드레스 변환 방법으로서,
    제1 테이블의 엔트리를 사용하여, 제2 테이블의 서브 테이블의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제2 테이블의 상기 서브 테이블의 상기 레코드의 엔트리를 결정하는 단계;
    상기 제2 테이블의 상기 서브 테이블에서 결정된 엔트리를 사용하여, 캐시에서의 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 캐시의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 캐시에서 결정된 엔트리를 사용하여, 상기 데이터 세그먼트에 대응하는 물리적 어드레스를 결정하는 단계를 포함하되,
    상기 제1 테이블의 상기 엔트리는 메모리 디바이스에 저장된 데이터 세그먼트에 대응하는 논리적 어드레스에 대응하고, 상기 캐시에서의 상기 레코드는 제3 테이블에서 다수의 레코드 중 하나인 것인 메모리 어드레스 변환 방법.
  30. 제29항에 있어서, 상기 방법은,
    상기 제1 테이블의 상기 엔트리를 사용하여, 상기 제2 테이블의 추가적인 서브 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제2 테이블의 추가적인 서브 테이블의 레코드의 엔트리를 결정하는 단계;
    상기 제2 테이블의 추가적인 서브 테이블에서 결정된 엔트리를 사용하여, 상기 제3 테이블에서 레코드에 대응하는 물리적 어드레스와 논리적 어드레스를 결정하는 단계;
    상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제3 테이블의 상기 레코드의 엔트리를 결정하는 단계; 및
    상기 제3 테이블에서 결정된 엔트리를 사용하여, 상기 데이터 세그먼트에 대응하는 상기 물리적 어드레스를 결정하는 단계를 포함하는 메모리 어드레스 변환 방법.
  31. 제29항에 있어서, 상기 방법은 상기 데이터 세그먼트에 대응하는 상기 결정된 물리적 어드레스를 사용하여 상기 데이터 세그먼트에 액세스하는 단계를 포함하는 것인 메모리 어드레스 변환 방법.
  32. 제29항 내지 제31항 중 어느 한 항에 있어서, 상기 방법은,
    상기 캐시로부터 상기 캐시의 상기 레코드를 제거하는 단계;
    상기 캐시로부터 상기 레코드의 제거 시, 상기 제2 테이블의 상기 서브 테이블에 있는 상기 레코드의 상기 엔트리를 무효화하는 단계; 및
    상기 캐시로부터 상기 레코드의 제거 시, 상기 데이터 세그먼트에 대응하는 상기 논리적 어드레스에 대응하는 상기 제2 테이블의 추가적인 서브 테이블의 레코드의 엔트리를 업데이트하는 단계를 포함하는 메모리 어드레스 변환 방법.
KR1020137020633A 2011-01-06 2012-01-05 메모리 어드레스 변환 KR101497860B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/985,787 2011-01-06
US12/985,787 US8417914B2 (en) 2011-01-06 2011-01-06 Memory address translation
PCT/US2012/020312 WO2012094481A2 (en) 2011-01-06 2012-01-05 Memory address translation

Publications (2)

Publication Number Publication Date
KR20130114233A true KR20130114233A (ko) 2013-10-16
KR101497860B1 KR101497860B1 (ko) 2015-03-04

Family

ID=46456122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137020633A KR101497860B1 (ko) 2011-01-06 2012-01-05 메모리 어드레스 변환

Country Status (7)

Country Link
US (3) US8417914B2 (ko)
EP (1) EP2661692B1 (ko)
JP (2) JP5739551B2 (ko)
KR (1) KR101497860B1 (ko)
CN (1) CN103299283B (ko)
TW (1) TWI453585B (ko)
WO (1) WO2012094481A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10168952B2 (en) 2015-11-13 2019-01-01 SK Hynix Inc. Memory system and operating method thereof using segment lists

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9236133B2 (en) 2013-12-13 2016-01-12 Micron Technology, Inc. Adjusted read for partially programmed block
US20160048328A1 (en) * 2014-08-12 2016-02-18 Kabushiki Kaisha Toshiba Memory system
US10007433B2 (en) 2015-01-21 2018-06-26 Sandisk Technologies Llc Systems and methods for performing adaptive host memory buffer caching of transition layer tables
US10101918B2 (en) 2015-01-21 2018-10-16 Sandisk Technologies Llc Systems and methods for generating hint information associated with a host command
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10162526B2 (en) * 2015-10-20 2018-12-25 Micron Technology, Inc. Logical address history management in memory device
US10095413B2 (en) * 2016-01-28 2018-10-09 Toshiba Memory Corporation Memory system with address translation between a logical address and a physical address
US10437785B2 (en) * 2016-03-29 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for maximized dedupable memory
CN109074318B (zh) * 2016-05-31 2023-07-04 桑迪士克科技有限责任公司 用于执行转换层表的自适应主机存储器缓冲区高速缓存的系统和方法
KR20180121733A (ko) * 2017-04-28 2018-11-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI633437B (zh) 2017-05-26 2018-08-21 慧榮科技股份有限公司 偵測使用中邏輯頁面之資料儲存裝置與資料儲存方法
US11113205B2 (en) * 2017-07-31 2021-09-07 Micron Technology, Inc. Die addressing using a reduced size translation table entry
US10437734B2 (en) * 2017-08-31 2019-10-08 Micron Technology, Inc. Memory constrained translation table management
US10860474B2 (en) 2017-12-14 2020-12-08 Micron Technology, Inc. Multilevel addressing
KR102521746B1 (ko) 2017-12-18 2023-04-13 에스케이하이닉스 주식회사 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치
TWI727185B (zh) * 2018-07-09 2021-05-11 慧榮科技股份有限公司 鏈結串列搜索裝置及方法
TWI717953B (zh) * 2019-12-26 2021-02-01 大陸商深圳大心電子科技有限公司 儲存控制器、記憶體管理方法與儲存裝置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
CN1276358A (zh) 2000-06-29 2000-12-13 西北有色金属研究院 一种低碳超细REBa2Cu3O6+δ粉末的制备方法
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
JP3526452B2 (ja) * 2001-12-18 2004-05-17 株式会社東芝 ディスクアレイ装置及びデータバックアップ方法
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
JP2006338371A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
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
US8566511B2 (en) * 2009-07-23 2013-10-22 Stec, Inc. Solid-state storage device with multi-level addressing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10168952B2 (en) 2015-11-13 2019-01-01 SK Hynix Inc. Memory system and operating method thereof using segment lists

Also Published As

Publication number Publication date
JP5739551B2 (ja) 2015-06-24
WO2012094481A3 (en) 2012-09-20
US20140297990A1 (en) 2014-10-02
US8417914B2 (en) 2013-04-09
WO2012094481A2 (en) 2012-07-12
EP2661692A2 (en) 2013-11-13
US8898424B2 (en) 2014-11-25
TW201241626A (en) 2012-10-16
CN103299283B (zh) 2016-08-17
US20120179853A1 (en) 2012-07-12
TWI453585B (zh) 2014-09-21
EP2661692B1 (en) 2020-05-20
US20130227247A1 (en) 2013-08-29
JP2014505297A (ja) 2014-02-27
US9274973B2 (en) 2016-03-01
JP2015158941A (ja) 2015-09-03
KR101497860B1 (ko) 2015-03-04
CN103299283A (zh) 2013-09-11
EP2661692A4 (en) 2014-07-02

Similar Documents

Publication Publication Date Title
KR101497860B1 (ko) 메모리 어드레스 변환
US11232041B2 (en) Memory addressing
KR101343237B1 (ko) 메모리 블록 선택
US7890550B2 (en) Flash memory system and garbage collection method thereof
JP6109316B2 (ja) アドレスマッピング
JP5736439B2 (ja) ソリッドステート記憶装置におけるトランスレーションレイヤ
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
KR102216116B1 (ko) 메모리 모듈 및 그것의 동작 방법
US10871919B2 (en) Memory system and wear-leveling method using the same
US20140223075A1 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
KR20200076244A (ko) 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법
US11113205B2 (en) Die addressing using a reduced size translation table entry
KR20110016324A (ko) 플래시 메모리에 데이터를 기록하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200211

Year of fee payment: 6