Theory And Practice Of Classical Matrix-Matrix Multiplication For Hierarchical Memory Architectures