KR20060028705A - 재 어드레스 가능한 가상 dma 제어 및 상태 레지스터들 - Google Patents

재 어드레스 가능한 가상 dma 제어 및 상태 레지스터들 Download PDF

Info

Publication number
KR20060028705A
KR20060028705A KR1020057025327A KR20057025327A KR20060028705A KR 20060028705 A KR20060028705 A KR 20060028705A KR 1020057025327 A KR1020057025327 A KR 1020057025327A KR 20057025327 A KR20057025327 A KR 20057025327A KR 20060028705 A KR20060028705 A KR 20060028705A
Authority
KR
South Korea
Prior art keywords
data
transfer
location
parameter
dma controller
Prior art date
Application number
KR1020057025327A
Other languages
English (en)
Other versions
KR100868395B1 (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 인텔 코오퍼레이션
Publication of KR20060028705A publication Critical patent/KR20060028705A/ko
Application granted granted Critical
Publication of KR100868395B1 publication Critical patent/KR100868395B1/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

DMA 전송을 수행하는 장치 및 방법이 개시되며, 여기서 어드레스는 데이터 블록의 전송에 대한 파라미터가 제공되거나 데이터 블록의 전송 상태가 DMA 컨트롤러에 의해 기입되는 메모리 디바이스 내의 메모리 위치를 지정하는 DMA 컨트롤러의 DMA 레지스터 내에 기입된다.
DMA 전송, 어드레스, 데이터 블록, DMA 컨트롤러, 메모리 디바이스, 제어 디바이스

Description

재 어드레스 가능한 가상 DMA 제어 및 상태 레지스터들{READDRESSABLE VIRTUAL DMA CONTROL AND STATUS REGISTERS}
본 발명은 DMA 전송의 상태를 제어 및 모니터하기 위해 메모리 어드레스 공간 내에 가상 DMA 레지스터를 정의하는 것에 관련된다.
가상 컴퓨터 시스템 아키텍처는 컴퓨터 시스템 내에서 버스들에 걸쳐서 디바이스들(메모리 디바이스, I/O 디바이스들 등) 사이에서 데이터 블록을 효율적으로 전송하도록 시도하는 다수의 접근법들을 사용하여 왔다. 가장 간단한 접근법들 중 하나는 CPU(중앙 처리 장치)가 하나의 디바이스로부터 데이터 블록을 판독한 후 이 데이터 블록을 다른 디바이스에 기입하도록 허용하는 것이였다. 그러나, 이러한 작업(task)은 종종 다른 대체 메커니즘에게 위임되는 것이 더욱 적합한 작업으로 간주되어 CPU는 보다 복잡한 계산 및 다른 계산 작업을 수행하는데 보다 충실히 전념하게 될 수 있다.
폭넓게 이용되는 하나의 대체 메커니즘은 컴퓨터 시스템의 시스템 메모리 및 다른 디바이스들 사이에서 데이터 블록의 이동을 대신하는 컴퓨터 시스템에 DMA(direct memory access) 컨트롤러를 부가하는 것이다. 통상적으로, 이러한 DMA 컨트롤러들은 전송 파라미터들을 DMA 컨트롤러 내의 레지스터들에 직접 기입하는 CPU에 의해 데이터 블록의 지정 전송(specific transfer)을 수행하도록 프로그램된다. 이후에, 데이터 블록의 전송이 수행됨에 따라, CPU는 전송 상태를 질의하기 위해 DMA 컨트롤러 내의 하나 이상의 레지스터들을 폴링하도록 통상적으로 프로그램된다.
그러나, DMA 컨트롤러의 사용은 단점이 있다. CPU가 데이터 블록의 전송을 실제적으로 수행하는 부담이 줄어들었다고 해도, 전송 상태를 질의하기 위해서 CPU가 DMA 컨트롤러 내의 레지스터를 폴링하는 것은 여전히 비효율적으로 간주된다. 또한, 컴퓨터 시스템들의 많은 구현에 있어서, DMA 컨트롤러 내의 레지스터들을 프로그램하기 위해 CPU에 의해 수행된 기입 동작 및 DMA 컨트롤러 내의 레지스터로부터 상태를 질의하기 위해 CPU에 의해 수행된 판독 동작은 원하는 시간보다 더 많은 시간이 걸릴 수 있다.
폭넓게 사용되는 또 다른 대체 메커니즘은 버스 마스터링 능력(bus mastering capabilities)을 컴퓨터 시스템 내의 다양한 I/O 디바이스들에 통합하는 것으로, 이 디바이스들은 데이터 블록의 전송을 그들 자신이 자발적으로 수행할 수 있다. 통상적으로, 이러한 전송은 이러한 버스 마스터링 디바이스 내의 레지스터들로 전송 파라미터를 직접 기입하는 CPU에 의해 일어나도록 프로그램된다. 이후에, 데이터 블록의 전송이 수행됨에 따라, CPU는 전송 상태를 질의하기 위해 버스 마스터링 디바이스 내의 하나 이상의 레지스터들을 폴링한다.
그러나, 이러한 버스 마스터링 디바이스의 사용은 단점이 있다. CPU가 데이터 블록의 전송을 실제적으로 수행하는 부담이 줄어들었다고 해도, DMA 컨트롤러 내의 레지스터를 프로그램하기 위해 CPU에 의해 수행된 기입 동작과 DMA 컨트롤러 내의 레지스터로부터 상태를 질의하기 위해 CPU에 의해 수행된 판독 동작은 바람직하게 생각하는 시간보다 더 많은 시간이 걸릴 수 있다. 또한, 버스 마스터링 디바이스에 의해 수행된 판독 동작, 특별히 시스템 메모리로부터 데이터 블록을 판독하는 동작은, 바람직하게 생각하는 시간보다 더 많은 시간이 걸릴 수 있다.
본 발명의 목적, 특징, 및 장점들은 다음의 상세한 설명을 통해 당업자에게 자명할 것이다.
도 1은 컴퓨터 시스템을 사용하는 실시예들의 블록도.
도 2는 컴퓨터 시스템을 사용하는 다른 실시예들의 또 다른 블록도.
도 3은 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 블록도.
도 4는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 블록도.
도 5는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 또 다른 블록도.
도 6은 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 또 다른 블록도.
도 7은 컴퓨터 시스템을 사용하는 다른 실시예들의 또 다른 블록도.
도 8은 일 실시예의 순서도.
도 9는 다른 실시예의 순서도.
도 10은 또 다른 실시예의 순서도.
다음의 기재에서는, 설명을 위해서, 본 발명의 완전한 이해를 제공하도록 많은 상세한 설명이 기술된다. 그러나, 이들 상세 설명이 이하의 청구되는 바와 같은 본 발명을 실시하기 위해서 요구되지 않는다는 것은 당업자에게 자명할 것이다.
이하 청구되는 바와 같은 본 발명은 컴퓨터 시스템 또는 다른 유사한 전자 시스템의 다른 디바이스들 내의 저장소 위치들에서 DMA 컨트롤러용 가상 레지스터들을 유지하기 위한 통합 지원(incorporating support)에 관련한다. 다음의 논의는 컴퓨터 시스템 내의 DMA 컨트롤러에 집중하지만, 당업자라면, 이하 청구되는 바와 같은 본 발명이 DMA 컨트롤러를 갖는 전자 시스템 또는 디바이스들 간의 데이터 블록의 이동을 위한 다른 유사한 전용 로직을 지지하여 실행될 수 있음을 이해할 것이다.
도 1은 컴퓨터 시스템을 사용하는 실시예들의 블록도이다. 컴퓨터 시스템(100)은, 적어도 일부분, CPU(110), 버스(119), 로직(120), 버스(149), 시스템 메모리(140), 버스(159) 및 디바이스(150)로 구성된다. CPU(110), 버스(119), 로직(120), 버스(149) 및 시스템 메모리(140)는 시스템 메모리(140) 내에 및/또는 컴퓨터 시스템(100)의 다른 디바이스들 내에 저장될 수 있는 머신 판독 가능 명령어를 실행할 수 있는 컴퓨터 시스템(100)의 코어(core)의 형태를 구성한다. 그러나, 당업자가 손쉽게 인식하는 바와 같이, 이것은 많은 가능한 컴퓨터 시스템(100)의 코어 형태들 중 단지 하나의 예이며, 이 컴퓨터 시스템(100)은 또한 도시되지 않은 다른 버스들 및 디바이스들을 추가로 구성할 수 있다.
다양한 실시예들에서, CPU(110)는 캘리포니아주 산타 클라라 소재의 Intel Corporation에 의해 발명되어 널리 알려지고 사용되는 "x86" 명령어 세트의 적어도 일부를 실행할 수 있는 CPU를 포함하는 CPU의 여러 타입들 중 임의의 타입일 수 있다. 또한, 다양한 가능한 실시예들에는, 하나 이상의 CPU(도시되지 않음)를 지원하기 위해서 추가적인 버스들 및/또는 디바이스들과 함께 하나 이상의 CPU가 있을 수 있다. 로직(120)은 버스(119)를 통해 CPU(110)에 연결되고, CPU(110)에 의한 명령어의 실행을 지지하여, 로직(120)이 버스(149)를 통해 추가로 연결된 시스템 메모리(140)에 대한 액세스를 CPU(110)에 제공하고 CPU(110)를 제어하는 것을 포함하는 다양한 기능을 수행한다. 로직(120)은 또한 컴퓨터 시스템(100)을 구성하는 다른 디바이스들, 예를 들어, 로직(120)이 버스(159)를 통해 연결된 디바이스(150)에 대한 액세스를 제공한다.
버스들(119, 149 및 159)과의 연결에 있어서, 그리고 어드레스들, 명령들 및 데이터가 전송되는 트랜잭션(transaction)을 가능하게 하도록 CPU(110)에 시스템 메모리(140) 및 디바이스(150) 각각에 대한 액세스를 제공하는데 있어서, 로직(120)은 일반적으로 이들 버스 사이의 "브리지"로 불리는 역할을 한다. 브리지로서의 역할에 있어서, 로직(120)은 또한 버스(149) 상에서 트랜잭션을 수행하는 것을 지원하기 위한 메모리 컨트롤러(122)와, 버스(159) 상에서 트랜잭션을 수행하는 것을 지원하기 위한 버스 인터페이스(127)를 컴퓨터 시스템(100)에 제공한다. CPU가 데이터 블록의 상당한 전송을 수행하는 부담의 일부를 덜기 위해서, 로직(120)은 DMA 컨트롤러(130)를 추가로 제공한다.
다양한 실시예들에서, 시스템 메모리(140)는 SDRAM(synchronous dynamic DRAM)의 FPM(fast page mode), EDO(extended data out), SDR(single data rate) 또는 DDR(double data rate) 형태를 포함하는 RAM, 또는 RAMBUS™ 인터페이스 또는 다른 인터페이스를 사용하는 RAM의 다양한 타입들 중 임의의 타입일 수 있다. 메모리 컨트롤러(122) 및 버스(149)는 메모리 및/또는 메모리 인터페이스의 하나 이상의 타입들의 타이밍 및/또는 프로토콜 요구사항을 지원하도록 구성된다.
다양한 실시예들에서, 버스(159) 및/또는 컴퓨터 시스템(100)을 구성할 수 있는 다른 버스들은, 예를 들면, EISA(extended industry standard architecture), MCA(Micro Channel™ architecture), PCI(peripheral component interconnect), PCI-X, PCI Express 등과 같이 컴퓨터 설계 분야에서 "표준화된" 버스들의 널리 알려진 다양한 형태들 중 임의의 형태의 특성 및/또는 설계서에 따른다. 버스 인터페이스들(127 및 157)은 버스(159)의 타이밍 및/또는 프로토콜 요구 사항을 지원하도록 구성된다.
일 실시예에서, CPU(110)는 시스템 메모리(140) 내의 데이터 저장소 위치들(146 및 148) 사이의 데이터 블록의 전송을 수행하도록 CPU(110)로 하여금 DMA 컨트롤러(130)를 프로그램하게 하는 일련의 명령어들을 실행한다. CPU(110)는 데이터 저장소 위치들(146 및 148)의 개시 어드레스들을 포함하지만, 이에 제한되지 않고 발생하는 다양한 전송 파라미터를 지정하는 값들, 전송될 데이터량을 표시하는 값(즉, 데이터 블록의 사이즈), 전송 상태가 시스템 메모리(140) 내에 할당된 상태 저장소 위치(144)에서 제공될 것을 표시하는 값, 및 전송이 발생하게 되는 하나 이상의 제어 비트로의 값을 가지고 하나 이상의 파라미터 레지스터들(133)을 기입한다. DMA 컨트롤러(130)는 이후에 전송을 실행한다. 이 전송을 실행하는 동안, CPU(110)는, DMA 컨트롤러(130)가 전송이 완료되었음을 표시하는 상태 저장소 위치(144)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(144)를 1회 이상 판독할 수 있다. CPU와 시스템 메모리 사이에 매우 낮은 대기 경로(latency path)를 만드는 것이 컴퓨터 시스템(100)과 같은 컴퓨터 시스템들의 설계에 있어 상례라고 가정하면, CPU(110)는 DMA 컨트롤러(130) 내의 레지스터로부터의 종래의 판독 방법보다 훨씬 빠르게 시스템 메모리(140) 내의 상태 저장소 위치(144)를 판독함으로써 전송 상태에 대한 반복적인 확인이 가능할 것이다.
또 다른 실시예에서, CPU(110)는 발생하는 다양한 전송 파라미터들을 시스템 메모리(140) 내에 할당된 대체 파라미터 저장소 위치(143)에 기입함으로써 시스템 메모리(140) 내의 데이터 저장소 위치들(146 및 148) 사이의 데이터 블록의 전송을 수행하도록 CPU(110)로 하여금 DMA 컨트롤러(130)를 프로그램하게 하는 일련의 명령어들을 실행한다. 이러한 파라미터들은 데이터 저장소 위치들(146 및 148)의 개시 어드레스들, 전송될 데이터량을 표시하는 값 및 전송 상태가 상태 저장소 위치(144)에서 제공될 것임을 표시하는 값을 포함할 수 있지만, 이에 제한되지 않을 수 있다. CPU(110)는 또한 대체 파라미터 저장소 위치(143)의 개시 어드레스를 지정하는 값과, 전송을 발생하게 하는 트리거로서 하나 이상의 제어 비트 내의 값을 가지고 하나 이상의 파라미터 레지스터들(133)을 기입하게 한다. 이 트리거에 응답하여, DMA 컨트롤러(130)는 이후에 전송을 실행한다. 이 전송을 실행하는 동안, CPU(110)는, DMA 컨트롤러(130)가 전송이 완료되었음을 표시하는 상태 저장소 위치(144)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(144)를 1회 이상 판독할 수 있다.
본 실시예의 하나의 변형에서, 상태 저장소 위치(144)는 대체 파라미터 저장소 위치(143)의 일부이거나 또는 대체 파라미터 저장소 위치(143)의 베이스 어드레스로부터의 소정의 오프셋인 시스템 메모리(140) 내의 어드레스에서 할당된다. 본 실시예의 다른 변형에서, DMA 컨트롤러(130)는 상태 저장소 위치(144)에 대한 어드레스를 가지고 (파라미터 레지스터들(133) 또는 대체 파라미터 저장소 위치(143)를 통해) 개별적으로 프로그램된다.
본 실시예의 또 다른 변형에서, 전송 상태는 디바이스(150)의 디바이스 저장소(160) 내의 대체 상태 저장소 위치(164)에 기입되고, DMA 컨트롤러(130)는 대체 상태 저장소 위치(164)에 대한 어드레스를 가지고 (파라미터 레지스터들(133) 또는 대체 파라미터 저장소 위치(143)를 통해) 프로그램된다. 대체 상태 저장소 위치(164)는 디바이스 저장소(160) 내에 할당된 하나 이상의 메모리 위치들과, 디바이스(150)의 특성(nature)에 따른 다수의 가능한 목적들 중 임의의 목적을 위해 사용될 수 있는 디바이스(150) 내의 메모리 버퍼로 구성되며, 이는 당업자들에게는 자명할 것이다. 디바이스(150)의 디바이스 저장소(160) 내의 대체 상태 저장소 위치(164)로 전송 상태를 기입하는 이점은, 디바이스(150)가 몇몇 다른 작업을 수행하는 것을 조건으로 이러한 상태를 기다릴 수 있고, 이 상태가 디바이스(150)에 실제적으로 전송되어야만 하는 시스템 메모리(140) 내의 상태 저장소 위치(144)에 상태를 기입하지 않음으로써 원하지 않는 지연(delay)을 피할 수 있다는 점이다. 이 이점은, 상태 저장소 위치(144)로부터 대체 상태 저장소 위치(164)로의 실질적인 상태의 전송이 디바이스(150)가 상태 저장소 위치(144)를 판독하기 위해서 가질 수 있는 버스 마스터링 능력을 사용하는 디바이스를 필요로 한다면 더욱 클 것이다. 당업자가 이해하는 바와 같이, 버스, 이를 테면 버스(159)를 거쳐 판독 동작을 수행하는 것은 기입 동작보다 완료하는데 더 긴 시간이 걸릴 수 있으며, 또한 순간적으로 버스를 잠글(lock up) 수 있다. 이것은, 데이터의 조각, 예를 들면, 전송 상태를 판독하기 위해서 버스에 걸쳐 이루어진 데이터에 대한 요청을 먼저 필요로 하는 판독 동작과, 이후 요청된 데이터가 제공될 수 있을 때까지 필요로 하는 다음 데이터를 대기하는 기간에 기인한다. 버스(159) 설계에 따라, 판독 및 기입 동작의 일관성(coherency) 및 오더링 룰은 버스(159)가 사용되지 않거나 상태가 수신될 때까지 적어도 디바이스(150)가 버스(159)에 걸쳐 다른 전송의 서브셋을 적어도 수행하지 않는다는 점을 요구할 수 있다. 그러므로, 판독 동작이 시작하는 타임에서의 환경에 따라, 시스템 메모리(140) 및 디바이스(150)는 물론, 버스들(149 및 159)은 상태 저장소 위치(144)로부터 상태를 판독하는 판독 동작에 응하고 판독 동작을 완료하면서 순간적으로 독점될 수 있다. 반대로, DMA 컨트롤러(130)에 의해 상태가 디바이스(150)에 직접 기입된다면, 일관성과 오더링을 유지하기 위해서 기입 동작에 일반적으로 주어지는 덜 엄격한 요구 사항을 이용하여, 기입 동작이 버스 인터페이스(127)의 기입 버퍼(128) 내에 포스트(post)된 후 버스(159)가 잠길 가능성이 보다 적을 때 버스(159)에 걸쳐 디바이스(150)에 전송되도록 허용될 수 있다.
도 2는 컴퓨터 시스템을 사용하는 실시예들의 또 다른 블록도이다. 도 2에 번호 매겨진 아이템들은 도 1의 컴퓨터 시스템(100)과 어느 정도 다르지 않으며, 일반적으로 도 1에서의 번호 아이템에 대응하고, 컴퓨터 시스템(200)은 적어도 일부분, CPU(210), 버스(219), 로직(220), 버스(249), 시스템 메모리(240), 버스(259) 및 디바이스(250)로 구성된다. 컴퓨터 시스템(100)의 경우에서와 같이, 이것은 많은 가능한 컴퓨터 시스템(200)의 코어 형태들 중 단지 하나의 예이며, 이 컴퓨터 시스템(200)은 또한 도시되지 않은 다른 버스들 및 디바이스들을 추가로 구성할 수 있다는 점을 당업자가 손쉽게 인식할 수 있을 것이다. 로직(220)은 버스(219)를 통해 CPU(210)에 연결되고, CPU(210)에 의한 명령어의 실행을 지지하여, 로직(220)이 로직(220) 내의 메모리 컨트롤러(222) 및 버스(249)를 통해 추가로 연결된 시스템 메모리(240)에 대한 액세스를 CPU(210)에 제공하고 CPU(110)를 제어하는 것을 포함하는 다양한 기능을 수행한다. 로직(220)은 또한 컴퓨터 시스템(200)을 구성하는 다른 디바이스들, 예를 들어, 로직(220)이 로직(220) 내의 버스 인터페이스(227) 및 버스(259)를 통해 연결된 디바이스(250)에 대한 액세스를 제공한다.
일 실시예에서, CPU(210)는 시스템 메모리(240) 내의 데이터 저장소 위치(246) 및 디바이스(250) 내의 데이터 저장소 위치(266) 사이의 데이터 블록의 전송을 수행하도록 CPU(210)로 하여금 DMA 컨트롤러(230)를 프로그램하게 하는 일련의 명령어(아마도 시스템 메모리(240) 내에 저장됨)를 실행한다. CPU(210)는 발생하는 전송의 다양한 파라미터들을 시스템 메모리(240) 내에 할당된 파라미터 저장소 위치(243) 내의 메모리 위치들에 기입한다. 이러한 파라미터들은 데이터 저장소 위치들(246 및 266)의 개시 어드레스들, 전송될 데이터량을 표시하는 값, 및 전송 상태가 시스템 메모리(240) 내에 할당된 상태 저장소 위치(244)에서 제공될 것이라는 것을 표시하는 값을 포함할 수 있지만, 이에 제한되지 않을 수 있다. CPU(210)는 또한 파라미터 저장소 위치(243)의 개시 어드레스를 지정하는 값과, 전송을 발생하게 하는 트리거로서 하나 이상의 제어 비트 내의 값을 가지고 하나 이상의 파라미터 레지스터들(233)을 기입하게 한다. 이 트리거에 응답하여, DMA 컨트롤러(230)는 이후에 전송을 실행한다. 이 전송을 실행하는 동안, CPU(210)는, DMA 컨트롤러(230)가 전송이 완료되었음을 표시하는 상태 저장소 위치(244)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(244)를 1회 이상 판독할 수 있다.
본 실시예의 하나의 변형에서, 상태 저장소 위치(244)는 파라미터 저장소 위치(243)의 일부이거나 또는 파라미터 저장소 위치(243)의 베이스 어드레스로부터의 소정의 오프셋에 있는 시스템 메모리(240) 내의 어드레스에서 할당된다. 본 실시예의 다른 변형에서, DMA 컨트롤러(230)는 상태 저장소 위치(244)에 대한 어드레스를 가지고 (파라미터 레지스터들(233) 또는 파라미터 저장소 위치(243) 내에) 개별적으로 프로그램된다. 본 실시예의 또 다른 변형에서, 전송 상태는 디바이스(250)의 디바이스 저장소(260) 내의 대체 상태 저장소 위치(264)에 기입되고, DMA 컨트롤러(230)는 대체 상태 저장소 위치(264)에 대한 어드레스를 가지고 프로그램되며, 그에 의해, 원한다면, 디바이스(250)는 전송 상태가 보다 빠르게 제공되는 것이 허용된다.
또 다른 실시예에서, CPU(210)는 발생하는 다양한 전송 파라미터를 디바이스(250)의 디바이스 저장소(260) 내에 할당된 대체 파라미터 저장소 위치(263)에 기입함으로써 데이터 저장소 위치들(246 및 266) 사이에서 데이터 블록의 전송을 수행하도록 CPU(210)로 하여금 DMA 컨트롤러(230)를 프로그램하게 하는 일련의 명령어들을 실행한다. 이전과 같이, 이러한 파라미터들은 데이터 저장소 위치들(246 및 266)의 개시 어드레스들, 전송될 데이터량을 표시하는 값 및 전송 상태가 상태 저장소 위치(264)에 제공될 것임을 표시하는 값을 포함할 수 있지만, 이에 제한되지 않을 수 있다. CPU(210)는 또한 대체 파라미터 저장소 위치(263)의 개시 어드레스를 지정하는 값과, 전송이 발생하게 하는 트리거로서 하나 이상의 제어 비트 내의 값을 가지고 하나 이상의 파라미터 레지스터들(233)을 기입하게 한다. 이 트리거에 응답하여, DMA 컨트롤러(230)는 이후에 전송을 실행한다. 이 전송을 실행하는 동안, 디바이스(250) 또는 CPU(210)는, DMA 컨트롤러(230)가 전송이 완료되었음을 표시하는 상태 저장소 위치(264)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(264)를 1회 이상 판독할 수 있다.
도 3은 데이터 블록을 전송하도록 예약된 디바이스들 사이에서의 트랜잭션의 실시예들의 블록도이다. 구체적으로, 도 3은 제어 디바이스(310), DMA 컨트롤러(330), 및 하나 이상의 메모리 디바이스들 및/또는 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 제어 디바이스(310)는, 제어 디바이스(310)가 자신에게 연결된 DMA 컨트롤러(330) 내의 레지스터들을 프로그램하게 함으로써 데이터 블럭의 전송을 발생하게 하는 명령어(312)를 실행할 수 있는, CPU(컴퓨터 시스템 또는 다른 전자 시스템), 마이크로컨트롤러, 시퀀서 등일 수 있다. 어드레스 가능한 공간(340)은 제어 디바이스(310) 및 DMA 컨트롤러(330)에서 모두 액세스 가능한 어드레스 위치들의 맵이다.
몇몇 실시예들에서, 어드레스 가능한 공간(340)은 제어 디바이스(310) 및 DMA 컨트롤러(330) 모두가 연결된 단일 시스템 메모리 디바이스(도시되지 않음)로 전적으로 구성될 수 있다. 이러한 실시예들은, 어느 정도 데이터 저장소 위치들(146 및 148)과 다르지 않는, 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348) 모두가 시스템 메모리 디바이스, 예를 들어, 시스템 메모리(140) 내에 있는 도 1의 실시예들과 대체로 유사할 수 있다. 다른 실시예들에서, 어드레스 가능한 공간(340)은 제어 디바이스(310)와 DMA 컨트롤러(330) 모두가 연결되어 있는 메모리 디바이스들 및/또는 다른 디바이스들 내의 버퍼들의 조합으로 구성될 수 있다. 이러한 실시예들은 시스템 메모리(240) 내에 할당된 데이터 저장소 위치(246)와 디바이스(250)의 디바이스 저장소(260) 내에 할당된 데이터 저장소 위치(266)와 어느 정도 다르지 않는, 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348)가 다른 디바이스들 내에 할당되는 도 2의 실시예들과 대체로 유사할 수 있다. 보다 정확하게, 예를 들어, 소스 데이터 저장소 위치(346)는 시스템 메모리 내에 위치될 수 있으며, 목적 데이터 저장소 위치(348)는 다른 디바이스 내의 버퍼 내에 위치될 수 있다.
제어 디바이스(310)는, 전송될 데이터량 및 상태 저장소 위치(344)의 어드레스와 함께, 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348)의 베이스 어드레스들을 파라미터 저장소 위치(343)에 기입함으로써 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송 실행을 준비하게 된다. 제어 디바이스(310)는 또한 데이터 전송을 수행하기 위해 DMA 컨트롤러(330)를 트리거하는 하나 이상의 비트와 함께 파라미터 저장소 위치(343)의 베이스 어드레스를 DMA 컨트롤러(330) 내의 파라미터 레지스터들(333)에 기입한다.
이 트리거에 응답하여, DMA 컨트롤러(330)는 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348) 모두의 베이스 어드레스, 전송될 데이터량, 및 상태 저장소 위치(344)의 베이스 어드레스를 획득하기 위해서 파라미터 레지스터들(333) 에 프로그램된 베이스 어드레스에서 파라미터 저장소 위치(343)를 액세스한다. DMA 컨트롤러(330)는 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송을 수행하고, 상태 저장소 위치(344)에 전송 상태를 기입한다. 제어 디바이스(310)는, DMA 컨트롤러(330)가 데이터 전송이 완료되었음을 표시하는 상태 저장소 위치(344)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(344)를 판독한다.
도 4는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예의 블록도이다. 구체적으로, 도 4는 제어 디바이스(410), DMA 컨트롤러(430), 및 하나 이상의 메모리 디바이스들 및/또는 소스 데이터 저장소 위치(446a)로부터 목적 데이터 저장소 위치(448a)로의 데이터 블록의 전송 이후, 소스 데이터 저장소 위치(446b)로부터 목적 데이터 저장소 위치(448b)로의 또 다른 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 도 4에 번호 매겨진 아이템들은 도 3의 번호 아이템에 일반적으로 대응하며, 도 3의 제어 디바이스(310)와 다르지 않다는 것을 의미하고, 제어 디바이스(410)는 (컴퓨터 시스템 또는 다른 전자 시스템의) CPU, 마이크로컨트롤러, 시퀀서 등일 수 있으며, 제어 디바이스(410)가 연결된 DMA 컨트롤러(430) 내의 레지스터들을 프로그래밍함으로써 데이터 블럭 전송을 발생하게 하는 명령어(412)를 실행할 수 있다. 어드레스 가능한 공간(440)은 제어 디바이스(410) 및 DMA 컨트롤러(430) 모두에 액세스 가능한 어드레스 위치들의 맵이다.
몇몇 실시예들에서, 어드레스 가능한 공간(440)은 제어 디바이스(410) 및 DMA 컨트롤러(430) 모두가 연결된 단일 시스템 메모리 디바이스(도시되지 않음)로 전적으로 구성될 수 있다. 다른 실시예들에서, 어드레스 가능한 공간(440)은 메모리 디바이스들 및/또는 제어 디바이스(410)와 DMA 컨트롤러(430) 모두가 연결되어 있는 다른 디바이스들 내의 버퍼들의 조합으로 구성될 수 있다. 예를 들어, 소스 데이터 저장소 위치(446a) 및 목적 데이터 저장소 위치(448b) 모두는 시스템 메모리 내에 위치될 수 있으며, 소스 데이터 저장소 위치(446b) 및 목적 데이터 저장소 위치(448a)는 다른 디바이스 내의 버퍼 내에 위치될 수 있다.
제어 디바이스(410)는, 전송될 데이터의 대응하는 양들 및 상태 저장소 위치들(444a 및 444b)의 대응하는 어드레스들과 함께, 소스 데이터 저장소 위치들(446a 및 446b) 및 목적 데이터 저장소 위치들(448a 및 448b)의 베이스 어드레스들을 대응하는 파라미터 저장소 위치(443a 및 443b)에 기입함으로써 데이터 블럭의 다중 전송 실행을 준비하게 된다. 제어 디바이스(410)는 또한 데이터 블럭 전송을 시작하기 위해 DMA 컨트롤러(430)를 트리거하는 하나 이상의 비트와 함께 파라미터 저장소 위치(443a)의 베이스 어드레스를 DMA 컨트롤러(430) 내의 파라미터 레지스터들(433)에 기입한다.
이 트리거에 응답하여, DMA 컨트롤러(430)는 소스 데이터 저장소 위치(446a) 및 목적 데이터 저장소 위치(448a) 모두의 베이스 어드레스, 전송될 데이터량, 및 상태 저장소 위치(444a)의 베이스 어드레스를 획득하기 위해서 파라미터 레지스터들(433) 에 프로그램된 베이스 어드레스에서 파라미터 저장소 위치(443a)를 액세스한다. DMA 컨트롤러(430)는 소스 데이터 저장소 위치(446a)로부터 목적 데이터 저장소 위치(448a)로의 데이터 블록의 전송을 수행하고, 상태 저장소 위치(444a)에 전송 상태를 기입한다. DMA 컨트롤러(430)는 이후에 소스 데이터 저장소 위치(446b) 및 목적 데이터 저장소 위치(448b) 모두의 베이스 어드레스, 전송될 데이터량, 및 상태 저장소 위치(444b)의 베이스 어드레스를 획득하기 위해서 파라미터 저장소 위치(443b)를 액세스한다. DMA 컨트롤러(430)는 이후에 소스 데이터 저장소 위치(446b)로부터 목적 데이터 저장소 위치(448b)로의 데이터 블록의 전송을 수행하고, 상태 저장소 위치(444b)에 전송 상태를 기입한다. 제어 디바이스(410)는, DMA 컨트롤러(430)가 데이터 전송이 완료되었음을 표시하는 상태 저장소 위치(444a 및 444b)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(444a 및 444b)를 판독한다.
일 실시예에서, 파라미터 레지스터들(433) 내에 기입된 파라미터 저장소 위치(443a)의 베이스 어드레스는 체인 내의 소정 간격(DMA 컨트롤러(430)로 프로그램되거나 하드와이어된(hardwired) 간격의 길이)으로 위치된 하나 이상의 파라미터 저장소 위치들(이를테면, 파라미터 저장소 위치(443a))의 베이스에 대한 포인터의 역할을 하여, DMA 컨트롤러(430)는 단지 이 체인의 최초 파라미터 저장소 위치의 베이스 어드레스만을 요구하며, DMA 컨트롤러(430)는 데이터 블럭 전송에 대한 파라미터들을 갖는 이러한 최종 파라미터 저장소 위치를 만날 때까지 이 체인을 통해 반복될 수 있다. 이러한 실시예에서, 제어 디바이스(410)는 또한 이러한 체인 내의 파라미터 저장소 위치들의 양을 표시하는 파라미터 레지스터들(433) 내에 값을 기입할 수 있다. 그러나, 또 다른 실시예에서, 각각의 파라미터 저장소 위치는 파라미터 저장소 위치의 체인 내의 다음 파라미터 저장소 위치의 베이스 어드레스를 제공할 수 있으며, 그에 의해, 어드레스 가능한 공간(440) 내의 소정의 간격으로 위치될 파라미터 저장소 위치들의 체인에서의 각 파라미터 저장소 위치에 대한 요구를 제거할 수 있다. 이러한 실시예에서, 이러한 체인에서의 최종 파라미터 저장소 위치는 이 체인에서의 최종 파라미터 저장소 위치에 도달했음을 표시하는 베이스 어드레스 대신에 값을 제공할 수 있다.
도 5는 다중 블럭 데이터를 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들 또 다른 블록도이다. 구체적으로, 도 5는 DMA 컨트롤러와 하나 이상의 메모리 디바이스들 및/또는 다중 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 도 5에 번호 매겨진 아이템들은 도 4의 번호 아이템에 일반적으로 대응하고, 어느 정도 도 4와 다르지 않음을 의미하며, 어드레스 가능한 공간(540)은 제어 디바이스(도시되지 않음) 및 DMA 컨트롤러(530) 모두에 액세스 가능한 어드레스 위치들의 맵이다.
어느 정도 도 4와 유사하게, 다중 파라미터 저장소 위치들(543a 내지 543d)은 어드레스 가능한 공간(540) 내에 할당되며, 도 4에 있어서 충분히 논의되었던 바와 유사하게, DMA 컨트롤러(530)는 전송될 데이터양 및 각 전송 상태를 표시하는 값을 기입하는 상태 저장소 위치에 대한 대응하는 베이스 어드레스들과 함께 소스 데이터 및 목적 데이터 저장소 위치들에 대한 베이스 어드레스들을 획득하기 위해서 각각의 파라미터 저장소 위치들(543a 내지 543d)을 액세스한다. 그러나, 도 4에서 논의한 실시예들과는 달리, 도 5는 각 전송 상태가 DMA 컨트롤러(530)에 의해 기입될 단일 공통 위치와 동일한 위치, 즉, 상태 저장소 위치(544)가 파라미터 저장소 위치들(543a 내지 543d)로부터 포인트될 실시예들을 묘사한다. 단일 상태 저장소 위치의 이러한 사용은 어드레스 가능한 공간(540)을 가지는 단 하나의 위치에 대한 액세스를 반복함으로써 제어 디바이스가 다중 전송 상태를 모니터하는 것을 허용한다. 이러한 실시예에서, DMA 컨트롤러(530)에 의해 상태 저장소 위치(544)에 기입된 값들은 어떤 전송이 완료되었는지 및/또는 어떤 전송이 현재 진행중인지를 제어 디바이스가 구별하는 것을 허용하는 식별 값의 일정 형태를 추가적으로 포함할 수 있다.
도 5는 또한 데이터 블록의 하나 이상의 전송의 개시 및 전송 체인에 얼마나 많은 전송들이 존재하는 지에 대한 카운트 모두를 트리거하기 위한 방법으로서 최초 및 최종 파라미터 저장소 위치의 베이스 어드레스 모두를 공급하는 파라미터 레지스터들(533)의 사용을 묘사한다. 상술한 바와 같이, 몇몇 실시예들은 각 파라미터 저장소 위치가 어드레스 가능한 공간(540) 내에 위치되는 곳에서 베이스 어드레스들 간의 어드레스 공간의 소정의 간격을 사용할 수 있으며, 다른 실시예들은 수행될 대응하는 다중 전송들을 위해 파라미터 저장소 위치들의 체인에서 다음 파라미터 저장소 위치의 베이스 어드레스를 제공하는 각각의 파라미터 저장소 위치 내에 포인터들을 사용할 수 있다.
도 6은 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 또 다른 블록도이다. 구체적으로, 도 6은 DMA 컨트롤러와 하나 이상의 메모리 디바이스들 및/또는 다중 데이터 블록(명료함을 위해 실제로는 도시되지 않은 데이터 블록)의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 도 6에 번호 매겨진 아이템들은 도 5의 번호 아이템에 일반적으로 대응하고, 어느 정도 도 5와 다르지 않음을 의미하며, 어드레스 가능한 공간(640)은 제어 디바이스(도시되지 않음) 및 DMA 컨트롤러(630) 모두에 액세스 가능한 어드레스 위치들의 맵이다. 어느 정도 도 5와 유사하게, 다중 파라미터 저장소 위치들(643a 내지 643c)은 어드레스 가능한 공간(640) 내에 할당되며, 도 5에 있어서 충분히 논의되었던 바와 유사하게, DMA 컨트롤러(630)는 전송될 데이터양 및 각 전송 상태를 표시하는 값을 기입하는 상태 저장소 위치에 대한 대응하는 베이스 어드레스들과 함께 소스 데이터 및 목적 데이터 저장소 위치들에 대한 베이스 어드레스들을 획득하기 위해서 각각의 파라미터 저장소 위치들(643a 내지 643c)을 액세스한다. 그러나, 도 5에서 논의한 실시예들과는 달리, 도 6은 어느 정도 일정한 간격이 아닌 어드레스 가능한 공간(640) 내에 할당된 파라미터 저장소 위치들(643a 내지 643c)을 묘사하며, 다음 파라미터 저장소 위치에 대한 포인터들은 각 파라미터 저장소 위치 내에 제공된다. 각 전송을 수행하는데 있어서, DMA 컨트롤러(630)는 또 다른 파라미터 저장소 위치의 베이스 어드레스를 획득하기 위해서 파라미터 저장소 위치(643c)내의 포인터를 액세스하는 것이 데이터 블록 전송에 대한 파라미터를 가진 어떤 파라미터 저장소 위치들도 없음을 표시하는 포인터를 제공할 때까지 다음 파라미터 저장소 위치의 베이스 어드레스를 획득하기 위해서 다음 파라미터 저장소 위치에 대해 포인터를 액세스하며, 이 포인트에서, DMA 컨트롤러(630)는 데이터 블록 전송의 수행을 중단한다.
도 6은 또한, 파라미터 저장소 위치들(643a 및 643c)에 대응하는 데이터 전송 상태를 공통 상태 저장소 위치(즉, 상태 저장소 위치(644ac))에 제공하고, 파라미터 저장소 위치(643b)에 대응하는 데이터 전송 상태를 다른 상태 저장소 위치(즉, 상태 저장소 위치(644b))에 제공하기 위해 상태 저장소 위치들에 대한 포인터들의 사용을 예시한다. 이러한 개별 및 공통 상태 저장소 위치들의 사용은, DMA 컨트롤러(630)가 일부분인 컴퓨터 시스템에 의한 일 기능의 수행과 다중 전송이 관련된 부분에서 이점이 입증될 수 있는 한편, 다른 전송은 동일한 컴퓨터 시스템 내에서 다른 기능의 수행과 관련된다. 특히, 상태 저장소 위치(644ac 및 644b)는 다른 메모리 디바이스들 및/또는 메모리 버퍼들을 갖는 디바이스들 내에 할당된다. 예를 들면, 상태 저장소 위치(644ac)는 시스템 메모리 내에 할당되어 CPU가 대응하는 전송들의 상태를 효율적으로 감시할 수 있도록 하고, 상태 저장소 위치(644b)는 다른 디바이스에 제공된 메모리 버퍼 내에 할당되어 다른 디바이스가 대응하는 전송의 상태를 효율적으로 감시할 수 있도록 한다.
도 7은 컴퓨터 시스템을 채용하는 실시예들의 다른 블록도이다. 도 7에 번호를 붙인 아이템들은 도 2에 번호를 붙인 아이템에 일반적으로 대응하게 한 것이고, 도 2의 컴퓨터 시스템(200)과 다르지 않은 방식으로, 컴퓨터 시스템(700)은, 적어도 부분적으로, CPU(710), 버스(719), 로직(720), 버스(749), 시스템 메모리(740), 버스(759), 및 디바이스(750)으로 구성된다. 컴퓨터 시스템(200)의 경우에서와 같이, 당업자는 컴퓨터 시스템(200)의 코어의 많은 가능한 형태들중의 일 예라는 것과, 컴퓨터 시스템(200)이 도시되지 않은 다른 버스들 및 디바이스들로 더 구성될 수 있다는 것을 잘 알 것이다. 로직(720)은 버스(719)를 통해 CPU(710)에 연결되고, 시스템 메모리(740)에 대한 액세스를 CPU(710)에 제공하고 이 액세스와 관련하여 CPU(710)를 제어하는 것을 포함하여 CPU(710)의 지원에 있어서 다양한 기능들을 수행하는데, 로직(720)은 로직(720) 내의 메모리 컨트롤러(722)와 버스(749)를 통해 시스템 메모리(740)에 또한 연결된다. 또한, 로직(720)은 컴퓨터 시스템(700)을 구성하는 다른 디바이스들, 예를 들면 디바이스(750)에 대한 애게스를 제공하는데, 로직(720)은 로직(720) 내의 버스 인터페이스(727) 및 버스(759) 및 디바이스(750) 내의 버스 인터페이스(757)를 통해 컴퓨터 시스템(700)에 연결된다.
CPU(710)는, 시스템 메모리(740) 내에 할당된 데이터 저장소 위치(746)로부터의 데이터 블록을 디바이스(750)의 디바이스 저장소(760) 내에 할당된 데이터 저장소 위치(766)에 전송하도록 DMA 컨트롤러(730)를 프로그램하게 하는 시스템 메모리(740) 내에 저장된 일련의 명령들(712)을 실행한다. CPU(710)는 시스템 메모리(740) 내에 할당된 DMA 전송 파라미터 저장소 위치(743) 내의 메모리 위치에 일어날 전송의 여러 파라미터들을 기록한다. 그러한 파라미터들은 데이터 저장소 위치들(746, 766)과, 전송될 데이터의 양을 나타내는 값, 전송 상태가 디바이스 저장소(760) 내에 할당된 DMA 전송 상태 저장소 위치(764)에 제공될 것임을 나타내는 값을 포함할 수 있지만, 이들로만 한정되지 않는다. CPU(710)는 또한 DMA 컨트롤러 컨트롤러 (730) 내의 하나 이상의 파라미터 레지스터들(733)를, DMA 전송 파라미터 저장소 위치(743)의 시작 어드레스를 지정하는 값과, 전송이 일어나도록 하는 트리거로서 하나 이상의 제어 비트에의 값으로 기록하게 한다. 그런 다음 DMA 컨트롤러(730)는 전송을 실행한다. 이 전송의 실행 동안, CPU(710) 및/또는 디바이스(750)는 DMA 컨트롤러(730)가 DMA 전송 상태 저장소 위치(764)에 전송이 완료되었음을 나타내는 값을 기록하였는지 여부를 판정하기 위해 DMA 전송 상태 저장소 위치(764)를 1회 이상 판독할 수 있다.
CPU(710)는 또한 시스템 메모리(740) 내에 할당된 데이터 저장소 위치(748)에 디바이스(750) 내의 디바이스 저장소(760) 내에 할당된 데이터 저장소 위치(768)로부터의 데이터 블록을 전송하도록 디바이스(750)를 프로그램하게 하는 일련의 명령들(712) 등을 실행한다. CPU(710)는 일어날 전송의 여러 파라미터들을 디바이스 전송 파라미터 레지스터들(768)에 기입한다. 그러한 파라미터들로는 데이터 저장소 위치들(768, 748)의 시작 어드레스들과 전송될 데이터의 양을 나타내는 값을 포함할 수 있지만 이들로 한정되지는 않는다. 그런 다음 디바이스(750)는 전송을 실행한다.
시스템 메모리(740)로부터의 데이터를 디바이스(750)에 전송하기 위해 DMA 컨트롤러(730)를 이용하고, 디바이스(750)로부터 시스템 메모리(740)에 데이터를 전송하기 위해 디바이스(750)의 버스 마스터링 기능을 이용하는 것은, 이 두 전송을 수행하기 위해 DMA 컨트롤러(730)나 디바이스(750) 중 어느 하나만을 이용함으로써 가능할 수 있는 것보다 데이터 블록들의 이동에 더 큰 효율을 제공할 수 있다. 이러한 방식으로, 각각의 전송은 대응하는 버스 인터페이스(727, 757)가 제공할 수 있는 기록 버퍼들(728, 758)을 이용하여, 버스(759)를 거친 하나 이상의 기록 동작들로서 수행된다. 기록 버퍼(728)의 이용은 DMA 컨트롤러(730)에 의한 버스(759)를 통한 디바이스 저장소(760)에의 데이터 기록이 버퍼링되거나 "포스트"되는 것을 허용하여, 기록 버퍼(728)로부터 버스(759)를 통하여 디바이스 저장소(760)를 향해 데이터의 일부가 전파할 때, DMA 컨트롤러(730)가 시스템 메모리(740)로부터 데이터의 다른 부분을 판독할 수 있다. 따라서, 디바이스(750)의 버스 마스터링 기능들에 의한 기록 버퍼(758)의 이용은 디바이스(750)에 의한 버스(759)를 통한 시스템 메모리(740)에의 데이터 기록이 또한 "포스트"되는 것을 허용하여, 기록 버퍼(758)로부터 버스(759)를 통하여 시스템 메모리(740)를 향해 데이터의 일부가 전파할 때, 디바이스(750)가 디바이스 저장소(760)로부터 데이터의 다른 부분을 판독할 수 있다.
소정의 실시예들에서, DMA 컨트롤러(730) 및 디바이스(750)의 버스 마스터링 기능의 조합의 이러한 이용은 디바이스(750)에 대응하는 디바이스 드라이버에 의해 제공된 일련의 명령들을 실행하는 CPU(710)에 의해 유발될 것이다. 그러한 디바이스 드라이버는 시스템 메모리(740)로부터 데이터를 판독하기 위해 디바이스(750)의 버스 마스터링 기능들의 이용을 회피하고, 디바이스 저장소(760)로부터 데이터를 판독하기 위해 DMA 컨트롤러(730)의 이용을 회피함으로써 디바이스(750) 내의 디바이스 저장소(760)와 시스템 메모리(740) 사이의 데이터 전송의 효율을 증대시키기 위해 컴퓨터(700)의 정상 동작 중에 CPU(710)에 의해 또한 실행되는 운영 시스템과 상호작용할 수 있다.
도 8은 실시예의 순서도이다. 810에서, 전송될 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 전송될 데이터의 양과, 전송 상태가 기록될 상태 위치의 베이스 어드레스는 모두 DMA 레지스터들이나 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 DMA 전송 실행을 시작하도록 신호되고, 820에서 전송을 실행한다. 830에서, 전송이 실행될 때, CPU 또는 다른 디바이스가 DMA 컨트롤러가 상태를 기록할 상태 위치로부터 전송의 상태를 판독한다. 840에서, DMA 컨트롤러가 전송이 왼료되었음을 나타내는 상태가 기록될 상태 위치에 아직 값을 기록하지 않았다면 830에서 또 하나의 상태 판독이 일어난다. 그렇지 않고, DMA 컨트롤러가 전송이 완료되었음을 나타내는 상태가 기록될 상태 위치에 값을 기록하였다면, 종료된다.
도 9는 데이터 블록의 전송의 다른 예의 순서도이다. 910에서, 전송 파라미터는 전송될 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 전송될 데이터의 양과, 전송 상태가 기록될 상태 위치의 베이스 어드레스는 모두 시스템 메모리 또는 다른 메모리 디바이스 또는 버퍼처럼 어드레스가능한 메모리 내의 파라미터 위치에 파라미터 위치에 기입된다. 920에서는, 910에서 전송 파라미터들이 기입된 파라미터 위치의 베이스 어드레스가 DMA 레지스터 또는 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 전송 실행을 시작하도록 신호되고, 930에서 전송을 실행한다. 940에서, 전송이 실행될 때, CPU 또는 다른 디바이스가 DMA 컨트롤러가 상태를 기록할 어드레스가능한 상태 위치로부터 전송의 상태를 판독한다. 950에서, DMA 컨트롤러가 전송이 왼료되었음을 나타내는 상태가 기록될 상태 위치에 아직 값을 기록하지 않았다면 940에서 또 하나의 상태 판독이 일어난다. 그렇지 않고, DMA 컨트롤러가 전송이 완료되었음을 나타내는 상태가 기록될 상태 위치에 값을 기록하였다면, 종료된다.
도 10은 실시예의 순서도이다. 1010에서, 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 데이터의 양과, 상태 위치들의 베이스 어드레스와 같은 파라미터의 세트들이 다수의 전송에 대한 다수의 파라미터 위치들에 기입되는데, 다수의 전송 위치의 각각은 수행될 다수의 전송 각각에 대응한다. 1020에서, 전송 파라미터들이 기입된 다수의 파라미터 위치들중 첫번째 위치의 베이스 어드레스는 DMA 레지스터들이나 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 DMA 전송의 실행을 시작하도록 신호되고, 1030에서 전송을 시작하고, 1030에서 DMA 전송이 완료될 때 DMA 전송의 완료를 나타내는 상태가 1040에서 그 전송에 대응하는 상태 위치에 기입된다. 750에서, 아직 수행되지 않은 다른 전송에 대해 파라미터들로 다른 파라미터 위치의 표시가 있다면, 1030에서 전송이 실행된다. 그렇지 않고, 아직 수행되지 않은 전송에 대응하는 파라미터 위치가 더 이상 없다면, 종료된다.
다수의 전송 파라미터 위치들이 다수의 전송의 실행의 지원에 할당되는 상술항 실시예들 각각에서, 전송 파라미터 위치들이 원형 또는 "FIFO-유사" 방식으로 사용될 수 있어서 파라미터 위치들이 새로운 전송을 위해 반복적으로 재사용되도록 루프처럼 이용되는 실시예들의 변형들이 있을 수 있다. 전송 파라미터 위치들이 DMA 컨트롤러를 새로운 전송 파라미터 위치가 발견될 수 있는 베이스 어드레스로 향하도록 포인터들을 채용하는 경우, 그러한 포인터들은 "최종" 전송 파라미터 위치였던 것의 포인터가 "최초" 전송 파라미터 위치였던 것을 포인트하도록 이용될 수 있다. 전송 파라미터 위치들이 포인터들을 채용하지 않고, 미리 정해진 인터벌로 메모리 디바이스(또는 저장 위치들을 제공하는 다른 디바이스)의 어드레스가능한 공간 내에 위치되는 것에 의존하는 경우, DMA 컨트롤러는 어느 전송 파라미터 위치가 전송 파라미터 위치들의 체인 내의 최종 것인지를 나타내는 지시가 제공되어 DMA 컨트롤러가 최초의 것으로 "루프 백(loop back)"할 수 있을 것이다.
본 발명은 바람직한 실시예들과 관련하여 설명되었다. 상술한 설명에 견지에서 많은 다른 대안적인 실시예들, 변경들, 변형들, 및 이용들이 가능함을 당업자는 잘 알 것이다. 당업자는 본 발명이 오디오/비디오 오락 디바이스들, 차량 내의 컨트롤러 디바이스들, 전자 회로에 의해 제어되는 기기들과 같은 컴퓨터 시스템 이외의 다른 전자 디바이스들의 지원에 실시될 수 있다는 것을 이해할 것이다.

Claims (15)

  1. 전송될 데이터 블록을 갖는 소스 데이터 위치가 할당된 제1 메모리 디바이스;
    전송될 상기 데이터 블록에 대한 목적 데이터 위치가 할당된 제2 메모리 디바이스;
    상기 제1 및 제2 메모리 디바이스들에 연결되고 머신 판독 가능 명령어를 실행할 수 있는 제어 디바이스;
    상기 제어 디바이스와 상기 제1 및 제2 디바이스들 모두에 연결되는 DMA 컨트롤러 - 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 소스 데이터 위치로부터 상기 목적 데이터 위치까지의 데이터 블록의 전송 상태를 표시하는 값을 기입하는 상태 위치의 베이스 어드레스를 지정하는 값을 기입하는 적어도 하나의 전송 상태 위치 베이스 어드레스 레지스터를 가짐 -
    를 포함하는 장치.
  2. 제1항에 있어서, 상기 DMA 컨트롤러는, 상기 제어 디바이스가 적어도 상기 소스 데이터 위치의 베이스 어드레스, 상기 목적 데이터 위치의 베이스 어드레스, 및 전송될 상기 데이터 블록을 구성하는 데이터량(quantity)을 기입하는 파라미터 레지스터들을 갖는 장치.
  3. 제1항에 있어서, 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 데이터 블록의 전송 파라미터를 획득하는 파라미터 위치의 상기 베이스 어드레스를 지정하는 값을 기입하는 적어도 하나의 전송 파라미터 위치 베이스 어드레스 레지스터를 갖는 장치.
  4. 제3항에 있어서, 상기 DMA 컨트롤러가 상기 전송 파라미터를 획득하는 상기 파라미터 위치는 적어도 상기 소스 데이터 위치의 상기 베이스 어드레스, 상기 목적 데이터 위치의 상기 베이스 어드레스, 및 전송될 상기 데이터 블록을 구성하는 상기 데이터량을 저장하는 장치.
  5. 제1 전송에서 전송될 데이터 블록을 갖는 소스 데이터 위치가 할당된 제1 메모리 디바이스;
    제1 전송에서 전송될 상기 데이터 블록에 대한 목적 데이터 위치가 할당된 제2 메모리 디바이스;
    상기 제1 및 제2 메모리 디바이스들에 연결되고 머신 판독 가능 명령어를 실행할 수 있는 제어 디바이스;
    상기 제어 디바이스와 상기 제1 및 제2 디바이스들 모두에 연결된 DMA 컨트롤러 - 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 제1 전송의 파라미터를 획득하는 제1 파라미터 위치의 베이스 어드레스를 지정하는 값을 기입하는 전송 파라미터 위치 베이스 어드레스 레지스터를 가짐 -
    를 포함하는 장치.
  6. 제5항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 적어도 상기 소스 데이터 위치의 베이스 어드레스, 상기 목적 데이터 위치의 베이스 어드레스, 및 상기 제1 전송에서 전송될 상기 데이터 블록을 구성하는 상기 데이터량을 저장하는 장치.
  7. 제6항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 상기 제어 디바이스가 상기 제1 전송 상태를 표시하는 값을 기입하는 제1 전송 상태 위치의 베이스 어드레스를 더 저장하는 장치.
  8. 제6항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 상기 DMA 컨트롤러가 제2 전송 파라미터를 획득하는 제2 파라미터 위치의 베이스 어드레스를 더 저장하는 장치.
  9. 제8항에 있어서, 상기 DMA 컨트롤러가 상기 제2 전송 파라미터를 획득하는 상기 제2 파라미터 위치는 상기 제어 디바이스가 상기 제2 전송 상태를 표시하는 값을 기입하는 제2 전송 상태 위치의 베이스 어드레스를 더 저장하는 장치.
  10. DMA 컨트롤러에 의해 수행될 제1 데이터 블록의 전송에 대한 제1 파라미터 세트를 메모리 디바이스 내에 할당된 제1 전송 파라미터 위치에 기입하는 단계 - 상기 제1 데이터 블록의 전송에 대한 상기 파라미터들은 제1 전송 상태 위치의 베이스 어드레스를 포함함 -;
    상기 제1 전송 파라미터 위치의 베이스 어드레스를 상기 DMA 컨트롤러의 레지스터 내에 기입하는 단계;
    수행될 상기 데이트 블록의 상기 전송 파라미터를 획득하기 위해서 상기 제1 전송 파라미터 위치를 액세스함으로써 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거하는 단계; 및
    DMA 컨트롤러가, 상기 제1 데이터 블록의 상기 전송이 완료되었음을 표시하는 값을 상기 제1 전송 상태 위치 내에 기입했는지 여부를 판단하기 위해서 상기 제1 전송 상태 위치를 액세스하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거 하는 단계는,
    상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 판독되는 제1 데이터 소스 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하는 단계 - 상기 제1 데이터 소스 위치는 제1 메모리 디바이스 내에 할당됨 - ;
    상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 기입되는 제1 데이터 목적 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하는 단계 - 상기 제1 데이터 목적 위치는 제2 메모리 디바이스 내에 할당됨 - ; 및
    전송될 상기 제1 데이터 블록으로 구성되는 데이터량을 지정하는 값을 상기 제1 전송 파라미터로부터 획득하는 단계
    를 포함하는 방법.
  12. 제10항에 있어서, 제2 데이터 블록의 전송에 대한 제2 파라미터 세트를 갖는 제2 전송 파라미터 위치의 베이스 어드레스를 획득하기 위해 상기 제1 전송 파라미터 위치를 액세스하는 단계를 더 포함하는 방법.
  13. 전자 디바이스 내에서 프로세서에 의해 수행될 때, 상기 전자 디바이스로 하여금,
    DMA 컨트롤러에 의해 수행될 제1 데이터 블록의 전송에 대한 제1 파라미터 세트를 메모리 디바이스 내에 할당된 제1 전송 파라미터 위치에 기입하고,
    상기 제1 전송 파라미터 위치의 베이스 어드레스를 상기 DMA 컨트롤러의 레지스터에 기입하고 - 여기서, 상기 제1 데이터 블록의 전송에 대한 상기 파라미터는 제1 전송 상태 위치의 베이스 어드레스로 구성됨 -,
    수행될 상기 데이트 블록의 상기 전송 파라미터를 획득하기 위해서 상기 제1 전송 파라미터 위치를 액세스함으로써 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거하며,
    DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송이 완료되었음을 표시하는 값을 상기 제1 전송 상태 위치 내에 기입했는지 여부를 판단하기 위해서 상기 제1 전송 상태를 액세스하게 하는 코드를 포함하는 머신 판독 가능 매체.
  14. 제13항에 있어서, 상기 전자 디바이스는 추가로,
    상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 판독되는 제1 데이터 소스 위치의 베이스 어드레스를 상기 제1 전송 파라미터 위치로부터 획득하고 - 여기서, 상기 제1 데이터 소스 위치는 제1 메모리 디바이스 내에 할당됨 -,
    상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 기입되는 제1 데이터 목적 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하고 - 여기서, 상기 제1 데이터 목적 위치는 제2 메모리 디바이스 내에 할당됨 -,
    전송될 상기 제1 데이터 블록이 구성되는 데이터량을 지정하는 값을 상기 제1 전송 파라미터로부터 획득하게 하는 머신 판독 가능 매체.
  15. 제13항에 있어서, 제2 데이터 블록의 전송에 대한 제2 파라미터 세트를 갖는 제2 전송 파라미터 위치의 베이스 어드레스를 획득하기 위해 상기 제1 전송 파라미터를 액세스하는 것을 더 포함하는 머신 판독 가능 매체.
KR1020057025327A 2003-06-30 2004-06-23 Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체 KR100868395B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,660 US7120708B2 (en) 2003-06-30 2003-06-30 Readdressable virtual DMA control and status registers
US10/610,660 2003-06-30

Publications (2)

Publication Number Publication Date
KR20060028705A true KR20060028705A (ko) 2006-03-31
KR100868395B1 KR100868395B1 (ko) 2008-11-11

Family

ID=33541181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057025327A KR100868395B1 (ko) 2003-06-30 2004-06-23 Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체

Country Status (9)

Country Link
US (1) US7120708B2 (ko)
EP (1) EP1639481B1 (ko)
JP (2) JP4800207B2 (ko)
KR (1) KR100868395B1 (ko)
CN (1) CN100421097C (ko)
AT (1) ATE379812T1 (ko)
DE (1) DE602004010399T2 (ko)
TW (1) TWI296762B (ko)
WO (1) WO2005006201A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI258077B (en) * 2004-05-11 2006-07-11 Winbond Electronics Corp Method of DMA and program DMA controller for card reader
US8200879B1 (en) 2004-06-29 2012-06-12 National Semiconductor Corporation Memory interface including an efficient variable-width bus
EP1617335A1 (fr) * 2004-07-12 2006-01-18 Stmicroelectronics SA Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé
GB2433611A (en) * 2005-12-21 2007-06-27 Advanced Risc Mach Ltd DMA controller with virtual channels
US20080082715A1 (en) * 2006-09-29 2008-04-03 Honeywell International Inc. Data transfers over multiple data buses
KR100891508B1 (ko) * 2007-03-16 2009-04-06 삼성전자주식회사 가상 디엠에이를 포함하는 시스템
DE102007029833B4 (de) * 2007-06-28 2019-03-28 Texas Instruments Deutschland Gmbh Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
US7822885B2 (en) * 2007-10-16 2010-10-26 Applied Micro Circuits Corporation Channel-less multithreaded DMA controller
JP5268841B2 (ja) * 2009-09-11 2013-08-21 三菱電機株式会社 情報処理装置
JP5527512B2 (ja) * 2009-09-28 2014-06-18 ソニー株式会社 バスプロトコル変換装置及びバスプロトコル変換方法
WO2011154986A1 (en) * 2010-06-07 2011-12-15 Hitachi, Ltd. Data transfer device and data transfer method
TWI465905B (zh) 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US8959278B2 (en) * 2011-05-12 2015-02-17 Freescale Semiconductor, Inc. System and method for scalable movement and replication of data
DE102016211768A1 (de) * 2016-06-29 2018-01-04 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung und Betriebsverfahren hierfür
CN111797046B (zh) * 2017-09-27 2022-04-08 成都忆芯科技有限公司 PCIe控制器及其数据传输方法
CN109739805B (zh) * 2018-12-27 2023-06-23 北京中星微电子有限公司 配置模块的参数的方法和配置模块的参数的装置
CN113032300A (zh) * 2021-03-23 2021-06-25 安谋科技(中国)有限公司 数据的传输控制方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04177445A (ja) * 1990-11-08 1992-06-24 Nec Corp ディスクリプタ制御方式
JPH04324561A (ja) * 1991-04-25 1992-11-13 Shikoku Nippon Denki Software Kk Dma情報のポーリング制御装置
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
JPH0696007A (ja) * 1992-09-17 1994-04-08 Fujitsu Ltd Dma転送方式
US5828903A (en) * 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5687395A (en) * 1994-10-28 1997-11-11 Hewlett-Packard Company Main memory buffer for low cost / high performance input/output of data in a computer system
US5828901A (en) * 1995-12-21 1998-10-27 Cirrus Logic, Inc. Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6065071A (en) 1998-03-26 2000-05-16 Nvidia Corporation Method and apparatus for trapping unimplemented operations in input/output devices
US6023738A (en) 1998-03-30 2000-02-08 Nvidia Corporation Method and apparatus for accelerating the transfer of graphical images
US6134607A (en) * 1998-04-03 2000-10-17 Avid Technology, Inc. Method and apparatus for controlling data flow between devices connected by a memory
US6202106B1 (en) 1998-09-09 2001-03-13 Xilinx, Inc. Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller
JP3206568B2 (ja) * 1998-10-28 2001-09-10 日本電気株式会社 Dma制御方法及び装置
US6314478B1 (en) * 1998-12-29 2001-11-06 Nec America, Inc. System for accessing a space appended to a circular queue after traversing an end of the queue and upon completion copying data back to the queue
GB2371641B (en) * 2001-01-27 2004-10-06 Mitel Semiconductor Ltd Direct memory access controller for circular buffers
US7287101B2 (en) 2003-08-05 2007-10-23 Intel Corporation Direct memory access using memory descriptor list

Also Published As

Publication number Publication date
KR100868395B1 (ko) 2008-11-11
US7120708B2 (en) 2006-10-10
EP1639481B1 (en) 2007-11-28
JP4800207B2 (ja) 2011-10-26
US20040267979A1 (en) 2004-12-30
EP1639481A1 (en) 2006-03-29
TWI296762B (en) 2008-05-11
JP2007520770A (ja) 2007-07-26
TW200508876A (en) 2005-03-01
ATE379812T1 (de) 2007-12-15
DE602004010399D1 (de) 2008-01-10
CN1813248A (zh) 2006-08-02
JP2011204269A (ja) 2011-10-13
WO2005006201A1 (en) 2005-01-20
DE602004010399T2 (de) 2008-10-09
JP5275414B2 (ja) 2013-08-28
CN100421097C (zh) 2008-09-24

Similar Documents

Publication Publication Date Title
JP5275414B2 (ja) リードアドレス可能バーチャルdmaコントロール及び状態レジスタ
US5301278A (en) Flexible dynamic memory controller
US6081851A (en) Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus
KR100225744B1 (ko) 동적연쇄화조작동안레이스상태를막는방법및장치
US5577230A (en) Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
US20050114559A1 (en) Method for efficiently processing DMA transactions
US5506968A (en) Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
JPH11501751A (ja) トグル・モード・インクリメント論理回路を使用した線形およびトグル・モードのバースト・アクセス・シーケンスを制御する方法および装置
US20100306421A1 (en) Dma transfer device
EP2054800A2 (en) Flash memory access circuit
US5301332A (en) Method and apparatus for a dynamic, timed-loop arbitration
US7484030B2 (en) Storage controller and methods for using the same
US5761532A (en) Direct memory access controller with interface configured to generate wait states
US7096307B2 (en) Shared write buffer in a peripheral interface and method of operating
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
US20080209085A1 (en) Semiconductor device and dma transfer method
JP2005165508A (ja) ダイレクトメモリアクセスコントローラ
US6651152B1 (en) Microcomputer including download circuit controlling data download to plurality of memories
JP2522412B2 (ja) プログラマブルコントロ―ラと入出力装置の間の通信方法
JP3077807B2 (ja) マイクロコンピュータシステム
JP2963696B2 (ja) データ転送制御システム
JP3353368B2 (ja) バス中継装置
JPH1185673A (ja) 共有バスの制御方法とその装置
KR0145932B1 (ko) 고속중형 컴퓨터시스템에 있어서 디엠에이제어기
JPH07146814A (ja) メモリ装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee