![]() |
|
|
|||||||
![]() |
VHDL - Interlock and stall in CPU design? |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Hi all,
I am new to CPU design and confused with two CPU term. That is interlock and stall. What's their difference? Does interlock and stall all do insert NOP and remove the data dependency? I have copied a sentence from a CPU document "The interlock is responsible for detecting read-after-write hazards and stalling the pipeline until the hazard has been resolved. This avoids the need to insert nop directives between dependent instructions, thus keeping code size to a minimum, as well as simplifying assembler-level programming." Best regards, Davy Davy |
|
|
|
|
#2 |
|
Posts: n/a
|
Hi,
> I am new to CPU design and confused with two CPU term. That is > interlock and stall. What's their difference? Does interlock and stall > all do insert NOP and remove the data dependency? > > I have copied a sentence from a CPU document "The interlock is > responsible for detecting read-after-write hazards and stalling the > pipeline until the hazard has been resolved. This avoids the need to > insert nop directives between dependent instructions, thus keeping code > size to a minimum, as well as simplifying assembler-level programming." In this use, interlock is refering the logic that tracks dependencies between instructions, and then stalls (pauses the pipeline from the decode stage backwards) when a dependency is detected that cannot be resolved by bypassing. There are other causes of stall that are not related to the interlock, such as stalls that occur on cache misses. Cheers, Jon Jon Beniston |
|
|
|
#3 |
|
Posts: n/a
|
Hi Davy,
"Davy" <> wrote in message news: oups.com... > Hi all, > > I am new to CPU design and confused with two CPU term. That is > interlock and stall. What's their difference? Does interlock and stall > all do insert NOP and remove the data dependency? The data dependency is a property of the program being executed, and is never "removed" except by maybe changing the program. In a machine where each instruction completes before the following instruction starts, data dependencies don't cause any problems. However, when a machine is pipelined, data dependencies and anti-dependencies can lead to "hazards". An interlock circuit detects these hazards. An interlock circuit may stall one or more stages of the processor pipeline, often introducing a NOP-like "bubble", to avoid the hazard and ensure correct program execution. Note that there are other ways to manage hazards that do not involve an interlock circuit, and that stalling the processor is only the simplest, most basic way to avoid hazards. You may wish to read Hennessy and Patterson for a proper description of more advanced techniques. Cheers, -Ben- Ben Jones |
|
|
|
#4 |
|
Posts: n/a
|
Hi Davy,
Interlock in this case refers to 'dependencies solver'. It might be a simple stall logic or could be register renaming logic JoshforRefugee |
|
|
|
#5 |
|
Posts: n/a
|
"Davy" <> writes:
> Hi all, > > I am new to CPU design and confused with two CPU term. That is > interlock and stall. What's their difference? Does interlock and stall > all do insert NOP and remove the data dependency? I am not a CPU guru, and here are some my cents. Hope they are useful. 1. "stall" is a term for pipeline, and "interlock" is a method to "stall" pipeline. 2. Both interlock and stall DO NOT insert NOP. It is the work done by compiler. Compiler could insert some NOPs in executable to avoid data hazard. > > I have copied a sentence from a CPU document "The interlock is > responsible for detecting read-after-write hazards and stalling the > pipeline until the hazard has been resolved. This avoids the need to > insert nop directives between dependent instructions, thus keeping code > size to a minimum, as well as simplifying assembler-level > programming." Interlock logic could lock the pipeline when data hazard is detected to make sure the right result. So, compiler or assembler do not insert NOPs to avoid hazard, so that code size is minimized. > > Best regards, > Davy > -- Yao Qi GNU/Linux Developer Yao Qi |
|
![]() |
| Thread Tools | Search this Thread |
|
|