Системный кэш: что это, для чего используется и как изменить его размер в windows?
Содержание:
- Алгоритмы кэширования
- Что такое кэш-память жёсткого диска
- Анализируем CPUID
- Структура кэша
- Функция кэш-памяти
- Уровни кэш-памяти
- Новый подход к кэшированию процессора +11
- Для чего нужна кэш-память процессора?
- Что такое кэш-память на компьютере
- Устройство кэш-памяти процессора
- Операция
- 5 Заключение. Как выбрать процессор правильно
Алгоритмы кэширования
Алгоритмы кэширования — это подробный список инструкций, который указывает, какие элементы следует отбрасывать в кэш. Их еще называют алгоритмами вытеснения или политиками вытеснения.
Когда кэш заполнен, алгоритм должен выбрать, какую именно запись следует из него удалить, чтобы записать новую, более актуальную информацию.
Least recently used — LRU (Вытеснение давно неиспользуемых)
LRU — это алгоритм, при котором вытесняются элементы, которые дольше всего не запрашивались. Соответственно, необходимо хранить время последнего запроса к элементу. И как только кэш становится заполненным, необходимо вытеснить из него элемент, который дольше всего не запрашивался.
Общая реализация этого алгоритма требует сохранения «бита возраста» для элемента и за счет этого происходит отслеживание наименее используемых элементов. В подобной реализации, при каждом обращении к элементу меняется его «возраст».
LRU на самом деле является семейством алгоритмов кэширования, в которое входит 2Q, а также LRU/K.
Для реализации понадобятся две структуры данных:
- Хеш-таблица, которая будет хранить закэшированные значения.
- Очередь, которая будет хранить приоритеты элементов и выполнять следующие операции:
- Добавить пару значение и приоритет.
- Извлечь (удалить и вернуть) значение с наименьшим приоритетом.
Пошаговый алгоритм:
- Проверяем, есть ли значение в кэше:
- Если значение уже есть, то обновляем время последнего к нему запроса и возвращаем значение.
- Если значения нет в кэше — вычисляем его.
- Проверяем размер кэша:
- Добавляем значение в хеш-таблицу и в очередь.
Достоинства:
константное время выполнения и использование памяти.
Недостатки:
алгоритм не учитывает ситуации, когда к определенным элементам обращаются часто, но с периодом, превышающим размер кэша (т.е. элемент успевает покинуть кэш).
Псевдо-LRU — PLRU
PLRU — это алгоритм, который улучшает производительность LRU тем, что использует приблизительный возраст, вместо поддержания точного возраста каждого элемента.
Most Recently Used — MRU (Наиболее недавно использовавшийся)
MRU — алгоритм, который удаляет самые последние использованные элементы в первую очередь. Он наиболее полезен в случаях, когда чем старше элемент, тем больше обращений к нему происходит.
Least-Frequently Used — LFU (Наименее часто используемый)
LFU — алгоритм, который подсчитывает частоту использования каждого элемента и удаляет те, к которым обращаются реже всего.
В LFU каждому элементу присваивается — счётчик. При повторном обращении к элементу его счётчик увеличивается на единицу. Таким образом, когда кэш заполняется, необходимо найти элемент с наименьшим счётчиком и заменить его новым элементом. Если же все элементы в кэше имеют одинаковый счётчик, то в этом случае вытеснение осуществляется по методу FIFO: первым вошёл — первым вышел.
Недостатки:
- много обращений к элементу за короткое время накручивает счётчик и в результате элемент зависает в кэше.
- алгоритм не учитывает “возраст” элементов.
Multi queue — MQ (Алгоритм многопоточного кэширования)
MQ — алгоритм, использующий несколько LRU очередей — Q0, Q1, …, Qn, между которыми элементы ранжируются/перемещаются в зависимости от частоты обращения к ним.
В дополнение к очередям используется буфер “истории” — Qout, где хранятся все идентификаторы элементов со счётчиками (частота обращения к элементу). При заполнении Qout удаляется самый старый элемент.
Элементы остаются в LRU очередях в течение заданного времени жизни, которое динамически определяется специальным алгоритмом.
Если к очереди не ссылались в течение её времени жизни, то её приоритет понижается с Qi до Qi-1 или удаляется из кэша, если приоритет равен 0 — Q0.
Каждая очередь также имеет максимальное количество обращений к её элементам. Поэтому если к элементу в очереди Qi обращаются более 2i раз, то этот элемент перемещается в очередь Qi+1.
При заполнении кэша, будет вытеснен элемент из очереди Q0, который дольше всех не использовался.
Картинка для наглядности:
Другие алгоритмы
Алгоритмов кэширования достаточно много, поэтому на данный момент не все здесь рассмотрены. С полным списком можно ознакомиться здесь.
Со временем буду дополнять.
Что такое кэш-память жёсткого диска
Кэш-память (или буферная память, буфер) – область, где хранятся данные, которые уже считались с винчестера, но еще не были переданы для дальнейшей обработки. Там хранится информация, которой ОС Windows пользуется чаще всего. Необходимость в этом хранилище возникла из-за большой разницы между скоростью считывания данных с накопителя и пропускной способностью системы. Подобным буфером обладают и другие элементы компьютера: процессоры, видеокарты, сетевые карты и др.
Объемы кэша
Современные HDD в основном оснащаются кэш-памятью на 32 и 64 Мб (меньший объем уже редкость). Обычно этого достаточно, тем более что у системы есть собственная память, которая вкупе с ОЗУ ускоряет работу жесткого диска
Правда, при выборе винчестера не все обращают внимание на устройство с наибольшим размером буфера, так как цена на такие высока, да и параметр этот не является единственным определяющим
Главная задача кэш-памяти
Кэш служит для записи и чтения данных, но, как уже было сказано, это не основной фактор эффективной работы жесткого диска
Здесь важно и то, как организован процесс обмена информацией с буфером, а также, насколько хорошо работают технологии, предотвращающие возникновение ошибок
В буферном хранилище содержаться данные, которые используются наиболее часто. Они подгружаются прямо из кэша, поэтому производительность увеличивается в несколько раз. Смысл в том, что нет необходимости в физическом чтении, которое предполагает прямое обращение к винчестеру и его секторам. Этот процесс слишком долгий, так как исчисляется в миллисекундах, в то время как из буфера данные передаются во много раз быстрее.
Преимущества кэш-памяти
Кэш занимается быстрой обработкой данных, но у него есть и другие преимущества. Винчестеры с объемным хранилищем могут значительно разгрузить процессор, что приводит к его минимальному задействованию.
Буферная память является своего рода ускорителем, который обеспечивает быструю и эффективную работу HDD. Она положительно влияет на запуск ПО, когда речь идет о частом обращении к одним и тем же данным, размер которых не превышает объема буфера. Для работы обычному пользователю более чем достаточно 32 и 64 Мб. Дальше эта характеристика начинает терять свою значимость, так как при взаимодействии с большими файлами эта разница несущественна, да и кому захочется сильно переплачивать за более объемный кэш.
Узнаем объем кэша
Если размер винчестера — величина, о которой несложно узнать, то с буферной памятью другая ситуация. Не каждый пользователь интересуется этой характеристикой, но если возникло такое желание, обычно ее указывают на упаковке с устройством. В противном случае можно найти эту информацию в интернете или воспользоваться бесплатной программой HD Tune.
Утилита, предназначенная для работы с HDD и SSD, занимается надежным удалением данных, оценкой состояния устройств, сканированием на наличие ошибок, а также дает подробную информацию о характеристиках винчестера.
- Скачиваем HD Tune и запускаем ее.
«Info»«Buffer»
В этой статье мы рассказали, что такое буферная память, какие задачи она выполняет, каковы ее преимущества и как узнать ее объем на винчестере. Выяснили, что она важна, но не является основным критерием при выборе жесткого диска, а это — положительный момент, учитывая высокую стоимость устройств, оснащенных большим объемом кэш-памяти.
Не всегда. Теоретически, чем больше кэш, тем меньше система обращается к диску — необходимые данные доступны в буферной памяти. Однако здесь стоит учитывать, что производители накопителей ограничивают объём кэша 256 Мб. Если компьютер используется для обработки больших файлов, то размер буферной памяти становится неважным — информация всё равно не помещается на микросхемах, так что прирост производительности будет минимальный.
- Для игр — 256 Мб.
- Для домашнего медиацентра — 128 Мб.
- Для сёрфинга в интернете, работы в офисных приложениях — 32-64 Мб.
Стоимость жёстких дисков меняется в зависимости от размера кэша. Поэтому перед покупкой нужно определиться, для каких целей будет использоваться система. Это поможет не переплатить за мегабайты буферной памяти, которые не принесут никакой пользы с точки зрения производительности.
Анализируем CPUID
Параметры комплекса CCX согласно результатам выполнения инструкции CPUID, функция 8000001Dh
CPUID функция 8000001Dh позволяет получить информацию о кэш-памяти одного комплекса CCX. Каждое его ядро оснащено L1-кэшем для инструкций и данных объемом по 32 килобайта каждый; объем кэш-памяти L2 составляет 512 килобайт. При этом L1 и L2 являются ресурсами приватными для каждого из ядер. Заметим, что места в L1-кэш для инструкций в процессорах второго поколения AMD EPYC выделено в два раза меньше, чем было в первом поколении этих серверных чипов.
Параметр Max. logical CPUs sharing this cache для L1 и L2 равен двум — это количество логических процессоров, совместно использующих L1 и L2, что с учетом технологии SMT означает: два логических CPU соответствуют одному ядру. Для L3-кэш этот параметр равен 8 — количество ядер, совместно использующих блок L3, равно 4.
Суммарный объем кэш-памяти L3 на одно процессорное гнездо (согласно CPUID функции 80000006h)
Чтобы определить полный объем L3 для процессора, воспользуемся CPUID функцией 80000006h. Эта величина составляет 128 MB — топология L3 представлена восемью кластерами по 16 MB. Данные CPUID функции 8000001Dh говорят о том, что ассоциативность L3 (Ways of associativity) равна 16. На скриншоте функции 80000006h значение L3 Unified Cache Associativity находится в состоянии Reserved, что следует из официальной документации.
Обратим также внимание на параметр L2 data TLB for 4KB pages number of entries, который равен 800h, что в десятичном представлении дает 2048;
До сих пор считалось, что 16-вариантной ассоциативности соответствует значение битового поля EDX., равное 8. В нашем случае CPUID возвращает 9, что может означать или запаздывание в документации, или особое архитектурное решение.
Из маркетинговых материалов AMD следует, что латентность L3 в процессорах семейства EPYC 7002 обусловлена временем, соответствующим 40 процессорным тактам (для предыдущего семейства Naples это значение было несколько ниже — латентность L3-кэш составляла 35 тактов), что хорошо согласуется с данными, полученными в ходе эксперимента.
Структура кэша
Система кэш-памяти процессора состоит из двух блоков — контроллера кэш-памяти и собственно самой кэш-памяти. Она представлена на рисунке 1.
Рис.1. Структура и функционирование кэша
Кэш память
Это место, где хранится содержание кэша. Кэш-память процессора изготавливают в виде микросхем статической памяти (Static Random Access Memory, сокращенно — SRAM). По сравнению с другими типами памяти, статическая память обладает очень высокой скоростью работы. Однако, эта скорость зависит также от объема конкретной микросхемы. Чем значительней объем микросхемы, тем сложнее обеспечить высокую скорость ее работы. Если такая особенность учтена производителем, то кэш-память процессора содержит несколько блоков, называемых уровнями. В большинстве процессоров используется трехуровневая система кэша:
Кэш-память первого уровня – очень маленькая, но самая быстрая микросхема памяти. Ее объем не превышает нескольких десятков килобайт. Работает она без каких-либо задержек. В ней содержатся данные, которые чаще всего используются процессором. Количество микросхем памяти, как правило, равно количеству его ядер. Каждое ядро имеет доступ только к своей микросхеме
Кэш-память второго уровня немного медленнее кэш-памяти первого, но и объем ее более существенный (около несколько сотен килобайт)
Служит она для временного хранения важной информации, вероятность запроса которой ниже, чем у информации, находящейся в первом уровне
Кэш-память третьего уровня – еще более объемная, но и более медленная схема памяти. Тем не менее, она быстрее оперативной памяти
Ее размер может достигать нескольких десятков мегабайт. В отличие от 1 и 2 уровней, она является общей для всех ядер процессора. Служит для временного хранения важных данных с относительно низкой вероятностью запроса, а также для обеспечения взаимодействия ядер процессора между собой.
Контроллер кэш памяти
Это устройство, управляющее содержанием кэша, получением необходимой информации из оперативной памяти, передачей ее процессору, а также возвращением в оперативную память результатов вычислений. Когда ядро процессора обращается к контроллеру за какими-то данными, тот проверяет, есть ли эти данные в кэш-памяти. Если это так, ядру моментально отдается информация из кэша. В противном случае ядру приходится ожидать поступления данных из медленной оперативной памяти. Ситуация, когда в кэше не оказывается нужных данных, называется кэш-промахом. Задача контроллера – сделать так, чтобы кэш-промахи происходили как можно реже, а в идеале – чтобы их не было вообще.
Размер кэша процессора по сравнению с размером оперативной памяти несоизмеримо мал. В нем может находиться лишь копия крошечной части данных, хранимых в оперативной памяти. Но, не смотря на это, контроллер допускает кэш-промахи не часто. Эффективность его работы определяется несколькими факторами:
- Размером и структурой кэш-памяти. Чем больше ресурсов имеет в своем распоряжении контроллер, тем ниже вероятность кэш-промаха
- Эффективностью алгоритмов, по которым контроллер определяет, какая именно информация понадобится процессору в следующий момент времени
- Сложностью и количеством задач, одновременно решаемых процессором. Чем сложнее задачи и чем их больше, тем чаще «ошибается» контроллер
Функция кэш-памяти
В чем же состоит причина, которая побудила разработчиков компьютеров использовать специальную память для процессора? Разве возможностей ОЗУ для компьютера недостаточно?
Действительно, долгое время персональные компьютеры обходились без какой-либо кэш-памяти. Но, как известно, процессор – это самое быстродействующее устройство персонального компьютера и его скорость росла с каждым новым поколением CPU. В настоящее время его скорость измеряется миллиардами операций в секунду. В то же время стандартная оперативная память не столь значительно увеличила свое быстродействие за время своей эволюции.
Вообще говоря, существуют две основные технологии микросхем памяти – статическая память и динамическая память. Не углубляясь в подробности их устройства, скажем лишь, что статическая память, в отличие от динамической, не требует регенерации; кроме того, в статической памяти для одного бита информации используется 4-8 транзисторов, в то время как в динамической – 1-2 транзистора. Соответственно динамическая память гораздо дешевле статической, но в то же время и намного медленнее. В настоящее время микросхемы ОЗУ изготавливаются на основе динамической памяти.
Примерная эволюция соотношения скорости работы процессоров и ОЗУ:
Таким образом, если бы процессор брал все время информацию из оперативной памяти, то ему пришлось бы ждать медлительную динамическую память, и он все время бы простаивал. В том же случае, если бы в качестве ОЗУ использовалась статическая память, то стоимость компьютера возросла бы в несколько раз.
Именно поэтому был разработан разумный компромисс. Основная часть ОЗУ так и осталась динамической, в то время как у процессора появилась своя быстрая кэш-память, основанная на микросхемах статической памяти. Ее объем сравнительно невелик – например, объем кэш-памяти второго уровня составляет всего несколько мегабайт. Впрочем, тут стоить вспомнить о том, что вся оперативная память первых компьютеров IBM PC составляла меньше 1 МБ.
Кроме того, на целесообразность внедрения технологии кэширования влияет еще и тот фактор, что разные приложения, находящиеся в оперативной памяти, по-разному нагружают процессор, и, как следствие, существует немало данных, требующих приоритетной обработки по сравнению с остальными.
Уровни кэш-памяти
На маркировке современных ЦП, помимо тактовой частоты и количества потоков, можно встретить такое понятие как размер кэша 1,2 и 3 уровней. Как он определяется и на что влияет? Давайте разбираться простым языком.
- Кэш первого уровня (L1) – самая важная и быстрая микросхема в архитектуре ЦП. Один процессор может вместить количество модулей, равных числу ядер. Примечательно, что микросхема может хранить в памяти самые востребованные и важные данные только со своего ядра. Объем массива зачастую ограничен показателем в 32-64 КБ.
- Кэш второго уровня (L2) – падение скорости компенсируется увеличением объема буфера, который доходит до 256, а то и 512 КБ. Принцип действия такой же, как и у L1, а вот частота запроса к памяти ниже, ввиду хранения в ней менее приоритетных данных.
- Кэш третьего уровня (L3) – самый медленный и объемный раздел среди всех перечисленных. И все равно этот массив гораздо быстрее оперативной памяти. Размер может достигать 20, и даже 60 МБ, если речь касается серверных чипов. Польза от массива огромна: он является ключевым звеном обмена данными между всеми ядрами системы. Без L3 все элементы чипа были бы разрознены.
В продаже можно встретить как двух- так и трехуровневую структуру памяти. Какая из них лучше? Если вы используете процессор лишь для офисных программ и казуальных игр, то никакой разницы не почувствуете. Если же система собирается с прицелом под сложные 3D-игры, архивацию, рендеринг и работу с графикой, то прирост в некоторых случаях будет колебаться от 5 до 10%.Кэш третьего уровня оправдан лишь в том случае, если вы намерены регулярно работать с многопоточными приложениями, требующими регулярные сложные расчеты. По этой причине в серверных моделях нередко используют кэш L3 больших объемов. Хотя бывают случаи, что и этого не хватает, а потому приходится дополнительно ставить так называемые модули L4, которые выглядят как отдельная микросхема, подключаемая к материнской плате.
Новый подход к кэшированию процессора +11
- 11.07.17 12:42
•
Anrewer
•
#290985
•
Гиктаймс
•
•
8700
Железо, Научно-популярное, Схемотехника, Процессоры, Системные платы
Чипы на большинстве современных настольных компьютеров имеют четыре ядра, но производители микросхем уже объявили о планах перехода на шесть ядер, а для высокопроизводительных серверов и сегодня 16-ядерные процессоры далеко не редкость.
Чем больше ядер, тем больше проблема распределения памяти между всеми ядрами при одновременной совместной работе. С увеличением числа ядер всё больше выгодно минимизировать потери времени на управлении ядрами при обработке данных — ибо скорость обмена данными отстает от скорости работы процессора и обработки данных в памяти. Можно физически обратиться к чужому быстрому кэшу, а можно к своему медленному, но сэкономить на времени передаче данных. Задача усложняется тем, что запрашиваемые программами объемы памяти не четко соответствуют объемам кэш-памяти каждого типа.
Физически разместить максимально близко к процессору можно только очень ограниченный объем памяти — кэш процесcора уровня L1, объем которого крайне незначителен. Даниэль Санчес (Daniel Sanchez), По-Ан Цай (Po-An Tsai) и Натан Бэкмен (Nathan Beckmann) — исследователи из лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института — научили компьютер конфигурировать разные виды своей памяти под гибко формируемую иерархию программ в реальном режиме времени. Новая система, названная Jenga, анализирует объемные потребности и частоту обращения программ к памяти и перераспределяет мощности каждого из 3 видов процессорного кэша в комбинациях обеспечивающих рост эффективности и экономии энергии.
Для начала исследователи протестировали рост производительности при комбинации статичной и динамической памяти в работе над программами для одноядерного процессора и получили первичную иерархию — когда какую комбинацию лучше применять. Из 2 видов памяти или из одного. Оценивались два параметра -задержка сигнала (латентность) и потребляемая энергия при работе каждой из программ. Примерно 40% программ стали работать хуже при комбинации видов памяти, остальные — лучше. Зафиксировав какие программы «любят» смешанное быстродействие, а какие — размер памяти, исследователи построили свою систему Jenga.
Они виртуально протестировали 4 виды программ на виртуальном компьютере с 36 ядрами. Тестировали программы:
- omnet — Objective Modular Network Testbed, библиотека моделирования C и платформа сетевых средств моделирования (синий цвет на рисунке)
- mcf — Meta Content Framework (красный цвет)
- astar — ПО для отображения виртуальной реальности (зеленый цвет)
- bzip2 — архиватор (фиолетовый цвет)
Для чего нужна кэш-память процессора?
Как уже упоминалось выше, главное назначение кэш-памяти – это хранение данных, которые часто используются процессором. Кэш является буфером, в который загружаются данные, и, несмотря на его небольшой объём, (около 4-16 Мбайт) в современных процессорах, он дает значительный прирост производительности в любых приложениях.
Чтобы лучше понять необходимость кэш-памяти, давайте представим себе организацию памяти компьютера в виде офиса. Оперативная память будет являть собою шкаф с папками, к которым периодически обращается бухгалтер, чтобы извлечь большие блоки данных (то есть папки). А стол, будет являться кэш-памятью.
Есть такие элементы, которые размещены на столе бухгалтера, к которым он обращается в течение часа по несколько раз. Например, это могут быть номера телефонов, какие-то примеры документов. Данные виды информации находятся прямо на столе, что, в свою очередь,увеличивает скорость доступа к ним.
Точно так же, данные могут добавиться из тех больших блоков данных (папок), на стол, для быстрого использования, к примеру, какой-либо документ. Когда этот документ становится не нужным, его помещают назад в шкаф (в оперативную память), тем самым очищая стол (кэш-память) и освобождая этот стол для новых документов, которые будут использоваться в последующий отрезок времени.
Также и с кэш-памятью, если есть какие-то данные, к которым вероятнее всего будет повторное обращение, то эти данные из оперативной памяти, подгружаются в кэш-память. Очень часто, это происходит с совместной загрузкой тех данных, которые вероятнее всего, будут использоваться после текущих данных. То есть, здесь присутствует наличие предположений о том, что же будет использовано «после». Вот такие непростые принципы функционирования.
Что такое кэш-память на компьютере
Кэш-память хранит самые важные временные файлы, которые могут понадобиться в ближайшее время. Например, когда вы смотрите видео в интернете, оно постепенно загружается и содержится в кэш-памяти браузера до тех пор, пока вы не закончите. Затем видео удаляется за ненадобностью. Так что, по сути, включая фильм в интернете, вы всё равно скачиваете его на компьютер и удаляете после просмотра.
Кэш-память используется и в Windows. Обычно там хранятся результаты вычислений программ. Обычно кэш своевременно удаляется, но есть виды, которые накапливаются и захламляют систему, потому что компьютер не может определить, нужна ли ещё эта информация или уже нет. Есть четыре вида кэш-памяти, которые нуждаются в постоянной очистке.
- DNS-кэш, который хранит запросы компьютера к другим серверам сети. Необходим для того, чтобы не тратить время на повторные обращения, вся необходимая информация хранится в кэш-памяти. Когда нужно полностью обновить данные с сервера, тогда меняется и DNS-кэш. Соответственно, сами собой данные не удаляются, поэтому даже ненужные сохраняются там.
- Thumbnail-кэш. Thumbnail дословно переводится как «ноготь большого пальца», а образно обозначает в английском языке миниатюры картинки, превью или эскизы. Компьютер сохраняет в кэш-памяти иконки картинок, видеофайлов или значков программ, поэтому прогружает миниатюры во второй раз значительно быстрее. Но если сами картинки уже удалены, их миниатюры из кэша не исчезают.
- Кэш оперативной памяти. Сама оперативная память тоже хранит в себе временные файлы по технологии cache. И некоторые файлы не очищаются из-за ошибок или багов.
- Кэш браузера. Уже было упомянуто о кэшировании видео для онлайн-просмотра, но это не всё. Каждая картинка, элементы дизайна, анимация на сайтах сохраняются в кэш-память. Часть веб-страниц полностью хранится во временной памяти, чтобы сократить время их прогрузки. Всё это накапливается, и даже уже неиспользуемые сайты продолжают занимать место.
Устройство кэш-памяти процессора
Система кэш-памяти процессора состоит из двух блоков — контроллера кэш-памяти и собственно самой кэш-памяти.
Контроллер кэш памяти
Контроллер кэш памяти – это устройство, управляющее содержанием кэша, получением необходимой информации из оперативной памяти, передачей ее процессору, а также возвращением в оперативную память результатов вычислений. Когда ядро процессора обращается к контроллеру за какими-то данными, тот проверяет, есть ли эти данные в кэш-памяти. Если это так, ядру моментально отдается информация из кэша (происходит так называемое кэш-попадание). В противном случае ядру приходится ожидать поступления данных из медленной оперативной памяти. Ситуация, когда в кэше не оказывается нужных данных, называется кэш-промахом. Задача контроллера – сделать так, чтобы кэш-промахи происходили как можно реже, а в идеале – чтобы их не было вообще. Размер кэша процессора по сравнению с размером оперативной памяти несоизмеримо мал. В нем может находиться лишь копия крошечной части данных, хранимых в оперативной памяти. Но, не смотря на это, контроллер допускает кэш-промахи не часто. Эффективность его работы определяется несколькими факторами: • размером и структурой кэш-памяти (чем больше ресурсов имеет в своем распоряжении контроллер, тем ниже вероятность кэш-промаха); • эффективностью алгоритмов, по которым контроллер определяет, какая именно информация понадобится процессору в следующий момент времени; • сложностью и количеством задач, одновременно решаемых процессором. Чем сложнее задачи и чем их больше, тем чаще «ошибается» контроллер.
Кэш-память процессора
Кэш-память процессора изготавливают в виде микросхем статической памяти (англ. Static Random Access Memory, сокращенно — SRAM). По сравнению с другими типами памяти, статическая память обладает очень высокой скоростью работы. Впервые кэш размером 8 KB был встроен в процессор Intel i486 в 1989 г. Однако, эта скорость зависит также от объема конкретной микросхемы. Чем значительней объем микросхемы, тем сложнее обеспечить высокую скорость ее работы. Учитывая указанную особенность, кэш-память процессора изготовляют в виде нескольких небольших блоков, называемых уровнями. В большинстве процессоров используется трехуровневая система кэша: • Кэш-память первого уровня или L1 (от англ. Level — уровень) – очень маленькая, но самая быстрая и наиболее важная микросхема памяти. Ни в одном процессоре ее объем не превышает нескольких десятков килобайт. Работает она без каких-либо задержек. В ней содержатся данные, которые чаще всего используются процессором. Количество микросхем памяти L1 в процессоре, как правило, равно количеству его ядер. Каждое ядро имеет доступ только к своей микросхеме L1. • Кэш-память второго уровня (L2) немного медленнее кэш-памяти L1, но и объем ее более существенный (несколько сотен килобайт)
Служит она для временного хранения важной информации, вероятность запроса которой ниже, чем у информации, находящейся в L1. • Кэш-память третьего уровня (L3) – еще более объемная, но и более медленная схема памяти
Тем не менее, она значительно быстрее оперативной памяти. Ее размер может достигать нескольких десятков мегабайт. В отличие от L1 и L2, она является общей для всех ядер процессора. Уровень L3 служит для временного хранения важных данных с относительно низкой вероятностью запроса, а также для обеспечения взаимодействия ядер процессора между собой. Встречаются также процессоры с двухуровневой кэш-памятью. В них L2 совмещает в себе функции L2 и L3.
Операция
Кэш содержит копию исходных данных, когда получение или вычисление затратно (с точки зрения времени доступа) относительно времени доступа к кешу. После того, как данные сохранены в кеше, доступ к ним осуществляется напрямую через кеш, а не для их извлечения или пересчета, что снижает среднее время доступа.
Процесс работает следующим образом:
- запрашивающий элемент (микропроцессор) запрашивает информацию;
- кеш проверяет, есть ли в нем эта информация. Если да, то он передает запрашивающей стороне — это называется попаданием в кеш ( попадание в кеш на английском языке). Если его не было, он спрашивает элемент поставщика (например, основную память) — это называется промахом кэша ( промахом кэша );
- элемент провайдера обрабатывает запрос и возвращает ответ в кэш;
- кеш сохраняет его для последующего использования по мере необходимости и пересылает его запрашивающему элементу.
Если кэш-память позволяет повысить производительность, то отчасти благодаря двум принципам, которые были обнаружены в результате исследований поведения компьютерных программ:
- принцип локальности пространственной , указывающий , что доступ к данным , расположенных по адресу X , вероятно , последуют доступ к очень близкой области X . Это, очевидно, верно для инструкций, выполняемых последовательно, и даже более верно для коротких циклов.
- принцип временной локальности , который указывает на то, что доступ к зоне памяти на данный момент имеет хорошие шансы повторения сразу после программы. Очевидно, это верно для циклов, состоящих только из нескольких инструкций.
Что касается вычисления матриц , кэш, с другой стороны, вносит сильную асимметрию в зависимости от того, осуществляется ли доступ к матрице по строкам или по столбцам, диссимметрии тем более важны, чем больше размер матрицы. В отчете CNUCE упоминается разница в производительности от 8 до 10 для матриц, наименьший размер которых равен 50.
5 Заключение. Как выбрать процессор правильно
Вот и основные критерии производительности одного из важнейших компонентов вашего компьютера
Важно понимать, что ссылаясь на эти критерии, можно вычислить теоретическую производительность кристалла. Реальная производительность, познаётся уже в тестировании
Увидеть такие тестирования вы можете на специализированных сайтах, где есть также форумы, которые могут быть вам полезны. На форуме вы можете встретить отзывы людей, которые приобрели вашу модель процессора и задать человеку интересующий вас вопрос.
Только старайтесь найти авторитетный ресурс, где тестирование будет проходить правильно и качественно, чтобы не попасть на очередной обман или неопытность тестировщиков.
Капля юмора в море информации:
Встречаются два друга: — Ты как?— Да ничего, магазин вот в сети открыл, за первый месяц заработал двадцать тысяч виртуальных долларов.— Виртуальных? Я даже не видел таких!— Я тоже.