Browse Prior Art Database

Method for Atomic Peer-to-Peer Communication on a Peripheral Component Interconnect Bus

IP.com Disclosure Number: IPCOM000117276D
Original Publication Date: 1996-Jan-01
Included in the Prior Art Database: 2005-Mar-31

Publishing Venue

IBM

Related People

Bakke, BE: AUTHOR [+5]

Abstract

Disclosed is a simple, efficient, atomic method of communication between Peer nodes on a shared bus.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 15% of the total text.

Method for Atomic Peer-to-Peer Communication on a Peripheral Component
Interconnect Bus

      Disclosed is a simple, efficient, atomic method of
communication between Peer nodes on a shared bus.

      A typical shared bus configuration (Fig. 1) such as the
emerging industry standard Peripheral Component Interconnect (PCI)
consists of a Host node (10) and its attached memory (11), a physical
interconnect or Bus (20), and one or more Input/Output Adapter (IOA)
nodes (30, 40, 50) and their attached memory (31, 41, 51).  Portions
of all node attached memories (11, 31, 41, 51) are addressable from
the Bus (20) and contained within a shared address space as viewed
from the Bus (20).

      The nodes (10, 30, 40, 50) request services of each other by
transferring blocks of control information across the Bus (20) from
the Client (60) (the node that makes the request) to the Server (70)
(the node that performs the action on behalf of the Client) (Fig. 2).

Any node can contain both Client functions and Server functions
(Fig. 3).

      In a shared bus system, communication occurs between two nodes
(refer to Fig. 4): 1) a Client (60) or the node that makes the
request and 2) a Server (70) or the node that performs the action on
behalf of the Client.

The communication method between two nodes (refer to Fig. 5) has the
following elements:
  1.  A Command Block (110) in Client memory (61) consisting of a
       payload (115), a Client In Port @ (120), and a Response Handle
       (130).
        The Payload (115) is command information not defined by
         this invention.
        The Client In Port @ (120) contains either:
        a.  The Bus (20) address of the Client's In Port (62)
              or
        b.  Zero if the Client is a Host (10) that contains a Server
             n Host Request/Response Queue (140) instead of a Client
             In Port (62).
     The Response Handle (130) is a tag that identifies the
    request and allows correlation to the Command Block (110).  For a
    Host (10) Client that implements a Server n Host Request/Response
    Queue (140) the Response Handle (130) can be any Client (60)
    defined value that improves correlation efficiency (e.g., Bus
    (20) address, Client Memory (61) address, virtual address, index
    into a table of command blocks, etc.).  For a Client (60) that
    implements a Client In Port (62), the Response Handle (130) must
    be the Bus (20) address of the Command Block (110).  The maximum
    width of the Response Handle (130) is the atomic Bus (20)
    delivery width minus two bits.
  2.  A Command Block Tag (100) consisting of a Command Block @
(105),
       an R (107) bit or Request/Response bit and a 0 bit.
        The Command Block @ (105) is the Bus (20) address of the
         Command Block (110).
        The...