KR20200053204A - 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 - Google Patents

저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 Download PDF

Info

Publication number
KR20200053204A
KR20200053204A KR1020180136538A KR20180136538A KR20200053204A KR 20200053204 A KR20200053204 A KR 20200053204A KR 1020180136538 A KR1020180136538 A KR 1020180136538A KR 20180136538 A KR20180136538 A KR 20180136538A KR 20200053204 A KR20200053204 A KR 20200053204A
Authority
KR
South Korea
Prior art keywords
data
bank
storage device
striping size
stream
Prior art date
Application number
KR1020180136538A
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 KR1020180136538A priority Critical patent/KR20200053204A/ko
Priority to US16/413,755 priority patent/US10942679B2/en
Priority to CN201911057357.2A priority patent/CN111159061B/zh
Publication of KR20200053204A publication Critical patent/KR20200053204A/ko
Priority to US17/167,772 priority patent/US11537324B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0623Address space extension for memory modules
    • 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
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/1056Simplification
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 스트림 별로 스트라이핑 정책을 적용하는 저장 장치, 저장 장치의 동작 방법 및 호스트의 동작 방법을 제공한다. 본 발명의 하나의 실시 예에 따른 복수의 뱅크들을 포함하는 저장 장치의 동작 방법은 호스트로부터 스트림 식별 정보를 포함하는 쓰기 커맨드를 수신하는 단계, 쓰기 커맨드에 응답하여 스트림 식별 정보에 대응하는 스트라이핑 크기를 기반으로 복수의 뱅크들 중 데이터가 저장될 뱅크를 할당하는 단계, 및 할당된 뱅크로 데이터를 쓰는 단계를 포함한다.

Description

저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법{STORAGE DEVICE, OPERATING METHOD OF STORAGE DEVICE AND OPERATING METHOD OF HOST CONTROLLING STORAGE DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스트림(stream) 별로 스트라이핑(striping) 정책을 적용하는 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법에 관한 것이다.
반도체 메모리는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
대용량의 데이터를 저장하기 위해, 일반적으로 불휘발성 메모리 장치가 이용될 수 있다. 그러나, 불휘발성 메모리 장치의 전송 속도의 한계로 인해 대용량의 데이터를 저장하는데 있어서 지연 시간이 발생될 수 있다. 데이터를 저장하는데 있어서 지연 시간을 감소시키기 위해, 복수의 불휘발성 메모리 장치들이 이용될 수 있다. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러는 복수의 불휘발성 메모리 장치들을 이용하여 스트라이핑(striping)을 수행할 수 있다. 스트라이핑은 불휘발성 메모리 장치들에 데이터를 분산하여 저장하는 기술이다. 스트라이핑 크기에 따라 데이터가 저장되는 불휘발성 메모리 장치들의 개수가 달라질 수 있다.
메모리 컨트롤러가 고정된 스트라이핑 크기를 가지는 경우, 데이터의 특성(예를 들어, 스트림 아이디(ID))과 관계없이 모든 데이터에 대하여 동일한 스트라이핑 정책이 적용될 수 있다. 이 경우, 호스트(host)의 요구 성능이 고려되지 않고 스트라이핑이 수행되므로, 호스트가 원하는 성능을 달성하지 못할 수 있다.
본 발명의 목적은 호스트의 요구 성능을 고려하여 스트림 별로 스트라이핑 정책을 적용할 수 있는 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법을 제공하는데 있다.
또한, 본 발명의 목적은 호스트가 스트라이핑 크기를 선택할 수 있도록 호스트와 저장 장치 간에 인터페이스 프로토콜(protocol)을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 복수의 뱅크들을 포함하는 저장 장치의 동작 방법은 호스트(host)로부터 스트림(stream) 식별 정보를 포함하는 쓰기 커맨드를 수신하는 단계, 상기 쓰기 커맨드에 응답하여 상기 스트림 식별 정보에 대응하는 스트라이핑(striping) 크기를 기반으로 상기 복수의 뱅크들 중 데이터가 저장될 뱅크를 할당하는 단계, 및 상기 할당된 뱅크로 상기 데이터를 쓰는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 복수의 뱅크들을 포함하는 저장 장치를 제어하는 호스트의 동작 방법은 스트림 별로 스트라이핑 크기를 선택하는 단계, 및 상기 선택된 스트라이핑 크기에 대한 스트라이핑 크기 정보 및 상기 선택된 스트라이핑 크기에 대응하는 스트림 식별 정보를 상기 저장 장치로 제공하는 단계를 포함하고, 상기 스트라이핑 크기 정보 및 상기 스트림 식별 정보에 기초하여 상기 복수의 뱅크들 중 데이터가 저장될 뱅크가 할당된다.
본 발명의 하나의 실시 예에 따른 저장 장치는 복수의 뱅크들을 포함하는 메모리 장치, 및 호스트로부터의 스트림 식별 정보를 포함하는 쓰기 커맨드에 응답하여 상기 스트림 식별 정보에 대응하는 스트라이핑 크기를 기반으로 상기 복수의 뱅크들 중 데이터가 저장될 뱅크를 할당하도록 구성되는 메모리 컨트롤러를 포함한다.
본 발명에 따르면, 연속 쓰기 및 연속 읽기 성능, 멀티-스트림 지원 개수 및 저장 장치의 신뢰성을 고려하여 스트라이핑 정책이 적용될 수 있다.
또한, 본 발명에 따르면, 스트림 별로 스트라이핑 정책을 적용함으로써 저장 장치의 버퍼 메모리의 사용량이 감소될 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 전자 시스템의 블록도를 보여준다.
도 2는 본 발명의 하나의 실시 예에 따른 메모리 장치가 데이터를 저장하는 예시를 보여준다.
도 3은 도 1의 저장 장치의 하나의 예시를 보여주는 블록도이다.
도 4a 및 도 4b는 스트라이핑 크기에 따라 데이터가 도 3의 쓰기 버퍼에 저장되는 예시를 보여준다.
도 5는 도 1의 메모리 컨트롤러의 예시를 보여주는 블록도이다.
도 6은 도 1의 호스트와 저장 장치가 수행하는 쓰기 동작의 하나의 예시를 보여주는 도면이다.
도 7은 도 6의 쓰기 동작을 위한 메모리 컨트롤러의 예시적인 동작을 보여주는 도면이다.
도 8은 도 1의 호스트와 저장 장치가 수행하는 쓰기 동작의 다른 예시를 보여주는 도면이다.
도 9는 도 8의 쓰기 동작을 위한 메모리 컨트롤러의 예시적인 동작을 보여주는 도면이다.
도 10은 도 8의 스트라이핑 크기를 매핑 해제하는 동작을 위한 메모리 컨트롤러의 예시적인 동작을 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 SSD 시스템을 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 하나의 실시 예에 따른 전자 시스템(1000)의 블록도를 보여준다. 도 1을 참조하면, 전자 시스템(1000)은 호스트(100) 및 저장 장치(200)를 포함한다.
호스트(100)는 저장 장치(200)의 동작을 제어할 수 있다. 저장 장치(200)의 동작을 제어하기 위해, 호스트(100)는 저장 장치(200)에 커맨드를 제공할 수 있다. 저장 장치(200)는 커맨드에 응답하여 동작을 수행할 수 있다. 예를 들어, 저장 장치(200)는 호스트(100)로부터 제공된 데이터를 저장하거나 저장된 데이터를 호스트(100)로 제공할 수 있다.
저장 장치(200)는 메모리 컨트롤러(210) 및 메모리 장치(220)를 포함할 수 있다. 메모리 컨트롤러(210)는 메모리 장치(220)의 동작을 제어할 수 있다. 메모리 컨트롤러(210)는 호스트(100)로부터 제공된 커맨드에 응답하여 메모리 장치(220)의 동작을 제어할 수 있다. 메모리 장치(220)의 동작을 제어하기 위해, 메모리 컨트롤러(210)는 메모리 장치(220)에 커맨드를 제공할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 호스트(100)로부터 제공된 데이터가 메모리 장치(220)에 쓰여지도록 메모리 장치(220)를 제어할 수 있다. 또는, 메모리 컨트롤러(210)는 메모리 장치(220)에 저장된 데이터가 메모리 장치(220)로부터 출력되도록 메모리 장치(220)를 제어할 수 있다.
메모리 장치(220)는 메모리 컨트롤러(210)의 제어에 따라 동작할 수 있다. 예를 들어, 메모리 장치(220)는 메모리 컨트롤러(210)로부터의 커맨드에 응답하여 데이터를 쓰거나 데이터를 출력할 수 있다. 예를 들어, 메모리 장치(220)는 플래시 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 장치(220)는 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) 등과 같은 불휘발성 메모리 장치 중 적어도 하나를 포함할 수 있다.
메모리 장치(220)는 복수의 뱅크(bank)들(221~23n)(여기서, n 은 0 보다 큰 정수)을 포함할 수 있다. 뱅크들(221~23n) 각각은 대응하는 채널에 연결될 수 있다. 예를 들어, 제1 뱅크 내지 제n 뱅크(221~22n)는 제1 채널(CH1)에 연결되고, 제1 뱅크 내지 제n 뱅크(231~23n)는 제m 채널(CHm)(여기서, m 은 0 보다 큰 정수)에 연결될 수 있다. 뱅크들(221~23n) 각각은 연결된 채널을 통해 메모리 컨트롤러(210)로부터 커맨드 및 데이터를 수신할 수 있다. 예를 들어, 뱅크들(221~23n) 각각은 별도의 다이(die)로 구현될 수 있으나, 본 발명은 이에 한정되지 않는다.
메모리 컨트롤러(210)는 뱅크들(221~23n) 각각에 병렬적으로 접근할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 뱅크(221) 및 제2 뱅크(222) 각각에 병렬적으로 데이터를 쓸 수 있다. 또는, 메모리 컨트롤러(210)는 제1 뱅크(221) 및 제2 뱅크(222) 각각으로부터 병렬적으로 데이터를 출력할 수 있다. 메모리 컨트롤러(210)는 뱅크들(221~23n) 각각에 연결된 채널을 통해 뱅크들(221~23n)에 접근할 수 있다.
예시적으로, 호스트(100)는 다양한 애플리케이션을 실행할 수 있다. 호스트(100)는 애플리케이션 실행에 따라 생성된 데이터를 저장 장치(200)로 저장할 수 있다. 도 1에 도시된 바와 같이, 데이터(DATA)를 저장하기 위해, 호스트(100)는 쓰기 커맨드(HRCMD) 및 데이터(DATA)를 저장 장치(200)로 제공할 수 있다. 메모리 컨트롤러(210)는 쓰기 커맨드(HRCMD)에 응답하여 데이터(DATA)를 메모리 장치(220)에 저장할 수 있다. 데이터(DATA)를 저장하기 위해, 메모리 컨트롤러(210)는 쓰기 커맨드(CRCMD) 및 데이터(DATA)를 메모리 장치(220)로 제공할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 뱅크들(221~23n) 중 하나로 쓰기 커맨드(CRCMD) 및 데이터(DATA)를 제공할 수 있다. 쓰기 커맨드(CRCMD)를 수신한 뱅크는 데이터(DATA)를 저장할 수 있다.
호스트(100)로부터의 쓰기 커맨드(HRCMD)는 스트림 식별 정보(즉, 스트림 ID)를 포함할 수 있다. 스트림 식별 정보는 제공되는 데이터(DATA) 특성에 따라 데이터(DATA)를 구분하기 위한 정보를 나타낼 수 있다. 즉, 서로 연관성이 있는 데이터(DATA)에 대하여 동일한 스트림 식별 정보가 부여될 수 있다. 예를 들어, 호스트(100)는 서로 다른 애플리케이션의 실행에 따라 생성된 데이터(DATA)에 대하여 각각 다른 스트림 식별 정보를 부여하거나 동일한 애플리케이션으로부터 생성된 데이터(DATA)에 대하여 동일한 스트림 식별 정보를 부여할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 동일한 애플리케이션으로부터 생성된 데이터(DATA)에 대하여 데이터(DATA) 특성에 따라 다른 스트림 식별 정보가 부여될 수 있다.
메모리 컨트롤러(210)는 쓰기 커맨드(HRCMD)에 포함된 스트림 식별 정보에 기초하여 데이터(DATA)가 저장될 뱅크를 할당할 수 있다. 메모리 컨트롤러(210)는 스트림 식별 정보에 대응하는 스트라이핑 크기에 기초하여 뱅크들(221~23n) 중 하나를 할당할 수 있다. 스트라이핑 크기는 동일한 스트림 식별 정보의 데이터가 저장될 수 있는 후보 뱅크의 수를 나타낼 수 있다. 예를 들어, 스트라이핑 크기가 "1 채널(CH) X 2 뱅크(Bank)"인 경우, 2 개의 후보 뱅크 중 하나에 데이터(DATA)가 저장될 수 있다. 예를 들어, 제1 채널(CH1)에 연결된 제1 및 제2 뱅크들(221, 222)이 후보 뱅크인 경우, 제1 및 제2 뱅크들(221, 222) 중 하나가 데이터(DATA)가 저장될 뱅크로 할당될 수 있다.
스트림 식별 정보에 대응하는 스트라이핑 크기 정보는 호스트(100)로부터 메모리 컨트롤러(210)로 제공될 수 있다. 호스트(100)는 스트림 별 스트라이핑 크기를 선택하고, 메모리 컨트롤러(210)로 스트림 별 스트라이핑 크기 정보를 제공할 수 있다.
상술한 바와 같이, 데이터(DATA)의 스트림 식별 정보에 따라 스트라이핑 크기가 결정될 수 있다. 메모리 컨트롤러(210)는 스트림 별로 대응하는 스트라이핑 크기에 기초하여 데이터(DATA)가 저장될 뱅크를 할당할 수 있다.
이하에서는, 설명의 편의를 위해, 도 1의 메모리 장치(220)가 2 개의 채널들(CH1, CH2)에 연결된 6 개의 뱅크들(221~223, 231~233)을 포함하는 것(즉, n 이 3 이고, m 이 2 인 경우)으로 가정한다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 메모리 장치(220)는 다양한 개수의 채널들에 연결된 다양한 개수의 뱅크들을 포함할 수 있다.
도 2는 본 발명의 하나의 실시 예에 따른 메모리 장치(220)가 데이터를 저장하는 예시를 보여준다. 도 2를 참조하면, 메모리 장치(220)는 제1 채널(CH1)에 연결된 제1 내지 제3 뱅크들(221~223) 및 제2 채널(CH2)에 연결된 제1 내지 제3 뱅크들(231~233)을 포함할 수 있다.
메모리 장치(220)는 메모리 컨트롤러(210)로부터 제공되는 데이터(DATA)를 저장할 수 있다. 제공되는 데이터(DATA)의 스트림 식별 정보는 제1 스트림(stream 1) 또는 제2 스트림(stream 2) 중 하나일 수 있다. 메모리 컨트롤러(210)는 쓰기 커맨드(HRCMD)에 기초하여 데이터(DATA)의 스트림 식별 정보를 판별할 수 있다.
메모리 컨트롤러(210)는 데이터(DATA)의 스트림 식별 정보에 대응하는 스트라이핑 크기에 기초하여 데이터(DATA)가 저장될 뱅크를 할당할 수 있다. 예를 들어, 제1 스트림에 대응하는 스트라이핑 크기는 "2 CH X 2 Bank"일 수 있고, 제2 스트림에 대응하는 스트라이핑 크기는 "1 CH X 1 Bank"일 수 있다.
첫 번째로 제1 스트림의 제1 데이터(DATA1)에 대하여, 메모리 컨트롤러(210)는 대응하는 스트라이핑 크기(2 CH X 2 Bank)에 기초하여 제1 채널(CH)에 연결된 제1 뱅크(221)를 제1 데이터(DATA1)가 저장될 뱅크로 할당할 수 있다(①). 구체적으로, 메모리 컨트롤러(210)는 제1 뱅크(221) 중 제1 블록(BLK1)의 특정 주소를 제1 데이터(DATA1)가 저장될 메모리 주소로 할당할 수 있다.
두 번째로 제1 스트림의 제2 데이터(DATA2)에 대하여, 메모리 컨트롤러(210)는 스트라이핑 크기(2 CH X 2 Bank)에 기초하여 제1 데이터(DATA1)에 할당된 뱅크(221)와 다른 뱅크를 제2 데이터(DATA2)가 저장될 뱅크로 할당할 수 있다. 메모리 컨트롤러(210)는 제2 채널(CH2)에 연결된 제1 뱅크(231)를 제2 데이터(DATA2)가 저장될 뱅크로 할당할 수 있다(②). 구체적으로, 메모리 컨트롤러(210)는 제1 뱅크(231) 중 제1 블록(BLK1)의 특정 주소를 제2 데이터(DATA2)가 저장될 메모리 주소로 할당할 수 있다.
세 번째로 제2 스트림의 제3 데이터(DATA3)에 대하여, 메모리 컨트롤러(210)는 대응하는 스트라이핑 크기(1 CH X 1 Bank)에 기초하여 제1 뱅크(221)를 제3 데이터(DATA3)가 저장될 뱅크로 할당할 수 있다(③). 구체적으로, 메모리 컨트롤러(210)는 제1 뱅크(221) 중 제2 블록(BLK2)의 특정 주소를 제3 데이터(DATA3)가 저장될 메모리 주소로 할당할 수 있다.
네 번째로 제1 스트림의 제4 데이터(DATA4)에 대하여, 메모리 컨트롤러(210)는 스트라이핑 크기(2 CH X 2 Bank)에 기초하여 제1 데이터(DATA1) 및 제2 데이터(DATA2)에 할당된 뱅크들(221, 231)과 다른 뱅크를 제4 데이터(DATA4)가 저장될 뱅크로 할당할 수 있다. 메모리 컨트롤러(210)는 제1 채널(CH1)에 연결된 제2 뱅크(222)를 제4 데이터(DATA4)가 저장될 뱅크로 할당할 수 있다(④). 구체적으로, 메모리 컨트롤러(210)는 제2 뱅크(222) 중 제1 블록(BLK1)의 특정 주소를 제4 데이터(DATA4)가 저장될 메모리 주소로 할당할 수 있다.
다섯 번째로 제2 스트림의 제5 데이터(DATA5)에 대하여, 메모리 컨트롤러(210)는 스트라이핑 크기(1 CH X 1 Bank)에 기초하여 제3 데이터(DATA3)에 할당된 뱅크(221)와 동일한 뱅크를 제5 데이터(DATA5)가 저장될 뱅크로 할당할 수 있다. 메모리 컨트롤러(210)는 제1 뱅크(221)를 제5 데이터(DATA5)가 저장될 뱅크로 할당할 수 있다(⑤). 구체적으로, 메모리 컨트롤러(210)는 제1 뱅크(221) 중 제2 블록(BLK2)의 특정 주소를 제5 데이터(DATA5)가 저장될 메모리 주소로 할당할 수 있다. 이 경우, 제5 데이터(DATA5)에 할당된 메모리 주소는 제3 데이터(DATA3)에 할당된 메모리 주소와 다를 수 있다.
여섯 번째로 제1 스트림의 제6 데이터(DATA6)에 대하여, 메모리 컨트롤러(210)는 스트라이핑 크기(2 CH X 2 Bank)에 기초하여 제1 데이터(DATA1), 제2 데이터(DATA2) 및 제4 데이터(DATA4)에 할당된 뱅크들(221, 222, 231)과 다른 뱅크를 제6 데이터(DATA6)가 저장될 뱅크로 할당할 수 있다. 메모리 컨트롤러(210)는 제2 채널(CH2)에 연결된 제2 뱅크(232)를 제6 데이터(DATA6)가 저장될 뱅크로 할당할 수 있다(⑥). 구체적으로, 메모리 컨트롤러(210)는 제2 뱅크(232) 중 제1 블록(BLK1)의 특정 주소를 제6 데이터(DATA6)가 저장될 메모리 주소로 할당할 수 있다.
일곱 번째로 제1 스트림의 제7 데이터(DATA7)에 대하여, 메모리 컨트롤러(210)는 스트라이핑 크기(2 CH X 2 Bank)에 기초하여 제7 데이터(DATA7)가 저장될 뱅크를 할당할 수 있다. 이전에 수신된 제1 스트림의 데이터(DATA1, DATA2, DATA4, DATA6)에 4 개의 뱅크들(221, 222, 231, 232)이 모두 할당되었으므로, 메모리 컨트롤러(210)는 4 개의 뱅크들(221, 222, 231, 232) 중 하나를 제7 데이터(DATA7)가 저장될 뱅크로 할당할 수 있다. 메모리 컨트롤러(210)는 제1 뱅크(221)를 제7 데이터(DATA7)가 저장될 뱅크로 할당할 수 있다(⑦). 구체적으로, 메모리 컨트롤러(210)는 제1 뱅크(221) 중 제1 블록(BLK1)의 특정 주소를 제7 데이터(DATA7)가 저장될 메모리 주소로 할당할 수 있다. 이 경우, 제7 데이터(DATA7)에 할당된 메모리 주소는 제1 데이터(DATA1)에 할당된 메모리 주소와 다를 수 있다.
메모리 컨트롤러(210)는 데이터(DATA)를 할당된 뱅크로 제공할 수 있다. 메모리 컨트롤러(210)는 데이터(DATA)와 함께 쓰기 커맨드(CRCMD) 및 데이터(DATA)가 저장될 메모리 주소를 제공할 수 있다. 메모리 컨트롤러(210)는 할당된 뱅크에 연결된 채널을 통해 데이터(DATA), 쓰기 커맨드(CRCMD) 및 메모리 주소를 제공할 수 있다. 뱅크는 쓰기 커맨드(CRCMD)에 응답하여 제공된 메모리 주소에 데이터(DATA)를 저장할 수 있다.
예를 들어, 메모리 컨트롤러(210)는 제1 데이터(DATA1), 쓰기 커맨드(CRCMD) 및 메모리 주소(제1 블록(BLK1)의 특정 주소)를 제1 뱅크(221)로 제공할 수 있다. 제1 뱅크(221)는 쓰기 커맨드(CRCMD)에 응답하여 제1 데이터(DATA1)를 제1 블록(BLK1)의 특정 주소에 저장할 수 있다.
상술한 바와 같이, 메모리 컨트롤러(210)는 스트림 별 스트라이핑 크기에 기초하여 데이터(DATA)가 저장될 뱅크를 할당할 수 있다. 대응하는 스트라이핑 크기가 2 이상을 가리키는 경우, 메모리 컨트롤러(210)는 동일한 스트림의 데이터(DATA)가 복수의 뱅크들에 분산되어 저장되도록 뱅크를 할당할 수 있다. 대응하는 스트라이핑 크기가 하나를 가리키는 경우, 메모리 컨트롤러(210)는 동일한 스트림의 데이터(DATA)가 하나의 뱅크에 저장되도록 뱅크를 할당할 수 있다.
스트라이핑 크기가 큰 경우(즉, 동일한 스트림의 데이터(DATA)에 할당될 수 있는 후보 뱅크의 수가 큰 경우), 스트라이핑 크기가 작은 경우(즉, 동일한 스트림의 데이터(DATA)에 할당될 수 있는 후보 뱅크의 수가 작은 경우)보다 쓰기 및 읽기 동작의 지연 시간이 감소될 수 있다. 스트라이핑 크기가 큰 경우, 쓰기 및 읽기 동작을 위해 병렬적으로 접근할 수 있는 뱅크의 수가 클 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 제1 스트림에 대하여 읽기 동작이 수행되는 경우, 4 개의 뱅크들(221, 222, 231, 232)로부터 데이터(DATA)가 병렬적으로 출력될 수 있다. 반면에, 제2 스트림에 대하여 읽기 동작이 수행되는 경우, 하나의 뱅크(221)로부터 데이터(DATA)가 출력될 수 있다. 따라서, 제1 스트림에 대한 읽기 지연 시간이 제2 스트림에 대한 읽기 지연 시간보다 작을 수 있다. 이와 같이, 스트라이핑 크기가 큰 경우, 스트라이핑 크기가 작은 경우와 비교하여 연속 쓰기 및 연속 읽기 성능(peak sequential write and read performance)이 향상될 수 있다.
스트라이핑 크기가 작은 경우, 스트라이핑 크기가 큰 경우보다 멀티-스트림(multi-stream) 지원 개수가 클 수 있다. 멀티-스트림 지원 개수는 메모리 장치(220)에 저장할 수 있는 서로 다른 특성을 가지는 스트림의 개수를 의미한다. 하나의 뱅크에 서로 다른 스트림을 저장하기 위한 블록의 개수가 유한하므로, 다양한 스트림을 저장하기 위해서 여분의 뱅크가 확보되어야 한다. 스트라이핑 크기가 큰 경우, 스트라이핑 크기가 작은 경우와 비교하여 사용되는 뱅크의 수가 많기 때문에 멀티-스트림 지원 개수가 작아질 수 있다. 반면에, 스트라이핑 크기가 작은 경우, 스트라이핑 크기가 큰 경우와 비교하여 사용되는 뱅크의 수가 적기 때문에 멀티-스트림 지원 개수가 커질 수 있다.
상술한 바와 같이, 스트라이핑 크기에 따라 메모리 장치(220)의 성능이 달라질 수 있다. 본 발명의 실시 예들에 따르면, 메모리 장치(220)의 요구되는 성능에 따라 스트림 별 스트라이핑 크기가 호스트(100)에 의해 선택될 수 있다. 연속 쓰기 및 연속 읽기 성능이 중요한 스트림에 대해서는 상대적으로 큰 스트라이핑 크기가 선택될 수 있다. 멀티-스트림 지원 개수가 중요한 경우, 상대적으로 작은 스트라이핑 크기가 선택될 수 있다. 이와 같이, 전자 시스템(1000)은 스트림 별로 스트라이핑 크기를 유연하게 관리함으로써 저장 장치(200)를 효율적으로 동작시킬 수 있다.
도 2에 도시된 바와 같이, 메모리 컨트롤러(210)는 서로 다른 스트림의 데이터(예를 들어, DATA1 및 DATA3)에 동일한 뱅크를 할당할 수 있다. 이 경우, 서로 다른 스트림의 데이터(DATA)에 서로 다른 블록이 할당될 수 있고, 동일한 스트림의 데이터(DATA)에 동일한 블록이 할당될 수 있다. 이와 같이, 동일한 스트림의 데이터(DATA)끼리 동일한 블록에 저장되는 경우, 쓰기 증폭 계수(WAF; write amplification factor)의 성능이 향상될 수 있다. 따라서, 메모리 장치(220)의 수명이 증가될 수 있다.
도 3은 도 1의 저장 장치(200)의 하나의 예시를 보여주는 블록도이다. 도 3을 참조하면, 저장 장치(200)는 메모리 컨트롤러(210), 메모리 장치(220) 및 쓰기 버퍼(230)를 포함할 수 있다. 메모리 장치(220)는 제1 채널(CH1)에 연결된 뱅크들(221~223) 및 제2 채널(CH2)에 연결된 뱅크들(231~233)을 포함할 수 있다. 도 3의 메모리 컨트롤러(210) 및 메모리 장치(220)의 동작은 도 1의 메모리 컨트롤러(210) 및 메모리 장치(220)의 동작과 동일하거나 유사하므로, 중복되는 설명은 생략될 수 있다.
메모리 컨트롤러(210)는 스트림 식별 정보에 기초하여 데이터(DATA)를 저장하기 위한 뱅크를 할당할 수 있다. 메모리 컨트롤러(210)는 메모리 장치(220)의 할당된 뱅크로 데이터(DATA)를 제공하기 전에, 데이터(DATA)를 쓰기 버퍼(230)에 저장할 수 있다. 메모리 컨트롤러(210)는 쓰기 버퍼(230)의 영역들 중 할당된 뱅크에 대응하는 특정 영역에 데이터(DATA)를 저장할 수 있다. 데이터(DATA)가 쓰기 버퍼(230)에 저장됨에 따라 특정 영역이 일정 크기 이상으로 채워지거나 가득 채워진 경우, 메모리 컨트롤러(210)는 특정 영역에 저장된 데이터(DATA)를 인출하여 할당된 뱅크에 저장할 수 있다. 즉, 메모리 컨트롤러(210)는 동일한 뱅크에 저장될 데이터(DATA)를 쓰기 버퍼(230)에 임시로 저장하고, 저장된 데이터(DATA)가 일정 크기 이상이 되면, 데이터(DATA)를 뱅크에 저장할 수 있다. 따라서, 메모리 컨트롤러(210)는 스트림 식별 정보에 기초하여 데이터(DATA)가 저장될 뱅크(즉, 뱅크의 메모리 주소)를 할당할 뿐만 아니라, 데이터(DATA)가 임시로 저장될 쓰기 버퍼(230)의 메모리 주소를 할당할 수 있다.
쓰기 버퍼(230)는 복수의 버퍼 영역들(BA1~BA6)을 포함할 수 있다. 각각의 버퍼 영역은 메모리 장치(220)의 뱅크들(221~233) 각각에 대응할 수 있다. 예를 들어, 제1 버퍼 영역(BA1)은 제1 뱅크(221)에 대응하고, 제2 버퍼 영역(BA2)은 제1 뱅크(231)에 대응할 수 있다. 제3 버퍼 영역(BA3)은 제2 뱅크(222)에 대응하고, 제4 버퍼 영역(BA4)은 제2 뱅크(232)에 대응할 수 있다. 예를 들어, 쓰기 버퍼(230)는 DRAM 등과 같은 휘발성 메모리로 구현될 수 있으나, 본 발명은 이에 한정되지 않는다.
도 4a 및 도 4b는 스트라이핑 크기에 따라 데이터가 도 3의 쓰기 버퍼(230)에 저장되는 예시를 보여준다. 구체적으로, 도 4a는 스트라이핑 크기가 "2 CH X 2 Bank" 인 경우, 데이터(DATA)가 저장되는 예시를 보여주고, 도 4b는 스트라이핑 크기가 "1 CH X 1 Bank" 인 경우, 데이터(DATA)가 저장되는 예시를 보여준다.
도 1, 도 3, 도 4a 및 도 4b를 참조하면, 호스트(100)로부터 동일한 스트림의 제1 내지 제16 데이터(DATA1~DATA16)가 순차적으로 제공될 수 있다. 제1 내지 제16 데이터(DATA1~DATA16)를 저장하기 위해, 메모리 컨트롤러(210)는 각각의 데이터(DATA)에 뱅크를 할당할 수 있다. 제1 내지 제16 데이터(DATA1~DATA16)에 대한 뱅크 할당 방법은 스트림에 대응하는 스트라이핑 크기에 따라 달라질 수 있다.
메모리 컨트롤러(210)는 제1 내지 제16 데이터(DATA1~DATA16)를 메모리 장치(220)에 저장하기 전에 쓰기 버퍼(230)에 저장할 수 있다. 쓰기 버퍼(230)는 제1 내지 제4 버퍼 영역들(BA1~BA4)을 포함할 수 있다. 제1 내지 제4 버퍼 영역들(BA1~BA4)은 뱅크들(221, 222, 231, 232) 각각에 대응할 수 있다. 예를 들어, 제1 퍼버 영역(BA1)은 제1 뱅크(221)에 대응하고, 제2 버퍼 영역(BA2)은 제1 뱅크(231)에 대응할 수 있다. 각각의 데이터(DATA)는 버퍼 영역들(BA1~BA4) 중 할당된 뱅크에 대응하는 버퍼 영역에 저장될 수 있다.
먼저, 도 4a를 참조하면, 스트림에 대응하는 스트라이핑 크기가 "2 CH X 2 Bank" 이므로, 메모리 컨트롤러(210)는 4 개의 뱅크를 데이터(DATA)가 저장될 뱅크로 할당할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 데이터(DATA1)에 제1 뱅크(221)를 할당할 수 있고, 제2 데이터(DATA2)에 제1 뱅크(231)를 할당할 수 있다. 메모리 컨트롤러(210)는 제3 데이터(DATA3)에 제2 뱅크(222)를 할당할 수 있고, 제4 데이터(DATA4)에 제2 뱅크(232)를 할당할 수 있다. 이와 같은 순서로 뱅크가 할당되는 경우, 제1 내지 제16 데이터(DATA1~DATA16)에 4 개의 뱅크들(221, 222, 231, 231)이 동등하게 할당될 수 있다.
메모리 컨트롤러(210)는 할당된 뱅크에 데이터(DATA)를 저장하기 전에, 도 4a에 도시된 바와 같이, 대응하는 버퍼 영역에 데이터(DATA)를 저장할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 뱅크(221)에 저장하기 전에 제1 데이터(DATA1), 제5 데이터(DATA5), 제9 데이터(DATA9) 및 제13 데이터(DATA13)를 제1 버퍼 영역(BA1)에 저장할 수 있다. 제13 데이터(DATA13)가 제1 버퍼 영역(BA1)에 저장됨에 따라 제1 버퍼 영역(BA1)이 가득(또는, 일정 크기 이상으로) 채워진 경우, 메모리 컨트롤러(210)는 제1 버퍼 영역(BA1)에 저장된 데이터(DATA1, DATA5, DATA9, DATA13)를 제1 뱅크(221)에 저장할 수 있다. 이후, 메모리 컨트롤러(210)는 제1 버퍼 영역(BA1)에 저장된 데이터(DATA1, DATA5, DATA9, DATA13)를 삭제하고, 제1 버퍼 영역(BA1)을 다시 사용할 수 있다. 마찬가지로, 제2 내지 제4 버퍼 영역들(BA2~BA4)이 가득(또는, 일정 크기 이상으로) 채워진 경우, 메모리 컨트롤러(210)는 각각의 버퍼 영역에 저장된 데이터를 대응하는 뱅크에 저장할 수 있다. 이후, 메모리 컨트롤러(210)는 각각의 버퍼 영역에 저장된 데이터를 삭제하고, 버퍼 영역을 다시 사용할 수 있다.
도 4b를 참조하면, 스트림에 대응하는 스트라이핑 크기가 "1 CH X 1 Bank" 이므로, 메모리 컨트롤러(210)는 하나의 뱅크를 데이터(DATA)가 저장될 뱅크로 할당할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 내지 제4 데이터(DATA1~DATA4)에 제1 뱅크(221)를 할당할 수 있다. 제1 내지 제4 데이터(DATA1~DATA4)에 제1 뱅크(221)가 할당됨 따라 제1 뱅크(221)가 더 이상 할당될 수 없는 경우, 메모리 컨트롤러(210)는 이후 제공되는 데이터(DATA)에 다른 뱅크를 할당할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제5 내지 제8 데이터(DATA5~DATA8)에 제1 뱅크(231)를 할당할 수 있다. 마찬가지로, 메모리 컨트롤러(210)는 제9 내지 제12 데이터(DATA9~DATA12)에 제2 뱅크(222)를 할당하고, 제13 내지 제16 데이터(DATA13~DATA16)에 제2 뱅크(232)를 할당할 수 있다.
메모리 컨트롤러(210)는 할당된 뱅크에 데이터(DATA)를 저장하기 전에, 도 4b에 도시된 바와 같이, 대응하는 버퍼 영역에 데이터(DATA)를 저장할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 뱅크(221)에 저장하기 전에 제1 내지 제4 데이터(DATA1~DATA4)를 제1 버퍼 영역(BA1)에 저장할 수 있다. 제4 데이터(DATA4)가 제1 버퍼 영역(BA1)에 저장됨에 따라 제1 버퍼 영역(BA1)이 가득(또는, 일정 크기 이상으로) 채워진 경우, 메모리 컨트롤러(210)는 제1 버퍼 영역(BA1)에 저장된 데이터(DATA1~DATA4)를 제1 뱅크(221)에 저장할 수 있다. 이후, 메모리 컨트롤러(210)는 제1 버퍼 영역(BA1)에 저장된 데이터(DATA1~DATA4)를 삭제하고, 제1 버퍼 영역(BA1)을 다시 사용할 수 있다. 마찬가지로, 제2 내지 제4 버퍼 영역들(BA2~BA4)이 가득(또는, 일정 크기 이상으로) 채워진 경우, 메모리 컨트롤러(210)는 각각의 버퍼 영역에 저장된 데이터를 대응하는 뱅크에 저장할 수 있다. 이후, 메모리 컨트롤러(210)는 각각의 버퍼 영역에 저장된 데이터를 삭제하고, 버퍼 영역을 다시 사용할 수 있다.
상술한 바와 같이, 저장 장치(200)는 데이터(DATA)를 저장하기 위해 쓰기 버퍼(230)를 이용할 수 있다. 도 4a에 도시된 바와 같이, 스트라이핑 크기가 "2 CH X 2 Bank" 인 경우, 제13 데이터(DATA13)가 제공된 후에 제1 버퍼 영역(BA1)의 데이터(DATA)가 제1 뱅크(221)에 저장될 수 있다. 반면에, 도 4b에 도시된 바와 같이, 스트라이핑 크기가 "1 CH X 1 Bank" 인 경우, 제4 데이터(DATA4)가 제공된 후에 제1 버퍼 영역(BA1)의 데이터(DATA)가 제1 뱅크(221)에 저장될 수 있다. 이에 따라, 도 4a의 제1 버퍼 영역(BA1)의 데이터(DATA)가 제1 뱅크(221)에 저장되는 시간은 도 4b의 제1 버퍼 영역(BA1)의 데이터(DATA)가 제1 뱅크(221)에 저장되는 시간보다 느릴 수 있다. 또한, 도 4a의 제1 버퍼 영역(BA1)에 대한 재사용 시간은 도 4b의 제1 버퍼 영역(BA1)에 대한 재사용 시간보다 느릴 수 있다. 즉, 스트라이핑 크기가 큰 경우, 스트라이핑 크기가 작은 경우와 비교하여 쓰기 버퍼(230)를 재사용 할 수 있는 주기가 더 길어질 수 있다. 따라서, 스트라이핑 크기가 큰 경우, 더 큰 용량의 쓰기 버퍼(230)가 요구될 수 있다.
이에 따라, 호스트(100)는 쓰기 버퍼(230) 용량을 고려하여 스트림 별 스트라이핑 크기를 선택할 수 있다. 예를 들어, 쓰기 버퍼(230) 용량의 사용을 감소시키기 위해, 호스트(100)는 특정 스트림에 대응하는 스트라이핑 크기를 작은 크기로 선택할 수 있다.
도 5는 도 1의 메모리 컨트롤러(210)의 예시를 보여주는 블록도이다. 도 5를 참조하면, 메모리 컨트롤러(210)는 버스(211), 프로세서(212), RAM(213), ROM(214), ECC(Error Correction Code) 회로(215), 호스트 인터페이스(216), 및 메모리 인터페이스(217)를 포함할 수 있다.
버스(211)는 메모리 컨트롤러(210)의 구성 요소들 사이에 채널을 제공하도록 구성된다. 프로세서(212)는 메모리 컨트롤러(210)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(212)는 호스트(100)로부터의 쓰기 커맨드(HRCMD)에 응답하여 데이터(DATA)가 저장될 뱅크를 할당하는 동작을 제어할 수 있다.
RAM(213)은 메모리 컨트롤러(210)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로써 사용될 수 있다. RAM(213)은 프로세서(212)가 실행하는 코드들 및 명령들을 저장하고, 프로세서(212)에 의해 처리되는 데이터를 저장할 수 있다. RAM(213)은 FTL(Flash Translation Layer)(218)을 포함할 수 있다. FTL(218)은 메모리 장치(220)가 효율적으로 사용될 수 있도록 호스트(100) 및 메모리 장치(220) 사이에서 다양한 관리 동작을 수행하는 소프트웨어 또는 펌웨어일 수 있다. 예시적으로, RAM(160)에 저장된 FTL(161)은 프로세서(150)에 의해 구동될 수 있다.
예를 들어, FTL(218)은 스트림 별 스트라이핑 크기에 기초하여 데이터(DATA)가 저장될 뱅크를 할당하고, 할당된 뱅크의 메모리 주소를 관리할 수 있다. 또한, FTL(218)은 할당된 뱅크에 따라 데이터(DATA)를 임시 저장할 쓰기 버퍼(230)의 메모리 주소를 할당하고, 할당된 쓰기 버퍼(230)의 메모리 주소를 관리할 수 있다.
ROM(214)은 메모리 컨트롤러(210)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다. 예를 들어, ROM(214)은 스트림 식별 정보에 대응하는 스트라이핑 크기 정보를 저장할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 스트림 식별 정보에 대응하는 스트라이핑 크기 정보는 RAM(213)에 저장될 수 있다.
ECC 회로(215)는 데이터(DATA)를 메모리 장치(220)에 저장하기 전에 에러 정정을 위한 패리티(parity) 비트를 생성할 수 있다. 또한, ECC 회로(215)는 패리티 비트를 이용하여 메모리 장치(220)로부터 출력된 데이터(DATA)의 에러를 정정할 수 있다. 예시적으로, ECC 회로(215)는 스트라이핑 크기에 기초하여 패리티 비트를 생성할 수 있다. 예를 들어, 스트라이핑 크기가 "2 CH X 2 Bank" 인 경우, ECC 회로(215)는 3 개의 뱅크들에 저장될 데이터(DATA)를 기준으로 패리티 비트를 생성할 수 있다. 즉, 4 개의 뱅크들 중 3 개의 뱅크들에 데이터(DATA)가 저장되고, 하나의 뱅크에 패리티 비트가 저장될 수 있다. 스트라이핑 크기가 "1 CH X 2 Bank" 인 경우, ECC 회로(215)는 하나의 뱅크에 저장될 데이터(DATA)를 기준으로 패리티 비트를 생성할 수 있다. 이에 따라, 스트라이핑 크기가 작을수록, 패리티 비트가 더 많이 생성될 수 있고, 저장 장치(200)의 신뢰성이 향상될 수 있다. 따라서, 호스트(100)는 연속 쓰기 및 연속 읽기 성능, 멀티-스트림 지원 개수 및 저장 장치(200)의 신뢰성을 고려하여 스트림 별 스트라이핑 크기를 선택할 수 있다.
메모리 컨트롤러(210)는 호스트 인터페이스(216)를 통해 호스트(100)와 통신할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 호스트 인터페이스(216)를 통해 스트림 별로 선택된 스트라이핑 크기 정보를 수신할 수 있다. 메모리 컨트롤러(210)는 호스트 인터페이스(216)를 통해 스트림 식별 정보가 포함된 쓰기 커맨드(HRCMD)를 수신할 수 있다. 예를 들어, 호스트 인터페이스(216)는 NVMe(Non-Volatile Memory express) 프로토콜을 기반으로 통신을 수행할 수 있으나, 본 발명은 이에 한정되지 않는다.
메모리 컨트롤러(210)는 메모리 인터페이스(217)를 통해 메모리 장치(220)와 통신할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 메모리 인터페이스(217)를 통해 할당된 뱅크에 쓰기 커맨드(CRCMD) 및 데이터(DATA)를 제공할 수 있다.
도 6은 도 1의 호스트(100)와 저장 장치(200)가 수행하는 쓰기 동작의 하나의 예시를 보여주는 도면이다. 도 6을 참조하면, S101 단계에서, 호스트(100)는 지원 스트라이핑 크기 정보를 저장 장치(200)로 요청할 수 있다. 지원 스트라이핑 크기 정보는 저장 장치(200)가 제공할 수 있는 최대 스트라이핑 크기 정보를 나타낸다. 예를 들어, 저장 장치(200)가 최대 "4 CH X 4 Bank" 스트라이핑을 제공할 수 있는 경우, 지원 스트라이핑 크기 정보는 "4 CH X 4 Bank" 일 수 있다. 예를 들어, 호스트(100)는 디렉티브(directive) 커맨드 또는 아이덴티파이(identify) 커맨드를 통해 지원 스트라이핑 크기 정보를 저장 장치(200)로 요청할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 호스트(100)는 별도의 커맨드를 이용하여 지원 스트라이핑 크기 정보를 요청할 수 있다.
S102 단계에서, 저장 장치(200)는 지원 스트라이핑 크기 정보를 호스트(100)로 제공할 수 있다. S103 단계에서, 호스트(100)는 지원 스트라이핑 크기 정보에 기초하여 스트림 별 스트라이핑 크기를 선택할 수 있다. 예를 들어, 지원 스트라이핑 크기 정보가 "4 CH X 4 Bank" 인 경우, 호스트(100)는 제1 스트림에 대하여 "2 CH X 2 Bank" 를 선택하고, 제2 스트림에 대하여 "1 CH X 1 Bank" 를 선택할 수 있다.
S104 단계에서, 호스트(100)는 스트림 식별 정보 및 스트라이핑 크기 정보를 포함하는 쓰기 커맨드(HRCMD)를 저장 장치(200)로 제공할 수 있다. 예를 들어, 쓰기 커맨드(HRCMD)는 제1 스트림을 나타내는 스트림 식별 정보 및 "2 CH X 2 Bank" 를 나타내는 스트라이핑 크기 정보를 포함할 수 있다. 또한, 호스트(100)는 쓰기 데이터(DATA)를 저장 장치(200)로 제공할 수 있다.
S105 단계에서, 저장 장치(200)는 쓰기 커맨드(HRCMD)에 포함된 스트림 식별 정보 및 스트라이핑 크기 정보에 기초하여 데이터(DATA)를 저장할 뱅크를 할당할 수 있다. S106 단계에서, 저장 장치(200)는 할당된 뱅크에 데이터(DATA)를 쓸 수 있다.
도 7은 도 6의 쓰기 동작을 위한 메모리 컨트롤러(210)의 예시적인 동작을 보여주는 도면이다. 구체적으로, 도 7의 쓰기 동작의 예시는 도 2의 쓰기 동작의 예시와 일치한다. 도 7을 참조하면, 메모리 컨트롤러(210)는 호스트(100)로부터 제1 내지 제7 쓰기 커맨드(HRCMD1~HRCMD7) 및 제1 내지 제7 데이터(DATA1~DATA7)를 수신할 수 있다(①~⑦). 제1 내지 제7 쓰기 커맨드(HRCMD1~HRCMD7)는 제1 내지 제7 데이터(DATA1~DATA7)에 각각 대응할 수 있다. 예를 들어, 제1 쓰기 커맨드(HRCMD1)는 제1 데이터(DATA1)에 대한 쓰기 커맨드(HRCMD)일 수 있다. 각각의 쓰기 커맨드(HRCMD)는 스트림 식별 정보 및 스트라이핑 크기 정보를 포함할 수 있다.
제1, 제2, 제4, 제6 및 제7 쓰기 커맨드들(HRCMD1, HRCMD2, HRCMD4, HRCMD6, HRCMD7)은 제1 스트림을 나타내는 스트림 식별 정보 및 "2 CH X 2 Bank" 를 나타내는 스트라이핑 크기 정보를 포함할 수 있다. 제3 및 제5 쓰기 커맨드들(HRCMD3, HRCMD5)은 제2 스트림을 나타내는 스트림 식별 정보 및 "1 CH X 1 Bank" 를 나타내는 스트라이핑 크기 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 스트림 식별 정보 및 스트라이핑 크기 정보에 기초하여, 도 2에 도시된 바와 같이, 제1 내지 제7 데이터(DATA1~DATA7) 각각에 대한 뱅크를 할당할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 데이터(DATA1)에 제1 채널(CH1)에 연결된 제1 뱅크(221)를 할당할 수 있고, 제2 데이터(DATA2)에 제2 채널(CH2)에 연결된 제1 뱅크(231)를 할당할 수 있다.
메모리 컨트롤러(210)는 각각의 데이터(DATA)에 할당된 뱅크의 메모리 주소를 매핑하고, 매핑 정보를 매핑 테이블(BT)에 저장할 수 있다. 매핑 테이블(BT)은 도 5의 RAM(213), ROM(214) 또는 외부 메모리에 저장될 수 있다. 예를 들어, 메모리 컨트롤러(210)는 제1 데이터(DATA1)를 제1 채널(CH1)에 연결된 제1 뱅크(221)의 제1 블록의 주소에 매핑하여 매핑 테이블(BT)에 저장할 수 있다. 메모리 컨트롤러(210)는 제3 데이터(DATA3)를 제1 채널(CH1)에 연결된 제1 뱅크(221)의 제2 블록의 주소에 매핑하여 매핑 테이블(BT)에 저장할 수 있다.
도 7에서는 데이터(DATA)와 메모리 주소의 매핑 정보가 매핑 테이블(BT)에 저장되는 것으로 설명되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 호스트(100)로부터 데이터(DATA)에 대응하는 논리 어드레스(logical address)가 수신되는 경우, 메모리 컨트롤러(210)는 논리 어드레스와 메모리 주소(메모리 장치(220)의 물리 어드레스(physical address)를 매핑하고, 매핑 정보를 매핑 테이블(BT)에 저장할 수 있다.
도 8은 도 1의 호스트(100)와 저장 장치(200)가 수행하는 쓰기 동작의 다른 예시를 보여주는 도면이다. 도 8을 참조하면, S111 내지 S113 단계의 동작들은 도 6의 S101 내지 S103 단계의 동작들과 동일하므로 자세한 설명은 생략된다.
S114 단계에서, 호스트(100)는 스트림 식별 정보 및 스트라이핑 크기 정보를 포함하는 제1 디렉티브 커맨드를 저장 장치(200)로 제공할 수 있다. 호스트(100)는 디렉티브 커맨드를 통해 저장 장치(200)의 동작에 필요한 다양한 정보를 설정할 수 있다. 예를 들어, 제1 디렉티브 커맨드는 디렉티브 수신(directive receive) 커맨드일 수 있다.
스트림 식별 정보 및 스트라이핑 크기 정보를 포함하는 제1 디렉티브 커맨드가 저장 장치(200)로 제공됨에 따라, S115 단계에서, 저장 장치(200)는 제1 디렉티브 커맨드의 스트림 식별 정보에 대응하는 스트라이핑 크기를 설정할 수 있다. 예를 들어, 제1 스트림에 대응하는 스트라이핑 크기로서 "2 CH X 2 Bank" 가 설정될 수 있다. 저장 장치(200)는 스트라이핑 크기를 대응하는 스트림 식별 정보에 매핑하여 저장할 수 있다.
S116 단계에서, 호스트(100)는 스트림 식별 정보를 포함하는 쓰기 커맨드(HRCMD)를 저장 장치(200)로 제공할 수 있다. 호스트(100)는 쓰기 커맨드(HRCMD)와 함께 데이터(DATA)를 저장 장치(200)로 제공할 수 있다.
S117 단계에서, 저장 장치(200)는 쓰기 커맨드(HRCMD)의 스트림 식별 정보 및 미리 설정된 스트라이핑 크기 정보에 기초하여 데이터(DATA)가 저장될 뱅크를 할당할 수 있다. 미리 설정된 스트라이핑 크기 정보는 스트림 식별 정보에 대응하는 스트라이핑 크기 정보일 수 있다. S118 단계에서, 저장 장치(200)는 할당된 뱅크에 데이터(DATA)를 쓸 수 있다.
S119 단계에서, 호스트(100)는 스트림 식별 정보를 포함하는 제2 디렉티브 커맨드를 저장 장치(200)로 제공할 수 있다. 예를 들어, 제2 디렉티브 커맨드는 디렉티브 송신(directive send) 커맨드일 수 있다.
스트림 식별 정보를 포함하는 제2 디렉티브 커맨드가 저장 장치(200)로 제공됨에 따라, S120 단계에서, 저장 장치(200)는 제2 디렉티브 커맨드의 스트림 식별 정보에 대응하여 설정된 스트라이핑 크기에 대한 매핑을 해제(unmap)할 수 있다. 즉, 저장 장치(200)는 스트림 식별 정보에 대응하여 설정된 스트라이핑 크기 정보를 삭제할 수 있다. 예를 들어, 제2 디렉티브 커맨드에 제1 스트림을 나타내는 스트림 식별 정보가 포함된 경우, 저장 장치(200)는 제1 스트림에 대응하여 설정된 스트라이핑 크기에 대한 매핑을 해제할 수 있다.
도 8에서는 제2 디렉티브 커맨드가 스트림 식별 정보를 포함하는 것으로 설명되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 스트림 식별 정보를 포함하지 않는 제2 디렉티브 커맨드가 저장 장치(200)로 제공되는 경우, 저장 장치(200)는 스트림 별로 설정된 스트라이핑 크기에 대한 매핑을 모두 해제할 수 있다.
도 8에서는 S118 단계 이후, S119 및 S120 단계의 동작들이 수행되는 것으로 설명되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제2 디렉티브 커맨드에 의한 설정된 스트라이핑 크기에 대한 매핑 해제 동작은 S111 단계 내지 S118 단계의 쓰기 동작들과 관계없이 수행될 수 있다.
상술한 바와 같이, 별도의 디렉티브 커맨드를 이용하여 스트림 별 스트라이핑 크기가 미리 설정되는 경우, 쓰기 커맨드(HRCMD)는 스트림 식별 정보만을 포함할 수 있다. 이에 따라, 쓰기 커맨드(HRCMD)에 스트라이핑 크기 정보가 포함되지 않을 수 있다. 따라서, 호스트(100)로부터 저장 장치(200)로 제공되는 데이터 양이 감소될 수 있고, 쓰기 동작의 속도가 향상될 수 있다.
도 9는 도 8의 쓰기 동작을 위한 메모리 컨트롤러(210)의 예시적인 동작을 보여주는 도면이다. 구체적으로, 도 9의 쓰기 동작의 예시는 도 2의 쓰기 동작의 예시와 일치한다. 도 9를 참조하면, 먼저 메모리 컨트롤러(210)는 두 개의 제1 디렉티브 커맨드(DRCMD1, DRCMD2)를 수신할 수 있다(①, ②). 제1 디렉티브 커맨드(DRCMD)는 스트림 식별 정보 및 스트라이핑 크기 정보를 포함할 수 있다. 제1 디렉티브 커맨드(DRCMD1)는 제1 스트림을 나타내는 스트림 식별 정보 및 "2 CH X 2 Bank" 를 나타내는 스트라이핑 크기 정보를 포함할 수 있다. 제1 디렉티브 커맨드(DRCMD2)는 제2 스트림을 나타내는 스트림 식별 정보 및 "1 CH X 1 Bank" 를 나타내는 스트라이핑 크기 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 제1 디렉티브 커맨드(DRCMD)가 수신되는 경우, 디렉티브 타입(directive type) 또는 디렉티브 동작 값(directive operation value)에 기초하여 제1 디렉티브 커맨드(DRCMD)가 스트라이핑 크기를 설정하는 커맨드임을 인식할 수 있다. 이 경우, 제1 디렉티브 커맨드(DRCMD)는 디렉티브 타입 및 디렉티브 동작 값 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 제1 디렉티브 커맨드(DRCMD1)에 응답하여 제1 스트림에 "2 CH X 2 Bank" 스트라이핑 크기를 매핑하고, 매핑 정보를 매핑 테이블(SST)에 저장할 수 있다. 메모리 컨트롤러(210)는 제1 디렉티브 커맨드(DRCMD2)에 응답하여 제2 스트림에 "1 CH X 1 Bank" 스트라이핑 크기를 매핑하고, 매핑 정보를 매핑 테이블(SST)에 저장할 수 있다. 매핑 테이블(SST)은 도 5의 RAM(213), ROM(214) 또는 외부 메모리에 저장될 수 있다.
이후, 메모리 컨트롤러(210)는 호스트(100)로부터 제1 내지 제7 쓰기 커맨드(HRCMD1~HRCMD7) 및 제1 내지 제7 데이터(DATA1~DATA7)를 수신할 수 있다(③~⑨). 제1 내지 제7 쓰기 커맨드(HRCMD1~HRCMD7)는 제1 내지 제7 데이터(DATA1~DATA7)에 각각 대응할 수 있다. 각각의 쓰기 커맨드(HRCMD)는 스트림 식별 정보를 포함할 수 있다.
제1, 제2, 제4, 제6 및 제7 쓰기 커맨드들(HRCMD1, HRCMD2, HRCMD4, HRCMD6, HRCMD7)은 제1 스트림을 나타내는 스트림 식별 정보를 포함할 수 있다. 제3 및 제5 쓰기 커맨드들(HRCMD3, HRCMD5)은 제2 스트림을 나타내는 스트림 식별 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 스트림 식별 정보 및 이에 대응하여 미리 설정된 스트라이핑 크기 정보에 기초하여, 도 2에 도시된 바와 같이, 제1 내지 제7 데이터(DATA1~DATA7) 각각에 대한 뱅크를 할당할 수 있다. 메모리 컨트롤러(210)는 각각의 데이터(DATA)에 할당된 뱅크의 메모리 주소를 매핑하고, 매핑 정보를 매핑 테이블(BT)에 저장할 수 있다.
도 10은 도 8의 스트라이핑 크기를 매핑 해제하는 동작을 위한 메모리 컨트롤러(210)의 예시적인 동작을 보여주는 도면이다. 도 10을 참조하면, 메모리 컨트롤러(210)는 제2 디렉티브 커맨드(DSCMD)를 수신할 수 있다. 제2 디렉티브 커맨드(DSCMD)는 제2 스트림을 나타내는 스트림 식별 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 제2 디렉티브 커맨드(DSCMD)가 수신되는 경우, 디렉티브 타입 또는 디렉티브 동작 값에 기초하여 제2 디렉티브 커맨드(DSCMD)가 스트림에 대한 스트라이핑 크기의 매핑을 해제하는 커맨드임을 인식할 수 있다. 이 경우, 제2 디렉티브 커맨드(DSCMD)는 디렉티브 타입 및 디렉티브 동작 값 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 제2 디렉티브 커맨드(DSCMD)에 응답하여 제2 스트림에 매핑된 스트라이핑 크기를 매핑 해제하고, 매핑 테이블(SST)의 매핑 정보를 업데이트할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 호스트(100)는 스트림 별 스트라이핑 크기를 동적으로 선택할 수 있고, 저장 장치(200)는 스트림 별 스트라이핑 크기에 기초하여 데이터(DATA)를 저장할 수 있다. 이에 따라, 저장 장치(200)는 호스트(100)의 요구 성능을 고려하여 스트라이핑 정책을 적용할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 호스트(100)는 네임스페이스(namespace) 별 스트라이핑 크기를 동적으로 선택할 수 있고, 저장 장치(200)는 네임스페이스 별 스트라이핑 크기에 기초하여 데이터(DATA)를 저장할 수 있다.
도 11은 본 발명의 실시 예에 따른 SSD 시스템(2000)을 보여주는 블록도이다. 도 11을 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다.
SSD(2200)는 신호 커넥터(2201)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2202)를 통해 전원(PWR)을 입력 받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다. 플래시 메모리들(2221~222n) 각각은 별도의 다이, 또는 별도의 칩으로 구현될 수 있다. 예를 들어, 플래시 메모리들(2221~222n) 각각은 도 1 내지 도 10을 참조하여 설명된 뱅크를 포함할 수 있다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 플래시 메모리들(2221~222n)을 제어할 수 있다. 플래시 메모리들(2221~222n)은 SSD 컨트롤러(2210)의 제어에 따라 동작할 수 있다. SSD 컨트롤러(2210)는 도 1 내지 도 10을 참조하여 설명된 메모리 컨트롤러(210)의 기능을 포함할 수 있다. 예를 들어, SSD 컨트롤러(2210)는 호스트(2100)로부터 스트림 식별 정보가 포함된 쓰기 커맨드(HRCMD) 및 데이터(DATA)를 수신할 수 있다. SSD 컨트롤러(2210)는 스트림 식별 정보에 따라 대응하는 스트라이핑 크기에 기초하여 데이터(DATA)가 저장될 플래시 메모리들(2221~222n) 중 하나를 할당할 수 있다. SSD 컨트롤러(2210)는 할당된 플래시 메모리에 데이터(DATA)를 저장할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2202)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD(2200)의 전원을 제공할 수 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 버퍼 메모리(2240)는 도 3 및 도 4를 참조하여 설명된 쓰기 버퍼(230)의 기능을 포함할 수 있다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 도 9의 매핑 테이블들(BT, SST))를 임시 저장할 수 있다. 또는 버퍼 메모리(2240)는 SSD 컨트롤러(2210)가 동작하는데 요구되는 다양한 정보들을 임시 저장할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 호스트
200: 저장 장치
210: 메모리 컨트롤러
220: 메모리 장치
221, 222, 223, 231, 232, 233: 뱅크
1000: 전자 시스템

Claims (10)

  1. 복수의 뱅크들을 포함하는 저장 장치의 동작 방법에 있어서,
    호스트(host)로부터 스트림(stream) 식별 정보를 포함하는 쓰기 커맨드를 수신하는 단계;
    상기 쓰기 커맨드에 응답하여 상기 스트림 식별 정보에 대응하는 스트라이핑(striping) 크기를 기반으로 상기 복수의 뱅크들 중 데이터가 저장될 뱅크를 할당하는 단계; 및
    상기 할당된 뱅크로 상기 데이터를 쓰는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 쓰기 커맨드는 상기 스트림 식별 정보에 대응하는 스트라이핑 크기 정보를 더 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 쓰기 커맨드를 수신하는 단계 이전에, 상기 호스트로부터 상기 스트림 식별 정보 및 스트라이핑 크기 정보를 포함하는 제1 디렉티브(directive) 커맨드를 수신하는 단계; 및
    상기 제1 디렉티브 커맨드에 응답하여 상기 스트라이핑 크기 정보를 상기 스트림 식별 정보에 매핑하는 단계를 더 포함하고,
    상기 데이터가 저장될 상기 뱅크는 상기 매핑하는 단계에서 매핑된 상기 스트라이핑 크기 정보에 기초하여 할당되는 동작 방법.
  4. 제 3 항에 있어서,
    상기 데이터를 쓰는 단계 이후에, 상기 호스트로부터 상기 스트림 식별 정보를 포함하는 제2 디렉티브 커맨드를 수신하는 단계; 및
    상기 제2 디렉티브 커맨드에 응답하여 상기 스트림 식별 정보에 매핑된 상기 스트라이핑 크기 정보의 매핑을 해제하는 단계를 더 포함하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 쓰기 커맨드를 수신하는 단계 이전에, 상기 호스트의 요청에 따라 상기 저장 장치에서 지원 스트라이핑 크기 정보를 상기 호스트로 제공하는 단계를 더 포함하는 동작 방법.
  6. 제 5 항에 있어서,
    상기 스트림 식별 정보에 대응하는 상기 스트라이핑 크기는 상기 지원 스트라이핑 크기 정보에 기초하여 상기 호스트에 의해 선택되는 동작 방법.
  7. 복수의 뱅크들을 포함하는 저장 장치를 제어하는 호스트의 동작 방법에 있어서,
    스트림 별로 스트라이핑(striping) 크기를 선택하는 단계; 및
    상기 선택된 스트라이핑 크기에 대한 스트라이핑 크기 정보 및 상기 선택된 스트라이핑 크기에 대응하는 스트림 식별 정보를 상기 저장 장치로 제공하는 단계를 포함하고,
    상기 스트라이핑 크기 정보 및 상기 스트림 식별 정보에 기초하여 상기 복수의 뱅크들 중 데이터가 저장될 뱅크가 할당되는 동작 방법.
  8. 제 7 항에 있어서,
    상기 선택하는 단계 이전에, 지원 스트라이핑 크기 정보를 상기 저장 장치로 요청하는 단계를 더 포함하고,
    상기 저장 장치로부터 제공된 상기 지원 스트라이핑 크기 정보에 기초하여 상기 스트라이핑 크기가 선택되는 동작 방법.
  9. 제 7 항에 있어서,
    상기 스트라이핑 크기 정보 및 상기 스트림 식별 정보는 쓰기 커맨드를 통해 상기 저장 장치로 제공되는 동작 방법.
  10. 제 7 항에 있어서,
    상기 스트라이핑 크기 정보 및 상기 스트림 식별 정보는 디렉티브(directive) 커맨드를 통해 상기 저장 장치로 제공되는 동작 방법.
KR1020180136538A 2018-11-08 2018-11-08 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 KR20200053204A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180136538A KR20200053204A (ko) 2018-11-08 2018-11-08 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
US16/413,755 US10942679B2 (en) 2018-11-08 2019-05-16 Memory systems and methods that allocate memory banks using striping size and stream identification information contained within directive commands
CN201911057357.2A CN111159061B (zh) 2018-11-08 2019-10-31 存储设备、存储设备的操作方法和主机的操作方法
US17/167,772 US11537324B2 (en) 2018-11-08 2021-02-04 Memory systems and methods that allocate memory banks using striping size and stream identification information contained within directive commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180136538A KR20200053204A (ko) 2018-11-08 2018-11-08 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200053204A true KR20200053204A (ko) 2020-05-18

Family

ID=70551360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180136538A KR20200053204A (ko) 2018-11-08 2018-11-08 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법

Country Status (3)

Country Link
US (2) US10942679B2 (ko)
KR (1) KR20200053204A (ko)
CN (1) CN111159061B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102493864B1 (ko) * 2021-11-16 2023-01-31 삼성전자주식회사 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법
US11693574B2 (en) 2021-01-11 2023-07-04 Samsung Electronics Co., Ltd. Method of writing data in storage device and storage device performing the same
US11861192B2 (en) 2021-03-02 2024-01-02 Samsung Electronics Co., Ltd. Storage controller redirecting write operation and operating method thereof
US11922037B2 (en) 2021-11-02 2024-03-05 Samsung Electronics Co., Ltd. Controller, storage device and operation method of storage device

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200053204A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
US11693594B2 (en) * 2021-03-29 2023-07-04 Micron Technology, Inc. Zone striped zone namespace memory
CN113222807B (zh) * 2021-05-22 2023-12-19 上海阵量智能科技有限公司 数据存储器、数据存储、读取方法、芯片及计算机设备
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory
JP2023140125A (ja) 2022-03-22 2023-10-04 キオクシア株式会社 メモリシステムおよび方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938123B2 (en) * 2002-07-19 2005-08-30 Storage Technology Corporation System and method for raid striping
US20070079098A1 (en) * 2005-10-03 2007-04-05 Hitachi, Ltd. Automatic allocation of volumes in storage area networks
US20070180214A1 (en) * 2005-12-20 2007-08-02 Dell Products L.P. System and method for dynamic striping in a storage array
JP4856467B2 (ja) * 2006-05-01 2012-01-18 株式会社日立製作所 ストレージ資源管理システム、ストレージ資源管理方法および管理計算機
CN100530138C (zh) 2007-06-28 2009-08-19 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的自适应控制方法
JP2010176646A (ja) * 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
JP5021018B2 (ja) * 2009-11-30 2012-09-05 株式会社日立製作所 データ配置方法及びデータ管理システム
US8472350B2 (en) * 2010-12-31 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Bank aware multi-bit trie
US8848445B2 (en) * 2011-05-17 2014-09-30 Sandisk Technologies Inc. System and method for minimizing write amplification while maintaining sequential performance using logical group striping in a multi-bank system
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
CN104220991B (zh) 2012-03-16 2017-08-29 马维尔国际贸易有限公司 用于允许数据在nand闪存上的有效存储的架构
CN103581033B (zh) * 2012-07-27 2016-12-21 重庆重邮信科通信技术有限公司 数据流处理的方法及设备
US9542126B2 (en) * 2013-04-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume
US9542284B2 (en) 2014-08-06 2017-01-10 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US20160048342A1 (en) * 2014-08-12 2016-02-18 Facebook, Inc. Reducing read/write overhead in a storage array
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
KR101734160B1 (ko) 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치
US10198215B2 (en) 2016-06-22 2019-02-05 Ngd Systems, Inc. System and method for multi-stream data write
JP2018022275A (ja) 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
KR20180062247A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 효율적인 버퍼 할당을 수행하는 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
KR20180085419A (ko) * 2017-01-18 2018-07-27 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR20200053204A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693574B2 (en) 2021-01-11 2023-07-04 Samsung Electronics Co., Ltd. Method of writing data in storage device and storage device performing the same
US11861192B2 (en) 2021-03-02 2024-01-02 Samsung Electronics Co., Ltd. Storage controller redirecting write operation and operating method thereof
US11922037B2 (en) 2021-11-02 2024-03-05 Samsung Electronics Co., Ltd. Controller, storage device and operation method of storage device
KR102493864B1 (ko) * 2021-11-16 2023-01-31 삼성전자주식회사 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법

Also Published As

Publication number Publication date
CN111159061A (zh) 2020-05-15
CN111159061B (zh) 2024-05-28
US20200150899A1 (en) 2020-05-14
US11537324B2 (en) 2022-12-27
US10942679B2 (en) 2021-03-09
US20210157528A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
CN111159061B (zh) 存储设备、存储设备的操作方法和主机的操作方法
CN111344683B (zh) 非易失性存储器装置中的命名空间分配
JP6765321B2 (ja) メモリシステムおよび制御方法
JP6709180B2 (ja) メモリシステムおよび制御方法
JP6765322B2 (ja) メモリシステムおよび制御方法
EP3436953B1 (en) Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US20190079859A1 (en) Apparatus, computer program product, system, and method for managing multiple regions of a memory device
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
CN109656833B (zh) 数据储存装置
CN110096221B (zh) 存储器系统及其控制方法
KR20120030137A (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
JP2020123038A (ja) メモリシステムおよび制御方法
KR20180123385A (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
JP2020123040A (ja) メモリシステムおよび制御方法
KR102653373B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
JP2021033845A (ja) メモリシステムおよび制御方法
US11182289B1 (en) Memory system and operating method thereof
CN116795735B (zh) 固态硬盘空间分配方法、装置、介质及系统
KR20190004402A (ko) 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
US11768628B2 (en) Information processing apparatus
JP7167295B2 (ja) メモリシステムおよび制御方法
US11928360B2 (en) Command slot management for memory devices
TWI685847B (zh) 資料儲存裝置之非揮發式記憶體的命名空間規劃
JP2020198128A (ja) メモリシステム
JP2020205077A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal