KR102395190B1 - 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 - Google Patents

호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 Download PDF

Info

Publication number
KR102395190B1
KR102395190B1 KR1020170097133A KR20170097133A KR102395190B1 KR 102395190 B1 KR102395190 B1 KR 102395190B1 KR 1020170097133 A KR1020170097133 A KR 1020170097133A KR 20170097133 A KR20170097133 A KR 20170097133A KR 102395190 B1 KR102395190 B1 KR 102395190B1
Authority
KR
South Korea
Prior art keywords
host
packet
data
buffer
storage device
Prior art date
Application number
KR1020170097133A
Other languages
English (en)
Other versions
KR20190013106A (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 KR1020170097133A priority Critical patent/KR102395190B1/ko
Priority to US15/961,920 priority patent/US10599591B2/en
Priority to CN201810418379.6A priority patent/CN109324754B/zh
Priority to DE102018113447.9A priority patent/DE102018113447A1/de
Publication of KR20190013106A publication Critical patent/KR20190013106A/ko
Priority to US16/801,267 priority patent/US11080217B2/en
Priority to US17/359,864 priority patent/US11573915B2/en
Application granted granted Critical
Publication of KR102395190B1 publication Critical patent/KR102395190B1/ko
Priority to US18/091,452 priority patent/US11775455B2/en

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access

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)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)

Abstract

호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 스토리지 장치의 동작방법은, 호스트 내의 다수의 데이터 버퍼들 중 선택된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 포함하는 제1 패킷을 상기 호스트로부터 수신하는 단계와, 상기 제1 패킷으로부터 상기 버퍼 어드레스를 파싱하는 단계 및 상기 제1 패킷에 응답하여, 상기 버퍼 어드레스를 포함하는 제2 패킷을 상기 호스트로 전송하는 단계를 구비하는 것을 특징으로 한다.

Description

호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법{Storage Device performing interface with host and Operating Method of Host and Storage Device}
본 개시의 기술적 사상은 호스트 및 스토리지 장치의 동작방법에 관한 것으로서, 상세하게는 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법에 관한 것이다.
불휘발성 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 기반의 불휘발성 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다.
스토리지 장치를 포함하는 데이터 처리 시스템은 스토리지 시스템(Storage system)으로 지칭될 수 있으며, 스토리지 시스템은 호스트(Host)와 스토리지 장치(Storage device)를 포함할 수 있다. 호스트와 스토리지 장치는 다양한 인터페이스 표준을 통해 연결될 수 있으며, 인터페이스 동작 시 기록 및 독출 등의 데이터 처리 동작의 오버헤드를 감소함으로써 데이터 처리 성능을 향상할 필요가 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 호스트와 스토리지 장치 사이의 데이터 처리의 오버헤드를 감소함으로써 데이터 처리 성능을 향상할 수 있는 호스트 및 스토리지 장치의 동작방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 스토리지 장치의 동작방법은, 호스트 내의 다수의 데이터 버퍼들 중 선택된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 포함하는 제1 패킷을 상기 호스트로부터 수신하는 단계와, 상기 제1 패킷으로부터 상기 버퍼 어드레스를 파싱하는 단계 및 상기 제1 패킷에 응답하여, 상기 버퍼 어드레스를 포함하는 제2 패킷을 상기 호스트로 전송하는 단계를 구비하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 스토리지 장치는, 데이터를 불휘발성하게 저장하는 메모리 코어 및 외부의 호스트와 인터페이스하고, 상기 호스트에 구비되는 다수의 데이터 버퍼들에 대한 버퍼 어드레스를 관리하며, 적어도 하나의 데이터 버퍼의 억세스를 요구로 하는 패킷을 상기 호스트로 전송할 때 상기 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 상기 호스트로 전송되는 패킷에 포함시키는 스토리지 컨트롤러를 구비하는 것을 특징으로 한다.
본 발명의 기술적 사상의 스토리지 장치, 호스트 및 스토리지 장치의 동작방법에 따르면, 호스트에 구비되는 데이터 버퍼들의 위치를 나타내는 버퍼 어드레스가 호스트와 스토리지 장치 사이에서 송수신되므로, 억세스가 요구로 되는 데이터 버퍼의 위치를 판단하기 위한 호스트 메모리의 읽기 동작이 생략될 수 있으며, 이를 통해 호스트와 스토리지 장치 사이의 데이터 처리의 오버헤드가 감소되고 데이터 처리 성능이 향상될 수 있는 효과가 있다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 호스트의 일 구현 예를 나타내는 블록도이다.
도 3은 도 1에 도시된 스토리지 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 4는 UFS 인터페이스가 적용된 스토리지 시스템의 일 구현 예를 나타내는 블록도이다.
도 5 및 도 6은 본 발명의 예시적인 실시예에 따른 호스트의 동작방법을 나타내는 플로우차트이다.
도 7은 본 발명의 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 8 및 도 9a,b는 호스트 메모리 및 호스트 컨트롤러 내의 레지스터에 저장되는 각종 정보의 일 예를 나타내는 블록도이다.
도 10 및 도 11a,b는 UFS 인터페이스에 따른 데이터 독출 동작 및 패킷의 일 구현 예를 나타내는 도면이다.
도 12 및 도 13은 UFS 인터페이스에 따른 데이터 기록 동작 및 패킷의 일 구현 예를 나타내는 도면이다.
도 14는 UFS 인터페이스에서 정의되는 다양한 종류의 패킷들에 본 발명의 실시예가 적용되는 예를 나타내는 도면이다.
도 15는 본 발명의 예시적인 실시예에 따라 버퍼 어드레스를 관리하는 스토리지 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 16은 도 15의 스토리지 컨트롤러의 일 동작방법을 나타내는 플로우차트이다.
도 17a,b,c는 하나의 커맨드 UPIU에 응답하여 다수의 RTT UPIU들이 전송되는 경우에서의 스토리지 시스템의 동작 예를 나타내는 블록도이다.
도 18은 본 발명의 예시적인 실시예들에 따른 패킷의 구조를 나타내는 도면이다.
도 19 내지 도 25는 본 발명의 실시예에 따라 생성되는 패킷의 다양한 구조들의 예를 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
데이터 처리 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 메모리 코어(220)를 포함할 수 있다. 스토리지 장치(200)가 불휘발성하게 데이터를 저장하는 경우, 메모리 코어(220)는 불휘발성 메모리 코어(NVM Core)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있으며, 또한 호스트 메모리(120)는 버퍼 영역(121)을 포함할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 하나 이상의 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 포함할 수 있다. 스토리지 장치(200)가 솔리드 스테이트 드라이브를 포함하는 경우, 스토리지 장치(200)는 데이터를 불휘발성하게 저장하는 다수 개의 플래시 메모리 칩들(예컨대, NAND 메모리 칩들)을 포함할 수 있다.
또는, 스토리지 장치(200)는 하나 이상의 플래시 메모리 칩들을 포함하는 플래시 메모리 장치에 해당할 수 있다. 일부 실시예들에서, 스토리지 장치(200)는 스토리지 시스템(10)에 내장되는 임베디드(embedded) 메모리일 수 있다. 예를 들어, 스토리지 장치(200)는 eMMC 또는 임베디드 UFS 메모리 장치일 수 있다. 일부 실시예들에서, 스토리지 장치(200)는 스토리지 시스템(10)에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 장치(200)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
스토리지 장치(200)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 상기 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 상기 메모리 셀들의 동작과 관련된 회로로서 상기 기판상에 또는 상기 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식”은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다.
본 발명의 기술적 사상에 의한 일 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 불휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
호스트(100)와 스토리지 장치(200)는 다양한 종류의 인터페이스를 통해 서로 통신할 수 있다. 일 예로서, 호스트(100)와 스토리지 장치(200)는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded MMC) 등과 같은 표준 인터페이스를 통해 연결될 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 인터페이스의 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다. 도 1의 예에서는, 호스트(100)에서 생성되어 스토리지 장치(200)로 전송되는 제1 패킷(Packet_H)과, 스토리지 장치(200)에서 생성되어 호스트(100)로 전송되는 제2 패킷(Packet_S)이 예시된다.
호스트 컨트롤러(110)는 호스트 컨트롤러 인터페이스(미도시)를 포함할 수 있으며, 호스트 컨트롤러 인터페이스는 버퍼 영역(121)의 데이터(예컨대, 기록 데이터)를 메모리 코어(220)에 저장하거나, 메모리 코어(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역(121)에 저장하는 동작을 관리할 수 있다. 또한, 메모리 컨트롤러(210)는 호스트 컨트롤러(110)와의 인터페이스를 위한 디바이스 컨트롤러 인터페이스(미도시)를 포함할 수 있다.
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 어플리케이션 프로세서의 외부에 배치되는 메모리 장치 또는 메모리 모듈일 수 있다.
호스트(100)는 스토리지 장치(200)의 구동에 관련된 각종 장치들을 더 포함할 수 있다. 일 예로서, 호스트 어플리케이션 및 장치 드라이버 등의 소프트웨어 모듈(미도시)이 더 구비되고, 상기 소프트웨어 모듈은 호스트 메모리(120)에 로딩되어 프로세서(미도시)에 의해 실행될 수 있다.
호스트 메모리(120)의 버퍼 영역(121)은 다수의 데이터 버퍼들을 포함할 수 있으며, 상기 다수의 데이터 버퍼들은 버퍼 어드레스(ADD_Buf)에 의해 억세스될 수 있다. 일 예로서, 기록 데이터는 데이터 버퍼에 저장되고, 호스트 컨트롤러(110)의 제어에 기반하여 데이터 버퍼에 저장된 기록 데이터가 스토리지 장치(200)로 전송될 수 있다. 또한, 스토리지 장치(200)로부터 독출된 독출 데이터는 호스트 컨트롤러(110)의 제어에 기반하여 데이터 버퍼에 저장될 수 있다.
본 발명의 예시적인 실시예에 따라, 호스트 컨트롤러(110)는 다수의 데이터 버퍼들 중 요청에 대응하여 선택된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(ADD_Buf)를 제1 패킷(Packet_H)에 포함시킬 수 있다. 일 예로서, 데이터 기록을 요청하는 제1 패킷(Packet_H)이 생성될 때, 호스트 컨트롤러(110)는 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(ADD_Buf)를 포함하는 제1 패킷(Packet_H)을 생성하고 이를 스토리지 장치(200)로 전송할 수 있다. 또한, 데이터 독출을 요청하는 제1 패킷(Packet_H)이 생성될 때, 호스트 컨트롤러(110)는 독출 데이터가 저장될 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(ADD_Buf)를 포함하는 제1 패킷(Packet_H)을 생성할 수 있다.
또한, 본 발명의 예시적인 실시예에 따라, 메모리 컨트롤러(210)는 제1 패킷(Packet_H)으로부터 파싱된 커맨드 및 버퍼 어드레스(ADD_Buf)를 저장하고 관리할 수 있다. 또한, 메모리 컨트롤러(210)는 제1 패킷(Packet_H)에 응답하는 제2 패킷(Packet_S)을 생성함에 있어서, 스토리지 장치(200) 내에서 저장 및 관리된 버퍼 어드레스(ADD_Buf)를 제2 패킷(Packet_S)에 포함시킬 수 있다.
일 실시예에 따라, 호스트(100)는 스토리지 컨트롤러(210)로부터 버퍼 어드레스(ADD_Buf)를 포함하는 제2 패킷(Packet_S)을 수신하고, 제2 패킷(Packet_S)으로부터 파싱된 버퍼 어드레스(ADD_Buf)를 이용하여 버퍼 영역(121)을 억세스할 수 있다. 즉, 호스트(100)는 데이터 버퍼의 위치를 판단하기 위해 호스트 메모리(120)의 다른 영역을 억세스하여 관련 정보들을 확인할 필요가 없으며, 제2 패킷(Packet_S)으로부터 파싱된 버퍼 어드레스(ADD_Buf)에 대응하는 데이터 버퍼를 억세스할 수 있다.
상기와 같은 실시예에 따르면, 데이터 버퍼의 위치를 판단하기 위한 호스트 메모리(120)의 추가의 억세스 동작이 필요 없으므로, 호스트 컨트롤러(110)가 호스트 메모리(120)를 억세스하는 빈도가 감소될 있다. 예컨대, 종래의 경우에는 호스트 메모리(120) 내의 일 영역에 버퍼 어드레스가 별도로 저장되고, 기록 데이터가 저장되거나 독출 데이터가 저장될 데이터 버퍼의 위치를 판단하기 위해 버퍼 어드레스를 읽기 위한 별도의 억세스 동작이 수행될 필요가 있었으나, 본 발명의 실시예에 따르면 별도의 억세스 동작이 수행됨이 없이 데이터 버퍼가 바로 억세스될 수 있다. 이에 따라, 데이터 처리 동작에 오버헤드가 감소될 수 있으므로 데이터 처리 성능이 향상될 수 있다.
도 2는 도 1에 도시된 호스트(100)의 일 구현 예를 나타내는 블록도이다. 도 2의 예에서는 호스트 컨트롤러를 포함하는 어플리케이션 프로세서(AP)가 도시된다.
도 2를 참조하면, 일 예로서, 호스트(100)는 어플리케이션 프로세서(AP) 및 호스트 메모리(120)를 포함하고, 어플리케이션 프로세서(AP)는 하나 이상의 모듈들을 지능 소자(Intellectual Property, IP)서 포함할 수 있다. 일 예로서, 어플리케이션 프로세서(AP)는 호스트 컨트롤러(110), 프로세서(130), 모뎀(140), 카메라 인터페이스(150), 디스플레이 인터페이스(160), 메모리 컨트롤 유닛(171) 및 임베디드 메모리(172)를 포함할 수 있다.
도 2에서는 호스트 메모리(120)가 어플리케이션 프로세서(AP)의 외부의 메모리에 해당하는 것으로 도시되었으나 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, 어플리케이션 프로세서(AP) 내부의 임베디드 메모리(172)가 전술한 실시예에서의 호스트 메모리로 이용될 수도 있을 것이다. 한편, 도 2에 도시된 구성들은 하나의 실시예에 불과한 것으로서, 어플리케이션 프로세서(AP)는 도 2에 도시된 구성들 이외에도 다른 구성들을 더 포함할 수도 있으며, 또는 도 2에 도시된 구성들 중 일부는 어플리케이션 프로세서(AP)에 구비되지 않아도 무방할 것이다.
프로세서(130)는 어플리케이션 프로세서(AP)의 전반적인 동작을 제어할 수 있다. 일 예로서, 스토리지 장치에 대한 데이터 기록/독출 동작 등을 관리하기 위한 소프트웨어(예컨대, 어플리케이션 프로세서 및 장치 드라이버)가 호스트 메모리(120) 또는 임베디드 메모리(172)에 로딩되고, 프로세서(130)는 소프트웨어를 실행함에 의해 데이터 기록/독출 동작 등을 관리할 수 있다. 호스트 메모리(120)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있으며, 일 실시예에 따라 호스트 메모리(120)는 DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory) 등의 휘발성 메모리를 포함할 수 있다.
일 실시예에 따라, 어플리케이션 프로세서(AP)는 카메라 제어 동작, 디스플레이 제어 동작 및 모뎀 동작 등을 수행할 수 있다. 모뎀(140)이 어플리케이션 프로세서(AP)에 포함됨에 따라, 어플리케이션 프로세서(AP)는 ModAP 으로 지칭될 수 있다.
호스트 컨트롤러(110)는 전술한 실시예에 따라 스토리지 장치와 버퍼 어드레스(ADD_Buf)를 포함하는 패킷(Packet)을 송수신할 수 있다. 호스트 컨트롤러(110)는 하나 이상의 전송 요청들을 저장하는 레지스터(111)를 포함할 수 있다. 일 실시예에 따라, 프로세서(130)의 제어에 기반하여 스토리지 장치에 대한 기록 및/또는 독출에 관련된 전송 요청들이 레지스터(111)에 저장될 수 있다. 또한, 프로세서(130)의 제어에 기반하여 상기 전송 요청들에 대응하는 패킷을 생성하기 위한 각종 정보들이 호스트 메모리(120)에 저장될 수 있으며, 일 예로서 패킷의 종류에 관한 정보와 버퍼 어드레스(ADD_Buf)를 포함하는 테이블 정보가 호스트 메모리(120)에 저장될 수 있다. 또한, 데이터 기록 요청의 경우, 프로세서(130)의 제어에 기반하여 기록 데이터가 호스트 메모리(120)의 다수의 데이터 버퍼들에 저장될 수 있다. 호스트 컨트롤러(110)는 내부의 레지스터(111)에 저장된 전송 요청들을 확인하고, 이에 기반하여 스토리지 장치와 인터페이스할 수 있다.
전술한 실시예에서와 같이, 호스트 컨트롤러(110)는 스토리지 장치로부터 버퍼 어드레스(ADD_Buf)가 포함된 패킷(Packet)을 수신하고, 수신된 패킷(Packet)으로부터 버퍼 어드레스(ADD_Buf)를 파싱하며, 파싱된 버퍼 어드레스(ADD_Buf)에 따라 데이터 버퍼의 위치를 판단할 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(AP) 내의 다른 모듈들에 비해 호스트 메모리(120)에 대한 억세스 우선 순위가 낮을 수 있는데, 이 경우 호스트 컨트롤러(110)가 호스트 메모리(120)를 억세스하는 데 소요되는 레이턴시가 클 수 있다. 그러나, 본 발명의 실시예에 따르면 호스트 컨트롤러(110)가 호스트 메모리(120)를 억세스하는 빈도가 감소될 수 있으며, 데이터 처리 동작의 오버헤드가 증가하는 것이 방지될 수 있다.
도 3은 도 1에 도시된 스토리지 컨트롤러(210)의 일 구현 예를 나타내는 블록도이다.
도 1 및 도 3을 참조하면, 스토리지 컨트롤러(210)는 프로세서로서 중앙 프로세싱 유닛(central processing unit, 211), 호스트 인터페이스(212) 및 메모리 인터페이스(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer(FTL), 214), 패킷 매니저(215) 및 버퍼 매니저(216)를 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 중앙 프로세싱 유닛(211)이 플래시 변환 레이어를 실행함에 의해 메모리 코어에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(212)는 호스트(100)와 패킷(Packet)을 송수신할 수 있으며, 전술한 실시예에 따라 호스트 인터페이스(212)가 송수신하는 패킷(Packet)에는 호스트(100) 내의 버퍼 영역(121)에서의 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(ADD_Buf)가 포함될 수 있다. 또한, 메모리 인터페이스(213)는 메모리 코어와 인터페이스함으로써 데이터를 기록하거나 독출하는 동작을 수행할 수 있다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 매니저(216)는 패킷(Packet)으로부터 파싱된 각종 정보를 버퍼에 저장하는 동작을 관리할 수 있으며, 일 예로서 패킷(Packet)으로부터 파싱된 커맨드(CMD) 및 버퍼 어드레스(ADD_Buf)의 저장 동작을 관리할 수 있다. 또한, 버퍼 매니저(216)는 패킷(Packet)으로부터 파싱된 기록 데이터를 버퍼에 저장하는 동작을 관리할 수 있으며, 메모리 코어로부터 독출된 데이터를 버퍼에 저장하는 동작을 관리할 수 있다. 일 실시예에 따라, 버퍼는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으며, 또는 상기 버퍼는 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다. 또한, 도 3에서는 도시의 편의상 버퍼 어드레스(ADD_Buf)와 데이터가 동일한 버퍼에 저장되는 것으로 도시되었으나, 상기 버퍼 어드레스(ADD_Buf)와 데이터는 별개의 저장 회로에 각각 저장될 수도 있을 것이다.
전술한 실시예에 따라, 스토리지 장치(200)는 호스트(100)로 전송할 패킷(Packet)을 생성함에 있어서, 버퍼에 저장된 버퍼 어드레스(ADD_Buf)를 독출하고, 독출된 버퍼 어드레스(ADD_Buf)를 호스트(100)로 전송될 패킷(Packet)에 포함될 수 있다.
데이터 기록 동작을 예로 들면, 호스트(100)로부터 수신된 패킷(Packet)으로부터 기록 커맨드 및 이에 대응하는 제1 버퍼 어드레스가 파싱되고, 제1 버퍼 어드레스는 스토리지 장치(200)의 버퍼에 저장될 수 있다. 스토리지 장치(200)는 상기 기록 커맨드에 대한 응답으로서, 소정 사이즈 단위의 기록 데이터의 전송을 요청하는 패킷(Packet)을 생성할 수 있다. 이 때, 상기 기록 커맨드에 대응하는 제1 버퍼 어드레스가 패킷(Packet)에 포함될 수 있으며, 또한, 호스트(100)는 패킷(Packet)에 포함된 제1 버퍼 어드레스를 참조하여, 제1 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 저장된 기록 데이터를 스토리지 장치(200)로 전송할 수 있다.
이와 유사하게, 데이터 독출 동작을 예로 들면, 호스트(100)로부터 수신된 패킷(Packet)으로부터 독출 커맨드 및 이에 대응하는 제2 버퍼 어드레스가 파싱되고, 제2 버퍼 어드레스는 스토리지 장치(200)의 버퍼에 저장될 수 있다. 스토리지 장치(200)는 독출 커맨드에 응답하여 독출된 데이터를 포함하는 패킷(Packet)을 생성하며, 상기 독출 커맨드에 대응하는 제2 버퍼 어드레스가 패킷(Packet)에 포함될 수 있다. 또한, 호스트(100)는 패킷(Packet)에 포함된 제2 버퍼 어드레스를 참조하여, 제2 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 독출 데이터를 저장할 수 있다.
도 4는 UFS 인터페이스가 적용된 스토리지 시스템의 일 구현 예를 나타내는 블록도이다.
도 4를 참조하면, 스토리지 시스템(300)의 UFS 호스트와 UFS 스토리지 장치는 UFS 인터페이스에 따른 통신을 수행할 수 있으며, UFS 호스트는 그 구성요소들로서 소프트웨어 모듈(310), 하드웨어 모듈에 해당하는 UFS 호스트 컨트롤러(320) 및 호스트 메모리(330)를 포함할 수 있다. 소프트웨어 모듈(310)은 어플리케이션 소프트웨어 및 UFS 호스트 컨트롤러 드라이버를 포함할 수 있다. 어플리케이션 소프트웨어는 UFS 호스트에서 실행되는 다양한 응용 프로그램들일수 있으며, UFS 호스트 컨트롤러 드라이버는 UFS 호스트에 연결되어 사용되는 주변 장치들의 구동을 관리하기 위한 것으로서, 스토리지 장치에 대한 데이터 기록 및 독출 등의 데이터 관리 동작은 UFS 호스트 컨트롤러 드라이버를 실행함으로써 수행될 수 있다. 어플리케이션 소프트웨어 및 UFS 호스트 컨트롤러 드라이버는 도 4에 도시된 호스트 메모리(330)에 로딩되거나, 또는 UFS 호스트 내의 다른 동작 메모리에 로딩되어 프로세서에 의해 실행될 수 있다.
UFS 호스트 컨트롤러(320)를 포함할 수 있으며, UFS 호스트 컨트롤러(320)는 UFS 호스트 컨트롤러 인터페이스(UFS HCI), UTP 프로토콜 엔진 및 UFS 인터커넥트 레이어(UFS Interconnect Layer(UIC))를 포함할 수 있다. UFS 호스트 컨트롤러 인터페이스(UFS HCI)는 UFS 호스트 컨트롤러 드라이버를 통해 생성된 요청을 수신하고 이를 UTP 프로토콜 엔진으로 전달하거나, UTP 프로토콜 엔진으로부터 전달된 데이터 억세스 결과를 UFS 호스트 컨트롤러 드라이버로 제공할 수 있다. UTP 프로토콜 엔진은 상위 계층(또는, 어플리케이션 계층)을 위한 서비스들을 제공할 수 있으며, 일 예로서 패킷을 생성하거나 패킷을 해제하여 그 내부의 정보를 파싱할 수 있다.
또한, UFS 인터커넥트 레이어는 UFS 스토리지 장치(340)와 통신할 수 있으며, 일 예로서 UFS 인터커넥트 레이어는 링크 레이어(Link Layer)와 물리 레이어(PHY Layer)를 포함할 수 있다. 링크 레이어(Link Layer)는 MIPI UniPro일 수 있으며, 물리 레이어(PHY Layer)는 MIPI M-PHY일 수 있다. 또한, UFS 인터페이스에 따라, UFS 호스트는 UFS 스토리지 장치(340)로 기준 클록(Ref Clock) 및 리셋 신호(Reset) 신호를 제공할 수 있다.
한편, UFS 스토리지 장치(340)는 스토리지 컨트롤러와 메모리 코어를 포함할 수 있다. 일 실시예에 따라 도 4에서 스토리지 컨트롤러는 UFS 인터커넥트 레이어, UTP 프로토콜 엔진 및 UFS 스토리지 디바이스 인터페이스를 포함할 수 있다. 또한, 메모리 코어는 불휘발성 메모리를 포함하는 코어(NVM Core)일 수 있다.
UFS 호스트 컨트롤러(320)와 UFS 스토리지 장치(340)가 통신하는 구조에서, UFS 호스트 컨트롤러 드라이버로부터의 요청에 따른 데이터 송수신은 UFS 호스트 컨트롤러 인터페이스를 통해 수행될 수 있다. 일 예로서, 데이터 기록 동작시, 소프트웨어 모듈(310)에 의해 기록 데이터가 호스트 메모리(330)의 데이터 버퍼에 저장되고, UFS 호스트 컨트롤러 인터페이스가 호스트 메모리(330)의 데이터 버퍼를 억세스하며, 억세스된 기록 데이터가 UFS 스토리지 장치(340)로 전달될 수 있다.
본 발명의 예시적인 실시예에 따르면, UFS 호스트가 UFS 스토리지 장치(340)로 전송하는 제1 패킷(Packet_H) 및/또는 UFS 스토리지 장치(340)가 UFS 호스트로 전송하는 제2 패킷(Packet_S)에는 호스트 메모리(330) 내에서의 데이터 버퍼의 위치를 나타내는 버퍼 어드레스가 포함될 수 있다. 상기 버퍼 어드레스는 데이터 버퍼의 위치를 나타내는 물리적 어드레스(Physical Address)에 해당할 수 있다. 일 예로서, 호스트 메모리(330)의 일 영역에는 버퍼 어드레스들이 포함된 테이블 정보(예컨대, Physical Region Description Table(PRDT))가 저장될 수 있으며, UFS 호스트의 UTP 프로토콜 엔진은 상기 PRDT를 통해 버퍼 어드레스를 확인하고, 확인된 버퍼 어드레스를 포함하는 제1 패킷(Packet_H)을 생성할 수 있다. 또한, UFS 스토리지 장치(340)의 UTP 프로토콜 엔진은 UFS 스토리지 장치(340) 내부에 저장되어 관리되는 버퍼 어드레스를 포함하는 제2 패킷(Packet_S)을 생성할 수 있다.
또한, UFS 호스트 컨트롤러(320)와 UFS 스토리지 장치(340)는 포트-맵 입출력(Port-Mapped I/O) 형태로 연결되어 있으며, 기록 및 독출 동작이 멀티 태스크(Multi Task) 방식으로 처리될 수 있다. 이에 따라, UFS 스토리지 장치(340)는 다수의 패킷들로부터 파싱된 다수의 커맨드들과 이에 대응하는 버퍼 어드레스들을 저장 및 관리할 수 있다.
UFS 인터페이스가 적용됨에 따라 다양한 종류의 패킷들이 정의될 수 있으며, 다양한 종류의 패킷들 중 적어도 일부의 패킷들에 대해 본 발명의 실시예가 적용될 수 있다. 일 예로서, UFS 인터페이스에 따른 패킷은 UPIU(UFS Protocol information unit)로 정의될 수 있으며, 그 종류로서 기록 및 독출 요청을 위한 커맨드 UPIU(Command UPIU), 응답 UPIU(Response UPIU), 독출 데이터를 포함하는 Data_In UPIU, 기록 데이터를 포함하는 Data_Out UPIU, 태스크 관리 요청 UPIU(TM Request UPIU) 및 데이터 전송 요청 UPIU(Ready To Transfer(RTT) UPIU) 등의 패킷들이 정의될 수 있다. 또한, 본 발명의 실시예에 따라, UFS 인터페이스서 정의되는 패킷들 중 적어도 일부의 종류의 패킷에 전술한 버퍼 어드레스가 포함될 수 있으며, 일 예로서 호스트 메모리(330)의 데이터 버퍼의 억세스를 요구로 하는 패킷에 전술한 버퍼 어드레스가 포함될 수 있다.
이하, 본 발명의 실시예들에 따른 호스트와 스토리지 장치 사이의 인터페이스의 구체적인 동작 예가 설명된다. 이하의 실시예들에서는 UFS 인터페이스가 채용된 호스트와 스토리지 장치가 예시될 것이나, 전술한 바와 같이 본 발명의 실시예들은 UFS 인터페이스 이외에도 다른 다양한 종류의 인터페이스에 적용될 수 있을 것이다.
도 5 및 도 6은 본 발명의 예시적인 실시예에 따른 호스트의 동작방법을 나타내는 플로우차트이다. 도 5는 호스트의 패킷 전송 예를 나타내고, 도 6은 호스트의 패킷 수신 예를 나타낸다.
도 5를 참조하면, 호스트는 호스트 컨트롤러를 포함하고, 호스트 내의 소프트웨어 모듈을 통해 생성된 각종 정보들이 호스트 메모리 내에 저장될 수 있다. 일 예로서, 하나 이상의 전송 요청들이 호스트 컨트롤러 내의 레지스터에 저장될 수 있으며, 전송 요청에 대응하는 전송 요청 디스크립터가 호스트 메모리 내의 일 영역(예컨대, 디스크립터 영역)에 저장될 수 있다. 전송 요청 디스크립터는 대응하는 응답 UPIU 및 PRDT(Physical Region Description Table) 정보와 함께 사용되기 위한 커맨드 UPIU를 생성하기 위해 이용될 수 있다. 또한, 커맨드 UPIU 및 응답 UPIU 등의 패킷 관련 정보와 PRDT 정보가 호스트 메모리 내의 다른 일 영역에 저장될 수 있다. PRDT 정보는 기록 데이터가 저장되거나 독출 데이터가 저장될 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 포함할 수 있다. 또한, 전술한 호스트 메모리 내에 저장되는 패킷 관련 정보는 커맨드 UPIU 정보, 응답 UPIU 정보 등으로 지칭될 것이다.
데이터 송수신을 위한 호스트 컨트롤러 인터페이스 동작이 시작되면, 호스트 컨트롤러는 그 내부의 레지스터에 저장된 전송 요청에 대응하는 전송 요청 디스크립터를 호스트 메모리에서 확인할 수 있다(S11). 또한, 호스트 컨트롤러는 전송 요청 디스크립터를 통해 데이터 기록 요청을 위한 커맨드 UPIU 정보 및 PRDT 정보를 확인할 수 있다(S12). 또한, 호스트 컨트롤러는 PRDT 정보를 통해 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(예컨대, 데이터 버퍼의 물리적 어드레스)를 포함하는 패킷을 생성할 수 있으며(S13), 생성된 패킷을 스토리지 장치로 전송할 수 있다(S14).
한편, 도 6을 참조하면, 호스트는 스토리지 장치로부터 패킷을 수신할 수 있으며(S21). 수신된 패킷은 호스트 내의 호스트 컨트롤러로 제공될 수 있다. 호스트 컨트롤러는 수신된 패킷에 포함되는 각종 정보를 파싱할 수 있다. 전술한 실시예에서와 동일 또는 유사하게, 스토리지 장치는 호스트로부터 제공된 커맨드 및 이에 대응하는 버퍼 어드레스를 저장 및 관리할 수 있으며, 스토리지 장치로부터 전송되는 다양한 종류의 패킷들 중 적어도 일부의 패킷에는 버퍼 어드레스가 포함될 수 있다.
호스트 컨트롤러는 수신된 패킷으로부터 버퍼 어드레스를 파싱할 수 있다(S22). 또한, 호스트 컨트롤러는 파싱된 버퍼 어드레스를 이용하여 호스트 메모리 내의 데이터 버퍼를 억세스할 수 있다(S23). 만약, 수신된 패킷이 기록 데이터의 전송을 요청하는 RTT UPIU에 해당할 때, 호스트 컨트롤러는 호스트 메모리에 저장된 PRDT 정보를 별도로 확인할 필요 없이, 파싱된 버퍼 어드레스에 대응하는 위치의 데이터 버퍼에 저장된 기록 데이터를 스토리지 장치로 전송할 수 있다. 또는, 수신된 패킷이 독출 데이터를 포함하는 DATA_IN UPIU에 해당할 때, 호스트 컨트롤러는 호스트 메모리에 저장된 PRDT 정보를 별도로 확인할 필요 없이, 패킷에 포함된 독출 데이터를 파싱된 버퍼 어드레스에 대응하는 위치의 데이터 버퍼에 저장할 수 있다.
도 7은 본 발명의 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
스토리지 장치는 호스트로부터 제1 패킷을 수신할 수 있다(S31). 일 실시예에 따라, 제1 패킷은 커맨드 UPIU에 해당할 수 있다. 상기 커맨드 UPIU는 데이터 기록 또는 독출 등의 데이터 억세스를 위한 커맨드를 포함할 수 있으며, 전술한 실시예에 따라 제1 패킷에는 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내거나 독출 데이터가 저장될 데이터 버퍼의 위치를 나타내는 버퍼 어드레스가 포함될 수 있다. 스토리지 장치는 수신된 제1 패킷으로부터 버퍼 어드레스를 파싱할 수 있으며(S32), 또한 제1 패킷에 포함된 커맨드 및 상기 파싱된 버퍼 어드레스를 그 내부의 저장 회로(예컨대, 커맨드 큐 및 어드레스 큐)에 저장 및 관리할 수 있다(S33).
스토리지 장치는 수신된 제1 패킷에 응답하여 제2 패킷을 생성하고 이를 호스트로 전송할 수 있다. 일 예로서, 제1 패킷으로부터 파싱된 버퍼 어드레스가 제1 패킷에 응답하여 생성되는 제2 패킷에 포함될 수 있다(S34). 일 예로서, 데이터 기록 동작시 스토리지 장치는 기록 데이터의 수신 준비가 완료되었음을 나타내는 RTT UPIU를 제2 패킷으로서 생성할 수 있으며, 상기 버퍼 어드레스가 RTT UPIU에 포함될 수 있다. 또는, 데이터 독출 동작시 스토리지 장치는 독출 데이터를 포함하는 DATA_IN UPIU를 제2 패킷으로서 생성할 수 있으며, 상기 버퍼 어드레스가 DATA_IN UPIU에 포함될 수 있다. 스토리지 장치는 버퍼 어드레스가 포함된 제2 패킷을 호스트로 전송할 수 있다(S35).
도 8 및 도 9a,b는 호스트 메모리 및 호스트 컨트롤러 내의 레지스터에 저장되는 각종 정보의 일 예를 나타내는 블록도이다.
도 8을 참조하면, 호스트(400)는 호스트 메모리(410) 및 레지스터(420)를 포함하고, 레지스터(420)는 호스트 컨트롤러 내부에 구비되는 구성이고, 호스트 메모리(410)는 호스트 컨트롤러의 외부에 배치될 수 있다. 스토리지 장치에 대한 데이터 관리를 위하여 JEDEC UFS 표준들에서 정의된 각종 커맨드 및 파라미터들이 호스트 메모리(410) 및 레지스터(420)에 저장될 수 있다. 호스트 메모리(410)의 디스크립터 영역에는 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)가 저장되고, 호스트 메모리(410)의 다른 일 영역에는 UPIU 정보 및 대응하는 PRDT 정보가 저장될 수 있다. 또한, UTP 전송 요청 디스크립터들은 레지스터(420)에 저장된 UTP 전송 요청(UTP Transfer Request)을 통해 호스트 메모리(410)에 저장되거나 호스트 메모리(410)에서 확인될 수 있다.
또한, 호스트 메모리(410)의 버퍼 영역에 포함되는 다수의 데이터 버퍼들에는 기록 데이터 및 독출 데이터가 저장되고, PRDT 정보는 데이터 버퍼의 물리적 어드레스로서 버퍼 어드레스를 포함할 수 있다. 또한, 일부의 커맨드 UPIU에 대해서는 PRDT 정보가 저장되지 않을 수 있으며, 일 예로서 데이터 버퍼의 억세스에 무관한 커맨드 UPIU에 대해서는 PRDT 정보가 저장되지 않을 수 있다.
이와 함께, 도 8에서는 JEDEC UFS 표준들에서 정의되는 다른 다양한 정보들이 더 도시된다. 일 예로, UTP 태스크 관리 요청 리스트가 호스트 메모리(410)의 일 영역에 더 저장될 수 있으며, 일 예로 태스크 관리 요청 UPIU 및 태스크 관리 응답 UPIU가 호스트 메모리(410)의 일 영역에 저장될 수 있다. 또한, 상기 태스크 관리 요청 리스트는 레지스터(420)에 저장된 UTP 태스크 관리 요청을 통해 메모리(410)에 저장될 수 있다. 이외에도, 레지스터(420)에는 JEDEC UFS 표준들에서 정의되는 다른 컴포넌트들이 더 도시되며, 예컨대 호스트 제어기 능력(Host Controller Capabilities), 인터럽트 및 호스트 상태 표시자(Interrupt and host status), UFS 인터커넥트(UIC) 커맨드(UIC Command) 및 벤더 특정 값(Vendor Specific)들이 레지스터(420)에 저장될 수 있다.
도 9a,b는 일반적인 경우와 본 발명의 실시예에 따라 호스트 메모리에 대한 억세스 빈도를 비교한 블록도이다. 도 9a,b에서는 호스트가 스토리지 장치로부터 전송된 패킷에 따른 동작을 수행하는 예가 도시된다.
도 9a에서는 일반적인 포맷에 따른 패킷을 처리하는 예가 도시된다. 도 9a를 참조하면, 호스트 컨트롤러 내의 레지스터(420)에는 하나 이상의 UTP 전송 요청들이 저장되고, 일 예로서 제1 전송 요청(Transfer Request 0)은 데이터 기록 요청에 해당하고 제3 전송 요청(Transfer Request 2)은 데이터 독출 요청에 해당할 수 있다. 호스트 컨트롤러는 제1 전송 요청(Transfer Request 0)에 대응하여 스토리지 장치로부터 RTT UPIU를 수신할 수 있다. 또한, 호스트 컨트롤러는 제3 전송 요청(Transfer Request 2)에 대응하여 스토리지 장치로부터 DATA_IN UPIU를 수신할 수 있다.
스토리지 장치로부터 전송되는 패킷에는 헤더 정보가 저장된 헤더 영역이 포함될 수 있으며, RTT UPIU의 헤더 정보는 데이터 기록 동작을 위해 전송받고자 하는 데이터의 사이즈 및 오프셋(Offset) 정보를 포함할 수 있다. 호스트 컨트롤러는 RTT UPIU의 헤더 정보 내의 적어도 일부의 정보 값을 이용한 처리 동작을 수행할 수 있다. 예컨대, 호스트 컨트롤러는 RTT UPIU의 헤더 정보 내의 LUN(Logical Unit Number) 및 TAG(identifier) 정보를 참조함으로써 대응하는 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)를 확인하기 위해 호스트 메모리를 억세스한다. 또한, 호스트 컨트롤러는 UTP 전송 요청 디스크립터를 통해 판단된 위치에서 호스트 메모리를 억세스함으로써 PRDT의 정보를 확인한다. 또한, 확인된 PRDT의 정보(예컨대, 버퍼 어드레스)를 통해 데이터 버퍼를 억세스하고, 데이터 버퍼에 저장된 데이터를 스토리지 장치로 전송할 수 있다.
한편, DATA_IN UPIU이 수신된 경우, 호스트 컨트롤러는 DATA_IN UPIU의 헤더 정보로부터 대응하는 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)를 확인하기 위해 호스트 메모리를 억세스하고, 또한 이에 대응하는 PRDT의 정보를 확인하기 위해 호스트 메모리를 억세스할 수 있다. 그리고, DATA_IN UPIU에 포함된 독출 데이터는 확인된 PRDT의 정보에 대응하는 데이터 버퍼에 저장될 수 있다.
상기와 같은 방식에 따르면, 데이터 처리 동작을 위해 호스트 메모리를 억세스하는 횟수가 상대적으로 많다. 예컨대, 수신된 RTT UPIU를 처리하기 위해서 호스트 컨트롤러는 전송 요청 디스크립터 및 PRDT 정보의 확인을 위해 호스트 메모리를 두 번 억세스함과 함께, 기록 데이터를 읽기 위해 호스트 메모리를 한 번 억세스하며, 이에 따라 총 3 회의 호스트 메모리의 억세스가 필요로 된다. 이 경우, 호스트 컨트롤러는 호스트 내의 다른 구성들(예컨대, 디스플레이 인터페이스, 카메라 인터페이스 및 모뎀 등)에 비해 호스트 메모리에 대한 우선 순위가 낮음에 따라 데이터 처리에 있어서 오버헤드가 증가하게 된다.
한편, 본 발명의 예시적인 실시예에 따르면, 도 9b에 도시된 바와 같이 호스트는 제1 전송 요청(Transfer Request 0)을 전송하고 이에 응답하여 RTT UPIU를 수신할 수 있다. 호스트는 수신된 RTT UPIU로부터 버퍼 어드레스를 파싱하고, 파싱된 버퍼 어드레스가 나타내는 데이터 버퍼에 저장된 데이터를 스토리지 장치로 전송할 수 있다. 즉, 본 발명의 실시예에 따르면, 호스트 컨트롤러가 RTT UPIU의 수신에 응답하여 PRDT 정보를 확인하기 위한 호스트 메모리의 억세스 동작이 제거될 수 있다.
이와 유사하게, 호스트가 DATA_IN UPIU를 수신하는 경우, 호스트 컨트롤러는 독출 데이터가 저장될 데이터 버퍼의 위치를 판단하기 위해 호스트 메모리의 PRDT의 정보를 확인하기 위한 억세스 동작이 수행될 필요가 없다. 일 예로서, 수신된 DATA_IN UPIU의 헤더 정보를 통해 UTP 전송 요청 디스크립터를 확인하여 요청의 종류를 판단하고, 또한 수신된 DATA_IN UPIU 로부터 파싱된 버퍼 어드레스를 이용하여, 상기 파싱된 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 독출 데이터를 저장할 수 있다.
상기와 같은 본 발명의 실시예에 따르면, 호스트 메모리를 억세스하는 빈도가 감소되고, 이에 따라 데이터 처리 속도가 향상될 수 있다. 데이터 기록 동작을 예로 들면, 스토리지 장치 내에서의 데이터 기록 단위에 따라 하나의 커맨드 UPIU에 응답하여 다수 개의 RTT UPIU가 순차적으로 호스트로 전송될 수 있으며, 이 때 각각의 RTT UPIU의 수신에 대응하여 PRDT의 정보를 별도로 확인하기 위한 호스트 메모리의 억세스 없이 데이터 처리가 수행될 수 있다.
도 10 및 도 11a,b는 UFS 인터페이스에 따른 데이터 독출 동작 및 패킷의 일 구현 예를 나타내는 도면이다.
도 10을 참조하면, 데이터 독출 요청을 위한 커맨드 UPIU(CMD UPIU)가 호스트에서 스토리지 장치로 전송되고, 본 발명의 실시예에 따라 데이터 독출 요청을 위한 CMD UPIU 에 버퍼 어드레스(또는, 데이터 버퍼의 물리적 어드레스(PA))가 포함될 수 있다. 스토리지 장치는 데이터 독출 요청을 위한 커맨드 UPIU에 응답하여 메모리 코어로부터 데이터를 독출하고, 앞서 커맨드 UPIU으로부터 파싱된 물리적 어드레스(PA)와 함께 독출 데이터를 포함하는 DATA_IN UPIU를 호스트로 전송할 수 있다. 또한, 스토리지 장치는 커맨드 UPIU에 대응하는 동작을 완료하였음을 나타내는 응답 UPIU(Response UPIU)를 호스트로 전송할 수 있다. 전술한 실시예들에 따라, 호스트는 DATA_IN UPIU 로부터 파싱된 물리적 어드레스(PA)가 나타내는 위치의 데이터 버퍼에 독출 데이터를 저장할 수 있다.
한편, 전술한 커맨드 UPIU 및 DATA_IN UPIU의 패킷 구조는 도 11a,b에 도시된 바와 같이 구현될 수 있다. 도 11a,b에서는 기존의 헤더 영역에 버퍼 어드레스가 포함되는 예가 도시되며, 도 11a는 커맨드 UPIU, 도 11b는 DATA_IN UPIU의 구조를 나타낸다.
도 11a를 참조하면, 커맨드 UPIU의 헤더 영역(H)은 예비 영역(Reserved)을 포함하고, 상기 예비 영역 중 일부에 본 발명의 실시예들에 따른 버퍼 어드레스 및 이에 관련된 정보가 포함될 수 있다. 일 예로서, 호스트 메모리의 버퍼 어드레스(Host Memory Buffer Address)가 예비 영역에 포함됨과 함께, 상기 커맨드 UPIU에 버퍼 어드레스가 포함되었음을 나타내는 정보(CWA)와, 버퍼 어드레스가 저장된 영역의 크기(또는, 버퍼 어드레스 및 관련 정보가 저장된 영역의 크기)를 나타내는 정보(CWA_LENGTH)가 상기 예비 영역에 더 포함될 수 있다.
한편, 도 11b를 참조하면, DATA_IN UPIU은 헤더 영역(H)과 데이터(DatA)를 포함하는 페이로드(Payload) 영역을 포함하고, 헤더 영역(H)은 예비 영역(Reserved)을 포함할 수 있다. 또한, 상기 예비 영역의 적어도 일부에 호스트 메모리의 버퍼 어드레스 및 이에 관련된 정보가 포함될 수 있다. 도 11b에 도시된 예비 영역에 포함되는 정보는 도 11a에 도시된 바와 동일 또는 유사하므로 이에 대한 자세한 설명은 생략된다.
도 12 및 도 13은 UFS 인터페이스에 따른 데이터 기록 동작 및 패킷의 일 구현 예를 나타내는 도면이다.
도 12를 참조하면, 데이터 기록 요청을 위한 커맨드 UPIU(CMD UPIU)가 호스트에서 스토리지 장치로 전송되고, 호스트 내에서 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내는 데이터 버퍼의 물리적 어드레스(PA)가 커맨드 UPIU에 포함될 수 있다. 스토리지 장치는 데이터 기록 요청을 위한 커맨드 UPIU에 응답하여 기록 데이터의 수신 준비가 완료되었음을 나타내는 하나 이상의 RTT UPIU를 호스트로 전송할 수 있다. 일 예로서, 기록 요청되는 기록 데이터의 사이즈와 스토리지 장치의 데이터 기록 단위에 따라 다수 개의 RTT UPIU들이 호스트로 전송될 수 있다.
일 예로서, 제1 RTT UPIU(RTT UPIU_1)가 스토리지 장치로부터 호스트로 전송되며, 상기 제1 RTT UPIU에는 첫 번째로 전송될 기록 단위의 데이터가 저장된 데이터 버퍼의 위치를 나타내는 제1 물리적 어드레스(PA_1)가 포함될 수 있다. 호스트는 제1 RTT UPIU로부터 파싱된 제1 물리적 어드레스(PA_1)를 이용하여 호스트 내의 데이터 버퍼의 위치를 판단하고, 판단된 데이터 버퍼에 저장된 데이터를 기록 데이터로서 스토리지 장치로 전송할 수 있다. 일 예로서, 호스트는 기록 데이터가 포함된 DATA_OUT UPIU를 스토리지 장치로 전송할 수 있다.
또한, 스토리지 장치는 제2 RTT UPIU(RTT UPIU_2)를 호스트로 전송하며, 상기 제2 RTT UPIU에는 두 번째로 전송될 기록 단위의 데이터가 저장된 데이터 버퍼의 위치를 나타내는 제2 물리적 어드레스(PA_2)가 포함될 수 있다. 호스트는 제2 RTT UPIU로부터 제2 물리적 어드레스(PA_2)를 파싱하고, 제2 물리적 어드레스(PA_2)가 나타내는 위치의 데이터 버퍼에 저장된 데이터를 스토리지 장치로 전송할 수 있다. 이와 같은 동작이 반복됨에 따라 기록 요청되는 데이터가 모두 스토리지 장치로 전송되며, 기록 데이터에 대한 기록 동작이 완료되면 스토리지 장치는 커맨드 UPIU에 대응하는 동작을 완료하였음을 나타내는 응답 UPIU(Response UPIU)를 호스트로 전송할 수 있다.
도 13은 전술한 RTT UPIU의 패킷 구조의 일 예를 나타내며, 또한 기존의 헤더 영역에 버퍼 어드레스가 포함되는 예가 도시된다. 도 13에서는 하나의 커맨드 UPIU에 응답하여 전송되는 다수의 RTT UPIU 들 중 제1 RTT UPIU(RTT UPIU_1)가 도시되며, 다른 RTT UPIU들 또한 도 13에 도시된 바와 동일 또는 유사하게 구현될 수 있다.
도 13을 참조하면, RTT UPIU의 헤더 영역(H)은 예비 영역(Reserved)을 포함하고, 상기 예비 영역의 적어도 일부에는 기록 단위의 데이터가 저장된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스가 포함됨과 함께, 버퍼 어드레스가 포함되었음을 나타내는 정보(CWA)와, 버퍼 어드레스가 저장된 영역의 크기를 나타내는 정보(CWA_LENGTH)가 상기 예비 영역에 더 포함될 수 있다. 제1 RTT UPIU의 전송이 완료된 후 그 다음의 RTT UPIU(예컨대, 제2 (RTT UPIU_2))가 호스트로 전송될 수 있으며, 이 때 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스의 값은 변동될 수 있다.
도 14는 UFS 인터페이스에서 정의되는 다양한 종류의 패킷들에 본 발명의 실시예가 적용되는 예를 나타내는 도면이다.
일 예로서, 호스트는 스토리지 장치로 다수의 UPIU들을 순차적으로 전송할 수 있으며, 도 14에는 기록 요청을 위한 커맨드 UPIU(CMD UPIU 1), 독출 요청을 위한 커맨드 UPIU(CMD UPIU 2,4,5,6) 및 태스크 관리 요청을 위한 UPIU(TMF_REQ UPIU 3) 등이 전송되는 예가 도시된다. 전술한 실시예에 따라, UFS 인터페이스에서 스토리지 장치에 대한 데이터 기록 및 독출 동작시 호스트 내의 데이터 버퍼의 억세스 동작이 요구로 되며, 이에 따라 상기 커맨드 UPIU들(CMD UPIU 1,2,4,5,6)에는 버퍼 어드레스(PA)가 포함될 수 있다. 스토리지 장치는 상기 커맨드 UPIU들(CMD UPIU 1,2,4,5,6)로부터 버퍼 어드레스(PA)를 파싱하고, 이를 저장 및 관리할 수 있다.
또한, 스토리지 장치는 수신된 요청에 대응하는 UPIU를 생성하여 이를 호스트로 전송하며, 도 14에는 일 예로서 하나 이상의 RTT UPIU(RTT UPIU(1)_0, RTT UPIU(1)_1)와 독출 데이터를 포함하는 UPIU(DATA_IN UPIU(2))가 예시된다. 상기 RTT UPIU에 응답하는 동작이나 DATA_IN UPIU에 응답하는 동작에서는 호스트 내에서 데이터 버퍼의 억세스가 요구로 되므로, 상기 RTT UPIU와 DATA_IN UPIU 각각에는 버퍼 어드레스(PA)가 포함될 수 있다.
한편, 호스트는 상기한 RTT UPIU에 응답하여 기록 데이터를 포함하는 UPIU(DATA_OUT UPIU(1)_0)를 스토리지 장치로 전송할 수 있다. 또한, 호스트는 태스크 관리 요청 UPIU(TMF_REQ UPIU 3)을 스토리지 장치로 전송할 수 있다. 스토리지 장치는 태스크 관리 요청 UPIU(TMF_REQ UPIU 3)에 응답하여 그 내부에 저장된 커맨드들에 대한 관리 동작을 수행할 수 있다. 또한, 스토리지 장치는 태스크 관리 요청 UPIU(TMF_REQ UPIU 3)에 응답하여 커맨드 관리 동작이 완료되었음을 나타내는 태스크 관리 응답 UPIU(TMF_RESP UPIU(3))를 호스트로 전송할 수 있다.
상기와 같은 호스트로부터의 DATA_OUT UPIU 및 TMF_REQ UPIU 와 스토리지 장치로부터의 TMF_RESP UPIU 등은 호스트 내의 데이터 버퍼를 억세스하는 동작과는 무관한 UPIU들로서, 전술한 실시예들에 따른 버퍼 어드레스는 상기 UPIU들에 포함되지 않을 수 있다. 이에 따라, UFS 인터페이스를 통해 송수신되는 다양한 종류의 패킷들과 관련하여, 일부 종류의 패킷에서 페이로드(Payload)를 제외한 영역의 사이즈는 다른 종류의 패킷에서 페이로드를 제외한 영역의 사이즈와 다를 수 있다
도 15는 본 발명의 예시적인 실시예에 따라 버퍼 어드레스를 관리하는 스토리지 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 15를 참조하면, 스토리지 컨트롤러(500)는 제어 회로(510), 호스트 인터페이스(520), 메모리 인터페이스(530), 커맨드/어드레스 큐(541, 542) 및 데이터 버퍼(550)를 포함할 수 있다. 도 15에 도시된 스토리지 컨트롤러(500)의 동작을 설명함에 있어서 전술한 도 3에서 설명되었던 동작과 동일 및 유사한 부분에 대해서는 구체적인 설명이 생략된다. 데이터 버퍼(550)는 기록 데이터(DATA_W)와 독출 데이터(DATA_R)를 임시적으로 저장할 수 있다.
제어 회로(510)는 UFS 인터페이스 프로토콜에 따라 메모리 코어에 대한 데이터 기록 및 독출 동작을 제어하는 다양한 구성들을 포함할 수 있다. 일 실시예에 따라 제어 회로(510)는 호스트 컨트롤러(511)를 포함할 수 있으며, 호스트 컨트롤러(511)는 패킷 판단기(511_1)를 포함할 수 있다. 일 실시예에 따라, 호스트 컨트롤러(511)는 UTP 프로세스를 위한 UTP 프로토콜 엔진(미도시)을 더 포함할 수 있다. 호스트 컨트롤러(511)는 전술한 실시예에 따라 패킷을 생성하거나 수신된 패킷으로부터 각종 정보들을 파싱할 수 있다.
파싱된 커맨드 및 버퍼 어드레스(CMD/ADD_Buf)는 제어 회로(510)의 제어에 기반하여 커맨드/어드레스 큐(541, 542)에 저장 및 관리될 수 있다. 또한, 어드레스 큐(542)로부터 버퍼 어드레스(ADD_Buf)가 독출되어 호스트 컨트롤러(511)로 제공될 수 있으며, 버퍼 어드레스(ADD_Buf)가 포함된 패킷이 생성될 수 있다. 또한, 패킷 판단기(511_1)는 호스트로 전송될 패킷이 호스트 메모리의 데이터 버퍼를 억세스를 필요로하는 종류의 패킷인지를 판단할 수 있으며, 판단 결과에 따라 어드레스 큐(542)가 선택적으로 억세스될 수 있다.
도 16은 도 15의 스토리지 컨트롤러의 일 동작방법을 나타내는 플로우차트이다.
도 16을 참조하면, 스토리지 장치는 전술한 실시예들에 따라 호스트로부터 전송된 패킷들로부터 버퍼 어드레스를 파싱하고, 파싱된 버퍼 어드레스를 저장 및 관리한다(S41).
이후, 스토리지 장치는 호스트로부터 전송된 다수의 요청들에 대한 처리를 수행하고, 처리 결과에 따른 패킷들을 호스트로 전송한다. 또한, 처리 결과에 따른 패킷들을 생성함에 있어서, 스토리지 장치는 생성될 패킷의 종류를 확인하고(S42), 판단 결과에 따라 상기 생성될 패킷이 호스트 내의 데이터 버퍼의 억세스를 요구로 하는 패킷인지를 판단한다(S43).
판단 결과에 따라, 호스트 내의 데이터 버퍼를 억세스하지 않는 패킷에 해당하는 경우에는, 스토리지 장치 내의 어드레스 큐에 저장된 정보를 억세스함이 없이 패킷이 생성될 수 있다. 반면에, 호스트 내의 데이터 버퍼를 억세스하는 패킷에 해당하는 것으로 판단된 경우에는 스토리지 장치 내의 어드레스 큐에 저장된 버퍼 어드레스를 독출하고(S44), 독출된 버퍼 어드레스를 포함하는 패킷을 생성하여 호스트로 전송할 수 있다(S45).
도 17a,b,c는 하나의 커맨드 UPIU에 응답하여 다수의 RTT UPIU들이 전송되는 경우에서의 스토리지 시스템의 동작 예를 나타내는 블록도이다. 일 예로서, 하나의 커맨드 UPIU에 응답하여 4 개의 RTT UPIU들이 전송되는 예가 도시된다.
도 17a를 참조하면, 스토리지 시스템(600A)은 호스트(610A) 및 스토리지 장치(620A)를 포함하고, 호스트(610A)는 호스트 컨트롤러(611A)를 포함하며, 호스트 컨트롤러(611A)는 어드레스 계산기(611A_1)를 포함할 수 있다. 또한, 스토리지 장치(620A)는 스토리지 컨트롤러(621A) 및 메모리 코어(622A)를 포함할 수 있다.
커맨드 UPIU(CMD UPIU)에는 기록 데이터가 저장된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스(ADD_Buf 1)가 포함되고, 스토리지 시스템(600A)은 이와 동일한 버퍼 어드레스(ADD_Buf 1)를 4 개의 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4)에 각각에 포함시킬 수 있다. 4 개의 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4) 각각에 대한 기록 데이터가 저장된 데이터 버퍼의 위치는 상이할 수 있으며, 호스트(610A) 내의 어드레스 계산기(611A_1)는 버퍼 어드레스(ADD_Buf 1)로부터 4 개의 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4) 각각에 대한 데이터 버퍼의 위치를 나타내는 버퍼 어드레스들(ADD_Buf 1_1 ~ ADD_Buf 1_4)을 산출할 수 있다. 상기 산출 동작은 RTT UPIU에 포함된 버퍼 어드레스(ADD_Buf 1)와 함께 전술한 헤더 정보를 이용하여 산출될 수 있을 것이다.
도 17b에서는 전술한 실시예에서의 어드레스 계산 동작이 스토리지 장치 내에서 수행되는 예가 도시된다. 도 17b을 참조하면, 스토리지 시스템(600B)은 호스트(610B) 및 스토리지 장치(620B)를 포함하고, 호스트(610B)는 호스트 컨트롤러(611B)를 포함한다. 또한, 스토리지 장치(620B)는 스토리지 컨트롤러(621B) 및 메모리 코어(622B)를 포함하고, 스토리지 컨트롤러(621B)는 어드레스 계산기(621B_1)를 포함할 수 있다.
스토리지 컨트롤러(621B)는 버퍼 어드레스(ADD_Buf 1)가 포함된 커맨드 UPIU(CMD UPIU)를 수신하고, 기록 단위를 고려하여 4 개의 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4)을 순차적으로 호스트(610B)로 전송할 수 있다. 스토리지 컨트롤러(621B) 내의 어드레스 계산기(621B_1)는 기록 단위의 사이즈 및 파싱된 버퍼 어드레스(ADD_Buf 1)를 이용하여 전술한 실시에에서의 버퍼 어드레스들(ADD_Buf 1_1 ~ ADD_Buf 1_4)을 산출할 수 있다. 일 실시예에 따라, 제1 RTT UPIU(RTT UPIU_1)에는 제1 버퍼 어드레스(ADD_Buf 1_1)가 포함되고, 제4 RTT UPIU(RTT UPIU_4)에는 제4 버퍼 어드레스(ADD_Buf 1_4)가 포함될 수 있다.
한편, 도 17c에서는 기록 단위의 사이즈를 고려하여 호스트가 다수의 버퍼 어드레스들을 스토리지 장치로 전송하는 예가 도시된다. 도 17c를 참조하면, 스토리지 시스템(600C)은 호스트(610C) 및 스토리지 장치(620C)를 포함하고, 호스트(610C)는 호스트 컨트롤러(611C)를 포함한다. 또한, 스토리지 장치(620C)는 스토리지 컨트롤러(621C) 및 메모리 코어(622C)를 포함할 수 있다.
호스트(610C)는 스토리지 장치(620C)의 기록 단위의 사이즈를 고려하여, 하나의 커맨드 UPIU(CMD UPIU)에 다수 개의 버퍼 어드레스들(ADD_Buf 1_1 ~ ADD_Buf 1_4)을 포함시킬 수 있다. 스토리지 장치(620C)는 수신된 다수 개의 버퍼 어드레스들(ADD_Buf 1_1 ~ ADD_Buf 1_4)을 저장 및 관리할 수 있다.
또한, 스토리지 장치(620C)는 4 개의 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4)을 순차적으로 호스트(610C)로 전송하며, 각각의 RTT UPIU에 서로 다른 버퍼 어드레스를 포함시킬 수 있다. 일 예로서, 제1 RTT UPIU(RTT UPIU_1)에는 제1 버퍼 어드레스(ADD_Buf 1_1)가 포함되고, 제4 RTT UPIU(RTT UPIU_4)에는 제4 버퍼 어드레스(ADD_Buf 1_4)가 포함될 수 있다.
도 18은 본 발명의 예시적인 실시예들에 따른 패킷의 구조를 나타내는 도면이다. 도 18에서는 버퍼 어드레스가 포함되는 제1 종류의 패킷과 버퍼 어드레스가 포함되지 않는 제2 종류의 패킷이 도시되며, 또한 버퍼 어드레스는 추가 헤더 영역(extra header segment, EHS)에 포함되는 예가 도시된다.
도 18의 (a)를 참조하면, 제1 종류의 패킷은 헤더 영역(H), 추가 헤더 영역(EHS)과 페이로드(Payload) 영역을 포함할 수 있다. 헤더 영역(H)에는 각종 헤더 정보가 포함될 수 있으며, 추가 헤더 영역(EHS)에는 호스트 메모리 내의 데이터 버퍼의 물리적 어드레스(PA)에 해당하는 버퍼 어드레스가 포함될 수 있다. 일 실시예에 따라, 추가 헤더 영역(EHS)에는 본 발명의 실시예들에 따른 버퍼 어드레스 이외에도 스토리지 장치에 대한 데이터 관리를 위한 다른 다양한 종류의 정보다 더 포함될 수도 있을 것이다.
UFS 인터페이스를 예로 들면, 패킷의 헤더 영역(H)은 일정한 사이즈를 가질 수 있으며, 예컨대 상기 헤더 영역(H)은 32 Byte의 사이즈를 가질 수 있다. 상기 헤더 영역(Header)은 LUN(Logical Unit Number), TAG, Flags, Command Set Type 등 다양한 정보를 갖는 필드들을 포함할 수 있다. 또한, 추가 헤더 영역(EHS)의 사이즈는 다양하게 설정될 수 있으며, 일 실시예에 따라 추가 헤더 영역(EHS)의 사이즈에 관련된 정보는 헤더 영역(H)의 어느 하나의 필드에 포함될 수 있다. 도 18의 (a)의 예에서는 추가 헤더 영역(EHS)의 사이즈가 α Byte로 예시된다.
도 18의 (b)에 도시된 제2 종류의 패킷에는 추가 헤더 영역(EHS)이 포함되지 않으며, 이에 따라 제2 종류의 패킷에서 페이로드를 제외한 나머지 영역의 사이즈는 32 Byte로 고정될 수 있다. 반면에, 제1 종류의 패킷에서 페이로드를 제외한 나머지 영역의 사이즈는 32 Byte보다 큰 다양한 사이즈를 가질 수 있으며, 이에 따라 본 발명의 실시예에서는 서로 다른 종류의 패킷에서 페이로드를 제외한 나머지 영역의 사이즈는 서로 다를 수 있다.
도 19 내지 도 25는 본 발명의 실시예에 따라 생성되는 패킷의 다양한 구조들의 예를 나타내는 도면이다. 도 19 내지 도 25에서는 버퍼 어드레스가 패킷의 추가 헤더 영역(EHS)에 포함되는 것으로 가정된다. 또한, 용어를 정의하는 일 예로서, 헤더 영역(EHS)에는 다수의 필드들(EHS Field)이 포함되고, 상기 필드들은 헤더 정보 필드(EHS Header) 및 데이터 필드(EHS Data)를 포함할 수 있다.
도 19는 데이터 기록을 위한 커맨드 UPIU의 일 구현 예를 나타내며, 도 19에 도시된 바와 같이 커맨드 UPIU는 헤더 영역(H)과 추가 헤더 영역(EHS)을 포함할 수 있다. 헤더 영역(H)에는 추가 헤더 영역(EHS)의 전체 길이(Total EHS Length)에 관련된 정보가 포함될 수 있으며, 또한 요구되는 데이터 전송 길이에 관련된 정보(Expected Data Transfer Length)가 포함될 수 있다.
한편, 추가 헤더 영역(EHS)에는 추가 헤더 영역(EHS)의 타입 정보(EHS_TYPE), 추가 헤더 영역(EHS)의 길이 정보(EHS_LENGTH)가 포함될 수 있다. 추가 헤더 영역(EHS)의 타입 정보(EHS_TYPE)는 다양한 값으로 설정될 수 있으며, 만약 특정 값(예컨대, 2h)로 설정되면 추가 헤더 영역(EHS)에 버퍼 어드레스가 포함되어 있음을 나타낼 수 있다. 또한 도 19에는, 기록 데이터가 저장된 데이터 버퍼의 물리적 어드레스에 해당하는 버퍼 어드레스가 "0x40C0_0000"에 해당하는 예가 도시된다.
도 20a,b에는 도 19의 커맨드 UPIU에 대응하는 RTT UPIU들의 일 예가 도시된다. 도 20a의 UPIU는 제1 RTT UPIU(RTT UPIU_1)를 나타내고 도 20b의 UPIU는 제2 RTT UPIU(RTT UPIU_2)를 나타낸다. 도시되지는 않았으나, 기록 단위의 사이즈에 따라 추가의 RTT UPIU 들이 호스트로 더 전송될 수도 있을 것이다.
도 20a,b를 참조하면, 제1 및 제2 RTT UPIU(RTT UPIU_1, RTT UPIU_2) 각각은 헤더 영역(H)과 추가 헤더 영역(EHS)을 포함하고, 헤더 영역(H)은 데이터 버퍼 오프셋 및 데이터 전송 카운트 정보를 포함할 수 있다. 또한, 제1 및 제2 RTT UPIU(RTT UPIU_1, RTT UPIU_2)의 추가 헤더 영역(EHS)은 서로 동일한 값의 버퍼 어드레스(예컨대, 0x40C0_0000)를 포함할 수 있다.
호스트는 제1 및 제2 RTT UPIU(RTT UPIU_1, RTT UPIU_2) 각각의 헤더 영역(H)과 추가 헤더 영역(EHS)의 정보를 이용하여 기록 데이터가 저장된 데이터 버퍼의 위치를 판단할 수 있다. 예컨대, 호스트는 데이터 버퍼 오프셋, 데이터 전송 카운트 정보 및 버퍼 어드레스를 이용하여 데이터 버퍼의 위치를 판단하고, 이에 대응하는 기록 데이터를 스토리지 장치로 전송할 수 있다.
도 21a,b에는 도 19의 커맨드 UPIU에 대응하는 RTT UPIU들의 다른 일 예가 도시된다. 도 21a의 UPIU는 제1 RTT UPIU(RTT UPIU_1)를 나타내고 도 20b의 UPIU는 제2 RTT UPIU(RTT UPIU_2)를 나타낸다. 전술한 도 20a,b에서 설명된 내용과 중복되는 내용은 구체적인 설명이 생략된다.
도 19 및 도 21a,b를 참조하면, 스토리지 장치는 커맨드 UPIU에 포함된 버퍼 어드레스(예컨대, 0x40C0_0000)를 이용하여 다수의 버퍼 어드레스들을 산출하고, 이를 다수의 RTT UPIU들에 포함시킬 수 있다. 일 예로서, 다수의 RTT UPIU들에는 서로 다른 값을 갖는 버퍼 어드레스가 포함될 수 있으며, 제1 RTT UPIU(RTT UPIU_1)에는 "0x40C0_0000"에 해당하는 버퍼 어드레스가 포함되고, 제2 RTT UPIU(RTT UPIU_2)에는 "0x40C0_8000"에 해당하는 버퍼 어드레스가 포함되는 예가 도시된다. 도 21a,b에 도시된 실시예에 따르면, 호스트는 RTT UPIU에 포함된 버퍼 어드레스에 대해 별도의 산출 동작을 수행할 필요가 없이, RTT UPIU에 포함된 버퍼 어드레스가 지시하는 위치의 데이터 버퍼를 직접 억세스할 수 있을 것이다.
도 22 내지 도 25에서는 호스트가 하나의 커맨드 UPIU에 다수의 버퍼 어드레스들을 포함시키는 예가 도시된다. 일 예로서, 도 22 내지 도 25의 실시예는 기록 요청되는 다수의 기록 단위의 데이터들이 버퍼 영역에서 서로 연속하게 위치하거나 불연속하게 위치하는 경우에 적용될 수 있으며, 바람직하게는 불연속하게 위치하는 경우에 적용될 수 있을 것이다. 또한, 도 22 내지 도 25에서 헤더 영역(H)의 구조 및 정보는 전술한 실시예들에서와 동일 또는 유사하므로 그 도시는 생략될 것이다.
도 22를 참조하면, 커맨드 UPIU에 포함되는 추가 헤더 영역(EHS)은 EHS 헤더 정보(EHS Header)와 EHS 데이터(EHS Data) 필드를 포함하고, EHS 헤더 정보(EHS Header)는 전술한 바와 같이 타입 정보(EHS_TYPE), 길이 정보(EHS_LENGTH) 등을 포함할 수 있다. 또한, 하나의 커맨드 UPIU에 대응하여 4 회의 기록 단위의 사이즈에 해당하는 데이터가 호스트에서 스토리지 장치로 전송될 때, 상기 기록 단위의 사이즈의 데이터들이 위치한 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)이 추가 헤더 영역(EHS)에 포함될 수 있다. 스토리지 장치는 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)을 저장 및 관리할 수 있다.
한편, 도 23a,b에는 스토리지 장치가 전송하는 RTT UPIU들이 도시되며, 일 예로서 도 23a에는 제1 RTT UPIU(RTT UPIU_1)가 도시되고 도 23b에는 제4 RTT UPIU(RTT UPIU_4)가 도시된다. 도 23a을 참조하면, 제1 RTT UPIU(RTT UPIU_1)의 추가 헤더 영역(EHS)은 제1 버퍼 어드레스(Buffer Address1_1)를 포함하고, 호스트는 제1 RTT UPIU(RTT UPIU_1)로부터 제1 버퍼 어드레스(Buffer Address1_1)를 파싱하고, 이에 대응하는 기록 단위의 사이즈에 해당하는 데이터를 스토리지 장치로 전송할 수 있다. 또한, 도 23b를 참조하면, 제4 RTT UPIU(RTT UPIU_4)의 추가 헤더 영역(EHS)은 제1 버퍼 어드레스(Buffer Address1_1)와는 다른 값을 갖는 제4 버퍼 어드레스(Buffer Address1_4)를 포함하고, 호스트는 제4 버퍼 어드레스(Buffer Address1_4)에 대응하는 데이터를 스토리지 장치로 전송할 수 있다.
한편, 도 24는 변형 가능한 실시예로서 RTT UPIU가 제1 내지 제4 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)을 함께 포함하는 예가 도시된다. 일 예로서, 제1 내지 제4 RTT UPIU들(RTT UPIU_1 ~ RTT UPIU_4) 각각에는 1 내지 제4 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)이 함께 포함될 수 있으며, 호스트는 헤더 영역의 정보를 참조하여 다수의 버퍼 어드레스들 중 어느 하나의 버퍼 어드레스를 선택적으로 이용하여 데이터를 억세스할 수 있을 것이다.
한편, 도 25는 DATA_IN UPIU의 일 예를 나타내며, 도 25에 도시된 실시예를 설명함에 있어서 전술한 도 22의 커맨드 UPIU는 독출 요청에 해당하는 커맨드 UPIU인 것으로 가정된다.
스토리지 장치는 독출 요청에 해당하는 커맨드 UPIU에 포함되는 다수의 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)을 저장 및 관리하고, 커맨드 UPIU에 응답하는 DATA_IN UPIU를 전송함에 있어서, 상기 저장된 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)을 DATA_IN UPIU에 포함시킬 수 있다. 호스트는 DATA_IN UPIU에 포함된 버퍼 어드레스들(Buffer Address1_1 ~ Buffer Address1_4)을 이용하여 독출 데이터를 호스트 메모리의 다수의 데이터 버퍼들의 대응하는 위치에 저장할 수 있을 것이다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (21)

  1. 스토리지 장치의 동작방법에 있어서,
    호스트 내의 다수의 데이터 버퍼들 중 선택된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 포함하는 제1 패킷을 상기 호스트로부터 수신하는 단계;
    상기 제1 패킷으로부터 상기 버퍼 어드레스를 파싱하는 단계; 및
    상기 제1 패킷에 응답하여, 상기 호스트로부터 수신된 상기 버퍼 어드레스를 포함하는 제2 패킷을 상기 호스트로 전송하는 단계를 구비하고,
    상기 제1 패킷은 데이터 기록 요청에 해당하는 패킷이고, 상기 제2 패킷은 상기 호스트에 기록 데이터의 전송을 요청하는 패킷이며,
    상기 버퍼 어드레스는 상기 기록 데이터가 저장된 데이터 버퍼의 위치를 직접적으로 지시하는 스토리지 장치의 동작방법.
  2. 제1항에 있어서,
    상기 스토리지 장치는 커맨드 큐 및 어드레스 큐를 포함하고,
    상기 제1 패킷으로부터 파싱된 커맨드를 상기 커맨드 큐에 저장하고, 상기 커맨드에 대응하는 상기 버퍼 어드레스를 상기 어드레스 큐에 저장하는 단계를 더 구비하는 스토리지 장치의 동작방법.
  3. 제2항에 있어서,
    상기 어드레스 큐에 저장된 상기 버퍼 어드레스를 독출하는 단계를 더 구비하고,
    상기 제2 패킷에는 상기 어드레스 큐로부터 독출된 상기 버퍼 어드레스가 포함되는 것을 특징으로 하는 스토리지 장치의 동작방법.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 스토리지 장치는 상기 호스트와 유니버셜 플래시 스토리지(UFS) 인터페이스에 따라 통신하고,
    상기 제1 패킷 및 상기 제2 패킷 각각은 UPIU(UFS Protocol Information Unit)인 것을 특징으로 하는 스토리지 장치의 동작방법.
  7. 제6항에 있어서,
    상기 제1 패킷은 데이터 기록 또는 독출 요청에 해당하는 커맨드 UPIU이고,
    상기 제2 패킷은 데이터-인(Data_In) UPIU 또는 데이터 전송 요청 UPIU(Ready To Transfer(RTT) UPIU)인 것을 특징으로 하는 스토리지 장치의 동작방법.
  8. 제1항에 있어서,
    상기 제1 패킷 및 상기 제2 패킷 각각은 소정의 사이즈를 갖는 헤더 영역과 상기 버퍼 어드레스가 기록된 추가(extra) 헤더 영역을 포함하는 것을 특징으로 하는 스토리지 장치의 동작방법.
  9. 호스트의 동작방법에 있어서,
    상기 호스트 내의 다수의 데이터 버퍼들 중 선택된 데이터 버퍼의 위치를 나타내는 제1 버퍼 어드레스를 포함하는 데이터 기록 요청을 스토리지 장치로 전송하는 단계;
    상기 스토리지 장치로부터 상기 제1 버퍼 어드레스를 포함하는 제1 패킷을 수신하는 단계;
    상기 제1 패킷으로부터 상기 제1 버퍼 어드레스를 파싱하는 단계; 및
    상기 파싱된 제1 버퍼 어드레스가 직접적으로 지시하는 위치의 데이터 버퍼에서 데이터를 억세스하는 단계를 구비하는 호스트의 동작방법.
  10. 제9항에 있어서,
    상기 제1 패킷은 기록 데이터의 전송을 요청하는 패킷이고,
    상기 제1 버퍼 어드레스가 나타내는 위치의 데이터 버퍼에 저장된 기록 데이터를 포함하는 제2 패킷을 상기 스토리지 장치로 전송하는 단계를 더 구비하는 호스트의 동작방법.
  11. 삭제
  12. 제9항에 있어서,
    제2 패킷에 관련된 정보를 포함하는 전송 요청 디스크립터를 상기 호스트 내의 호스트 메모리의 제1 영역에서 확인하는 단계;
    상기 전송 요청 디스크립터의 확인 결과에 따라, 억세스 수행될 데이터 버퍼의 위치를 나타내는 상기 제1 버퍼 어드레스를 상기 호스트 메모리의 제2 영역에서 확인하는 단계; 및
    상기 제1 버퍼 어드레스가 포함된 상기 제2 패킷을 상기 데이터 기록 요청으로서 상기 스토리지 장치로 전송하는 단계를 더 구비하는 호스트의 동작방법.
  13. 삭제
  14. 제9항에 있어서,
    상기 호스트는 상기 스토리지 장치와 유니버셜 플래시 스토리지(UFS) 인터페이스에 따라 통신하고,
    상기 제1 패킷은 UPIU(UFS Protocol Information Unit)인 것을 특징으로 하는 호스트의 동작방법.
  15. 제9항에 있어서,
    상기 호스트는, 호스트 컨트롤러 인터페이스 및 적어도 하나의 지능 소자(Intellectual property)를 포함하는 어플리케이션 프로세서와 상기 데이터 버퍼들을 포함하는 호스트 메모리를 구비하고,
    상기 데이터를 억세스하는 단계는 상기 호스트 컨트롤러 인터페이스가 상기 호스트 메모리를 억세스함에 의해 수행되고,
    상기 호스트 메모리는 상기 호스트 컨트롤러 인터페이스와 상기 적어도 하나의 지능 소자에 공유되는 것을 특징으로 하는 호스트의 동작방법.
  16. 삭제
  17. 삭제
  18. 데이터를 불휘발성하게 저장하는 메모리 코어; 및
    외부의 호스트와 인터페이스하고, 상기 호스트에 구비되는 다수의 데이터 버퍼들에 대한 버퍼 어드레스를 관리하며, 적어도 하나의 데이터 버퍼의 억세스를 요구로 하는 패킷을 상기 호스트로 전송할 때 상기 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 상기 호스트로 전송되는 패킷에 포함시키는 스토리지 컨트롤러를 구비하고,
    상기 스토리지 컨트롤러는,
    상기 호스트로부터 제1 버퍼 어드레스를 포함하는 제1 패킷을 수신하고, 상기 수신된 제1 패킷에 응답하여 각각 제2 버퍼 어드레스를 포함하는 다수 개의 제2 패킷들을 상기 호스트로 순차적으로 전송하며,
    상기 제1 버퍼 어드레스로부터 서로 다른 값을 갖는 다수의 제2 버퍼 어드레스들을 산출하는 어드레스 계산기를 포함하는 것을 특징으로 하는 스토리지 장치.
  19. 데이터를 불휘발성하게 저장하는 메모리 코어; 및
    외부의 호스트와 인터페이스하고, 상기 호스트에 구비되는 다수의 데이터 버퍼들에 대한 버퍼 어드레스를 관리하며, 적어도 하나의 데이터 버퍼의 억세스를 요구로 하는 패킷을 상기 호스트로 전송할 때 상기 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 상기 호스트로 전송되는 패킷에 포함시키는 스토리지 컨트롤러를 구비하고,
    상기 스토리지 컨트롤러는,
    상기 호스트로부터 다수의 버퍼 어드레스들의 위치를 나타내는 다수의 제1 버퍼 어드레스들을 포함하는 제1 패킷을 수신하고,
    상기 제1 패킷에 응답하여 하나의 제2 패킷이 상기 호스트로 전송될 때, 상기 제2 패킷에는 상기 다수의 제1 버퍼 어드레스들이 포함되고,
    상기 제1 패킷에 응답하여 다수의 제2 패킷들이 상기 호스트로 전송될 때, 상기 다수의 제1 버퍼 어드레스들은 상기 다수의 제2 패킷들에 분산되어 포함되는 것을 특징으로 하는 스토리지 장치.
  20. 제18항 또는 제19항에 있어서,
    상기 스토리지 장치는 상기 호스트와 유니버셜 플래시 스토리지(UFS) 인터페이스에 따라 통신하고,
    상기 호스트로 전송되는 패킷은, 데이터 전송 요청 UPIU(Ready To Transfer(RTT) UPIU) 또는 독출 데이터를 포함하는 데이터-인(Data_In) UPIU 인 것을 특징으로 하는 스토리지 장치.
  21. 스토리지 장치의 동작방법에 있어서,
    호스트 내의 다수의 데이터 버퍼들 중 선택된 데이터 버퍼의 위치를 나타내는 버퍼 어드레스를 포함하는 제1 패킷을 상기 호스트로부터 수신하는 단계;
    상기 제1 패킷으로부터 상기 버퍼 어드레스를 파싱하는 단계; 및
    상기 제1 패킷에 응답하여, 상기 호스트로부터 수신된 상기 버퍼 어드레스를 포함하는 제2 패킷을 상기 호스트로 전송하는 단계를 구비하고
    상기 제1 패킷은 데이터 독출 요청에 해당하는 패킷이고, 상기 제2 패킷은 상기 스토리지 장치에서 독출된 독출 데이터를 포함하는 패킷이며,
    상기 버퍼 어드레스는 상기 독출 데이터가 저장될 데이터 버퍼의 위치를 직접적으로 지시하는 것을 특징으로 하는 스토리지 장치의 동작방법.
KR1020170097133A 2017-07-31 2017-07-31 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 KR102395190B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020170097133A KR102395190B1 (ko) 2017-07-31 2017-07-31 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
US15/961,920 US10599591B2 (en) 2017-07-31 2018-04-25 Storage device for interfacing with host and method of operating the host and the storage device
CN201810418379.6A CN109324754B (zh) 2017-07-31 2018-05-04 与主机接合的储存装置以及操作主机和储存装置的方法
DE102018113447.9A DE102018113447A1 (de) 2017-07-31 2018-06-06 Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
US16/801,267 US11080217B2 (en) 2017-07-31 2020-02-26 Storage device for interfacing with host and method of operating the host and the storage device
US17/359,864 US11573915B2 (en) 2017-07-31 2021-06-28 Storage device for interfacing with host and method of operating the host and the storage device
US18/091,452 US11775455B2 (en) 2017-07-31 2022-12-30 Storage device for interfacing with host and method of operating the host and the storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170097133A KR102395190B1 (ko) 2017-07-31 2017-07-31 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법

Publications (2)

Publication Number Publication Date
KR20190013106A KR20190013106A (ko) 2019-02-11
KR102395190B1 true KR102395190B1 (ko) 2022-05-06

Family

ID=65004349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170097133A KR102395190B1 (ko) 2017-07-31 2017-07-31 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법

Country Status (4)

Country Link
US (4) US10599591B2 (ko)
KR (1) KR102395190B1 (ko)
CN (1) CN109324754B (ko)
DE (1) DE102018113447A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6967959B2 (ja) * 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
JP7048289B2 (ja) * 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
US10664420B2 (en) * 2018-04-19 2020-05-26 Avago Technologies International Sales Pte. Limited System and method for port-to-port communications using direct memory access
US10891078B2 (en) 2018-06-22 2021-01-12 Western Digital Technologies, Inc. Storage device with a callback response
JP7143232B2 (ja) 2019-01-29 2022-09-28 キオクシア株式会社 メモリシステムおよび制御方法
JP7155028B2 (ja) 2019-01-29 2022-10-18 キオクシア株式会社 メモリシステムおよび制御方法
US10802750B2 (en) * 2019-02-28 2020-10-13 Silicon Motion Inc. Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module
US11275527B1 (en) * 2019-06-11 2022-03-15 Western Digital Technologies, Inc. Execution condition embedded in a command or a request to storage device
KR20210016938A (ko) 2019-08-06 2021-02-17 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작방법
JP2021111210A (ja) * 2020-01-14 2021-08-02 キヤノン株式会社 情報処理装置、およびその制御方法
US11068421B1 (en) * 2020-02-20 2021-07-20 Silicon Motion, Inc. Memory device and associated flash memory controller
TWI738359B (zh) * 2020-05-26 2021-09-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
KR20220070613A (ko) * 2020-11-23 2022-05-31 삼성전자주식회사 호스트 장치, 메모리 장치의 구동 방법 및 메모리 시스템
KR102547950B1 (ko) * 2021-01-13 2023-06-27 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템
CN116601594A (zh) * 2021-03-18 2023-08-15 华为技术有限公司 存储器操作的执行方法和装置
US11941253B2 (en) * 2021-04-22 2024-03-26 EMC IP Holding Company, LLC Storage system and method using persistent memory
CN113467425B (zh) * 2021-07-05 2022-09-09 中国兵器装备集团自动化研究所有限公司 一种应用于龙芯下位机的自主控制测试方法及系统
US11815938B2 (en) 2021-07-13 2023-11-14 SK Hynix Inc. Storage device and method of operating the same

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564271B2 (en) * 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US7472205B2 (en) * 2002-04-24 2008-12-30 Nec Corporation Communication control apparatus which has descriptor cache controller that builds list of descriptors
US7894480B1 (en) * 2002-08-27 2011-02-22 Hewlett-Packard Company Computer system and network interface with hardware based rule checking for embedded firewall
KR100449807B1 (ko) * 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US7284075B2 (en) * 2004-03-23 2007-10-16 Intel Corporation Inbound packet placement in host memory
US7469309B1 (en) * 2005-12-12 2008-12-23 Nvidia Corporation Peer-to-peer data transfer method and apparatus with request limits
FR2908195B1 (fr) * 2006-11-06 2009-02-06 Oberthur Card Syst Sa Procede de passation d'instructions entre une station hote et un dispositif electronique portable, et dispositif de mise en oeuvre
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US20100088232A1 (en) * 2008-03-21 2010-04-08 Brian Gale Verification monitor for critical test result delivery systems
US8255593B2 (en) * 2009-09-29 2012-08-28 Oracle America, Inc. Direct memory access with striding across memory
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
EP2563091B1 (en) * 2010-04-23 2016-06-08 Huawei Device Co., Ltd. Wireless internet-accessing module, host, communication method thereof, and data card
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8386644B1 (en) * 2010-10-11 2013-02-26 Qlogic, Corporation Systems and methods for efficiently processing large data segments
CN102075401B (zh) * 2011-01-28 2013-08-07 华为技术有限公司 在pcie总线上传输报文的方法、设备和系统
WO2013029051A2 (en) 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN102609215B (zh) * 2012-04-11 2015-05-27 华为数字技术(成都)有限公司 数据处理方法及装置
TWI526838B (zh) * 2013-02-27 2016-03-21 東芝股份有限公司 記憶體裝置
KR101861744B1 (ko) 2013-02-28 2018-05-29 삼성전자주식회사 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템
EP3333853A1 (en) * 2013-03-07 2018-06-13 Charles I. Peddle High speed flash controllers
US9069660B2 (en) * 2013-03-15 2015-06-30 Apple Inc. Systems and methods for writing to high-capacity memory
US9317444B2 (en) 2013-03-15 2016-04-19 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US20140310536A1 (en) 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
KR102094902B1 (ko) 2013-07-08 2020-03-30 삼성전자주식회사 액티브 상태에서 인터페이스 모드를 전환하는 스토리지 시스템 및 ufs 시스템
US10003675B2 (en) * 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
JP2015186233A (ja) * 2014-03-26 2015-10-22 富士通株式会社 パケット処理装置、及びパケット処理方法
KR102196971B1 (ko) * 2014-03-28 2020-12-31 삼성전자주식회사 스토리지 시스템, 그것의 쓰기 방지 수행 방법, 그리고 그것의 쓰기 방지 인증 방법
US9984007B2 (en) * 2014-03-28 2018-05-29 Samsung Electronics Co., Ltd. Storage system and method for performing and authenticating write-protection thereof
US9990313B2 (en) 2014-06-19 2018-06-05 Hitachi, Ltd. Storage apparatus and interface apparatus
US20160011790A1 (en) 2014-07-14 2016-01-14 Sandisk Technologies Inc. Systems and methods to enable access to a host memory associated with a unified memory architecture (uma)
KR102264444B1 (ko) * 2014-09-04 2021-06-15 삼성전자주식회사 전자 장치에서 기능 실행 방법 및 장치
US10146475B2 (en) 2014-09-09 2018-12-04 Toshiba Memory Corporation Memory device performing control of discarding packet
US9720866B2 (en) 2014-09-11 2017-08-01 Kabushiki Kaisha Toshiba Interface circuit executing protocol control in compliance with first and second interface standards
KR102238652B1 (ko) 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
US20160162416A1 (en) 2014-12-08 2016-06-09 Intel Corporation Apparatus and Method for Reducing Latency Between Host and a Storage Device
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
KR20160148940A (ko) 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US20170031601A1 (en) 2015-07-30 2017-02-02 Kabushiki Kaisha Toshiba Memory system and storage system
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US10452556B2 (en) 2015-09-11 2019-10-22 Toshiba Memory Corporation Memory device and information processing device
US10467155B2 (en) * 2015-10-26 2019-11-05 Micron Technology, Inc. Command packets for the direct control of non-volatile memory channels within a solid state drive
US9880783B2 (en) * 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US10019403B2 (en) * 2015-11-04 2018-07-10 International Business Machines Corporation Mapping data locations using data transmissions
US9959227B1 (en) * 2015-12-16 2018-05-01 Amazon Technologies, Inc. Reducing input/output latency using a direct memory access (DMA) engine
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
US10318334B2 (en) * 2017-07-07 2019-06-11 Netronome Systems, Inc. Virtio relay
US20190044879A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Technologies for reordering network packets on egress

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
공개특허공보 제10-2015-00143708호(2015.12.23.) 1부*

Also Published As

Publication number Publication date
US20190034364A1 (en) 2019-01-31
US20230144485A1 (en) 2023-05-11
US20200192835A1 (en) 2020-06-18
US10599591B2 (en) 2020-03-24
DE102018113447A1 (de) 2019-01-31
KR20190013106A (ko) 2019-02-11
CN109324754B (zh) 2024-04-02
CN109324754A (zh) 2019-02-12
US11775455B2 (en) 2023-10-03
US11080217B2 (en) 2021-08-03
US11573915B2 (en) 2023-02-07
US20210326280A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
KR102395190B1 (ko) 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
US10534560B2 (en) Data storage device and data processing system having the same
US11914531B2 (en) Host controller interface using multiple circular queue, and operating method thereof
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
KR20190083150A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11294600B2 (en) Storage device interfacing with host device and operating method of the storage device
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US11593031B2 (en) Operating method of host device and storage device using credit
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
KR102434840B1 (ko) 데이터 저장 장치
US20230214329A1 (en) Storage system and storage device, and operating method thereof
KR20210148852A (ko) 다중 원형 큐를 이용하는 호스트 컨트롤러 인터페이스 및 이의 동작 방법
KR20210011198A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
US11914879B2 (en) Storage controller and storage system comprising the same
US20240231698A1 (en) Storage devices and operating methods thereof
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
KR20210006163A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20170110808A (ko) 데이터 저장 장치를 포함하는 데이터 처리 시스템

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
GRNT Written decision to grant