KR100186928B1 - 호스트 지시 조합을 구비하는 장치 - Google Patents
호스트 지시 조합을 구비하는 장치 Download PDFInfo
- Publication number
- KR100186928B1 KR100186928B1 KR1019950701048A KR19950701048A KR100186928B1 KR 100186928 B1 KR100186928 B1 KR 100186928B1 KR 1019950701048 A KR1019950701048 A KR 1019950701048A KR 19950701048 A KR19950701048 A KR 19950701048A KR 100186928 B1 KR100186928 B1 KR 100186928B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- host
- frame
- logic
- transmission
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Burglar Alarm Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
호스트 프로세서에 대한 다수의 인터럽트를 감소시키는 장치에 의해 데이타 블럭 전송의 조합 지시신호가 발생되어진다. 다수의 인터럽트에 있어서의 감소는 데이타 블럭 전송동안 호스트 시스템 성능을 향상시킨다. 장치의 실시예는 네트워크(2) 및 버퍼 메모리(9)사이의 데이타 프레임 전송을 위한 네트워크 인터페이스 논리(11) 및 버퍼 메모리(9) 및 호스트 시스템(1)사이의 데이타 프레임을 전송하는 호스트 인터페이스 논리(11)를 포함한다. 네트워크 어댑터(3a)는 또한 일부의 데이타 프레임이 수신될 때 초기 수신 지시신호를 발생시키는 한계 논리(10)를 포함한다. 지시 조합 논리(10a)는 초기 수신 지시의 예상되는 발생 약간 전에 전송 완결 인터럽트의 발생을 지연시킨다. 호스트 프로세서(5)는 전송 완결 지시에 의해 발생되는 단일 인터럽트 서비스 루틴에서 초기 수신 지시 및 전송 완결 지시 양쪽 모두를 제공할 수 있다.
Description
제1도는 호스트 시스템에서 지시 조합 논리를 구비한 소오스 장치의 도시도.
제2도는 본 발명에 따른 네트워크 어댑터 구조의 도시도.
제3도는 본 발명에 따른 호스트 지시 최적화에 대한 한계 논리지시 조합 논리를 구비한 네트워크 어댑터용 기능 블럭도.
제4도는 본 발명에 따른 네트워크 인터페이스 어댑터의 블럭도.
제5도는 제4도에 도시된 인터페이스 제어기 칩의 기능 블럭도.
제6도는 본 발명에 따른 어댑터 메모리를 통한 호스트 메모리 스페이스로부터 네트워크로 데이타 흐름을 도시한 개략도.
제7도는 본 발명에 따른 어떤 데이타의 송신에 사용되는 호스트 시스템 어드레스 스페이스의 맵 도시도.
제8도는 호스트 시스템 어드레스 스페이스와 무관한 어댑터 메모리의 메모리 맵 도시도.
제9도는 본 발명의 한 양상에 따른 송신 및 전송 기술어 데이타 구조의 도시도.
제10도는 본 발명에 따른 송신 동작동안 사용되는 송신 기술어링 버퍼 및 송신 데이타 버퍼 및 포인터의 관리를 예시한 도면.
제11a도 내지 제11e도는 송신 기술어 링 버퍼 및 송신 데이타 버퍼에 대한 포인터의 관리를 예시한 개략도.
제12도는 수신 링 버퍼 및 송신 기술어 버퍼의 동작과 함께 이러한 버퍼를 관리하도록 호스트 및 네트워크 인터페이스에 의해 발생된 포인트의 동작을 예시한 도면.
제13a도 및 제 13b 도는 대표적 한계값을 갖는 일반 데이타 프레임 포맷 도시도.
제14도는 길이-레프트 한계 논리에 대한 데이타 길이의 선택을 위한 논리 순서도.
제15도는 제5도의 수신 DMA블럭에서 수신 지시 기능의 수신지시 기능 블럭도.
제16a도 및 제16b도는 제15도의 예견 한계 레지스터 개략회로도 및 길이-레프트 한계의 도시도.
제17도는 제15도의 수신 완전 제어 블럭의 완전 제어상태 기기도.
제18도는 제15도의 길이 필드 레지스터의 길이 필드 레지스터 개략 회로도.
제19도는 제15도의 초기 수신 제어 블럭의 초기 수신 제어상태 기기도.
제20도는 일반 지시를 구비한 수신 프레임 및 송신 프레임 시간 라인의 도시도.
제21도는 제5도의 업로드 DMA블럭에서 업로드 지시 기능의 업로드 지시 제어 상태 기기도.
제22a도 및 제22d도는 다양한 조건하에서 완전 전송 신호의 타이밍 시퀀스의 도시도.
제23도는 제5도의 업로드 DMA블럭에서 업로드 지시 기능의 완전 전송 한계 레지스터 개략 회로도.
제24도는 제5도의 업로드 DMA블럭에서 업로드 지시 기능의 전송 지연 메트 레지스터 개략 회로도.
제25도는 제5도의 업로드 DMA블럭에서 업로드 지시 기능의 전송 지시 지연 레지스터 개략 회로도.
제26도는 제5도의 업로드 DMA블럭에서 업로드 지시 기능의 전송 한계 메트 개략 회로도.
* 도면의 주요부분에 대한 부호의 설명
1 : 호스트 시스템 2 : 네트워크
3a : 네트워크 어댑터 4 : 호스트 시스템 버스
5 : 호스트 프로세서 6 : 호스트 메모리
8 : 호스트 인터페이스 논리 9 : 네트워트 버퍼
10 : 한계 논리 10a : 지시 조합 논리
11 : 네트워크 인터페이스 논리 12 : 트랜시버
14 : 호스트 인터페이스 프로세서 15 : 임의 접근 메모리
16 : 바이오스 롬
본발명은 호스트 지시 최적화를 갖춘 네트워크 어댑터(NETWORK ADAPTER WIT H HOST INDICATION OPTIMIZATION)라는 명칭으로 1992년 7월 28일 출원되고 발명될 때 양도되어 현재 동일한 양수인에게 양도되어 공동-계류중인 미합중국 특허 제 07/920,898 호와 관련되어진다.
본 발명은 소오스 장치에서 수신지 장치까지 데이타 블럭의 전송에 관한 것으로, 특히 호스트 프로세서에 대한 전송 지시를 조합시키는 것에 관한 것이다.
일반적으로, 데이타 블럭이 호스트 시스템에서 데이타 버스상으로 소오스 장치에서 수신지 장치로 전송될 때, 적어도 두 개의 지시신호가 발생되어진다. 소오스 장치는 전송상태를 표시하는 지시신호를 호스트 프로세서에 발생시긴다. 소오스 장치가 수신지 장치로 시스템 메모리와 같은 데이타 블럭을 전송할 때 호스트 프로세서로 인터럽트 신호를 발생시키는 제 1 지시신호가 발생된다. 다음에 호스트 프로세서는 그 시스템 파라미터를 보관(saving)시키고 그 인터럽트 서비스 루틴으로 인입함으로서 인터럽트 신호에 응답하게 된다. 그러나, 호스트 프로세서의 시스템 파라미터를 보관하는 것과 인터럽트 서비스 루틴을 인입하는 것은 시스템 성능을 저하시킨다. 뿐만 아니라, 이 동작 상태동안, 호스트 프로세서는 다른 기능을 실행할 수 없게 되고, 시스템 파라미터의 보관은 비교적 긴 시간 주기를 소요하게 된다. 예를들면, OS/2운영 체제에서 시스템 파라미터의 보관은 30마이크로세컨드를 소요하게 된다.
호스트 프로세서의 인터럽트 서비스 루틴동안, 데이타 버스상의 어떤 장치가 인터럽트를 발생시켰는지 그리고 어떤 서비스가 요구되는지에 대한 결정이 내려져야 한다. 인터럽트가 수신지 장치로의 데이타의 블럭 전송이 필요한 소오스 장치에 의해 발생되어진 경우, 호스트프로세서는 수신지 장치로의 전송을 초기화시키게 된다. 다음에, 호스트 프로세서는 인터럽트 서비스 루틴을 나와서 그 이전 상태의 연산을 계속하게 된다.
소오스 장치에 의해 발생된 제 2 지시 신호는 데이타의 블럭의 전송이 완결되었을 때 발생되어진다. 이러한 제 2 지시신호는 호스트 프로세서로 제 2 인터럽트를 또한 발생시키게 된다. 다시 한번, 시스템 성능은 호스트 프로세서가 제 2 시간동안 그 인터럽트 서비스 루틴으로 인입하고 인터럽트의 발생원인을 결정하고 그 인터럽트를 서비스함에 의해 저하되어진다.
일반적으로, 단일 블럭의 데이타가 시스템 성능을 감소시키는 각각의 인터럽트 신호로 인해 전송될 때 두 개의 지시신호가 호스트 프로세서로 두 개의 인터럽트 신호를 발생시킨다. 제1인터럽트는 데이타 블럭이 전송될 때 발생되어지고, 제2인터럽트는 데이타 블럭의 전송이 완결될 때 발생되어진다
더우기, 데이타중 하나의 블럭의 전송에 의해 발생된 인터럽트는 데이타의 제2블럭의 가용성에 의해 발생된 인터럽트에 대한 시간과 비교적 가깝게 발생되어진다. 제 1 데이타 블럭 전송 완결지시에 의해 발생된 제2인터럽트는 전송지시에 대한 준비에 의해 발생된 제2블럭의 데이타의 제 1 인터럽트 바로 이전에 발생되어진다. 비교적 짧은시간 주기에서 발생하는 양쪽 인터럽트는 호스트 프로세서가 백-투-백 인터럽트 서비스 루틴으로 인입하도록 한다.
따라서, 제2블럭의 데이타에 대한 전송 준비 및 단일 인터럽트에서 제 1 블럭의 데이타의 전송 완결 양쪽에 대해서 호스트 프로세서로의 지시신호를 조합시키는 장치를 제공하는 것이 바람직하다. 지시신호의 조합은 데이타 블럭의 전송동안, 호스트 프로세서로 발생되는 인터럽트의 수를 감소시킴으로써 호스트 시스템 성능 및 특히 호스트 프로세서 성능을 최적화시키게 된다.
본 발명은 데이타 블럭의 전송지시를 조합하는 소오스 장치를 제공하는 것이다. 이 장치는 버퍼 메모리 및 버퍼 메모리로부터 수신지 장치까지 데이타 블럭을 전송하는 전송수단으로 이루어진다. 제 1 데이타 블럭의 전송의 말단 가까이에 제 1 신호를 발생시키는 수단 및 제2데이타 블럭의 전송의 시작 가까이에 제2신호를 발생시키는 수단이 포함된다. 최종적으로, 제 2 신호의 예상되는 발생에 대해 제 1 신호를 지연시키는 수단이 제공된다.
본 발명의 다른 양상에 있어서, 제 2 신호 발생수단은 버퍼 메로리에 접속되어 버퍼 메모리에 의해 수신된 데이타 양을 카운팅하는 카운터를 포함한다. 제 1 가변 기억장소에 준비된 한계값에 카운터를 비교하는 수단은 카운터의 비교에 응답하는 제 2 신호를 발생시키고 제 1 가변 기억장소는 준비된 한계값을 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 신호지연수단은 전송 완결 지연 한계값올 포함하는 제 2 가변 기억장소를 포함한다. 카운터 및 제 2 가변 기억장소에 접속된 덧셈기는 카운터의 값과 제 2 가변 기억장소의 합을 출력한다. 비교기는 덧셈기 및 제 1 가변 기억장소의 출력에 접속되어 준비된 한계값을 포함하는 제 1 가변 기억장소에 카운터의 비교에 응답하여 제 1 신호를 발생시킨다.
본 발명의 또 다른 양상에 있어서, 네트워크 트랜시버로부터 데이타 프레임을 전송하는 장치는 수신지 장치를 포함하는 호스트 시스템 및 네트워크에 접속된 소오스 장치이다. 이 장치는 네트워크 트랜시버로부터 데이타 프레임을 수신하는 네트워크 인터페이스 논리로 데이타프레임을 저장하는 버퍼 메모리를 포함한다. 수신 한계 논리는 일부 데이타 프레임의 수신에 응답하는 초기 수신 지시신호를 발생시킨다. 부가적으로, 버퍼 메모리로부터 호스트 시스템으로 데이타를 전송하는 호스트 인터페이스 논리는 호스트 시스템으르 데이타 프레임의 전송에 응답하는 전송 완결 지시신호를 발생시키는 전송 완결 논리와 함께 제공되어진다. 시간 주기동안 전송 완결 지시신호를 지연시키는 지시조합 논리가 또한 포함된다.
본 발명의 또 다른 양상에 따르면, 네트워크 트랜시버로부터 버퍼 메모리로 데이타 프레임을 수신하고 버퍼 메모리로부터 호스트 시스템으로 데이타 프레임을 전송하는 네트워크 어댑터가 제공된다. 호스트 시스템은 호스트 프로세서 및 호스트 메모리를 포함한다. 호스트 프르세서는 인터럽트에 응답하고 시간 주기동안 네트워크 어댑터를 서비스 제공한다. 네트워크 어댑터는 네트워크 트랜시버로부터 버퍼 메모리로 데이타 프레임을 수신하는 네트워크 인터페이스 논리를 포함한다. 수신한계 논리는 데이타 프레임의 양을 수신하는데 응답하여 초기 수신 지시신호를 발생시킨다. 수신 한계 논리는 버퍼 메모리에 접속되어 버퍼 메모리로부터 수신된 데이타의 양을 카운팅하고 제 1 가변 기억장소는 수신 한계값을 포함한다. 가변 기억장소의 수신 한계값에 카운터를 비교하고 카운터 및 가변 기억장소의 비교에 응답하는 지시신호를 발생시키는 수단이 제공된다. 버퍼 메모리로부터 호스트 시스템으로 데이타 프레임을 전송하는 호스트 인터페이스 논리가 또한 포함된다. 전송 완결 논리는 호스트 시스템으로부터 데이타 프레임의 전송에 응답하는 전송 완결 지시신호를 발생한다. 제어수단은 전송 완결 지시신호에 응답하여 호스트 프로세서로 인터럽트 신호를 발생시킨다. 제어수단은 호스트 프로세서에 의해 판독된 초기 수신 및 전송 완결 지시신호를 나타내는 상태 정보를 또한 알린다. 최종적으로, 지시 조합 논리는 호스트 프로세서가 네트워크 어댑터를 서비스하는 시간 주기동안 발생하는 초기 수신 지시신호와 같은 전송완결 지시신호를 지연시킨다.
본 발명의 다른 양상 및 장점은 다음의 특허청구항의 상세한 설명, 도면으로서 본 기술 분야에 숙련된 사람에게 이해될 것이다.
본 발명의 바람직한 실시예의 상세한 설명은 도면에 대해서 제공되어진다. 제 1 도는 지시 조합 논리를 포함하는 소오스 장치를 갖는 호스트 시스템을 예시한다. 제2도 내지 제5도는 본 발명에 따른 네트워크 어댑터 구현을 나타낸 것이다. 제6도 내지 제12도는 본 발명의 바람직한 실시예에서 데이타 구조 및 데이타 순서를 예시한다. 제13도 내지 제19도는 수신 한계 논리를 기술한다. 제20도 내지 제26도는 지시 조합 논리를 기술한다.
제 1 도는 지시 조합 논리(10a)를 구비한 소오스 장치(3)를 도시한다. 소오스 장치(3)는 버스(4)에 접속되어 호스트 프로세서(5) 및 수신지 장치(7)에 접속된다. 제1도는 일부 제2D.B.가 소오스 장치(3)에서 전송할 준비가 완료되었을 때 제1데이타 블럭(D.B.)이 수신지 장치(7)로 전송되어지는 연산 상태를 예시한다. 이러한 실시예에서, 제 2 D.B.내지 N번째 D.B.는 소오스 장치(3)의 외부에 있는 것으로 도시된다. 그러나, 다른 실시예에서는, 데이타 블럭은 소오스 장치(3)내에 존재할 수 있고 수신지 장치(7)로의 전송전에 준비되어질 필요가 있다. 제1도의 현 상태에 있어서, 제1D.B.가 전송을 완결했다는 지시신호는 호스트 프로세서(5)로의 단일 인터럽트를 발생시키는 일부의 제2D.B.가 전송 준비되어있다는 지시와 조합되어지게 된다.
제 2 도는 본 발명에 따른 네트워크 어댑터 구조이다. 지시 조합논리(10a)를 갖는 네트워크 어댑터(3a)는 네트워크(2) 및 호스트 시스템(l)에 접속된다. 네트워크 어댑터(3a)는 네트워크(2) 및 호스트 시스템(1)사이의 데이타 프레임 전송에 응답한다. 바람직한 실시예에서는, 네트워크(2)는 이더넷(ETHERNET) 네트워크이다. 호스트 시스템은 EISA 버스와 같은 호스트 버스(4)를 포함한다. 호스트 시스템 버스(4)는 호스트 시스템 어드레스 스페이스를 한정하는 어드레스 라인을 포함한다. 일반적으로, EISA버스에 있어서, 약 4기가바이트의 호스트 시스템 어드레스 스페이스를 확립하는 32개의 어드레스 라인이 있다. 호스트 시스템은 호스트 버스(1)에 접속된 호스트 메모리(6), 호스트 프로세서(5) 및 다른 호스트 장치(7a)를 또한 포함한다. 일반적으로, 네트워크 어댑터(3a)와 같은 호스트 버스(4)상의 장치는 호스트 버스(4)상에 인터럽트를 발생시킴에 의해 호스트 프로세서로부터 서비스를 요청한다. 다음에 호스트 프로세서(5)는 그 시스템 파라미터를 보관하고 인터럽트를 발생시킨 장치가 어느것인지를 어떤 서비스가 요청되었는지를 결정해야만 한다. 호스트 프로세서(5)가 네트워크 어댑터(3a) 혹은 버스(4)상의 다른 장치에 의해 발생된 인터럽트를 서비스해야될 때마다 호스트 시스템 성능은 저하되어진다.
네트워크 어댑터(3a)에서 지시 조합 논리(10a)는 호스트 프로세서(5)로 발생되는 인터럽트의 수를 감소시키도록 설계되어진다. 지시 조합 논리(1Oa)는 다음 데이타 프레임의 준비 지시신호의 발생이 수신되기 조금 전에 발생되는 전송 완결 지시신호를 언제 발생시킬지를 결정한다. 따라서, 호스트 프로세서(5)는 제 1 프레임의 전송 완결 지시에 의해 야기된 인터럽트 서비스 루틴동안 다음 프레임의 초기 수신 지시를 서비스할 수 있다. 호스트 프로세서가 단일 인터럽트 서비스 루틴동안 두 개의 지시를 서비스함으로서, 데이타 프레임이 전송되는 동안 호스트 시스템 성능을 크게 향상시키는 두 요소에 의해 다수의 인터럽트가 감소되어진다.
제3도는 다양한 전송 경로를 예시한 한계 논리(10)및 지시 조합 논리(10a)를 갖는 네트워크 어댑터(3a)의 기능적인 블럭도이다. 네트워크 어댑터(3a)는 네트워크(2)를 통해 데이타 프레임을 송신하고 수신하는 트랜시버(12)를 포함한다. 네트워크 인터페이스 논리(11)는 네트워크 버퍼(9) 및 트랜시버(12)사이의 데이타 프레임을 전송할 수 있다. 유사하게, 네트워크 어댑터(3a)는 네트워크 버퍼(9) 및 호스트 시스템(1)사이에 데이타 프레임을 전송할 수 있다. 한계 논리(10)는 한계값을 갖는 가변 기억장소(도시되지 않음)를 포함한다. 이러한 한계값은 호스트 인터페이스가 호스트 프로세서(5)로 인터럽트를 보내도륵 하는 초기 지시신호가 발생되기 전에 버퍼(9)내 또는 외로 전송되는 데이타 프레임의 양을 나타낸다. 호스트 프로세서(5)는 호스트 인터페이스 논리(8)를 통해 한계값을 포함하는 가변 기억장소에 대해 접근한다.
한계 논리는 지시가 이전 호스트 프로세서(5)응답에 기초하여 발생된 시간을 동적으로 변경하는 호스트 프로세서(5)에 대한 수단을 또한 포함한다. 인터럽트에 대해 응답할 때, 호스트 프로세서는 호스트 프로세서(5)가 인터럽트를 너무 이르게 혹은 너무 늦게 서비스하는 지를 결정하도록 하는 네트워크 어댑터 상태 정보를 검사한다. 다음에, 호스트 프로세서(5)는 지시 신호의 최적 발생을 얻도록 가변 기억장소에서 한계값을 변경시킨다.
(1.시스템 개괄)
제4도는 본 발명의 네트워크 인터페이스 어댑터를 갖는 호스트 시스템(1)의 개략도이다 . 네트워크 인터페이스 제어기는 본 기술분야에서 공지된 바와 같은 VERlLOG설계 기구를 사용하여 아래에 개요가 설명된 기능을 구현하도록 설계된 특정 응용 집적회로로서 하나의 바람직한 실시예에서 구현되는 네트워크 인터페이스 프로세서(14)를 포함한다. VERILOG설계 기구는 캘리포니아 산 호세의 Cadence, Inc.로부터 이용가능하다. 네트워크 인터페이스 프르세서(14)는 적절한 버퍼를 통해 버스(13)로 접속된다. 네트워크 인터페이스 프로세서(14)는 임의 접근 메모리(15), BIOS ROM(16), 및 INFO EEPROM(17), 테스트 포트(18), 인코드/디코드 칩(19) 및 네트워크 트랜시버(20)에 또한 접속된다. 네트워크 트랜시버(20)는 차례로 네트워크 매체에 접속된다.
대부분의 기능은 네트워크 인터페이스 프로제서(14)에서 예시되어진다. 바람직한 실시예에서는 호스트 시스템에 의해 버스(13)를 통해 접근할 수 있는 모든 레지스터는 프로세서(14) 혹은 램(15)중 어느 하나에 상주한다. 램(15)에 상주하면, 그 접근은 네트워크 인터페이스 프로세서(14)에 의해 관리되어진다.
램(15)은 네트워크 인터페이스 제어기상의 주 자원이다. 이러한 자원은 네트워크 인터페이스의 송신 및 수신 연산에 사용되는 호스트 어드레스 스페이스 외부에 버퍼 메모리를 제공한다. 이러한 램(15)의 구성 및 사용에 관한 상세한 것은 아래에서 설명되어질 것이다.
바이오스 롬(BIOS ROM)(l6)은 초기화동안 네트워크 인터페이스 프로세서(14)를 통해 호스트 시스템의 기본 입력/출력 코드에 대한 확장을 제공한다. 바이오스 롬(16)에 대한 어드레스 및 바이오스 램(16)으로부터의 데이타는 램(15)에 의해 또한 공유되어지는 각각의 버스(21,22)를 통해 네트워크 인터페이스 프로제서(14)로 접속되어진다.
INFO EEPROM(17)은 드라이버, 진단 및 네트워크 관리 소프트웨어에 의해 사용되는 한계 어댑터 특정 데이타를 저장한다. 이러한 데이타는 프로세스 제작동안 저장되어진다. 인터페이스 제어기의 초기화동안, EEPROM(17)의 내용은 연산동안의 사용을 위해 램(15)의 사전규정된 영역으로 로드되어진다.
인터페이스 프로세서(14)에 접속된 것은 National Semiconductor 8391 Manchest er encode/decode 칩과 같은 인코드/디코드 칩(19)이다. AUI 커넥터에 접속된 신호는 보드 외부로 트랜시버의 사용을 허용하도록 제공되어진다.
바람직한 시스템에서 트랜시버(20)는 얇은 이더넷(coax/BNC) 트랜시버 혹은 10Ba seT(Type 3/RJ45)의 어느 하나를 포함한다. 트랜시버(20)에 대한 제어신호는 인코더/디코더 칩(14)상의 변환 논리를 사용하는 네트워크 인터페이스 제어기(14)상에서 발생되어진다.
테스트 포트(18)는 제작 및 검사하는 동안 사용되도륵 바람직한 실시예에서 제공되어진다.
(Ⅱ. 제어기 기능 유니트)
제5도는 기능 블럭 및 데이타 경로를 포함하는 제4도의 네트워크 인터페이스 프로세서(11)의 블럭도를 제공한다. 다양한 데이타 흐름 경로의 제어를 다루어야 하는 도시되지 않은 다수의 접속이 있다. 예시된 인터페이스는 램 인터페이스(50), 호스트 버스 인터페이스(51)및 트랜시버 인터페이스(52)를 포함한다. 버스 인터페이스(51)는 EISA 버스에 대해 구현되어지고, 버스상의 매스터로서 혹은 슬래이브로서 때때로 동작한다. 제 5 도에 도시된 구현에 있어서 각각의 기능적 유니트는 아래에서 설명되어진다.
(A. EISA 슬래이브 인터페이스 54)
EISA슬래이브 인터페이스(54)는 EISA호스트 버스에 대한 경로를 제공함으로써 네트워크 인터페이스 제어기에 의해 관리되는 버퍼 및 레지스터를 억세스하도록 한다. 모듈은 제어기에 대한 구성 레지스터를 포함하고, 신호 경로를 정하기 위한 EISA버스의 보통의 디코딩을 실행한다. EISA슬래이브 인터페이스(54)는 제어기를 통해 분포된 개별적인 레지스터의 어떠한 어드레싱도 해석하지 않는다.
연산에 있어서, EISA슬래이브 인터페이스는 EISA어드레스를 연속적으로 모니터하고, 구성 레지스터, 메모리 맵 네트워크 레지스터 혹은 어댑터의 바이오스 롬이 억세스되어지는 때를 결정한다.
부가적으로, EISA 버스에 의해 초기화되어지는 모든 메모리 슬래이브 사이클에 대해서, EISA술래이브 인터페이스는 사이클 중재자(56)에 대한 사이클 요청을 알린다. 사이클 중재자는 요청이 허가될 때까지 호스트 시스템상에 대기 상태를 부가한다.
EISA슬래이브 인터페이스는 네트워크 제어기의 나머지에 대해서 일반 32비트 버스 인터페이스를 또한 제공한다. 인터페이스의 일반 특성은 칩의 나머지 부분의 재설계의 요구없이, 마이크로채널과 같은 다른 버스 형태에 대한 용이한 설계 적용을 허용한다.
EISA어드레스 버스의 비트14-2는 래치되고 다른 모듈로 전달되어진다. 어드레스의 최하위 두 비트는 4바이트 인에이블에 의해 표시 되어지고 이것은 데이타 전송 사이클을 통해서 또한 유효한다. 4개의 8-비트 바이트 레인은 슬래이브 데이타 채널을 구성한다. 데이타 버스는 실질적으로 바람직한 시스템에서 기록을 위한 것 하나와 판독을 위한 것 하나의 한 쌍의 단방향 버스이다. 데이타 기록 버스는 슬래이브 인터페이스를 통해 EISA데이타 버스로의 접속이 요구되는 모든 모듈로의 다중-드롭 형태로 와이어되어진다. 판독 버스는 멀티플렉스되어지고, 램 인터페이스 모듈(50)에서 마스크되어진다. EISA버스에 의한 기록 요청은 사이클 중재가(56)에 의해 인식될 때까지 유지될 수 있다. 사이클이 유지될 때, EISA버스는 사이클이 어댑터상에서 완결될 때 대기 상태로부터 해제되어진다. 제 1사이클이 여전히 계류중일 때 EISA 버스에 의해 제 2 사이클이 발생되어지면, 다음에 EISA 버스는 계류중인 기록이 실행될 때까지 대기 상태로 지연시키게 된다. 이러한 특정 실시예에 있어서, EISA판독의 파이프라이닝은 지원되지 않는다.
EISA 슬래이브 인터페이스는 EEPROM(17)에 대한 인터페이스를 또한 제공한다. 이러한 인터페이스는 리세트이후에 EEPROM(17)의 내용을 어댑터 메모리로 전송하도록 동작한다.
EISA 슬래이브 인터페이스 모듈에 있어서 EISA버스 규정에 따르는 어댑터의 구성에 주로 관련된 다수의 레지스터가 있다. 이러한 레지스터는 어댑터의 메모리 베이스 어드레스, 인터럽트 레벨, 트랜시버 형태 선택 및 바이오스 롬 인에이블을 셋 업시키는 것과 같은 일을 한다. 구성 레지스터는 어댑터 타입을 확인하는 파지티브 수단을 가지고 어댑터를 전역으로 디스에이블시키는 호스트를 또한 제공한다.
(B. EISA 매스터 인터페이스 55)
EISA매스터 인터페이스(55)는 EISA버스를 통한 버스 매스터 연산을 실행하기 위하여 업로드 DMA(57) 및 다운로드 DMA(58)로부터의 요청을 조정한다. 버스트 전송을 실행할 때 혼합된 판독 및 기록을 허용하지 않는 EISA 버스 때문에, EISA 매스터 인터페이스(55)는 바람직한 실시예의 DNM 연산에 의해 사용되어지는, 계류중인 업로드 및 다운로드 요청을 자치적으로 중재한다.
버스 매스터 전송은 업로드 DMA(57) 혹은 다운로드 DMA(58)에 의해 항상 초기화되어진다. 이러한 전송은 전송이 완결될 때 DMA 모듈에 의해서 혹은 EISA 버스상의 다른 중재장치에 의한 중단방식(preemption)으로 EISA매스터 인터페이스에 의해 종료되어지게 된다.
따라서, EISA매스터 인터페이스(55)의 기능은 전송이 업로드 DMA(57) 및 다운로드 DMA(58) 양쪽 모두로부터 계류중일 때 EISA 버스에 대한 억세스에 대해 중재하는 것이다. EISA 매스터 인터페이스(55)는 버스상의 어드레스 슬래이브를 갖는 제 1 전송을 확립하는 데 필수적인 신호전송을 실행한다. 이것은 또한 EISA버스 정의에 대한 컴플라이언스를 보장한다.
이러한 모듈은 어댑터 모드 논리(59)에 의해 인에이블될 때 20 비트 선형 어드레스에 대한 실 모드 세그먼트 : 오프셋 어드레스를 또한 변환시킨다.
(C. 매스터 슬래이브 합집합 모듈 53
매스터/슬래이브 합집합 모듈(53)은 EISA매스터 인터페이스(55) 및 EISA 슬래이브 인터페이스(55)에 의해 EISA버스에 대한 접속의 공유를 제공한다. 이러한 합집합 모듈(53)은 주로 2 : 1 직렬 멀티플렉서로 구성되어진다.
(D. 인터럽트 제어기 모듈 60)
제어기는 인터럽트 제어기 모듈(60)을 또한 포함한다. 인터럽트 제어기 모듈(60)은 매스킹 및 인에이블/디스에이블 메카니즘을 포함한 다양한 인터럽트 및 지시 기능을 구현한다. 인터럽트 신호는 제어기내에서 다양한 모듈에 의해 발생되어지고 인터럽트 제어기 모듈(60)로 경로지정된다. 다음에 인터럽트 제어기 모듈(60)은 이를 상호 오어링하기 전에 다양한 인에이블 및 마스크를 통해 인터럽트 신호를 전달하고, 호스트 버스상으로 결과를 실행한다.
인터럽트 제어기 모듈(60)은 인터럽트할만한 사건을 검출하거나 혹은 호스트로 전달되는 인터럽트를 인식하지는 않는다. 이것은 기능을 조정하는 인터럽트에서 사용되는 다수의 ASIC-상주 레지스터를 포함한다.
(E. 어댑터 모드 모듈 59)
어댑터 모드 모듈(59)은 제어기의 다양한 기본 연산 모드를 설정하고 제어기의 다양한 조건의 상태를 리포트하는 것을 포함하는 다수의 기능을 제공한다. 어댑터 모듈(59)은 호스트 시스템에 의한 진단에 사용되는 윈도우 레지스터의 베이스 어드레스를 또한 설정한다. 더우기, 어댑터 모드 모듈(59)은 어댑터에 대한 리제트 기능을 발생시킨다.
또한, 이러한 모듈은 제어기내에서 다양한 모듈에 대한 통신 및 호스트 시스템에 대한 통신을 위하여, 장치에 의해 구현되는 매체 억세스 제어기를 확인하는 MAC ID 레지스터를 제공한다.
(F. 사이클 중재기 모듈 56)
사이클 중재기 모듈(56)은 다양한 요청가들중에서 램 인터페이스(50)를 통해 어댑터의 램 상주 및 ASIC-상주 레지스터에 대한 억세스를 분포시킨다. 이것은 우선권 체계에 대한 오버런 혹은 언더런 상태를 제공할 위험이 있는 모듈이 램을 억세스할 때 정확한 억세스를 하도록 하는 기능을 한다.
(G. 멀티캐스트 비교기 모듈 61)
제5도에 예시된 제어기는 멀티캐스트 비교기 모듈(61)을 또한 포함한다. 어댑터 모드 모듈(59)에 의해 인에이블될 때, 멀티캐스트 비교기 모듈(6l)은 수신된 프레임의 수신지 어드레스를 멀티캐스트 어드레스 테이블의 내용과 비트별 비교를 실행한다. 멀티캐스트 어드레스 테이블은 호스트에서 설정되고 램(15)에 저장된다. 개별적 어드레스 혹은 브로드캐스트 어드레스 매치 어느 쪽도 접속되지 않는 이러한 비교를 하는 동안의 미스매치는 결과적으로 인입하는 프레임을 거부하게 된다.
따라서, 멀티캐스트 비교기 모듈(61)은 이더넷 수신기 모듈(62) 및 수신 DMA모듈(63)의 활동을 모니터함으로써 새로운 프레임이 수신될 때를 결정하게 된다. 이더넷 수신기(62)에 의해 수신되고 수신기의 병렬 인터페이스(64)에 존재하는 각각의 바이트는 멀티캐스트 비교기 모듈(61)에 의해 섀도되어진다. 이러한 바이트는 다음에 멀티캐스트 비교기(61)에 의해 억세스가능한 멀티캐스트 어드레스 테이블에서 유효 엔트리에 대해 비교되어진다.
멀티캐스트 비교기(61)는 멀티캐스트 어드레스 테이블의 내용을 설정하거나 보유하지 않는다. 그러나, 이 모듈은 테이블에 대한 호스트 억세스를 검출하고 램 인터페이스 모듈(50)에 대한 적절한 방향 지정 오프셋을 제공한다.
(H. 통제 제어기 모듈 65)
바람직한 시스템은 통계 제어기 모듈(65)를 또한 포함한다. 이러한 모듈은 제어기내의 다양한 다른 모듈, 특히, 이더넷 송신기 모듈(66), 이더넷 수신기 모듈(62)의 활동을 모니터하고, 적용가능한 사건이 발생 될 때 램(15)내에 보유된 통계를 갱신한다.
(I. 다운로드 DMA 모듈 58)
다운로드 DMA모듈(58)은 호스트 시스템에서 어댑터 메모리로의 데이타의 버스 매스터 다운로드에 대한 요청을 말한다. 이러한 데이타는 즉시 전송 혹은 미래의 전송을 위해 다음에 어댑터의 온보드 송신 데이타 버퍼내에 놓여지게 된다.
버퍼 기술어가 정의되고 송신 데이타 버퍼중 하나가 이용가능할 때, 아래에 설명되어진 바와 같이, 다운로드 DMA 모듈은 EISA매스터 인터페이스(55)로 다운로드 버스 매스터 연산에 대한 요청을 제출한다. 다운로드 DMA 모듈(58)은 호스트 및 어댑터의 각각의 시작 어드레스에 의해 수반되는 것과 같은 데이타를 정렬하도록 어떤 요구되는 패킹 혹은 언패킹을 포함한 바이트 정렬을 실행한다.
다운로드 DMA 모듈(58)은 어댑터의 램내에 송신 기술어 링 버퍼를 보유하기 위한 논리를 또한 포함한다. 다운로드 DMA모듈(58)은 다운로드 연산의 완결을 지시하도록 적절한 모드내에서 인터럽트를 발생시킨다. 또한, 다운로드 DMA 모듈(58)은 전송을 시작하는 때를 송신 DMA 모듈(57)에 알린다. 다운로드 DMA 연산에 포함되는 다양한 레지스터가 본 발명의 데이타 버퍼링 프로세스에서 직접적으로 포함될 때 아래에서 좀 더 자세히 설명한다.
(J. 송신 DMA 모듈 67)
송신 DMA모듈(67)은 다운로드 DMA 논논리(58)에 의해 직접적으로 실행되도록 지시될 때 아래에 설명되어진 바와 같이, 송신 기술어 버퍼, 송신 데이타 버퍼 혹은 양족 모두로부터 바이트를 인출하도록 동작한다. 인출된 바이트는 다음에 이더넷 송신기 모듈(66)로 순차적으로 존재한다.
따라서, 송신 DMA모듈(67)은 송신 기술어 링 버퍼의 내용을 판독하도록 기능함으로써 즉시 데이타의 확장 및 송신되어질 전체 프레임의 길이를 결정하게 된다. 특정 프레임이 네트워크에 대한 규정과 매치되지 않으면, 예를 들면, 802.3 최소치보다 짧으면, 어댑터는 인에이블되어지고, 이러한 모듈은 부가적인 바이트의 정의되지 않은 데이타를 패딩으로서 이더넷 송신기 모듈(66)에 공급하게 된다.
CSMA/CD네트워크에서 충돌 재시도는 송신 DMA모듈(67)에 의해 조정되어진다. 충돌이 이더넷 송신기(66)에 의해 지시되어질 때, 송신 DMA모듈(67)은 버퍼내에 프레임 기술어를 재해석하므로서 동일한 프레임을 다시 제공하게 된다.
인에이블되면, 그리고, 송신 완결 조건이 만족될 때, 송신 완결 인터럽트가 송신 DMA모듈(67)에서 인터럽트 제어기(60)에 의한 조절을 위해 발생되어진다.
송신 DMA모듈(67)은 송신이 완결되자마자 어댑터의 송신 기술어링 버퍼에 정확한 프레임 상태를 또한 저장한다.
송신 DMA모듈(67)은 송신에 유효한 데이타의 부족이 발생될 때 언더런 상태를 또한 검출한다.
다시, 송신 DMA 모듈(67)의 연산에 포함되는 레지스터는 아래에 자세히 설명될 것이다.
(K. 이더넷 송신기 모듈 66)
이더넷 송신기 모듈(66)은 802.3표준 네트워크에 대한 기본 구현이다. 이러한 모듈은 송신 DMA 모듈(67)로부터 병렬 데이타 바이트를 받아서 802.3억세스 규칙을 적용하고 직렬 데이타를 외부 인코더/디코더 칩에 공급한다.
(L. 이더넷 수신기 모듈 62)
유사하게, 이더넷 수신기 모듈(62)은 기본802.3구현이다. 이 모듈은 외부 인코더/디코더로부터 직렬 데이타를 받아서 데이타에 대한 802.3 규칙을 적용하여 수신 DMA모듈(63)에 사용되도록 병렬 형태로 제공 한다. 따라서, 이더넷 송신기(66) 및 이더넷 수신기는 표준 CSMA/CD 기능을 실행한다.
(M. 수신 DMA 모듈 63)
수신 DMA 모듈(63)은 송신 DMA 모듈(67)에 대해 상보적 기능이다. 이 모듈은 이더넷 수신기(62)상으로 병렬 데이타 바이트를 받아서 이를 어댑터의 수신 링 버퍼에 넣어둔다.
수신 DMA 모듈(63)은 이더넷 수신기로부터의 바이트를 어댑터 램에 저장하기 전에 32비트 워드로 조립한다. 프레임 수신의 완료시, 프레임의 상태 및 길이는 호스트 시스템에 의해 사용되도록 수신 링 버퍼내에 넣어둔다.
수신 DMA모듈(63)은 아래에 상세히 설명되어지는 바와 같이, 또한, 어댑터의 램내에 수신 버퍼 링을 설정하고 보유하게 된다. 더우기, 호스트가 수신된 데이타를 보도록 하는 LOOKBUF'' 레지스터의 위치 설정은 아래에 설명된 바와 같이, 수신DMA모듈(63)에 의해 조정된다.
수신 DMA모듈(63)은 적절한 상태하에서 인터럽트 지시를 또한 조정한다.
(N. 업로드 DMA 모듈 57)
업로드 DMA 모듈(57)은 수신 버퍼로부터 램 인터페이스(50)를 통해 호스트 시스템으로 데이타 전송을 실행한다. 따라서, 수신 링 버퍼는 수신 DMA 모듈(63)에 의해 관리되어지고, 업로드 DMA(57)에 의해 해석되어진다. 실질 버스 매스터 전송은 EISA매스터 인터페이스 모듈(55)에 의해 실행된다.
업로드 DMA 모듈(67)은 수신 DMA모듈(63)에 의해 수신 링 버퍼에 놓여진 수신된 프레임의 위치 및 길이를 포함한 데이타 구조를 해석한다. 이것은 호스트 시스템에 의해 정의된 전송 기술어를 또한 판독함으로써 전송될 프레임의 바이트가 얼마인지, 그리고 호스트 메모리에 어디로 프레임이 전송될지를 결정하게 된다.
업로드 DMA 모듈(57)은 호스트에 의해 부가되는 유효 전송 요청에 응답하여 EISA매스터 인터페이스 모듈(55)로부터 버스 매스터 사이클을 요청한다.
업로드 DMA 모듈(57)은 수신 DMA모듈(63) 및 업로드 DMA모듈(57)사이에 인터록을 또한 사용함으로써 호스트 시스템으로의 전송 속도를 감소시켜서 수신 DMA 모듈(63)을 통해 수신된 프레임이 앞서는 것(getting ahead)을- 방지한다. 최종적으로, 이 모듈은 호스트에 의해 사용되도록 전송의 완결을 지시하는 인터럽트를 발생시킨다. 이러한 절차에 포함되는 다양한 레지스터가 아래에 기술되어진다.
(0. 램 인터페이스 모듈 50)
램 인터페이스 모듈(50)은 램을 어드레싱하는데 포함되는 다양한 기능을 위한 멀티플렉서 및 마스크를 제공한다. 모듈은 다양한 어드레스 및 데이타 소오스를 상호 다중화함으로써 램 엑세스 사이클에 대한 파라미터를 형성하도록 한다. 이 모듈(50)은 호스트 시스템에 의해 판독될 수 있는 제어기상의 다른 다양한 모듈로부터 데이타를 모을 수있다. 부가적으로, 이 모듈은 사용하지 않는 비트를 제로로 하도록 데이타에 대한 마스크를 적용하고 다중사이클 판독동안 데이타 워드를 래치한다.
(P. JTAG 모듈)
비록 도시되지는 않지만, 제어기에 또한 포함되어지는 것은 1990년 5월 21일 IEEE표준 1149.1 1990에 규정된 바와 같은 상태 기기를 구현하는 JTAG모듈이다. 이 모듈은 제작동안의 사용을 위한 ASIC의 핀의 스캔 테스트를 제공한다.
(Ⅲ. 송신 및 수신 데이타 흐름 및 구조)
제6도는 호스트 인터페이스, 어댑터 메모리 및 송신과 수신을 위한 네트워크 인터페이스 데이타를 강조하는 본 발명에 따른 어댑터의 경험적 데이타 흐름도를 제공한다.
전술한 바와 같이 호스트 시스템은 호스트 버스상의 어드레스에 의해 정의되는 호스트 메모리 스페이스(일반적으로100)를 포함한다. 호스트 메모리 스페이스의 사전규정된 블럭(101)은 어댑터 인터페이스 어드레스를 위해 따로 남겨둬진다. 어댑터는 어댑터 인터페이스 어드레스 블럭(101)내에 호스트 버스를 통해 억세스되어지는 호스트 인터페이스논리(102)를 포함한다. 어댑터에는, 호스트 독립 메모리(103)가 또한 있다. 호스트 인터페이스 논리는 어드레스의 규정 블럭(101) 및 독립 메모리사이에 데이타 전송을 동작한다. 어댑터는 어댑터 메모리에 접속된 네트워크 인터페이스 논리(104)를 또한 포함한다. 네트워크 인터페이스 논리는 네트워크 트랜시버(12) 및 독립 메모리(103)에서 버퍼로부터 데이타의 전송을 관리한다. 네트워크 트랜시버(12)는 다음에 네트워크 매체(106)상으로 데이타를 공급한다.
호스트 인터페이스 논리는 송신 프로세스에 사용되는 송신 기술어논리 및 다운로드 DMA논리(일반적으로 107), 수신 프로세스에 사용되는 뷰(view) 논리, 전송 기술어 논리 및 업로드 DMA논리(일반적으로 108)를 포함한다. 이러한 모듈은 호스트 시스템에 의한 어댑터 인터페이스 어드레스 블럭(101)으로의 기록에 응답하여 독립 메모리(103) 및 호스트사이의 데이타 통신을 기본적으로 관리한다. 이것은 호스트로부터 송신 및 수신 연산에 대한 어떤 어드레스의 번역 및 버퍼 관리기능을 제거한다.
네트워크 인터페이스 논리(104)는 송신 DMA논리(일반적으로 109) 및 수신 DMA 논리(일반적으로 110)를 포함한다. 송신 DMA 논리(109)는 아래에 기술된 바와 같이, 데이타를 독립 어댑터 메모리(103)으로 부터 네트워크 트랜시버(12)로 이동하기 위해 어댑터 메모리(103)에 저장된 기술어에 응답한다. 유사하게, 수신 DMA논리(110)는 트랜시버(12)로부터 독립 어댑터 메모리(103)로 데이타를 이동시킨다. 따라서, 네트워크 매체(106)로부터의 모든 데이타 통신은 호스트 독립 메모리(103)로 직접적으로 접속된다. 호스트 독립 메모리(103)으로부터의 통신은 다음에 네트워크와 통신할 필요성이 있는 프로토콜 소프트웨어를 대단히 단순화시키면서, 호스트 메모리 스페이스에서 메모리 맵 영역에 응답하여 호스트 인터페이스 논리(102)를 통해 제어되어진다.
제7도는 어댑터 인터페이스 호스트 어드레스 블럭(101)의 단순화된 맵을 제공한다. 이러한 블럭내에 어드레스는 바람직한 시스템에서 호스트 어드레스 스페이스의 연속적인 8K블럭에서 호스트형 메모리 맵 레지스터에 대해 나타난다.
EISA실시예에 대해서, 블럭(101)내에 레지스터 혹은 맵 영역은 이중 워드 어드레스 경제에 위치되어지고 따라서, 어드레스는 4의 배수이다. 레지스터의 대부분은 메모리 스페이스의 몇몇 이중 워드(509와 같은)를 포함한다.
비록, 레지스터가 호스트 어드레스 스페이스의 사전규정된 중재 블럭에 맵핑되더라도, 호스트 시스템에 의해 이러한 레지스터로의 어떠한 판독 혹은 기록도 어댑터 메모리를 실질적으로 직접적으로 억세스 하지 못한다. 또한, 메모리 맵 스페이스에 대한 억세스도 호스트 시스템에 대해 투명한 호스트 인터페이스 논리(104)에 의해 해석되어진다. 따라서, 어댑터내의 메모리는 호스트 어드레스 스페이스 및 호스트 관리와 무관하다. 제 6 도는 이러한 어드레스를 억세스하기 위해 사용되는 어댑터 인터페이스 호스트 어드레스 스페이스의 맵핑 개괄도를 제공한다. 이 레지스터는 오프셋 0010(16진수)에서 송신영역 레지스터(XMIT AREA), 오프셋 0800(16 진수)에서 전송영역 레지스터(XFER AREA), 오프셋 100C(16진수)에서 룩 버퍼(LOOKBUF)를 주로 포함한다. 다양한 상태, 통계, 정보 및 지시 레지스터가 영역의 균형하에서 분포되어진다.
송신영역(XMIT AREA) 레지스터는 어댑터로 송신 기술어를 기록하도륵 호스트에 의해 사용된다. 송신 기술어는 아래에서 좀 더 상세히 기술되어지고, 프레임으로서 승낙되어지고 송신되어지도록 데이타를 확인하는 데이타를 포함하고 즉시 데이타를 포함하게 된다. 오프셋 0010(16진수)에서의 송신영역(XMIT AREA)은 그 크기가 대략 2K바이트이다. 이러한 데이타는 아래에 설명된 바와 같이 독립 어댑터 메모리에서 송신 기술어 링으로 맵멍되어진다.
어댑터 인터페이스 호스트 어드레스 블럭에서 오프셋 0800(16진수)에서의 전송영역(XFER AREA)은 대략 1K 바이트의 버퍼로, 이를 통해 전송 기술어가 어댑터의 독립 메모리로 기록되어진다. 오프셋 100C(16진수)에서의 LOOKBUF 영역은 대략 2K 바이트의 버퍼로서, 호스트 독립 어댑터 메모리내에서 수신 링 버퍼로 판독 전용 윈도우를 제공한다.
제 8 도는 어댑터상에 호스트 독립 메모리의 맵을 제공한다. 이 메모리는 오프셋 0에서 약 3K 바이트의 송신 데이타 버퍼, 오프셋 0C00(16진수)에서 약 5K 바이트의 송신 기술어 링, 오프셋 2000(16진수)에서 약 22K 바이트의 수신 버퍼 링, 오프셋 7800(16진수)에서 약 1K 바이트의 전송 기술어 영역이 독립 메모리에 제공되는 구조로 되어있다. 메모리의 마지막 세 가지 영역은 어댑터에 의해 사용되도록 어댑터 정보, 네트워크 통계 및 멀티캐스트 어드레스 테이블을 포함한다.
바람직한 시스템에 있어서, 어댑터는 송신 버퍼, 수신 버퍼, 제어구조 및 다양한 상태 및 통계 레지스터에 대한 32K 바이트의 정적랩을 사용한다. 제8도에 정의된 어댑터의 메모리내의 몇몇 영역은 정의된 데이타 구조를 제공한다.
(A. 송신 데이타 버퍼)
송신 데이타 버퍼는 전술한 바와 같은 3K 바이트를 포함한다. 이러한 영역은 두 개의 1.5K 버퍼로 분할된다. 버스 매스터 전송을 통해 어댑터로 다운로드되는 데이타만이 이러한 버퍼에 저장된다. 제어기는 전송을 위해 프레임을 요약할 때, 송신 기술어의 즉시 데이타 부분 및 송신 데이타 버퍼의 내용 양쪽 모두를 사용할 것이다. 어댑터는 파워 업이 디폴트될 때 메모리의 베이스에 가장 가까운 버퍼를 선택한 후에 버퍼의 사용을 자동적으로 교대한다.
송신 버퍼는 다운로드 DMA 논리 및 송신 DMA논리에 의해 공유되어진다. 송신 DMA 논리는 버퍼 0에서 버퍼 1로 스위치되어지고 자유롭게 다시 되돌아간다. 유일한 제한은 송신 시작 한계 레지스터에 의해 정의될 때 데이타 송신의 유효성이다. 송신 DMA 모듈은 송신이 완결되어질 때마다 하나의 버퍼에서 다른 하나로 스위치되어진다. 버퍼 스위치는 전송의 성공 여부와 무관하게 그리고, 버스 매스터 다운로드 데이타가 바로 이전의 전송에서 사용되었는지의 여부와 무관하게 발생 한다.
스위치되어질 버퍼가 송신 DMA 모듈에 의해 사용되지 않으면, 다운로드 DMA모듈은 하나의 버퍼에서 다른 버퍼로 스위치만되어진다. 다운로드 DMA는 아래에 설명된 바와 같이 송신 기술어의 처리를 완결하는 매시간마다, 어떤 버스 매스터 동작이 바로 이전의 기술어에서 요청되었는지의 여부와는 무관하게, 하나의 버퍼에서 다른 버퍼로 스위치되도륵 시도되어진다. 그러나, 송신 DMA 모듈에 의해 사용되는 버퍼로는 변경되지 않는다.
(B. 송신 기술어)
송신 기술어는 계류중인 송신 프레임을 정의하고 송신되어졌는 프레임의 상태를 보유한다. 이러한 기술어는 가변길이로 되어 있고, 아래에 기술된 바와 같이 5K 바이트 링 버퍼 주위의 시퀀스 형태로 배열되어진다. 기술어의 제 1 엔트리는 이중 워드 경계로 배열되어져야 한다. 제9a도는 송신 기술어 데이타 구조를 예시한다.
송신 기술어 영역으로의 대량의 엔트리 내용은 제7도에 도시된 송신영역(XMIT ARE A)을 통해 호스트 프로세서에 의해 공급되는 데이타로부터 축어적으로 카피되어진다. 그러나, 송신 프로토콜 ID(XMIT PROT ID) 및 송신 프레임 상태(XMIT FRAME STATUS) 레지스터의 포맷 요구조건에 따르기 위해서, 그리고, 프레임 송신 및 버퍼 관리를 위한 충분한 정보를 공급하기 위해서; 하나의 값이 재배치되어야하고, 다수는 자동적으로 저장되어야 한다.
송신영역(XMIT AREA)에 대한 호스트 프로세서의 기록은 기록된 제 1 값 - XMIT PROT ID 및 송신 요청 조정(XMIT REQ HANDLE) -이 링에서 다음의 이용가능한 데이타 구조에서 제5 32비트 워드 위치에서 끝내는 어댑터에 의해 자동적으로 오프셋되어진다. 이것은 송신 요청 조정(XMIT REQ HANDLE)값이 호스트에 의해 MAC ID값을 위해 보유되는 위치로 기록되어지는 것을 의미한다. 송신 요청 조정(XMIT REQ HANDLE) 값이 어댑터의 랩으로 기록된 후 즉시, 어댑터는 제5 32비트 워드 위치의 최하위 16비트의 내용을 제4 32비트 워드 위치로 카피해야한다. 송신 요청 조정(XMIT REQ HANDLE)을 카피한 후, 어댑터는 MAC ID 레지스터로부터의 MAC ID 값을 검색하고, 이를 송신 요청 조정(XMIT REQ HANDLE)에 의해 비워진 위치로 기록한다. 다음에, 프레임 전송후에, 제 4 32비트 위치(오프셋 C(16진수))의 최하위 16비트는 송신 프레임의 상태로 갱신되어진다.
다음 기술어 포인터(NEXT DESCRIPTOR POINTER) 엔트리는 송신 버퍼 카운터(XMIT BUFFER COUNT) 및 송신 즉시 길이(XMIT IMMED LEN)값이 어댑터로 기록된 후에 어댑터에 의해 갱신되어진다. 송신영역(XMIT AREA) 레지스터로 기록된 데이타가 정확한 위치에 정확한 순서로 기록되어야만 하기 때문에, 이러한 두 값의 기록은 용이하게 검출되어지고 램으로부터의 값을 검색할 필요없이 다음 기술어의 시작을 결정하도록 요구되는 기술어 크기 계산에 사용되어질 수 있다.
최종적으로, 마지막 송신 데이타 길이(XMIT DATA LEN) 값이 어댑터에 기록되자마자, 프레임 길이는 계산되어질 수 있고 데이타 구조의 프레임 길이(FRAME LENGTH)위치에 저장될 수 있다. 이 값은 호스트에 의한 즉시 사용을 위해 제어기 칩에서 송신 프레임 길이(XMIT FRAME LENGTH) 레지스터에 또한 카피되어진다.
다음의 몇몇 단락은 각각의 송신 기술어 데이타 구조 분야를 정의한다.
다음 기술어 포인터(NEXT DESCRIPTOR POINTER) 값은 다음 기술어의 제 1 워드를 지정한다. 이 값은 호스트가 송신 큐 상태(XMIT QUEUE STATUS)를 판독한 후 즉시 갱신되어진다. 정의되어지는 다음 기술어 포인터(NEXT DESCRIPTOR POINTER)는 유효 기술어를 포함하도록 지정된 위치임을 반드시 의미하는 것은 아니다. 이것은 단지 정의되자마자 다음의 유효 기술어가 발견되는 곳을 가리킨다.
프레임 길이(FRAME LENGTH) 필드는 어댑터에 의해 계산되어지고 갱신되어진다. 프레임 길이는 모든 송신 데이타 길이(XMIT DATA LEN)값 및 송신 즉시 길이(XMITIMMED LEN)값을 더함에 의해 계산되어진다. 결과적인 합은 송신 프레임에서 전체 바이트 수이다. 합이 802.3 최소 프레임 길이보다 작으면, 다음에 합은 최소 프레임 길이 값으로 설정되어진다. 합은 송신 기술어의 프레임 길이(FRAME LENGTH) 라인에 기록되어지고, 송신 프레임 길이(XMIT FRAME LENGTH) 레지스터를 통해 호스트에 대해 또한 이용가능하다.
송신 실패(XMIT FAILURE) 필드는 송신의 완료후 이더넷 송신기로부터 모은 상태 비트로 구성되는 에러 코드를 포함한다. 이 필드는 호스트 억세스를 위해 송신 실패(XMIT FAILURE) 레지스터로 맵핑되어진다.
송신 요청 조정(XMIT REQ HANDLE) 값은 송신 DMA 제어기에 의해 해석되어짐으로써 관련된 프레임에 대한 송신 시도의 완료시 지시의 발생여부를 결정하게 된다. 필드가 넌-제로이면, 지시는 발생되어질 것이다. 또한, 송신 기술어 링에서 프레임의 엔트리는 호스트가 송신 상태를 검사할 기회를 가질 때까지 유지되어질 것이다. 송신 요청 조정(XMIT REQ HANDLE), 송신 상태(XMIT STATUS), XMIT PROT ID 및 MAC ID 필드는 지시가 발생될 때 호스트에 대해 모두 이용가능하다. 송신 요청 조정(XMIT REQ HANDLE)가 제로이면, 다음에 송신 기술어 큐 엔트리는 어떠한 방법으로 호스트에 통보하는 것 없이 송신 후에 폐기되어진다. 송신 언더런 조건은 제로 송신 요청 조정(XMIT REQ HANDLE)과 무관하게 알려진다.
송신 상태(XMIT STATUS) 필드는 관련된 프레임에 대한 송신 상태를 포함한다. 이러한 필드의 내용은 송신 시도후에 즉시 갱신되어진다. 리턴 코드는 송신 상태(XMIT STATUS)레지스터 정의에서 정의되어진다.
이러한 필드에 있어서 XMIT PROTID 값은 송신 완결시 호스트에 의한 사용을 위한 큐내에서 단지 유지되어짐으로써 프레임에 대해 책임이 있는 특정 프로토콜을 확인하게 된다. 이것은 다중 프로토콜의 동시 활동을 허용한다. XMIT PROT ID 및 전송 요청 조정(XMIT REQ HANDLE) 양쪽은 어댑터를 통해 통과하는 프레임을 유일하게 확
인한다.
XMIT PROT ID와 유사한 MAC ID는 송신의 완결시 사용을 위해 큐내에서 유지되어진다. 그러나, 호스트는 송신 영역(XMIT AREA)레지스터를 통해 어댑터로 이 값을 기록하지 않는다. 또한, 호스트는 당장 이 값을 MICIA 레지스터에 저장하고, 다음에 어댑터에 의존하여 송신 요청 조정(XMIT REQ HANDLE)이 그 최종 위치에 카피된 후에 기술어 데이타 구조로 이 값을 저장하게 된다.
송신 버퍼 카운터(XMIT BUFFER COUNT)필드의 내용은 송신영역(XMIT AREA)으로의 기록을 통해 호스트에 의해 공급되어진다. 이 필드는 송신 프레임을 구성하도록 사용되어지는 호스트의 메모리내에서 버퍼의 수를 규정한다. 각각의 버퍼는 두 개의 송신 데이타 버퍼가 이용가능해지자마자 호스트 메모리로부터 기록된 순서로 어댑터의 송신 데이타 버퍼로 전송되어진다. 송신 버퍼 카운터(XMIT BUFFER COUNT)가 제로이면, 다음에 버스 매스터 연산은 이 프레임에 대해서 실행되지 않는다.
호스트로부터 송신영역(XMIT AREA)까지의 기록에 의해 정의되는 송신 즉시 길이(XMIT IMMMED LEN)필드는 호스트에 의해 공급되어질 다수의 즉시 데이타 바이트를 규정한다. 이 필드가 제로이면, 다음에 다음 32비트 워드 위치는 제1호스트 데이타 버퍼 기술어를 포함하게 되고, 전체 프레임은 버스 매스터 사이클에 의해 어댑터로 송신되어질 것이다. 송신 즉시 길이(XMIT IMMED LEN)값은 반드시 4의 배수는 아니다. 제 1 호스트 데이타 버퍼 기술어의 위치는 다음과 같이 결정되어진다.
기술어 오프셋 = ((XMIT IMMED LEN+3) fffc(16진수))+18(16진수);
가변 길이 즉시 데이타(IMMEDIATE DATA)필드는 송신영역(XMIT AREA)로의 메모리 기록을 이용하여 호스트에 의해 어댑터로 저장되는 즉시 데이타를 포함한다. 이 필드는 0내지 1,514바이트까지 길이가 변화되어진다. 즉시 데이타는 송신동안 어댑터에 의해 프리앰블 및 송신 버퍼 데이타(만약 있다면)사이의 송신 프레임으로 삽입되어진다. 일반적으로, 즉시 데이타는 수신지 및 소오스 어드레스 및 다른 프로토콜-규정 헤더 데이타로 구성되어진다. 그러나, 이것은 즉시 데이타로 간주되어지는 전체 송신 프레임에 대해서는 타당하다. 이것은 어댑터가 송신 프레임의 나머지를 인출하도록 어떤 버스 매스터 동작을 실행하는 것이 필수적이다. 송신 즉시 길이(XMIT IMMED LEN)가 제로이면, 다음에 이 필드는 스킵되어지고, 전체 프레임은 호스트 메모리 상주데이타 버퍼에 있게 된다. 송신 즉시 길이(XMIT IMMED LEN)가 더블 워드의 통합 수를 규정하지 않으면, 다음에 호스트는 가장 근접한 4의 배수로 올림을 하고 그 바이트 수를 기록한다. 송신 즉시 길이(XMIT IMMED LEN)이상의 여분의 바이트는 무시되어지고 송신된 프레임의 일부로 포함되지 않는다.
호스트 데이타 버퍼 기술어당 두 개의 엔트리중 하나인 송신 데이타 길이(XMIT DATA LEN)필드는 관련된 호스트 버퍼에서 다수의 바이트를 정의한다. 이 값은 4의 배수일 필요는 없다.
32비트 XMIT DATA PTR값은 관련된 호스트 데이타 버퍼의 물리적 시작 어드레스이다. 이 값은 4의 배수일 필요는 없다.
(C. 수신 버퍼)
수신 버퍼는 가변 길이 수신 프레임의 22K바이트 링이다. 각각의 프레임은 프레임의 크기 및 상태 그리고 링 버퍼에 있어서 다음 프레임의 헤더의 위치를 정의하는 헤더에 의해 선행되어진다.
링에 있어서 수신 프레임 엔트리의 시작은 어떤 32비트 워드 경계상에서 시작될 수 있다. 32비트 NEXT RCV PTR값은 링에 있어서 다음 엔트리의 NEXT RCV PTR값의 어드레스를 포함한다. 이 값은 현재의 관련된 프레임의 수신 완료시 유효하게 된다. 이것은 링내에서 유효 엔트리의 시작 및 끝을 결정하는 링 유지보수 포인터에 의해 결정되어지게 된다.
수신 프레임 상태(RCV FRAME STATUS)워드는 관련 프레임의 상태에 관한 다양한 에러 코드를 포함한다. 수신 프레임 상태(RCV FRAME STATUS)는 프레임 수신후에 즉시 갱신되어진다. 이러한 엔트리의 내용은 수신 프레임 상태(RCV FRAME STATUS)레지스터를 통해 호스트에 대해 이용가능하다.
수신 프레임 크기(RCV FRAME SIZE)엔트리의 상위 16비트 워드는 어댑터의 MAC ID값에 의해 포함된다. 이 값은 MAC ID레지스터에 의해 검색되어지고 수신 프레임 크기(RCV FRAME SIZE)값이 알려짐과 동시에 이 수신 버퍼 데이타 구조의 워드에 저장된다.
수신된 프레임의 길이는 프레임이 수신된 후 즉시 수신 프레임 크기(RCV FRAME SIZE)레지스터에 저장된다. 이 엔트리의 내용은 RCV FRAME SIZE 레지스터를 통해 호스트에 대해 이용가능하게 된다.
수신 데이타(RECEIVE DATA) 필드는 그 길이에 있어서 1 내지 1,5l4바이트까지 변화한다. 수신 프레임-수신지 어드레스로 시작하는-은이 프레임이 수신될 때 이 필드에 저장된다.
(D. 전송 기술어)
하나의 바람직한 구현에 있어서 어댑터는 한번에 단지 하나의 전송 기술어를 수용한다. 제 1 하나가 처리되어지는 동안 제 2 기술어를 다운로드하려는 시도는 이 요청을 받아들이기 위한 자원의 부족을 나타내는 전송 큐 상태(XFER QUEUE STATUS)레지스터로부터 리턴 코드로 나타난다. LOOKBUF를 통해 현재 볼 수 있는 프레임만이 전송영역(XFER AREA) 레지스터내에서 송신 규정에 의해 작용되어진다.
전송 기술어는 제9b도의 포맷을 사용하여 어댑터 램에 저장된다.
TO OFFSET워드는 전송이 시작되는 것부터 수신된 프레임으로 오프셋을 정의한다. 이 값은 4의 배수일 필요는 없다. 호스트가 이미 검사한 데이타(LOOKBUF에 의해)는 호스트에 대해 전송되어질 필요가 없다. 따라서, TD OFFSET 필드로 기록된 난-제로 값이 버스 매스터 회로가 전송의 시작이전에 TD OFFSET바이트에 의한 그 시작 어드
레스를 오프셋하도록 한다. 이 값은 제로(프레임의 시작에서부터 전송) 내지 l,514까지의 범위이다.
다수의 길이/포인터 쌍이 TD BUFFER COUNT 필드에 정의되어진다. 127엔트리가 허용된다. 이 이상은 XFER AREA 버퍼 소모가 예상 된다. 이 값은 반드시 난-제로이어야 한다.
TD DATA LEN 필드는 수신 데이타가 전송되어질 호스트의 수신버퍼의 크기를 포함한다. 어댑터는 단지 32비트 워드만을 전송하도록 제한되지 않는다. 1,511바이트의 최대 프레임 길이 이상의 전송 시도는 어댑터가 프레임의 끝을 판독할 때 전송을 종료시키도륵 한다.
32 비트 TD DATA PTR 값은 호스트의 수신 버퍼의 제 1 바이트의 물리적 어드레스이다. 이 값은 4의 배수일 필요는 없다.
수신된 프레임이 업로드되어질 호스트에서 데이타 버퍼의 물리적 어드레스는 XFER AREA에서 TD DATA PTR 값으로서 어댑터에 기록 되어진다. 어댑터는 이 값은 수신 버퍼에서 제 1 바이트에 대한 포인터로서 사용한다. 어댑터에 의한 이 포인터의 값에 있어서 어떠한 제한도 없다. 버퍼 데이타의 바이트, 워드 및 더블 워드 배열은 모두 지원되어진다.
(E. 어댑터 Info. 네트워크 통계, 멀티캐스트 어드레스 테이블)
어댑터 램 메모리에서 어댑터 lnfo, 네트워크 통계 및 멀티캐스트 어드레스 테이블은 본 기술분야에 숙련된 사람들에 의해 이해되어지는 바와 같이, 본 출원의 송신 및 수신 연산 목적에 직접 관련되지 않고, 어댑터에 의한 다양한 기능에 대해 사용되어진다.
(Ⅵ.송신 프로세스)
제 10 도는 송신 데이타 버퍼 및 어댑터상에 독립 메모리에서 송신 기술어 링 버퍼를 관리하는데 사용되는 네트워크 인터페이스 논리 및 호스트 인터페이스 논리를 예시한다. 호스트 인터페이스측에서, 논리는 호스트 기술어 논리(150) 및 다운로드 DMA논리(151)를 포함한다. 호스트 기술어 논리(150) 및 다운로드 DMA논리(151)는 송신영역(XMIT AREA) 레지스터, 송신 완결 한계(XMIT COMPLETE THRESH) 레지스터, 송신 실패(XMIT FAILURE) 레지스터, 송신 프레임 길이(XMIT FRAME LENGTH) 레지스터, 송신 프레임 상태(XMIT FRAME STATUS) 레지스터, XMIT PROT ID 레지스터, 송신 큐 상태(XMIT QUEUE STATUS) 레지스터 및 송신 시작 한계(XMIT START THRESH)레지스터를 포함하는 송신 레지스터를 통해 호스트 어드레스 스페이스를 통해 접속된다. 이러한 레지스터는 아래에서 상세히 설명될 것이다.
제9a도에 예시된 기술어는 송신영역(XMIT AREA)어드레스 블럭에 대한 호스트 기록에 의해 어댑터상에 호스트 독립 RAM의 송신 기술어 영역에 저장되어진다. 이러한 상이한 프로세서는 기술어 큐에서 엔트리로 작용한다. 호스트는 송신 기술어, 버스 매스터 다운로드를 초기에 발생시키도록 기록되어짐으로서 호스트 메모리로부터의 송신 데이타 버퍼로 버퍼 데이타를 이동시키게 되고 네트워크상의 기술된 프레임의 전송하게 된다. 처음의 두 프로세스는 다운로드 DMA 논리(151) 및 호스트 기술어 논리(150)에서 발생된다. 전송은 송신 DMA 논리(155)에 의해 실행되어진다. 어댑터 연산의 과정동안, 송신 기술어 링 버퍼(152)에서 기술어의 수 및 상태는 상대적인 호스트 기록 속도, 다운로드 및 전송 프로세스에 따라서 변화할 것이다.
다운로드 DMA논리(151)내에서 두 변수는 송신 기술어 큐의 상태를 기술한다. 제로 다운로드 펜딩(ZERO DOWNLOADS PENDING)는 다운로드를 위해서 다운로드 DMA논리(151)에 의해 아직 처리되어질 완전한 프레임 기술어가 없음을 표시한다. 제로 프레임 상주(ZERO FRAMES RESIDENT) 변수는 다운로드 프로세스에 의해 이미 처리되어졌지만 아직 전송되지 않은 기술어가 없음을 표시한다.
전송 메카니즘을 구성하는 각각의 세 프로세서는 기술어 큐에 대한 그 고유 포인터 세트를 유지한다.
호스트 기술어 논리(150)는 송신 기술어 링 버퍼(152)에서 기술어를 기록하기 위하여 호스트 접근의 현 위치를 확인하는 어댑터 메모리상의 송신 기술어 링 버퍼(152)의 포인터를 발생시킨다. 이러한 포인터는 현 호스트 기술어 프인터 CHD 및 호스트 기록 포인터 HW를 지정하게 된다. 현재의 호스트 기술어 포인터 CHD는 현재의 기록되어 지거나 혹은 호스트에 의해 기록되도록 예상되는 기술어의 베이스 어드레스를 지적한다. 호스트 기록 포인터 HW는 호스트가 다음에 기록될 것으로 예상되는 현 기술어(CHD 포인터에 의해 지적됨)내의 위치를 지적한다. 즉 HW 포인터는 호스트가 현재의 기술어를 완결시키도록 기록되어질 XMIT AREA 어드레스 블럭내에 오프셋을 예측한다.
다운로드 DMA논리(151)는 호스트 시스템으로부터 송신 데이타 버퍼 XMIT DATA BUFO 153 및 XMIT DATA BUF1 154로 다운로드를 관리할 때 3개의 포인터 및 버퍼 선택 신호를 발생시킨다.
다운로드 DNA 논리(151)에 의해 발생된 포인터는 버스 매스터 다운로드 DMA 논리(151)에 의해 처리되어지는 기술어의 베이스 어드레스를 지적하는 현 다운로드 기술어 포인터 CDD를 포함한다. 다운로드 DMA논리에 의해 발생되는 제 2 포인터는 다운로드 프로세스가 데이타를 기록하는 것인 현 송신 데이타 버퍼(XMIT DATA BUFO혹은 XMIT DATA BUF1중 하나)내의 위치를 지적하는 다운로드 데이타 포인터 DD를 포함한다. 다운로드 DMA 리(151)에 의해 발생된 제3포인터는 현 다운로드 버퍼 CDB 버퍼를 포함한다. CDB 포인터는 CDD 포인터에 의해 지적되는 송신 기술어내에 버퍼 기술어를 지적하고, 여기서 현 다운로드 프로세스의 호스트 메모리 목적에 있어서 버퍼의 규정이 존재한다.
다운로드 DMA논리는 신호BUF1/0에 의해 예시된 바와 같이 매스터 연산에서 데이타를 전송하는 다운로드 DMA 논리에 대한 현 송신 데이타 버퍼(153 : 154)를 또한 선택한다.
송신 DMA논리(155)는 송신 프로세스에 대해 세 가지 포인터를 발생시킨다. 이러한 포인터들은 송신 논리(155)에 의해 현재 처리되어 지는 송신 기술어 링 버퍼(152)에서 기술어의 베이스 어드레스를 지적하는 현 송신 기술어 CXD 포인터를 포함한다. 송신 판독 XR 포인터는 전송되어질 데이타를 판독하는 송신 프로세스로부터 현 송신 데이타 버퍼(153또는 154) 혹은 현 기술어내의 위치를 지시한다.
XMIT TAIL 포인터(XT)는 큐의 후부 끝을 지적한다. XT포인터는 완결된 송신을 가지지만 그 상태 정보가 호스트에 의해 판독되지 않은 프레임이 있을 때 CXD포인터보다 송신 기술어 링 버퍼(152)에서 더 오래된 기술어를 지적한다.
바람직한 시스템은 호스트에 전송 료의 지시를 발생시키는 것에 관련된 두개의 모드에서 동작한다. XMIT COMPLETE ON DOWNLOAD 변수가 실패일 때, 선행하는 단락은 호스트 기록, 버스 매스터 다운 로드 및 전송 프로세스와 관련된 데이타 구조를 기술했고 전송이 완결될 때 혹은 XMIT CONIPLETE THRESH(아래에서 기술됨)가 부합될 때 표시기가 발생되어진다. XMIT COMPLETE ON DOWNLOAD가 참 일 때, 다운로드 DMA 논리(151)는 판독되지 않은 상태에 대한 프레임의 트랙을 유지하도록 한다. 이러한 모드에서, 호스트는 프레임의 다운로드시 프레임에 대한 전송 완결 지시를 수신한다. 그렇게 된다면, 프레임은 호스트가 지시에 응답가능하기 전에 전송되어질 수 있다. 이러한 조건은 XMIT TAIL포인터가 기술어 링 버퍼에서 가장 오래된 유용한 엔트리를 더이상 정의하지 못하도록 한다. 따라서, 프레임 상태 프로세스는 필요한 것이다. 프레임 상태 포인터 FS는 호스트에 의해 아직 판독되지 않은 상태에 대해서 가장 오래된 기술어의 베이스 어드레스를 지적한다. FS포인터가 송신 프로세스에 관련되어 있기 때문에, 제 10 도에서 송신 DMA 논리(155)에 예시되어진다. 그러나, 바람직한 시스템에서. 이것은 다운로드 DMA논리(151)에 논리적으르 접속되어진다.
송신 DMA는 신호BUFO/1에 의해 지시되어지는 바와 같이 구성된 현 송신 프레임으로부터 현 송신 데이타 버퍼(153또는 154)를 또한 선택한다.
어댑터에 대한 인터페이스는 사전규정된 어드레스 블럭에서 레지스터의 세트처럼 호스트에 의해 보여진다. 전송에 포함되는 중대한 레지스터는 아래에 설명되어진다.
(A. 송신 영역(XMIT AREA))
이 레지스터의 목적은 호스트의 메모리 시스템에서 프레임(있다면)의 나머지가 상주하는 곳을 정의하는 데이타 구조 및 즉시 데이타를 갖는 어댑터를 호스트에 공급하는 메카니즘을 제공한다. 어댑터는 기술되어지는 프레임이 최종적으로 전송되어질때 사용되는 송신 기술어 링(152)내에 이러한 정보를 저장한다.
어댑터는 데이타가 기록되어지는 어드레스 및 그것이 기록되어지는 순서를 사용함으로서 데이타가 표현하는 것을 결정하게 된다. 데이타는 제 7 도에 참조하여 상술한 그 구조 및 순서를 사용하여 어댑터에 대해 기록되어져야 한다.
버스 매스터 다운로드는 기술어가 XMIT AREA에 기록되고 송신 큐 상태(XMIT QU EUS STATUS)(아래에 기술됨)가 호스트에 의해 판독된 후에 시작한다.
호스트가 송신영역(XMIT AREA)에 대하여 송신 기술어 버퍼 구조의 전송을 완결시키자마자, 호스트는 송신 프레임 길이(XMIT FRAME LENGTH)를 판독함으로써 송신 프레임에 포함되어지는 호스트가 규정하는 바이트의 수를 결정하게 된다. 다음에 송신 큐 상태(XMIT QUEUE STATUS)는 다른 프레임이 이 레지스터로 기록되어지도록 CHD포인터를 내보도록 판독하여야 한다. 송신 큐상태(XMIT QUEUE STATUS)를 판독한 후, (송신 프레임 길이(XMIT FRAME LENGTH)의 내용은 XMIT AREA가 다시 기록될 때까지 정의되지 않는다.
네트워크에 대한 실질 프레임 송신은 두 가지의 조건 즉, (1) XMIT START THRES T(아래에 기술됨) 조건이 부합되었을 때, 혹은 XMIT START THREST가 제로이면, 전체 프레임이 어댑터의 램에 카피되었을 때, 그리고 (2) 이전에 열을 이룬 송신 요청이 없을 때의 조건이 부합될 때 개시되어질 것이다. 더 많은 즉시 데이타의 XMIT START THRESH 바이트가 XMIT AREA에 기록되면, 다음에 네트워크 전송은 송신 큐 상태(XMIT QUEUE STATUS)가 판독되기 전에 시작될 것이다.
호스트가 XMIT AREA로 데이타를 기록하는 동안 어탭터가 XMIT AREA자원을 다써버리면, 호스트는 이것이 송신 큐 상태(XMIT QUEUE STATUS)를 판독할 때 6의 값으로 리턴되어진다. 메모리의 off the end로 종결되는 기록은 어댑터상에 이미 큐로 되어진 어떠한 데이타에 대해서 나쁜 영향을 미치치 않는다.
송신 프레임의 수신지 및 소오스 어드레스는 호스트에 의해 각각의 송신 프레임에 대해 명시적으로 공급되어져야만 한다. 이러한 정보는 즉시 데이타의 일부로서 혹은 즉시 데이타가 없다면, 기술어에 규정된 제 1 데이타 버퍼의 제 1 14바이트로서 제공될 수 있다.
근본적으로, 호스트는 프레임 구분문자의 시작 및 프레임 체크 시퀀스(CRC)사이에 송신영역(XMIT AREA)레지스터 혹은 다운로드 DMA 동작을 통해서, 매 바이트의 프레임을 제공한다.
일반적으로, 데이타가 규정된 순서로 송신영역(XMIT AREA)로 기록되어지더라도, 하나의 예외가 존재한다. 송신 버퍼 카운터/송신 즉시 길이(XMIT BUFFER COUNT/XMIT IMMED LEN)은 이러한 필드에 대한 초기값이 기록된 후에, 어떤 버퍼 기술어 엔트리가 기록되기 전에 재기록되어진다.
다음의 제한 사항이 제공된다 :
1. 송신 버퍼 카운터/송신 즉시 길이(XMIT BUFFER COUNT/XMIT IMMED LEN)이 재기록될 때, 송신 즉시 길이(XMIT IMMED LEN)의 새로운 값이 XMIT AREA로 이미 기록되는 즉시 데이타 비트의 수보다 더 작은 값을 규정할 수 없다. 이것은 더 큰 값을 규정한다. 그 수가 크다면, 다음에 나머지 즉시 데이타 바이트(및 어떤 버퍼기술어)는 새로운 송신 버퍼 카운터/송신 즉시 길이(XMIT BUFFER COUNT/XMIT IMMED LEN) 값이 기록된 후에 기록되어지게 된다.
2. 송신 버퍼 카운터/송신 즉시 길이(XMIT BUFFER COUNT/XMIT IMMED LEN)을 재기록할 때, 심지어 그 값중 하나가 동일한 것을 남아있더라도 완전한 32비트 양이 재기록되어야 한다. 송신 즉시 길이(XMIT IMMED LEN)를 재기록하는 기능은 호스트 시스템에서 하나의 수신 어댑터에서 다른 하나의 송신 어댑터까지 데이타의 직접 이동을 용이하게 하도록 포함되어진다. 연산 시퀀스는 다음과 같다 :
1. 수신 어댑터는 호스트로 초기 수신 지시를 제공한다.
2. 그 수신 프레임이 제 2 어댑터상으로 송신되어질 때, 호스트는 최대 길이, 모든 즉시 데이타 프레임을 규정하는 제 2 어댑터에 대한 XMIT AREA 에서 송신 기술어를 셋 업시킨다.
3. 다음에 호스트는 전송된 데이타의 수신지로서 전송 어댑터를 규정하는 수신 어댑터상에 버스 매스터 전송을 셋 업시킨다. 데이타가 하나의 어댑터상으로 수신될 때, 그것은 다른 XMIT AREA으로 수신 어댑터에 의해 버스-매스터되어진다.
4. 프레임 수신이 종결될 때, 호스트는 프레임 길이를 결정하고 그 값을 전송 어댑터의 XMIT IMMED LEN 필드에 기록한다.
(B. XMIT 완전 한계)
XMIT 완전 한계는 전송 완결의 초기 표시를 제공한다.(판독/기록, 4바이트, 1개의 32비트 워드.)
XMIT 완전 한계 레지스터는 어댑터가 XMIT 완전 지시를 발하기 전에 어댑터(어댑터 모드에 따름)에 대한 다운로드되거나 혹은 송신되어지도록 남아있는 송신 바이트의 수를 규정하도록 사용된다. 비트 10 내지 0만이 이러한 레지스터내에 구현되어진다. 최대 프레임 길이보다 큰 값은 이러한 기능이 적절하게 동작하는 것을 제한하게 된다. 이러한 기능을 디스에이블시키는 방법은 레지스터를 제로로 세트시키는 것이다. 송신 프레임 길이(XMIT FRAME LENGTH) (아래를 참조하라)에서의 값은 송신 프레임의 끝이 어딘지를 결정하도록 사용된다.
이러한 한계값이 너무 높게 세트되어지면, 다음에 호스트는 어댑터가 유효 송신 상태 지시를 제공하기 전에, 지시에 응답하게 된다. 송신 프레임 상태(XMIT FRAME STATUS)는 ff(16진수)를 리턴하면, 다음에 XMIT 완전 한계는 지시를 약산 지연시키도록 조정되어져야 한다. 이것은 XMIT 완전 한계 레지스터내의 값을 감소시킴에 의해 달성되어진다. 이러한 레지스터의 기능은 프레임의 제 1 60바이트의 전송동안 디스에이블되어진다. 이러한 레지스터는 리세트동안 0으로 소거된다.
(C. XMIT 실패)
XMIT 실패는 송신 실패의 원인을 반환시킨다.(판독 전용, 4바이트, 1개의 32비트 워드.)
이러한 레지스터는 큐 프레임을 송신하도록 하는 시도의 실패의 원인을 반환시킨다. 난-제로 값은 송신 시도동안 프레임이 하나 혹은 그 이상의 에러를 만나는 것을 표시한다.
레지스터내의 비트는 아래와 같이 정의되어진다;
비트0 DMA 언더런
버트1 반송자 감지 손실
비트2 최대 충돌
비트3 SQE 테스트 실패
이러한 레지스터는 프레임의 송신 시도의 성공 혹은 실패와 관계없이 유효 데이타를 포함한다. 실패가 없다면, 다음에 이 레지스터는 0(16진수)의 값을 포함한다. 이러한 레지스터의 내용은 프레임이 송신 프레임 상태(XMIT FRAME STATUS)는 ff(16진수와 동일하지 않음)을 완결했는 이후 그리고 XMIT PROT ID가 판독되기 전에 유효하다.
데이타 언더런이 발생하면, 어댑터는 송신동안 프레임으로의 CRC 에러가 프레임이 잘못된 프레임으로 수신되어지고 수신지 장치에 의해 폐기되어지는 것을 보장하도록 한다.
(D. XMIT 프레임 길이)
XMIT 프레임 길이는 송신되어질 바이트 수를 리턴시킨다. (판독전용, 4바이트, 1의 32비트 워드.)
XMIT 프레임 길이 레지스터는 CXD 포인터에 의해 확인된 현 송신 프레임 기술어에 의해 송신용으로 큐로 되어진 바이트의 전체 갯수를 리턴시킨다. 이러한 값은 이 프레임용 어댑터에 대해 다운로드된 모든 버퍼 길이 필드 및 즉시 데이타 바이트의 전체 갯수이다. 이 레지스터에 의해 리턴된 값은 프레임이 그 길이에 있어서 60바이트보다 작을 때 어댑터에 의해 행해지는 프레임의 어떠한 패딩의 영향을 받지 않는다.
XMIT 프레 임 길이 레지스터는 호스트가 마지막 바이트를 XMIT AREA로 기록한 후 즉시 타당하게 되고 송신 큐 상태(XMIT QUEUE STATUS)의 판독 후 송신 영역(XMIT AREA)으로 첫번째가 기록될 때까지 타당하게 남아있게 된다.
(E. XMIT 프레임 상태)
XMIT프레임 상태는 송신 시도의 결과를 리턴시킨다.(판독 전용, 4바이트, 1의 32비트 워드.)
이 레지스터의 최소 유효 16비트는 큐되어진 프레임을 송신하기 위한 시도의 상태를 리턴시킨다. 최대 유효 16비트는 프레임에 대한 XMIT REQ HANDLE을 리턴시킨다. XXXXOOOO(16진수) (XXXX는 이 특정 프레임에 대한 XMIT REQ HANDLE이다)의 값은 성공적인 송신용으로 리턴되어지는 반면, XXXXOOOa(16진수)는 잘못된 송신에 대해 리턴되어진다. XXXXOOfe(16진수)는 리턴된 H이고, 어댑터는 충돌후 송신을 재시도하는 프로세스에 있다. 송신이 아직 진행중에 있으면, XMIT FRAME STATUS는 XXXXOOff(16진수)를 리턴시킨다.
프레임이 성공적으로 송신되지 않으면, 송신 실패의 특정 원인이 송신 실패(XMIT FA ILURE)에서 입수할 수 있다. XMIT PROT ID를 판독하는 것은 만약 있다면, 다음 송신되는 프레임의 상태에 대해 송신 프레임 상태(XMIT FRAME STATUS)를 선행시킨다. 송신 프레임 상태(XMIT FRAM STATUS)가 판독될 때 재시도상태 값이 리턴되면, 다음에 송신 프레임 상태(XMIT FRAME STATUS)를 판독하는 것은 송신 완결(XMIT COMPLETE) 표시를 또한 소거한다.
(F. XMIT PROT ID)
송신 프로토콜 ID(XMIT PROT ID)는 송신 프레임의 프로토콜 ID를 리턴시키다(판독 전용, 4 바이트, 1개의 32비트 워드.)
어댑터가 큐되어진 프레임의 송신에 대한 시도를 완결시키고 그 상태를 알리자마자, XMIT PROT ID는 프레임을 확인하는 방법으로 호스트에 의해 판독될 수 있다. 여기서 리턴되어진 값은 XMIT AREA를 통해 프레임을 큐하는 동안 송신 프로토콜 1D(XMIT PROT ID) 필드로 기록되어진 것과 동일한 값이다.
이러한 레지스터를 판독하는 것은 재시도 상태 값이 송신 프레임 상태(XMIT FRA ME STATUS)로부터 판독되어질 때를 제외하고 송신 완결(XMIT COMPLETE) 지시를 소거한다. 재시도가 판독될 때, 다음에 송신 프레임 상태(XMIT FRAME STATUS)를 판독하는 것은 송신 완결(XMIT COMPLETE)를 소거하게 된다.
XMIT PROT ID값은 32비트 레지스터의 상위 16비트에 상주한다. 이 레지스터의 최소 유효 16비트는 MAC ID 레l지스터로 기록된 MAC ID 값을 리턴시키게 된다. 더블-워드 판독은 동시에 양쪽 값을 리턴시키게 된다.
다중 프레임이 송신용으로 큐되어질 수 있음에 따라서, 다중 송신 결과는 큐되어질 수 있다. XMIT PROT ID의 양쪽 워드를 판독하는 것은 송신 프레임 상태(XMIT FRAME STATUS), 송신 실패(XMIT FAILURE) 및 송신 프로토콜 ID(XMIT PROT ID)에서 완결 상태를 만약 있다면 완결된 송신을 갖는 다음 프레임의 상태에 대해 선행시킨다.
(G. XMIT QUEUE STATUS)
송신 큐 상태(XMlT QUEUE STATUS)는 송신 프레임을 큐시키는 결과를 리턴시킨다.(판독 전용, 4바이트, 1의 32비트 워드.)
송신 큐 상태(XMIT QUEUE STATUS) 레지스터의 판독은 XMIT AREA를 통해 송신 프레임을 큐하도록 하는 호스트의 시도 상태를 리턴시킨다.
2(16진수)-성공 : 송신 요청이 성공적으로 큐되어지면, 이 값은 송신 큐 상태(XMIT QUEUE STATUS)이 판독될 때 리턴되어진다.
6(16진수) - 자원 부WHR : 어댑터가 큐 저장 램 부족으로 동작하면, 6(16진수)의 상태는 리턴되어진다.
7(16진수) - 너무 긴 프레임 : 단일 프레임에서 송신되어지는 전체 바이트의 수가 최대 프레임 길이를 초과하면, 이 레지스터는 7(16진수)를 리턴시킨다.
a(16진수)-순서 위반 : 송신영역(XMIT AREA)에 기록된 데이타가 순서없이 기록되면, 이 에러 코드가 리턴되어진다.
ff(16진수) - 어댑터 비 대기 : 송신 큐 상태(XMIT QUEUE STATUS)가 XMIT AREA로의 기록의 완결 후에 너무 빨리 판독되면, 큐 프로세스가 완결되기 전에 상태 값을 판독하는 것이 가능하다.
이러한 레지스터를 판독하는 것은 다른 송신이 큐되어지도록 송신 영역(XNIIT ARE A)를 또한 선행시키야 한다. 이러한 레지스터는 반드시 모든 데이타가 송신영역(XMIT AREA)로 기록된 후 그리고 다음 송신 요청이 송신영역(XMIT AREA)로 기록되기 전에 판독되어야만 한다.
에러 코드(6(16진수), 7(16진수), 혹은 ff(16진수))가 송신 큐 상태 (XMIT QUEUE STATUT)에 의해 판독되어지면, 프레임은 큐되어지지 않고, 호스트는 다른 시간에 이것을 큐시키도륵 시도되어져야 한다. 당연히, 프레임이 너무 길게 플래그되면, 이것은 다른 큐 시도가 행해지기 전에 다중 프레임으로 나누어져야 한다.
코드 지시 성공(2(16진수))이 리턴되면, 다음에 호스트는 즉시 부가적인 프레임을 큐시키는 시도를 즉시 진행한다. 큐되어질 프레임의 수는 이러한 목적으로 할당되는 어댑터의 렘의 양 및 각각의 프레임에 포한된 즉시 데이타의 양에 의존한다.
호스트가 너무 긴 프레임을 큐하도록 시도하고 또한 이용가능한 송신 기술어(TRANSMIT DESCRITOR) 자유 스페이스를 또한 초과하면, 처음에 발생하는 에러는 우선권을 취하게 되고 호스트로 리턴되어지게 된다.
(H. XMIT START THRESH)
송신 상태 한계(XMIT START THRESH)는 송신의 초기 시작에 제공되어 진다.(기록/판독, 4바이트, 1의 32비트 워드.)
XMIT START THRESH 레지스터는 송신을 시작하기 전에 어댑터 상에 상주해야하는 송신 바이트 수를 규정하도록 사용되어진다. 비트 10 내지 0만이 이 레지스터내에 구현되어 진다. 최대 프레임 길이보다 큰 값은 이 기능이 적절하게 동작하는 것을 방해한다. 이러한 기능을 디스에이블시키는 방법은 레지스터를 제로로 세트시키는 것이다. 바이트는 송신 프레임의 수신지 필드의 제 1 바이트의 시작과 함꼐 계수되어진다.
이용가능한 것으로 간주되는 바이트 수는 호스트에 의해 XMIT AREA로 기록되는 즉시 데이타 및 버스 매스터 DMA연산을 사용하여 어댑터에서 송신 데이타 버퍼로 송신되어지는 이러한 데이타의 합이다. 송신 요청은 XMIT START THRESH 송신 프레임 바이트가 즉시 데이타로부터 이용가능한 이후 혹은 어댑터가 어댑터상에 버스-매스터 XMIT START THRESH - XMIT IMMED LEN바이트를 구비할 때에 즉시 알려지게 된다.
어댑터에 상주하는 바이트의 수는 개시되는 송신을 위한 XMIT START THRESH에서의 값과 동일하거나 혹은 커야만 하고, 그렇지않으면, 전체 프레임 크기는 XMIT START THRESH보다 작다. 그 경우, 프레임은 전체 프레임이 어댑터로 카피되어질 때 송신을 시작하게 된다. 프레임의 실질 송신은 이전에 계류중인 송신 프레임에 의해 그리고 네트워크 통신량에 대한 지연에 의해 지연되어진다. 이러한 레지스터는 리세트동안 제로로 세트되어진다.
(1. 송신 링 관리)
제11A도 내지 제11E도는 송신 동작에 사용되는 포인터의 진행을 예시한 것이다. 제11A도 내지 제11E도에서, 일반적으로 200인 송신 기술어 링 부 및 송신 데이타 버퍼(201-0 및 201-1)이 도시된다. 또한, 전술한 바와 같이 축약된 포인터가 지시된다.
제 11A 도에서, 호스트 기술어 논리는 송신 기술어 링(200)으로의 제 1 기술어를 기록하는 것이다. 따라서, CXD 포인터는 제 1 기술어의 베이스 어드레스를 지적하고, HW포인터는 호스트가 다음 더블 워드의 기술어로 기록하도륵 예상된 베이스 어드레스로부터의 오프셋을 지적한다. 다운로드 포인터는 CDD를 포함하고, CDB는 시작하는 다운로드 연산이 없을 때 제 1 기술어의 베이스 어드레스를 또한 지적한다. 마찬가지로, 송신 기술어 CXD및 XR은 동일한 베이스 어드레스를 지적하게 된다. 최종적으로, 링의 테일 XT포인터는 시작 포인터를 지적한다. 다운로드 데이타 포인터 DD는 예를 들면, 버퍼 제로와 같은 제1버퍼의 톱올 지적한다.
제11B도에 예시된 바와 같이, 제1기술어는 기록을 완결시키고 다운로드 프로세스를 시작하고 호스트는 제 2 기술어의 기록을 시작한다. 따라서, 호스트 기술어 논리 포인터 CHD는 다음 기술어의 베이스 어드레스를 지적하고, HW포인터는 다음 바이트의 예상되는 어드레스를 지적한다. 다운로드 CDD는 제 1 기술어의 베이스 어드레스를 지적한다. 다운 DMA 논리는 호스트로부터 송신 데이타 버퍼로 버퍼의 전송 프로세스에 있게 된다. 따라서, CDB 포인터는 제 1 기술어에서 다운로드 버퍼의 기술어를 지적하고, DD포인터는 데이타가 다운로드되어지는 송신 데이타 버퍼내에서 오프셋을 지적한다. 한계값에 도달되지 않았기 때문에 어떠한 송신 동작도 아직 시작되지 않는다. 따라서, 송신 포인터 및 테일 포인터는 여전히 제 1 기술어를 지적한다.
제 11C 도에 있어서, 호스트 기술어 논리는 제 3 기술어에서 동작하고, 다운로드 논리는 제 2 기술어상에서 동작하고, 송신 논리는 제 1 기술어상에서 동작한다. 호스트 기술어 논리 CXD 및 XR은 제 1 기술어상에서 동작한다. 따라서, CXD 포인터는 제 1 기술어의 베이스 어드레스를 지적하고 XR포인터는 송신 DMA논리에 의한 송신용으로 판독되는 즉시 데이타를 지적한다.
송신 판독 포인터 XR은 즉시 데이타의 판독을 완결시키고 다음에, 제 11B 도에 예시된 바와 같이, 제 1 기술어를 처리할 때 다운로드 DMA논리에 의해 채워진 송신데이타 버퍼로 이동한다.
송신 테일 포인터 XT는 제 1 기술어의 베이스 어드레스를 여전히 지적한다.
다운로드 논리는 제 2 기술어상에서 동작한다. 따라서, CCD 포인터는 제 2 기술어의 베이스 어드레스를 지적하고, CDB 포인터는 제 2 기술어내에서 버퍼 기술어를 지적하고, DD포인터는 다운로드 DMA논리가 호스트로부터 데이타를 전송하는 제 2 송신 데이타 버퍼내에 오프셋을 지적한다.
제 11C 도에서, 호스트는 XMIT AREA 레지스터로 제 3 기술어를 기록한다. 따라서, CHD 포인터는 제 3 기술어의 베이스 어드레스를 지적하고, HW포인터는 호스트에 의해 기록될 것으로 예상되는 다음 바이트에 대한 오프셋을 지적한다.
제 11D 도에서, 프로세스는 호스트가 제 4 기술어로 기록하도록 이동되어진다. 따라서, CHD 포인터는 제 4 기술어의 베이스 어드레스를 지적하고, HW포인터는 XMIT AREA 레지스터에 대한 다음 기록의 예상되는 어드레스를 지적한다.
다운로드 논리는 제 3 기술어상에서 동작한다. 따라서, CDD 포인터는 제 3 기술어의 베이스 어드레스를 지적하고, CDB 포인터는 제 3 기술어내에서 버퍼 기술어를 지적하고, 다운로드 데이타DD포인터는 발생되는 다운로드에서 제 1 데이타 버퍼에서 위치를 지적한다. 이러한 동작은 제 1 기술어의 송신이 다운로드 논리에 의한 용도로 제 1 데이타 버퍼를 자유롭게 되어졌음을 나타낸다.
송신 논리는 제 2 기술어상에서 동작한다. 따라서, CXD 포인터는 제 2 기술어의 베이스 어드레스를 지적하고, XR 포인터는 송신 논리에 의해 판독되는 데이타로부터 송신 데이타 버퍼에서의 위치를 지적한다. 제 1 기술어의 상태가 아직 판독되지 않았기 때문에, 송신 테일 XT 포인터는 제 1 기술어의 베이스 어드레스를 여전히 지적한다.
제 11E 도에서, 프로세스는 제 4 기술어의 기록이 완결되도륵 진행되어지지만 호스트는 일시적으로 새로운 기술어의 기록을 중지시키는 것으로 나타난다. 이 경우, CHD포인터 및 HW 포인터는 호스트에 의한 더 이상의 활동을 대기하는 제5기술어의 베이스 어드레스를 지적한다. 다운로드 프로세스는 제 3 기술어의 다운로딩을 아직 완결시키고 있다. 따라서, 현 CCD포인터는 제 3 기술어의 베이스 어드레스를 지적하고, CDB 포인터는 제 3 기술어내의 버퍼 기술어를 지적한다. DD 포인터는 데이타를 언로딩시키는 다운로드 프로세서에 대해 송신 데이타 버퍼에서의 위치를 지적한다.
제 11E 도에서, 제 2 기술어에 의해 확인된 프레임의 송신이 완결됨을 가정하고, 송신 논리는 송신 논리가 송신을 시작한 충분한 데이타를 완결시키거나 혹은 다운로드시키도록 제 3 기술어상의 다운로드 연산을 대기한다. 따라서 CXD및 XR포인터는 제 3 기술어의 베이스 어드레스를 지적한다.
이러한 프로세스는 어댑터에 의해 조정된 기술어의 자동 링 순환으로 계속된다. 또한, 언더런 조건은 수정되고 적절한 에러신호가 어댑터에 의해 지시된다.
(V. 수신 프로세스)
제12 도는 호스트 인터페이스 논리 및 수신 기능에 포함된 네트워크 인터페이스 논리 도면이다. 호스트 인터페이스 논리는 업로드 DMA 논리(300) 및 뷰 논리(301)를 포함한다. 업로드 DMA 논리(300)는 아래에 기술된 XFER 어드레스 블럭을 통해서 호스트와 인터페이스한다. 뷰 논리(301)는 LOOKBUF 및 아래에 기술된 관련된 어드레스 블럭을 통해 호스트와 인터페이스한다.
네트워크 인터페이스 논리는 수신 DMA논리(302)를 포함한다. 호스트 인터페이스 논리 및 네트워크 인터페이스 논리 양쪽 모두는 호스트 인터페이스 논리 및 인터페이스 논리 양쪽 모두는 호스트 독립 어댑터 메모리에서 수신 링 버퍼영역(303)과 인터페이스한다. 또한, 업로드 DMA논리(300)는 호스트 독립 어댑터 메모리내에서 전송 기술어영역(304)과 인터페이스한다.
이 논리는 수신 버퍼 링을 또한 유지한다. 따라서, 다수의 포인터가 포함된다. 업로드 DMA논리는 업로드된 프레임의 베이스 어드레스를 지적하고 또한 링의 테일 끝인 수신 테일 포인터 RT를 발생시킨다. 뷰 논리는 어댑터 메모리에서 LOOKBUF의 베이스 어드레스를 지적하는 현 프레임 포인터 CF 혹은 뷰 논리(301)에 의해 보여지는 프레임을 발생시긴다.
수신 DMA 논리(302)는 수신된 프레임의 베이스 어드레스를 지적하는 현 수신 포인터 CR을 발생시키고, 현 프레임에서 데이타가 기록되어지는 위치로 수신 기록 포인터 RW가 지적한다. 수신 DMA논리(302)는 상태 포스트동안 다음 수신 프레임의 시작 위치에 대해 지적하는 다음 수신 포인터 NR을 또한 발생시킨다.
첨부된 호스트 어드레스 맵을 이해함으로써 수신 프로세스를 이해할 수 있게 될 것이다.
(A. LOOKBUF)
룩 버퍼(LOOKBUF) 레지스터는 수신된 프레임을 검사 및/혹은 전송하도록 호스트에 의해 사용된다. (판독 전용, 2036바이트, 509의 32비트 워드.)
호스트는 모든 부분의 수신된 프레임을 검사하도록 LOOKBUF 레지스터를 사용할 수 있다. 판독은 어떤 폭 및 어떤 순서를 가져야 한다. LOOKBUF는 억세스되는 바이트를 선택하도록 호스트의 어드레스 버스의 최소 유효 11 어드레스 비트를 사용한다. 호스트는 프레임의 일부를 검사할 수 있고 다음에 프레임의 나머지 부분을 전송하도록 업로드 DMA 논리(300)의 버스 매스터 기능을 사용한다. 부가적으로, 호스트는 메모리 이동 명령어를 사용하는 호스트 메모리에 대한 내용을 송신하고 프레임을 검사하는 양쪽 모두를 할 수 있다.
수신된 프레임은 수신지 어드레스 필드가 레지스터의 바이트 제로에서 시작하도록 LOOKBUF내에서 항상 배열되도록 한다. 호스트는 현 프레임의 끝 이상 판독된 데이타에 대한 어떤 것도 추정할 수 없다. 다음 수신 프레임은 이것에 대해 보장되지 않는다. 호스트는 다음 수신 프레임 버퍼에 대해 LOOKBUF를 선행시키도록 RCV DONE에 대한 기록을 사용해야만 한다.
( B. RCV BYTES AVAIL)
RCV BYTES AVAIL은 LOOKBUF에서 유효 바이트의 수를 리턴시킨다.(판독 전용, 4바이트, 1의 32비트 워드.)
이 레지스터는 현 프레임으로부터 수신된 바이트 수의 런닝 계수를 제공한다. 이 레지스터가 계수되는 것에 대한 최대값은 레지스터 RCV MAX AVAIL값(더이상 도시되지 않음)에 의해 경계되어진다.
바이트로 판독할 때, 레지스터는 비트 7 내지 0이 판독될 때 비트 10 내지 8의 값을 저장한다. 이것은 이 동적 레지스터의 판독 보전성을 보장한다.
(C. RCV DONE)
RCV DONE 는 LOOKBUF가 다음 프레임에 선행하도록 한다.(기록 전용, 4바이트, 32비트 워드.)
이 레지스터의 최소 유효 바이트에 대한 임의 값의 기록은 LOOKBUF가 다음 수신 프레임(만약 있다면)에 대해 선행하도록 한다. 수신 바이트 유효(RCV BYTES AVAIL), 수신 프레임 크기(RCV FRAME SIZE) 및 수신 프레임 상태(RCV FRAME STATUS)는 모두 유사하게 갱신되어 진다.
RCV DONE가 기록되어 질 때 LOOKBUF에 있는 프레임은 LOOKBUF에 재저장되지 않는다. 어댑터는 RCV DONE이 결국 기록될 때까지 그 내부 수신 버퍼 및 LOOKBUF에 있는 프레임을 저장한다. 비록 LOOKBUF에 있는 데이타가 RCV DONE에 기록될 때 더이상 볼 수 없더라도, 송신영역(XFER AREA)으로의 기록에 의해 초기화되어지는 어떠한 데이타 전송도 성공적으로 완결되어지게 된다. 수신된 프레임의 데이타는 데이타 전송이 완결될 때까지 유지되어질 것이다.
(D. RCV FRAME SIZE)
수신 프레임 크기(RCV FRAME SIZE)는 현 수신 프레임의 크기를 리턴시킨다.(판독 전용, 4바이트, 1개의 32비트 워드.)
수신 프레임 크기(RCV FRAME SIZE)는 하위 16비트에 있는 현 수신 프레임의 크기(바이트로써) 및 상위 16비트에 있는 MAC ID 값을 리턴시킨다.
길이 값은 알려지지 않고 따라서 어댑터가 프레임의 수신을 완결시킬 때까지 사용할 수 없다. 어댑터가 프레임을 수신하는 프로세스에 있을 때, 레지스터는 XXXXOOOO(16진수)를 리턴시키고, 여기서, XXXX는 MAC ID 레지스터로 기록된 MAC ID 값이다.
이 길이값은 호스트가 RCV DONE로 기록될 때까지 유효하게 남아있다. RCV DONE가 이슈될 때, 이 레지스터의 최소 유효 16비트는 0(16진수)으로 리턴되어진다. 길이값은 총괄적인 수신지 어드레스 필드의 제 1 바이트에서 데이타 필드의 마지막 바이트까지 모든 바이트의 계수에 의해 계산되어진다.
호스트에 대한 지시가 전체 프레임이 수신되기 전에 발생되어지면, 프레임의 크기는 수신된 프레임의 최종 상태와 무관하게 프레임 수신의 완결에서 이 레지스터에 포스트되어지게 된다. 수신 프레임 상태(RCV FRAME STATUS) 레지스터는 프레임이 에러없이 수신되는지를 판단하도록 검사되어져야 한다. 이러한 레지스터는 에러(예를 들면, OVERSIZED FRAME)와 함께 수신된 프레임에 대한 부정확한 값을 포함한다.
(E. RCV FRAME STATUS)
수신 프레임 상태(RCV FRAME STATUS)는 현 수신 프레임의 상태를 리턴시킨다.(판독 전용, 4바이트, 1의 32비트 워드.)
수신 프레임 상태(RCV FRAME STATUS)는 현 수신 프레임의 상태를 리턴시킨다. 이러한 상태는 포스트되지 않고, 따라서 어탭터가 프레임의 수신을 완결할 때까지 이용할 수 없다.
이러한 레지스터내에 있는 비트는 다음과 같이 정의되어진다.
비트 0 DMA 오버런
비트 1 배열 에러
비트 2 잘못된 CRC
비트 3 RUNT 프레임
비트 4 OVERSIZED 프레임
이러한 레지스터의 내용은 수신 프로세스의 완결 후에 즉시 사용가능하게 되고 호스트가 RCV DONE로 기록할 때까지 유효하게 남아있다. 어댑터가 수신될 때 호스트로 프레임 데이타를 전송하도록 구성되고 프레임이 에러를 함께 수신하면, 어댑터는 버스 매스터 DMA 시퀸스를 중지하고 전송의 완결에 관한 호스트에 대한 에러 코드를 리턴시킨다. 그 때 호스트는 프레임이 불완전하게 동작하는지를 결정하도록 RCV FRAME STATUS 를 판독한다.
수신 실패인 경우, 어댑터가 잘못된 프레임을 수신하도륵 구성되거나 혹은 수신동안 프레임을 전송하도록 하면, 호스트는 어댑터상의 수신 버퍼를 자유롭게 하기 위해서 RCV DONE에 기록해야만 한다.
어댑터가 수신 완결(RCV COMPLETE) 지시를 발생시키는 초기 수신(EARLY RCV) 지시 혹은 길이 레프트 한계(LENGTH LEFT THRESH) 레지스터를 발생시키면, 어댑터는 프레임을 수신하고 어탭터가 잘못된 프레임을 수신하도록 구성되지 않더라도 프레임이 에러를 가지고 수신되었는지의 여부와 무관하게 수신 상태를 알리게 된다. 이러한 경우, RCV DONE는 수신을 인식하도록 발생되어야 하고 프레임을 폐기시켜야 한다.
이러한 레지스터를 판독하는 것은 수신 완결(RCV COMPLETE)를 인식한다.
(F. XFER AREA)
전송영역(XFER AREA) 레지스터는 수신된 프레임의 전송을 위해 버퍼 포인터를 어댑터에 제공하도록 사용되어진다(기록 전용, 1,024바이트, 256개의 32비트 워드.)
이러한 레지스터의 목적은 호스트 메모리 시스템에서 현 수신 프레임이 전송되어야하는 곳을 어댑터에 알리는 것이다. 이것은 하나 혹은 그 이상의 세트의 포인터를 이러한 레지스터로 기록함에 의해 달성되어진다.
XFER AREA는 각각의 파라미터의 기능을 판단하도록 호스트의 어드레스 버스의 최소 유효 11비트를 사용하는 기록 전용 레지스터이다. 전송 규정은 제 7 도의 구성을 사용하는 XFER AREA로 기록되어야 한다.
실질 데이타 전송은 전송 큐 상태(XFER QUEUE STATUS)로부터의 판독에 의해 초기화되어진다. 어댑터가 램이외의 동작없이 전송 요청을 받아들일 수 있다면, 다음에 어댑터는 데이타를 호스트의 메모리로 전송하기 시작한다. 어댑터가 그 전송 큐 버퍼에서 메모리 이외를 동작시킨다면, 전송영역(XFER AREA)에 대한 어떠한 부가적인 기록은 무시되어진다. 호스트는 어떤 거절된 전송 요청을 다시 제출해야한다.
현 수신 프레임은 LOOKBUF를 통해 호스트에 현재 이용가능한 수신 프레임으로서 정의되어진다. 수신 프레임은 네트워크로부터 수신된 동일한 순서로 조정되어진다.
호스트에 의해 폐기되자마자, 수신된 프레임은 검사되어지지 않거나 혹은 전송을 셋 업시키지 않게 된다.
수신된 프레임은 RCV DONE에 대한 기록에 의해 배치되어진다. 그 기록이 발생될 때까지, 현 프레임은 LOOKBUF에 남아있고 제한되지않은 시간동안 호스트에 전송되어진다. 배치되자마자, 프레임이 검사되거나 전송될 필요는 없다. 배치는 전송이 진행중에 있지 않으면 즉시 발생한다. 전송이 진행중에 있으면, 다음에 프레임의 배치는 전송이 완결될 때까지 발생되지 않는다
(G. XFER COMPLETE THRESH)
전송 완결 한계(XFER COMPLETE THRESH)는 전송되는 바이트에 기초하여 초기 전송 완결 지시를 제공한다(판독/기록, 4바이트, 1개의 32비트 워드.)
전송 완결 한계(XFER COMPLETE THRESH) 레지스터는 호스트에 대한 전송 완결 지시를 발생하기 전에 어댑터에 의해 호스트에 전송되어져야 하는 프레임의 끝으로부터의 바이트 수를 규정한다. 전송되도록 남아있는 바이트 수가 XFER COMPLETE THRESH에서의 값과 같거나 혹은 작을 때 전송, 완결(XFER COMPLETE)지시는 세트되어진다(만약 마스크되지 않는다면).
다만 비트 10 내지 0은 이 레지스터내에 구현되어진다. 그러나, 최대 프레임 길이보다큰 값은 이 기능이 적절하게 동작하는 것을 방해한다. 이러한 기능을 디스에이블시키는 바람직한 방법은 레지스터를 제로로 세트시키는 것이다.
수신되는 프레임이 여전히 수신되어지는 동안, 전송 완결 한계(XFER COMPLETE THRESH) 조건이 충족되면, XFER COMPLETE는 프레임이 수신될 때까지 억제되어진다. 전송 한계(XFER COMPLETE)가 이러한 방식으로 억제되면, 길이 레프트 한계 (LENGTH LEFT THRESH)는 이 레지스터내에서 그 값이 중복되어지고 초기 전송 완결(XFER COMPLETE) 지시를 발생시키도록 사용되어질 것이다.
프레임이 송신이 초기화되어질 때 충분히 수신되면, 다음에 전송 길이는 XFER AREA를 통해 전송되어지도록 요청되는 바이트 수 및 실질 프레임 길이보다 더 짧게 된다. 전송이 초기화되어질 때 프레임이 여전히 수신되면, 그 길이는 길이 필드 플러스(14)의 값으로 가정된다. 길이 필드의 값이 1,500보다 크지만 8137(16진수) (즉, 특정 프레임 타입 식별자)와 같지 않으면, 프레임 길이는 1500바이트로 가정되어진다. 길이 필드가 8173(16진수)를 포함하면, 다음에 수신 프레임의 바이트(17, 18)는 프레임의 길이 값을 포함하도록 가정되어진다. 이 가정된 길이는 프레임이 전체적으로 작은 실질 프레임 크기로 수신되어 질 때 변경되어지고 요청된 바이트의 수는 송신되어진다.
이 값은 전송 완결 지시에 대해 너무 빨리 응답하는 것이 얼마나 자주 있는지와 대비하여 늦게 혹은 제 시간에 도달하는 것이 얼마나 자주 있는지를 결정하도록 호스트에 의해 조절될 수 있다. 호스트가 너무 빨리 응답하면, 전송 상태(XFER STATUS)는 상태가 정의되지 않는 것을 가리키는 ff(16진수)를 리턴시키고 송신은 짧게 완료되어질 것이다. 이 레지스터는 리세트동안 0으로 세트되어진다.
(H. XFER STATUS)
전송 상태(XFER STATUS)는 수신 프레임 전송의 상태를 리턴시킨다(판독 전용, 4 바이트, 1개의 32비트 워드.)
이러한 레지스터를 판독하는 것은 수신 프레임 전송 시도의 상태를 리턴시킨다. 가능한 리턴 값은 성공에 대해서는 0(16진수)이고, 실패에 대해서는 a(16진수)이고, 알려지지 않은 것에 대해서는 ff(16진수)이다. XFER STATUS는 전송이 진행중일 때는 ff(16진수)로 설정되어 진다. 전송 실패는 호스트 버스상에 만나는 과도한 대기 상태에 의해 또는 결함이 있는 수신 프레임에 의해 발생되어질 수 있다. 이러한 레지스터를 판독하는 것은 INDICATION REASON 레지스터내의 XFER COMPLETE를 인식(리세트)시키게 된다.
(VI. 수신-지시)
본 발명의 일실시예에서는, 네트워크 어댑터는 두 가지 타입의 수신 한계 논리를 가진다. 수신 한계 논리는 네트워크로부터 수신된 데이타의 양에 의존하는 초기 지시신호를 발생시킨다. 제 1 수신 한계 논리 혹은 예견 한계 논리는 얼마나 많은 바이트의 데이타 프레임이 수신되는지에 기초한 초기 지시신호를 발생시킨다. 제 2 한계 지시논리 혹은 길이-레프트 한계 논리는 얼마나 많은 바이트의 데이타 프레임이 수신되어지도록 남아있는지에 기초하여 초기 지시신호를 발생시킨다.
제13a도 및 제 13b 도는 일반적인 이더넷 데이타 프레임을 나타낸다. 제 13 도에서 볼 수 있는 바와 같이, 데이타 프레임은 프리앰블 필드, 수신지 어드레스 필드, 소오스 어드레스 필드, 길이/타입 필드, 데이타 필드 및 순환 여유 검사(CRC) 필드를 포함한다. 프리앰블은 교번하는 1과 제로를 포함하는 64-비트 동기화 패턴이다. 수신지 어드레스 필드는 데이타 프레임이 송신되어질 국을 규정하는 48비트를 포함한다. 소오스 어드레스 필드는 데이타 프레임을 전송하는 국의 단일 어드레스를 포함하는 48비트를 포함한다. 길이/타입 필드는 데이타 프레임과 관련된 고 레벨 프로토콜 혹은 후속하는 데이타 필드의 길이를 식별하는 16-비트 필드를 포함한다. 데이타 필드는 데이타의 46 및 1,500 바이트 사이에 포함된다. 마지막으로, CRC 필드는 순환 여유 검사 코드의 32비트를 포함한다. 데이타 프레임 사이의 최소 스페이싱은 9.6μs이다. CRC 필드는 수신지 필드, 소오스 필드, 타입/길이 필드 및 데이타 필드를 커버한다.
제 13a 도는 데이타 프레임을 수신할 때, 예견 한계 논리가 초기 수신 지시를 발생하는 것을 그래프적으로 도시한다. 제 13a 도에서 볼 수 있는 바와 같이, 예견 한계 논리는 초기 수신 지시를 발생하기 전에, 얼마나 많은 바이트의 프레임이 수신되었는지를 결정한다. 예견 한계 논리는 초기 지시신호를 발생시키기전에 수신된 예견 한계 바이트 수를 포함하는 가변 기억장소를 포함한다. 예견 한계를 위해 선택된 값은 헤더 필드를 판독하는 데 필요한 바이트 수보다 더 커야 한다. 부가적으로, 예견 한계를 위해 선택된 값은 전체 프레임의 수신이 가능하도록 선택되어져야 한다. 이더넷 네트워크에서, 전체 프레임이 충돌없이 수신될 확률은 프레임의 첫번째 60바이트의 수신 후 상당히 높다.
선택적으로, 길이-레프트 한계 논리는 얼마나 많은 바이트의 데이타 프레임이 수신되어지도록 남아있는지에 따라 호스트에 초기 지시신호를 발생시킨다. 제 13b 도는 데이타 프레임의 수신에 관련된 수신 완결신호의 발생 관계를 그래프적으로 도시한다. 예견 한계 논리가 데이타 프레임에서 수신된 데이타 수를 계수하고 이것은 예견 한계값에 비교함에 의해 구현될 수 있는 반면, 길이-레프트 한계값은 데이타 프레임의 길이가 한계값에 대한 비교이전에 정의되어야 하기 때문에 좀 더 복잡하다. 길이-레프트 한계 논리는 길이-레프트 한계 값이 수신되어질 각각의 데이타 프레임에 기초한 실 시간에 도달했는지를 결정하도록 데이타 프레임의 길이를 결정해야만 한다.
제 14 도는 길이-레프트 한계 논리가 실시간에 기초하여 데이타 프레임의 길이를 결정하는 방법의 논리 흐름도를 나타낸 것이다. 데이타 프레임의 길이/타입 필드를 수신하자마자, 논리 블럭(200)은 길이/타입 필드가 길이 값 혹은 타입 값을 포함하는 지를 결정한다. 길이/타입 필드내의 값이 1,500보다 더 작거나 혹은 같으면, 길이-레프트 한계 논리는 논리 블럭(201)에 있는 데이타 필드의 길이로서의 값을 사용하게 된다. 선택적으로, 길이/타입 필드내의 값이 1,500보다 크면, 이 논리는 그 값이 논리 블럭(202)내에 있는 타입 식별자인지를 결정하게 된다. 타입 식별자가 8137(16진수)와 동일하면, 다음에 한계 논리는 데이타 프레임이 데이타 필드의 길이를 포함하는 바이트(17,18)를 사용하는 NetWare 인지를 결정하는 논리 블럭(203)으로 전이한다. 그렇지 않으면, 한계 논리는 논리 블럭(204)로 전이하고 데이타 필드가 1500 바이트임을 가정한다.
호스트는 초기 수신 지시가 예견 및 길이-레프트 한계값을 변경함에 의한 이전의 호스트 응답에 기초하여 발생되었을 때 동적으로 조정하게 된다. 이러한 조정은 호스트 프로세서의 인터럽트 호출을 또한 감소시키게 된다. 호스트, 더욱 특정하게는 호스트 드라이버는 인터럽트가 네트워크 어댑터의 상태 레지스터를 검사함에 의해 너무 빠르게 혹은 너무 늦게 발생되었는지를 결정해야 한다. 호스트 프로세서는 다음에 한계 레지스터로 기록함에 의해 수신 한계 논리에서 한계값을 증가시키거나 혹은 감소시키게 된다.
이진 지수적 가속 트랙 방법은 호스트 프로세서에 의해 사용되어짐으로써 네트워크 어댑터의 초기 지시의 발생을 조정하게 된다. 수신 한계 논리를 동적으로 조절하는 바람직한 알고리즘은 다음과 같다 :
1. 호출 주기 디폴트를 사용한다.
15 μs의 초기 인터럽트 호출 디폴트가 DOS시스템에 사용되어지는 반면, 0S/2 시스템에 대해서는 30μs가 사용되어진다. 인터럽트 호출에 대해 예상되는 다수의 마이크로세컨드는 바이트 타임으로 변환된다. 변환 인수는 어댑터의 모드, 네트워크 데이타 율 및 호스트 시스템 버스 율에 의존한다.
2. 인터럽트가 빨리 혹은 늦게 발생되었는지를 결정한다.
인터럽트 서비스 루틴으로 인입하자마자, 네트워크 어댑터 프레임 상태(FRAME STA TUS) 레지스터는 프레임이 실질적으로 완결된 수신을 갖는지를 결정하도록 검사되어져야 한다. 프레임 상태(FRAME STATUS) 레지스터는 인터럽트가 너무 빨리 혹은 너무 늦게 발생되는지를 지시하게 된다.
3. 호출 델타를 결정한다.
현 인터럽트 및 이전의 인터럽트가 사건의 동일한 면상에 발생되면(양족 모두 너무 빨리 혹은 너무 늦게), 호출 델타가 2배로(2로 곱해짐) 된다. 현 인터럽트가 사건의 반대 면상에 발생되면(빨리 대 늦게), 델타는 1로 리세트되어지고 그 부호가 변경된다. 예를 들면, 현 델타가 플러스 64이면, 다음에 새로운 델타는 마이너스 1이고, 현 델타가 네카티브 32이면, 다음의 새로운 델타는 플러스1이다. 이것은 알고리즘이 표시를 넘으면, 정지되어 반대 방향에서 가속되기 시작하는 것을 보장하게 된다.
4. 한계값을 갱신한다.
최종적으로 호출 델타는 한계값을 포함하는 가변 기억장소의 내용에 부가되어진다. 다음에 알고리즘은 단계2로 리턴되어진다.
위의 알고리즘은 후속하는 다른 한계 논리 실시예의 조정을 위해 사용되어질 수 있다.
(A. LOOK AHEAD AND LENGTH LEFT THRESHOLD LOGIC(예견 및 길이 레프트 한계 논리)
본 실시예에서는, 수신 표시 논리는 제5도의 수신 DMA 블 럭(63)에서 구현되어 진다. 다른 기능 블럭중에서, 수신 DMA 블럭(63)은 제15도에 도시된 수신 표시 기능을 포함한다. 제 15 도의 수신 표시 기능 블럭은 예견 및 길이-레프트 한계 논리를 포함한다.
수신 지시 기능의 주 기능 논리 블럭은 수신 완결 제어(RCV COMPLETE CONTRO L) 블럭(210), 길이 필드(LENGTH FIELD) 레지스터(212), 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(216), 길이 레프트 한계(LENGTH LEFT THRESH) 레지스터(221), 예견 한계(LOOK AHEAD THRESH) 레지스터(223) 및 초기 수신 제어(EARLYRCV CONTROL) 블럭(225)를 포함한다.
수신 완결(RCV COMPLETE) 제어 블럭(210)은 다양한 입력신호에 기초하여 수신 완결(RCV COMPLETE) 를 출력한다. 이러한 입력신호는 RCV DONE REG WR, XFER INDICATE DELAY EN, XFER COMPLETE, RCV FRAME STATUS RD, DISCARD CURRENT, XFER QUEUE STATUS RD, CUR FRAME IS CUR RCV, CLOCK, RECEIVE DMA RESET, LENGTH LEFT THRESH EN 및 LENGTH LEFT THRESH MET를 포함한다.
LENGTH LEFT THRESH MET 및 LENGTH LEFT THRESH EN 은 길이-레프트 한계 논리에 기초한다. END OF RCV 및 RCV DMA RESET는 OR게이트(211)에 대한 입력이다. OR게이트(211)의 출력은 다음에 길이 필드(LENGTH FIELD) 레지스터(212)를 세트시키도록 사용된다. 길이 필드(LENGTH FIELD) 레지스터(212)는 Q 출력으로부터 조건 길이 필드(CONDITIONED LENGTH FIELD)[10 : 0]을 출력하는 주어진 데이타 프레임에서 길이 필드 값(LENGTH FIELD VALUE)를 조절하도록 사용되어진다. 길이 필드(LENGTH FIELD)[15 : 0]은 레지스터를 클럭킹시키는 LENG TH FIELD WR 를 갖는 길이 필드(LENGTH FIELD) 레지스터(212)의 D입력이다.
수신 DMA 리세트(RCV DMA RESET)는 리세트 레지스터(214), 레지스터(220) 및 길이 레프트 한계(LENGTH LEFT THRESH) 제어기(216)에 또한 사용된다. 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(216)과 함께 레지스터(214. 220)는 클럭(CLOCK)신호에 의해 동기화되어진다. RECEIVING 신호는 레지스터(214)의 D 입력으로 입력되어진다. 레지스터(214)의 Q출력은 다음에 RECEIVING신호와 함께 AND 게이트(215)로 입력되어진다. AND 게이트(215)의 출력은 다음에 길이 레프트 한계 (LENGTH LEFT THRESH) 카운터(216)의 PE 입력을 구동한다. RCV 프레임 길이(RCV FRAME LENGTH) [3 : 0]은 논리 블럭(219)에 의해 15와 비교되어지고 다음에 레지스터(220)의 J입력을 구동하게 된다. 레지스터(220)의 Q출력은 다음에 RCV READ BAR를 따라 AND 게이트(217)로 입력된다. AND 게이트(217)의 출력은 다음에 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(216)의 CE 입력을 구동한다.
길이 레프트 한계(LENGTH LEFT THRESH) 레지스터(221)는 길이-레프트 한계값을 포함한다. RCV DMA RESET은 레지스터(221)를 클럭킹하는 LENGTH LEFT THRESH WRHI 및 LENGTH LEFT THRESH WRLO를 구비하는 레지스터(221)를 리세트시킨다. 호스트 기록 데이타(HOST WRITE DATA)[10 : 0]는 길이 레프트 한계 (LENGTH LEFT THRESH) 레지스터(221)로 한계값을 기록한다. 길이 레프트 한계 레지스터(LENGTH LEFT THRESH REGISTER) 값은 다음에 Q로부터 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(16) 및 논리 블럭(218)의 D입력으로 출력된다. 길이 레프트 한계(LENGTH LEFT THRESH) 레지스터(221)의 Q출력이 1보다 크거나 혹은 같으면, 논리 블럭(218)로부터 LENGTH LEFT THRESH EN은 수신 완결 제어 (RCV COMPLETE CONTROL) 블럭(210)으로 어서트되어진다.
다음에 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(216)은 그 Q출력으로부터 데이타 프레임으로부터 수신된 다수의 바이트를 비교기(213)의 B 입력으로 출력된다. 다음에, 비교기(216)는 길이 레프트 한계(LENGTH LEFT THRESH) 카운터(216)의 출력이 조건부 길이 필드(LENGTH FIELD)[10 : 0] 값을 초과하거나 혹은 동일할 때, LENGTH LEFT THRESH MET를 수신 완결 제어(RECEIVE COMPLETE CONTROL) 블럭(210)으로 출력한다.
초기 수신 제어(EARLY RCV CONTROL) 블럭(225)은 그 입력에 기초한 초기 수신 (EARLY RCV)을 어서트한다. 초기 수신 제어(EARLY RCV CONTROL)블럭(225) 입력은 CUR FRAME IS CUB RCV, END OF RECEIVE, RCV DMA RESET, CLOCK, RCV BYTES AVAIL RD, LOOK AHEAD THRESH EN 및 LOOK AHEAD THRESH MET이다.
길이 레프트 한계(LENGTH LEFT THRESH) 레지스터(221)과 같이, 예견 한계 (LOOK AHEAD THRESH) 레지스터(223)는 한계값을 포함한다. LOOK AHEAD THRESH 레지스터(223)는 LOOK AHEAD THRESH 레지스터(223)을 클럭킹하는 LOOK AHEAD THRESH WRHI 및 LOOK AHEAD THRESH WRLO과 함께 D입력으로 인입하는 호스트 기록 데이타(HOST WRITE DATA)[10 : 0]를 갖춘 수신 DMA 리세트(RCV DMA RESET)에 의해 세트되어진다. LOOK AHEAD THRESH 레지스터 (223) Q 출력은 수신 프레임 길이(RCV FRAME LENGTH)[10 : 0]를 따라 비교기(224)로 인입되어진다. 비교기(224)는 다음에 수신 프레임 길이(RCV FRAME LENGTH) [10 : 0]이 예견 한계(LOOK AHEAD THRESH) 레지스터(223)의 Q출력보다 크거나 혹은 같을 때 LOOK AHEAD THRESH MET을 어세트시킨다. 예견 한계(LOOK AHEAD THRESH) 레지스터(223)은 논리 블럭(222)로 또한 입력되어지고, 이것은 LOOK AHEAD THRESH 레지스터가 1과 같거나 혹은 크면, LOOK AHEAD THRESH EN을 초기 수신제어(EARLY RCV CONTROL) 블럭(225)로 어서트시킨다.
제16a도 및 제16b도는 제15도의 길이 레프트 한계(LENGTH LEFT THRESH) 레지스터(221) 및 예견 한계(LOOK AHEAD THRESH) 레지스터(223)의 레지스터 구조를 도시한다. 이러한 D-타입 플립-플롭 레지스터는 각각 길이 레프트 한계 (LENG TH LEFT THRESH) 값 및 예견 한계(LOOK AHEAD THRESH) 값을 저장한다.
제 16a 도에서 정상부 레지스터(221a)는 LENGTH LEFT THRESH WRHI의 상승 에지상의 D 입력으로 호스트에 의해 기록되어진 상위 세 비트의 호스트 기록 데이타 (HOST WRITE DATA)[10 : 8]를 저장한다. 바닥부 레지스터(221b)는 LENGTH LEFT THRESH WRLO의 상승 에지 상의 D입력으로 호스트에 의해 기록되어진 하위 여덟 비트의 호스트 기록 데이타(HOST WRITE DATA)[7 : 0]를 저장한다. 레지스터는 R 입력에서 수신 DMA 리세트(RECEIVE DMA RESET)에 의해 리세트되어진다. 길이 레프트 한계(LENGTH LEFT THRESH)의 값은 레지스터(221a)로부터 판독된 상위 세 비트 길이 레프트 한계(LENGTH LEFT THRESH)[10 : 8] 및 레지스터(221b)로부터 판독된 하위 8비트 길이 레프트 한계(LENGTH LEFT THRESH)[7 : 0]를 갖는 Q 출력으로부터 판독된다.
그렇지않으면, 제 16b 도에 있어서, 예견 한계(LOOK AHEAD THRESH) 레지스터 (223)는 예견 한계(LOOK AHEAD THRESH) 값을 저장한다. 제 16b 도에서 상부 레지스터(223a)는 호스트에 의해 LOOK AHEAD THRESH WRHI의 상승 에지상에 D입력으로 기록된 상위 세 비트 호스트 기록 데이타(HOST WRITE DATA)[10 : 8]를 저장한다. 아래에 있는 레지스터(223b)는 호스트에 의해 LOOK AHEAD THRESH WRLO의 상승 에지상의 D입력으로 기록된 하위 여덟 비트 호스트 기록 데이타(HOST WRITE DATA)[7 : 0]을 저장한다. 레지스터는 R 입력에서 수신 DMA 리세트 (REC EIVE DMA RESET)에 의해 리세트되어진다. LOOK AHEAD THRESH의 값은 레지스터(223a)로부터 판독된 상위 세 비트 LOOK AHEAD THRESH[10 : 8] 및 레지스터(223b)로부터 판독된 하위 8 비트 LOOK AHEAD THRESH[7 : 0]를 갖는 Q 출력으로부터 판독된다.
제 17 도는 제 15 도의 수신 완결 제어(RECEIVE COMPLETE CONTROL) 블럭의 수신 완결 제어(RECEIVE COMPLETE CONTROL) 상태 기기도이다. 수신 DMA 리세트 (RECEIVE DMA RESET)신호는 INIT상태(224)로의 전이를 허용한다. 초기화 후에, 참으로 되는 한계 조건 또는 수신 버퍼내에 있는 완전 프레임을 대기한다. XFER INDICATION DELAY EN이 난-제로이거나 혹은 호스트가 전송 큐 상태(XFER QUEUE STATUS)를 판독함에 의해 프레임 전송을 초기화시키면, 상태 기기는 길이 레프트 한계(LENGTH LEFT THRESH) 상태가 교차될 때 혹은 완전한 수신프레임이 수신 버퍼에 있을 때 대기 상태(225)로 가게 된다. 대기(WAIT) 상태(225)에서는 RCV COMPLETE를 어서트하기 전에 전송 완결(XFER COMPLETE)를 대기해야 한다; 그러나, 호스트가 RCV DONE로 기록함에 의해 더 빠른 수신 데이타에 기초한 프레임을 페기시키길 원하다면, 상태 기기는 INIT상태(224)로 되돌아가고, RCV COMPLE TE 는 소거(CLEAR) 상태(227)로 억압되어 질 것이다
선택적으로, 전송 지시 지연(XFER INDICATE DELAY)이 제로이면, 그리고 호스트가 전송 큐 상태(XFER QUEUE STATUS)를 판독함에 의해 송신을 초기화시키지 않으면, 다음에 상태 기기는 SET상태(226)로 직접 가게 되고 XFER COMPLETE를 대기하지 않고 수신 완결(RCV COMPLETE)를 어서트한다.
세트된 후에, RCV COMPLETE는 호스트가 RCV 프레임 상태(RCV FRAME STAT US)를 판독함에 의해서 혹은 RCV DONE로 기록함에 의해서 지시를 인식할 때. 소거(CLEAR) 상태(227)에 의해 소거되어질 것이다. DISCARD CURRENT가 어서트될 때, 현 프레임 포인터[14 : 2]를 가리키는 것은 다음 프레임의 시작에 선행되어지고 상태 기기는 INIT 상태(224)로 되돌아간다.
제18도는 제15도의 길이 필드(LENGTH FIELD)레지스터의 개략도이다. 길이 필드 (LENGTH FIELD) 레지스터(212)는 LENGTH LEFT THRESHOLD MET를 결정하도록 사용되어지는 조건 길이 필드(CONDITIONED LENGTH FIELD)를 저장한다. 저장된 값은 46의 하위 한계 및 1,500의 상위 한계로 제한되어진다. LENGTH FIELD [15 : 0]의 값은 논리 블럭(212a, 212b)의 출력에 의해 제한되고 이것은 MUX(212c)의 출력을 선택하도록 사용되어진다. MUX(212c)의 S1 및 S0 입력은 출력되는 조건 길이 필드(CONDITIONED LENGTH FIELD)[10 : 0] 값을 결정한다. 논리 블럭(212a)의 출력은 길이 필드(LENGTH FIELD)[15 : 0]가 1,500 보다 클 때 세트되어진다. S1은 길이 필드(LENGTH FIELD) [15 : 0]이 46보다 작으면 논리 블럭(212b)에 의해 세트되어진다. 조건 길이 필드(CONDITIONED LENGTH FIELD)[10 : 0]는 레지스터(212c)의 O 입력으로 기록된다. 그 값이 46보다 작으면 다음에 46의 값이 레지스터(212d)의 D입력으로 기록되어지고, 그 값이 1,500보다 크면 다음에 1,500의 값이 D-입력 레지스터(212d)로 기록되어진다. D-타입 레지스터(212d)는 P 포인트에서 길이 필드 프리세트(LENGTH FIELD PRESET)에 의해 리세트되어진다. 212d 레지스터에 대한 기록은 LENGTH FIELD WR에 의해 동기화되어진다.
제19도는 제15도의 EARLY RCV 제어 블럭의 초기 수신 제어(EARLY RCV CONT R OL)상태 기기의 도시도이다. 수신 DMA 리세트(RECEIVE DMA RESET) 신호는 EARLY RCV가 소거되는 곳의 INIT 상태(228)로의 전이를 허용한다. LOOK AHEAD THRESH EN, LOOK AHEAD THRESH MET 및 CUR FRAME IS CUR RCV 가 어서트될 때, EARLY RCV는 세트(SET) 상태(229)로 세트되어진다. LOOK AHEAD THRESH가 넌-제로일 때 LOOK AHEAD THRESH EN이 어서트되어지고, 성공적으로 수신된 바이트의 수가 LOOK AHEAD THRESH에서 세트되어진 한계값과 같거나 혹은 더 클 때 LOOK AHEAD THRESH MET가 어서트되어진다. CLEAR 상태 (230)에서는, EARLY RCV가 호스트가 RCV BYTES AVAIL을 판독할 때 소거되어진다. 상태 기기는 LATCHED END OF RECEIVE가 관찰될 때까지 CLEAR 상태(230)에 머무르게 된다.
(VII. 지시 조합 논리)
초기 수신 인터럽트를 발생시키는 수신 한계 논리로서, 전송 완결 인터럽트는 데이타의 완전한 프레임이 어댑터 버퍼 메모리로부터 호스트 메모리로 전송될 때 발생되어지게 된다. 그러나, 지시 조합 논리는 예상되는 초기 수신 인터럽트가 발생되기 전에 약간 발생하도록 정상적인 송신 완결 인터럽트를 지연시키게 된다.
제20도는 네트워크 어댑터에 의한 프레임의 수신 및 전송을 예시한다. 제 20 도는 수신 프레임(240a) 및 전송 프레임(240b)의 중복을 도시한다. 도시된 바와 같이, 정상 전송 완결 인터럽트는 전송 프레임(240b)의 끝부분에서 발생되어진다. 그러나, 초기 수신 지시 논리를 갖춘 네트워크 어댑터는 정상 전송 완결 인터럽트 이후에 재빨리 인터럽트를 발생시킨다. 양쪽 인터럽트는 네트워크 어댑터/호스트 프로세서 성능을 감소시키는 비교적 짧은 시간 주기에 발생되어진다. 인터럽트의 양을 줄이기 위해서, 프레임의 정상 전송 완결 인터럽트(240b)는 프레임(242a)의 초기 수신 인터럽트의 예상된 발생이전에 지연되어진다. 프레임의 전송 완결 인터럽트(240b)의 이러한 지연은 호스트 프로세서가 하나의 인터럽트 서비스 루틴에서 두 개의 지시를 제공하도록 한다. 호스트 프로세서는 지연된 전송 완결 인터럽트에 의해 발생된 그 인터럽트 서비스 루틴으로 인입하게 되고, 나오기전에 네트워크 어댑터 상태 레지스터를 검사함으로서 초기 수신 지시를 판독하게 되고 또한 초기 수신 지시를 서비스하게 된다. 따라서, 지시 조합 논리는 네트워크 어댑터에서 호스트 시스템으로의 다중 프레임 전송동안 호스트 프로세서에 대한 다수의 인터럽트에 있어서의 실질적으로 감소되도록 한다.
제5도의 업로드 DMA블럭에서 업로드 지시 기능 블럭은 지시 조합 논리를 포함한다. 특정 조건이 충족된 후에, 업로드 지시 기능은 XFER COMPLETE 를 어서트하고 XFER INDICATION REASON 에 상태 정보를 포스트시킨다. XFER COMPLETE가 어서트될 때, XFER INDICATION REASON 에서의 상태는 유효하게 되고, 호스트가 XFER LENGTH를 판독할 때까지 유효하게 된다. XFER INDICATION REASON 의 비트는 XFER COMPLETE 가 발생될 때 기술되어지는 상태 정보를 포스트시킨다. 업로드 지시 기능은 호스트 프로세서가 XFER LENGTH를 판독함에 의해 지시를 인식할 때 XFER COMPLETE를 디어서트시킨다. 업로드 지시 블럭은 세 개의 호스트 억세스 가능 레지스터; XFER IDICATION REASON, XFER COMPLETE THRESH 및 XFER INDICATE DELAY를 포함한다. 호스트는 세 개의 모든 레지스터에 대한 억세스트를 판독하고 XFER COMPLETE THRESH 및 XFER INDICATE DMAY 에 대한 억세스를 기록한다. 전송 완결(XFER COMPLETE)은 전송의 완결이전, 전송의 완결후, 혹은 수신되는 프레임에 대한 초기 수신 지시가 예상될 때에 어스트되도록 프로그램될 수 있다.
XFER COMPLETE는 제21도에 도시된 상태 기기에 의해 제어되어진다. 업로드 DMA 리세트(UPLOAD DMA RESET)는 업로드 지시 블럭이 초기화(INIT) 상태(304)로 인입하도륵 한다. XFER COMPLETE, XFER INDICATION REASON 및 XFER INDICATE DELAY EN은 INIT 상태(304)에서 소거되어진다. 상태 기기는 TRANSFERRING의 어스트시 WAIT FOR XFER THRESH MET 상태(305)로 전이한다. 전송 지시 지연(XFER INDICATE DELAY)이 제로이고 전송되어지는 프레임이 XFER THRESH MET가 어서트될 때 수신되어지지 않으면, XFER COMPLETE는 SET상태(309)에 대한 전이에 의해 어스트되어진다. 전송되어지는 현 프레임이 또한 수신되어지는 현 프레임이면, XFER COMPLETE의 어서션은 다음 수신 프레임이 타이머 (TIMER)상태(306)로의 전이에 의해 예상될 때까지 지연되어진다. 최소 IFS(인터-프레임 스페이스)를 가정하면, 다음 수신 프레임의 시작에서부터 하나의 수신 프레임의 끝으로부터 시간은 다음의 식에 의해 결정되어진다 :
9.6μs(IFS) + 6.4μs(프리앰블) + 0.8μs(수신지 어드레스 필드의 제 1바이트)+8μs(동기화) 17.6μs
새로운 필드가 RECEIVING의 어서션에 의해 예상된 시간에서 수신되어지지 않으면, 전송 완결(XFER COMPLETE)은 17.6μs 후에 SET상태(309)에 의해 어서트되어진다. RECEIVING은 프레임이 RECEIVE DMA에 의해 수신되어질 때 어서트되어진다. RECEIVING의 어서션은 프레임의 시작을 지시하도록 사용되어지고, RECEIVING의 디어서션은 프레임의 끝을 지시하도록 사용되어진다. RECEIVING이 어서트되지 않으면, XFER COMPLETE는 새로운 수신 프레임이 어드레스 매치 대기(WAIT FOR ADDR MATCH) 상태(307)에서 검사될 때까지 또한 지연되어진다. 수신지 어드레스가 정합되지 않고 프레임이 프레임 거절(REJECT FRAME)의 어서션때문에 수신되어지지 않으면, XFER COMPLETE는 SET 상태(309)에 의해 어서트되어진다. 그렇지않으면, WAIT FOR XFER DELAY MET 상태(308)는 지연 멀티캐스트 비교 행함(DELAYED MULTICAST COMPARE DONE)의 어서션시 발생한다. DELAY MULTICS T COMPARE DONE 는 하나의 클럭 사이클에 의해 지연된 MULTICAST COMPARE DONE이다. 프레임 거절(REJECT FRAME)은 지연 멀티캐스트 비교 행함(DELAY MULTICAST COMPARE DONE)이 어서트될 때 유효하게 되도록 하나의 클럭에 의해 멀티캐스트 비교 행함(MULTICAST COMPARE DONE)을 지연시킨다. 최종적으로, XFER DELAY MET가 어서트될 때, 상태 기기는 세트(SET)상태(309)로 전이한다.
제22a도 내지 제22d도는 전송 완결(XFER COMPLETE)이 어서트될 때 상이한 시퀀스의 타이밍도이다. 제 21a 도는 초기 XFER COMPLETE지시의 어서션의 타이밍도를 도시한다. 데이타 프레임이 호스트 시스템으로 전송되는 동안, XFER COMPLETE 지시는 XFER COMPLETE MET 의 어서션 때 어서트되고, XFER LENGTH RD의 디어서션 때 디어서트되어진다.
제 22b 도는 새로운 프레임이 수신되지 않았을 때 XFER COMPLETE 지시의 어서션을 보여준다. XFER COMPLETE 의 어서션은 새로운 프레임의 예상된 발생까지 17.6마이크로세컨드 지연되어지고 XFER LENGTH RD의 디어서션 때 디어서트되어진다.
제22c도는 프레임이 수신될 때 정확한 어드레스 정합을 갖지 않는 지연된 전송 완결 지시를 예시한다. 17.6마이크로세컨드 후에, 네트워크 어댑터는 새로운 프레임을 수신하고, 새로운 프레임이 네트워크 어댑터 수신지 어드레스를 구비하는지를 결정한다. 수신되는 현재의 프레임이 네트워크 어댑터 수신지 어드레스와 정합하지 않으면, XFER COMPLETE 는 DELAYED MULTICAST COMPARE DONE 및 REJECT FRAME의 어서션 때 어서트될 것이다. 다음에 전송 완결은 XFER LENGTH RD의 디어서션 때 디어서트되어진다.
제 22d 도는 XFER DELAY MET가 어서트된 후 지연된 XFER COMPLETE지시를 예시한다. 수신되는 현재의 프레임이 네트워크 어댑터 수신지 어드레스를 구비하면, 다음에 XFER COMPLETE는 XFER DELAY MET의 어서션시 발생되고 XFER LENGTH RD의 디어서션시 디어서트되어진다.
제23도는 업로드 지시 블럭의 XFER COMPLETE THRESH 레지스터 개략도이다. XFER COMPLETE THRESH는 호스트가 판독 및 기록의 양쪽 접근을 구비하는 레지스터(315,316)에 저장되어진다. 전송 완결 한계값의 상위 3비트는 레지스터(315)의 D 입력에서 HOST WRITE DATA[10 : 8]에 의해 기록되어진다. XFER COMPLETE THRESH WRHI 스트로브는 입력을 클럭시킨다. XFER COMPLETE THRESH[10:8]은 레지스터(315)의 Q출력에서 출력되어진다. 전송 완결 한계값의 하위 8비트는 레지스터(316)의 D입력에서 HOST WR DATA[7:0]에 의해 기록되어진다. XFER COMPLETE THRESH WRLO 스트로브는 입력을 클럭시킨다. XFER COMPLETE THRESH[7 : 0]은 레지스터(315)의 Q 출력에서 출력된다. 레지스터(315, 316)는 UPLOAD DMA RESET에 의해 초기화되는 동안 제로로 리세트되어진다.
315, 316에서의 송신 완결 한계값은 호스트가 양쪽 315 및 316에 기록될 때 유효하다. 단지 315 혹은 316만이 기록될 때, XFER COMPLETE THRESH VALID는 한계값이 유효하지 못함을 지시하도록 디어서트되어진다.
이것은 레지스터(310, 313)에 의해 달성되어진다. XFER COMPLETE THRESH WRLO는 레지스터(310)의 J 입력에 입력되어지는 반면, XFER COMPLETE THRESH WRHI는 레지스터(313)의 J 입력에 입력되어진다. 레지스터(310, 313)의 K 입력은 AND 게이트(311, 314)로부터 수신되어진다. XFER COMPLETE THRESH WRHI, XFER COMPLETE THRESH WRLO 및 XFER THRESH HI BYTE VALID는 AND 게이트(311)에 대한 입력이다. XFER COMPLETE THRESH WRHI, XFER COMPLETE THRESH WRLO 및 XFER THRESH LO BYTE VALID는 AND 게이트(314)에 입력되어진다. 레지스터(310, 313)는 클럭(CLOCK) 신호에 의해 동기화되어진다. 레지스터 (310, 313)의 Q 출력, 전송한계 로우 바이트 유효(XFER THRESH LO BYTE VALID) 및 전송 한계 하이 바이트 유효(XFER THRESH HI BYTE VALID)는 각각 전송 완결 한계 유효(XFER COMPLETE THRESH VALID)를 출력하는 AND 게이트(312)로 입력되어 진다.
제24도는 업로드 지시 블럭의 XFER DELAY MET 레지스터 개략도이다. XFER DELAY MET 은 현 바이트 카운트(CUR BYTE COUNT)[10 : 0]에서 수신된 바이트수 플러스 전송지시 지연(XFER INDICATION DELAY)[10 : 0]이 예견 한계(LOOK AHEAD THRESH)[10 : 0]보다 클 때 어서트되어진다. 현 바이트 카운터(CUR BYTE COUNT)[10 : 0] 및 전송 지시 지연(XFER INDICATE DELAY)[10 : 0]이 가산기(317)의 각각의 a 및 b 입력에 인입되어진다. 다음에 그 합은 b 입력에 인입되는 LOOK AHEAD THRESH를 구비하는 비교기(3l8)의 a 입력으로 인입되어진다. 비교기(3l8)의 출력은 AND 게이트(319)로 입력되는 XFER DELAY MET의 피드백을 따라, XFER DELAY RD, CYCLE DONE, XFER DELAY MET ENABLE 및 CLOCK XFER LENGTH RD를 갖춘 AND 게이트(320)으로 입력되어진다. 다음에 AND 게이트(319, 320)은 OR 게이트(321)에 입력되어진다. 다음에 OR게이트(321)의 출력은 레지스터 (322)의 D 입력으로 입력되어진다. XFER DELAY MET는 CLOCK신호 동기화로서 레지스터를 리세트시키는 업로드 DMA리세트(UPLOAD DMA RESET)를 갖는 레지스터 (322)의 Q 출력으로부터 출력되어진다. 전송 지시 지연(XFER INDIC A TE DELAY) [10 : 0], 현 바이트 카운터(CUR BYTE COUNT)[10 : 0] 및 예견 한계(LOOK AHEAD THRESH)[10 : 0]상의 값은 CYCLE DONE가 어서트될 때 CLOCK의 상승 에지상에서만 변화된다. 레지스터(322)에 대한 입력이 유효하다는 것을 보장하기 위해서, XFER DELAY MET는 전송 지시 지연(XFER INDICATE DELAY)[10 : 0] 플러스 현 바이트 카운트(CUR BYTE COUNT)[10 : 0]가 CYCLE DONE이 어서트될 때 예견 한계(LOOK AHEAD THRESH)[10 : 0]보다 크거나 혹은 같을 때 세트되어진다. XFER LENGTH RD가 어서트될 때, XFER DELAY MET는 리세트된다.
제25도는 업로드 지시 블럭의 전송 지시 지연(XFER INDICATE DELAY) 레지스터 개략도이고 제 23 도의 XFER COMPLETE THRESH 레지스터의 개략도와 동일한 구조를 기존적으로 구비한다. 전송 지시 지연(XFER INDICATE DELAY)은 호스트가 판독 및 기록 억세스 양쪽 모두를 하는 레지스터(328, 329)내에 저장된다. 이러한 레지스터는 업 로드 DMA 리세트(UPLOAD DMA RESET)에 의해 초기화되는 동안 제로로 리세트되어진다. 이러한 레지스터내의 값은 호스트가 레지스터(328, 329)의 로우 및 하이 바이트 양쪽 모두에 대해 기록되어질 때 유효하다. 로우 혹은 하이 바이트중 어느 하나만이 기록되어졌다면, 전송 지시 지연 유효(XFER INDICATE DELAY VALID)는 한계값이 비유효하다는 것을 지시하도록 디어서트되어진다.
이것은 레지스터(323, 326)에 의해 달성되어진다. XFER INDICATE DELAY WRLO는 레지스터(323)의 J 입력으로 입력되어지는 반면, XFER INDICATE DELAY WRHI 는 레지스터(326)의 J 입력으로 입력되어진다. 레지스터(323, 326)의 K 입력은 AND 게이트(324, 327)로부터 수신되어진다. XFER INDICATE DELAY WRHI, XFER INDICATE DELAY WRLO 및 전송지연 하이 바이트 유효(XFER DELAY HI BYTE VALID)는 AND 게이트(324)에 대한 입력이다. XFER INDICATE DELAY WRHI, XFER INDICATE DELAY WELO 및 전송 지연 로우 바이트 유효 (XFER DELAY LO BYTE VALID) 는 AND 게이트(327)에 대한 입력이다. 레지스터(323, 326)는 CLOCK신호에 의해 동기화되어진다. 레지스터(323, 326)의 Q출력, 전송 지연 로우 바이트 유효(XFER DELAY LO BYTE VALID) 및 전송 지연 하이 바이트 유효(XFER DELAY HI BYTE VALID) 각각은, 양쪽 XFER DELAY LO BYTE VALID 및 XFER DELAY HI BYTE VALID가 세트되면, 전송 지시 지연 유효(XFER INDICATE DELAY VALID)를 출력하는 AND 게이트(325)로 입력되어진다.
제26도는 업로드 지시 블럭의 XFER THRESHOLD MET개략도이다. 제 26 도는 XFER THRESH MET 가 어떻게 발생되는지를 예시한다. XFER COMPLETE THRESHOLD 는 전송되어지는 바이트의 수가 전송 완결 한계(XFER COMPLETE THRESH) 값과 같거나 작을 때 만족한다. 전송되도록 남겨지는 바이트의 수는 어느 쪽이든지 작은, 수신 프레임 길이(FRAME LENGTH)에서 전송되어진 바이트 수를 감산함에 의해 결정되어지거나 혹은 전송되어지는 LAST TD DATA LEN에서 남아있는 바이트의 수에 의해 결정되어진다. 전송되어질 프레임이 여전히 수신되어지면, 다음에 한계값은 전송되도록 남아있는 바이트의 수가 길이 레프트 한계(LENGTH LEFT THRESH)의 값보다 작거나 같을 때 충족되어진다. 이러한 경우, 남아있는 바이트 수는 이미 전송되어진 바이트 수로부터 LENGTH FIELD의 값을 감산함에 의해 결정되어진다.
전송 완결 한계(XFER COMPLETE THRESHOLD) 조건을 계산하도록 사용되어지는 입력은 CLOCK 신호의 상이한 상승 에지상에서 변화되어지지만, 이것은 CYCLE DONE가 어서트될 때 클럭 신호상에서만 변화되어진다. 따라서, 산술 및 먹스 조합 논리에 의해 기여되는 지연을 조절하기 위해서, 플립-플롭 레지스터의 입력은 CYCLE DONE가 어서트될 때에만 래치되어진다.
특히, AND 게이트(331)과 함께 레지스터(330, 332)는 길이 필드 유효(LENGTH FIELD VALID)를 어서트하도록 사용되어진다. 레지스터(330, 332)는 업로드 DMA 리세트(UPLOAD DMA RESET)에 의해 세트되어진다. LENGTH FIELD WR은 레지스터(330)의 J 입력으로 입력되어진다. 레지스터(330, 332)는 클럭(CLOCK) 신호에 의해 동기화되어진다. TRANSFER LENGTH RD는 레지스터(330, 332)의 K 입력으로 입력되어진다. 레지스터(330)의 Q출력은 CYCLE DONE 신호를 갖는 AND 게이트 (331)로 입력되어진다. AND게이트(331)의 출력은 다음에 MUX(335)의 S0로 입력되는 길이 필드 유효(LENGTH FLELD VALID)를 어서트하는 레지스터(332)의 Q 출력을 갖는 레지스터(332)의 J 입력으로 입력되어진다.
RCV 프레임 크기(RCV FRAME SIZE)[10 : 0]은 RCV FRAME SIZE[10 : 0]이 0보다 크면 MUX(335)의 S1을 어서트하는 비교기(333)에 입력되어진다. 상수 14는 다음에 MUX(335)의 세 입력을 구동하는 논리 블럭(334)에 의해 조건 길이 필드 (CONDITIONED LENGTH FIELD)[10 : 0]에 가산되어진다. 1514는 0,1로 입력되는 RCV FRAME SIZE[10 : 0]을 갖는 먹스(335)의 입력 2에 인입되어진다. MUX(335)의 Y출력은 뺄셈기(336)로 입력되는 프레임 길이(FRAME LENGTH)[10 : 0]이다. 프레임 길이(FRAME LENGTH)[10 : 0]은 다음에 전송길이(TRANSFER LENGTH)[10 : 0]에서 감산되어진다. 그 차는 다음에 비교기(337)의 입력 및 MUX(339)의 1 입력에 출력되어진다. LAST TD DATA LEN 은 업로드 바이트 카운트(UPLOAD BYTE COUNT) [10 : 0]이 MUX(338)의 1입력이고, 7FF(16진수)는 MUX(338)의 O입력이며 Y출력으로 출력하는 값을 선택한다. MUX(338)의 출력은 다음에 비교기(337)의 b입력 및 MUX(339)의 O입력으로 보내진다. 비교기(337)의 출력은 다음에 MUX(339)의 입력을 선택한다.
남은 바이트(BYTE REMAIN)[10 : 0]은 비교기(341)의 입력으로 입력되어지는 MUX(339)의 Y출력이다. 현 프레임은 현 수신(CUR FRAME IS CUR RCV)은 먹스 (MUX)(340)의 어느 입력이 선택되어지는지를 선택한다. 길이 레프트 한계(LENGTH LEFT THRESH)[10 : 0]은 1입력으로 입력되고 전송 완결 한계(XFER COMPLETE THRESH)[10 : 0]는 0입력으로 입력된다. MUX(310)의 Y출력은 다음에 비교기(341)의 b입력으로 입력되어진다. 비교기(341)의 출력은 남아있는 바이트[10 : 0]이 길이 레프트 한계(LENGTH LEFT THRESH)[10 : 0] 혹은 전송 완결 한계(XFER COMPLETE THRESH)[10 : 0]보다 크거나 혹은 같은 동안 구동되어진다. 비교기(341)의 출력은 다음에 XFER LENGTH RD 및 CYCLE DONE를 따라 AND 게이트(343)으로 입력되어진다. AND 게이트(342, 343)의 출력은 다음에 OR게이트(344)로 인입되어진다. OR게이트(344)의 출력은 업로드 DMA 리세트(UPLOAD DMA RESET)에 의해 세트되어지고 클럭(CLOCK) 신호로 동기화되어지는 레지스터(345)의 D 입력으로 입력되어진다. 레지스터(345)는 AND 게이트(342)로의 신호 피드백을 갖는 Q출력에서 XFER THRESH MET를 출력한다.
(VIII. 결론)
따라서, 본 발명은 지시 신호 조합에 의해 데이타 블럭 전송동안 호스트 시스템에 대한 인터럽트의 수를 감소시킨다. 지시 조합은 하나의 블럭 데이타의 전송 완결 인터럽트를 지연시키는 지시 조합 논리에 의해 달성되어짐으로써 예상되는 준비 지시의 발생이 전송되어질 제2블럭의 데이타에 의해 발생되어지기 전에 약간 발생하게 된다. 호스트 프로세서의 인터럽트 서비스 루틴은 다음에 준비 지시뿐만 아니라 제2인터럽트를 발생시킬 필요없이 전송 완결 인터럽트를 서비스할 수 있다.
바람직한 실시예에서는, 네트워트 어댑터에서의 수신 한계 논리는 초기 수신 지시를 발생시키기 전에 통신 네트워크에서부터 네트워크 어댑터로 얼마나 많은 데이타 프레임이 수신되는지를 결정하도록 구현되어진다. 더우기, 수신 한계 논리는 예견 한계 논리 및 길이-레프트 한계 논리를 포함한다. 예견 한계 논리는 예견 한계(LOOK AHEAD THRESH)레지스터내의 데이타의 예견 한계 양이 네트워크 어댑터에 의해 수신될 때 초기 수신(EARLY RCV)지시를 발생시킨다. 예견값은 수신되어진 데이타 양을 나타낸다.
네트워크 어댑터는 전송 완결(XFER COMPLETE)을 지연시키는 지시 조합 논리를 포함함으로서 초기 수신(EARLY RCV)지시의 예상된 발생전에 약간 발생되어지게 된다. 지시 조합 논리가 전송 한계 레지스터(XFER THRESH REGISTER)에서 데이타의 전송 한계량이 충촉되는지, 현 네트워크 어댑터 프레임은 수신되어지거나 혹은 전송 지시 지연(XFER INDICATION DELAY)이 충족되는지에 따라서 전송 완결 (XFER COMPLETE)를 발생시킨다.
전술한 지시신호는 호스트 프로세서가 지시신호의 타이밍을 동적으로 조절하도록 함에 의해 또한 최적화되어진다. 호스트 프로세서는 한계 레지스터에 대한 기록 억세스를 구비하고 네트워크 어댑터에 의해 포스트된 상태 정보에 기초하여 한계 레지스터내에 한계값을 변경시킨다. 포스트된 상태 정보는 호스트 프로세서가 그것이 지시에 의해 발생된 인터럽트에 대해 너무 빨리 혹은 너무 느리게 응답하는지를 경정하도록 한다.
본 발명의 바람직한 실시예의 전술한 설명은 예시 및 설명의 목적으로 제공되어진다. 개시되는 정확한 형태로 본 발명이 제한되거나 총망라되는 것은 아니다. 명백히, 수많은 수정 및 변형이 본 기술분야에 통상의 기술을 가진 사람에게 명백할 것이다. 실시에는 본 발명의 원리 및 그 실질적인 응용을 가장 잘 설명하도록 선택되고 설명되어지고, 따라서 본 기술분야에 숙련된 사람은 기대되는 다른 특정 용도에 적합하도록 다양한 수정 및 다양한 실시예로 본 발명을 이해할 수 있을 것이다. 본 발명의 범위는 다음의 청구항 및 그와 동등한 것에 의해 한정되어진다.
Claims (28)
- 버퍼 메모리와,제 1 및 제 2 데이타 블럭을 포함하고, 버퍼 메모리로부터 수신지 장치로 데이타 블럭을 전송하는 전송수단과,제 1 데이타 블럭의 전송 끝에 가까운 제 1 신호를 발생시키는 발생수단과,제 2 데이타 블럭의 전송 시작에 가까운 제 2 신호를 발생시키는 수단과,제2신호의 예상된 발생에 대해서 제1신호를 지연시키는 수단으로 구성된 것을 특징으로 하는 수신지 장치로의 데이타 블럭 전송의 지시 조합 장치.
- 제 1 항에 있어서, 그 장치는 호스트 시스템에 접속되어지고,제 1 신호에 응답하여 호스트 시스템에 인터럽트 신호를 발생시키고 호스트 시스템에 의해 사용되는 상태 정보를 포스트시키는 제어수단을 포함하는 것을 특징으로 하는 지시 조합 장치.
- 제2항에 있어서, 호스트 시스템은 인터럽트 신호에 응답하는 호스트 프로세서를 포함하고 제 1 신호 및 제 2 신호는 호스트 프로세서가 인터럽트 신호에 응답한 이후에 상태 졍보에 포함되어지는 것을 특징으로 하는 지시 조합 장치.
- 제 1 항에 있어서, 제 2 신호를 발생시키는 수단은,버퍼 메모리에 접속되어, 버퍼 메모리에 의해 수신된 데이타의 양을 계수하는 카운터와,준비 한계값을 포함하는 제 1 가변 기억장소와,카운터를 가변 기억장소내의 준비 한계값과 비교하고 카운터 및 준비 한계값을 포함하는 제 1 가변 기억장소의 비교에 응답하여 제 2 신호를 발생시키는 수단을 포함하는 것을 특징으로 하는 지시 조합 장치.
- 제 1 항에 있어서, 제 1 지시 신호를 지연시키는 수단은,전송 완결 지연 한계값을 포함하는 제2가변 기억장소와,카운터 및 전송완결 지연 한계값을 포함하는 제2가변 기억장소에 접속되어 카운터 및 제 2 가변 기억장소의 합을 출력하는 가산기와,가산기의 출력 및 준비 한계값을 포함하는 제 1 가변 기억장소에 접속되어, 카운터 및 준비 한계값을 포함하는 제 1 가변 기억장소에 응답하여 제 1 신호를 발생시키는 비교기를 포함하는 것을 특징으로 하는 지시 조합 장치.
- 네트워트에 접속되어 네트워크 트랜시버로부터 호스트 시스템으로 데이타 프레임 전송하는 데이타 프레임 전송 장치로서, 상기 장치는,데이타 프레임을 저장하는 버퍼 메모리와,일부 데이타 프레임의 수신에 응답하여 초기 수신 지시신호를 발생시키는 수신 한계 논리와,버퍼 메모리로부터 호스트 시스템으로 데이타 프레임을 전송하는 호스트 인터페이스 논리와,호스트 시스템으로 데이타 프레임의 전송에 응답하여 전송 완결 지시신호를 발생시키는 전송 완결 논리와,시간 주기동안 송신 완료 지시신호를 지연시키는 지시 조합 논리로 구성된 것을 특징으로 하는 데이타 프레임 전송 장치.
- 제 6 항에 있어서, 시간 주기는 인터-프레임 스페이싱 시간동안이고 데이타 프레임을 수신하기 전임을 특징으로 하는 프레임 전송 장치.
- 제6항에 있어서, 호스트 인터페이스 논리는,호스트 시스템으로부터 버퍼 메모리로 버퍼 메모리에서 데이타 프레임이 저장되어질 위치로 호스트 메모리에서의 위치를 확인시키는 전송 기술어를 맵핑시키는 전송 기술어 논리와,버퍼 메모리에서 전송 기술어에 응답하여 버퍼 메모리로부터 호스트 메로리로 프레임을 전송하는 업로드 논리를 포합하는 것을 특징으로 하는 프레임 전송 장치.
- 제6항에 있어서,전송 완결 지시신호에 응답하여 호스트 시스템으로 인터럽트신호를 발생시키고 호스트 시스템에 의해 사용되는 상태 정보를 포스트시키는 제어 수단을 포함하는 것을 특징으로 하는 프레임 전송 장치.
- 제6항에 있어서, 버퍼 메모리는 호스트 어드레스 스페이스와 무 관한 버퍼를 포함하는 것을 특징으로 하는 프레임 전송 장치.
- 제6항에 있어서, 수신 한계 논리는,버퍼 메모리에 접속되어, 버퍼 메모리에 의해 수신된 데이타의 양을 계수하는 카운터와,수신 한계값을 포함하는 제 1 가변 기억장치와,가변 기억장치내의 수신 한계값에 카운터를 비교하고 카운터 및 수신 한계값을 포함하는 제 1 가변 기역장치의 비교에 응답하여 초기 수신 지시신호를 발생시키는 수단을 포함하는 것을 특징으로 하는 프레임 전송 장치.
- 제 11 항에 있어서, 데이타 프레임은 수신지 어드레스를 포함하며, 데이타 필드에 의해 후속되는 헤더 필드를 포함하고, 수신 한계값은 헤더 필드의 시작과 관련된 데이타 양을 나타내는 예견 한계값인 것을 특징으로 하는 프레임 전송 장치.
- 제 12 항에 있어서. 시간 주기는 수신지 어드레스를 수신하는 동안인 것임을 특징으로 하는 프레임 전송 장치.
- 제 12 항에 있어서, 시간 주기는 데이타의 예견 한계값의 수신이 수신되기 전임을 특징으로 하는 프레임 전송 장치.
- 제6항에 있어서, 지시 조합 논리는,전송 완결 지연 한계값을 포함하는 제2가변 기억장치와,전송 완결 지연 한계값을 포함하는 제2가변 기억장치 및 카운터에 접속되어, 카운터및 제 2 가변 기억장치의 값의 합을 출력하는 가산기와,가산기 및 예견 한계값을 포함하는 제 1 가변 기억장소의 출력에 접속되어, 카운터 및 예견 한계값을 포함하는 제 1 가변 기억장소의 비교에 응답하여 전송 완결 지시신호를 발생시키는 비교기를 포함하는 것을 특징으로 하는 프레임 전송 장치.
- 네트워크 통신 매제 및 인터럽트 서비스 루틴 및 호스트 메모리를 갖는 호스트 프로세서를 포함하는 호스트 시스템에 접속되어, 네트워크통신 매체로부터 데이타 프레임을 수신하는 장치로, 상기 장치는,데이타 프레임을 저장하는 버퍼 메모리와,네트워크 통신 매체로부터 버퍼 메모리로 데이타 프레임을 수신하는 네트워크 인터페이스 논리와,일부 데이타 프레임의 수신에 응답하여 초기 수신 지시신호를 발생시키는 수신 한계 논리와,버퍼 메모리로부터 호스트 시스템으로 데이타 프레임올 전송하는 호스트 인터페이스 논리와,호스트 시스템으로의 데이타 프레임의 전송에 응답하여 전송 완결 지시신호를 발생시키는 전송 완결 논리와,초기 수신 혹은 전송 완결 지시에 응답하여 호스트 프로세서로 인터럽트 신호를 발생시키고 인터럽트 서비스 루틴동안 호스트 프로세서에 의해 판독되어지는 초기 수신 및 전송 완결 지시신호를 나타내는 상태 정보를 포스트하는 제어 수단과,전송 완결 지시신호의 발생 시간 주기동안 지연시키는 지시 조합 논리로 구성되는 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 16 항에 있어서, 수신 한계 논리는,버퍼 메모리에 접속되어, 버퍼 메모리에 의해 수신된 데이타 양을 계수하는 카운터와,수신 한계값을 포함하는 제 1 가변 기억장소와,카운터를 가변 기억장소내의 수신 한계값에 비교하여 카운터 및 수신 한계값을 포함하는 가변 기억장소의 비교에 응답하여 지시신호를 발생시키는 수단을 포함하는 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 17 항에 있어서, 데이타 프레임은 수신지 어드레스를 포함하고 데이타 필드에 의해 후속되는 헤더 필드를 포함하고, 수신 한계값은 헤더 필드의 시작과 관련된 데이타 양을 나타내는 예견 한계값인 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 18 항에 있어서, 시간 주기는 인터-프레임 스페이싱 시간동안이고, 데이타 프레임을 수신하기 전인 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 18 항에 있어서, 시간 주기는 수신지 어드레스를 수신하는 동안인 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 18 항에 있어서 시간 주기는 데이타의 예견 한계값을 수신하기 전인 것을 특징으로 하는 데이타 프레임 수신 장치.
- 제 17 항에 있어서, 지시 조합 논리는,전송 완결 지연 한계값을 포함하는 제2가변 기억장소와,카운터 및 전송 완결 지연 한계값을 포함하는 제2가변 기억장소에 접속되어, 카운터 및 제 2 가변 한계값의 합을 출력하는 가산기와,가산기의 출력 및 예견 한계값을 포함하는 제 1가변 기억장소의 출력에 접속되어, 카운터 및 예견 한계값을 포함하는 제 1 가변 기억장소의 비교에 대해서 전송 완결 지시신호를 발생시키는 수단을 포함하는 것을 특징으로 하는 데이타 프레임 수신 장치.
- 네트워크에 접속되어, 네트워크 트랜시버에서 버퍼 메모리로 데이타 프레임을 수신하고, 버퍼 메모리로부터 호스트 프로세서 및 호스트 메모리를 포함하는 호스트 시스템으로 데이타 프레임을 전송하고, 데이타 프레임 전송에 응답하여 인터럽트에 응답하고 네트워크 어댑터를 제공하는 호스트 프로세서로 인터럽트 신호를 발생시키는 네트워크 어댑터로서, 상기 네트워크 어댑터는,네트워크 트랜시버로부터 버퍼 메모리로 데이타 프레임을 수신하는 네트워크 인터페이스 논리와,데이타 프레임 수신에 응답하여 초기 수신 지시신호를 발생시키는 수신 한계 논리와,버퍼 메모리로부터 호스트 시스템으로 데이타 프레임을 수신하는 호스트 인터페이스 논리와,호스트 시스템으로 데이타 프레임 송신에 응답하는 전송 완결 지시신호를 발생시키는 전송 완결 논리와,전송 완결 지시신호에 응답하여 호스트 프로세서로 인터럽트 신호를 발생시키고 호스트 프로세서에 의해 판독되는 초기 수신 및 전송 완결 지시신호를 나타내는 상태 정보를 포스트하는 제어수단과,호스트 프로세서가 네트워크 어댑터를 제공하는 동안 초기 수신 지시가 발생하도록 전송 완결 지시신호를 지연시키는 지시 조합 논리로 구성되어지고,상기 수신 한계 논리는,버퍼 메모리에 접속되어, 버퍼 메모리에 의해 수신된 데이타 양을 계수하는 카운터와,수신 한계값을 포함하는 제 1 가변 기억장소와,가변 기억장소내의 수신 한계값과 카운터를 비교하여 카운터 및 수신 한계값을 포함하는 가변 기억 장소의 비교에 대한 지시 신호를 발생시키는 수단을 포함하는 것을 특징으로 하는 네트워크 어댑터.
- 제 23 항에 있어서, 데이타 필드는 수신지 어드레스를 포함하고 데이타 필드에 의해 후속되는 헤더 필드를 포함하고, 수신 한계값은 헤더 필드의 시작과 관련된 데이타 양을 나타내는 예견 한계값인 것을 특징으로 하는 네트워크 어댑터.
- 제24항에 있어서, 전송 완결 지시신호는 데이타 프레임 수신 이후 발생되는 것을 특징으로 하는 네트워크 어댑터.
- 제 24 항에 있어서. 전송 완결 지시신호는 수신지 어드레스 수신이후 발생되는 것을 특징으로 하는 네트워크 어댑터.
- 제 26 항에 있어서, 전송 완결 지시신호는 데이타의 예견 한계값이 수신된 후 발생되는 것을 특징으로 하는 네트워크 어댑터.
- 제24항에 있어서 지시 조합 논리는,전송 완결 지연 한계값을 포함하는 제2가변 기억장소와,제2카운터 및 전송 완결 지연 한계값을 포함하는 제2가변 기억장소에 접속되어, 카운터 및 가변 기억장소의 값의 합을 출력하는 가산기와,가산기의 출력 및 예견 한계값을 포함하는 제 1 가변 기억장소에 접속되어, 제 2 카운터 및 예견 한계값을 포함하는 가변 기억장소의 비교에 응답하여 전송 완결 지시신호를 발생시키는 비교기를 포함하는 것을 특징으로 하는 네트워크 어댑터.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/947773 | 1992-09-18 | ||
US07/947,773 US5319752A (en) | 1992-09-18 | 1992-09-18 | Device with host indication combination |
US7/947773 | 1992-09-18 | ||
PCT/US1993/008866 WO1994007201A1 (en) | 1992-09-18 | 1993-09-17 | A device with host indication combination |
Publications (2)
Publication Number | Publication Date |
---|---|
KR950703766A KR950703766A (ko) | 1995-09-20 |
KR100186928B1 true KR100186928B1 (ko) | 1999-05-15 |
Family
ID=25486742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950701048A KR100186928B1 (ko) | 1992-09-18 | 1993-09-17 | 호스트 지시 조합을 구비하는 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5319752A (ko) |
EP (1) | EP0660955B1 (ko) |
JP (1) | JP2584957B2 (ko) |
KR (1) | KR100186928B1 (ko) |
AU (1) | AU674341B2 (ko) |
CA (1) | CA2143951C (ko) |
DE (1) | DE69329684T2 (ko) |
WO (1) | WO1994007201A1 (ko) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412782A (en) | 1992-07-02 | 1995-05-02 | 3Com Corporation | Programmed I/O ethernet adapter with early interrupts for accelerating data transfer |
US5659690A (en) * | 1992-10-15 | 1997-08-19 | Adaptec, Inc. | Programmably configurable host adapter integrated circuit including a RISC processor |
US5530874A (en) * | 1993-02-02 | 1996-06-25 | 3Com Corporation | Network adapter with an indication signal mask and an interrupt signal mask |
US5623669A (en) * | 1993-07-21 | 1997-04-22 | International Business Machines Corporation | High speed online copy of partitioned data |
CA2144743C (en) * | 1993-07-28 | 2003-10-21 | Jeffrey Krause | Network station with multiple network addresses |
SG47794A1 (en) * | 1993-09-30 | 1998-04-17 | Intel Corp | Buffer memory management for a computer network node |
US5983275A (en) * | 1994-05-04 | 1999-11-09 | Cirrus Logic, Inc. | Apparatus for and method of providing interrupts to a host processor in a frame receiving system |
US6131176A (en) * | 1994-06-07 | 2000-10-10 | Unisys Corporation | On-the-fly data integrity transfer system handling mixed block sizes |
WO1996013925A1 (en) * | 1994-10-31 | 1996-05-09 | Alcatel N.V. | Communications protocol |
US5774745A (en) * | 1995-03-31 | 1998-06-30 | Cirrus Logic, Inc. | Method and apparatus for writing and reading entries in an event status queue of a host memory |
US5708814A (en) * | 1995-11-21 | 1998-01-13 | Microsoft Corporation | Method and apparatus for reducing the rate of interrupts by generating a single interrupt for a group of events |
US5881063A (en) * | 1996-04-08 | 1999-03-09 | Ford Motor Company | Half-message based multiplex communication interface circuit which uses a main microcontroller to detect a match in addresses and generate a qualified signal |
US6154794A (en) * | 1996-09-08 | 2000-11-28 | Silicon Graphics, Inc. | Upstream situated apparatus and method within a computer system for controlling data flow to a downstream situated input/output unit |
US5951644A (en) * | 1996-12-24 | 1999-09-14 | Apple Computer, Inc. | System for predicting and managing network performance by managing and monitoring resourse utilization and connection of network |
US5943479A (en) * | 1997-01-02 | 1999-08-24 | Digital Equipment Corporation | Method for reducing the rate of interrupts in a high speed I/O controller |
GB9704368D0 (en) * | 1997-03-03 | 1997-04-23 | Madge Networks Ltd | Interface device and method |
US6256660B1 (en) * | 1997-04-08 | 2001-07-03 | International Business Machines Corporation | Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts |
US6012121A (en) * | 1997-04-08 | 2000-01-04 | International Business Machines Corporation | Apparatus for flexible control of interrupts in multiprocessor systems |
US6167032A (en) * | 1997-11-07 | 2000-12-26 | International Business Machines Corporation | System and method for avoiding host transmit underruns in a communication network |
US6105079A (en) * | 1997-12-18 | 2000-08-15 | Advanced Micro Devices, Inc. | Apparatus and method in a network interface device for selectively supplying long bit information related to a data frame to a buffer memory and a read controller for initiation of data transfers |
US6061768A (en) * | 1997-12-18 | 2000-05-09 | Advanced Micro Devices, Inc. | Apparatus and method in a network interface device for storing tracking information indicating stored data status between contending memory controllers |
US6189066B1 (en) * | 1999-01-26 | 2001-02-13 | 3Com Corporation | System and method for dynamically selecting interrupt time interval threshold parameters |
US6529986B1 (en) * | 1999-01-26 | 2003-03-04 | 3Com Corporation | Interrupt optimization using storage time for peripheral component events |
US6192440B1 (en) * | 1999-01-26 | 2001-02-20 | 3Com Corporation | System and method for dynamically selecting interrupt storage time threshold parameters |
US6574694B1 (en) * | 1999-01-26 | 2003-06-03 | 3Com Corporation | Interrupt optimization using time between succeeding peripheral component events |
US6351785B1 (en) * | 1999-01-26 | 2002-02-26 | 3Com Corporation | Interrupt optimization using varying quantity threshold |
US6189067B1 (en) * | 1999-01-26 | 2001-02-13 | 3Com Corporation | System and method for dynamically selecting interrupt quantity threshold parameters |
US6434651B1 (en) * | 1999-03-01 | 2002-08-13 | Sun Microsystems, Inc. | Method and apparatus for suppressing interrupts in a high-speed network environment |
US6467008B1 (en) * | 1999-03-01 | 2002-10-15 | Sun Microsystems, Inc. | Method and apparatus for indicating an interrupt in a network interface |
US6311284B1 (en) * | 1999-03-15 | 2001-10-30 | Advanced Micro Devices, Inc. | Using an independent clock to coordinate access to registers by a peripheral device and a host system |
ATE390788T1 (de) * | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
US6631434B1 (en) * | 1999-11-15 | 2003-10-07 | Hewlett-Packard Development Company, L.P. | Dynamic early indication system for a computer |
US6629290B1 (en) * | 1999-12-29 | 2003-09-30 | Advanced Micro Devices, Inc. | Method and apparatus for automatic transmit verification |
US7861104B2 (en) * | 2001-08-24 | 2010-12-28 | Broadcom Corporation | Methods and apparatus for collapsing interrupts |
US20030219232A1 (en) * | 2001-10-01 | 2003-11-27 | Shu Lin | System and method for identifying data on a storage medium |
WO2003055247A2 (en) * | 2001-12-13 | 2003-07-03 | Matsushita Electric Industrial Co., Ltd. | Communications device, method and program for receiving process execution, and computer-readable recording medium having same program recorded thereon |
KR20040017656A (ko) * | 2002-08-23 | 2004-02-27 | 삼성전자주식회사 | 적은 수의 인터럽트를 이용하여 데이터를 처리하는인터페이스 카드 및 인터럽트 발생 방법 |
JP4931912B2 (ja) * | 2006-04-26 | 2012-05-16 | パナソニック株式会社 | 信号伝送方法、送受信装置及び通信システム |
US20140114653A1 (en) * | 2011-05-06 | 2014-04-24 | Nokia Corporation | Pitch estimator |
US9146776B1 (en) | 2011-08-16 | 2015-09-29 | Marvell International Ltd. | Systems and methods for controlling flow of message signaled interrupts |
US9128920B2 (en) * | 2011-11-30 | 2015-09-08 | Marvell World Trade Ltd. | Interrupt handling systems and methods for PCIE bridges with multiple buses |
US9043457B2 (en) | 2012-10-25 | 2015-05-26 | Qualcomm Incorporated | Dynamic adjustment of an interrupt latency threshold and a resource supporting a processor in a portable computing device |
US9224958B2 (en) | 2013-07-19 | 2015-12-29 | Universal Display Corporation | Organic electroluminescent materials and devices |
CN210839619U (zh) * | 2017-02-17 | 2020-06-23 | 马维尔亚洲私人有限公司 | 用于错误记录机制的系统 |
US10007695B1 (en) * | 2017-05-22 | 2018-06-26 | Dropbox, Inc. | Replication lag-constrained deletion of data in a large-scale distributed data storage system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3789365A (en) * | 1971-06-03 | 1974-01-29 | Bunker Ramo | Processor interrupt system |
JPS58134554A (ja) * | 1982-02-03 | 1983-08-10 | Nec Corp | 伝送路監視装置 |
US4866666A (en) * | 1984-10-29 | 1989-09-12 | Francisco Michael H | Method for maintaining data integrity during information transmission by generating indicia representing total number of binary 1's and 0's of the data |
US4680581A (en) * | 1985-03-28 | 1987-07-14 | Honeywell Inc. | Local area network special function frames |
US5101402A (en) * | 1988-05-24 | 1992-03-31 | Digital Equipment Corporation | Apparatus and method for realtime monitoring of network sessions in a local area network |
US5103446A (en) * | 1990-11-09 | 1992-04-07 | Moses Computers, Inc. | Local area network adaptive throughput control for instantaneously matching data transfer rates between personal computer nodes |
-
1992
- 1992-09-18 US US07/947,773 patent/US5319752A/en not_active Expired - Lifetime
-
1993
- 1993-09-17 DE DE69329684T patent/DE69329684T2/de not_active Expired - Lifetime
- 1993-09-17 KR KR1019950701048A patent/KR100186928B1/ko not_active IP Right Cessation
- 1993-09-17 WO PCT/US1993/008866 patent/WO1994007201A1/en active IP Right Grant
- 1993-09-17 AU AU49300/93A patent/AU674341B2/en not_active Expired
- 1993-09-17 CA CA002143951A patent/CA2143951C/en not_active Expired - Lifetime
- 1993-09-17 JP JP6508372A patent/JP2584957B2/ja not_active Expired - Lifetime
- 1993-09-17 EP EP93921684A patent/EP0660955B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO1994007201A1 (en) | 1994-03-31 |
CA2143951C (en) | 2001-01-02 |
JP2584957B2 (ja) | 1997-02-26 |
EP0660955B1 (en) | 2000-11-15 |
AU4930093A (en) | 1994-04-12 |
EP0660955A4 (en) | 1995-05-17 |
DE69329684T2 (de) | 2001-06-21 |
DE69329684D1 (de) | 2000-12-21 |
KR950703766A (ko) | 1995-09-20 |
US5319752A (en) | 1994-06-07 |
AU674341B2 (en) | 1996-12-19 |
JPH07507173A (ja) | 1995-08-03 |
CA2143951A1 (en) | 1994-03-31 |
EP0660955A1 (en) | 1995-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100186928B1 (ko) | 호스트 지시 조합을 구비하는 장치 | |
US5307459A (en) | Network adapter with host indication optimization | |
KR0161101B1 (ko) | 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터 | |
US5299313A (en) | Network interface with host independent buffer management | |
US5434872A (en) | Apparatus for automatic initiation of data transmission | |
US5687316A (en) | Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data | |
US5392406A (en) | DMA data path aligner and network adaptor utilizing same | |
WO1994019747A1 (en) | System for reading dynamically changing data |
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: 20011228 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |