KR20160119541A - 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 - Google Patents
데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 Download PDFInfo
- Publication number
- KR20160119541A KR20160119541A KR1020150048334A KR20150048334A KR20160119541A KR 20160119541 A KR20160119541 A KR 20160119541A KR 1020150048334 A KR1020150048334 A KR 1020150048334A KR 20150048334 A KR20150048334 A KR 20150048334A KR 20160119541 A KR20160119541 A KR 20160119541A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- controller
- scale
- data
- policy
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
데이터 저장 장치는 제1불휘발성 메모리와 제1휘발성 메모리를 제어하는 제1스케일-아웃 컨트롤러와, 제2불휘발성 메모리와 제2휘발성 메모리를 제어하는 제2스케일-아웃 컨트롤러와, 상기 제1불휘발성 메모리에 대한 제1메모리 관리 정책과 상기 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 서로 다르게 결정하는 컨트롤러를 포함한다.
Description
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 QoS(Quality of Service)를 향상시키고 컨트롤러의 메모리 리소스를 절약할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되고, 상기 메모리 장치는 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 플래시 메모리 장치는 복수의 메모리 셀들이 한 번의 프로그램 작동으로 소거(erase) 또는 프로그램(program)되는 EEPROM의 일 예이다.
불휘발성 메모리 장치들(예컨대, 플래시 메모리 장치들)을 포함하는 종래의 드라이브의 경우, 상기 드라이브의 용량을 증가시키기 위해서는 상기 불휘발성 메모리 장치들의 개수가 증가해야 한다.
상기 드라이브에 포함된 상기 불휘발성 메모리 장치들의 개수가 증가하면, 논리 어드레스들(logical addresses)을 물리 어드레스들(physical addresses)로 변환하는 정보를 포함하는 매핑 테이블의 용량(또는 크기)도 증가해야 한다. 그러나, 매핑 테이블을 저장하는 메모리의 용량과 상기 메모리의 처리 속도를 고려하면, 불휘발성 메모리 장치들의 개수는 무한정 증가할 수 없다.
데이터 저장 장치, 예컨대, 데이터 서버의 데이터 처리 능력을 증가하는 방법으로 스케일 업(scale up)과 스케일 아웃(scale out)이 있다. 상기 스케일 업은 상기 데이터 서버 그 자체의 용량을 증가시켜 상기 데이터 서버의 데이터 처리 능력을 향상시키는 것으로서 수직 스케일링으로 불리기도 한다. 상기 스케일 아웃은 접속된 데이터 서버의 개수를 늘려 상기 데이터 서버를 포함하는 시스템의 데이터 처리 능력을 향상시키는 것으로서 수평 스케일링으로 불리기도 한다.
스케일 업(scale up) 구조는 갖는 데이터 저장 장치에서, 상기 데이터 저장 장치에 포함된 불휘발성 메모리 장치들의 개수가 증가하면, 상기 불휘발성 메모리 장치들을 제어하는 컨트롤러와 상기 불휘발성 메모리 장치들 사이에 구현된 인터페이스의 로딩 커패시턴스(loading capacitance)가 증가한다. 이에 따라, 상기 데이터 저장 장치의 데이터 처리 속도가 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 QoS(Quality of Service)를 향상시키고 컨트롤러의 메모리 리소스를 절약하기 위해 불휘발성 메모리들 각각에 대한 메모리 관리 정책을 서로 다르게 설정할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 제1불휘발성 메모리와 제1휘발성 메모리를 제어하는 제1스케일-아웃 컨트롤러와, 제2불휘발성 메모리와 제2휘발성 메모리를 제어하는 제2스케일-아웃 컨트롤러와, 상기 제1불휘발성 메모리에 대한 제1메모리 관리 정책과 상기 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 서로 다르게 결정하는 컨트롤러를 포함한다.
상기 제1스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제1명령에 기초하여 상기 제1불휘발성 메모리에 대한 상기 제1메모리 관리 정책을 설정하고, 상기 제2스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제2명령에 기초하여 상기 제2불휘발성 메모리에 대한 상기 제2메모리 관리 정책을 설정한다.
상기 컨트롤러는, 상기 데이터 저장 장치의 사용가능한 총 메모리 용량에 기초하여, 상기 제1명령과 상기 제2명령을 생성한다.
상기 제1스케일-아웃 컨트롤러는 상기 제1메모리 관리 정책에 따라서 상기 제1휘발성 메모리에서 생성된 제1자유 영역에 대한 정보를 상기 컨트롤러로 전송하고, 상기 제2스케일-아웃 컨트롤러는 상기 제2메모리 관리 정책에 따라서 상기 제2휘발성 메모리에서 생성된 제2자유 영역에 대한 정보를 상기 컨트롤러로 전송한다.
상기 제1메모리 관리 정책은 상기 제1불휘발성 메모리에 대한 제1FTL (flash translation layer) 매핑 정책이고, 상기 제2메모리 관리 정책은 상기 제2불휘발성 메모리에 대한 제2FTL 매핑 정책이다.
상기 제1FTL 매핑 정책은 상기 제1불휘발성 메모리에 저장된 제1데이터를 관리하는 제1크기를 나타내고, 상기 제2FTL 매핑 정책은 상기 제2불휘발성 메모리에 저장된 제2데이터를 관리하는 제2크기를 나타낸다.
상기 제1FTL 매핑 정책은 페이지-레벨 매핑 정책, 블록-레벨 매핑 정책, 및 하이브리드 매핑 정책 중에서 어느 하나이고, 상기 제2FTL 매핑 정책은 상기 페이지-레벨 매핑 정책, 상기 블록-레벨 매핑 정책, 및 상기 하이브리드 매핑 정책 중에서 다른 하나이고, 상기 제1휘발성 메모리와 상기 제1스케일-아웃 컨트롤러는 제1패키지로 패키징되고, 상기 제2휘발성 메모리와 상기 제2스케일-아웃 컨트롤러는 제2패키지로 패키징된다.
실시 예에 따라, 상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 제1데이터를 상기 제1불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 어느 하나로 프로그램할지를 결정하고, 상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 제2데이터를 상기 제2불휘발성 메모리에 상기 순차적 프로그램 방식과 상기 랜덤 프로그램 방식 중에서 다른 하나로 프로그램할지를 결정한다.
실시 예에 따라, 상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 제1액세스 빈도를 갖는 제1데이터를 상기 제1불휘발성 메모리에 프로그램할지를 결정하고, 상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 상기 제1액세스 빈도와 다른 제2액세스 빈도를 갖는 제2데이터를 상기 제2불휘발성 메모리에 프로그램할지를 결정한다.
실시 예에 따라, 상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 상기 제1불휘발성 메모리에 포함된 제1불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제2메모리 셀들의 개수와 2-비트 이상의 정보를 저장하는 제3메모리 셀들의 개수의 비율을 결정하고, 상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 상기 제2불휘발성 메모리에 포함된 제4불휘발성 메모리 셀들 중에서 상기 1-비트 정보를 저장하는 제5메모리 셀들의 개수와 상기 제2-비트 이상의 정보를 저장하는 제6메모리 셀들의 개수의 비율을 결정한다.
실시 예에 따라, 상기 제1메모리 관리 정책과 제2메모리 관리 정책 각각은 서로 다른 ECC (error control coding) 코드 레이트일 수 있다.
상기 제1불휘발성 메모리는 제1메모리 셀들을 포함하는 제1 3-차원(first three-dimensional) 메모리 셀 어레이를 포함하고, 상기 제2불휘발성 메모리는 제2메모리 셀들을 포함하는 제2 3-차원 (second three-dimensional) 메모리 셀 어레이를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 데이터 저장 장치와, 인터페이스를 통해 상기 데이터 저장 장치에 접속된 호스트를 포함한다. 상기 데이터 저장 장치는 제1불휘발성 메모리와 제1휘발성 메모리를 제어하는 제1스케일-아웃 컨트롤러와, 제2불휘발성 메모리와 제2휘발성 메모리를 제어하는 제2스케일-아웃 컨트롤러와, 상기 제1불휘발성 메모리에 대한 제1메모리 관리 정책과 상기 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 서로 다르게 결정하는 컨트롤러를 포함한다.
상기 제1스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제1명령에 기초하여 상기 제1불휘발성 메모리에 대한 상기 제1메모리 관리 정책을 설정하고, 상기 제2스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제2명령에 기초하여 상기 제2불휘발성 메모리에 대한 상기 제2메모리 관리 정책을 설정한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 스케일-아웃 장치들 각각에 의해 제어되는 불휘발성 메모리들에 대한 메모리 관리 정책을 서로 다르게 설정할 수 있는 있으므로, QoS(Quality of Service)를 향상시킬 수 있는 효과가 있다.
또한, 데이터 저장 장치는 스케일-아웃 장치와 상기 스케일-아웃 장치에 의해 제어되는 불휘발성 메모리를 포함하는 장치별로 메모리 관리 정책을 서로 다르게 설정할 수 있는 있으므로, 상기 데이터 저장 장치에 포함된 컨트롤러의 메모리 리소스(memory resource)를 절약할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따라 서로 다른 메모리 관리 정책을 갖는 장치들을 포함하는 메모리 클러스터의 개념도이다.
도 3은 도 1에 도시된 본 발명의 실시 예에 따른 제1클러스터의 실시 예를 나타내는 블록도이다.
도 4는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치의 블록도이다.
도 5는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치에 대한 패키지의 실시 예이다.
도 6은 도 2에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 패키지의 실시 예이다.
도 7은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러의 블록도이다.
도 8은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러에 포함된 휘발성 메모리 장치들의 실시 예를 나타낸다.
도 9는 서로 다른 맵 사이즈들에 따라 서로 다른 자유 공간들을 갖는 도 4에 도시된 휘발성 메모리에 대한 실시 예들을 나타낸다.
도 10은 도 3에 도시된 불휘발성 메모리들 각각에 포함된 SLC 영역과 MLC 영역의 비율을 나타내다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 12는 도 1 또는 도 11에 도시된 데이터 저장 장치의 작동을 설명하는 개념도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따라 서로 다른 메모리 관리 정책을 갖는 장치들을 포함하는 메모리 클러스터의 개념도이다.
도 3은 도 1에 도시된 본 발명의 실시 예에 따른 제1클러스터의 실시 예를 나타내는 블록도이다.
도 4는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치의 블록도이다.
도 5는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치에 대한 패키지의 실시 예이다.
도 6은 도 2에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 패키지의 실시 예이다.
도 7은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러의 블록도이다.
도 8은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러에 포함된 휘발성 메모리 장치들의 실시 예를 나타낸다.
도 9는 서로 다른 맵 사이즈들에 따라 서로 다른 자유 공간들을 갖는 도 4에 도시된 휘발성 메모리에 대한 실시 예들을 나타낸다.
도 10은 도 3에 도시된 불휘발성 메모리들 각각에 포함된 SLC 영역과 MLC 영역의 비율을 나타내다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 12는 도 1 또는 도 11에 도시된 데이터 저장 장치의 작동을 설명하는 개념도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다. 본 발명의 실시 예에 따른 데이터 저장 장치(300)는 스케일-아웃(scale out) 구조를 갖는 데이터 저장 장치일 수 있다.
본 명세서에서 설명될 데이터 처리 시스템(100)은 PC(personal computer), 워크스테이션, 데이터 센터, 인터넷 데이터 센터, SAN(storage area network), 또는 NAS(Network attached storage)에서 사용될 수 있는 데이터 처리 시스템을 의미할 수 있으나 이에 한정되는 것은 아니다.
인터페이스(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)일 수 있으나 인터페이스(110)의 종류가 이들에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는, 인터페이스(110)를 통해, 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동 등)을 제어할 수 있다.
호스트(200)는, 버스 구조(또는 버스; 210)를 통해, 명령 및/또는 데이터를 주거나 받을 수 있는 CPU(central processing unit; 220)와 제1인터페이스(230)를 포함할 수 있다. 비록, 도 1에 도시된 호스트(200)는 버스 구조(210), CPU(220), 및 제1인터페이스(230)를 포함하는 것으로 도시되어 있으나 호스트(200)의 구조가 도 1에 도시된 호스트(200)에 한정되는 것은 아니다.
실시 예에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 웹 서버, 데이터 서버, 또는 데이터베이스 서버로 구현될 수 있으나 이에 한정되는 것은 아니다. 즉, 호스트(200)는 데이터 저장 장치(300)를 제어할 수 있는 다양한 장치를 의미할 수 있다.
예컨대, 버스 구조(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ACE(AXI Coherency Extensions), ASB (advanced system bus), 또는 이들의 결합으로 구현될 수 있으나 버스 구조 (210)가 이들에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300)의 라이트 작동(write operation)을 제어할 수 있는 라이트 요청, 또는 데이터 저장 장치(300)의 리드 작동(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 포맷을 갖는 명령 및/또는 데이터를 인터페이스(110)를 통해 데이터 저장 장치(300)로 전송할 수 있다. 또한, 제1인터페이스 (230)는 데이터 저장 장치(300)로부터 전송된 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 데이터를 버스 구조(210)를 통해 CPU(220)로 전송할 수 있다. 실시 예에 따라, 제1인터페이스(230)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(230)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게 구현될 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 버퍼(360), 및 메모리 클러스터 (400)를 포함할 수 있다. 본 명세서에서 메모리 클러스터(400)는 메모리 칩들, 메모리 장치들, 메모리 패키지들, 또는 스케일-아웃 저장 장치들(또는 멀티 칩 셋들 (multi chip sets))의 집합을 의미할 수 있다.
데이터 저장 장치(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))로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 플래시 메모리-기반 메모리 장치는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다.
다른 실시 예들에 따라, 데이터 저장 장치(300)는 하드디스크 드라이브 (hard disk drive(HDD)), PRAM(phase change random access memory(RAM)) 장치, MRAM(magnetoresistive RAM) 장치, STT-MRAM(spin-transfer torque MRAM) 장치, FRAM(ferroelectric RAM) 장치 또는 RRAM(resistive RAM) 장치로 구현될 수 있으나 데이터 저장 장치(300)의 종류가 상술한 예들에 한정되는 것은 아니다.
컨트롤러(310)는 호스트(200), 버퍼(360), 및 메모리 클러스터(400) 사이에서 주거나 받는 명령 및/또는 데이터의 전송을 제어할 수 있다. 실시 예들에 따라, 컨트롤러(310)는 IC, SoC, 또는 전자 회로들을 포함하는 패키지로 구현될 수 있다.
컨트롤러(310)는 버스 구조(311), 내부 메모리(315), 제2인터페이스(320), 적어도 하나의 CPU(330 및/또는 331), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 포함할 수 있다. 본 명세서에서 인터페이스는 명령 및/또는 데이터의 전송을 제어하는 장치 또는 컨트롤러를 의미할 수 있으나 이에 한정되는 것은 아니다.
버스 구조(311)는 앞에서 설명한 바와 같이 AMBA, AHB, APB, AXI, ACE, ASB, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(315)는 컨트롤러(310)의 작동에 필요한 데이터 또는 컨트롤러 (310)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동, 등)에 의해 생성된 데이터를 저장할 수 있다. 실시 예들에 따라, 내부 메모리(315)는 RAM(ramdom access memory), DRAM(dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory (TCM))으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제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, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
하나 또는 그 이상의 CPU(330 및/또는 331)는, 버스 구조(311)를 통해, 내부 메모리(315), 제2인터페이스(320), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 제어할 수 있다. 예컨대, 각 CPU(330과 331)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
예컨대, 제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, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(360)는, 버퍼 컨트롤러(340)의 제어에 따라, 데이터를 저장하거나 데이터를 리드할 수 있다. 실시 예들에 따라, 휘발성 메모리로 구현될 수 있는 버퍼 (360)는 RAM, SRAM, DRAM, 또는 버퍼 메모리로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(360)는 복수의 클러스터들(410, 430, ... 450)에 대한 논리 어드레스-물리 어드레스 변환(logical address to physical address translation)을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있다. 예컨대, 매핑 테이블은 플래시 변환 계층(flash translation layer(FTL)) 매핑 테이블일 수 있다. 적어도 하나의 CPU(330 및/또는 331)는 FTL을 실생하고, 상기 FTL은 FTL 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환(또는 매핑(mapping)) 작동을 수행할 수 있다. 예컨대, 상기 FTL은 적어도 하나의 CPU(330 및/또는 331)에 의해 액세스될 수 있는 메모리(예컨대, 내부 메모리(315)) 또는 메모리 클러스터(400)에 저장될 수 있다.
실시 예에 따라, 컨트롤러(310)와 버퍼(360) 각각이 서로 다른 반도체 칩으로 구현될 때, 컨트롤러(310)와 버퍼(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package(MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 패키지의 종류가 이에 한정되는 것은 아니다. 예컨대, 버퍼(360)를 포함하는 제1칩은 컨트롤러(310)를 포함하는 제2칩의 위(above)에 스택 볼들(stack balls)을 통해 적층될 수 있다.
메모리 클러스터(400)는 복수의 클러스터들(410, 430, ... 450)을 포함할 수 있다. 제1클러스터(410)는 제1메인 채널(CHA)에 접속될 수 있고, 제2클러스터(430)는 제2메인 채널(CHB)에 접속될 수 있고, 제3클러스터(450)는 제3메인 채널(CHC)에 접속될 수 있다.
채널(channel)로도 불릴 수 있는 메인 채널은 컨트롤러(310), 즉, 제3인터페이스(350)와 각 클러스터(410, 430, ... 450) 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다.
웨이(way)는 동일한 메인 채널(또는 채널)을 공유하는 하나 또는 그 이상의 불휘발성 메모리들의 그룹을 의미할 수 있다. 따라서, 하나의 메인 채널에는 복수의 웨이들이 접속될 수 있다. 각 클러스터(410, 430, ..., 450)의 구조와 작동은 도 2부터 도 10을 참조하여 상세히 설명될 것이다.
도 2는 본 발명의 실시 예에 따라 서로 다른 메모리 관리 정책을 갖는 장치들을 포함하는 메모리 클러스터의 개념도이다.
제1클러스터(410)는 복수의 장치들(410-1~410-4)을 포함할 수 있고, 제2클러스터(430)는 복수의 장치들(430-1~430-4)을 포함할 수 있고, 제3클러스터(450)는 복수의 장치들(450-1~450-4)을 포함할 수 있다. 예컨대, 각 장치(410-1~410-4, 430-1~430-4, ..., 450-1~450-4)는 스케일-아웃 저장 장치(scale-out storage device) 또는 멀티 칩 셋(multi chip set)을 의미할 수 있다. 각 장치(410-1~410-4, 430-1~430-4, ..., 450-1~450-4)는 독립적으로 실행되는 각 로컬 FTL을 포함할 수 있다. 상기 각 로컬 FTL은 각 장치(410-1~410-4, 430-1~430-4, ..., 450-1~450-4)에 포함된 NAND-타입 플래시 메모리들에 대한 논리 어드레스-물리 어드레스 변환을 제어할 수 있다. 예컨대, 논리 어드레스는 논리 블록 어드레스(logical block address(LBA)) 또는 논리 페이지 넘버(logical page number(LPN))일 수 있다.
비록, 도 2에서는 각 클러스터(410~450)가 4개씩의 장치들을 포함하는 것으로 도시되어 있으나 이는 예시적인 것에 불과하므로, 각 클러스터(410~450)에 포함된 장치들의 개수는 실시 예에 따라 다양하게 변경될 수 있다. 또한, 각 클러스터 (410~450)에 포함된 장치들의 개수는 서로 동일하거나 서로 다를 수 있다.
본 명세서에서 장치(스케일-아웃 저장 장치 또는 멀티 칩 셋)는 도 3에 도시된 바와 같이 다양한 구성 요소들, 예컨대 스케일-아웃 컨트롤러, 휘발성 메모리, 채널들, 및 불휘발성 메모리들을 포함할 수 있다.
컨트롤러(310), 예컨대 적어도 하나의 CPU(330 및/또는 331)는 메모리 클러스터(400)에 포함된 각 장치(410-1~410-4, 430-1~430-4, ..., 및 450-1~450-4)에 대한 메모리 관리 정책(memory management policy)을 서로 다르게 정의 또는 결정할 수 있다. 예컨대, 메모리 관리 정책은, 사용자 또는 호스트(200)의 제어에 따라, 서로 다르게 정의 또는 결정될 수도 있다. 예컨대, 각 장치(410-1~410-4, 430-1~430-4, ..., 및 450-1~450-4)에 대한 메모리 관리 정책은, 적어도 하나의 CPU(330 및/또는 331)의 제어에 따라, 내부 메모리(315), 버퍼(360), 또는 메모리 클러스터(400)에 저장될 수 있다.
본 명세서에서 설명될 메모리 관리 정책들은 다음들을 포함할 수 있으나 상기 메모리 관리 정책들이 아래의 예들에 한정되는 것은 아니다.
(1) 데이터가 순차적(sequential) 방식으로 또는 랜덤(random) 방식으로 액세스(예컨대, 라이트 또는 리드)되는지;
(2) 데이터의 액세스 빈도가 높은지 낮은지;
(3) 싱글-레벨 셀(single-level cell(SLC)) 방식으로 데이터를 프로그램하는 메모리 셀들의 개수와 멀티-레벨 셀(multi-level cell(MLC)) 방식으로 데이터를 프로그램하는 메모리 셀들의 개수의 비율;
(4) ECC(error control coding) 코드 레이트(code rate)가 높은지 낮은지; 및/또는
(5) FTL 어드레스 매핑이 페이지-레벨 매핑 정책(page-level mapping policy), 블록-레벨 매핑 정책, 또는 하이브리드 매핑 정책으로 관리되는지.
여기서, 메모리 클러스터(400)로 라이트되거나 메모리 클러스터(400)로부터 리드되는 데이터에 대한 액세스 빈도(access frequency)에 따라 상기 데이터는 핫 데이터(hot data)와 콜드 데이터(cold data)로 분류될 수 있다. 상기 핫 데이터는 액세스 빈도가 상대적으로 높은 데이터를 의미할 수 있고, 상기 콜드 데이터는 액세스 빈도가 상대적으로 낮은 데이터를 의미할 수 있다. 예컨대, 상기 핫 데이터는 메모리 클러스터(400)의 제1장치에 저장될 수 있고, 상기 콜드 데이터는 메모리 클러스터(400)의 제2장치에 저장될 수 있다.
페이지-레벨 매핑 정책은 NAND-타입 플래시 메모리의 페이지(page) 단위로 어드레스 매핑을 관리하는 정책 또는 스킴(scheme)을 의미할 수 있다.
블록(block)-레벨 매핑 정책은 NAND-타입 플래시 메모리의 블록(block) 단위로 어드레스 매핑을 관리하는 정책 또는 스킴을 의미할 수 있다.
하이브리드(hybrid) 매핑 정책은 상기 페이지-레벨 매핑 정책과 상기 블록-레벨 매핑 정책을 혼합하여 어드레스 매핑을 관리하는 정책 또는 스킴을 의미할 수 있다. 예컨대, 매핑 정책은 메모리 클러스터(400)에 포함된 장치별로 결정될 수 있다.
도 2에 도시된 바와 같이, 컨트롤러(310), 예컨대, 적어도 하나의 CPU(330 및/또는 331)는 장치들(410-1과 410-2) 각각을 높은 신뢰도 데이터 파티션 (partition)으로 정의할 수 있고, 장치들(430-1과 450-1)을 순차적 리드 또는 라이트 데이터 파티션으로 정의할 수 있고, 장치들(410-3, 410-4, 430-2~430-4, 및 450-2~450-4)를 랜덤 리드 또는 라이트 데이터 파티션으로 정의할 수 있다.
높은 신뢰도 데이터 파티션으로 정의된 각 장치(410-1과 410-2)는 높은 ECC 코드 레이트(code rate)를 사용하여 에러 정정 능력을 높이거나 각 장치(410-1과 410-2)에 포함된 플래시 메모리들로 SLC 방식으로 데이터를 프로그램할 수 있다.
순차적 리드 또는 라이트 데이터 파티션으로 정의된 각 장치(430-1과 450-1)는 각 장치(430-1과 450-1)에 포함된 플래시 메모리들에 저장된 데이터를 제1크기(예컨대, 8KB 또는 16KB) 단위로 관리할 수 있다.
랜덤 리드 또는 라이트 데이터 파티션으로 정의된 각 장치(410-3, 410-4, 430-2~430-4, 및 450-2~450-4)는 각 장치(410-3, 410-4, 430-2~430-4, 및 450-2~450-4)에 포함된 플래시 메모리들에 저장된 데이터를 제2크기(예컨대, 4KB) 단위로 관리할 수 있다. 예컨대, 상기 제1크기는 상기 제2크기보다 클 수 있고, 제1크기와 제2크기는 FTL 어드레스 매핑 정책에 포함될 수 있다.
도 3은 도 1에 도시된 본 발명의 실시 예에 따른 제1클러스터의 실시 예를 나타내는 블록도이다. 도 1부터 도 3을 참조하면, 각 클러스터(410~450)의 구조와 작동은 실질적으로 동일 또는 유사하므로, 제1클러스터(410)의 구조와 작동이 대표적으로 설명된다.
제1클러스터(410)는 장치들(410-1~410-4), 예컨대 스케일-아웃 저장 장치들 또는 멀티 칩 셋들을 포함할 수 있다.
제1장치(410-1)는 제1스케일-아웃 컨트롤러(411-1)와 제1휘발성 메모리(413-1)를 포함하는 제1스케일-아웃 장치(410-1A), 채널들(CH11~CH1m; m은 2 이상의 자연수), 및 제1불휘발성 메모리들(NAND)을 포함할 수 있다.
제2장치(410-2)는 제2스케일-아웃 컨트롤러(411-2)와 제2휘발성 메모리(413-2)를 포함하는 제2스케일-아웃 장치(410-2A), 채널들(CH21~CH2m), 및 제2불휘발성 메모리들(NAND)을 포함할 수 있다.
제4장치(410-4)는 제4스케일-아웃 컨트롤러(411-4)와 제4휘발성 메모리(413-4)를 포함하는 제2스케일-아웃 장치(410-4A), 채널들(CH41~CH4m), 및 제4불휘발성 메모리들(NAND)을 포함할 수 있다. 본 명세서에서 휘발성 메모리 또는 불휘발성 메모리는, 반도체 칩 또는 상기 반도체 칩을 포함하는 반도체 패키지를 의미할 수 있다.
도 3에 도시된 불휘발성 메모리들은 NAND-타입 플래시 메모리들(NAND)이라고 가정한다. 상술한 바와 같이, 불휘발성 메모리들(NAND)은 NAND-타입 플래시 메모리 칩들 또는 이를 포함하는 패키지들을 의미할 수 있다.
제1스케일-아웃 컨트롤러(411-1)는 제1메인 채널(CHA), 채널들(CH11~CH1m), 및 제1휘발성 메모리(413-1)에 접속될 수 있다. 각 채널(CH11~CH1m)에는 대응되는 NAND-타입 플래시 메모리들(NAND)이 접속될 수 있다.
제1휘발성 메모리(413-1)는 각 채널(CH11~CH1m)에 접속된 NAND-타입 플래시 메모리들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1메모리 영역을 포함할 수 있다. 또한, 제1휘발성 메모리 (413-1)는 각 채널(CH11~CH1m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널 (CH11~CH1m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2메모리 영역(또는 캐시 영역)을 포함할 수 있다.
제2스케일-아웃 컨트롤러(411-2)는 메인 채널(CHA), 채널들(CH21~CH2m), 및 제2휘발성 메모리(413-2)에 접속될 수 있다. 각 채널(CH21~CH2m)에는 대응되는 NAND-타입 플래시 메모리들(NAND)이 접속될 수 있다.
제2휘발성 메모리(413-2)는 각 채널(CH21~CH2m)에 접속된 NAND-타입 플래시 메모리들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1메모리 영역을 포함할 수 있다. 또한, 제2휘발성 메모리 (413-2)는 각 채널(CH21~CH2m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH21~CH2m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2메모리 영역(또는 캐시 영역)을 포함할 수 있다.
제4스케일-아웃 컨트롤러(411-4)는 메인 채널(CHA), 채널들(CH41~CH4m), 및 제4휘발성 메모리(413-4)에 접속될 수 있다. 각 채널(CH41~CH4m)에는 대응되는 NAND-타입 플래시 메모리들(NAND)이 접속될 수 있다.
제4휘발성 메모리(413-4)는 각 채널(CH41~CH4m)에 접속된 NAND-타입 플래시 메모리들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1메모리 영역을 포함할 수 있다. 또한, 제4휘발성 메모리 (413-4)는 각 채널(CH41~CH4m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH41~CH4m)에 접속된 NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2메모리 영역(또는 캐시 영역)을 포함할 수 있다.
각 휘발성 메모리(413-1~413-4)는 버퍼 또는 버퍼 메모리를 의미할 수 있고, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
각 스케일-아웃 장치(410-1A, 410-2A, ..., 410-4A)의 구조는 실질적으로 동일 또는 유사하다. 비록, 도 3에서는 각 장치(410-1~410-4)가 m개의 채널들을 포함하는 것으로 도시되어 있으나, 각 장치(410-1~410-4)에 포함된 채널들의 개수는 서로 다를 수 있다. 여기서, 채널의 의미는 메인 채널의 의미와 동일할 수 있다.
도 4는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치의 블록도이이고, 도 5는 도 3에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 장치에 대한 패키지의 실시 예이고, 도 7은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러의 블록도이다.
도 1부터 도 5를 참조하면, 각 스케일-아웃 컨트롤러(411-1~411-4)의 구조와 작동은 실질적으로 동일 또는 유사하므로, 제1스케일-아웃 컨트롤러(411-1)의 구조와 작동이 대표적으로 설명될 것이다. 도 4의 제1스케일-아웃 컨트롤러(411-1)는 제4인터페이스(421)에 접속된 제1단자들(또는 제1포트; PT1), 제5인터페이스(429)에 접속된 제2단자들(또는 제2포트; PT2), 및 버퍼 컨트롤러(427)에 접속된 제2단자들(또는 제3포트; PT3)을 포함할 수 있다. 예컨대, 단자들은 핀들 또는 패드들을 의미할 수 있다.
제1스케일 아웃 컨트롤러(411-1)는 컨트롤러(310), 제1휘발성 메모리(413-1), 및 NAND-타입 플래시 메모리들(NAND) 사이에서 주거나 받는 명령 및/또는 데이터의 전송을 제어할 수 있다. 실시 예들에 따라, 제1스케일-아웃 컨트롤러(411-1)는 IC 또는 SoC로 구현될 수 있다.
도 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)와 명령 및/또는 데이터를 주거나 받을 수 있다.
도 7을 참조하면, 제1스케일-아웃 컨트롤러(411-1)는 버스 구조(420), 제4인터페이스(421), 적어도 하나의 CPU(423-1 및/또는 423-2), 내부 메모리(425), 버퍼 컨트롤러(427), 및 제5인터페이스(429)를 포함할 수 있다.
버스 구조(420)는 AMBA, AHB, APB, AXI, ACE, ASB, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제4인터페이스(421)는 컨트롤러(310)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 데이터를 제1메인 채널(CHA)을 통해 컨트롤러(310)로 전송할 수 있다. 또한, 제4인터페이스(421)는 컨트롤러(310)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 명령 및/또는 데이터를 적어도 하나의 CPU(423-1 및/또는 423-2) 및/또는 버퍼 컨트롤러(427)로 전송할 수 있다. 실시 예에 따라, 제4인터페이스(421)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제4인터페이스(421)의 구조와 작동은 제3인터페이스(350)의 구조와 작동에 적합하게(compatible) 구현될 수 있다. 예컨대, 제4인터페이스(421)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예에 따라, 제4인터페이스(421)는 하나의 채널(또는 메인 채널) 또는 하나의 웨이에 접속될 수 있다.
하나 또는 그 이상의 CPU(423-1 및/또는 423-2)는, 버스 구조(420)를 통해, 제4인터페이스(421), 내부 메모리(425), 버퍼 컨트롤러(427), 및 제5인터페이스 (429)를 제어할 수 있다.
각 CPU(423-1 및/또는 423-2)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 하나 또는 그 이상의 CPU(423-1 및/또는 423-2)는 FTL을 실행할 수 있다. 상기 FTL는, 제1장치(410-1)에 포함된 NAND-타입 플래시 메모리들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 이용하여, 어드레스 매핑 작동을 수행할 수 있다. 예컨대, 상기 FTL이 내부 메모리(425)에 저장될 때, 하나 또는 그 이상의 CPU(423-1 및/또는 423-2)는 상기 FTL을 실행할 수 있다.
예컨대, 제1CPU(423-1)는 제4인터페이스(421)를 통해 제3인터페이스(350)와 명령 및/또는 데이터를 주거나 받을 수 있고, 제2CPU(423-2)는 제5인터페이스(429)를 통해 각 채널(CH11~CH1m)에 접속된 각 NAND-타입 플래시 메모리(NAND)와 명령 및/또는 데이터를 주거나 받을 수 있다. 실시 예에 따라, 제1CPU(423-1)와 제2CPU(423-2)는 멀티-CPU를 구성할 수 있다. 실시 예에 따라, 제1CPU(423-1)는 제2CPU(423-2)를 제어할 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(425)는 제1스케일-아웃 컨트롤러(411-1)의 작동에 필요한 데이터 또는 제1스케일-아웃 컨트롤러(411-1)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동, 등)에 의해 생성된 데이터를 저장할 수 있다. 실시 예들에 따라, 내부 메모리(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-타입 플래시 메모리들(NAND)에 대한 데이터 처리 작동들을 제어할 수 있다. 예컨대, ECC 엔진은 제5인터페이스(429) 내부에 구현될 수 있다.
도 4에 도시된 바와 같이 복수의 채널들 및/또는 복수의 웨이들은 제5인터페이스(429)에 접속될 수 있다. 실시 예들에 따라 제5인터페이스(429)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
실시 예에 따라, 제1스케일-아웃 컨트롤러(411-1)와 제1휘발성 메모리(413-1) 각각이 서로 다른 칩으로 구현될 때, 제1스케일-아웃 컨트롤러(411-1)와 제1휘발성 메모리(413-1)는 하나의 패키지, 예컨대, PoP, MCP, 또는 SiP로 구현될 수 있으나 이에 한정되는 것은 아니다.
도 3에 도시된 바와 같이, NAND-타입 플래시 메모리들(NAND) 중에서 적어도 하나가 스케일-아웃 장치(예컨대, 410-1A)로 대체되면, 메모리 클러스터(400)에 대한 메모리 용량의 확장성(scalability)은 증가할 수 있다.
예컨대, 컨트롤러(310)의 구조와 제1스케일-아웃 컨트롤러(411-1)의 구조는 실질적으로 동일 또는 유사하게 구현될 수 있다.
도 6은 도 2에 도시된 컨트롤러와 제1스케일-아웃 저장 장치를 포함하는 패키지의 실시 예이다. 도 2부터 도 6을 참조하면, 패키지(300-1A)는 ePOP(embedded package on package)로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, ePOP(300-1A)는 반도체 기판(415-1), 반도체 기판(415-1)의 위(over)에 배치된 제1패키지(PKG1), 및 제1패키지(PKG1)의 위(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), 버퍼(413-1), 및 적어도 하나의 NAND-타입 플래시 메모리(470)를 포함할 수 있다. 예컨대, 제2패키지(PKG2)는 버퍼(360)를 더 포함할 수도 있다.
도 8은 도 4에 도시된 본 발명의 실시 예에 따른 제1스케일-아웃 컨트롤러에 포함된 휘발성 메모리 장치들의 실시 예를 나타낸다. 도 8을 참조하면, 제1스케일-아웃 컨트롤러(411-1)는 제1내부 휘발성 메모리(412-1)와 제2내부 휘발성 메모리 (412-2)를 포함할 수 있다.
제1내부 휘발성 메모리(412-1)는 제1스케일-아웃 컨트롤러(411-1)를 위한 메모리 공간을 의미할 수 있고, 제2내부 휘발성 메모리(412-2)는 컨트롤러(310)를 위한 메모리 공간을 의미할 수 있다.
도 8에서는 제1내부 휘발성 메모리(412-1)와 제2내부 휘발성 메모리(412-2)가 제1스케일-아웃 컨트롤러(411-1) 내부에 구현된 실시 예가 도시되어 있으나, 실시 예들에 따라 제1내부 휘발성 메모리(412-1)와 제2내부 휘발성 메모리(412-2) 중에서 적어도 하나는 제1휘발성 메모리(413-1)를 의미할 수 있다. 실시 예들에 따라, 제1내부 휘발성 메모리(412-1)와 제2내부 휘발성 메모리(412-2) 중에서 적어도 하나는 내부 메모리(425)를 의미할 수 있다. 실시 예들에 따라, 제1내부 휘발성 메모리(412-1)는 내부 메모리(425)를 의미할 수 있고, 제2내부 휘발성 메모리(412-2)는 제1휘발성 메모리(413-1)를 의미할 수 있다.
제2내부 휘발성 메모리(412-2)는, 빠른 리드 레이턴시(fast read latency) 또는 빠른 라이트 레이턴시를 위해, 컨트롤러(310)에 의해 사용될 수 있다. 예컨대, 컨트롤러(310)는 제2내부 휘발성 메모리(412-2)를 캐시 또는 캐시 메모리로 사용할 수 있다.
도 9는 서로 다른 맵 사이즈들에 따라 서로 다른 자유 공간들을 갖는 도 4에 도시된 휘발성 메모리에 대한 실시 예들을 나타낸다. 제1휘발성 메모리(413-1)의 메모리 용량은 2GB(gigabyte)라고 가정한다.
도 9의 (a)를 참조하면, 제1스케일-아웃 컨트롤러(411-1)에 접속된 NAND-타입 플래시 메모리들(NAND)이 랜덤 리드/라이트 데이터 파티션으로 할당되고, NAND-타입 플래시 메모리들(NAND)에 저장된 데이터가 4KB 단위로 관리될 때, 4KB 단위로 관리되는 FTL 맵 테이블은 맵 영역(MR)에 저장되므로, 제1휘발성 메모리 (413-1)의 자유-영역은 없다고 가정한다.
도 9의 (b)를 참조하면, 제1스케일-아웃 컨트롤러(411-1)에 접속된 NAND-타입 플래시 메모리들(NAND)이 순차적 리드/라이트 데이터 파티션으로 할당되고, NAND-타입 플래시 메모리들(NAND)에 저장된 데이터가 8KB 단위로 관리된다고 가정하면, 8KB 단위로 관리되는 FTL 맵 테이블은 맵 영역(MR2)에 저장되므로, 제1휘발성 메모리(413-1)의 자유 영역(FS1)은 4KB 단위로 관리될 때에 비해 1GB, 즉 50% 증가할 수 있다.
도 9의 (c)를 참조하면, 제1스케일-아웃 컨트롤러(411-1)에 접속된 NAND-타입 플래시 메모리들(NAND)이 순차적 리드/라이트 데이터 파티션으로 할당되고, NAND-타입 플래시 메모리들(NAND)에 저장된 데이터가 16KB 단위로 관리된다고 가정하면, 16KB 단위로 관리되는 FTL 맵 테이블은 맵 영역(MR2)에 저장되므로, 제1휘발성 메모리(413-1)의 자유 영역(FS2)은 4KB 단위로 관리될 때에 비해 1.5GB, 즉 75% 증가할 수 있다. 이때, 4KB 단위, 8KB 단위, 또는 16KB 단위는 맵 사이즈라 가정한다.
도 10은 도 3에 도시된 불휘발성 메모리들 각각에 포함된 SLC 영역과 MLC 영역의 비율을 나타내다. 도 10을 참조하면, 제1NAND-타입 플래시 메모리(470)는 메모리 셀 어레이(470-1)를 포함할 수 있다. 메모리 셀 어레이(470-1)는 SLC 영역 (470-2)과 MLC 영역(470-3)을 포함할 수 있다.
SLC 영역(470-2)은 NAND-타입 플래시 메모리(470)에 포함된 제1불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제2메모리 셀들을 포함하는 영역일 수 있고, MLC 영역(470-3)은 상기 제1불휘발성 메모리 셀들 중에서 2-비트 이상의 정보를 저장하는 제3메모리 셀들을 포함하는 영역일 수 있다.
제1스케일-아웃 컨트롤러(411-1)는, 제1NAND-타입 플래시 메모리(470)에 대한 제1메모리 관리 정책에 따라, SLC 영역(470-2)에 포함될 제2메모리 셀들의 개수와 MLC 영역(470-3)에 포함될 제3메모리 셀들의 개수의 비율을 결정할 수 있다.
제2NAND-타입 플래시 메모리(471)는 메모리 셀 어레이(471-1)를 포함할 수 있다. 메모리 셀 어레이(471-1)는 SLC 영역(471-2)과 MLC 영역(471-3)을 포함할 수 있다.
SLC 영역(471-2)은 제2NAND-타입 플래시 메모리(471)에 포함된 제4불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제5메모리 셀들을 포함하는 영역일 수 있고, MLC 영역(471-3)은 상기 제4불휘발성 메모리 셀들 중에서 2-비트 이상의 정보를 저장하는 제6메모리 셀들을 포함하는 영역일 수 있다.
제2스케일-아웃 컨트롤러(411-2)는, 제2NAND-타입 플래시 메모리(471)에 대한 제2메모리 관리 정책에 따라, SLC 영역(471-2)에 포함될 제5메모리 셀들의 개수와 MLC 영역(471-3)에 포함될 제6메모리 셀들의 개수의 비율을 결정할 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 11을 참조하면, 데이터 처리 시스템(100A)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300A)를 포함할 수 있다. 예컨대, 데이터 저장 장치(300A)는 스케일-아웃(scale-out) 구조를 가질 수 있다.
데이터 처리 시스템(100A)은 PC, 워크스테이션, 데이터 센터, 인터넷 데이터 센터, SAN, NAS, 또는 모바일 컴퓨팅 장치에서 사용될 수 있는 데이터 처리 시스템을 의미할 수 있으나 이에 한정되는 것은 아니다. 실시 예에 따라, 데이터 저장 장치(300A)는 DRAM없는(DRAMless) SSD를 의미할 수 있다. 다른 실시 예에 따라, 데이터 저장 장치(300A)는 eMMC를 의미할 수 있다.
데이터 저장 장치(300A)는 인터페이스(110)를 통해 제1인터페이스(230)와 통신할 수 있는 제2인터페이스(320A)와, 메모리 클러스터(400)의 작동을 제어할 수 있는 컨트롤러(310A)를 포함할 수 있다. 데이터 처리 시스템(100A)은 버퍼(360)의 기능을 수행하는 DRAM을 포함하지 않으므로, 도 11의 컨트롤러(310A)는 도 1의 컨트롤러(310)와 달리 버퍼 컨트롤러(340)를 포함하지 않는다.
도 12는 도 1 또는 도 11에 도시된 데이터 저장 장치의 작동을 설명하는 개념도이다. 도 1부터 도 12를 참조하여 데이터 저장 장치의 작동을 설명하면 다음과 같다. 데이터 처리 시스템(100 또는 100A, 이하 집합적으로 "100"이라 한다)으로 작동 전압들이 공급되면, 데이터 저장 장치(300 또는 300A, 이하 집합적으로 "300"이라 한다)는 부팅(booting)될 수 있다(S110).
컨트롤러(310 또는 310A, 이하 집합적으로 "310"이라 한다), 예컨대 CPU(330 또는 331)는 데이터 저장 장치(300)의 사용가능한 총 메모리 용량을 확인 또는 판단할 수 있다(S112). 컨트롤러(310)는 확인 또는 판단 결과를 호스트(200)로 전송할 수 있고, 호스트(200)는 호스트(200)에 접속된 디스플레이(미도시)를 통해 사용가능한 총 메모리 용량을 디스플레이할 수 있다.
컨트롤러(310) 또는 데이터 저장 장치(300)의 사용자는 사용가능한 총 메모리 용량에 기초하여 파티셔닝 정책을 결정할 수 있다(S114). 예컨대, 컨트롤러 (310)의 CPU(330 또는 331)에서 실행되는 펌웨어는 사용가능한 총 메모리 용량을 확인하고, 확인 결과에 따라 파티셔닝 정책을 결정할 수 있다(S114).
도 2를 참조하여 설명한 바와 같이, 컨트롤러(310)는 장치들(410-1과 410-2) 각각을 높은 신뢰도 데이터 파티션으로 정의할 수 있고, 장치들(430-1과 450-1)을 순차적 리드 또는 라이트 데이터 파티션으로 정의할 수 있고, 장치들(410-3, 410-4, 430-2~430-4, 및 450-2~450-4)를 랜덤 리드 또는 라이트 데이터 파티션으로 정의할 수 있다(S114). 즉, 컨트롤러(310)는 메모리 클러스터(400)에 포함된 장치별로 메모리 관리 정책을 결정할 수 있다.
예컨대, 컨트롤러(310), 예컨대 CPU(330 또는 331)는 장치들(410-1과 410-2)로 제1메모리 관리 정책에 해당하는 제1명령을 전송할 수 있고, 장치들(430-1과 450-1)로 제2메모리 관리 정책에 해당하는 제2명령을 전송할 수 있고, 장치들(410-3, 410-4, 430-2~430-4, 및 450-2~450-4)로 제3메모리 관리 정책에 상응하는 제3명령을 전송할 수 있다.
예컨대, 제1장치(DEVICE100)는 제1장치(DEVICE100)에 포함된 적어도 하나의 제1불휘발성 메모리를 제어하는 제1스케일-아웃 컨트롤러를 포함하고, 제2장치 (DEVICE200)는 제2장치(DEVICE200)에 포함된 적어도 하나의 제2불휘발성 메모리를 제어하는 제2스케일-아웃 컨트롤러를 포함한다고 가정한다.
제1장치(DEVICE100)는 장치들(410-1~410-4, 430-1~430-4, 및 450-1~450-4) 중에서 어느 하나이고, 제2장치(DEVICE200)는 장치들(410-1~410-4, 430-1~430-4, 및 450-1~450-4) 중에서 다른 하나라고 가정한다.
도 1부터 도 3에 도시된 바와 같이, 제1장치(DEVICE100)는 제1스케일-아웃 컨트롤러에 의해 제어되는 제1휘발성 메모리를 더 포함하고, 제2장치(DEVICE200)는 제2스케일-아웃 컨트롤러에 의해 제어되는 제2휘발성 메모리를 더 포함한다고 가정한다.
컨트롤러(310)는 제1불휘발성 메모리에 대한 제1메모리 관리 정책과 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 서로 다르게 결정할 수 있다.
컨트롤러(310)는 제1메모리 관리 정책에 해당하는 제1명령(CMD1)을 제1장치 (DEVICE100)로 전송할 수 있다(S118-1). 컨트롤러(310)는 제2메모리 관리 정책에 해당하는 제2명령(CMD2)을 제2장치(DEVICE200)로 전송할 수 있다(S118-2).
제1장치(DEVICE100)에 포함된 제1스케일-아웃 컨트롤러는 컨트롤러(310)로부터 출력된 제1명령(CMD1)에 기초하여 제1불휘발성 메모리를 최적화할 수 있다 (S120-1). 또한, 상기 제1스케일-아웃 컨트롤러는 컨트롤러(310)로부터 출력된 제1명령(CMD1)에 기초하여 제1휘발성 메모리를 최적화할 수 있다. 즉, 상기 제1스케일-아웃 컨트롤러는 제1명령(CMD1)에 기초하여 상기 제1불휘발성 메모리에 대한 제1메모리 관리 정책을 설정할 수 있다(S120-1).
제2장치(DEVICE200)에 포함된 제2스케일-아웃 컨트롤러는 컨트롤러(310)로부터 출력된 제2명령(CMD2)에 기초하여 제2불휘발성 메모리를 최적화할 수 있다 (S120-2). 또한, 상기 제2스케일-아웃 컨트롤러는 컨트롤러(310)로부터 출력된 제2명령(CMD2)에 기초하여 제2휘발성 메모리를 최적화할 수 있다. 즉, 상기 제2스케일-아웃 컨트롤러는 제2명령(CMD2)에 기초하여 상기 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 설정할 수 있다(S120-2).
제1스케일-아웃 컨트롤러는, 제1메모리 관리 정책에 따라, 제1휘발성 메모리에서 생성된 제1자유 영역에 대한 정보를 제1응답(RES1)으로서 컨트롤러(310)로 전송할 수 있다(S122-1). 예컨대, 도 9의 (a)에 도시된 바와 같이 제1스케일-아웃 컨트롤러에 접속된 제1불휘발성 메모리가 랜덤 리드/라이트 데이터 파티션으로 할당되고, 상기 제1불휘발성 메모리에 저장된 데이터가 4KB 단위로 관리될 때, 자유-영역은 존재하지 않는다. 이때, 제1스케일-아웃 컨트롤러는 제1휘발성 메모리에는 제1자유-영역이 존재하지 않음을 나타내는 정보를 제1응답(RES1)으로서 컨트롤러 (310)로 전송할 수 있다(S122-1).
제2스케일-아웃 컨트롤러는, 제2메모리 관리 정책에 따라, 제2휘발성 메모리에서 생성된 제2자유 영역에 대한 정보를 제2응답(RES2)으로서 컨트롤러(310)로 전송할 수 있다(S122-2).
예컨대, 도 9의 (b)에 도시된 바와 같이, 제2스케일-아웃 컨트롤러에 접속된 제2불휘발성 메모리가 순차적 리드/라이트 데이터 파티션으로 할당되고, 상기 제2불휘발성 메모리에 저장된 데이터가 8KB 단위로 관리될 때, 상기 제2스케일-아웃 컨트롤러는 제2휘발성 메모리에 제2자유 영역이 존재함을 나타내는 정보를 제2응답 (RES2)으로서 컨트롤러(310)로 전송할 수 있다(S122-2).
컨트롤러(310), 예컨대 CPU(330 또는 331)는, 제1응답(RES1)에 기초하여, 새로운 명령을 생성할 수 있다. 따라서, 컨트롤러(310)와 제1장치(DEVICE100)는 상기 새로운 명령에 해당하는 제1작동(OPR1)을 수행할 수 있다(S124-1). 예컨대, 제1작동(OPR1)은 프로그램 작동 또는 리드 작동을 의미할 수 있다.
컨트롤러(310), 예컨대 CPU(330 또는 331)는, 제2응답(RES2)에 기초하여 새로운 명령을 생성할 수 있다. 따라서, 컨트롤러(310)와 제2장치(DEVICE200)는 상기 새로운 명령에 해당하는 제2작동(OPR2)을 수행할 수 있다(S124-2). 예컨대, 제2작동(OPR2)은 프로그램 작동 또는 리드 작동을 의미할 수 있다.
실시 예들에 따라, 제1불휘발성 메모리에 대한 제1메모리 관리 정책은 제1FTL(flash translation layer) 매핑 정책일 수 있고, 제2불휘발성 메모리에 대한 제2메모리 관리 정책은 제2FTL 매핑 정책일 수 있다.
실시 예들에 따라, 컨트롤러(310), 예컨대 CPU(330 또는 331)는 제1FTL 매핑 정책에 해당하는 제1명령(CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 컨트롤러(310), 예컨대 CPU(330 또는 331)는 제2FTL 매핑 정책에 해당하는 제2명령(CMD2)을 제2장치(DEVICE200)로 전송할 수 있다(S118-2).
제1FTL 매핑 정책은 제1불휘발성 메모리에 저장된 제1데이터를 관리하는 제1크기(예컨대, 4KB, 8KB, 및 16KB 중에서 어느 하나)를 나타낼 수 있고, 제2FTL 매핑 정책은 제2불휘발성 메모리에 저장된 제2데이터를 관리하는 제2크기(예컨대, 4KB, 8KB, 및 16KB 중에서 다른 하나)를 나타낼 수 있다.
실시 예들에 따라, 컨트롤러(310), 예컨대 CPU(330 또는 331)는 페이지-레벨 매핑 정책, 블록-레벨 매핑 정책, 및 하이브리드 매핑 정책 중에서 어느 하나에 해당하는 제1명령 (CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 컨트롤러 (310), 예컨대 CPU(330 또는 331)는 페이지-레벨 매핑 정책, 블록-레벨 매핑 정책, 및 하이브리드 매핑 정책 중에서 다른 하나에 해당하는 제2명령(CMD2)을 제2장치(DEVICE200)로 전송할 수 있다(S118-2).
실시 예들에 따라, 컨트롤러(310)는 제1데이터를 제1불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 어느 하나로 프로그램할지 지시하는 제1명령(CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 따라서, 제1장치(DEVICE100)의 제1스케일-아웃 컨트롤러는, 제1메모리 관리 정책에 해당하는 제1명령(CMD1)따라, 제1데이터를 제1불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 어느 하나로 프로그램할지를 결정할 수 있다.
컨트롤러(310)는 제2데이터를 제2불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 다른 하나로 프로그램할지 지시하는 제2명령(CMD2)을 제2장치(DEVICE200)로 전송할 수 있다(S118-2). 따라서, 제2장치(DEVICE200)의 제2스케일-아웃 컨트롤러는, 제2메모리 관리 정책에 해당하는 제2명령(CMD2)따라, 제2데이터를 제2불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 다른 하나로 프로그램할지를 결정할 수 있다.
실시 예들에 따라 컨트롤러(310)는 제1액세스 빈도를 갖는 제1데이터를 제1장치(DEVICE100)에 포함된 제1불휘발성 메모리에 프로그램할지를 지시하는 제1명령(CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 따라서, 제1장치 (DEVICE100)에 포함된 제1스케일-아웃 컨트롤러는, 제1메모리 관리 정책에 해당하는 제1명령(CMD1)에 따라, 제1액세스 빈도를 갖는 제1데이터를 제1불휘발성 메모리에 프로그램할지를 결정할 수 있다.
컨트롤러(310)는 제2액세스 빈도를 갖는 제2데이터를 제2장치(DEVICE200)에 포함된 제2불휘발성 메모리에 프로그램할지를 지시하는 제2명령(CMD2)을 제2장치 (DEVICE200)로 전송할 수 있다(S118-2). 따라서, 제2장치(DEVICE200)에 포함된 제2스케일-아웃 컨트롤러는, 제2메모리 관리 정책에 해당하는 제2명령(CMD2)에 따라, 제2액세스 빈도를 갖는 제2데이터를 제2불휘발성 메모리에 프로그램할지를 결정할 수 있다. 예컨대, 제1액세스 빈도는 제2액세스 빈도보다 높거나 낮을 수 있다.
실시 예들에 따라 컨트롤러(310)는 제1비율을 지시하는 제1명령(CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 제1장치(DEVICE100)에 포함된 제1스케일-아웃 컨트롤러는, 제1메모리 관리 정책에 해당하는 제1명령(CMD1)에 따라, 제1장치(DEVICE100)에 포함된 제1불휘발성 메모리에 포함된 제1불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제2메모리 셀들의 개수와 2-비트 이상의 정보를 저장하는 제3메모리 셀들의 개수의 제1비율을 결정하고, 제1불휘발성 메모리에 결정된 제1비율을 적용할 수 있다. 따라서, 제1불휘발성 메모리는 제1비율에 상응하는 SLC 영역과 MLC 영역으로 설정될 수 있다(S120-1).
컨트롤러(310)는 제2비율을 지시하는 제2명령(CMD2)을 제2장치(DEVICE200)로 전송할 수 있다(S118-2). 제2장치(DEVICE200)에 포함된 제2스케일-아웃 컨트롤러는, 제2메모리 관리 정책에 해당하는 제2명령(CMD2)에 따라, 제2장치(DEVICE200)에 포함된 제2불휘발성 메모리에 포함된 제4불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제5메모리 셀들의 개수와 2-비트 이상의 정보를 저장하는 제6메모리 셀들의 개수의 제2비율을 결정하고, 제2불휘발성 메모리에 결정된 제2비율을 적용할 수 있다. 따라서, 제2불휘발성 메모리는 제2비율에 상응하는 SLC 영역과 MLC 영역으로 설정될 수 있다(S120-2).
실시 예들에 따라 컨트롤러(310)는 제1ECC(error control coding) 코드 레이트를 지시하는 제1명령(CMD1)을 제1장치(DEVICE100)로 전송할 수 있다(S118-1). 따라서, 제1장치(DEVICE100)에 포함된 제1스케일-아웃 컨트롤러의 ECC 엔진은 제1ECC 코드 레이트에 따라 데이터에 대한 에러 정정을 수행할 수 있다.
컨트롤러(310)는 제2ECC 코드 레이트를 지시하는 제2명령(CMD2)을 제2장치 (DEVICE200)로 전송할 수 있다(S118-2). 따라서, 제2장치(DEVICE200)에 포함된 제2스케일-아웃 컨트롤러의 ECC 엔진은 제2ECC 코드 레이트에 따라 데이터에 대한 에러 정정을 수행할 수 있다.
제1불휘발성 메모리는 제1메모리 셀들을 포함하는 제1 3-차원(first three-dimensional) 메모리 셀 어레이를 포함할 수 있고, 제2불휘발성 메모리는 제2메모리 셀들을 포함하는 제2 3-차원(second three-dimensional) 메모리 셀 어레이를 포함할 수 있다.
본 명세서에서 기재된 플래시 메모리-기반 메모리는 메모리 셀 어레이를 포함할 수 있다. 상기 메모리 셀 어레이는 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)를 포함할 수 있다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1부터 도 13을 참조하면, 데이터 처리 시스템(500)은 데이터베이스 (520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다.
데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 예컨대, 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치(300)의 구조와 작동은 도 1부터 도 12를 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 데이터베이스 서버(530)는 제1네트워크(535), 예컨대 LAN(Local Area Network)을 통해 제2무선 네트워크(540), 예컨대, 인터넷 또는 Wi-Fi에 접속될 수 있다. 복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 100A, 또는 500: 데이터 처리 시스템
110: 인터페이스
200: 호스트
310 또는 310A: 컨트롤러
400: 메모리 클러스터
410, 430, ..., 450: 클러스터
340: 버퍼 컨트롤러
360: 버퍼
CHA, CHB, ..., CHC: 메인 채널
410-1A, 410-2A, ..., 410-4A: 스케일-아웃 장치
411-1~411-4: 스케일-아웃 컨트롤러
413-1~413-4: 휘발성 메모리
CH11~CH1m, CH21~CH2m, CH41~CH4m: 채널
110: 인터페이스
200: 호스트
310 또는 310A: 컨트롤러
400: 메모리 클러스터
410, 430, ..., 450: 클러스터
340: 버퍼 컨트롤러
360: 버퍼
CHA, CHB, ..., CHC: 메인 채널
410-1A, 410-2A, ..., 410-4A: 스케일-아웃 장치
411-1~411-4: 스케일-아웃 컨트롤러
413-1~413-4: 휘발성 메모리
CH11~CH1m, CH21~CH2m, CH41~CH4m: 채널
Claims (10)
- 제1불휘발성 메모리와 제1휘발성 메모리를 제어하는 제1스케일-아웃 컨트롤러;
제2불휘발성 메모리와 제2휘발성 메모리를 제어하는 제2스케일-아웃 컨트롤러; 및
상기 제1불휘발성 메모리에 대한 제1메모리 관리 정책과 상기 제2불휘발성 메모리에 대한 제2메모리 관리 정책을 서로 다르게 결정하는 컨트롤러를 포함하는 데이터 저장 장치. - 제1항에 있어서,
상기 제1스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제1명령에 기초하여 상기 제1불휘발성 메모리에 대한 상기 제1메모리 관리 정책을 설정하고,
상기 제2스케일-아웃 컨트롤러는 상기 컨트롤러로부터 출력된 제2명령에 기초하여 상기 제2불휘발성 메모리에 대한 상기 제2메모리 관리 정책을 설정하고,
상기 컨트롤러는, 상기 데이터 저장 장치의 사용가능한 총 메모리 용량 (usable total memory capacity)에 기초하여, 상기 제1명령과 상기 제2명령을 생성하는 데이터 저장 장치. - 제1항에 있어서,
상기 제1스케일-아웃 컨트롤러는 상기 제1메모리 관리 정책에 따라서 상기 제1휘발성 메모리에서 생성된 제1자유 영역에 대한 정보를 상기 컨트롤러로 전송하고,
상기 제2스케일-아웃 컨트롤러는 상기 제2메모리 관리 정책에 따라서 상기 제2휘발성 메모리에서 생성된 제2자유 영역에 대한 정보를 상기 컨트롤러로 전송하는 데이터 저장 장치. - 제1항에 있어서,
상기 제1메모리 관리 정책은 상기 제1불휘발성 메모리에 대한 제1FTL(flash translation layer) 매핑 정책이고,
상기 제2메모리 관리 정책은 상기 제2불휘발성 메모리에 대한 제2FTL 매핑 정책이고,
상기 제1FTL 매핑 정책은 상기 제1불휘발성 메모리에 저장된 제1데이터를 관리하는 제1크기를 나타내고,
상기 제2FTL 매핑 정책은 상기 제2불휘발성 메모리에 저장된 제2데이터를 관리하는 제2크기를 나타내는 데이터 저장 장치. - 제1항에 있어서,
상기 제1메모리 관리 정책은 상기 제1불휘발성 메모리에 대한 제1FTL (flash translation layer) 매핑 정책이고,
상기 제2메모리 관리 정책은 상기 제2불휘발성 메모리에 대한 제2FTL 매핑 정책이고.
상기 제1FTL 매핑 정책은 페이지-레벨 매핑 정책, 블록-레벨 매핑 정책, 및 하이브리드 매핑 정책 중에서 어느 하나이고,
상기 제2FTL 매핑 정책은 상기 페이지-레벨 매핑 정책, 상기 블록-레벨 매핑 정책, 및 상기 하이브리드 매핑 정책 중에서 다른 하나이고,
상기 제1휘발성 메모리와 상기 제1스케일-아웃 컨트롤러는 제1반도체 패키지로 패키징되고,
상기 제2휘발성 메모리와 상기 제2스케일-아웃 컨트롤러는 제2반도체 패키지로 패키징되는 데이터 저장 장치. - 제1항에 있어서,
상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 제1데이터를 상기 제1불휘발성 메모리에 순차적 프로그램 방식과 랜덤 프로그램 방식 중에서 어느 하나로 프로그램할지를 결정하고,
상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 제2데이터를 상기 제2불휘발성 메모리에 상기 순차적 프로그램 방식과 상기 랜덤 프로그램 방식 중에서 다른 하나로 프로그램할지를 결정하는 데이터 저장 장치. - 제1항에 있어서,
상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 제1액세스 빈도를 갖는 제1데이터를 상기 제1불휘발성 메모리에 프로그램할지를 결정하고,
상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 상기 제1액세스 빈도와 다른 제2액세스 빈도를 갖는 제2데이터를 상기 제2불휘발성 메모리에 프로그램할지를 결정하는 데이터 저장 장치. - 제2항에 있어서,
상기 제1스케일-아웃 컨트롤러는, 상기 제1메모리 관리 정책에 따라, 상기 제1불휘발성 메모리에 포함된 제1불휘발성 메모리 셀들 중에서 1-비트 정보를 저장하는 제2메모리 셀들의 개수와 2-비트 이상의 정보를 저장하는 제3메모리 셀들의 개수의 비율을 결정하고,
상기 제2스케일-아웃 컨트롤러는, 상기 제2메모리 관리 정책에 따라, 상기 제2불휘발성 메모리에 포함된 제4불휘발성 메모리 셀들 중에서 상기 1-비트 정보를 저장하는 제5메모리 셀들의 개수와 상기 제2-비트 이상의 정보를 저장하는 제6메모리 셀들의 개수의 비율을 결정하는 데이터 저장 장치. - 제1항에 있어서,
상기 제1메모리 관리 정책과 제2메모리 관리 정책 각각은 서로 다른 ECC (error control coding) 코드 레이트인 데이터 저장 장치. - 제1항에 있어서,
상기 제1불휘발성 메모리는 제1메모리 셀들을 포함하는 제1 3-차원 (first three-dimensional) 메모리 셀 어레이를 포함하고,
상기 제2불휘발성 메모리는 제2메모리 셀들을 포함하는 제2 3-차원 (second three-dimensional) 메모리 셀 어레이를 포함하는 데이터 저장 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150048334A KR20160119541A (ko) | 2015-04-06 | 2015-04-06 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US15/007,241 US20160291869A1 (en) | 2015-04-06 | 2016-01-27 | Data storage device and data processing system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150048334A KR20160119541A (ko) | 2015-04-06 | 2015-04-06 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160119541A true KR20160119541A (ko) | 2016-10-14 |
Family
ID=57016023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150048334A KR20160119541A (ko) | 2015-04-06 | 2015-04-06 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160291869A1 (ko) |
KR (1) | KR20160119541A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200069843A (ko) | 2018-12-07 | 2020-06-17 | 스노우화이트팩토리(주) | 정품 인증 코드, 정품 인증 프로그램, 유통 추적을 위한 네트워크 시스템 및 블록체인 시스템 |
IT202100005906A1 (it) | 2021-03-12 | 2022-09-12 | Lebiu S R L | Articolo tessile a base di sughero e procedimento per la sua fabbricazione |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
US11221967B2 (en) * | 2013-03-28 | 2022-01-11 | Hewlett Packard Enterprise Development Lp | Split mode addressing a persistent memory |
US11442808B2 (en) | 2020-03-12 | 2022-09-13 | Kioxia Corporation | Memory system |
US12021061B2 (en) * | 2021-03-04 | 2024-06-25 | Western Digital Technologies, Inc. | Packaged memory device with flip chip and wire bond dies |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949568B2 (en) * | 2011-05-24 | 2015-02-03 | Agency For Science, Technology And Research | Memory storage device, and a related zone-based block management and mapping method |
KR20140124547A (ko) * | 2013-04-17 | 2014-10-27 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10452292B2 (en) * | 2014-03-07 | 2019-10-22 | Hitachi, Ltd. | Computer system |
US20160019160A1 (en) * | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable and Distributed Address Mapping Using Non-Volatile Memory Modules |
-
2015
- 2015-04-06 KR KR1020150048334A patent/KR20160119541A/ko unknown
-
2016
- 2016-01-27 US US15/007,241 patent/US20160291869A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200069843A (ko) | 2018-12-07 | 2020-06-17 | 스노우화이트팩토리(주) | 정품 인증 코드, 정품 인증 프로그램, 유통 추적을 위한 네트워크 시스템 및 블록체인 시스템 |
IT202100005906A1 (it) | 2021-03-12 | 2022-09-12 | Lebiu S R L | Articolo tessile a base di sughero e procedimento per la sua fabbricazione |
WO2022189527A1 (en) | 2021-03-12 | 2022-09-15 | Lebiu Srl | Cork-based textile article and process for the manufacturing thereof |
Also Published As
Publication number | Publication date |
---|---|
US20160291869A1 (en) | 2016-10-06 |
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 | |
US10103158B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10411024B2 (en) | Memory system and method for controlling nonvolatile memory | |
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 | |
KR20160119541A (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US10691338B2 (en) | Data storage device and data processing system including same | |
US20170180477A1 (en) | Just a bunch of flash (jbof) appliance with physical access application program interface (api) | |
US10114555B2 (en) | Semiconductor device having register sets and data processing device 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 | |
US10331366B2 (en) | Method of operating data storage device and method of operating system including the same | |
US11995327B2 (en) | Data storage device and method for adaptive host memory buffer allocation based on virtual function prioritization | |
CN116755877A (zh) | 带宽控制方法和存储装置 |