KR20000026337A - 수신용 버퍼 디스크립터 - Google Patents

수신용 버퍼 디스크립터 Download PDF

Info

Publication number
KR20000026337A
KR20000026337A KR1019980043844A KR19980043844A KR20000026337A KR 20000026337 A KR20000026337 A KR 20000026337A KR 1019980043844 A KR1019980043844 A KR 1019980043844A KR 19980043844 A KR19980043844 A KR 19980043844A KR 20000026337 A KR20000026337 A KR 20000026337A
Authority
KR
South Korea
Prior art keywords
frame
descriptor
data
pointer
frame data
Prior art date
Application number
KR1019980043844A
Other languages
English (en)
Inventor
김영완
Original Assignee
윤종용
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Priority to KR1019980043844A priority Critical patent/KR20000026337A/ko
Publication of KR20000026337A publication Critical patent/KR20000026337A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9026Single buffer per packet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

수신용 버퍼 디스크립터가 개시된다. 본 발명에 의한 수신용 버퍼 디스크립터는 헤더 및 바디를 포함하고, 헤더는 다음 버퍼 디스크립터를 가르키는 제1 포인터, 바디 영역의 시작 어드레스를 가르키는 제2 포인터, 바디의 크기를 저장하는 제1 기억공간, 수신되고 있는 프레임 데이터의 프레임 디스크립터를 가르키는 제3 포인터, 데이터 처리 소프트 웨어에 의해 처리중인 프레임 데이터의 프레임 디스크립터를 가르키는 제4 포인터 및 바디의 마지막에 저장되는 마지막 프레임 데이터가 정상적으로 기록되었는 가의 여부를 기록하는 제2 기억공간을 포함하고, 바디는 n개의 프레임 디스크립터들과 n개의 프레임 디스크립터에 상응하여 수신된 프레임 데이터를 저장하는 n개의 프레임 데이터 영역을 포함하는 것을 특징으로 하며, 여러개의 프레임 디스크립터들과 프레임 디스크립터들에 각각 대응되는 프레임 데이터들을 하나의 버퍼에 연속적으로 저장함으로써, 수신되는 프레임 데이터의 크기와는 상관없이 메모리를 효율적으로 이용할 수 있으며 하드웨어에 의해 처리되므로 중앙처리장치의 부담을 줄일 수 있는 효과가 있다.

Description

수신용 버퍼 디스크립터
본 발명은 네트워크 컨트롤러(network controller)에 관한 것으로, 특히 네트워크 컨트롤러에서 데이터를 수신할 때 프레임 단위로 수신되는 프레임 데이터의 저장을 제어하는 버퍼 디스크립터(buffer descripter)에 관한 것이다.
일반적으로, MAC(Medium Access controller) 또는 HDCL(High level Data link Controller)등의 네트워크 컨트롤러는 데이터의 송/수신시 중앙처리장치(CPU:Central Processing Unit)의 부담을 최소화하기 위해 프레임 디스크립터(frame descriptor)를 통한 직접 메모리 접근(DMA:Direct Memory Access) 동작을 지원한다.
도 1 및 도 2는 일반적으로 사용되는 송/수신용 디스크립터의 구조를 나타내는 도면으로, 도 1은 송신용 디스크립터의 구조를 나타내고 도 2는 수신용 디스크립터의 구조를 각각 나타낸다.
도 1을 참조하면, 송신용 프레임 디스크립터는 제1 포인터(a), 제2 포인터(b), 전송 제어필드(transmit control feild)(c), 데이터 크기 기억 공간(d) 및 전송상태 기록공간(e)을 갖는다. 여기서, 제1 포인터(a)는 다음에 올 프레임 디스크립터를 가르키는 포인터이고, 제2 포인터(b)는 송신할 데이터를 저장한 메모리영역의 시작 어드레스를 가르키는 포인터이다. 전송 제어필드(c)는 데이터를 전송시 여러 가지 옵션을 지정하기 위한 공간이고, 데이터 크기 기억 공간(d)은 전송하고자 하는 데이터의 크기를 기억하는 공간이며, 전송상태 기억공간(e)은 데이터를 모두 전송한후, 전송상태를 기록하는 기억공간이다.
도 2를 참조하면, 수신용 프레임 디스크립는 제3 포인터(a'), 제4 포인터(b'), 버퍼크기 기억공간(c'), 수신데이터 크기 기억공간(d') 및 수신상태 기록공간(e')을 갖는다. 여기서, 제3 포인터(a')는 다음 프레임 디스크립터를 가르키는 포인터이고, 제4 포인터(b')는 수신할 데이터를 저장할 메모리영역의 시작 어드레스를 가르키는 포인터이다. 버퍼크기 기억공간(c')은 수신할 데이터를 저장할 메모리의 크기를 기억하는 기억공간이며, 수신데이터 크기 기억공간(d')은 실제로 수신된 데이터의 크기를 기억하는 기억공간이다. 수신상태 기억공간(e')은 데이터를 모두 수신한후, 수신상태를 기록하는 기억공간이다.
도 1 및 도 2를 참조하면, 송신용 데이터를 저장하기 위한 송신용 프레임 디스크립터는 대개의 경우 보낼 데이터가 준비된 상태에서 구성이 완료되므로 메모리 공간을 사용함에 있어 필요한 크기를 데이터 크기 기억공간(d)에 지정할 수 있지만 수신용 데이터를 저장하는 프레임 디스크립터는 수신될 데이터의 정확한 크기를 알지 못하므로 최대 프레임 크기를 예상하여 버퍼크기를 지정하여 버퍼크기 기억공간(c')에 기록하게 된다. 만약, 설정된 최대 프레임 크기를 넘어가는 프레임 데이터가 수신된다면 네트워그 컨트롤러에서는 인터럽트(interupt)를 발생시켜 소프트웨어에 의해 메모리 할당등의 조치를 취하도록 하여야 하며, 최대 프레임 크기보다 작은 프레임이 수신될 경우에는 그 차이만큼 쓰지 않는 메모리 영역이 발생하여 결과적으로 메모리를 비효율적으로 이용하게 된다.
본 발명이 이루고자 하는 기술적 과제는 수신데이터를 메모리에 효율적으로 저장하기 위해, 프레임 디스크립터가 지정하는 메모리의 크기를 가변시킴으로써 메모리를 효율적으로 이용하도록 제어하는 수신용 버퍼 디스크립터를 제공하는 데 있다.
도 1은 일반적으로 사용되는 송신용 디스크립터의 구조를 나타내는 도면이다.
도 2는 일반적으로 사용되는 수신용 디스크립터의 구조를 나타내는 도면이다.
도 3(a) 및 (b)는 본 발명에 의한 수신용 버퍼 디스크립터의 구조를 설명하기 위한 도면이다.
도 4(a) 및 도 4(b)는 본 발명에 의한 버퍼 디스크립터의 다른 실시예를 설명하기 위한 도면이다.
상기 과제를 이루기 위해 본 발명에 의한 수신용 버퍼 디스크립터는 헤더 및 바디를 포함하고, 헤더는 다음 버퍼 디스크립터를 가르키는 제1 포인터, 바디 영역의 시작 어드레스를 가르키는 제2 포인터, 바디의 크기를 저장하는 제1 기억공간, 수신되고 있는 프레임 데이터의 프레임 디스크립터를 가르키는 제3 포인터, 데이터 처리 소프트 웨어에 의해 처리중인 프레임 데이터의 프레임 디스크립터를 가르키는 제4 포인터 및 바디의 마지막에 저장되는 마지막 프레임 데이터가 정상적으로 기록되었는 가의 여부를 기록하는 제2 기억공간을 포함하고, 바디는 n개의 프레임 디스크립터들과 n개의 프레임 디스크립터에 상응하여 수신된 프레임 데이터를 저장하는 n개의 프레임 데이터 영역을 포함하는 것을 특징으로 한다.
이하, 본 발명에 의한 수신용 버퍼 디스크립터를 첨부한 도면들을 참조하여 다음과 같이 설명한다.
도 3(a) 및 (b)는 본 발명에 의한 수신용 버퍼 디스크립터의 구조를 설명하기 위한 도면으로서 도 3(a)는 헤더의 구조를 보이고, 도 3(b)는 바디의 구조를 보인다. 본 발명에 의한 수신용 버퍼 디스크립터의 헤더는 제1 내지 제4 포인터(10, 12, 16, 18)와 제1 및 제2 기억공간(14 및 20)을 포함하고, 본 발명에 의한 수신용 버퍼 디스크립터의 바디는 복수개의 프레임 데이터들과 각각의 프레임 데이터가 저장된 메모리 영역 전단에는 프레임 데이터에 대한 정보를 갖는 프레임 디스크립터들이 각각 존재하게 된다. 여기서, 각 프레임 디스크립터의 구조는 도 2에 도시된 바와 같다.
도 3(a) 및 도 3(b)를 참조하면, 제1 포인터(10)는 다음 버퍼 디스크립터의 어드레스를 지정하는 포인터이고, 제2 포인터(12)는 도 3(b)에 도시된 바디 영역의 시작 어드레스를 가르키는 포인터이고, 제3 포인터(16)는 DMA에 의해 수신되고 있는 프레임 데이터에 대응하는 프레임 디스크립터를 가르키는 포인터이고, 제4 포인터(18)는 바디 영역에 저장된 프레임 데이터중 소프트웨어에 의해 데이터 처리되는 프레임 데이터에 대응하는 프레임 디스크립터를 가르키는 포인터이다. 제1 기억공간(14)은 바디의 크기를 기억하는 기억공간이고, 제2 기억공간(20)은 바디의 끝부분에 저장되는 프레임 데이터가 짤렸는 가에 대한 정보를 저장하는 필드이다.
도 3(a) 및 도 3(b)를 참조하면, 사용자는 소정의 소프트웨어를 이용하여 도 3(a)에 도시된 버퍼 디스크립터의 헤더중 제1 포인터(10), 제2 포인터(12) 및 제4 포인터(18)를 설정하고, 또한 바디의 크기를 설정하여 제1 기억공간(14)에 기억시킨다. 그리고, DMA는 제3 포인터(16)와 제2 기억공간(20)을 제어하게 된다. 제3 포인터(16)의 초기값은 사용자에 의해 설정되나 그 이후에는 DMA에 의해 제어되므로 DMA의 동작중 소프트웨어는 제3 포인터(16)의 필드에 어떠한 데이터를 기록하지 않아야 한다. 사용자가 버퍼 디스크립터의 헤더필드를 설정하고, DMA를 동작시키면 DMA는 제3 포인터(16)에 상응하여 수신되는 프레임 데이터를 기록하고자하는 프레임 디스크립터 영역을 확보한 다음, 프레임 디스크립터에 상응하여 도 3(b)의 프레임 데이터 영역(24, 28, … , 32)에 프레임 데이터를 기록하게 된다. 한 프레임의 수신이 종료되면 DMA는 제3 포인터(16)와 수신된 프레임 데이터의 다음 프레임 디스크립터 포인터(a')를 수신된 마지막 데이터를 써 넣은 어드레스의 다음 어드레스로 설정한다.
다음에 수신되는 프레임 데이터는 계속해서 제3 포인터(16)가 지정하는 어드레스에 프레임 디스크립터와 함께 쓰여지므로, 낭비되는 메모리 공간이 없이 효율적으로 메모리를 이용할 수 있게 된다.
계속되는 프레임 데이터 수신중, 도 3(b)에 도시된 바디의 남아있는 메모리 크기를 초과하여 데이터가 수신될 경우, 즉 한 프레임의 데이터가 n번째 프레임 데이터 영역(32)을 초과하는 경우에는 n번째 프레임 디스크립터(30)에서 데이터가 짤렸음을 DMA는 제2 기억공간(20)에 기록한 다음, 다음 버퍼 디스크립터에 나머지 데이터를 연속적으로 기록하거나 또는 같은 버퍼 디스크립터의 앞부분에 나머지 데이터를 기록하게 된다. 전자과 같이 다음 버퍼 디스크립터에 나머지 데이터를 연속적으로 기록할 경우에는 제1 포인터(10)가 다음 버퍼 디스크립터를 가르키도록 설정되어야 하고, 후자와 같이 하나의 버퍼 디스크립터를 이용하여 데이터를 연속적으로 기록하고자 할 경우에는 제1 포인터(10)가 자신의 버퍼 디스크립터를 가르키도록 설정되어야 한다. 한편, 프레임 데이터의 수신시 항상 소프트웨어에 의해 데이터 처리중인 프레임 디스크립터를 지정하는 제4 포인터(18)를 모니터함으로써, 소프트웨어에 의해 아직 처리되지 못한 프레임 데이터 영역에 새로운 프레임 데이터를 기록하는 일이 없도록 한다.
도 4(a) 및 도 4(b)는 본 발명에 의한 버퍼 디스크립터의 다른 실시예를 설명하기 위한 도면으로서, 도 4(a)는 헤더의 구조를 나타내고, 도 4(b)는 바디의 구조를 각각 나타낸다. 본 발명의 다른 실시예에 의한 수신용 버퍼 디스크립터의 헤더는 제1 내지 제6 포인터(40, 42, 46, 48, 50 및 52), 제1 및 제2 기억공간(44 및 54)과 제1 내지 제n 프레임 디스크립터(56 내지 60)를 포함하고, 본 발명에 의한 수신용 버퍼 디스크립터의 바디는 헤더에 존재하는 제1 내지 제n 프레임 디스크립터(56 내지 60)에 상응하여 수신된 제1 내지 제n 프레임 데이터(70 내지 74)가 저장된다.
도 4(a) 및 도 4(b)를 참조하면, 제1, 제2, 제3 및 제5 포인터(40, 42, 46 및 50)은 도 3(a)의 제1 내지 제 4 포인터(10, 12, 16, 18)에 각각 대응되어 동일한 동작을 한다. 도 4(a)에 도시된 수신용 버퍼 디스크립터는 도 3(a)에 도시된 수신용 버퍼 디스크립터와는 달리 수신된 프레임 데이터를 기록할 도 4(b)에 도시된 바디의 시작 어드레스를 지정하는 제4 포인터(48)와 소정의 소프트웨어에 의해 데이터 처리될 프레임 데이터의 시작 어드레스를 지정하는 제6 포인터(6)가 더 있다는 것이다. 또한, n개의 프레임 디스크립터들을 헤더부분에 둠으로써, 도 4(b)에 도시된 버퍼 디스크립터의 바디에는 프레임 데이터들만이 저장된다는 것이다.
제1 및 제2 기억공간(44 및 54)은 도 3(a)의 그것과 동일한 기능을 한다.
도 4(a) 및 도 4(b)에 도시된 수신용 버퍼 디스크립터의 동작은 도 3(a) 및 도 3(b)에 설명된 것과 동일하며, 단지 소프트웨어에 의해 처리되지 않은 프레임 데이터가 기록된 바디의 영역에 새로운 프레임 데이터가 기록되지 않도록 데이터 처리중인 프레임 데이터의 시작 어드레스를 지정하는 제6 포인터(52)를 모니터한다. 도 4(a) 및 도 4(b)에 도시된 것과 같은 수신용 버퍼 디스크립터의 구조는 프레임 디스크립터에 대한 접속 속도를 시스템 버스와 상관없이 빠르게 하기 위해 도 4(a)에 도시된 헤더부분을 별도의 메모리 영역에 할당할 수 있다.
상술한 바와 같이, 본 발명에 의한 수신용 버퍼 디스크립터는 여러개의 프레임 디스크립터들과 프레임 디스크립터들에 각각 대응되는 프레임 데이터들을 하나의 버퍼에 연속적으로 저장함으로써, 수신되는 프레임 데이터의 크기와는 상관없이 메모리를 효율적으로 이용할 수 있으며 하드웨어에 의해 처리되므로 중앙처리장치의 부담을 줄일 수 있는 효과가 있다.

Claims (1)

  1. 헤더 및 바디를 포함하고,
    상기 헤더는
    다음 버퍼 디스크립터를 가르키는 제1 포인터;
    상기 바디 영역의 시작 어드레스를 가르키는 제2 포인터;
    상기 바디의 크기를 저장하는 제1 기억공간;
    수신되고 있는 프레임 데이터의 프레임 디스크립터를 가르키는 제3 포인터;
    데이터 처리 소프트 웨어에 의해 처리중인 상기 프레임 데이터의 상기 프레임 디스크립터를 가르키는 제4 포인터; 및
    상기 바디의 마지막에 저장되는 마지막 상기 프레임 데이터가 정상적으로 기록되었는 가의 여부를 기록하는 제2 기억공간을 포함하고,
    상기 바디는 n개의 상기 프레임 디스크립터들과 상기 n개의 프레임 디스크립터에 상응하여 수신된 프레임 데이터를 저장하는 n개의 프레임 데이터 영역을 포함하는 것을 특징으로 하는 수신용 버퍼 디스크립터.
KR1019980043844A 1998-10-20 1998-10-20 수신용 버퍼 디스크립터 KR20000026337A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980043844A KR20000026337A (ko) 1998-10-20 1998-10-20 수신용 버퍼 디스크립터

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980043844A KR20000026337A (ko) 1998-10-20 1998-10-20 수신용 버퍼 디스크립터

Publications (1)

Publication Number Publication Date
KR20000026337A true KR20000026337A (ko) 2000-05-15

Family

ID=19554626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980043844A KR20000026337A (ko) 1998-10-20 1998-10-20 수신용 버퍼 디스크립터

Country Status (1)

Country Link
KR (1) KR20000026337A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298613B2 (en) 2013-02-28 2016-03-29 Samsung Electronics Co., Ltd. Integrated circuit for computing target entry address of buffer descriptor based on data block offset, method of operating same, and system including same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298613B2 (en) 2013-02-28 2016-03-29 Samsung Electronics Co., Ltd. Integrated circuit for computing target entry address of buffer descriptor based on data block offset, method of operating same, and system including same

Similar Documents

Publication Publication Date Title
US5251303A (en) System for DMA block data transfer based on linked control blocks
EP0113612B1 (en) Address conversion unit for multiprocessor system
US7130933B2 (en) Method, system, and program for handling input/output commands
EP0582666B1 (en) Method and apparatus for buffering data within stations of a communication network
JPS62297952A (ja) 可変長デ−タの記憶方式
KR960035270A (ko) 순서에 따르지 않고 판독 및 기입 명령을 실행하는 메모리 제어기
US6912716B1 (en) Maximized data space in shared memory between processors
US7113516B1 (en) Transmit buffer with dynamic size queues
US6801963B2 (en) Method, system, and program for configuring components on a bus for input/output operations
KR950015106A (ko) 이더넷 제어기용 패킷 수신 인터럽트 제어 시스템
US6584512B1 (en) Communication DMA device for freeing the data bus from the CPU and outputting divided data
US6820140B2 (en) Method, system, and program for returning data to read requests received over a bus
US5214783A (en) Device for controlling the enqueuing and dequeuing operations of messages in a memory
US6339558B1 (en) FIFO memory device and FIFO control method
KR20000026337A (ko) 수신용 버퍼 디스크립터
US4878197A (en) Data communication apparatus
CN107085557A (zh) 直接存储器访问系统以及相关方法
CN108595351B (zh) 一种面向网络转发处理的dma发送控制方法
JPH08212178A (ja) 並列計算機
US7116659B2 (en) Data transmission memory
KR20040066311A (ko) 직접 메모리 접근매체의 데이터 전송 장치 및 방법
JPH0833869B2 (ja) データ処理装置
US6732213B1 (en) Multiple processor computer
JP2594567B2 (ja) メモリアクセス制御装置
JP2826780B2 (ja) データ転送方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination