Cache-oblivious algorithms come from Harald Prokop's MIT thesis and Charles Leiserson's group, and the recursive blocking you implement here is the same idea behind FFTW's self-tuning transforms and cache-oblivious B-trees used in some database indexes. The appeal is portability: a naive transpose can be 20x slower than blocked code on one machine and a different multiple on another, while the recursive version adapts to L1/L2/L3 automatically without hand-tuned constants.