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

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

Info

Publication number
KR102339779B1
KR102339779B1 KR1020150048263A KR20150048263A KR102339779B1 KR 102339779 B1 KR102339779 B1 KR 102339779B1 KR 1020150048263 A KR1020150048263 A KR 1020150048263A KR 20150048263 A KR20150048263 A KR 20150048263A KR 102339779 B1 KR102339779 B1 KR 102339779B1
Authority
KR
South Korea
Prior art keywords
scale
controller
out storage
storage device
data
Prior art date
Application number
KR1020150048263A
Other languages
English (en)
Other versions
KR20160119513A (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 KR1020150048263A priority Critical patent/KR102339779B1/ko
Priority to US15/090,702 priority patent/US10416886B2/en
Publication of KR20160119513A publication Critical patent/KR20160119513A/ko
Application granted granted Critical
Publication of KR102339779B1 publication Critical patent/KR102339779B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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
    • 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
    • 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/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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

데이터 저장 장치가 공개되다. 상기 데이터 저장 장치는 스케일-아웃 저장 장치들과, 상기 스케일-아웃 저장 장치들로 명령들을 분배하고, 상기 스케일-아웃 저장 장치들 중에서 제1스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 컨트롤러를 포함한다. 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 스케일-아웃 컨트롤러를 포함한다.

Description

데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법{DATA STORAGE DEVICE, DATA PROCESSING SYSTEM HAVING SAME, AND METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 스케일-아웃 저장 장치들 중에서 적어도 하나로부터 출력된 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들에 분배된 명령들을 재분배할 수 있는 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법에 관한 것이다.
플래시 변환 계층(flash translation layer(FTL))을 포함하는 NAND 플래시 메모리 장치의 경우, 상기 NAND 플래시 메모리 장치는 호스트로부터 출력된 라이트 데이터를 상기 NAND 플래시 메모리 장치에 프로그램 완료됨을 보장해야 한다.
NAND 플래시 메모리 장치로 데이터를 프로그램하는 경우, 프로그램 작동의 대상이 되는 메모리 셀 어레이의 블록이 배드 블록일 때, 프로그램 실패가 발생한다. NAND 플래시 메모리 장치는 프로그램 실패를 처리하기 위해 상기 배드 블록에 대한 가비지 컬렉션(garbage collection)을 수행해야 하므로, 프로그램 완료를 위한 프로그램 시간이 연장된다. 따라서, 가비지 컬렉션이 수행되는 동안, NAND 플래시 메모리 장치는 롱 비지 상태로 된다.
데이터 리드 작동의 경우, NAND 플래시 메모리 장치에 포함된 NAND 메모리 셀들을 제조하는 공정이 미세화됨에 따라, 상기 NAND 메모리 셀들로부터 출력된 데이터에서 수정 불가능한 에러(uncorrectable error)가 증가하고, 상기 에러를 정정하기 위해 호스트는 여러 방법을 사용한다. 이에 따라, 호스트의 리드 레이턴시 (read latency)가 증가할 수 있다.
데이터 저장 장치, 예컨대, 데이터 서버의 데이터 처리 능력을 증가하는 방법으로 스케일 업(scale up)과 스케일 아웃(scale out)이 있다. 상기 스케일 업은 상기 데이터 서버 그 자체의 용량을 증가시켜 상기 데이터 서버의 데이터 처리 능력을 향상시키는 것으로서 수직 스케일링으로 불리기도 한다. 상기 스케일 아웃은 접속된 데이터 서버의 개수를 늘려 상기 데이터 서버를 포함하는 시스템의 데이터 처리 능력을 향상시키는 것으로서 수평 스케일링으로 불리기도 한다.
스케일 업(scale up) 구조는 갖는 데이터 저장 장치에서, 상기 데이터 저장 장치에 포함된 불휘발성 메모리 장치들의 개수가 증가하면, 상기 불휘발성 메모리 장치들을 제어하는 컨트롤러와 상기 불휘발성 메모리 장치들 사이에 구현된 인터페이스의 로딩 커패시턴스(loading capacitance)가 증가한다. 이에 따라, 상기 데이터 저장 장치의 데이터 처리 속도가 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, 스케일-아웃 저장 장치들 중에서 적어도 하나로부터 출력된 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들에 분배된 명령들을 재분배할 수 있는 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 스케일-아웃 저장 장치들과, 상기 스케일-아웃 저장 장치들로 명령들을 분배하고, 상기 스케일-아웃 저장 장치들 중에서 제1스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 컨트롤러를 포함하고, 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 스케일-아웃 컨트롤러를 포함한다.
상기 휘발성 메모리 장치는 상기 불휘발성 메모리 장치에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 포함하고, 상기 스케일-아웃 컨트롤러는 상기 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행하는 FTL(flash translation layer) 코드를 실행하는 CPU(central processing unit)를 포함한다.
실시 예에 따라, 상기 컨트롤러는, 상기 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들의 순서를 변경하다.
실시 예에 따라, 상기 컨트롤러는, 상기 상태 정보에 기초하여, 분배된 상기 명령들 중에서 상기 제1스케일-아웃 저장 장치로 분배된 명령을 상기 스케일-아웃 저장 장치들 중에서 제2스케일-아웃 저장 장치로 재분배한다.
실시 예에 따라, 상기 컨트롤러는, 상기 상태 정보에 기초하여, 상기 제1스케일-아웃 저장 장치에 대한 상태를 체크하는 시점을 변경한다.
실시 예에 따라, 상기 상태 정보는 상기 제1스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치에서 가비지 컬렉션이 수행됨을 지시하는 정보를 포함한다. 실시 예에 따라, 상기 상태 정보는 상기 제1스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치로부터 출력된 데이터에 수정 불가능한 에러가 포함되어 있음을 지시하는 정보를 포함한다.
상기 제1스케일-아웃 저장 장치에 포함된 상기 휘발성 메모리 장치와 상기 스케일-아웃 컨트롤러는 멀티칩 패키지(multi chip package)로 패키징된다.
상기 데이터 저장 장치가 상기 컨트롤러에 접속된 채널들을 더 포함할 때, 상기 스케일-아웃 저장 장치들 각각은 상기 채널들 각각에 접속된다.
상기 데이터 저장 장치는 상기 컨트롤러에 접속된 DRAM을 더 포함하고, 상기 휘발성 메모리 장치는 DRAM이고, 상기 불휘발성 메모리 장치는 NAND-타입 플래시 메모리 장치이고, 상기 데이터 저장 장치는 솔리드-스테이트 드라이브이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 호스트와, 상기 호스트에 접속된 데이터 저장 장치를 포함한다. 상기 데이터 저장 장치는 스케일-아웃 저장 장치들과, 상기 스케일-아웃 저장 장치들로 명령들을 분배하고, 상기 스케일-아웃 저장 장치들 중에서 제1스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 컨트롤러를 포함하고, 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 스케일-아웃 컨트롤러를 포함한다.
상기 컨트롤러는, 상기 상태 정보에 기초하여, 분배된 상기 명령들 중에서 상기 제1스케일-아웃 저장 장치로 분배된 명령을 취소한다.
상기 상태 정보는 상기 제1스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치에서 가비지 컬렉션이 수행됨을 지시하는 정보 또는 상기 제1스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치로부터 출력된 데이터에 수정 불가능한 에러가 포함되어 있음을 지시하는 정보를 포함한다.
상기 데이터 저장 장치는 상기 컨트롤러(310)에 접속된 DRAM을 더 포함하고, 상기 휘발성 메모리 장치는 DRAM이고, 상기 불휘발성 메모리 장치는 NAND-타입 플래시 메모리 장치이고, 상기 데이터 저장 장치는 솔리드-스테이트 드라이브이다. 상기 데이터 처리 시스템은 상기 데이터 저장 장치를 포함하는 데이터베이스를 더 포함한다.
본 발명의 실시 예에 따라, 데이터 저장 장치를 포함하는 데이터베이스를 제어하는 데이터베이스 서버에 접속된 인터넷을 통해 데이터를 클라이언트 컴퓨터로 제공하는 데이터 처리 시스템의 작동 방법은, 상기 데이터 저장 장치에 포함된 컨트롤러가, 상기 컨트롤러에 접속된 스케일-아웃 저장 장치들로 명령들을 분배하는 단계와, 상기 컨트롤러가 상기 스케일-아웃 저장 장치들 중에서 제1스케일-아웃 저장 장치로부터 출력된 상태 정보를 수신하는 단계와, 상기 컨트롤러가, 상기 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 단계를 포함한다. 상기 스케일-아웃 저장 장치들 각각은 휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 스케일-아웃 컨트롤러를 포함한다.
상기 명령들을 재분배하는 단계는 상기 컨트롤러가, 상기 상태 정보에 기초하여, 분배된 상기 명령들 중에서 상기 제1스케일-아웃 저장 장치로 분배된 명령을 취소하거나 상기 명령을 상기 스케일-아웃 저장 장치들 중에서 제2스케일-아웃 저장 장치로 재분배한다.
본 발명의 실시 예에 따른 스케일-아웃 저장 장치들을 포함하는 데이터 저장 장치에서, 상기 스케일-아웃 저장 장치들(특히, 스케일-아웃 컨트롤러들) 각각은, 롱 비지가 예상될 때 또는 리드 데이터에 수정 불가능한 에러가 포함되어 있을 때, 상태 정보를 컨트롤러로 보고(또는 전송)할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 컨트롤러는, 스케일-아웃 저장 장치들 중에서 적어도 하나의 스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들로 분배된 잡 분배 방식 또는 명령 분배 방식을 다시 결정할 수 있는 효과가 있다.
따라서, 상기 데이터 저장 장치는, 롱 비지가 예상되거나 리드 데이터에 수정 불가능한 에러가 포함되어 있을 때라도, 스케일-아웃 저장 장치들로 분배된 잡 분배 방식 또는 명령 분배 방식을 다시 결정할 수 있으므로, 데이터 처리 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도이다.
도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다.
도 4는 도 3에 도시된 제1스케일-아웃 장치의 개략도이다.
도 5는 도 4에 도시된 제1스케일-아웃 장치의 반도체 패키지의 실시 예이다.
도 6은 도 1에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 반도체 패키지의 실시 예이다.
도 7은 도 4에 도시된 제1스케일-아웃 컨트롤러의 블록도이다.
도 8은 도 2에 도시된 컨트롤러와 제1클러스터에 포함된 스케일-아웃 장치들의 작동을 설명하는 블록도이다.
도 9는 도 9에 도시된 컨트롤러와 제1클러스터에 포함된 스케일-아웃 장치들의 작동을 설명하는 블록도이다.
도 10은 도 2에 도시된 컨트롤러에 의해 스케일-아웃 장치들로 전송되는 명령들이 리오더되는 과정을 설명하기 위한 블록도이다.
도 11은 도 2에 도시된 컨트롤러에 의해 스케일-아웃 장치들로 전송되는 명령들이 재할당되는 과정을 설명하기 위한 블록도이다.
도 12는 도 2에 도시된 컨트롤러가 스케일-아웃 장치들로 전송되는 명령들을 리밸런싱하는 과정을 설명하는 플로우 차트이다.
도 13은 도 2에 도시된 컨트롤러가 스케일-아웃 장치들로 전송되는 명령들을 리밸런싱하는 기준을 설명하는 플로우 차트이다.
도 14는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 15는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 작동, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 작동, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와, 인터페이스 (110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
데이터 저장 장치(300)에 포함된 제1클러스터(400)의 구조가 도 2에 도시된 구조를 가질 때, 데이터 저장 장치(300)는 스케일-아웃(scale-out) 구조로 구현될 수 있다. 예컨대, 데이터 처리 시스템(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)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는, 인터페이스(110)를 통해, 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동 등)을 제어할 수 있다. 호스트 (200)는 호스트 컨트롤러를 의미할 수 있다.
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) 구현될 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 버퍼(360), 전력 관리 IC(370), 및 메모리 클러스터(400)를 포함할 수 있다. 여기서, 메모리 클러스터(400)의 메모리 장치들의 집합을 의미할 수 있다. 또한, 메모리 클러스터(400)는, 도 2에 도시된 바와 같이, 스케일-아웃 장치들과 메모리 장치들을 포함할 수 있다.
데이터 저장 장치(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), 제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))을 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부팅(booting)될 때, 제1FTL은 메모리 클러스터(400)로부터 내부 메모리(315)로 로드되고 CPU(330 및/또는 331)에 의해 실행될 수 있다.
내부 메모리(315)는 큐(queue) 버퍼로서 사용될 수 있다. 예컨대, 상기 큐 버퍼는 호스트(200)로부터 전송된 명령들을 수신하여 저장할 수 있다. 또한, 상기 큐 버퍼는 메모리 클러스터(400)로 전송되는 명령들과 상기 명령들에 대한 정보를 저장할 수 있다.
실시 예들에 따라, 내부 메모리(315)는 RAM(ramdom access memory), DRAM (dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory (TCM))로 구현될 수 있으나 내부 메모리(315)의 종류가 이들에 한정되는 것은 아니다.
제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), 제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)) 엔진(미도시)을 포함할 수 있다. 상기 EEC 엔진은 메모리 클러스터(400)에 저장될 데이터 및/또는 메모리 클러스터(400)로부터 출력된 데이터에 포함된 에러를 정정할 수 있다. 실시 예에 따라, ECC 엔진은 컨트롤러(310) 내부의 어디라도 구현될 수 있다.
버퍼(360)는, 버퍼 컨트롤러(340)의 제어에 따라, 데이터를 라이트하거나 데이터를 리드할 수 있다. 실시 예들에 따라, 휘발성 메모리 장치로 구현될 수 있는 버퍼(360)는 버퍼 메모리, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(360)는 복수의 클러스터들(410, 430, ... 450)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(330 및/또는 331)에 의해 실행되는 제1FTL은 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
실시 예에 따라, 컨트롤러(310)와 버퍼(360) 각각이 서로 다른 칩(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) 각각의 구조는 도 2부터 도 7을 참조하여 상세히 설명될 것이다. 복수의 클러스터들(410, 430, ... 450) 각각은 복수의 불휘발성 메모리 장치들, 또는 복수의 불휘발성 메모리 장치들을 포함하는 패키지들을 포함할 수 있다.
본 명세서에서 메인 채널(main channel)은 컨트롤러(310), 즉, 제3인터페이스(350)와 해당하는 하나의 클러스터 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다.
웨이(way)는 하나의 메인 채널을 공유하는 하나 또는 그 이상의 불휘발성 메모리 장치들의 그룹을 의미할 수 있다. 따라서, 하나의 메인 채널에는 복수의 웨이들이 접속될 수 있다. 상기 불휘발성 메모리 장치는 다이(die), 메모리 장치, 또는 반도체 패키지를 의미할 수 있다. 컨트롤러(310)는 A-채널*B-웨이를 제어할 수 있다. 이때, A과 B 각각은 1 이상의 자연수를 의미할 수 있다.
도 2는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도이고, 도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다. 도 2에 도시된 데이터 저장 장치(300)는 스케일-아웃(scale-out) 구조를 갖는 데이터 저장 장치로 구현될 수 있다.
제1클러스터(410)는 적어도 하나의 스케일-아웃 장치와 적어도 하나의 불휘발성 메모리 장치, 예컨대 NAND-타입 플래시 메모리 장치(NAND)를 포함할 수 있다. 나머지 클러스터들(430~450) 각각은 적어도 하나의 스케일-아웃 장치와 적어도 하나의 불휘발성 메모리 장치, 예컨대 NAND-타입 플래시 메모리 장치(NAND)를 포함할 수 있다.
도 1부터 도 3을 참조하면, 각 클러스터(410~450)의 구조와 작동은 실질적으로 동일 또는 유사하므로, 제1클러스터(410)의 구조와 작동이 대표적으로 설명된다. 제1클러스터(410)는 복수의 스케일-아웃 저장 장치들(410-1~410-4)을 포함할 수 있다. 비록, 도 3에서는 4개의 스케일-아웃 저장 장치들(410-1~410-4)이 도시되어 있으나 본 발명의 기술적 사상은 제1클러스터(410)에 포함되는 복수의 스케일-아웃 저장 장치들(410-1~410-4)의 개수에 한정되는 것은 아니다. 예컨대, 각 스케일-아웃 저장 장치(410-1~410-4)는 멀티 칩 셋(multi chip set)을 의미할 수 있다.
제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은 제1휘발성 메모리 장치(413-1)의 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다. 상기 제2FTL은 제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)에 동일한 개수의 채널들을 포함하는 것으로 도시되어 있으나, 실시 예들에 따라 각 스케일-아웃 저장 장치(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)을 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부팅 (booting)될 때, 제2FTL은 메모리 클러스터(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) 각각은 플래시 메모리 컨트롤러일 수 있다.
제1휘발성 메모리 장치(413-1)는 제1스케일-아웃 저장 장치(410-1)에 포함된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(423-1 및/또는 423-2)에 의해 실행되는 제2FTL은 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
도 3을 참조하여 설명된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나가 제1스케일-아웃 장치(410-1A)로 대체되면, 메모리 클러스터(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에 도시된 반도체 패키지(310-1A)는 ePOP (embedded package on package)로 구현될 수 있으나 반도체 패키지(310-1A)의 종류가 이에 한정되는 것은 아니다.
반도체 패키지(310-1A)는 반도체 기판(415-1), 반도체 기판(415-1)의 위 (over)에 배치된 제1패키지(PKG1), 및 제1패키지(PKG)의 위(over)에 배치된 제2패키지(PKG2)를 포함할 수 있다. 제1패키지(PKG1)는 제1범프들(415-2)을 통해 반도체 기판(415-1)에 부착될 수 있다. 제2패키지(PKG2)는 제2범프들(415-3)을 통해 제1패키지(PKG1)에 부착될 수 있다. 제1패키지(PKG1)는 컨트롤러(310)를 포함할 수 있다. 제2패키지(PKG2)는 제1스케일-아웃 컨트롤러(411-1), 제1휘발성 메모리 장치 (413-1), 및 적어도 하나의 NAND-타입 플래시 메모리(470)를 포함할 수 있다. 예컨대, 제2패키지(PKG2)는 버퍼(360)를 더 포함할 수 있다.
도 2, 도 3, 및 도 7을 다시 참조하면, 데이터 저장 장치(300)는 컨트롤러 (310)와 메모리 클러스터(400)를 포함하고, 메모리 클러스터(400)에 포함된 장치들이 N(N은 2 이상의 자연수)개이고, 상기 N개의 장치들 각각의 구조가 도 3에 도시된 제1장치(410-1)의 구조와 동일하다고 가정한다. 또한, 상기 N개의 장치들 각각은 독립된 FTL을 포함할 수 있다.
컨트롤러(310)는 N개의 장치들 각각에 라이트 명령 및/또는 리드 명령을 균등하게 배분하여 데이터 저장 장치(300)의 성능을 향상시킬 수 있다. 예컨대, 데이터 라이트 작동의 경우, 컨트롤러(310)는 라이트 데이터를 N개의 장치들 중에서 어느 하나의 장치로 이슈(issue) 또는 출력하고, 상기 장치로부터 상기 라이트 데이터에 대한 프로그램의 완료(completion)를 지시하는 프로그램 완료 응답을 기다린다.
그러나, 상기 장치가 상기 장치에 포함된 불휘발성 메모리 장치에 대한 프로그램 작동을 수행하는 도중에, 상기 장치에 포함된 상기 불휘발성 메모리 장치에서 프로그램 실패가 발생할 경우, 상기 장치에 포함된 FTL은 가비지 컬렉션(garbage collection) 작동을 수행할 수 있다. 상기 가비지 컬렉션 작동이 수행됨에 따라, 상기 가비지 컬렉션 작동이 완료될 때까지 상기 장치는 롱 비지 상태(long busy state)로 진입할 수 있다.
데이터 리드 작동의 경우, 불휘발성 메모리 장치에 포함된 메모리 셀들을 제조하는 공정이 미세화됨에 따라 상기 불휘발성 메모리 장치로부터 출력된 데이터에서 수정 불가능한 에러(uncorrectable error)가 증가하고 상기 에러를 정정하기 위해 컨트롤러(310)는 여러 방법을 사용한다. 이에 따라, 컨트롤러(310)의 리드 레이턴시(read latency)가 증가할 수 있다.
본 발명의 실시 예에 따른 N개의 스케일-아웃 저장 장치들(특히, 스케일-아웃 컨트롤러들) 각각은, 롱 비지가 예상될 때 또는 리드 데이터에 수정 불가능한 에러가 포함되어 있을 때, 상태 정보를 컨트롤러(310)로 보고(또는 전송)할 수 있다. 본 발명의 실시 예에 따른 컨트롤러(310)는, N개의 스케일-아웃 저장 장치들(특히, 스케일-아웃 컨트롤러들) 중에서 적어도 하나의 스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여, N개의 스케일-아웃 저장 장치들 각각에 대한 잡 분배(job distribution) 방식을 다시 결정할 수 있다.
예컨대, 잡(job)은 라이트 명령 및/또는 리드 명령을 의미할 수 있으나 이에 한정되는 것은 아니다. 잡 분배 방식은 잡 할당(job allocation) 방식으로 불릴 수도 있고, 잡 분재 방식은 명령 분배(command allocation) 방식으로 불릴 수도 있다.
예컨대, 잡 분배(또는 명령 분배) 방식은 다음과 같을 수 있다.
1. 삽입(insert)할 수 있는 잡(job)의 순서를 바꾸는 방법;
2. 해당 잡을 다른 유휴(idle) 스케일-아웃 저장 장치로 삽입(또는 전송)하는 방법;
3. 해당 잡을 리-오더(re-order) 하는 방법;
4. 해당 잡을 취소하는 방법;
5. 해당 잡을 다른 스케일-아웃 저장 장치로 재할당(re-assignment)하는 방법;
6. 롱 비지가 예상되는 스케일-아웃 저장 장치의 상태 정보를 체크하는 시점을 변경하는 방법;
7. 롱 비지가 예상되는 스케일-아웃 저장 장치의 상태 정보를 가장 나중에 체크하는 방법;
8. 롱 비지가 예상되는 스케일-아웃 저장 장치로 가장 늦게 잡을 삽입하는 방법; 및/또는
9. 롱 비지가 예상되는 스케일-아웃 저장 장치에 대한 추가적인 상태 체크를 제거하는 방법.
상술한 잡 분배(또는 명령 분배) 방식은 예시적인 것들로서, 상술한 잡 분배(또는 명령 분배) 방식의 종류가 이에 한정되는 것은 아니다. 잡 재분배는 상술한 잡 분배 방법을 포함할 수 있다.
제1스케일-아웃 컨트롤러(411-1)는, 컨트롤러(310)로부터 출력된 명령(CMD)에 응답하여, 불휘발성 메모리 장치들(NAND)을 제어할 수 있다. CPU(423-1 및/또는 423-2)는 컨트롤러(100)로부터 전송된 명령(CMD)을 수신하고, 명령(CMD)에 대한 상태 정보(RSP)를 컨트롤러(100)로 전송할 수 있다. 명령(CMD)은 프로그램 명령, 이레이즈(erase) 명령, 리드(read) 명령을 포함할 수 있으나 명령(CMD)의 종류가 이에 한정되는 것은 아니다. 명령(CMD)은 도 8에 도시된 명령들(CMD1~CMD4) 중에서 적어도 하나를 포함할 수 있고, 상태 정보(RSP)는 도 8에 도시된 상태 장보(RSP1~RSP4) 중에서 적어도 하나를 포함할 수 있다.
상태 정보(RSP)는 컨트롤러(310)로부터 출력된 명령(CMD)의 수행 여부를 나타내는 정보, 명령(CMD)을 완료하는데 필요한 시간에 대한 정보, 데이터에 수정 불가능한 에러가 포함되어 있는지에 대한 정보, 및/또는 롱 비지 여부에 대한 정보를 포함할 수 있으나 상태 정보(RSP)가 이들에 한정되는 것은 아니다. 여기서, 롱 비지는 컨트롤러(100)에 의해 스케쥴된(또는 예상된) 명령 수행 시간보다 지연되는 경우를 의미할 수 있다.
CPU(423-1 및/또는 423-2)는, 제5인터페이스(429)를 통해 전송된 불휘발성 메모리 장치(NAND)의 작동 상태(예컨대, 프로그램 작동 또는 리드 작동이 제대로 수행되고 있는지 및/또는 가비지 컬렉션이 수행되고 있는지)에 기초하여, 상태 정보(RSP)를 생성할 수 있다.
제1메모리 컨트롤러(429-1)는 채널(CH11)에 접속된 불휘발성 메모리 장치들 (NAND) 중에서 적어도 하나의 작동 상태를 판단하고, 판단 결과를 CPU(423-1 및/또는 423-2)로 전송할 수 있다. CPU(423-1 및/또는 423-2)는 판단 결과에 기초하여 상태 정보(RSP)를 생성할 수 있다.
예컨대, 제1메모리 컨트롤러(429-1)는 상기 적어도 하나로부터 명령(CMD)에 대한 작동 완료 시간을 나타내는 정보를 수신하고, 상기 적어도 하나의 작동 상태를 판단하고, 판단 결과를 CPU(423-1 및/또는 423-2)로 전송할 수 있다. CPU(423-1 및/또는 423-2)는 판단 결과에 기초하여 상태 정보(RSP)를 생성할 수 있다.
제1메모리 컨트롤러 (429-1)는, 명령(CMD)이 상기 적어도 하나로부터 데이터를 리드하는 리드 명령일 때, 상기 데이터에 수정 불가능한 에러가 포함되어 있는지를 판단하고 판단 결과에 따라 상기 적어도 하나의 작동 상태를 판단하고, 판단 결과를 CPU(423-1 및/또는 423-2)로 전송할 수 있다. CPU(423-1 및/또는 423-2)는 판단 결과에 기초하여 상태 정보(RSP)를 생성할 수 있다.
제1메모리 컨트롤러(429-1)는, 명령(CMD)이 상기 적어도 하나로 데이터를 프로그램하는 프로그램 명령일 때, 제1메모리 컨트롤러(429-1)는 상기 적어도 하나에서 프로그램 에러가 발생했는지를 판단하고, 판단의 결과에 기초하여 상기 적어도 하나에 대한 작동 상태를 판단하고, 판단 결과를 CPU(423-1 및/또는 423-2)로 전송할 수 있다. CPU(423-1 및/또는 423-2)는 판단 결과에 기초하여 상태 정보(RSP)를 생성할 수 있다.
도 8은 도 2에 도시된 컨트롤러와 제1클러스터에 포함된 스케일-아웃 장치들의 작동을 설명하는 블록도이다. 비록, 도 8부터 도 11에서는 컨트롤러(310)와 제1클러스터(410)에 포함된 스케일-아웃 장치들(410-1A, 410-2A, 410-3A, 및 410-4A)의 작동들이 도시되고 설명되나, 본 발명의 기술적 사상은 컨트롤러(310)와 각 클러스터(410~450)에 포함된 적어도 하나의 스케일-아웃 장치 사이의 작동에도 적용될 수 있다.
도 1부터 도 8을 참조하면, 컨트롤러(310)는 명령들(CMD1~CMD4)을 생성하는 CPU(330)와 명령들(CMD1~CMD4)을 저장하는 내부 메모리(315)를 포함할 수 있다. 앞에서 설명한 바와 같이, 내부 메모리(315)는 명령들(CMD1~CMD4)과 상태 정보 (RSP1~RSP4)를 저장할 수 있는 큐 버퍼로 사용될 수 있다.
CPU(330)는 큐 버퍼(120)에 저장된 각 명령(CMD1~CMD4)을 스케쥴에 따라 각 스케일-아웃 장치(410-1A~410-4A)로 전송할 수 있다.
제1스케일-아웃 장치(410-1A)는, 제1명령(CMD1)에 기초하여, 제1스케일-아웃 장치(410-1A)의 작동에 관련된 제1상태 정보(RSP1) 및/또는 제1스케일-아웃 장치 (410-1A)에 접속된 불휘발성 메모리 장치들 중에서 적어도 하나의 작동 상태를 나타내는 제1상태 정보(RSP1)를 컨트롤러(310)로 전송할 수 있다.
예컨대, 제1상태 정보(RSP1)는 제1스케일-아웃 장치(410-1A)에 의해 제1명령 (CMD1)이 수행될 수 있는지, 상기 적어도 하나에서 롱 비지가 예상되는지, 및/또는 상기 적어도 하나에서 수정 불가능한 에러가 발생했는지를 나타내는 정보일 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310), 예컨대, CPU(330)는, 제1상태 정보(RSP1)에 기초하여, 앞에서 설명한 잡 재분배를 스케일-아웃 장치들(410-1A~410-4A)에 대해 수행할 수 있다. 예컨대, CPU(330)는 제1스케일-아웃 장치(410-1A)로 전송될 명령을 스케일-아웃 장치들(410-2A~410-4A) 중에서 어느 하나로 전송할 수 있다.
제2스케일-아웃 장치(410-2A)는, 제2명령(CMD2)에 기초하여, 제2스케일-아웃 장치(410-2A)의 작동에 관련된 제2상태 정보(RSP2) 및/또는 제2스케일-아웃 장치 (410-2A)에 접속된 불휘발성 메모리 장치들 중에서 적어도 하나의 작동 상태를 나타내는 제2상태 정보(RSP2)를 컨트롤러(310)로 전송할 수 있다.
예컨대, 제2상태 정보(RSP2)는 제2스케일-아웃 장치(410-2A)에 의해 제2명령 (CMD2)이 수행될 수 있는지, 상기 적어도 하나에서 롱 비지가 예상되는지, 및/또는 상기 적어도 하나에서 수정 불가능한 에러가 발생했는지를 나타내는 정보일 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310), 예컨대, CPU(330)는, 제2상태 정보(RSP2)에 기초하여, 앞에서 설명한 잡 재분배를 스케일-아웃 장치들(410-1A~410-4A)에 대해 수행할 수 있다. 예컨대, CPU(330)는 제2스케일-아웃 장치 (410-2A)로 전송될 명령을 스케일-아웃 장치들(410-1A, 410-3A, 및 410-4A) 중에서 어느 하나로 전송할 수 있다.
제4스케일-아웃 장치(410-4A)는, 제4명령(CMD4)에 기초하여, 제4스케일-아웃 장치(410-4A)의 작동에 관련된 제4상태 정보(RSP4) 및/또는 제4스케일-아웃 장치 (410-4A)에 접속된 불휘발성 메모리 장치들 중에서 적어도 하나의 작동 상태를 나타내는 제4상태 정보(RSP4)를 컨트롤러(310)로 전송할 수 있다.
예컨대, 제4상태 정보(RSP4)는 제4스케일-아웃 장치(410-4A)에 의해 제4명령 (CMD4)이 수행될 수 있는지, 상기 적어도 하나에서 롱 비지가 예상되는지, 및/또는 상기 적어도 하나에서 수정 불가능한 에러가 발생했는지를 나타내는 정보일 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310), 예컨대, CPU(330)는, 제4상태 정보(RSP4)에 기초하여, 앞에서 설명한 잡 재분배를 스케일-아웃 장치들(410-1A~410-4A)에 대해 수행할 수 있다. 예컨대, CPU(330)는 제4스케일-아웃 장치(410-4A)로 전송될 명령을 스케일-아웃 장치들(410-1A, 410-2A, 및 410-3A) 중에서 어느 하나로 전송할 수 있다.
도 9는 도 9에 도시된 컨트롤러와 제1클러스터에 포함된 스케일-아웃 장치들의 작동을 설명하는 블록도이다. 도 1부터 도 9를 참조하면, 제2스케일-아웃 장치 (410-2A)는, CPU(330)로부터 출력된 제2명령(CMD2)에 기초하여 수행될 잡들(JOB1과 JOB5)에 대한 정보(REPORT)를 컨트롤러(310)의 CPU(330)로 전송할 수 있다. 정보 (REPORT)는 제2상태 정보(RSP2)에 대응될 수 있다. 예컨대, 잡들(JOB1과 JOB5) 각각은 제2명령(CMD2)에 해당하는 라이트 명령들에 따라 수행되는 라이트 작동일 수 있다.
도 10은 도 2에 도시된 컨트롤러에 의해 스케일-아웃 장치들로 전송되는 명령들이 리오더(re-order)되는 과정을 설명하기 위한 블록도이다.
도 8부터 도 10을 참조하면, 컨트롤러(310), 예컨대 CPU(330)는, 제2스케일-아웃 장치(410-2A)로부터 출력된 정보(REPORT)에 기초하여, 잡 재분배를 스케일-아웃 장치들(410-2A, 410-3A, 및 410-4A)에 대해 수행할 수 있다.
예컨대, 도 9와 도 10을 참조하면, CPU330)는 제2스케일-아웃 장치(410-2A)로 스케쥴된 제6잡(JOB5)을 제8잡(JOB7)으로 리-오더할 수 있고, 제3스케일-아웃 장치(410-3A)로 스케쥴된 제7잡(JOB6)을 제6잡(JOB5)으로 리-오더할 수 있고, 제4스케일-아웃 장치(410-4A)로 스케쥴된 제8잡(JOB7)을 제7잡(JOB6)으로 리-오더할 수 있다.
예컨대, 제2스케일-아웃 장치(410-2A)로부터 출력된 정보(REPORT)가 제6잡 (JOB5)에서 롱 비지가 예상됨을 나타내는 정보를 포함할 때, CPU(330)는 스케일-아웃 장치들(410-1A~410-4A)에 대한 로드 리밸런싱(load re-balancing)을 위해 잡들(JOB5, JOB6, 및 JOB7)을 리오더(re-order)할 수 있다. 예컨대, 리-오더는 취소 (cancel), 재분배(re-assignment), 및/또는 리-오더를 포함할 수 있으나 이에 한정되는 것은 아니다.
도 11은 도 2에 도시된 컨트롤러에 의해 스케일-아웃 장치들로 전송되는 명령들이 재할당(re-assignmnet)되는 과정을 설명하기 위한 블록도이다.
도 3과 도 9를 참조하면, 잡들(JOB0과 JOB4)은 제1스케일-아웃 장치(410-1A)를 포함하는 제1스케일-아웃 저장 장치(410-1)로 할당되고, 잡들(JOB1과 JOB5)은 제2스케일-아웃 장치(410-2A)를 포함하는 제2스케일-아웃 저장 장치(410-2)로 할당되고, 잡들(JOB2와 JOB6)은 제3스케일-아웃 장치(410-3A)를 포함하는 제3스케일-아웃 저장 장치로 할당되고, 잡들(JOB3과 JOB7)은 제4스케일-아웃 장치(410-4A)를 포함하는 제4스케일-아웃 장치(410-4)로 할당된다고 가정한다. 또한, 잡들 (JOB0~JOB4) 중에서 해당하는 잡은 스케일-아웃 장치들(410-1A~410-4A) 중에서 해당하는 스케일-아웃 장치에 의해 이미 처리되었다고 가정한다.
도 9와 도 11을 참조하면, 컨트롤러(310), 예컨대 CPU(330)는, 제2스케일-아웃 장치(410-2A)로부터 출력된 정보(REPORT)에 기초하여, 잡 재분배를 스케일-아웃 장치들(410-2A, 410-3A, 및 410-4A)에 대해 수행할 수 있다.
예컨대, 제2스케일-아웃 장치(410-2A)로부터 출력된 정보(REPORT)가 제6잡 (JOB5)에서 롱 비지가 예상됨을 나타내는 정보를 포함할 때, CPU(330)는 제2스케일-아웃 장치(410-2A)에 할당된 제6잡(JOB5)을 취소하고, 제6잡(JOB6)을 제3스케일-아웃 장치(410-3A)에 재할당되고, 제7잡(JOB6)을 제4스케일-아웃 장치(410-4A)에 재할당하고, 제8잡(JOB7)을 제1스케일-아웃 장치(410-1A)에 재할당할 수 있다.
즉, 컨트롤러(310)는, 제2스케일-아웃 장치(410-2A)로부터 출력된 정보 (REPORT)에 기초하여, 제2스케일-아웃 장치(410-2A)에 할당된 제6잡(JOB5)에서 롱 비지가 예상됨을 판단하고, 판단의 결과에 따라 도 11에 도시된 바와 같이 스케일-아웃 장치들(410-1A~410-4A)에 대한 로드 리밸런싱을 위해 나머지 잡들(JOB6~JOB7)을 스케일-아웃 장치들(410-1A, 410-3A, 및 410-4A)로 재할당할 수 있다.
도 12는 도 2에 도시된 컨트롤러가 스케일-아웃 장치들로 전송되는 명령들을 리밸런싱하는 과정을 설명하는 플로우 차트이다. 여기서, 리밸런싱은 잡 재분배를 의미할 수 있다.
도 1부터 도 12를 참조하면, 컨트롤러(310)는 제2스케일-아웃 장치(410-2)로 제2명령(CMD2)을 전송할 수 있다. 제2명령(CMD2)은 데이터 리드 명령, 데이터 프로그램 명령, 및/또는 제2스케일-아웃 장치(410-2A)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나의 제1불휘발성 메모리 장치의 작동을 제어할 수 있는 명령을 의미할 수 있다.
제2스케일-아웃 장치(410-2A)는 컨트롤러(310)로부터 전송된 제2명령(CMD2)에 기초하여 상기 적어도 하나의 제1불휘발성 메모리 장치를 제어하고, 상기 적어도 하나의 제1불휘발성 메모리 장치로부터 출력된 신호들에 기초하여 상기 적어도 하나의 제1불휘발성 메모리 장치의 작동 상태를 판단할 수 있다(S101). 예컨대, 상기 작동 상태를 롱 비지를 의미할 수 있다.
제2스케일-아웃 장치(410-2A)는 상기 작동 상태에 상응하는 제2상태 정보 (RSP2=REPORT)를 컨트롤러(310)로 전송할 수 있다. 컨트롤러(310)는, 제2상태 정보 (RSP2=REPORT)에 기초하여 상기 적어도 하나의 제1불휘발성 메모리 장치에서 롱 비지가 예상되는지를 판단할 수 있다(S103).
롱 비지가 예상되지 않을 때(S103의 NO), 예컨대, 제2명령(CMD2)이 제2잡(JOB1)과 관련된 명령일 때, 컨트롤러(310)는 잡 재분배를 하지 않는다. 즉, 컨트롤러(310)는 원래에 스케쥴된 적어도 하나의 명령을 제2스케일-아웃 장치(410-2A)로 출력할 수 있다. 따라서, 제2스케일-아웃 장치(410-2A)는, 원래에 스케쥴된 적어도 하나의 명령에 따라, 제2스케일-아웃 장치(410-2A)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나의 제1불휘발성 메모리 장치의 작동을 제어할 수 있다.
롱 비지가 예상될 때(S103의 YES), 예컨대, 제2명령(CMD2)이 제6잡(JOB5)과 관련된 명령일 때, 컨트롤러(310)는 도 10과 도 11을 참조하여 설명된 잡 재분배를 할 수 있다.
도 13은 도 2에 도시된 컨트롤러가 스케일-아웃 장치들로 전송되는 명령들을 리밸런싱하는 기준을 설명하는 플로우 차트이다.
도 1부터 도 13을 참조하면, 컨트롤러(310)는 제2스케일-아웃 장치(410-2A)로부터 제6잡(JOB5)에 대한 제2상태 정보(RSP2=REPOER)를 수신할 수 있다. 제2상태 정보(RSP2=REPOER)는 제6잡(JOB5)에서 롱 비지가 예상됨을 나타내는 정보를 포함할 수 있다(S201). 컨트롤러(310)는, 제2상태 정보(RSP2=REPOER)에 기초하여, 스케일-아웃 장치들(410-1A~410-4A)에 대한 잡 재분배를 할 수 있다.
컨트롤러(310)는 명령들(CMD1~CMD4)을 저장하는 큐 버퍼(315)를 체크할 수 있다. 예컨대, 컨트롤러(310)는 큐 버퍼(315)가 유효한지, 큐 버퍼(315)에 명령들이 남아있는지, 및/또는 큐 버퍼(315)가 사용가능한지 등을 체크할 수 있다(S203).
큐 버퍼(315)가 유효하지 않을 때, 즉 큐 버퍼(315)가 사용될 수 없거나 큐 버퍼(315)에 전송될 명령들이 존재하지 않을 때, 컨트롤러(310)는 잡 재분배를 수행하지 않을 수 있다(S203-1).
큐 버퍼(315)가 유효할 때, 즉 큐 버퍼(315)가 사용될 수 있을 때, 컨트롤러 (310)는 스케일-아웃 장치들(410-1A~410-4A)에 대한 잡 재분재를 수행할 수 있다.
컨트롤러(100)는 제6잡(JOB5)의 우선 순위를 확인할 수 있다(S205). 상기 우선 순위는 사용자 또는 프로그램에 의해 정해질 수 있다.
제6잡(JOB5)의 우선 순위가 높을 때, 도 9부터 도 11을 참조하여 설명한 바와 같이, 컨트롤러(310)는 제2스케일-아웃 장치(410-2A)에 원래 할당된 제6잡 (JOB5)을 취소하고(S207), 제6잡(JOB5)을 제3스케일-아웃 장치(410-3A)로 재할당할 수 있다(S209).
제6잡(JOB5)의 우선 순위가 높지 않을 때, 컨트롤러(310)는 제2스케일-아웃 컨트롤러(210)로 전송될 제6잡(JOB5)의 시간 등급(time grade)을 확인할 수 있다(S211). 여기서, 상기 시간 등급은 제6잡(JOB5)이 수행될 예상 시간에 대한 정보를 포함할 수 있다.
예컨대, 제6잡(JOB5)의 시간 등급이 낮을 때, 제2스케일-아웃 장치(410-2A)는 모든 잡들(JOB0~JOB4, JOB6, JOB7)이 완료된 후 제6잡(JOB5)을 실행할 수 있다 (S217). 그러나, 제6잡(JOB5)의 시간 등급이 높을 때, 컨트롤러(310)는 제6잡 (JOB5)을 재분배할 수 있다. 도 10과 도 11에 도시된 바와 같이, 컨트롤러(310)는 제2스케일-아웃 장치(410-2A)에 할당된 제6잡(JOB5)을 취소하고(S215), 제6잡 (JOB5)을 제3스케일-아웃 장치(410-3A)에 재할당할 수 있다(S216).
도 14는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1부터 도 14를 참조하면, 데이터 처리 시스템(100A)은 호스트(200)와 데이터 저장 장치(300A)를 포함할 수 있다. 예컨대, 데이터 저장 장치(300A)는 eMMC로 구현될 수 있다. 데이터 저장 장치(300A)는 제2인터페이스(320A), 컨트롤러 (310A), 및 메모리 클러스터(400)를 포함할 수 있다.
제2인터페이스(320A)는 컨트롤러(310A)와 호스트 사이에서 주고받는 명령 및/또는 데이터를 제어할 수 있다. 예컨대, 제2인터페이스(320A)는 MMC 인터페이스 (110)를 통해 호스트(200)에 접속될 수 있다. 제2인터페이스(320A)의 기능은 도 1의 제2인터페이스(320)의 기능과 동일 또는 유사할 수 있다.
컨트롤러(310A)는 데이터 저장 장치(300A)의 작동을 제어할 수 있다. 컨트롤러(310A)의 구조와 작동은 도 1의 컨트롤러(310)의 구조와 작동과 실질적으로 동일 또는 유사할 수 있다.
컨트롤러(310A)는 메모리 클러스터(400)의 작동을 제어할 수 있다. 메모리 클러스터(400)는 하나 또는 그 이상의 클러스터들을 포함할 수 있고, 각 클러스터의 구조는 도 2와 도 3에 도시된 각 클러스터의 구조와 실질적으로 동일 또는 유사할 수 있다.
도 15는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1부터 도 15를 참조하면, 데이터 처리 시스템(500)은 데이터베이스 (520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다. 데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300 또는 300A)을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치(300)의 구조와 작동은 도 1부터 도 13을 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 예컨대, 데이터베이스 서버(530)는 도 1에 도시된 호스트(200)의 기능을 수행할 수 있다.
데이터베이스 서버(530)는 제1네트워크(535), 예컨대 LAN(Local Area Network)을 통해 제2무선 네트워크(540), 예컨대, 인터넷 또는 Wi-Fi에 접속될 수 있다. 복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 데이터 처리 시스템
200: 호스트
300: 데이터 저장 장치
310: 컨트롤러
400: 메모리 클러스터
410-1~410-4: 스케일-아웃 저장 장치
410-1A~410-4A: 스케일-아웃 컨트롤러
413-1~413-4: 휘발성 메모리 장치
NAND: 불휘발성 메모리 장치

Claims (10)

  1. 스케일-아웃 저장 장치들; 및
    상기 스케일-아웃 저장 장치들로 명령들을 분배하고, 상기 명령들을 상기 스케일-아웃 저장 장치들로 전송하고, 상기 스케일-아웃 저장 장치들 중에서 제1 스케일-아웃 저장 장치로부터 출력된 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 컨트롤러를 포함하고, 상기 상태 정보는 상기 제1 스케일-아웃 저장 장치로 초기에 할당된 명령에 응답하는 상기 제1 스케일-아웃 저장 장치의 동작 상태에 기초하는 것이고,
    상기 스케일-아웃 저장 장치들 각각은,
    휘발성 메모리 장치;
    불휘발성 메모리 장치; 및
    상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하고, 상기 상태 정보를 상기 컨트롤러로 전송하는 스케일-아웃 컨트롤러를 포함하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 휘발성 메모리 장치는 상기 불휘발성 메모리 장치에 대한 논리 어드레스의 물리 어드레스로의 변환을 위한 매핑 테이블을 포함하고,
    상기 스케일-아웃 컨트롤러는 상기 매핑 테이블을 이용하여 상기 논리 어드레스의 물리 어드레스로의 변환을 수행하는 FTL(flash translation layer)을 실행하는 CPU(central processing unit)를 포함하는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 컨트롤러는 상기 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배되는 상기 명령들의 순서를 변경하는 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 컨트롤러는, 상기 상태 정보에 기초하여, 분배된 상기 명령들 중에서 상기 제1 스케일-아웃 저장 장치로 분배된 명령을 상기 스케일-아웃 저장 장치들 중에서 제2 스케일-아웃 저장 장치로 재분배하는 데이터 저장 장치.
  5. 제1항에 있어서,
    상기 컨트롤러는, 상기 상태 정보에 기초하여, 상기 제1 스케일-아웃 저장 장치에 대한 상태를 체크하는 시점을 변경하는 데이터 저장 장치.
  6. 제1항에 있어서,
    상기 상태 정보는 상기 제1 스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치에서 가비지 컬렉션이 수행됨을 지시하는 정보와 상기 제1 스케일-아웃 저장 장치에 포함된 불휘발성 메모리 장치로부터 출력된 데이터에 수정 불가능한 에러 (uncorrectable error)가 포함되어 있음을 지시하는 정보 중에서 적어도 하나를 포함하는 데이터 저장 장치.
  7. 제1항에 있어서,
    상기 제1 스케일-아웃 저장 장치에 포함된 상기 휘발성 메모리 장치와 상기 스케일-아웃 컨트롤러는 멀티칩 패키지(multi chip package)로 패키징되는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 휘발성 메모리 장치는 DRAM이고,
    상기 불휘발성 메모리 장치는 NAND-타입 플래시 메모리 장치이고,
    상기 데이터 저장 장치는 솔리드-스테이트 드라이브이고,
    상기 데이터 저장 장치는 상기 컨트롤러에 접속되는 다른 DRAM을 더 포함하는 데이터 저장 장치.
  9. 호스트; 및
    상기 호스트에 접속된 데이터 저장 장치를 포함하고,
    상기 데이터 저장 장치는,
    스케일-아웃 저장 장치들; 및
    상기 스케일-아웃 저장 장치들로 명령들을 분배하고, 상기 스케일-아웃 저장 장치들로부터 전송된 상태 정보를 수신하고, 내부 메모리에 상기 명령들과 상기 상태 정보를 저장하고,
    상기 스케일-아웃 저장 장치들 중에서 제1 스케일-아웃 저장 장치로부터 출력된 상기 상태 정보 중 제1 상태 정보에 기초하여 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 컨트롤러를 포함하고, 상기 제1 상태 정보는 상기 제1 스케일-아웃 저장 장치로 초기에 할당된 명령에 응답하는 상기 제1 스케일-아웃 저장 장치의 동작 상태에 기초하는 것이고,
    상기 스케일-아웃 저장 장치들 각각은,
    휘발성 메모리 장치;
    불휘발성 메모리 장치; 및
    상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하고, 상기 상태 정보를 상기 컨트롤러로 전송하는 스케일-아웃 컨트롤러를 포함하는 데이터 처리 시스템.
  10. 데이터 저장 장치를 포함하는 데이터베이스를 제어하는 데이터베이스 서버에 접속된 인터넷을 통해 데이터를 클라이언트 컴퓨터로 제공하는 데이터 처리 시스템의 작동 방법에 있어서,
    상기 데이터 저장 장치에 포함된 컨트롤러가, 상기 컨트롤러에 접속된 스케일-아웃 저장 장치들로 명령들을 분배하는 단계;
    상기 컨트롤러가 상기 스케일-아웃 저장 장치들 중에서 제1 스케일-아웃 저장 장치로부터 출력된 상태 정보를 수신하는 단계, 상기 상태 정보는 상기 제1 스케일-아웃 저장 장치로 초기에 할당된 명령에 응답하는 상기 제1 스케일-아웃 저장 장치의 동작 상태에 기초하는 것이고; 및
    상기 컨트롤러가, 상기 상태 정보에 기초하여, 상기 스케일-아웃 저장 장치들로 분배된 상기 명령들을 재분배하는 단계를 포함하고,
    상기 스케일-아웃 저장 장치들 각각은,
    휘발성 메모리 장치;
    불휘발성 메모리 장치; 및
    상기 휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하고, 상기 상태 정보를 상기 컨트롤러로 전송하는 스케일-아웃 컨트롤러를 포함하는 데이터 처리 시스템의 작동 방법.
KR1020150048263A 2015-04-06 2015-04-06 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법 KR102339779B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150048263A KR102339779B1 (ko) 2015-04-06 2015-04-06 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
US15/090,702 US10416886B2 (en) 2015-04-06 2016-04-05 Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20160119513A KR20160119513A (ko) 2016-10-14
KR102339779B1 true KR102339779B1 (ko) 2021-12-15

Family

ID=57016030

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US10416886B2 (ko)
KR (1) KR102339779B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102339779B1 (ko) * 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
CN108415769A (zh) * 2018-01-14 2018-08-17 长沙开雅电子科技有限公司 一种存储系统cpu加速处理数据请求指令实现方法
KR102555511B1 (ko) * 2018-11-01 2023-07-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200066893A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080276242A1 (en) * 2004-11-22 2008-11-06 International Business Machines Corporation Method For Dynamic Scheduling In A Distributed Environment
US20090228637A1 (en) * 2008-03-10 2009-09-10 Moon Yang Gi High-speed solid state storage system having a hierarchy of different control units that process data in a corresponding memory area and method of controlling the same
US20100268872A1 (en) * 2009-04-20 2010-10-21 Samsung Electronics Co., Ltd. Data storage system comprising memory controller and nonvolatile memory
US20150039935A1 (en) * 2013-08-01 2015-02-05 International Business Machines Corporation Solid state drive array performance and reliability

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7308524B2 (en) * 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
US7957189B2 (en) 2004-07-26 2011-06-07 Sandisk Il Ltd. Drift compensation in a flash memory
WO2008127372A2 (en) * 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US7743203B2 (en) 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US7796424B2 (en) 2007-06-21 2010-09-14 Qimonda North America Corp. Memory device having drift compensated read operation and associated method
US8185713B2 (en) 2007-09-19 2012-05-22 Marvell World Travel Ltd. Flexible sequencer design architecture for solid state memory controller
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
KR101553532B1 (ko) * 2008-04-17 2015-09-16 삼성전자주식회사 스토리지 장치
US7755946B2 (en) 2008-09-19 2010-07-13 Sandisk Corporation Data state-based temperature compensation during sensing in non-volatile memory
KR101504340B1 (ko) * 2008-11-04 2015-03-20 삼성전자주식회사 온도 보상 기능을 가지는 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
KR101014149B1 (ko) 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8064250B2 (en) * 2008-12-16 2011-11-22 Micron Technology, Inc. Providing a ready-busy signal from a non-volatile memory device to a memory controller
KR101581311B1 (ko) 2009-03-11 2015-12-31 삼성전자주식회사 플래시 메모리 장치 및 그 제어 방법
US8495332B2 (en) 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
US8560764B2 (en) 2009-12-21 2013-10-15 Intel Corporation Repurposing NAND ready/busy pin as completion interrupt
US8363478B1 (en) 2010-02-17 2013-01-29 Marvell International Ltd. Group based read reference voltage management in flash memory
US8213255B2 (en) 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US9268720B2 (en) 2010-08-31 2016-02-23 Qualcomm Incorporated Load balancing scheme in multiple channel DRAM systems
US8248856B2 (en) 2010-10-20 2012-08-21 Seagate Technology Llc Predictive read channel configuration
KR101184814B1 (ko) 2010-10-26 2012-09-20 에스케이하이닉스 주식회사 불휘발성 메모리 장치 및 이의 프로그램 방법
CN103403681B (zh) 2010-12-20 2018-09-18 马维尔国际贸易有限公司 描述符调度器
US8472274B2 (en) 2011-03-02 2013-06-25 Apple Inc. Using temperature sensors with a memory device
US8542537B2 (en) 2011-04-29 2013-09-24 Spansion Llc Method and apparatus for temperature compensation for programming and erase distributions in a flash memory
US9003102B2 (en) 2011-08-26 2015-04-07 Sandisk Technologies Inc. Controller with extended status register and method of use therewith
US9483542B2 (en) 2011-09-23 2016-11-01 Hybrid Logic Ltd System for live-migration and automated recovery of applications in a distributed system
KR101366960B1 (ko) 2011-12-23 2014-02-25 한양대학교 산학협력단 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법
US8576651B2 (en) 2012-01-20 2013-11-05 Sandisk 3D Llc Temperature compensation of conductive bridge memory arrays
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
KR20140032789A (ko) 2012-09-07 2014-03-17 삼성전자주식회사 불휘발성 메모리 장치의 컨트롤러 및 그것의 커멘드 스케줄링 방법
US20140137135A1 (en) 2012-11-15 2014-05-15 Taejin Info Tech Co., Ltd. Multi-core-based load balancing data processing methods
US9032177B2 (en) 2012-12-04 2015-05-12 HGST Netherlands B.V. Host read command return reordering based on time estimation of flash read command completion
KR102349422B1 (ko) * 2015-01-28 2022-01-10 삼성전자 주식회사 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 반도체 저장장치
KR102339779B1 (ko) * 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080276242A1 (en) * 2004-11-22 2008-11-06 International Business Machines Corporation Method For Dynamic Scheduling In A Distributed Environment
US20090228637A1 (en) * 2008-03-10 2009-09-10 Moon Yang Gi High-speed solid state storage system having a hierarchy of different control units that process data in a corresponding memory area and method of controlling the same
US20100268872A1 (en) * 2009-04-20 2010-10-21 Samsung Electronics Co., Ltd. Data storage system comprising memory controller and nonvolatile memory
US20150039935A1 (en) * 2013-08-01 2015-02-05 International Business Machines Corporation Solid state drive array performance and reliability

Also Published As

Publication number Publication date
US10416886B2 (en) 2019-09-17
US20160291873A1 (en) 2016-10-06
KR20160119513A (ko) 2016-10-14

Similar Documents

Publication Publication Date Title
KR102403266B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10534560B2 (en) Data storage device and data processing system having the same
KR102527992B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102387968B1 (ko) 데이터 저장 장치와 그 동작 방법
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
US10114550B2 (en) Data storage device and data processing system including the data storage device
US9864526B2 (en) Wear leveling using multiple activity counters
US10691338B2 (en) Data storage device and data processing system including same
KR102395195B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US20160291869A1 (en) Data storage device and data processing system including the same
KR102339779B1 (ko) 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
KR102397582B1 (ko) 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR102450556B1 (ko) 불휘발성 메모리 장치들을 제어할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
US20240004561A1 (en) Data Storage Device and Method for Adaptive Host Memory Buffer Allocation Based on Virtual Function Prioritization

Legal Events

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