KR20210032222A - 메모리 컨트롤러 및 그것의 동작 방법 - Google Patents

메모리 컨트롤러 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20210032222A
KR20210032222A KR1020190113717A KR20190113717A KR20210032222A KR 20210032222 A KR20210032222 A KR 20210032222A KR 1020190113717 A KR1020190113717 A KR 1020190113717A KR 20190113717 A KR20190113717 A KR 20190113717A KR 20210032222 A KR20210032222 A KR 20210032222A
Authority
KR
South Korea
Prior art keywords
memory
map data
data
memory controller
block
Prior art date
Application number
KR1020190113717A
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 KR1020190113717A priority Critical patent/KR20210032222A/ko
Priority to US16/856,851 priority patent/US11301371B2/en
Priority to CN202010578829.5A priority patent/CN112506421B/zh
Publication of KR20210032222A publication Critical patent/KR20210032222A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Read Only Memory (AREA)

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 향상된 입출력 요청의 응답시간 및 동적 랜덤 액세스 메모리(DRAM) 용량을 갖는 메모리 컨트롤러는, 순환 신경망(Recurrent Neural Network, RNN)을 이용한 머신 러닝을 통해 상기 호스트로부터 입출력 요청이 없을 것으로 예상되는 유휴시간을 예측하는 가용시간 예측부 및 유휴시간이 미리 설정된 기준시간보다 길면, 데이터 블록의 논리적 위치를 지정하는 논리 주소와 실제 데이터 블록의 물리적 위치를 지정하는 물리 주소와의 맵핑 정보인 맵 데이터를 압축하는 데이터 압축 제어부를 포함한다.

Description

메모리 컨트롤러 및 그것의 동작 방법{MEMORY CONTROLLER AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 메모리 컨트롤러 및 그것의 동작 방법에 관한 것이다.
저장 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 향상된 입출력 요청의 응답시간 및 증가된 잔여 동적 랜덤 액세스 메모리(DRAM) 용량을 갖는 메모리 컨트롤러 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 호스트로부터 입출력 요청 정보를 입력 받는 메모리 컨트롤러는, 가용시간 예측부 및 데이터 압축 제어부를 포함할 수 있다. 가용시간 예측부는 순환 신경망(Recurrent Neural Network, RNN)을 이용한 머신 러닝을 통해 상기 호스트로부터 입출력 요청이 없을 것으로 예상되는 유휴시간을 예측하고, 데이터 압축 제어부는 유휴시간이 미리 설정된 기준시간보다 길면, 데이터 블록의 논리적 위치를 지정하는 논리 주소와 실제 데이터 블록의 물리적 위치를 지정하는 물리 주소와의 맵핑 정보인 맵 데이터를 압축할 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 입출력 요청 정보를 수신하는 단계, 머신 러닝을 통해 호스트로부터 입출력 요청이 없을 것으로 예상되는 시간인 유휴시간을 예측하는 단계 및 유휴시간이 미리 설정된 기준시간보다 길면, 데이터 블록의 논리적 위치를 지정하는 논리 주소와 실제 데이터 블록의 물리적 위치를 지정하는 물리 주소와의 맵핑 정보인 맵 데이터를 압축하는 단계를 포함한다.
본 기술에 따르면 향상된 입출력 요청의 응답시간 및 증가된 잔여 동적 랜덤 액세스 메모리(DRAM) 용량을 갖는 메모리 컨트롤러 및 그 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 설명하기 위한 도면이다.
도 2는 도 1의 메모리 장치의 구조를 설명하기 위한 도면이다.
도 3은 도 2의 메모리 셀 어레이의 일 실시 예를 나타낸 도면이다.
도 4는 도 3의 메모리 블록들(BLK1~BLKz) 중 어느 하나의 메모리 블록(BLKa)을 보여주는 회로도이다.
도 5는 도 3의 메모리 블록들(BLK1~BLKz) 중 어느 하나의 메모리 블록(BLKb)의 다른 실시 예를 보여주는 회로도이다.
도 6은 종래의 리드 요청에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 장치도이다.
도 9는 도 8의 가용시간 예측부(210)의 동작을 설명하기 위한 도면이다.
도 10은 도 8의 데이터 압축 제어부(220)의 동작을 설명하기 위한 도면이다.
도 11은 유효 페이지 개수에 따른 블록 선택부의 실시 예를 설명하기 위한 도면이다.
도 12는 리드 횟수에 따른 블록 선택부의 실시 예를 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 14는 도 13의 가용시간 예측 정보의 생성하는 단계를 상세하게 설명하기 위한 순서도이다.
도 15는 도 13의 맵 데이터를 압축하는 단계를 상세하게 설명하기 위한 순서도이다.
도 16은 도 1의 메모리 컨트롤러의 다른 실시 예를 설명하기 위한 도면이다.
도 17은 본 발명의 실시 예에 따른 저장장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 저장장치가 적용된 SSD(Solid State Drive) 시스템을 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 저장장치가 적용된 사용자 시스템을 보여주는 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 저장 장치(50)는 메모리 장치(100) 및 메모리 컨트롤러(200)를 포함할 수 있다. 저장 장치(50)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트(300)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
저장 장치(50)는 호스트(300)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 데이터 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 저장 장치(50)는 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
저장 장치(50)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 저장 장치(50)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi-chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
메모리 장치(100)는 데이터를 저장할 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)의 제어에 응답하여 동작할 수 있다. 메모리 장치(100)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다.
메모리 셀은 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC) 중 어느 하나로 동작할 수 있다.
메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 메모리 블록은 메모리 장치(100)에 저장된 데이터를 지우는 단위일 수 있다. 실시 예에서, 메모리 블록은 복수의 페이지들을 포함할 수 있다. 페이지는 메모리 장치(100)에 데이터를 저장하거나, 메모리 장치(100)에 저장된 데이터를 리드하는 단위일 수 있다.
실시 예에서, 메모리 장치(100)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory), 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(100)가 낸드 플래시 메모리인 경우를 가정하여 설명한다.
메모리 장치(100)는 메모리 컨트롤러(200)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 즉, 메모리 장치(100)는 어드레스에 의해 선택된 영역에 대해 수신된 커맨드에 해당하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(100)는 프로그램 동작, 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작은 메모리 장치(100)에 포함된 메모리 셀들에 데이터를 저장하는 동작일 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)로부터 입력되는 프로그램 커맨드에 따라 어드레스에 의해 선택된 영역에 데이터를 저장하는 프로그램 동작을 수행할 수 있다. 리드 동작은 메모리 셀들에 저장된 데이터를 리드 전압을 이용하여 센싱하는 동작일 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)로부터 입력되는 리드 커맨드에 따라 어드레스에 의해 선택된 영역에 저장된 데이터를 센싱할 수 있다. 소거 동작은 메모리 셀들에 저장된 데이터를 삭제하는 동작일 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)로부터 입력되는 소거 커맨드에 따라 어드레스에 의해 선택된 영역에 저장된 데이터를 삭제할 것이다. 실시 예에서, 메모리 셀들에 저장된 데이터를 삭제한다는 것은 메모리 셀들의 문턱전압이 소거 상태에 대응하는 문턱전압분포에 속하도록 메모리 셀들의 문턱전압을 낮추는 것일 수 있다.
메모리 컨트롤러(200)는 메모리 장치(100)의 전반적인 동작을 제어할 수 있다.
저장 장치(50)에 전원이 인가되면, 메모리 컨트롤러(200)는 사전에 저장된 펌웨어(firmware, FW)를 실행할 수 있다.
펌웨어(FW)는 호스트(300)로부터 입력된 요청을 수신하거나 호스트(300)로 응답을 출력하는 호스트 장치 인터페이스 레이어(Host Interface Layer, HIL), 호스트(300)의 인터페이스와 메모리 장치(100)의 인터페이스 사이의 동작을 관리하는 플래시 변환 레이어(Flash Translation Layer, FTL) 및 메모리 장치(100)에 커맨드를 제공하거나, 메모리 장치(100)로부터 응답을 수신하는 플래시 인터페이스 레이어(Flash Interface Layer, FIL)를 포함할 수 있다.
호스트(300)로부터 쓰기 요청이 입력되면, 메모리 컨트롤러(200)는 호스트(300)로부터 저장될 데이터와 해당 데이터를 식별하기 위한 논리 어드레스(Logical Address, LA)를 입력 받을 수 있다. 메모리 컨트롤러(200)는 입력된 논리 어드레스를 메모리 장치(100)에 포함된 메모리 셀들 중 데이터가 저장될 메모리 셀들의 물리적인 주소를 나타내는 물리 어드레스(Physical Address, PA)로 변환할 수 있다. 메모리 컨트롤러(200)는 데이터를 저장하기 위한 프로그램 커맨드, 변환된 물리 어드레스 및 저장할 데이터를 메모리 장치(100)에 제공할 수 있다.
실시 예에서, 호스트(300)로부터 리드 요청이 입력되면, 메모리 컨트롤러(200)는 호스트(300)로부터 리드할 데이터를 식별하는 논리 어드레스를 입력 받을 수 있다. 메모리 컨트롤러(200)는 입력된 논리 어드레스에 대응되는 물리 어드레스를 획득하고, 메모리 장치(100)에 리드 커맨드 및 물리 어드레스를 제공할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 호스트(300)로부터의 요청과 무관하게 자체적으로 프로그램 동작, 리드 동작 또는 소거 동작을 수행하도록 메모리 장치(100)를 제어할 수 있다. 예를 들면, 메모리 컨트롤러(200)는 웨어 레벨링(wear leveling), 가비지 컬렉션(garbage collection) 또는 리드 리클레임(read reclaim)과 같은 배경 동작(background operation)들을 수행하기 위해 메모리 장치(100)를 제어할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 가용시간 예측부(210) 및 데이터 압축 제어부(220)를 포함할 수 있다.
가용시간 예측부(210)는 호스트로부터 입력 받은 입출력 요청 정보를 이용하여 가용시간 예측 정보를 생성할 수 있다. 구체적으로, 가용 시간 예측부(210)는 순환 인공 신경망(Recurrent Neural Network, RNN) 기반의 머신 러닝(Machine learning)을 이용하여 가용시간 예측 정보를 생성할 수 있다. 머신 러닝은 인공지능의 분야 중 하나로, 경험적 데이터를 기반으로 학습을 하고 예측을 수행하고 스스로의 성능을 향상시키는 시스템과 이를 위한 알고리즘의 집합으로 정의될 수 있다. 가용시간 예측부(210)가 이용하는 모델은 이러한 머신 러닝의 모델들 중 순환 인공 신경망(Reccurent Neural Network, RNN)을 이용한 것일 수 있다.
가용시간 예측부(210)는 입출력 요청이 입력된 시간 간격을 머신 러닝을 통해 학습하고, 호스트로부터 입출력 요청이 없는 시간인 유휴시간을 예측할 수 있다. 새로운 입출력 요청 정보가 입력될 때마다, 머신 러닝을 통하여 예측된 유휴시간은 새로운 입출력 요청 정보가 입력된 시간을 반영하여 변경될 수 있다. 가용시간 예측부(210)는 맵 데이터가 압축되는데 소요되는 평균적인 시간에 해당하는 기준시간에 대한 정보를 더 포함할 수 있다. 가용시간 예측부(210)는 예측된 유휴시간과 기준시간을 비교하여 맵 데이터의 압축 여부에 대한 정보를 포함하는 가용시간 예측 정보를 출력할 수 있다. 구체적으로, 예측된 유휴시간이 기준시간보다 길면, 예측된 유휴시간을 맵 데이터를 압축할 수 있는 시간인 가용시간이라고 판단할 수 있다. 예측된 유휴시간이 기준시간보다 짧으면, 가용시간이 아니라고 판단할 수 있다. 가용시간 예측부(210)는 예측된 유휴시간이 가용시간에 해당하는지에 관한 정보인 가용시간 예측 정보를 생성하고 데이터 압축 제어부(220)에 제공할 수 있다.
데이터 압축 제어부(220)는 가용시간 예측부(210)로부터 입력 받은 가용시간 예측 정보에 따라 맵 데이터를 압축할 수 있다. 구체적으로, 예측된 유휴시간이 가용시간에 해당하면 맵 데이터를 압축할 수 있고, 가용시간에 해당하지 않으면 맵 데이터의 압축을 생략할 수 있다.
데이터 압축 제어부(220)는 맵 데이터를 압축하기에 앞서, 먼저 맵 데이터가 지칭하는 메모리 블록에 관한 정보인 블록 정보를 이용하여 압축할 맵 데이터를 결정할 수 있다. 예를 들어, 블록 정보에는 유효 페이지 개수 또는 리드 횟수가 포함될 수 있다. 유효 페이지들이 적게 포함된 블록일수록 가비지 컬렉션(Garbage Collection, GC) 동작이 수행될 가능성이 높고, 리드 횟수가 많은 페이지가 많이 포함된 블록일수록 리드 리클레임(Read Reclaim) 동작이 수행될 가능성이 높을 수 있다. 따라서, 이러한 메모리 블록에 대한 맵 데이터는 어차피 가까운 시간 내에 변경될 데이터이므로, 데이터를 압축하는 것이 비효율적일 수 있다. 따라서, 유효 페이지의 개수가 기준 개수보다 적거나, 리드 횟수가 기준 횟수를 초과하는 메모리 블록에 대한 맵 데이터는 데이터 압축 동작의 대상에서 제외될 수 있다.
데이터 압축 제어부(220)는 예측된 유휴시간이 맵 데이터를 압축할 수 있는 가용시간에 해당되고, 맵 데이터가 압축의 대상이 된다고 판단되면, 다양한 압축 기법을 이용하여 맵 데이터를 압축할 수 있다. 다양한 압축 기법에는 델타 압축(Delta compression) 또는 지집(GZIP)이 포함될 수 있으나 이에 한정되지 않을 수 있다. 맵 데이터가 압축되는 과정에 대해서는 후술하기로 한다.
호스트(300)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 저장 장치(50)와 통신할 수 있다.
도 2는 도 1의 메모리 장치의 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110), 주변 회로(120) 및 제어 로직(130)을 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 행 라인들(RL)을 통해 로우 디코더(121)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 비트라인들(BL1 내지 BLm)을 통해 읽기 및 쓰기 회로(123)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 실시 예에서, 복수의 메모리 셀들은 불휘발성 메모리 셀들일 수 있다. 복수의 메모리 셀들 중 같은 워드라인에 연결된 메모리 셀들은 하나의 물리 페이지를 구성하는 것으로 정의될 수 있다. 따라서, 하나의 메모리 블록은 복수의 물리 페이지들을 포함할 수 있다. 메모리 블록에 포함된 하나의 메모리 셀은 1 비트의 데이터를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 2 비트의 데이터를 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 3 비트의 데이터를 저장하는 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 4비트의 데이터를 저장하는 쿼드 레벨 셀(Quad Level Cell; QLC) 중 어느 하나의 방식으로 사용될 수 있다.
주변 회로(120)는 로우 디코더(121), 전압 생성부(122), 읽기 및 쓰기 회로(123), 컬럼 디코더(124), 입출력 회로(125) 및 센싱 회로(126)를 포함할 수 있다.
주변 회로(120)는 메모리 셀 어레이(110)를 구동할 수 있다. 예를 들어 주변 회로(120)는 프로그램 동작, 리드 동작 및 소거 동작을 수행하도록 메모리 셀 어레이(110)를 구동할 수 있다.
전압 생성부(122)는 메모리 장치(100)에 공급되는 외부 전원 전압을 이용하여 복수의 동작 전압(Vop)들을 생성할 수 있다. 전압 생성부(122)는 제어 로직(130)의 제어에 응답하여 동작한다. 구체적으로, 전압 생성부(122)는 동작 신호(OPSIG)에 응답하여 프로그램 동작, 리드 동작 및 소거 동작들에 사용되는 동작 전압(Vop)들을 생성할 수 있다. 예를 들면, 전압 생성부(122)는 제어 로직(130)의 제어에 따라 프로그램 전압, 검증 전압, 프로그램 패스 전압, 검증 패스 전압, 리드 전압, 소거 전압 등을 생성할 수 있다.
실시 예에서, 전압 생성부(122)는 다양한 전압 레벨들을 갖는 복수의 동작 전압(Vop)들을 생성하기 위해서, 복수의 펌핑 커패시터들을 포함할 수 있다. 전압 생성부(122)는 제어 로직(130)의 제어에 응답하여 복수의 펌핑 커패시터들을 선택적으로 활성화시킴으로써 복수의 동작 전압(Vop)들을 생성할 수 있다. 생성된 복수의 동작 전압(Vop)들은 로우 디코더(121)에 의해 메모리 셀 어레이(110)에 공급될 수 있다.
로우 디코더(121)는 행 라인들(RL)을 통해 메모리 셀 어레이(110)에 연결된다. 행 라인들(RL)은 드레인 선택 라인들, 워드 라인들, 소스 선택 라인들 및 공통 소스 라인을 포함할 수 있다. 다양한 실시 예에서, 워드라인들은 노멀 워드라인들과 더미 워드라인들을 포함할 수 있다. 또한, 행 라인들(RL)은 파이프 선택 라인을 더 포함할 수 있다.
로우 디코더(121)는 제어 로직(130)의 제어에 응답하여 동작할 수 있다. 로우 디코더(121)는 제어 로직(130)으로부터 로우 어드레스(RADD)에 응답하여, 전압 생성부(122)가 생성한 동작 전압(Vop)들을 복수의 메모리 블록들(BLK1~BLKz) 중 선택된 메모리 블록에 연결된 행라인들(RL)에 전달할 수 있다.
읽기 및 쓰기 회로(123)는 제1 내지 제 n 페이지 버퍼들(PB1~PBn)을 포함할 수 있다. 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 각각 제1 내지 제 n 비트라인들(BL1~BLn)을 통해 메모리 셀 어레이(110)에 연결될 수 있다. 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 제어 로직(130)의 제어에 응답하여 동작한다. 예를 들어, 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 페이지 버퍼 제어 신호들(PBSIGNALS)에 응답하여 동작할 수 있다.
실시 예에서, 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 제1 내지 제 n 비트라인들(BL1~BLn)의 전압 또는 전류를 센싱함으로써, 메모리 셀 어레이(110)에 저장된 데이터를 센싱할 수 있다. 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 센싱된 데이터를 임시로 저장할 수 있다. 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 센싱된 데이터를 데이터 라인들(DL)을 통해 컬럼 디코더(124)에 제공할 수 있다.
실시 예에서, 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 입출력 회로(125)로부터 컬럼 디코더(124) 및 데이터 라인들(DL)을 통해 저장할 데이터를 수신할 수 있다. 프로그램 동작의 수행을 통해 제1 내지 제 n 페이지 버퍼들(PB1~PBn)가 수신한 데이터는 메모리 셀 어레이(110)에 저장될 수 있다.
메모리 셀에 데이터를 저장하는 프로그램 동작은 프로그램 전압 인가 단계와 검증 단계를 포함할 수 있다. 프로그램 전압 인가단계에서, 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 선택된 워드라인에 프로그램 전압이 인가될 때, 저장될 데이터를 선택된 메모리 셀들에 전달할 수 있다. 프로그램 허용 전압(예를 들면, 접지 전압)이 인가되는 비트라인과 연결된 메모리 셀은 상승된 문턱전압을 가질 수 있다. 프로그램 금지 전압(예를 들면, 전원 전압)이 인가되는 비트라인과 연결된 메모리 셀의 문턱전압은 유지될 수 있다. 프로그램 동작을 검증하는 검증 단계에서, 제1 내지 제 n 페이지 버퍼들(PB1~PBn)은 선택된 메모리 셀들로부터 비트라인들(BL1~BLn)을 통해 메모리 셀들에 저장된 데이터를 센싱할 수 있다.
센싱 회로(126)는 검증 단계에서, 허용 비트(VRYBIT)에 응답하여 기준 전류를 생성하고, 읽기 및 쓰기 회로(123)으로부터 수신된 센싱 전압(VPB)과 기준 전류에 의해 생성된 기준 전압을 비교하여 패스 신호(PASS) 또는 페일 신호(FAIL)를 출력할 수 있다.
입출력 회로(125)는 컬럼 디코더(124) 및 데이터 라인들(DL)을 통해 제1 내지 제 n 페이지 버퍼들(PB1~PBn)에 연결될 수 있다. 입출력 회로(125)는 제어 로직(130)의 제어에 응답하여 동작한다.
입출력 회로(125)는 도 1의 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD) 및 어드레스(ADDR)를 제어 로직(130)에 전달하거나, 도 1의 메모리 컨트롤러(200)로부터 수신한 데이터(DATA)를 읽기 및 쓰기 회로(123)에 제공할 수 있다.
실시 예에서, 입출력 회로(125)는 데이터(DATA)를 수신하는 복수의 입출력 버퍼들(미도시)을 포함할 수 있다. 프로그램 동작 시, 입출력 회로(125)는 메모리 컨트롤러(200)로부터 저장될 데이터(DATA)를 수신한다. 입출력 회로(125)는 리드 동작 시, 읽기 및 쓰기 회로(123)에 포함된 제1 내지 제 n 페이지 버퍼들(PB1~PBn)로부터 전달된 데이터를 메모리 컨트롤러(200)로 출력할 수 있다.
제어 로직(130)은 로우 디코더(121), 전압 생성부(122), 읽기 및 쓰기 회로(123), 컬럼 디코더(124), 입출력 회로(125) 및 센싱 회로(126)에 연결될 수 있다. 제어 로직(130)은 메모리 장치(100)의 전반적인 동작을 제어하도록 구성될 수 있다.
제어 로직(130)은 커맨드(CMD) 및 어드레스(ADDR)에 응답하여 주변 회로(120)를 제어할 복수의 제어신호들을 생성할 수 있다. 예를 들면, 제어 로직(130)은 커맨드(CMD) 및 어드레스(ADDR)에 응답하여 동작 신호(OPSIG), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIGNALS) 및 허용 비트(VRYBIT)를 생성할 수 있다. 제어 로직(130)은 센싱 회로(126)가 출력한 패스 또는 페일 신호(PASS/FAIL)에 응답하여 검증 동작이 패스 또는 페일 되었는지를 판단할 수 있다.
도 3은 도 2의 메모리 셀 어레이의 일 실시 예를 나타낸 도면이다.
도 3을 참조하면, 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 3차원 구조를 가질 수 있다. 각 메모리 블록은 기판 위에 적층된 복수의 메모리 셀들을 포함한다. 이러한 복수의 메모리 셀들은 +X 방향, +Y 방향 및 +Z 방향을 따라 배열된다. 각 메모리 블록의 구조는 도 4 및 도 5를 참조하여 더 상세히 설명된다.
도 4는 도 3의 메모리 블록들(BLK1~BLKz) 중 어느 하나의 메모리 블록(BLKa)을 보여주는 회로도이다.
도 4를 참조하면 메모리 블록(BLKa)은 복수의 셀 스트링들(CS11~CS1m, CS21~CS2m)을 포함한다. 실시 예로서, 복수의 셀 스트링들(CS11~CS1m, CS21~CS2m) 각각은 'U'자형으로 형성될 수 있다. 메모리 블록(BLKa) 내에서, 행 방향(즉 +X 방향)으로 m개의 셀 스트링들이 배열된다. 도 4에서, 열 방향(즉 +Y 방향)으로 2개의 셀 스트링들이 배열되는 것으로 도시되었다. 하지만 이는 설명의 편의를 위한 것으로서 열 방향으로 3개 이상의 셀 스트링들이 배열될 수 있음이 이해될 것이다.
복수의 셀 스트링들(CS11~CS1m, CS21~CS2m) 각각은 적어도 하나 이상의 소스 선택 트랜지스터(SST), 제 1 내지 제 n 메모리 셀들(MC1~MCn), 파이프 트랜지스터(PT), 그리고 적어도 하나의 드레인 선택 트랜지스터(DST)을 포함한다.
선택 트랜지스터들(SST, DST) 및 메모리 셀들(MC1~MCn) 각각은 유사한 구조를 가질 수 있다. 실시 예로서, 선택 트랜지스터들(SST, DST) 및 메모리 셀들(MC1~MCn) 각각은 채널층, 터널링 절연막, 전하 저장막 및 블로킹 절연막을 포함할 수 있다. 실시 예로서, 채널층을 제공하기 위한 필라(pillar)가 각 셀 스트링(each cell string)에 제공될 수 있다. 실시 예로서, 채널층, 터널링 절연막, 전하 저장막 및 블로킹 절연막 중 적어도 하나를 제공하기 위한 필라가 각 셀 스트링에 제공될 수 있다.
각 셀 스트링의 소스 선택 트랜지스터(SST)는 공통 소스 라인(CSL)과 메모리 셀들(MC1~MCp) 사이에 연결된다.
실시 예로서, 동일한 행에 배열된 셀 스트링들의 소스 선택 트랜지스터들은 행 방향으로 신장되는 소스 선택 라인에 연결되고, 상이한 행에 배열된 셀 스트링들의 소스 선택 트랜지스터들은 상이한 소스 선택 라인들에 연결된다. 도 4에서, 제 1 행의 셀 스트링들(CS11~CS1m)의 소스 선택 트랜지스터들은 제 1 소스 선택 라인(SSL1)에 연결되어 있다. 제 2 행의 셀 스트링들(CS21~CS2m)의 소스 선택 트랜지스터들은 제 2 소스 선택 라인(SSL2)에 연결되어 있다.
다른 실시 예로서, 셀 스트링들(CS11~CS1m, CS21~CS2m)의 소스 선택 트랜지스터들은 하나의 소스 선택 라인에 공통 연결될 수 있다.
각 셀 스트링의 제 1 내지 제 n 메모리 셀들(MC1~MCn)은 소스 선택 트랜지스터(SST)와 드레인 선택 트랜지스터(DST) 사이에 연결된다.
제 1 내지 제 n 메모리 셀들(MC1~MCn)은 제 1 내지 제 p 메모리 셀들(MC1~MCp)과 제 p+1 내지 제 n 메모리 셀들(MCp+1~MCn)로 구분될 수 있다. 제 1 내지 제 p 메모리 셀들(MC1~MCp)은 +Z 방향과 역방향으로 순차적으로 배열되며, 소스 선택 트랜지스터(SST)와 파이프 트랜지스터(PT) 사이에서 직렬 연결된다. 제 p+1 내지 제 n 메모리 셀들(MCp+1~MCn)은 +Z 방향으로 순차적으로 배열되며, 파이프 트랜지스터(PT)와 드레인 선택 트랜지스터(DST) 사이에서 직렬 연결된다. 제 1 내지 제 p 메모리 셀들(MC1~MCp)과 제 p+1 내지 제 n 메모리 셀들(MCp+1~MCn)은 파이프 트랜지스터(PT)를 통해 연결된다. 각 셀 스트링의 제 1 내지 제 n 메모리 셀들(MC1~MCn)의 게이트들은 각각 제 1 내지 제 n 워드 라인들(WL1~WLn)에 연결된다.
각 셀 스트링의 파이프 트랜지스터(PT)의 게이트는 파이프 라인(PL)에 연결된다.
각 셀 스트링의 드레인 선택 트랜지스터(DST)은 해당 비트 라인과 메모리 셀들(MCp+1~MCn) 사이에 연결된다. 행 방향으로 배열되는 셀 스트링들은 행 방향으로 신장되는 드레인 선택 라인에 연결된다. 제 1 행의 셀 스트링들(CS11~CS1m)의 드레인 선택 트랜지스터들은 제 1 드레인 선택 라인(DSL1)에 연결된다. 제 2 행의 셀 스트링들(CS21~CS2m)의 드레인 선택 트랜지스터들은 제 2 드레인 선택 라인(DSL2)에 연결된다.
열 방향으로 배열되는 셀 스트링들은 열 방향으로 신장되는 비트 라인에 연결된다. 도 4에서, 제 1 열의 셀 스트링들(CS11, CS21)은 제 1 비트 라인(BL1)에 연결되어 있다. 제 m 열의 셀 스트링들(CS1m, CS2m)은 제 m 비트 라인(BLm)에 연결되어 있다.
행 방향으로 배열되는 셀 스트링들 내에서 동일한 워드 라인에 연결되는 메모리 셀들은 하나의 페이지를 구성한다. 예를 들면, 제 1 행의 셀 스트링들(CS11~CS1m) 중 제 1 워드 라인(WL1)과 연결된 메모리 셀들은 하나의 페이지를 구성한다. 제 2 행의 셀 스트링들(CS21~CS2m) 중 제 1 워드 라인(WL1)과 연결된 메모리 셀들은 다른 하나의 페이지를 구성한다. 드레인 선택 라인들(DSL1, DSL2) 중 어느 하나가 선택됨으로써 하나의 행 방향으로 배열되는 셀 스트링들이 선택될 것이다. 워드 라인들(WL1~WLn) 중 어느 하나가 선택됨으로써 선택된 셀 스트링들 중 하나의 페이지가 선택될 것이다.
다른 실시 예로서, 제 1 내지 제 m 비트 라인들(BL1~BLm) 대신 이븐 비트 라인들 및 오드 비트 라인들이 제공될 수 있다. 그리고 행 방향으로 배열되는 셀 스트링들(CS11~CS1m 또는 CS21~CS2m) 중 짝수 번째 셀 스트링들은 이븐 비트 라인들에 각각 연결되고, 행 방향으로 배열되는 셀 스트링들(CS11~CS1m 또는 CS21~CS2m) 중 홀수 번째 셀 스트링들은 오드 비트 라인들에 각각 연결될 수 있다.
실시 예로서, 제 1 내지 제 n 메모리 셀들(MC1~MCn) 중 적어도 하나 이상은 더미 메모리 셀로서 이용될 수 있다. 예를 들어, 적어도 하나 이상의 더미 메모리 셀들은 소스 선택 트랜지스터(SST)와 메모리 셀들(MC1~MCp) 사이의 전계(electric field)를 감소시키기 위해 제공된다. 또는, 적어도 하나 이상의 더미 메모리 셀들은 더미 메모리 셀들은 드레인 선택 트랜지스터(DST)와 메모리 셀들(MCp+1~MCn) 사이의 전계를 감소시키기 위해 제공된다. 더 많은 더미 메모리 셀들이 제공될수록, 메모리 블록(BLKa)에 대한 동작의 신뢰성이 향상되는 반면, 메모리 블록(BLKa)의 크기는 증가한다. 더 적은 메모리 셀들이 제공될수록, 메모리 블록(BLKa)의 크기는 감소하는 반면 메모리 블록(BLKa)에 대한 동작의 신뢰성은 저하될 수 있다.
적어도 하나 이상의 더미 메모리 셀들을 효율적으로 제어하기 위해, 더미 메모리 셀들 각각은 요구되는 문턱 전압을 가질 수 있다. 메모리 블록(BLKa)에 대한 소거 동작 이전 또는 이후에, 더미 메모리 셀들 중 전부 혹은 일부에 대한 프로그램 동작들이 수행될 수 있다. 프로그램 동작이 수행된 뒤에 소거 동작이 수행되는 경우, 더미 메모리 셀들의 문턱 전압은 각각의 더미 메모리 셀들에 연결된 더미 워드 라인들에 인가되는 전압을 제어함으로써 더미 메모리 셀들은 요구되는 문턱 전압을 가질 수 있다.
도 5는 도 3의 메모리 블록들(BLK1~BLKz) 중 어느 하나의 메모리 블록(BLKb)의 다른 실시 예를 보여주는 회로도이다.
도 5를 참조하면 메모리 블록(BLKb)은 복수의 셀 스트링들(CS11'~CS1m', CS21'~CS2m')을 포함한다. 복수의 셀 스트링들(CS11'~CS1m', CS21'~CS2m') 각각은 +Z 방향을 따라 신장된다. 복수의 셀 스트링들(CS11'~CS1m', CS21'~CS2m') 각각은, 메모리 블록(BLK1') 하부의 기판(미도시) 위에 적층된, 적어도 하나의 소스 선택 트랜지스터(SST), 제 1 내지 제 n 메모리 셀들(MC1~MCn) 그리고 적어도 하나의 드레인 선택 트랜지스터(DST)를 포함한다.
각 셀 스트링의 소스 선택 트랜지스터(SST)은 공통 소스 라인(CSL)과 메모리 셀들(MC1~MCn) 사이에 연결된다. 동일한 행에 배열된 셀 스트링들의 소스 선택 트랜지스터들은 동일한 소스 선택 라인에 연결된다. 제 1 행에 배열된 셀 스트링들(CS11'~CS1m')의 소스 선택 트랜지스터들은 제 1 소스 선택 라인(SSL1)에 연결된다. 제 2 행에 배열된 셀 스트링들(CS21'~CS2m')의 소스 선택 트랜지스터들은 제 2 소스 선택 라인(SSL2)에 연결된다. 다른 실시 예로서, 셀 스트링들(CS11'~CS1m', CS21'~CS2m')의 소스 선택 트랜지스터들은 하나의 소스 선택 라인에 공통 연결될 수 있다.
각 셀 스트링의 제 1 내지 제 n 메모리 셀들(MC1~MCn)은 소스 선택 트랜지스터(SST)과 드레인 선택 트랜지스터(DST) 사이에서 직렬 연결된다. 제 1 내지 제 n 메모리 셀들(MC1~MCn)의 게이트들은 각각 제 1 내지 제 n 워드 라인들(WL1~WLn)에 연결된다.
각 셀 스트링의 드레인 선택 트랜지스터(DST)는 해당 비트 라인과 메모리 셀들(MC1~MCn) 사이에 연결된다. 행 방향으로 배열되는 셀 스트링들의 드레인 선택 트랜지스터들은 행 방향으로 신장되는 드레인 선택 라인에 연결된다. 제 1 행의 셀 스트링들(CS11'~CS1m')의 드레인 선택 트랜지스터들은 제 1 드레인 선택 라인(DSL1)에 연결된다. 제 2 행의 셀 스트링들(CS21'~CS2m')의 드레인 선택 트랜지스터들은 제 2 드레인 선택 라인(DSL2)에 연결된다.
결과적으로, 각 셀 스트링에 파이프 트랜지스터(PT)가 제외된 것을 제외하면 도 5의 메모리 블록(BLKb)은 도 4의 메모리 블록(BLKa)과 유사한 등가 회로를 갖는다.
다른 실시 예로서, 제 1 내지 제 m 비트 라인들(BL1~BLm) 대신 이븐 비트 라인들 및 오드 비트 라인들이 제공될 수 있다. 그리고 행 방향으로 배열되는 셀 스트링들(CS11'~CS1m' 또는 CS21'~CS2m') 중 짝수 번째 셀 스트링들은 이븐 비트 라인들에 각각 연결되고, 행 방향으로 배열되는 셀 스트링들(CS11'~CS1m' 또는 CS21'~CS2m') 중 홀수 번째 셀 스트링들은 오드 비트 라인들에 각각 연결될 수 있다.
실시 예로서, 제 1 내지 제 n 메모리 셀들(MC1~MCn) 중 적어도 하나 이상은 더미 메모리 셀로서 이용될 수 있다. 예를 들어, 적어도 하나 이상의 더미 메모리 셀들은 소스 선택 트랜지스터(SST)와 메모리 셀들(MC1~MCn) 사이의 전계(electric field)를 감소시키기 위해 제공된다. 또는, 적어도 하나 이상의 더미 메모리 셀들은 더미 메모리 셀들은 드레인 선택 트랜지스터(DST)와 메모리 셀들(MC1~MCn) 사이의 전계를 감소시키기 위해 제공된다. 더 많은 더미 메모리 셀들이 제공될수록, 메모리 블록(BLKb)에 대한 동작의 신뢰성이 향상되는 반면, 메모리 블록(BLKb)의 크기는 증가한다. 더 적은 메모리 셀들이 제공될수록, 메모리 블록(BLKb)의 크기는 감소하는 반면 메모리 블록(BLKb)에 대한 동작의 신뢰성은 저하될 수 있다.
적어도 하나 이상의 더미 메모리 셀들을 효율적으로 제어하기 위해, 더미 메모리 셀들 각각은 요구되는 문턱 전압을 가질 수 있다. 메모리 블록(BLKb)에 대한 소거 동작 이전 또는 이후에, 더미 메모리 셀들 중 전부 혹은 일부에 대한 프로그램 동작들이 수행될 수 있다. 프로그램 동작이 수행된 뒤에 소거 동작이 수행되는 경우, 더미 메모리 셀들의 문턱 전압은 각각의 더미 메모리 셀들에 연결된 더미 워드 라인들에 인가되는 전압을 제어함으로써 더미 메모리 셀들은 요구되는 문턱 전압을 가질 수 있다.
도 6은 종래의 리드 요청에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 도 6은 호스트로부터 입력된 리드 요청에 응답하여 리드 동작을 수행하는 메모리 컨트롤러의 동작을 설명하는 도면에 해당할 수 있다. 구체적으로, A는 호스트로부터 입력된 리드 요청만을 처리하는 타이밍도를, B는 호스트로부터 입력된 리드 요청과 맵 데이터의 압축을 처리하는 타이밍도를 나타낸 것이다.
A를 참조하면, t1에서 호스트로부터 리드 요청이 입력될 수 있다. 메모리 컨트롤러는 입력된 리드 요청에 응답하여 리드 동작을 수행할 수 있다. 메모리 컨트롤러가 수행하는 리드 동작은, 메모리 장치가 메모리 셀들에 저장된 데이터를 리드 전압을 이용하여 센싱하는 동작일 수 있다.
t3에서 t1에서 입력된 리드 요청에 대응되는 리드 동작의 수행이 종료될 수 있다. 이후, t5에서, 호스트로부터 다음 리드 요청이 입력 되면, 메모리 컨트롤러는 상술한 리드 동작을 수행하고, t6에서, 리드 동작의 수행이 종료될 수 있다.
B는 메모리 컨트롤러에 저장된 맵 데이터가 압축되고 있을 때 리드 요청이 입력된 경우에 해당할 수 있다. 메모리 컨트롤러가 맵 데이터를 압축하고 있는 도중인 t1에서 호스트로부터 리드 요청이 입력되면, 리드 동작은 바로 수행되지 않고 맵 데이터의 압축이 끝나는 t2까지 대기할 수 있다. 이후 t2에서 맵 데이터의 압축이 끝나면, 비로소 t1에서 입력된 리드 요청에 대응되는 리드 동작이 수행될 수 있다. t4에서 t1에 입력된 리드 요청에 대응되는 리드 동작의 수행이 종료될 수 있다.
맵 데이터가 압축되고 있는 도중에 리드 요청이 입력되면 수행 중이던 맵 데이터 압축이 끝날 때까지 리드 동작의 수행이 지연되고, 이에 따라 리드 레이턴시(Read latency)가 발생될 수 있다. 즉, B의 경우는 해당 맵 데이터 압축이 끝날 때까지 호스트로부터 입력된 리드 요청을 처리할 수 없어, 호스트로부터 입력된 리드 요청만을 처리하는 A의 경우보다 t3-t4만큼의 리드 레이턴시가 발생될 수 있다.
도 7은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7을 참조하면, A는 호스트로부터 입력된 리드 요청만을 처리하는 타이밍도를, B는 호스트로부터 입력된 리드 요청과 맵 데이터의 압축을 처리하는 타이밍도를 나타낸 것이다.
B를 참조하면, t1'에 호스트로부터 리드 요청이 입력될 수 있다. 메모리 컨트롤러는 입력된 리드 요청에 응답하여 즉시 리드 동작을 수행할 수 있다. 이후 t2'에서 수행 중이던 리드 동작이 종료될 수 있다. 리드 동작이 종료되고 t4'에서 다음 리드 요청이 들어올 때까지 메모리 컨트롤러는 호스트로부터 입출력 요청이 없는 시간인 유휴시간을 가질 수 있다. 유휴시간은 t1'이전에 호스트로부터 입력된 입출력 요청 정보를 기초로 머신 러닝을 수행하여 호스트로부터 입출력 요청이 없을 것으로 예측된 시간에 해당될 수 있다. 구체적으로, 머신 러닝은 순환 인공 신경망(Recurrent Neural Network, RNN)을 이용하여 수행될 수 있다.
맵 데이터가 압축되는데 소요되는 평균시간이 기준시간에 해당될 수 있다. 기준시간 동안 메모리 컨트롤러는 맵 데이터 저장부에 저장된 맵 데이터를 압축할 수 있다. 기준시간은 실시 예에 따라 맵 데이터를 압축하는 평균시간 외에 다양한 값으로 정의될 수 있다. 메모리 컨트롤러는 기준시간과 유휴시간을 비교하여 리드 동작의 수행이 t2'에 종료된 이후, 맵 데이터를 압축할지 여부를 결정할 수 있다. 유휴시간이 기준시간보다 짧으면, 다음 리드 요청이 입력될 때까지 맵 데이터의 압축이 종료되지 않을 수 있으므로 맵 데이터의 압축을 생략할 수 있다. 반대로, 유휴시간이 기준시간보다 길면, 다음 리드 요청이 입력되기 전에 맵 데이터의 압축이 종료될 수 있으므로 맵 데이터를 압축할 수 있다. 도 7은 기준시간이 유휴시간보다 짧은 경우를 도시하고 있다. 따라서, t2'에 리드 동작의 수행이 종료되고 맵 데이터의 압축이 시작될 수 있다. t3'에 맵 데이터의 압축이 종료되고, 이후 t4'에 다음 리드 요청에 응답하여 새로운 리드 동작이 수행될 수 있다.
도 6과 비교하여, 도 7의 실시 예에 따르면, 메모리 컨트롤러는 입출력 요청 정보를 기초로 머신 러닝을 수행하고, 예측된 유휴시간 내에 맵 데이터를 압축할 수 있다. 따라서, 맵 데이터의 압축이 종료될 때까지 리드 동작을 지연시킴으로 인해 발생하는 리드 레이턴시를 개선할 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 장치도이다.
도 8을 참조하면, 메모리 컨트롤러(200)는 가용시간 예측부(210), 데이터 압축 제어부(220) 및 맵 데이터 저장부(230)를 포함할 수 있다.
가용시간 예측부(210)는 호스트로부터 입출력 요청 정보를 입력 받고, 가용시간 예측 정보를 생성할 수 있다. 가용시간 예측 정보는 데이터 압축 제어부(220)가 맵 데이터를 압축할지 여부에 관한 정보를 포함할 수 있다. 구체적으로, 호스트로부터 입출력 요청이 없을 것으로 예측되는 유휴시간과 맵 데이터가 압축되는데 소요되는 평균적인 시간인 기준시간을 비교한 정보에 해당될 수 있다. 이때, 가용시간 예측부(210)는 머신 러닝을 이용하여 유휴시간을 예측할 수 있다. 구체적으로, 머신 러닝의 모델 중 순환 인공 신경망(Reccurent Neural Network, RNN)을 이용한 것일 수 있다.
데이터 압축 제어부(220)은 가용시간 예측부(210)로부터 입력 받은 가용시간 예측 정보에 따라 맵 데이터 저장부(230)에 저장된 맵 데이터를 압축할 수 있다. 가용시간 예측 정보가 머신 러닝을 통해 예측된 유휴시간이 가용시간에 해당하면 맵 데이터를 압축할 수 있고, 가용시간에 해당되지 않으면 맵 데이터의 압축을 생략할 수 있다. 맵 데이터의 압축에는 델타 압축(Delta compression), 지집(GZIP) 방식을 포함하는 다양한 압축 기법이 사용될 수 있다. 이후, 데이터 압축 제어부(220)는 압축된 맵 데이터를 다시 맵 데이터 저장부(230)에 저장할 수 있다.
맵 데이터 저장부(230)는 데이터 블록의 논리 주소와 물리 주소와의 맵핑 정보인 맵 데이터를 저장할 수 있다. 논리 주소는 호스트 입장에서 관리하는 데이터 블록의 논리적 위치를 지정하는 어드레스에 해당될 수 있다. 물리 주소는 메모리 컨트롤러가 메모리 장치의 실제 데이터 블록의 물리적 위치를 지정하는 어드레스에 해당될 수 있다.
도 9는 도 8의 가용시간 예측부(210)의 동작을 설명하기 위한 도면이다.
도 9를 참조하면, 가용시간 예측부(210)는 제1 전처리부(211), 제1 정보 처리부(212), 제2 전처리부(213), 제2 정보 처리부(214), 제3 정보 처리부(215) 및 제4 정보 처리부(216)를 포함할 수 있다.
가용 시간 예측부(210)는 순환 인공 신경망(Recurrent Neural Network, RNN) 기반의 머신 러닝(Machine learning)을 이용하여 가용시간 예측 정보를 생성할 수 있다. RNN 구조의 출력값은 현재 입력 값뿐만 아니라 시간적으로 이전 데이터의 결과 값에도 영향을 받을 수 있다. RNN의 일종인 장단기 메모리 방식(Long Short Term Memory, LSTM)은 시간이 길어지고 계층이 깊어져도 데이터를 유실하지 않고 유지하는 특징이 있는 유닛에 해당할 수 있다. 즉, LSTM은 장기 또는 단기 기억이 가능하도록 설계된 머신 러닝 유닛에 해당할 수 있다. 본 발명의 실시 예에서는, 복수의 전처리부들(211, 213)에 의해 입출력 요청 정보가 수집되고, LSTM을 적용한 복수의 정보 처리부들(212, 214, 215, 216)을 이용하여 호스트로부터 입출력 요청이 없는 시간인 유휴시간을 예측하기 위한 머신 러닝이 수행될 수 있다.
제1 전처리부(211)는 가용시간 예측 정보를 생성하기 직전에 입력된 입출력 요청 정보인 현재 입출력 요청 정보를 저장할 수 있다. 제1 전처리부(211)는 현재 입출력 요청 정보를 RNN 방식의 머신 러닝에 최적화되도록 처리하는 동작을 수행할 수 있다.
제2 전처리부(213)는 제1 전처리부(211)로부터 입력 받은 과거 입출력 정보를 저장할 수 있다. 과거 입출력 요청 정보는 호스트로부터 현재 입출력 요청 정보가 입력 되기 이전에 입력된 입출력 요청 정보에 해당할 수 있다. 제2 전처리부(213)는 과거 입출력 정보를 RNN 방식의 머신 러닝에 최적화되도록 처리하는 동작을 수행할 수 있다.
제1 정보 처리부(212)는 제1 전처리부(211)에 저장된 현재 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 제1 정보 처리부(212)의 노드들은 이전 계층인 제1 전처리부(211)의 노드들과 완전하게 연결된 구조(Fully Connected Layer)로 구성될 수 있다.
제2 정보 처리부(214)는 제2 전처리부(213)에 저장된 현재 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 제2 정보 처리부(214)의 노드들은 이전 계층인 제2 전처리부(213)의 노드들과 완전하게 연결된 구조(Fully Connected Layer)로 구성될 수 있다.
제3 정보 처리부(215)는 제2 정보 처리부(214)로부터 입력 받은, 1차적으로 머신 러닝이 수행된 과거 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 제3 정보 처리부(215)의 노드들은 이전 계층인 제2 정보 처리부(214)의 노드들과 완전하게 연결된 구조(Fully Connected Layer)로 구성될 수 있다.
제4 정보 처리부(216)는 머신 러닝이 수행된 과거 입출력 요청 정보 및 현재 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 제4 정보 처리부(216)의 노드들은 이전 계층인 제3 정보 처리부(215)의 노드들 및 제1 정보 처리부(212)의 노드들과 완전하게 연결된 구조(Fully Connected Layer)로 구성될 수 있다. 제4 정보 처리부(216)는 반복적인 머신 러닝을 통하여 예측된 유휴시간을, 미리 설정된 기준시간과 비교하여 가용시간 예측 정보를 생성할 수 있다. 가용시간 예측 정보는 예측된 유휴시간이 맵 데이터 압축을 수행될 수 있는 시간에 해당하는지에 관한 정보를 포함할 수 있다. 머신 러닝을 통해 예측된 유휴시간이 기준시간보다 길면, 유휴시간이 가용시간에 해당한다는 가용시간 예측 정보를 생성할 수 있다. 머신 러닝을 통해 예측된 유휴시간이 기준시간보다 짧으면, 유휴시간이 가용시간에 해당하지 않는다는 가용시간 예측 정보를 생성할 수 있다.
가용시간 예측부(210)는 두 개의 전처리부(211, 213)와 네 개의 정보 처리부(212, 214, 215, 216)을 포함하는 것으로 도시하였지만, 이에 한정되지 않을 수 있다.
도 10은 도 8의 데이터 압축 제어부(220)의 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 데이터 압축 제어부(220)는 블록 선택부(221), 유사 검출부(222) 및 압축부(223)을 포함할 수 있다.
데이터 압축 제어부(220)는 맵 데이터 저장부(230)로부터 맵 데이터를 입력 받고, 압축 맵 데이터를 맵 데이터 저장부(230)로 출력할 수 있다.
구체적으로, 블록 선택부(221)는 가용시간 예측부(210)로부터 맵 데이터의 압축 여부에 관한 정보인 가용시간 예측 정보를 입력 받을 수 있다. 가용시간 예측 정보에 따라, 유휴시간이 가용시간이면, 맵 데이터가 지시하는 블록 정보를 기초로 해당 맵 데이터가 압축 대상 맵 데이터인지 결정할 수 있다. 블록 선택부(221)는 맵 데이터가 지시하는 메모리 블록의 블록 정보를 저장할 수 있다. 예를 들어, 블록 정보는 유효 페이지 개수 또는 리드 횟수가 기준 값 이상인 페이지 개수가 포함될 수 있다.
유사 검출부(222)는 블록 선택부(221)로부터 블록 선택 정보를 입력 받고, 압축 대상 맵 데이터의 유사 검출 정보를 출력할 수 있다. 유사 검출 정보는 데이터 간의 차이에 관한 정보에 해당할 수 있다. 델타 압축 방식은 순차적인 데이터 간의 차이(differences) 형식으로 데이터를 압축할 수 있다. 따라서, 데이터 간의 차이가 적을수록 델타 압축 방식은 데이터 간의 중복성을 줄이고 저장되는 데이터의 용량을 감소시킬 수 있다.
압축부(223)는 유사 검출부(222)가 출력한 유사 검출 정보에 따라 맵 데이터를 압축할 수 있다. 압축부(223)는 델타 압축(Delta compression), 지집(GZIP) 을 포함한 다양한 압축 방식에 따라 압축 동작을 수행할 수 있다. 압축부(223)는 유사 검출 정보에 따라 델타 압축 방식을 생략할 수 있다. 예를 들어, 맵 데이터 간의 차이가 일정 기준 값 이상이면, 델타 압축에 따라 압축된 데이터의 크기가 충분히 작지 않을 수 있으므로 델타 압축 방식이 생략될 수 있다. 실시 예에 따라, 델타 압축 또는 지집을 포함한 다양한 압축 방식이 선택적으로 수행될 수 있다. 실시 예에 따라, 다양한 압축 방식들이 중첩적으로 수행될 수도 있다.
도 11은 유효 페이지 개수에 따른 블록 선택부의 실시 예를 설명하기 위한 도면이다.
도 11을 참조하면, 블록 선택부(221)는 유효 페이지의 개수에 따른 대상 블록 정보를 저장할 수 있다.
실시 예에서, 가용시간 예측 정보에 따라 맵 데이터가 압축되기 전에, 압축 대상 맵 데이터가 결정되는 동작이 수행될 수 있다. 압축 대상 맵 데이터는 해당 맵 데이터가 지정하는 메모리 블록들의 블록 정보를 기초로 결정될 수 있다. 블록 정보에는 유효 페이지 개수에 따라 가비지 컬랙션(Garbage Collection, GC)의 대상이 되는 메모리 블록인지 여부가 포함될 수 있으나, 이에 한정되지 않을 수 있다. 이때, 유효 페이지를 적게 포함하는 메모리 블록을 프리 블록으로 만드는 것이, 유효 페이지를 상대적으로 더 많이 포함하는 메모리 블록을 프리 블록으로 만드는 것보다 카피될 유효 페이지의 개수가 적기 때문에 더 효율적일 수 있다. 따라서, GC의 대상이 되는 메모리 블록은 유효 페이지를 적게 포함하는 메모리 블록에 해당할 수 있다. GC를 수행하기 위해서는 해당 메모리 블록에 관한 맵 데이터가 필요할 수 있다. 따라서, GC 수행의 대상이 되는 메모리 블록을 지정하는 맵 데이터는 압축되지 않고 원본 상태로 남아있는 것이 유리할 수 있다.
도 11은 다섯 개의 블록이 각각 포함하는 유효 페이지의 개수를 도시하고 있다. 구체적으로, 제1 블록(BLK1)은 7개의 유효 페이지를, 제2 블록(BLK2)은 4개의 유효 페이지를, 제3 블록(BLK3)은 15개의 유효 페이지를, 제4 블록(BLK4)은 11개의 유효 페이지를, 제5 블록(BLK5)은 19개의 유효 페이지를 포함할 수 있다. 유효 페이지를 가장 적게 포함하는 제2 블록은 카피될 유효 페이지의 수가 4개로 가장 적으므로, 다섯 개의 블록 중 가장 먼저 GC가 수행될 수 있다. 반대로, 가장 많은 유효 페이지를 포함하는 제5 블록은 카피될 유효 페이지의 수가 19개로 가장 많으므로, 다섯 개의 블록 중 가장 나중에 GC가 수행될 수 있다. 제2 블록은 GC의 대상 블록의 우선순위가 가장 높으므로 제2 블록을 지정하는 맵 데이터는 압축되지 않고 원본 데이터 형태로 남아있는 것이 유리할 수 있다. 제5 블록은 GC의 대상 블록의 우선순위가 가장 낮으므로 제5 블록을 지정하는 맵 데이터는 압축 데이터 형태로 저장되는 것이 유리할 수 있다. 따라서, 블록 선택부(221)는 다섯 개의 블록들을 지정하는 맵 데이터 중 제5 블록을 지정하는 맵 데이터를 압축의 대상으로 선택할 수 있다. 블록 선택부(221)가 선택하는 맵 데이터는 하나의 블록을 지정하는 맵 데이터에 한정되지 않을 수 있고, 유효 페이지를 적게 포함하는 순서대로 복수의 메모리 블록들을 지정하는 맵 데이터가 선택될 수 있다.
도 12는 리드 횟수에 따른 블록 선택부의 실시 예를 설명하기 위한 도면이다.
도 12를 참조하면, 블록 선택부(221)는 리드 횟수에 따른 대상 블록 정보를 저장할 수 있다.
실시 예에서, 가용시간 예측 정보에 따라 맵 데이터가 압축되기 전에, 압축될 맵 데이터가 선택되는 동작이 수행될 수 있다. 압축될 맵 데이터는 해당 맵 데이터가 지정하는 메모리 블록들의 블록 정보를 기초로 결정될 수 있다. 블록 정보에는 리드 횟수에 따른 리드 리클레임(Read Reclaim)의 대상이 되는 메모리 블록인지 여부가 포함될 수 있으나, 이에 한정되지 않을 수 있다. 메모리 블록에 포함된 특정 페이지의 리드 횟수가 미리 설정된 기준 값을 초과하면 리드 디스터브(Read disturb)가 일정 수준 이상으로 증가할 수 있다. 따라서, 메모리 컨트롤러는 원본 데이터를 보존하기 위하여, 리드 횟수가 기준 값 이상으로 증가한 페이지가 일정 개수 이상 포함된 메모리 블록에 저장된 데이터를, 다른 메모리 블록에 옮겨 쓰기를 하는 리드 리클레임을 수행할 수 있다. 이때, 리드 리클레임을 수행하기 위해서는 해당 메모리 블록에 관한 맵 데이터가 필요할 수 있다. 따라서, 리드 리클레임 수행의 대상이 되는 메모리 블록을 지정하는 맵 데이터는 압축되지 않고 원본 데이터 형태로 남아있는 것이 유리할 수 있다.
도 12는 다섯 개의 블록이 각각 포함하는 리드 횟수가 기준 값보다 많은 페이지 개수를 도시하고 있다. 구체적으로, 제1 블록(BLK1)은 7개의 리드 횟수가 기준 값보다 많은 페이지를, 제2 블록(BLK2)은 4개의 리드 횟수가 기준 값보다 많은 페이지를, 제3 블록(BLK3)은 15개의 리드 횟수가 기준 값보다 많은 페이지를, 제4 블록(BLK4)은 11개의 리드 횟수가 기준 값보다 많은 페이지를, 제5 블록(BLK5)은 19개의 리드 횟수가 기준 값보다 많은 페이지를 포함할 수 있다. 리드 횟수가 기준 값보다 많은 페이지를 가장 많이 포함하는 제5 블록은 리드 디스터브가 발생할 가능성이 가장 크기 때문에 리드 리클레임이 가장 먼저 수행될 수 있다. 리드 횟수가 기준 값보다 많은 페이지를 가장 적게 포함하는 제2 블록은 리드 디스터브가 발생할 가능성이 가장 적기 때문에 리드 리클레임이 가장 나중에 수행될 수 있다. 따라서, 제5 블록은 리드 리클레임의 우선순위가 가장 높으므로, 제5 블록을 지정하는 맵 데이터는 원본 데이터 형태로 저장되는 것이 유리할 수 있다. 제2 블록은 리드 리클레임의 우선순위가 가장 낮으므로, 제5 블록을 지정하는 맵 데이터는 압축 데이터 형태로 저장되는 것이 유리할 수 있다. 따라서, 블록 선택부(221)는 다섯 개의 블록들을 지정하는 맵 데이터 중 제2 블록을 지정하는 맵 데이터를 압축의 대상으로 선택할 수 있다. 블록 선택부(221)가 선택하는 맵 데이터는 하나의 블록을 지정하는 맵 데이터에 한정되지 않을 수 있고, 리드 횟수가 기준 값보다 많은 페이지를 적게 포함하는 순서대로, 복수의 메모리 블록들을 지정하는 맵 데이터가 선택될 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 13을 참조하면, S1301단계에서, 메모리 컨트롤러는 호스트로부터 입출력 요청이 없을 것으로 예측되는 유휴시간에 관한 정보인 가용시간 예측정보를 생성할 수 있다. 메모리 컨트롤러는 호스트로부터 입출력 요청 정보를 입력 받고, 머신 러닝을 통해 유휴시간을 예측할 수 있다. 예측된 유휴시간을 맵 데이터가 압축되는데 소요되는 평균시간에 해당할 수 있는 기준시간과 비교하여, 맵 데이터의 압축 여부에 관한 정보를 포함하는 가용시간 예측 정보를 생성할 수 있다.
S1303단계에서, 메모리 컨트롤러는 생성된 가용시간 예측 정보에 따라 맵 데이터를 압축할 수 있다. 예측된 유휴시간이 가용시간이라는 가용시간 예측 정보가 생성되면, 메모리 컨트롤러는 맵 데이터를 압축할 수 있다. 예측된 유휴시간이 가용시간이 아니라는 가용시간 예측 정보가 생성되면, 메모리 컨트롤러는 맵 데이터의 압축을 생략할 수 있다.
각각의 단계는 아래의 도 14 및 도 15를 통하여 상세하게 설명될 수 있다.
도 14는 도 13의 가용시간 예측 정보의 생성하는 단계를 상세하게 설명하기 위한 순서도이다.
도 14를 참조하면, S1401단계에서, 메모리 컨트롤러는 호스트로부터 입출력 요청 정보를 수신할 수 있다. 입출력 요청 정보는 호스트가 저장 장치에 프로그램, 리드 동작 등을 요청하는 정보에 해당될 수 있다.
S1403단계에서, 메모리 컨트롤러는 입출력 요청 정보를 제1 전처리부에 저장할 수 있다. 제1 전처리부에 저장되는 입출력 요청 정보는, 가용시간 예측 정보가 생성되기 직전에 호스트로부터 입력된 입출력 요청 정보에 해당될 수 있다. 제1 전처리부는 입출력 요청 정보를 순환 인공 신경망(RNN) 방식의 머신 러닝에 최적화되도록 처리하는 동작을 수행할 수 있다.
S1405단계에서, 메모리 컨트롤러는 입출력 요청 정보를 제2 전처리부에 저장할 수 있다. 제2 전처리부에 저장되는 입출력 요청 정보는, 제1 전처리부로부터 입력된 입출력 요청 정보에 해당될 수 있다. 제2 전처리부는 입출력 요청 정보를 순환 인공 신경망(RNN)방식의 머신 러닝에 최적화되도록 처리하는 동작을 수행할 수 있다.
S1407단계에서, 메모리 컨트롤러는 제1 전처리부에 저장된 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 머신 러닝에는 순환 인공 신경망(RNN) 방식이 이용될 수 있다. 머신 러닝은 제1 전처리로부터 입출력 요청 정보가 입력될 때마다 수행될 수 있다.
S1409단계에서, 메모리 컨트롤러는 제2 전처리부에 저장된 입출력 요청 정보에 대하여 머신 러닝을 수행할 수 있다. 머신 러닝에는 순환 인공 신경망(RNN) 방식이 이용될 수 있다. 머신 러닝은 제2 전처리로부터 입출력 요청 정보가 입력될 때마다 수행될 수 있다.
S1411단계에서, 메모리 컨트롤러는 입출력 요청 정보가 입력된 시간 간격을 경험적으로 학습하고, 호스트로부터 다음 입출력 요청 정보가 입력될 때까지의 유휴시간을 예측할 수 있다. 머신 러닝은 호스트로부터 입출력 요청 정보가 입력될 때마다 수행될 수 있고, 예측된 유휴시간은 그에 따라 증감될 수 있다.
S1413단계에서, 메모리 컨트롤러는 예측된 유휴시간과 미리 설정된 기준시간을 비교하여 가용시간 예측 정보를 생성할 수 있다. 기준시간은 메모리 컨트롤러가 맵 데이터를 압축하는데 소요되는 평균적인 시간에 해당될 수 있으나, 이에 한정되지 않을 수 있다. 예측된 유휴시간이 기준시간보다 길면, 유휴시간 내에 맵 데이터의 압축이 종료될 수 있다고 판단될 수 있다. 따라서, 예측된 유휴시간이 맵 데이터를 압축할 수 있는 가용시간에 해당된다는 정보를 포함하는 가용시간 예측 정보가 생성될 수 있다. 예측된 유휴시간이 기준시간보다 짧으면, 유휴시간 내에 맵 데이터의 압축이 종료될 수 없다고 판단될 수 있다. 따라서, 예측된 유휴시간이 맵 데이터를 압축할 수 있는 가용시간에 해당되지 않는다는 정보를 포함하는 가용시간 예측 정보가 생성될 수 있다.
도 15는 도 13의 맵 데이터를 압축하는 단계를 상세하게 설명하기 위한 순서도이다.
도 15를 참조하면, S1501단계에서, 메모리 컨트롤러는 가용시간 예측 정보를 기초로 예측된 유휴시간이 가용시간에 해당하는지 판단할 수 있다. 유휴시간이 가용시간에 해당되면 S1503단계가 수행될 수 있다. 유휴시간이 가용시간에 해당되지 않으면 맵 데이터가 압축되지 않고 단계가 종료될 수 있다.
S1503단계에서, 메모리 컨트롤러는 맵 데이터가 지정하는 메모리 블록들의 블록 정보를 기초로, 압축될 맵 데이터를 결정할 수 있다. 예를 들어, 메모리 블록이 유효 페이지를 많이 포함할수록 가비지 컬랙션의 대상 블록에 해당되지 않을 가능성이 높으므로, 해당 맵 데이터는 압축 대상으로 결정될 수 있다. 또한, 메모리 블록이 기준 값 이상의 리드 횟수를 포함하는 페이지를 적게 포함할수록 리드 리클레임의 대상 블록에 해당되지 않을 가능성이 높으므로, 해당 맵 데이터는 압축 대상으로 결정될 수 있다.
S1505단계에서, 메모리 컨트롤러는 맵 데이터의 유사성을 검출할 수 있다. 유사성은 맵 데이터 간의 차이(differences)에 해당될 수 있다.
S1507단계에서, 메모리 컨트롤러는 검출한 맵 데이터 간의 차이를 기초로 맵 데이터를 압축할 수 있다. 맵 데이터의 압축에는 델타 압축(Delta compression) 방식을 예를 들어 설명될 수 있다. 델타 압축은 파일 전체가 아니라, 순차적인 데이터 간의 차이 형식으로 데이터를 압축하는 방법에 해당될 수 있다. 델타 압축은 데이터 간의 차이를 저장하므로, 차이가 적을수록 데이터 간의 중복성을 줄이고 저장 용량을 감소시킬 수 있다. 실시 예에 따라, 상술한 델타 압축 방식은 생략되고 다른 압축 기법이 사용될 수 있다. 예를 들어, 지집(GZIP) 방식으로 맵 데이터가 압축될 수 있다.
S1509단계에서, 메모리 컨트롤러는 압축된 맵 데이터를 맵 데이터 저장부에 저장할 수 있다. 맵 데이터를 압축 데이터의 형태로 저장함으로써, 맵 데이터 저장부의 저장 용량을 효율적으로 관리하고, 추가적인 맵 데이터 저장부의 구비에 따른 저장 장치의 크기 증가, 전력 소모 및 비용 증가를 개선할 수 있다.
도 16은 도 1의 메모리 컨트롤러의 다른 실시 예를 설명하기 위한 도면이다.
도 16을 참조하면, 메모리 컨트롤러(1000)는 호스트(Host) 및 메모리 장치에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 메모리 컨트롤러(1000)는 메모리 장치를 액세스하도록 구성된다. 메모리 컨트롤러(1000)는 메모리 장치 및 호스트(Host) 사이에 인터페이스를 제공할 수 있다. 메모리 컨트롤러(1000)는 메모리 장치를 제어하기 위한 펌웨어(firmware)를 구동할 수 있다.
메모리 컨트롤러(1000)는 프로세서부(Processor; 1010), 메모리 버퍼부(Memory Buffer; 1020), 에러 정정부(ECC; 1030), 호스트 인터페이스(Host Interface; 1040), 버퍼 제어부(Buffer Control Circuit; 1050), 메모리 인터페이스(Memory Interface; 1060) 그리고 버스(Bus; 1070)를 포함할 수 있다.
버스(1070)는 메모리 컨트롤러(1000)의 구성 요소들 사이에 채널(channel)을 제공하도록 구성될 수 있다.
프로세서부(1010)는 메모리 컨트롤러(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서부(1010)는 호스트 인터페이스(1040)를 통해 외부의 호스트와 통신하고, 메모리 인터페이스(1060)를 통해 메모리 장치와 통신할 수 있다. 또한 프로세서부(1010)는 버퍼 제어부(1050)를 통해 메모리 버퍼부(1020)와 통신할 수 있다. 프로세서부(1010)는 메모리 버퍼부(1020)를 동작 메모리, 캐시 메모리(cache memory) 또는 버퍼 메모리(buffer memory)로 사용하여 저장장치의 동작을 제어할 수 있다.
프로세서부(1010)는 플래시 변환 계층(FTL)의 기능을 수행할 수 있다. 프로세서부(1010)는 플래시 변환 계층(FTL)을 통해 호스트가 제공한 논리 어드레스(logical address, LA)를 물리 어드레스(physical address, PA)로 변환할 수 있다. 플래시 변환 계층(FTL)은 맵핑 테이블을 이용하여 논리 어드레스(LA)를 입력 받아, 물리 어드레스(PA)로 변환시킬 수 있다. 플래시 변환 계층의 주소 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(Page mapping method), 블록 맵핑 방법(Block mapping method), 그리고 혼합 맵핑 방법(Hybrid mapping method)이 있다.
프로세서부(1010)는 호스트(Host)로부터 수신된 데이터를 랜더마이즈하도록 구성된다. 예를 들면, 프로세서부(1010)는 랜더마이징 시드(seed)를 이용하여 호스트(Host)로부터 수신된 데이터를 랜더마이즈할 것이다. 랜더마이즈된 데이터는 저장될 데이터로서 메모리 장치에 제공되어 메모리 셀 어레이에 프로그램된다.
프로세서부(1010)는 리드 동작 시 메모리 장치로부터 수신된 데이터를 디랜더마이즈하도록 구성된다. 예를 들면, 프로세서부(1010)는 디랜더마이징 시드를 이용하여 메모리 장치로부터 수신된 데이터를 디랜더마이즈할 것이다. 디랜더마이즈된 데이터는 호스트(Host)로 출력될 것이다.
실시 예로서, 프로세서부(1010)는 소프트웨어(software) 또는 펌웨어(firmware)를 구동함으로써 랜더마이즈 및 디랜더마이즈를 수행할 수 있다.
메모리 버퍼부(1020)는 프로세서부(1010)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. 메모리 버퍼부(1020)는 프로세서부(1010)가 실행하는 코드들 및 커맨드들을 저장할 수 있다. 메모리 버퍼부(1020)는 프로세서부(1010)에 의해 처리되는 데이터를 저장할 수 있다. 메모리 버퍼부(1020)는 SRAM(Static RAM), 또는 DRAM(Dynamic RAM)을 포함할 수 있다.
에러 정정부(1030)는 에러 정정을 수행할 수 있다. 에러 정정부(1030)는 메모리 인터페이스(1060)를 통해 메모리 장치에 기입될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩 된 데이터는 메모리 인터페이스(1060)를 통해 메모리 장치로 전달될 수 있다. 에러 정정부(1030)는 메모리 장치로부터 메모리 인터페이스(1060)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다. 예시적으로, 에러 정정부(1030)는 메모리 인터페이스(1060)의 구성 요소로서 메모리 인터페이스(1060)에 포함될 수 있다.
호스트 인터페이스(1040)는 프로세서부(1010)의 제어에 따라, 외부의 호스트와 통신하도록 구성된다. 호스트 인터페이스(1040)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 제어부(1050)는 프로세서부(1010)의 제어에 따라, 메모리 버퍼부(1020)를 제어하도록 구성된다.
메모리 인터페이스(1060)는 프로세서부(1010)의 제어에 따라, 메모리 장치와 통신하도록 구성된다. 메모리 인터페이스(1060)는 채널을 통해 커맨드, 어드레스 및 데이터를 메모리 장치와 통신할 수 있다.
예시적으로, 메모리 컨트롤러(1000)는 메모리 버퍼부(1020) 및 버퍼 제어부(1050)를 포함하지 않을 수 있다.
예시적으로, 프로세서부(1010)는 코드들을 이용하여 메모리 컨트롤러(1000)의 동작을 제어할 수 있다. 프로세서부(1010)는 메모리 컨트롤러(1000)의 내부에 제공되는 비휘발성 메모리 장치(예를 들어, Read Only Memory)로부터 코드들을 로드할 수 있다. 다른 예로서, 프로세서부(1010)는 메모리 장치로부터 메모리 인터페이스(1060)를 통해 코드들을 로드(load)할 수 있다.
예시적으로, 메모리 컨트롤러(1000)의 버스(1070)는 제어 버스(control bus) 및 데이터 버스(data bus)로 구분될 수 있다. 데이터 버스는 메모리 컨트롤러(1000) 내에서 데이터를 전송하고, 제어 버스는 메모리 컨트롤러(1000) 내에서 커맨드, 어드레스와 같은 제어 정보를 전송하도록 구성될 수 있다. 데이터 버스와 제어 버스는 서로 분리되며, 상호간에 간섭하거나 영향을 주지 않을 수 있다. 데이터 버스는 호스트 인터페이스(1040), 버퍼 제어부(1050), 에러 정정부(1030) 및 메모리 인터페이스(1060)에 연결될 수 있다. 제어 버스는 호스트 인터페이스(1040), 프로세서부(1010), 버퍼 제어부(1050), 메모리 버퍼부(1020) 및 메모리 인터페이스(1060)에 연결될 수 있다.
도 17은 본 발명의 실시 예에 따른 저장장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 17을 참조하면, 메모리 카드 시스템(2000)은 메모리 컨트롤러(2100), 메모리 장치 (2200), 및 커넥터(2300)를 포함한다.
메모리 컨트롤러(2100)는 메모리 장치(2200)와 연결된다. 메모리 컨트롤러(2100)는 메모리 장치(2200)를 액세스하도록 구성된다. 메모리 컨트롤러(2100)는 도 1을 참조하여 설명된 메모리 컨트롤러(200)와 동일하게 구현될 수 있다.
예시적으로, 메모리 컨트롤러(2100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
메모리 컨트롤러(2100)는 커넥터(2300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(2100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(2100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embeded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(2300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(2200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 17의 메모리 컨트롤러(2100)는 도 1을 참조하여 설명된 메모리 컨트롤러(200) 또는 도 16를 참조하여 설명된 메모리 컨트롤러(1000)일 수 있다. 또한, 메모리 장치(2200)는 도 1을 참조하여 설명된 메모리 장치(100)일 수 있다.
도 18은 본 발명의 실시 예에 따른 저장장치가 적용된 SSD(Solid State Drive) 시스템을 보여주는 블록도이다.
도 18을 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(3001)를 통해 호스트(3100)와 신호(SIG)를 주고 받고, 전원 커넥터(3002)를 통해 전원(PWR)을 입력 받는다. SSD(3200)는 SSD 컨트롤러(3210), 복수의 플래시 메모리들(3221~322n), 보조 전원 장치(3230), 및 버퍼 메모리(3240)를 포함한다.
본 발명의 실시 예에 따르면, SSD 컨트롤러(3210)는 도 1을 참조하여 설명된 메모리 컨트롤러(200)의 기능을 수행할 수 있다.
SSD 컨트롤러(3210)는 호스트(3100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(3221~322n)을 제어할 수 있다. 예시적으로, 신호(SIG)는 호스트(3100) 및 SSD(3200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호(SIG)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embeded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(3230)는 전원 커넥터(3002)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3230)는 호스트(3100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터의 전원 공급이 원활하지 않을 경우, SSD(3200)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(3230)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3230)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(3240)는 호스트(3100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(3221~322n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(3221~322n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
도 19는 본 발명의 실시 예에 따른 저장장치가 적용된 사용자 시스템을 보여주는 블록도이다.
도 19를 참조하면, 사용자 시스템(4000)은 애플리케이션 프로세서(4100), 메모리 모듈(4200), 네트워크 모듈(4300), 스토리지 모듈(4400), 및 사용자 인터페이스(4500)를 포함한다.
애플리케이션 프로세서(4100)는 사용자 시스템(4000)에 포함된 구성 요소들, 운영체제(OS; Operating System), 또는 사용자 프로그램 등을 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(4100)는 사용자 시스템(4000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(4100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(4200)은 사용자 시스템(4000)의 주 메모리, 동작 메모리, 버퍼 메모리, 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(4200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 비휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예시적으로 애플리케이션 프로세서(4100) 및 메모리 모듈(4200)은 POP(Package on Package)를 기반으로 패키지화되어 하나의 반도체 패키지로 제공될 수 있다.
네트워크 모듈(4300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(4300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, Wi-Fi 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(4300)은 애플리케이션 프로세서(4100)에 포함될 수 있다.
스토리지 모듈(4400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(4400)은 애플리케이션 프로세서(4100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(4400)은 스토리지 모듈(4400)에 저장된 데이터를 애플리케이션 프로세서(4100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(4400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 비휘발성 반도체 메모리 소자로 구현될 수 있다. 예시적으로, 스토리지 모듈(4400)은 사용자 시스템(4000)의 메모리 카드, 외장형 드라이브 등과 같은 탈착식 저장 매체(removable drive)로 제공될 수 있다.
예시적으로, 스토리지 모듈(4400)은 복수의 비휘발성 메모리 장치들을 포함할 수 있고, 복수의 비휘발성 메모리 장치들은 도 1을 참조하여 설명된 메모리 장치(100)와 동일하게 동작할 수 있다. 스토리지 모듈(4400)은 도 1을 참조하여 설명된 저장장치(50)와 동일하게 동작할 수 있다.
사용자 인터페이스(4500)는 애플리케이션 프로세서(4100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(4500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(4500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
50: 저장 장치
100: 메모리 장치
200: 메모리 컨트롤러
210: 가용시간 예측부
220: 데이터 압축 제어부
300: 호스트

Claims (19)

  1. 메모리 장치를 제어하는 메모리 컨트롤러에 있어서,
    호스트로부터 입력된 입출력 요청에 관한 정보인 입출력 요청 정보를 기초로 순환 신경망(Recurrent Neural Network, RNN)을 이용한 머신 러닝 동작을 수행하고, 상기 호스트로부터의 입출력 요청 없을 것으로 예상되는 유휴시간을 예측하는 가용시간 예측부; 및
    상기 유휴시간이 미리 설정된 기준시간보다 길면, 상기 호스트가 제공하는 논리 주소와 상기 메모리 장치에 포함된 메모리 블록의 물리적인 위치를 나타내는 물리 주소와의 맵핑관계를 나타내는 맵 데이터를 압축한 압축 맵 데이터를 생성하는 데이터 압축 제어부를 포함하는 메모리 컨트롤러.
  2. 제 1항에 있어서, 상기 가용시간 예측부는,
    상기 입출력 요청 정보를 머신 러닝에 사용되는 데이터로 변환하는 복수의 전처리부들;
    상기 복수의 전차리부들의 출력을 이용하여 상기 유휴시간을 예측하는 머신 러닝을 수행하고, 상기 유휴시간이 상기 맵 데이터를 압축할 수 있는 시간인 가용시간에 해당하는지에 관한 가용시간 예측 정보를 출력하는 복수의 정보 처리부들을 포함하는 메모리 컨트롤러.
  3. 제 2항에 있어서, 상기 복수의 정보 처리부들은,
    상기 순환 신경망(Recurrent Neural Network, RNN) 방식으로 머신 러닝을 수행하는 메모리 컨트롤러.
  4. 제 3항에 있어서, 상기 복수의 정보 처리부들은,
    장기 또는 단기 기억이 가능하도록 설계된 순환 신경망 방식인 장단기 메모리(Long Short Term Memory, LSTM) 방식으로 머신 러닝을 수행하는 메모리 컨트롤러.
  5. 제 2항에 있어서, 상기 복수의 정보 처리부들은,
    이전 계층의 노드와 현재 계층이 노드가 완전하게 연결된 구조(Fully Connected Layer, FCL)로 구성된 메모리 컨트롤러.
  6. 제 2항에 있어서, 상기 데이터 압축 제어부는,
    상기 유휴시간이 상기 가용시간보다 긴 시간이면, 상기 메모리 블록의 블록 정보에 따라 상기 맵 데이터 중 압축할 데이터인 압축 대상 맵 데이터를 결정하는 블록 선택부;
    상기 압축 대상 맵 데이터간의 차이점을 검출하는 유사 검출부; 및
    상기 압축 대상 맵 데이터를 압축하는 압축부를 포함하는 메모리 컨트롤러.
  7. 제 6항에 있어서, 상기 압축부는,
    델타 압축(Delta compression) 방식으로 상기 압축 대상 맵 데이터를 압축하는 메모리 컨트롤러.
  8. 제 6항에 있어서, 상기 압축부는,
    지집(GZIP) 방식으로 상기 압축 대상 맵 데이터를 압축하는 메모리 컨트롤러.
  9. 제 6항에 있어서, 상기 블록 정보는,
    상기 메모리 블록에 포함된 유효 페이지들의 개수 또는 상기 메모리 블록에 포함된 페이지들에 대한 리드 횟수에 관한 정보를 포함하는 메모리 컨트롤러.
  10. 제 1항에 있어서, 상기 기준시간은,
    상기 맵 데이터가 압축되는데 소요되는 평균적인 시간인 메모리 컨트롤러.
  11. 호스트로부터 입출력 요청 정보를 수신하는 단계;
    순환 신경망(Recurrent Neural Network)을 이용한 머신 러닝을 기초로 상기 호스트로부터 입출력 요청이 없을 것으로 예상되는 시간인 유휴시간을 예측하는 단계; 및
    상기 유휴시간이 미리 설정된 기준시간보다 길면, 데이터 블록의 논리적 위치를 지정하는 논리 주소와 실제 데이터 블록의 물리적 위치를 지정하는 물리 주소와의 맵핑 정보인 맵 데이터를 압축하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  12. 제 11항에 있어서, 상기 유휴시간을 예측하는 단계는,
    상기 입출력 요청 정보를 머신 러닝에 최적화되도록 처리하는 단계;
    상기 입출력 요청 정보를 기초로 상기 유휴시간을 예측하는 머신 러닝을 수행하는 단계; 및
    상기 유휴시간이 상기 맵 데이터를 압축할 수 있는 시간인 가용시간에 해당하는지에 관한 가용시간 예측 정보를 생성하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  13. 제 12항에 있어서, 상기 머신 러닝을 수행하는 단계는,
    장기 또는 단기 기억이 가능하도록 설계된 순환 신경망 방식인 장단기 메모리(Long Short Term Memory) 방식인 메모리 컨트롤러의 동작 방법.
  14. 제 12항에 있어서, 상기 머신 러닝을 수행하는 단계는,
    이전 계층의 노드와 현재 계층이 노드가 완전하게 연결된 구조(Fully Connected Layer)에서 수행되는 메모리 컨트롤러의 동작 방법.
  15. 제 12항에 있어서, 상기 가용시간 예측 정보를 생성하는 단계는,
    이전 계층의 노드와 현재 계층이 노드가 완전하게 연결된 구조(Fully Connected Layer)에서 수행되는 메모리 컨트롤러의 동작 방법.
  16. 제 11항에 있어서, 상기 맵 데이터를 압축하는 단계는,
    순차적인 데이터 간의 차이를 기초로 데이터를 압축하는 델타 압축(delta compression) 방식인 메모리 컨트롤러의 동작 방법.
  17. 제 16항에 있어서, 상기 맵 데이터를 압축하는 단계는,
    지집(GZIP) 방식으로 데이터를 압축하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  18. 제 11항에 있어서, 상기 맵 데이터를 압축하는 단계는,
    상기 맵 데이터를 저장하는 블록들의 블록 정보를 기초로, 압축 대상 맵 데이터를 결정하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  19. 제 18항에 있어서, 상기 블록 정보는,
    상기 메모리 블록에 포함된 유효 페이지 개수 또는 상기 메모리 블록에 포함된 페이지들에 대한 정보를 포함하는 메모리 컨트롤러의 동작 방법.
KR1020190113717A 2019-09-16 2019-09-16 메모리 컨트롤러 및 그것의 동작 방법 KR20210032222A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190113717A KR20210032222A (ko) 2019-09-16 2019-09-16 메모리 컨트롤러 및 그것의 동작 방법
US16/856,851 US11301371B2 (en) 2019-09-16 2020-04-23 Memory controller and operating method thereof
CN202010578829.5A CN112506421B (zh) 2019-09-16 2020-06-23 存储器控制器及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190113717A KR20210032222A (ko) 2019-09-16 2019-09-16 메모리 컨트롤러 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210032222A true KR20210032222A (ko) 2021-03-24

Family

ID=74869503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190113717A KR20210032222A (ko) 2019-09-16 2019-09-16 메모리 컨트롤러 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11301371B2 (ko)
KR (1) KR20210032222A (ko)
CN (1) CN112506421B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11129252B2 (en) * 2020-02-18 2021-09-21 Elemental LED, Inc. Output stabilization of mixed color temperature LED lighting systems
CN114443151A (zh) * 2022-01-14 2022-05-06 山东云海国创云计算装备产业创新中心有限公司 一种轮询方法、装置及计算机可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69223996T2 (de) * 1992-02-11 1998-08-06 Intelligent Instr Corp Adaptiver videodateienprozessor und verfahren für seine anwendung
KR101649357B1 (ko) 2010-05-10 2016-08-19 삼성전자주식회사 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버
KR101718024B1 (ko) * 2010-08-12 2017-04-05 엘지전자 주식회사 모바일 환경에서 데이터 압축 방법 및 이를 이용하는 이동 단말기
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
KR102023351B1 (ko) 2013-03-19 2019-11-04 삼성전자 주식회사 저장 장치 내 할당 촉진을 위한 데이터 분석 방법 및 장치
US9703594B1 (en) * 2015-03-02 2017-07-11 Amazon Technologies, Inc. Processing of long running processes
KR102262550B1 (ko) * 2015-03-03 2021-06-10 에스케이하이닉스 주식회사 복수의 기능 블록들을 포함하는 반도체 장치 및 그것의 동작 방법
KR102656190B1 (ko) 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
US11010431B2 (en) * 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US10732871B2 (en) * 2017-11-01 2020-08-04 Western Digital Technologies, Inc. Storage device and method for adaptive sleep mode transitions
US11591894B2 (en) * 2017-11-15 2023-02-28 Schlumberger Technology Corporation Field operations system with particle filter
US11080611B2 (en) * 2017-12-22 2021-08-03 Intel Corporation Compression for deep learning in case of sparse values mapped to non-zero value
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN110109616B (zh) * 2019-04-02 2022-03-01 天津大学 基于神经网络的命名数据网内容存储池数据删除方法
US11327886B2 (en) * 2019-07-10 2022-05-10 Board Of Trustees Of The University Of Illinois Capturing time-varying storage of data in memory device for data recovery purposes

Also Published As

Publication number Publication date
CN112506421A (zh) 2021-03-16
US20210081313A1 (en) 2021-03-18
CN112506421B (zh) 2024-05-21
US11301371B2 (en) 2022-04-12

Similar Documents

Publication Publication Date Title
KR102596407B1 (ko) 저장 장치 및 그 동작 방법
US10910045B2 (en) Storage device having improved cache performance and method of operating the same
KR20210024912A (ko) 저장 장치 및 그 동작 방법
KR20200066882A (ko) 저장 장치 및 그 동작 방법
KR20210014412A (ko) 메모리 컨트롤러 및 그 동작 방법
US10991432B2 (en) Storage device and method of operating the same
US11194732B2 (en) Storage device and method of operating the same
CN111580744B (zh) 存储器控制器及其操作方法
KR20210055339A (ko) 스토리지 장치 및 그 동작 방법
CN112506421B (zh) 存储器控制器及其操作方法
US11237768B2 (en) Memory device changing memory area in which data is stored and operating method thereof
US10996881B2 (en) Storage device and method of operating the same
KR20220028332A (ko) 저장 장치 및 그 동작 방법
KR20200071599A (ko) 저장 장치 및 그 동작 방법
KR20200076524A (ko) 저장 장치 및 그 동작 방법
KR20190125859A (ko) 저장 장치 및 그 동작 방법
US11481135B2 (en) Storage device and method of operating the storage device
KR20220048377A (ko) 저장 장치 및 그 동작 방법
KR20210054396A (ko) 저장 장치 및 그 동작 방법
KR20210085499A (ko) 저장 장치 및 그 동작 방법
KR20210017908A (ko) 저장 장치 및 그 동작 방법
CN111190535B (zh) 存储装置及其操作方法
KR20230139153A (ko) 메모리 컨트롤러를 포함하는 저장 장치 및 그 동작 방법
KR20210119630A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20220170671A (ko) 스토리지 장치 및 그 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal