KR0142175B1 - 다중 채널 디엠에이 동작을 지원하기 위한 회로 아키텍처 - Google Patents

다중 채널 디엠에이 동작을 지원하기 위한 회로 아키텍처

Info

Publication number
KR0142175B1
KR0142175B1 KR1019920025767A KR920025767A KR0142175B1 KR 0142175 B1 KR0142175 B1 KR 0142175B1 KR 1019920025767 A KR1019920025767 A KR 1019920025767A KR 920025767 A KR920025767 A KR 920025767A KR 0142175 B1 KR0142175 B1 KR 0142175B1
Authority
KR
South Korea
Prior art keywords
channel
data
dual
port memory
read
Prior art date
Application number
KR1019920025767A
Other languages
English (en)
Other versions
KR930014067A (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 KR930014067A publication Critical patent/KR930014067A/ko
Application granted granted Critical
Publication of KR0142175B1 publication Critical patent/KR0142175B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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

Abstract

각 채널에 대한 데이터 전송을 슬라이스의 시퀀스로 분할하고 슬라이스-바이-슬라이스 기준으로 인터리빙함으로써 다중 DMA채널을 지원하는 방법 및 장치, 전송 자원의 제어는 DMA채널 사이에서 이동될 수 있지만, 각 채널에 대한 데이터 슬라이스의 정리는 보존된다.
본 발명은 또한 다중 인터리빙 DMA채널을 지원할 수 있는 회로 아키텍처를 개시하고 있다. 회로 아키텍처는 이중-포트메모리, 채널 시퀀서 및 채널 인터리브 재어를 구비한다. 이중-포트메모리는 채널을 통해 전송될 테이터의 슬라이스를 기억한다. 채널 시퀀서는 이중-포트메모리에서 데이터 슬라이스의 채널 정리를 유지한다. 채널 인터리브 제어 유니트는 채널 인터리브크기, 현재 데이터 전송 계수 및 채널당 전체 전송 계수를 모니터함으로써 채널이 그들의 데이터 전송을 인터리브하게한다. 제 2채널은 제 1채널이 그의 채널 인터리브 크기에 도달했을 때 또는 제 1채널이 그의 요구된 전채 전송 계수를 전송하였을 때 제 1채널과 동일한 매체를 통해 데이터를 전송하게되어 효율적인 버스이용을 제공한다.

Description

다중채널 DMA 동작을 지원하기 위한 회로 아키텍처
제1도는 DMA 제어기 모듈의 도형,
제2도는 DMA 제어기 모듈을 갖는 컴퓨터 블록도,
제3도는 본발명의 사상을 포함하는 다중 인터리빙 DMA 채널을 지원하기 위한 회로 아키텍처의 도형,
제4도는 본발명의 사상을 포함하는 회로 아키텍처의 도형,
제5도는 바람직한 실리예에서 회로 아키텍처의 도형,
제6도는 예시적인 기입동작에서 회로 아키텍처의 도형
제7도는 채널 인터리빙 과정을 도시하는 흐름도,
본 발명은 다음의 계속중인 특허출원에 관련된 것이다:
METHOD OF AND APPARATUS FOR INTERLEAVING MULTIPLE-CHANNEL DMA OPERATIONS, 일련번호―; METHOD AND APPARATUS FOR THE CHAINING OF DMA OPERATIONS, 일련번호―; 및 METHOD AND APPARATUS FOR THE PREVENTION OF RACE CONDITIONS DURING DYNAMIC CHAINING OPERATIONS, 일련번호―; 이들 모두는 본 특허출현과 같은 날에 출원되었다. 본발명은 컴퓨터 시스템에서 테이터 전송동작 특히 시스템에서 DMA 동작에 관한 것이다.
다중 데이터처리 디바이스를 갖는 컴퓨터 시스템에서, 데이터 전송이 1디바이스와 다른 것 사이 뿐만아니라 타임-멀티플렉싱 방식으로 1디바이스와 다수의 다른 디바이스 사이에서 발생하여 시스템 효율을 달성한다. 예를들어, 중앙처리장치(CPU)는 CPU를 완전히 이용하기 위해 데이터 전송활동을 다른 디바이스와 타임-멀티플렉싱 하면서 네트워크-디바이스에 데이터를 전송할 수 있다. 여러 가지 디바이스로부터의 데이터 전송속도가 상이할 수 있기 때문에, 다중 디바이스의 테이터 전송속도를 최적화하기 위해 버퍼가 때때로 각 디바이스와 CPU사이에 매게체로서 구현된다. 버퍼로써, 데이터는 전송 자원이 이용가능할 때 까지 또는 전송 목적지가 자유로울 때, 일시적으로 기억될 수 있다. 각 디바이스에 대한 버퍼를 구현하는 것은 더 정교한 시스템이 때때로 요구하는 것 처럼 CPU와 상호 작용하는 디바이스가 더 많을 때 집적회로에 대해 문제를 발생한다. 집적회로에서, 다이크기 제한은 더 많은 버퍼 및 그들의 연관되 디코드 논리가 추가되는 것을 허용하지 않는다.
문제는 컴퓨터 시스템에서 다중 채널에서 데이터를 전송하는 DMA 동작에 의해 도시될 수 있다. DMA 동작은 많은 양의 데이터가 이동되어야할 때 컴퓨터 입력/ 출력 (I/O) 동작에 사용되는 기술이다. DMA는 전형적으로 시스템 버스상에 추가 모듈을 포함한다. 제 1도에 보이는 것과 같은 DMA모듈(100)은 CPU(도시되지않음)를 에뮬레이크하고 CPU로부터 시스템버스의 제어를 넘겨 받을 수 있다. DMA 동작은 다음과 같이 이루어진다: CPU는 데이터블록을 판독하거나 기입하기를 원할 때, DMA모듈(100)에게 명령을 발한다. 명령은 판독(101) 또는 기입 (102)이 요구되고 있는지, 관련된 I/O 디바이스의 어드레스(103), 판독 및 기입할 메모리에서의 사직장소, 및 판독 또는 기업된 워드의 수(105)에 관한 정보를 포함한다.
CPU는 그리고나서 이 I/O 동작을 DMA모듈에 위임했기 때문에 다른 타스크를 계속하고 모듈은 타스크를 돌볼 것이다.
DMA 모듈은 이리하여 CPU를 통하지 않고 직접 메모리로부터 전체 데이터블록을 한번에 한워드씩 전송한다. 전송이 완료될 때, DMA모듈을 CPU에게 인터럽트 신호(110)를 보낸다. 따라서, CPU는 전송의 시작 및 끝에서만 관계할 필요가 있을뿐이다.
DMA 모듈은 테이터를 메모리로 그리고 메모리로부터 전송하기 위해 버스의 제어를 차지할 필요가 있다.
이 목적으로, DMA모듈은 CPU가 그것을 필요로하지 않을때에만 버스를 사용해야만 하거나 또는 DMA모듈은 CPU가 일시적으로 동작을 중단하게 하여햐한다. 이 DMA모듈이 수행하는 기능은 오직 데이터 전송이므로, 전송 시퀀스는 모듈회로로 하드와이어 될 수 있다. 더 높은 레벨에서 명령을 페치함으로써, 대역폭의 사용이 최소화될 수 있다. DMA 모듈은 버스에 의해 요구되는 이드레스 및 제어신호를 발생하는 능력을 가지고 있으므로, DMA 모듈은 전메모리 속도로 I/O동작을 수행할 수 있다.
오늘날의 효율적인 컴퓨터 시스템에서, DMA 동작은 또한 다양한 디바이스를 갖는 다중-채널 테이터 전송을 수행하여야 한다. 데이터 전송을 용이하게 하기 위해서, 독립되 버퍼가 DMA 채널에 할당된다. 그러나, DMA 채널의 수가 더 정교한 동작을 위해 증가하면서, 채널당 1버퍼 수법은 전적으로 비실용적이 아니면 그렇게 바람직스럽지 않은 것이다. 또한, FIFO(first-in, first-out) 버퍼와 같은 단일 버퍼가 다중 채널 DMA 동작을 위한 매개체로서의 역할을 할 수 있더라도, FIFO는 여전히 즉시 모든 데이터를 필요로 하는 한 채널이 또다른 채널의 데이터에 의해 저지될 때 병목하는 문제를 겪는다.
또한, 데이터가 FIFO로 전송되면서, FIFO는 충만하게 되어 FIFO에 있는 어떤 데이터가 판독될때까지 전송이 중지되게한다. 상기와 같은 이유로, 종래기술의 다중 채널 전송에서의 FIFO는 높은 대역폭 및 연속적인 동작을 달성할 수 있다.
다음에서 설명되는 것처럼, 본발명은 높은 대역폭 및 효율적인 자원이용을 달성하기 위해 상이한 채널로 부터의 전송 시퀀스를 인터리빙함으로써 다중 DMA 채널을 통해 데이터를 전송하는 방법 및 장치를 개시하고 있다.
또한 대역폭 및 시스템 효율을 최대로 하기 위해 다중-채널 DMA 전송을 지원하는 것과 관련해서 가장 유리하게 사용될 회로 아키텍처가 개시되어 있다.
그러므로, 다중 채널 DMA 동작을 지원하는 것이 본발명의 목적이다.
연속적인 동작의 흐름으로 다중채널 DMA 전송을 지원하는 것이 또한 본발명의 목적이다. 채녈을 인터리빙함으로써 높은 대역폭 다중 채널 DMA 전송을 달성하는 것이 본발명의 또 다른 목적이다.
다수의 인터리빙 DMA 채널과 관련되어 가장 유리하게 사용될 회로 아키텍터를 제공하는 것이 본발명의 또 다른 목적이다.
다수의 DMA 채널을 지원하기 위한 회로아키텍처에 각각의 채널에 대한 독립적인 판독 및 기입을 제공하는 것이 본발명의 또 다른 목적이다.
DMA 채널을 인터리빙하기 위해 효율적인 버스 이용을 달성하는 회로아키텍처를 제공하는 것이 본 발명의 또 다른 목적이다.
설명되는 바와같이, 본 발명은 각 채널에 대한 데이터 전송을 순차적이 데이터 슬라이스로 분할하여 슬라이스-바이-슬라이스 기준으로 전송을 인터리빙함으로써 대중-채널 DMA 동작을 지원하기 위한 방법 및 장치를 개시하고 있다.
전송 차원의 제어는 DMA 채널 사이에서 이동될 수 있지만, 각 채널에 대한 데이터 슬라이스의 정리는 보존된다.
본 발명은 또한 다중 이터리빙 DMA채널과 가장 유리하게 사용될 회로아키텍처를 개시하고 있다. 회로 아키텍처는 이중-포트메모리, 채널시퀀서 및 채널 인터리브 제어를 구비하고 있다. 이중-포트메모리는 채널을 통해 전송될 데이터의 슬라이스를 기억한다. 채널 시퀀서는 이중-포트메모리에서 데이터슬라이스의 채널정리를 유지한다. 채널인터리브 제어유니트는 채널이터리브크기, 현재데이터 전송계수 및 채널당전체계수를 모니터함으로써 채널이 그들의 데이터 전송을 인터리브하게 할 수 있다. 제 2채널은 제 1채널이 그의 채널인터리브 크기에 도달했을 때 또는 제 1채널이 그의 요구된 전체 전송계수를 전송했을 때 제 1채널과 동일한 매개체를 통해 데이터를 전송하는 것이 허용되어 효율적인 버스이용을 제공한다.
본 발명의 목적, 특징 및 장점은 다음의 상세한 설명으로부터 명백해질 것이다.
다음에 나오는 상세한 설명은 주로 알고리즘 및 컴퓨터메모리내의 데이터비트에 대한 연산의 기호적 표현으로써 제시된다. 이들 알고리즘적 설명 및 표현은 연구작업의 요지를 해당분야에 숙련되 다른 사람에게 가장 효율적으로 전달하기 위해 데이터처리분야에 숙련된 사람들에 의해 하용되는 수단이다.
알고리즘은 여기에서 그리고 일반적으로 원하는 결과에 이르는 모순없는 단계의 순서라고 관념된다. 이들 단계는 물리적 양의 물리적 조작을 요하는 것들이다. 통상적으로, 반드시는 아니더라도, 이들양은 기억, 전송, 결합, 비교 및 다르게 조작될 수 있는 전기 및 자기신호의 형태를 취한다. 주로 통용되는 이유로해서 이들 신호를 비트. 값, 요소, 기호, 문자, 용어 수자 또는 이와 비슷한 것으로 지칭하는 것이 때때로 편리하다는 것이 입증되고 있다. 그러나, 이들 및 유사한 용어의 모두는 적절한 물리량과 연관된 것이며 이들양에 붙여진 편리한 명칭에 불과하다는 것은 염두에 두어야 한다.
또한, 수행되는 조작은 때때로 인간에 의해 수행되는 정신적 작용과 공통적으로 연관된 더하기 또는 비교와 같은 용어로써 지칭된다. 인간의 이러한 능력은 본발명의 일부를 형성하는 여기에서 설명되는 동작의 어느것에 있어서나 대부분의 경우에 필요하지도 않고 바람직하지도 않다; 동작은 기계동작이다. 본발명의 동작을 수행하기위한 유용한 기계는 범용 디지털 컴퓨터 또는 다른 유사한 디바이스를 포함한다. 모든 경우에 있어서 컴퓨터를 운용하는데 있어서의 방법운용과 계산방법 자체사이의 구분을 염두에 두어야 한다. 본발명은 다른 원하는 물리적 신호를 발생하기 위해 전기 또는 다른(예를 들어, 기계적, 화학적)물리적 신호를 처리하는데 컴퓨터를 운용하기 위한 방법단계에 관한 것이다.
본 발명은 또한 이들 동작을 수행하기 위한 장치에 관한 것이다. 이들 장치는 요구되는 목적에 맞게 특수하게 구성될수도 있고 또는 컴퓨터에 기억된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성되는 범용 컴퓨터를 구비할 수 있다. 여기에서 제시되는 알고리즘은 특정한 컴퓨터 또는 다른 장치에 본래부터 관련된 것은 아니다. 특히, 여러 가지 범용기계가 여기에 나오는 사상에 따라 작성된 프로그램으로써 사용될 수도 있으며 또는 요구되는 방법단계를 수행하기 위해 더 전문화된 장치를 구성하는 것이 더 편리할 수도 있다. 다양한 이들 기계에 요구되는 구조가 하기의 설명에서 나타날 것이다.
여기에서 설명되는 여러 가지 과정을 수행하기 위한 어떤 특정한 프로그래밍 언어도 나타내지 않았다. 이것은 언급될 수 있는 언어가 모두 예외없이 이용가능한 것은 아니라는 사실에 일부 기인하고 있다. 특정 컴퓨터의 각 사용자는 그의 당장의 목적에 가장 적당한 언어를 알 것이다. 실제에서, 기계가 실행할 수 있는 옵젝트코스를 제공하는 어셈블리 언어로 본발명을 실질적으로 구현하는 것이 유용하다고 입증되었다. 예시적인 발명을 실시하는데 사용될 수 있는 컴퓨터 및 모니터 시스템은 많은 다양한 요소로 구성되기 때문에, 상세한 프로그램 리스팅은 제공되지 않았다. 여기에서 설명되고 첨부된 도면에 도시되는 동작 및 다른 과정은 통사의 지식을 가진 자가 예시 발명을 실시할 수 있도록 충분히 개시되어있다고 생각된다.
해당분야에 숙련된 사람은 잘 알겠지만, 본발명의 채널인터리빙 방법 및 장치는 데이터 전송 시퀀스를 슬라이스로 분할하여 슬라이스를 상이한 채널로부터 인터리빙함으로써 다중 채절전송이 질서있고 효율적인 방식으로 진행하게 한다. 본발명은 또한 슬라이스된 데이터가 그들의 각 채널을 통해 전송되도록 인터리빙 채널을 지원하기 위한 회로아키텍처를 개시하고 있다. 채널인터리빙 방법 및 장치는 이리하여 전송자원이 한 채널에 의해 사용되지 않을 때 다른 채널을 인터리빙함으로써 더나은 버스 이용 및 더높은 대역폭을 달성할 수 있다. 다음의 설명에서 설명의 목적상 특정한 메모리, 조직 및 아키텍처등이 본발며의 완벽한 이해를 제공하기 위해 기재된다. 그러나, 본 발명은 이들 특별한 상세사항 없이도 실시될 수 있다는 것은 해당분야에 숙련된 사람에게는 명백할 것이다. 다른 예에서 잘 알려진 회로는 본 발명을 불필요하게 가리지 않기위해 블록도로 도시되어 있다.
또한, 다음의 설명으로부터 명백하겠지만, 인터리빙 채널 방법 및 장치는 설명되는 독특한 회로아키텍처와 별개인 다른 버퍼링 방안을 이용할 수 있다. 유사하게 독특한 회로 아키텍처는 개시된 본 발명의 인터리빙 방법 및 장치외에 다른 다중-디바이스 전송과 연관되어 이용될 수 있다.
제2도를 참조하면, DMA 제어기를 갖는 컴퓨터 시스템이 블록도로 도시되어있다. DMA제어기 모듈(220)은 CPU(210)가 시스템버스(200)를 사용하고 있지 않을 때 시스템버스(200)를 사용하고 있지 않을 때 시스템버스(200)의 제어를 획득함으로써 메모리(240)와 주변장치(250)사이의 데이터 전송을 용이하게 한다.
DMA제어기 모듈(220)에 결합된 버퍼(230)는 데이터전송을 위한 데이터 버터링을 제공한다. 해당분야에 숙련된 사람은 알겠지만, 다중 DMA채널을 지원할 수 있는 아키텍처는 메모리(240)와 여러 주변장치(250)사이의 DMA동작의 성능을 현저하게 향상시킬 것이다.
이제 제7도를 참조하면, DMA채널 인터리빙 방법의 흐름도가 도시되어 있다. 최초에 채널(M)을 통해 데이터의 totle-transfer-count(TTC)를 전송하기 위한 DMA요구를 한다. TTC는 채널(M)로부터의 슬라이스가 동일한 전송 자원을 사용하기를 바라는 또 다른 채널로부터의 슬라이스와 인터리브될 수 있도록 전송 시퀀스가 2또는 그 이상의 별개의 슬라이스로 분할되어야 하는지를 결정하기 위해 채녈(M)의 소정의 channel-interleave-size(CIS)와 비교된다.
채널(M)로부터의 TTC가 그의 CIS보다 작거나 또는 같으면, 전송은 1슬라이스로 완료된다. DMA채널의 CIS는 또 다른 DMA채널이 제 1DMA 채널과 동일한 전송자원을 사용하여 인터리브할 수 있기전에 DMA채널이 전송할 필요가 있는 데이터의 양을 규정한다는 것을 유의해야 한다. 이리하여, 채널(M)이 TTC가 그의 CIS에 있을 때, 데이터는 제1슬라이스를 통해 손쉽게 전송될 수 있다.
채널(M)의 CIS가 그의 요구된 TTC보다 작으면, TTC의 전송은 CIS크기 데이터의 다중 슬라이스로 시간적 측면에서 분할되는데, 각각은 전송 자원을 통해 전송될 수 있다. 채널(M)에 대한 각 슬라이스의 전송후에, 전송 자원의 제어는 또다른 채널로부터의 또다른 슬라이스의 데이터가 인터리브하기 위해 이용가능하게 된다. 전송자원의 제어는 채널의 우선순위 중재방안에 의해 더 높은 우선 순위를 갖는 또다른 채널로 넘겨질 수 있는데, 이것은 회전 또는 고정된 기준에 따를 수 있다. 또다른 채널(N)이 채널(M)의 슬라이스후에 전송자원의 제어를 획득하면, 채널(N)로부터의 데이터 슬라이스는 전송자원을 사용하여 전송될 수 있다. 전송자원의 제어는 또한 각 슬라이스 후에 채널(N)로부터 더 높은 우선 순위를 갖는 다른 채널(존재한다면)로 넘어갈 것이다. 각 채널의 current-transfer-count(CTC)를 추적하기 위해 계수 메커니즘이 있어야 한다는 것은 해당 분야에 숙련된 사람에게는 명백할 것이다. 그러므로, 동일한 전송자원을 통한 다중 DMA채널에 대한 데이터 전송이 있을 때, 각 DMA채널을 통한 데이터 전송시퀀스는 그의 TTC 및 CIS에 따라 다중 슬라이스로 시간측면에서 분할되어 다른 DMA채널과 인터리브된다. 그 결과, 다중 DMA데이터 전송은 모든 시퀀스가 완료될때까지 임의 순서로 그들의 슬라이스에서 채널-인터리브된다.
본 발명의 채널인터리빙을 지원할 수 있는 여러 가지 버퍼링 실시예는 해당분야에 숙련된 사람들에 의해 구성될 수 있지만, 채널인터리빙을 지원하기 위한 회로 아키텍처는 제3도를 참조하여 바람직한 실시예로서 하기에서 설명된다.
제어구조(300)는 이중-포트메모리(320) 및 채널 시퀀서(330)를 구비한다. 이중-포트메모리(329)는 DMA데이터 전송에 대한 데이터를 기입하고 판독하며 판독포인터(321) 및 기입포인터(325)를 갖는 랩-어라운드방식으로 동작한다. 기입 포인터(325)는 다음번에 기입될 이중-포트메모리(320)내의 데이터 장소를 가리킨다.
데이터가 이중- 포트메모리(320)에 기입될 때, 기입포인터(325)는 이중- 포트메모리(320)에서 다음 장소로 이동한다.
판독포인터(321)는 다음번에 판독될 이중- 포트메모리(320)내의 데이터 장소를 가리킨다. 이리하여, 데이터는 판독포인터(321)가 가리키는 장소에서 이중- 포트메모리(320)로부터 판독된다. 기입포인터(325)는 2포인터가 일치할 때 즉 서로 충돌(bump up)할 때 이중- 포트메모리(320)가 비게 되는 리딩포인터(leading pointer)이다; 그리고 기입포인터(325)가 판독포인터(321) 바로 뒤에 위치될 때, 이중- 포트메모리(320)는 충만되어 있다. 전형적으로, 제어(300)는 빈상태로 그의 동작을 시작한다. 또한, 해당분야에 숙련된 사람들은 알겠지만, 기입포인터(325)는 유효데이터가 이중- 포트메모리(320)로부터 판독되기 전에 오버라이트되지 않도록 판독포인터(321)를 통과해서는 않된다.
제3도를 참조하면, 다중 채널이 이중- 포트메모리(320)와 DMA전송을 행하고 있을 때 이중- 포트메모리(320)에 버퍼된 데이터에 대응하는 채널 시퀀싱이 보존되도록 채널시퀀서(330)는 이중- 포트메모리(320)을 통한 각DMA전송과 연관된 DMA채널 번호를 기록한다. 채널 시퀀서(330)는 소스포인터(331) 및 목적지 포인터(335)로써 랩-어라운드 방식으로 동작한다.
소스포인터(331)는 그곳으로부터 데이터가 기입되는 채널을 나타내는 채널 시퀀서(330)에서의 장소에 채널번호를 기입한다.
소스포인터(331)는 쓰여질 다음 채널번호를 준비하기 위해 채널 시퀀서(330)에서 다음번 장소로 증가한다. 목적지 포인터(335)는 데이터가 이중- 포트메모리(320)로부터 채널 시퀀서(320)에서 목적지 포인터(335)가 나타나는 채널로 판독되도록 채널시퀀서(330)의 장소를 가리키므로써 이중- 포트메모리(320)로부터 데이터 전송을 개시한다. 이리하여, 데이터는 동일한 채널로 이중- 포트메모리(320)로 기입되고 그리고 이중- 포트메모리(320)로부터 판독된다. 소스포인터(331)와 목적지 포인터(335)는 데이터 전송을 잘못지시하는 것을 피하기 위해 서로 교차하지 않는다는 것은 해당분야에 숙련된 사람에게는 명백하겠다.
또한, 제3도를 여전히 참조하면, 버스와 같은 자원이 데이터 전송을 용이하게끔 이용가능하지 않을 때, 소스포인터(331)는 뛰어넘어 채널시퀀서(330)에서 태그(332)에서 장소를 태그한다.
이리하여, 목적지 포인터(335)가 태그된 장소로 이동할 때, 목적지 포인터(335)는 태그(332)를 판독하여 데이터 전송이 채널 시퀀서(330)의 태그된 장소와 관련해서 소스포인터(331)에 의해 수행되지 않는 것을 알게 된다.
그 결과, 목적지 포인터(335)는 데이터가 태그된 장소에 따라 전송되게 하지 않으며, 태그(332)를 무효 또는 리세트시키고 채널을 다음 장소에서 전송하기 위해 뛰어넘는다. 이것은 본발명의 회로 아키텍처가 동일한 채널에 대해 받아들인것보다 더 많은 것을 보내지 않는 것을 보장한다.
뛰어넘음은 데이터를 기입할 이중- 포트메모리(327)에 충분한 여유가 없을 때 또는 버스가 전송을 위해 이용가능하지 않을 때 발생할 수 있다는 것을 유의해야 한다.
독특한 회로 아키텍처가 채널인터리빙을 지원하기 위해 사용될 때, 채널인터리브제어(310)는 기입 및 판독방향에서 각 채널에 대한 채널인터리브 크기, 전체 전송 크기 및 현재 전송 크기를 모니터함으로써 채널이 그들의 전송을 인터리브하게 한다. 각 채널의 채널인터리브 크기는 또다른 채널이 제 1채널과 동일한 자원을 사용하여 그의 전송을 인터리브할 수 있기 전에 제 1채널이 전송하여야하는 바이트의 수를 규정한다.
전체 전송 크기는 특정한 채널이 이중- 포트메모리(320)를 통해 전송하도록 요구된 데이터 바이트의 전체수를 규정한다. 현재 전송 계수는 이중- 포트메모리(320)에 버퍼된 데이터 바이트에 대해 각 채널에 있어서 진행중인 현재 기입 및 현재 판독계수 둘다를 기록한다. 채널을 통한 전체 전송 크기의 데이터에 대한 요구에 응답하여, 채널인터리브 제어(310)은 그 채널의 채널인터리브 크기 및 전체 전송크기를 판독함으로써 현재 전송이 분할될 수 있는 데이터 슬라이스의 수를 결정한다. 데이터 전송이 하나이상의 데이터 슬라이스로 분할될 수 있으면, 채널인터리브 제어(310)는 제 1채널이 그의 채널 인터리브 크기까지 전송한 후에 제 2채널이 그의 전송을 실행하게 할 수 있다. 채널인터리브 제어는 또한 본발명의 회로아키텍처가 채널인터리브가 언제 일어날 수 있는가 외에 각 채널에 대해 얼마나 많은 데이터를 전송하였는가 그리고 전송할 것이 얼마나 더 있는가를 추적하도록 기입 및 판독방향에서 각 채널의 현재 전송 계수를 모니터한다.
그리하여, 본발명의 회로 아키텍처는 데이터 슬라이스에 연관된 채널정리가 채널시퀀서(330) 및 채널 인터리브제어(310)에 의해 유지되기 때문에 여러 DMA전송 시퀀스가 완료되기까지 임의 순서로 상이한 채널로부터의 데이터 슬라이스 전송을 실행함으로써 전송을 진행할 수 있다.
채널인터리빙은 여러 가지 전송크기에 관련되기 때문에 채널 시퀀서(330)의 1장소에서의 채널전송이 다른 장소에서으 채널 전송전에 완료되는 상황이 발생한다는 것을 유의해야 한다. 이 상황은 채널 시퀀서(330)가 최초에 그의 소스 포인터를 통해 순차적으로 채널을 로우드하고 있더라도 채널 시퀀서(330)가 임의로 분산된 갭을 갖는 원인이 된다. 채널 시퀀서(330)에서 임의로 분산된 장소에 들어오는 채널을 할당하여 전송소스를 나타내기 위해서는, 들어오는 채널은 소스와 목적지 포인터 사이에(즉, 소스포인터의 뒤에 그리고 목적지 포인터의 앞에)있는 장소에 할당되지 않는다는 것은 해당분야에 숙련된 사람에게는 명백하겠다.
이리하여, 새로운 채널은 목적지 포인터(335)에 의해 먼저 적중될 장소에 있지 않으며 장소의 시퀀서는 채널 시퀀서(330)에서 보존된다.
또한, 채널 인터리브제어(310)는 채널 인터리브 크기를 전체 전송 크기와 현재 전송 계수사이의 차이와 비교함으로써 전송의 나머지 부분(나머지(remnant))과 같이 그 채널의 채널 인터리브 크기보다 작은 데이터가 전송될것인지를 결정한다. 채널 인터리브 크기 보다 작은 데이터가 채널을 통해 전송되어야 하면, 채널 인터리브 제어(310)는 더 나은 버스 이용을 달성하기 위해 제 1채널의 전송이 완료되자마자 또다른 채널이 그의 전송을 실행하게 한다. 또한, 제 1채널이 그의 전송을 완료한 후 데이터전송을 요구하는 다른 채널이 없는 경우에, 채널 인터리브제어(310)는 어떤 경우이든 제 1채널이 전송을 계속하거나 또는 추가 요구에 응답하게 한다. 채널 인터리브제어(310)는 이론적으로는 각 채널에 대한 채널 인터리브 크기, 현재 전송계수 및 전체전송 크기에 관한 정보를 처리하는 프로세서 일 수 있다.
제4도를 참조하면, 채널 인터리빙을 위한 독특한 회로 아키텍처의 동작은 예시적인 전송동작을 통해 설명된다. 처음에, DMA전송은 채널 1을 통해 1000바이트의 데이터를 요구하는데, 채널 1은 32바이트 버스트까지 지원하는 호스트 상에서 500바이트의 채널 인터리브 크기를 갖게끔 프로그램되었다. 채널 인터리브 크기는 또다른 채널이 동일한 버스를 통해 전송하게끔 되기 전에 전송될 최대의 데이터를 지칭한다. 전송은 메모리(400)로부터 시작하여 ABus(460)를 통해 이중-포트메모리(400)로 그리고 이중-포트메모리(420)로부터 BBus(470)을 통해 요구하는 주변장치(450)까지이다.
채널인터리브제어(410)는 제 1채널과 연관된 채널인터리브크기(현재로선 500바이트), 전체 전송 계수(현재로선 1000바이트), 및 버스트 크기(현재로선 32바이트)를 판독함으로써 어떻게 전송을 분할할 것인지를 결정한다. 이리하여, 15개의 별개의 32-바이트 버스트에서의 500-바이트슬라이스플러스 1개의 16-바이트 버스트 및 1개의 4-바이트전송은 이중-포트메모리(420)에 기입되고, 채널 시퀀서(430)는 채널 1을 이 슬라이스의 데이터에 대응하는 소스채널로 기입한다.
채널 1이 그의 채널 인터리브 크기인 500바이트를 위반함이 없이 가능한 가장 큰 데이터 슬라이스(500바이트)를 기입한 후에는, 또다른 채널이 데이터를 전송하기 위해 ABus(460)를 사용하는 것이 허용된다. 예를 들어, 채널 7을 통한 DMA전송이 ABus(460)를 사용하는 것이 승인되었으면, 채널 7을 통한 전송이 이 전환기에서 인터리브할 수 있다.
컴퓨터 시스템은 또다른 DMA채널이 전송하기 위해 상이한 버퍼링 아키텍처를 사용할 것을 요구할 수 있도록 DMA전송을 수용하는 다중 버퍼링 아키텍처(제 4도에 도시되지 않음)를 가질 수 있다는 것을 유의해야 한다. 그러나, 본발명의 동작을 구분하여 설명하기 위한 목적으로, 모든 채널은 DMA전송을 달성하기 위해 동일한 회로 아키텍처(401)를 사용한다고 가정한다. ABus(460)가 채널 7에 승인된 후에, 채널 1에 대한 전송은 ABus(460)에 대한 채널 1의 요구가 그 전환기에서 또한 승인된다면 채널 7이 각각의 채널 인터리브 크기에 도달할 때까지 중단된다.
채널 1에 대한 전송이 중단되더라도, 채널 인터리브제어(410)은 채널 1이 채널 7의 인터리빙에 의해 영향을 받지 않으면서 그의 전송을 다음번에 재개할 수 있도록 채널 1의 전송 파라미터 즉 채널 인터리브크기, 전체 이송 크기 및 현재 전송 계수를 계속해서 유지한다.
채널 7을 통한 데이터전송은 채널 7에 대한 데이터 슬라이스의 크기가 채널 1과 상이하도록 채널 7이 상이한 채널 인터리브 크기, 전체 전송크기 및 버스크기를 갖게끔 프로그램된 것을 제외하고는 채널 1과 유사한 방식으로 진행한다. 채널 7데이터의 슬라이스가 메모리(400)로부터 이중-포트메모리(420)로 기입될 때, 채널 시퀀서(430)는 채널 7을 이중-포트메모리(420)로 기입되는 이 슬라이스의 데이터에 대응하는 소스채널로서 기입한다. 전송의 다음 슬라이스가 또한 채널 7로부터이면, 채널 7은 채널시퀀서(430)에서 소스 채널로서 다시 기입된다.
채널 7이 메모리(400)로부터 이중-포트메모리(400)로 그의 전송을 완료하거나 또는 적어도 채널 인터리브 크기의 크기에서 허용되는 데이터 전송을 부분적으로 완료한 후에, ABus(460)는 그의 요구가 승인된 어떠한 채널에 대해서도 자유롭게 사용된다.
채널 1이 그의 요구가 승인되었다고 가정하면, 채널 1은 메모리(400)로부터 이중-포트메모리(420)로 그의 데이터 전송을 재개할 수 있다. 또다른 슬라이스의 데이터는 채널 시퀀서(430)가 채널 1을 소스채널로서 기입하는 동안 이중-포트메모리(420)에 기입된다. 제 6도는 이중-포트메모리(620) 및 채널 시퀀서(630)의 현재 상태를 도시한다. 개시에서, 기입 포인터(625) 및 판독 포인터(621)는 최초에 이중-포트메모리(620)에서 첫 번째 장소에서 정렬되며, 소스채널 포인터(631) 및 목적지채널 포인터(635)도 또한 채널 시퀀서(630)의 첫 번째 장소에서 정렬된다.
제6도를 참조하면, 채널 1은 장소(689)로 시작하는 이중-포트메모리(620)의 장소로 500바이트의 제 2슬라이스를 기입함으로써 그의 요구된 전체전송 계수를 계속해서 전송하고, 채널 1의 채널 인터리브 크기에 도달한 후 또다른 채널이 버스를 사용하도록 허용되면 그의 전송을 중단한다. 인터리브가 생기지 않으면, 채널 1은 채널 시퀀서(630)가 채널1을 각 슬라이스에 대한 소스채널로서 동시에 기록하는 동안, 나머지 데이터를 이중-포트메모리(620)로 계속해서 기입한다.
제6도를 참조하면, 판독포인터(621)는 이중-포트메모리(620)에 결합되어 있는 것으로 나타내져 있다.
판독 포인터(621) 및 기입 포인터(625)는 이중-포트메모리(620)가 그의 이중 기입 및 판독 포인터 메커니즘을 통해 동시에 기입 및 판독을 할 수 있도록 서로 독립적으로 동작한다.
이중-포트메모리(620)에 있는 데이터가 판독될 때, 판독포인터(621)가 이중-포트메모리(620)를 따라서 이동하면서 판독된다. 데이터의 목적지는 채널 시퀀서(630)에 결합된 목적지 채널 포인터(635)에 의해 나타내진다. 이리하여, 데이터는 그 채널에 대한 채널 인터리브 크기가 위반되어지기 전에 그의 목적지 채널을 통해 이중-포트메모리(620)로부터 판독된다. 목적지 채널포인터(635)는 채널 시퀀서(630)에서 다음 장소로 증가되는데, 판독포인터(621)를 통해 이중-포트메모리(620)로부터 판독될 데이터의 목적지 채널을 나타낸다.
이중-포트메모리(620)의 기입동작에서 설명되는 것처럼, 이중-포트메모리(620)의 판독동작은 또한 다중 채널을 지원하기 위해 인터리브될 수 있다.
또한, 전체계수가 이중-포트메모리(620)로부터 데이터를 판독하는 데 있어서 달성되면, 나머지 전송이 그의 채널 인터리브 크기보다 적더라도 또다른 채널이 이중-포트메모리(620)로부터 데이터를 판독하도록 허용된다.
이리하여, 더 효율적인 버스이용은 나머지가 전송된후 전송할 데이터가 더 이상 없을 때 다른 채널이 대기하도록 강제하지 않으모로써 달성한다. 현재로선, 이중-포트메모리(620)는 제 5도에 도시된 바와 같이 2개의 이중-포트RAM에 의해 구현된다.
본 회로 아키텍처는 채널- 인터리빙 DMA동작을 지원하기 위한 바람직한 실시예로서 설명되었지만, 회로 아키텍처는 다른 다중-디바이스 전송 동작에도 용이하게 적용될 수 있다는 것은 해당분야에 숙련된 사람에게는 명백합니다. 예를 들어, 공통적인 전송자원을 통한 CPU와 다수의 디바이스 사이의 데이터 전송에 대해서, 회로 아키텍처는 각 디바이스의 전송시퀀스를 유지하면서 독립적인 판독 및 기입동작을 연속적으로 제공할 수 있다. 그러한 회로 아키텍처로써 전송자원은 효율적으로 이용될 수 있다. 동작중에, 각 디바이스에 대한 데이터는 디바이스 식별이 시퀀서에 등록되는 동안 이중-포트메모리에 기억된다. 채널 인터리브 메커니즘과 유사하게, 데이터 전송계수는 각 디바이스에 대한 데이터 흐름의 상태를 모니터하기 위해 유지될 수 있다. 디바이스 1버퍼수법과 비교해서, 회로 아키텍처는 모든 개별적인 버퍼에 의해 요구되는 실리콘 면적과 비용법이 더 높은 대역폭 및 동작의 연속을 달성할 수 있다.

Claims (12)

  1. 다수의 데이터 채널을 통해 컴퓨터의 메모리와 다수의 주변 장치사이에 데이터를 전송하기 위한 회로 아키텍처에 있어서, 상기 데이터 채널을 통해 전송되고 있는 다수의 데이터 슬라이스를 다수의 데이터 장소에 버퍼링하기 위해 상기 메모리와 상기 주변장치사이에 결합되는 이중-포트메모리로서 상기 이중-포트메모리로 기입하고 그리고 상기 이중-포트메모리로부터 판독하기 위한 기입 수단 및 판독수단을 구비하고 상기 기입수단은 상기 데이터 장소가 오버라이트되지 않도록 상기 데이터 장소가 상기 판독수단에 의해 상기 이중-포트메모리로부터 판독되기 전에 데이터 장소에 기입하지 않는 이중-포트메모리: 데이터 채널 번호의 각각이 상기 이중-포트메모리에 기억된 상기 데이터 슬라이스중 하나에 대응하는 다수의 데이터 채널 번호를 그곳에 기억하기 위해 이중-포트메모리에 결합되며, 제 1채널로부터의 데이터 슬라이스가 상기 제 1채널 번호를 기입하여 상기 제 1채널 번호가 상기 데이터 슬라이스의 소스채널을 나타내도록하며, 상기 데이터 슬라이스가 상기 이중-포트메모리로부터 판독될 때 상기 제 1채널 번호를 판독하여 상기 제 1채널 번호가 상기 데이터 슬라이스의 목적지 채널을 나타내도록 하는 채널 시퀀스수단으로서 여기에서 상기 데이트 슬라이스는 상기 채널 시퀀스 수단에 기억된대로 상기 제 1채널을 통해 상기 이중-포트메모리로 기입되고 그리고 이로부터 판독되는 채널 시퀀스수단; 및 상기 이중-포트메모리를 통해 상기 데이터 채널의 각각에 대해 전송되는 데이터의 양을 모니터하기 위해 상기 이중-포트메모리 및 상기 채널시퀀스 수단에 결합되는 채널제어수단을 구비하는 것을 특징으로 하는 회로 아키텍처.
  2. 제1항에 있어서, 상기 이중-포트메모리를 통해 상기 데이터채널에 대한 데이터 전송을 인터리브 하기위해 상기 이중-포트메모리 및 상기 채널 시퀀스 수단에 결합되는 채널 인터리브 수단을 추가로 구비하고, 상기 채널 인터리브 수단은 제2채널이 인터리브하는 때를 결정하기 위해 판독 및 기입 양방향에서 각각의 데이터 채널에 대응하는 소정의 채널 인터리브 크기, 전체 전송 계수 및 현재 전송 계수를 판독하며, 상기 제 1채널이 소정의 채널 인터리브 크기와 같은 또는 보다 작은 데이터를 전송한 후 데이터가 상기 제 2채널을 통해 전송되게 하며, 또한 상기 제 2채널이 상기 제 1채널이 그의 소정의 채널 인터리브 크기에 도달하는 것을 기다리지 않고 그의 데이터를 전송하도록 상기 제 1채널이 그의 전체 전송 계수를 완료한 후 상기 제 2채널이 데이터를 전송하게 하는 것을 특징으로 하는 회로 아키텍처.
  3. 제2항에 있어서, 상기 데이터 채널중 어느것이 상기 이중-포트메모리로 데이터를 전송할 수 있고 그리고 어느것이 상기 이중-포트메모리로부터 데이터를 전송할 수 있는지를 소정의 우선순위 방안에 따라 결정하기 위해 상기 이중-포트메모리에 결합되는 중재수단; 및 데이터 채널이 상기 이중-포트메모리의 제어를 계속해서 가지고 데이터를 전송하도록 상기 중재 수단을 디스에이블링하기 위해 상기 중재 수단에 결합되는 중재 디스에이블 수단을 추가로 구비하는 것을 특징으로 하는 회로 아키텍처.
  4. 제2항에 있어서, 상기 이중-포트메모리는 데이터를 상기 이중-포트메모리로 기입하기 위해 상기 이중-포트메모리에 결합되며, 상기 이중-포트메모리에서 마지막 장소로부터 첫 번째 장소로 상기 이중-포트메모리를 랩핑하는 상기 기입 포인터 수단; 및 상기 이중-포트메모리로부터 데이터를 판독하기 위해 상기 이중-포트메모리에 결합되며, 상기 이중-포트메모리에서 마지막 장소로부터 첫 번째 장소로 상기 이중-포트메모리를 랩핑하는 판독포인터 수단을 추가로 구비하며, 상기 기입 포인터수단은 데이터가 판독되기 전에 오버라이트되지 않도록 상기 판독 포인터수단을 넘어 기입하지 않으며, 상기 이중-포트메모리는 상기 기입 포인터수단이 상기 판독 포인터수단과 일치할 때 비어있는 것을 특징으로 하는 회로 아키텍처.
  5. 제4항에 있어서, 상기 채널 시퀀스 수단은 상기 이중-포트메모리에 전송될 데이터 슬라이스를 위해 상기 채널 시퀀스수단에 채널 번호를 기입하여 상기 채널번호가 상기 데이터 슬라이스의 소스 채널 번호를 나타내도록 상기 채널 시퀀스 수단에 결합되는 소스 포인터수단; 및 데이터 슬라이스를 상기 이중-포트메모리로부터 판독하려고 할 때 채널번호를 상기 채널 시퀀스 수단에 기입하여 상기 채널 번호가 상기 데이터 슬라이스의 목적지 채널 번호를 나타내도록 상기 채널 시퀀스 수단에 결합되는 목적지 포인터 수단을 추가로 구비하며, 상기 목적지 포인터 수단은 상기 소스 포인터 수단을 지나가지 않고 상기 소스-포인터 수단은 상기 목적지 포인터 수단을 지나가지 않는 것을 특징으로하는 회로 아키텍처.
  6. 제5항에 있어서, 상기 이중-포트메모리는 2개의 이중-포트RAM을 구비하며, 상기 2개의 이중-포트RAM의 각각은 상기 메모리로부터 상기 주변장치로 그리고 상기 주변장치로부터 상기 메모리로 각각 데이터를 독립적으로 전송할 수 있는 것을 특징으로 하는 회로 아키텍처.
  7. 메모리와 주변장치가 다수의 DMA채널을 통해 결합되는 컴퓨터의 상기 메모리와 상기 다수의 주변장치 사이에 결합되는 회로 아키텍처를 통해 데이터를 전송하는 방법이 있어서, 상기 DMA채널을 통해 전송되는 다수의 데이터 슬라이스를 다수의 데이터 장소에 기억하는 단계, 여기서 상기 다수의 데이터 장소는 상기 메모리와 상기 주변장치 사이에 결합된 이중-포트메모리에 있고, 상기 이중-포트메모리는 상기 이중-포트메모리로 기입하고 그리고 이로부터 판독하기 기입수단 및 판독수단을 구비하고, 상기 기입수단은 상기 데이터 장소가 오버라이트되지 않도록 상기 데이터 장소가 상기 판독수단에 의해 상기 이중-포트메모리로부터 판독되기 전에 데이터 장소에 기입하지 않으며; 상기 이중-포트메모리에 결합된 채널 시퀀스수단에 다수의 DMA채널번호를 기억하는 단계, 여기서 상기 DMA채널번호의 각각은 상기 이중-포트메모리에 버퍼된 상기 데이터 슬라이스중 하나에 대응하여, 상기 채널 시퀀스 수단은 제 1채널 번호가 상기 데이터 슬라이스의 소스 채널을 나타내도록 상기 제 1채널로부터의 데이터 슬라이스가 상기 이중-포트메모리로 기입될 때 제 1채널번호를 기입하며, 상기 채널 시퀀스 수단은 상기 제 1채널 번호가 상기 데이터 슬라이스의 목적지 채널을 나타내도록 상기 데이터 슬라이스가 상기 이중-포트메모리로부터 판독될 때 상기 제 1채널번호를 판독하며, 여기에서 상기 데이터 슬라이스는 상기 채널시퀀스 수단에 기억된대로 상기 제 1채널을 통해 상기 이중-포트메모리로 기입되고 그리고 이로부터 판독되며; 및 상기 이중-포트메모리 및 상기 채널 시퀀스 수단에 결합된 채널제어수단을 통해 상기 이중-포트메모리를 통해 상기 데이터 채널의 각각에 대해 전송된 데이터의 양을 모니터하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 이중-포트메모리 및 상기 채널 시퀀스 수단에 결합된 채널 인터리브 수단을 사용함으로써 상기 이중-포트메모리를 통해 상기 DMA채널에 대한 데이터 전송을 인터리브하는 단계를 추가로 구비하며, 상기 채널인터리브 수단은 제 2채널이 언제 인터리브하는지를 결정하기 위해 판독 및 기입 양방향에서 각 DMA채널에 대응하는 소정의 채널 인터리브크기, 전체 전송계수 및 현재 전송계수를 판독하고, 상기 채널 인터리브 수단은 상기 제 1채널이 그의 소정의 채널 인터리브 크기와 같거나 또는 보다 작은 데이터를 전송한 후 데이터가 상기 제 2채널을 통해 전송되도록 하고, 상기 채널 인터리브 수단은 또한 상기 제 2채널이 그의 소정의 채널 인티리브 크기에 도달하기를 기다리지 않고 그의 데이터를 전송하도록 상기 제 1채널이 그의 전체 전송 계수를 완료한 후 상기 제 2채널이 데이터를 전송하게 하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 상기 DMA채널을 통해 전송되는 다수의 데이터 슬라이스를 다수의 데이터 장소에 기억하는 단계는 상기 이중-메모리에 결합되는 기입 포인터 수단을 사용함으로써 상기 이중-포트메모리에 데이터를 기입하는 단계, 여기서 상기 기입 포인터 수단은 상기 이중-포트메모리에서 마지막 장소로부터 첫 번째 장소로 상기 이중-포트메모리를 랩핑하며; 및 상기 이중-포트메모리에 결합된 판독 포인터 수단을 사용함으로써 상기 이중-포트메모리로부터의 데이터를 판독하는 단계를 추가로 구비하며, 상기 판독 포인터 수단은 상기 이중-포트메모리에서 마지막 장소로부터 첫 번째 장소로 상기 이중-포트메모리를 랩핑하고, 상기 기입 포인터 수단은 데이터가 판독되기 전에 오버라이트 되지 않도록 상기 기입 포인터 수단을 넘어 기입하지 않으며, 상기 이중-포트메모리는 상기 기입 포인터 수단이 상기 판독 포인터 수단과 일치할 때 비어있는 것을 특징으로 하는 방법.
  10. 제7항에 있어서, 상기 채널 시퀀스 수단에 다수의 데이터 채널 번호를 기억하는 단계는 상기 채널 번호가 상기 데이터 슬라이스의 소스 채널 번호를 나타내도록 상기 이중-포트메모리에 전송될 데이터 슬라이스를 위해 상기 채널 시퀀스 수단에 결합된 소스 포인터 수단을 사용함으로써 상기 채널 시퀀스 수단에 채널 번호를 기입하는 단계; 및 상기 채널 번호가 상기 데이터 슬라이스의 목적지 채널 번호를 나타내도록 데이터 슬라이스가 상기 이중-포트메모리로부터 판독되려면 상기 채널 시퀀스 수단에 결합된 목적지 포인터 수단을 사용함으로써 상기 채널 시퀀스 수단에서 채널 번호를 판독하는 단계를 추가로 구비하며, 상기 목적지 포인터 수단은 상기 소스 포인터 수단에 지나가지 않고 상기 소스포인터 수단은 상기 목적지 포인터 수단을 지나가지 않는 것을 특징으로 하는 방법.
  11. 제 8항에 있어서, 상기 채널 시퀀스 수단에 다수의 데이터 채널 번호를 기억하는 단계는 상기 채널 번호가 상기 데이터 슬라이스의 소스 채널 번호를 나타내도록 상기 이중-포트메모리에 전송될 데이터 슬라이스를 위해 상기 채널 시퀀스 수단에 결합된 소스 포인터 수단을 사용함으로써 상기 채널 시퀀스 수단에 채널 번호를 기입하는 단계; 및 상기 채널 번호가 상기 데이터 슬라이스의 목적지 채널 번호를 나타내도록 데이터 슬라이스가 상기 이중-포트메모리로부터 판독되려면 상기 채녈 시퀀스 수단에 결합된 목적지 포인터 수단을 사용함으로써 상기 채널 시퀀스 수단에서 채널 번호를 판독하는 단계를 추가로 구입하며, 상기 목적지 포인터 수단은 상기 소스 포인터 수단을 지나가지 않고 상기 소스포인터 수단은 상기 목적지 포인터 수단을 지나가지 않는 것을 특징으로 하는 방법.
  12. 제7항에 있어서, 상기 이중-포트메모리로 그리고 이로부터 데이터를 전송하기 위해 상기 다수의 데이터 채널 사이에서 중재하는 단계를 추가로 구비하는 것을 특징으로 하는 방법.
KR1019920025767A 1991-12-30 1992-12-28 다중 채널 디엠에이 동작을 지원하기 위한 회로 아키텍처 KR0142175B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US814,765 1977-07-11
US07/814,765 US5386532A (en) 1991-12-30 1991-12-30 Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels

Publications (2)

Publication Number Publication Date
KR930014067A KR930014067A (ko) 1993-07-22
KR0142175B1 true KR0142175B1 (ko) 1998-07-01

Family

ID=25215952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920025767A KR0142175B1 (ko) 1991-12-30 1992-12-28 다중 채널 디엠에이 동작을 지원하기 위한 회로 아키텍처

Country Status (5)

Country Link
US (1) US5386532A (ko)
EP (1) EP0550163B1 (ko)
JP (1) JP3273202B2 (ko)
KR (1) KR0142175B1 (ko)
DE (1) DE69229716T2 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683321A (ja) * 1992-09-04 1994-03-25 Fuji Xerox Co Ltd 画像データ処理装置
JPH06103213A (ja) * 1992-09-18 1994-04-15 Hitachi Ltd 入出力装置
US5845329A (en) * 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JP3471384B2 (ja) * 1993-03-19 2003-12-02 富士通株式会社 データ転送装置及びデータ転送処理方法
JPH07244607A (ja) * 1994-02-22 1995-09-19 Motorola Inc キューメモリシステムおよびその方法
US5581720A (en) * 1994-04-15 1996-12-03 David Sarnoff Research Center, Inc. Apparatus and method for updating information in a microcode instruction
JP3525518B2 (ja) * 1994-10-13 2004-05-10 ヤマハ株式会社 データ転送装置
US5613162A (en) * 1995-01-04 1997-03-18 Ast Research, Inc. Method and apparatus for performing efficient direct memory access data transfers
EP0732659B1 (en) * 1995-03-17 2001-08-08 LSI Logic Corporation Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
US5864712A (en) * 1995-03-17 1999-01-26 Lsi Logic Corporation Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment
US5870627A (en) * 1995-12-20 1999-02-09 Cirrus Logic, Inc. System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
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
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US5758187A (en) * 1996-03-15 1998-05-26 Adaptec, Inc. Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure
US5797034A (en) * 1996-03-15 1998-08-18 Adaptec, Inc. Method for specifying execution of only one of a pair of I/O command blocks in a chain structure
US5768621A (en) * 1996-03-15 1998-06-16 Adaptec, Inc. Chain manager for use in executing a chain of I/O command blocks
US5884050A (en) * 1996-06-21 1999-03-16 Digital Equipment Corporation Mechanism for high bandwidth DMA transfers in a PCI environment
US6055619A (en) * 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
JPH10228442A (ja) * 1997-02-17 1998-08-25 Canon Inc ダイレクト・メモリ・アクセスによるデータ受信装置,方法および記憶媒体
US6199121B1 (en) * 1998-08-07 2001-03-06 Oak Technology, Inc. High speed dynamic chaining of DMA operations without suspending a DMA controller or incurring race conditions
DE10050980A1 (de) 2000-10-13 2002-05-02 Systemonic Ag Speicherkonfiguration mit I/O-Unterstützung
US6839753B2 (en) * 2001-02-23 2005-01-04 Cardiopulmonary Corporation Network monitoring systems for medical devices
US20020133699A1 (en) * 2001-03-13 2002-09-19 Pueschel Roy Myron Method and apparatus to regulate use of freely exchanged files and streams
US7054986B2 (en) * 2001-03-30 2006-05-30 Nokia Corporation Programmable CPU/interface buffer structure using dual port RAM
US20020184381A1 (en) * 2001-05-30 2002-12-05 Celox Networks, Inc. Method and apparatus for dynamically controlling data flow on a bi-directional data bus
US6842791B2 (en) * 2002-03-20 2005-01-11 Intel Corporation Method and apparatus for memory efficient fast VLAN lookups and inserts in hardware-based packet switches
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
DE102004039932A1 (de) * 2004-08-17 2006-03-09 Phoenix Contact Gmbh & Co. Kg Verfahren und Vorrichtung zur Busankopplung sicherheitsrelevanter Prozesse
US7185123B2 (en) * 2004-09-15 2007-02-27 Qualcomm Incorporated Method and apparatus for allocating bandwidth on a transmit channel of a bus
DE602004012106T2 (de) * 2004-10-11 2009-02-19 Texas Instruments Inc., Dallas Multikanal-DMA mit gemeinsamem FIFO-Puffer
US20060253659A1 (en) * 2005-05-05 2006-11-09 International Business Machines Corporation Method and virtual port register array for implementing shared access to a register array port by multiple sources
US8149854B2 (en) * 2005-06-30 2012-04-03 Intel Corporation Multi-threaded transmit transport engine for storage devices
BRPI0520450A2 (pt) * 2005-07-26 2011-03-29 Thomson Licensing correlacionador para busca de células primárias usando arquitetura de memória
US20090083470A1 (en) * 2007-09-24 2009-03-26 Ali Corporation System on chip device and method for multiple device access through a shared interface
US9438844B2 (en) * 2008-04-08 2016-09-06 Imagine Communications Corp. Video multiviewer system using direct memory access (DMA) registers and block RAM
EP2488977A1 (en) * 2009-10-13 2012-08-22 Cardiopulmonary Corporation Method and apparatus for displaying data from medical devices
KR101685407B1 (ko) 2010-07-29 2016-12-13 삼성전자주식회사 멀티코어 시스템을 위한 다이렉트 메모리 억세스 장치 및 다이렉트 메모리 억세스 장치의 동작 방법
US8447897B2 (en) * 2011-06-24 2013-05-21 Freescale Semiconductor, Inc. Bandwidth control for a direct memory access unit within a data processing system
US9588994B2 (en) 2012-03-02 2017-03-07 International Business Machines Corporation Transferring task execution in a distributed storage and task network
US9128925B2 (en) 2012-04-24 2015-09-08 Freescale Semiconductor, Inc. System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
US9380474B2 (en) 2013-03-08 2016-06-28 Cardiopulmonary Corp. Network monitoring for active medical device alarms
CN111831595A (zh) * 2020-06-30 2020-10-27 山东云海国创云计算装备产业创新中心有限公司 一种dma传输方法及相关装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4403282A (en) * 1978-01-23 1983-09-06 Data General Corporation Data processing system using a high speed data channel for providing direct memory access for block data transfers
US4371932A (en) * 1979-07-30 1983-02-01 International Business Machines Corp. I/O Controller for transferring data between a host processor and multiple I/O units
AU559558B2 (en) * 1982-06-30 1987-03-12 Elxsi I/o channel bus
US4750150A (en) * 1984-06-25 1988-06-07 Allen-Bradley Company, Inc. I/O scanner for an industrial control
US4750107A (en) * 1985-01-07 1988-06-07 Unisys Corporation Printer-tape data link processor with DMA slave controller which automatically switches between dual output control data chomels
GB2196762B (en) * 1986-10-27 1990-12-19 Burr Brown Ltd Interleaved access to global memory by high priority source
US4831523A (en) * 1986-10-31 1989-05-16 Bull Hn Information Systems Inc. Multiple DMA controller chip sequencer
US4896266A (en) * 1987-06-03 1990-01-23 Bull Hn Information Systems Inc. Bus activity sequence controller
US5056015A (en) * 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
US5261064A (en) * 1989-10-03 1993-11-09 Advanced Micro Devices, Inc. Burst access memory
KR940002905B1 (en) * 1989-12-15 1994-04-07 Ibm Apparatus for conditioning priority arbitration in buffered direct memory addressing
US5157775A (en) * 1989-12-15 1992-10-20 Eastman Kodak Company Dual port, dual speed image memory access arrangement
US5175825A (en) * 1990-02-02 1992-12-29 Auspex Systems, Inc. High speed, flexible source/destination data burst direct memory access controller
US5182800A (en) * 1990-11-16 1993-01-26 International Business Machines Corporation Direct memory access controller with adaptive pipelining and bus control features

Also Published As

Publication number Publication date
DE69229716T2 (de) 2000-03-02
EP0550163B1 (en) 1999-08-04
EP0550163A1 (en) 1993-07-07
KR930014067A (ko) 1993-07-22
US5386532A (en) 1995-01-31
DE69229716D1 (de) 1999-09-09
JPH06266649A (ja) 1994-09-22
JP3273202B2 (ja) 2002-04-08

Similar Documents

Publication Publication Date Title
KR0142175B1 (ko) 다중 채널 디엠에이 동작을 지원하기 위한 회로 아키텍처
KR960006503B1 (ko) 다중-채널 직접메모리 억세스(dma)동작을 인터리브하기 위한 장치 및 그 방법
US5448702A (en) Adapters with descriptor queue management capability
EP0241129B1 (en) Addressing arrangement for a RAM buffer controller
US6154793A (en) DMA with dynamically assigned channels, flexible block boundary notification and recording, type code checking and updating, commands, and status reporting
US6163820A (en) Efficient data transfer mechanism for input/output devices
US5559969A (en) Method and apparatus for efficiently interfacing variable width data streams to a fixed width memory
JPH04290150A (ja) Fifoバッファの制御装置及び制御方法並びにデータ転送を制御する装置
JPH02227763A (ja) データ転送制御システム
US20020184453A1 (en) Data bus system including posted reads and writes
JPH09251437A (ja) 計算機装置及び連続データサーバ装置
US20050144338A1 (en) Data transfer apparatus
US5961614A (en) System for data transfer through an I/O device using a memory access controller which receives and stores indication of a data status signal
US7529857B2 (en) Data processing apparatus and data transfer control method
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US6233628B1 (en) System and method for transferring data using separate pipes for command and data
JPH0246967B2 (ko)
JPH0743687B2 (ja) データ記憶サブシステム
KR100192960B1 (ko) 컴퓨터시스템의 디엠에이인터페이스방법
JP2752834B2 (ja) データ転送装置
JPH0310354A (ja) データ転送制御システム
JPH06259371A (ja) Dma転送方式
JPH05204830A (ja) 入出力制御装置
JPH07334453A (ja) メモリアクセスシステム
JPH04364556A (ja) データ転送方法

Legal Events

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

Payment date: 20020321

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee