Inter unit dependencies - ashish-gehani/SPADE GitHub Wiki
The definition of a unit in Engagements 2 to 5 has not changed from Engagement 1. (It still pertains to UBSI 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:
-
eliminate many dependencies between units and memory locations (and vice versa) when there is no complete unit → memory → unit dependency,
-
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),
-
perform the analogous abstraction for memory → write → unit dependencies, and
-
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.