KR102317787B1 - 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 - Google Patents
메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 Download PDFInfo
- Publication number
- KR102317787B1 KR102317787B1 KR1020150020965A KR20150020965A KR102317787B1 KR 102317787 B1 KR102317787 B1 KR 102317787B1 KR 1020150020965 A KR1020150020965 A KR 1020150020965A KR 20150020965 A KR20150020965 A KR 20150020965A KR 102317787 B1 KR102317787 B1 KR 102317787B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- host
- response
- upiu
- command
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
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)
Abstract
메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스에 관하여 개시한다. 메시지 전송 플로우 관리 방법은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계 및, 상기 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 단계를 포함한다.
Description
본 발명은 호스트와 장치 사이의 메시지 전송 방법 및 장치에 관한 것으로서, 자세하게는 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스에 관한 것이다.
일반적으로, 호스트와 디바이스 사이에서의 메시지 전송을 위하여 이용되는 인터페이스 규격들은 커맨드 페이즈(command phase), 데이터 페이즈(data phase), 스테터스 페이즈(status phase)로 이루어지는 전송 플로우를 갖는다. 여기에서, 스테터스 페이즈는 디바이스에서 데이터 송수신 후에 레스폰스(response) 정보를 호스트로 전송하기 위한 구간이다. 이에 따라서, 시스템의 성능을 향상시키기 위하여 데이터 페이즈와 스테터스 페이즈 사이의 레이턴시(latency)를 최소화시키는 연구가 필요하게 되었다.
본 발명의 목적은 데이터 페이즈와 스테터스 페이즈 사이의 레이턴시를 줄이기 위한 메시지 전송 플로우 관리 방법을 제공하는데 있다.
본 발명의 다른 목적은 데이터 페이즈와 스테터스 페이즈 사이의 레이턴시를 줄이도록 메시지 전송 플로우를 관리하는 스토리지 디바이스를 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메시지 전송 플로우 관리 방법은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계 및, 상기 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계는 상기 호스트로부터 전송되는 커맨드 정보의 헤더 또는 데이터의 헤더에 포함된 리저브드 비트를 통하여 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 호스트와 상기 스토리지 디바이스 사이에서 이용되는 인터페이스 규격은 커맨드 페이즈, 데이터 페이즈 및 스테터스 페이즈로 이루어지는 전송 플로우를 가질 수 있다.
본 발명의 실시 예에 따르면, 상기 호스트와 상기 스토리지 디바이스 사이에서 이용되는 인터페이스 규격이 UFS(Universal Flash Storage)인 경우에 UPIU(UFS Protocol Information Units) 헤더에 포함된 리저브드 비트를 통하여 상기 레스폰스 전송 타입 정보를 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계는 리드 데이터 전송 플로우에서는 커맨드 정보의 헤더에 포함된 리저브드 비트를 통하여 상기 레스폰스 전송 타입 정보를 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계는 라이트 데이터 전송 플로우에서는 데이터의 헤더에 포함된 리저브드 비트를 통하여 상기 레스폰스 전송 타입 정보를 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계는 라이트 데이터 전송 플로우에서는 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 리저브드 비트를 통하여 상기 레스폰스 전송 타입 정보를 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 정보를 호스트로 전송하는 단계는 상기 수신된 레스폰스 전송 타입 정보에 기초하여 일반 모드 또는 패스트 모드 중의 하나의 모드를 판단하는 단계 및, 리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서 상기 호스트로 전송되는 마지막 데이터에 상기 레스폰스 정보를 함께 실어서 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 마지막 데이터에 레스폰스 정보를 함께 실어서 전송하는 단계는 상기 리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내기 위하여 할당된 리저브드 비트를 패스트 모드의 레스폰스 전송 타입 정보를 나타내는 값으로 설정하고, 상기 마지막 데이터 뒤에 레스폰스 정보를 실어서 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 정보를 호스트로 전송하는 단계는 상기 수신된 레스폰스 전송 타입 정보에 기초하여 일반 모드 또는 패스트 모드 중의 하나의 모드를 판단하는 단계 및, 라이트 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 호스트로부터 마지막 데이터를 수신한 후에 바로 상기 레스폰스 정보를 호스트로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스 정보를 호스트로 전송하는 단계는 라이트 데이터 전송 플로우에서 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 리저브드 비트를 통하여 패스트 모드의 레스폰스 전송 타입 정보가 수신되는 경우에, 상기 마지막 데이터를 수신하자마자 상기 레스폰스 정보를 상기 호스트로 전송할 수 있다.
발명의 기술적 사상의 다른 면에 따른 스토리지 디바이스는 메모리 디바이스 및, 호스트로부터 수신되는 커맨드 정보에 따라서 상기 메모리 디바이스에 데이터를 라이트하거나 상기 메모리 디바이스로부터 데이터를 읽어내는 동작을 수행하고, 상기 호스트와의 데이터 전송 과정에서 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 수신되는 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 메모리 컨트롤러를 포함한다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 호스트로부터 전송되는 커맨드 정보 또는 데이터의 헤더에 포함된 리저브드 비트를 통하여 상기 레스폰스 전송 타입 정보를 수신할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 호스트로부터 수신되는 커맨드 정보를 저장하는 커맨드 큐, 상기 호스트로부터 수신되는 데이터 또는 상기 메모리 디바이스로부터 읽어낸 데이터를 저장하는 버퍼 메모리 및, 리드 데이터 전송 플로우에서 상기 패스트 모드로 설정된 레스폰스 타입 정보가 수신되는 경우에 리드 커맨드에 기초하여 상기 버퍼 메모리에서 읽어낸 마지막 데이터에 레스폰스 정보를 함께 실어서 상기 호스트로 전송하는 동작을 수행하는 컨트롤 유닛을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 컨트롤 유닛은 리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내기 위하여 할당된 리저브드 비트를 패스트 모드의 레스폰스 전송 타입 정보를 나타내는 값으로 설정하고, 상기 마지막 데이터 뒤에 상기 레스폰스 정보를 실어서 상기 호스트로 전송하는 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 컨트롤 유닛은 라이트 데이터 전송 플로우에서 상기 패스트 모드로 설정된 레스폰스 정보가 수신되는 경우에 라이트 커맨드에 기초하여 상기 호스트로부터 마지막 데이터를 수신한 후에 바로 레스폰스 정보를 상기 호스트로 전송하는 동작을 더 수행할 수 있다.
발명의 기술적 사상의 또 다른 면에 따른 컴퓨팅 시스템은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 스토리지 디바이스로 전송하는 호스트 및, 상기 호스트로부터 수신되는 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 스토리지 디바이스를 포함하고, 상기 스토리지 디바이스는 리드 데이터 전송 플로우에서 패스트 모드로 판단된 경우에 데이터 페이즈에서 상기 호스트로 전송되는 마지막 데이터에 상기 레스폰스 정보를 함께 실어서 전송하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 스토리지 디바이스는 상기 리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내기 위하여 할당된 리저브드 비트를 패스트 모드의 레스폰스 전송 타입 정보를 나타내는 값으로 설정하고, 상기 마지막 데이터 뒤에 상기 레스폰스 정보를 실어서 상기 호스트로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 스토리지 디바이스는 라이트 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 상기 호스트로부터 마지막 데이터를 수신한 후에 바로 상기 레스폰스 정보를 상기 호스트로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 호스트는 상기 리드 데이터 전송 플로우에서 패스트 모드로 판단된 경우에 상기 스토리지 디바이스로부터 수신되는 데이터 뒤에 실려온 레스폰스 정보를 파싱하여 처리할 수 있다.
본 발명에 따르면 데이터 페이즈와 스테터스 페이즈 사이의 레이턴시를 최소화함으로써, 시스템 성능을 향상시킬 수 있는 효과가 발생된다. 패스트 모드로 호스트에서 디바이스로 랜덤 리드 또는 라이트 요구가 발생되는 경우에 빠른 응답 시간을 제공할 수 있는 효과가 발생된다.
그리고, UFS(Universal Flash Storage) 인터페이스 규격에서의 특정 기능으로 할당되지 않은 리저브드 비트를 이용하여 패스트 모드를 설정함으로써, 인터페이스 규격을 변경하지 않고도 빠른 응답 시간으로 레스폰스 정보를 전송할 수 있는 효과가 발생된다.
도 1은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 일 예를 보여준다.
도 2는 도 1에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 컴퓨팅 시스템의 구성도이다.
도 3은 도 1에 도시된 호스트의 구성을 예시적으로 보여준다.
도 4는 도 3에 도시된 RAM에 저장되는 프로그램 및 데이터를 예시적으로 보여준다.
도 5는 도 2에 도시된 메모리 컨트롤러에 대한 세부 구성의 일 예를 보여주는 도면이다.
도 6은 도 2에 도시된 메모리 디바이스 구성의 일 예를 보여준다.
도 7은 도 6에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 8은 도 6에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 9는 본 발명의 실시 예에 따른 UPIU 헤더 포맷을 보여주는 도면이다.
도 10은 JEDEC 규격에 따른 UPIU 헤더를 구성하는 플래그 필드의 내용을 보여주는 도면이다.
도 11은 본 발명의 일 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 12는 본 발명의 다른 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 COMMAND UPIU의 내용을 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 RTT UPIU의 내용을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 DATA OUT UPIU의 내용을 예시적으로 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 DATA IN UPIU의 내용을 예시적으로 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 RESPONSE UPIU의 내용을 예시적으로 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 19는 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 20은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 21은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 22는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법의 흐름도이다.
도 23은 도 22에 도시된 레스폰스 정보 전송 단계에 대한 세부 흐름도를 예시적으로 보여주는 도면이다.
도 24는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 메모리 카드 시스템에 대한 블록 구성도이다.
도 25는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 SSD 시스템에 대한 블록 구성도이다.
도 26은 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 컴퓨팅 시스템 구성의 다른 예를 보여준다.
도 2는 도 1에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 컴퓨팅 시스템의 구성도이다.
도 3은 도 1에 도시된 호스트의 구성을 예시적으로 보여준다.
도 4는 도 3에 도시된 RAM에 저장되는 프로그램 및 데이터를 예시적으로 보여준다.
도 5는 도 2에 도시된 메모리 컨트롤러에 대한 세부 구성의 일 예를 보여주는 도면이다.
도 6은 도 2에 도시된 메모리 디바이스 구성의 일 예를 보여준다.
도 7은 도 6에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 8은 도 6에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 9는 본 발명의 실시 예에 따른 UPIU 헤더 포맷을 보여주는 도면이다.
도 10은 JEDEC 규격에 따른 UPIU 헤더를 구성하는 플래그 필드의 내용을 보여주는 도면이다.
도 11은 본 발명의 일 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 12는 본 발명의 다른 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 COMMAND UPIU의 내용을 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 RTT UPIU의 내용을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 DATA OUT UPIU의 내용을 예시적으로 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 DATA IN UPIU의 내용을 예시적으로 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 RESPONSE UPIU의 내용을 예시적으로 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 19는 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 20은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 21은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
도 22는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법의 흐름도이다.
도 23은 도 22에 도시된 레스폰스 정보 전송 단계에 대한 세부 흐름도를 예시적으로 보여주는 도면이다.
도 24는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 메모리 카드 시스템에 대한 블록 구성도이다.
도 25는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 SSD 시스템에 대한 블록 구성도이다.
도 26은 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 컴퓨팅 시스템 구성의 다른 예를 보여준다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 일 예를 보여준다.
도 1에 도시된 바와 같이, 컴퓨팅 시스템(1000)은 호스트(100)와 스토리지 디바이스(200)를 포함한다.
호스트(100)와 스토리지 디바이스(200)는 전기적으로 연결되어 있다. 호스트(100)와 스토리지 디바이스(200) 사이에서 이용되는 인터페이스의 규격은 커맨드 페이즈(command phase), 데이터 페이즈(data phase) 및 스테터스 페이즈(status phase)로 이루어지는 전송 플로우를 갖는다. 스테터스 페이즈에서 레스폰스 정보가 전송된다.
예로서, UFS(Universal Flash Storage) 인터페이스, eMMC(embedded Multi-Media Card) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), NVMe(Non-Volatile Memory express) 인터페이스 등이 적용될 수 있다.
호스트(100)는 수행하고자 하는 태스크에 기초하여 발행되는 커맨드(CMD)를 스토리지 디바이스(200)로 전송한다. 예로서, 호스트(100)에서 발행되는 커맨드(CMD)는 라이트 커맨드 또는 리드 커맨드가 포함될 수 있다. 그리고, 호스트(100)는 스토리지 디바이스(200)에 저장할 데이터(DATA)를 전송하거나, 스토리지 디바이스(200)로부터 읽어낸 데이터(DATA)를 수신한다. 스토리지 디바이스(200)는 커맨드 실행에 대한 결과를 나타내는 레스폰스(RESPONSE) 정보를 호스트(100)로 전송한다.
예로서, 호스트(100)는 처리할 데이터가 스토리지 디바이스(200)에 저장되어 있는 경우에 스토리지 디바이스(200)로 리드 커맨드를 전송한다. 그리고, 호스트(100)는 처리된 데이터를 스토리지 디바이스(200)에 저장하고자 하는 경우에 스토리지 디바이스(200)로 라이트 커맨드를 전송한다.
다른 예로서, 호스트(100)는 페이지 폴트가 발생되는 경우에 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드를 스토리지 디바이스(200)로 전송한다. 페이지 폴트는 호스트(100)에서 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 호스트(100)에 저장되어 있지 않는 경우에 발생된다.
스토리지 디바이스(200)는 호스트(100)로부터 수신되는 커맨드에 따라서 리드 오퍼레이션 또는 프로그램 오퍼레이션을 수행한다. 즉, 스토리지 디바이스(200)는 호스트(100)로부터 리드 커맨드가 수신되는 경우에 데이터를 읽기 위한 리드 오퍼레이션을 수행한다. 그리고, 스토리지 디바이스(200)는 호스트(100)로부터 라이트 커맨드가 수신되는 경우에 데이터를 저장하기 위한 프로그램 오퍼레이션을 수행한다.
스토리지 디바이스(200)는 호스트로(100)부터 수신된 커맨드의 실행에 대한 결과를 나타내는 레스폰스(RESPONSE) 정보를 호스트(100)로 전송한다. 예로서, 스토리지 디바이스(200)는 라이트 커맨드를 수신하는 경우에 호스트(100)로부터 데이터를 수신하고 나서 스토리지 디바이스(200)에서 라이트 커맨드에 따른 데이터 처리 후에 라이트 커맨드가 정상적으로 처리되었는지를 나타내는 레스폰스 정보를 호스트(100)로 전송한다. 다른 예로서, 스토리지 디바이스(200)는 리드 커맨드를 수신하는 경우에 스토리지 디바이스(200)에서 읽어낸 데이터를 호스트(100)로 전송한 후에 리드 커맨드가 정상적으로 처리되었는지를 나타내는 레스폰스 정보를 호스트(100)로 전송한다.
본 발명의 실시 예에 따르면, 호스트(100)는 패스트 레스폰스 지원 모듈(101)을 포함하고, 스토리지 디바이스(200)는 패스트 레스폰스 처리 모듈(201)을 포함한다.
패스트 레스폰스 지원 모듈(101) 및 패스트 레스폰스 처리 모듈(201)은 데이터 페이즈와 스테터스 페이즈 사이의 레이턴시(latency)를 줄이기 위한 모듈로서, 소프트웨어 또는 하드웨어로 구현될 수 있다.
패스트 레스폰스 지원 모듈(101)은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 설정하는 오퍼레이션을 지원한다. 예로서, 커맨드 정보의 헤더 또는 데이터의 헤더에 포함된 하나의 리저브드 비트를 레스폰스 전송 타입을 결정하는 비트로 할당할 수 있다.
패스트 레스폰스 지원 모듈(101)은 스토리지 디바이스(200)로 전송할 커맨드 정보의 헤더 또는 데이터의 헤더에 포함된 리저브드 비트를 이용하여 레스폰스 전송 타입 정보는 설정할 수 있다. 즉, 레스폰스 전송 타입 정보를 위하여 할당된 리저브드 비트로 레스폰스 전송 타입 정보를 설정할 수 있다.
예로서, 패스트 레스폰스 지원 모듈(101)은 디폴트 값으로 패스트 모드의 레스폰스 전송 타입 정보를 설정할 수 있다. 다른 예로서, 패스트 레스폰스 지원 모듈(101)은 디폴트 값으로 일반 모드의 레스폰스 전송 타입 정보를 설정할 수도 있다. 또 다른 예로서, 벤더 선택 또는 사용자 선택에 기초하여 일반 모드 또는 패스트 모드 중의 하나의 레스폰스 전송 타입 정보를 설정할 수 있다.
예로서, 패스트 레스폰스 지원 모듈(101)은 리드 데이터 전송 플로우의 커맨드 페이즈에서 커맨드 정보의 헤더에 포함된 리저브드 비트를 이용하여 레스폰스 전송 타입 정보는 설정할 수 있다. 세부적으로, 리드 데이터 전송 플로우의 커맨드 페이즈에서 커맨드 정보의 헤더에 포함된 리저브드 비트중에서 레스폰스 전송타입을 정의하기 위하여 할당된 하나의 비트를 제1논리 값으로 설정하면 패스트 모드로 결정되고, 제2논리 값으로 설정하면 일반 모드로 결정되도록 설계할 수 있다.
예로서, 패스트 레스폰스 지원 모듈(101)은 라이트 데이터 전송 플로우의 데이터 페이즈에서 커맨드 정보의 헤더에 포함된 리저브드 비트를 이용하여 레스폰스 전송 타입 정보는 설정할 수 있다. 예로서, 라이트 데이터 전송 플로우의 데이터 페이즈에서 스토리지 디바이스(200)로 전송되는 마지막 데이터의 헤더에 포함된 리저브드 비트 중에서 레스폰스 전송 타입을 정의하기 위하여 할당된 하나의 비트를 제1논리 값으로 설정하면 패스트 모드로 결정되고, 제2논리 값으로 설정하면 일반 모드로 결정되도록 설계할 수 있다.
예로서, 패스트 레스폰스 지원 모듈(101)은 리드 데이터 전송 플로우의 데이터 페이즈에서 스토리지 디바이스(200)로부터 수신되는 데이터의 헤더에 포함된 리저브드 비트 중에서 레스폰스 전송 타입을 결정하기 위하여 할당된 비트가 패스트 모드를 나타내는 값으로 설정되어 있으면, 데이터 다음에 실려온 레스폰스 정보를 파싱하여 처리하는 기능을 지원한다.
패스트 레스폰스 처리 모듈(201)은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트(100)로 전송하는 기능을 지원한다.
예로서, 패스트 레스폰스 처리 모듈(201)은 라이트 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에 호스트(100)로부터 마지막 데이터를 수신하면 바로 레스폰스 정보를 생성하여 호스트(100)로 전송하는 동작을 수행한다.
예로서, 패스트 레스폰스 처리 모듈(201)은 리드 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에 데이터 페이즈에서 호스트(100)로 전송되는 마지막 데이터에 레스폰스 정보를 함께 실어서 전송하는 동작을 수행한다. 세부적으로, 리드 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에 호스트(100)로 전송할 마지막 데이터의 헤더에 포함되는 리저브드 비트 중에서 레스폰스 전송 타입을 정의하기 위하여 할당된 비트를 패스트 모드를 나타내는 값으로 설정하고, 마지막 데이터에 레스폰스 정보를 함께 실어서 호스트(100)로 전송하는 동작을 수행한다.
도 2는 도 1에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 컴퓨팅 시스템(1000A)의 구성도이다.
도 2에 도시된 바와 같이, 컴퓨팅 시스템(1000A)은 호스트(100) 및 스토리지 디바이스(200A)로 구성된다. 그리고, 스토리지 디바이스(200A)는 메모리 컨트롤러(210A) 및 메모리 디바이스(220A)를 포함한다.
예로서, 컴퓨팅 시스템(1000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템 등이 될 수도 있다.
호스트(100)는 도 1에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
메모리 디바이스(220A)는 비휘발성 메모리 디바이스들 중에서도 플래시 메모리 디바이스들로 구성되는 경우뿐만 아니라 다양한 종류 및 형태의 메모리 디바이스들이 적용될 수 있다. 예로서, 메모리 디바이스(220A)는 플래시 메모리 디바이스뿐만 아니라, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등이 적용될 수 있다. 다른 예로서, 메모리 디바이스(220A)는 적어도 하나 이상의 비휘발성 메모리 디바이스(들)와 적어도 하나 이상의 휘발성 메모리 디바이스(들)가 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
메모리 컨트롤러(210A)는 호스트(100)로부터 수신된 커맨드에 응답하여 메모리 디바이스(220A)에서의 리드 오퍼레이션 또는 라이트 오퍼레이션을 수행하도록 입출력(I/O) 처리 동작을 수행한다.
그리고, 메모리 컨트롤러(210A)는 호스트로(100)부터 수신된 커맨드의 실행에 대한 결과를 나타내는 레스폰스(RESPONSE) 정보를 호스트(100)로 전송한다. 예로서, 스토리지 디바이스(200A)는 라이트 커맨드를 수신하는 경우에 호스트(100)로부터 데이터를 수신하고 나서 스토리지 디바이스(200A)에서 라이트 커맨드에 따른 데이터 처리 후에 라이트 커맨드가 정상적으로 처리되었는지를 나타내는 레스폰스 정보를 호스트(100)로 전송한다. 다른 예로서, 스토리지 디바이스(200A)는 리드 커맨드를 수신하는 경우에 스토리지 디바이스(200A)에서 읽어낸 데이터를 호스트(100)로 전송한 후에 리드 커맨드가 정상적으로 처리되었는지를 나타내는 레스폰스 정보를 호스트(100)로 전송한다.
메모리 컨트롤러(210A)는 패스트 레스폰스 처리 모듈(201)을 포함한다. 패스트 레스폰스 처리 모듈(201)에 대한 동작 설명은 도 1에서 이미 하였으므로 중복적인 설명은 피하기로 한다.
메모리 컨트롤러(210A)는 리드 데이터 전송 플로우에서 호스트(100)로부터 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 패스트 레스폰스 처리 모듈(201)을 이용하여 데이터 페이즈에서 호스트(100)로 전송되는 마지막 데이터에 레스폰스 정보를 함께 실어서 전송하는 동작을 수행한다. 예로서, 메모리 컨트롤러(210A)는 호스트(100)로 전송할 마지막 데이터의 헤더에 포함되는 리저브드 비트 중에서 레스폰스 전송 타입을 결정하기 위하여 할당된 비트를 패스트 모드를 나타내는 값으로 설정하고, 마지막 데이터에 레스폰스 정보를 함께 실어서 호스트(100)로 전송하는 동작을 수행한다.
메모리 컨트롤러(210A)는 라이트 데이터 전송 플로우에서 호스트(100)로부터 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 패스트 레스폰스 처리 모듈(201)을 이용하여 호스트(100)로부터 마지막 데이터를 수신하면 바로 레스폰스 정보를 생성하여 호스트(100)로 전송하는 동작을 수행한다.
도 3은 도 1에 도시된 호스트의 구성을 예시적으로 보여준다.
도 3을 참조하면, 호스트(100A)는 프로세서(110), 랜덤 액세스 메모리(RAM; 120), 디바이스 인터페이스(130) 및 버스(140)를 포함한다.
프로세서(110), 랜덤 액세스 메모리(RAM; 120) 및 디바이스 인터페이스(130)는 버스(140)를 통하여 전기적으로 연결되어 있다. 프로세서(110), 랜덤 액세스 메모리(RAM; 120) 및 디바이스 인터페이스(130)는 버스(140)를 통하여 데이터 및 각종 제어 신호들을 주고 받을 수 있다.
프로세서(110)는 데이터의 처리 및 호스트(100A) 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(110)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다.
랜덤 액세스 메모리(120)는 호스트(100A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 랜덤 액세스 메모리(120)는 메인 메모리로서의 역할을 한다. 랜덤 액세스 메모리(120)에는 패스트 레퍼런스 지원 소프트웨어(FRS SW; 101A) 가 저장된다. 패스트 레스폰스 지원 소프트웨어(101A)는 도 1에서 설명한 패스트 레스폰스 지원 모듈(101)의 기능을 수행하는 프로그램 코드들을 포함한다.
디바이스 인터페이스(130)는 호스트(100A)에 접속되는 디바이스와의 데이터 교환 프로토콜을 구비하고 호스트(100A)와 디바이스 사이의 인터페이스를 수행한다. 예로서, 호스트(100A)에 접속되는 디바이스는 스토리지 디바이스가 될 수 있다.
디바이스 인터페이스(130)는 예로서 UFS(Universal Flash Storage) 인터페이스, ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), eMMC(embedded Multi Media Card) 인터페이스, NVMe(Non-Volatile Memory express) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 디바이스 인터페이스(130)는 커맨드 페이즈(command phase), 데이터 페이즈(data phase) 및 스테터스 페이즈(status phase)로 이루어지는 전송 플로우를 갖는 다양한 규격의 인터페이스가 적용될 수 있다.
디바이스 인터페이스(130)는 프로세서(110)의 제어에 따라서 디바이스로 커맨드 및 데이터를 전송하거나, 디바이스로부터 데이터 및 레스폰스 정보를 수신할 수 있다.
프로세서(110)는 랜덤 액세스 메모리(120)에 저장된 프로그램 코드들을 이용하여 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 디바이스 인터페이스(130)에 접속된 디바이스로 전송한다. 예로서, 프로세서(110)는 랜덤 액세스 메모리(120)에 저장된 패스트 레스폰스 지원 소프트웨어(101A)를 구동시켜 도 18 내지 도 23에 도시된 바와 같이 방식으로 메시지 전송 플로우 관리 동작을 수행할 수 있다.
도 4는 도 3에 도시된 랜덤 액세스 메모리(120)에 저장되는 프로그램 및 데이터를 예시적으로 보여준다.
도 4를 참조하면, 랜덤 액세스 메모리(120A)에는 오퍼레이팅 시스템(operating system; 121), 애플리케이션(application; 122), 파일 시스템(file system; 123), 메모리 매니저(memory manager; 124), 디바이스 드라이버(device driver; 125), 패스트 레퍼런스 지원 소프트웨어(FRS SW; 101A) 등이 저장될 수 있다. 그리고, 랜덤 액세스 메모리(120A)에는 데이터 버퍼(126) 영역이 할당될 수 있다.
오퍼레이팅 시스템(121)은 호스트(100A)의 하드웨어 및 소프트웨어 자원(resource)을 제어하는 프로그램이다. 오퍼레이팅 시스템(121)은 하드웨어와 애플리케이션 프로그램간의 인터페이스 역할을 하며 호스트(100A)의 자원을 관리한다.
애플리케이션(122)는 호스트(100A)에서 실행되는 다양한 응용 프로그램들을 나타낸다. 예로서, 파일 또는 데이터를 가공하는 동작 등을 지원하는 프로그램들이 포함될 수 있다.
파일 시스템(123)은 파일 또는 데이터를 호스트(100A)의 RAM(120A) 또는 호스트(100A)에 접속된 스토리지 디바이스(200A)에 저장하거나 검색하기 위하여 논리적인 주소 및 저장 위치를 관리하는 프로그램이다.
메모리 매니저(124)는 RAM(120A)에 대한 메모리 액세스 동작 또는 호스트(100A)에 접속된 스토리지 디바이스(200A)에 대한 메모리 액세스 동작을 제어하는 프로그램이다.
디바이스 드라이버(125)는 호스트(100A)에 접속된 스토리지 디바이스(200A)와의 통신을 지원하는 프로그램이다.
패스트 레퍼런스 지원 소프트웨어(101A)는 위에서 설명하였으므로, 중복적인 설명은 피하기로 한다.
데이터 버퍼 영역(126)은 스토리지 디바이스(200A)로부터 수신되는 데이터 또는 스토리지 디바이스로 전송할 데이터를 저장하기 위하여 할당된 저장 영역이다.
도 5는 도 2에 도시된 메모리 컨트롤러에 대한 세부 구성의 일 예를 보여주는 도면이다.
도 5에 도시된 바와 같이, 메모리 컨트롤러(210A)는 컨트롤 유닛(211), RAM(212), 커맨드 큐(213), 메모리 인터페이스(214), 호스트 인터페이스(215) 및 버스(216)를 포함한다.
버스(216)는 컨트롤 유닛(211), RAM(212), 커맨드 큐(213), 메모리 인터페이스(214) 및 호스트 인터페이스(215)를 전기적으로 연결시켜 준다. 이에 따라서, 버스(216)를 통하여 메모리 컨트롤러(210A)의 구성 수단들간의 데이터, 어드레스 및 각종 제어신호들을 전송하거나 수신할 수 있다.
랜덤 액세스 메모리(212)는 메모리 컨트롤러(210A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다.
RAM(212)에는 호스트(100)로부터 전송되는 데이터 또는 호스트(100)로 전송될 데이터가 임시로 저장되는 데이터 버퍼(212-1) 영역이 할당되어 있다. 예로서, RAM(212)의 데이터 버퍼(212-1)에는 메모리 인터페이스(215)를 통하여 접속된 메모리 디바이스(220A)에 저장할 데이터 또는 메모리 디바이스(220A)로부터 읽어낸 데이터가 임시로 저장된다. 그리고, RAM(212)에는 패스트 레퍼런스 처리 소프트웨어(FRP SW; 201A)가 저장된다. 패스트 레스폰스 처리 소프트웨어(201A)는 도 1에서 설명한 패스트 레스폰스 처리 모듈(201)의 기능을 수행하는 프로그램 코드들을 포함한다.
커맨드 큐(Command Queue; 213)에는 호스트 인터페이스(214)를 통하여 호스트(100)로부터 수신된 커맨드가 순차적으로 저장된다.
컨트롤 유닛(211)은 스토리지 디바이스(200A)의 전반적인 동작을 제어한다. 컨트롤 유닛(211)은 호스트(100)로부터 수신되는 커맨드에 기초하여 라이트 오퍼레이션 또는 리드 오퍼레이션 처리를 수행한다.
세부적으로, 호스트(100)로부터 수신되는 커맨드를 커맨드 큐(213)에 저장한다. 그리고, 컨트롤 유닛(211)은 호스트(100)로부터 수신되는 데이터 또는 호스트(100)로 전송할 데이터를 RAM(212)의 데이터 버퍼(212-1)에 저장한다.
호스트(100)로부터 라이트 커맨드가 수신되는 경우에, 컨트롤 유닛(211)은 데이터 버퍼(212-1)에 호스트 데이터를 저장할 버퍼 영역을 할당한 후에 데이터 수신 준비가 되었음을 알리는 메시지를 호스트(100)로 전송한다. 그리고, 컨트롤 유닛(211)은 호스트(100)로부터 수신되는 데이터를 데이터 버퍼(212-1)의 할당된 영역에 저장한다. 컨트롤 유닛(211)은 호스트(100)로부터 라이트 커맨드 처리 상태를 나타내는 레스폰스 정보를 호스트(100)로 전송한다.
컨트롤 유닛(211)은 호스트(100)로부터 리드 커맨드가 수신되는 경우에, 컨트롤 유닛(211)은 리드 커맨드에 따라서 메모리 디바이스(220A)로부터 데이터를 읽어내어 데이터 버퍼(212-1)에 저장한다. 그리고 나서, 컨트롤 유닛(211)은 데이터 버퍼(212-1)로부터 데이터를 읽어내어 호스트 인터페이스(215)를 통하여 호스트(100)로 전송한다. 컨트롤 유닛(211)은 호스트(100)로부터 리드 커맨드 처리 상태를 나타내는 레스폰스 정보를 호스트(100)로 전송한다.
컨트롤 유닛(211)은 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트(100)로 전송하는 처리를 수행한다.
예로서, 라이트 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 RAM(212)에 저장된 패스트 레퍼런스 처리 소프트웨어(FRP SW; 201A)를 구동하여 패스트 모드로 레스폰스 정보를 호스트(100)로 전송하는 처리를 수행한다. 세부적으로, 라이트 데이터 전송 플로우의 패스트 모드에서 컨트롤 유닛(211)은 호스트(100)로부터 마지막 데이터를 수신하면 바로 레스폰스 정보를 생성하여 호스트(100)로 전송하는 동작을 수행한다.
예로서, 리드 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 RAM(212)에 저장된 패스트 레퍼런스 처리 소프트웨어(FRP SW 201A)를 구동하여 패스트 모드로 레스폰스 정보를 호스트(100)로 전송하는 처리를 수행한다. 세부적으로, 리드 데이터 전송 플로우의 패스트 모드에서 컨트롤 유닛(211)은 데이터 페이즈에서 호스트(100)로 전송되는 마지막 데이터에 레스폰스 정보를 함께 실어서 전송하는 동작을 수행한다. 이에 따라서, 리드 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에 컨트롤 유닛(211)은 호스트(100)로 전송할 마지막 데이터의 헤더에 포함되는 리저브드 비트 중에서 레스폰스 전송 타입을 결정하기 위하여 할당된 비트를 패스트 모드를 나타내는 값으로 설정하고, 마지막 데이터에 레스폰스 정보를 함께 실어서 호스트(100)로 전송하는 동작을 수행한다.
라이트 데이터 전송 플로우 또는 리드 데이터 전송 플로우에서 패스트 모드로 설정된 레스폰스 전송 타입 정보가 수신되지 않는 경우에, 컨트롤 유닛(211)은 일반 모드로 레스폰스 정보를 호스트(100)로 전송하는 동작을 수행한다.
예로서, 라이트 데이터 전송 플로우에서 일반 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 호스트(100)로부터 마지막 데이터를 수신하여 데이터 버퍼(212-1)에 저장한다. 그리고 나서, 컨트롤 유닛(211)은 데이터 버퍼(212-1)에 저장된 데이터를 메모리 인터페이스(214)를 통하여 접속된 메모리 디바이스(220A)에 라이트하는 동작을 마친 후에, 라이트 커맨드 처리 상태를 나타내는 레스폰스 정보를 호스트(100)로 전송한다.
다른 예로서, 라이트 데이터 전송 플로우에서 일반 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 호스트(100)로부터 마지막 데이터를 수신하여 데이터 버퍼(212-1)에 저장한다. 컨트롤 유닛(211)은 데이터 버퍼(212-1)에 호스트 데이터의 저장을 완료하고 나서 라이트 커맨드 처리 상태를 나타내는 레스폰스 정보를 생성하여 호스트(100)로 전송한다. 즉, 데이터 버퍼(212-1)에 저장된 호스트 데이터를 메모리 디바이스(220A)에 라이트하는 동작을 수행하기 전에 라이트 커맨드 처리 상태를 나타내는 레스폰스 정보를 호스트(100)로 전송할 수 있다.
예로서, 리드 데이터 전송 플로우에서 일반 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 호스트(100)에서 요청한 데이터를 데이터 버퍼(212-1)로부터 읽어내어 호스트(100)로 전송하는 데이터 처리를 마친 후에 리드 커맨드 처리 상태를 나타내는 레스폰스 정보를 생성하여 호스트(100)로 전송한다.
다른 예로서, 리드 데이터 전송 플로우에서 일반 모드로 설정된 레스폰스 전송 타입 정보가 수신되는 경우에, 컨트롤 유닛(211)은 호스트(100)에서 요청한 데이터를 데이터 버퍼(212-1)로부터 읽어내어 호스트(100)로 전송하는 데이터 처리를 마치고, 데이터 버퍼(212-1)를 비운 후에 리드 커맨드 처리 상태를 나타내는 레스폰스 정보를 생성하여 호스트(100)로 전송할 수도 있다
메모리 인터페이스(214)는 메모리 디바이스(220A)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 컨트롤 유닛(211)의 제어에 따라서 메모리 디바이스(220A)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 디바이스(220A)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
호스트 인터페이스(215)는 호스트(100)와의 데이터 교환 프로토콜을 구비하고 스토리지 디바이스(200A)와 호스트(100)를 상호 연결한다. 호스트 인터페이스(215)는 예로서 UFS(Universal Flash Storage) 인터페이스, ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), eMMC(embedded Multi Media Card) 인터페이스, NVMe(Non-Volatile Memory express) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(215)는 커맨드 페이즈(command phase), 데이터 페이즈(data phase) 및 스테터스 페이즈(status phase)로 이루어지는 전송 플로우를 갖는 다양한 규격의 인터페이스가 적용될 수 있다.
도 6은 도 2에 도시된 메모리 디바이스(220A) 구성의 일 예를 보여준다.
도 6을 참조하면, 메모리 디바이스(220A)는 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 메모리 디바이스(220A)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 8의 MC)을 포함할 수 있다.
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(12)은 메모리 컨트롤러(210A)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 메모리 디바이스(220A) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(12)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
본 실시예에서, 전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여, 프로그램 루프가 시작될 때, 즉, 프로그램 루프의 횟수가 1인 경우, 프로그램 시작 전압을 프로그램 전압으로 생성할 수 있다. 또한, 전압 생성부(13)는 프로그램 루프의 횟수가 증가할수록 프로그램 시작 전압에서 스텝 전압만큼 단계적으로 증가하는 전압을 프로그램 전압으로 생성할 수 있다.
로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 7은 도 6에 도시된 메모리 셀 어레이(11)의 일 예를 나타낸다.
도 7을 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 7에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 8은 도 6에 도시된 메모리 셀 어레이(11)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 8을 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 이때, 도 7에 도시된 각 블록들(BLK1 내지 BLKa)은 도 8과 같이 구현될 수 있다. 도 8에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판(도 8의 310) 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
다음으로, 본 발명의 기술적 사상에 따른 메시지 전송 플로우 관리 방법을 도 2의 컴퓨팅 시스템(1000A)의 구성을 참조하여 설명하기로 한다.
도 2에 도시된 호스트(100)와 스토리지 디바이스(200A) 사이의 트랜잭션(transaction)은 예로서, UFS(Universal Flash Storage) 인터페이스를 통해 이루어지는 것으로 설명하기로 한다.
도 9는 본 발명의 실시 예에 따른 UPIU 헤더 포맷을 보여주는 도면이다.
세부적으로, 도 9는 호스트(100)와 스토리지 디바이스(200A) 사이의 메시지 전송 플로우에서 이용되는 JEDEC(Joint Electron Device Engineering Council) 규격에 따른 UPIU(UFS Protocol Information Units)에 포함된 기본적인 헤더 포맷의 예를 보여준다.
도 9를 참조하면, 기본적인 UPIU 헤더(Basic UPIU Header)는 Transaction Type 필드, Flags 필드, LUN 필드, Task Tag 필드, Reserved 필드, Command Set Type 필드, (Query Function, Task Manag. Function) 필드, Response 필드, Status 필드, Total EHS Length 필드, Device Information 필드, Data Segment Length 필드를 포함한다.
Transaction Type 필드는 데이터 구조 내에 포함된 리퀘스트 또는 레스폰스의 타입을 나타내는 필드이다. Flags 필드에는 다양한 플래그 정보들이 포함되어 있다.
도 10은 JEDEC 규격에 따른 UPIU 헤더를 구성하는 플래그 필드의 내용을 보여주는 도면이다.
도 10에 도시된 바와 같이, Flags 필드는 8개의 비트로 구성될 수 있다. TASK ATTRIBUTE 정보를 비트 0 ~ 비트 1에 나타내고, 비트 2 ~ 비트 3은 RESERVED 영역으로 할당되고, 비트 4 ~ 비트 7은 OPERATIONAL FLAGS 정보를 나타낸다. 예로서, COMMAND UPIU 타입에서는 비트 6의 플래그가 "READ(R)" 커맨드 상태를 나타내고, 비트 5의 플래그가 "WRITE(W)" 커맨드 상태를 나타낸다. 예로서, RESPONSE UPIU 타입에서는 비트 6의 플래그가 "OVERFLOW(O)" 상태를 나타내고, 비트 5의 플래그가 "UNDERFLOW(U)" 상태를 나타내고, 비트 4의 플래그가 "DATA OUT MISSMATCH(D)" 상태를 나타낸다.
LUN 필드는 타깃 디바이스에 요청되는 논리적 유닛 번호(Logical Unit Number)를 나타내는 필드이다. Task Tag 필드는 태스크 요청이 생성에 관련된 정보를 나타내는 필드이다. Reserved 필드는 밴더(vendor)가 특정 기능을 위하여 옵션으로 사용할 수 있는 필드이다. Command Set Type 필드는 커맨드 셋 타입에 대한 정보를 나타내는 필드이다. 예로서, SCSI 커맨드 셋, UFS 특정 커맨드 셋, 밴더 특정 커맨드 셋 등을 나타내는 필드이다. (Query Function, Task Manag. Function) 필드는 Query Function 또는 Task management function을 정의하는데 이용되는 필드이다. Response 필드는 타깃 디바이스에서의 리퀘스트의 성공 또는 실패를 나타내는 필드이다. Status 필드는 SCSI 상태를 나타내는 필드이다. Total EHS Length 필드는 UPIU에 포함된 Extra Header Segment 길이를 나타내는 필드이다. Device Information 필드는 디바이스 레벨 정보를 나타내는 필드이다. Data Segment Length 필드는 UPIU의 데이터 세그먼트 내의 유효한 바이트의 개수를 나타내는 필드이다.
본 발명의 일 실시 예에서는 기본적인 UPIU 헤더의 Flags 필드에 포함된 RESERVED 영역의 하나의 비트를 이용하여 레스폰스 전송 타입 정보를 정의한다.
도 11은 본 발명의 일 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 11을 참조하면, UPIU 헤더의 Flags 필드에 포함된 RESERVED 영역의 비트 2를 레스폰스 전송 타입 정보를 나타내는 비트로 이용한다. 즉, UPIU 헤더의 Flags 필드에 포함된 RESERVED 영역의 비트 2에 해당되는 "F" 비트를 레스폰스 전송 타입 정보를 나타내는 비트로 정의한다.
예로서, COMMAMD 타입의 UPIU 헤더, DATA OUT 타입의 UPIU 헤더 또는 DATA IN 타입의 UPIU 헤더 각각의 Flags 필드에 포함된 RESERVED 영역의 "F" 비트를 제1논리 값으로 설정하면 패스트 모드를 나타내고, 제2논리 값으로 설정하면 일반 모드를 나타내도록 정의할 수 있다. 제1논리 값은 "1"이 되고, 제2논리 값은 "0"이 될 수 있다. 다른 예로서, 제1논리 값은 "0"이 되고, 제2논리 값은 "1"이 될 수 있다.
도 12는 본 발명의 다른 실시 예에 따른 UPIU 헤더를 구성하는 플래그 필드의 정의를 보여주는 도면이다.
도 12를 참조하면, UPIU 헤더의 Flags 필드에 포함된 RESERVED 영역의 비트 3을 레스폰스 전송 타입 정보를 나타내는 비트로 이용한다. 즉, UPIU 헤더의 Flags 필드에 포함된 RESERVED 영역의 비트 3에 해당되는 "F" 비트를 레스폰스 전송 타입 정보를 나타내는 비트로 정의한다.
예로서, COMMAMD 타입의 UPIU 헤더, DATA OUT 타입의 UPIU 헤더 또는 DATA IN 타입의 UPIU 헤더 각각의 Flags 필드에 포함된 RESERVED 영역의 "F" 비트를 제1논리 값으로 설정하면 패스트 모드를 나타내고, 제2논리 값으로 설정하면 일반 모드를 나타내도록 정의할 수 있다. 제1논리 값은 "1"이 되고, 제2논리 값은 "0"이 될 수 있다. 다른 예로서, 제1논리 값은 "0"이 되고, 제2논리 값은 "1"이 될 수 있다.
또 다른 예로서, 도 13에 도시된 UPIU 헤더의 Reserved 필드에 포함된 적어도 하나의 비트를 레스폰스 전송 타입 정보를 나타내는 비트로 정의할 수도 있다.
도 13은 본 발명의 실시 예에 따른 COMMAND UPIU의 내용을 예시적으로 보여주는 도면이다.
도 13을 참조하면, COMMAND UPIU의 0 ~ 11로 표시된 12 바이트들은 기본적인 UPIU 헤더를 구성하는 바이트들이다. 기본적인 UPIU 헤더에 대해서는 도 9 내지 도 12에서 설명하였으므로 중복적인 설명은 피하기로 한다.
참고적으로, UPIU 헤더의 Flags 필드의 "R" 비트를 "1"로 설정하면 리드 커맨드를 나타내고, UPIU 헤더의 Flags 필드의 "W" 비트를 "1"로 설정하면 라이트 커맨드를 나타낸다. 그리고, COMMAND UPIU의 CDB 필드는 커맨드 디스크립터 블록(Command Descriptor Block)을 나타내고, 16바이트로 구성될 수 있다.
도 14는 본 발명의 실시 예에 따른 RTT UPIU의 내용을 예시적으로 보여주는 도면이다.
RTT(Ready To Transfer) UPIU는 라이트 커맨드를 처리할 때 데이터를 수신할 준비가 되었을 때 타깃(Target)에 의하여 발행된다.
도 14를 참조하면, RTT UPIU의 0 ~ 11로 표시된 12 바이트들은 기본적인 UPIU 헤더를 구성하는 바이트들이다. 그리고, DATA BUFFER OFFSET 필드는 데이터 세그먼트의 시작 위치를 나타내는 필드이고, DATA TRANSFER COUNT 필드는 디바이스에서 전송 요구하는 데이터의 바이트 개수를 나타내는 필드이다.
도 15는 본 발명의 실시 예에 따른 DATA OUT UPIU의 내용을 예시적으로 보여주는 도면이다.
DATA OUT UPIU는 타깃(Target)에서 데이터를 수신할 준비가 되어 있을 때 이니시에이터(Initiator)에서 타깃으로 데이터를 전송하기 위한 UPIU이다. 예로서, 이니시에이터는 호스트(100)가 될 수 있고, 타깃은 스토리지 디바이스(200A)가 될 수 있다.
도 15를 참조하면, DATA OUT UPIU 의 0 ~ 11로 표시된 12 바이트들은 기본적인 UPIU 헤더를 구성하는 바이트들이다. 그리고, DATA BUFFER OFFSET 필드는 데이터 전송 영역 내에서 UPIU 데이터 페이로드(payload)의 오프셋을 나타내는 필드이고, DATA TRANSFER COUNT 필드는 타깃으로 전송하는 데이터의 바이트 개수를 나타내는 필드이다.
도 16은 본 발명의 실시 예에 따른 DATA IN UPIU의 내용을 예시적으로 보여주는 도면이다.
DATA IN UPIU는 리드 커맨드를 처리할 때 타깃으로부터 이니시에이터로 데이터를 전송하기 위한 UPIU이다.
도 16을 참조하면, DATA IN UPIU 의 0 ~ 11로 표시된 12 바이트들은 기본적인 UPIU 헤더를 구성하는 바이트들이다. 그리고, DATA BUFFER OFFSET 필드는 데이터 전송 영역 내에서 UPIU 데이터 페이로드(payload)의 오프셋을 나타내는 필드이고, DATA TRANSFER COUNT 필드는 이니시에이터로 전송하는 데이터의 바이트 개수를 나타내는 필드이다.
도 17은 본 발명의 실시 예에 따른 RESPONSE UPIU의 내용을 예시적으로 보여주는 도면이다.
RESPONSE UPIU는 이니시에이터로부터 요청된 커맨드를 타깃에서 성공적으로 처리했는지를 나타내는 상태 정보를 이니시에이터로 전송하기 위한 UPIU이다.
도 17을 참조하면, DATA IN UPIU 의 0 ~ 11로 표시된 12 바이트들은 기본적인 UPIU 헤더를 구성하는 바이트들이다. 참고적으로, UPIU 헤더의 RESPONSE 필드는 이니시에이터로부터 전송된 커맨드 및 데이터 처리를 성공적으로 수행했는지를 나타내는 필드이다. 또한, UPIU 헤더의 FLAGS 필드를 통하여 타깃에서의 오버플로우 상태, 언더플로우 상태 또는 DATA OUT MISMATCH 상태를 나타낼 수 있다. RESIDUAL TRANSFER COUNT 필드는 예측한 것보다 높거나 낮은 속도로 데이터가 송/수신된 경우에 이니시에이터로부터 송/수신되지 않은 데이터의 바이트 개수를 나타내는 필드이다. SENSE DATA 필드는 유효하게 감지된 데이터 바이트의 개수를 나타내는 필드이다.
다음으로, 도 2에 도시된 컴퓨팅 시스템(1000A)의 호스트(100)와 스토리지 디바이스(200A) 사이에서 이루어지는 메시지 전송 플로우에 대하여 도 18 내지 도 21을 참조하여 설명하기로 한다.
도 18은 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
호스트(100)에서 라이트 요구(write request)가 발생되는 경우에, 호스트(100)는 라이트 커맨드(WRITE COMMAND)를 나타내는 COMMAND UPIU(UFS Protocol Information Units)를 생성하여 스토리지 디바이스(200A)로 전송한다(S11). 예로서, 호스트(100)는 도 13에 도시된 바와 같은 규격으로 라이트 커맨드를 나타내는 COMMAND UPIU를 생성시킬 수 있다.
그리고, 예로서, 도 11 또는 도 12와 같이 COMMAND UPIU의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내는 비트로 할당된 "F" 비트를 이용하여 레스폰스 전송 타입 정보를 설정할 수 있다. 세부적으로, "F" 비트를 일반 모드의 레스폰스 전송 타입으로 설정할 수 있다. 다른 예로서, 도 10과 같이 COMMAND UPIU의 헤더에 레스폰스 전송 타입 정보를 나타내는 비트가 할당되어 있지 않은 경우에도 일반 모드로 동작한다. 도 19의 리드 메시지 전송 플로우에서는 일반 모드로 설정되어 있거나 또는 COMMAND UPIU의 헤더에 레스폰스 전송 타입 정보를 나타내는 비트가 할당되어 있지 않은 경우에도 일반 모드로 동작한다.
예로서, "F" 비트가 일반 모드의 레스폰스 전송 타입으로 설정되어 있거나 또는 레스폰스 전송 타입 정보를 나타내는 비트가 할당되지 않은 일반 모드로 설정된 경우의 라이트 메시지 전송 플로우는 다음과 같다.
스토리지 디바이스(200A)는 COMMAND UPIU를 수신하여 COMMAND UPIU에 포함된 라이트 커맨드를 커맨드 큐(213)에 저장한 후에, RTT(Ready To Transfer) UPIU를 생성하여 호스트(100)로 전송한다(S12_1). 예로서, 스토리지 디바이스(200A)는 도 14에 도시된 바와 같은 규격으로 RTT UPIU를 생성시킬 수 있다.
호스트(100)는 RTT UPIU를 수신한 후에 첫 번째 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다(S13_1). 예로서, 호스트(100)는 도 14에 도시된 바와 같은 규격으로 DATA OUT UPIU를 생성시킬 수 있다.
스토리지 디바이스(200A)는 DATA OUT UPIU를 수신하여 DATA OUT UPIU에 포함된 데이터를 데이터 버퍼(212-1)에 저장한 후에 호스트(100)로부터 수신할 데이터가 남아 있으면, RTT UPIU를 생성하여 호스트(100)로 전송한다. 그리고, 호스트(100)는 RTT UPIU를 수신한 후에 다음 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다. 이와 같은 방식으로, 호스트 데이터를 스토리지 디바이스(200A)로 전송한다.
스토리지 디바이스(200A)는 DATA OUT UPIU를 수신한 후에 호스트(100)로부터 수신할 데이터가 남아 있으면, N(N은 1 이상의 정수)번째 RTT UPIU를 생성하여 호스트(100)로 전송한다(S12_N). 호스트(100)는 N번째 RTT UPIU를 수신한 후에 N번째 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다(S13_N).
예로서, 오퍼레이션 S13_1 ~ 오퍼레이션 S13_N에서 생성되는 DATA OUT UPIU는 도 10에 도시된 바와 같은 플래그 필드의 사양을 갖는UPIU 헤더를 포함하는 DATA OUT UPIU이 될 수 있다.
다른 예로서, 오퍼레이션 S13_1 ~ 오퍼레이션 S13_N에서 생성되는DATA OUT UPIU는 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는DATA OUT UPIU이 될 수 있다. 이 경우에, "F" 비트는 일반 모드의 레스폰스 전송 타입으로 설정된다.
스토리지 디바이스(200A)는 N번째 호스트 데이터인 DATA OUT UPIU에 포함된 데이터가 마지막 데이터인 경우에, 스토리지 디바이스(200A)는 데이터 처리를 마친 후에 RESPONSE UPIU를 생성하여 호스트(100)로 전송한다(S14). 여기에서, RESPONSE UPIU는 호스트(100)로부터 수신된 라이트 커맨드가 정상적으로 처리되었는지를 나타내는 스테터스(STATUS) 정보이다. 예로서, 스토리지 디바이스(200A)는 도 17에 도시된 바와 같은 규격으로 RESPONSE UPIU를 생성시킬 수 있다.
위와 같이 일반 모드로 레스폰스 전송 타입이 설정되어 있는 경우에, 스토리지 디바이스(200A)는 N번째 호스트 데이터인 DATA OUT UPIU에 포함된 데이터를 데이터 버퍼(212-1)에 저장하는 동작을 마친 후에 RESPONSE UPIU를 생성하여 호스트(100)로 전송할 수 있다. 다른 예로서, 일반 모드로 레스폰스 전송 타입이 설정되어 있는 경우에, 스토리지 디바이스(200A)는 N번째 호스트 데이터인 DATA OUT UPIU에 포함된 데이터를 데이터 버퍼(212-1)에 저장하고 데이터 버퍼(212-1)에 저장된 데이터를 메모리 디바이스(220A)에 라이트하는 동작을 마친 후에 RESPONSE UPIU를 생성하여 호스트(100)로 전송할 수도 있다.
만일, N이 1인 경우에는 오퍼레이션 S13_1을 수행하고 나서 오퍼레이션 S14를 수행한다. 이 경우에, 당연히 오퍼레이션 S12_N 및 S13_N은 수행되지 않는다.
이에 따라서, 일반 모드에서는 스토리지 디바이스(200A)에서의 마지막 DATA OUT UPIU를 수신한 시점부터 RESPONSE UPIU를 호스트(100)로 전송하는 시점까지의 T1의 레이턴시(latency)가 발생된다. 예로서, T1 구간에는 호스트(100)로부터 수신되는 마지막 데이터를 스토리지 디바이스(200A)에서 처리하여 데이터 버퍼(212-1)에 저장하고, RESPONSE UPIU를 생성하는데 필요한 시간이 포함될 수 있다. 다른 예로서, T1 구간에는 호스트(100)로부터 수신되는 마지막 데이터를 데이터 버퍼(212-1)에 저장하고, 데이터 버퍼(212-1)에 저장된 데이터를 메모리 디바이스(220A)에 라이트하고, RESPONSE UPIU를 생성하는데 필요한 시간이 포함될 수도 있다.
도 19는 본 발명의 실시 예에 따른 레스폰스 정보를 일반 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
호스트(100)에서 리드 요구(read request)가 발생되는 경우에, 호스트(100)는 리드 커맨드(READ COMMAND)를 나타내는 COMMAND UPIU(UFS Protocol Information Units)를 생성하여 스토리지 디바이스(200A)로 전송한다(S21). 예로서, 호스트(100)는 도 13에 도시된 바와 같은 규격으로 리드 커맨드를 나타내는 COMMAND UPIU를 생성시킬 수 있다. 그리고, 예로서, 도 11 또는 도 12와 같이 COMMAND UPIU의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내는 비트로 할당된 "F" 비트를 이용하여 레스폰스 전송 타입 정보를 설정할 수 있다. 세부적으로, "F" 비트를 일반 모드의 레스폰스 전송 타입으로 설정할 수 있다. 다른 예로서, 도 10과 같이 COMMAND UPIU의 헤더에 레스폰스 전송 타입 정보를 나타내는 비트가 할당되어 있지 않은 경우에도 일반 모드로 동작한다. 도 19의 리드 메시지 전송 플로우에서는 일반 모드로 설정되어 있거나 또는 COMMAND UPIU의 헤더에 레스폰스 전송 타입 정보를 나타내는 비트가 할당되어 있지 않은 경우에도 일반 모드로 동작한다.
스토리지 디바이스(200A)는 COMMAND UPIU를 수신하여 COMMAND UPIU에 포함된 리드 커맨드를 커맨드 큐(213)에 저장한 후, 커맨드 큐(213)에 저장된 커맨드에 따라서 메모리 디바이스(220A)로부터 데이터를 읽어내어 데이터 버퍼(212-1)에 저장하는 동작을 수행한다.
이와 같은 동작을 마친 후에 스토리지 디바이스(200A)는 데이터 버퍼(212-1)에 저장된 데이터를 전송 사이즈 단위로 나누어 순차적으로 호스트(100)로 전송한다(S22_1 ~ S22_N). 즉, 스토리지 디바이스(200A)는 N(N은 1 이상의 정수)개의 DATA IN UPIU를 생성하여 순차적으로 호스트(100)로 전송한다. 예로서, 스토리지 디바이스(200A)는 도 16에 도시된 바와 같은 규격으로 DATA IN UPIU를 생성시킬 수 있다.
예로서, 오퍼레이션 S22_1 ~ 오퍼레이션S22_N에서 생성되는 DATA IN UPIU는 도 10에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA IN UPIU이 될 수 있다.
다른 예로서, 오퍼레이션 S22_1 ~ 오퍼레이션S22_N에서 생성되는 DATA IN UPIU는 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA IN UPIU이 될 수 있다. 이 경우에, "F" 비트는 일반 모드의 레스폰스 전송 타입으로 설정된다.
스토리지 디바이스(200A)는 리드 커맨드에 따른 호스트(100)로 데이터 전송을 마친 후에, RESPONSE UPIU를 생성하여 호스트(100)로 전송한다(S23). 여기에서, RESPONSE UPIU는 호스트(100)로부터 수신된 리드 커맨드가 정상적으로 처리되었는지를 나타내는 스테터스(STATUS) 정보이다. 예로서, 스토리지 디바이스(200A)는 도 17에 도시된 바와 같은 규격으로 RESPONSE UPIU를 생성시킬 수 있다.
만일, N이 1인 경우에는 오퍼레이션 S22_1을 수행하고 나서 오퍼레이션 S23를 수행한다. 이 경우에, 당연히 오퍼레이션 S22_N은 수행되지 않는다.
위와 같이 일반 모드로 레스폰스 전송 타입이 설정되어 있는 경우에, 스토리지 디바이스(200A)에서 마지막 DATA IN UPIU를 호스트(100)로 전송한 시점부터 RESPONSE UPIU를 호스트(100)로 전송하는 시점까지의 T2의 레이턴시(latency)가 발생된다. 예로서, T2 구간에는 호스트(100)로 데이터를 전송하고 나서 RESPONSE UPIU를 생성하는데 필요한 시간이 포함될 수 있다. 다른 예로서, T2 구간에는 호스트(100)로 데이터를 전송하고 나서 데이터 버퍼(212-1)를 비우는 동작을 수행하는데 필요한 시간이 포함될 수도 있다.
도 20은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 라이트 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
호스트(100)에서 라이트 요구(write request)가 발생되는 경우에, 호스트(100)는 라이트 커맨드(WRITE COMMAND)를 나타내는 COMMAND UPIU(UFS Protocol Information Units)를 생성하여 스토리지 디바이스(200A)로 전송한다(S31). 예로서, 호스트(100)는 도 13에 도시된 바와 같은 규격으로 라이트 커맨드를 나타내는 COMMAND UPIU를 생성시킬 수 있다.
예로서, 오퍼레이션 S31에서 호스트(100)는 COMMAND UPIU의 헤더에 레스폰스 전송 타입 정보를 나타내는 "F" 비트를 일반 모드와 동일하게 설정할 수 있다. 다른 예로서, "F" 비트 사용하지 않는 일반 모드와 동일하게 도 10과 같은 UPIU FLAGS 규격을 갖는 COMMAND UPIU를 생성시킬 수 있다. 또 다른 예로서, 오퍼레이션 S31에서 호스트(100)는 COMMAND UPIU의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내는 비트로 할당된 "F" 비트를 이용하여 패스트 모드를 나타내는 레스폰스 전송 타입 정보를 설정할 수도 있다. 즉, "F" 비트를 패스트 모드의 레스폰스 전송 타입으로 설정할 수도 있다.
본 발명의 일 실시 예에서는 오퍼레이션 S31에서 호스트(100)는 "F" 비트 사용하지 않는 일반 모드와 동일한 규격으로 COMMAND UPIU를 한다.
스토리지 디바이스(200A)는 COMMAND UPIU를 수신하여 COMMAND UPIU에 포함된 라이트 커맨드를 커맨드 큐(213)에 저장한 후에, RTT(Ready To Transfer) UPIU를 생성하여 호스트(100)로 전송한다(S32_1). 예로서, 스토리지 디바이스(200A)는 도 14에 도시된 바와 같은 규격으로 RTT UPIU를 생성시킬 수 있다.
호스트(100)는 RTT UPIU를 수신한 후에 첫 번째 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다(S33_1). 예로서, 호스트(100)는 도 14에 도시된 바와 같은 규격으로 DATA OUT UPIU를 생성시킬 수 있다.
스토리지 디바이스(200A)는 DATA OUT UPIU를 수신하여 DATA OUT UPIU에 포함된 데이터를 데이터 버퍼(212-1)에 저장한 후에 호스트(100)로부터 수신할 데이터가 남아 있으면, RTT UPIU를 생성하여 호스트(100)로 전송한다. 그리고, 호스트(100)는 RTT UPIU를 수신한 후에 다음 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다. 이와 같은 방식으로, 호스트 데이터를 스토리지 디바이스(200A)로 전송한다.
예로서, 오퍼레이션 S33_1 ~ 오퍼레이션 S33_(N-1)에서 생성되는 DATA OUT UPIU는 도 10에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA OUT UPIU이 될 수 있다.
다른 예로서, 오퍼레이션 S33_1 ~ 오퍼레이션 S33_(N-1)에서 생성되는 DATA OUT UPIU는 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA OUT UPIU이 될 수 있다. 이 경우에, "F" 비트는 일반 모드의 레스폰스 전송 타입으로 설정된다.
스토리지 디바이스(200A)는 DATA OUT UPIU를 수신한 후에 호스트(100)로부터 수신할 데이터가 남아 있으면, N(N은 1 이상의 정수)번째 RTT UPIU를 생성하여 호스트(100)로 전송한다(S32_N). 호스트(100)는 N번째 RTT UPIU를 수신한 후에 N번째 호스트 데이터인 DATA OUT UPIU를 스토리지 디바이스(200A)로 전송한다(S33_N). 마지막 데이터를 전송하는 오퍼레이션 S33_N에서 호스트(100)는 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양에서 "F" 비트를 패스트 모드의 레스폰스 전송 타입을 설정하는 UPIU 헤더를 포함하는DATA OUT UPIU를 생성한다.
스토리지 디바이스(200A)는 N번째의 마지막 DATA OUT UPIU를 수신하는 경우에, DATA OUT UPIU의 헤더에 포함된 "F" 비트가 패스트 모드로 설정되어 있는지를 확인한다. 그리고, 스토리지 디바이스(200A)는 마지막 DATA OUT UPIU의 헤더에 포함된 "F" 비트가 패스트 모드로 설정되어 있으면, RESPONSE UPIU를 생성하여 바로 호스트(100)로 전송한다(S34). 예로서, 스토리지 디바이스(200A)는 도 17에 도시된 바와 같은 규격으로 RESPONSE UPIU를 생성시킬 수 있다.
만일 N이 1인 경우에 오퍼레이션 S32_1 ~ S33_(N-1)은 수행되지 않고, 오퍼레이션 S32_N 및 S33_N이 수행된다.
이와 같이, 스토리지 디바이스(200A)는 패스트 모드에서 마지막 DATA OUT UPIU를 수신한 후에 바로 RESPONSE UPIU를 호스트(100)로 전송한다. 예로서, 스토리지 디바이스(200A)는 RESPONSE UPIU를 생성하여 호스트(100)로 전송한 후 마지막 DATA OUT UPIU를 데이터 버퍼(212-1)에 저장하는 동작을 수행할 수 있다. 다른 예로서, 스토리지 디바이스(200A)는 RESPONSE UPIU를 생성하여 호스트(100)로 전송하는 동작과 병행하여 마지막 DATA OUT UPIU를 데이터 버퍼(212-1)에 저장하는 동작을 수행할 수 있다.
이에 따라서, 마지막 DATA OUT UPIU를 수신한 시점부터 RESPONSE UPIU를 호스트(100)로 전송하는 시점까지의 레이턴시(latency)를 줄일 수 있게 된다. 즉, 도 18과 같은 일반 모드에 따른 라이트 메시지 전송 플로우에서 발생되는 T1의 레이턴시를 패스트 모드에서는 줄일 수 있게 된다.
도 21은 본 발명의 실시 예에 따른 레스폰스 정보를 패스트 모드로 전송하는 리드 메시지 전송 플로우를 예시적으로 보여주는 흐름도이다.
호스트(100)에서 리드 요구(read request)가 발생되는 경우에, 호스트(100)는 리드 커맨드(READ COMMAND)를 나타내는 COMMAND UPIU(UFS Protocol Information Units)를 생성하여 스토리지 디바이스(200A)로 전송한다(S41). 예로서, 호스트(100)는 도 13에 도시된 바와 같은 규격으로 리드 커맨드를 나타내는 COMMAND UPIU를 생성시킬 수 있다. 그리고, 예로서, 도 11 또는 도 12와 같이 COMMAND UPIU의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내는 비트로 할당된 "F" 비트를 패스트 모드의 레스폰스 전송 타입으로 설정한다.
스토리지 디바이스(200A)는 COMMAND UPIU를 수신하여 COMMAND UPIU에 포함된 리드 커맨드를 커맨드 큐(213)에 저장한 후, 커맨드 큐(213)에 저장된 커맨드에 따라서 메모리 디바이스(220A)로부터 데이터를 읽어내어 데이터 버퍼(212-1)에 저장하는 동작을 수행한다. 예로서, 스토리지 디바이스(200A)는 COMMAND UPIU에 포함된 "F" 비트에 대한 정보를 커맨드 큐(213) 이외의 별도의 레지스터에 저장할 수도 있다.
이와 같은 동작을 마친 후에 스토리지 디바이스(200A)는 데이터 버퍼(212-1)에 저장된 데이터를 전송 사이즈 단위로 나누어 마지막 이전까지의 데이터까지 순차적으로 호스트(100)로 전송한다(S42_1 ~ S42_(N-1)). 즉, 스토리지 디바이스(200A)는 N(N은 1 이상의 정수)개의 DATA IN UPIU를 생성하여 순차적으로 호스트(100)로 전송한다. 예로서, 스토리지 디바이스(200A)는 도 16에 도시된 바와 같은 규격으로 DATA IN UPIU를 생성시킬 수 있다.
예로서, 오퍼레이션 S42_1 ~ 오퍼레이션 S42_(N-1)에서 생성되는 DATA IN UPIU는 도 10에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA IN UPIU이 될 수 있다.
다른 예로서, 오퍼레이션 S42_1 ~ 오퍼레이션 S42_(N-1)에서 생성되는 DATA IN UPIU는 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양을 갖는 UPIU 헤더를 포함하는 DATA IN UPIU이 될 수 있다. 이 경우에, "F" 비트는 일반 모드의 레스폰스 전송 타입으로 설정된다.
다음으로, 스토리지 디바이스(200A)는 마지막 데이터를 전송하기 전에 오퍼레이션 S41에서 수신된 COMMAND UPIU에 포함된 "F" 비트에 대한 정보를 저장하는 레지스터를 확인한다.
스토리지 디바이스(200A)는 레지스터에 저장된 "F" 비트에 대한 정보가 패스트 모드를 나타내는 경우에, 도 11 또는 12에 도시된 바와 같은 플래그 필드의 사양에서 "F" 비트를 패스트 모드의 레스폰스 전송 타입을 설정하는 UPIU 헤더를 포함하는 DATA IN UPIU를 생성한다. 또한 이와 더불어 RESPONSE UPIU도 생성한다. 예로서, 스토리지 디바이스(200A)는 도 17에 도시된 바와 같은 규격으로 RESPONSE UPIU를 생성시킬 수 있다.
그리고 나서, 스토리지 디바이스(200A)는 "F" 비트를 패스트 모드의 레스폰스 전송 타입을 설정하는 UPIU 헤더를 포함하는 DATA IN UPIU에 RESPONSE UPIU를 함께 실어서 호스트(100)로 전송한다(S42_N).
만일, N이 1인 경우에 오퍼레이션 S42_1 ~ S42_(N-1)은 수행되지 않는다.
호스트(100)는 수신된 DATA IN UPIU의 헤더에 포함된 "F" 비트가 패스트 모드를 나타내는 값으로 설정되어 있으면, DATA IN UPIU 다음에 실려온 RESPONSE UPIU를 파싱하여 RESPONSE UPIU를 처리한다.
이와 같이, 스토리지 디바이스(200A)는 "F" 비트를 패스트 모드로 설정하는 마지막 모DATA IN UPIU에 RESPONSE UPIU를 실어서 함께 호스트(100)로 전송한다.
이에 따라서, 호스트(100)로 마지막 DATA IN UPIU를 전송한 시점부터 RESPONSE UPIU를 전송하는 시점까지의 레이턴시(latency)를 줄일 수 있게 된다. 즉, 도 19와 같은 일반 모드에 따른 라이트 메시지 전송 플로우에서 발생되는 T2의 레이턴시를 패스트 모드에서는 줄일 수 있게 된다.
다음으로, 도 1 내지 도 8에 도시된 본 발명의 실시 예들을 포함하는 다양한 방식의 컴퓨팅 시스템의 디바이스에서 수행되는 메시지 전송 플로우 관리 방법에 대하여 도 22 내지 도 23의 흐름도를 참조하여 설명하기로 한다
도 22는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법의 흐름도이다.
우선, 디바이스는 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 호스트로부터 수신한다(S110).
예로서, 상기 호스트로부터 전송되는 커맨드 정보의 헤더 또는 데이터의 헤더에 포함된 리저브드 비트를 통하여 레스폰스 전송 타입 정보를 수신할 수 있다. 세부적으로, 호스트와 디바이스 사이에서 이용되는 인터페이스 규격이 UFS(Universal Flash Storage)인 경우에 UPIU(UFS Protocol Information Units) 헤더에 포함된 리저브드 비트를 통하여 레스폰스 전송 타입 정보를 수신할 수 있다. 위의 리저브드 비트는 UPIU를 구성하는 플래그 필드의 리저브드 비트를 포함할 수 있다. 구체적인 예로서, 도 11 및 도 12에 도시된 UPIU 플래그 필드의 "F" 비트를 통하여 레스폰스 전송 타입 정보를 수신할 수 있다.
예로서, 리드 데이터 전송 플로우에서 디바이스는 COMMANDUPIU(UFS Protocol Information Units)의 헤더에 포함된 리저브드 비트를 통하여 레스폰스 전송 타입 정보를 수신할 수 있다. 다른 예로서, 라이트 데이터 전송 플로우에서 디바이스는 DATA OUT UPIU(UFS Protocol Information Units)의 헤더에 포함된 리저브드 비트를 통하여 레스폰스 전송 타입 정보를 수신할 수 있다.
다음으로, 디바이스는 호스트로부터 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 하나의 모드로 레스폰스 정보를 호스트로 전송한다(S120). 예로서, 수신된 레스폰스 전송 타입 정보가 일반 모드를 나타내는 경우에, 디바이스는 일반 모드로 레스폰스 정보를 호스트로 전송한다. 다른 예로서, 수신된 레스폰스 전송 타입 정보가 패스트 모드를 나타내는 경우에, 디바이스는 일반 모드보다 레이턴시가 짧은 패스트 모드로 레스폰스 정보를 호스트로 전송한다.
도 23은 도 22에 도시된 레스폰스 정보 전송 단계(S120)에 대한 세부 흐름도를 예시적으로 보여주는 도면이다.
디바이스는 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 호스트로부터 수신된 레스폰스 전송 타입 정보를 검출하여, 검출된 레스폰스 전송 타입 정보가 패스트 모드를 나타내는지 판단한다(S120-1).
오퍼레이션 S120-1의 판단 결과 패스트 모드를 나타내는 경우에, 디바이스는 라이트 메시지 전송 플로우 또는 리드 메시지 전송 플로우에서 패스트 모드로 레스폰스 정보를 호스트로 전송한다(S120-2).
예로서, 라이트 데이터 전송 플로우에서 패스트 모드로 판단된 경우에 디바이스는 호스트로부터 마지막 데이터를 수신한 후에 바로 레스폰스 정보를 호스트로 전송한다. 구체적으로, 라이트 데이터 전송 플로우에서 데이터 페이즈에서의 마지막 DATA OUT UPIU의 헤더에 포함된 리저브드 비트를 통하여 패스트 모드의 레스폰스 전송 타입 정보가 수신되는 경우에, 디바이스는 마지막 DATA OUT UPIU를 수신하자마자 RESPONSE UPIU를 호스트로 전송할 수 있다.
다른 예로서, 리드 데이터 전송 플로우에서 패스트 모드로 판단된 경우에 디바이스는 데이터 페이즈에서 마지막 데이터에 레스폰스 정보를 함께 실어서 호스트로 전송한다. 구체적으로, 리드 데이터 전송 플로우에서 패스트 모드로 판단된 경우에 디바이스는 데이터 페이즈의 마지막 DATA IN UPIU의 레스폰스 전송 타입 정보를 나타내기 위하여 할당된 리저브드 비트를 패스트 모드의 레스폰스 전송 타입 정보를 나타내는 값으로 설정하고, 마지막DATA IN UPIU의 뒤에 RESPONSE UPIU를 실어서 호스트로 전송할 수 있다.
오퍼레이션 S120-1의 판단 결과 패스트 모드가 아닌 경우에, 디바이스는 라이트 메시지 전송 플로우 또는 리드 메시지 전송 플로우에서 일반 모드로 레스폰스 정보를 호스트로 전송한다(S120-3).
예로서, 라이트 데이터 전송 플로우에서 일반 모드로 판단된 경우에 디바이스는 호스트로부터 수신되는 데이터를 데이터 버퍼에 저장하는 동작을 마친 후에 레스폰스 정보를 호스트로 전송할 수 있다. 다른 예로서, 라이트 데이터 전송 플로우에서 일반 모드로 판단된 경우에 디바이스는 호스트로부터 수신되는 데이터를 메모리 디바이스에 라이트하는 동작을 마친 후에 레스폰스 정보를 호스트로 전송할 수도 있다.
또 다른 예로서, 리드 데이터 전송 플로우에서 일반 모드로 판단된 경우에 디바이스는 메모리 디바이스로부터 읽어내어 데이터 버퍼에 저장된 데이터를 호스트로 보내는 동작을 마친 후에 레스폰스 정보를 생성시켜 호스트로 전송할 수 있다. 또 다른 예로서, 리드 데이터 전송 플로우에서 일반 모드로 판단된 경우에 디바이스는 메모리 디바이스로부터 읽어내어 데이터 버퍼에 저장된 데이터를 호스트로 보내는 동작을 마친 후에 데이터 버퍼를 비우는 동작을 수행하고 나서 레스폰스 정보를 생성시켜 호스트로 전송할 수도 있다.
도 24는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 메모리 카드 시스템(2000)에 대한 블록 구성도이다.
도 24를 참조하면, 메모리 카드 시스템(2000)은 호스트(2100) 및 메모리 카드(2200)를 포함할 수 있다. 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 접속부(2120)를 포함할 수 있다. 메모리 카드(2200)는 카드 접속부(2210), 카드 컨트롤러(2220) 및 메모리 디바이스(2230)를 포함할 수 있다. 이 때, 호스트 컨트롤러(2110)에는 도 1에 도시된 패스트 레퍼런스 지원 모듈(101)에 대한 하드웨어 또는 소프트웨어가 포함되고, 카드 컨트롤러(2220)에는 도 1에 도시된 패스트 레퍼런스 처리 모듈(201)에 대한 하드웨어 또는 소프트웨어가 포함된다. 이에 따라서, 호스트(2100)와 메모리 카드(2200) 사이에서 도 18 내 도 23에 대한 흐름도에 따른 메시지 전송 플로우 관리 방법이 수행될 수 있다.
호스트(2100)는 메모리 카드(2200)에 데이터를 기록하거나, 메모리 카드(2200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(2110)는 커맨드(CMD), 호스트(2100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(2120)를 통해 메모리 카드(2200)로 전송할 수 있다.
카드 컨트롤러(2220)는 카드 접속부(2210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 디바이스(2230)에 저장할 수 있다. 메모리 디바이스(2230)는 호스트(2100)로부터 전송된 데이터를 저장할 수 있다. 카드 컨트롤러(2220)는 호스트(2100)로부터 수신되는 레스폰스 전송 타입 정보에 기초하여 패스트 모드 또는 일반 모드로 레퍼런스 정보를 생성시켜 호스트(2100)로 전송할 수 있다.
메모리 카드(2200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 25는 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 SSD 시스템(3000)에 대한 블록 구성도이다.
도 25를 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함할 수 있다. SSD(3200)는 신호 커넥터(signal connector)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(3200)는 SSD 컨트롤러(3210), 보조 전원 장치(3220) 및 복수의 메모리 디바이스들(3230, 3240, 3250)을 포함할 수 있다. 이때, 이 때, 호스트 컨트롤러(3100)에는 도 1에 도시된 패스트 레퍼런스 지원 모듈(101)에 대한 하드웨어 또는 소프트웨어가 포함되고, SSD 컨트롤러(3210)에는 도 1에 도시된 패스트 레퍼런스 처리 모듈(201)에 대한 하드웨어 또는 소프트웨어가 포함된다. 이에 따라서, 호스트(3100)와 SSD(3200) 사이에서 도 18 내 도 23에 대한 흐름도에 따른 메시지 전송 플로우 관리 방법이 수행될 수 있다.
도 26은 본 발명의 실시 예에 따른 메시지 전송 플로우 관리 방법이 적용되는 컴퓨팅 시스템 구성의 다른 예(4000)를 보여준다.
도 26을 참조하면, 컴퓨팅 시스템(4000)은 메모리 시스템(4100), 프로세서(4200), RAM(4300), 입출력 장치(4400), 전원 장치(4500) 및 버스(4600)를 포함할 수 있다. 또한, 메모리 시스템(4100)은 메모리 디바이스(4110) 및 메모리 컨트롤러(4120)를 포함할 수 있다. 한편, 도 26에는 도시되지 않았지만, 컴퓨팅 시스템(4000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(4000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(4200)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(4200)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(4200)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(4600)를 통하여 RAM(4300), 입출력 장치(4400) 및 메모리 시스템(4100)과 통신을 수행할 수 있다.
일 실시예에 따라, 프로세서(4200)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(4300)는 컴퓨팅 시스템(4000)의 동작에 필요한 데이터를 저장할 수 있다. 전술한 바와 같이, RAM(4300)는 본 발명의 실시예에 따른 메모리 장치가 적용될 수 있으며, 또는 다른 메모리로서 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 엠램(MRAM) 등이 RAM(4300)으로 이용될 수 있다.
입출력 장치(4400)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(4500)는 컴퓨팅 시스템(4000)의 동작에 필요한 동작 전압을 공급할 수 있다.
프로세서(4200) 및 RAM(4300)은 도 3에 도시된 프로세서(110) 및 RAM(120)이 될 수 있으며, 메모리 컨트롤러(4120)는 도 2에 도시된 메모리 컨트롤러(210A)가 될 수 있다.
한편, 상기에서 설명된 본 발명에 적용되는 스토리지 디바이스는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 스토리지 디바이스는PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000, 1000A, 4000: 컴퓨팅 시스템 100, 100A: 호스트
200, 200A: 스토리지 디바이스 메모리 컨트롤러: 210A
110: 프로세서 120, 120A, 212: RAM
130: 디바이스 인터페이스 140, 216: 버스
211: 컨트롤 유닛 213: 커맨드 큐
214: 메모리 인터페이스 215: 호스트 인터페이스
11: 메모리 셀 어레이 12: 제어 로직
13: 전압 생성부 14: 로우 디코더
15: 페이지 버퍼
200, 200A: 스토리지 디바이스 메모리 컨트롤러: 210A
110: 프로세서 120, 120A, 212: RAM
130: 디바이스 인터페이스 140, 216: 버스
211: 컨트롤 유닛 213: 커맨드 큐
214: 메모리 인터페이스 215: 호스트 인터페이스
11: 메모리 셀 어레이 12: 제어 로직
13: 전압 생성부 14: 로우 디코더
15: 페이지 버퍼
Claims (10)
- 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 레스폰스 전송 타입 정보를 스토리지 디바이스에서 수신하는 단계; 및
상기 수신된 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 단계를 포함하고,
상기 레스폰스 전송 타입 정보는 레스폰스 전송 타입을 나타내는 리저브드 비트를 포함하는 것을 특징으로 하는 메시지 전송 플로우 관리 방법. - 제1항에 있어서, 상기 리저브드 비트는 상기 호스트로부터 전송되는 커맨드 정보의 헤더 또는 데이터의 헤더에 포함되는 것을 특징으로 하는 메시지 전송 플로우 관리 방법.
- 제1항에 있어서, 상기 호스트와 상기 스토리지 디바이스 사이에서 이용되는 인터페이스 규격은 커맨드 페이즈, 데이터 페이즈 및 스테터스 페이즈로 이루어지는 전송 플로우를 갖는 것을 특징으로 하는 메시지 전송 플로우 관리 방법.
- 제1항에 있어서, 상기 레스폰스 정보를 호스트로 전송하는 단계는
상기 수신된 레스폰스 전송 타입 정보에 기초하여 일반 모드 또는 패스트 모드 중의 하나의 모드를 판단하는 단계; 및
리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서 상기 호스트로 전송되는 마지막 데이터에 상기 레스폰스 정보를 함께 실어서 전송하는 단계를 포함함을 특징으로 하는 메시지 전송 플로우 관리 방법. - 제1항에 있어서, 상기 레스폰스 정보를 호스트로 전송하는 단계는
상기 수신된 레스폰스 전송 타입 정보에 기초하여 일반 모드 또는 패스트 모드 중의 하나의 모드를 판단하는 단계; 및
라이트 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 호스트로부터 마지막 데이터를 수신한 후에 바로 상기 레스폰스 정보를 호스트로 전송하는 단계를 포함함을 특징으로 하는 메시지 전송 플로우 관리 방법. - 제5항에 있어서, 상기 레스폰스 정보를 호스트로 전송하는 단계는 라이트 데이터 전송 플로우에서 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 상기 리저브드 비트를 통하여 패스트 모드의 레스폰스 전송 타입 정보가 수신되는 경우에, 상기 마지막 데이터를 수신하자마자 상기 레스폰스 정보를 상기 호스트로 전송하는 것을 특징으로 하는 메시지 전송 플로우 관리 방법.
- 메모리 디바이스; 및
호스트로부터 수신되는 커맨드 정보에 따라서 상기 메모리 디바이스에 데이터를 라이트하거나 상기 메모리 디바이스로부터 데이터를 읽어내는 동작을 수행하고, 상기 호스트와의 데이터 전송 과정에서 커맨드 페이즈 또는 데이터 페이즈 중의 적어도 하나의 페이즈에서 수신되는 레스폰스 전송 타입 정보에 기초하여 레이턴시가 다른 일반 모드 또는 패스트 모드 중의 어느 하나의 모드로 레스폰스 정보를 호스트로 전송하는 메모리 컨트롤러를 포함하고,
상기 레스폰스 전송 타입 정보는 레스폰스 전송 타입을 나타내는 리저브드 비트를 포함하는 것을 특징으로 하는 스토리지 디바이스. - 제7항에 있어서, 상기 메모리 컨트롤러는
상기 호스트로부터 수신되는 커맨드 정보를 저장하는 커맨드 큐;
상기 호스트로부터 수신되는 데이터 또는 상기 메모리 디바이스로부터 읽어낸 데이터를 저장하는 버퍼 메모리; 및
리드 데이터 전송 플로우에서 상기 패스트 모드로 설정된 레스폰스 타입 정보가 수신되는 경우에 리드 커맨드에 기초하여 상기 버퍼 메모리에서 읽어낸 마지막 데이터에 레스폰스 정보를 함께 실어서 상기 호스트로 전송하는 동작을 수행하는 컨트롤 유닛을 포함함을 특징으로 하는 스토리지 디바이스. - 제8항에 있어서, 상기 컨트롤 유닛은 리드 데이터 전송 플로우에서 상기 패스트 모드로 판단된 경우에 데이터 페이즈에서의 마지막 데이터의 헤더에 포함된 레스폰스 전송 타입 정보를 나타내기 위하여 할당된 상기 리저브드 비트를 패스트 모드의 레스폰스 전송 타입 정보를 나타내는 값으로 설정하고, 상기 마지막 데이터 뒤에 상기 레스폰스 정보를 실어서 상기 호스트로 전송하는 동작을 수행하는 것을 특징으로 하는 스토리지 디바이스.
- 제8항에 있어서, 상기 컨트롤 유닛은 라이트 데이터 전송 플로우에서 상기 패스트 모드로 설정된 레스폰스 정보가 수신되는 경우에 라이트 커맨드에 기초하여 상기 호스트로부터 마지막 데이터를 수신한 후에 바로 레스폰스 정보를 상기 호스트로 전송하는 동작을 더 수행하는 것을 특징으로 하는 스토리지 디바이스.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150020965A KR102317787B1 (ko) | 2015-02-11 | 2015-02-11 | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 |
US14/978,174 US10296233B2 (en) | 2015-02-11 | 2015-12-22 | Method of managing message transmission flow and storage device using the method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150020965A KR102317787B1 (ko) | 2015-02-11 | 2015-02-11 | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160098839A KR20160098839A (ko) | 2016-08-19 |
KR102317787B1 true KR102317787B1 (ko) | 2021-10-26 |
Family
ID=56566839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150020965A KR102317787B1 (ko) | 2015-02-11 | 2015-02-11 | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10296233B2 (ko) |
KR (1) | KR102317787B1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108389600B (zh) | 2017-02-02 | 2021-02-26 | 慧荣科技股份有限公司 | 数据储存装置以及参数改写方法 |
TWI761915B (zh) * | 2017-02-02 | 2022-04-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及參數改寫方法 |
KR20190075202A (ko) | 2017-12-21 | 2019-07-01 | 에스케이하이닉스 주식회사 | 테스트 제어 회로, 이를 이용하는 반도체 메모리 장치 및 반도체 시스템 |
KR20200066893A (ko) * | 2018-12-03 | 2020-06-11 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR20210016208A (ko) * | 2019-08-02 | 2021-02-15 | 삼성전자주식회사 | 스토리지 장치, 및 스토리지 장치 및 스토리지 장치를 제어하는 호스트 장치를 포함하는 스토리지 시스템의 동작 방법 |
KR20220047443A (ko) * | 2020-10-08 | 2022-04-18 | 삼성전자주식회사 | 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러 |
US11726659B2 (en) | 2021-03-10 | 2023-08-15 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for data storage with specified data transfer rate |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105929A1 (en) * | 2000-04-28 | 2003-06-05 | Ebner Sharon M. | Cache status data structure |
JP2002063069A (ja) * | 2000-08-21 | 2002-02-28 | Hitachi Ltd | メモリ制御装置、データ処理システム及び半導体装置 |
JP4786354B2 (ja) | 2006-01-27 | 2011-10-05 | 株式会社日立製作所 | iSCSI通信制御方法とそれを用いた記憶システム |
WO2009039222A2 (en) | 2007-09-19 | 2009-03-26 | Marvell World Trade Ltd. | Flexible sequencer design architecture for solid state memory controller |
KR101505005B1 (ko) * | 2008-12-05 | 2015-03-24 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치의 관리 방법 |
JP2010238336A (ja) | 2009-03-31 | 2010-10-21 | Sharp Corp | 記録装置、記録方法、プログラム、及び、記録媒体 |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US8782335B2 (en) | 2010-11-08 | 2014-07-15 | Lsi Corporation | Latency reduction associated with a response to a request in a storage system |
JP2012133513A (ja) | 2010-12-21 | 2012-07-12 | Renesas Electronics Corp | ストレージ装置、ストレージ装置の制御方法及び制御プログラム |
TWI467372B (zh) | 2011-07-06 | 2015-01-01 | Phison Electronics Corp | 指令執行方法、記憶體控制器與記憶體儲存裝置 |
JP5677336B2 (ja) * | 2011-08-01 | 2015-02-25 | 株式会社東芝 | メモリ・デバイス |
JP5514169B2 (ja) | 2011-08-15 | 2014-06-04 | 株式会社東芝 | 情報処理装置および情報処理方法 |
KR101911059B1 (ko) | 2011-10-18 | 2018-10-24 | 삼성전자주식회사 | Ufs 인터페이스의 테스트 방법 및 이의 테스트 방법으로 테스트를 수행하는 메모리 장치 |
US20130326113A1 (en) | 2012-05-29 | 2013-12-05 | Apple Inc. | Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory |
US9256384B2 (en) | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
-
2015
- 2015-02-11 KR KR1020150020965A patent/KR102317787B1/ko active IP Right Grant
- 2015-12-22 US US14/978,174 patent/US10296233B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160231950A1 (en) | 2016-08-11 |
KR20160098839A (ko) | 2016-08-19 |
US10296233B2 (en) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102317787B1 (ko) | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 | |
US9799402B2 (en) | Nonvolatile memory device and program method thereof | |
US20120066438A1 (en) | Non-volatile memory device, operation method thereof, and device having the same | |
US20200201571A1 (en) | Memory system and operating method thereof | |
US20190121743A1 (en) | Memory system and method of operating the same | |
US20210210148A1 (en) | Memory system and operating method thereof | |
CN112306385A (zh) | 存储器控制器及其操作方法 | |
KR20190043860A (ko) | 메모리 시스템 및 이의 동작 방법 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20220018351A (ko) | 메모리 컨트롤러 및 이의 동작 방법 | |
CN111435333B (zh) | 存储装置及其操作方法 | |
US11269769B2 (en) | Memory system and method of operating the same | |
US11056177B2 (en) | Controller, memory system including the same, and method of operating the memory system | |
US20200125281A1 (en) | Memory system and method of operating the same | |
US10977170B2 (en) | Memory controller for performing unmap operation and memory system having the same | |
US11841805B2 (en) | Memory system for storing map data in host memory and operating method of the same | |
US10846214B2 (en) | Nonvolatile memory system and method of operating the same | |
US10769060B2 (en) | Storage system and method of operating the same | |
US11114172B2 (en) | Memory system and method of operating the same | |
US11314652B2 (en) | Memory controller and method of operating the same | |
CN113126895A (zh) | 存储装置及其操作方法 | |
US11379357B2 (en) | Storage device and method of operating the same | |
US20240028204A1 (en) | Memory controller and method of operating the same | |
US20240203505A1 (en) | Memory device and method of managing temperature of the same | |
US20210134383A1 (en) | Memory system and operating method of the memory system |
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 |