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

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

Info

Publication number
KR20210034378A
KR20210034378A KR1020190116261A KR20190116261A KR20210034378A KR 20210034378 A KR20210034378 A KR 20210034378A KR 1020190116261 A KR1020190116261 A KR 1020190116261A KR 20190116261 A KR20190116261 A KR 20190116261A KR 20210034378 A KR20210034378 A KR 20210034378A
Authority
KR
South Korea
Prior art keywords
buffer
memory
memory controller
host
data
Prior art date
Application number
KR1020190116261A
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 KR1020190116261A priority Critical patent/KR20210034378A/ko
Priority to US16/847,555 priority patent/US11288189B2/en
Priority to CN202010577287.XA priority patent/CN112540721A/zh
Priority to US17/000,082 priority patent/US11734175B2/en
Publication of KR20210034378A publication Critical patent/KR20210034378A/ko
Priority to US17/680,149 priority patent/US11762769B2/en
Priority to US18/346,203 priority patent/US20230350803A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/263Arrangements for using multiple switchable power supplies, e.g. battery and AC
    • 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/0646Configuration or reconfiguration
    • G06F12/0684Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/266Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0656Data buffering 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/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 기술은 메모리 장치 및 메모리 컨트롤러로 전원을 공급하는 보조 전원 장치의 상태 및 호스트의 전원 상태를 기초로 새로운 버퍼 메모리 영역을 할당하거나 임시로 저장된 데이터를 메모리 장치에 저장하는 메모리 컨트롤러를 포함한다.

Description

메모리 컨트롤러 및 그것의 동작 방법{MEMORY CONTROLLER AND OPERATING METHOD THEREOF}
본 발명은 보조 전원 장치가 포함된 전자 장치에 관한 것으로, 보다 구체적으로, 본 발명은 메모리 컨트롤러 및 그것의 동작 방법에 관한 것이다.
스토리지 장치는 데이터를 저장하는 장치이다. 스토리지 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다. 메모리 장치(memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리는 크게 노어 타입과 낸드 타입으로 구분된다.
스토리지 장치는 스토리지 장치에 저장된 데이터의 신뢰성을 확보하기 위해 일정 시간 동안 전원을 공급할 수 있는 보조 전원 장치를 포함할 수 있다.
본 발명의 실시 예는 향상된 신뢰도를 갖는 메모리 컨트롤러 및 그것의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러는, 상기 복수의 메모리 영역들에 각각 저장될 데이터를 임시로 저장하는 복수의 버퍼 영역들을 포함하는 버퍼 메모리 장치 및 호스트로부터 상기 복수의 메모리 영역들 이외의 신규 영역의 할당 요청을 수신하면, 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 상태를 기초로, 상기 호스트로부터 제공될 복수의 논리 어드레스들과 상기 신규 영역의 물리 어드레스들이 맵핑된 영역 맵 테이블을 생성하는 버퍼 메모리 제어부를 포함할 수 있다.
본 발명의 실시 예에 따른 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러는, 상기 복수의 메모리 영역들에 각각 저장될 데이터를 임시로 저장하는 복수의 버퍼 영역들을 포함하는 버퍼 메모리 장치 및 상기 메모리 컨트롤러에 제공되는 메인 전원의 공급이 비정상적으로 중단되는 경우에 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원에 관한 정보를 기초로 상기 복수의 버퍼 영역들에 저장된 데이터를 상기 메모리 장치에 저장하도록 상기 버퍼 메모리 및 상기 메모리 장치를 제어하는 버퍼 메모리 제어부를 포함할 수 있다.
본 발명의 실시 예에 따른 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러의 동작 방법은, 호스트로부터 버퍼 할당 요청을 수신하는 단계 및 상기 복수의 메모리 영역들에 각각 대응되는 복수의 버퍼 영역들의 상태에 관한 버퍼 상태 정보 및 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 상태를 나타내는 전원 정보를 기초로 상기 버퍼 할당 요청에 대한 응답을 제공하는 단계를 포함할 수 있다.
본 기술의 실시 예에 따르면, 향상된 신뢰도를 갖는 메모리 컨트롤러 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러를 포함하는 스토리지 장치를 설명하기 위한 도면이다.
도 2는 호스트가 제공하는 버퍼 할당 요청의 의미를 설명하기 위한 도면이다.
도 3은 호스트의 전원 정보에 따라서 버퍼 메모리의 버퍼 영역을 할당하거나, 메모리 장치에 데이터를 저장하는 동작인 플러쉬(flush) 동작을 수행하는 것을 설명하는 내용이다.
도 4는 버퍼 메모리 제어부의 동작을 상세히 설명하기 위한 도면이다.
도 5는 호스트로부터 수신한 요청을 예시적으로 설명하는 도면이다.
도 6은 플러쉬 제어부의 동작을 설명하기 위한 도면이다.
도 7은, 도 6에 이은 플러쉬 제어부의 동작을 설명하기 위한 도면이다.
도 8은, 도 4의 상태 저장부를 예시적으로 설명하기 위한 도면이다.
도 9는, 도 8의 버퍼 상태 정보를 예시적으로 설명하는 도면이다.
도 10은, 도 8의 보조 전원 상태 정보가 갱신되는 것을 설명하기 위한 도면이다.
도 11은 실시 예에 따른 버퍼 메모리 제어부의 동작 방법을 구체적으로 나타낸 순서도이다.
도 12는 도 1의 메모리 컨트롤러의 다른 실시 예를 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 사용자 시스템을 보여주는 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러를 포함하는 스토리지 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 장치(50)는 메모리 장치(100), 메모리 컨트롤러(200) 및 보조 전원 장치(300)을 포함할 수 있다.
스토리지 장치(50)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같이 호스트(400)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
스토리지 장치(50)는 호스트(400)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 스토리지 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 스토리지 장치(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)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 메모리 블록은 메모리 장치(100)에 저장된 데이터를 지우는 소거 동작을 수행하는 단위일 수 있다. 실시 예에서, 메모리 블록은 복수의 페이지들을 포함할 수 있다. 페이지는 메모리 장치(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)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트(floating gate; FG)로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 적용될 수 있다.
실시 예에서, 메모리 장치(100)에 포함된 각각의 메모리 셀들은 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC) 중 어느 하나로 동작할 수 있다.
메모리 장치(100)는 메모리 컨트롤러(200)로부터 커맨드 및 어드레스를 수신할 수 있다. 메모리 장치(100)는 메모리 셀 어레이 중 수신된 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 선택된 영역을 엑세스 한다는 것은 선택된 영역에 대해서 수신된 커맨드에 해당하는 동작을 수행함을 의미한다. 예를 들면, 메모리 장치(100)는 쓰기 동작(프로그램 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(100)는 어드레스에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(100)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(100)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 컨트롤러(200)는 스토리지 장치(50)의 전반적인 동작을 제어할 수 있다.
스토리지 장치(50)에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다. 펌웨어(FW)는 호스트(400)로부터 입력된 요청을 수신하거나 호스트(400)로 응답을 출력하는 호스트 인터페이스 레이어(Host Interface Layer, HIL), 호스트(400)의 인터페이스와 메모리 장치(100)의 인터페이스 사이의 동작을 관리하는 플래시 변환 레이어(Flash Translation Layer, FTL) 및 메모리 장치(100)에 커맨드를 제공하거나, 메모리 장치(100)로부터 응답을 수신하는 플래시 인터페이스 레이어(Flash Interface Layer, FIL)를 포함할 수 있다.
메모리 컨트롤러(200)는 호스트(400)로부터 데이터와 논리 어드레스(Logical Address, LA)를 입력 받고, 논리 어드레스를 메모리 장치(100)에 포함된 데이터가 저장될 메모리 셀들의 주소를 나타내는 물리 어드레스(Physical Address, PA)로 변환할 수 있다. 논리 어드레스는 논리 블록 어드레스(Logical Block Address, LBA)일 수 있고, 물리 어드레스는 물리 블록 어드레스(Physical Block Address, PBA)일 수 있다.
메모리 컨트롤러(200)는 호스트(400)의 요청에 따라 프로그램 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(100)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(200)는 프로그램 커맨드, 물리 블록 어드레스 및 데이터를 메모리 장치(100)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(200)는 리드 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다. 소거 동작 시, 메모리 컨트롤러(200)는 소거 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다.
메모리 컨트롤러(200)는 호스트(400)로부터의 요청과 무관하게 자체적으로 프로그램 동작, 리드 동작 또는 소거 동작을 수행하도록 메모리 장치(100)를 제어할 수 있다. 예를 들면, 메모리 컨트롤러(200)는 웨어 레벨링(wear leveling), 가비지 컬렉션(garbage collection), 리드 리클레임(read reclaim) 등의 배경 동작(background operation)을 수행하기 위해 사용되는 프로그램 동작, 리드 동작 또는 소거 동작을 수행하도록 메모리 장치(100)를 제어할 수 있다.
보조 전원 장치(300)는 메모리 장치(100) 및 메모리 컨트롤러(200)에 보조 전원을 제공할 수 있다. 보조 전원은 스토리지 장치(50)에 인가되는 메인 전원(미도시)이 비정상적인 상태인 경우에, 메모리 장치(100) 및 메모리 컨트롤러(200)에 공급될 수 있다. 예시적으로, 메인 전원(미도시)이 비정상적인 상태는, 메인 전원(미도시)의 전압 레벨이 특정한 전압 레벨보다 같거나 작은 상태일 수 있다. 또는 메인 전원(미도시)의 공급이 비정상적으로 중단되는 경우일 수 있다. 예를 들어, 메인 전원(미도시)이 비정상적인 상태는 서든 파워 오프(SPO)상태일 수 있다. 보조 전원 장치(300)는 복수의 보조 전원 셀(Super Cap, 미도시)들을 포함할 수 있다. 메인 전원의 비정상적인 상태가 감지되면, 복수의 보조 전원 셀들에 충전된 보조 전원이 메모리 장치(100) 및 메모리 컨트롤러(200)에 제공될 수 있다. 제공된 보조 전원을 이용하여 메모리 장치(100) 및 메모리 컨트롤러(200)는 다양한 동작들을 수행할 수 있다. 보조 전원은 메모리 장치 및 메모리 컨트롤러에 제공되는 전력 또는 전력량을 나타낼 수 있다.
비휘발성 메모리 장치에 데이터가 저장되는 시간보다 휘발성 메모리 장치에 데이터가 저장되는 시간이 상대적으로 더 오래 걸릴 수 있다. 호스트(400)의 쓰기 요청에 대한 빠른 응답을 제공하기 위해서, 스토리지 장치(50)는 데이터를 버퍼 메모리(220)에 임시로 저장할 수 있다. 이후, 버퍼 메모리(220)에 저장된 데이터는 메모리 장치(100)에 저장될 수 있다.
버퍼 메모리(220)는 휘발성 메모리 장치일 수 있다. 따라서, 전원이 차단되면, 버퍼 메모리(220)에 저장된 데이터는 유지되지 않을 수 있다.
버퍼 메모리(220)는 전원이 제공되지 않으면 임시로 저장된 데이터를 잃을 수 있다. 스토리지 장치(50)는 메인 전원(미도시)이 비정상적인 상태인 경우에, 보조 전원을 이용하여 버퍼 메모리(220)에 저장된 데이터를 메모리 장치(100)에 저장할 수 있다. 보조 전원 장치(300)는 휘발성 메모리 장치인 버퍼 메모리(220)에 저장된 데이터가 메모리 장치(100)에 저장될 수 있는 시간 동안 보조 전원을 공급할 수 있다.
버퍼 메모리(220)에 저장된 데이터는 호스트(400)로부터 수신한 플러쉬(flush) 동작을 수행하라는 명령에 따라서 메모리 장치(100)에 저장될 수 있다. 플러쉬(flush) 동작은 버퍼 메모리(220)에 임시로 저장된 데이터가 메모리 장치(100)에 저장되는 동작일 수 있다. 플러쉬(flush) 동작을 수행하라는 명령은 주기적으로 메모리 컨트롤러(200)에 입력될 수 있다. 또는 호스트(400)와 무관하게 메모리 컨트롤러(200)가 버퍼 메모리(220)의 상태를 감지하고 플러쉬(flush) 동작을 수행할 수 있다.
버퍼 메모리 제어부(210)는 버퍼 메모리(220)에 버퍼 영역을 할당할 수 있다. 버퍼 영역을 할당하는 것은 호스트로부터 입력된 논리 어드레스에 대응하는 메모리 장치(100)의 물리 어드레스를 맵핑하는 동작일 수 있다. 실시 예에 따른 버퍼 영역을 할당하는 동작은 후술하는 도 2에서 상세히 설명될 것이다.
버퍼 메모리 제어부(210)는 호스트(400)로부터 쓰기 요청을 수신하고, 버퍼 메모리(220)의 상태에 따라서 버퍼 메모리(220)에 버퍼 영역을 할당할 수 있다. 할당된 버퍼 메모리(220)에 호스트(400)로부터 수신한 데이터가 임시로 저장될 수 있다. 또는 버퍼 메모리 제어부(210)는 버퍼 메모리(220)의 상태에 따라 호스트(400)의 쓰기 요청에 대한 지연 응답을 제공하고, 플러쉬(flush) 동작을 수행할 수 있다.
도 1을 참조하면, 버퍼 메모리 제어부(210) 및 버퍼 메모리(220)가 메모리 컨트롤러(200)의 내부에 포함된 것으로 도시되어 있으나, 다양한 실시 예에서, 스토리지 장치(50)에 포함되면서, 메모리 컨트롤러(200)의 외부에 위치할 수 있다.
도 2는 호스트가 제공하는 버퍼 할당 요청의 의미를 설명하기 위한 도면이다.
도 2를 참조하면, 호스트는 스토리지 장치에 쓰기 요청을 제공할 수 있다. 메모리 장치(100)는 복수의 메모리 영역들을 포함할 수 있다. 메모리 영역들은 데이터를 저장하는 메모리 셀을 포함할 수 있다. 복수의 메모리 영역들은 각각 특정 범위의 논리 어드레스들에 대응되는 데이터를 저장하도록 구분될 수 있다. 호스트로부터 입력되는 쓰기 요청의 논리 어드레스들은 각 메모리 영역 순으로 입력되지 않고 랜덤하게 입력될 수 있다. 논리 어드레스의 범위에 따라서 데이터가 구분되어 메모리 영역들에 저장되도록, 본 발명의 실시 예에 따른 스토리지 장치는 복수의 버퍼 영역들을 포함하는 버퍼 메모리(220)를 포함한다. 버퍼 메모리(220)는 복수의 버퍼 영역들을 포함할 수 있다. 복수의 버퍼 영역들은 각각 메모리 장치(100)에 포함된 복수의 메모리 영역들과 대응될 수 있다.
도 2를 참조하면, 어플리케이션마다 서로 다른 논리 어드레스 범위를 가질 수 있다. 어플리케이션은 데이터의 종류를 나타낼 수 있다. 다른 실시 예에서, 어플리케이션은 호스트에 의해 결정되는 데이터의 속성일 수 있다.
어플리케이션1(Application1)에 관한 데이터는 제0 논리 어드레스(LBA 0) 내지 제99 논리 어드레스(LBA 99)를 가질 수 있다. 그리고 어플리케이션2(Application2)에 관한 데이터는 제100 논리 어드레스(LBA 100) 내지 제199 논리 어드레스(LBA 199)를 가질 수 있다. 어플리케이션3(Application3)에 관한 데이터는 제200 논리 어드레스(LBA 200) 내지 제299 논리 어드레스(LBA 299)를 가질 수 있다.
호스트로부터 입력된 쓰기 요청의 논리 어드레스들은 제1 논리 어드레스(LBA 1), 제102 논리 어드레스(LBA 102), 제201 논리 어드레스(LBA 201), 제202 논리 어드레스(LBA 202), 제103 논리 어드레스(LBA 103), 제2 논리 어드레스(LBA 2), 제203 논리 어드레스(LBA 203) 및 제204 논리 어드레스(LBA 204)의 순서로 입력되었다고 가정한다. 이 경우, 각 메모리 영역에 저장될 데이터의 논리 어드레스들은 미리 결정되어 있으므로, 쓰기 요청된 데이터는 해당 메모리 영역에 대응되는 버퍼 영역에 임시로 저장될 수 있다.
실시 예에서, 호스트에서 입력된 쓰기 요청은 버퍼 오픈 요청을 포함할 수 있다. 예를 들어, 앞서 설명한 대로 각각의 논리 어드레스 범위에 대응하는 메모리 영역들이 미리 결정될 수 있다. 따라서, 호스트가 제공하는 특정한 논리 어드레스에 대한 쓰기 요청은 쓰기 요청된 데이터가 특정한 메모리 영역에 저장되는 것을 나타낼 수 있다. 그리고, 그 쓰기 요청은 특정한 메모리 영역에 쓰기 요청된 데이터가 저장되기 전에, 쓰기 요청된 데이터를 임시로 저장하는 특정한 버퍼 영역을 오픈할 것을 요청하는 버퍼 오픈 요청을 포함할 수 있다. 버퍼 오픈 요청이 메모리 컨트롤러에 입력됨에 따라서, 데이터가 저장될 메모리 영역에 대응하는 버퍼 영역이 미리 할당되는 버퍼 오픈 동작이 수행될 수 있다. 오픈된 버퍼 영역은 호스트로부터 수신한 데이터를 임시로 저장할 수 있는 상태일 수 있다. 이하에서 오픈된 버퍼 영역은 할당된 버퍼 영역과 동일하거나 상응하는 의미를 가질 수 있다. 또한 이하에서 버퍼 오픈 요청은 버퍼 할당 요청과 동일하거나 상응하는 의미를 가질 수 있다.
할당된 버퍼 영역은 호스트로부터 수신한 데이터를 임시로 저장하기 위해서 준비되는 영역일 수 있다. 호스트의 쓰기 요청에 따라서 여러 개의 버퍼 영역들이 오픈될 수 있다. 예를 들어, 입력되는 데이터의 논리 어드레스들이 동일한 메모리 영역에 저장되는 것을 나타내지 않을 수 있다. 이러한 경우에, 각각의 메모리 영역에 대응하는 복수의 버퍼 영역들이 오픈될 수 있다. 각각의 버퍼 영역들은 미리 결정된 범위의 논리 어드레스에 대응하는 데이터를 임시로 저장할 수 있다. 따라서, 각각의 버퍼 영역들은 임시로 저장되어 있는 데이터의 양이 상이할 수 있다. 실시 예에 따르면, 어느 순간에서 복수의 버퍼 영역들이 오픈되어 있고, 복수의 버퍼 영역들에 저장된 데이터의 양이 서로 상이할 수 있다. 다른 실시 예에 따르면, 오픈된 버퍼 영역과 오픈되지 않은 버퍼 영역, 즉 할당되지 않은 버퍼 영역이 버퍼 메모리(220)에 함께 존재할 수 있다. 각각의 버퍼 영역들에 저장된 데이터의 양이 미리 정해진 크기에 도달하면, 해당 버퍼 영역에 대응하는 메모리 영역으로 데이터가 전달되도록 플러쉬(flush) 동작이 수행될 수 있다. 플러쉬(flush) 동작은 버퍼 영역 별로 수행될 수 있으므로, 모든 버퍼 영역의 플러쉬(flush) 동작이 동시에 수행되지 않을 수 있다.
다른 실시 예에서, 오픈된 버퍼 영역들의 크기는 서로 다를 수 있다. 오픈된 버퍼 영역들의 크기는 각각의 버퍼 영역들에 최대로 저장될 수 있는 데이터의 양을 나타낼 수 있다. 오픈된 버퍼 영역들의 크기는 플러쉬(flush) 동작의 시작여부를 결정할 수 있다. 예를 들어, 버퍼 메모리(220)에 포함된 복수의 버퍼 영역들 중에서, 제1 버퍼 영역의 최대 크기는 4Kbyte이고, 제2 버퍼 영역의 최대 크기는 8Kbyte 일 수 있다. 제3 버퍼 영역의 최대 크기는 4Kbyte 또는 8Kbyte 중에서 하나 이거나, 어느 것에도 해당하지 않는 다른 크기일 수도 있다. 제1 버퍼 영역에 데이터가 임시로 저장되어 총 저장된 데이터의 크기가 4Kbyte에 도달하면, 데이터가 제1 메모리 영역으로 전달되는 플러쉬(flush) 동작이 수행될 수 있다. 제2 버퍼 영역에 데이터가 임시로 저장되어 총 저장된 데이터의 크기가 8Kbyte에 도달하면, 제2 메모리 영역으로 플러쉬(flush) 동작이 수행될 수 있다. 다른 버퍼 영역도 동일한 방식으로 플러쉬(flush) 동작이 수행될 수 있다. 플러쉬(flush) 동작은 버퍼 영역 별로 수행될 수 있으므로, 모든 버퍼 영역의 플러쉬(flush) 동작이 동시에 수행되지 않을 수 있다.
호스트가 제공하는 쓰기 요청 또는 버퍼 오픈 요청에는, 오픈되는 버퍼 영역의 크기를 나타내는 정보를 더 포함할 수 있다. 도 2를 참조하면, 호스트는 제102 논리 어드레스(LBA 102) 및 제103 논리 어드레스(LBA 103)를 쓰기 요청할 수 있다. 쓰기 요청에는 버퍼 영역의 크기에 관한 정보도 포함할 수 있다. 예시로써, 호스트로부터 수신한 쓰기 요청은 4Kbyte의 버퍼 영역의 크기에 관한 정보를 포함하는 것으로 가정한다. 제102 논리 어드레스(LBA 102) 및 제103 논리 어드레스(LBA 103)를 갖는 데이터가 임시로 저장될 제2 버퍼 영역의 크기는 호스트로부터 수신한 쓰기 요청에 따라서 4Kbyte로 결정될 수 있다. 즉 호스트가 제공하는 쓰기 요청에 따라서 오픈되는 버퍼 영역의 크기가 결정될 수 있다.
도 2를 참조하면, 입력된 순서에 상관 없이, 각각의 쓰기 요청된 데이터는 미리 결정된 버퍼 영역에 임시로 저장될 수 있다. 제1 논리 어드레스(LBA 1) 및 제2 논리 어드레스(LBA 2)에 해당하는 데이터는 제1 버퍼 영역에 저장될 수 있다. 마찬가지로, 제102 논리 어드레스(LBA 102) 및 제103 논리 어드레스(LBA 103)에 해당하는 데이터는 제2 버퍼 영역에 저장될 수 있다. 제201 논리 어드레스(LBA 201) 내지 제204 논리 어드레스(LBA 204)에 해당하는 데이터는 제3 버퍼 영역에 저장될 수 있다.
제1 버퍼 영역에 저장된 데이터는 메모리 장치(100)의 제1 메모리 영역에 저장될 수 있다. 버퍼 메모리(220)의 제2 버퍼 영역에 저장된 데이터는 메모리 장치(100)의 제2 메모리 영역에 저장될 수 있다. 버퍼 메모리(220)의 제3 버퍼 영역에 저장된 데이터는 메모리 장치(100)의 제3 메모리 영역에 저장될 수 있다. 설명한 방법에 따르면, 데이터의 논리 어드레스에 따라서 구분되는 메모리 영역에 데이터가 각각 저장될 수 있다.
메모리 장치(100)에 포함된 메모리 영역들은 메모리 셀들을 포함할 수 있다. 메모리 영역들은 각각 소거될 수 있다. 즉, 각각의 메모리 영역들은 메모리 장치(100)의 소거동작의 단위인 메모리 블록 또는 메모리 블록의 양의 정수 배일 수 있다. 만약 어플리케이션1에 관한 데이터가 소거되도록 요청이 입력되면, 제1 메모리 영역에 저장된 데이터가 소거될 것이다. 제2 메모리 영역 및 제3 메모리 영역에 저장된 어플리케이션2의 및 어플리케이션3의 데이터는 제1 메모리 영역의 소거 동작에 영향을 받지 않을 수 있다. 즉, 제1 메모리 영역에 저장된 데이터가 소거되더라도, 다른 메모리 영역인 제2 메모리 영역 및 제3 메모리 영역에 저장된 데이터는 그대로 유지될 수 있다.
실시 예에 따르면, 호스트는 메모리 컨트롤러에 버퍼 할당 요청을 제공할 수 있다. 버퍼 할당 요청은 데이터가 저장될 수 있도록 버퍼 메모리(220)의 영역을 할당하도록 요청하는 것일 수 있다. 버퍼 메모리의 영역을 할당하는 것은 새로 입력된 논리 어드레스에 대응하는 물리 어드레스를 맵핑하는 동작 일 수 있다. 즉, 호스트의 버퍼 할당 요청에 따라서, 입력될 논리 어드레스들과 대응되는 메모리 영역의 물리 어드레스들이 맵핑된 영역 맵 테이블이 생성될 수 있다. 영역 맵 테이블은 해당 메모리 영역에 저장될 데이터의 논리 어드레스들과 데이터가 저장될 영역의 물리 어드레스들 간의 맵핑관계를 포함할 수 있다. 실시 예에서, 영역 맵 테이블은 해당 영역에 저장될 시작 논리 어드레스, 종료 논리 어드레스 또는 가장 마지막에 입력된 논리 어드레스에 관한 정보를 포함할 수 있다. 또는 영역 맵 테이블은 해당 메모리 영역에 다음으로 데이터가 저장될 위치에 관한 정보를 포함할 수 있다.
예를 들어, 호스트로부터 어플리케이션1에 관한 데이터가 쓰기 요청될 수 있다. 또는 호스트로부터 제1 버퍼 영역 할당 요청이 메모리 컨트롤러에 입력될 수 있다. 어플리케이션1의 논리 어드레스인 제1 논리 어드레스(LBA 1)와 최종적으로 저장될 메모리 장치(100)의 제1 메모리 영역을 나타내는 물리 어드레스가 맵핑된 영역 맵 테이블이 생성될 것이다. 그리고 버퍼 메모리(220)의 제1 버퍼 영역이 오픈될 수 있다. 오픈된 버퍼 영역은 호스트로부터 수신한 데이터가 임시로 저장될 수 있는 상태일 수 있다. 이후에, 제1 버퍼 영역에는 호스트로부터 수신한 어플리케이션1에 관한 데이터가 임시로 저장될 수 있다. 제1 버퍼 영역에 임시로 저장된 어플리케이션1에 관한 데이터는 미리 설정된 시간이 경과한 뒤에 제1 메모리 영역으로 저장되는 플러쉬(flush) 동작이 수행될 수 있다. 또는 제1 버퍼 영역에 미리 설정된 데이터 크기만큼 입력되면 제1 메모리 영역으로 저장되는 플러쉬(flush) 동작이 수행될 수 있다.
다음으로, 호스트로부터 어플리케이션2에 관한 데이터가 쓰기 요청될 수 있다. 제1 버퍼 영역에 LBA1에 대응하는 어플리케이션1의 데이터가 임시로 저장되어있고, 제1 버퍼 영역에는 아직 데이터가 저장되지 않은 영역이 존재할 수 있다. 호스트는 어플리케이션1에 관한 데이터와 어플리케이션2에 관한 데이터를 서로 다른 메모리 영역에 저장되도록 제어하기 위해, 제1 버퍼 영역과 다른 제2 버퍼 영역을 할당할 것을 요청할 수 있다. 이에 따라서, 어플리케이션2의 논리 어드레스인 제102 논리 어드레스(LBA 102)와 최종적으로 저장될 메모리 장치(100)의 제2 메모리 영역을 나타내는 물리 어드레스가 맵핑된 영역 맵 테이블이 생성될 것이다. 그리고 버퍼 메모리(220)의 제2 버퍼 영역이 오픈될 수 있다. 제2 버퍼 영역에는 호스트로부터 수신한 어플리케이션2에 관한 데이터가 임시로 저장될 수 있다.
다음으로, 호스트로부터 어플리케이션3에 관한 데이터가 쓰기 요청될 수 있다. 버퍼 메모리(220)는 제1 버퍼 영역 및 제2 버퍼 영역이 할당된 상태이고, 각각의 버퍼 영역은 데이터가 비어 있는 영역이 존재할 수 있다. 호스트는 어플리케이션1 및 어플리케이션2에 관한 데이터가 저장되는 메모리 영역과 다른 메모리 영역에 어플리케이션3에 관한 데이터가 저장되도록 제어할 수 있다. 따라서 제1 버퍼 영역도 아니고 제2 버퍼 영역도 아닌 제3 버퍼 영역을 할당할 것을 요청할 수 있다. 이에 따라서, 어플리케이션3의 논리 어드레스인 제201 논리 어드레스(LBA 201) 및 제202 논리 어드레스(LBA 202)와 최종적으로 저장될 메모리 장치(100)의 제3 메모리 영역을 나타내는 물리 어드레스가 맵핑된 영역 맵 테이블이 생성될 것이다. 그리고 버퍼 메모리(220)의 제 3 버퍼 영역이 오픈될 수 있다. 제3 버퍼 영역에는 호스트로부터 수신한 어플리케이션3에 관한 데이터가 임시로 저장될 수 있다.
이후에 다시 호스트로부터 제103 논리 어드레스(LBA 103)을 갖는 어플리케이션2에 관한 데이터가 쓰기 요청될 수 있다. 버퍼 메모리(220)는 어플리케이션2에 관한 데이터를 임시로 저장하는 제2 버퍼 영역이 할당되어 있다. 제2 버퍼 영역 중에서, 제102 논리 어드레스(LBA 102)의 데이터에 이어서 제103 논리 어드레스(LBA 103)의 데이터가 저장될 수 있다. 따라서 제2 버퍼 영역에는, 제102 논리 어드레스(LBA 102)를 갖는 데이터와 제103 논리 어드레스(LBA 103)를 갖는 데이터가 순차적으로 임시 저장될 것이다.
다음으로, 다시 호스트로부터 제2 논리 어드레스(LBA 2)를 갖는 어플리케이션1에 관한 데이터가 쓰기 요청될 수 있다. 버퍼 메모리(220)에는 어플리케이션1에 관한 데이터를 임시로 저장하는 제1 버퍼 영역이 할당되어 있으므로, 제1 논리 어드레스(LBA 1)의 데이터에 이어서, 제2 논리 어드레스(LBA 2)를 갖는 어플리케이션1에 관한 데이터가 임시로 저장될 수 있다. 마찬가지로, 제1 버퍼 영역에는 제1 논리 어드레스(LBA 1)의 데이터와 제2 논리 어드레스(LBA 2)의 데이터가 순차적으로 임시 저장될 것이다.
다음으로, 다시 호스트로부터 제203 논리 어드레스(LBA 203) 및 제204 논리 어드레스(LBA 204)에 해당하는 어플리케이션3에 관한 데이터가 쓰기 요청될 수 있다. 버퍼 메모리(220)에는 어플리케이션3에 관한 데이터를 임시로 저장하는 제3 버퍼 영역이 할당되어 있으므로, 제201 논리 어드레스(LBA 201) 및 제202 논리 어드레스(LBA 202)에 해당하는 데이터에 이어서, 제203 논리 어드레스(LBA 203) 및 제204 논리 어드레스(LBA 204)에 대응하는 어플리케이션3에 관한 데이터가 임시로 저장될 수 있다. 따라서 제3 버퍼 영역에는, 제201 논리 어드레스(LBA 201) 내지 제204 논리 어드레스(LBA 204)를 갖는 데이터가 순차적으로 임시 저장될 것이다.
각 버퍼 영역마다 임시로 저장된 데이터가 메모리 장치(100)에 저장되는 플러쉬 동작이 수행될 수 있다. 따라서, 제1 버퍼 영역에 임시로 저장된 데이터는 메모리 장치(100)의 제1 메모리 영역에 저장될 수 있다. 마찬가지로, 제2 버퍼 영역에 임시로 저장된 데이터는 메모리 장치(100)의 제2 메모리 영역에 저장되고, 제3 버퍼 영역에 임시로 저장된 데이터는 메모리 장치(100)의 제3 메모리 영역에 저장될 수 있다.
실시 예에 따르면, 호스트로부터 어플리케이션1 내지 어플리케이션3에 관한 데이터가 혼합되어 입력되었으나, 각 메모리 영역들에 대응하는 버퍼 영역들을 할당함으로써 각각의 어플리케이션의 데이터가 분리되어 저장될 수 있다. 즉, 실시 예에 따르면 랜덤(random) 방식으로 쓰기 요청된 데이터가 시퀀셜(sequential) 방식으로 기입되는 효과를 가질 수 있다. 시퀀셜(sequential) 방식으로 기입된 데이터는 호스트로부터 리드 요청이 입력되면 빠른 속도로 리드되어 호스트에 제공될 수 있다.
도 3은 호스트의 전원 정보에 따라서 버퍼 메모리의 버퍼 영역을 할당하거나, 메모리 장치에 데이터를 저장하는 동작인 플러쉬(flush) 동작을 수행하는 것을 설명하는 내용이다.
도 2에서 설명한 것과 같이, 실시 예에 따르면 복수의 버퍼 영역들이 할당될 수 있다. 할당된 버퍼 영역들은 각각 임시로 저장된 데이터의 크기가 상이할 수 있다. 즉 데이터가 가득 찬 버퍼 영역이 존재할 수 있고, 데이터가 비어 있는 영역을 포함하는 버퍼 영역이 함께 존재할 수 있다. 호스트로부터 각각의 어플리케이션 별로 입력되는 데이터의 크기가 다른데, 복수의 어플리케이션마다 구별되는 버퍼 영역들에 데이터를 임시로 저장하기 때문이다.
도 1에서 설명한 것처럼 입력되는 메인 전원이 불안정한 상황에서, 스토리지 장치의 신뢰도를 확보하기 위해서 보조 전원이 공급될 수 있다. 즉, 각각의 버퍼 영역들에 임시로 저장된 데이터가 모두 비휘발성 메모리 장치로 저장되는 동작이 완료되는 것을 보장할 수 있는 크기의 보조 전원이 공급될 수 있다. 또는 각각의 버퍼 영역들에 임시로 저장된 데이터가 모두 비휘발성 메모리 장치로 저장되는 시간 동안에 보조 전원이 공급될 수 있다. 실시 예에서, 할당된 버퍼 영역들의 개수가 증가할수록 필요로 되는 보조 전원의 양이 증가할 수 있다. 또는 버퍼 영역들에 저장된 데이터의 크기가 클수록 필요로 되는 보조 전원의 양이 증가할 수 있다. 필요로 되는 보조 전원의 양이 증가할수록 보조 전원 장치는 더 많은 양의 보조 전원 셀들이 요구될 것이다. 실시 예에 따르면, 제한된 개수의 보조 전원 셀들을 포함하는 스토리지 보조전원장치와 호스트 보조전원장치를 이용하여 데이터의 높은 신뢰도를 확보할 수 있다.
구체적으로, 버퍼 메모리 제어부(210)는 호스트로부터 버퍼 할당 요청을 수신할 수 있다. 그리고 버퍼 메모리 제어부(210)는 호스트로부터 전원 정보를 수신할 수 있다. 전원 정보는 메인 전원의 공급이 비정상적으로 중단되는 경우에 호스트가 메모리 컨트롤러에 제공할 수 있는 전력 또는 전력량에 관한 정보를 포함할 수 있다. 호스트가 제공하는 전력 또는 전력량은 호스트에 포함된 보조 전원 장치의 보조 전원 셀에 의해서 제공될 수 있다.
예를 들어, 전원 정보는 호스트가 메모리 컨트롤러에 제공할 수 있는 전력 또는 전력량의 크기가 미리 결정된 임계값보다 미만임을 나타낼 수 있다. 다른 예에서, 전원 정보는 호스트가 메모리 컨트롤러에 제공할 수 있는 전력 또는 전력량의 크기가 미리 결정된 임계값보다 같거나 큰 것을 나타낼 수 있다.
실시 예에서, 호스트는 메모리 컨트롤러에 전력 또는 전력량을 제공 할 수 있는 상태를 나타내는 전원 정보를 제공할 수 있다. 또는 호스트가 메모리 컨트롤러에 제공할 수 있는 전력 또는 전력량의 크기가 임계값보다 같거나 큰 상태를 나타내는 전원 정보가 제공될 수 있다. 버퍼 메모리(220)에 임시로 저장된 데이터에 대해서 플러쉬(flush) 동작이 수행되는 동안에 필요한 전력 또는 전력량을 호스트로부터 공급받을 수 있는 상태를 의미할 수 있다. 버퍼 메모리 제어부(210)는 전원 정보를 수신하고, 호스트의 요청에 따라 버퍼 영역을 추가로 할당할 수 있다.
다른 실시 예에서, 호스트의 전원 정보에 따라서 할당되는 버퍼 영역의 크기가 변경될 수 있다. 예를 들어, 호스트가 제공하는 전원 정보는 4Kbyte 크기의 데이터가 메모리 장치에 저장되는 것을 보장할 수 있는 전력 또는 전력량 정보를 포함할 수 있다. 이 경우, 호스트의 버퍼 할당 요청에 따라서 할당되는 버퍼 영역의 크기는 4Kbyte로 결정될 수 있다. 또는 호스트가 제공하는 전원 정보는 2Kbyte 크기의 데이터가 메모리 장치에 저장되는 것을 보장할 수 있는 전력 또는 전력량 정보를 포함할 수 있다. 이 경우, 호스트의 버퍼 할당 요청에 따라서 할당되는 버퍼 영역의 크기는 2Kbyte로 결정될 수 있다. 즉, 호스트가 제공하는 전력 또는 전력량 정보에 따라서 할당되는 버퍼 영역의 크기가 결정될 수 있다.
실시 예에서, 호스트는 메모리 컨트롤러에 전력 또는 전력량을 제공 할 수 없는 상태를 나타내는 전원 정보를 제공할 수 있다. 또는 호스트가 메모리 컨트롤러에 제공할 수 있는 전력 또는 전력량의 크기가 미리 결정된 임계값보다 미만이라는 상태를 나타내는 전원 정보가 제공될 수 있다. 버퍼 메모리 제어부(210)는 버퍼 메모리(220)에 임시로 저장된 데이터 중 일부에 대해서 플러쉬(flush) 동작을 수행할 수 있다. 그리고 선택적으로 호스트의 요청에 따라서 버퍼 영역을 추가로 할당할 수 있다.
도 4는 버퍼 메모리 제어부의 동작을 상세히 설명하기 위한 도면이다.
도 4를 참조하면, 버퍼 메모리 제어부(210)는 호스트로부터 수신한 요청에 응답하여 버퍼 영역을 할당할 수 있다. 버퍼 메모리 제어부(210)는 버퍼 할당 관리부(211), 상태 저장부(212) 및 플러쉬 제어부(213)를 포함할 수 있다. 버퍼 메모리(220)는 복수의 버퍼 영역들(제1 버퍼 영역 내지 제4 버퍼 영역 및 비할당 영역)을 포함할 수 있다. 상태 저장부(212) 및 플러쉬 제어부(213)의 구체적인 설명은 후술하는 도 6 내지 도 9에서 설명될 것이다.
구체적으로, 호스트는 데이터를 기입하는 요청을 버퍼 메모리 제어부(210)에 제공할 수 있다. 이하에서 데이터를 기입하는 요청은 버퍼 할당 요청으로 정의 될 수 있다. 도 4를 참조하면, 버퍼 메모리(220)는 제1 버퍼 영역 내지 제4 버퍼 영역이 할당된 상태일 수 있다. 호스트로부터 수신한 버퍼 할당 요청은 할당되어 있는 제1 버퍼 영역 내지 제4 버퍼 영역을 제외한 신규 버퍼 영역을 할당하는 요청으로 가정한다.
실시 예에서, 버퍼 할당 관리부(211)는 상태 저장부(212)에 포함된 버퍼 상태 정보와 미리 설정된 기준 값을 기초로 버퍼 할당 동작을 관리할 수 있다. 버퍼 상태 정보는 할당되어 있는 복수의 버퍼 영역들의 개수를 포함할 수 있다. 또는 버퍼 상태 정보는 할당되어 있는 복수의 버퍼 영역들에 임시로 저장된 데이터의 크기에 관한 정보를 포함할 수 있다. 미리 설정된 기준 값은 스토리지 장치의 보조 전원 장치의 상태에 관한 정보를 포함할 수 있다. 예시적으로, 보조 전원 장치가 제공할 수 있는 보조 전원의 크기에 관한 정보를 포함할 수 있다.
할당되어 있는 복수의 버퍼 영역들의 개수가 미리 설정된 기준 값보다 작으면, 호스트의 요청에 응답하여 신규 버퍼 영역이 할당될 수 있다. 또는 할당되어 있는 복수의 버퍼 영역들에 저장된 데이터의 크기가 미리 설정된 기준 값보다 작으면, 호스트의 요청에 응답하여 신규 버퍼 영역이 할당될 수 있다. 도 4를 참조하면, 제5 버퍼 영역(NEW)이 신규 버퍼 영역으로 할당될 수 있다.
다른 실시 예에서, 할당되어 있는 복수의 버퍼 영역들의 개수 또는 복수의 버퍼 영역들에저장된 데이터의 크기가 미리 설정된 기준 값 이상이면, 호스트의 요청에 대해서 지연 응답을 제공할 수 있다. 그리고 호스트에 전원 정보를 요청할 수 있다. 호스트로부터 수신한 전원 정보는 메모리 컨트롤러에 전력 또는 전력량을 제공할 수 있는 상태를 나타낼 수 있다. 예시적으로, 전원 정보는 호스트가 제공 가능한 전력 또는 전력량의 크기가 미리 결정된 임계값보다 같거다 크다는 정보를 포함할 수 있다. 버퍼 할당 관리부(211)는, 할당된 복수의 버퍼 영역들의 버퍼 상태 정보가 미리 설정된 기준 값보다 이상인 경우에도, 호스트가 전력 또는 전력량을 제공할 수 있는 상태에 있으므로 신규 버퍼 영역을 할당할 수 있다. 다른 실시 예에서, 호스트로부터 수신한 전원 정보가 메모리 컨트롤러에 전력 또는 전력량을 제공할 수 없는 상태를 나타낼 수 있다. 예를 들어, 전원 정보는 호스트가 제공 가능한 전력 또는 전력량의 크기가 미리 결정된 임계값보다 작다는 정보를 포함할 수 있다. 버퍼 할당 관리부(211)는 신규 버퍼 영역을 할당하지 않고, 할당되어 있는 버퍼 영역들에 저장된 데이터를 메모리 장치(100)에 플러쉬(flush) 동작을 수행할 수 있다. 그리고 신규 버퍼 영역을 할당할 수 있다. 신규 버퍼 영역은 플러쉬(flush) 동작이 수행된 버퍼 영역일 수 있다. 또는 신규 버퍼 영역은 플러쉬(flush)동작이 수행된 버퍼 영역 이외의 새로운 영역(예를 들어, 제5 버퍼 영역)일 수 있다. 플러쉬 동작이 수행될 때, 구체적인 플러쉬 제어부(213)의 동작 내용은 도 6 내지 도 7에서 설명될 것이다.
도 5는 호스트로부터 수신한 요청을 예시적으로 설명하는 도면이다.
도 5를 참조하면, 호스트로부터 수신한 쓰기 요청, 즉 버퍼 할당 요청은 다양한 실시 예에 의해서 구현될 수 있다.
(a)를 참조하면, 버퍼 할당 요청은 영역 식별자, 시작 LBA 및 마지막 LBA를 포함할 수 있다. 영역 식별자는 호스트가 쓰기 요청하는 데이터의 어플리케이션 종류를 나타낼 수 있다. 다른 실시 예에서, 영역 식별자는 메모리 장치 내에서 데이터가 저장될 메모리 영역을 나타낼 수 있다. 또는 영역 식별자는 메모리 장치 내에서 데이터가 저장될 메모리 영역과 대응하는 버퍼 영역을 나타낼 수 있다. 시작 LBA 및 마지막 LBA는 각각 쓰기 요청하는 데이터의 시작 LBA 및 마지막 LBA를 나타낼 수 있다. 데이터의 크기는 시작 LBA 및 마지막 LBA의 차이에 해당하는 값으로 계산될 수 있다.
(b)를 참조하면, 버퍼 할당 요청은 영역 식별자, 시작 LBA 및 DATA 크기 정보를 포함할 수 있다. (a)와 중복되는 설명은 생략하고, DATA의 크기 정보를 알면 시작 LBA로부터 마지막 LBA가 계산될 수 있다.
(c)를 참조하면, 버퍼 할당 요청은 시작 LBA 및 마지막 LBA를 포함할 수 있다. LBA의 범위(range)에 따라서 어플리케이션의 종류가 구별될 수 있다. 예를 들면, 도 2에서 설명한 것처럼 어플리케이션1에 관한 데이터의 논리 어드레스는 LBA1 내지 LBA99를 가질 수 있다. 어플리케이션2에 관한 데이터의 논리 어드레스는 LBA101 내지 LBA199를 가질 수 있다. 어플리케이션3에 관한 데이터의 논리 어드레스는 LBA200 내지 LBA299를 가질 수 있다. 따라서 호스트가 제공한 시작 LBA에 따라서 어떤 어플리케이션에 관한 데이터 인지를 알 수 있다. 나아가서 어플리케이션마다 서로 다른 메모리 영역에 저장될 것이므로, 저장될 메모리 영역 또는 그것에 대응하는 버퍼 영역에 관한 정보를 얻게 될 것이다. 데이터의 크기는 시작 LBA 및 마지막 LBA의 차이에 해당하는 값으로 계산될 수 있다.
(d)를 참조하면 버퍼 할당 요청은 시작 LBA 및 DATA 크기 정보를 포함할 수 있다. 마찬가지로 시작 LBA에 따라서 어플리케이션의 종류가 구별될 수 있다. 또한 DATA의 크기 정보를 알면 시작 LBA로부터 마지막 LBA가 계산될 수 있다.
도 6은 플러쉬 제어부의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 버퍼 메모리(220)는 복수의 할당된 버퍼 영역들(제1 버퍼 영역 내지 제10 버퍼 영역)을 포함할 수 있다. 각각의 복수의 버퍼 영역들은 서로 구별되는 어플리케이션에 관한 데이터를 포함할 수 있다. 각각의 복수의 버퍼 영역들에 저장된 데이터의 크기는 서로 상이할 수 있다. 예를 들어 제6 버퍼 영역은, 제 6 버퍼 영역의 전체 크기에 대응하는 데이터를 포함할 수 있다. 즉 제6 버퍼 영역은 데이터가 가득 찬 상태일 수 있다(full). 그리고 제1 버퍼 영역은 가장 작은 크기의 데이터를 포함할 수 있다. 즉 제1 버퍼 영역은 데이터가 가득 찬 상태가 아닐 수 있다(not full).
실시 예에서, 호스트로부터 제1 버퍼 영역 내지 제10 버퍼 영역을 제외한 신규 버퍼 영역을 할당하라는 요청이 입력되고, 호스트가 제공한 전원 정보가 메모리 컨트롤러에 전원을 제공할 수 없는 상태를 나타내는 경우를 가정한다. 도 4의 플러쉬 제어부(213)는 버퍼 메모리(220)의 상태를 감지하거나, 상태 저장부(212)에 저장된 버퍼 상태 정보에 따라서 임시로 저장된 데이터에 대해서 플러쉬(flush) 동작을 수행 할 수 있다. 플러쉬 제어부(213)는 제1 버퍼 영역 내지 제 10 버퍼 영역 중에서 임시로 저장된 데이터가 가장 많은 제6 버퍼 영역을 플러쉬(flush)동작을 수행할 대상으로 결정할 수 있다. 그리고 플러쉬 제어부(213)는 메모리 장치(100) 내에서 제6 버퍼 영역에 대응하는 제6 메모리 영역에 데이터가 저장되도록 메모리 장치(100)를 제어할 수 있다. 설명의 편의를 위해 1 메모리 영역 내지 제10 메모리 영역들이 순차적으로 구분된 것으로 도시되어 있으나, 각각의 메모리 영역들의 순서는 이에 한정되지 않는다.
도 7은, 도 6에 이은 플러쉬 제어부의 동작을 설명하기 위한 도면이다.
도 7을 참조하면, 제6 버퍼 영역은 임시로 저장되어 있던 데이터가 제6 메모리 영역에 저장된 상태를 나타낼 수 있다. 호스트로부터 버퍼 할당 요청이 새로 입력되는 경우에, 제6 버퍼 영역은 다시 데이터를 저장할 수 있다. 이때 버퍼 할당 요청은 제6 메모리 영역이 아닌 다른 메모리 영역에 대응할 수 있다. 예를 들어, 메모리 장치(100)에 포함된 제11 메모리 영역(미도시)에 대한 버퍼 할당 요청이 입력되면, 제6 버퍼 영역은 제11 메모리 영역(메모리)에 저장될 데이터를 임시로 저장하도록 설계될 수 있다. 즉, 버퍼 영역은 물리적으로 고정된 메모리 영역과 대응되는 것이 아니라, 메모리 영역과 동적으로 연동될 수 있다.
플러쉬 제어부(213)는 제6 메모리 영역에 대한 플러쉬(flush) 동작을 수행한 뒤, 나머지 버퍼 영역들 중에서 임시로 저장된 데이터가 가장 많은 제9 버퍼 영역을 다음 플러쉬(flush) 동작이 수행될 대상으로 결정할 수 있다. 그리고 플러쉬 제어부(213)는 메모리 장치(100) 내에서 제9 버퍼 영역에 대응하는 제9 메모리 영역에 데이터가 저장되도록 메모리 장치(100)를 제어할 수 있다. 이 때, 플러쉬 제어부(213)는 제 9 버퍼 영역에 임시로 저장된 데이터에 더미 데이터를 부가하여 플러쉬(flush) 동작을 수행할 수 있다더미 데이터는 호스트로부터 수신한 쓰기 데이터의 크기가 버퍼 영역의 크기에 미달할 때 부가되는 데이터일 수 있다. 설명한 것과 같이, 제9 메모리 영역과 제6 메모리 영역은 구별될 수 있고, 각각에 저장된 데이터는 서로 다른 어플리케이션에 관한 데이터일 것이다.
도 8은, 도 4의 상태 저장부를 예시적으로 설명하기 위한 도면이다.
도 8을 참조하면, 상태 저장부(212)는 버퍼 상태 정보(212-1), 보조 전원 상태 정보(212-2) 및 맵 데이터 정보(212-3)를 포함할 수 있다.
버퍼 상태 정보(212-1)는 버퍼 메모리의 상태에 관한 정보를 포함할 수 있다. 버퍼 상태 정보(212-1)에 관한 보다 상세한 설명은 후술하는 도 9에서 설명한다.
보조 전원 상태 정보(212-2)는 도 1에 도시된 보조 전원 장치(300)의 상태에 관한 정보를 포함할 수 있다. 보조 전원 상태 정보(212-2)는 도 4에서 설명한 미리 설정된 기준 값에 대응될 수 있다. 구체적으로, 보조 전원 장치(300)에 포함된 보조 전원 셀들에 관한 정보를 포함할 수 있다. 보조 전원 셀들은 정상 보조 전원 셀들 및 불량 보조 전원 셀들을 포함할 수 있다. 정상 보조 전원 셀들은 메인 전원의 공급이 비정상적으로 중단되는 경우에 보조 전원을 제공할 수 있는 셀들을 의미할 수 있다. 불량 보조 전원 셀들은 메인 전원의 공급이 비정상적으로 중단되는 경우에 보조 전원을 제공할 수 없는 셀들을 의미할 수 있다.
보조 전원 상태 정보(212-2)는 정상 보조 전원 셀들의 개수 정보 또는 불량 보조 전원 셀들의 개수 정보 중 적어도 하나를 포함할 수 있다. 다른 실시 예에서, 보조 전원 상태 정보(212-2)는 메모리 컨트롤러 및 메모리 장치에 제공될 수 있는 전력 또는 전력량의 크기에 관한 정보를 포함할 수 있다.
보조 전원 장치(300)에 포함된 보조 전원 셀들이 충전 및 방전을 반복한 결과, 일부 보조 전원 셀이 열화 되어 불량 보조 전원 셀이 발생할 수 있다. 불량 보조 전원 셀의 개수가 증가할수록 보조 전원 장치(300)가 공급할 수 있는 보조 전원의 크기가 감소할 수 있다. 보조 전원은 전력 또는 전력량을 의미할 수 있다. 불량 보조 전원 셀의 개수가 증가하거나, 보조 전원 장치(300)가 공급할 수 있는 보조 전원의 크기가 감소하는 변화가 발생하면, 변화된 보조 전원 장치(300)의 상태에 관한 정보가 상태 저장부(212)에 저장될 수 있다. 변화된 보조 전원 장치(300)의 상태에 관한 정보는 미리 설정된 기준값이 될 수 있다. 그리고 호스트로부터 버퍼 할당 요청이 입력되면, 버퍼 할당 관리부는 상태 저장부(212)에 저장되어 있는 보조 전원 상태 정보(212-2)인 미리 설정된 기준 값과, 할당되어 있는 복수의 버퍼 영역들에 관한 버퍼 상태 정보(212-1)를 기초로, 후속 동작을 결정할 수 있다. 즉, 호스트의 요청에 응답하여 버퍼 영역을 추가로 할당할 지 또는 할당된 버퍼 영역들에 임시로 저장된 데이터를 메모리 장치에 저장하는 플러쉬(flush) 동작을 수행할 지 여부를 결정할 수 있다. 즉, 보조 전원 장치(300)가 공급할 수 있는 전력 또는 전력량이 감소하면, 이에 따라 미리 설정된 기준 값도 감소할 수 있다. 감소된 미리 설정된 기준 값과 할당된 복수의 버퍼 영역들에 관한 정보(할당된 버퍼 영역들의 개수 또는 할당된 버퍼 영역들에 저장된 데이터의 양)를 비교할 수 있다. 할당된 복수의 버퍼 영역들에 관한 정보에 대응하는 값이 감소된 미리 설정된 기준 값보다 작으면, 호스트의 요청에 응답하여 버퍼 영역을 추가로 할당할 수 있다. 할당된 복수의 버퍼 영역들에 관한 정보에 대응하는 값이 감소된 미리 설정된 기준 값보다 같거나 크면, 호스트로 전원 정보를 요청할 수 있다.
맵 데이터 정보(212-3)는 호스트로부터 수신한 논리 어드레스에 대응하는 메모리 장치 내의 메모리 영역을 나타내는 물리 어드레스의 맵핑 관계를 포함할 수 있다.
도 9는, 도 8의 버퍼 상태 정보를 예시적으로 설명하는 도면이다.
도 9를 참조하면, 버퍼 상태 정보(212-1)는 할당되어 있는 버퍼 영역들에 관한 정보를 포함할 수 있다. 구체적으로, 버퍼 상태 정보(212-1)는 버퍼 영역 어드레스, 존(ZONE) 식별자 및 저장된 데이터 크기를 포함할 수 있다. 버퍼 영역 어드레스는 버퍼 메모리 중에서 해당 버퍼 영역으로 할당된 위치를 나타내는 어드레스일 수 있다. 존(ZONE) 식별자는 각각의 버퍼 영역들에 대응되는 메모리 영역을 나타낼 수 있다. 저장된 데이터 크기는 각각의 버퍼 영역에 저장되어 있는 데이터의 크기 또는 양을 나타낼 수 있다.
예를 들어, 도 9를 참조하면, 할당된 버퍼 영역들의 개수는 8개일 수 있다. 그리고 각각의 버퍼 영역들에 저장된 데이터의 크기 또는 양은 상이할 수 있다.제1 버퍼 영역의 어드레스는 BFADD1일 수 있다. 제1 버퍼 영역에 임시로 저장된 데이터의 크기는 4Kbyte 일 수 있다. 제2 버퍼 영역의 어드레스는 BFADD2일 수 있다. 제2 버퍼 영역에 임시로 저장된 데이터의 크기는 2Kbyte 일 수 있다. 제3 버퍼 영역에 임시로 저장된 데이터의 크기는 1Kbyte 일 수 있다. 제4 버퍼 영역에 임시로 저장된 데이터의 크기는 2Kbyte 일 수 있다. 제5 버퍼 영역에 임시로 저장된 데이터의 크기는 2Kbyte 일 수 있다. 제6 버퍼 영역에 임시로 저장된 데이터의 크기는 4Kbyte 일 수 있다. 제7 버퍼 영역에 임시로 저장된 데이터의 크기는 2Kbyte 일 수 있다. 제8 버퍼 영역에 임시로 저장된 데이터의 크기는 1Kbyte 일 수 있다.
도 4를 참조하여 설명된 버퍼 할당 관리부(211)는 추가 버퍼 영역의 할당 요청이 입력되면, 버퍼 상태 정보에 포함된 할당된 버퍼 영역의 개수를 기초로 추가 버퍼 영역을 할당할 수 있다. 다른 실시 예에서, 버퍼 상태 정보에 포함된 버퍼 영역들에 저장된 데이터의 크기 정보를 기초로 추가 버퍼 영역을 할당 할 수 있다.
구체적으로, 버퍼 할당 관리부(211)는 보조 전원 상태 정보(212-2)에 포함된 미리 설정된 기준 값과 할당된 복수의 버퍼 영역들의 개수를 비교할 수 있다. 다른 실시 예에서, 버퍼 할당 관리부(211)는 할당된 복수의 버퍼 영역들의 개수와 추가로 호스트가 할당을 요청한 버퍼 영역의 개수를 더한 값을 미리 설정된 기준 값과 비교할 수 있다.
실시 예에서, 추가로 신규 버퍼 영역을 할당하라는 요청이 입력되는 경우에, 보조 전원 장치의 상태는 할당된 버퍼 영역들에 임시로 저장된 데이터들이 메모리 장치에 저장되는 것을 보장할 수 있는 상태일 수 있다. 즉, 보조 전원 장치는 할당된 버퍼 영역들에 임시로 저장된 데이터들이 메모리 장치에 저장되는 시간 동안에 메모리 장치 및 메모리 컨트롤러에 에 제공할 수 있는 전력 또는 전력량을 보유하고 있는 상태일 수 있다. 다른 실시 예에서, 할당되어 있는 버퍼 영역들의 개수는 보조 전원 장치가 플러쉬(flush) 동작의 수행 완료를 보장할 수 있는 버퍼 영역들의 개수인 미리 설정된 기준 값보다 작을 수 있다. 버퍼 할당 관리부(211)는 호스트의 요청에 응답하여 버퍼 영역을 추가로 더 할당할 것이다.
다른 실시 예에서, 추가로 신규 버퍼 영역을 할당하라는 요청이 입력되는 경우에, 보조 전원 장치의 상태가 복수의 버퍼 영역들에 임시로 저장된 데이터들이 메모리 장치에 저장되는 것을 보장할 수 없는 상태인 경우를 가정한다. 즉, 보조 전원 장치가 보장할 수 있는 버퍼 들의 개수인 미리 설정된 기준 값이 할당된 복수의 버퍼 들의 개수보다 더 작거나 같을 수 있다. 버퍼 할당 관리부(211)는 신규 버퍼 영역의 할당을 연기하는 지연 응답을 호스트에 제공할 것이다.
도 4 및 도 9를 참조하면, 버퍼 상태 정보(212-1)가 버퍼 메모리(220)의 외부에 포함된 것으로 도시되어 있으나, 다양한 실시 예에서, 버퍼 메모리(220)에 포함되어 있을 수 있다. 즉, 버퍼 메모리(220)는 복수의 버퍼 영역들에 관한 정보를 포함하는 메타 영역을 포함할 수 있다. 메타 영역은 복수의 버퍼 영역들에 관한 정보인 버퍼 상태 정보(212-1)가 저장되는 공간일 수 있다.
도 10은, 도 8의 보조 전원 상태 정보가 갱신되는 것을 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 컨트롤러는 보조 전원 장치 관리부(214)를 더 포함할 수 있다. 보조 전원 장치 관리부(214)는 메인 전원의 공급이 비정상적인 경우에 보조 전원을 공급하는 보조 전원 장치의 상태를 감지할 수 있다. 즉, 보조 전원 장치 관리부(214)는 보조 전원 장치의 상태를 모니터링할 수 있다. 예를 들어, 보조 전원 장치가 공급할 수 있는 보조 전원의 크기가 변하면, 보조 전원 장치 관리부(214)는 변화된 보조 전원의 크기 정보를 모니터링하고 상태 저장부(212)에 변화된 보조 전원 상태 정보를 제공할 수 있다. 정상 보조 전원 셀들 중에서 일부가 불량 보조 전원 셀로 바뀌면, 공급할 수 있는 보조 전원의 크기가 감소될 것이다. 감소된 보조 전원 크기에 대응하는 정보가 상태 저장부(212)에 저장될 수 있다.
예를 들어 불량 보조 전원 셀이 증가하여 제공 가능한 보조 전원의 크기가 감소된 것을 가정할 수 있다. 메인 전원의 공급이 비정상적으로 중단되는 경우에, 메모리 컨트롤러(200)는 복수의 버퍼 영역들에 임시로 저장된 데이터가 메모리 장치(100)에 저장되도록 메모리 장치(100)를 제어하기 위해 보조 전원을 필요로 한다. 보조 전원 장치의 불량 보조 전원 셀로 인하여 제공 가능한 보조 전원 크기가 감소되면, 버퍼 할당 관리부(211)는 기존에 비하여 더 적은 개수의 버퍼 영역들을 할당해야 한다. 또는 버퍼 할당 관리부(211)는 복수의 버퍼 영역들에 임시로 저장된 데이터의 크기가 감소되도록 복수의 버퍼 영역들을 관리해야 한다. 실시 예에 따르면, 상태 저장부(212)에 저장된 보조 전원 상태 정보가 보조 전원 장치 관리부(214)에 의해서 갱신될 수 있다. 갱신된 보조 전원 상태 정보는, 앞에서 설명한 미리 설정된 기준 값이 되어 할당된 버퍼 영역들의 개수와 비교될 수 있다. 또는 갱신된 보조 전원 상태 정보는 도 4에서 설명한 미리 설정된 기준 값이 되어 할당된 버퍼 영역들에 저장된 데이터의 크기와 비교될 수 있다. 도 10에 도시된 다른 구성들은 큰 차이가 없으므로 중복되는 설명은 생략한다.
도 11은 실시 예에 따른 버퍼 메모리 제어부의 동작 방법을 구체적으로 나타낸 순서도이다.
S1110단계에서, 버퍼 메모리 제어부는 호스트로부터 버퍼 할당 요청을 수신할 수 있다. 버퍼 할당 요청은 할당된 버퍼 영역과 다른 신규 버퍼 영역을 할당하는 요청일 수 있다.
S1120단계에서, 버퍼 메모리 제어부는 할당된 버퍼의 개수와 기준 값을 비교할 수 있다. 버퍼 메모리 제어부는 상태 저장부를 포함할 수 있다. 상태 저장부는 할당된 버퍼의 상태 정보와 스토리지 장치에 포함된 보조 전원의 상태를 나타내는 정보를 포함할 수 있다. 보조 전원의 상태를 나타내는 정보는, 보조 전원이 인가되는 경우에 복수의 버퍼 영역들에 임시로 저장된 데이터들이 메모리 장치에 저장되는 것을 보장할 수 있는 기준 값이 될 수 있다. 기준 값은 보조 전원의 크기에 따라 미리 설정될 수 있다. 보조 전원의 크기가 감소하거나 증가하면, 이에 대응하여 기준 값도 감소하거나 증가할 수 있다. 변화된 기준 값은 상태 저장부에 갱신되어 저장될 수 있다. 현재 할당된 버퍼의 수가 기준 값보다 작으면 S1130 단계로 진행될 수 있다. 현재 할당된 버퍼의 수가 기준 값 이상이면 S1150 단계로 진행될 수 있다.
S1130단계에서, 호스트의 요청에 응답하여 신규 버퍼가 할당되는 버퍼 할당 동작이 수행될 수 있다.
S1140단계에서, 호스트의 요청에 응답하여 버퍼 메모리 제어부는 신규 버퍼 할당을 연기하는 지연 응답을 호스트에 제공할 것이다.
S1160단계에서, 버퍼 메모리 제어부는 호스트로 전원 정보를 요청할 수 있다. 전원 정보는 메인 전원의 공급이 비정상적으로 중단되는 경우에 호스트가 메모리 컨트롤러에 제공할 수 있는 전원에 관한 정보를 포함할 수 있다. 호스트는 요청에 응답하여 전원 정보를 제공할 수 있다.
S1170단계에서, 호스트로부터 수신한 전원 정보는 호스트가 메모리 컨트롤러에 전력 또는 전력량을 제공할 수 있는 상태를 나타내는 인에이블 정보 또는 호스트가 메모리 컨트롤러에 전력 또는 전력량을 제공할 수 없는 상태를 나타내는 디스에이블 정보 중에서 적어도 하나를 포함할 수 있다. 다른 예에서, 전원 정보는 호스트가 제공 가능한 전원의 크기가 미리 결정된 임계값보다 같거다 크다는 정보 또는 미리 결정된 임계값보다 작다는 정보 중에서 적어도 하나를 포함할 수 있다. 호스트로부터 수신한 전원 정보가 인에이블 정보 또는 미리 결정된 임계값보다 같거나 크다는 정보이면 S1130단계로 진행될 수 있다. 호스트로부터 수신한 전원 정보가 디스에이블 정보 또는 미리 결정된 임계값보다 작다는 정보이면 S1180단계로 진행될 수 있다.
S1180단계에서, 버퍼 메모리 제어부는 복수의 버퍼 영역들에 임시로 저장된 데이터를 메모리 장치에 저장하는 플러쉬(flush) 동작을 수행할 수 있다. 실시 예에서, 버퍼 메모리 제어부는 복수의 버퍼 영역들에 저장된 데이터의 크기를 기초로 저장된 데이터의 크기가 큰 버퍼 영역을 우선적으로 선택하여 플러쉬(flush) 동작을 수행할 수 있다. 플러쉬(flush) 동작이 수행된 후에, 다시 할당된 버퍼의 수와 기준 값을 비교하는 S1120단계로 진행될 수 있다. 또는 플러쉬(flush) 동작이 수행된 후에, 호스트에 전원 정보를 요청하고 수신하는 S1160단계로 진행될 수도 있다.
실시 예에 따르면, 스토리지 장치의 보조 전원뿐만 아니라 호스트의 전원에 의해서 할당된 버퍼의 개수가 변동되거나 버퍼에 임시로 저장된 데이터가 메모리 장치에 저장되는 플러쉬(flush) 동작이 수행될 수 있다. 즉, 스토리지 장치의 신뢰도가 향상될 수 있다.
도 12는 도 1의 메모리 컨트롤러의 다른 실시 예를 설명하기 위한 도면이다.
메모리 컨트롤러(1000)는 호스트(Host) 및 메모리 장치에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 메모리 컨트롤러(1000)는 메모리 장치를 액세스하도록 구성된다.
도 12를 참조하면, 메모리 컨트롤러(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)는 호스트(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)에 연결될 수 있다.
실시 예에서, 도 12의 메모리 버퍼부(1020)는 도 1 내지 도 4, 도 6 내지 도 7, 도 10을 참조하여 설명된 버퍼 메모리(220)를 포함할 수 있다. 도 12의 메모리 버퍼부(1020)는 도 8을 참조하여 설명된 상태 저장부(212)를 포함할 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 13을 참조하면, 메모리 카드 시스템(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)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(2100) 또는 메모리 장치(2200)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic DualIn Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric QuadFlat Pack(MQFP), Thin QuadFlatpack(TQFP), Small Outline(SOIC),Shrink Small OutlinePackage(SSOP), Thin Small Outline(TSOP),Thin QuadFlatpack(TQFP), System In Package(SIP), MultiChip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 하나의 반도체 패키지로 제공될 수 있다. 또는, 메모리 장치(2200)는 복수의 불휘발성 메모리 칩들을 포함하고, 복수의 불휘발성 메모리 칩들은 상술된 패키지 방식들을 기반으로 패키지화되어 하나의 반도체 패키지로 제공될 수 있다.
예시적으로, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 메모리 컨트롤러(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) 등과 같은 메모리 카드를 구성할 수 있다.
예시적으로, 메모리 장치(2200)는 도 1을 참조하여 설명된 메모리 장치(100)일 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 14를 참조하면, 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)에 보조 전원을 제공할 수도 있다. 예시적으로, 도 14의 보조 전원 장치(3230)는 도 1을 참조하여 설명된 보조 전원 장치(300)일 수 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(3240)는 호스트(3100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(3221~322n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(3221~322n)의 메타 데이터(예를 들어, 맵핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
예시적으로, 불휘발성 메모리들(3221~322n)은 도 2를 참조하여 설명된 메모리 장치(100)일 수 있다. 실시 예에서, 도 14의 버퍼 메모리(3240)는 도 1 내지 도 4, 도 6 내지 도 7, 도 10을 참조하여 설명된 버퍼 메모리(220)를 포함할 수 있다. 도 14의 버퍼 메모리(3240)는 도 8을 참조하여 설명된 상태 저장부(212)를 포함할 수 있다.
도 15는 본 발명의 실시 예에 따른 메모리 장치를 포함하는 스토리지 장치가 적용된 사용자 시스템을 보여주는 블록도이다.
도 15를 참조하면, 사용자 시스템(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 MultipleAccess), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision MultipleAccess), 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)일 수 있다.
사용자 인터페이스(4500)는 애플리케이션 프로세서(4100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(4500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(4500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
50: 스토리지 장치
100: 메모리 장치
200: 메모리 컨트롤러
210: 버퍼 메모리 제어부
220: 버퍼 메모리
300: 보조 전원 장치
400: 호스트

Claims (22)

  1. 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러에 있어서,
    상기 복수의 메모리 영역들에 각각 저장될 데이터를 임시로 저장하는 복수의 버퍼 영역들을 포함하는 버퍼 메모리 장치; 및
    호스트로부터 상기 복수의 메모리 영역들 이외의 신규 영역의 할당 요청을 수신하면, 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 상태를 기초로, 상기 호스트로부터 제공될 복수의 논리 어드레스들과 상기 신규 영역의 물리 어드레스들이 맵핑된 영역 맵 테이블을 생성하는 버퍼 메모리 제어부;를 포함하는 메모리 컨트롤러.
  2. 제 1항에 있어서, 상기 버퍼 메모리 제어부는,
    상기 복수의 버퍼 영역들의 상태에 관한 버퍼 상태 정보를 포함하는 상태 저장부; 및
    상기 버퍼 상태 정보를 기초로, 상기 전원의 상태를 요청하는 정보인 전원정보요청을 상기 호스트에 제공하는 버퍼 할당 관리부;를 포함하는 메모리 컨트롤러.
  3. 제 2항에 있어서, 상기 버퍼 상태 정보는,
    상기 복수의 버퍼 영역들의 개수에 관한 정보를 포함하는 메모리 컨트롤러.
  4. 제 2항에 있어서, 상기 버퍼 상태 정보는,
    상기 복수의 버퍼 영역들에 저장된 데이터의 크기에 관한 정보를 포함하는 메모리 컨트롤러.
  5. 제 3항에 있어서, 상기 버퍼 할당 관리부는,
    상기 복수의 버퍼 영역들의 개수가 미리 설정된 기준 값 이상이면, 상기 전원정보요청을 상기 호스트에 제공하는 메모리 컨트롤러.
  6. 제 4항에 있어서, 상기 버퍼 할당 관리부는,
    상기 복수의 버퍼 영역들에 저장된 데이터의 크기가 미리 설정된 기준 값 이상이면, 상기 전원정보요청을 상기 호스트에 제공하는 메모리 컨트롤러.
  7. 제 5항에 있어서, 상기 미리 설정된 기준 값은,
    상기 메모리 컨트롤러에 제공되는 메인 전원의 공급이 비정상적으로 중단되는 경우에 상기 메모리 컨트롤러에 제공될 보조 전원을 이용하여 상기 메모리 장치에 저장될 수 있는 데이터의 크기에 대응되는 메모리 컨트롤러.
  8. 제 4항에 있어서, 상기 상태 저장부는,
    상기 메모리 컨트롤러에 보조 전원을 제공하는 보조 전원 장치의 상태에 관한 보조 전원 상태 정보를 더 포함하고,
    상기 복수의 버퍼 영역들의 개수에 대응하는 미리 설정된 기준 값은 상기 보조 전원 상태 정보에 따라 결정되는 메모리 컨트롤러.
  9. 제 8항에 있어서,
    상기 보조 전원 장치에 포함된 불량 전원 셀들의 개수 또는 정상 전원 셀들의 개수를 기초로 상기 보조 전원 상태 정보를 갱신하는 보조 전원 장치 관리부;를 더 포함하는 메모리 컨트롤러.
  10. 제 2항에 있어서, 상기 상태 저장부는,
    상기 복수의 메모리 영역들에 저장된 데이터의 논리 어드레스 및 물리 어드레스 간의 맵핑 관계를 각각 나타내는 복수의 메모리 영역 맵핑 테이블들을 포함하는 맵 데이터 정보를 포함하는 메모리 컨트롤러.
  11. 제 1항에 있어서, 상기 복수의 메모리 영역들은,
    각각 데이터가 저장된 영역과 데이터가 비어있는 영역을 포함하는 메모리 컨트롤러.
  12. 제 1항에 있어서,
    상기 복수의 버퍼 영역들에 각각 저장된 데이터의 크기는 서로 다른 메모리 컨트롤러.
  13. 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러에 있어서,
    상기 복수의 메모리 영역들에 각각 저장될 데이터를 임시로 저장하는 복수의 버퍼 영역들을 포함하는 버퍼 메모리 장치; 및
    상기 메모리 컨트롤러에 제공되는 메인 전원의 공급이 비정상적으로 중단되는 경우에 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원에 관한 정보를 기초로 상기 복수의 버퍼 영역들에 저장된 데이터를 상기 메모리 장치에 저장하도록 상기 버퍼 메모리 및 상기 메모리 장치를 제어하는 버퍼 메모리 제어부;를 포함하는 메모리 컨트롤러.
  14. 제 13항에 있어서, 상기 버퍼 메모리 제어부는,
    상기 복수의 버퍼 영역들의 상태에 관한 버퍼 상태 정보를 포함하는 상태 저장부; 및
    상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 크기가 미리 결정된 임계값보다 미만이라는 전원에 관한 정보에 응답하여, 상기 버퍼 상태 정보를 기초로, 상기 복수의 버퍼 영역들에 저장된 데이터 중 일부를 상기 메모리 장치에 저장하도록 상기 버퍼 메모리 장치 및 상기 메모리 장치를 제어하는 플러쉬 제어부를 포함하는 메모리 컨트롤러.
  15. 제 13항에 있어서, 상기 버퍼 메모리 제어부는,
    상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 크기가 미리 결정된 임계값보다 같거나 크다는 전원에 관한 정보에 응답하여, 상기 복수의 메모리 영역들 이외의 신규 영역을 할당하는 메모리 컨트롤러.
  16. 제 14항에 있어서, 상기 미리 결정된 임계값은,
    상기 호스트가 제공할 데이터를 메인 전원의 공급이 비정상적으로 중단되는 경우에 상기 메모리 장치에 저장되는 것을 보장할 수 있는 전원의 크기에 따라 결정되는 메모리 컨트롤러.
  17. 제 14항에 있어서, 상기 버퍼 메모리 제어부는,
    상기 호스트에 상기 복수의 메모리 영역들 이외의 신규 영역의 할당을 연기하는 지연응답을 제공하는 버퍼 할당 관리부를 더 포함하는 메모리 컨트롤러.
  18. 제 14항에 있어서, 상기 버퍼 상태 정보는,
    상기 복수의 버퍼 영역들에 저장된 데이터의 크기에 관한 정보를 포함하는 메모리 컨트롤러.
  19. 제 18항에 있어서, 상기 플러쉬 제어부는,
    상기 복수의 버퍼 영역들 중 저장된 데이터의 크기가 상대적으로 큰 버퍼 영역에 저장된 데이터를 상기 메모리 장치에 저장하도록 상기 버퍼 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러.
  20. 제 18항에 있어서, 상기 플러쉬 제어부는,
    상기 복수의 버퍼 영역들 중 선택된 버퍼 영역에 저장된 데이터 및 더미 데이터를 상기 복수의 메모리 영역들 중 상기 선택된 버퍼 영역에 대응되는 메모리 영역에 저장하도록 상기 버퍼 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러.
  21. 제 14항에 있어서, 상기 버퍼 메모리 제어부는,
    상기 복수의 버퍼 영역들에 저장된 데이터 중 일부를 상기 메모리 장치에 저장한 뒤, 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원에 관한 정보를 상기 호스트에 재요청하는 메모리 컨트롤러.
  22. 복수의 메모리 영역들을 포함하는 메모리 장치의 동작을 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    호스트로부터 버퍼 할당 요청을 수신하는 단계; 및
    상기 복수의 메모리 영역들에 각각 대응되는 복수의 버퍼 영역들의 상태에 관한 버퍼 상태 정보 및 상기 호스트가 상기 메모리 컨트롤러에 제공할 수 있는 전원의 상태를 나타내는 전원 정보를 기초로 상기 버퍼 할당 요청에 대한 응답을 제공하는 단계;를 포함하는, 메모리 컨트롤러의 동작 방법.
KR1020190116261A 2019-08-22 2019-09-20 메모리 컨트롤러 및 그것의 동작 방법 KR20210034378A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020190116261A KR20210034378A (ko) 2019-09-20 2019-09-20 메모리 컨트롤러 및 그것의 동작 방법
US16/847,555 US11288189B2 (en) 2019-09-20 2020-04-13 Memory controller and method of operating the same
CN202010577287.XA CN112540721A (zh) 2019-09-20 2020-06-22 存储器控制器及其操作方法
US17/000,082 US11734175B2 (en) 2019-08-22 2020-08-21 Storage device and method of operating the same
US17/680,149 US11762769B2 (en) 2019-09-20 2022-02-24 Memory controller based on flush operation and method of operating the same
US18/346,203 US20230350803A1 (en) 2019-08-22 2023-07-01 Storage device and method of operating the same

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
KR20210034378A true KR20210034378A (ko) 2021-03-30

Family

ID=74880125

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190116261A KR20210034378A (ko) 2019-08-22 2019-09-20 메모리 컨트롤러 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11288189B2 (ko)
KR (1) KR20210034378A (ko)
CN (1) CN112540721A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210094773A (ko) * 2020-01-22 2021-07-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US11070621B1 (en) * 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
US11720287B1 (en) * 2021-11-29 2023-08-08 Cadence Design Systems, Inc. System and method for memory management
EP4286981A1 (en) * 2022-05-31 2023-12-06 Samsung Electronics Co., Ltd. Storage device preventing loss of data in situation of lacking power and operating method thereof

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20070150645A1 (en) 2005-12-28 2007-06-28 Intel Corporation Method, system and apparatus for power loss recovery to enable fast erase time
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR100825802B1 (ko) 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US7752489B2 (en) 2007-05-10 2010-07-06 International Business Machines Corporation Data integrity validation in storage systems
KR101449524B1 (ko) 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
KR101506675B1 (ko) 2008-12-09 2015-03-30 삼성전자주식회사 보조 전원 장치를 갖는 사용자 장치
US8347041B2 (en) 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
KR101602939B1 (ko) * 2009-10-16 2016-03-15 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
KR20110046243A (ko) 2009-10-27 2011-05-04 삼성전자주식회사 사용자 장치 및 그것의 맵핑 데이터 관리 방법
KR101636248B1 (ko) 2009-12-10 2016-07-06 삼성전자주식회사 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
TWI399644B (zh) 2009-12-24 2013-06-21 Univ Nat Taiwan 非揮發記憶體區塊管理方法
JP5553309B2 (ja) 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
US8595414B2 (en) 2010-09-30 2013-11-26 Apple Inc. Selectively combining commands for a system having non-volatile memory
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
CN105138287B (zh) * 2012-07-22 2018-11-20 北京忆恒创源科技有限公司 存储设备、中断控制方法以及供电时间测量方法
US9690695B2 (en) 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
CN103049070B (zh) * 2012-12-27 2015-09-02 加弘科技咨询(上海)有限公司 缓存数据的掉电保护方法及计算机设备
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
JP6020278B2 (ja) * 2013-03-21 2016-11-02 富士通株式会社 自律分散型キャッシュ配置制御システム
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
KR102218735B1 (ko) 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
US9383927B2 (en) 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device
US9418699B1 (en) 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9507711B1 (en) 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
KR102447471B1 (ko) 2015-06-24 2022-09-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR20180024615A (ko) 2016-08-30 2018-03-08 삼성전자주식회사 보조 전력을 공급하기 위한 커패시터들을 포함하는 전자 장치의 전력 및 성능 관리 방법
JP2018073040A (ja) * 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
US10564888B2 (en) 2016-11-09 2020-02-18 Sandisk Technologies Llc Method and system for visualizing a correlation between host commands and storage system performance
KR102610537B1 (ko) 2016-11-10 2023-12-06 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 이를 포함하는 저장 시스템
US10698817B2 (en) * 2017-06-12 2020-06-30 Dell Products, L.P. Method for determining available stored energy capacity at a power supply and system therefor
US10733100B2 (en) 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
US20180364938A1 (en) 2017-06-14 2018-12-20 Burlywood, LLC Extent-based data location table management
US10643707B2 (en) 2017-07-25 2020-05-05 Western Digital Technologies, Inc. Group write operations for a data storage device
US10289557B2 (en) 2017-08-28 2019-05-14 Western Digital Technologies, Inc. Storage system and method for fast lookup in a table-caching database
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
WO2019126072A1 (en) 2017-12-18 2019-06-27 Formulus Black Corporation Random access memory (ram)-based computer systems, devices, and methods
KR20190087217A (ko) 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11048645B2 (en) * 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US11157179B2 (en) * 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
EP3866013A1 (en) * 2020-02-11 2021-08-18 Aptiv Technologies Limited Data logging system for collecting and storing input data

Also Published As

Publication number Publication date
CN112540721A (zh) 2021-03-23
US20210089447A1 (en) 2021-03-25
US11288189B2 (en) 2022-03-29

Similar Documents

Publication Publication Date Title
KR102291803B1 (ko) 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
US11288189B2 (en) Memory controller and method of operating the same
US11461226B2 (en) Storage device including memory controller
US11561785B2 (en) Storage device and method of operating the same
US20230418485A1 (en) Host device, storage device, and electronic device
US20210200469A1 (en) Memory controller having data compressor and method of operating the same
US11520519B2 (en) Storage device and method of operating the same
US11762769B2 (en) Memory controller based on flush operation and method of operating the same
US11775211B2 (en) Memory controller and method of operating the same
US11922048B2 (en) Memory controller managing map data and operating method thereof
US11436148B2 (en) Memory controller and method of operating the same
KR20230037240A (ko) 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
US11455249B2 (en) Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system
US11599275B2 (en) Memory controller for controlling power loss recovery and method of operating the same
US20220391133A1 (en) Memory controller and memory system including the same
US20230103797A1 (en) Memory controller and method of operating the same
US20240004578A1 (en) Memory system and method of operating memory controller included in the memory system
KR20240019429A (ko) 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법
KR20220159269A (ko) 스토리지 장치 및 그 동작 방법
KR20220159268A (ko) 호스트 장치, 스토리지 장치 및 전자 장치