HOME
UP
  PREV
NEXT (Example: Sequential Long Multiplication)
Hazards
»Definitions (some authors vary slightly):
- Data hazard - when an operand has not arrived in time for use,
- WaW hazard - write-after-write: the second write must occur after the first otherwise its result is lost,
- RaW or WaR hazard - write and read of a location are accidentally permuted,
- Control hazard - when it is not yet clear whether an operation should be performed,
- Name Alias hazard - we do not know if two array subscripts are equal,
- Structural hazard - insufficient physical resources to do everything at once.
(Where the address to a register file has not yet arrived we have a data hazard on the address itself, but this could be regarded
as a control hazard for the register file read operation.)
We have a structural hazard when an operation cannot proceed because a resource is already in use.
Resources that might present structural hazards are:
- Memories and register files with insufficient ports,
- Memories with variable latency, especially DRAM,
- Insufficient number of ALUs for all the arithmetic to be schedulled in current clock tick,
- Anything non-fully pipelined i.e. something that goes busy, such as long multiplication
(e.g.
»Booth Multiplier or division or a floating point unit).
A fully pipelined component cannot start a new operation on every clock
cycle. It will have fixed latency (pipeline delay). Non-fully pipelined
components have handshake wires that start it and inform the client
logic when it is ready and generally have variable latency.
Synchronous RAMs are generally fully pipelined and fixed-latency.
| Flash Player Upgrade Needed
READY
|
|