KR20060028705A - Readdressable virtual dma control and status registers - Google Patents

Readdressable virtual dma control and status registers 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
Korean (ko)
Other versions
KR100868395B1 (en
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/en
Application granted granted Critical
Publication of KR100868395B1 publication Critical patent/KR100868395B1/en

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

Apparatus and method for carrying out a DMA transfer wherein an address is written into a DMA register of a DMA controller specifying a memory location within a memory device at which either the parameters for a transfer of a block of data are provided or the status of the transfer of a block of data is to be written by the DMA controller.

Description

재 어드레스 가능한 가상 DMA 제어 및 상태 레지스터들{READDRESSABLE VIRTUAL DMA CONTROL AND STATUS REGISTERS}READDRESSABLE VIRTUAL DMA CONTROL AND STATUS REGISTERS}

본 발명은 DMA 전송의 상태를 제어 및 모니터하기 위해 메모리 어드레스 공간 내에 가상 DMA 레지스터를 정의하는 것에 관련된다.The present invention relates to defining virtual DMA registers in a memory address space for controlling and monitoring the status of DMA transfers.

가상 컴퓨터 시스템 아키텍처는 컴퓨터 시스템 내에서 버스들에 걸쳐서 디바이스들(메모리 디바이스, I/O 디바이스들 등) 사이에서 데이터 블록을 효율적으로 전송하도록 시도하는 다수의 접근법들을 사용하여 왔다. 가장 간단한 접근법들 중 하나는 CPU(중앙 처리 장치)가 하나의 디바이스로부터 데이터 블록을 판독한 후 이 데이터 블록을 다른 디바이스에 기입하도록 허용하는 것이였다. 그러나, 이러한 작업(task)은 종종 다른 대체 메커니즘에게 위임되는 것이 더욱 적합한 작업으로 간주되어 CPU는 보다 복잡한 계산 및 다른 계산 작업을 수행하는데 보다 충실히 전념하게 될 수 있다.Virtual computer system architectures have used a number of approaches that attempt to efficiently transfer data blocks between devices (memory devices, I / O devices, etc.) across buses within a computer system. One of the simplest approaches was to allow the CPU (Central Processing Unit) to read a block of data from one device and then write the block of data to another device. However, such tasks are often considered to be more suitable tasks that are delegated to other alternative mechanisms so that the CPU can be more fully dedicated to performing more complex computations and other computational tasks.

폭넓게 이용되는 하나의 대체 메커니즘은 컴퓨터 시스템의 시스템 메모리 및 다른 디바이스들 사이에서 데이터 블록의 이동을 대신하는 컴퓨터 시스템에 DMA(direct memory access) 컨트롤러를 부가하는 것이다. 통상적으로, 이러한 DMA 컨트롤러들은 전송 파라미터들을 DMA 컨트롤러 내의 레지스터들에 직접 기입하는 CPU에 의해 데이터 블록의 지정 전송(specific transfer)을 수행하도록 프로그램된다. 이후에, 데이터 블록의 전송이 수행됨에 따라, CPU는 전송 상태를 질의하기 위해 DMA 컨트롤러 내의 하나 이상의 레지스터들을 폴링하도록 통상적으로 프로그램된다.One widely used alternative mechanism is to add a direct memory access (DMA) controller to the computer system that replaces the movement of data blocks between the system memory and other devices of the computer system. Typically, such DMA controllers are programmed to perform specific transfer of data blocks by the CPU, which writes transfer parameters directly into registers within the DMA controller. Thereafter, as the transfer of the data block is performed, the CPU is typically programmed to poll one or more registers in the DMA controller to query the transfer status.

그러나, DMA 컨트롤러의 사용은 단점이 있다. CPU가 데이터 블록의 전송을 실제적으로 수행하는 부담이 줄어들었다고 해도, 전송 상태를 질의하기 위해서 CPU가 DMA 컨트롤러 내의 레지스터를 폴링하는 것은 여전히 비효율적으로 간주된다. 또한, 컴퓨터 시스템들의 많은 구현에 있어서, DMA 컨트롤러 내의 레지스터들을 프로그램하기 위해 CPU에 의해 수행된 기입 동작 및 DMA 컨트롤러 내의 레지스터로부터 상태를 질의하기 위해 CPU에 의해 수행된 판독 동작은 원하는 시간보다 더 많은 시간이 걸릴 수 있다.However, the use of DMA controllers has its drawbacks. Although the burden on the CPU to actually perform the transfer of data blocks has diminished, it is still considered inefficient to poll the registers in the DMA controller to query the transfer status. Also, in many implementations of computer systems, a write operation performed by the CPU to program the registers in the DMA controller and a read operation performed by the CPU to query the status from the registers in the DMA controller may take more time than desired. This can take

폭넓게 사용되는 또 다른 대체 메커니즘은 버스 마스터링 능력(bus mastering capabilities)을 컴퓨터 시스템 내의 다양한 I/O 디바이스들에 통합하는 것으로, 이 디바이스들은 데이터 블록의 전송을 그들 자신이 자발적으로 수행할 수 있다. 통상적으로, 이러한 전송은 이러한 버스 마스터링 디바이스 내의 레지스터들로 전송 파라미터를 직접 기입하는 CPU에 의해 일어나도록 프로그램된다. 이후에, 데이터 블록의 전송이 수행됨에 따라, CPU는 전송 상태를 질의하기 위해 버스 마스터링 디바이스 내의 하나 이상의 레지스터들을 폴링한다.Another widely used alternative mechanism is to integrate bus mastering capabilities into various I / O devices in a computer system, which can voluntarily perform the transfer of data blocks on their own. Typically, this transfer is programmed to take place by the CPU writing the transfer parameters directly into the registers within this bus mastering device. Thereafter, as the transfer of the data block is performed, the CPU polls one or more registers in the bus mastering device to query the transfer status.

그러나, 이러한 버스 마스터링 디바이스의 사용은 단점이 있다. CPU가 데이터 블록의 전송을 실제적으로 수행하는 부담이 줄어들었다고 해도, DMA 컨트롤러 내의 레지스터를 프로그램하기 위해 CPU에 의해 수행된 기입 동작과 DMA 컨트롤러 내의 레지스터로부터 상태를 질의하기 위해 CPU에 의해 수행된 판독 동작은 바람직하게 생각하는 시간보다 더 많은 시간이 걸릴 수 있다. 또한, 버스 마스터링 디바이스에 의해 수행된 판독 동작, 특별히 시스템 메모리로부터 데이터 블록을 판독하는 동작은, 바람직하게 생각하는 시간보다 더 많은 시간이 걸릴 수 있다. However, the use of such bus mastering devices has its drawbacks. Although the burden on the CPU to actually perform the transfer of data blocks is reduced, a write operation performed by the CPU to program a register in the DMA controller and a read operation performed by the CPU to query status from a register in the DMA controller May take more time than would be desirable. In addition, the read operation performed by the bus mastering device, in particular the reading of data blocks from the system memory, may take more time than would be desirable.

본 발명의 목적, 특징, 및 장점들은 다음의 상세한 설명을 통해 당업자에게 자명할 것이다.The objects, features, and advantages of the present invention will be apparent to those skilled in the art through the following detailed description.

도 1은 컴퓨터 시스템을 사용하는 실시예들의 블록도.1 is a block diagram of embodiments using a computer system.

도 2는 컴퓨터 시스템을 사용하는 다른 실시예들의 또 다른 블록도.2 is another block diagram of other embodiments using a computer system.

도 3은 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 블록도.3 is a block diagram of embodiments of interaction between devices reserved to transmit a block of data.

도 4는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 블록도.4 is a block diagram of embodiments of interaction between devices reserved to transmit multiple data blocks.

도 5는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 또 다른 블록도.5 is another block diagram of embodiments of interaction between devices reserved to transmit multiple data blocks.

도 6은 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들의 또 다른 블록도.6 is another block diagram of embodiments of interaction between devices reserved to transmit multiple data blocks.

도 7은 컴퓨터 시스템을 사용하는 다른 실시예들의 또 다른 블록도.7 is another block diagram of other embodiments using a computer system.

도 8은 일 실시예의 순서도.8 is a flowchart of one embodiment.

도 9는 다른 실시예의 순서도.9 is a flowchart of another embodiment.

도 10은 또 다른 실시예의 순서도.10 is a flow chart of another embodiment.

다음의 기재에서는, 설명을 위해서, 본 발명의 완전한 이해를 제공하도록 많은 상세한 설명이 기술된다. 그러나, 이들 상세 설명이 이하의 청구되는 바와 같은 본 발명을 실시하기 위해서 요구되지 않는다는 것은 당업자에게 자명할 것이다. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that these details are not required to practice the invention as claimed below.

이하 청구되는 바와 같은 본 발명은 컴퓨터 시스템 또는 다른 유사한 전자 시스템의 다른 디바이스들 내의 저장소 위치들에서 DMA 컨트롤러용 가상 레지스터들을 유지하기 위한 통합 지원(incorporating support)에 관련한다. 다음의 논의는 컴퓨터 시스템 내의 DMA 컨트롤러에 집중하지만, 당업자라면, 이하 청구되는 바와 같은 본 발명이 DMA 컨트롤러를 갖는 전자 시스템 또는 디바이스들 간의 데이터 블록의 이동을 위한 다른 유사한 전용 로직을 지지하여 실행될 수 있음을 이해할 것이다.The present invention as claimed below relates to an incorporating support for maintaining virtual registers for a DMA controller at storage locations in other devices of a computer system or other similar electronic system. The following discussion focuses on DMA controllers within a computer system, but one of ordinary skill in the art, as claimed below, may implement and support other similar dedicated logic for the movement of data blocks between electronic systems or devices having a DMA controller. Will understand.

도 1은 컴퓨터 시스템을 사용하는 실시예들의 블록도이다. 컴퓨터 시스템(100)은, 적어도 일부분, CPU(110), 버스(119), 로직(120), 버스(149), 시스템 메모리(140), 버스(159) 및 디바이스(150)로 구성된다. CPU(110), 버스(119), 로직(120), 버스(149) 및 시스템 메모리(140)는 시스템 메모리(140) 내에 및/또는 컴퓨터 시스템(100)의 다른 디바이스들 내에 저장될 수 있는 머신 판독 가능 명령어를 실행할 수 있는 컴퓨터 시스템(100)의 코어(core)의 형태를 구성한다. 그러나, 당업자가 손쉽게 인식하는 바와 같이, 이것은 많은 가능한 컴퓨터 시스템(100)의 코어 형태들 중 단지 하나의 예이며, 이 컴퓨터 시스템(100)은 또한 도시되지 않은 다른 버스들 및 디바이스들을 추가로 구성할 수 있다.1 is a block diagram of embodiments using a computer system. Computer system 100 comprises at least a portion of CPU 110, bus 119, logic 120, bus 149, system memory 140, bus 159, and device 150. The CPU 110, bus 119, logic 120, bus 149 and system memory 140 may be stored in the system memory 140 and / or in other devices of the computer system 100. Configure the form of a core of computer system 100 capable of executing readable instructions. However, as those skilled in the art will readily appreciate, this is only one example of the core forms of many possible computer systems 100, which may also further configure other buses and devices not shown. Can be.

다양한 실시예들에서, 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)에 대한 액세스를 제공한다.In various embodiments, the CPU 110 is one of several types of CPU including a CPU capable of executing at least a portion of the "x86" instruction set invented by Intel Corporation of Santa Clara, Calif. It can be of any type. In addition, various possible embodiments may have one or more CPUs with additional buses and / or devices to support one or more CPUs (not shown). Logic 120 is coupled to CPU 110 via bus 119 and supports execution of instructions by CPU 110 such that logic 120 is further coupled via bus 149 to system memory 140. And provide access to the CPU 110 and control the CPU 110. Logic 120 also provides access to other devices that make up computer system 100, such as device 150 to which logic 120 is connected via bus 159.

버스들(119, 149 및 159)과의 연결에 있어서, 그리고 어드레스들, 명령들 및 데이터가 전송되는 트랜잭션(transaction)을 가능하게 하도록 CPU(110)에 시스템 메모리(140) 및 디바이스(150) 각각에 대한 액세스를 제공하는데 있어서, 로직(120)은 일반적으로 이들 버스 사이의 "브리지"로 불리는 역할을 한다. 브리지로서의 역할에 있어서, 로직(120)은 또한 버스(149) 상에서 트랜잭션을 수행하는 것을 지원하기 위한 메모리 컨트롤러(122)와, 버스(159) 상에서 트랜잭션을 수행하는 것을 지원하기 위한 버스 인터페이스(127)를 컴퓨터 시스템(100)에 제공한다. CPU가 데이터 블록의 상당한 전송을 수행하는 부담의 일부를 덜기 위해서, 로직(120)은 DMA 컨트롤러(130)를 추가로 제공한다.In connection with the buses 119, 149, and 159, and in the CPU 110, the system memory 140 and the device 150, respectively, to enable a transaction in which addresses, instructions, and data are transmitted. In providing access to the logic 120, the logic 120 generally serves as a "bridge" between these buses. In its role as a bridge, logic 120 may also include a memory controller 122 to support performing transactions on bus 149 and a bus interface 127 to support performing transactions on bus 159. To the computer system 100. In order to relieve some of the burden of the CPU performing significant transfer of data blocks, logic 120 further provides DMA controller 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)는 메모리 및/또는 메모리 인터페이스의 하나 이상의 타입들의 타이밍 및/또는 프로토콜 요구사항을 지원하도록 구성된다.In various embodiments, system memory 140 includes a fast page mode (FPM), extended data out (EDO), single data rate (SDR), or double data rate (DDR) form of synchronous dynamic DRAM (SDRAM). RAM, or any of various types of RAM using a RAMBUS ™ interface or other interface. Memory controller 122 and bus 149 are configured to support timing and / or protocol requirements of one or more types of memory and / or memory interface.

다양한 실시예들에서, 버스(159) 및/또는 컴퓨터 시스템(100)을 구성할 수 있는 다른 버스들은, 예를 들면, EISA(extended industry standard architecture), MCA(Micro Channel™ architecture), PCI(peripheral component interconnect), PCI-X, PCI Express 등과 같이 컴퓨터 설계 분야에서 "표준화된" 버스들의 널리 알려진 다양한 형태들 중 임의의 형태의 특성 및/또는 설계서에 따른다. 버스 인터페이스들(127 및 157)은 버스(159)의 타이밍 및/또는 프로토콜 요구 사항을 지원하도록 구성된다.In various embodiments, the bus 159 and / or other buses that may make up the computer system 100 are, for example, extended industry standard architecture (EISA), Micro Channel ™ architecture (MCA), peripheral (PCI). component interconnect), PCI-X, PCI Express, etc., in accordance with the characteristics and / or design of any of the various well-known forms of "standardized" buses in the field of computer design. Bus interfaces 127 and 157 are configured to support timing and / or protocol requirements of bus 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)를 판독함으로써 전송 상태에 대한 반복적인 확인이 가능할 것이다.In one embodiment, the CPU 110 causes the CPU 110 to program the DMA controller 130 to perform the transfer of a data block between the data storage locations 146 and 148 in the system memory 140. Run the commands in. CPU 110 includes, but is not limited to, starting addresses of data storage locations 146 and 148, values specifying various transfer parameters that occur, values indicating the amount of data to be transferred (i.e. the size of the data block). One or more parameter registers 133 with a value indicating that the transfer status is to be provided at the state store location 144 allocated within the system memory 140, and a value to one or more control bits at which the transfer occurs. Fill in. The DMA controller 130 then performs the transfer. While executing this transfer, the CPU 110 writes the state store location 144 once to determine whether the DMA controller 130 writes a value to the state store location 144 indicating that the transfer is complete. The abnormality can be read. Assuming that creating a very low latency path between the CPU and the system memory is the norm in the design of computer systems, such as computer system 100, the CPU 110 may not be able to access the conventional registers from the registers in the DMA controller 130. By reading the state store location 144 in the system memory 140 much faster than the read method of s.

또 다른 실시예에서, 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회 이상 판독할 수 있다. In yet another embodiment, the CPU 110 writes the various transmission parameters that occur to the alternate parameter storage location 143 allocated in the system memory 140 to the data storage locations 146 and 148 in the system memory 140. It executes a series of instructions that cause the CPU 110 to program the DMA controller 130 to perform the transfer of data blocks therebetween. Such parameters may include, but are not limited to, starting addresses of data store locations 146 and 148, a value indicating the amount of data to be transferred, and a value indicating that a transmission status will be provided at state store location 144. It may not be. The CPU 110 also causes the one or more parameter registers 133 to be written with a value specifying the start address of the alternate parameter storage location 143 and a value in one or more control bits as a trigger to cause the transfer. In response to this trigger, DMA controller 130 then executes the transfer. While executing this transfer, the CPU 110 writes the state store location 144 once to determine whether the DMA controller 130 writes a value to the state store location 144 indicating that the transfer is complete. The abnormality can be read.

본 실시예의 하나의 변형에서, 상태 저장소 위치(144)는 대체 파라미터 저장소 위치(143)의 일부이거나 또는 대체 파라미터 저장소 위치(143)의 베이스 어드레스로부터의 소정의 오프셋인 시스템 메모리(140) 내의 어드레스에서 할당된다. 본 실시예의 다른 변형에서, DMA 컨트롤러(130)는 상태 저장소 위치(144)에 대한 어드레스를 가지고 (파라미터 레지스터들(133) 또는 대체 파라미터 저장소 위치(143)를 통해) 개별적으로 프로그램된다.In one variation of this embodiment, the state store location 144 is part of the alternate parameter store location 143 or at an address in the system memory 140 that is a predetermined offset from the base address of the alternative parameter store location 143. Is assigned. In another variation of this embodiment, DMA controller 130 is individually programmed (via parameter registers 133 or alternate parameter storage location 143) with an address for state storage location 144.

본 실시예의 또 다른 변형에서, 전송 상태는 디바이스(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)에 전송되도록 허용될 수 있다. In another variation of this embodiment, the transfer state is written to an alternate state store location 164 in the device store 160 of the device 150, and the DMA controller 130 enters an address for the alternate state store location 164. Are programmed (via parameter registers 133 or alternate parameter storage location 143). Alternate state store location 164 may include one or more memory locations allocated within device store 160 and a device that may be used for any of a number of possible purposes, depending on the nature of device 150. Memory buffer within 150), which will be apparent to those skilled in the art. The benefit of writing the transfer status to the alternate state store location 164 in the device store 160 of the device 150 can wait for this state, provided the device 150 performs some other task, and this state Unwanted write delays can be avoided by not writing a state to the state store location 144 in system memory 140 that should actually be transmitted to device 150. This advantage is that a device using the bus mastering capability that the transfer of the substantial state from the state store location 144 to the alternate state store location 164 may have for the device 150 to read the state store location 144. If you need it will be larger. As will be appreciated by those skilled in the art, performing a read operation over a bus, such as bus 159, may take longer to complete than a write operation and may also momentarily lock up the bus. This is a read operation that first requires a request for data made over a bus to read a piece of data, for example the transfer status, and then the next data needed until the requested data can be provided. This is due to the waiting period. Depending on the bus 159 design, the coherency and ordering rules of the read and write operations may be defined such that at least the device 150 is responsible for other transmissions across the bus 159 until the bus 159 is unused or a condition is received. May require that at least not a subset be performed. Therefore, depending on the environment at the time the read operation begins, the buses 149 and 159 as well as the system memory 140 and device 150 respond to a read operation that reads the status from the state store location 144. And can be instantaneously monopolized while completing a read operation. Conversely, if the state is written directly to the device 150 by the DMA controller 130, the write operation is performed by the bus interface 127 using the less stringent requirements generally given to the write operation to maintain consistency and ordering. After being posted in the write buffer 128, the bus 159 may be allowed to be sent to the device 150 over the bus 159 when it is less likely to be locked.

도 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)에 대한 액세스를 제공한다.2 is another block diagram of embodiments using a computer system. The numbered items in FIG. 2 are somewhat different from the computer system 100 of FIG. 1, and generally correspond to the numbered items in FIG. 1, where the computer system 200 is at least in part, a CPU 210, a bus 219. ), Logic 220, bus 249, system memory 240, bus 259, and device 250. As in the case of computer system 100, this is just one example of the core forms of many possible computer systems 200, which also further configure other buses and devices not shown. It will be readily apparent to those skilled in the art that they may. The logic 220 is connected to the CPU 210 via the bus 219 and supports execution of instructions by the CPU 210 such that the logic 220 is connected to the memory controller 222 and the bus in the logic 220. 249 to provide the CPU 210 with access to the system memory 240 further connected and to control the CPU 110. The logic 220 may also be connected to other devices that make up the computer system 200, such as the device 250 in which the logic 220 is connected via the bus interface 227 and the bus 259 within the logic 220. Provide access to

일 실시예에서, 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회 이상 판독할 수 있다. In one embodiment, the CPU 210 causes the CPU 210 to perform a transfer of data blocks between the data storage location 246 in the system memory 240 and the data storage location 266 in the device 250. Executes a series of instructions (perhaps stored in system memory 240) that causes the controller 230 to be programmed. CPU 210 writes the various parameters of the transfer that occur in memory locations in parameter storage location 243 allocated in system memory 240. These parameters indicate the starting addresses of the data store locations 246 and 266, a value indicating the amount of data to be transferred, and that the transfer status will be provided at the state store location 244 allocated within the system memory 240. It may include a value, but may not be limited thereto. CPU 210 also allows writing one or more parameter registers 233 with a value specifying the starting address of parameter storage location 243 and a value in one or more control bits as a trigger to cause the transfer. In response to this trigger, DMA controller 230 subsequently executes the transfer. While executing this transfer, the CPU 210 writes the state store location 244 once to determine whether the DMA controller 230 writes a value to the state store location 244 indicating that the transfer is complete. The abnormality can be read.

본 실시예의 하나의 변형에서, 상태 저장소 위치(244)는 파라미터 저장소 위치(243)의 일부이거나 또는 파라미터 저장소 위치(243)의 베이스 어드레스로부터의 소정의 오프셋에 있는 시스템 메모리(240) 내의 어드레스에서 할당된다. 본 실시예의 다른 변형에서, DMA 컨트롤러(230)는 상태 저장소 위치(244)에 대한 어드레스를 가지고 (파라미터 레지스터들(233) 또는 파라미터 저장소 위치(243) 내에) 개별적으로 프로그램된다. 본 실시예의 또 다른 변형에서, 전송 상태는 디바이스(250)의 디바이스 저장소(260) 내의 대체 상태 저장소 위치(264)에 기입되고, DMA 컨트롤러(230)는 대체 상태 저장소 위치(264)에 대한 어드레스를 가지고 프로그램되며, 그에 의해, 원한다면, 디바이스(250)는 전송 상태가 보다 빠르게 제공되는 것이 허용된다.In one variation of this embodiment, the state store location 244 is part of the parameter store location 243 or assigned at an address in the system memory 240 at a predetermined offset from the base address of the parameter store location 243. do. In another variation of this embodiment, the DMA controller 230 is individually programmed (within the parameter registers 233 or the parameter store location 243) with an address for the state store location 244. In another variation of this embodiment, the transfer state is written to an alternate state store location 264 in the device store 260 of the device 250, and the DMA controller 230 sets the address for the alternate state store location 264. Programmed with the device 250, if desired, the device 250 is allowed to provide the transmission status faster.

또 다른 실시예에서, 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회 이상 판독할 수 있다. In yet another embodiment, the CPU 210 writes the various transfer parameters that occur between the data storage locations 246 and 266 by writing to the alternate parameter storage location 263 assigned within the device storage 260 of the device 250. Executes a series of instructions that causes the CPU 210 to program the DMA controller 230 to perform the transfer of the data block. As before, these parameters may include starting addresses of the data store locations 246 and 266, a value indicating the amount of data to be transmitted, and a value indicating that the transmission status will be provided to the state store location 264. However, this may not be limited. The CPU 210 also causes the one or more parameter registers 233 to be written with a value specifying the starting address of the alternate parameter storage location 263 and a value in one or more control bits as a trigger to cause the transfer to occur. In response to this trigger, DMA controller 230 subsequently executes the transfer. While executing this transfer, device 250 or CPU 210 may determine whether or not state DMA controller 230 writes a value to state store location 264 indicating that the transfer is complete. 264) can be read more than once.

도 3은 데이터 블록을 전송하도록 예약된 디바이스들 사이에서의 트랜잭션의 실시예들의 블록도이다. 구체적으로, 도 3은 제어 디바이스(310), DMA 컨트롤러(330), 및 하나 이상의 메모리 디바이스들 및/또는 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 제어 디바이스(310)는, 제어 디바이스(310)가 자신에게 연결된 DMA 컨트롤러(330) 내의 레지스터들을 프로그램하게 함으로써 데이터 블럭의 전송을 발생하게 하는 명령어(312)를 실행할 수 있는, CPU(컴퓨터 시스템 또는 다른 전자 시스템), 마이크로컨트롤러, 시퀀서 등일 수 있다. 어드레스 가능한 공간(340)은 제어 디바이스(310) 및 DMA 컨트롤러(330)에서 모두 액세스 가능한 어드레스 위치들의 맵이다.3 is a block diagram of embodiments of a transaction between devices reserved to transmit a data block. Specifically, FIG. 3 illustrates the transfer of a block of data from control device 310, DMA controller 330, and one or more memory devices and / or source data storage location 346 to destination data storage location 348. Depicts the interaction of the devices that provide the storage. The control device 310 may execute a CPU (computer system or other) that may execute instructions 312 to cause the control device 310 to program the registers in the DMA controller 330 connected thereto to cause the transfer of the data block. Electronic system), microcontroller, sequencer, and the like. The addressable space 340 is a map of address locations that are both accessible from the control device 310 and the DMA controller 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)는 다른 디바이스 내의 버퍼 내에 위치될 수 있다.In some embodiments, the addressable space 340 may consist entirely of a single system memory device (not shown) to which both the control device 310 and the DMA controller 330 are connected. These embodiments are both somewhat different from data store locations 146 and 148, where both source data store location 346 and destination data store location 348 are system memory devices, eg, system memory 140. It may be largely similar to the embodiments of FIG. 1 within. In other embodiments, the addressable space 340 may consist of a combination of buffers in memory devices and / or other devices to which both the control device 310 and the DMA controller 330 are connected. These embodiments are somewhat different from the data storage location 246 assigned within the system memory 240 and the data storage location 266 assigned within the device storage 260 of the device 250. ) And destination data storage location 348 may be largely similar to the embodiments of FIG. 2 in which other devices are allocated. More precisely, for example, source data store location 346 may be located in system memory, and destination data store location 348 may be located in a buffer in another device.

제어 디바이스(310)는, 전송될 데이터량 및 상태 저장소 위치(344)의 어드레스와 함께, 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348)의 베이스 어드레스들을 파라미터 저장소 위치(343)에 기입함으로써 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송 실행을 준비하게 된다. 제어 디바이스(310)는 또한 데이터 전송을 수행하기 위해 DMA 컨트롤러(330)를 트리거하는 하나 이상의 비트와 함께 파라미터 저장소 위치(343)의 베이스 어드레스를 DMA 컨트롤러(330) 내의 파라미터 레지스터들(333)에 기입한다. The control device 310 writes to the parameter storage location 343 the base addresses of the source data storage location 346 and the destination data storage location 348 together with the amount of data to be transmitted and the address of the state storage location 344. This prepares the transfer execution of the data block from the source data store location 346 to the destination data store location 348. The control device 310 also writes the base address of the parameter storage location 343 into the parameter registers 333 in the DMA controller 330 along with one or more bits that trigger the DMA controller 330 to perform data transfer. do.

이 트리거에 응답하여, DMA 컨트롤러(330)는 소스 데이터 저장소 위치(346) 및 목적 데이터 저장소 위치(348) 모두의 베이스 어드레스, 전송될 데이터량, 및 상태 저장소 위치(344)의 베이스 어드레스를 획득하기 위해서 파라미터 레지스터들(333) 에 프로그램된 베이스 어드레스에서 파라미터 저장소 위치(343)를 액세스한다. DMA 컨트롤러(330)는 소스 데이터 저장소 위치(346)로부터 목적 데이터 저장소 위치(348)로의 데이터 블록의 전송을 수행하고, 상태 저장소 위치(344)에 전송 상태를 기입한다. 제어 디바이스(310)는, DMA 컨트롤러(330)가 데이터 전송이 완료되었음을 표시하는 상태 저장소 위치(344)에 값을 기입하는지 여부를 결정하기 위해서 상태 저장소 위치(344)를 판독한다.In response to this trigger, the DMA controller 330 acquires the base address of both the source data store location 346 and the destination data store location 348, the amount of data to be transferred, and the base address of the state store location 344. To access the parameter storage location 343 at the base address programmed in the parameter registers 333. DMA controller 330 performs the transfer of the data block from source data store location 346 to destination data store location 348 and writes the transfer status to state store location 344. The control device 310 reads the state store location 344 to determine whether the DMA controller 330 writes a value to the state store location 344 indicating that the data transfer is complete.

도 4는 다중 데이터 블록을 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예의 블록도이다. 구체적으로, 도 4는 제어 디바이스(410), DMA 컨트롤러(430), 및 하나 이상의 메모리 디바이스들 및/또는 소스 데이터 저장소 위치(446a)로부터 목적 데이터 저장소 위치(448a)로의 데이터 블록의 전송 이후, 소스 데이터 저장소 위치(446b)로부터 목적 데이터 저장소 위치(448b)로의 또 다른 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 도 4에 번호 매겨진 아이템들은 도 3의 번호 아이템에 일반적으로 대응하며, 도 3의 제어 디바이스(310)와 다르지 않다는 것을 의미하고, 제어 디바이스(410)는 (컴퓨터 시스템 또는 다른 전자 시스템의) CPU, 마이크로컨트롤러, 시퀀서 등일 수 있으며, 제어 디바이스(410)가 연결된 DMA 컨트롤러(430) 내의 레지스터들을 프로그래밍함으로써 데이터 블럭 전송을 발생하게 하는 명령어(412)를 실행할 수 있다. 어드레스 가능한 공간(440)은 제어 디바이스(410) 및 DMA 컨트롤러(430) 모두에 액세스 가능한 어드레스 위치들의 맵이다.4 is a block diagram of an embodiment of interaction between devices reserved to transmit multiple data blocks. Specifically, FIG. 4 shows the source after the transfer of the data block from the control device 410, the DMA controller 430, and the one or more memory devices and / or the source data storage location 446a to the destination data storage location 448a. Depicts the interaction of devices providing storage in performing the transfer of another data block from data storage location 446b to destination data storage location 448b. The items numbered in FIG. 4 generally correspond to the number items in FIG. 3, meaning that they are not different from the control device 310 in FIG. 3, wherein the control device 410 is a CPU (of a computer system or other electronic system), Microcontroller, sequencer, or the like, and may execute instructions 412 to cause a data block transfer by programming the registers in the DMA controller 430 to which the control device 410 is connected. Addressable space 440 is a map of address locations accessible to both control device 410 and DMA controller 430.

몇몇 실시예들에서, 어드레스 가능한 공간(440)은 제어 디바이스(410) 및 DMA 컨트롤러(430) 모두가 연결된 단일 시스템 메모리 디바이스(도시되지 않음)로 전적으로 구성될 수 있다. 다른 실시예들에서, 어드레스 가능한 공간(440)은 메모리 디바이스들 및/또는 제어 디바이스(410)와 DMA 컨트롤러(430) 모두가 연결되어 있는 다른 디바이스들 내의 버퍼들의 조합으로 구성될 수 있다. 예를 들어, 소스 데이터 저장소 위치(446a) 및 목적 데이터 저장소 위치(448b) 모두는 시스템 메모리 내에 위치될 수 있으며, 소스 데이터 저장소 위치(446b) 및 목적 데이터 저장소 위치(448a)는 다른 디바이스 내의 버퍼 내에 위치될 수 있다.In some embodiments, the addressable space 440 may be entirely comprised of a single system memory device (not shown) to which both the control device 410 and the DMA controller 430 are connected. In other embodiments, the addressable space 440 may be comprised of a combination of memory devices and / or buffers in other devices to which both the control device 410 and the DMA controller 430 are connected. For example, both the source data store location 446a and the destination data store location 448b can be located in system memory, and the source data store location 446b and the destination data store location 448a are in a buffer within another device. Can be located.

제어 디바이스(410)는, 전송될 데이터의 대응하는 양들 및 상태 저장소 위치들(444a 및 444b)의 대응하는 어드레스들과 함께, 소스 데이터 저장소 위치들(446a 및 446b) 및 목적 데이터 저장소 위치들(448a 및 448b)의 베이스 어드레스들을 대응하는 파라미터 저장소 위치(443a 및 443b)에 기입함으로써 데이터 블럭의 다중 전송 실행을 준비하게 된다. 제어 디바이스(410)는 또한 데이터 블럭 전송을 시작하기 위해 DMA 컨트롤러(430)를 트리거하는 하나 이상의 비트와 함께 파라미터 저장소 위치(443a)의 베이스 어드레스를 DMA 컨트롤러(430) 내의 파라미터 레지스터들(433)에 기입한다. The control device 410 stores the source data store locations 446a and 446b and the destination data store locations 448a, with corresponding amounts of data to be transmitted and corresponding addresses of the state store locations 444a and 444b. And writing the base addresses of 448b to the corresponding parameter storage locations 443a and 443b to prepare for the multiple transfer execution of the data block. The control device 410 also sends the base address of the parameter storage location 443a to the parameter registers 433 in the DMA controller 430 together with one or more bits that trigger the DMA controller 430 to initiate the data block transfer. Fill in.

이 트리거에 응답하여, 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)를 판독한다.In response to this trigger, the DMA controller 430 obtains the base address of both the source data store location 446a and the destination data store location 448a, the amount of data to be transferred, and the base address of the state store location 444a. To access the parameter storage location 443a at the base address programmed into the parameter registers 433. The DMA controller 430 performs the transfer of the data block from the source data store location 446a to the destination data store location 448a and writes the transfer status to the state store location 444a. The DMA controller 430 then stores the parameter storage location to obtain the base address of both the source data store location 446b and the destination data store location 448b, the amount of data to be transferred, and the base address of the state store location 444b. Access 443b. DMA controller 430 then performs the transfer of the data block from source data store location 446b to destination data store location 448b and writes the transfer status to state store location 444b. The control device 410 reads the state store locations 444a and 444b to determine whether the DMA controller 430 writes values to the state store locations 444a and 444b that indicate that the data transfer is complete.

일 실시예에서, 파라미터 레지스터들(433) 내에 기입된 파라미터 저장소 위치(443a)의 베이스 어드레스는 체인 내의 소정 간격(DMA 컨트롤러(430)로 프로그램되거나 하드와이어된(hardwired) 간격의 길이)으로 위치된 하나 이상의 파라미터 저장소 위치들(이를테면, 파라미터 저장소 위치(443a))의 베이스에 대한 포인터의 역할을 하여, DMA 컨트롤러(430)는 단지 이 체인의 최초 파라미터 저장소 위치의 베이스 어드레스만을 요구하며, DMA 컨트롤러(430)는 데이터 블럭 전송에 대한 파라미터들을 갖는 이러한 최종 파라미터 저장소 위치를 만날 때까지 이 체인을 통해 반복될 수 있다. 이러한 실시예에서, 제어 디바이스(410)는 또한 이러한 체인 내의 파라미터 저장소 위치들의 양을 표시하는 파라미터 레지스터들(433) 내에 값을 기입할 수 있다. 그러나, 또 다른 실시예에서, 각각의 파라미터 저장소 위치는 파라미터 저장소 위치의 체인 내의 다음 파라미터 저장소 위치의 베이스 어드레스를 제공할 수 있으며, 그에 의해, 어드레스 가능한 공간(440) 내의 소정의 간격으로 위치될 파라미터 저장소 위치들의 체인에서의 각 파라미터 저장소 위치에 대한 요구를 제거할 수 있다. 이러한 실시예에서, 이러한 체인에서의 최종 파라미터 저장소 위치는 이 체인에서의 최종 파라미터 저장소 위치에 도달했음을 표시하는 베이스 어드레스 대신에 값을 제공할 수 있다. In one embodiment, the base address of the parameter storage location 443a written in the parameter registers 433 is located at a predetermined interval in the chain (the length of the interval programmed or hardwired to the DMA controller 430). Serving as a pointer to the base of one or more parameter storage locations (such as parameter storage location 443a), DMA controller 430 only requires the base address of the initial parameter storage location of this chain, 430 may be repeated throughout this chain until it encounters this final parameter storage location with parameters for data block transmission. In this embodiment, control device 410 may also write a value in parameter registers 433 indicating the amount of parameter storage locations in this chain. However, in another embodiment, each parameter store location may provide the base address of the next parameter store location in the chain of parameter store locations, whereby the parameters to be located at predetermined intervals in the addressable space 440. The need for each parameter storage location in the chain of storage locations can be eliminated. In such an embodiment, the last parameter store location in this chain may provide a value instead of a base address indicating that the last parameter store location in this chain has been reached.

도 5는 다중 블럭 데이터를 전송하도록 예약된 디바이스들 간의 상호 작용의 실시예들 또 다른 블록도이다. 구체적으로, 도 5는 DMA 컨트롤러와 하나 이상의 메모리 디바이스들 및/또는 다중 데이터 블록의 전송을 수행하는 데 있어 저장소를 제공하는 디바이스들의 상호 작용을 묘사한다. 도 5에 번호 매겨진 아이템들은 도 4의 번호 아이템에 일반적으로 대응하고, 어느 정도 도 4와 다르지 않음을 의미하며, 어드레스 가능한 공간(540)은 제어 디바이스(도시되지 않음) 및 DMA 컨트롤러(530) 모두에 액세스 가능한 어드레스 위치들의 맵이다.5 is another block diagram of embodiments of interaction between devices reserved to transmit multi-block data. Specifically, FIG. 5 depicts the interaction of a DMA controller with one or more memory devices and / or devices that provide storage in performing the transfer of multiple data blocks. The items numbered in FIG. 5 generally correspond to the number items in FIG. 4, and to some extent not different from FIG. 4, wherein the addressable space 540 includes both a control device (not shown) and the DMA controller 530. Is a map of address locations accessible to.

어느 정도 도 4와 유사하게, 다중 파라미터 저장소 위치들(543a 내지 543d)은 어드레스 가능한 공간(540) 내에 할당되며, 도 4에 있어서 충분히 논의되었던 바와 유사하게, DMA 컨트롤러(530)는 전송될 데이터양 및 각 전송 상태를 표시하는 값을 기입하는 상태 저장소 위치에 대한 대응하는 베이스 어드레스들과 함께 소스 데이터 및 목적 데이터 저장소 위치들에 대한 베이스 어드레스들을 획득하기 위해서 각각의 파라미터 저장소 위치들(543a 내지 543d)을 액세스한다. 그러나, 도 4에서 논의한 실시예들과는 달리, 도 5는 각 전송 상태가 DMA 컨트롤러(530)에 의해 기입될 단일 공통 위치와 동일한 위치, 즉, 상태 저장소 위치(544)가 파라미터 저장소 위치들(543a 내지 543d)로부터 포인트될 실시예들을 묘사한다. 단일 상태 저장소 위치의 이러한 사용은 어드레스 가능한 공간(540)을 가지는 단 하나의 위치에 대한 액세스를 반복함으로써 제어 디바이스가 다중 전송 상태를 모니터하는 것을 허용한다. 이러한 실시예에서, DMA 컨트롤러(530)에 의해 상태 저장소 위치(544)에 기입된 값들은 어떤 전송이 완료되었는지 및/또는 어떤 전송이 현재 진행중인지를 제어 디바이스가 구별하는 것을 허용하는 식별 값의 일정 형태를 추가적으로 포함할 수 있다. To some extent similar to FIG. 4, multi-parameter storage locations 543a to 543d are allocated within addressable space 540, and similar to what has been fully discussed in FIG. 4, the DMA controller 530 is responsible for the amount of data to be transferred. And respective parameter storage locations 543a through 543d to obtain base addresses for source data and destination data storage locations along with corresponding base addresses for a state storage location that writes a value indicating a respective transfer status. To access it. However, unlike the embodiments discussed in FIG. 4, FIG. 5 shows that each transfer state is the same location as the single common location to be written by the DMA controller 530, that is, the state store location 544 is stored in the parameter store locations 543a through 553a. Depicts embodiments to be pointed to from 543d). This use of a single state store location allows the control device to monitor multiple transmission states by repeating access to only one location with addressable space 540. In this embodiment, the values written to the state store location 544 by the DMA controller 530 are some form of identification value that allows the control device to distinguish which transfer is completed and / or which transfer is currently in progress. It may further include.

도 5는 또한 데이터 블록의 하나 이상의 전송의 개시 및 전송 체인에 얼마나 많은 전송들이 존재하는 지에 대한 카운트 모두를 트리거하기 위한 방법으로서 최초 및 최종 파라미터 저장소 위치의 베이스 어드레스 모두를 공급하는 파라미터 레지스터들(533)의 사용을 묘사한다. 상술한 바와 같이, 몇몇 실시예들은 각 파라미터 저장소 위치가 어드레스 가능한 공간(540) 내에 위치되는 곳에서 베이스 어드레스들 간의 어드레스 공간의 소정의 간격을 사용할 수 있으며, 다른 실시예들은 수행될 대응하는 다중 전송들을 위해 파라미터 저장소 위치들의 체인에서 다음 파라미터 저장소 위치의 베이스 어드레스를 제공하는 각각의 파라미터 저장소 위치 내에 포인터들을 사용할 수 있다. FIG. 5 is also a parameter register 533 which supplies both the base address of the initial and final parameter storage location as a method for triggering both the start of one or more transfers of a data block and a count of how many transfers are in the transport chain. ) Describes the use of. As discussed above, some embodiments may use a predetermined spacing of address spaces between base addresses where each parameter store location is located within an addressable space 540, while other embodiments may use corresponding multiple transmissions to be performed. Pointers can be used within each parameter storage location providing the base address of the next parameter storage location in the chain of parameter storage locations.

도 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 is another block diagram of embodiments of interaction between devices reserved to transmit multiple data blocks. Specifically, FIG. 6 depicts the interaction of a DMA controller with one or more memory devices and / or devices providing storage in performing the transfer of multiple data blocks (data blocks that are not actually shown for clarity). do. The items numbered in FIG. 6 generally correspond to the number items in FIG. 5, and to some extent not different from FIG. 5, wherein the addressable space 640 is both a control device (not shown) and the DMA controller 630. Is a map of address locations accessible to. To some extent similar to FIG. 5, the multi-parameter storage locations 643a to 643c are allocated within the addressable space 640, and similar to what has been fully discussed in FIG. 5, the DMA controller 630 is responsible for the amount of data to be transferred. And respective parameter storage locations 643a through 643c to obtain base addresses for source data and destination data storage locations along with corresponding base addresses for a state storage location that writes a value indicating a respective transfer status. To access it. However, unlike the embodiments discussed in FIG. 5, FIG. 6 depicts the parameter store locations 643a through 643c allocated within the addressable space 640 at somewhat constant intervals, with pointers to the next parameter store location It is provided within each parameter store location. In performing each transfer, the DMA controller 630 accesses a pointer in the parameter store location 643c to obtain a base address of another parameter store location in which parameter store locations with parameters for the data block transfer. Access the pointer to the next parameter storage location to obtain the base address of the next parameter storage location until a pointer is provided indicating no degrees, at which point the DMA controller 630 stops performing the data block transfer. do.

도 6은 또한, 파라미터 저장소 위치들(643a 및 643c)에 대응하는 데이터 전송 상태를 공통 상태 저장소 위치(즉, 상태 저장소 위치(644ac))에 제공하고, 파라미터 저장소 위치(643b)에 대응하는 데이터 전송 상태를 다른 상태 저장소 위치(즉, 상태 저장소 위치(644b))에 제공하기 위해 상태 저장소 위치들에 대한 포인터들의 사용을 예시한다. 이러한 개별 및 공통 상태 저장소 위치들의 사용은, DMA 컨트롤러(630)가 일부분인 컴퓨터 시스템에 의한 일 기능의 수행과 다중 전송이 관련된 부분에서 이점이 입증될 수 있는 한편, 다른 전송은 동일한 컴퓨터 시스템 내에서 다른 기능의 수행과 관련된다. 특히, 상태 저장소 위치(644ac 및 644b)는 다른 메모리 디바이스들 및/또는 메모리 버퍼들을 갖는 디바이스들 내에 할당된다. 예를 들면, 상태 저장소 위치(644ac)는 시스템 메모리 내에 할당되어 CPU가 대응하는 전송들의 상태를 효율적으로 감시할 수 있도록 하고, 상태 저장소 위치(644b)는 다른 디바이스에 제공된 메모리 버퍼 내에 할당되어 다른 디바이스가 대응하는 전송의 상태를 효율적으로 감시할 수 있도록 한다. 6 also provides a data transfer state corresponding to parameter store locations 643a and 643c to a common state store location (ie, state store location 644ac), and data transfer corresponding to parameter store location 643b. It illustrates the use of pointers to state store locations to provide state to another state store location (ie, state store location 644b). The use of these separate and common state store locations may prove advantageous in areas where multiple transmissions are involved in the performance of one function by a computer system in which the DMA controller 630 is part, while other transmissions may be within the same computer system. It involves the performance of other functions. In particular, state store locations 644ac and 644b are allocated within devices with other memory devices and / or memory buffers. For example, state store location 644ac may be allocated in system memory to allow the CPU to efficiently monitor the status of corresponding transfers, and state store location 644b may be allocated in a memory buffer provided to another device to Ensure efficient monitoring of the status of the corresponding transmission.

도 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)에 연결된다.7 is another block diagram of embodiments employing a computer system. Items numbered in FIG. 7 are generally intended to correspond to items numbered in FIG. 2, and in a manner not different from computer system 200 of FIG. 2, computer system 700 may, at least in part, include a CPU ( 710, bus 719, logic 720, bus 749, system memory 740, bus 759, and device 750. As in the case of computer system 200, one of ordinary skill in the art is one of many possible forms of core of computer system 200, and computer system 200 is further comprised of other buses and devices not shown. It will be well understood. Logic 720 is coupled to CPU 710 via bus 719, including providing access to system memory 740 to CPU 710 and controlling CPU 710 in connection with this access. Performing various functions in support of the CPU 710, the logic 720 is also coupled to the system memory 740 via a bus 749 and a memory controller 722 in the logic 720. In addition, logic 720 provides access to other devices that make up computer system 700, such as device 750, which may include bus interface 727 and logic within logic 720. It is connected to the computer system 700 via a bus 759 and a bus interface 757 in the device 750.

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회 이상 판독할 수 있다.The CPU 710 may transmit a block of data from the data storage location 746 allocated in the system memory 740 to the data storage location 766 assigned in the device storage 760 of the device 750. Executes a series of instructions 712 stored in system memory 740 to program 730. The CPU 710 records various parameters of the transfer that will occur at the memory location in the DMA transfer parameter storage location 743 allocated in the system memory 740. Such parameters include data storage locations 746, 766, a value indicating the amount of data to be transferred, and a value indicating that a transmission status will be provided to the DMA transfer status storage location 764 assigned within device storage 760. Although it can do it, it is not limited only to these. The CPU 710 also controls one or more parameter registers 733 in the DMA controller controller 730 as a value specifying the start address of the DMA transfer parameter storage location 743 and as one or more triggers for the transfer to occur. Allows writing to the value in bits. DMA controller 730 then executes the transfer. During the execution of this transfer, the CPU 710 and / or device 750 may determine whether the DMA controller 730 has written a value to the DMA transfer status storage location 764 indicating that the transfer is complete. The storage location 764 can be read one or more times.

CPU(710)는 또한 시스템 메모리(740) 내에 할당된 데이터 저장소 위치(748)에 디바이스(750) 내의 디바이스 저장소(760) 내에 할당된 데이터 저장소 위치(768)로부터의 데이터 블록을 전송하도록 디바이스(750)를 프로그램하게 하는 일련의 명령들(712) 등을 실행한다. CPU(710)는 일어날 전송의 여러 파라미터들을 디바이스 전송 파라미터 레지스터들(768)에 기입한다. 그러한 파라미터들로는 데이터 저장소 위치들(768, 748)의 시작 어드레스들과 전송될 데이터의 양을 나타내는 값을 포함할 수 있지만 이들로 한정되지는 않는다. 그런 다음 디바이스(750)는 전송을 실행한다. The CPU 710 also transfers the data block from the data storage location 768 assigned within the device storage 760 within the device 750 to the data storage location 748 assigned within the system memory 740. Executes a series of instructions 712, etc. The CPU 710 writes various parameters of the transfer to occur in the device transfer parameter registers 768. Such parameters may include, but are not limited to, starting addresses of data storage locations 768 and 748 and values indicative of the amount of data to be transmitted. Device 750 then executes the transmission.

시스템 메모리(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)로부터 데이터의 다른 부분을 판독할 수 있다.Use DMA controller 730 to transfer data from system memory 740 to device 750, and bus mastering of device 750 to transfer data from device 750 to system memory 740. Using the functionality may provide greater efficiency in the movement of data blocks than would be possible by using only either the DMA controller 730 or the device 750 to perform these two transfers. In this manner, each transfer is performed as one or more write operations via bus 759, using write buffers 728, 758 that the corresponding bus interface 727, 757 can provide. Use of write buffer 728 allows data writes to device storage 760 via bus 759 by DMA controller 730 to be buffered or " posted, " When a portion of the data propagates through device storage 760 via DMA controller 730 may read another portion of data from system memory 740. Thus, use of the write buffer 758 by the bus mastering functions of the device 750 allows data writes to the system memory 740 via the bus 759 by the device 750 to also be “posted”. Thus, when a portion of the data propagates from the write buffer 758 through the bus 759 toward the system memory 740, the device 750 may read another portion of the data from the device storage 760.

소정의 실시예들에서, DMA 컨트롤러(730) 및 디바이스(750)의 버스 마스터링 기능의 조합의 이러한 이용은 디바이스(750)에 대응하는 디바이스 드라이버에 의해 제공된 일련의 명령들을 실행하는 CPU(710)에 의해 유발될 것이다. 그러한 디바이스 드라이버는 시스템 메모리(740)로부터 데이터를 판독하기 위해 디바이스(750)의 버스 마스터링 기능들의 이용을 회피하고, 디바이스 저장소(760)로부터 데이터를 판독하기 위해 DMA 컨트롤러(730)의 이용을 회피함으로써 디바이스(750) 내의 디바이스 저장소(760)와 시스템 메모리(740) 사이의 데이터 전송의 효율을 증대시키기 위해 컴퓨터(700)의 정상 동작 중에 CPU(710)에 의해 또한 실행되는 운영 시스템과 상호작용할 수 있다. In certain embodiments, this use of the combination of the DMA controller 730 and the bus mastering function of the device 750 may result in the CPU 710 executing a series of instructions provided by the device driver corresponding to the device 750. Will be caused by Such a device driver avoids the use of bus mastering functions of device 750 to read data from system memory 740 and avoids the use of DMA controller 730 to read data from device storage 760. Thereby interacting with an operating system that is also executed by the CPU 710 during normal operation of the computer 700 to increase the efficiency of data transfer between the device storage 760 and the system memory 740 in the device 750. have.

도 8은 실시예의 순서도이다. 810에서, 전송될 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 전송될 데이터의 양과, 전송 상태가 기록될 상태 위치의 베이스 어드레스는 모두 DMA 레지스터들이나 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 DMA 전송 실행을 시작하도록 신호되고, 820에서 전송을 실행한다. 830에서, 전송이 실행될 때, CPU 또는 다른 디바이스가 DMA 컨트롤러가 상태를 기록할 상태 위치로부터 전송의 상태를 판독한다. 840에서, DMA 컨트롤러가 전송이 왼료되었음을 나타내는 상태가 기록될 상태 위치에 아직 값을 기록하지 않았다면 830에서 또 하나의 상태 판독이 일어난다. 그렇지 않고, DMA 컨트롤러가 전송이 완료되었음을 나타내는 상태가 기록될 상태 위치에 값을 기록하였다면, 종료된다. 8 is a flowchart of an embodiment. At 810, the base address of the source and destination locations of the data to be transferred, the amount of data to be transferred, and the base address of the status location to which the transfer status is to be written are all provided to the DMA controller via DMA registers or other mechanism. The DMA controller is signaled to begin DMA transfer execution and executes the transfer at 820. At 830, when the transfer is executed, the CPU or other device reads the state of the transfer from the state location where the DMA controller will write the state. At 840, another status readout occurs at 830 if the DMA controller has not yet recorded a value at the status location where the status indicating that the transfer has completed has been recorded. Otherwise, if the DMA controller has recorded a value in the status position where the status indicating that the transfer is completed is to be recorded, it ends.

도 9는 데이터 블록의 전송의 다른 예의 순서도이다. 910에서, 전송 파라미터는 전송될 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 전송될 데이터의 양과, 전송 상태가 기록될 상태 위치의 베이스 어드레스는 모두 시스템 메모리 또는 다른 메모리 디바이스 또는 버퍼처럼 어드레스가능한 메모리 내의 파라미터 위치에 파라미터 위치에 기입된다. 920에서는, 910에서 전송 파라미터들이 기입된 파라미터 위치의 베이스 어드레스가 DMA 레지스터 또는 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 전송 실행을 시작하도록 신호되고, 930에서 전송을 실행한다. 940에서, 전송이 실행될 때, CPU 또는 다른 디바이스가 DMA 컨트롤러가 상태를 기록할 어드레스가능한 상태 위치로부터 전송의 상태를 판독한다. 950에서, DMA 컨트롤러가 전송이 왼료되었음을 나타내는 상태가 기록될 상태 위치에 아직 값을 기록하지 않았다면 940에서 또 하나의 상태 판독이 일어난다. 그렇지 않고, DMA 컨트롤러가 전송이 완료되었음을 나타내는 상태가 기록될 상태 위치에 값을 기록하였다면, 종료된다. 9 is a flowchart of another example of transmission of a data block. At 910, the transfer parameter is the base address of the source and destination locations of the data to be transferred, the amount of data to be transferred, and the base address of the status location to which the transfer status is to be written are all addressable memory, such as system memory or another memory device or buffer. The parameter position is written to the parameter position in the parameter position. At 920, the base address of the parameter location at which the transmission parameters are written is provided to the DMA controller via a DMA register or other mechanism at 910. The DMA controller is signaled to start the transfer execution and executes the transfer at 930. At 940, when the transfer is performed, the CPU or other device reads the state of the transfer from the addressable state location where the DMA controller will write the state. At 950, another status readout occurs at 940 if the DMA controller has not yet recorded a value at the status location where the status indicating that the transfer has completed has been recorded. Otherwise, if the DMA controller has recorded a value in the status position where the status indicating that the transfer is completed is to be recorded, it ends.

도 10은 실시예의 순서도이다. 1010에서, 데이터의 소스와 데스티네이션 위치들의 베이스 어드레스와, 데이터의 양과, 상태 위치들의 베이스 어드레스와 같은 파라미터의 세트들이 다수의 전송에 대한 다수의 파라미터 위치들에 기입되는데, 다수의 전송 위치의 각각은 수행될 다수의 전송 각각에 대응한다. 1020에서, 전송 파라미터들이 기입된 다수의 파라미터 위치들중 첫번째 위치의 베이스 어드레스는 DMA 레지스터들이나 다른 메카니즘을 통해 DMA 컨트롤러에 제공된다. DMA 컨트롤러는 DMA 전송의 실행을 시작하도록 신호되고, 1030에서 전송을 시작하고, 1030에서 DMA 전송이 완료될 때 DMA 전송의 완료를 나타내는 상태가 1040에서 그 전송에 대응하는 상태 위치에 기입된다. 750에서, 아직 수행되지 않은 다른 전송에 대해 파라미터들로 다른 파라미터 위치의 표시가 있다면, 1030에서 전송이 실행된다. 그렇지 않고, 아직 수행되지 않은 전송에 대응하는 파라미터 위치가 더 이상 없다면, 종료된다.10 is a flowchart of an embodiment. At 1010, a set of parameters, such as the base address of the source and destination locations of the data, the amount of data, and the base address of the status locations, is written to the multiple parameter locations for multiple transmissions, each of the multiple transmission locations. Corresponds to each of the plurality of transmissions to be performed. At 1020, the base address of the first of the plurality of parameter positions for which transmission parameters have been written is provided to the DMA controller via DMA registers or other mechanism. The DMA controller is signaled to start execution of the DMA transfer, starts transfer at 1030, and at 1030 a state indicating completion of the DMA transfer is written to the state location corresponding to that transfer at 1030. At 750, if there is an indication of another parameter location as parameters for other transmissions that have not yet been performed, at 1030 the transmission is performed. Otherwise, if there are no more parameter positions corresponding to transmissions that have not yet been performed, it is terminated.

다수의 전송 파라미터 위치들이 다수의 전송의 실행의 지원에 할당되는 상술항 실시예들 각각에서, 전송 파라미터 위치들이 원형 또는 "FIFO-유사" 방식으로 사용될 수 있어서 파라미터 위치들이 새로운 전송을 위해 반복적으로 재사용되도록 루프처럼 이용되는 실시예들의 변형들이 있을 수 있다. 전송 파라미터 위치들이 DMA 컨트롤러를 새로운 전송 파라미터 위치가 발견될 수 있는 베이스 어드레스로 향하도록 포인터들을 채용하는 경우, 그러한 포인터들은 "최종" 전송 파라미터 위치였던 것의 포인터가 "최초" 전송 파라미터 위치였던 것을 포인트하도록 이용될 수 있다. 전송 파라미터 위치들이 포인터들을 채용하지 않고, 미리 정해진 인터벌로 메모리 디바이스(또는 저장 위치들을 제공하는 다른 디바이스)의 어드레스가능한 공간 내에 위치되는 것에 의존하는 경우, DMA 컨트롤러는 어느 전송 파라미터 위치가 전송 파라미터 위치들의 체인 내의 최종 것인지를 나타내는 지시가 제공되어 DMA 컨트롤러가 최초의 것으로 "루프 백(loop back)"할 수 있을 것이다. In each of the preceding embodiments, where multiple transmission parameter locations are assigned to support the execution of multiple transmissions, the transmission parameter locations can be used in a circular or "FIFO-like" manner so that the parameter locations are reused repeatedly for new transmissions. There may be variations of the embodiments used as a loop if possible. If the transmission parameter locations employ pointers to point the DMA controller to the base address where a new transmission parameter location can be found, then those pointers point to the point at which the "final" transmission parameter location was the "first" transmission parameter location. Can be used. If the transmission parameter locations do not employ pointers and rely on being located within the addressable space of the memory device (or another device providing storage locations) at predetermined intervals, the DMA controller determines that which transmission parameter location is the An indication of whether it is final in the chain may be provided so that the DMA controller can "loop back" to the first one.

본 발명은 바람직한 실시예들과 관련하여 설명되었다. 상술한 설명에 견지에서 많은 다른 대안적인 실시예들, 변경들, 변형들, 및 이용들이 가능함을 당업자는 잘 알 것이다. 당업자는 본 발명이 오디오/비디오 오락 디바이스들, 차량 내의 컨트롤러 디바이스들, 전자 회로에 의해 제어되는 기기들과 같은 컴퓨터 시스템 이외의 다른 전자 디바이스들의 지원에 실시될 수 있다는 것을 이해할 것이다. The present invention has been described in connection with preferred embodiments. Those skilled in the art will recognize that many other alternative embodiments, modifications, variations, and uses are possible in light of the above description. Those skilled in the art will appreciate that the present invention may be practiced in support of electronic devices other than a computer system such as audio / video entertainment devices, controller devices in a vehicle, appliances controlled by electronic circuitry.

Claims (15)

전송될 데이터 블록을 갖는 소스 데이터 위치가 할당된 제1 메모리 디바이스;A first memory device assigned a source data location having a block of data to be transferred; 전송될 상기 데이터 블록에 대한 목적 데이터 위치가 할당된 제2 메모리 디바이스;A second memory device assigned a destination data location for the block of data to be transmitted; 상기 제1 및 제2 메모리 디바이스들에 연결되고 머신 판독 가능 명령어를 실행할 수 있는 제어 디바이스;A control device coupled to the first and second memory devices and capable of executing machine readable instructions; 상기 제어 디바이스와 상기 제1 및 제2 디바이스들 모두에 연결되는 DMA 컨트롤러 - 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 소스 데이터 위치로부터 상기 목적 데이터 위치까지의 데이터 블록의 전송 상태를 표시하는 값을 기입하는 상태 위치의 베이스 어드레스를 지정하는 값을 기입하는 적어도 하나의 전송 상태 위치 베이스 어드레스 레지스터를 가짐 -A DMA controller coupled to the control device and both the first and second devices, the DMA controller writing a value in which the control device indicates a transfer status of a data block from the source data location to the destination data location Has at least one transfer status location base address register which writes a value specifying the base address of the status location 를 포함하는 장치.Device comprising a. 제1항에 있어서, 상기 DMA 컨트롤러는, 상기 제어 디바이스가 적어도 상기 소스 데이터 위치의 베이스 어드레스, 상기 목적 데이터 위치의 베이스 어드레스, 및 전송될 상기 데이터 블록을 구성하는 데이터량(quantity)을 기입하는 파라미터 레지스터들을 갖는 장치.2. The apparatus of claim 1, wherein the DMA controller writes a parameter in which the control device writes at least a base address of the source data location, a base address of the destination data location, and a data quantity constituting the data block to be transferred. Device with registers. 제1항에 있어서, 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 데이터 블록의 전송 파라미터를 획득하는 파라미터 위치의 상기 베이스 어드레스를 지정하는 값을 기입하는 적어도 하나의 전송 파라미터 위치 베이스 어드레스 레지스터를 갖는 장치.2. The apparatus of claim 1, wherein the DMA controller has at least one transfer parameter position base address register that writes a value specifying the base address of a parameter position at which the control device obtains a transfer parameter of the data block. 제3항에 있어서, 상기 DMA 컨트롤러가 상기 전송 파라미터를 획득하는 상기 파라미터 위치는 적어도 상기 소스 데이터 위치의 상기 베이스 어드레스, 상기 목적 데이터 위치의 상기 베이스 어드레스, 및 전송될 상기 데이터 블록을 구성하는 상기 데이터량을 저장하는 장치.4. The apparatus of claim 3, wherein the parameter location at which the DMA controller obtains the transmission parameter comprises at least the base address of the source data location, the base address of the destination data location, and the data constituting the block of data to be transferred. Device for storing quantities. 제1 전송에서 전송될 데이터 블록을 갖는 소스 데이터 위치가 할당된 제1 메모리 디바이스;A first memory device assigned a source data location having a data block to be transmitted in a first transmission; 제1 전송에서 전송될 상기 데이터 블록에 대한 목적 데이터 위치가 할당된 제2 메모리 디바이스;A second memory device assigned a destination data location for the block of data to be transmitted in a first transmission; 상기 제1 및 제2 메모리 디바이스들에 연결되고 머신 판독 가능 명령어를 실행할 수 있는 제어 디바이스;A control device coupled to the first and second memory devices and capable of executing machine readable instructions; 상기 제어 디바이스와 상기 제1 및 제2 디바이스들 모두에 연결된 DMA 컨트롤러 - 상기 DMA 컨트롤러는, 상기 제어 디바이스가 상기 제1 전송의 파라미터를 획득하는 제1 파라미터 위치의 베이스 어드레스를 지정하는 값을 기입하는 전송 파라미터 위치 베이스 어드레스 레지스터를 가짐 -A DMA controller coupled to the control device and both the first and second devices, the DMA controller writing a value specifying a base address of a first parameter location from which the control device obtains a parameter of the first transfer; With transfer parameter position base address register- 를 포함하는 장치.Device comprising a. 제5항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 적어도 상기 소스 데이터 위치의 베이스 어드레스, 상기 목적 데이터 위치의 베이스 어드레스, 및 상기 제1 전송에서 전송될 상기 데이터 블록을 구성하는 상기 데이터량을 저장하는 장치.6. The method of claim 5, wherein the first parameter location at which the DMA controller obtains the first transmission parameter is at least a base address of the source data location, a base address of the destination data location, and the And storing the amount of data constituting a data block. 제6항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 상기 제어 디바이스가 상기 제1 전송 상태를 표시하는 값을 기입하는 제1 전송 상태 위치의 베이스 어드레스를 더 저장하는 장치.7. The method of claim 6, wherein the first parameter position at which the DMA controller obtains the first transfer parameter further comprises a base address of a first transfer state position at which the control device writes a value indicating the first transfer state. Device for storing. 제6항에 있어서, 상기 DMA 컨트롤러가 상기 제1 전송 파라미터를 획득하는 상기 제1 파라미터 위치는 상기 DMA 컨트롤러가 제2 전송 파라미터를 획득하는 제2 파라미터 위치의 베이스 어드레스를 더 저장하는 장치.7. The apparatus of claim 6, wherein the first parameter location from which the DMA controller obtains the first transmission parameter further stores a base address of a second parameter location from which the DMA controller obtains a second transmission parameter. 제8항에 있어서, 상기 DMA 컨트롤러가 상기 제2 전송 파라미터를 획득하는 상기 제2 파라미터 위치는 상기 제어 디바이스가 상기 제2 전송 상태를 표시하는 값을 기입하는 제2 전송 상태 위치의 베이스 어드레스를 더 저장하는 장치.9. The method of claim 8, wherein the second parameter position at which the DMA controller obtains the second transfer parameter further comprises a base address of a second transfer state position at which the control device writes a value indicating the second transfer state. Device for storing. DMA 컨트롤러에 의해 수행될 제1 데이터 블록의 전송에 대한 제1 파라미터 세트를 메모리 디바이스 내에 할당된 제1 전송 파라미터 위치에 기입하는 단계 - 상기 제1 데이터 블록의 전송에 대한 상기 파라미터들은 제1 전송 상태 위치의 베이스 어드레스를 포함함 -;Writing a first set of parameters for a transfer of a first block of data to be performed by a DMA controller at a first transfer parameter position assigned in a memory device, wherein the parameters for transfer of the first block of data are in a first transfer state. Includes the base address of the location; 상기 제1 전송 파라미터 위치의 베이스 어드레스를 상기 DMA 컨트롤러의 레지스터 내에 기입하는 단계;Writing a base address of the first transfer parameter location into a register of the DMA controller; 수행될 상기 데이트 블록의 상기 전송 파라미터를 획득하기 위해서 상기 제1 전송 파라미터 위치를 액세스함으로써 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거하는 단계; 및Triggering the DMA controller to start performing the transfer of the first data block by accessing the first transfer parameter location to obtain the transfer parameter of the data block to be performed; And DMA 컨트롤러가, 상기 제1 데이터 블록의 상기 전송이 완료되었음을 표시하는 값을 상기 제1 전송 상태 위치 내에 기입했는지 여부를 판단하기 위해서 상기 제1 전송 상태 위치를 액세스하는 단계Accessing the first transfer state location by a DMA controller to determine whether or not a value indicating within the first transfer state location has written a value indicating that the transfer of the first data block is complete; 를 포함하는 방법.How to include. 제10항에 있어서, 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거 하는 단계는, The method of claim 10, wherein triggering the DMA controller to start performing the transfer of the first data block comprises: 상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 판독되는 제1 데이터 소스 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하는 단계 - 상기 제1 데이터 소스 위치는 제1 메모리 디바이스 내에 할당됨 - ;Obtaining a base address of a first data source location from which the first data block is read during the transfer of the first data block from the first transfer parameter, wherein the first data source location is assigned in a first memory device; ; 상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 기입되는 제1 데이터 목적 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하는 단계 - 상기 제1 데이터 목적 위치는 제2 메모리 디바이스 내에 할당됨 - ; 및Obtaining from the first transfer parameter a base address of a first data destination location to which the first data block is written during the transmission of the first data block, the first data destination location being assigned in a second memory device; ; And 전송될 상기 제1 데이터 블록으로 구성되는 데이터량을 지정하는 값을 상기 제1 전송 파라미터로부터 획득하는 단계Obtaining a value from the first transmission parameter that specifies a data amount consisting of the first data block to be transmitted 를 포함하는 방법.How to include. 제10항에 있어서, 제2 데이터 블록의 전송에 대한 제2 파라미터 세트를 갖는 제2 전송 파라미터 위치의 베이스 어드레스를 획득하기 위해 상기 제1 전송 파라미터 위치를 액세스하는 단계를 더 포함하는 방법.12. The method of claim 10, further comprising accessing the first transmission parameter location to obtain a base address of a second transmission parameter location having a second parameter set for transmission of a second data block. 전자 디바이스 내에서 프로세서에 의해 수행될 때, 상기 전자 디바이스로 하여금,When performed by a processor within an electronic device, causes the electronic device to: DMA 컨트롤러에 의해 수행될 제1 데이터 블록의 전송에 대한 제1 파라미터 세트를 메모리 디바이스 내에 할당된 제1 전송 파라미터 위치에 기입하고,Write a first set of parameters for the transfer of a first block of data to be performed by the DMA controller at a first transfer parameter position assigned in the memory device 상기 제1 전송 파라미터 위치의 베이스 어드레스를 상기 DMA 컨트롤러의 레지스터에 기입하고 - 여기서, 상기 제1 데이터 블록의 전송에 대한 상기 파라미터는 제1 전송 상태 위치의 베이스 어드레스로 구성됨 -, Write a base address of the first transfer parameter position into a register of the DMA controller, wherein the parameter for the transfer of the first data block consists of a base address of a first transfer state position; 수행될 상기 데이트 블록의 상기 전송 파라미터를 획득하기 위해서 상기 제1 전송 파라미터 위치를 액세스함으로써 상기 DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송을 수행하기 시작하도록 트리거하며,Triggering the DMA controller to start performing the transfer of the first data block by accessing the first transfer parameter location to obtain the transfer parameter of the data block to be performed, DMA 컨트롤러가 상기 제1 데이터 블록의 상기 전송이 완료되었음을 표시하는 값을 상기 제1 전송 상태 위치 내에 기입했는지 여부를 판단하기 위해서 상기 제1 전송 상태를 액세스하게 하는 코드를 포함하는 머신 판독 가능 매체.Code for causing a DMA controller to access the first transfer state to determine whether a value indicating within the first transfer state location that the transfer of the first data block has completed is written. 제13항에 있어서, 상기 전자 디바이스는 추가로,The device of claim 13, wherein the electronic device is further: 상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 판독되는 제1 데이터 소스 위치의 베이스 어드레스를 상기 제1 전송 파라미터 위치로부터 획득하고 - 여기서, 상기 제1 데이터 소스 위치는 제1 메모리 디바이스 내에 할당됨 -,Obtain a base address of a first data source location from which the first data block is read during the transfer of the first data block from the first transmission parameter location, wherein the first data source location is allocated within a first memory device -, 상기 제1 데이터 블록의 전송 동안 상기 제1 데이터 블록이 기입되는 제1 데이터 목적 위치의 베이스 어드레스를 상기 제1 전송 파라미터로부터 획득하고 - 여기서, 상기 제1 데이터 목적 위치는 제2 메모리 디바이스 내에 할당됨 -,Obtain a base address of a first data destination location from which the first data block is written during the transmission of the first data block from the first transmission parameter, wherein the first data destination location is assigned in a second memory device -, 전송될 상기 제1 데이터 블록이 구성되는 데이터량을 지정하는 값을 상기 제1 전송 파라미터로부터 획득하게 하는 머신 판독 가능 매체.Machine-readable medium for obtaining a value from said first transmission parameter that specifies the amount of data for which said first block of data to be transmitted is comprised. 제13항에 있어서, 제2 데이터 블록의 전송에 대한 제2 파라미터 세트를 갖는 제2 전송 파라미터 위치의 베이스 어드레스를 획득하기 위해 상기 제1 전송 파라미터를 액세스하는 것을 더 포함하는 머신 판독 가능 매체.14. The machine-readable medium of claim 13, further comprising accessing the first transmission parameter to obtain a base address of a second transmission parameter location having a second parameter set for transmission of a second data block.
KR1020057025327A 2003-06-30 2004-06-23 Readdressable virtual dma control and status registers KR100868395B1 (en)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=33541181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057025327A KR100868395B1 (en) 2003-06-30 2004-06-23 Readdressable virtual dma control and status registers

Country Status (9)

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

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
US7579683B1 (en) 2004-06-29 2009-08-25 National Semiconductor Corporation Memory interface optimized for stacked configurations
EP1617335A1 (en) * 2004-07-12 2006-01-18 Stmicroelectronics SA Method of programming a DMA controller in an on-chip system and the associated on-chip system
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 (en) * 2007-03-16 2009-04-06 삼성전자주식회사 System including virtual dma
DE102007029833B4 (en) * 2007-06-28 2019-03-28 Texas Instruments Deutschland Gmbh A microcontroller with data modification module and system comprising a data modification module
US7822885B2 (en) * 2007-10-16 2010-10-26 Applied Micro Circuits Corporation Channel-less multithreaded DMA controller
JP5268841B2 (en) * 2009-09-11 2013-08-21 三菱電機株式会社 Information processing device
JP5527512B2 (en) * 2009-09-28 2014-06-18 ソニー株式会社 Bus protocol conversion device and bus protocol conversion method
JP5351339B2 (en) * 2010-06-07 2013-11-27 株式会社日立製作所 Data transfer apparatus and data transfer method
TWI465905B (en) 2010-09-22 2014-12-21 Toshiba Kk Memory system having high data transfer efficiency and host controller
US8959278B2 (en) * 2011-05-12 2015-02-17 Freescale Semiconductor, Inc. System and method for scalable movement and replication of data
DE102016211768A1 (en) * 2016-06-29 2018-01-04 Robert Bosch Gmbh Memory direct access control device and method of operation therefor
CN111797046B (en) * 2017-09-27 2022-04-08 成都忆芯科技有限公司 PCIe controller and data transmission method thereof
CN109739805B (en) * 2018-12-27 2023-06-23 北京中星微电子有限公司 Method for configuring parameters of module and device for configuring parameters of module
CN113032300A (en) * 2021-03-23 2021-06-25 安谋科技(中国)有限公司 Data transmission control method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04177445A (en) * 1990-11-08 1992-06-24 Nec Corp Descriptor control system
JPH04324561A (en) * 1991-04-25 1992-11-13 Shikoku Nippon Denki Software Kk Dma information polling controller
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
JPH0696007A (en) * 1992-09-17 1994-04-08 Fujitsu Ltd Dma transfer system
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 (en) * 1995-12-30 1998-12-15 김광호 Dma control apparatus
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 (en) * 1998-10-28 2001-09-10 日本電気株式会社 DMA control method and apparatus
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
CN1813248A (en) 2006-08-02
CN100421097C (en) 2008-09-24
DE602004010399T2 (en) 2008-10-09
TW200508876A (en) 2005-03-01
JP2011204269A (en) 2011-10-13
EP1639481B1 (en) 2007-11-28
JP2007520770A (en) 2007-07-26
JP5275414B2 (en) 2013-08-28
ATE379812T1 (en) 2007-12-15
US7120708B2 (en) 2006-10-10
TWI296762B (en) 2008-05-11
KR100868395B1 (en) 2008-11-11
EP1639481A1 (en) 2006-03-29
DE602004010399D1 (en) 2008-01-10
JP4800207B2 (en) 2011-10-26
US20040267979A1 (en) 2004-12-30
WO2005006201A1 (en) 2005-01-20

Similar Documents

Publication Publication Date Title
JP5275414B2 (en) Readable virtual DMA control and status register
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 (en) Method and apparatus for the prevention of race conditions during dynamic chaining operations
US5577230A (en) Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
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
JP2002140289A (en) Micro-controller dma operation with adjustable word size transfer and address array/increase
KR100615659B1 (en) A direct memory access engine for supporting multiple virtual direct memory access channels
JPH11501751A (en) Method and apparatus for controlling linear and toggle mode burst access sequences using toggle mode increment logic
US20100306421A1 (en) Dma transfer device
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 (en) DMAC issue mechanism by streaming ID method
US20080209085A1 (en) Semiconductor device and dma transfer method
JP2005165508A (en) Direct memory access controller
JP2522412B2 (en) Communication method between programmable controller and input / output device
JP3077807B2 (en) Microcomputer system
JP3353368B2 (en) Bus relay device
JPH1185673A (en) Method and device for controlling shared bus
KR0145932B1 (en) Dma controller in high speed computer system
JPH07146814A (en) Memory device
JP2593935B2 (en) Direct memory access device
JPH0764849A (en) Shared memory controller for processor
JPH06214939A (en) Dma controller

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