Процессорный кэш
Современные процессоры очень быстро работают. Они умеют:
- одновременно выполнять несколько операций, это называется конвейерезацией.
- автоматически распаралеливать выполнение независимых операций, это называется суперскалярностью.
- переставлять операции местами, чтобы увеличить пропускную способность конвейера
- делать спекулятивное выполнение и потом отбрасывать результат
Это очень круто и очень мощно. Но есть проблема. Очень часто нужно считать данные из памяти, а потом записать результат в память. Это не распаралеливается. А память медленная отчасти из-за растояния до процессора, от того что конденсаторы не могут мгновенно разрядиться и т.д. В зависимости от устройства доступ к памяти занимает от 20 до 100 тактов процессора. Очень долго!
Стандартное решение такой задачи это кэширование. И мы кэшируем, где можем, сколько можем и когда можем. Со следующими ограничениями на всех уровнях. Чем больше кэш, тем дольше к нему доступ. Это следствие физических ограничений, все быстрое потребляет много энергии, и плотность размещения элементов ограничена.