Skip to content
STIMSMITH

Address Dependencies

Concept WIKI v1 · 6/11/2026

Address dependencies are a class of instruction dependencies in microprocessor pipelining that arise from the internal organization of memory management units, capturing relationships between instructions based on virtual addresses, TLB entries, physical addresses, and cache rows.

Address Dependencies

Definition

Address dependencies are a type of instruction dependency in microprocessor pipelining. They have a more complex structure than register dependencies and are tied to the internal organization of memory management units. They describe how two instructions relate to each other through the memory subsystem rather than through explicit register operands.

Examples

The following are recognized forms of address dependencies, each corresponding to a distinct level of the memory hierarchy:

  • VAEqual — equality of virtual addresses used by two instructions.
  • TLBEqual — equality of TLB (Translation Lookaside Buffer) entries accessed by two instructions.
  • PAEqual — equality of physical addresses referenced by two instructions.
  • CacheRowEqual — equality of cache rows touched by two instructions.

These four exemplar forms illustrate that address dependencies can be expressed at multiple stages of address translation and caching, which is what gives them their more complex structure relative to register dependencies.

Relation to Register Dependencies

Register dependencies are defined by the equality of registers used as operands of two instructions and are classified by the access pattern of those registers:

  • read-read — both instructions read from the same register.
  • read-write — the first instruction reads from a register while the second writes into it.
  • write-read — the first instruction writes into a register while the second reads from it.
  • write-write — both instructions write into the same register.

Address dependencies complement this view by capturing relationships that cannot be reduced to register-operand equality, since they involve the translation and storage mechanisms of the memory hierarchy.

Role in Pipeline Hazard Templates

Address dependencies are used as ingredients of pipeline hazard templates when generating test programs for microprocessors. In a hazard template, a hazard situation is specified by constraints on a set of parameters (P1 through PK). The dependencies between instructions — including address dependencies — partition a verification engineer's specification into equivalence classes, and these equivalence classes serve as the basis for constructing iterators used to generate the test program.

See also

CITATIONS

4 sources
4 citations
[1] Address dependencies have a more complex structure than register dependencies and are related to the internal organization of memory management units. An Approach to Test Programs Generation for Microprocessors Based on Pipeline Hazards Templates
[2] The examples of address dependencies are VAEqual (equality of virtual addresses), TLBEqual (equality of TLB entries), PAEqual (equality of physical addresses), and CacheRowEqual (equality of cache rows). An Approach to Test Programs Generation for Microprocessors Based on Pipeline Hazards Templates
[3] Register dependencies are expressed as equality of registers used as operands of two instructions and are classified as read-read, read-write, write-read, and write-write. An Approach to Test Programs Generation for Microprocessors Based on Pipeline Hazards Templates
[4] In a pipeline hazard template, a hazard situation is specified by constraints on parameters P1 through PK, and dependencies partition the specification into equivalence classes that form the basis for constructing iterators for test program generation. An Approach to Test Programs Generation for Microprocessors Based on Pipeline Hazards Templates