KR20180054432A - 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 - Google Patents

메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20180054432A
KR20180054432A KR1020170134151A KR20170134151A KR20180054432A KR 20180054432 A KR20180054432 A KR 20180054432A KR 1020170134151 A KR1020170134151 A KR 1020170134151A KR 20170134151 A KR20170134151 A KR 20170134151A KR 20180054432 A KR20180054432 A KR 20180054432A
Authority
KR
South Korea
Prior art keywords
lba
slot
pseudo
memory
slot index
Prior art date
Application number
KR1020170134151A
Other languages
English (en)
Other versions
KR102467847B1 (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 KR20180054432A publication Critical patent/KR20180054432A/ko
Application granted granted Critical
Publication of KR102467847B1 publication Critical patent/KR102467847B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시예에 따른 메모리 시스템은, 각각의 엔트리가 상이한 논리 블록 어드레스(LBA)와 연관되는 복수의 엔트리를 저장하는 테이블, 복수의 채널들과 웨이들, 각각의 메모리 장치가 상기 채널들 중 하나 및 상기 웨이들 중 하나에 접속되는 복수의 메모리 장치들, 및 호스트로부터 입력 LBA 및 데이터를 수신하고, 상기 입력 LBA에 대해 다수의 의사 랜덤 함수를 실행하여 복수의 슬롯 인덱스를 생성하고, 상기 슬롯 인덱스 중 하나의 인덱스를 선택하고, 선택된 하나의 슬롯 인덱스에 의해 식별된 상기 메모리 장치들 중 하나의 메모리 장치에 상기 데이터를 기록하며, 상기 엔트리들 중 대응하는 엔트리가 상기 선택된 하나의 슬롯 인덱스를 포함하도록 갱신하는 메모리 컨트롤러를 포함한다.

Description

메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템{METHOD OF OPERATING MEMORY DEVICE, MEMORY DEVICE USING THE SAME AND MEMORY SYSTEM INCLUDING THE DEVICE}
본 발명의 실시 예는 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 상기 장치를 포함하는 메모리 시스템에 관한 것이다.
SSD(solid-state drive)는 집적 회로 어셈블리를 메모리로서 사용하여 데이터를 지속적으로 저장하는 솔리드-스테이트 저장 장치이다. SSD 기술은 주로 전통적인 블록 입/출력(block I/O) 하드 디스크 드라이브와 호환되는 전자 장치를 사용한다. 전자 기계식 디스크(electromechanical disks)와 비교할 때 SSD는 일반적으로 물리적 충격에 더 강하며 조용히 작동하고 액세스 시간이 짧으며 대기 시간(레이턴시)이 짧다.
SSD는 캐시로서의 동적 랜덤 액세스 메모리(DRAM) 및 장기 저장을 위한 복수의 비 휘발성 메모리를 포함할 수 있다. DRAM의 상당 부분은 호스트의 논리 주소를 SSD의 메모리 내의 물리적 주소로 변환하는 데 사용되는 논리 - 물리 주소 (L2P: logical-to-physical address) 테이블에 사용된다. DRAM의 크기는 2 배의 거친 세분성(coarse granularity)의 SSD 액세스(예컨대, 8KB 호스트 페이지 대신 16KB 호스트 페이지)로 전환하면 줄일 수 있다. 그러나, 이러한 액세스 방법은 호스트 세분성과의 불일치로 인해 쓰기 증폭을 증가시킨다. DRAM의 크기는 또한 대부분의 L2P 테이블을 비 휘발성 메모리 중 하나에 저장함으로써 감소될 수 있다. 그러나, 랜덤 작업 부하(random workloads)에서는 L2P 테이블을 유지하기 위해 비 휘발성 메모리에 많은 쓰기가 필요하다. 더구나, 랜덤 작업 부하는 많은 캐시 미스(cache misses)가 발생할 수 있으므로 L2P 테이블을 비 휘발성 메모리에서 더 자주 읽어야 하므로 레이턴시(latency)가 늘어나고 처리량(throughput)이 떨어진다.
따라서, 쓰기 증폭(write amplification)의 증가가 거의 없고, 거칠게 세분화된 액세스(coarse granularity access)를 사용하지 않으면서 더 작은 DRAM이 사용될 수 있도록 하는 SSD 동작 방법에 대한 필요성이 있다.
본 발명이 이루고자 하는 기술적인 과제는 더 작은 크기의 DRAM의 사용을 가능하게 하는 메모리 시스템 및 상기 메모리 시스템의 동작 방법을 제공하는 것이다.
본 발명의 일 실시 예에 따른, 메모리 시스템은, 각각의 엔트리가 상이한 논리 블록 어드레스(LBA)와 연관되는 복수의 엔트리를 저장하는 테이블; 복수의 채널들과 웨이들; 각각의 메모리 장치가 상기 채널들 중 하나 및 상기 웨이들 중 하나에 접속되는 복수의 메모리 장치들; 및 호스트로부터 입력 LBA 및 데이터를 수신하고, 상기 입력 LBA에 대해 다수의 의사 랜덤 함수를 실행하여 복수의 슬롯 인덱스를 생성하고, 상기 슬롯 인덱스 중 하나의 인덱스를 선택하고, 선택된 하나의 슬롯 인덱스에 의해 식별된 상기 메모리 장치들 중 하나의 메모리 장치에 상기 데이터를 기록하며, 상기 엔트리들 중 대응하는 엔트리가 상기 선택된 하나의 슬롯 인덱스를 포함하도록 갱신하는 메모리 컨트롤러를 포함한다.
본 발명의 일 실시 예에 따른, 메모리 시스템에 데이터를 기록하는 방법은 메모리 컨트롤러에 의해, 호스트에 의해 기록되도록 요청된 논리 블록 어드레스(LBA)를 결정하는 단계; 상기 메모리 컨트롤러에 의해, 상기 LBA에 대해 다수의 의사 랜덤 함수를 실행하여 복수의 슬롯 인덱스를 생성하는 단계; 상기 메모리 컨트롤러에 의해, 상기 슬롯 인덱스들 중 하나를 선택하는 단계; 상기 메모리 컨트롤러에 의해, 상기 선택된 하나의 슬롯 인덱스에 의해 식별된 복수의 메모리 장치 중 하나에 상기 데이터를 기록하는 단계; 및 상기 메모리 컨트롤러에 의해 상기 선택된 슬롯 인덱스를 포함하도록 상기 LBA와 관련된 테이블의 엔트리를 업데이트하는 단계를 포함한다.
본 발명의 실시 예에 따른, 메모리 시스템에서 데이터를 리드(read)하는 방법은, 메모리 컨트롤러에 의해, 호스트가 리드하도록 요청한 페이지의 논리 블록 주소 (LBA)를 결정하는 단계; 상기 메모리 컨트롤러에 의해, 상기 결정된 LBA를 이용하여 테이블을 액세스하여 슬롯 인덱스를 검색하는 단계; 상기 메모리 컨트롤러에 의해, 상기 결정된 LBA에 대해 상기 검색된 슬롯 인덱스에 의해 식별된 복수의 의사 랜덤 함수들 중 하나를 실행하여 채널 번호, 웨이 번호, 및 플레인 번호를 생성하는 단계; 및 상기 생성된 채널 번호, 상기 생성된 웨이 번호 및 상기 생성된 플레인 번호에 의해 식별되는 메모리 장치로부터 상기 데이터를 리드하는 단계를 포함한다.
본 발명의 실시 예에 따른, 메모리 시스템은 각각의 엔트리가 상이한 논리 블록 어드레스(LBA)와 연관되는 복수의 엔트리를 저장하는 테이블; 복수의 채널들과 웨이들; 각각의 메모리 장치가 상기 채널들 중 하나 및 상기 웨이들 중 하나에 접속되는 복수의 메모리 장치들; 및 호스트로부터 LBA를 수신하고, 상기 LBA를 사용하여 상기 테이블을 액세스하여 슬롯 인덱스를 검색하고, 슬롯 인덱스에 의해 식별된 복수의 의사 랜덤 함수 중 하나를 실행하여 채널 번호 및 웨이 번호를 생성하고, 생성된 채널 번호 및 생성된 웨이 번호를 이용하여 복수의 메모리 장치 중 하나로부터 데이터를 리드하는 메모리 컨트롤러를 포함한다.
본 발명의 실시 예에 따르면, 호스트의 논리 주소를 메모리 내의 물리적 주소로 변환하는 데 사용되는 논리-물리 주소(L2P: logical-to-physical address) 테이블의 크기가 줄어든다. 따라서, 더 작은 크기의 RAM(예컨대, DRAM)이 사용될 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 메모리 장치를 나타내는 블록도이다.
도 2는 도 1에 도시된 복수의 메모리 장치를 도시하는 블록도이다.
도 3은 참고용 L2P 테이블이다.
도 4는 본 발명의 실시 예에 따른, L2P 테이블을 생성하기 위해 사용되는 컨트롤러의 블록도이다.
도 5는 L2P 테이블을 생성하는 컨트롤러를 도시한다.
도 6은 본 발명의 일 실시 예에 따른, L2P 테이블을 이용하여 메모리 장치에 데이터를 기록하는 컨트롤러를 나타낸다.
도 7은 본 발명의 일 실시 예에 따른 메모리 장치에 데이터를 기록하는 방법을 나타낸다.
도 8은 본 발명의 일 실시 예에 따른 메모리 장치로부터 데이터를 독 출하는 방법을 나타낸다.
도 9는 L2P 테이블의 다른 실시 예를 도시한다.
도 10은 본 발명 개념의 예시적인 실시 예에 따른 오픈 블록 기술(open block technique)과 함께 사용하기 위한 현재 블록의 리스트를 유지하는 컨트롤러를 도시한다.
도 11은 본 발명 개념의 예시적인 실시 예에 따라 오픈 블록 기술과 함께 사용하기 위해 현재 페이지에 대한 인덱스를 유지하는 컨트롤러를 도시한다.
도 12는 본 발명의 개념의 예시적인 실시 예에서 사용될 수 있는 블록 맵(block map)을 도시한다.
도 13은 본 발명 개념의 예시적인 실시 예에 따른 몇몇 메모리 장치에 대한 오픈 블록 기술의 사용을 도시한다.
도 14는 본 발명의 실시 예에 따라 낭비되는 슬롯을 줄이기 위해 슬롯의 수를 증가시키는 것을 도시한다.
도 15는 본 발명의 실시 예에 따른 슬롯 인덱스의 압축을 나타낸다.
도 16, 도 17, 및 도 18은 본 발명의 실시 예에 따라 의사-슬롯(pseudo-slots)을 사용하여 낭비되는 슬롯을 줄이는 방법을 도시한다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도면들 또는 다음의 상세한 설명에서의 모듈들은 상세한 설명에서 설명되거나 도면들에 도시된 구성 요소들에 추가하여 다른 모듈들과 연결될 수 있다. 모듈 또는 구성 요소 간의 각 연결은 통신에 의한 연결일 수도 있고 물리적 연결일 수도 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템은 호스트 컨트롤러(host controller, 110) 및 SSD 컨트롤러(SSD controller, 120)(예를 들어, 메모리 컨트롤러)를 포함한다.
호스트 컨트롤러(110)는 SSD 컨트롤러(120)의 리드(read, 읽기) 및 라이트(write, 쓰기 또는 기록) 동작을 제어하며, 예를 들어, 중앙 처리 장치(CPU)에 대응할 수 있다. SSD 컨트롤러(120)는 호스트 컨트롤러(110)의 제어에 따라, 라이트 동작 수행시 데이터를 저장하고, 리드 동작 수행시 저장된 데이터를 출력한다. SSD 컨트롤러는 호스트 인터페이스(host interface, 121), 프로세서(processor, 122), 리드 버퍼(read buffer, 123), 라이트 버퍼(write buffer, 124), 및 액세스 컨트롤러(access controller, 125)를 포함한다. 액세스 컨트롤러(125)는 RAM (130) (예를 들어, DRAM) 및 복수의 메모리 장치(126)와 인터페이스하도록 구성된다.
예를 들어, RAM(130)은 L2P 테이블을 저장하는 데 사용될 수 있고 캐시로서 사용될 수 있다. 메모리 장치(126)는 하나 이상의 비 휘발성 메모리 장치를 포함할 수 있다. 일 실시 예에서, 메모리 장치(126)는 전기적 소거 및 프로그램 가능 ROM(EEPROM: electrically erasable and programmable ROM), NAND 플래시 메모리, NOR 플래시 메모리, PRAM(phase-change RAM), 저항성 RAM (ReRAM), 강유전성 RAM(FRAM: ferroelectric RAM) 및 스핀 전달 토크 자기 RAM (STT-MRAM: spin-transfer torque magnetic RAM)와 같은 다양한 비 휘발성 메모리 장치로 구현될 수 있다.
일 실시 예에서, 메모리 장치(126)는 3 차원(3D) 메모리셀 어레이를 포함한다. 3D 메모리셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
본 발명의 일 실시예에서, 3 차원 메모리 셀 어레이는 수직 방향 특성을 가지며, 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치되는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 상기 적어도 하나의 선택 트랜지스터는 상기 메모리 셀과 동일한 구조를 가지며 상기 메모리 셀과 함께 모놀리식하게 형성된다.
본원에서 참조문헌으로 인용된 다음의 특허 문헌들-미국 등록 특허 7,679,133호, 8,553,466호, 8,654,587호, 8,559,235호 및 미국 공개 특허 2011/0233648호-은 3 차원 메모리 어레이에 대한 적절한 구성을 개시한다.
호스트 컨트롤러(110)는 호스트 인터페이스(121)를 통해 SSD 컨트롤러(120)와 신호를 교환하고, 프로세서(122)는 액세스 컨트롤러(125)를 제어한다. 리드 동작이 수행될 때, 리드 버퍼(123)는 복수의 메모리 장치(126)에 저장된 데이터를 수신하고 수신된 데이터를 출력한다. 라이트 동작이 수행될 때 라이트 버퍼(124)는 외부 데이터를 수신한다. 또한, 액세스 컨트롤러(125)는 라이트 동작이 수행될 때 복수의 메모리 장치들(126) 내에 데이터가 저장될 메모리에 대한 액세스 동작을 제어하고, 리드 동작이 수행될 때, 복수의 메모리 장치들(126) 내에 출력될 데이터가 저장되어 있는 메모리에 대한 액세스 동작을 제어한다. 메모리 장치들(126)의 각 메모리는 라이트 동작이 수행될 때 데이터를 저장하고, 리드 동작이 수행될 때 저장된 데이터를 출력한다.
본 발명의 일 실시 예에 따른 복수의 메모리 장치들(126) 각각은 도 2를 참조하여 설명 될 멀티-플레인(multi-plane) 구조를 갖는다. 액세스 컨트롤러 (125)는 다수의 플레인 각각을 하나의 단위 메모리로서 액세스하도록 다수의 플레이들 각각을 제어한다. 즉, 본 발명의 실시 예에 따른 메모리 시스템에서, 복수의 메모리 장치들(126) 상의 액세스 단위는 플레인이다.
도 2는 도 1에 도시된 복수의 메모리 장치의 블록도이다.
도 2에 도시된 바와 같이, 복수의 메모리 장치(126) 각각의 배열은 복수의 채널(channel) 및 복수의 웨이(way)에 의해 정의된다. 설명의 편의상, 채널 수 및 웨이 수는 4로 가정한다. 즉, 16 개의 메모리 장치(126)의 배열은 제 1 내지 제4 채널(CH1, CH2, CH3, 및 CH4) 및 제 1 내지 제 4 웨이(W1, W2, W3, W4)에 의해 정의된다. 여기서, 채널은 도 2에 도시된, 복수의 대응하는 메모리 장치들과 연결된다.
상술한 바와 같이, 복수의 메모리 장치(126)의 배열은 채널 및 웨이에 의해 정의된다. 즉, 다수의 메모리 장치(126)는 한 방향으로는 채널들과, 다른 방향으로는 웨이들의 교차점에 배치된다. 이는 복수의 메모리 장치(126) 각각의 배열이 채널 및 웨이가 만드는 좌표계(coordinate system)에 의해 정의될 수 있음을 의미한다.
복수의 메모리 장치들(126) 각각은 하나 또는 다수의 플레인들을 갖는다. 이하, 복수의 메모리 장치들(126) 중 하나(예를 들어, 메모리 장치 (210))가 일례로서 설명된다.
메모리 장치(210)는 제 1 및 제 2 플레인 (211 및 212), 즉 다중 플레인을 포함한다. 여기서, 플레인은 데이터가 저장되는 단위 메모리를 의미한다. 메모리 셀 어레이 또는 페이지 버퍼가 플레인일 수 있다. 한편, 하나의 메모리 장치는 2 개 이상의 플레인을 가질 수 있다. 이하에서는 설명의 편의상, 메모리 장치(210)가 제 1 및 제 2 플레인(211, 212), 즉 2 개의 플레인을 포함하는 것으로 가정한다. 따라서, 16 개의 메모리 장치들(126)은 32 개의 플레인들을 포함하고, 각각의 플레인에 대한 액세스 동작은 액세스 컨트롤러(125)(도 1 참조)에 의해 제어된다.
호스트(예를 들면, 호스트 컨트롤러(110)를 포함하는 호스트 장치)가 소정의 논리 블록 어드레스(LBA)에 대응하는 특정 페이지(예를 들어, 8KB 페이지, 16KB 페이지 등)을 라이트하려고 하는 경우, 컨트롤러(125)는 하나의 플레인만이 존재할 때 채널 및 웨이(쌍(pair))를 결정하거나, 다중 플레인이 이용 가능할 때 채널, 웨이 및 플레인(트리플렛(triplet))을 결정한다. 메모리 장치들 중 고유한 하나는 쌍 또는 트리플렛으로 식별될 수 있다. 또한, 컨트롤러(125)는 식별된 메모리 장치의 복수의 메모리 블록들 중 하나의 블록(예를 들어, 빈 블록) 및 블록 내의 복수의 페이지들 중 주어진 페이지를 라이트할 하나의 페이지를 결정한다. 컨트롤러(125)는 결정된 정보를 이용하여 L2P 테이블(예컨대, 도 3의 301 참조)을 생성 또는 갱신한다. L2P 테이블(301)은 LBA에 의해 저장될 수 있다. 예를 들어, L2P 테이블이 현재 LBA 1 내지 LBA 200을 나타내는 경우, 첫 번째 엔트리는 LBA 1에 해당하고, 두 번째 엔트리는 LBA 2에 해당하고, ..., 마지막 엔트리는 LBA 200에 해당하는 200 개의 엔트리가 있을 것이다. 예를 들어, 도 3의 제 1 엔트리는, LBA는 14, 결정된 쌍은 (2,4), 결정 블록은 5, 그리고 결정된 페이지는 4인 예를 도시한다. L2P 테이블(301)은 16 채널 및 4 웨이가 이용 가능하다는 가정하에 구성된다.
LBA가 별도의 칼럼으로 도 3에 도시되어 있지만, 엔트리의 순서가 그 LBA를 결정하는 데 사용될 수 있기 때문에, 실제로는, 이 칼럼은 생략된다. 도 3에서, 모든 호스트 페이지들(예컨대, LBA14, 16, 17, ..., 199에 대응하는 호스트 페이지들)은 동일한 슈퍼 페이지(superpage)에 저장된다. 본 명세서에서, 슈퍼 페이지는 모든 채널, 웨이 및 플레인을 통해 동일한 블록 번호 및 동일한 페이지 번호를 갖는 페이지들을 포함한다. 예시적인 실시 예에서, 컨트롤러(125)는 한번에 하나의 슈퍼 페이지를 라이트하도록 구성될 수 있다.
도 3에서, 채널 및 웨이를 저장하는 데는 호스트 페이지 당 6 비트가 필요하다. 도 3에 도시된 L2P(301)에서는, 단지 1 개의 플레인이 있기 때문에, 플레인 칼럼은 필요하지 않다. 그러나 다수의 플레인들이 사용될 수 있는 경우, 각 엔트리는 추가적으로 플레인들 중 하나를 식별한다. 4웨이 대신 8웨이, 1 플레인 대신 4 플레인이 있다면 호스트 페이지 당 9 비트가 필요하다. L2P(301)는 RAM(130)에 저장될 수 있다. 본 발명의 일 실시 예에서, 채널 및 웨이 칼럼은 단일 칼럼으로 대체되며, 따라서 도 3의 L2P(301)는 크기가 줄어든다. 따라서, 더 작은 크기의 RAM(130)이 사용될 수 있다.
도 4는 새로운 L2P 테이블(317)을 생성하도록 구성된 본 발명 개념의 예시적인 실시 예에 따른 컨트롤러(125)를 도시한다. 도 5는 본 발명의 실시 예에 따라 새로운 L2P 테이블 (317)을 생성하는 과정을 도시한 것이다.
컨트롤러(125)는 호스트로부터 적어도 하나의 LBA, 적어도 하나의 명령(CMD)(예를 들어, 기록 명령, 리드 명령 등) 및 데이터(DATA)(예를 들어, 기록 할 데이터)를 수신하도록 구성된다. 컨트롤러 (125)는 CPU(320) 및 메모리(310)를 포함한다. CPU(320)는 적어도 하나의 레지스터(325)를 포함할 수 있고, 메모리 (310)는 적어도 하나의 의사 랜덤 함수(pseudo-random function)(315)를 포함할 수 있다. 이 예에서, 4개의 함수(예를 들어, fct1, fct2, fct3 및 fct4) 및 각 함수에 대한 하나의 레지스터(예를 들어, reg1, reg2, reg3 및 reg4)가 있다.
함수는 CPU(320)에 의해 메모리(310)로부터 로드되는 실행 가능한 코드를 포함하고, 로드된 함수는 CPU(320)에 의해 실행되고, LBA상에서 동작하여 슬롯을 생성한다. 따라서, 4 개의 기능이 존재하면, 단일 LBA에 대해 4 개의 슬롯이 생성된다. CPU(320)는 생성된 슬롯들 중 하나를 선택하고, 선택된 하나의 슬롯에 대한 슬롯 인덱스를 결정하고, 슬롯 인덱스를 사용하여 LBA와 연관된 L2P 테이블 (317)의 엔트리를 업데이트한다. 예를 들어, CPU(320)는 엔트리의 L2P 데이터(예를 들어, L2PDATA)를 RAM(130)에 전송함으로써 L2P 테이블(317)의 엔트리를 업데이트한다. 예를 들어, L2PDATA는 슬롯 인덱스, LBA, 블록 번호, 페이지 번호 및 플레인 번호를 포함한다.
도 5는 64 페이지의 기록을 요청하는 호스트의 예를 도시하며, 제 1 페이지는 199의 LBA를 가지며, 제 2 페이지는 32의 LBA를 갖고, 마지막 페이지는 51의 LBA를 갖는다. 이 예에서, 컨트롤러(125)는 4 개의 함수들로 구성되고 16 채널, 4 웨이 및 1 플레인을 포함하는 메모리 장치들의 배열과 통신한다. 각 함수는 주어진 LBA로부터 의사-랜덤 숫자 쌍(pair)을 생성하도록 구성된다. 쌍의 첫 번째 숫자는 사용 가능한 채널들 중 하나를 식별하고 쌍의 두 번째 숫자는 사용 가능한 웨이들 중 하나를 나타낸다. 여기서 의사 랜덤이란 주어진 함수의 출력이 해당 함수에 입력된 값을 기반으로 랜덤하게 보이는 것을 의미한다. 그러나 함수는 지정된 LBA에서 작동할 때 항상 동일한 쌍의 값을 생성하도록 설계되어 있다. 예를 들어 제1 함수는 LBA에 대해 작동할 때 항상 동일한 제1 쌍을 생성하고 제2 함수는 동일한 LBA에 대해 작동할 때 항상 동일한 제2 쌍을 생성하며 제3 함수는 동일한 LBA를 사용하여 항상 동일한 제3 쌍을 생성하며, 제4 함수는 동일한 LBA를 사용하여 항상 동일한 제4 쌍을 생성한다. 또한, 제 1, 제 2, 제 3 및 제 4 쌍은 함수들이 모두 서로 상이하기 때문에 모두 구별되는 값을 갖는다.
도 5에 도시된 예에서, 허용 슬롯 목록의 제 1 엔트리를 참조하면, 제 1 함수(예를 들어, fct1)는 199의 LBA에 대해 동작하여 (15,1)(제 1 슬롯이라고도 함)의 제 1 쌍을 생성하고, 제2 함수(예: fct2)는 199의 동일한 LBA에 대해 작동하여 (5,3)(제2 슬롯이라고도 함)의 제2 쌍을 생성하고, 제3 함수(예: fct3)는 199의 동일한 LBA에 대해 동작하여 (1,3)(제3 슬롯이라고도 함)의 제3 쌍을 생성하며, 제4 함수(예: fct4)는 199의 동일한 LBA에 대해 동작하여 (9,4)(제 4 슬롯이라고도 함)의 제4 쌍을 생성한다. 예를 들어, 호스트로부터 199의 LBA를 수신하면, 컨트롤러(125)는 4 개의 함수를 사용하여 4 개의 대응하는 슬롯을 생성한다. 생성된 각 슬롯(예를 들어, 1,3과 같은 숫자 쌍에 의해 표현되는)은 레지스터(325) 중 하나에 일시적으로 저장될 수 있다.
예를 들어, (15, 1)의 제1 생성 슬롯은 제1 레지스터(reg1)에 저장될 수 있고, (5,3)의 제 2 생성 슬롯은 제 2 레지스터(reg2)에 저장될 수 있고, (1,3)의 제 3 생성 슬롯은 제 3 레지스터(reg3)에 저장될 수 있으며, (9,4)의 제4 생성 슬롯은 제 4 레지스터 (reg4)에 저장될 수 있다. 컨트롤러(125)는 4 개의 생성된 슬롯을 분석하고, 분석에 기초하여 하나를 선택한다. 분석은 충돌(collisions)을 최소화하도록 설계될 수 있다. 도 5의 제1 엔트리에서, 채널 1 및 웨이 3에 의해 표현된 제 3 슬롯이 컨트롤러(125)에 의해 선택된다.
도 6에 도시된 바와 같이, 컨트롤러(125)는 199의 LBA와 관련된 수신 페이지의 데이터를 채널 1 및 웨이 3에 따른 메모리 장치(126) 중 하나에 기록할 수 있다. 그 후, 컨트롤러(125)는 선택된 슬롯의 인덱스(예를 들어, 슬롯 인덱스)를 값으로 변환하고, 그 값을 사용하여 수신된 LBA와 관련된 엔트리의 슬롯 인덱스를 업데이트한다. 예를 들어, 제 3 슬롯이 선택되었기 때문에, 199의 수신된 LBA와 연관된 L2P 테이블(317)의 엔트리 내의 슬롯 인덱스는 3으로 설정된다. 이러한 프로세스는 각각의 수신된 LBA에 대해 반복된다.
L2P 테이블(317)이 일단 생성되면, 이후의 리드(read)를 위해 장래에 참조될 수 있다. 예를 들어, 호스트가 199의 LBA와 연관된 페이지를 읽기를 원하면, 컨트롤러는 LBA 및 리드 명령을 컨트롤러(125)에 인가할 수 있다. 컨트롤러(125)는 199의 LBA와 연관된 L2P 테이블(317)의 엔트리에 액세스하여 슬롯 인덱스 3, 블록 5 및 페이지 4를 검색한다. 슬롯 인덱스가 3이기 때문에, 컨트롤러 (125)는 199의 LBA에 대응하는 제 3 함수 (예를 들어, fct3)를 연산하여 채널 1 및 웨이 3을 재생성한다. 그 다음, 컨트롤러(125)는 재생성된 채널 1과 웨이 5에 따라 메모리 장치의 메모리에 액세스하고, 블록 5 및 페이지 4에서 요청된 페이지 데이터를 검색한다. 컨트롤러(125)는 요청된 페이지를 데이터(DATA)로서 호스트에 출력한다.
상술한 실시예에서는 4 개의 함수 각각이 채널 및 웨이를 식별하는 각각의 쌍을 생성하도록 구성되어 있지만, 메모리 장치가 다수의 플레인을 포함할 때, 함수는 입력 LBA에 기초하여, 채널, 웨이 및 플레인을 식별하는 트리플렛(triplets)을 생성하도록 구성된다. 이 경우, 제3 함수는 199의 LBA에 대해 (1,3)을 생성하기 보다는 제2 플레인을 식별하기 위해 (1,3,2)를 생성할 수 있다. 따라서, 컨트롤러(125)는 나중에 199의 LBA로부터 리드를 시도할 때, 슬롯 인덱스 3을 채널 1, 웨이 3 및 플레인 2로 변환할 것이다. 4 개의 함수를 사용하는 실시예가 상술되었으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 컨트롤러(125)는 4 개 미만의 함수(예를 들어, 2, 3 등) 또는 4 개 초과의 함수(예를 들어, 5, 6 등)을 지원하도록 구성될 수 있다.
도 7은 본 발명의 일 실시 예에 따른 복수의 메모리 장치를 포함하는 메모리 시스템에 데이터를 기록(write)하는 방법을 나타낸다.
도 7을 참조하면, 본 방법은 데이터를 기록하도록 요청된 페이지의 LBA를 결정하는 단계(S701)를 포함한다. 결정은 호스트로부터 수신된 기록 요청에 응답하여 컨트롤러(125)에 의해 수행될 수 있다. 호스트 컨트롤러(110)는 SSD 컨트롤러(120)에 기록 요청(write request)을 송신할 수 있다. 호스트 인터페이스(121)는 컨트롤러(125)에 기록 요청을 전달할 수 있다. 기록 요청은 LBA, 기록 명령 및 기록될 데이터를 포함할 수 있다.
이 방법은 LBA를 이용하여 가용 의사 랜덤 함수를 실행하여 복수의 허용 슬롯을 생성하는 단계(S702)를 포함한다. 의사 랜덤 함수는 도 4에 도시된 함수(315)에 대응할 수 있다. 허용된 슬롯은 도 5에 도시된 테이블의 주어진 행(row)의 허용된 슬롯에 대응할 수 있다. 각 허용된 슬롯은 채널, 웨이를 식별하고, 선택적으로 추가적으로 플레인을 식별할 수 있다. 라이트 버퍼(124)는 LBA 리스트에 미리 결정된 수의 기록 요청을 저장하는데 사용될 수 있다. 예를 들어, LBA 리스트가 64 개의 기록 요청을 저장하기 위한 크기이고 호스트가 64 개의 페이지에 쓰기 요청을 하면 LBA 리스트가 가득 찰 수 있다.
다음으로, 상기 방법은 허용된 슬롯들 중 하나를 선택하는 단계(S703)를 포함한다. 예를 들어, 컨트롤러(125)는 충돌을 최소화하도록 설계된 허용된 슬롯들 중 하나를 선택하는 것을 포함할 수 있다.
다음으로, 상기 방법은 선택된 하나의 슬롯으로부터 채널 및 웨이를 결정하는 단계(S704)를 포함한다. 메모리 장치들(126)이 다수의 플레인들을 포함할 때, 하나의 슬롯으로부터 플레인이 또한 식별될 수 있다.
다음으로, 상기 방법은 결정된 채널 및 웨이에 의해 식별된 메모리 장치(예를 들어, 210)에 데이터를 기록하는 단계(S705)를 포함한다. 메모리 장치(126)가 다수의 플레인을 가질 때, 채널, 웨이 및 플레인은 선택된 슬롯으로부터 결정되고, 메모리 장치는 결정된 채널, 웨이 및 플레인을 사용하여 식별된다. 기록하는 단계는 LBA를 사용하여 식별된 메모리 장치 내의 블록 및 그 블록 내의 페이지를 결정하고, 그 페이지에 데이터를 기록하는 단계를 포함할 수 있다.
상기 방법은 상기 선택된 하나의 슬롯에 기초하여 상기 LBA와 연관된 L2P 테이블의 엔트리의 슬롯 인덱스를 업데이트하는 단계(S706)를 포함할 수 있다. 예를 들어, 선택된 슬롯이 함수들(315) 중 제 1 함수와 관련되면, 슬롯 인덱스는 1이 될 것이고, 선택된 슬롯이 함수들(315) 중 제 2 함수와 연관되면, 슬롯 인덱스는 2가 될 것이다. L2P 테이블의 업데이트는 기록이 수행되기 전 또는 후에 수행될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 복수의 메모리 장치를 포함하는 메모리 시스템으로부터 데이터를 리드(read)하는 방법을 나타낸다.
도 8을 참조하면, 본 방법은 리드 요청된 페이지의 LBA를 결정하는 단계(S801)를 포함한다. 결정은 호스트로부터 수신된 리드 요청에 응답하여 컨트롤러(125)에 의해 수행될 수 있다. 호스트 컨트롤러(110)는 리드 요청을 SSD 컨트롤러(120)에 전송할 수 있다. 호스트 인터페이스(121)는 컨트롤러(125)에 리드 요청을 전달할 수 있다. 리드 요청은 LBA 및 리드 명령을 포함할 수 있다.
상기 방법은 결정된 LBA를 인덱스로 사용하여 L2P 테이블을 액세스하여 대응하는 슬롯 인덱스를 검색하는 단계(S802)를 포함한다.
상기 방법은 검색된 슬롯 인덱스에 대응하는 이용 가능한 의사 랜덤 함수들 중 하나를 선택하는 단계(S803)를 포함한다.
상기 방법은 LBA를 사용하여 선택된 의사 랜덤 함수를 실행하여 채널 및 웨이를 생성(예를 들어, 복수의 채널 중 채널을 식별하고, 복수의 웨이 중에서 웨이를 식별)하는 단계(S804)를 포함한다. 예를 들어, 선택된 함수는 입력 파라미터로서 LBA를 수신하여 채널 및 웨이를 생성하도록 구성될 수 있다. 다수의 플레인이 이용 가능한 경우, 선택된 함수는 LBA로부터 플레인을 추가로 생성한다(즉, 복수의 플레인 중 하나의 플레인을 식별한다).
상기 방법은 상기 생성된 채널 및 웨이를 이용하여 복수의 메모리 장치 중 하나를 선택하는 단계(S805)를 더 포함한다. 예를 들어, 오직 하나의 플레인이 존재하는 경우, 메모리 장치들(126) 중 하나는 생성된 채널 및 웨이를 사용하여 고유하게 식별될 수 있다. 복수의 플레인을 사용할 수 있는 경우, 실행된 함수로 생성된 플레인 또는 플레인 ID를 추가로 사용하여 메모리 장치를 식별할 수 있다.
다음으로, 상기 방법은 선택된 메모리 장치로부터 데이터를 리드하는 단계(S806)를 포함한다. 리드(read)는 LBA를 사용하여 L2P 테이블에 액세스하여 선택된 메모리 장치 내의 블록의 블록 ID 및 블록 내의 페이지의 페이지 ID를 검색한 다음, 블록 ID와 연관된 선택된 메모리 장치의 블록에서 페이지 ID와 연관된 페이지로부터 데이터를 리드함으로써 수행될 수 있다.
도 9는 도 5의 L2P 테이블(317)의 다른 실시 예를 도시한다. 도 9에서, L2P 테이블(317)은 갱신된 L2P 테이블(417)로 대체되었다. 갱신된 L2P 테이블(417)은 블록 번호 또는 페이지 번호를 포함하지 않고, 대신에 할당 유닛 번호(allocation unit number)를 포함한다. 이 예에서, 4 개의 사용 가능한 할당 유닛 번호(예: 1-4)를 사용할 수 있다. 그러나, 본 발명의 실시예는 이에 한정되지 않으며, 더 적은 개수의 할당 유닛 또는 더 많은 개수의 할당 유닛이 있을 수 있다. 이용 가능한 할당 유닛 번호의 수는 이용 가능한 함수 세트(즉, 의사 랜덤 함수)의 수를 나타낸다. 예를 들어 4 개의 할당 유닛 번호가 있으므로, 4 개의 이용 가능한 함수 세트가 있다. L2P 테이블(417) 내의 주어진 LBA에 대한 할당 유닛 번호의 값은 세트들 중 특정 하나를 식별한다. 사용 가능한 슬롯 인덱스의 수는 각 세트에서 사용 가능한 함수(function)의 수를 나타낸다.
이 예에서는 4 개의 사용 가능한 슬롯 인덱스가 있으므로 각 세트에는 총 4 개의 다른 함수가 있다. 예를 들어, 할당 유닛이 3인 14의 LBA는 제3 세트가 선택됨을 의미하고, 슬롯 인덱스가 2 를 갖는 14의 LBA는 제3 세트 중 제2 함수가 선택됨을 의미한다. 이 예에서, LBA에 대해 동작되는 제 3 세트 중 제 2 함수는 플레인 번호, 채널 번호, 웨이 번호, 블록 번호, 및 블록 번호에 의해 식별되는 블록 내의 페이지 오프셋을 생성한다. 수퍼 블록에 256 페이지가 있고 할당 유닛 번호가 4 개인 경우 할당 유닛의 크기는 64 페이지이다. 다른 실시 예에서, 슬롯 인덱스는 LBA상에서 동작될 때 플레인 번호, 채널 번호 및 웨이 번호를 리턴(return)하는 제 1 함수와 관련되며, 할당 유닛 번호는 특정 블록 및 제 2 함수와 연관되고, 제 2 함수는 LBA에서 작동할 때 특정 블록으로 페이지 오프셋을 리턴한다.
다른 실시예는 오픈 블록 기술(open block technique)을 이용한다. 이 실시 예에서, 도 10에 도시된 바와 같이, 컨트롤러(125)는 기록될 수 있는 소정 수 (예를 들어, 32)의 블록들("현재 블록들") 및 연관된 클래스 번호의 리스트를 유지한다. 현재 블록들은 연속일 필요는 없다. 예를 들어, 특정 숫자가 32 일 경우 0, 1, ..., 31과 같은 32 개의 클래스가 있다. 예를 들어 블록 1, 블록 397, 블록 399 및 블록 4094가 리스트의 일부인 경우, 블록 1은 클래스 0의 일부, 블록 397은 클래스 31의 일부, 블록 399는 클래스 19의 일부일 수 있고, 블록 4094는 클래스 27의 일부일 수 있다.
도 11에 도시된 바와 같이, 32 개의 현재 블록들 각각에 대해, 컨트롤러(125)는 데이터가 다음에 기록될 "현재 페이지"의 인덱스를 유지한다. 예를 들어, 각 블록이 64 페이지이면 인덱스는 0에서 63 사이의 값이 될 수 있다. 호스트가 특정 LBA의 페이지에 대한 쓰기를 요청하면 의사 랜덤 함수가 특정 LBA에 대해 작동하여 클래스 번호 중 하나를 산출한다. 예를 들어, 51의 LBA에 대해 동작하는 사전 정의된 함수가 19의 클래스 번호를 산출하면, 컨트롤러(125)는 클래스 번호 19와 연관된 인덱스에 의해 식별된 페이지에 데이터를 기록할 수 있음을 알고 있다. 예를 들어, 클래스 번호 19와 연관된 인덱스가 페이지 45 인 경우, 데이터는 클래스 번호 19와 연관된 블록, 즉 블록 399의 페이지 45에 기록될 것이다.
도 12에 도시된 바와 같이, 예시적인 실시 예에서, 모든 블록들을 고유 클래스 및 인-클래스 인덱스(in-class index)로 매핑하는 데 사용되는 블록 맵 테이블(517)이 도시되어 있다. 예를 들어, 블록 399는 도 12의 클래스 19 및 인-클래스 인덱스 1에 속한다. 일 실시 예에서, 블록 맵 테이블(517)은 RAM(130)에 저장되고, SSD 수명 기간 동안 변경 가능하다. 다른 실시 예에서, 블록 맵(517)은 고정되어 컨트롤러의 ROM에 저장된다.
도 13은 다수의 메모리 장치가 존재할 때 오픈 블록 기술(open block technique)이 사용되는 예를 도시한다. 이 예에서, 4 개의 NAND 메모리 장치는 2 개의 채널 및 2 개의 웨이로 사용된다. 컨트롤러(125)는 4 개의 메모리 장치들 각각에 대해 32 개의 현재 블록들(예를 들어, 4 × 32 현재 블록들)(오픈 블록들)을 유지한다. 이 예에서, 호스트는 51, 72, 90 및 117의 LBA를 갖는 페이지들에 대한 요청 기록(request writes)을 가진다.
예시적인 실시예에서, 컨트롤러(125)는 제 1 의사 랜덤 함수를 사용하여 각각의 LBA에 대한 채널 및 웨이를 선택한다. 이 예에서, 제 1 의사 랜덤 함수는 51의 LBA에 동작하여 제 1 채널(CH1) 및 제 2 웨이(W2)를 생성하고, LBA(72)에 동작하여 제 2 채널(CH2) 및 제 1 웨이(W1)를 생성하고, LBA(90)에 동작하여 제 1 채널(CH1) 및 제 1 웨이(W1)를 생성하며, LBA(117)에 동작하여 제 2 채널(CH2) 및 제 2 웨이(W2)를 생성한다. 컨트롤러(125)는 각 NAND 장치의 32 개의 현재 블록들에 대해, 현재 블록에 대한 클래스 번호들의 맵핑을 유지한다.
이 예에서, NAND # 0의 블록 0 및 블록 4094는 각각 클래스 0 및 클래스 27에 매핑되고; NAND # 1의 블록 1 및 블록 4095는 각각 클래스 14 및 클래스 1에 매핑되고; NAND # 2의 블록 0 및 블록 4095는 각각 클래스 21 및 클래스 9에 매핑되고; NAND # 3의 블록 0 및 블록 4094는 각각 클래스 11 및 클래스 18에 매핑된다.
각 클래스는 주어진 블록 내의 특정 페이지를 식별하는 특정 인덱스에 차례로 매핑된다. 그 다음, 컨트롤러(125)는 제 2 의사 랜덤 함수를 사용하여 LBA들 각각에 대해 동작하여 클래스 번호를 생성하여 현재 블록 및 현재 페이지를 결정함으로써, 대응하는 LBA와 연관된 데이터가 현재 블록의 현재 페이지에 기록될 수 있도록 한다.
상술한 기록(write) 및 리드(read) 방법 중 적어도 하나는 채널 및 웨이 또는 채널, 웨이 및 플레인이 슬롯들 중 대응하는 슬롯의 슬롯 인덱스로 대체 될 수 있기 때문에 더 작은 L2P 테이블의 사용을 가능하게 하는 슬롯들을 사용한다. 그러나, 상기 방법이 적용될 때, 일부 슬롯은 임의의 LBA에 할당되지 않을 수 있으며(즉, 일부 슬롯은 낭비됨), 따라서 초당 입/출력 동작이 감소된다. 따라서, 낭비되는 슬롯의 수를 줄이기 위해 다양한 예시적인 실시예가 아래에 제공된다.
낭비되는 슬롯들의 수는 허용된 슬롯들의 수를 증가시킴으로써 감소될 수 있다. 도 14는 허용된 슬롯들의 수가 4에서 8로 증가된 예를 도시한다. 따라서, 이 예에서, 이용 가능한 함수(315)의 수는 또한 4에서 8로 증가할 것이다.
그러나, 허용된 슬롯의 수를 증가시킴으로써, 주어진 LBA에 대해, 컨트롤러(125)는 주어진 슬롯 할당에 최종적으로 정착(settling)하기 전에 더 많은 허용된 슬롯을 스캔할 필요가 있다. 따라서, 본 발명의 일 실시 예에서, 컨트롤러(125)는 보다 빈번하게 선택되는 더 낮은 인덱스 슬롯들(more frequently selected lower-index slots)을 갖도록 설계된다.
예를 들어, 컨트롤러 (125)는 제 1 빈도frequency)(F1)로 인덱스 1의 슬롯을 선택하고, 제 2 빈도(F2)로 인덱스 2의 슬롯을 선택하고, 제 3 빈도(F3)로 인덱스 3의 슬롯을 선택하고, 제 4 빈도(F4)로 인덱스 4의 슬롯을 선택하고, 제 5 빈도(F5)로 인덱스 5의 슬롯을 선택하고, 제 6 빈도(F6)로 인덱스 6의 슬롯을 선택하고, 제 7 빈도(F7)로 인덱스 7의 슬롯을 선택하며, 제 8 빈도(F8)로 인덱스 8의 슬롯을 선택하도록 설계될 수 있다. 여기서, F1> F2> F3> F4> F5> F6> F7> F8이다. 그러나, 슬롯을 4에서 8로 증가시키면 슬롯 인덱스를 저장하는 데 필요한 비트 수가 증가한다. 따라서, 본 발명의 일 실시 예에서, 슬롯 인덱스는 압축된다.
상술한 바와 같이, 컨트롤러는 더 낮은 인덱스의 슬롯을 보다 자주 선택하도록 설계될 수 있다. 예를 들어, 1-4의 슬롯 인덱스가 사용 가능한 경우 컨트롤러는 첫 번째 두 슬롯 인덱스가 단일 비트(예컨대, 0은 슬롯 인덱스 1을 나타내고, 1은 슬롯 인덱스 2를 나타냄)와 함께 저장될 수 있으므로 슬롯 인덱스 1과 2를 더 자주 선택하도록 구성될 수 있다.
도 15는 더 낮은 인덱스들(즉, 슬롯 인덱스들을 표현하는 데 최소 비트 수를 요구하는 슬롯 인덱스들)을 보다 자주 선택하도록 구성된 컨트롤러 (125)에 의해 생성된 L2P 테이블(917)의 일례를 도시한다. L2P 테이블(917)은 일시적으로 저장된 다음, 영구히 저장되는 2 개의 보다 작은 데이터 테이블 또는 엔티티(918 및 919)로 대체될 수 있다. 예를 들어, 제 1 데이터 엔티티(918)는 L2P 테이블(917)의 연속적인 특정 개수(예를 들어, 50)의 LBA에 대한 블록 번호 및 페이지 번호의 연속적인 쌍을 저장하고, 제 2 데이터 엔티티(919)는 L2P 테이블(917)의 슬롯 인덱스의 압축된 버전이다. 예를 들어, 처음 30 개의 LBA는 슬롯 인덱스 1을 가지므로, 30개의 1을 모두 저장하기보다는 1을 나타내는 단일 비트(예를 들어, 0)가 1이 반복되는 빈도를 나타내는 값(예를 들어, 30)과 함께 저장될 수 있고, 다음 12 개의 LBA는 슬롯 인덱스 2를 가지므로, 12개의 2를 저장하기 보다는, 2를 나타내는 단일 비트(예: 1)가 2가 반복되는 빈도를 나타내는 값(예: 12)과 함께 저장될 수 있다. 상술한 것 이외의 압축 기술이 대안적인 실시 예에서 사용될 수 있다.
다수의(예를 들면, 64 개의) 페이지가 각각의 기록 간격(writing interval) 동안 라이트되면, 낭비되는 슬롯이 적거나 전혀 없어야 한다. 따라서, 본 발명의 개념의 예시적인 실시예에서, 컨트롤러(125)는 소정 수의 페이지 기록을 수신할 때까지 기록을 지연시킨다. 예를 들어, 이 번호가 64이고 시간 1에 4 페이지 쓰기 요청을 수신하면, 컨트롤러(125)는 4 페이지 쓰기를 즉시 처리하기보다는, 다른 60 페이지 쓰기를 수신할 때까지 대기한다. 예를 들어, 컨트롤러(125)가 시간 2에서 60 페이지의 기록을 수신하면, 그 다음, 상술한 기록 방법을 사용하여 64 페이지 기록을 모두 함께 처리할 수 있다.
예를 들어, 64 페이지 기록의 각각의 LBA에 대해, 컨트롤러(125)는 이용 가능한 함수(315)을 실행하여 슬롯 인덱스를 생성하고, 대응하는 데이터를 기록하고, 생성된 슬롯 인덱스로 L2P 테이블을 갱신할 것이다. 그러나 호스트 페이지를 다음 쓰기로 지연시키면 호스트 "flush" 명령에 대한 응답이 지연될 수 있다.
낭비된 슬롯을 감소시키는 데 사용될 수 있는 본 발명의 실시 예에 따른 또 다른 방법은 의사-슬롯(pseudo-slots)의 사용을 포함한다. 도 16은 이 방법의 제 1 단계를 도시한다. 컨트롤러(125)는 이용 가능한 메모리 장치의 수보다 큰 수의 의사-슬롯(pseudo-slots)을 이용한다. 설명을 용이하게 하기 위해, 16 개의 채널, 4 개의 웨이 및 1 개의 플레인이 존재하여, 이용 가능한 메모리 장치의 수는 64이고 의사-슬롯의 수는 80 개라고 가정한다. 그러나, 의사-슬롯의 수는 이에 한정되지 않고 메모리 장치의 수보다 많으면 된다.
이 실시 예에서, 도 5에 도시된 함수들(315)은 대응하는 LBA에 따라 의사-슬롯들 중 하나를 나타내는 값을 생성하도록 구성된다. 예를 들어, 도 5에서 허용된 의사-슬롯의 리스트의 제 1 열은, 함수들(315)의 제 1 함수가 199의 LBA에 동작하여 4의 의사-슬롯을 생성하고, 함수들(315)의 제 2 함수가 199의 LBA에 동작하여 14의 의사-슬롯을 생성하고, 함수들(315)의 제 3 함수는 199의 LBA에 동작하여 69의 의사-슬롯을 생성함을 보여준다. 이것은 LBA 리스트에 있는 모든 LBA에 대해 반복된다. 그 다음, 컨트롤러(125)는 리스트 내의 각각의 LBA에 대해 허용된 의사-슬롯들 중 하나를 선택한다. 선택은 충돌을 방지하기 위해 수행될 수 있다. 예를 들어, 동일한 의사-슬롯은 LBA 리스트에서 두 개의 다른 LBA에 할당되지 않는다. 예를 들어, 도 16에 도시된 바와 같이, 컨트롤러(125)는 LBA(14)에 대한 의사-슬롯 1, LBA (51)에 대한 의사-슬롯 3 및 LBA (199)에 대한 의사-슬롯 4를 선택한다. 이 예에서 LBA 리스트에는 사용 가능한 메모리 장치 수(64)와 동일한 수의 LBA가 포함되어 있다. LBA보다 많은 의사-슬롯이 있기 때문에, 일부 의사-슬롯은 어떠한 LBA에 할당되지 않는다(즉, 일부 의사-슬롯은 비어 있음). 예를 들어, 도 16에서, 의사-슬롯 2, 8 및 78은 비어있다.
다음으로, 도 17에 도시된 바와 같이, 순서대로, LBA에 할당된 각각의 의사-슬롯에 대해, LBA와 관련된 데이터는 이용 가능한 메모리 장치 중 다음 메모리 장치에 기록된다. 의사-슬롯 1은 LBA 14에 할당되고, 채널 1 및 웨이 1에 위치한 제 1 메모리는 아직 사용되지 않았기 때문에, LBA 14와 관련된 데이터는 제 1 메모리 장치에 기록된다. 의사-슬롯 2는 할당되지 않았으므로 메모리 장치에 할당되지 않는다. 의사-슬롯 3은 LBA 51에 할당되고, 채널 1 및 웨이 2에 위치한 제 2 메모리 장치는 아직 사용되지 않았으므로, LBA(51)는 채널 1 및 웨이 2에 위치한 제 2 메모리 장치에 할당된다.
도 18은 상술한 의사-슬롯들을 사용하여 메모리 장치들에 데이터를 라이트하고 리드하는데 사용될 수 있는 테이블들의 생성을 도시한다. 힌트 테이블(319)은 소정의 슈퍼 페이지와 관련된 현재 처리된 LBA 리스트에 기초하여 어느 의사-슬롯이 할당되었는지를 나타내도록 생성될 수 있다. 예를 들어, 도 18에 도시된 바와 같이, 힌트 테이블(319)의 각 행(row)은 상이한 수퍼 페이지와 연관되고, 의사-슬롯들 중 어느 것이 할당되는지를 나타내는 멀티 비트 패턴('사용된 의사-슬롯'이라고 표기됨)을 포함한다.
예를 들어, 블록 5 및 페이지 4와 관련된 힌트 테이블(319)의 행(row)에 있는 다중 비트 패턴의 제1 비트는 의사-슬롯 1이 LBA 14에 할당되었기 때문에 설정(즉, 1로 설정)되고, 의사-슬롯 2는 어떠한 LBA에도 할당되지 않았기 때문에 비트 패턴의 제2비트는 클리어(즉, 0)되고, 의사-슬롯 3은 LBA 51에 할당되었기 때문에 비트 패턴의 제3 비트는 설정(즉, 1로 설정)된다.
LBA 리스트의 LBA와 관련된 데이터는 힌트 테이블(319)을 참조함으로써, 라이트될 수 있다. 할당된 의사-슬롯 1에 대응하는 LBA 14와 관련된 데이터는 다중 비트 패턴의 비트 1이 설정되고 선행하는 제로(0) 비트가 없기 때문에 제 1 메모리 장치에 기록된다. 다음 의사-슬롯 3에 대응하는 LBA 51과 관련된 데이터는, 비트 3이 설정되고 선행 비트들 중 하나가 0(즉, 3-1 = 2)이기 때문에 제 2 메모리 장치에 기록된다. 의사-슬롯 9에 대응하는 LBA 16과 관련된 데이터는 비트 9가 설정되고 선행 비트들 중 2 개가 0(즉, 9-2 = 7)이기 때문에, 제 7 메모리 장치에 기록된다.
L2P 테이블(318)의 각 엔트리는 허용된 의사-슬롯들 중 주어진 하나가 LBA리스트의 각각의 LBA에 대해 선택될 때 갱신될 수 있다. LBA 199에 대해 의사-슬롯 4가 선택되는 경우, 이는 제 1 함수에 의해 생성되었기 때문에, LBA 199와 연관된 L2P 테이블(318)의 엔트리의 슬롯 인덱스는 1로 설정되고, LBA 32에 대해 의사-슬롯 80이 선택되는 경우, 이는 제 3 함수에 의해 생성되었기 때문에, LBA 32와 관련된 L2P 테이블(318)의 엔트리의 슬롯 인덱스는 3으로 설정된다.
L2P 테이블(318)은 데이터가 LBA들 중 주어진 하나로부터 리드될 필요가 있을 때 참조될 수 있다. 예를 들어, 컨트롤러(125)는 LBA가 16인 페이지에 대한 리드 요청을 수신하면, L2P 테이블 (318)을 참조하여 슬롯 인덱스 2, 블록 ID 5 및 페이지 ID 4를 검색할 수 있다. 다음으로, 컨트롤러(125)는 16의 LBA를 사용하여 제 2 함수를 동작시켜 의사-슬롯 9를 리턴할 수 있다. 그 다음, 컨트롤러는 블록 ID 5 및 페이지 ID 4와 연관된 힌트 테이블(319)의 행을 참조하여 대응하는 비트 패턴을 검색하고 그 비트를 분석하여 데이터가 제 7 메모리 장치에 기록되었는지를 결정할 수 있다. 예를 들어, 상술한 바와 같이, 9 번째 비트가 설정되고 선행 비트들 중 2 개가 클리어되었기 때문에, 의사-슬롯의 값으로부터 선행 클리어 비트의 수(즉, 2)를 뺀 값(즉, 9-2)인 7(즉, 제 7 메모리 장치)을 산출한다. 결정된 메모리 장치에 액세스하는데 사용되는 특정 채널 및 웨이는 룩업 테이블을 사용하여 결정될 수 있다.
상술한 방법은 하나 이상의 컴퓨터 판독 가능 매체(즉, 하드 디스크, 자기 플로피 디스크, RAM, ROM, CD ROM, 플래시 메모리 등과 같은 프로그램 저장 장치) 상에 명백하게 구현될 수 있다. 프로세서, 메모리 및 입/출력 인터페이스를 갖는 범용 디지털 컴퓨터와 같은 적절한 아키텍처를 포함하는 임의의 장치 또는 기계에 의해 실행될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110: 호스트 컨트롤러(host controller)
120: SSD 컨트롤러
121: 호스트 인터페이스(host interface)
122: 프로세서(processor)
123: 리드 버퍼(read buffer)
124: 라이트 버퍼(write buffer)
125: 액세스 컨트롤러(access controller)
126: 복수의 메모리 장치
130: RAM
210: 메모리 장치
211, 212: 플레인

Claims (10)

  1. 각각의 엔트리가 상이한 논리 블록 어드레스(LBA)와 연관되는 복수의 엔트리들을 저장하는 테이블;
    복수의 채널들과 웨이들;
    각각의 메모리 장치가 상기 채널들 중 하나 및 상기 웨이들 중 하나에 접속되는 복수의 메모리 장치들; 및
    호스트로부터 입력 LBA 및 데이터를 수신하고, 상기 입력 LBA에 대해 다수의 의사 랜덤 함수를 실행하여 복수의 슬롯 인덱스를 생성하고, 상기 슬롯 인덱스 중 하나의 인덱스를 선택하고, 선택된 하나의 슬롯 인덱스에 의해 식별된 상기 메모리 장치들 중 하나의 메모리 장치에 상기 데이터를 기록하며, 상기 엔트리들 중 대응하는 엔트리가 상기 선택된 하나의 슬롯 인덱스를 포함하도록 갱신하는 메모리 컨트롤러를 포함하는 메모리 시스템.
  2. 제1항에 있어서, 각각의 슬롯 인덱스는
    상기 채널들 중 하나를 식별하는 채널 번호 및 상기 웨이들 중 하나를 식별하는 웨이 번호로 매핑되는, 메모리 시스템..
  3. 제 2 항에 있어서, 각각의 슬롯 인덱스는
    복수의 플레인들 중 하나를 식별하는 특정 플레인 번호에 추가로 매핑되는 메모리 시스템.
  4. 제 2 항에 있어서, 상기 각각의 의사 랜덤 함수는
    상기 슬롯 인덱스 중 구별되는 하나를 생성하는, 메모리 시스템.
  5. 제 4 항에 있어서, 각각의 의사 랜덤 함수는
    동일한 LBA에 대해 동작할 때마다 동일한 채널 번호 및 동일한 웨이 번호를 생성하는 메모리 시스템.
  6. 제 1 항에 있어서, 상기 메모리 컨트롤러는
    상기 호스트로부터 리드 LBA를 수신하고, 상기 리드 LBA와 연관된 상기 테이블의 엔트리에 액세스하여 상기 슬롯 인덱스들 중 하나, 블록 번호 및 페이지 번호를 검색하고, 상기 검색된 하나의 슬롯 인덱스에 의해 식별된 의사 랜덤 함수들 중 하나를 동작시켜 채널 및 웨이를 생성하고, 상기 생성된 채널, 상기 생성된 웨이, 상기 검색된 블록 번호 및 상기 검색된 페이지 번호에 의해 식별된 상기 메모리 장치들 중 하나로부터 데이터를 리드(read)하는 메모리 시스템.
  7. 메모리 시스템에 데이터를 기록하는 방법에 있어서,
    메모리 컨트롤러에 의해, 호스트에 의해 기록되도록 요청된 논리 블록 어드레스(LBA)를 결정하는 단계;
    상기 메모리 컨트롤러에 의해, 상기 LBA에 대해 다수의 의사 랜덤 함수를 실행하여 복수의 슬롯 인덱스를 생성하는 단계;
    상기 메모리 컨트롤러에 의해, 상기 슬롯 인덱스들 중 하나를 선택하는 단계;
    상기 메모리 컨트롤러에 의해, 상기 선택된 하나의 슬롯 인덱스에 의해 식별된 복수의 메모리 장치 중 하나에 상기 데이터를 기록하는 단계; 및
    상기 메모리 컨트롤러에 의해 상기 선택된 슬롯 인덱스를 포함하도록 상기 LBA와 관련된 테이블의 엔트리를 업데이트하는 단계를 포함하는 방법.
  8. 제 7 항에 있어서, 상기 기록하는 단계는,
    상기 선택된 하나의 슬롯 인덱스가 매핑되는 의사-슬롯 인덱스를 결정하는 단계;
    상기 결정된 의사-슬롯 인덱스가 매핑되는 상기 메모리 장치들 중 하나를 결정하기 위해 데이터 구조를 참조하는 단계; 및
    상기 결정된 하나의 메모리 장치에 상기 데이터를 기록하는 단계를 포함하고,
    상기 결정된 의사-슬롯 인덱스는 상기 의사-슬롯 인덱스의 수(number) 중의 하나이고, 상기 상기 의사-슬롯 인덱스의 수는 상기 메모리 장치들의 수보다 큰 방법.
  9. 각각의 엔트리가 상이한 논리 블록 어드레스(LBA)와 연관되는 복수의 엔트리를 저장하는 테이블;
    복수의 채널들과 웨이들;
    각각의 메모리 장치가 상기 채널들 중 하나 및 상기 웨이들 중 하나에 접속되는 복수의 메모리 장치들; 및
    호스트로부터 LBA를 수신하고, 상기 LBA를 사용하여 상기 테이블을 액세스하여 슬롯 인덱스를 검색하고, 슬롯 인덱스에 의해 식별된 복수의 의사 랜덤 함수 중 하나를 실행하여 채널 번호 및 웨이 번호를 생성하고, 생성된 채널 번호 및 생성된 웨이 번호를 이용하여 복수의 메모리 장치 중 하나로부터 데이터를 리드하는 메모리 컨트롤러를 포함하는 메모리 시스템.
  10. 제 9 항에 있어서, 상기 식별된 의사 랜덤 함수는
    플레인 번호를 더 리턴하고, 상기 리드는 상기 리턴된 플레인 번호를 더 사용하여 상기 데이터를 리드하는 메모리 시스템.
KR1020170134151A 2016-11-15 2017-10-16 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 KR102467847B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/352,037 2016-11-15
US15/352,037 US10198203B2 (en) 2016-11-15 2016-11-15 Method of operating memory device using pseudo-random functions, memory device using the same and memory system including the device

Publications (2)

Publication Number Publication Date
KR20180054432A true KR20180054432A (ko) 2018-05-24
KR102467847B1 KR102467847B1 (ko) 2022-11-16

Family

ID=62108237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170134151A KR102467847B1 (ko) 2016-11-15 2017-10-16 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템

Country Status (2)

Country Link
US (1) US10198203B2 (ko)
KR (1) KR102467847B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11500563B2 (en) 2020-09-07 2022-11-15 SK Hynix Inc. Memory system and operating method for testing target firmware by processing a plurality of test commands
US11556466B2 (en) 2018-05-31 2023-01-17 Micron Technology, Inc. Logical-to-physical data structures

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102611566B1 (ko) * 2018-07-06 2023-12-07 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법
KR102593757B1 (ko) * 2018-09-10 2023-10-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11669272B2 (en) * 2019-05-31 2023-06-06 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
CN112256671B (zh) * 2020-10-21 2023-11-24 博泰车联网科技(上海)股份有限公司 数据存储方法及相关设备
CN113625973B (zh) * 2021-08-30 2024-01-16 得一微电子股份有限公司 数据写入方法、装置、电子设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238899A1 (en) * 2008-12-27 2011-09-29 Kabushiki Kaisha Toshiba Memory system, method of controlling memory system, and information processing apparatus
US20160054930A1 (en) * 2014-08-19 2016-02-25 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7807314A (nl) * 1978-07-06 1980-01-08 Philips Nv Inrichting voor het vergroten van de lengte van een logisch computeradres.
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
JP5493951B2 (ja) * 2009-04-17 2014-05-14 株式会社リコー 情報処理装置、正当性検証方法及びプログラム
US8938479B1 (en) * 2010-04-01 2015-01-20 Symantec Corporation Systems and methods for dynamically selecting a logical location for an index
US8965901B2 (en) * 2011-03-01 2015-02-24 Mongodb, Inc. System and method for determining exact location results using hash encoding of multi-dimensioned data
US9361220B2 (en) * 2013-09-17 2016-06-07 Sandisk Technologies Inc. Apparatus and method of using dummy data while storing data at a multi-bit storage element
US9984768B2 (en) * 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238899A1 (en) * 2008-12-27 2011-09-29 Kabushiki Kaisha Toshiba Memory system, method of controlling memory system, and information processing apparatus
US20160054930A1 (en) * 2014-08-19 2016-02-25 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556466B2 (en) 2018-05-31 2023-01-17 Micron Technology, Inc. Logical-to-physical data structures
US11500563B2 (en) 2020-09-07 2022-11-15 SK Hynix Inc. Memory system and operating method for testing target firmware by processing a plurality of test commands

Also Published As

Publication number Publication date
US20180136865A1 (en) 2018-05-17
US10198203B2 (en) 2019-02-05
KR102467847B1 (ko) 2022-11-16

Similar Documents

Publication Publication Date Title
KR102467847B1 (ko) 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템
KR102271643B1 (ko) 하이브리드 메모리의 데이터 재배치
US10459636B2 (en) System and method for managing data in non-volatile memory systems having multiple mapping layers
JP5736439B2 (ja) ソリッドステート記憶装置におけるトランスレーションレイヤ
US10275361B2 (en) Managing multiple namespaces in a non-volatile memory (NVM)
CN109101434B (zh) 存储装置、存储系统及所述存储装置的操作方法
US9990277B2 (en) System and method for efficient address translation of flash memory device
US9436615B2 (en) Optimistic data read
KR20200033985A (ko) 논리적/물리적 매핑
KR102240261B1 (ko) 메모리 관리
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
JP2013544414A (ja) トランザクションログの復元
US11334493B2 (en) Memory system and operating method thereof
CN111796759B (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN114203237A (zh) 分区命名空间设备中的读取处置
JP6139711B2 (ja) 情報処理装置
US20190227742A1 (en) Task tail abort for queued storage tasks
KR20210003946A (ko) 논리적-물리적 데이터 구조
KR20210028729A (ko) 논리적 대 물리적 테이블 프래그먼트들
JP2021522567A (ja) カウンタ更新動作のための装置及び方法
CN111666223B (zh) 控制器、包括控制器的存储器系统和操作该系统的方法
US11126624B2 (en) Trie search engine
KR101146082B1 (ko) 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법
CN117015766A (zh) 在分区命名空间ssd中的快速垃圾收集
TWI752784B (zh) 非對稱型平面管理方法以及資料儲存裝置及其控制器

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right