EP0577115A2

Programmed I/O Ethernet adapter with early interrupts for accelerating data transfer.

Abstract

In a Local Area Network (LAN) system, an ethernet adapter exchanges data with a host through programmed I/O (PIO) and FIFO buffers. The receive PIO employs a DMA ring buffer backup so incoming packets can be copied directly into host memory when the PIO FIFO buffer is full. The adapter may be programmed to generate early receive interrupts when only a portion of a packet has been received from the network, so as to decrease latency. The adapter may also be programmed to generate a second early interrupt so that the copying of a large packet to the host may overlap reception of the packet end. The adapter to begin packet transmission before the packet is completely transferred from the host to the adapter, which further reduces latency. The minimal latency of the adapter allows it to employ receive and transmit FIFO buffers which are small enough to be contained within RAM internal to an Application Specific Integrated Circuit (ASIC) containing the transceiver, ethernet controller, FIFO control circuitry and the host interface as well.

EP0577115A2, drawing sheet 1
Sheet 1 of 9

Term

Term ended

Projected expiry passed 30 June 2013, 13.2 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

17 claims: 5 independent, 12 dependent

  1. 1
    A data communications adapter apparatus for coupling a host computer to a computer network employing communications media, the adapter comprising:a) a transceiver coupled to receive and transmit data over the media;b) a transmit data buffer;c) data transmit control circuitry coupled to said transceiver, to said transmit data buffer, and to said host computer, for generating a packet transmit signal causing said transceiver to begin transmitting data from said transmit data buffer over said communications media;d) a receive data buffer;and e) data receive control circuitry coupled to said transceiver, to said receive data buffer, and to said host computer, for storing data received by said transceiver in said receive data buffer, and for generating a receive interrupt signalling to said host computer that data has been received by said transceiver, wherein said data receive control circuitry is operative to generate a receive interrupt once said transceiver has received over said communications media a predetermined number of bytes of a data packet less than all of said data packet.
  2. 5
    A method of transferring a packet of data from a computer network communications media through an adapter to a host computer, said method comprising the steps of:a) receiving from said communications media through a transceiver and storing in an adapter receive buffer a predetermined first receive threshold number of bytes of said packet;b) thereupon generating a first early receive interrupt from said adapter to said host computer;and c) thereafter receiving from said communications media through said transceiver and storing in said adapter receive buffer a remainder of said packet.
  3. 11
    A method of transferring a packet of data from a host computer through an adapter to a computer network communications media, said method comprising the steps of:a) transferring from said host computer and storing in an adapter transmit buffer an early transmit threshold number of bytes of said packet;b) thereupon initiating transmission of said packet through said transceiver from said adapter transmit buffer to said computer network communications media;and c) receiving from said host computer and storing in said adapter receive buffer a remainder of said packet, at least partially in parallel with transmitting said packet through said transceiver from said adapter transmit buffer to said computer network communications media.
  4. 12
    A method of transferring through an adapter packets of data between a host computer and a computer network communications media, said method comprising the steps of:a) receiving from said communications media through said transceiver and storing in an adapter receive buffer a predetermined first receive threshold number of bytes of a first packet;b) thereupon generating a first early receive interrupt from said adapter to said host computer;c) receiving from said communications media through said transceiver and storing in said adapter receive buffer a remainder of said first packet;d) transferring from said host computer and storing in an adapter transmit buffer an early transmit threshold number of bytes of a second packet;e) thereupon initiating transmission of said second packet through said transceiver from said adapter transmit buffer to said computer network communications media;f) receiving from said host computer and storing in said adapter receive buffer a remainder of said second packet, at least partially in parallel with transmitting said second packet through said transceiver from said adapter transmit buffer to said computer network communications media.
  5. 15
    An electronic register stack structure for providing, for each of a plurality of actions, a condition represented by a predetermined number of condition flags, wherein said actions may have, upon completion, one of a first condition and at least one alternate condition, wherein a condition of one action at a time is currently accessible from said register stack structure, wherein the currently accessible condition may be removed from said register stack structure so as to make accessible a condition of a remaining action by popping said register stack structure, wherein storing conditions of said actions is halted upon an action having one of said at least one alternate condition, said register stack structure comprising:a) a condition register comprising said predetermined number of condition flags;b) a counter register;c) means for storing a condition for a new action to said register stack structure by modifying contents of said condition register as necessary to indicate said condition of said new action and incrementing said counter register, wherein said counter indicates whether said currently accessible condition is to be said condition of said new action or a condition of a remaining action;d) means for providing said currently accessible condition by i) if said counter indicates that said currently accessible condition is to be said condition of said new action, providing contents of said condition register, and ii) if said counter indicates that said currently accessible condition is to be a condition of a remaining action, providing said first condition;and e) means for popping said register stack structure by decrementing said counter.