Architecting Secure Processor Caches