ENTROPY DISTRIBUTION

Technologies for selectively distributing a same random number to multiple cryptographic circuits are described. One apparatus includes a plurality of cryptographic circuits. Each of the plurality of cryptographic circuits is to receive a random number for differential power analysis (DPA) protection of a cryptographic operation. At least two of the plurality of cryptographic circuits are configured to selectively use a same random number.

BACKGROUND

Cryptographic circuits that perform cryptographic operations are susceptible to side-channel attacks where an attacker may obtain sensitive data as the cryptographic operation is performed. One type of side-channel attack is Differential Power Analysis (DPA), where the attacker who seeks to obtain a secret key used in a cryptographic operation may study the differences in power consumption of an integrated circuit as the cryptographic operation is performed. An attacker may be an unauthorized entity that may obtain the secret key information associated with the cryptographic operation by analyzing power consumption measurements of the integrated circuit over a period of time. So, in order to secure cryptographic operations, random material (such as masks, nonces, an initialization vector (IV), key-wrapping keys, etc.) can be used with input data being processed by the cryptographic operation to obfuscate the computation or otherwise conceal the secret key information. The random material can be generated from an entropy source. Entropy is a measurement of uncertainty, disorder, or unpredictability in a system and the higher the entropy, the higher the uncertainty found in a result. An entropy source can be any type of unpredictable noise source, such as hardware sources like variance in fan noise, mouse movements, or other randomness generators. A circuit can collect or measure the randomness of the noise source and generate a random number (entropy output) based on the randomness of the noise source. Random number generators (RNGs) are hardware devices that take non-deterministic inputs from the noise source and generate unpredictable numbers as their outputs. The higher the entropy of the RNG, the less certainty (i.e. higher unpredictability) is found in the result.

Modern systems may require multiple secure cryptographic operations. Scaling the number of cryptographic operations performed increases the demand for random numbers, which can exceed a rate at which random numbers can be generated and distributed by an RNG. In particular, it will take an RNG some period of time in order to produce and deliver a random number for a single request. When multiple requests are submitted to a centralized random number generation block for servicing, as the number of requests increases, so does the overall time required to service all the requests. This interval can grow to the point where the requests are stalled beyond an acceptable period of time or possibly produce an incorrect result.

DETAILED DESCRIPTION

FIG.1Ais a block diagram of a random number generator (RNG)100that services requests for random numbers from multiple consumers over direct connections, according to one implementation. The RNG100receives a first request101from a first consumer102. The first consumer102can be a first cryptographic circuit or a first cryptographic operation. The RNG100generates a first random number103and provides the first random number103to the first consumer102in response to the first request101. The RNG100can also receive a second request105from a second consumer104. The second consumer104can be a second cryptographic circuit different from the first cryptographic circuit or a second cryptographic operation different from the first cryptographic operation. The RNG100generates a second random number107and provides the second random number107to the second consumer104in response to the second request105. The RNG100can also receive a third request109from a third consumer106. The third consumer106can be a third cryptographic circuit different from the other cryptographic circuits or a third cryptographic operation different from the other cryptographic operations. The RNG100generates a third random number111and provides the third random number111to the third consumer106in response to the third request109. The RNG100can also receive a fourth request113from a fourth consumer108. The fourth consumer108can be a fourth cryptographic circuit different from the other cryptographic circuits or a fourth cryptographic operation different from the other cryptographic operations. The RNG100generates a fourth random number115and provides the fourth random number115to the fourth consumer108in response to the fourth request113.

The RNG100is a centralized RNG that is operatively coupled with a plurality of consumers. In one embodiment, it receives requests over direct connections with the consumers in this implementation. The RNG100can receive requests over a common connection in other implementations, as illustrated inFIG.1B.

FIG.1Bis a block diagram of a random number generator (RNG)150that services requests for random numbers from multiple consumers over a common connection152, according to one implementation. The RNG150operates similarly to the RNG100described above, except the requests and random numbers are sent over the common connection152(e.g., a multi-drop bus, a multi-client interface, or other techniques familiar to those skilled in the art).

As described above, scaling the number of cryptographic operations performed increases the demand for random numbers, which can exceed a rate at which random numbers can be generated and distributed by the RNG100or RNG150. A circuit can be designed to include additional RNGs to accommodate the increase in the number of cryptographic operations expected. However, the additional RNGs are expensive in chip area and increase design complexity. Also, the demand can increase beyond the rate at which the additional RNGs can generate and distribute the random numbers.

Aspects of the present disclosure of embodiments can overcome the challenges described above and others by providing cryptographic circuits that can be selectively operated to use a same random number. Aspects of the present disclosure of embodiments can decouple the demand for random numbers from the number of cryptographic operations being performed. Aspects of the present disclosure of embodiments can provide a centralized generation scheme to support multiple consumers of random material, while achieving an area savings over a distributed generation scheme. Aspects of the present disclosure of embodiments can achieve scalable generation and distribution of random materials (e.g., masks, nonces, key-wrapping keys, etc.) by replicating and re-using the random materials. Aspects of the present disclosure of embodiments can reduce the overall time required to service all the requests. The number of requests increases when at least some random numbers generated can be shared among multiple cryptographic operations. Aspects of the present disclosure of embodiments can reduce or prevent requests from being stalled beyond the acceptable period of time or producing an incorrect result.

FIG.2Ais a block diagram of a random number generator (RNG)200with entropy distribution logic210that services requests for random numbers from multiple consumers operatively coupled via direct connections, according to at least one embodiment. The entropy distribution logic210can determine whether requests for random numbers from different consumers can use (i.e., reuse, or share) the same random number. In at least one embodiment, the entropy distribution logic210can determine which consumers requested a shared random number or a non-shared random number. This assumes that the random number for different cryptographic operations can be shared. The RNG200can produce a single random number, distribute a single random number to all requests for a shared random number, and produce and distribute a non-shared random number to each request for a non-shared random number. The non-shared random number can be a unique random number for the requesting consumer. Based on the amount of sharing allowed, the entropy distribution logic210can centralize the generation and distribution of random material and decouple the demand for random material from the number of requestors.

The RNG200receives a first request201from a first consumer202. The first consumer202can be a first cryptographic circuit (e.g., a processing circuit configured to perform a cryptographic operation) performing a first cryptographic operation. The entropy distribution logic210can determine that the first request201is for a shared random number. The RNG200generates a first random number203and provides the first random number203to the first consumer202in response to the first request201.

The RNG200can also receive a second request205from a second consumer204. The second consumer204can be a second cryptographic circuit (e.g., a processing circuit configured to perform a cryptographic operation) different from the first cryptographic circuit performing a second cryptographic operation different from the first cryptographic operation. The entropy distribution logic210can determine that the second request205is for a shared random number. So, instead of generating a second random number for the second request205, the RNG200provides the first random number203to the second consumer204in response to the second request205.

The RNG200can also receive a third request209from a third consumer206. The third consumer206can be a third cryptographic circuit (e.g., a processing circuit configured to perform a cryptographic operation) different from the other cryptographic circuits performing a third cryptographic operation different from the other cryptographic operations. The entropy distribution logic210can determine that the third request209is for a shared random number. So, instead of generating a third random number for the third request209, the RNG200provides the first random number203to the third consumer206in response to the third request209.

The RNG200can also receive a fourth request213from a fourth consumer208. The fourth consumer208can be a fourth cryptographic circuit (e.g., a processing circuit configured to perform a cryptographic operation) different from the other cryptographic circuits performing a fourth cryptographic operation different from the other cryptographic operations. The entropy distribution logic210can determine that the fourth request213is for a non-shared random number. So, the RNG100generates a second random number215and provides the second random number215to the fourth consumer208in response to the fourth request213.

In this embodiment, the RNG200is a centralized RNG that receives requests over direct (e.g., point to point) connections with the consumers it is operatively coupled with. An RNG can receive requests over a common connection (e.g., point to multi-point) in other embodiments, such as illustrated inFIG.2B.

FIG.2Bis a block diagram of a random number generator (RNG)250with entropy distribution logic210that services requests for random numbers from multiple consumers over a common connection, according to at least one embodiment. The RNG250and entropy distribution logic210operate similarly to the RNG200and entropy distribution logic210as described above, except the requests and random numbers are sent over the common connection252.

FIG.3is a block diagram of a random number generator (RNG)300with entropy distribution logic310, according to at least one embodiment. The RNG300includes a noise source302, a digitizer304, an accumulator306, a control block308, and the entropy distribution logic310. In at least one embodiment, the noise source302is an analog noise source that produces a random analog signal. The digitizer304measures the random analog signal to produce a digital value. The digital value can be a single bit or multiple bits. The digitizer304can use a clock signal301to sample the random analog signal to produce a digital bitstream that is output to the accumulator306. The accumulator306can receive the digital bitstream and produce a random number of a specified size. The accumulator306can use the clock signal301to synchronize operations of a digital circuit that combines the current output of the digitizer with accumulated values derived from previous outputs of the digitizer, and in this way generate the random number. In some embodiments (e.g., as specified by NIST standard SP-800 90A) the accumulator itself performs cryptographic processing as part of the accumulation function. The control block308can receive one or more requests303from one or more cryptographic circuits or cryptographic operations. The one or more requests303can be for shared random numbers or non-shared random numbers as described herein. The control block308can process the incoming requests303and determine an overall request for random numbers and how to address the incoming requests303. The control block308can determine whether multiple requests303from different cryptographic circuits or operations can use the same random number. For example, the control block308can be configured to operate such that it allows random numbers to be shared as long as the different cryptographic circuits are performing different cryptographic algorithms. The control block308can determine whether one or more requests303are for unique random numbers that are not shareable. The control block308can arbitrate the incoming requests303for random numbers accordingly and provide one or more random numbers as entropy output309to the entropy distribution logic310. The entropy distribution310can distribute the random numbers to the requesting cryptographic circuits or cryptographic operations as instructed by the control block308. That is, the entropy distribution310can deliver a shared random number where the incoming requests specified that the random number can be shared. The entropy distribution310can also deliver a non-shared number to only the requesting cryptographic circuit or operation where the incoming request specifies that the random number cannot be shared. Based upon the amount of sharing allowed, the control block308can provide centralized generation and distribution of random numbers and decouple the demand for random numbers in the requests303from a number of requesting cryptographic circuits or operations.

In another embodiment, the entropy distribution logic310can receive one or more requests303(illustrated as dashed lines) from one or more cryptographic circuits or cryptographic operations. The one or more requests303can be for shared random numbers or non-shared random numbers as described herein. The entropy distribution logic310can determine whether multiple requests303from different cryptographic circuits or operations can use the same random number. For example, the entropy distribution logic can be configured to operate such that it allows random numbers to be shared as long as the different cryptographic circuits are performing different cryptographic algorithms. The entropy distribution logic310can determine whether one or more requests303are for unique random numbers that are not shareable. In at least one embodiment, the entropy distribution logic310can send one of the incoming requests to the control block308to receive a single random number from the control block308and distribute the single random number as a shared random number305to the requesting cryptographic circuits or operations where the same random number can be used. The entropy distribution logic310can receive a non-shared random number from the control block308for each requesting cryptographic circuit or operation where the non-shared random number is not shareable and can distribute a non-shared random number307to the respective cryptographic circuit or operation. Based upon the amount of sharing allowed, the entropy distribution logic310can provide centralized generation and distribution of random numbers and decouple the demand for random numbers in the requests303from a number of requesting cryptographic circuits or operations.

In another embodiment, the accumulator306could take the output of the digitizer304(Entropy output) and eventually generate a random number. This could be delivered to the entropy distribution logic310in response to a request from the entropy distribution logic310based upon the incoming requests without the control block308. In another embodiment, when the control block308is present, the control block308can interact with the accumulator306to retrieve a random number and deliver the random number and the distribution information to the entropy distribution logic310.

In another embodiment, the functionality of the entropy distribution logic310can be integrated into the control block308as illustrated in the dashed box of control block308. In this embodiment, the control block308receives the multiple requests303from different cryptographic circuits or operations and provides either a shared random number305or a non-shared random number307based on whether the cryptographic circuit or operation can share the random number.

FIG.4is a block diagram of a random number generator (RNG)400with entropy distribution logic410, according to at least one embodiment. The RNG400is similar to RNG300as noted by similar reference numbers, except the RNG400includes multiple accumulators406(1)-(N), where N is a positive integer larger than 1. Each of the multiple accumulators406(1)-(N) are functionally similar to accumulator306described above (e.g., each may be designed according to NIST specification SP800-90A) and each can provide a random number. The control block408can receive one or more requests403from one or more cryptographic circuits or cryptographic operations. The one or more requests403can be for shared random numbers or non-shared random numbers as described herein. The control block408can process the incoming requests403and determine an overall request for random numbers and how to address the incoming requests403. The control block408can determine whether multiple requests403from different cryptographic circuits or operations can use the same random number. For example, the control block408can be configured to operate such that it allows random numbers to be shared as long as the different cryptographic circuits are performing different cryptographic algorithms. The control block408can determine whether one or more requests403are for unique random numbers that are not shareable. The control block408can multiplex the incoming requests403for random numbers accordingly and provide one or more random numbers as entropy output409to the entropy distribution logic410. The control block408can also control the accumulators406(1)-(N) using one or accumulation control signals411. The entropy distribution logic410can distribute the random numbers to the requesting cryptographic circuits or cryptographic operations as instructed by the control block408. That is, the entropy distribution logic410can deliver a shared random number where the incoming requests specified that the random number can be shared. The entropy distribution logic410can also deliver a non-shared number to only the requesting cryptographic circuit or operation where the incoming request specifies that the random number cannot be shared. Based upon the amount of sharing allowed, the control block408can provide centralized generation and distribution of random numbers and decouple the demand for random numbers in the requests403from a number of requesting cryptographic circuits or operations. Based upon the amount of sharing allowed, the control block408can provide centralized generation and distribution of random numbers and decouple the demand for random numbers in the requests403from a number of requesting cryptographic circuits or operations.

In another embodiment, the entropy distribution logic410is similar to the entropy distribution logic310. The entropy distribution logic410receives multiple requests403(illustrated as dashed lines) and provides either a shared random number405or a non-shared random number407based on whether the cryptographic circuit or operation can share the random number. Based upon the amount of sharing allowed, the entropy distribution logic410can provide centralized generation and distribution of random numbers and decouple the demand for random numbers in the requests403from a number of requesting cryptographic circuits or operations.

In another embodiment, the functionality of the entropy distribution logic410can be integrated into the control block408as illustrated in the dashed box of control block408. In this embodiment, the control block408receives the multiple requests403from different cryptographic circuits or operations and provides either a shared random number405or a non-shared random number407based on whether the cryptographic circuit or operation can share the random number. In another embodiment, the RNG400can operate without the control block408and the functionality of the control block408can be implemented with the entropy distribution logic410as described above.

FIG.5is a block diagram of an integrated circuit500with an entropy source502and multiple cryptographic circuits504, according to at least one embodiment. The entropy source502includes entropy distribution logic210. The entropy source502is operatively coupled to a first cryptographic circuit504(1) via a first dedicated (e.g., point-to-point) connection506. The first dedicated connection506can be a dedicated communication path. The first cryptographic circuit504(1) implements a first cryptographic algorithm that needs a non-shared random number (e.g., a unique random number) in a first instance. The entropy source502can provide a non-shared random number to the first cryptographic circuit504(1) over the first dedicated connection506for the first cryptographic operation. The first cryptographic operation504(1), at a second instance, can implement a first cryptographic operation (or another cryptographic operation) for which a shared random number can be used. The entropy source502can provide the shared random number to the first cryptographic circuit504(1) over a shared (e.g., point to multi-point) connection512for the first cryptographic operation (or the other cryptographic operation). The shared connection512can be multiple communication paths that share a common origin at the entropy source502.

In the illustrated embodiment, the entropy source502is coupled to a second cryptographic circuit504(2) via the shared connection512. In this embodiment, the second cryptographic circuit504(2) is only coupled to the entropy source502via the shared connection512. In other embodiments, the second cryptographic circuit504(2) can be coupled to the entropy source502via a dedicated connection. The second cryptographic circuit504(2) implements a second cryptographic algorithm that can use a shared random number. The entropy source502can provide the shared random number to the second cryptographic circuit504(2) over the shared connection512for the second cryptographic operation.

In the illustrated embodiment, the entropy source502is coupled to additional cryptographic circuits, including an Nth cryptographic circuit504(N) via the shared connection512and an Nth dedicated connection508, where N is a positive integer greater than two. The Nth dedicated connection508can be a dedicated communication path. In this embodiment, the Nth cryptographic circuit504(N) is only coupled to the entropy source502via the shared connection512. The Nth cryptographic circuit504(N) implements an Nth cryptographic algorithm that needs a non-shared random number (e.g., a unique random number) in a first instance. The entropy source502can provide a non-shared random number to the Nth cryptographic circuit504(N) over the Nth dedicated connection508for the Nth cryptographic operation. The Nth cryptographic operation504(N), at a second instance, can implement an Nth cryptographic operation (or another cryptographic operation) for which a shared random number can be used. The entropy source502can provide the shared random number to the Nth cryptographic circuit504(N) over the shared connection512for the Nth cryptographic operation (or the other cryptographic operation).

In at least one embodiment, the entropy distribution logic210can determine whether a request is for a non-shared unique random number or a shared random number based on the type of connection from which the request was received. For example, a request for a non-shared random number for the first cryptographic circuit504(1) can come over the first dedicated connection506, and a request for a shared random number can come over the shared connection512. In another embodiment, the entropy distribution logic210can receive a request that specifies the requirement of a non-shared random number or a shared random number. In another embodiment, the entropy distribution logic210can receive an indication of the requirement in a side-band communication, a stored profile, or from a specified type of cryptographic operation being performed by the requesting cryptographic circuit.

In at least one embodiment, any of the N cryptographic circuits504(1)-(N) can have both a dedicated connection and a shared connection. In at least one embodiment, any of the N cryptographic circuits504(1)-(N) can have only a dedicated connection or a shared connection. In other embodiments, any of the N cryptographic circuits504(1)-(N) can implement more than one cryptographic operation.

FIG.6is a block diagram of an integrated circuit600with an entropy source and multiple cryptographic circuits604, according to at least one embodiment. The entropy source602includes entropy distribution logic210that receives requests from N cryptographic circuits604(1)-(N). The cryptographic circuits604(1)-(N) can be operationally coupled to the entropy sources602in various manners. In this embodiment, each of the requests includes a parameter that specifies whether the random number can be a shared random number. The entropy distribution logic210can receive a first request606from a first cryptographic algorithm implemented on a first cryptographic circuit604(1). The first request606includes a parameter that indicates that the random number requested can be a shared random number (e.g., share=yes). The entropy distribution logic210can receive a second request608from a second cryptographic algorithm implemented on a second cryptographic circuit604(2). The second request608includes a parameter that indicates that the random number requested cannot be a shared random number (e.g., share=no). This means that the second cryptographic circuit604(2) requires a non-shared random number (e.g., a unique random number). The entropy distribution logic210can receive an Nth request612from an Nth cryptographic algorithm implemented on an Nth cryptographic circuit604(N). The Nth request612includes a parameter that indicates that the random number requested can be a shared random number (e.g., share=yes). In this case, the first cryptographic circuit604(1) and the Nth cryptographic circuit604(N) are provided with the same random number.

FIG.7is a flow diagram of a method700for selectively providing a shared random number to multiple cryptographic circuits, according to at least one embodiment. The method700may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method700is performed by the random number generator200or250ofFIGS.2A or2B. In one embodiment, the method700is performed by the entropy distribution logic210ofFIGS.2A,2B,5, or6. In one embodiment, the method700is performed by entropy distribution logic310ofFIG.3or the entropy distribution logic410ofFIG.4. In one embodiment, the method700is performed by entropy source502or integrated circuit500ofFIG.5. In one embodiment, the method700is performed by entropy source602or integrated circuit600ofFIG.6.

Referring toFIG.7, the method700begins by the processing logic receiving, at a first time, a first request for a random number from a first cryptographic circuit (block702). The processing logic receives, at the first time, a second request for a random number from a second cryptographic circuit (block704). The processing logic generates a first random number (block706). The processing logic generates a first random number (block708). The processing logic provides the first random number to the first cryptographic circuit in response to the first request (block710). The processing logic provides the first random number to the second cryptographic circuit in response to the second request (block712), and the method700ends.

In at least one embodiment, the first random number is at least one of a mask, a nonce, a seed value, an IV, or a key-wrapping key. The first cryptographic circuit and the second cryptographic circuit can use the first random number in connection with DPA protection of cryptographic operations.

In a further embodiment, the processing logic receives, at the first time, a third request for a random number from a third cryptographic circuit. The processing logic determines that the third request is for a non-shared random number. The processing logic generates a second random number. The processing logic provides the second random number to the third cryptographic circuit in response to the third request.

In a further embodiment, the processing logic receives, receiving, at a second time, a third request for a non-shared random number from the first cryptographic circuit. The processing logic receives, at the second time, a fourth request for a non-shared random number from the second cryptographic circuit. The processing logic generates a second random number and a third random number. The processing logic provides the second random number to the first cryptographic circuit in response to the third request and provides the third random number to the second cryptographic circuit in response to the fourth request.

In a further embodiment, the processing logic receives, at a second time, a third request for a random number from the first cryptographic circuit over a direct connection between the entropy source and the first cryptographic circuit. The processing logic generates a second random number. The processing logic provides the second random number to the first cryptographic circuit only in response to the third request.

In a further embodiment, the processing logic receives, at a second time, a third request for a random number from the first cryptographic circuit over a direct connection between the entropy source and the first cryptographic circuit. The processing logic generates a second random number, and the processing logic only provides the second random number to the first cryptographic circuit in response to the third request.

FIG.8is a flow diagram of a method800for selectively providing a shared random number to multiple cryptographic circuits and a non-shared random number to a single cryptographic circuit, according to at least one embodiment. The method800may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method800is performed by the random number generator200or250ofFIGS.2A or2B. In one embodiment, the method800is performed by the entropy distribution logic210ofFIGS.2A,2B,5, or6. In one embodiment, the method800is performed by entropy distribution logic310ofFIG.3or the entropy distribution logic410ofFIG.4. In one embodiment, the method800is performed by entropy source502or integrated circuit500ofFIG.5. In one embodiment, the method800is performed by entropy source602or integrated circuit600ofFIG.6.

Referring toFIG.8, the method800begins by the processing logic receiving, at a first time, a first request for a random number from a first cryptographic circuit (block802). The processing logic receives, at the first time, a second request for a random number from a second cryptographic circuit (block804). The processing logic receives, at the first time, a third request for a random number from a third cryptographic circuit (block806). The processing logic determines whether a non-shared random number (e.g., a unique random number) is required for each of the requests received at the first time (block808). The processing logic generates a first random number for requests that do not require a non-shared random number, e.g., the first and second requests and any other requests meeting this criterion (block810). The processing logic provides the first random number to the first cryptographic circuit and the second cryptographic circuit (block812). For the requests that do require a non-shared random number, e.g., the third request, the processing logic generates a second random number (block814). It should be noted that a non-shared random number can be generated for each request meeting this criterion. The processing logic only provides the second random number to the third cryptographic circuit (block816), and the method800ends.

In another embodiment, additional requests that do not require a non-shared random number can be received at the first time. The processing logic provides the first random number to the corresponding cryptographic circuits as well. Similarly, additional requests that require a non-shared random number can be received at the first time. The processing logic can generate a non-shared random number for each of these requests and provides the respective non-shared random number to only the corresponding cryptographic circuit.

In another embodiment, the processing logic receives a fourth request from the first cryptographic circuit that requires a non-shared random number at a second time. In this case, the processing logic generates a non-shared random number and provides it to the first cryptographic circuit in response to the fourth request. Similarly, the processing logic can receive, at the second time or at a third time, a fifth request from the third cryptographic circuit that does not require a non-shared random number. In this case, the processing logic generates a shared random number to provide to the third cryptographic circuit or provides a shared random number that has already been generated for other cryptographic circuits that can share the random number.

In some embodiments, when performing some operations, it can be necessary to use one or more arguments (e.g., key-wrapping keys, masks, entropy, IVs) that have a viable lifespan (time, usage count) limitation. This can be problematic when there is a real-time or high throughput requirement upon such operations. In such scenarios, a timely delivery mechanism is required to guarantee the delivery and usage of valid arguments.

Typically, such “fragile” data is delivered sequentially from the data source to each of its destinations. The transfer can include transmitting or delivering the data from the source to a single destination and waiting for an acknowledgment. Once the acknowledgment has been received, the source then commences the delivery of data to the next destination. The time required to complete all the transfers can potentially exceed the lifespan of the delivered data if there are many destinations or there is a delay in reception for one or more transfer acknowledgments. This has traditionally been addressed by introducing multiple timeout/retry timers and complicated scheduling logic to ensure timely completion of all the transfers and identify anomalous behavior.

In at least one embodiment, the situation can be improved by either broadcasting the data to all the destinations at once, similar to a multi-cast transmission in Ethernet. This can decouple the data delivery and acknowledgment without delaying the delivery of data by a previous destination’s delivery acknowledgment. These approaches can provide some following benefits, as well as others. Broadcasting the data to all destinations at once can remove any limit to the number of destinations that can be supported. The control logic can be simplified. For example, there can be a single time to track the lifespan of data and a single register to track delivery acknowledgment reception. In one embodiment, an incomplete delivery is simply indicated by the register not being fully populated by 1’s (or 0’s if the convention is reversed) at the end of the data timeout period.

It is to be understood that the above description is intended to be illustrative and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. Therefore, the disclosure scope should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.