Андрей Смирнов
Время чтения: ~23 мин.
Просмотров: 1

Что такое кэш память процессора и на что влияет??

Назначение и тип кэша

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

Кэширование и кэшированные данные

Выделяют два типа кэша:

  1. Аппаратный.
  2. Программный.

Аппаратная реализация

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

Организацию кэш-памяти центрального процессора для ПК рассмотрим на примере Intel Xeon E3-1240. Объем кэша L1 – 32 КБ на ядро, L2 – 256 КБ на ядро, а L3 – 8 МБ на все ядра. У более современных и многоядерных процессоров, объем памяти больше. Скорость чтения, записи и копирования, у каждого последующего уровня на 30-50% меньше. При этом пропускная способность самого медленного кэша L3 – в 6-8 раз выше, в сравнении с оперативной памятью.

Пропускная способность аппаратного кэша.

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

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

Стоит отметить, что увеличить объем аппаратного кэша невозможно. И если для процессора это не критично, так как производитель устанавливает оптимальный объем памяти, то для жесткого диска лишней кэш память не будет. Поскольку часть памяти отведено под прошивку и микро ОС. Оптимальный объем 128 или 256 МБ.

Программная реализация

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

Стоит отметить, что на скорость считывания и загрузки данных из кэша влияет тип накопителя. Наивысшую скорость обеспечивают твердотельные диски – SSD, среднюю скорость демонстрируют гибридные решения SSD и HDD – HHD, наименьшая скорость у диска HDD.

Кэш в разных устройствах

Для чего нужна кэш-память процессора?

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

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

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

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

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

Примечания

  1. Кэш // Большой орфографический словарь русского языка / под ред. С. Г. Бархударова, И. Ф. Протченко и Л. И. Скворцова. — 3-е изд. — М.: ОНИКС Мир и Образование, 2007. — С. 399. — ISBN 978-5-488-00924-0. — ISBN 978-5-94666-375-5.
  2. Большой толковый словарь русского языка / Автор, сост. и гл. ред. С. А. Кузнецов. Институт лингвистических исследований РАН, 2000
  3. Захаренко Е. Н., Комарова Л. Н., Нечаева И. В. Новый словарь иностранных слов. М.: 2003
  4. Толковый словарь по вычислительной технике. Microsoft Press, из-во «Русская Редакция», 1995
  5. Першиков В. И., Савинков В. М. Толковый словарь по информатике / Рецензенты: канд. физ.-мат. наук А. С. Марков и д-р физ.-мат. наук И. В. Поттосин. — М.: Финансы и статистика, 1991. — 543 с. — 50 000 экз. — ISBN 5-279-00367-0.
  6. Борковский А. Б. Англо-русский словарь по программированию и информатике (с толкованиями). — М.: Русский язык, 1990. — 335 с. — 50 050 (доп,) экз. — ISBN 5-200-01169-3.

Как кэш влияет на производительность?

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

Представьте, что процессор загружает данные из кэша L1 100 раз подряд. Если процент попаданий в кэш будет 100%, процессору понадобиться 100 наносекунд чтобы получить эти данные. Однако, как только процент попаданий уменьшится до 99%, процессору нужно будет извлечь данные из кэша L2, а там уже задержка 10 наносекунд. Получится 99 наносекунд на 99 запросов и 10 наносекунд на 1 запрос. Поэтому уменьшение процента попаданий в кэш на 1% снижает производительность процессора 10%.

В реальном времени процент попаданий в кэш находится между 95 и 97%. Но как вы понимаете, разница в производительности между этими показателями не в 2%, а в 14%. Имейте в виду, что в примере, мы предполагаем, что прощенные данные всегда есть в кэше уровня L2, в реальной жизни данные могут быть удалены из кэша, это означает, что их придется получать из оперативной памяти, у которой задержка 80-120 наносекунд. Здесь разница между 95 и 97 процентами ещё более значительная.

Низкая производительность кэша в процессорах AMD Bulldozer и Piledriver была одной из основных причин, почему они проигрывали процессорам Intel. В этих процессорах кэш L1 разделялся между несколькими ядрами, что делало его очень не эффективным. В современных процессорах Ryzen такой проблемы нет.

Можно сделать вывод, чем больше объем кэша, тем выше производительность, поскольку процессор сможет получить в большем количестве случаев нужные ему данные быстрее

Однако, стоит обращать внимание не только на объем кэша процессора, но и на его архитектуру

Роль ОС в виртуальной памяти на примере Linux

Вот тут мы плавно подходим к высокоуровневой памяти.

Запуск процесса

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

Получается, что на низком уровне автоматическая, статическая, динамическая память — это всё сегменты.

Виртуальная память в ОС

PML4 изначально была создана для виртуальной памяти, но ОС использует её и для других задач.

Файл подкачки

Часть памяти может находиться в файле подкачки. При нехватке памяти ОС может часть этой памяти перенести на диск. Вместе с этим ОС удаляет запись из PML4, чтобы при попытке обратиться к этой памяти был сгенерирован Page Fault. Это было сделано для того, чтобы при попытке обратиться к памяти, которая была отгружена на диск, вызвать ОС, которая загрузит память из диска обратно в ОС, вернёт запись в PML4 и передаст управление обратно процессу, который на сей раз благополучно повторит процесс разыменования.

Файл или устройство, отображённое в память

mmap можно использовать и для отображения файла (в *nix системах устройства — тоже файлы) в память. Для этого создаётся буфер в физической памяти, в которую записывается часть файла, и создаётся запись в PML4. Если процесс выйдет за границу виртуальной памяти в PML4, то ОС загрузит новый кусок файла в буфер и отредактирует PML4, сдвинув виртуальный указатель, но оставив физический.

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

COW-память и ленивая аллокация

При вызове mmap в некоторых ОС никакой памяти на самом деле не выделяется, только добавляется запись в структурах самой ОС. При первом обращении процесса к ещё не аллоцированной памяти будет Page Fault, во время которого ОС произведёт полную аллокацию. Это удобно в случае, когда процесс аллоцировал память, но никогда её не использовал. В таком случае пройдёт только первый, ленивый и относительно быстрый этап аллокации.

С COW дела обстоят схоже.

Copy On Write память — это память, общая для чтения у нескольких объектов в системе (под объектами имеется в виду что угодно, начиная от объектов в ООП и заканчивая процессами с разделяемой памятью). Если же один из объектов начинает писать в память, то перед этим такая память делится на две части: одна остаётся у всех остальных объектов, а другая становится памятью только для объекта, который хочет её изменить. В итоге мы получаем экономию памяти, а в случае необходимости записи в эту память, мы её копируем.

У всех процессов с COW-памятью в PML4 ставится флаг «только чтение» для того, чтобы при записи вызвать ОС через Page Fault для разделения памяти. Реальные же права доступа на запись ОС хранит в своих таблицах.

Это были несколько примеров того, как ОС по-хитрому использует PML4 для своих нужд.

История[править]

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

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

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

В общем, могут быть такие уровни: L1 (первый уровень), L2 (второй уровень), L3 (третий уровень). Теперь немного подробнее по каждому из них:

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

Мы будем рассматривать объёмы на процессоре высокого уровня производительности Intel Core i7-3770K. Данный процессор оснащен 4х32 Кб кэш-памяти первого уровня 4 x 32 КБ = 128 Кб. (на каждое ядро по 32 КБ)

Кэш второго уровня (L2) – второй уровень более масштабный, нежели первый, но в результате, обладает меньшими «скоростными характеристиками». Соответственно, служит буфером между уровнем L1 и L3. Если обратиться снова к нашему примеру Core i7-3770 K, то здесь объём кэш-памяти L2 составляет 4х256 Кб = 1 Мб.

blog comments powered by DISQUS back to top

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

Слово кэш пришло к нам от английского cache, что дословно переводится как “тайник”. Не путайте его с однозвучным словом cash, которое означает “наличные деньги”.

Говоря простыми словами, кэш (cache) представляет собой копии файлов, которыми вы пользовались, для быстрого доступа к ним. Если вы их удалите, то телефон, компьютер или браузер создаст их снова сразу после использования той или иной программы.

Как снизить нагрузку на диск от uTorrent

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

(сочетание кнопок Ctrl+Shift+Esc)

, отсортировать программы и процессы в зависимости от их нагрузки на диск

Здесь важно посмотреть, нет ли других (отличных от uTorrent) программ, которые также активно используют диск

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

«Открытые» параметры в uTorrent

Почему «отрытые»? Просто эти параметры можно изменить в настройках самой программы (но есть также и те «параметры», которые изменить так просто без доп. софта нельзя, но о них ниже)

.

Распределение файлов. Кэш

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

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

И так, заходим в настройки uTorrent: можно через меню (см. скрин ниже), можно с помощью сочетания клавиш Ctrl+P

.

Далее откройте вкладку «General» (в русской версии «Общие»), и поставьте галочку напротив пункта «Распределять все файлы» (прим.:
у меня полу-русская версия uTorrent и поэтому не очень удобные скрины, но, думаю, что нужную галочку найдете…)

.

Распределять все файлы — uTorrent / Кликабельно

Кроме этого, в разделе «Advanced» («Расширенные») откройте вкладку «Disk Cache» (на русском «Кэширование») и задайте размер кэша в 256 МБ. Сохраните настройки.

Использовать выбранный размер кэша — uTorrent / Кликабельно

Максимальное кол-во активных торрентов

Весьма важный параметр. Например, если у вас скачивают 5÷6 торрентов, плюс вы сами загружаете 3÷4 — то не удивительно, что создается высокая нагрузка на диск (вплоть до 100%).

Поэтому в разделе очередности («Queueing») поставьте максимум активных торрентов (и загрузок) не более 2-3. См. скрин ниже.

Настройка очередности / Кликабельно

Ограничение скорости загрузки

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

Скорость загрузки, отдачи / Кликабельно

«Скрытые» параметры uTorrent

В uTorrent есть параметры, которые серьезно влияют на нагрузку диска, но их нельзя поменять в меню программы (вот такой вот казус…).

Эту достаточно «тонкую» настройку в uTorrent можно задать только с помощью стороннего софта. В своем примере буду использовать (что и вам рекомендую).

Действия для включения последовательной загрузки файлов одного торрента:

На этом всё.

Всего доброго!

Одна из причин возникновения ошибки uTorrent – диск перегружен 100% – это перегрузка жесткого диска вашего компьютера. С чем это связанно? Если говорить простым языком, то это означает, что жесткий диск вашего компьютера не справляется с сохранением информации и ее отдачей. Здесь мы не будем сильно вдаваться в подробности работы жесткого диска и взаимодействия его с uTorrent.

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

Несколько советов для активных сидеров и личеров. Сохраняйте и раздавайте файлы с того жесткого диска, на котором НЕТ установленной операционной системы. Желательно, чтобы для этого был отдельный жесткий диск с высокой скоростью чтения/записи и кэшем. В возникновении ситуации, когда uTorrent пишет диск перегружен немаловажную роль играет объем оперативной памяти, чем ее больше, тем лучше, и наоборот

Так же важно, если у вас появляется подобная ошибка, обязательно отключите использование файла подкачки Windows

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

Основные характеристики процессоров

Характеристик у ЦП достаточно много, однако, главной является его набор команд или система команд. В настоящее время все ЦП для компьютеров используют систему команд, совместимую с 8086 (так называемое семейство х86). Для ЦП с 64-х битной архитектурой эта система команд расширяется дополнительным набором команд, но при этом, совместимость с х86 остаётся.

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

Современные ЦП имеют разрядность 32 или 64 бита.

Помимо перечисленных, основными характеристиками ЦП являются:

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

Рассмотрим их более детально.

Сокет

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

Количество ядер центрального процессора

В настоящее время одноядерных ЦП практически не выпускается. Хотя, до сих пор эксплуатируются устаревшие модели Pentium и Celeron, имеющие только одно ядро. Большинство современных ЦП имеет их, как минимум 4. Максимальное их количество составляет 28 у ЦП Xeon от фирмы Intel и 32 у Threadripper от AMD.

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

Тактовая частота процессора

Тактовая частота определяет быстродействие ЦП, то есть частоту с которой он может обрабатывать команды. Она выражается в герцах; 1 герц – это тактовый импульс в секунду. У современных ЦП её значение составляет тысячи мегагерц или гигагерцы (миллиарды герц).

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

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

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

Это один из важнейших параметров ЦП серверной системы. ЦП, которые имеют большой объём кэша, иногда в 5-10 раз превосходят по производительности ЦП с большей частотой и большим количеством потоков.

Графическое ядро процессора

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

  1. Во-первых, существенно увеличивается производительность связки процессор-видеокарта. Собственно, сам графический процессор и является видеокартой. Это существенно упрощает обмен данными во всём ПК, поскольку видеокарта уде не занимает шину.
  2. Во-вторых, надёжность микросхем ЦП примерно на порядок превосходит надёжность микросхем чипсетов, что увеличивает время безотказной работы системы в целом.
  3. Ну, и в-третьих, скорость работы современных графических ядер, интегрированных в ЦП, примерно соответствует уровню low-end видеокарт, что позволяет сэкономить на создании простых компьютерных решений с экономией до сотни долларов на одном ПК.

Meltdown

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

Ещё немного о PML4

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

  • P (Present) указывает на то, что далее идёт таблица следующего уровня. Если 0, то вместо указателя на следующую таблицу лежит указатель на физическую страницу без смещения. Если в PT будет лежать сразу указатель на физический сегмент, то такой сегмент будет размером 2 МБ. C 1 ГБ сегментами аналогично, только в PD-таблице.
  • R/W (Read/Write) указывает на доступ для чтения. Если стоит 0, то разрешено только чтение.
  • NX (No Execute) (самый левый), установленный в 1, запрещает исполнение данных как программный код.
  • U/S (User/Supervisor), установленный в 0, запрещает использовать данные процессам (User, кольцо защиты 3), память может быть использована только ОС и драйверами (Supervisor, кольцо 0) (это по сути самый важный флаг для Meltdown).
  • A (Accessed) указывает на то, была ли память, на которую указывает таблица, использована хотя бы раз.

Принцип работы

Наконец, перейдём к самому принципу работы уязвимости Metldown.

Ранее уже было написано о спекулятивном исполнении команд в статье об архитектуре процессора. Цитата из статьи: «Спекулятивное исполнение команд — это выполнение команды до того, как станет известно, понадобится эта команда или нет».

Суть атаки в том, что современные ОС всё своё адресное пространство отображают в адресном пространстве каждого пользователя (процесса). Другими словами добавляют в PML4-таблицу процесса указатели на подтаблицы ОС, но с флагом U/S, установленным в 0. Это сделано для того, чтобы при переключении контекста процесса уменьшить количество операций перезаписи CR3 и улучшить кэширование данных ОС с чистыми VIPT- или VIVP-кэшами (PML4 первого процесса → PML4 второго процесса вместо PML4 первого процесса → PML4 ОС → PML4 второго процесса), но эту защиту можно обойти в некоторых процессорах Intel и ARM (у AMD обнаружили только уязвимость Spectre, у которой другой принцип работы).

Некоторые ОС используют одну PML4-таблицу на всю систему, а при переключении контекста меняют только подтаблицы. Отсюда в той же Windows максимальный размер ОЗУ 256 ГБ — максимальный размер таблицы PDP.

При спекулятивном исполнении в уязвимых процессорах часть команд может выполниться до того, как будет проверено, стоит ли бит 0 в U/S флаге. Причём благодаря спекуляции код атаки может быть выполнен из недостижимого кода, например, в ветке else при всегда истинном условии в if, перед тем, как процессору станет известно, что этот код недостижим. После того, как процессор поймёт, что доступа к этой памяти нет, он обнулит результат команд доступа к памяти, сбросив соответствующие регистры, но TLB- и L1-кэш он сбрасывать не будет. А в них уже не хранится флаг U/S, поэтому процесс может получить полный доступ к успевшей закэшироваться закрытой памяти ядра ОС, ведь процессор, который нашёл нужную запись в L1 и TLB, не будет проверять её в PML4. Решается эта проблема либо аппаратно — добавлением флагов из PML4 в TLB, либо программно — удаление таблиц памяти ОС из PML4-процессов, что увеличит время смены контекста и системных вызовов.

Кэш-память

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

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

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

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

— кэш-память первого уровня (L1) является самой быстрой и самой дорогой памятью. Она расположена на процессорном кристалле, работает на чистоте процессора и используется непосредственно его ядром. Ёмкость кэш-памяти первого уровня не велика в силу дороговизны и исчисляется килобайтами (обычно не более 128 Кбайт).

— кэш-память второго уровня (L2) — высокоскоростная память, выполняющая те же функции, что и кэш L1. Разница между L1 и L2 в том, что последняя имеет более низкую скорость, но больший объём (от 128 Кбайт до 12 Мбайт), что очень полезно для выполнения ресурсоёмких задач.

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

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

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

В компьютере используется несколько типов памяти. Всем известны HDD/SSD для долгосрочного хранения информации и ОЗУ (RAM), которая при потере питания сбрасывает всё содержимое

Важное различие между ними — это скорость доступа к данным

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

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

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

Система кэш-памяти процессора состоит из двух блоков — контроллера кэш-памяти и собственно самой кэш-памяти.

Контроллер кэш памяти

Контроллер кэш памяти – это устройство, управляющее содержанием кэша, получением необходимой информации из оперативной памяти, передачей ее процессору, а также возвращением в оперативную память результатов вычислений. Когда ядро процессора обращается к контроллеру за какими-то данными, тот проверяет, есть ли эти данные в кэш-памяти. Если это так, ядру моментально отдается информация из кэша (происходит так называемое кэш-попадание). В противном случае ядру приходится ожидать поступления данных из медленной оперативной памяти. Ситуация, когда в кэше не оказывается нужных данных, называется кэш-промахом. Задача контроллера – сделать так, чтобы кэш-промахи происходили как можно реже, а в идеале – чтобы их не было вообще. Размер кэша процессора по сравнению с размером оперативной памяти несоизмеримо мал. В нем может находиться лишь копия крошечной части данных, хранимых в оперативной памяти. Но, не смотря на это, контроллер допускает кэш-промахи не часто. Эффективность его работы определяется несколькими факторами: • размером и структурой кэш-памяти (чем больше ресурсов имеет в своем распоряжении контроллер, тем ниже вероятность кэш-промаха); • эффективностью алгоритмов, по которым контроллер определяет, какая именно информация понадобится процессору в следующий момент времени; • сложностью и количеством задач, одновременно решаемых процессором. Чем сложнее задачи и чем их больше, тем чаще «ошибается» контроллер.

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

Кэш-память процессора изготавливают в виде микросхем статической памяти (англ. Static Random Access Memory, сокращенно — SRAM). По сравнению с другими типами памяти, статическая память обладает очень высокой скоростью работы. Впервые кэш размером 8 KB был встроен в процессор Intel i486 в 1989 г. Однако, эта скорость зависит также от объема конкретной микросхемы. Чем значительней объем микросхемы, тем сложнее обеспечить высокую скорость ее работы. Учитывая указанную особенность, кэш-память процессора изготовляют в виде нескольких небольших блоков, называемых уровнями. В большинстве процессоров используется трехуровневая система кэша: • Кэш-память первого уровня или L1 (от англ. Level — уровень) – очень маленькая, но самая быстрая и наиболее важная микросхема памяти. Ни в одном процессоре ее объем не превышает нескольких десятков килобайт. Работает она без каких-либо задержек. В ней содержатся данные, которые чаще всего используются процессором. Количество микросхем памяти L1 в процессоре, как правило, равно количеству его ядер. Каждое ядро имеет доступ только к своей микросхеме L1. • Кэш-память второго уровня (L2) немного медленнее кэш-памяти L1, но и объем ее более существенный (несколько сотен килобайт)

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

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

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации