KR20070089556A - Dma 데이터 전송 장치 및 dma 데이터 전송 방법 - Google Patents

Dma 데이터 전송 장치 및 dma 데이터 전송 방법 Download PDF

Info

Publication number
KR20070089556A
KR20070089556A KR1020060042303A KR20060042303A KR20070089556A KR 20070089556 A KR20070089556 A KR 20070089556A KR 1020060042303 A KR1020060042303 A KR 1020060042303A KR 20060042303 A KR20060042303 A KR 20060042303A KR 20070089556 A KR20070089556 A KR 20070089556A
Authority
KR
South Korea
Prior art keywords
data
dma
transfer
data transfer
control unit
Prior art date
Application number
KR1020060042303A
Other languages
English (en)
Other versions
KR100775406B1 (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 KR20070089556A publication Critical patent/KR20070089556A/ko
Application granted granted Critical
Publication of KR100775406B1 publication Critical patent/KR100775406B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 하드웨어의 규모를 그다지 증대시키지 않고서 DMA 엔진 수나 전송 데이터 수를 증가시킬 수 있는 DMA 데이터 전송 장치를 제공하는 것을 목적으로 한다.
DMA 데이터 전송 장치는 메모리(13 또는 30)와, 통신 컨트롤러(15)와, 각각이 메모리(13 또는 30)로부터 통신 컨트롤러(15)로의 DMA에 의한 데이터 전송을 행하는 복수의 DMA 엔진(120)을 구비하는 DMA 컨트롤러(12)와, DMA 제어부(11)를 구비한다. DMA 제어부(11)는 DMA 엔진(120)이 전송할 수 있는 사이즈가 되도록 전송 데이터의 분할 사이즈를 결정하고, DMA 컨트롤러(12)에 DMA에 의한 데이터 전송의 지시를 보내어 DMA에 의한 데이터 전송을 제어한다. DMA 제어부(11)는 데이터 전송의 종료를 판단하기 위한 판단 정보를 통신 컨트롤러(15)에 보낸다. 통신 컨트롤러(15)는 DMA 제어부(11)로부터 보내진 판단 정보에 기초하여 데이터 전송의 종료 판정을 행한다.

Description

DMA 데이터 전송 장치 및 DMA 데이터 전송 방법{APPARATUS AND METHOD FOR PERFORMING DMA DATA TRANSFER}
도 1은 본 발명에 의한 정보 처리 장치의 구성예를 나타내는 도면.
도 2는 본 실시 형태에 의한 통신 제어 카드의 구성예를 나타내는 도면.
도 3은 본 발명에 의한 DMA 데이터 전송의 일례를 설명하는 도면.
도 4는 본 발명에 의한 DMA 데이터 전송을 설명하는 도면.
도 5는 본 발명에 의한 DMA 데이터 전송의 동작 시퀀스의 일례.
도 6은 본 발명에 의한 DMA 데이터 전송의 다른 일례를 설명하는 도면.
도 7은 본 발명에 의한 DMA 데이터 전송의 동작 시퀀스의 다른 일례.
도 8은 본 발명의 배경이 된 DMA 데이터 전송 장치를 도시한 도면.
도 9는 도 8의 DMA 데이터 전송 장치에서의 DMA 데이터 전송의 동작 시퀀스.
도 10은 도 8의 DMA 데이터 전송 장치가 구비하는 송신 체크 처리부의 구성예를 나타내는 도면.
도 11은 도 8의 DMA 데이터 전송 장치가 구비하는 DMA 전송 관리 테이블의 예를 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1: 정보 처리 장치 2: 통신 스위치
3: 정보 처리 장치 4: 통신 매체
10: 통신 제어 카드 11: DMA 제어부
12: DMA 컨트롤러 13: 내장 메모리
14: 메모리 컨트롤러 15: 통신 컨트롤러
16: 제2 호스트 컨트롤러 20: CPU
30: 메모리 40: 제1 호스트 컨트롤러
50: 확장 슬롯 120: DMA 엔진
150: 패킷 생성 회로 151: 전송 종료 판정부
152: 데이터 전송 횟수 카운터 153: 전체 데이터 전송 횟수 유지부
본 발명은 DMA 데이터 전송 장치 및 DMA 데이터 전송 방법에 관한 것으로, 특히 다중으로 DMA 데이터 전송을 행하는 경우에 있어서 DMA 데이터 전송의 종료 판정을 전송처 디바이스에서 행하는 DMA 데이터 전송 장치 및 DMA 데이터 전송 방법에 관한 것이다.
DMA(direct memory access)에 따르면, CPU의 개재없이 데이터 전송을 행할 수 있다. 이 때문에 메모리와 디바이스 사이에 있어서 데이터 전송 중이라도 CPU가 다른 처리를 병행하여 행할 수 있어 시스템으로서 처리 능력이 증대한다. 최근, 메모리의 대역폭(메모리의 데이터 전송 능력)이 증대하고, 또한 데이터 통신의 분야 에서도 10 Gbit 이더넷(등록 상표) 등과 같이 디바이스의 대역폭이 증대하고 있기 때문에 DMA에 대해서도 고성능화가 요망되고 있다.
예컨대, 복수의 메모리 사이에서의 DMA 데이터 전송을 전송 횟수 파라미터에 의해 연속으로 실행함으로써 고속으로 복수의 메모리 사이에서의 데이터 전송을 행하는 것이 알려져 있다(하기 특허문헌 1 참조).
또한, 예컨대 어드레스를 유지하는 1군의 레지스터를 삭감함으로써 DMA 컨트롤러의 소비 전력을 저감시키는 것이 알려져 있다(하기 특허문헌 2 참조).
[특허문헌 1] 일본 특허 공개 평성 제4-236649호 공보
[특허문헌 2] 일본 특허 공개 제2003-316722호 공보
DMA에 있어서 사이즈가 큰 데이터의 전송을 행하는 경우가 있다. 이 경우 CPU가 상기 데이터를, DMA 컨트롤러가 전송할 수 있는 사이즈의 블록 데이터로 분할하고 DMA 컨트롤러에 대하여 데이터 전송 명령을 연속하여 발행해야 한다. 이 때, 전송 데이터의 전송원이 가상 어드레스로 맵핑되어 있는 경우, 1개의 블록 데이터가 가상 어드레스의 페이지의 경계에 걸치지 않도록 분할해야 한다.
또한, CPU 자신도 멀티 스레드(multi-thread)를 이용한 처리에 있어서 복수의 DMA 명령 발행 처리를 시분할로 실행하고 있다. 이 결과, CPU가 DMA 컨트롤러에 대하여 전송 데이터가 상이한 복수의(다중의) DMA 요구를 발행하게 된다.
이상과 같이 DMA 컨트롤러는 DMA 엔진의 수를 늘리고, 병행하여 행하는 데이터 전송의 수(데이터 전송의 다중도)를 늘려 이들을 오류 없이 관리하지 않으면, 그 고성능화를 도모할 수 없다. 그래서 본 발명자는 도 8 내지 도 11에 나타내는 DMA 데이터 전송 장치(200)에 대해서 검토했다. 이 DMA 데이터 전송 장치(200)에서의 DMA 데이터 전송에 대해서 간단히 설명한다.
도 8은 본 발명의 배경이 된 DMA 데이터 전송 장치(200)의 구성도이다. 도 9는 도 8의 DMA 데이터 전송 장치에서의 DMA 데이터 전송의 동작 시퀀스이다.
이하에서는 하나의 전송 데이터(A)에 주목하여 설명한다. 복수의 전송 데이터가 존재하는 경우, 이하에 설명하는 DMA 데이터 전송이 복수의 전송 데이터에 대해서 병행하여 행해진다. 이하의 설명에서 DMA 엔진(221)에 의해 전송되는 분할된 데이터를 블록 데이터라고 부른다. A1, A2, …, Am(1 내지 m은 플러스의 정수, 이하에 있어서 동일함)은 각각 블록 데이터이며, 숫자가 작은 것일수록 전송 데이터의 선두에 가까운 블록 데이터인 것을 나타낸다. 도 9에서 메모리 컨트롤러(230)로부터 각각의 DMA 엔진(221)으로의 데이터 독출은 생략되어 있다.
CPU(210)는 아직 데이터 전송이 할당되어 있지 않은 DMA 엔진(221)에 블록 데이터(A1)의 전송 명령(DMA 데이터 전송 요구)을 보낸다(단계 S100). A1의 전송 명령을 받은 DMA 엔진(221)은 전송처 디바이스(240)에 A1의 데이터 전송을 행한다(단계 S101). 이후, CPU(210)는 단계 S100과 동일하게 하여 A2의 전송 명령을 보내고(단계 S102), 이 전송 명령을 받은 DMA 엔진(221)은 단계 S101과 동일하게 하여 A2의 데이터 전송을 행한다(단계 S103). 그리고 블록 데이터(A1 또는 A2)의 데이터 전송이 종료된 DMA 엔진(221)은 각각 송신 체크 처리부(222)에 대하여 전송 종료 통지를 보낸다(단계 S104, 단계 S105).
이상과 같이 하여 블록 데이터의 전송 처리가 진행된다. 그리고 CPU(210)는 단계 S100과 동일하게 하여 최종 블록 데이터(Am)의 1개 앞의 블록 데이터(Am-1)의 전송 명령을 보내어(단계 S106), Am-1의 데이터 전송이 행해진다(단계 S107). 또한 CPU(210)는 단계 S100과 동일하게 하여 최종 블록 데이터(Am)의 전송 명령을 보내어(단계 S108), Am의 데이터 전송이 행해진다(단계 S109). 이때, 단계 S108에서 CPU(210)는 Am의 데이터 전송을 행하는 DMA 엔진(221)에 대하여 Am이 최종 블록 데이터인 취지를 통지한다.
예컨대, 최종 블록 데이터(Am)의 데이터 사이즈가 하나 앞의 블록 데이터(Am-1)보다 작기 때문에 도 9에 도시한 바와 같이 Am-1보다 먼저 Am의 데이터 전송이 종료되는 경우가 있다. 이 때문에 Am-1의 데이터 전송이 종료되는 것보다 먼저, Am의 데이터 전송을 행하는 DMA 엔진(221)이 Am의 데이터 전송을 종료하고, 송신 체크 처리부(222)에 대하여 최종 블록 데이터 전송 종료 통지를 보낸다(단계 S110). 이후, Am-1의 데이터 전송을 행하는 DMA 엔진(221)이 Am-1의 데이터 전송을 종료하고, 송신 체크 처리부(222)에 대하여 Am-1의 전송 종료 통지를 보낸다(단계 S111).
송신 체크 처리부(222)는 Am을 전송한 DMA 엔진(221)으로부터 최종 블록 데이터 전송 종료 통지를 수신하고, 또한 Am-1의 전송 종료 통지의 수신에 의해 모든 블록 데이터의 전송이 종료된 것을 확인하며, 이후 전송처 디바이스(240)에 대하여 전송 데이터(A)의 전체 데이터 전송 종료 통지를 보낸다(단계 S112). 전송처 디바이스(240)는 데이터 버퍼(241)를 구비하고, 이것에 수신한 블록 데이터(A1 내지 Am)를 저장한다. 전송처 디바이스(240)는 송신 체크 처리부(222)로부터 전체 데이터 전송 종료 통지를 받은 경우, 전송 데이터(A)의 데이터 전송이 종료된 것으로 판정하고 다른 처리를 행한다.
이상과 같은 DMA 데이터 전송을 행하기 위해서, 송신 체크 처리부(222)는 도 10에 도시한 바와 같이 DMA 전송 제어부(223)와 함께 DMA 전송 관리 테이블(224)을 구비해야 한다. DMA 전송 관리 테이블(224)은 도 11에 도시한 바와 같이 전송 데이터 수×DMA 엔진 수의 매트릭스형의 관리 영역을 갖고, 또한 전송 데이터마다 최종 블록 데이터 전송 플래그를 갖는다. 관리 영역의 매트릭스의 각각에 있어서 "미할당" 또는 "전송중"의 상태가 기록된다. 최종 블록 데이터 전송 플래그는 DMA 전송 제어부(223)가 최종 블록 데이터의 전송을 처리한 DMA 엔진(221)으로부터 최종 블록 데이터 전송 종료 통지를 받은 경우에 세트된다.
송신 체크 처리부(222)에서는 DMA 전송 제어부(223)가 DMA 전송 관리 테이블(224)의 갱신 처리를 행한다. 즉, CPU(210)로부터의 데이터 전송 지시에 의해 전송에 관계되는 DMA 엔진(221)의 할당이 행해진 경우, DMA 전송 관리 테이블(224)의 해당하는 매트릭스의 부분의 상태가 "미할당"으로부터 "전송중"으로 변경된다. 블록 데이터의 전송이 종료된 DMA 엔진(221)의 해방이 행해진 경우, DMA 전송 관리 테이블(224)의 해당하는 매트릭스의 부분의 상태가 "전송중"으로부터 "미할당"으로 변경된다. 최종 블록 데이터를 전송한 DMA 엔진(221)으로부터 최종 블록 데이터 전송 종료 통지를 수신한 경우, DMA 전송 관리 테이블(224)의 해당하는 전송 데이터의 최종 블록 데이터 전송 플래그가 "1"로 변경된다.
DMA 전송 제어부(223)는 DMA 전송 관리 테이블(224)의 각각의 전송 데이터의 최종 블록 데이터 전송 플래그가 "1"인지의 여부를 체크한다. DMA 전송 제어부(223)는 최종 블록 데이터 전송 플래그가 "1"인 전송 데이터에 대해서 그 상태가 "전송중"인 DMA 엔진(221)이 존재하지 않으면, 상기 전송 데이터의 전체 데이터 전송 종료 통지를 전송처 디바이스(240)에 보낸다.
본 발명자가 도 8 내지 도 11에 나타내는 DMA 데이터 전송 장치에 대해서 더 검토한 결과, DMA 컨트롤러(220)의 성능을 올리고자 하면, 송신 체크 처리부(222)에서 다음과 같은 문제가 발생하는 것을 알았다.
전송에 관계하고 있는 모든 DMA 엔진(221)에 대해서 전송처 디바이스(240)로의 블록 데이터의 전송이 종료되었는지를 체크해야 한다. 이 때문에 DMA 엔진(221)의 다중도를 올리면(수를 늘림), DMA 전송 관리 테이블(224)에서 DMA 엔진 수의 엔트리, 즉 그 열이 증가한다.
또한 동시에 보다 많은 전송 데이터를 처리하고자 하면, DMA 전송 관리 테이블(224)에서 전송 데이터 수의 엔트리, 즉 그 행이 증가한다. 이것은 전송 데이터의 수가 많아 이들 전송 데이터를 동적으로 관리하고 있는 경우, 전송 데이터의 관리 엔트리를 전부 사용하고 있는 상태에서는 가령 DMA 엔진(221)에 공간이 있더라도 즉시 데이터 전송 처리를 행할 수 없기 때문이다.
또한, DMA 엔진 수나 동시에 처리할 수 있는 전송 데이터의 수를 증가시키면, 이것에 부수되는 처리도 증가되어 버린다. 즉, 이미 전송이 종료되어 있는 DMA 엔진(221)을 다음 전송에 할당하기 위한 자원의 획득/해방 처리 등이 DMA 엔진 수 ×전송 데이터 수에 비례하여 증가한다. 이 때문에 회로가 복잡해져 버린다.
또한 DMA의 성능 향상을 위해서는 DMA 엔진 수와 전송 데이터 수의 밸런스가 취해진 증가가 필요해진다. 그러나 DMA 엔진 수와 전송 데이터 수의 증가에 의해 DMA 데이터 전송의 성능 향상을 도모하면, 전술한 바와 같이 DMA 데이터 전송 회로의 규모가 증대하여 복잡해진다.
본 발명은 하드웨어의 규모를 그다지 증대시키지 않고서 DMA 엔진 수나 전송 데이터 수를 증가시킬 수 있는 DMA 데이터 전송 장치를 제공하는 것을 목적으로 한다.
또한, 본 발명은 하드웨어의 규모를 그다지 증대시키지 않고서 DMA 엔진 수나 전송 데이터 수를 증가시킬 수 있는 DMA 데이터 전송 방법을 제공하는 것을 목적으로 한다.
본 발명의 DMA 데이터 전송 장치는 데이터의 전송원인 메모리와, 데이터의 전송처인 전송처 디바이스와, 각각이 상기 메모리로부터 상기 전송처 디바이스로의 DMA에 의한 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비한다. 상기 DMA 제어부가 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 보낸다. 상기 전송처 디바이스가 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행한다.
또한, 바람직하게는 본 발명의 DMA 데이터 전송 장치에서 상기 DMA 제어부가 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수가 확정된 후에, 상기 확정의 결과에 기초하여 생성한 상기 판단 정보를 상기 전송처 디바이스에 보낸다.
또한, 바람직하게는 본 발명의 DMA 데이터 전송 장치에서 상기 판단 정보가 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수로 이루어지고, 상기 전송처 디바이스가 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터와, 상기 전체 데이터 전송 횟수를 유지하는 전체 데이터 전송 횟수 유지부를 구비하며, 상기 데이터 전송 횟수 카운터의 값이 상기 전체 데이터 전송 횟수에 도달한 경우, 상기 전송하여야 할 데이터의 데이터 전송이 종료된 것으로 판단한다.
또한, 바람직하게는 본 발명의 DMA 데이터 전송 장치에서 상기 전송처 디바이스가 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터를 구비하고, 상기 판단 정보가 상기 데이터 전송 횟수 카운터가 카운트할 수 있는 최대값인 카운터 MAX값에서부터 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수를 뺀 값인 데이터 전송 횟수 부족값으로 이루어지며, 상기 전송처 디바이스가 상기 데이터 전송 횟수 부족값을 상기 데이터 전송 횟수 카운터의 값에 가산하여 상기 데이터 전송 횟수 카운터의 값이 상기 카운터 MAX값에 도달한 경우, 상기 전송하여야 할 데이터의 데이터 전송이 종료된 것으로 판단한다.
또한, 바람직하게는 본 발명의 DMA 데이터 전송 장치에서 상기 메모리가 사용자에 의해 작성된 데이터가 기억된 제1 메모리와, 미리 그 내용이 정해진 데이터가 기억된 제2 메모리를 포함하고, 상기 제2 메모리가 상기 제1 메모리보다 상기 DMA 제어부에 가까운 위치에 마련된다.
본 발명의 DMA 데이터 전송 방법은 각각이 메모리로부터 전송처 디바이스로의 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비하는 DMA 데이터 전송 장치에서의 DMA 전송 방법이다. 이 DMA 전송 방법은 상기 DMA 제어부가 상기 복수의 DMA 엔진이 전송할 수 있는 사이즈가 되도록 전송하여야 할 데이터의 분할 사이즈를 결정하고, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하며, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진이 상기 DMA 제어부의 지시에 따라 상기 전송하여야 할 데이터를 분할하여 상기 전송 디바이스에 전송하고, 상기 DMA 제어부가 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 보내며, 상기 전송처 디바이스가 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행한다.
(발명의 효과)
본 발명의 DMA 데이터 전송 장치 및 DMA 데이터 전송 방법에 따르면, 전송처 디바이스가 DMA 제어부로부터 보내진 판단 정보에 기초하여 데이터 전송의 종료 판 정을 행한다. 즉, 본 발명에서는 전송처 디바이스가 데이터 전송의 종료를 판정하는 기능을 구비한다. 이에 따라 DMA 컨트롤러가 데이터 전송의 종료를 판정하기 위한 회로(예컨대, 도 8 및 도 10에 나타내는 송신 체크 처리부(222))를 불필요하게 할 수 있다. 따라서 DMA 컨트롤러에서 DMA 데이터 전송의 성능을 향상시키기 위해서 DMA 엔진의 다중도를 올리는 경우, DMA 엔진을 증설하는 것만으로 좋고, 이 이외의 하드웨어의 증가는 발생하지 않는다. 또한 전송 데이터 수가 증가하더라도 전송처 디바이스에 있어서 데이터 전송의 종료를 판정하는 기능을 증설하는 것만으로 좋고, 이 이외의 하드웨어의 증가는 발생하지 않는다. 따라서 예컨대 DMA 엔진 수×전송 데이터 수의 DMA 전송 관리 테이블을 준비할 필요는 없어 회로의 규모를 매우 작게 할 수 있다.
또한, 본 발명의 DMA 데이터 전송 장치의 일실시 형태에 따르면, DMA 제어부가 전체 데이터 전송 횟수에 기초하여 생성한 판단 정보를 전송처 디바이스에 보낸다. 이에 따라 전송처 디바이스는 데이터 전송의 종료전에 판단 정보를 수취하여 데이터 전송의 종료를 정확히 판단할 수 있다.
또한 본 발명의 DMA 데이터 전송 장치의 일실시 형태에 따르면, 판단 정보가 전체 데이터 전송 횟수로 이루어지기 때문에, 데이터 전송의 횟수를 카운트하는 것만으로 데이터 전송이 종료된 것을 판단할 수 있다. 이에 따라 전송처 디바이스는 특히 복잡한 회로나 처리를 필요로 하는 일 없이 용이하게 데이터 전송의 종료를 판단할 수 있다.
또한, 본 발명의 DMA 데이터 전송 장치의 일실시 형태에 따르면, 판단 정보 가 데이터 전송 횟수 부족값으로 이루어지기 때문에, 데이터 전송 횟수 카운터의 값이 카운터 MAX값에 도달한 경우, 데이터 전송이 종료된 것으로 판단할 수 있다. 이에 따라 전체 데이터 전송 횟수를 유지할 필요가 없기 때문에 전송처 디바이스에서의 회로를 보다 한층 간단한 구성으로 할 수 있다.
또한 본 발명의 DMA 데이터 전송 장치의 일실시 형태에 따르면, 제2 메모리가 제1 메모리보다 DMA 제어부에 가까운 위치에 마련된다. 이에 따라 헤더 정보 등의 미리 그 내용이 정해진 데이터의 전송 시간을 삭감할 수 있다.
(발명을 실시하기 위한 최선의 형태)
도 1 및 도 2는 본 발명의 일실시 형태에 의한 DMA 데이터 전송 장치의 구성도이며, 아울러 본 발명의 일실시 형태에 의한 DMA 데이터 전송 장치의 구성을 나타낸다. 특히, 도 1은 본 발명에 따르는 정보 처리 장치의 구성예를 나타내고, 도 2는 본 발명에 따르는 통신 제어 카드의 구성예를 나타내는 도면이다.
도 1에서 정보 처리 장치(1)는 예컨대 그 자체로 독립하여 동작하는 컴퓨터이며, CPU(중앙 연산 처리 장치)(20), 메모리(30), 제1 호스트 컨트롤러(40), 확장 슬롯(50)을 구비한다. 확장 슬롯(50)은 적어도 1개 마련되고, 도시하지 않지만 복수 개 구비할 수 있다. CPU(20)는 정보 처리 장치(1) 전체의 제어/연산을 행한다. 메모리(제1 메모리)(30)는 예컨대 외부 기억 장치로 이루어져, 예컨대 사용자에 의해 작성된 여러가지 데이터(또는 대용량의 데이터)를 기억한다. 메모리(30)는 DMA에 의한 데이터 전송의 전송원이 된다. 제1 호스트 컨트롤러(40)는 CPU(20), 메모리(30), 확장 슬롯(50)(따라서, 통신 제어 카드(10))에 접속되어 이들 사이에서의 통신을 행한다. 확장 슬롯(50)은 정보 처리 장치(1)에 여러가지 기능을 부가하기 위해서 상기 기능을 실현하는 디바이스를 접속하기 위한 슬롯이며 여러가지 확장 카드(또는 확장 보드)를 탑재한다.
이 예에서 확장 카드의 예로서, DMA 데이터 전송 기능을 갖는 통신 제어 카드(10)가 탑재된다. 통신 제어 카드(10)는 접속 배선이나 광 섬유 등의 통신 매체(4)를 통해, 예컨대 정보 처리 장치(1)의 외부의 통신 스위치(2)에 접속된다. 정보 처리 장치(1)는 통신 스위치(2)를 통해 다른 정보 처리 장치(3)와 접속된다. 또는 통신 제어 카드(10)가 도 1에 점선으로 도시한 바와 같이 직접, 다른 정보 처리 장치(3)에 접속되도록 하더라도 좋다. 이에 따라 정보 처리 장치(1)는 통신 제어 카드(확장 카드)(10)를 통해 통신 스위치(2) 또는 다른 정보 처리 장치(3)와 접속되어 이들 사이에서 통신을 행한다.
도 2에서 통신 제어 카드(10)는 DMA 제어부(11), DMA 컨트롤러(12), 내장 메모리(13), 메모리 컨트롤러(14), 통신 컨트롤러(15) 및 제2 호스트 컨트롤러(16)를 구비한다. DMA 컨트롤러(12)는 복수의 DMA 엔진(120)을 구비한다. 통신 컨트롤러(15)는 패킷 생성 회로(150) 및 전송 종료 판정부(151)를 구비한다.
DMA 제어부(11)는 통신 제어 카드(10)에 탑재된 CPU로 이루어지고 통신 제어 카드(10)의 전체를 제어한다. 정보 처리 장치(1)의 CPU(20)로부터 데이터 전송 지시를 받으면, DMA 제어부(11)는 DMA 엔진(120)이 전송할 수 있는 사이즈가 되도록 메모리(30) 또는 내장 메모리(13)로부터의 전송하여야 할 데이터(이하, 전송 데이터)의 분할 사이즈를 결정하여 DMA 컨트롤러(12)(의 복수의 DMA 엔진(120))에 DMA 에 의한 데이터 전송의 지시를 보낸다. DMA 엔진(120)이 전송할 수 있는 사이즈(데이터의 최대 길이)는 미리 정해지며 각각의 DMA 엔진(120)에 있어서 동일하다.
DMA 제어부(11)는 전송 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 통신 컨트롤러(15)에 보낸다. 구체적으로는 DMA 제어부(11)는 전송 데이터마다의 데이터 전송의 횟수(전체 데이터 전송 횟수(m))가 확정되면, 전송 종료 판정부(151)에 전송 데이터마다의 판단 정보를 통지한다. 즉, 복수의 전송 데이터 각각에 대해서 판단 정보가 통지된다.
DMA 컨트롤러(12)는 실제로 DMA에 의한 데이터 전송을 행한다. 이 때문에 DMA 컨트롤러(12)는 복수의 DMA 엔진(120)을 구비한다. 복수의 DMA 엔진(120)은 각각 DMA 제어부(11)로부터의 지시에 따라 정보 처리 장치(1)의 메모리(30) 또는 내장 메모리(13)로부터의 전송 데이터를 분할하고, 분할된 전송 데이터의 블록 데이터를 통신 컨트롤러(15)에 전송한다. 이하의 설명에서 각각의 DMA 엔진(120)에 의해 전송되는 분할된 전송 데이터의 부분의 각각을 블록 데이터라고 부른다.
내장 메모리(제2 메모리)(13)는 패킷의 헤더 정보와 같이 미리 그 내용이 정해진 데이터를 기억한다. 내장 메모리(13)는 DMA 데이터 전송에서의 데이터의 전송원이 된다. 내장 메모리(13)는 메모리(30)와 비교하면, DMA 제어부(11)인 CPU(및 DMA 컨트롤러(12))에 대하여 물리적으로 가까운 위치에 있기 때문에, 캐쉬 메모리라고 생각해도 좋다. 메모리 컨트롤러(14)는 내장 메모리(13)와 DMA 컨트롤러(12) 사이의 데이터 전송을 제어한다.
통신 컨트롤러(15)는 전송처 디바이스이며, DMA에 의한 데이터 전송에서의 데이터의 전송처가 된다. 통신 컨트롤러(15)에 있어서 패킷 생성 회로(150)는 전송된 블록 데이터가 모두 구비되면, 이것에 기초하여 패킷을 생성하고 생성된 패킷을 외부에 송신한다. 이에 따라 통신 컨트롤러(15)는 통신 스위치(2) 또는 다른 정보 처리 장치(3) 사이에서 패킷 통신을 행한다. 전송 종료 판정부(151)는 DMA 제어부(11)로부터 보내진 판단 정보에 기초하여 전송 데이터에 대해서 그 데이터 전송의 종료 판정을 행한다. 구체적으로는 전송 종료 판정부(151)는 DMA 제어부(11)로부터 받은 전송 데이터마다의 판단 정보에 기초하여 데이터 전송의 종료 판정을 행한다. 즉, 복수의 전송 데이터 각각에 대해서 그 데이터 전송의 종료 판정을 행한다. 전송 종료 판정부(151)는 데이터 전송이 종료했다고 판정한 경우, 그 취지를 패킷 생성 회로(150)에 통지한다. 이에 따라서, 예컨대 패킷 생성 회로(150)는 패킷을 송출한다.
제2 호스트 컨트롤러(16)는 정보 처리 장치(1)의 제1 호스트 컨트롤러(40)와의 통신을 행한다. 정보 처리 장치(1)의 CPU(20)로부터의 데이터 전송 지시는 제1 호스트 컨트롤러(40), 제2 호스트 컨트롤러(16)를 통해 DMA 제어부(11)에 보내진다. 또한, 정보 처리 장치(1)의 메모리(30)로부터 전송되는 데이터는 제1 호스트 컨트롤러(40), 제2 호스트 컨트롤러(16)를 통해 DMA 컨트롤러(12)에 보내진다.
제2 호스트 컨트롤러(16)는 정보 처리 장치(1)의 제1 호스트 컨트롤러(40)와 확장 슬롯(50)을 통해 접속된다. 제2 호스트 컨트롤러(16)는 DMA 제어부(11), DMA 컨트롤러(12)와 내부 버스로 접속된다. DMA 컨트롤러(12)는 메모리 컨트롤러(14)와 내부 버스로 접속된다. 통신 컨트롤러(15)는 DMA 제어부(11), DMA 컨트롤러(12)와 내부 버스로 접속된다.
도 3은 본 발명의 일실시 형태에 의한 DMA 데이터 전송 기능을 구비하는 통신 제어 카드(10)의 구체적인 구성의 일례를 설명하는 도면이다.
이 예는 판단 정보가 전송 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수(m)로 이루어지는 예이다. 이에 따라 이 예의 전송 종료 판정부(151)는 데이터 전송 횟수 카운터(152)와 전체 데이터 전송 횟수 유지부(153)를 구비한다. 데이터 전송 횟수 카운터(152) 및 전체 데이터 전송 횟수 유지부(153)는 데이터 버퍼(154)마다(즉, 전송 데이터마다) 마련된다.
DMA 제어부(11)는 정보 처리 장치(1)로부터의 통신 커맨드를 해석하고, 각각의 DMA 엔진(120)이 전송할 수 있는 사이즈가 되도록 전송 데이터의 분할 사이즈를 결정하여 DMA 컨트롤러(12)에 DMA에 의한 데이터 전송의 지시를 보낸다. 또한, DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 경우, 이것을 통신 컨트롤러(15)에 통지한다. 전체 데이터 전송 횟수(m)는 전송 데이터의 전체를 전송하기 위해서 필요한 전송 횟수이다.
전송처 디바이스인 통신 컨트롤러(15)는 전송 데이터마다 전송된 블록 데이터를 저장하는 데이터 버퍼(154)를 구비한다. 데이터 버퍼(154)는 전송 데이터마다 DMA 컨트롤러(12)(의 DMA 엔진(120))가 액세스할 수 있는 메모리 영역이다. 통신 컨트롤러(15)는 전송 종료 판정부(151)로서 데이터 전송 횟수 카운터(152) 및 전체 데이터 전송 횟수 유지부(153)를 구비한다. 데이터 전송 횟수 카운터(152)는 전송 데이터마다 상기 전송 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트한다. 전체 데이터 전송 횟수 유지부(153)는 DMA 제어부(11)로부터 보내진 전체 데이터 전송 횟수(m)를 유지한다.
데이터 전송 횟수 카운터(152)는 전송 데이터마다 DMA 컨트롤러(12)로부터의 데이터 전송의 횟수(즉, DMA 엔진(120)으로부터의 전송 종료 통지의 수)를 카운트한다. 통신 컨트롤러(15)(또는 데이터 전송 횟수 카운터(152))는 데이터 전송 횟수 카운터(152)의 값과 유지된 전체 데이터 전송 횟수(m)를 비교하여, 양자가 일치한 경우(즉, 데이터 전송 횟수 카운터의 값이 전체 데이터 전송 횟수에 도달한 경우), 데이터 전송의 종료라고 판단하여 패킷 생성 회로(150)에 데이터 전송 종료 통지를 보낸다. 따라서 전송 종료 판정부(151)가 판정의 대상으로 하는 「데이터 전송의 종료」는 각각의 DMA 엔진(120)에서의 데이터 전송의 종료가 아니라, 1개의 전송 데이터의 전체(전체 블록 데이터)의 데이터 전송의 종료이다.
다음에 도 3의 구성에 따라서 본 발명의 일실시 형태에 의한 DMA 데이터 전송에 대해서 설명한다. 또, 이하에서는 하나의 전송 데이터(A)에 주목하여 설명한다. 복수의 전송 데이터(A 및 B)가 존재하는 경우, 이하에 설명하는 DMA 데이터 전송이 복수의 전송 데이터(A 및 B)에 대해서 병행하여 행해진다. 이 경우, 전송 데이터(B)용의 데이터 버퍼(154)가 마련되고, 이에 따라서 데이터 전송 횟수 카운터(152) 및 전체 데이터 전송 횟수 유지부(153)가 마련된다.
정보 처리 장치(1)의 CPU(20)는 패킷 송신 명령을 보낸다. 이 패킷 송신 명령은 정보 처리 장치(1)의 제1 호스트 컨트롤러(40)를 경유해서 통신 제어 카드(10)의 제2 호스트 컨트롤러(16)에 전달된다. DMA 제어부(11)는 제2 호스트 컨트 롤러(16)로부터 패킷 송신 명령을 받아, 정보 처리 장치(1)의 메모리(30)에 있는 통신 커맨드를 제2 호스트 컨트롤러(16) 및 제1 호스트 컨트롤러(40)를 경유해서 독출한다. 그리고 DMA 제어부(11)는 독출한 통신 커맨드를 해석하고, DMA 엔진(120)이 전송할 수 있는 사이즈가 되도록 전송 데이터의 분할 사이즈를 결정하여 DMA 컨트롤러(12)에 데이터 전송 지시를 보낸다.
DMA 컨트롤러(12) 내의 DMA 엔진(120)은 각각 DMA 제어부(11)로부터의 지시에 기초하여 예컨대 메모리 컨트롤러(14)를 경유해서 내장 메모리(13)로부터 블록 데이터를 독출하여 통신 컨트롤러(15)에 전송한다. 예컨대, 도 4에 도시한 바와 같이 내장 메모리(13)로부터 블록 데이터(A1)를 독출한다. 이에 따라 패킷 생성 회로(150)는 패킷(160)의 헤더(제어 데이터)를 내장 메모리(13)로부터 데이터 전송된 데이터에 의해 구성한다.
또한, DMA 엔진(120)은 각각 DMA 제어부(11)로부터의 지시에 기초하여 예컨대 제2 호스트 컨트롤러(16)를 경유해서 정보 처리 장치(1)의 메모리(30)로부터 블록 데이터를 독출하여 통신 컨트롤러(15)에 전송한다. 예컨대, 도 4에 도시한 바와 같이 메모리(30)로부터 블록 데이터(A2 내지 Am)를 독출한다. 이에 따라 패킷 생성 회로(150)는 패킷(160)의 보디(body)(실제의 데이터)를 메모리(30)로부터 데이터 전송된 데이터에 의해 구성한다. 이에 따라 패킷(160)이 생성된다.
복수의 DMA 엔진(120) 각각은 병행하여 동작하고, 한편 도 4에 도시한 바와 같이 복수의 DMA 엔진(120)의 각각이 전송하는 블록 데이터의 데이터 길이는 상이하다. 이 때문에 도 5에 나타내는 Am-1과 Am과 같이 DMA 제어부(11)로부터의 데이 터 전송의 지시의 순서와, 데이터 전송이 종료되는 순서는 일치하지 않는 경우가 있다. 이것은 예컨대, 도 4에 도시한 바와 같이 Am-1은 블록 데이터의 최대 길이 사이즈인 데 대하여 Am은 나머지의 작은 사이즈의 블록 데이터로 이루어지기 때문이다.
또, 도 4에서 블록 데이터(A2, A4, A5 및 Am-1)는 블록 데이터의 최대 길이 사이즈를 갖는다. 한편, 블록 데이터(A1, A3 및 Am)는 각각의 이유로부터 상기 최대 길이 사이즈보다 작은 사이즈를 갖는다.
DMA 제어부(11)는 통상 데이터 전송 지시를 보낼 때에, DMA 엔진(120)이 전송할 수 있는 최대 사이즈가 되도록 전송 데이터의 분할 사이즈를 결정한다. 그러나 도 4에 도시한 바와 같이 전송 데이터가 메모리(30) 상에서 페이지의 경계(점선으로 나타냄)에 걸쳐 존재하고 있는 경우, 블록 데이터(A3)는 상기 페이지의 경계를 걸치지 않도록 DMA 엔진(120)이 전송할 수 있는 최대 사이즈보다 작은 사이즈로 분할된다. 그 때문에 전체 데이터 전송 횟수(m)가 확정되는 시기는 전송 데이터에 따라 상이하며 정해져 있지 않다. 대개의 경우, 전체 데이터 전송 횟수(m)는 전송 데이터의 최종 끝의 가까이까지 데이터 전송이 행해진 시점에서 확정한다.
따라서 본 발명에서 DMA 제어부(11)는 복수의 DMA 엔진이 전송할 수 있는 사이즈가 되도록 전송 데이터의 분할 사이즈를 결정하여 이 결정의 결과에 기초하여 전체 데이터 전송 횟수(m)를 확정하고, 이 확정의 결과에 기초하여 판단 정보를 생성한다. 도 3의 예에서는 DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 시점에서(또는 확정된 후에) 판단 정보로서 통신 컨트롤러(15)에 대하여 전체 데이터 전송 횟수(m)를 통지한다.
통신 컨트롤러(15)(또는 데이터 전송 횟수 카운터(152))는 DMA 컨트롤러(12)로부터의 데이터 전송의 횟수가 전체 데이터 전송 횟수(m)에 도달한 경우, 즉 데이터 전송 횟수 카운터(152)의 값이 전체 데이터 전송 횟수(m)에 도달한 경우, 그 전송 데이터에 대한 데이터 전송을 종료했다고 판단하여 패킷(160)을 송출한다.
도 5는 도 3의 예에서의 본 발명에 의한 DMA 데이터 전송의 동작 시퀀스이다. 도 5의 동작 시퀀스는 전송 데이터(A)에 대한 DMA 데이터 전송의 예이다.
이하의 설명에서 A1, A2, …, Am은 각각 블록 데이터이며, 숫자가 작을수록 전송 데이터의 선두에 가까운 블록 데이터인 것을 나타낸다. 도 5에서 CPU(20)로부터 DMA 제어부(11)로의 패킷 송신 명령이나, 메모리(30) 또는 내장 메모리(13)로부터 DMA 엔진(120)으로의 데이터 독출은 생략되어 있다. 도 5는 하나의 전송 데이터(A)의 DMA 데이터 전송에 대해서 나타내지만, 실제로는 복수의 전송 데이터(A, B, …)의 DMA에 의한 데이터 전송이 병행되어 행해진다.
DMA 제어부(11)는 DMA 엔진(120)이 전송할 수 있는 사이즈가 되도록 전송 데이터(A)의 분할 사이즈를 결정하고, DMA 컨트롤러(12)에 대하여 전송 데이터(A)를 지정 사이즈로 분할하여 전송하는 취지의 데이터 전송 지시(DMA 데이터 전송 요구)를 보낸다. 즉, DMA 제어부(11)는 DMA 컨트롤러(12)에 A1의 전송 명령을 보낸다(단계 S10). 이 명령에서 데이터 전송원의 내장 메모리(13) 또는 메모리(30) 및 데이터 전송처인 전송처 디바이스, 예컨대 통신 컨트롤러(15)도 지시된다.
DMA 컨트롤러(12)에서 DMA 엔진(120)은 각각 DMA 제어부(11)의 지시에 따라 DMA에 의한 데이터 전송을 행한다. 예컨대, A1의 전송 명령을 받은 DMA 컨트롤러(12)는 아직 데이터 전송이 할당되어 있지 않은 DMA 엔진(120)을 이용하여 통신 컨트롤러(15)로의 A1의 데이터 전송을 행한다(단계 S11). 구체적으로는 DMA 엔진(120)은 메모리 컨트롤러(14)에 대하여 리드 요구를 보냄으로써 A1을 독출하고 이것을 통신 컨트롤러(15)에 전송한다. DMA 엔진(120)에 데이터 전송이 할당되어 있는지의 여부는, 예컨대 DMA 엔진(120)마다 할당중인지의 여부를 나타내는 플래그를 마련하도록 하면 좋다.
이후, DMA 제어부(11)는 단계 S10과 동일하게 하여 A2의 전송 명령을 보내고(단계 S12), A2의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S11과 동일하게 하여 A2의 데이터 전송을 행한다(단계 S13). 그리고, 블록 데이터(A1 또는 A2)의 데이터 전송이 종료된 DMA 엔진(120)은 각각 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S14, 단계 S15). 이에 따라 데이터 전송 횟수 카운터(152)는 데이터 전송 횟수를 카운트한다.
DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 시점에서 통신 컨트롤러(15)에 대하여 전체 데이터 전송 횟수(m)를 통지한다(단계 S16). 이에 따라 전체 데이터 전송 횟수 유지부(153)는 DMA 제어부(11)로부터 보내진 전체 데이터 전송 횟수(m)를 유지한다. 이후, 통신 컨트롤러(15)에서 데이터 전송 횟수 카운터(152)의 값과, 전체 데이터 전송 횟수(m)가 비교된다. 양자가 일치한 경우, 데이터 전송이 종료되었다고 판단된다.
이상과 같이 하여 블록 데이터의 전송 처리가 진행된다. 그리고, DMA 제어 부(11)는 단계 S10과 동일하게 하여 Am-1의 전송 명령을 보내고(단계 S17), Am-1의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S11과 동일하게 하여 Am-1의 데이터 전송을 행한다(단계 S18). 이후, DMA 제어부(11)는 단계 S10과 동일하게 하여 Am의 전송 명령을 보내고(단계 S19), Am의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S11과 동일하게 하여 Am의 데이터 전송을 행한다(단계 S20).
Am의 데이터 전송이 종료되면, DMA 컨트롤러(12)는 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S21). 여기서는 최종 블록 데이터(Am)의 데이터 사이즈가 하나 앞의 블록 데이터(Am-1)보다 작기 때문에 Am-1보다 먼저 Am의 데이터 전송이 종료된다. 이 때문에 이 시점에서의 데이터 전송 횟수 카운터(152)의 값은 m-1이며, 아직 전체 데이터 전송 횟수(m)에는 만족하지 않는다.
Am-1의 데이터 전송이 종료되면, DMA 컨트롤러(12)는 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S22). 이 시점에서 데이터 전송 횟수 카운터(152)의 값이 m이 되어 전체 데이터 전송 횟수(m)와 일치한다. 그래서 전송 종료 판정부(151)(데이터 전송 횟수 카운터(152))는 전송 데이터(A)의 데이터 전송이 종료되었다고 판단한다.
도 6은 본 발명의 일실시 형태에 의한 DMA 데이터 전송 기능을 구비하는 통신 제어 카드(10)의 구체적인 구성의 다른 일례를 설명하는 도면이다. 도 6은 도 3에 대응하는 도면이며, 따라서 도 3과 동일한 부분에 대한 설명은 생략한다.
이 예는 판단 정보가 카운터 MAX값에서부터 전체 데이터 전송 횟수(m)를 뺀 값인 데이터 전송 횟수 부족값으로 이루어지는 예이다. 카운터 MAX값은 데이터 전 송 횟수 카운터(152)가 카운트할 수 있는 최대값이다. 카운터 MAX값은 DMA에 의한 데이터 전송에 있어서 실행이 허용되는 데이터 전송의 횟수의 최대값과 동일하다. 이에 따라, 이 예의 전송 종료 판정부(151)는 전송 종료 판정부(151)로서 데이터 전송 횟수 카운터(152)만을 구비한다. 데이터 전송 횟수 카운터(152)는 데이터 버퍼(154)(즉, 전송 데이터)마다 마련된다.
DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 경우, 카운터 MAX값에서부터 전체 데이터 전송 횟수(m)를 뺀 값(이하, 데이터 전송 횟수 부족값이라 함)을 통신 컨트롤러(15)에 통지한다. 통신 컨트롤러(15)(데이터 전송 횟수 카운터(152))는 통지된 데이터 전송 횟수 부족값을 그 시점에서의 데이터 전송 횟수 카운터(152)의 값에 가산하여, 그 값이 카운터 MAX값에 도달한 경우, 전송 데이터의 데이터 전송이 종료된 것으로 판단한다. 그 후 데이터 전송 횟수 카운터(152)는 데이터 전송 횟수를 계속 카운트하고, 그 카운트값이 카운터 MAX값에 도달한 경우, 데이터 전송이 종료되었다고 판단하여 패킷 생성 회로(150)에 데이터 전송 종료 통지를 보낸다.
예컨대, 카운터 MAX값이 16이며, 전송 데이터(A)의 전체 데이터 전송 횟수(m)가 10인 경우에 대해서 생각한다. 데이터 전송 횟수 카운터(152)는 블록 데이터(A1, A2, …)의 전송 종료마다 데이터 전송 횟수를 1, 2, …로 카운트한다. DMA 제어부(11)에서 전체 데이터 전송 횟수(m)가 확정되면, 카운터 MAX값에서부터 전체 데이터 전송 횟수(m)가 빠진 값, 즉 16-10=6이 데이터 전송 횟수 부족값으로서 통신 컨트롤러(15)에 보내진다. 여기서, 데이터 전송 횟수 카운터(152)의 값이 6인 시점에서 데이터 전송 횟수 부족값이 보내졌다고 한다. 이 경우, 데이터 전송 횟수 카운터(152)의 값에 데이터 전송 횟수 부족값이 가산되어 데이터 전송 횟수 카운터(152)의 값이 6+6=12가 된다. 그 후, 데이터 전송 횟수 카운터(152)는 블록 데이터의 전송 종료마다 13, 14, …로 계속 카운트하여 데이터 전송 횟수 카운터(152)값이 카운터 MAX값, 즉 16에 도달한 경우, 데이터 전송의 종료라고 판단한다.
다음에 도 6의 구성에 따라서 본 발명의 일실시 형태에 의한 DMA 데이터 전송에 대해서 설명한다. 즉, 도 3의 예과 동일하게 하여 정보 처리 장치(1)의 CPU(20)로부터의 패킷 송신 명령에 따라 DMA 제어부(11)는 DMA 컨트롤러(12)에 데이터 전송 지시를 보낸다. DMA 컨트롤러(12)의 DMA 엔진(120)은 각각 DMA 제어부(11)로부터의 지시에 기초하여 내장 메모리(13) 또는 메모리(30)로부터 블록 데이터를 독출하여 통신 컨트롤러(15)에 전송한다. 데이터 전송 횟수 카운터(152)는 DMA 컨트롤러(12)로부터의 데이터 전송의 횟수를 카운트한다.
DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 시점에서 카운터 MAX값에서부터 전체 데이터 전송 횟수(m)를 뺀 값, 즉 데이터 전송 횟수 부족값을 통신 컨트롤러(15)에 대하여 통지한다. 통신 컨트롤러(15)는 DMA 제어부(11)로부터 받은 데이터 전송 횟수 부족값을 데이터 전송 횟수 카운터(152)에 가산한다. 그 후에도 데이터 전송 횟수 카운터(152)는 DMA 컨트롤러(12)로부터의 데이터 전송의 횟수를 계속 카운트하여 그 카운트값이 카운터 MAX값에 도달하면, 그 전송 데이터에 대한 데이터 전송이 종료되었다고 판단하여 패킷(160)을 송출한다.
도 7은 도 6의 예에서의 본 발명에 의한 DMA 데이터 전송의 동작 시퀀스의 다른 일례이다. 도 7은 도 5에 대응하며, 따라서 도 5와 동일한 부분에 대한 설명은 생략한다.
DMA 제어부(11)는 단계 S10과 동일하게 하여 DMA 컨트롤러(12)에 대하여 A1의 전송 명령을 보내고(단계 S30), A1의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S11과 동일하게 하여 A1의 데이터 전송을 행한다(단계 S31). 이것에 계속하여 DMA 제어부(11)는 단계 S12와 동일하게 하여 A2의 전송 명령을 보내고(단계 S32), A2의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S13과 동일하게 하여 A2의 데이터 전송을 행한다(단계 S33). 그리고 블록 데이터(A1 또는 A2)의 데이터 전송이 종료된 DMA 컨트롤러(12)는 각각 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S34, 단계 S35). 이에 따라 데이터 전송 횟수 카운터(152)는 데이터 전송의 횟수를 카운트한다.
DMA 제어부(11)는 전체 데이터 전송 횟수(m)가 확정된 시점에서 통신 컨트롤러(15)에 대하여 데이터 전송 횟수 부족값(Nmax-m)을 통지한다(단계 S36). 이에 따라 데이터 전송 횟수 카운터(152)의 값(k)에 데이터 전송 횟수 부족값(Nmax-m)이 가산된다. 이에 따라 데이터 전송 횟수 카운터(152)의 값은 Nmax-m+k가 된다. 이후, 데이터 전송 횟수 카운터(152)는 DMA 컨트롤러(12)로부터의 전송 종료 통지를 수신할 때마다 이것을 계속 카운트한다.
이상과 같이 하여, 블록 데이터의 전송 처리가 진행된다. 그리고 DMA 제어부(11)는 단계 S17과 동일하게 하여 Am-1의 전송 명령을 보내고(단계 S37), Am-1의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S18과 동일하게 하여 Am-1의 데이터 전 송을 행한다(단계 S38). 이후, DMA 제어부(11)는 단계 S19와 동일하게 하여 Am의 전송 명령을 보내고(단계 S39), Am의 전송 명령을 받은 DMA 컨트롤러(12)는 단계 S20과 동일하게 하여 Am의 데이터 전송을 행한다(단계 S40).
Am의 데이터 전송이 종료되면, DMA 컨트롤러(12)는 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S41). 전술한 바와 같이 Am-1보다 먼저 Am의 데이터 전송이 종료되어 있다. 이 때문에 이 시점에서의 데이터 전송 횟수 카운터(152)의 값은 Nmax-1이며, 아직 카운터 MAX값에는 만족하지 않는다.
Am-1의 데이터 전송이 종료되면, DMA 컨트롤러(12)는 통신 컨트롤러(15)에 대하여 전송 종료 통지를 보낸다(단계 S42). 이 시점에서 데이터 전송 횟수 카운터(152)의 값이 Nmax가 된다. 그래서 통신 컨트롤러(15)(데이터 전송 횟수 카운터(152))는 전송 데이터(A)의 데이터 전송이 종료되었다고 판단한다.
도 6의 예에 따르면, 통신 컨트롤러(15)에 DMA 제어부(11)로부터 통지된 전체 데이터 전송 횟수를 유지하는 전체 데이터 전송 횟수 유지부(153)를 마련하지 않아도 된다. 이 때문에 도 3의 예와 비교하여 통신 컨트롤러(15)의 데이터 전송 횟수 카운터(152)의 주변 회로를 삭감할 수 있다.
이상으로부터 알 수 있는 바와 같이, 이하와 같이 본 발명의 실시 형태를 파악할 수 있다.
(부기 1)
데이터의 전송원인 메모리와,
데이터의 전송처인 전송처 디바이스와,
각각이 상기 메모리로부터 상기 전송처 디바이스로의 DMA에 의한 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와,
상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비하고,
상기 DMA 제어부가 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 보내며,
상기 전송처 디바이스가 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 2)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 DMA 제어부가 복수의 전송하여야 할 데이터 각각에 대해서 상기 판단 정보를 상기 전송처 디바이스에 보내고,
상기 전송처 디바이스가 상기 판단 정보에 기초하여 상기 복수의 전송하여야 할 데이터 각각에 대해서 그 데이터 전송의 종료 판정을 행하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 3)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 DMA 제어부가 상기 복수의 DMA 엔진이 전송할 수 있는 사이즈가 되도록 상기 전송하여야 할 데이터의 분할 사이즈를 결정하고, 상기 결정의 결과에 기초하 여 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수를 확정하며, 상기 확정의 결과에 기초하여 상기 판단 정보를 생성하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 4)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 DMA 제어부가 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수가 확정된 후에, 상기 확정의 결과에 기초하여 생성된 상기 판단 정보를 상기 전송처 디바이스에 보내는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 5)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 판단 정보가 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수로 이루어지고,
상기 전송처 디바이스가 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터와, 상기 전체 데이터 전송 횟수를 유지하는 전체 데이터 전송 횟수 유지부를 구비하며, 상기 데이터 전송 횟수 카운터의 값이 상기 전체 데이터 전송 횟수에 도달한 경우, 상기 전송해야 할 데이터의 데이터 전송이 종료된 것으로 판단하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 6)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 전송처 디바이스가 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터를 구비하고,
상기 판단 정보가 상기 데이터 전송 횟수 카운터가 카운트할 수 있는 최대값인 카운터 MAX값에서 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수를 뺀 값인 데이터 전송 횟수 부족값으로 이루어지며,
상기 전송처 디바이스가 상기 데이터 전송 횟수 부족값을 상기 데이터 전송 횟수 카운터의 값에 가산하고, 상기 데이터 전송 횟수 카운터의 값이 상기 카운터 MAX값에 도달한 경우, 상기 전송하여야 할 데이터의 데이터 전송이 종료된 것으로 판단하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 7)
부기 6에 기재한 DMA 데이터 전송 장치에 있어서,
상기 카운터 MAX값은 상기 전송하여야 할 데이터의 데이터 전송에 있어서 실행이 허용되는 DMA에 의한 데이터 전송의 횟수의 최대값과 동일한 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 8)
부기 1에 기재한 DMA 데이터 전송 장치에 있어서,
상기 메모리가 사용자에 의해 작성된 데이터가 기억된 제1 메모리와, 미리 그 내용이 정해진 데이터가 기억된 제2 메모리를 포함하고,
상기 제2 메모리가 상기 제1 메모리보다 상기 DMA 제어부에 가까운 위치에 마련되는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 9)
부기 1에 기재한 DMA 데이터 전송 장치가,
적어도 1개의 확장 슬롯을 구비하는 정보 처리 장치와,
상기 확장 슬롯에 탑재된 확장 카드를 더 포함하고,
상기 메모리가 상기 정보 처리 장치 또는 확장 카드에 마련되며, 상기 전송처 디바이스, 상기 DMA 컨트롤러 및 상기 DMA 제어부가 상기 확장 카드에 마련되는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 10)
부기 9에 기재한 DMA 데이터 전송 장치에 있어서,
상기 메모리가 사용자에 의해 작성된 데이터가 기억된 제1 메모리와, 미리 그 내용이 정해진 데이터가 기억된 제2 메모리를 포함하고,
상기 제1 메모리가 상기 정보 처리 장치에 마련되며, 상기 제2 메모리가 상기 확장 카드에 마련되는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 11)
부기 9에 기재한 DMA 데이터 전송 장치에 있어서,
상기 확장 카드가 통신 제어 카드로 이루어지고,
상기 전송처 디바이스는 통신 컨트롤러로 이루어지며,
상기 정보 처리 장치가 상기 확장 카드를 통해 통신 스위치 또는 다른 정보 처리 장치와 접속되어 이들 사이에서 통신을 행하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 12)
부기 11에 기재한 DMA 데이터 전송 장치에 있어서,
상기 전송처 디바이스가 패킷을 생성하는 패킷 생성 회로를 포함하고, 상기 통신 스위치 또는 다른 정보 처리 장치 사이에서 패킷 통신을 행하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 13)
부기 12에 기재한 DMA 데이터 전송 장치에 있어서,
상기 메모리가 사용자에 의해 작성된 데이터가 기억된 제1 메모리와, 미리 그 내용이 정해진 데이터가 기억된 제2 메모리를 포함하고,
상기 제1 메모리가 상기 정보 처리 장치에 마련되며, 상기 제2 메모리가 상기 확장 카드에 마련되고,
상기 패킷 생성 회로가 상기 패킷의 헤더를 상기 제2 메모리로부터 데이터 전송된 데이터에 의해 구성하며, 상기 패킷의 보디를 상기 제1 메모리로부터 데이터 전송된 데이터에 의해 구성함으로써 상기 패킷을 생성하는 것을 특징으로 하는 DMA 데이터 전송 장치.
(부기 14)
각각이 메모리로부터 전송처 디바이스로의 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대 하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비하는 DMA 데이터 전송 장치에서의 DMA 데이터 전송 방법으로서,
상기 DMA 제어부가 상기 복수의 DMA 엔진이 전송할 수 있는 사이즈가 되도록 전송하여야 할 데이터의 분할 사이즈를 결정하고, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하며,
상기 DMA 컨트롤러의 상기 복수의 DMA 엔진이 상기 DMA 제어부의 지시에 따라 상기 전송하여야 할 데이터를 분할하여 상기 전송 디바이스에 전송하고,
상기 DMA 제어부가 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 보내며,
상기 전송처 디바이스가 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행하는 것을 특징으로 하는 DMA 데이터 전송 방법.
이상, 설명한 바와 같이 본 발명에 따르면, DMA 데이터 전송 장치 및 DMA 데이터 전송 방법에 있어서 전송처 디바이스가 데이터 전송의 종료 판정을 행한다. 이에 따라 전송처 디바이스에 있어서 상기 종료 판정의 기능을 증설하고 DMA 컨트롤러에 있어서 DMA에 의한 데이터 전송의 다중도를 올리는 것만으로, 회로의 규모를 거의 크게 하는 일 없이 DMA에 의한 데이터 전송의 성능을 향상시킬 수 있다. 이 결과, DMA에 의한 데이터 전송의 성능을 대폭 향상시킨 컴퓨터 등의 정보 처리 장치를 제공할 수 있다.

Claims (6)

  1. 데이터의 전송원인 메모리와,
    데이터의 전송처인 전송처 디바이스와,
    각각이 상기 메모리로부터 상기 전송처 디바이스로의 DMA에 의한 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와,
    상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비하고,
    상기 DMA 제어부가 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 이송하며,
    상기 전송처 디바이스는 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행하는 것을 특징으로 하는 DMA 데이터 전송 장치.
  2. 제1항에 있어서,
    상기 DMA 제어부는 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수가 확정된 후에, 상기 확정 결과에 기초하여 생성된 상기 판단 정보를 상기 전송처 디바이스에 보내는 것을 특징으로 하는 DMA 데이터 전송 장치.
  3. 제1항에 있어서,
    상기 판단 정보는 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수로 이루어지고,
    상기 전송처 디바이스가 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터와, 상기 전체 데이터 전송 횟수를 유지하는 전체 데이터 전송 횟수 유지부를 구비하며, 상기 데이터 전송 횟수 카운터의 값이 상기 전체 데이터 전송 횟수에 도달한 경우, 상기 전송하여야 할 데이터의 데이터 전송이 종료된 것으로 판단하는 것을 특징으로 하는 DMA 데이터 전송 장치.
  4. 제1항에 있어서,
    상기 전송처 디바이스는 상기 전송하여야 할 데이터에 대해서 종료된 데이터 전송의 횟수를 카운트하는 데이터 전송 횟수 카운터를 구비하고,
    상기 판단 정보는 상기 데이터 전송 횟수 카운터가 카운트할 수 있는 최대값인 카운터 MAX값에서 상기 전송하여야 할 데이터를 전송하기 위해서 필요한 전송 횟수인 전체 데이터 전송 횟수를 뺀 값인 데이터 전송 횟수 부족값으로 이루어지며,
    상기 전송처 디바이스는 상기 데이터 전송 횟수 부족값을 상기 데이터 전송 횟수 카운터의 값에 가산하고, 상기 데이터 전송 횟수 카운터의 값이 상기 카운터 MAX값에 도달한 경우, 상기 전송하여야 할 데이터의 데이터 전송이 종료된 것으로 판단하는 것을 특징으로 하는 DMA 데이터 전송 장치.
  5. 제1항에 있어서,
    상기 메모리는 사용자에 의해 작성된 데이터가 기억된 제1 메모리와, 미리 그 내용이 정해진 데이터가 기억된 제2 메모리를 포함하고,
    상기 제2 메모리는 상기 제1 메모리보다 상기 DMA 제어부에 가까운 위치에 마련되는 것을 특징으로 하는 DMA 데이터 전송 장치.
  6. 각각이 메모리로부터 전송처 디바이스로의 데이터 전송을 행하는 복수의 DMA 엔진을 구비하는 DMA 컨트롤러와, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하는 DMA 제어부를 구비하는 DMA 데이터 전송 장치에서의 DMA 데이터 전송 방법으로서,
    상기 DMA 제어부는 상기 복수의 DMA 엔진이 전송할 수 있는 사이즈가 되도록 전송하여야 할 데이터의 분할 사이즈를 결정하고, 상기 DMA 컨트롤러의 상기 복수의 DMA 엔진에 대하여 DMA에 의한 데이터 전송을 지시하며,
    상기 DMA 컨트롤러의 상기 복수의 DMA 엔진은 상기 DMA 제어부의 지시에 따라 상기 전송하여야 할 데이터를 분할하여 상기 전송 디바이스에 전송하고,
    상기 DMA 제어부는 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료를 판단하기 위한 판단 정보를 상기 전송처 디바이스에 보내며,
    상기 전송처 디바이스는 상기 DMA 제어부로부터 보내진 상기 판단 정보에 기 초하여 상기 전송하여야 할 데이터에 대해서 그 데이터 전송의 종료 판정을 행하는 것을 특징으로 하는 DMA 데이터 전송 방법.
KR1020060042303A 2006-02-28 2006-05-11 Dma 데이터 전송 장치 및 dma 데이터 전송 방법 KR100775406B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2006-00051872 2006-02-28
JP2006051872A JP4908017B2 (ja) 2006-02-28 2006-02-28 Dmaデータ転送装置及びdmaデータ転送方法

Publications (2)

Publication Number Publication Date
KR20070089556A true KR20070089556A (ko) 2007-08-31
KR100775406B1 KR100775406B1 (ko) 2007-11-12

Family

ID=37459390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060042303A KR100775406B1 (ko) 2006-02-28 2006-05-11 Dma 데이터 전송 장치 및 dma 데이터 전송 방법

Country Status (5)

Country Link
US (1) US7752349B2 (ko)
EP (1) EP1826677A1 (ko)
JP (1) JP4908017B2 (ko)
KR (1) KR100775406B1 (ko)
CN (1) CN100592273C (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100498748C (zh) * 2007-11-16 2009-06-10 威盛电子股份有限公司 计算机系统及直接内存访问传输方法
US8327040B2 (en) * 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
JP5693176B2 (ja) * 2010-11-26 2015-04-01 キヤノン株式会社 モニタ回路、バスブリッジ及びバスシステム
US8904058B2 (en) 2011-05-27 2014-12-02 International Business Machines Corporation Selecting direct memory access engines in an adaptor input/output (I/O) requests received at the adaptor
WO2015155850A1 (ja) * 2014-04-09 2015-10-15 株式会社日立製作所 入出力装置及び方法
KR20160087224A (ko) * 2015-01-13 2016-07-21 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN104717433A (zh) * 2015-03-27 2015-06-17 电子科技大学 一种用于视频流信号处理系统的分布式传输装置
KR102387460B1 (ko) 2015-04-09 2022-04-15 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
GB2551226A (en) * 2016-06-08 2017-12-13 Google Inc TLB shootdowns for low overhead
US10657292B2 (en) * 2017-12-18 2020-05-19 Xilinx, Inc. Security for programmable devices in a data center
US10725942B2 (en) * 2018-11-09 2020-07-28 Xilinx, Inc. Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
US10924430B2 (en) * 2018-11-09 2021-02-16 Xilinx, Inc. Streaming platform flow and architecture for an integrated circuit
EP3877864A1 (en) * 2018-11-09 2021-09-15 Xilinx, Inc. Streaming platform flow and architecture
JP7226084B2 (ja) 2019-05-16 2023-02-21 オムロン株式会社 情報処理装置
US10990547B2 (en) 2019-08-11 2021-04-27 Xilinx, Inc. Dynamically reconfigurable networking using a programmable integrated circuit
US11232053B1 (en) * 2020-06-09 2022-01-25 Xilinx, Inc. Multi-host direct memory access system for integrated circuits
US11539770B1 (en) 2021-03-15 2022-12-27 Xilinx, Inc. Host-to-kernel streaming support for disparate platforms
US11456951B1 (en) 2021-04-08 2022-09-27 Xilinx, Inc. Flow table modification for network accelerators
US11606317B1 (en) 2021-04-14 2023-03-14 Xilinx, Inc. Table based multi-function virtualization
CN115658571B (zh) * 2022-11-16 2023-02-28 浪潮电子信息产业股份有限公司 一种数据传输方法、装置、电子设备及介质

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4271466A (en) * 1975-02-20 1981-06-02 Panafacom Limited Direct memory access control system with byte/word control of data bus
US4313160A (en) * 1976-08-17 1982-01-26 Computer Automation, Inc. Distributed input/output controller system
JPS6349946A (ja) * 1986-08-20 1988-03-02 Canon Inc 演算処理装置
EP0551932B1 (en) * 1987-06-05 1998-07-15 Mitsubishi Denki Kabushiki Kaisha Digital signal processor processing multi-point conditional branch operations in a pipeline mode
JPH077375B2 (ja) * 1988-06-17 1995-01-30 日本電気株式会社 バス制御方式
US5140679A (en) * 1988-09-14 1992-08-18 National Semiconductor Corporation Universal asynchronous receiver/transmitter
JPH03122745A (ja) * 1989-10-05 1991-05-24 Mitsubishi Electric Corp Dma制御方式
US5179661A (en) * 1989-10-30 1993-01-12 Hayes Microcomputer Products, Inc. Method and apparatus for serial data flow control
JPH04236649A (ja) 1991-01-21 1992-08-25 Matsushita Electric Ind Co Ltd データ転送装置
US5379381A (en) * 1991-08-12 1995-01-03 Stratus Computer, Inc. System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations
US5444855A (en) * 1992-04-17 1995-08-22 International Business Machines Corporation System for guaranteed CPU bus access by I/O devices monitoring separately predetermined distinct maximum non CPU bus activity and inhibiting I/O devices thereof
JPH0683638A (ja) * 1992-09-03 1994-03-25 Nec Ic Microcomput Syst Ltd 割込み制御回路
US6026443A (en) * 1992-12-22 2000-02-15 Sun Microsystems, Inc. Multi-virtual DMA channels, multi-bandwidth groups, host based cellification and reassembly, and asynchronous transfer mode network interface
US5644787A (en) * 1993-08-03 1997-07-01 Seiko Epson Corporation Apparatus for controlling data transfer between external interfaces through buffer memory using table data having transfer start address transfer count and unit selection parameter
US5687389A (en) * 1993-12-22 1997-11-11 Adaptec, Inc. System for controlling an automatic read operation of read cache control circuit in a disk drive controller utilizing a start counter, a working counter, and a sector counter
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
US5608889A (en) * 1994-08-17 1997-03-04 Ceridian Corporation DNA controller with wrap-around buffer mode
US5548587A (en) * 1994-09-12 1996-08-20 Efficient Networks, Inc. Asynchronous transfer mode adapter for desktop applications
US6351780B1 (en) * 1994-11-21 2002-02-26 Cirrus Logic, Inc. Network controller using held data frame monitor and decision logic for automatically engaging DMA data transfer when buffer overflow is anticipated
US5628026A (en) * 1994-12-05 1997-05-06 Motorola, Inc. Multi-dimensional data transfer in a data processing system and method therefor
US5768622A (en) * 1995-08-18 1998-06-16 Dell U.S.A., L.P. System for preemptive bus master termination by determining termination data for each target device and periodically terminating burst transfer to device according to termination data
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
JP3492139B2 (ja) * 1996-03-04 2004-02-03 松下電器産業株式会社 バスを介したデータ転送方法およびバスマスタ制御装置
US6125425A (en) * 1996-03-29 2000-09-26 Intel Corporation Memory controller performing a mid transaction refresh and handling a suspend signal
US5991817A (en) * 1996-09-06 1999-11-23 Cisco Systems, Inc. Apparatus and method for a network router
US6148326A (en) * 1996-09-30 2000-11-14 Lsi Logic Corporation Method and structure for independent disk and host transfer in a storage subsystem target device
DE69735614T2 (de) * 1996-10-18 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Datenübertragungsgerät und Datenübertragungssystem zur Arbitrierung von mehreren E/A Ports in DMA
US6702056B2 (en) * 1997-08-06 2004-03-09 Takata Corporation Seatbelt retractor
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data
JP2000267988A (ja) 1999-03-19 2000-09-29 Canon Inc Dmaコントローラおよびdmaコントローラの異常検出方法
GB9909196D0 (en) * 1999-04-21 1999-06-16 Texas Instruments Ltd Transfer controller with hub and ports architecture
KR20010057244A (ko) * 1999-12-20 2001-07-04 윤종용 직접 메모리 억세스 버스 제어 방법
JP3761061B2 (ja) * 2000-04-28 2006-03-29 シャープ株式会社 データ処理システムおよびデータ処理方法
JP2002041445A (ja) * 2000-05-19 2002-02-08 Matsushita Electric Ind Co Ltd 高性能dmaコントローラ
US6778548B1 (en) * 2000-06-26 2004-08-17 Intel Corporation Device to receive, buffer, and transmit packets of data in a packet switching network
US7010614B2 (en) * 2000-07-05 2006-03-07 International Business Machines Corporation System for computing cumulative amount of data received by all RDMA to determine when a complete data transfer has arrived at receiving device
US6922741B2 (en) * 2002-02-01 2005-07-26 Intel Corporation Method and system for monitoring DMA status
JP3785373B2 (ja) * 2002-03-01 2006-06-14 シャープ株式会社 通信制御回路
DE10213839B4 (de) * 2002-03-27 2016-11-03 Advanced Micro Devices, Inc. DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
US6898723B2 (en) * 2002-04-01 2005-05-24 Mitac International Corp. Method for verifying clock signal frequency of computer sound interface that involves checking whether count value of counter is within tolerable count range
JP4686104B2 (ja) 2002-04-22 2011-05-18 富士通セミコンダクター株式会社 Dmaコントローラ
JP2004029898A (ja) * 2002-06-21 2004-01-29 Renesas Technology Corp データプロセッサ
US7664909B2 (en) * 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7133943B2 (en) * 2003-02-26 2006-11-07 International Business Machines Corporation Method and apparatus for implementing receive queue for packet-based communications
JP2004287654A (ja) 2003-03-20 2004-10-14 Ricoh Co Ltd Dma転送装置
JP2004343205A (ja) * 2003-05-13 2004-12-02 Ricoh Co Ltd コントローラ装置、画像形成装置、メモリ制御方法、コンピュータプログラム及び記録媒体
US7323438B2 (en) * 2003-06-13 2008-01-29 Procter & Gamble Cleansing article with improved handleability
JP2005071104A (ja) * 2003-08-25 2005-03-17 Murata Mach Ltd データ転送制御装置
US7401257B2 (en) * 2003-08-28 2008-07-15 Renesas Technology Corp. Microcomputer and method for developing system program
JP2005115464A (ja) 2003-10-03 2005-04-28 Fuji Xerox Co Ltd データ処理装置およびデータ制御ユニット
US7475271B2 (en) * 2003-10-14 2009-01-06 Broadcom Corporation Exponential channelized timer
JP2005135098A (ja) 2003-10-29 2005-05-26 Denso Corp ダイレクト・メモリ・アクセス・システム
KR100633742B1 (ko) * 2003-12-23 2006-10-13 한국전자통신연구원 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
EP1564643A3 (en) 2004-02-11 2006-09-20 Intracom S.A. Hellenic Telecommunications &amp; Electronics Industry Synthesizable vhdl model of a multi-channel dma-engine core for embedded bus systems
JP2005250683A (ja) * 2004-03-02 2005-09-15 Renesas Technology Corp マイクロコンピュータ
KR20050094989A (ko) * 2004-03-24 2005-09-29 삼성전자주식회사 디엠에이 설정값의 설정방법 및 장치
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
JP2006293927A (ja) 2005-04-14 2006-10-26 Toshiba Corp ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi
US7415549B2 (en) * 2005-09-27 2008-08-19 Intel Corporation DMA completion processing mechanism
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
WO2007096712A1 (en) * 2006-02-20 2007-08-30 Freescale Semiconductor, Inc. A method and device for exchanging data using a virtual fifo data structure

Also Published As

Publication number Publication date
JP4908017B2 (ja) 2012-04-04
KR100775406B1 (ko) 2007-11-12
JP2007233522A (ja) 2007-09-13
US7752349B2 (en) 2010-07-06
CN101030182A (zh) 2007-09-05
US20070204074A1 (en) 2007-08-30
CN100592273C (zh) 2010-02-24
EP1826677A1 (en) 2007-08-29

Similar Documents

Publication Publication Date Title
KR100775406B1 (ko) Dma 데이터 전송 장치 및 dma 데이터 전송 방법
EP1896965B1 (en) Dma descriptor queue read and cache write pointer arrangement
US8225027B2 (en) Mapping address bits to improve spread of banks
US7308523B1 (en) Flow-splitting and buffering PCI express switch to reduce head-of-line blocking
US7472205B2 (en) Communication control apparatus which has descriptor cache controller that builds list of descriptors
KR100934227B1 (ko) 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치
US20130028261A1 (en) System-on-chip-based network protocol in consideration of network efficiency
US6487628B1 (en) Peripheral component interface with multiple data channels and reduced latency over a system area network
US20050152274A1 (en) Efficient command delivery and data transfer
US9256555B2 (en) Method and system for queue descriptor cache management for a host channel adapter
US20070168583A1 (en) Endpoint control apparatus and method thereof
CN112181887B (zh) 数据传输方法及装置
US20060259648A1 (en) Concurrent read response acknowledge enhanced direct memory access unit
EP1814040B1 (en) Storage system, and storage control method
US20160098212A1 (en) Information processor apparatus, memory control device, and control method
CN117033275A (zh) 加速卡间的dma方法、装置、加速卡、加速平台及介质
US7529857B2 (en) Data processing apparatus and data transfer control method
CN115550293B (zh) 一种fsi主控制器及其端口路由装置和方法
KR20120054142A (ko) QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US6961837B2 (en) Method and apparatus for address translation pre-fetch
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
US11327909B1 (en) System for improving input / output performance
WO2008150535A1 (en) Multiple link traffic distribution
KR100238423B1 (ko) 우선순위를 고려한 패킷 교환용 폴링제어방법및 장치

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: 20121023

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131022

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141021

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee