|
Description  |
|
|
BACKGROUND OF THE INVENTION
The present invention relates to the identification of a node in a data
processing input/output system, and more particularly relates to the
identification of a neighboring node during the definition of a data
processing input/output system.
Many times in the operation of a data processing input/output (I/O) system,
it is desirable to know the identity of the neighboring node. Such
information is particularly helpful in such applications as reporting a
broken data transmission line or in selecting an alternate route through
an I/O network to avoid a fault or suspected fault.
U.S. Pat. No. 3,693,161 to Price et al. issued Sept. 19, 1972 for Apparatus
for Interrogating the Availability of a Communication Path to a Peripheral
Device and discloses a computer system in which one or more processors
interrogate the input/output system to determine whether communication
paths are available to the respective peripheral units. A particular
peripheral unit is identified by a coded signal from a processor.
U.S. Pat. No. 4,360,870 to McVey issued Nov. 23, 1982 for Programmable I/O
Device Identification and discloses a computer system in which each I/O
device is loaded with a unique assigned identifier. The identifiers are
assigned in an ordered priority by device type.
U.S. Pat. No. 4,589,063 to Shah et al. issued May 13, 1986 for Data
Processing System Having Automatic Configuration and discloses a method
and apparatus for automatic configuration of a computer system. One or
more of several I/O devices are interfaced to the system through I/O
boards that plug into various option slots in a system motherboard Each of
the I/O devices includes a controlling device driver module. Each driver
module is self-identifying.
U.S. Pat. No. 4,638,313 to Sherwood, Jr. et al. issued Jan. 20, 1987 for
Addressing for a Multipoint Communication System for Patient Monitoring
and discloses a method for dynamically assigning addresses to new modules
as they are coupled to a communication system. At power up, a process is
disclosed which is used by a primary station to assign an address to each
module in an order derived from the serial number of the module.
U.S. Pat. No. 4,939,726 to Flammer et al. issued Jul. 3, 1990 for Method
for Routing Packets in a Packet Communication Network and discloses a
packet network method and system in which each node in the network is
uniquely identified by absolute geographical coordinates or by a code
indicating absolute location in an external coordinate-based reference
system.
U.S. Pat. No. 4,953,072 to Williams issued Aug. 28, 1990 for Node For
Servicing Interrupt Request Messages on a Pended Bus and discloses an
interrupt servicing node whose ID is generated using a unique set of wires
from the backplane that are hardcoded with the particular ID for the slot
in which the node resides.
U.S. Pat. No. 5,003,508 to Hall issued Mar. 26, 1991 for Linear Nearest
Neighbor Interconnect Bus System and discloses an apparatus for providing
data communication between concurrently operating random access memory and
processing devices including a set of interface nodes interconnected in
series by bidirectional buses. Each node also includes means for receiving
data from any nearest neighbor node to which it is connected, and to
forward to nearest neighbor nodes messages generated by a processing
device to which it is connected.
SUMMARY OF THE INVENTION
In a computer I/O system having a plurality of nodes, it is many times
useful to identify one of the nodes, particularly the nearest neighbor, in
such applications as identifying faults or establishing or verifying the
configuration of the I/O system. For instance, if a fault is detected, it
is desirable to confirm that the configuration has not been changed after
the fault is corrected to be sure data is being sent to a desired device.
This is necessary in that links between nodes may have inadvertently been
connected differently between nodes in correcting a fault such that nodes
are no longer connected in the same configuration as before the fault
occurred. Thus in an initialization procedure, each node obtains the node
identifier of its nearest neighbor by sending out a
request-node-identifier frame which is responded to by an
identifier-response frame from the neighbor. The identifier-response frame
contains a worldwide-unique identifier with identifies the neighboring
node.
It is therefore an object of the present invention to provide a method for
obtaining an identifier of a node in a computer I/O system.
It is another object of the present invention to provide a worldwide-unique
identifier for each node in a computer I/O system.
It is another object of the present invention to provide an validity code
in a node identifier which indicates if a node identifier is valid or not
valid.
It is another object of the present invention to provide a retry procedure
for retrying the acquisition of a node identifier if the acquired node
identifier is not valid.
It is another object of the present invention to provide a procedure for
deferring the retrying of the acquisition cf a node identifier when the
procedure is unsuccessful.
The foregoing and other objects, features and advantages of the invention
will be apparent from the following more particular description of the
preferred embodiment of the invention as illustrated in the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of the I/O system of a data processing system
which uses the present invention;
FIG. 2 illustrates a frame for transmitting data in the I/O system of FIG.
1;
FIG. 3 illustrates a link header portion of the frame of FIG. 2;
FIG. 4 illustrates a link trailer portion of the frame of FIG. 2;
FIG. 5 shows the format and content of the information field of an RID
frame of the present invention;
FIG. 6 shows the format and content of the information field of an IDR
frame of the present invention;
FIG. 7 is a logic flow diagram of the sending of an IDR frame by a
link-level facility in response to the receipt of an RID frame;
FIG. 8 is a logic flow diagram of the initializaticn procedure for a
channel link-level facility;
FIG. 9 is a logic flow diagram of the initialization procedure for a
control-unit link-level facility;
FIG. 10 is a logic flow diagram of a channel node-identifier acquisition
procedure;
FIG. 11 is a logic flow diagram of a control-unit node-identifier
acquisition procedure; and
FIG. 12 shows the format and content of the node descriptor of a node of
the I/O system of FIG. 1 for use in the IDR information field of FIG. 6.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 is a block diagram of the I/O system of a data processing system for
making dynamic connections between the channel subsystem of the data
processing system and control units. The I/O system includes a dynamic
switch 10 having a plurality of ports P, each port P connected to one end
of a plurality of links 12-18. One of the links 18 is connected to a
dynamic switch control unit 20, and each of the other links 12-17 is
connected to either a channel, such as channel A designated 22 or channel
B designated 24, or to one of the control units 26-29. Each of the control
units 26-29 control a plurality 30-33 of peripheral devices D,
respectively.
Each of the channels 22 and 24 is a single interface on a System/370, a
370/XA, or an ESA/390 subsystem. The channels 22 and 24 direct the
transfer of information between I/O devices of the pluralities 20-33 of
devices D and main storage (not shown) of the data processing system and
provide the common controls for the attachment of different I/O devices D
by means of a channel path (to be defined). The channels 22 and 24 are
serial channels wherein data is transmitted and received in a serial
format, as explained in U.S. patent application Ser. No. 07/429,267 filed
Oct. 30, 1989 for Switch and Its Protocol for Making Dynamic Connections,
owned by the assignee of the present invention and incorporated herein by
reference.
Each of the links 12-17 is a point-to-point pair of conductor that may
physically interconnect a control unit and a channel, a channel and a
dynamic switch (such as links 12 and 13), a control unit and a dynamic
switch (such as links 14-17), or, in some cases, a dynamic switch and
another dynamic switch (not shown). The two conductors of a link provide a
simultaneous two-way communication path, one conductor for transmitting
information and the other conductor for receiving information. When a link
attaches to a channel or a control unit, it is said to be attached to the
I/O interface of that channel or control unit. When a link is attached to
a dynamic switch, it is said to be attached to a port P on that dynamic
switch. When the dynamic switch makes a connection between two
dynamic-switch ports, the link attached to one port is considered
physically connected to the link attached to the other port, and the
equivalent of one continuous link is produced for the duration of the
connection.
The dynamic switch 10 provides the capability to physically interconnect
any two links that are attached to it. The link attachment point on the
dynamic switch 10 is the dynamic-switch port P. Only two dynamic-switch
ports P may be interconnected in a single connection, but multiple
physical connections may exist simultaneously within the same dynamic
switch. The interconnection of two dynamic-switch ports P established by
the dynamic switch 10 does not affect the existing interconnection of any
other pair of dynamic-switch ports, nor does it affect the ability of the
dynamic switch to remove those connections.
When a connection is established, two dynamic switch ports and their
respective point-to-point links are interconnected by a switch matrix
within the dynamic switch 10 such that the two links are treated and
appear as one continuous link for the duration of the connection. When
frames are received by one of two connected switch ports P, the frames are
normally passed from one port to the other for transmission on the other
port's link.
The dynamic switch 10 can form a connection between two ports P in one of
two ways: dynamic or static. The connection is termed a dynamic connection
or static connection, accordingly.
In the disclosed embodiment, the dynamic switch 10 can establish or remove
a dynamic connection between two ports P based on the information provided
by certain frame delimiters in the serial frames transmitted over the
links and based on conditions present at each of these ports P.
The dynamic switch can establish or remove a static connection between two
ports P as a result of commands received by means of the local or remote
facilities of the dynamic-switch control unit 20. Frame delimiters or
other sequences received at the port P have no effect on the static
connection.
When a static connection exists between two ports P, the ports are in the
static state. The static state is not affected by any information received
from the link or from the statically connected port. If a sequence (to be
explained) is received by one of two statically connected ports, the
received sequence is normally retransmitted on the connected port's link.
Frames may be received and transmitted simultaneously by statically
connected ports.
In one embodiment, the dynamic switch 10 may have a maximum of 254 ports P.
Since it takes two ports to make a connection, the maximum number of
possible simultaneous connections is equal to half the number of ports P
implemented. It will be understood that if the quantity of ports P is an
odd number, then the maximum is half of the maximum number of ports P less
one. A port P does not have a link address and, therefore, is not uniquely
addressable. However, an association between a port P and either a
destination link address or a source link address is provided by the
dynamic switch.
The dynamic switch 10 has one dynamic-switch control unit 20, which is
assigned the unique link address of its link 18. The dynamic-switch
control unit 20 is connected to the dynamic switch 10 as though it were
attached to the dynamic switch by means of a port P and is available for
dynamic connections like any other control unit attached to the dynamic
switch 10. Through facilities provided by the dynamic-switch control unit
20, changes can be made to information in a matrix controller of the
dynamic switch 10 concerning an individual port P which alters the ability
of that port to be dynamically connected with another port.
As previously mentioned, information is transferred on the serial-I/O
interface in a frame. A frame is a unit of information that is sent or
received according to a prescribed format. This format delineates the
start and end of the unit of information and prescribes the placement of
the information within these boundaries. FIG. 2 shows the basic frame
format 38 which consists of a fixed-length link-header field 40, a
variable-length information field 42, and a fixed-length link-trailer
field 44.
Communications using the switch are governed by two hierarchical levels of
functions and serial-I/O protocols, the link level and the device level.
Link level protocols are used whenever a frame is sent. These protocols
determine the structure, size, and integrity of the frame. Link protocols
also provide for making the connection through the dynamic switch 10 and
for other control functions which are unrelated to this invention. Each
channel and each control unit contains a link-level facility, which is the
embodiment of the link protocols, as explained in U.S. patent application
Ser. No. 07/575,923 filed Aug. 31, 1990 for Managing a Serial Link in an
I/O System, owned by the assignee of the present invention and
incorporated herein by reference. The device level is used to convey
application information such as the data which is transferred from an
input-output device to the channel. A frame which contains application
information or controls is called a device-level frame. A frame which is
used solely for link level protocol is called a link-control frame.
Each link-level facility is assigned a unique address, called the link
address. The assignment of a link address to a link-level facility occurs
when the link-level facility performs initialization. Every frame sent
through the switch contains link-level addressing which identifies the
source and destination of the frame. Specifically, this addressing
information consists of the link addresses of the sending link-level
facility (source link address) and receiving link-level facility
(destination link address). The switch uses this addressing information in
order to make a connection from the port receiving the frame to the
correct port for sending the frame to the specified destination.
The dynamic-switch control unit 20 has a link address assigned to it for
the purpose of communicating with the channels and control units attached
to the switch.
With the configuration of FIG. 1, contention created by two or more switch
ports P receiving a frame requiring a dynamic connection to the same
switch port P and its respective link is resolved by the facilities within
the dynamic switch based on the conditions present. This contention is
resolved, independent of whether a channel or control unit is attached to
the link from each port involved. When the contention is resolved, only
one of the contending ports becomes dynamically connected to the required
port, while the other contending ports indicate on their respective links
that a port-busy condition exists at the dynamic switch.
If the desired connection cannot be made, the dynamic switch 10 returns a
link-control response frame containing a reason code giving the reason why
the connection was not made. For example, when an error is detected in a
frame that initiates a connection, a link-control-frame response (referred
to herein as a response frame) called dynamic-switch-port-reject is sent
including a reason code which indicates that a transmission error has
occurred. Some responses are generated by the ports P, and some responses
are generated by the matrix controller of the dynamic switch 10.
FIG. 3 shows a link header 40, and FIG. 4 shows a link trailer 44. Every
frame is bounded by a start-of-frame (SOF) delimiter 46 which is found in
the link header 40, and an end-of-frame (EOF) delimiter 48, which is found
in the link trailer 44. Frame delimiters 46 and 48 are composed of
combinations of special transmission characters which do not have
equivalent eight-bit data codes. In the preferred embodiment, the
transmission codes used are those disclosed in U.S. Pat. No. 4,486,739
issued Dec. 4, 1984 to Franaszek et al. for Byte Oriented DC Balanced
(0.4) 8B/10B Partitioned Block Transmission Code, assigned by the assignee
of the present invention and incorporated herein by reference. The
information contained between the frame delimiters 46 and 48 consist of
data characters which have equivalent eight-bit codes as explained in the
aforementioned Franaszek et al. patent.
In addition to the SOF 46, the link header 40 of FIG. 3 includes a
destination-address field 50, a source-address field 52 and a link-control
field 54.
As previously mentioned, the SOF 46 is a special string of transmission
characters that cannot appear in the contents of an error-free frame.
There are two types of SOF delimiters, the connect-SOF (CSOF) delimiter,
which is used as an initiate connection control to initiate the making of
a dynamic connection, and passive-SOF (PSOF) delimiter, which causes no
action with respect to making a dynamic connection.
The destination-address field 50 is the first field of the contents of a
frame and immediately follows the SOF delimiter 46. The
destination-address field 50 identifies the link-level facility of a
channel or control unit that is the destination for the frame, and is used
to route the frame to the link-level facility that is the intended
receiver. The destination link address 50 is used to determine which
physical connection is to be made, and the destination to which the frame
is to be routed through the dynamic switch 10. If no connection exists,
that is, if the port P is in the inactive state, and no busy or
dynamic-switch-port-reject conditions are present, the connection is made
and the frame is routed to the destination port.
The source-address field 52 immediately follows the destination address
field 50, and identifies the sending link-level facility.
A link-level facility provides its identity as the source of a frame by
inserting its assigned link address in the source-address field 52 of any
frame that it sends. After a frame is received with a valid source address
52, the source address 52 is used in most cases as the destination address
in any subsequent response frame of future request frames to the same
link-level facility.
The link-control field 54 indicates the type and format of the frame. The
link-control field 54, which is the last field of the link header 40,
immediately follows the source-address field 52. For the purposes of the
present invention, the link-control field 54 indicates whether the frame
is a link control frame or a device frame. When the frame is a link
control frame, the link-control field 4 also indicates the function of the
frame. Some of these functions are dynamic-switch-port reject, link-level
reject, link-level busy, dynamic-switch port busy, and other functions
necessary to report the status for link level facilities.
The information field 42 is the first field following the link header 40.
The size of the information field depends on the function performed by the
particular frame. The aforementioned reason code, for instance, is
transmitted in the information field 42 of response frames.
The link trailer 44 includes a cyclic-redundancy-check (CRC) field 56 just
before the EOF delimiter 48. The CRC field 56 contains a redundancy-check
code that is used by the receiving link-level facility to detect most
frame errors which affect the bit integrity of a frame. The address 50 and
52, link-control 54 and information 42 fields are used to generate the CRC
56 and are, therefore, protected by the CRC 56.
The end-of-frame (EOF) delimiter 48 is the last string of transmission
characters of a frame. Again, it is a specific train of transmission
characters that cannot appear in the contents of an error-free frame. When
the EOF delimiter 48 is encountered during the reception of a frame, it
signals the end of the frame and identifies the two transmission
characters immediately preceding the EOF delimiter 48 as the CRC 56 at the
end of the contents of the frame. The EOF delimiter 48 also indicates the
extent of the frame for purposes of any applicable frame-length checks.
Idle characters are sent over the links when frames are not being
transmitted. These idle characters, which are special characters not
having data values, maintain the links in synchronism. Sequences of
special idle characters are also transmitted to provide limited
communication of special commands.
Each link-level facility includes a microcode controlled processor for
performing the functions shown in the flow diagrams herein.
In the present invention, the request-node-identifier (RID) function
provides a method for acquiring the node identifier of the recipient. The
node identifier includes self-description information of a device attached
to the channel path, where the point of attachment determines a node. The
product that is attached to, and can provide self-description information
on, one or more channel paths is referred to herein as a self-describing
product (SDP). The format and content of the node descriptor is described
in connection with FIG. 12 herein.
Upon accepting an RID frame, the receiving link-level facility checks
whether it has a valid node identifier. The normal response is an IDR
frame.
The eight-byte information field for the RID frame has the format shown in
FIG. 5. The format of the information may or may not be checked by the
recipient of the frame. When checking of the information field is
performed, the contents of the information field must be the same as the
defined format above. If the information field is checked and found to be
different from the defined format, a link-protocol error is detected.
The identifier-response (IDR) function confirms the successful completion
of the RID function, provides the unique node identifier of the responding
link-level facility, and indicates the validity of the node identifier.
The IDR frame is sent only as a response to an RID frame that is accepted.
The 64 byte information field of the IDR frame is as shown in FIG. 6.
Portions of the information field may be checked by the recipient of the
frame. If the recipient checks the contents of bytes 0-3 of the
information field, these bytes must be the same as the defined format of
FIG. 6. If the information field is checked and found to be different from
the defined format, a link-protocol error is detected. Bytes 4-31 of the
information field are set to zeros by the source of an IDR frame and are
ignored by the recipient of an IDR frame. The optional checking of the
node-descriptor portion of the information field and the resultant actions
are further described in connection with FIGS. 10 and 11.
FIG. 7 is a block diagram that shows the logic flow of a link-level
facility in response to the receipt of an RID frame. At 60, when a
link-level facility receives an RID frame, the link-level facility
determines the node-identifier validity, and at 61 sets the appropriate
node-ID validity code in the flag field of the node descriptor (see FIG.
12). If, while obtaining its node identifier, the link-level facility
detects an error or determines for some other reason that the
node-descriptor information is suspect (that is, not valid), then the
link-level facility at 61 sets the node-ID validity code to the value 2 in
the flag field of the node descriptor to be sent in the IDR frame.
In the response to an RID frame, the link-level facility sends an IDR frame
at 62 having a node-ID validity code of either 0 or 2 in the flag field of
the node descriptor. Since the link-level facility's node descriptor must
be either valid or not valid, a node-ID validity code of 1 is never sent
in an IDR frame.
The recipient of the IDR frame is not required to check the node-ID
validity code in the flag field unless the link-level facility requires
valid node-identifier information of its neighbor to continue the
initialization process, as will now be discussed.
An initialization process establishes the necessary conditions for elements
of a channel path to be able to sustain both link-level and device-level
communication. For each channel link-level facility or control-unit
link-level facility that is part of a channel path, the initialization
process may be thought of as a series of hierarchical steps. At each step,
a procedure is performed in the specified sequence until the procedure is
completed.
FIG. 8 is a block diagram showing the flow of an initialization procedure
for a channel link-level facility such as the channels 22 and 24 of FIG.
1. At 70, the channel does a link initialization which initializes the
channel in accordance with the link protocols as described in Serial I/O
Architecture Ordered-Set/Sequence Reception and Protocol for Managing
Sequences, IBM Technical Disclosure Bulletin, Vol. 33, No. 10B, Pages
287-197, March 1991. At 72, the channel performs a channel link-address
acquisition p | | |