KR20120105294A - 불휘발성 메모리를 제어하는 메모리 컨트롤러 - Google Patents

불휘발성 메모리를 제어하는 메모리 컨트롤러 Download PDF

Info

Publication number
KR20120105294A
KR20120105294A KR1020110023027A KR20110023027A KR20120105294A KR 20120105294 A KR20120105294 A KR 20120105294A KR 1020110023027 A KR1020110023027 A KR 1020110023027A KR 20110023027 A KR20110023027 A KR 20110023027A KR 20120105294 A KR20120105294 A KR 20120105294A
Authority
KR
South Korea
Prior art keywords
address
host
hot
logical block
processing unit
Prior art date
Application number
KR1020110023027A
Other languages
English (en)
Other versions
KR101811297B1 (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 삼성전자주식회사
Priority to KR1020110023027A priority Critical patent/KR101811297B1/ko
Priority to US13/415,209 priority patent/US9176863B2/en
Publication of KR20120105294A publication Critical patent/KR20120105294A/ko
Application granted granted Critical
Publication of KR101811297B1 publication Critical patent/KR101811297B1/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
    • 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
    • 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
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/7202Allocation control and policies

Abstract

본 발명은 불휘발성 메모리를 제어하는 메모리 컨트롤러에 관한 것이다. 본 발명의 실시 예에 따른 메모리 컨트롤러는 입력 어드레스 테이블 및 핫 어드레스 테이블을 저장하는 버퍼 유닛, 그리고 호스트로부터의 어드레스가 입력 어드레스 테이블에 저장된 어드레스들 중 하나와 일치하는지 판별하고, 판별 결과에 따라 호스트로부터의 어드레스를 핫 어드레스 테이블에 저장하는 프로세싱 유닛을 포함한다.

Description

불휘발성 메모리를 제어하는 메모리 컨트롤러{MEMORY CONTROLLER CONTROLLING A NONVOLATILE MEMORY}
본 발명은 메모리 시스템에 관한 것으로, 구체적으로 불휘발성 메모리를 제어하는 메모리 컨트롤러에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
본 발명의 목적은 호스트로부터 수신되는 어드레스의 유형을 판별하는 메모리 컨트롤러를 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 입력 어드레스 테이블 및 제 1 핫 어드레스 테이블을 저장하는 버퍼 유닛; 및 호스트로부터의 어드레스가 상기 입력 어드레스 테이블에 저장된 어드레스들 중 하나와 일치하는지 판별하고, 상기 판별 결과에 따라 상기 호스트로부터의 어드레스를 상기 제 1 핫 어드레스 테이블에 저장하는 프로세싱 유닛을 포함한다. 이때, 상기 프로세싱 유닛은 선입선출(First-In First-Out, FIFO) 방식에 따라 상기 호스트로부터의 어드레스를 상기 입력 어드레스 테이블에 저장한다. 상기 호스트로부터의 어드레스는 쓰기 동작 시에 수신된다.
실시 예로서, 상기 프로세싱 유닛은 선입 선출 방식에 따라 상기 제 1 핫 어드레스 테이블에 상기 호스트로부터의 어드레스를 저장한다.
실시 예로서, 상기 프로세싱 유닛은 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들에 따라 상기 호스트로부터의 어드레스를 핫 또는 콜드 어드레스로 결정함으로써 상기 호스트로부터의 어드레스의 유형을 결정한다.
실시 예로서, 상기 불휘발성 메모리는 제 1 및 제 2 영역들로 구분되고, 상기 프로세싱 유닛은 상기 호스트로부터의 어드레스가 핫 또는 콜드 어드레스인지에 따라 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 제 1 및 제 2 영역들에 선택적으로 저장되도록 상기 불휘발성 메모리를 제어할 수 있다.
실시 예로서, 상기 불휘발성 메모리는 제 1 및 제 2 영역들로 구분되고, 상기 프로세싱 유닛은 상기 호스트로부터의 어드레스가 핫 또는 콜드 어드레스인지에 따라 제 1 및 제 2 영역들 중 하나에 대응하는 물리 블록 어드레스(Physical Block Address)를 발생할 수 있다. 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터는 상기 물리 블록 어드레스에 따라 제 1 또는 제 2 영역에 저장될 것이다.
실시 예로서, 상기 버퍼 유닛은 제 2 핫 어드레스 테이블을 더 저장하고, 상기 프로세싱 유닛은 상기 호스트로부터의 어드레스가 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 하나와 일치할 때 상기 호스트로부터의 어드레스를 상기 제 2 핫 어드레스 테이블에 저장할 수 있다.
실시 예로서, 상기 프로세싱 유닛은 상기 호스트로부터의 어드레스가 상기 입력 어드레스 테이블에 저장된 어드레스들 중 하나와 일치될 때, 상기 호스트로부터의 어드레스가 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 하나와 일치하는지 판별할 것이다.
실시 예로서, 상기 프로세싱 유닛은 선입 선출 방식에 따라 상기 제 2 핫 어드레스 테이블에 상기 호스트로부터의 어드레스를 저장할 수 있다.
실시 예로서, 상기 불휘발성 메모리는 제 1 및 제 2 영역들로 구분되고, 상기 프로세싱 유닛은 상기 제 2 핫 어드레스 테이블에 저장된 어드레스들에 따라 상기 호스트로부터의 어드레스를 핫 또는 콜드 어드레스로 결정하고, 상기 결정 결과에 따라 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 제 1 및 제 2 영역들에 선택적으로 저장되도록 상기 불휘발성 메모리를 제어할 수 있다.
실시 예로서, 상기 프로세싱 유닛은 상기 제 1 핫 어드레스 테이블 및 상기 제 2 핫 어드레스 테이블에 따라 상기 호스트로부터의 어드레스의 유형을 결정할 수 있다.
실시 예로서, 상기 프로세싱 유닛은, 상기 호스트로부터의 어드레스가 상기 제 2 핫 어드레스 테이블에 저장된 어드레스들 중 적어도 하나와 일치할 때 상기 호스트로부터의 어드레스를 제 1 핫 어드레스로 결정함으로써 상기 유형을 결정하고, 상기 호스트로부터의 어드레스가 상기 제 2 핫 어드레스 테이블에 저장된 어드레스들과 일치하지 않고, 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 적어도 하나와 일치할 때 상기 호스트로부터의 어드레스를 제 2 핫 어드레스로 결정함으로써 상기 유형을 결정하고, 상기 호스트로부터의 어드레스가 상기 제 2 핫 어드레스 테이블에 저장된 어드레스들과 일치하지 않고, 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 적어도 하나와 일치하지 않을 때 상기 호스트로부터의 어드레스를 콜드 어드레스로 결정함으로써 상기 유형을 결정할 수 있다.
실시 예로서, 상기 불휘발성 메모리는 제 1 내지 제 3 영역들로 구분되고, 상기 프로세싱 유닛은 상기 결정 결과에 따라 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 제 1 내지 제 3 영역들에 선택적으로 저장되도록 상기 불휘발성 메모리를 제어할 수 있다.
본 발명의 다른 실시 예에 따른 메모리 컨트롤러는 상기 호스트로부터 수신되는 어드레스들을 복수의 어드레스 그룹들로 구별하고, 상기 복수의 어드레스 그룹들에 각각 대응하는 카운트 값들을 포함하는 카운트 테이블을 저장하는 버퍼 유닛; 및 상기 호스트로부터의 어드레스를 포함하는 어드레스 그룹을 상기 카운트 테이블에서 검색하고, 상기 검색된 어드레스 그룹에 대응하는 카운트 값이 증가되도록 상기 버퍼 유닛을 제어하는 프로세싱 유닛을 포함한다. 이때, 상기 카운트 값들에 따라 상기 호스트로부터의 어드레스의 유형이 판별될 것이다.
실시 예로서, 상기 프로세싱 유닛은 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 불휘발성 메모리에 상기 판별된 유형에 따라서 저장되도록 상기 불휘발성 메모리를 제어할 것이다.
실시 예로서, 상기 프로세싱 유닛은 상기 검색된 어드레스 그룹에 대응하는 카운트 값을 임계 카운트 값과 비교함으로써 상기 호스트로부터의 어드레스의 유형을 판별할 수 있다.
실시 예로서, 상기 버퍼 유닛은 전체(total) 카운트 값을 더 저장하되, 상기 전체 카운트 값은 상기 각 쓰기 동작마다 증가되고, 상기 임계 카운트 값은 상기 전체 카운트 값에 따라 결정될 수 있다.
실시 예로서, 상기 임계 카운트 값은 상기 전체 카운트 값이 증가함에 따라 함께 증가할 수 있다.
실시 예로서, 상기 버퍼 유닛은 전체 카운트 값을 더 저장하되, 상기 전체 카운트 값은 상기 각 쓰기 동작마다 증가되고, 상기 임계 카운트 값은 고정된 값이다. 이때, 상기 프로세싱 유닛은 상기 전체 카운트 값이 특정한 카운트 값에 도달할 때 상기 카운트 테이블을 초기화할 수 있다.
본 발명의 실시 예에 따르면, 핫 어드레스 테이블에 기반하여 호스트로부터 수신되는 논리 블록 어드레스의 유형을 판별하는 메모리 컨트롤러가 제공된다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 컨트롤러에서 입력 어드레스 테이블 및 핫 어드레스 테이블이 관리되는 방법을 보여주는 순서도이다.
도 3은 제 1 내지 제 16 쓰기 동작들 시에 메모리 컨트롤러에 각각 수신되는 논리 블록 어드레스들을 예시적으로 보여주는 테이블이다.
도 4 및 도 5는 제 6 내지 제 16 쓰기 동작들 시에 업데이트 되는 입력 어드레스 테이블 및 핫 어드레스 테이블을 보여주는 도면이다.
도 6은 도 1의 호스트로부터 수신된 논리 블록 어드레스가 핫 어드레스 또는 콜드 어드레스인지 판별하는 방법을 보여주는 순서도이다.
도 7은 도 6의 판별 결과에 따라 호스트로부터 수신된 쓰기 데이터가 불휘발성 메모리에 저장되는 방법을 보여주기 위한 도면이다.
도 8은 본 발명의 제 2 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 9는 도 8의 메모리 컨트롤러에서 입력 어드레스 테이블, 그리고 제 1 및 제 2 핫 어드레스 테이블들이 관리되는 방법을 보여주는 순서도이다.
도 10은 제 17 내지 제 23 쓰기 동작들 시 각각 메모리 컨트롤러에 수신되는 논리 블록 어드레스들을 예시적으로 보여주는 테이블이다.
도 11은 제 17 내지 제 23 쓰기 동작들 시에 업데이트 되는 제 1 및 제 2 핫 어드레스 테이블들을 보여주는 도면이다.
도 12는 도 8의 호스트로부터의 논리 블록 어드레스의 유형을 판별하는 방법을 보여주는 순서도이다.
도 13은 도 12의 판별 결과에 따라 호스트로부터 수신된 쓰기 데이터가 불휘발성 메모리에 저장되는 방법을 보여주기 위한 도면이다.
도 14는 본 발명의 제 3 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 15는 복수의 어드레스 그룹들로 구분되는 논리 블록 어드레스들의 전체 공간을 보여주는 도면이다.
도 16은 도 14의 카운트 테이블을 예시적으로 보여주는 도면이다.
도 17은 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 18은 도 17를 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 불휘발성 메모리(Nonvolatile Memory, 110) 및 메모리 컨트롤러(120)를 포함한다.
불휘발성 메모리(110)는 메모리 컨트롤러(120)와 연결된다. 예를 들면, 불휘발성 메모리(110)는 하나의 채널을 통해 메모리 컨트롤러(120)와 연결될 수 있다. 불휘발성 메모리(110)는 복수의 메모리 블록들(도 7 참조)을 포함한다. 복수의 메모리 블록들 각각은 복수의 페이지들(미도시)을 포함한다. 복수의 페이지들은 각각 복수의 메모리 셀들(미도시)을 포함할 것이다. 낸드 플래시 메모리의 경우에, 읽기 및 프로그램 동작은 페이지 단위로 수행된다. 소거 동작은 메모리 블록 단위로 수행된다. 다만, 소거가 요구되는 페이지에 무효 표시가 쓰여지고, 무효 표시가 기입된 페이지에 저장된 데이터는 유효하지 않은 데이터로 취급될 수 있다.
쓰기 동작 시에, 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 쓰여질 데이터(이하, 쓰기 데이터) 및 물리 블록 어드레스(Physical Block Address, PBA)를 수신할 것이다. 그리고, 불휘발성 메모리(110)는 수신된 물리 블록 어드레스에 대응하는 페이지에 쓰기 데이터를 프로그램할 것이다. 예시적으로, 선택된 페이지의 메모리 셀들에 특정한 전압이 인가됨으로써 메모리 셀들의 문턱 전압들이 변동될 것이다. 선택된 페이지의 메모리 셀들의 문턱 전압들이 변동된 것은, 선택된 페이지에 데이터가 저장된 것을 의미한다.
메모리 컨트롤러(120)는 호스트(Host)와 불휘발성 메모리(110)를 인터페이싱한다. 메모리 컨트롤러(120)는 호스트로부터 논리 블록 어드레스(Logical Block Address, LBA) 및 쓰기 데이터를 수신할 것이다. 메모리 컨트롤러(120)는 수신된 논리 블록 어드레스(LBA)를 물리 블록 어드레스(PBA)로 변환하고, 변환된 물리 블록 어드레스(PBA)를 쓰기 데이터와 함께 불휘발성 메모리(110)에 제공할 것이다.
메모리 컨트롤러(120)는 버퍼 유닛(121), 프로세싱 유닛(Processing unit, 122), 에러 정정 유닛(Error Correcting Unit, 123), 호스트 인터페이스(Host I/F, 24), 메모리 인터페이스(Memory I/F,125) 및 버스(126)를 포함한다.
버퍼 유닛(121)은 입력 어드레스 테이블(Input Address Table, 151) 및 핫 어드레스 테이블(Hot Address Table, 152)을 저장한다. 입력 어드레스 테이블(151)은 선입 선출(First-In First-Out, FIFO) 방식에 따라 쓰기 동작이 수행될 때마다 수신되는 논리 블록 어드레스(LBA)을 저장한다. 예를 들면, 입력 어드레스 테이블(151)에 소정의 개수의 논리 블록 어드레스들이 저장될 것이다.
핫 어드레스 테이블(152)은 핫 어드레스로 판별된 논리 블록 어드레스들을 저장한다. 핫 어드레스 테이블(152)에 저장된 논리 블록 어드레스들을 기준으로 호스트로부터 수신된 논리 블록 어드레스(LBA)의 유형이 판별될 것이다.
핫 어드레스 테이블(152)에는 선입 선출 방식에 따라 논리 블록 어드레스들이 저장된다. 각 쓰기 동작이 수행될 때 수신되는 논리 블록 어드레스(LBA)는 입력 어드레스 테이블(151)의 논리 블록 어드레스들과 비교된다. 호스트로부터의 논리 블록 어드레스가 입력 어드레스 테이블(151)의 논리 블록 어드레스들 중 적어도 하나와 일치할 때, 호스트로부터의 논리 블록 어드레스(LBA)는 핫 어드레스 테이블(152)에 저장될 것이다.
버퍼 유닛(121)은 SRAM 또는 DRAM과 같은 RAM(Random Access Memory)으로 구성될 수 있다. 버퍼 유닛(121)은 프로세싱 유닛(122)의 동작 메모리, 그리고 불휘발성 메모리(110) 및 호스트 사이의 버퍼 메모리 중 적어도 하나로서 이용된다.
프로세싱 유닛(122)은 메모리 컨트롤러(120)의 제반 동작을 제어한다. 프로세싱 유닛(122)은 불휘발성 메모리(110)의 배경 동작(background operation)을 제어하도록 구성된다. 예를 들면, 프로세싱 유닛(122)은 불휘발성 메모리(110)에서 병합(merge) 및 가비지 컬렉션(garbage collection) 등의 동작들이 수행되도록 불휘발성 메모리(110)를 제어한다.
프로세싱 유닛(122)은 버스(126)를 통해 버퍼 유닛(121), 에러 정정 유닛(123), 호스트 인터페이스(124) 및 메모리 인터페이스(125)에 연결된다.
프로세싱 유닛(122)은 핫 어드레스 테이블(152)을 참조하여 쓰기 동작 시에 호스트로부터 수신되는 논리 블록 어드레스(LBA)의 유형을 결정한다. 즉, 프로세싱 유닛(122)은 호스트로부터의 논리 블록 어드레스(LBA)가 핫 어드레스 테이블(152) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되는지 판별하고, 호스트로부터의 논리 블록 어드레스(LBA)의 유형을 결정한다.
핫 어드레스 테이블(152)이 호스트로부터 수신된 논리 블록 어드레스(LBA)와 일치하는 논리 블록 어드레스를 포함할 때, 호스트로부터 수신된 논리 블록 어드레스(LBA)는 핫 어드레스로 판별될 것이다. 즉, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 핫 데이터(hot data)일 것이다. 이때, 핫 어드레스는 호스트에 의해 비교적 자주 엑세스되는 논리 블록 어드레스를 의미한다. 그리고, 핫 데이터는 비교적 자주 갱신되는 쓰기 데이터를 의미한다.
핫 어드레스 테이블(152)이 호스트로부터 수신된 논리 블록 어드레스(LBA)와 일치하는 논리 블록 어드레스를 포함하지 않을 때, 호스트로부터 수신된 논리 블록 어드레스(LBA)는 콜드 어드레스로 판별될 것이다. 즉, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 콜드 데이터(cold data)일 것이다. 이때, 콜드 어드레스는 호스트에 의해 비교적 자주 엑세스되지 않는 논리 블록 어드레스를 의미한다. 그리고, 콜드 데이터는 비교적 자주 갱신되지 않는 쓰기 데이터를 의미한다.
또한, 프로세싱 유닛(122)은 각 쓰기 동작 시에 호스트로부터 수신되는 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(151) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되는지 판별한다. 일치되는 경우에, 프로세싱 유닛(122)은 논리 블록 어드레스(LBA)를 핫 어드레스 테이블(152)에 저장한다.
또한, 프로세싱 유닛(122)은 각 쓰기 동작 시에 호스트로부터 수신되는 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(151)에 저장한다. 프로세싱 유닛(122)은 선입 선출 방식에 따라 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(151)에 저장한다.
에러 정정 유닛(123)은 에러 정정 코드(Error Correcting Code, ECC)를 이용하여 불휘발성 메모리(110)로부터 읽어진 데이터 중 오류 비트를 검출하고, 정정하도록 구성된다. 오류 비트가 정정된 데이터는 호스트로 전송될 것이다.
호스트 인터페이스(124)는 호스트 및 메모리 컨트롤러(120) 사이의 데이터 교환 프로토콜을 구비한다. 호스트 인터페이스(124)는 호스트로부터 수신된 논리 블록 어드레스(LBA) 및 쓰기 데이터(WD)를, 버스(125)를 통해 프로세싱 유닛(122) 또는 버퍼 유닛(121)에 전송할 것이다.
호스트 인터페이스(124)는 호스트 및 메모리 컨트롤러(120) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 호스트 인터페이스(124)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다. 예시적으로, 호스트 인터페이스(124)는 위에 예시된 프로토콜들이 아닌 사유(proprietary) 인터페이스로 구성됨으로써 호스트와 통신할 수 있다.
메모리 인터페이스(125)는 불휘발성 메모리(110)와 인터페이싱한다. 예를 들면, 메모리 인터페이스(125)는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
버스(126)는 버퍼 유닛(121), 프로세싱 유닛(122), 에러 정정 유닛(123), 호스트 인터페이스(124) 및 메모리 인터페이스(125)를 연결하기 위한 적어도 하나의 채널을 제공한다.
컨트롤러(120) 및 불휘발성 메모리(110)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(120) 및 불휘발성 메모리(110)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(120) 및 불휘발성 메모리(110)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성한다.
컨트롤러(120) 및 불휘발성 메모리 부(110)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(100)가 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(100)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선된다.
다른 예로서, 메모리 시스템(100)는 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP (portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, 메모리 시스템(100)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 메모리 시스템(100)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDI2P), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러(120)는 입력 어드레스 테이블(151) 뿐만 아니라 핫 어드레스 테이블(152)도 포함한다. 메모리 컨트롤러(120)는 입력 어드레스 테이블(151)이 아닌 핫 어드레스 테이블(152)에 따라 호스트로부터의 논리 블록 어드레스(LBA)를 핫 또는 콜드 어드레스로 구분한다. 따라서, 복수의 쓰기 동작들 동안에 수신되는 논리 블록 어드레스들이 고려될 수 있다.
도 2는 도 1의 메모리 컨트롤러(120)에서 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)이 관리되는 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110단계에서, 호스트로부터 메모리 컨트롤러(120)에 논리 블록 어드레스(LBA) 및 쓰기 데이터(WD)가 수신된다.
S120단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(151) 내의 적어도 하나의 논리 블록 어드레스와 일치되는지 판별한다. 판별 결과에 따라, S130단계 및 S140단계가 선택적으로 수행된다.
S130단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 핫 어드레스 테이블(152)에 저장한다. 또한, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(151)에 저장한다.
S140단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(151)에만 저장할 것이다.
도 3은 제 1 내지 제 16 쓰기 동작들(t1~t16) 시에 메모리 컨트롤러(120)에 각각 수신되는 논리 블록 어드레스들을 예시적으로 보여주는 테이블이다. 도 4 및 도 5는 제 6 내지 제 16 쓰기 동작들(t6~t16) 시에 업데이트되는 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)을 보여주는 도면이다. 도 4 및 도 5는 예시적으로 10개의 논리 블록 어드레스들을 각각 저장하는 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)을 도시한다. 그러나, 이는 예시적인 것으로서, 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)은 더 많은 논리 블록 어드레스들을 저장할 것이다.
도 3 내지 도 5를 참조하면, 제 1 내지 제 5 쓰기 동작들(t1~t5) 시에 각각 수신된 논리 블록 어드레스들(L24,L9,L10,L11,L12), 그리고 제 6 쓰기 동작 시에 수신된 논리 블록 어드레스(L13)는 입력 어드레스 테이블(151)에 순차적으로 저장된다.
제 7 쓰기 동작(t7) 시에 논리 블록 어드레스(L24)가 수신된다. 논리 블록 어드레스(L24)는 입력 어드레스 테이블(151) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되는지 판별된다. 입력 어드레스 테이블(151)에 논리 블록 어드레스(L24)가 존재하므로, 수신된 논리 블록 어드레스(L24)는 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)에 저장된다.
제 8 내지 제 10 쓰기 동작들(t8~t10) 시에 각각 수신된 논리 블록 어드레스들(L1,L3,L2)은 입력 어드레스 테이블(151) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되지 않는다. 논리 블록 어드레스들(L1,L3,L2)은 입력 어드레스 테이블(151)에 순차적으로 저장될 것이다.
제 11 내지 제 14 쓰기 동작들(t11~t14) 시에 각각 수신된 논리 블록 어드레스들(L9,L10,L11,L12)은 입력 어드레스 테이블(151) 내의 논리 블록 어드레스들 중 하나와 일치한다. 논리 블록 어드레스들(L9,L10,L11,L12)은 순차적으로 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152)에 각각 저장된다.
제 15 및 제 16 쓰기 동작들(t15,t16) 시에 각각 수신된 논리 블록 어드레스들(L26,L14)은 입력 어드레스 테이블(151) 내의 논리 블록 어드레스들과 일치되지 않는다. 논리 블록 어드레스들(L26,L14)은 입력 어드레스 테이블(151)에만 순차적으로 저장될 것이다.
핫 어드레스 테이블(152)에 저장된 논리 블록 어드레스들(L24,L9,L10,L11,L12)을 기준으로 호스트로부터 수신된 논리 블록 어드레스(LBA)가 핫 어드레스인지 판별될 것이다.
도 6은 도 1의 호스트로부터 수신된 논리 블록 어드레스(LBA)의 유형을 판별하는 방법을 보여주는 순서도이다. 도 7은 도 6의 판별 결과에 따라 쓰기 데이터(WD)가 불휘발성 메모리(110)에 저장되는 방법을 보여주기 위한 도면이다. 예시적으로, 도 7에서는 제 1 및 제 2 영역들(Area1,Area2)로 구분되는 불휘발성 메모리(110)가 도시된다. 도 6을 참조한 설명에 따라 호스트로부터 수신된 논리 블록 어드레스(LBA)의 유형이 판별된 후에, 도 2를 참조한 설명과 같이 입력 어드레스 테이블(151) 및 핫 어드레스 테이블(152) 중 적어도 하나에 논리 블록 어드레스(LBA)가 저장될 것이다.
도 1, 도 6 및 도 7을 참조하면, S210단계에서, 프로세싱 유닛(122)은 호스트로부터 수신된 논리 블록 어드레스(LBA)가 핫 어드레스 테이블 내의 적어도 하나의 논리 블록 어드레스와 일치하는지 판별한다. 판별 결과에 따라, S220단계 또는 S240단계가 수행된다.
S220단계에서, 프로세싱 유닛(122)은 호스트로부터 수신된 논리 블록 어드레스(LBA)를 핫 어드레스로 결정한다. 이때, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 핫 데이터일 것이다. S230단계에서, 쓰기 데이터(WD)는 불휘발성 메모리(110)의 제 1 영역(Area1)에 저장될 것이다.
S240단계에서, 프로세싱 유닛(122)은 호스트로부터 수신된 논리 블록 어드레스(LBA)를 콜드 어드레스로 결정한다. 이때, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 콜드 데이터일 것이다. S250단계에서, 쓰기 데이터(WD)는 불휘발성 메모리(110)의 제 2 영역(Area2)에 저장될 것이다.
즉, 프로세싱 유닛(122)은 핫 어드레스 테이블 내의 논리 블록 어드레스들에 따라 호스트로부터 수신된 논리 블록 어드레스(LBA)의 유형을 결정한다. 그리고, 결정된 유형에 따라 쓰기 데이터(WD)는 불휘발성 메모리(110)에 저장될 것이다.
프로세싱 유닛(122)은 플래시 변환 레이어(Flash Translation layer, FTL) 기능을 수행한다. 즉, 프로세싱 유닛(122)은 호스트로부터 수신된 논리 블록 어드레스(LBA)를 물리 블록 어드레스(PBA)로 변환할 것이다. 그리고, 프로세싱 유닛(122)은 논리 블록 어드레스(LBA)와 물리 블록 어드레스(PBA) 간의 매핑 관계를 저장하는 매핑 테이블을 버퍼 유닛(121)에 저장할 수 있다. 즉, 버퍼 유닛(121)은 매핑 테이블을 더 저장할 수 있다.
프로세싱 유닛(122)은 호스트로부터 수신된 논리 블록 어드레스(LBA)가 핫 어드레스 또는 콜드 어드레스인지에 따라 물리 블록 어드레스(PBA)의 값을 결정할 수 있다. 논리 블록 어드레스(LBA)가 핫 어드레스인 경우에, 프로세싱 유닛(122)은 제 1 영역에 대응하는 물리 블록 어드레스(PBA)를 발생할 것이다. 논리 블록 어드레스(LBA)가 콜드 어드레스인 경우에 프로세싱 유닛(122)는 제 2 영역에 대응하는 물리 블록 어드레스(PBA)를 발생할 것이다. 즉, 제 1 및 제 2 영역들(Area1,Area2)에 각각 핫 데이터 및 콜드 데이터가 저장될 것이다.
쓰기 동작은 페이지 단위로 수행된다. 제 1 영역(Area1)에 포함되는 어느 페이지에 무효 표시가 기입되고, 제 1 영역(Area1)에 포함되는 다른 페이지에 쓰기 데이터가 기입되는 동작은 비교적 자주 발생될 것이다. 제 2 영역(Area2)에 포함되는 어느 페이지에 무효 표시가 기입되고, 제 2 영역(Area2)에 포함되는 다른 페이지에 쓰기 데이터가 기입되는 동작은 비교적 자주 발생되지 않을 것이다.
따라서, 주로 제 1 영역(Area1)에 대한 병합(merge) 또는 가비지 컬렉션(garbage collection) 동작이 요구될 것이다. 제 1 및 제 2 영역들(Area1,Area2)이 구분되지 않고 쓰기 데이터가 저장되는 경우보다, 제 1 및 제 2 영역들(Area1,Area2)에 각각 핫 데이터 및 콜드 데이터가 저장되는 경우에, 요구되는 병합 또는 가비지 컬렉션 동작의 횟수는 감소할 수 있다.
도 8은 본 발명의 제 2 실시 예에 따른 메모리 시스템(200)을 보여주는 블록도이다. 도 8을 참조하면, 불휘발성 메모리(110)는 도 1을 참조하여 설명된 불휘발성 메모리(110)와 마찬가지로 구성된다. 프로세싱 유닛(222) 및 버퍼 유닛(221)을 제외하면 메모리 컨트롤러(220)은 도 1을 참조하여 설명된 메모리 컨트롤러(120)과 마찬가지로 구성된다. 이하, 중복되는 설명은 생략된다.
버퍼 유닛(221)은 입력 어드레스 테이블(251), 제 1 및 제 2 핫 어드레스 테이블들(252,253)을 저장한다. 선입 선출 방식에 따라, 입력 어드레스 테이블(251), 제 1 및 제 2 핫 어드레스 테이블들(252,253)에 각각 논리 블록 어드레스들이 저장될 것이다.
프로세싱 유닛(222)은 쓰기 동작 시에 제 1 및 제 2 핫 어드레스 테이블(252,253)에 따라 호스트로부터 수신된 논리 블록 어드레스(LBA)의 유형을 판별한다. 판별 결과에 따라, 쓰기 데이터(WD)가 저장될 불휘발성 메모리(110)의 영역이 결정될 수 있다.
프로세싱 유닛(222)은 쓰기 동작 시에 호스트로부터 수신된 논리 블록 어드레스(LBA)가 제 1 핫 어드레스 테이블(252) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되는지 판별한다. 일치되는 경우에, 프로세싱 유닛(222)은 논리 블록 어드레스(LBA)를 제 2 핫 어드레스 테이블(252)에 저장한다.
프로세싱 유닛(222)은 쓰기 동작 시에 호스트로부터 수신된 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 적어도 하나와 일치되는지 판별한다. 일치되는 경우에, 프로세싱 유닛(222)은 논리 블록 어드레스(LBA)를 제 1 핫 어드레스 테이블(252)에 저장한다.
또한, 프로세싱 유닛(222)은 각 쓰기 동작 시에 호스트로부터 수신되는 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(251)에 저장할 것이다.
도 8은 예시적으로 2개의 핫 어드레스 테이블들(252,253)을 저장하는 버퍼 유닛(221)을 도시한다. 그러나, 이는 예시적인 것으로서, 버퍼 유닛(221)은 더 많은 핫 어드레스 테이블들을 저장할 수 있다. 이때, 호스트로부터의 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 적어도 하나와 일치될 때, 호스트로부터의 논리 블록 어드레스(LBA)는 핫 어드레스 테이블들 중 최하위 핫 어드레스 테이블에 저장될 것이다. 또한, 프로세싱 유닛(222)은 호스트로부터의 논리 블록 어드레스(LBA)와 일치하는 논리 블록 어드레스를 포함하는 핫 어드레스 테이블을 검출하고, 검출된 핫 어드레스 테이블의 바로 상위 핫 어드레스 테이블에 논리 블록 어드레스(LBA)를 저장할 것이다. 예시적으로, 도 8을 참조한 설명에서, 제 2 핫 어드레스 테이블(253)은 제 1 핫 어드레스 테이블(252)의 상위 핫 어드레스 테이블이다.
도 9는 도 8의 메모리 컨트롤러(120)에서 입력 어드레스 테이블(251), 그리고 제 1 및 제 2 핫 어드레스 테이블들(252,253)이 관리되는 방법을 보여주는 순서도이다. 도 8 및 도 9를 참조하면, S310단계에서, 호스트로부터 논리 블록 어드레스(LBA)가 수신된다.
S320단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(251) 내의 적어도 하나의 논리 블록 어드레스와 일치되는지 판별한다. 입력 어드레스 테이블(251) 내에 수신된 논리 블록 어드레스(LBA)와 일치되는 논리 블록 어드레스가 있는 경우에 S330단계가 수행된다. 입력 어드레스 테이블(251) 내에 수신된 논리 블록 어드레스(LBA)와 일치되는 논리 블록 어드레스가 없는 경우에 S360단계가 수행된다.
S330단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)가 제 1 핫 어드레스 테이블(252) 내의 적어도 하나의 논리 블록 어드레스와 일치되는지 판별한다. 프로세싱 유닛(122)은 논리 블록 어드레스(LBA)와 입력 어드레스 테이블(251)을 비교한 후에, 논리 블록 어드레스(LBA)와 핫 어드레스 테이블(252)을 비교할 것이다. 즉, 입력 어드레스 테이블(251) 및 제 1 핫 어드레스 테이블(252) 모두에 수신된 논리 블록 어드레스(LBA)와 일치하는 논리 블록 어드레스가 존재하는 경우에, S340단계가 수행된다. 그리고, 입력 어드레스 테이블(251)만 수신된 논리 블록 어드레스(LBA)와 일치하는 논리 블록 어드레스를 포함하는 경우에, S350단계가 수행된다.
S340단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(251), 그리고 제 1 및 제 2 핫 어드레스 테이블들(252,253)에 각각 저장한다. S350단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(251) 및 제 1 핫 어드레스 테이블(252)에 각각 저장한다. S360단계에서, 프로세싱 유닛(122)은 수신된 논리 블록 어드레스(LBA)를 입력 어드레스 테이블(251)에 저장한다.
도 10은 제 17 내지 제 23 쓰기 동작들(t17~t23) 시 각각 메모리 컨트롤러(220)에 수신되는 논리 블록 어드레스들을 예시적으로 보여주는 테이블이다. 도 11은 제 17 내지 제 23 쓰기 동작들(t17~t23) 시에 업데이트되는 제 1 및 제 2 핫 어드레스 테이블들(252,253)을 보여주는 도면이다. 도 10 및 도 11의 제 17 내지 제 23 쓰기 동작들(t17~t23)은, 도 3의 제 1 내지 제 16 쓰기 동작들(t1~t16) 이후에 수행되는 쓰기 동작들이다.
도 10 및 도 11을 참조하면, 제 17 내지 제 19 쓰기 동작들(t17~t19) 각각에서, 호스트로부터 수신되는 논리 블록 어드레스들(L1,L3,L2)은 입력 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 하나와 일치한다. 그리고, 제 17 내지 제 19 쓰기 동작들(t17~t19) 각각에서, 논리 블록 어드레스들(L1,L3,L2)은 제 1 핫 어드레스 테이블(252) 내의 논리 블록 어드레스들 중 하나와 일치하지 않는다. 따라서, 제 17 내지 제 19 쓰기 동작들(t17~t19) 각각에서, 논리 블록 어드레스들(L1,L3,L2)은 제 1 핫 어드레스 테이블(252)에 저장된다.
제 20 내지 제 23 쓰기 동작들(t20~t23) 각각에서, 호스트로부터 수신되는 논리 블록 어드레스들(L9,L10,L11,L12)은 입력 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 하나와 일치한다. 또한, 제 20 내지 제 23 쓰기 동작들(t20~t23) 각각에서, 논리 블록 어드레스들(L9,L10,L11,L12)은 제 1 핫 어드레스 테이블(252) 내의 논리 블록 어드레스들 중 하나와 일치한다. 따라서, 제 20 내지 제 23 쓰기 동작들(t20~t23) 각각에서, 논리 블록 어드레스들(L9,L10,L11,L12)은 제 1 및 제 2 핫 어드레스 테이블(252,253)에 저장된다.
도 10 및 도 11을 참조한 설명과 같이, 호스트로부터의 논리 블록 어드레스(LBA)가 입력 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 하나와 일치하는지에 따라, 제 1 핫 어드레스 테이블(252)이 업데이트될 것이다. 호스트로부터의 논리 블록 어드레스(LBA)가 제 1 핫 어드레스 테이블(251) 내의 논리 블록 어드레스들 중 하나와 일치할 때, 제 2 핫 어드레스 테이블(253)이 업데이트될 것이다.
도 12는 도 8의 호스트로부터의 논리 블록 어드레스(LBA)의 유형을 판별하는 방법을 보여주는 순서도이다. 도 13은 도 12의 판별 결과에 따라 호스트로부터 수신된 쓰기 데이터(WD)가 불휘발성 메모리(110)에 저장되는 방법을 보여주기 위한 도면이다. 도 13에서는 제 1 내지 제 3 영역들(Area1~Area3)로 구분되는 불휘발성 메모리(110)가 예시적으로 도시된다.
도 8, 도 12 및 도 13을 참조하면, S410단계에서, 프로세싱 유닛(222)은 호스트로부터의 논리 블록 어드레스(LBA)가 제 2 핫 어드레스 테이블(253) 내의 적어도 하나의 논리 블록 어드레스와 일치하는지 판별한다. 판별 결과에 따라, S420단계 또는 S440단계가 수행된다.
S420단계에서, 논리 블록 어드레스(LBA)가 제 2 핫 어드레스 테이블(253) 내의 적어도 하나의 논리 블록 어드레스와 일치하는 경우에, 프로세싱 유닛(222)은 수신된 논리 블록 어드레스(LBA)를 제 1 핫 어드레스로 결정한다. 이때, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 제 1 핫 데이터일 것이다. S430단계에서, 쓰기 데이터(WD)는 불휘발성 메모리(110)의 제 1 영역에 저장된다.
S440단계에서, 프로세싱 유닛(222)은 호스트로부터 수신된 논리 블록 어드레스(LBA)가 제 1 핫 어드레스 테이블(252) 내의 적어도 하나의 논리 블록 어드레스와 일치하는지 판별한다. 일치하는 논리 블록 어드레스가 존재하는 경우에, S450단계가 수행된다. 일치하는 논리 블록 어드레스가 없는 경우에, S470단계가 수행된다.
S450단계에서, 프로세싱 유닛(222)은 수신된 논리 블록 어드레스(LBA)를 제 2 핫 어드레스로 결정한다. 이때, 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 제 2 핫 데이터일 것이다. 제 2 핫 어드레스는 제 1 핫 어드레스보다 호스트에 의해 자주 엑세스되는 논리 블록 어드레스를 의미할 것이다. 그리고, 제 2 핫 데이터는 제 1 핫 데이터보다 비교적 자주 갱신되는 쓰기 데이터를 의미할 것이다. S460단계에서, 쓰기 데이터(WD)는 불휘발성 메모리(110)의 제 2 영역에 저장될 것이다.
S470단계에서, 프로세싱 유닛(222)은 수신된 논리 블록 어드레스(LBA)를 콜드 어드레스로 결정한다. 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 콜드 데이터일 것이다. S480단계에서, 쓰기 데이터(WD)는 불휘발성 메모리(110)의 제 3 영역(Area3)에 저장될 것이다.
도 12 및 도 13을 참조한 설명에서, 제 1 및 제 2 핫 어드레스 테이블들(252,253)에 따라, 호스트로부터의 논리 블록 어드레스(LBA)는 콜드 어드레스, 제 1 핫 어드레스, 또는 제 2 핫 어드레스로 결정된다. 그러나, 이는 예시적인 설명으로서 본 발명은 여기에 한정되지 않는다. 예시적으로, 제 1 및 제 2 핫 어드레스 테이블들(252,253) 중 적어도 하나에 따라, 호스트로부터의 논리 블록 어드레스(LBA)가 콜드 어드레스 또는 핫 어드레스로 결정될 수 있다. 예를 들면, 제 2 핫 어드레스 테이블(253) 내의 논리 블록 어드레스들에 따라 호스트로부터의 논리 블록 어드레스(LBA)가 콜드 어드레스 또는 핫 어드레스로 결정될 것이다. 이때, 호스트로부터의 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터는 불휘발성 메모리(110)의 제 1 및 제 2 영역들(Area1,Area2, 도 7 참조) 중 하나에 저장될 수 있다.
도 14는 본 발명의 제 3 실시 예에 따른 메모리 시스템(300)을 보여주는 블록도이다. 도 14를 참조하면, 불휘발성 메모리(110)는 도 1을 참조하여 설명된 불휘발성 메모리(110)와 마찬가지로 구성된다. 프로세싱 유닛(322) 및 버퍼 유닛(321)을 제외하면 메모리 컨트롤러(320)는 도 1을 참조하여 설명된 메모리 컨트롤러(120)와 마찬가지로 구성된다. 이하, 중복되는 설명은 생략된다.
버퍼 유닛(351)은 카운트 테이블(351)을 저장한다. 호스트로부터 수신될 수 있는 논리 블록 어드레스들의 전체 공간은 복수의 어드레스 그룹들로 구분될 수 있다. 카운트 테이블(351)은 복수의 어드레스 그룹들 각각에 대응하는 카운트 값들을 저장한다.
쓰기 동작 시에, 프로세싱 유닛(322)은 카운트 테이블(351)에서 호스트로부터의 논리 블록 어드레스(LBA)를 포함하는 어드레스 그룹을 검색한다. 그리고, 프로세싱 유닛(322)은 검색된 어드레스 그룹에 대응하는 카운트 값을 임계 카운트 값을 비교함으로써 논리 블록 어드레스(LBA)의 유형(예를 들면, 핫 어드레스 및 콜드 어드레스)을 판별한다. 판별 결과에 따라, 프로세싱 유닛(322)은 물리 블록 어드레스(PBA)를 발생할 것이다. 논리 블록 어드레스(LBA)와 함께 수신된 쓰기 데이터(WD)는 불휘발성 메모리(110)의 물리 블록 어드레스(PBA)에 대응하는 영역에 저장될 것이다.
도 15는 복수의 어드레스 그룹들(G1~Gm)로 구분되는 논리 블록 어드레스들의 전체 공간을 개념적으로 보여주는 도면이다. 도 15를 참조하면, 호스트로부터 수신될 수 있는 논리 블록 어드레스들의 전체 공간은 제 1 내지 제 n 논리 블록 어드레스들(L1~Ln)로 구성된다. 그리고, 제 1 내지 제 n 논리 블록 어드레스들(L1~Ln)은 제 1 내지 제 m 어드레스 그룹들(G1~Gm)로 구분된다. 바람직하게는, 호스트로부터 수신될 수 있는 논리 블록 어드레스들의 전체 공간을 1 퍼센트 씩 분할함으로써, 논리 블록 어드레스들의 전체 공간이 복수의 어드레스 그룹들로 구분될 수 있다.
도 16은 도 14의 카운트 테이블(351)을 예시적으로 보여주는 도면이다. 도 16을 참조하면, 카운트 테이블(351)은 복수의 어드레스 그룹들(G1~Gm) 각각에 대응하는 카운트 값들(VALUE1~VALUEm)을 저장한다. 또한, 카운트 테이블(351)은 카운트 값들(VALUE1~VALUEm)의 합인 전체 카운트 값(TVAL)을 저장한다.
프로세싱 유닛(322)은 논리 블록 어드레스(LBA)가 수신될 때마다, 논리 블록 어드레스(LBA)를 포함하는 어드레스 그룹의 카운트 값이 증가되도록 버퍼 유닛(321)을 제어할 것이다. 예를 들면, 논리 블록 어드레스(L9)가 수신될 때, 논리 블록 어드레스(L9)를 포함하는 제 1 어드레스 그룹(G1,도 15 참조)의 카운트 값(VALUE1)을 증가시킬 것이다.
각 쓰기 동작 시에, 프로세싱 유닛(322)은 복수의 어드레스 그룹들 중 호스트로부터의 논리 블록 어드레스(LBA)를 포함하는 어드레스 그룹을 검색한다. 검색된 어드레스 그룹에 대응하는 카운트 값이 임계 카운트 값보다 큰 경우에, 프로세싱 유닛(322)은 논리 블록 어드레스(LBA)를 핫 어드레스로 판별할 것이다. 검색된 어드레스 그룹에 대응하는 카운트 값이 특정한 카운트 값보다 작은 경우에, 프로세싱 유닛(322)은 논리 블록 어드레스(LBA)를 콜드 어드레스로 판별할 것이다.
예시적으로, 프로세싱 유닛(322)은 전체 카운트 값(TVAL)에 따라 임계 카운트 값을 결정할 수 있다. 예를 들면, 전체 카운트 값(TVAL)이 증가함에 따라 임계 카운트 값도 함께 증가할 것이다. 예시적으로, 프로세싱 유닛(322)은 전체 카운트 값(TVAL)이 특정한 카운트 값에 도달한 경우에 카운트 테이블(351)을 초기화할 수 있다. 이때, 임계 카운트 값은 고정될 것이다.
도 17은 도 1의 메모리 시스템(100)의 응용 예(400)를 보여주는 블록도이다. 도 17을 참조하면, 메모리 시스템(100)은 불휘발성 메모리 부(410) 및 메모리 컨트롤러(120)를 포함한다. 불휘발성 메모리(410)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 그룹들 각각은 하나의 공통 채널을 통해 메모리 컨트롤러(120)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 메모리 컨트롤러(120)와 통신하는 것으로 도시되어 있다.
불휘발성 메모리 칩들 각각은 불휘발성 메모리(410)와 동일한 구조를 가지며, 동일하게 동작할 수 있다.
메모리 컨트롤러(120)는 도 1을 참조하여 설명된 메모리 컨트롤러(120)와 마찬가지로 동작할 것이다. 즉, 메모리 컨트롤러(120)는 논리 블록 어드레스(LBA)를 변환하여 물리 블록 어드레스를 제공할 것이다. 물리 블록 어드레스는, 핫 어드레스 테이블(152)에 저장된 논리 블록 어드레스들을 참조하여 결정될 것이다. 물리 블록 어드레스에 따라, 불휘발성 메모리 칩들에 각각 쓰기 데이터가 저장될 것이다.
도 17에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록, 메모리 시스템(400)는 변형될 수 있다.
도 18은 도 17를 참조하여 설명된 메모리 시스템(400)을 포함하는 컴퓨팅 시스템(1000)을 보여주는 블록도이다. 도 18을 참조하면, 컴퓨팅 시스템(1000)은 중앙 처리 장치(1100), 램(1200, RAM, Random Access Memory), 사용자 인터페이스(1300), 전원(1400), 시스템 버스(1500), 그리고 메모리 시스템(400)을 포함한다.
메모리 시스템(400)은 시스템 버스(1500)를 통해, 중앙처리장치(1100), 램(1200), 사용자 인터페이스(1300), 그리고 전원(1400)에 전기적으로 연결된다. 사용자 인터페이스(1300)를 통해 제공되거나, 중앙 처리 장치(1100)에 의해서 처리된 데이터는 메모리 시스템(400)에 저장된다.
도 18에서, 불휘발성 메모리(410)는 메모리 컨트롤러(120)를 통해 시스템 버스(1500)에 연결되는 것으로 도시되어 있다. 그러나, 불휘발성 메모리(410)는 시스템 버스(1500)에 직접 연결되도록 구성될 수 있다. 이때, 프로세싱 유닛(122)의 기능은 중앙 처리 장치(1100)에 의해 수행될 것이다. 또한, 버퍼 유닛(121)의 기능은 램(1200)에 의해 수행될 것이다.
도 18에서, 도 17을 참조하여 설명된 메모리 시스템(400)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(400)은 도 1을 참조하여 설명된 메모리 시스템(100)으로 대체될 수 있다.
예시적으로, 컴퓨팅 시스템(1000)은 도 1 및 도 17를 참조하여 설명된 메모리 시스템들(100, 400)을 모두 포함하도록 구성될 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러(120)는 입력 어드레스 테이블(151)이 아닌 핫 어드레스 테이블(152)에 따라 호스트로부터의 논리 블록 어드레스(LBA)를 핫 또는 콜드 어드레스로 구분한다. 따라서, 각 쓰기 동작 시에 수신되는 논리 블록 어드레스(LBA)의 경향을 고려하여 핫 또는 콜드 어드레스를 구분하는 메모리 컨트롤러(120)가 제공된다.
본 발명의 실시 예에 따른 메모리 컨트롤러(120)는 어드레스들 각각에 대응하는 카운트 값들이 아닌, 어드레스 그룹들 각각에 대응하는 카운트 값들을 저장하는 버퍼 유닛(321)을 포함한다. 따라서, 카운트 값들을 저장하기 위한 저장 용량이 감소된 메모리 컨트롤러(120)가 제공된다.
한편, 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
Host: 호스트
110,410: 불휘발성 메모리
120,220,320: 메모리 컨트롤러
121,221,321: 버퍼 유닛
122,222,322: 프로세싱 유닛
123: 에러 정정 유닛
124: 호스트 인터페이스
125: 메모리 인터페이스
351: 카운트 테이블

Claims (10)

  1. 호스트와 불휘발성 메모리를 인터페이싱하는 메모리 컨트롤러에 있어서,
    입력 어드레스 테이블 및 제 1 핫 어드레스 테이블을 저장하는 버퍼 유닛; 및
    상기 호스트로부터의 어드레스가 상기 입력 어드레스 테이블에 저장된 어드레스들 중 하나와 일치하는지 판별하고, 상기 판별 결과에 따라 상기 호스트로부터의 어드레스를 상기 제 1 핫 어드레스 테이블에 저장하는 프로세싱 유닛을 포함하되,
    상기 프로세싱 유닛은
    선입선출(First-In First-Out, FIFO) 방식에 따라 상기 호스트로부터의 어드레스를 상기 입력 어드레스 테이블에 저장하는 메모리 컨트롤러.
  2. 제 1 항에 있어서,
    상기 프로세싱 유닛은
    선입 선출 방식에 따라 상기 제 1 핫 어드레스 테이블에 상기 호스트로부터의 어드레스를 저장하는 메모리 컨트롤러.
  3. 제 1 항에 있어서,
    상기 프로세싱 유닛은
    상기 제 1 핫 어드레스 테이블에 저장된 어드레스들에 따라 상기 호스트로부터의 어드레스를 핫 또는 콜드 어드레스로 결정하는 메모리 컨트롤러.
  4. 제 3 항에 있어서,
    상기 불휘발성 메모리는 제 1 및 제 2 영역들로 구분되고,
    상기 프로세싱 유닛은
    상기 호스트로부터의 어드레스가 핫 또는 콜드 어드레스인지에 따라, 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 제 1 및 제 2 영역들에 선택적으로 저장되도록 상기 불휘발성 메모리를 제어하는 메모리 컨트롤러.
  5. 제 1 항에 있어서,
    상기 버퍼 유닛은
    제 2 핫 어드레스 테이블을 더 저장하고,
    상기 프로세싱 유닛은
    상기 호스트로부터의 어드레스가 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 하나와 일치할 때 상기 호스트로부터의 어드레스를 상기 제 2 핫 어드레스 테이블에 저장하는 메모리 컨트롤러.
  6. 제 5 항에 있어서,
    상기 프로세싱 유닛은
    상기 호스트로부터의 어드레스가 상기 입력 어드레스 테이블에 저장된 어드레스들 중 하나와 일치될 때, 상기 호스트로부터의 어드레스가 상기 제 1 핫 어드레스 테이블에 저장된 어드레스들 중 하나와 일치하는지 판별하는 메모리 컨트롤러.
  7. 제 5 항에 있어서,
    상기 불휘발성 메모리는 제 1 및 제 2 영역들로 구분되고,
    상기 프로세싱 유닛은
    상기 제 2 핫 어드레스 테이블에 저장된 어드레스들에 따라 상기 호스트로부터의 어드레스를 핫 또는 콜드 어드레스로 결정하고, 상기 결정 결과에 따라 상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 제 1 및 제 2 영역들에 선택적으로 저장되도록 상기 불휘발성 메모리를 제어하는 메모리 컨트롤러.
  8. 제 5 항에 있어서,
    상기 프로세싱 유닛은
    상기 제 1 핫 어드레스 테이블 및 상기 제 2 핫 어드레스 테이블에 따라 상기 호스트로부터의 어드레스의 유형을 결정하는 메모리 컨트롤러.
  9. 호스트와 불휘발성 메모리를 인터페이싱하는 메모리 컨트롤러에 있어서,
    상기 호스트로부터 수신되는 어드레스들을 복수의 어드레스 그룹들로 구별하고, 상기 복수의 어드레스 그룹들에 각각 대응하는 카운트 값들을 포함하는 카운트 테이블을 저장하는 버퍼 유닛; 및
    상기 호스트로부터의 어드레스를 포함하는 어드레스 그룹을 상기 카운트 테이블에서 검색하고, 상기 검색된 어드레스 그룹에 대응하는 카운트 값이 증가되도록 상기 버퍼 유닛을 제어하는 프로세싱 유닛을 포함하되,
    상기 카운트 값들에 따라 상기 호스트로부터의 어드레스의 유형이 판별되는 메모리 컨트롤러.
  10. 제 9 항에 있어서,
    상기 프로세싱 유닛은
    상기 호스트로부터의 어드레스와 함께 수신된 쓰기 데이터가 상기 불휘발성 메모리에 상기 판별된 유형에 따라서 저장되도록 상기 불휘발성 메모리를 제어하는 메모리 컨트롤러.
KR1020110023027A 2011-03-15 2011-03-15 불휘발성 메모리를 제어하는 메모리 컨트롤러 KR101811297B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110023027A KR101811297B1 (ko) 2011-03-15 2011-03-15 불휘발성 메모리를 제어하는 메모리 컨트롤러
US13/415,209 US9176863B2 (en) 2011-03-15 2012-03-08 Memory controller controlling a nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110023027A KR101811297B1 (ko) 2011-03-15 2011-03-15 불휘발성 메모리를 제어하는 메모리 컨트롤러

Publications (2)

Publication Number Publication Date
KR20120105294A true KR20120105294A (ko) 2012-09-25
KR101811297B1 KR101811297B1 (ko) 2017-12-27

Family

ID=46829407

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110023027A KR101811297B1 (ko) 2011-03-15 2011-03-15 불휘발성 메모리를 제어하는 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US9176863B2 (ko)
KR (1) KR101811297B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160075166A (ko) * 2014-12-19 2016-06-29 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US9465747B2 (en) 2014-06-03 2016-10-11 SK Hynix Inc. Controller for controlling non-volatile memory and semiconductor device including the same

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130031046A (ko) * 2011-09-20 2013-03-28 삼성전자주식회사 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
TWI489274B (zh) * 2012-09-11 2015-06-21 Etron Technology Inc 能夠提升記憶體效能的方法和相關的記憶體系統
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US9747202B1 (en) * 2013-03-14 2017-08-29 Sandisk Technologies Llc Storage module and method for identifying hot and cold data
US9542278B2 (en) 2013-12-26 2017-01-10 Silicon Motion, Inc. Data storage device and flash memory control method
US9959060B1 (en) * 2014-09-16 2018-05-01 SK Hynix Inc. Data separation during host write with storage allocated based on traffic profiles
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
CN108874298B (zh) * 2017-05-15 2021-08-03 深圳市奇辉电气有限公司 一种数据存储的方法及装置
US10915475B2 (en) * 2017-10-12 2021-02-09 Western Digital Technologies, Inc. Methods and apparatus for variable size logical page management based on hot and cold data
KR102504368B1 (ko) * 2017-12-22 2023-02-24 에스케이하이닉스 주식회사 비휘발성 메모리의 웨어 레벨링 동작을 관리하는 반도체 장치
US20190042460A1 (en) * 2018-02-07 2019-02-07 Intel Corporation Method and apparatus to accelerate shutdown and startup of a solid-state drive
CN109086225B (zh) * 2018-07-23 2021-06-04 广州慧睿思通信息科技有限公司 基于pktdma的fftc输出去除直流载波和输出分段移位的数据处理方法
KR20210083448A (ko) 2019-12-26 2021-07-07 삼성전자주식회사 비지도 학습 기법을 사용하는 스토리지 장치 및 그것의 메모리 관리 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113287A (ja) 1997-06-12 1999-01-06 Hitachi Ltd 記憶装置およびそれに用いられる記憶領域管理方法
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
JP2006031106A (ja) 2004-07-12 2006-02-02 Toshiba Corp メモリカード及びアクセス回数取得方法
KR101257848B1 (ko) 2005-07-13 2013-04-24 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법
KR100818800B1 (ko) 2006-06-27 2008-04-01 삼성전자주식회사 Fifo 장치를 구비하는 데이터 처리장치와 데이터처리방법
US20080172519A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465747B2 (en) 2014-06-03 2016-10-11 SK Hynix Inc. Controller for controlling non-volatile memory and semiconductor device including the same
KR20160075166A (ko) * 2014-12-19 2016-06-29 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법

Also Published As

Publication number Publication date
US20120239862A1 (en) 2012-09-20
US9176863B2 (en) 2015-11-03
KR101811297B1 (ko) 2017-12-27

Similar Documents

Publication Publication Date Title
KR101811297B1 (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
CN106448737B (zh) 读取闪存数据的方法、装置以及固态驱动器
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
US8904095B2 (en) Data storage device and operating method thereof
US9448946B2 (en) Data storage system with stale data mechanism and method of operation thereof
US11249897B2 (en) Data storage device and operating method thereof
US20130166824A1 (en) Block management for nonvolatile memory device
US20150019794A1 (en) Data storage device and operating method thereof
US20170270045A1 (en) Hybrid memory device and operating method thereof
US20170060749A1 (en) Partial Memory Command Fetching
CN107797934B (zh) 处理去分配命令的方法与存储设备
TWI726314B (zh) 資料儲存裝置與資料處理方法
CN106372011B (zh) 用于pcie ssd控制器的高性能主机队列监控器
US11016904B2 (en) Storage device for performing map scheduling and electronic device including the same
US20160378375A1 (en) Memory system and method of operating the same
KR20130081526A (ko) 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US9037781B2 (en) Method for managing buffer memory, memory controllor, and memory storage device
CN114063893A (zh) 数据储存装置与数据处理方法
US20150052290A1 (en) Data storage device and operating method thereof
KR20170033480A (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
US9652172B2 (en) Data storage device performing merging process on groups of memory blocks and operation method thereof
CN110309075B (zh) 存储器控制器以及具有存储器控制器的存储器系统
JP6215631B2 (ja) コンピュータシステム及びそのデータ管理方法
CN112148626A (zh) 压缩数据的存储方法及其存储设备
US10095433B1 (en) Out-of-order data transfer mechanisms for data storage systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right