KR102547950B1 - 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템 - Google Patents

호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR102547950B1
KR102547950B1 KR1020210064637A KR20210064637A KR102547950B1 KR 102547950 B1 KR102547950 B1 KR 102547950B1 KR 1020210064637 A KR1020210064637 A KR 1020210064637A KR 20210064637 A KR20210064637 A KR 20210064637A KR 102547950 B1 KR102547950 B1 KR 102547950B1
Authority
KR
South Korea
Prior art keywords
host
write
buffer
memory
command
Prior art date
Application number
KR1020210064637A
Other languages
English (en)
Other versions
KR20220102540A (ko
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 CN202210017105.2A priority Critical patent/CN114764310A/zh
Priority to EP22150727.0A priority patent/EP4030274A1/en
Priority to US17/647,745 priority patent/US20220222011A1/en
Publication of KR20220102540A publication Critical patent/KR20220102540A/ko
Application granted granted Critical
Publication of KR102547950B1 publication Critical patent/KR102547950B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/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
    • 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

Abstract

스토리지 디바이스를 제어하는 프로세서는, 상기 스토리지 디바이스의 디바이스 정보에 기초하여 생성된 적어도 하나의 호스트 쓰기 버퍼 및 상기 호스트 쓰기 버퍼를 제어하는 제어 모듈을 포함한다. 상기 제어 모듈은, 호스트에서 생성된 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하고, 상기 복수의 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성하는 것을 특징으로 한다.

Description

호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템 {PROCESSOR FOR USING HOST MEMORY BUFFER AND STORAGE SYSTEM INCLUDING THE SAME}
본 발명은 장치들(apparatuses) 및 방법들(methods)에 관한 것으로서, 더욱 상세하게는 호스트에서 메모리 버퍼를 효율적으로 활용하는 프로세서 및 이를 포함하는 스토리지 시스템에 관한 것이다.
스토리지 시스템은 호스트와 스토리지 디바이스를 포함한다. 호스트와 스토리지 디바이스는 UFS(Universal Flash Storage), SATA(Serial ATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), eMMC(embedded Multi-Media Card) 등과 같은 다양한 표준 인터페이스를 통해 연결된다. 스토리지 시스템이 모바일 장치에 사용되는 경우, 호스트와 스토리지 디바이스 사이의 고속 동작이 매우 중요하며 스토리지 디바이스에 포함된 쓰기 버퍼의 공간이 부족하므로, 호스트에서 메모리 버퍼를 효율적으로 활용할 필요가 있다.
본 발명의 목적은 스토리지 디바이스의 특성을 고려하여 호스트에서 쓰기 버퍼를 생성하고, 쓰기 커맨드를 병합하여 스토리지 디바이스에 전달하여 쓰기 성능을 개선한 스토리지 시스템을 제공하는 데 있다.
본 발명의 실시예들에 따른 스토리지 디바이스를 제어하는 프로세서는, 상기 스토리지 디바이스의 디바이스 정보에 기초하여 생성된 적어도 하나의 호스트 쓰기 버퍼 및 상기 호스트 쓰기 버퍼를 제어하는 제어 모듈을 포함한다. 상기 제어 모듈은, 호스트에서 생성된 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하고, 상기 복수의 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성하는 것을 특징으로 한다.
본 발명의 실시예들에 따른 호스트 및 스토리지 디바이스를 포함하는 스토리지 시스템에서, 상기 호스트는, 상기 스토리지 디바이스의 디바이스 정보에 기초하여 생성된 적어도 하나의 호스트 쓰기 버퍼 및 상기 호스트 쓰기 버퍼를 제어하는 제어 모듈;을 포함한다. 상기 제어 모듈은, 상기 호스트에서 생성된 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하고, 상기 복수의 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성하는 것을 특징으로 한다.
본 발명의 실시예들에 따른 스토리지 디바이스를 제어하는 방법은, 상기 스토리지 디바이스의 디바이스 정보에 기초하여 적어도 하나의 호스트 쓰기 버퍼를 생성하는 단계 호스트에서 생성된 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하는 단계 및 상기 복수의 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성하는 단계를 포함한다.
본 발명의 실시예들에 따르면, 스토리지 디바이스의 정보를 반영하여 호스트에서 쓰기 버퍼를 생성하여 효과적인 자원 운용이 가능하다.
또한 생성된 호스트 쓰기 버퍼에서 쓰기 커맨드를 병합하여 스토리지 디바이스에 전송하므로 쓰기 성능을 개선할 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
도 3a 내지 도 3d는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
도 4a 내지 도 4d 는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
도 5는 본 발명의 실시예들에 따른 스토리지 시스템에서 병합 쓰기 커맨드의 메타 데이터 전송을 설명하는 도면이다.
도 6은 본 발명의 실시예들에 따른 스토리지 시스템에서 병합 쓰기 커맨드의 메타 데이터 전송을 설명하는 도면이다.
도 7은 본 발명의 실시예들에 따른 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 8은 본 발명의 실시예들에 따른 멀티 스트림을 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 9는 본 발명의 실시예들에 따른 멀티 스트림을 지원하지 않는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 10은 본 발명의 실시예들에 따른 멀티 스트림을 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 11은 본 발명의 실시예들에 따른 존 기반 인터페이스를 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 12는 본 발명의 실시예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다.
도 13은 본 발명의 일 실시예에 따른 스토리지 디바이스가 적용된 시스템을 도시한 도면이다.
도 14는 본 발명의 일 실시예에 따른 UFS 시스템에 대해 설명하기 위한 도면이다.
도 15은 본 발명의 일 실시예에 따른 비휘발성 스토리지를 나타내는 블록도이다.
도 16은 본 발명의 일 실시예에 따른 비휘발성 스토리지를 나타내는 블록도이다.
도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 호스트(20)와 스토리지 디바이스(30)를 포함할 수 있다. 호스트(20)와 스토리지 디바이스(30)는 UFS(Universal Flash Storage) 스펙(specification)에서 정의된 인터페이스 규약에 따라 연결될 수 있고, 이에 따라, 스토리지 디바이스(30)는 UFS 스토리지 디바이스일 수 있고, 호스트(20)는 UFS 호스트일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 스토리지 디바이스(30)와 호스트(20)는 다양한 표준 인터페이스들에 따라 연결될 수 있다.
호스트(20)는 스토리지 디바이스(30)에 대한 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다. 호스트(20)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있다. 호스트(20)는 운영 체제(operating system, OS) 및/또는 다양한 응용 프로그램(application)을 수행할 수 있다. 일 실시예에서, 스토리지 시스템(10)은 모바일 장치에 포함될 수 있고, 호스트(20)는 어플리케이션 프로세서(AP)로 구현될 수 있다. 일 실시예에서, 호스트(20)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있고, 이에 따라, 전자 장치에 내장될 수 있다.
본 실시예에서, 호스트(20) 및 스토리지 디바이스(30)에 포함되는 개념적인 다수의 하드웨어 구성이 도시되어 있으나, 이에 한정되지 않으며 다른 구성들도 가능하다. 호스트(20)는 인터커넥트부(22), 호스트 컨트롤러(24) 및 호스트 쓰기 버퍼(26)를 포함할 수 있다. 인터커넥트부(22)는 호스트(20)와 스토리지 디바이스(30) 사이의 인터페이스(40)를 제공할 수 있다. 인터커넥트부(22)는 물리 계층(physical layer) 및 링크 계층(link layer)을 포함할 수 있다. 인터커넥트부(22)의 물리 계층은 스토리지 디바이스(30)와 데이터를 교환(exchange)하기 위한 물리적 구성들을 포함할 수 있고, 적어도 하나의 송신기(transmitter: TX) 및 적어도 하나의 수신기(receiver: RX) 등을 포함할 수 있다. 호스트(20)의 인터커넥트부(22)는 예컨대, 4개의 송신기들(TX1-TX4)을 포함하고 4개의 수신기들(RX1-RX4)을 포함할 수 있다. 인터커넥트부(22)의 링크 계층은 데이터의 전송 및/또는 조합(Composition)을 관리할 수 있고, 데이터의 무결성(Integrity) 및 오류(Error)를 관리할 수도 있다.
호스트 컨트롤러(24)는 스토리지 디바이스(30)로부터 스토리지 디바이스(30)에 대한 정보를 수신하여 호스트 쓰기 버퍼(26)를 생성할 수 있다. 호스트 컨트롤러(24)는 호스트(20)에서 생성된 복수의 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성하기 위해, 호스트 쓰기 버퍼(26)에 복수의 쓰기 커맨드들을 저장할 수 있다.
호스트 쓰기 버퍼(26)는 스토리지 디바이스(30)를 위해 호스트(20)에서 메모리의 일정 부분이 할당된 것일 수 있다. 호스트 쓰기 버퍼(26)는 호스트(20)의 블록 레이어 또는 디바이스 드라이버에서 생성될 수 있다. 호스트 쓰기 버퍼(26)는 호스트(20)와 스토리지 디바이스(30)간에 초기화 과정에서 비휘발성 메모리(36)에 최적화된 쓰기 I/O 정보를 수신하여 정적으로 할당되어 운영될 수 있다.
스토리지 디바이스(30)는 인터커넥트부(32), 스토리지 컨트롤러(34) 및 비휘발성 메모리(36)를 포함할 수 있다. 스토리지 컨트롤러(34)는 호스트(20)로부터의 기입 요청에 응답하여 비휘발성 메모리(36)에 데이터를 기입하도록 비휘발성 메모리(36)를 제어하거나, 또는 호스트(20)로부터의 독출 요청에 응답하여 비휘발성 메모리(36)에 저장된 데이터를 독출하도록 비휘발성 메모리(36)를 제어할 수 있다.
인터커넥트부(32)는 스토리지 디바이스(30)와 호스트(20) 사이의 인터페이스(40)를 제공할 수 있다. 예를 들어, 인터커넥트부(32)는 물리 계층 및 링크 계층을 포함할 수 있다. 인터커넥트부(32)의 물리 계층은 호스트(20)와 데이터를 교환하기 위한 물리적 구성들을 포함할 수 있고, 적어도 하나의 수신기(RX) 및 적어도 하나의 송신기(TX) 등을 포함할 수 있다. 스토리지 디바이스(30)의 인터커넥트부(32)는 예컨대, 4개의 수신기들(RX1-RX4)을 포함하고 4개의 송신기들(TX1-TX4)을 포함할 수 있다. 인터커넥트부(32)의 링크 계층은 데이터의 전송 및/또는 조합을 관리할 수 있고, 데이터의 무결성 및 오류를 관리할 수도 있다.
일 실시예에서, 스토리지 시스템(10)이 모바일 장치인 경우, 인터커넥트부들(22, 32)의 물리 계층들은 "M-PHY" 스펙에 의해 정의될 수 있고, 링크 계층들은 "UniPro" 스펙에 의해 정의될 수 있다. M-PHY 및 UniPro는 MIPI(Mobile Industry Processor Interface) 연합(Alliance)에 의해 제안된 인터페이스 규약이다. 인터커넥트부들(22, 32)의 링크 계층들은 물리 적응 계층(Physical Adapted Layer)을 각각 포함할 수 있는데, 물리 적응 계층은 데이터의 심볼을 관리하거나 전력을 관리하는 등 물리 계층들을 제어할 수 있다.
호스트(20)의 인터커넥트부(22)에 포함된 송신기(TX)와 스토리지 디바이스(30)의 인터커넥트부(32)에 포함된 수신기(RX)는, 하나의 레인(lane)을 형성할 수 있다. 또한, 스토리지 디바이스(30)의 인터커넥트부(32)에 포함된 송신기(TX)와 호스트(20)의 인터커넥트부(22)에 포함된 수신기(RX)도 하나의 레인을 형성할 수 있다.
비휘발성 메모리(36)는 복수의 메모리 셀들을 포함할 수 있는데, 예를 들어, 복수의 메모리 셀들은 플래쉬 메모리 셀들일 수 있다. 일 실시예에서, 복수의 메모리 셀들은 낸드(NAND) 플래쉬 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 복수의 메모리 셀들은 ReRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
일부 실시예들에서, 스토리지 디바이스(30)는 디램리스(DRAMless) 장치로 구현될 수 있고, 디램리스 장치는 DRAM 캐시를 포함하지 않는 장치를 지칭할 수 있다. 이때, 스토리지 컨트롤러(34)는 DRAM 컨트롤러를 포함하지 않을 수 있다. 예를 들어, 스토리지 디바이스(30)는 비휘발성 메모리(36)의 일부 영역을 버퍼 메모리로 이용할 수 있다.
일부 실시예들에서, 스토리지 디바이스(30)는 전자 장치에 내장되는(embedded) 내장(internal) 메모리일 수 있다. 예를 들어, 스토리지 디바이스(30)는 임베디드 UFS(Universal Flash Storage) 메모리 장치, eMMC(embedded Multi-Media Card), 또는 SSD(Solid State Drive)일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 스토리지 디바이스(30)는 비휘발성 메모리(예를 들면, OTPROM(One Time Programmable ROM), PROM(Programmable ROM), EPROM(Erasable and Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), Mask ROM, Flash ROM 등)일 수 있다. 일부 실시예들에서, 스토리지 디바이스(30)는 전자 장치에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 디바이스(30)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 및 Memory Stick 중 적어도 하나를 포함할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰(smartphone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), 오디오 장치(audio device), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book) 등과 같은 전자 장치로 구현될 수 있다. 또한, 스토리지 시스템(10)은 예를 들어, 손목 시계 또는 HMD(Head-Mounted Display)와 같은 웨어러블 기기(Wearable device) 등과 같은 다양한 유형의 전자 장치로 구현될 수도 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
도 2를 참조하면, 스토리지 시스템은 파일 시스템(110), 호스트 쓰기 버퍼(120), 데이터 전송 관리자(130) 및 스토리지 디바이스(140)를 포함할 수 있다. 예시적으로, 스토리지 시스템은 도 1의 호스트 및 스토리지 디바이스로 구성될 수 있고, 호스트는 파일 시스템(110), 호스트 쓰기 버퍼(120), 및 데이터 전송 관리자(130)를 포함할 수 있다.
예를 들어, 파일 시스템(110)에서 제1 쓰기 커맨드(WC1)가 생성되고, 호스트 쓰기 버퍼(120)에 제공 및 저장되면, 호스트 쓰기 버퍼(120)는 제1 응답 신호(CR_1)를 파일 시스템(110)으로 전달할 수 있다. 파일 시스템(110)은 제1 응답 신호(CR_1)가 수신되면 제1 쓰기 커맨드(WC1)가 성공적으로 전달된 것으로 인식하고 제2 쓰기 커맨드(WC2)를 생성할 수 있다. 또한, 파일 시스템(110)은 제1 쓰기 커맨드(WC1) 처리 중 응답 신호(CR_1)와 관련없이 기설정된 범위 내에서 제 2 쓰기 커맨드(WC2) 내지 제N 쓰기 커맨드(WC_N)를 동시에 복수개 생성하고 호스트 쓰기 버퍼(120)에 제공 또는 저장 가능하다. 예를 들어, 기설정된 범위는 스토리지 시스템에서 지원하는 호스트 컨트롤러 인터페이스 커맨드 큐(Host Controller Interface Command Queue)의 개수에 따라 정해질 수 있다.
예를 들어, 스토리지 시스템은 스토리지 디바이스(140)에서 수신된 정보에 기초하여 제1 쓰기 커맨드(WC1) 내지 제4 쓰기 커맨드(WC4)를 병합하여 제1 병합 쓰기 커맨드(MWC1)을 생성할 수 있다. 데이터 전송 관리자(130)는 호스트 쓰기 버퍼(120)에서 제1 병합 쓰기 커맨드(MWC1)를 수신하고, 호스트 쓰기 버퍼(120)에 제1 버퍼 응답(BCR1)을 제공할 수 있다. 스토리지 디바이스(140)는 데이터 전송 관리자(130)로부터 제1 병합 쓰기 커맨드(MWC1)를 수신하고, 제1 병합 쓰기 커맨드 응답(MCR1)을 데이터 전송 관리자(130)에게 제공할 수 있다. 스토리지 시스템은 제1 병합 쓰기 커맨드 응답(MCR1)이 수신되는 시점에, 호스트 쓰기 버퍼(120)에 저장된 제1 병합 쓰기 커맨드(MWC1)에 대응되는 제1 병합 데이터를 전송할 수 있다. 스토리지 시스템은 제1 병합 데이터를 전송하고, 호스트의 파일 시스템(110)에서 생성된 새로운 쓰기 커맨드를 병합할 수 있다.
도 3a 내지 도 3d는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
도 3a 내지 도 3d를 참조하면, 효율적인 쓰기 커맨드 병합 및 병합 쓰기 커맨드 처리를 위해서 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)를 포함하는 더블링 버퍼(doubling buffer)일 수 있다.
쓰기 커맨드가 호스트 쓰기 버퍼의 크기만큼 생성되면, 하나의 호스트 쓰기 버퍼에서 쓰기 커맨드를 처리할 수 있다. 다만, 호스트 쓰기 버퍼보다 더 큰 크기의 쓰기 커맨드가 생성되는 경우 복수의 호스트 쓰기 버퍼가 필요할 수 있다.
또한 복수의 호스트 쓰기 버퍼를 할당하는 경우, 제1 호스트 쓰기 버퍼(210)에서 병합 데이터를 처리하는 중에도, 제2 호스트 쓰기 버퍼(220)에서 파일 시스템에서 생성된 새로운 쓰기 커맨드들을 처리할 수 있다. 스토리지 시스템은 스토리지 디바이스의 정보에 기초하여 적어도 하나의 호스트 쓰기 버퍼를 할당할 수 있으며, 본 실시예에서는 편의상 하나 또는 두개의 호스트 쓰기 버퍼를 할당한 경우를 설명하고 있으나 호스트 쓰기 버퍼의 개수는 이에 한정되지 않는다.
도 3a를 참조하면, 호스트 쓰기 버퍼(200)는 제1 쓰기 커맨드(WC1)가 저장된 상태에서, 파일 시스템에서 생성된 제2 쓰기 커맨드(WC2)를 수신하여 저장할 수 있다. 호스트 쓰기 버퍼(200)는 제2 쓰기 커맨드(WC2)가 저장되면 제2 쓰기 커맨드 응답 신호(CR2)를 생성하고 파일 시스템에 전송할 수 있다.
예를 들어, 제2 쓰기 커맨드 응답 신호(CR2)는 파일 시스템에서 스토리지 디바이스에 쓰기 커맨드를 전송한 경우 수신하는 응답신호와 동일한 형태로 구성될 수 있다. 이 경우, 파일 시스템은 스토리지 디바이스에 쓰기 커맨드들을 전송하기 전에 바로 호스트 쓰기 버퍼(200)로부터 응답신호를 수신하므로 빠른 쓰기(fast write) 처리가 가능하다.
도 3b를 참조하면, 호스트 쓰기 버퍼(200)는 파일 시스템에서 생성된 제3 쓰기 커맨드(WC3)를 수신하여 저장하고, 제3 쓰기 커맨드 응답 신호(CR3)를 생성하여 파일 시스템에 전송할 수 있다.
스토리지 시스템은 호스트 쓰기 버퍼(200)에 저장된 제1 쓰기 커맨드(WC1), 제2 쓰기 커맨드(WC2) 및 제3 쓰기 커맨드(WC3)를 병합하여 제1 병합 쓰기 커맨드(MWC1)를 생성할 수 있다. 스토리지 시스템은 생성된 제1 병합 쓰기 커맨드(MWC1)를 데이터 전송 관리자를 통해 스토리지 디바이스로 전달할 수 있다.
도 3c를 참조하면, 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)을 포함할 수 있다. 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210)의 남아있는 공간보다 큰 제3 쓰기 커맨드(WC3)를 수신하는 경우, 제3_1 쓰기 커맨드(WC3_1)는 제1 호스트 쓰기 버퍼(210)에 저장하고, 나머지 제3_2 쓰기 커맨드(WC3_2)는 제2 호스트 쓰기 버퍼(220)에 저장할 수 있다. 호스트 쓰기 버퍼는 제3 쓰기 커맨드(WC3)가 저장된 이후, 제3 쓰기 커맨드 응답 신호(CR3)를 생성하여 파일 시스템에 전송할 수 있다.
스토리지 시스템은 제1 호스트 쓰기 버퍼(210)에 저장된 제1 쓰기 커맨드(WC1), 제2 쓰기 커맨드(WC2) 및 제3_1 쓰기 커맨드(WC3_1)를 병합하여 제1 병합 쓰기 커맨드(MWC1)를 생성할 수 있다. 스토리지 시스템은 생성된 제1 병합 쓰기 커맨드(MWC1)를 데이터 전송 관리자를 통해 스토리지 디바이스로 전달할 수 있다. 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)를 활용하여, 남아있는 공간보다 큰 쓰기 커맨드를 분할하여 저장할 수 있다.
도 3d를 참조하면, 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210)가 쓰기 커맨드 병합 및 제1 병합 쓰기 커맨드(MWC1)를 전달하는 중에, 제2 호스트 쓰기 버퍼(220)에 파일 시스템에서 수신한 제4 쓰기 커맨드(WC4)를 저장할 수 있다. 스토리지 시스템은 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)를 활용하여, 제1 호스트 쓰기 버퍼(210)에서 제1 병합 쓰기 커맨드(MWC1)를 전송하는 것과 동시에, 제2 호스트 쓰기 버퍼(220)를 통해 파일 시스템에서 다른 쓰기 커맨드를 수신하여 저장하고 병합할 수 있다.
도 4a 내지 도 4d 는 본 발명의 실시예들에 따른 스토리지 시스템에서 쓰기 커맨드 병합 과정을 설명하는 도면이다.
예를 들어, 병합 쓰기 커맨드들이 모두 연속된 논리 블록 어드레스를 가지는 경우에는 별도의 메타 데이터를 운영할 필요가 없으나, 불연속 논리 블록 어드레스를 가지는 쓰기 커맨드들을 병합하는 경우에는 메타 데이터를 저장하는 메타 버퍼(300)가 필요하다. 메타 데이터는 쓰기 커맨드의 논리 블록 어드레스 및 길이 정보를 포함할 수 있다. 메타 버퍼(300)는 호스트 쓰기 버퍼(200)와 대응되는 형태로 생성될 수 있다.
도 4a를 참조하면, 호스트 쓰기 버퍼(200)는 제1 쓰기 커맨드(WC1)가 저장된 상태에서, 파일 시스템에서 생성된 제2 쓰기 커맨드(WC2)를 수신하여 저장할 수 있다. 호스트 쓰기 버퍼(200)는 제2 쓰기 커맨드(WC2)가 저장되면 제2 쓰기 커맨드 응답 신호(CR2)를 생성하고 파일 시스템에 전송할 수 있다.
호스트 쓰기 버퍼(200)에 제1 쓰기 커맨드(WC1)가 수신되면 메타 버퍼(300)에 제1 메타 데이터(MT1)가 저장될 공간이 할당되고, 제1 메타 데이터(MT1)가 저장될 수 있다. 제1 메타 데이터(MT1)는 제1 쓰기 커맨드(WC1)의 논리 블록 어드레스 및 길이 정보를 포함할 수 있다. 호스트 쓰기 버퍼(200)에 제2 쓰기 커맨드(WC2)가 수신되면 메타 버퍼(300)에 제2 메타 데이터(MT2)가 저장될 공간이 할당될 수 있다.
도 4b를 참조하면, 호스트 쓰기 버퍼(200)에 제3 쓰기 커맨드(WC3)가 수신되면 메타 버퍼(300)에 제3 메타 데이터(MT3)가 저장될 공간이 할당될 수 있다. 호스트 쓰기 버퍼(200)는 제3 쓰기 커맨드(WC3)가 저장되면 제3 쓰기 커맨드 응답 신호(CR3)를 생성하고 파일 시스템에 전송할 수 있다.
스토리지 시스템은 호스트 쓰기 버퍼(200)에 저장된 제1 쓰기 커맨드(WC1), 제2 쓰기 커맨드(WC2) 및 제3 쓰기 커맨드(WC3)를 병합하여 제1 병합 쓰기 커맨드(MWC1)를 생성할 수 있다. 스토리지 시스템은 생성된 제1 병합 쓰기 커맨드(MWC1)를 데이터 전송 관리자를 통해 스토리지 디바이스로 전달할 수 있다.
도 4c를 참조하면, 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)을 포함할 수 있다. 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210)의 남아있는 공간보다 큰 제3 쓰기 커맨드(WC3)를 수신하는 경우, 제3_1 쓰기 커맨드(WC3_1)는 제1 호스트 쓰기 버퍼(210)에 저장하고, 나머지 제3_2 쓰기 커맨드(WC3_2)는 제2 호스트 쓰기 버퍼(220)에 저장할 수 있다. 호스트 쓰기 버퍼는 제3 쓰기 커맨드(WC3)가 저장된 이후, 제3 쓰기 커맨드 응답 신호(CR3)를 생성하여 파일 시스템에 전송할 수 있다.
메타 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)에 대응되게 구성될 수 있다. 예를 들어, 메타 버퍼는 제1 메타 버퍼(310) 및 제2 메타 버퍼(320)을 포함할 수 있다. 제1 메타 버퍼(310)는 제1 메타 데이터(MT1), 제2 메타 데이터(MT2)를 저장할 수 있다. 제3 메타 데이터는 제3 쓰기 커맨드와 마찬가지로 제1 메타 버퍼(310) 및 제2 메타 버퍼(320)에 분할되어 저장될 수 있다. 제3_1 메타 데이터(MT3_1)는 제1 메타 버퍼(310)에 저장되고, 제3_2 메타 데이터(MT3_2)는 제2 메타 버퍼(320)에 저장될 수 있다.
스토리지 시스템은 제1 호스트 쓰기 버퍼(210)에 저장된 제1 쓰기 커맨드(WC1), 제2 쓰기 커맨드(WC2) 및 제3_1 쓰기 커맨드(WC3_1)를 병합하여 제1 병합 쓰기 커맨드(MWC1)를 생성할 수 있다. 스토리지 시스템은 생성된 제1 병합 쓰기 커맨드(MWC1)를 데이터 전송 관리자를 통해 스토리지 디바이스로 전달할 수 있다. 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)를 활용하여, 남아있는 공간보다 큰 쓰기 커맨드를 분할하여 저장할 수 있다.
도 4d를 참조하면, 호스트 쓰기 버퍼는 제1 호스트 쓰기 버퍼(210)가 쓰기 커맨드 병합 및 제1 병합 쓰기 커맨드(MWC1)를 전달하는 중에, 제2 호스트 쓰기 버퍼(220)에 파일 시스템에서 수신한 제4 쓰기 커맨드(WC4)를 저장할 수 있다. 스토리지 시스템은 제1 호스트 쓰기 버퍼(210) 및 제2 호스트 쓰기 버퍼(220)를 활용하여, 제1 호스트 쓰기 버퍼(210)에서 제1 병합 쓰기 커맨드(MWC1)를 전송하는 것과 동시에, 제2 호스트 쓰기 버퍼(220)를 통해 파일 시스템에서 다른 쓰기 커맨드를 수신하여 저장하고 병합할 수 있다.
스토리지 시스템은 제1 메타 버퍼(310)에 저장된 1 메타 데이터(MT1), 제2 메타 데이터(MT2) 및 제3 메타 데이터(MT3)를 처리하는 동안, 제2 메타 버퍼(320)에 제4 메타 데이터(MT4)를 수신하여 저장할 수 있다.
도 5는 본 발명의 실시예들에 따른 스토리지 시스템에서 병합 쓰기 커맨드의 메타 데이터 전송을 설명하는 도면이다.
스토리지 시스템은 호스트 쓰기 버퍼(120)에서 병합 쓰기 커맨드를 전송할 때, 논리 블록 어드레스 및 길이 정보를 포함하는 메타 데이터를 전송하기 위해 추가 헤더 세그먼트(Extra Header Segments, EHS)를 활용한 인터페이스를 제공할 수 있다. 추가 헤더 세그먼트는 UFS Spec 4.0에서부터 지원 예정이며, 32byte로 고정된 커맨드 헤더(Command Header)외에 추가적인 헤더가 필요할 때 사용될 수 있다.
추가 헤더 세그먼트는 EHS 헤더 및 메타를 포함할 수 있다. EHS 헤더는 고정된 크기를 가지며 여러 오퍼레이션이 수행될 수 있는 확장성을 제공할 수 있다. 메타는 호스트 쓰기 버퍼(120)에 병합된 쓰기 커맨드들의 총 개수와 사용하고자 하는 쓰기 커맨드 종류(예를 들어, WRITE(10) 또는 WRITE(16))에 따라 가변 될 수 있다. EHS 헤더는 병합 쓰기 커맨드의 전송 여부, 논리 블록 어드레스 및 길이 정보의 특성, 메타 전송 필요 여부, 유효한 메타 크기 설정, 호스트 쓰기 버퍼에서 병합되는 쓰기 커맨드의 개수 등에 대한 정보를 저장하는 필드를 포함할 수 있다. 메타는 쓰기 커맨드별 논리 블록 어드레스 및 길이 정보를 저장하는 필드를 포함할 수 있다.
스토리지 시스템은 호스트 쓰기 버퍼(120)에 저장된 쓰기 커맨드들을 병합하고, 데이터 전송 관리자(130)를 통해 제1 병합 쓰기 커맨드(MWC1)를 스토리지 디바이스(140)에 전송할 수 있다. 제1 병합 쓰기 커맨드(MWC1)에 대응되는 메타 정보들은 추가 헤더 세그먼트를 통해 스토리지 디바이스(140)에 전송될 수 있다.
도 6은 본 발명의 실시예들에 따른 스토리지 시스템에서 병합 쓰기 커맨드의 메타 데이터 전송을 설명하는 도면이다.
스토리지 시스템은 추가 헤더 세그먼트를 사용하는 대신 별도의 밴더 커맨드(Vendor Command) 또는 UFS의 쓰기 버퍼 커맨드를 사용하여 메타 정보를 전달할 수 있다. 예를 들어, 제1 쓰기 버퍼 커맨드(WBC1)를 사용하여 메타 정보를 전달하고, 호스트 쓰기 버퍼에 저장된 제1 병합 쓰기 커맨드(MWC1)를 전달할 수 있다. 스토리지 시스템은 제1 쓰기 버퍼 커맨드(WBC1)를 통해 메타 정보를 제1 병합 쓰기 커맨드(MWC1)보다 먼저 전달함으로써, 논리 블록 어드레스 및 길이정보에 대한 유효성 검사를 먼저 처리할 수 있다.
도 7은 본 발명의 실시예들에 따른 스토리지 시스템의 동작 방법을 설명하는 도면이다.
도 7을 참고하면 제0 쓰기 커맨드(WC0) 및 제1 쓰기 커맨드(WC1)을 호스트 쓰기 버퍼(520) 및 메타 버퍼(530)를 통해 스토리지 디바이스(550)에 전달할 수 있다. 제0 쓰기 커맨드(WC0) 및 제1 쓰기 커맨드(WC1)는 서로 다른 크기와 주소를 가지는 쓰기 커맨드 일 수 있다.
파일 시스템(510)에서 먼저 논리 블록 어드레스가 0이고 길이가 4인 제0 쓰기 커맨드(WC0)가 생성되어 호스트 쓰기 버퍼(520)에 저장될 수 있고, 제0 쓰기 커맨드(WC0)에 대한 응답이 파일 시스템(510)에 전달될 수 있다. 호스트 쓰기 버퍼(520)와 대응되는 메타 버퍼(530)에 제0 메타 정보(논리 블록 어드레스가 0이고 길이가 4)가 저장될 수 있다.
스토리지 시스템은 논리 블록 어드레스가 10이고 길이가 4인 제1 쓰기 커맨드(WC1)를 호스트 쓰기 버퍼(520)에 저장할 수 있다. 제1 쓰기 커맨드(WC1)의 크기는 호스트 쓰기 버퍼(520)에 포함된 제1 호스트 쓰기 버퍼의 남아있는 공간보다 크므로, 제1_1 쓰기 커맨드(WC1_1) 및 제1_2 쓰기 커맨드(WC1_2)로 분리되어 저장될 수 있다. 제1_1 쓰기 커맨드(WC1_1)에 대응되는 제1_1 메타 정보(MT1_1)는 논리 블록 어드레스 10 및 길이 2를 포함하고, 제1_2 메타 정보(MT1_2)는 논리 블록 어드레스 12 및 길이 2를 포함하며, 호스트 쓰기 버퍼와 대응되는 메타 버퍼 영역에 분리되어 저장될 수 있다.
제1 호스트 쓰기 버퍼에 저장된 제0 쓰기 커맨드(WC0) 및 제1_1 쓰기 커맨드(WC1_1)를 병합하여, 제1 병합 쓰기 커맨드(MWC1)를 생성할 수 있다. 제1 병합 쓰기 커맨드(MWC1)에 대응되는 메타 버퍼(530)에 저장된 내용은, 제1 병합 쓰기 커맨드(MWC1)의 추가 헤더 세그먼트를 통해 전달될 수 있다.
스토리지 디바이스(550)는 제1 병합 쓰기 커맨드(MWC1)가 수신되면 커맨드 파서에서 추가 헤더 세그먼트에 저장된 내용을 통해, 제1 병합 쓰기 커맨드(MWC1)가 복수개의 쓰기 커맨드가 병합된 커맨드임을 확인할 수 있다. 스토리지 디바이스(550)는 제1 병합 쓰기 커맨드(MWC1)에 포함된 쓰기 커맨드에 대응되는 데이터를 구분하여 비휘발성 메모리에 저장할 수 있다.
도 8은 본 발명의 실시예들에 따른 멀티 스트림을 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
스토리지 시스템은 동일한 파일이나 수명 패턴이 비슷한 속성의 데이터를 스트림으로 구분하는 멀티 스트림을 지원할 수 있다. 스토리지 시스템은 스트림 별로 호스트 쓰기 버퍼(620)를 분리하여 생성할 수 있다. 스토리지 디바이스(630)에서도 스트림 별로 데이터를 구분하여 저장할 수 있다.
도 9는 본 발명의 실시예들에 따른 멀티 스트림을 지원하지 않는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
파일 시스템(612)에서 파일1 및 파일2를 구분하지 않고 쓰기 커맨드를 생성하므로, 스토리지 디바이스(632)에서도 파일1 및 파일2는 구분 없이 저장된다.
도 10은 본 발명의 실시예들에 따른 멀티 스트림을 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
스토리지 디바이스(720)에서는 자원의 제약으로 스트림별로 호스트 쓰기 버퍼를 운영할 수 없으므로, 호스트에서 스트림별로 호스트 쓰기 버퍼(710)를 운영하고, 스토리지 디바이스(720)로 스트림 별 쓰기 데이터를 병합하여 전송할 수 있다. 스토리지 시스템에서 쓰기 커맨드 전송시 스트림 ID를 구분자로 활용하여 스트림별 쓰기 데이터를 관리할 수 있다.
예를 들어, 제1 쓰기 커맨드(WC1) 내지 제4 쓰기 커맨드(WC4)는 스트림 ID가 A 이고, 제5 쓰기 커맨드(WC5)는 스트림 ID가 할당되지 않고, 제6 쓰기 커맨드(WC6)는 스트림 ID가 N 일 수 있다.
제1 호스트 쓰기 버퍼(712)는 스트림 ID 가 A인 데이터를 저장하고, 제2 호스트 쓰기 버퍼(714)는 스트림 ID가 할당되지 않은 데이터를 저장하고, 제N 호스트 쓰기 버퍼(716)은 스트림 ID가 N인 데이터를 저장할 수 있다.
스토리지 시스템은 제1 쓰기 커맨드(WC1)가 스토리지 디바이스(720)로 빠른 전송 처리를 요구하는 경우, 호스트 쓰기 버퍼를 거치지 않고 바로 스토리지 디바이스(720)로 전달할 수 있다. 스토리지 시스템은 제2 쓰기 커맨드(WC2)에 대해 바이 패스 후, 호스트 쓰기 버퍼에 저장하여 병합하는 것도 가능하다.
도 11은 본 발명의 실시예들에 따른 존 기반 인터페이스를 지원하는 스토리지 시스템의 동작 방법을 설명하는 도면이다.
ZBC(Zoned Block Commands)를 포함하는 존 기반 인터페이스를 지원하는 존 스토리지 시스템에서 호스트 쓰기 버퍼(320)를 활용할 수 있다. 예를 들어, 존 스토리지 시스템은 존 스토리지 디바이스(330)에 부족한 버퍼 공간을 보완하기 위해, 호스트에서 호스트 쓰기 버퍼(320)를 생성할 수 있다.
존 스토리지 시스템에서는 스토리지(예를 들어, 비휘발성 메모리)를 일정한 크기의 존 단위로 논리적으로 나눠서 사용할 수 있다. 존 스토리지 시스템의 호스트 파일 시스템(310)에서 존 스토리지 디바이스(330)로 쓰기 커맨드가 제공되면, 존 별로 연속적인 논리 블록 어드레스의 데이터가 저장될 수 있다.
존 스토리지 시스템의 A존 호스트 파일 시스템(312)에서 연속적인 논리 블록 어드레스에 대한 쓰기 커맨드가 생성될 수 있다. 생성된 쓰기 커맨드는 블록 레이어의 스케쥴러에 의해 순서가 뒤바뀌어 전송될 수 있다. 이 때, 존 스토리지 시스템은 불연속 논리 블록 어드레스에 대한 메타 정보를 병합 쓰기 커맨드와 함께 A존 스토리지 디바이스(332)에 전송하고, A존 스토리지 디바이스(332)는 메타 정보를 확인하여 불연속적인 논리 블록 어드레스의 데이터를 연속적인 논리 블록 어드레스로 정렬하여 저장할 수 있다.
도 12는 본 발명의 실시예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다.
스토리지 시스템은 스토리지 디바이스 정보를 수신하여 호스트 메모리 버퍼를 생성할 수 있다(S510). 호스트 쓰기 버퍼의 크기는 스토리지 디바이스의 프로그램 방식 및 호스트로부터 받은 요청을 여러 칩에 나눠 동시에 처리하는 인터리빙 처리 단위 중 적어도 하나에 기초하여 할당될 수 있다. 호스트 쓰기 버퍼는 입출력 스케쥴링 방식에 기초하여 제1 호스트 쓰기 버퍼 및 제2 호스트 쓰기 버퍼 중 적어도 하나를 포함할 수 있다. 스토리지 시스템은 불연속 논리 블록 어드레스(LBA)의 쓰기 커맨드 병합을 위한 메타 메모리 버퍼를 더 포함하고, 상기 메타 메모리 버퍼는 상기 호스트 쓰기 버퍼에서 병합되는 쓰기 커맨드의 개수에 따라 동적으로 할당되며, 상기 쓰기 커맨드에 대응되는 데이터의 논리 블록 어드레스(LBA) 및 길이 정보 중 적어도 하나를 포함하는 메타 정보를 저장할 수 있다. 스토리지 시스템은 메타 정보를 포함하는 추가 헤더 세그먼트(extra header segment, EHS)를 생성하여 스토리지 디바이스에 전달할 수 있다.
스토리지 시스템은 복수의 쓰기 커맨드를 호스트 메모리 버퍼에 저장할 수 있다(S520). 스토리지 시스템은 쓰기 커맨드들을 병합하여 병합 쓰기 커맨드를 생성할 수 있다(S530). 스토리지 시스템은 병합 쓰기 커맨드를 스토리지 디바이스에 전송할 수 있다(S540).
도 13은 본 발명의 일 실시예에 따른 스토리지 디바이스가 적용된 시스템을 도시한 도면이다. 도 13의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 13의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다. 이하, 참조 번호에 붙은 첨자(예컨대, 1200a의 a, 1300a의 a)는 동일한 기능을 하는 다수의 회로를 구분하기 위한 것이다.
도 13을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 디바이스(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 디바이스(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator) 블록(1130)을 더 포함할 수 있다. 이와 같은 가속기 블록(1130)은 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 디바이스(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 디바이스(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성(non-volatile memory, NVM) 스토리지(1320a, 1320b)를 포함할 수 있다. 비휘발성 스토리지(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 디바이스(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 디바이스(1300a, 1300b)는 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 디바이스(1300a, 1300b)는 UFS(universal flash storage)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 14는 본 발명의 일 실시예에 따른 UFS 시스템(2000)에 대해 설명하기 위한 도면이다. UFS 시스템(2000)은 JEDEC(Joint Electron Device Engineering Council)에서 발표하는 UFS 표준(standard)을 따르는 시스템으로서, UFS 호스트(2100), UFS 장치(2200) 및 UFS 인터페이스(2300)를 포함할 수 있다. 전술한 도 13의 시스템(1000)에 대한 설명은, 도 14에 대한 이하의 설명과 상충되지 않는 범위 내에서 도 14의 UFS 시스템(2000)에도 적용될 수 있다.
도 14를 참조하면, UFS 호스트(2100)와 UFS 장치(2200)는 UFS 인터페이스(2300)를 통해 상호 연결될 수 있다. 도 13의 메인 프로세서(1100)가 애플리케이션 프로세서일 경우, UFS 호스트(2100)는 해당 애플리케이션 프로세서의 일부로서 구현될 수 있다. UFS 호스트 컨트롤러(2110) 및 호스트 메모리(2140)는 도 13의 메인 프로세서(1100)의 컨트롤러(1120) 및 메모리(1200a, 1200b)에 각각 대응될 수 있다. UFS 장치(2200)는 도 13의 스토리지 디바이스(1300a, 1300b)에 대응될 수 있으며, UFS 장치 컨트롤러(2210) 및 비휘발성 스토리지(2220)는 도 13의 스토리지 컨트롤러(1310a, 1310b) 및 비휘발성 스토리지(1320a, 1320b)에 각각 대응될 수 있다.
UFS 호스트(2100)는 UFS 호스트 컨트롤러(2110), 애플리케이션(2120), UFS 드라이버(2130), 호스트 메모리(2140) 및 UIC(UFS interconnect) 레이어(2150)를 포함할 수 있다. UFS 장치(2200)는 UFS 장치 컨트롤러(2210), 비휘발성 스토리지(2220), 스토리지 인터페이스(2230), 장치 메모리(2240), UIC 레이어(2250) 및 레귤레이터(2260)를 포함할 수 있다. 비휘발성 스토리지(2220)는 복수의 스토리지 유닛(2221)으로 구성될 수 있으며, 이와 같은 스토리지 유닛(2221)은 2D 구조 혹은 3D 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. UFS 장치 컨트롤러(2210)와 비휘발성 스토리지(2220)는 스토리지 인터페이스(2230)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(2230)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
애플리케이션(2120)은 UFS 장치(2200)의 기능을 이용하기 위해 UFS 장치(2200)와의 통신을 원하는 프로그램을 의미할 수 있다. 애플리케이션(2120)은 UFS 장치(2200)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(2130)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 독출(read) 요청, 저장(write) 요청 및/또는 소거(discard) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.
UFS 드라이버(2130)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 컨트롤러(2110)를 관리할 수 있다. UFS 드라이버(2130)는 애플리케이션(2120)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 명령으로 변환하고, 변환된 UFS 명령을 UFS 호스트 컨트롤러(2110)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 기본적으로 SCSI 표준에 의해 정의된 명령일 수 있지만, UFS 표준 전용 명령일 수도 있다.
UFS 호스트 컨트롤러(2110)는 UFS 드라이버(2130)에 의해 변환된 UFS 명령을 UIC 레이어(2150)와 UFS 인터페이스(2300)를 통해 UFS 장치(2200)의 UIC 레이어(2250)로 전송할 수 있다. 이 과정에서, UFS 호스트 컨트롤러(2110)의 UFS 호스트 레지스터(2111)는 명령 큐(command queue, CQ)로서의 역할을 수행할 수 있다.
UFS 호스트(2100) 측의 UIC 레이어(2150)는 MIPI M-PHY(2151)와 MIPI UniPro(2152)를 포함할 수 있으며, UFS 장치(2200) 측의 UIC 레이어(2250) 또한 MIPI M-PHY(2251)와 MIPI UniPro(2252)을 포함할 수 있다.
UFS 인터페이스(2300)는 기준 클락(REF_CLK)을 전송하는 라인, UFS 장치(2200)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_t와 DIN_c)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_t와 DOUT_c)을 전송하는 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(2100)로부터 UFS 장치(2200)로 제공되는 기준 클락(REF_CLK)의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(2100)는 동작 중에도, 즉 UFS 호스트(2100)와 UFS 장치(2200) 사이에서 데이터 송수신이 수행되는 중에도 기준 클락(REF_CLK)의 주파수 값을 변경할 수 있다. UFS 장치(2200)는 위상 동기 루프(phase-locked loop, PLL) 등을 이용하여, UFS 호스트(2100)로부터 제공받은 기준 클락(REF_CLK)으로부터 다양한 주파수의 클락을 생성할 수 있다. 또한, UFS 호스트(2100)는 기준 클락(REF_CLK)의 주파수 값을 통해 UFS 호스트(2100)와 UFS 장치(2200) 간의 데이터 레이트(data rate)의 값을 설정할 수도 있다. 즉, 상기 데이터 레이트의 값은 기준 클락(REF_CLK)의 주파수 값에 의존하여 결정될 수 있다.
UFS 인터페이스(2300)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 쌍으로 구현될 수 있다. 예컨대, UFS 인터페이스는 하나 이상의 수신 레인(receive lane)과 하나 이상의 송신 레인(transmit lane)을 포함할 수 있다. 도 14에서, 차동 입력 신호 쌍(DIN_T와 DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을, 차동 출력 신호 쌍(DOUT_T와 DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 각각 구성할 수 있다. 도 14에서는 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신(serial communication) 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(2100)와 UFS 장치(2200) 간의 풀 듀플렉스(full-duplex) 방식의 통신이 가능하다. 즉, UFS 장치(2200)는 수신 레인을 통해 UFS 호스트(2100)로부터 데이터를 수신받는 동안에도, 송신 레인을 통해 UFS 호스트(2100)로 데이터를 송신할 수 있다. 또한, UFS 호스트(2100)로부터 UFS 장치(2200)로의 명령과 같은 제어 데이터와, UFS 호스트(2100)가 UFS 장치(2200)의 비휘발성 스토리지(2220)에 저장하고자 하거나 비휘발성 스토리지(2220)로부터 독출하고자 하는 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(2100)와 UFS 장치(2200) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비될 필요가 없다.
UFS 장치(2200)의 UFS 장치 컨트롤러(2210)는 UFS 장치(2200)의 동작을 전반적으로 제어할 수 있다. UFS 장치 컨트롤러(2210)는 논리적인 데이터 저장 단위인 LU(logical unit)(2211)를 통해 비휘발성 스토리지(2220)를 관리할 수 있다. LU(2211)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 컨트롤러(2210)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(2100)로부터 전달된 논리적인 데이터 주소, 예컨대 LBA(logical block address)를 물리적인 데이터 주소로, 예컨대 PBA(physical block address)로 변환할 수 있다. UFS 시스템(2000)에서 사용자 데이터(user data)의 저장을 위한 논리 블록(logical block)은 소정 범위의 크기를 가질 수 있다. 예컨대, 논리 블록의 최소 크기는 4Kbyte로 설정될 수 있다.
UFS 호스트(2100)로부터의 명령이 UIC 레이어(2250)를 통해 UFS 장치(2200)로 입력되면, UFS 장치 컨트롤러(2210)는 입력된 명령에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(2100)로 전송할 수 있다.
일례로서, UFS 호스트(2100)가 UFS 장치(2200)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(2100)는 데이터 저장 명령을 UFS 장치(2200)로 전송할 수 있다. 사용자 데이터를 전송받을 준비가 되었다(ready-to-transfer)는 응답을 UFS 장치(2200)로부터 수신하면, UFS 호스트(2100)는 사용자 데이터를 UFS 장치(2200)로 전송할 수 있다. UFS 장치 컨트롤러(2210)는 전송받은 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(2240)에 임시로 저장된 사용자 데이터를 비휘발성 스토리지(2220)의 선택된 위치에 저장할 수 있다.
또 다른 예로서, UFS 호스트(2100)가 UFS 장치(2200)에 저장된 사용자 데이터를 독출하고자 할 경우, UFS 호스트(2100)는 데이터 독출 명령을 UFS 장치(2200)로 전송할 수 있다. 명령을 수신한 UFS 장치 컨트롤러(2210)는 상기 데이터 독출 명령에 기초하여 비휘발성 스토리지(2220)로부터 사용자 데이터를 독출하고, 독출된 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장할 수 있다. 이러한 독출 과정에서, UFS 장치 컨트롤러(2210)는 내장된 ECC(error correction code) 회로(미도시)를 이용하여, 독출된 사용자 데이터의 에러를 검출하고 정정할 수 있다. 그리고, UFS 장치 컨트롤러(2210)는 장치 메모리(2240) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(2100)로 전송할 수 있다. 아울러, UFS 장치 컨트롤러(2210)는 AES(advanced encryption standard) 회로(미도시)를 더 포함할 수 있으며, AES 회로는 UFS 장치 컨트롤러(2210)로 입력되는 데이터를 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 암호화(encryption)하거나 복호화(decryption)할 수 있다.
UFS 호스트(2100)는 명령 큐로 기능할 수 있는 UFS 호스트 레지스터(2111)에 UFS 장치(2200)로 송신될 명령들을 순서에 따라 저장하고, 상기 순서대로 UFS 장치(2200)에 명령을 송신할 수 있다. 이 때, UFS 호스트(2100)는 이전에 송신된 명령이 아직 UFS 장치(2200)에 의해 처리 중인 경우에도, 즉 이전에 송신된 명령이 UFS 장치(2200)에 의해 처리가 완료되었다는 통지를 받기 전에도 명령 큐에 대기 중인 다음 명령을 UFS 장치(2200)로 송신할 수 있으며, 이에 따라 UFS 장치(2200) 역시 이전에 송신된 명령을 처리하는 중에도 다음 명령을 UFS 호스트(2100)로부터 수신할 수 있다. 이와 같은 명령 큐에 저장될 수 있는 명령의 최대 개수(queue depth)는 예컨대 32개일 수 있다. 또한, 명령 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 명령 열의 시작과 끝을 각각 나타내는 원형 큐(circular queue) 타입으로 구현될 수 있다.
복수의 스토리지 유닛(2221) 각각은 메모리 셀 어레이와 상기 메모리 셀 어레이의 작동을 제어하는 제어 회로를 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함하며, 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)일 수도 있지만, MLC(multi level cell), TLC(triple level cell), QLC(quadruple level cell)와 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다.
UFS 장치(2200)에는 전원 전압으로서 VCC, VCCQ1, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(2200)를 위한 주 전원 전압으로서, 2.4~3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 컨트롤러(2210)를 위한 것이며. 1.14~1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(2251)와 같은 입출력 인터페이스를 위한 것이며, 1.7~1.95V의 값을 가질 수 있다. 상기 전원 전압들은 레귤레이터(2260)를 거쳐 UFS 장치(2200)의 각 구성 요소들을 위해 공급될 수 있다. 레귤레이터(2260)는 전술한 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.
도 15은 본 발명의 일 실시예에 따른 비휘발성 스토리지를 나타내는 블록도이다.
도 15을 참조하면, 비휘발성 스토리지(2220a)는 메모리 장치(2224) 및 메모리 컨트롤러(2222)를 포함할 수 있다. 비휘발성 스토리지(2220a)은 복수의 채널들(CH1~CHm)을 지원할 수 있고, 메모리 장치(2224)와 메모리 컨트롤러(2222)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 비휘발성 스토리지(2220a)은 SSD(Solid State Drive)와 같은 스토리지 디바이스로 구현될 수 있다.
메모리 장치(2224)는 복수의 불휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 불휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(2222)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 컨트롤러(2222)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(2224)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(2222)는 채널들(CH1~CHm)을 통해 메모리 장치(2224)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 메모리 장치(2224)로 전송하거나, 메모리 장치(2224)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
메모리 컨트롤러(2222)는 각각의 채널을 통해 해당 채널에 연결된 불휘발성 메모리 장치들 중 하나를 선택하고, 선택된 불휘발성 메모리 장치와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(2222)는 제1 채널(CH1)에 연결된 불휘발성 메모리 장치들(NVM11~NVM1n) 중 불휘발성 메모리 장치(NVM11)를 선택할 수 있다. 메모리 컨트롤러(2222)는 선택된 불휘발성 메모리 장치(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송하거나, 선택된 불휘발성 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
메모리 컨트롤러(2222)는 서로 다른 채널들을 통해 메모리 장치(2224)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(2222)는 제1 채널(CH1)을 통해 메모리 장치(2224)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(2224)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(2222)는 제1 채널(CH1)을 통해 메모리 장치(2224)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(2224)로부터 데이터(DATAb)를 수신할 수 있다.
메모리 컨트롤러(2222)는 메모리 장치(2224)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(2222)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 불휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(2222)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 불휘발성 메모리 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(2222)의 제어에 따라 동작할 수 있다. 예를 들어, 불휘발성 메모리 장치(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)에 따라 데이터(DATAa)를 프로그램할 수 있다. 예를 들어, 불휘발성 메모리 장치(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 독출하고, 독출된 데이터(DATAb)를 메모리 컨트롤러(2222)로 전송할 수 있다.
도 15에는 메모리 장치(2224)가 m개의 채널을 통해 메모리 컨트롤러(2222)와 통신하고, 메모리 장치(2224)가 각각의 채널에 대응하여 n개의 불휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 불휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다.
도 16은 본 발명의 일 실시예에 따른 비휘발성 스토리지를 나타내는 블록도이다. 도 16을 참조하면, 비휘발성 스토리지(2220b)은 메모리 장치(2226) 및 메모리 컨트롤러(2222)를 포함할 수 있다. 메모리 장치(2226)는 도 15의 복수의 채널들(CH1~CHm) 중 하나를 기반으로 메모리 컨트롤러(2222)와 통신하는 불휘발성 메모리 장치들(NVM11~NVMmn) 중 하나에 대응할 수 있다. 메모리 컨트롤러(2222)는 도 15의 메모리 컨트롤러(2222)에 대응할 수 있다.
메모리 장치(2226)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(2310), 제어 로직 회로(2320), 및 메모리 셀 어레이(2330)를 포함할 수 있다.
메모리 인터페이스 회로(2310)는 제1 핀(P11)을 통해 메모리 컨트롤러(2222)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(2310)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(2222)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(2310)는 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(2222)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(2310)는 제2 내지 제4 핀들(P12~P14)을 통해 메모리 컨트롤러(2222)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(2310)는 제7 핀(P17)을 통해 메모리 컨트롤러(2222)로부터 데이터 신호(DQ)를 수신하거나, 메모리 컨트롤러(2222)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(2310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(2310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(2310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(2310)는 제5 핀(P15)을 통해 메모리 컨트롤러(2222)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(2310)는 제6 핀(P16)을 통해 메모리 컨트롤러(2222)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 컨트롤러(2222)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(2226)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(2310)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(2310)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(2310)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(2310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 메모리 컨트롤러(2222)로 전송될 수 있다.
메모리 장치(2226)의 데이터(DATA) 입력 동작에서, 메모리 컨트롤러(2222)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(2310)는 메모리 컨트롤러(2222)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(2310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(2310)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(2310)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(2222)로 전송할 수 있다. 메모리 인터페이스 회로(2310)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(2226)의 상태 정보를 메모리 컨트롤러(2222)로 전송할 수 있다. 메모리 장치(2226)가 비지 상태인 경우(즉, 메모리 장치(2226) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(2310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(2222)로 전송할 수 있다. 메모리 장치(2226)가 레디 상태인 경우(즉, 메모리 장치(2226) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(2310)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(2222)로 전송할 수 있다. 예를 들어, 메모리 장치(2226)가 페이지 독출 명령에 응답하여 메모리 셀 어레이(2330)로부터 데이터(DATA)를 독출하는 동안, 메모리 인터페이스 회로(2310)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(2222)로 전송할 수 있다. 예를 들어, 메모리 장치(2226)가 프로그램 명령에 응답하여 메모리 셀 어레이(2330)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(2310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(2222)로 전송할 수 있다.
제어 로직 회로(2320)는 메모리 장치(2226)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(2320)는 메모리 인터페이스 회로(2310)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(2320)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(2226)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(2320)는 메모리 셀 어레이(2330)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(2330)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(2330)는 제어 로직 회로(2320)의 제어에 따라 메모리 인터페이스 회로(2310)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(2330)는 제어 로직 회로(2320)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(2310)로 출력할 수 있다.
메모리 셀 어레이(2330)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
메모리 컨트롤러(2222)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(2410)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 메모리 장치(2226)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(2410)는 제1 핀(P21)을 통해 메모리 장치(2226)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(2410)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(2226)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(2410)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 메모리 장치(2226)로 전송할 수 있다. 컨트롤러 인터페이스 회로(2410)는 제7 핀(P27)을 통해 메모리 장치(2226)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(2226)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(2410)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(2226)로 전송할 수 있다. 컨트롤러 인터페이스 회로(2410)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(2226)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(2226)로 전송할 수 있다.
컨트롤러 인터페이스 회로(2410)는 제5 핀(P25)을 통해 메모리 장치(2226)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(2410)는 제6 핀(P26)을 통해 메모리 장치(2226)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(2226)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(2226)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(2410)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 메모리 장치(2226)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(2410)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(2226)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(2410)는 메모리 장치(2226)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(2410)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
메모리 장치(2226)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(2410)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(2410)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(2410)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(2226)로 전송할 수 있다.
컨트롤러 인터페이스 회로(2410)는 제8 핀(P28)을 통해 메모리 장치(2226)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(2410)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(2226)의 상태 정보를 판별할 수 있다.
본 발명은 도면에 도시된 제한된 수의 실시예들과 관련하여 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변경들 및 변형들, 그리고 균등한 다른 실시예들이 가능하다는 점을 인식할 것이다. 따라서, 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 속하는 바와 같은 모든 그러한 변경들 및 변형들을 커버하는 것을 의도한다.

Claims (20)

  1. 스토리지 디바이스를 제어하고, 멀티 스트림을 지원하는 프로세서에 있어서,
    호스트 메모리;
    상기 스토리지 디바이스의 디바이스 정보에 기초하여 스트림별로 상기 호스트 메모리의 일부가 할당됨으로써 생성된 적어도 하나의 호스트 쓰기 버퍼;
    불연속 논리 블록 어드레스(LBA)의 쓰기 커맨드 병합을 위한 메타 메모리 버퍼; 및
    상기 호스트 쓰기 버퍼 및 상기 메타 메모리 버퍼 중 적어도 하나를 제어하는 제어 모듈을 포함하고,
    상기 메타 메모리 버퍼는,
    상기 호스트 쓰기 버퍼에서 병합되는 쓰기 커맨드의 개수에 따라 동적으로 할당되며, 상기 쓰기 커맨드에 대응되는 데이터의 논리 블록 어드레스 및 길이 정보 중 적어도 하나를 포함하는 메타 정보를 저장하고,
    상기 제어 모듈은,
    호스트에서 생성되며, 연속 논리 블록 어드레스 또는 불연속 논리 블록 어드레스를 갖는 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하고, 스트림 ID에 기초하여 상기 복수의 쓰기 커맨드들을 스트림별로 병합하여 병합 쓰기 커맨드를 생성하고,
    상기 불연속 논리 블록 어드레스를 갖는 상기 복수의 쓰기 커맨드들이 병합된 상기 병합 쓰기 커맨드는 상기 스토리지 디바이스에서 상기 메타 정보에 기초하여 연속적인 논리 블록 어드레스로 정렬되는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서,
    상기 제어 모듈은, 생성된 상기 병합 쓰기 커맨드를 상기 스토리지 디바이스에 전송하는 것을 특징으로 하는 프로세서.
  3. 제1항에 있어서,
    상기 호스트 쓰기 버퍼의 크기는 상기 스토리지 디바이스의 프로그램 방식 및 호스트로부터 받은 요청을 여러 칩에 나눠 동시에 처리하는 인터리빙 처리 단위 중 적어도 하나에 기초하여 할당되는 것을 특징으로 하는 프로세서.
  4. 제1항에 있어서,
    상기 호스트 쓰기 버퍼는 입출력 스케쥴링 방식에 기초하여 제1 호스트 쓰기 버퍼 및 제2 호스트 쓰기 버퍼 중 적어도 하나를 포함하는 것을 특징으로 하는 프로세서.
  5. 삭제
  6. 제1항에 있어서,
    상기 제어 모듈은,
    상기 메타 정보를 포함하는 추가 헤더 세그먼트(extra header segment, EHS)를 생성하는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서,
    상기 제어 모듈은,
    상기 메타 정보를 포함하는 쓰기 버퍼 커맨드를 생성하는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서,
    상기 제어 모듈은,
    상기 복수의 쓰기 커맨드들 중 제1 쓰기 커맨드가 상기 호스트 쓰기 버퍼에 저장되면 상기 제1 쓰기 커맨드에 대응되는 제1 커맨드 응답을 상기 호스트에 전송하고,
    상기 복수의 쓰기 커맨드들 중 제2 쓰기 커맨드가 상기 호스트 쓰기 버퍼에 저장되면 상기 제2 쓰기 커맨드에 대응되는 제2 커맨드 응답을 상기 호스트에 전송하는 것을 특징으로 하는 프로세서.
  9. 멀티 스트림을 지원하는 호스트; 및 스토리지 디바이스를 포함하는 스토리지 시스템으로서,
    상기 호스트는,
    호스트 메모리;
    상기 스토리지 디바이스의 디바이스 정보에 기초하여 스트림별로 상기 호스트 메모리의 일부가 할당됨으로써 생성된 적어도 하나의 호스트 쓰기 버퍼;
    불연속 논리 블록 어드레스(LBA)의 쓰기 커맨드 병합을 위한 메타 메모리 버퍼; 및
    상기 호스트 쓰기 버퍼 및 상기 메타 메모리 버퍼 중 적어도 하나를 제어하는 제어 모듈을 포함하고,
    상기 메타 메모리 버퍼는,
    상기 호스트 쓰기 버퍼에서 병합되는 쓰기 커맨드의 개수에 따라 동적으로 할당되며, 상기 쓰기 커맨드에 대응되는 데이터의 논리 블록 어드레스 및 길이 정보 중 적어도 하나를 포함하는 메타 정보를 저장하고,
    상기 제어 모듈은,
    상기 호스트에서 생성되며, 연속 논리 블록 어드레스 또는 불연속 논리 블록 어드레스를 갖는 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하고, 스트림ID에 기초하여 상기 복수의 쓰기 커맨드들을 스트림별로 병합하여 병합 쓰기 커맨드를 생성하고,
    상기 불연속 논리 블록 어드레스를 갖는 상기 복수의 쓰기 커맨드들이 병합된 상기 병합 쓰기 커맨드는 상기 스토리지 디바이스에서 상기 메타 정보에 기초하여 연속적인 논리 블록 어드레스로 정렬되는 것을 특징으로 하는 스토리지 시스템.
  10. 멀티 스트림을 통해 스토리지 디바이스를 제어하는 방법에 있어서,
    상기 스토리지 디바이스의 디바이스 정보에 기초하여 스트림별로 호스트 메모리의 일부가 할당됨으로써 적어도 하나의 호스트 쓰기 버퍼를 생성하는 단계;
    불연속 논리 블록 어드레스(LBA)의 쓰기 커맨드 병합을 위한 메타 메모리 버퍼를 생성하는 단계;
    호스트에서 생성되며, 연속 논리 블록 어드레스 또는 불연속 논리 블록 어드레스를 갖는 복수의 쓰기 커맨드들을 상기 호스트 쓰기 버퍼에 저장하는 단계; 및
    스트림 ID에 기초하여 상기 복수의 쓰기 커맨드들을 스트림별로 병합하여 병합 쓰기 커맨드를 생성하는 단계를 포함하고,
    상기 메타 메모리 버퍼는,
    상기 호스트 쓰기 버퍼에서 병합되는 쓰기 커맨드의 개수에 따라 동적으로 할당되며, 상기 쓰기 커맨드에 대응되는 데이터의 논리 블록 어드레스 및 길이 정보 중 적어도 하나를 포함하는 메타 정보를 저장하고,
    상기 불연속 논리 블록 어드레스를 갖는 상기 복수의 쓰기 커맨드들이 병합된 상기 병합 쓰기 커맨드는 상기 스토리지 디바이스에서 상기 메타 정보에 기초하여 연속적인 논리 블록 어드레스로 정렬되는 것을 특징으로 하는 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020210064637A 2021-01-13 2021-05-20 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템 KR102547950B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210017105.2A CN114764310A (zh) 2021-01-13 2022-01-07 使用主机存储缓冲器的处理器和包括该处理器的存储系统
EP22150727.0A EP4030274A1 (en) 2021-01-13 2022-01-10 Processor using host memory buffer and storage system including the processor
US17/647,745 US20220222011A1 (en) 2021-01-13 2022-01-12 Processor using host memory buffer and storage system including the processor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210004938 2021-01-13
KR1020210004938 2021-01-13

Publications (2)

Publication Number Publication Date
KR20220102540A KR20220102540A (ko) 2022-07-20
KR102547950B1 true KR102547950B1 (ko) 2023-06-27

Family

ID=82609047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210064637A KR102547950B1 (ko) 2021-01-13 2021-05-20 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템

Country Status (1)

Country Link
KR (1) KR102547950B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737617B (zh) * 2023-08-11 2023-12-29 上海芯高峰微电子有限公司 一种访问控制器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150220A1 (en) * 2016-11-25 2018-05-31 Samsung Electronics Co., Ltd. System and method for improving storage device i/o performance
KR20180134119A (ko) * 2017-06-08 2018-12-18 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 그 동작 방법
KR102395190B1 (ko) * 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
KR20190073824A (ko) * 2017-12-19 2019-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102651408B1 (ko) * 2018-02-20 2024-03-26 삼성전자주식회사 스토리지 디바이스 및 스토리지 디바이스의 동작 방법
KR20200005229A (ko) * 2018-07-06 2020-01-15 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
한국공개특허 제10-2018-0134119호(2018.12.18.) 1부.*
한국공개특허 제10-2019-0013106호(2019.02.11.) 1부.*
한국공개특허 제10-2019-0073824호(2019.06.27.) 1부.*
한국공개특허 제10-2019-0099994호(2019.08.28.) 1부.*
한국공개특허 제10-2020-0005229호(2020.01.15.) 1부.*

Also Published As

Publication number Publication date
KR20220102540A (ko) 2022-07-20

Similar Documents

Publication Publication Date Title
EP4030274A1 (en) Processor using host memory buffer and storage system including the processor
KR102547950B1 (ko) 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템
US20230385209A1 (en) Storage device adjusting data rate and storage system including the same
CN113284528A (zh) 存储设备和包括存储设备的存储系统
KR20220087231A (ko) 저전력 소모를 위하여 클럭 스위칭하는 장치, 메모리 콘트롤러, 메모리 장치, 메모리 시스템 및 방법
US20230084601A1 (en) Memory controller, memory system and operating method of the memory system
KR20230071730A (ko) 데이터 프로세싱 장치 및 그것의 동작 방법
US20220253239A1 (en) Operation method of universal flash storage host and operation method of universal flash storage system
US11809737B2 (en) Storage device for performing high-speed link startup and storage system including the same
KR20230009196A (ko) 스토리지 장치, 및 이의 동작 방법
US20230153237A1 (en) Method and device for storing data
US20230266896A1 (en) Memory system for tailoring data, host system for controlling the memory system, and operation method of the memory system
US20230393749A1 (en) Method and device of storage data
EP3982244B1 (en) Storage controller, storage system and operating methods thereof
EP3958134B1 (en) Storage device for high speed link startup and storage system including the same
US11461176B2 (en) Memory device and memory system
EP4220374A1 (en) Storage device and operating method of storage device
US20230244402A1 (en) Storage device and operating method of storage device
KR20210156187A (ko) 고속 링크 스타트업을 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
KR20230124457A (ko) 데이터를 재단하는 메모리 시스템, 메모리 시스템을 제어하는 호스트 시스템 및 메모리 시스템의 동작방법
KR20210106319A (ko) 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN116627316A (zh) 修整数据的存储器系统及其操作方法和控制其的主机系统
CN116755877A (zh) 带宽控制方法和存储装置

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
E801 Decision on dismissal of amendment
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)