Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Доп_материалы_Вычислительные_системы.doc
Скачиваний:
21
Добавлен:
23.08.2019
Размер:
3.82 Mб
Скачать

Понятие о кэш-памяти и основные принципы её работы

 Если сравнивать частотные характеристики устройств, составляющих ядро современных персональных компьютеров, т.е. центральный процессор (CPU), оперативную память (RAM) и системную шину, то CPU по этому показателю опережает остальные перечисленные компоненты в несколько раз. Чтобы сократить разрыв в быстродействии, между CPU и памятью стали размещать промежуточное звено- блок быстрой оперативной памяти небольшого размера, называемый кэш-память (cache memory), от слова "cache"- веранда, пристройка. Впервые кэш-память была реализована в виде дополнительного устройства, интегрированного в центральный процессор персонального компьютера, на микропроцессоре Intel 486, где её объём составлял всего 8 Кбайт. Быстродействие статической памяти, применяемой в кэше, очень велико, такая память может работать на одной частоте с CPU, но высокая стоимость памяти этого типа не позволяет использовать её в качестве основной (системной) RAM, поскольку это привело бы к недопустимому удорожанию компьютера. Использование же быстродействующей памяти в качестве буфера сравнительно небольшого размера, соединяющего CPU и основную память, позволяет поднять быстродействие компьютера без заметного его удорожания.

При обращении процессора к оперативной памяти, он сначала ищет информацию в кэше, и только если её там не оказалось, продолжает поиск в основной памяти. Считывая информацию из памяти, процессор оставляет копию в кэше. В ходе последующих операций чтения по тем же адресам памяти CPU будет обращаться только к кэшу, без затрат времени на работу с медленной основной памятью.

В основе работы кэш-памяти лежит принцип локальности. Различают два вида локальности: временная и пространственная локальность. Временная локальность заключается в том, что существует высокая степень вероятности того, что при выполнении программы чтение одних и тех же данных из памяти будет повторено в ближайшем будущем. Пространственная локальность предполагает, что при повторном чтении данных из памяти, CPU обратится к соседней ячейке памяти, следующей за той, к которой он обращается в настоящий момент. При чтении данных из памяти, в кэш копируется содержимое сразу нескольких соседних ячеек памяти, и чем больше кэш, тем выше вероятность удачного обращения процессора к быстрой кэш-памяти при чтении последующих данных.

Иерархия кэш-памяти

С появлением микропроцессоров Intel Pentium, интегрированный в CPU кэш разделён на две части. В одной хранятся только команды, в другой- только данные. Это позволяет организовать параллельное выполнение операций, процессор может получать из кэша команды и данные одновременно. В следующем поколении процессоров- Intel Pentium Pro, в составе микропроцессора появился кэш второго уровня (cache level 2), который имеет больший объём, чем кэш первого уровня (cache level 1), работающий с ним в паре. У микропроцессоров Pentium 4 XE (Extreme Edition) 3.2 ГГц с ядром Gallatin появился даже кэш третьего уровня (cache level 3). Обычно в процессорах выдерживается следующее соотношение объёмов кэш-памяти: level 1<level 2<level 3. Например, в Pentium 4 XE (с ядром Gallatin) кэш L3= 2 Мбайт, L2= 512 Кбайт, L1=8 Кбайт. Между тем, бывают исключения из этого правила – процессоры AMD Duron и VIA C3, имевшие кэш L1= 128 Кбайт (из них 64 Кбайт- под команды, 64- для данных) и L2= 64 Кбайт. С учётом иерархии кэш- памяти, работа CPU по поиску необходимой информации состоит из нескольких циклов обращения на следующие уровни иерархии памяти: в первую очередь просматривается кэш первого уровня, если запрашиваемые данные там отсутствуют, поиск продолжается в кэше второго уровня и так далее. Наименьшая задержка в работе будет, когда запрашиваемые CPU данные будут найдены сразу в кэше первого уровня, наихудшим вариантом будет обращение CPU к последней инстанции- к основной памяти. Длительность обращения процессора к кэш-памяти 1-го уровня (латентность кэша L1) составляет 4 такта работы процессора, латентность кэша L2 равна 22- 28 тактов процессора, латентность основной памяти может достигать длительности 200- 300 тактов процессора. Такая традиционная схема организации кэш-памяти ("инклюзивная" архитектура, при которой всё содержимое кэша первого уровня копируется в кэш второго уровня) оправдана только в том случае, если по объёму кэши первого и второго уровней сильно различаются. В противном случае пространство кэш-памяти используется дважды, что неэффективно. У процессора AMD Duron кэш второго уровня был “эксклюзивный”, полностью независимый от кэша первого уровня, т.е. информация, хранящаяся на 1-м уровне (128 Кбайт) не дублировалась на втором уровне (64 Кбайт). Таким образом, суммарный полезный объём кэш- памяти (эффективный объём) у Duron составлял 192 Кбайт.

В современных процессорах активно используется ещё один подвид кэша, называемый TLB (Translation Look-aside Buffer, буфер быстрого преобразования адреса). В нём хранятся адреса команд и данных, находящихся в кэше, которые, вероятнее всего, потребуются процессору в ближайшее время. Фактически блок TLB предназначен для ускорения поиска необходимой информации в кэш-памяти.

Несмотря на то, что в современных CPU кэш работает на одной частоте с процессором, увеличение объёма кэша не только увеличивает вероятность удачного попадания требуемой информации в кэш, что повышает быстродействие, но и увеличивает время на поиск информации в кэше, что особенно критично для самой высокой ступеньки иерархии- кэша первого уровня и может вызвать снижение производительности. Например, для решения определённых задач (обработка большого количества случайных данных по сложным алгоритмам) пользы от большого кэша нет, в этом случае эффективнее повышение частоты процессора.