I wrote a program that multiplies two $N\times N$ matrices represented as 2D arrays by tiling the matrices into subsets with variable tile size. Each matrix element is an 8-Byte integer. I tested the runtime with a number of tile sizes ranging from $1$ to $N$ and found that the runtime is optimal with a tile size of $S$.
I ran this program on a computer that has 3 cache levels and I know the cache size, line size, and associativity of each but suppose I didn't. Is there a way that I could approximate the cache size and cache line size of one or all components of my memory hierarchy using the information I wrote in the first paragraph?