Software-Based Self-Test of Set-Associative Cache Memories