• Что такое кэш-память процессора? Кэш - что это, как работает и для чего

    Информационные технологии весьма разнообразны, но предназначение некоторых очень сложно бывает понять. Вот взять, например, кэш - что это такое? Зачем было сделано? Есть ли от этого толк? Что ж, если вы читаете эти строки - смысл есть, просто вам про него ещё не известно. И в рамках статьи это недоразумение будет исправлено.

    Что такое кеш?

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

    Как эта технология функционирует?

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

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

    Кеш в операционной системе ПК

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

    1. Страницы оперативной памяти, которые в свою очередь делятся на буферы, длина которых равна и зависит от используемого устройства памяти.
    2. Набор заголовков самих буферов, задача которых - описывать их состояние.
    3. Хеш-таблицы, в которых содержится указание, какой заголовок к какому буферу относится.
    4. Список свободных буферов.

    Кеш программ

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

    Кеш браузеров

    Как уменьшить трафик, передаваемый по сети? Тут на помощь опять приходит кэш-память! В ней на компьютере пользователя или на прокси-серверах хранится часть информации, используемой в страницах браузеров. Обычно за внесение информации в кэш-память и за её использование отвечает НТТР-протокол. Но в отдельных случаях его функции взять на себя может система управления сайтом, на котором сейчас находится пользователь. Недостаток всей системы проявляется в том, что изменения, внесённые в одном браузере, не всегда или не тотчас же отображаются в другом. Особенно это не проработано на мобильных платформах. Далее будет рассказано, как установить кеш на "Андроид", и вы сможете понять, почему там не проработан этот аспект.

    Очистка кеша браузера

    Особенности кэш-памяти в браузере проявляются ещё и в том, что её необходимо периодически чистить. Дело в том, что сама по себе эта память довольно большая, и дополнительно она ещё хранит данные, которые не очень удобно бывает обработать. Поэтому время от времени не помешает чистить кэш браузера. К тому же этот подход советуют и при обнаружении проблем с подгрузкой новых данных или при временных неисправностях, которые слишком зачастили. У большинства браузеров не является сложным процессом, и выполнить его можно за пару секунд. Это настолько универсально, что даже по общему описанию вы сможете сделать всё необходимое независимо от того, что является объектом чистки: кэш в "Мозиле" или "Интернет эксплорере". Чтобы очистить его, вам необходимо пройтись по следующим пунктам:

    1. Нажмите сейчас на меню настроек.
    2. Выберите кнопку «История». Если её нет - "Настройки пользователя", а там уже «Историю» или «Куки».
    3. Перед вами появится меню, в котором можно будет выбрать, какие данные необходимо стереть и за какой период. Сделайте настройки по своему усмотрению.
    4. Нажмите на кнопку «Очистить».

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

    Кеш в мобильной платформе

    Мы разобрались с тем, что такое кеш на персональных компьютерах. А теперь к самому необычному - как обстоят дела с кэш-памятью на мобильных платформах. В целом можно сказать, что механизм реализации похож на тот, что применяется в персональных компьютерах, но со своими ограничениями, которые упираются в аппаратные ограничения и планшетов. Так, на них хранилище данных имеет меньшие размеры, меньше помогает при работе с браузерами и в целом менее заметное, чем при работе с компьютером. Хотя можно рассказать и более детально, используя в качестве примера Android-кэш. Возьмите файл с расширением.акр и нажмите кнопку «Установить». В той папке, где он будет установлен, появится одна папка, начинающаяся на com, и кончающаяся именем программы. Это и есть хранилище временных данных, или кэш-память отдельной программы. Вот - вам даже не нужно ничего делать, кроме пары нажатий.

    Речь идет не о наличности, а о кэш -памяти процессоров и не только. Из объема кэш -памяти торгаши сделали очередной коммерческий фетиш, в особенности с кэшем центральных процессоров и жестких дисков (у видеокарт он тоже есть – но до него пока не добрались). Итак, есть процессор ХХХ с кэшем L2 объемом 1Мб, и точно такой же процессор XYZ с кэшем объемом 2Мб. Угадайте какой лучше? Аа – вот не надо так сразу!

    Кэш -память – это буфер, куда складывается то, что можно и/или нужно отложить на потом. Процессор выполняет работу и возникают ситуации, когда промежуточные данные нужно где-то сохранить. Ну конечно в кэше! – ведь он на порядки быстрее, чем оперативная память, т.к. он в самом кристалле процессора и обычно работает на той же частоте. А потом, через какое то время, эти данные он выудит обратно и будет снова их обрабатывать. Грубо говоря как сортировщик картошки на конвейере, который каждый раз, когда попадается что-то другое кроме картошки (морковка ) , бросает ее в ящик. А когда тот полон – встает и выносит его в соседнюю комнату. В этот момент конвейер стоит и наблюдается простой. Объем ящика и есть кэш в данной аналогии. И сколько его надо – 1Мб или 12? Понятно, что если его объем мал придется слишком много времени уделят выносу и будет простой, но с какого то объема его дальнейшее увеличение ничего не даст. Ну будет ящик у сортировщика на 1000кг морковки – да у него за всю смену столько ее не будет и от этого он НЕ СТАНЕТ В ДВА РАЗА БЫСТРЕЕ! Есть еще одна тонкость – большой кэш может вызывать увеличение задержек обращения к нему во-первых, а заодно повышается и вероятность возникновения ошибок в нем, например при разгоне – во-вторых. (о том КАК в этом случае определить стабильность/нестабильность процессора и выяснить что ошибка возникает именно в его кэше, протестировать L1 и L2 – можно прочесть тут.) В-третьих – кэш выжирает приличную площадь кристалла и транзисторный бюджет схемы процессора. То же самое касается и кэш памяти жестких дисков. И если архитектура процессора сильная – у него будет востребовано во многих приложениях 1024Кб кэша и более. Если у вас быстрый HDD – 16Мб или даже 32Мб уместны. Но никакие 64Мб кэша не сделают его быстрее, если это обрезок под названием грин версия (Green WD) с частотой оборотов 5900 вместо положеных 7200, пусть даже у последнего будет и 8Мб. Потом процессоры Intel и AMD по-разному используют этот кэш (вообще говоря AMD более эффективно и их процессоры часто комфортно довольствуются меньшими значениями). Вдобавок у Intel кэш общий, а вот у AMD он персональный у каждого ядра. Самый быстрый кэш L1 у процессоров AMD составляет по 64Кб на данные и инструкции, что вдвое больше, чем у Intel. Кэш третьего уровня L3 обычно присутствует у топовых процессоров наподобие AMD Phenom II 1055T X6 Socket AM3 2.8GHz или у конкурента в лице Intel Core i7-980X. Прежде всего большие объемы кэша любят игры. И кэш НЕ любят многие профессиональные приложения (см. Компьютер для рендеринга, видеомонтажа и профприложений). Точнее наиболее требовательные к нему вообще равнодушны. Но чего точно не стоит делать, так это выбирать процессор по объему кэша. Старенький Pentium 4 в последних своих проявлениях имел и по 2Мб кэша при частотах работы далеко за 3ГГц – сравните его производительность с дешевеньким двуядерничком Celeron E1***, работающим на частотах около 2ГГц. Он не оставит от старичка камня на камне. Более актуальный пример – высокочастотный двухъядерник E8600 стоимостью чуть не 200$ (видимо из-за 6Мб кэша) и Athlon II X4-620 2,6ГГц, у которого всего 2Мб. Это не мешает Атлону разделать конкурента под орех.

    Как видно на графиках – ни в сложных программах, ни в требовательных к процессору играх никакой кэш не заменит дополнительных ядер. Athlon с 2Мб кэша (красный) легко побеждает Cor2Duo с 6Мб кэша даже при меньшей частота и чуть не вдвое меньшей стоимости. Так же многие забывают, что кэш присутствует в видеокартах, потому что в них, вообще говоря, тоже есть процессоры. Свежий пример видеокарта GTX460, где умудряются не только порезать шину и объем памяти (о чем покупатель догадается) – но и КЭШ шейдеров соответственно с 512Кб до 384Кб (о чем покупатель уже НЕ догадается). А это тоже добавит свой негативный вклад в производительность. Интересно еще будет выяснить зависимость производительности от объема кэша. Исследуем как быстро она растет с увеличением объема кэша на примере одного и того же процессора. Как известно процессоры серии E6*** , E4*** и E2*** отличаются только объемом кэша (по 4, 2 и 1 Мб соответственно). Работая на одинаковой частоте 2400МГц они показывают следующие результаты.

    Как видно – результаты не слишком отличаются. Скажу больше – если бы участвовал процессор с объемом 6Мб – результат увеличился бы еще на чуть-чуть, т.к. процессоры достигают насыщения. А вот для моделей с 512Кб падение было бы ощутимым. Другими словами 2Мб даже в играх вполне достаточно. Резюмируя можно сделать такой вывод – кэш это хорошо, когда УЖЕ много всего остального. Наивно и глупо менять скорость оборотов винчестера или количество ядер процессора на объем кэша при равной стоимости, ибо даже самый емкий ящик для сортировки не заменит еще одного сортировщика Но есть и хорошие примеры.. Например Pentium Dual-Core в ранней ревизии по 65-нм процессу имел 1Мб кэша на два ядра (серия E2160 и подобные), а поздняя 45-нм ревизия серии E5200 и дальше имеет уже 2Мб при прочих равных условиях (а главное – ЦЕНЕ). Конечно же стоит выбирать именно последний.

    Кэш (cache) браузера - это папка с копиями некоторых данных со страниц, которые вы посещали. Обычно в кэше сохраняются те элементы страницы, которые вряд ли успели измениться за промежуток времени между двумя запросами, - музыка, видео, изображения, стили, скрипты. При повторном просмотре страниц Яндекс.Браузер уже не будет запрашивать эти данные из интернета, а извлечет их из кэша. Использование кэша снижает нагрузку на сеть и повышает скорость загрузки страниц.

    Пример использования кэша

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

    ","hasTopCallout":true,"hasBottomCallout":true,"areas":[{"shape":"circle","direction":["bottom","right"],"alt":"Доля просмотренного видео","coords":,"isNumeric":false,"hasTopCallout":false,"hasBottomCallout":true},{"shape":"circle","direction":["top","right"],"alt":"Доля загруженного в кэш видео","coords":,"isNumeric":false,"hasTopCallout":true,"hasBottomCallout":false}]}}">

    Приватность и кэш

    Сохранение данных в кэше несет следующие риски для вашей приватности:

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

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

    Впервые слово ʼʼкэшʼʼ в компьютерном контексте было использовано в 1967 году во время подготовки статьи для публикации в журнале ʼʼIBM Systems Journalʼʼ. Статья касалась усовершенствования памяти в разрабатываемой модели 85 из серии IBM System/360. Редактор журнала Лайл Джонсон попросил придумать более описательный термин, нежели ʼʼвысокоскоростной буферʼʼ, но из-за отсутствия идей сам предложил слово ʼʼкэшʼʼ. Статья была опубликована в начале 1968 года, авторы были премированы IBM, их работа получила распространение и впоследствии была улучшена, а слово ʼʼкэшʼʼ вскоре стало использоваться в компьютерной литературе как общепринятый термин.

    Функционирование

    Диаграмма кэша памяти ЦПУ

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

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

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

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

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

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

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

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

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

    [править]

    Кэш центрального процессора

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

    См. также: Translation lookaside buffer.

    Уровни кэша

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

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

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

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

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

    Ассоциативность кэша

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

    При одинаковом объёме кэша схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной.

    Кэширование внешних накопителœей

    Многие периферийные устройства хранения данных используют кэш для ускорения работы, в частности, жёсткие диски используют кэш-память от 1 до 64 Мбайт (модели с поддержкой NCQ/TCQ используют её для хранения и обработки запросов), устройства чтения CD/DVD/BD-дисков также кэшируют прочитанную информацию для ускорения повторного обращения. Операционная система также использует часть оперативной памяти в качестве кэша дисковых операций (в том числе для внешних устройств, не обладающих собственной кэш-памятью, в т.ч. жёстких дисков, flash-памяти и гибких дисков).

    Применение кэширования внешних накопителœей обусловлено следующими факторами:

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

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

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

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

    Кэширование, выполняемое операционной системой

    Кэш оперативной памяти состоит из следующих элементов:

    набор страниц оперативной памяти, разделённых на буферы, равные по длинœе блоку данных соответствующего устройства внешней памяти;

    набор заголовков буферов, описывающих состояние соответствующего буфера;

    хеш-таблицы, содержащей соответствие номера блока заголовку;

    списки свободных буферов.

    Алгоритм работы кэша с отложенной записью

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

    пытается найти в хеш-таблице заголовок буфера с заданным номером;

    в случае, в случае если полученный буфер занят, ждёт его освобождения;

    в случае, в случае если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;

    в случае, в случае если список свободных буферов пуст, то выполняется алгоритм вытеснения (см. ниже);

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

    удаляет буфер из хеш-таблицы, в случае если он был помещён в неё;

    помещает буфер в хеш-таблицу с новым номером.

    Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как ʼʼгрязныйʼʼ. При освобождении буфер помещается в голову списка свободных буферов.

    Таким образом:

    если процесс прочитал некоторый блок в буфер, то велика вероятность, что другой процесс при чтении этого блока найдёт буфер в оперативной памяти;

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

    Алгоритм вытеснения

    В случае если список свободных буферов пуст, то выполняется алгоритм вытеснения буфера. Алгоритм вытеснения существенно влияет на производительность кэша. Существуют следующие алгоритмы:

    LRU (Least Recently Used) - вытесняется буфер, неиспользованный дольше всœех;

    MRU (Most Recently Used) - вытесняется последний использованный буфер;

    LFU (Least Frequently Used) - вытесняется буфер, использованный реже всœех;

    ARC (англ.) (Adaptive Replacement Cache) - алгоритм вытеснения, комбинирующий LRU и LFU, запатентованный IBM.

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

    Программное кэширование

    Политика записи при кэшировании

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

    Существуют две основные политики записи кэш-памяти - сквозная запись (write-through) и отложенная запись (write-back).

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

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

    Кэширование интернет-страниц

    В процессе передачи информации по сети может использоваться кэширование интернет-страниц - процесс сохранения часто запрашиваемых документов на (промежуточных) прокси-серверах или машинœе пользователя, с целью предотвращения их постоянной загрузки с сервера-источника и уменьшения трафика. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, информация перемещается ближе к пользователю. Управление кэшированием осуществляется при помощи HTTP-заголовков.

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

    Кэширование результатов работы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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