WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Hypercube processor network in which the processor indentification numbers of two processors connected to each other through port number n, vary only in the nth bit    
United States Patent5367636   
Link to this pagehttp://www.wikipatents.com/5367636.html
Inventor(s)Colley; Stephen R. (Reno, NV); Kenoyer; Stanley P. (Forest Grove, OR); Wilde; Doran K. (Beaverton, OR)
AbstractA parallel processor network comprised of a plurality of nodes, each node including a processor containing a number of I/O ports, and a local memory. Each processor in the network is assigned a unique processor ID (202) such that the processor IDs of two processors connected to each other through port number n, vary only in the nth bit. Input message decoding means (200) and compare logic and message routing logic (204) create a message path through the processor in response to the decoding of an address message packet and remove the message path in response to the decoding of an end of transmission (EOT) Packet. Each address message packet includes a Forward bit used to send a message to a remote destination either within the network or to a foreign network. Each address packet includes Node Address bits that contain the processor ID of the destination node, it the destination node is in the local network. If the destination node is in a foreign network space, the destination node must be directly connected to a node in the local network space. In this case, the Node Address bits contain the processor ID of the local node connected to the destination node. Path creation means in said processor node compares the masked node address with its own processor ID and sends the address packet out the port number corresponding to the bit position of the first difference between the masked node address and its own processor ID, starting at bit n+1, where n is the number of the port on which the message was received.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5367636
Hypercube processor network in which the processor indentification

     numbers of two processors connected to each other through port number

     n, vary only in the nth bit - US Patent 5367636 Drawing
Hypercube processor network in which the processor indentification numbers of two processors connected to each other through port number n, vary only in the nth bit
Inventor     Colley; Stephen R. (Reno, NV); Kenoyer; Stanley P. (Forest Grove, OR); Wilde; Doran K. (Beaverton, OR)
Owner/Assignee     nCUBE Corporation (Foster City, CA)
Patent assignment
All assignments
Publication Date     November 22, 1994
Application Number     08/144,544
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     November 1, 1993
US Classification     709/245 370/400
Int'l Classification     G06F 013/00 G06F 013/374
Examiner     Bowler; Alyssa H.
Assistant Examiner     Shah; Alpesh M.
Attorney/Law Firm     Lamb; Owen L.
Address
Parent Case     this is a continuation of Ser. No. 07/587,237, filed Sep. 24, 1990, now abandoned.
Priority Data    
USPTO Field of Search     395/800 395/325 395/200 370/60 370/60.1 370/91 370/92 370/94.1 370/95.1 370/85.1 370/85.7
Patent Tags     hypercube processor network which processor indentification numbers two processors connected each other through port number n, vary only nth bit
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5146606
Grondalski
712/14
Sep,1992

[0 after 0 votes]
5129077
Hillis
712/13
Jul,1992

[0 after 0 votes]
5001706
Dighe
370/422
Mar,1991

[0 after 0 votes]
4949337
Aggers
370/451
Aug,1990

[0 after 0 votes]
4930122
Takahashi
370/473
May,1990

[0 after 0 votes]
4805091
Thiel
712/12
Feb,1989

[0 after 0 votes]
4739476
Fiduccia
712/22
Apr,1988

[0 after 0 votes]
4739475
Mensch, Jr.
716/19
Apr,1988

[0 after 0 votes]
4644496
Andrews
712/13
Feb,1987

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. In a network of interconnected nodes;

each node including a processor (10, 12, 14, 16, 18);

each processor including means for internode communication,

said internode communication means connecting said nodes to form an array of said processors having a hypercube topology;

each of said processors in said network being assigned a unique processor identification (ID), said ID being comprised of bit 1, bit 2 . . . bit n, bit n+1, bit n+2, . . . ;

the processor IDs of two processors connected to each other through port number n, varying only in said bit n;

a first node of said nodes having an output port n;

an apparatus in a second node of said nodes for establishing a communication path through said second node comprising:

a plurality of input ports, one of said input ports being input port n;

a plurality of output ports;

receiving means (200) at said input port n for receiving a first address packet related to a first message from said output port n of said first node;

said first address packet including a forward bit set to one of either a first state or a second state, said first address packet being immediately followed by a second address packet;

a data bus (210);

said data bus connecting said input and output ports of said second node together such that messages received on any one input pod can be routed to any other output port of said second node;

registering means (202) for registering a processor ID unique to said second node;

comparing means (204) connected to said data bus, to said receiving means (200) and to said registering means (202) for comparing a first node address in said first address packet with each corresponding bit position, successively, beginning with said bit n+1 of said processor ID of said second node stored in said registering means to determine a first one bit position of said first node address in said first address packet that is not the same as a corresponding bit position of said processor ID of said second node;

said comparing means (204) including means for activating for transmission of said first address packet placed on said data bus (210) by said input port n, the one of said plurality of output ports whose port number corresponds to said first one bit position, where n is the number of said input port n;

forward bit detection means for detecting that said forward bit is set to said first state;

means connected to said forward bit detection means for discarding said first node address in said first address packet;

said compare logic (204) including means for comparing a second node address in said second address packet following said first address packet with each corresponding bit position, successively beginning with a bit n+1, of the processor ID of said second node to determine a second bit position of said second node address in said second address packet that is not the same as a corresponding bit position of said processor ID of said second node; and,

means for sending said second address packet out of the port number of said second node corresponding to said second one bit position where n is the number of a port on which said first address packet is received.

2. The combination in accordance with claim 1 wherein:

said second node includes a local memory (20) having a memory data bus (156) for receiving data to be stored in said local memory;

said output ports are connected to said memory data bus; and, said comparing means (204) includes first detection means for detecting that said node address in said first address packet and said processor ID of said second node are the same; and,

transferring means connected to said detection means for transferring said first message to said local memory (20) of said second node.

3. The combination in accordance with claim 1 wherein:

said receiving means (200) further includes receiving means for receiving a second address packet related to a second message from an output port of a second of said interconnected nodes;

said compare logic (204) includes second detection means for detecting that said second address packet specifies the same port as said first address packet, and,

blocking means connected to said second detection means for blocking, at said second node, said second address packet;

said receiving means (200) includes means for generating an end of transmission (EOT) signal upon receipt of an end of transmission (EOT) message; and,

said compare logic (204) includes means responsive to said end of transmission (EOT) signal for deactivating said blocking means.

4. In a network of interconnected nodes;

each node including a processor (10, 12, 14, 16, 18);

each of said processors in said network being assigned a unique processor identification (ID), said ID being comprised of bit 1, bit 2 . . . bit n, bit n+1, bit n+2 . . . ;

the processor IDs of two processors connected to each other through port number n, varying only in said bit n;

each processor including means for internode communication,

said internode communication means connecting said nodes to form an array of said processors having a hypercube topology;

a method of establishing a communication path through a node of said network comprising the steps of:

A. receiving a first address packet related to a first message from an output port of a first of said nodes at an input port n of a second of said nodes, said first address packet including a forward bit set to one of either a first state or a second state, said first address packet being immediately followed by a second address packet;

B. comparing at said second node a node address in said first address packet with each corresponding bit position, successively, beginning with said bit n+1 of a processor ID of said second node to determine a first bit position of said node address in said first address packet that is not the same as a corresponding bit position of said processor ID of said second node;

C. sending said first address packet out of an output port of said second node, said output port of said second node having a port number corresponding to said first bit position, starting at bit n+1, where n is the number of an input port said second node on which said first address packet is received;

D. detecting that said forward bit is set to said first state;

E. discarding said first address, in said first address packet in response to said detecting that said forward bit is set to said first state;

F. comparing a node address in said second address packet with each corresponding bit position, successively beginning with said bit n+1, of the processor ID of said second node to determine a a second one bit position of said node address in said second address packet that is not the same as a corresponding bit position of the processor ID of said second node; and,

G. sending said second address packet out of the port number of said second node corresponding to said second one bit position wherein n is the number of the port on which said first address packet was received.

5. The method in accordance with claim 4 wherein said first address packet includes a Forward bit set to one of either a first state or a second state, said first address packet being immediately followed by a second address packet, further comprising the steps of:

H. detecting a condition that said first node address in said first address packet and said processor ID of said second node are the same; and,

I. transferring said first address packet to a local memory of said second node in response to said condition that said node address in said first address packet and said processor ID of said second node are the same.

6. The method in accordance with claim 4 wherein step C includes the step of sending said first address packet out of an output port which has a number higher than an input port on which said first address packet is received.

7. The method in accordance with claim 4 further comprising the steps of:

H. detecting that said second address packet specifies a port number that is identical to a port number specified in said first address packet,

I. blocking, at said second node, said second address packet; and,

J. unblocking, at said second node, said second address packet upon receipt of an end of transmission (EOT) packet that specifies said second address packet.
 Description Submit all comments and votes
 


CROSS-REFERENCE TO RELATED APPLICATION

U.S. Pat. No. 5,113,523 entitled "High Performance Computer System" of Stephen R. Colley, et al., granted on May 12, 1992, assigned to Ncube Corporation, and incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates to data-processing systems, and more particularly, to a communication mechanism for use in a high-performance, parallel-processing system.

2. Description of the Prior Art

The above-referenced U.S. Pat. No. 5,113,523, describes a parallel processor comprised of a plurality of processing nodes, each node including a processor and a memory. Each processor includes means for executing instructions, logic means connected to the memory for interfacing the processor with the memory and means for internode communication. The internode communication means connect the nodes to form a first array of order n having a hypercube topology. A second array of order n having nodes connected together in a hypercube topology is interconnected with the first array to form an order n+1 array. The order n+1 array is made up of the first and second arrays of order n, such that a parallel processor system may be structured with any number of processors that is a power of two. A set of I/O processors are connected to the nodes of the arrays by means of I/O channels. The means for internode communication comprises a serial data channel driven by a clock that is common to all of the nodes.

In U.S. Pat. No. 4,729,095 of Colley et al granted Mar. 1, 1988 and assigned to Ncube Corporation, there is described a broadcast pointer instruction having a source operand which is the address in memory of a message to be broadcast to a number of processors. The broadcast pointer instruction also includes a destination operated which is a multibit mask. A mask register is connected to output channel registers such that every bit position in the mask register that is set to a predetermined value will allow the corresponding output channel address register to be loaded. Decoding means load the mask register with the mask bits of the destination operand of the broadcast pointer instruction. A broadcast count instruction is provided including a source operand which is a plural bit integer equal to the number of bytes in the message. The broadcast count instruction includes a destination operand which is a multibit mask. As transmission progresses, the address register is incremented and the count is decremented by the number of bytes transferred.

The prior art apparatus requires software controls to set up data paths, route data to nodes over the paths created, and remove paths that are no longer in service,

It is a primary object of the present invention to provide a new communication mechanism for use in parallel processing system that will provide for communication path creation, data transmission over the created path, and path removal without the need for an external control.

SUMMARY OF THE INVENTION

Briefly, the above object is accomplished in accordance with an embodiment of the present invention as follows.

Each node in a network of interconnected nodes includes a processor and a plurality of communication ports. Each of the processors in the network is assigned a unique processor identification (ID), with the processor IDs of two processors connected to each other through port number n, varying only in the nth bit. A plurality of input ports and a plurality of output ports are provided at each node. Control means at one of the input ports of the node receives address packets related to a current message from an output port of another of the nodes. A data bus connects the input and output ports of the node together such that messages received on any one input port can be routed to any other output port. A compare logic compares a node address in a first address packet with the processor ID of the node to determine the bit position of the first difference between the node address in the first address packet with the processor ID of the node. The compare logic includes means for activating for transmission of the message packet placed on the data bus by the input port, the one of the plurality of output ports whose port number corresponds to the bit position of the first difference, starting at bit n+1, where n is the number of the port on which the message was received.

In accordance with an aspect of the invention, the processor includes a local memory having a memory data bus for receiving data to be stored in the memory, with the output ports being connected to the memory data bus. The compare logic includes means for transferring the messages to the local memory of the node upon the condition that the node address in the first address packet and the processor ID of the node are the same.

In accordance with another aspect of the invention, the compare logic includes blocking means for blocking, at the node, message packets unrelated to the current message packets that specify the same port as the current message packet; and, means are provided for generating an end of transmission (EOT) signal upon receipt of an end of transmission (EOT) message. The compare logic includes means responsive to the end of transmission (EOT) signal for deactivating the blocking means.

In accordance with a further aspect of the invention, the current address packet includes a forward bit capable of being set to a first state and a second state, the current address packet being immediately followed by a next address packet. Means are provide for examining the forward bit to determine if the forward bit is set to the first state, and if it is, and the address in the first address packet and the processor ID are the same, and the address matches the PID, for discarding the address packet in the received message. The compare logic includes means for comparing the node address in the next address packet following the discarded current address packet with the processor ID of the node to determine the bit position of the first difference between the node address in the address packet with the processor ID of the node; and for sending the next address packet out the port number of the node corresponding to the bit position of the first difference, starting at bit n+1, where n is the number of the port on which the message was received.

The invention has the advantage that direct interconnection of I/O ports eliminates off-chip88 communication logic.

The invention has the advantage that automatic cut-through message routing allows messages to pass through intermediate nodes without interrupting the central processing units (CPUs) of intermediate nodes.

The invention has the advantage that automatic message forwarding allows communication between remote cube spaces, and arbitrary message path routing.

The invention has the advantage that automatic disposal of messages having illegal addresses prevents gridlock, by removing dead-end message paths.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features, and advantages of the invention will be apparent from the following detailed description of a preferred embodiment of the invention, as illustrated in the accompanying drawings wherein:

FIG. 1 is a detailed block diagram of a processor in which the present invention is embodied;

FIG. 2 is a block diagram of the 14 serial ports of the processor shown in FIG. 1;

FIGS. 3A, 3B and 3C comprise a composite block diagram of a single serial port representative of one of the 14 serial ports (16) on the processor shown in FIG. 1:

FIG. 4 illustrates the interconnect and address scheme in an eight processor network;

FIG. 5 illustrates the format of the 32 bit long address word;

FIG. 6 illustrates the format of a remote broadcast message;

FIG. 7 is an example of how a message is sent from a node address 0000 to a destination node whose address is XXXX;

FIG. 8 illustrates the format of an address packet;

FIG. 9 illustrates the format of a data packet;

FIG. 10 illustrates the format of an Acknowledge (ACK) command packet;

FIG. 11 illustrates the format of an End of Message command packet;

FIG. 12 illustrates the format of an End of Transmission (EOT) command packet;

FIG. 13 illustrates the Transmission Format; of a transmission consisting of multiple messages;

FIG. 14 illustrates a transmission consisting of a single message is initiated with the LCNT instruction;

FIG. 15 illustrates a transmission consisting of multiple messages is initiated with the LPCNT instruction;

FIG. 16 illustrates a message path in a dimension 3 hypercube;

FIG. 17 illustrates how to calculate the time it takes a full message of several packets to be sent from node 110 to node 001 in the hypercube of FIG. 16;

FIG. 18 is a flow diagram of an input ready interrupt subroutine;

FIG. 19 is a flow diagram of an output ready interrupt subroutine;

FIG. 20 is a flow diagram of a send message subroutine; and,

FIG. 21 is a flow diagram of a receive message subroutine.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Communication between processors is accomplished via messages. Message transmission proceeds in three stages: Path Creation, Data Transmission, and Path Removal. Each stage is performed in turn by each processor in the message path. To accomplish this, three architectural layers are provided, the Interconnect Layer, the Routing Layer, and the Message Layer.

Interconnect Layer

The Interconnect Layer provides the hardware required for establishing physical communication links. The following list describes major features of the Interconnect Layer:

28 independent serial Direct Memory Access (DMA) channels provide 14 full-duplex I/O ports, allowing systems to be designed with up to a dimension 13 hypercube (8,192 processors).

Direct interconnection of I/O ports eliminates off-chip communication logic.

Variable communication speed of I/O ports allows matching the port speed to the signal propagation time of the interconnect. This provides the ability to support very large configurations, while allowing higher communication rates on interconnects having shorter propagation delays.

Intersystem communication with remote hypercube spaces through the System Interconnect (SI) I/O port, allows hypercubes to be networked with each other, as well as with other systems.

Routing Layer

The Routing Layer provides the arbitration and switching logic for creating, maintaining, and removing communication paths between processors in the network. The following list describes major features of the Routing Layer:

Automatic cut-through message routing allows messages to pass through intermediate nodes without interrupting the intermediate node CPUs.

Automatic message broadcasting allows messages to be broadcast to remote subcubes.

Automatic message forwarding allows communication between remote cube spaces, and arbitrary message routing.

Automatic disposal of messages having illegal addresses prevents gridlock, by re-moving dead-end message paths.

Automatic overrun control, via internode handshaking, allows reliable message traffic through intermediate nodes across interconnects of differing speeds.

Message Layer

The Message Layer provides the services for reliable and efficient point-to-point data transfer between processors. The following list describes major features of the Message Layer:

Interrupt driven communications software reduces the load on the CPU.

Messages are automatically broken into discrete packets during transmission automatically reconstructed upon receipt.

DMA capability allows concurrent message transmission independent of CPU activity.

Message transmission without path removal allows sending noncontiguous data.

Automatic error detection allows a target node to respond to errors without interrupting the CPUs of intermediate nodes.

Messages

A message can be visualized as a chain of packets being relayed from processor to processor. The first packet contains an address that the Routing Layer uses to determine which port or ports to use in creating the next link or links in the path. The Routing Layer also uses the address to determine whether to notify the CPU of message arrival. Complex tree-structured and multi-node paths can be created using broadcasting and forwarding techniques.

The channels that the address packet passes through as it moves from processor node to processor node are automatically reserved for the data packets that follow the address packet. The system is able to buffer up to two packets on each incoming channel. The system will request another packet a soon as it has space for it, until an End of Transmission (EOT) packet arrives. As an EOT packet passes through a channel, it causes the processors to release the channel for use by other messages.

A short message of a few packets could be stored entirely within channel buffers of intermediate processors in the path, prior to the address packet reaching the destination processor.

Any transmission errors detected by the intermediate processors are encoded in the packets as they pass through. The transmission errors are then detected by the destination processor.

The Interconnect Layer

The processor in which the present invention is embodied is shown in FIG. 1, and is comprised of Floating Point Execution Unit (40), Instruction Decoder and interrupt decoder (12), operand FIFO cache (14), 14 serial Ports (16), and Memory Interface (18) which is attached to memory (20). Each of the 14 serial ports (16) is an independent Direct Memory Access (DMA) channel. Each I/O channel can be connected directly to a corresponding channel in another processor, thus eliminating the need for off-chip communication logic.

Refer now to FIG. 2 which is a block diagram of the 14 serial Communication Ports (16) shown in FIG. 1. 28 DMA I/O channels are arranged in pairs. Fourteen channels handle input and fourteen channels handle output, providing fourteen full-duplex I/O ports. This provides full support for system designs with up to a dimension 13 hypercube (8,192 processors), while allowing all processors direct I/O connection with processors outside the hypercube array.

The DMA I/O channels operate independently of the CPU. A DMA channel begins functioning whenever its DMA Count Register is set to a nonzero value. If the address value in the DMA Address Register is larger than the memory space, the high-order bits are ignored. All ports are general, except that one input channel and one output channel, together called the System Interconnect (SI) port, are normally used to communicate with other hypercube spaces or foreign (non-hypercube) systems.

Each of the processors in the network is assigned a unique processor identification (ID), stored in ID register (202), with the processor IDs of two processors connected to each other through port number n, varying only in the nth bit. The input decoder block (200) receives address packets related to a current message from an output port of another of the nodes. A data bus (210) connects the input and output ports of the node together such that messages received on any one input port, such as port 1, can be routed to any other output port, such as port 14. A compare logic (204) compares a node address in a first address packet with the processor ID (202) of the node to determine the bit position of the first difference between the node address in the first address packet with the processor ID of the node. The compare logic includes means for activating for transmission of the message packet placed on the data bus (210) by the input port, the one of the plurality of output ports whose port number corresponds to the bit position of the first difference, starting at bit n+1, where n is the number of the port on which the message was received.

The memory arbitration logic (205, 206) of each port is connected to the memory data bus for storing data in the local memory. The compare logic (204) includes means for transferring the messages to the local memory of the node upon the condition that the node address in the first address packet and the processor ID (203) of the node are the same.

The compare logic (204) also includes blocking means for blocking, at the node, message packets unrelated to the current message packets that specify the same port as the current message packet. Means are provided for generating an end of transmission (EOT) signal upon receipt of an end of transmission (EOT) message. The compare logic includes means responsive to the end of transmission (EOT) signal for deactivating the blocking means.

The current address packet, shown in FIG. 5, includes a forward bit capable of being set to a first state and a second state, the current address packet being immediately followed by a next address packet as shown in FIG. 6. Means are provide for examining the forward bit to determine if the forward bit is set to the first state, and if it is, and the address in the first address packet and the processor ID are the same, and the address matches the PID, for discarding the address packet in the received message. The compare logic includes means for comparing the node address in the next address packet following the discarded current address packet with the processor ID of the node to determine the bit position of the first difference between the node address in the address packet with the processor ID of the node; and for sending the next address packet out the port number of the node corresponding to the bit position of the first difference, starting at bit n+1, where n is the number of the port on which the message was received.

FIGS. 3A and 3B comprise a composite block diagram of a single serial port representative of one of the 14 serial ports (16) on the processor shown in FIG. 1. The address pointers (168, 170) each contain a pointer to the location in memory (20) of the least significant byte of the next word to be transferred. In an output port, the data is moved from memory (20) over the serial transmit interface (164) via 158, 160, 162. In an input port, the data that has been received over the serial receive interface (150) from the output port of the sending processor is moved to memory (20) via 152, 154, 156.

Each port has all the circuitry necessary to both receive and transmit serial messages in full duplex. The format of the messages is described in Section 5.4.1 of the above-identified Colley, et al. application. Data are received on the serial receive line (150) and are framed in the input shift register (152). The information is then transferred in parallel to the input FIFO (154) and is stored there until it is transferred to the memory (20) on the memory data in lines (156). Similarly, data to be transmitted is brought in from the memory data out lines (158) and stored in the output FIFO (160). From there it is transferred to the output shift register (162), and transmitted serially on the serial transmit line (164) after being combined with a parity bit from the parity-bit generator (166).

The output byte counter (172) specifies the length of message to be sent. All of the above-described registers are initialized by the appropriate instruction: the load address pointer instruction, the load byte counter instruction for single channel transfer, and the broadcast count instruction for multiple channel transfer, as described in U.S. Pat. No. 4,729,095. After a message packet is received, the input address pointer (168) is incremented by 4. After a message packet has been sent, the output address pointer (170) is incremented by 4 and the output byte counter (172) is decremented by 4.

There is an input port controller (174) and an output controller (178) which control the timing of the serial transmission. These controllers control the timing of when the parity bit is sent out and when the parity bit is to be checked on incoming data. They also control the various flags. The parity error flag (180) is set by the input controller when there is a parity error detected on an input message by parity check logic (181). The input message pending flag (182) is set by the input controller during the time that the input FIFO (154) is buffering a message which has not yet been transferred into memory. The overrun error flag (184) is never in an asserted state since the sender (controlled by 178) only sends data when the receiver ready flag (190) is set as signalled by ACK. The input enable flag (186) is a flag which is both readable and writable by the user to enable interrupts that occur when the input port becomes ready and the input message ready flag (187) is set. The input message ready flag (187) is set in response to receipt of an End of Message or End of Transmission packet.

On the output port there is an output enable flag (188) which, when enabled, will generate an interrupt when the output message ready flag (189) is set, i.e., when the output byte counter (172) goes to zero, signifying that the entire message has been transmitted. This signals the user that it is necessary to reinitialize the port with a new message. The receiver ready flag (190) is set when the connected input port can receive another word (as signalled by ACK). The broadcast flag (192) is initialized by the broadcast count instruction. When this flag is set, it indicates that this particular output port is a member of the current broadcast group. When an output port is a member of the current broadcast group, then any data coming over the memory data out bus (158) for broadcasting will be transmitted out of this port and simultaneously out of all other ports that have their broadcast flags on.

The port interrupt logic (194) generates interrupts if enabled when the input or output ports have finished transmitting or receiving messages, as signaled by the appropriate flag, input enable (186) or output enable (188) being set.

The port memory arbitration logic (196) performs the function of arbitrating for memory with all the other serial ports. The winner of this arbitration must again arbitrate with other units on the chip in the memory interface unit (18) of FIG. 1 as described in Section 8.8 of the above-identified Colley, et al. application. When a port memory arbitration is successful the memory request line (200) is energized. When a memory grant is given, the memory grant line (202) indicates that data either has been taken from the memory data in bus (156) or that the data is available on the memory data out bus (158).

Each output channel has an output address pointer (170), an output byte count register (172), an output message ready flag (189) and an output enable flag (188). Each input channel has a parity error flag (180), an overrun error flag (184) and an input enable flag (186). Besides the enable for each channel there are two global enable flags in the Program Status (PS) register. The global enable (II) flag disables all input interrupts (including errors) even if the corresponding channel flag is enabled and the global enable (IO) flag disables all output interrupts.

In order to send a message from a memory buffer on a single output channel, a processor first either checks the channel's ready flag or enables its interrupt and waits for a "ready" interrupt. As soon as the channel indicates that it is ready (idle), the output address pointer (170) is set to point to the first (low) byte of the message, which must begin on a word boundary. This is accomplished by executing a LPTR (Load Pointer) instruction as described in U.S. Pat. No. 4,729,095. The source (src) operand of this instruction is the address of the message buffer and the destination (des) operand is an integer whose value determines which of the channel registers is to be loaded.

In order to start the automatic message output, the output byte counter (172) must be set to the number of bytes in the message. The two low order bits are forced to zero in both the output address pointer (170) and the output byte counter (172); thus the message buffer must start on a word boundary. This is done by executing a LCNT (Load Count) instruction. The destination operand indicates the register to be loaded as explained above for the LPTR instruction and the source operand is the count value (an unsigned 32 bit integer). The LCNT instruction also resets the parity (181) and overrun error flag (184) when setting up an input port. The message transmission is automatic and as data is sent the output address pointer (170) is incremented and the output byte counter (172) is decremented by the number of bytes transferred. When the output byte count becomes zero the output transmission stops, the output message ready flag (189) is set and, if the output enable flag (188) is set, the ready interrupt is generated.

A channel's Address Register (168, 172) contains a pointer to the least significant byte of the next word to be transferred. If it is an output channel, the data is moved from memory out to the channel. If it is an input channel, the data that has been received is moved to memory. The Count Register (172) in the output channel is set to indicate the number of bytes to be sent. As data are sent, the output channel Address pointer (170) is incremented by the number of bytes transferred, and the Byte Counter (172) is decremented by the number of bytes transferred. When the count reaches zero, an End of Message (EOM) packet or an End of Transmission (EOT) packet is sent to the receiver, the appropriate bit in the Output Message Ready Register or the Output Transmission Ready Register, or both, is set, and an Output Ready interrupt is generated, if enabled. As data is received, the input channel DMA Address Register is incremented by the number of bytes transferred. When an EOM or EOT packet is received, the appropriate bit in the Input Message Ready Register is set to ready, and an Input Ready interrupt, if enabled, is generated by interrupt logic (194).

Channel numbers are used in connection with the LPTR, LCNT, and LPCNT Communication Control instructions to address the channel to be loaded.

The input and output port registers are addressed according to Table I.

TABLE 1 ______________________________________ Use To Access Use To Access Channel Input Port Channel Output Port ______________________________________ 0 0 32 0 1 1 33 1 2 2 34 2 3 3 35 3 4 4 36 4 5 5 37 5 6 6 38 6 7 7 39 7 8 8 40 8 9 9 41 9 10 10 42 10 11 11 43 11 12 12 44 12 31 SI 63 SI ______________________________________

Channels 0 through 12 and 31 are input channels. C