Method and apparatus for extending a local PCI bus to a remote I/O backplane

- NCR Corporation

A method and apparatus for extending a PCI bus interface to a remote I/O backplane through a high speed serial link, providing a large number of I/O slots to alleviate packaging requirements. The apparatus includes a local and a remote serial bridge coupled by a serial link, which is used to transceive messages. Each serial bridge may reside either on a PCI add-in card, or directly on a motherboard. The bridge uses data buffering and a handshaking request and acknowledge protocol to assure accurate and timely data transfer.

Skip to:  ·  Claims  ·  References Cited  · Patent History  ·  Patent History

Claims

1. A method of extending one or more local buses to a remote I/O backplane comprising the steps of:

receiving a message from a local bus;
generating a serial request packet from the local bus message when the local bus message is targeted to the remote I/O backplane;
transmitting the serial request packet to the remote I/O backplane over a serial link;
receiving a serial response packet from the remote I/O backplane when specified by the serial request packet over the serial link, said serial response packet defining a local bus operation; and
performing the local bus operation indicated by the serial response packet.

2. The method of claim 1 wherein the method further comprises the steps of:

receiving a serial request acknowledge packet from the remote I/O backplane after transmitting the serial request packet to the remote I/O backplane, said serial request acknowledge packet indicating whether the remote I/O backplane received the serial request packet; and
transmitting a serial response acknowledge packet to the remote I/O backplane over the serial link after receiving the serial response packet.

3. The method of claim 2 wherein the steps of transmitting the serial request packet comprises the steps of:

determining if a buffer is available;
storing the serial request packet in a buffer when the buffer is available; and
transmitting the serial request packet from the buffer to the remote I/O backplane over the serial link when the serial link is available.

4. The method of claim 3 wherein the step of transmitting the serial request packet is repeated until the serial request acknowledge packet indicates that the serial request message was received by the remote I/O backplane.

5. The method of claim 2 wherein the step of transmitting the serial response acknowledge packet comprises the steps of:

determining if a buffer is available;
storing the serial response acknowledge packet in a buffer when the buffer is available; and
transmitting the serial response acknowledge packet from the buffer to the remote I/O backplane over the serial link when the serial link is available.

6. The method of claim 2 wherein the step of generating a serial response acknowledge packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the local bus message with the command operations code, thereby creating a serial response acknowledge packet.

7. The method of claim 2 wherein the serial response acknowledge packet comprises a plurality of data packets, each data packet formed by performing the steps of:

segmenting the local bus message into local bus message segments if the serial response acknowledge packet exceeds a predefined message length;
generating a segmented message command operations code defining serial link commands and relating the associated local bus message segments; and
combining the segmented local bus messages with the associated segmented message command operations code, thereby generating a data packet.

8. The method of claim 1 wherein the step of generating a serial request packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the local bus message with the command operations code, thereby creating a serial request packet.

9. The method of claim 1 wherein the serial request packet comprises a plurality of data packets, each data packet formed by performing the steps of:

segmenting the local bus message into local bus message segments if the serial request packet exceeds a predefined message length;
generating a segmented message command operations code defining serial link commands and relating the associated local bus message segments; and
combining the segmented local bus messages with the associated segmented message command operations code, thereby generating a data packet.

10. The method of claim 1 wherein the serial response packet comprises a plurality of serial response data packets each comprising an operations code and data, and the step of receiving the serial response packet comprising the steps of:

decoding the operations code to determine if the serial response packet extends to multiple serial response data packets; and
receiving the plurality of data packets until the operations code indicates that the last data packet was received.

11. The method of claim 1 wherein the serial response packet comprises a response message and response operations code, and the step of performing the local bus operation indicated by the signal response packet comprising the steps of:

reading the response operations code;
interpreting the response operations code to determine the local bus operation and the response message; and
performing the local bus operation.

12. The method of claim 11 wherein the step of performing the bus operation comprises the steps of:

arbitrating for the local bus; and
initiating the local bus operation when the local bus has been granted.

13. The method of claim 12 wherein the plurality of local buses comprises a PCI bus, an ICC bus, and a sideband signal bus, and the step of prioritizing messages comprises the steps of:

granting sideband signal bus messages high priority;
granting ICC bus messages moderate priority; and
granting PCI bus messages local priority.

14. The method of claim 13 wherein the assigning step comprises the steps of:

assigning a sequential identity to each remote I/O backplane entity; and
assigning an hierarchical identity to each remote I/O backplane entity.

15. The method of claim 1 further comprising the steps of:

prioritizing messages from the local buses when a plurality of local bus messages have been receiving; and
selecting the local bus message with the highest priority for transmission.

16. The method of claim 1 wherein the remote I/O backplane comprises one or more remote entities and the method further comprises the step of assigning unique identities to each remote I/O backplane entity.

17. A method of extending one or more local buses to a remote I/O backplane, comprising the steps of:

receiving a serial request packet defining a local bus operation from the remote I/O backplane over a serial link;
performing the local bus operation; and
transmitting a serial response packet to the remote I/O backplane.

18. The method of claim 17, further comprising the steps of:

transmitting a serial request acknowledge packet to the remote I/O backplane after receiving the serial request packet over the serial link; and
receiving a serial response acknowledge packet from the remote I/O back plane over the serial link.

19. The method of claim 18 wherein the step of transmitting a serial request acknowledge packet to the remote I/O backplane comprises the steps of:

decoding the serial request packet to determine if data is targeted to a local bus;
determining if a buffer is available;
storing the serial request packet in a buffer when the buffer is available; and
transmitting the serial request acknowledge packet to the remote I/O backplane when the data is targeted to the local bus and the serial link is available.

20. The method of claim 18 wherein the step of transmitting the serial request acknowledge packet further comprises the step of transmitting a busy message to the remote I/O backplane if the buffer is not available.

21. The method of claim 17 wherein the serial request packet comprises one or more serial request data packets, each comprising an operations code and data, and the step of receiving the serial request packet comprises the steps of:

decoding the operations code to determine if the serial request packet extends to more than one serial request data packet; and
receiving the plurality of data packets until the operations code indicates that the last data packet was received.

22. The method of claim 17 wherein the step of performing the bus operation comprises the steps of:

arbitrating for the local bus;
initiating the local bus operation;
receiving a local bus operation response; and
generating a serial response packet comprising the local bus operation response.

23. The method of claim 22 wherein the step of generating a serial response packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the local bus operation response with the command operations code, thereby generating the serial response packet.

24. The method of claim 22 wherein the step of generating a serial response packet comprises the steps of:

segmenting the local bus operation response if the serial response packet exceeds a predefined message length;
generating a segmented message command operations code defining serial link commands and relating the associated local bus operation response message segments; and
combining the segmented local bus operation response message segments and the segmented message command operations code, thereby generating a serial response packet.

25. The method of claim 17 wherein the method further comprises the step of assigning unique identities to each backplane bus.

26. The method of claim 25 wherein the assigning step comprises the steps of:

assigning a sequential identity to each backplane bus; and
assigning an hierarchical identity to each backplane bus.

27. A method of extending one or more local buses in a processor to a remote I/O backplane having one or more backplane buses, comprising the steps of:

receiving a message from a backplane bus;
generating a serial request packet from the backplane bus message when the backplane bus message is targeted to a local bus;
transmitting the serial request packet to the local bus over a serial link;
receiving a serial response packet from the local bus when specified by the serial request packet over the serial link, said serial response packet defining a backplane bus operation; and
performing the remote bus operation indicated by the serial response packet.

28. The method of claim 27, further comprising the steps of:

receiving a serial request acknowledge packet from the local bus after transmitting the serial request packet to the local bus, said serial request acknowledge packet indicating whether the local bus received the serial request packet; and
transmitting a serial response acknowledge packet to the local bus over the serial link after receiving the serial response packet.

29. The method of claim 28 wherein the step of transmitting the serial response acknowledge packet comprises the steps of:

determining if a buffer is available;
storing the serial response acknowledge packet in a buffer when the buffer is available; and
transmitting the serial response acknowledge packet from the buffer to the processor over the serial link when the serial link is available.

30. The method of claim 28 wherein the step of generating a serial response acknowledge packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the remote bus message with the command operations code, thereby creating a serial response acknowledge packet.

31. The method of claim 28 wherein the serial response acknowledge packet comprises a plurality of data packets, each data packet formed by performing the steps of:

segmenting the remote bus message into remote bus message segments if the serial response acknowledge packet exceeds a predefined message length;
generating a segmented message command operations code defining serial link commands and relating the associated remote bus message segments; and
combining the segmented remote bus messages with the associated segmented message command operations code, thereby generating a data packet.

32. The method of claim 27 wherein the step of transmitting the serial request packet comprises the steps of:

determining if a buffer is available;
storing the serial request packet in a buffer when the buffer is available; and
transmitting the serial request packet from the buffer to the processor over the serial link when the serial link is available.

33. The method of claim 32 wherein the step of transmitting the serial request packet is repeated until the serial request acknowledge packet indicates that the serial request packet was received by the processor.

34. The method of claim 27 wherein the step of generating a serial request packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the backplane bus message with the command operations code, thereby creating a serial request packet.

35. The method of claim 27 wherein the serial request packet comprises a plurality of data packets, each data packet formed by performing the steps of:

segmenting the backplane bus message into backplane bus message segments if the serial request packet exceeds a predefined length;
generating a segmented message command operations code defining serial link commands and relating the associated backplane bus message segments; and
combining the segmented message command operations code with the associated backplane bus message segments, thereby generating a data packet.

36. The method of claim 27 wherein the serial response packet comprises a plurality of serial response data packets each comprising an operations code and data, and the step of receiving the serial response packet comprises the steps of:

decoding the operations code to determine if the serial response packet extends to multiple serial response data packets; and
receiving the plurality of data packets until the operations code indicates that the last data packet was received.

37. The method of claim 27 wherein the serial response packet comprises a response message and a response operations code, and the step of performing the local bus operation indicated by the signal response packet comprises the steps of:

reading the response operations code;
interpreting the response operations code to determine the local bus operation and the response message; and
performing the local bus operation.

38. The method of claim 37 wherein the step of performing the bus operation comprises the steps of:

arbitrating for the local bus; and
initiating the local bus operation when the local bus has been granted.

39. The method of claim 27, further comprising the steps of:

prioritizing messages from the local buses when a plurality of local bus messages have been received; and
selecting the local bus message when the highest priority for transmission.

40. The method of claim 39 wherein the plurality of remote buses comprises a PCI bus, an ICC bus, and a sideband signal bus, and the step of prioritizing messages comprises the steps of:

granting sideband signal bus messages high priority;
granting ICC bus messages moderate priority; and
granting PCI bus messages low priority.

41. The method of claim 40 wherein the method further comprises the step of assigning unique identities for each remote I/O backplane entity.

42. The method of claim 40 wherein the assigning step comprises the steps of:

assigning a sequential identity to each remote I/O backplane bus; and
assigning an hierarchical identity of each remote I/O packplane bus.

43. A method of extending one or more local buses in a processor to a remote I/O backplane having one or more backplane buses, comprising the steps of:

receiving a serial request packet defining a remote bus operation from the processor over a serial link;
performing the backplane bus operation; and
transmitting a serial response packet to the processor over the serial link.

44. The method of claim 43, further comprising the steps of:

transmitting a serial request acknowledge packet to the processor after receiving the serial request packet over the serial link; and
receiving a serial response acknowledge packet from the processor over the serial link after transmitting a serial response packet to the processor over the serial link.

45. The method of claim 44 wherein the step of transmitting a serial request acknowledge packet to the processor comprises the steps of:

decoding the serial request packet to determine if data is targeted to a backplane bus;
determining if a buffer is available;
storing the serial request acknowledge packet in the buffer when the buffer is available; and
transmitting the serial request acknowledge packet to the remote I/O backplane when the data is targeted to the backplane bus and the buffer is available.

46. The method of claim 44 wherein the step of transmitting the serial request acknowledge packet further comprises the step of transmitting a busy message to the local bus if the buffer is not available.

47. The method of claim 43 wherein the serial request packet comprises one or more serial request data packets, each comprising an operations code and data, and the step of receiving the serial request packet comprises the steps of:

decoding the operations code to determine if the serial request packet extends to more than one serial request data packet; and
receiving the plurality of data packets until the operations code indicates that the last data packet was received.

48. The method of claim 43 wherein the step of performing the bus operation comprises the steps of:

arbitrating for the backplane bus;
initiating the backplane bus operation;
receiving a backplane bus operation response; and
generating a serial response packet comprising the backplane bus operation response.

49. The method of claim 48 wherein the step of generating a serial response packet comprises the steps of:

generating a command operations code defining serial link commands; and
combining the backplane bus operation response with the command operations code, thereby generating the serial response packet.

50. The method of claim 48 wherein the step of generating a serial response packet comprises the steps of:

segmenting the backplane bus operation response if the serial response packet exceeds a predefined message length;
generating segmented backplane bus operations code defining serial link commands and relating the local bus operation response message segments; and
combining the segmented local bus operation response message segments and the segmented message command operations code, thereby generating a serial response packet.

51. The method of claim 43 wherein the method further comprises the steps of assigning a unique entity to each backplane bus.

52. The method of claim 51 wherein the assigning step comprises the steps of:

assigning a sequential identity to each backplane bus; and
assigning an hierarchical identity to each backplane bus.

53. An apparatus for extending a processor comprising a PCI bus to a remote I/O backplane over a serial link, comprising:

a PCI bus interface processor coupled to the PCI bus,
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message, said serial link processor comprising;
means for determining the destination of the bus message, said determining means coupled to the PCI bus interface;
means for generating a serial request packet from the bus message, coupled to the determining means; and
means for performing the bus operation defined by the serial response packet; and
a serial link interface, coupled to the serial link processor and the serial link, said serial link interface comprising;
a transmitter for transmitting a serial request packet and a serial response acknowledge packet over the serial link, the transmitting means coupled to the serial link; and
a receiver for receiving a serial request acknowledge packet and a serial response packet over the serial link, the receiving means coupled to the serial link.

54. The apparatus of claim 53 wherein said generating means comprises:

means for generating a command operations code defining serial link commands; and
means for combining the bus message with the command operations code, thereby generating a serial request packet.

55. The apparatus of claim 53 wherein said serial request packet comprises a plurality of data packets, and the generating means comprises:

means for segmenting the bus message into bus message segments if the serial request package exceeds a predefined message length, coupled to the determining means;
means for generating a segmented message command operations code defining serial link commands and relating the associated bus message segments; and
means for combining the segmented bus messages with the associated segmented message command operations code, thereby generating said data packets, said combining means coupled to the generating means and the segmenting means.

56. The apparatus of claim 53 wherein the serial link processor further comprises a means for storing data in the buffer when the serial link is unavailable.

57. The apparatus of claim 53 wherein the serial link interface further comprises means for repeatedly transmitting the serial request packet until the serial acknowledge packet is received.

58. The apparatus of claim 53 wherein the serial response packet further comprises a response message and a response operations code, and the translator further comprises:

means for reading the response operations code;
means for interpreting the response operations code to determine the destination of the signal response; and
means for translating the response message into bus-compatible data, coupled to the reading means and the interpreting means.

59. The apparatus of claim 53 wherein the serial link processor further comprises a module for prioritizing bus messages.

60. An apparatus for extending a processor comprising a PCI bus to a remote I/O backplane over a serial link, comprising:

a PCI bus interface processor coupled to the PCI bus:
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message;
a serial link interface, coupled to the serial link processor and the serial link; and an ICC bus interface coupled to the bus.

61. An apparatus for extending a processor comprising a PCI bus to a remote I/O backplane over a serial link, comprising;

a PCI bus interface processor coupled to the PCI bus;
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message; said serial link processor comprising;
a decoder for interpreting the serial request packet to determine if a bus operation is required; and
means for performing the bus operation defined by the serial request packet; and
a serial link interface, coupled to the serial link processor and the serial link; said serial link interface comprising;
a transmitter for transmitting a serial response acknowledge packet and a serial request acknowledge packet over the serial link, coupled to the serial link; and
a receiver for receiving a serial response acknowledge packet over the serial link, coupled to the serial link.

62. The apparatus of claim 61 wherein the bus operation performing means comprises:

a bus arbitrator;
means for initiating the bus operation;
means for receiving a bus operation response; and
means for generating a serial response packet comprising the bus operation response, coupled to the serial link interface.

63. An apparatus for extending a processor comprising a PCI and an ICC bus to a remote I/O backplane over a serial link, comprising:

a PCI bus interface processor coupled to the PCI bus;
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message;
a serial link interface, coupled to the serial link processor and the serial link; and
an ICC interface processor, coupled to the serial link processor and the ICC bus.

64. An apparatus for extending a processor comprising a PCI bus and a JTAG bus to a remote I/O backplane over a serial link, comprising:

a PCI bus interface processor coupled to the PCI bus;
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message;
a serial link interface, coupled to the serial link processor and the serial link; and
a JTAG bus interface processor coupled to the JTAG bus and the serial interface processor.

65. An apparatus for extending a processor comprising a PCI bus and a sideband signal bus to a remote I/O backplane over a serial link, comprising:

a PCI bus interface processor coupled to the PCI bus;
a serial link processor for translating bus messages into serial link interface messages and translating serial link interface messages into a bus message;
a serial link interface, coupled to the serial link processor and the serial link; and
a sideband interface, coupled to the sideband signal bus and the PCI interface processor.
Referenced Cited
U.S. Patent Documents
4959833 September 25, 1990 Mercola et al.
5001625 March 19, 1991 Thomas et al.
5488705 January 30, 1996 LaBarbera
Other references
  • "PCI Local Bus Specification", Production Version, Revision 2.0, PCI Local Bus, Apr. 30, 1993.
Patent History
Patent number: 5764924
Type: Grant
Filed: Aug 24, 1995
Date of Patent: Jun 9, 1998
Assignee: NCR Corporation (Dayton, OH)
Inventor: Soon Chul Hong (San Diego, CA)
Primary Examiner: Ayaz R. Sheikh
Assistant Examiner: Jeffrey K. Seto
Law Firm: Merchant, Gould, Smith Edell, Welter & Schmidt
Application Number: 8/518,947
Classifications
Current U.S. Class: 395/281; 395/306
International Classification: G06F 1300;