Кэш в компьютере что это
Что такое кэш и зачем его чистить
Это старые данные, которые уже могут быть неактуальны
Когда не работает какой-то сайт или сервис, от техподдержки часто можно услышать «Почистите кэш и перезагрузите страницу». Иногда это помогает. Рассказываем, почему так происходит, что такое кэш, зачем он нужен и как его почистить.
⚠️ Минутка грамотности. По словарю РАН слово cache в русском пишется «кеш». Но по рекомендациям Гиляревского нужно писать «кэш». И нам нравится, как это произносится. Произнесите вместе с нами:
Что такое кэш
Кэш — это данные, которые компьютер уже получил и использовал один раз, а потом сохранил на будущее. Смысл кэша в том, чтобы в следующий раз взять данные не с далёкого и медленного сервера, а из собственного быстрого кэша. То же самое, что закупиться продуктами на неделю и потом ходить не в магазин, а в холодильник.
В случае с браузером это работает так:
Дальше происходит так:
4. Если вкладкой или браузером долго не пользовались, операционная система выгружает из оперативной памяти все страницы, чтобы освободить место для других программ.
5. Если переключиться назад на браузер, он моментально сходит в кэш, возьмёт оттуда загруженную страницу и покажет её на экране.
Получается, что если браузер будет брать из кэша только постоянные данные и скачивать с сервера только что-то новое, то страница будет загружаться гораздо быстрее. Выходит, главная задача браузера — понять, какой «срок годности» у данных в кэше и через какое время их надо запрашивать заново.
👉 Например, браузер может догадаться, что большая картинка на странице вряд ли будем меняться каждые несколько секунд, поэтому имеет смысл подержать её в кэше и не загружать с сервера при каждом посещении. Поэтому в кэше часто хранятся картинки, видеоролики, звуки и другие декоративные элементы страницы.
👉 Для сравнения: браузер понимает, что ответ сервера на конкретный запрос пользователя кэшировать не надо — ведь ответы могут очень быстро меняться. Поэтому ответы от сервера браузер не кэширует.
Какая проблема с кэшем
На первый взгляд кажется, что кэш — это прекрасно: данные уже загружены, к ним можно быстро обратиться и достать оттуда всё, что нужно, без запроса к серверу на другом конце планеты.
Но представьте такую ситуацию: вы заходите в интернет-магазин обуви, в котором покупали уже много раз, но товары почему-то не добавляются в корзину. Или добавляются, но кнопка «Оплатить» не работает. Чаще всего причина в том, что браузер делает так:
Решение — почистить кэш
Когда мы чистим кэш, оттуда удаляются все данные, которые браузер сохранил «на всякий случай». Это значит, что при обновлении страницы браузер заглянет в кэш, увидит, что там пусто и запросит все данные с сервера заново. Они, конечно, тоже сразу отправятся в кэш, но в следующий раз вы уже будете знать, что делать.
Чтобы очистить кэш в Сафари, достаточно нажать ⌥+⌘+E, а в Хроме — нажать Ctrl+Shift+Backspace (⇧+⌘+Backspace) и выбрать время, в пределах которого нужно очистить кэш:
Зачем нужен кэш, если из-за него всё ломается?
На самом деле всё ломается не из-за кэша, а из-за неправильных настроек сервера, которые отдают страницу. Потому что именно сервер должен сказать браузеру: «Вот это можно кэшировать, а вон то лучше не кэшируй, мало ли что».
Часто разработчики недокручивают эти настройки, и браузер не получает нужных инструкций, поэтому кэширует всё подряд. И тогда приходится вмешиваться, чистить кэш и восстанавливать работоспособность.
Что такое кэш-память в компьютере и зачем она нужна?
Кэш-память — хранилище для часто используемой информации, доступ к которому осуществляется намного быстрее по сравнению с оперативной памятью или жестким диском компьютера. Рассматриваемая технология базируется на подсистеме компьютерной памяти. Главным предназначением является ускорение работы устройства. Даже если ПК обладает непроизводительным процессором, благодаря кэшированию информации скорость выполнения задач существенно повышается.
Кэш-памятью оборудованы главные элементы компьютера — жесткие диски, видеокарты, процессоры. Архитектура и работа технологии способны отличаться. Например, кэш может служить обычным буфером обмена — устройство обрабатывает информацию и передает полученные данные в специальный буфер, из которого результат поступает на интерфейс. Назначением такого кэша является предотвращение ошибок благодаря аппаратной проверке информации на целостность.
Кэш процессора
Современный процессор обладает несколькими основными уровнями кэш-памяти, нередко называемыми сверхоперативной памятью. На кристалле находится несколько аппаратных модулей. Самым меньшим по размеру является Cache Level 1, объем которого способен варьироваться от 32 до 64 Кб в зависимости от процессора. L2 обладает повышенной емкостью — от 128 Кб до 12 Мб. L3 считается самым объемным (до 40 Мб) и самым медленным.
Сверхоперативная память необходима для хранения часто используемой информации, поступающей из ОЗУ. Сегодня производители устанавливают больше трех уровней кэширования для обеспечения производительной работы компьютера. Например, компания Intel смогла реализовать дополнительный уровень кэша 0 для краткосрочного хранения расшифрованных команд. В производительных ЦП встречается сверхоперативная память 4 уровня, расположенная в отдельной микросхеме.
Кэш жесткого диска
В жестких дисках присутствует специализированная оперативная память, выступающая в качестве промежуточного звена для хранения информации. Она предназначена для краткосрочного хранения данных, считанных с носителя, но не поступивших на обработку. Необходимость использования кэша обусловлена разницей в скорости между различными компьютерными компонентами. Сегодня популярны модели дисков с объемом кэша от 32 до 64 Мб.
Программный кэш
Представляет собой директорию на жестком диске компьютера, создаваемую программами для непродолжительного хранения информации. Например, браузер сохраняет страницы, просмотренные пользователем. При повторном переходе по введенному адресу браузер сначала обращается к кеш-памяти, чтобы ускорить загрузку страницы и одновременно уменьшить потребление трафика. Размер папки способен варьироваться от разновидности программного обеспечения.
Кэш-память смартфона
Современные мобильные телефоны тоже обладают кэш-памятью. Она представляет собой место хранения информации приложений. Данные записываются в специальную директорию, позволяющую быстро вернуться к просмотру файлов. Наглядный пример использования кэша — работа с галереей. После просмотра фотографий устройство сохраняет уменьшенные копии изображений. Также краткосрочная память вмещает настройки приложений, отчеты и загруженные веб-ресурсы.
Если кэш-память телефона будет перегружена, пользователь заметит существенное замедление работы мобильного устройства. Могут даже возникнуть программные ошибки, а некоторые приложения иногда отказываются запускаться. Для решения проблемы рекомендуется выполнить очистку кэша смартфона. Вот подробная инструкция.
Основным предназначением кэш-памяти является ускорение устройства и краткосрочное хранение информации. Модули кэш-памяти встречаются в жестких дисках, центральных процессорах и видеокартах. Также соответствующей технологией обладают смартфоны. Для обеспечения стабильной работы устройства пользователю рекомендуется периодически очищать память в настройках операционной системы телефона — такая процедура часто улучшает быстродействие.
Как почистить кэш компьютера на Windows
Как почистить кэш компьютера на Windows, рано или поздно с этим вопросом сталкивается любой пользователь компьютера. Практически каждый пользователь рано или поздно сталкивается с проблемой замедления работы своего компьютера или ноутбука. Это может быть связано с тем, что со временем накапливается различное количество временных файлов, которые постоянно не используются, но могут потребоваться для определенных нужд.
Такие файлы существенно замедляют работу системы. Как результат – медленнее загружается устройство, страницы в браузере подвисают, а вы успеваете разогреть себе завтрак во время загрузки ОС. Если вам знакомы все эти проблемы, тогда вам потребуется знать, как почистить кэш компьютера на Windows 7 и старше. Для начала потребуется разобраться, что представляет собой кэш.
Что такое кэш память на компьютере?
Кэш представляет собой своеобразное хранилище информации, через которую проходит много разных промежуточных данных. Они могут потребоваться для выполнения типовых задач, а также загрузки определенных программ и процессов. Это определенный объем выделенной памяти, который может предоставляться по требованию системных ресурсов. Обычно он позволяет существенно сократить затраты других программ.
Например, в кэш-памяти могут содержаться результаты числовых вычислений. ДНС – одна из системных служб, хранит в себе информацию об актуальных адресах веб-страниц. То есть для доступа используется уже имеющаяся информация. Это позволяет существенно сэкономить трафик вашей сети. Но если данные устаревшие, для вас будет отображаться некорректная информация.
Такая технология применяется при разработке браузеров. Вместо того, чтобы постоянно загружать одну и ту же страницу, кэш память позволяет воспроизвести ее очень быстро даже без доступа к сети, если этот доступ запрашивался ранее.
Если вы работаете с изображениями, они также сохраняются в системный буфер. Таким образом, хранилище временных данных быстро переполняется. Поэтому необходимо знать, как почистить кэш Windows 7 и выше, чтобы избежать замедления работы системы.
Если вовремя не производить чистку временного буфера памяти, могут возникнуть такие проблемы:
Как почистить кэш компьютера на Windows — ручная чистка
Операционная система предоставляет встроенные инструменты, как очистить кэш на компе. Для этого есть целый набор стандартных программ и утилит, которые будут описаны ниже.
Как почистить кэш компьютера на Windows — способы для эскизов файлов
Для этого необходимо перейти в свойства локального системного диска. После этого выбираются средства очистки. Необходимо подождать некоторое время. Выберите из появившегося списка эскизы, чтобы начать чистку. Процесс окончен.
Со временем, если вы пользуетесь предварительным просмотром файлов в проводнике, накапливаются различные элементы, которые могут замедлить работу системы. Это существенно снижает производительность. Поэтому необходимо очищать папку с системными эскизами хотя бы один раз в месяц. Желательно проводить это действие чаще, чтобы избежать серьезных проблем.
После того, как вы в соответствующем пункте настроек отметили нужные элемент, следуйте дальнейшим инструкциям. Процесс очистки произойдет автоматически. Вам не нужно проводить дополнительные действия.
Жесткий диск и эскизы
Система самостоятельно создает необходимые директории для хранения временных файлов. Вы не можете повлиять на этот процесс. Эта информация в будущем используется для запуска отдельных файлов и настройки определенных системных процессов.
Подобный вид кэша способен существенно ускорить работу операционной системы. Чтобы избежать различных сбоев и поломок, рекомендуется периодически проводить очистку кэша виндовс 10 и ниже. Для этого можно воспользоваться встроенным программным обеспечением.
Запустить средство очистки можно следующими методами:
После этого пользователь автоматически перенаправляется в окно соответствующей утилиты. Необходимо подождать, пока проведется диагностика системных ресурсов. Это может знать некоторое время.
После этого появиться окно, где можно выбрать файлы, которые необходимо очистить. Для этого просто отметьте галочкой нужный пункт. Например, это могут быть эскизы или временные файлы интернета. После того, как выбрали все, что необходимо, начните очистку. Далее следуйте инструкциям программного средства.
Запрет кэширования эскизов
Это полезное свойство, но его не стоит использовать постоянно. Конечно, быстрая загрузка изображений позволяет показать их предварительный вид без предварительных манипуляций. Но при постоянном накоплении информации различные версии накладываются друг на друга, что может вызвать ошибки и некорректное отображение данных.
По этой причине была предоставлена возможность отключения данной возможности, что актуально для тех, кто часто работает с графическими отображениями данных. Для этого необходимо воспользоваться утилитой быстрого доступа и перейти в редактор групповой политики.
Нажмите сочетание клавиш Win + R. Наберите: gpedit.msc. На левой панели откройте папку с конфигурациями пользователя. Перейдите в административные шаблоны, после чего переместитесь в окно системных компонентов и выберете пункт для отключения отображения эскизов. Вы можете таким же способом вернуть эту настройку при необходимости.
Также вы можете воспользоваться поиском и перейти в настройки параметров системных папок. Здесь есть пункт для отображения значков или эскизов. Выберете нужное состояние и сохраните изменения. После этого перезагрузите систему, что изменения вступили в силу.
Оперативная память
Для этого была разработана специальная утилита, которая позволяет быстро очистить кэш оперативной памяти без непосредственного вмешательства пользователя в настройки системы. Необходимо перейти в системную папку и запустить соответствующую программу, которая находится в папке C:WindowsSystem32 и называется rundll32.exe.
После запуска утилиты от имени администратора произойдет автоматическая очистка кэша оперативной памяти. Можете создать ярлык на рабочем столе для быстрого доступа к компоненту, для чего кликните по нему правой кнопкой мыши и выберете пункт «Создать ярлык».
Интернет-браузеры
Во время работы браузеру необходимо множество файлов. Они обычно сохраняются на системном диске. Некоторые из них система автоматически очищает после перезапуска. Но со временем они накапливаются, что может вызывать множество проблем с производительностью и наличием свободного пространства.
Чтобы настроить встроенный браузер, достаточно запустить соответствующую утилиту через поиск. После этого перейдите в общие свойства интернета. Запустите Google Chrome или любой браузер, которым вы пользуетесь. Перейдите в пункт для удаления истории и очистки кэша браузера.
Чтобы очистить кэш браузера, нажмите на кнопку удаления. Делайте эту процедуру периодически, чтобы избавиться от мусорных файлов. Также можно настроить автоматическую очистку. Для этого необходимо перейти на вкладку дополнительных параметров и указать регулярность очистки.
Во временных файлах вы можете настроить размер удаляемых данных, указать время, включить уведомления. Можно также ограничить время пребывания на определенной странице браузера для экономии трафика.
Для настройки других браузеров можно воспользоваться встроенными настройками. Здесь простой интерфейс, поэтому вы легко сможете разобраться с тем, что нужно делать. Можете настроить очистку определенных ресурсов или, наоборот, сохранение нужных данных.
Способы для DNS кэша
Для этого нужно запустить командную строку. Это можно сделать несколькими методами:
Теперь введите команду, которая позволить очистить нужные данные: ipconfig /flushdns. После выполнения процедуры будет выведено сообщение об успешном завершении процесса.
Очистка кэша восстановления системы
Периодически создаются точки восстановления системы, которые позволяют откатить определенные настройки. Для них выделяется ограниченное свободное пространство. Когда оно заканчивается, возможны различные неполадки. Из-за этого система начнет функционировать неисправно. Поэтому необходимо знать, как очистить кэш на Windows 10 и ниже.
Перейдите в панель управления. Воспользуйтесь для этого стандартным поиском. Зайдите в раздел восстановления системы. Теперь откройте диалоговое окно для настройки. На соответствующей вкладке вы можете указать автоматическое создание точек восстановления или отключить их, что не рекомендуется делать. Удалите имеющиеся точки для освобождения дискового пространства. Создайте новую точку в целях безопасности и примените изменения.
Как почистить кэш компьютера на Windowsс помощью программ
Почистить кэш компьютера на Windows с помощью программ — достаточно легко. Существует множество специализированных пакетов, которые позволяют быстро очистить системный кэш. Например, CCleaner имеет простой и понятный интерфейс. Необходимо отметить нужные компоненты для удаления и нажать кнопку «Очистить». Существует множество и других программ. Каждая из которых обладает похожим функционалом, поэтому можно выбрать любую из них.
Как произвести очистку кэш памяти?
Для этого можно воспользоваться различными инструментами. Каждый из них обладает своими преимуществами и недостатками, но используется для выполнения различных процедур.
DNS (ДНС)
Для этого необходимо перейти в командную строку любым из перечисленных методов. После этого вводится специальная команда для очистки. При успешном выполнении выведется соответствующее сообщение о завершении процесса.
Чистка thumbnail
Для этого можно перейти в свойства системного диска. Далее необходимо выбрать стандартную утилиту для очистки диска. Галочкой отметьте thumbnails. После этого можете начать очистку. Обычно это не занимает много времени.
Вы можете отключить отображение эскизов. Таким образом, вы не увидите иконок, но сможете сэкономить место в кэш памяти, что важно для выполнения других процессов. Перейдите в свойства папки и настройте соответствующее отображение. Перезапустите систему.
Нюансы для оперативной памяти
Оперативную память нужно очищать регулярно. Поэтому имеет смысл автоматизировать этот процесс. Создайте на рабочем столе ярлык, который ссылается на программу очистки кэша оперативной памяти, находящуюся в C:WindowsSystem32 под названием rundll32.exe. После создания ярлыка нажмите на него. Проведется анализ и чистка ресурсов. В результате ваше устройство начнет работать намного быстрее.
Как удалить все временные файлы с помощью программ?
Чтобы не лезть в сложные настройки, можете воспользоваться специальным программным обеспечением. Это существенно упростит поставленную задачу. Например, скачайте CCleaner – это распространенный программный пакет. Базовый функционал предоставляется совершенно бесплатно, что подойдет для повседневных нужд.
Загрузите установочный файл с сайта разработчика. Установите программу, следуя пошаговой инструкции установщика. После этого запустите программный продукт.
С левой стороны располагаются пункты, которые подвергаются очистке. Выберете галочкой те элементы, которые необходимо удалить. После этого нажмите на кнопку анализ. Будет проведена проверка этих элементов и выделены те, которые можно удалить. Нажмите на кнопку «Очистка». Начнется удаление ненужных кэш файлов. Этот процесс может занять некоторое время в зависимости от производительности системы.
Также вы можете очистить ненужные записи реестра, если перейдет на соответствующую вкладку. Это позволяет очистить битые ссылки, что существенно ускорить быстродействие системы. Рекомендуется перед этим создать точку восстановления, если вы не уверены в своих действиях.
Главное преимущество такого метода очистки – доступность. Скачать и установить программу сможет каждый. Вам не требуется вникать в тонкости работы ОС. Вся настройка и очистка будет проведена вместо вас.
Способы для браузера
Для каждого браузера способ отличается. Базовый алгоритм следующий: перейдите в настройки. Зайдите на вкладку очистки истории и выберете нужные файлы. Нажмите на кнопку «Очистить». Это может занять некоторое время.
Возможные проблемы
Иногда в процессе очистки могут возникнуть некоторые неприятности. В особенности такое случается, если вы пытались самостоятельно очистить кэш, но допустили ошибку на одном из этапов. Рассмотрим распространенные неполадки среди пользователей.
Файлы в кэш памяти не удаляются
Бывает, что удаляемые ресурсы используются рабочим приложением. В таком случае они не могут быть удалены. Чтобы справиться с проблемой, вам необходимо открыть диспетчер задач, выбрать работающий процесс остановить его и запустить очистку заново. Теперь все должно пройти в соответствии с правилами.
Не удаляется кэш браузера
Бывает, что некоторые файлы браузера также используются во время удаления. По этой причине кэш не может быть очищен. В таком случае рекомендуется закрыть приложение. Все процессы будут остановлены, что позволит очистить кэш.
Меры предосторожности
Следует помнить, что очистка кэша дает возможность ускорить только некоторые процессы. Например, если вы запретите использование эскизов, работа проводника замедлится. Если вы удалите корзину, то можете лишиться некоторых файлов, которые могли быть полезными.
Если вы очистите данные браузера неверно, то рискуете потерять информацию о паролях. Поэтому следует внимательно следить за тем, какие данные вы удаляете.
Удаление кэша позволяет как ускорить, так и замедлить работу системы. Вам следует грамотно распоряжаться со своими файлами. Рекомендуется вручную выбирать удаляемые ресурсы системы. Таким образом, вы сможете защитить ценную информацию, а также обеспечить конфиденциальность данных.
Было рассмотрено, что такое кэш, а также основные методы для его очистки. Постоянно необходимо следить за данными браузера и DNS, которые существенно тормозят работу ОС. Вы можете осуществлять очистку как вручную, так и использовать специальное ПО, что позволит упростить весь процесс и не вдаваться в подробности.
Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3
Во всех центральных процессорах любого компьютера, будь то дешёвый ноутбук или сервер за миллионы долларов, есть устройство под названием «кэш». И с очень большой вероятностью он обладает несколькими уровнями.
Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?
Что такое кэш?
TL;DR: это небольшая, но очень быстрая память, расположенная в непосредственной близости от логических блоков центрального процессора.
Однако мы, разумеется, можем узнать о кэше гораздо больше…
Давайте начнём с воображаемой волшебной системы хранения: она бесконечно быстра, может одновременно обрабатывать бесконечное количество операций передачи данных и всегда обеспечивает надёжное и безопасное хранение данных. Конечно же, ничего подобного и близко не существует, однако если бы это было так, то структура процессора была бы гораздо проще.
Процессорам бы тогда требовались только логические блоки для сложения, умножения и т.п, а также система управления передачей данных, ведь наша теоретическая система хранения способна мгновенно передавать и получать все необходимые числа; ни одному из логических блоков не приходится простаивать в ожидании передачи данных.
Но, как мы знаем, такой волшебной технологии хранения не существует. Вместо неё у нас есть жёсткие диски или твердотельные накопители, и даже самые лучшие из них далеки от возможностей обработки, необходимых для современного процессора.
Великий Т’Фон хранения данных
Причина этого заключается в том, что современные процессоры невероятно быстры — им требуется всего один тактовый цикл для сложения двух 64-битных целочисленных значений; если процессор работает с частотой 4 ГГЦ, то это составляет всего 0,00000000025 секунды, или четверть наносекунды.
В то же время, вращающемуся жёсткому диску требуются тысячи наносекунд только для нахождения данных на дисках, не говоря уже об их передаче, а твердотельным накопителям — десятки или сотни наносекунд.
Очевидно, что такие приводы невозможно встроить внутрь процессоров, поэтому между ними будет присутствовать физическое разделение. Поэтому ещё добавляется время на перемещение данных, что усугубляет ситуацию.
Увы, но это Великий А’Туин хранения данных
Именно поэтому нам нужна ещё одна система хранения данных, расположенная между процессором и основным накопителем. Она должна быть быстрее накопителя, способна одновременно управлять множеством операций передачи данных и находиться намного ближе к процессору.
Ну, у нас уже есть такая система, и она называется ОЗУ (RAM); она присутствует в каждом компьютере и выполняет именно эту задачу.
Почти все такие хранилища имеют тип DRAM (dynamic random access memory); они способны передавать данные гораздо быстрее, чем любой накопитель.
Однако, несмотря на свою огромную скорость, DRAM не способна хранить такие объёмы данных.
Одни из самых крупных чипов памяти DDR4, разработанных Micron, хранят 32 Гбит, или 4 ГБ данных; самые крупные жёсткие диски хранят в 4 000 раз больше.
Итак, хоть мы и повысили скорость нашей сети данных, нам потребуются дополнительные системы (аппаратные и программные), чтобы разобраться, какие данные должны храниться в ограниченном объёме DRAM, готовые к обработке процессором.
DRAM могут изготавливаться в корпусе чипа (это называется встроенной (embedded) DRAM). Однако процессоры довольно малы, поэтому в них не удастся поместить много памяти.
10 МБ DRAM слева от графического процессора Xbox 360. Источник: CPU Grave Yard
Подавляющее большинство DRAM расположено в непосредственной близости от процессора, подключено к материнской плате и всегда является самым близким к процессору компонентом. Тем не менее, эта память всё равно недостаточно быстра…
DRAM требуется примерно 100 наносекунд для нахождения данных, но, по крайней мере, она способна передавать миллиарды битов в секунду. Похоже, нам нужна ещё одна ступень памяти, которую можно разместить между блоками процессора и DRAM.
На сцене появляется оставшаяся ступень: SRAM (static random access memory). DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, а SRAM для той же задачи применяет транзисторы, которые работают с той же скоростью, что и логические блоки процессора (примерно в 10 раз быстрее, чем DRAM).
Разумеется, у SRAM есть недостаток, и он опять-таки связан с пространством.
Память на основе транзисторов занимает гораздо больше места, чем DRAM: в том же размере, что чип DDR4 на 4 ГБ, можно получить меньше 100 МБ SRAM. Но поскольку она производится по тому же технологическому процессу, что и CPU, память SRAM можно встроить прямо внутрь процессора, максимально близко к логическим блокам.
С каждой дополнительной ступенью мы увеличивали скорость перемещаемых данных ценой хранимого объёма. Мы можем продолжить и добавлять новые ступени,, которые будут быстрее, но меньше.
И так мы добрались до более строгого определения понятия кэша: это набор блоков SRAM, расположенных внутри процессора; они обеспечивают максимальную занятость процессора благодаря передаче и сохранению данных с очень высокими скоростями. Вас устраивает такое определение? Отлично, потому что дальше всё будет намного сложнее!
Кэш: многоуровневая парковка
Как мы говорили выше, кэш необходим, потому что у нас нет волшебной системы хранения, способной справиться с потреблением данных логических блоков процессора. Современные центральные и графические процессоры содержат множество блоков SRAM, внутри упорядоченных в иерархию — последовательность кэшей, имеющих следующую структуру:
На приведённом выше изображении процессор (CPU) обозначен прямоугольником с пунктирной границей. Слева расположены ALU (arithmetic logic units, арифметико-логические устройства); это структуры, выполняющие математические операции. Хотя строго говоря, они не являются кэшем, ближайший к ALU уровень памяти — это регистры (они упорядочены в регистровый файл).
Каждый из них хранит одно число, например, 64-битное целое число; само значение может быть элементом каких-нибудь данных, кодом определённой инструкции или адресом памяти каких-то других данных.
Регистровый файл в десктопных процессорах довольно мал, например, в каждом из ядер Intel Core i9-9900K есть по два банка таких файлов, а тот, который предназначен для целых чисел, содержит всего 180 64-битных целых чисел. Другой регистровый файл для векторов (небольших массивов чисел) содержит 168 256-битных элементов. То есть общий регистровый файл каждого ядра чуть меньше 7 КБ. Для сравнения: регистровый файл потоковых мультипроцессоров (так в GPU называются аналоги ядер CPU) Nvidia GeForce RTX 2080 Ti имеет размер 256 КБ.
Регистры, как и кэш, являются SRAM, но их скорость не превышает скорость обслуживаемых ими ALU; они передают данные за один тактовый цикл. Но они не предназначены для хранения больших объёмов данных (только одного элемента), поэтому рядом с ними всегда есть более крупные блоки памяти: это кэш первого уровня (Level 1).
Одно ядро процессора Intel Skylake. Источник: Wikichip
На изображении выше представлен увеличенный снимок одного из ядер десктопного процессора Intel Skylake.
ALU и регистровые файлы расположены слева и обведены зелёной рамкой. В верхней части фотографии белым обозначен кэш данных первого уровня (Level 1 Data cache). Он не содержит много информации, всего 32 КБ, но как и регистры, он расположен очень близко к логическим блокам и работает на одной скорости с ними.
Ещё одним белым прямоугольником справа показан кэш инструкций первого уровня (Level 1 Instruction cache), тоже имеющий размер 32 КБ. Как понятно из названия, в нём хранятся различные команды, готовые к разбиению на более мелкие микрооперации (обычно обозначаемые μops), которые должны выполнять ALU. Для них тоже существует кэш, который можно классифицировать как Level 0, потому что он меньше (содержит всего 1 500 операций) и ближе, чем кэши L1.
Вы можете задаться вопросом: почему эти блоки SRAM настолько малы? Почему они не имеют размер в мегабайт? Вместе кэши данных и инструкций занимают почти такую же площадь на чипе, что основные логические блоки, поэтому их увеличение приведёт к повышению общей площади кристалла.
Но основная причина их размера в несколько килобайт заключается в том, что при увеличении ёмкости памяти повышается время, необходимое для поиска и получения данных. Кэшу L1 нужно быть очень быстрым, поэтому необходимо достичь компромисса между размером и скоростью — в лучшем случае для получения данных из этого кэша требуется около 5 тактовых циклов (для значений с плавающей запятой больше).
Кэш L2 процессора Skylake: 256 КБ SRAM
Но если бы это был единственный кэш внутри процессора, то его производительность наткнулась бы на неожиданное препятствие. Именно поэтому в ядра встраивается еще один уровень памяти: кэш Level 2. Это обобщённый блок хранения, содержащий инструкции и данные.
Он всегда больше, чем Level 1: в процессорах AMD Zen 2 он занимает до 512 КБ, чтобы кэши нижнего уровня обеспечивались достаточным объёмом данных. Однако большой размер требует жертв — для поиска и передачи данных из этого кэша требуется примерно в два раза больше времени по сравнению с Level 1.
Во времена первого Intel Pentium кэш Level 2 был отдельным чипом, или устанавливаемым на отдельной небольшой плате (как ОЗУ DIMM), или встроенным в основную материнскую плату. Постепенно он перебрался в корпус самого процессора, и, наконец, полностью интегрировался в кристалл чипа; это произошло в эпоху таких процессоров, как Pentium III и AMD K6-III.
За этим достижением вскоре последовал ещё один уровень кэша, необходимый для поддержки более низких уровней, и появился он как раз вовремя — в эпоху расцвета многоядерных чипов.
Чип Intel Kaby Lake. Источник: Wikichip
На этом изображении чипа Intel Kaby Lake в левой части показаны четыре ядра (интегрированный GPU занимает почти половину кристалла и находится справа). Каждое ядро имеет свой «личный» набор кэшей Level 1 и 2 (выделены белыми и жёлтым прямоугольниками), но у них также есть и третий комплект блоков SRAM.
Кэш третьего уровня (Level 3), хоть и расположен непосредственно рядом с одним ядром, является полностью общим для всех остальных — каждое ядро свободно может получать доступ к содержимому кэша L3 другого ядра. Он намного больше (от 2 до 32 МБ), но и намного медленнее, в среднем более 30 циклов, особенно когда ядру нужно использовать данные, находящиеся в блоке кэша, расположенного на большом расстоянии.
Ниже показано одно ядро архитектуры AMD Zen 2: кэши Level 1 данных и инструкций по 32 КБ (в белых прямоугольниках), кэш Level 2 на 512 КБ (в жёлтых прямоугольниках) и огромный блок кэша L3 на 4 МБ (в красном прямоугольнике).
Увеличенный снимок одного ядра процессора AMD Zen 2. Источник: Fritzchens Fritz
Но постойте: как 32 КБ могут занимать больше физического пространства чем 512 КБ? Если Level 1 хранит так мало данных, почему он непропорционально велик по сравнению с кэшами L2 и L3?
Не только числа
Кэш повышает производительность, ускоряя передачу данных в логические блоки и храня поблизости копию часто используемых инструкций и данных. Хранящаяся в кэше информация разделена на две части: сами данные и место, где они изначально располагаются в системной памяти/накопителе — такой адрес называется тег кэша (cache tag).
Когда процессор выполняет операцию, которой нужно считать или записать данные из/в память, то он начинает с проверки тегов в кэше Level 1. Если нужные данные там есть (произошло кэш-попадание (cache hit)), то доступ к этим данным выполняется почти сразу же. Промах кэша (cache miss) возникает, если требуемый тег не найден на самом нижнем уровне кэша.
В кэше L1 создаётся новый тег, а за дело берётся остальная часть архитектуры процессора выполняющая поиск в других уровнях кэша (при необходимости вплоть до основного накопителя) данных для этого тега. Но чтобы освободить пространство в кэше L1 под этот новый тег, что-то обязательно нужно перебросить в L2.
Это приводит к почти постоянному перемешиванию данных, выполняемому всего за несколько тактовых циклов. Единственный способ добиться этого — создание сложной структуры вокруг SRAM для обработки управления данными. Иными словами, если бы ядро процессора состояло всего из одного ALU, то кэш L1 был бы гораздо проще, но поскольку их десятки (и многие из них жонглируют двумя потоками инструкций), то для перемещения данных кэшу требуется множество соединений.
Для изучения информации кэша в процессоре вашего компьютера можно использовать бесплатные программы, например CPU-Z. Но что означает вся эта информация? Важным элементом является метка set associative (множественно-ассоциативный) — она указывает на правила, применяемые для копирования блоков данных из системной памяти в кэш.
Представленная выше информация кэша относится к Intel Core i7-9700K. Каждый из его кэшей Level 1 разделён на 64 небольших блока, называемые sets, и каждый из этих блоков ещё разбит на строки кэша (cache lines) (размером 64 байта). «Set associative» означает, что блок данных из системы привязывается к строкам кэша в одном конкретном сете, и не может свободно привязываться к какому-то другому месту.
«8-way» означает, что один блок может быть связан с 8 строками кэша в сете. Чем выше уровень ассоциативности (т.е. чем больше «way»), тем больше шансов на кэш-попадание во время поиска процессором данных и тем меньше потери, вызываемые промахами кэша. Недостатки такой системы заключаются в повышении сложности и энергопотребления, а также понижении производительности, потому что для каждого блока данных нужно обрабатывать больше строк кэша.
Инклюзивный кэш L1+L2, victim cache L3, политики write-back, есть даже ECC. Источник: Fritzchens Fritz
Ещё один аспект сложности кэша связан с тем, как хранятся данные между разными уровнями. Правила задаются в inclusion policy (политике инклюзивности). Например, процессоры Intel Core имеют полностью инклюзивные кэши L1+L3. Это означает, что одни данные в Level 1, например, могут присутствовать в Level 3. Может показаться, что это пустая трата ценного пространства кэша, однако преимущество заключается в том, что если процессор совершает промах при поиске тега в нижнем уровне, ему не потребуется обыскивать верхний уровень для нахождения данных.
В тех же самых процессорах кэш L2 неинклюзивен: все хранящиеся там данные не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти чипа нужно искать ненайденный тег в L3 (который всегда намного больше). Victim caches (кэши-жертвы) имеют похожий принцип, но они используются для хранения информации, переносимой с более низких уровней. Например, процессоры AMD Zen 2 используют victim cache L3, который просто хранит данные из L2.
Существуют и другие политики для кэша, например, при которых данные записываются и в кэш, и основную системную память. Они называются политиками записи (write policies); большинство современных процессоров использует кэши write-back — это означает, что когда данные записываются на уровень кэшей, происходит задержка перед записью их копии в системную память. Чаще всего эта пауза длится в течение того времени, пока данные остаются в кэше — ОЗУ получает эту информацию только при «выталкивании» из кэша.
Графический процессор Nvidia GA100, имеющий 20 МБ кэша L1 и 40 МБ кэша L2
Для проектировщиков процессоров выбор объёма, типа и политики кэшей является вопросом уравновешивания стремления к повышению мощности процессора с увеличением его сложности и занимаемым чипом пространством. Если бы можно было создать 1000-канальные ассоциативные кэши Level 1 на 20 МБ такими, чтобы они при этом не занимали площадь Манхэттена (и не потребляли столько же энергии), то у нас у всех бы были компьютеры с такими чипами!
Самый нижний уровень кэшей в современных процессорах за последнее десятилетие практически не изменился. Однако кэш Level 3 продолжает расти в размерах. Если бы десять лет назад у вас было 999 долларов на Intel i7-980X, то вы могли бы получить кэш размером 12 МБ. Сегодня за половину этой суммы можно приобрести 64 МБ.
Подведём итог: кэш — это абсолютно необходимое и потрясающее устройство. Мы не рассматривали другие типы кэшей в CPU и GPU (например, буферы ассоциативной трансляции или кэши текстур), но поскольку все они имеют такую же простую структуру и расположение уровней, разобраться в них будет несложно.
Был ли у вас компьютер с кэшем L2 на материнской плате? Как насчёт слотовых Pentium II и Celeron (например, 300a) на дочерних платах? Помните свой первый процессор с общим L3?
На правах рекламы
Наша компания предлагает в аренду серверы с процессорами от Intel и AMD. В последнем случае — это эпичные серверы! VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.