Skip to content

Inter unit dependencies

Ashish Gehani edited this page Mar 16, 2019 · 7 revisions

The definition of a unit in Engagements 2 to 5 has not changed from Engagement 1. (It still pertains to BEEP loops.)

In Engagements 2 to 5, we no longer report unit → memory and memory → unit dependencies. Instead, we stream process these dependencies and only report final unit → unit dependencies.

In particular, we:

  1. eliminate many dependencies between units and memory locations (and vice versa) when there is no complete unit → memory → unit dependency,

  2. abstract multiple unit → read → memory dependencies between the same unit and memory instances into a single unit → memory intermediate dependency (that is abstracted away, as described below),

  3. perform the analogous abstraction for memory → write → unit dependencies, and

  4. abstract each pair of intermediate unit 1 → memory and memory → unit 2 dependencies into a single unit 1 → unit 2 inter-unit dependency.

Together, these significantly decrease the volume of inter-unit dependency information reported, without any loss of completeness in causality tracking.

Clone this wiki locally