Что такое кэш l2 и l3. Влияние кэш-памяти на производительность компьютера

Все процессоры с конца 90-х годов имеют внутреннюю кэш-память (или просто кэш). Кэш — это быстродействующая память, в которую переносятся команды и данные, непосредственно обрабатываемые процессором.

В современных процессорах встроена кэш-память двух уровней — первого (L1) и второго (L2). С содержимым кэша L1 процессор работает несколько быстрее, а объем кэша L2 обычно несколько больше. Обращение к кэш-памяти происходит без состояния ожидания, т.е. кэш-память первого уровня (встроенный кэш) работает на частоте процессора.

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

Для того чтобы качественно разобраться с принципом работы кэшпамяти обоих уровней, рассмотрим на примере бытовую ситуацию.

Вы приходите в кафе пообедать ежедневно, в одно и то же время, и садитесь всегда за один и тот же столик. Всегда заказываете стандартный набор из трех блюд.

Официант бегает на кухню, повар их раскладывает на поднос и затем вам приносят заказ. И вот, скажем, на третий день официант, чтобы лишний раз не бегать на кухню, к назначенному времени встречает вас с уже готовым горячим обедом на подносе.

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

Хотя вас в назначенное время уже ждал поднос с заказом, но за десертом официанту все равно пришлось бежать на кухню.

А на пятый — снова меню из трех наименований. На шестой — опять десерт, но отличающийся от предыдущего. И официант, не зная, что вы из десерта захотите заказать (да и вообще не зная, будете ли вы что-либо заказывать), решается на следующий шаг: рядом с вашим столиком ставит шкафчик с несколькими наименованиями десерта.

И если вы изъявите желание, все под рукой, на кухню бежать не надо. Шкафчик с десертом — это кэш второго уровня.

От объема кэша L1 (от 16 до 128 Кбайт) и L2 (от 64 Кбайт до 512 Кбайт, в Pentium III Хеоп и AMD Opteron до 4 Мбайт) существенно зависит производительность процессора.

У процессоров Intel Pentium III и процессоров Celeron на его основе размер кэша L1 составляет 32 Кбайт. У Intel Pentium 4, а также на его базе Celeron и Хеоп-версий — всего 20 Кбайт. Процессоры AMD Duron, Athlon (включая ХР/МР) и Opteron, а также VIA СЗ содержат 128 Кбайт L1 кэша.

Современные двухъядерные процессоры имеют кэш первого уровня для каждого ядра в отдельности, поэтому иногда в описании кэша мы можем встретить цифру 128×2. Это означает, что каждое ядро процессора обладает 128 Кбайт кэш-памяти первого уровня.

Размер кэша L1 важен для получения высокой производительности в большинстве распространенных задач (офисные приложения, игры, большинство серверных приложений и т.п.). Особенно сильно его эффективность проявляется для поточных вычислений (например, обработка видеоизображения).

Это одна из причин того, что Pentium 4 относительно малоэффективен для большинства распространенных применений (хотя это компенсируется высокой тактовой частотой). Кэш L1 всегда работает (обменивается информацией с ядром процессора) на внутренней частоте процессора.

В отличие от него, кэш L2 в разных моделях процессоров работает с разной частотой (и соответственно производительностью). Начиная с Intel Pentium II во многих процессорах применялся кэш L2, работающий на частоте, вполовину меньшей, чем внутренняя частота процессора.

Такое решение использовано в устаревших процессорах Intel Pentium III (до 550 МГц) и устаревших AMD Athlon (в некоторых из них внутренний кэш L2 работал на трети частоты ядра процессора). Объем кэша L2 также различен для разных процессоров.

В устаревших, а также некоторых более новых процессорах Intel Pentium III объем кэша L2 составляет 512 Кбайт, в остальных Pentium III — 256 Кбайт. Процессор Intel Celeron на основе Pentium III выпускался с 128 и 256 Кбайт кэша L2, а на основе Pentium 4 — только со 128 Кбайт. В различных вариантах Xeon-версии Intel Pentium 4 присутствует до 4 Мбайт кэш-памяти L2.

В новых процессорах Pentium 4 (некоторые серии с частотой 2000 МГц и все — для частот выше) имеется 512 Кбайт кэша L2, в остальных Pentium 4 -256 Кбайт. В процессорах Хеоп (на основе Pentium 4) бывает 256 или 512 Кбайт кэша L2.

Кроме того, в них присутствует еще кэш-память третьего уровня L3. Интегрированная кэш-память L3 в сочетании с быстрой системной шиной формирует высокоскоростной канал обмена данными с системной памятью.

Как правило, кэш-памятью третьего уровня L3 комплектуются только процессоры для серверных решений или специальные модели «настольных» процессоров. Кэш-памятью L3 обладают, например, такие линейки процессоров, как Xeon DP, Itanium 2, Xeon MP.

Процессор AMD Duron имеет 128 Кбайт кэша L1 и 64 Кбайт кэша L2. В процессорах Athlon (кроме наиболее старых), Athlon MP и большинстве вариантов Athlon ХР присутствует 128 Кбайт кэша L1 и 256 Кбайт кэша L2, а в новейших Athlon ХР (2500+, 2800+, 3000+ и выше) — 512 Кбайт кэша L2. AMD Opteron содержит 1 Мбайт кэш-памяти L2.

Последние модели процессоров Intel Pentium D, Intel Pentium M, Intel Core 2 Duo выпускаются с 6 Мбайт кэш-памяти L2, a Core 2 Quad — 12 Мбайт кэш-памяти L2.

Последний на момент написания данной книги процессор фирмы Intel Core i7 обладает 64 Кбайт кэш-памяти L1 для каждого из 4 ядер, а также 256 Кбайт памяти L2 также для каждого ядра. Помимо кэш памяти первого и второго уровней процессор обладает и общей для всех ядер кэш-памятью третьего уровня, равной 8 Мбайт.

Для процессоров, у которых возможен разный размер кэша L2 (или в случае Intel Xeon MP — L3) у одной и той же модели, этот размер должен быть указан при продаже (от него, разумеется, зависит цена процессора). Если процессор продается в «коробочной» упаковке (поставка In-Box), на ней обычно указывается размер кэш-памяти.

Для обычных пользовательских задач (в том числе игр) важнее скорость кэша L2, чем его объем; для серверных задач, наоборот, важнее объем. Наиболее продуктивные серверы, особенно с большим объемом оперативной памяти (несколько гигабайт), требуют максимального объема и максимальной скорости кэша L2.

Непревзойденными по этим параметрам остаются Хеоп-версии процессоров Pentium III. (Процессор Xeon MP оказывается все же более производительны в серверных задачах, чем Pentium III Xeon, за счет более высокой тактовой частоты самого процессора и шины обмена информацией с памятью.) Из изложенного выше сделаем вывод: кэш-память улучшает взаимодействие между быстрым процессором и более медленной оперативной памятью, а также позволяет минимизировать периоды ожидания, возникающие при обработке данных. Решающую роль в этом играет кэш-память второго уровня, расположенная в кристалле процессора.

Чипы на большинстве современных настольных компьютеров имеют четыре ядра, но производители микросхем уже объявили о планах перехода на шесть ядер, а для высокопроизводительных серверов и сегодня 16-ядерные процессоры далеко не редкость.

Чем больше ядер, тем больше проблема распределения памяти между всеми ядрами при одновременной совместной работе. С увеличением числа ядер всё больше выгодно минимизировать потери времени на управлении ядрами при обработке данных - ибо скорость обмена данными отстает от скорости работы процессора и обработки данных в памяти. Можно физически обратиться к чужому быстрому кэшу, а можно к своему медленному, но сэкономить на времени передаче данных. Задача усложняется тем, что запрашиваемые программами объемы памяти не четко соответствуют объемам кэш-памяти каждого типа.

Физически разместить максимально близко к процессору можно только очень ограниченный объем памяти - кэш процесcора уровня L1, объем которого крайне незначителен. Даниэль Санчес (Daniel Sanchez), По-Ан Цай (Po-An Tsai) и Натан Бэкмен (Nathan Beckmann) - исследователи из лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института - научили компьютер конфигурировать разные виды своей памяти под гибко формируемую иерархию программ в реальном режиме времени. Новая система, названная Jenga, анализирует объемные потребности и частоту обращения программ к памяти и перераспределяет мощности каждого из 3 видов процессорного кэша в комбинациях обеспечивающих рост эффективности и экономии энергии.


Для начала исследователи протестировали рост производительности при комбинации статичной и динамической памяти в работе над программами для одноядерного процессора и получили первичную иерархию - когда какую комбинацию лучше применять. Из 2 видов памяти или из одного. Оценивались два параметра -задержка сигнала (латентность) и потребляемая энергия при работе каждой из программ. Примерно 40% программ стали работать хуже при комбинации видов памяти, остальные - лучше. Зафиксировав какие программы «любят» смешанное быстродействие, а какие - размер памяти, исследователи построили свою систему Jenga.

Они виртуально протестировали 4 виды программ на виртуальном компьютере с 36 ядрами. Тестировали программы:




На картинке показано где и как обрабатывали данные каждой из программ. Буквы показывают, где выполняется каждое приложение (по одному на квадрант), цвета показывают, где находятся его данные, а штриховка указывает на второй уровень виртуальной иерархии, когда он присутствует.

Уровни кэша

Кэш центрального процессора разделён на несколько уровней. Для универсальных процессоров - до 3. Самой быстрой памятью является кэш первого уровня - L1-cache, поскольку расположена на одном с процессором кристалле. Состоит из кэша команд и кэша данных. Некоторые процессоры без L1 кэша не могут функционировать. L1 кэш работает на частоте процессора, и обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно. Объём обычно невелик - не более 128 Кбайт.

С кэшем L1 взаимодействует кэш второго уровня - L2. Он является вторым по быстродействию. Обычно он расположен либо на кристалле, как и L1, либо в непосредственной близости от ядра, например, в процессорном картридже. В старых процессорах - набор микросхем на системной плате. Объём L2 кэша от 128 Кбайт до 12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования - при общем объёме кэша в 8 Мбайт на каждое ядро приходится по 2 Мбайта. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра. В задачах, связанных с многочисленными обращениями к ограниченной области памяти, например, СУБД, его полноценное использование дает рост производительность в десятки раз.

Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2). L3 обычно расположен отдельно от ядра ЦП, но может быть большим - более 32 Мбайт. L3 кэш медленнее предыдущих кэшей, но всё равно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании. Применение кэша третьего уровня оправдано в очень узком круге задач и может не только не дать увеличения производительности, но наоборот и привести к общему снижению производительности системы.

Отключение кэша второго и третьего уровней наиболее полезно в математических задачах, когда объём данных меньше размера кэша. В этом случае, можно загрузить все данные сразу в кэш L1, а затем производить их обработку.


Периодически Jenga на уровне ОС реконфигурирует виртуальные иерархии для минимизации объемов обмена данных, учитывая ограниченность ресурсов и поведение приложений. Каждая реконфигурация состоит из четырех шагов.


Jenga распределяет данные не только в зависимости от того, какие программы диспетчеризируются - любящие большую односкоростную память или любящие быстродействие смешанных кэшей, но и в зависимости от физической близости ячеек памяти к обрабатываемым данным. Независимо от того - какой вид кэша требует программа по умолчанию или по иерархии. Главное чтобы минимизировать задержку сигнала и энергозатраты. В зависимости от того, сколько видов памяти «любит» программа, Jenga моделирует латентность каждой виртуальной иерархии с одним или двумя уровнями. Двухуровневые иерархии образуют поверхность, одноуровневые иерархии - кривую. Затем Jenga проектирует минимальную задержку в размерах VL1, что дает две кривые. Наконец, Jenga использует эти кривые для выбора лучшей иерархии (то есть размера VL1).

Применение Jenga дало ощутимый эффект. Виртуальный 36-ядерный чип стал работать на 30 процентов быстрее и использовал на 85 процентов меньше энергии. Конечно, пока Jenga - просто симуляция работающего компьютера и пройдет некоторое время, прежде чем вы увидите реальные примеры этого кеша и еще до того, как производители микросхем примут его, если понравится технология.

Конфигурация условной 36 ядерной машины

  • Процессоры . 36 ядер, x86-64 ISA, 2.4 GHz, Silvermont-like OOO: 8B-wide
    ifetch; 2-level bpred with 512×10-bit BHSRs + 1024×2-bit PHT, 2-way decode/issue/rename/commit, 32-entry IQ and ROB, 10-entry LQ, 16-entry SQ; 371 pJ/instruction, 163 mW/core static power
  • Кэши уровня L1 . 32 KB, 8-way set-associative, split data and instruction caches,
    3-cycle latency; 15/33 pJ per hit/miss
  • Служба предварительной выборки Prefetchers . 16-entry stream prefetchers modeled after and validated against
    Nehalem
  • Кэши уровня L2 . 128 KB private per-core, 8-way set-associative, inclusive, 6-cycle latency; 46/93 pJ per hit/miss
  • Когерентный режим (Coherence) . 16-way, 6-cycle latency directory banks for Jenga; in-cache L3 directories for others
  • Global NoC . 6×6 mesh, 128-bit flits and links, X-Y routing, 2-cycle pipelined routers, 1-cycle links; 63/71 pJ per router/link flit traversal, 12/4mW router/link static power
  • Блоки статической памяти SRAM . 18 MB, one 512 KB bank per tile, 4-way 52-candidate zcache, 9-cycle bank latency, Vantage partitioning; 240/500 pJ per hit/miss, 28 mW/bank static power
  • Многослойная динамическая память Stacked DRAM . 1152MB, one 128MB vault per 4 tiles, Alloy with MAP-I DDR3-3200 (1600MHz), 128-bit bus, 16 ranks, 8 banks/rank, 2 KB row buffer; 4.4/6.2 nJ per hit/miss, 88 mW/vault static power
  • Основная память . 4 DDR3-1600 channels, 64-bit bus, 2 ranks/channel, 8 banks/rank, 8 KB row buffer; 20 nJ/access, 4W static power
  • DRAM timings . tCAS=8, tRCD=8, tRTP=4, tRAS=24, tRP=8, tRRD=4, tWTR=4, tWR=8, tFAW=18 (все тайминги в tCK; stacked DRAM has half the tCK as main memory)

Что такое кэш память процессора

Выполняет примерно ту же функцию, что и оперативная память . Только кэш - это память встроенная в процессор . Кэш-память используется процессором для хранения информации. В ней буферизируются самые часто используемые данные, за счет чего, время очередного обращения к ним значительно сокращается. Если емкость оперативной памяти на новых компьютерах от 1 Гб, то кэш у них около 2-8 Мб. Как видите, разница в объеме памяти ощутимая. Но даже этого объема вполне хватает, чтобы обеспечить нормальное быстродействие всей системы. Сейчас распространены процессоры с двумя уровнями кэш-памяти: L1 (первый уровень) и L2 (второй). Кэш первого уровня намного меньше кэша второго уровня, он обычно около 128 Кб. Используется он для хранения инструкций. А вот второй уровень используется для хранения данных, поэтому он больше. Кэш второго уровня сейчас у большинства процессоров общий. Но не у всех, вот например у AMD Athlon 64 X 2 у каждого ядра по своему кэшу L2. Кампания AMD обещает в скором времени предоставить процессор AMD Phenom с четырьмя ядрами и тремя уровнями кэш-памяти.

Программный кэш

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

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

Структура и для чего служит кэш

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

Другое название кэш-памяти – статическая память , важной ее особенность является построение каждой ее ячейки на транзисторном каскаде (т.е. одна ячейка выгляди как группа транзисторов), каждый каскад в среднем содержит до 10 транзисторов. Так как скорость переключения транзистора между состояниями крайне высока, то и скорость работы памяти очень высока. Но есть и негативный момент, он заключается в габаритности такого вида памяти, а также ее высокой стоимости.

Первые обладатели такого вида кэш-памяти были процессоры Intel 80386 (386-е) и располагалась она на материнской плате. В будущем, на более новых процессорах Intel 80486 (486-е) добавили память такого типа на сам кристалл процессора, при этом сохранив ее и на материнской плате. По этой особенности их разделили на два уровня, то что находится на самом кристалле стала называться кэшем первого уровня (L1), а та что на материнской плате – кэшем второго уровня (L2). Но в наше время, кэш второго уровня также перенесли на кристалл процессора. Между собой эти типы памяти работают по двум возможным схемам: инклюзивная (дублирование находящегося в памяти в обоих уровнях) и эксклюзивная (данные на каждом уровне эксклюзивны).

Как было сказано ранее, кэш-память служит буфером, в который загружаются часто исполняемые команды и используемые данные из ОЗУ (Оперативная память) . Хотя ее объем крайне мал по нынешним меркам (до 32 Мбайт), она дает значительный прирост производительности. Связь кэш-памяти и ОЗУ происходит по одной из возможных схем: прямое отображение, наборно-ассоциативная, ассоциативная. Объяснять эти схемы нет смысла, сомневаюсь, что при покупке, вам кто-то сможет ответить, какая схема используется в том или ином процессоре.

Уровни кэш памяти процессора

Большинство современных процессоров оснащены кэш-памятью двух или трех уровней (теперь третий может располагаться на материнской плате):

Кэш-память первого уровня(L1) – самый быстрый из всех уровней, находится в непосредственной близости с ядром процессора, за счет чего имеет наименьшее время отклика и работает на скорости близкой к скорости процессора. Еще одна функция этого вида памяти – обеспечивать обмен между процессором и вторым уровнем кэш-памяти.

Кэш-память второго уровня(L2) – имеет больший объем памяти, чем первый, но из этого вытекает такой негативный момент как снижение скорости. Может быть как общим для всего процессора, так и индивидуальным для каждого ядра. Одно из предназначений – буфер между первым и третьим уровнем.

Кэш-память третьего уровня(L3) – самый медленный из кэшей (но все же значительно быстрее ОЗУ) но и имеет самый большой объем памяти. Если первый уровень индивидуален для каждого ядра, то этот общий для всего процессора.

Подводим итог

Кэш-память процессора является его личной сверхбыстрой оперативной памятью. Служит она для хранения наиболее часто используемых процессором данных, при выполнении той или мной задачи. Уровней кеш памяти процессора может быть три – самый быстрый первый уровень, а самый большой, но и самый медленный – третий.