Сколько кэш памяти должно быть у процессора. Галерея эффектов кэшей процессоров

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

Ряд моделей центральных процессоров (ЦП) обладают собственным кэшем, для того чтобы минимизировать доступ к оперативной памяти (ОЗУ), которая медленнее, чем регистры. Кэш-память может давать значительный выигрыш в производительности, в случае когда тактовая частота ОЗУ значительно меньше тактовой частоты ЦП. Тактовая частота для кэш-памяти обычно ненамного меньше частоты ЦП.

Уровни кэша

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

Самой быстрой памятью является кэш первого уровня -- L1-cache. По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. В современных процессорах обычно кэш L1 разделен на два кэша, кэш команд (инструкций) и кэш данных (Гарвардская архитектура). Большинство процессоров без L1 кэша не могут функционировать. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно. Латентность доступа обычно равна 2?4 тактам ядра. Объём обычно невелик -- не более 384 Кбайт.

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

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

Иногда существует и 4 уровень кэша, обыкновенно он расположен в отдельной микросхеме. Применение кэша 4 уровня оправдано только для высоко производительных серверов и мейнфреймов.

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

Первым процессором, который производился с кэшем L2, стал Pentium Pro в 1995 году. У него было 256 или 512 кбайт кэша второго уровня на кристалле, что давало существенное преимущество над обычными процессорами Pentium, чей кэш располагался на материнской плате. С появлением Pentium II в модуле Slot 1 выделенная кэш-память "поселилась" рядом с процессором. Но только у второго поколения Pentium III для Socket 370 кэш-память перешла на кристалл процессора. Так продолжается и по сей день, но есть процессоры с небольшим количеством кэша, а есть с большим. Стоит ли тратить деньги на модель с большим кэшем? В прошлом дополнительная кэш-память не всегда ощутимо влияла на производительность.

Хотя всегда можно найти измеряемые различия между двумя процессорами с разными размерами кэша, для экономии средств вполне можно было покупать процессоры с меньшим кэшем. Но ни один процессор до появления Core 2 Duo не был доступен с тремя разными вариантами кэша.

Pentium 4 в своём первом поколении (Willamette, 180 нм) оснащался 256 кбайт кэша, а в более успешном втором поколении (Northwood, 130 нм) - уже 512 кбайт кэша. В то время дешёвые процессоры Celeron с меньшим кэшем производились на тех же вычислительных ядрах. Celeron относятся к первому поколению продуктов с одной технологической базой для high-end и дешёвых моделей, различающихся только доступным размером кэша и частотами FSB/ядра. Позднее была добавлена и разница в функциях, чтобы заметнее разделить сегменты рынка.

С выпуском 90-нм ядра Prescott объём кэша L2 вырос до 1 Мбайт, и этот процессор стал основой линейки настольных процессоров Intel до появления 2-Мбайт 65-нм Cedar Mill. Intel даже использовала два таких ядра для создания процессоров Pentium D 900 второго поколения. Впрочем, более быстрые тактовые частоты и больший объём кэша даже тогда не значили очень много. Сегодня ситуация изменилась: лучшая производительность Core 2 Duo (Conroe, 65 нм) и меньшее энергопотребление немало обязаны размеру кэша.

AMD весьма сдержанно относилась к увеличению объёма кэша. Скорее всего, это связано с площадью кристалла (бюджетом транзисторов), поскольку количество 65-нм процессоров не может удовлетворить спрос на рынке, а у менее выгодных 90-нм моделей этот вопрос стоит ещё острее. У Intel, с другой стороны, есть преимущество в виде производства всех массовых процессоров по 65-нм техпроцессу, да и ёмкость кэша L2 будет ещё расти. Например, следующее поколение Core 2 на 45-нм ядре Penryn будет оснащаться до 6 Мбайт кэша L2. Можно ли рассматривать это как маркетинговый шаг, или увеличение ёмкости L2 действительно даст прирост производительности? Давайте посмотрим.

Большой кэш L2: маркетинг или рост производительности?

Кэши процессора играют вполне определённую роль: они уменьшают количество обращений к памяти, буферизуя часто используемые данные. Сегодня ёмкость ОЗУ составляет от 512 Мбайт до 4 Гбайт, а объём кэша - от 256 кбайт до 8 Мбайт, в зависимости от модели. Впрочем, даже небольшого объёма кэша в 256 или 512 кбайт достаточно, чтобы обеспечить высокую производительность, которую сегодня воспринимают само собой разумеющейся.

Есть разные способы организации иерархии кэша. В большинстве современных компьютеров установлены процессоры с небольшим кэшем первого уровня (L1, до 128 кбайт), который обычно разделяется на кэш данных и кэш инструкций. Кэш L2 большего размера обычно используется для хранения данных, он является общим для двух процессорных ядер Core 2 Duo, хотя Athlon 64 X2 или Pentium D имеют раздельные кэши на ядро. Кэш L2 может работать эксклюзивно или инклюзивно, то есть он может либо хранить копию содержимого кэша L1, либо нет. AMD вскоре представит процессоры с третьим уровнем кэша, который будет общим для четырёх ядер в процессорах AMD Phenom. То же самое ожидается и для архитектуры Nehalem, которую Intel представит в 2008 году на замену текущим Core 2.

Кэш L1 всегда был в составе процессора, но поначалу кэш L2 устанавливался на материнские платы, как было в случае многих компьютеров 486DX и Pentium. Для кэш-памяти первого уровня использовались простые чипы статической памяти (SRAM, Static RAM). Они вскоре были заменены конвейерным пакетным кэшем (pipelined burst cache) у процессоров Pentium, пока не появилась возможность устанавливать кэш на кристалл. Pentium Pro на 150 - 200 МГц стал первым процессором, содержащим 256 кбайт кэш-памяти L2 на кристалле, побив рекорд по размеру керамической упаковки для настольных ПК и рабочих станций. Pentium III для Socket 370, работающий на частотах от 500 МГц до 1,13 ГГц, стал первым процессором с 256 кбайт кэш-памяти на кристалле L2, что давало преимущество по снижению задержек, поскольку кэш работает на частоте CPU.

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

Однако кэш-память влияет не только на производительность. Она стала мощным инструментом, позволяющим создавать разные модели процессоров для low-end, массового и high-end сегментов, поскольку производитель может гибко отбирать процессоры по отбраковке и тактовым частотам. Если на кристалле нет дефектов, то можно включить весь кэш L2, да и частоты получаются высокие. Если же желаемых тактовых частот достичь не удастся, то кристалл может стать моделью начального уровня в high-end линейке, например, Core 2 Duo 6000 с 4 Мбайт кэша и низкими частотами. Если дефекты присутствуют в кэше L2, то производитель имеет возможность отключить его часть и создать модель начального уровня с меньшим объёмом кэша, например, Core 2 Duo E4000 с 2 Мбайт кэша L2 или даже Pentium Dual Core всего с 1 Мбайт кэша. Всё это действительно так, но вопрос заключается в следующем: насколько различие в объёме кэша влияет на производительность?



СОДЕРЖАНИЕ

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

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

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

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

Кэш — память (кеш , cash , буфер — eng.) — применяется в цифровых устройствах, как высокоскоростной буфер обмена. Кэш память можно встретить на таких устройствах компьютера как , процессоры, сетевые карты, приводы компакт дисков и многих других.

Принцип работы и архитектура кэша могут сильно отличаться.

К примеру, кэш может служить как обычный буфер обмена . Устройство обрабатывает данные и передаёт их в высокоскоростной буфер, где контроллёр передаёт данные на интерфейс. Предназначен такой кэш для предотвращения ошибок, аппаратной проверки данных на целостность, либо для кодировки сигнала от устройства в понятный сигнал для интерфейса, без задержек. Такая система применяется например в CD/DVD приводах компакт дисков.

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

Такая архитектура чаще всего встречается на жёстких дисках, и центральных процессорах (CPU ).

При работе устройств, в кэш могут загружаться специальные прошивки или программы диспетчеры, которые работали бы медленней с ПЗУ (постоянное запоминающее устройство).

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

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

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

Общий кэш , также позволяет ядрам работать с ним напрямую, минуя медленную .

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

Другие функции и особенности .

Примечательно, что в CPU (центральных процессорах), применяется аппаратная коррекция ошибок (ECC ), потому как небольшая ошибочка в кэше, может привести к одной сплошной ошибке при дальнейшей обработке этих данных.

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

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

Размер кэша, влияние на производительность и другие характеристики .

Естественно, чем больше кэш , тем больше данных он может хранить и обрабатывать, но тут есть серьёзная проблема.

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

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

Только потом они отправляются непосредственно в процессор. Все это занимает очень много времени по компьютерным меркам. А вот, что если бы данные хранились где-то рядом с процессором?

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

Назначение кеш памяти

Что же такое кэш-память или кэш (по англ. cache memory, cache):

В широком смысле, подразумевается любая память с быстрым доступом , где хранится часть данных с другого носителя с более медленным доступом;

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

Предположим, что в библиотеке работает один библиотекарь. Если человек приходит и просит первый том Пушкина, то библиотекарь идет к далекой книжной полке, находит книгу и приносит ее посетителю.

Когда этот человек прочитал книгу, то она обратно возвращается на полку. И если уже любой другой человек приходит и просит эту же самую книгу, цикл повторяется снова.

Вот пример того, как библиотека, то есть система работает без кэш-памяти .

Зачем нужна кэш-память?

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

Но, когда книга вернулась, библиотекарь не возвращает ее на полку, а кладет в ящик стола (этакая местная оперативная кэш-память ).

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

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

Хранит ли кэш только часто используемые данные? Как функционирует и работает кэш оперативной памяти ?

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

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

Аналогичным образом, когда кэш-память извлекает запрошенные данные из памяти, она также извлекает данные, которые находятся по адресам, близким к запрошенным.

Эти смежные блоки данных, которые и передаются в кэш, называются кэш-линиями. Подробнее о понятии кэш-памяти можно посмотреть в этом видео:

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

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

Лучшая бесплатная программа HDDScan для проверки жестких дисков

И снова возвратимся за примером к нашей библиотеке, на примере ее работы становится понятна как работает внешняя память компьютера .

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

Память L2 кэш

Здесь и появляется неодходимость L2. Представим L2 как книжный шкаф возле стола библиотекаря. Когда маленький ящик стола заполнен, библиотекарь начинает ставить книги в этот шкаф. И теперь, если книга не найдена в ящике сразу, надо взять ее из шкафа, не отходя далеко.

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

Двухуровневый кэш процессора

Кэш двух уровней у процессора – хорошая идея? Безусловно, да.

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

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

Но если кэш-память работает так быстро, почему бы не выполнять его достаточно большой, чтобы хранить все данные оперативной памяти в нем?

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

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

То есть, наш библиотекарь обзаводится ящиком стола все большего размера, а шкафчик, стоящий рядом становится более вместительным! Еще в тему - двухядерные процессоры - правильно конфигурируем Windows.

Кэширование жесткого диска

Дисковая кэш-память (disk cache ), или кэш-память жестского диска - принцип построения кэш-памяти на основе динамического оперативного запоминающего устройства (типа DRAM), которое хранит наиболее часто используемые данные и команды, доступ к которым производится из внешней памяти.

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

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

1. Нужно затратить определенное время, чтобы магнитная головка записи-чтения подошла к искомой дорожке.

2. Поскольку при движении головка вибрирует, то необходимо немного времени, чтобы она успокоилась.

3. Наконец, требуется время, чтобы головка нашла искомый сектор.

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

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

Этот метод известен также как метод опережающего чтения (Read Ahead). При работе с многозадачными системами желательно иметь жесткий дик (винчестер) с мультисегментной кэш-памятью, которая для каждой из задач отводит свою часть кэша.

Кстати, если у вас недостаточно знаний о том, как лучше просканировать и протестировать жесткий диск , то обязательно посмотрите
подробный и бесплатный виде-оурок на эту тему:
как проверить винчестер на работоспособность

Кэш-память процессора

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

Кэш-память процессора на компьютере выполняет функции буфера между процессором и оперативной памятью.

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

Кэш-памяти процессора делятся на несколько видов:

Cache L1 - это «кэш-память первого уровня». Является промежуточной сверхоперативной памятью, находится на самом кристалле процессора, в ней размещаются наиболее часто используемые данные.

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

Cache L2 - «кэш-память второго уровня». Это промежуточная сверхоперативная память, которая имеет быстродействие ниже памяти первого уровня, но выше основной оперативной памяти. Ее размер обычно составляет от нескольких сотен килобайт до нескольких мегабайт.

Cache L3 - «кэш-память третьего уровня». Тоже промежуточная сверхоперативная память, имеющая быстродействие ниже памяти второго уровня, но выше основной оперативной памяти. Ее размер обычно составляет от одного до нескольких мегабайт.


Секреты и тонкости работы на компьютере