Разное

Объем кэша: Что такое кэш? L1 vs L2 vs L3 — i2HARD

Содержание

3 MB vs 8 MB Cache, Страница 1. GECID.com

Отобразить одной страницейСтраница 1Страница 2

Приветствуем вас на сайте GECID.com! Хорошо известно, что тактовая частота и количество ядер процессора напрямую влияют на уровень производительности, особенно в оптимизированных под многопоточность проектах. Мы же решили проверить, какую роль в этом играет кэш-память уровня L3?

Для исследования этого вопроса нам был любезно предоставлен интернет-магазином pcshop.ua 2-ядерный процессор Intel Core i3-6100 с номинальной рабочей частотой 3,7 ГГц и 3 МБ кэш-памяти L3 с 12-ю каналами ассоциативности. В роли оппонента выступил 4-ядерный Intel Core i7-6700K, у которого были отключены два ядра и снижена тактовая частота до 3,7 ГГц. Объем же кэша L3 у него составляет 8 МБ, и он имеет 16 каналов ассоциативности. То есть ключевая разница между ними заключается именно в кэш-памяти последнего уровня: у Core i7 ее на 5 МБ больше.

Если это ощутимо повлияет на производительность, тогда можно будет провести еще один тест с представителем серии Core i5, у которых на борту 6 МБ кэша L3.

Но пока вернемся к текущему тесту. Помогать участникам будет видеокарта MSI GeForce GTX 1070 GAMING X 8G и 16 ГБ оперативной памяти DDR4-2400 МГц. Сравнивать эти системы будем в разрешении Full HD.

Для начала начнем с рассинхронизированных живых геймплев, в которых невозможно однозначно определить победителя. В Dying Light на максимальных настройках качества обе системы показывают комфортный уровень FPS, хотя загрузка процессора и видеокарты в среднем была выше именно в случае Intel Core i7.

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

Игра DOOM на ультравысоких настройках графики позволила синхронизировать лишь первые несколько кадров, где перевес Core i7 составляет около 10 FPS. Рассинхронизация дельнейшего геймплея не позволяет определить степень влияния кэша на скорость видеоряда. В любом случае частота держалась выше 120 кадров/с, поэтому особого влияния даже 10 FPS на комфортность прохождения не оказывают.

Завершает мини-серию живых геймплеев Evolve Stage 2. Здесь мы наверняка увидели бы разницу между системами, поскольку в обоих случаях видеокарта загружена ориентировочно на половину. Поэтому субъективно кажется, что уровень FPS в случае Core i7 выше, но однозначно сказать нельзя, поскольку сцены не идентичные.

Более информативную картину дают бенчмарки. Например, в GTA V можно увидеть, что за городом преимущество 8 МБ кэша достигает 5-6 кадров/с, а в городе – до 10 FPS благодаря более высокой загрузке видеокарты. При этом сам видеоускоритель в обоих случаях загружен далеко не на максимум, и все зависит именно от CPU.

Третий ведьмак мы запустили с запредельными настройками графики и высоким профилем постобработки. В одной из заскриптованных сцен преимущество Core i7 местами достигает 6-8 FPS при резкой смене ракурса и необходимости подгрузки новых данных. Когда же нагрузка на процессор и видеокарту опять достигают 100%, то разница уменьшается до 2-3 кадров.

Максимальный пресет графических настроек в XCOM 2 не стал серьезным испытанием для обеих систем, и частота кадров находилась в районе 100 FPS. Но и здесь больший объем кэш-памяти трансформировался в прибавку к скорости от 2 до 12 кадров/с. И хотя обоим процессорам не удалось по максимум загрузить видеокарту, вариант на 8 МБ и в этом вопросе местами преуспевал лучше.

Больше всего удивила игра Dirt Rally, которую мы запустили с пресетом очень высоко. В определенные моменты разница доходила до 25 кадров/с исключительно из-за большего объема кэш-памяти L3. Это позволяло на 10-15% лучше загружать видеокарту. Однако средние показатели бенчмарка показали более скромную победу Core i7 — всего 11 FPS.

Интересная ситуация получилась и с Rainbow Six Siege: на улице, в первых кадрах бенчмарка, преимущество Core i7 составляло 10-15 FPS. Внутри помещения загрузка процессоров и видеокарты в обоих случаях достигла 100%, поэтому разница уменьшилась до 3-6 FPS. Но в конце, когда камера вышла за пределы дома, отставание Core i3 опять местами превышало 10 кадров/с. Средний же показатель оказался на уровне 7 FPS в пользу 8 МБ кэша. 

Социальные комментарии Cackle

На что влияет кэш процессора L1 L2 L3

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

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

Содержание статьи:

Что такое кэш процессора?

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

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

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

Как работает кэш процессора?

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

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

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

Уровни кэша процессора — L1, L2 и L3

Веся кэш память процессора разделена на три уровни: L1, L2 и L3. Эта иерархия тоже основана на скорости работы кэша, а также на его объеме.

  • L1 Cache (кэш первого уровня) — это максимально быстрый тип кэша в процессоре. С точки зрения приоритета доступа, этот кэш содержит те данные, которые могут понадобиться программе для выполнения определенной инструкции;
  • L2 Cache (кэш второго уровня процессора) — медленнее, по сравнению L1, но больше по размеру. Его объем может быть от 256 килобайт до восьми мегабайт. Кэш L2 содержит данные, которые, возможно, понадобятся процессору в будущем. В большинстве современных процессоров кэш L1 и L2 присутствуют на самих ядрах процессора, причём каждое ядро получает свой собственный кэш;
  • L3 Cache (кэш третьего уровня) — это самый большой и самый медленный кэш. Его размер может быть в районе от 4 до 50 мегабайт. В современных CPU на кристалле выделяется отдельное место под кэш L3.

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

Для чего нужен кэш в процессоре?

Пришло время ответить на главный вопрос этой статьи, на что влияет кэш процессора? Данные поступают из ОЗУ в кэш L3, затем в L2, а потом в L1. Когда процессору нужны данные для выполнения операции, он пытается их найти в кэше L1 и если находит, то такая ситуация называется попаданием в кэш. В противном случае поиск продолжается в кэше L2 и L3. Если и теперь данные найти не удалось, выполняется запрос к оперативной памяти.

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

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

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

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

Представьте, что процессор загружает данные из кэша 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 такой проблемы нет.

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

Выводы

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Разрыв между быстродействием процессоров в общем смысле и быстродействием основной памяти 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-х, а в 2010-х добавила 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 пока не решили, когда или зачем будут обнародовать такие вещи. Другие компании тоже изучают этот вопрос; было бы глупо не исследовать его. Рано или поздно это произойдёт, однако скоро это будет, или не очень – пока неясно».

👆Что такое кэш в процессоре и зачем он нужен | Процессоры | Блог

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

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

Предпосылки создания кэш-памяти

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

Каждый раз при запуске программы из постоянной памяти, ее наиболее часто используемые данные или вся программа целиком «подгружаются» в оперативную память. Это делается для ускорения обработки данных процессором. Считывать и обрабатывать данные из оперативной памяти процессор будет значительно быстрей, а, следовательно, и система будет работать значительно быстрее в сравнении с тем, если бы массивы данных поступали напрямую из не очень быстрых (по меркам процессорных вычислений) накопителей.

Если бы не было «оперативки», то процесс считывания напрямую с накопителя занимал бы непозволительно огромное, по меркам вычислительной мощности процессора, время.

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

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

Процессоры развиваются так же быстро, как память, поэтому несоответствие в их производительности и скорости сохраняется. Производство полупроводниковых изделий постоянно совершенствуется, поэтому на пластину процессора, которая сохраняет те же размеры, что и 10 лет назад, теперь можно поместить намного больше транзисторов. Как следствие, вычислительная мощность за это время увеличилась. Впрочем, не все производители используют новые технологии для увеличения именно вычислительной мощности. К примеру, производители оперативной памяти ставят во главу угла увеличение ее емкости: ведь потребитель намного больше ценит объем, нежели ее быстродействие. Когда на компьютере запущена программа и процессор обращается к ОЗУ, то с момента запроса до получения данных из оперативной памяти проходит несколько циклов процессора. А это неправильно — вычислительная мощность процессора простаивает, и относительно медленная «оперативка» тормозит его работу.

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

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

Как работает кэш-память

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

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

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

Спекулятивное исполнение — метод оптимизации работы процессора, когда последний выполняет команды, которые могут и не понадобиться в дальнейшем. Использование метода в современных процессорах довольно существенно повышает их производительность.

Речь идет именно об анализе потока данных и предугадывании команд, которые могут понадобиться в скором будущем (попадании в кэш). Это так называемый идеальный кэш, способный предсказать ближайшие команды и заблаговременно выгрузить их из ОЗУ в ячейки сверхбыстрой памяти. В идеале их надо выбирать таким образом, чтобы конечный результат имел нулевой процент «промахов».

Но как процессор это делает? Процессор что, следит за пользователем? В некоторой степени да. Он выгружает данные из оперативной памяти в кэш-память для того, чтобы иметь к ним мгновенный доступ, и делает это на основе предыдущих данных, которые ранее были помещены в кэш в этом сеансе работы. Существует несколько способов, увеличивающих число «попаданий» (угадываний), а точнее, уменьшающих число «промахов». Это временная и пространственная локальность — два главных принципа кэш-памяти, благодаря которым процессор выбирает, какие данные нужно поместить из оперативной памяти в кэш.

Временная локальность

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

Пространственная локальность

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

Набор таких адресов называется строкой (блоком) кэша, а количество считанных данных — длиной кэша.

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

Иерархия кэш-памяти

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

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

Так же организована и работа быстрых ячеек кэша. Ячейки памяти первого уровня (L1) располагаются на кристалле в непосредственной близости от вычислительного ядра. Эта память — самая быстрая, но и самая малая по объему. В нее помещаются наиболее востребованные данные и команды. Для передачи данных оттуда потребуется всего около 5 тактовых циклов. Как правило, кэш-память первого уровня состоит из двух блоков, каждый из которых имеет размер 32 КБ. Один из них — кэш данных первого уровня, второй — кэш инструкций первого уровня. Они отвечают за работу с блоками данных и молниеносное обращение к командам. 

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

Кэш L2, который также содержит команды и данные, занимает уже до 512 КБ, чтобы обеспечить необходимый объем данных кэшу нижнего уровня. Но на обработку запросов уходит в два раза больше времени. Кэш третьего уровня имеет размеры уже от 2 до 32 МБ (и постоянно увеличивается вслед за развитием технологий), но и его скорость заметно ниже. Она превышает 30 тактовых циклов.

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

С кэшем связан термин «сет ассоциативности». В L1 блок данных привязан к строкам кэша в определенном сете (блоке кэша). Так, например, 8-way (8 уровень ассоциативности) означает, что один блок может быть привязан к 8 строкам кэша. Чем выше уровень, тем выше шанс на попадание кэша (процессор нашел требуемую информацию). Есть и недостатки. Главные — усложнение процесса и соответствующее снижение производительности. 

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

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

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

L1, L2 и L3 кэш. Определение — Железо на DTF

16 479

просмотров

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

Должно быть важный компонент, иначе зачем он там? Чем занимается кэш, и зачем ему несколько уровней? Что вообще означает 12-позиционная ассоциативность?

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

Говоря кратко: Это небольшая, но очень быстрая память, которая располагается рядом с логическими блоками процессора.

Но, конечно, мы хотим узнать гораздо больше о кэше…

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

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

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

Великий слон хранения данных.

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

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

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

Второй великий слон хранения данных, к сожалению.

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

Что ж, у нас уже есть такая система – оперативная память (RAM). И в этом её основная задача.

Практически все «оперативки» состоят из динамической памяти с произвольным доступом (DRAM). Она намного быстрей любого другого диска.

Несмотря на то, что что DRAM работает очень быстро, объем памяти оставляет желать лучшего.

Самые большие чипы памяти DDR4 от Micron, способны вмещать в себе 32 Гбит или 4 ГБ данных. В то же время, самые ёмкие жесткие диски обладают объемом в 4000 раз больше.

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

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

10 Мб ОЗУ. Слева от ГП Xbox 360.

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

DRAM все еще тратит примерно 100 наносекунд чтобы найти данные, но передавать их, он способен на скорости миллиардов битов в секунду. Кажется, что нам требуется еще одно звено между процессором и DRAM.

На сцену выходит SRAM (статическая память с произвольным доступом). Там, где DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, SRAM использует транзисторы. И они могут работать почти так же быстро, как логические модули в процессоре (примерно в 10 раз быстрее, чем DRAM).

У SRAM есть недостаток, и дело опять в объёме.

Транзисторная память занимает намного больше места, чем DRAM. DDR4 с размером в 4Гб эквивалентен лишь 100Мб SRAM. Но, поскольку проектирование ЦП схоже с SRAM, его можно встроить в сам процессор, расположив максимально близко к логическим устройствам.

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

Таким образом, мы пришли к более техническому определению того, что такое кэш: Это несколько блоков SRAM, которые расположены внутри процессора. Они используются для того, чтобы обеспечить максимальную загрузку логических блоков, отправляя и сохраняя данные на сверхбыстрой скорости. Довольны? Ну и хорошо. С этого момента всё становится намного сложнее!

Кэш: многоуровневая парковка

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

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

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

Файл регистра в десктопном процессоре весьма мал — например, в Intel Core i9-9900K их по два «банка» в каждом ядре. Одно для целых чисел, всего 180 64-битных регистров. Другой файл регистра для векторов (маленьких массивов чисел), 168 256-битных записей. Таким образом, общий файл регистра для каждого ядра — чуть меньше 7 кБ. Для сравнения, размер файла регистра в потоковом мультипроцессоре (эквивалент ядра GPU) Nvidia GeForce RTX 2080 Ti составляет 256 кБ.

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

Процессор Intel Skylake. Увеличенное изображение одного из ядер.

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

ALU и файлы реестра видны слева. Они выделены зеленым цветом. В верхней части фото, посередине, белым цветом обозначен L1 кэш. В нем не так много информации, всего 32 кБ, но, как и в регистрах, он очень близок к логическим блокам и работает с той же скоростью, что и они.

Другой белый прямоугольник указывает на второй кэш инструкций 1-го уровня, тоже 32 кБ. Как следует из названия, в нем хранятся различные команды, которые будут разделены на более мелкие, так называемые микро операции (обычно помеченные как μops). Все они будут переданы в ALU. Для них тоже есть кэш, L0, так как он меньше (содержит только 1500 операций) и ближе, чем L1 кэш.

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

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

L2 кэш в Skylake.

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

Он всегда немного больше, чем 1-й уровень: процессоры AMD Zen 2, например, содержат до 512 кБ, так что кэши нижнего уровня находятся в хорошей кондиции. Однако дополнительный размер влечет за собой задержку на поиск и передачу данных из этого кэша. Уходит примерно вдвое больше времени, чем в L1.

Вспоминая Intel Pentium, тогда L2 кэш представлял собой отдельный чип, который находился на небольшой подключаемой плате (например, RAM DIMM), либо был встроен в материнскую плату. В конце концов, L2 таки попал в корпус процессора. Интеграция в процессорную матрицу, на чипах Pentium III и AMD K6-III.

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

Процессор Intel Kaby Lake.

На этом изображении Intel Kaby Lake, слева посередине показаны 4 ядра (встроенный GPU занимает почти половину матрицы, справа). Каждое ядро имеет свой собственный набор кэшей уровня 1 и 2 (выделены белым и желтым, соответственно), но у них также есть третий набор блоков SRAM.

L3 кэш хоть и окружает одно ядро, полностью отделен от других. Каждый из них может получить свободный доступ к содержимому чужого кэша 3го уровня. Он намного больше (от 2 до 32 MB), но также намного медленнее, в среднем 30 циклов, особенно если ядру необходимо использовать данные, которые находятся в блоке кэша, находящемся на некотором расстоянии.

Ниже мы видим одно из ядер AMD Zen 2: 32 кБ кэша 1го уровня (белый цвет), 512 кБ 2го уровня (желтый цвет) и огромный блок L3 кэша размером в 4 МБ (красный цвет).

AMD Zen 2. Одно из ядер.

Стоп. Как 32 кБ может физически занимать больше места, чем 512 кБ? Если L1 содержит так мало данных, почему он намного больше, чем L2 или L3 кэш?

Больше, чем просто число

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

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

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

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

Для проверки кэша в собственном процессоре, вы можете использовать бесплатные программы, такие как CPU-Z. Но что означает вся эта информация? Важным элементом является ассоциативный сет меток — это все о правилах, применяемых при копировании в кэш блоков данных из системной памяти.

Вышеуказанная информация c Intel Core i7-9700K. Его кэши 1-го уровня разбиты на 64 маленьких блока, называемых наборами, и каждый из них далее разбивается на строки кэша (размером 64 байта). Ассоциативный сет означает, что блок данных из системной памяти отображается на кэш-линии в одном конкретном наборе, а не где угодно.

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

Кэш L1+L2 включительно. L3 кэш память жертвы. Политика обратной записи, даже ECC (память с коррекцией ошибок).

Victim cache или Victim buffer (дословно Кэш жертв) — это небольшой специализированный кэш, хранящий те кэш-линии, которые были недавно вытеснены из основного кэша микропроцессора при их замещении.

Другой аспект сложности кэша заключается в том, как данные хранятся на различных уровнях. Правила устанавливаются в так называемой политике включения. Например, процессоры Intel Core имеют полностью инклюзивный кэш L1+L3. Это означает, что одни и те же данные на первом уровне могут быть и на третьем. Может показаться, что это пустая трата ценной кэш-памяти, но есть главное преимущество: если процессор промахивается при поиске тега на более низком уровне, ему не нужно искать его на более высоком уровне.

В тех же процессорах кэш L2 не инклюзивный: любые данные, хранящиеся там, не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти процессора приходится искать пропущенный тег в L3 (который всегда намного больше). Кэш жертв схож, но он используется для хранения информации, которая исходит с более низкого уровня — например, процессоры AMD Zen 2 используют кэш жертв L3, в котором просто хранятся данные из L2.

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

Графический процессор Nvidia GA100, оснащенный L1 кэшом (20 МБ) и L2 кэшом (40 МБ).

Для проектировщиков процессоров выбор объема, типа и политики кэширования это – поиск баланса между расширенными возможностями чипа и общей повышенной сложностью, а также требуемым пространством для матрицы. Если бы было возможным создать 20 МБ, 1000-сторонний полностью ассоциативный кэш 1-го уровня, и чтобы чип не стал размером с Манхэттен (и потреблял столько же энергии), то у всех стояли бы компьютеры с такими процессорами!

Самый низкий уровень кэширования в современных процессорах не сильно изменился за последнее десятилетие . Однако, L3 кэш продолжает расти в размерах. Десять лет назад, если вам посчастливилось быть владельцем Intel i7-980X за 999 долларов, вы могли получить 12 МБ кэша 3го уровня. За половину этой суммы сегодня вы получаете 64 МБ.

Кэш, в двух словах: безусловно нужная и удивительная технология. Мы не рассматривали другие типы кэшей в CPU и GPU (такие как буфер ассоциативной трансляции [TLB] или кэш текстур), но так как все они следуют простой структуре и шаблону уровней, вам уже не покажется сложным разобраться в них.

Был ли у вас компьютер с отдельным L2 кэшем на материнской плате? Как насчет тех процессоров Pentium II и Celeron (в частности 300a), которые поставлялись в качестве дочерних плат? Можете ли вы вспомнить свой первый процессор с общим L3? Расскажите нам об этом в комментариях.

Для чего нужен кэш и сколько его необходимо?

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

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

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

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

Изменение локального кэша для проектов

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

В этой статье



Дополнительные сведения о локальном кэше

Локальная версия кэша помогает эффективнее работать, синхронизируя локальную версию проекта с версией, хранящейся на сервере Project Server.

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

При возврате проекта на сервер Project Server изменения, внесенные во время извлечения проекта, синхронизируются с серверной версией проекта.

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


Примечания: 

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

  • Если в настоящее время сведения о проекте в локальном кэше не синхронизируются с сервером, индикатор

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

  • По умолчанию локальный кэш создается в профиле пользователя, который в данный момент вошел в систему Windows, и только этот пользователь может получить к нему доступ. Для обеспечения безопасности кэшированных файлов проекта на общем компьютере каждый пользователь должен войти в Windows отдельно. Если для нескольких пользователей на общем компьютере используется отдельная учетная запись Windows (например, если в Организации есть индивидуальные учетные записи Project Server для каждого пользователя), безопасность кэшированных файлов проектов сохраняется только при подключении к Project Server. При работе в автономном режиме любой пользователь, выполнивший вход с помощью общей учетной записи Windows, может просматривать и изменять кэшированные файлы проекта.


К началу страницы


Просмотр состояния кэша

Вы можете просматривать последние действия в кэше, такие как проверка проекта или сохранение изменений в Project Server, в диалоговом окне Состояние активного кэша . Если при синхронизации проекта с Project Server появляется сообщение об ошибке, вы также можете просмотреть эти сообщения об ошибках в диалоговом окне » Состояние активного кэша «.

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

  2. На вкладке Status (состояние ) Проверьте последние действия в кэше, включая дату и время, когда возникло каждое действие, и состояние действия.

  3. На вкладке ошибки Проверьте ошибки, которые могут быть получены при синхронизации проектов с Project Server.


    Примечание: Обратитесь к администратору сервера за дополнительными сведениями об ошибках, указанных на вкладке » ошибки «.


К началу страницы


Настройка параметров кэша

  1. В меню Сервис наведите указатель на пункт локальный кэш проектови выберите пункт Параметры кэша.

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

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


    Совет: Вы также можете нажать кнопку Обзор , чтобы перейти к расположению кэша.


К началу страницы


Удаление проектов из кэша

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

  1. В меню Сервис наведите указатель на пункт локальный кэш проектови выберите очистить кэш.

  2. В разделе Удаление проектов из кэша в списке Фильтр проекта щелкните проекты, которые не были извлечены вам или извлечены , чтобы отобразить соответствующий список проектов в сетке.

  3. Щелкните проект в сетке, которую вы хотите удалить из кэша, и нажмите кнопку удалить из кэша.

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


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


К началу страницы



Примечание: 
Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Как работают кэши ЦП L1 и L2 и почему они являются неотъемлемой частью современных микросхем

Развитие кешей и кеширования — одно из самых значительных событий в истории вычислительной техники. Практически каждое современное ядро ​​ЦП от чипов со сверхнизким энергопотреблением, таких как ARM Cortex-A5, до Intel Core i9 самого высокого уровня, использует кеши.Даже микроконтроллеры более высокого уровня часто имеют небольшие кэши или предлагают их в качестве дополнительных функций — преимущества производительности слишком велики, чтобы их игнорировать, даже в конструкциях со сверхнизким энергопотреблением.

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

Хотя он работает только до 2000 года, растущие несоответствия 1980-х годов привели к разработке первых кешей ЦП.

Как работает кэширование

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

Промах в кэше, с другой стороны, означает, что ЦП вынужден уйти в поисках данных в другом месте. Здесь в игру вступает кэш L2 — он медленнее, но и намного больше. Некоторые процессоры используют инклюзивный дизайн кэша (это означает, что данные, хранящиеся в кэше L1, также дублируются в кеше L2), в то время как другие являются эксклюзивными (то есть два кеша никогда не обмениваются данными).Если данные не могут быть найдены в кэше L2, ЦП переходит вниз по цепочке к L3 (обычно все еще на кристалле), затем к L4 (если он существует) и к основной памяти (DRAM).

На этой диаграмме показана взаимосвязь между кешем L1 с постоянной частотой попаданий, но большим кешем L2. Обратите внимание, что общая частота совпадений резко возрастает по мере увеличения размера L2. Более крупный, медленный и дешевый L2 может обеспечить все преимущества большого L1, но без потери размера кристалла и энергопотребления. Большинство современных коэффициентов попадания в кэш L1 намного выше теоретических 50 процентов, показанных здесь — Intel и AMD обычно используют коэффициент попадания в кэш 95 процентов или выше.

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

На противоположном конце спектра у нас есть кэши с прямым отображением. Кэш с прямым отображением — это кэш, в котором каждый блок кеша может содержать один и только один блок основной памяти. Этот тип кэша можно искать очень быстро, но, поскольку он отображает 1: 1 в ячейки памяти, у него низкий процент попаданий. Между этими двумя крайностями находятся ассоциативные кэши n- пути. Двухсторонний ассоциативный кэш (L1 Piledriver является двусторонним) означает, что каждый блок основной памяти может отображаться в один из двух блоков кеша.Восьмисторонний ассоциативный кэш означает, что каждый блок основной памяти может находиться в одном из восьми блоков кеша. Кэш инструкций L1 Ryzen является четырехсторонним ассоциативным, а кэш данных L1 — восьмисторонним ассоциативным.

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

Почему кеши ЦП становятся все больше

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

Эта диаграмма из обзора Haswell компании Anandtech полезна, поскольку она иллюстрирует влияние на производительность добавления огромного (128 МБ) кэша L4, а также обычных структур L1 / L2 / L3. Каждая ступенька представляет собой новый уровень кеша. Красная линия — это чип с L4 — обратите внимание, что для файлов большого размера он все равно почти в два раза быстрее, чем два других чипа Intel.

Тогда может показаться логичным выделять огромное количество ресурсов на кристалле для кеширования, но оказывается, что от этого предельная отдача уменьшается.Кеши большего размера работают медленнее и дороже. При шести транзисторах на бит SRAM (6T) кэш также стоит дорого (с точки зрения размера кристалла и, следовательно, стоимости в долларах). После определенного момента имеет смысл потратить бюджет мощности чипа и количество транзисторов на большее количество исполнительных блоков, лучшее предсказание ветвлений или дополнительные ядра. Вверху истории вы можете увидеть изображение чипа Pentium M (Centrino / Dothan); вся левая сторона кристалла отведена под массивный кэш L2. Так было в последние дни однопоточных ЦП, теперь, когда у нас есть многоядерные чипы и во многих случаях встроенный графический процессор, меньший процент от общего ЦП выделяется для кеширования.

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

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

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

Кадр Haswell-E (щелкните, чтобы увеличить). Повторяющиеся структуры в середине чипа — это 20 МБ общей кэш-памяти третьего уровня.

Теперь предположим, что коэффициент попадания в кэш составляет 99 процентов, но данные, которые фактически необходимы процессору для его 100-го доступа, находятся в L2 с задержкой доступа 10 циклов (10 нс). Это означает, что процессору требуется 99 наносекунд для выполнения первых 99 операций чтения и 10 наносекунд для выполнения сотого. Снижение частоты обращений на 1 процент только что замедлило работу ЦП на 10 процентов.

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

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

Кэш используется, когда два разных потока записывают и перезаписывают данные в одном и том же пространстве памяти.Это вредит производительности обоих потоков — каждое ядро ​​вынуждено тратить время на запись своих собственных предпочтительных данных в L1 только для того, чтобы другое ядро ​​быстро перезаписало эту информацию. AMD СТАРЫЙ Steamroller все еще сталкивается с этой проблемой, даже несмотря на то, что AMD увеличила кэш кода L1 до 96 КБ и сделала его трехсторонним ассоциативным вместо двух. Более поздние процессоры Ryzen не разделяют кеш таким образом и не страдают от этой проблемы.

Изображение Anandtech

На этом графике показано, как снизилась частота совпадений Opteron 6276 (оригинальный процессор Bulldozer), когда оба ядра были активны, по крайней мере, в некоторых тестах.Ясно, однако, что конкуренция за кэш — не единственная проблема — 6276 исторически изо всех сил пытался превзойти 6174, даже когда оба процессора имели одинаковую частоту совпадений.

Zen 2 не имеет сегодня подобных недостатков, а общая производительность кеш-памяти и памяти Zen и Zen 2 намного лучше, чем у более старой архитектуры Piledriver.

Современные процессоры также часто имеют очень маленький кэш L0, который часто составляет всего несколько килобайт и используется для хранения микроопераций. И AMD, и Intel используют такой кэш; У Zen кеш-память 2048 µOP, а у Zen 2 — 4096 µOP.Эти крошечные пулы кэш-памяти работают по тем же общим принципам, что и L1 и L2, но представляют собой пул памяти еще меньшего размера, к которому ЦП может обращаться с еще меньшими задержками, чем L1. Часто компании адаптируют эти возможности друг к другу. Zen 1 и Zen + (APU Ryzen 1xxx, 2xxx, 3xxx) имеют кэш инструкций L1 объемом 64 КБ, который имеет 4-сторонний ассоциативный набор, и кэш L0 на 2048 µOP. Zen 2 (процессоры Ryzen 3xxx для настольных ПК, Ryzen Mobile 4xxx) имеет кэш-память L1 объемом 32 КБ с 8-позиционным ассоциативным набором и 4096 µOP кэш-памяти.Удвоение ассоциативности набора и размера кеш-памяти µOP позволило AMD вдвое сократить размер кеш-памяти L1. Подобные компромиссы распространены в конструкциях ЦП.

Caching Out

Структура и дизайн кэша все еще дорабатываются, поскольку исследователи ищут способы выжать более высокую производительность из кешей меньшего размера. До сих пор такие производители, как Intel и AMD, еще не настаивали на увеличении кэшей и не перенесли дизайн на L4. Есть некоторые процессоры Intel со встроенной памятью EDRAM, у которых есть кэш L4, но такой подход необычен.Вот почему мы использовали приведенный выше пример Haswell, хотя этот процессор старше. Предположительно, преимущества большого кэша L4 еще не перевешивают затраты для большинства сценариев использования.

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

Сейчас прочитано :

Также ознакомьтесь с нашей серией статей ExtremeTech Explains для более глубокого освещения самых актуальных технических тем на сегодняшний день.

Размер кэша | Документы NCache

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

Использование NCache Web Manager

  • Запустите NCache Web Manager, перейдя по адресу http: // localhost: 8251 (Windows) или : 8251 (Windows + Linux).

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

  • Откроется страница с подробной конфигурацией кэша.

  • На вкладке «Обзор » нажмите кнопку.

  • Измените максимальный размер кэша в МБ.

  • Нажмите, чтобы сохранить конфигурацию кеша.

Использование PowerShell

Командлет

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

Эта команда создает локальный кэш размером 1024 МБ на узле test1. Здесь вместо 1024 можно указать любой размер.

  New-Cache demoCache -Server test1 -Size 1024
  

Редактирование конфигурации NCache вручную

Важно

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

Вы можете указать размер кэша через config.ncconf, указав тег под тегом :

  
    ...
    
    ...

  
  • После внесения изменений запустите кэш и перезапустите службу NCache.

Устранение неисправностей

Проблема нехватки памяти

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

Обходной путь

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

При указании размера кэша учитывайте следующие факторы:

  • Средний размер сеансов или объектов.
  • Количество ожидаемых сеансов или объектов.
  • Доступная память для процесса NCache.

Затем вы можете рассчитать необходимую память, учитывая следующее.

  • 15% накладных расходов за сеанс.
  • 15-20% накладные расходы на обработку. Если размер объекта больше 80 КБ, это соотношение может быть немного большим.

См. Также

Уровни изоляции кэша
Истечение срока действия данных кэша
Регистрация ошибок
Операции управления

6.3. Установка размера кэша ввода Red Hat Directory Server 10

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

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

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

Консоль сервера каталогов: установка размера кэша ввода

Например, чтобы установить кэш записей для базы данных cn = userRoot на 2 ГБ:

  1. Запустите консоль сервера каталогов.

  2. Выберите вкладку Configuration и в дереве навигации разверните значок Data .

  3. Разверните суффикс, связанный с базой данных, например dc = example, dc = com , а затем выберите базу данных.

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

  5. Нажмите Сохранить .

  6. Перезапустите экземпляр сервера каталогов:

     # systemctl restart dirsrv.target 
Командная строка: установка размера кэша ввода

Например, чтобы установить кэш записей для базы данных LDBM на 2 ГБ:

  1. Задайте значение в конфигурации сервера каталогов:

     # ldapmodify -D "cn = Диспетчер каталогов" -W -x
    
    dn: cn =  имя_базы_данных , cn = ldbm database, cn = plugins, cn = config
    changetype: изменить
    заменить: nsslapd-cachememsize
    nsslapd-cachememsize: 2147483648 
  2. Перезапустите экземпляр сервера каталогов:

     # systemctl перезапуск dirsrv.цель 

Хранить в кэше данные размером более 512 КБ


Вы просматриваете документацию Apigee Edge.
См. Документацию Apigee X.

Apigee Edge предоставляет возможность хранить данные в кеше во время выполнения для обеспечения устойчивости и ускорения
поиск.

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

Антипаттерн

Этот конкретный антипаттерн говорит о последствиях превышения текущего размера кеша.
ограничения внутри платформы Apigee Edge.

При кэшировании данных размером> 512 КБ последствия будут следующими:

  • Запросы API, выполняемые впервые на каждом из процессоров сообщений, должны получить
    данные независимо от исходного источника (политики или целевого сервера), как записи>
    512 КБ
    недоступны в кэше L2.
  • Хранение больших объемов данных (> 512 КБ) в кэше L1, как правило, увеличивает нагрузку на платформу
    Ресурсы. Это приводит к тому, что кэш-память L1 заполняется быстрее и, следовательно, занимает меньше места.
    доступны для других данных.Как следствие, нельзя будет кэшировать данные как
    агрессивно, как хотелось бы.
  • Кэшированные записи из процессоров сообщений будут удалены, когда ограничение на количество
    записи достигнут. Это приводит к повторному извлечению данных из исходного источника на
    соответствующие процессоры сообщений.

Удар

  • Данные размером> 512 КБ не будут храниться в L2 / постоянном кэше.
  • Более частые вызовы исходного источника (политики или целевого сервера) приводят к
    увеличенные задержки для запросов API.

Лучшая практика

  • Для достижения оптимальной производительности рекомендуется хранить в кэше данные размером <512 КБ.
  • Если необходимо хранить данные размером> 512 КБ, примите во внимание:
    • Использование любой подходящей базы данных для хранения больших данных

      ИЛИ

    • Сжатие данных

Дополнительная литература

Оптимизация производительности Lightroom

Lightroom использует предварительный просмотр для отображения эскизов фотографий в виде сетки, лупы, а также в модулях «Разработка», «Слайд-шоу», «Печать» и «Интернет».

При импорте фотографий вы можете выбрать один из трех типов предварительного просмотра со все более высоким качеством:

Минимум: Эти превью представляют собой небольшие превью в формате JPEG с низким разрешением, встроенные в фотографии, которые создает камера. Это самый быстрый способ создания предварительного просмотра. В представлениях «Диафильм» и «Сетка» модуля «Библиотека» временно используются минимальные предварительные просмотры, пока Lightroom не отобразит предварительные изображения стандартного размера для этих миниатюр.

Embedded & Sidecar: Эти превью больше, они также созданы камерой, и их создание занимает немного больше времени, чем минимальные превью.

Стандарт: Lightroom создает стандартные превью. Для обработки они используют движок Camera Raw. Таким образом, они иногда выглядят иначе, чем минимальные или встроенные превью, особенно если вы внесли изменения в модуль «Разработка». Вы можете указать размер стандартного предварительного просмотра, который вам нужен, в зависимости от используемого вами дисплея. Стандартные превью используются в эскизах киноленты и сетки, а также в областях предварительного просмотра и содержимого модулей «Слайд-шоу», «Печать» и «Интернет».

1: 1: Эти предварительные просмотры представляют собой 100% представление реальных пикселей и, как и стандартные предварительные просмотры, обработчик Camera Raw их обрабатывает.Когда Lightroom генерирует превью 1: 1, он также генерирует минимальный и стандартный превью, поэтому все три доступны программе по мере необходимости. Поскольку обрабатывается так много данных, создание предварительного просмотра 1: 1 может занять значительное время. Каждый раз, когда вы увеличиваете масштаб до 1: 1 или выше в модуле «Библиотека», Lightroom использует предварительный просмотр 1: 1.

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

Для визуализации превью 1: 1 при импорте используйте панель «Обработка файлов» в окне импорта. Выберите Предварительный просмотр рендеринга> 1: 1. Хотя создание высококачественных превью 1: 1 при импорте замедляет процесс импорта, оно делает Lightroom более отзывчивым, когда вы начинаете работать в модуле «Библиотека».

Альтернативой, если вам нужен более быстрый процесс импорта, является визуализация минимальных или стандартных превью при импорте. Затем в любое время выберите несколько фотографий в представлении «Сетка» модуля «Библиотека» и выберите «Библиотека»> «Предварительный просмотр»> «Предварительный просмотр 1: 1». Позвольте Lightroom обработать изображения, прежде чем вы начнете с ними работать.

Как настроить размер кеша

Д. Дж. Бернштейн

Интернет-издание

djbdns

По умолчанию,
dnscache использует для своего кеша 1 мегабайт памяти.Вы можете перезапустить его со 100-мегабайтным кешем следующим образом:

     эхо 100000000> / служба / dnscache / env / CACHESIZE
     echo 104857600> / service / dnscache / env / DATALIMIT
     svc -t / служба / dnscache
 

службы dnscache, созданные с помощью djbdns 1.00 или более ранней версии
нет каталога / env.
Вместо этого отредактируйте / service / dnscache / run;
измените CACHESIZE = 1000000 на CACHESIZE = 100000000
и от -d3000000 до -d104857600.

Измерение влияния размера кэша

dnscache часто регистрирует строку статистики в
/ сервис / dnscache / журнал / основной / текущий.Второе число после статистики на линии
это движение кэша .
Движение кэша — это количество байтов записей кэша.
которые были записаны в кеш
с момента запуска dnscache.

Посмотрите на это число сейчас и снова через 24 часа;
вычтите, чтобы увидеть движение кеша за 1 день.
(Или экстраполируйте, используя ps, чтобы увидеть
как долго выполняется процесс dnscache.)
Теперь разделите размер кеша на 1-дневное движение кеша:

  • 0,01: Время цикла кеширования составляет примерно 15 минут.
    Почти все записи DNS имеют большие настройки TTL (« время жизни »);
    их можно было бы кэшировать дольше, если бы кеш был больше.
  • 0,1: Время цикла кеширования составляет примерно 2 часа.
    Это выше TTL адреса AOL,
    но это ниже TTL большинства записей.
  • 1: Время цикла кеширования составляет примерно 1 день.
    Еще есть некоторая выгода от большего кеша.
  • 10: Время цикла кеширования превышает неделю.
    Это оставляет достаточно места для роста;
    максимальный общий TTL составляет 3 дня.
    В любом случае dnscache не будет сохранять записи дольше недели.

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

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

Хранить в кэше данные размером более 256 КБ | Apigee X

Вы
просмотр документации Apigee X .
См. Документацию Apigee Edge.

Apigee предоставляет возможность хранить данные в кеше во время выполнения для сохранения и ускорения
поиск.

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

Антипаттерн

Этот конкретный антипаттерн говорит о последствиях превышения текущего размера кеша.
ограничения внутри Apigee.

Если кэшируются данные размером> 256 КБ, последствия будут следующими:

  • Запросы API, выполняемые впервые на каждом из процессоров сообщений, должны получить
    данные независимо от исходного источника (политики или целевого сервера), как записи>
    256 КБ
    недоступны в кэше L2.
  • Хранение больших объемов данных (> 256 КБ) в кэше L1, как правило, увеличивает нагрузку на платформу
    Ресурсы. Это приводит к тому, что кэш-память L1 заполняется быстрее и, следовательно, занимает меньше места.
    доступны для других данных. Как следствие, нельзя будет кэшировать данные как
    агрессивно, как хотелось бы.
  • Кэшированные записи из процессоров сообщений будут удалены, когда ограничение на количество
    записи достигнут. Это приводит к повторному извлечению данных из исходного источника на
    соответствующие процессоры сообщений.

Удар

  • Данные размером> 256 КБ не будут храниться в L2 / постоянном кэше.
  • Более частые вызовы исходного источника (политики или целевого сервера) приводят к
    увеличенные задержки для запросов API.

Лучшая практика

  • Для достижения оптимальной производительности рекомендуется хранить в кэше данные размером <256 КБ.
  • Если необходимо хранить данные размером> 256 КБ, подумайте:
    • Использование любой подходящей базы данных для хранения больших данных

      ИЛИ

    • Сжатие данных

Дополнительная литература

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *