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

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

Info

Publication number
KR20210053384A
KR20210053384A KR1020190138655A KR20190138655A KR20210053384A KR 20210053384 A KR20210053384 A KR 20210053384A KR 1020190138655 A KR1020190138655 A KR 1020190138655A KR 20190138655 A KR20190138655 A KR 20190138655A KR 20210053384 A KR20210053384 A KR 20210053384A
Authority
KR
South Korea
Prior art keywords
data
channel
nonvolatile memory
object data
controller
Prior art date
Application number
KR1020190138655A
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 KR1020190138655A priority Critical patent/KR20210053384A/ko
Priority to US16/828,170 priority patent/US11526287B2/en
Priority to DE102020113837.7A priority patent/DE102020113837A1/de
Publication of KR20210053384A publication Critical patent/KR20210053384A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L25/00Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
    • H01L25/03Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes
    • H01L25/04Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers
    • H01L25/065Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers the devices being of a type provided for in group H01L27/00
    • H01L27/115
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B69/00Erasable-and-programmable ROM [EPROM] devices not provided for in groups H10B41/00 - H10B63/00, e.g. ultraviolet erasable-and-programmable ROM [UVEPROM] devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Power Engineering (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Molecular Biology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 스토리지 장치에 관한 것이다. 본 발명의 스토리지 장치는, 제1 사용자 영역 및 제1 가중치 데이터를 저장하도록 구성되는 제1 가중치 영역을 포함하는 제1 불휘발성 메모리 장치들, 제2 사용자 영역 및 제1 가중치 데이터의 사본인 제2 가중치 데이터를 저장하도록 구성되는 제2 가중치 영역을 포함하는 제2 불휘발성 메모리 장치들, 그리고 제1 채널을 통해 제1 불휘발성 메모리 장치를 액세스하고, 그리고 제2 채널을 통해 제2 불휘발성 메모리 장치를 액세스하도록 구성되는 제어기를 포함한다. 제어기는 외부의 호스트 장치의 제1 추론 요청에 따라, 제1 채널 및 제2 채널 중 더 차가운 채널을 통해 제1 가중치 데이터 및 제2 가중치 데이터 중 대응하는 가중치 데이터를 읽도록 더 구성된다.

Description

스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE DEVICE AND OPERATING METHOD OF STORAGE DEVICE}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 사용자 데이터에 대한 읽기 및 쓰기를 지원하고, 그리고 추론 데이터에 대한 기계 학습 기반의 추론을 지원하는 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.
기계 학습과 연관된 기술들이 발전하면서, 기계 학습을 일상 생활의 응용에 적용하고자 하는 시도가 지속되고 있다. 특히, 기계 학습에 기반한 학습 또는 추론을 수행하는 전용의 기기를 도입하는 것보다는, 기존에 존재하는 전자 기기들에 기계 학습에 기반한 학습 또는 추론을 수행하는 기능을 부가하는 것이 기계 학습을 응용들에 빠르게 적용하기 위한 주요한 수단으로 기대되고 있다.
전자 기기들의 대부분, 사실상 모두는 스토리지 장치를 포함한다. 스토리지 장치는 전자 기기들의 보조 기억 장치로 사용되며, 대용량 및 불휘발성의 저장 능력을 특징으로 한다. 스토리지 장치는 솔리드 스테이트 드라이브, 하드 디스크 드라이브, 메모리 카드, 실장 메모리 패키지 등과 같은 다양한 형태로 구현될 수 있다.
스토리지 장치가 전자 기기들에서 널리 사용되는 만큼, 스토리지 장치에 기계 학습 기반의 학습 또는 추론 기능을 구비하면, 기계 학습이 대부분의 응용들에 용이하게 채용될 수 있다.
그러니, 스토리지 장치는 전자 기기들에 사용자 데이터의 읽기 및 쓰기를 지원하는 고유한 목적을 갖는다. 스토리지 장치에 기계 학습 기능을 채용함으로써 사용자 데이터의 읽기 및 쓰기의 속도가 저하되면, 스토리지 장치의 고유한 목적의 달성이 저하되는 단점이 있다.
본 발명의 목적은 기계 학습의 기능을 구비하면서 사용자 데이터의 읽기 및 쓰기의 속도가 저하되는 것을 방지하는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 스토리지 장치는, 제1 사용자 영역 및 제1 객체 데이터를 저장하도록 구성되는 제1 객체 영역을 포함하는 제1 불휘발성 메모리 장치들, 제2 사용자 영역 및 제1 객체 데이터의 사본인 제2 객체 데이터를 저장하도록 구성되는 제2 객체 영역을 포함하는 제2 불휘발성 메모리 장치들, 그리고 외부의 호스트 장치의 액세스 요청들에 따라 제1 채널을 통해 제1 불휘발성 메모리 장치를 액세스하고, 그리고 외부의 호스트 장치의 요청에 따라 제2 채널을 통해 제2 불휘발성 메모리 장치를 액세스하도록 구성되는 제어기를 포함한다. 제어기는 외부의 호스트 장치의 제1 추론 요청에 따라, 제1 채널 및 제2 채널 중 더 차가운 채널을 통해 제1 객체 데이터 및 제2 객체 데이터 중 대응하는 객체 데이터를 읽도록 더 구성된다.
복수의 불휘발성 메모리 장치들 및 제어기를 포함하는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법은, 제어기가 외부의 호스트 장치로부터 액세스 요청들을 수신하는 단계, 액세스 요청들에 따라, 제어기가 채널들을 통해 복수의 불휘발성 메모리 장치들을 액세스하는 단계, 제어기가 외부의 호스트 장치로부터 추론 요청을 수신하는 단계, 제어기가 복수의 채널들 중에서 더 차가운 채널들 통해 복수의 불휘발성 메모리 장치들 중 적어도 하나의 대응하는 불휘발성 메모리 장치로부터 객체 데이터를 읽는 단계, 그리고 제어기가 추론 데이터에 대해 객체 데이터를 이용하여 추론을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는, 제1 사용자 영역 및 제1 가중치 데이터를 저장하도록 구성되는 제1 가중치 영역을 포함하는 제1 불휘발성 메모리 장치, 제2 사용자 영역 및 제1 가중치 데이터의 사본인 제2 가중치 데이터를 저장하도록 구성되는 제2 가중치 영역을 포함하는 제2 불휘발성 메모리 장치, 제1 채널을 통해 제1 불휘발성 메모리 장치를 액세스하는 제1 관리자, 제2 채널을 통해 제2 불휘발성 메모리장치를 액세스하는 제2 관리자, 외부의 호스트 장치의 액세스 요청들에 따라, 제1 불휘발성 메모리 장치 및 제2 불휘발성 메모리 장치를 액세스하기 위한 명령들을 생성하는 프로세서, 명령들을 순차적으로 저장하고, 명령들 중에서 제1 불휘발성 메모리 장치와 연관된 제1 명령들을 제1 관리자로 전송하고, 그리고 명령들 중에서 제2 불휘발성 메모리 장치와 연관된 제2 명령들을 제2 관리자로 전송하도록 구성되는 제1 큐, 외부의 호스트 장치로부터 수신되는 추론 요청들을 저장하고 그리고 저장된 추론 요청들을 순차적으로 출력하도록 구성되는 제2 큐, 제2 큐로부터 출력되는 추론 요청에 따라, 제1 큐를 참조하여 제1 채널 및 제2 채널 중 더 차가운 채널을 선택하고, 제1 가중치 데이터 및 제2 가중치 데이터 중 더 차가운 채널에 대응하는 가중치 데이터를 읽기 위한 명령을 제1 관리자 및 제2 관리자 중에서 더 차가운 채널에 대응하는 관리자에 전송하도록 구성되는 아비터, 그리고 대응하는 관리자에 읽혀진 대응하는 가중치 데이터를 이용하여 추론을 수행하도록 구성되는 뉴럴 프로세싱 유닛을 포함한다.
본 발명에 따르면, 사용자 데이터의 읽기 및 쓰기 부하에 기반하여 기계 학습을 위한 가중치 데이터를 읽을 목표 저장소가 선택된다. 따라서, 사용자 데이터의 읽기 및 쓰기의 속도가 감소되는 것을 방지하면서 기계 학습의 기능을 구비한 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 2는 주 프로세서가 참조하는 매핑 테이블의 예를 보여준다.
도 3은 스케줄러의 예를 보여준다.
도 4는 아비터가 참조하는 제2 매핑 테이블의 예를 보여준다.
도 5는 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 6은 제1 내지 제6 불휘발성 메모리 장치들에 두 개의 가중치 데이터들이 저장되는 예를 보여준다.
도 7은 도 6의 스케줄러가 참조하는 제2 매핑 테이블의 예를 보여준다.
도 8은 가중치 데이터가 서로 다른 특성을 갖는 저장 공간들에 저장되는 예를 보여준다.
도 9는 서로 다른 버전의 가중치 데이터들을 저장하는 스토리지 장치의 예를 보여준다.
도 10은 서로 다른 버전의 가중치 데이터들을 저장하는 스토리지 장치의 예를 보여준다.
도 11은 스토리지 장치가 가중치 데이터를 읽는 예를 보여준다.
도 12는 예시적인 불휘발성 메모리 장치를 보여주는 블록도이다.
도 13은 도 12의 메모리 블록들 중 하나의 메모리 블록의 예를 보여주는 회로도이다.
도 14는 스토리지 장치가 가중치 데이터를 불휘발성 메모리 장치에 기입하는 예를 보여준다.
도 15는 뉴럴 프로세서를 위한 전용의 제3 메모리 관리자 및 불휘발성 메모리 장치를 구비한 스토리지 장치의 예를 보여준다.
도 16은 본 발명의 실시 예에 따른 스토리지 장치가 패키지로 구현된 예를 보여준다.
도 17은 도 16의 패키지의 측면도를 보여준다.
도 18은 본 발명의 실시 예에 따른 스토리지 장치가 패키지로 구현된 다른 예를 보여준다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 제어기(110), 제1 내지 제3 불휘발성 메모리 장치들(120~140), 그리고 제4 내지 제6 불휘발성 메모리 장치들(150~170)을 포함할 수 있다. 제1 내지 제6 불휘발성 메모리 장치들(120~170)은, 예를 들어, 플래시 메모리 장치들, 상 변화 메모리 장치들, 자기 메모리 장치들, 강유전체 메모리 장치들, 저항성 메모리 장치들 등을 포함할 수 있다.
제어기(110)는 제1 채널(CH1)을 통해 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 연결될 수 있다. 제어기(110)는 제1 채널(CH1)의 제1 데이터 라인들(DL1)을 통해 제1 내지 제3 불휘발성 메모리 장치들에 공통으로 연결될 수 있다. 제1 데이터 라인들(DL1)은 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 명령 및 주소를 전송하고, 그리고 제1 내지 제3 불휘발성 메모리 장치들(120~140)과 데이터를 교환하는데 사용될 수 있다.
제어기(110)는 제1 채널(CH1)의 제11 내지 제13 제어 라인들(CL11~CL13)을 통해 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 제어 신호들을 전송할 수 있다. 예를 들어, 제11 내지 제13 제어 라인들(CL11~CL13) 중 일부 제어 라인들은 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 공통으로 연결되고, 대응하는 제어 신호들을 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 공통으로 제공할 수 있다. 예를 들어, 제11 내지 제13 제어 라인들(CL11~CL13) 중 일부 제어 라인들은 양방향 또는 역방향으로 제어 신호들을 전송할 수 있다.
제어기(110)는 제2 채널(CH2)을 통해 제4 내지 제6 불휘발성 메모리 장치들(150~170)에 연결될 수 있다. 제2 채널(CH2)은 제2 데이터 라인(DL2) 및 제21 내지 제23 제어 라인들(CL21~CL23)을 포함할 수 있다. 제2 데이터 라인(DL2)은 제1 데이터 라인(DL1)과 동등한 기능들을 수행하고, 제21 내지 제23 제어 라인들(CL21~CL23)은 제11 내지 제13 제어 라인들(CL11~CL13)과 동등한 기능들을 수행할 수 있다. 따라서, 중복되는 설명은 생략된다.
예시적으로, 제어기(110)는 동일한 채널에 연결된 불휘발성 메모리 장치들을 웨이들(WAYS)로 구별할 수 있다. 제1 내지 제3 불휘발성 메모리 장치들(120~140)은 제1 채널(CH1)의 제1 내지 제3 웨이들로 구별될 수 있다. 제4 내지 제6 불휘발성 메모리 장치들(140~170)은 제2 채널(CH2)의 제1 내지 제3 웨이들로 구별될 수 있다.
제어기(110)는 서로 다른 채널들(예를 들어, CH1 및 CH2)을 서로 독립적으로 액세스할 수 있다. 예를 들어, 제어기(110)는 제2 채널(CH2)이 액세스 중인지 또는 아닌지에 관계 없이, 제1 채널(CH1)에 대한 액세스를 수행할 수 있다.
제어기(110)는 외부의 호스트 장치의 액세스 요청에 따라 제1 내지 제6 불휘발성 메모리 장치들(120~170)에서 사용자 데이터의 읽기 및 쓰기를 수행할 수 있다. 사용자 데이터는 외부의 호스트 장치에 의해 읽기 또는 쓰기 요청되는(또는 요청될 수 있는) 데이터일 수 있다. 즉, 사용자 데이터는 외부의 호스트 장치가 스토리지 장치(100)에서 액세스할 수 있는 데이터일 수 있다. 사용자 데이터는 외부의 호스트 장치의 운영 체제, 응용 등의 데이터를 포함할 수 있다.
제어기(110)는 외부의 호스트 장치의 추론(또는 학습) 요청에 따라, 기계 학습에 기반한 추론(또는 학습)을 수행할 수 있다. 기계 학습에 기반한 추론(또는 학습)을 수행하기 위해, 예를 들어 신경망의 구현을 위해 필요한 가중치 데이터(또는 시냅스 데이터)가 필요하다. 제어기(110)는 가중치 데이터를 제1 내지 제6 불휘발성 메모리 장치들(120~170)에 저장하고, 필요한 때에 읽을 수 있다.
제어기(110)는 제1 채널(CH1)의 제1 내지 제3 불휘발성 메모리 장치들(120~140)의 저장 공간을 사용자 영역(121, 131, 141) 및 가중치 영역(122)으로 구분할 수 있다. 제어기(110)는 가중치 영역(122)을 외부의 호스트 장치가 임의로 액세스할 수 없는 영역으로 지정할 수 있다. 제어기(110)는 사용자 영역(121, 131, 141)의 저장 공간을 외부의 호스트 장치에 액세스 가능한 저장 공간으로 보고할 수 있다.
예시적으로, 제어기(110)는 제1 내지 제3 불휘발성 메모리 장치들(120~140)의 저장 공간 중에서 오버프로비전(overprovision) 영역, 예비(reserve) 영역 등과 같이 스토리지 장치(100)의 성능 향상을 위해 필요한 영역, 그리고 메타 영역과 같이 스토리지 장치(100)의 관리를 위해 필요한 영역을 더 제외한 나머지 공간을 사용자 영역(121, 131, 141)의 저장 공간으로 지정할 수 있다. 이와 연관된 설명들은 아래에서 생략되지만, 기저에 존재하는 것으로 여겨진다.
예시적으로, 제어기(110)는 제1 불휘발성 메모리 장치(120)에 가중치 영역(122)을 지정하는 것으로 도시되지만, 제어기(110)는 임의의 다른 불휘발성 메모리 장치, 또는 둘 이상의 불휘발성 메모리 장치들에 분산하여 가중치 영역을 지정할 수 있다.
제1 채널(CH1)에서와 마찬가지로, 제어기(110)는 제2 채널(CH2)의 제4 내지 제6 불휘발성 메모리 장치들(150~170)의 저장 공간에서 사용자 영역(151, 161, 171) 및 가중치 영역(152)으로 구분할 수 있다. 제어기(110)는 제2 채널(CH2)의 임의의 하나의 불휘발성 메모리 장치 또는 둘 이상의 불휘발성 메모리 장치들에서 가중치 영역을 지정할 수 있다.
제어기(110)는 제1 채널(CH1)의 가중치 영역(122)에 제1 가중치 데이터(WD1)를 저장하고, 제2 채널(CH2)의 가중치 영역(152)에 동일한 제1 가중치 데이터(WD1)를 저장할 수 있다. 제1 채널(CH1)의 제1 가중치 데이터(WD1) 및 제2 채널(CH2)의 제1 가중치 데이터(WD1)는 서로가 서로의 사본(replica)일 수 있다.
외부의 호스트 장치의 액세스 요청이 제1 채널(CH1)에 집중되고, 그리고 제1 가중치 데이터(WD1)의 읽기가 필요할 때, 제어기(110)는 제2 채널(CH2)의 가중치 영역(152)으로부터 제1 가중치 데이터(WD1)를 읽을 수 있다. 반대로, 외부의 호스트 장치의 액세스 요청에 제2 채널(CH2)에 집중되고, 그리고 제1 가중치 데이터(WD1)의 읽기가 필요할 때, 제어기(110)는 제1 채널(CH1)의 가중치 영역(122)으로부터 제1 가중치 데이터(WD1)를 읽을 수 있다.
제1 가중치 데이터(WD1)의 읽기가 필요할 때, 제어기(110)는 더 차가운 채널, 즉 외부의 호스트 장치의 액세스 요청이 덜 존재(또는 집중)하는 채널로부터 제1 가중치 데이터(WD1)를 읽도록 구성될 수 있다. 따라서, 제어기(110)는 외부의 호스트 장치의 액세스 요청의 수행 속도가 감소(또는 레이턴시가 증가)하는 것을 방지하면서, 기계 학습 기반의 추론(또는 학습)을 지원할 수 있다.
제어기(110)는 호스트 인터페이스(111), 버스(112), 랜덤 액세스 메모리(113), 주 프로세서(114), 뉴럴 프로세서(115), 스케줄러(116), 제1 메모리 관리자(117), 그리고 제2 메모리 관리자(118)를 포함할 수 있다.
호스트 인터페이스(111)는 외부의 호스트 장치로부터 요청을 수신할 수 있다. 수신된 요청이 액세스 요청일 때, 호스트 인터페이스(111)는 액세스 요청을 주 프로세서(114)에 전달할 수 있다. 수신된 요청이 추론(또는 학습)(이하에서, '학습'의 용어는 생략될 수 있지만, '추론'의 용어는 '학습'의 용어와 등가적으로 치환될 수 있음) 요청일 때, 호스트 인터페이스(111)는 추론 요청을 뉴럴 프로세서(115)에 전달할 수 있다
액세스 요청이 쓰기 요청일 때, 액세스 요청은 쓰기 동작을 위한 사용자 데이터를 수반할 수 있다. 호스트 인터페이스(111)는 사용자 데이터를 랜덤 액세스 메모리(113)에 저장하고, 저장 위치를 주 프로세서(114)에 알릴 수 있다. 액세스 요청이 읽기 요청일 때, 호스트 인터페이스(111)는 제1 내지 제6 불휘발성 메모리 장치들(120~170) 또는 그들의 일부로부터 읽혀지고 이후에 랜덤 액세스 메모리(113)에 저장된 데이터를 외부의 호스트 장치에 출력할 수 있다.
추론 요청은 추론 데이터(또는 등가적으로 학습 데이터)를 수반할 수 있다. 호스트 인터페이스(111)는 추론 데이터를 랜덤 액세스 메모리(113)에 저장하고, 저장 위치를 뉴럴 프로세서(115)에 알릴 수 있다. 호스트 인터페이스(111)는 랜덤 액세스 메모리(113)에 저장된 추론의 결과를 외부의 호스트 장치에 출력할 수 있다.
버스(112)는 제어기(110) 내의 구성 요소들 사이에 통신 채널들을 제공할 수 있다. 별도로 다르게 언급되지 않으면, 제어기(110) 내의 구성 요소들 사이의 통신은 버스(112)를 통할 수 있다. 랜덤 액세스 메모리(113)는 제어기(110)의 주 메모리, 시스템 메모리, 동작 메모리, 버퍼 메모리, 캐시 메모리, 레지스터 등으로 사용될 수 있다.
주 프로세서(114)는 호스트 인터페이스(111)로부터 스토리지 장치(100)의 저장 공간에 대한 액세스 요청을 수신할 수 있다. 액세스 요청은 논리 주소(LBA)에 기반할 수 있다. 주 프로세서(114)는 외부의 호스트 장치의 논리 주소(LBA)에 기반한 액세스 요청을 제1 내지 제6 불휘발성 메모리 장치들(120~170)의 물리 주소(PBA)에 기반한 명령 및 주소로 변환할 수 있다.
예를 들어, 주 프로세서(114)는 제1 내지 제6 불휘발성 메모리 장치들(120~170)의 메타 영역에 보관되고, 랜덤 액세스 메모리(113)에 로드되는 매핑 테이블을 이용하여 논리 주소(LBA)에 기반한 액세스 요청을 물리 주소(PBA)에 기반한 명령 및 주소로 변환할 수 있다.
도 2는 주 프로세서(114)가 참조하는 매핑 테이블의 예를 보여준다. 도 1 및 도 2를 참조하면, 매핑 테이블은 논리 주소(LBA)로서 제1 내지 제n 논리 주소들(LBA1~LBAn)을 포함하고, 물리 주소(PBA)로서 제1 내지 제n 논리 주소들(LBA1~LBAn)에 각각 대응하는 제1 내지 제n 물리 주소들(PBA1~PBAn)을 포함할 수 있다.
매핑 테이블은 메타 데이터(MD)로서 제1 내지 제n 물리 주소들(PBA1~PBAn)에 각각 대응하는 제1 내지 제n 메타 데이터(MD1~MDn)를 더 포함할 수 있다. 제1 내지 제n 메타 데이터(MD1~MDn)의 각각은, 예를 들어, 프로그램 및 소거 횟수, 배드 영역의 여부, 프로그램 또는 소거의 타임스탬프, 읽기 횟수 등과 같은 제1 내지 제6 불휘발성 메모리 장치들(120~170)의 물리적 저장 공간들의 특색들을 보여주는 다양한 정보를 포함할 수 있다.
다시 도 1을 참조하면, 주 프로세서(114)는 변환된 명령 및 주소를 스케줄러(116)로 전달할 수 있다. 예를 들어, 변환된 명령 및 주소는 스케줄러(116)의 제1큐(Q1)에 인큐될 수 있다.
뉴럴 프로세서(115)는 호스트 인터페이스(111)를 통해 수신된 추론 요청에 제1 가중치 데이터(WD1)의 읽기를 필요로 하는지 판단할 수 있다. 추론 요청이 제1 가중치 데이터(WD1)의 읽기를 필요로 할 때, 뉴럴 프로세서(115)는 제1 가중치 데이터(WD1)를 읽기 위한 가중치 데이터 읽기 요청을 생성할 수 있다.
예를 들어, 제1 내지 제6 불휘발성 메모리 장치들(120~170)에 제1 가중치 데이터(WD1)가 저장됨에 따라, 제1 가중치 데이터(WD1)를 식별하는 가상 주소가 지정되고, 가상 주소가 뉴럴 프로세서(115)에 알려질 수 있다. 뉴럴 프로세서(115)는 가상 주소를 이용하여 가중치 데이터 읽기 요청을 생성할 수 있다. 가중치 데이터 읽기 요청은 스케줄러(116)의 제2큐(Q2)에 인큐될 수 있다.
스케줄러(116)는 주 프로세서(114)로부터의 읽기 또는 쓰기 명령 및 주소가 인큐되는 제1큐(Q1), 그리고 뉴럴 프로세서(115)로부터의 가중치 데이터 읽기 명령 및 주소가 인큐되는 제2큐(Q2)를 포함할 수 있다. 스케줄러(116)는 제1큐(Q1) 내의 읽기 또는 쓰기 명령들의 우선 순위들에 기반한 스케줄링(예를 들어, 위치 변경)을 수행할 수 있다.
스케줄러(116)는 제1큐(Q1)에 계류된(pending) 명령들 및 주소들에 기반하여, 제1 내지 제6 불휘발성 메모리 장치들(120~170)의 채널들, 즉 제1 채널(CH1) 및 제2 채널(CH2) 중에서 어느 채널이 더 뜨겁고 어느 채널이 더 차가운지 판단할 수 있다.
예를 들어, 제1큐(Q1)에 계류된 명령들(읽기 또는 쓰기 명령들과 같은 다양한 명령들을 포함하여) 및 주소들 중에서 제1 채널(CH1)에 대한 명령들 및 주소들의 수가 제2 채널(CH2)에 대한 명령들 및 주소들의 수보다 많을 때, 제1 채널(CH1)이 더 뜨거운 채널이고, 그리고 제2 채널(CH2)이 더 차가운 채널일 수 있다.
반대로, 제1큐(Q1)에 계류된 명령들 및 주소들 중에서 제1 채널(CH1)에 대한 명령들 및 주소들의 수가 제2 채널(CH2)에 대한 명령들 및 주소들의 수보다 적을 때, 제1 채널(CH1)이 더 차가운 채널이고, 그리고 제2 채널(CH2)이 더 뜨거운 채널일 수 있다.
스케줄러(116)는 제1 채널(CH1) 및 제2 채널(CH2)의 뜨거움과 차가움을 반영하여, 제2큐(Q2)에 계류된 뉴럴 프로세서(115)로부터의 명령 및 주소를 제1 내지 제6 불휘발성 메모리 장치들(120~170)에 대한 명령 및 주소로 변환(또는 생성)할 수 있다.
예를 들어, 스케줄러(116)는 뉴럴 프로세서(115)로부터의 명령 및 주소를 더 차가운 채널에 대한 명령 및 주소로 변환함으로써, 스토리지 장치(100)가 외부의 호스트 장치로부터의 명령들을 처리하는 레이턴시가 증가하는 것을 방지하면서 뉴럴 프로세서(115)로부터의 명령을 처리할 수 있다.
스케줄러(116)는 제1큐(Q1)에 계류된 명령들 및 주소들, 그리고 제2큐(Q2)로부터 생성되는 명령들 및 주소들을 제1 메모리 관리자(117) 및 제2 메모리 관리자(118)에 각각 전달할 수 있다.
제1 메모리 관리자(117)는 스케줄러(116)로부터 전달되는 명령들 및 주소들을 제1 채널(CH1)의 제11 내지 제13 제어 라인들(CL11~CL13)을 통해 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 명령들 및 주소들을 전송할 수 있다. 제1 메모리 관리자(117)는 명령들 및 주소들에 응답하여 랜덤 액세스 메모리(113)에 저장된 데이터를 제1 데이터 라인들(DL1)을 통해 제1 내지 제3 불휘발성 메모리 장치들(120~140)에 전송할 수 있다.
또는, 제1 메모리 관리자(117)는 명령들 및 주소들에 응답하여 제1 데이터 라인들(DL1)을 통해 제1 내지 제3 불휘발성 메모리 장치들(120~140)로부터 수신되는 데이터를 랜덤 액세스 메모리(113)에 저장할 수 있다. 제2 메모리 관리자(118)는 제1 메모리 관리자(117)가 수행하는 것과 동일한 기능들을 제2 채널(CH2)에 대해 수행할 수 있다.
예시적으로, 도 1에서 스토리지 장치(100)는 두 개의 채널들을 포함하는 것으로 설명되었다. 그러나 스토리지 장치(100)는 셋 이상의 채널들을 포함할 수 있다. 스토리지 장치(100)는 셋 이상의 채널들의 가중치 영역들에 동일한 가중치 데이터를 저장할 수 있다. 또는, 스토리지 장치(100)의 셋 이상의 채널들 중 적어도 하나의 채널은 가중치 영역을 갖지 않도록 설정될 수 있다.
예시적으로, 제1 내지 제6 불휘발성 메모리 장치들(120~170)은 플래시 메모리 장치들과 같이 순차적인 저장 공간들에 대한 액세스를 더 빠르게 처리하는 메모리 장치들을 포함할 수 있다. 가중치 영역들(122, 152)은 물리적으로 순차적인 주소들(예를 들어, 제1 내지 제6 불휘발성 메모리 장치들(120~170)의 물리 주소들)에 대응하는 저장 공간들로 지정되어, 제1 가중치 데이터(WD1)에 대한 더 빠른 액세스를 지원할 수 있다.
도 3은 스케줄러(116)의 예를 보여준다. 도 1 및 도 3을 참조하면, 스케줄러(116)는 제1큐(Q1), 제2큐(Q2), 아비터(ABT), 제1 멀티플렉서(M1), 그리고 제2 멀티플렉서(M2)를 포함할 수 있다.
제1큐(Q1)는 주 프로세서(114)로부터의 명령들 및 주소들을 저장할 수 있다. 제1큐(Q1)의 주소들의 각각은 채널 정보(CH), 웨이 정보(WAY), 그리고 잔여 주소(RMA)를 포함하는 주소를 포함할 수 있다.
제2큐(Q2)는 뉴럴 프로세서(115)로부터의 명령들 및 주소들을 저장할 수 있다. 제2큐(Q2)의 주소들의 각각은 가중치 데이터(예를 들어, 제1 가중치 데이터(WD1))를 가리키는 가상 주소(VA)를 포함할 수 있다.
아비터(ABT)는 선입선출 방식, 또는 우선순위 관리 방식에 기반하여 제2큐(Q2)에 계류된 명령들 및 주소들 중 하나의 쌍을 가져올 수 있다. 아비터(ABT)는 제1큐(Q1)의 주소들의 채널 정보(CH)를 참조하여 더 뜨거운 채널과 더 차가운 채널을 판단할 수 있다.
아비터(ABT)는 제2큐(Q2)로부터 가져온 명령 및 주소를 더 차가운 채널에 대한 명령 및 주소로 변환할 수 있다. 예를 들어, 아비터(ABT)는 내부의 저장소 또는 외부의 저장소(예를 들어, 랜덤 액세스 메모리(113))에 저장된 제2 매핑 테이블을 이용하여, 제2큐(Q2)로부터 가져온 명령을 더 차가운 채널에 대한 명령 및 주소로 변환할 수 있다.
도 4는 아비터(ABT)가 참조하는 제2 매핑 테이블의 예를 보여준다. 도 1, 도 3 및 도 4를 참조하면, 제2 매핑 테이블은 가상 주소(VA), 그리고 가상 주소(VA)에 매핑된 물리 주소(PBA)의 정보를 포함할 수 있다. 예시적으로, 가상 주소(VA)는 제1 가중치 데이터(WD1)를 가리키는 제1 가상 주소(VA1)를 포함할 수 있다. 제1 가상 주소(VA1)는 제1 가중치 데이터(WD1)가 저장된 가중치 영역들(122, 152)을 가리키는 값들의 범위 또는 하나의 값(예를 들어, 식별 번호)일 수 있다.
제2 매핑 테이블은 제1 가상 주소(VA1)에 대응하는 둘 이상의 물리 주소들, 예를 들어 제a 물리 주소(PBAa) 및 제b 물리 주소(PBAb)를 포함할 수 있다. 제a 물리 주소(PBAa) 및 제b 물리 주소(PBAb)는 각각 가중치 영역들(122, 152)을 가리키는 값들의 범위 또는 적어도 하나의 값(예를 들어, 시작 또는 마지막 주소 그리고/또는 가중치 영역들(122, 152) 각각의 사이즈 값)일 수 있다.
예를 들어, 제a 물리 주소(PBAa)는 제1 채널(CH1)의 제1 불휘발성 메모리 장치(120)의 가중치 영역(122)에 대응하며, 제1 채널(CH1)을 가리키는 정보, 제1 웨이(WAY1)를 가리키는 정보, 그리고 제1 불휘발성 메모리 장치(120) 내의 가중치 영역(122)의 위치를 가리키는 제1 잔여 주소(RMA1)를 포함할 수 있다.
제b 물리 주소(PBAb)는 제2 채널(CH2)의 제4 불휘발성 메모리 장치(150)의 가중치 영역(152)에 대응하며, 제2 채널(CH2)을 가리키는 정보, 제1 웨이(WAY1)를 가리키는 정보, 그리고 제4 불휘발성 메모리 장치(150) 내의 가중치 영역(152)의 위치를 가리키는 제2 잔여 주소(RMA2)를 포함할 수 있다.
아비터(ABT)는 제1 채널(CH1)이 더 차가운 채널일 때 제a 물리 주소(PBAa)를 선택하고, 그리고 제2 채널(CH2)이 더 차가운 채널일 때 제b 물리 주소(PBAb)를 선택할 수 있다. 아비터(ABT)는 선택된 물리 주소에 기반한 명령들 및 주소들을 생성할 수 있다.
다시 도 1 및 도 3을 참조하면, 아비터(ABT)가 생성(또는 변환)한 주소는 제1큐(Q1)의 주소와 마찬가지로 채널 정보(CH), 웨이 정보(WAY), 그리고 잔여 주소(RMA)를 포함할 수 있다.
제1 멀티플렉서(M1)는 제1큐(Q1)로부터 가져온 명령 및 주소의 채널 정보(CH)에 기반하여, 명령 및 주소의 쌍을 제1 메모리 관리자(117) 및 제2 메모리 관리자(118) 중 하나로 전달할 수 있다.
제2 멀티플렉서(M2)는 아비터(ABT)로부터 출력되는 명령 및 주소의 채널 정보(CH)에 기반하여, 명령 및 주소의 쌍을 제1 메모리 관리자(117) 및 제2 메모리 관리자(118) 중 하나로 전달할 수 있다.
예시적으로, 아비터(ABT)는 제2 멀티플렉서(M2)로 명령 및 주소의 쌍을 전송하는 대신 제1 멀티플렉서(M1)로 명령 및 주소의 쌍을 전송하도록 변경될 수 있으며, 따라서, 스케줄러(116)에서 제2 멸티플렉서(M2)는 생략될 수 있다.
예시적으로, 도 1 및 도 3에서, 두 개의 채널들(CH1, CH2)에 대응하는 명령 및 주소의 쌍들이 제1큐(Q1)에 공통으로 인큐되는 것으로 설명되었다. 그러나 제1 채널(CH1)의 명령 및 주소의 쌍들을 위한 큐와 제2 채널(CH2)의 명령 및 주소의 쌍들을 위한 큐가 별도로 제공될 수 있다.
아비터(ABT)는 뉴럴 프로세서(115)로부터의 명령 및 주소의 쌍을 더 차가운 채널에 대한 명령 및 주소의 쌍(들)으로 변환하고, 그리고 변환된 명령 및 주소의 쌍(들)을 더 차가운 채널에 할당된 명령 및 주소의 쌍들의 큐에 인큐할 수 있다. 즉, 외부의 호스트 장치의 액세스 요청에 의해 생성된 명령 및 주소의 쌍들과 뉴럴 프로세서(115)의 요청에 의해 생성된 명령 및 주소의 쌍들이 동일한 큐에서 관리될 수 있다.
예시적으로, 변환된 명령 및 주소의 쌍(들)이 인큐될 때, 변환된 명령 및 주소의 쌍(들)은 액세스 요청에 의해 생성된 명령 및 주소의 쌍들의 우선 순위들보다 더 낮은, 더 높은 또는 실질적으로 동일한 우선 순위를 갖도록 지정될 수 있다.
도 5는 스토리지 장치(100)의 동작 방법을 보여주는 순서도이다. 예시적으로, 스토리지 장치(100)가 뉴럴 프로세서(115)와 연관된 동작들을 수행하는 예가 도 5에 도시된다. 도 5에 도시된 것과 별도로(독립적으로 또는 병렬로), 스토리지 장치(100)는 외부의 호스트 장치의 액세스 요청에 따라 읽기 동작, 쓰기 동작 또는 소거 동작을 수행할 수 있다.
도 1 및 도 5를 참조하면, S110 단계에서, 스토리지 장치(100)는 외부의 호스트 장치로부터 뉴럴 프로세싱 요청을 수신할 수 있다. 뉴럴 프로세싱 요청은 외부의 호스트 장치가 통상적인 읽기 동작, 쓰기 동작 및 소거 동작과 다른 뉴럴 프로세서(115)와 연관된 동작을 스토리지 장치(100)에 요구할 수 있다.
예를 들어, 뉴럴 프로세싱 요청은 제1 가중치 데이터(WD1)를 가중치 영역(122, 152)에 기입(또는 갱신)하기 위한 요청, 제1 가중치 데이터(WD1)를 읽어 뉴럴 프로세서(115)에 로드하기 위한 요청, 추론 데이터(또는 샘플 데이터)의 입력(또는 저장)을 위한 요청, 추론(또는 학습) 요청, 추론(또는 학습)의 결과를 획득하기 위한 요청, 그리고 앞서 언급된 기능들 중 적어도 두 개의 조합들을 포함하는 요청을 포함할 수 있다. 뉴럴 프로세싱 요청은 뉴럴 프로세서(115)에 전달될 수 있다.
S120 단계에서, 뉴럴 프로세서(115)는 뉴럴 프로세싱 요청이 가중치 데이터의 읽기를 필요로 하는지 판단할 수 있다. 예를 들어, 프로세싱 요청에 따라 제1 내지 제6 불휘발성 메모리 장치(120~170)의 가중치 영역(122, 152)에 저장된 제1 가중치 데이터(WD1)를 뉴럴 프로세서(115)에 로드하여야 할 때, 제1 가중치 데이터(WD1)의 읽기가 필요한 것으로 판단될 수 있다.
제1 가중치 데이터(WD1)의 읽기가 필요하지 않을 때, S130 단계에서, 뉴럴 프로세서(115)는 요청된 동작을 수행할 수 있다. 제1 가중치 데이터(WD1)의 읽기가 필요할 때, 뉴럴 프로세서(115)는 제1 가중치 데이터(WD1)를 읽기 위한 명령 및 주소를 생성하고, 그리고 명령 및 주소를 제2큐(Q2)에 인큐할 수 있다.
S140 단계에서, 스케줄러(116)는 제1큐(Q1)를 검사하고, 제1 채널(CH1) 및 제2 채널(CH2) 중에서 더 차가운 채널을 판단할 수 있다. 스케줄러(116)는 더 차가운 채널에 대응하는 가중치 데이터를 읽기의 대상으로 선택할 수 있다.
S150 단계에서, 스케줄러(116)는 선택된 가중치 데이터에 대한 읽기 명령 및 주소의 쌍을 생성할 수 있다. S160 단계에서, 스케줄러(116)는 생성된 읽기 명령 및 주소의 쌍을 선택된 채널의 메모리 관리자로 전송함으로써, 제1 가중치 데이터(WD1)를 읽을 수 있다.
읽혀진 제1 가중치 데이터(WD1)는 뉴럴 프로세서(115)로 전달될 수 있다. 예를 들어, 선택된 채널의 메모리 관리자는 제1 가중치 데이터(WD1)를 뉴럴 프로세서(115)로 바로 전송할 수 있다. 다른 예로서, 선택된 채널의 메모리 관리자는 제1 가중치 데이터(WD1)를 랜덤 액세스 메모리(113)의 지정된 주소에 저장할 수 있다. 뉴럴 프로세서(115)는 랜덤 액세스 메모리(113)의 지정된 주소의 저장소를 읽음으로써, 제1 가중치 데이터(WD1)를 획득할 수 있다.
도 6은 제1 내지 제6 불휘발성 메모리 장치들(120~170)에 두 개의 가중치 데이터들(WD1, WD2)이 저장되는 예를 보여준다. 도 6을 참조하면, 제1 채널(CH1)의 제1 불휘발성 메모리 장치(120)의 가중치 영역(122)과 제2 채널(CH2)의 제4 불휘발성 메모리 장치(150)의 가중치 영역(152)에 제1 가중치 데이터(WD1)가 각각 저장될 수 있다.
또한, 제1 채널(CH1)의 제2 불휘발성 메모리 장치(130)의 가중치 영역(132)과 제2 채널(CH2)의 제5 불휘발성 메모리 장치(160)의 가중치 영역(162)에 제2 가중치 데이터(WD2)가 각각 저장될 수 있다.
제1 가중치 데이터(WD1) 및 제2 가중치 데이터(WD2)는 서로 다른 모델들에서 사용되는 가중치 데이터일 수 있다. 예를 들어, 제1 가중치 데이터(WD1)는 영상 인식 모델을 위한 가중치 데이터일 수 있다. 뉴럴 프로세서(115)에 제1 가중치 데이터(WD1)가 로드된 때에, 뉴럴 프로세서(115)는 영상 인식의 추론(또는 학습)을 수행할 수 있다.
예를 들어, 제2 가중치 데이터(WD2)는 음성 인식 모델을 위한 가중치 데이터일 수 있다. 뉴럴 프로세서(115)에 제2 가중치 데이터(WD2)가 로드된 때에, 뉴럴 프로세서(115)는 음성 인식의 추론(또는 학습)을 수행할 수 있다.
제1 내지 제6 불휘발성 메모리 장치들(120~170)에 둘 이상의 모델들에 대응하는 제1 가중치 데이터(WD1) 및 제2 가중치 데이터(WD2)가 저장된 때에, 외부의 호스트 장치의 요청에 따라 모델이 변경될 때마다 가중치 데이터의 읽기가 필요할 수 있다. 가중치 데이터의 읽기가 발생하는 횟수가 증가하여도, 본 발명의 실시 예에 따른 스토리지 장치(100)는 외부의 호스트 장치의 액세스의 레이턴시가 증가하는 것을 방지할 수 있다.
예시적으로, 제1 가중치 데이터(WD1) 및 제2 가중치 데이터(WD2)가 서로 다른 불휘발성 메모리 장치들의 가중치 영역들에 저장된 것으로 도시되었다. 그러나 제1 가중치 데이터(WD1) 및 제2 가중치 데이터(WD2)는 동일한 불휘발성 메모리 장치 내의 하나의 가중치 영역에 함께 저장될 수 있다.
도 7은 도 6의 스케줄러(116)가 참조하는 제2 매핑 테이블의 예를 보여준다. 도 4의 제2 매핑 테이블과 비교하면, 도 7의 제2 매핑 테이블은 제1 가중치 데이터(WD1)를 가리키는 제1 가상 주소(VA1)의 매핑 정보에 더하여, 제2 가중치 데이터(WD2)를 가리키는 제2 가상 주소(VA2)의 매핑 정보를 더 포함할 수 있다.
제2 가상 주소(VA2)는 제c 물리 주소(PBAc) 및 제d 물리 주소(PBAd)에 매핑될 수 있다. 제c 물리 주소(PBAc)는 제1 채널(CH1)의 정보, 제2 웨이(WAY2)의 정보, 그리고 제2 불휘발성 메모리 장치(130)의 가중치 영역(132)을 가리키는 제3 잔여 주소(RMA3)를 포함할 수 있다. 제d 물리 주소(PBAd)는 제2 채널(CH2)의 정보, 제2 웨이(WAY2)의 정보, 그리고 제5 불휘발성 메모리 장치(160)의 가중치 영역(162)을 가리키는 제4 잔여 주소(RMA4)를 포함할 수 있다.
뉴럴 프로세서(115)가 제1 가상 주소(VA)의 읽기 명령 및 주소를 생성할 때, 스케줄러(116)는 제a 물리 주소(PBAa) 및 제b 물리 주소(PBAb) 중에서 더 차가운 채널에 대응하는 물리 주소를 선택하고, 그리고 선택된 물리 주소에 기반하여 읽기 명령 및 주소의 쌍을 생성할 수 있다.
뉴럴 프로세서(115)가 제2 가상 주소(VA)의 읽기 명령 및 주소를 생성할 때, 스케줄러(116)는 제c 물리 주소(PBAc) 및 제d 물리 주소(PBAd) 중에서 더 차가운 채널에 대응하는 물리 주소를 선택하고, 그리고 선택된 물리 주소에 기반하여 읽기 명령 및 주소의 쌍을 생성할 수 있다.
도 8은 가중치 데이터(WD1)가 서로 다른 특성을 갖는 저장 공간들에 저장되는 예를 보여준다. 도 8을 참조하면, 제1 및 제4 불휘발성 메모리 장치들(120, 150)의 가중치 영역(122, 152)의 메모리 셀들은 삼중 레벨 셀들(TLC)로 지정될 수 있다. 제2 및 제5 불휘발성 메모리 장치들(130, 160)의 가중치 영역(132, 162)의 메모리 셀들은 이중 레벨 셀들(MLC)로 지정될 수 있다. 제3 및 제6 불휘발성 메모리 장치들(140, 170)의 가중치 영역(142, 172)의 메모리 셀들은 단일 레벨 셀들(SLC)로 지정될 수 있다.
예시적으로, 각 채널의 삼중 레벨 셀들의 가중치 영역, 이중 레벨 셀들의 가중치 영역, 그리고 단일 레벨 셀들의 가중치 영역은 제1 가중치 데이터(WD1)의 사본들을 동일하게 저장하도록 구성될 수 있다. 선택된 채널의 업무 부하, 예를 들어 계류중인 명령들의 수에 따라, 선택된 채널의 가중치 영역들 중에서 적절한 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)의 가중치 영역이 선택될 수 있다.
예를 들어, 단일 레벨 셀들(SLC)은 하나의 페이지의 데이터의 읽기를 가장 빠른 속도로 지원할 수 있다. 이중 레벨 셀들(MLC)은 단일 레벨 셀들(SLC)보다 더 긴 읽기 시간을 필요로 하되, 더 많은(예를 들어, 두 배의) 데이터를 한 번의 읽기 명령에 응답하여 제공할 수 있다. 삼중 레벨 셀들(TLC)은 이중 레벨 셀들(MLC)보다 더 긴 읽기 시간을 필요로 하되, 더 많은(예를 들어, 1.5배의) 데이터를 한 번의 읽기 명령에 응답하여 제공할 수 있다.
제어기(110)가 제1 내지 제6 불휘발성 메모리 장치들(120~170)로부터 데이터를 읽기 위해 필요한 시간, 예를 들어, 읽기 명령 및 주소를 전송하고, 읽기 동작을 수행하고, 직접 메모리 액세스(DMA)를 프로그램하고, 그리고 읽혀진 데이터를 가져오는 단계들의 각각에 필요한 시간들은 스토리지 장치(100)의 구성 요소들의 특성들 및 공정에 따라 달라질 수 있다.
스케줄러(116)는 스토리지 장치(100)의 특성을 반영하여, 업무 부하에 따라 선호되는 가중치 영역의 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)을 정책으로 저장할 수 있다. 스케줄러(116)는 선택된 채널(즉, 더 차가운 채널)의 업무 부하 및 정책에 기반하여 적절한 특성의 가중치 영역을 선택할 수 있다.
도 4 및 도 7을 참조하여 설명된 바와 같이, 스케줄러(116)는 제2 매핑 테이블을 참조할 수 있다. 제2 매핑 테이블은 하나의 가중치 데이터를 가리키는 하나의 가상 주소에 서로 다른 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)을 갖는 가중치 영역들의 물리 주소들을 매핑할 수 있다.
예시적으로, 도 6을 참조하여 설명된 바와 같이, 둘 이상의 서로 다른 가중치 데이터들이 제1 채널 및 제2 채널의 서로 다른 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)을 갖는 가중치 영역들에 각각 저장될 수 있다. 예시적으로, 서로 다른 특성을 갖는 가중치 영역들은 하나의 불휘발성 메모리 장치에 지정될 수 있다.
도 9는 서로 다른 버전의 가중치 데이터들을 저장하는 스토리지 장치(200)의 예를 보여준다. 도 9를 참조하면, 스토리지 장치(200)는 제어기(210) 및 제1 내지 제6 불휘발성 메모리 장치들(220~270)을 포함할 수 있다.
제어기(210)는 호스트 인터페이스(211), 버스(212), 랜덤 액세스 메모리(213), 주 프로세서(214), 뉴럴 프로세서(215), 스케줄러(216), 제1 메모리 관리자(217), 제2 메모리 관리자(218), 그리고 양자화기(219)를 포함할 수 있다. 도 1의 제어기(110)와 비교하면, 제어기(210)는 양자화기(219)를 더 포함할 수 있다. 중복되는 구성 요소들에 대한 설명은 생략된다.
제어기(210)는 제1 채널(CH1)의 제1 내지 제3 불휘발성 메모리 장치들(220~240)에 사용자 영역(221, 231, 241) 및 가중치 영역(222, 232, 242)을 지정할 수 있다. 제어기(210)는 또한 제2 채널(CH2)의 제4 내지 제6 불휘발성 메모리 장치들(250~270)에 사용자 영역(251, 261, 271) 및 가중치 영역(252, 262, 272)을 지정할 수 있다.
제1 채널(CH1)의 제1 불휘발성 메모리 장치(220)의 가중치 영역(222)에 제1 가중치 데이터(WD1)가 저장되고, 제2 및 제3 불휘발성 메모리 장치들(230, 240)의 가중치 영역들(232, 242)에 제1 가중치 데이터(WD1)의 열화 버전들(WD1a, WD1b)이 저장될 수 있다.
마찬가지로, 제2 채널(CH2)의 제4 불휘발성 메모리 장치(250)의 가중치 영역(252)에 제1 가중치 데이터(WD1)가 저장되고, 제5 및 제6 불휘발성 메모리 장치들(260, 270)의 가중치 영역들(262, 272)에 제1 가중치 데이터(WD1)의 열화 버전들(WD1a, WD1b)이 저장될 수 있다.
열화 버전들(WD1a, WD1b)은 제1 가중치 데이터(WD1)가 양자화기(219)에 의해 양자화된 버전일 수 있다. 예를 들어, 외부의 호스트 장치에 의해 제1 가중치 데이터(WD1)가 스토리지 장치(200)에 기입될 때, 양자화기(219)는 제1 가중치 데이터(WD1)의 열화 버전들을 생성할 수 있다. 제어기(110)는 제1 가중치 데이터(WD1) 및 양자화기(219)에 의해 생성된 열화 버전들(WD1a, WD1b)을 가중치 영역(222, 232, 242, 252, 262, 272)에 저장할 수 있다.
다른 예로서, 열화 버전들(WD1a, WD1b)은 외부의 호스트 장치에 의해 생성되고, 그리고 외부의 호스트 장치로부터 수신될 수 있다. 제어기(210)는 외부의 호스트 장치로부터 수신되는 제1 가중치 데이터(WD1) 및 열화 버전들(WD1a, WD1b)을 가중치 영역(222, 232, 242, 252, 262, 272)에 저장할 수 있다. 이때, 양자화기(219)는 생략될 수 있다.
예시적으로, 제1 가중치 데이터(WD1)는 32비트 부동 소수점(32-f) 데이터일 수 있다. 열화된 데이터(WD1a)는 16비트 고정 소수점(16-f) 데이터일 수 있다. 열화된 데이터(WD1b)는 8비트 부동 소수점(8-f) 데이터일 수 있다.
제1 가중치 데이터(WD1)는 가장 높은 추론 정확도를 지원하지만, 읽기 시간이 가장 길 수 있다. 열화된 데이터(WD1a)는 제1 가중치 데이터(WD1)보다 더 낮은 추론 정확도 및 더 짧은 읽기 시간을 지원할 수 있다. 열화된 데이터(WD1b)는 열화된 데이터(WD1a)보다 더 낮은 추론 정확도 및 더 짧은 읽기 시간을 지원할 수 있다.
스케줄러(216)는 제1 채널(CH1) 및 제2 채널(CH2) 중에서 가중치 데이터를 읽기 위한 더 차가운 채널을 선택할 수 있다. 스케줄러(216)는 선택된 채널의 제1 가중치 데이터(WD1) 및 열화된 데이터(WD1a, WD1b) 중에서 선택된 채널의 업무 부하에 기반하여 하나를 선택할 수 있다.
예를 들어, 업무 부하가 적을수록(예를 들어, 제1 문턱보다 작을 때), 스케줄러(216)는 제1 가중치 데이터(WD1)를 선택할 수 있다. 업무 부하가 클수록(예를 들어, 제2 문턱보다 클 때), 스케줄러(216)는 열화된 데이터(WD1b)를 선택할 수 있다. 스케줄러(216)는 선택된 데이터에 대한 읽기 명령 및 주소를 생성할 수 있다.
도 4 및 도 7을 참조하여 설명된 바와 같이, 스케줄러(216)는 제2 매핑 테이블을 참조할 수 있다. 제2 매핑 테이블은 하나의 가중치 데이터를 가리키는 하나의 가상 주소에 서로 다른 특성(예를 들어, 열화되지 않거나 서로 다른 레벨들로 열화된)을 갖는 가중치 영역들의 물리 주소들을 매핑할 수 있다.
예시적으로, 도 6을 참조하여 설명된 바와 같이, 둘 이상의 서로 다른 가중치 데이터들이 제1 채널 및 제2 채널의 서로 다른 특성(예를 들어, 열화되지 않거나 서로 다른 레벨들로 열화된)을 갖도록 처리되어 저장될 수 있다. 예시적으로, 서로 다른 특성을 갖는 가중치 데이터들은 하나의 불휘발성 메모리 장치에 지정될 수 있다.
예시적으로, 도 8을 참조하여 설명된 바와 같이, 가중치 영역은 서로 다른 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)을 갖도록 지정될 수 있다. 서로 다른 특성을 갖는 가중치 영역들 및 서로 다른 특성을 갖는 가중치 데이터가 서로 조합될 수 있다.
예를 들어, 가장 긴 읽기 시간을 갖는 제1 가중치 데이터(WD1)는 삼중 레벨 셀들 또는 단일 레벨 셀들의 가중치 영역에 저장될 수 있다. 가장 짧은 읽기 시간을 갖는 열화된 데이터(WD1b)는 단일 레벨 셀들 또는 삼중 레벨 셀들의 가중치 영역에 저장될 수 있다.
도 10은 서로 다른 버전의 가중치 데이터들을 저장하는 스토리지 장치(300)의 예를 보여준다. 도 9를 참조하면, 스토리지 장치(300)는 제어기(310) 및 제1 내지 제6 불휘발성 메모리 장치들(320~370)을 포함할 수 있다.
제어기(310)는 호스트 인터페이스(311), 버스(312), 랜덤 액세스 메모리(313), 주 프로세서(314), 뉴럴 프로세서(315), 스케줄러(316), 제1 메모리 관리자(317), 제2 메모리 관리자(318), 그리고 압축 및 압축 해제기(319)를 포함할 수 있다. 도 1의 제어기(110)와 비교하면, 제어기(310)는 압축 및 압축 해제기(319)를 더 포함할 수 있다. 중복되는 구성 요소들에 대한 설명은 생략된다.
제어기(310)는 제1 채널(CH1)의 제1 내지 제3 불휘발성 메모리 장치들(320~340)에 사용자 영역(321, 331, 341) 및 가중치 영역(322, 332, 342)을 지정할 수 있다. 제어기(310)는 또한 제2 채널(CH2)의 제4 내지 제6 불휘발성 메모리 장치들(350~370)에 사용자 영역(351, 361, 371) 및 가중치 영역(352, 362, 372)을 지정할 수 있다.
제1 채널(CH1)의 제1 불휘발성 메모리 장치(320)의 가중치 영역(322)에 제1 가중치 데이터(WD1)가 저장되고, 제2 및 제3 불휘발성 메모리 장치들(330, 340)의 가중치 영역들(332, 342)에 제1 가중치 데이터(WD1)의 압축된 버전들(WD1c, WD1d)이 저장될 수 있다.
마찬가지로, 제2 채널(CH2)의 제4 불휘발성 메모리 장치(350)의 가중치 영역(352)에 제1 가중치 데이터(WD1)가 저장되고, 제5 및 제6 불휘발성 메모리 장치들(360, 370)의 가중치 영역들(362, 372)에 제1 가중치 데이터(WD1)의 압축 버전들(WD1c, WD1d)이 저장될 수 있다.
압축 버전들(WD1c, WD1d)은 제1 가중치 데이터(WD1)가 압축 및 압축 해제기(319)에 의해 압축된 버전일 수 있다. 예를 들어, 외부의 호스트 장치에 의해 제1 가중치 데이터(WD1)가 스토리지 장치(300)에 기입될 때, 압축 및 압축 해제기(319)는 제1 가중치 데이터(WD1)의 압축 버전들을 생성할 수 있다. 제어기(110)는 압축되지 않은(NC) 제1 가중치 데이터(WD1) 및 압축 및 압축 해제기(319)에 의해 생성된 압축 버전들(WD1c, WD1d)을 가중치 영역(322, 332, 342, 352, 362, 372)에 저장할 수 있다.
다른 예로서, 압축 버전들(WD1c, WD1d)은 외부의 호스트 장치에 의해 생성되고, 그리고 외부의 호스트 장치로부터 수신될 수 있다. 제어기(310)는 외부의 호스트 장치로부터 수신되는 제1 가중치 데이터(WD1) 및 압축 버전들(WD1c, WD1d)을 가중치 영역(322, 332, 342, 352, 362, 372)에 저장할 수 있다. 이때, 압축 및 압축 해제기(319)는 압축 해제기로 대체될 수 있다.
예시적으로, 압축된 데이터(WD1c)는 제1 레벨(L1)로 압축된 데이터일 수 있다. 압축된 데이터(WD1d)는 제2 레벨(L2)로 압축된 데이터일 수 있다. 예를 들어, 제1 레벨(L1)의 압축은 비손실 압축이고, 제2 레벨(L2)의 압축은 손실 압축일 수 있다.
제1 가중치 데이터(WD1)는 가장 긴 읽기 시간을 필요로 하지만, 압축 해제를 위한 시간이 불필요할 수 있다. 압축된 데이터(WD1c)는 제1 가중치 데이터(WD1)보다 더 짧은 읽기 시간을 필요로 하지만, 압축 해제를 위한 시간이 필요할 수 있다. 압축된 데이터(WD1d)는 압축된 데이터(WD1c)보다 더 짧은 읽기 시간을 필요로 하지만, 압축 해제를 위해 압축된 데이터(WD1c)보다 더 긴 시간을 필요로 할 수 있다.
스케줄러(316)는 제1 채널(CH1) 및 제2 채널(CH2) 중에서 가중치 데이터를 읽기 위한 더 차가운 채널을 선택할 수 있다. 스케줄러(316)는 선택된 채널의 제1 가중치 데이터(WD1) 및 압축된 데이터(WD1c, WD1d) 중에서 선택된 채널의 업무 부하에 기반하여 하나를 선택할 수 있다.
예를 들어, 업무 부하가 적을수록(예를 들어, 제1 문턱보다 작을 때), 스케줄러(316)는 제1 가중치 데이터(WD1)를 선택할 수 있다. 업무 부하가 클수록(예를 들어, 제2 문턱보다 클 때), 스케줄러(316)는 압축된 데이터(WD1d)를 선택할 수 있다. 스케줄러(316)는 선택된 데이터에 대한 읽기 명령 및 주소를 생성할 수 있다.
도 4 및 도 7을 참조하여 설명된 바와 같이, 스케줄러(316)는 제2 매핑 테이블을 참조할 수 있다. 제2 매핑 테이블은 하나의 가중치 데이터를 가리키는 하나의 가상 주소에 서로 다른 특성(예를 들어, 압축되지 않거나 서로 다른 레벨들로 압축된)을 갖는 가중치 영역들의 물리 주소들을 매핑할 수 있다.
예시적으로, 도 6을 참조하여 설명된 바와 같이, 둘 이상의 서로 다른 가중치 데이터들이 제1 채널 및 제2 채널의 서로 다른 특성(예를 들어, 압축되지 않거나 서로 다른 레벨들로 압축된)을 갖도록 처리되어 저장될 수 있다. 예시적으로, 서로 다른 특성을 갖는 가중치 데이터들은 하나의 불휘발성 메모리 장치에 지정될 수 있다.
예시적으로, 도 8을 참조하여 설명된 바와 같이, 가중치 영역은 서로 다른 특성(예를 들어, 삼중, 이중 또는 단일 레벨 셀들)을 갖도록 지정될 수 있다. 서로 다른 특성을 갖는 가중치 영역들 및 서로 다른 특성을 갖는 가중치 데이터가 서로 조합될 수 있다.
예를 들어, 가장 긴 읽기 시간을 갖는 제1 가중치 데이터(WD1)는 삼중 레벨 셀들 또는 단일 레벨 셀들의 가중치 영역에 저장될 수 있다. 가장 짧은 읽기 시간을 갖는 압축된 데이터(WD1d)는 단일 레벨 셀들 또는 삼중 레벨 셀들의 가중치 영역에 저장될 수 있다.
예시적으로, 도 9를 참조하여 설명된 바와 같이, 제1 가중치 데이터(WD1)는 다양하게 양자화될 수 있다. 제1 가중치 데이터(WD1), 제1 가중치 데이터(WD1)가 적어도 하나의 레벨로 압축된 버전, 제1 가중치 데이터(WD1)가 적어도 하나의 레벨로 열화된 버전, 그리고 제1 가중치 데이터(WD1)가 적어도 하나의 레벨로 열화된 후에 적어도 하나의 레벨로 압축된 버전이 가중치 영역(322, 332, 342, 352, 362, 372)에 다양하게 저장될 수 있다.
도 11은 스토리지 장치(100)가 가중치 데이터를 읽는 예를 보여준다. 도 1 및 도 11을 참조하면, 제어기(110)는 제1 내지 제6 불휘발성 메모리 장치들(120~170) 중에서 제1 가중치 데이터(WD1)를 읽기 위해 선택된 불휘발성 메모리 장치에 뉴럴 프로세서(115)로부터 생성되는 읽기 명령 및 주소의 쌍을 전송할 수 있다.
예를 들어, 뉴럴 프로세서(115)로부터 생성되는 읽기 명령 및 주소에 의해 읽혀지는 데이터의 양은 주 프로세서(114)로부터 생성되는 읽기 명령 및 주소에 의해 읽혀지는 데이터의 양보다 클 수 있다. 예를 들어, 주 프로세서(114)로부터 생성되는 읽기 명령 및 주소가 선택된 불휘발성 메모리 장치로 전송된 경우, 제어기(110)는 1번의 데이터 출력 시퀀스를 통해 데이터를 수신할 수 있다. 반면, 뉴럴 프로세서(115)로부터 생성되는 읽기 명령 및 주소가 선택된 불휘발성 메모리 장치로 전송된 경우, 제어기(110)는 S320 단계 내지 S340 단계에서 3번의 데이터 출력 시퀀스들을 통해 데이터를 수신할 수 있다.
예시적으로, 뉴럴 프로세서(115)로부터 생성되는 읽기 명령 및 주소에 응답하여, 제어기(110)는 선택된 불휘발성 메모리 장치로부터 k번(k는 양의 정수)의 데이터 출력 시퀀스들을 통해 데이터를 수신할 수 있다.
도 12는 예시적인 불휘발성 메모리 장치(10)를 보여주는 블록도이다. 예를 들어, 불휘발성 메모리 장치(10)는 제1 내지 제6 불휘발성 메모리 장치들(120~170) 중 하나일 수 있다.
도 12를 참조하면, 불휘발성 메모리 장치(10)는 메모리 셀 어레이(11), 행 디코더 블록(12), 페이지 버퍼 블록(13), 데이터 입력 및 출력 블록(14), 버퍼 블록(15), 그리고 제어 로직 블록(16)을 포함한다.
메모리 셀 어레이(11)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 행 디코더 블록(12)에 연결될 수 있다. 워드 라인들(WL) 중 일부는 더미 워드 라인들로 사용될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 블록(13)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다.
예시적으로, 복수의 메모리 블록들(BLK1~BLKz) 각각은 소거 동작의 단위일 수 있다. 각 메모리 블록에 속한 메모리 셀들은 동시에 소거될 수 있다. 다른 예로서, 각 메모리 블록은 복수의 서브 블록들로 분할될 수 있다. 복수의 서브 블록들 각각은 소거 동작의 단위일 수 있다.
행 디코더 블록(12)은 접지 선택 라인들(GSL), 워드 라인들(WL), 그리고 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(11)에 연결된다. 행 디코더 블록(12)은 제어 로직 블록(16)의 제어에 따라 동작한다.
행 디코더 블록(12)은 버퍼 블록(15)으로부터 수신되는 행 주소(RA)를 디코딩하고, 디코딩된 행 주소에 따라 스트링 선택 라인들(SSL), 워드 라인들(WL), 그리고 접지 선택 라인들(GSL)에 인가되는 전압들을 제어할 수 있다.
페이지 버퍼 블록(13)은 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결된다. 페이지 버퍼 블록(13)은 복수의 데이터 라인들(DL)을 통해 데이터 입력 및 출력 블록(14)과 연결된다. 페이지 버퍼 블록(13)은 제어 로직 블록(16)의 제어에 따라 동작한다.
쓰기 동작 시에, 페이지 버퍼 블록(13)은 메모리 셀들에 기입될 데이터를 저장할 수 있다. 저장된 데이터에 기반하여, 페이지 버퍼 블록(13)은 복수의 비트 라인들(BL)에 전압들을 인가할 수 있다. 읽기 동작 시에, 또는 쓰기 동작 또는 소거 동작의 검증 읽기 시에, 페이지 버퍼 블록(13)은 비트 라인들(BL)의 전압들을 감지하고, 감지 결과를 저장할 수 있다.
데이터 입력 및 출력 블록(14)은 페이지 버퍼 블록(13)과 연결된다. 데이터 입력 및 출력 블록(14)은 버퍼 블록(15)으로부터 열 주소(CA)를 수신할 수 있다. 데이터 입력 및 출력 블록(14)은 페이지 버퍼 블록(13)에 의해 읽힌 데이터를 열 주소(CA)에 따라 버퍼 블록(15)으로 출력할 수 있다. 데이터 입력 및 출력 블록(14)은 열 주소(CA)에 의존하여, 버퍼 블록(15)으로부터 수신되는 데이터를 페이지 버퍼 블록(13)에 전달할 수 있다.
버퍼 블록(15)은 외부의 장치와 데이터 라인들(DL)을 통해 명령(CMD) 및 주소(ADDR)를 수신하고, 그리고 데이터(DATA)를 교환할 수 있다. 버퍼 블록(15)은 제어 로직 블록(16)의 제어에 따라 동작할 수 있다. 버퍼 블록(15)은 명령(CMD)을 제어 로직 블록(16)에 전달할 수 있다. 버퍼 블록(15)은 주소(ADDR)의 행 주소(RA)를 행 디코더 블록(12)에 전달하고, 열 주소(CA)를 데이터 입력 및 출력 블록(14)에 전달할 수 있다. 버퍼 블록(15)은 데이터(DATA)를 데이터 입력 및 출력 블록(14)과 교환할 수 있다.
제어 로직 블록(16)은 외부 장치와 제어 라인들(CL)을 통해 제어 신호(CTRL)를 교환할 수 있다. 제어 로직 블록(16)은 버퍼 블록(15)이 명령(CMD), 주소(ADDR) 및 데이터(DATA)를 라우팅하게 제어할 수 있다.
제어 로직 블록(16)은 버퍼 블록(15)으로부터 수신된 명령(CMD)을 디코딩하고, 디코딩된 명령에 따라 불휘발성 메모리 장치(10)를 제어할 수 있다.
도 13은 도 12의 메모리 블록들(BLK1~BLKz) 중 하나의 메모리 블록(BLKa)의 예를 보여주는 회로도이다. 도 12 및 도 13을 참조하면, 복수의 셀 스트링들(CS)이 기판(SUB) 위에서 행들 및 열들로 배치될 수 있다. 복수의 셀 스트링들(CS)은 기판(SUB) 상에(또는 안에) 형성되는 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 도 13에서, 메모리 블록(BLKa)의 구조의 이해를 돕기 위하여, 기판(SUB)의 위치가 예시적으로 표시되어 있다.
각 행의 셀 스트링들은 접지 선택 라인(GSL)에 공통으로 연결되고, 그리고 제1 내지 제4 스트링 선택 라인들(SSL1~SSL4) 중 대응하는 스트링 선택 라인들에 연결될 수 있다. 각 열의 셀 스트링들은 제1 내지 제4 비트 라인들(BL1~BL4) 중 대응하는 비트 라인에 연결될 수 있다. 도면이 복잡해지는 것을 방지하기 위하여, 제2 및 제3 스트링 선택 라인들(SSL2, SSL3)에 연결된 셀 스트링들은 옅게 도시되어 있다.
각 셀 스트링은 접지 선택 라인(GSL)에 연결되는 적어도 하나의 접지 선택 트랜지스터(GST), 복수의 워드 라인들(WL1~WL8)에 각각 연결되는 복수의 메모리 셀들(MC1~MC8), 그리고 스트링 선택 라인들(SSL1, SSL2, SSL3 또는 SSL4)에 각각 연결되는 스트링 선택 트랜지스터들(SST)을 포함할 수 있다.
예를 들어, 제1행의 스트링 선택 라인들(SSL1) 중에서 비트 라인들(BL1~BL4)에 더 인접한 스트링 선택 라인은 상부 스트링 선택 라인일 수 있으며, 'u'의 참조 기호를 이용하여 'SSL1u'로 표시될 수 있다. 제1행의 스트링 선택 라인들 중에서 메모리 셀들(MC1~MC8)에 더 인접한 스트링 선택 라인은 하부 스트링 선택 라인일 수 있으며, 'l'의 참조 기호를 이용하여 'SSL1l'로 표시될 수 있다.
각 셀 스트링에서, 접지 선택 트랜지스터(GST), 메모리 셀들(MC1~MC8), 그리고 스트링 선택 트랜지스터들(SST)은 기판(SUB)과 수직인 방향을 따라 직렬 연결되고, 기판(SUB)과 수직인 방향을 따라 순차적으로 적층될 수 있다. 각 셀 스트링(CS)에서, 메모리 셀들(MC1~MC8) 중 적어도 하나가 더미 메모리 셀로 사용될 수 있다. 더미 메모리 셀은 프로그램되지 않거나(예를 들어, 프로그램이 금지되거나) 또는 메모리 셀들(MC1~MC8)과 다르게 프로그램될 수 있다.
도 14는 스토리지 장치(100)가 가중치 데이터(WD)를 불휘발성 메모리 장치(10)에 기입하는 예를 보여준다. 도 1, 도 12, 도 13 및 도 14를 참조하면, S410 단계에서, 제어기(110)는 외부의 호스트 장치로부터 가중치 데이터(WD)를 수신할 수 있다.
S420 단계에서, 제어기(110)는 가중치 데이터(WD)의 적어도 하나의 사본 그리고/또는 적어도 하나의 열화된(또는 압축된) 버전을 생성할 수 있다. S430 단계에서, 제어기(110)는 가중치 데이터(WD), 가중치 데이터(WD)의 적어도 하나의 사본, 그리고/또는 가중치 데이터(WD)의 적어도 하나의 열화된(또는 압축된) 버전을 적어도 하나의 메모리 블록에 기입할 수 있다.
S440 단계에서, 제어기(110)는 가중치 데이터(WD)가 기입된 후에, 적어도 하나의 메모리 블록에 자유 공간이 남아있는지 판단할 수 있다. 자유 공간이 남아있지 않으면, 제어기(110)는 가중치 데이터(WD)의 기입을 종료할 수 있다. 자유 공간이 남아있으면, S450 단계가 수행될 수 있다.
S450 단계에서, 제어기(110)는 적어도 하나의 메모리 블록을 닫을 수 있다. 예를 들어, 제어기(110)는 적어도 하나의 메모리 블록에서 추가적인 쓰기 동작이 수행되는 것을 금지할 수 있다. 옵션으로서, 제어기(110)는 적어도 하나의 메모리 블록의 자유 공간에 더미 데이터를 기입하는 패딩을 수행할 수 있다.
제어기는 하나의 가중치 데이터(WD)를 다른 데이터(예를 들어, 사용자 데이터 또는 다른 가중치 데이터)와 다른 메모리 블록에서 관리할 수 있다. 가중치 데이터를 저장하는 메모리 블록은 가중치 데이터 외의 다른 데이터를 저장하지 않을 수 있다.
가중치 데이터(WD)는 하나의 순차 데이터의 덩어리일 수 있다. 따라서, 가중치 데이터(WD)의 열화도들 또는 가중치 데이터(WD)를 저장하는 메모리 셀들의 열화도들은 유사할 수 있다. 가중치 데이터(WD)를 다른 데이터와 구별된 메모리 블록에서 독립적으로 관리함으로써, 가중치 데이터(WD)의 열화도 관리가 용이해질 수 있다. 또한, 유효 데이터와 무효 데이터가 섞이는 문제를 해결하기 위한 가비지 컬렉션의 수행 횟수가 감소될 수 있다.
예시적으로, 순차 데이터의 덩어리는 가중치 데이터(WD) 뿐 아니라, 운영 체제의 이미지, 부트 이미지, 게임 데이터 등과 같은 다른 데이터를 더 포함할 수 있다. 이러한 순차 데이터의 덩어리는 객체(object)라 불릴 수 있다. 객체로 분류되는 데이터는 가중치 데이터(WD)를 참조하여 설명된 바와 같이 사본들로, 그리고 사본들의 다양한 버전들로 분산되어 관리될 수 있다. 또한, 가중치 영역은 객체 영역이라 불릴 수 있다.
도 15는 뉴럴 프로세서(115)를 위한 전용의 제3 메모리 관리자(119) 및 불휘발성 메모리 장치(180)를 구비한 스토리지 장치(100')의 예를 보여준다. 도 1과 비교하면, 뉴럴 프로세서(115)는 제3 메모리 관리자(119)를 통해 불휘발성 메모리 장치(180)를 액세스할 수 있다. 불휘발성 메모리 장치(180)는 가중치 데이터를 저장하는 전용이 장치일 수 있다. 스케줄러(116)는 뉴럴 프로세서(115)로부터의 명령을 처리하기 위한 큐를 구비하지 않을 수 있다.
도 16은 본 발명의 실시 예에 따른 스토리지 장치(100)가 패키지(1000)로 구현된 예를 보여준다. 도 17은 도 16의 패키지(1000)의 측면도를 보여준다. 도 16 및 도 17을 참조하면, 패키지(1000)는 패키지 기판(1100), 패키지 기판(1100) 상의 중앙에 실장된 제어 로직 칩(1200), 패키지 기판(1100)에 실장되고 제어 로직 칩(1200)을 둘러싸는 불휘발성 메모리 칩들(1300), 몰드(1400), 그리고 패키지 기판(1100) 하부의 솔더 볼들(1500)을 포함할 수 있다.
패키지 기판(1100)은 제어 로직 칩(1200)과 불휘발성 메모리 칩들(1300)을 서로 연결하는 제1 전기적 연결들(EC1), 그리고 제어 로직 칩(1200)과 솔더 볼들(1500)을 서로 연결하는 제2 전기적 연결들(EC2)을 포함할 수 있다. 제어 로직 칩(1200) 또는 불휘발성 메모리 칩들(1300)은 패키지 기판(1100)에 부착되도록 구성되는 플립 칩, 또는 웨이퍼 레벨 패키지로 구현될 수 있다.
도 18은 본 발명의 실시 예에 따른 스토리지 장치(100)가 패키지(2000)로 구현된 다른 예를 보여준다. 도 18을 참조하면, 패키지(2000)는 패키지 기판(2100), 패키지 기판(2100) 상의 제어 로직 칩(2200), 제어 로직 칩(2200) 상의 인터포저(2300), 인터포저(2300) 상의 불휘발성 메모리 칩들(2400), 인터포저(2300)와 패키지 기판(2100)을 연결하는 측면 비아들(2500), 몰드(2600) 그리고 패키지 기판(2100) 하부의 솔더 볼들(2700)을 포함할 수 있다.
불휘발성 메모리 칩들(2400)은 인터포저(2300)의 제3 전기적 연결들(EC3), 측면 비아들(2500), 그리고 패키지 기판(2100)의 제4 전기적 연결들(EC4)을 통해 제어 로직 칩(2200)에 연결될 수 있다. 제어 로직 칩(2200)은 패키지 기판(2100)의 제5 전기적 연결들(EC5)을 통해 솔더 볼들(2700)에 연결될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 스토리지 장치
110: 제어기
111: 호스트 인터페이스
112: 버스
113: 랜덤 액세스 메모리
114: 주 프로세서
115: 뉴럴 프로세서
116: 스케줄러
117: 제1 메모리 관리자
118: 제2 메모리 관리자
120~140: 제1 내지 제3 불휘발성 메모리 장치들
150~170: 제4 내지 제6 불휘발성 메모리 장치들
121, 131, 141, 151, 161, 171: 사용자 영역
122, 152: 가중치 영역
Q1, Q2: 제1큐 및 제2큐
ABT: 아비터
M1, M2: 제1 및 제2 멀티플렉서들

Claims (20)

  1. 제1 사용자 영역 및 제1 객체 데이터를 저장하도록 구성되는 제1 객체 영역을 포함하는 제1 불휘발성 메모리 장치들;
    제2 사용자 영역 및 상기 제1 객체 데이터의 사본인 제2 객체 데이터를 저장하도록 구성되는 제2 객체 영역을 포함하는 제2 불휘발성 메모리 장치들; 그리고
    외부의 호스트 장치의 액세스 요청들에 따라 제1 채널을 통해 상기 제1 불휘발성 메모리 장치를 액세스하고, 그리고 상기 외부의 호스트 장치의 요청에 따라 제2 채널을 통해 상기 제2 불휘발성 메모리 장치를 액세스하도록 구성되는 상기 제어기를 포함하고,
    상기 제어기는 상기 외부의 호스트 장치의 제1 추론 요청에 따라, 상기 제1 채널 및 상기 제2 채널 중 더 차가운 채널을 통해 상기 제1 객체 데이터 및 상기 제2 객체 데이터 중 대응하는 객체 데이터를 읽도록 더 구성되는 스토리지 장치.
  2. 제1항에 있어서,
    상기 제어기는 상기 외부의 호스트 장치로부터 추론 데이터를 수신하고, 그리고 상기 읽혀진 객체 데이터를 이용하여 상기 추론 데이터에 대해 추론을 수행하도록 더 구성되는 스토리지 장치.
  3. 제1항에 있어서,
    상기 제1 객체 영역은 제3 객체 데이터를 더 저장하고, 그리고 상기 제2 객체 영역은 상기 제3 객체 데이터의 사본인 제4 객체 데이터를 더 저장하고, 그리고
    상기 제어기는 상기 외부의 호스트 장치의 제2 추론 요청에 따라, 상기 제1 채널 및 상기 제2 채널 중 더 차가운 채널을 통해 상기 제3 객체 데이터 및 상기 제4 객체 데이터 중 대응하는 객체 데이터를 읽도록 더 구성되는 스토리지 장치.
  4. 제1항에 있어서,
    상기 제1 객체 영역은:
    상기 제1 객체 데이터를 저장하는 단일 레벨 셀(SLC) 영역;
    상기 제1 객체 데이터를 저장하는 이중 레벨 셀(MLC) 영역; 그리고
    상기 제1 객체 데이터를 저장하는 삼중 레벨 셀(TLC) 영역을 포함하고,
    상기 제어기는 상기 제1 채널이 상기 더 차가운 채널로 선택된 때에, 상기 제1 채널의 업무 부하에 기반하여 상기 단일 레벨 셀 영역, 상기 이중 레벨 셀 영역, 그리고 상기 삼중 레벨 셀 영역 중 하나로부터 상기 제1 객체 데이터를 읽도록 더 구성되는 스토리지 장치.
  5. 제4항에 있어서,
    상기 제1 채널의 상기 업무 부하가 증가할수록, 상기 제어기는 상기 삼중 레벨 셀 영역, 상기 이중 레벨 셀 영역, 그리고 상기 단일 레벨 셀 영역의 순서로 상기 제1 객체 데이터를 읽을 영역을 선택하는 스토리지 장치.
  6. 제1항에 있어서,
    상기 제1 객체 영역은:
    상기 제1 객체 데이터를 저장하는 제1 영역; 그리고
    상기 제1 객체 데이터가 양자화되어 생성되는 양자화된 제1 객체 데이터를 저장하는 제2 영역을 포함하고,
    상기 제어기는 상기 제1 채널이 상기 더 차가운 채널로 선택된 때에, 상기 제1 채널의 업무 부하에 기반하여 상기 제1 객체 데이터 및 상기 양자화된 제1 객체 데이터 중 하나를 읽도록 더 구성되는 스토리지 장치.
  7. 제6항에 있어서,
    상기 제1 객체 데이터는 32비트 부동 소수점에 기반하고, 상기 양자화된 제1 객체 데이터는 16비트 또는 8비트 고정 소수점에 기반하는 스토리지 장치.
  8. 제6항에 있어서,
    상기 제어기는 상기 외부의 호스트 장치로부터 상기 제1 객체 데이터를 수신하고, 상기 제1 객체 데이터를 양자화하여 상기 양자화된 제1 객체 데이터를 생성하고, 그리고 상기 제1 객체 데이터 및 상기 양자화된 제1 객체 데이터를 상기 제1 객체 영역에 저장하도록 더 구성되는 스토리지 장치.
  9. 제6항에 있어서,
    상기 제1 채널의 업무 부하가 증가할수록, 상기 제어기는 상기 제1 객체 데이터 대신 상기 양자화된 제1 객체 데이터를 읽는 스토리지 장치.
  10. 제1항에 있어서,
    상기 제1 객체 영역은:
    상기 제1 객체 데이터를 저장하는 제1 영역; 그리고
    상기 제1 객체 데이터가 압축되어 생성되는 압축된 제1 객체 데이터를 저장하는 제2 영역을 포함하고,
    상기 제어기는 상기 제1 채널이 상기 더 차가운 채널로 선택된 때에, 상기 제1 채널의 업무 부하에 기반하여 상기 제1 객체 데이터 및 상기 압축된 제1 객체 데이터 중 하나를 읽도록 더 구성되는 스토리지 장치.
  11. 제10항에 있어서,
    상기 압축된 제1 객체 데이터가 읽혀진 때에, 상기 제어기는 상기 압축된 제1 객체 데이터의 압축을 해제하는 스토리지 장치.
  12. 제10항에 있어서,
    상기 제1 채널의 업무 부하가 증가할수록, 상기 제어기는 상기 제1 객체 데이터 대신 상기 압축된 제1 객체 데이터를 읽는 스토리지 장치.
  13. 제10항에 있어서,
    상기 제어기는 상기 외부의 호스트 장치로부터 상기 제1 객체 데이터를 수신하고, 상기 제1 객체 데이터를 압축하여 상기 압축된 제1 객체 데이터를 생성하고, 그리고 상기 제1 객체 데이터 및 상기 압축된 제1 객체 데이터를 상기 제1 객체 영역에 저장하도록 더 구성되는 스토리지 장치.
  14. 제1항에 있어서,
    상기 제어기는 상기 제1 채널 및 상기 제2 채널 중 하나를 통해 상기 제1 불휘발성 메모리 장치 및 상기 제2 불휘발성 메모리 장치 중 대응하는 불휘발성 메모리 장치의 대응하는 사용자 영역에 대한 제1 읽기 명령을 상기 대응하는 불휘발성 메모리 장치로 전송한 후에 상기 대응하는 불휘발성 메모리 장치로부터 제1 사이즈의 사용자 데이터를 수신하고, 그리고
    상기 제어기는 상기 더 차가운 채널을 통해 상기 제1 객체 영역 및 상기 제2 객체 영역 중 대응하는 객체 영역에 대한 제2 읽기 명령을 상기 더 차가운 채널을 통해 전송한 후에 상기 제1 사이즈의 정수배인 제2 사이즈의 상기 대응하는 객체 데이터의 적어도 일부를 수신하도록 더 구성되는 스토리지 장치.
  15. 제1항에 있어서,
    상기 제1 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고,
    상기 제1 객체 영역은 상기 복수의 메모리 블록들 중 적어도 하나의 메모리 블록을 포함하고,
    상기 제1 객체 데이터가 상기 적어도 하나의 메모리 블록에 기입된 후에 상기 적어도 하나의 메모리 블록에 자유 공간이 존재하면, 상기 제어기는 상기 적어도 하나의 메모리 블록을 닫는 스토리지 장치.
  16. 제15항에 있어서,
    상기 제어기는 상기 자유 공간에 더미 데이터를 기입하도록 더 구성되는 스토리지 장치.
  17. 제1항에 있어서,
    패키지 기판; 그리고
    상기 패키지 기판 하부의 솔더 볼들을 더 포함하고,
    상기 제어기는 상기 패키지 기판 상의 중앙에 실장되고,
    상기 제1 불휘발성 메모리 장치들 및 상기 제2 불휘발성 메모리 장치들은 상기 패키지 기판 상에서 상기 제어기를 둘러싸도록 실장되고, 그리고
    상기 기판은:
    상기 제어기를 상기 솔더 볼들과 연결하는 제1 전기적 연결;
    상기 제1 불휘발성 메모리 장치들을 상기 제어기와 연결하는 제2 전기적 연결; 그리고
    상기 제2 불휘발성 메모리 장치들을 상기 제어기와 연결하는 제3 전기적 연결을 포함하는 스토리지 장치.
  18. 제1항에 있어서,
    상기 제어기가 실장되는 패키지 기판;
    상기 패키지 기판 하부의 솔더 볼들;
    상기 제어기 상에 배치되고, 그리고 상기 제1 불휘발성 메모리 장치들 및 상기 제2 불휘발성 메모리 장치들이 실장되는 인터포저; 그리고
    상기 인터포저 및 상기 패키지 기판을 전기적으로 연결하는 측면 비아를 포함하는 스토리지 장치.
  19. 복수의 불휘발성 메모리 장치들 및 제어기를 포함하는 스토리지 장치의 동작 방법에 있어서:
    상기 제어기가 외부의 호스트 장치로부터 액세스 요청들을 수신하는 단계;
    상기 액세스 요청들에 따라, 상기 제어기가 상기 채널들을 통해 상기 복수의 불휘발성 메모리 장치들을 액세스하는 단계;
    상기 제어기가 상기 외부의 호스트 장치로부터 추론 요청을 수신하는 단계;
    상기 제어기가 상기 복수의 채널들 중에서 더 차가운 채널들 통해 상기 복수의 불휘발성 메모리 장치들 중 적어도 하나의 대응하는 불휘발성 메모리 장치로부터 객체 데이터를 읽는 단계; 그리고
    상기 제어기가 추론 데이터에 대해 상기 객체 데이터를 이용하여 추론을 수행하는 단계를 포함하는 동작 방법.
  20. 제1 사용자 영역 및 제1 가중치 데이터를 저장하도록 구성되는 제1 가중치 영역을 포함하는 제1 불휘발성 메모리 장치;
    제2 사용자 영역 및 상기 제1 가중치 데이터의 사본인 제2 가중치 데이터를 저장하도록 구성되는 제2 가중치 영역을 포함하는 제2 불휘발성 메모리 장치;
    제1 채널을 통해 상기 제1 불휘발성 메모리 장치를 액세스하는 제1 관리자;
    제2 채널을 통해 상기 제2 불휘발성 메모리장치를 액세스하는 제2 관리자;
    외부의 호스트 장치의 액세스 요청들에 따라, 상기 제1 불휘발성 메모리 장치 및 상기 제2 불휘발성 메모리 장치를 액세스하기 위한 명령들을 생성하는 프로세서;
    상기 명령들을 순차적으로 저장하고, 상기 명령들 중에서 상기 제1 불휘발성 메모리 장치와 연관된 제1 명령들을 상기 제1 관리자로 전송하고, 그리고 상기 명령들 중에서 상기 제2 불휘발성 메모리 장치와 연관된 제2 명령들을 상기 제2 관리자로 전송하도록 구성되는 제1 큐;
    상기 외부의 호스트 장치로부터 수신되는 추론 요청들을 저장하고 그리고 상기 저장된 추론 요청들을 순차적으로 출력하도록 구성되는 제2 큐;
    상기 제2 큐로부터 출력되는 추론 요청에 따라, 상기 제1 큐를 참조하여 상기 제1 채널 및 상기 제2 채널 중 더 차가운 채널을 선택하고, 상기 제1 가중치 데이터 및 상기 제2 가중치 데이터 중 상기 더 차가운 채널에 대응하는 가중치 데이터를 읽기 위한 명령을 상기 제1 관리자 및 상기 제2 관리자 중에서 상기 더 차가운 채널에 대응하는 관리자에 전송하도록 구성되는 아비터; 그리고
    상기 대응하는 관리자에 읽혀진 상기 대응하는 가중치 데이터를 이용하여 추론을 수행하도록 구성되는 뉴럴 프로세싱 유닛을 포함하는 스토리지 장치.
KR1020190138655A 2019-11-01 2019-11-01 스토리지 장치 및 스토리지 장치의 동작 방법 KR20210053384A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190138655A KR20210053384A (ko) 2019-11-01 2019-11-01 스토리지 장치 및 스토리지 장치의 동작 방법
US16/828,170 US11526287B2 (en) 2019-11-01 2020-03-24 Storage device and operating method of storage device
DE102020113837.7A DE102020113837A1 (de) 2019-11-01 2020-05-22 Speichervorrichtung und Betriebsverfahren einer Speichervorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190138655A KR20210053384A (ko) 2019-11-01 2019-11-01 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210053384A true KR20210053384A (ko) 2021-05-12

Family

ID=75687282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190138655A KR20210053384A (ko) 2019-11-01 2019-11-01 스토리지 장치 및 스토리지 장치의 동작 방법

Country Status (2)

Country Link
US (1) US11526287B2 (ko)
KR (1) KR20210053384A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210124688A (ko) * 2020-04-07 2021-10-15 에스케이하이닉스 주식회사 데이터 처리 시스템, 이를 위한 메모리 컨트롤러 및 그 동작 방법
US11983441B2 (en) * 2022-03-24 2024-05-14 Xilinx, Inc. Arbitration of commands between non-volatile memory storage and remote hosts

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511177A (en) * 1991-11-21 1996-04-23 Hitachi, Ltd. File data multiplexing method and data processing system
US7181548B2 (en) 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
TWI465905B (zh) 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US8918554B2 (en) 2011-10-06 2014-12-23 Marvell International Ltd. Method and apparatus for effectively increasing a command queue length for accessing storage
US8984182B2 (en) 2011-10-06 2015-03-17 Marvell International Ltd. SCSI I/O command aggregation
US9128634B1 (en) 2013-03-11 2015-09-08 Marvell International Ltd. Systems and methods of packed command management for non-volatile storage devices
KR101699377B1 (ko) * 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US9760281B2 (en) 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US11423311B2 (en) * 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10635968B2 (en) 2016-03-24 2020-04-28 Intel Corporation Technologies for memory management of neural networks with sparse connectivity
US10795836B2 (en) 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10394706B2 (en) 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US11119677B2 (en) 2017-12-15 2021-09-14 Samsung Electronics Co., Ltd. HBM based memory lookup engine for deep learning accelerator
KR20190123502A (ko) * 2018-04-24 2019-11-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11321252B2 (en) * 2018-05-18 2022-05-03 International Business Machines Corporation Selecting a priority queue from which to process an input/output (I/O) request using a machine learning module
US10990524B2 (en) * 2018-10-11 2021-04-27 Powerchip Semiconductor Manufacturing Corporation Memory with processing in memory architecture and operating method thereof

Also Published As

Publication number Publication date
US11526287B2 (en) 2022-12-13
US20210132832A1 (en) 2021-05-06

Similar Documents

Publication Publication Date Title
US12013779B2 (en) Storage system having a host directly manage physical data locations of storage device
TWI765044B (zh) 記憶體系統及其操作方法
US8019943B2 (en) High endurance non-volatile memory devices
KR101516580B1 (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US10678476B2 (en) Memory system with host address translation capability and operating method thereof
US10924552B2 (en) Hyper-converged flash array system
US10965751B2 (en) Just a bunch of flash (JBOF) appliance with physical access application program interface (API)
US20080209112A1 (en) High Endurance Non-Volatile Memory Devices
KR20160050139A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
TW200819976A (en) Memory system with nonvolatile semiconductor memory
KR102116258B1 (ko) 메모리 시스템 및 그것을 포함하는 유저 장치
US20200218451A1 (en) Storage device having dual access procedures
US20180107391A1 (en) Storage system having a host that manages physical data locations of storage device
US10719263B2 (en) Method of handling page fault in nonvolatile main memory system
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
KR20190043863A (ko) 메모리 시스템 및 그것의 동작 방법
CN111796759B (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
KR20210053384A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
US11269769B2 (en) Memory system and method of operating the same
KR20190067540A (ko) 스토리지 시스템 및 그것의 동작 방법
US11972128B2 (en) Memory controller and method of operating the same
US20240201900A1 (en) Memory device and storage device including the same
US20230409470A1 (en) Scratchpad cache for gaming and iot hosts
CN118051178A (zh) 存储装置

Legal Events

Date Code Title Description
A201 Request for examination