KR102484073B1 - 스토리지 시스템 - Google Patents

스토리지 시스템 Download PDF

Info

Publication number
KR102484073B1
KR102484073B1 KR1020210161470A KR20210161470A KR102484073B1 KR 102484073 B1 KR102484073 B1 KR 102484073B1 KR 1020210161470 A KR1020210161470 A KR 1020210161470A KR 20210161470 A KR20210161470 A KR 20210161470A KR 102484073 B1 KR102484073 B1 KR 102484073B1
Authority
KR
South Korea
Prior art keywords
workload
simulation model
storage
storage system
training
Prior art date
Application number
KR1020210161470A
Other languages
English (en)
Inventor
김병희
강동협
오현교
장성민
정기빈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210161470A priority Critical patent/KR102484073B1/ko
Priority to US17/819,007 priority patent/US20230161619A1/en
Priority to EP22208620.9A priority patent/EP4184307A1/en
Priority to CN202211452496.7A priority patent/CN116149542A/zh
Application granted granted Critical
Publication of KR102484073B1 publication Critical patent/KR102484073B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • 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/0653Monitoring storage devices or 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/06Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Abstract

스토리지 시스템이 제공된다. 상기 스토리지 시스템은 비휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치에 액세스 하고, 파라미터에 기초하여 워크로드를 수행하는 스토리지 컨트롤러를 포함하고, 상기 파라미터는 학습된 시뮬레이션 모델에서 상기 워크로드에 대한 최대 QoS(Quality of Service)를 갖는 값으로 선택된 것이고, 상기 시뮬레이션 모델은 기설정된 초기 시뮬레이션 모델에서 훈련 파라미터로 훈련 워크로드를 수행하여 학습 QoS 데이터를 생성하고, 상기 학습 QoS 데이터와 상기 훈련 파라미터가 적용된 상기 스토리지 컨트롤러에서 상기 훈련 워크로드를 수행하여 산출된 실제 QoS 데이터를 비교하여 산출된 손실을 기초로 학습한다.

Description

스토리지 시스템{STORAGE SYSTEM}
본 발명은 비휘발성 메모리 장치를 포함하는 스토리지 시스템에 관한 것이다.
반도체 기술의 지속적인 발명으로 스토리지 장치(예를 들어 SSD(Solid State Drive))는 고사양, 고성능으로 발전하고 있다. 하드웨어 기술의 발전과 하드웨어 기술의 한계를 극복하기 위한 소프트웨어 기술들도 발전하고 있다. 스토리지 장치 내의 소프트웨어 아키텍처는 복잡하고, 스토리지 장치 내에서 각각의 기능을 담당하는 모듈과 알고리즘은 수많은 변수가 존재한다. 스토리지 장치의 각 환경에 최적의 변수(파라미터)를 위한 고차원의 설계 공간 탐사가 필요하다.
스토리지 장치는 일정 수준의 QoS(Quality of Service)가 충족되어야 한다. QoS는 HIL(Host Interface Layer) 레이어, FTL(Flash Translation Layer) 레이어, FIL(Flash Interface Layer) 레이어를 포함한 전 영역에 걸쳐서 영향을 미치기 때문에 최적화하는데 시간이 많이 소요되고 알 수 없는 사이드 이펙트를 유발한다. 즉, QoS 관련 알고리즘이 완성된 상태에서 QoS 관련 파라미터를 튜닝하는 작업은 많은 시간과 비용을 필요로 한다.
QoS 파라미터를 숙련된 개발자의 경험과 직관 또는 트라이얼-에러(trials-and-error) 방식으로 튜닝해서 휴리스틱(heuristic)하게 최적 파라미터를 결정한다. 고차원의 파라미터 스페이스는 거의 무한대에 가깝기 때문에 이렇게 찾은 파라미터는 지엽적인 값일 확률이 굉장히 높다. 또한 대부분의 파라미터들은 서로 경쟁 관계이거나 상충적이어서 최적 파라미터를 찾는데 시간이 오래 걸릴 수 있다. 또한 이러한 과정을 거쳐 결정된 파라미터)가 사이드 이펙트를 유발할 수 있다.
머신 러닝은 인공지능의 하나로, 데이터 분석을 위한 모델 생성을 자동화하여 소프트웨어가 데이터를 바탕으로 학습하고 패턴을 찾아내는 학습 기법을 지칭한다.
본 발명이 해결하려는 과제는 머신러닝을 통해서 QoS 시뮬레이션 모델을 생성하여 최적 파라미터 및 최적 워크로드를 검출하고, QoS를 최대화하는 최적 파라미터 또는 최적 워크로드로 동작하는 스토리지 컨트롤러 및 스토리지 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은 복수의 비휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치에 액세스 하고, 파라미터에 기초하여 워크로드를 수행하는 스토리지 컨트롤러를 포함하고, 상기 파라미터는 학습된 시뮬레이션 모델에서 상기 워크로드에 대한 최대 QoS(Quality of Service)를 갖는 값으로 선택된 것이고, 상기 시뮬레이션 모델은 기설정된 초기 시뮬레이션 모델에서 훈련 파라미터로 훈련 워크로드를 수행하여 학습 QoS 데이터를 생성하고, 상기 학습 QoS 데이터와 상기 훈련 파라미터가 적용된 상기 스토리지 컨트롤러에서 상기 훈련 워크로드를 수행하여 산출된 실제 QoS 데이터를 비교하여 산출된 손실(loss)을 기초로 학습한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은 복수의 비휘발성 메모리 장치를 포함하는 스토리지 장치 및 상기 스토리지 장치에 액세스 하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 상기 스토리지 장치에 대한 동작을 제어하는 CPU, 상기 동작에 대한 복수의 파라미터들을 저장하는 비휘발성 메모리 및 상기 동작에 대한 워크로드별로 파라미터를 매핑하여 저장하는 맵 테이블을 포함하고, 상기 맵 테이블에 저장된 상기 파라미터는 상기 비휘발성 메모리 장치의 상태에 기초하여 워크로드별로 QoS(Quality of Service)를 최대화하도록 학습된 시뮬레이션 모델에서 산출된 최적 파라미터이고, 상기 시뮬레이션 모델은 실제 QoS 데이터와 학습 QoS 데이터를 비교하여 산출된 손실(loss)을 기초로 학습된다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은 복수의 비휘발성 메모리 장치를 포함하는 스토리지 장치 및 상기 스토리지 장치에 액세스 하고, 파라미터에 기초하여 워크로드를 수행하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 복수의 워크로드 및 복수의 파라미터를 저장하고, 상기 워크로드 및 상기 파라미터는 머신러닝된 시뮬레이션 모델에서 QoS(Quality of Sevice)를 최대화하는 관계로 산출된 최적 데이터이고, 상기 머신러닝된 시뮬레이션 모델은 이전 러닝의 시뮬레이션 모델에서 훈련 파라미터로 훈련 워크로드를 수행하여 산출된 예측 QoS 데이터와 실제 QoS 데이터를 비교하여, 상기 실제 QoS 데이터에 가까워지는 방향으로 상기 시뮬레이션 모델을 업데이트한다.
도 1은 몇몇 실시예에 따른 머신러닝 스토리지 시스템을 나타낸 블록도이다.
도 2는 몇몇 실시예에 따른 머신러닝 스토리지 시스템의 동작 방법을 나타낸 것이다.
도 3은 몇몇 실시예에 따른 스토리지 시스템에서 훈련 데이터 세트를 수집하는 동작을 설명하기 위한 도면이다.
도 4는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 흐름도이다.
도 5는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 도면이다.
도 6은 몇몇 실시예에 따른 시뮬레이션 모델의 데이터 세트를 설명하기 위한 도면이다.
도 7은 도 6의 실시예에 따라 시뮬레이션 모델의 학습동작을 설명하기 위한 도면이다.
도 8 및 도 9는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 도면이다.
도 10 내지 도 12는 몇몇 실시예들에 따른 머신러닝 스토리지 시스템들을 나타낸 것이다.
도 13는 몇몇 실시 예에 따른 스토리지 시스템(20)을 나타내는 블록도이다.
도 14는 몇몇 실시예에 따른 도 14의 스토리지 컨트롤러를 나타내는 블록도이다.
도 15는 몇몇 실시예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타낸 도면이다.
이하에서, 도 1 내지 도 16을 참조하여, 본 발명의 몇몇 실시예에 따른 스토리지 시스템에 대해서 설명한다.
도 1은 몇몇 실시예에 따른 머신러닝 스토리지 시스템을 나타낸 블록도이다.
도 1을 참고하면, 몇몇 실시예에 따른 머신러닝 스토리지 시스템은 머신러닝(Machine Learning; 이하 ML) 모델 임베딩 장치(10) 및 스토리지 시스템(20)을 포함할 수 있다.
몇몇 실시예들에 따른 ML 모델 임베딩 장치(10)는 미리 학습된 초기 시뮬레이션 모델을 포함할 수 있다. 예를 들어 ML 모델 임베딩 장치(10)는 프로세서 및 메모리를 포함하고, 미리 학습된 초기 시뮬레이션 모델은 메모리에 저장되고, 프로세서는 학습 데이터에 대해 미리 학습된 초기 시뮬레이션 모델로 머신러닝을 수행하고, 이후 학습된 시뮬레이션 모델을 이용하여 학습 출력 데이터를 예측할 수 있다. 프로세서는 예측된 출력 데이터와 실제 출력 데이터를 비교하여 손실을 산출하고, 손실을 이용하여 시뮬레이션 모델을 학습시킬 수 있다. 프로세서는 학습된 시뮬레이션 모델을 이용하여 이후 입력 데이터에 상응하는 예측 출력 데이터를 산출할 수 있다.
몇몇 실시예들에 따른 ML 모델 임베딩 장치(10)는 임베디드 보드로서 스토리지 시스템(20)과 전기적으로 연결되어, 스토리지 시스템(20)으로부터 데이터를 수신하고, 시뮬레이션 모델로 수신된 데이터에 상응하여 예측된 출력 데이터를 산출한다.
몇몇 실시예들에 따른 ML 모델 임베딩 장치(10)는 스토리지 시스템(20)을 테스트하는 테스트 장치일 수 있다. 또는 몇몇 실시예들에 따른 ML 모델 임베딩 장치(10)는 스토리지 시스템(20)을 관리하는 서버 장치일 수 있다. 또는 몇몇 실시예들에 따른 ML 모델 임베딩 장치(10)는 스토리지 시스템(20) 내에 구현되는 장치일 수도 있고 또는 스토리지 시스템(20)과 별개로 구현되어 하나의 반도체 장치 내에 구현되는 장치일 수도 있다.
스토리지 시스템(20)은 호스트 장치(미도시)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 시스템(20)은 스토리지 컨트롤러(200) 및 스토리지 장치(400)를 포함할 수 있다. 스토리지 장치(400)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(400)가 SSD인 경우, 스토리지 장치(400)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(400)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(400)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트 장치(미도시)와 스토리지 장치(400)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다. 스토리지 시스템(20)에 대해서는 도 13 내지 도 15에서 후술한다.
스토리지 시스템(20)의 스토리지 장치(400)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(400)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(400)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
도 2는 몇몇 실시예에 따른 머신러닝 스토리지 시스템의 동작 방법을 나타낸 것이고, 도 3은 몇몇 실시예에 따른 스토리지 시스템에서 훈련 데이터 세트를 수집하는 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 스토리지 시스템(20)은 훈련 데이터 세트를 생성하기 위해, 입력 데이터 세트(X)가 입력되면(S11), 입력 데이터에 대해 동작을 수행하고, 동작에 따른 출력 데이터 세트(y)를 생성한다(S12). 이때 데이터 세트란 복수의 데이터를 포함한 것을 지칭한다.
보다 구체적으로, 몇몇 실시예에 따라 입력 데이터 세트(X)는 스토리지 시스템(20)의 동작에 관한 워크로드 데이터 세트 및 파라미터 데이터 세트를 포함할 수 있다.
몇몇 실시예에 따른 워크로드 데이터 세트는 호스트 장치가 스토리지 시스템(20)에 요청하는 입출력 패턴일 수 있다. 일 예로 워크로드 데이터 세트는 리드 비율(Read Ratio), 쓰기비율(Write Ratio), 큐 뎁쓰(Queue depth), I/O 청크 사이즈(I/O Chunk Size), I/O간 인터벌(I/O Interval) 등을 포함할 수 있다. 예를 들어 워크로드 데이터는 라이트 온리(Write Only) 데이터, 리드 온리(Read only) 데이터, 믹스 데이터(Write/Read)을 포함한다고 가정하자. 라이트 온리(Write Only) 데이터, 리드 온리(Read only) 데이터, 믹스 데이터(Write/Read) 각각은 서로 다른 큐 뎁쓰(queue depth)를 가질 수 있다. 큐 뎁쓰가 높을수록 호스트 장치가 스토리지 장치에 입출력(I/O)을 큐 뎁쓰 만큼 송부하고 응답을 기다릴 수 있다.
몇몇 실시예에 따른 파라미터 데이터 세트는 스토리지 시스템(20)의 동작에 영향을 끼치는 기설정된 파라미터들을 포함할 수 있다.
몇몇 실시예에 따라 워크로드 데이터 세트는 스토리지 시스템(20)에 I/O 툴을 이용하여 입력될 수 있고, 파라미터 데이터 세트는 스토리지 시스템(20)에 VUC(Vendor Unique Command)를 이용하여 입력될 수 있다. 몇몇 실시예에 따른 출력 데이터 세트(y)는 입력 데이터 세트(X)를 스토리지 시스템(20)에 입력하였을 때 스토리지 시스템(20)에서 관측되는 정보일 수 있다. 예를 들어 출력 데이터 세트(y)는 QoS(Quality of Service) 정보일 수 있다. 몇몇 실시예에 따른 QoS 정보는 쓰루풋(throughput, IOPS(I/O per seconds), 레이턴시 등을 포함할 수 있다.
스토리지 시스템(20)에 인가된 입력 데이터마다 다른 출력 데이터가 관측될 수 있으므로, 학습 입력 데이터 세트는 다양한 분포를 가진 많은 수의 입력 데이터를 포함할 수 있다. 학습 입력 데이터 세트가 많을수록 시뮬레이션 모델의 예측 정확도가 높아질 수 있다.
도 2 및 도 3을 참고하면, 몇몇 실시예에 따른 스토리지 시스템(20)은 훈련 입력 데이터 세트(x)(예를 들어 훈련 워크로드 데이터 세트(workload) 및 훈련 파라미터 데이터 세트(parameter))가 입력되면(S11), 각각의 훈련 입력 데이터들에 상응하는 실제 출력 데이터 세트(y), 예를 들면 실제 QoS 데이터 세트(Ground-truth QoS)를 생성할 수 있다(S12).
ML 모델 임베딩 장치(10)는 훈련 입력 데이터 세트(x) 및 실제 출력 데이터 세트(y)를 수신한다(S13). 훈련 데이터 세트는 예를 들면, 훈련 워크로드 데이터 세트(workload) 및 훈련 파라미터 데이터 세트(parameter)를 포함하는 입력 데이터 세트(x)일 수 있다. 상기 실제 출력 데이터 세트(y)는 상기 훈련 입력 데이터 각각에 상응하는 실제 QoS 데이터 세트(y)일 수 있다.
ML 모델 임베딩 장치(10)는 훈련 데이터 세트를 이용하여 머신 러닝 모델, 예를 들어 시뮬레이션 모델을 학습시킨다(S14). 몇몇 실시예에 따라 훈련 데이터 세트는 학습 수행에 적절하도록 포맷을 변환할 수도 있다. S14단계의 학습에 대해서는 도 4를 참조하여, 후술한다.
ML 모델 임베딩 장치(10)는 스토리지 시스템(20)의 새로운 입력 데이터(x')가 수신되면(S15) 훈련된 시뮬레이션 모델에 기초하여 최적 데이터(optimized data)를 탐색한다(S16). 상기 훈련된 시뮬레이션 모델은 실제 QoS 데이터에 가깝게 훈련된 것에서 새로운 입력 데이터(X')에 대해 최대 QoS가 기대되는 파라미터를 선택할 수 있다. 일 예로, 새로운 입력 데이터(x')는 스토리지 시스템(20)에서 수행할 워크로드 특성 중 하나일 수 있고, 최적 데이터는 QoS 데이터를 최대화하는 최적 파라미터일 수 있다. 다른 예로, 새로운 입력 데이터(x')는 스토리지 시스템(20)에 설정된 파라미터일 수 있고, 최적 데이터는 QoS 데이터를 최대화하는 최적 워크로드 경로일 수 있다.
스토리지 시스템(20)은 탐색결과 선택된 최적 데이터를 적용한다(S17). 즉, 스토리지 시스템(20)은 최적의 데이터가 적용된 환경에서 전반적인 동작을 수행한다.
도 4는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 흐름도이고, 도 5는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 도면이다.
도 4 및 도 5를 참조하면, ML 모델 임베딩 장치(10)는 훈련 데이터 세트(x, y)를 수신한다(S21). 훈련 데이터 세트는 입력 데이터 세트(x)와 출력 데이터 세트(y)를 매핑되어 ML 모델 임베딩 장치(10)에 제공될 수 있다. 예를 들어 훈련 데이터 세트(x, y)는 파라미터, 워크로드, QoS 정보가 서로 매핑된 데이터 세트일 수 있다.
몇몇 실시예에 따라 ML 모델 임베딩 장치(10)는 입력 데이터 세트(x) 중 데이터 특성에 따라 라벨링을 할 수 있다(S22). 예를 들어 워크로드 데이터 세트의 경우, ML 모델 임베딩 장치(10)는 워크로드 데이터마다 특성을 확인하여 선택/분류하고 , 데이터 양자화 등을 수행하며, 분류된 특성에 따라 라벨링을 할 수 있다. 훈련 데이터 세트는 일예로 라벨링된 워크로드에 따라 연관되어 분류될 수도 있고, 다른예로 라벨링된 워크로드와 관계없이 분류되지 않은 채, 매핑된 상태로만 유지될 수도 있다. 또는 몇몇 실시예에 따라 ML 모델 임베딩 장치(10)는 라벨링 없이 기설정된 특성으로 지정된 입력 데이터 세트(x)를 수신하여 학습에 이용할 수도 있다.
몇몇 실시예에 따라 ML 모델 임베딩 장치(10)는 훈련 데이터 세트(x, y)를 이용하여 시뮬레이션 모델을 학습할 수 있다. 예를 들어 지도학습(Supervised Learning)으로 시뮬레이션 모델을 데이터 세트의 특성에 맞게 학습할 수 있다. 일예로 기설정된 초기 시뮬레이션 모델(10)은 훈련 파라미터 데이터를 적용하여 훈련 워크로드에 따라 동작을 수행하는 경우(x) 예측 QoS 데이터(y')를 생성한다. 초기 시뮬레이션 모델(10)은 예측 QoS 데이터(y')와 실제 QoS 데이터(y)를 비교하여, 손실(loss)을 산출한다. ML 모델 임베딩 장치(10)는 산출된 손실을 초기 시뮬레이션 모델에 반영하여 시뮬레이션 모델을 업데이트 할 수 있다.
또다른 예를 들어, 지도학습(Supervised Learning)과 비지도 학습(Unsupervised Learning)을 섞어서 준지도학습(Semi-Supervised Learning)으로 시뮬레이션 모델을 학습할 수도 있다. 일 예로 파라미터 데이터 세트 및/또는 워크로드 데이터 세트들은 매핑된 QoS 데이터 세트들 기초로 클러스터링하여 특성을 찾아내고, 특성에 따라 라벨링 할 수도 있다. 이후 기설정된 초기 시뮬레이션 모델(10)은 라벨링된 훈련 데이터에 따라 동작을 수행하는 경우(x) 예측 QoS 데이터(y')를 생성한다. 초기 시뮬레이션 모델(10)은 예측 QoS 데이터(y')와 실제 QoS 데이터(y)를 비교하여, 손실(loss)을 산출한다.
ML 모델 임베딩 장치(10)는 산출된 손실을 초기 시뮬레이션 모델에 반영하여 시뮬레이션 모델을 학습시킬 수 있다. 시뮬레이션 모델의 학습은 예를 들어, 수학식 (1)에 따라 QoS를 최대화하는 입력데이터, 워크로드 또는 파라미터를 선택하도록 하는 것이다.
Figure 112021134478486-pat00001
.......(1)
수학식 (1)에서 QoS는 QoS 값, p는 파라미터, P는 파라미터 데이터 세트, w는 워크로드, W는 워크로드 세트, i는 파라미터 인덱스를 지칭한다. 즉 파라미터 데이터 p로 워크로드 w를 수행하여 QoS를 최대화(argmax)하도록 학습한다는 의미이다. 다시 말하면,시뮬레이션 모델은 예측 QoS 데이터(y')가 실제 QoS 데이터(y)에 가까워지도록, 즉 학습 QoS 데이터와 실제 QoS 데이터 간 손실이 작아지도록 학습되어 다음 단계의 시뮬레이션 모델로 업데이트될 수 있다.
도 6은 몇몇 실시예에 따른 시뮬레이션 모델의 데이터 세트를 설명하기 위한 도면이고, 도 7은 도 6의 실시예에 따라 시뮬레이션 모델의 학습동작을 설명하기 위한 도면이다.
머신러닝 학습된 시뮬레이션 모델을 이용하여 스토리지 시스템(20)의 쓰기 동작에 대해 QoS를 최대화하는 최적 파라미터를 찾는다고 하자. 도 6을 참조하면 입력데이터 중 파라미터 데이터는 nDelayWeight, nDefaultStartWCCount, nPenaltyWAF를 포함하고, 워크로드 데이터는 쓰기 동작(write Throttling)이다. 상기 nDelayWeight,는 입출력(I/O)에 대한 기본 지연시간(default deay time)을 부여하는 파라미터이고, 상기 nDefaultStartWCCount는 사용중인 쓰기 캐시 수(Write Cache 수)에 따른 지연시간(delay time)을 부여하는 파라미터이다. 상기 nPenaltyWAF는 WAF가 기설정된 임계점 이상으로 나빠지는 경우 지연시간을 더 주기 위한 WAF 임계값 파라미터이다. 이때 본 명세서에서 상기 각 파라미터의 명칭은 일 실시예에 의해 정해진 것일 뿐, 다양한 실시예에 따라 명칭이 달라질 수 있다.
2nine latency, 4nine latency, Avg.latency, IOPS는 몇몇 실시예에 따라 스토리지 시스템(20)의 성능에 관한 정보, 즉 QoS 데이터를 나타낸 예시이다.
즉, 도시된 예에서 훈련 데이터로 시뮬레이션 모델(NN Model)에 파라미터 [nDelayWeight, nDefaultStartWCCount, nPenaltyWAF]로 워크로드 [write Throttling]에 따른 동작을 수행하면, 시뮬레이션 모델은 스토리지 시스템(20)에서 관측될 예측 QoS 데이터를 [2nine latency, 4nine latency, Avg.latency, IOPS] 각각에 대한 값을 산출할 수 있다. 시뮬레이션 모델은 상기 예측 QoS 데이터를 실제 QoS 데이터와 비교해서 QoS가 최대화되는 파라미터 또는 워크로드를 선택할 수 있도록 학습할 수 있다.
도 7의 그래프는 도 6의 일 실시예에 따른 파라미터에 대해 100만번 수행하여 시뮬레이션 모델을 학습한 경우의 QoS를 나타낸 것이다. 시뮬레이션 모델은 학습결과에 따라 QoS 데이터에 포함되는 데이터 중 4nine_latency와 2nine_latency를 도시된 그래프 분포(음영부분)와 같이 예측할 수 있다. 레이턴시는 최소값을 가질수록 QoS가 좋아지는 것이므로 시뮬레이션 모델은 4nine_latency와 2nine_latency 모두 최소화되는 지점 P를 탐색하도록 학습하여 최적 시뮬레이션 모델을 확정하고, 최적 시뮬레이션 모델에서 탐색된 지점 P에 적용된 파라미터를 최적 파라미터로 선택할 수 있다.
도 8 및 도 9는 몇몇 실시예에 따른 시뮬레이션 모델의 학습방법을 설명하기 위한 도면이다.
도 8을 참조하면, ML 모델 임베딩 장치(10)는 시뮬레이션 모델을 학습시킬 때 워크로드 데이터 세트에서 소정의 워크로드로 고정시켜두고, 파라미터 데이터 세트를 적용하여, 즉 파라미터 데이터 세트에 속한 복수의 파라미터들마다 고정된 워크로드를 수행하도록 하여 QoS를 산출할 수 있다. 이 경우 시뮬레이션 모델은 고정시킨 워크로드에 대해서, 최대화된 QoS에 상응하는 최적 파라미터를 보다 빠르게 탐색할 수 있다.
도 9를 참조하면, ML 모델 임베딩 장치(10)는 시뮬레이션 모델을 학습시킬 때 파라미터 데이터 세트에서 소정의 파라미터로 고정시켜두고, 워크로드 세트를 적용하여, 즉 워크로드 데이터 세트에 속한 복수의 워크로드를 일일이 수행하여 QoS를 산출할 수 있다. 이 경우 시뮬레이션 모델은 고정시킨 파라미터에 대해서, 최대화된 QoS에 상응하는 최적 워크로드를 보다 빠르게 탐색할 수 있다. 예를 들어 사용자가 특정 워크로드를 빈번하게 이용하는 스토리지 시스템의 경우, 도 9의 시뮬레이션 모델로 최적 파라미터를 찾아 적용하면 사용자가 스토리지 시스템을 보다 향상된 성능으로 이용할 수 있다.
도 10 내지 도 12는 몇몇 실시예들에 따른 머신러닝 스토리지 시스템들을 나타낸 것이다.
도 10을 참조하면, 몇몇 실시예에 따른 머신러닝 스토리지 시스템은 ML 모델 임베딩 장치(10)에 시뮬레이션 모델(13)을 포함하고, 스토리지 시스템(20)은 학습된 시뮬레이션 모델(13)에서 탐색된 최적 데이터가 적용된 시스템일 수 있다. 몇몇 실시예에 따라 최적 데이터는 워크로드에 매핑된 최적 파라미터, 또는 파라미터에 매핑된 최적 워크로드로서 적어도 하나 이상의 데이터세트일 수 있다.
도 11를 참조하면, 몇몇 실시예에 따른 머신러닝 스토리지 시스템은 ML 모델 임베딩 장치(10)에 시뮬레이션 모델(13) 및 시뮬레이션 모델(13)이 생성한 최적 데이터를 서로 매핑시켜 저장한 머신러닝 테이블(15)을 포함하고, 스토리지 시스템(20)은 스토리지 시스템의 특성에 따라 머신러닝 테이블(15)에서 선택된 최적 데이터가 적용된 시스템일 수 있다.
도 12을 참조하면, 몇몇 실시예에 따른 머신러닝 스토리지 시스템은 ML 모델 임베딩 장치(10)에 시뮬레이션 모델(13)을 포함하고, 스토리지 시스템(20)은 시뮬레이션 모델(13)이 생성한 최적 데이터를 서로 매핑시켜 저장한 맵 테이블(300)을 포함할 수 있다. 즉 맵 테이블(300)은 훈련된 시뮬레이션 모델에서 산출되는, 최대 QoS를 갖도록 워크로드별로 매핑된 최적 파라미터를 저장할 수 있다.
일 실시예로 스토리지 시스템(20)은 스토리지 시스템의 장치 특성 또는 사용 특성에 따라 맵 테이블(300)에서 최적 파라미터 또는 최적 워크로드를 선택하여 적용할 수 있다. 일 실시예로 스토리지 시스템(20)은 스토리지 시스템(20)의 열화정도에 따라 맵 테이블(300)에서 최적 파라미터 또는 최적 워크로드를 선택하여 적용할 수도 있다.
도시하지는 않았으나 맵 테이블(300)은 스토리지 장치에 포함된 비휘발성 메모리 장치의 특성에 각각 최적화된 워크로드별 파라미터 세트를 저장할 수 있다. 예를 들어 동일 워크로드에 대해서 제1 비휘발성 메모리 장치의 맵 테이블은 제2 비휘발성 메모리 장치의 맵 테이블과 다를 수 있다.
도 13는 몇몇 실시 예에 따른 스토리지 시스템(20)을 나타내는 블록도이다.
도 13를 참조하면, 스토리지 시스템(20)은 스토리지 장치(400) 및 스토리지 컨트롤러(200)를 포함할 수 있다. 스토리지 시스템(20)은 복수의 채널들(CH1~CHm)을 지원할 수 있고, 스토리지 장치(400)와 스토리지 컨트롤러(200)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 스토리지 시스템(20)은 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.
스토리지 장치(400)는 복수의 비휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 비휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(200)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
스토리지 컨트롤러(200)는 복수의 채널들(CH1~CHm)을 통해 스토리지 장치(400)와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 채널들(CH1~CHm)을 통해 스토리지 장치(400)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 스토리지 장치(400)로 전송하거나, 스토리지 장치(400)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
스토리지 컨트롤러(200)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리 장치들 중 하나를 선택하고, 선택된 비휘발성 메모리 장치와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)에 연결된 비휘발성 메모리 장치들(NVM11~NVM1n) 중 비휘발성 메모리 장치(NVM11)를 선택할 수 있다. 스토리지 컨트롤러(200)는 선택된 비휘발성 메모리 장치(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송하거나, 선택된 비휘발성 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
스토리지 컨트롤러(200)는 서로 다른 채널들을 통해 스토리지 장치(400)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)을 통해 스토리지 장치(400)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 스토리지 장치(400)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)을 통해 스토리지 장치(400)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 스토리지 장치(400)로부터 데이터(DATAb)를 수신할 수 있다.
스토리지 컨트롤러(200)는 스토리지 장치(400)의 전반적인 동작을 제어할 수 있다. 스토리지 컨트롤러(200)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 비휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 비휘발성 메모리 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(200)의 제어에 따라 동작할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)에 따라 데이터(DATAa)를 프로그램할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 독출하고, 독출된 데이터(DATAb)를 스토리지 컨트롤러(200)로 전송할 수 있다.
도 13에는 스토리지 장치(400)가 m개의 채널을 통해 스토리지 컨트롤러(200)와 통신하고, 스토리지 장치(400)가 각각의 채널에 대응하여 n개의 비휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다.
도 14는 몇몇 실시예에 따른 도 14의 스토리지 컨트롤러를 나타내는 블록도이다.
도 14를 참고하면, 스토리지 컨트롤러(200)는 호스트 인터페이스(210), 메모리 인터페이스(270) 및 CPU(central processing unit, 220)를 포함할 수 있다. 또한, 스토리지 컨트롤러(200)는 플래시 변환 레이어(Flash Translation Layer(FTL), 230), 버퍼 메모리(240), ECC(error correction code, 260) 엔진을 더 포함할 수 있다. 스토리지 컨트롤러(200)는 플래시 변환 레이어(FTL, 230)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(220)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(210)는 호스트(미도시)와 패킷(packet)을 송수신할 수 있다. 호스트(미도시)로부터 호스트 인터페이스(210)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(400)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(210)로부터 호스트(미도시)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(400)로부터 독출된 데이터 등을 포함할 수 있다.
플래시 변환 계층(230)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(400) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(400) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(400) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
메모리(240)는 버퍼 메모리로서 스토리지 컨트롤러(200)의 동작 메모리일 수 있다. 몇몇 실시예에 따라 메모리(240)는 휘발성 메모리일 수 있고, RAM(Random Access Memory)등일 수 있다.
비휘발성 메모리(250)는 스토리지 시스템(20)의 동작에 필요한 데이터들을 저장할 수 있다. 예를 들어 커맨드, 파라미터 등을 포함할 수 있다. 몇몇 실시예에 따라 비휘발성 메모리(250)는 도 1 내지 도 12에서 설명하는 최적 데이터를 저장할 수도 있다.
ECC 엔진(260)은 비휘발성 메모리(400)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(260)은 비휘발성 메모리(400)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(400) 내에 저장될 수 있다. 비휘발성 메모리(400)로부터의 데이터 독출 시, ECC 엔진(260)은 독출 데이터와 함께 비휘발성 메모리(400)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
NVM 인터페이스(270)는 비휘발성 메모리(400)에 기록될 데이터를 비휘발성 메모리(400)로 송신하거나, 비휘발성 메모리(400)로부터 독출된 데이터를 수신할 수 있다. 이러한 NVM 인터페이스(270)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
몇몇 실시예에 따라 스토리지 컨트롤러(200)는 맵 테이블(300)을 더 포함할 수도 있다. 맵 테이블(300)은 도 12에서 설명한 일 실시예에 따라 시뮬레이션 모델(13)이 생성한 최적 데이터를 서로 매핑시켜 저장한 데이터 테이블일 수 있다. 몇몇 실시예에 따라 맵 테이블(300)은 도 13에서 설명한 각각의 비휘발성 메모리 장치(400)마다 각각 매핑된 데이터를 포함할 수도 있다.
도 15는 몇몇 실시예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타낸 도면이다.
도 15를 참조하면, 데이터 센터(1000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(1000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(1000)는 어플리케이션 서버들(1100 내지 1100n) 및 스토리지 서버들(1200 내지 1200m)을 포함할 수 있다. 어플리케이션 서버들(1100 내지 1100n)의 개수 및 스토리지 서버들(1200 내지 1200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(1100 내지 1100n)의 개수 및 스토리지 서버들(1200 내지 1200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(1100) 또는 스토리지 서버(1200)는 프로세서(1110, 1210) 및 메모리(1120, 1220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(1200)를 예시로 설명하면, 프로세서(1210)는 스토리지 서버(1200)의 전반적인 동작을 제어할 수 있고, 메모리(1220)에 액세스하여 메모리(1220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(1220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(1200)에 포함되는 프로세서(1210)의 개수 및 메모리(1220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(1210)와 메모리(1220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(1210)와 메모리(1220)의 개수는 서로 다를 수도 있다. 프로세서(1210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(1200)에 대한 상기 설명은, 어플리케이션 서버(1100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(1100)는 스토리지 장치(1150)를 포함하지 않을 수도 있다. 스토리지 서버(1200)는 적어도 하나 이상의 스토리지 장치(1250)를 포함할 수 있다. 스토리지 서버(1200)에 포함되는 스토리지 장치(1250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
어플리케이션 서버들(1100 내지 1100n) 및 스토리지 서버들(1200 내지 1200m)은 네트워크(1300)를 통해 서로 통신할 수 있다. 네트워크(1300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(1300)의 액세스 방식에 따라 스토리지 서버들(1200 내지 1200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(1300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(1300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(1300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(1100) 및 스토리지 서버(1200)를 중심으로 설명하기로 한다. 어플리케이션 서버(1100)에 대한 설명은 다른 어플리케이션 서버(1100n)에도 적용될 수 있고, 스토리지 서버(1200)에 대한 설명은 다른 스토리지 서버(1200m)에도 적용될 수 있다.
어플리케이션 서버(1100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(1300)를 통해 스토리지 서버들(1200 내지 1200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(1100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(1200 내지 1200m) 중 하나로부터 네트워크(1300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(1100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(1100)는 네트워크(1300)를 통해 다른 어플리케이션 서버(1100n)에 포함된 메모리(1120n) 또는 스토리지 장치(1150n)에 액세스할 수 있고, 또는 네트워크(1300)를 통해 스토리지 서버(1200-1200m)에 포함된 메모리(1220-1220m) 또는 스토리지 장치(1250-1250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(1100)는 어플리케이션 서버들(1100-1100n) 및/또는 스토리지 서버들(1200-1200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(1100)는 어플리케이션 서버들(1100-1100n) 및/또는 스토리지 서버들(1200-1200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(1200-1200m)의 스토리지 장치로(1250-1250m)부터 스토리지 서버들(1200-1200m)의 메모리들(1220-1220m)을 거쳐서, 또는 바로 어플리케이션 서버들(1100-1100n)의 메모리(1120-1120n)로 이동될 수 있다. 네트워크(1300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
예를 들어, 어플리케이션 서버(1100)는 도 1 내지 도 12에서 설명한 ML 모델 임베딩 장치를 포함할 수도 있다. ML 모델 임베딩 장치를 포함한 어플리케이션 서버(1100)는 스토리지 서버들(1200-1200m)마다 개개의 시뮬레이션 모델을 학습시켜 개개의 스토리지 서버마다 QoS를 최대화하는 최적 파라미터 또는 최적 워크로드를 적용하도록 제어할 수도 있다. 예를 들어 어플리케이션 서버(1100)는 제1 시뮬레이션 모델로 학습되어 제1 스토리지 서버에 대해 제1 최적 파라미터 또는 제1 최적 워크로드를 산출하고, 제1 스토리지 서버는 제1 최적 파라미터 또는 제1 최적 워크로드로 제어되어 동작할 수 있다. 어플리케이션 서버(1100)는 제2 시뮬레이션 모델로 학습되어 제2 스토리지 서버에 대해 제2 최적 파라미터 또는 제2 최적 워크로드를 산출하고, 제2 스토리지 서버는 제2 최적 파라미터 또는 제2 최적 워크로드로 제어되어 동작할 수 있다. 다양한 실시예에 따라 제1 시뮬레이션 모델과 제2 시뮬레이션 모델은 같을 수도 있고 다를 수도 있다.
스토리지 서버(1200)를 예시로 설명하면, 인터페이스(1254)는 프로세서(1210)와 컨트롤러(1251)의 물리적 연결 및 NIC(1240)와 컨트롤러(1251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(1254)는 스토리지 장치(1250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(1254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(1200)는 스위치(1230) 및 NIC(1240)을 더 포함할 수 있다. 스위치(1230)는 프로세서(1210)의 제어에 따라 프로세서(1210)와 스토리지 장치(1250)를 선택적으로 연결시키거나, NIC(1240)과 스토리지 장치(1250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(1240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(1240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(1300)에 연결될 수 있다. NIC(1240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(1210) 및/또는 스위치(1230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(1254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(1240)는 프로세서(1210), 스위치(1230), 스토리지 장치(1250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(1200-1200m) 또는 어플리케이션 서버(1100-1100n)에서 프로세서는 스토리지 장치(1130-1130n, 1250-1250m) 또는 메모리(1120-1120n, 1220-1220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(1150-1150m, 1250-1250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(1252-1252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(1252-1252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(1251)는 스토리지 장치(1250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(1251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(1251)는 기입 커맨드에 응답하여 낸드 플래시(1252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(1252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(1200) 내의 프로세서(1210), 다른 스토리지 서버(1200m) 내의 프로세서(1210m) 또는 어플리케이션 서버(1100, 1100n) 내의 프로세서(1110, 1110n)로부터 제공될 수 있다. DRAM(1253)은 낸드 플래시(1252)에 기입될 데이터 또는 낸드 플래시(1252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(1253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(1252)를 관리하기 위해 컨트롤러(1251)에서 생성된 데이터이다. 스토리지 장치(1250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 머신러닝 모델 임베딩 장치
20: 스토리지 시스템

Claims (20)

  1. 복수의 비휘발성 메모리를 포함하는 스토리지 장치; 및
    상기 스토리지 장치에 액세스 하고, 파라미터에 기초하여 워크로드를 수행하는 스토리지 컨트롤러를 포함하고,
    상기 파라미터는 학습된 시뮬레이션 모델에서 상기 워크로드에 대한 최대 QoS(Quality of Service)를 갖는 값으로 선택된 것이고,
    상기 시뮬레이션 모델은
    기설정된 초기 시뮬레이션 모델에서 훈련 파라미터로 훈련 워크로드를 수행하여 학습 QoS 데이터를 생성하고,
    상기 학습 QoS 데이터와 상기 훈련 파라미터가 적용된 상기 스토리지 컨트롤러에서 상기 훈련 워크로드를 수행하여 산출된 실제 QoS 데이터를 비교하여 산출된 손실을 기초로 학습하는 것인, 스토리지 시스템.
  2. 제1항에 있어서, 상기 시뮬레이션 모델은
    상기 초기 시뮬레이션 모델로부터 상기 손실이 줄어드는 방향으로 학습되는 것인, 스토리지 시스템.
  3. 제1항에 있어서, 상기 시뮬레이션 모델은
    상기 파라미터를 고정하여, 상기 QoS를 최대화하는 워크로드들을 탐색하도록 훈련된 것인, 스토리지 시스템.
  4. 제1항에 있어서, 상기 시뮬레이션 모델은
    상기 워크로드를 고정한 상태에서 상기 QoS를 최대화하는 파라미터를 탐색하도록 훈련된 것인, 스토리지 시스템.
  5. 제1항에 있어서, 상기 스토리지 시스템은 상기 시뮬레이션 모델을 포함하는 ML(Machine Learning) 모델 임베딩 장치에 연결되고,
    상기 손실에 기초한 상기 시뮬레이션 모델의 머신러닝 훈련은 상기 ML 모델 임베딩 장치에서 수행되고,
    상기 스토리지 컨트롤러는 상기 훈련된 시뮬레이션 모델에서 워크로드별로 상응하여 산출되는 최적 파라미터를 적용하여 동작하는, 스토리지 시스템.
  6. 제5항에 있어서, 상기 ML 모델 임베딩 장치는
    상기 훈련된 시뮬레이션 모델로부터 산출되어, 상기 워크로드별로 최대 QoS를 갖도록 매핑된 상기 최적 파라미터를 저장한 머신러닝 테이블을 더 포함하고,
    상기 스토리지 컨트롤러는 상기 머신러닝 테이블에서 상기 비휘발성 메모리 및 워크로드에 적응적으로(adaptively) 상응하는 상기 최적 파라미터를 수신하는, 스토리지 시스템.
  7. 제5항에 있어서,
    상기 스토리지 컨트롤러는 상기 ML 모델 임베딩 장치에서 생성된 맵 테이블을 포함하여, 상기 맵 테이블에서 상기 비휘발성 메모리 및 워크로드에 따라 상기 최적 파라미터를 적응적으로 선택하여 적용한 것인, 스토리지 시스템.
  8. 제1항에 있어서, 상기 시뮬레이션 모델은
    상기 훈련 파라미터 및 상기 훈련 워크로드를 상기 실제 QoS 데이터 세트를 기초로 클러스터링하여 특성을 찾아내고, 라벨링하며,
    상기 라벨링된 훈련 파라미터 및 상기 라벨링된 훈련 워크로드에 따라 동작하여 상기 학습 QoS 데이터를 생성하는, 스토리지 시스템.
  9. 제1항에 있어서, 상기 스토리지 시스템은
    상기 복수의 비휘발성 메모리마다 학습되는 복수의 시뮬레이션 모델을 포함하는 것인, 스토리지 시스템.
  10. 복수의 비휘발성 메모리를 포함하는 스토리지 장치; 및
    상기 스토리지 장치에 액세스 하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    상기 스토리지 장치에 대한 동작을 제어하는 CPU;
    상기 동작에 대한 복수의 파라미터들을 저장하는 비휘발성 메모리; 및
    상기 동작에 대한 워크로드별로 파라미터를 매핑하여 저장하는 맵 테이블을 포함하고,
    상기 맵 테이블에 저장된 상기 파라미터는
    상기 비휘발성 메모리의 상태에 기초하여 워크로드 별로 QoS(Quality of Service)를 최대화하도록 학습된 시뮬레이션 모델에서 산출된 최적 파라미터이고,
    상기 시뮬레이션 모델은
    실제 QoS 데이터와 학습 QoS 데이터를 비교하여 산출된 손실을 기초로 학습된 것인, 스토리지 시스템.
  11. 제10항에 있어서, 상기 맵 테이블은
    제1 비휘발성 메모리에 대한 워크로드별 제1 최적 파라미터들을 저장하는 제1 맵 테이블; 및
    제2 비휘발성 메모리에 대한 워크로드별 제2 최적 파라미터들을 저장하는 제2 맵 테이블을 포함하는, 스토리지 시스템.
  12. 제10항에 있어서, 상기 시뮬레이션 모델은
    훈련 파라미터 및 훈련 워크로드를 상기 스토리지 시스템에서 수행하여 산출된 상기 실제 QoS 데이터 세트를 기초로 클러스터링하여 특성을 찾아내고, 라벨링하며,
    상기 라벨링된 훈련 파라미터 및 상기 라벨링된 훈련 워크로드에 따라 동작하여 상기 학습 QoS 데이터를 생성하는, 스토리지 시스템.
  13. 제12항에 있어서, 상기 실제 QoS 데이터 세트는
    상기 스토리지 컨트롤러가 상기 비휘발성 메모리에 대해 상기 훈련 파라미터로 상기 훈련 워크로드를 수행하여 생성된 것인, 스토리지 시스템.
  14. 제12항에 있어서, 상기 학습 QoS 데이터 세트는
    상기 시뮬레이션 모델에서 상기 훈련 파라미터로 상기 훈련 워크로드를 수행하여 생성된 것이고,
    상기 시뮬레이션 모델은 상기 손실을 최소화하도록 학습하는, 스토리지 시스템.
  15. 복수의 비휘발성 메모리를 포함하는 스토리지 장치; 및
    상기 스토리지 장치에 액세스 하고, 파라미터에 기초하여 워크로드를 수행하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    복수의 워크로드 및 복수의 파라미터를 저장하고,
    상기 워크로드 및 상기 파라미터는 머신러닝된 시뮬레이션 모델에서 QoS(Quality of Sevice)를 최대화하는 관계로 산출된 최적 데이터이고,
    상기 머신러닝된 시뮬레이션 모델은
    이전 러닝의 시뮬레이션 모델에서 훈련 파라미터로 훈련 워크로드를 수행하여 산출된 예측 QoS 데이터와 실제 QoS 데이터를 비교하여, 상기 실제 QoS 데이터에 가까워지는 방향으로 상기 시뮬레이션 모델을 업데이트하는 것인, 스토리지 시스템.
  16. 제15항에 있어서, 상기 스토리지 시스템은
    상기 훈련 파라미터 및 상기 훈련 워크로드를 상기 실제 QoS 데이터 세트를 기초로 클러스터링하여 특성을 찾아내고, 라벨링하며,
    상기 라벨링된 훈련 파라미터 및 상기 라벨링된 훈련 워크로드에 따라 동작하여 상기 예측 QoS 데이터를 생성하는, 스토리지 시스템.
  17. 제15항에 있어서, 상기 시뮬레이션 모델은
    상기 파라미터를 고정하여, 상기 QoS를 최대화하는 워크로드들을 탐색하도록 훈련된 것인, 스토리지 시스템.
  18. 제15항에 있어서, 상기 시뮬레이션 모델은
    상기 워크로드를 고정한 상태에서 상기 QoS를 최대화하는 파라미터를 탐색하도록 훈련된 것인, 스토리지 시스템.
  19. 제15항에 있어서, 상기 스토리지 컨트롤러는
    제1 비휘발성 메모리의 특성에 따라 선택된 제1 최적 데이터를 적용하여 상기 제1 비휘발성 메모리에 대해 동작을 수행하고,
    제2 비휘발성 메모리의 특성에 따라 선택된 제2 최적 데이터를 적용하여 상기 제2 비휘발성 메모리에 대해 동작을 수행하는 스토리지 시스템.
  20. 제15항에 있어서, 상기 스토리지 시스템은
    상기 시뮬레이션 모델을 머신러닝시키고, 상기 머신러닝된 시뮬레이션 모델에 의해 상기 워크로드 별로 상응하여 산출되는 최적 파라미터가 매핑된 머신러닝 테이블을 포함하는 ML(Machine Learning) 모델 임베딩 장치에 연결되고,
    상기 ML 모델 임베딩 장치는
    상기 머신러닝 테이블에서 상기 비휘발성 메모리에 대한 워크로드 별로 최대 QoS를 갖는 파라미터를 선택하여 상기 스토리지 컨트롤러로 전송하는, 스토리지 시스템.
KR1020210161470A 2021-11-22 2021-11-22 스토리지 시스템 KR102484073B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210161470A KR102484073B1 (ko) 2021-11-22 2021-11-22 스토리지 시스템
US17/819,007 US20230161619A1 (en) 2021-11-22 2022-08-11 Storage system
EP22208620.9A EP4184307A1 (en) 2021-11-22 2022-11-21 A storage system
CN202211452496.7A CN116149542A (zh) 2021-11-22 2022-11-21 存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210161470A KR102484073B1 (ko) 2021-11-22 2021-11-22 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR102484073B1 true KR102484073B1 (ko) 2023-01-02

Family

ID=84361618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210161470A KR102484073B1 (ko) 2021-11-22 2021-11-22 스토리지 시스템

Country Status (4)

Country Link
US (1) US20230161619A1 (ko)
EP (1) EP4184307A1 (ko)
KR (1) KR102484073B1 (ko)
CN (1) CN116149542A (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210026767A (ko) * 2019-09-02 2021-03-10 한국과학기술원 뉴럴 네트워크를 이용한 플래시 메모리의 읽기 기준 전압 추정 방법 및 그 장치
KR20210031220A (ko) * 2019-09-11 2021-03-19 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
WO2021113427A1 (en) * 2019-12-04 2021-06-10 Marvell Asia Pte Ltd System and method for altering memory accesses using machine learning
KR20210082345A (ko) * 2019-12-25 2021-07-05 삼성전자주식회사 Ssd 내 데이터 배치를 위한 전략을 결정하는 방법 및 장치
KR20210101062A (ko) * 2020-02-07 2021-08-18 삼성전자주식회사 모델 정보를 저장하는 스토리지 장치, 스토리지 장치를 포함하는 스토리지 시스템 및 스토리지 시스템의 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102519663B1 (ko) * 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
US20200234159A1 (en) * 2019-01-23 2020-07-23 International Business Machines Corporation Determining whether to process a host request by training a machine learning module

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210026767A (ko) * 2019-09-02 2021-03-10 한국과학기술원 뉴럴 네트워크를 이용한 플래시 메모리의 읽기 기준 전압 추정 방법 및 그 장치
KR20210031220A (ko) * 2019-09-11 2021-03-19 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
WO2021113427A1 (en) * 2019-12-04 2021-06-10 Marvell Asia Pte Ltd System and method for altering memory accesses using machine learning
KR20210082345A (ko) * 2019-12-25 2021-07-05 삼성전자주식회사 Ssd 내 데이터 배치를 위한 전략을 결정하는 방법 및 장치
KR20210101062A (ko) * 2020-02-07 2021-08-18 삼성전자주식회사 모델 정보를 저장하는 스토리지 장치, 스토리지 장치를 포함하는 스토리지 시스템 및 스토리지 시스템의 동작 방법

Also Published As

Publication number Publication date
CN116149542A (zh) 2023-05-23
EP4184307A1 (en) 2023-05-24
US20230161619A1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
KR20200108363A (ko) 집적 회로 메모리의 패키지에 내장된 컨트롤러를 갖는 메모리 시스템
KR20200108358A (ko) 데이터 스트림 분리를 통한 메모리 시스템에서의 데이터 액세스 가속화
US11449443B2 (en) Identification and classification of write stream priority
KR20220045216A (ko) 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑
KR102493864B1 (ko) 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법
CN117112219A (zh) 主机内存数据访问的方法和装置
US20240061782A1 (en) Method and device for data caching
KR102484073B1 (ko) 스토리지 시스템
US20230153006A1 (en) Data processing method and data processing device
US11907568B2 (en) Storage controller, storage device, and operation method of storage device
US20220179724A1 (en) Method for operating storage device and host device, and storage device
EP3995968B1 (en) A storage server, a method of operating the same storage server and a data center including the same storage server
KR20220067282A (ko) 스토리지 장치, 스토리지 장치를 포함하는 서버 장치 및 스토리지 장치의 구동 방법
US20230214258A1 (en) Storage controller and storage device
US20230393749A1 (en) Method and device of storage data
US20230073239A1 (en) Storage device and method of operating the same
US20240037027A1 (en) Method and device for storing data
US11210225B2 (en) Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host
US20230153237A1 (en) Method and device for storing data
US20240160511A1 (en) Failure prediction apparatus and method for storage devices
EP4332773A1 (en) Storage server and operation method of storage server
US20220129383A1 (en) Electronic device, automotive device, and data center
CN117130551A (zh) 存储装置及其数据访问方法
CN117891408A (zh) 用于存储设备的数据去重的方法和存储设备
KR20240030021A (ko) 스토리지 서버 및 스토리지 서버의 동작 방법

Legal Events

Date Code Title Description
GRNT Written decision to grant