Fantastic, I just had one of those AHA moments. This finally made me get why we use set-associative caches: the initial lookup by set index is the key. Somehow other written material and various lecturers failed to communicate that to me so clearly. Diagrams FTW.