KR101996266B1 - 호스트 및 이를 포함하는 컴퓨터 시스템 - Google Patents

호스트 및 이를 포함하는 컴퓨터 시스템 Download PDF

Info

Publication number
KR101996266B1
KR101996266B1 KR1020140124480A KR20140124480A KR101996266B1 KR 101996266 B1 KR101996266 B1 KR 101996266B1 KR 1020140124480 A KR1020140124480 A KR 1020140124480A KR 20140124480 A KR20140124480 A KR 20140124480A KR 101996266 B1 KR101996266 B1 KR 101996266B1
Authority
KR
South Korea
Prior art keywords
command
command descriptor
size
cache
descriptor list
Prior art date
Application number
KR1020140124480A
Other languages
English (en)
Other versions
KR20160033497A (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 KR1020140124480A priority Critical patent/KR101996266B1/ko
Priority to US14/748,606 priority patent/US9792225B2/en
Publication of KR20160033497A publication Critical patent/KR20160033497A/ko
Application granted granted Critical
Publication of KR101996266B1 publication Critical patent/KR101996266B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 하나의 실시형태에 따른 호스트(host)는 복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache); 상기 캐쉬로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list); 상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고 상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함한다.

Description

호스트 및 이를 포함하는 컴퓨터 시스템{HOST AND COMPUTER SYSTEM HAVING THE SAME}
본 발명은 UFS 호스트(Universal Flash Storage host)에 관한 것으로, 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터의 사이즈를 결정하는 프로세서(processor)를 포함하는 호스트 및 이를 포함하는 컴퓨터 시스템에 관한 것이다.
UFS(universal flash storage) 호스트(host)는 UFS 디바이스(device)를 제어하기 위한 호스트 컨트롤러를 포함할 수 있다. UFS 호스트는 커맨드 디스크립터 리스트(command descriptor list)에 커맨드를 저장할 수 있다. 또한, UFS 호스트는 UFS 디바이스를 제어하기 위한 호스트 컨트롤러(host controller)를 포함할 수 있다.
호스트 컨트롤러는 커맨드 디스크립터 리스트로부터 커맨드를 UFS 디바이스로 전송할 수 있다. UFS 디바이스는 수신된 커맨드를 실행하고, 실행된 결과를 참조하여 커맨드 디스크립터 리스트를 업데이트할 수 있다. 이러한 방법을 통하여, UFS 호스트는 UFS 디바이스를 억세스할 수 있다.
본 발명의 목적은 캐쉬 라인(cache line)의 사이즈를 고려하여 커맨드 디스크립터 리스트(command descriptor list) 내 엠프티 스페이스(empty space)의 사이즈를 결정하는 호스트 컨트롤러를 제공하는 것이다.
본 발명의 다른 목적은 상기 호스트 컨트롤러를 포함하는 컴퓨터 시스템을 제공하는 것이다.
상기 목적을 달성하기 위하여 본 발명의 하나의 실시형태에 따른 호스트(host)는 복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache); 상기 복수의 캐쉬 라인들 중 어느 하나로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list); 상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고 상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트는 상기 커맨드를 저장하기 위한 적어도 하나의 커맨드 디스크립터(command descriptor)와 적어도 하나의 엠프티 스페이스(empty space)를 포함하며, 상기 캐쉬 라인의 사이즈는 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합이다.
하나의 실시 예에 있어서, 상기 호스트 컨트롤러는 상기 커맨드를 디바이스로 전송하기 위한 버퍼(buffer)를 포함한다.
하나의 실시 예에 있어서, 상기 DMA는 상기 커맨드 디스크립터 리스트로부터 상기 커맨드를 디바이스로 상기 버퍼를 통하여 전송한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트(command descriptor list)는 업데이트 필드(update field)를 포함하며, 상기 디바이스로부터 상기 커맨드에 대한 응답으로써, 상기 디바이스는 업데이트 필드(update field)를 업데이트한다.
하나의 실시 예에 있어서, 상기 프로세서는 캐쉬 플러쉬(cache flush) 또는 캐쉬 인밸리데이트(cache invalidate)를 통하여 상기 커맨드를 상기 커맨드 디스크립터 리스트로 전송한다.
하나의 실시 예에 있어서, 상기 프로세서는 상기 캐쉬 라인들을 통하여 상기 커맨드를 상기 커맨드 디스크립터 리스트로 전송한다.
하나의 실시 예에 있어서, 상기 호스트는 시스템 메모리를 더 포함하고, 상기 시스템 메모리는 상기 커맨드 디스크립터 리스트를 포함한다.
본 발명의 다른 하나의 실시형태에 따른 컴퓨터 시스템(computer system)은 디바이스; 및 상기 디바이스를 억세스하는 호스트를 포함하고, 상기 호스트는 복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache); 상기 복수의 캐쉬 라인들 중 어느 하나로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list); 상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고 상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트는 상기 커맨드를 저장하기 위한 적어도 하나의 커맨드 디스크립터(command descriptor)와 적어도 하나의 엠프티 스페이스(empty space)를 포함하며, 상기 캐쉬 라인의 사이즈는 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합이다.
하나의 실시 예에 있어서, 상기 호스트 컨트롤러는 상기 커맨드를 상기 디바이스로 전송하기 위한 버퍼(buffer)를 포함하고, 상기 DMA는 상기 커맨드 디스크립터 리스트로부터 상기 커맨드를 상기 디바이스로 상기 버퍼를 통하여 전송한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트는 업데이트 필드(update field)를 포함하며, 상기 디바이스로부터 상기 커맨드에 대한 응답으로써, 상기 디바이스는 업데이트 필드(update field)를 업데이트한다.
하나의 실시 예에 있어서, 상기 프로세서는 캐쉬 플러쉬(cache flush) 또는 캐쉬 인밸리데이트(cache invalidate)를 통하여 상기 커맨드를 상기 커맨드 디스크립터 리스트로 전송한다.
하나의 실시 예에 있어서, 상기 호스트 컨트롤러와 상기 디바이스는 UFS 인터페이스에 따라 데이터를 송수신한다.
하나의 실시 예에 있어서, 상기 호스트는 UFS(universal flash storage) 호스트, USB(univerdal serial bus) 호스트, MMC(multi-media card) 호스트를 포함하고, 상기 디바이스는 UFS 디바이스, USB 디바이스, MMC 디바이스를 포함한다.
본 발명의 또 다른 하나의 실시형태에 따른 애플리케이션 프로세서(application processor)는 복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache); 상기 복수의 캐쉬 라인들 중 어느 하나로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list); 상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고 상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트는 상기 커맨드를 저장하기 위한 적어도 하나의 커맨드 디스크립터(command descriptor)와 적어도 하나의 엠프티 스페이스(empty space)를 포함하며, 상기 캐쉬 라인의 사이즈는 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합이다.
하나의 실시 예에 있어서, 상기 호스트 컨트롤러는 상기 커맨드를 디바이스로 전송하기 위한 버퍼(buffer)를 포함하고, 상기 DMA는 상기 커맨드 디스크립터 리스트로부터 상기 커맨드를 디바이스로 상기 버퍼를 통하여 전송한다.
하나의 실시 예에 있어서, 상기 커맨드 디스크립터 리스트는 업데이트 필드(update field)를 포함하며, 상기 디바이스로부터 상기 커맨드에 대한 응답으로써, 상기 디바이스는 업데이트 필드(update field)를 업데이트한다.
하나의 실시 예에 있어서, 상기 프로세서는 캐쉬 플러쉬(cache flush) 또는 캐쉬 인밸리데이트(cache invalidate)를 통하여 상기 커맨드를 상기 커맨드 디스크립터 리스트로 전송한다.
본 발명의 실시 예에 따른 호스트는 디바이스에 의해 업데이트 된 커맨드 디스크립터 리스트 내 업데이트 필드가, 호스트의 새로운 커맨드 라이트에 의해 덮어 쓰여지는(overwrite) 문제를 해결할 수 있다.
즉, 본 발명의 실시 예에 따른 호스트는 커맨드 디스크립터 리스트가 업데이트되었는데 새로운 커맨드를 다시 덮어 쓰면서 업데이트가 되지 않은 상태로 만드는 문제를 해결할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 시스템을 도시한 블록도이다;
도 2는 도 1에 도시된 커맨드 디스크립터 리스트를 도시한 블록도이다;
도 3a 내지 도 3g는 도 1에 도시된 컴퓨터 시스템의 동작을 설명하기 위한 블록도이다;
도 4는 본 발명의 하나의 실시 예에 따른 커맨드 디스크립터 리스트를 도시한 블록도이다;
도 5는 본 발명의 다른 하나의 실시 예에 따른 커맨드 디스크립터 리스트를 도시한 블록도이다;
도 6는 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(210)의 일 실시 예를 나타낸다;
도 7은 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(220)의 다른 실시 예를 나타낸다;
도 8는 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(230)의 또 다른 실시 예를 나타낸다;
도 9는 도 1에 도시된 호스트 컨트롤러를 포함하는 디지털 카메라 장치(300)을 도시한다;
도 10a 내지 도 10c는 도 1에 도시된 호스트 컨트롤러를 포함하는 웨어러블 장치를 도시한다; 그리고
도 11는 도 1에 도시된 호스트 컨트롤러를 포함하는 웨어러블 장치를 도시한다;
본문에 개시되어 있는 본 발명의 실시 예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시 예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시 예들에 한정되는 것으로 해석되어서는 안 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 개시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시 예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 설명한다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 시스템을 도시한 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(100)은 이동 전화기 또는 노트북 등과 같은 모바일 기기, 퍼스널 컴퓨터, 서버 컴퓨터, 프로그램 가능한 가전 제품, 또는 메인 프레임 컴퓨터 등과 같이 범용 또는 특수 목적의 컴퓨터 시스템일 수 있다.
컴퓨터 시스템(100)은 호스트(10)와 디바이스(20)를 포함할 수 있다. 하나의 실시 예에 있어서, 호스트(10)는 애플리케이션 프로세서(application processor)를 포함할 수 있다. 또한, 디바이스(20)는 UFS 카드(universal flash storage card)를 포함할 수 있다.
호스트(10)는 프로세서(processor; 1), 캐쉬(cache: 2), 시스템 메모리(system memory; 3), 호스트 컨트롤러(host controller; 4), PHY(physical layer; 5)를 포함할 수 있다. 각 구성 요소(1, 2, 3, 4 및 5)는 시스템 버스(6)를 통하여 서로 통신할 수 있다.
프로세서(1)는 컴퓨터 시스템(100) 전체를 제어할 수 있다. 하나의 실시 예에 있어서, 프로세서(1)는 ARMTM 프로세서를 포함할 수 있다. 캐쉬(2)는 컴퓨터 시스템(100)의 성능을 향상시키기 위하여 프로세서(1)와 시스템 메모리 장치(3) 사이에 연결될 수 있다. 예를 들면, 캐쉬(2)는 SRAM(static random access memory)으로 구현될 수 있다. 캐쉬(2)의 구조는 도 3a 내지 도 3f에서 상세히 설명될 것이다.
시스템 메모리(3)는 프로세서(1)를 운영할 데이터를 저장할 수 있다. 예를 들면, 시스템 메모리(3)는 DRAM(dynamic random access memory)으로 구현될 수 있다.
시스템 메모리(3)는 커맨드 디스크립터 리스트(command descriptor list; 31)를 포함한다. 구체적으로, 프로세서(1)는 시스템 메모리(3) 내 커맨드 디스크립터 리스트(31)를 생성하기 위한 메모리 공간(memory space)을 할당할 수 있다.
커맨드 디스크립터 리스트(31)는 디바이스(20)로 전송될 커맨드(command) 또는 커맨드 디스크립터(command descriptor)를 저장할 수 있다. 하나의 실시 예에 있어서, 커맨드 디스크립터는 커맨드를 항상 포함하고 있다.
디바이스(20)가 UFS 스펙(specification)에 따른 플래시 메모리 장치이면, 커맨드 디스크립터 리스트(31)는 32 Byte로 구성된 32개의 커맨드 디스크립터들로 구성될 수 있다. 32개의 커맨드 디스크립터들 각각은 캐쉬(2)로부터 전송된 커맨드를 저장하도록 할당된 메모리 영역일 수 있다. 커맨드 디스크립터 리스트(31)는 도 2에서 상세히 설명될 것이다.
호스트 컨트롤러(4)는 디바이스(20)를 제어할 수 있다. 예를 들면, 호스트 컨트롤러(4)가 디바이스(20)에 데이터를 라이트(write)하도록 디바이스(20)를 제어할 수 있다. 또한, 호스트 컨트롤러(4)가 디바이스(20)로부터 데이터를 리드(read)하도록 디바이스(20)를 제어할 수 있다. 이러한 동작을 구현하기 위하여, 호스트 컨트롤러(4)는 DMA(direct memory access; 41)와 버퍼(buffer; 42)를 포함할 수 있다. 호스트 PHY(5)는 호스트(10)와 디바이스(20)를 물리적으로 연결할 수 있다. 호스트 컨트롤러(4)의 동작은 도 3a 내지 도 3f에서 상세히 설명될 것이다.
디바이스(20)는 디바이스 PHY(21), 유니프로(Unipro; 22) 그리고 비휘발성 메모리 장치(nonvolatile memory device; 23)를 포함할 수 있다. 디바이스 PHY(21)는 호스트(10)와 디바이스(20)를 물리적으로 연결할 수 있다. 유니프로(22)는 디바이스 PHY(21)와 비휘발성 메모리 장치(23)를 인터페이싱(interfacing)할 수 있다.
하나의 실시 예에 있어서, 호스트(10)와 디바이스(20) 각각은 하나의 독립된 칩으로 구현될 수 있다.
도 2는 도 1에 도시된 커맨드 디스크립터 리스트를 도시한 블록도이다.
도 1 및 도 2를 참조하면, 본 발명의 실시 예에 따른 커맨드 디스크립터 리스트(31)는 제1 내지 제 32 커맨드 디스크립터(CD1-CD32)을 포함할 수 있다. 제1 내지 제 32 커맨드 디스크립터(CD1-CD32)들 각각은 캐쉬(2)로부터 전송된 커맨드를 저장하도록 할당된 메모리 영역일 수 있다. 따라서, 제1 내지 제 32 커맨드 디스크립터(CD1-CD32) 각각은 캐쉬(2)로부터 전송된 커맨드를 저장할 수 있다.
또한, 제1 내지 제 32 커맨드 디스크립터들(CD1-CD32) 각각은 제1 내지 제 32 업데이트 필드들(U1-U32)를 포함할 수 있다.
예를 들면, 호스트(10)가 UFS 호스트이면, 디바이스(20)는 UFS 디바이스이다. 이 경우, 하나의 커맨드 디스크립터의 사이즈는 32 Byte이고, 커맨드 디스크립터 리스트(31)는 32개로 구성된 제1 내지 제32 커맨드 스크립터들(CD1-CD32)과 제1 내지 제32 업데이트 필드들(U1-U32)을 포함할 수 있다.
제1 내지 제32 커맨드 스크립터들(CD1-CD32) 각각은 커맨드를 저장할 수 있다. 또한, 제1 내지 제32 업데이트 필드들(U1-U32) 각각은 제1 내지 제32 커맨드 스크립터들(CD1-CD32) 각각의 업데이트 정보를 포함할 수 있다.
제1 내지 제32 업데이트 필드들(U1-U32) 각각은 디폴트(default)로 F (즉, 헥사코드)를 가질 수 있다. 예를 들면, 제1 내지 제32 업데이트 필드들(U1-U32) 중 어느 하나가 F인 경우, F를 가진 업데이트 필드에 대응하는 커맨드 디스크립터는 아직 업데이트되지 않은 것이다. 또한, 디바이스(20)가 제1 커맨드 디스크립터(CD1)을 업데이트하면, 제1 업데이트 필드(U1)는 0를 가질 수 있다.
하나의 실시 예에 있어서, 커맨드 디스크립터 리스트(31)는 제1 커맨드 디스크립터(CD1)를 시작 주소(start address)로 설정할 수 있다. 예를 들면, 제1 커맨드는 제1 커맨드 디스크립터(CD1)에 저장될 수 있다. 또한, 커맨드 디스크립터 리스트(31)는 제32 커맨드 디스크립터(CD32)를 끝 주소(end address)로 설정할 수 있다.
도 3a 내지 도 3g는 도 1에 도시된 컴퓨터 시스템의 동작을 설명하기 위한 블록도이다.
도 1 및 도 3a를 참조하면, 프로세서(1)는 제1 커맨드(command; CMD1) 및 제2 커맨드(CMD2)를 캐쉬(2)에 저장할 수 있다.
캐쉬(2)는 복수의 캐쉬 라인들을 포함한다. 예를 들면, 캐쉬(2)는 제1 내지 제4 캐쉬 라인(CL1-CL4)을 포함할 수 있다. 제1 내지 제4 캐쉬 라인(CL1-CL4) 중 어느 하나는 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 저장할 수 있다. 예를 들면, 제1 캐쉬 라인(CL1)은 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 저장할 수 있다.
또한, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 64 Byte로 구성될 수 있다. 만약 제1 제1 커맨드 디스크립터(CD1)가 32 Byte로 구성되면, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 두 개의 커맨드들을 저장할 수 있다.
만약 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 128 Byte이고, 커맨드 가 32 Byte로 구성되면, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 4 개의 커맨드들을 저장할 수 있다.
도 1 및 도 3b를 참조하면, 제1 내지 제4 캐쉬 라인(CL1-CL4) 중 어느 하나는 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 저장할 수 있다. 또한, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 복수의 커맨드들을 저장할 수 있다.
예를 들면, 제1 캐쉬 라인(CL1)은 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 저장한다. 제1 캐쉬 라인(CL1)는 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 시스템 메모리(3)로 전송할 수 있다.
또한, 프로세서(1)는 캐쉬 플러쉬(cache flush) 또는 캐쉬 인밸리데이트(cache invalidate)를 이용하여 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각에 저장된 커맨드들을 시스템 메모리(3)로 전송할 수 있다.
시스템 메모리(3)는 커맨드 디스크립터 리스트(31)를 포함할 수 있다. 하나의 실시 예에 있어서, 호스트(10)가 UFS 호스트이면, 커맨드 디스크립터 리스트(31)는 제1 내지 제32 커맨드 디스크립터(CD1-CD32)를 포함할 수 있다.
예를 들면, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 64 Byte로 구성되고, 커맨드가 32 Byte로 구성되면, 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각은 두 개의 커맨드들을 저장할 수 있다. 이 경우, 제1 및 제2 커맨드 디스크립터(CD1-CD2) 각각은 제1 캐쉬 라인(CL1)에 저장된 커맨드들을 저장할 수 있다. 제3 및 제4 커맨드 디스크립터(CD3-CD4) 각각은 제2 캐쉬 라인(CL2)에 저장된 커맨드들을 저장할 수 있다. 제5 및 제6 커맨드 디스크립터(CD5-CD6) 각각은 제3 캐쉬 라인(CL3)에 저장된 커맨드들을 저장할 수 있다. 제7 및 제8 커맨드 디스크립터(CD7-CD8) 각각은 제4 캐쉬 라인(CL4)에 저장된 커맨드들을 저장할 수 있다.
프로세서(1)는 제1 캐쉬 라인(CL1)에 저장된 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 제1 커맨드 디스크립터(CD1) 및 제2 커맨드 디스크립터(CD2)에 저장하도록 제어할 수 있다.
도 1 및 도 3c를 참조하면, 호스트 컨트롤러(4)는 커맨드 디스크립터 리스트(31)로부터 제1 커맨드(CMD1) 및 제2 커맨드(CMD2)를 디바이스(20)로 전송할 수 있다. 구체적으로, DMA(41)는 제1 커맨드 디스크립터(CD1)에 저장된 제1 커맨드(CMD1)를 버퍼(42)를 통해서 디바이스(20)로 전송할 수 있다. 또한, 제1 커맨드(CMD1)에 대응하는 응답(response)을 수신하기 전, DMA(41)는 제2 커맨드 디스크립터(CD2)에 저장된 제2 커맨드(CMD2)를 버퍼(42)를 통해서 디바이스(20)로 전송할 수 있다.
도 1 및 도 3d를 참조하면, 제1 내지 제32 커맨드 디스크립터들(CD1-CD32) 각각은 업데이트 정보를 포함하는 업데이트 필드(update field; U)를 포함할 수 있다. 업데이트 필드(U)는 디폴트(default)로 F (헥사코드)를 가질 수 있다. 업데이트 필드(U)가 F인 커맨드 디스크립터는 아직 업데이트되지 않은 것이다. 즉, 디바이스(20)는 아직 해당하는 커맨드에 대한 응답을 전송하지 않은 것이다.
또한, 호스트 컨트롤러(4)가 제1 커맨드 디스크립터(CD1)을 업데이트하면, 제1 업데이트 필드(U1)는 0를 가질 수 있다. 즉, 디바이스(20)가 제1 커맨드(CMD1)에 대한 응답을 DMA(41)을 통하여 전송하면, 호스트 컨트롤러(4)는 제1 업데이트 필드(U1)를 0으로 라이트할 수 있다.
예를 들면, 호스트 컨트롤러(4)는 제1 커맨드 디스크립터(CD1)를 업데이트할 수 있다. 따라서, 제1 커맨드 디스크립터(CD1)의 제1 업데이트 필드(U1)는 0를 가질 수 있다.
또한, 호스트 컨트롤러(4)는 제1 커맨드 디스크립터(CD1)를 업데이트하면서, 동시에 프로세서(1)로 인터럽트(interrupt; INT)를 전송할 수 있다. 프로세서(1)는 상기 인터럽트(INT)에 응답하여 제1 커맨드 디스크립터(CD1)가 업데이트되었는지를 제1 업데이트 필드(U1)를 이용하여 확인할 수 있다.
도 1 및 도 3e를 참조하면, 프로세서(1)는 제1 업데이트 필드(U1)이 업데이트된 것을 확인한다. 그리고, 프로세서(1)는 새로운 캐맨드인 제3 커맨드(CMD3)를 생성한다. 프로세서(1)는 제3 커맨드(CMD3)를 제1 캐쉬 라인(CL1)에 저장할 수 있다.
제1 캐쉬 라인(CL1)은 새로운 캐맨드인 제3 커맨드(CMD3)와 이전 커맨드인 제2 커맨드(CMD2)를 저장한다.
도 1 및 도 3f를 참조하면, 디바이스(20)는 호스트 컨트롤러(4)로 제2 커맨드(CMD2)에 대한 응답을 전송한다. 호스트 컨트롤러(4)는 제2 커맨드(CMD2)에 대한 응답을 수신한 후, 제2 업데이트 필드(U1)를 업데이트한다(S1). 이 경우, 제2 커맨드 디스크립터(CD2)에 대응하는 제2 업데이트 필드(U1)는 0으로 업데이트될 수 있다.
동시에, 호스트 컨트롤러(4)는 프로세서(1)로 인터럽트(INT)를 발생할 수 있다(S2).
도 1 및 도 3g를 참조하면, 제2 커맨드 디스크립터(CD2)가 업데이트된 직후에, 프로세서(1)는 캐쉬(2)의 인밸리데이션을 통하여 제1 캐쉬 라인(CL1)에 저장된 제3 커맨드(CMD3) 및 제2 커맨드(CMD2)를 제1 커맨드 디스크립터(CD1) 및 제2 커맨드 디스크립터(CD2)로 전송한다(S3).
구체적으로, 제1 커맨드 디스크립터(CD1)은 새로운 커맨드인 제3 커맨드(CMD3)를 저장한다. 이 때, 제1 업데이트 필드(U1)은 F이다. 제2 커맨드 디스크립터(CD2)은 이전 커맨드인 제2 커맨드(CMD2)를 저장한다. 이 때, 제2 업데이트 필드(U2)은 F이다.
한편, 프로세서(1)는 상기 인터럽트(INT)에 응답하여 제2 커맨드 디스크립터(CD2)가 업데이트되었는지 확인한다(S4). 즉, 프로세서(1)는 제2 업데이트 필드(U2)를 통하여 제2 커맨드 디스크립터(CD2)가 업데이트되었는지 확인한다. 이 경우, 제2 업데이트 필드(U2)는 F이므로, 프로세서(1)는 제2 커맨드 디스크립터(CD2)가 업데이트되지 않았다고 판단한다.
이러한 문제는 캐쉬 라인의 사이즈와 커맨드 디스크립터의 사이즈가 다르기 때문에 발생하는 것이다. 이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 호스트 컨트롤러(31)는 캐쉬 라인의 사이즈를 고려하여 커맨드 디크립터 내 엠프티 스페이스의 사이즈를 결정할 수 있다. 자세한 설명은 도 4 및 도 5에서 설명될 것이다.
도 4는 본 발명의 하나의 실시 예에 따른 커맨드 디스크립터 리스트를 도시한 블록도이다.
도 1 및 도 4를 참조하면, 본 발명의 하나의 실시 예에 따른 커맨드 디스크립터 리스트(31)는 제1 내지 제32 커맨드 디스크립터(CD1-CD32)를 포함할 수 있다.
또한, 제1 내지 제32 커맨드 디스크립터(CD1-CD32) 각각은 엠프티 스페이스(empty space)를 포함할 수 있다. 예를 들면, 제1 커맨드 디스크립터(CD1)는 제1 엠프티 스페이스(ES1)를 포함할 수 있다. 또한, 제2 커맨드 디스크립터(CD2)는 제2 엠프티 스페이스(ES2)를 포함할 수 있다. 마찬가지로, 제32 커맨드 디스크립터(CD32)는 제32 엠프티 스페이스(ES32)를 포함할 수 있다.
제1 내지 제32 엠프티 스페이스(ES1-ES32) 각각의 사이즈는 캐쉬 라인의 사이즈에 기초하여 결정될 수 있다. 예를 들면, 도 3a에 도시된 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각의 사이즈가 64 Byte이고, 제1 내지 제32 커맨드 디스크립터(CD1-CD32) 각각의 사이즈가 32 Byte이면, 제1 내지 제32 엠프티 스페이스(ES1-ES32) 각각의 사이즈는 32 Byte로 설정될 수 있다.
즉, 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합은 상기 캐쉬 라인의 사이즈가 될 수 있다.
예를 들면, 제1 커맨드 디스크립터(CD1)의 사이즈와 제1 엠프티 스페이스(ES1)의 사이즈의 합은 제1 캐쉬 라인(CL1)의 사이즈가 될 수 있다.
도 5는 본 발명의 다른 하나의 실시 예에 따른 커맨드 디스크립터 리스트를 도시한 블록도이다.
도 1 및 도 5를 참조하면, 본 발명의 하나의 실시 예에 따른 커맨드 디스크립터 리스트(31')는 제1 내지 제32 커맨드 디스크립터(CD1-CD32)를 포함할 수 있다.
또한, 제1 내지 제32 커맨드 디스크립터(CD1-CD32) 각각은 엠프티 스페이스(empty space)를 포함할 수 있다. 예를 들면, 제1 커맨드 디스크립터(CD1)는 제1 엠프티 스페이스(ES1)를 포함할 수 있다. 또한, 제2 커맨드 디스크립터(CD2)는 제2 엠프티 스페이스(ES2)를 포함할 수 있다. 마찬가지로, 제32 커맨드 디스크립터(CD32)는 제32 엠프티 스페이스(ES32)를 포함할 수 있다.
제1 내지 제32 엠프티 스페이스(ES1-ES32) 각각의 사이즈는 캐쉬 라인의 사이즈에 기초하여 결정될 수 있다. 예를 들면, 도 3a에 도시된 제1 내지 제4 캐쉬 라인(CL1-CL4) 각각의 사이즈가 128 Byte이고, 제1 내지 제32 커맨드 디스크립터(CD1-CD32) 각각의 사이즈가 32 Byte이면, 제1 내지 제32 엠프티 스페이스(ES1-ES32) 각각의 사이즈는 96 Byte로 설정될 수 있다.
마찬가지로, 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합은 상기 캐쉬 라인의 사이즈가 될 수 있다.
도 6는 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(210)의 일 실시 예를 나타낸다.
도 6를 참조하면, 컴퓨터 시스템(210)은 메모리 장치(211), 메모리 장치(211)을 제어하는 메모리 컨트롤러를 포함하는 애플리케이션 프로세서(212), 무선 송수신기(213), 안테나(214), 입력 장치(215), 그리고 디스플레이 장치(216)를 포함한다.
무선 송수신기(213)는 안테나(214)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(213)는 안테나(214)를 통하여 수신된 무선 신호를 애플리케이션 프로세서(212)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 애플리케이션 프로세서(212)는 무선 송수신기(213)로부터 출력된 신호를 처리하고 처리된 신호를 디스플레이 장치(215)로 전송할 수 있다. 또한, 무선 송수신기(213)는 애플리케이션 프로세서(212)으로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(214)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(215)는 애플리케이션 프로세서(212)의 동작을 제어하기 위한 제어 신호 또는 애플리케이션 프로세서(212)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
하나의 실시 예에 있어서, 애플리케이션 프로세서(212)는 도 1에 도시된 호스트(10)를 포함할 수 있다.
도 7은 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(220)의 다른 실시 예를 나타낸다.
도 7을 참조하면, 컴퓨터 시스템(220)은 PC(personal computer), 네트워크 서버(Network Server), 태블릿(tablet) PC(personal computer), 넷-북(net-book), e-리더(e-reader), PDA (personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
컴퓨터 시스템(220)은 메모리 장치(221)와 메모리 장치(221)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러를 포함하는 애플리케이션 프로세서(222), 입력 장치(223), 그리고 디스플레이 장치(223)를 포함한다.
입력 장치(223)는 애플리케이션 프로세서(222)의 동작을 제어하기 위한 제어 신호 또는 애플리케이션 프로세서(222)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
하나의 실시 예에 있어서, 애플리케이션 프로세서(222)는 도 1에 도시된 호스트(10)를 포함할 수 있다.
애플리케이션 프로세서(222)는 터치 패드(224)를 통하여 입력된 데이터에 따라 메모리 장치(221)에 저장된 데이터를 디스플레이 장치(224)를 통하여 디스플레이할 수 있다.
도 8는 도 1에 도시된 호스트 컨트롤러를 포함하는 컴퓨터 시스템(230)의 또 다른 실시 예를 나타낸다.
도 8를 참조하면, 컴퓨터 시스템(230)은 이미지 처리 장치(Image Process Device), 예컨대 디지털 카메라 또는 디지털 카메라가 부착된 이동 전화기, 스마트 폰(smart phone) 또는 테블릿(tablet)으로 구현될 수 있다.
컴퓨터 시스템(230)은 메모리 장치(231)와 메모리 장치(231)의 데이터 처리 동작, 예컨대 라이트(write) 동작 또는 리드(read) 동작을 제어할 수 있는 메모리 컨트롤러를 포함하는 애플리케이션 프로세서(232), 입력 장치(233), 이미지 센서(234), 그리고 디스플레이 장치(235)를 포함한다.
이미지 센서(234)는 광학 이미지를 디지털 신호들로 변환하고, 변환된 디지털 신호들은 애플리케이션 프로세서(232)로 전송된다. 애플리케이션 프로세서(232)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이 장치(235)를 통하여 디스플레이되거나 또는 메모리 장치(231)에 저장될 수 있다.
또한, 메모리 장치(231)에 저장된 데이터는 애플리케이션 프로세서(232)의 제어에 따라 디스플레이 장치(235)를 통하여 디스플레이될 수 있다.
입력 장치(233)는 애플리케이션 프로세서(232)의 동작을 제어하기 위한 제어 신호 또는 애플리케이션 프로세서(232)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
하나의 실시 예에 있어서, 애플리케이션 프로세서(232)는 도 1에 도시된 호스트(10)를 포함할 수 있다.
도 9는 도 1에 도시된 호스트 컨트롤러를 포함하는 디지털 카메라 장치(300)을 도시한다.
도 9을 참조하면, 디지털 카메라 장치(300)는 안드로이드 운영체제(Android Operating System)로 동작하는 디지털 카메라이다. 하나의 실시 예에 있어서, 디지털 카메라 장치(300)는 갤럭시 카메라TM 또는 갤럭시 카메라2TM 를 포함할 수 있다.
디지털 카메라 장치(300)는 영상 또는 동영상을 캡쳐하기 위한 이미지 센서(image sensor) 및 상기 이미지 센서를 제어하기 위한 애플리케이션 프로세서를 포함할 수 있다. 하나의 실시 예에 있어서, 디지털 카메라 장치(300)는 도 1에 도시된 호스트(10)를 포함할 수 있다.
도 10a 내지 도 10c는 도 1에 도시된 호스트 컨트롤러를 포함하는 웨어러블 장치를 도시한다.
도 10a 및 도 10b을 참조하면, 제1 내지 제3 웨어러블 장치(410-430) 각각은 손목 시계 형태를 가진다. 제1 내지 제3 웨어러블 장치(410-430)는 안드로이드 운영체제(Android Operating System) 또는 타이젠 운영체제(TIZEN Operating System)로 동작하는 웨어러블 장치이다.
하나의 실시 예에 있어서, 제1 웨어러블 장치(410)는 갤럭시 기어2를 포함할 수 있다. 제2 웨어러블 장치(420)는 갤럭시 기어 핏(Galaxy Gear fit)을 포함할 수 있다. 제3 웨어러블 장치(430)는 갤럭시 기어S(Galaxy Gear S)을 포함할 수 있다.
제1 내지 제3 웨어러블 장치(410-430) 각각은 안드로이드 운영체제(Android Operating System) 또는 타이젠 운영체제(TIZEN Operating System)를 구동하기 위한 애플리케이션 프로세서, 영상 또는 동영상을 캡쳐하기 위한 이미지 센서 및 촬영될 영상 또는 동영상을 디스플레이하기 위한 디스플레이 장치를 포함할 수 있다.
하나의 실시 예에 있어서, 제1 내지 제3 웨어러블 장치(410-430) 각각은 도 1에 도시된 호스트(10)를 포함할 수 있다.
도 11는 도 1에 도시된 호스트 컨트롤러를 포함하는 웨어러블 장치를 도시한다.
도 11를 참조하면, 제4 웨어러블 장치(500)는 귀에 장착되며, 사용자에게 음성과 영상 정보를 제공할 수 있다. 제4 웨어러블 장치(500)는 안드로이드 운영체제 또는 타이젠 운영체제로 동작할 수 있다. 하나의 실시 예에 있어서, 제4 웨어러블 장치(500)는 갤럭시 기어블링크(Galaxy Gear Blink)TM를 포함할 수 있다.
제4 웨어러블 장치(500)는 영상 또는 동영상을 캡쳐하기 위한 이미지 센서(image sensor; 510), 영상을 디스플레이하기 위한 디스플레이 장치(display device; 520), 소리를 듣기 위한 이어폰(eye phone; 530) 그리고 제4 웨어러블 장치(500)를 제어하기 위한 애플리케이션 프로세서(미도시)를 포함할 수 있다.
하나의 실시 예에 있어서, 제4 웨어러블 장치(500)는 도 1에 도시된 호스트(10)를 포함할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은 시스템온칩을 포함하는 모바일 장치(mobile device) 또는 웨어러블 장치(wearable device)에 적용할 수 있다.
상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1 : 프로세서
2 : 캐쉬
3 : 시스템 메모리
4 : 호스트 컨트롤러
5 : PHY
6 : 시스템 버스
10 : 호스트
20 : 디바이스
21 : PHY
22 : Unipro
23 : 비휘발성 메모리 장치
31 : Command Descriptor List
41 : DMA
42 : Buffer
100 : 컴퓨터 시스템
210, 220, 230: 컴퓨터 시스템
300 : 디지털 카메라 장치
410, 420, 430 : 손목시계형 웨어러블 장치
500 : 웨어러블 장치

Claims (10)

  1. 복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache);
    상기 복수의 캐쉬 라인들 중 어느 하나로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list);
    상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고
    상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함하는 호스트(host).
  2. 제 1 항에 있어서,
    상기 커맨드 디스크립터 리스트는 상기 커맨드를 저장하기 위한 적어도 하나의 커맨드 디스크립터(command descriptor)와 적어도 하나의 엠프티 스페이스(empty space)를 포함하며,
    상기 캐쉬 라인의 사이즈는 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합인 호스트.
  3. 제 1 항에 있어서,
    상기 호스트 컨트롤러는 상기 커맨드를 메모리 장치로 전송하기 위한 버퍼(buffer)를 포함하는 호스트.
  4. 제 3 항에 있어서,
    상기 DMA는 상기 커맨드 디스크립터 리스트로부터 상기 커맨드를 메모리 장치로 상기 버퍼를 통하여 전송하는 호스트.
  5. 제 4 항에 있어서,
    상기 커맨드 디스크립터 리스트는 업데이트 필드(update field)를 포함하며,
    상기 메모리 장치로부터 상기 커맨드에 대한 응답으로써, 상기 메모리 장치는 업데이트 필드(update field)를 업데이트하는 호스트.
  6. 제 1 항에 있어서,
    상기 프로세서는 캐쉬 플러쉬(cache flush) 또는 캐쉬 인밸리데이트(cache invalidate)를 통하여 상기 커맨드를 상기 커맨드 디스크립터 리스트로 전송하는 호스트.
  7. 메모리 장치; 및
    상기 메모리 장치를 억세스하는 호스트를 포함하고,
    상기 호스트는,
    복수의 캐쉬 라인(cache line)들을 포함하는 캐쉬(cache);
    상기 복수의 캐쉬 라인들 중 어느 하나로부터 전송된 커맨드를 저장하기 위한 커맨드 디스크립터 리스트(command descriptor list);
    상기 커맨드 디스크립터 리스트를 억세스하는 DMA(direct memory access)를 포함하는 호스트 컨트롤러; 그리고
    상기 캐쉬 라인의 사이즈를 고려하여 상기 커맨드 디스크립터 리스트의 사이즈를 결정하는 프로세서(processor)를 포함하는 컴퓨터 시스템(computer system).
  8. 제 7 항에 있어서,
    상기 커맨드 디스크립터 리스트는 상기 커맨드를 저장하기 위한 적어도 하나의 커맨드 디스크립터(command descriptor)와 적어도 하나의 엠프티 스페이스(empty space)를 포함하며,
    상기 캐쉬 라인의 사이즈는 상기 커맨드 디스크립터의 사이즈와 상기 엠프티 스페이스의 사이즈의 합인 컴퓨터 시스템.
  9. 제 7 항에 있어서,
    상기 호스트 컨트롤러는 상기 커맨드를 상기 메모리 장치로 전송하기 위한 버퍼(buffer)를 포함하고,
    상기 DMA는 상기 커맨드 디스크립터 리스트로부터 상기 커맨드를 상기 메모리 장치로 상기 버퍼를 통하여 전송하는 컴퓨터 시스템.
  10. 제 7 항에 있어서,
    상기 커맨드 디스크립터 리스트는 업데이트 필드(update field)를 포함하며,
    상기 메모리 장치로부터 상기 커맨드에 대한 응답으로써, 상기 메모리 장치는 업데이트 필드(update field)를 업데이트하는 컴퓨터 시스템.
KR1020140124480A 2014-09-18 2014-09-18 호스트 및 이를 포함하는 컴퓨터 시스템 KR101996266B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140124480A KR101996266B1 (ko) 2014-09-18 2014-09-18 호스트 및 이를 포함하는 컴퓨터 시스템
US14/748,606 US9792225B2 (en) 2014-09-18 2015-06-24 Host and computer system having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140124480A KR101996266B1 (ko) 2014-09-18 2014-09-18 호스트 및 이를 포함하는 컴퓨터 시스템

Publications (2)

Publication Number Publication Date
KR20160033497A KR20160033497A (ko) 2016-03-28
KR101996266B1 true KR101996266B1 (ko) 2019-10-01

Family

ID=55525874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140124480A KR101996266B1 (ko) 2014-09-18 2014-09-18 호스트 및 이를 포함하는 컴퓨터 시스템

Country Status (2)

Country Link
US (1) US9792225B2 (ko)
KR (1) KR101996266B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180089140A (ko) * 2017-01-31 2018-08-08 에스케이하이닉스 주식회사 데이터 저장 장치
KR102534917B1 (ko) * 2017-08-16 2023-05-19 에스케이하이닉스 주식회사 신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템
KR102606825B1 (ko) 2017-09-13 2023-11-27 삼성전자주식회사 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
KR102655350B1 (ko) * 2017-12-14 2024-04-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132144A1 (en) 2003-12-12 2005-06-16 Illikkal Ramesh G. Striping across multiple cache lines to prevent false sharing
US20050204058A1 (en) 1997-10-14 2005-09-15 Philbrick Clive M. Method and apparatus for data re-assembly with a high performance network interface
JP2005301853A (ja) 2004-04-15 2005-10-27 Sony Corp 情報処理装置および情報処理方法、並びにプログラムおよび記録媒体

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504868A (en) 1994-03-01 1996-04-02 Adaptec, Incorporated SCSI command descriptor block parsing state machine
JP2916421B2 (ja) 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
JP2002318687A (ja) 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
KR101029074B1 (ko) * 2007-01-10 2011-04-18 삼성전자주식회사 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법
KR101505005B1 (ko) 2008-12-05 2015-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
JP5565425B2 (ja) 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050204058A1 (en) 1997-10-14 2005-09-15 Philbrick Clive M. Method and apparatus for data re-assembly with a high performance network interface
US20050132144A1 (en) 2003-12-12 2005-06-16 Illikkal Ramesh G. Striping across multiple cache lines to prevent false sharing
JP2005301853A (ja) 2004-04-15 2005-10-27 Sony Corp 情報処理装置および情報処理方法、並びにプログラムおよび記録媒体

Also Published As

Publication number Publication date
US20160085690A1 (en) 2016-03-24
KR20160033497A (ko) 2016-03-28
US9792225B2 (en) 2017-10-17

Similar Documents

Publication Publication Date Title
US9563368B2 (en) Embedded multimedia card and method of operating the same
KR102447493B1 (ko) 랭크 단위로 메모리 장치를 트레이닝하는 전자 장치 및 그것의 메모리 트레이닝 방법
US9411537B2 (en) Embedded multimedia card (EMMC), EMMC system including the EMMC, and method of operating the EMMC
KR102336528B1 (ko) 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법
KR101996266B1 (ko) 호스트 및 이를 포함하는 컴퓨터 시스템
CN110059032B (zh) 存储器接口及具有存储器接口的存储器控制器
CN109885257B (zh) 一种磁盘文件读写方法及装置
US9164804B2 (en) Virtual memory module
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
KR20150106132A (ko) 전자 장치의 캐시 메모리 제어 방법 및 장치
JP6386099B2 (ja) 圧縮支援のための方法、装置、コンピュータプログラム及び記憶媒体
KR20150089393A (ko) 배터리 충전 제어 방법 및 그 전자 장치
US11487452B2 (en) Electronic device and method for utilizing memory space thereof
US20170344311A1 (en) Method of operating a memory device
KR101258529B1 (ko) 메모리 카드 시스템, 메모리 카드, 그리고 메모리 카드의응용프로그램 수행방법
CN105683992A (zh) 设备启动自动冻结锁定
WO2019196634A1 (zh) 数据处理方法及装置
KR20190051581A (ko) 범용 비동기 송수신 부 및 이를 포함하는 메모리 컨트롤러 및 메모리 시스템
US20200183589A1 (en) Method and electronic device for initializing storage
US10602001B2 (en) Method for identifying data usage and electronic device implementing the same
KR20170038282A (ko) 전자 장치 및 그 부팅 방법
KR20150142329A (ko) 전자 장치 및 전자 장치의 파일 저장 방법
EP4357928A1 (en) Methods and system for efficient access to solid state drive
KR102672923B1 (ko) 저장 장치를 초기화하는 방법 및 전자 장치
US11768618B2 (en) Distributed processing data storage device and 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