Add first steps on complex addressing
This commit is contained in:
parent
144b4a498a
commit
f06e60b9c1
@ -41,6 +41,12 @@ pub unsafe fn flush_and_reload(p: *const u8) -> u64 {
|
||||
rdtsc_fence() - t
|
||||
}
|
||||
|
||||
pub unsafe fn only_flush(p: *const u8) -> u64 {
|
||||
let t = rdtsc_fence();
|
||||
flush(p);
|
||||
rdtsc_fence() - t
|
||||
}
|
||||
|
||||
pub unsafe fn load_and_flush(p: *const u8) -> u64 {
|
||||
maccess(p);
|
||||
let t = rdtsc_fence();
|
||||
@ -54,11 +60,6 @@ pub unsafe fn flush_and_flush(p: *const u8) -> u64 {
|
||||
flush(p);
|
||||
rdtsc_fence() - t
|
||||
}
|
||||
pub unsafe fn only_flush(p: *const u8) -> u64 {
|
||||
let t = rdtsc_fence();
|
||||
flush(p);
|
||||
rdtsc_fence() - t
|
||||
}
|
||||
|
||||
pub unsafe fn l3_and_reload(p: *const u8) -> u64 {
|
||||
flush(p);
|
||||
|
@ -1,3 +1,35 @@
|
||||
use crate::complex_addressing::CacheSlicing::{ComplexAddressing, Unsupported};
|
||||
use cpuid::MicroArchitecture;
|
||||
|
||||
pub enum CacheSlicing {
|
||||
Unsupported,
|
||||
ComplexAddressing(&'static [usize]),
|
||||
SimpleAddressing(&'static usize),
|
||||
NoSlice,
|
||||
}
|
||||
const SANDYBRIDGE_TO_SKYLAKE_FUNCTIONS: [usize; 3] = [
|
||||
0b0110_1101_0111_1101_0101_1101_0101_0001_000000,
|
||||
0b1011_1010_1101_0111_1110_1010_1010_0010_000000,
|
||||
0b1111_0011_0011_0011_0010_0100_1100_0100_000000,
|
||||
];
|
||||
// missing functions for more than 8 cores.
|
||||
|
||||
pub fn cache_slicing(uarch: MicroArchitecture, physical_cores: u8) -> CacheSlicing {
|
||||
let trailing_zeros = physical_cores.trailing_zeros();
|
||||
if physical_cores != (1 << trailing_zeros) {
|
||||
return Unsupported;
|
||||
}
|
||||
|
||||
match uarch {
|
||||
MicroArchitecture::Skylake
|
||||
| MicroArchitecture::KabyLake
|
||||
| MicroArchitecture::CoffeeLake => {
|
||||
ComplexAddressing(&SANDYBRIDGE_TO_SKYLAKE_FUNCTIONS[0..((trailing_zeros + 1) as usize)])
|
||||
}
|
||||
_ => Unsupported,
|
||||
}
|
||||
}
|
||||
|
||||
pub struct AddressHasher<'a> {
|
||||
masks: &'a [usize],
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user