A data synchronizer may couple two devices that operate at different clock rates. A data synchronizer of a second device, which receives input signal from a first device, may synchronize the input signal with the clock of the second device. One or more data synchronizers may be provisioned in a microprocessor. The width of the input signal (data signal) may be constrained to enable accurate transfer of the data signal from the first device to the second device.
The invention described herein is illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
The following description describes a data synchronizer providing high throughput. In the following description, numerous specific details such as logic implementations, resource partitioning, or sharing, or duplication implementations, types and interrelationships of system components, and logic partitioning or integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. In other instances, control structures, gate level circuits, and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation.
References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device).
For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, and digital signals). Further, firmware, software, routines, and instructions may be described herein as performing certain actions. However, it should be appreciated that such descriptions are merely for convenience and that such actions in fact result from computing devices, processors, controllers, and other devices executing the firmware, software, routines, and instructions.
A processor 100 is illustrated in
The data signal D-105 depicts a transition to logic 1 at 151 and the pulse width of D-105 is T156. The pulse width T156 may equal one clock period T of CLK-106. The output Q1 of the FF130-1 transitions to logic 1 at 152 in response to receiving the transition in CLK-1. As depicted, the output Q2 of the FF130-2 may transition to logic 1 at time point 154 in response to receiving the CLK-1 at time point 144. The transition of Q2 is delayed by a period T158 (=T) and the delay or the latency T158 may equal the difference of time points 154 and 153. As a result, the transition in D-105 at time point 157 is not transferred to the output Q2 or the transition at 157 is swallowed by the data synchronizer 101. Therefore, the output Q2 is in error.
In one embodiment, the data synchronizer 201 may comprise multiple sections with each section comprising a storage unit and a clock gating logic. In one embodiment, the data synchronizer 201 may comprise a storage unit such as a Flip-Flop (FF) 230-1 associated with a clock gating logic 203 in a first section and a Flip-Flop (FF) 230-2 associated with a clock gating logic 204 in a second section. In one embodiment, the FF230-1 and 230-2 may comprise a meta-hardened flops comprising low data resolution time or high mean time between failures (MTBF). In one embodiment, the constraint on the pulse width of the data signal D-205 may be avoided by providing a separate clock gating logic, which generate clock signal based on comparison of the input and output of each flip-flop 230.
In one embodiment, the clock gating logic 203 may be used to generate a control signal based on the comparison of the input data signal D-205 and the output Q1. In one embodiment, the control signal may stall or stop the clock signal reaching the flip-flop 230-1 if the data signal D-205 equals Q1. In one embodiment, the clock gating logic 203 may comprise an X-OR logic 210-1 and a AND logic 220-1. The X-OR logic 210-1 may receive data signal D-205 and Q1, which is the output of the FF 230-1 as the inputs. The X-OR logic 210-1 may generate a control signal such as an output O/P210-1, which may equal a logic 1 if D-205 and Q1 are unequal and a logic 0 if D-205 and Q1 are equal. The output (O/P210-1) of the X-OR logic 210-1 is coupled to the input of the AND logic 220-1.
In one embodiment, the AND logic 220-1 may receive O/P210-1 and the clock signal CLK-206 as the inputs. The AND logic 220-1 may generate one or more pulses and the width of each pulse may equal a period during which both the O/P210-1 and CLK-206 are logic 1. The FF230-1 may receive D-205 as the data input D1 and the output of the AND logic 220-1 as the clock input CLK-A. The FF230-1 may transfer the logic level on D-205 to the output Q1 in response to the changes in the logic level of the CLK-A.
In one embodiment, the clock gating logic 204 may be used to compare the input signal received at D2 (=Q1) and the output Q2 of the FF230-2. In one embodiment, the clock gating logic 204 may prevent the clock signal from reaching the flip-flop 230-2 if Q1 equals Q2. The X-OR logic 210-2 may receive Q1 and Q2 as its inputs and may generate an output O/P210-2, which may equal logic 1 if Q1 is not equal to Q2 and logic 0 otherwise. In one embodiment, the AND logic 220-2 may receive O/P210-2 and a clock signal CLK-206 as the inputs. In one embodiment, the AND logic 220-2 may generate CLK-B, which may comprise one or more pulses. In one embodiment, the width of each pulse may equal a period during which both the CLK-206 and O/P210-2 are logic 1.
In one embodiment, the FF230-2 may receive the output Q1 of the FF230-1 as data input (D2) and the output of clock gating logic 204 as the clock signal CLK-B. The FF230-2 may generate an output Q2, which may track the input signal received at D2 based on the occurrence of transition in the clock CLK-B.
Assuming that the output Q1 is at logic 0 during initialization, the output O/P210-1 may transition to logic 1 at time point 271 in response to the transition in D-205. While O/P210-1 and CLK-206 are logic 1, the AND logic 220-1 may generate a pulse of width duration K, which may be provided as CLK-A to the FF230-1. In one embodiment, the output Q1 of the FF230-1 may transition to logic 1 at time point 272 in response to the transition in the CLK-A.
Assuming that the output Q2 is at logic 0 during initialization, the output O/P210-2 may transition to logic 1 at time point 273 in response to the transition in Q1 at 272. The O/P210-2 may be held at logic 1 for the remaining time period as the inputs Q1 and Q2 to the X-OR logic 210-2 complement each other. As a result, the AND logic 220-2 may generate a train of pulses, which may approximately follow the clock signal CLK-206.
In one embodiment, the FF230-1 and 230-2 may receive a transition in the signal CLK-A and CLK-B at least once during each cycle of the clock signal CLK-206, except the first clock cycle. In one embodiment, the FF230-1 and 230-2 may transfer the input logic level to the output with a latency of one cycle. In one embodiment, the output Q1 of the FF230-1 may track the data signal D-205 with a latency of one cycle. In one embodiment, the output Q2 of the FF230-2 may track the output Q1 with a latency of one cycle. In one embodiment, the FF230-2 may not be triggered until one cycle after the FF230-1 is triggered.
Thus, the occurrence of error in the output as depicted in
Certain features of the invention have been described with reference to example embodiments. However, the description is not intended to be construed in a limiting sense. Various modifications of the example embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the invention pertains are deemed to lie within the spirit and scope of the invention.