Статическая память, использующая в качестве ячейки хранения полупроводниковый триггер — транзисторную схему с двумя устойчивыми состояниями, востребована современными процессорами в качестве сверхоперативного запоминающего устройства. В русском языке такому устройству соответствует устоявшийся термин — кэш-память (от англ. cache — запасник).
Функционально кэш-память — это транзитный буфер быстродействующей памяти произвольного доступа и ограниченного объема, расположенный отдельно от оперативного запоминающего устройства, предназначенный для временного хранения процессором только что использованной информации или тех команд и/или данных, которые вероятно потребуются в ближайшее время.
Разделение на инструкции и данные традиционно используется только в кэш-памяти L1-уровня, которая с момента появления обычно размещается на процессорном кристалле. Кроме того, в семействе Pentium 4 существует понятие L1 Trace Cache для хранения уже декодированных инструкций. В этом случае при кэш-попадании имеет место выигрыш не только за счет упреждающего чтения команд в кэш-память, но и за счет времени декодирования. В современных процессорах Intel очередь декодированных инструкций реализована в статусе L0 (то есть, ближе к ядру, чем L1), а уровень L1 по-прежнему представлен раздельной кэш-памятью инструкций и данных.

Для L2 разделение на инструкции и данные традиционно отсутствует еще со времен 386/486, когда L2-уровень был реализован на системной плате внешними по отношению к процессору микросхемами статической памяти. Отказ от сегрегации инструкций и данных привел к тому, что этот вид кэш-памяти называется Unified L2 Cache. Соответственно, для принятия решения о кэшировании ячейки, аргументом логических функций кэш-контроллера L2 является только адрес ячейки и не является тип доступа: код или данные.

Исключения из этих правил есть только в виртуальных машинах, в частности — в Oracle VirtualBox. Эти исключения касаются декларирования кэш-памяти для CPUID, но не применимы к ее работе. Их целью является оптимизация разделения физических ресурсов между виртуальными машинами, в то время как физическая топология процессора и аппаратно реализованные алгоритмы функционирования кэш-контроллера не изменяются вследствие виртуализации. Вместе с тем, с появлением технологии Quality of Service Enforcement, гипервизор получает в свое распоряжение аппаратный механизм управления разделением ресурсов между виртуальными машинами, а потому метод поддержки CPUID для виртуальных процессоров может быть усложнен в будущем.
Рассмотрим состав и уровни кэш-памяти процессоров Intel и AMD с помощью утилиты Java CPUID (выделены номера функций Deterministic Cache Parameters, а также информация об уровнях L2-кэш):
Рис 1. Кэш-память процессора AMD Ryzen
Рис 2. Кэш-память процессора Intel Haswell
Наряду с классификацией Code/Data не следует забывать о топологии запоминающих устройств относительно ядер. Например, для Intel Haswell, кэш L1 и L2 индивидуальны для каждого ядра, а L3-кэш общий для ядер одного сокета. Поэтому размеры L1 и L2 традиционно указываются для одного ядра, размер L3 указывается для всего процессора. Подытожим сказанное следующим наблюдением:
- Кэш-память уровня L2 Unified общая с точки зрения разделения на данные и инструкции и по этому критерию отличается от L1 и похожа на L3.
- Кэш L2 индивидуален с точки зрения принадлежности к ядру — у каждого ядра (или топологической группы ядер) свой кэш L2 — и по этому критерию отличается от L3 и сходен с L1.
L4-уровень появляется в тех случаях, когда встроенное оперативное запоминающее устройство интегрированного видеоадаптера работает в качестве общей кэш-памяти либо процессор оборудуется локальной памятью HBM.