cachegrand icon indicating copy to clipboard operation
cachegrand copied to clipboard

Implement AARCH64 Armv8 support

Open danielealbano opened this issue 3 years ago • 0 comments

The only platform currently supported is AMD64 but the adding support for AARCH64 ARMv8 shouldn't be particularly challenging as most of the code has been written with portability in mind.

There are a number of element that have to be taken into account to port cachegrand to AARCH64 ARMv8, below the most relevant ones:

  • The ABI for the registries and the stack pointer is different, the right ones need to be updated as needed in fiber.s, also the struct fiber has to be updated to hold the correct registries
  • The testing and the benchmarking code rely on a specific intel instruction exposed as intrinsic by gcc which takes care of flushing out of the L1D, L2 and L3 cached data of specific pages, this functionality needs to be ported
  • The T1HA hash algorithm isn't optimized for ARM, the support for XXH3 (issue #70) should be implemented first
  • The instructions for the memory fences and atomic operations may behave differently or have different performances, it's important to review the performances using the implemented benchmarks as it may be wort to change the implementation to perform better for the AARCH64 ARMv8 architecture.

danielealbano avatar Dec 31 '21 18:12 danielealbano