KR101012208B1 - Usb디바이스 내의 엔드 포인트 메모리 효율 증대법 - Google Patents

Usb디바이스 내의 엔드 포인트 메모리 효율 증대법 Download PDF

Info

Publication number
KR101012208B1
KR101012208B1 KR1020080056759A KR20080056759A KR101012208B1 KR 101012208 B1 KR101012208 B1 KR 101012208B1 KR 1020080056759 A KR1020080056759 A KR 1020080056759A KR 20080056759 A KR20080056759 A KR 20080056759A KR 101012208 B1 KR101012208 B1 KR 101012208B1
Authority
KR
South Korea
Prior art keywords
endpoint
memory
host
usb device
data
Prior art date
Application number
KR1020080056759A
Other languages
English (en)
Other versions
KR20090131008A (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 KR1020080056759A priority Critical patent/KR101012208B1/ko
Priority to US12/484,297 priority patent/US20090313393A1/en
Publication of KR20090131008A publication Critical patent/KR20090131008A/ko
Application granted granted Critical
Publication of KR101012208B1 publication Critical patent/KR101012208B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법에 관한 것이다.
현재 특정 엔드 포인트에 할당된 엔드 포인트 메모리가 모두 사용 중이면, 다른 엔드 포인트에 할당된 엔드 포인트 메모리가 사용되지 않고 있는 경우에도 그것을 그 엔드 포인트가 사용할 수가 없다.
이에 본 발명은, 엔드 포인트 메모리에 대한 요구가 발생하는 시점에 엔드 포인트에 엔드 포인트 메모리를 할당하고, 요구가 소멸되는 시점에 할당되었던 엔드 포인트 메모리를 반환하는 방법을 제공한다.
본 발명에 의하면, 엔드 포인트 메모리를 효율적으로 사용하게 되어 필요한 메모리의 크기를 줄임으로써 칩 사이즈(chip size)를 줄일 수 있으며, 이를 통해 단위 웨이퍼(wafer)에서 생산 가능한 칩의 개수가 늘어나 단가를 낮출 수 있는 효과가 있다. 또한 엔드 포인트 메모리의 효율성 증대로 NACK 발생이 줄어들기 때문에 CPU 자원 손실과 통신 효율 저하를 막을 수 있는 효과가 있다.
USB, 엔드 포인트, 메모리, 효율, 할당, 반환

Description

USB디바이스 내의 엔드 포인트 메모리 효율 증대법{Method For Increasing Efficiency of End Point Memory in USB Devices}
본 발명은 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법에 관한 것이다. 구체적으로 본 발명은, 엔드 포인트 메모리에 대한 요구가 발생하는 시점에 엔드 포인트에 엔드 포인트 메모리를 할당하고, 요구가 소멸되는 시점에 할당되었던 엔드 포인트 메모리를 반환하는 단계를 포함하는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법에 관한 것이다.
USB(Universial Serial Bus)는 PC의 시스템 버스에 주변장치들을 연결시키기 위하여 산업계에서 정의한 인터페이스 형태이다.
일반적인 통신에서 전송 효율성을 위하여 적절한 크기의 버퍼 메모리(buffer memory)를 두는 것과 마찬가지로, USB 디바이스는 호스트와의 통신에 있어서 처리 속도 및 전송 속도 등을 감안하여 송신 및 수신 측에 버퍼에 해당하는 엔드 포인트 메모리(end point memory)를 두게 된다.
USB는 토큰 방식에 기반한 버스 구조(token-based bus architecture)의 통신 을 제공한다. USB 통신의 데이터 전송 방식에는 제어(control), 인터럽트(interrupt), 벌크(bulk) 및 동시적(isochronous) 전송이 있다.
USB 디바이스가 호스트 측으로 데이터를 송신할 때에는, USB 디바이스 측의 MCU(Micro Controller Unit)가 송신할 데이터를 송신 엔드 포인트 메모리에 저장하고 있다가, 호스트 측에서 보낸 송신 요구 신호인 IN 토큰이 감지되었을 때 저장된 데이터를 순차적으로 전송한다. 제어, 인터럽트, 벌크 전송의 경우에는 호스트 측으로부터 ACK 신호를 받았을 때 송신이 완료되며, 동시적 전송의 경우에는 데이터를 전송했을 때 송신이 완료된다.
USB 디바이스가 호스트 측으로부터 데이터를 수신할 때에는, 호스트 측이 수신 요구 신호인 OUT 토큰을 보냈을 때 데이터를 수신 엔드 포인트 메모리를 통하여 수신하며, 수신한 데이터에 대한 에러 체크(error check) 결과 에러가 없음이 확인되었을 때 수신이 완료된다.
모든 엔드 포인트 메모리에 의미 있는 데이터가 저장되어 다음 처리를 기다리는 상황임에도 불구하고 새로운 전송이 요구된 경우에는 NACK 신호가 발생한다.
USB 디바이스의 통신에서는 양방향으로(bidirectional) 데이터를 전송할 수 있는 파이프(pipes)가 사용되어, USB 디바이스 내의 엔드 포인트와 호스트를 연결하는 채널(channel) 역할을 한다. USB 디바이스는 호스트로부터의 데이터를 파이프를 통하여 수신 엔드 포인트에 수신하고, 송신 엔드 포인트에 입력된 데이터를 파이프를 통하여 호스트로 송신한다. 인터럽트, 벌크 및 동시적 전송의 경우, 송신 엔드 포인트와 수신 엔드 포인트는 일반적으로 별개의 하드웨어로 구현된다.
USB 디바이스 내의 엔드 포인트는 16개까지 존재할 수 있다. USB 디바이스와 호스트 간의 데이터 통신 초기화 때, 호스트는 각 디바이스 내의 엔드 포인트 수와 크기를 보고받은 후에, 보고된 엔드 포인트의 크기보다 큰 데이터를 전송해야하는 경우에는 큰 데이터를 엔드 포인트의 크기로 잘라서 여러개의 패킷(packet)으로 전송한다.
USB 디바이스 내의 엔드 포인트 개수가 16개로 제한되므로, 범용 컨트롤러 설계에 있어서 다수의 엔드 포인트에 독립적으로 엔드 포인트 메모리를 구성하게 되면 매우 많은 양의 메모리가 필요하게 된다.
또한 할당된 엔드 포인트 메모리의 크기에 따라 한 번에 전송 가능한 패킷의 크기가 결정되므로, 이것이 작을 경우 전송이 여러 번에 나뉘어 이루어지기 때문에 전송 효율이 떨어지게 된다.
또한 호스트에서 송신 요구로서 IN 토큰을 발행하거나, 수신 요구로서 OUT 토큰을 발행한 경우, 그 시점에 사용 가능한 엔드 포인트 메모리가 없으면 디바이스는 호스트로 NACK 신호를 발생시키는데, 이 또한 전송을 지연시킴으로써 전송 효율을 떨어뜨리게 된다.
도 1은 종래 기술에 의한 USB 디바이스 내의 엔드 포인트 메모리 사용을 도시한 것이다. 실제로 데이터가 할당되지 않아 쓰기가 가능한 영역이 엔드 포인트 메모리에 존재하더라도 그 부분을 사용하지 못할 수 있다. 현재 엔드 포인트 EP0에 할당된 엔드 포인트 메모리가 모두 사용 중이면, 다른 엔드 포인트에 할당된 엔드 포인트 메모리가 사용되지 않고 있는 경우에도 그것을 엔드 포인트 EP0가 사용할 수가 없다. 전체 디바이스 관점에서는 엔드 포인트 메모리에 여유가 있음에도 불구하고, 개별 엔드 포인트별로는 엔드 포인트 메모리가 부족한 상황이 벌어질 수 있는 것이다. 특히 엔드 포인트 메모리가 실제로 사용되지 않고 있으면서도 할당 된 상태를 유지하는 경우가 문제가 된다.
상기 과제를 해결하기 위하여 본 발명의 일 측면은, USB 디바이스 내의 엔드 포인트 메모리 효율 증대법에 있어서, 상기 메모리에 대한 실제 사용이 시작되는 시점에 엔드 포인트에 상기 메모리를 할당하는 단계 및 상기 실제 사용이 종료되는 시점에 상기 엔드 포인트에 할당되었던 상기 메모리를 반환하는 단계를 포함하는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
바람직하게는, 상기 엔드 포인트는 수신 엔드 포인트이고, 상기 실제 사용이 시작되는 시점은 호스트로부터 OUT 토큰을 수신한 시점이고, 상기 실제 사용이 종료되는 시점은 상기 호스트로부터 수신한 데이터에 에러가 없음이 확인된 시점인 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
바람직하게는, 상기 엔드 포인트는 송신 엔드 포인트이고, 상기 실제 사용이 종료되는 시점은, 전송 방식이 제어, 인터럽트 또는 벌크 중 어느 하나인 경우 호스트로부터 ACK 신호를 수신한 시점이고, 전송 방식이 동시적인 경우 상기 호스트로 데이터를 송신한 시점인 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
바람직하게는, 상기 메모리는 균등한 크기의 세그먼트로 구분되며, 어드레스 맵이 어드레스 또는 인덱스 값의 포인터를 저장하여, 엔드 포인트에 할당된 세그먼트와 어떤 엔드 포인트에 할당되지 않은 세그먼트를 구분할 수 있도록 하는 단계를 더 포함하는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
더 바람직하게는, 상기 어드레스 맵은 연결 리스트 방식의 자료 구조 형태를 사용하는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
바람직하게는, 상기 할당하는 단계 및 상기 반환하는 단계는, 상기 USB 디바이스 내의 제어부에 의하여 자동으로 수행되는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법을 제공한다.
본 발명에 의하면, 엔드 포인트 메모리를 효율적으로 사용하게 되어 필요한 메모리의 크기를 줄임으로써 칩 사이즈(chip size)를 줄일 수 있으며, 이를 통해 단위 웨이퍼(wafer)에서 생산 가능한 칩의 개수가 늘어나 단가를 낮출 수 있는 효과가 있다.
또한 엔드 포인트 메모리의 효율성 증대로 NACK 발생이 줄어들기 때문에 NACK 처리에 필요한 CPU 자원 손실과 통신 효율 저하를 막을 수 있는 효과가 있다.
또한 엔드 포인트 메모리가 실제로 필요할 경우에만 할당되고 필요가 없어질 경우 다시 반환되므로, 각각의 엔드 포인트에 할당될 엔드 포인트 메모리의 크기를 결정하기 위해 여러 테스트를 할 필요가 없기 때문에, 연구 개발 속도가 빨라질 수 있는 효과가 있다.
이하 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서, 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명에서 엔드 포인트 메모리, 즉 버퍼는 균등한 크기로 미리 나뉘어 할당을 기다리게 된다. 이때 나뉘어진 단위를 세그먼트(segment)라고 한다. 처음 시점에서 엔드 포인트에 할당된 세그먼트는 없다.
USB 디바이스가 호스트 측으로 데이터를 송신할 때에는, USB 디바이스 측의 MCU가 송신할 데이터를 송신 엔드 포인트 메모리에 저장하고 있다가, 호스트 측에서 보낸 송신 요구 신호인 IN 토큰이 감지되었을 때 저장된 데이터를 순차적으로 전송한다. 제어, 인터럽트, 벌크 전송의 경우에는 호스트 측으로부터 ACK 신호를 받았을 때, 동시적 전송의 경우에는 데이터를 전송했을 때 송신이 완료되는데, 송신이 완료되는 순간부터 버퍼 세그먼트를 더 이상 사용할 필요가 없어지므로 송신이 완료된 부분에 할당되었던 버퍼 세그먼트를 반환하게 된다.
USB 디바이스가 호스트 측으로부터 데이터를 수신할 때에는, 호스트 측이 수신 요구 신호인 OUT 토큰을 보냈을 때 데이터를 수신 엔드 포인트 메모리를 통하여 수신하며, 그 시점에서 할당되지 않고 있던 버퍼 세그먼트를 필요한 만큼 할당받는다. 수신한 데이터에 대한 에러 체크(error check) 결과 에러가 없음이 확인되었을 때 수신이 완료되는데, 수신이 완료된 순간부터 버퍼 세그먼트를 더 이상 사용할 필요가 없어지므로 그 부분에 할당되었던 버퍼 세그먼트를 반환하게 된다.
디바이스 내에서 할당되고 반환되는 전체 버퍼 세그먼트의 단위는 모두 동일 할 필요는 없다. 전체 버퍼 세그먼트의 단위는 송신 엔드 포인트인지 수신 엔드 포인트인지 여부에 따라 다른 크기가 될 수도 있다. 한편 전체 버퍼 세그먼트는 일부분의 엔드 포인트끼리만 공유되도록 만들 수도 있고, 일부 엔드 포인트들만 여러 버퍼 세그먼트 단위에 걸쳐 작동할 수도 있다.
도 2a 내지 도 2g는 본 발명에 의하여 USB 디바이스 내의 엔드 포인트 메모리가 할당되고 반환되는 과정의 일 실시예를 도시한 것이다.
본 실시예에서 각각의 엔드 포인트에 한 번의 전송에서 배정되는 버퍼 세그먼트의 개수는 바뀔 수 있고, 실제 엔드 포인트에 대한 요구가 발생한 시점에 버퍼 세그먼트를 지정하기 때문에 MCU가 버퍼 세그먼트에 지정한 순서대로 데이터가 전송되는 것도 아니다. 도 2a 내지 도 2g에서 EMPTY는 할당되지 않았다는 의미이다.
도 2a에서 참조되듯이, 본 실시예는 전체 엔드 포인트 메모리가 6개의 세그먼트로 균등하게 분리되어 있고, 4개의 엔드 포인트가 존재하는 상황을 가정한다. 여기서 EP0 및 EP1는 수신 엔드 포인트로, EP2 및 EP3은 송신 엔드 포인트로 설정되어 있는 상황을 가정한다.
도 2b에서 참조되듯이, 호스트가 USB 디바이스 측으로 데이터를 보내기 위하여 OUT 토큰을 발행하면, USB 디바이스의 수신 엔드 포인트 메모리에 대한 요구가 발생한다. 수신 엔드 포인트 EP0는 수신을 위하여 버퍼 세그먼트 1개를 필요로 하게 되므로, EP0에 EMPTY 상태의 버퍼 세그먼트 BUF0이 할당된다.
도 2c에서 참조되듯이, 상기 수신 데이터는 BUF0에 저장되는데, 호스트로부터의 수신이 끝나지 않은 시점에서 USB 디바이스 측의 MCU가 호스트로 데이터를 송 신하고자 하는 경우, 송신 엔드 포인트 EP2에 대한 요구가 발생한다. 송신 데이터의 특성에 따라 EP2에는 버퍼 세그먼트 2개에 해당하는 공간이 필요할 수 있는데, 이러한 경우 EP2에는 EMPTY 상태의 버퍼 세그먼트 BUF1 및 BUF2가 할당되어 디바이스 측 MCU가 송신하고자 하는 데이터가 BUF1 및 BUF2에 저장된다.
도 2d에서 참조되듯이, 수신 엔드 포인트 EP0가 수신을 완료하고 수신한 데이터에 에러가 없으면 MCU로 데이터가 넘어가게 되는데, 이 경우 EP0에 할당된 버퍼 세그먼트 BUF0은 더 이상 필요가 없기 때문에 반환된다.
도 2e에서 참조되듯이, 아직 송신 엔드 포인트 EP2에 대한 IN 토큰이 호스트로부터 오지 않은 상황에서 MCU가 또 다른 데이터를 호스트로 송신하고자 하는 경우, 다른 송신 엔드 포인트 EP3에 대한 요구가 발생한다. 송신 데이터의 특성에 따라 필요한 버퍼 세그먼트가 1개인 경우 EP3에는 EMPTY 상태의 버퍼 세그먼트 BUF3이 할당되어 디바이스 측 MCU가 송신하고자 하는 데이터가 BUF3에 저장된다.
도 2f에서 참조되듯이, 이때 호스트로부터 송신 엔드 포인트 EP3에 대한 IN 토큰이 오면 송신이 처리되는데, EP3이 동시적(isochronous) 전송을 하도록 지정된 경우라면 데이터를 송신한 시점에, 그렇지 않고 제어, 인터럽트, 벌크 등의 전송을 하도록 지정된 경우라면 호스트로부터 ACK 신호를 수신한 시점에, 송신 엔드 포인트 EP3에 대한 요구는 소멸되므로, EP3에 할당된 버퍼 세그먼트 BUF3은 의미가 없어져 반환된다.
도 2g에서 참조되듯이, 이후 EP2에 대한 IN 토큰이 온 경우, 상술한 과정과 마찬가지로 송신이 처리되면 송신 엔드 포인트 EP2에 대한 요구는 소멸되므로, EP2 에 할당된 버퍼 세그먼트 BUF1 및 BUF2는 더 이상 필요가 없기 때문에 반환된다.
각각의 버퍼 세그먼트가 할당되지 않아 EMPTY 상태에 있는지, 혹은 EP0 내지 EP3 중의 특정 엔드 포인트에 할당되었는지를 구별하기 위하여, 버퍼 세그먼트 자체에 혹은 버퍼 세그먼트와 별도의 어드레스 맵(address map)이 필요하다. 어드레스 맵은 각 버퍼 세그먼트가 어떤 엔드 포인트에 할당되었는지에 대한 정보뿐만 아니라, 각 버퍼 세그먼트가 할당된 순서에 대한 정보를 저장할 수 있다. 어드레스 맵은 상기 도 2a 내지 도 2g와 같이 표현될 수도 있다.
어드레스 맵의 구현에는 EMPTY 상태의 버퍼 세그먼트들을 지정하거나, EP0 내지 EP3 중의 특정 엔드 포인트들에 할당된 버퍼 세그먼트를 지정하기 위한 저장 공간이 필요하다. 각각의 저장 공간은 해당하는 버퍼 세그먼트의 시작점을 가리키는 포인터(pointer)와 끝점을 가리키는 포인터, 이렇게 2개의 정보만을 저장할 수도 있다. 이 저장 공간에 저장되는 포인터는 버퍼 세그먼트의 어드레스를 가리키는 것일 수도 있지만 균등한 크기로 구분된 세그먼트의 포인터를 계산하는 것은 쉽기 때문에 인덱스(index) 값을 가리키도록 하여 저장 공간을 절약할 수 있다.
도 3은 본 실시예에서 사용한 일반적인 연결 리스트 자료 구조 형태를 도시한 것이다. 도 3에서는 각 노드(node)에서 Next BUF를 가리키는 포인터와 저장된 데이터가 같이 묶여 있지만, 이것은 논리적인 개념일 뿐 포인터는 별도의 메모리에 따로 저장할 수도 있다.
연결 리스트가 적용된 어드레스 맵인 도 2f를 참조하면, EMPTY의 저장 공간에는 시작점으로서 BUF4가 저장되고, BUF4에 해당하는 세그먼트의 Next BUF 저장 공간에는 BUF5가 저장되고, BUF5에 해당하는 세그먼트의 Next BUF 저장 공간에는 BUF0이 저장되고, BUF0에 해당하는 세그먼트의 Next BUF 저장 공간에는 끝점으로서 BUF3이 저장된다. 한편 EP2의 저장 공간에는 시작점으로서 BUF1이 저장되고, BUF1에 해당하는 세그먼트의 Next BUF 저장 공간에는 BUF2가 저장된다.
도 4a는 도 2f 상태에서의 어드레스 맵에서, 연결 리스트가 사용된 경우 각 버퍼 세그먼트의 포인터가 저장된 모습을 도시한 것이다.
도 4b는 도 2f 상태에서의 어드레스 맵에서, 연결 리스트가 사용된 경우 EMPTY 상태 혹은 EP0 내지 EP3에 할당된 상태의 각 버퍼 세그먼트의 시작점 및 끝점을 지정한 모습을 도시한 것이다.
도 4a를 참조하면 EMPTY의 저장 공간에는 시작점으로서 BUF4에 해당하는 인덱스 값 4가 저장되고, 도 4b를 참조하면 BUF4에 해당하는 세그먼트의 Next BUF 저장 공간에는 인덱스 값 5가 저장되고, 인덱스 값 5에 해당하는 세그먼트의 Next BUF 저장 공간에는 인덱스 값 0이 저장되고, 인덱스 값 0에 해당하는 세그먼트의 Next BUF 저장 공간에는 끝점으로서 인덱스 값 3이 저장되며, 이것은 도 4b에서 EMPTY의 끝점에 인덱스 값 3이 저장된 것으로 확인 가능하다. 한편 도 4a를 참조하면 EP2의 저장 공간에는 시작점으로서 BUF1에 해당하는 인덱스 값 1이 저장되고, 도 4b를 참조하면 인덱스 값 1에 해당하는 세그먼트의 Next BUF 저장 공간에는 인덱스 값 2가 저장되며, 이것은 도 4b에서 EP2의 끝점에 인덱스 값 2이 저장된 것으로 확인 가능하다.
상술한 본 발명의 할당하는 단계 및 반환하는 단계를 포함하는 방법은, 상기 USB 디바이스 내의 제어부, 예컨대 MCU에 의하여 자동으로 수행될 수 있다. 일반적으로 USB 디바이스가 호스트로부터 데이터를 수신할 경우 호스트가 중심이 되어 데이터 통신 과정에서의 메모리 관리에 사용되는 스케줄링(scheduling)을 비롯한 각종 제어를 수행하고, USB 디바이스가 호스트로 데이터를 송신할 경우에는 USB 디바이스 측의 MCU가 각종 제어를 수행한다. 상술한 본 발명의 바람직한 실시예에서는, USB 디바이스 측의 MCU가 송신 및 수신 모든 경우에 있어서 엔드 포인트 메모리의 할당 및 반환을 할 수 있다.
이상과 같이 본 발명의 이해를 위하여 그 실시예를 기술하였으나, 당업자라면 알 수 있듯이, 본 발명은 본 명세서에서 기술된 특정 실시예에 한정되는 것이 아니라, 본 발명의 범주를 벗어나지 않는 범위 내에서 다양하게 변형, 변경 및 대체될 수 있다. 따라서, 본 발명의 진정한 사상 및 범주에 속하는 모든 변형 및 변경을 특허청구범위에 의하여 모두 포괄하고자 한다.
도 1은 종래 기술에 의한 USB 디바이스 내의 엔드 포인트 메모리 사용을 도시한 것이다.
도 2a 내지 도 2g는 본 발명에 의하여 USB 디바이스 내의 엔드 포인트 메모리가 할당되고 반환되는 과정의 일 실시예를 도시한 것이다.
도 3은 일반적인 연결 리스트 자료 구조 형태를 도시한 것이다.
도 4a는 도 2f 상태에서의 어드레스 맵에서, 각 버퍼 세그먼트의 포인터가 저장된 모습을 도시한 것이다.
도 4b는 도 2f 상태에서의 어드레스 맵에서, EMPTY 상태 혹은 EP0 내지 EP3에 할당된 상태의 각 버퍼 세그먼트의 시작점 및 끝점을 지정한 모습을 도시한 것이다.

Claims (6)

  1. 외부의 호스트와 데이터 통신을 하는 USB 디바이스 내의 엔드 포인트 메모리 효율 증대법에 있어서,
    상기 메모리에 대한 실제 사용이 시작되는 시점에 엔드 포인트에 상기 메모리를 할당하는 단계, 및
    상기 실제 사용이 종료되는 시점에 상기 엔드 포인트에 할당되었던 상기 메모리를 반환하는 단계를 포함하는
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
  2. 제 1항에 있어서,
    상기 엔드 포인트는 수신 엔드 포인트이고, 상기 실제 사용이 시작되는 시점은 상기 USB 디바이스가 상기 호스트로부터 OUT 토큰을 수신한 시점이고, 상기 실제 사용이 종료되는 시점은 상기 USB 디바이스가 상기 호스트로부터 수신한 데이터에 에러가 없음을 확인한 시점인
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
  3. 제 1항에 있어서,
    상기 엔드 포인트는 송신 엔드 포인트이고, 상기 실제 사용이 종료되는 시점은, 상기 데이터 통신의 전송 방식이 제어, 인터럽트 또는 벌크 중 어느 하나인 경우 상기 호스트로부터 ACK 신호를 수신한 시점이고, 상기 전송 방식이 동시적인 경우 상기 호스트로 데이터를 송신한 시점인
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
  4. 제 1항에 있어서,
    상기 메모리는 균등한 크기의 세그먼트로 구분되며, 어드레스 맵이 어드레스 또는 인덱스 값의 포인터를 저장하여, 상기 엔드 포인트에 할당된 세그먼트와 상기 어떤 엔드 포인트에도 할당되지 않은 세그먼트를 구분할 수 있도록 하는 단계를 더 포함하는
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
  5. 제 4항에 있어서,
    상기 어드레스 맵은 연결 리스트 방식의 자료 구조 형태를 사용하는
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 할당하는 단계 및 상기 반환하는 단계는, 상기 USB 디바이스 내의 제어부에 의하여 자동으로 수행되는
    USB 디바이스 내의 엔드 포인트 메모리 효율 증대법.
KR1020080056759A 2008-06-17 2008-06-17 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법 KR101012208B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080056759A KR101012208B1 (ko) 2008-06-17 2008-06-17 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법
US12/484,297 US20090313393A1 (en) 2008-06-17 2009-06-15 Method of increasing efficiency of end point memory in usb devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080056759A KR101012208B1 (ko) 2008-06-17 2008-06-17 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법

Publications (2)

Publication Number Publication Date
KR20090131008A KR20090131008A (ko) 2009-12-28
KR101012208B1 true KR101012208B1 (ko) 2011-02-08

Family

ID=41415798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080056759A KR101012208B1 (ko) 2008-06-17 2008-06-17 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법

Country Status (2)

Country Link
US (1) US20090313393A1 (ko)
KR (1) KR101012208B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008257419A (ja) * 2007-04-04 2008-10-23 Nec Electronics Corp 通信アダプタ及び通信アダプタのデータ転送方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990014012A (ko) * 1997-07-21 1999-02-25 빌헬름 에핑, 디터 라인하르트 버퍼 메모리 장치
KR20020001262A (ko) * 2000-06-27 2002-01-09 윤종용 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법
JP2002055937A (ja) 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd Usb装置
KR20050021602A (ko) * 2003-08-19 2005-03-07 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3680762B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990014012A (ko) * 1997-07-21 1999-02-25 빌헬름 에핑, 디터 라인하르트 버퍼 메모리 장치
KR20020001262A (ko) * 2000-06-27 2002-01-09 윤종용 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법
JP2002055937A (ja) 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd Usb装置
KR20050021602A (ko) * 2003-08-19 2005-03-07 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법

Also Published As

Publication number Publication date
KR20090131008A (ko) 2009-12-28
US20090313393A1 (en) 2009-12-17

Similar Documents

Publication Publication Date Title
US7409485B1 (en) Optimized data transfer for a data bus
CN102033840B (zh) 总线协议转换装置和总线协议转换方法
US8635386B2 (en) Communication control device, data communication method and program
US5933413A (en) Adaptive priority determination for servicing transmit and receive in network controllers
CN101266584B (zh) 通用串行总线主机控制器及其控制方法
KR102285749B1 (ko) 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
CN101707565A (zh) 零拷贝网络报文发送、接收方法和装置
US7974190B2 (en) Dynamic queue memory allocation with flow control
JP6351363B2 (ja) 通信装置およびそのデータ処理方法
CN111149097B (zh) 一种主芯片、从芯片及芯片间的dma传输系统
TWI717373B (zh) 用於通用序列匯流排2.0頻寬保留之方法及系統
CN115658586A (zh) 资源管理芯片、方法、电子设备及可读存储介质
KR101012208B1 (ko) Usb디바이스 내의 엔드 포인트 메모리 효율 증대법
KR20040106665A (ko) 송수신 흐름에 따라 공유 버퍼 메모리의 할당량을제어하는 송수신 네트워크 제어기 및 그 방법
CN111290983A (zh) Usb传输设备及传输方法
JP2020144410A (ja) メモリコントローラ
US7853739B1 (en) Method and system for transmitting USB communication
US8219726B2 (en) Method for data transfer between host and device
KR20060112349A (ko) 에스오씨 버스 시스템 및 버스 데이터 처리방법
US11240178B2 (en) Data transmission method and data transmission system
CN117312202B (zh) 片上系统和用于片上系统的数据传输方法
KR100688477B1 (ko) Usb 디바이스 내 엔드포인트들의 메모리 관리 방법
WO2016134634A1 (zh) 报文接收方法、装置、设备、计算机存储介质及中央处理器
CN112306931B (zh) 一种软件实现usb主机控制器方法、系统及存储介质
CN117112465A (zh) Dma调度器及方法、片上系统、电子组件及设备

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
LAPS Lapse due to unpaid annual fee