diff --git a/tools/attack/v6-census/uniform/src/main.rs b/tools/attack/v6-census/uniform/src/main.rs index 55f362d11..a8936429f 100644 --- a/tools/attack/v6-census/uniform/src/main.rs +++ b/tools/attack/v6-census/uniform/src/main.rs @@ -117,7 +117,9 @@ fn main() { .iter() .enumerate() .map(|(s, d)| { - let ins = &loads[s % loads.len()]; + // the interleaved two-window schedule runs instruction k on window 0 then on window 1 (rows 2k + // and 2k + 1), so site s is load instruction s / 2 there and s otherwise + let ins = if sites == 2 * loads.len() { &loads[s / 2] } else { &loads[s % loads.len()] }; let w = if p.class.era.is_some() { (window(ins, mask, log2).0 as u64 + 1) as f64 } else { (1u64 << log2) as f64 } / (ins.width.max(1) as f64); let e_s = n - n * n / (2.0 * w); (d.iter().map(|w| w.count_ones() as u64).sum::() as f64 / e_s, s)