US20030200363A1 - Adaptive messaging - Google Patents

Adaptive messaging Download PDF

Info

Publication number
US20030200363A1
US20030200363A1 US10/448,676 US44867603A US2003200363A1 US 20030200363 A1 US20030200363 A1 US 20030200363A1 US 44867603 A US44867603 A US 44867603A US 2003200363 A1 US2003200363 A1 US 2003200363A1
Authority
US
United States
Prior art keywords
data
transferred
input
request message
host device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/448,676
Inventor
William Futral
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US10/448,676 priority Critical patent/US20030200363A1/en
Publication of US20030200363A1 publication Critical patent/US20030200363A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Definitions

  • This invention relates generally to methods and apparatus for transferring data.
  • the present invention relates to methods and apparatus for efficiently passing I/O transaction messages and their associated data between a host device and a target device.
  • the data transfer performance of the server can be less than optimum because of the manner in which the input/output (I/O) subsystem of the server transfers data blocks to and from a connected network.
  • the transferred data may vary greatly from large pre-recorded contiguous blocks of image data, such as multimedia data from a CD-ROM, to much smaller heavily fragmented user data.
  • LANs local area networks
  • about 80% of the LAN packets are less than 200 bytes in length.
  • maximum size LAN packets which range anywhere from 1500 bytes to over 64000 bytes depending on the LAN technology.
  • a host device can transfer a data block to a target device by pushing it out to the target device all at once.
  • An advantage of this Apush@ method is that the I/O driver in the host device can be simple since it does not have to interact with the target device and can push out the data block as soon as it is able.
  • the push model works well with small data blocks that can be easily buffered in the I/O controller of the target device. However, the number and size of buffers in the I/O controller of the target device must be large enough to handle the biggest possible data blocks. If the biggest possible data block can be 1 or 2 megabytes for example, a problem exists in that a corresponding 1 or 2 megabyte buffer memory has to be provided within the target device. See FIG. 1. Such an excessive memory requirement is not cost effective. Accordingly, the push model is not feasible in many circumstances.
  • each transferred data block is limited to some predetermined size, e.g., 2 kilobytes
  • the buffer(s) in the target device can have a correspondingly limited size. See FIG. 2.
  • the problem with such an arrangement is that the limitation in block transmission size requires large blocks of data to be sliced into smaller network packets, with a header identifier attached to each of the smaller network packets. The smaller network packets are repeatedly sent until all of the data block has been transferred.
  • This solution increases the number of data transfers, the amount of data being transmitted across the network, is fixed to the size of the buffer, and also represents significant record-keeping problems since the bytes of the packets typically come from fragmented data blocks.
  • the I/O controller of the target device can process a script and pull the data from memory in the host device by continuously reading a command list according to the script.
  • a script For example, suppose the host device wishes to transfer a block of data out to a local area network over a network interface controller (NIC). The host device first stores the data block in internal memory and sends a message alerting the NIC of the output command. The NIC must decipher the message and then read host memory to obtain the address of the output command block. It must also read a pointer, which is the value representing an address within the host memory where the data associated with the output command can be found. (The pointer may be virtual or physical and the location of the data is not necessarily contiguous with the location of the command.
  • the data may be split, requiring a Scatter/Gather List (SGL) to describe the locations of the data.
  • SGL Scatter/Gather List
  • the NIC then goes to the address of host memory pointed to by the pointer.
  • the block of data is read from the host memory back to the NIC, which will require several more fetches.
  • the data is then subsequently transferred from the NIC to the network. Even if the host sets aside known areas for the command blocks in memory so that the NIC always knows the address of the command block, the NIC would still need to read the write command to know where the data is located and to perform the fetches to obtain the data.
  • Such a conventional data transfer procedure (illustrated generally in FIG. 3) of loading data in local memory and sending a command with pointer (step 1 ), waiting for and receiving a request for the data (step 2 ) and subsequently sending the data in response to the request (step 3 ) has substantial inherent latencies and delays.
  • the procedure is very inefficient and slows down the entire system since many processor cycles will pass before the data transfer is completed.
  • the latency incurred when transferring data to a network from a host device in this manner can greatly diminish the performance of the target device since it is usually unable to engage in other operations until the data transfer is complete.
  • This latency is longer and even more complicated when the host device is a server because there is so much competition for server resources including system memory, processor(s) and multiple I/O devices. Indeed, the lack of efficiency in transferring data blocks may have a larger effect on overall performance than the processor speed or other performance characteristics of the host device and other elements in the network. In particular, the buses and/or controller in the I/O subsystem connecting the host device to the network may be a bottleneck in transferring data over the network and the performance of the I/O subsystem needs to be improved.
  • the present invention is directed to the transfer of data between a host device and a target device.
  • a data transfer method adaptively transfers data from the host device to the target device across a channel-based interconnect. The method includes determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell for the channel-based interconnect. If the size of the data to be transferred is not greater than the maximum payload, then a single cell is transferred from the host device to the target device which includes all of the data. If the size of the data to be transferred is greater than the maximum payload, then a request message is transferred from the host device to the target device. The request message includes a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message. The target device transfers the remainder of the data from the host at the same time it starts processing the data in the request.
  • FIG. 1 is a chart generally illustrating a conventional Apush@ method of transferring data between a host device and a target device.
  • FIG. 2 is a chart illustrating a conventional variation of the push method in which the data is transferred between a host device and a target device sequentially in blocks of limited size.
  • FIG. 3 is a chart illustrating the steps of a conventional write operation in which data is transferred from a host device to a target device.
  • FIG. 4 is a diagram showing an example embodiment of the invention.
  • FIG. 5 is a chart illustrating the format of an I/O Request Message used in the example embodiment of the invention.
  • FIG. 6 is a chart illustrating the format of an I/O Reply Message used in the example embodiment of the invention.
  • FIG. 7 is a flow diagram of a hypothetical series of data transfer operations between a host device and a target device utilizing an adaptive messaging method according to the example embodiment of the invention.
  • An example embodiment of the present invention seeks to decrease the inefficiencies and latency of the data transfer to an input/output (I/O) unit in a server architecture, such as what occurs when an I/O data block is transferred between a processor and a network interface controller (NIC) for a local area network.
  • I/O input/output
  • NIC network interface controller
  • the example embodiment overcomes the disadvantages of conventional PCI compliant I/O adapters which generally cannot accomplish data transfers without the multiple steps of the load/store method illustrated in FIG. 3.
  • Computer systems generally have a processor, associated system memory, an input/output (I/O) device, and at least one bus, such as a PCI bus, connecting these components.
  • a server is a type of computer system having an architecture or otherwise designed to be able to support multiple I/O devices and to transfer data at high speed to other computer systems over a network. (Due to recent advances in the performance and flexibility of computer systems, many modem computers are servers under this definition.)
  • the example embodiment of the invention sets forth a data transfer where there is a channel-based switched fabric interconnect supporting remote direct memory access (RDMA) to virtual addresses, thus enabling protected, target-managed data transfer.
  • RDMA remote direct memory access
  • the example embodiment attempts to reduce the latency when an element of the host server, such as one of the processors, transfers a data block to a local area network over such a channel.
  • the method according to the example embodiment is not limited in its application to local area networks.
  • the method according to the example embodiment may be useful for transferring data among computers and other devices on various asynchronous networks, especially where latency may be critical. Consequently, the data may be transferred in network packets of different sizes depending on the target device and on various network characteristics such as the transfer protocol (for example, ethernet packets), etc.
  • the example application of the invention is in a network interface controller incorporated in the input/output unit of a server architecture.
  • a network interface controller incorporated in the input/output unit of a server architecture.
  • such an application is but one of several possible examples of the invention which may, of course, be applied to any host device or to any target device or in any pair of devices where an improvement in transferring data blocks between the devices is desired for whatever reason.
  • the switched fabric configuration between the host device and target device in the example embodiment is the Next Generation I/O (NGIO) architecture, Version 1.0, published Jul. 22, 1999.
  • the channel-based interconnect in the example embodiment is the Virtual Interface (VI) architecture described in the Virtual Interface Architecture Specification, Version 1.0, Dec. 16, 1997, jointly authored by Intel Corporation, Microsoft Corporation, and Compaq Computer corporation.
  • V Virtual Interface
  • the example embodiment and other embodiments of the invention may utilize any other architecture and channel-based interconnect which supports both message passing and remote direct memory access, such as the System I/O (SIO) architecture currently being developed as a standardization of NGIO with other architectures.
  • SIO System I/O
  • message passing refers to the transfer of data from one end of a channel to the other end wherein the unit receiving the data determines the desired location of the transferred data in its memory.
  • remote direct memory access allows the initiating end of a data transfer operation to identify the memory location at the receiving end of the channel where the data is retreived from or will be stored at the completion of the data transfer operation.
  • a channel is any means of transferring data, including but not limited to virtual channels, used to transfer data between two endpoints. While the example embodiment is an NGIO implementation and this channel definition is provided in the NGIO specification identified above, the present invention is not so limited. Furthermore, the terminology used in this application is consistent with the aforementioned NGIO specification, and other architectures may use different terminology to describe similar and corresponding aspects. For example, in NGIO, the smallest possible autonomous unit of data is called a cell, and a packet is made up of a number of such cells.
  • SIO uses the term Apacket@ to describe the smallest possible autonomous unit of data instead of Acell@ as in NGIO, and uses the term Amessage@ instead of Apacket@.
  • an SIO packet differs slightly from the corresponding NGIO cell.
  • An NGIO cell has a fixed header size and a fized maximum payload of 256 bytes.
  • An SIO packet has several headers of fixed length, but which are only conditionally present in the packet.
  • the payload of an SIO packet is a minimum of 256 bytes and the maximum payload is variable and negotiable.
  • each architecture has the characteristic that, for a data transfer in which the data size is larger than the payload of the smallest possible autonomous unit of data, the data to be transferred is broken up into multiple elements that go into the payloads of various cells and are transported across in a series of operations.
  • the traffic studied in local area networks typically has fragmented data in the first 64 bytes of transferred packets.
  • There are inefficiencies in the fragmentation and reassembly because the data cannot be processed at the receiving end until the last cell containing an element of the data is received.
  • Large transfers in particular, can hold up resources for a long time since there must be a validation that the entire payload is without uncorrectable errors. (Error correction information may be included in the cells in addition to the header and payload.)
  • host computer 400 has a device driver 401 which carries out the adaptive messaging method according to the example embodiment.
  • Data is transferred from host computer 400 to I/O unit 410 through a host channel adapter (HCA) 402 , and across a channel-based NGIO switching fabric (not shown).
  • HCA host channel adapter
  • An I/O controller 411 in I/O unit 410 interacts with device driver 401 to transfer data through a target channel adapter (TCA) 412 and across the channel-based NGIO switching fabric.
  • TCA target channel adapter
  • the switching fabric may contain many different switches and redundant paths throughout the fabric, such that a plurality of messages can be traveling through the switching fabric at any given time.
  • the switched fabric configuration can contain a plurality of channel adapters, such that there can be a multitude of different messages traveling through the fabric and where all of the various connected devices can continue operating while their messages are traveling through the switching fabric. Accordingly, the inherent delays in deciphering the command and transferring data in the several steps required in the conventional method shown in FIG. 3 are not experienced by the connected host and target devices, which can continue processing while the data is being transferred.
  • the data transfers are optimized through the host channel adapter 402 and target channel adapter 412 at all times. This helps avoid the processor or other elements of the host computer 400 or I/O unit 410 from having to expend system resources to accomplish transfer of data blocks since there may be access conflicts with other functions.
  • host computer 400 issues an output command, for example, it simply passes the same to the device driver 401 , which delivers an I/O Request Message, as illustrated in FIG. 5 and described below, to host channel adaptor 402 .
  • the host channel adapter 402 injects the I/O Request Message into the switched fabric such that the host computer 400 does not have to wait for acknowledgment or and locking of a system bus, but instead can go on to perform other processing operations.
  • I/O unit 410 is a network interface controller for a local area network (not shown) and functions as an intermediary in transfering data between host computer 400 and the local area network.
  • host computer 400 can be a server which operates as a host device when sending data over the local area network through I/O unit 410 or operates as a target device when receiving a data transfer over the local area network initiated by another device.
  • the I/O Request Message 500 includes a transaction header 501 and a payload 502 of 256 bytes.
  • the payload 502 has a first part 502 - 1 used for control information and a second part 502 - 2 used for data.
  • payload 502 can be divided up so that first part 502 - 1 consists of 32 bytes and second part 502 - 2 consists of 224 bytes. This is an example only and other divisions are permissible, although it is preferred that second part 502 - 2 has at least 200 bytes.
  • the adaptive messaging method of the example embodiment focuses on a single cell packet as the most efficient, effective, way of transferring data.
  • most of the data transfers are less than the 256 byte payload of NGIO cells, so that most LAN traffic can be accomodated by transferring single cell packets.
  • an I/O Request Message is always first transmitted from device driver 401 across the switched fabric to the I/O controller 411 .
  • the entire data block is immediately transferred by device driver 401 to I/O controller 411 in a single cell, effectively constituting a push operation for up to 224 bytes of data. Since the block size is less than a cell size, each transaction occurs as a single cell NGIO packet.
  • This method results in an immediate advantage compared to the conventional method shown in FIG. 3 which must have operations going in two opposite directions, plus a memory access.
  • the method of the example embodiment eliminates two of the three operations in the conventional method in FIG. 3 and at the same time improves the latency considerably because, at the time the I/O unit 410 is ready to operate on the transferred data, all of it is immediately available. This simplifies the processing at I/O controller 410 and avoids many of the problems associated with previous data transfer methods which attempted to predict and transfer data in advance so that I/O unit 410 would have all of the data as soon as possible for processing or transfer to an output queue for the local area network.
  • the host channel adapter 402 Since the first 224 bytes are always pushed, the host channel adapter 402 provides all of the scatter/gather capability in the NGIO hardware such that the data is immediately delivered to the target as one contiguous block of data. This minimizes the number of NGIO operations and transaction latency while improving the efficiency of data transfers.
  • the data block to be transferred can be large enough so that a single cell packet is not always sufficient to transfer all of the data. If the data block to be transferred is bigger than second part 502 - 2 of the NGIO cell, then a different I/O Request Message 500 is transferred from device driver 401 to I/O controller 411 .
  • the I/O Request Message in such an instance combines control information including a memory token pointer in first part 502 - 1 and up to 224 bytes of the data in second part 502 - 2 .
  • the memory token provides the I/O controller 411 with access to the memory location in host computer 400 of the rest of the data to be transfered.
  • the memory token in part 502 - 1 of the I/O Request Message can be of any one of a number of different formats, e.g., simply a series of bits indicating the address of the remaining left-over data in memory of host computer 400 .
  • the memory token consists of a virtual address and a memory handle.
  • the virtual address is determined by the host computer and when received as part of a RDMA read operation, it is converted by a translation table in the host computer into a physical address in memory.
  • the memory handle is determined by host channel adapter 402 and grants the RDMA read operation access to the location in memory.
  • the host channel adapter may require that the memory handle accompanying the RDMA read operation is the same as that included in the I/O Request Message to ensure that the initiator of the RDMA read operation is entitled to access to the data.
  • the memory handle may also indicate the privilege of the RDMA read operation to access the memory in host computer 400 .
  • the I/O controller 411 then immediately stores the data contained in second part 502 - 2 of the I/O Request Message in an internal buffer (not shown). It also recognizes from the control information that additional data will be required, whereupon it can, but does not necessarily, immediately instruct target channel adapter 412 to use the conditional RDMA read capability of the VI/NGIO channel-based interconnect (indicated by ( 2 ) in FIG. 4) to fetch the remaining data from the correct memory location of the host computer 400 by using the memory token in the control information.
  • the exact format of the conditional RDMA read operation is not an essential part of the invention and can be determined according to the switching fabric configuration and interconnect utilized in any particular embodiment of the invention.
  • An advantage of using the RDMA read operation is that the I/O controller 411 only has to provide the same 256 byte buffers rather than buffers for the total maximum size of a transferred data packet having a number of cells which can be very large as noted previously, thus reducing the cost of the I/O controller due to memory and increasing the performance/cost ratio of the I/O controller.
  • the network interface controllers be cost effective, exhibit low latency and high performance.
  • I/O controller 411 will initiate multiple RDMA read operations as necessary to retrieve the multiple pieces of the left-over data in the case of very large data transfers. This process is indicated by the dashed line at ( 2 ) in FIG. 4. In the example embodiment, I/O controller 411 schedules the RDMA read operations at a rate consistent with the resources on I/O unit 410 . In particular, it schedules the RDMA read operations at the rate that it and I/O unit 410 can best consume them thus increasing efficiency. When the RDMA read operations are completed, I/O controller 411 sends an I/O Reply Message, indicated by ( 3 ) in FIG. 4. As shown in FIG. 6, I/O Reply Message 600 consists of a transaction header 601 identifying the data transfer and a status part 602 indicating the completed status of the data transfer.
  • a key advantage of this example embodiment of the adaptive messaging method is the efficiency with which the I/O unit 410 can use its resources.
  • Host computers, especially servers typically have many gigabytes of memory and a large amount of data that is being transferred out to a network. But the amount of memory on an I/O controller 411 is relatively small in comparison.
  • the granularity of cells passed back and forth in the NGIO switching fabric allows the adaptive messaging method of the example embodiment to optimize use of buffers (not shown) in the I/O controller 411 .
  • FIG. 7 shows a flow diagram of a hypothetical series of data transfer operations between host computer 400 and I/O controller 411 (a network interface controller) and a LAN utilizing an adaptive messaging method according to the example embodiment of the invention.
  • I/O controller 411 a network interface controller
  • the flow diagram shows a series of lines representing a corresponding series of different data sends ( 1 )-( 4 ) from host computer 400 to I/O controller 411 .
  • sends ( 1 ) While send ( 1 ) is immediately forwarded on to the LAN, sends ( 2 ), ( 3 ) and ( 4 ) are delayed and held in a buffer to be forwarded to the LAN at a later point in time.
  • the shaded regions indicate that each transfer to LAN takes time itself.
  • FIG. 7 shows what may happen when one of the sends has data greater than 224 bytes.
  • the RDMA read for the data send having data in excess of 224 bytes is initiated immediately and, while the operation is taking place, the data for previously occurring send ( 2 ) is in the interim forwarded onto the LAN.
  • send ( 4 ) might be forwarded to the LAN while I/O controller 411 is waiting for send ( 3 ) data.
  • FIG. 7 illustrates strong ordering where send ( 4 ) is delayed until after send ( 3 ).
  • FIG. 7 is intended to be hypothetical and illustrative only of the ability of I/O controller 411 to schedule data transfer operations. Numerous different flows are of course possible.
  • the invention is not limited to the example embodiment illustrated in FIG. 4. Indeed, an advantage of the invention is that it is particularly useful and widely adaptable to any I/O device having latency in data transfer operations. In this way, data transfers can be efficient in both a server that has a great deal of network I/O interfaces and other interfaces.
  • the example embodiments will automatically adapt to transfer characteristics in which large blocks of data are generally asynchronously transferred as well as small blocks of data. Indeed, the example embodiments will adapt to any I/O data interface.

Abstract

In an example embodiment, a data transfer method adaptively transfers data from a host device to a target device across a channel-based interconnect. The method includes determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell for the channel-based interconnect. If the size of the data to be transferred is not greater than the maximum payload, then a single cell is transferred from the host device to the target device which includes all of the data. If the size of the data to be transferred is greater than the maximum payload, then a request message is transferred from the host device to the target device. The request message includes a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message.

Description

  • This application is a continuation application of Provisional Application Serial No. 60/135,259, filed on May 21, 1999.[0001]
  • BACKGROUND
  • 1. Field of the Invention [0002]
  • This invention relates generally to methods and apparatus for transferring data. In particular, the present invention relates to methods and apparatus for efficiently passing I/O transaction messages and their associated data between a host device and a target device. [0003]
  • 2. Description of the Related Art [0004]
  • Even though a host device such as a conventional server may perform optimally, the data transfer performance of the server can be less than optimum because of the manner in which the input/output (I/O) subsystem of the server transfers data blocks to and from a connected network. For example, the transferred data may vary greatly from large pre-recorded contiguous blocks of image data, such as multimedia data from a CD-ROM, to much smaller heavily fragmented user data. In local area networks (LANs), about 80% of the LAN packets are less than 200 bytes in length. Despite the prevalence of small data blocks, about 80% of the total amount of data is carried in maximum size LAN packets, which range anywhere from 1500 bytes to over 64000 bytes depending on the LAN technology. [0005]
  • A host device can transfer a data block to a target device by pushing it out to the target device all at once. An advantage of this Apush@ method is that the I/O driver in the host device can be simple since it does not have to interact with the target device and can push out the data block as soon as it is able. The push model works well with small data blocks that can be easily buffered in the I/O controller of the target device. However, the number and size of buffers in the I/O controller of the target device must be large enough to handle the biggest possible data blocks. If the biggest possible data block can be 1 or 2 megabytes for example, a problem exists in that a corresponding 1 or 2 megabyte buffer memory has to be provided within the target device. See FIG. 1. Such an excessive memory requirement is not cost effective. Accordingly, the push model is not feasible in many circumstances. [0006]
  • If each transferred data block is limited to some predetermined size, e.g., 2 kilobytes, then the buffer(s) in the target device can have a correspondingly limited size. See FIG. 2. The problem with such an arrangement is that the limitation in block transmission size requires large blocks of data to be sliced into smaller network packets, with a header identifier attached to each of the smaller network packets. The smaller network packets are repeatedly sent until all of the data block has been transferred. This solution increases the number of data transfers, the amount of data being transmitted across the network, is fixed to the size of the buffer, and also represents significant record-keeping problems since the bytes of the packets typically come from fragmented data blocks. [0007]
  • As an alternative to the push model, the I/O controller of the target device can process a script and pull the data from memory in the host device by continuously reading a command list according to the script. As an example, suppose the host device wishes to transfer a block of data out to a local area network over a network interface controller (NIC). The host device first stores the data block in internal memory and sends a message alerting the NIC of the output command. The NIC must decipher the message and then read host memory to obtain the address of the output command block. It must also read a pointer, which is the value representing an address within the host memory where the data associated with the output command can be found. (The pointer may be virtual or physical and the location of the data is not necessarily contiguous with the location of the command. Indeed, the data may be split, requiring a Scatter/Gather List (SGL) to describe the locations of the data.) The NIC then goes to the address of host memory pointed to by the pointer. The block of data is read from the host memory back to the NIC, which will require several more fetches. The data is then subsequently transferred from the NIC to the network. Even if the host sets aside known areas for the command blocks in memory so that the NIC always knows the address of the command block, the NIC would still need to read the write command to know where the data is located and to perform the fetches to obtain the data. [0008]
  • Such a conventional data transfer procedure (illustrated generally in FIG. 3) of loading data in local memory and sending a command with pointer (step [0009] 1), waiting for and receiving a request for the data (step 2) and subsequently sending the data in response to the request (step 3) has substantial inherent latencies and delays. The procedure is very inefficient and slows down the entire system since many processor cycles will pass before the data transfer is completed. The latency incurred when transferring data to a network from a host device in this manner can greatly diminish the performance of the target device since it is usually unable to engage in other operations until the data transfer is complete. This latency is longer and even more complicated when the host device is a server because there is so much competition for server resources including system memory, processor(s) and multiple I/O devices. Indeed, the lack of efficiency in transferring data blocks may have a larger effect on overall performance than the processor speed or other performance characteristics of the host device and other elements in the network. In particular, the buses and/or controller in the I/O subsystem connecting the host device to the network may be a bottleneck in transferring data over the network and the performance of the I/O subsystem needs to be improved.
  • SUMMARY
  • The present invention is directed to the transfer of data between a host device and a target device. A data transfer method adaptively transfers data from the host device to the target device across a channel-based interconnect. The method includes determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell for the channel-based interconnect. If the size of the data to be transferred is not greater than the maximum payload, then a single cell is transferred from the host device to the target device which includes all of the data. If the size of the data to be transferred is greater than the maximum payload, then a request message is transferred from the host device to the target device. The request message includes a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message. The target device transfers the remainder of the data from the host at the same time it starts processing the data in the request.[0010]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing and a better understanding of the present invention will become apparent from the following detailed description of example embodiments and the claims when read in connection with the accompanying drawings, all forming a part of the disclosure of the invention. While the foregoing and following written and illustrated disclosure focuses on disclosing example embodiments of the invention, it should be clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation. [0011]
  • FIG. 1 is a chart generally illustrating a conventional Apush@ method of transferring data between a host device and a target device. [0012]
  • FIG. 2 is a chart illustrating a conventional variation of the push method in which the data is transferred between a host device and a target device sequentially in blocks of limited size. [0013]
  • FIG. 3 is a chart illustrating the steps of a conventional write operation in which data is transferred from a host device to a target device. [0014]
  • FIG. 4 is a diagram showing an example embodiment of the invention. [0015]
  • FIG. 5 is a chart illustrating the format of an I/O Request Message used in the example embodiment of the invention. [0016]
  • FIG. 6 is a chart illustrating the format of an I/O Reply Message used in the example embodiment of the invention. [0017]
  • FIG. 7 is a flow diagram of a hypothetical series of data transfer operations between a host device and a target device utilizing an adaptive messaging method according to the example embodiment of the invention.[0018]
  • DETAILED DESCRIPTION
  • An example embodiment of the present invention seeks to decrease the inefficiencies and latency of the data transfer to an input/output (I/O) unit in a server architecture, such as what occurs when an I/O data block is transferred between a processor and a network interface controller (NIC) for a local area network. In particular, the example embodiment overcomes the disadvantages of conventional PCI compliant I/O adapters which generally cannot accomplish data transfers without the multiple steps of the load/store method illustrated in FIG. 3. Computer systems generally have a processor, associated system memory, an input/output (I/O) device, and at least one bus, such as a PCI bus, connecting these components. A server is a type of computer system having an architecture or otherwise designed to be able to support multiple I/O devices and to transfer data at high speed to other computer systems over a network. (Due to recent advances in the performance and flexibility of computer systems, many modem computers are servers under this definition.) [0019]
  • Although many conventional servers utilize PCI buses, the example embodiment of the invention sets forth a data transfer where there is a channel-based switched fabric interconnect supporting remote direct memory access (RDMA) to virtual addresses, thus enabling protected, target-managed data transfer. The example embodiment attempts to reduce the latency when an element of the host server, such as one of the processors, transfers a data block to a local area network over such a channel. However, the method according to the example embodiment is not limited in its application to local area networks. In particular, the method according to the example embodiment may be useful for transferring data among computers and other devices on various asynchronous networks, especially where latency may be critical. Consequently, the data may be transferred in network packets of different sizes depending on the target device and on various network characteristics such as the transfer protocol (for example, ethernet packets), etc. [0020]
  • The example application of the invention is in a network interface controller incorporated in the input/output unit of a server architecture. However, such an application is but one of several possible examples of the invention which may, of course, be applied to any host device or to any target device or in any pair of devices where an improvement in transferring data blocks between the devices is desired for whatever reason. [0021]
  • The switched fabric configuration between the host device and target device in the example embodiment is the Next Generation I/O (NGIO) architecture, Version 1.0, published Jul. 22, 1999. The channel-based interconnect in the example embodiment is the Virtual Interface (VI) architecture described in the Virtual Interface Architecture Specification, Version 1.0, Dec. 16, 1997, jointly authored by Intel Corporation, Microsoft Corporation, and Compaq Computer corporation. However, the example embodiment and other embodiments of the invention may utilize any other architecture and channel-based interconnect which supports both message passing and remote direct memory access, such as the System I/O (SIO) architecture currently being developed as a standardization of NGIO with other architectures. In this patent application, message passing refers to the transfer of data from one end of a channel to the other end wherein the unit receiving the data determines the desired location of the transferred data in its memory. In contrast, remote direct memory access (RDMA) allows the initiating end of a data transfer operation to identify the memory location at the receiving end of the channel where the data is retreived from or will be stored at the completion of the data transfer operation. [0022]
  • According to the present invention, a channel is any means of transferring data, including but not limited to virtual channels, used to transfer data between two endpoints. While the example embodiment is an NGIO implementation and this channel definition is provided in the NGIO specification identified above, the present invention is not so limited. Furthermore, the terminology used in this application is consistent with the aforementioned NGIO specification, and other architectures may use different terminology to describe similar and corresponding aspects. For example, in NGIO, the smallest possible autonomous unit of data is called a cell, and a packet is made up of a number of such cells. In contrast, SIO uses the term Apacket@ to describe the smallest possible autonomous unit of data instead of Acell@ as in NGIO, and uses the term Amessage@ instead of Apacket@. Furthermore, an SIO packet differs slightly from the corresponding NGIO cell. An NGIO cell has a fixed header size and a fized maximum payload of 256 bytes. An SIO packet has several headers of fixed length, but which are only conditionally present in the packet. Also, the payload of an SIO packet is a minimum of 256 bytes and the maximum payload is variable and negotiable. [0023]
  • Despite the differences in terminology noted in the previous paragraph, each architecture has the characteristic that, for a data transfer in which the data size is larger than the payload of the smallest possible autonomous unit of data, the data to be transferred is broken up into multiple elements that go into the payloads of various cells and are transported across in a series of operations. While the embodiments of the invention can be applied to any I/O technology, the traffic studied in local area networks typically has fragmented data in the first 64 bytes of transferred packets. There are inefficiencies in the fragmentation and reassembly because the data cannot be processed at the receiving end until the last cell containing an element of the data is received. Large transfers, in particular, can hold up resources for a long time since there must be a validation that the entire payload is without uncorrectable errors. (Error correction information may be included in the cells in addition to the header and payload.) [0024]
  • As shown in the NGIO example embodiment of FIG. 4, [0025] host computer 400 has a device driver 401 which carries out the adaptive messaging method according to the example embodiment. Data is transferred from host computer 400 to I/O unit 410 through a host channel adapter (HCA) 402, and across a channel-based NGIO switching fabric (not shown). An I/O controller 411 in I/O unit 410 interacts with device driver 401 to transfer data through a target channel adapter (TCA) 412 and across the channel-based NGIO switching fabric. The switching fabric may contain many different switches and redundant paths throughout the fabric, such that a plurality of messages can be traveling through the switching fabric at any given time. The switched fabric configuration can contain a plurality of channel adapters, such that there can be a multitude of different messages traveling through the fabric and where all of the various connected devices can continue operating while their messages are traveling through the switching fabric. Accordingly, the inherent delays in deciphering the command and transferring data in the several steps required in the conventional method shown in FIG. 3 are not experienced by the connected host and target devices, which can continue processing while the data is being transferred.
  • The data transfers are optimized through the [0026] host channel adapter 402 and target channel adapter 412 at all times. This helps avoid the processor or other elements of the host computer 400 or I/O unit 410 from having to expend system resources to accomplish transfer of data blocks since there may be access conflicts with other functions. When host computer 400 issues an output command, for example, it simply passes the same to the device driver 401, which delivers an I/O Request Message, as illustrated in FIG. 5 and described below, to host channel adaptor 402. The host channel adapter 402 injects the I/O Request Message into the switched fabric such that the host computer 400 does not have to wait for acknowledgment or and locking of a system bus, but instead can go on to perform other processing operations. In accordance with the implementation in the NGIO specification, once injected into the switched fabric, the I/O Request Message travels through the switches and eventually arrives at the target channel adapter 412 for I/O unit 410. Although not shown in FIG. 4, I/O unit 410 is a network interface controller for a local area network (not shown) and functions as an intermediary in transfering data between host computer 400 and the local area network. Of course, host computer 400 can be a server which operates as a host device when sending data over the local area network through I/O unit 410 or operates as a target device when receiving a data transfer over the local area network initiated by another device.
  • As shown in FIG. 5, the I/O Request Message [0027] 500 includes a transaction header 501 and a payload 502 of 256 bytes. The payload 502 has a first part 502-1 used for control information and a second part 502-2 used for data. As an example, payload 502 can be divided up so that first part 502-1 consists of 32 bytes and second part 502-2 consists of 224 bytes. This is an example only and other divisions are permissible, although it is preferred that second part 502-2 has at least 200 bytes.
  • The adaptive messaging method of the example embodiment focuses on a single cell packet as the most efficient, effective, way of transferring data. As noted in the background of the invention, most of the data transfers are less than the 256 byte payload of NGIO cells, so that most LAN traffic can be accomodated by transferring single cell packets. More specifically, as indicated by ([0028] 1) in FIG. 4, an I/O Request Message is always first transmitted from device driver 401 across the switched fabric to the I/O controller 411. For any particular data block to be transferred, it is determined in device driver 401 whether or not the total amount of data to be transferred is smaller than second part 502-2 of an NGIO cell. If it is, then the entire data block is immediately transferred by device driver 401 to I/O controller 411 in a single cell, effectively constituting a push operation for up to 224 bytes of data. Since the block size is less than a cell size, each transaction occurs as a single cell NGIO packet.
  • This method results in an immediate advantage compared to the conventional method shown in FIG. 3 which must have operations going in two opposite directions, plus a memory access. For small-sized data transfers, the method of the example embodiment eliminates two of the three operations in the conventional method in FIG. 3 and at the same time improves the latency considerably because, at the time the I/[0029] O unit 410 is ready to operate on the transferred data, all of it is immediately available. This simplifies the processing at I/O controller 410 and avoids many of the problems associated with previous data transfer methods which attempted to predict and transfer data in advance so that I/O unit 410 would have all of the data as soon as possible for processing or transfer to an output queue for the local area network. Since the first 224 bytes are always pushed, the host channel adapter 402 provides all of the scatter/gather capability in the NGIO hardware such that the data is immediately delivered to the target as one contiguous block of data. This minimizes the number of NGIO operations and transaction latency while improving the efficiency of data transfers.
  • Of course, the data block to be transferred can be large enough so that a single cell packet is not always sufficient to transfer all of the data. If the data block to be transferred is bigger than second part [0030] 502-2 of the NGIO cell, then a different I/O Request Message 500 is transferred from device driver 401 to I/O controller 411. The I/O Request Message in such an instance combines control information including a memory token pointer in first part 502-1 and up to 224 bytes of the data in second part 502-2. The memory token provides the I/O controller 411 with access to the memory location in host computer 400 of the rest of the data to be transfered.
  • The memory token in part [0031] 502-1 of the I/O Request Message can be of any one of a number of different formats, e.g., simply a series of bits indicating the address of the remaining left-over data in memory of host computer 400. In the example embodiment, the memory token consists of a virtual address and a memory handle. The virtual address is determined by the host computer and when received as part of a RDMA read operation, it is converted by a translation table in the host computer into a physical address in memory. The memory handle is determined by host channel adapter 402 and grants the RDMA read operation access to the location in memory. The host channel adapter may require that the memory handle accompanying the RDMA read operation is the same as that included in the I/O Request Message to ensure that the initiator of the RDMA read operation is entitled to access to the data. In advanced memory handle techniques, the memory handle may also indicate the privilege of the RDMA read operation to access the memory in host computer 400.
  • The I/[0032] O controller 411 then immediately stores the data contained in second part 502-2 of the I/O Request Message in an internal buffer (not shown). It also recognizes from the control information that additional data will be required, whereupon it can, but does not necessarily, immediately instruct target channel adapter 412 to use the conditional RDMA read capability of the VI/NGIO channel-based interconnect (indicated by (2) in FIG. 4) to fetch the remaining data from the correct memory location of the host computer 400 by using the memory token in the control information. The exact format of the conditional RDMA read operation is not an essential part of the invention and can be determined according to the switching fabric configuration and interconnect utilized in any particular embodiment of the invention. An advantage of using the RDMA read operation is that the I/O controller 411 only has to provide the same 256 byte buffers rather than buffers for the total maximum size of a transferred data packet having a number of cells which can be very large as noted previously, thus reducing the cost of the I/O controller due to memory and increasing the performance/cost ratio of the I/O controller. Especially in the local area network environment of the example embodiment, it is important that the network interface controllers be cost effective, exhibit low latency and high performance.
  • After the initial RDMA read operation, I/[0033] O controller 411 will initiate multiple RDMA read operations as necessary to retrieve the multiple pieces of the left-over data in the case of very large data transfers. This process is indicated by the dashed line at (2) in FIG. 4. In the example embodiment, I/O controller 411 schedules the RDMA read operations at a rate consistent with the resources on I/O unit 410. In particular, it schedules the RDMA read operations at the rate that it and I/O unit 410 can best consume them thus increasing efficiency. When the RDMA read operations are completed, I/O controller 411 sends an I/O Reply Message, indicated by (3) in FIG. 4. As shown in FIG. 6, I/O Reply Message 600 consists of a transaction header 601 identifying the data transfer and a status part 602 indicating the completed status of the data transfer.
  • A key advantage of this example embodiment of the adaptive messaging method is the efficiency with which the I/[0034] O unit 410 can use its resources. Host computers, especially servers, typically have many gigabytes of memory and a large amount of data that is being transferred out to a network. But the amount of memory on an I/O controller 411 is relatively small in comparison. The granularity of cells passed back and forth in the NGIO switching fabric allows the adaptive messaging method of the example embodiment to optimize use of buffers (not shown) in the I/O controller 411.
  • FIG. 7 shows a flow diagram of a hypothetical series of data transfer operations between [0035] host computer 400 and I/O controller 411 (a network interface controller) and a LAN utilizing an adaptive messaging method according to the example embodiment of the invention. As mentioned before, even though the I/O controller 411 can immediately initiate a RDMA read operation, it may delay doing so if its buffers are full or if it is preoccupied with other processing tasks. The flow diagram shows a series of lines representing a corresponding series of different data sends (1)-(4) from host computer 400 to I/O controller 411. While send (1) is immediately forwarded on to the LAN, sends (2), (3) and (4) are delayed and held in a buffer to be forwarded to the LAN at a later point in time. The shaded regions indicate that each transfer to LAN takes time itself.
  • FIG. 7 shows what may happen when one of the sends has data greater than [0036] 224 bytes. The RDMA read for the data send having data in excess of 224 bytes is initiated immediately and, while the operation is taking place, the data for previously occurring send (2) is in the interim forwarded onto the LAN. Depending on ordering rule, send (4) might be forwarded to the LAN while I/O controller 411 is waiting for send (3) data. FIG. 7 illustrates strong ordering where send (4) is delayed until after send (3). FIG. 7 is intended to be hypothetical and illustrative only of the ability of I/O controller 411 to schedule data transfer operations. Numerous different flows are of course possible.
  • Although an example embodiment, the invention is not limited to the example embodiment illustrated in FIG. 4. Indeed, an advantage of the invention is that it is particularly useful and widely adaptable to any I/O device having latency in data transfer operations. In this way, data transfers can be efficient in both a server that has a great deal of network I/O interfaces and other interfaces. The example embodiments will automatically adapt to transfer characteristics in which large blocks of data are generally asynchronously transferred as well as small blocks of data. Indeed, the example embodiments will adapt to any I/O data interface. [0037]
  • Other features of the invention may be apparent to those skilled in the art from the detailed description of the example embodiments and claims when read in connection with the accompanying drawings. While the foregoing and following written and illustrated disclosure focuses on disclosing example embodiments of the invention, it should be understood that the same is by way of illustration and example only, is not to be taken by way of limitation and may be modified in learned practice of the invention. While the foregoing has described what are considered to be example embodiments of the invention, it is understood that various modifications may be made therein and that the invention may be implemented in various forms and embodiments, and that it may be applied in numerous applications, only some of which have been described herein. It is intended by the following claims to claim all such modifications and variations. [0038]

Claims (23)

1. A method of adaptively transferring data from a host device to a target device across a channel-based interconnect, said method comprising:
determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell for the channel-based interconnect;
if the size of the data to be transferred is not greater than said maximum payload, then transferring a single cell from the host device to the target device which includes all of the data to be transferred; and
if the size of the data to be transferred is greater than said maximum payload, then transferring a request message from the host device to the target device, said request message including a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message.
2. The method recited in claim 1, wherein said control information includes a memory token.
3. The method recited in claim 2, wherein the target device, in response to the control information, initiates a remote direct memory access read operation for a part of the data not included in said request message at a memory location in the host device identified by the memory token.
4. The method recited in claim 3, wherein said memory token includes a memory handle granting said target device access to said memory location in the host device.
5. The method recited in claim 3, wherein the target device initiates the remote direct memory access read operation as an immediate response to the control information in the request message.
6. The method recited in claim 3, wherein the target device schedules the remote direct memory access read operation as an immediate response to the control information in the request message and later initiates the remote direct memory access read operation.
7. The method recited in claim 3, wherein the target device initiates a plurality of remote direct memory access read operations for the remainder of the data not included in said request message.
8. The method recited in claim 7, wherein the target device sends a reply message to the host device as soon as the remainder of the data included in said request message is transferred by said plurality of remote direct memory access read operations.
9. A host device configured to initiate the transfer of data to a target device, said host device comprising:
a processor;
a memory accessible by said processor; and
a device driver connected to said processor and said memory, said device driver adapted to control the transfer of data to said target device by: determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell of a channel-based interconnect connecting the host device and the target device; if the size of the data to be transferred is not greater than said maximum payload, then transferring a single cell from the host device to the target device which includes all of the data to be transferred; and if the size of the data to be transferred is greater than said maximum payload, then transferring a request message from the host device to the target device, said request message including a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message.
10. The host device recited in claim 9, wherein said control information includes a memory token.
11. The host device recited in claim 10, wherein said device driver transfers, in response to a remote direct memory access read request received from said target device, an additional part of the data stored in said memory.
12. The host device recited in claim 11, wherein said device driver confirms the validity of a memory token included with the remote direct memory access read request and transfers the additional part of the data stored at the address location of said memory identified by said memory token.
13. The host device recited in claim 12, wherein the memory token includes a memory handle granting said target device access to said memory location in the host.
14. An input/output unit configured to transfer data to and from a host device across a channel-based interconnect, said input/output unit comprising:
a target channel adapter adapted to send and receive messages from said channel-based interconnect; and
an input/output controller adapted to transfer data according to an adaptive messaging method of receiving data from said host device, said method comprising: determining whether or not the size of the data to be transferred is greater than the maximum payload of a cell for the channel-based interconnect; if the size of the data to be transferred is not greater than said maximum payload, then transferring a single cell from the host device to the input/output unit which includes all of the data to be transferred; and if the size of the data to be transferred is greater than said maximum payload, then transferring a request message from the host device to the input/output unit, said request message including a portion of said data to be transferred and control information indicating that not all of the data to be transferred is included in the request message.
15. The input/output unit recited in claim 14, wherein said control information includes a memory token.
16. The input/output unit recited in claim 15, wherein the input/output controller, in response to the control information, initiates a remote direct memory access read operation for a part of the data not included in said request message at a memory location in the host device identified by the memory token.
17. The input/output unit recited in claim 16, wherein said memory token includes a memory handle granting said input/output unit access to said memory location in the host device.
18. The input/output unit recited in claim 16, wherein the input/output controller initiates the remote direct memory access read operation as an immediate response to the control information in the request message.
19. The input/output unit recited in claim 16, wherein the input/output unit controller schedules the remote direct memory access read operation as an immediate response to the control information in the request message and later initiates the remote direct memory access read operation.
20. The input/output unit recited in claim 16, wherein the input/output controller initiates a plurality of remote direct memory access read operations for the remainder of the data not included in said request message.
21. The input/output unit recited in claim 20, further comprising a plurality of buffers and an output queue, wherein the input/output controller schedules the plurality of remote direct memory access read operations in accordance with the status of said buffers and output queue.
22. The input/output unit recited in claim 20, wherein the input/output controller sends a reply upon completion of said plurality of remote direct memory access read operation for the remainder of the data not included in said request message.
23. The input/output unit recited in claim 20, wherein the input/output unit transfers each send message to a local area network and sends a reply upon completion of each message transferred to the local area network.
US10/448,676 1999-05-21 2003-05-29 Adaptive messaging Abandoned US20030200363A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/448,676 US20030200363A1 (en) 1999-05-21 2003-05-29 Adaptive messaging

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13525999P 1999-05-21 1999-05-21
US09/461,237 US6615282B1 (en) 1999-05-21 1999-12-16 Adaptive messaging
US10/448,676 US20030200363A1 (en) 1999-05-21 2003-05-29 Adaptive messaging

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/461,237 Continuation US6615282B1 (en) 1999-05-21 1999-12-16 Adaptive messaging

Publications (1)

Publication Number Publication Date
US20030200363A1 true US20030200363A1 (en) 2003-10-23

Family

ID=27767404

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/461,237 Expired - Fee Related US6615282B1 (en) 1999-05-21 1999-12-16 Adaptive messaging
US10/448,676 Abandoned US20030200363A1 (en) 1999-05-21 2003-05-29 Adaptive messaging

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/461,237 Expired - Fee Related US6615282B1 (en) 1999-05-21 1999-12-16 Adaptive messaging

Country Status (1)

Country Link
US (2) US6615282B1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192516A1 (en) * 2006-02-16 2007-08-16 Standard Microsystems Corporation Virtual FIFO automatic data transfer mechanism
US20080318607A1 (en) * 2005-08-22 2008-12-25 Torsner Per Johan Combined Contention and Scheduling Based Uplink for S3g
US20130036339A1 (en) * 2011-08-01 2013-02-07 Atsushi Shiraishi Memory device
US8780168B2 (en) 2011-12-16 2014-07-15 Logitech Europe S.A. Performing DMA transfer of audio and video data received over a serial bus
US8996730B1 (en) * 2009-06-17 2015-03-31 Qlogic, Corporation System and method to restore maximum payload size in a network adapter
US9973446B2 (en) 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US20220231962A1 (en) * 2019-05-23 2022-07-21 Hewlett Packard Enterprise Development Lp System and method for facilitating data request management in a network interface controller (nic)
US11968116B2 (en) 2020-03-23 2024-04-23 Hewlett Packard Enterprise Development Lp Method and system for facilitating lossy dropping and ECN marking

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020490A (en) * 1998-07-01 2000-01-21 Fujitsu Ltd Computer having remote procedure calling mechanism or object request broker mechanism, data transfer method and transfer method storage medium
US6615282B1 (en) * 1999-05-21 2003-09-02 Intel Corporation Adaptive messaging
US6542941B1 (en) * 1999-09-30 2003-04-01 Intel Corporation Efficient command delivery and data transfer
US7624156B1 (en) * 2000-05-23 2009-11-24 Intel Corporation Method and system for communication between memory regions
US7062501B1 (en) * 2001-08-08 2006-06-13 Adaptec, Inc. Structure and method for linking scatter/gather list segments for host adapters
US7328284B2 (en) * 2002-05-06 2008-02-05 Qlogic, Corporation Dynamic configuration of network data flow using a shared I/O subsystem
US7356608B2 (en) * 2002-05-06 2008-04-08 Qlogic, Corporation System and method for implementing LAN within shared I/O subsystem
US7404012B2 (en) 2002-05-06 2008-07-22 Qlogic, Corporation System and method for dynamic link aggregation in a shared I/O subsystem
US7447778B2 (en) * 2002-05-06 2008-11-04 Qlogic, Corporation System and method for a shared I/O subsystem
JP4402370B2 (en) * 2003-05-14 2010-01-20 キヤノン株式会社 Service providing apparatus and information processing method
CN100401724C (en) * 2005-12-15 2008-07-09 华为技术有限公司 Method and device for transfer immediate news
US8832217B2 (en) 2011-09-29 2014-09-09 Oracle International Corporation System and method for supporting different message queues in a transactional middleware machine environment
US9690638B2 (en) 2011-09-29 2017-06-27 Oracle International Corporation System and method for supporting a complex message header in a transactional middleware machine environment
US9116761B2 (en) * 2011-09-29 2015-08-25 Oracle International Corporation System and method for preventing single-point bottleneck in a transactional middleware machine environment
CN103227778B (en) * 2013-03-26 2016-09-14 华为技术有限公司 Memory pool access method, equipment and system
US10554548B2 (en) * 2016-06-30 2020-02-04 Futurewei Technologies, Inc. Partially deferred packet access
US10248357B2 (en) * 2017-07-06 2019-04-02 Seagate Technology Llc Data storage system with hardware-based message routing
WO2019022631A1 (en) * 2017-07-27 2019-01-31 EMC IP Holding Company LLC Storing data in slices of different sizes within different storage tiers
US11636059B2 (en) * 2020-03-31 2023-04-25 Samsung Electronics Co., Ltd. Scaling performance in a storage server with storage devices
US11604748B2 (en) * 2020-10-30 2023-03-14 Microsoft Technology Licensing, Llc Interconnect for direct memory access controllers

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489378A (en) * 1981-06-05 1984-12-18 International Business Machines Corporation Automatic adjustment of the quantity of prefetch data in a disk cache operation
US4860193A (en) * 1986-05-22 1989-08-22 International Business Machines Corporation System for efficiently transferring data between a high speed channel and a low speed I/O device
US5038277A (en) * 1983-11-07 1991-08-06 Digital Equipment Corporation Adjustable buffer for data communications in a data processing system
US5208810A (en) * 1990-10-10 1993-05-04 Seiko Corp. Method of data flow control
US5271009A (en) * 1990-02-15 1993-12-14 Fujitsu Limited Data transfer method performed in a data processor provided in a switching system
US5475433A (en) * 1993-04-15 1995-12-12 Samsung Electronics Co., Ltd. Fuzzy-controlled coding method and apparatus therefor
US5550957A (en) * 1994-12-07 1996-08-27 Lexmark International, Inc. Multiple virtual printer network interface
US5777624A (en) * 1996-01-02 1998-07-07 Intel Corporation Method and apparatus for eliminating visual artifacts caused by diffusing errors in a decimated video signal
US5937436A (en) * 1996-07-01 1999-08-10 Sun Microsystems, Inc Network interface circuit including an address translation unit and flush control circuit and method for checking for invalid address translations
US6047340A (en) * 1996-11-20 2000-04-04 Matsushita Electric Industrial Co., Ltd. Method for transmitting data, and apparatus for transmitting data and medium
US6112263A (en) * 1997-12-15 2000-08-29 Intel Corporation Method for multiple independent processes controlling access to I/O devices in a computer system
US6125433A (en) * 1990-06-26 2000-09-26 Lsi Logic Corporation Method of accomplishing a least-recently-used replacement scheme using ripple counters
US6185607B1 (en) * 1998-05-26 2001-02-06 3Com Corporation Method for managing network data transfers with minimal host processor involvement
US6260129B1 (en) * 1998-09-08 2001-07-10 International Business Machines Corportion Management of fixed pages in memory for input/output operations
US6279140B1 (en) * 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6324178B1 (en) * 1998-05-26 2001-11-27 3Com Corporation Method for efficient data transfers between domains of differing data formats
US6423778B1 (en) * 1999-06-30 2002-07-23 Basf Corporation Process for coating olefinic substrates
US6507586B1 (en) * 1997-09-18 2003-01-14 International Business Machines Corporation Multicast data transmission over a one-way broadband channel
US6615282B1 (en) * 1999-05-21 2003-09-02 Intel Corporation Adaptive messaging

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5633870A (en) 1995-07-07 1997-05-27 Sun Microsystems, Inc. Method and apparatus for controlling data flow through an ATM interface

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489378A (en) * 1981-06-05 1984-12-18 International Business Machines Corporation Automatic adjustment of the quantity of prefetch data in a disk cache operation
US5038277A (en) * 1983-11-07 1991-08-06 Digital Equipment Corporation Adjustable buffer for data communications in a data processing system
US4860193A (en) * 1986-05-22 1989-08-22 International Business Machines Corporation System for efficiently transferring data between a high speed channel and a low speed I/O device
US5271009A (en) * 1990-02-15 1993-12-14 Fujitsu Limited Data transfer method performed in a data processor provided in a switching system
US6125433A (en) * 1990-06-26 2000-09-26 Lsi Logic Corporation Method of accomplishing a least-recently-used replacement scheme using ripple counters
US5208810A (en) * 1990-10-10 1993-05-04 Seiko Corp. Method of data flow control
US5475433A (en) * 1993-04-15 1995-12-12 Samsung Electronics Co., Ltd. Fuzzy-controlled coding method and apparatus therefor
US5550957A (en) * 1994-12-07 1996-08-27 Lexmark International, Inc. Multiple virtual printer network interface
US5777624A (en) * 1996-01-02 1998-07-07 Intel Corporation Method and apparatus for eliminating visual artifacts caused by diffusing errors in a decimated video signal
US5937436A (en) * 1996-07-01 1999-08-10 Sun Microsystems, Inc Network interface circuit including an address translation unit and flush control circuit and method for checking for invalid address translations
US6047340A (en) * 1996-11-20 2000-04-04 Matsushita Electric Industrial Co., Ltd. Method for transmitting data, and apparatus for transmitting data and medium
US6507586B1 (en) * 1997-09-18 2003-01-14 International Business Machines Corporation Multicast data transmission over a one-way broadband channel
US6112263A (en) * 1997-12-15 2000-08-29 Intel Corporation Method for multiple independent processes controlling access to I/O devices in a computer system
US6185607B1 (en) * 1998-05-26 2001-02-06 3Com Corporation Method for managing network data transfers with minimal host processor involvement
US6324178B1 (en) * 1998-05-26 2001-11-27 3Com Corporation Method for efficient data transfers between domains of differing data formats
US6260129B1 (en) * 1998-09-08 2001-07-10 International Business Machines Corportion Management of fixed pages in memory for input/output operations
US6279140B1 (en) * 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6615282B1 (en) * 1999-05-21 2003-09-02 Intel Corporation Adaptive messaging
US6423778B1 (en) * 1999-06-30 2002-07-23 Basf Corporation Process for coating olefinic substrates

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080318607A1 (en) * 2005-08-22 2008-12-25 Torsner Per Johan Combined Contention and Scheduling Based Uplink for S3g
US9179474B2 (en) * 2005-08-22 2015-11-03 Telefonaktiebolaget L M Ericsson (Publ) Combined contention and scheduling based uplink for S3g
US9913257B2 (en) 2005-08-22 2018-03-06 Telefonaktiebolaget Lm Ericsson (Publ) Communications systems
US20070192516A1 (en) * 2006-02-16 2007-08-16 Standard Microsystems Corporation Virtual FIFO automatic data transfer mechanism
US8996730B1 (en) * 2009-06-17 2015-03-31 Qlogic, Corporation System and method to restore maximum payload size in a network adapter
US9973446B2 (en) 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US10880235B2 (en) 2009-08-20 2020-12-29 Oracle International Corporation Remote shared server peripherals over an ethernet network for resource virtualization
US20130036339A1 (en) * 2011-08-01 2013-02-07 Atsushi Shiraishi Memory device
US9183143B2 (en) * 2011-08-01 2015-11-10 Kabushiki Kaisha Toshiba Memory device that specifies a size of a segment of write data
US8780168B2 (en) 2011-12-16 2014-07-15 Logitech Europe S.A. Performing DMA transfer of audio and video data received over a serial bus
US11777843B2 (en) 2019-05-23 2023-10-03 Hewlett Packard Enterprise Development Lp System and method for facilitating data-driven intelligent network
US11855881B2 (en) 2019-05-23 2023-12-26 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient packet forwarding using a message state table in a network interface controller (NIC)
US11750504B2 (en) 2019-05-23 2023-09-05 Hewlett Packard Enterprise Development Lp Method and system for providing network egress fairness between applications
US11757764B2 (en) 2019-05-23 2023-09-12 Hewlett Packard Enterprise Development Lp Optimized adaptive routing to reduce number of hops
US11757763B2 (en) 2019-05-23 2023-09-12 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient host memory access from a network interface controller (NIC)
US11765074B2 (en) 2019-05-23 2023-09-19 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid message matching in a network interface controller (NIC)
US20220231962A1 (en) * 2019-05-23 2022-07-21 Hewlett Packard Enterprise Development Lp System and method for facilitating data request management in a network interface controller (nic)
US11784920B2 (en) 2019-05-23 2023-10-10 Hewlett Packard Enterprise Development Lp Algorithms for use of load information from neighboring nodes in adaptive routing
US11799764B2 (en) 2019-05-23 2023-10-24 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient packet injection into an output buffer in a network interface controller (NIC)
US11818037B2 (en) 2019-05-23 2023-11-14 Hewlett Packard Enterprise Development Lp Switch device for facilitating switching in data-driven intelligent network
US11848859B2 (en) 2019-05-23 2023-12-19 Hewlett Packard Enterprise Development Lp System and method for facilitating on-demand paging in a network interface controller (NIC)
EP3942398A4 (en) * 2019-05-23 2023-04-05 Hewlett Packard Enterprise Development LP System and method for facilitating data request management in a network interface controller (nic)
US11863431B2 (en) 2019-05-23 2024-01-02 Hewlett Packard Enterprise Development Lp System and method for facilitating fine-grain flow control in a network interface controller (NIC)
US11876702B2 (en) 2019-05-23 2024-01-16 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient address translation in a network interface controller (NIC)
US11876701B2 (en) 2019-05-23 2024-01-16 Hewlett Packard Enterprise Development Lp System and method for facilitating operation management in a network interface controller (NIC) for accelerators
US11882025B2 (en) 2019-05-23 2024-01-23 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient message matching in a network interface controller (NIC)
US11899596B2 (en) 2019-05-23 2024-02-13 Hewlett Packard Enterprise Development Lp System and method for facilitating dynamic command management in a network interface controller (NIC)
US11902150B2 (en) 2019-05-23 2024-02-13 Hewlett Packard Enterprise Development Lp Systems and methods for adaptive routing in the presence of persistent flows
US11916782B2 (en) 2019-05-23 2024-02-27 Hewlett Packard Enterprise Development Lp System and method for facilitating global fairness in a network
US11916781B2 (en) 2019-05-23 2024-02-27 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC)
US11929919B2 (en) 2019-05-23 2024-03-12 Hewlett Packard Enterprise Development Lp System and method for facilitating self-managing reduction engines
US11962490B2 (en) 2019-05-23 2024-04-16 Hewlett Packard Enterprise Development Lp Systems and methods for per traffic class routing
US11968116B2 (en) 2020-03-23 2024-04-23 Hewlett Packard Enterprise Development Lp Method and system for facilitating lossy dropping and ECN marking

Also Published As

Publication number Publication date
US6615282B1 (en) 2003-09-02

Similar Documents

Publication Publication Date Title
US6615282B1 (en) Adaptive messaging
US6421742B1 (en) Method and apparatus for emulating an input/output unit when transferring data over a network
US6747949B1 (en) Register based remote data flow control
US5752078A (en) System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
US6836808B2 (en) Pipelined packet processing
JP2889932B2 (en) Dual-path computer interconnect system with 4-port packet memory controller
US7281030B1 (en) Method of reading a remote memory
US5187780A (en) Dual-path computer interconnect system with zone manager for packet memory
US5530902A (en) Data packet switching system having DMA controller, service arbiter, buffer type managers, and buffer managers for managing data transfer to provide less processor intervention
US5020020A (en) Computer interconnect system with transmit-abort function
JP3336816B2 (en) Multimedia communication device and method
JP2931798B2 (en) Network interface
US6857030B2 (en) Methods, system and article of manufacture for pre-fetching descriptors
US20050152274A1 (en) Efficient command delivery and data transfer
CN111930676B (en) Method, device, system and storage medium for communication among multiple processors
US10044796B2 (en) Method and system for transmitting an application message between nodes of a clustered data processing system
EP0725351A2 (en) Expedited message transfer in a multi-nodal data processing system
US6366968B1 (en) Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails
JPH0824320B2 (en) Method and device for buffer chaining in communication control device
EP1554644A4 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
US6279052B1 (en) Dynamic sizing of FIFOs and packets in high speed serial bus applications
US20050089033A1 (en) Method, system, and program for constructing a packet
US20030225995A1 (en) Inter-chip processor control plane communication
US5835779A (en) Message transmission among processing units using interrupt control technique
GB2377138A (en) Ring Bus Structure For System On Chip Integrated Circuits

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION