Кэш процессора на что влияет: Влияние кэш-памяти процессора на быстродействие компьютера
Мифы о кэше процессора, в которые верят программисты / Хабр
Как компьютерный инженер, который пять лет занимался проблемами кэша в Intel и Sun, я немного разбираюсь в когерентности кэша. Это одна из самых трудных концепций, которые пришлось изучить ещё в колледже. Но как только вы действительно её освоили, то приходит гораздо лучшее понимание принципов проектирования систем.
Вы можете удивиться: зачем же разработчику ПО думать о механизме кэширования в CPU? Отвечу. С одной стороны, многие понятия из концепции когерентности кэша непосредственно применимы в распределённых системах и на уровнях изоляции СУБД. Например, представление реализации когерентности в аппаратных кэшах помогает лучше понять разницу в моделях согласованности (консистентности) — отличие строгой согласованности (strong consistency) от согласованности в конечном счёте (eventual consistency). У вас могут появиться новые идеи, как лучше обеспечить согласованность в распределённых системах, используя исследования и принципы из аппаратного обеспечения.
С другой стороны, неправильные представления о кэшах часто приводят к ложным утверждениям, особенно когда речь идёт о параллелизме и состоянии гонки. Например, часто говорят о трудности параллельного программирования, потому что «у разных ядер в кэшах могут быть разные/устаревшие значения». Или что квалификатор volatile в языках вроде Java нужен, чтобы «предотвратить локальное кэширование общих данных» и принудительно «читать/записывать только в основную память».
Такие заблуждения в основном безвредны (и могут быть даже полезны), но также ведут к плохим решениям при проектировании. Например, разработчики могут подумать, что они избавлены от вышеупомянутых ошибок параллелизма при работе с одноядерными системами. В действительности даже одноядерные системы подвержены риску ошибок параллелизма, если не используются соответствующие конструкции параллелизма.
Или ещё пример. Если переменные volatile действительно каждый раз пишутся/считываются из основной памяти, то они будут чудовищно медленными — ссылки в основной памяти в 200 раз медленнее, чем в кэше L1. На самом деле volatile-reads (в Java) часто настолько же производительны, как из кэша L1, и это развенчивает миф, будто volatile принуждает читает/записывать только в основную память. Если вы избегали volatile из-за проблем с производительностью, возможно, вы стали жертвой вышеуказанных заблуждений.
Но если у разных ядер собственный кэш, хранящий копии одних и тех же данных, не приведёт ли это к несоответствию записей? Ответ: аппаратные кэши в современных процессорах x86, как у Intel, всегда синхронизируются. Эти кэши не просто тупые блоки памяти, как многие разработчики, похоже, думают. Наоборот, очень сложные протоколы и встроенная логика взаимодействия между кэшами обеспечивает согласованность во всех потоках. И всё это происходит на аппаратном уровне, то есть нам, разработчикам программного обеспечения/компиляторов/систем, не нужно об этом думать.
Кратко объясню, что имеется в виду под «синхронизированными» кэшами. Здесь много нюансов, но в максимальном упрощении: если два разных потока в любом месте системы читают с одного и того же адреса памяти, то они никогда не должны одновременно считывать разные значения.
В качестве простого примера, как непротиворечивые кэши могут нарушить вышеупомянутое правило, просто обратитесь к первому разделу этого учебника. Ни один современный процессор x86 не ведёт себя так, как описано в учебнике, но глючный процессор, безусловно, может. Наша статья посвящена одной простой цели: предотвращению таких несоответствий.
Наиболее распространённый протокол для обеспечения согласованности между кэшами известен как протокол MESI. У каждого процессора своя реализация MESI, и у разных вариантов есть свои преимущества, компромиссы и возможности для уникальных багов. Однако у всех них есть общий принцип: каждая строка данных в кэше помечена одним из следующих состояний:
- Модифицированное состояние (M).
- Эти данные модифицированы и отличаются от основной памяти.
- Эти данные являются источником истины, а все остальные источники устарели.
- Эксклюзивное (E).
- Эти данные не модифицированы и синхронизированы с основной памятью.
- Ни в одном другом кэше того же уровня нет этих данных.
- Общее (S).
- Эти данные не модифицированы и синхронизированы.
- В других кэшах того же уровня тоже (возможно) есть те же данные.
- Недействительное (I).
- Эти данные устарели и не должны использоваться.
Если мы применяем и обновляем вышеуказанные состояния, то можно добиться согласованности кэша. Рассмотрим несколько примеров для процессора с четырьмя ядрами, у каждого из которых собственный кэш L1, а также глобальный кэш L2 на кристалле.
Предположим, что поток на core-1 хочет записать в память по адресу 0xabcd. Ниже приведены некоторые возможные последовательности событий.
Попадание в кэш
- В L1-1 есть данные в состоянии E или M.
- L1-1 производит запись. Всё готово.
- Ни в одном другом кэше нет данных, так что немедленная запись будет безопасной.
- Состояние строки кэша изменяется на M, поскольку она теперь изменена.
Промах локального кэша, попадание одноуровневого кэша
- В L1-1 есть данные в состоянии S.
- Это значит, что в другом одноуровневом кэше могут быть эти данные.
- Та же последовательность применяется, если в L1-1 вообще нет этих данных.
- L1-1 отправляет Request-For-Ownership в кэш L2.
- L2 смотрит по своему каталогу и видит, что в L1-2 сейчас есть эти данные в состоянии S.
- L2 отправляет snoop-invalidate в L1-2.
- L1-2 помечает данные как недействительные (I).
- L1-2 отправляет запрос Ack в L2.
- L2 отправляет Ack вместе с последними данными в L1-1.
- L2 проверяет, что в L1-1 эти данные хранятся в состоянии E.
- В L1-1 теперь последние данные, а также разрешение войти в состояние E.
- L1-1 осуществляет запись и изменяет состояние этих данных на M.
Теперь предположим, что поток на core-2 хочет считать с адреса 0xabcd. Ниже приведены некоторые возможные последовательности событий.
Попадание кэша
- L1-2 имеет данные в состоянии S, E или M.
- L1-2 считывает данные и возвращает в поток. Готово.
Промах локального кэша, промах кэша верхнего уровня
- L1-2 имеет данные в состоянии I (недействительное), то есть не может их использовать.
- L1-2 отправляет запрос Request-for-Share в кэш L2.
- В L2 тоже нет данных. Он считывает данные из памяти.
- L2 возвращает данные из памяти.
- L2 отправляет данные в L1-2 с разрешением войти в состояние S.
- L2 проверяет, что в L1-2 эти данные хранятся в состоянии S.
- L1-2 получает данные, сохраняет их в кэше и отправляет в поток.
Промах локального кэша, попадание кэша верхнего уровня
- В L1-2 есть данные в состоянии I.
- L1-2 отправляет запрос Request-for-S в кэш L2.
- L2 видит, что в L1-1 данные в состоянии S.
- L2 отправляет Ack в L1-2, вместе с данными и разрешением войти в состояние S.
- L1-2 получает данные, сохраняет их в кэше и отправляет в поток.
Промах локального кэша, попадание одноуровневого кэша
- В L1-2 есть данные в состоянии I.
- L1-2 отправляет запрос Request-for-S в кэш L2.
- L2 видит, что в L1-1 данные в состоянии E (или M).
- L2 отправляет snoop-share в L1-1
- L1-1 понижает состояние до S.
- L1-1 отправляет Ack в L2 вместе с модифицированными данными, если это применимо.
- L2 отправляет Ack в L1-2 вместе с данными и разрешением войти в состояние S.
- L1-2 получает данные, сохраняет их в кэше и отправляет в поток.
Выше приведены лишь некоторые из возможных сценариев. На самом деле существует много вариаций и нет двух одинаковых реализаций протокола. Например, в некоторых конструкциях используется состояние O/F. В некоторых есть кэши обратной записи, а другие используют сквозную запись. Некоторые используют snoop-трансляции, а другие — snoop-фильтр. В некоторых инклюзивные кэши, а в других — эксклюзивные. Вариации бесконечны, а мы даже не затронули буферы хранения (store-buffers)!
Кроме того, в приведённом примере рассматривается простой процессор всего с двумя уровнями кэширования. Но обратите внимание, что этот же протокол можно применить рекурсивно. Легко добавляется кэш L3, который, в свою очередь, координирует несколько кэшей L2, используя тот же протокол, что приведён выше. У вас может быть многопроцессорная система с «домашними агентами», которые координируют работу нескольких кэшей L3 на совершенно разных чипах.
В каждом сценарии каждому кэшу нужно взаимодействовать только с кэшем верхнего уровня (для получения данных/разрешений) и его потомками (для предоставления/отмены данных/разрешений). Всё это происходит невидимо для программного потока. С точки зрения софта подсистема памяти выглядит как единый, консистентный монолит… с очень переменными задержками.
Мы обсудили удивительную мощность и согласованность системы памяти компьютера. Остался один вопрос: если кэши настолько последовательны, то зачем вообще нужны volatile в языках вроде Java?
Это очень сложный вопрос, на который лучше ответить в другом месте. Позвольте только немного намекнуть. Данные в регистрах CPU не синхронизируются с данными в кэше/памяти. Программный компилятор выполняет всевозможные оптимизации, когда дело доходит до загрузки данных в регистры, записи их обратно в кэш и даже переупорядочивания инструкций. Всё это делается при условии, что код будет выполняться в одном потоке. Поэтому любые данные, подверженные риску состояния гонки, следует защищать вручную с помощью параллельных алгоритмов и языковых конструкций вроде atomic и volatile.
В случае квалификатора volatile в Java решение отчасти состоит в том, чтобы заставить все операции чтения/записи идти в обход локальных регистров, а вместо этого немедленно обращаться к кэшу для чтения/записи. Как только данные считаны/записаны в кэш L1, вступает в силу протокол аппаратного согласования. Он обеспечивает гарантированную согласованность во всех глобальных потоках. Таким образом, если несколько потоков читают/записывают в одну переменную, все они синхронизированы друг с другом. Вот как достигается координация между потоками всего за 1 наносекунду.
Влияние емкости кэш-памяти на производительность Core i5 третьего поколения
Сегодняшняя статья не является самостоятельным материалом — она просто продолжает исследование производительности трех поколений архитектуры Core в равных условиях (начатое в конце прошлого года и продолженное недавно). Правда, сегодня мы сделаем небольшой шаг в сторону — часто́ты ядер и кэш-памяти останутся теми же, что и ранее, а вот емкость последней уменьшится. Зачем это нужно? Мы использовали «полный» Core i7 двух последних поколений для чистоты эксперимента, тестируя его с включенной и отключенной поддержкой технологии Hyper-Threading, поскольку вот уже полтора года как Core i5 снабжаются не 8, а 6 МиБ L3. Понятно, что влияние емкости кэш-памяти на производительность не так уж велико, как иногда принято считать, но оно есть, и никуда от него не деться. К тому же, Core i5 являются более массовыми продуктами, чем Core i7, а в первом поколении по этому параметру их никто «не обижал». Зато раньше их чуть ограничивали по-другому: тактовая частота UnCore в i5 первого поколения составляла всего 2,13 ГГц, так что наш «Nehalem» — это не совсем представитель 700-й линейки на частоте 2,4 ГГц, а немного более быстрый процессор. Однако сильно расширять список участников и переделывать условия тестирования мы сочли излишним — все равно, как мы уже не раз предупреждали, тестирования этой линейки никакой новой практической информации не несут: реальные процессоры работают совсем в других режимах. А вот желающим досконально разобраться во всех тонких моментах, как нам кажется, такое тестирование будет интересно.
Конфигурация тестовых стендов
Процессор | Nehalem | Nehalem HT | Ivy Bridge | Ivy Bridge 6M |
«Базовая» модель | Core i7-875K | Core i7-875K | Core i7-3770K | Core i5-3470 |
Технология пр-ва | 45 нм | 45 нм | 22 нм | 22 нм |
Частота ядра, ГГц | 2,4 | 2,4 | 2,4 | 2,4 |
Кол-во ядер/потоков вычисления | 4/4 | 4/8 | 4/4 | 4/8 |
Кэш L1, I/D, КБ | 32/32 | 32/32 | 32/32 | 32/32 |
Кэш L2, КБ | 4×256 | 4×256 | 4×256 | 4×256 |
Кэш L3, МиБ | 8 | 8 | 8 | 6 |
Частота UnCore, ГГц | 2,4 | 2,4 | 2,4 | 2,4 |
Мы решили ограничиться всего четырьмя процессорами, причем главных участников будет два: оба четырехъядерных Ivy Bridge, но с разной емкостью кэш-памяти третьего уровня. Третий — «Nehalem HT»: в прошлый раз по итоговому баллу он оказался почти идентичен «Ivy Bridge просто». И «просто Nehalem» который, как мы уже сказали, чуть-чуть быстрее настоящего Core i5 первого поколения, работающего на частоте 2,4 ГГц (из-за того, напомним, что в 700-й линейке частота UnCore была немного ниже), но не слишком радикально. Зато и сравнение интересно: с одной стороны — два шага улучшения микроархитекутры, с другой — кэш-память ограничили. Априори можно предположить, что первое в большинстве случаев перевесит, но вот насколько и вообще — как сопоставимы «первые» и «третьи» i5 (с поправкой на частоту UnCore, конечно, хотя если будет много желающих увидеть абсолютно точное сравнение, мы и его потом сделаем) — уже хорошая тема для исследования.
Системная плата | Оперативная память | |
LGA1155 | Biostar TH67XE (H67) | Corsair Vengeance CMZ8GX3M2A1600C9B (2×1333; 9-9-9-24) |
LGA1156 | ASUS P7H55-M Pro (H55) | Corsair Vengeance CMZ8GX3M2A1600C9B (2×1333; 9-9-9-24) |
Тестирование
Традиционно, мы разбиваем все тесты на некоторое количество групп и приводим на диаграммах средний результат по группе тестов/приложений (детально с методикой тестирования вы можете ознакомиться в отдельной статье). Результаты на диаграммах приведены в баллах, за 100 баллов принята производительность референсной тестовой системы iXBT.com образца 2011 года. Основывается она на процессоре AMD Athlon II X4 620, ну а объем памяти (8 ГБ) и видеокарта (NVIDIA GeForce GTX 570 1280 МБ в исполнении Palit) являются стандартными для всех тестирований «основной линейки» и могут меняться только в рамках специальных исследований. Тем, кто интересуется более подробной информацией, опять-таки традиционно предлагается скачать таблицу в формате Microsoft Excel, в которой все результаты приведены как в преобразованном в баллы, так и в «натуральном» виде.
Интерактивная работа в трёхмерных пакетах
Некоторое влияние емкости кэш-памяти есть, однако оно менее 1%. Соответственно, оба Ivy Bridge можно считать идентичными друг другу, ну а улучшения архитектуры позволяют новым Core i5 спокойно обгонять старые Core i7 точно также, как это делают новые Core i7.
Финальный рендеринг трёхмерных сцен
В данном случае, естественно, никакие усовершенствования не могут скомпенсировать увеличение количества обрабатываемых потоков, но сегодня для нас самым важным является не это, а полное отсутствие влияния емкости кэш-памяти на производительность. Вот Celeron и Pentium, как мы уже установили, разные процессоры, так что программы рендеринга чувствительны к емкости L3, однако лишь тогда, когда последнего мало. А 6 МиБ на четыре ядра, как видим, вполне достаточно.
Упаковка и распаковка
Естественно, эти задачи восприимчивы к емкости кэш-памяти, однако и здесь эффект от ее увеличения с 6 до 8 МиБ достаточно скромный: примерно 3,6%. Более интересно, на самом деле, сравнение с первым поколением — архитектурные улучшения позволяют новым i5 на равных частотах «громить» даже старые i7, но это в общем зачете: благодаря тому, что два теста из четырех однопоточные, а еще один двухпоточный. Сжатие данных силами 7-Zip, естественно, быстрее всего на «Nehalem HT»: восемь потоков всегда быстрее четырех сравнимой производительности. А вот если ограничиться всего четырьмя, то наш «Ivy Bridge 6М» проигрывает не только своему прародителю, но и старичку Nehalem: улучшения микроархитектуры полностью пасуют перед уменьшением емкости кэш-памяти.
Кодирование аудио
Несколько неожиданным оказался не размер разницы между двумя Ivy Bridge, а то, что она вообще есть. Правда настолько копеечная, что ее можно и на особенности округления или погрешности измерения списать.
Компиляция
Важны потоки, но важна и емкость кэш-памяти. Однако, как обычно, не слишком — порядка 1,5%. Более любопытно сравнение с первым поколением Core при отключенном Hyper-Threading: «по очкам» новенький Core i5 даже на равной частоте побеждает, но один из трех компиляторов (производства Microsoft, если быть точным) отработал на обоих процессорах за одинаковое время. Даже с преимуществом в 5 секунд у более старого — притом, что в этой программе у «полнокэшевого» Ivy Bridge результаты на 4 секунды лучше, чем у Nehalem. В общем, и здесь нельзя считать, что уменьшение емкости L3 как-то сильно повлияло на Core i5 второго и третьего поколения, но есть и нюансы.
Математические и инженерные расчёты
Опять менее 1% разницы со «старшим» кристаллом и опять убедительная победа над первым поколением во всех его видах. Что скорее правило, чем исключение для подобных малопоточных тестов, но почему бы в нем в очередной раз не убедиться? Особенно в таком вот рафинированном виде, когда (в отличие от тестов в штатном режиме) не мешает разница в частотах («стандартных» или появляющаяся из-за работы Turbo Boost).
Растровая графика
Но и при более полной утилизации многопоточности картина не всегда меняется. А емкость кэш-памяти не дает вовсе ничего.
Векторная графика
И здесь аналогично. Правда и потоков вычисления нужна всего парочка.
Кодирование видео
В отличие от этой группы, где, тем не менее, даже Hyper-Threading не позволяет Nehalem бороться на равных с последователями более новых поколений. А вот им не слишком мешает уменьшение емкости кэш-памяти. Точнее, практически вообще не мешает, поскольку разница опять менее 1%.
Офисное ПО
Как и следовало ожидать, никакого прироста производительности от увеличения емкости кэш-памяти (точнее, ее падения от уменьшения) нет. Хотя если посмотреть на подробные результаты, то видно, что единственный многопоточный тест этой группы (а именно распознавание текста в FineReader) выполняется примерно на 1,5% быстрее при 8 МиБ L3, нежели на 6 МиБ. Казалось бы — что такое 1,5%? С точки зрения практики — ничто. А вот с исследовательской точки зрения уже интересно: как видим, именно многопоточным тестам чаще всего не хватает кэш-памяти. В результате разница (пусть и небольшая) иногда находится даже там, где ее быть, вроде бы, не должно. Хотя ничего такого уж необъяснимого в этом нет — грубо говоря, в малопоточных тестах мы имеем 3-6 МиБ на поток, а вот в многопоточных там же получается 1,5 МиБ. Первого — много, а вот второго может оказаться и не совсем достаточно.
Java
Впрочем, Java-машина с такой оценкой не согласна, но и это объяснимо: как мы уже не раз писали, она очень хорошо оптимизирована вовсе не под х86-процессоры, а под телефоны и кофеварки, где ядер может быть много, но вот кэш-памяти очень мало. А иногда и ядер, и кэш-памяти мало — дорогие ресурсы как по площади кристалла, так и по энергопотреблению. И, если с ядрами и мегагерцами что-то сделать получается, то вот с кэшом все сложнее: в четырехъядерной Tegra 3 его, к примеру, всего 1 МиБ. Понятно, что JVM может «схрюпать» и больше (как и все системы с байт-кодом), что мы уже видели сравнивая Celeron и Pentium, но более 1,5 МиБ на поток ей если и может пригодиться, то не в тех задачах, которые вошли в SPECjvm 2008.
Игры
На игры у нас были большие надежды, поскольку к емкости кэш-памяти они нередко оказываются более требовательными чем даже архиваторы. Но бывает такое тогда, когда ее совсем мало, а 6 МиБ — как видим, достаточно. Да и, опять же, процессоры уровня четырехъядерных Core любых поколений даже на частоте 2,4 ГГц слишком мощное решение для используемых игровых приложений, так что узким местом явно будут не они, а прочие компоненты системы. Поэтому мы решили стряхнуть пыль с режимов с низким качеством графики — понятно, что для таких систем он слишком уж синтетичен, но у нас и все тестирование синтетическое 🙂
Когда не мешают всякие там видеокарты и прочее, разница между двумя Ivy Bridge достигает уже «безумных» 3%: и в этом случае можно не обращать внимания на практике, но для теории — немало. Больше вышло как раз только в архиваторах.
Многозадачное окружение
Где-то мы уже такое видели. Ну да — когда тестировали шестиядерные процессоры под LGA2011. И вот ситуация повторяется: нагрузка что ни на есть многопоточная, часть используемых программ до кэш-памяти «жадная», а вот ее увеличение только снижает среднюю производительность. Чем это можно объяснить? Разве что тем, что усложняется арбитраж и увеличивается количество промахов. Причем, заметим, происходит такое только тогда, когда емкость L3 относительно велика и одновременно работающих потоков вычисления не менее четырех — в бюджетном сегменте совсем другая картина. Во всяком случае, как показало наше недавнее тестирование Pentium и Celeron, для двухъядерных процессоров увеличение L3 с 2 до 3 МиБ добавляет 6% производительности. А вот четырех- и шестиядерным не дает, мягко говоря ничего. Даже менее, чем ничего.
Итого
Закономерный общий итог: поскольку нигде существенной разницы между процессорами с разным объемом L3 не обнаружилось, нет ее и в «общем и целом». Таким образом, расстраиваться по поводу уменьшения емкости кэш-памяти во втором и третьем поколении Core i5 поводов нет — предшественники первого поколения им все равно не конкуренты. Да и старые Core i7 в среднем тоже демонстрируют лишь аналогичный уровень производительности (разумеется, в основном за счет отставания в малопоточных приложениях — а так есть сценарии, с которыми в равных условиях они справляются быстрее). Но, как мы уже говорили, на практике реальные процессоры находятся далеко не в равных условиях по частотам, так что практическая разница между поколениями больше, чем можно получить в таких вот исследованиях.
Открытым остается лишь один вопрос: нам пришлось сильно снизить тактовую частоту для обеспечения равенства условий с первым поколением Core, но сохранятся ли замеченные закономерности в более близких к реальности условиям? Ведь из того, что четыре низкоскоростных потока вычислений не видят разницы между 6 и 8 МиБ кэш-памяти, не следует, что она не обнаружится в случае четырех высокоскоростных. Правда, не следует и обратного, так что для того, чтобы окончательно закрыть тему теоретических исследований, нам понадобится еще одна лабораторная работа, которой мы и займемся в следующий раз.
Влияние емкости кэш-памяти на производительность Core i5 третьего поколения
Одним из немаловажных факторов повышающих производительность процессора, является наличие кэш-памяти, а точнее её объём, скорость доступа и распределение по уровням.
Уже достаточно давно практически все процессоры оснащаются данным типом памяти, что ещё раз доказывает полезность её наличия. В данной статье, мы поговорим о структуре, уровнях и практическом назначении кэш-памяти, как об очень немаловажной характеристике процессора.
Что это такое
При выполнении любых вычислений (даже в режиме простоя компьютера, когда работают только системные службы) данные для обработки ЦП получает из оперативной памяти. Информация поступает небольшими блоками, после чего записывается промежуточный результат.
По характеристикам, а точнее скорости работы, самый медленный процессор многократно превосходит ОЗУ. В среднем, он шустрее в 15 раз. Добавьте сюда системную шину, которая может еще больше замедлять обработку данных. Получается совсем некрасивая картина: в таком режиме КПД системы слишком низок.
Хотя назначение MB — связать между собой все компоненты компа, часто рациональнее использовать дополнительную «Приблуду», которая возьмет на себя часть несвойственных функций.
Именно к таким технологиям относится кэш, который еще называют сверхоперативной памятью. Реализован он в виде отдельных микросхем типа SRAM. Благодаря такой особенности все промежуточные данные перезаписываются максимально быстро. Это благоприятно влияет на производительность работы в целом.
Главная задача кэша — выравнивание дисбаланса скорости передачи данных. Он имеет небольшой объем, так как промежуточные данные сами по себе в памяти много места не занимают.
Назначение и тип кэша
Кэшем зовут промежуточный буфер обмена с быстрым доступом, где содержится информация, которая может быть повторно запрошена. А процесс записи данных в кэш принято называть кэшированием. Извлечение данных из кэша занимает меньше времени, в сравнении с медленной памятью или из удаленных источников. Поэтому главное назначение кэша – снизить временную задержку при доступе к информации и увеличить быстродействие устройства, программы или операционной системы.
Кэширование и кэшированные данные
Выделяют два типа кэша:
- Аппаратный.
- Программный.
Аппаратная реализация
Аппаратный кэш используется в электронных компонентах и мобильных устройствах – жестком диске, процессоре ПК или смартфона. В память с быстрым доступом помещаются и извлекаются копии часто используемых инструкций и записей. Причем если в HDD в качестве хранилища используется микросхема, то у центрального процессора для ПК или в составе мобильной платформы, кэш состоит из нескольких уровней именуемых L1, L2, L3 и т.д. Объем каждого последующего уровня кэша больше, при этом пропускная способность заметно ниже.
- Системный кэш: что это, для чего используется и как изменить его размер в Windows?
Организацию кэш-памяти центрального процессора для ПК рассмотрим на примере Intel Xeon E3-1240. Объем кэша L1 – 32 КБ на ядро, L2 – 256 КБ на ядро, а L3 – 8 МБ на все ядра. У более современных и многоядерных процессоров, объем памяти больше. Скорость чтения, записи и копирования, у каждого последующего уровня на 30-50% меньше. При этом пропускная способность самого медленного кэша L3 – в 6-8 раз выше, в сравнении с оперативной памятью.
Пропускная способность аппаратного кэша.
Принцип работы кэша следующий. Благодаря заложенным алгоритмам, процессор заранее просчитывает, какой тип данных потребуется, для чего извлекает заранее подготовленные записи. Если же расчет выполнен неверно или нужная запись отсутствует, цепочка действий выстраивается заново, а поиск требуемых данных выполняется в удаленных разделах памяти – кэш L2 или L3, оперативная память или HDD. В обоих случаях продолжительность обработки запроса увеличивается. Читайте подробнее о назначении кэша в процессоре.
Для наглядного понимания работы кэш-памяти и скорости работы, представим в качестве задачи – приготовление салата в реальной жизни. Держа в уме рецепт, вы поочередно добавляете нужные ингредиенты, что находятся на столе. Если требуемого ингредиента под рукой нет, поиск переносится в другое место. Когда выяснится, что нужного компонента дома нет, вам придется сходить в ближайший магазин или съездить в отдаленный супермаркет, а затем вернуться и закончить приготовление. Именно такой путь проделывает процессор при выполнении каждой задачи.
Стоит отметить, что увеличить объем аппаратного кэша невозможно. И если для процессора это не критично, так как производитель устанавливает оптимальный объем памяти, то для жесткого диска лишней кэш память не будет. Поскольку часть памяти отведено под прошивку и микро ОС. Оптимальный объем 128 или 256 МБ.
Программная реализация
Программный кэш представляет собой область данных на диске, обычно папку, где приложения или операционная система хранит часто используемые файлы. При повторном запросе со стороны пользователя, программа ищет данные в кэше для оперативной загрузки. Если информация отсутствует или устарела, загрузка производится из внешних источников – интернета.
Стоит отметить, что на скорость считывания и загрузки данных из кэша влияет тип накопителя. Наивысшую скорость обеспечивают твердотельные диски – SSD, среднюю скорость демонстрируют гибридные решения SSD и HDD – HHD, наименьшая скорость у диска HDD.
Кэш в разных устройствах
Контроллер кэша
Это — один из логических блоков. Он отвечает за обмен данными сверх памяти с ядрами ЦП. При обращении одного из ядер контроллер проверяет, есть ли нужные данные в кэше. При положительной проверке происходит так называемое попадание, а необходимая информация «переваривается» внутри самого CPU.
Задача контроллера — сделать так, чтобы промахи происходили как можно реже, то есть чтобы в кэше всегда были необходимые промежуточные данные для обработки. Но это зависит уже не только от CPU, но и от того, как разработчики приложения оптимизировали код.
Последовательность работы следующая: проверка сверх памяти на наличие необходимых данных и их перемещение к одному из ядер, или же обращение к оперативке с аналогичным запросом.
Архитектура ассоциативности кэш-памяти
Архитектура ассоциативности кэша определяет способ, при помощи которого данные из ОЗУ отображаются в кэше. Существуют следующие основные варианты архитектуры ассоциативности кэширования:
- Кэш с прямым отображением – определенный участок кэша отвечает за определенный участок ОЗУ
- Полностью ассоциативный кэш – любой участок кэша может ассоциироваться с любым участком ОЗУ
- Смешанный кэш (наборно-ассоциативный)
На различных уровнях кэша обычно могут использоваться различные архитектуры ассоциативности кэша. Кэширование с прямым отображением ОЗУ является самым быстрым вариантом кэширования, поэтому эта архитектура обычно используется для кэшей большого объема. В свою очередь, полностью ассоциативный кэш обладает меньшим количеством ошибок кэширования (промахов).
Сверхпамять
В современных процессорах используется многоуровневый кэш. По сравнению с прочими типами ОЗУ SRAM имеет намного большую скорость работы. Однако этот параметр зависит и от объема памяти каждого из таких блоков. По этой причине используется кэш, собранный из нескольких модулей SRAM. Его разделяют на уровни.
- L1. Память первого уровня. Наименьшая по объему, но самая быстрая микросхема. Как правило, не более пары десятков килобайт. Работает почти без задержек. Используется для хранения наиболее часто используемых данных. Количество микросхем обычно равно количеству ядер, а каждое ядро имеет доступ только к своей микросхеме.
- L2. Память второго уровня. Чуть более медленный модуль, но больший по объему (несколько сотен килобайт). Хранит реже используемую информацию.
- L3. Память третьего уровня. Самая медленная, но самая объемная микросхема. Счет уже идет на десятки мегабайт. В отличие от предыдущих, эта память общая для всех ядер. Служит для хранения информации с низкой вероятностью запроса.
Зачем же нужен кэш процессору?
А теперь представьте, что библиотекарю надоело постоянно носиться туда-сюда с книгами, которые постоянно у неё требуют из года в год, изо дня в день. Он обзавёлся большой тумбой, где хранит наиболее часто запрашиваемые книги и учебники. Остальные, что положены, конечно, так и продолжают храниться на прежних полках. Но эти – всегда под рукой. Сколько же времени он сэкономил этой тумбой и себе, и остальным. Это и есть кэш.
Влияние на производительность системы
В современных процессорах количество кэш-попаданий превышает 90%. Это справедливо по отношению к задачам, не требующих высокой производительности. При повышении нагрузки количество промахов увеличивается.
Практика показала, что повышение тактовой частоты влияет лучше на работу системы, чем увеличение кэша. Однако такое решение влечет за собой увеличение стоимости CPU. «Потолок» здесь — 4 ГГц. Дальше каждая десятая доля герца сопряжена с ростом цены в геометрической прогрессии.
Использование трехуровневого кэша увеличивает производительность CPU на 10%. Этот эффект больше всего ощущается при использовании архиваторов (в наше время не самый актуальный софт), при обработке видео и видеоиграх. В «легких» приложениях — например, офисном пакете или интернет-браузере, эффективность кеша чуть более нуля.
Кэш будет продолжать расти?
Вряд ли. Погоня за частотой процессора тоже продолжалась недолго, и производители нашли другие пути увеличения мощности. Также и с кэшем. Говоря конкретно, объём и количество уровней бесконечно раздувать нельзя. Кэш не должен превращаться в ещё одну планку оперативной памяти с медленной скоростью доступа к ней или превращать размеры процессора до уровня в половину материнской платы. Ведь скорость доступа к данным – это, прежде всего, энергопотребление и затрата производительности самого процессора. Также стали учащаться промахи кэша (в противоположность к попаданию кэша), когда процессор обращается к кэшированной памяти за данными, которых там не оказывается. Данные в кэше постоянно обновляются, используя различные алгоритмы, чтобы вероятность попадания кэша усилить.
Успехов
Как узнать объем кеша и как его увеличить
Самый простой способ — узнать модель процессора, нажав меню пуск и кликнув ПКМ по значку «Этот компьютер», а затем выбрав пункт «Свойства». Все характеристики «камня» можно найти на официальном сайте производителя.
Увы, но увеличить кеш процессора не получится. Девайс поставляется «как есть» и такому апгрейду не подвергается. Единственный приемлемый способ — купить CPU с большим объемом сверхпамяти.
Также советую почитать «Чем отличается процессор i3 от i5», «Серверный процессор в домашнем компьютере» и «Как устроен процессор внутри». Буду признателен, если вы поделитесь этой публикацией в социальных сетях. До завтра!
С уважением, автор блога Андрей Андреев.
Как сохранить командный дух в самоизоляции
Интегрированный набор приложений Adobe Spark, доступный в Creative Cloud, поможет сделать вашу совместную работу по-настоящему яркой и творческой.
ИТ-календарь
- Вебинар «Продвижение ИТ-продуктов в b2b: какие инструменты использовать в 2020-м?» 20 июля 2020
- BIM-завтрак «Технологии цифрового девелопмента. Инструменты, процессы, кейсы» 22 июля 2020
- Роботизация процессов при помощи инструмента Micro Focus RPA 24 июля 2020
- Вебинар «Как сократить расходы на ИТ с помощью мониторинга?» 28 июля 2020
- Вебинар «Топ-5 способов сократить расходы на базы данных в 2 раза» 31 июля 2020
Популярные теги
- Цифровая экономика
- Цифровая трансформация
- Рунет
- Робототехника
- Облачные сервисы
- Минкомсвязь
- Машинное обучение
- Криптовалюта
- Кибербезопасность
- Искусственный интеллект
- Интернет вещей
- Импортозамещение
- Виртуальная реальность
- Большие данные
- Блокчейн
- DM2019
- Agile
- Все темы
Краткое резюме
- Существует аппаратный и программный кэш.
- Аппаратный кэш использует собственную память с быстрым доступом. Программный кэш – хранит данные в папке на диске.
- Аппаратный кэш способствует увеличению производительности компьютера, за счет уменьшения обращений к оперативной и дисковой памяти. Программный кэш ускоряет загрузку ранее просмотренной информации.
- Аппаратное увеличение кэш-памяти недоступно. Объем программной кэш-памяти ограничено свободным пространством на диске.
- Для освобождения памяти и увеличения быстродействия системы, программный кэш рекомендуется периодически очищать.
- Кэширование – процесс создания и сохранение в памяти копий файлов.
- Кэшированные данные – сохраненные копии файлов программ, приложений, страниц и др.
Схемы записи информации в кэш
Многоуровневая структура памяти процессора обуславливает принцип работы работы с кэшем. Но все-таки первым, к кому обращается ЦП, является реестр. Если нужной информации там не обнаружено, то в зону поиска включается L1.
Для упрощения процедуры поиска информации она разделяется на отдельные блоки. Каждый из которых индексируется тематическим тегом и битом актуальности. Такая метка предназначена для основной и для кэш памяти. Порядок выполнения запроса по тегу такой:
- сначала изучается содержимое L1, и, если обнаруживаются нужные данные, то это событие называется попаданием. Я полагаю, вы догадываетесь, что объем кэша на каждом из уровней позволяет хранить больше разной информации. И влияет на коэффициент попаданий, который в идеале должен быть на уровне 90%;
- при отсутствии нужных тегов в L1 поиск продолжается в L2, далее, при неудачной попытке, в L3;
- если и там не обнаружено данных с нужным тегом, то ЦПУ уже обращается к RAM. Последней «инстанцией», где можно найти всю используемую информацию, является жесткий диск.
Все запросы процессора изначально обрабатываются контроллером кэша. Который уже обращается к SRAM или другим тирам памяти.
Вывод
В статье мы детально описали, что такое кэш. В чем различия, а так же как устроена работа кэш-памяти. Промежуточный буфер обмена информацией способствует повышению быстродействия и производительности. При этом программный кэш лучше очищать несколько раз в год, что бы исключить переполнения и замедления работы компьютера или телефона.
Какие у вас есть вопросы? Задавайте интересующий вас вопрос в комментариях.
Категория: Периферия
Выбирая процессор, рядовой покупатель в первую очередь смотрит на такие характеристики, как количество ядер и тактовую частоту. Но есть и ещё один важный параметр, который следует учитывать при покупке — объем кэш памяти.
Итак, насколько важна эта характеристика и как влияет на скорость вычислений?
Количество ядер процессора
С появлением процессоров, число ядер в которых больше одного, эта характеристика стала одной из важнейших для определения его производительности. Время процессоров, имеющих одно ядро, уже давно прошло, даже просто найти их в продаже сейчас вряд ли возможно. Само собой, число ядер процессора должно увеличиваться с ростом количества задач, для которых он приобретается. Для небольших программ и серфинга по интернету вам с лихвой хватит самого простого двухъядерного процессора.
А если мы говорим о профессиональной работе в каких-либо графических редакторах или других приложениях, для работоспособности которых нужен мощный компьютер, здесь лучше внимательно присмотреться к 4-х или даже 8-ми ядерным процессорам. Их производительности вам будет достаточно для любых задач.
Алгоритмы замещения
Далее рассмотрим порядок, в соответствии с которым записываются данные в кэш. Обычно это блок информации определенного размера, который или располагается в свободном месте. Или, в случае отсутствия такового, замещает собой ранее записанные данные. Что убирать или какой информацией жертвовать в этом случае определяют алгоритмы замещения, которые бывают следующих типов:
- Least Recently Used (LRU) – убирают то, что дольше всего было невостребованным;
- Least Frequently Used (LFU) – замещают, информацию которую использовали реже остальной;
- Most Recently Used (MRU) – вытесняют буфер, используемый последним;
- Adaptive Replacement Cache (ARC) – совмещение LRU и LFU алгоритмов;
Кэш память и её предназначение в процессоре. На что влияет кэш процессора L1 L2 L3 Что такое кеш память 3 уровня
Насколько
важен кэш L3 для процессоров AMD?
Действительно,
имеет смысл оснащать многоядерные
процессоры выделенной памятью, которая
будет использоваться совместно всеми
доступными ядрами. В данной роли быстрый
кэш третьего уровня (L3) может существенно
ускорить доступ к данным, которые
запрашиваются чаще всего. Тогда ядрам,
если существует такая возможность, не
придётся обращаться к медленной основной
памяти (ОЗУ, RAM).
По крайней мере, в
теории. Недавно AMD анонсировала процессор
Athlon II X4, представляющий собой модель
Phenom II X4 без кэша L3, намекая на то, что он
не такой и необходимый. Мы решили напрямую
сравнить два процессора (с кэшем L3 и
без), чтобы проверить, как кэш влияет на
производительность.
Как работает кэш?
Перед тем, как мы
углубимся в тесты, важно понять некоторые
основы. Принцип работы кэша довольно
прост. Кэш буферизует данные как можно
ближе к вычислительным ядрам процессора,
чтобы снизить запросы CPU в более отдалённую
и медленную память. У современных
настольных платформ иерархия кэша
включает целых три уровня, которые
предваряют доступ к оперативной памяти.
Причём кэши второго и, в частности,
третьего уровней служат не только для
буферизации данных. Их цель заключается
в предотвращении перегрузки шины
процессора, когда ядрам необходимо
обменяться информацией.
Попадания и
промахи
Эффективность
архитектуры кэшей измеряется процентом
попаданий. Запросы данных, которые могут
быть удовлетворены кэшем, считаются
попаданиями. Если данный кэш не содержит
нужные данные, то запрос передаётся
дальше по конвейеру памяти, и засчитывается
промах. Конечно, промахи приводят к
большему времени, которое требуется
для получения информации. В результате
в вычислительном конвейере появляются
«пузырьки» (простои) и задержки.
Попадания, напротив, позволяют поддержать
максимальную производительность.
Запись в кэш,
эксклюзивность, когерентность
Политики замещения
диктуют, как в кэше освобождается место
под новые записи. Поскольку данные,
записываемые в кэш, рано или поздно
должны появиться в основной памяти,
системы могут делать это одновременно
с записью в кэш (write-through) или могут
маркировать данные области как «грязные»
(write-back), а выполнять запись в память
тогда, когда она будет вытесняться из
кэша.
Данные в нескольких
уровнях кэша могут храниться эксклюзивно,
то есть без избыточности. Тогда вы не
найдёте одинаковых строчек данных в
двух разных иерархиях кэша. Либо кэши
могут работать инклюзивно, то есть
нижние уровни кэша гарантированно
содержат данные, присутствующие в
верхних уровнях кэша (ближе к процессорному
ядру). У AMD Phenom используются эксклюзивный
кэш L3, а Intel следует стратегии инклюзивного
кэша. Протоколы когерентности следят
за целостностью и актуальностью данных
между разными ядрами, уровнями кэшей и
даже процессорами.
Объём кэша
Больший по объёму
кэш может содержать больше данных, но
при этом наблюдается тенденция увеличения
задержек. Кроме того, большой по объёму
кэш потребляет немалое количество
транзисторов процессора, поэтому важно
находить баланс между «бюджетом»
транзисторов, размером кристалла,
энергопотреблением и
производительностью/задержками.
Ассоциативность
Записи в оперативной
памяти могут привязываться к кэшу
напрямую (direct-mapped), то есть для копии
данных из оперативной памяти существует
только одна позиция в кэше, либо они
могут быть ассоциативны в n-степени
(n-way associative), то есть существует n возможных
расположений в кэше, где могут храниться
эти данные. Более высокая степень
ассоциативности (вплоть до полностью
ассоциативных кэшей) обеспечивает
наилучшую гибкость кэширования, поскольку
существующие данные в кэше не нужно
переписывать. Другими словами, высокая
n-степень ассоциативности гарантирует
более высокий процент попаданий, но при
этом увеличивается задержка, поскольку
требуется больше времени на проверку
всех этих ассоциаций для попадания. Как
правило, наибольшая степень ассоциации
разумна для последнего уровня кэширования,
поскольку там доступна максимальная
ёмкость, а поиск данных за пределами
этого кэша приведёт к обращению процессора
к медленной оперативной памяти.
Приведём несколько
примеров: у Core i5 и i7 используется 32 кбайт
кэша L1 с 8-way ассоциативностью для данных
и 32 кбайт кэша L1 с 4-way для инструкций.
Понятно желание Intel, чтобы инструкции
были доступны быстрее, а у кэша L1 для
данных был максимальный процент
попаданий. Кэш L2 у процессоров Intel
обладает 8-way ассоциативностью, а кэш L3
у Intel ещё «умнее», поскольку в нём
реализована 16-way ассоциативность для
максимизации попаданий.
Однако AMD следует
другой стратегии с процессорами Phenom II
X4, где используется кэш L1 с 2-way
ассоциативностью для снижения задержек.
Чтобы компенсировать возможные промахи
ёмкость кэша была увеличена в два раза:
64 кбайт для данных и 64 кбайт для инструкций.
Кэш L2 имеет 8-way ассоциативность, как и
у дизайна Intel, но кэш L3 у AMD работает с
48-way ассоциативностью. Но решение выбора
той или иной архитектуры кэша нельзя
оценивать без рассмотрения всей
архитектуры CPU. Вполне естественно, что
практическое значение имеют результаты
тестов, и нашей целью как раз была
практическая проверка всей этой сложной
многоуровневой структуры кэширования.
Оказался у меня на руках процессор i5 2400. И так как у меня есть 2600k, у которого L3 кэш 8mb против 6mb у i5 — захотел сравнить их в играх и приложениях. Время было ограничено, поэтому тестов будет не так много. Но чтобы добавить еще больше информации, я поигрался с памятью и смоделировал три ситуации с i5 2400.
1. Конфиг с самой дешевой материнской платой на чипсете с индексом «H», где отсутствует возможность разгона и частота всех ядер будет 3200MHz. Оперативная память будет работать на частоте 1333MHz при таймингах 9:9:9:27
2. Конфиг с материнской платой на чипсете с индексами «P» и «Z» у которых есть возможность поднять множитель процессоров с поддержкой турбобуста на четыре пункта. В моем случае с процессором i5 2400 множитель с 32 можно поднять до 36, тем самым получив частоту в 3600MHz. Разогнав еще и шину, я получил 3800MHz, что на 600MHz больше чем в первом конфиге. Оперативная память в данном случае будет работать на частоте 2252MHz при таймингах 9:9:9:27
3. Конфиг точно такой же как и второй, но с частотой оперативной памяти в 1689MHz на таймингах 9:9:9:27
4. Конфиг с процессором 2600k на частоте 3,80GHz, отключенным HT и оперативной памятью 2252MHz с таймингами 9:9:9:27.
Тестовые комплектующие:
Intel Core i7 2600K
Intel Core i5 2400
Материнская плата: ASUS P8Z77-V Deluxe
Оперативная память: 16GB DDR3 CRUCIAL Ballistix Elite
Видеокарта: GTX 780 Ti 1279|7800 Драйвера: 381.89
Блок питания: APS-850C 850W
Операционная система: Windows 8.1 x64 чистая (35 процессов после запуска системы)
i5 2400 3200MHz DDR3 1333MHz
i5 2400 3800MHz DDR3 1689MHz
i5 2400 3800MHz DDR3 2252MHz
i7 2600k 3800MHz 2252MHz
NVIDIA GTX 780 Ti 1279|7800
Результаты тестирования:
3DMark 2013 CPU Score
Прирост как от кэша так и от оперативной памяти минимальный.
_________________________________________________________________________________________________
Cinebench R15
В Cinebench R15 наблюдаем аналогичную картину.
_________________________________________________________________________________________________
LinX 0.6.5 Объем задачи: 25000
В LinX также прирост дает только разгон процессора
_________________________________________________________________________________________________
x264 FHD Benchmark
И снова прирост на уровне погрешности.
_________________________________________________________________________________________________
Winrar v4.20
И вот наконец получаем прирост от кэша порядка 6% и от памяти около 15%
_________________________________________________________________________________________________
Battlefield 1 SinglePlayer
Разрешение:
1280×720
Шкала разрешения:
100%
Качество текстур:
низ. / сред. / выс. /
ультра
Фильтрация текстур:
низ. / сред. / выс. /
ультра
Качество освещения:
низ. / сред. / выс. /
ультра
Качество эффектов:
низ. / сред. / выс. /
ультра
Качество постобработки:
низ. / сред. / выс. /
ультра
Качество сетки:
низ. / сред. / выс. /
ультра
Качество ландшафта:
низ. / сред. / выс. /
ультра
Качество травы:
низ. / сред. / выс. /
ультра
Качество сглаживания:
нет
/ FXAA (среднее) / FXAA (высокое) / TAA
Объемный свет:
нет / SSAO /
HBAO
Небольшой прирост от L3 кэша есть.
_________________________________________________________________________________________________
Crysis 3 Добро пожаловать в джунгли
Разрешение:
1280×720
Сглаживание:
откл.
Разрешение текстур:
низк. / средн. / высок. /
макс.
Эффекты:
низк. / средн. / высок. /
макс.
Объект:
низк. / средн. / высок. /
макс.
Частицы:
низк. / средн. / высок. /
макс.
Постобработка:
низк. / средн. / высок. /
макс.
Затенение:
низк. / средн. / высок. /
макс.
Тени:
низк. / средн. / высок. /
макс.
Вода:
низк. / средн. / высок. /
макс.
Анизотропный фильтр:
1x / 2x / 4x / 8x /
16x
Степень размытости:
откл
Блики:
да
/ нет
Одна из самых требовательных к процессору сцен в игре. Прирост только от частоты процессора. Загрузка 780Ti в этой сцене даже на i7 не превысила 50%
_________________________________________________________________________________________________
Grand Theft Auto V Встроенный бенчмарк (Последняя сцена)
Разрешение:
1280×720
Версия DirectX:
11
Сглаживание FXAA:
выкл
/ вкл
Сглаживание MSAA:
выкл
/ x2 / x4 / x8
Населенность города:
max
Разновидность населения:
max
Фокусировочная шкала:
max
Качество текстур:
стандарт / высокое /
оч.высокое
Качество шейдеров:
стандарт / высокое /
оч.высокое
Качество теней:
стандарт / высокое /
оч.высокое
Качество отражений:
высшая степень
MSAA для отражений:
выкл
/ x2 / x4 / x8
Качество воды:
стандарт / высокое /
оч.высокое
Качество частиц:
стандарт / высокое /
оч.высокое
Качество травы:
стандарт / высокое / оч.высокое /
высшая степень
Мягкие тени:
резко / мягко / мягче / макс.мягко / AMD CHS /
NVIDIA PCSS
Настройка спецэффектов:
стандарт / высокая / оч.высокая /
высшая степень
Степень размытия при движении:
min
Эффект глубины резкости:
выкл
/ вкл
Анизотропная фильтрация:
x16
Затенение AO:
выкл / стандарт /
высокое
Тесселяция:
выкл / стандарт / высокая /
оч.высокая
Дополнительные настройки:
Длинные тени:
выкл /
вкл
Тени высокого разрешения:
выкл /
вкл
Подгрузка более детализированных текстур во время полета:
выкл /
вкл
Увеличение расстояния подгрузки более детализированных объектов:
max
Длина теней:
max
В этой игре определенно есть прирост и от памяти и от кэша. Очень хороший прирост i5 2400 3,80GHz относительно стока 3,20GHz.
_________________________________________________________________________________________________
Mass Effect Andromeda
Разрешение:
1280×720
Сглаживание:
откл.
Зернистость:
выкл /
вкл
Хроматические аберрации:
выкл /
вкл
Качество текстур:
ультра
Рассеянное затенение:
выкл / SSAO / HBAO /
полное HBAO
Качество постобработки:
низкое / среднее / высокое /
ультра
Качество текстур:
низкое / среднее / высокое /
ультра
Качество освещения:
низкое / среднее / высокое /
ультра
Качество теней:
низкое / среднее / высокое /
ультра
Качество эффектов:
низкое / среднее / высокое /
ультра
Качество моделей:
низкое / среднее / высокое /
ультра
Качество шейдеров:
низкое /
высокое
Качество ландшафта:
низкое / среднее / высокое /
ультра
Качество растений:
низкое / среднее / высокое /
ультра
В этой сцене ни один не раскрыл полностью 780Ti.
_________________________________________________________________________________________________
World Of Tanks 0.9.18
Карта: Перевал
Сглаживание:
отк
/ вкл
Графика:
стандартная /
улучшенная
Качество текстур:
низко / средне / высоко /
максимум
Качество освещения:
максимум
Качество теней:
выключено / средне / высоко /
максимум
Трава в снайперском режиме:
выкл /
вкл
Качество доп. эффектов:
выключено / низко / средне / высоко /
максимум
Доп.эффекты в снайперском режиме:
высоко
Количество растительности:
выключено / низко / средне / высоко /
максимум
Постобработка:
выключено / низко / средне / высоко /
максимум
Эффекты из-под гусениц:
выкл /
вкл
Качество ландшафта:
минимум / низко / средне / высоко /
максимум
Качество воды:
низко / средне / высоко /
максимум
Качество декалей:
выключено / низко / средне / высоко /
максимум
Детализация объектов:
низко / средне / высоко /
максимум
Детализация деревьев:
низко / средне / высоко /
максимум
Дальность прорисовки:
низко / средне / высоко /
максимум
Качество размытия в движении:
выключено / низко / средне /
высоко
Д
инамическое изменение качества эффектов:
выкл /
вкл
Следы гусениц:
выкл /
вкл
Вывод: Некоторые обзорщики с Youtube просто отключают HT, делая из I7 «искусственный» i5, но с большим кэшом… и говорят что разницы нет. Но все же в некоторых играх дополнительный кэш дает прирост.
И в целом разгон стокового i5 2400 дает очень сильный прирост, но тогда придется потратится на материнскую плату.
Компьютерные процессоры сделали значительный рывок в развитии за последние несколько лет. Размер транзисторов с каждым годом уменьшается, а производительность растет. При этом закон Мура уже становится неактуальным. Что касается производительности процессоров, то следует учитывать, не только количество транзисторов и частоту, но и объем кэша.
Возможно, вы уже слышали о кэш памяти когда искали информацию о процессорах. Но, обычно, мы не обращаем много внимания на эти цифры, они даже не сильно выделяются в рекламе процессоров. Давайте разберемся на что влияет кэш процессора, какие виды кэша бывают и как все это работает.
Если говорить простыми словами, то кэш процессора это просто очень быстрая память. Как вы уже знаете, у компьютера есть несколько видов памяти. Это постоянная память, которая используется для хранения данных, операционной системы и программ, например, 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. Рынок процессоров развивается куда быстрее, чем когда-либо. Архитектура кэша будет идти в ногу с постоянно растущей мощностью процессоров.
Кроме того, многое делается для устранения узких мест, которые есть у современных компьютеров. Уменьшение задержки работы с памятью одна из самых важных частей этой работы. Будущее выглядит очень многообещающе.
Похожие записи.
Одним из немаловажных факторов повышающих производительность процессора, является наличие кэш-памяти, а точнее её объём, скорость доступа и распределение по уровням.
Уже достаточно давно практически все процессоры оснащаются данным типом памяти, что ещё раз доказывает полезность её наличия. В данной статье, мы поговорим о структуре, уровнях и практическом назначении кэш-памяти, как об очень немаловажной характеристике процессора
.
Что такое кэш-память и её структура
Кэш-память – это сверхбыстрая память используемая процессором, для временного хранения данных, которые наиболее часто используются. Вот так, вкратце, можно описать данный тип памяти.
Кэш-память построена на триггерах, которые, в свою очередь, состоят из транзисторов. Группа транзисторов занимает гораздо больше места, нежели те же самые конденсаторы, из которых состоит оперативная память
. Это тянет за собой множество трудностей в производстве, а также ограничения в объёмах. Именно поэтому кэш память является очень дорогой памятью, при этом обладая ничтожными объёмами. Но из такой структуры, вытекает главное преимущество такой памяти – скорость. Так как триггеры не нуждаются в регенерации, а время задержки вентиля, на которых они собраны, невелико, то время переключения триггера из одного состояния в другое происходит очень быстро. Это и позволяет кэш-памяти работать на таких же частотах, что и современные процессоры.
Также, немаловажным фактором является размещение кэш-памяти. Размещена она, на самом кристалле процессора, что значительно уменьшает время доступа к ней. Ранее, кэш память некоторых уровней, размещалась за пределами кристалла процессора, на специальной микросхеме SRAM где-то на просторах материнской платы. Сейчас же, практически у всех процессоров, кэш-память размещена на кристалле процессора.
Для чего нужна кэш-память процессора?
Как уже упоминалось выше, главное назначение кэш-памяти – это хранение данных, которые часто используются процессором. Кэш является буфером, в который загружаются данные, и, несмотря на его небольшой объём, (около 4-16 Мбайт) в современных процессорах
, он дает значительный прирост производительности в любых приложениях.
Чтобы лучше понять необходимость кэш-памяти, давайте представим себе организацию памяти компьютера в виде офиса. Оперативная память будет являть собою шкаф с папками, к которым периодически обращается бухгалтер, чтобы извлечь большие блоки данных (то есть папки). А стол, будет являться кэш-памятью.
Есть такие элементы, которые размещены на столе бухгалтера, к которым он обращается в течение часа по несколько раз. Например, это могут быть номера телефонов, какие-то примеры документов. Данные виды информации находятся прямо на столе, что, в свою очередь,увеличивает скорость доступа к ним.
Точно так же, данные могут добавиться из тех больших блоков данных (папок), на стол, для быстрого использования, к примеру, какой-либо документ. Когда этот документ становится не нужным, его помещают назад в шкаф (в оперативную память), тем самым очищая стол (кэш-память) и освобождая этот стол для новых документов, которые будут использоваться в последующий отрезок времени.
Также и с кэш-памятью, если есть какие-то данные, к которым вероятнее всего будет повторное обращение, то эти данные из оперативной памяти, подгружаются в кэш-память. Очень часто, это происходит с совместной загрузкой тех данных, которые вероятнее всего, будут использоваться после текущих данных. То есть, здесь присутствует наличие предположений о том, что же будет использовано «после». Вот такие непростые принципы функционирования.
Уровни кэш-памяти процессора
Современные процессоры, оснащены кэшем, который состоит, зачастую из 2–ух или 3-ёх уровней. Конечно же, бывают и исключения, но зачастую это именно так.
В общем, могут быть такие уровни: L1 (первый уровень), L2 (второй уровень), L3 (третий уровень). Теперь немного подробнее по каждому из них:
Кэш первого уровня (L1)
– наиболее быстрый уровень кэш-памяти, который работает напрямую с ядром процессора, благодаря этому плотному взаимодействию, данный уровень обладает наименьшим временем доступа и работает на частотах близких процессору. Является буфером между процессором и кэш-памятью второго уровня.
Мы будем рассматривать объёмы на процессоре высокого уровня производительности Intel Core i7-3770K. Данный процессор оснащен 4х32 Кб кэш-памяти первого уровня 4 x 32 КБ = 128 Кб. (на каждое ядро по 32 КБ)
Кэш второго уровня (L2)
– второй уровень более масштабный, нежели первый, но в результате, обладает меньшими «скоростными характеристиками». Соответственно, служит буфером между уровнем L1 и L3. Если обратиться снова к нашему примеру Core i7-3770 K, то здесь объём кэш-памяти L2 составляет 4х256 Кб = 1 Мб.
Кэш третьего уровня (L3)
– третий уровень, опять же, более медленный, нежели два предыдущих. Но всё равно он гораздо быстрее, нежели оперативная память. Объём кэша L3 в i7-3770K составляет 8 Мбайт. Если два предыдущих уровня разделяются на каждое ядро, то данный уровень является общим для всего процессора. Показатель довольно солидный, но не заоблачный. Так как, к примеру, у процессоров Extreme-серии по типу i7-3960X, он равен 15Мб, а у некоторых новых процессоров Xeon, более 20.
Насколько важен кэш L3 для процессоров AMD?
Действительно, имеет смысл оснащать многоядерные процессоры выделенной памятью, которая будет использоваться совместно всеми доступными ядрами. В данной роли быстрый кэш третьего уровня (L3) может существенно ускорить доступ к данным, которые запрашиваются чаще всего. Тогда ядрам, если существует такая возможность, не придётся обращаться к медленной основной памяти (ОЗУ, RAM).
По крайней мере, в теории. Недавно AMD анонсировала процессор Athlon II X4
, представляющий собой модель Phenom II X4 без кэша L3, намекая на то, что он не такой и необходимый. Мы решили напрямую сравнить два процессора (с кэшем L3 и без), чтобы проверить, как кэш влияет на производительность.
Нажмите на картинку для увеличения.
Как работает кэш?
Перед тем, как мы углубимся в тесты, важно понять некоторые основы. Принцип работы кэша довольно прост. Кэш буферизует данные как можно ближе к вычислительным ядрам процессора, чтобы снизить запросы CPU в более отдалённую и медленную память. У современных настольных платформ иерархия кэша включает целых три уровня, которые предваряют доступ к оперативной памяти. Причём кэши второго и, в частности, третьего уровней служат не только для буферизации данных. Их цель заключается в предотвращении перегрузки шины процессора, когда ядрам необходимо обменяться информацией.
Попадания и промахи
Эффективность архитектуры кэшей измеряется процентом попаданий. Запросы данных, которые могут быть удовлетворены кэшем, считаются попаданиями. Если данный кэш не содержит нужные данные, то запрос передаётся дальше по конвейеру памяти, и засчитывается промах. Конечно, промахи приводят к большему времени, которое требуется для получения информации. В результате в вычислительном конвейере появляются «пузырьки» (простои) и задержки. Попадания, напротив, позволяют поддержать максимальную производительность.
Запись в кэш, эксклюзивность, когерентность
Политики замещения диктуют, как в кэше освобождается место под новые записи. Поскольку данные, записываемые в кэш, рано или поздно должны появиться в основной памяти, системы могут делать это одновременно с записью в кэш (write-through) или могут маркировать данные области как «грязные» (write-back), а выполнять запись в память тогда, когда она будет вытесняться из кэша.
Данные в нескольких уровнях кэша могут храниться эксклюзивно, то есть без избыточности. Тогда вы не найдёте одинаковых строчек данных в двух разных иерархиях кэша. Либо кэши могут работать инклюзивно, то есть нижние уровни кэша гарантированно содержат данные, присутствующие в верхних уровнях кэша (ближе к процессорному ядру). У AMD Phenom используются эксклюзивный кэш L3, а Intel следует стратегии инклюзивного кэша. Протоколы когерентности следят за целостностью и актуальностью данных между разными ядрами, уровнями кэшей и даже процессорами.
Объём кэша
Больший по объёму кэш может содержать больше данных, но при этом наблюдается тенденция увеличения задержек. Кроме того, большой по объёму кэш потребляет немалое количество транзисторов процессора, поэтому важно находить баланс между «бюджетом» транзисторов, размером кристалла, энергопотреблением и производительностью/задержками.
Ассоциативность
Записи в оперативной памяти могут привязываться к кэшу напрямую (direct-mapped), то есть для копии данных из оперативной памяти существует только одна позиция в кэше, либо они могут быть ассоциативны в n-степени (n-way associative), то есть существует n возможных расположений в кэше, где могут храниться эти данные. Более высокая степень ассоциативности (вплоть до полностью ассоциативных кэшей) обеспечивает наилучшую гибкость кэширования, поскольку существующие данные в кэше не нужно переписывать. Другими словами, высокая n-степень ассоциативности гарантирует более высокий процент попаданий, но при этом увеличивается задержка, поскольку требуется больше времени на проверку всех этих ассоциаций для попадания. Как правило, наибольшая степень ассоциации разумна для последнего уровня кэширования, поскольку там доступна максимальная ёмкость, а поиск данных за пределами этого кэша приведёт к обращению процессора к медленной оперативной памяти.
Приведём несколько примеров: у Core i5 и i7 используется 32 кбайт кэша L1 с 8-way ассоциативностью для данных и 32 кбайт кэша L1 с 4-way для инструкций. Понятно желание Intel, чтобы инструкции были доступны быстрее, а у кэша L1 для данных был максимальный процент попаданий. Кэш L2 у процессоров Intel обладает 8-way ассоциативностью, а кэш L3 у Intel ещё «умнее», поскольку в нём реализована 16-way ассоциативность для максимизации попаданий.
Однако AMD следует другой стратегии с процессорами Phenom II X4, где используется кэш L1 с 2-way ассоциативностью для снижения задержек. Чтобы компенсировать возможные промахи ёмкость кэша была увеличена в два раза: 64 кбайт для данных и 64 кбайт для инструкций. Кэш L2 имеет 8-way ассоциативность, как и у дизайна Intel, но кэш L3 у AMD работает с 48-way ассоциативностью. Но решение выбора той или иной архитектуры кэша нельзя оценивать без рассмотрения всей архитектуры CPU. Вполне естественно, что практическое значение имеют результаты тестов, и нашей целью как раз была практическая проверка всей этой сложной многоуровневой структуры кэширования.
Каждый современный процессор имеет выделенный кэш, которых хранит инструкции и данные процессора, готовые к использованию практически мгновенно. Этот уровень обычно называют первым уровнем кэширования или L1, впервые такой кэш появился у процессоров 486DX. Недавно процессоры AMD стали стандартно использовать по 64 кбайт кэша L1 на ядро (для данных и инструкций), а процессоры Intel используют по 32 кбайт кэша L1 на ядро (тоже для данных и инструкций)
Кэш первого уровня впервые появился на процессорах 486DX, после чего он стал составной функцией всех современных CPU.
Кэш второго уровня (L2) появился на всех процессорах после выхода Pentium III, хотя первые его реализации на упаковке были в процессоре Pentium Pro (но не на кристалле). Современные процессоры оснащаются до 6 Мбайт кэш-памяти L2 на кристалле. Как правило, такой объём разделяется между двумя ядрами на процессоре Intel Core 2 Duo, например. Обычные же конфигурации L2 предусматривают 512 кбайт или 1 Мбайт кэша на ядро. Процессоры с меньшим объёмом кэша L2, как правило, относятся к нижнему ценовому уровню. Ниже представлена схема ранних реализаций кэша L2.
У Pentium Pro кэш L2 находился в упаковке процессора. У последовавших поколений Pentium III и Athlon кэш L2 был реализован через отдельные чипы SRAM, что было в то время очень распространено (1998, 1999).
Последовавшее объявление техпроцесса до 180 нм позволило производителям, наконец, интегрировать кэш L2 на кристалл процессора.
Первые двуядерные процессоры просто использовали существующие дизайны, когда в упаковку устанавливалось два кристалла. AMD представила двуядерный процессор на монолитном кристалле, добавила контроллер памяти и коммутатор, а Intel для своего первого двуядерного процессора просто собрала два одноядерных кристалла в одной упаковке.
Впервые кэш L2 стал использоваться совместно двумя вычислительными ядрами на процессорах Core 2 Duo. AMD пошла дальше и создала свой первый четырёхъядерный Phenom «с нуля», а Intel для своего первого четырёхъядерного процессора вновь использовала пару кристаллов, на этот раз уже два двуядерных кристалла Core 2, чтобы снизить расходы.
Кэш третьего уровня существовал ещё с первых дней процессора Alpha 21165 (96 кбайт, процессоры представлены в 1995) или IBM Power 4 (256 кбайт, 2001). Однако в архитектурах на основе x86 кэш L3 впервые появился вместе с моделями Intel Itanium 2, Pentium 4 Extreme (Gallatin, оба процессора в 2003 году) и Xeon MP (2006).
Первые реализации давали просто ещё один уровень в иерархии кэша, хотя современные архитектуры используют кэш L3 как большой и общий буфер для обмена данными между ядрами в многоядерных процессорах. Это подчёркивает и высокая n-степень ассоциативности. Лучше поискать данные чуть дольше в кэше, чем получить ситуацию, когда несколько ядер используют очень медленный доступ к основной оперативной памяти. AMD впервые представила кэш L3 на процессоре для настольных ПК вместе с уже упоминавшейся линейкой Phenom. 65-нм Phenom X4 содержал 2 Мбайт общего кэша L3, а современные 45-нм Phenom II X4 имеют уже 6 Мбайт общего кэша L3. У процессоров Intel Core i7 и i5 используется 8 Мбайт кэша L3.
Современные четырёхъядерные процессоры имеют выделенные кэши L1 и L2 для каждого ядра, а также большой кэш L3, являющийся общим для всех ядер. Общиё кэш L3 также позволяет обмениваться данными, над которыми ядра могут работать параллельно.
Процессорозависимость видеосистемы. Часть II – Влияние объема кэш-памяти CPU и скорости оперативной памяти
Предисловие ко второй части
С момента опубликования статьи «Процессорозависимость видеосистемы. Часть I – Анализ» мы получили много откликов от вас, уважаемые читатели. Наряду с вопросами, когда же выйдет вторая часть материала, также было много замечаний относительно приведенных графиков и сомнений относительно их достоверности в некоторых специфических случаях.
Сегодня мы дадим объяснение нескольким нюансам, которые вызвали живой интерес у публики, но не были подробно описаны в первой части. Рассмотрим влияние объема кэш-памяти центрального процессора и скорости работы оперативной памяти на производительность в 3D-играх. А также вплотную подойдем к вопросу сравнения платформ в целом. Итак, начнем.
«Нестыковка» №1. Или — куда подевался «ноль»
Обратите внимание на график, приведенный ниже.
Этот график взят нами из первой части статьи. Мы видим, что линии, отражающие производительность видеокарты в разных режимах, при уменьшении частоты центрального процессора сходятся к одной и той же наклонной линии. «Нестыковка» состоит в том, что если мы попытаемся продлить эту аппроксимирующую линию до пересечения с осью “FPS”, то увидим, что прямая приходит не в начало координат, а несколько выше. Получается, что при нулевой частоте центрального процессора мы можем играть, причем со скоростью целых 15 кадров в секунду?!
Как такое может быть? Если отвлечься от условий тестирования, в которых мы получали результаты, то теоретически такая ситуация все-таки возможна. Допустим, мы загрузим в память видеокарты некоторые данные вместе с шейдерными программами, которые должен выполнять видеочип, и пусть себе все автономно крутится, центральный процессор тут не нужен. Примеры использования видеопроцессоров для математических расчетов известны. Но в наших условия тестирования такой результат получить физически невозможно. Кто-то же должен рассчитывать положение объектов в игровой сцене вместо CPU! Как же на самом деле должен вести себя график процессорозависимости, при стремлении частоты центрального процессора к нулю?
Попытка провести эксперимент на реальном оборудовании осложняется тем, что более низкие значения множителя CPU уже недоступны, а если просто взять какой-то «совсем слабый процессор» – мы изменим платформу, то есть условия тестирования, как следствие, корректно сопоставить результаты тестирования уже не получится. Что же делать?
Давайте попробуем предсказать «поведение» кривой процессорозависимости с помощью логики и реального «поведения» типичного персонального компьютера. Для этого нам придется несколько углубиться в принципы работы операционных систем с вытесняющей многозадачностью. Не пугайтесь этого длинного термина. Скорее всего, для работы и игр вы используете именно такую операционную систему. Ведь речь идет о хорошо всем известной операционной системе — Windows XP. Помимо Windows XP к операционным системам с вытесняющей многозадачностью относятся и Windows2000, и все клоны Linux.
Особенность этих операционок, существенная для нашего рассмотрения, состоит в том, как они распоряжаются ресурсами «железа», а именно – распределение процессорного времени для одновременного выполнения нескольких задач. Нам, сидя за персональным компьютером, кажется, что все выполняется одновременно – и закачка файлов из Интернет, и воспроизведение музыки, и запись CD-диска, однако в реальности все выглядит несколько по-другому. Все приложения, которые вы запустили на своем компьютере, выполняются в строгой последовательности! Никакого противоречия здесь нет. Поскольку процессор один, то все приложения выполняются по очереди, по «кусочкам». Но эти кусочки настолько малы, а операционная система настолько быстро между ними переключается, что человек не в состоянии это заметить, и возникает иллюзия, что все выполняется одновременно. Если говорить кратко и упрощенно, то все время работы центрального процессора разбивается на некоторые промежутки, или «кванты» времени. А затем эти «кванты» времени «выдаются» приложениям, типа – нате поработайте, вот вам процессор на пару миллисекунд. При этом ядро многозадачной операционной системы и само потребляет некоторую часть этих «квантов» времени процессора, для того чтобы работали системные службы, да и просто – надо же операционке «подумать», какому приложению отдать следующий «квант». То есть, появляются некоторые «непроизводительные» (с точки зрения пользовательского приложения) потери времени процессора, которые идут на обслуживание собственно операционной системы.
Все вышеизложенное имеет самое непосредственное отношение к нашей «нестыковке».
И вот почему. Если операционная система для обеспечения своей работоспособности требует некоторого фиксированного количества «квантов» времени центрального процессора, то очевидно, что при уменьшении частоты CPU количество свободных «квантов», которые могут быть выделены для работы приложения (в нашем случае 3D-игры), будет уменьшаться быстрее, чем частота процессора. Можно это выразить и другими словами. Предположим, что при частоте процессора в 100 МГц его производительности хватит для обслуживания только операционной системы. Тогда для получения эквивалентной частоты CPU, то есть количества «мегагерц», которые доступны приложению, мы должны из реальной частоты процессора вычесть эти самые 100 МГц, отводимые для операционной системы. В этом случае получается, что при частоте CPU 1000 МГц величина «поправки на операционку» составляет 10%, при частоте CPU в 200 МГц – уже 50%, а при частоте CPU 100 МГц – мы получим 0 FPS. На следующем графике мы проиллюстрировали все сказанное выше.
Красной прерывистой линией обозначено предполагаемое поведение кривой процессорозависимости при стремлении частоты CPU к нулю. Внимание — эта линия проведена произвольно и не является отображением каких-либо экспериментальных данных!
Вам может показаться странным, зачем мы уделяем этому вопросу столько внимания и времени. Ведь процессоры со столь низкими частотами уже практически не используются в персональных компьютерах, да и практической пользы от эксперимента, даже если его удалось бы выполнить – на первый взгляд нет. Все так, но и не совсем так.
Давайте зададимся вопросом – «а как можно исключить или минимизировать влияние операционной системы на скорость работы приложения?». То есть – возможно ли вообще получить график процессорозависимости, проходящий через начало координат? Забегая вперед, скажем – возможно, если операционная система будет выполняться… на другом процессоре. Но к этому вопросу мы вернемся чуть позже.
Нестыковка №2. Нелинейность «линии максимально возможных результатов»
Только что мы рассмотрели поведение «линии максимально возможных результатов» при уменьшении частоты CPU. Теперь давайте посмотрим, что происходит, если мы пойдем в другую сторону и будем увеличивать частоту CPU.
Собственно, суть «нестыковки» хорошо заметна на все том же графике, который мы рассматривали выше. А именно – в какой бы точке «линии максимально возможных результатов» мы не строили касательную, при увеличении частоты CPU дальнейшие результаты отклоняются от касательной вниз. Почему график не следует линейному закону, а начинает «пригибаться» к оси Х? Приведем несколько причин, объясняющих данное явление.
Первая причина – расход мощности центрального процессора на нужды операционной системы. Вопрос, который выше уже рассматривался.
Вторая причина — влияние множителя CPU. Спрашивается, при чем тут коэффициент умножения CPU? А притом, что если увеличивать скорость процессора только за счет множителя, мы вроде бы увеличиваем мощность CPU по обработке данных, но ведь их еще надо ядру CPU доставить, а скорость процессорной шины остается неизменной. Для задач с большим количеством данных, которые надо обрабатывать и которые не помещаются в кэш-память процессора, может возникнуть момент, когда ядро CPU уже обсчитало имеющиеся данные, и ждет подкачки следующей порции. То есть, процессор начинает простаивать, что можно рассматривать как снижение «эффективной» частоты работы CPU.
Третья возможная причина – характер распределения процессорного времени между графическим драйвером (который выполняется на CPU) и собственно расчетами игры (также выполняемыми на CPU). Ситуация выглядит несколько запутанно, поскольку обе задачи используют центральный процессор, да и графический драйвер можно отнести как к компоненту операционной системы (по архитектуре), так и к важному звену с точки зрения выполнения 3D-приложения.
Другие возможные причины – латентность и пропускная способность оперативной памяти, шины процессора и т.д.
Список приведенных причин не является окончательным и исчерпывающим, и при желании можно найти еще несколько факторов, из-за которых поведение «линии максимальных результатов» будет отличаться от прямолинейного. Определение степени влияния каждой из указанных причин и поиск «бутылочного горлышка» – довольно обширная тема для исследования.
Прежде, чем перейти к рассмотрению частных вопросов, сформулируем общий постулат:
В многофакторной среде линейная зависимость какой-либо величины от определенного параметра может быть достигнута только при условии отсутствия ограничений со стороны всех остальных параметров.
Или же, другими словами, именно тот параметр, в зависимости от которого строится график, и должен быть наиболее ограничивающим фактором.
Применительно к нашему рассмотрению процессорозависимости видеосистемы это означает, что кроме CPU, производительность всех остальных компонентов должна быть достаточной и не создавать каких-либо ограничений. То есть – видеокарта должна быть мощная и работать в наилегчайшем из режимов (например, 640×480 вместо 1600х1200 при прочих одинаковых настройках), оперативная память должна работать с максимальной скоростью, влияние операционной системы сведено к минимуму и т.д.
Как бы там ни было, на практике, при увеличении частоты центрального процессора, мы все равно наблюдаем рост «линии максимально возможных результатов». И хотя этот рост не является строго линейным, для оценки «потолка» возможной производительности платформы в 3D-приложениях он вполне применим.
Далее мы рассмотрим несколько факторов, которые влияют на производительность компьютера в 3D-приложениях. Но речь пойдет уже о вещах, которыми мы можем в той или иной степени управлять, выбирая центральный процессор и тип оперативной памяти, то есть – выбирая «платформу» для запуска 3D-приложений.
Влияние скорости работы оперативной памяти
В первой части статьи, несмотря на всю общность поставленной задачи, мы использовали одну единственную платформу — процессор Athlon 64 4000+, материнскую плату на базе чипсета nForce 4 SLI и оперативную память DDR400, работающую в двухканальном режиме. Причем из перечисленных здесь компонентов изменялась лишь частота процессора с помощью понижения множителя, а такие параметры как частота системной шины (FSB), скорость работы памяти и все остальное оставалось неизменным.
Вполне резонно прозвучит вопрос – а как же будут выглядеть графики процессозависимости при изменении других параметров? Ведь и скорость работы оперативной памяти, и объем кэш-памяти процессора влияют на производительность. Степень влияния этих параметров мы сейчас и изучим.
Условия тестирования, использованные в первой части статьи, вам известны.
Мы использовали метод нахождения «линии максимально возможных результатов», то есть, для выбранного 3D-приложения выставлялось минимально возможное разрешение без полноэкранного сглаживания (AA) и анизотропной фильтрации (AF). В этом случае результаты определяются производительностью не видеокарты, а центрального процессора, вернее даже – платформой в целом!
Помимо уже проведенных тестов стандартной конфигурации стенда с оперативной памятью DDR400 в двухканальном режиме, были получены результаты для конфигураций:
- Скорость памяти — DDR400, режим – одноканальный (Single Channel DDR400)
- Скорость памяти — DDR200, режим — двухканальный, (Dual Channel DDR200)
- Скорость памяти – DDR200, режим – одноканальный (Single Channel DDR200)
Пусть вас не смущает некоторая «искусственность» указанных режимов для оперативки. Как это ни странно, режим Single Channel DDR400 вполне можно встретить в домашних компьютерах пользователей. Причины банальны – наличие всего одной планки памяти с прицелом на «докуплю когда появятся деньги», или же неправильная установка двух модулей памяти в один канал. Режим Dual Channel DDR200 более экзотичен, но тоже иногда встречается. Когда установлено 4 модуля памяти, некоторые материнские платы автоматически понижают скорость работы оперативки до DDR333 или даже DDR266 для улучшения стабильности. Вариант понижения скорости до DDR200 является некоторым преувеличением, но мы лишь хотим проиллюстрировать, как будут меняться результаты при таких минимальных настройках. Это же касается и режима Single Channel DDR200.
Полученные результаты отображены на графике.
И какие же выводы мы можем сделать из этого графика? Как оказывается, более важный параметр – скорость работы памяти, а не число каналов! Одноканальный режим DDR400 более производителен, чем двухканальный режим DDR200, хотя максимальная теоретическая пропускная способность памяти в этих случаях одинакова. Самые низкие результаты, разумеется, показывает система с одноканальной памятью DDR200. Но что интересно, платформа с памятью DDR400 Dual Channel отличается от платформы с памятью Single Channel DDR200 по максимальной пропускной способности памяти аж в 4 раза, а вот разница в результатах (для одной и той же частоты CPU) оказывается на уровне всего лишь 50%, те есть – 1,5 раза.
Система с Dual Channel DDR200 отстает от лидера на 25%, а система с Single Channel DDR400 – всего лишь на 10%. Что касается остальных возможных типов памяти (DDR333 и DDR266), то результаты подобных систем, очевидно, будут находиться между результатами систем с памятью DDR200-DDR400.
Вот и ответ, о том, как режим работы и скорость оперативной памяти влияют на максимально возможные результаты для выбранной платформы. Мы не случайно подчеркнули данную фразу, поскольку в реальной ситуации показываемые результаты (FPS) ограничиваются, как правило, производительностью видеокарты. Предположим, что в условиях нашего тестирования некая видеокарта способна выдать максимум 60 FPS, тогда при частоте CPU, превышающей 1400 МГц, получается что для раскрытия всего потенциала видеокарты даже системы с оперативкой Single Channel DDR200 вполне достаточно!
Практический вывод для экономных пользователей – не спешите выкидывать старую память стандарта DDR266 и DDR333, ведь оперативки никогда много не бывает и она еще послужит.
Теперь перейдем к более сложному вопросу.
Влияние объема кэш-памяти CPU
Следующим объектом нашего рассмотрения, как понятно из заголовка, станет попытка оценить степень влияния объема кэш-памяти CPU на производительность платформы в 3D-приложениях. Большое количество различных тестов показывает, что в 3D-играх производительность не сильно зависит от объема кэш-памяти CPU. Сегодня мы готовы перейти от интуитивных ощущений к цифрам и привести количественную оценку степени влияния объема кэш-памяти CPU на производительность в играх.
Сложность состоит в том, что мы не можем произвольно изменять объем встроенной в ядро CPU кэш-памяти, поэтому возможным вариантом решения данной задачи представляется сравнение двух процессоров, отличающихся только объемом встроенной кэш-памяти при сохранении прочих параметров неизменными.
Наш «основной» процессор, который мы до сих пор использовали при подготовке материалов данной статьи — Athlon 64 4000+. Данный процессор имеет 128 Кб кэш-памяти первого уровня (L1-cache) и 1024 Кб кэш-памяти второго уровня (L2-cache). Для сравнения мы могли бы взять процессор Athlon 64 3800+, у которого объем кэш-памяти первого уровня такой же, а объем кэш-памяти второго уровня вдвое меньше – 512 Кб, но мы решили пойти несколько дальше.
Для примера мы рассмотрим довольно популярное в массовом сегменте семейство процессоров Sempron в исполнении Socket 754. Находящийся у нас экземпляр Sempron имеет рейтинг 3400+, штатную тактовую частоту 2000 МГц, объем встроенной кэш-памяти – 128 Кб (L1-cache) плюс 256 Кб (L2-cache). То есть, объем кэш-памяти второго уровня у выбранного нами процессора Sempron в 4 раза меньше, чем у Athlon64 4000+.
Что касается корректности эксперимента, то процессоры семейства Sempron также поддерживают технологию изменения множителя в сторону понижения, поэтому мы применим ту же методику построения графика процессорозависимости, что и в случае с Athlon 64 4000+. Отличие Sempron s754 от Athlon 64 s939 состоит в поддержке только одноканального режима памяти и уменьшенном объеме кэш-памяти процессора. Полученную «линию максимально возможных результатов» мы поместим на тот же график, где сравнивалась производительность платформ Athlon64 с различной оперативной памятью. Для платформы Sempron s754 использовалась оперативная память DDR400 Single Channel.
И что же мы видим? Результаты, показанные платформой Sempron s754 DDR400 Single Channel, практически в точности повторяют результаты Atlon64 DDR200 Dual Channel. Удивительно, но факт — процессор Sempron s754 в 3D-играх показывает достойную производительность и не так уж сильно отстает от старших собратьев.
Это все хорошо, скажете вы, но при чем тут объем кэш-памяти и как оценить его влияние на производительность платформы? Очень просто, давайте уберем из вышеприведенного графика «все лишнее» и внимательно приглядимся. На нижеследующем графике мы оставили только две линии, соответствующие платформам Sempron s754 и Athlon64 DDR400 Single Channel. Обратите внимание, что для данных платформ скорость и режим работы оперативной памяти одинаковы, и все отличие состоит только в объеме кэш-памяти процессоров.
Как видите, при четырехкратной разнице в объеме кэш-памяти второго уровня Sempron показывает результаты лишь на 10-12% хуже, чем Athlon64, работающий на той же частоте. (Замечание – результаты для Sempron начинаются с частоты 2000 МГц, поскольку это максимальная для данного процессора штатная частота, а разгон привел бы к изменению частоты работы системной шины, оперативной памяти и, как следствие — к искажению результатов). Из вышеприведенного графика также следует вывод, что для процессоров Athlon64 с объемом кэш-памяти второго уровня равным 512 Кб линия «максимально возможных результатов» будет занимать промежуточное положение, то есть разница по сравнению с Sempron будет еще меньше.
Таким образом, для процессоров архитектуры AMD K8 величина объема кэш-памяти в 3D-играх оказывает незначительное влияние на общую производительность платформы.
А что получится, если на платформу Sempron установить достаточно мощную видеокарту типа 7900GT и включить режим 1280×1024 4AA/16AF? Разрешение экрана 1280х1024 точек мы выбрали потому, что это «родное» разрешение для большинства популярных ЖК-мониторов с диагоналями 17 и 19 дюймов, ну а для большинства типовых ЭЛТ-мониторов этого же размера рекомендуемое разрешение равно соответственно 1024х768 и опять же 1280х1024 точек. Мы «утяжелили» графический режим, включив анизотропную фильтрацию и полноэкранное сглаживание, чтобы продемонстрировать — бюджетный процессор это не повод отказывать себе в графике высокого качества.
Как видно из графиков, и «линия максимальных результатов», и кривая процессорозависимости для режима 1280х1024 4AA/16AF в случае процессора Sempron лежат ниже соответствующих линий для процессора Athlon 64. Такое поведение линий вполне нормально, поскольку игра довольно старая, а видеокарта, использованная в тестах — мощная. Поэтому для обоих процессоров на указанных частотах в режиме 1280х1024 4AA/16AF мы получаем не «полочку», а переходную область. Но даже с учетом этого обстоятельства видно, что процессоры Sempron s754 на частоте 1600 МГц (частота младших моделей в семействе) вполне способны показать результат порядка 70 кадров/сек. Конечно, наряду с моделями Sempron с объемом кэш-памяти процессора 256 кб есть и продукты с L2-cache 128 кб. Но, как уже было показано выше, объем кэш-памяти CPU оказывает незначительное влияние на общую производительность. И даже если от приведенных на графике результатов для платформы Sempron s754 отнять еще 10%, то производительности даже самых младших моделей Sempron с частотой 1600 МГц будет достаточно для обеспечения скорости более 60 кадров/сек!
Конечно, и Half-Life 2, и DOOM 3 довольно старые игры. Могут возникнуть возражения, что в современных играх Sempron все же не потянет и производительность «упрется» в мощность центрального процессора. Давайте проверим это на примере игры F.E.A.R., которая очень требовательна к ресурсам системы.
Как видите, когда мы строим «линию максимальных результатов», при одинаковой частоте CPU производительность платформы Sempron по-прежнему несколько отстает от Athlon 64 (как и должно быть), но как только мы включаем качественный режим, производительность сразу же упирается в видеокарту!
Что касается процессоров Sempron SocketAM2, то в ходе подготовки данной статьи мы не тестировали данные процессоры. Но, исходя из вышеизложенного, можно предположить – разница в производительности в 3D-играх для процессоров Athlon64 AM2 и Sempron AM2 будет еще меньше, поскольку процессоры Sempron AM2 имеют двухканальный контроллер памяти, как и процессоры Athlon64 AM2. Стоит признать, что на платформе Socket AM2 изучение влияния объема кэш-памяти процессора можно было бы провести с меньшими усилиями. Однако, как видите, и в случае сравнения платформ Socket 939 и Socket 754 нам удалось это сделать.
Не следует думать, что мы решили ограничиться только платформами Socket 939 и Socket 754. Следующая на очереди – платформа Socket AM2. Результаты, которые мы получили, хоть и были предсказаны теорией, тем не менее — впечатляют.
Мы уже попытались сравнить разные платформы, хотя и относящиеся к одному производителю и являющиеся близкими так сказать родственниками. Давайте немножко усложним задачу, и попробуем получить результаты по той же самой методике, но уже для двухъядерного процессора. В качестве такого процессора был взят Athlon 64 X2 4000 Socket AM2, штатная частота которого равна 2000 МГц. Давайте получим для него «линию максимальных результатов», точно так же, как мы делали это раньше.
И вот здесь мы видим очень интересную картину! Смотрите, на двухъядерном процессоре «линия максимальных результатов» точно совпадает с прямой линией и четко проходит через ноль! Ничего удивительного, ведь системные службы выполняются на первом ядре, а приложение (в нашем случае DOOM3) – выполняется на свободном, то есть втором ядре. Да и результаты немало возросли, хотя мы не меняли условия тестирования, в смысле настройки графики. Мы даже не пытались искать какие-либо патчи для игры, которые могли бы эффективно использовать двухъядерность CPU. Получается, что на этом графике мы видим увеличение производительности за счет второго ядра, но без всякой оптимизации игры под второе ядро CPU. Теперь мы можем дать ответ на вопрос «каков будет прирост от двухъядерности CPU в графических приложениях, неоптимизированных под многопоточность»? Ответ очевиден из графика. При той же частоте CPU прирост производительности в случае системы с двухъядерным CPU составляет от 20% до 40% по сравнению с системой на одноядерном процессоре. И это без всяких оптимизаций!
Разумеется, в нашем рассмотрении мы не собираемся ограничиться только платформами для процессоров AMD. В самое ближайшее время мы познакомим вас с результатами тестов, выполненных по нашей методике, для платформ Intel Celeron, Pentium 4, Pentium D и, конечно же – Intel Core Duo. Но об этом – в третьей части статьи. Оставайтесь с нами.
Обсудить статью на форуме.
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Кэш в процессоре что влияет. Что такое кэш память жесткого диска и для чего она нужна. Что такое кэш память процессора
Насколько важен кэш L3 для процессоров AMD?
Действительно, имеет смысл оснащать многоядерные процессоры выделенной памятью, которая будет использоваться совместно всеми доступными ядрами. В данной роли быстрый кэш третьего уровня (L3) может существенно ускорить доступ к данным, которые запрашиваются чаще всего. Тогда ядрам, если существует такая возможность, не придётся обращаться к медленной основной памяти (ОЗУ, RAM).
По крайней мере, в теории. Недавно AMD анонсировала процессор Athlon II X4
, представляющий собой модель Phenom II X4 без кэша L3, намекая на то, что он не такой и необходимый. Мы решили напрямую сравнить два процессора (с кэшем L3 и без), чтобы проверить, как кэш влияет на производительность.
Нажмите на картинку для увеличения.
Как работает кэш?
Перед тем, как мы углубимся в тесты, важно понять некоторые основы. Принцип работы кэша довольно прост. Кэш буферизует данные как можно ближе к вычислительным ядрам процессора, чтобы снизить запросы CPU в более отдалённую и медленную память. У современных настольных платформ иерархия кэша включает целых три уровня, которые предваряют доступ к оперативной памяти. Причём кэши второго и, в частности, третьего уровней служат не только для буферизации данных. Их цель заключается в предотвращении перегрузки шины процессора, когда ядрам необходимо обменяться информацией.
Попадания и промахи
Эффективность архитектуры кэшей измеряется процентом попаданий. Запросы данных, которые могут быть удовлетворены кэшем, считаются попаданиями. Если данный кэш не содержит нужные данные, то запрос передаётся дальше по конвейеру памяти, и засчитывается промах. Конечно, промахи приводят к большему времени, которое требуется для получения информации. В результате в вычислительном конвейере появляются «пузырьки» (простои) и задержки. Попадания, напротив, позволяют поддержать максимальную производительность.
Запись в кэш, эксклюзивность, когерентность
Политики замещения диктуют, как в кэше освобождается место под новые записи. Поскольку данные, записываемые в кэш, рано или поздно должны появиться в основной памяти, системы могут делать это одновременно с записью в кэш (write-through) или могут маркировать данные области как «грязные» (write-back), а выполнять запись в память тогда, когда она будет вытесняться из кэша.
Данные в нескольких уровнях кэша могут храниться эксклюзивно, то есть без избыточности. Тогда вы не найдёте одинаковых строчек данных в двух разных иерархиях кэша. Либо кэши могут работать инклюзивно, то есть нижние уровни кэша гарантированно содержат данные, присутствующие в верхних уровнях кэша (ближе к процессорному ядру). У AMD Phenom используются эксклюзивный кэш L3, а Intel следует стратегии инклюзивного кэша. Протоколы когерентности следят за целостностью и актуальностью данных между разными ядрами, уровнями кэшей и даже процессорами.
Объём кэша
Больший по объёму кэш может содержать больше данных, но при этом наблюдается тенденция увеличения задержек. Кроме того, большой по объёму кэш потребляет немалое количество транзисторов процессора, поэтому важно находить баланс между «бюджетом» транзисторов, размером кристалла, энергопотреблением и производительностью/задержками.
Ассоциативность
Записи в оперативной памяти могут привязываться к кэшу напрямую (direct-mapped), то есть для копии данных из оперативной памяти существует только одна позиция в кэше, либо они могут быть ассоциативны в n-степени (n-way associative), то есть существует n возможных расположений в кэше, где могут храниться эти данные. Более высокая степень ассоциативности (вплоть до полностью ассоциативных кэшей) обеспечивает наилучшую гибкость кэширования, поскольку существующие данные в кэше не нужно переписывать. Другими словами, высокая n-степень ассоциативности гарантирует более высокий процент попаданий, но при этом увеличивается задержка, поскольку требуется больше времени на проверку всех этих ассоциаций для попадания. Как правило, наибольшая степень ассоциации разумна для последнего уровня кэширования, поскольку там доступна максимальная ёмкость, а поиск данных за пределами этого кэша приведёт к обращению процессора к медленной оперативной памяти.
Приведём несколько примеров: у Core i5 и i7 используется 32 кбайт кэша L1 с 8-way ассоциативностью для данных и 32 кбайт кэша L1 с 4-way для инструкций. Понятно желание Intel, чтобы инструкции были доступны быстрее, а у кэша L1 для данных был максимальный процент попаданий. Кэш L2 у процессоров Intel обладает 8-way ассоциативностью, а кэш L3 у Intel ещё «умнее», поскольку в нём реализована 16-way ассоциативность для максимизации попаданий.
Однако AMD следует другой стратегии с процессорами Phenom II X4, где используется кэш L1 с 2-way ассоциативностью для снижения задержек. Чтобы компенсировать возможные промахи ёмкость кэша была увеличена в два раза: 64 кбайт для данных и 64 кбайт для инструкций. Кэш L2 имеет 8-way ассоциативность, как и у дизайна Intel, но кэш L3 у AMD работает с 48-way ассоциативностью. Но решение выбора той или иной архитектуры кэша нельзя оценивать без рассмотрения всей архитектуры CPU. Вполне естественно, что практическое значение имеют результаты тестов, и нашей целью как раз была практическая проверка всей этой сложной многоуровневой структуры кэширования.
Каждый современный процессор имеет выделенный кэш, которых хранит инструкции и данные процессора, готовые к использованию практически мгновенно. Этот уровень обычно называют первым уровнем кэширования или L1, впервые такой кэш появился у процессоров 486DX. Недавно процессоры AMD стали стандартно использовать по 64 кбайт кэша L1 на ядро (для данных и инструкций), а процессоры Intel используют по 32 кбайт кэша L1 на ядро (тоже для данных и инструкций)
Кэш первого уровня впервые появился на процессорах 486DX, после чего он стал составной функцией всех современных CPU.
Кэш второго уровня (L2) появился на всех процессорах после выхода Pentium III, хотя первые его реализации на упаковке были в процессоре Pentium Pro (но не на кристалле). Современные процессоры оснащаются до 6 Мбайт кэш-памяти L2 на кристалле. Как правило, такой объём разделяется между двумя ядрами на процессоре Intel Core 2 Duo, например. Обычные же конфигурации L2 предусматривают 512 кбайт или 1 Мбайт кэша на ядро. Процессоры с меньшим объёмом кэша L2, как правило, относятся к нижнему ценовому уровню. Ниже представлена схема ранних реализаций кэша L2.
У Pentium Pro кэш L2 находился в упаковке процессора. У последовавших поколений Pentium III и Athlon кэш L2 был реализован через отдельные чипы SRAM, что было в то время очень распространено (1998, 1999).
Последовавшее объявление техпроцесса до 180 нм позволило производителям, наконец, интегрировать кэш L2 на кристалл процессора.
Первые двуядерные процессоры просто использовали существующие дизайны, когда в упаковку устанавливалось два кристалла. AMD представила двуядерный процессор на монолитном кристалле, добавила контроллер памяти и коммутатор, а Intel для своего первого двуядерного процессора просто собрала два одноядерных кристалла в одной упаковке.
Впервые кэш L2 стал использоваться совместно двумя вычислительными ядрами на процессорах Core 2 Duo. AMD пошла дальше и создала свой первый четырёхъядерный Phenom «с нуля», а Intel для своего первого четырёхъядерного процессора вновь использовала пару кристаллов, на этот раз уже два двуядерных кристалла Core 2, чтобы снизить расходы.
Кэш третьего уровня существовал ещё с первых дней процессора Alpha 21165 (96 кбайт, процессоры представлены в 1995) или IBM Power 4 (256 кбайт, 2001). Однако в архитектурах на основе x86 кэш L3 впервые появился вместе с моделями Intel Itanium 2, Pentium 4 Extreme (Gallatin, оба процессора в 2003 году) и Xeon MP (2006).
Первые реализации давали просто ещё один уровень в иерархии кэша, хотя современные архитектуры используют кэш L3 как большой и общий буфер для обмена данными между ядрами в многоядерных процессорах. Это подчёркивает и высокая n-степень ассоциативности. Лучше поискать данные чуть дольше в кэше, чем получить ситуацию, когда несколько ядер используют очень медленный доступ к основной оперативной памяти. AMD впервые представила кэш L3 на процессоре для настольных ПК вместе с уже упоминавшейся линейкой Phenom. 65-нм Phenom X4 содержал 2 Мбайт общего кэша L3, а современные 45-нм Phenom II X4 имеют уже 6 Мбайт общего кэша L3. У процессоров Intel Core i7 и i5 используется 8 Мбайт кэша L3.
Современные четырёхъядерные процессоры имеют выделенные кэши L1 и L2 для каждого ядра, а также большой кэш L3, являющийся общим для всех ядер. Общиё кэш L3 также позволяет обмениваться данными, над которыми ядра могут работать параллельно.
При выполнении различных задач в процессор вашего компьютера поступают необходимые блоки информации из оперативной памяти. Обработав их ЦП записывает полученные результаты вычислений в память и получает на обработку последующие блоки данных. Так продолжается до тех пор, пока поставленная задача не будет выполнена.
Вышеупомянутые процессы производятся на очень большой скорости. Однако скорость даже самой быстрой оперативной памяти значительно меньше скорости любого слабого процессора. Каждое действие, будь то запись на неё информации или считывание с неё занимают много времени. Скорость работы оперативной памяти в десятки раз ниже скорости процессора.
Не смотря на такую разницу в скорости обработки информации, процессор ПК не простаивает без дела и не ожидает, когда ОЗУ выдаст и примет данные. Процессор всегда работает и всё благодаря присутствию в нем кэш памяти.
Кэш — особый вид оперативной памяти. Процессор использует память кэша для хранения тех копий информации из основной оперативной памяти компьютера, вероятность обращения к которым в ближайшее время очень велика.
По сути кэш-память выполняет роль быстродействующего буфера памяти хранящего информацию, которая может потребоваться процессору. Таким образом процессор получает необходимые данные в десятки раз быстрее, чем при считывании их из оперативной памяти.
Основным отличием кэш памяти от обычного буфера являются встроенные логические функции. В буфере хранятся случайные данные, которые как правило обрабатываются по схеме » получен первым, выдан первым» либо » получен первым, выдан последним». В кэш памяти содержатся данные, вероятность обращения к которым в ближайшее время очень велика. Поэтому благодаря «умному кэшу» процессор может работать с полной скоростью и не ожидать данные, извлекаемые из более медленной оперативной памяти.
Основные типы и уровни кэш-памяти L1 L2 L3
Кэш память выполнена в виде микросхем статической оперативной памяти (SRAM), которые устанавливаются на системной плате либо встроены в процессор. В сравнении с другими видами памяти, статическая память способна работать на очень больших скоростях.
Скорость кэша зависит от объема конкретной микросхемы, Чем больше объем микросхемы, тем труднее добиться высокой скорости для её работы. Учитывая данную особенность, при изготовлении кэш память процессора выполняют в виде нескольких небольших блоков, именуемых уровнями. Самой распространенной на сегодняшний день считается трехуровневая система кеша L1,L2, L3:
Кэш память первого уровня L1
— самая маленькая по объему (всего несколько десятков килобайт), но самая быстрая по скорости и наиболее важная. Она содержит данные наиболее часто используемые процессором и работает без задержек. Обычно количество микросхем памяти уровня L1 равно количеству ядер процессора, при этом каждое ядро получает доступ только к своей микросхеме L1.
Кэш память уровня L2
по скорости уступает памяти L1, но выигрывает в объеме, который измеряется уже в нескольких сотнях килобайт. Она предназначена для временного хранения важной информации, вероятность обращения к которой ниже, чем у информации хранящейся в кэше L1.
Третий уровень кэш памяти L3
— имеет самый большой объем из трех уровней (может достигать десятков мегабайт), но и обладает самой медленной скоростью, которая всё же значительно выше скорости оперативной памяти. Кэш память L3 служит общей для всех ядер процессора. Уровень памяти L3 предназначен для временного хранения тех важных данных, вероятность обращения к которым чуть ниже, чем у информации которая хранится в первых двух уровнях L1, L2. Она также обеспечивает взаимодействие ядер процессора между собой.
Некоторые модели процессоров выполнены с двумя уровнями кэш памяти, в которых L2 совмещает все функции L2 и L3.
Когда полезен большой объем кэша.
Значительный эффект от большого объема кэша вы ощутите при использовании программ архиваторов, в 3D играх, во время обработки и кодирования видео. В относительно «легких» программах и приложениях разница практически не заметна (офисные программы, плееры и т.п).
Всем пользователям хорошо известны такие элементы компьютера, как процессор, отвечающий за обработку данных, а также оперативная память (ОЗУ или RAM), отвечающая за их хранение. Но далеко не все, наверное, знают, что существует и кэш-память процессора(Cache CPU), то есть оперативная память самого процессора (так называемая сверхоперативная память).
В чем же состоит причина, которая побудила разработчиков компьютеров использовать специальную память для процессора? Разве возможностей ОЗУ для компьютера недостаточно?
Действительно, долгое время персональные компьютеры обходились без какой-либо кэш-памяти. Но, как известно, процессор – это самое быстродействующее устройство персонального компьютера и его скорость росла с каждым новым поколением CPU. В настоящее время его скорость измеряется миллиардами операций в секунду. В то же время стандартная оперативная память не столь значительно увеличила свое быстродействие за время своей эволюции.
Вообще говоря, существуют две основные технологии микросхем памяти – статическая память и динамическая память. Не углубляясь в подробности их устройства, скажем лишь, что статическая память, в отличие от динамической, не требует регенерации; кроме того, в статической памяти для одного бита информации используется 4-8 транзисторов, в то время как в динамической – 1-2 транзистора. Соответственно динамическая память гораздо дешевле статической, но в то же время и намного медленнее. В настоящее время микросхемы ОЗУ изготавливаются на основе динамической памяти.
Примерная эволюция соотношения скорости работы процессоров и ОЗУ:
Таким образом, если бы процессор брал все время информацию из оперативной памяти, то ему пришлось бы ждать медлительную динамическую память, и он все время бы простаивал. В том же случае, если бы в качестве ОЗУ использовалась статическая память, то стоимость компьютера возросла бы в несколько раз.
Именно поэтому был разработан разумный компромисс. Основная часть ОЗУ так и осталась динамической, в то время как у процессора появилась своя быстрая кэш-память, основанная на микросхемах статической памяти. Ее объем сравнительно невелик – например, объем кэш-памяти второго уровня составляет всего несколько мегабайт. Впрочем, тут стоить вспомнить о том, что вся оперативная память первых компьютеров IBM PC составляла меньше 1 МБ.
Кроме того, на целесообразность внедрения технологии кэширования влияет еще и тот фактор, что разные приложения, находящиеся в оперативной памяти, по-разному нагружают процессор, и, как следствие, существует немало данных, требующих приоритетной обработки по сравнению с остальными.
История кэш-памяти
Строго говоря, до того, как кэш-память перебралась на персоналки, она уже несколько десятилетий успешно использовалась в суперкомпьютерах.
Впервые кэш-память объемом всего в 16 КБ появилась в ПК на базе процессора i80386. На сегодняшний день современные процессоры используют различные уровни кэша, от первого (самый быстрый кэш самого маленького объема – как правило, 128 КБ) до третьего (самый медленный кэш самого большого объема – до десятков МБ).
Сначала внешняя кэш-память процессора размещалась на отдельном чипе. Со временем, однако, это привело к тому, что шина, расположенная между кэшем и процессором, стала узким местом, замедляющим обмен данными. В современных микропроцессорах и первый, и второй уровни кэш-памяти находятся в самом ядре процессора.
Долгое время в процессорах существовали всего два уровня кэша, но в CPU Intel Itanium впервые появилась кэш-память третьего уровня, общая для всех ядер процессора. Существуют и разработки процессоров с четырехуровневым кэшем.
Архитектуры и принципы работы кэша
На сегодняшний день известны два основных типа организации кэш-памяти, которые берут свое начало от первых теоретических разработок в области кибернетики – принстонская и гарвардская архитектуры. Принстонская архитектура подразумевает единое пространство памяти для хранения данных и команд, а гарвардская – раздельное. Большинство процессоров персональных компьютеров линейки x86 использует раздельный тип кэш-памяти. Кроме того, в современных процессорах появился также третий тип кэш-памяти – так называемый буфер ассоциативной трансляции, предназначенный для ускорения преобразования адресов виртуальной памяти операционной системы в адреса физической памяти.
Упрощенно схему взаимодействия кэш-памяти и процессора можно описать следующим образом. Сначала происходит проверка наличия нужной процессору информации в самом быстром — кэше первого уровня, затем — в кэше второго уровня, и.т.д. Если же нужной информации в каком-либо уровне кэша не оказалось, то говорят об ошибке, или промахе кэша. Если информации в кэше нет вообще, то процессору приходится брать ее из ОЗУ или даже из внешней памяти (с жесткого диска).
Порядок поиска процессором информации в памяти:
Именно таким образом Процессор осуществляет поиск инфоромации
Для управления работой кэш-памяти и ее взаимодействия с вычислительными блоками процессора, а также ОЗУ существует специальный контроллер.
Схема организации взаимодействия ядра процессора, кэша и ОЗУ:
Кэш-контроллер является ключевым элементом связи процессора, ОЗУ и Кэш-памяти
Следует отметить, что кэширование данных – это сложный процесс, в ходе которого используется множество технологий и математических алгоритмов. Среди базовых понятий, применяющихся при кэшировании, можно выделить методы записи кэша и архитектуру ассоциативности кэш-памяти.
Методы записи кэша
Существует два основных метода записи информации в кэш-память:
- Метод write-back (обратная запись) – запись данных производится сначала в кэш, а затем, при наступлении определенных условий, и в ОЗУ.
- Метод write-through (сквозная запись) – запись данных производится одновременно в ОЗУ и в кэш.
Архитектура ассоциативности кэш-памяти
Архитектура ассоциативности кэша определяет способ, при помощи которого данные из ОЗУ отображаются в кэше. Существуют следующие основные варианты архитектуры ассоциативности кэширования:
- Кэш с прямым отображением – определенный участок кэша отвечает за определенный участок ОЗУ
- Полностью ассоциативный кэш – любой участок кэша может ассоциироваться с любым участком ОЗУ
- Смешанный кэш (наборно-ассоциативный)
На различных уровнях кэша обычно могут использоваться различные архитектуры ассоциативности кэша. Кэширование с прямым отображением ОЗУ является самым быстрым вариантом кэширования, поэтому эта архитектура обычно используется для кэшей большого объема. В свою очередь, полностью ассоциативный кэш обладает меньшим количеством ошибок кэширования (промахов).
Заключение
В этой статье вы познакомились с понятием кэш-памяти, архитектурой кэш-памяти и методами кэширования, узнали о том, как она влияет на производительность современного компьютера. Наличие кэш-памяти позволяет значительно оптимизировать работу процессора, уменьшить время его простоя, а, следовательно, и увеличить быстродействие всей системы.
Все процессоры с конца 90-х годов имеют внутреннюю кэш-память (или просто кэш). Кэш — это быстродействующая память, в которую переносятся команды и данные, непосредственно обрабатываемые процессором.
В современных процессорах встроена кэш-память двух уровней — первого (L1) и второго (L2). С содержимым кэша L1 процессор работает несколько быстрее, а объем кэша L2 обычно несколько больше. Обращение к кэш-памяти происходит без состояния ожидания, т.е. кэш-память первого уровня (встроенный кэш) работает на частоте процессора.
Это означает, что если данные, необходимые процессору, находятся в кэш-памяти, то задержек с обработкой не возникает. В противном случае процессор должен получить данные из основной памяти, что существенно уменьшает быстродействие системы.
Для того чтобы качественно разобраться с принципом работы кэшпамяти обоих уровней, рассмотрим на примере бытовую ситуацию.
Вы приходите в кафе пообедать ежедневно, в одно и то же время, и садитесь всегда за один и тот же столик. Всегда заказываете стандартный набор из трех блюд.
Официант бегает на кухню, повар их раскладывает на поднос и затем вам приносят заказ. И вот, скажем, на третий день официант, чтобы лишний раз не бегать на кухню, к назначенному времени встречает вас с уже готовым горячим обедом на подносе.
Вы не ждете заказ и сэкономили массу времени. Поднос с вашими блюдами — это и есть кэш первого уровня. Но на четвертый день вам вдруг захотелось добавить еще одно блюдо, допустим, десерт.
Хотя вас в назначенное время уже ждал поднос с заказом, но за десертом официанту все равно пришлось бежать на кухню.
А на пятый — снова меню из трех наименований. На шестой — опять десерт, но отличающийся от предыдущего. И официант, не зная, что вы из десерта захотите заказать (да и вообще не зная, будете ли вы что-либо заказывать), решается на следующий шаг: рядом с вашим столиком ставит шкафчик с несколькими наименованиями десерта.
И если вы изъявите желание, все под рукой, на кухню бежать не надо. Шкафчик с десертом — это кэш второго уровня.
От объема кэша L1 (от 16 до 128 Кбайт) и L2 (от 64 Кбайт до 512 Кбайт, в Pentium III Хеоп и AMD Opteron до 4 Мбайт) существенно зависит производительность процессора.
У процессоров Intel Pentium III и процессоров Celeron на его основе размер кэша L1 составляет 32 Кбайт. У Intel Pentium 4, а также на его базе Celeron и Хеоп-версий — всего 20 Кбайт. Процессоры AMD Duron, Athlon (включая ХР/МР) и Opteron, а также VIA СЗ содержат 128 Кбайт L1 кэша.
Современные двухъядерные процессоры имеют кэш первого уровня для каждого ядра в отдельности, поэтому иногда в описании кэша мы можем встретить цифру 128×2. Это означает, что каждое ядро процессора обладает 128 Кбайт кэш-памяти первого уровня.
Размер кэша L1 важен для получения высокой производительности в большинстве распространенных задач (офисные приложения, игры, большинство серверных приложений и т.п.). Особенно сильно его эффективность проявляется для поточных вычислений (например, обработка видеоизображения).
Это одна из причин того, что Pentium 4 относительно малоэффективен для большинства распространенных применений (хотя это компенсируется высокой тактовой частотой). Кэш L1 всегда работает (обменивается информацией с ядром процессора) на внутренней частоте процессора.
В отличие от него, кэш L2 в разных моделях процессоров работает с разной частотой (и соответственно производительностью). Начиная с Intel Pentium II во многих процессорах применялся кэш L2, работающий на частоте, вполовину меньшей, чем внутренняя частота процессора.
Такое решение использовано в устаревших процессорах Intel Pentium III (до 550 МГц) и устаревших AMD Athlon (в некоторых из них внутренний кэш L2 работал на трети частоты ядра процессора). Объем кэша L2 также различен для разных процессоров.
В устаревших, а также некоторых более новых процессорах Intel Pentium III объем кэша L2 составляет 512 Кбайт, в остальных Pentium III — 256 Кбайт. Процессор Intel Celeron на основе Pentium III выпускался с 128 и 256 Кбайт кэша L2, а на основе Pentium 4 — только со 128 Кбайт. В различных вариантах Xeon-версии Intel Pentium 4 присутствует до 4 Мбайт кэш-памяти L2.
В новых процессорах Pentium 4 (некоторые серии с частотой 2000 МГц и все — для частот выше) имеется 512 Кбайт кэша L2, в остальных Pentium 4 -256 Кбайт. В процессорах Хеоп (на основе Pentium 4) бывает 256 или 512 Кбайт кэша L2.
Кроме того, в них присутствует еще кэш-память третьего уровня L3. Интегрированная кэш-память L3 в сочетании с быстрой системной шиной формирует высокоскоростной канал обмена данными с системной памятью.
Как правило, кэш-памятью третьего уровня L3 комплектуются только процессоры для серверных решений или специальные модели «настольных» процессоров. Кэш-памятью L3 обладают, например, такие линейки процессоров, как Xeon DP, Itanium 2, Xeon MP.
Процессор AMD Duron имеет 128 Кбайт кэша L1 и 64 Кбайт кэша L2. В процессорах Athlon (кроме наиболее старых), Athlon MP и большинстве вариантов Athlon ХР присутствует 128 Кбайт кэша L1 и 256 Кбайт кэша L2, а в новейших Athlon ХР (2500+, 2800+, 3000+ и выше) — 512 Кбайт кэша L2. AMD Opteron содержит 1 Мбайт кэш-памяти L2.
Последние модели процессоров Intel Pentium D, Intel Pentium M, Intel Core 2 Duo выпускаются с 6 Мбайт кэш-памяти L2, a Core 2 Quad — 12 Мбайт кэш-памяти L2.
Последний на момент написания данной книги процессор фирмы Intel Core i7 обладает 64 Кбайт кэш-памяти L1 для каждого из 4 ядер, а также 256 Кбайт памяти L2 также для каждого ядра. Помимо кэш памяти первого и второго уровней процессор обладает и общей для всех ядер кэш-памятью третьего уровня, равной 8 Мбайт.
Для процессоров, у которых возможен разный размер кэша L2 (или в случае Intel Xeon MP — L3) у одной и той же модели, этот размер должен быть указан при продаже (от него, разумеется, зависит цена процессора). Если процессор продается в «коробочной» упаковке (поставка In-Box), на ней обычно указывается размер кэш-памяти.
Для обычных пользовательских задач (в том числе игр) важнее скорость кэша L2, чем его объем; для серверных задач, наоборот, важнее объем. Наиболее продуктивные серверы, особенно с большим объемом оперативной памяти (несколько гигабайт), требуют максимального объема и максимальной скорости кэша L2.
Непревзойденными по этим параметрам остаются Хеоп-версии процессоров Pentium III. (Процессор Xeon MP оказывается все же более производительны в серверных задачах, чем Pentium III Xeon, за счет более высокой тактовой частоты самого процессора и шины обмена информацией с памятью.) Из изложенного выше сделаем вывод: кэш-память улучшает взаимодействие между быстрым процессором и более медленной оперативной памятью, а также позволяет минимизировать периоды ожидания, возникающие при обработке данных. Решающую роль в этом играет кэш-память второго уровня, расположенная в кристалле процессора.
Ч
то является самым грязным местом на компьютере? Думаете, корзина? Папки пользователя? Система охлаждения? Не угадали! Самое грязное место – это кэш! Ведь его постоянно приходится чистить!
На самом деле кэшей на компьютере много, и служат они не свалкой отходов, а ускорителями оборудования и приложений. Откуда же у них репутация «системного мусоропровода»? Давайте разберемся, что такое кэш, каким он бывает, как работает и почему время от времени .
Понятие и виды кэш-памяти
К
эшем или кэш-памятью называют специальное хранилище часто используемых данных, доступ к которому осуществляется в десятки, сотни и тысячи раз быстрее, чем к оперативной памяти или другому носителю информации.
Собственная кэш-память есть у приложений (веб-браузеров, аудио- и видеоплееров, редакторов баз данных и т. д.), компонентов операционных систем (кэш эскизов, DNS-кэш) и оборудования (cache L1-L3 центрального процессора, фреймбуфер графического чипа, буферы накопителей). Реализована она по-разному – программно и аппаратно.
- Кеш программ – это просто отдельная папка или файл, куда загружаются, например, картинки, меню, скрипты, мультимедийный контент и прочее содержимое посещенных сайтов. Именно в такую папку в первую очередь «ныряет» браузер, когда вы открываете веб-страницу повторно. Подкачка части контента из локального хранилища ускоряет ее загрузку и .
- В накопителях (в частности, жестких дисках) кэш представляет собой отдельный чип RAM емкостью 1-256 Mb, расположенный на плате электроники. В него поступает информация, считанная с магнитного слоя и пока не загруженная в оперативную память, а также данные, которые чаще всего запрашивает операционная система.
- Современный центральный процессор содержит 2-3 основных уровня кеш-памяти (ее также называют сверхоперативной памятью), размещенных в виде аппаратных модулей на одном с ним кристалле. Самым быстрым и наименьшим по объему (32-64 Kb) является cache Level 1 (L1) – он работает на той же частоте, что и процессор. L2 занимает среднее положение по скорости и емкости (от 128 Kb до 12 Mb). А L3 – самый медленный и объемный (до 40 Mb), на некоторых моделях отсутствует. Скорость L3 является низкой лишь относительно его более быстрых собратьев, но и он в сотни раз шустрее самой производительной оперативки.
Сверхоперативная память процессора применяется для хранения постоянно используемых данных, перекачанных из ОЗУ, и инструкций машинного кода. Чем ее больше, тем процессор быстрее.
Сегодня три уровня кеширования – уже не предел. С появлением архитектуры Sandy Bridge корпорация Intel реализовала в своей продукции дополнительный cache L0 (предназначенный для хранения расшифрованных микрокоманд). А наиболее высокопроизводительные ЦП имеют и кэш четвертого уровня, выполненный в виде отдельной микросхемы.
Схематично взаимодействие уровней cache L0-L3 выглядит так (на примере Intel Xeon):
Человеческим языком о том, как всё это работает
Ч
тобы было понятно, как функционирует кэш-память, представим человека, работающего за письменным столом. Папки и документы, которые он использует постоянно, лежат на столе (в кэш-памяти
). Для доступа к ним достаточно протянуть руку.
Бумаги, которые нужны ему реже, хранятся недалеко на полках (в оперативной памяти
). Чтобы их достать, нужно встать и пройти несколько метров. А то, с чем человек в настоящее время не работает, сдано в архив (записано на жесткий диск
).
Чем шире стол, тем больше документов на нем поместится, а значит, работник сможет получить быстрый доступ к большему объему информации (чем емкость кэша больше, тем в теории быстрее работает программа или устройство
).
Иногда он допускает ошибки – хранит на столе бумаги, в которых содержатся неверные сведения, и использует их в работе. В результате качество его труда снижается (ошибки в кэше приводят к сбоям в работе программ и оборудования
). Чтобы исправить ситуацию, работник должен выбросить документы с ошибками и положить на их место правильные (очистить кэш-память
).
Стол имеет ограниченную площадь (кэш-память имеет ограниченный объем
). Иногда ее можно расширить, например, придвинув второй стол, а иногда нельзя (объем кэша можно увеличить, если такая возможность предусмотрена программой; кэш оборудования изменить нельзя, так как он реализован аппаратно
).
Другой способ ускорить доступ к большему объему документов, чем вмещает стол – найти помощника, который будет подавать работнику бумаги с полки (операционная система может выделить часть неиспользуемой оперативной памяти для кэширования данных устройств
). Но это всё равно медленнее, чем брать их со стола.
Документы, лежащие под рукой, должны быть актуальны для текущих задач. За этим обязан следить сам работник. Наводить порядок в бумагах нужно регулярно (вытеснение неактуальных данных из кэш-памяти ложится «на плечи» приложений, которые ее используют; некоторые программы имеют функцию автоматической очистки кэша
).
Если сотрудник забывает поддерживать порядок на рабочем месте и следить за актуальностью документации, он может нарисовать себе график уборки стола и использовать его, как напоминание. В крайнем случае – поручить это помощнику (если зависимое от кэш-памяти приложение стало работать медленнее или часто загружает неактуальные данные, используйте средства очистки кэша по расписанию или раз в несколько дней проводите эту манипуляцию вручную
).
С «функциями кэширования» мы на самом деле сталкиваемся повсеместно. Это и покупка продуктов впрок, и различные действия, которые мы совершаем мимоходом, заодно и т. д. По сути, это всё то, что избавляет нас от лишней суеты и ненужных телодвижений, упорядочивает быт и облегчает труд. То же самое делает и компьютер. Словом, если бы не было кэша, он бы работал в сотни и тысячи раз медленнее. И нам бы вряд ли это понравилось.
Ещё на сайте:
Что такое кэш, зачем он нужен и как работает
обновлено: Февраль 25, 2017
автором: Johnny Mnemonic
Что такое кэш? L1 vs L2 vs L3
Что такое кэш процессора?
Если говорить простыми словами, то кэш процессора это просто очень быстрая память. Как вы уже знаете, у компьютера есть несколько видов памяти. Это постоянная память, которая используется для хранения данных, операционной системы и программ, например, SSD или жесткий диск. Также в компьютере используется оперативная память. Это память со случайным доступом, которая работает намного быстрее, по сравнению с постоянной. И наконец у процессора есть ещё более быстрые блоки памяти, которые вместе называются кэшем.
Если представить память компьютера в виде иерархии по её скорости, кэш будет на вершине этой иерархии. К тому же он ближе всего к вычислительным ядрам, так как является частью процессора.
Кэш память процессора представляет из себя статическую память (SRAM) и предназначен для ускорения работы с ОЗУ. В отличие от динамической оперативной памяти (DRAM), здесь можно хранить данные без постоянного обновления.
Польза от кэша процессора
Как видите кэш процессора это сложное устройство, усовершенствованием работы которого постоянно занимаются ведущие фирмы производители. Такое внимание уделяется ему не случайно, ведь быстрая и емкая SRAM память дает возможность существенно повысить быстродействие системы. Особенно ярко проявляется это в случае, когда частота ОЗУ является слабым местом, не позволяющим работать современным процессорам в полную силу.
Какую пользу вы можете извлечь из полученной сегодня информации. Во-первых, повысился уровень вашей компьютерной грамотности, а во-вторых вы теперь знаете, что при выборе процессора стоит взглянуть и на такой параметр как уровни и объем кэш-памяти. На этом я заканчиваю статью и прощаюсь с вами.
Удачи!
Как работает кэш процессора?
Как вы, возможно, уже знаете, программа — это набор инструкций, которые выполняет процессор. Когда вы запускаете программу, компьютеру надо перенести эти инструкции из постоянной памяти в процессору. И здесь вступает в силу иерархия памяти. Сначала данные загружаются в оперативную память, а потом передаются в процессор.
В наши дни процессор может обрабатывать огромное количество инструкций в секунду. Чтобы по максимуму использовать свои возможности, процессору необходима супер быстрая память. Поэтому был разработан кэш.
Контроллер памяти процессора выполняет работу по получению данных из ОЗУ и отправке их в кэш. В зависимости от процессора, используемого в вашей системе, этот контроллер может быть размещен в северном мосту материнской плате или в самом процессоре. Также кэш хранит результаты выполнения инструкций в процессоре. Кроме того, в самом кэше процессора тоже есть своя иерархия.
Уровни кэша процессора — L1, L2 и L3
Веся кэш память процессора разделена на три уровни: L1, L2 и L3. Эта иерархия тоже основана на скорости работы кэша, а также на его объеме.
- L1 Cache (кэш первого уровня) — это максимально быстрый тип кэша в процессоре. С точки зрения приоритета доступа, этот кэш содержит те данные, которые могут понадобиться программе для выполнения определенной инструкции;
- L2 Cache (кэш второго уровня процессора) — медленнее, по сравнению L1, но больше по размеру. Его объем может быть от 256 килобайт до восьми мегабайт. Кэш L2 содержит данные, которые, возможно, понадобятся процессору в будущем. В большинстве современных процессоров кэш L1 и L2 присутствуют на самих ядрах процессора, причём каждое ядро получает свой собственный кэш;
- L3 Cache (кэш третьего уровня) — это самый большой и самый медленный кэш. Его размер может быть в районе от 4 до 50 мегабайт. В современных CPU на кристалле выделяется отдельное место под кэш L3.
На данный момент это все уровни кэша процессора, компания Intel пыталась создать кэш уровня L4, однако, пока эта технология не прижилась.
Кэш – это как многоуровневая парковка
Как мы выяснили, кэш необходим, потому что системы хранения данных неидеальны и не способны удовлетворить соответствующие требования логических блоков в процессоре. Современные CPU и GPU содержат массив блоков SRAM, которые внутренне организованы в иерархию – последовательность кэшей, упорядоченных следующим образом:
Источник: techspot.com
На этой схеме область процессора выделена черным пунктирным прямоугольником. Блоки ALU (арифметико-логическое устройство) находятся в крайнем левом углу; это те самые структуры, которые и делают процессор – процессором, выполняя математические вычисления. Ближайшим к ALU уровнем памяти являются регистры (они сгруппированы в файл регистров) – но технически они кэшем не являются.
Каждый из них содержит одно число, например 64-битное целое; само значение может быть фрагментом каких-то данных, кодом определенной инструкции, либо же ссылкой на адрес других данных.
Файл регистров в процессоре настольного компьютера довольно мал – например, в Intel Core i9-9900KF их на каждое ядро по два банка: один для целых чисел, содержащий 180 64-битных регистров, другой – для векторов (небольших массивов чисел), имеющий 168 256-битных регистров. Таким образом, общий файл регистров для каждого ядра чуть меньше 7 Кб. Для сравнения, размер файла регистров в потоковых мультипроцессорах (графических эквивалентах ядер CPU) в NVIDIA GeForce RTX 2080 Ti равен 256 Кб.
Регистры – это SRAM-память, как и кэш, но работающие на той же скорости, что и обслуживаемые ими ALU, вводя и выводя данные за один такт. Но они не предназначены для хранения большого количества данных (а только одного их фрагмента), поэтому поблизости всегда есть несколько блоков памяти побольше: это кэш уровня 1, L1 (Level 1).
Процессор Intel Skylake, увеличенное изображение одного из ядер. Источник: Wikichip
На фото крупным планом показано ядро процессора Intel Skylake для PC.
Зелёным прямоугольником слева выделены ALU и файлы регистров. В центре вверху белым прямоугольником показан кэш данных 1 уровня (L1 D cache). Его объём небольшой, всего 32 Кб, но, как и регистры, он находится очень близко к логическим блокам и работает с той же скоростью, что и они.
Второй белый прямоугольник – это кэш инструкций 1 уровня (L1 Ins cache), также размером 32 Кб. Как следует из названия, здесь хранятся различные команды, готовые к разделению на более мелкие – так называемые микрооперации (обычно обозначаемые как μops) для выполнения ALU. Для них также есть свой кэш – так сказать, кэш нулевого уровня (L0 cache), поскольку он меньше (всего на 1500 операций) и ближе, чем кэши L1.
Вы можете спросить: а почему эти блоки SRAM такие маленькие? Почему бы не увеличить их размер до мегабайта хотя бы? Во-первых, основные логические блоки процессора занимают в чипе такое же пространство, как и кэши данных и инструкций вместе взятые, поэтому увеличение размеров последних приведет и к существенному увеличению общего размера кристалла.
А во-вторых (и в-главных), причина, по которой они хранят всего несколько килобайт, заключается в том, что время, необходимое для поиска и извлечения данных, увеличивается по мере увеличения объёма памяти. Кэш L1 должен быть очень быстрым, поэтому необходим компромисс между размером и скоростью – в лучшем случае требуется около 5 тактовых циклов (чуть больше для значений с плавающей точкой), чтобы предоставить данные из этого кэша, готовые к использованию.
Кэш L2 в Skylake: 256 Кбайт удовольствия SRAM
Но если бы это был единственный кэш внутри процессора, то производительность последнего резко упала бы. Вот почему все процессоры имеют другой уровень памяти, встроенный в ядра: кэш 2 уровня, L2 (Level 2 cache). Это общее хранилище для инструкций и данных.
Его размер всегда несколько больше, чем L1: к примеру, в процессорах AMD Zen 2 устанавливается до 512 Кб памяти L2, поэтому кэши более низкого уровня обеспечиваются должным образом. Но за этот дополнительный размер приходится платить: на поиск и передачу данных из этого кэша уходит примерно вдвое больше времени по сравнению с L1.
Возвращаясь в прошлое, во времена оригинального Intel Pentium, кэш-память 2 уровня представляла собой отдельную микросхему – либо на небольшой съёмной плате расширения по подобию RAM DIMM, либо встроенную в материнскую плату. Затем кэш L2 переехал в сам корпус процессора, и в конечном итоге был интегрирован в кристалл, что стало причиной появления Pentium III и AMD K6-III.
За этим развитием вскоре последовал другой уровень кэш-памяти, предназначенный для поддержки более низких уровней, и это было связано с появлением многоядерных чипов.
Intel Kaby Lake. Источник: Wikichip
На этой макрофотографии чипа Intel Kaby Lake мы видим его 4 ядра слева от центра (интегрированный GPU почти полностью занимает половину кристалла справа от центра). Каждое
ядро имеет свой собственный «личный» набор кэшей L1 и L2 (белые и желтый прямоугольники), но кроме этого имеет ещё и третий банк блоков SRAM (выделены красным).
Несмотря на то, что кэш 3 уровня (Level 3 cache) непосредственно окружает каждое ядро, он является общим для всех ядер – любое из ядер может свободно получать доступ к содержимому L3 другого ядра. Этот кэш-уровень намного больше (от 2 до 32 Мб), но и намного медленнее – в среднем на 30 циклов, особенно если ядру необходимо использовать данные, которые находятся в дальнем блоке кэша.
Ниже мы видим строение ядра в архитектуре AMD Zen 2: кэши данных и инструкций L1 (белым) объемом 32 Кб, L2 (жёлтым) – 512 Кб, и огромный блок кэша L3 (красным) размером 4 Мб.
Увеличенное изображение ядра процессора AMD Zen 2. Источник: Fritzchens
Fritz
Постойте! Как 32 Кб могут занимать больше физического пространства, чем 512 Кб? Если L1 хранит так мало данных, почему он пропорционально значительно больше, чем кэши L2 и L3?
Для чего нужен кэш в процессоре?
Пришло время ответить на главный вопрос этой статьи, на что влияет кэш процессора? Данные поступают из ОЗУ в кэш 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 такой проблемы нет.
Можно сделать вывод, чем больше объем кэша, тем выше производительность, поскольку процессор сможет получить в большем количестве случаев нужные ему данные быстрее. Однако, стоит обращать внимание не только на объем кэша процессора, но и на его архитектуру.
Собственная память процессора
Только что мы отследили иерархию носителей информации с разным уровнем приоритетности: от HDD к ОЗУ, и далее к SRAM. Но внутри cash процессора существует свое разделение, выполненное по аналогичному принципу: более востребованные данные располагаются в секторе меньшего объема, но с большей скоростью считывания.
В самом теле процессора встроен кэш первого (начального уровня), обозначаемый L1 и имеющий объем несколько Кбайт. Обычно он состоит из нескольких блоков, каждый из которых обслуживает отдельное ядро процессора. Далее идет более вместительный кэш второго уровня L2 с меньшей скоростью записи-считывания, который может состоять из одного или нескольких блоков. В современных процессорах имеется и кэш уровня L3 и даже L4.
Последний используется в специальных моделях, предназначенных для работы в мощных серверах. В процессоре вашего ПК так же имеется кэш память. И я подскажу, где посмотреть размер L1, L2 или L3 (если таковая присутствует).
Первый способ – в интернете, по точному названию вашего процессора, которое отображается в свойствах «Моего компьютера».
Второй вариант – загрузить одну из полезных программ CPU-Z или AIDA64 и там среди прочей информации о ЦП вы найдете сведения об уровнях и размерах cash.
Кроме того, различают три вида кэша процессора, каждый из которых имеет определенную специализацию:
- для обработки машинного кода – кэш инструкций;
- для считывания и записи информации – кэш данных;
- буфер ассоциативной трансляции (TLB) – для перевода логических адресов в физические (при работе с кодом и данными).
Выводы
Теперь вы знаете за что отвечает кэш процессора и как он работает. Дизайн кэша постоянно развивается, а память становится быстрее и дешевле. Компании AMD и Intel уже провели множество экспериментов с кэшем, а в Intel даже пытались использовать кэш уровня L4. Рынок процессоров развивается куда быстрее, чем когда-либо. Архитектура кэша будет идти в ногу с постоянно растущей мощностью процессоров.
Кроме того, многое делается для устранения узких мест, которые есть у современных компьютеров. Уменьшение задержки работы с памятью одна из самых важных частей этой работы. Будущее выглядит очень многообещающе.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
No related photos.
Оцените статью:
(18 оценок, среднее: 4,44 из 5)
Tweet Pin It
Об авторе
Автор:
Palash Volvoikar
Оригинал:
https://www.makeuseof.com/tag/what-is-cpu-cache/
Переводчик:
admin
Администратор te4h.ru, интересуюсь новыми технологиями, криптовалютой, искусственным интеллектом, свободным программным обеспечением и Linux.
2 комментария
- bic 24.11.2019 Ответить
спасибо. - рако 28.08.2020 Ответить
как L3 кеш влеяет на fps сравнения нету, статия негодный кто хочет замерит ьскорость ОЗУ и задержку (она же назыв. пинг) в наносекундах у кешей всех уровней помимо озу и их скорость добро пожаловать в Aida64 Тест кеша и памяти (отдельное окно, искать в меню наверху)
Насколько важен кэш процессора? | Small Business
На заре компьютерных технологий все работало немного медленнее, чем то, что мы видим сегодня. Это произошло не только потому, что центральные процессоры компьютеров — ЦП — были медленными, но и потому, что производительность сильно зависела от ограниченной памяти.
По мере ускорения работы микропроцессоров память по-прежнему оставалась медленной, поэтому возникла необходимость создать нечто, называемое «кешем», чтобы закрыть этот пробел. Без кеша ваша система работала бы намного медленнее.
Кэш ЦП и Память
Вы можете думать, что то, что вы делаете на своем компьютере, непредсказуемо, но правда в том, что ваше оборудование знает вас лучше, чем вы думаете. ЦП захватывает часто используемую информацию из основной памяти в кэш, к которому вы можете получить доступ, не возвращаясь полностью в основную память компьютера каждый раз, когда вы выполняете задачу.
Попадание в кэш означает, что ваша система смогла успешно получить необходимую информацию из этого хранилища.Однако иногда ваша система будет испытывать ошибку в кэше , что означает, что она не может получить данные из кеша и вместо этого должна искать их в другом месте. К счастью, существуют разные типы кешей, а это значит, что вашей системе не придется работать сверхурочно просто потому, что информация не может быть немедленно извлечена.
Местоположение ссылки
Концепция кэша процессора относится к более общему процессу информатики, называемому местоположением ссылки. Местоположение ссылки относится к способности программного обеспечения ссылаться на подмножество ячеек памяти в течение установленного периода времени. Обычно эти места находятся рядом друг с другом. Это делается с помощью инструкций, записанных в виде циклов и вызовов подпрограмм.
Есть два способа перемещения данных из основной памяти в кэш-память компьютера. С временным местоположением компьютер знает, что информация скоро будет использоваться, поэтому она хранится в кэш-памяти, чтобы упростить поиск. Другой способ — это s__patial locality , который относится к ситуации, когда информация извлекается, но близкие к ней данные также могут скоро потребоваться.
Различные уровни кеш-памяти
Современные компьютеры имеют различные уровни кэш-памяти, поэтому важно обозначить разницу между кешами L1, L2 и L3 . Ранние процессоры использовали только один уровень кеша, но по мере развития технологий возникла необходимость разделить эти области извлечения памяти, чтобы системы могли не отставать. Эти три уровня:
- Кэш L1 — это основной кэш. Он быстрый, но при этом небольшой, поэтому он ограничен в том, что в нем можно хранить.Обычно он встроен в микросхему процессора.
- Кэш L2 — также известный как вторичный кэш, кэш L2 может быть встроен в чип процессора или в отдельный чип с высокоскоростной шиной, которая соединяет его с процессором.
- Кэш L3 — Этот кэш процессора представляет собой специализированную память, которая может служить резервной копией для ваших кешей L1 и L2. Это может быть не так быстро, но повышает производительность L1 и L2.
Определение производительности кэш-памяти
Попадания и пропуски кеш-памяти могут действительно многое рассказать ИТ-специалистам о производительности компьютера.Контролируя кэш-память в микропроцессоре , вы можете взглянуть на коэффициент совпадений, чтобы увидеть, где производительность может отставать. Это делается по следующей формуле: коэффициент попадания = попадание / (попадание + промах) = количество попаданий / общее количество обращений.
Если коэффициент совпадений отключен, вы можете сделать несколько вещей, чтобы улучшить производительность кеш-памяти вашего компьютера. Вы можете использовать на больший размер блока кэша , использовать более высокую ассоциативность, снизить частоту промахов или штраф за промахи вашего компьютера или уменьшить время попадания в кэш.
Увеличение кэш-памяти
Если вы заметили, что ваш компьютер работает медленно, возможно, вы захотите увеличить объем кэш-памяти. Это делается путем обновления вашего процессора и микросхем кеша. Конечно, самый простой способ сделать это — просто купить новый компьютер, но если в остальном он работает идеально, возможно, стоит его частичное обновление.
Обычно единственный способ улучшить кэш-память — это выпотрошить компьютер; вы обнаружите, что большинство материнских плат не поддерживают модернизацию вашего процессора.Однако, если у вас более старая материнская плата, на ней могут быть слоты, позволяющие просто вставить кэш L2 или L3 большей емкости.
Другие кэши
Способ отображения кэш-памяти в микропроцессоре также изменился с годами. Первоначально компьютеры использовали архитектуру со сквозной записью , что означало, что, когда данные попадали в кэш, они также автоматически обновлялись в оперативной памяти компьютера. Однако это, как правило, замедляло работу, хотя и снижало риск потери данных.
Современные компьютеры устроены так, что оперативная память не обновляется сразу после записи данных в кэш. Эти данные хранятся в кеш-памяти процессора, а затем отправляются в ОЗУ с заданными интервалами. Если данные старые или отсутствуют, оперативная память может получить эти обновления из кеша, чтобы минимизировать риски, но в противном случае они остаются в кеше, чтобы поддерживать максимальную рабочую скорость компьютера.
Отображение кэш-памяти
Помимо иерархии L1, L2 и L3, кэш ЦП также использует конфигурации для управления записью данных.Существует три различных типа конфигураций:
- Кэш с прямым отображением — В этой конфигурации каждый блок отображается в одно место кэша, указанное заранее.
- Полностью ассоциативное отображение кэша — Эта конфигурация похожа на структуру кэша с прямым отображением, но блок может быть сопоставлен с любым расположением, а не с конкретным расположением кэша.
- Установить ассоциативное сопоставление кэша — Это находится между двумя крайностями: прямое сопоставление и полностью ассоциативное сопоставление кэша.Хотя отображение задано заранее, каждый блок отображается в подмножество различных мест кэша, а не только в одно назначенное.
Выключение питания и память
Если вы знаете что-нибудь о памяти с произвольным доступом, или ОЗУ, вы знаете, что она временно хранит информацию. Чем больше оперативной памяти у вашего компьютера, тем меньше работы вашему процессору приходится выполнять для выполнения задач, что предотвращает нежелательные замедления. На компьютере есть два основных типа ОЗУ: динамическое ОЗУ (DRAM) и статическое ОЗУ (SRAM).
Скорее всего, ваша система работает на DRAM, которая является распространенным типом, поскольку SRAM более дорогая. Каждая ячейка памяти в DRAM имеет схему с транзистором и конденсатором, причем конденсатор хранит каждый бит данных. Для хранения данных DRAM должна обновляться каждые несколько миллисекунд, поскольку информация имеет тенденцию к утечке через конденсаторы.
Кэш и основная память
Как и DRAM, кэш ЦП теряет свою память при выключении компьютера. Включите его снова, и ваш кеш начнет собирать информацию с нуля.
Между DRAM и кеш-памятью ЦП есть некоторые различия:
- Вы найдете DRAM на материнской плате, а ЦП будет подключаться к ней через шину.
- Кэш-память обычно вдвое превышает скорость DRAM.
- В отличие от DRAM, которую необходимо часто обновлять, кэш не требует обновления .
Кэш против виртуальной памяти
Когда вы слышите о чем-то, что называется «виртуальной памятью», вы можете спутать это с кешем.Виртуальная память — это то, что операционная система создает для предотвращения потери данных из-за нехватки физической памяти в данный момент. Это отличается от кеша тем, что операционная система перемещает неактивные данные из оперативной памяти системы в дисковое хранилище.
Виртуальная память позволяет компьютеру запускать несколько программ по отдельности без риска потери данных. Операционная система не только перемещает данные в хранилище, но и связывает активную память с неактивной памятью на этих дисках, чтобы все работало эффективно.Вы, конечный пользователь, никогда не подозреваете, что это происходит.
Ускорение работы существующего компьютера
Если вы обнаружите, что ваш компьютер работает медленно, вы можете кое-что сделать, не покупая новый компьютер или не копаясь слишком глубоко во внутреннем устройстве того, который у вас есть. Если вы испытываете замедление, возможно, вам просто не хватает оперативной памяти для выполнения различных задач, которые вы пытаетесь заставить ваш компьютер выполнять.
Когда вы выключаете компьютер, кэш процессора и оперативная память полностью истощаются.Перезагрузка компьютера может мгновенно устранить любые проблемы, связанные с памятью. Если вы один из многих, кто редко перезагружается, ваши текущие проблемы с производительностью можно решить, просто установив каждый день время для перезагрузки компьютера.
Вы можете проверить использование памяти в диспетчере задач Windows или мониторе активности Mac. Представление о том, что происходит за кулисами, может стать отличным способом решить, что вам нужно сделать, чтобы повысить производительность. Это может быть просто определенное приложение, работающее в фоновом режиме, потребляющее слишком много памяти.Либо удаление, либо настройка этого приложения так, чтобы оно не открывалось при запуске, можно решить эту проблему всего за несколько шагов.
Покупка нового компьютера
Если вы покупаете новый компьютер, вы можете получить самое большое преимущество, ища устройство с большим объемом оперативной памяти. Чем больше оперативной памяти в вашей системе, тем больше программ вы можете запускать одновременно, не влияя на производительность. Это особенно верно, если вы участвуете в ресурсоемких действиях, таких как потоковое видео и игры.
Ваш процессор также будет сильно влиять на производительность вашего компьютера. Лучше всего подойдет процессор Intel или AMD . Эксперты рекомендуют процессор Intel 9-го поколения Core, если вы планируете играть, и AMD Ryzen 2000 подойдет, если вы планируете редактировать видео. Если вы просто выполняете стандартные задачи, любая из них, скорее всего, значительно повысит объем кэш-памяти вашего микропроцессора.
Установка дополнительной оперативной памяти
Если вы просто хотите повысить производительность, увеличение объема оперативной памяти — один из самых простых способов поднять настроение вашему компьютеру.Во-первых, вам нужно убедиться, что ваша материнская плата поддерживает скорость и размер оперативной памяти, которую вы будете использовать, а также ее тип. Скорее всего, вы будете в безопасности, если будете использовать оперативную память DDR4 с диапазоном от 2133 МГц до 4700 МГц и . Старые ПК часто подходят только к DDR3, поэтому вам может потребоваться вложить средства в более старые модули, если вы хотите остаться с вашей нынешней материнской платой.
Вот шаги, которые необходимо предпринять, чтобы установить больше ОЗУ:
- Выключите систему и отсоедините кабель питания.Отсоедините все остальные кабели от задней панели компьютера.
- Снимите боковую панель, чтобы вам было легче добраться до разъемов RAM внутри вашего компьютера.
- Извлечь любую установленную вами оперативную память.
- Установите новую оперативную память, совместив края со слотами материнской платы и надавив на них с усилием. Это должно происходить довольно легко. Если нет, возможно, вам нужно перевернуть их на другую сторону.
- Подвигайте палочки RAM, когда они защелкнулись на месте, чтобы убедиться, что они вставлены до упора.
- Установите на место боковую панель и снова вставьте все кабели, включая кабель питания.
- Загрузите вашу систему. Убедитесь, что система регистрирует новый объем ОЗУ.
Что влияет на производительность процессора? Вот все, что вам нужно знать
Это правда, что если вы потратите тысячи долларов на покупку самого дорогого процессора, доступного на рынке, в любой момент времени, он будет работать лучше, чем альтернативы. Однако он может работать только на 5–10 процентов лучше, чем ЦП следующего уровня, который на несколько сотен долларов дешевле.Таким образом, важно знать факторы, влияющие на производительность ЦП, чтобы вы могли принять более правильное решение о покупке.
Что такое CPU
ЦП (центральный процессор), иногда называемый «процессором», является одним из наиболее важных компонентов компьютерной системы. Будучи мозгом компьютерной системы, ее задача — заботиться обо всех вычислениях данных и обеспечивать их обработку в кратчайшие сроки.
CPU — это не то, что вы можете увидеть снаружи компьютера.Фактически, вы не сможете увидеть процессор на полностью собранном ПК. Чтобы увидеть это, вам нужно снять корпус компьютера, отсоединить провод и снять радиатор (и вентилятор), и только тогда вы сможете увидеть поверхность процессора. По форме процессор представляет собой небольшой квадратный чип со множеством контактов под ним.
На изображениях ниже показаны задняя и верхняя части ЦП.
Как работает процессор
Для простоты принцип работы ЦП можно проиллюстрировать следующими тремя шагами:
- Когда вы щелкаете, чтобы запустить приложение, необработанная инструкция сначала выбирается с жесткого диска (иногда из памяти) и отправляется в ЦП для обработки.
- Когда ЦП получает инструкцию, он выполняет логику и вычисляет результат.
- Как только ЦП завершит обработку, он отправит результат на соответствующее устройство для вывода пользователю.
Хотя это может показаться простым, все три шага должны быть выполнены за несколько секунд. Задержка в любом из этих шагов приведет к задержке в работе компьютера.
Тактовая частота
Каждый ЦП оснащен внутренними часами, которые обеспечивают ему рабочий «ритм».«Тактовая частота», также известная как «Тактовая частота», относится к количеству операций, которые ЦП может выполнить за одну секунду.
Это число в Гц (Герцы и, соответственно, мегагерцы и гигагерцы, обозначаемые как МГц и ГГц), которое обычно отображается рядом с названием процессора.
Проблема в том, что для того, чтобы работать быстрее, вы должны пропускать больше электроэнергии через ЦП, а он выделяет тепло. После верхнего предела в 4 ГГц трудно поддерживать достаточное охлаждение процессора.
Производительность процессора в Гц влияет в основном на однопоточные приложения.Большинство современных программ, таких как популярные браузеры Chrome и Firefox, разработано для использования преимуществ нескольких ядер (подробнее об этом в следующем разделе) и потоков, а не только в зависимости от тактовой частоты. Как правило, компьютер лучше работает с многоядерным процессором, но с меньшей тактовой частотой, чем с более быстрым, но одноядерным.
Количество ядер
Поскольку увеличивать реальную скорость становилось все труднее и труднее, производители процессоров решили добавить возможности многозадачности, добавив больше ядер к процессору.
Это медвежья услуга — описывать многоядерные процессоры как эквивалент «соединения двух или более процессоров в одном корпусе». Они могут выглядеть так для среднего потребителя, но их реальный дизайн намного умнее, чем просто склеить два процессора рядом друг с другом.
Сосуществуя на одном кристалле, отдельные ядра многоядерного процессора совместно используют некоторые ресурсы, как для сокращения производственных затрат, так и для повышения производительности. Например, они могут совместно использовать часть кэш-памяти, соединения с другими элементами на материнской плате и т. Д.
Многоядерные процессоры могут быть однородными или разнородными. Однородные ЦП содержат два или более идентичных ядра. Гетерогенные процессоры содержат ядра разных типов. Например, процессоры в современных смартфонах обычно включают центральное ядро, которое лучше выполняет общие операции, и несколько более мелких, которые помогают с фотографией, искусственным интеллектом и т. Д.
Поскольку производители процессоров обратили свое внимание на добавление большего количества ядер, вместо того, чтобы еще больше увеличивать предельную частоту ГГц, современное программное обеспечение и операционные системы последовали их примеру.Большинство современного программного обеспечения уже использует преимущества нескольких ядер, но вы все равно можете найти множество инструментов, приложений и даже игр, которые работают лучше с более высокой скоростью одноядерного процессора, чем с многоядерным. Это происходит потому, что некоторые рабочие нагрузки просто невозможно распараллелить, разделить на более мелкие части и распределить по нескольким ядрам.
Кэш и архитектура
В те времена, когда использовались 8-битные технологии, оперативная память компьютера была достаточно быстрой, чтобы обеспечить центральный процессор всем необходимым. Поскольку процессоры продолжали ускоряться, оперативная память начала догонять.Именно тогда в микс был добавлен кеш.
Кэш, представляющий собой небольшую и чрезвычайно быструю память, добавляется к ЦП для немедленного хранения инструкций из ОЗУ. Поскольку кэш работает с той же скоростью, что и ЦП, он может быстро предоставлять информацию ЦП в кратчайшие сроки без каких-либо задержек.
Есть разные уровни кеширования. Кэш уровня 1 (L1) — это самая простая форма кеш-памяти, которую можно найти на каждом ЦП. Кэш уровня 2 (L2) имеет больший объем памяти и используется для хранения более непосредственных инструкций.Как правило, кэш L1 кэширует кэш L2, который, в свою очередь, кэширует RAM, которая, в свою очередь, кэширует данные жесткого диска. С новой многоядерной технологией есть даже кэш L3 или L4, который больше по размеру и совместно используется различными ядрами.
Стоит отметить, что в будущем они могут стать менее важными, если кто-то найдет способ значительно ускорить соединение между ЦП и ОЗУ. Мы упоминаем об этом, потому что AMD , возможно, каким-то образом удалось это реализовать, и это одна из причин, по которой их процессоры на архитектуре Zen нового поколения являются захватывающими.
Вышеуказанные факторы влияют на производительность процессора. Вы также можете узнать о различиях между процессорами Intel и AMD и о том, как выбрать процессор AMD.
Эта статья полезна?
да
Нет
Одиссей Курафалос
Настоящая жизнь
OK началась примерно в 10 лет, когда он получил свой первый компьютер — Commodore 128.С тех пор он плавит клавиши, печатая круглосуточно, без выходных, пытаясь распространить «Слово о технике» среди всех, кто достаточно заинтересован, чтобы его слушать. Или, скорее, прочтите.
Как работает кэш ЦП? Что такое кэш L1, L2 и L3?
Компьютерные процессоры в последние годы значительно продвинулись вперед. Транзисторы становятся меньше с каждым годом, и достижения достигают точки, когда закон Мура становится излишним.
Когда дело доходит до процессоров, важны не только транзисторы и частоты, но и кэш.
Возможно, вы слышали о кэш-памяти, когда обсуждались процессоры (центральные процессоры).Однако мы не уделяем достаточно внимания этим номерам кэш-памяти ЦП, и они не являются основным моментом в рекламе ЦП.
Итак, насколько важен кеш ЦП и как он работает?
Что такое кэш-память процессора?
Проще говоря, кэш памяти ЦП — это просто действительно быстрый тип памяти.На заре вычислений скорость процессора и скорость памяти были низкими. Однако в 80-е годы скорость процессоров начала быстро расти. В то время системная память (ОЗУ) не могла справиться с растущими скоростями ЦП или соответствовать им, и поэтому родился новый тип сверхбыстрой памяти: кэш-память ЦП.
Теперь ваш компьютер имеет внутри несколько типов памяти.
Существует первичное хранилище, такое как жесткий диск или твердотельный накопитель, в котором хранится основная часть данных — операционная система и программы.
Затем у нас есть оперативная память, обычно известная как ОЗУ.Это намного быстрее, чем основное хранилище, но это только краткосрочный носитель. Ваш компьютер и программы на нем используют оперативную память для хранения часто используемых данных, помогая делать действия на вашем компьютере приятными и быстрыми.
Наконец, ЦП имеет внутри себя даже более быстрые блоки памяти, известные как кэш памяти ЦП.
Компьютерная память имеет иерархию, основанную на ее скорости работы.Кэш ЦП находится на вершине этой иерархии, будучи самым быстрым. Он также находится ближе всего к тому месту, где происходит центральная обработка, поскольку является частью самого ЦП.
Компьютерная память также бывает разных типов.
Кэш-память — это форма статической ОЗУ (SRAM), в то время как обычная системная оперативная память известна как динамическая оперативная память (DRAM).Статическая RAM может хранить данные без необходимости постоянного обновления, в отличие от DRAM, что делает SRAM идеальным для кэш-памяти.
Как работает кэш ЦП?
Программы и приложения на вашем компьютере представляют собой набор инструкций, которые процессор интерпретирует и выполняет.Когда вы запускаете программу, инструкции передаются из основного хранилища (вашего жесткого диска) в ЦП. Здесь в игру вступает иерархия памяти.
Данные сначала загружаются в ОЗУ, а затем отправляются в ЦП.В наши дни процессоры способны выполнять огромное количество инструкций в секунду. Чтобы в полной мере использовать свою мощность, ЦП необходим доступ к сверхбыстрой памяти, в которой задействован кеш ЦП.
Контроллер памяти берет данные из ОЗУ и отправляет их в кэш ЦП.В зависимости от вашего процессора, контроллер находится на процессоре или на чипсете северного моста на вашей материнской плате.
Затем кэш памяти выполняет обмен данными внутри ЦП.Иерархия памяти существует и в кеш-памяти ЦП.
По теме: что такое процессор и для чего он нужен?
Уровни кэш-памяти ЦП: L1, L2 и L3
Кэш-память ЦП разделена на три «уровня»: L1, L2 и L3.Иерархия памяти снова соответствует скорости и, следовательно, размеру кеша.
Итак, влияет ли размер кеш-памяти процессора на производительность?
Кэш L1
Кэш L1 (уровень 1) — это самая быстрая память, которая присутствует в компьютерной системе.Что касается приоритета доступа, кэш L1 содержит данные, которые, скорее всего, потребуются ЦП при выполнении определенной задачи.
Размер кеша L1 зависит от процессора.Некоторые топовые потребительские процессоры теперь имеют кэш-память L1 1 МБ, например Intel i9-9980XE, но они стоят огромных денег, и их все еще мало. Некоторые серверные чипсеты, такие как линейка Intel Xeon, также имеют кэш-память L1 объемом 1-2 МБ.
Не существует «стандартного» размера кэша L1, поэтому перед покупкой необходимо проверить спецификации ЦП, чтобы определить точный размер кеш-памяти L1.
Кэш L1 обычно делится на две части: кэш инструкций и кэш данных.Кэш инструкций имеет дело с информацией об операции, которую должен выполнить ЦП, в то время как кэш данных содержит данные, над которыми должна быть выполнена операция.
Кэш L2
Кэш L2 (уровень 2) медленнее, чем кеш L1, но больше по размеру.Если размер кэша L1 может измеряться в килобайтах, то в современных кэшах памяти L2 — в мегабайтах. Например, у AMD Ryzen 5 5600X с высоким рейтингом есть кэш L1 384 КБ и кэш L2 3 МБ (плюс кэш L3 32 МБ).
Размер кэша L2 зависит от процессора, но обычно его размер составляет от 256 КБ до 8 МБ.Большинство современных процессоров имеют кэш L2 размером более 256 КБ, и теперь этот размер считается небольшим. Кроме того, некоторые из самых мощных современных процессоров имеют больший объем кеш-памяти L2, превышающий 8 МБ.
Что касается скорости, кэш L2 отстает от кеша L1, но все же намного быстрее, чем ваша системная RAM.Кэш памяти L1 обычно в 100 раз быстрее, чем ваша оперативная память, а кэш L2 примерно в 25 раз быстрее.
Кэш L3
В кэш L3 (уровень 3).Раньше кеш-память L3 фактически находилась на материнской плате. Это было очень давно, когда большинство процессоров были одноядерными. Теперь кэш L3 в вашем процессоре может быть огромным, с топовыми потребительскими процессорами с кешами L3 до 32 МБ. Некоторые кэши L3 ЦП серверов могут превышать это значение, составляя до 64 МБ.
Кэш L3 — самый большой, но также самый медленный блок кэш-памяти.Современные процессоры включают кэш L3 на самом процессоре. Но в то время как кэш L1 и L2 существует для каждого ядра на самом чипе, кэш L3 больше похож на общий пул памяти, который может использовать весь чип.
На следующем изображении показаны уровни кэш-памяти ЦП для ЦП Intel Core i5-3570K:
Обратите внимание, как кэш L1 разделен на две части, а кеш L2 и L3 больше соответственно.
Сколько мне нужно кэш-памяти ЦП?
Хороший вопрос.Как и следовало ожидать, чем больше, тем лучше. Последние процессоры, естественно, будут включать в себя больше кэш-памяти ЦП, чем предыдущие поколения, а также потенциально более быструю кеш-память. Вы можете научиться эффективно сравнивать процессоры. Информации очень много, и изучение того, как сравнивать и сравнивать разные процессоры, может помочь вам принять правильное решение о покупке.
Как данные перемещаются между кешами памяти ЦП?
Большой вопрос: как работает кеш-память процессора?
Проще говоря, данные передаются из ОЗУ в кэш L3, затем в L2 и, наконец, в L1.Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэше L1. Если ЦП находит это, состояние называется попаданием в кэш. Затем он переходит к поиску в L2, а затем в L3.
Если ЦП не находит данные ни в одном из кешей памяти, он пытается получить к ним доступ из системной памяти (ОЗУ).Когда это происходит, это называется промахом кеша.
Теперь, как мы знаем, кэш предназначен для ускорения обмена информацией между основной памятью и процессором.Время, необходимое для доступа к данным из памяти, называется «задержкой».
Кэш-память L1 имеет самую низкую задержку, будучи самой быстрой и ближайшей к ядру, а L3 — самой высокой.Задержка кеш-памяти увеличивается, когда происходит промах кеш-памяти, поскольку ЦП должен получить данные из системной памяти.
Задержка продолжает уменьшаться по мере того, как компьютеры становятся быстрее и эффективнее.ОЗУ DDR4 с низкой задержкой и сверхбыстрые твердотельные накопители сокращают время задержки, делая всю вашу систему быстрее, чем когда-либо. При этом также важна скорость вашей системной памяти.
Будущее кэш-памяти ЦП
Дизайн кэш-памяти постоянно развивается, особенно по мере того, как память становится дешевле, быстрее и плотнее.Например, одна из последних инноваций AMD — память Smart Access и Infinity Cache, которые повышают производительность компьютера.
AMD Vs.Intel: какой игровой процессор лучший?
Если вы создаете игровой ПК и разрываетесь между процессорами AMD и Intel, самое время узнать, какой процессор лучше всего подходит для вашей игровой системы.
Читать далее
Об авторе
Гэвин Филлипс
(Опубликовано 876 статей)
Гэвин — младший редактор отдела Windows and Technology Explained, постоянный автор Really Useful Podcast и регулярный обозреватель продуктов.У него есть степень бакалавра (с отличием) в области современного письма с использованием методов цифрового искусства, разграбленных на холмах Девона, а также более десяти лет профессионального писательского опыта. Он любит много пить чая, настольные игры и футбол.
Более
От Гэвина Филлипса
Подпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.
Что такое кэш-память? Кэш-память в компьютерах, объяснение
Кэш-память — это компьютерный компонент на основе микросхемы, который делает получение данных из памяти компьютера более эффективным. Он действует как временная область хранения, из которой процессор компьютера может легко извлекать данные. Эта область временного хранения, известная как кэш, более доступна для процессора, чем основной источник памяти компьютера, обычно это некоторая форма DRAM.
Кэш-память иногда называют памятью ЦП (центрального процессора), потому что она обычно интегрирована непосредственно в микросхему ЦП или размещена на отдельной микросхеме, которая имеет отдельную шину, соединяющуюся с ЦП. Следовательно, он более доступен для процессора и способен повысить эффективность, поскольку физически находится рядом с процессором.
Чтобы быть ближе к процессору, кэш-память должна быть намного меньше, чем основная память. Следовательно, у него меньше места для хранения.Кроме того, он дороже, чем основная память, поскольку представляет собой более сложный чип, обеспечивающий более высокую производительность.
Чем он жертвует в размере и цене, он компенсируется скоростью. Кэш-память работает от 10 до 100 раз быстрее, чем ОЗУ, и для ответа на запрос ЦП требуется всего несколько наносекунд.
Имя фактического оборудования, которое используется для кэш-памяти, — это высокоскоростная статическая оперативная память (SRAM). Имя оборудования, которое используется в основной памяти компьютера, — это динамическая память с произвольным доступом (DRAM).
Кэш-память не следует путать с более широким термином «кэш». Кэши — это временные хранилища данных, которые могут существовать как в аппаратном, так и в программном обеспечении. Кэш-память относится к определенному аппаратному компоненту, который позволяет компьютерам создавать кеши на различных уровнях сети.
Типы кэш-памяти
Кэш-память — это быстро и дорого. Традиционно его относят к «уровням», которые описывают его близость и доступность для микропроцессора. Есть три общих уровня кеширования:
Кэш-память L1 , или первичная кэш-память, очень быстрая, но относительно небольшая и обычно встраивается в микросхему процессора как кэш-память ЦП.
Кэш L2 , или вторичный кэш, часто более емкий, чем L1. Кэш L2 может быть встроен в ЦП, или он может быть на отдельном кристалле или сопроцессоре и иметь высокоскоростную альтернативную системную шину, соединяющую кэш и ЦП. Таким образом, трафик на основной системной шине не замедляется.
Кэш-память 3-го уровня (L3) — это специализированная память, разработанная для повышения производительности L1 и L2. L1 или L2 могут быть значительно быстрее, чем L3, хотя L3 обычно вдвое превышает скорость DRAM.В многоядерных процессорах каждое ядро может иметь выделенный кэш L1 и L2, но они могут совместно использовать кеш L3. Если кэш L3 ссылается на инструкцию, он обычно повышается до более высокого уровня кеша.
В прошлом кэши L1, L2 и L3 создавались с использованием комбинированных компонентов процессора и материнской платы. В последнее время наблюдается тенденция к консолидации всех трех уровней кэширования памяти на самом ЦП. Вот почему основной способ увеличения размера кэша стал переходить от приобретения конкретной материнской платы с различными наборами микросхем и архитектур шины к покупке ЦП с нужным количеством интегрированного кэша L1, L2 и L3.
Вопреки распространенному мнению, установка флэш-памяти или более динамической ОЗУ ( DRAM ) в системе не приведет к увеличению кэш-памяти. Это может сбивать с толку, поскольку термины кэширование памяти (буферизация жесткого диска) и кэш-память часто используются как взаимозаменяемые. Кэширование памяти с использованием DRAM или флэш-памяти для буферизации чтения с диска предназначено для улучшения операций ввода-вывода хранилища путем кэширования данных, которые часто используются в буфере, перед более медленным магнитным диском или лентой. Кэш-память, с другой стороны, обеспечивает буферизацию чтения для ЦП.
Схема архитектуры и потока данных типичного блока кэш-памяти.
Отображение кэш-памяти
Конфигурации кэширования продолжают развиваться, но кэш-память традиционно работает в трех различных конфигурациях:
- Кэш с прямым отображением имеет каждый блок, сопоставленный ровно с одной ячейкой кэш-памяти. Концептуально кэш с прямым отображением похож на строки в таблице с тремя столбцами: блок кеша, который содержит фактические данные, полученные и сохраненные, тег со всем или частью адреса данных, которые были получены, и бит флага, который показывает наличие в строке записи допустимого бита данных.
- Полностью ассоциативное отображение кэша аналогично прямому отображению по структуре, но позволяет отображать блок памяти в любую ячейку кеш-памяти, а не в заранее заданную ячейку кэш-памяти, как в случае с прямым отображением.
- Установить ассоциативное отображение кэша можно рассматривать как компромисс между прямым отображением и полностью ассоциативным отображением, в котором каждый блок отображается на подмножество ячеек кэша. Иногда его называют ассоциативным отображением N-way set, которое обеспечивает кэширование местоположения в основной памяти в любое из «N» ячеек в кэше L1.
Политики записи данных
Данные могут быть записаны в память различными способами, но два основных из них включают в себя кэш-память:
- Сквозная запись. Данные одновременно записываются как в кэш, так и в основную память.
- Обратная запись. Данные только изначально записываются в кэш. Затем данные могут быть записаны в основную память, но это не обязательно и не препятствует взаимодействию.
Способ записи данных в кэш влияет на согласованность и эффективность данных. Например, при использовании сквозной записи требуется больше операций записи, что приводит к задержке впереди. При использовании обратной записи операции могут быть более эффективными, но данные могут не согласовываться между основной и кэш-памятью.
Один из способов, которым компьютер определяет непротиворечивость данных, — это проверка грязного бита в памяти. Грязный бит — это дополнительный бит, включенный в блоки памяти, который указывает, была ли изменена информация.Если данные попадают в регистровый файл процессора с активным грязным битом, это означает, что он устарел и где-то есть более свежие версии. Этот сценарий более вероятен в сценарии обратной записи, поскольку данные записываются в две области хранения асинхронно.
Специализация и функционал
Помимо кэшей инструкций и данных, другие кэши предназначены для обеспечения специализированных системных функций. Согласно некоторым определениям, общий дизайн кэша L3 делает его специализированным кешем.В других определениях кэш инструкций и кэш данных разделены, и каждый из них называется специализированным кешем.
Буферы резервной трансляции (TLB) также являются специализированными кэшами памяти, функция которых заключается в записи виртуального адреса в преобразования физического адреса.
Другие кеши технически не являются кешами памяти. Дисковые кеши, например, могут использовать DRAM или флэш-память для обеспечения кэширования данных, аналогичного тому, что кеш-память выполняет с инструкциями ЦП.Если к данным часто обращаются с диска, они кэшируются в DRAM или кремниевой технологии хранения на основе флэш-памяти для более быстрого доступа и отклика.
Специализированные кэши также доступны для таких приложений, как веб-браузеры, базы данных, привязка сетевых адресов и поддержка протокола сетевой файловой системы на стороне клиента. Эти типы кэшей могут быть распределены между несколькими сетевыми узлами, чтобы обеспечить большую масштабируемость или производительность приложения, которое их использует.
Изображение иерархии памяти и того, как она функционирует
Населенный пункт
Способность кэш-памяти улучшать производительность компьютера основана на концепции локальности ссылок.Локальность описывает различные ситуации, которые делают систему более предсказуемой. Кэш-память использует эти ситуации для создания шаблона доступа к памяти, на который она может полагаться.
Есть несколько типов населенных пунктов. Два ключевых для кеша:
- Временное местонахождение. Это когда к одним и тем же ресурсам обращаются повторно за короткий промежуток времени.
- Пространственная местность. Это относится к доступу к различным данным или ресурсам, которые находятся рядом друг с другом.
Производительность
Кэш-память важна, поскольку повышает эффективность извлечения данных. В нем хранятся программные инструкции и данные, которые многократно используются в работе программ, или информация, которая может понадобиться ЦП в следующий раз. Процессор компьютера может быстрее получить доступ к этой информации из кеша, чем из основной памяти. Быстрый доступ к этим инструкциям увеличивает общую скорость работы программы.
Помимо своей основной функции повышения производительности, кэш-память является ценным ресурсом для , оценивающего общую производительность компьютера.Пользователи могут сделать это, посмотрев на коэффициент попадания в кеш-память. Попадания в кэш — это случаи, когда система успешно извлекает данные из кеша. Промах в кеше — это когда система ищет данные в кеше, не может их найти и вместо этого ищет в другом месте. В некоторых случаях пользователи могут улучшить коэффициент попаданий, регулируя размер блока кэш-памяти — размер хранимых единиц данных.
Повышение производительности и возможность мониторинга производительности — это не только повышение общего удобства для пользователя.По мере того, как технологии развиваются и все чаще используются в критически важных сценариях, скорость и надежность становятся критически важными. Даже несколько миллисекунд задержки потенциально могут привести к огромным расходам в зависимости от ситуации.
Диаграмма сравнения кэш-памяти с другими типами памяти
Кэш и основная память
DRAM
служит основной памятью компьютера, выполняя вычисления с данными, полученными из хранилища. И DRAM, и кэш-память являются энергозависимыми запоминающими устройствами, которые теряют свое содержимое при отключении питания.DRAM устанавливается на материнской плате, и процессор обращается к ней через шинное соединение.
DRAM
обычно примерно вдвое меньше, чем кэш-память L1, L2 или L3, и намного дешевле. Он обеспечивает более быстрый доступ к данным, чем флэш-накопители, жесткие диски (HDD) и ленточные накопители. Он стал использоваться в последние несколько десятилетий, чтобы обеспечить место для хранения часто используемых дисковых данных для повышения производительности ввода-вывода.
DRAM необходимо обновлять каждые несколько миллисекунд. Кэш-память, которая также является типом оперативной памяти, не нуждается в обновлении.Он встроен непосредственно в ЦП, чтобы предоставить процессору максимально быстрый доступ к ячейкам памяти и обеспечивает время доступа со скоростью наносекунды к часто используемым инструкциям и данным. SRAM быстрее, чем DRAM, но, поскольку это более сложный чип, его производство также дороже.
Пример динамического ОЗУ.
Кэш и виртуальная память
Компьютер имеет ограниченный объем DRAM и еще меньше кэш-памяти. Когда выполняется большая программа или несколько программ, возможно полное использование памяти.Чтобы компенсировать нехватку физической памяти, операционная система (ОС) компьютера может создавать виртуальную память.
Для этого ОС временно переносит неактивные данные из DRAM в дисковое хранилище. Этот подход увеличивает виртуальное адресное пространство за счет использования активной памяти в DRAM и неактивной памяти на жестких дисках для формирования непрерывных адресов, содержащих как приложение, так и его данные. Виртуальная память позволяет компьютеру запускать более крупные программы или несколько программ одновременно, и каждая программа работает так, как если бы у нее неограниченный объем памяти.
Чтобы скопировать виртуальную память в физическую, ОС делит память на файлы подкачки или файлы подкачки, которые содержат определенное количество адресов. Эти страницы хранятся на диске, и, когда они необходимы, ОС копирует их с диска в основную память и переводит адрес виртуальной памяти в физический. Эти переводы обрабатываются блоком управления памятью (MMU).
Реализация и история
В мэйнфреймах
использовалась ранняя версия кэш-памяти, но технология, известная сегодня, начала развиваться с появлением микрокомпьютеров.В ранних ПК производительность процессора росла намного быстрее, чем производительность памяти, а память стала узким местом, замедляющим работу систем.
В 1980-х годах появилась идея, что небольшое количество более дорогой и быстрой SRAM можно было бы использовать для повышения производительности менее дорогой и медленной основной памяти. Первоначально кэш памяти был отделен от системного процессора и не всегда входил в состав набора микросхем. Ранние ПК обычно имели от 16 до 128 КБ кэш-памяти.
С 486 процессорами Intel добавила 8 КБ памяти ЦП в качестве памяти уровня 1 (L1).В этих системах использовалось до 256 КБ внешней кэш-памяти уровня 2 (L2). В процессорах Pentium объем внешней кэш-памяти снова удвоился до 512 КБ на верхнем уровне. Они также разделяют внутреннюю кэш-память на два кэша: один для инструкций, а другой для данных.
Процессоры
на основе микроархитектуры Intel P6, представленной в 1995 году, были первыми, кто включил кэш-память второго уровня в ЦП и позволил всей кэш-памяти системы работать с той же тактовой частотой, что и процессор.До P6 память L2, внешняя по отношению к ЦП, использовалась на гораздо более низкой тактовой частоте, чем скорость, с которой работал процессор, и значительно снижала производительность системы.
Ранние контроллеры кэша памяти использовали архитектуру кэша со сквозной записью, при которой данные, записанные в кэш, также немедленно обновлялись в RAM. Это позволило свести к минимуму потерю данных, но также замедлило работу. Для более поздних ПК на базе 486 была разработана архитектура кэш-памяти с обратной записью, при которой оперативная память обновляется не сразу.Вместо этого данные хранятся в кеше, а ОЗУ обновляется только через определенные промежутки времени или при определенных обстоятельствах, когда данные отсутствуют или устарели.
Факторы, влияющие на производительность ЦП — Компьютерные системы — AQA — GCSE Computer Science Revision — AQA
Несмотря на то, что современные процессоры чрезвычайно быстры, на их производительность может влиять ряд факторов:
Тактовая частота
Тактовая частота — это число импульсы, генерируемые тактовой частотой центрального процессора (ЦП) в секунду.Измеряется в герцах.
Частота процессора иногда может быть немного увеличена пользователем. Этот процесс известен как разгон. Чем больше импульсов в секунду, тем больше циклов выборки-декодирования-выполнения может быть выполнено и тем больше инструкций обрабатывается в заданный промежуток времени. Разгон может привести к длительному повреждению процессора, поскольку он работает интенсивнее и выделяет больше тепла.
Размер кэша
Кэш — это небольшой объем высокоскоростной оперативной памяти (ОЗУ), встроенной непосредственно в процессор.Он используется для временного хранения данных и инструкций, которые процессор может повторно использовать.
Чем больше его кэш, тем меньше времени процессор должен ждать получения инструкций.
Количество ядер
Блок обработки в ЦП называется ядром. Каждое ядро способно извлекать, декодировать и выполнять свои собственные инструкции.
Чем больше ядер у ЦП, тем большее количество инструкций он может обработать за заданный промежуток времени. Многие современные процессоры являются двухъядерными (двух) или четырехъядерными (четырехъядерными).Это обеспечивает значительно более высокую вычислительную мощность по сравнению с одноядерными ЦП.
На производительность процессора могут влиять тактовая частота, размер кеш-памяти и количество ядер в процессоре.
Кэш — ЦП и память — GCSE Computer Science Revision
Кэш — это небольшой объем памяти, который является частью ЦП — ближе к ЦП, чем ОЗУ. Он используется для временного хранения инструкций и данных, которые ЦП может повторно использовать.
Блок управления ЦП автоматически проверяет кэш на наличие инструкций перед запросом данных из ОЗУ.Это позволяет избежать многократного извлечения инструкций и данных из ОЗУ — относительно медленного процесса, который в противном случае мог бы заставить ЦП ждать. Передача в кэш и из кэша занимает меньше времени, чем передача в ОЗУ и из него.
Чем больше имеется кэш, тем больше данных можно хранить ближе к процессору.
Кэш оценивается как Уровень 1 (L1), Уровень 2 (L2) и Уровень 3 (L3):
- L1 обычно является частью самого чипа ЦП и одновременно является самым маленьким и самым быстрым для доступа .Его размер часто ограничивается от 8 до 64 КБ. Кеши
- L2 и L3 больше, чем L1 . Это дополнительные кэши, встроенные между ЦП и ОЗУ. Иногда L2 встроен в ЦП с L1. Доступ к кешам L2 и L3 занимает немного больше времени, чем кэшам L1. Чем больше доступно L2 и L3 памяти, тем быстрее может работать компьютер.
Для кэша выделено не так много физического пространства. Больше места для оперативной памяти, которая обычно больше и дешевле.
Каждое ядро ЦП имеет свой собственный кэш L1, но может совместно использовать кеши L2 и L3.
Понимание кэширования и производительности ЦП
Введение
Когда Ars только появился, Intel только что выпустила первый процессор Celeron, нацеленный на рынок начального уровня, и, поскольку у него не было встроенного кэш-памяти на задней стороне кристалла, как у его двоюродного брата PII, оказалось, что чрезвычайно разгоняется до . Celeron действительно сильно продвинул повальное увлечение разгоном, и Ars начала свое дело с предоставления места в подножке любому, у кого есть веб-браузер и желание узнать, как и почему разгон Celeron.Часто задаваемые вопросы о разгоне Celeron от Фрэнка Монро были одной из самых популярных статей об Ars, казалось, вечно, а «Celeron» и «разгон» были двумя основными поисковыми запросами, которые привлекали людей из Yahoo, который в то время был нашим номером один. реферер. (Фактически, некоторое время назад моя девушка упомянула, что она действительно наткнулась на Ars через Yahoo и прочитала часто задаваемые вопросы OC задолго до того, как мы с ней встретились.)
Наряду с возможностью разгона, у «чуда без кеша», как тогда назывался Celeron, была одна особенность, поразившая всех: на тестах Quake он работал почти так же хорошо, как и PII с кеш-памятью.Что стало очевидным в ходе последовавшего за этим круговорота новостных групп и спекуляций BBS по поводу этого явления, так это то, что мало кто действительно понимал , как кэширование работает для повышения производительности. Я подозреваю, что эта ситуация не сильно изменилась со времен расцвета Celeron. Однако с тех пор изменилась относительная важность кеширования при проектировании системы. Несмотря на введение RAMBUS, DDR и других технологий памяти следующего поколения, тактовая частота и производительность ЦП выросли значительно быстрее, чем производительность основной памяти.В результате кэши L1, L2 и даже L3 стали основным фактором, препятствующим тому, чтобы относительно медленная ОЗУ сдерживала общую производительность системы из-за неспособности передавать код и данные в ЦП с достаточно высокой скоростью.
Реклама
Данная статья предназначена в качестве общего введения в кэширование и производительность ЦП. В статье рассматриваются фундаментальные концепции кеширования, такие как пространственная и временная локальность, ассоциативность наборов, то, как различные типы приложений используют кеш, общий макет и функции иерархии памяти и т. Д., И т. Д.На основе всего этого в следующей статье будут рассмотрены реальные примеры подсистем кэширования и памяти в системах на базе Intel P4 и Motorola G4e. (Я надеюсь включить некоторое обсуждение аппаратного обеспечения XServe, так что следите за обновлениями.) Но для тех, кто задается вопросом, почему размер кэша имеет большее значение в одних приложениях, чем в других, или что люди имеют в виду, когда говорят о «тегах RAM», тогда эта статья для вас.
Основы кеширования
Чтобы по-настоящему понять роль кэширования в проектировании системы, полезно представить себе ЦП и подсистему памяти как работающие по модели потребитель-производитель (или клиент-сервер): ЦП потребляет информацию, предоставленную ему жесткими дисками. и RAM, которые действуют как производители.Благодаря инновациям в технологическом процессе и конструкции процессоров, центральные процессоры увеличили свою способность к потреблению со значительно большей скоростью, чем подсистема памяти увеличила свою способность производить. Проблема в том, что тактовые циклы ЦП стали короче и быстрее, чем тактовые циклы памяти и шины, поэтому количество тактовых циклов ЦП, которые процессор должен ждать, прежде чем основная память сможет выполнить свои запросы данных, увеличилось. Таким образом, с каждым увеличением тактовой частоты ЦП память становится все дальше и дальше от ЦП с точки зрения количества тактовых циклов ЦП.
Реклама
Медленнее Тактовая частота ЦП | Быстрее Тактовая частота ЦП |
Чтобы наглядно представить влияние этого увеличивающегося разрыва в скорости на общую производительность системы, представьте ЦП как мастерскую производителя мебели в центре города, а основную память — как лесной склад, который все дальше и дальше перемещается в пригород.Даже если мы начнем использовать грузовики большего размера, чтобы возить всю древесину, все равно потребуется больше времени с момента размещения заказа мастерской до момента его выполнения.
Примечание: я не первый, кто использует аналогию с мастерской и складом для объяснения кеширования. Самый известный пример такой аналогии — игра Thing King, которую я впервые увидел в этой книге Питера ван дер Линдена (рецензия).
Придерживаясь аналогии с мебельной мастерской, одним из решений этой проблемы было бы арендовать небольшой склад в городе и хранить там самые последние запрашиваемые виды пиломатериалов.Этот меньший, более близкий склад мог бы служить тайником для мастерской, и мы могли бы держать под рукой водителя, который мог бы в любой момент выбежать и быстро забрать со склада все, что нам нужно. Конечно, чем больше наш склад, тем лучше, потому что он позволяет нам хранить больше видов древесины, тем самым увеличивая вероятность того, что сырье для любого конкретного заказа будет под рукой, когда оно нам понадобится. Если нам понадобится древесина, которой нет на ближайшем складе, нам придется ехать за город, чтобы получить ее с нашего большого пригородного склада.Это плохая новость, потому что, если у наших мебельных рабочих нет другой задачи, пока они ждут, пока наш водитель вернется с бревнами, они будут сидеть в комнате отдыха, курить и смотреть Опру.