KR102397582B1 - 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법 - Google Patents

데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법 Download PDF

Info

Publication number
KR102397582B1
KR102397582B1 KR1020150088574A KR20150088574A KR102397582B1 KR 102397582 B1 KR102397582 B1 KR 102397582B1 KR 1020150088574 A KR1020150088574 A KR 1020150088574A KR 20150088574 A KR20150088574 A KR 20150088574A KR 102397582 B1 KR102397582 B1 KR 102397582B1
Authority
KR
South Korea
Prior art keywords
data
scale
storage devices
out storage
controller
Prior art date
Application number
KR1020150088574A
Other languages
English (en)
Other versions
KR20160150497A (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 KR1020150088574A priority Critical patent/KR102397582B1/ko
Priority to US15/141,397 priority patent/US10503406B2/en
Priority to CN201610443293.XA priority patent/CN106257401B/zh
Publication of KR20160150497A publication Critical patent/KR20160150497A/ko
Application granted granted Critical
Publication of KR102397582B1 publication Critical patent/KR102397582B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Abstract

데이터 저장 장치가 공개된다. 상기 데이터 저장 장치는 스케일-아웃 저장 장치들과, 호스트와 주고받는 데이터의 특성을 판단하고 판단된 특성에 기초하여 상기 데이터를 상기 스케일-아웃 저장 장치들 중에서 어느 하나와 주고받는 컨트롤러를 포함한다. 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리와, 불휘발성 메모리와, 상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함하다.

Description

데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법 {DATA STORAGE DEVICE, DATA PROCESSING SYSTEM HAVING THE SAME AND METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 호스트와 주고받는 데이터의 특성에 따라 스케일-아웃 저장 장치들 중에서 어느 하나와 데이터를 주고받을 수 있는 컨트롤러를 포함하는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되고, 상기 메모리 장치는 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 플래시 메모리 장치는 복수의 메모리 셀들이 한 번의 프로그램 작동으로 이레이즈(erase) 또는 프로그램(program)되는 EEPROM의 일 예이다. 예컨대, 프로그램 또는 리드는 페이지 단위로 수행되고, 이레이즈는 블록 단위로 수행된다. 블록은 복수의 페이지들을 포함할 수 있다.
플래시 메모리 장치는 복수의 플래시 메모리 칩들을 포함할 수 있다. 상기 플래시 메모리 장치 전체의 수명과 성능은 상기 복수의 플래시 메모리 칩들 중에서 어느 하나에 따라 결정될 수 있다. 예컨대, 상기 복수의 플래시 메모리 칩들 중에서 어느 하나라도 닳거나(wear-out) 성능이 저하되면, 상기 복수의 플래시 메모리 칩들을 포함하는 플래시 메모리 장치 전체의 수명과 성능은 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 데이터의 특성을 판단하고 판단된 특성에 따라 상기 데이터를 스케일-아웃 저장 장치들 중에서 상기 판단된 특성에 상응하는 스케일-아웃 저장 장치로 전송하여 성능과 수명을 향상시킬 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 스케일-아웃 저장 장치들과, 호스트와 주고받는 데이터의 특성을 판단하고, 판단된 특성에 기초하여 상기 데이터를 상기 스케일-아웃 저장 장치들 중에서 어느 하나와 주고받는 컨트롤러를 포함하고, 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리와, 불휘발성 메모리와, 상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함한다.
상기 컨트롤러는 상기 스케일-아웃 장치들 각각의 타입을 결정하고, 결정된 상기 스케일-아웃 장치들 각각의 타입과 상기 판단된 특성에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는 상기 스케일-아웃 장치들 각각의 타입을 결정하기 위한 사용자 입력을 수신하는 사용자 인터페이스를 포함한다.
상기 컨트롤러는 상기 사용자 입력에 기초하여 상기 스케일-아웃 장치들 각각의 타입을 결정하는 타입 포맷터와, 상기 데이터의 특성을 판단하고, 상기 타입 포맷터에 의해 결정된 상기 스케일-아웃 장치들 각각의 타입과 상기 판단된 특성에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 데이터 저장 장치는 타입 포맷터와 분류기를 저장하는 메모리와, 상기 타입 포맷터와 상기 분류기를 실행하는 CPU(central processing unit)를 더 포함하고, 상기 CPU에 의해 실행되는 상기 타입 포맷터는 상기 사용자 입력에 기초하여 상기 스케일-아웃 장치들 각각의 타입을 결정하고, 상기 CPU에 의해 실행되는 상기 분류기는 상기 데이터의 특성을 판단하고, 상기 타입 포맷터에 의해 결정된 상기 스케일-아웃 장치들 각각의 타입과 상기 판단된 특성에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 데이터의 특성은 상기 데이터의 논리 어드레스이다.
상기 컨트롤러는, 상기 판단된 특성과 상기 컨트롤러의 작동 주파수에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러에 접속된 외부 휘발성 메모리를 더 포함하고, 상기 컨트롤러는, 상기 판단된 특성과 상기 외부 휘발성 메모리의 대역폭에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는, 상기 판단된 특성과 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 포함된 메모리 셀들에 대한 프로그램 방식에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는, 상기 판단된 특성과 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL 매핑 사이즈에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는, 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역의 비율과 상기 판단된 특성에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는, 상기 판단된 특성과 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 용량에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는 각 스케일-아웃 저장 장치에 포함된 상기 휘발성 메모리의 특성과 상기 불휘발성 메모리의 특성을 판단하고, 상기 컨트롤러의 작동 주파수를 판단하고, 상기 컨트롤러는, 상기 판단된 특성, 판단된 상기 휘발성 메모리의 특성, 판단된 상기 불휘발성 메모리의 특성, 판단된 상기 작동 주파수 중에서 적어도 하나에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 휘발성 메모리의 특성은 대역폭이고, 상기 불휘발성 메모리의 특성은 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 포함된 메모리 셀들에 대한 프로그램 방식, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL 매핑 사이즈, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역의 비율, 및 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 용량 중에서 적어도 하나를 포함한다.
실시 예에 따라, 상기 데이터는 핫 데이터 또는 콜드 데이터이다. 실시 예에 따라, 상기 데이터는 프로그램 데이터 또는 리드 데이터이다. 실시 예에 따라, 상기 데이터는 랜덤 데이터 또는 시퀀셜 데이터이다. 실시 예에 따라, 상기 데이터는 사용자 데이터 또는 메타데이터이다.
상기 휘발성 메모리와 상기 스케일-아웃 컨트롤러는 멀티 칩 패키지로 패키징된다. 상기 휘발성 메모리는 DRAM이고, 상기 불휘발성 메모리는 플래시 메모리이고, 상기 데이터 저장 장치는 솔리드 스테이트 드라이브이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 호스트와, 인터페이스를 통해 상기 호스트에 접속된 데이터 저장 장치를 포함한다. 상기 데이터 저장 장치는 스케일-아웃 저장 장치들과, 상기 인터페이스를 통해 상기 호스트와 주고받는 데이터의 특성을 판단하고, 판단된 특성에 기초하여 상기 데이터를 상기 스케일-아웃 저장 장치들 중에서 어느 하나와 주고받는 컨트롤러를 포함하고, 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리와, 불휘발성 메모리와, 상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함한다.
상기 데이터 저장 장치는 상기 스케일-아웃 장치들 각각의 타입을 결정하기 위한 사용자 입력을 수신하는 사용자 인터페이스를 더 포함하고, 상기 컨트롤러는 상기 사용자 입력에 기초하여 상기 스케일-아웃 장치들 각각의 타입을 결정하고, 결정된 상기 스케일-아웃 장치들 각각의 타입과 상기 판단된 특성에 기초하여 상기 데이터를 상기 어느 하나와 주고받는다.
상기 데이터 저장 장치는 상기 컨트롤러에 접속된 DRAM을 더 포함하고, 상기 컨트롤러는 상기 판단된 특성, 상기 컨트롤러의 작동 주파수, 상기 DRAM의 대역폭, 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 포함된 메모리 셀들에 대한 프로그램 방식, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL의 매핑 사이즈, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역의 비율, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 용량 중에서 적어도 하나에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 컨트롤러는 각 스케일-아웃 저장 장치에 포함된 상기 휘발성 메모리의 특성과 상기 불휘발성 메모리의 특성을 판단하고, 상기 컨트롤러의 작동 주파수를 판단하고, 상기 판단된 특성, 판단된 상기 휘발성 메모리의 특성, 판단된 상기 불휘발성 메모리의 특성, 및 판단된 상기 작동 주파수 중에서 적어도 하나에 기초하여, 상기 데이터를 상기 어느 하나와 주고받는다.
상기 휘발성 메모리의 특성은 대역폭이고, 상기 불휘발성 메모리의 특성은 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 포함된 메모리 셀들에 대한 프로그램 방식, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL의 매핑 사이즈, 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역의 비율, 및 상기 각 스케일-아웃 저장 장치의 상기 불휘발성 메모리의 용량 중에서 적어도 하나를 포함한다.
본 발명의 실시 예에 따라, 인터페이스를 통해 호스트와 데이터를 주고받는 데이터 저장 장치를 포함하는 데이터 처리 시스템의 작동 방법은 상기 데이터 저장 장치가 상기 데이터의 특성을 판단하는 단계와, 상기 데이터 저장 장치가, 판단된 특성에 기초하여, 상기 데이터를 스케일-아웃 저장 장치들 중에서 어느 하나와 주고받는 단계를 포함하고, 상기 데이터 저장 장치는 상기 스케일-아웃 저장 장치들을 포함하고 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리와, 불휘발성 메모리와, 상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함한다.
본 발명의 실시 예에 따른 스케일-아웃 저장 장치들을 포함하는 데이터 저장 장치는 호스트로부터 출력된 데이터의 특성을 판단하고, 판단된 특성에 따라 상기 데이터를 상기 스케일-아웃 저장 장치들 중에서 상기 판단된 특성에 상응하는 스케일-아웃 저장 장치로 전송할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 스케일-아웃 저장 장치별로 논리 어드레스를 할당하고, 상기 논리 어드레스에 해당하는 데이터를 상기 논리 어드레스에 매칭되는 스케일-아웃 저장 장치로 전송할 수 있는 효과가 있다.
따라서, 상기 데이터 저장 장치는, 스케일-아웃 저장 장치별로 할당된 데이터 및/또는 스케일-아웃 저장 장치별로 할당된 논리 어드레스를 이용하여, 특정한 스케일-아웃 저장 장치와 상기 데이터를 주고받을 수 있으므로, 상기 데이터 저장 장치의 성능과 수명을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2a는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도의 일 실시 예이다.
도 2b는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도의 다른 실시 예이다.
도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다.
도 4는 도 3에 도시된 제1스케일-아웃 장치의 개략도이다.
도 5는 도 4에 도시된 제1스케일-아웃 장치의 반도체 패키지의 실시 예이다.
도 6은 도 1에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 반도체 패키지의 실시 예이다.
도 7은 도 4에 도시된 제1스케일-아웃 컨트롤러의 블록도이다.
도 8은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 9는 본 발명의 실시 예에 따른 타입 포맷터를 이용하여 논리 어드레스들을 스케일-아웃 저장 장치들에 할당하는 방법을 설명하는 개념도이다.
도 10은 본 발명의 실시 예에 따른 데이터 분류기를 이용하여 논리 어드레스들을 스케일-아웃 저장 장치들로 전송하는 방법을 설명하는 개념도이다.
도 11은 스케일-아웃 저장 장치별로 할당된 논리 어드레스들을 포함하는 제1테이블을 일 실시 예를 나타낸다.
도 12는 스케일-아웃 저장 장치별로 할당된 논리 어드레스들-물리 어드레스들 변환 테이블들을 나타낸다.
도 13은 본 발명의 실시 예에 따라 데이터의 특성에 해당하는 스케일-아웃 저장 장치들에 대한 테이블을 생성하는 과정을 설명하는 플로우 차트이다.
도 14는 본 발명의 실시 예에 따른 데이터 분류기를 이용하여 데이터의 특성을 분석하고, 분석 결과에 따라 상기 데이터를 해당하는 스케일-아웃 저장 장치로 전송하는 과정을 설명하는 개념도이다.
도 15는 본 발명의 실시 예에 따라, 데이터의 특성에 따른 타입별로 스케일-아웃 저장 장치를 분류하는 방법을 설명하기 위한 테이블이다.
도 16은 시퀀셜 액세스와 랜덤 액세스를 설명하기 위한 개념도이다.
도 17은 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 18은 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 19는 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
데이터 저장 장치 또는 상기 데이터 저장 장치를 포함하는 데이터 서버의 데이터 처리 능력을 증가하는 방법으로서 스케일-업(scale-up)과 스케일-아웃(scale-out)이 있다. 상기 스케일-업은 상기 데이터 서버 그 자체의 용량을 증가시켜 상기 데이터 서버의 데이터 처리 능력을 향상시키는 것으로서 수직 스케일링(vertical scaling)으로 불리기도 한다. 상기 스케일-아웃은 접속된 데이터 서버의 개수를 늘려 상기 데이터 서버를 포함하는 시스템의 데이터 처리 능력을 향상시키는 것으로서 수평 스케일링(horizontal scaling)으로 불리기도 한다.
스케일-업 구조는 갖는 데이터 저장 장치에서, 상기 데이터 저장 장치에 포함된 불휘발성 메모리 장치들의 개수가 증가하면, 상기 불휘발성 메모리 장치들을 제어하는 컨트롤러와 상기 불휘발성 메모리 장치들 사이에 구현된 인터페이스의 로딩 커패시턴스(loading capacitance)가 증가할 수 있다. 이에 따라, 상기 데이터 저장 장치의 데이터 처리 속도가 저하될 수 있다. 본 명세서에서 설명된 데이터 저장 장치는 스케일-아웃 구조를 갖는 데이터 저장 장치이다.
본 명세서에서, 스케일-아웃 저장 장치(scale-out storage device)는 휘발성 메모리, 적어도 하나의 불휘발성 메모리, 및 상기 휘발성 메모리와 상기 적어도 하나의 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함할 수 있다. 상기 휘발성 메모리, 상기 적어도 하나의 불휘발성 메모리, 및 상기 스케일-아웃 컨트롤러 각각이 반도체 칩 또는 반도체 패키지로 구현될 때, 상기 스케일-아웃 저장 장치는 멀티 칩 셋(multi chip set)으로 불릴 수 있다. 상기 스케일-아웃 컨트롤러는 코어(core)를 의미할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200), 호스트(200)에 접속된 디스플레이(240), 및 인터페이스(110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
데이터 저장 장치(300)에 포함된 메모리 클러스터(400)의 구조가 도 2a 또는 도 2b에 도시된 구조를 가질 때, 데이터 저장 장치(300)는 스케일-아웃 구조로 구현될 수 있다. 예컨대, 데이터 처리 시스템(100)은 메모리 시스템을 의미할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), SAN(storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리 클러스터(400)를 포함하는 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 드론 (drone), 또는 e-북 (e-book)으로 구현될 수 있으나 이에 한정되는 것은 아니다.
인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드(multimedia card(MMC))인터페이스로 구현될 수 있으나 인터페이스(110)의 종류가 이들에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다. 경우에 따라, 인터페이스(110)는 유선 인터페이스 또는 무선 인터페이스로 구현될 수 있다.
호스트(200)는, 인터페이스(110)를 통해, 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동 등)을 제어할 수 있다. 호스트 (200)는 호스트 컨트롤러를 의미할 수 있다.
호스트(200)는 스케일-아웃 저장 장치별 데이터의 특성 및/또는 스케일-아웃 저장 장치별 논리 어드레스들의 범위를 설정할 수 있는 사용자 인터페이스를 사용자에게 제공할 수 있다. 사용자는 디스플레이(240)에서 디스플레이되는 사용자 인터페이스를 통해 스케일-아웃 저장 장치별 데이터의 특성 및/또는 스케일-아웃 저장 장치별 논리 어드레스들의 범위를 설정할 수 있다. 예컨대, 사용자 인터페이스는 그래픽 사용자 인터페이스(graphical user interface(GUI))일 수 있으나 이에 한정되는 것은 아니다.
CPU(220)와 제1인터페이스(230)는, 버스 구조(또는 버스; 210)를 통해, 명령 및/또는 데이터를 서로 주거나 받을 수 있다. 비록, 도 1에는 버스 구조(210), CPU (220), 및 제1인터페이스(230)를 포함하는 호스트(200)가 도시되어 있으나, 본 발명의 기술적 사상이 도 1에 도시된 호스트(200)에 한정되는 것은 아니다.
실시 예에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 웹 서버(web server), 데이터 서버, 또는 데이터베이스 서버로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 버스 구조(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI Coherency Extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300)의 라이트 작동(write operation)을 제어할 수 있는 라이트 요청, 또는 데이터 저장 장치(300)의 리드 작동(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스(예컨대, 논리 어드레스)를 포함할 수 있고, 상기 리드 요청은 리드 어드레스(예컨대, 논리 어드레스)를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 요청(request)은 명령(command)을 의미할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 데이터 저장 장치(300)로 전송할 수 있다. 또한, 제1인터페이스(230)는 데이터 저장 장치(300)로부터 전송된 응답(response) 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 버스 구조(210)를 통해 CPU(220)로 전송할 수 있다. 실시 예에 따라, 제1인터페이스(230)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(230)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게(compatible) 구현될 수 있다.
제1인터페이스(230)는 디스플레이(240)의 작동을 제어할 수 있고, 디스플레이(240)에 포함된 터치 스크린 또는 터치 패드를 통해 입력되는 사용자 데이터를 CPU(220)로 전송할 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 버퍼(360), 전력 관리 IC(370), 및 메모리 클러스터(400)를 포함할 수 있다. 여기서, 메모리 클러스터(400)의 메모리 장치들의 집합을 의미할 수 있다. 또한, 메모리 클러스터(400)는, 도 2a부터 도 7에 도시된 바와 같이, 스케일-아웃 장치들과 메모리 장치들을 포함할 수 있다.
데이터 저장 장치(300)는 플래시 메모리-기반 메모리 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300)는 SSD(solid-state drive or solid-state disk), 임베디드 SSD(embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드(managed) NAND로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 플래시 메모리-기반 메모리 장치는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다.
플래시 메모리-기반 메모리 장치는 메모리 셀 어레이를 포함할 수 있다. 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함할 수 있다. 예컨대, 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역(active region)을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
실시 예들에 따라, 데이터 저장 장치(300)는 하드 디스크 드라이브(hard disk drive(HDD)), PRAM(phase change RAM) 장치, MRAM(magnetoresistive RAM) 장치, STT-MRAM(spin-transfer torque MRAM) 장치, FRAM(ferroelectric RAM) 장치 또는 RRAM(resistive RAM) 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310)는 호스트(200), 버퍼(360), 및 메모리 클러스터(400) 사이에서 주거나 받는 명령 및/또는 데이터의 전송 또는 처리를 제어할 수 있다. 실시 예들에 따라, 컨트롤러(310)는 IC 또는 SoC로 구현될 수 있다.
컨트롤러(310)는 버스 구조(311), 내부 메모리(315), 데이터 분류 회로 (317), 제2인터페이스(320), 적어도 하나의 CPU(330 및/또는 331), 버퍼 컨트롤러 (340), 및 제3인터페이스(350)를 포함할 수 있다. 버스 구조(311)는 AMBA, AHB, APB, AXI, ASB, ACE 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(315)는 컨트롤러(310)의 작동에 필요한 데이터 또는 컨트롤러 (310)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다.
예컨대, 내부 메모리(315)는 CPU(330 및/또는 331)에 의해 실행될 수 있는 제1플래시 변환 계층(flash translation layer(FTL); FTL1)을 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부팅(booting)될 때, 제1FTL(FTL1)은 메모리 클러스터(400)로부터 내부 메모리(315)로 로드되고 CPU(330 및/또는 331)에 의해 실행될 수 있다.
실시 예들에 따라, 내부 메모리(315)는 RAM(ramdom access memory), DRAM (dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory (TCM))로 구현될 수 있으나 내부 메모리(315)의 종류가 이들에 한정되는 것은 아니다.
데이터 분류 회로(317)는 호스트(200)로부터 전송된 데이터의 특성을 판단하고, 판단의 결과에 따라 상기 데이터를 스케일-아웃 저장 장치별로 분류하고, 분류된 데이터를 해당하는 스케일-아웃 저장 장치로 전송할 수 있다. 상기 스케일-아웃 저장 장치들 각각은 자신에게 할당된(또는 분류된) 데이터를 처리할 수 있도록 서로 다른 타입으로 분류될 수 있다. 따라서, 컨트롤러(310)는, 데이터 분류 회로 (317)를 이용하여, 해당하는 스케일-아웃 저장 장치와 데이터를 주거나 받을 수 있다. 비록, 도 1에서는 데이터 분류 회로(317)가 독립된 회로로 구현된 실시 예가 도시되어 있으나, 데이터 분류 회로(317)는 컨트롤러(310)의 내부에서 어디라도 구현될 수 있다.
또한, 데이터 분류 회로(317)는 사용자에 의해 스케일-아웃 저장 장치별로 할당된 논리 어드레스를 해당하는 스케일-아웃 저장 장치로 전송할 수 있다. 따라서, 컨트롤러(310)는, 데이터 분류 회로(317)를 이용하여, 해당하는 스케일-아웃 저장 장치와 데이터를 주거나 받을 수 있다.
데이터 분류 회로(317)는 타입 포맷터(317-1)와 데이터 분류기(317-2)를 포함할 수 있다. 타입 포맷터(317-1)는, 사용자에 의해 지정된 또는 제조업자에 의해 디폴트로 지정된 타입(예컨대, 데이터의 특성 및/또는 논리 어드레스들)에 따라, 스케일-아웃 저장 장치별로 포맷을 진행할 수 있다. 데이터 분류기(317-2)는, 데이터의 특성 및/또는 논리 어드레스들에 따라, 해당하는 데이터를 해당하는 스케일-아웃 저장 장치로 전송할 수 있다. 타입 포맷터(317-1)와 데이터 분류기(317-2)의 작동들은 도 9부터 도 16을 참조하여 상세히 설명될 것이다.
제2인터페이스(320)는 호스트(200)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다. 또한, 제2인터페이스(320)는 호스트(200)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 적어도 하나의 CPU(330 및/또는 331) 및/또는 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예에 따라, 제2인터페이스(320)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제2인터페이스(320)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게 구현될 수 있다. 예컨대, 제2인터페이스(320)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
하나 또는 그 이상의 CPU(330 및/또는 331)는, 버스 구조(311)를 통해, 내부 메모리(315), 데이터 분류 회로(317), 제2인터페이스(320), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 제어할 수 있다. 각 CPU(330과 331)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 실시 예에 따라, 하나 또는 그 이상의 CPU(330 및/또는 331)는 PMIC(370)를 제어할 수 있다.
예컨대, 제1CPU(330)는 제2인터페이스(320)를 통해 호스트(200)와 데이터를 주거나 받을 수 있다. 제2CPU(331)는 제3인터페이스(350)를 통해 메모리 클러스터 (400)와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 제1CPU(330)와 제2CPU (331)는 멀티-CPU를 구성할 수 있다. 실시 예에 따라, 제1CPU(330)는 제2CPU(331)를 제어할 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(340)는, 제1CPU(330) 또는 제2CPU(331)의 제어에 따라, 버퍼 (360)에 데이터를 라이트하거나 버퍼(360)로부터 데이터를 리드할 수 있다. 버퍼 컨트롤러(340)는 버퍼(360)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 컨트롤러 또는 버퍼 매니저(buffer manager)로 불릴 수 있다.
제3인터페이스(350)는, 제1CPU(330) 또는 제2CPU(331)의 제어에 따라, 복수의 메인 채널들(CHA, CHB, ..., CHC) 중에서 해당하는 메인 채널을 통해 메모리 클러스터(400)에 대한 데이터 처리 작동들(예컨대, 라이트 작동들 또는 리드 작동들, 타입별 설정 작동들, 등)을 제어할 수 있다.
실시 예들에 따라, 제3인터페이스(350)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 제3인터페이스(350)는 에러 정정 코드(error correction code(ECC)) 엔진(350-1)을 포함할 수 있다. EEC 엔진(350-1)은 메모리 클러스터(400)에 저장될 데이터 및/또는 메모리 클러스터(400)로부터 출력된 데이터에 포함된 에러를 정정할 수 있다. 비록, 도 1에서는 ECC 엔진(350-1)이 제3인터페이스(350)에 포함된 것으로 도시되어 있으나, ECC 엔진(350-1)은 컨트롤러(310) 내부의 어디라도 구현될 수 있다.
버퍼 컨트롤러(340)는 버퍼(360)에 데이터를 라이트하거나 버퍼(360)로부터 데이터를 리드할 수 있다. 실시 예들에 따라, 휘발성 메모리 장치로 구현될 수 있는 버퍼(360)는 버퍼 메모리, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(360)는 복수의 클러스터들(410, 430, ... 450)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 상기 제1영역에는 도 11 또는 도 15를 참조하여 설명될 제1테이블(TABLE1)이 저장될 수 있다. 예컨대, 제1테이블(TABLE1)은 제1영역에 저장되는 매핑 테이블의 일부 또는 전부일 수 있다.
예컨대, CPU(330 및/또는 331)에 의해 실행되는 제1FTL(FTL1)은 버퍼(360)의 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행하거나, 도 11 또는 도 15를 참조하여 설명될 제1테이블(TABLE1)을 이용하여 논리 어드레스에 대응되는 스케일-아웃 저장 장치를 선택할 수 있다. 본 명세서에서 설명되는 논리 어드레스는 논리 블록 어드레스(logical block address(LBA)) 또는 논리 페이지 어드레스(logical page address(LPN))일 수 있으나 이에 한정되는 것은 아니다. 논리 페이지 어드레스는 스케일-아웃 저장 장치별로 할당된 로컬 (local) 논리 페이지 어드레스일 수 있고, 스케일-아웃 저장 장치들에 할당된 글로벌(global) 논리 논리 페이지 어드레스일 수 있다.
실시 예에 따라, 컨트롤러(310)와 버퍼(360) 각각이 서로 다른 반도체 칩 (semiconductor chip)으로 구현될 때, 컨트롤러(310)와 버퍼(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package(MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 상기 패키지의 종류가 이들에 한정되는 것은 아니다. 예컨대, 버퍼(360)를 포함하는 제1칩은 컨트롤러(310)를 포함하는 제2칩의 위(above)에 스택 볼들(stack balls)을 통해 적층될 수 있다.
PMIC(370)는 컨트롤러(310), 버퍼(360), 및/또는 메모리 클러스터(400)로 공급되는 작동 전압들을 제어할 수 있다. 예컨대, 컨트롤러(310)로 공급되는 제1작동 전압, 버퍼(360)로 공급되는 제2작동 전압, 및 메모리 클러스터(400)로 공급되는 제3작동 전압은 서로 동일하거나 서로 다를 수 있다.
메모리 클러스터(400)는 복수의 클러스터들(410, 430, ... 450)을 포함할 수 있다. 제1클러스터(410)는 제1메인 채널(CHA)에 접속될 수 있고, 제2클러스터(430)는 제2메인 채널(CHB)에 접속될 수 있고, 제3클러스터(450)는 제3메인 채널(CHC)에 접속될 수 있다. 복수의 클러스터들(410, 430, ... 450) 각각은 적어도 하나의 스케일-아웃 저장 장치를 포함할 수 있다.
복수의 클러스터들(410, 430, ... 450) 각각의 구조는 도 2a부터 도 7을 참조하여 상세히 설명될 것이다. 복수의 클러스터들(410, 430, ... 450) 각각의 구조는 실질적으로 동일 또는 유사하게 구현될 수 있다.
본 명세서에서 메인 채널(main channel)은 컨트롤러(310), 즉, 제3인터페이스(350)와 해당하는 하나의 클러스터 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다.
웨이(way)는 하나의 메인 채널을 공유하는 하나 또는 그 이상의 불휘발성 메모리 장치들의 그룹을 의미할 수 있다. 따라서, 하나의 메인 채널에는 복수의 웨이들이 접속될 수 있다. 상기 불휘발성 메모리 장치는 다이(die), 메모리 장치, 또는 반도체 패키지를 의미할 수 있다. 컨트롤러(310)는 A-채널*B-웨이를 제어할 수 있다. 이때, A과 B 각각은 1 이상의 자연수를 의미할 수 있다.
도 2a는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도의 일 실시 예이고, 도 2b는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도의 다른 실시 예이고, 도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다. 도 2a와 도 2b에 도시된 데이터 저장 장치(300)는 스케일-아웃 구조를 갖는 데이터 저장 장치로 구현될 수 있다.
각 클러스터(410, 430, ..., 450)는 적어도 하나의 스케일-아웃 저장 장치(또는 멀티 칩 셋)를 포함할 수 있다. 제1클러스터(410)는 복수의 스케일-아웃 저장 장치들(410-1~410-4)을 포함하고, 제2클러스터(430)는 복수의 스케일-아웃 저장 장치들(430-1~430-4)을 포함하고, 제3클러스터(450)는 복수의 스케일-아웃 저장 장치들(450-1~450-4)을 포함한다. 각 클러스터(410, 430, ..., 450)에 포함되는 스케일-아웃 저장 장치의 개수는 동일할 수도 있고 서로 다를 수도 있다.
즉, 스케일-아웃 저장 장치는 스케일-아웃 컨트롤러, 휘발성 메모리, 및 적어도 하나의 불휘발성 메모리 장치(예컨대, NAND-타입 플래시 메모리 장치(NAND))를 포함할 수 있다.
도 1부터 도 3을 참조하면, 각 클러스터(410~450)의 구조와 작동은 실질적으로 동일하다고 가정한다. 따라서, 제1클러스터(410)의 구조와 작동이 대표적으로 설명된다. 도 3을 참조하면, 제1클러스터(410)는 복수의 스케일-아웃 저장 장치들 (410-1~410-4)을 포함할 수 있다. 비록, 도 3에서는 4개의 스케일-아웃 저장 장치들(410-1~410-4)이 예시적으로 도시되어 있으나, 본 발명의 기술적 사상은 제1클러스터(410)에 포함되는 복수의 스케일-아웃 저장 장치들(410-1~410-4)의 개수에 한정되는 것은 아니다.
제1클러스터(410)는 스케일-아웃 장치들(410-1A, 410-2A, ..., 410-4A)과, 스케일-아웃 장치들(410-1A, 410-2A, ..., 410-4A) 각각에 접속된 NAND-타입 플래시 메모리 장치들(NAND)을 포함할 수 있다.
제1스케일-아웃 저장 장치(410-1)는 제1스케일-아웃 장치(410-1A)와 제1스케일-아웃 장치(410-1A)에 접속된 불휘발성 메모리 장치들(NAND)을 포함할 수 있다. 제2스케일-아웃 저장 장치(410-2)는 제2스케일-아웃 장치(410-2A)와 제2스케일-아웃 장치(410-2A)에 접속된 불휘발성 메모리 장치들(NAND)을 포함할 수 있다. 제4스케일-아웃 저장 장치(410-4)는 제4스케일-아웃 장치(410-4A)와 제4스케일-아웃 장치(410-4A)에 접속된 불휘발성 메모리 장치들(NAND)을 포함할 수 있다.
각 스케일-아웃 장치(410-1A, 410-2A, ..., 410-4A)는 각 스케일-아웃 컨트롤러(411-1, 411-2, ..., 411-4)와, 각 휘발성 메모리 장치(413-1, 413-2, ..., 413-4)를 포함할 수 있다. 각 스케일-아웃 컨트롤러(411-1, 411-2, ..., 411-4)의 구조는 실질적으로 동일 또는 유사하다.
제1스케일-아웃 컨트롤러(411-1)는 제1메인 채널(CHA), 채널들(CH11~CH1m; m은 2 이상의 자연수), 및 제1휘발성 메모리 장치(413-1)에 접속될 수 있다. 각 채널(CH11~CH1m)에는 대응되는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다. 예컨대, 불휘발성 메모리 장치들(NAND) 각각은 NAND-타입 플래시 메모리 장치 또는 매니지드 NAND 플래시 메모리 장치일 수 있으나 이에 한정되는 것은 아니다. 여기서, 각 채널은 제1스케일-아웃 컨트롤러(411-1)와 해당하는 불휘발성 메모리 장치들(NAND) 사이에 존재하는 독립적인 데이터 패스를 의미할 수 있다.
제1스케일-아웃 컨트롤러(411-1)는 각 채널(CH11~CH1m)을 통해 불휘발성 메모리 장치들(NAND) 각각의 작동을 제어할 수 있다. 예컨대, 컨트롤러(310)는, 제1메인 채널(CHA)을 통해, 제1스케일-아웃 컨트롤러(411-1)의 작동을 제어할 수 있다.
제1휘발성 메모리 장치(413-1)는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제1휘발성 메모리 장치 (413-1)는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
예컨대, 도 7에 도시된 바와 같이 제1스케일-아웃 컨트롤러(411-1)에 포함된 CPU(423-1 또는 423-2)에 의해 실행되는 제2FTL(FTL2)는 제1휘발성 메모리 장치 (413-1)의 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다. 상기 제2FTL(FTL2)는 제1클러스터(410)에 포함된 불휘발성 메모리 장치로부터 내부 메모리(425)로 로드되고 CPU(423-1 또는 423-2)에 의해 실행될 수 있다.
제2스케일-아웃 컨트롤러(411-2)는 제1메인 채널(CHA), 채널들(CH21~CH2m), 및 제2휘발성 메모리 장치(413-2)에 접속될 수 있다. 각 채널(CH21~CH2m)에는 대응되는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다.
제2스케일-아웃 컨트롤러(411-2)는 각 채널(CH21~CH2m)을 통해 불휘발성 메모리 장치들(NAND) 각각의 작동을 제어할 수 있다. 예컨대, 컨트롤러(310)는, 메인 채널(CHA)을 통해, 제2스케일-아웃 컨트롤러(415-2)의 작동을 제어할 수 있다.
제2휘발성 메모리 장치(413-2)는 각 채널(CH21~CH2m)에 접속된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제2휘발성 메모리 장치 (413-2)는 각 채널(CH21~CH2m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH21~CH2m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
도 7에 도시된 바와 같이 제1스케일-아웃 컨트롤러(411-1)의 구조와 제2스케일-아웃 컨트롤러(411-2)의 구조가 동일할 때, 제2스케일-아웃 컨트롤러(411-2)에 포함된 CPU(423-1 또는 423-2)에 의해 실행되는 제3FTL은 제2휘발성 메모리 장치 (413-2)의 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다. 상기 제3FTL은 제1클러스터(410)에 포함된 불휘발성 메모리 장치로부터 내부 메모리(425)로 로드되고 CPU(423-1 또는 423-2)에 의해 실행될 수 있다.
제4스케일-아웃 컨트롤러(411-4)는 제1메인 채널(CHA), 채널들(CH41~CH4m), 및 제4휘발성 메모리 장치(413-4)에 접속될 수 있다. 각 채널(CH41~CH4m)에는 대응되는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다.
제4스케일-아웃 컨트롤러(411-4)는 각 채널(CH41~CH4m)을 통해 불휘발성 메모리 장치들(NAND) 각각의 작동을 제어할 수 있다. 예컨대, 컨트롤러(310)는, 메인 채널(CHA)을 통해, 제4스케일-아웃 컨트롤러(411-4)의 작동을 제어할 수 있다.
제4휘발성 메모리 장치(413-4)는 각 채널(CH41~CH4m)에 접속된 대응되는 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제4휘발성 메모리 장치(413-4)는 각 채널(CH41~CH4m)에 접속된 대응되는 불휘발성 메모리 장치들 (NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH41~CH4m)에 접속된 대응되는 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
도 7에 도시된 바와 같이 제1스케일-아웃 컨트롤러(411-1)의 구조와 제4스케일-아웃 컨트롤러(411-4)의 구조가 동일할 때, 제4스케일-아웃 컨트롤러(411-4)에 포함된 CPU(423-1 또는 423-2)에 의해 실행되는 제5FTL은 제4휘발성 메모리 장치 (413-4)의 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다. 상기 제5FTL은 제1클러스터(410)에 포함된 불휘발성 메모리 장치로부터 내부 메모리(425)로 로드되고 CPU(423-1 또는 423-2)에 의해 실행될 수 있다.
각 휘발성 메모리 장치(413-1~413-4)는 버퍼 또는 버퍼 메모리를 의미할 수 있고, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
비록, 도 3에서는 각 스케일-아웃 저장 장치(410-1~410-4)는 동일한 개수(예컨대, m개)의 채널들을 포함하는 것으로 도시되어 있으나, 실시 예들에 따라 각 스케일-아웃 저장 장치(410-1~410-4)에 포함된 채널들의 개수는 서로 다를 수 있다.
도 4는 도 3에 도시된 제1스케일-아웃 장치의 개략도이고, 도 7은 도 4에 도시된 제1스케일-아웃 컨트롤러의 블록도이다. 도 1부터 도 5, 및 도 7을 참조하면, 각 스케일-아웃 컨트롤러(411-1~411-4)의 구조와 작동은 실질적으로 동일 또는 유사하므로, 제1스케일-아웃 컨트롤러(411-1)의 구조와 작동이 대표적으로 설명될 것이다.
제1스케일-아웃 컨트롤러(411-1)는 컨트롤러(310), 제1휘발성 메모리 장치 (413-1), 및 제1스케일-아웃 저장 장치(410-1)에 포함된 불휘발성 메모리 장치들 (NAND) 사이에서 주거나 받는 명령 및/또는 데이터의 전송을 제어할 수 있다. 실시 예들에 따라, 제1스케일-아웃 컨트롤러(411-1)는 IC 또는 SoC로 구현될 수 있다.
제1스케일-아웃 컨트롤러(411-1)는 버스 구조(420), 제4인터페이스(421), 적어도 하나의 CPU(423-1 및/또는 423-2), 내부 메모리(425), 버퍼 컨트롤러(427), 및 제5인터페이스(429)를 포함할 수 있다. 버스 구조(420)는 AMBA, AHB, APB, AXI, ASB, ACE, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제4인터페이스(421)는 컨트롤러(310)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 제1메인 채널(CHA)을 통해 컨트롤러(310)로 전송할 수 있다. 또한, 제4인터페이스 (421)는 컨트롤러(310)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 적어도 하나의 CPU(423-1 및/또는 423-2) 및/또는 버퍼 컨트롤러(427)로 전송할 수 있다. 실시 예에 따라, 제4인터페이스(421)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제4인터페이스(421)의 구조와 작동은 제3인터페이스(350)의 구조와 작동에 적합하게 구현될 수 있다. 예컨대, 제4인터페이스(421)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
실시 예에 따라, 도 4와 도 7을 참조하면, 제4인터페이스(421)는 하나의 채널(또는 하나의 메인 채널) 또는 하나의 웨이에 접속될 수 있다. 제1단자들(PT1)은 제1메인 채널(CHA)과 제4인터페이스(421)를 접속하기 위한 단자들이고, 제3단자들 (PT3)은 제1휘발성 메모리 장치(413-1)와 버퍼 컨트롤러(427)를 접속하기 위한 단자들이고, 제2단자들(PT2)은 제5인터페이스(429)와 하나 또는 그 이상의 채널 (CH11~CH1m)을 접속하기 위한 단자들이다. 상기 단자들은 핀들(pins) 또는 패드들 (pads)을 의미할 수 있다.
하나 또는 그 이상의 CPU(423-1 및/또는 423-3)는, 버스 구조(420)를 통해, 제4인터페이스(421), 내부 메모리(425), 버퍼 컨트롤러(427), 및 제5인터페이스 (429)를 제어할 수 있다. 각 CPU(423-1 및/또는 423-3)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
예컨대, 제1CPU(423-1)는 제1메인 채널(CHA)과 제4인터페이스(421)를 통해 제3인터페이스(350)와 데이터를 주거나 받을 수 있고, 제2CPU(423-2)는 제5인터페이스(429)를 통해 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 제1CPU(423-1)와 제2CPU(423-2)는 멀티-CPU를 구성할 수 있다. 실시 예에 따라, 제1CPU(423-1)는 제2CPU(423-2)를 제어할 수 있다.
내부 메모리(425)는 제1스케일-아웃 컨트롤러(415-1)의 작동에 필요한 데이터 또는 제1스케일-아웃 컨트롤러(415-1)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다. 예컨대, 내부 메모리(425)는 CPU(423-1 및/또는 423-2)에 의해 실행될 수 있는 제2FTL(flash translation layer; FTL2)을 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부팅될 때, 제2FTL(FTL2)는 메모리 클러스터(400)에 포함된 불휘발성 메모리로부터 내부 메모리(425)로 로드될 수 있다. 실시 예들에 따라, 내부 메모리(425)는 RAM, DRAM, SRAM, 버퍼, 버퍼 메모리, 캐시, 또는 TCM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(427)는, 제1CPU(423-1) 또는 제2CPU(423-2)의 제어에 따라, 제1휘발성 메모리 장치(413-1)에 데이터를 라이트하거나 제1휘발성 메모리 장치 (413-1)로부터 데이터를 리드할 수 있다. 버퍼 컨트롤러(427)는 제1휘발성 메모리 장치(413-1)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 컨트롤러 또는 버퍼 매니저로 불릴 수 있다.
제5인터페이스(429)는, 제1CPU(423-1) 또는 제2CPU(423-2)의 제어에 따라, 복수의 채널들(CH11~CH1m) 중에서 해당하는 채널을 통해 불휘발성 메모리 장치들 (NAND)에 대한 데이터 처리 작동들을 제어할 수 있다.
도 4와 도 7을 참조하면, 복수의 채널들 및/또는 복수의 웨이들은 제5인터페이스(429)에 접속될 수 있다. 실시 예들에 따라, 제5인터페이스(429)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 제5인터페이스(429)는 채널들(CH11~CH1m) 각각에 대응되는 메모리 컨트롤러들(429-1~429-m) 각각을 포함할 수 있다. 예컨대, 불휘발성 메모리 장치들 (NAND) 각각이 NAND-타입 플래시 메모리일 때, 메모리 컨트롤러들(429-1~429-m) 각각은 NAND 플래시 메모리 컨트롤러일 수 있다.
제1휘발성 메모리 장치(413-1)는 제1스케일-아웃 저장 장치(410-1)에 포함된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(423-1 및/또는 423-2)에 의해 실행되는 제2FTL(FTL2)은 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
도 3을 참조하여 설명된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나가 스케일-아웃 저장 장치(예컨대, 410-1)로 대체되면, 메모리 클러스터(400)에 대한 메모리 용량의 확장성(scalability)은 증가할 수 있다.
도 5는 도 4에 도시된 제1스케일-아웃 장치의 반도체 패키지의 실시 예이다. 도 3부터 도 5를 참조하면, 제1스케일-아웃 장치(410-1A)는 반도체 패키지로 구현될 수 있다. 즉, 제1스케일-아웃 장치(410-1A)는 반도체 기판(substrate; 415)의 위(on)에 각각 부착(attached or mounted)된 제1스케일-아웃 컨트롤러(411-1)와 제1휘발성 메모리 장치(413-1)를 포함할 수 있다.
예컨대, 제1스케일-아웃 컨트롤러(411-1)는 플립-칩(flip-chip) 구조로 반도체 기판(415)에 부착될 수 있다. 또한, 제1스케일-아웃 컨트롤러(411-1)가 접착 물질(adhesive material)을 통해 반도체 기판(415)에 부착될 때, 제1스케일-아웃 컨트롤러(411-1)는 본딩 와이어들(bonding wires)을 통해 반도체 기판(415)과 전기적인 신호들을 주거나 받을 수 있다.
예컨대, 제1휘발성 메모리 장치(413-1)는 플립-칩 구조로 반도체 기판(415)에 부착될 수 있다. 또한, 제1휘발성 메모리 장치(413-1)가 접착 물질을 통해 반도체 기판(415)에 부착될 때, 제1휘발성 메모리 장치(413-1)는 본딩 와이어들을 통해 반도체 기판(415)과 전기적인 신호들을 주거나 받을 수 있다. 즉, 제1스케일-아웃 컨트롤러(411-1)는 반도체 기판(415)을 통해 제1휘발성 메모리 장치(413-1)와 명령 및/또는 데이터를 주거나 받을 수 있다. 각 스케일 아웃 장치(410-1A~410-4A)에 대한 반도체 패키지는 실질적으로 동일 또는 유사하다.
도 6은 도 1에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 반도체 패키지의 실시 예이다. 도 6에 도시된 반도체 패키지(300-1A)는 ePOP (embedded package on package)로 구현될 수 있으나 반도체 패키지(300-1A)의 종류가 이에 한정되는 것은 아니다.
예컨대, 반도체 패키지(300-1A)는 반도체 기판(415-1), 반도체 기판(415-1)의 위(over)에 배치된 제1패키지(PKG1), 및 제1패키지(PKG)의 위(over)에 배치된 제2패키지(PKG2)를 포함할 수 있다. 제1패키지(PKG1)는 제1범프들(415-2)을 통해 반도체 기판(415-1)에 부착될 수 있고, 제1범프들(415-2)을 통해 반도체 기판(415-1)과 전기적인 신호들을 주거나 받을 수 있다. 제2패키지(PKG2)는 제2범프들(415-3)을 통해 제1패키지(PKG1)에 부착될 수 있고, 제2범프들(415-3)을 통해 반도체 기판(415-1)과 전기적인 신호들을 주거나 받을 수 있다. 제1패키지(PKG1)는 컨트롤러 (310)를 포함할 수 있다. 제2패키지(PKG2)는 제1스케일-아웃 컨트롤러(411-1), 제1휘발성 메모리 장치(413-1), 및 적어도 하나의 NAND-타입 플래시 메모리(470)를 포함할 수 있다. 예컨대, 각 스케일-아웃 저장 장치(410-2, ..., 410-4)가 각 패키지로 구현되고, 반도체 기판(415-1)의 위(on)에 부착될 때, 컨트롤러(310)는 반도체 기판(415-1)을 통해 각 스케일-아웃 저장 장치(410-2, ..., 410-4)를 제어할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1과 도 8을 참조하면, 데이터 분류 회로(317)와 데이터 분류 모듈 (330A)을 제외하면, 도 1의 데이터 처리 시스템(100)의 구조와 작동은 도 8의 데이터 처리 시스템(100-1)의 구조와 작동과 실질적으로 동일하다.
도 1에서 데이터 분류 회로(317)는 하드웨어로 구현되나, 도 8에서 데이터 분류 모듈(330A)은 CPU(330 및/또는 331)에서 실행되는 소프트웨어로 구현될 수 있다. 하드웨어 타입 포맷터(317-1)의 기능과 소프트웨어 타입 포맷터(330-1)의 기능을 실질적으로 동일하고, 하드웨어 데이터 분류기(317-2)의 기능과 소프트웨어 데이터 분류기(330-2)의 기능을 실질적으로 동일하다. 따라서, 소프트웨어 데이터 포맷터(330-1)의 기능과 소프트웨어 데이터 분류기(330-2)의 기능에 대한 상세한 설명은 생략한다.
도 9는 본 발명의 실시 예에 따른 타입 포맷터를 이용하여 논리 어드레스들을 스케일-아웃 저장 장치들에 할당하는 방법을 설명하는 개념도이고, 도 10은 본 발명의 실시 예에 따른 데이터 분류기를 이용하여 논리 어드레스들을 스케일-아웃 저장 장치들로 전송하는 방법을 설명하는 개념도이고, 도 11은 스케일-아웃 저장 장치별로 할당된 논리 어드레스들을 포함하는 제1테이블을 일 실시 예를 나타내고, 도 12는 스케일-아웃 저장 장치별로 할당된 논리 어드레스들-물리 어드레스들 변환 테이블들을 나타낸다.
도 1부터 도 12를 참조하면, 논리 어드레스들을 스케일-아웃 저장 장치별로 할당하기 위해, CPU(220)의 제어에 따라 CPU(300 및/또는 331, 집합적으로 "300")는 타입 포맷터(317-1 또는 330-2)를 실행할 수 있다. 따라서, 디스플레이(240)는, CPU(220)의 제어에 따라 또는 타입 포맷터(317-1 또는 330-2)의 제어에 따라, 스케일-아웃 저장 장치별로 논리 어드레스들의 범위를 설정할 수 있는 사용자 인터페이스를 사용자에게 제공할 수 있다. 사용자는 디스플레이(240)에서 디스플레이되는 사용자 인터페이스를 통해 스케일-아웃 저장 장치별로 논리 어드레스들의 범위를 설정할 수 있다(S101).
CPU(220)는 스케일-아웃 저장 장치별로 할당된(또는 설정된) 논리 어드레스들의 범위(LAR)를 CPU(330) 또는 타입 포멧터(317-1 또는 330-1)로 전송할 수 있다 (S103). 도 11의 제1테이블(TABLE1=TB1)은 스케일-아웃 저장 장치별로 할당된 논리 어드레스들의 범위(LAR)를 나타낸다.
예컨대, 도 2b, 도 9, 도 10, 및 도 11을 참조하면, CPU(330) 또는 타입 포맷터(317-1 또는 330-2)에 의해, 논리 어드레스들(LA0~LA0999)은 제1클러스터 (410) 또는 제1스케일-아웃 저장 장치(410-1)에 할당하고, 논리 어드레스들 (LA1000~LA1999)은 제2클러스터(430) 또는 제2스케일-아웃 저장 장치(430-1)에 할당하고, 논리 어드레스들(LA3000~LA3999)은 제3클러스터(450) 또는 제3스케일-아웃 저장 장치(450-1)에 할당한다고 가정한다. 또한, 설명의 편의를 위해, 각 클러스터 (410, 430, ..., 450)는 하나의 스케일-아웃 저장 장치(410-1, 430-1, ..., 450-1)를 포함한다고 가정한다.
CPU(330) 또는 타입 포멧터(317-1 또는 330-1)는 논리 어드레스들의 범위 (LAR)를 포함하는 제1테이블(TABLE1=TB1)을 버퍼 컨트롤러(340)를 통해 버퍼(360)에 저장할 수 있다(S105).
타입 포멧터(317-1 또는 330-1)는, 논리 어드레스들의 범위(LAR)를 포함하는 제1테이블(TABLE1=TB1)을 참조하여, 스케일-아웃 저장 장치별로 할당된(또는 설정된) 논리 어드레스들의 범위(LAR)를 해당하는 스케일-아웃 저장 장치(410-1, 430-1, ..., 450-1)로 전송할 수 있다(S107).
제1타입(TYPE1)으로 분류된 제1스케일-아웃 저장 장치(410-1)의 CPU 또는 상기 CPU에 의해 실행되는 제2FTL(FTL2)은, 논리 어드레스들(LA=LA0~LA0999)을 이용하여, 도 12에 도시된 제2테이블(TABLE2)를 생성하고 제2테이블(TABLE2)을 제1휘발성 메모리(413-1)에 저장할 수 있다. 예컨대, 제2테이블(TABLE2)은 논리 어드레스들(LA=LA0~LA0999)을 물리 어드레스들(PA=PA0~PA0999)로 변환할 수 있는 어드레스 매핑 테이블일 수 있다. 예컨대, 물리 어드레스들(PA=PA0~PA0999)은 제1스케일-아웃 저장 장치(410-1)에 포함된 모든 NAND-타입 플래시 메모리 장치들(NAND)에 대한 메모리 영역(MR2)에 포함된 페이지들에 대한 물리 어드레스들일 수 있다. 각 메모리 영역(MR2, MR3, ..., MR5)은 x개의 블록들을 포함하고, x개의 블록들 각각은 128개의 페이지들을 포함한다고 가정한다. 여기서, x는 2 이상의 자연수이다.
제2타입(TYPE2)으로 분류된 제2스케일-아웃 저장 장치(430-1)의 CPU 또는 상기 CPU에 의해 실행되는 제3FTL(FTL3)은, 논리 어드레스들(LA=LA1000~LA1999)을 이용하여, 도 12에 도시된 제3테이블(TABLE3)을 생성하고 제3테이블(TABLE3)을 제2휘발성 메모리(433-1)에 저장할 수 있다. 예컨대, 제3테이블(TABLE3)은 논리 어드레스들(LA=LA1000~LA1999)을 물리 어드레스들 (PA=PA1000~PA1999)로 변환할 수 있는 어드레스 매핑 테이블일 수 있다. 예컨대, 물리 어드레스들(PA=PA1000~PA1999)은 제2스케일-아웃 저장 장치(430-1)에 포함된 모든 NAND-타입 플래시 메모리 장치들(NAND)에 대한 메모리 영역(MR3)에 포함된 페이지들에 대한 물리 어드레스들일 수 있다.
제4타입(TYPE4)으로 분류된 제3스케일-아웃 저장 장치(450-1)의 CPU 또는 상기 CPU에 의해 실행되는 제5FTL(FTL5)은, 논리 어드레스들(LA=LA3000~LA3999)을 이용하여, 도 12에 도시된 제5테이블(TABLE5)을 생성하고 제5테이블(TABLE5)을 제3휘발성 메모리(453-1)에 저장할 수 있다. 예컨대, 제5테이블(TABLE5)은 논리 어드레스들(LA=LA3000~LA3999)을 물리 어드레스들(PA=PA3000~PA3999)로 변환할 수 있는 어드레스 매핑 테이블일 수 있다. 예컨대, 물리 어드레스들(PA=PA3000~PA3999)은 제3스케일-아웃 저장 장치 (450-1)에 포함된 모든 NAND-타입 플래시 메모리 장치들(NAND)에 대한 메모리 영역(MR5)에 포함된 페이지들에 대한 물리 어드레스들일 수 있다.
호스트(200)가 논리 어드레스(LAi, 예컨대, LA0999)를 데이터 저장 장치 (300)로 전송하면, CPU(330) 또는 데이터 분류기(317-2 또는 330-2)는, 도 11의 제1테이블(TABLE1=TB1)을 참조하여, 논리 어드레스(LAi, 예컨대, LA0999)를 제1타입 (TYPE1)으로 분류된 제1클러스터(410) 또는 제1스케일-아웃 저장 장치(410-1)로 전송할 수 있다(S115).
논리 어드레스(LAi, 예컨대, LA0999)가 라이트 작동에 관련된 논리 어드레스일 때, 호스트(200)는 라이트 데이터(WDATA)를 데이터 저장 장치(300)로 전송할 수 있다(S117). CPU(330) 또는 데이터 분류기(317-2 또는 330-2)는, 도 11의 제1테이블(TABLE1=TB1)을 참조하여, 라이트 데이터(WDATA)를 제1스케일-아웃 저장 장치 (410-1)로 전송할 수 있다(S119). 제1스케일-아웃 저장 장치(410-1)에서 실행되는 제2FTL(FTL2)은, 도 12의 제2테이블(TABLE2)을 참조하여, 논리 어드레스(LAi, 예컨대, LA0999)를 물리 어드레스(예컨대, PA0999)로 변환할 수 있다. 따라서, 라이트 데이터(WDATA)는 물리 어드레스(예컨대, PA0999)에 해당하는 페이지에 라이트될 수 있다.
논리 어드레스(LAi, 예컨대, LA0999)가 리드 작동에 관련된 논리 어드레스일 때, 제1스케일-아웃 저장 장치(410-1)에서 실행되는 제2FTL(FTL2)은, 도 12의 제2테이블(TABLE2)을 참조하여, 논리 어드레스(LAi, 예컨대, LA0999)를 물리 어드레스 (예컨대, PA0999)로 변환할 수 있다. 따라서, 제1스케일-아웃 저장 장치(410-1)는 물리 어드레스(예컨대, PA0999)에 해당하는 페이지로부터 리드 데이터(RDATA)를 리드하고(S121), 리드 데이터(RDATA)를 호스트(200)로 전송할 수 있다.
호스트(200)로부터 출력된 논리 어드레스(LAi, 0≤i≤3999)는 라이트 명령 또는 리드 명령에 포함될 수 있다.
따라서, 호스트(200)로부터 출력된 논리 어드레스(LAi)가 1000≤i≤1999일 때, 컨트롤러(310)는, 제3테이블(TABLE3)을 이용하여, 제2타입(TYPE2)으로 분류 또는 할당된 제2스케일-아웃 저장 장치(430-1)와 논리 어드레스(LAi, 1000≤i≤1999)에 대응되는 데이터를 주거나 받을 수 있다. 또한, 호스트(200)로부터 출력된 논리 어드레스(LAi)가 3000≤i≤3999일 때, 컨트롤러(310)는, 제5테이블(TABLE5)을 이용하여, 제4타입(TYPE4)으로 분류 또는 할당된 제3스케일-아웃 저장 장치(450-1)와 논리 어드레스(LAi, 3000≤i≤3999)에 대응되는 데이터를 주거나 받을 수 있다.
도 13은 본 발명의 실시 예에 따라 데이터의 특성에 해당하는 스케일-아웃 저장 장치들에 대한 테이블을 생성하는 과정을 설명하는 플로우 차트이고, 도 14는 본 발명의 실시 예에 따른 데이터 분류기를 이용하여 데이터의 특성을 분석하고, 분석 결과에 따라 상기 데이터를 해당하는 스케일-아웃 저장 장치로 전송하는 과정을 설명하는 개념도이고, 도 15는 본 발명의 실시 예에 따라, 데이터의 특성에 따른 타입별로 스케일-아웃 저장 장치를 분류하는 방법을 설명하기 위한 테이블이다.
본 명세서에 기재된 "호스트(200)와 주고받는 데이터의 특성을 판단한다" 함은 상기 데이터가,
(1) 시퀀셜 액세스(sequential access)를 위한 데이터인지 랜덤 액세스 (random access)를 위한 데이터인지에 대한 판단;
(2) 라이트 데이터(또는 프로그램 데이터)인지 리드 데이터인지에 대한 판단;
(3) 핫 데이터(hot data)인지 콜드 데이터(cold data)인지에 대한 판단; 및/또는
(4) 큰 사이즈 데이터(large size data)인지 작은 사이즈 데이터(small size data)인지에 대한 판단을 의미할 수 있으나 본 발명의 기술적 사상이 이들에 한정되는 것은 아니다.
도 16은 시퀀셜 액세스와 랜덤 액세스를 설명하기 위한 개념도이다. 시퀀셜 액세스와 랜덤 액세스는, 도 16에 도시된 바와 같이, 논리 어드레스들(LA0~LA5)이 연속적인지 랜덤한지 또는 논리 어드레스들(LA0~LA5)에 해당하는 저장 영역들에 저장된 데이터(DATA0~DATA5)에 대한 액세스(라이트 또는 리드)가 연속적인지 랜덤한지에 따라 나누어질 수 있다.
핫 데이터는 호스트(200) 또는 컨트롤러(310)에 의해 상대적으로 자주 (frequently) 액세스되는 데이터이고, 콜드 데이터는 호스트(200) 또는 컨트롤러 (310)에 의해 상대적으로 덜 자주(less frequently) 액세스되는 데이터이다.
도 15를 참조하면, CPU(330) 또는 타입 포맷터(317-1 또는 330-2)는 메모리 클러스터(400)에 포함된 각 스케일-아웃 저장 장치를 타입별로 분류하고 포맷할 수 있다. 실시 예들에 따라, 타입은 클러스터별로 분류 또는 결정될 수 있고, 클러스터에 무관하게 스케일-아웃 저장 장치별로 결정될 수 있다.
도 15에 도시된 바와 같이, CPU(330) 또는 타입 포맷터(317-1 또는 330-2)는, 다음의 항목들 중에서 적어도 하나 및/또는 데이터의 특성에 따라, 클러스터별로 타입을 결정한다고 가정하고, 각 클러스터는 하나씩의 스케일-아웃 저장 장치를 포함한다고 가정한다.
(1) 컨트롤러(310) 및/또는 각 스케일-아웃 저장 장치의 스케일-아웃 컨트롤러의 작동 클락 신호의 주파수(이하, "클락 주파수"라 한다);
(2) 컨트롤러(310)에 접속된 휘발성 메모리(360) 및/또는 각 스케일-아웃 저장 장치의 스케일-아웃 컨트롤러에 접속된 휘발성 메모리(413-1, 433-1, ..., 453-1)의 용량 및/또는 대역폭;
(3) 각 스케일-아웃 저장 장치에 포함된 NAND-타입 플래시 메모리 장치에 대한 프로그램 방식;
(4) 각 스케일-아웃 저장 장치에 포함된 NAND-타입 플래시 메모리 장치에 라이트 또는 리드되는 데이터를 관리하는 FTL 매핑 사이즈;
(5) 각 스케일-아웃 저장 장치에 포함된 NAND-타입 플래시 메모리 장치의 사용자 데이터 영역과 오버프로비저닝 영역의 비율(OVP RATIO);
(6) 각 스케일-아웃 저장 장치에 포함된 NAND-타입 플래시 메모리 장치 전체 용량. 본 발명의 기술적 사상이 도 15에 도시된 예들에 한정되는 것은 아니다.
상기 프로그램 방식은 싱글 레벨 셀(single level cell(SLC)) 프로그램 방식, 멀티 레벨 셀(multi level cell(MLC)) 프로그램 방식, 및 트리플 레벨 셀 (Triple level cell(TLC)) 프로그램 방식을 포함할 수 있으나 상기 프로그램 방식이 이들에 한정되는 것은 아니다. SLC 프로그램 방식은 하나의 메모리 셀에 1-비트 정보를 프로그램하는 방식이고, MLC 프로그램 방식은 하나의 메모리 셀에 2-비트 정보를 프로그램하는 방식이고, TLC 프로그램 방식은 하나의 메모리 셀에 3-비트 정보를 프로그램하는 방식이다.
예컨대, bpc(bit per cell)가 증가할수록, 수명에 관련된 재기록 가능 회수 (P/E cycles)가 감소하고, 리드 시간(read time)이 증가하고, 라이트 시간(write tome)이 증가하고, 이레이즈 시간(erase time)이 증가한다. bpc가 감소할수록, 데이터의 신뢰성이 증가한다.
FTL 매핑 사이즈는 NAND-타입 플래시 메모리 장치에 라이트 또는 리드되는 데이터를 관리하는 크기를 의미한다. FTL 매핑 사이즈는 4KB, 8KB, 또는 16KB일 수 있으나 이에 한정되는 것은 아니다. 예컨대, FTL 매핑 사이즈가 증가할수록, 논리 어드레스-물리 어드레스 매핑 테이블의 크기는 감소할 수 있다.
비율(OVP RATIO)의 증가할수록, 성능과 수명이 증가할 수 있다.
CPU(330) 또는 타입 포맷터(317-1 또는 330-2)는, 상술한 항목들 중에서 적어도 하나 및/또는 데이터의 특성에 따라, 클러스터별로 타입을 결정하고, 클러스터별로 결정된 타입들을 포함하는 제1테이블(TABLE=TB2)을 버퍼(360)에 저장할 수 있다.
상술한 항목들 중에서 적어도 하나 및/또는 데이터의 특성에 기초하여, 스케일-아웃 저장 장치별로 타입(또는 작동 특성)을 결정(또는 할당)하기 위해, CPU (220)의 제어에 따라 CPU(300) 또는 타입 포맷터(317-1 또는 330-2)를 실행할 수 있다. 따라서, 디스플레이(240)는, CPU(220)의 제어에 따라 또는 타입 포맷터(317-1 또는 330-2)의 제어에 따라, 스케일-아웃 저장 장치별로 타입을 설정할 수 있는 사용자 인터페이스를 사용자에게 제공할 수 있다.
실시 예에 따라, 사용자는 디스플레이(240)에서 디스플레이되는 사용자 인터페이스를 통해 스케일-아웃 저장 장치별로 타입을 결정할 수 있다. 다른 실시 예에 따라, 스케일-아웃 저장 장치별로 타입은 데이터 저장 장치 (300)의 제조자에 의해 디폴트로 설정될 수도 있다.
도 15에 도시된 항목들(또는 컬럼들 또는 필드들) 중에서 적어도 하나에 하당하는 항목에 따라 스케일-아웃 저장 장치별로 타입이 사용자에 의해 또는 제조자에 의해 설정되면, CPU(300) 또는 타입 포맷터(317-1 또는 330-2)는 스케일-아웃 저장 장치별로 타입을 분류하고(S201), 분류 결과에 해당하는 제1테이블 (TABLE1=TB2)을 작성(또는 생성)하고(S203), 제1테이블 (TABLE1=TB2)을 버퍼(360)에 저장할 수 있다(S205). 또한, CPU(300) 또는 타입 포맷터(317-1 또는 330-2)는 각 스케일-아웃 저장 장치에 대한 타입 정보를 상기 각 스케일-아웃 저장 장치로 전송할 수 있다. 따라서, 각 스케일-아웃 저장 장치는 자신의 타입 정보를 휘발성 메모리에 저장할 수 있다.
도 14에 도시된 바와 같이, CPU(300) 또는 타입 포맷터(317-1 또는 330-2)에 의해, 제1클러스터(410) 또는 제1스케일-아웃 저장 장치(410-1)는 제1타입(TYPE1)으로 분류될 수 있고, 제2클러스터(430) 또는 제2스케일-아웃 저장 장치(430-1)는 제2타입(TYPE2)으로 분류되고, 제3클러스터(450) 또는 제3스케일-아웃 저장 장치 (450-1)는 제4타입(TYPE4)으로 분류될 수 있다.
호스트(200)로부터 데이터(DATA)가 전송되면, 데이터 분류기(317-2 또는 330-2)는 데이터(DATA)의 특성을 판단하고, 판단된 특성 및/또는 도 15에 도시된 제1테이블(TABLE1=TB2)을 참조(또는 이용)하여, 스케일-아웃 장치들(410-1, 430-1, ..., 450-1) 중에서 데이터 (DATA)가 전송될 스케일-아웃 장치를 결정할 수 있다.
데이터 분류기(317-2 또는 330-2)는 호스트(200)로부터 출력된 데이터(DATA)는 핫 데이터, 콜드 데이터, 프로그램 데이터, 리드 데이터, 랜덤 데이터, 시퀀셜 데이터, 사용자 데이터 또는 메타데이터인지를 판단할 수 있다. 즉, 데이터 분류기(317-2 또는 330-2)는 데이터(DATA)의 특성, 예컨대 데이터(DATA)의 종류를 판단하고, 판단된 특성에 따라 데이터(DATA)를 판단된 특성에 해당하는 스케일-아웃 저장 장치로 전송할 수 있다.
예컨대, 호스트(200)로부터 전송된 데이터(DATA)가 핫 데이터 또는 랜덤 데이터일 때, 데이터 분류기(317-2 또는 330-2)는, 판단된 특성 및/또는 도 15에 도시된 제1테이블(TABLE1=TB2)을 참조(또는 이용)하여, 제4타입(TYPE4)으로 분류된 제3스케일-아웃 저장 장치(450-1)에 데이터(DATA)를 저장할 수 있다. 도 15에 도시된 바와 같이, 제3스케일-아웃 저장 장치(450-1)는 작은 FTL 매핑 사이즈(예컨대, 4KB)를 갖고, 높은 비율(OVP RATIO)을 갖고, SLC(또는 MLC) 프로그램 방식을 사용한다.
호스트(200)로부터 전송된 데이터(DATA)가 콜드 데이터 또는 시퀀셜 데이터일 때, 데이터 분류기(317-2 또는 330-2)는, 판단된 특성 및/또는 도 15에 도시된 제1테이블(TABLE1=TB2)을 참조(또는 이용)하여, 제3타입(TYPE3)으로 분류된 스케일-아웃 저장 장치에 데이터(DATA)를 저장할 수 있다. 도 15에 도시된 바와 같이, 스케일-아웃 저장 장치는 큰 FTL 매핑 사이즈(예컨대, 8KB)를 사용하고, 낮은 비율 (OVP RATIO)을 갖고, TLC 프로그램 방식을 사용한다.
호스트(200)로부터 전송된 데이터(DATA)가 빠른 데이터 처리를 요구하는 데이터일 때, 데이터 분류기(317-2 또는 330-2)는, 판단된 특성 및/또는 도 15에 도시된 제1테이블(TABLE1=TB2)을 참조(또는 이용)하여, 제2타입(TYPE2)으로 분류된 제2스케일-아웃 저장 장치(430-1)에 데이터(DATA)를 저장할 수 있다. 도 15에 도시된 바와 같이, 제2스케일-아웃 저장 장치(430-1)는 높은 클락 주파수를 사용하고, 높은 대역폭을 사용하고, SLC(또는 MLC) 프로그램 방식을 사용한다.
호스트(200)로부터 전송된 데이터(DATA)가 높은 신뢰성(예컨대, 메타데이터)을 요구하는 데이터일 때, 데이터 분류기(317-2 또는 330-2)는, 판단된 특성 및/또는 도 15에 도시된 제1테이블(TABLE1=TB2)을 참조(또는 이용)하여, 제1타입(TYPE1)으로 분류된 제1스케일-아웃 저장 장치(410-1)에 데이터(DATA)를 저장할 수 있다. 도 15에 도시된 바와 같이, 제1스케일-아웃 저장 장치(410-1)는 낮은 클락 주파수를 사용하고, 낮은 대역폭을 사용하고, 큰 FTL 매핑 사이즈(예컨대, 8KB)를 사용하고, SLC 프로그램 방식을 사용한다.
호스트(200)로부터 전송된 데이터(DATA)가 빠른 데이터 처리를 요구하지 않거나, 데이터(DATA)를 처리하는데 필요한 전력 소모를 줄여야 할 때, 데이터 분류기(317-2 또는 330-2)는, 판단된 특성 및/또는 도 15에 도시된 제1테이블 (TABLE1=TB2)을 참조(또는 이용)하여, 낮은 클락 주파수를 사용하여 낮은 대역폭을 사용하는 스케일-아웃 저장 장치, 예컨대 제1스케일-아웃 저장 장치(410-1)에 데이터(DATA)를 저장할 수 있다.
도 17은 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1부터 도 17을 참조하면, 데이터 처리 시스템(100B)은 호스트(200)와 DRAM이 없는(DRAM-less) 데이터 저장 장치(300B)를 포함할 수 있다. 데이터 처리 시스템(100B)은 도 1의 디스플레이(240)를 더 포함할 수 있다.
예컨대, 데이터 처리 시스템(100B)은 모바일 컴퓨팅 장치로 구현될 수 있다. DRAM이 없는 데이터 저장 장치(300B)는 컨트롤러(310-1)와 메모리 클러스터(400)를 포함할 수 있다. DRAM이 없는 데이터 저장 장치(300B)는 eMMC로 구현될 수 있다.
버퍼 컨트롤러(340-1)는 외부 버퍼에 대한 데이터 처리를 수행하지 않는다. 라이트 작동 시 또는 리드 작동 시, 버퍼 컨트롤러(340-1)는 내부 버퍼(341)를 이용하여 데이터를 제2인터페이스(320) 또는 제3인터페이스(350)로 전송할 수 있다. 버퍼 컨트롤러(340-1)의 작동을 제외하면, 도 17의 컨트롤러(310-1)의 구조와 작동은 도 1의 컨트롤러(310)의 구조와 작동과 실질적으로 동일 또는 유사하므로, 컨트롤러(310-1)에 대한 상세한 설명은 생략한다. 예컨대, 도 1의 버퍼(360)에 저장될 수 있는 제1테이블(TABLE1=TB1 및/또는 TABLE1=TB2)은 내부 버퍼(341)에 저장될 수 있다.
도 18은 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 17과 도 18을 참조하면, 데이터 분류 회로(317)와 데이터 분류 모듈 (330A)을 제외하면, 도 17의 데이터 처리 시스템(100B)의 구조와 작동은 도 18의 데이터 처리 시스템(100B)의 구조와 작동과 실질적으로 동일하다.
도 17에서 데이터 분류 회로(317)는 하드웨어로 구현되나, 도 18에서 데이터 분류 모듈(330A)은 CPU(330 및/또는 331)에서 실행되는 소프트웨어로 구현될 수 있다. 하드웨어 타입 포맷터(317-1)의 기능과 소프트웨어 타입 포맷터(330-1)의 기능을 실질적으로 동일하고, 하드웨어 데이터 분류기(317-2)의 기능과 소프트웨어 데이터 분류기(330-2)의 기능을 실질적으로 동일하다. 따라서, 소프트웨어 데이터 포맷터(330-1)의 기능과 소프트웨어 데이터 분류기(330-2)의 기능에 대한 상세한 설명은 생략한다.
도 19는 본 발명의 또 다른 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1부터 도 19를 참조하면, 데이터 처리 시스템(500)은 데이터베이스 (520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다. 데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300, 또는 300B, 집합적으로 "300")을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치(300)의 구조와 작동은 도 1부터 도 18을 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 예컨대, 데이터베이스 서버(530)는 도 1에 도시된 호스트(200)의 기능을 수행할 수 있다. 데이터베이스 서버(530)는 제1네트워크(535), 예컨대 랜 (Local Area Network(LAN))을 통해 제2무선 네트워크(540), 예컨대, 인터넷 또는 Wi-Fi에 접속될 수 있다. 복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 데이터 처리 시스템
200: 호스트
300: 데이터 저장 장치
310: 컨트롤러
317: 데이터 분류 회로
317-1: 하드웨어 타입 포맷터
317-2: 하드웨어 데이터 분류기
400: 메모리 클러스터
410, 430, ..., 450: 클러스터
410-1~410-4, 430-1~430-4, ..., 450-1~450-4: 스케일-아웃 저장 장치
410-1A, 410-2A, ..., 410-4A: 스케일-아웃 장치
411-1, 411-2, ..., 411-4: 스케일-아웃 컨트롤러
330A: 데이터 분류 모듈
330-1: 소프트웨어 타입 포맷터
330-2: 소프트웨어 데이터 분류기

Claims (20)

  1. 스케일-아웃 저장 장치들; 및
    메인 채널을 통해 상기 스케일-아웃 저장 장치들과 각각 통신하고 제어하도록 구성된 컨트롤러를 포함하고,
    상기 스케일-아웃 저장 장치들 각각은:
    휘발성 메모리;
    불휘발성 메모리; 및
    상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함하고,
    상기 컨트롤러는 라이트 데이터의 특성을 판단하고, 상기 스케일-아웃 저장 장치들 각각의 타입을 결정하고, 상기 라이트 데이터의 상기 특성 및 상기 스케일-아웃 저장 장치들 각각의 상기 타입에 기초하여 상기 스케일-아웃 저장 장치들 중 어느 하나에 상기 라이트 데이터를 전송하도록 더 구성되고,
    상기 컨트롤러는 상기 스케일-아웃 저장 장치들 각각의 상기 타입에 기초하여 상기 스케일-아웃 저장 장치들 각각에 논리 어드레스들의 범위를 할당하도록 더 구성되고,
    상기 라이트 데이터의 상기 특성은 상기 라이트 데이터의 제1 논리 어드레스이고,
    상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 전송된 상기 라이트 데이터의 상기 제1 논리 어드레스는 상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 할당되고,
    상기 컨트롤러는 상기 스케일-아웃 저장 장치들 중에서 상기 라이트 데이터의 상기 제1 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 상기 라이트 데이터를 전송하도록 더 구성되는 데이터 저장 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는 상기 스케일-아웃 저장 장치들 각각의 상기 타입을 결정하기 위한 사용자 입력을 수신하도록 구성된 사용자 인터페이스를 포함하는 데이터 저장 장치.
  3. 제 2 항에 있어서,
    상기 컨트롤러는
    타입 포멧터 및 데이터 분류기를 포함하는 데이터 분류 모듈; 및
    상기 타입 포멧터 및 상기 데이터 분류기를 실행하도록 구성된 CPU(central processing unit)를 더 포함하고,
    상기 타입 포멧터는 상기 사용자 입력에 기초하여 상기 스케일-아웃 저장 장치들 각각의 상기 타입을 결정하고,
    상기 데이터 분류기는 상기 라이트 데이터의 상기 특성을 판단하고, 상기 라이트 데이터의 상기 특성 및 상기 스케일-아웃 저장 장치들 각각의 상기 타입에 기초하여 상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 상기 라이트 데이터를 전송하는 데이터 저장 장치.
  4. 제 1 항에 있어서,
    상기 스케일-아웃 저장 장치들 각각의 상기 타입은 상기 스케일-아웃 컨트롤러의 작동 주파수, 상기 불휘발성 메모리에 대한 프로그램 방식, 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL(flash translation layer)의 매핑 사이즈, 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역 비율, 및 상기 불휘발성 메모리의 용량 중 적어도 하나에 기초하여 결정되는 데이터 저장 장치.
  5. 제 1 항에 있어서,
    상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 휘발성 메모리에 저장된 테이블을 이용하여, 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 스케일-아웃 컨트롤러는 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 불휘발성 메모리에 상기 라이트 데이터를 프로그램하도록 구성되는 데이터 저장 장치.
  6. 제 5 항에 있어서,
    상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 휘발성 메모리에 저장된 상기 테이블은 상기 라이트 데이터의 상기 제1 논리 어드레스 및 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 불휘발성 메모리의 물리 어드레스에 관한 매핑 정보를 포함하는 데이터 저장 장치.
  7. 제 1 항에 있어서,
    상기 컨트롤러는 외부 호스트로부터 리드 데이터의 제2 논리 어드레스를 포함하는 리드 명령을 수신하고, 상기 스케일-아웃 저장 장치들 중 상기 리드 데이터의 상기 제2 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 적어도 어느 하나에 상기 리드 데이터의 상기 제2 논리 어드레스를 전송하도록 더 구성되고,
    상기 리드 데이터의 상기 제2 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 휘발성 메모리에 저장된 테이블을 이용하여, 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 스케일-아웃 컨트롤러는 상기 리드 데이터의 상기 제2 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 불휘발성 메모리로부터 상기 리드 데이터를 리드하도록 더 구성되고,
    상기 리드 데이터의 상기 제2 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 휘발성 메모리에 저장된 상기 테이블은 상기 리드 데이터의 상기 제2 논리 어드레스 및 상기 리드 데이터의 상기 제2 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나의 상기 불휘발성 메모리의 물리 어드레스에 관한 매핑 정보를 포함하는 데이터 저장 장치.
  8. 제 7 항에 있어서,
    상기 컨트롤러는 호스트 인터페이스를 포함하고,
    상기 호스트 인터페이스는 상기 라이트 데이터 및 상기 외부 호스트로부터 상기 리드 명령을 수신하고, 상기 외부 호스트로 상기 리드 데이터를 전송하도록 구성되는 데이터 저장 장치.
  9. 제 1 항에 있어서,
    상기 컨트롤러에 접속된 외부 휘발성 메모리를 더 포함하고,
    상기 외부 휘발성 메모리는 상기 스케일-아웃 저장 장치들 각각에 할당된 상기 논리 어드레스들의 범위에 대한 정보를 포함하는 테이블을 저장하도록 구성되는 데이터 저장 장치.
  10. 제 1 항에 있어서,
    상기 라이트 데이터의 상기 특성은 상기 라이트 데이터가 시퀀셜 액세스(sequential access) 또는 랜덤 액세스(random access)에 대한 데이터인지, 상기 라이트 데이터가 핫 데이터(hot data)인지 또는 콜드 데이터(cold data)인지, 및 상기 라이트 데이터가 큰 데이터(large data)인지 또는 작은 데이터(small data)인지의 특성 중 적어도 하나를 포함하는 데이터 저장 장치.
  11. 제 1 항에 있어서,
    상기 스케일-아웃 저장 장치들 중 적어도 하나에 포함되는 휘발성 메모리 및 스케일-아웃 컨트롤러는 멀티 칩 패키지로 패키징되는 데이터 저장 장치.
  12. 스케일-아웃 저장 장치들; 및
    메인 채널을 통해 상기 스케일-아웃 저장 장치들과 각각 통신하고 제어하도록 구성된 컨트롤러를 포함하고,
    상기 스케일-아웃 저장 장치들 각각은:
    휘발성 메모리;
    불휘발성 메모리; 및
    상기 휘발성 메모리와 상기 불휘발성 메모리를 제어하는 스케일-아웃 컨트롤러를 포함하고,
    상기 컨트롤러는:
    외부 호스트로부터 데이터를 수신하도록 구성된 제 1 인터페이스;
    상기 메인 채널을 통해 상기 스케일-아웃 저장 장치들에 접속된 제 2 인터페이스; 및
    상기 데이터의 특성을 판단하고, 상기 스케일-아웃 저장 장치들 각각의 타입을 결정하고, 상기 데이터의 상기 특성 및 상기 스케일-아웃 저장 장치들 각각의 상기 타입에 기초하여 상기 제 2 인터페이스를 통해 상기 스케일-아웃 저장 장치들 중 어느 하나에 상기 데이터를 전송하도록 구성된 데이터 분류 회로를 포함하고,
    상기 데이터 분류 회로는 상기 스케일-아웃 저장 장치들 각각의 상기 타입에 기초하여 상기 스케일-아웃 저장 장치들 각각에 논리 어드레스들의 범위를 할당하도록 더 구성되고,
    상기 데이터의 상기 특성은 상기 데이터의 제1 논리 어드레스이고,
    상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 전송된 상기 데이터의 상기 제1 논리 어드레스는 상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 할당되고,
    상기 데이터 분류 회로는 상기 스케일-아웃 저장 장치들 중에서 상기 데이터의 상기 제1 논리 어드레스가 할당된 상기 스케일-아웃 저장 장치들 중 상기 어느 하나에 상기 데이터를 전송하도록 더 구성되는 데이터 저장 장치.
  13. 제 12 항에 있어서,
    상기 컨트롤러는 상기 스케일-아웃 저장 장치들 각각의 상기 타입을 결정하기 위한 사용자 입력을 수신하도록 구성된 사용자 인터페이스를 더 포함하는 데이터 저장 장치.
  14. 제 12 항에 있어서,
    상기 스케일-아웃 저장 장치들 각각의 상기 타입은 상기 스케일-아웃 컨트롤러의 작동 주파수, 상기 휘발성 메모리의 대역폭, 상기 불휘발성 메모리에 대한 프로그램 방식, 상기 불휘발성 메모리에 저장된 데이터를 관리하는 FTL(flash translation layer)의 매핑 사이즈, 및 상기 불휘발성 메모리의 사용자 데이터 영역과 오버프로비저닝 영역 비율 중에서 적어도 하나에 기초하여 결정되는 데이터 저장 장치.
  15. 제 12 항에 있어서,
    상기 데이터의 상기 특성은 상기 데이터가 시퀀셜 액세스(sequential access) 또는 랜덤 액세스(random access)에 대한 데이터인지, 상기 데이터가 라이트 데이터 또는 리드 데이터인지, 상기 데이터가 핫 데이터(hot data)인지 또는 콜드 데이터(cold data)인지, 및 상기 데이터가 큰 데이터(large data)인지 또는 작은 데이터(small data)인지의 특성 중 적어도 하나를 포함하는 데이터 저장 장치.
  16. 제 12 항에 있어서,
    상기 데이터 분류 회로는:
    상기 스케일-아웃 저장 장치들 각각의 상기 타입을 결정하도록 구성된 타입 포멧터; 및
    상기 데이터의 상기 특성을 판단하고 상기 스케일-아웃 저장 장치들 중에서 상기 데이터가 전송되는 상기 스케일-아웃 저장 장치들 중 상기 어느 하나를 결정하도록 구성되는 데이터 분류기를 포함하는 데이터 저장 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020150088574A 2015-06-22 2015-06-22 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법 KR102397582B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150088574A KR102397582B1 (ko) 2015-06-22 2015-06-22 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
US15/141,397 US10503406B2 (en) 2015-06-22 2016-04-28 Data storage device and data processing system having the same
CN201610443293.XA CN106257401B (zh) 2015-06-22 2016-06-20 数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150088574A KR102397582B1 (ko) 2015-06-22 2015-06-22 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법

Publications (2)

Publication Number Publication Date
KR20160150497A KR20160150497A (ko) 2016-12-30
KR102397582B1 true KR102397582B1 (ko) 2022-05-13

Family

ID=57588092

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150088574A KR102397582B1 (ko) 2015-06-22 2015-06-22 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법

Country Status (3)

Country Link
US (1) US10503406B2 (ko)
KR (1) KR102397582B1 (ko)
CN (1) CN106257401B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102398181B1 (ko) 2017-07-03 2022-05-17 삼성전자주식회사 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
CN111488122A (zh) * 2017-10-25 2020-08-04 华为技术有限公司 数据写入方法和存储设备
WO2020133202A1 (en) * 2018-12-28 2020-07-02 Micron Technology, Inc. Reduce system active power based on memory usage patterns
CN116719486B (zh) * 2023-08-10 2023-11-17 杭州智灵瞳人工智能有限公司 一种内置数据自动传输功能的多模存储装置及控制方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015034954A1 (en) 2013-09-03 2015-03-12 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
US8719501B2 (en) * 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US7657572B2 (en) 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US8397011B2 (en) 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
US8244961B2 (en) 2008-05-27 2012-08-14 Initio Corporation SSD with distributed processors
WO2011030290A1 (en) * 2009-09-08 2011-03-17 International Business Machines Corporation Data management in solid-state storage devices and tiered storage systems
TW201211775A (en) 2010-09-03 2012-03-16 Jmicron Technology Corp Electronic device, a controller for accessing a plurality of chips via at least one bus and method for accessing a plurality of chips via at least one bus
WO2012056491A1 (en) 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
JP2012230554A (ja) 2011-04-26 2012-11-22 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
KR20130063244A (ko) 2011-12-06 2013-06-14 주식회사 디에이아이오 비휘발성 메모리 시스템
US20130185487A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd Memory system and mobile device including host and flash memory-based storage device
US20130185482A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd. Memory system using a storage having firmware with a plurality of features
US8760922B2 (en) 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US9390055B2 (en) * 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
KR20140112303A (ko) 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
CN103455283B (zh) * 2013-08-19 2016-01-20 华中科技大学 一种混合存储系统
US9582220B2 (en) * 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015034954A1 (en) 2013-09-03 2015-03-12 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses

Also Published As

Publication number Publication date
US10503406B2 (en) 2019-12-10
CN106257401B (zh) 2021-12-14
US20160371031A1 (en) 2016-12-22
KR20160150497A (ko) 2016-12-30
CN106257401A (zh) 2016-12-28

Similar Documents

Publication Publication Date Title
US10579279B2 (en) Data storage device and data processing system having the same
US10534560B2 (en) Data storage device and data processing system having the same
US10481799B2 (en) Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US9996282B2 (en) Method of operating data storage device and method of operating system including the same
US11287978B2 (en) Data storage devices, having scale-out devices to map and control groups on non-volatile memory devices
US11914531B2 (en) Host controller interface using multiple circular queue, and operating method thereof
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10691338B2 (en) Data storage device and data processing system including same
US20160291869A1 (en) Data storage device and data processing system including the same
KR102397582B1 (ko) 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
US10416886B2 (en) Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same
US10114555B2 (en) Semiconductor device having register sets and data processing device including the same
US10331366B2 (en) Method of operating data storage device and method of operating system including the same
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof

Legal Events

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