KR102107723B1 - 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 - Google Patents

메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102107723B1
KR102107723B1 KR1020120139139A KR20120139139A KR102107723B1 KR 102107723 B1 KR102107723 B1 KR 102107723B1 KR 1020120139139 A KR1020120139139 A KR 1020120139139A KR 20120139139 A KR20120139139 A KR 20120139139A KR 102107723 B1 KR102107723 B1 KR 102107723B1
Authority
KR
South Korea
Prior art keywords
user data
logical block
host
block address
memory
Prior art date
Application number
KR1020120139139A
Other languages
English (en)
Other versions
KR20140071135A (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 KR1020120139139A priority Critical patent/KR102107723B1/ko
Priority to US14/095,177 priority patent/US9164677B2/en
Publication of KR20140071135A publication Critical patent/KR20140071135A/ko
Application granted granted Critical
Publication of KR102107723B1 publication Critical patent/KR102107723B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

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

Abstract

본 발명의 일 실시예에 따른 메모리 컨트롤러는 호스트와 통신하기 위한 인터페이스를 제공하는 호스트 인터페이스, 사용자 데이터 및 상기 사용자 데이터에 대한 메타 데이터를 저장하는 버퍼 메모리, 및 상기 버퍼 메모리에 액세스하여 상기 메타 데이터를 확인하고, 상기 메타 데이터의 확인 결과에 따라 상기 호스트로부터 요청된 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공하는 DMA 컨트롤러를 포함하고, 상기 메타 데이터는 상기 버퍼 메모리에 저장된 상기 사용자 데이터의 상태 정보를 포함하고, 상기 DMA 컨트롤러는 상기 호스트로부터 요청된 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공하기 이전에 상기 호스트로부터 요청된 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다.

Description

메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법{MEMORY CONTROLLER AND OPERATING METHOD THEREOF}
본 발명은 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법에 관한 것이다.
반도체 메모리 장치(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) 등이 있다.
반도체 메모리 장치는 메모리 컨트롤러에 의해 제어된다. 메모리 컨트롤러는 호스트 인터페이스를 통해 호스트와 통신한다. 즉, 메모리 컨트롤러는 호스트의 요청에 의해 반도체 메모리 장치에 데이터를 기록하거나 반도체 메모리 장치로부터 데이터를 읽는다. 불휘발성 메모리 장치와 메모리 컨트롤러는 조합되어 데이터 저장 장치로 이용될 수 있다. 호스트의 동작 속도가 빨라지고, 호스트 인터페이스의 대역폭이 향상되면서 컨트롤러의 성능 향상에 대한 요구가 증가하고 있다.
이에, 본 발명의 목적은 향상된 성능을 갖는 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러는 호스트와 통신하기 위한 인터페이스를 제공하는 호스트 인터페이스, 사용자 데이터 및 상기 사용자 데이터에 대한 메타 데이터를 저장하는 버퍼 메모리, 및 상기 버퍼 메모리에 액세스하여 상기 메타 데이터를 확인하고, 상기 메타 데이터의 확인 결과에 따라 상기 호스트로부터 요청된 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공하는 DMA 컨트롤러를 포함하고, 상기 메타 데이터는 상기 버퍼 메모리에 저장된 상기 사용자 데이터의 상태 정보를 포함하고, 상기 DMA 컨트롤러는 상기 호스트로부터 요청된 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공하기 이전에 상기 호스트로부터 요청된 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다.
일 실시예에서, 상기 DMA 컨트롤러는 상기 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공한 이후에 상기 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 상기 호스트 인터페이스에 제공할 수 있다.
일 실시예에서, 상기 DMA 컨트롤러는 상기 메타 데이터의 확인 결과 상기 메타 데이터에 대응하는 사용자 데이터가 유효한 경우 상기 사용자 데이터를 상기 호스트 인터페이스에 제공할 수 있다.
일 실시예에서, 상기 메타 데이터는 상기 사용자 데이터의 유효 정보, CRC 정보 및 ECC 정보를 포함할 수 있다.
일 실시예에서, 상기 버퍼 메모리는 휘발성 메모리일 수 있다.
일 실시예에서, 상기 버퍼 메모리는 제 1 버퍼 메모리 및 제 2 버퍼 메모리를 포함하고, 상기 제 1 버퍼 메모리는DRAM이고, 상기 제 2 버퍼 메모리는 SRAM일 수 있다.
일 실시예에서, 상기 사용자 데이터는 상기 제 1 버퍼 메모리에 저장되고, 상기 메타 데이터는 상기 제 2 버퍼 메모리에 저장될 수 있다.
일 실시예에서, 상기 호스트 인터페이스는 PCIe 인터페이스일 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은 (a) 호스트로부터 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계, (b) 상기 호스트로부터 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계, (c) 상기 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계, (d) 상기 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계, (e) 상기 호스트로 상기 제 1 논리 블록 어드레스에 대응하는 사용자 데이터 전달하는 단계, 및 (f) 상기 호스트로 상기 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 전달하는 단계를 포함한다.
일 실시예에서, 상기 (a) 단계 및 (b) 단계는 동시에 수행될 수 있다.
일 실시예에서, 상기 (b) 단계는 상기 (c) 단계 이후에 수행될 수 있다.
일 실시예에서, (g) 상기 제 1 논리 블록 어드레스에 대응하는 사용자 데이터의 유효성을 판단하는 단계를 포함하고, 상기 (g) 단계는 상기 (c) 단계 이후에 수행될 수 있다.
일 실시예에서, (h) 상기 제 2 논리 블록 어드레스에 대응하는 사용자 데이터의 유효성을 판단하는 단계를 포함하고, 상기 (h) 단계는 상기 (d) 단계 이후에 수행될 수 있다.
일 실시예에서, 상기 (e) 단계 및 (f) 단계는 PCIe 인터페이스를 이용하여 상기 사용자 데이터를 상기 호스트로 전달할 수 있다.
일 실시예에서, 상기 메타 데이터는 상기 사용자 데이터의 유효 정보, CRC 정보 및 ECC 정보를 포함할 수 있다.
본 발명의 실시예들에 따르면, 호스트로부터의 데이터 요청에 대한 컨트롤러의 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지의 일 실시예를 보여주는 블록도이다.
도 3은 도 1의 스토리지의 다른 실시예를 보여주는 블록도이다.
도 4 및 도 5는 도 2에 도시된 스토리지의 메모리 컨트롤러의 DMA 컨트롤러의 동작을 설명하기 위한 타이밍도이다.
도 6은 본 발명의 일 실시예에 따른 메타 데이터의 구조를 보여준다.
도 7은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 8은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 사용자 시스템을 보여준다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
본 발명은 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법에 관한 것이다. 이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1000)은 버스(1100), 프로세서(1200), 시스템 메모리(1300) 및 스토리지(1400)를 포함한다.
버스(1100)는 컴퓨팅 시스템(1000)의 구성 요소들 사이에 채널을 제공하도록 구성된다. 예를 들어, 버스(1100)는 프로세서(1200), 시스템 메모리(1300), 그리고 스토리지(1400) 사이에 채널을 제공할 수 있다. 버스(1100)는 컴퓨팅 시스템(1000)의 표준 인터페이스에 기반하여 동작할 수 있다. 예를 들어, 버스(1100)는 PCIe (Peripheral Component Interconnect express) 인터페이스에 기반하여 동작할 수 있다. 그러나, 버스(1100)는 PCIe 인터페이스에 한정되지 않는다. 버스(1100)는 프로세서(1200)와 컴퓨팅 시스템(1000)의 다양한 구성 요소들 사이에 채널을 제공하는 다양한 인터페이스들에 기반하여 동작하는 것으로 응용 및 적용될 수 있다.
프로세서(1200)는 버스(1100)를 통해 컴퓨팅 시스템(1000)의 구성 요소들을 제어하도록 구성된다. 예를 들어, 프로세서(1200)는 버스(1100)를 통해 시스템 메모리(1300) 및 스토리지(1400)를 제어할 수 있다. 프로세서(1200)는 PCIe 인터페이스에 기반하여, 시스템 메모리(1300) 및 스토리지(1400)를 제어할 수 있다. 프로세서(1200)는 범용 프로세서 또는 어플리케이션 프로세서를 포함할 수 있다.
시스템 메모리(1300)는 버스(1100)를 통해 프로세서(1200) 및 스토리지(1400)와 통신하도록 구성된다. 시스템 메모리(1300)는 PCIe 인터페이스에 기반하여 프로세서(1200) 및 스토리지(1400)와 통신할 수 있다. 시스템 메모리(1300)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
버스(1100), 프로세서(1200) 및 시스템 메모리(1300)는 스토리지(1400)의 호스트(host)를 형성할 수 있다. 호스트는 스토리지(1400)에 저장되어 있는 데이터들 가운데 필요한 데이터를 요청할 수 있다.
스토리지(1400)는 버스(1100)를 통해 프로세서(1200) 및 시스템 메모리(1300)와 통신하도록 구성된다. 예를 들어, 스토리지(1400)는 PCIe 인터페이스에 기반하여 프로세서(1200) 및 시스템 메모리(1300)와 통신할 수 있다. 스토리지(1400)는 데이터를 장기적으로 보관하는 용도로 사용될 수 있다. 스토리지(1400)는 불휘발성 메모리(1410) 및 메모리 컨트롤러(1420)를 포함한다.
불휘발성 메모리(1410)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다.
메모리 컨트롤러(1420)는 호스트 인터페이스를 통해 호스트와 통신한다. 또한, 예를 들어, 메모리 컨트롤러(1420)는 버스(1100)를 통해 프로세서(1200) 및 시스템 메모리(1300)와 통신하고, 불휘발성 메모리(1410)를 제어하도록 구성된다.
메모리 컨트롤러(1420)는 버스(1100) 또는 프로세서(1200)에 의해 스토리지로 인식되는 인터페이스를 포함한다. 예를 들어, 스토리지(1400)가 버스(1100)에 연결되면, 메모리 컨트롤러(1400)는 프로세서(1200) 또는 버스(1100)와 미리 정해진 통신을 수행할 수 있다. 미리 정해진 통신의 결과에 따라, 스토리지(1400)는 프로세서(1200) 또는 버스(1100)에 의해 스토리지인 것으로 식별될 수 있다. 즉, 메모리 컨트롤러(1420)는 컴퓨팅 시스템의 표준 인터페이스(예를 들어, PCIe)에 기반하여 프로세서(1200) 및 시스템 메모리(1300)와 통신하며, 프로세서(1200) 또는 버스(1100)에 의해 스토리지로 식별되는 인터페이스를 포함할 수 있다.
도 2는 도 1에 도시된 스토리지의 메모리 컨트롤러의 일 실시예를 보여주는 블록도이다.
도 2를 참조하면, 스토리지(1400)는 불휘발성 메모리(1410) 및 메모리 컨트롤러(1420)를 포함한다.
불휘발성 메모리(1410)는 메모리 컨트롤러(1420)에 의해 제어되며, 외부 장치(예를 들어, 호스트)로부터 전달된 데이터를 저장할 수 있다. 이하에서, 불휘발성 메모리(1410)는 예를 들어, NAND 플래시 메모리(NAND flash memory)인 것으로 가정된다.
메모리 컨트롤러(1420)는 외부 장치(예를 들어, 호스트)의 요청에 응답하여 불휘발성 메모리(1410)에 데이터를 기입하거나 불휘발성 메모리(1410)로부터 데이터를 독출할 수 있다. 예를 들어, 메모리 컨트롤러(1420)는 호스트로부터 요청된 논리 블록 어드레스(Logical Block Address, LBA)에 대응하는 사용자 데이터(user data)를 불휘발성 메모리(1410)로부터 독출할 수 있다. 논리 블록 어드레스(LBA)는 예를 들어, 불휘발성 메모리(1410)의 하나의 섹터(sector)에 대응할 수 있다. 독출된 사용자 데이터는 메모리 컨트롤러(1420)의 버퍼 메모리(1422)에 저장될 것이다.
메모리 컨트롤러(1420)는 호스트 인터페이스(1421), 버퍼 메모리(1422) 및 DMA 컨트롤러(1423)를 포함할 수 있다.
호스트 인터페이스(1421)는 메모리 컨트롤러(1420)가 호스트와 통신하기 위한 인터페이스를 제공한다. 호스트 인터페이스(1421)는 예를 들어, PCIe(Peripheral Component Interconnect Express) 인터페이스로 구성될 수 있다.
버퍼 메모리(1422)는 메모리 컨트롤러(1420)에 의해 불휘발성 메모리(1410)로부터 독출된 사용자 데이터 및 사용자 데이터에 대한 상태 정보를 포함하는 메타 데이터를 저장한다. 버퍼 메모리(1422)는 휘발성 메모리일 수 있으며, 예를 들어, DRAM 또는 SRAM으로 구성될 수 있다.
일반적으로 불휘발성 메모리(1410)의 메모리 셀 어레이(미도시)에는 저장된 사용자 데이터에 대한 ECC(Error Correction Code) 정보가 포함된 메타 데이터가 저장된다. 하지만, 이와 달리 버퍼 메모리(1422)에 저장되는 메타 데이터는 버퍼 메모리(1422)로 로드된 사용자 데이터에 대한 ECC 정보, CRC(Cycle Redundancy Check) 정보, 사용자 데이터 유효 정보 등을 포함한다. 메타 데이터에 대해서는 도 6을 참조하여 더욱 상세히 설명될 것이다.
DMA 컨트롤러(1423)는 호스트의 요청에 응답하여 버퍼 메모리(1422)를 액세스한다. DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 저장된 메타 데이터를 확인한다. 구체적으로, DMA 컨트롤러(1423)는 호스트로부터 요청된 논리 블록 어드레스(LBA)에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. DMA 컨트롤러(1423)는 메타 데이터 확인 결과 사용자 데이터가 유효한 경우, 호스트로부터 요청된 논리 블록 어드레스(LBA)에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공한다. 제공된 사용자 데이터는 호스트 인터페이스(1421)를 통해 호스트로 전달될 것이다.
나아가, 호스트로부터 복수의 사용자 데이터에 대한 요청이 있는 경우가 설명된다. 이러한 경우는 예를 들어, 호스트로부터 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 요청 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 요청이 있는 경우로 이해될 수 있다. 제 1 논리 블록 어드레스 및 제 2 논리 블록 어드레스는 예를 들어, NAND 플래시 메모리의 서로 다른 섹터에 대응될 수 있다.
DMA 컨트롤러(1423)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공하기 이전에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인할 수 있다. 구체적으로, DMA 컨트롤러(1423)는 버퍼 메모리(1422)를 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 그리고, DMA 컨트롤러(1423)는 버퍼 메모리(1422)를 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 제 1 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(1423)는 제 1 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(1421)에 제공할 것이다. 그리고 제 2 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(1423)는 제 2 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(1421)에 제공할 것이다.
이러한 동작을 통해 DMA 컨트롤러(1423)는 호스트로부터 요청된 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 처리 시간을 감소시킬 수 있다. DMA 컨트롤러(1423)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공한 후에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인할 필요없이 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공할 수 있기 때문이다. 이는 메모리 컨트롤러(1420)의 성능 향상을 의미할 수 있다.
도 3은 도 1의 스토리지의 다른 실시예를 보여주는 블록도이다.
도 3을 참조하면, 스토리지(2400)는 불휘발성 메모리(2410) 및 메모리 컨트롤러(2420)를 포함할 수 있다. 불휘발성 메모리(2410)는 도 2를 참조하여 설명한 불휘발성 메모리(1410)와 동일할 수 있다. 따라서, 이하에서는 메모리 컨트롤러(2420)가 중점적으로 설명된다.
메모리 컨트롤러(2420)는 호스트 인터페이스(2421), 제 1 버퍼 메모리(2422), 제 2 버퍼 메모리(2423) 및 DMA 컨트롤러(2424)를 포함한다.
호스트 인터페이스(2421)는 메모리 컨트롤러(2420)가 호스트와 통신하기 위한 인터페이스를 제공한다. 호스트 인터페이스(2421)는 예를 들어, PCIe 인터페이스로 구성될 수 있다.
제 1 버퍼 메모리(2422)는 불휘발성 메모리(2410)로부터 독출된 사용자 데이터를 저장할 수 있다.
제 2 버퍼 메모리(2423)는 제 1 버퍼 메모리(2422)에 저장되는 사용자 데이터에 대한 메타 데이터를 저장할 수 있다.
제 1 버퍼 메모리(2422) 및 제 2 버퍼 메모리(2423)는 휘발성 메모리로 구성될 수 있다. 제 2 버퍼 메모리(2423)는 제 1 버퍼 메모리(2422)보다 동작 속도가 빠른 메모리로 구성될 수 있다. 예를 들어, 제 1 버퍼 메모리(2422)는 DRAM, 제 2 버퍼 메모리(2423)는 SRAM으로 구성될 수 있으며, 이에 제한되는 것은 아니다.
DMA 컨트롤러(2424)는 호스트의 요청에 응답하여 제 1 버퍼 메모리(2422) 및 제 2 버퍼 메모리(2423)를 액세스한다. DMA 컨트롤러(2424)는 제 2 버퍼 메모리(2423)에 저장된 메타 데이터를 확인한다. 구체적으로, DMA 컨트롤러(2424)는 호스트로부터 요청된 논리 블록 어드레스(LBA)에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. DMA 컨트롤러(2424)는 메타 데이터 확인 결과 사용자 데이터가 유효한 경우, 호스트로부터 요청된 논리 블록 어드레스(LBA)에 대응하는 사용자 데이터를 호스트 인터페이스(2421)에 제공한다. 제공된 사용자 데이터는 호스트 인터페이스(2421)를 통해 호스트로 전달될 것이다.
나아가, 호스트로부터 복수의 사용자 데이터에 대한 요청이 있는 경우가 설명된다. 이러한 경우는 예를 들어, 호스트로부터 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 요청 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 요청이 있는 경우로 이해될 수 있다. 제 1 논리 블록 어드레스 및 제 2 논리 블록 어드레스는 예를 들어, NAND 플래시 메모리의 서로 다른 섹터에 대응될 수 있다.
DMA 컨트롤러(2424)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 호스트 인터페이스(2421)에 제공한 이후에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인할 수 있다. 구체적으로, DMA 컨트롤러(2424)는 제 2 버퍼 메모리(2423)를 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 제 1 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(2424)는 제 1 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(2421)에 제공할 것이다. 그리고, DMA 컨트롤러(2423)는 다시 제 2 버퍼 메모리(2423)를 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 제 2 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(2424)는 제 2 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(2421)에 제공할 것이다.
이러한 동작을 통해 DMA 컨트롤러(2424)는 호스트로부터 요청된 제 1 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 처리 시간을 감소시킬 수 있다. 구체적으로, 제 1 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터의 확인을 위한 제 2 버퍼 메모리(2423)로의 액세스 시간을 줄일 수 있기 때문이다. 이는 메모리 컨트롤러(1420)의 성능 향상을 의미할 수 있다.
또한, 다른 측면에서, DMA 컨트롤러(2424)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(2421)에 제공하기 이전에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인할 수 있다. 구체적으로, DMA 컨트롤러(2424)는 제 2 버퍼 메모리(2423)를 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 그리고, DMA 컨트롤러(2423)는 다시 제 2 버퍼 메모리(2423)를 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한다. 제 1 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(2424)는 제 1 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(2421)에 제공할 것이다. 그리고 제 2 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우, DMA 컨트롤러(2424)는 제 2 논리 블록 어드레스에 대한 사용자 데이터를 호스트 인터페이스(2421)에 제공할 것이다.
이러한 동작을 통해 DMA 컨트롤러(2424)는 호스트로부터 요청된 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 처리 시간을 더욱 감소시킬 수 있다.
도 4 및 도 5는 도 2에 도시된 스토리지의 메모리 컨트롤러의 DMA 컨트롤러의 동작을 설명하기 위한 타이밍도이다. 도 4 및 도 5에서는 호스트로부터 제 1 논리 블록 어드레스 내지 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 요청이 있는 경우가 예로 들어 설명된다. 제 1 논리 블록 어드레스 내지 제 4 논리 블록 어드레스 각각은 예를 들어, NAND 플래시 메모리의 서로 다른 섹터에 대응될 수 있다.
먼저, 도 4를 참조하면, DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 메타 데이터 읽기 요청, 메타 데이터 리드, 버퍼 메모리(1422)에 사용자 데이터 읽기 요청, 사용자 데이터 리드의 과정을 반복하며 동작한다.
구체적으로, DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b1). a2와 b1 사이의 구간은 버퍼 메모리(1422)의 읽기 레이턴시로 이해될 수 있다. DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b2).
DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 3 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d1). b2와 d1 사이의 구간은 버퍼 메모리(1422)의 읽기 레이턴시로 이해될 수 있다. DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 3 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b3).
DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a4). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 3 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b4).
DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 4 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c4). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 3 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 4 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d4).
한편, 도 4에서는 DMA 컨트롤러(1423)의 b2 와 c1 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, b2 동작이 c1 보다 먼저 또는 나중에 수행될 수도 있다. 또한, DMA 컨트롤러(1423)의 d2 및 a4 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, d2 동작이 a4 보다 먼저 또는 나중에 수행될 수도 있다. 또한, DMA 컨트롤러(1423)의 d3 및 c4 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, d3 동작이 c4 보다 먼저 또는 나중에 수행될 수도 있다.
이러한 동작을 통해 DMA 컨트롤러(1423)는 호스트로부터 요청된 제 2 내지 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 처리 시간을 감소시킬 수 있다. 예를 들어, DMA 컨트롤러(1423)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공한 후에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인할 필요없이 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트 인터페이스(1421)에 제공할 수 있기 때문이다. 이는 메모리 컨트롤러(1420)의 성능 향상을 의미할 수 있다.
다음으로, 도 5를 참조하면, DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 3 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 읽기 요청한다(a4).
DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 3 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 3 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 리드한다(b4).
DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d1). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 제 4 논리 블록 어드레스에 대응하는 사용자 데이터를 읽기 요청한다(c4). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d2). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 3 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d3). DMA 컨트롤러(1423)는 버퍼 메모리(1422)에 액세스하여 제 4 논리 블록 어드레스에 대응하는 사용자 데이터를 리드한다(d4).
한편, 도 5에서는 DMA 컨트롤러(1423)의 b2 와 c1 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, b2 동작이 c1 보다 먼저 또는 나중에 수행될 수도 있다. 또한, DMA 컨트롤러(1423)의 b3 및 c2 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, b3 동작이 c2 보다 먼저 또는 나중에 수행될 수도 있다. 또한, DMA 컨트롤러(1423)의 b4 및 c3 동작의 경우 동시에 수행되는 것으로 도시되어 있으나, 이에 한정되는 것은 아니며, b4 동작이 c3 보다 먼저 또는 나중에 수행될 수도 있다.
이러한 동작을 통해 DMA 컨트롤러(1423)는 호스트로부터 요청된 제 2 내지 제 4 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 처리 시간을 더욱 감소시킬 수 있다.
도 6은 본 발명의 일 실시예에 따른 메타 데이터의 구조를 보여준다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 메타 데이터는 예를 들어, 16 바이트로 구성될 수 있다.
UECC 는 사용자 데이터의 에러 정정 가능 여부를 나타내는 비트이며, 정정 불가능한 에러가 발생한 경우 1로 설정될 수 있다.
CRCed는 CRC(Cyclic Redundancy Check) 에러 검출 방식에 의해 사용자 데이터가 체크되었는지 여부를 나타내는 비트이며, 체크된 경우 1로 설정될 수 있다.
Valid는 사용자 데이터와 메타 데이터가 모두 유효한지 여부를 나타내는 비트이며, 사용자 데이터와 메타 데이터가 모두 유효한 경우 1로 설정될 수 있다. 예를 들어, Valid 비트가 1인 경우, DMA 컨트롤러(1423)는 사용자 데이터를 호스트 인터페이스(1421)로 제공할 것이다.
CRC Seed는 CRCed가 1로 설정되는 경우 CRC parity 를 계산하기 위한 초기값을 제공한다. CRC Parity는 계산된 패리티값을 나타낸다.
도 7은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은 호스트로부터 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계(S110), 호스트로부터 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계(S120), 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계(S130), 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계(S140), 호스트로 제 1 논리 블록 어드레스에 대응하는 사용자 데이터 전달하는 단계(S150), 및 호스트로 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 전달하는 단계(S160)를 포함한다.
S110 단계 및 S120 단계는 동시에 수행될 수 있다. 즉, 메모리 컨트롤러(1410)는 호스트로부터 제 1 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 동시에 요청받을 수 있다.
S120 단계는 S130 단계 이후에 수행될 수 있다. 즉, 메모리 컨트롤러(1410)는 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한 후에 호스트로부터 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받을 수 있다.
S150 단계 및 S160 단계는 PCIe 인터페이스를 통해 각각 제 1 및 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 호스트로 전달할 수 있다.
도 8은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 8을 참조하면, 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법은 호스트로부터 제 1 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계(S210), 호스트로부터 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 요청받는 단계(S220), 제 1 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계(S230), 제 1 논리 블록 어드레스에 대응하는 사용자 데이터의 유효 여부를 판단하는 단계(S240), 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계(S250), 호스트로 제 1 논리 블록 어드레스에 대응하는 사용자 데이터 전달하는 단계(S260), 및 호스트로 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 전달하는 단계(S270)를 포함한다.
S210 내지 S230 단계는 도 7을 참조하여 설명한 S110 단계 내지 S130 단계와 동일할 수 있다.
S240 단계의 판단 결과에 따라 제 1 논리 블록 어드레스에 대응하는 사용자 데이터가 유효한 경우 S250 내지 S270 단계가 수행될 것이다.
S240 단계의 판단 결과에 따라 제 1 논리 블록 어드레스에 대응하는 사용자 데이터가 유효하지 않은 경우 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인하는 단계(S280) 및 호스트로 제 2 논리 블록 어드레스에 대응하는 사용자 데이터를 전달하는 단계(S290)가 수행될 수 있다.
S240 단계의 판단 동작은 도 6을 참조하여 설명된 메타 데이터를 참조하여 수행될 수 있으며, 예를 들어 메타 데이터의 Valid 비트를 참조하여 사용자 데이터의 유효 여부를 판단할 수 있다.
한편, S240 단계는 S250 단계 이후에 수행될 수도 있다. 즉, 메모리 컨트롤러(1410)는 제 2 논리 블록 어드레스에 대응하는 사용자 데이터에 대한 메타 데이터를 확인한 후에 제 1 논리 블록 어드레스에 대응하는 사용자 데이터의 유효 여부를 판단할 수 있다.
S250 단계 내지 S270 단계는 도 6을 참조하여 설명한 S140 단계 내지 S160 단계와 동일할 수 있다.
한편, 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법은 제 2 논리 블록 어드레스에 대응하는 사용자 데이터의 유효 여부를 판단하는 단계를 더 포함할 수 있다. 제 2 논리 블록 어드레스에 대응하는 사용자 데이터의 유효 여부를 판단하는 단계는 예를 들어, 호스트로 제 1 논리 블록 어드레스에 대응하는 사용자 데이터 전달하는 단계(S260) 이전에 수행될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 스토리지를 보여주는 블록도이다.
도 9를 참조하면, 스토리지(3400)는 복수의 불휘발성 메모리들(3410), 메모리 컨트롤러(3420) 및 커넥터(3430)를 포함한다.
메모리 컨트롤러(3420)는 도 2 및 도 3을 참조하여 설명된 바와 같이 동작할 수 있다.
커넥터(3430)는 스토리지(3400)와 호스트 사이를 연결할 수 있다. 예를 들어, 커넥터(3430)는 호스트에서 사용되는 표준 인터페이스의 커넥터일 수 있다. 커넥터(3430)는 PCIe 인터페이스의 커넥터일 수 있다.
스토리지(3400)는 솔리드 스테이트 드라이브(SSD, Solid State Drive)일 수 있다. 스토리지(3400)는 서버, 메인프레임 등과 같은 고속 및 대용량 스토리지를 요구하는 호스트와 연결되어 사용될 수 있다.
이상 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1000: 컴퓨터 시스템 1423, 2424: DMA 컨트롤러
1100: 버스 2422: 제 1 버퍼 메모리
1200: 프로세서 2423: 제 2 버퍼 메모리
1300: 시스템 메모리 3430: 커넥터
1400, 2400, 3400: 스토리지
1410, 2410, 3410: 불휘발성 메모리
1420, 2420, 3420: 메모리 컨트롤러
1421, 2421: 호스트 인터페이스
1422: 버퍼 메모리

Claims (10)

  1. 호스트와 통신하기 위한 인터페이스를 제공하는 호스트 인터페이스;
    제1 사용자 데이터 및 제2 사용자 데이터와, 상기 제1,2 사용자 데이터 중 하나에 관련된 상태 정보를 포함하는 메타 데이터를 저장하는 버퍼 메모리; 및
    제1 논리 블록 어드레스에 대응하여 상기 제1 사용자 데이터를 찾고 제2 논리 블록 어드레스에 대응하여 상기 제2 사용자 데이터를 찾기 위해 상기 호스트로부터 요청을 수신하고, 상기 제1 사용자 데이터와 관련된 상기 메타 데이터를 확인한 후, 상기 제2 사용자 데이터와 관련된 상기 메타 데이터를 확인하기 이전 또는 이후에 상기 제1 사용자 데이터에 관련된 상기 메타 데이터를 확인한 결과에 따라 상기 제1 사용자 데이터를 상기 호스트 인터페이스로 제공하는 DMA 컨트롤러를 포함하는 메모리 컨트롤러.
  2. 삭제
  3. 제 1 항에 있어서,
    제2 사용자 데이터가 유효임을 나타내는 것으로 확인될 때, 상기 DMA 컨트롤러는 상기 제2 사용자 데이터를 상기 호스트 인터페이스로 제공하는 메모리 컨트롤러.
  4. 제 1 항에 있어서,
    상기 메타 데이터는 상기 제1,2 사용자 데이터의 유효 정보, CRC 정보 및 ECC 정보를 포함하는 메모리 컨트롤러.
  5. 제 1 항에 있어서,
    상기 버퍼 메모리는 휘발성 메모리인 메모리 컨트롤러.
  6. 제 1 항에 있어서,
    상기 호스트 인터페이스는 PCIe 인터페이스인 메모리 컨트롤러.
  7. (a) 호스트로부터 제 1 논리 블록 어드레스에 대응하는 제1 사용자 데이터에 대한 읽기 요청을 받는 단계;
    (b) 상기 호스트로부터 제 2 논리 블록 어드레스에 대응하는 제2 사용자 데이터에 대한 읽기 요청을 받는 단계;
    (c) 상기 제 1 사용자 데이터에 대한 메타 데이터를 확인하는 단계;
    (d) 상기 제 2 사용자 데이터에 대한 메타 데이터를 확인하는 단계;
    (e) 상기 제2 사용자 데이터와 관련된 상기 메타 데이터를 확인하기 이전 또는 이후에 상기 호스트로 상기 제 1 사용자 데이터를 전달하는 단계; 및
    (f) 상기 호스트로 상기 제 2 사용자 데이터를 전달하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  8. 제 7 항에 있어서,
    상기 (b) 단계는 상기 (c) 단계 이후에 수행되는 메모리 컨트롤러의 동작 방법.
  9. 제 7 항에 있어서,
    상기 (e) 단계 및 (f) 단계는 PCIe 인터페이스를 이용하여 상기 제1,2 사용자 데이터를 상기 호스트로 전달하는 메모리 컨트롤러의 동작 방법.
  10. 제 7 항에 있어서,
    상기 메타 데이터는 상기 제1,2 사용자 데이터의 유효 정보, CRC 정보 및 ECC 정보를 포함하는 메모리 컨트롤러의 동작 방법.
KR1020120139139A 2012-12-03 2012-12-03 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 KR102107723B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120139139A KR102107723B1 (ko) 2012-12-03 2012-12-03 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US14/095,177 US9164677B2 (en) 2012-12-03 2013-12-03 Systems and methods for DMA controller for checking the status of metadata prior to or simultaneously when transferring data to host

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120139139A KR102107723B1 (ko) 2012-12-03 2012-12-03 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140071135A KR20140071135A (ko) 2014-06-11
KR102107723B1 true KR102107723B1 (ko) 2020-05-07

Family

ID=50826639

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120139139A KR102107723B1 (ko) 2012-12-03 2012-12-03 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법

Country Status (2)

Country Link
US (1) US9164677B2 (ko)
KR (1) KR102107723B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102157668B1 (ko) * 2014-04-03 2020-09-22 에스케이하이닉스 주식회사 호스트와 통신하는 메모리 컨트롤러, 그것의 동작 방법 및 그것을 포함하는 컴퓨팅 시스템
US9372759B2 (en) * 2014-06-16 2016-06-21 Samsung Electronics Co., Ltd. Computing system with adaptive back-up mechanism and method of operation thereof
KR102292217B1 (ko) * 2015-02-06 2021-08-24 삼성전자주식회사 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
US10162537B2 (en) * 2015-09-10 2018-12-25 Samsung Electronics Co., Ltd. Methods and systems to detect silent corruption of data
KR20170075855A (ko) * 2015-12-23 2017-07-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102507219B1 (ko) 2016-02-02 2023-03-09 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
KR20180050883A (ko) 2016-11-07 2018-05-16 에스케이하이닉스 주식회사 메모리 데이터 억세스 장치 및 방법
KR102523327B1 (ko) 2018-03-19 2023-04-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10976961B2 (en) * 2018-12-20 2021-04-13 Intel Corporation Device, system and method to detect an uninitialized memory read

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US6715036B1 (en) * 2000-08-01 2004-03-30 International Business Machines Corporation Method, system, and data structures for transferring blocks of data from a storage device to a requesting application
US6928521B1 (en) * 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
KR100672996B1 (ko) 2005-02-07 2007-01-24 삼성전자주식회사 메타 데이터가 저장되는 에프램을 포함하는 메모리 장치
US7640412B2 (en) * 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
US8225019B2 (en) 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
KR101515525B1 (ko) 2008-10-02 2015-04-28 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR101605875B1 (ko) 2009-04-03 2016-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
KR101571693B1 (ko) 2009-04-15 2015-11-26 삼성전자주식회사 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
KR20100120518A (ko) * 2009-05-06 2010-11-16 삼성전자주식회사 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
JP2011192239A (ja) 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
JP2011227802A (ja) 2010-04-22 2011-11-10 Funai Electric Co Ltd データ記録装置
JP5553309B2 (ja) 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
KR101844346B1 (ko) 2010-11-05 2018-04-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
KR20140071135A (ko) 2014-06-11
US9164677B2 (en) 2015-10-20
US20140156880A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
KR102107723B1 (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US10296473B2 (en) System and method for fast execution of in-capsule commands
US10621081B2 (en) Storage device and global garbage collection method of data storage system including the same
US9858015B2 (en) Solid-state storage management
KR102398186B1 (ko) 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
US9870157B2 (en) Command balancing and interleaving for write and reads between front end and back end of solid state drive
CN108073470A (zh) 执行地址映射表的纠错的存储器系统及其控制方法
TW201702878A (zh) 具有不同同位區的記憶體裝置
US10126986B2 (en) Memory system and operating method thereof for skipping mapping information update operation of duplicate addresses in a fast write mode
US11461226B2 (en) Storage device including memory controller
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
US11526439B2 (en) Storage device and operating method thereof
US11837277B2 (en) Dual slc/qlc programming and resource releasing
US11556268B2 (en) Cache based flow for a simple copy command
US20240062841A1 (en) Machine learning assisted read verify in a memory sub-system
KR20220077041A (ko) 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법
KR20220070539A (ko) 프로세서에 의한 메모리 액세스를 위한 타임 투 리브
KR102281966B1 (ko) 데이터 스토리지 장치 및 그 동작 방법
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
US10515693B1 (en) Data storage apparatus and operating method thereof
CN114201108A (zh) 包括映射高速缓存的控制器以及包括控制器的存储器系统
KR20210049619A (ko) 분산 저장 시스템의 스토리지 노드 및 그 동작 방법
US10628322B2 (en) Memory system and operating method thereof
US20240111426A1 (en) Data Storage Device That Detects and Releases Bottlenecks In Hardware
US20240111427A1 (en) Data Storage Device That Detects And Releases Input Queue Bottlenecks

Legal Events

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