KR20220037638A - 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20220037638A
KR20220037638A KR1020200120336A KR20200120336A KR20220037638A KR 20220037638 A KR20220037638 A KR 20220037638A KR 1020200120336 A KR1020200120336 A KR 1020200120336A KR 20200120336 A KR20200120336 A KR 20200120336A KR 20220037638 A KR20220037638 A KR 20220037638A
Authority
KR
South Korea
Prior art keywords
descriptors
queue
descriptor
stored
sub
Prior art date
Application number
KR1020200120336A
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 에스케이하이닉스 주식회사
Priority to KR1020200120336A priority Critical patent/KR20220037638A/ko
Priority to US17/205,398 priority patent/US11954041B2/en
Priority to CN202110415706.4A priority patent/CN114201108B/zh
Publication of KR20220037638A publication Critical patent/KR20220037638A/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

본 기술은 논리 어드레스들과, 상기 논리 어드레스들에 각각 맵핑된 물리 어드레스들을 포함하는 디스크립터들을 생성하도록 구성된 디스크립터 관리부(descriptor manager); 상기 디스크립터들을 선형 구조(linear structure) 및 이진 트리 구조(binary tree structure)로 저장하도록 구성된 맵 캐시(map cache); 및 상기 디스크립터들 중에서 외부 장치로부터 요청된 논리 어드레스에 대응되는 디스크립터를 상기 맵 캐시의 상태에 따라 선형 써치(linear search) 방식 및 이진 써치(binary search) 방식을 선택적으로 동시에 수행하여 써치하도록 구성된 맵 써치 엔진을 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템을 포함한다.

Description

맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템{Controller having a map cache and a memory system having the controller}
본 발명은 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 맵 캐시에 저장된 정보를 빠르게 써치(search)할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템은 데이터를 저장할 수 있는 메모리 장치와, 메모리 장치를 제어할 수 있는 컨트롤러를 포함할 수 있다.
메모리 시스템에서 요구되는 저장 용량이 증가함에 따라 메모리 시스템에 포함되는 메모리 장치들의 개수가 증가한다. 이에 따라, 데이터가 저장되는 메모리 블록들의 개수가 증가하고, 메모리 블록들의 어드레스들의 개수가 증가한다.
따라서, 호스트가 요청한 리드 동작 시, 데이터가 저장된 메모리 블록의 어드레스를 써치(search)하는 시간이 증가할 수 있다.
본 발명의 실시 예는 어드레스들이 저장되는 맵 캐시(map cache)를 선형(linear) 방식과 이진 트리(binary tree) 방식을 혼합하여 관리함으로써, 데이터가 저장된 위치를 빠르게 써치(search)할 수 있는 컨트롤러를 제공한다.
본 발명의 실시 예에 따른 컨트롤러는, 논리 어드레스들과, 상기 논리 어드레스들에 각각 맵핑된 물리 어드레스들을 포함하는 디스크립터들을 생성하도록 구성된 디스크립터 관리부(descriptor manager); 상기 디스크립터들을 선형 구조(linear structure) 및 이진 트리 구조(binary tree structure)로 저장하도록 구성된 맵 캐시(map cache); 및 상기 디스크립터들 중에서 외부 장치로부터 요청된 논리 어드레스에 대응되는 디스크립터를 상기 맵 캐시의 상태에 따라 선형 써치(linear search) 방식 및 이진 써치(binary search) 방식을 선택적으로 동시에 수행하여 써치하도록 구성된 맵 써치 엔진을 포함한다.
본 발명의 실시 예에 따른 메모리 시스템은, 물리 어드레스들이 각각 설정된 메모리 블록들을 포함하는 메모리 장치; 및 상기 물리 어드레스를 사용하여 상기 메모리 장치와 통신하고, 논리 어드레스를 사용하여 호스트와 통신하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 논리 어드레스들과 상기 물리 어드레스들을 각각 맵핑하여 디스크립터들을 생성하고, 상기 디스크립터들을 저장하는 맵 캐시를 포함하고, 상기 맵 캐시에 저장되는 상기 디스크립터들을 선형 구조(linear structure) 및 이진 트리 구조(binary tree structure)로 관리하고, 상기 호스트로부터 상기 논리 어드레스에 대한 리드 요청을 수신받으면, 상기 맵 캐시의 상태에 따라, 선형 써치(linear search) 방식 또는 이진 써치(binary search) 방식을 선택적으로 수행하거나, 상기 선형 써치 방식 및 상기 이진 써치 방식을 동시에 수행하여 상기 논리 어드레스에 대응되는 디스크립터를 써치하도록 구성된다.
본 기술은 어드레스들이 저장되는 맵 캐시(map cache)를 선형(linear) 방식과 이진 트리(binary tree) 방식을 혼합하여 관리함으로써, 리드 동작 시 데이터가 저장된 위치를 빠르게 찾을 수 있다.
도 1은 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 2는 도 1에 도시된 디스크립터 관리부(descriptor manager)를 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 맵 캐시(map cache)를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 서브 큐(sub queue)를 설명하기 위한 도면이다.
도 5a 내지 도 5c는 본 발명의 실시 예에 따른 메인 큐(main queue)를 설명하기 위한 도면들이다.
도 6은 본 발명의 실시 예에 따른 맵 써치 엔진(map search engine)을 설명하기 위한 도면이다.
도 7a 내지 도 7d는 본 발명의 실시 예에 따라 디스크립터(descriptor)를 써치(search)하는 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 장치들을 설명하기 위한 도면이다.
도 10은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 13은 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 1은 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 1을 참조하면, 컨트롤러(controller; 1000)는 디스크립터 관리부(descriptor manager; 1100), 맵 캐시(map cache; 1200) 및 맵 써치 엔진(map search engine; 1300)을 포함할 수 있다.
디스크립터 관리부(1100)는 프로그램 동작 시 논리 어드레스에 대한 디스크립터를 생성하고, 생성된 디스크립터를 순차적으로 출력할 수 있다. 또한, 디스크립터 관리부(1100)는 리드 동작 시 맵 캐시(1200)로부터 출력된 디스크립터를 수신할 수 있다. 예를 들면, 디스크립터 관리부(1100)는 디스크립터 생성부(descriptor generator; 1110) 및 임시 큐(temporary queue; 1120)를 포함할 수 있다.
디스크립터 생성부(1110)는 프로그램 동작 시 논리 어드레스에 맵핑된 물리 어드레스를 포함하는 디스크립터를 생성하도록 구성될 수 있다. 여기서, 논리 어드레스는 호스트와 컨트롤러(1000) 사이에서 통신하는 어드레스일 수 있고, 물리 어드레스는 컨트롤러(1000)와 메모리 장치 사이에서 통신하는 어드레스일 수 있다. 디스크립터 생성부(1110)는 물리 어드레스 외에도, 논리 어드레스에 대응되는 다양한 정보를 디스크립터에 포함할 수도 있다.
임시 큐(1120)는 디스크립터 생성부(1110)에서 출력된 디스크립터들을 출력하기 위하여 디스크립터들을 순차적으로 큐잉(queueing)하고, 큐잉된 디스크립터들을 순차적으로 출력할 수 있다. 예를 들면, 임시 큐(1120)는 디스크립터들을 임시로 저장할 수 있는 버퍼로 구성될 수 있다.
맵 캐시(1200)는 맵핑된 어드레스들의 정보를 포함하는 디스크립터들을 저장할 수 있다. 예를 들면, 맵 캐시(1200)는 디스크립터들을 서로 다른 방식으로 저장하도록 구성된 서브 큐(sub queue; 1210) 및 메인 큐(main queue; 1220)를 포함할 수 있으며, 서브 큐(1210)와 메인 큐(1220)의 상태(status)에 대한 정보를 저장할 수 있는 상태 버퍼(status buffer; 1230)를 포함할 수 있다.
디스크립터 관리부(1100)는 서브 큐(1210) 및 메인 큐(1220)에 디스크립터를 저장하기 위한 연산을 수행할 수 있다.
디스크립터 관리부(1100)는 선형 구조(linear structure)로 디스크립터들을 서브 큐(1210)에 저장할 수 있다. 예를 들면, 서브 큐(1210)는 입력되는 디스크립터들을 메모리 영역들에 순차적으로 저장할 수 있다.
디스크립터 관리부(1100)는 이진 트리 구조(binary tree structure)로 디스크립터들을 메인 큐(1220)에 저장할 수 있다. 예를 들면, 디스크립터 관리부(1100)는 서브 큐(1210)에서 출력된 디스크립터들을 이진 트리(binary tree) 구조 방식으로 연산하여 메인 큐(1220)에 저장할 수 있다. 저장하도록 구성될 수 있다.
맵 캐시(1200)에 입력되는 디스크립터들은 서브 큐(1210)를 통해 메인 큐(1220)에 저장될 수 있다. 이진 트리 구조로 디스크립터들을 저장하기 위한 복잡한 연산이 수행되어야 하므로, 메인 큐(1220)에 입력될 디스크립터들이 연산 및 저장되는 동안 나머지 디스크립터들은 서브 큐(1210)에서 대기할 수 있다. 서브 큐(1210)에 대기중인 디스크립터들은 메인 큐(1220)의 연산이 종료될 때마다 순차적으로 메인 큐(1220)로 전송될 수 있다.
상태 버퍼(1230)는 서브 큐(1210) 및 메인 큐(1220) 각각에 디스크립터들이 저장된 상태에 대한 정보를 저장할 수 있다. 예를 들면, 디스크립터 관리부(1100)는 서브 큐(1210)에 디스크립터가 입력된 상태, 메인 큐(1220)에 디스크립터가 입력된 상태, 서브 큐(1210)와 메인 큐(1220)에 디스크립터가 저장되지 않은 상태, 또는 서브 큐(1210)와 메인 큐(1220)에 디스크립터가 저장된 상태에 대한 상태 정보를 상태 버퍼(1230)에 저장할 수 있다.
예를 들면, 메인 큐(1220)에 디스크립터가 저장되지 않고 서브 큐(1210)에만 디스크립터들이 저장된 경우, 상태 버퍼(1230)에는 서브 큐(1210)에만 디스크립터가 저장되어 있다는 상태 정보가 저장될 수 있다. 이러한 상태 정보는 맵 캐시(1200)에 디스크립터들이 입력되는 초기에 상태 버퍼(1230)에 저장될 수 있다.
서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장된 경우, 상태 버퍼(1230)에는 서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장되어 있다는 상태 정보가 저장될 수 있다. 이는 맵 캐시(1200)에 디스크립터가 저장되는 중기 상태일 수 있다.
메인 큐(1220)에만 디스크립터가 저장되어 있고 서브 큐(1210)에는 디스크립터들이 저장되지 않는 경우, 상태 버퍼(1230)에는 메인 큐(1220)에만 디스크립터가 저장되어 있다는 상태 정보가 저장될 수 있다. 이는 맵 캐시(1200)에 일정 용량의 디스크립터들이 입력된 후기 상태일 수 있다.
서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장되지 않은 경우, 상태 버퍼(1230)에는 상태 정보가 저장되지 않을 수 있다. 이는 맵 캐시(1200)에 입력된 디스크립터가 없는 상태일 수 있다.
맵 써치 엔진(1300)은 맵 캐시(1200)에 저장된 디스크립터를 써치(search)하도록 구성될 수 있다. 예를 들면, 리드 동작 시, 맵 써치 엔진(1300)은 선택된 논리 어드레스에 대응되는 디스크립터를 맵 캐시(1200)에서 써치할 수 있다. 예를 들면, 맵 써치 엔진(1300)은 상태 버퍼(1230)에 저장된 상태 정보에 따라 서브 큐(1210) 또는 메인 큐(1220)를 선택하여 디스크립터를 써치하거나, 서브 큐(1210) 및 메인 큐(1220)를 동시에 선택하여 디스크립터를 써치할 수 있다. 예를 들면, 서브 큐(1210)에만 디스크립터가 저장된 경우, 맵 써치 엔진(1300)은 서브 큐(1210)에서 선형 써치(linear search) 방식으로 디스크립터를 써치할 수 있다. 메인 큐(1220)에만 디스크립터가 저장된 경우, 맵 써치 엔진(1300)은 메인 큐(1220)에서 이진 써치(binary search) 방식으로 디스크립터를 써치할 수 있다. 서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장된 경우, 맵 써치 엔진(1300)은 서브 큐(1210)에서는 선형 써치 방식으로 디스크립터를 써치하고, 메인 큐(1220)에서는 이진 써치 방식으로 디스크립터를 동시에 써치할 수 있다. 즉, 서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장된 경우, 맵 써치 엔진(1300)은 서브 큐(1210)와 메인 큐(1220)를 서로 다른 방식으로 동시에 써치할 수 있다.
서브 큐(1210) 또는 메인 큐(1220)에서 논리 어드레스에 대응되는 디스크립터가 검출되면, 맵 캐시(1200)는 검출된 디스크립터를 디스크립터 관리부(1100)로 출력할 수 있다.
상술된 각 장치들을 구체적으로 설명하면 다음과 같다.
도 2는 도 1에 도시된 디스크립터 관리부(descriptor manager)를 설명하기 위한 도면이다.
도 2를 참조하면, 디스크립터 관리부(1100)는 디스크립터 생성부(1110) 및 임시 큐(1120)를 포함할 수 있다.
디스크립터 생성부(1110)는 프로그램 동작 시 서로 맵핑된 논리 어드레스와 물리 어드레스를 포함하는 디스크립터를 생성할 수 있다. 또한, 디스크립터 생성부(1110)는 논리 어드레스에 대응되는 다양한 정보를 디스크립터에 더 포함시킬 수도 있다. 예를 들면, 연속되는 어드레스들에 대한 오프셋(offset) 등의 다양한 정보가 디스크립터에 더 포함될 수도 있다.
디스크립터 생성부(1110)는 제1 논리 어드레스(LA01)에 대응되는 제1 디스크립터(D01)를 다음과 같이 생성할 수 있다. 제1 논리 어드레스(LA01)에 제1 물리 어드레스(PA01)가 맵핑된 경우, 디스크립터 생성부(1110)는 제1 논리 어드레스(LA01) 및 제1 물리 어드레스(PA01)가 포함된 제1 디스크립터(D01)를 생성할 수 있으며, 제1 논리 어드레스(LA01)에 대응되는 추가 정보가 있는 경우에는 제1 정보(INF01)를 제1 디스크립터(D01)에 더 포함시킬 수 있다. 제1 디스크립터(D01)가 생성되면, 디스크립터 생성부(1110)는 제2 디스크립터(D02)를 생성할 수 있다. 예를 들면, 제2 디스크립터(D02)는 제2 논리 어드레스(LA02)와 이에 맵핑된 제2 물리 어드레스(PA02) 및 제2 정보(INF02)를 포함할 수 있다. 이러한 방식으로, 프로그램 동작 시 디스크립터 생성부(1110)는 디스크립터(D#)를 순차적으로 생성할 수 있다.
임시 큐(1120)는 디스크립터 생성부(1110)에서 생성되는 디스크립터(D#)를 선형(linear) 구조로 저장 및 출력할 수 있도록 구성될 수 있다. 예를 들면, 디스크립터 생성부(1110)에서 제1 디스크립터(D01)가 생성되면 임시 큐(1120)는 제1 디스크립터(D01)를 임시로 저장할 수 있다. 이어서, 디스크립터 생성부(1110)에서 제2 디스크립터(D02)가 생성되면 임시 큐(1120)는 제1 디스크립터(D01)의 다음 순번으로 제2 디스크립터(D02)를 임시로 저장할 수 있다. 임시 큐(1120)에 임시로 저장된 복수의 디스크립터들(D01, D02, …)은 맵 캐시(도 1의 1200)가 디스크립터를 수신받을 준비가 되면 순차적으로 출력될 수 있다. 맵 캐시(1200)가 디스크립터(D#)를 수신할 준비가 되어있지 않거나, 맵 캐시(1200)의 저장 용량이 가득 찬 경우, 임시 큐(1120)는 맵 캐시(1200)가 디스크립터(D#)를 수신할 수 있을 때까지 디스크립터(D#)의 출력을 지연시킬 수 있다.
도 3은 본 발명의 실시 예에 따른 맵 캐시(map cache)를 설명하기 위한 도면이다.
도 3을 참조하면, 맵 캐시(1200)는 서브 큐(1210), 메인 큐(1220) 및 상태 버퍼(1230)를 포함할 수 있다. 맵 캐시(1200)에 입력된 디스크립터(D#)는 서브 큐(1210)을 통해 메인 큐(1220)에 순차적으로 저장될 수 있다. 서브 큐(1210)는 선형(linear) 구조로 디스크립터(D#)를 순차적으로 저장할 수 있고, 메인 큐(1220)는 이진 트리(binary tree) 구조로 디스크립터(D#)를 저장할 수 있다.
예를 들면, 디스크립터 관리부(1100)는 디스크립터(D#)를 이진 트리 구조로 메인 큐(1220)에 저장하기 위한 연산을 수행하지 않을 때, 서브 큐(1210)에 입력된 디스크립터(D#)를 메인 큐(1220)에 전송할 수 있다. 메인 큐(1220)에 전송된 디스크립터(D#)가 많아질수록 디스크립터(D#)를 이진 트리 구조로 저장하기 위한 연산이 복잡해지므로, 디스크립터(D#)가 메인 큐(1220)에 저장되는데 걸리는 시간이 지연될 수 있다. 이 경우, 디스크립터 관리부(1100)는 메인 큐(1220)에서 디스크립터(D#)를 수신할 수 있을 때까지 서브 큐(1210)에 저장된 디스크립터(D#)를 메인 큐(1220)로 전송하지 않고 대기시킬 수 있다.
메인 큐(1220)가 디스크립터(D#)를 다시 수신할 수 있게 되면, 디스크립터 관리부(1100)는 디스크립터(D#)를 메인 큐(1220)에게 전송할 수 있다.
선형(linear) 구조는 디스크립터(D#)가 입력되는 순서대로 메모리 영역들에 저장되는 구조를 의미한다. 예를 들면, 메모리 영역들 각각은 하나의 입력 노드와 하나의 출력 노드를 가질 수 있다. 따라서, 디스크립터(D#)는 입력 노드를 통해 메모리 영역에 입력된 후 하나의 출력 노드를 통해 출력될 수 있다.
이진 트리(binary tree) 구조는 하나의 입력 노드와 두 개의 출력 노드들을 가지는 메모리 영역들로 이루어진다. 예를 들면, 메모리 영역들 각각은 하나의 입력 노드와 두 개의 출력 노드들을 가지기 때문에, 입력 노드를 통해 디스크립터(D#)가 입력되면 두 개의 출력 노드들 중 어느 하나로 디스크립터(D#)가 출력될 수 있다.
상태 버퍼(1230)는 서브 큐(1210) 및 메인 큐(1220) 각각의 상태에 대한 정보를 저장할 수 있다. 예를 들면, 상태 버퍼(1230)는 두 개의 메모리 버퍼들을 포함할 수 있다. 제1 메모리 버퍼(SQ)에는 서브 큐(1210)의 상태 정보가 저장될 수 있고, 제2 메모리 버퍼(MQ)에는 메인 큐(1220)의 상태 정보가 저장될 수 있다. 제1 메모리 버퍼(SQ)에 유효 데이터가 저장되면 서브 큐(1210)에 디스크립터(D#)가 저장된 상태를 의미하고, 제2 메모리 버퍼(MQ)에 저 유효 데이터가 저장되면 메인 큐(1220)에 디스크립터(D#)가 저장된 상태를 의미한다. 제1 및 제2 메모리 버퍼들(SQ, MQ)에 모두 무효 데이터가 저장되면 서브 큐(SQ) 및 메인 큐(MQ)에 디스크립터(D#)가 저장되지 않은 상태를 의미한다. 제1 및 제2 메모리 버퍼들(SQ, MQ)에 모두 유효 데이터가 저장되면 서브 큐(SQ) 및 메인 큐(MQ)에 디스크립터(D#)가 저장된 상태를 의미한다. 여기서 유효 데이터는 1일 수 있고 무효 데이터는 0일 수 있으나, 이는 컨트롤러에 따라 다르게 설정될 수 있다.
디스크립터 관리부(1100)는 서브 큐(1210)에 디스크립터(D#)가 저장되면 제1 메모리 버퍼(SQ)에 1의 상태 데이터를 저장할 수 있고, 메인 큐(1220)에 디스크립터(D#)가 입력되면 제2 메모리 버퍼(MQ)에 1의 상태 데이터를 저장할 수 있다.
디스크립터 관리부(1100)는 서브 큐(1210)에 디스크립터(D#)가 저장되어 있지 않으면 제1 메모리 버퍼(SQ)에 0의 상태 데이터를 저장할 수 있고, 메인 큐(1220)에 디스크립터(D#)가 저장되어 있지 않으면 제2 메모리 버퍼(MQ)에 0의 상태 데이터를 저장할 수 있다.
디스크립터 관리부(1100)는 서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장되지 않으면, 제1 및 제2 메모리 버퍼들(SQ, MQ)에 0의 상태 데이터를 저장할 수 있다.
디스크립터 관리부(1100)는 서브 큐(1210) 및 메인 큐(1220)에 디스크립터가 저장되어 있으면, 제1 및 제2 메모리 버퍼들(SQ, MQ)에 1의 상태 데이터를 저장할 수 있다.
도 4는 본 발명의 실시 예에 따른 서브 큐(sub queue)를 설명하기 위한 도면이다.
도 4를 참조하면, 디스크립터 관리부(도 3의 1100)는 서브 큐(1210)에 선형 구조로 디스크립터(D#)를 저장할 수 있다. 예를 들면, 서브 큐(1210)에 제1 내지 제kk 디스크립터들(D01~Dkk)이 입력되면, 제1 내지 제kk 디스크립터들(D01~Dkk)은 서브 큐(1210)의 메모리 영역들에 순차적으로 저장될 수 있으며, 출력될 때에도 제1 내지 제kk 디스크립터들(D01~Dkk)이 순차적으로 출력될 수 있다.
도 5a 내지 도 5c는 본 발명의 실시 예에 따른 메인 큐(main queue)를 설명하기 위한 도면들로써, 다양한 이진 트리 구조로 디스크립터들이 저장되는 메인 큐가 도시된다.
도 5a에 도시된 실시 예를 참조하면, 이진 트리 구조는 제1 메모리 영역(1MR)을 기준으로 좌측과 우측 두 개의 그룹들(GR1, GR2)로 구분될 수 있다. 제1 그룹(GR1)에 포함된 메모리 영역들에 디스크립터들이 모두 채워지면 제2 그룹(GR2)에 포함된 메모리 영역들에 디스크립터들이 채워질 수 있다. 예를 들면, 메인 큐(1220)의 메모리 영역에 입력된 디스크립터는 왼쪽 출력 노드(51)를 통해 다른 메모리 영역으로 전송될 수 있고, 다음으로 입력되는 디스크립터는 오른쪽 출력 노드(52)를 통해 다른 메모리 영역으로 전송될 수 있다. 동일한 레벨(53)의 메모리 영역들에 디스크립터들이 모두 저장되면 상위 레벨(54)의 메모리 영역들에 디스크립터들이 순차적으로 저장될 수 있다. 이러한 방식으로 제1 그룹(GR1)에 포함된 메모리 영역들에 디스크립터들이 모두 저장되면, 제2 그룹(GR2)에 포함된 메모리 영역들에 디스크립터들이 저장될 수 있다.
도 5b에 도시된 실시 예를 참조하면,, 제1 메모리 영역(1MR)을 기준으로 좌우로 구분된 제1 및 제2 그룹들(GR1, GR2) 중에서 어느 하나의 그룹에 포함된 메모리 영역들이 모두 채워지면 다음 그룹에 포함된 메모리 영역들에 디스크립터들이 저장될 수 있다. 예를 들면, 제1 그룹(GR1)에 포함된 메모리 영역들 중에서 좌측의 메모리 영역들부터 순차적으로 채워질 수 있다. 즉, 제1 디스크립터(D01)가 선택된 메모리 영역(55)에 저장되면, 제2 디스크립터(D02)는 선택된 메모리 영역(55)과 동일한 메모리 영역(57)에 연결된 다른 메모리 영역(56)에 저장될 수 있다. 제3 디스크립터(D03)는 제1 및 제2 디스크립터들(D01, D02)이 저장된 메모리 영역들(55, 56)에 연결된 메모리 영역(57)에 저장될 수 있다. 이러한 방식으로 제1 그룹(GR1)에 포함된 메모리 영역들은 좌측부터 순차적으로 채워질 수 있다.
도 5c에 도시된 실시 예를 참조하면, 디스크립터들은 제1 메모리 영역(1MR)을 기준으로 좌우로 구분된 제1 및 제2 그룹들(GR1, GR2)에 포함된 메모리 영역들에 교대 저장될 수 있다. 예를 들면, 동일한 레벨(58)에 포함된 메모리 영역들에 디스크립터들(D01~D08)이 제1 그룹(GR1)과 제2 그룹(GR2)을 교대로 선택하면서 저장되면, 상위 레벨(59)에 포함된 메모리 영역들에서도 제1 그룹(GR1)과 제2 그룹(GR2)이 번갈아 선택되면서 디스크립터들(D09~D12)이 저장될 수 있다.
도 5a 내지 도 5c을 참조하여 설명된 실시 예들 외에도, 이진 트리 구조에 디스크립터들이 저장되는 방식은 다양할 수 있다.
도 6은 본 발명의 실시 예에 따른 맵 써치 엔진(map search engine)을 설명하기 위한 도면이다.
도 6을 참조하면, 맵 써치 엔진(1300)은 리드 동작 또는 서스팬드(suspend) 리드 동작 시, 리드 대상에 해당되는 논리 어드레스(LA#)를 서브 큐(1210) 또는 메인 큐(1220), 또는 서브 큐(1210)와 메인 큐(1220)에서 동시에 써치(search)할 수 있다. 이를 위하여, 맵 써치 엔진(1300)은 서브 큐(1210) 또는 메인 큐(1220)를 써치하기 이전에, 상태 버퍼(1230)에 저장된 상태 정보(STIF)를 먼저 수신받고, 디스크립터들이 저장된 큐를 선택할 수 있다. 예를 들면, 맵 써치 엔진(1300)은 상태 버퍼(1230)에 포함된 제1 및 제2 메모리 버퍼들(SQ, MQ)에 저장된 상태 정보(STIF)를 수신받고, 수신된 상태 정보(STIF)에 따라 서브 큐(1210) 또는 메인 큐(1220)를 선택하거나, 서브 큐(SQ) 및 메인 큐(MQ)를 모두 선택할 수 있다. 이어서, 맵 써치 엔진(1300)은 선택된 큐에서 논리 어드레스(LA#)에 대응되는 디스크립터를 써치할 수 있다. 예를 들면, 맵 써치 엔진(1300)은 서브 큐(1210)에서 선형 써치(linear search; LS) 방식으로 논리 어드레스(LA#)에 대응되는 디스크립터를 써치할 수 있고, 메인 큐(1220)에서는 이진 써치(binary search; BS) 방식으로 논리 어드레스(LA#)에 대응되는 디스크립터를 써치할 수 있다.
선형 써치(LS) 방식에서는 서브 큐(1210)에 포함된 메모리 영역들이 순차적으로 써치되기 때문에 논리 어드레스(LA#)에 대응되는 디스크립터의 순번이 빠르면 써치 동작이 빨리 완료될 수 있지만, 논리 어드레스(LA#)에 대응되는 디스크립터의 순번이 느리면 써치 동작이 늦게 완료될 수 있다.
이진 써치(BS) 방식에서는 메인 큐(1220)에 포함된 메모리 영역들이 비선형으로 써치되기 때문에, 디스크립터의 개수가 많아질수록 선형 써치(LS) 방식보다 써치 동작이 빨리 완료될 확률이 높아질 수 있다. 즉, 논리 어드레스(LA#)에 대응되는 디스크립터를 빠르게 써치할 확률이 서브 큐(1210)보다 메인 큐(1220)에서 더 높다.
이진 써치(BS) 방식에서는 메인 큐(1220)에 포함된 메모리 영역들을 반으로 구분하고 선택된 그룹에서 써치 동작이 수행될 수 있다. 선택된 그룹에서 논리 어드레스(LA#)에 대응되는 디스크립터가 없으면 다른 그룹을 선택하고, 새로 선택된 그룹을 다시 반으로 구분하는 방식으로 써치 동작이 수행될 수 있다.
도 7a 내지 도 7d는 본 발명의 실시 예에 따라 디스크립터(descriptor)를 써치(search)하는 방법을 설명하기 위한 도면이다.
도 7a를 참조하면, 상태 버퍼(1230)에 저장된 상태 정보(STIF)가 서브 큐(1210)에만 디스크립터들이 저장된 상태를 나타내는 경우(STIF[10]), 맵 써치 엔진(1300)은 메인 큐(1220)를 제외하고 서브 큐(1210)에서 논리 어드레스(LA#)에 대응되는 디스크립터를 선형 써치(LS) 방식으로 써치할 수 있다.
서브 큐(1210)에서 논리 어드레스(LA#)에 대응되는 디스크립터(D01)가 검출되면, 검출된 디스크립터(D01)는 디스크립터 관리부(1100)에게 전송될 수 있다. 예를 들면, 맵 써치 엔진(1300)이 제1 논리 어드레스(LA01)에 대응되는 디스크립터를 써치하는 경우, 제1 논리 어드레스(LA01)를 포함하는 제1 디스크립터(D01)가 검출될 수 있으며, 제1 디스크립터(D01)에 포함된 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 디스크립터 관리부(1100)로 전송될 수 있다. 디스크립터 관리부(1100)를 포함하는 컨트롤러(도 1의 1000)는 디스크립터 관리부(1100)에 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 수신되면, 어드레스 및 정보에 따라 리드 동작을 수행하기 위한 커맨드 및 어드레스를 메모리 장치에게 출력할 수 있다.
도 7b를 참조하면, 상태 버퍼(1230)에 저장된 상태 정보(STIF)가 메인 큐(1220)에만 디스크립터들이 저장된 상태를 나타내는 경우(STIF[01]), 맵 써치 엔진(1300)은 서브 큐(1210)를 제외하고 메인 큐(1220)에서 논리 어드레스(LA#)에 대응되는 디스크립터를 이진 써치(BS) 방식으로 써치할 수 있다.
메인 큐(1220)에서 논리 어드레스(LA#)에 대응되는 디스크립터(D01)가 검출되면, 검출된 디스크립터(D01)는 디스크립터 관리부(1100)에게 전송될 수 있다. 예를 들면, 맵 써치 엔진(1300)이 제1 논리 어드레스(LA01)에 대응되는 디스크립터를 써치하는 경우, 제1 논리 어드레스(LA01)를 포함하는 제1 디스크립터(D01)가 검출될 수 있으며, 제1 디스크립터(D01)에 포함된 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 디스크립터 관리부(1100)로 전송될 수 있다. 디스크립터 관리부(1100)를 포함하는 컨트롤러(도 1의 1000)는 디스크립터 관리부(1100)에 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 수신되면, 어드레스 및 정보에 따라 리드 동작을 수행하기 위한 커맨드 및 어드레스를 메모리 장치에게 출력할 수 있다.
도 7c를 참조하면, 상태 버퍼(1230)에 저장된 상태 정보(STIF)가 서브 큐(1210) 및 메인 큐(1220)에 디스크립터들이 저장된 상태를 나타내는 경우(STIF[11]), 맵 써치 엔진(1300)은 서브 큐(1210) 및 메인 큐(1220)에서 논리 어드레스(LA#)에 대응되는 디스크립터를 동시에 써치할 수 있다.
예를 들면, 서브 큐(1210)에서는 선형 써치(LS) 방식으로 디스크립터가 써치될 수 있고, 메인 큐(1220)에서는 이진 써치(BS) 방식으로 디스크립터가 써치될 수 있다.
메인 큐(1220)에서 논리 어드레스(LA#)에 대응되는 디스크립터(D01)가 검출되면, 검출된 디스크립터(D01)는 디스크립터 관리부(1100)에게 전송될 수 있다. 예를 들면, 맵 써치 엔진(1300)이 제1 논리 어드레스(LA01)에 대응되는 디스크립터를 써치하는 경우, 제1 논리 어드레스(LA01)를 포함하는 제1 디스크립터(D01)가 검출될 수 있으며, 제1 디스크립터(D01)에 포함된 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 디스크립터 관리부(1100)로 전송될 수 있다. 디스크립터 관리부(1100)를 포함하는 컨트롤러(도 1의 1000)는 디스크립터 관리부(1100)에 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)가 수신되면, 수신된 제1 논리 어드레스(LA01), 제1 물리 어드레스(PA01) 및 제1 정보(INF01)에 따라 리드 동작을 수행하기 위한 커맨드 및 어드레스를 메모리 장치에게 출력할 수 있다.
도 7d를 참조하면, 상태 버퍼(1230)에 저장된 상태 정보(STIF)가 서브 큐(1210) 및 메인 큐(1220)에 디스크립터들이 저장되지 않은 상태를 나타내는 경우(STIF[00]), 맵 써치 엔진(1300)은 서브 큐(1210) 및 메인 큐(1220)를 써치하지 않고, 디스크립터 관리부(1100)에 포함된 임시 큐(1120)에서 디스크립터를 써치할 수 있다. 즉, 서브 큐(1210) 및 메인 큐(1220)에 디스크립터들이 저장되지 않았다는 것은 디스크립터 관리부(1100)가 디스크립터를 출력하지 않는 상태를 의미하며, 이 경우 디스크립터는 디스크립터 관리부(1100)의 임시 큐(1120)에 대기 상태일 수 있다. 따라서, 맵 써치 엔진(1300)은 임시 큐(1120)에 대기중인 디스크립터들 중에서 논리 어드레스(LA#)에 대응되는 디스크립터를 써치할 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 8을 참조하면, 상술한 실시 예에 따른 컨트롤러(1000)는 메모리 시스템(2000)에 사용될 수 있다. 예를 들면, 메모리 시스템(memory system; 2000)은 데이터를 저장하도록 구성된 저장 장치(storage device; 2100) 및 컨트롤러(1000)를 포함할 수 있다. 저장 장치(2100)는 복수의 메모리 장치들(MD)을 포함할 수 있으며, 메모리 장치들(MD)은 입출력 라인들을 통해 컨트롤러(1000)에 연결될 수 있다.
컨트롤러(1000)는 호스트(host; 3000)와 저장 장치(2100) 사이에서 통신할 수 있다. 컨트롤러(1000)는 도 1에 도시된 장치들을 포함할 수 있다. 컨트롤러(1000)는 호스트(3000)의 요청(request; RQ)에 따라 메모리 장치들(MD)을 제어하기 위한 커맨드(CMD)를 생성할 수 있고, 호스트(3000)의 요청(RQ)이 없더라도 메모리 시스템(2000)의 성능 개선을 위한 백그라운드 동작을 수행할 수 있다.
호스트(3000)는 다양한 동작을 위한 요청들(RQ)을 생성하고, 생성된 요청들(RQ)을 메모리 시스템(2000)에게 출력할 수 있다. 예를 들면, 요청들(RQ)은 프로그램 동작(program operation)을 제어할 수 있는 프로그램 요청(program request), 리드 동작(read operation)을 제어할 수 있는 리드 요청(read request), 소거 동작(erase operation)을 제어할 수 있는 소거 요청(erase request) 등을 포함할 수 있다. 또한, 호스트(3000)는 서스펜드 요청을 메모리 시스템(2000)으로 전송하여, 메모리 시스템(2000)에서 현재 진행 중인 동작을 중단하고, 서드펜드 요청에 대응되는 동작을 우선적으로 수행하도록 할 수 있다.
예를 들면, 호스트(3000)가 데이터(DATA)와 프로그램 요청(RQ)을 메모리 시스템(2000)에게 전송하면, 메모리 시스템(2000)에 포함된 컨트롤러(1000)는 데이터(DATA)를 저장할 메모리 블록의 물리 어드레스와, 물리 어드레스에 맵핑되는 논리 어드레스를 포함하는 디스크립터를 생성하고, 물리 어드레스에 대응되는 메모리 장치(MD)에 프로그램 동작을 수행할 수 있다.
메모리 시스템(2000)에서 수행 중인 프로그램 동작이 완료되기 이전에, 호스트(3000)가 데이터를 리드 하기 위하여 서스펜드 리드 요청(RQ)을 메모리 시스템(2000)에게 전송할 수 있다. 이러한 경우, 컨트롤러(1000)는 논리 어드레스에 대응되는 디스크립터를 써치하고, 써치된 디스크립터에 포함된 물리 어드레스에 따라 리드 동작을 수행하고, 리드된 데이터를 호스트(3000)에게 출력할 수 있다.
호스트(3000)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 통해 메모리 시스템(2000)과 통신할 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 장치들을 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 장치(MD)는 데이터가 저장되는 메모리 셀 어레이(memory cell array; 110)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로(200)와, 주변 회로(200)를 제어하는 로직 회로(logic circuit; 160)를 포함할 수 있다.
메모리 셀 어레이(110)는 데이터가 저장되는 복수의 메모리 블록들(BLK1~BLKi)을 포함할 수 있다. 메모리 블록(BLK1~BLKi)들 각각은 복수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로(200)는 전압 생성기(voltage generator; 120), 로우 디코더(row decoder; 130), 페이지 버퍼 그룹(page buffer group; 140) 및 입출력 회로(input/output circuit; 150)를 포함할 수 있다.
전압 생성기(120)는 전압 코드(VCD)에 응답하여, 다양한 동작들에 필요한 동작 전압들(Vop)을 생성 및 출력할 수 있다. 예를 들면, 전압 생성기(120)는 다양한 레벨들을 가지는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등을 생성하고 출력할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(110)에 포함된 메모리 블록들(BLK1~BLKi) 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(110)에 연결될 수 있다. 예를 들면, 페이지 버퍼 그룹(140)은 비트 라인들 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼들은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 동시에 동작할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 프로그램 동작 시 수행되는 검증 동작과 소거 동작 시 수행되는 검증 동작은 리드 동작과 동일한 방식으로 수행될 수 있다. 페이지 버퍼들은 리드 동작 또는 검증 동작 시, 메모리 셀들의 문턱전압에 따라 가변되는 비트 라인들의 전압을 센싱할 수 있다. 즉, 페이지 버퍼들에서 수행되는 센싱 동작의 결과에 따라, 메모리 셀들의 문턱전압들이 리드 전압 또는 검증 전압보다 낮은지 또는 높은지가 판단될 수 있다.
입출력 회로(150)는 입출력 라인들을 통해 컨트롤러(도 1의 1200)에 연결될 수 있다. 입출력 회로(150)는 입출력 라인들을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들면, 입출력 회로(150)는 입출력 라인들을 통해 수신된 커맨드(CMD) 및 어드레스(ADD)를 로직 회로(160)에 전송할 수 있고, 입출력 라인들을 통해 수신된 데이터(DATA)를 페이지 버퍼 그룹(140)으로 전송할 수 있다. 입출력 회로(150)는 페이지 버퍼 그룹(140)로부터 수신된 데이터(DATA)를 입출력 라인들을 통해 컨트롤러(1200)로 출력할 수 있다.
로직 회로(160)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 전압 코드(VCD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 로직 회로(160)는 커맨드(CMD)에 응답하여 알고리즘을 수행하는 소프트웨어와, 어드레스(ADD) 및 알고리즘에 따라 다양한 신호들을 출력하도록 구성된 하드웨어를 포함할 수 있다.
도 10은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 프로그램 동작 시, 호스트(3000)는 프로그램 요청(P_RQ), 논리 어드레스(LA#) 및 데이터(DATA)를 메모리 시스템(2000)에게 전송할 수 있다. 컨트롤러(1000)는 프로그램 요청(P_RQ)에 따라, 상술한 실시 예와 같이 논리 어드레스(LA#)에 맵핑되는 물리 어드레스를 포함하는 디스크립터를 생성하고, 디스크립터를 맵 캐시(도 1의 1200)에 저장할 수 있다. 이어서, 물리 어드레스에 따라 선택된 메모리 장치에 프로그램 커맨드(P_CMD) 및 데이터(DATA)를 전송하여 프로그램 동작을 수행할 수 있다. 프로그램 동작 시, 데이터(DATA) 량이 많을수록 디스크립터를 생성하고, 생성된 디스크립터를 맵 캐시(1200)에 저장하는 동작 시간이 증가할 수 있다.
컨트롤러(1000)는 선택된 메모리 장치(MD)에 데이터가 모두 프로그램되지 않더라도 다음 동작을 위하여 호스트(3000)에게 완료 커맨드(completion command)을 전송하기 때문에, 메모리 시스템(2000)에서 프로그램 동작이 진행되는 도중에 호스트(3000)는 다음 요청을 메모리 시스템(2000)에게 전송할 수 있다. 예를 들면, 호스트(3000)는 프로그램 동작이 수행중인 메모리 시스템(2000)에게 리드 요청을 전송할 수 있다. 메모리 시스템(2000)에 리드 요청이 수신되는 실시 예는 다음 도면을 참조하여 설명된다.
도 11은 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 시스템(2000)에서 프로그램 동작이 진행되는 동안 호스트(3000)가 리드 요청(R_RQ) 및 논리 어드레스(LA#)를 전송할 수 있다. 이러한 경우, 컨트롤러(1000)는 호스트(3000)에서 출력된 논리 어드레스(LA#)에 맵핑된 물리 어드레스를 써치(search)할 수 있다. 예를 들면, 도 6 내지 도 7c를 참조하여 설명된 실시 예와 같이, 논리 어드레스(LA#)에 대응되는 디스크립터를 써치하고, 검출된 디스크립터에 포함된 물리 어드레스에 따라 메모리 장치(MD)에게 리드 커맨드(R_CMD)를 전송할 수 있다. 메모리 장치(MD)로부터 리드된 데이터(DATA)를 수신받으면, 컨트롤러(1000)는 데이터(DATA)를 호스트(3000)에게 출력할 수 있다.
상술한 실시 예와 같이, 리드 동작 시 논리 어드레스에 맵핑된 물리 어드레스를 빠르게 찾을수록, 물리 어드레스에 대응되는 메모리 장치로부터 데이터(DATA)를 빠르게 수신하고, 호스트(3000)에게 데이터(DATA)를 빠르게 출력할 수 있다. 따라서, 도 3을 참조하여 설명된 실시 예와 같이 디스크립터들을 서브 큐(1210)와 메인 큐(1220)로 각각 구분하여 관리하고, 선형 써치 방식과 이진 써치 방식을 동시에 사용하여 디스크립터를 써치함으로써, 리드 동작 시간이 단축될 수 있다.
도 12는 본 발명의 컨트롤러가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 12를 참조하면, 메모리 카드 시스템(4000)은 컨트롤러(4100), 메모리 장치(4200), 및 커넥터(4300)를 포함한다.
컨트롤러(4100)는 메모리 장치(4200)와 연결된다. 컨트롤러(4100)는 메모리 장치(4200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(4100)는 메모리 장치(4200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 컨트롤러(4100)는 도 1에 도시된 컨트롤러(1000)와 동일하게 구성될 수 있다. 컨트롤러(4100)는 메모리 장치(4200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(4100)는 메모리 장치(4200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(4100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(4100)는 커넥터(4300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(4100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(4100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(4300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(4200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
컨트롤러(4100) 및 메모리 장치(4200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(4100) 및 메모리 장치(4200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 13은 본 발명의 컨트롤러가 적용된 SSD(Solid State Drive) 시스템을 보여주는 도면이다.
도 13을 참조하면, SSD 시스템(5000)은 호스트(5100) 및 SSD(5200)를 포함한다. SSD(5200)는 신호 커넥터(5001)를 통해 호스트(5100)와 신호를 주고 받고, 전원 커넥터(5002)를 통해 전원(PWR)을 입력 받는다. SSD(5200)는 컨트롤러(5210), 복수의 플래시 메모리들(5221~522n), 보조 전원 장치(5230), 및 버퍼 메모리(5240)를 포함한다.
본 발명의 실시 예에 따르면, 컨트롤러(5210)는 도 1을 참조하여 설명된 컨트롤러(1000)의 기능을 수행할 수 있다.
컨트롤러(5210)는 호스트(5100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(5221~522n)을 제어할 수 있다. 예시적으로, 신호는 호스트(5100) 및 SSD(5200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(5230)는 전원 커넥터(5002)를 통해 호스트(5100)와 연결된다. 보조 전원 장치(5230)는 호스트(5100)로부터 전원 전압을 입력 받고, 충전할 수 있다. 보조 전원 장치(5230)는 호스트(5100)로부터의 전원 공급이 원활하지 않을 경우, SSD(5200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(5230)는 SSD(5200) 내에 위치할 수도 있고, SSD(5200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(5230)는 메인 보드에 위치하며, SSD(5200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(5240)는 SSD(5200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(5240)는 호스트(5100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(5221~522n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(5221~522n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(5240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
1000: 컨트롤러 1100: 디스크립터 관리부
1110: 디스크립터 생성부 1120: 임시 큐
1200: 맵 캐시 1210: 서브 큐
1220: 메인 큐 1230: 상태 버퍼
1300: 맵 써치 엔진

Claims (20)

  1. 논리 어드레스들과, 상기 논리 어드레스들에 각각 맵핑된 물리 어드레스들을 포함하는 디스크립터들을 생성하도록 구성된 디스크립터 관리부(descriptor manager);
    상기 디스크립터들을 선형 구조(linear structure) 및 이진 트리 구조(binary tree structure)로 저장하도록 구성된 맵 캐시(map cache); 및
    상기 디스크립터들 중에서 외부 장치로부터 요청된 논리 어드레스에 대응되는 디스크립터를 상기 맵 캐시의 상태에 따라 선형 써치(linear search) 방식 및 이진 써치(binary search) 방식을 선택적으로 동시에 수행하여 써치하도록 구성된 맵 써치 엔진을 포함하는 컨트롤러.
  2. 제1항에 있어서, 상기 디스크립터 관리부는,
    상기 맵 캐시에 상기 선형 구조 및 상기 이진 트리 구조로 상기 디스크립터들을 저장하도록 구성되는 컨트롤러.
  3. 제1항에 있어서, 상기 디스크립터 관리부는,
    상기 논리 어드레스들 및 상기 물리 어드레스들을 각각 포함하는 상기 디스크립터들을 순차적으로 생성하도록 구성된 디스크립터 생성부; 및
    상기 디스크립터 생성부에서 생성된 상기 디스크립터들을 출력하기 위하여 상기 디스크립터들을 순차적으로 큐잉(queueing)하도록 구성된 임시 버퍼를 포함하는 컨트롤러.
  4. 제1항에 있어서, 상기 맵 캐시는,
    상기 디스크립터들을 상기 선형 구조로 저장하도록 구성된 서브 큐;
    상기 디스크립터들을 상기 이진 트리 구조로 저장하도록 구성된 메인 큐; 및
    상기 서브 큐와 상기 메인 큐에 상기 디스크립터들이 저장된 상태에 대한 상태 정보를 저장하도록 구성된 상태 버퍼를 포함하는 컨트롤러.
  5. 제4항에 있어서, 상기 디스크립터들은,
    상기 서브 큐에 순차적으로 입력된 후, 상기 메인 큐로 순차적으로 전송되는 컨트롤러.
  6. 제4항에 있어서,
    상기 서브 큐 및 상기 메인 큐는 각각 복수의 메모리 영역들을 포함하고,
    상기 디스크립터들은 상기 메모리 영역들에 저장되는 컨트롤러.
  7. 제6항에 있어서,
    상기 서브 큐에 포함된 상기 메모리 영역들은 하나의 입력 노드와 하나의 출력 노드를 포함하는 컨트롤러.
  8. 제6항에 있어서,
    상기 메인 큐에 포함된 상기 메모리 영역들은 하나의 입력 노드와 두 개의 출력 노드들을 포함하는 컨트롤러.
  9. 제8항에 있어서,
    상기 디스크립터 관리부는, 상기 메모리 영역들 중 선택된 메모리 영역에 상기 디스크립터를 입력한 후, 상기 두 개의 출력 노드들 중 어느 하나를 통해 다음 메모리 영역으로 상기 디스크립터를 전송하도록 구성되는 컨트롤러.
  10. 제6항에 있어서, 상기 상태 버퍼는,
    상기 서브 큐의 상태에 대한 정보를 저장하도록 구성된 제1 메모리 버퍼; 및
    상기 메인 큐의 상태에 대한 정보를 저장하도록 구성된 제2 메모리 버퍼를 포함하는 컨트롤러.
  11. 제10항에 있어서,
    상기 디스크립터들이 상기 서브 큐에 저장되면, 상기 제1 메모리 버퍼에 유효 데이터가 저장되고,
    상기 디스크립터들이 상기 메인 큐에 저장되면, 상기 제2 메모리 버퍼에 상기 유효 데이터가 저장되는 컨트롤러.
  12. 제10항에 있어서,
    상기 디스크립터들이 상기 서브 큐 및 상기 메인 큐에 모두 저장되면, 상기 제1 및 제2 메모리 버퍼들에 유효 데이터가 저장되는 컨트롤러.
  13. 제10항에 있어서,
    상기 디스크립터들이 상기 서브 큐 및 상기 메인 큐에 모두 저장되지 않으면, 상기 제1 및 제2 메모리 버퍼들에 무효 데이터가 저장되는 컨트롤러.
  14. 제1항에 있어서, 상기 맵 써치 엔진은,
    상기 제1 및 제2 메모리 버퍼에 저장된 정보에 따라,
    상기 디스크립터들이 상기 서브 큐에만 저장된 것으로 판단되면 상기 서브 큐에서 상기 선형 써치(linear search) 방식으로 상기 디스크립터를 써치하고,
    상기 디스크립터들이 상기 메인 큐에만 저장된 것으로 판단되면 상기 메인 큐에서 상기 이진 써치(binary search) 방식으로 상기 디스크립터를 써치하고,
    상기 디스크립터들이 상기 서브 큐 및 상기 메인 큐에 저장된 것으로 판단되면 상기 서브 큐 및 상기 메인 큐에서 상기 디스크립터를 동시에 써치하고,
    상기 디스크립터들이 상기 서브 큐 및 상기 메인 큐에 상기 디스크립터가 저장되지 않은 것으로 판단되면 상기 디스크립터 관리부에 대기중인 상기 디스크립터들 중에서 상기 디스크립터를 써치하도록 구성되는 컨트롤러.
  15. 제14항에 있어서,
    상기 서브 큐 및 상기 메인 큐에서 상기 디스크립터를 동시에 써치하는 경우,
    상기 맵 써치 엔진은,
    상기 서브 큐에서는 상기 선형 써치(linear search) 방식으로 상기 디스크립터를 써치하고,
    상기 메인 큐에서는 상기 이진 써치(binary search) 방식으로 상기 디스크립터를 써치하도록 구성되는 컨트롤러.
  16. 물리 어드레스들이 각각 설정된 메모리 블록들을 포함하는 메모리 장치; 및
    상기 물리 어드레스를 사용하여 상기 메모리 장치와 통신하고, 논리 어드레스를 사용하여 호스트와 통신하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는,
    상기 논리 어드레스들과 상기 물리 어드레스들을 각각 맵핑하여 디스크립터들을 생성하고,
    상기 디스크립터들을 저장하는 맵 캐시를 포함하고,
    상기 맵 캐시에 저장되는 상기 디스크립터들을 선형 구조(linear structure) 및 이진 트리 구조(binary tree structure)로 관리하고,
    상기 호스트로부터 상기 논리 어드레스에 대한 리드 요청을 수신받으면, 상기 맵 캐시의 상태에 따라, 선형 써치(linear search) 방식 또는 이진 써치(binary search) 방식을 선택적으로 수행하거나, 상기 선형 써치 방식 및 상기 이진 써치 방식을 동시에 수행하여 상기 논리 어드레스에 대응되는 디스크립터를 써치하도록 구성되는 메모리 시스템.
  17. 제16항에 있어서, 상기 맵 캐시는,
    상기 디스크립터들을 상기 선형 구조로 저장하도록 구성된 서브 큐;
    상기 디스크립터들을 상기 이진 트리 구조로 저장하도록 구성된 메인 큐; 및
    상기 서브 큐와 상기 메인 큐에 상기 디스크립터들이 저장된 상태에 대한 상태 정보를 저장하도록 구성된 상태 버퍼를 포함하는 메모리 시스템.
  18. 제16항에 있어서, 상기 컨트롤러는,
    상기 디스크립터들을 생성하고, 상기 맵 캐시를 관리하도록 구성된 디스크립터 관리부; 및
    상기 선형 써치 방식 또는 상기 이진 써치 방식, 또는 상기 선형 써치 방식 및 상기 이진 써치 방식을 혼용하여 상기 논리 어드레스에 대응되는 상기 디스크립터를 상기 맵 캐시에서 써치하도록 구성된 맵 써치 엔진을 포함하는 메모리 시스템.
  19. 제18항에 있어서, 상기 디스크립터 관리부는,
    상기 논리 어드레스들 및 상기 물리 어드레스들을 각각 포함하는 상기 디스크립터들을 순차적으로 생성하도록 구성된 디스크립터 생성부; 및
    상기 디스크립터 생성부에서 생성된 상기 디스크립터들을 출력하기 위하여, 상기 디스크립터들을 순차적으로 큐잉(queueing)하도록 구성된 임시 버퍼를 포함하는 메모리 시스템.
  20. 제18항에 있어서, 상기 맵 써치 엔진은,
    상기 맵 캐시에 저장된 상기 디스크립터들이 상기 선형 구조 및 상기 이진 트리 구조로 저장된 것으로 판단되면, 상기 선형 써치 방식 및 상기 이진 써치 방식을 동시에 수행하여 상기 디스크립터를 써치하고.
    상기 맵 캐시에 저장된 상기 디스크립터들이 상기 선형 구조 또는 상기 이진 트리 구조로 저장된 것으로 판단되면, 상기 디스크립터들이 저장된 구조에 따라 상기 선형 써치 방식 또는 상기 이진 써치 방식을 선택적으로 사용하여 상기 디스크립터를 써치하도록 구성되는 메모리 시스템.
KR1020200120336A 2020-09-18 2020-09-18 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템 KR20220037638A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200120336A KR20220037638A (ko) 2020-09-18 2020-09-18 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템
US17/205,398 US11954041B2 (en) 2020-09-18 2021-03-18 Controller including map cache and memory system including controller
CN202110415706.4A CN114201108B (zh) 2020-09-18 2021-04-19 包括映射高速缓存的控制器以及包括控制器的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200120336A KR20220037638A (ko) 2020-09-18 2020-09-18 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20220037638A true KR20220037638A (ko) 2022-03-25

Family

ID=80645776

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200120336A KR20220037638A (ko) 2020-09-18 2020-09-18 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11954041B2 (ko)
KR (1) KR20220037638A (ko)
CN (1) CN114201108B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379367B2 (en) * 2020-11-19 2022-07-05 Micron Technology, Inc. Enhancement for activation and deactivation of memory address regions

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296008B2 (en) * 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US20070061540A1 (en) * 2005-06-06 2007-03-15 Jim Rafert Data storage system using segmentable virtual volumes
KR101699779B1 (ko) 2010-10-14 2017-01-26 삼성전자주식회사 플래시 메모리의 색인 방법
CN102651009B (zh) * 2011-02-28 2014-09-24 国际商业机器公司 一种存储系统中检索数据的方法和设备
KR102308777B1 (ko) * 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
KR20170044782A (ko) 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10853233B2 (en) * 2016-10-18 2020-12-01 Toshiba Memory Corporation Reconstruction of address mapping in a host of a storage system
US10409728B2 (en) * 2017-05-09 2019-09-10 Futurewei Technologies, Inc. File access predication using counter based eviction policies at the file and page level
US10289557B2 (en) 2017-08-28 2019-05-14 Western Digital Technologies, Inc. Storage system and method for fast lookup in a table-caching database
US11086524B1 (en) * 2018-06-27 2021-08-10 Datadirect Networks, Inc. System and method for non-volatile memory based optimized, versioned, log-structured metadata storage with efficient data retrieval
KR20200074464A (ko) 2018-12-17 2020-06-25 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
WO2020174428A2 (en) * 2019-02-26 2020-09-03 Marvell Asia Pte, Ltd. Cache management of logical-physical translation metadata

Also Published As

Publication number Publication date
US11954041B2 (en) 2024-04-09
CN114201108A (zh) 2022-03-18
US20220091993A1 (en) 2022-03-24
CN114201108B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
US11630766B2 (en) Memory system and operating method thereof
CN110083545A (zh) 数据存储装置及其操作方法
US10067873B2 (en) Data storage device and operating method thereof
KR102526608B1 (ko) 전자 장치 및 그것의 동작 방법
US10061695B2 (en) Memory system and operating method thereof
CN109074318B (zh) 用于执行转换层表的自适应主机存储器缓冲区高速缓存的系统和方法
US20150220275A1 (en) Method for operating nonvolatile storage device and method for operating computing device accessing nonvolatile storage device
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US20230418485A1 (en) Host device, storage device, and electronic device
US20210389876A1 (en) Storage System and Method for Enabling Partial Defragmentation
KR102620727B1 (ko) 전자 장치
US11461238B2 (en) Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102634776B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11954041B2 (en) Controller including map cache and memory system including controller
US11520519B2 (en) Storage device and method of operating the same
US20200089421A1 (en) Data storage device, operation method thereof, and storage system including the same
KR20210060867A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102434840B1 (ko) 데이터 저장 장치
KR20200121068A (ko) 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러
US11656786B2 (en) Operation method of storage device
KR20230139233A (ko) 메모리 컨트롤러 및 그것의 동작 방법
KR20220076803A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210055448A (ko) 데이터 저장 장치 및 그 동작 방법
KR20200085515A (ko) 데이터 저장 장치 및 동작 방법, 이를 위한 컨트롤러