KR100280642B1 - 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법 - Google Patents

이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법 Download PDF

Info

Publication number
KR100280642B1
KR100280642B1 KR1019980049387A KR19980049387A KR100280642B1 KR 100280642 B1 KR100280642 B1 KR 100280642B1 KR 1019980049387 A KR1019980049387 A KR 1019980049387A KR 19980049387 A KR19980049387 A KR 19980049387A KR 100280642 B1 KR100280642 B1 KR 100280642B1
Authority
KR
South Korea
Prior art keywords
frame
ethernet
memory
ethernet frame
memory address
Prior art date
Application number
KR1019980049387A
Other languages
English (en)
Other versions
KR20000032792A (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 KR1019980049387A priority Critical patent/KR100280642B1/ko
Priority to JP32579899A priority patent/JP2000242588A/ja
Priority to US09/442,790 priority patent/US6697366B1/en
Publication of KR20000032792A publication Critical patent/KR20000032792A/ko
Application granted granted Critical
Publication of KR100280642B1 publication Critical patent/KR100280642B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

본 발명은 이더넷 컨트롤러(ethernet controller)의 메모리 관리 장치 및 그 제어방법으로, 이더넷 컨트롤러의 메모리 관리 장치에서 이더넷 프레임을 수신하는 동안 프레임 길이를 검출하고, 이를 데이터베이스 포인터에 의해 현재 사용되는 데이터베이스의 메모리 어드레스에 더하여 링크 리스트 구조로 연결된 다음 데이터베이스의 메모리 어드레스로 사용한다.

Description

이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법
본 발명은 이더넷 컨트롤러(ethernet controller)의 메모리 관리 장치 및 그 제어방법에 관한 것으로 더욱 상세하게 말하자면 이더넷 컨트롤러에서 수신한 데이터를 메모리에 저장하는 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법에 관한 것이다.
다수의 컴퓨터가 독립적으로 동작하면서 서로 정보를 교환하기 위해서는 통일된 프로토콜(protocol)에 의한 관리 기술이 필수적이다. 최근에 사용자는 다량의 정보를 빠른 시간안에 전달하는 것을 최대의 과제로 삼고 있으며, 이는 단위 시간당 정보량의 증가를 말한다.
이에 따라 다수의 컴퓨터를 하나의 네트워크로 연결하고 그 네트워크 범주안에 들어가는 단말기간의 원할한 정보 교환이 필요하다. 따라서, 단말기들이 같은 네트워크 범주내에서 데이터를 송수신하는 것인지 다른 네트워크 내의 데이터를 송수신하는 것인지 구분하여야 한다. 이에 따라 허브(hub) 또는 리피터(repeater)라는 중계기를 두고 네트워크 내의 데이터 교환을 관리한다. 이들 중계기에 네트워크에 연결된 단말기수, 즉 채널수가 많을수록 이를 관리하는 기술이 어려워진다. 따라서, 성능이 우수한 중계기일수록 각 단말기들이 송수신하는 데이터 내용을 살펴보고 그에 맞게 제어하여 네트워크 내에서 병목 현상이 발생하지 않도록 해야한다.
이하 도면을 참조하여 이더넷 통신에 대해 설명한다.
도1은 IEEE 802.3 규약에 따른 이더넷 프레임의 구성도이다.
이더넷 통신 방식에서 IEEE(Institute of Electrical and Electronic Engineers) 802.3 규약은 CSMA/CD(carrier sense multiple access with collision detection)라고 한다.
CSMA/CD 방식으로 동작하는 단말기는 송신 전에 전송로에서 캐리어(carrier)를 점검하고, 채널(channel)이 사용가능(idle)하면 프레임(frame) 송신을 수행한다. 그러나, 송신할 때 다른 단말기에서도 송신이 있는 경우 필연적으로 프레임간에 충돌(collision)이 발생한다. 충돌이 감지되면 즉시 전송중인 프레임의 나머지 부분의 송신을 중단하고 일정 시간 경과 후에 재전송을 준비한다.
따라서, CSMA/CD 방식은 전송매체를 공유함으로써 단말기들이 전송하는 프레임이 충돌하는 경우, 캐리어와 충돌을 감지하는 기능 및 재전송하는 기능 등이 물리 계층 및 데이터 링크 계층에 구현된다.
도1에서 본 바와 같이, IEEE 802.3 방식에서 사용되는 프레임은 프리엠블(preamble), 시작 프레임 구별자(starting frame delimiter : 이하 'SFD'라 칭함), 목적 어드레스(destination address), 소스 어드레스(source address), 길이(length) 또는 이더타입(ethertype), 정보 데이터(information data) 및 프레임 체크 시퀀스(frame check sequence : 이하 'FCS'라 칭함)로 이루어진다.
프리엠블은 송신측과 수신측간의 송수신 속도를 일치시키기 위한 비트 동기를 맞춘다. SFD는 유효한 프레임의 시작임을 알리는 프레임 동기용 비트열이다. 목적 어드레스와 소스 어드레스는 각각 목적지 이더넷 카드의 주소와 송신측 이더넷 컨트롤러의 주소를 나타낸다. 길이 또는 이더타입은 프레임의 정보 데이터 영역의 길이를 나타내거나 이더넷 유형을 결정한다. 정보 데이터 영역에는 실제로 유효한 데이터가 실리게 되고 프레임 최소길이보다 적을 때에는 0으로 채워지는 패딩(padding)이 있게 된다. FCS는 프리엠블과 SFD를 제외한 유효한 프레임의 비트열에서 오류발생을 검출하는데 사용된다.
도2a 및 도2b는 이더넷 컨트롤러에서 각각 프레임 송신과 수신을 나타내는 블럭도이다.
데이터 송신시 이더넷 컨트롤러 내에 존재하는 직접 메모리 액세스(direct memory access : 이하 'DMA'라 칭함)(2)는 송신하고자 하는 데이터를 메모리(1)에서 판독하여 데이터 링크 계층의 부계층인 MAC(Medium Access Control)(3)에 전달한다. 이때 MAC(3)은 전달받은 데이터에 위에서 설명한 프리엠블, SFD, 패딩 및 FCS를 추가하여 물리 계층에 전달한다. 이때 중앙처리장치(central processing unit : 이하 'CPU'라 칭함)는 데이터 송신시 송신할 단말기의 어드레스와 수신 단말기의 어드레스를 미리 메모리에 정의해 두고 DMA에 사전에 알려준다.
반대로 데이터 수신시에는 물리 계층에서 전달받은 수신 데이터를 MAC(3')에서 프리엠블과 SFD를 제외하고 DMA(2')에 전달한다. DMA(2')는 이를 CPU의 도움없이 메모리(1')에 저장한다.
한편, CPU는 데이터 송수신시 송신할 데이터의 어드레스와 수신한 데이터의 저장 어드레스를 프레임 지시자(frame descriptor)를 통해 DMA에게 알려준다. 여기서, 프레임 지시자는 CPU에 의해 메모리 영역에 할당되고 프레임 지시자 포인터(frame descriptor pointer)에 의해 판독된다.
도3은 이더넷 컨트롤러에서 사용되는 프레임 지시자의 구성도이다.
하나의 프레임 지시자(5)는 송수신시 하나의 프레임과 일대일로 매핑된다. 도3에 나타난 바와 같이 하나의 프레임 지시자는 데이터 포인터(data pointer, 5a), 상태 필드(status field, 5b), 길이 필드(length field, 5c), 제어 필드(control field, 5d) 및 지시자 포인터(descriptor pointer, 5e)로 구성된다. 여기서, 데이터 포인터(5a)는 송신할 데이터와 수신되어 메모리에 저장된 데이터의 첫 어드레스를 가리키는 32 비트 포인터이다. 상태 필드(5b)는 송수신 후 그 결과 상태 및 에러 발생시 에러 유형을 나타내는 비트를 포함한다. 길이 필드(5c)는 송수신할 프레임에서 데이터 길이를 가리키고 제어 필드(5d)는 프레임 송수신시 그 방법을 지정한다. 지시자 포인터(5e)는 현재 프레임 지시자(5)의 다음에 연결되는 프레임 지시자의 어드레스를 갖는다. 이러한 방법으로 다수의 프레임 지시자는 링크(link)로 연결된 리스트(list) 구조를 가진다.
도4는 이더넷 컨트롤러에서 프레임 지시자를 사용하여 데이터를 송수신하는 방법을 나타낸 도면이다.
도4에서 프레임 지시자 포인터(frame descriptor pointer, 10)는 프레임 지시자(20~22)와 별도로 마련되어 다수의 링크 리스트 구조를 가지는 프레임 지시자를 관리한다. 즉. 프레임 지시자 포인터(10)는 현재 진행하고 있는 프레임 지시자(20)의 어드레스를 가지고 있으며, 현재의 프레임 지시자(20)가 모두 수행되면 지시자 포인터(20e)의 값 즉, 현재 프레임 지시자의 다음에 연결되는 프레임 지시자의 어드레스로 갱신된다.
다수의 프레임 지시자(20~22)는 CPU에 의해 메모리의 특정 영역에 링크 리스트 구조로 할당된다. 이때, 프레임 지시자 포인터(10)는 만들어진 다수의 프레임 지시자(20~22) 중에서 첫 번째 프레임 지시자를 가리키게 된다.
메모리(30)는 송신시에는 송신할 데이터가 구성되며, 수신시에는 수신되는 데이터를 저장하기 위해 미리 일정 간격으로 즉, 프레임의 최대 정보 데이터 길이인 1518 바이트씩 차례로 확보된다.
다음에는 도4를 참조하여 이더넷 컨트롤러를 이용한 데이터 송수신 과정을 설명한다.
데이터를 송신하는 경우, 먼저 송신할 데이터가 메모리(30)에 구성된다. 프레임 지시자(20)의 데이터 포인터(20a)는 송신 데이터의 첫 어드레스가 세트되고, 길이 필드(20c)에 송신 데이터의 길이가 세트된다. 지시자 포인터(20e)에는 현재 수행되는 프레임 지시자(20) 다음에 연결된 프레임 지시자(21)의 어드레스가 세트된다. 마지막으로 제어 필드(20d)의 송신 제어 비트가 세트됨으로써 송신 데이터가 이더넷 컨트롤러를 통해 전송된다. 전송이 완료되면 상태 필드(20b)에 그 결과를 나타내는 비트가 세트되며, 프레임 지시자 포인터(10)는 지시자 포인터(20e)의 값으로 갱신된다.
한편 데이터를 수신하는 경우, MAC에서 들어오는 데이터는 프레임 지시자 포인터(10)가 가리키는 프레임(20)에 의해 수신된다. 즉, 수신된 데이터는 데이터 포인터(20a)에 의해 지정된 메모리(30) 영역에 저장된다. 이때 길이 필드(20c)는 수신된 데이터의 길이로 세트되고 상태 필드(20b)는 수신 결과를 나타내게 된다. 여기서도, 수신이 완료되면 프레임 지시자 포인터(10)는 지시자 포인터(20e)의 값으로 갱신된다.
여기서, 수신할 데이터의 길이를 미리 알 수 없으므로 메모리(30)에는 사전에 최대 수신 길이가 확보되어야 한다. IEEE 802.3에서 수신할 수 있는 최대 길이는 1518 바이트이다. 따라서, 메모리(30)는 사전에 1518 바이트 간격으로 차례로 확보되고 프레임 지시자(20~22)의 데이터 포인터(20a, 21a, 22a)에는 확보된 메모리의 시작 어드레스가 각각 세트된다. 예를 들어, 첫 번째 프레임 지시자(20)의 데이터 포인터(20a)에 어드레스 1000이 세트되면 두 번째 프레임 지시자(21)의 데이터 포인터(21a)에는 2518 바이트 떨어진 어드레스 2518이 세트된다.
예를 들어, 처음 수신되는 프레임 데이터 길이가 짧을 경우 즉, 64바이트인 경우, 첫 번째 메모리 영역인 어드레스 1000부터 데이터가 저장되어 64 바이트를 제외한 나머지 메모리 영역은 빈상태로 남겨지게 된다. 그리고 다음에 수신되는 프레임 데이터는 두 번째 메모리 영역인 어드레스 2518부터 데이터가 저장되므로 메모리에 사용되지 않고 빈상태로 남겨진 영역이 발생한다. 수신되는 데이터가 대체적으로 짧은 경우에는 이러한 사용되지 않는 메모리 영역이 사용되는 메모리 영역보다 휠씬 많게 되어 심각한 메모리 낭비를 초래하게 된다.
따라서, 본 발명의 과제는 종래의 문제점을 해결하기 위해, 이더넷 컨트롤러에서 프레임을 수신하는 경우 현재 수신하는 프레임의 길이 필드값과 이전 사용 가능한 메모리 어드레스를 가산하여 사전에 수신될 프레임을 위한 메모리 공간을 가변적으로 컴팩트하게 제공하는 데 있다.
도1은 IEEE 802.3 규약에 따른 이더넷 프레임의 구성도이다.
도2a는 이더넷 컨트롤러에서 프레임 송신을 나타내는 블록도이고,
도2b는 이더넷 컨트롤러에서 프레임 수신을 나타내는 블럭도이다.
도3은 이더넷 컨트롤러에서 사용되는 프레임 지시자의 구성도이다.
도4는 이더넷 컨트롤러에서 프레임 지시자를 사용하여 데이터를 송수신하는 방법을 나타낸 도면이다.
도5는 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 장치에서 프레임 지시자와 관련한 동작을 나타내는 도면이다.
도6은 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 장치를 나타내는 블록도이다.
도7은 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 방법을 나타내는 흐름도이다.
상기한 목적을 달성하기 위해 본 발명은 이더넷 컨트롤러의 메모리 관리 장치에서 이더넷 프레임을 수신하는 동안 프레임 길이를 검출한다. 검출한 프레임 길이는 데이터베이스 포인터에 의해 현재 사용되는 메모리 어드레스에 더해진다. 결국, 더해진 값은 링크 리스트 구조로 연결된 다음 메모리 어드레스로 사용된다.
본 발명의 일 태양에 따른 이더넷 컨트롤러의 메모리 관리 장치는 감시부, 카운터와 검출부를 포함한다. 여기서, 감시부는 이더넷 프레임 시작과 끝을 감시하고, 카운터는 감시부에 의해 초기화되며 이더넷 프레임이 일정 단위로 수신됨에 따라 증가된다. 또한, 검출부는 이더넷 프레임이 수신될 때 길이 필드값을 검출하고, 길이 필드값을 현재 메모리 어드레스에 더하여 다음 프레임을 위한 새로운 메모리 어드레스로 출력한다.
본 발명은 이더넷 프레임이 수신될 때 일시적으로 저장하는 프레임 버퍼를 더 포함한다. 현재 메모리 어드레스를 일시적으로 저장하는 제1 버퍼를 더 포함하고, 새로운 메모리 어드레스가 계산되어 일시적으로 저장되는 제2 버퍼를 더 포함한다. 또한, 검출부와 연결하여 갱신 컨트롤러를 더 포함할 수 있다. 갱신 컨트롤러는 검출부에서 제1 제어신호를 입력받아 제어 버스에 버스 요구 신호를 출력한다. 또한, 중앙처리장치로부터 제어 버스를 통해 버스 허가 신호를 입력받은 후 새로운 메모리 어드레스를 메모리에 세트하도록 제2 제어신호를 출력한다.
본 발명은 이더넷 프레임을 수신하여 메모리에 저장하기 위한 정보를 이더넷 프레임별로 가지고, 이러한 정보는 링크 리스트 구조로 연결되어 순차적으로 액세스되는 데이터베이스에 저장된다. 여기서, 데이터베이스는 메모리 어드레스, 상태 필드, 길이 필드, 제어 필드, 어드레스 포인터로 이루어진다.
본 발명의 다른 태양에 따른 이더넷 컨트롤러의 메모리 관리 장치는 다수의 프레임 지시자, 감시부, 카운터, 검출부와 제어부로 이루어진다.
다수의 프레임 지시자는 이더넷 프레임을 수신하여 메모리에 저장하기 위한 메모리 어드레스를 포함하고, 링크 리스트 구조로 연결되어 순차적으로 액세스된다. 감시부는 이더넷 프레임 시작과 끝을 감시하고, 카운터는 감시부에 의해 초기화되고 이더넷 프레임이 일정 단위로 수신됨에 따라 증가된다.
검출부는 이더넷 프레임이 수신될 때 길이 필드값를 검출한후 인터럽트 신호를 출력한다. 제어부는 인터럽트 신호를 받고 길이 필드값을 현재 사용되는 프레임 지시자의 메모리 어드레스에 더하여 다음에 연결된 프레임 지시자의 메모리 어드레스로 갱신한다.
한편, 본 발명의 일태양에 따른 제어방법은 이더넷 프레임의 시작과 끝은 감시하고 이에 따라 프레임 카운터를 초기화하며 프레임 길이 검출기에 이더넷 프레임의 길이 필드의 위치를 세트한다. 이더넷 프레임을 수신하는 동안 프레임 카운터를 증가시키고 프레임 카운터값이 이더넷 프레임의 길이 필드 위치인지를 판단한다. 프레임 카운터값이 길이 필드 위치이면 길이 필드값을 검출하고 검출이 성공적인지를 판단한다. 길이 필드값이 성공적으로 검출되면 이를 현재 사용하는 메모리 어드레스에 더하여 다음 이더넷 프레임을 위한 메모리 어드레스로 갱신한다. 길이 필드값이 성공적으로 검출되지 않으면 이미 세트된 메모리 어드레스를 사용한다.
한편, 본 발명의 다른 태양에 따른 제어방법은 길이 필드값이 성공적으로 검출되면 인터럽트 신호를 발생시켜 중앙처리장치가 길이 필드값과 현재의 데이터가 저장되는 메모리 어드레스를 더하여 다음 프레임을 위한 새로운 메모리 어드레스를 산출하여 기존의 메모리 어드레스를 갱신하게 하는 것이다.
이하 도면을 참조하여 본 발명의 실시예에 따른 이더넷 컨트롤러에 대해 설명한다.
도5는 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 장치에서 프레임 지시자와 관련한 동작을 나타내는 도면이다.
도5에 도시한 바와 같이, 본 발명의 실시예에 따른 메모리 관리 장치는 프레임 지시자 포인터(100), 링크 리스트 구조로 연결된 다수의 프레임 지시자(200~220), 메모리(300), 프레임 길이 검출기(550)가 연관되어 동작한다.
다음은 도5의 메모리 관리 장치의 동작을 설명한다. 프레임 지시자 포인터(100)는 초기에 링크 리스트 구조의 첫 번째 프레임 지시자(200)를 가리킨다. 그러면, 첫 번째 프레임 지시자(200)의 데이터 포인터(200a)는 메모리(300)의 어드레스 즉, 예컨대 어드레스 1000을 가리킨다. 한편, 프레임 길이 검출기(550)는 현재 수신되고 있는 프레임의 길이 필드를 검출한다. 따라서, 두 번째 프레임 지시자(210)의 데이터 포인터(210a)는 이전 데이터 포인터값인 1000과 프레임 길이 검출기(550)가 검출한 현재의 프레임의 길이, 예컨대 64를 더한 값인 1064로 세트된다.
도6은 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 장치를 나타내는 블록도이다.
도6에서 도시한 바와 같이, 본 발명의 실시예에 따른 메모리 관리 장치(500)는 프레임 시작 감시기(510), 프레임 끝 감시기(520), 프레임 카운터(530), 프레임 버퍼(540), 프레임 길이 검출기(550), 현재 데이터 포인터 버퍼(560), 다음 데이터 포인터 버퍼(570), 갱신 제어기(580)와 다음 프레임 지시자 버퍼(590)로 이루어진다.
도6에서 프레임 시작 감시기(510)와 프레임 끝 감시기(520)는 프레임의 시작과 끝을 감지한다. 프레임 카운터(530)는 수신되는 프레임을 바이트 단위로 카운트하고, 프레임 버퍼(540)는 수신되는 프레임을 일시적으로 저장한다. 프레임 길이 검출기(550)는 프레임에서 길이 필드의 값을 검출한다. 현재 데이터 포인터 버퍼(560)는 현재 프레임 지시자(200)의 데이터 포인터(200a)값을 저장하고, 다음 데이터 포인터 버퍼(570)는 다음에 연결된 프레임 지시자(210)의 계산된 데이터 포인터(210a)값을 저장한다. 갱신 제어기(580)는 갱신된 데이터 포인터값을 다음 프레임 지시자에 저장하기 위해 CPU에 버스 요구 신호 등의 제어 신호를 출력하고, CPU로부터 이에 따른 버스 허가 신호를 받아 메모리 관리 장치가 어드레스 버스와 데이터 버스를 점유하게 한다. 다음 프레임 지시자 버퍼(590)는 다음 프레임 지시자(210)의 어드레스를 가진다.
도7은 본 발명의 실시예에 따른 이더넷 컨트롤러의 메모리 관리 방법을 나타내는 흐름도이다.
본 발명의 메모리 관리 장치(500)에서 프레임 시작 감시기(510)는 수신되는 프레임에서 SFD를 감시하여 프레임의 시작을 감지한다. 프레임 끝 감시기(520)는 FCS를 감시하여 프레임의 끝을 감지한다(S400). 프레임을 수신하는 경우 프레임 시작 감시기(510)에 의해 프레임 카운터(530)가 초기화된다. 이때 프레임 길이 검출기(550)에는 13, 14의 값이 세트된다. 이 값은 IEEE 802.3 프레임 포맷에서 프레임 길이 필드의 위치를 가리킨다(S410).
바이트 단위로 프레임이 수신되어 프레임 버퍼(540)에 일시적으로 저장되고(S420) 이에 따라 프레임 카운터(530)는 증가된다(S430). 프레임 카운터(530)의 값이 길이 필드 위치인 13이 되는지를 판단한다(S440). 프레임 카운터(530)가 13이 되면 프레임 길이 검출기(550)가 2바이트인 길이 필드값을 검출하고(S450), 검출이 성공했는지를 판단한다(S460).
검출이 성공적이면 프레임 길이 검출기(550)는 현재 데이터 포인터 버퍼(560)에 저장된 값과 길이 필드값을 가산하여 다음 데이터 포인터 버퍼(570)에 저장한다. 또한, 프레임 길이 검출기(550)는 갱신 제어기(580)에 제1 제어신호를 보낸다. 제1 제어신호를 받은 갱신 제어기(580)는 제어 버스(CTRL BUS)에 버스 요구 신호를 출력한다.
제어 버스(CTRL BUS)를 통해 갱신 제어기(580)로부터 버스 요구 신호를 받은 CPU는 버스 허가 신호를 출력한다. 버스 허가 신호를 수신한 갱신 제어기는 다음 프레임 지시자 버퍼(590)와 다음 데이터 포인터 버퍼(570)에 각각 제2 제어신호를 출력한다. 다음 프레임 지시자 버퍼(590)는 제2 제어신호를 받고 저장하고 있는 다음 프레임 지시자의 어드레스를 어드레스 버스(ADD BUS)에 출력한다. 또한 다음 데이터 포인터 버퍼(570)는 제2 제어신호를 받고, 저장하고 있는 새로운 데이터 포인터값을 데이터 버스(DATA BUS)에 출력한다. 이에 따라 다음 프레임 지시자의 데이터 포인터값이 갱신된다(S470).
검출이 실패하면 CPU가 초기에 설정한 값을 그대로 사용하게 된다(S480).
위에서 설명한 실시예에서는 프레임 길이 검출기가 프레임 길이를 검출하고, 그 검출 결과를 이용하여 수신 프레임이 저장된 다음 메모리 어드레스로 프레임 지시자의 데이터 포인터를 갱신하였으나 이외에 다른 방법도 가능하다. 예컨대, 프레임 길이 검출이 성공한 후, 인터럽트 신호를 발생시켜 CPU가 직접 다음 수신 프레임의 메모리 어드레스를 계산하고 이를 다음 프레임 지시자의 데이터 포인터에 저장하는 것이다.
이상에서는 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법에 대해 설명하였지만 본 발명의 메모리 관리 장치 및 그 제어방법은 이더넷 컨트롤러에만 한정되는 것은 아니다.
또한, 본 발명의 실시예에서는 IEEE 802.3 프레임을 예로 들어 설명하였으나, 본 발명은 상기한 IEEE 802.3 프레임에 한하는 것은 아니며, IEEE 802.4, IEEE802.5 등과 같은 다양한 이더넷 프로토콜을 사용한 이더넷 컨트롤러에 적용 가능한 것은 물론이며, 이 외에도 외부 통신을 사용하여 가변 길이의 데이터를 수신하고, 이를 메모리에 저장하는 모든 분야에서 적용될 수 있다.
이상에서 본 바와 같이 본 발명에 따르면, 이더넷 컨트롤러에서 가변 길이의 프레임을 수신할 때 프레임 길이를 검출한 후 현재 메모리 어드레스에 더하여 다음 프레임 저장을 위한 메모리 어드레스로 사용함으로써 메모리의 낭비를 줄여 효율적으로 메모리 관리를 할 수 있다.

Claims (20)

  1. 이더넷 프레임 시작과 끝을 감시하는 감시부;
    상기 감시부에 의해 초기화되고 상기 이더넷 프레임이 일정 단위로 수신됨에 따라 증가되는 카운터;
    상기 이더넷 프레임이 수신될 때 길이 필드값를 검출하고, 상기 길이 필드값을 현재 메모리 어드레스에 더하여 다음 프레임을 위한 새로운 메모리 어드레스를 출력하는 프레임 길이 검출기를 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  2. 제1항에서,
    상기 이더넷 프레임이 수신될 때 상기 이더넷 프레임을 일시적으로 저장하는 프레임 버퍼를 더 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  3. 제2항에서,
    상기 현재 메모리 어드레스를 일시적으로 저장하는 제1 버퍼를 더 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  4. 제3항에서,
    상기 새로운 메모리 어드레스가 계산되어 일시적으로 저장되는 제2 버퍼를 더 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  5. 제4항에서,
    상기 프레임 길이 검출기에서 제1 제어신호를 입력받아 제어 버스를 통해 중앙처리장치에 버스 요구 신호를 출력하고, 상기 중앙처리장치로부터 상기 제어 버스를 통해 버스 허가 신호를 입력받은 후 상기 새로운 메모리 어드레스를 메모리에 세트하기 위한 제2 제어신호를 출력하는 갱신 컨트롤러를 더 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  6. 제5항에서,
    상기 이더넷 프레임을 수신하여 메모리에 저장하기 위한 정보를 상기 이더넷 프레임별로 가지고, 링크 리스트 구조로 연결되어 순차적으로 액세스되는 데이터베이스를 더 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  7. 제6항에서,
    상기 데이터베이스는 다수의 프레임 지시자로 이루어지고,
    상기 이더넷 프레임의 데이터를 저장할 메모리 어드레스;
    수신 결과를 나타내는 상태 필드;
    상기 이더넷 프레임의 길이를 나타내는 길이 필드;
    상기 이더넷 프레임이 수신을 제어하는 제어 필드;
    상기 링크 리스트 구조를 위해 다음 프레임 지시자의 어드레스를 가지는 포인터로 포함하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  8. 제7항에서
    상기 프레임 지시자는 프레임 지시자 포인터에 의해 순차적으로 액세스되는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치
  9. 제8항에서,
    상기 이더넷 프레임은 IEEE 802.3 프로토콜에 따른 프레임인 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  10. 이더넷 프레임을 수신하여 메모리에 저장하기 위한 메모리 어드레스를 포함하고, 링크 리스트 구조로 연결되어 순차적으로 액세스되는 다수의 프레임 지시자;
    상기 이더넷 프레임 시작과 끝을 감시하는 감시부;
    상기 감시부에 의해 초기화되고 상기 이더넷 프레임이 일정 단위로 수신됨에 따라 증가되는 카운터;
    상기 이더넷 프레임이 수신될 때 길이 필드값를 검출한후 인터럽트 신호를 출력하는 프레임 길이 검출기;
    상기 인터럽트 신호를 받고, 상기 길이 필드값을 현재 사용되는 상기 프레임 지시자의 메모리 어드레스에 더하여 다음에 연결된 프레임 지시자의 메모리 어드레스로 갱신하는 제어부를 포함하는 이더넷 컨트롤러의 메모리 관리 장치.
  11. 제10항에서,
    상기 프레임 지시자는,
    수신 결과를 나타내는 상태 필드;
    상기 이더넷 프레임의 길이를 나타내는 길이 필드;
    상기 이더넷 프레임이 수신을 제어하는 제어 필드;
    상기 링크 리스트 구조를 위해 다음 프레임 지시자의 어드레스를 가지는 포인터를 포함하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  12. 제11항에서,
    상기 프레임 지시자는 프레임 지시자 포인터에 의해 순차적으로 액세스되는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치
  13. 제10항에서,
    상기 이더넷 프레임은 IEEE 802.3 프로토콜에 따른 프레임인 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  14. 이더넷 프레임을 수신하기 위해 각 프레임마다 수신한 데이터를 저장할 메모리 어드레스, 상태 필드, 길이 필드, 제어 필드 등을 메모리에 하나의 데이터베이스로 구성하고, 상기 데이터베이스는 링크 리스트 구조로 연결되어 데이터베이스 포인터에 의해 순차적으로 액세스되며, 이를 이용해 수신 데이터를 메모리에 저장하는 이더넷 컨트롤러의 메모리 관리 장치에서,
    상기 이더넷 프레임을 수신하는 동안 프레임 길이를 검출하고, 이를 상기 데이터베이스 포인터에 의해 현재 데이터베이스의 메모리 어드레스에 더하여 다음 데이터베이스의 메모리 어드레스로 사용하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  15. 제14항에서,
    상기 이더넷 프레임은 IEEE 802.3 프로토콜에 따른 프레임인 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 장치.
  16. 이더넷 프레임의 시작과 끝은 감시하여 상기 이더넷 프레임 길이를 계산하기 위한 초기화 작업을 수행하고 상기 이더넷 프레임의 길이 필드 위치를 세트하는 제1 단계;
    상기 이더넷 프레임 길이를 계산하기 위해 상기 이더넷 프레임을 수신하면서 순차적으로 값을 증가시키고, 상기 증가시킨 값이 상기 이더넷 프레임의 길이 필드 위치인지를 판단하는 제2 단계;
    상기 증가시킨 값이 상기 이더넷 프레임의 길이 필드 위치이면 길이 필드값을 검출하고 검출이 성공적인지를 판단하는 제3 단계;
    상기 제3 단계에서 상기 길이 필드값이 성공적으로 검출되면 이를 현재 메모리 어드레스에 더하여 다음 이더넷 프레임을 위한 메모리 어드레스로 갱신하는 제4 단계;
    상기 제3 단계에서 상기 길이 필드값이 성공적으로 검출되지 않으면 이미 세트된 메모리 어드레스를 그대로 사용하는 제5 단계로 이루어지는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 방법.
  17. 제16항에서,
    상기 제1 단계 이전에 중앙처리장치가 상기 이더넷 프레임을 수신하여 메모리에 저장하기 위한 메모리 어드레스를 미리 세트하는 단계를 더 포함하는 이더넷 컨트롤러의 메모리 관리 방법.
  18. 제16항에서,
    상기 제4 단계는 중앙처리장치의 개입없이 직접 메모리 액세스(DMA)가 수행하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 방법.
  19. 제18항에서,
    상기 제4 단계에서 상기 길이 필드값이 성공적으로 검출되면 제1 제어신호를 받아 중앙처리장치에 버스 요구 신호를 출력하고 이에 따른 버스 허가 신호를 받아 어드레스 버스와 데이터 버스를 사용해서 다음 이더넷 프레임을 위한 메모리 어드레스를 갱신하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 방법.
  20. 제16항에서,
    상기 제4 단계는 상기 길이 필드값이 성공적으로 검출되면 인터럽트 신호를 발생시켜 중앙처리장치가 상기 길이 필드값과 현재의 데이터가 저장되는 메모리 어드레스를 가산하여 다음 프레임을 위한 새로운 메모리 어드레스를 산출하여 기존의 메모리 어드레스를 갱신하는 것을 특징으로 하는 이더넷 컨트롤러의 메모리 관리 방법.
KR1019980049387A 1998-11-18 1998-11-18 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법 KR100280642B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019980049387A KR100280642B1 (ko) 1998-11-18 1998-11-18 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법
JP32579899A JP2000242588A (ja) 1998-11-18 1999-11-16 イーサネットコントローラのメモリ管理装置及びその管理方法
US09/442,790 US6697366B1 (en) 1998-11-18 1999-11-18 Ethernet memory management system and methods for operation thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980049387A KR100280642B1 (ko) 1998-11-18 1998-11-18 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법

Publications (2)

Publication Number Publication Date
KR20000032792A KR20000032792A (ko) 2000-06-15
KR100280642B1 true KR100280642B1 (ko) 2001-05-02

Family

ID=19558727

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980049387A KR100280642B1 (ko) 1998-11-18 1998-11-18 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법

Country Status (3)

Country Link
US (1) US6697366B1 (ko)
JP (1) JP2000242588A (ko)
KR (1) KR100280642B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379676B2 (en) 2002-11-27 2008-05-27 Electronics And Telecommunications Research Institute Communication apparatus in Ethernet passive optical network

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US8782199B2 (en) * 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
DE10015683B4 (de) * 2000-03-29 2006-07-13 Infineon Technologies Ag Datenübertragungsspeicher
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
DE10119754B4 (de) * 2001-04-23 2007-11-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Speichern von Datenpaketen
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US8094552B1 (en) * 2005-11-03 2012-01-10 Seagate Technology Llc Adaptive buffer for frame based storage communications protocols
CN102347901A (zh) 2006-03-31 2012-02-08 高通股份有限公司 用于高速媒体接入控制的存储器管理
US20080263171A1 (en) * 2007-04-19 2008-10-23 Alacritech, Inc. Peripheral device that DMAS the same data to different locations in a computer
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US7995596B2 (en) * 2008-05-13 2011-08-09 Netlogic Microsystems, Inc. System and method for offloading packet protocol encapsulation from software
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
JP5598715B2 (ja) * 2010-10-29 2014-10-01 横河電機株式会社 データ受信装置
EP2736220B1 (en) * 2012-11-22 2019-10-23 NXP USA, Inc. Method and apparatus for network streaming
US9485333B2 (en) 2013-11-22 2016-11-01 Freescale Semiconductor, Inc. Method and apparatus for network streaming
EP3138222B1 (en) 2014-05-02 2019-04-10 CommScope Technologies LLC Link-fault tolerance in a distributed antenna system
US11456975B2 (en) * 2016-11-09 2022-09-27 Renesas Electronics Corporation Communications network controller module
CN109815176B (zh) * 2019-01-14 2022-10-04 中国科学院上海高等研究院 特定dma数据发送方法、接收方法、系统及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2568458B2 (ja) * 1990-11-01 1997-01-08 三菱電機株式会社 データ長さ検出装置
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5313582A (en) * 1991-04-30 1994-05-17 Standard Microsystems Corporation Method and apparatus for buffering data within stations of a communication network
JP2596718B2 (ja) * 1993-12-21 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション ネットワーク通信バッファを管理する方法
US6167480A (en) * 1997-06-25 2000-12-26 Advanced Micro Devices, Inc. Information packet reception indicator for reducing the utilization of a host system processor unit
DE19736434C3 (de) * 1997-08-21 2002-08-22 Nokia Mobile Phones Ltd Verfahren und Vorrichtungen zur Erkennung der Position von in einem seriellen Datenempfangsstrom liegenden Datenpaketen
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
US6415338B1 (en) * 1998-02-11 2002-07-02 Globespan, Inc. System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379676B2 (en) 2002-11-27 2008-05-27 Electronics And Telecommunications Research Institute Communication apparatus in Ethernet passive optical network

Also Published As

Publication number Publication date
KR20000032792A (ko) 2000-06-15
US6697366B1 (en) 2004-02-24
JP2000242588A (ja) 2000-09-08

Similar Documents

Publication Publication Date Title
KR100280642B1 (ko) 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법
US5764895A (en) Method and apparatus for directing data packets in a local area network device having a plurality of ports interconnected by a high-speed communication bus
US4771391A (en) Adaptive packet length traffic control in a local area network
JP4554863B2 (ja) ハードウェアが削減されたネットワークアダプタ及び通信方法
JP3115322B2 (ja) メッセージの形成方法
US5631905A (en) Communications network control method
US6308218B1 (en) Address look-up mechanism in a multi-port bridge for a local area network
US6934776B2 (en) Methods and apparatus for determination of packet sizes when transferring packets via a network
US5742603A (en) Method and apparatus for integrating repeater management, media access control, and bridging functions
EP0724374B1 (en) ATM network control apparatus
JPH088958A (ja) アクセス提供システム及び接続自動判断方法
GB2389022A (en) Network device with selectable data rate based on traffic volume
US6665275B1 (en) Network device including automatic detection of duplex mismatch
CN101385296A (zh) 用于总线间信息自动路由的网关
US6874036B2 (en) Network management server combining PDUs to minimize bandwidth consumption at data link layer
US6229817B1 (en) System and method for programming late collision slot time
US20020107949A1 (en) Polling for and transfer of protocol data units in a data processing network
US20010054109A1 (en) Method for sending and receiving a data frame between at least two data processing apparatuses
US5764638A (en) Method and apparatus for filtering and forwarding messages in a computer network using a last source address
US20020107955A1 (en) Protocol data unit prioritization in a data processing network
US20030137981A1 (en) Switch controller controlled by a link layer protocol and control method thereof
US6473801B1 (en) System and method for arbitrating bandwidth on segmented network topologies
JP3075809B2 (ja) データ伝送システムにおける受信データ転送制御装置
US6912199B1 (en) Method to select transmission rate for network device
US7180906B1 (en) Method and apparatus for autopolling physical layer devices in a network

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

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee