Логическая организация кэш-памяти процессора / Хабр

Что такое кэш-память на компьютере?

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

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

  1. DNS-кэш, который хранит запросы компьютера к другим серверам сети. Необходим для того, чтобы не тратить время на повторные обращения, вся необходимая информация хранится в кэш-памяти. Когда нужно полностью обновить данные с сервера, тогда меняется и DNS-кэш. Соответственно, сами собой данные не удаляются, поэтому даже ненужные сохраняются там.
  2. Thumbnail-кэш. Thumbnail дословно переводится как «ноготь большого пальца», а образно обозначает в английском языке миниатюры картинки, превью или эскизы. Компьютер сохраняет в кэш-памяти иконки картинок, видеофайлов или значков программ, поэтому прогружает миниатюры во второй раз значительно быстрее. Но если сами картинки уже удалены, их миниатюры из кэша не исчезают.
  3. Кэш оперативной памяти. Сама оперативная память тоже хранит в себе временные файлы по технологии cache. И некоторые файлы не очищаются из-за ошибок или багов.
  4. Кэш браузера. Уже было упомянуто о кэшировании видео для онлайн-просмотра, но это не всё. Каждая картинка, элементы дизайна, анимация на сайтах сохраняются в кэш-память. Часть веб-страниц полностью хранится во временной памяти, чтобы сократить время их прогрузки. Всё это накапливается, и даже уже неиспользуемые сайты продолжают занимать место.

Архитектуры и принципы работы кэша

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

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

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

Порядок поиска процессором информации в памяти:

CPU ищет информацию в Памяти
Именно таким образом Процессор осуществляет поиск инфоромации

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

Схема организации взаимодействия ядра процессора, кэша и ОЗУ:

Процессор, КЭШ и ОЗУ
Кэш-контроллер является ключевым элементом связи процессора, ОЗУ и Кэш-памяти

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

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

Логическая организация кэш-памяти процессора / Хабр

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

Однако теперь, когда мы находимся на пороге появления постоянно расширяющейся иерархии памяти, когда начинает появляться энергонезависимая память типа Optane 3D XPoint (вариант памяти с изменением фазового состояния) в формате DIMM и SSD, а также новые протоколы (CXL, OpenCAPI, CCIX, NVLink и Gen-Z), возникает вопрос: не пора ли добавить серверам кэш четвёртого уровня? Поскольку от комплекса CPU зависит работа такого количества устройств – некоторые из которых расположены ближе, другие же дальше – логично задуматься над тем, не нужен ли нам ещё один уровень кэша, маскирующий задержки этих других видов памяти и увеличивающий пропускную способность всей системы.

Чтобы представить открывающиеся возможности, мы покопались в своей собственной памяти, а заодно пообщались с разработчиками архитектуры чипов из IBM, Intel, AMD и Marvell, чтобы понять, что они думают об использовании кэша L4 в серверах. Кэш L4, конечно, не новое слово в быстродействии, однако он и не так уж часто встречается в системных архитектурах.

Однако прежде нам стоит пробежаться по истории вопроса.

Добавление кэша первого уровня к процессорам, у которых в то время было всего одно ядро, в 1980-х стало компромиссом, добавляющим задержки в подсистемы памяти, одновременно снижающим среднюю задержку запросов данных и инструкций процессорами. Кэши L1 изначально находились во внешней SRAM, находившейся на материнских платах и подключавшейся к комплексу CPU-память. Такой кэш L1 находился очень близко к процессору, как в смысле тактовой частоты, так и в смысле физического пространства на плате, и давал возможность повысить загрузку CPU. Потом эти кэши разделили, чтобы в одном блоке можно было хранить часто используемые данные, а во втором – популярные инструкции, и это немного увеличило быстродействие. В какой-то момент увеличения тактовой частоты процессоров и соответствующего разрыва в быстродействии CPU и DRAM, были добавлены более жирные, но и более медленные кэши L2 (зато более дешёвые в пересчёте на пропускную способность), опять-таки сначала находившиеся вне корпуса CPU, а потом интегрированные в него. А когда в CPU начали добавлять всё больше и больше ядер, а также всё больше контроллеров DRAM для их загрузки, к иерархии добавили ещё более крупные блоки кэшей L3.

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

Крис Джианос, инженер чипов и архитектор из Intel, руководившей разработкой многих прошлых поколений процессоров Xeon, объясняет это так: «С каждым уровнем кэша нам обычно нужно, чтобы они выросли достаточно сильно по сравнению с предыдущим уровнем, чтобы всё это имело смысл, поскольку чтобы достичь заметного прироста быстродействия системы, нужно достичь достаточно интересной частоты успешных обращений. Если вы „попадаете“ в кэшированные данные всего в нескольких процентах случаев, это будет сложно заметить. Всё остальное затормаживает ваше быстродействие, и этот прирост будет незаметным. Поэтому требуются относительно большие кэши, и когда речь идёт о более высоких уровнях, нужны реально огромные кэши. Сегодня L2 измеряются мегабайтами, L3 измеряются десятками или сотнями мегабайт. Так что понятно, что если вы начинаете думать о кэше L4, то речь пойдёт уже о сотнях мегабайт, если не о гигабайтах. А такой размер определённо приведёт к их высокой стоимости. Нужно, чтобы сложились определённые условия, чтобы этот вариант стал интересным, и дешёвым он определённо не будет».

Инженеры из компании AMD, с которыми мы беседовали, пожелали остаться неизвестными потому, что они не хотели создать впечатление, что компания собирается добавить кэш L4 в линейку процессоров Epyc – и, если быть точным, AMD ничего такого и не обещала. Однако компания всё же признаёт, что это следующий очевидный шаг для рассмотрения, и, точно так же, как Intel, считает, что все инженеры размышляют о реализации кэша L4. По сути, AMD говорит, что компромиссы, связанные с уровнями кэшей и задержками подробно изучены как в промышленности, так и в научных кругах, и что с каждым новым уровнем, который оказывается больше и медленнее предыдущего, возникает компромисс увеличения общего пути к DRAM. Об этом говорит и Джианос из Intel, рассказывая о необходимости поиска баланса между успешными запросами к КЭШу и его объёмом.

IBM, конечно, добавляла кэш L4 к некоторым своим чипсетам X86 в 2000-х, а в 2022-х добавила L4 к чипсетам NUMA (неравномерный доступ к памяти) на мейнфреймах System z11. У процессора z11 четыре ядра, 64 КБ L1 кэш для инструкций и 128 КБ L1 кэш для данных, плюс 1,5 МБ L2 кэш для каждого из ядер и 24 МБ L3 кэш общего доступа для всех ядер. У чипсета NUMA для z10 было два банка по 96 МБ L4 кэша, то есть, 192 МБ в сумме. Выпустив z12, IBM урезала размер кэша L1 до 98 КБ на ядро, однако увеличила L2 кэш до 2 МБ на ядро, разделив его при этом на две части, для инструкций и для данных, как в случае с L1. Также она удвоила размер кэша L3 до 48 МБ для шести ядер, а размер кэша L4 был увеличен до 384 МБ для пары чипов в чипсете. При смене поколений процессоров System z объёмы кэшей росли, и у процессоров z15, анонсированных в сентябре, пара кэшей L1 будет весить по 128 КБ, пара кэшей L2 – по 4 МБ, а общий кэш L3 будет для 12 ядер иметь объём 256 МБ. Объём кэша L4 в каждом отсеке мейнфрейма составляет 960 МБ, а его общий объём для всей системы, состоящей из пяти отсеков, равняется 4,68 ГБ.

Как мы уже указывали ранее, у процессоров Power8 и Power9 память буферизована, а IBM добавила 16 МБ L4 кэша к каждому буферу Centaur, что составляет 128 МБ L4 кэша на сокет для 32-х планок памяти. У самых дешёвых машин с Power9 нет буфера памяти, а, следовательно, и кэша L4. Архитекторы, разрабатывавшие схему Power10, были заняты разработкой схемы для Power11, и потому не смогли ответить на наши вопросы, но Уильям Старк, управлявший разработкой Power10, нашёл для нас немного времени, и заметил следующее:

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

Именно так мы и думали. И, кстати, мы не утверждаем, что кэш L4 обязательно будет находиться в непосредственной близости от буферизированной памяти будущего DDR5 DIMM. Возможно, его лучше расположить между PCI-Express и кэшем процессора L3, а ещё лучше, в буферах памяти и между PCI-Express и кэшем процессора L3. Возможно, его для этого придётся поместить наверху контроллера I/O и памяти в будущей серверной архитектуре, что немного напоминает технологию Foveros от Intel.

На это возможно взглянуть и с другой точки зрения – допустим, у IBM была возможность менять размеры кристалла, и инженеры решили добавить кэш L4 к шине System z NUMA или к чипу буферизации памяти Power8 и Power9 не ради его самого, а просто потому, что у них оставалась ещё возможность добавить транзисторов после того, как все необходимые функции были реализованы. Иногда нам кажется, что количество ядер в процессорах Intel X86 зависит от размера кэша L3, который они могут себе позволить. Иногда кажется, что Intel назначает максимальный размер кэша L3 на один кристалл, и после этого кристаллы Xeon трёх разных размеров просто изготавливают по этим спецификациям – в последних поколениях у них по 10, 18 или 28 ядер на техпроцессе в 14 нм.

Всё это, конечно, чисто академические вопросы, однако они дают нам возможную мотивацию для IBM и других производителей чипсетов на добавление кэша L4. Это не просто может помочь в каких-то случаях, это просто довольно очевидная вещь. Думаем, что на таком монстре I/O, как мейнфрейм System z, кэш L4 без вопросов находится на своём месте и приносит пользу всем клиентам, увеличивая пропускную способность этих машин и позволяя им работать на 98-99% загрузке процессора, поскольку как количество ядер, так и масштабы NUMA в мейнфреймах в последнее время сильно подросли.

Нет причин для того, чтобы делать кэш L4 исключительно на встроенной DRAM (как делает IBM со своими чипами) или на базе куда как более дорогой SRAM – об этом нам напоминает Рабин Сугумар, архитектор чипов из компаний Cray Research, Sun Microsystems, Oracle, Broadcom, Cavium и Marvell:

«Наши кэши L3 уже достаточно большие, — говорит Сугумар. – Так что L4 в интересующем вас случае нужно делать по другой технологии. Возможно, eDRAM или даже HBM или DRAM. В данном контексте интересным вариантом выглядит реализация кэша L4 на основе HBM, и этот кэш решает не столько проблему задержки, сколько пропускной способности. Поскольку ёмкость HBM ограничена, а пропускная способность велика, мы можем получить определённую прибавку к скорости – и в некоторых специальных случаях мы действительно видим значительное увеличение пропускной способности». Сугумар добавляет, что для довольно большого количества применений наблюдается относительно большое количество «промахов» кэша. Однако нужно подсчитать – будет ли добавление очередного уровня кэша стоить того.

Ещё один возможный вариант использования чего-то наподобие кэша L4, говорит Сугумар, это использовать локальную DRAM в качестве кэша. «У нас не ведётся никаких подобных исследований в лаборатории, но допустим, у нас на чипе есть интерфейс с высокой пропускной способностью, соединенный с общей распределённой памятью где-то на другом конце шлейфа, на расстоянии от 500 нс до 1 мкc. Тогда один из вариантов использования будет создать кэш, перемещающий эти данные из общей распределённой памяти в локальную DRAM. Можно представить работу конечного автомата, управляющего этой памятью, поэтому большую часть времени обращения будут идти к локальной DRAM, и вы сможете минимизировать количество обращений к общей распределённой DRAM».

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

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

«В какой-то момент дополнительный уровень кэша станет неизбежностью, — говорит Джианос. – У нас появился первый уровень кэша, и в какой-то момент появился и второй. А потом мы, в конце концов, добавили третий. И когда-то у нас будет четвёртый. Вопрос только – когда и зачем. И мне кажется, что ваши наблюдения, касающиеся возможностей этого кэша, достаточно интересные. Но в Intel пока не решили, когда или зачем будут обнародовать такие вещи. Другие компании тоже изучают этот вопрос; было бы глупо не исследовать его. Рано или поздно это произойдёт, однако скоро это будет, или не очень – пока неясно».

Кэш графического ускорителя

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

Еще этот тип называют видеопамятью. Как правило, в современных графических ускорителях используется особый тип ОЗУ — GDDR5. В среднем, ее объем — от 1 до 6 Гб. Такой размер обусловлен тем, что графические файлы, как правило, «тяжелые» — все эти модельки персонажей, техники, локации, текстуры и тому подобное.

Частый «развод» неопытного пользователя заключается в акцентировании внимания на объеме видеопамяти — например, если установлено 4 Гб, то это уже крутая видяха.

Меж тем сегодня можно найти девайсы из бюджетного сегмента, у которых 4 Гб GDDR на борту. Сложно назвать их мощными или производительными. Обращать внимание, в первую очередь, следует не на объем видеопамяти, а на ее частоту и частоту графического процессора.Логическая организация кэш-памяти процессора / Хабр

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

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

Естественно, объем видеопамяти и ее частота влияют на стоимость графического ускорителя. Для лучшего понимания темы советую ознакомиться со статьей «Из чего состоит видеокарта для компьютера».

Вот собственно, и все на сегодня. Если у вас появились дополнительные вопросы — не стесняйтесь и задавайте их в комментариях. Буду признателен всем, кто поделится этой публикацией в социальных сетях. До завтра!

Наглядное сравнение скорости кэш памяти процессора

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

  • Кэш L1 — папка на рабочем столе. Физическая, с массой файлов, где лежат документы, отчеты по бухгалтерии и прочие сводки по работе. Открыл, порылся в файлах, нашел нужный, прочитал информацию в 50-й строчке на 20-й странице и принялся за работу.

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

  • Кэш L3 — архивный отдел. Находится на 5 этаже под охраной злого бухгалтера. При этом вся информация рассортирована по стеллажам, которые практически не подписаны. Более того, один несчастный бухгалтер должен обслуживать 10-20 наседающих сотрудников (других ядер ЦП, которым тоже нужно «вот-прямо-сейчас») и носиться по всему помещению, выдавая документы по самым разным запросам.

  • Оперативная память — городская библиотека в отдаленном районе. Сначала до нее надо доехать, потом разбудить библиотекаря, дождаться, пока он будет блуждать по архиву в течение пары часов. А потом еще вернуться добычей обратно. И не факт, что все требуемое найдется с первого раза по причине банального недосмотра.

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

  • HDD-накопитель — Алиэкспресс. Выбор шикарный, всего много, стоит — копейки. Но доставку ожидайте в течение месяца.


В такой интерпретации понимать разницу в памяти гораздо проще.

Само собой, реальная скорость сильно отличается от схематичных обозначений. Например, процессору для сложения пары 64-битных целых чисел требуется всего 1/4 наносекунды (10-9 степень), если он работает на частоте в 4 ГГц (примерно).

А вот HDD с их неповоротливой магнитной головкой приходится тратить миллисекунды (10-3 степень), и это настоящая пропасть. И это только поиск, без доставки в ОЗУ.

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

Не удаляется кэш браузера

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

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

Tweaksl 2.0.2
(как ускорить компьютер)

Довольно любопытная программа попалась мне на просторах интернета.

Знаете ли Вы, что в Windows по умолчанию, размер кеша 2-го уровня L2 на процессор, выставлен
менее 256 кбайт
?
Хотя, современные процессоры уже имеют L2
до 32 мбайт.

Выставив правильный размер кеша L2, Вы можете увеличить быстродействие системы!
Посмотреть, какой размер L2
стоит в Вашей Windows, можно нажав «Пуск»
-«Все программы»
-«Стандартные»
-«Выполнить»
.

В появившемся окошке введите команду regedit
и нажмите Enter
. В открывшемся редакторе реестра, пройдите по пути HKEY_LOCAL_MACHINE SYSTEM CurrentControl Set Control Session Manager Memory Management
и посмотрите значение «SecondLevelDataCache»
в правом окошке. Последние цифры в скобках — и есть значение кеша L2, которое Windows выставила для Вашего процессора.

Посмотреть реальный размер кеша Вашего процессора можно с помощью программы CPU-Z
. Скачав программу, запускаем ее и в появившемся окошке посмотрите значение кеша L2.

Итак, что-же умеет программа
Tweaksl 2.0.2
и как с ней работать? Давайте рассмотрим:

1.
Скачиваем архив с программой по ссылке в конце данной статьи.

В любом месте, например на рабочем столе, создаем папку. Открываем архив и перетаскиваем файл
Tweaksl-2.sfx.exe

в созданную папку.

Запускаем его. Произойдет процесс распаковки программы в нашу папку.

Внимательно читаем условия и соглашаемся с ними, поставив галочку (либо не соглашаемся…:)
)

Далее, сохраняем копию реестра (нажав кнопку «Редактор реестра».
В открывшемся редакторе реестра, мышкой один раз выделяем «Компьютер»
, вверху слева нажимаем «Файл»
— «Экспорт».
).

После чего, смело жмем
«Приступить».

После нажатия данной кнопки программа:

1.
Оптимизирует работу приводов2.
Оптимизирует приоритет работы CMOS3.
Повышает общую производительность системы4.
Увеличивает размер системного кеша5.
Ускоряет запуск программ6.
Закрывает неиспользуемые библиотеки7.
Выгружает зависшие приложения8.
Устанавливает максимальную скорость USB-порта

3.
В следующем окне, у Вас появится возможность выставить в реестре Windows, правильное значение кеша второго уровня L2
. Для этого, нажимаем внизу окна «CPU-Z»
и смотрим значение L2.
После чего на счетчике выбираем наше значение, ставим галочку «Да, выбран правильный параметр»
и кликаем на «Продолжить»
.

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

Все что вам для этого нужно — выбрать версию для вашей Windows. Если у Вас Windows 32 bit,
выбираете и нажимаете
Ccleaner.
Если

у Вас Windows 64 bit,
выбираете и нажимаете
Ccleaner 64.
Также, желательно почистить системный Кеш
, нажав на кнопку
«Кеш».

Оцените статью
OverComp.ru