Claims
- 1. A crossbar which is operable to route data from any of a first number of input channels to any of a second number of output channels according to routing control information, each combination of an input channel and an output channel comprising one of a plurality of links, the crossbar comprising crossbar circuitry which is operable to route the data in a deterministic manner on each of the links thereby preserving a partial ordering represented by the routing control information, wherein events on different links are uncorrelated.
- 2. The crossbar of claim 1 in which the routing control information comprises split control information and merge control information which are transmitted to the crossbar on independent split control and merge control channels, the crossbar circuitry being operable to preserve the partial ordering by sending the output address over the split control channel corresponding to the input address, and the input address over the merge control channel corresponding to the output address.
- 3. The crossbar of claim 1 wherein the crossbar circuitry comprises:
the first number of split busses each corresponding to one of the input channels; and the second number of merge busses each corresponding to one of the output channels; and a plurality of intermediate channels connecting each of the split busses to each of the merge busses.
- 4. The crossbar of claim 3 wherein each split bus comprises first split circuitry for receiving the data from the corresponding input channel and a plurality of split cells, each split cell corresponding to one of the merge busses.
- 5. The crossbar of claim 3 wherein each merge bus comprises first merge circuitry for transmitting the data to the corresponding output channel and a plurality of merge cells, each merge cell corresponding to one of the split busses.
- 6. The crossbar of claim 3 wherein the crossbar circuitry employs M by 1ofN encoding for the data where M is an integer greater than or equal to one and N is an integer greater than or equal to two.
- 7. The crossbar of claim 3 wherein the crossbar circuitry employs 1ofN encoding for the routing control information where N is an integer greater than or equal to two.
- 8. The crossbar of claim 3 wherein the routing control information comprises split control information and merge control information, the split control information being encoded using 1ofA and 1ofB encoding where A*B is the second number, and the merge control information being encoded using 1ofC and 1ofD encoding where C*D is the first number.
- 9. The crossbar of claim 3 wherein the crossbar circuitry is operable to transfer the data on at least one of the links asynchronously.
- 10. The crossbar of claim 9 wherein the crossbar circuitry is operable to transfer the data on the at least one of the links using a handshake protocol.
- 11. The crossbar of claim 10 wherein the handshake protocol between a first sender and a first receiver on the at least one of the links comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 12. The crossbar of claim 10 wherein the handshake protocol is delay-insensitive.
- 13. The crossbar of claim 3 wherein the crossbar circuitry is operable to transfer the data on at least one of the links based on at least one timing assumption.
- 14. The crossbar of claim 13 wherein the at least one timing assumption comprises any of a pulse timing assumption, an interference timing assumption, and an implied-data-neutrality timing assumption.
- 15. The crossbar of claim 14 wherein the pulse timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 16. The crossbar of claim 14 wherein the implied-data-neutrality timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 17. The crossbar of claim 14 wherein the interference timing assumes an adequate timing margin between interfering operators.
- 18. The crossbar of claim 3 wherein the crossbar circuitry is operable to transfer the data on at least one of the links with reference to transitions of a clock signal.
- 19. The crossbar of claim 18 wherein events associated with an otherwise asynchronous handshake protocol are aligned with the transitions of the clock signal.
- 20. The crossbar of claim 3 further comprising hit circuitry which is operable to indicate when the routing control information corresponds to a particular one of the links.
- 21. The crossbar of claim 20 wherein the hit circuitry comprises symmetric hit circuitry which is operable to check the neutrality of the routing control information corresponding to the particular link.
- 22. The crossbar of claim 21 wherein the symmetric hit circuitry comprises a four-input consensus element.
- 23. The crossbar of claim 20 wherein the hit circuitry comprises asymmetric hit circuitry which is not operable to check the neutrality of the routing control information corresponding to the particular link.
- 24. The crossbar of claim 3 wherein the crossbar circuitry is operable to route consecutively a plurality of units of the data on a first one of the plurality of links.
- 25. The crossbar of claim 24 wherein the plurality of units of the data includes a final data unit, the crossbar circuitry being operable to route the plurality of data units until the final data unit is identified.
- 26. The crossbar of claim 25 wherein the final data unit is identified with reference to a count associated with the plurality of data units.
- 27. The crossbar of claim 26 wherein the count is fixed for all data transfers.
- 28. The crossbar of claim 26 wherein the count is variable with reference to the plurality of data units.
- 29. The crossbar of claim 25 wherein the final data unit is identified using a data field associated with the plurality of data units.
- 30. The crossbar of claim 29 wherein the data field comprises one of a tail bit and a termination character.
- 31. The crossbar of claim 25 wherein the final data unit is identified using a data field associated with the routing control information.
- 32. The crossbar of claim 3 wherein the crossbar circuitry comprises a plurality of individual crossbar circuits which together are operable to route the data from the input channels to the output channels in the deterministic manner.
- 33. The crossbar of claim 1 wherein the crossbar circuitry comprises the first number of split circuits each being operable to receive the data from a corresponding input channel, the second number of merge circuits each being operable to transmit the data to a corresponding output channel, and a plurality of router cells each being operable to transmit the data directly from a corresponding one of the split circuits to a corresponding one of the merge circuits without an intervening channel.
- 34. The crossbar of claim 33 wherein at least one pair of split and merge circuits has an intervening channel therebetween.
- 35. The crossbar of claim 34 wherein the intervening channel includes buffering.
- 36. The crossbar of claim 33 wherein the crossbar circuitry employs M by 1ofN encoding for the data where M is an integer greater than or equal to one and N is an integer greater than or equal to two.
- 37. The crossbar of claim 33 wherein the crossbar circuitry employs 1ofN encoding for the routing control information where N is an integer greater than or equal to two.
- 38. The crossbar of claim 33 wherein the routing control information comprises split control information and merge control information, the split control information being encoded using 1ofA and 1ofB encoding where A*B is the second number, and the merge control information being encoded using 1ofC and 1ofD encoding where C*D is the first number.
- 39. The crossbar of claim 33 wherein the crossbar circuitry is operable to transfer the data on at least one of the links asynchronously.
- 40. The crossbar of claim 39 wherein the crossbar circuitry is operable to transfer the data on the at least one of the links using a handshake protocol.
- 41. The crossbar of claim 40 wherein the handshake protocol between a first sender and a first receiver on the at least one of the links comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 42. The crossbar of claim 40 wherein the handshake protocol is delay-insensitive.
- 43. The crossbar of claim 33 wherein the crossbar circuitry is operable to transfer the data on at least one of the links based on at least one timing assumption.
- 44. The crossbar of claim 43 wherein the at least one timing assumption comprises any of a pulse timing assumption, an interference timing assumption, and an implied-data-neutrality timing assumption.
- 45. The crossbar of claim 44 wherein the pulse timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 46. The crossbar of claim 44 wherein the implied-data-neutrality timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 47. The crossbar of claim 44 wherein the interference timing assumes an adequate timing margin between interfering operators.
- 48. The crossbar of claim 33 wherein the crossbar circuitry is operable to transfer the data on at least one of the links with reference to transitions of a clock signal.
- 49. The crossbar of claim 48 wherein events associated with an otherwise asynchronous handshake protocol are aligned with the transitions of the clock signal.
- 50. The crossbar of claim 33 further comprising hit circuitry which is operable to indicate when the routing control information corresponds to a particular one of the links.
- 51. The crossbar of claim 50 wherein the hit circuitry comprises symmetric hit circuitry which is operable to check the neutrality of the routing control information corresponding to the particular link.
- 52. The crossbar of claim 51 wherein the symmetric hit circuitry comprises a four-input consensus element.
- 53. The crossbar of claim 50 wherein the hit circuitry comprises asymmetric hit circuitry which is not operable to check the neutrality of the routing control information corresponding to the particular link.
- 54. The crossbar of claim 33 wherein the crossbar circuitry is operable to route consecutively a plurality of units of the data on a first one of the plurality of links.
- 55. The crossbar of claim 54 wherein the plurality of units of the data includes a final data unit, the crossbar circuitry being operable to route the plurality of data units until the final data unit is identified.
- 56. The crossbar of claim 55 wherein the final data unit is identified with reference to a count associated with the plurality of data units.
- 57. The crossbar of claim 56 wherein the count is fixed for all data transfers.
- 58. The crossbar of claim 56 wherein the count is variable with reference to the plurality of data units.
- 59. The crossbar of claim 55 wherein the final data unit is identified using a data field associated with the plurality of data units.
- 60. The crossbar of claim 59 wherein the data field comprises one of a tail bit and a termination character.
- 61. The crossbar of claim 55 wherein the final data unit is identified using a data field associated with the routing control information.
- 62. The crossbar of claim 33 wherein the crossbar circuitry comprises a plurality of individual crossbar circuits which together are operable to route the data from the input channels to the output channels in the deterministic manner.
- 63. The crossbar of claim 1 wherein the first number comprises P where P is a first integer greater than or equal to 1, wherein the second number comprises Q where Q is a second integer greater than or equal to 1, and wherein P and Q are not both equal to one.
- 64. An integrated circuit comprising the crossbar of claim 1.
- 65. The integrated circuit of claim 64 wherein the integrated circuit comprises any of a CMOS integrated circuit, a GaAs integrated circuit, and a SiGe integrated circuit.
- 66. The integrated circuit of claim 64 wherein the integrated circuit comprises at least one of a programmable logic device, a field-programmable gate array, an application-specific integrated circuit, a microprocessor, a system-on-a-chip, a packet switching device, and a shared memory bridge.
- 67. At least one computer-readable medium having data structures stored therein representative of the crossbar of claim 1.
- 68. The at least one computer-readable medium of claim 67 wherein the data structures comprise a simulatable representation of the crossbar.
- 69. The at least one computer-readable medium of claim 68 wherein the simulatable representation comprises a netlist.
- 70. The at least one computer-readable medium of claim 67 wherein the data structures comprise a code description of the crossbar.
- 71. The at least one computer-readable medium of claim 70 wherein the code description corresponds to a hardware description language.
- 72. A set of semiconductor processing masks representative of at least a portion of the crossbar of claim 1.
- 73. The crossbar of claim 1 wherein the crossbar circuitry is operable to route the data on the links according to an event driven protocol.
- 74. The crossbar of claim 73 wherein the event driven protocol is asynchronous.
- 75. The crossbar of claim 73 wherein events associated with the event driven protocol are aligned with transitions of a global timing reference.
- 76. A dispatcher which is operable to route an ordered stream of instructions received on a first number of input channels to designated ones of a second number of output channels according to instruction routing information, the dispatcher comprising dispatch circuitry which is operable to route the instructions to each output channel in a deterministic manner thereby preserving a partial ordering for each output channel defined in the ordered stream, wherein instructions on different output channels are uncorrelated.
- 77. The dispatcher of claim 76 wherein the dispatch circuitry employs M by 1ofN encoding for the instructions where M is an integer greater than or equal to one and N is an integer greater than or equal to two.
- 78. The dispatcher of claim 76 wherein the dispatch circuitry employs 1ofN encoding for the instruction routing information where N is an integer greater than or equal to two.
- 79. The dispatcher of claim 76 wherein the instruction routing information comprises input control information and output control information, the input control information being encoded using 1ofA and 1ofB encoding where A*B is the second number, and the output control information being encoded using 1ofC and 1ofD encoding where C*D is the first number.
- 80. The dispatcher of claim 76 wherein the dispatch circuitry is operable to route the instructions between each of the input channels and each of the output channels asynchronously.
- 81. The dispatcher of claim 80 wherein the dispatch circuitry is operable to route the instructions asynchronously using a handshake protocol.
- 82. The dispatcher of claim 81 wherein the handshake protocol between a first sender and a first receiver on a link between a first input channel and a first output channel comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 83. The dispatcher of claim 81 wherein the handshake protocol is delay-insensitive.
- 84. The dispatcher of claim 76 wherein the dispatch circuitry comprises a crossbar operable to receive the instructions from the input channels and transmit the instructions to the output channels, the dispatch circuitry further comprising input control circuitry and output control circuitry which are operable to control the crossbar.
- 85. The dispatcher of claim 84 wherein the input control circuitry is operable to generate split control information for the crossbar with reference to the instruction routing information, the input control circuitry further being operable to generate a request bit corresponding to each pair of the input and output channels, each request bit indicating whether or not the corresponding input channel is to form a link with the corresponding output channel, the request bits also being generated with reference to the instruction routing information.
- 86. The dispatcher of claim 85 wherein the output control circuitry is operable to generate merge control information for the crossbar with reference to the request bits.
- 87. The dispatcher of claim 86 wherein the output control circuitry comprises a binary tree structure.
- 88. The dispatcher of claim 86 wherein the output control circuitry comprises a rippling ring circuit.
- 89. The dispatcher of claim 84 wherein the crossbar is operable to route the instructions to each output channel in the deterministic manner.
- 90. An integrated circuit comprising the dispatcher of claim 76.
- 91. The integrated circuit of claim 90 wherein the integrated circuit comprises any of a CMOS integrated circuit, a GaAs integrated circuit, and a SiGe integrated circuit.
- 92. At least one computer-readable medium having data structures stored therein representative of the dispatcher of claim 76.
- 93. The at least one computer-readable medium of claim 92 wherein the data structures comprise a simulatable representation of the dispatcher.
- 94. The at least one computer-readable medium of claim 93 wherein the simulatable representation comprises a netlist.
- 95. The at least one computer-readable medium of claim 92 wherein the data structures comprise a code description of the dispatcher.
- 96. The at least one computer-readable medium of claim 95 wherein the code description corresponds to a hardware description language.
- 97. A set of semiconductor processing masks representative of at least a portion of the dispatcher of claim 76.
- 98. The dispatcher of claim 76 wherein the dispatch circuitry is operable to route the instructions to at least one output channel based on at least one timing assumption.
- 99. The dipatcher of claim 98 wherein the at least one timing assumption comprises any of a pulse timing assumption, an interference timing assumption, and an implied-data-neutrality timing assumption.
- 100. The dispatcher of claim 99 wherein the pulse timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 101. The dispatcher of claim 99 wherein the implied-data-neutrality timing assumption is applied to an otherwise delay insensitive four-phase handshake.
- 102. The dispatcher of claim 99 wherein the interference timing assumes an adequate timing margin between interfering operators.
- 103. An arbiter which is operable to route a plurality of instructions received on a first number of input channels to designated ones of a second number of output channels according to instruction routing information, the arbiter comprising arbitration circuitry which is operable to arbitrate between instructions received on different input channels and designating a same output channel, and prevent any of the different input channels from transmitting a subsequent instruction until arbitration between the different input channels is complete.
- 104. The arbiter of claim 103 wherein the arbitration circuitry employs M by 1ofN encoding for the instructions where M is an integer greater than or equal to one and N is an integer greater than or equal to two.
- 105. The arbiter of claim 103 wherein the arbitration circuitry employs 1ofN encoding for the instruction routing information where N is an integer greater than or equal to two.
- 106. The arbiter of claim 103 wherein the instruction routing information comprises input control information and output control information, the input control information being encoded using 1ofA and 1ofB encoding where A*B is the second number, and the output control information being encoded using 1ofC and 1ofD encoding where C*D is the first number.
- 107. The arbiter of claim 103 wherein the arbitration circuitry is operable to route the instructions between each of the input channels and each of the output channels asynchronously.
- 108. The arbiter of claim 107 wherein the arbitration circuitry is operable to route the instructions asynchronously using a handshake protocol.
- 109. The arbiter of claim 108 wherein the handshake protocol between a first sender and a first receiver on a link between a first input channel and a first output channel comprises:
the first sender sets a data signal valid when an enable signal from the first receiver goes high; the first receiver lowers the enable signal upon receiving the valid data signal; the first sender sets the data signal neutral upon receiving the low enable signal; and the first receiver raises the enable signal upon receiving the neutral data signal.
- 110. The arbiter of claim 108 wherein the handshake protocol is delay-insensitive.
- 111. The arbiter of claim 103 wherein the arbitration circuitry comprises a crossbar operable to receive the instructions from the input channels and transmit the instructions to the output channels, the arbitration circuitry further comprising input control circuitry and output control circuitry which are operable to control the crossbar.
- 112. The arbiter of claim 111 wherein the input control circuitry is operable to generate split control information for the crossbar with reference to the instruction routing information, the input control circuitry further being operable to generate a request bit corresponding to each pair of the input and output channels, each request bit indicating whether or not the corresponding input channel is to form a link with the corresponding output channel, the request bits also being generated with reference to the instruction routing information.
- 113. The arbiter of claim 112 wherein the output control circuitry is operable to generate merge control information for the crossbar by arbitrating among the request bits.
- 114. The arbiter of claim 113 wherein the output control circuitry comprises a binary tree structure.
- 115. The arbiter of claim 114 wherein the binary tree structure comprises a plurality of arbitration circuits and merge circuits configured in a plurality of stages and being operable to arbitrate among the request bits by accumulating an index of a winning input channel.
- 116. The arbiter of claim 115 wherein behavior of a stage of the tree structure may be described using concurrent sequential processes (CSP) notation as follows:
*[{overscore (L[0])}→L[0]?, T!, A!0|{overscore (L[1])}→L[1]?, T!, A!1]where L[0] and L[1] are trigger inputs, T is a trigger output, and A is an arbitration result.
- 117. The arbiter of claim 103 wherein the arbitration circuitry comprises grant circuitry operable to prevent deadlock of the arbiter by transmitting a grant token corresponding to the same output channel to an arbitration-winning input channel.
- 118. The arbiter of claim 117 wherein the arbitration circuitry also comprises a main crossbar operable to receive the instructions from the input channels and transmit the instructions to the output channels, the arbitration circuitry further comprising input control circuitry and output control circuitry which are operable to control the main crossbar by generating first split control information and first merge control information from the instruction routing information, and wherein the grant circuitry comprises a grant crossbar operable to transmit the grant token in response to second split control information and second merge control information, the second split control information being derived from the first merge control information, and the second merge control information being derived from the first split control information.
- 119. The arbiter of claim 117 wherein the grant circuitry is implemented a slack of one or less such that a second request from a particular channel is blocked until a first request has been granted.
- 120. The arbiter of claim 103 wherein the arbitration circuitry comprises a first crossbar operable to receive the instructions from the input channels and transmit the instructions to the output channels, the arbitration circuitry also comprising input control circuitry and output control circuitry which are operable to control the first crossbar by generating first split control information and first merge control information from the instruction routing information, the arbitration circuitry also comprising a second crossbar operable to transmit data from any of the output channels to any of the input channels in response to second split control information and second merge control information, the second split control information being derived from the first merge control information, and the second merge control information being derived from the first split control information.
- 121. The arbiter of claim 120 wherein arbitration circuitry is operable to generate the second split control information and the second merge control information only in response to an indication that a two-way transaction has been requested.
- 122. The arbiter of claim 111 wherein the crossbar is operable to route the instructions to each output channel in the deterministic manner.
- 123. An integrated circuit comprising the arbiter of claim 103.
- 124. The integrated circuit of claim 123 wherein the integrated circuit comprises any of a CMOS integrated circuit, a GaAs integrated circuit, and a SiGe integrated circuit.
- 125. At least one computer-readable medium having data structures stored therein representative of the arbiter of claim 103.
- 126. The at least one computer-readable medium of claim 125 wherein the data structures comprise a simulatable representation of the arbiter.
- 127. The at least one computer-readable medium of claim 126 wherein the simulatable representation comprises a netlist.
- 128. The at least one computer-readable medium of claim 125 wherein the data structures comprise a code description of the arbiter.
- 129. The at least one computer-readable medium of claim 128 wherein the code description corresponds to a hardware description language.
- 130. A set of semiconductor processing masks representative of at least a portion of the arbiter of claim 103.
- 131. A system-on-a-chip comprising a plurality of system components interconnected via the crossbar of claim 1.
- 132. A shared memory bridge comprising a first instance of the crossbar of claim 1 as a request crossbar and a second instance of the crossbar of claim 1 as a response crossbar.
- 133. A superscalar central processing unit comprising the dispatcher of claim 76 as an instruction dispatcher.
- 134. A superscalar central processing unit comprising the crossbar of claim 1 as a register bypass.
- 135. A packet switching device comprising the crossbar of claim 1 as a switch fabric.
RELATED APPLICATION DATA
[0001] The present application claims priority from U.S. Provisional Patent Application No. 60/352,131 for ASYNCHRONOUS CROSSBAR CIRCUIT WITH DETERMINISTIC OR ARBITRATED CONTROL filed on Jan. 25, 2002 (Attorney Docket No. FULCP001P), the entire disclosure of which is incorporated herein by reference for all purposes.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60352131 |
Jan 2002 |
US |