KR102343599B1 - 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 - Google Patents

메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 Download PDF

Info

Publication number
KR102343599B1
KR102343599B1 KR1020200181895A KR20200181895A KR102343599B1 KR 102343599 B1 KR102343599 B1 KR 102343599B1 KR 1020200181895 A KR1020200181895 A KR 1020200181895A KR 20200181895 A KR20200181895 A KR 20200181895A KR 102343599 B1 KR102343599 B1 KR 102343599B1
Authority
KR
South Korea
Prior art keywords
memory
write data
buffered
buffering
external memory
Prior art date
Application number
KR1020200181895A
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 KR1020200181895A priority Critical patent/KR102343599B1/ko
Priority to US17/557,513 priority patent/US20220197549A1/en
Application granted granted Critical
Publication of KR102343599B1 publication Critical patent/KR102343599B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0625Power saving in storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0653Monitoring storage devices or systems
    • 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

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스에 관한 것으로, 본 발명의 실시예에 따른 메모리 컨트롤러(100)는 호스트(200)의 쓰기 요청(write request)에 대응하여, 외부 메모리(300)에 쓰기 데이터를 버퍼링(buffering)하고, 버퍼링된 쓰기 데이터를 비휘발성 메모리(400)에 프로그램(program)하는 메모리 컨트롤러(100)에 있어서, 쓰기 데이터가 버퍼링될 수 있는 내장 메모리(10), 상기 내장 메모리(10)에 상기 데이터가 버퍼링될 수 있는 유휴 버퍼 공간의 존부를 확인하는 버퍼 공간 확인부(20), 및 버퍼 공간 확인부(20)에 의해 유휴 버퍼 공간의 존재가 확인된 때에, 내장 메모리(10) 및 외부 메모리(300)에 각각 기 버퍼링된 쓰기 데이터의 총량을 기반으로, 외부 메모리(300)에 우선하여 내장 메모리(10)에 쓰기 데이터를 버퍼링하는 제1 모드 동작, 및 외부 메모리(300)와 내장 메모리(10) 각각에 쓰기 데이터를 중복 버퍼링하는 제2 모드 동작을 선택적으로 수행하는 버퍼링 모드 동작부(30)를 포함한다.

Description

메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스{MEMORY CONTROLLER AND STORAGE DEVICE INCLUDING THE SAME}
본 발명은 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스에 관한 것으로, 보다 상세하게는 외부 메모리에 대한 접근 빈도를 줄이기 위한 쓰기 버퍼링 모드의 동적 전환 기술이 적용된 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스에 관한 것이다.
반도체 메모리는 정보의 기억 메커니즘에 따라 휘발성 메모리(Volatile Memory)와 비휘발성 메모리(Non-volatile Memory)로 구분된다. 휘발성 메모리로는 DRAM, SRAM 등이 있는데, 읽고 쓰는 속도가 빠르지만 전원 공급이 차단되면 기억정보가 소실된다. 한편, 비휘발성 메모리는 전원이 차단되어도 기억정보를 보존할 수 있기 때문에 전원의 공급 여부에 무관하게 보존해야 할 데이터를 저장하는데 사용한다. 이러한 비휘발성 메모리로는 EPROM, EEPROM, FRAM, PRAM, MRAM, 플래시 메모리(Flash Memory) 등이 있는데, 특히 하기 선행기술문헌의 특허문헌에 개시된 바와 같이, 플래시 메모리가 컴퓨터, 스마트폰, 디지털카메라, 보이스 리코더, 캠코더 등과 같은 정보기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다.
이러한 플래시 메모리로 구성된 플래시 스토리지 디바이스(Flash storage device)는 호스트로부터 수신한 쓰기 요청(write request)의 처리 성능을 높이기 위해 메모리 컨트롤러의 외부에 별도로 장착된 외부 메모리를 쓰기 버퍼(write buffer)로 사용한다. 그러나 플래시 메모리와 같은 고대역 메모리(High Bandwidth Memory, HBM)를 스토리지 미디어(storage media)로 사용하는 경우에는 외부 메모리에 성능 병목(bottleneck)이 발생할 수 있다. 호스트의 쓰기 요청 처리 과정에서 발생하는 외부 메모리에 대한 호스트 데이터 트래픽(data traffic)이 스토리지 미디어 대비 매우 많기 때문에 외부 메모리의 대역폭(Bandwidth)이 스토리지 미디어보다 압도적으로 높지 않으면 외부 메모리에 성능 병목이 발생하게 된다. 또한, 외부 메모리에는 쓰기 버퍼링 이외에도 소프트웨어 코드 실행이나 메타 데이터 액세스 등과 같은 다양한 트래픽이 존재하므로, 성능 병목이 발생할 가능성이 높다. 나아가, 외부 메모리에 자주 읽기/쓰기(read/write)를 하는 경우, 입출력 전력으로 인한 전력 소모가 커진다.
이에 종래 플래시 스토리지 디바이스에서의 외부 메모리 성능 병목 및 전력 소모 문제를 해결하기 위한 방안이 절실히 요구되고 있다.
KR 1994-0022295 A
본 발명은 상술한 종래기술의 문제점을 해결하기 위한 것으로, 본 발명의 일 측면은 쓰기 버퍼링(write buffering)을 수행하는 외부 메모리 이외에 내장 메모리를 구비하고, 호스트의 쓰기 부하(write workload)의 강도에 따라 서로 다른 모드로 버퍼(buffer)를 관리할 수 있는 메모리 컨트롤러를 제공하는 데 있다.
본 발명의 실시예에 따른 메모리 컨트롤러는 호스트의 쓰기 요청(write request)에 대응하여, 외부 메모리에 쓰기 데이터를 버퍼링(buffering)하고, 버퍼링된 상기 쓰기 데이터를 비휘발성 메모리에 프로그램(program)하는 메모리 컨트롤러에 있어서, 상기 쓰기 데이터가 버퍼링될 수 있는 내장 메모리; 상기 내장 메모리에 상기 쓰기 데이터가 버퍼링될 수 있는 유휴 버퍼 공간의 존부를 확인하는 버퍼 공간 확인부; 및 상기 버퍼 공간 확인부에 의해 상기 유휴 버퍼 공간의 존재가 확인된 때에, 상기 내장 메모리 및 상기 외부 메모리에 각각 기 버퍼링된 상기 쓰기 데이터의 총량을 기반으로, 상기 외부 메모리에 우선하여 상기 내장 메모리에 상기 쓰기 데이터를 버퍼링하는 제1 모드 동작, 및 상기 외부 메모리와 상기 내장 메모리 각각에 상기 쓰기 데이터를 중복 버퍼링하는 제2 모드 동작을 선택적으로 수행하는 버퍼링 모드 동작부;를 포함한다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 버퍼링 모드 동작부는, 상기 버퍼 공간 확인부에 의해 상기 유휴 버퍼 공간의 부존재가 확인된 때에, 상기 내장 메모리로의 버퍼링을 생략하고 상기 외부 메모리에만 상기 쓰기 데이터를 버퍼링하는 동작을 수행할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 내장 메모리 및 상기 외부 메모리에 각각 기 버퍼링된 상기 쓰기 데이터의 총량을 산출하는 버퍼 강도 측정부;를 더 포함할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 버퍼 강도 측정부는, 기 수행된 상기 제2 모드 동작 하에서 상기 내장 메모리 및 상기 외부 메모리에 중복되어 기 버퍼링된 상기 쓰기 데이터 중 어느 하나를 제외하고, 기 버퍼링된 상기 데이터의 총량을 산출할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 버퍼링 모드 동작부는, 소정의 주기당 기 버퍼링된 상기 쓰기 데이터의 총량이, 기 설정된 임계값 이하일 때에 상기 제1 모드 동작을 수행하고, 상기 임계값을 초과할 때에 상기 제2 모드 동작을 수행할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 임계값은, 소정의 주기당 상기 내장 메모리의 최대 버퍼링 가능한 용량의 2배 이하일 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 내장 메모리 및 상기 외부 메모리에 버퍼링된 상기 쓰기 데이터가 상기 비휘발성 메모리에 프로그램되도록 플러시(flush) 동작을 수행하는 프로세서;를 더 포함할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 컨트롤러에 있어서, 상기 프로세서는, 상기 제2 모드 동작에 의해 상기 내장 메모리에 중복 버퍼링된 상기 쓰기 데이터를, 상기 비휘발성 메모리에 전송하고, 전송된 상기 쓰기 데이터가 점유했던 상기 내장 메모리의 버퍼 공간을 점유 해제하며, 전송된 상기 쓰기 데이터의 프로그램이 실패된 경우에, 상기 외부 메모리에 중복 버퍼링된 상기 쓰기 데이터를, 상기 비휘발성 메모리에 전송할 수 있다.
한편, 본 발명의 실시예에 따른 스토리지 디바이스는 전술한 메모리 컨트롤러; 호스트의 쓰기 요청(write request)에 대응하여, 쓰기 데이터가 버퍼링(buffering)될 수 있는 외부 메모리; 및 버퍼링된 상기 쓰기 데이터가 프로그램되는 비휘발성 메모리;를 포함한다.
또한, 본 발명의 실시예에 따른 스토리지 디바이스에 있어서, 상기 비휘발성 메모리는 플래시 메모리일 수 있다.
본 발명의 특징 및 이점들은 첨부도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다.
이에 앞서 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이고 사전적인 의미로 해석되어서는 아니되며, 발명자가 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다.
본 발명에 따르면, 쓰기 버퍼링(write buffering)을 수행하는 외부 메모리 이외에 버퍼 공간을 가지는 내장 메모리를 구비하고, 호스트의 쓰기 부하(write workload)의 강도에 따라, 서로 다른 버퍼링 모드의 동적 전환을 통해 외부 메모리 및 내장 메모리의 버퍼(buffer)를 관리함으로써, 외부 메모리에 대한 접근 빈도를 최소화하여 외부 메모리의 성능 병목 및 과도한 전력 소모를 방지할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 컨트롤러를 개략적으로 도시한 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러의 제1 모드 및 제2 모드 동작을 설명하기 위한 블록도이다.
도 3은 도 1에 도시된 메모리 컨트롤러의 제1 모드 동작을 설명하기 위한 블록도이다.
도 4는 도 1에 도시된 메모리 컨트롤러의 제2 모드 동작을 설명하기 위한 블록도이다.
도 5는 본 발명의 실시예에 따른 메모리 컨트롤러의 제1 모드 동작을 설명하기 위한 순서도이다.
도 6은 본 발명의 실시예에 따른 메모리 컨트롤러의 제2 모드 동작을 설명하기 위한 순서도이다.
도 7은 본 발명의 실시예에 따른 스토리지 디바이스를 개략적으로 도시한 블록도이다.
도 8은 본 발명의 실시예에 따른 스토리지 디바이스를 SSD(Solid State Drive)에 적용한 예를 도시한 블록도이다.
본 발명의 목적, 특정한 장점들 및 신규한 특징들은 첨부된 도면들과 연관되어지는 이하의 상세한 설명과 바람직한 실시예들로부터 더욱 명백해질 것이다. 본 명세서에서 각 도면의 구성요소들에 참조번호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다. 또한, "제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위해 사용되는 것으로, 구성요소가 상기 용어들에 의해 제한되는 것은 아니다. 이하, 본 발명을 설명함에 있어서, 본 발명의 요지를 불필요하게 흐릴 수 있는 관련된 공지 기술에 대한 상세한 설명은 생략한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시형태를 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 메모리 컨트롤러를 개략적으로 도시한 블록도이고, 도 2는 도 1에 도시된 메모리 컨트롤러의 제1 모드 및 제2 모드 동작을 설명하기 위한 블록도이며, 도 3은 도 1에 도시된 메모리 컨트롤러의 제1 모드 동작을 설명하기 위한 블록도이고, 도 4는 도 1에 도시된 메모리 컨트롤러의 제2 모드 동작을 설명하기 위한 블록도이다.
도 1 내지 도 4에 도시된 바와 같이, 본 발명의 실시예에 따른 메모리 컨트롤러(100)는 호스트(200)의 쓰기 요청(write request)에 대응하여, 외부 메모리(300)에 쓰기 데이터를 버퍼링(buffering)하고, 버퍼링된 쓰기 데이터를 비휘발성 메모리(400)에 프로그램(program)하는 메모리 컨트롤러에 있어서, 쓰기 데이터가 버퍼링될 수 있는 내장 메모리(10), 내장 메모리(10)에 쓰기 데이터가 버퍼링될 수 있는 유휴 버퍼 공간의 존부를 확인하는 버퍼 공간 확인부(20), 및 버퍼 공간 확인부(20)에 의해 유휴 버퍼 공간의 존재가 확인된 때에, 내장 메모리(10) 및 외부 메모리(300)에 각각 기 버퍼링된 쓰기 데이터의 총량을 기반으로, 외부 메모리(300)에 우선하여 내장 메모리(10)에 쓰기 데이터를 버퍼링하는 제1 모드 동작, 및 외부 메모리(300)와 내장 메모리(10) 각각에 쓰기 데이터를 중복 버퍼링하는 제2 모드 동작을 선택적으로 수행하는 버퍼링 모드 동작부(30)를 포함한다.
본 발명은 적어도 하나 이상의 비휘발성 메모리를 제어하는 메모리 컨트롤러에 관한 것이다. 비휘발성 메모리는 본 발명에 따른 메모리 컨트롤러에 의해 제어되고, 전원 공급이 차단되어도 정보 데이터를 보존할 수 있는 스토리지 미디어(storage media)로서, 메모리 컨트롤러(100)의 명령에 대응하여 읽기(read), 프로그램(program) 등과 같은 동작들을 수행한다. 이러한 비휘발성 메모리의 일례로는 EPROM, EEPROM, FRAM, PRAM, MRAM, 플래시 메모리(Flash Memory) 등을 들 수 있다. 비휘발성 메모리가 미디어로 채용된 스토리지 디바이스의 경우에 호스트의 읽기/쓰기(read/write) 요청에 대한 처리 성능을 높이기 위하여 휘발성 외부 메모리를 버퍼(buffer)로 사용한다. 그러나 호스트의 쓰기 명령 처리 과정에서 외부 메모리에 대한 호스트 데이터 및 각종 메타 데이터 트래픽(data traffic)이 스토리지 미디어에 대한 호스트 데이터 트래픽 대비 매우 많기 때문에 외부 메모리에 성능 병목이 발생할 수 있다. 또한, 외부 메모리에 자주 읽기/쓰기(read/write)를 하는 경우, 입출력 전력으로 인한 전력 소모가 과도하게 발생하는 문제가 있는바, 이에 대한 해결방안으로서 본 발명이 안출되었다.
구체적으로, 본 발명의 실시예에 따른 메모리 컨트롤러(100)는, 내장 메모리(10), 버퍼 공간 확인부(20), 및 버퍼링 모드 동작부(30)를 포함한다.
또한, 호스트(200)와의 인터페이스를 제공하는 호스트 인터페이스(60)를 더 포함할 수 있다. 호스트 인터페이스(60)는 하나 또는 그보다 많은 채널들 또는 포트들(도시되지 않음)을 통해 호스트(200)와 연결될 수 있다. 예를 들면, 호스트 인터페이스(60)는 PATA 버스(parallel AT attachment bus), SATA 버스(serial AT attachment), PCIe 버스(peripheral component interconnect express) 중 어느 하나 또는 이들 모두를 통해 호스트(200)와 연결될 수 있다. 또는, SCSI, USB 등을 통해 외부와 연결될 수도 있다. 이러한 호스트 인터페이스(60)를 통해 호스트(200)로부터 쓰기 요청(write request) 및/또는 읽기 요청(read request)을 수신하고, 그 요청에 대응하는 처리가 완료된 경우에 처리 완료 응답(completion)을 호스트(200)로 전달할 수 있다.
본 발명의 실시예에 따른 메모리 컨트롤러(100)는 호스트(200)의 쓰기 요청(write request)에 대응하여, 외부 메모리(300)에 대한 쓰기 버퍼링(write buffering) 및 버퍼 플러시(buffer flush)를 수행한다. 호스트(200)로부터 쓰기 요청을 수신하면, 외부 메모리(300)에 버퍼 공간을 할당하고, 할당된 버퍼 공간에 호스트(200)의 쓰기 데이터를 임시 저장한 후에, 호스트(200)에게 쓰기 컴플리션(write completion)을 전송하는데, 이러한 처리 동작을 쓰기 버퍼링 동작이라고 한다. 또한, 버퍼링된 데이터를 비휘발성 메모리(400)에 프로그램(program)하기 위해서, 프로그램 커맨드를 메모리 채널 컨트롤러(도시되지 않음)로 전송하고, 프로그램 컴플리션(program completion)을 수신하면, 데이터가 저장된 위치를 맵핑 테이블(mapping table)에 기록하고, 할당된 버퍼 공간을 해제한다. 이상의 처리 동작을 버퍼 플러시 동작이라고 한다. 상기 쓰기 버퍼링을 통해 호스트(200)로 빠르게 컴플리션이 가능하므로 쓰기 레이턴시(write latency)가 향상된다. 버퍼 플러시는 백그라운드(background)로 수행되기 때문에 통상의 경우에 호스트(200)가 체감하는 성능에 영향을 미치지는 않지만, 버퍼 플러시가 너무 늦게 되면 외부 메모리(300)에 할당 가능한 공간이 고갈되므로 이후의 호스트(200) 쓰기 커맨드에 대한 레이턴시가 길어질 수 있다.
한편, 호스트(200)의 읽기 요청에 대응해서는, 먼저 읽기 요청된 데이터가 버퍼 공간에 존재하는지 검색한다. 버퍼 내에 데이터가 존재하면, 버퍼에서 호스트(200)로 데이터를 전송하고 컴플리션을 전송한다. 반면, 버퍼 데이터가 존재하지 않으면, 맵핑 테이블을 참조하여 데이터가 위치한 비휘발성 메모리(400) 상의 물리적 주소(physical address)를 얻어 메모리 채널 컨트롤러에 읽기 커맨드를 전송하고, 이에 따라 호스트(200)로 비휘발성 메모리(400)의 데이터 및 컴플리션을 전달한다.
다만, 전술한 바와 같이 외부 메모리(300)를 버퍼로 사용하는 경우에 외부 메모리(300)의 성능 병목 및 전력 소모가 문제되는바, 본 발명에 따른 메모리 컨트롤러(100)는 외부 메모리(300) 이외에 내장 메모리(10)를 구비하고, 호스트(200)의 쓰기 부하(write workload)의 강도에 따라 버퍼 공간 확인부(20) 및 버퍼링 모드 동작부(30)가 연동하여 서로 다른 모드로 버퍼(buffer)를 관리한다.
내장 메모리(10)는 본 발명에 따른 메모리 컨트롤러(100)의 내부에 장착되는 메모리이다. 내장 메모리(10)는 휘발성 램(RAM), 일례로 SRAM 등으로 구현될 수 있다. 또한, 내장 메모리(10)는 하나의 메모리 블록이나, 또는 비휘발성 메모리(400)의 각 영역에 대응하는 복수의 메모리 블록들로 구성되어 내장될 수 있다. 일반적으로 내장 메모리(10)는 외부 메모리(300)에 비해 저장 용량은 작지만 접근 속도가 빠르고 전력 소모가 작다. 이러한 내장 메모리(10)는 쓰기 버퍼로 사용된다. 따라서, 호스트 인터페이스(60)를 통해 쓰기 요청이 수신된 경우에, 기 설정된 조건 하에서, 그 쓰기 요청에 대응하여 비휘발성 메모리(400)에 프로그램될 쓰기 데이터가 내장 메모리(10)에 일시 저장, 즉 버퍼링될 수 있다. 다만, 내장 메모리(10)가 반드시 쓰기 버퍼로만 사용되어야 하는 것은 아니고, 후술하는 프로세서(50)에 의해서 실행되는 소프트웨어 코드나 각종 변수(variable)와 같이 소프트웨어가 처리하는 데이터를 저장할 수 있다. 또한, 저속의 비휘발성 메모리(400)에서 유지되는 자료 구조에 대한 고속 접근을 가능하게 한다. 예를 들어, 맵핑 테이블(mapping table)을 내장 메모리(10) 상에서 관리하며 주기적으로 비휘발성 메모리(400)로 맵핑 테이블을 덤프(dump)할 수 있다. 또한, 비휘발성 메모리(400)가 플래시 메모리인 경우에 소위 플래시 변환 계층(FTL)으로 불리는 소프트웨어를 구동하기 위한 구동 메모리로 사용될 수 있다.
버퍼 공간 확인부(20)는 내장 메모리(10)를 대상으로 쓰기 버퍼링이 가능한지를 확인한다. 내장 메모리(10)는 버퍼 공간을 구비하는데, 수신된 호스트(200)의 쓰기 요청에 대응되는 쓰기 데이터가 버퍼링될 수 있는 유휴 버퍼 공간의 존부를 확인한다. 내장 메모리(10)에 소프트웨어 처리를 위한 데이터 및 기 버퍼링된 쓰기 데이터가 저장되기 때문에, 버퍼 공간 확인부(20)는 쓰기 버퍼링 동작을 수행하기 위해 먼저 내장 메모리(10)에 유휴 버퍼 공간이 존재하는지를 검색한다.
버퍼링 모드 동작부(30)는 수신된 호스트(200)의 쓰기 요청에 대응하여 해당 쓰기 데이터를 버퍼링하는 버퍼링 모드 동작을 선택한다. 버퍼링 모드 동작은 제1 모드 동작과 제2 모드 동작으로 구분되고, 기 설정된 조건에 따라 그 중 어느 하나가 선택된다. 버퍼링 모드 동작에 따라 버퍼링 대상이 되는 쓰기 데이터는 내장 메모리(10) 및 외부 메모리(300) 중 적어도 어느 하나에 버퍼링된다. 버퍼링 모드 동작은 내장 메모리(10) 및 외부 메모리(300)에 각각 기 버퍼링된 쓰기 데이터의 총량을 기반으로 선택되는데, 이에 대해서는 후술한다.
구체적으로, 제1 모드 동작 및 제2 모드 동작에서, 버퍼 공간 확인부(20)에 의해 내장 메모리(10)에 유휴 버퍼 공간이 부존재하는 것으로 확인되면, 내장 메모리(10)로의 버퍼링을 생략하고 외부 메모리(300)에만 해당 쓰기 데이터가 버퍼링될 수 있다(도 2 참조). 여기서, 본 발명에 따른 메모리 컨트롤러(100)는 외부 메모리(300)에 버퍼 공간을 할당하고, 할당된 버퍼 공간에 해당 쓰기 데이터를 임시 저장한 후, 호스트(200)에게 쓰기 컴플리션(write completion)을 전송할 수 있다. 또한, 버퍼링된 데이터를 비휘발성 메모리(400)에 프로그램(program)하기 위해서, 메모리 채널 컨트롤러(도시되지 않음)를 통해 버퍼링된 데이터를 전송하고, 프로그램이 완료되면, 할당되었던 버퍼 공간을 해제할 수 있다.
도 3을 참고로, 제1 모드 동작에서는, 내장 메모리(10) 내 유휴 버퍼 공간의 존재가 버퍼 공간 확인부(20)에 의해 확인될 때에, 해당 쓰기 데이터가 외부 메모리(300)보다 우선하여 내장 메모리(10)에 버퍼링된다. 이때, 내장 메모리(10)에 버퍼 공간을 할당하고, 해당 쓰기 데이터를 버퍼링한다. 또한, 플러시 동작의 수행에 의해 버퍼링된 데이터가 비휘발성 메모리(400)에 프로그램되면, 그 데이터가 점유했던 버퍼 공간을 점유 해제한다. 이에 따르면, 내장 메모리(10)에 유휴 버퍼 공간이 충분한 경우, 외부 메모리(300)에 대한 접근 없이 쓰기 데이터를 버퍼링할 수 있다.
도 4를 참고로, 제2 모드 동작 하에서, 내장 메모리(10)에 유휴 버퍼 공간의 존재가 버퍼 공간 확인부(20)에 의해 확인될 때에, 해당 쓰기 데이터는 내장 메모리(10)와 외부 메모리(300)에 중복되어 버퍼링된다. 즉, 쓰기 데이터가 내장 메모리(10) 및 외부 메모리(300) 각각에 임시로 저장된다. 한편, 중복 버퍼링되는 쓰기 데이터가 비휘발성 메모리(400)에 프로그램되도록 플러시 동작이 수행될 때, 내장 메모리(10)에 버퍼링된 쓰기 데이터가 비휘발성 메모리(400)로 전송되고, 전송된 쓰기 데이터가 점유했던 내장 메모리(10)의 버퍼 공간은 점유 해제될 수 있다. 즉, 내장 메모리(10)에서 전송된 쓰기 데이터의 프로그램 성공 여부와 무관하게, 쓰기 데이터를 위해 내장 메모리(10)에 할당되었던 버퍼 공간은 점유 해제된다. 여기서, 내장 메모리(10)에서 전송된 쓰기 데이터의 프로그램이 성공되면, 외부 메모리(300)에 중복 버퍼링된 쓰기 데이터가 삭제되고 그 버퍼 공간도 점유 해제될 수 있다. 반면, 내장 메모리(10)에서 전송된 쓰기 데이터의 프로그램이 실패되는 경우에는, 외부 메모리(300)에 중복 버퍼링된 쓰기 데이터를 전송하여 프로그램 동작을 재수행하고, 프로그램이 성공되면 외부 메모리(300)에 할당되었던 버퍼 공간이 점유 해제될 수 있다. 이에 따르면, 프로그램이 완료될 때까지 기다리지 않고 내장 메모리(10)의 버퍼 공간을 조기에 해제하므로 대부분의 경우에 유휴 버퍼 공간을 충분히 확보할 수 있다. 또한, 통상 프로그램이 실패하는 경우는 매우 드물기 때문에 플러시 동작은 대부분 내장 메모리(10)에서 수행된다. 따라서, 외부 메모리(300)만을 버퍼로 사용하는 경우에 비해, 외부 메모리(300)에 대한 접근 횟수를 대략 절반으로 줄일 수 있다.
내장 메모리(10) 및 외부 메모리(300)에 버퍼링된 쓰기 데이터가 비휘발성 메모리(400)에 프로그램되도록 수행되는 플러시 동작은 프로세서(50)에 의해 처리될 수 있다. 따라서, 제1 모드 동작 하에서, 유휴 버퍼 공간이 존재했던 내장 메모리(10)에 버퍼링된 쓰기 데이터, 또는 내장 메모리(10)에 유휴 버퍼 공간이 부존재하여 외부 메모리(300)에 버퍼링된 쓰기 데이터는, 프로세서(50)에 의해 비휘발성 메모리(400)로 전송되고 프로그램된다. 또한, 제2 모드 동작 하에서, 유휴 버퍼 공간이 존재했던 내장 메모리(10)와 외부 메모리(300) 각각에 버퍼링된 쓰기 데이터, 또는 내장 메모리(10)에 유휴 버퍼 공간이 부존재하여 외부 메모리(300)에 버퍼링된 쓰기 데이터도, 프로세서(50)에 의해 비휘발성 메모리(400)로 전송되고 프로그램된다.
프로세서(50)는 호스트(200)로부터 수신된 호스트(200) 요청을 처리할 수 있도록, 마이크로 컨트롤 유닛(MCU), 중앙처리장치(CPU) 등으로 구현될 수 있다. 프로세서(50)는 소프트웨어를 구동하여, 내부의 기능 블록들 및 비휘발성 메모리(400)를 제어할 수 있다. 여기서, 구동되는 소프트웨어는 내장 메모리(10)에 저장될 수 있고, 소프트웨어의 구동에 필요한 데이터도 여기에 저장될 수 있다. 다만, 상기 소프트웨어 및 구동에 필요한 데이터가 반드시 내장 메모리(10)에 저장되어야 하는 것은 아니다.
한편, 본 발명의 실시예에 따른 메모리 컨트롤러(100)는 버퍼 강도 측정부(40)를 더 포함할 수 있다. 버퍼 강도 측정부(40)는 이전에 기 버퍼링된 쓰기 데이터의 총량을 산출한다. 여기서 산출된 기 버퍼링된 쓰기 데이터의 총량을 기반으로, 버퍼링 모드 동작부(30)는 버퍼링할 쓰기 데이터에 대해 제1 모드 동작 및 제2 모드 동작 중 어느 하나를 선택하여 버퍼링 동작을 수행한다.
전술한 바와 같이, 본 발명에 따른 메모리 컨트롤러(100)는 내장 메모리(10) 및 외부 메모리(300)를 버퍼로 사용하기 때문에, 쓰기 버퍼링 동작이 수행되면 내장 메모리(10) 및 외부 메모리(300) 중 적어도 어느 하나에 쓰기 데이터가 버퍼링된다. 따라서, 버퍼 강도 측정부(40)는 내장 메모리(10) 및 외부 메모리(300) 각각에 기 버퍼링된 쓰기 데이터의 총량을 산출한다. 이때, 제2 모드 동작이 기 수행된 경우, 쓰기 데이터가 내장 메모리(10) 및 외부 메모리(300)에 중복 버퍼링되므로, 중복 버퍼링된 쓰기 데이터 중 어느 하나를 제외하고 기 버퍼링된 쓰기 데이터의 총량을 산출된다.
버퍼링 모드 동작부(30)는 호스트(200)의 쓰기 부하 강도(write workload)에 따라, 그 강도가 약하면 제1 모드 동작으로, 그 강도가 강하면 제2 모드 동작으로 버퍼링 모드를 동적으로 변환한다. 즉, 호스트(200)의 쓰기 부하 강도를 지속적으로 감시하고, 고강도 및 저강도로 구분하여, 제1 모드 동작 및 제2 모드 동작 중 어느 하나를 선택 유지하다가, 그 쓰기 부하 강도가 변화하면 강도에 따라 다른 모드 동작으로 동적 전환한다.
여기서, 호스트(200)의 쓰기 부하 강도는 내장 메모리(10) 및 외부 메모리(300)에 기 버퍼링된 쓰기 데이터의 총량에 기반한다. 일례로, 소정의 주기(period) 당 기 버퍼링된 쓰기 데이터의 총량, 즉 평균 버퍼링량을 산출하고, 그 평균 버퍼링량과 기 설정된 임계값을 비교하여, 임계값 이하일 때에 제1 모드 동작을 수행하고, 임계값을 초과할 때에 제2 모드 동작을 수행할 수 있다. 여기서, 주기는, 예를 들어 1분으로 설정할 수 있지만, 반드시 1분에 한정되는 것은 아니다.
한편, 임계값은 소정의 주기당 내장 메모리(10)의 최대 버퍼링 가능한 용량의 2배 이하로 정할 수 있는데, 그 근거는 다음과 같다. 전술한 바와 같이, 제2 모드 동작에서는 오직 외부 메모리(300)를 버퍼로 사용하는 경우에 비해 외부 메모리(300)에의 접근 빈도를 약 절반으로 줄일 수 있다. 제1 모드 동작의 경우, 기 버퍼링된 쓰기 데이터 총량이 내장 메모리(10)의 쓰기 버퍼 용량(이하 'K'라 함, K > 0) 이하이면, 외부 메모리(300)에 접근하지 않으나, 기 버퍼링된 쓰기 데이터 총량이 K를 초과하는 K+M(M > 0)이면, 전체 K+M 중 M에 해당하는 데이터에 대해서는 외부 메모리(300)에 접근하게 된다. 따라서, 제1 모드 동작에서 외부 메모리(300)에 접근 비율인 M/(K+M)과, 제2 모드 동작에서의 외부 메모리(300)에 대한 접근 비율인 1/2를 비교하여 고강도와 저강도를 구분하게 되며, 상기 두 비율이 같아지는 경우는 M=K일 때로써, 데이터 총량 K+M = 2K가 될 때이다. 이에 따라 임계값이 2K 이하가 될 수 있다. 다만, 임계값이 반드시 이에 한정되어야 하는 것은 아니다.
여기서, 버퍼 공간 확인부(20), 버퍼링 모드 동작부(30), 및 버퍼 강도 측정부(40)는 하드웨어 또는 소프트웨어로 구현될 수 있다. 즉, 메모리 컨트롤러(100)의 내부에 위치한 디지털 또는 아날로그 회로 형태로 구현되거나, 별도의 칩 또는 모듈로 구현되어 메모리 컨트롤러(100)에 연결될 수 있으며, SRAM과 같은 내장 메모리(10)나 플로피 디스크, 컴팩트 디스크, USB 등과 같은 외부 메모리(300)에 소프트웨어를 저장하고 실행하는 방식으로 구현될 수 있다. 또한, 사용자에 의해 프로그램될 수 있는 형태로 구현될 수도 있다. 나아가, 프로세서(50)에 통합될 수도 있다.
종합적으로, 본 발명에 따른 메모리 컨트롤러(100)에 따르면, 쓰기 버퍼링을 수행하는 외부 메모리(300) 이외에 버퍼 공간을 가지는 내장 메모리(10)를 구비하고, 호스트(200)의 쓰기 부하의 강도에 따라, 서로 다른 버퍼링 모드의 동적 전환을 통해 외부 메모리(300) 및 내장 메모리(10)의 버퍼를 관리함으로써, 외부 메모리(300)에 대한 접근 빈도를 최소화하여 외부 메모리(300)의 성능 병목 및 과도한 전력 소모를 방지할 수 있다.
한편, 호스트 인터페이스(60)가 호스트(200)로부터 읽기 요청(read request)을 수신한 경우에, 본 발명에 따른 메모리 컨트롤러(100)는 1차적으로 내장 메모리(10)에 그 읽기 요청에 대응되는 읽기 데이터가 존재하는지 검색하고, 읽기 데이터가 존재하면 호스트(200)로 그 읽기 데이터를 전송할 수 있다. 만약, 내장 메모리(10)에 읽기 데이터가 존재하지 않으면, 2차적으로 외부 메모리(300)를 검색하여, 외부 메모리(300)에 존재하는 읽기 데이터를 호스트(200)로 전달하고, 외부 메모리(300)에도 읽기 데이터가 존재하지 않으면 비휘발성 메모리(400)로부터 읽기 데이터를 호스트(200)로 전달할 수 있다. 다만, 내장 메모리(10)와 외부 메모리(300)에 대한 버퍼 검사 순서가 반드시 이에 한정되어야 하는 것은 아니고, 외부 메모리(300)를 먼저 검사하고 다음에 내장 메모리(10)를 검사해도 무방하다. 단, 내장 메모리(10)와 외부 메모리(300) 모두에 데이터가 존재하는 경우에는, 내장 메모리(10)에서 데이터를 전송하는 것이 이득이므로, 내장 메모리(10)부터 검사하는 것이 바람직하다.
이하에서는 제1 모드 동작과 제2 모드 동작을 구분하여 본 발명에 따른 메모리 컨트롤러의 동작 방식을 보다 자세하게 설명한다.
도 5는 본 발명의 실시예에 따른 메모리 컨트롤러의 제1 모드 동작을 설명하기 위한 순서도이다. 도 5를 참고로, 제1 모드 동작 하에서, 메모리 컨트롤러가 쓰기 요청을 수신한 경우, 내장 메모리(IntM)의 쓰기 버퍼가 풀(full) 상태인지, 즉 유휴 버퍼 공간이 존재하는지 검사한다. 풀 상태가 아니면, 버퍼 영역을 할당하고 쓰기 요청에 대응되는 해당 쓰기 데이터를 내장 메모리(IntM)에 전달한다. 다음에, 해당 쓰기 데이터의 논리 블록 주소(LBA, Logical Block Address)를 내장 메모리(IntM) 쓰기 버퍼 LBA 리스트에 삽입하고, 처리 완료 응답(completion)을 호스트에 전달한다. 그리고 나서, 쓰기 데이터를 내장 메모리(IntM)의 쓰기 버퍼에서 스토리지 미디어(NVM)로 전달하여, 스토리지 미디어에 기입(프로그램)한다. 내장 메모리(IntM)에서 전달된 쓰기 데이터가 스토리지 미디어에 기입(프로그램)되는 경우, LBA를 물리 주소로 변환하는 맵핑(LBA-to-physical address) 정보 업데이트를 수행하고, 내장 메모리(IntM) 쓰기 버퍼 LBA 리스트에서 해당 LBA를 삭제한다. 한편, 내장 메모리(IntM)에서 전달된 쓰기 데이터가 프로그램되지 못하는 경우에는, 프로그램 동작을 재실행한다.
반면, 내장 메모리(IntM)의 쓰기 버퍼가 풀(full) 상태인 경우에는, 외부 메모리(ExtM)에 해당 쓰기 데이터를 전달하고, 상기 동작을 동일하게 수행한다.
도 6은 본 발명의 실시예에 따른 메모리 컨트롤러의 제2 모드 동작을 설명하기 위한 순서도이다. 도 6을 참고로, 제2 모드 동작 하에서, 메모리 컨트롤러가 쓰기 요청을 수신한 경우, 내장 메모리(IntM)의 쓰기 버퍼가 풀(full) 상태인지 검사한다. 내장 메모리(IntM)가 풀 상태가 아니면, 내장 메모리(IntM) 및 외부 메모리(ExtM) 각각에 버퍼 영역을 할당하고, 쓰기 요청에 대응되는 해당 쓰기 데이터를 내장 메모리(IntM) 및 외부 메모리(ExtM)에 전달한다. 다음에, 해당 쓰기 데이터의 논리 블록 주소(LBA, Logical Block Address)를 내장 메모리(IntM) 및 외부 메모리(ExtM) 쓰기 버퍼 LBA 리스트에 삽입하고, 처리 완료 응답(completion)을 호스트에 전달한다. 그리고 나서, 내장 메모리(IntM)의 쓰기 버퍼에서 쓰기 데이터를 스토리지 미디어(NVM)로 전송하여, 스토리지 미디어에 기입(프로그램)한다. 이때, 기입이 완료될 때까지 기다리지 않고, 내장 메모리(IntM) 쓰기 버퍼 LBA 리스트에서 해당 LBA를 삭제한다. 내장 메모리(IntM)에서 전달된 쓰기 데이터가 스토리지 미디어에 기입(프로그램)되는 경우, LBA를 물리 주소로 변환하는 맵핑(LBA-to-physical address) 정보 업데이트를 수행하고, 외부 메모리(ExtM) 쓰기 버퍼 LBA 리스트에서 해당 LBA를 삭제한다. 한편, 내장 메모리(IntM)에서 전달된 쓰기 데이터가 프로그램되지 못하는 경우에는, 외부 메모리(ExtM)의 쓰기 버퍼에서 쓰기 데이터를 스토리지 미디어(NVM)로 전송하여, 프로그램 동작을 재실행하고, 프로그램이 성공적으로 완료되면, LBA를 물리 주소로 변환하는 맵핑(LBA-to-physical address) 정보 업데이트를 수행한 후, 외부 메모리(ExtM) 쓰기 버퍼 LBA 리스트에서 해당 LBA를 삭제한다.
반면, 내장 메모리(IntM)의 쓰기 버퍼가 풀(full) 상태인 경우에는, 외부 메모리(ExtM)에 해당 쓰기 데이터를 전달하고, 해당 쓰기 데이터의 논리 블록 주소(LBA, Logical Block Address)를 외부 메모리(ExtM) 쓰기 버퍼 LBA 리스트에 삽입한 후, 처리 완료 응답(completion)을 호스트에 전달한다. 다음, 쓰기 데이터를 외부 메모리(ExtM)의 쓰기 버퍼에서 스토리지 미디어(NVM)로 전달하여, 스토리지 미디어에 기입(프로그램)한다. 외부 메모리(ExtM)에서 전달된 쓰기 데이터가 스토리지 미디어에 기입(프로그램)되는 경우, LBA를 물리 주소로 변환하는 맵핑(LBA-to-physical address) 정보 업데이트를 수행하고, 외부 메모리(ExtM) 쓰기 버퍼 LBA 리스트에서 해당 LBA를 삭제한다. 한편, 외부 메모리(ExtM)에서 전달된 쓰기 데이터가 프로그램되지 못하는 경우에는, 프로그램 동작을 재실행한다.
본 발명에 따른 메모리 컨트롤러는 스토리지 디바이스에 적용될 수 있는데, 이하에서 이에 대해 설명한다.
도 7은 본 발명의 실시예에 따른 스토리지 디바이스를 개략적으로 도시한 블록도이고, 도 8은 본 발명의 실시예에 따른 스토리지 디바이스를 SSD(Solid State Drive)에 적용한 예를 도시한 블록도이다.
도 7에 도시된 바와 같이, 본 발명의 실시예에 따른 스토리지 디바이스(1000)는 메모리 컨트롤러(100), 호스트(200)의 쓰기 요청(write request)에 대응하여, 쓰기 데이터가 버퍼링(buffering)될 수 있는 외부 메모리(300), 및 버퍼링된 쓰기 데이터가 프로그램되는 비휘발성 메모리(400)를 포함한다.
여기서, 메모리 컨트롤러(100), 비휘발성 메모리(400), 및 외부 메모리(300)에 관한 사항은 전술한 바와 동일하므로, 이에 대한 구체적인 설명은 생략한다.
스토리지 디바이스(1000)는 메모리 카드나 착탈 가능한 이동식 저장 장치를 포함할 수 있다. 스토리지 디바이스(1000)는 호스트(200)와 연결되어 사용되고, 호스트 인터페이스를 통해 호스트(200)와 데이터를 주고받는다. 이때, 스토리지 디바이스(1000)는 호스트(200)로부터 전원을 공급받아 내부 동작을 수행할 수 있다.
또한, 도 8을 참고로, 본 발명에 따른 스토리지 디바이스(1000)는 솔리드 스테이트 드라이브(Solid State Drive, SSD)일 수 있다.
SSD는 호스트(200)와 연결되기 때문에, 호스트(200)는 SSD에 데이터를 쓰거나 SSD에 저장된 데이터를 읽을 수 있다. SSD는 호스트 인터페이스를 통해 호스트(200)와 신호를 교환하고 전원 커넥터를 통해 전원을 공급받을 수 있다. SSD는 다수의 비휘발성 메모리(400), 및 SSD 컨트롤러를 포함할 수 있는데, 여기서 비휘발성 메모리(400)는 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있고, 복수의 비휘발성 메모리(400)가 복수의 채널을 통해 SSD 컨트롤러와 연결될 수 있다. 이때, 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리(400)가 연결될 수 있고, 하나의 채널에 연결되는 비휘발성 메모리(400)는 동일한 데이터 버스에 연결될 수 있다.
한편, 본 발명에 따른 메모리 컨트롤러(100)는 SSD 컨트롤러로서 제공되어, 호스트 인터페이스를 통해 호스트(200)와 신호를 주고받는다. 여기서, 신호를 통해 커맨드, 어드레스, 데이터 등이 전달될 수 있고, 호스트(200)의 커맨드에 따라 해당 비휘발성 메모리(400)에 데이터를 기입하거나 해당 비휘발성 메모리(400)로부터 데이터를 독출해낸다.
이상 본 발명을 구체적인 실시예를 통하여 상세히 설명하였으나, 이는 본 발명을 구체적으로 설명하기 위한 것으로, 본 발명은 이에 한정되지 않으며, 본 발명의 기술적 사상 내에서 당 분야의 통상의 지식을 가진 자에 의해 그 변형이나 개량이 가능함이 명백하다.
본 발명의 단순한 변형 내지 변경은 모두 본 발명의 영역에 속한 것으로 본 발명의 구체적인 보호 범위는 첨부된 특허청구범위에 의하여 명확해질 것이다.
10: 내장 메모리 20: 버퍼 공간 확인부
30: 버퍼링 모드 동작부 40: 버퍼 강도 측정부
50: 프로세서 60: 호스트 인터페이스
100: 메모리 컨트롤러 200: 호스트
300: 외부 메모리 400: 비휘발성 메모리
1000: 스토리지 디바이스

Claims (10)

  1. 호스트의 쓰기 요청(write request)에 대응하여, 외부 메모리에 쓰기 데이터를 버퍼링(buffering)하고, 버퍼링된 상기 쓰기 데이터를 비휘발성 메모리에 프로그램(program)하는 메모리 컨트롤러에 있어서,
    상기 쓰기 데이터가 버퍼링될 수 있는 내장 메모리;
    상기 내장 메모리에 상기 쓰기 데이터가 버퍼링될 수 있는 유휴 버퍼 공간의 존부를 확인하는 버퍼 공간 확인부; 및
    상기 버퍼 공간 확인부에 의해 상기 유휴 버퍼 공간의 존재가 확인된 때에, 상기 내장 메모리 및 상기 외부 메모리에 각각 기 버퍼링된 상기 쓰기 데이터의 총량을 기반으로, 상기 외부 메모리에 우선하여 상기 내장 메모리에 상기 쓰기 데이터를 버퍼링하는 제1 모드 동작, 및 상기 외부 메모리와 상기 내장 메모리 각각에 상기 쓰기 데이터를 중복 버퍼링하는 제2 모드 동작을 선택적으로 수행하는 버퍼링 모드 동작부;를 포함하고,
    상기 버퍼링 모드 동작부는,
    소정의 주기당, 상기 내장 메모리 및 상기 외부 메모리에 기 버퍼링된 상기 쓰기 데이터의 총량이, 기 설정된 임계값 이하일 때에 상기 제1 모드 동작을 수행하고, 상기 임계값을 초과할 때에 상기 제2 모드 동작을 수행하며,
    상기 버퍼 공간 확인부에 의해 상기 유휴 버퍼 공간의 부존재가 확인된 때에, 상기 내장 메모리로의 버퍼링을 생략하고 상기 외부 메모리에만 상기 쓰기 데이터를 버퍼링하는 동작을 수행하는 메모리 컨트롤러.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 내장 메모리 및 상기 외부 메모리에 각각 기 버퍼링된 상기 쓰기 데이터의 총량을 산출하는 버퍼 강도 측정부;를 더 포함하는 메모리 컨트롤러.
  4. 청구항 3에 있어서,
    상기 버퍼 강도 측정부는,
    기 수행된 상기 제2 모드 동작 하에서 상기 내장 메모리 및 상기 외부 메모리에 중복되어 기 버퍼링된 상기 쓰기 데이터 중 어느 하나를 제외하고, 기 버퍼링된 상기 데이터의 총량을 산출하는 메모리 컨트롤러.
  5. 삭제
  6. 청구항 1에 있어서,
    상기 임계값은, 소정의 주기당 상기 내장 메모리의 최대 버퍼링 가능한 용량의 2배 이하인 메모리 컨트롤러.
  7. 청구항 1에 있어서,
    상기 내장 메모리 및 상기 외부 메모리에 버퍼링된 상기 쓰기 데이터가 상기 비휘발성 메모리에 프로그램되도록 플러시(flush) 동작을 수행하는 프로세서;를 더 포함하는 메모리 컨트롤러.
  8. 청구항 7에 있어서,
    상기 프로세서는,
    상기 제2 모드 동작에 의해 상기 내장 메모리에 중복 버퍼링된 상기 쓰기 데이터를, 상기 비휘발성 메모리에 전송하고, 전송된 상기 쓰기 데이터가 점유했던 상기 내장 메모리의 버퍼 공간을 점유 해제하며,
    전송된 상기 쓰기 데이터의 프로그램이 실패된 경우에, 상기 외부 메모리에 중복 버퍼링된 상기 쓰기 데이터를, 상기 비휘발성 메모리에 전송하는 메모리 컨트롤러.
  9. 청구항 1, 3, 4, 및 6 내지 8 중 어느 한 항에 따른 메모리 컨트롤러;
    호스트의 쓰기 요청(write request)에 대응하여, 쓰기 데이터가 버퍼링(buffering)될 수 있는 외부 메모리; 및
    버퍼링된 상기 쓰기 데이터가 프로그램되는 비휘발성 메모리;를 포함하는 스토리지 디바이스.
  10. 청구항 9에 있어서,
    상기 비휘발성 메모리는 플래시 메모리인 스토리지 디바이스.
KR1020200181895A 2020-12-23 2020-12-23 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 KR102343599B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200181895A KR102343599B1 (ko) 2020-12-23 2020-12-23 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US17/557,513 US20220197549A1 (en) 2020-12-23 2021-12-21 Memory controller and storage device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200181895A KR102343599B1 (ko) 2020-12-23 2020-12-23 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스

Publications (1)

Publication Number Publication Date
KR102343599B1 true KR102343599B1 (ko) 2021-12-27

Family

ID=79177014

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200181895A KR102343599B1 (ko) 2020-12-23 2020-12-23 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스

Country Status (2)

Country Link
US (1) US20220197549A1 (ko)
KR (1) KR102343599B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940022295A (ko) 1993-03-20 1994-10-20 가나이 쯔또무 플래시메모리를 포함하는 마이크로컴퓨터
KR101574207B1 (ko) * 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200055310A (ko) * 2018-11-13 2020-05-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4810210B2 (ja) * 2005-12-06 2011-11-09 日本電気株式会社 ストレージシステム、マスタ側ストレージ装置、リモート側ストレージ装置、データコピー方法、データコピープログラム
US8001354B2 (en) * 2007-04-27 2011-08-16 International Business Machines Corporation Implementing dynamic physical memory reallocation
US8103822B2 (en) * 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20190095107A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Data classification for placement within storage devices
US10969996B1 (en) * 2019-02-06 2021-04-06 Marvell Israel (M.I.S.L) Ltd. Extendable hardware queue structure and method of operation thereof
US11726704B2 (en) * 2020-03-31 2023-08-15 Kioxia Corporation Buffer optimization for solid-state drives

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940022295A (ko) 1993-03-20 1994-10-20 가나이 쯔또무 플래시메모리를 포함하는 마이크로컴퓨터
KR101574207B1 (ko) * 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200055310A (ko) * 2018-11-13 2020-05-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템

Also Published As

Publication number Publication date
US20220197549A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
CN113377283B (zh) 具有分区命名空间的存储器系统及其操作方法
US9183136B2 (en) Storage control apparatus and storage control method
US9128618B2 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
US9122611B2 (en) Method for giving read commands and reading data, and controller and storage system using the same
KR100794312B1 (ko) 명령어 자동 처리 유니트를 포함한 메모리 컨트롤러 및그를 포함한 메모리 시스템
US8677051B2 (en) Memory system, control method thereof, and information processing apparatus
US20130254454A1 (en) Memory system and bank interleaving method
US20230333774A1 (en) Buffer optimization for solid-state drives
US20130151775A1 (en) Information Processing Apparatus and Driver
KR20090019593A (ko) 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
US11086772B2 (en) Memory system performing garbage collection operation and operating method of memory system
US20150046634A1 (en) Memory system and information processing device
US20110258372A1 (en) Memory device, host device, and memory system
KR20130112210A (ko) 메모리 시스템 및 그것의 페이지 교체 방법
TWI698749B (zh) 資料儲存裝置與資料處理方法
JP2011070365A (ja) メモリシステム
CN107239225B (zh) 存储器管理方法、存储器储存装置及存储器控制电路单元
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9990280B2 (en) Methods for reading data from a storage unit of a flash memory and apparatuses using the same
CN111026325B (zh) 闪存控制器、闪存控制器的控制方法及相关的电子装置
CN111813703A (zh) 数据储存装置及逻辑至物理地址映射表的更新方法
EP3772682A1 (en) Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory
KR102343599B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11954350B2 (en) Storage device and method of operating the same
KR102343600B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스

Legal Events

Date Code Title Description
GRNT Written decision to grant