Процессоры всегда работали быстрее, чем память. Так как процессоры и память совершенствуются параллельно, это несоответствие сохраняется. Поскольку на микросхему можно помещать все больше и больше транзисторов, разработчики процессоров создают конвейерные и суперскалярные архитектуры, что еще больше увеличивает быстродействие процессоров. Разработчики памяти обычно используют новые технологии для увеличения емкости, а не быстродействия, что делает разрыв еще большим. На практике такое несоответствие в скорости работы приводит к тому, что, когда процессор обращается к памяти, проходит несколько машинных циклов, прежде чем он получит запрошенное слово. Чем медленнее работает память, тем дольше процессору приходится ждать, тем боль¬ше циклов проходит.
Существуют технологии, объединяющие небольшую и быструю память с большой и медленной, что позволяет по разумной цене по¬лучить память и с высокой скоростью работы, и большой емкости. Память не¬большого объема с высокой скоростью работы называется кэш-памятью (от французского слова «каше» — «прятать»)
Основная идея кэш-памяти проста: в ней находятся слова, которые чаще все¬го используются. Если процессору нужно какое-нибудь слово, сначала он обра¬щается к кэш-памяти. Только в том случае, если слова там нет, он обращается к основной памяти. Если значительная часть слов находится в кэш-памяти, сред¬нее время доступа значительно сокращается.
Если программе нужен доступ к адресу А, то скорее всего после этого ей по¬надобится доступ к адресу, расположенному поблизости от А. Практически все команды обычной программы (за исключением команд перехода и вызова про¬цедур) вызываются из последовательных областей памяти. Кроме того, большую часть времени программа тратит на циклы, когда ограниченный набор команд выполняется снова и снова. Точно так же при манипулировании матрицами про¬грамма скорее всего будет обращаться много раз к одной и той же матрице, пре¬жде чем перейдет к чему-либо другому.
Ситуация, когда при последовательных обращениях к памяти в течение неко¬торого промежутка времени используется только небольшая ее область, назы¬вается принципом локальности. Этот принцип составляет основу всех систем кэш-памяти. Идея состоит в том, что когда определенное слово вызывается из памяти, оно вместе с соседними словами переносится в кэш-память, что позво¬ляет при очередном запросе быстро обращаться к следующим словам. Общее устройство процессора, кэш-памяти и основной памяти иллюстрирует рис. 2.8. Если слово считывается или записывается k раз, компьютеру требуется сделать 1 обращение к медленной основной памяти и k - 1 обращений к быстрой кэш-памяти. Чем больше k, тем выше общая производительность.