The present application claims priority under 35. U.S.C. §371 and is a national phase application of International Patent Application No. PCT/GB2006/004312, filed Nov. 21, 2006, which is hereby incorporated by reference in its entirety and which claims priority to UK Patent Application No. 0524126.0, filed Nov. 26, 2005.
The present invention relates to a data transmission method and apparatus.
Conventional computer networks typically support two modes of communication. A first mode of communication is one-to-one communication. Here a message is carried from a single source to a signal destination. A second mode of communication is broadcast communication. Here a message is carried from a single source to all other elements connected to a network.
In neural systems of interconnected neurons, neurons typically have very high connectivity with one another. It is often the case that a given neuron accepts data from between 1,000 and 10,000 other neurons, and outputs data to a similar number of neurons. Neither of the two modes of communication described above is ideally suited to neural systems. If one-to-one communication is used, a large number of messages need to be sent. Specifically, if one neuron is to transmit data to 1,000 other neurons, 1,000 messages would be required. If broadcast communication is used, a message will be transmitted to all other neurons. This is again undesirable, as messages will be sent to more destinations than is necessary, and valuable bandwidth will be wasted.
Instead, a multi-cast communication mechanism would be preferable. In multi-cast communication a message is transmitted from a single source to multiple recipients, but not to all possible recipients. Multicast communication is particularly attractive in neural systems, although current multicast communications techniques are not ideally suited to neural applications.
It is an object of the present invention to obviate or mitigate at least some of the problems outlined above.
According to the present invention, there is provided a method of transmitting data between a plurality of inter-connected elements, the method comprising: receiving a message from a first element, said message comprising a routing key, processing said routing key to identify a plurality of said inter-connected elements; and transmitting data to said identified plurality of inter-connected elements, wherein processing said routing key comprises attempting to locate a routing word by performing a look up operation using said routing key, said plurality of said inter-connected elements being identified using said routing word.
Thus, the invention provides a method of transmitting data in which elements to which data is transmitted are selected on the basis of a routing key received within a message. For example, the routing key may tale the form of an identifier of an element transmitting the message, and in such circumstances the identity of the element transmitting the message is therefore used to determine the elements to which data is transmitted.
The data transmitted to the identified plurality of interconnected elements may comprise the received message. Indeed, the data transmitted may be identical to the received message. The received message may comprise a data payload. However, it is to be noted that in neural embodiments of the invention, the received message typically contains only a routing key which is considered to be a neural “spike” and no further data is therefore required.
Processing the routing key may comprise attempting to locate a routing word by performing a lookup operation using the routing key. The identified plurality of interconnected elements may then be selected using the routing word. If the attempting is unsuccessful, default data may then be used to determine elements to which data is transmitted. Specifically, at least one interconnected element may be identified using default data.
The routing word may have a bit for each of the connected elements, and the state of a respective bit may determine whether the data is communicated to one of the interconnected elements. That is, where the method of transmitting data is carried out at an element connected to N further elements, an N-bit routing word may be used, each bit representing one of the N elements. The lookup operation may comprise comparing the routing key with keys associated with the respective routing words. The routing key may comprise a plurality of bits, and any subset of those bits may be used in at least some of the comparison operation. The bits to be used may be determined for each of the keys independently. That is, each of the keys may have an associated mask which is used to ensure that only certain bits of the routing key are used in the lookup operation. The mask may be combined with the routing key using a bit-wise logical AND operation.
In preferred embodiments of the invention, the first element and the identified plurality of interconnected elements are connected to a second element, and the method is carried out at the second element.
The method above may be implemented in hardware.
The invention further provides a data carrier carrying computer readable program code configured to cause a computer to carry out the methods set out above. There is also provided a computer apparatus comprising a program memory storing processor readable instructions and a processor configured to read and execute instructions stored in the program memory. The processor readable instructions comprise instructions controlling the processor to carry out a method as set out above.
According to a further aspect of the present invention, there is provided an apparatus for transmitting data between a plurality of interconnected elements. The apparatus comprises means for receiving a message from first element, the message comprising a routing key, means for processing the routing key to identify a plurality of the interconnected elements by attempting to locate a routing word by performing a look up operation using said routing key, said plurality of said inter-connected elements being identified using said routing word, and means for transmitting data to the identified plurality of interconnected elements.
The invention also provides apparatus for transmitting data between a plurality of inter-connected elements, the apparatus comprising: a receiver interface configured to receive a message from a first element, said message comprising a routing key, a processor configured to identify a plurality of said inter-connected elements using said routing key by attempting to locate a routing word by performing a look up operation using said routing key, said plurality of said inter-connected elements being identified using said routing word, and a transmitter interface configured to transmit data to said identified plurality of inter-connected elements.
Preferably, the apparatus comprises an associative memory in communication with RAM. Data stored in the associative memory may be used to identify the plurality of interconnected elements. Having used said associative memory in this way, a routing word may then be located in the RAM.
A further aspect of the invention provides a network of interconnected elements, the networks being configured to transmit data between one another. Each element comprises a router, and the router is configured to: receive a message from a first element, the message comprising a routing key, process the routing key to identify a plurality of the interconnected elements by attempting to locate a routing word by performing a look up operation using said routing key, said plurality of said inter-connected elements being identified using said routing word, and transmit data to the identified plurality of interconnected elements.
Embodiments of the present invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
Referring first to
The router 1 carries out routing operations using a routing table of the type shown schematically in
Routing as described above effectively allows multi-cast communication in which the element from which a message is received determines elements to which data is transmitted. However, where a very large network of interconnected elements is used, the routing table shown in
Additionally or alternatively, each element may implement default routing in the case that the look up table of
Furthermore, groups of message identifiers will often need to be handled in the same way. That is, messages received from a plurality of elements may all need to generate data transmissions to the same set of elements within the network. This can be achieved by effectively ignoring some bits of the message identifier when performing the look up operation. That is, some bits of the message identifier are treated as “don't care” bits in the look up operation. An embodiment using such “don't care” bits is now described with reference to
Referring to
Second and third components 10, 11 of the routing key are, when the first component has the value ‘00’ used to perform routing by carrying out a lookup operation using the lookup table of
It can be seen that the optimisation of the routing table of
In the illustration of
The router 1 comprising the lookup table of
The structure of the router is now described with reference to
The structure of the router 1 and its operation is now described in further detail with reference with
The mask 19 is configured so as to correctly handle “don't care” bits of the routing key. For example, if the routing key has the form shown in
The result of the bit-wise AND operation carried out by the mask gating 20 is output to the comparator 22 along with the key 21 associated with that entry of the associative memory. If the comparison is successful, routing data 23 stored in the lookup RAM 15 and associated with the described entry of the associative memory is read and output as indicated by the arrow 18.
The preceding description of
The preceding description of
The write arrangement of
It can further be seen from
In
Referring again to
The preceding description has been concerned with a router routing data between elements in a network of interconnected elements. However the invention is also applicable to routing within elements. For example, referring now to
Routing and communication methods in accordance with the present invention have particular applicability in neural systems in which neurons communicate with one another. Such systems require efficient multi-cast communication of the type provided by the present invention. Such systems can be implemented using elements having the form shown in
It will be appreciated that the routing tables used in embodiments of the present invention must be defined. Routing tables may be configured using external software. For example, in neural implementations of the invention neural netlists are provided describing neuron interconnections, and neurons are then mapped onto processors to determine routing table entries. This is a similar process to FPGA configuration. Resource constraints such as routing table size and bandwidth limitations must be taken into account during the mapping process. When a suitable routing table is generated it can then be written using a method as described with reference to
For static applications, the routing table is fixed. However, it is possible to allow local processors to modify routing tables while the system is running. This allows developmental processes to be modelled, for example in neural based systems. Changes to routing tables during system operation must, of course, be carried out with care to ensure that desired routings are always obtained.
Preferred embodiments of the present invention have been described above. It will however be appreciated that various modifications can be made to such embodiments without departing from the spirit and scope of the invention, as defined by the appended claims. For example, the invention has been described such that an identifier of an element from which a message emanates is used to determine routing. This need not be the case. The element from which the message emanates can provide any suitable data within the message to be used as the routing key in the lookup operation.
Additionally, the illustration of
Number | Date | Country | Kind |
---|---|---|---|
0524126.0 | Nov 2005 | GB | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/GB2006/004312 | 11/21/2006 | WO | 00 | 5/23/2008 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2007/060400 | 5/31/2007 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5181017 | Frey et al. | Jan 1993 | A |
5396470 | Storn | Mar 1995 | A |
5414704 | Spinney | May 1995 | A |
5909440 | Ferguson et al. | Jun 1999 | A |
6212183 | Wilford | Apr 2001 | B1 |
6240003 | McElroy | May 2001 | B1 |
6639819 | Uzawa et al. | Oct 2003 | B2 |
7017089 | Huse | Mar 2006 | B1 |
7126946 | Beadle et al. | Oct 2006 | B2 |
7213101 | Srinivasan et al. | May 2007 | B1 |
7228378 | Pereira | Jun 2007 | B1 |
7260675 | Bhugra et al. | Aug 2007 | B1 |
7325239 | Hariharan et al. | Jan 2008 | B2 |
7389359 | Jain et al. | Jun 2008 | B2 |
7409526 | Ng et al. | Aug 2008 | B1 |
7451288 | Goettfert et al. | Nov 2008 | B2 |
7512572 | Furber | Mar 2009 | B2 |
7634500 | Raj | Dec 2009 | B1 |
7739445 | Venkatachary | Jun 2010 | B1 |
7783654 | Sreenath | Aug 2010 | B1 |
20030007489 | Krishnan et al. | Jan 2003 | A1 |
20030028713 | Khanna et al. | Feb 2003 | A1 |
20040008675 | Basso et al. | Jan 2004 | A1 |
20040083336 | Stark et al. | Apr 2004 | A1 |
20040233692 | Ao | Nov 2004 | A1 |
20050102685 | Hariharan et al. | May 2005 | A1 |
20060064413 | Uzawa et al. | Mar 2006 | A1 |
20070171911 | Ku | Jul 2007 | A1 |
20080267188 | Furber | Oct 2008 | A1 |
Number | Date | Country |
---|---|---|
0 410 568 | Jan 1991 | EP |
0 993 144 | Apr 2000 | EP |
2000-332752 | Nov 2000 | JP |
9900949 | Jan 1999 | WO |
WO 0219624 | Mar 2002 | WO |
03036503 | May 2003 | WO |
WO 03083669 | Oct 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20080267188 A1 | Oct 2008 | US |