Performance optimisation of matrix multiplication with SIMD instructions and caching