KR20180018886A - 스토리지 시스템의 동작 방법 및 호스트의 동작 방법 - Google Patents

스토리지 시스템의 동작 방법 및 호스트의 동작 방법 Download PDF

Info

Publication number
KR20180018886A
KR20180018886A KR1020160101442A KR20160101442A KR20180018886A KR 20180018886 A KR20180018886 A KR 20180018886A KR 1020160101442 A KR1020160101442 A KR 1020160101442A KR 20160101442 A KR20160101442 A KR 20160101442A KR 20180018886 A KR20180018886 A KR 20180018886A
Authority
KR
South Korea
Prior art keywords
host
storage system
command
data
stream
Prior art date
Application number
KR1020160101442A
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 KR1020160101442A priority Critical patent/KR20180018886A/ko
Priority to US15/498,585 priority patent/US10635317B2/en
Publication of KR20180018886A publication Critical patent/KR20180018886A/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/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
    • 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/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake

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)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

본 발명에 따른 스토리지 시스템은 호스트의 시스템 메모리를 공유한다. 스토리지 시스템의 동작 방법은 호스트로부터 공유 메모리에 대한 정보를 포함하는 커맨드를 수신하는 단계, 호스트로부터 타임 아웃 값이 없는 스트림 커맨드를 수신하는 단계, 및 수신된 스트림 커맨드에 응답하여, 스트림 커맨드와 연관된 제1 패킷을 호스트로 전송하는 단계를 포함한다. 제1 패킷은 공유 메모리를 액세스하기 위한 정보를 포함한다.

Description

스토리지 시스템의 동작 방법 및 호스트의 동작 방법{OPERATION METHOD OF STORAGE SYSTEM AND OPERATION METHOD OF HOST}
본 발명은 저장 장치에 관한 것으로, 좀 더 상세하게는 스토리지 시스템의 동작 방법 및 호스트의 동작 방법에 관한 것이다.
반도체 메모리 장치는 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) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리 장치는 대용량 저장 매체로써 널리 사용된다. 플래시 메모리 장치의 속도 제약으로 인하여, 플래시 메모리 장치를 사용하는 대용량 저장 매체는 DRAM, SRAM 등과 같은 데이터 버퍼를 사용한다. 일반적으로, DRAM, SRAM 등과 같은 데이터 버퍼는 큰 면적을 차지하기 때문에, 데이터 버퍼의 크기를 줄이기 위한 개발이 지속되고 있다. 일 예로써, 호스트의 시스템 메모리의 일부를 대용량 저장 매체와 공유함으로써, 대용량 저장 매체의 데이터 버퍼 크기를 감소시키는 인터페이스들이 개발되고 있다. 그러나, 종래의 메모리를 공유하기 위한 방식들은 별도의 인터페이스의 정의 또는 별도의 하드웨어로 인한 오버헤드가 발생하는 문제점이 있다.
본 발명은 위에서 설명한 기술적 과제를 해결하기 위한 것으로, 본 발명은 향상된 성능 및 감소된 비용을 갖는 스토리지 시스템의 동작 방법 및 호스트의 동작 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템은 호스트의 시스템 메모리를 공유한다. 스토리지 시스템의 동작 방법은 호스트로부터 공유 메모리에 대한 정보를 포함하는 커맨드를 수신하는 단계, 호스트로부터 타임 아웃 값이 없는 스트림 커맨드를 수신하는 단계, 및 수신된 스트림 커맨드에 응답하여, 스트림 커맨드와 연관된 제1 패킷을 호스트로 전송하는 단계를 포함한다. 제1 패킷은 공유 메모리를 액세스하기 위한 정보를 포함한다.
본 발명의 실시 예에 따른 시스템 메모리를 포함하는 호스트의 동작 방법은 시스템 메모리 중 일부 영역을 스토리지 시스템과 공유를 위한 공유 메모리로써 할당하는 단계, 공유 메모리에 대한 정보를 스토리지 시스템으로 전송하는 단계, 타임 아웃이 없는 스트림 커맨드를 스토리지 시스템으로 전송하는 단계, 스트림 커맨드와 연관된 제1 패킷을 스토리지 시스템으로부터 수신하는 단계, 및 제1 패킷에 응답하여 공유 메모리에 대한 액세스 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트와 통신하도록 구성된 스토리지 시스템의 동작 방법은 호스트로부터 제1 쓰기 커맨드를 수신하는 단계, 제1 쓰기 커맨드에 응답하여 제1 재기입 식별자를 포함하는 제1 응답을 호스트로 전송하는 단계, 호스트로부터 제2 쓰기 커맨드를 수신하는 단계, 제2 쓰기 커맨드에 응답하여, 제1 재기입 식별자를 포함하는 제2 응답을 호스트로 전송하는 단계, 호스트로부터 재기입 커맨드를 수신하는 단계, 수신된 재기입 커맨드에 응답하여, 제1 쓰기 커맨드에 대한 제1 쓰기 데이터를 수신하는 단계, 및 재기입 커맨드에 대한 제3 응답을 호스트로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 시스템은 별도의 하드웨어 추가 없이 호스트 상의 공유 메모리를 액세스하거나 또는 공유 메모리를 제어하기 위한 제어 정보를 호스트로 제공할 수 있다. 따라서, 본 발명의 실시 예에 따르면, 향상된 성능 및 감소된 비용을 갖는 스토리지 시스템의 동작 방법 및 호스트의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 3은 도 1의 호스트 및 스토리지 시스템 사이의 기본적인 데이터 입출력 동작을 보여주는 순서도이다.
도 4는 본 발명의 실시 예에 따른 호스트 및 스토리지 시스템의 동작을 보여주는 순서도이다.
도 5는 도 4의 동작에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역에 데이터를 기입하는 동작을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역에 저장된 데이터를 읽는 동작을 보여주는 순서도이다.
도 8 내지 도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역을 제어하기 위한 동작을 보여주는 순서도들이다.
도 11은 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 보여주는 순서도이다.
도 12 및 도 13은 본 발명에 따른 호스트 및 스토리지 시스템의 하이버네이션 모드로 진입하는 동작을 보여주는 순서도들이다.
도 14는 본 발명의 다른 실시 예에 따른 호스트 및 스토리지 시스템의 쓰기 동작을 보여주는 순서도이다.
도 15 및 도 16은 도 14의 동작을 설명하기 위한 예시적인 도면들이다.
도 17은 본 발명에 따른 사용자 시스템을 보여주는 블록도이다.
도 18은 본 발명이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다. 도 1을 참조하면, 사용자 시스템(100)은 호스트(110) 및 스토리지 시스템(120)을 포함할 수 있다. 예시적으로, 사용자 시스템(100)은 컴퓨터, 노트북, 서버, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치와 같은 컴퓨팅 시스템일 수 있다.
호스트(110)는 미리 정해진 인터페이스를 기반으로 스토리지 시스템(120)에 데이터를 기입하거나 또는 스토리지 시스템(120)에 기입된 데이터를 읽을 수 있다. 예시적으로, 미리 정해진 인터페이스는 DDR(Double Data Rate) 인터페이스, USB (Universal Serial Bus) 인터페이스, MMC (multimedia card), eMMC(embedded MMC) 인터페이스, PCI (peripheral component interconnection) 인터페이스, PCI-E (PCI-express) 인터페이스, ATA (Advanced Technology Attachment) 인터페이스, Serial-ATA 인터페이스, Parallel-ATA 인터페이스, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics) 인터페이스, 파이어와이어(Firewire) 인터페이스, UFS(Universal Flash Storage) 인터페이스, NVMe (Nonvolatile Memory express) 인터페이스 중 적어도 하나를 포함할 수 있다.
이하에서, 간결한 설명을 위하여, 미리 정해진 인터페이스는 UFS 인터페이스인 것으로 가정한다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(110) 및 스토리지 시스템(120) 사이의 인터페이스는 다양하게 변형될 수 있다.
스토리지 시스템(120)은 메모리 컨트롤러(121) 및 불휘발성 메모리 장치(122)를 포함할 수 있다. 예시적으로, 스토리지 시스템(120)은 사용자 시스템(100)의 대용량 저장 매체로써 사용될 수 있다. 스토리지 시스템(120)은 UFS 카드, 임베디드 UFS, 멀티 미디어 메모리 카드(MMC), 임베디드 MMC, SSD 등과 같은 대용량 저장 매체로써 제공될 수 있다.
메모리 컨트롤러(121)는 데이터 버퍼(121a)를 포함할 수 있다. 메모리 컨트롤러(121)는 호스트(110)의 제어에 따라 불휘발성 메모리 장치(122)에 데이터를 기입하거나 또는 불휘발성 메모리 장치(122)에 기입된 데이터를 독출할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 호스트(110)로부터 수신된 데이터를 데이터 버퍼(121a)에 임시 저장하고, 데이터 버퍼(121a)에 저장된 데이터가 불휘발성 메모리 장치(122)에 기입되도록 불휘발성 메모리 장치(122)를 제어할 수 있다. 또는 메모리 컨트롤러(121)는 불휘발성 메모리 장치(122)로부터 읽은 데이터를 데이터 버퍼(121a)에 임시 저장하고, 데이터 버퍼(121a)에 저장된 데이터를 호스트(110)로 제공할 수 있다.
불휘발성 메모리 장치(122)는 메모리 컨트롤러(121)의 제어에 따라 데이터를 기입하거나 또는 기입된 데이터를 출력할 수 있다. 불휘발성 메모리 장치(122)는 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), TRAM(Thyristor RAM)와 같은 불휘발성 메모리를 포함할 수 있다. 예시적으로, 불휘발성 메모리 장치(122)는 복수의 메모리 다이들, 복수의 메모리 칩들, 또는 복수의 메모리 패키지들을 포함할 수 있다.
예시적으로, 호스트(110)는 램(111)을 포함할 수 있다. 램(111)은 호스트(110) 또는 사용자 시스템(100)의 메인 메모리, 버퍼 메모리, 캐시 메모리 등으로써 사용될 수 있다. 램(111)은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 랜덤 액세스 메모리를 포함할 수 있다.
램(111)은 사용자 영역(UA) 및 공유 영역(SA)을 포함할 수 있다. 사용자 영역(UA)은 호스트(110) 상에서 구동되는 운영 체제 또는 애플리케이션에 의해 처리되는 데이터가 임시 저장되는 저장 공간을 가리킬 수 있다. 즉, 램(111)의 사용자 영역(UA)은 사용자 시스템(100)의 일반적인 시스템 메모리 공간으로 활용될 수 있다.
공유 영역(SA)은 스토리지 시스템(120)에 의해 액세스 가능한 저장 공간을 가리킬 수 있다. 예를 들어, 스토리지 시스템(120)은 램(111)의 공유 영역(SA)에 데이터를 저장하거나 또는 공유 영역(SA)에 저장된 데이터를 읽을 수 있다.
이 때, 상술된 공유 영역(SA)으로의 액세스 동작은 추가적인 하드웨어 회로 또는 미리 정해진 인터페이스의 변화 없이 수행될 수 있다. 일 예로써, 호스트(110)는 타임 아웃이 없는 특정 커맨드 또는 타임 아웃 값이 무한대인 커맨드를 스토리지 시스템(120)으로 제공할 수 있다. 스토리지 시스템(120)은 특정 커맨드에 대한 응답(RES), 전송 준비 정보(RTT; Ready to Transfer), 데이터-인(DIN), 데이터-아웃(DOUT) 등과 같은 신호를 통해 공유 영역(SA)을 액세스할 수 있다.
예시적으로, 상술된 신호들은 호스트(110) 및 스토리지 시스템(120) 사이의 미리 정해진 인터페이스에 의해 정의된 신호 형태를 가질 수 있다. 즉, 스토리지 시스템(120)은 추가적인 하드웨어 회로 또는 미리 정해진 인터페이스의 변화 없이 공유 영역(SA)을 액세스할 수 있다. 상술된 스토리지 시스템(120)의 공유 영역(SA)으로의 액세스 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
예시적으로, 상술된 바와 같이, 메모리 컨트롤러(121)는 데이터 버퍼(121a)를 사용하여 호스트(110) 및 불휘발성 메모리 장치(122)와의 데이터 입출력을 관리할 수 있다. 이 때, 스토리지 시스템(120)의 호스트(110)의 공유 영역(SA)에 데이터를 저장하거나 또는 공유 영역(SA)에 저장된 데이터를 읽음으로써, 데이터 버퍼(121a)의 크기 증가 없이 스토리지 시스템(120)의 성능이 향상될 수 있다.
도 2는 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 컨트롤러(121)는 데이터 버퍼(121a), 프로세서(121b), ROM(122c), 호스트 인터페이스(122d), 및 플래시 인터페이스(122e)를 포함할 수 있다.
프로세서(121b)는 메모리 컨트롤러(121)의 제반 동작을 제어할 수 있다. 데이터 버퍼(121a)는 메모리 컨트롤러(121)의 버퍼 메모리, 캐시 메모리, 워킹 메모리 등으로써 사용될 수 있다. 예시적으로, 데이터 버퍼(121a)는 SRAM일 수 있다. ROM(122c)은 메모리 컨트롤러(121)가 동작하는데 요구되는 다양한 정보를 펌웨어 형식으로 저장할 수 있다. 예시적으로, 프로세서(121b)는 데이터 버퍼(121a) 또는 ROM(122c)에 저장된 정보 또는 프로그램 코드를 실행하도록 구성될 수 있다.
메모리 컨트롤러(121)는 호스트 인터페이스(121d)를 통해 호스트(110)와 통신할 수 있다. 예시적으로, 간결한 설명을 위하여, 호스트 인터페이스(121d)는 UFS(Universal Flash Storage) 인터페이스를 포함하는 것으로 가정한다. 예를 들어, 호스트 인터페이스(121d)는 호스트(110)와의 통신을 위한 UFS 인터커넥트 계층(UIC; UFS InterConnect Layer), UFS 전송 프로토콜 계층(UTP; UFS Transport Protocol Layer) 등과 같은 계층들을 포함할 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트 인터페이스(121d)는 앞서 언급된 다양한 통신 인터페이스들 중 하나를 기반으로 구현될 수 있다.
메모리 컨트롤러(121)는 플래시 인터페이스(121e)를 통해 불휘발성 메모리 장치(122)와 통신할 수 있다. 예시적으로, 플래시 인터페이스(121e)는 낸드 인터페이스를 포함할 수 있다.
도 3은 도 1의 호스트 및 스토리지 시스템 사이의 기본적인 데이터 입출력 동작을 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 호스트(110) 및 스토리지 시스템(120)은 UFS 인터페이스를 기반으로 서로 통신하는 것으로 가정한다. 또한, 이하의 도면들을 참조하여, 호스트(110) 및 스토리지 시스템(120)을 기준으로 동작 방법들이 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 호스트(110)의 동작은 호스트(110)에 포함된 다양한 구성 요소들 중 일부(예를 들어, 장치 드라이버)에 의해 수행될 수 있고, 스토리지 시스템(120)의 동작은 스토리지 시스템(120)에 포함된 다양한 구성 요소들 중 일부(예를 들어, 펌웨어 또는 펌웨어를 구동하는 메모리 컨트롤러(121)의 프로세서(121b))에 의해 수행될 수 있다.
또한, 이하에서 호스트(110) 및 스토리지 시스템(120) 사이에서 전송되는 신호들 또는 정보는 패킷(Packet) 형태로 제공되는 것으로 가정한다. 패킷(Packet)은 호스트(110) 및 스토리지 시스템(120) 사이에서 송수신되는 정보의 형태를 가리키며, 패킷(Packet)의 종류에 따라 다양한 정보를 포함할 수 있다. 예시적으로, 패킷(Packet)은 UFS 인터페이스에 의해 정의되는 UFS 프로토콜 정보 유닛(UPIU; UFS Protocol Information Unit)의 패킷 형태를 포함할 수 있다.
도 1 내지 도 3을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 S10 단계의 동작들을 통해 일반 쓰기 동작(normal write operation)을 수행할 수 있다. 일반 쓰기 동작은 호스트(110)가 스토리지 시스템(120)에 데이터를 저장하기 위한 동작을 가리킬 수 있다.
예를 들어, S10 단계는 S11 단계 내지 S15 단계의 동작들을 포함할 수 있다. S11 단계에서, 호스트(110)는 쓰기 커맨드(Write CMD)를 스토리지 시스템(120)으로 전송한다.
S12 단계에서, 스토리지 시스템(120)은 쓰기 커맨드에 응답하여, 전송 준비 정보(RTT; Ready-to-Transfer)을 호스트(110)로 전송할 수 있다. 예를 들어, 스토리지 시스템(120)은 쓰기 커맨드에 응답하여, 데이터 버퍼(121a)로 수신 가능한 데이터 크기를 결정할 수 있다. 스토리지 시스템(120)은 결정된 데이터 크기에 대한 정보(즉, 버퍼 오프셋 및 버퍼 길이)를 포함하는 전송 준비 정보(RTT)를 호스트(110)로 전송할 수 있다.
S13 단계에서, 호스트(110)는 전송 준비 정보(RTT)에 응답하여, 데이터-아웃(S13)을 스토리지 시스템(120)으로 전송할 수 있다. 예를 들어, 호스트(110)는 전송 준비 정보(RTT)에 포함된 데이터 크기에 대한 정보를 기반으로, 쓰기 데이터 전부 또는 일부를 데이터-아웃(DOUT)에 포함시켜, 스토리지 시스템(120)으로 전송할 수 있다.
비록 도면에 도시되지는 않았으나, 스토리지 시스템(120)은 수신된 데이터-아웃(DOUT)에 포함된 쓰기 데이터를 데이터 버퍼(121a)에 저장하고, 데이터 버퍼(121a)에 저장된 쓰기 데이터를 불휘발성 메모리 장치(122)에 프로그램할 수 있다.
S14 단계에서, 스토리지 시스템(120)은 모든 쓰기 데이터가 수신되었는지 판별할 수 있다. 모든 쓰기 데이터가 수신되지 않은 경우, (즉, 수신되지 않은 쓰기 데이터가 남은 경우), 호스트(110) 및 스토리지 시스템(120)은 S12 단계 및 S13 단계의 동작을 반복 수행할 수 있다.
모든 쓰기 데이터가 수신된 경우, (즉, 수신되지 않은 쓰기 데이터 남지 않은 경우), S15 단계에서, 스토리지 시스템(120)은 쓰기 커맨드에 대한 응답(RES)을 호스트(110)로 전송한다. 호스트(110)는 수신된 응답(RES)을 통해 쓰기 커맨드에 대한 동작이 완료되었음을 인지할 수 있다.
계속해서 도 1 내지 도 3을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 S20 단계의 동작들을 통해 일반 읽기 동작(normal write operation)을 수행할 수 있다. 일반 읽기 동작은 호스트(110)가 스토리지 시스템(120)에 저장된 데이터를 읽기 위한 동작을 가리킬 수 있다.
예를 들어, S20 단계는 S21 단계 내지 S24 단계의 동작들을 포함할 수 있다. S21 단계에서, 호스트(110)는 읽기 커맨드(Read CMD)를 스토리지 시스템(120)으로 전송할 수 있다.
S22 단계에서, 스토리지 시스템(120)은 읽기 커맨드에 응답하여, 읽기 커맨드에 대응하는 데이터 또는 데이터 중 일부를 포함하는 데이터-인(DIN)을 호스트(110)로 제공할 수 있다. 예를 들어, 읽기 커맨드는 읽기 데이터의 논리적 어드레스를 포함할 수 있다. 스토리지 시스템(120)은 논리적 어드레스와 대응되는 데이터를 불휘발성 메모리 장치(122)로부터 읽고, 읽은 데이터를 포함하는 데이터-인(DIN)을 호스트(110)로 제공할 수 있다.
S23 단계에서, 스토리지 시스템(120)은 모든 읽기 데이터가 전송되었는지 판별할 수 있다. 모든 읽기 데이터가 전송되지 않은 경우, (즉, 전송되지 않은 읽기 데이터가 남은 경우), 스토리지 시스템(120)은 S22 단계의 동작을 반복 수행하여, 남은 읽기 데이터를 호스트(110)로 전송할 수 있다.
모든 읽기 데이터가 전송된 경우, (즉, 전송되지 않은 읽기 데이터가 남지 않은 경우), S24 단계에서, 스토리지 시스템(120)은 읽기 커맨드에 대한 응답(RES)을 호스트(110)로 전송할 수 있다. 호스트(110)는 수신된 응답을 통해 읽기 커맨드 에 대한 동작이 완료되었음을 인지할 수 있다.
상술된 바와 같이, 호스트(110) 및 스토리지 시스템(120)은 미리 정해진 인터페이스(예를 들어, UFS 인터페이스)에 따라, 미리 정해진 신호 또는 정보를 주고 받음으로써, 일반 쓰기 동작 및 일반 읽기 동작을 수행할 수 있다.
도 4는 본 발명의 실시 예에 따른 호스트 및 스토리지 시스템의 동작을 보여주는 순서도이다. 예시적으로, 이하의 도면들을 참조하여, 스토리지 시스템(120)의 공유 영역(SA)으로의 액세스 동작이 설명된다.
이하에서, 호스트(110) 및 스토리지 시스템(120) 사이의 송수신되는 신호들은 도 3을 참조하여 설명된 바와 유사한 의미를 갖는다. 이하에서, 스트림(stream)의 용어는 스토리지 시스템(120)이 공유 영역(SA)을 액세스하기 위하여 사용되는 신호/데이터 전송 경로 또는 수단을 의미하는 것으로 가정한다.
이하에서, 스트림이 오픈된 것은 스토리지 시스템(120)이 공유 영역(SA)을 액세스하기 위한 신호/데이터를 전송할 수 있는 상태인 것을 의미하는 것으로 가정한다. 다시 말해서, 스토리지 시스템(120)은 읽기 스트림이 오픈되어 있는 상태에서 전송 준비 정보(RTT) 및 데이터-아웃(DOUT)을 사용하여 공유 영역(SA)에 저장된 데이터를 읽을 수 있고, 쓰기 스트림이 오픈되어 있는 상태에서 데이터-인(DIN)을 사용하여 공유 영역(SA)에 데이터를 저장할 수 있다.
이하에서, "쓰기 스트림(Write Stream)"은 스토리지 시스템(120)이 공유 영역(SA)에 데이터를 기입 또는 저장할 수 있는 정보 전송 경로 또는 수단을 가리키고, "읽기 스트림(Read Stream)"은 스토리지 시스템(120)이 공유 영역(SA)에 저장된 데이터를 읽을 수 있는 정보 전송 경로 또는 수단을 가리키고, "제어 스트림(Control Stream)"은 스토리지 시스템(120)이 공유 영역(SA)을 제어하기 위한 제어 정보를 전송할 수 있는 정보 전송 경로 또는 수단을 가리키는 것으로 가정한다.
이하에서, "신호들 또는 정보의 구조가 유사하다는 것"은 정보의 형태가 특정 인터페이스에 의해 미리 정해진 영역들 또는 미리 정해진 필드들의 비트 값들이 서로 동일하되, 예비 영역 또는 예비 필드의 비트 값들이 서로 다를 수 있음을 의미한다. 예시적으로, 예비 영역들 또는 예비 필드들의 비트 값이 변경되더라도, 미리 정해진 인터페이스 상에서 들이 정상적으로 송수신될 수 있다.
예시적으로, S110 단계 내지 S150 단계의 동작들은 사용자 시스템(100)의 초기화 동작(이하에서, S100 단계라 칭함.)동안 수행될 수 있다. 예를 들어, 사용자 시스템(100)이 부팅되는 동안, 호스트(110) 및 스토리지 시스템(120)은 통신을 위한 초기화 동작을 수행할 수 있다. 이 때, 호스트(110)가 S110 단계 내지 S150 단계의 동작을 수행함으로써, 스토리지 시스템(120)이 공유 영역(SA)을 액세스하기 위한 읽기 스트림, 쓰기 스트림, 및 제어 스트림이 오픈될 수 있다.
도 1 및 도 4를 참조하면, S110 단계에서, 호스트(110)는 공유 영역(SA)을 할당할 수 있다. 예를 들어, 호스트(110)는 램(111)의 저장 영역들 중 일부 영역을 공유 영역(SA)으로 할당할 수 있다. 공유 영역(SA)은 유저 영역(UA)과 논리적 영역으로 구분될 수 있다.
S120 단계에서, 호스트(110)는 할당된 공유 영역(SA)에 대한 정보를 포함하는 커맨드(CMD)를 스토리지 시스템(120)으로 전송할 수 있다. 예를 들어, 할당된 공유 영역(SA)에 대한 정보는 공유 영역(SA)의 버퍼 크기, 버퍼 주소, 버퍼 오프셋 등의 정보를 포함할 수 있다. 공유 영역(SA)에 대한 정보는 커맨드(CMD)의 예비 영역(reserved area) 또는 예비 필드(reserved field)에 포함할 될 수 있다.
예시적으로, 스토리지 시스템(120)은 S120 단계에서 수신된 커맨드를 기반으로 공유 영역(SA)의 크기 및 버퍼 주소 등을 인식할 수 있다.
S130 단계에서, 호스트(110)는 쓰기 스트림 커맨드(WS CDM; Write Stream CMD)를 스토리지 시스템(120)으로 전송할 수 있다. 쓰기 스트림 커맨드(WS CDM)는 스토리지 시스템(120)이 공유 영역(SA)에 데이터를 기입할 수 있는 쓰기 스트림을 오픈하기 위한 커맨드를 가리킬 수 있다.
예시적으로, 쓰기 스트림 커맨드(WS CMD)은 도 3을 참조하여 설명된 읽기 커맨드와 유사한 구조를 가질 수 있으며, 일부 예비 영역 또는 일부 예비 필드의 비트 값들이 다를 수 있다. 즉, 도 3의 읽기 커맨드의 일부 예비 영역 또는 일부 예비 필드의 비트 값을 특정 값으로 설정함으로써, 쓰기 스트림 커맨드(WS CMD)가 구성될 수 있다. 예시적으로, 스토리지 시스템(120)은 쓰기 스트림 커맨드(WS CMD)에 대한 데이터-인(DIN)을 호스트(110)로 제공함으로써, 공유 영역(SA)에 데이터를 기입할 수 있다.
S140 단계에서, 호스트(110)는 읽기 스트림 커맨드(RS CMD; Read Stream CMD)를 스토리지 시스템(120)으로 전송할 수 있다. 읽기 스트림 커맨드(RS CMD)는 스토리지 시스템(120)이 공유 영역(SA)에 저장된 데이터를 읽을 수 있는 읽기 스트림을 오픈하기 위한 커맨드를 가리킬 수 있다. 예시적으로, 읽기 스트림 커맨드(RS CMD)는 도 3을 참조하여 설명된 쓰기 커맨드와 유사한 구조를 가질 수 있으며, 일부 예비 영역 또는 일부 예비 필드의 비트 값들이 다를 수 있다. 즉, 도 3의 쓰기 커맨드의 일부 예비 영역 또는 일부 예비 필드의 비트 값을 특정 값으로 설정함으로써, 읽기 스트림 커맨드(RS CMD)가 구성될 수 있다. 예시적으로, 스토리지 시스템(120)은 읽기 스트림 커맨드(RS CMD)에 대한 전송 준비 정보(RTT)를 호스트(110)로 제공하고, 호스트(110)로부터 데이터-아웃(DOUT)을 수신함으로써, 공유 영역(SA)에 저장된 데이터를 읽을 수 있다.
S150 단계에서, 호스트(110)는 제어 스트림 커맨드(CS CMD; Control Stream CMD)를 스토리지 시스템(120)으로 전송할 수 있다. 제어 스트림 커맨드(CS CMD)는 스토리지 시스템(120)이 공유 영역(SA)에 대한 별도의 명령(이하에서, "제어 정보(CI; Control Information)"라 칭함.)을 전송할 수 있는 제어 스트림을 오픈하기 위한 커맨드를 가리킬 수 있다. 제어 정보(CI)는 유저 영역(UA)으로부터 공유 영역(SA)으로의 데이터 이동, 복사, 스왑 또는 공유 영역(SA)의 데이터 삭제 등과 같은 동작을 위한 명령어를 포함할 수 있다.
상술된 바와 같이, 스트림 커맨드들은 도 3을 참조하여 설명된 일반 쓰기 커맨드 및 일반 읽기 커맨드의 예비 영역 또는 예비 필드의 비트 값을 특정 값으로 설정함으로써 구현될 수 있다. 따라서, 별도의 하드웨어 회로 또는 종래의 인터페이스의 변화 없이 스트림 오픈 커맨드를 구현하는 것이 가능하다.
예시적으로, S130 단계 내지 S150 단계의 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 및 제어 스트림 커맨드(CS CMD) 각각은 타임 아웃이 없거나 또는 타임아웃 값이 무한대인 커맨드일 수 있다. 예를 들어, 일반적인 쓰기 커맨드, 읽기 커맨드, 또는 별도의 커맨드는 미리 정해진 타임 아웃 값을 가질 것이다. 이 경우, 쓰기 커맨드, 읽기 커맨드, 또는 별도의 커맨드가 스토리지 시스템(120)으로 전송되고 미리 정해진 시간이 경과할 때까지 별도의 응답이 수신되지 않는 경우, 사용자 시스템(100)이 오류를 일으키거나 또는 처리되지 않은 커맨트에 대한 동작을 중단시킬 수 있다.
그러나, 본 발명에 따른 스트림 커맨드들은 타임 아웃을 갖지 않기 때문에, 호스트(110)가 스토리지 시스템(120)으로부터 스트림 커맨드들에 대한 응답을 수신하지 않더라도, 사용자 시스템(100)은 정상적으로 동작할 수 있고, 스트림 커맨드들에 대한 동작들을 중단시키지 않을 것이다. 다시 말해서, 호스트(110)가 스토리지 시스템(120)으로부터 별도의 응답을 수신하지 않더라도, 스트림 커맨드들은 호스트(110) 및 스토리지 시스템(120)의 커맨드 큐 상에서 유지될 것이다.
예시적으로, S120 단계의 커맨드는 생략될 수 있다. 예를 들어, S120 단계의 커맨드가 생략되는 경우, 호스트(110)는 공유 영역(SA)에 대한 정보를 쓰기 스트림 커맨드(WS CMD) 또는 읽기 스트림 커맨드(RS CMD) 에 포함시켜, 스토리지 시스템(120)으로 전송할 수 있다.
예시적으로, 제어 스트림 커맨드(CS CMD)를 전송하는 S150 단계는 생략될 수 있다. 예를 들어, S150 단계가 생략되는 경우, 스토리지 시스템(120)은 쓰기 스트림 커맨드(WS CMD) 또는 읽기 스트림 커맨드(RS CMD)와 연관된 신호들(예를 들어, 데이터-아웃, 데이터-인, 응답 등)을 활용하여, 제어 정보(CI)를 호스트(110)로 제공할 수 있다. 제어 정보(CI)를 전송하는 방법은 도 8 내지 도 10을 참조하여 더욱 상세하게 설명된다.
도 5는 도 4의 동작에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 4 및 도 5를 참조하면, 사용자 시스템(100)은 호스트(110) 및 스토리지 시스템(120)을 포함할 수 있다. 호스트(110)는 램(111)을 포함하고, 램(111)은 공유 영역(SA) 및 유저 영역(UA)을 포함할 수 있다. 스토리지 시스템(120)은 메모리 컨트롤러(121) 및 불휘발성 메모리 장치(122)를 포함하고, 메모리 컨트롤러(121)는 데이터 버퍼(121a)를 포함할 수 있다. 사용자 시스템(100)의 구성 요소들 중 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 4에 도시된 S100 단계의 초기화 동작 이후에, 호스트(110) 및 스토리지 시스템(120) 각각은 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 및 제어 스트림 커맨드(CS CMD)를 커맨드 큐들(CQ)로써 관리할 수 있다. 예를 들어, 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 및 제어 스트림 커맨드(CS CMD) 각각에 제1 내지 제3 태그들(TAG1~TAG3)이 부여되고, 각 스트림 커맨드는 호스트(110) 및 메모리 컨트롤러(121) 각각의 커맨드 큐(CQ)에서 관리될 수 있다.
스토리지 시스템(120)은 공유 영역(SA)을 액세스하기 위하여, 커맨드 큐(CQ)에서 관리되는 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD)에 대한 데이터-인, 전송 준비 정보, 응답 등을 호스트(110)로 전송함으로써, 공유 영역(SA)에 접근할 수 있다.
예시적으로, 앞서 설명된 바와 같이, 제어 스트림 커맨드(CS CMD)는 생략될 수 있다. 또한, 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 및 제어 스트림 커맨드(CS CMD) 각각은 타임 아웃이 없기 때문에, 스토리지 시스템(120)으로부터의 별도의 응답이 없는 한, 커맨드 큐(CQ) 상에서 유지될 것이다. 또한, 호스트(110)가 스토리지 시스템(120)으로부터 응답을 수신하더라도, 수신된 응답에 대응되는 스트림을 다시 오픈하기 위하여 스트림 커맨드가 스토리지 시스템(120)으로 재전송될 수 있다.
예시적으로, 사용자 시스템(100)의 초기화 동작시 스트림 커맨드를 통해 쓰기 스트림, 읽기 스트림, 및 공유 영역 커맨드 스트림을 오픈하는 동작이, 도 4 및 도 5를 참조하여, 설명되었다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 사용자 시스템(100)의 초기화 동작시, 명시적인 스트림 커맨드들 없이 호스트(110) 및 스토리지 시스템(120)의 커맨드 큐(CQ)에 스트림 커맨드들이 로드되도록 미리 설정될 수 있다. 즉, 사용자 시스템(100)의 초기화 동작시, 호스트(110)가 명시적인 스트림 커맨드들을 스토리지 시스템(120)으로 제공하지 않으나, 호스트(110) 및 스토리지 시스템(120)의 커맨드 큐(CQ)에 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD)가 미리 로드될 수 있다. 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD) 각각은 미리 정해진 커맨드 태그를 기반으로 관리될 수 있다.
도 6은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역에 데이터를 기입하는 동작을 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 스트림 커맨드와 연관된 데이터-아웃, 데이터-인, 전송 준비 정보, 및 응답의 신호들은 스트림 데이터-아웃(S-DOUT), 스트림 데이터-인(S-DIN), 스트림 전송 준비 정보(S-RTT), 및 스트림-응답(S-RES)라 칭한다. 스트림 데이터-아웃(S-DOUT), 스트림 데이터-인(S-DIN), 스트림 전송 준비 정보(S-RTT), 및 스트림-응답(S-RES) 각각은 일반 쓰기 동작 및 일반 읽기 동작에서 사용되는 데이터-아웃(DOUT), 데이터-인(DIN), 전송 준비 정보(RTT), 및 응답(RES)과 유사한 구조를 가질 수 있다.
도 1, 도 4, 및 도 6을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 S100 단계의 동작을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함할 수 있다. S110 단계 내지 S150 단계의 동작들은 도 4 및 도 5를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
예시적으로, 스토리지 시스템(120)은 호스트(110)의 램(111)의 공유 영역(SA)에 데이터를 기입할 수 있다. 예를 들어, S131 단계에서, 스토리지 시스템(120)은 스트림-데이터-인(S-DIN)을 호스트(110)로 제공할 수 있다. 예를 들어, 스트림-데이터-인(S-DIN)은 공유 영역(SA)에 기입될 데이터 및 데이터가 저장된 버퍼의 주소, 버퍼 오프셋, 또는 버퍼 길이 등의 정보를 포함할 수 있다.
예시적으로, 스트림-데이터-인(S-DIN)은 쓰기 스트림 커맨드(WS CMD)와 연관된 신호 또는 정보일 수 있다. 예를 들어, 도 4를 참조하여 설명된 바와 같이, 쓰기 스트림 커맨드(WS CMD)는 일반 읽기 커맨드와 유사한 구조를 가질 수 있다. 즉, 스토리지 시스템(120)은 쓰기 스트림 커맨드(WS CMD)에 응답하여 스트림-데이터-인(S-DIN)을 호스트(110)로 전송할 수 있을 것이다. 예시적으로, 스트림 데이터-인(S-DIN)은 데이터가 기입될 공유 영역(SA)의 버퍼 주소, 버퍼 오프셋, 버퍼 길이에 대한 정보를 포함할 수 있다.
S132 단계에서, 호스트(110)는 수신된 스트림 데이터-인(S-DIN)에 포함된 데이터를 공유 영역(SA)에 기입할 수 있다.
도 7은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역에 저장된 데이터를 읽는 동작을 보여주는 순서도이다. 도 1, 도 4, 및 도 7을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 S100 단계의 동작을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함할 수 있다. S110 단계 내지 S150 단계의 동작들은 도 4 및 도 5를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
예시적으로, 스토리지 시스템(120)은 호스트(110)의 램(111)의 공유 영역(SA)에 저장된 데이터를 읽을 수 있다. 예를 들어, S141 단계에서, 스토리지 시스템(120)은 스트림 전송 준비 정보(S-RTT)를 호스트(110)로 제공할 수 있다. 스트림 전송 준비 정보(S-RTT)는 읽고자 하는 데이터, 즉, 공유 영역(SA)에 저장된 데이터의 버퍼 주소, 버퍼 오프셋, 버퍼 길이 등에 대한 정보를 포함할 수 있다.
예시적으로, 앞서 설명된 바와 같이, 읽기 스트림 커맨드(RS CMD)는 도 3의 일반 쓰기 커맨드와 유사할 수 있다. 즉, 스토리지 시스템(120)은 읽기 스트림 커맨드(RS CMD)에 응답하여 스트림 전송 준비 정보(S-RTT)를 호스트(110)로 전송할 수 있다. 마찬가지로, 스트림 전송 준비 정보(S-RTT)는 도 3을 참조하여 설명된 전송 준비 정보(RTT)와 유사한 구조를 가질 수 있다.
S142 단계에서, 호스트(110)는 수신된 스트림 전송 준비 정보(S-RTT)에 응답하여, 스트림 데이터-아웃 (S-DOUT)을 스토리지 시스템(120)으로 전송할 수 있다. 예시적으로, 스트림 데이터-아웃(S-DOUT)은 스토리지 시스템(120)에 의해 요청된 읽기 데이터를 포함할 수 있다.
도 6 및 도 7을 참조하여 설명된 바와 같이, 쓰기 스트림 커맨드(WS CMD)는 일반 읽기 커맨드와 유사한 구조를 갖고, 스토리지 시스템(120)은 쓰기 스트림 커맨드(WS CMD)에 응답하여, 스트림-데이터-인(S-DIN)을 호스트(110)로 전송함으로써, 공유 영역(SA)에 데이터를 기입할 수 있다.
또한 읽기 스트림 커맨드(RS CMD)는 일반 쓰기 커맨드와 유사한 구조를 갖고, 스토리지 시스템(120)은 읽기 스트림 커맨드(RS CMD)에 응답하여 스트림 전송 준비 정보(S-RTT)를 호스트(110)로 전송함으로써, 호스트(110)로부터 읽기 데이터가 포함된 스트림-데이터-아웃(S-DOUT)을 수신할 수 있다. 따라서, 별도의 하드웨어 또는 인터페이스의 변화 없이 스토리지 시스템(120)이 공유 영역(SA)을 액세스할 수 있다.
도 8 내지 도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 공유 영역을 제어하기 위한 동작을 보여주는 순서도들이다. 이하에서, 간결한 설명을 위하여, 제어 스트림 커맨드(CS CMD)에 응답하여, 공유 영역(SA)을 제어하기 위한 제어 정보(CI)가 호스트(110)로 전송되는 것으로 가정한다.
그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 4를 참조하여 설명된 바와 같이, 제어 스트림 커맨드(CS CMD)는 생략될 수 있다. 이 경우, 상술된 제어 정보(CI)가 포함된 스트림-응답(S-RES), 스트림-데이터-인(S-DIN), 또는 스트림 전송 준비 정보(S-RTT)는 쓰기 스트림 커맨드(WS CMD) 또는 읽기 스트림 커맨드(SR CMD)에 응답하여 호스트(110)로 제공될 수 있다.
먼저, 도 1, 도 3, 도 4, 및 도 8을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 초기화 동작(S100 단계)을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함하고, 이는 도 4 및 도 5를 참조하여 설명되었으므로, 상세한 설명은 생략된다.
스토리지 시스템(120)은 공유 영역(SA)을 액세스하는 것 이외의 다른 동작을 수행하기 위한 제어 정보(CI)를 호스트(110)로 전송할 수 있다. 예시적으로, 다른 동작은 유저 영역(UA)으로부터 공유 영역(SA)으로의 데이터 복사, 스왑, 이동, 또는 공유 영역(SA)의 데이터 삭제, 복사 등과 같은 동작들을 포함할 수 있다.
S161 단계에서, 스토리지 시스템(120)은 제어 정보(CI)를 포함하는 스트림 응답(S-RES)을 호스트(110)로 전송할 수 있다.
예시적으로, 스트림 응답(S-RES)은 도 3을 참조하여 설명된 응답(RES)과 유사한 구조를 가질 수 있다. 예를 들어, 도 3을 참조하여 설명된 응답들의 예비 영역에 제어 정보(CI)를 추가함으로써, 제어 정보(CI)를 포함하는 스트림-응답(S-RES)이 구성될 수 있다.
S162 단계에서, 호스트(110)는 수신된 스트림-응답(S-RES)에 응답하여, 제어 정보(CI)에 대응하는 동작을 수행할 수 있다. S163 단계에서, 호스트(110)는 수행 동작의 결과 정보를 포함하는 제어 스트림 커맨드(CS CMD)을 스토리지 시스템(120)으로 전송할 수 있다.
예를 들어, S161 단계에서, 스토리지 시스템(120)이 스트림 응답(S-RES)을 호스트(110)로 제공하는 것에 의해 제어 스트림은 클로즈(close) 상태가 될 것이다. 호스트(110)는 제어 정보(CI)에 대응하는 동작을 완료한 이후에, 제어 스트림 커맨드(CS CMD)를 스토리지 시스템(120)으로 전송할 수 있다. 이에 따라, 제어 스트림은 다시 오픈 상태가 될 수 있다. 또한, 동작 결과 또는 응답의 정보가 제어 스트림 커맨드(CS CMD)의 예비 영역 또는 예비 필드에 추가됨으로써, 스토리지 시스템(120)은 동작 결과를 인지할 수 있다.
상술된 바와 같이, 호스트(110) 및 스토리지 시스템(120)이 스트림 응답(S-RES) 및 제어 스트림 커맨드(CS CMD)를 주고 받음으로써, 스토리지 시스템(120)이 공유 영역(SA)을 제어할 수 있다. 이 때, 호스트(110) 및 스토리지 시스템(120) 사이에서 송수신되는 신호들 또는 정보는 일반 쓰기 또는 읽기 동작에서 사용되는 응답(RES) 및 커맨드(CMD)와 유사한 구조를 갖기 때문에, 별도의 하드웨어 회로 또는 인터페이스의 변화 없이, 스토리지 시스템(120)이 공유 영역(SA)을 제어할 수 있다.
다음으로, 도 1, 도 3, 도 4, 및 도 9를 참조하면, 호스트(110) 및 스토리지 시스템(120)은 초기화 동작(S100 단계)을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함하고, 이는 도 4 및 도 5를 참조하여 설명되었으므로, 상세한 설명은 생략된다.
S171 단계에서, 스토리지 시스템(120)은 제어 정보(CI)를 포함하는 스트림 전송 준비 정보(S-RTT)를 호스트(110)로 전송할 수 있다.
예시적으로, 스트림 전송 준비 정보(S-RTT)는 도 3을 참조하여 설명된 전송 준비 정보(RTT)와 유사한 구조를 가질 수 있다. 예를 들어, 도 3을 참조하여 설명된 전송 준비 정보(RTT)의 예비 영역에 제어 정보(CI)를 추가함으로써, 제어 정보(CI)를 포함하는 스트림 전송 준비 정보(S-RTT)가 구성될 수 있다.
S172 단계에서, 호스트(110)는 수신된 스트림 전송 준비 정보(S-RTT)에 응답하여, 제어 정보(CI)에 대응하는 동작을 수행할 수 있다. S172 단계의 동작은 도 8의 S162 단계의 동작과 유사하므로 이에 대한 상세한 설명은 생략된다.
S173 단계에서, 호스트(110)는 제어 정보(CI)에 대응하는 동작의 결과 또는 응답의 정보를 포함하는 스트림 데이터-아웃(S-DOUT)을 스토리지 시스템(120)으로 전송할 수 있다.
상술된 바와 같이, 호스트(110) 및 스토리지 시스템(120)이 스트림 전송 준비 정보(S-RTT)및 스트림 데이터-아웃(S-DOUT)을 주고 받음으로써, 스토리지 시스템(120)이 공유 영역(SA)을 제어할 수 있다. 이 때, 호스트(110) 및 스토리지 시스템(120) 사이에서 송수신되는 신호들 또는 정보는 일반 동작에서 사용되는 전송 준비 정보(RTT) 및 데이터-아웃(DOUT)과 유사한 구조를 갖기 때문에, 별도의 하드웨어 회로 또는 인터페이스의 변화 없이, 스토리지 시스템(120)이 공유 영역(SA)을 제어할 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, S171 단계 및 S173 단계의 동작들은 도 7의 S141 단계 및 S142 단계의 동작들로 변형될 수 있다. 예를 들어, 제어 스트림 커맨드(CS CMD)가 생략된 경우, 스토리지 시스템(120)은 도 7의 S141 단계에서, 스트림 전송 준비 정보(S-RTT)에 제어 정보(CI)를 추가하여 호스트(110)로 제공할 수 있다. 이 때, 스트림 전송 준비 정보(S-RTT)는 도 7을 참조하여 설명된 바와 같이 읽기 스트림 커맨드(RS CMD)에 응답하여 제공되는 정보일 것이다. 즉, 제어 스트림 커맨드(CS CMD)가 생략된 경우, 스토리지 시스템(120)은 읽기 스트림 커맨드(RS CMD)에 응답하여, 제어 정보(CI)를 포함한 스트림 전송 준비 정보(S-RTT)를 호스트(110)로 제공함으로써, 공유 영역(SA)을 제어할 수 있다.
다음으로, 도 1, 도 3, 도 4, 및 도 10을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 초기화 동작(S100 단계)을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함하고, 이는 도 4 및 도 5를 참조하여 설명되었으므로, 상세한 설명은 생략된다.
S181 단계에서, 스토리지 시스템(120)은 제어 정보(CI)를 포함하는 스트림-데이터-인(S-DIN)을 호스트(110)로 전송할 수 있다. 예시적으로, 스트림 데이터-인 (S-DIN)은 도 3을 참조하여 설명된 데이터-인(DIN)과 유사한 구조를 가질 수 있다. 예를 들어, 도 3을 참조하여 설명된 데이터-인(DIN)의 데이터 영역에 제어 정보(CI)에 대한 정보를 추가함으로써, 제어 정보(CI)를 포함하는 스트림 데이터-인(S-DIN)이 구성될 수 있다.
S182 단계에서, 호스트(110)는 제어 정보(CI)에 대응하는 동작을 수행할 수 있다. S182 단계의 동작은 도 8의 S162 단계 및 도 9의 S172 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
예시적으로, 비록 도면에 도시되지는 않았으나, S181 단계의 스트림 데이터-인(S-DIN)에 포함된 제어 정보(CI)는 호스트(110)의 공유 영역(SA)에 저장될 수 있다. 호스트(110)는 공유 영역(SA)에 저장된 제어 정보(CI)를 분석하여 제어 정보(CI)에 대응되는 동작을 수행할 수 있다.
예를 들어, 스토리지 시스템(120)은 스트림 데이터-인(S-DIN)과 대응되는 커맨드(즉, 제어 스트림 커맨드(CS CMD))의 커맨드 ID를 변경할 수 있다. 변경된 커맨드 ID는 스트림 데이터-인(S-DIN)에 포함되어 호스트(110)로 제공될 수 있다. 스트림 데이터-인(S-DIN)에 포함된 제어 정보(CI) 및 변경된 커맨드 ID는 공유 영역(SA)에 저장될 수 있다. 호스트(110)(특히, 장치 드라이버(미도시))는 공유 영역(SA)을 폴링함으로써 커맨드 ID가 변경된 것을 감지할 수 있다. 커맨드 ID가 변경된 경우, 호스트(110)는 공유 영역(SA)에 저장된 제어 정보(CI)를 분석하여 대응하는 동작을 수행할 수 있다.
예시적으로, 호스트(110)는 도 10을 참조하여 설명된 제어 정보(CI)에 따른 동작에 대하여 별도의 응답을 제공하지 않을 수 있다.
도 8 내지 도 10을 참조하여 설명된 바와 같이, 타임 아웃이 없는 스트림 커맨드들(WS CMD, RS CMD, CS CMD)와 연관된 스트림 전송 준비 정보(S-RTT), 스트림 데이터-인(S-DIN), 스트림 응답(S-RES) 등을 사용하여, 스토리지 시스템(120)은 공유 영역(SA)을 제어하기 위한 제어 정보(CI)를 호스트(110)로 제공할 수 있다. 이 때, 호스트(110) 및 스토리지 시스템(120) 사이에서 송수신되는 신호들 또는 정보는 일반 쓰기 또는 읽기 동작에서 사용되는 신호들 또는 정보와 유사한 구조를 갖기 때문에, 별도의 하드웨어 회로 또는 인터페이스의 변화 없이 스토리지 시스템(120)이 공유 영역(SA)을 제어하는 것이 가능하다.
도 11은 본 발명의 실시 예에 따른 스토리지 시스템의 동작을 보여주는 순서도이다. 도 1 및 도 11을 참조하면, S210 단계에서, 스토리지 시스템(120)은 스트림 커맨드를 수신할 수 있다. 예를 들어, 도 4 및 도 5를 참조하여 설명된 바와 같이, 스토리지 시스템(210)은 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD)를 수신할 수 있다. 예시적으로, 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD)는 도 3을 참조하여 설명된 쓰기 커맨드 또는 읽기 커맨드와 유사한 구조를 가질 수 있으며, 타임아웃이 없거나 또는 타임 아웃 값이 무한대인 커맨드일 수 있다.
S220 단계에서, 스토리지 시스템(120)은 스트림 커맨드와 연관된 신호들 또는 정보를 사용하여 공유 영역(SA)을 액세스할 수 있다. 예를 들어, 도 6 내지 도 10을 참조하여 설명된 바와 같이, 스토리지 시스템(120)은 스트림 커맨드와 연관된 스트림 데이터-인(S-DIN), 스트림-데이터-아웃(S-DOUT), 스트림 전송 준비 정보(S-RTT), 스트림-응답(S-RES) 등과 같은 신호들 또는 정보를 사용하여 공유 영역(SA)에 데이터를 저장하거나, 공유 영역(SA)에 저장된 데이터를 읽거나, 또는 공유 영역(SA)에 대한 제어 정보(CI)를 호스트(110)로 제공할 수 있다.
상술된 바와 같이 스토리지 시스템(120)은 호스트(110)로부터 스트림 커맨드을 수신하고, 수신된 스트림 커맨드와 연관된 신호들 또는 정보를 호스트(110)와 주고 받음으로써, 호스트(110) 상의 공유 영역(SA)을 액세스하고 제어할 수 있다. 이 때, 송수신되는 신호들 또는 정보는 호스트(110) 및 스토리지 시스템(120) 사이의 미리 정해진 인터페이스에 따라 수행되는 일반적인 동작에서 사용되는 신호들 또는 정보와 유사한 구조를 가질 것이다. 즉, 별도의 하드웨어 회로 또는 인터페이스의 변화 없이 스토리지 시스템(120)이 호스트(110) 상의 공유 영역(SA)을 액세스하고 제어할 수 있기 때문에, 향상된 성능 및 감소된 비용을 갖는 스토리지 시스템 및 사용자 시스템이 제공된다.
도 12 및 도 13은 본 발명에 따른 호스트 및 스토리지 시스템의 하이버네이션 모드로 진입하는 동작을 보여주는 순서도들이다.
도 1 및 도 12를 참조하면, 호스트(110) 및 스토리지 시스템(120)은 초기화 동작(S100 단계)을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함하고, 이는 도 4 및 도 5를 참조하여 설명되었으므로, 상세한 설명은 생략된다.
예시적으로, 특정 조건(예를 들어, 유휴 시간이 일정 시간 지속되는 조건)에서, 스토리지 시스템(120)은 호스트(110)의 제어에 따라 하이버네이션 모드로 진입할 수 있다. 스토리지 시스템(120)이 하이버네이션 모드로 진입하기 위해서는, 호스트(110) 및 스토리지 시스템(120) 사이에서 처리 중인 커맨드가 모두 완료된 상태여야 할 것이다. 그러나, 앞서 설명된 바와 같이, 스트림 오픈을 위한 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 또는 제어 스트림 커맨드(CS CMD)는 타임 아웃이 없는 커맨드들이므로, 호스트(110) 및 스토리지 시스템(120)의 커맨드 큐(CQ) 상에서 계류 중일 것이다. 즉, 스토리지 시스템(120)이 하이버네이션 모드로 진입하기 위해서는, 스트림 오픈을 위한 쓰기 스트림 커맨드, 읽기 스트림 커맨드, 또는 제어 스트림 커맨드에 대한 종료 또는 완료 처리가 요구될 것이다.
이에 따라, 스토리지 시스템(120)이 하이버네이션 모드로 진입하기 위하여, 호스트(110) 및 스토리지 시스템(120)은 S211 단계 내지 S216 단계의 동작들을 수행할 수 있다.
S211 단계에서, 호스트(110)는 하이버네이션 커맨드를 스토리지 시스템(120)으로 전송할 수 있다. 하이버네이션 커맨드는 호스트(110)가 스토리지 시스템(120)에게 하이버네이션 모드로 진입할 것임을 알리는 정보를 포함하는 커맨드일 수 있다.
S212 단계에서, 스토리지 시스템(120)은 하이버네이션 커맨드에 응답하여, 쓰기 스트림 커맨드(WS CMD)에 대한 응답을 호스트(110)로 전송할 수 있다. 이는 S130 단계의 동작에 의해 오픈된 쓰기 스트림을 클로즈함을 의미한다.
S213 단계에서, 스토리지 시스템(120)은 하이버네이션 커맨드에 응답하여, 읽기 스트림 커맨드(RS CMD)에 대한 응답을 호스트(110)로 전송할 수 있다. 이는 S140 단계의 동작에 의해 오픈된 읽기 스트림을 클로즈함을 의미한다.
S214 단계에서, 스토리지 시스템(120)은 하이버네이션 커맨드에 응답하여, 제어 스트림 커맨드(CS CMD)에 대한 응답을 호스트(110)로 전송할 수 있다. 이는 S150 단계의 동작에 의해 오픈된 공유 영역 커맨드 스트림을 클로즈함을 의미한다.
예시적으로, S212 단계 내지 S214 단계의 동작들은 병렬적으로 수행되거나 또는 상술된 동작 순서에 국한되지 않는다.
S215 단계에서, 호스트(110)는 S212 단계 내지 S215 단계의 응답들을 모두 수신한 이후에, 스토리지 시스템(120)으로 하이버네이션 진입 커맨드를 전송할 수 있다. 예시적으로, 하이버네이션 진입 커맨드는 호스트(110)의 물리 계층(예를 들어, UFS 인터커넥트 계층)에 의해 제공되는 신호일 수 있다.
S216 단계에서, 스토리지 시스템(120)은 하이버네이션 진입 커맨드에 응답하여, 하이버네이션 모드로 진입할 수 있다. 예시적으로, 하이버네이션 모드에서, 스토리지 시스템(120)은 일부 구성 요소(예를 들어, 일부 하위 물리 계층) 이외의 다른 구성 요소들은 동작하지 않을 수 있다.
상술된 바와 같이, 스토리지 시스템(120)이 하이버네이션 모드로 진입할 경우, 호스트(110)는 오픈된 스트림들을 클로즈하기 위한 명시적인 커맨드를 스토리지 시스템(120)으로 제공하고, 이에 응답하여 스토리지 시스템(120)은 오픈된 스트림들을 클로즈하기 위한 응답들을 호스트(110)로 제공함으로써, 스토리지 시스템(120)이 하이버네이션 모드로 정상적으로 진입할 수 있다.
다음으로, 도 1 및 도 13을 참조하면, 호스트(110) 및 스토리지 시스템(120)은 초기화 동작(S100 단계)을 수행할 수 있다. S100 단계의 동작은 S110 단계 내지 S150 단계의 동작들을 포함하고, 이는 도 4 및 도 5를 참조하여 설명되었으므로, 상세한 설명은 생략된다.
앞서 설명된 바와 같이, 스토리지 시스템(120)이 하이버네이션 모드로 진입하기 위하여, 호스트(110) 및 스토리지 시스템(120)은 S221 단계 내지 S215 단계의 동작들을 수행할 수 있다.
S221 단계에서, 호스트(110)는 스트림 중단 커맨드를 스토리지 시스템(120)으로 전송할 수 있다. 스트림 중단 커맨드는 스토리지 시스템(120)의 커맨드 큐(CQ)에 계류 중인 쓰기 스트림 커맨드(WS CMD), 읽기 스트림 커맨드(RS CMD), 및 제어 스트림 커맨드(CS CMD)를 중단시키기 위한 커맨드일 수 있다.
S222 단계에서, 스토리지 시스템(120)은 스트림 중단 커맨드에 응답하여, 커맨드 큐(CQ) 상에 계류 중인 스트림 커맨드들을 중단할 수 있다.
S223 단계에서, 스토리지 시스템(120)은 스트림 중단 커맨드에 대한 응답을 호스트(110)로 전송할 수 있다.
이 후, 호스트(110)는 S224 단계 및 S225 단계의 동작들을 수행할 수 있다. S224 단계 및 S225 단계의 동작들은 도 12의 S215 단계 및 S216 단계의 동작들과 유사하므로 이에 대한 설명은 생략된다.
상술된 바와 같이, 호스트(110)는 커맨드 큐(CQ) 상에 계류 중인 스트림 커맨드들을 중단하기 위한 스트림 중단 커맨드를 스토리지 시스템(120)으로 제공하고, 스토리지 시스템(120)은 스트림 중단 커맨드에 응답하여, 커맨드 큐(CQ) 상에 계류 중인 스트림 커맨드들을 중단시킬 수 있다. 이 후, 스토리지 시스템(120)은 스트림 중단 커맨드에 대한 응답을 호스트(110)로 제공함으로써, 오픈된 스트림들이 모두 클로즈되었음을 알릴 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, 하이버네이션 모드가 종료되는 경우, 호스트(110)는 하이네이션 종료 커맨드를 스토리지 시스템(120)으로 제공할 수 있다. 이 후, 호스트(110)는 S100 단계의 동작을 수행함으로써, 클로즈된 스트림들을 다시 오픈할 수 있다.
상술된 바와 같이, 호스트(110) 및 스토리지 시스템(120)은 특정 커맨드 및 응답을 사용하여 오픈된 스트림들을 클로즈함으로써, 하이버네이션 모드로 정상적으로 진입할 수 있다. 따라서, 별도의 하드웨어 회로 또는 인터페이스의 변화 없이 본 발명에 따른 호스트(110) 및 스토리지 시스템(120)이 구현될 수 있기 때문에, 향상된 성능 및 감소된 비용을 갖는 스토리지 시스템이 제공된다.
도 14는 본 발명의 다른 실시 예에 따른 호스트 및 스토리지 시스템의 쓰기 동작을 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 1회의 쓰기 동작 동안, 하나의 쓰기 커맨드에 대한 쓰기 데이터가 스토리지 시스템(120)으로 모두 전송되지 않은 것으로 가정한다. 다시 말해서, 1회의 쓰기 동작이 수행된 이후에, 전송되지 않은 쓰기 데이터가 존재하는 것으로 가정한다. 이 때, 1회의 쓰기 동작은 하나의 쓰기 커맨드가 수신된 시점부터 하나의 쓰기 커맨드에 대한 응답이 전송되는 시점까지의 동작을 가리키는 것으로 가정한다.
도 1 및 도 14를 참조하면, S310 단계에서, 호스트(110)는 스토리지 시스템(120)으로 제1 쓰기 커맨드를 전송할 수 있다. 호스트(110) 및 스토리지 시스템(120)은 S311 단계 및 S312 단계의 동작들을 수행하여 쓰기 데이터를 주고 받을 수 있다. S311 단계 및 S312 단계의 동작들은 도 3의 S12 단계 및 S13 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다. 예시적으로, S311 단계 및 S312 단계의 동작들은 스토리지 시스템(120)의 데이터 버퍼(121a)의 데이터 수용 능력 또는 불휘발성 메모리 장치(122)의 프로그램 여부 또는 프로그램 성능에 따라 반복 수행되거나 또는 생략될 수 있다.
S313 단계에서, 스토리지 시스템(120)은 제1 재기입 식별자(RID1; Rewrite ID)를 포함하는 제1 응답(RES1)을 호스트(110)로 제공할 수 있다. 예를 들어, 스토리지 시스템(120)은 제1 쓰기 커맨드에 응답하여, 데이터 버퍼(121a)의 수신 가능한 데이터 용량에 따라 전송 준비 정보(RTT)를 호스트(110)로 제공하고, 호스트(110)는 전송 준비 정보(RTT)에 따라 쓰기 데이터 중 일부를 데이터-아웃(DOUT)에 포함시켜, 스토리지 시스템(120)으로 제공할 수 있다.
제1 쓰기 커맨드는 512KB의 데이터의 쓰기 동작을 가리키는 쓰기 커맨드인 것으로 가정하자. 이 때, 스토리지 시스템(120)의 불휘발성 메모리 장치(122)의 프로그램 속도 및 데이터 버퍼(121a)의 크기 제한으로 인해, 512KB의 쓰기 데이터 전부가 수신되지 않을 수 있다. 이 경우, 스토리지 시스템(120)은 512KB의 쓰기 데이터 전부 또는 일부에 대하여 제1 재기입 식별자(RID1)를 부여하고, 제1 쓰기 커맨드에 대한 제1 응답(RES)에 제1 재기입 식별자(RID1)를 포함시켜서 호스트(110)로 제공할 수 있다.
다시 말해서, 스토리지 시스템(120)은 하나의 쓰기 커맨드에 대하여, 모든 쓰기 데이터를 수신하지 못할 경우, 수신하지 않은 데이터에 대한 재기입 식별자(rewrite ID)를 부여하고, 재기입 식별자가 포함된 제1 응답(RES1)을 호스트(110)로 제공할 수 있다. 예시적으로, 제1 응답(RES1)은 도 3을 참조하여 설명된 쓰기 커맨드에 대한 응답(RES)과 유사한 구조를 가질 수 있다. 예시적으로, 제1 재기입 식별자는 제1 응답(RES1)의 예비 영역 또는 예비 필드 또는 감지 데이터(Sense DATA) 영역에 포함될 수 있다.
S314 단계에서, 호스트(110)는 수신된 제1 응답(RES1)에 응답하여, 제1 데이터를 공유 영역(SA)으로 이동시킬 수 있다. 제1 데이터는 제1 쓰기 커맨드에 대한 쓰기 데이터 전체 또는 스토리지 시스템(120)으로 전송되지 않은 일부 쓰기 데이터를 가리킬 수 있다. 예시적으로, 호스트(110)는 제1 재기입 식별자(RID1)를 참조하여 제1 데이터를 관리할 수 있다. 예시적으로, 제1 데이터의 이동은 버퍼 주소 스왑, 오프셋 변경 등과 같은 방식을 통해 논리적으로 수행될 수 있다.
예시적으로, 제1 쓰기 커맨드에 대한 쓰기 데이터가 스토리지 시스템(120)으로 모두 전송된 경우, 제1 재기입 식별자(RID1)는 부여되지 않으며, S314 단계의 동작은 생략될 것이다.
S320 단계에서, 호스트(110)는 제2 쓰기 커맨드를 스토리지 시스템(120)으로 전송할 수 있다.
호스트(110) 및 스토리지 시스템(120)은 S321 단계 및 S322 단계의 동작들을 수행할 수 있다. S321 단계 및 S322 단계의 동작들은 도 3의 S12 단계 및 S13 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S323 단계에서, 스토리지 시스템(120)은 다음 재기입 식별자(Next Rewrite ID)로써 제1 재기입 식별자(RID1) 및 현재 재기입 식별자로써 제2 재기입 식별자(RID2) 정보를 포함하는 제2 응답(RES2)을 호스트(110)로 전송할 수 있다. 예를 들어, 제1 재기입 식별자(RID1)가 부여된 제1 쓰기 데이터는 호스트(110)의 공유 영역(SA)에 저장되어 있을 것이다. 스토리지 시스템(120)은 호스트(110)의 공유 영역(SA)에 저장된 제1 쓰기 데이터를 수신하기 위하여, 다음 재기입 식별자로써 제1 재기입 식별자(RID1) 정보를 제2 응답(RES2)에 포함시킬 수 있다. 예시적으로, S323 단계의 응답은 제1 데이터에 대한 버퍼 주소, 버퍼 오프셋, 또는 버퍼 길이 등과 같은 정보를 더 포함할 수 있다.
또한, S313 단계를 참조하여 설명된 바와 유사하게, 제2 쓰기 커맨드에 대한 쓰기 데이터 전부를 수신하지 않은 경우, 스토리지 시스템(120)은 제2 쓰기 커맨드에 대한 쓰기 데이터 중 남은 쓰기 데이터에 대하여 제2 재기입 식별자(RID2)를 부여할 수 있다. 제2 재기입 식별자(RID2)는 현재 재기입 식별자로써 제2 응답(RES2)에 포함될 수 있다.
S324 단계에서, 호스트(110)는 S323 단계의 응답에 응답하여, 제2 데이터를 공유 영역(SA)으로 이동시키고, 제2 재기입 식별자(RID2)를 참조하여 공유 영역(SA)으로 이동된 제2 데이터를 관리할 수 있다. 예시적으로, S314 단계와 유사하게, 제2 쓰기 커맨드에 대한 쓰기 데이터가 스토리지 시스템(120)으로 모두 전송된 경우, 제2 재기입 식별자(RID2)는 부여되지 않으며, S324 단계의 동작은 생략될 것이다.
S330 단계에서, 호스트(110)는 제2 응답(RES2)(특히, 다음 재기입 식별자로써 설정된 제1 재기입 식별자(RID1))에 응답하여, 제1 데이터에 대한 재기입 커맨드(rewrite CMD)를 스토리지 시스템(120)으로 전송할 수 있다.
이 후, 호스트(110) 및 스토리지 시스템(120)은 S331 단계 및 S332 단계의 동작들을 수행할 수 있다. S331 단계 및 S332 단계의 동작들은 도 3의 S12 단계 및 S13 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
S333 단계에서, 스토리지 시스템(120)은 제1 재기입 식별자(RID1)의 상태 정보를 포함하는 제3 응답(RES3)을 호스트(110)로 제공할 수 있다. 예를 들어, 호스트(110) 및 스토리지 시스템(120)이 S330 단계 내지 S332 단계의 동작들을 적어도 1회 이상 반복 수행함으로써, 공유 영역(SA)의 제1 데이터가 스토리지 시스템(120)으로 모두 전송될 수 있다. 이 경우, 제1 데이터가 모두 스토리지 시스템(120)에 저장된 것이므로, 공유 영역(SA)의 제1 데이터는 유지되지 않아도 될 것이다.
이와 반대로, 호스트(110) 및 스토리지 시스템(120)이 S330 단계 내지 S332 단계의 동작들을 적어도 1회 이상 반복 수행함으로써, 제1 데이터 중 일부 데이터만 스토리지 시스템(120)으로 전송될 수 있다. 이 경우, 제1 데이터 중 스토리지 시스템(120)으로 전송되지 않은 데이터는 다음 다시 쓰기 동작을 통해 스토리지 시스템(120)으로 전송되어야 하므로, 공유 영역(SA) 상에 유지되어야 할 것이다.
상술된 바와 같이, 제1 재기입 식별자(RID1)에 대응하는 제1 데이터가 모두 스토리지 시스템(120)으로 전송되었는지 또는 전송되지 않은 데이터가 존재하는지에 대한 상태 정보를 호스트(110)로 제공할 수 있다. 호스트(110)는 상술된 상태 정보를 기반으로 제1 데이터를 공유 영역(SA)에서 해제하거나 또는 제1 데이터 및 제1 데이터와 대응되는 정보(예를 들어, 재기입 식별자, 제1 데이터의 버퍼 주소, 버퍼 오프셋) 등에 대한 정보를 유지할 수 있다.
상술된 바와 같이, 데이터 버퍼(121a)의 데이터 수용 가능한 용량, 또는 불휘발성 메모리 장치(122)의 프로그램 성능에 따라, 스토리지 시스템(120)이 하나의 쓰기 커맨드에 대한 쓰기 데이터를 모두 수신할 수 없는 경우, 스토리지 시스템(120)은 수신되지 않은 쓰기 커맨드에 대한 재기입 식별자(RID)를 부여하고, 다른 커맨드의 응답에 재기입 식별자(RID)에 대한 다시 쓰기를 요청함으로써, 남은 데이터에 대한 쓰기 동작을 수행할 수 있다. 따라서, 향상된 성능을 스토리지 시스템이 제공된다.
도 15 및 도 16은 도 14의 동작을 설명하기 위한 예시적인 도면들이다. 간결한 설명을 위하여, 도 14의 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 도 15 및 도 16에서, 호스트(110) 상의 데이터는 호스트(110)의 램(111)에 저장된 것을 의미하며, 스토리지 시스템(120) 상의 데이터는 데이터 버퍼(121a) 또는 불휘발성 메모리 장치(122)에 저장된 것을 의미한다. 또한, 도 15 및 도 16에서, 호스트(110)로부터 스토리지 시스템(120)으로 데이터가 직접적으로 전송되는 것으로 도시되나, 이는 단순히 도면의 간결성을 위한 것이며, 호스트(110) 및 스토리지 시스템(120)은 미리 정해진 인터페이스에 따라 전송 준비 정보(RTT) 및 데이터-아웃(DOUT)을 주고 받을 수 있다.
또한, 하나의 쓰기 커맨드에 대한 쓰기 데이터는 4개의 데이터 유닛들을 포함하는 것으로 가정한다. 데이터 유닛은 호스트(110)에 의해 정의된 데이터 단위를 가리킬 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니다.
또한, 이하에서, 하나의 쓰기 커맨드에 대한 쓰기 데이터에 대하여 재기입 식별자가 부여되는 것으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 쓰기 데이터 유닛 단위로 재기입 식별자가 각각 부여될 수 있다.
도 1 및 도 14 내지 도 16을 참조하면, 사용자 시스템(100)은 호스트(110) 및 스토리지 시스템(120)을 포함할 수 있다. 도 15의 제1 섹션에 도시된 바와 같이, 호스트(110)는 제1 데이터(DATA_11~DATA_14)를 스토리지 시스템(120)에 저장하기 위한 제1 쓰기 커맨드를 스토리지 시스템(120)으로 전송(S310 단계)할 수 있다.
호스트(110)는 스토리지 시스템(120)의 전송 준비 정보(RTT)에 응답하여, 제1 데이터(DATA_11~DATA14) 중 하나의 데이터 유닛(DATA_11)을 스토리지 시스템(120)으로 전송할 수 있다. (도 14의 S311 단계 및 S312 단계 참조)
이 후, 스토리지 시스템(120)은 남은 데이터 유닛들(DATA_13~DATA_14)에 대하여 제1 재기입 식별자(RID1)를 부여하고, 현재 재기입 식별자(Current RID)로써 제1 재기입 식별자(RID1)의 정보가 포함된 제1 응답을 호스트(110)로 전송할 수 있다. 예시적으로, 불휘발성 메모리 장치(122)의 프로그램 속도로 인하여, 스토리지 시스템(120)의 데이터 버퍼(121a)에서 저장 가능한 용량이 없는 경우, 상술된 재기입 식별자 부여가 수행될 수 있다.
도 15의 제2 섹션에 도시된 바와 같이, 호스트(110)는 수신된 제1 응답(특히, 제1 재기입 식별자(RID1))에 응답하여, 남은 데이터 유닛들(DATA_12~DATA_14)을 제1 재기입 식별자(RID1)를 기반으로 관리할 수 있다. 예시적으로, 남은 데이터 유닛들(DATA_12~DATA_14)은 공유 영역(SA)으로 이동될 수 있다.
다음으로, 도 16의 제1 섹션에 도시된 바와 같이, 호스트(110)는 제2 데이터(DATA_21~DATA_24)를 스토리지 시스템(120)에 저장하기 위한 제2 쓰기 커맨드를 스토리지 시스템(120)으로 전송할 수 있다.
예시적으로, 스토리지 시스템(120)의 불휘발성 메모리 장치(122)(도 1 참조)가 프로그램 중이며, 데이터 버퍼(121a)에 수신 가능한 저장 공간이 없는 경우, 스토리지 시스템(120)은 제2 데이터(DATA_21~DATA24)를 수신하지 않고, 제2 쓰기 커맨드에 대한 제2 응답(RES2)을 호스트(110)로 전송할 수 있다. 이 때, 제2 응답(RES2)은 현재 재기입 식별자로써 제2 재기입 식별자(RID2)의 정보 및 다음 재기입 식별자로써 제1 재기입 식별자(RID1)의 정보를 포함할 수 있다. 현재 재기입 식별자는 현재 처리 중인 쓰기 커맨드(즉, 제2 쓰기 커맨드)에 대응하는 제2 데이터 중 남은 데이터 유닛들에 부여된 재기입 식별자를 가리킨다. 다음 재기입 식별자는 이전에 부여된 재기입 식별자 중 재기입를 요청하기 위한 정보를 가리킨다.
예시적으로, 스토리지 시스템(120)은 제2 응답(RES2)에 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들의 버퍼 오프셋 정보를 더 포함시킬 수 있다. 즉, 스토리지 시스템(120)은 다시 쓰기 동작시 수신하고자 하는 데이터 크기를 결정할 수 있다.
도 16의 제2 섹션에 도시된 바와 같이, 호스트(110)는 수신된 제2 응답(RES2)에 응답하여, 남은 데이터 유닛들(즉, DATA_21~DATA_24)을 제2 재기입 식별자(RID2)를 기반으로 관리할 수 있다.
또한, 호스트(110)는 수신된 제2 응답(RES2)에 응답하여, 다음 재기입 식별자로써 설정된 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들(DATA_12~DATA_13)에 대한 재기입 동작을 수행할 수 있다.
재기입 동작을 위하여, 호스트(110)는 제1 재기입 식별자(RID1)에 대한 재기입 커맨드를 스토리지 시스템(120)으로 전송할 수 있다. 이 후, 호스트(110) 및 스토리지 시스템(120)이 도 14의 S331 단계 내지 S332 단계의 동작을 반복 수행함으로써, 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들(DATA_12~DATA_14)이 스토리지 시스템(120)으로 전송될 수 있다.
이 후, 스토리지 시스템(120)은 제1 재기입 식별자(RID1)의 상태 정보를 포함하는 제3 응답(RES3)을 호스트(110)로 전송할 수 있다. 예를 들어, 도 16의 제2 섹션에 도시된 바와 같이, 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들이 모두 스토리지 시스템(120)으로 수신된 경우, 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들은 스토리지 시스템(120)에 모두 저장된 것으로 간주될 수 있다. 이 경우, 제1 재기입 식별자(RID1)의 상태 정보는 완료(Completion)로 설정되고, 호스트(110) 상에서 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들에 대한 정보를 해제될 수 있다.
반면에, 비록 도면에 도시되지 않았으나, 제1 재기입 식별자(RID1)와 대응되는 데이터 유닛들이 모두 스토리지 시스템(120)으로 전송되지 않은 경우, (즉, 전송되지 않은 데이터 유닛이 존재하는 경우) 제1 재기입 식별자(RID1)의 상태 정보는 미완료(incompletion)로 설정되고, 호스트(110)는 전송되지 않은 데이터 유닛에 대한 정보를 유지할 것이다.
상술된 바와 같이, 본 발명에 따른 스토리지 시스템(120)은 전송되지 않은 데이터 유닛들에 대하여 재기입 식별자를 부여하고, 다른 커맨드의 응답에 부여된 재기입 식별자 정보를 포함함으로써, 호스트(110)로 다시 쓰기를 요청할 수 있다. 따라서, 스토리지 시스템(120)의 데이터 버퍼(121a)의 증가 또는 인터페이스의 변화 없이 스토리지 시스템(120)의 쓰기 성능이 향상된다.
예시적으로, 재기입 식별자 또는 재기입 식별자의 상태 정보와 같은 정보들은 호스트(110) 및 스토리지 시스템(120) 사이의 미리 정해진 인터페이스에 따른 응답의 예비 영역 또는 별도의 영역에 저장될 수 있다. 예시적으로, 표 1은 응답(RES)에 포함되는 본 발명에 따른 정보들을 예시적으로 보여준다.
필드 이름 필드 크기 코멘트
CurrentCMD RewriteState 1 bit 0: 현재 커맨드는 다음 재기입 동작에 사용되지 않음
1: 현재 커맨드는 다음 다시 쓰기에 사용됨. 쓰기 정보 유지가 요구됨.
RewriteTaskID 15 bit CurrentCMDRewriteState가 "1"인 경우, 유효함.
NextCMD RewriteState 1 bit 0: 다음 CMD는 할당되지 않음.
1: 호스트에서 다음 CMD로써 다시 쓰기 커맨드를 발행함.
RewriteTaskID 15 bit NextCMDRewriteState가 "1"인 경우, 유효함.
BufferOffset 32 bit 다음 다시 쓰기 커맨드의 버퍼 오프셋
BufferLength 8 bit 다음 다시 쓰기 커맨드의 버퍼 길이
표 1을 참조하면, 호스트(110)로부터의 커맨드에 대한 응답(RES)에 표 1과 같은 정보를 포함시킴으로써, 도 14 내지 도 16을 참조하여 설명된 본 발명의 실시 예가 구현될 수 있다. 예를 들어, 제1 쓰기 커맨드에 대한 쓰기 데이터가 모두 수신되지 않은 경우, "CurrentCMDRewriteState"의 필드를 "1"로 설정하고, "CurrentCMDRewriteTaskID"의 필드에 재기입 식별자(RID)를 설정할 수 있다. 또는 다시 쓰기가 요구되는 경우, "NextCMDRewriteState"의 필드를 "1"로 설정하고, "NextCMDRewriteTaskID"의 필드를 다시 쓰기 대상이 되는 재기입 식별자 값으로 설정하고, "NextCMDBufferOffset" 및 "NextCMDBufferLength"의 필드들에 버퍼 정보를 설정함으로써, 호스트(110)로 다시 쓰기가 요청될 수 있다. 예시적으로, 표 1에 도시된 필드 및 구성은 본 발명의 실시 예를 구체적으로 설명하기 위한 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적으로, 호스트(110)로부터 발행되는 다시 쓰기 커맨드는 표 2와 같은 정보를 포함할 수 있다.
필드 이름 필드 크기 코멘트
ReWriteTaskID 15 bit 부여된 재기입 식별자
Flush 1 bit 1: 호스트의 플러시 요청에 의한 다시 쓰기
0: 스토리지 시스템의 요청에 의한 다시 쓰기
표 2를 참조하면, 다시 쓰기 커맨드는 스토리지 시스템(120)에 의해 부여된 재기입 식별자(RID) 및 플러시 정보를 포함할 수 있다. 예를 들어, 호스트(110)는 도 16에 도시된 바와 같이 다음 재기입 식별자가 설정된 제2 응답에 응답하여 다시 쓰기 커맨드를 스토리지 시스템(120)으로 전송할 수 있다. 이 때, 다시 쓰기 커맨드는 제2 응답에 포함된 다음 재기입 식별자 정보를 포함할 수 있다.
예시적으로, 다시 쓰기 동작은 스토리지 시스템(120)의 요청 뿐만 아니라, 호스트(110) 상의 운영 체제의 플러시 요청에 의해 수행될 수 있다. 이 경우, 호스트(110)는 다시 쓰기 커맨드의 "Flush" 필드의 값을 "1"로 설정함으로써, 스토리지 시스템(120)으로 플러시 요청에 의한 다시 쓰기 커맨드임을 알릴 수 있다.
예시적으로, 표 2에 도시된 필드 및 구성은 본 발명의 실시 예를 구체적으로 설명하기 위한 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 17은 본 발명에 따른 사용자 시스템을 보여주는 블록도이다. 도 17을 참조하면, 사용자 시스템(1000)은 호스트(1100) 및 스토리지 시스템(1200)을 포함할 수 있다.
호스트(1100)는 애플리케이션(1110), 시스템 메모리(1120), 장치 드라이버(1230), 호스트 컨트롤러(1240), 및 UFS 인터커넥트 계층(1250)을 포함할 수 있다.
애플리케이션(1110)은 호스트(1100) 상에서 구동되는 운영체제(OS; operating system) 및 다양한 응용 프로그램들을 포함할 수 있다.
시스템 메모리(1120)는 호스트(1100)의 버퍼 메모리, 캐시 메모리, 또는 메인 메모리로써 사용될 수 있다. 시스템 메모리(1120)는 SDRAM, SRAM, DRAM, PRAM, ReRAM, MRAM, FRAM, TRAM 등과 같은 고속 랜덤 액세스 메모리일 수 있다. 예시적으로, 시스템 메모리(1120)는 도 1 내지 도 16을 참조하여 설명된 램(111)일 수 있고, 유저 영역(UA) 및 공유 영역(SA)을 포함할 수 있다. 즉, 시스템 메모리(1120)는 도 1 내지 도 16을 참조하여 설명된 방법을 통해, 스토리지 시스템(1200)에 의해 액세스되거나 제어될 수 있다.
장치 드라이버(1130)는 호스트(1100)의 애플리케이션으로부터의 입출력 명령어들을 스토리지 시스템(1200)에 대응하는 메시지로 변환하는 동작을 수행하는 프로그램일 수 있다.
호스트 컨트롤러(1140)는 장치 드라이버(1130)의 제어에 따라, 스토리지 시스템(1200)을 제어하기 위한 다양한 신호들을 생성하는 하드웨어 회로일 수 있다.
UFS 인터커넥트 계층(1150)은 호스트 컨트롤러(1140)로부터의 신호들을 스토리지 시스템(1200)으로 제공하기 위한 물리 계층일 수 있다. 예시적으로, 인터커넥트 계층(1150)은 UniPro, M-Phy 등과 같은 물리 계층들을 포함할 수 있다.
스토리지 시스템(1200)은 메모리 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 예시적으로, 스토리지 시스템(1200)은 USF 카드 또는 임베디드 USF 장치로 제공될 수 있다.
메모리 컨트롤러(1210)는 호스트(1100)로부터 하드웨어 리셋을 위한 리셋 신호(Reset_n) 및 기준 클럭(REF_CLK)을 수신할 수 있다. 메모리 컨트롤러(1210)는 호스트(1100)에 포함된 UFS 인터커넥트 계층 (1150)과 동일한 종류의 인터커넥트 계층(1211)을 포함할 수 있다. 호스트(1100)의 UFS 인터커넥트 계층(1150) 및 스토리지 시스템(1200)의 UFS 인터커넥트 계층(1211)은 데이터-인(DIN) 및 데이터-아웃(DOUT)을 서로 주고 받을 수 있다. 예시적으로, 데이터-인(DIN) 및 데이터-아웃(DOUT)은 호스트(1100) 및 스토리지 시스템(1200) 사이의 미리 정해진 인터페이스에 의해 정의된 신호 형태로 제공될 수 있다. 예시적으로, 데이터-인(DIN) 및 데이터-아웃(DOUT)은 도 1 내지 도 16을 참조하여 설명된 커맨드들, 데이터-인, 데이터-아웃, 전송 준비 정보, 응답 등과 같은 신호들을 포함할 수 있다.
예시적으로, 호스트(1100) 및 스토리지 시스템(1200)은 도 1 내지 도 16을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 즉, 스토리지 시스템(1200)은 도 1 내지 도 16을 참조하여 설명된 동작 방법을 기반으로 시스템 메모리(1120)를 액세스할 수 있다.
도 18은 본 발명이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 18을 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다.
SSD(2200)는 신호 커넥터(2201)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2202)를 통해 전원(PWR)을 입력 받는다. 예시적으로, 신호(SIG)는 도 1 내지 도 16을 참조하여 설명된, 커맨드, 전송 준비 정보, 데이터-아웃, 데이터-인, 응답 등과 같은 정보를 포함할 수 있다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~2522n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다. 복수의 플래시 메모리들(2221~222n)은 SSD 컨트롤러(2210)의 제어에 따라 동작할 수 있다. 예시적으로, SSD 컨트롤러(2210)는 도 1 내지 도 16을 참조하여 설명된 방법에 따라 호스트(2100)에 포함된 시스템 메모리(미도시)를 액세스할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD(2200)의 전원을 제공할 수 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 또는 버퍼 메모리(2240)는 SSD 컨트롤러(2210)가 동작하는데 요구되는 다양한 정보들을 임시 저장할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 사용자 시스템
110: 호스트
111: 램
UA: 사용자 영역
SA: 공유 영역
120: 스토리지 시스템
121: 메모리 컨트롤러
121a: 데이터 버퍼
122: 불휘발성 메모리 장치

Claims (10)

  1. 호스트의 시스템 메모리를 공유하는 스토리지 시스템의 동작 방법에 있어서,
    호스트로부터 공유 메모리에 대한 정보를 포함하는 커맨드를 수신하는 단계;
    호스트로부터 타임 아웃 값이 없는 스트림 커맨드를 수신하는 단계; 및
    상기 수신된 스트림 커맨드에 응답하여, 상기 스트림 커맨드와 연관된 제1 패킷을 상기 호스트로 전송하는 단계를 포함하되,
    상기 제1 패킷은 상기 공유 메모리를 액세스하기 위한 정보를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제1 패킷은 상기 스트림 커맨드에 대한 응답(response) 패킷, 데이터-인(Data-IN) 패킷, 및 전송 준비(RTT; Ready-to-Transfer) 패킷 중 어느 하나인 동작 방법.
  3. 제 2 항에 있어서,
    상기 제1 패킷은 상기 데이터-인 패킷이고, 상기 공유 메모리에 기입될 쓰기 데이터 및 상기 쓰기 데이터가 기입될 공유 메모리 영역에 대한 버퍼 오프셋 정보를 포함하는 동작 방법.
  4. 제 2 항에 있어서,
    상기 제1 패킷은 상기 전송 준비(RTT) 패킷이고, 상기 공유 메모리에 저장된 읽기 데이터에 대한 버퍼 오프셋 및 버퍼 길이에 대한 정보를 포함하고,
    상기 제1 패킷을 상기 호스트로 전송한 이후에, 상기 호스트로부터 상기 읽기 데이터가 포함된 데이터-아웃 패킷을 수신하는 단계를 더 포함하는 동작 방법.
  5. 제 2 항에 있어서,
    상기 제1 패킷은 상기 응답 패킷이고, 상기 공유 메모리를 제어하기 위한 제어 정보를 더 포함하는 동작 방법.
  6. 제 5 항에 있어서,
    상기 제어 정보는 상기 시스템 메모리에 저장된 데이터를 상기 공유 메모리로 복사, 이동, 및 스왑하는 동작들, 및 상기 공유 메모리에 저장된 데이터를 삭제하는 동작 중 어느 하나와 대응되는 동작 방법.
  7. 제 2 항에 있어서,
    상기 제1 패킷은 상기 전송 준비(RTT) 패킷이고, 상기 공유 메모리를 제어하기 위한 제어 정보를 더 포함하는 동작 방법.
  8. 제 2 항에 있어서,
    상기 제1 패킷은 상기 데이터-인 패킷이고, 상기 공유 메모리를 제어하기 위한 제어 정보를 더 포함하고,
    상기 동작 방법은
    상기 스트림 커맨드에 대한 커맨드 식별자를 변경하는 단계를 더 포함하는 동작 방법.
  9. 제 1 항에 있어서,
    상기 호스트로부터 하이버네이션 커맨드를 수신하는 단계;
    상기 수신된 하이버네이션 커맨드에 응답하여, 상기 스트림 커맨드와 연관된 응답(response)을 상기 호스트로 전송하는 단계;
    상기 호스트로부터 하이버네이션 진입 커맨드를 수신하는 단계; 및
    상기 수신된 하이버네이션 진입 커맨드에 응답하여, 하이버네이션 모드로 진입하는 단계를 더 포함하는 동작 방법.
  10. 제 1 항에 있어서,
    상기 스토리지 시스템은 상기 호스트와 범용 플래시 스토리지(UFS; Universal Flash Storage) 인터페이스를 기반으로 서로 통신하는 동작 방법.
KR1020160101442A 2016-08-09 2016-08-09 스토리지 시스템의 동작 방법 및 호스트의 동작 방법 KR20180018886A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160101442A KR20180018886A (ko) 2016-08-09 2016-08-09 스토리지 시스템의 동작 방법 및 호스트의 동작 방법
US15/498,585 US10635317B2 (en) 2016-08-09 2017-04-27 Operation method of storage system and host

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160101442A KR20180018886A (ko) 2016-08-09 2016-08-09 스토리지 시스템의 동작 방법 및 호스트의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180018886A true KR20180018886A (ko) 2018-02-22

Family

ID=61158939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160101442A KR20180018886A (ko) 2016-08-09 2016-08-09 스토리지 시스템의 동작 방법 및 호스트의 동작 방법

Country Status (2)

Country Link
US (1) US10635317B2 (ko)
KR (1) KR20180018886A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119938B2 (en) 2019-03-18 2021-09-14 SK Hynix Inc. Apparatus and method to synchronize memory map between a storage device and host
US11550578B2 (en) 2019-11-07 2023-01-10 Sk Hynix Inc Data storage apparatus including swap memory and operating method thereof
KR20230116341A (ko) * 2022-01-28 2023-08-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102444606B1 (ko) * 2017-08-28 2022-09-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190083052A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11137914B2 (en) * 2019-05-07 2021-10-05 Western Digital Technologies, Inc. Non-volatile storage system with hybrid command
US11537320B2 (en) * 2020-02-03 2022-12-27 Western Digital Technologies, Inc. Storage system and method for host memory access
US11294832B2 (en) * 2020-03-20 2022-04-05 Western Digital Technologies, Inc. Systems and methods for queuing device management configuration requests
US11327684B2 (en) * 2020-05-14 2022-05-10 Western Digital Technologies, Inc. Storage system and method for host memory access
US11429663B2 (en) 2020-06-02 2022-08-30 Western Digital Technologies, Inc. Storage system and method for host-assisted memory block color coding for faster media search
US11966605B2 (en) * 2022-03-09 2024-04-23 Kioxia Corporation Superblock-based write management in non-volatile memory devices

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4430702A (en) * 1980-05-12 1984-02-07 Control Data Corporation Network access device
US5136582A (en) * 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5317692A (en) * 1991-01-23 1994-05-31 International Business Machines Corporation Method and apparatus for buffer chaining in a communications controller
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5287478A (en) * 1991-08-06 1994-02-15 R-Byte, Inc. Digital data tape storage system utilizing plurality of read/write heads with system diagnostic capability
US5608720A (en) * 1993-03-09 1997-03-04 Hubbell Incorporated Control system and operations system interface for a network element in an access system
US5966546A (en) * 1996-09-12 1999-10-12 Cabletron Systems, Inc. Method and apparatus for performing TX raw cell status report frequency and interrupt frequency mitigation in a network node
US6341315B1 (en) * 1999-02-26 2002-01-22 Crossroads Systems, Inc. Streaming method and system for fiber channel network devices
US7603516B2 (en) 2000-12-15 2009-10-13 Stmicroelectronics Nv Disk controller providing for the auto-transfer of host-requested-data from a cache memory within a disk memory system
JP4559046B2 (ja) * 2003-08-04 2010-10-06 株式会社日立製作所 仮想テープライブラリ装置
ATE486480T1 (de) * 2004-02-06 2010-11-15 Koninkl Philips Electronics Nv System und verfahren für einen hibernationsmodus für barkeneinrichtungen
US8019908B2 (en) * 2004-07-06 2011-09-13 Tandberg Data Holdings S.A.R.L. Data replication systems and methods
JP4424391B2 (ja) * 2007-08-30 2010-03-03 ブラザー工業株式会社 デバイス、およびファイル伝送システム
US7853735B2 (en) 2007-12-13 2010-12-14 Emulex Design & Manufacturing Corporation Efficient processing of groups of host access requests that may include zero length requests
US8181046B2 (en) * 2008-10-29 2012-05-15 Sandisk Il Ltd. Transparent self-hibernation of non-volatile memory system
US8250283B1 (en) * 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
US8225052B2 (en) 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
EP2383948B1 (en) * 2009-11-13 2018-07-11 Panasonic Intellectual Property Management Co., Ltd. Interface circuit, and interface system
US8543763B2 (en) * 2012-01-20 2013-09-24 Huawei Technologies Co., Ltd. Redundant array of independent disks raid controller and system
WO2014008653A1 (en) * 2012-07-12 2014-01-16 Harman International Industries, Incorporated Method for switching a device between hibernat mode and wake-up
US9621964B2 (en) * 2012-09-30 2017-04-11 Oracle International Corporation Aborting data stream using a location value
US20150074334A1 (en) 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Information processing device
KR20150041873A (ko) 2013-10-10 2015-04-20 에스케이하이닉스 주식회사 데이터 처리 시스템
CN103631534B (zh) 2013-11-12 2017-01-11 北京兆芯电子科技有限公司 数据存储系统以及其管理方法
US10824335B2 (en) 2014-07-14 2020-11-03 Western Digital Technologies, Inc. Device and method to store predicted data at a host memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119938B2 (en) 2019-03-18 2021-09-14 SK Hynix Inc. Apparatus and method to synchronize memory map between a storage device and host
US11550578B2 (en) 2019-11-07 2023-01-10 Sk Hynix Inc Data storage apparatus including swap memory and operating method thereof
KR20230116341A (ko) * 2022-01-28 2023-08-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
US10635317B2 (en) 2020-04-28
US20180046371A1 (en) 2018-02-15

Similar Documents

Publication Publication Date Title
KR20180018886A (ko) 스토리지 시스템의 동작 방법 및 호스트의 동작 방법
TW201839613A (zh) 數據儲存裝置及其操作方法
WO2020227294A1 (en) Timed data transfer between a host system and a memory sub-system
US11210016B2 (en) Method of operating memory controller and memory system, and the memory system
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US10346052B2 (en) Memory system with priority processing and operating method thereof
KR20210098717A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
KR102544162B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
KR102620727B1 (ko) 전자 장치
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
KR102434840B1 (ko) 데이터 저장 장치
US11500800B2 (en) Semiconductor devices including command priority policy management and related systems
US11461238B2 (en) Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN113220215A (zh) 双slc/qlc编程和资源释放
US20220413749A1 (en) Operation based on consolidated memory region description data
WO2021179163A1 (en) Methods, systems and readable storage mediums for managing queues of amemory sub-system
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
KR20220076803A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210055448A (ko) 데이터 저장 장치 및 그 동작 방법
CN110032333B (zh) 存储器系统及其操作方法
WO2024103362A1 (zh) 存储系统操作方法、存储控制器、存储系统及电子设备
US11586382B2 (en) Memory system and data processing system for distributedly storing input data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right