KR100688477B1 - Usb 디바이스 내 엔드포인트들의 메모리 관리 방법 - Google Patents

Usb 디바이스 내 엔드포인트들의 메모리 관리 방법 Download PDF

Info

Publication number
KR100688477B1
KR100688477B1 KR1020000035706A KR20000035706A KR100688477B1 KR 100688477 B1 KR100688477 B1 KR 100688477B1 KR 1020000035706 A KR1020000035706 A KR 1020000035706A KR 20000035706 A KR20000035706 A KR 20000035706A KR 100688477 B1 KR100688477 B1 KR 100688477B1
Authority
KR
South Korea
Prior art keywords
data
host
endpoints
endpoint
memory
Prior art date
Application number
KR1020000035706A
Other languages
English (en)
Other versions
KR20020001262A (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 KR1020000035706A priority Critical patent/KR100688477B1/ko
Publication of KR20020001262A publication Critical patent/KR20020001262A/ko
Application granted granted Critical
Publication of KR100688477B1 publication Critical patent/KR100688477B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

USB 디바이스 내 엔드포인트들의 메모리 관리 방법이 개시된다. 본 발명은 호스트와 커뮤니케이션하는 디바이스를 포함하는 USB에 있어서, 디바이스에 내장되어 커뮤니케이션시 데이터가 저장되는 메모리 영역과, 메모리 영역 전체가 할당되고 호스트와 연결되어 호스트로부터 또는 호스트로 데이터를 전송하는 엔드포인트들을 구비하여, 엔드포인트들 각각은 메모리 영역을 공유하고 호스트에게 자신의 메모리 크기를 메모리 영역의 크기로 보고한다. 이와 같은 본 발명은 데이터 전송 효율을 향상시킨다.

Description

USB 디바이스 내 엔드포인트들의 메모리 관리 방법{Memory management of endpoints in USB device}
본 발명의 상세한 설명에서 사용되는 도면을 보다 충분히 이해하기 위하여, 각 도면의 간단한 설명이 제공된다.
도 1A 내지 1B는 종래의 USB 디바이스 내 엔드포인트들의 메모리 관리를 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 USB 디바이스 내 엔드포인트들의 메모리 관리를 나타내는 도면이다.
본 발명은 디바이스 제어 방법에 관한 것으로서, 특히 USB 디바이스 내 엔드포인트들의 메모리 관리 방법에 관한 것이다.
USB(Universial Serial Bus)는 개인용 컴퓨터의 시스템 버스에 주변장치들을 연결시키기 위하여 산업계에서 정의된 하나의 인터페이스 방식이다. USB는 마우스, 키보드, 모니터, 프린터, 대용량 저장 드라이버(mass storage driver), 모뎀, 펙스 등을 포함하는 다양한 주변장치들과의 1:1 인터페이스(single interface)를 특징으 로 한다. 이것은 제조단가를 줄이고 개인용 컴퓨터 사용자들로 하여금 그들의 시스템을 구성하는 데에 쉽도록 한다.
USB는 토큰 방식을 사용하는(token-based) 버스 아키텍쳐(bus architecture)이다. USB 호스트(host)는 버스 상에 토큰들을 뿌리고(broadcast), 토큰에 포함된 어드레스와 매칭되는 USB 디바이스는 호스트로 데이터를 전달하거나 호스트로부터 데이터를 받아들이거나 한다.
USB 디바이스는 호스트와의 커뮤니케이션에 사용되는 다수개의 채널(channel)들을 제공할 수 있으며, USB 명세서 상의 일반적인 용어로서 이러한 채널들은 "파이프들"(pipes)로 언급된다. 각각의 파이프는 다비이스 내의 엔드포인트들(endpoints)과 호스트를 연결하여, 디바이스는 호스트로부터의 데이터를 엔드포인트들에 수신하고 엔드포인트들에 데이터를 기입하여 그 데이터를 호스트로 송신한다. 즉, 각각의 파이프들은 양방향으로(bidirectional) 데이터 전송 가능하다. 그리고, 호스트와 디바이스 사이의 데이터 커뮤니케이션시에는 초기화때 호스트는 각 디바이스 내의 엔드포인트 수와 크기를 보고받은 후에, 보고된 엔드포인트의 크기보다 큰 데이터를 전송해야하는 경우에는 큰 데이터를 엔드포인트의 크기로 잘라서 여러개의 패킷(packet)으로 전송한다.
기존의 USB 디바이스들 내의 엔드포인트들은 USB 스펙(spec.)에 따라 각각의 메모리 영역을 가진다. 각 엔드포인트에 적용되는 메모리로 플립플롭(F/F)으로 구성된 피포(FIFO)를 사용하는 경우와 레지스터들로 구성되는 메모리 셀을 사용하는 경우가 있다. FIFO를 사용하는 경우는 플립플롭(F/F)을 제어하기 위한 로직이 줄어 드는 잇점과 메모리의 크기가 고정되는 문제점을 지니는 반면에, 메모리 셀을 사용하는 경우는 레지스터들을 선택적으로 설정함에 따라 메모리의 크기를 바꿀 수 있다. 도 1A 및 도 1B는 이러한 엔드포인트들의 메모리 관리를 나타내는 도면이다.
즉, 도 1A에서 보여주듯이, 엔드포인트들, EP0,EP1,…,EPn,은 x 바이트, y 바이트,…, z 바이트로 각각 설정되어 있는 데, 이는 플립플롭(F/F)으로 구성된 엔드포인트들은 한정된 메모리 크기를 갖는다는 것을 나타낸다. 도 1B에서는 각각의 엔드포인트들, EP0,EP1,…,EPn,은 시작 어드레스와 메모리 크기를 지정하는 부분을 포함하여, 레지스터들로 구성되는 메모리 셀들, n 바이트,은 시작 어드레스와 메모리 크기 별로 분할되어 분할된 메모리 셀 영역들이 해당 엔드포인트들에 각각 대응되도록 설정된다. 이는 엔드포인트들에 지정되는 메모리 크기에 따라 해당 엔드포인트의 메모리 크기가 설정되는 것으로서, 엔드포인트의 메모리 크기가 가변 가능함을 나타낸다.
그러나, 이 두가지 경우 모두는 호스트와 디바이스 사이의 데이터 전송 초기화 때 호스트에게 각 디바이스 내의 엔드포인트 수와 크기를 보고하게 된다. 그래서 데이터 전송 전에 설정된 엔드포인트의 크기는 가변 가능한 레지스터로 구성되는 엔드포인트임에도 불구하고 그 보고된 엔드포인트의 크기로만 전송되어질 데이터의 양이 결정된다. 즉, 엔드포인트의 크기 이상의 데이터가 전송되는 경우에는 어쩔 수 없이 데이터를 나누어 전송해야 한다. 이에 따라 데이터 전송 효율이 떨어지는 현상이 발생한다.
그러므로, USB 디바이스로의 데이터 전송시 한번에 많은 양의 데이터를 전송 할 수 있는 방법이 필요하다. 물론, 엔드포인트의 크기를 크게 함으로써 많은 데이터를 전송하는 것이 가능하지만 이는 하드웨어 구성상 비효율적인 문제점을 내포한다.
본 발명의 목적은 USB 디바이스의 데이터 전송 효율을 향상시킬 수 있는 엔드포인트의 메모리 구성방법을 제공하는 것이다.
상기 목적을 달성하기 위하여 본 발명의 USB 엔드 포인트의 메모리 관리 방법은 호스트와 커뮤니케이션하는 디바이스를 포함하는 USB에 있어서, 상기 디바이스에 내장되어 상기 커뮤니케이션시 데이터가 저장되는 메모리 영역; 및 상기 메모리 영역 전체가 할당되고 상기 호스트와 연결되어 상기 호스트로부터 또는 상기 호스트로 상기 데이터를 전송하는 엔드포인트들을 구비하여, 상기 엔드포인트들 각각은 상기 메모리 영역을 공유하고 상기 호스트로 자신의 메모리 크기를 상기 메모리 영역의 크기로 보고하는 것을 특징으로 한다.
바람직하기로, 상기 호스트로부터 데이터를 수신하는 경우에 상기 데이터 수신에 사용되는 상기 엔드포인트 이외의 나머지 상기 엔드포인트들은 상기 호스트로부터의 데이터를 내보내겠다는 아웃 토큰 신호에 대하여 NAK 신호를 발생하여 데이터 수신을 지연시키고, 상기 호스트로 데이터를 송신하는 경우에는 상기 데이터 송신에 사용되는 엔드포인트와 연결되는 상기 메모리 영역에서 플래그 비트를 발생하여 다른 데이터의 기입이 방지되도록 하는 것을 특징으로 한다.
또한, 상기 엔드포인트들은 상기 호스트로부터 전송되는 데이터를 수신하는 수신 전담 엔드포인트들과 상기 호스트로 데이터를 전송하는 송신 전담 엔드포인트들로 나뉘어지는 것을 특징으로 한다.
이와 같은 본 발명의 USB 엔드포인트 메모리 관리 방법은 데이터 전송효율을 향상시킨다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 대하여, 동일한 참조부호는 동일한 부재임을 나타낸다.
도 2는 본 발명의 일실시예에 따른 엔드포인트의 메모리 구성 방법을 나타내는 도면이다. 도 2에서 엔드포인트들, EP0,EP1,…,EPn-1,EPn,은 2개의 그룹으로 나뉘어져, 각각의 그룹은 송신 또는 수신을 전담한다.
송신과 수신을 각각 전담하도록 엔드포인트들을 구분하는 이유는 송신과 수신을 구분하지 않고 엔드포인트들로 데이터를 송수신하게 되면, 송신의 경우 호스트로부터 데이터를 받아들이겠다는 토큰, 즉 인 토큰(IN token)이 발생되기 전 까지 송신될 데이터들이 엔드포인트들, EP0,EP1,…,EPn-1,EPn,에 저장되어 있어야 하기 때문에 송신 대기중인 동안 수신을 할 수 없으므로, 데이터 전송 효율이 떨어지게 된다. 그래서, 송신 전담 엔드포인트들, EP0,EP1,…,을 통하여 호스트로 데이터를 전송하는 동안 수신 전담 엔드포인트들, …, EPn-1,EPn,을 통해서는 데이터를 수신하게 되어 데이터 전송 효율이 향상된다.
이러한 엔드포인트들, EP0,EP1,…,EPn-1,EPn, 각각에 할당되는 메모리는 USB 디바이스에 내장되는 메모리 영역 전체가 되도록 설정된다. 도 2에서 보여주듯이, 송신 전담 엔드포인트들, EP0,EP1,…, 및 수신 전담 엔드포인트들,…, EPn-1,EPn, 각각은 n 바이트의 레지스터로 구성된다. n 바이트의 메모리 크기를 갖는 엔드포인트들은 호스트로부터의 프로토콜 리셋(protocol reset) 명령 이후에 해당 디바이스 어드레스가 할당되면 자신의 메모리 크기 즉, 최대 크기를 호스트로 보고하게 된다.
통상적으로, 메모리 크기가 작은 엔드포인트로 데이터를 전송할 때에 데이터를 여러개의 패킷으로 나누어 전달하고 각 패킷을 전달할 때 마다 실제적인 데이터와는 상관없는 제어 신호들 예컨대, 디바이스 어드레스, 프레임 시작 신호(SOP), 에러 정정 신호(CRC), 패킷 번호(PID), 프레임 끝 신호(EOP) 등도 매번 전달된다. 따라서 본 발명에 의하면, 만약 엔드포인트로 전송되는 데이터가 엔드포인트의 최대 크기 보다 작으면 한번에 데이터 전송이 완료되고, 엔드포인트의 크기 보다 큰 용량의 데이터가 전송되는 경우에는 비록 패킷으로 나누어 전송해야 하지만 종래의 크기가 작은 엔드포인트에 비하면 그 패킷의 수는 작다. 즉, 패킷으로 전송되어질 횟수가 상대적으로 작다는 것을 의미한다. 그리고, 패킷을 전달할 때 마다 실제적인 데이터와는 상관없는 제어 신호들에 연관되는 마이크로 콘트롤러(MCU)의 인터럽트 동작 또한 줄어들게 된다.
그런데, 각 엔드포인트들, EP0,EP1,…,EPn-1,EPn,이 동일한 메모리 영역, n 바이트를 사용하고 있으므로 송수신되는 데이터들 간 충돌이 발생할 수 있다. 이를 방지하기 위하여 본 발명은 다음과 같은 방법을 사용한다.
먼저, 디바이스가 데이터 수신할 때 하나의 엔드포인트 예컨대, EPn이 n 바이트의 메모리를 사용하여 데이터를 수신하고 있다고 가정하자. 그러면, 나머지 엔드포인트들은 호스트로부터 데이터를 내보내겠다는 토큰, 즉 아웃 토큰(OUT token)에 대하여 현재 데이터를 수신할 수 없다는 내크(NAK) 신호를 송신함으로써, 마이크로 콘트롤러(MCU)가 엔드포인트 EPn에 의하여 사용된 n 바이트의 데이터들을 모두 읽어갈 때 까지 데이터의 수신이 지연된다.
다음에, 디바이스가 데이터를 송신할 때 예컨대, 엔드포인트 EP0를 통하여 전송되는 경우에 전송할 데이터가 n 바이트의 메모리에 있으면 플래그 비트(flag bit)가 발생되어 다른 데이터의 기입이 방지되도록 한다.
따라서, 엔드포인트들이 메모리를 공유하더라도 데이터 충돌없이 데이터의 송수신이 가능하다.
이상의 방법을 적용한 하나의 예를 들어, 본 발명에 의하여 데이터 전송효율이 향상되는 것을 설명하고자 한다. 1000 바이트의 데이터를 전송하는 데 있어서, 디바이스의 엔드포인트는 256 바이트의 메모리를 갖고 콘트롤(CONTROL), 인터럽트(INTERRUPT), 및 입출력(IN/OUT) 엔드포인트 3개로 구성된다고 하자.
이 경우, 종래의 방법으로는 입출력 엔드포인트의 크기는 나머지 콘트롤, 인터럽트 엔드포인트들에 작은 크기를 할당한다 해도 64 바이트 정도가 된다. 1000 바이트의 데이터를 처리하려면, USB 상에서 16번의 상호작용(transaction)과 MCU가 데이터를 읽어가는 데 소요되는 16번의 인터럽트 및 데이터를 읽어가는 데 소요되는 시간 및 호스트가 다음 데이터를 보내고자 하는 아웃 토큰(OUT token)에 대해 데이터를 받을 수 없다는 내크(NAK) 신호의 응답 등이 진행되어야 한다.
그러나, 본 발명에 따라, 256 바이트를 엔드포인트들에 할당하는 경우에는 4번의 상호작용과 MCU가 데이터를 읽어가는 데 소요되는 4번의 인터럽트 및 데이터를 읽어가는 동안의 NAK 응답 등이 진행되면 된다.
이런 결과는 데이터 전송을 처리하는 시간 중 많은 시간을 차지하는 아웃 토큰(OUT token)을 할당받고, 핸드 쉐이크(handshake)하는 과정과 MCU에서 인터럽트를 처리하는 시간인 것을 고려한다면 데이터 전송 효율은 30% 정도 향상된다.
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 본 발명의 USB 엔드포인트 메모리 관리 방법은 데이터 전송효율을 향상시킨다.

Claims (3)

  1. 호스트와 커뮤니케이션하는 디바이스를 포함하는 USB에 있어서,
    상기 디바이스에 내장되어 상기 커뮤니케이션시 데이터가 저장되는 메모리 영역; 및
    상기 메모리 영역 전체가 할당되고 상기 호스트와 연결되어 상기 호스트로부터 또는 상기 호스트로 상기 데이터를 전송하는 엔드포인트들을 구비하여,
    상기 엔드포인트들 각각은 상기 메모리 영역을 공유하고 상기 호스트로 자신의 메모리 크기를 상기 메모리 영역의 크기로 보고하고,
    상기 엔드포인트들은 상기 호스트로부터 전송되는 데이터를 수신하는 수신 전담 엔드포인트들과 상기 호스트로 데이터를 전송하는 송신 전담 엔드포인트들로 나뉘어지는 것을 특징으로 하는 USB 엔드포인트의 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 호스트로부터 데이터를 수신하는 경우, 상기 데이터 수신에 사용되는 상기 엔드포인트 이외의 나머지 상기 엔드포인트들은 상기 호스트로부터의 데이터를 내보내겠다는 아웃 토큰 신호에 대하여 NAK 신호를 발생하여 데이터 수신을 지연시키고,
    상기 호스트로 데이터를 송신하는 경우, 상기 데이터 송신에 사용되는 엔드포인트와 연결되는 상기 메모리 영역에서 플래그 비트를 발생하여 다른 데이터의 기입이 방지되도록 하는 것을 특징으로 하는 USB 엔드포인트의 메모리 관리방법.
  3. 삭제
KR1020000035706A 2000-06-27 2000-06-27 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법 KR100688477B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000035706A KR100688477B1 (ko) 2000-06-27 2000-06-27 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000035706A KR100688477B1 (ko) 2000-06-27 2000-06-27 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20020001262A KR20020001262A (ko) 2002-01-09
KR100688477B1 true KR100688477B1 (ko) 2007-03-08

Family

ID=19674225

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000035706A KR100688477B1 (ko) 2000-06-27 2000-06-27 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법

Country Status (1)

Country Link
KR (1) KR100688477B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100557215B1 (ko) * 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법
KR101012208B1 (ko) * 2008-06-17 2011-02-08 주식회사 동부하이텍 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990067763A (ko) * 1998-01-07 1999-08-25 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990067763A (ko) * 1998-01-07 1999-08-25 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법

Also Published As

Publication number Publication date
KR20020001262A (ko) 2002-01-09

Similar Documents

Publication Publication Date Title
EP1428131B1 (en) Multiple channel interface for communications between devices
JP3415567B2 (ja) Usb転送制御方法およびusbコントローラ
EP1002275B1 (en) A universal serial bus device controller
KR101077900B1 (ko) 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치
US6122676A (en) Apparatus and method for transmitting and receiving data into and out of a universal serial bus device
US6219736B1 (en) Universal serial bus (USB) RAM architecture for use with microcomputers via an interface optimized for integrated services device network (ISDN)
US7640385B2 (en) Dual-mode bus station and system for communications
EP1866778B1 (en) Method and apparatus for improving the performance of usb mass storage devices in the presence of long transmission delays
US6925512B2 (en) Communication between two embedded processors
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
KR19990067732A (ko) 복합 유니버설 시리얼 버스 제어기에 인터페이스를 제공하기 위한 장치 및 방법
KR19990087389A (ko) 응용 장치와 버스 구조 사이의 비동기 데이터 전달을 자동으로관리하기 위한 비동기 데이터 파이프
US20040205279A1 (en) Bus communication system by unrestrained connection and a communication control method therefor
EP0772831B1 (en) Bidirectional parallel signal interface
US5896549A (en) System for selecting between internal and external DMA request where ASP generates internal request is determined by at least one bit position within configuration register
US6529521B1 (en) Data storage system
KR20040041623A (ko) 버스 시스템 및 버스 인터페이스
CN110971621B (zh) 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法
KR100688477B1 (ko) Usb 디바이스 내 엔드포인트들의 메모리 관리 방법
EP1759297B1 (en) Interrupt scheme for bus controller
US20040078502A1 (en) Virtual I/O device coupled to memory controller
US5546550A (en) Method for assuring equal access to all input/output devices coupled to a SCSI bus
KR20040043198A (ko) 버스 시스템 및 버스 인터페이스
KR100602204B1 (ko) 메인 제어부와 부 제어부로 구성된 제어 시스템 및 버스연결 방법
EP0501489A1 (en) Advanced functionality parallel port interface

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
FPAY Annual fee payment

Payment date: 20130131

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee