You don't need a "protected processor". At PrivateCore, we kept all key material pinned in the L3 cache and ensured it was never evicted to main memory.
Frozen Cache did something similar with No-Fill Mode.
Tresor used CPU debug registers.
Frozen Cache did something similar with No-Fill Mode.
Tresor used CPU debug registers.
Cache evictions can also be monitored by CPU performance counters, so you can detect any that do occur.
For example, in a context of password storage app, the passwords and associated text should not remain in the clear in memory, and possibly even the character buffer of entry fields such as JPasswordField.
This is the reason for the MemCrypt code mentioned earlier.
Ironically, we could test this by disabling VT-d and using a DMA device to read encrypted main memory. Here's an old demo video: https://www.youtube.com/watch?v=chvJpEmXvDk