Browse Prior Art Database

Queueing Mechanism for Bi-Processor Communication

IP.com Disclosure Number: IPCOM000118712D
Original Publication Date: 1997-May-01
Included in the Prior Art Database: 2005-Apr-01
Document File: 4 page(s) / 92K

Publishing Venue

IBM

Related People

Arnaud, C: AUTHOR [+5]

Abstract

Disclosed is an invention which allows two processors, further referred to in the text as host and master, to communicate through a unique shared memory without either overrun or underrun. This invention may be applied to the development of any deep adapter inside a personal computer, for instance.

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

Queueing Mechanism for Bi-Processor Communication

      Disclosed  is an invention which allows two processors, further
referred to in the text as host and master, to communicate through a
unique shared memory without either overrun or underrun.  This
invention may be applied to the development of any deep adapter
inside a personal  computer, for instance.

      A set of primitives are defined for the communication to handle
either control or data exchanges.  There are two independent
primitive paths:
  o  out-path for request primitives: host --> master
  o  in-path for information primitives: master --> host

Each processor communicates through two circular buffers:
  o  a buffer_out to exchange out-path primitives.  It is
      written by the host and read by the master.
  o  a buffer_in to exchange in-path primitives.  It is written
      by the master and read by the host.

To avoid any buffer access contention between processors, the two
circular buffers operate as follows:
  o  A buffer can hold none, one, or many primitives at any
      time.  The primitives are written in the buffer without
      any gap in a wrap-around mode.
  o  A primitive has the following format:

    In Fig. 1:
       The header_word_1 contains the size field
        (number of data words)
       The header_word_2 contains the 2's complement of the size
        field
       The delimiter is filled with 0
       The primitive size does not include the delimiter to
        concatenate two primitives
  o  Four variables are associated with each buffer:
     1.  first_xx  : (xx=in or out) designates the first memory
          word location to be read by the reading processor.  It
          is also used by the writing processor to discard
          primitives after they have been read by the reading
          processor.
     2.  write_xx  : designates the first free memory location
          to be written.  This variable is controlled by the
          writing processor.
     3.  read_xx   : designates the first current memory location
          to be read.  This variable is controlled by the reading
          processor.
     4.  free_xx_size  : designates the memory space available
          to write primitives.  This variable is controlled by
          the writing processor.

Fig. 2 explains how these variables are involved:

                            (Image Omitted)

      Principle of Operation

      For ease of comprehension, the communication may be described
from the host to the master through the buffer_out.  The same
mechanism applies to the communication from the master to the host
through the buffer_in.
  o  At initialization time:
     1. ...