KR20030082253A - 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법 - Google Patents

패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법 Download PDF

Info

Publication number
KR20030082253A
KR20030082253A KR1020020020904A KR20020020904A KR20030082253A KR 20030082253 A KR20030082253 A KR 20030082253A KR 1020020020904 A KR1020020020904 A KR 1020020020904A KR 20020020904 A KR20020020904 A KR 20020020904A KR 20030082253 A KR20030082253 A KR 20030082253A
Authority
KR
South Korea
Prior art keywords
dma
packet
engine
processor
buffer
Prior art date
Application number
KR1020020020904A
Other languages
English (en)
Other versions
KR100441884B1 (ko
Inventor
김용태
이형섭
이강복
신동범
이형호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0020904A priority Critical patent/KR100441884B1/ko
Publication of KR20030082253A publication Critical patent/KR20030082253A/ko
Application granted granted Critical
Publication of KR100441884B1 publication Critical patent/KR100441884B1/ko

Links

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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 메인 프로세서와 패킷 처리 엔진간의 블록 데이터를 고속으로 처리하는 네트워크 시스템에 관한 것으로, 본 발명에 의한 네트워크 시스템은, 메인 프로세서; 상기 메인 프로세서에서 처리될 패킷을 저장하는 프로세서 처리 버퍼; 링크에서 입력된 패킷을 와이어 스피드로 포워딩하되, 입력된 상기 패킷이 상기 메인 프로세서에서 처리될 패킷인 경우 DMA(Direct Memory Access) 요구 신호를 발생하는 패킷 처리 엔진; 및 상기 DMA 요구 신호에 응답해서 상기 프로세서 처리 버퍼의 잔량 상태를 감시하고, DMA 동작에 필요한 제어 신호 및 어드레스를 자체적으로 발생하는 DMA 엔진을 포함한다.

Description

패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터 전송을 수행하는 네트워크 시스템 및 그것의 DMA운영 방법{Network system performing high speed block data transfer between packet processing engine and main processor and direct memory access management method for the same}
본 발명은 네트워크 시스템에 관한 것으로, 특히 네트워크 시스템에서 고속의 패킷 처리를 수행할 수 있는 네트워크 시스템 및 그것의 패킷 처리 방법에 관한 것이다.
일반적으로, 네트워크 시스템이나 네트워크 장치에서 수행되는 패킷의 처리 속도는, 링크의 전송 속도와 정합 될 수 있도록 와이어 스피드(wire-speed)를 유지하는 것이 바람직하다. 그러나, 점점 고속화 되어가고 있는 링크의 전송 속도를 감안해 볼 때, 링크에서 전송되는 모든 패킷을 와이어 스피드로 처리하는 것은 현재의 구현 기술로는 매우 어려운 실정이다.
따라서, 현재 네트워크 시스템들은 링크의 패킷 처리를 와이어 스피드로 유지하기 위해 패킷 처리 엔진(Packet Processing Engine)을 구비한다. 일반적으로, 패킷 처리 엔진은 대부분 하드웨어로 구성되는데, 라우팅 프로토콜이나 라우팅 관련 제어 패킷에 대한 처리 제어는 매우 복잡하고, 현시점의 하드웨어 구현 기술로는 많은 비용이 요구된다. 따라서, 이 같은 라우팅 관련 패킷은 패킷 처리 엔진에서 처리되지 않고 CPU와 같은 메인 프로세서에게 전달되어 소프트웨어적으로 처리된다. 즉, 고속의 링크가 접속되는 네트워크 시스템은, 전용 패킷 처리 엔진을 사용하여 와이어 스피드로 패킷을 처리하되, 와이어 스피드로 처리를 할 수 없는 라우팅 관련 패킷에 대해서는 패킷 처리 엔진 대신 프로세서를 통해 처리한다.
도 1은 패킷 처리 엔진(140) 및 DMA(Direct Memory Access) 엔진(150)을 구비한 일반적인 네트워크 시스템(100)의 블록도이다. 이와 같은 구성을 가지는 네트워크 시스템의 예로는 이더넷 스위치(ethernet switch), 라우터(router) 등이 있다. DMA 방식은 기존의 데이터 전송시 중앙 처리 장치(Central Processing Unit ; CPU)가 대부분의 작업을 주도했던 것을 CPU를 경유하지 않고 메모리에서 전송하는 방식을 말한다.
도 1을 참조하면, 네트워크 시스템은, CPU(110), 프로세서 처리 버퍼(processor processing buffer ; 120), FIFO(First In First Out) 모듈(130), 패킷 처리 엔진(packet processing engine ; 140), 및 DMA 엔진(150)을 포함한다.
패킷 처리 엔진(140)에는 패킷 엔진 처리 버퍼(packet engine processing buffer ; 141)가 구비되어 있어, 외부로부터 입력되는 패킷(Packet_In)을 받아들인다. 패킷 처리 엔진(140)은, 패킷 엔진 처리 버퍼(141)에 CPU(110)에서 처리되어야 하는 패킷(예를 들면, 라우팅 프로토콜, 라우팅 관련 제어 패킷 등)이 입력되면, DMA 엔진(150)에게 블록 데이터 전송을 요구하고(화살표 ① 참조), 임시 데이터 저장부인 FIFO(First In First Out) 구조의 메모리(130)(이하 FIFO 모듈로 칭함)로 데이터를 이동시킨다.
DMA 엔진(150)은 패킷 처리 엔진(140)으로부터 발생된 블록 데이터 전송 요구에 응답해서, 데이터 전송을 위한 인터럽트를 CPU(110)에게 요구한다(화살표 ② 참조). 인터럽트가 요구되면, CPU(110)는 블록 데이터가 패킷 처리 엔진(140)에서 지정된 장소로 이동될 수 있도록 패킷이 이동될 새로운 주소를 설정하고, DMA 엔진(150)을 제어하는 명령을 발생한다(화살표 ③ 참조). CPU(110)는 이와 같은 DMA 엔진(150)의 제어를 수행하기 위해서, CPU(110)에서 처리될 데이터가 저장될 프로세서 처리 버퍼(120)의 데이터 수신 가능 여부를 확인한다. 확인 결과, 프로세서 처리 버퍼(120)가 데이터를 수신할 수 있으면, 패킷 처리 엔진(140)은 CPU 버스 사용을 요청한다. CPU 버스의 사용에 대한 중재는 별도의 중재기(미 도시됨)를 통해 프로세서의 동작 사이클 단위로 수행된다. 중재기로부터 CPU 버스 사용에 대한 허가를 획득한 DMA 엔진(150)은 CPU(110)에서 지정해 준 주소로 데이터를 이동시킨다. 이와 같은 데이터 패킷의 이동은 DMA 엔진(150)에서 패킷의 끝을 감지할 때까지 지속된다. DMA 엔진(150)은, 데이터의 전송이 모두 종료되면 하나의 패킷이 성공적으로 이동되었음을 알리는 신호를 활성화시키고, CPU 버스를 해방시킨다.
이 때, 프로세서 처리 버퍼(120)의 수신 상태가 부족하여 데이터를 받아들일 수 없는 경우에는, DMA 엔진(150)은 동작되지 않고, 현재 입력된 FIFO 내용을 폐기하라는 명령을 FIFO 모듈(130)에게 발생한다(화살표 ④ 참조). 그리고, 만약 프로세서의 명령 처리 시간이 늦어지게 되는 경우에는, FIFO 모듈(130)이 풀(full) 상태가 될 수 있으므로, DMA 엔진(150)은 FIFO 모듈(130)의 상태 신호를 패킷 처리 엔진(140)으로 보내어 패킷 처리 동작을 잠시 중단시킨다(화살표 ⑤ 참조).
그러나, 이와 같은 블록 데이터의 전송 방법은, 패킷 엔진 처리 버퍼(141)로부터 패킷 데이터를 읽어들인 후 이를 FIFO 모듈(130) 및 프로세서 처리 버퍼(120)에 다시 저장하는 과정을 거쳐야만 하고, 패킷의 전송 상태를 감시해야만 하므로, 프로세서의 데이터 처리 시간이 길어지게 된다. 뿐만 아니라, 프로세서(즉, CPU(110))는 매번 인터럽트가 발생될 때마다 DMA 엔진(150)의 동작을 제어하여야 하고, DMA 엔진(150)을 제어하기 위해서는 프로세서 처리 버퍼(120)의 수신 가능 여부를 검사하고, 블록 데이터가 저장될 주소를 생성해야 하므로, 데이터 처리 시간이 길어지는 단점이 있다.
본 발명이 이루고자 하는 기술적 과제는, DMA 엔진이 자신의 제어 상태를 스스로 설정할 수 있도록 함으로써, 프로세서의 DMA 관리 기능을 감소시키고, 데이터 전송에 따른 처리 시간을 줄일 수 있는 네트워크 장치 및 그것을 위한 DMA 운영 방법을 제공하는데 있다.
도 1은 패킷 처리 엔진 및 DMA(Direct Memory Access) 엔진을 구비한 일반적인 네트워크 시스템의 블록도이다.
도 2는 자신의 제어 상태를 스스로 설정할 수 있는 DMA 엔진을 구비한, 본 발명의 바람직한 실시예에 따른 네트워크 시스템의 블록도이다.
도 3은 도 2에 도시된 제 1 및 제 2 중재기의 동작을 설명하기 위한 도면이다.
도 4는 도 2에 도시된 버퍼 감시기의 상세 블록도이다.
도 5는 도 2에 도시된 자동 주소 발생기의 상세 블록도이다.
도 6은 본 발명에 따른 DMA 엔진에서 패킷 처리 엔진의 요구를 수용할 수 없는 경우, 패킷 처리 엔진의 와이어 스피드 처리를 위해 해당 패킷을 폐기하는 경우의 일례를 보여주는 타이밍도이다.
도 7은 본 발명에 따른 DMA 엔진에서 패킷이 정상적으로 처리되는 경우를 보여주는 타이밍도이다.
도 8은 본 발명에 따른 네트워크 시스템에 구비된 패킷 처리 엔진의 데이터 처리 방법을 보여주는 흐름도이다.
도 9는 본 발명에 따른 네트워크 시스템에 구비된 DMA 엔진의 데이터 처리 방법을 보여주는 흐름도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
200 : 네트워크 시스템210 : CPU
220 : 프로세서 처리 버퍼240 : 패킷 처리 엔진
241 : 패킷 엔진 처리 버퍼250 : DMA 엔진
251 : 제어부252 : 제 1 중재기
253 : 제 2 중재기254 : 버퍼 감시기
255 : 자동 주소 발생기
상기의 과제를 이루기 위하여 본 발명에 의한 네트워크 시스템은, 메인 프로세서; 상기 메인 프로세서에서 처리될 패킷을 저장하는 프로세서 처리 버퍼; 링크에서 입력된 패킷을 와이어 스피드로 포워딩하되, 입력된 상기 패킷이 상기 메인 프로세서에서 처리될 패킷인 경우 DMA(Direct Memory Access) 요구 신호를 발생하는 패킷 처리 엔진; 및 상기 DMA 요구 신호에 응답해서 상기 프로세서 처리 버퍼의 잔량 상태를 감시하고, DMA 동작에 필요한 제어 신호 및 어드레스를 자체적으로 발생하는 DMA 엔진을 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 DMA 운영 방법은, (a) 링크로부터 패킷을 받아들이는 단계; (b) 입력된 상기 패킷이 메인 프로세서에서 처리되어야 하는 패킷인 경우, DMA 요구 신호를 발생하는 단계; (c) 상기 DMA 요구 신호에 응답해서 메인 프로세서 버스를 중재하는 단계; (d) 상기 (c) 단계에서의 중재 결과, 상기 DMA 요구 신호의 우선 순위가 가장 높은 것으로 판명된 경우 DMA 허용 신호를 발생하는 단계; (e) 상기 DMA 허용 신호에 응답해서 상기 패킷을 상기 메인 프로세서의 버퍼로 전송하는 단계; (f) 상기 패킷의 전송 상태를 감시하는 단계; 및 (g) 상기 (f) 단계에서의 감시 결과, 상기 패킷의 전송이 완료되었으면 상기 메인 프로세서에게 인터럽트를 발생하는 단계를 포함하는 것을 특징으로 한다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다.
도 2는 자신의 제어 상태를 스스로 설정할 수 있는 DMA 엔진(250)을 구비한,본 발명의 바람직한 실시예에 따른 네트워크 시스템(200)의 블록도이다.
도 2를 참조하면, 본 발명에 따른 네트워크 시스템(200)은, CPU(210), 프로세서 처리 버퍼(220), 패킷 처리 엔진(240), 및 DMA 엔진(250)을 포함한다. 패킷 처리 엔진(240)에는 패킷 엔진 처리 버퍼(241)가 구비되어 있어, 외부로부터 입력되는 패킷 데이터(Packet_In)를 패킷 엔진 처리 버퍼(241)에 저장한다. DMA 엔진(250)은, 복수 개의 제어 신호들(CTL)을 발생하여 DMA 엔진(250)에서 수행되는 일반적인 DMA 동작을 제어하는 DMA 제어부(251), 프로세서 버스를 중재하는 제 1 및 제 2 중재기(252 253), 프로세서 처리 버퍼(220)의 잔량 상태를 검사하는 버퍼 감시기(254), 및 패킷이 이동될 주소를 자동으로 발생하는 자동 주소 발생기(255)를 구비한다.
여기서, 상기 네트워크 시스템(200)은, 도 1에 도시된 네트워크 시스템(100)과 비교할 때 DMA 엔진의 구조가 서로 다르고, FIFO 모듈이 사용되지 않는 것을 제외하고는 도 1에 도시된 네트워크 시스템(100)과 동일한 구조를 가진다. 따라서, 도 1에 도시된 네트워크 시스템(100)과 동일한 구조를 가지는 각 블록에 대한 상세 설명은 중복된 설명을 피하기 위해 생략하기로 한다.
패킷 처리 엔진(240)은 CPU(210)에서 처리되어야 하는 패킷이 수신되면, DMA 엔진(250)에게 DMA 요구 신호(DMA_REQ)를 발생한다. DMA 요구 신호(DMA_REQ)를 수신한 DMA 엔진(250)은, DMA 인에이블 신호(DMA_EN)의 활성화 여부에 따라 DMA 요구 신호(DMA_REQ)에 대한 응답을 하게 된다. 예를 들어, DMA 인에이블 신호(DMA_EN)가 활성화되어 있으면, DMA 엔진(250)은 제 2 중재 모듈(253)을 통해 프로세서 버스의중재를 수행한다. 그리고, DMA 인에이블 신호(DMA_EN)가 활성화되어 있지 않으면, 가상적인 블럭 전송 허용 신호(DUMMY_DMA_GNT)를 활성화 시켜 패킷 처리 엔진(240)이 정상적인 패킷 포워딩을 수행할 수 있도록 한다. 그러나, 이 때의 패킷은 프로세서로 보내지지 않고 즉시 폐기되어 와이어 스피드 동작을 유지시킨다. DMA 엔진(250)의 프로세서 버스의 중재 동작은 다음과 같다.
도 3은 도 2에 도시된 제 1 및 제 2 중재기의 동작을 설명하기 위한 도면이다. 도 3을 참조하면, 제 1 중재기(252)는 패킷 처리 엔진(240)에서 발생된 DMA 요구 신호(DMA_REQ) 및 DMA 인에이블 신호(DMA_EN)를 받아들인다. 제 1 중재기(252)는 DMA 인에이블 신호(DMA_EN)가 활성화 된 경우, DMA 요구 신호(DMA_REQ)에 응답해서 제 2 중재기(253)에게 버스 사용 요구 신호(BUS_REQ)를 발생한다.
제 2 중재기(253)는, 프로세서에 의한 버스 사용 요구(CPU_REQ)와, 제 1 중재기(252)에 의한 버스 사용 요구(BUS_REQ) 사이의 우선 순위에 의한 중재를 수행하고, 프로세서의 버스 사용 허용 신호(CPU_GNT) 또는 DMA의 버스 사용 허용 신호(BUS_GNT)를 발생한다. 이 때, DMA의 버스 사용 허용 신호(BUS_GNT)가 활성화된 경우, 제 1 중재기(252)는 DMA 엔진(250)이 블록 전송을 시작할 수 있도록 패킷 처리 엔진(240)에게 활성화 된 DMA 허용 신호(DMA_GNT)를 발생한다.
도 4는 도 2에 도시된 버퍼 감시기(254)의 상세 블록도이다. 도 4를 참조하면, 버퍼 감시기(254)는 프로세서 처리 버퍼(220)의 현재 버퍼 크기(current buffer size) 정보를 저장하는 제 1 레지스터(2541), 네트워크 시스템의 최대 패킷 크기(maximum packet size) 정보를 저장하는 제 2 레지스터(2542), 제 1 및 제 2레지스터들(2541, 2542)에 저장된 현재 버퍼 크기 정보와 네트워크 시스템의 최대 패킷 크기 정보를 비교하는 비교기(2543), 및 비교기(2543)의 비교 결과와 CPU의 DMA 온(ON) 제어 신호(DMA_ON)에 응답해서 DMA 인에이블 신호(DMA_EN)를 발생하는 곱셈부(2544)를 포함한다.
먼저, 버퍼 감시기(254)는 CPU의 초기화 신호(INIT)에 응답해서, 초기화 동작시 사용될 버퍼의 최대 크기와 패킷의 최대 길이를 각각의 레지스터(2541, 2542)에 기록한다. 비교기(2543)는 제 1 및 제 2 레지스터들(2541, 2542)에 저장된 현재 버퍼 크기 정보와 네트워크 시스템의 최대 패킷 크기 정보를 비교하고, 비교 결과 현재 버퍼 크기 정보가 네트워크 시스템의 최대 패킷 크기 정보 보다 큰 값을 가지는 경우(즉, 패킷을 받아들일 수 있는 것으로 판별된 경우), 논리 하이(즉, "1")의 값을 출력한다. 곱셈부(2544)는 비교기(2543)의 비교 결과와 CPU의 DMA 온(ON) 제어 신호(DMA_ON)와의 논리곱을 구하여 도 3에 도시된 제 1 중재기(252)로 DMA 인에이블 신호(DMA_EN)를 발생한다. 이 때, 현재 버퍼 크기가 최대 패킷 크기 보다 크고, CPU(210)로부터 입력되는 DMA ON 제어 신호(DMA_ON)가 활성화 된 경우, DMA 인에이블 신호(DMA_EN)는 논리 하이 (즉, "1") 상태로 활성화된다.
제 1 레지스터(2541)는 패킷이 정상적으로 수신될 때, 크기 감소 요구 신호(DEC)에 응답해서 매 클럭마다 1씩 감소된다. 그리고, CPU(210)에서 처리된 패킷이 송신될 때, 크기 증가 요구 신호(INC)에 응답해서 매 클럭마다 1씩 증가한다. 이 때, CPU(210)에서 잘못된 패킷을 폐기하거나, 처리된 패킷을 다른 곳으로 전달하지 않고 이를 상태 정보로 사용하는 경우에는 수신 패킷의 크기만큼 증가시킨다.이를 위해 CPU(210)는 CPU(210)의 RMW(read modify write) 신호에 응답해서 제 1 레지스터(2541)를 읽은 후, 처리한 패킷의 길이를 더하고, 이를 다시 업데이트 한다.
도 5는 도 2에 도시된 자동 주소 발생기(255)의 상세 블록도이다. 도 5를 참조하면, 본 발명에 따른 자동 주소 발생기(255)는, 프로세서 처리 버퍼(220)의 시작 주소 정보가 저장된 제 1 레지스터(2551), 버퍼에 쓰기를 시도할 현재의 주소가 저장된 제 2 레지스터(2552), 버퍼의 마지막 주소가 저장된 제 3 레지스터(2553), 그리고 제 2 및 제 3 레지스터(2552, 2553)에 저장된 주소들을 비교하는 비교기(2554)를 포함한다. 비교기(2554)는, 상기 비교 결과, 버퍼의 현재 주소가 버퍼의 마지막 주소보다 작은 경우, 데이터 로딩에 의해 제 2 레지스터(2552)에 저장된 현재 주소가 증가될 수 있도록 로딩 인에이블 신호(LOAD_EN)를 발생한다.
프로세서 처리 버퍼(220)의 시작 주소와 마지막 주소는 CPU(210)의 초기화 과정에서 초기화되며, 버퍼의 최대 크기 주소는 버퍼의 시작 주소에 최대 패킷 크기를 더한 것보다 큰 값을 가진다. 제 2 레지스터(2552)에 저장된 값은 DMA 허용 신호(DMA_GNT)가 활성화된 후 SOF(Start Of Frame)신호가 발생 될 때부터 증가하기 시작하고, EOF(End Of Frame)신호가 발생하면 증가를 멈추게 된다.
도 6은 본 발명에 따른 DMA 엔진(250)에서 패킷 처리 엔진(240)의 요구를 수용할 수 없는 경우, 패킷 처리 엔진(240)의 와이어 스피드 처리를 위해 해당 패킷을 폐기하는 경우의 일례를 보여주는 타이밍도이다. 도 6과 같이 패킷을 버리게 되는 조건은, 현재 남아 있는 프로세서 처리 버퍼(220)의 용량이 최대 패킷의 크기보다 작거나, 또는 프로세서의 예외 상태에 의해서 DMA ON 제어 신호(DMA_ON)가 비활성화 된 경우에 발생하게 된다. 이 경우, 비록 패킷은 폐기되지만, 패킷 처리 엔진(240)은 여전히 와이어 스피드로 데이터를 포워딩 하게 된다.
이 경우, DMA 인에이블 신호(DMA_EN)는 도 6에 도시된 바와 같이 논리 로우(즉, "0") 상태로 비활성화 된다. 이 때 패킷 처리 엔진(240)에서 DMA 요구 신호(DMA_REQ)가 발생되면, DMA 엔진(250)의 제어부(251)로부터 가상 블럭 전송 허용 신호(DUMMY_DMA_GNT)가 발생되고, 제 1 중재기(252)로부터 DMA 허용 신호(DMA_GNT)가 발생된다. 그 결과, 패킷 처리 엔진(240)은 DMA 엔진(250)에게 패킷을 와이어 스피드로 전송할 수 있게 된다.
그러나, 이 때 DMA 엔진(250)에서는, 크기 증가 요구 신호(INC) 및 크기 감소 요구 신호(DEC)가 활성화되지 않았기 때문에, 패킷 데이터는 프로세서 처리 버퍼(220)로 전달되지 않고 모두 폐기되고, 가상 수신 사이클(dummy receiving cycle)이 수행된다. 그리고, 패킷의 끝을 알리는 EOF 신호가 활성화되면 가상 블럭 전송 허용 신호(DUMMY_DMA_GNT)가 비활성화 되고, DMA 엔진(250)은 새로운 패킷의 수신을 기다리게 된다.
도 7은 본 발명에 따른 DMA 엔진(250)에서 패킷이 정상적으로 처리되는 경우의 일례를 보여주는 타이밍도이다. 도 7을 참조하면, 버퍼 감시기(254)로부터 발생된 DMA 인에이블 신호(DMA_EN)가 활성화되었을 때 패킷 처리 엔진(240)으로부터 DMA 요구 신호(DMA_REQ)가 발생되면, DMA 엔진(250)에 구비된 제 1 중재기(252)는 상기 DMA 요구 신호(DMA_REQ)에 응답해서 CPU 버스 사용을 요구하는 버스 사용 요구 신호(BUS_REQ)를 제 2 중재기(253)로 발생한다.
제 2 중재기(253)는 우선 순위를 기반으로 하여 CPU(210)에서의 버스 사용 요구 신호(CPU_REQ)와, DMA의 버스 사용 요구 신호(BUS_REQ)를 중재한다. 제 2 중재기(253)는 중재의 결과로서, 각 제어기에 대한 버스 사용 허용 신호(CPU_GNT) 또는 DMA 엔진에 대한 버스 사용 허용 신호(BUS_GNT)를 배타적으로 운영하게 된다.
DMA 엔진(250)은, 패킷 처리 엔진(240)의 첫 패킷 전달 때 발생되는 SOF 신호와, 마지막 패킷을 전달 때 발생되는 EOF 신호를 이용하여 패킷의 크기를 확인하고, DMA 동작의 종료를 제어한다. 패킷의 전달은 도 7에 도시된 바와 같이, 크기 증가 요구 신호(INC)와 크기 감소 요구 신호(DEC)가 활성화 된 구간에서만 이루어진다. 이와 같은 동작들은 패킷 처리 엔진(240)에서 CPU 처리 패킷을 수신할 때마다 반복적으로 수행된다. 이 때, CPU(210)에 의한 간섭은 모두 배제되므로, 보다 빠른 데이터 전송이 가능하다.
도 8은 본 발명에 따른 네트워크 시스템(200)에 구비된 패킷 처리 엔진(240)의 데이터 처리 방법을 보여주는 흐름도이다. 도 8을 참조하면, 패킷 처리 엔진(240)은 라우팅 프로토콜이나 라우팅 관련 제어 패킷과 같이 메인 프로세서에서 소프트웨어적으로 처리되는 CPU 처리 패킷을 받아들인다(2401 단계). 이어서, DMA 엔진(250)에 구비된 제 1 중재기(252)로 DMA 요구 신호(DMA_REQ)를 발생하고(2402 단계), DMA 엔진(250)에 구비된 버퍼 감시부(254)로부터 DMA 허용 신호(DMA_GNT)가 발생되었는지 여부를 판별한다(2403 단계). 판별 결과, DMA 허용 신호(DMA_GNT)가 발생되었으면 해당 패킷을 프로세서처리 버퍼(220)로전송한다(2404 단계).
도 9는 본 발명에 따른 네트워크 시스템(200)에 구비된 DMA 엔진(250)의 데이터 처리 방법을 보여주는 흐름도이다. 도 9를 참조하면, DMA 엔진(250)은 먼저 제 1 중재기(252)를 통해 패킷 처리 엔진(240)으로부터 DMA 요구 신호(DMA_REQ)를 받아들인다(2501 단계). 이어서, 입력된 DMA 인에이블 신호(DMA_EN)가 활성화되었는지 여부를 판별한다(2502 단계). 2502 단계에서의 판별 결과, DMA 인에이블 신호(DMA_EN)가 활성화되었으면 제 2 중재기(253)를 통해 CPU 버스를 중재하고(2503 단계), DMA 허용 신호(DMA_GNT)를 발생한다(2504 단계). 그리고, SOF 신호를 검출하여 첫 번째 패킷이 전달되는지 여부를 판별한다(2505 단계). 2505 단계에서의 판별 결과, 첫 번째 패킷이 전달되기 시작했으면, EOF 신호를 검출하여 해당 패킷의 마지막 패킷이 전달되는지 여부를 판별한다(2506 단계). 2506 단계에서의 판별 결과, 마지막 번째 패킷이 전달되었으면, CPU(210)로 인터럽트를 발생한다(2507 단계).
그리고, 2502 단계에서의 판별 결과, DMA 인에이블 신호(DMA_EN)가 활성화되지 않았으면 가상 DMA 신호(DUMMY_DMA_GNT)를 발생하고(2508 단계), 해당 패킷을 폐기한다(2509 단계).
이와 같이, 패킷 처리엔진(240)과 DMA 엔진(250)은 각각 DMA 요구 신호(DMA_REQ)와 DMA 허용 신호(DMA_GNT)를 사용하여 서로 신호 변경(handshaking)을 수행한다. 이와 같은 제어 신호의 주고 받음에 의해 패킷 데이터의 전달이 이루어진다. 그리고, DMA 엔진(250)에서 감지된 프로세서 처리 버퍼(120)의 수신 상태에 의해서, 패킷이 폐기되거나, CPU(210)의 프로세서처리 버퍼(220)에게 정상적으로 전달된다.
앞에서 설명한 바와 같이, 본 발명에 따른 네트워크 시스템(200)은, 프로세서 처리 버퍼(220)의 메모리 잔량 상태를 감지하고, 패킷이 이동될 주소를 자동으로 발생한다. 특히, 네트워크 시스템(200)에 구비된 DMA 엔진(250)은 프로세서의 도움을 받지 않고 스스로 동작을 할 수 있으며, 환형 버퍼 구조를 유지하면서 자동으로 데이터를 이동할 수 있다. 이 경우, 초기화의 경우를 제외하면 프로세서에 의한 제어는 거의 수행되지 않는다. 따라서, 프로세서의 제어로 인한 지연을 줄일 수 있다. 그리고, 본 발명에 의한 네트워크 시스템(200)은 패킷 처리 엔진(240) 및 DMA 엔진(250)에 구비된 두 이동 버퍼(241, 220) 사이에 별도의 완충 버퍼를 사용하지 않아도 되는 장점이 있다.
이상에서, 본 발명의 실시예로서 네트워크 시스템의 패킷 데이터 전송에 대해 구체적으로 예시되었으나, 그밖에도 컴퓨터 주변 장치의 블록 데이터 전송에도 본 발명을 적용할 수 있다. 이는, 통신 링크의 속도가 더욱 고속화되고 있는 최근의 상황에서, 고속 라우터 시스템의 저속 패킷 처리 부분에 매우 효율적이다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상에 설명한 바와 같이, 본 발명에 의한 네트워크 시스템 및 그것의 DAM 운영 방법에 의하면, DMA 엔진이 자신의 제어 상태를 스스로 설정할 수 있으므로, 프로세서의 DMA 관리 기능을 감소시킬 수 있다. 따라서, 고속 데이터 전송을 수행할 수 있다.

Claims (9)

  1. 메인 프로세서;
    상기 메인 프로세서에서 처리될 패킷을 저장하는 프로세서 처리 버퍼;
    링크에서 입력된 패킷을 와이어 스피드로 포워딩하되, 입력된 상기 패킷이 상기 메인 프로세서에서 처리될 패킷인 경우 DMA(Direct Memory Access) 요구 신호를 발생하는 패킷 처리 엔진; 및
    상기 DMA 요구 신호에 응답해서 상기 프로세서 처리 버퍼의 잔량 상태를 감시하고, DMA 동작에 필요한 제어 신호 및 어드레스를 자체적으로 발생하는 DMA 엔진을 포함하는 것을 특징으로 하는 네트워크 시스템.
  2. 제 1 항에 있어서,
    상기 메인 프로세서는, 라우팅 프로토콜 및 라우팅 관련 제어 패킷이 입력될 경우, 상기 패킷 처리 엔진을 대신하여 상기 패킷을 처리하는 것을 특징으로 하는 네트워크 시스템.
  3. 제 1 항에 있어서, 상기 DMA 엔진은
    상기 메인 프로세서의 버스 중재를 수행하는 중재부;
    상기 프로세서 처리 버퍼의 잔량 상태를 감시하는 버퍼 감시부; 및
    상기 패킷이 저장될 상기 프로세서 처리 버퍼의 주소를 자동으로 발생하는 자동 주소 발생부를 포함하는 것을 특징으로 하는 네트워크 시스템.
  4. 제 3 항에 있어서, 상기 버퍼 감시부는
    상기 프로세서 처리 버퍼의 현재 버퍼 크기 정보를 저장하는 제 1 레지스터;
    상기 네트워크 시스템의 최대 패킷 크기 정보를 저장하는 제 2 레지스터;
    상기 제 1 및 제 2 레지스터들에 저장된 상기 현재 버퍼 크기 정보와 상기 최대 패킷 크기 정보를 비교하는 비교기; 및
    상기 비교기의 비교 결과와 상기 메인 프로세서로부터 발생된 DMA 온 신호에 응답해서 DMA 인에이블 신호를 발생하는 곱셈부를 포함하는 것을 특징으로 하는 네트워크 시스템.
  5. 제 3 항 또는 제 4 항에 있어서, 상기 중재부는
    상기 DMA 인에이블 신호가 활성화 된 경우, 상기 DMA 요구 신호에 응답해서 제 1 버스 사용 요구 신호를 발생하는 제 1 중재기; 및
    상기 제 1 중재기로부터 발생된 상기 제 1 버스 사용 요구 신호 및 상기 메인 프로세서로부터 발생된 제 2 버스 사용 요구 신호에 응답해서, 상기 버스 사용 신호들간의 우선 순위를 중재하는 제 2 중재기를 포함하는 것을 특징으로 하는 네트워크 시스템.
  6. 제 3 항에 있어서, 상기 주소 발생부는
    상기 프로세서 처리 버퍼의 시작 주소를 저장하는 제 1 레지스터;
    상기 프로세서 처리 버퍼에 데이터가 쓰여질 현재 주소를 저장하는 제 2 레지스터;
    상기 프로세서 처리 버퍼의 마지막 주소를 저장하는 제 3 레지스터; 및
    상기 제 2 및 제 3 레지스터에 저장된 상기 주소들을 비교하고, 비교 결과 상기 현재 주소가 상기 프로세서 처리 버퍼의 마지막 주소보다 작은 경우, 상기 현재 주소를 증가시키는 제어 신호를 발생하는 비교기를 포함하는 것을 특징으로 하는 네트워크 시스템.
  7. (a) 링크로부터 패킷을 받아들이는 단계;
    (b) 입력된 상기 패킷이 메인 프로세서에서 처리되어야 하는 패킷인 경우, DMA 요구 신호를 발생하는 단계;
    (c) 상기 DMA 요구 신호에 응답해서 메인 프로세서 버스를 중재하는 단계;
    (d) 상기 (c) 단계에서의 중재 결과, 상기 DMA 요구 신호의 우선 순위가 가장 높은 것으로 판명된 경우 DMA 허용 신호를 발생하는 단계;
    (e) 상기 DMA 허용 신호에 응답해서 상기 패킷을 상기 메인 프로세서의 버퍼로 전송하는 단계;
    (f) 상기 패킷의 전송 상태를 감시하는 단계; 및
    (g) 상기 (f) 단계에서의 감시 결과, 상기 패킷의 전송이 완료되었으면 상기 메인 프로세서에게 인터럽트를 발생하는 단계를 포함하는 것을 특징으로 하는 DMA 운영 방법.
  8. 제 7 항에 있어서,
    (h) 상기 (b) 단계에서 발생된 상기 DMA 요구 신호가 비활성화 된 경우, 가상 DMA 허용 신호를 발생하는 단계; 및
    (i) 상기 가상 DMA 허용 신호에 응답해서 상기 패킷을 폐기하는 단계를 더 포함하는 것을 특징으로 하는 DMA 운영 방법.
  9. 제 7 항 내지 제 8 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR10-2002-0020904A 2002-04-17 2002-04-17 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법 KR100441884B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0020904A KR100441884B1 (ko) 2002-04-17 2002-04-17 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0020904A KR100441884B1 (ko) 2002-04-17 2002-04-17 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법

Publications (2)

Publication Number Publication Date
KR20030082253A true KR20030082253A (ko) 2003-10-22
KR100441884B1 KR100441884B1 (ko) 2004-07-27

Family

ID=32379286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0020904A KR100441884B1 (ko) 2002-04-17 2002-04-17 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법

Country Status (1)

Country Link
KR (1) KR100441884B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100708266B1 (ko) * 2005-01-27 2007-04-17 후지쯔 가부시끼가이샤 다이렉트 메모리 액세스 제어 방법, 다이렉트 메모리액세스 제어 장치, 정보 처리 시스템, 프로그램을 기록한컴퓨터 판독 가능한 기록 매체

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0126583B1 (ko) * 1994-09-10 1998-04-03 양승택 시스템 제어기 모듈에서의 요청기 읽기 제어기(Requester Read Controller In System Controller In System Control Module)
US5633865A (en) * 1995-03-31 1997-05-27 Netvantage Apparatus for selectively transferring data packets between local area networks
KR970004507A (ko) * 1995-06-15 1997-01-29 김광호 다중 버퍼를 이용한 실시간 멀티미디어 데이타 전송 장치 및 방법
KR19980040452A (ko) * 1996-11-29 1998-08-17 배순훈 비동기전송모드 통신방식에서 데이터 전송플로우 제어방법
TW324870B (en) * 1997-05-01 1998-01-11 Winbond Electronics Corp Network switcher
KR20010064038A (ko) * 1999-12-24 2001-07-09 윤종용 이더네트 콘트롤러의 직접 엑세스 메모리 전송 임계치자동 설정방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100708266B1 (ko) * 2005-01-27 2007-04-17 후지쯔 가부시끼가이샤 다이렉트 메모리 액세스 제어 방법, 다이렉트 메모리액세스 제어 장치, 정보 처리 시스템, 프로그램을 기록한컴퓨터 판독 가능한 기록 매체

Also Published As

Publication number Publication date
KR100441884B1 (ko) 2004-07-27

Similar Documents

Publication Publication Date Title
KR100321490B1 (ko) 디지탈데이터를전달하기위한고속패킷버스아키텍쳐및그방법
US5721955A (en) System for transferring portion of data to host from buffer if size of packet is greater than first threshold value but less than second threshold value
EP1018687B1 (en) A port manager controller for connecting various function modules
US6970921B1 (en) Network interface supporting virtual paths for quality of service
US20060053236A1 (en) Method and system for optimizing DMA channel selection
JPS62221057A (ja) ポインタアドレスを発生するための装置および方法
US6172984B1 (en) System and method for reducing the latency for time sensitive data over CSMA/CD networks
JPH06314205A (ja) 割り込み源間の優先順位確立方法及びデータ処理システム
US7058747B2 (en) Bus system and bus interface for connection to a bus
US6061748A (en) Method and apparatus for moving data packets between networks while minimizing CPU intervention using a multi-bus architecture having DMA bus
JP2008513886A (ja) バスの送信チャネル上の帯域幅を割り振る方法および装置
US7043589B2 (en) Bus system and bus interface
KR100441884B1 (ko) 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법
US20040230717A1 (en) Processing device
JP5601090B2 (ja) 通信装置
EP2111003A1 (en) Data transfer control device and electronic equipment
JP4151362B2 (ja) バス調停方式、データ転送装置、及びバス調停方法
JP2000224208A (ja) パケット転送制御装置及びパケット転送方法
JP2000276437A (ja) Dma制御装置
JP5587530B2 (ja) エンジン・プロセッサ連携システム及び連携方法
JP2002176464A (ja) ネットワークインタフェース装置
EP1195685B1 (en) A process for interfacing a microprocessor with a packet based device and respective system
JPH06301607A (ja) マルチアクセスi/o制御方式
JPH0546529A (ja) ダイレクトメモリアクセス方式
JPH10320351A (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: 20080701

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee