KR20140024043A - 듀얼 플래시 변환 계층 - Google Patents

듀얼 플래시 변환 계층 Download PDF

Info

Publication number
KR20140024043A
KR20140024043A KR1020147000313A KR20147000313A KR20140024043A KR 20140024043 A KR20140024043 A KR 20140024043A KR 1020147000313 A KR1020147000313 A KR 1020147000313A KR 20147000313 A KR20147000313 A KR 20147000313A KR 20140024043 A KR20140024043 A KR 20140024043A
Authority
KR
South Korea
Prior art keywords
memory
mapping
logical addresses
processor
data unit
Prior art date
Application number
KR1020147000313A
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 KR20140024043A publication Critical patent/KR20140024043A/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)

Abstract

메모리를 동작시키는 방법은 메모리에서 실행하기 위한, 각자의 타겟 논리적 어드레스들과 연관된 메모리 액세스 커맨드들을 수신하는 단계를 포함한다. 타겟 논리적 어드레스들은 제1 데이터 유닛 사이즈의 제1 입도를 가지는 제1 매핑에 따라, 각자의 중간 논리적 어드레스들로 변환된다. 중간 논리적 어드레스들은 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 가지는 제2 매핑에 따라 메모리 내의 각자의 물리적 저장 위치들로 변환된다. 메모리 액세스 커맨드들은 각자의 물리적 저장 위치에 따라 메모리 내에서 실행된다.

Description

듀얼 플래시 변환 계층{DUAL FLASH TRANSLATION LAYER}
본 발명은 일반적으로 메모리 디바이스들에 관한 것이며, 구체적으로, 비휘발성 메모리 디바이스들 내에서 데이터를 관리하기 위한 방법들 및 시스템들에 관한 것이다.
플래시 메모리와 같은 비휘발성 메모리는 다양한 애플리케이션들에서, 다양한 타입들의 호스트들과 함께 사용될 수 있다. 플래시 메모리 내의 데이터 저장은 통상적으로, 플래시 변환 계층(FTL)으로도 지칭되는 플래시 관리 시스템에 의해 구성되고 관리된다.
본 발명의 실시예는 메모리를 동작시키는 방법을 제공한다. 방법은 메모리에서의 실행을 위한, 각자의 타겟 논리적 어드레스들과 연관된 메모리 액세스 커맨드들을 수신하는 단계를 포함한다. 타겟 논리적 어드레스들은 제1 데이터 유닛 사이즈의 제1 입도를 가지는 제1 매핑에 따라 각자의 중간 논리적 어드레스들로 변환된다. 중간 논리적 어드레스들은 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 가지는 제2 매핑에 따라 메모리 내의 각자의 물리적 저장 위치들로 변환된다. 메모리 액세스 커맨드들은 각자의 물리적 저장 위치들에 따라 메모리에서 실행된다.
일부 커맨드들에서, 제1 데이터 유닛 사이즈는 메모리 페이지를 포함한다. 다른 실시예들에서, 제2 데이터 유닛 사이즈는 메모리 블록을 포함한다. 다른 실시예들에서, 타겟 논리적 어드레스들을 중간 논리적 어드레스들로 변환하는 것 및 중간 논리적 어드레스들을 물리적 저장 위치들로 변환하는 것 모두는 단일 프로세서에서 수행된다.
일부 실시예들에서, 타겟 논리적 어드레스들을 중간 논리적 어드레스들로 변환하는 것은 제1 프로세서에서 수행되고, 중간 논리적 어드레스들을 물리적 저장 위치들로 변환하는 것은 제1 프로세스와는 별개인 제2 프로세서에서 수행된다. 일부 실시예들에서, 제2 프로세서는 메모리 제어기를 포함하고, 제1 프로세서는 호스트 프로세서를 포함한다.
일부 실시예들에서, 방법은 또한 제2 매핑의 하나 이상의 파라미터들을 수신하는 단계, 및 수신된 파라미터들에 기초하여 제1 매핑을 적응(adapting)시키는 단계를 포함한다. 다른 실시예들에서, 방법은 또한 제2 매핑에서 제1 매핑을 위한 관리 정보를 저장하기 위한 저장 공간을 할당하는 단계를 포함한다. 또 다른 실시예들에서, 방법은 또한 제2 매핑의 기능을 억제하도록 제1 매핑에 의해 제2 매핑에 명령하는 단계를 포함한다.
또한, 본 발명의 실시예에 따라, 메모리 인터페이스 및 적어도 하나의 프로세서를 포함하는 데이터 저장 장치가 제공된다. 메모리 인터페이스는 메모리와 통신하도록 구성된다. 적어도 하나의 프로세서는 메모리에서의 실행을 위한 각자의 타겟 논리적 어드레스들과 연관된 메모리 액세스 커맨드들을 수신하고, 제1 데이터 유닛 사이즈의 입도를 가지는 제1 매핑에 따라, 타겟 논리적 어드레스들을 각자의 중간 논리적 어드레스들로 변환하고, 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 가지는 제2 매핑에 따라, 중간 논리적 어드레스들을 메모리 내의 각자의 물리적 저장 위치들로 변환하고, 각자의 물리적 저장 위치들에 따라 메모리에서 메모리 액세스 커맨드들을 실행하도록 구성된다.
또한, 본 발명의 실시예에 따라, 메모리에서의 실행을 위한 메모리 액세스 커맨드들을 수신하는 단계를 포함하는, 메모리를 동작시키는 방법이 제공된다. 수신된 메모리 액세스 커맨드들은 제1 출력을 산출하기 위해 제1 데이터 유닛 사이즈의 제1 입도를 가지는 제1 메모리 관리 계층을 사용하여 프로세싱된다. 제1 출력은 제2 출력을 산출하기 위해 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 가지는 제2 메모리 관리 계층을 사용하여 프로세싱된다. 메모리 액세스 커맨드들은 제2 출력에 따라 메모리에서 실행된다.
또한, 본 발명의 실시예에 따라, 메모리 인터페이스 및 적어도 하나의 프로세서를 포함하는 데이터 저장 장치가 제공된다. 메모리 인터페이스는 메모리와 통신하도록 구성된다. 적어도 하나의 프로세서는 메모리에서의 실행을 위한 메모리 액세스 커맨드들을 수신하고, 제1 데이터 유닛 사이즈의 제1 입도를 가지는 제1 메모리 관리 계층을 사용하여 수신된 메모리 액세스 커맨드들을 프로세싱하여 제1 출력을 산출하고, 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 가지는 제2 메모리 관리 계층을 사용하여 제1 출력을 프로세싱하여 제2 출력을 산출하고, 제2 출력에 따라 메모리에서 메모리 액세스 커맨드들을 실행하도록 구성된다.
본 발명은 도면들과 함께 취해지는, 본원의 실시예들의 후속하는 상세한 설명으로부터 더욱 완전하게 이해될 것이다.
도 1은 본 발명의 실시예에 따라 듀얼-계층 플래시 변환 계층(FTL)을 사용하는 메모리 시스템을 개략적으로 예시하는 블록도이다.
도 2는 본 발명의 실시예들에 따른 메모리 관리를 위한 방법을 개략적으로 예시하는 흐름도이다.
개요
통상적인 플래시 메모리는, 각각이 다수의 메모리 페이지들을 포함하는, 다수의 메모리 블록들로 나누어진다. 데이터가 페이지 단위들로 기록되고 판독되지만, (물리적 블록들 또는 삭제 블록들으로도 지칭되는) 블록 단위들로 삭제된다. 또한, 데이터는 그 자리에서 덮어쓰기될 수 없는데, 즉, 새로운 페이지는 전체 블록이 먼저 삭제되지 않는 한 동일한 물리적 위치에서 구 페이지 위에 덮어쓰기될 수 없다. 이들 특성들의 결과로서, 플래시 메모리 내의 데이터 저장은 통상적으로, 집합적으로 플래시 관리 또는 플래시 변환 계층(FTL)으로서 지칭되는 복합 관리 기능들을 수반한다.
본 발명의 실시예들은 FTL을 2개의 계층 메모리 관리 계층들인 상위 FTL 및 하위 FTL로 분리함으로써 플래시 메모리와 같은 비휘발성 메모리 내의 데이터 저장을 관리하기 위한 개선된 시스템들 및 방법들을 제공한다. 플래시 디바이스 또는 디바이스들에서 직접 데이터를 저장하고 검색하는 하위 FTL은 특정 입도 또는 데이터 유닛 사이즈에서(예를 들어, 블록 레벨에서) 동작한다. 하위 FTL 및 호스트 사이에서 중재하는 상위 FTL은 더 미세한 입도 또는 데이터 유닛 사이즈에서(예를 들어, 페이지 레벨에서) 동작한다. 2개의 FTL들은 성능을 개선하기 위해 서로 상호작용한다.
이러한 종류의 듀얼-계층 FTL을 사용하는 경우, 로우-엔드(low-end) 플래시-기반 메모리 시스템들은 간단한(straightforward) 방식으로, 통합되어 솔리드 스테이트 드라이브(SSD) 또는 기업 저장 시스템들과 같은 하이-엔드 메모리 시스템들에서 사용될 수 있다. 예를 들어, 상위 FTL은 호스트에서 실행하는 소프트웨어에서 구현되고 따라서 전용 하이-엔드 제어기에 대한, 또는 전체 FTL을 재설계하기 위한필요성을 제거한다. 또한, 듀얼 FTL 구성은 하이-엔드 및 로우-엔드 모두인, 다양한 타입들의 메모리 시스템들에서 동일한 하위 FTL의 재사용을 인에이블시킨다.
시스템 설명
플래시 메모리 내의 데이터 저장은 통상적으로, 예를 들어, 논리적-물리적 어드레스 매핑, 블록 압축("쓰레기 수집"), 및 블록 웨어 레벨링(block wear leveling)을 포함하는 관리 기능들을 수반한다. 전체 블록을 먼저 삭제하지 않고는 데이터가 플래시에서 덮어쓰기될 수 없으므로, 특정 논리적 어드레스에서 새로운 데이터를 재기록하는 것은, 데이터가 플래시에 새로운 물리적 위치에 저장되고, 그 후 논리적-물리적 어드레스 매핑의 적절한 업데이트가 뒤따르는 결과를 초래한다.
다수의 프로그래밍 및 삭제 사이클들 이후에, 플래시 메모리 블록들은 무효한 데이터의 영역들을 전개시킨다. 블록 압축, 또는 쓰레기 수집은 단편화된 블록들로부터의 유효한 데이터를 새로운 블록들(즉, 이전에 삭제된 블록들)로 카피하는 프로세스이다. 쓰레기 수집은 또한 압축된 데이터(compacted data)가 저장되는 새로운 물리적 위치들을 설명하기 위해 논리적 어드레스에서 물리적 어드레스로 리매핑하는 것을 수반한다.
동적 웨어 레벨링은 FTL이 많은 양의 무효한 데이터를 누적시킨 블록들을 선택하고 압축하는 프로세스이다. 정적 웨어 레벨링은 메모리 블록들에 대한 웨어를 밸런싱할 목적으로, 상이한 블록들로 빈번하게 업데이트되지 않은 블록들을 압축하는 프로세스이다.
논리적-대-물리적 어드레스 매핑, 블록 압축 및 웨어 레벨링을 포함하는, 이러한 종류의 관리 기능들은 집합적으로, 플래시 변환 계층(FTL)의 플래시 관리로서 집합적으로 지칭된다. 도 1은 본 발명의 실시예에 따른 듀얼-계층 FTL을 사용하는 메모리 시스템을 개략적으로 예시하는 블록도이다. 시스템은 호스트 시스템(20)과 인터페이싱하는 메모리 제어기(10)를 포함한다. 호스트 시스템(20)은, 예를 들어, 기업 저장 시스템, 노트북 또는 랩톱 컴퓨터와 같은 컴퓨팅 디바이스, 또는 임의의 다른 적절한 호스트 시스템을 포함할 수 있다.
메모리 제어기(10)는, 메모리 액세스 커맨드들을 호스트로부터 수신하고, 이들을 프로세서(40)에 릴레이하는 호스트 인터페이스(30)를 포함한다. 본 발명의 실시예들에 따라, 프로세서(40)는 상위 FTL(50) 및 하위 FTL(60)로 분할되고, 이들 모두는 물리적 회로, 또는 프로세서에 의해 실행되는 소프트웨어를 포함할 수 있다. 일부 실시예들에서, 상위 FTL(50)의 기능들은 호스트 시스템(20)에 의해 수행된다.
프로세서(40)는, 하나 이상의 비휘발성 메모리 디바이스들에서, 본 예에서는 플래시 메모리 디바이스들(80)에서 메모리 인터페이스(70)를 통해 메모리 액세스 커맨드들을 실행한다. 통상적으로, 각각의 메모리 디바이스(80)는 하나 이상의 플래시 다이들을 포함할 수 있고, 각각의 다이는 하나 이상의 메모리 면들(memory planes)을 포함할 수 있고, 각각의 면은 많은 수의 메모리 블록들을 포함한다. 각각의 블록은 플래시 메모리 셀들의 다수의 행들을 포함한다. 메모리 셀들의 주어진 행은 하나 이상의 메모리 페이지들을 저장할 수 있다.
메모리 제어기(10)의 기능들의 일부 또는 전부는 하드웨어에서 구현될 수 있다. 대안적으로, 메모리 제어기(10)는 적절한 소프트웨어를 실행하는 마이크로프로세서, 또는 하드웨어 및 소프트웨어 엘리먼트들의 조합을 포함할 수 있다. 일부 실시예들에서, 메모리 제어기(10)는 여기서 기술된 기능들을 수행하도록 소프트웨어에서 프로그래밍된 범용 프로세서를 포함한다. 소프트웨어는, 예를 들어, 네트워크를 통해 전자적 형태로 프로세서에 다운로드될 수 있거나, 또는 그것은, 대안적으로 또는 추가적으로, 자기, 광학 또는 전자 메모리와 같은 비-일시적 유형(tangible) 매체 상에 제공되고 그리고/또는 저장될 수 있다.
도 1의 블록도는 본 발명의 실시예들의 제한에 의해서가 아니라, 오직 개념적 명확성을 위해 도시된다. 대안적인 실시예들에서, 임의의 다른 적절한 메모리 시스템 구성이 또한 사용될 수 있다. 본 발명의 원리들을 이해하기 위해 필요하지 않은 엘리먼트들은 명료함을 위해 도면에서 생략되어 있다.
도 1에 도시된 예시적인 시스템 구성에서, 메모리 디바이스들(80) 및 메모리 제어기(10)는 2개의 별도의 집적 회로(IC)들로서 구현된다. 그러나, 대안적인 실시예들에서, 메모리 디바이스들 및 메모리 제어기는 단일의 멀티-칩 패키지(MCP) 또는 시스템 온 칩(SoC) 내의 별도의 반도체 다이 상에 집적될 수 있고, 내부 버스에 의해 상호접속될 수 있다. 또한, 대안적으로, 메모리 제어기 회로의 일부 또는 전부는 메모리 디바이스 중 하나 이상이 배치된 동일한 다이 상에 상주할 수 있다. 또한, 대안적으로, 메모리 제어기(10)의 기능성의 일부 또는 모두는 소프트웨어에서 구현되고, 호스트 시스템(20) 내의 적절한 프로세서에 의해 수행될 수 있다. 일부 실시예들에서, 호스트 시스템(20)의 프로세서 및 메모리 제어기(10)는, 동일한 다이 상에, 또는 동일한 디바이스 패키지 내의 별도의 다이들 상에 제조될 수 있다.
듀얼-FTL 구성
메모리 제어기(10)는 상위 FTL(50) 및 하위 FTL(60)을 사용하는 호스트(20) 대신 플래시 메모리 디바이스(80)에 데이터를 저장한다. 통상적으로, 메모리 제어기는 데이터가 기록되거나 판독될 각자의 타겟 논리적 어드레스들을 가지는 메모리 액세스 커맨드들을 호스트(20)로부터 수신한다.
2개의 FTL들 각각은 특정 입도를 가지고, 즉, 특정 사이즈의 데이터 유닛들을 사용하여 데이터를 매핑한다. 데이터 유닛 사이즈들은 상위 FTL가 하위 FTL보다 더 미세한 입도를 가지고(즉, 더 작은 데이터 유닛 사이즈를 사용하여) 데이터를 매핑하도록 설정된다.
예시적인 실시예에서, 하위 FTL은 블록 매핑, 또는 통상적으로 106개 정도의 메모리 셀들의 더 큰 입도의 데이터 유닛 사이즈를 가지는 매핑을 사용하도록 구성된다. 이 실시예에서의 상위 FTL은 메모리 페이지 입도를 가지고 데이터를 매핑하도록, 즉 페이지 매핑하도록 구성되는 더 복잡한 시스템이다. 이러한 매핑은 통상적으로 103 - 104 정도의 메모리 셀들의 더 작은 입도의 데이터 유닛 사이즈를 포함한다. 그러나, 대안적으로, 상위 및 하위 FTL들은 임의의 다른 적절한 입도들, 즉, 데이터 유닛 사이즈들을 사용할 수 있다.
일부 실시예들에서, 2개의 FTL들을 사용하여 메모리 액세스 커맨드들을 실행하는 것은 2-스테이지 어드레스 매핑 프로세스를 수반한다: 상위 FTL(50)은 커맨드들에서 제공되는 타겟 논리적 어드레스들을 각자의 중간 논리적 어드레스들로 변환하고, 하위 FTL(60)은 중간 논리적 어드레스들을 메모리 디바이스(80) 내의 물리적 저장 위치들로 변환한다. 제1 매핑은 논리-논리(L-L) 매핑으로서 여기서 지칭되고, 제2 매핑은 논리-물리(L-P) 매핑으로서 여기서 지칭된다.
일부 실시예들에서, 하위 FTL(60)은 상위 FTL(50)에 그것의 관리 파라미터들 중 하나 이상을 보고한다. 관리 파라미터들은, 예를 들어, NAND 다이들의 수, 면들의 수, 블록 사이즈, 페이지 사이즈, 하위 FTL에 의해 사용되는 데이터 유닛 사이즈(매핑 유닛 사이즈), 하위 FTL 내의 가용 블록들의 수, 불량(비-기능) 블록들의 수, 및/또는 임의의 다른 적절한 관리 파라미터를 포함할 수 있다.
상위 FTL은 성능 및 플래시 내구성에 대한 관리를 최적화하기 위해 하위 FTL 계층으로부터 수신된 파라미터들을 이용하도록 구성된다. 예를 들어, 파라미터들은 프로그래밍 성능 최적화(예를 들어, 다이들 또는 면들의 병렬 프로그래밍)를 달성하도록 병렬로 프로그래밍될 수 있는 정보의 사이즈를 포함할 수 있다. 파라미터들은 또한 예를 들어, 갑작스러운 정전의 경우 NAND 페이지 손상을 핸들링하기 위해 상이한 페이지들 사이의 종속성에 관한 정보를 제공할 수 있다.
일부 실시예들에서, 하위 FTL(60)는 상위 FTL(50)의 메타데이터 및 관리 데이터를 저장하기 위한 (예를 들어, 메모리 디바이스(80) 내의 또는 랜덤 액세스 메모리(RAM) 내의) 메모리 공간을 할당한다. 하위 FTL은 이 정보를 저장하기 위해 전용 애플리케이션 프로그래밍 인터페이스(API) 또는 전용 파티션들 및/또는 어드레스들을 상위 FTL에 제공할 수 있다. 다른 실시예들에서, 하위 FTL 내의 이러한 전용 저장 영역들은 특정 성능 레벨, 예를 들어, 판독/기록 속도, 레이턴시, 내구성 또는 신뢰성을 제공하도록 특정될 수 있다.
일부 실시예들에서, 상위 FTL은 성능, 내구성, 신뢰성 또는 다른 성능 측정을 최적화하기 위해, 하위 FTL의 특정 기능들을 억제하도록 하위 FTL에 명령할 수 있다. 예를 들어, 상위 FTL은 하위 FTL에 의해 수행되는 정적 웨어 레벨링 프로세스를 디스에이블시킬 수 있다. 추가적으로 또는 대안적으로, 상위 FTL은 하위 FTL의 임의의 다른 기능을 억제할 수 있다. 상위 FTL은 제한된 시간 동안, 제한된 내구성에 대해(예를 들어, 특정된 개수의 프로그래밍 및 삭제 사이클 동안) 또는 영구적으로 하위 FTL의 주어진 기능을 억제할 수 있다.
본 발명의 실시예들에서, 쓰레기 수집이 많은 양의 페이지 매핑 자원들을 이용하므로 쓰레기 수집은 통상적으로 상위 FTL에서 수행된다. 웨어 레벨링 프로세스들은 통상적으로 블록 레벨에서 동작하고 따라서 통상적으로 하위 FTL에 의해 핸들링된다. 일부 실시예들에서, 상위 및 하위 FTL들은 이들 프로세스들을 서로 동기화시킨다.
도 2는 본 발명의 실시예에 따라, 메모리 관리를 위한 방법을 개략적으로 예시하는 흐름도이다. 커맨드 릴레이 단계(100)에서, 호스트(20)는 메모리 제어기(10)에 메모리 액세스 커맨드들을 제공한다. 통신 단계(110)에서, 각자의 타겟 논리적 어드레스들을 포함하는 메모리 액세스 커맨드들은 상위 플래시 변환 계층(FTL)(50)에 전달된다.
제1 매핑 단계(120)에서, 상위 FTL(50)은 타겟 논리적 어드레스들의 중간 논리적 어드레스들로의 제1 매핑(L-L 매핑)을 실행한다. 제2 매핑 단계(130)에서, 하위 FTL(60)은 중간 논리적 어드레스들의, 메모리 디바이스들(80) 내의 물리적 저장 위치들을 포함하는 물리적 어드레스들로의 제2 매핑(L-P 매핑)을 실행한다. 본 예에서, 제1 매핑은 페이지 입도에서 수행되고, 제1 매핑은 블록 입도에서 수행된다. 실행 단계(140)에서, 하위 FTL(40)은 각자의 물리적 어드레스들에서 메모리 액세스 커맨드들을 실행한다.
여기서 기술된 실시예들이 주로 플래시 관리를 다루지만, 여기서 기술된 방법들 및 시스템들은 또한 제1 스테이지가 동작들을 관리하기 위해 랜덤 액세스 메모리(RAM)와 같은 많은 양의 메모리 자원들을 가지고, 제2 스테이지는 제한된 자원들을 포함하고 물리적 매체와 더 많이 연관되는, 프로세싱 동작들의 2가지 스테이지들을 포함하는 다른 응용예들에서 사용될 수 있다.
따라서, 전술된 실시예들이 예시로서 인용되며, 본 발명이 특정하게 도시되고 위에서 기술된 것에 제한되지 않는다는 점이 이해될 것이다. 오히려, 본 발명의 범위는 전술된 다양한 특징들의 조합들 및 하위 조합들, 뿐만 아니라, 앞의 설명을 읽었을 때 당업자의 머리에 떠오를 그리고 종래 기술에 개시되지 않은 이들의 변형예들 및 수정들 모두를 포함한다. 본 특허 출원에서 참조로 포함된 문서들은 본원의 필수 부분으로서 간주될 것이지만, 이러한 포함된 문서들에서 임의의 용어들이 본 명세서에서 명시적으로 또는 묵시적으로 이루어진 정의들과 상충하는 방식으로 정의될 경우, 본 명세서 내의 정의들만이 고려되어야 한다.

Claims (20)

  1. 메모리를 동작시키는 방법으로서,
    메모리에서 실행하기 위해 각각의 타겟 논리 어드레스들과 연관된 메모리 액세스 커맨드들을 수신하는 단계;
    제1 데이터 유닛 사이즈(data unit size)의 제1 입도(granularity)를 갖는 제1 매핑에 따라, 상기 타겟 논리 어드레스들을 각각의 중간 논리 어드레스들로 변환하는 단계;
    상기 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 갖는 제2 매핑에 따라, 상기 중간 논리 어드레스들을 상기 메모리 내의 각각의 물리 저장 위치들로 변환하는 단계; 및
    상기 각각의 물리 저장 위치들에 따라 상기 메모리에서 상기 메모리 액세스 커맨드들을 실행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 데이터 유닛 사이즈는 메모리 페이지를 포함하는 방법.
  3. 제1항에 있어서,
    상기 제2 데이터 유닛 사이즈는 메모리 블록을 포함하는 방법.
  4. 제1항에 있어서,
    상기 타겟 논리 어드레스들을 상기 중간 논리 어드레스들로 변환하는 단계 및 상기 중간 논리 어드레스들을 상기 물리 저장 위치들로 변환하는 단계는 단일 프로세서에서 수행되는 방법.
  5. 제1항에 있어서,
    상기 타겟 논리 어드레스들을 상기 중간 논리 어드레스들로 변환하는 단계는 제1 프로세서에서 수행되고, 상기 중간 논리 어드레스들을 상기 물리 저장 위치들로 변환하는 단계는 상기 제1 프로세서와는 별개의 제2 프로세서에서 수행되는 방법.
  6. 제5항에 있어서,
    상기 제2 프로세서는 메모리 제어기를 포함하고, 상기 제1 프로세서는 호스트 프로세서를 포함하는 방법.
  7. 제1항에 있어서,
    상기 제2 매핑의 하나 이상의 파라미터들을 수신하는 단계, 및 상기 수신된 파라미터들에 기초하여 상기 제1 매핑을 적응(adapting)시키는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 제1 매핑에 대한 관리 정보를 저장하기 위한 저장 공간을 상기 제2 매핑에서 할당하는 단계를 포함하는 방법.
  9. 제1항에 있어서,
    상기 제2 매핑의 기능을 억제하도록 상기 제1 매핑에 의해 상기 제2 매핑에 명령하는 단계를 포함하는 방법.
  10. 데이터 저장 장치로서,
    메모리와 통신하도록 구성되는 메모리 인터페이스; 및
    상기 메모리에서 실행하기 위해 각각의 타겟 논리 어드레스들과 연관된 메모리 액세스 커맨드들을 수신하고, 제1 데이터 유닛 사이즈의 입도를 갖는 제1 매핑에 따라, 상기 타겟 논리 어드레스들을 각각의 중간 논리 어드레스들로 변환하고, 상기 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 갖는 제2 매핑에 따라, 상기 중간 논리 어드레스들을 상기 메모리 내의 각각의 물리 저장 위치들로 변환하며, 상기 각각의 물리 저장 위치들에 따라 상기 메모리에서 상기 메모리 액세스 커맨드들을 실행하도록 구성되는 적어도 하나의 프로세서
    를 포함하는 데이터 저장 장치.
  11. 제10항에 있어서,
    상기 제1 데이터 유닛 사이즈는 메모리 페이지를 포함하는 데이터 저장 장치.
  12. 제10항에 있어서,
    상기 제2 데이터 유닛 사이즈는 메모리 블록을 포함하는 데이터 저장 장치.
  13. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 타겟 논리 어드레스들을 상기 중간 논리 어드레스들로 변환하며 상기 중간 논리 어드레스들을 상기 물리 저장 위치들로 변환하도록 구성되는 단일 프로세서를 포함하는 데이터 저장 장치.
  14. 제10항에 있어서,
    상기 적어도 하나의 프로세서는 상기 타겟 논리 어드레스들을 상기 중간 논리 어드레스들로 변환하도록 구성되는 제1 프로세서, 및 상기 제1 프로세서와는 별개이며 상기 중간 논리 어드레스들을 상기 물리 저장 위치들로 변환하도록 구성되는 제2 프로세서를 포함하는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 제2 프로세서는 메모리 제어기를 포함하고, 상기 제1 프로세서는 호스트 프로세서를 포함하는 데이터 저장 장치.
  16. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 제2 매핑의 하나 이상의 파라미터들을 수신하며, 상기 수신된 파라미터들에 기초하여 상기 제1 매핑을 적응시키도록 구성되는 데이터 저장 장치.
  17. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 제1 매핑에 대한 관리 정보를 저장하기 위한 저장 공간을 상기 제2 매핑에서 할당하도록 구성되는 데이터 저장 장치.
  18. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 제2 매핑의 기능을 억제하도록 상기 제1 매핑에 의해 상기 제2 매핑에 명령하도록 구성되는 데이터 저장 장치.
  19. 메모리를 동작시키는 방법으로서,
    상기 메모리에서의 실행을 위한 메모리 액세스 커맨드들을 수신하는 단계;
    제1 출력을 생성하기 위해서, 제1 데이터 유닛 사이즈의 제1 입도를 갖는 제1 메모리 관리 계층을 이용하여 상기 수신된 메모리 액세스 커맨드들을 프로세싱하는 단계;
    제2 출력을 생성하기 위해서, 상기 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 갖는 제2 메모리 관리 계층을 이용하여 상기 제1 출력을 프로세싱하는 단계; 및
    상기 제2 출력에 따라 상기 메모리에서 상기 메모리 액세스 커맨드들을 실행하는 단계
    를 포함하는 방법.
  20. 데이터 저장 장치로서,
    메모리와 통신하도록 구성되는 메모리 인터페이스; 및
    상기 메모리에서의 실행을 위한 메모리 액세스 커맨드들을 수신하고, 제1 출력을 생성하기 위해서 제1 데이터 유닛 사이즈의 제1 입도를 갖는 제1 메모리 관리 계층을 이용하여 상기 수신된 메모리 액세스 커맨드들을 프로세싱하고, 제2 출력을 생성하기 위해서 상기 제1 데이터 유닛 사이즈보다 더 큰 제2 데이터 유닛 사이즈의 제2 입도를 갖는 제2 메모리 관리 계층을 이용하여 상기 제1 출력을 프로세싱하며, 상기 제2 출력에 따라 상기 메모리에서 상기 메모리 액세스 커맨드들을 실행하도록 구성되는 적어도 하나의 프로세서
    를 포함하는 데이터 저장 장치.
KR1020147000313A 2011-06-09 2012-06-08 듀얼 플래시 변환 계층 KR20140024043A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161494916P 2011-06-09 2011-06-09
US61/494,916 2011-06-09
US13/488,945 US20120317377A1 (en) 2011-06-09 2012-06-05 Dual flash translation layer
US13/488,945 2012-06-05
PCT/US2012/041601 WO2012170848A1 (en) 2011-06-09 2012-06-08 Dual flash translation layer

Publications (1)

Publication Number Publication Date
KR20140024043A true KR20140024043A (ko) 2014-02-27

Family

ID=47294159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147000313A KR20140024043A (ko) 2011-06-09 2012-06-08 듀얼 플래시 변환 계층

Country Status (5)

Country Link
US (1) US20120317377A1 (ko)
EP (1) EP2718823A1 (ko)
KR (1) KR20140024043A (ko)
TW (1) TW201303592A (ko)
WO (1) WO2012170848A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
WO2014138118A1 (en) * 2013-03-07 2014-09-12 Peddle Charles I High speed flash controllers
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US9400603B2 (en) 2014-12-16 2016-07-26 International Business Machines Corporation Implementing enhanced performance flash memory devices
GB2536201B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Handling address translation requests
US9811284B2 (en) 2015-12-20 2017-11-07 Apple Inc. One-pass programming in a multi-level nonvolatile memory device with improved write amplification
US9898200B2 (en) 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10372351B2 (en) * 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US10732896B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and system for reading data during control sync operations
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769062B2 (en) * 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
CN110471861B (zh) * 2019-07-10 2022-02-11 华为技术有限公司 一种闪存设备中的数据存储方法及闪存设备
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
US11836074B2 (en) * 2020-10-07 2023-12-05 Micron Technology, Inc. Multiple flash translation layers at a memory device
US11579786B2 (en) * 2021-04-23 2023-02-14 Vmware, Inc. Architecture utilizing a middle map between logical to physical address mapping to support metadata updates for dynamic block relocation
US11487456B1 (en) 2021-04-23 2022-11-01 Vmware, Inc. Updating stored content in an architecture utilizing a middle map between logical and physical block addresses
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
CN114327272B (zh) * 2021-12-28 2024-08-09 苏州大普微电子科技有限公司 一种数据处理方法、固态硬盘控制器及固态硬盘
US11797214B2 (en) * 2022-01-04 2023-10-24 Vmware, Inc. Micro-batching metadata updates to reduce transaction journal overhead during snapshot deletion
US20230335204A1 (en) * 2022-04-15 2023-10-19 Micron Technology, Inc. Techniques to retire unreliable blocks

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0175398A3 (en) * 1984-08-17 1989-08-30 Koninklijke Philips Electronics N.V. Data processing system comprising a memory access controller which is provided for combining descriptor bits of different descriptors associated with virtual addresses
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
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
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host 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
US7698698B2 (en) * 2004-09-30 2010-04-13 Smith Micro Software, Inc. Method for over-the-air firmware update of NAND flash memory based mobile devices
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
CA2597551A1 (en) * 2005-02-11 2006-08-17 M-Systems Flash Disk Pioneers Ltd. Nand flash memory system architecture
US7761674B2 (en) * 2005-12-30 2010-07-20 Intel Corporation Identifier associated with memory locations for managing memory accesses
US7685399B2 (en) * 2007-01-07 2010-03-23 International Business Machines Corporation Method, system, and computer program products for data movement within processor storage
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
KR101473344B1 (ko) * 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
KR20090026941A (ko) * 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
TWI395100B (zh) * 2009-01-13 2013-05-01 Innostor Technology Corp 應用於快閃記憶體的階級化分層處理資料的方法及相關快閃記憶體裝置
US8819385B2 (en) * 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
KR101662824B1 (ko) * 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
JP5525605B2 (ja) * 2009-11-04 2014-06-18 株式会社日立製作所 フラッシュメモリモジュール
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
EP2507710B1 (en) * 2009-11-30 2018-10-31 Hewlett-Packard Enterprise Development LP Remapping for memory wear leveling
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
US20110264880A1 (en) * 2010-04-23 2011-10-27 Tatu Ylonen Oy Ltd Object copying with re-copying concurrently written objects
US8285920B2 (en) * 2010-07-09 2012-10-09 Nokia Corporation Memory device with dynamic controllable physical logical mapping table loading
US8239619B2 (en) * 2010-07-09 2012-08-07 Macronix International Co., Ltd. Method and apparatus for high-speed byte-access in block-based flash memory
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US20120117303A1 (en) * 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
US8458514B2 (en) * 2010-12-10 2013-06-04 Microsoft Corporation Memory management to accommodate non-maskable failures
US9213562B2 (en) * 2010-12-17 2015-12-15 Oracle International Corporation Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed
US8874872B2 (en) * 2011-01-21 2014-10-28 Seagate Technology Llc Garbage collection management in memories
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8880991B2 (en) * 2011-04-21 2014-11-04 Qualcomm Innovation Center, Inc. Methods and apparatus for improved browsing performance by precompilation of high-priority JavaScripts in a webpage and delaying the removal of corresponding compiled code
US9116717B2 (en) * 2011-05-27 2015-08-25 Cylance Inc. Run-time interception of software methods
US9076528B2 (en) * 2011-05-31 2015-07-07 Micron Technology, Inc. Apparatus including memory management control circuitry and related methods for allocation of a write block cluster

Also Published As

Publication number Publication date
US20120317377A1 (en) 2012-12-13
TW201303592A (zh) 2013-01-16
WO2012170848A1 (en) 2012-12-13
EP2718823A1 (en) 2014-04-16

Similar Documents

Publication Publication Date Title
KR20140024043A (ko) 듀얼 플래시 변환 계층
EP2715510B1 (en) Method for storage devices to achieve low write amplification with low over provision
KR101388410B1 (ko) Lsb 및 msb 페이지들에의 선택적 데이터 저장
CN110928807B (zh) 用于检查存储器系统中的有效数据的设备和方法
KR20180121794A (ko) 동적 슈퍼 블록을 포함하는 메모리 장치 및 관련 방법 및 전자 시스템
US8909895B2 (en) Memory apparatus
US20140075100A1 (en) Memory system, computer system, and memory management method
CN108959119B (zh) 存储系统中垃圾收集的方法和系统
CN110781096A (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US20150234598A1 (en) Memory device and host device
KR20140025574A (ko) 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
TWI430091B (zh) Semiconductor memory device
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN112988616A (zh) 使用枢纽表从存储器读取顺序数据
TW201935223A (zh) 記憶體系統及其控制方法
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
US20220405201A1 (en) Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system
CN113986773A (zh) 基于固态硬盘的写放大优化方法、装置及计算机设备
KR101626218B1 (ko) 블록 기반의 페이지 매핑 방법
US9575883B2 (en) Control device, storage device, and storage control method
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
US20140281160A1 (en) Non-volatile semiconductor storage apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application
E801 Decision on dismissal of amendment