← Back to Patent Explorer
US5987620A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for a self-timed and self-enabled distributed clock

Assignee: Janus Semiconductor Research LLC
•
Filing: 1997-11-14
•
Granted: 1999-11-16
•
Expires: 2017-11-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A self-timed and self-enabled distributed clock is provided for pipeline processor design having functional blocks which include one or more pipeline stages for processing instructions and operations. Each pipeline stage of the processor includes self-timed logic and an enable signal to set up the valid data input to the next pipeline stage. The self-timed logic is used instead of a central, synchronous clock having a predetermined period and provides flexibility of expanding or contracting the clock period in multiple time units depending on the functionality of each pipeline stage. The interfacing between the pipeline stages is handled by a queue buffer which stores incoming instructions to keep the pipeline fully occupied any time there are instructions in the pipeline. A functional unit and its distributed clock are activated only if there is instruction in the pipeline and is otherwise idle. The self-timed clock provides a fixed time unit or plurality of time units to each pipeline stage which is deterministic for verification and testing purposes. The self-timed and self-enabled clock, along with the queue buffers associated therewith, provide flexibility for implementing each pipeline stage while reducing power, noise and clock skew and while improving the overall instruction-per-cycle performance of the processor.

Inventors

  • 👤 Thang Tran

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 19:04
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3867; G06F9/3871; G06F1/00; G06F1/04; G06F1/10; G06F9/3836

Claims Analysis

Total Claims: 62
Claim 1
Independent Claim 132 words
A self-timed and self-enabled clock circuit for synchronizing operation of a digital circuit, comprising: a control circuit that detects input clock pulses and that provides an enable signal while the input clock pulses are provided; and a clock delay device, coupled to the control circuit, that has a plurality of inputs and an output that provides an output clock pulse when the clock delay device is enabled, the inputs including: a feedback clock input that is coupled to the output of the clock delay device; a clock input for receiving the input clock pulses; and an enable input that receives the enable signal to enable the clock delay device; wherein the clock delay device, when enabled by the enable signal, provides output clock pulses that are synchronized with the input clock pulses.
Claim 2
Dependent Claim 132 words
A self-timed and self-enabled clock circuit for synchronizing operation of a digital circuit, comprising: a control circuit that detects input clock pulses and that provides an enable signal while the input clock pulses are provided; and a clock delay device, coupled to the control circuit, that has a plurality of inputs and an output that provides an output clock pulse when the clock delay device is enabled, the inputs including: a feedback clock input that is coupled to the output of the clock delay device; a clock input for receiving the input clock pulses; and an enable input that receives the enable signal to enable the clock delay device; wherein the clock delay device, when enabled by the enable signal, provides output clock pulses that are synchronized with the input clock pulses.
Claim 3
Dependent Claim 20 words
The clock circuit of claim 1 wherein the clock delay device comprises a plurality of delay blocks sequentially coupled together.
Claim 4
Dependent Claim 38 words
The clock circuit of claim 2 wherein the output of the clock delay device is coupled to each of the plurality of delay blocks such that each output clock pulse resets each of the plurality of delay blocks.
Claim 5
Dependent Claim 21 words
The clock circuit of claim 2 wherein at least one of the plurality of delay blocks provides an intermediate clock edge.
Claim 6
Dependent Claim 19 words
The clock circuit of claim 4 wherein the intermediate clock edge is used to control an associated functional block.
Claim 7
Dependent Claim 16 words
The clock circuit of claim 2 wherein each of the delay blocks comprises coupled logic gates.
Claim 8
Dependent Claim 18 words
The clock circuit of claim 2 wherein one of the plurality of delay blocks comprises programmable delay logic.
Claim 9
Dependent Claim 31 words
The clock circuit of claim 7 wherein the programmable delay logic comprises: a plurality of delay devices; and selection logic coupled to select any one of the plurality of delay devices.
Claim 10
Dependent Claim 47 words
The clock circuit of claim 8 further comprising: each of the plurality of delay devices receiving an external clock signal and providing a corresponding clock edge; and the selection logic selecting a delay device providing a clock edge that most closely corresponds with the external clock signal.
Claim 11
Dependent Claim 30 words
The clock circuit of claim 9 wherein the selection logic selects a delay device having a clock edge that occurs closest to a controlling edge of the external clock signal.
Claim 12
Dependent Claim 23 words
The clock circuit of claim 1 wherein the input clock pulses are provided from an output of another self-timed and self-enabled clock circuit.
Claim 13
Dependent Claim 50 words
The clock circuit of claim 1 further comprising: the clock delay device including a second clock input; and wherein the clock delay device, when enabled by the enable signal, provides output clock pulses that are synchronized with the input clock pulses and clock signals provided to the second clock input.
Claim 14
Dependent Claim 42 words
The clock circuit of claim 12 further comprising: the input clock pulses being provided from an output of a previous self-timed and self-enabled clock circuit; and the second clock input receiving clock pulses provided from a subsequent self-timed and self-enabled clock circuit.
Claim 15
Dependent Claim 24 words
The clock circuit of claim 1 further comprising: a pulse shaper circuit, coupled to the clock delay device, that provides the output clock pulses.
Claim 16
Dependent Claim 34 words
The clock circuit of claim 1 further comprising: the control circuit further including a stall input, the control circuit disabling the clock delay device if a stall signal is received at the stall input.
Claim 17
Dependent Claim 153 words
A distributed clock system for a digital circuit, comprising: a first self clock that provides first output clock pulses when enabled, the first self clock comprising: an output, a first input coupled to the output and a second input; wherein the first self clock is enabled by each clock pulse received at the second input and synchronizes the first output clock pulses with respective clock signals received at the second input; and a second self clock that provides second output clock pulses when enabled, the second self clock comprising: an output, a first input coupled to the output of the second self clock, and a second input coupled to the output of the first self clock; wherein the second self clock is enabled by each clock pulse received at the second input and synchronizes the second output clock pulse with respective clock signals received at the second input of the second self clock.
Claim 18
Dependent Claim 153 words
A distributed clock system for a digital circuit, comprising: a first self clock that provides first output clock pulses when enabled, the first self clock comprising: an output, a first input coupled to the output and a second input; wherein the first self clock is enabled by each clock pulse received at the second input and synchronizes the first output clock pulses with respective clock signals received at the second input; and a second self clock that provides second output clock pulses when enabled, the second self clock comprising: an output, a first input coupled to the output of the second self clock, and a second input coupled to the output of the first self clock; wherein the second self clock is enabled by each clock pulse received at the second input and synchronizes the second output clock pulse with respective clock signals received at the second input of the second self clock.
Claim 19
Dependent Claim 25 words
The distributed clock system of claim 16 wherein the second input of the first self clock receives output clock pulses from a third self clock.
Claim 20
Dependent Claim 21 words
The distributed clock system of claim 16 wherein the second input of the first self clock receives an external clock signal.
Claim 21
Dependent Claim 45 words
The distributed clock system of claim 16 further comprising: the second clock having a third input that receives an external clock signal; and wherein the second self clock synchronizes the second output clock pulses with respective clock signals received at its second and third inputs.
Claim 22
Dependent Claim 50 words
The distributed clock system of claim 16 further comprising: the second self clock having a third input that receives output clock pulses from a third self clock; and wherein the second self clock synchronizes the second output clock pulses with respective clock signals received at its second and third inputs.
Claim 23
Dependent Claim 20 words
The distributed clock system of claim 16 wherein the first and second self clocks operate at approximately the same frequency.
Claim 24
Dependent Claim 35 words
The distributed clock system of claim 16 wherein at least one of the first and second self clocks operates at a frequency that is a multiple of other of the first and second self clocks.
Claim 25
Dependent Claim 20 words
The distributed clock system of claim 16 wherein the first and second self clocks operate asynchronously relative to each other.
Claim 26
Dependent Claim 38 words
The distributed clock system of claim 16 further comprising: a first functional block receiving the first output pulses from the first self clock; and a second functional block receiving the second output pulses from the second self clock.
Claim 27
Dependent Claim 20 words
The distributed clock system of claim 24 wherein the first and second functional blocks operate at approximately the same frequency.
Claim 28
Dependent Claim 21 words
The distributed clock system of claim 24 wherein the first and second functional blocks operate asynchronously with respect to each other.
Claim 29
Dependent Claim 63 words
The distributed clock system of claim 24 further comprising: a first queue buffer, coupled to the first functional block and receiving the first clock pulses, that receives data for the first functional block; and a second queue buffer, coupled to the second functional block and receiving the second clock pulses, that receives data from the first functional block for the second functional block.
Claim 30
Dependent Claim 44 words
The distributed clock system of claim 16 further comprising: a functional block receiving the second output pulses from the second self clock; and a queue buffer, coupled to the functional block and receiving the second clock pulses, that receives data for the functional block.
Claim 31
Dependent Claim 67 words
The distributed clock system of claim 28 further comprising: the second self clock having an enable input and providing the second output pulses if an enable signal is provided to the enable input; and a control block, coupled to the functional block, the queue buffer and the output of the first self clock, that provides the enable signal while receiving clock pulses from the first self clock.
Claim 32
Dependent Claim 42 words
The distributed clock system of claim 29 further comprising: the functional block detecting a stall condition and asserting a stall signal; and the control block receiving the stall signal and providing the enable signal only while the stall signal is not asserted.
Claim 33
Dependent Claim 45 words
The distributed clock system of claim 30 further comprising: a second functional block that detects a full condition and that asserts a full signal; and the control block receiving the full signal and providing the enable signal only while the full signal is not asserted.
Claim 34
Dependent Claim 30 words
The distributed clock system of claim 29 further comprising: the control block detecting a full condition of the queue buffer and asserting a full signal to a previous functional block.
Claim 35
Dependent Claim 228 words
A processor, comprising: a plurality of functional blocks, each comprising: a queue buffer having a data input and a data output, the data input being the data input of the respective functional block; an execution unit that has an input coupled to the data output of the queue buffer and an execution data output, the execution output being the data output of the respective functional block; a self clock that has an output, a first clock input, a feedback input coupled to the output of the self clock, and an enable input; the self clock, when enabled, providing output clock pulses that are synchronized with clock pulses received at the first clock input; and a control block, coupled to the queue buffer, the execution unit and self clock, that has an enable output coupled to the enable input of the self clock; the control block enabling the self clock while the execution unit is processing data and while clock pulses are received at the first clock input of the self clock; and the plurality of functional blocks including a first and second functional blocks coupled together; wherein a first clock input of the second functional block is coupled to a clock output of the first functional block, and wherein the data output of the first functional block is coupled to the data input of the second functional block.
Claim 36
Dependent Claim 228 words
A processor, comprising: a plurality of functional blocks, each comprising: a queue buffer having a data input and a data output, the data input being the data input of the respective functional block; an execution unit that has an input coupled to the data output of the queue buffer and an execution data output, the execution output being the data output of the respective functional block; a self clock that has an output, a first clock input, a feedback input coupled to the output of the self clock, and an enable input; the self clock, when enabled, providing output clock pulses that are synchronized with clock pulses received at the first clock input; and a control block, coupled to the queue buffer, the execution unit and self clock, that has an enable output coupled to the enable input of the self clock; the control block enabling the self clock while the execution unit is processing data and while clock pulses are received at the first clock input of the self clock; and the plurality of functional blocks including a first and second functional blocks coupled together; wherein a first clock input of the second functional block is coupled to a clock output of the first functional block, and wherein the data output of the first functional block is coupled to the data input of the second functional block.
Claim 37
Dependent Claim 30 words
The processor of claim 33 wherein the processor comprises a pipeline processor, and wherein each of the plurality of functional blocks is associated with a stage of the pipeline processor.
Claim 38
Dependent Claim 38 words
The processor of claim 33 wherein at least one functional block further comprises: a second queue buffer coupled to the execution unit; and a second self clock coupled to the control block and to the second queue buffer.
Claim 39
Dependent Claim 15 words
The processor of claim 33 wherein the queue buffer comprises a plurality of storage devices.
Claim 40
Dependent Claim 13 words
The processor of claim 36 wherein the plurality of storage devices comprise registers.
Claim 41
Dependent Claim 42 words
The processor of claim 33 further comprising: the first functional block having a self clock with a second clock input; and wherein a clock output of the second functional block is coupled to the second clock input of the first functional block.
Claim 42
Dependent Claim 20 words
The processor of claim 33 wherein at least one of the plurality of functional blocks receives an external clock signal.
Claim 43
Dependent Claim 42 words
The processor of claim 33 further comprising: the execution unit detecting a stall condition and asserting a stall signal; and the control block receiving the stall signal and disabling the self clock from providing clock pulses while the stall signal is provided.
Claim 44
Dependent Claim 32 words
The processor of claim 33 wherein the control unit includes a full input and disables the self clock from providing clock pulses while a full signal is received at the full input.
Claim 45
Dependent Claim 35 words
The processor of claim 41, the control unit including a full output, wherein the control unit detects a full condition of the queue buffer and asserts a full signal indicative thereof via the full output.
Claim 46
Dependent Claim 25 words
The processor of claim 42 further comprising: a full output of the second functional block coupled to a full input of the first functional block.
Claim 47
Dependent Claim 54 words
The processor of claim 33 further comprising: the queue buffer including a first storage device coupled to a second storage device and to the execution unit; the second storage device storing new data from a previous functional block during a stall condition; and the first storage device storing current data during the stall condition.
Claim 48
Dependent Claim 51 words
The processor of claim 33 further comprising: the queue buffer including a first storage device coupled to a second storage device and to the execution unit; the control block enabling the self clock to provide clock pulses only if valid data is stored in both the first and second storage devices.
Claim 49
Independent Claim 83 words
A method of operating each of a plurality of coupled functional blocks of a digital system, comprising: receiving input data and corresponding first input clock pulses; activating a self clock to provide an output clock pulse for each first input clock pulse; processing the input data and generating output data; generating, by the self clock, an output clock pulse to correspond with each output data; and deactivating the self clock while first input clock pulses are not received or during a stall condition.
Claim 50
Independent Claim 83 words
A method of operating each of a plurality of coupled functional blocks of a digital system, comprising: receiving input data and corresponding first input clock pulses; activating a self clock to provide an output clock pulse for each first input clock pulse; processing the input data and generating output data; generating, by the self clock, an output clock pulse to correspond with each output data; and deactivating the self clock while first input clock pulses are not received or during a stall condition.
Claim 51
Dependent Claim 36 words
The method of claim 46 further comprising: receiving, from a subsequent functional block, second input clock pulses; and synchronizing, by the self clock while enabled, output clock pulses with the first and second input clock pulses.
Claim 52
Dependent Claim 46 words
The method of claim 46, the first input clock pulses being provided from a previous functional block, further comprising: receiving, from a subsequent functional block, second input clock pulses; and operating the previous, a current and the subsequent functional blocks asynchronously with respect to each other.
Claim 53
Dependent Claim 64 words
The method of claim 46, the first input clock pulses being provided from a previous functional block, further comprising: receiving, from a subsequent functional block, second input clock pulses; and operating at least one of the previous, a current and the subsequent functional blocks at a frequency that is a multiple of at least one other of the previous, current and subsequent functional blocks.
Claim 54
Dependent Claim 19 words
The method of claim 46 further comprising: the receiving first input clock pulses comprising receiving an external clock signal.
Claim 55
Dependent Claim 30 words
The method of claim 46 further comprising generating, by the self clock, an intermediate clock edge between each of the first input clock pulses and the corresponding output clock pulses.
Claim 56
Dependent Claim 25 words
The method of claim 46 further comprising: determining a stall condition; and disabling the self clock from providing output clock pulses during the stall condition.
Claim 57
Dependent Claim 19 words
The method of claim 52 further comprising: refreshing current data in a current functional block during the stall condition.
Claim 58
Dependent Claim 27 words
The method of claim 46 further comprising: receiving a full signal from a subsequent functional block; and disabling the self clock while the full signal is asserted.
Claim 59
Dependent Claim 21 words
The method of claim 54 further comprising: refreshing current data in a current functional block while the full signal is asserted.
Claim 60
Dependent Claim 32 words
The method of claim 52 further comprising: queuing the input data in a queue buffer; detecting a full condition of the queue buffer; and disabling the self clock during the full condition.
Claim 61
Dependent Claim 19 words
The method of claim 56 further comprising: refreshing current data in a current functional block during the full condition.
Claim 62
Dependent Claim 26 words
The method of claim 56, further comprising: generating a full signal indicative of the full condition; and providing the full signal to a previous functional block.

References Cited (Backward Citations)

US5642499A Cited
US5454090A Cited
US5475320A Cited
US5710910A Cited
US5619464A Cited
US5752012A Cited
US5717910A Cited
US5802356A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-11-15 2003-05-17 2003-11-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-11-15 2007-05-17 2007-11-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-11-15 2011-05-17 2011-11-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag