This application claims priority pursuant to 35 U.S.C. 119(a) to United Kingdom Patent Application No. 2110239.7, filed Jul. 16, 2022, which application is incorporated herein by reference in its entirety.
This disclosure relates to data communication apparatus and methods.
It is known to provide communication Interface circuitry sometimes known as a message handling unit (MHU) to provide or facilitate data communication across different so-called “domains” such as power, clock and/or reset domains. Typically an MHU provides circuitry configured to interface with each respective domain and to provide a bridge between the different domains.
It is in the context of this type arrangement that the present disclosure arises.
In an example arrangement there is provided data communication apparatus comprising:
a message receiver; and
a message transmitter to transmit messages to the message receiver;
the message transmitter being configured to partition a payload greater than a predetermined size into a set of plural successive messages each being no larger than the predetermined size and to associate one or more flags with respective ones of the set of plural successive messages, the one or more flags indicating an ordering of messages within a set of plural successive messages; and
the message receiver comprising:
a buffer to buffer received messages of a set of plural successive messages to reassemble a payload represented by the given set of plural successive messages; and
a detector to detect an expected ordering of the one or more flags with respect to receipt by the message receiver of messages of a given set of plural successive messages.
In another example arrangement there is provided a data communication method comprising:
transmitting messages from a message transmitter to a message receiver;
the transmitting step comprising:
partitioning a payload greater than a predetermined size into a set of plural successive messages each being no larger than the predetermined size; and
associating one or more flags with respective ones of the set of plural successive messages, the one or more flags indicating an ordering of messages within a set of plural successive messages; and
receiving the messages at a message receiver, the receiving step comprising:
buffering received messages of a set of plural successive messages to reassemble a payload represented by the given set of plural successive messages; and
detecting an expected ordering of the one or more flags with respect to receipt by the message receiver of messages of a given set of plural successive messages.
Further respective aspects and features of the present technology are defined by the appended claims.
The present technique will be described further, by way of example only, with reference to embodiments thereof as illustrated in the accompanying drawings, in which:
Referring now to the drawings,
As shown schematically in
In operation, the sending circuitry 120 sends a message to the MHU 150 which may temporarily store the message in the memory 152 before sending the message on to the receiving circuitry 160.
Importantly, it is noted that the sending circuitry 120 and the receiving circuitry 160 have these functionalities for the purposes of the transmission of a particular example message (from left to right as the apparatus is drawn). In practice, a data communication node such as a processing element and associated circuitry may be connected in the first domain 100 and another data communication node in the second domain 110, with each of these notes selectively acting as a sending circuitry or a receiving circuitry depending on the direction of transfer of any given message.
The messages may have a predetermined maximum length or size of N bits, such as 32 bits. Examples of the data to be transferred can be header information (message type, recipient, sender) and payload (data to be processed, additional commands). The nature of the message content is immaterial to the operation and function of the MHU. Techniques for handling potentially longer messages will be discussed below. In brief, the MHU has the ability to send a message of N bits, which implies that messages which are longer than N bits must be split into plural successive message portions (X message portions) (each of no more than N bits) and reconstructed at the receiver. A (longer than N bit) message is therefore made up of multiple message portions where a message portion is a single quantum of data of no more than N bits sent from the sending circuitry to the receiving circuitry.
In examples of the present techniques, if multiple message portions are required to be sent to form a single message then flags (to be discussed below) are used to indicate the start and end of the plural successive messages portions which form the message.
A further introductory concept is that within a given domain, there may be multiple instances of data communication nodes (sending/receiving circuitry) 200, 210, 220 . . . connected together by interconnect circuitry 230 to provide an interface with the message handling circuitry 150, as shown schematically in
The controller/bridge circuitry 300, when receiving a message from the sending circuitry 120 by data and control signals 304, stores the message (as received from a sending circuitry) in the memory 152. The controller/bridge circuitry 310 then retrieves the stored message from the memory 152 and raises an interrupt 312 to the receiving circuitry to initiate transmission of the message by data and control signals 314 to the receiving circuitry 160.
At the receiving circuitry 160, a controller 330 may receive an interrupt 332 (the interrupt which was raised as the interrupt 312 by the MHU) and in response to receipt of the interrupt 332 it also receives data/control signals 334 (representing the data and control signals 314 provided by the MHU) relating to a received message and stores the received message or at least message portions of it in a receiving circuitry memory 340.
An interrupt 302 to the sending circuitry is generated by the controller/bridge circuitry 300 when the receiving circuitry acknowledges the data by either reading the data or writing to an acknowledge register.
Therefore, the memory 152 and the memory 340 provide respective examples of a buffer to buffer received messages of a set of plural successive messages to reassemble a payload represented by a set of plural successive messages.
As mentioned above, a predetermined maximum size such as N bits may be imposed upon the transmission of any individual message. An example of such a predetermined maximum size is 32 bits, but a different predetermined maximum size may apply in a given system. This then leads to a question of how to handle message transfers where a required payload is longer than that which can be carried by a message of that predetermined maximum size.
In the present examples, a longer payload is partitioned into multiple individual messages each complying with the predetermined maximum size. In an example shown in
These message portions are transmitted successively by the sending circuitry to the MHU, are forwarded in order by the MHU and may be rebuilt into the complete payload upon receipt by the receiving circuitry. As part of this operation, as mentioned the use of the FIFO memory 320 at the MHU is particularly convenient in order to retain the order in which messages arrive at the MHU and use that same order for their subsequent transmission on to the receiving circuitry.
In example arrangements, so-called message flags (the one or more flags being included within respective ones of the set of plural successive messages) are used to indicate at least an aspect of the ordering of the message portions. For example, one or more flags may be associated with respective ones of the set of plural successive messages each representing a portion of a longer payload, the one or more flags indicating an ordering of messages within a set of plural successive messages.
With reference to the example of
As described below, a correct or at least not-incorrect ordering of messages as received at the MHU and/or at the receiving circuitry may be detected by a detection that an end flag 510 does not precede a start flag 500, or in other words that whenever an end flag 510 is received, a start flag 500 has been received in either that or a preceding message without another intervening end flag 510. Similarly, two successive start flags 500 should not be received without an intervening end flag 510.
In the case of a single message which complies with the predetermined maximum size, as shown schematically in
Therefore, this arrangement can detect at least some message communication errors. In the case that two successive start flags 500 are received, or in the case that two successive end flags 510 are received, this indicates that something has gone wrong with the message communication arrangement. Of course, even if the start and end flags are received in the correct relative ordering, this does not guarantee that a communication error has not occurred; for example, an intermediate message or message portion not carrying either a start flag or an end flag may have been corrupted or lost. However, given that the message transmitter and the message receiver are configured to operate in separate power, clock and/or reset domains and that each domain is configured to have the respective resource (clock, power, reset) removed or applied independently of the other of the domains, the present arrangement does allow for at least a potential detection of a data communication error arising because of a reset occurring in one domain during transmission or reception of a partitioned message, which would have the effect of disturbing the expected ordering of start and end flags.
At a step 700, a message payload is generated. At a step 710, if the payload size is greater than that which can be carried by a single message of the predetermined maximum size then control passes to a step 720 at which the payload is partitioned into individual messages or portions which comply with the predetermined maximum size. If not then the step 720 is bypassed.
As mentioned above, the step 720 can involve partitioning a payload greater than a predetermined size into a set of plural successive messages each equal to the predetermined size and, when the payload has a size different to an integer multiple of the predetermined size, to include padding data in at least one of the set of plural successive messages.
Control then passes to a step 730 at which the start flag 500 is associated with a current message or message portion.
At a step 740, if at least one further portion remains to be handled then control loops round via a step 750 by which each such further portion is handled until a last portion is received, at which stage control passes to a step 760 at which the end flag is associated with a current portion. At a step 770, the set of one or more messages or message portions is transmitted.
Note that in the case that a payload does not require partitioning, this arrangement implies that the start flag and the end flag are associated with a single message representing that payload.
These steps therefore provide an example of a message transmitter being configured to partition 720 a payload greater than a predetermined size into a set of plural successive messages each being no larger than the predetermined size and to associate 730, 760 one or more flags with respective ones of the set of plural successive messages, the one or more flags 500, 510 indicating at least an aspect of an ordering of messages within a set of plural successive messages.
Such a message transmitter, or at least aspects of it, could be implemented as a programmable processor executing appropriate program instructions which, when executed by the programmable processor, cause the programmable processor to perform the method of
At a step 800 a message portion is retrieved, for example from the FIFO memory 320 or from the memory 340.
If, at a step 810, the retrieved message portion has a start flag then a detection is made at a step 820 as to whether that start flag has occurred in the correct ordering relative to any other start and end flags. If the outcome is negative then control passes to a step 830 at which an error condition is noted and handled. Otherwise, control passes to a step 840 at which a detection is made as to whether the retrieved portion has an end flag. If the outcome is negative then control returns to the step 800 to retrieve a next portion. If on the other hand, the retrieved portion does have an end flag then control passes to a step 850 in which a detection is made as to whether that end flag has occurred in the correct ordering relative to any other start and end flags. If it has not then control passes to the step 830 at which the error condition is noted and handled. If however the answer is positive from the step 850 then control passes to a step 860 at which the processing of the partition messages terminated and the partitioned payload is reassembled from the set of messages between the received start and end flags.
The detections at the steps 820, 850 may be carried out by the controller/bridge circuitry 300, 310 and/or the controller 330 as appropriate, each therefore providing an example of a detector to detect an expected ordering of the one or more flags with respect to receipt by the message receiver of messages of a given set of plural successive messages. The detector may be configured to detect an expected ordering of a start flag and an end flag, for example by detecting whether an instance of a start flag is followed by an instance of an end flag.
The step 830 provides an example in which the detector is configured to indicate an error condition in response to a detection that the one or more flags follow an unexpected ordering with respect to receipt by the message receiver of messages of the given set of plural successive messages. In terms of the handling of the error condition, in examples, in response to indication of the error condition, the message receiver is configured to perform one or more functions selected from the list consisting of:
Such a message receiver, or at least aspects of it, could be implemented as a programmable processor executing appropriate program instructions which, when executed by the programmable processor, cause the programmable processor to perform the method of
Noting that the techniques described above can be used as between sending circuitry as a transmitter and the MHU as a receiver, and/or as between the MHU and the receiving circuitry, and/or as between the sending circuitry and the receiving circuitry, the apparatus discussed above provides an example of data communication apparatus comprising:
a message receiver 150, 110; and
a message transmitter 100, 150 respectively to transmit messages to the message receiver;
the message transmitter being configured to partition a payload greater than a predetermined size into a set of plural successive messages each being no larger than the predetermined size and to associate one or more flags with respective ones of the set of plural successive messages, the one or more flags 500, 510 indicating an ordering of messages within a set of plural successive messages; and
the message receiver comprising:
a buffer 320, 340 to buffer received messages of a set of plural successive messages to reassemble a payload represented by the given set of plural successive messages; and
a detector 300, 310, 330 to detect an expected ordering of the one or more flags with respect to receipt by the message receiver of messages of a given set of plural successive messages.
transmitting (at a step 900) messages from a message transmitter to a message receiver;
the transmitting step comprising:
partitioning (at a step 910) a payload greater than a predetermined size into a set of plural successive messages each being no larger than the predetermined size; and
associating (at a step 920) one or more flags with respective ones of the set of plural successive messages, the one or more flags indicating an ordering of messages within a set of plural successive messages; and
receiving (at a step 930) the messages at a message receiver, the receiving step comprising:
buffering (at a step 940) received messages of a set of plural successive messages to reassemble a payload represented by the given set of plural successive messages; and
detecting (at a step 950) an expected ordering of the one or more flags with respect to receipt by the message receiver of messages of a given set of plural successive messages.
Such a process, or at least aspects of it, could be implemented by a programmable processor executing appropriate program instructions which, when executed by the programmable processor, cause the programmable processor to perform the method of
It will be appreciated that such program instructions, or a non-transitory machine-readable medium storing such instructions, are considered to represent embodiments of the present disclosure.
In the present application, the words “configured to . . . ” are used to mean that an element of an apparatus has a configuration able to carry out the defined operation. In this context, a “configuration” means an arrangement or manner of interconnection of hardware or software. For example, the apparatus may have dedicated hardware which provides the defined operation, or a processor or other processing device may be programmed to perform the function. “Configured to” does not imply that the apparatus element needs to be changed in any way in order to provide the defined operation.
Although illustrative embodiments of the invention have been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various changes and modifications can be effected therein by one skilled in the art without departing from the scope and spirit of the invention as defined by the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
2110239.7 | Jul 2021 | GB | national |