A Lockup-Free Multiprocessor Cache Design