KR20160056380A - 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents

스토리지 장치 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20160056380A
KR20160056380A KR1020140155556A KR20140155556A KR20160056380A KR 20160056380 A KR20160056380 A KR 20160056380A KR 1020140155556 A KR1020140155556 A KR 1020140155556A KR 20140155556 A KR20140155556 A KR 20140155556A KR 20160056380 A KR20160056380 A KR 20160056380A
Authority
KR
South Korea
Prior art keywords
dram
data
storage device
type
error correction
Prior art date
Application number
KR1020140155556A
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 KR1020140155556A priority Critical patent/KR20160056380A/ko
Priority to US14/862,089 priority patent/US20160132265A1/en
Publication of KR20160056380A publication Critical patent/KR20160056380A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0614Improving the reliability of 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/068Hybrid storage device

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)

Abstract

본 발명은 스토리지 장치에 관한 것이다. 본 발명의 스토리지 장치는, 제1 타입의 제1 DRAM, 제1 타입과 다른 제2 타입의 제2 DRAM, 외부 호스트 장치의 요청에 따라 제1 DRAM을 액세스하도록 구성되는 제1 타입의 제1 DRAM 컨트롤러, 외부 호스트 장치의 요청에 따라 제2 DRAM을 액세스하도록 구성되는 제2 타입의 제2 DRAM 컨트롤러, 제1 DRAM으로부터 읽어지는 제1 읽기 데이터의 에러를 정정하도록 구성되는 제1 타입의 제1 에러 정정 회로, 그리고 제2 DRAM으로부터 읽어지는 제2 읽기 데이터의 에러를 정정하도록 구성되는 제2 타입의 제2 에러 정정 회로로 구성된다.

Description

스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE DEVICE AND OPERATING METHOD OF STORAGE DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.
반도체 메모리(semiconductor memory)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리는 크게 휘발성 메모리(Volatile memory)와 불휘발성 메모리(Nonvolatile memory)로 구분된다.
휘발성 메모리는 전원 공급이 차단되면 저장하고 있던 데이터를 소실하는 메모리 장치이다. 휘발성 메모리는 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) 등을 포함한다.
통상적으로, 데이터 센터(data center) 또는 서버는 하드 디스크 드라이브(HDD, Hard Disk Drive)를 스토리지 장치로 사용한다. 근래에 네트워크의 통신 속도가 향상되고 네트워크를 통해 데이터 센터 또는 서버를 이용하는 사용자의 수가 급격하게 증가하면서, 데이터 센터 또는 서버의 스토리지 장치의 액세스 속도가 데이터 센터 또는 서버를 포함하는 시스템의 전체적인 동작 속도에 큰 영향을 주는 요인이 되고 있다.
데이터 센터 또는 서버의 스토리지 장치의 액세스 속도를 증가시키기 위한 방안의 하나로, 솔리드 스테이트 드라이브(SSD, Solid State Drive)와 같은 불휘발성 메모리를 이용한 스토리지 장치를 데이터 센터 또는 서버에 채용하는 방안이 강구되고 있다. 그러나, SSD의 액세스 속도는 HDD의 액세스 속도보다 빠르지만, 데이터 센터 또는 서버가 구동되는 환경에서 사용된 예가 적으므로, 신뢰성이 충분히 검증되지 않았다는 단점이 있다. 또한, 소셜 네트워크 서비스(SNS, Social Network Service)를 지원하는 데이터 센터 또는 서버의 경우, 다른 데이터 센터 또는 서버보다 월등히 많은 수의 사용자들을 가지며, 월등한 액세스 빈도를 갖는다. 따라서, 데이터 센터 또는 서버 환경에서, 향상된 신뢰성 및 향상된 액세스 속도를 갖는 스토리지 장치가 요구되고 있다.
본 발명의 목적은, 향상된 신뢰성 및 향상된 액세스 속도를 갖는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 스토리지 장치는, 제1 타입의 제1 DRAM (Dynamic Random Access Memory); 상기 제1 타입과 다른 제2 타입의 제2 DRAM; 외부 호스트 장치의 요청에 따라 상기 제1 DRAM을 액세스하도록 구성되는 제1 타입의 제1 DRAM 컨트롤러; 상기 외부 호스트 장치의 요청에 따라 상기 제2 DRAM을 액세스하도록 구성되는 제2 타입의 제2 DRAM 컨트롤러; 상기 제1 DRAM으로부터 읽어지는 제1 읽기 데이터의 에러를 정정하도록 구성되는 제1 타입의 제1 에러 정정 회로; 그리고 상기 제2 DRAM으로부터 읽어지는 제2 읽기 데이터의 에러를 정정하도록 구성되는 제2 타입의 제2 에러 정정 회로를 포함한다.
실시 예로서, 상기 제1 DRAM의 저장 공간은 상기 외부 호스트 장치에 의해 상기 스토리지 장치의 저장 공간으로 식별되고, 상기 제2 DRAM의 저장 공간은 상기 외부 호스트 장치에 의해 상기 스토리지 장치의 저장 공간으로 식별된다.
실시 예로서, 상기 외부 호스트 장치의 요청은 쓰기 데이터를 포함하는 쓰기 요청이고, 상기 제1 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 쓰기 데이터를 상기 제1 DRAM에 저장하도록 구성되고, 상기 제2 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청으로부터 생성되는 메타 데이터를 상기 제2 DRAM에 저장하도록 구성된다.
실시 예로서, 상기 외부 호스트 장치의 요청은 키 및 상기 키에 대응하는 쓰기 데이터를 포함하고, 상기 제1 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 쓰기 데이터를 상기 제1 DRAM에 저장하도록 구성되고, 상기 제2 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 키로부터 생성되는 메타 데이터를 상기 제2 DRAM에 저장하도록 구성된다.
실시 예로서, 상기 키에 기반하여 해시 동작을 수행하도록 구성되는 해시 회로를 더 포함하고, 상기 제2 DRAM 컨트롤러는 상기 해시 회로의 출력을 상기 제2 DRAM에 저장하도록 구성된다.
실시 예로서, 상기 제1 DRAM 컨트롤러는 상기 제1 DRAM의 저장 공간 중에서 상기 메타 데이터가 가리키는 저장 공간에 상기 쓰기 데이터를 기입하도록 구성된다.
실시 예로서, 상기 외부 호스트 장치의 요청은 키를 포함하고, 상기 제2 DRAM 컨트롤러는 상기 키에 대응하는 메타 데이터를 상기 제2 DRAM으로부터 읽도록 구성되고, 상기 제1 DRAM 컨트롤러는 상기 읽어진 메타 데이터에 기반하여 상기 제1 DRAM으로부터 상기 제1 읽기 데이터를 읽도록 구성된다.
실시 예로서, 상기 제1 DRAM의 저장 공간은 상기 제2 DRAM의 저장 공간보다 크다.
실시 예로서, 상기 제1 DRAM 컨트롤러가 상기 제1 DRAM을 액세스하는 속도는 상기 제2 DRAM 컨트롤러가 상기 제2 DRAM을 액세스하는 속도보다 느리다.
실시 예로서, 상기 제1 DRAM은 절전형 DRAM이고 상기 제2 DRAM은 고속형 DRAM이다.
실시 예로서, 상기 제1 DRAM의 쓰기 및 읽기의 단위는 상기 제2 DRAM의 쓰기 및 읽기의 단위보다 크다.
실시 예로서, 상기 제1 에러 정정 회로가 한 번에 에러 정정을 수행하는 비트들의 단위는 상기 제2 에러 정정 회로가 한 번에 에러 정정을 수행하는 비트들의 단위보다 크다.
실시 예로서, 한 번의 에러 정정이 수행될 때에, 상기 제1 에러 정정 회로에 의해 정정되는 에러 비트들의 최대수는 상기 제2 에러 정정 회로에 의해 정정되는 에러 비트들의 최대수보다 크다.
실시 예로서, 상기 제1 DRAM은 복수의 DRAM 칩들을 포함한다.
실시 예로서, 불휘발성 메모리; 상기 제1 DRAM 및 상기 제2 DRAM에 저장되는 데이터를 상기 불휘발성 메모리에 기입하도록 구성되는 불휘발성 메모리 컨트롤러; 그리고 상기 불휘발성 메모리로부터 읽어지는 읽기 데이터의 에러를 정정하도록 구성되는 에러 정정 회로를 더 포함한다.
실시 예로서, 제3 타입의 제3 불휘발성 메모리; 제4 타입의 제4 불휘발성 메모리; 상기 제1 DRAM에 저장되는 데이터를 상기 제3 불휘발성 메모리에 기입하도록 구성되는 제3 타입의 제3 불휘발성 메모리 컨트롤러; 상기 제2 DRAM에 저장되는 데이터를 상기 제4 불휘발성 메모리에 기입하도록 구성되는 제4 타입의 제4 불휘발성 메모리 컨트롤러; 상기 제3 불휘발성 메모리로부터 읽어지는 제3 읽기 데이터의 에러를 정정하도록 구성되는 제3 타입의 에러 정정 회로; 그리고 상기 제4 불휘발성 메모리로부터 읽어지는 제4 읽기 데이터의 에러를 정정하도록 구성되는 제4 타입의 에러 정정 회로를 더 포함한다.
실시 예로서, 상기 제3 불휘발성 메모리는 낸드 플래시 메모리이고, 상기 제4 불휘발성 메모리는 PRAM (Phase-change RAM), RRAM (Resistive RAM), MRAM (Magnetic RAM), 그리고 FeRAM (Ferroelectric RAM) 중 하나이다.
실시 예로서, 상기 외부 호스트 장치와 통신하도록 구성되는 PCIe (Peripheral Component Interconnect express) 인터페이스; 그리고 네트워크를 통해 제2 외부 호스트 장치와 통신하도록 구성되는 이더넷 인터페이스를 더 포함한다.
이종의(heterogeneous) 제1 DRAM (Dynamic Random Access Memory) 및 제2 DRAM을 포함하는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법은, 상기 스토리지 장치에서 키 및 데이터를 포함하는 요청을 수신하는 단계; 상기 스토리지 장치에서 상기 키에 대해 해시 동작을 수행하여 메타 데이터를 생성하는 단계; 상기 스토리지 장치에서 상기 메타 데이터에 기반하여, 상기 데이터를 상기 제1 DRAM에 기입하는 단계; 그리고 상기 스토리지 장치에서 상기 메타 데이터를 상기 제2 DRAM에 기입하는 단계를 포함한다.
실시 예로서, 상기 스토리지 장치에서 상기 키를 수신하는 단계; 상기 스토리지 장치에서 상기 키에 대응하는 상기 메타 데이터를 상기 제2 DRAM으로부터 읽는 단계; 상기 스토리지 장치에서 상기 읽어진 메타 데이터에 기반하여 상기 제1 DRAM으로부터 상기 데이터를 읽는 단계; 그리고 상기 스토리지 장치에서 상기 읽어진 데이터를 출력하는 단계를 더 포함한다.
본 발명의 실시 예들에 따르면, 스토리지 장치는 제1 타입의 DRAM (Dynamic Random Access Memory) 및 제2 타입의 DRAM을 포함한다. 대용량의 사용자 데이터는 제1 타입의 DRAM에 저장되며, 소용량의 메타 데이터는 제2 타입의 DRAM에 저장된다. 따라서, 향상된 동작 속도 및 신뢰성을 갖는 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 제1 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 2는 제1 타입과 제2 타입의 차이를 보여주는 테이블이다.
도 3은 도 1의 메모리 컨트롤러의 예를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법의 제1 예를 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 다른 스토리지 장치의 동작 방법의 제2 예를 보여준다.
도 6은 본 발명의 제2 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 7은 본 발명의 제2 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
도 8은 본 발명의 제3 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 9는 본 발명의 제3 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
도 10은 본 발명의 제4 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 11는 본 발명의 제4 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
도 12는 본 발명의 제5 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 13은 본 발명의 제5 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 제1 실시 예에 따른 스토리지 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 메모리 컨트롤러(110), 제1 DRAM (Dynamic Random Access Memory)(120), 그리고 제2 DRAM (130)을 포함한다.
메모리 컨트롤러(110)는 제1 DRAM (120) 및 제2 DRAM (130)을 포함한다. 제1 DRAM (120)은 제1 타입을 가지며, 제2 DRAM (130)은 제1 DRAM (120)과 다른 제2 타입을 가질 수 있다. 즉, 메모리 컨트롤러(110)는 이종의 제1 DRAM (120) 및 제2 DRAM (130)을 구동하도록 구성된다.
메모리 컨트롤러(110)는 제1 DRAM 컨트롤러(DC1), 제2 DRAM 컨트롤러(DC2), 제1 에러 정정 회로(EC1), 그리고 제2 에러 정정 회로(EC2)를 포함한다.
제1 DRAM 컨트롤러(DC1)는 제1 타입의 제1 DRAM (120)을 액세스하도록 구성되며, 제1 타입을 가질 수 있다. 제1 에러 정정 회로(EC1)는 제1 DRAM (120)으로부터 읽어지는 읽기 데이터의 에러를 정정하도록 구성되며, 제1 타입을 가질 수 있다. 예를 들어, 제1 DRAM (120)에 대한 쓰기 동작 시에, 제1 에러 정정 회로(EC1)는 제1 DRAM (120)에 기입되는 쓰기 데이터에 기반하여 에러 정정 데이터를 생성할 수 있다. 제1 DRAM (120)에 대한 읽기 동작 시에, 제1 DRAM (120)으로부터 읽기 데이터 및 에러 정정 데이터가 읽어질 수 있다. 제1 에러 정정 회로(EC1)는 제1 DRAM (120)으로부터 읽어진 에러 정정 데이터를 이용하여, 제1 DRAM (120)으로부터 읽어진 데이터의 에러를 정정할 수 있다.
제2 DRAM 컨트롤러(DC2)는 제2 타입의 제2 DRAM (130)을 액세스하도록 구성되며, 제2 타입을 가질 수 있다. 제2 에러 정정 회로(EC2)는 제2 DRAM (130)으로부터 읽어지는 읽기 데이터의 에러를 정정하도록 구성되며, 제2 타입을 가질 수 있다. 예를 들어, 제2 DRAM (130)에 대한 쓰기 동작 시에, 제2 에러 정정 회로(EC2)는 제2 DRAM (130)에 기입되는 쓰기 데이터에 기반하여 에러 정정 데이터를 생성할 수 있다. 제2 DRAM (130)에 대한 읽기 동작 시에, 제2 DRAM (130)으로부터 읽기 데이터 및 에러 정정 데이터가 읽어질 수 있다. 제2 에러 정정 회로(EC2)는 제2 DRAM (130)으로부터 읽어진 에러 정정 데이터를 이용하여, 제2 DRAM (130)으로부터 읽어진 데이터의 에러를 정정할 수 있다.
제1 DRAM 컨트롤러(DC1) 및 제2 DRAM 컨트롤러(DC2)는 서로 독립적으로 제1 DRAM (120) 및 제2 DRAM (130)을 제어할 수 있다.
예시적으로, 제1 타입은 대용량 데이터에 특화될 수 있다. 즉, 제1 DRAM (120)은 대용량 데이터를 저장하는 데에 특화될 수 있다. 제1 DRAM 컨트롤러(DC1)는 대용량 데이터를 제1 DRAM (120)에 기입하고 제1 DRAM (120)으로부터 읽는 데에 특화될 수 있다. 제1 에러 정정 회로(EC1)는 대용량 데이터의 에러를 정정하는 데에 특화될 수 있다.
예시적으로, 제2 타입은 소용량 데이터에 특화될 수 있다. 즉, 제2 DRAM (130)은 소용량 데이터를 저장하는 데에 특화될 수 있다. 제2 DRAM 컨트롤러(DC2)는 소용량 데이터를 제2 DRAM (130)에 기입하고 제2 DRAM (130)으로부터 읽는 데에 특화될 수 있다. 제2 에러 정정 회로(EC2)는 소용량 데이터의 에러를 정정하는 데에 특화될 수 있다.
예시적으로, 메모리 컨트롤러(110)는 외부 호스트 장치로부터 쓰기 요청된 데이터를 제1 DRAM (120)에 기입할 수 있다. 메모리 컨트롤러(110)는 쓰기 요청된 데이터로부터 메타 데이터를 생성하고, 생성된 메타 데이터를 제2 DRAM (130)에 기입할 수 있다. 예를 들어, 제1 DRAM (120)의 저장 공간은 외부 호스트 장치에 의해 스토리지 장치(100)의 저장 공간인 것으로 식별되지만, 제1 DRAM (130)의 저장 공간은 외부 호스트 장치에 의해 식별되지 않을 수 있다.
예시적으로, 제1 DRAM (120)은 복수의 DRAM 칩들을 포함할 수 있다. 제1 DRAM (120)의 복수의 DRAM 칩들은 동일한 타입을 가질 수 있다. 제1 DRAM의 복수의 DRAM 칩들은 하나의 DRAM 패키지 또는 복수의 DRAM 패키지들을 형성할 수 있다.
제2 DRAM (130)은 복수의 DRAM 칩들을 포함할 수 있다. 제2 DRAM (130)의 복수의 DRAM 칩들은 동일한 타입을 가질 수 있다. 제2 DRAM의 복수의 DRAM 칩들은 하나의 DRAM 패키지 또는 복수의 DRAM 패키지들을 형성할 수 있다.
메모리 컨트롤러(110)는 하나의 반도체 칩으로 형성될 수 있다. 메모리 컨트롤러(110)는 하나의 반도체 패키지를 형성할 수 있다. 메모리 컨트롤러(110)는 제1 DRAM (120)의 복수의 DRAM 칩들 중 적어도 하나 또는 제2 DRAM (130)의 복수의 DRAM 칩들 중 적어도 하나와 함께 하나의 반도체 패키지에 포함될 수 있다.
도 2는 제1 타입과 제2 타입의 차이를 보여주는 테이블이다. 도 1 및 도 2를 참조하면, 제2 타입의 제2 DRAM (130)의 저장 용량(C2)은 제1 타입의 제1 DRAM (120)의 저장 용량(C1)보다 크다. 제2 타입의 제2 DRAM (130) 및 제2 DRAM 컨트롤러(DC2)의 액세스 속도(S2)는 제1 타입의 제1 DRAM (120) 및 제1 DRAM 컨트롤러(DC1)의 액세스 속도(S1)보다 빠르다. 제2 타입의 제2 DRAM (130)의 전력 소비(P2)는 제1 타입의 제1 DRAM (120)의 전력 소비(P1)보다 클 수 있다. 제2 타입의 제2 DRAM (130) 및 제2 DRAM 컨트롤러(DC2)의 액세스 단위(U2), 즉 제2 DRAM 컨트롤러(DC2)가 제2 DRAM (130)에 대해 읽기 및 쓰기를 수행하는 단위는 제1 타입의 제1 DRAM (120) 및 제1 DRAM 컨트롤러(DC1)의 액세스 단위(U1), 즉 제1 DRAM 컨트롤러(DC1)가 제1 DRAM (120)에 대해 읽기 및 쓰기를 수행하는 단위보다 작을 수 있다.
제2 타입의 제2 에러 정정 회로(EC2)의 에러 정정 단위(E2), 즉 제2 에러 정정 회로(EC2)가 에러 정정 동작을 수행하는 소스 데이터의 단위는 제1 타입의 제1 에러 정정 회로(EC1)의 에러 정정 단위(E1), 즉 제1 에러 정정 회로(EC1)가 에러 정정을 수행하는 소스 데이터의 단위보다 작을 수 있다. 제2 타입의 제2 에러 정정 회로(EC2)의 에러 정정 세기(ES2), 즉 제2 에러 정정 회로(EC2)가 에러 정정을 수행할 때에 정정될 수 있는 에러 비트들의 최대수는 제1 타입의 제1 에러 정정 회로(EC1)의 에러 정정 세기(ES1), 즉 제1 에러 정정 회로(EC1)가 에러 정정을 수행할 때에 정정될 수 있는 에러 비트들의 최대수보다 작을 수 있다.
예시적으로, 제1 타입의 에러 정정 회로(EC1)는 멀티 비트 에러를 정정할 수 있는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러 정정을 수행할 수 있다. 제2 타입의 에러 정정 회로(EC2)는 레이턴시(Latency)가 낮은 해밍(Hamming) 코드를 이용하여 에러 정정을 수행할 수 있다.
즉, 제1 DRAM (120)은 상대적으로 고용량을 갖고, 낮은 소비 전력 및 동작 속도를 가질 수 있다. 제1 DRAM (120)의 액세스 단위가 상대적으로 크므로, 제1 에러 정정 회로(EC1)의 에러 정정 단위 및 에러 정정 세기는 상대적으로 크다. 제2 DRAM (130)은 상대적으로 소용량을 갖고, 높은 소비 전력 및 동작 속도를 가질 수 있다. 제2 DRAM (130)의 액세스 단위가 상대적으로 작으므로, 제2 에러 정정 회로(EC2)의 에러 정정 단위 및 에러 정정 세기는 상대적으로 작다.
제1 에러 정정 회로(EC1)에 의해 정정되는 에러 비트들의 최대수가 증가할수록, 제1 DRAM (120)의 리프레시(refresh)의 주기가 증가될 수 있다. 예를 들어, 제1 DRAM (120)에서 발생하는 에러들의 수가 최대수의 임계 비율(예를 들어, 25%, 50% 등)에 도달할 때까지, 제1 DRAM (120)의 리프레시의 주기가 증가될 수 있다. 따라서, 제1 DRAM (120)의 소비 전력은 리프레시의 주기의 감소로 인해 더 감소될 수 있다.
제1 DRAM (120)은 외부 호스트 장치의 요청에 따라, 대용량의 사용자 데이터를 저장하도록 구성된다. 제2 DRAM (130)은 대용량의 사용자 데이터로부터 생성되는 소용량의 메타 데이터를 저장하도록 구성된다. 이종의 제1 DRAM (120) 및 제2 DRAM (130)이 구비되면, 데이터의 특성에 따라, 예를 들어 데이터가 사용자 데이터인지 또는 메타 데이터인지에 따라, 데이터가 제1 DRAM (120) 및 제2 DRAM (130) 중 최적의 DRAM에 저장된다.
도 3은 도 1의 메모리 컨트롤러(110)의 예를 보여주는 블록도이다. 도 3을 참조하면, 메모리 컨트롤러(110)는 버스(BUS), PCIe (Peripheral Component Interconnect express) 인터페이스(PI), 네트워크 인터페이스(NI), 해시 회로(HC), 요청 큐(RQ), DMA (Direct Memory Access) 회로(DC), 코어 회로(CC), 버퍼 관리자(BM), 버퍼 메모리(BB), 제1 에러 정정 회로(EC1), 제2 에러 정정 회로(EC2), 제1 DRAM 컨트롤러(DC1), 그리고 제2 DRAM 컨트롤러(DC2)를 포함한다.
버스(BUS)는 메모리 컨트롤러(110)의 구성 요소들 사이에 채널을 제공하도록 구성된다.
PCIe 인터페이스(PI)는 PCIe 표준에 따라 외부 호스트 장치와 통신하도록 구성된다. PCIe 인터페이스(PI)는 외부 호스트 장치로부터 수신되는 요청을 버스(BUS)로 전달할 수 있다. PCIe 인터페이스(PI)는 버스(BUS)를 통해 수신되는 메시지를 외부 호스트 장치로 출력할 수 있다. PCIe 인터페이스(PI)는 브릿지 회로(BC1), PCIe Transport/Link (PTL), 그리고 PCIe PHY (PP)를 포함한다.
브릿지 회로(BC1)는 PCIe Transport/Link (PTL) 및 PCIe PHY (PP)와 버스(BUS) 사이의 통신을 중개하도록 구성된다.
PCIe Transport/Link (PTL)는 PCIe 표준에 의해 정의된 트랜스포트 레이어 및 링크 레이어를 가리킨다. PCIe Transport/Link (PTL)는 PCIe 표준의 트랜스포트 레이어 및 링크 레이어를 지원하는 하드웨어, 또는 PCIe 표준의 트랜스포트 레이어 및 링크 레이어를 지원하는 소프트웨어를 구동하는 하드웨어로 구현될 수 있다.
PCIe PHY (PP)는 PCIe 표준에 의해 정의된 파이 레이어를 가리킨다. PCIe PHY (PP)는 외부 호스트 장치와 다양한 신호들을 교환하는 하드웨어 및 PCIe 표준의 파이 레이어를 지원하는 소프트웨어를 구동하는 하드웨어로 구현될 수 있다.
도 3에서, 메모리 컨트롤러(110)는 PCIe 인터페이스(PI)를 통해 외부 호스트 장치와 통신하는 것으로 설명된다. 그러나, 메모리 컨트롤러(110)가 외부 호스트 장치와 통신하는 인터페이스의 종류는 PCIe 인터페이스로 한정되지 않는다.
네트워크 인터페이스(NI)는 네트워크 표준, 예를 들어 이더넷 표준에 따라 외부 네트워크와 통신하도록 구성된다. 네트워크 인터페이스(NI)는 외부 네트워크를 통해 수신되는 요청을 버스(BUS)로 전달할 수 있다. 네트워크 인터페이스(NI)는 버스(BUS)로부터 수신되는 메시지를 외부 네트워크로 출력할 수 있다. 네트워크 인터페이스(NI)는 브릿지 회로(BC2), 이더넷 컨트롤러(ETC), RDMA (Remote DMA) 회로(RDC), 이더넷 버퍼(ETB), 이더넷 MAC (ETM), 그리고 이더넷 PHY (ETP)를 포함한다.
브릿지 회로(BC2)는 이더넷 컨트롤러(ETC), RDMA 회로(RDC), 이더넷 버퍼(ETB), 이더넷 MAC (ETM), 그리고 이더넷 PHY (ETP)와 버스(BUS) 사이의 통신을 중개하도록 구성된다.
이더넷 컨트롤러(ETC)는 네트워크 인터페이스(NI)가 외부 네트워크와 통신하고 브릿지 회로(BC1)를 통해 버스(BUS)와 통신하는 제반 동작을 제어할 수 있다. 이더넷 버퍼(ETB)는 네트워크 인터페이스(NI)의 버퍼 메모리로 동작할 수 있다. RDMA 회로(RDC)는 외부 네트워크와 데이터를 교환하도록 구성된다. 이더넷 MAC (ETM)은 이더넷 표준에 따라 맥 계층을 지원하는 하드웨어 또는 이더넷 맥 계층을 지원하는 소프트웨어를 구동하는 하드웨어로 구현될 수 있다. 이더넷 PHY (ETP)는 외부 네트워크와 다양한 신호들을 교환하는 하드웨어 및 이더넷 표준의 파이 레이어를 지원하는 소프트웨어를 구동하는 하드웨어로 구현될 수 있다.
도 3에서, 메모리 컨트롤러(110)는 이더넷 기반으로 외부 네트워크와 통신하는 것으로 설명된다. 그러나, 네트워크 인터페이스(NI)는 이더넷에 기반한 것으로 한정되지 않는다.
요청 큐(RQ)는 PCIe 인터페이스(PI) 또는 네트워크 인터페이스(NI)를 통해 수신되는 데이터 중에서 요청, 예를 들어 읽기 요청 또는 쓰기 요청을 저장하도록 구성된다.
해시 회로(HC)는 PCIe 인터페이스(PI) 또는 네트워크 인터페이스(NI)를 통해 수신되는 데이터에 대해 해시 동작을 수행하도록 구성된다. 예를 들어, 해시 회로(HC)는 요청 큐(RQ)에 저장된 각 요청의 전부 또는 일부로부터 해시를 계산할 수 있다. 해시 회로(HC)는 해시 동작을 수행하도록 구성되는 하드웨어일 수 있다. 해시 회로(HC)는 해시 동작을 수행하는 소프트웨어를 구동하도록 구성되는 하드웨어일 수 있다.
DMA 회로(DC)는 PCIe 인터페이스(PI) 또는 네트워크 인터페이스(NI)를 통해 외부 호스트 장치 또는 외부 네트워크와 데이터를 교환할 수 있다. DMA 회로(DC)는 제1 DRAM (120) 또는 제2 DRAM (130)으로부터 데이터를 읽고, 읽어진 데이터를 PCIe 인터페이스(PI) 또는 네트워크 인터페이스(NI)로 출력할 수 있다. DMA 회로(DC)는 PCIe 인터페이스(PI) 또는 네트워크 인터페이스(NI)를 통해 수신되는 데이터를 제1 DRAM (120) 또는 제2 DRAM (130)에 저장할 수 있다.
코어 회로(CC)는 메모리 컨트롤러(110)의 제반 동작을 제어할 수 있다. 코어 회로(CC)는 요청 큐(RQ)에 저장된 요청에 응답하여 제1 DRAM (120) 및 제2 DRAM (130)을 액세스할 수 있다. 코어 회로(CC)는 복수의 코어들을 포함할 수 있다.
버퍼 관리자(BM)는 버스(BUS), 버퍼 메모리(BB), 제1 에러 정정 회로(EC1), 그리고 제2 에러 정정 회로(EC2) 사이의 통신을 중개할 수 있다.
버퍼 메모리(BB)는 제1 DRAM (120)에 기입되는 데이터 또는 제1 DRAM (120)으로부터 읽히는 데이터를 임시로 저장하도록 구성될 수 있다. 버퍼 메모리(BB)는 제2 DRAM (130)에 기입되는 데이터 또는 제2 DRAM (130)으로부터 읽히는 데이터를 임시로 저장하도록 구성될 수 있다. 버퍼 메모리(BB)는 코어 회로(CC)에 의해 관리되는 다양한 정보를 임시로 저장하도록 구성될 수 있다. 버퍼 메모리(BB)는 SRAM (Static RAM)을 포함할 수 있다.
제1 에러 정정 회로(EC1) 및 제2 에러 정정 회로(EC2)는 각각 버퍼 관리자(BM)와 통신할 수 있다. 제1 DRAM 컨트롤러(DC1) 및 제2 DRAM 컨트롤러(DC2)는 제1 에러 정정 회로(EC1) 및 제2 에러 정정 회로(EC2)와 각각 통신하고, 제1 DRAM (120) 및 제2 DRAM (130)을 각각 제어할 수 있다.
도 4는 본 발명의 실시 예에 따른 스토리지 장치(100)의 동작 방법의 제1 예를 보여주는 순서도이다. 예시적으로, 스토리지 장치(100)의 쓰기 방법이 도 4에 도시된다. 도 1, 도 3 및 도 4를 참조하면, S110 단계에서, 스토리지 장치(100)는 쓰기 데이터 및 키(key)를 포함하는 쓰기 요청이 수신된다. 키를 포함하는 쓰기 요청은 요청 큐(RQ)에 저장될 수 있다. 쓰기 데이터는 버퍼 메모리(BB)에 저장될 수 있다.
S120 단계에서, 쓰기 요청에 포함된 키에 대해 해시 동작이 수행되어 메타 데이터가 생성된다. 예를 들어, 메타 데이터는 쓰기 데이터가 기입될 제1 DRAM (120)의 저장 공간의 위치 정보를 포함할 수 있다.
S130 단계에서, 메타 데이터에 따라 쓰기 데이터가 제1 DRAM (120)에 저장된다. 예를 들어, 제1 DRAM (120)의 저장 공간 중에서, 메타 데이터가 가리키는 위치 정보에 대응하는 저장 공간에 쓰기 데이터가 기입될 수 있다. 예를 들어, 쓰기 데이터는 제1 DRAM 컨트롤러(DC1)의 제어에 따라 제1 DRAM (120)에 기입될 수 있다.
S140 단계에서, 메타 데이터가 제2 DRAM (130)에 기입된다. 예를 들어, 코어 회로(CC)는 쓰기 요청에 포함된 키와 키로부터 생성된 메타 데이터를 상호 연관하는 테이블을 생성하고, 생성된 테이블을 제2 DRAM (130)에 저장할 수 있다. 코어 회로(CC)는 테이블의 검색을 지원하는 인덱스를 더 생성하고, 생성된 인덱스를 제2 DRAM (130)에 저장할 수 있다. 메타 데이터, 테이블 및 인덱스는 제2 DRAM 컨트롤러(DC2)의 제어에 따라 제2 DRAM (130)에 저장될 수 있다.
스토리지 장치(100)는 키-값 저장(key-value store)에 기반하여 데이터를 관리할 수 있다. 쓰기 요청에 포함된 키는 키-값 저장의 키에 해당하고, 쓰기 데이터는 키-값 저장의 값(value)에 해당할 수 있다. 스토리지 장치(100)는 쓰기 요청에 포함된 키에 대해 해시 동작을 수행하여 메타 데이터를 생성할 수 있다. 쓰기 데이터는 제1 DRAM (120)의 저장 공간 중에서 메타 데이터가 가리키는 위치에 저장될 수 있다. 스토리지 장치(120)는 키로부터 생성된 메타 데이터를 제2 DRAM (130)에 저장할 수 있다.
도 5는 본 발명의 실시 예에 다른 스토리지 장치(100)의 동작 방법의 제2 예를 보여준다. 예시적으로, 스토리지 장치(100)의 읽기 방법이 도 5에 도시된다. 도 1, 도 3 및 도 5를 참조하면, S210 단계에서, 스토리지 장치(100)는 키(key)를 포함하는 읽기 요청이 수신된다. 키를 포함하는 읽기 요청은 요청 큐(RQ)에 저장될 수 있다.
S220 단계에서, 스토리지 장치(100)는 키에 대응하는 메타 데이터를 제2 DRAM (130)으로부터 읽을 수 있다. 예를 들어, 코어 회로(CC)는 제2 DRAM (130)에 저장된 테이블을 이용하여, 키와 연관된 메타 데이터를 검출할 수 있다. 코어 회로(CC)는 제2 DRAM (130)에 저장된 인덱스를 참조하여, 테이블로부터 키와 연관된 메타 데이터를 검출할 수 있다. 메타 데이터는 제2 DRAM 컨트롤러(DC2)의 제어에 따라 제2 DRAM (130)으로부터 읽어질 수 있다.
S230 단계에서, 스토리지 장치(100)는 제2 DRAM (130)으로부터 읽어진 메타 데이터에 따라, 제1 DRAM (120)으로부터 데이터를 읽을 수 있다. 데이터는 제1 DRAM 컨트롤러(DC1)의 제어에 따라 제1 DRAM (120)으로부터 읽어질 수 있다.
S240 단계에서, 스토리지 장치(100)는 읽어진 데이터를 출력할 수 있다.
스토리지 장치(100)는 키-값 저장(key-value store)에 기반하여 데이터를 관리할 수 있다. 읽기 요청에 포함된 키는 키-값 저장의 키에 해당하고, 제1 DRAM (120)으로부터 읽어지는 데이터는 키-값 저장의 값(value)에 해당할 수 있다. 스토리지 장치(100)는 읽기 요청에 포함된 키에 대해 해시 동작을 수행하여 메타 데이터를 생성하는 대신, 읽기 요청에 포함된 키에 대응하는 메타 데이터를 제2 DRAM (130)으로부터 읽을 수 있다. 읽기 데이터는 제1 DRAM (120)의 저장 공간 중에서 메타 데이터가 가리키는 위치로부터 읽어질 수 있다.
도 4 및 도 5를 참조하여 설명된 바와 같이, 스토리지 장치(100)는 키-값 저장에 기반하여 동작하도록 구성될 수 있다. 쓰기 동작 시에, 스토리지 장치(100)는 쓰기 데이터를 제1 DRAM (120)에 저장하고, 키로부터 생성되는 메타 데이터를 제2 DRAM (130)에 저장할 수 있다. 읽기 동작 시에, 스토리지 장치(100)는 키에 대응하는 메타 데이터를 제2 DRAM (130)으로부터 읽고, 메타 데이터에 기반하여 제1 DRAM (120)으로부터 데이터를 읽을 수 있다. 쓰기 동작 시에 생성된 메타 데이터가 제2 DRAM (130)에 저장되므로, 읽기 동작 시에 메타 데이터를 생성하는 동작이 생략된다. 따라서, 스토리지 장치(100)의 동작 성능이 향상된다.
제1 DRAM (120)은 대용량의 데이터를 저장하도록 제1 타입으로 특화될 수 있으며, 제2 DRAM (130)은 소용량의 메타 데이터를 저장하도록 제2 타입으로 특화될 수 있다. 제1 DRAM (120) 및 제2 DRAM (130)이 각각 제1 타입과 제2 타입으로 특화됨에 따라, 스토리지 장치(100)의 동작 성능이 한층 더 향상될 수 있다.
도 6은 본 발명의 제2 실시 예에 따른 스토리지 장치(200)를 보여주는 블록도이다. 도 7은 본 발명의 제2 실시 예에 따른 메모리 컨트롤러(210)를 보여주는 블록도이다. 스토리지 장치(200)는 제1 타입의 복수의 제1 DRAM들(220_1~220_N), 제1 타입의 복수의 제1 DRAM 컨트롤러들(DC1_1~DC1_N), 제1 타입의 복수의 제1 에러 정정 회로들(EC1_1~EC1_N), 제2 타입의 제2 DRAM (230), 제2 타입의 제2 DRAM 컨트롤러(DC2), 그리고 제2 타입의 제2 에러 정정 회로(EC2)를 포함한다.
도 1 및 도 3의 스토리지 장치(100) 및 메모리 컨트롤러(110)와 비교하면, 스토리지 장치(200)는 복수의 제1 DRAM들(220_1~220_N), 복수의 제1 DRAM 컨트롤러들(DC1_1~DC1_N), 그리고 복수의 제1 에러 정정 회로들(EC1_1~EC1_N)을 포함한다. 복수의 제1 DRAM 컨트롤러들(DC1_1~DC1_N)은 각각 복수의 제1 DRAM들(220_1~220_N)을 독립적으로 제어할 수 있다. 복수의 제1 에러 정정 회로들(EC1_1~EC1_N)은 복수의 제1 DRAM들(220_1~220_N)로부터 각각 읽어지는 데이터의 에러들을 독립적으로 정정할 수 있다.
스토리지 장치(200)는 복수의 제1 DRAM들(220_1~220_N)에 데이터를 저장할 수 있다. 스토리지 장치(200)는 복수의 제1 DRAM들(220_1~220_N)에 기입되는 데이터로부터 생성되는 메타 데이터를 제2 DRAM (230)에 저장할 수 있다. 예를 들어, 스토리지 장치(200)는 복수의 제1 DRAM들(220_1~220_N)에 기입되는 데이터와 연관된 키로부터 생성되는 메타 데이터를 제2 DRAM (230)에 저장할 수 있다.
도 8은 본 발명의 제3 실시 예에 따른 스토리지 장치(300)를 보여주는 블록도이다. 도 9는 본 발명의 제3 실시 예에 따른 메모리 컨트롤러(310)를 보여주는 블록도이다. 스토리지 장치(300)는 제1 타입의 제1 DRAM(320), 제1 타입의 제1 DRAM 컨트롤러(DC1), 제1 타입의 제1 에러 정정 회로(EC1), 제2 타입의 복수의 제2 DRAM들 (330_1~330_N), 제2 타입의 복수의 제2 DRAM 컨트롤러들(DC2_1~DC2_N), 그리고 제2 타입의 복수의 제2 에러 정정 회로들(EC2_1~EC2_N)를 포함한다.
도 1 및 도 3의 스토리지 장치(100) 및 메모리 컨트롤러(110)와 비교하면, 스토리지 장치(300)는 복수의 제2 DRAM들(330_1~330_N), 복수의 제2 DRAM 컨트롤러들(DC2_1~DC2_N), 그리고 복수의 제2 에러 정정 회로들(EC2_1~EC2_N)을 포함한다. 복수의 제2 DRAM 컨트롤러들(DC2_1~DC2_N)은 각각 복수의 제2 DRAM들(330_1~330_N)을 독립적으로 제어할 수 있다. 복수의 제2 에러 정정 회로들(EC2_1~EC2_N)은 복수의 제2 DRAM들(330_1~330_N)로부터 각각 읽어지는 데이터의 에러들을 독립적으로 정정할 수 있다.
스토리지 장치(300)는 제1 DRAM(320)에 데이터를 저장할 수 있다. 스토리지 장치(300)는 제1 DRAM(320)에 기입되는 데이터로부터 생성되는 메타 데이터를 복수의 제2 DRAM들(330_1~330_N)에 저장할 수 있다. 예를 들어, 스토리지 장치(300)는 제1 DRAM(320)에 기입되는 데이터와 연관된 키로부터 생성되는 메타 데이터를 복수의 제2 DRAM들(330_1~330_N)에 저장할 수 있다.
예시적으로, 도 6 및 도 7을 참조하여 설명된 바와 같이, 스토리지 장치(300)는 복수의 제1 DRAM들, 복수의 제1 DRAM 컨트롤러들 및 복수의 제1 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다.
도 10은 본 발명의 제4 실시 예에 따른 스토리지 장치(400)를 보여주는 블록도이다. 도 11는 본 발명의 제4 실시 예에 따른 메모리 컨트롤러(410)를 보여주는 블록도이다. 스토리지 장치(400)는 제1 타입의 제1 DRAM(420), 제1 타입의 제1 DRAM 컨트롤러(DC1), 제1 타입의 제1 에러 정정 회로(EC1), 제2 타입의 제2 DRAM (430), 제2 타입의 제2 DRAM 컨트롤러(DC2), 제2 타입의 제2 에러 정정 회로(EC2), 제3 타입의 제3 NVM (NonVolatile Memory)(440), 제3 타입의 NVM 컨트롤러(DC3), 그리고 제3 타입의 제3 에러 정정 회로(EC3)를 포함한다.
도 1 및 도 3의 스토리지 장치(100) 및 메모리 컨트롤러(110)와 비교하면, 스토리지 장치(400)는 제3 NVM (440), 제3 NVM 컨트롤러(DC3), 그리고 제3 에러 정정 회로(EC3)를 더 포함한다.
제3 NVM (440)은 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM)과 같은 다양한 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다.
제3 NVM 컨트롤러(DC3)는 제3 NVM (440)을 액세스하도록 구성된다. 제3 NVM 컨트롤러(DC3)는 제1 DRAM 컨트롤러(DC1) 및 제2 DRAM 컨트롤러(DC2)와 독립적으로 제3 NVM (440)을 제어할 수 있다.
제3 에러 정정 회로(EC3)는 제3 NVM (440)으로부터 읽어지는 데이터의 에러를 정정하도록 구성될 수 있다. 예를 들어, 제3 NVM (440)에 쓰기 데이터가 기입될 때, 제3 에러 정정 회로(EC3)는 에러 정정 데이터를 생성할 수 있다. 에러 정정 데이터는 쓰기 데이터와 함께 제3 NVM (440)에 기입될 수 있다. 읽기 시에, 제3 NVM (440)으로부터 데이터 및 에러 정정 데이터가 읽어질 수 있다. 제3 에러 정정 회로(EC3)는 제3 NVM (440)으로부터 읽어진 에러 정정 데이터를 이용하여, 제3 NVM (440)으로부터 읽어진 데이터의 에러를 정정할 수 있다.
예시적으로, 스토리지 장치(400)는 제1 DRAM (420) 또는 제2 DRAM (430)에 기입되는 데이터를 제3 NVM (440)에 백업할 수 있다. 예를 들어, 제1 DRAM (420) 또는 제2 DRAM (430)에 기입되는 데이터는 제3 NVM (440)에 백업될 수 있다.
예를 들어, 제1 DRAM (420) 또는 제2 DRAM (430)에 데이터가 기입될 때에, 데이터는 제3 NVM (440)에 함께 기입될 수 있다. 제1 DRAM (420) 또는 제2 DRAM (430)에 데이터가 기입될 때에, 데이터는 제3 NVM (440)에 기입되도록 스케줄(schedule)될 수 있다.
도 6 및 도 7을 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제1 DRAM들, 복수의 제1 DRAM 컨트롤러들, 그리고 복수의 제1 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다. 도 8 및 도 9를 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제2 DRAM들, 복수의 제2 DRAM 컨트롤러들, 그리고 복수의 제2 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다. 도 6 내지 도 9를 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제3 NVM들, 복수의 제3 NVM 컨트롤러들, 그리고 복수의 제3 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다.
도 12는 본 발명의 제5 실시 예에 따른 스토리지 장치(500)를 보여주는 블록도이다. 도 13은 본 발명의 제5 실시 예에 따른 메모리 컨트롤러(510)를 보여주는 블록도이다. 스토리지 장치(500)는 제1 타입의 제1 DRAM(520), 제1 타입의 제1 DRAM 컨트롤러(DC1), 제1 타입의 제1 에러 정정 회로(EC1), 제2 타입의 제2 DRAM (530), 제2 타입의 제2 DRAM 컨트롤러(DC2), 제2 타입의 제2 에러 정정 회로(EC2), 제3 타입의 제3 NVM (NonVolatile Memory)(540), 제3 타입의 NVM 컨트롤러(DC3), 제3 타입의 제3 에러 정정 회로(EC3), 제4 타입의 제4 NVM (550), 제4 타입의 제4 NVM 컨트롤러(DC4), 그리고 제4 타입의 제4 에러 정정 회로(EC4)를 포함한다.
도 1 및 도 3의 스토리지 장치(100) 및 메모리 컨트롤러(110)와 비교하면, 스토리지 장치(500)는 제3 NVM (540), 제3 NVM 컨트롤러(DC3), 제3 에러 정정 회로(EC3), 제4 타입의 제4 NVM (550), 제4 타입의 제4 NVM 컨트롤러(DC4), 그리고 제4 타입의 제4 에러 정정 회로(EC4)를 더 포함한다.
제3 NVM (540) 및 제4 NVM (550) 각각은 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM)과 같은 다양한 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다.
제3 NVM 컨트롤러(DC3)는 제3 NVM (540)을 액세스하도록 구성된다. 제4 NVM 컨트롤러(DC4)는 제4 NVM (550)을 액세스하도록 구성된다.
제3 에러 정정 회로(EC3)는 제3 NVM (540)으로부터 읽어지는 데이터의 에러를 정정하도록 구성될 수 있다. 제4 에러 정정 회로(EC4)는 제4 NVM (550)으로부터 읽어지는 데이터의 에러를 정정하도록 구성될 수 있다.
예시적으로, 스토리지 장치(400)는 제1 DRAM (520) 또는 제2 DRAM (530)에 기입되는 데이터를 제3 NVM (540) 또는 제4 NVM (550)에 백업할 수 있다. 예를 들어, 제1 DRAM (520)에 기입되는 데이터는 제3 NVM (540)에 백업되거나 제3 NVM (540)에 백업되도록 스케줄될 수 있다. 제2 DRAM (530)에 기입되는 데이터는 제4 NVM (550)에 백업되거나 제4 NVM (550)에 백업되도록 스케줄될 수 있다.
제3 타입과 제4 타입은 도 2를 참조하여 설명된 제1 타입과 제2 타입에 각각 대응할 수 있다. 예를 들어, 제3 타입의 제3 NVM (540)은 낸드 플래시 메모리이고, 제4 타입의 제4 NVM (550)은 PRAM, MRAM, RRAM, FeRAM, 노어 플래시 메모리 중 적어도 하나를 포함할 수 있다.
도 6 및 도 7을 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제1 DRAM들, 복수의 제1 DRAM 컨트롤러들, 그리고 복수의 제1 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다. 도 8 및 도 9를 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제2 DRAM들, 복수의 제2 DRAM 컨트롤러들, 그리고 복수의 제2 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다. 도 6 내지 도 9를 참조하여 설명된 바와 같이, 스토리지 장치(400)는 복수의 제3 NVM들, 복수의 제3 NVM 컨트롤러들, 그리고 복수의 제3 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다. 또한, 도 6 내지 도 9를 참조하여 설명된 바와 같이, 스토리지 장치(500)는 복수의 제4 NVM들, 복수의 제4 NVM 컨트롤러들, 그리고 복수의 제4 에러 정정 회로들을 포함하도록 변경 및 응용될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 200, 300, 400, 500; 스토리지 장치
110, 210, 310, 410, 510; 메모리 컨트롤러
120, 220, 320, 420, 520; 제1 DRAM
130, 230, 330, 430, 530; 제2 DRAM
440, 540; 제3 NVM
550; 제4 NVM

Claims (10)

  1. 제1 타입의 제1 DRAM (Dynamic Random Access Memory);
    상기 제1 타입과 다른 제2 타입의 제2 DRAM;
    외부 호스트 장치의 요청에 따라 상기 제1 DRAM을 액세스하도록 구성되는 제1 타입의 제1 DRAM 컨트롤러;
    상기 외부 호스트 장치의 요청에 따라 상기 제2 DRAM을 액세스하도록 구성되는 제2 타입의 제2 DRAM 컨트롤러;
    상기 제1 DRAM으로부터 읽어지는 제1 읽기 데이터의 에러를 정정하도록 구성되는 제1 타입의 제1 에러 정정 회로; 그리고
    상기 제2 DRAM으로부터 읽어지는 제2 읽기 데이터의 에러를 정정하도록 구성되는 제2 타입의 제2 에러 정정 회로를 포함하는 스토리지 장치.
  2. 제1 항에 있어서,
    상기 제1 DRAM의 저장 공간은 상기 외부 호스트 장치에 의해 상기 스토리지 장치의 저장 공간으로 식별되고,
    상기 제2 DRAM의 저장 공간은 상기 외부 호스트 장치에 의해 상기 스토리지 장치의 저장 공간으로 식별되지 않는 스토리지 장치.
  3. 제1 항에 있어서,
    상기 외부 호스트 장치의 요청은 쓰기 데이터를 포함하는 쓰기 요청이고,
    상기 제1 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 쓰기 데이터를 상기 제1 DRAM에 저장하도록 구성되고,
    상기 제2 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청으로부터 생성되는 메타 데이터를 상기 제2 DRAM에 저장하도록 구성되는 스토리지 장치.
  4. 제1 항에 있어서,
    상기 외부 호스트 장치의 요청은 키 및 상기 키에 대응하는 쓰기 데이터를 포함하고,
    상기 제1 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 쓰기 데이터를 상기 제1 DRAM에 저장하도록 구성되고,
    상기 제2 DRAM 컨트롤러는 상기 외부 호스트 장치의 요청에 응답하여 상기 키로부터 생성되는 메타 데이터를 상기 제2 DRAM에 저장하도록 구성되는 스토리지 장치.
  5. 제4 항에 있어서,
    상기 키에 기반하여 해시 동작을 수행하도록 구성되는 해시 회로를 더 포함하고,
    상기 제2 DRAM 컨트롤러는 상기 해시 회로의 출력을 상기 제2 DRAM에 저장하도록 구성되는 스토리지 장치.
  6. 제4 항에 있어서,
    상기 제1 DRAM 컨트롤러는 상기 제1 DRAM의 저장 공간 중에서 상기 메타 데이터가 가리키는 저장 공간에 상기 쓰기 데이터를 기입하도록 구성되는 스토리지 장치.
  7. 제1 항에 있어서,
    상기 외부 호스트 장치의 요청은 키를 포함하고,
    상기 제2 DRAM 컨트롤러는 상기 키에 대응하는 메타 데이터를 상기 제2 DRAM으로부터 읽도록 구성되고,
    상기 제1 DRAM 컨트롤러는 상기 읽어진 메타 데이터에 기반하여 상기 제1 DRAM으로부터 상기 제1 읽기 데이터를 읽도록 구성되는 스토리지 장치.
  8. 제1 항에 있어서,
    상기 제1 에러 정정 회로가 한 번에 에러 정정을 수행하는 비트들의 단위는 상기 제2 에러 정정 회로가 한 번에 에러 정정을 수행하는 비트들의 단위보다 큰 스토리지 장치.
  9. 이종의(heterogeneous) 제1 DRAM (Dynamic Random Access Memory) 및 제2 DRAM을 포함하는 스토리지 장치의 동작 방법에 있어서:
    상기 스토리지 장치에서 키 및 데이터를 포함하는 요청을 수신하는 단계;
    상기 스토리지 장치에서 상기 키에 대해 해시 동작을 수행하여 메타 데이터를 생성하는 단계;
    상기 스토리지 장치에서 상기 메타 데이터에 기반하여, 상기 데이터를 상기 제1 DRAM에 기입하는 단계; 그리고
    상기 스토리지 장치에서 상기 메타 데이터를 상기 제2 DRAM에 기입하는 단계를 포함하는 동작 방법.
  10. 제9 항에 있어서,
    상기 스토리지 장치에서 상기 키를 수신하는 단계;
    상기 스토리지 장치에서 상기 키에 대응하는 상기 메타 데이터를 상기 제2 DRAM으로부터 읽는 단계;
    상기 스토리지 장치에서 상기 읽어진 메타 데이터에 기반하여 상기 제1 DRAM으로부터 상기 데이터를 읽는 단계; 그리고
    상기 스토리지 장치에서 상기 읽어진 데이터를 출력하는 단계를 더 포함하는 동작 방법.
KR1020140155556A 2014-11-10 2014-11-10 스토리지 장치 및 스토리지 장치의 동작 방법 KR20160056380A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140155556A KR20160056380A (ko) 2014-11-10 2014-11-10 스토리지 장치 및 스토리지 장치의 동작 방법
US14/862,089 US20160132265A1 (en) 2014-11-10 2015-09-22 Storage device and operating method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140155556A KR20160056380A (ko) 2014-11-10 2014-11-10 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20160056380A true KR20160056380A (ko) 2016-05-20

Family

ID=55912258

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140155556A KR20160056380A (ko) 2014-11-10 2014-11-10 스토리지 장치 및 스토리지 장치의 동작 방법

Country Status (2)

Country Link
US (1) US20160132265A1 (ko)
KR (1) KR20160056380A (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170024140A1 (en) * 2015-07-20 2017-01-26 Samsung Electronics Co., Ltd. Storage system and method for metadata management in non-volatile memory
US10133764B2 (en) 2015-09-30 2018-11-20 Sandisk Technologies Llc Reduction of write amplification in object store
US10747676B2 (en) 2016-02-23 2020-08-18 Sandisk Technologies Llc Memory-efficient object address mapping in a tiered data structure
US10185658B2 (en) 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US10289340B2 (en) 2016-02-23 2019-05-14 Sandisk Technologies Llc Coalescing metadata and data writes via write serialization with device-level address remapping
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
CN107817945B (zh) * 2016-09-13 2021-07-27 中国科学院微电子研究所 一种混合内存结构的数据读取方法和系统
US10725672B2 (en) 2016-10-12 2020-07-28 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US10169126B2 (en) * 2016-10-12 2019-01-01 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US10223252B2 (en) * 2017-03-31 2019-03-05 Samsung Electronics Co., Ltd. Hybrid DRAM array including dissimilar memory cells
KR102449346B1 (ko) 2017-12-12 2022-10-04 삼성전자주식회사 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
KR102482896B1 (ko) 2017-12-28 2022-12-30 삼성전자주식회사 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
KR102471415B1 (ko) * 2018-01-17 2022-11-29 에스케이하이닉스 주식회사 반도체 장치
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US11061751B2 (en) * 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US10991445B2 (en) 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
KR20200034420A (ko) * 2018-09-21 2020-03-31 삼성전자주식회사 복수의 에러 정정 기능을 갖는 메모리 장치 및 메모리 시스템과 그 동작 방법
KR20210051668A (ko) 2019-10-31 2021-05-10 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 모듈
KR20220018757A (ko) * 2020-08-07 2022-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법
US11841767B2 (en) * 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031628A1 (en) * 2004-06-03 2006-02-09 Suman Sharma Buffer management in a network device without SRAM
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
US9438426B2 (en) * 2014-10-03 2016-09-06 Seagate Technology Llc Key-value data storage device with hybrid architecture

Also Published As

Publication number Publication date
US20160132265A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
KR20160056380A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US10365832B2 (en) Two-level system main memory
US20190034427A1 (en) Data management system employing a hash-based and tree-based key-value data structure
US9513992B2 (en) Method and apparatus to perform concurrent read and write memory operations
US9921914B2 (en) Redundant array of independent disks (RAID) write hole solutions
US10761779B2 (en) Storage compute offloads on sharded and erasure-coded data
US8601347B1 (en) Flash memory device and storage control method
US11301167B2 (en) Technologies for providing multiple tier memory media management
US10152244B2 (en) Programmable memory command sequencer
US10152280B2 (en) Storage device and control method
US10325631B1 (en) Power management integrated circuit with dual power feed
US20200333975A1 (en) Completion entry throttling using host memory
US10990291B2 (en) Software assist memory module hardware architecture
US8271968B2 (en) System and method for transparent hard disk drive update
CN108694101B (zh) 存储器侧高速缓存内容的持久性高速缓存
US9547460B2 (en) Method and system for improving cache performance of a redundant disk array controller
US20190042152A1 (en) Atomic cross-media writes on a storage device
US20190227740A1 (en) Atomic write method for multi-transaction
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
US20220318091A1 (en) Storage system and operating method thereof
US11182158B2 (en) Technologies for providing adaptive memory media management
US8964495B2 (en) Memory operation upon failure of one of two paired memory devices
US9305036B2 (en) Data set management using transient data structures
KR102028666B1 (ko) 비식별 요청을 처리하는 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid