Figure 5 shows all three levels of our cache hierarchy with support for robust cells. Our baseline cache hierarchy is typical of what’s found in modern processors [11] with a 32KB 8-way L1 cache, 256KB 8-way L2 cache, and a 4MB 16-way L3 cache. For each level in the cache hierarchy, we implement two ways with robust cells, while the remaining ways use standard (non-robust) cells. This adds an area overhead of 25% (L1 and L2) and 12.5% (L3) for the cache data array. We add a status bit associated with each tag indicating whether the associated line is a robust way or a non-robust way. We don’t necessarily need this extra bit if the robust ways are fixed to two specific ways (Way 0 and Way 1 in Figure 5). We also add an extra LRU bit since we implement a different replacement algorithm in the low-voltage mode.