Кэш процессора
Кэш микропроце́ссора — кэш (сверхоперативная память), используемый микропроцессором компьютера для уменьшения среднего времени доступа к компьютерной памяти. Является одним из верхних уровней иерархии памяти. Кэш использует небольшую, очень быструю память (обычно типа SRAM), которая хранит копии часто используемых данных из основной памяти. Если большая часть запросов в память будет обрабатываться кэшем, средняя задержка обращения к памяти будет приближаться к задержкам работы кэша.
Когда процессору нужно обратиться в память для чтения или записи данных, он сначала проверяет, доступна ли их копия в кэше. В случае успеха проверки процессор производит операцию, используя кэш, что значительно быстрее использования более медленной основной памяти. Подробнее о задержках памяти см. Латентность SDRAM: tCAS, tRCD, tRP, tRAS.
Данные между кэшем и памятью передаются блоками фиксированного размера, также называемыми линиями кэша (англ. cache line) или блоками кэша.
Большинство современных микропроцессоров для компьютеров и серверов имеет как минимум три независимых кэша: кэш инструкций для ускорения загрузки машинного кода, кэш данных для ускорения чтения и записи данных, и буфер ассоциативной трансляции (TLB) для ускорения трансляции виртуальных (логических) адресов в физические, как для инструкций, так и для данных. Кэш данных часто реализуется в виде многоуровневого кэша (L1, L2, L3, L4).
Увеличение размера кэш-памяти может положительно влиять на производительность почти всех приложений, хотя в некоторых случаях эффект незначителен. Работа кэш-памяти обычно прозрачна для программиста, однако для её эффективного использования в некоторых случаях применяются специальные алгоритмические приёмы, изменяющие порядок обхода данных в ОЗУ или повышающие их локальность (например, при блочном умножении матриц).
Принцип работы

Данный раздел описывает типичный кэш данных и некоторые виды кэшей инструкций; буфер ассоциативной трансляции (TLB) может быть устроен сложнее, а кэш инструкций — проще. На диаграмме справа изображены основная и кэш-память. Каждая строка — группа ячеек памяти содержит данные, организованные в кэш-линии. Размер каждой кэш-линии может различаться в разных процессорах, но для большинства x86-процессоров он составляет 64 байта. Размер кэш-линии обычно больше размера данных, к которому возможен доступ из одной машинной команды (типичные размеры от 1 до 16 байт). Каждая группа данных в памяти размером в 1 кэш-линию имеет порядковый номер. Для основной памяти этот номер является адресом памяти с отброшенными младшими битами. В кэше каждой кэш-линии дополнительно ставится в соответствие тег, который является адресом продублированных в этой кэш-линии данных в основной памяти.
При доступе процессора в память сначала производится проверка, хранит ли кэш запрашиваемые из памяти данные. Для этого производится сравнение адреса запроса со значениями всех тегов кэша, в которых эти данные могут храниться. Случай совпадения с тегом какой-либо кэш-линии называется попаданием в кэш (англ. cache hit), обратный же случай называется кэш-промахом (англ. cache miss). Попадание в кэш позволяет процессору немедленно произвести чтение или запись данных в кэш-линии с совпавшим тегом. Отношение количества попаданий в кэш к общему количеству запросов к памяти называют рейтингом попаданий (англ. hit rate), оно является мерой эффективности кэша для выбранного алгоритма или программы.
В случае промаха в кэше выделяется новая запись, в тег которой записывается адрес текущего запроса, а в саму кэш-линию — данные из памяти после их прочтения либо данные для записи в память. Промахи по чтению задерживают исполнение, поскольку они требуют запроса данных в более медленной основной памяти. Промахи по записи могут не давать задержку, поскольку записываемые данные сразу могут быть сохранены в кэше, а запись их в основную память можно произвести в фоновом режиме. Работа кэшей инструкций во многом похожа на вышеприведенный алгоритм работы кэша данных, но для инструкций выполняются только запросы на чтение. Кэши инструкций и данных могут быть разделены для увеличения производительности (принцип, используемый в Гарвардской архитектуре) или объединены для упрощения аппаратной реализации.
Для добавления данных в кэш после кэш-промаха может потребоваться вытеснение (англ. evict) ранее записанных данных. Для выбора замещаемой строки кэша используется эвристика, называемая политика замещения (англ. replacement policy). Основной проблемой алгоритма является предсказание, какая строка вероятнее всего не потребуется для последующих операций. Качественные предсказания сложны, и аппаратные кэши используют простые правила, такие, как LRU. Пометка некоторых областей памяти как некэшируемых (англ. non cacheable) улучшает производительность за счёт запрета кэширования редко используемых данных. Промахи для такой памяти не создают копии данных в кэше.
При записи данных в кэш должен существовать определённый момент времени, когда они будут записаны в основную память. Это время контролируется политикой записи (англ. write policy). Для кэшей со сквозной записью (англ. write-through) любая запись в кэш приводит к немедленной записи в память. Другой тип кэшей, обратная запись англ. write-back (иногда также называемый copy-back), откладывает запись на более позднее время. В таких кэшах отслеживается состояние кэш-линеек ещё не сброшенных в память (пометка битом «грязный» англ. dirty). Запись в память производится при вытеснении подобной строки из кэша. Таким образом, промах в кэше, использующем политику обратной записи, может потребовать двух операций доступа в память, один для сброса состояния старой строки и другой — для чтения новых данных.
Существуют также смешанные политики. Кэш может быть со сквозной записью (англ. write-through), но для уменьшения количества транзакций на шине записи могут временно помещаться в очередь и объединяться друг с другом.
Данные в основной памяти могут изменяться не только процессором, но и периферией, использующей прямой доступ к памяти, или другими процессорами в многопроцессорной системе. Изменение данных приводит к устареванию их копии в кэше (состояние stale). В другой реализации, когда один процессор изменяет данные в кэше, копии этих данных в кэшах других процессоров будут помечены как stale. Для поддержания содержимого нескольких кэшей в актуальном состоянии используется специальный протокол поддержки когерентности.
Структура записи в кэше
Типичная структура записи в кэше
| Блок данных | тег | бит актуальности |
Блок данных (кэш-линия) содержит непосредственную копию данных из основной памяти. Бит актуальности означает, что данная запись содержит актуальную (самую свежую) копию.
Структура адреса
| тег | индекс | смещение |
Адрес памяти разделяется (от старших бит к младшим) на Тег, индекс и смещение. Длина поля индекса равна бит и соответствует ряду (строке) кэша, используемой для записи. Длина смещения равна
.
Ассоциативность

Ассоциативность является компромиссом. Проверка большего числа записей требует больше затрат энергии, площади чипа, и, потенциально, времени. Если бы существовало 10 мест, в которые алгоритм вытеснения мог бы отобразить место в памяти, тогда проверка наличия этого места в кэше потребовала бы просмотра 10 записей в кэше. С другой стороны, кэши с высокой ассоциативностью подвержены меньшему количеству промахов (см. ниже «конфликтующие промахи») и процессор тратит меньше времени на чтения из медленной основной памяти. Существует эмпирическое наблюдение, что удвоение ассоциативности (от прямого отображения — к 2-канальной или от 2- — к 4-канальной) имеет примерно такое же влияние на интенсивность попаданий (hit rate), что и удвоение размера кэша. Увеличение ассоциативности свыше 4 каналов приносит меньший эффект для уменьшения количества промахов (miss rate) и обычно производится по другим причинам, например, из-за пересечения виртуальных адресов.
В порядке ухудшения (увеличения длительности проверки на попадание) и улучшения (уменьшения количества промахов):
- кэш прямого отображения (англ. direct mapped cache) — наилучшее время попадания и, соответственно, лучший вариант для больших кэшей;
- 2-канальный множественно-ассоциативный кэш англ. 2-way set associative cache;
- 2-канальный skewed ассоциативный кэш (англ. «the best tradeoff for …. caches whose sizes are in the range 4K-8K bytes» — André Seznec);
- 4-канальный множественно-ассоциативный кэш (англ. 4-way set associative cache);
- полностью ассоциативный кэш, англ. fully associative cache — наилучший (самый низкий) процент промахов (miss rate) и лучший вариант при чрезвычайно высоких затратах при промахе (miss penalty).
-
Кэш прямого отображения -
![image]()
n-канальный множественно-ассоциативный кэш -
![image]()
Полностью ассоциативный кэш
Псевдоассоциативный кэш
Псевдоассоциативный кэш — это тип кэш-памяти, который использует комбинацию прямого и наборного способов поиска кэш-блока. Псевдоассоциативный кэш разделяет кэш-память на несколько частей, называемых наборами. Каждый набор содержит несколько кэш-линий или блоков данных. Когда происходит обращение к памяти, хэш-адрес элемента вычисляется, и затем проверяются все линии в соответствующем наборе памяти. Кэш-память с псевдоассоциативной организацией обеспечивает компромисс между простотой проекта и эффективностью поиска данных.
Виды промахов
Промах по чтению из кэша инструкций. Обычно дает очень большую задержку, поскольку процессор не может продолжать исполнение программы (по крайней мере, текущего потока исполнения) и вынужден простаивать в ожидании загрузки инструкции из памяти.
Промах по чтению из кэша данных. Обычно дает меньшую задержку, поскольку инструкции, не зависящие от запрошенных данных, могут продолжать исполняться, пока запрос обрабатывается в основной памяти. После получения данных из памяти можно продолжать исполнение зависимых инструкций.
Промах по записи в кэш данных. Обычно дает наименьшую задержку, поскольку запись может быть поставлена в очередь и последующие инструкции практически не ограничены в своих возможностях. Процессор может продолжать свою работу, кроме случаев промаха по записи с полностью заполненной очередью.
Категории промахов (Three Cs)
- Compulsory misses — промахи, вызванные первым упоминанием запрошенного адреса. Размеры кэшей и их ассоциативность не влияют на количество данных промахов. Предвыборка (prefetching), как программная, так и аппаратная, может помочь, так же, как и увеличение размера кэш-линии (в качестве вида аппаратной предвыборки). Такие промахи иногда называются «холодными».
- Capacity misses — промахи, вызванные исключительно конечным размером кэша, происходящие вне зависимости от степени ассоциативности или размера кэш-линии. График таких промахов относительно размера кэша может дать некоторую меру временной локальности (temporal locality) некоторого набора запросов в память. Стоит заметить, что не существует понятия полного кэша, пустого кэша или почти полного кэша, так как кэши процессора почти все время имеют кэш-линии в занятом состоянии, и, значит, практически каждое заведение новой линии потребует гашения уже занятой.
- Conflict misses — промахи, вызванные конфликтом. Их можно избежать, если бы кэш не вытеснил запись ранее. Можно дополнительно разделить на промахи, вызванные отображением (конкретным значением ассоциативности) и промахи замещения, которые вызваны конкретным алгоритмом выбора записей для замещения.
Трансляция адресов
Большая часть процессоров общего назначения реализует какой-либо вариант виртуальной памяти. Кратко говоря, каждая программа, исполняющаяся на машине, видит собственное упрощенное адресное пространство, содержащее код и данные только этой программы. Любая программа использует своё виртуальное адресное пространство вне зависимости от его местоположения в физической памяти.
Наличие виртуальной памяти требует от процессора проведения трансляции виртуальных (математических) адресов, используемых программой, в физические адреса, соответствующие реальному местоположению в ОЗУ. Часть процессора, проводящая это преобразование, называется устройство управления памятью (MMU). Для ускорения трансляций в MMU добавлен кэш недавно использованных отображений (соответствий виртуальных и физических адресов), называемый Translation Lookaside Buffer (TLB).
Для дальнейшего описания важны три особенности процесса трансляции адресов:
- Задержка: Физический адрес будет получен от MMU только спустя некоторое время, вплоть до нескольких тактов, после подачи на вход MMU виртуального адреса с генератора адресов.
- Эффект наложения: Несколько виртуальных адресов могут соответствовать одному физическому. В большинстве процессоров гарантируется, что все записи по физическому адресу будут совершены в порядке, заданном программой. Для выполнения этого свойства требуется проверка, что только один экземпляр копии данных с физического адреса находится в данный момент в кэше.
- Единица отображения: Виртуальное адресное пространство разбито на страницы — блоки памяти фиксированного размера, начинающиеся с адресов, кратных их размеру. Например, 4 ГБ адресного пространства можно разделить на 1048576 страниц по 4 кБ, для каждой из которых возможно независимое соответствие физическим страницам. В современных процессорах часто поддерживается использование одновременно нескольких размеров страниц, например, 4 кБ и 2 МБ для x86-64, а в некоторых современных AMD-процессорах ещё и 1 ГБ.
Важно также заметить, что первые системы виртуальной памяти были очень медленными, потому что они требовали проверки таблицы страниц (хранимой в основной ОЗУ) перед любым программным обращением в память. Без использования кэширования для отображений такие системы уменьшают скорость работы с памятью примерно в 2 раза. Поэтому использование TLB очень важно и иногда его добавление в процессоры предшествовало появлению обычных кэшей данных и инструкций.
По отношению к виртуальной адресации кэши данных и инструкций могут быть поделены на 4 типа. Адреса в кэшах используются для двух разных целей: индексирования и тегирования.
- Physically indexed, physically tagged (PIPT) — физически индексируемые и физически тегируемые. Такие кэши просты и избегают проблем с наложением (aliasing), но они медленны, так как перед обращением в кэш требуется запрос физического адреса в TLB. Этот запрос может вызвать промах в TLB и дополнительное обращение в основную память перед тем, как наличие данных будет проверено в кэше.
- Virtually indexed, virtually tagged (VIVT) — виртуально индексируемые и виртуально тегируемые. И для тегирования, и для индекса используется виртуальный адрес. Благодаря этому проверки наличия данных в кэше происходят быстрее, не требуя обращения к MMU. Однако возникает проблема наложения, когда несколько виртуальных адресов соответствуют одному и тому же физическому. В этом случае данные будут закэшированы дважды, что сильно усложняет поддержку когерентности. Другой проблемой являются омонимы, ситуации, когда один и тот же виртуальный адрес (например, в разных процессах) отображается в различные физические адреса. Становится невозможным различить такие отображения исключительно по виртуальному индексу. Возможные решения: сброс кэша при переключении между задачами (context switch), требование непересечения адресных пространств процессов, тегирование виртуальных адресов идентификатором адресного пространства (address space ID, ASID) или использование физических тегов. Также возникает проблема при изменении отображения виртуальных адресов в физические, что требует сброса кэш-линий, для которых изменилось отображение.
- Virtually indexed, physically tagged (VIPT) — виртуально индексируемые и физически тегируемые. Для индекса используется виртуальный адрес, а для тега — физический. Преимуществом над первым типом является меньшая задержка, поскольку можно искать кэш-линию одновременно с трансляцией адресов в TLB, однако сравнение тега задерживается до получения физического адреса. Преимуществом над вторым типом является обнаружение омонимов (homonyms), так как тег содержит физический адрес. Для данного типа требуется больше бит для тега, поскольку индексные биты используют иной тип адресации.
- Physically indexed, virtually tagged — физически индексируемые и виртуально тегированные кэши считаются бесполезными и маргинальными и представляют исключительно академический интерес.
Скорость этих действий (задержка загрузки из памяти) критически важна для производительности процессоров, и поэтому большинство современных L1-кэшей является виртуально индексируемым, что как минимум позволяет блоку MMU производить запрос в TLB одновременно с запросом данных из кэш-памяти.
Виртуальное тегирование и механизм vhints
Но виртуальная индексация не является лучшим выбором для других уровней кэша. Стоимость обнаружения пересечения виртуальных адресов (aliasing) растет с увеличением размера кэша и, в результате, большинство реализаций L2 и более дальних от процессора уровней кэша использует индексирование по физическим адресам.
Достаточно длительное время кэши использовали для тегов как физические, так и виртуальные адреса, хотя виртуальное тегирование в настоящее время встречается очень редко. Если TLB-запрос заканчивается раньше запроса в кэш-память, физический адрес будет доступен для сравнения с тегом к моменту, когда это будет необходимо, и, следовательно, виртуальное тегирование не потребуется. Большие кэши чаще тегируются физическими адресами, и только небольшие быстродействующие кэши используют для тегов виртуальные адреса. В современных процессорах общего назначения, виртуальное тегирование заменено на механизм vhints, описанный далее.
Виртуальное индексирование и пересечения виртуальных адресов
Это пустой раздел, который еще не написан. |
Проблема гомонимов и синонимов
Это пустой раздел, который еще не написан. |
Расцвечивание страниц
Это пустой раздел, который еще не написан. |
Иерархия кэшей в современных микропроцессорах
Большинство современных процессоров содержит в себе несколько взаимодействующих кэшей.
Специализированные кэши
Суперскалярные ЦПУ осуществляют доступ к памяти из нескольких этапов конвейера: чтение инструкции (instruction fetch), трансляция виртуальных адресов в физические, чтение данных (data fetch). Очевидным решением является использование различных физических кэшей для каждого из этих случаев, чтобы не было борьбы за доступ к одному из физических ресурсов с разных стадий конвейера. Таким образом, наличие конвейера обычно приводит к наличию, по крайней мере, трёх раздельных кэшей: кэш инструкций, кэш трансляций TLB и кэш данных, каждый из которых специализирован на своей задаче.
Конвейерные процессоры, использующие раздельные кэши для данных и для инструкций (такие процессоры сейчас повсеместны), называются процессорами с Гарвардской архитектурой. Изначально данный термин применялся для компьютеров, у которых инструкции и данные разделены полностью и хранятся в различных устройствах памяти. Однако такое полное разделение не оказалось популярным, и большинство современных компьютеров имеет одно устройство основной памяти, поэтому могут считаться машинами с архитектурой фон Неймана.
Многоуровневые кэши
Одной из проблем является фундаментальная проблема баланса между задержками кэша и интенсивностью попаданий. Большие кэши имеют более высокий процент попаданий, но, вместе с тем, и большую задержку. Чтобы ослабить противоречие между этими двумя параметрами, большинство компьютеров использует несколько уровней кэша, когда после маленьких и быстрых кэшей находятся более медленные большие кэши (в настоящий момент — суммарно до 3 уровней в иерархии кэшей).
В единичных случаях реализуют 4 уровня кэш-памяти.
Многоуровневые кэши обычно работают в последовательности от меньших кэшей к большим. Сначала происходит проверка наименьшего и наибыстрейшего кэша первого уровня (L1), в случае попадания процессор продолжает работу на высокой скорости. Если меньший кэш дал промах, проверяется следующий, чуть больший и более медленный кэш второго уровня (L2), и так далее, пока не будет запроса к основному ОЗУ.
По мере того, как разница задержек между ОЗУ и быстрейшим кэшем увеличивается, в некоторых процессорах увеличивают количество уровней кэша (в некоторых — до 3х уровней на кристалле). К примеру, процессор Alpha 21164 в 1995 году имел накристалльный кэш 3го уровня в 96 кБ; IBM POWER4 в 2001 году имел до четырёх кэшей L3 по 32 МБ на отдельных кристаллах, используемых совместно несколькими ядрами; Itanium 2 в 2003 году имел 6 МБ кэш L3 на кристалле; Xeon MP под кодом «Tulsa» в 2006 году — 16 МБ кэша L3 на кристалле, общий на 2 ядра; Phenom II в 2008 году — до 6 МБ универсального L3 кэша; Intel Core i7 в 2008 году — 8 МБ накристалльного кэша L3, являющимся инклюзивным и разделяемым между всеми ядрами. Польза от кэша L3 зависит от характера обращений программы в память.
Наконец, с другой стороны иерархии памяти находится регистровый файл самого микропроцессора, который можно рассматривать как небольшой и самый быстрый кэш в системе со специальными свойствами (например, статическое планирование компилятором при распределении регистров, когда он располагает данные из ОЗУ на регистр). Подробнее см. . Регистровые файлы также могут иметь иерархию: Cray-1 (в 1976 году) имел 8 адресных «A»-регистров и 8 скалярных «S»-регистров общего назначения. Также машина содержала набор из 64 адресных «B» и 64 скалярных «T» регистров, обращение к которым было дольше, но все же значительно быстрее основной ОЗУ. Эти регистры были введены по причине отсутствия в машине кэша данных (хотя кэш команд в машине имелся)
-
![image]()
Затребованные данные считываются из кэша первого (англ. L1) уровня. -
![image]()
Затребованные данные считываются из кэша второго (англ. L2) уровня. -
![image]()
В случае отсутствия затребованных данных в кэшах, производится чтение из ОЗУ.
Эксклюзивность (исключительность) и инклюзивность
Для многоуровневых кэшей требуется делать новые архитектурные решения.
Например, в некотором процессоре могут потребовать, чтобы все данные, хранящиеся в кэше L1, хранились также и в кэше L2. Такие пары кэшей называют строго инклюзивными (англ. inclusive). Другие процессоры (например, AMD Athlon) могут не иметь подобного требования, тогда кэши называются эксклюзивными (исключительными) — данные могут быть либо в L1, либо в L2 кэше, но никогда не могут быть одновременно в обоих.
До сих пор другим процессорам (таким, как Pentium II, Pentium III, и Pentium 4) не требуются, чтобы данные в кэше первого уровня также размещались в кэше второго уровня, тем не менее, они продолжают так делать. Нет никакого универсального общепринятого имени для этой промежуточной политики, хотя часто используется термин главным образом инклюзивно (англ. mainly inclusive).
Преимущество исключительных кэшей в том, что они хранят больше данных. Это преимущество больше, когда исключительный кэш L1 сопоставим по размеру с кэшэм L2, и меньше, если кэш L2 во много раз больше, чем кэш L1. Когда L1 пропускает и L2 получает доступ в случае попадания, строка кэша попадания в L2 обменивается со строкой в L1.
Victim cache
Victim cache или Victim buffer) (дословно Кэш жертв) — это небольшой специализированный кэш, хранящий те кэш-линии, которые были недавно вытеснены из основного кэша микропроцессора при их замещении. Данный кэш располагается между основным кэшем и его англ. refill path. Обычно кэш жертв является полностью ассоциативным и служит для уменьшения количества конфликтных промахов (conflict miss). Многие часто используемые программы не требуют полного ассоциативного отображения для всех попыток доступа к памяти. По статистике только небольшая доля обращений к памяти потребует высокой степени ассоциативности. Именно для таких обращений служит кэш жертв, предоставляющий высокую ассоциативность для подобных редких запросов. Был предложен (DEC) в 1990. Размер такого кэша может составлять от 4 до 16 кэш-линий.
Кэш трасс
Одним из наиболее экстремальных случаев специализации кэшей можно считать кэш трасс (англ. trace cache), используемый в процессорах Intel Pentium 4. Кэш трасс — это механизм для увеличения пропускной способности загрузки инструкций и для уменьшения тепловыделения (в случае Pentium 4) за счёт хранения декодированных трасс инструкций. Таким образом этот кэш исключал работу декодера при повторном исполнении недавно выполнявшегося кода.
Одной из ранних публикаций о кэше трасс была статья коллектива авторов (, и ), вышедшая в 1996 году под названием «Trace Cache: a Low Latency Approach to High Bandwidth Instruction Fetching.» (Кэш трасс: низколатентный подход для обеспечения высокой пропускной способности загрузки инструкций).
Кэш трасс сохраняет декодированные инструкции либо после их декодирования, либо после окончания их исполнения. Обобщая, инструкции добавляются в кэш трасс в группах, представляющих собой либо базовые блоки, либо динамические трассы. Динамическая трасса (путь исполнения) состоит только из инструкций, результаты которых были значимы (использовались впоследствии), и удаляет инструкции, которые находятся в неисполняющихся ветвях, кроме того, динамическая трасса может быть объединением нескольких базовых блоков. Такая особенность позволяет устройству подгрузки инструкций в процессоре загружать сразу несколько базовых блоков без необходимости заботиться о наличии ветвлений в потоке исполнения.
Линии трасс хранятся в кэше трасс по адресам, соответствующим счётчику инструкций первой машинной команды из трассы, к которым добавлен набор признаков предсказания ветвлений. Такая адресация позволяет хранить различные трассы исполнения, начинающиеся с одного адреса, но представляющие различные ситуации по результату предсказания ветвлений. На стадии подгрузки инструкции (instruction fetch) конвейера инструкций для проверки попадания в кэш трасс используется как текущий счётчик инструкций (program counter), так и состояние предсказателя ветвлений. Если попадание свершилось, линия трассы непосредственно подается на конвейер без необходимости опрашивать обычный кэш (L2) или основное ОЗУ. Кэш трасс подает машинные команды на вход конвейера, пока не кончится линия трассы, либо пока не произойдет ошибка предсказания в конвейере. В случае промаха кэш трасс начинает строить следующую линию трассы, загружая машинный код из кэша или из памяти.
Похожие кэши трасс использовались в Pentium 4 для хранения декодированных микроопераций и микрокода, реализующего сложные x86-инструкции. Smith, Rotenberg and Bennett’s paper См полный текст работы в .
Реализации
История
В ранние годы микропроцессорных технологий доступ в память был лишь немного медленнее доступа к процессорным регистрам. Но с 1980-х разрыв в производительности между процессорами и памятью стал нарастать. Микропроцессоры совершенствовались быстрее, чем память, особенно в плане частоты функционирования, таким образом, память становилась узким местом при достижении полной производительности от системы. Хотя было технически возможным иметь основную память столь же быстрой, как и ЦПУ, был выбран более экономичный путь: использовать избыточное количество низкоскоростной памяти, но ввести в систему небольшую, но быструю кэш-память, для смягчения разрыва в производительности. В итоге получили на порядок большие объёмы памяти, примерно за ту же цену и с небольшими потерями общей производительности.
Чтение данных из кэша для современных процессоров обычно занимает более одного такта. Время исполнения программ является чувствительным к задержкам чтения из кэша данных первого уровня. Много усилий разработчиков, а также мощности и площади кристалла при создании процессора отводится для ускорения работы кэшей.
Простейшим кэшем является виртуально индексируемый кэш прямого отображения. Виртуальный адрес подсчитывается при помощи сумматора, соответствующая часть адреса выделяется и используется для индексирования SRAM, который вернет загружаемые данные. Данные могут быть выровнены по байтовым границам в байтовом сдвигателе и затем переданы следующей операции. При таком чтении не требуется какая-либо проверка тегов, фактически нет даже необходимости считывать тег. На более поздних стадиях конвейера, перед окончанием исполнения инструкции чтения, потребуется чтение тега и его сравнение с виртуальным адресом, чтобы удостовериться, что произошло попадание в кэш. Если же был промах, потребуется чтение из памяти либо более медленного кэша с дальнейшим обновлением рассматриваемого кэша и перезапуском конвейера.
Ассоциативный кэш более сложен, потому что некоторый вариант тега нужно считать для определения, какую часть кэша выбрать. Кэш N-way set-associative первого уровня обычно считывает одновременно все N возможных тегов и N данных параллельно, затем проводит сравнение тегов с адресом и выбор данных, ассоциированных с совпавшим тегом. Кэши 2-го уровня в целях экономии энерговыделения иногда выполняют сначала чтение тегов, и только затем чтение одного элемента данных из SRAM-данных.

Диаграмма справа должна показать, как происходит использование различных частей адреса. Бит 31 адреса является (старшим), бит 0 — наименее значащим битом (младшим). На диаграмме показаны две SRAM, индексация и мультиплексирование для 4 кБ, 2-way set-associative, виртуально индексированного и виртуально тегированного кэша с 64байтными блоками, 32битной шириной чтения и 32битным виртуальным адресом.
Поскольку кэш имеет размер 4 КБ и линии размером 64 байта, в нём хранится 64 линии, и мы можем считать за два раза из тега SRAM, который содержит 32 столбца, каждый из которых содержит пару 21-битных тегов. Хотя может быть использована любая функция виртуальной адресации битов 31 по 6, чтобы индексировать тег и данные SRAM, проще всего воспользоваться младшими разрядами. Так же, потому что объём кэша составляет 4 кБ и имеет четырёхбайтный путь для чтения, и чтение производится по двум путями для каждого доступа, данные SRAM составляют 512 рядов шириной 8 байт.
Более современный кэш, возможно, был бы 16-килобайтным, четырёхпутным, набор-ассоциативным, виртуально индексируемым, виртуально попадаемым и физически помечаемым (тегом), с 32-битными строками, 32-битной шириной шины чтения и 36-битным физическим адресованием. Рекуррентное соотношение пути чтения для такого кэша выглядит очень схоже с рассмотренными выше. Вместо тегов читаются виртуальные попадания? (англ. vhits), и снова производится соответствие подмножества виртуальному адресу. Позже, в конвейере, виртуальный адрес переводится в физический адрес TLB, и производится чтение физического тега (только одно, так как виртуальное попадание поставляет путь для чтения кэша). В конце физический адрес сравнивается с физическим тегом, чтобы определить, произошло ли попадание.
Некоторые процессоры SPARC имели ускоренные на несколько задержек затвора (англ. gate delay) L1 кэши за счёт использования SRAM-декодеров вместо сумматора виртуальных адресов. Подробнее см. en:Sum addressed decoder.
В X86
Когда микропроцессоры x86 достигли частот в 20 и более мегагерц (начиная с Intel 80386), для увеличения производительности в них было добавлено небольшое количество быстрой кэш-памяти. Это было необходимо из-за того, что используемая как системная ОЗУ DRAM имела значительные задержки (до 120 нс), и требовала такты для обновления. Кэш был построен на базе более дорогой, но значительно более быстрой SRAM, которая в те времена имела задержки 15-20 нс. Ранние кэши были внешними по отношению к процессору и часто располагались на материнской плате как 8 или 9 микросхем в корпусах DIP, расположенные в сокетах для возможности увеличения или уменьшения размера кэша. Некоторые версии процессора I386 поддерживали от 16 до 64 кБ внешнего кэша.
С выходом процессора Intel 80486 8 кБ кэша было интегрировано непосредственно на кристалл микропроцессора. Этот кэш был назван L1 (первого уровня, англ. level 1), чтобы отличать его от более медленного кэша на материнской плате, названного L2 (второго уровня, англ. level 2). Последние были значительно больше, вплоть до 256 кБ.
В дальнейшем случаи отделения кэша производились, лишь исходя из соображений маркетинговой политики, например, в микропроцессоре Celeron, построенном на ядре Pentium II.
В микропроцессоре Pentium используется раздельный кэш, команд и данных. Буфер трансляции адресов (TLB) преобразует адрес в ОЗУ в соответствующий адрес в кэше. Кэш данных Pentium использует метод обратной записи (англ. write-back), который позволяет модифицировать данные в кэше без дополнительного обращения к оперативной памяти (данные записываются в ОЗУ только при удалении из кэша) и протокол MESI (Modified, Exclusive, Shared, Invalid), который обеспечивает когерентность данных в кэшах процессоров и в ОЗУ при работе в мультипроцессорной системе.
Каждый из раздельных кэшей, данных и команд, микропроцессора Pentium MMX имеет объём 16 кБ и содержит два порта, по одному для каждого исполнительного конвейера. Кэш данных имеет буфер трансляции адресов (TLB).
Следующий вариант реализации кэшей в x86 появился в Pentium Pro, в котором кэш второго уровня (объединённый для данных и команд, размером 256—512 кБ) размещён в одном корпусе с процессором и кэшем первого уровня, размером 8 кБ, раздельным для данных и команд, и поднял его частоту до частоты ядра. Позже кэш второго уровня стал размещаться на том же кристалле, что и процессор.
(англ. Dual Independent Bus) — новая архитектура кэш-памяти, использует разные шины для соединения процессорного ядра с основной оперативной памятью. Кэш первого уровня двухпортовый, неблокирующий, поддерживает одну операцию загрузки и одну операцию записи за такт. Работает на тактовой частоте процессора. За такт передаётся 64 бита.
В микропроцессоре Pentium II кэш первого уровня увеличен — 16 кБ для данных и 16 кБ для команд. Для кэша второго уровня используется BSRAM, расположенная на одной с процессором плате в картридже S.E.C. для установки в Slot 1.
С ростом популярности многоядерных процессоров на кристалл стали добавлять кэши третьего уровня, названные L3. Этот уровень кэша может быть общим для нескольких ядер и реализовывать эффективное взаимодействие между ядрами. Его объём обычно больше суммарного объёма кэшей всех подключенных к нему ядер и может достигать 16 МБ.
Популярным кэш на материнской плате оставался до эры выхода Pentium MMX и вышел из употребления с введением SDRAM и ростом разницы между частотой шины процессора и частотой ядра процессора: кэш на материнской плате стал лишь немногим быстрее основной ОЗУ.
Пример кэша (процессорное ядро К8)
Приведена схема кэшей ядра микропроцессоров AMD K8, на которой видны как специализированные кэши, так и их многоуровневость.
Ядро использует четыре различных специализированных кэша: кэш инструкций, TLB инструкций, TLB данных и кэш данных:
- Кэш инструкций состоит из 64-байтных блоков, являющихся копией основной памяти, и может подгружать до 16 байтов за такт. Каждый байт в этом кэше хранится в 10 битах, а не в 8, причём в дополнительных битах отмечены границы инструкций (т. о. кэш проводит частичное преддекодирование). Для проверки целостности данных используется лишь контроль четности, а не ECC, так как бит четности занимает меньше места, а в случае сбоя повреждённые данные можно обновить правильной версией из памяти.
- TLB инструкций содержит копии записей из таблицы страниц. На каждый запрос чтения команд требуется трансляция математических адресов в физические. Записи о трансляции бывают 4- и 8-байтными, и TLB разбит на 2 части, соответственно одна для 4 кБ отображений и другая для 2 и 4 МБ отображений (большие страницы). Такое разбиение упрощает схемы полностью ассоциативного поиска в каждой из частей. ОС и приложения могут использовать отображения различного размера для частей виртуального адресного пространства.
- TLB данных является сдвоенным, и оба буфера содержат одинаковый набор записей. Их сдвоенность позволяет производить каждый такт трансляцию для двух запросов к данным одновременно. Так же, как и TLB инструкций, этот буфер разделен между записями двух видов.
- Кэш данных содержит 64-байтные копии фрагментов памяти. Он разделен на 8 банков (банок), каждый содержит по 8 килобайт данных. Кэш позволяет производить по два запроса к 8-байтовым данным каждый такт, при условии, что запросы будут обработаны различными банками. Теговые структуры в кэше продублированы, так как каждый 64-байтный блок распределен по всем 8 банкам. Если совершается 2 запроса в один такт, они работают с собственной копией теговой информации.
Также в этом ядре используются многоуровневые кэши: двухуровневые TLB инструкций и данных (на втором уровне хранятся лишь записи о 4-кБ отображениях), и кэш второго уровня (L2), унифицированный для работы как с кэшами данных и инструкций 1го уровня, так и для различных TLB. Кэш L2 является эксклюзивным для L1 данных и L1 инструкций, то есть каждый кэшированный 8-байтовый фрагмент может находиться либо в L1 инструкций, либо в L1 данных, либо в L2. Исключением могут быть лишь байты, составляющие записи PTE, которые могут находиться одновременно в TLB и в кэше данных во время обработки виртуального отображения со стороны ОС. В таком случае ОС отвечает за своевременный сброс TLB после обновления записей трансляции.
DEC Alpha
В микропроцессоре DEC Alpha 21164 (выпущенном в ноябре 1995 года с тактовой частотой 333 МГц) кэш первого уровня может поддерживать некоторое количество (до 21) необработанных промахов. Имеется шестиэлементный файл адресов необработанных промахов (англ. miss address file, MAF), каждый элемент которого содержит адрес и регистр для загрузки при промахе (если адреса промаха принадлежат одной строке кэша, то в MAF они рассматриваются как один элемент).
Помимо раздельных кэшей L1 со сквозной записью, на кристалле процессора расположены частично-ассоциативный кэш L2 с обратной записью и контроллер кэша L3, работающего как в синхронном, так и в асинхронном режиме.
В выпущенном в марте 1997 года DEC Alpha 21164PC внешний кэш второго уровня; объём кэша команд увеличен до 16 кБ.
В микропроцессоре DEC Alpha 21264 нет кэша второго уровня (контроллер которого, тем не менее, размещается на кристалле), но кэш первого уровня увеличен до 128 кБ (по 64 кБ для кэша команд и кэша данных соответственно).
PA-RISC
Разработка Hewlett-Packard для научных и инженерных вычислений PA-8000 содержит буфер переупорядочивания адресов (англ. ARB), отслеживающий все команды загрузки/сохранения, который позволяет сократить задержку адресования внешней кэш-памяти данных и команд, которая в данном процессоре может иметь объём до 4 МБ. Тем не менее, даже эффективное управление внешним кэшем при помощи высокоскоростных линий управления и предвыборки данных и команд из основной памяти в кэш не скомпенсировало невысокую скорость и высокую стоимость.
Устранить указанные недостатки удалось в PA-8500, в котором за счёт техпроцесса 0,25 мкм удалось добавить на кристалл 512 кБ кэша команд и 1 МБ кэша данных.
PowerPC
Построенный на гарвардской архитектуре PowerPC 620 содержит два встроенных кэша, ёмкостью 32 кБ каждый, которые имеют собственные блоки управления памятью (англ. MMU) и функционируют независимо друг от друга. Команды и адреса переходов кэшируются в кэше BTAC (англ. Branch-Target Adress Cache).
Шинный интерфейс процессора включает полную реализацию поддержки кэша второго уровня (объёмом до 128 МБ, работающем на частоте процессора либо вдвое/вчетверо меньшей), и для управления работой внешнего кэша не требует дополнительных тактов. Реализована комбинация сквозной и обратной записи а также поддержка протокола MESI.
MIPS
Своя специфика у кэша L1, применяемого в RA-10000, — каждая команда в кэше снабжена дополнительным четырёхбитным тегом, который используется в дальнейшем декодировании и классификации команды.
См. также
- Когерентность кэша
Примечания
- Корнеев В. В., Киселев А. В. 1.2.3 Структурные методы уменьшения времени доступа к памяти // Современные микропроцессоры. — М.: «Нолидж», 1998. — С. 75—76. — 240 с. — 5000 экз. — ISBN 5-98251-050-6.
- Зависимость производительности процессора от размера кэша L2. Дата обращения: 20 октября 2011. Архивировано 22 октября 2011 года.
- AMD Athlon II X4 или Phenom II: влияние кэш-памяти L3 на производительность. Дата обращения: 12 января 2015. Архивировано 15 июля 2014 года.
- Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture. Order number 253665-021.
- Understanding Caching. Linux Journal. Дата обращения: 2 мая 2010. Архивировано 27 апреля 2012 года.
- https://www.theregister.co.uk/2004/05/06/hp_mx2_itaniummodule/ Архивная копия от 10 августа 2017 на Wayback Machine "HP has packed mx2 with 32MB of L4 cache "
- https://www.theregister.co.uk/2010/07/23/ibm_z196_mainframe_processor/ Архивная копия от 10 августа 2017 на Wayback Machine «L4 cache memory, which most servers do not have. (IBM added some L4 cache to its EXA chipsets for Xeon processors from Intel a few years back). This L4 cache is necessary for one key reason»
- IBM POWER4 Processor Review. Ixbtlabs Архивная копия от 13 июля 2011 на Wayback Machine «An important feature of the L3 cache is a capability to combine separate caches of POWER4 chips up to 4 (128 MBytes) which allows using address interleaving to speed up the access.»
- Детальное исследование архитектуры AMD64 Архивная копия от 27 января 2012 на Wayback Machine // ixbt.com, «Подсистема кэша. Поиск и анализ изменений»
- N.P.Jouppi. «Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers.» — 17th Annual International Symposium on Computer Architecture, 1990. Proceedings., DOI:10.1109/ISCA.1990.134547
- Victim Cache Simulator. Дата обращения: 12 января 2012. Архивировано 2 мая 2010 года.
- The Processor-Memory performance gap. acm.org. Дата обращения: 8 ноября 2007. Архивировано из оригинала 27 апреля 2012 года.
- Гук М. 4. Кэширование памяти // Процессоры Pentium II, Pentium Pro и просто Pentium. — М.: Питер, 1999. — С. 126—143. — 288 с. — 7000 экз. — ISBN 5-8046-0043-5.
- Корнеев В. В., Киселев А. В. 2.2.1.2 Раздельные кэш-память команд и данных // Современные микропроцессоры. — М.: «Нолидж», 1998. — С. 75—76. — 240 с. — 5000 экз. — ISBN 5-98251-050-6.
Ссылки
- Memory part 2: CPU caches Статья на lwn.net (автор Ulrich Drepper) с детальным описанием кэшей
- 8-way set-associative кэш написанный на VHDL
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Кэш процессора, Что такое Кэш процессора? Что означает Кэш процессора?
Kesh mikroproce ssora kesh sverhoperativnaya pamyat ispolzuemyj mikroprocessorom kompyutera dlya umensheniya srednego vremeni dostupa k kompyuternoj pamyati Yavlyaetsya odnim iz verhnih urovnej ierarhii pamyati Kesh ispolzuet nebolshuyu ochen bystruyu pamyat obychno tipa SRAM kotoraya hranit kopii chasto ispolzuemyh dannyh iz osnovnoj pamyati Esli bolshaya chast zaprosov v pamyat budet obrabatyvatsya keshem srednyaya zaderzhka obrasheniya k pamyati budet priblizhatsya k zaderzhkam raboty kesha Kogda processoru nuzhno obratitsya v pamyat dlya chteniya ili zapisi dannyh on snachala proveryaet dostupna li ih kopiya v keshe V sluchae uspeha proverki processor proizvodit operaciyu ispolzuya kesh chto znachitelno bystree ispolzovaniya bolee medlennoj osnovnoj pamyati Podrobnee o zaderzhkah pamyati sm Latentnost SDRAM tCAS tRCD tRP tRAS Dannye mezhdu keshem i pamyatyu peredayutsya blokami fiksirovannogo razmera takzhe nazyvaemymi liniyami kesha angl cache line ili blokami kesha Bolshinstvo sovremennyh mikroprocessorov dlya kompyuterov i serverov imeet kak minimum tri nezavisimyh kesha kesh instrukcij dlya uskoreniya zagruzki mashinnogo koda kesh dannyh dlya uskoreniya chteniya i zapisi dannyh i bufer associativnoj translyacii TLB dlya uskoreniya translyacii virtualnyh logicheskih adresov v fizicheskie kak dlya instrukcij tak i dlya dannyh Kesh dannyh chasto realizuetsya v vide mnogourovnevogo kesha L1 L2 L3 L4 Uvelichenie razmera kesh pamyati mozhet polozhitelno vliyat na proizvoditelnost pochti vseh prilozhenij hotya v nekotoryh sluchayah effekt neznachitelen Rabota kesh pamyati obychno prozrachna dlya programmista odnako dlya eyo effektivnogo ispolzovaniya v nekotoryh sluchayah primenyayutsya specialnye algoritmicheskie priyomy izmenyayushie poryadok obhoda dannyh v OZU ili povyshayushie ih lokalnost naprimer pri blochnom umnozhenii matric Princip rabotyDiagramma keshej CPU Dannyj razdel opisyvaet tipichnyj kesh dannyh i nekotorye vidy keshej instrukcij bufer associativnoj translyacii TLB mozhet byt ustroen slozhnee a kesh instrukcij proshe Na diagramme sprava izobrazheny osnovnaya i kesh pamyat Kazhdaya stroka gruppa yacheek pamyati soderzhit dannye organizovannye v kesh linii Razmer kazhdoj kesh linii mozhet razlichatsya v raznyh processorah no dlya bolshinstva x86 processorov on sostavlyaet 64 bajta Razmer kesh linii obychno bolshe razmera dannyh k kotoromu vozmozhen dostup iz odnoj mashinnoj komandy tipichnye razmery ot 1 do 16 bajt Kazhdaya gruppa dannyh v pamyati razmerom v 1 kesh liniyu imeet poryadkovyj nomer Dlya osnovnoj pamyati etot nomer yavlyaetsya adresom pamyati s otbroshennymi mladshimi bitami V keshe kazhdoj kesh linii dopolnitelno stavitsya v sootvetstvie teg kotoryj yavlyaetsya adresom produblirovannyh v etoj kesh linii dannyh v osnovnoj pamyati Pri dostupe processora v pamyat snachala proizvoditsya proverka hranit li kesh zaprashivaemye iz pamyati dannye Dlya etogo proizvoditsya sravnenie adresa zaprosa so znacheniyami vseh tegov kesha v kotoryh eti dannye mogut hranitsya Sluchaj sovpadeniya s tegom kakoj libo kesh linii nazyvaetsya popadaniem v kesh angl cache hit obratnyj zhe sluchaj nazyvaetsya kesh promahom angl cache miss Popadanie v kesh pozvolyaet processoru nemedlenno proizvesti chtenie ili zapis dannyh v kesh linii s sovpavshim tegom Otnoshenie kolichestva popadanij v kesh k obshemu kolichestvu zaprosov k pamyati nazyvayut rejtingom popadanij angl hit rate ono yavlyaetsya meroj effektivnosti kesha dlya vybrannogo algoritma ili programmy V sluchae promaha v keshe vydelyaetsya novaya zapis v teg kotoroj zapisyvaetsya adres tekushego zaprosa a v samu kesh liniyu dannye iz pamyati posle ih prochteniya libo dannye dlya zapisi v pamyat Promahi po chteniyu zaderzhivayut ispolnenie poskolku oni trebuyut zaprosa dannyh v bolee medlennoj osnovnoj pamyati Promahi po zapisi mogut ne davat zaderzhku poskolku zapisyvaemye dannye srazu mogut byt sohraneny v keshe a zapis ih v osnovnuyu pamyat mozhno proizvesti v fonovom rezhime Rabota keshej instrukcij vo mnogom pohozha na vysheprivedennyj algoritm raboty kesha dannyh no dlya instrukcij vypolnyayutsya tolko zaprosy na chtenie Keshi instrukcij i dannyh mogut byt razdeleny dlya uvelicheniya proizvoditelnosti princip ispolzuemyj v Garvardskoj arhitekture ili obedineny dlya uprosheniya apparatnoj realizacii Dlya dobavleniya dannyh v kesh posle kesh promaha mozhet potrebovatsya vytesnenie angl evict ranee zapisannyh dannyh Dlya vybora zameshaemoj stroki kesha ispolzuetsya evristika nazyvaemaya politika zamesheniya angl replacement policy Osnovnoj problemoj algoritma yavlyaetsya predskazanie kakaya stroka veroyatnee vsego ne potrebuetsya dlya posleduyushih operacij Kachestvennye predskazaniya slozhny i apparatnye keshi ispolzuyut prostye pravila takie kak LRU Pometka nekotoryh oblastej pamyati kak nekeshiruemyh angl non cacheable uluchshaet proizvoditelnost za schyot zapreta keshirovaniya redko ispolzuemyh dannyh Promahi dlya takoj pamyati ne sozdayut kopii dannyh v keshe Pri zapisi dannyh v kesh dolzhen sushestvovat opredelyonnyj moment vremeni kogda oni budut zapisany v osnovnuyu pamyat Eto vremya kontroliruetsya politikoj zapisi angl write policy Dlya keshej so skvoznoj zapisyu angl write through lyubaya zapis v kesh privodit k nemedlennoj zapisi v pamyat Drugoj tip keshej obratnaya zapis angl write back inogda takzhe nazyvaemyj copy back otkladyvaet zapis na bolee pozdnee vremya V takih keshah otslezhivaetsya sostoyanie kesh lineek eshyo ne sbroshennyh v pamyat pometka bitom gryaznyj angl dirty Zapis v pamyat proizvoditsya pri vytesnenii podobnoj stroki iz kesha Takim obrazom promah v keshe ispolzuyushem politiku obratnoj zapisi mozhet potrebovat dvuh operacij dostupa v pamyat odin dlya sbrosa sostoyaniya staroj stroki i drugoj dlya chteniya novyh dannyh Sushestvuyut takzhe smeshannye politiki Kesh mozhet byt so skvoznoj zapisyu angl write through no dlya umensheniya kolichestva tranzakcij na shine zapisi mogut vremenno pomeshatsya v ochered i obedinyatsya drug s drugom Dannye v osnovnoj pamyati mogut izmenyatsya ne tolko processorom no i periferiej ispolzuyushej pryamoj dostup k pamyati ili drugimi processorami v mnogoprocessornoj sisteme Izmenenie dannyh privodit k ustarevaniyu ih kopii v keshe sostoyanie stale V drugoj realizacii kogda odin processor izmenyaet dannye v keshe kopii etih dannyh v keshah drugih processorov budut pomecheny kak stale Dlya podderzhaniya soderzhimogo neskolkih keshej v aktualnom sostoyanii ispolzuetsya specialnyj protokol podderzhki kogerentnosti Struktura zapisi v keshe Tipichnaya struktura zapisi v keshe Blok dannyh teg bit aktualnosti Blok dannyh kesh liniya soderzhit neposredstvennuyu kopiyu dannyh iz osnovnoj pamyati Bit aktualnosti oznachaet chto dannaya zapis soderzhit aktualnuyu samuyu svezhuyu kopiyu Struktura adresa teg indeks smeshenie Adres pamyati razdelyaetsya ot starshih bit k mladshim na Teg indeks i smeshenie Dlina polya indeksa ravna log2 cache rows displaystyle lceil log 2 cache rows rceil bit i sootvetstvuet ryadu stroke kesha ispolzuemoj dlya zapisi Dlina smesheniya ravna log2 data blocks displaystyle lceil log 2 data blocks rceil Associativnost Grafik effektivnosti kesha kolichestvo promahov po osi ordinat v zavisimosti ot stepeni associativnosti i kolichestva kanalov Po osi absciss razmer kesha Associativnost yavlyaetsya kompromissom Proverka bolshego chisla zapisej trebuet bolshe zatrat energii ploshadi chipa i potencialno vremeni Esli by sushestvovalo 10 mest v kotorye algoritm vytesneniya mog by otobrazit mesto v pamyati togda proverka nalichiya etogo mesta v keshe potrebovala by prosmotra 10 zapisej v keshe S drugoj storony keshi s vysokoj associativnostyu podverzheny menshemu kolichestvu promahov sm nizhe konfliktuyushie promahi i processor tratit menshe vremeni na chteniya iz medlennoj osnovnoj pamyati Sushestvuet empiricheskoe nablyudenie chto udvoenie associativnosti ot pryamogo otobrazheniya k 2 kanalnoj ili ot 2 k 4 kanalnoj imeet primerno takoe zhe vliyanie na intensivnost popadanij hit rate chto i udvoenie razmera kesha Uvelichenie associativnosti svyshe 4 kanalov prinosit menshij effekt dlya umensheniya kolichestva promahov miss rate i obychno proizvoditsya po drugim prichinam naprimer iz za peresecheniya virtualnyh adresov V poryadke uhudsheniya uvelicheniya dlitelnosti proverki na popadanie i uluchsheniya umensheniya kolichestva promahov kesh pryamogo otobrazheniya angl direct mapped cache nailuchshee vremya popadaniya i sootvetstvenno luchshij variant dlya bolshih keshej 2 kanalnyj mnozhestvenno associativnyj kesh angl 2 way set associative cache 2 kanalnyj skewed associativnyj kesh angl the best tradeoff for caches whose sizes are in the range 4K 8K bytes Andre Seznec 4 kanalnyj mnozhestvenno associativnyj kesh angl 4 way set associative cache polnostyu associativnyj kesh angl fully associative cache nailuchshij samyj nizkij procent promahov miss rate i luchshij variant pri chrezvychajno vysokih zatratah pri promahe miss penalty Kesh pryamogo otobrazheniya n kanalnyj mnozhestvenno associativnyj kesh Polnostyu associativnyj keshPsevdoassociativnyj kesh Psevdoassociativnyj kesh eto tip kesh pamyati kotoryj ispolzuet kombinaciyu pryamogo i nabornogo sposobov poiska kesh bloka Psevdoassociativnyj kesh razdelyaet kesh pamyat na neskolko chastej nazyvaemyh naborami Kazhdyj nabor soderzhit neskolko kesh linij ili blokov dannyh Kogda proishodit obrashenie k pamyati hesh adres elementa vychislyaetsya i zatem proveryayutsya vse linii v sootvetstvuyushem nabore pamyati Kesh pamyat s psevdoassociativnoj organizaciej obespechivaet kompromiss mezhdu prostotoj proekta i effektivnostyu poiska dannyh Vidy promahov Promah po chteniyu iz kesha instrukcij Obychno daet ochen bolshuyu zaderzhku poskolku processor ne mozhet prodolzhat ispolnenie programmy po krajnej mere tekushego potoka ispolneniya i vynuzhden prostaivat v ozhidanii zagruzki instrukcii iz pamyati Promah po chteniyu iz kesha dannyh Obychno daet menshuyu zaderzhku poskolku instrukcii ne zavisyashie ot zaproshennyh dannyh mogut prodolzhat ispolnyatsya poka zapros obrabatyvaetsya v osnovnoj pamyati Posle polucheniya dannyh iz pamyati mozhno prodolzhat ispolnenie zavisimyh instrukcij Promah po zapisi v kesh dannyh Obychno daet naimenshuyu zaderzhku poskolku zapis mozhet byt postavlena v ochered i posleduyushie instrukcii prakticheski ne ogranicheny v svoih vozmozhnostyah Processor mozhet prodolzhat svoyu rabotu krome sluchaev promaha po zapisi s polnostyu zapolnennoj ocheredyu Kategorii promahov Three Cs Compulsory misses promahi vyzvannye pervym upominaniem zaproshennogo adresa Razmery keshej i ih associativnost ne vliyayut na kolichestvo dannyh promahov Predvyborka prefetching kak programmnaya tak i apparatnaya mozhet pomoch tak zhe kak i uvelichenie razmera kesh linii v kachestve vida apparatnoj predvyborki Takie promahi inogda nazyvayutsya holodnymi Capacity misses promahi vyzvannye isklyuchitelno konechnym razmerom kesha proishodyashie vne zavisimosti ot stepeni associativnosti ili razmera kesh linii Grafik takih promahov otnositelno razmera kesha mozhet dat nekotoruyu meru vremennoj lokalnosti temporal locality nekotorogo nabora zaprosov v pamyat Stoit zametit chto ne sushestvuet ponyatiya polnogo kesha pustogo kesha ili pochti polnogo kesha tak kak keshi processora pochti vse vremya imeyut kesh linii v zanyatom sostoyanii i znachit prakticheski kazhdoe zavedenie novoj linii potrebuet gasheniya uzhe zanyatoj Conflict misses promahi vyzvannye konfliktom Ih mozhno izbezhat esli by kesh ne vytesnil zapis ranee Mozhno dopolnitelno razdelit na promahi vyzvannye otobrazheniem konkretnym znacheniem associativnosti i promahi zamesheniya kotorye vyzvany konkretnym algoritmom vybora zapisej dlya zamesheniya Translyaciya adresov Osnovnaya statya Translation lookaside buffer Bolshaya chast processorov obshego naznacheniya realizuet kakoj libo variant virtualnoj pamyati Kratko govorya kazhdaya programma ispolnyayushayasya na mashine vidit sobstvennoe uproshennoe adresnoe prostranstvo soderzhashee kod i dannye tolko etoj programmy Lyubaya programma ispolzuet svoyo virtualnoe adresnoe prostranstvo vne zavisimosti ot ego mestopolozheniya v fizicheskoj pamyati Nalichie virtualnoj pamyati trebuet ot processora provedeniya translyacii virtualnyh matematicheskih adresov ispolzuemyh programmoj v fizicheskie adresa sootvetstvuyushie realnomu mestopolozheniyu v OZU Chast processora provodyashaya eto preobrazovanie nazyvaetsya ustrojstvo upravleniya pamyatyu MMU Dlya uskoreniya translyacij v MMU dobavlen kesh nedavno ispolzovannyh otobrazhenij sootvetstvij virtualnyh i fizicheskih adresov nazyvaemyj Translation Lookaside Buffer TLB Dlya dalnejshego opisaniya vazhny tri osobennosti processa translyacii adresov Zaderzhka Fizicheskij adres budet poluchen ot MMU tolko spustya nekotoroe vremya vplot do neskolkih taktov posle podachi na vhod MMU virtualnogo adresa s generatora adresov Effekt nalozheniya Neskolko virtualnyh adresov mogut sootvetstvovat odnomu fizicheskomu V bolshinstve processorov garantiruetsya chto vse zapisi po fizicheskomu adresu budut soversheny v poryadke zadannom programmoj Dlya vypolneniya etogo svojstva trebuetsya proverka chto tolko odin ekzemplyar kopii dannyh s fizicheskogo adresa nahoditsya v dannyj moment v keshe Edinica otobrazheniya Virtualnoe adresnoe prostranstvo razbito na stranicy bloki pamyati fiksirovannogo razmera nachinayushiesya s adresov kratnyh ih razmeru Naprimer 4 GB adresnogo prostranstva mozhno razdelit na 1048576 stranic po 4 kB dlya kazhdoj iz kotoryh vozmozhno nezavisimoe sootvetstvie fizicheskim stranicam V sovremennyh processorah chasto podderzhivaetsya ispolzovanie odnovremenno neskolkih razmerov stranic naprimer 4 kB i 2 MB dlya x86 64 a v nekotoryh sovremennyh AMD processorah eshyo i 1 GB Vazhno takzhe zametit chto pervye sistemy virtualnoj pamyati byli ochen medlennymi potomu chto oni trebovali proverki tablicy stranic hranimoj v osnovnoj OZU pered lyubym programmnym obrasheniem v pamyat Bez ispolzovaniya keshirovaniya dlya otobrazhenij takie sistemy umenshayut skorost raboty s pamyatyu primerno v 2 raza Poetomu ispolzovanie TLB ochen vazhno i inogda ego dobavlenie v processory predshestvovalo poyavleniyu obychnyh keshej dannyh i instrukcij Po otnosheniyu k virtualnoj adresacii keshi dannyh i instrukcij mogut byt podeleny na 4 tipa Adresa v keshah ispolzuyutsya dlya dvuh raznyh celej indeksirovaniya i tegirovaniya Physically indexed physically tagged PIPT fizicheski indeksiruemye i fizicheski tegiruemye Takie keshi prosty i izbegayut problem s nalozheniem aliasing no oni medlenny tak kak pered obrasheniem v kesh trebuetsya zapros fizicheskogo adresa v TLB Etot zapros mozhet vyzvat promah v TLB i dopolnitelnoe obrashenie v osnovnuyu pamyat pered tem kak nalichie dannyh budet provereno v keshe Virtually indexed virtually tagged VIVT virtualno indeksiruemye i virtualno tegiruemye I dlya tegirovaniya i dlya indeksa ispolzuetsya virtualnyj adres Blagodarya etomu proverki nalichiya dannyh v keshe proishodyat bystree ne trebuya obrasheniya k MMU Odnako voznikaet problema nalozheniya kogda neskolko virtualnyh adresov sootvetstvuyut odnomu i tomu zhe fizicheskomu V etom sluchae dannye budut zakeshirovany dvazhdy chto silno uslozhnyaet podderzhku kogerentnosti Drugoj problemoj yavlyayutsya omonimy situacii kogda odin i tot zhe virtualnyj adres naprimer v raznyh processah otobrazhaetsya v razlichnye fizicheskie adresa Stanovitsya nevozmozhnym razlichit takie otobrazheniya isklyuchitelno po virtualnomu indeksu Vozmozhnye resheniya sbros kesha pri pereklyuchenii mezhdu zadachami context switch trebovanie neperesecheniya adresnyh prostranstv processov tegirovanie virtualnyh adresov identifikatorom adresnogo prostranstva address space ID ASID ili ispolzovanie fizicheskih tegov Takzhe voznikaet problema pri izmenenii otobrazheniya virtualnyh adresov v fizicheskie chto trebuet sbrosa kesh linij dlya kotoryh izmenilos otobrazhenie Virtually indexed physically tagged VIPT virtualno indeksiruemye i fizicheski tegiruemye Dlya indeksa ispolzuetsya virtualnyj adres a dlya tega fizicheskij Preimushestvom nad pervym tipom yavlyaetsya menshaya zaderzhka poskolku mozhno iskat kesh liniyu odnovremenno s translyaciej adresov v TLB odnako sravnenie tega zaderzhivaetsya do polucheniya fizicheskogo adresa Preimushestvom nad vtorym tipom yavlyaetsya obnaruzhenie omonimov homonyms tak kak teg soderzhit fizicheskij adres Dlya dannogo tipa trebuetsya bolshe bit dlya tega poskolku indeksnye bity ispolzuyut inoj tip adresacii Physically indexed virtually tagged fizicheski indeksiruemye i virtualno tegirovannye keshi schitayutsya bespoleznymi i marginalnymi i predstavlyayut isklyuchitelno akademicheskij interes Skorost etih dejstvij zaderzhka zagruzki iz pamyati kriticheski vazhna dlya proizvoditelnosti processorov i poetomu bolshinstvo sovremennyh L1 keshej yavlyaetsya virtualno indeksiruemym chto kak minimum pozvolyaet bloku MMU proizvodit zapros v TLB odnovremenno s zaprosom dannyh iz kesh pamyati Virtualnoe tegirovanie i mehanizm vhints No virtualnaya indeksaciya ne yavlyaetsya luchshim vyborom dlya drugih urovnej kesha Stoimost obnaruzheniya peresecheniya virtualnyh adresov aliasing rastet s uvelicheniem razmera kesha i v rezultate bolshinstvo realizacij L2 i bolee dalnih ot processora urovnej kesha ispolzuet indeksirovanie po fizicheskim adresam Dostatochno dlitelnoe vremya keshi ispolzovali dlya tegov kak fizicheskie tak i virtualnye adresa hotya virtualnoe tegirovanie v nastoyashee vremya vstrechaetsya ochen redko Esli TLB zapros zakanchivaetsya ranshe zaprosa v kesh pamyat fizicheskij adres budet dostupen dlya sravneniya s tegom k momentu kogda eto budet neobhodimo i sledovatelno virtualnoe tegirovanie ne potrebuetsya Bolshie keshi chashe tegiruyutsya fizicheskimi adresami i tolko nebolshie bystrodejstvuyushie keshi ispolzuyut dlya tegov virtualnye adresa V sovremennyh processorah obshego naznacheniya virtualnoe tegirovanie zameneno na mehanizm vhints opisannyj dalee Virtualnoe indeksirovanie i peresecheniya virtualnyh adresov Eto pustoj razdel kotoryj eshe ne napisan Zdes mozhet raspolagatsya otdelnyj razdel Pomogite Vikipedii napisav ego 31 yanvarya 2017 Problema gomonimov i sinonimov Eto pustoj razdel kotoryj eshe ne napisan Zdes mozhet raspolagatsya otdelnyj razdel Pomogite Vikipedii napisav ego 31 yanvarya 2017 Rascvechivanie stranic Eto pustoj razdel kotoryj eshe ne napisan Zdes mozhet raspolagatsya otdelnyj razdel Pomogite Vikipedii napisav ego 31 yanvarya 2017 Ierarhiya keshej v sovremennyh mikroprocessorah Bolshinstvo sovremennyh processorov soderzhit v sebe neskolko vzaimodejstvuyushih keshej Specializirovannye keshi Superskalyarnye CPU osushestvlyayut dostup k pamyati iz neskolkih etapov konvejera chtenie instrukcii instruction fetch translyaciya virtualnyh adresov v fizicheskie chtenie dannyh data fetch Ochevidnym resheniem yavlyaetsya ispolzovanie razlichnyh fizicheskih keshej dlya kazhdogo iz etih sluchaev chtoby ne bylo borby za dostup k odnomu iz fizicheskih resursov s raznyh stadij konvejera Takim obrazom nalichie konvejera obychno privodit k nalichiyu po krajnej mere tryoh razdelnyh keshej kesh instrukcij kesh translyacij TLB i kesh dannyh kazhdyj iz kotoryh specializirovan na svoej zadache Konvejernye processory ispolzuyushie razdelnye keshi dlya dannyh i dlya instrukcij takie processory sejchas povsemestny nazyvayutsya processorami s Garvardskoj arhitekturoj Iznachalno dannyj termin primenyalsya dlya kompyuterov u kotoryh instrukcii i dannye razdeleny polnostyu i hranyatsya v razlichnyh ustrojstvah pamyati Odnako takoe polnoe razdelenie ne okazalos populyarnym i bolshinstvo sovremennyh kompyuterov imeet odno ustrojstvo osnovnoj pamyati poetomu mogut schitatsya mashinami s arhitekturoj fon Nejmana Mnogourovnevye keshi Odnoj iz problem yavlyaetsya fundamentalnaya problema balansa mezhdu zaderzhkami kesha i intensivnostyu popadanij Bolshie keshi imeyut bolee vysokij procent popadanij no vmeste s tem i bolshuyu zaderzhku Chtoby oslabit protivorechie mezhdu etimi dvumya parametrami bolshinstvo kompyuterov ispolzuet neskolko urovnej kesha kogda posle malenkih i bystryh keshej nahodyatsya bolee medlennye bolshie keshi v nastoyashij moment summarno do 3 urovnej v ierarhii keshej V edinichnyh sluchayah realizuyut 4 urovnya kesh pamyati Mnogourovnevye keshi obychno rabotayut v posledovatelnosti ot menshih keshej k bolshim Snachala proishodit proverka naimenshego i naibystrejshego kesha pervogo urovnya L1 v sluchae popadaniya processor prodolzhaet rabotu na vysokoj skorosti Esli menshij kesh dal promah proveryaetsya sleduyushij chut bolshij i bolee medlennyj kesh vtorogo urovnya L2 i tak dalee poka ne budet zaprosa k osnovnomu OZU Po mere togo kak raznica zaderzhek mezhdu OZU i bystrejshim keshem uvelichivaetsya v nekotoryh processorah uvelichivayut kolichestvo urovnej kesha v nekotoryh do 3h urovnej na kristalle K primeru processor Alpha 21164 v 1995 godu imel nakristallnyj kesh 3go urovnya v 96 kB IBM POWER4 v 2001 godu imel do chetyryoh keshej L3 po 32 MB na otdelnyh kristallah ispolzuemyh sovmestno neskolkimi yadrami Itanium 2 v 2003 godu imel 6 MB kesh L3 na kristalle Xeon MP pod kodom Tulsa v 2006 godu 16 MB kesha L3 na kristalle obshij na 2 yadra Phenom II v 2008 godu do 6 MB universalnogo L3 kesha Intel Core i7 v 2008 godu 8 MB nakristallnogo kesha L3 yavlyayushimsya inklyuzivnym i razdelyaemym mezhdu vsemi yadrami Polza ot kesha L3 zavisit ot haraktera obrashenij programmy v pamyat Nakonec s drugoj storony ierarhii pamyati nahoditsya registrovyj fajl samogo mikroprocessora kotoryj mozhno rassmatrivat kak nebolshoj i samyj bystryj kesh v sisteme so specialnymi svojstvami naprimer staticheskoe planirovanie kompilyatorom pri raspredelenii registrov kogda on raspolagaet dannye iz OZU na registr Podrobnee sm Registrovye fajly takzhe mogut imet ierarhiyu Cray 1 v 1976 godu imel 8 adresnyh A registrov i 8 skalyarnyh S registrov obshego naznacheniya Takzhe mashina soderzhala nabor iz 64 adresnyh B i 64 skalyarnyh T registrov obrashenie k kotorym bylo dolshe no vse zhe znachitelno bystree osnovnoj OZU Eti registry byli vvedeny po prichine otsutstviya v mashine kesha dannyh hotya kesh komand v mashine imelsya Zatrebovannye dannye schityvayutsya iz kesha pervogo angl L1 urovnya Zatrebovannye dannye schityvayutsya iz kesha vtorogo angl L2 urovnya V sluchae otsutstviya zatrebovannyh dannyh v keshah proizvoditsya chtenie iz OZU Eksklyuzivnost isklyuchitelnost i inklyuzivnost Dlya mnogourovnevyh keshej trebuetsya delat novye arhitekturnye resheniya Naprimer v nekotorom processore mogut potrebovat chtoby vse dannye hranyashiesya v keshe L1 hranilis takzhe i v keshe L2 Takie pary keshej nazyvayut strogo inklyuzivnymi angl inclusive Drugie processory naprimer AMD Athlon mogut ne imet podobnogo trebovaniya togda keshi nazyvayutsya eksklyuzivnymi isklyuchitelnymi dannye mogut byt libo v L1 libo v L2 keshe no nikogda ne mogut byt odnovremenno v oboih Do sih por drugim processoram takim kak Pentium II Pentium III i Pentium 4 ne trebuyutsya chtoby dannye v keshe pervogo urovnya takzhe razmeshalis v keshe vtorogo urovnya tem ne menee oni prodolzhayut tak delat Net nikakogo universalnogo obsheprinyatogo imeni dlya etoj promezhutochnoj politiki hotya chasto ispolzuetsya termin glavnym obrazom inklyuzivno angl mainly inclusive Preimushestvo isklyuchitelnyh keshej v tom chto oni hranyat bolshe dannyh Eto preimushestvo bolshe kogda isklyuchitelnyj kesh L1 sopostavim po razmeru s keshem L2 i menshe esli kesh L2 vo mnogo raz bolshe chem kesh L1 Kogda L1 propuskaet i L2 poluchaet dostup v sluchae popadaniya stroka kesha popadaniya v L2 obmenivaetsya so strokoj v L1 Victim cache Victim cache ili Victim buffer doslovno Kesh zhertv eto nebolshoj specializirovannyj kesh hranyashij te kesh linii kotorye byli nedavno vytesneny iz osnovnogo kesha mikroprocessora pri ih zameshenii Dannyj kesh raspolagaetsya mezhdu osnovnym keshem i ego angl refill path Obychno kesh zhertv yavlyaetsya polnostyu associativnym i sluzhit dlya umensheniya kolichestva konfliktnyh promahov conflict miss Mnogie chasto ispolzuemye programmy ne trebuyut polnogo associativnogo otobrazheniya dlya vseh popytok dostupa k pamyati Po statistike tolko nebolshaya dolya obrashenij k pamyati potrebuet vysokoj stepeni associativnosti Imenno dlya takih obrashenij sluzhit kesh zhertv predostavlyayushij vysokuyu associativnost dlya podobnyh redkih zaprosov Byl predlozhen DEC v 1990 Razmer takogo kesha mozhet sostavlyat ot 4 do 16 kesh linij Kesh trass Odnim iz naibolee ekstremalnyh sluchaev specializacii keshej mozhno schitat kesh trass angl trace cache ispolzuemyj v processorah Intel Pentium 4 Kesh trass eto mehanizm dlya uvelicheniya propusknoj sposobnosti zagruzki instrukcij i dlya umensheniya teplovydeleniya v sluchae Pentium 4 za schyot hraneniya dekodirovannyh trass instrukcij Takim obrazom etot kesh isklyuchal rabotu dekodera pri povtornom ispolnenii nedavno vypolnyavshegosya koda Odnoj iz rannih publikacij o keshe trass byla statya kollektiva avtorov i vyshedshaya v 1996 godu pod nazvaniem Trace Cache a Low Latency Approach to High Bandwidth Instruction Fetching Kesh trass nizkolatentnyj podhod dlya obespecheniya vysokoj propusknoj sposobnosti zagruzki instrukcij Kesh trass sohranyaet dekodirovannye instrukcii libo posle ih dekodirovaniya libo posle okonchaniya ih ispolneniya Obobshaya instrukcii dobavlyayutsya v kesh trass v gruppah predstavlyayushih soboj libo bazovye bloki libo dinamicheskie trassy Dinamicheskaya trassa put ispolneniya sostoit tolko iz instrukcij rezultaty kotoryh byli znachimy ispolzovalis vposledstvii i udalyaet instrukcii kotorye nahodyatsya v neispolnyayushihsya vetvyah krome togo dinamicheskaya trassa mozhet byt obedineniem neskolkih bazovyh blokov Takaya osobennost pozvolyaet ustrojstvu podgruzki instrukcij v processore zagruzhat srazu neskolko bazovyh blokov bez neobhodimosti zabotitsya o nalichii vetvlenij v potoke ispolneniya Linii trass hranyatsya v keshe trass po adresam sootvetstvuyushim schyotchiku instrukcij pervoj mashinnoj komandy iz trassy k kotorym dobavlen nabor priznakov predskazaniya vetvlenij Takaya adresaciya pozvolyaet hranit razlichnye trassy ispolneniya nachinayushiesya s odnogo adresa no predstavlyayushie razlichnye situacii po rezultatu predskazaniya vetvlenij Na stadii podgruzki instrukcii instruction fetch konvejera instrukcij dlya proverki popadaniya v kesh trass ispolzuetsya kak tekushij schyotchik instrukcij program counter tak i sostoyanie predskazatelya vetvlenij Esli popadanie svershilos liniya trassy neposredstvenno podaetsya na konvejer bez neobhodimosti oprashivat obychnyj kesh L2 ili osnovnoe OZU Kesh trass podaet mashinnye komandy na vhod konvejera poka ne konchitsya liniya trassy libo poka ne proizojdet oshibka predskazaniya v konvejere V sluchae promaha kesh trass nachinaet stroit sleduyushuyu liniyu trassy zagruzhaya mashinnyj kod iz kesha ili iz pamyati Pohozhie keshi trass ispolzovalis v Pentium 4 dlya hraneniya dekodirovannyh mikrooperacij i mikrokoda realizuyushego slozhnye x86 instrukcii Smith Rotenberg and Bennett s paper Sm polnyj tekst raboty v RealizaciiIstoriya V rannie gody mikroprocessornyh tehnologij dostup v pamyat byl lish nemnogo medlennee dostupa k processornym registram No s 1980 h razryv v proizvoditelnosti mezhdu processorami i pamyatyu stal narastat Mikroprocessory sovershenstvovalis bystree chem pamyat osobenno v plane chastoty funkcionirovaniya takim obrazom pamyat stanovilas uzkim mestom pri dostizhenii polnoj proizvoditelnosti ot sistemy Hotya bylo tehnicheski vozmozhnym imet osnovnuyu pamyat stol zhe bystroj kak i CPU byl vybran bolee ekonomichnyj put ispolzovat izbytochnoe kolichestvo nizkoskorostnoj pamyati no vvesti v sistemu nebolshuyu no bystruyu kesh pamyat dlya smyagcheniya razryva v proizvoditelnosti V itoge poluchili na poryadok bolshie obyomy pamyati primerno za tu zhe cenu i s nebolshimi poteryami obshej proizvoditelnosti Chtenie dannyh iz kesha dlya sovremennyh processorov obychno zanimaet bolee odnogo takta Vremya ispolneniya programm yavlyaetsya chuvstvitelnym k zaderzhkam chteniya iz kesha dannyh pervogo urovnya Mnogo usilij razrabotchikov a takzhe moshnosti i ploshadi kristalla pri sozdanii processora otvoditsya dlya uskoreniya raboty keshej Prostejshim keshem yavlyaetsya virtualno indeksiruemyj kesh pryamogo otobrazheniya Virtualnyj adres podschityvaetsya pri pomoshi summatora sootvetstvuyushaya chast adresa vydelyaetsya i ispolzuetsya dlya indeksirovaniya SRAM kotoryj vernet zagruzhaemye dannye Dannye mogut byt vyrovneny po bajtovym granicam v bajtovom sdvigatele i zatem peredany sleduyushej operacii Pri takom chtenii ne trebuetsya kakaya libo proverka tegov fakticheski net dazhe neobhodimosti schityvat teg Na bolee pozdnih stadiyah konvejera pered okonchaniem ispolneniya instrukcii chteniya potrebuetsya chtenie tega i ego sravnenie s virtualnym adresom chtoby udostoveritsya chto proizoshlo popadanie v kesh Esli zhe byl promah potrebuetsya chtenie iz pamyati libo bolee medlennogo kesha s dalnejshim obnovleniem rassmatrivaemogo kesha i perezapuskom konvejera Associativnyj kesh bolee slozhen potomu chto nekotoryj variant tega nuzhno schitat dlya opredeleniya kakuyu chast kesha vybrat Kesh N way set associative pervogo urovnya obychno schityvaet odnovremenno vse N vozmozhnyh tegov i N dannyh parallelno zatem provodit sravnenie tegov s adresom i vybor dannyh associirovannyh s sovpavshim tegom Keshi 2 go urovnya v celyah ekonomii energovydeleniya inogda vypolnyayut snachala chtenie tegov i tolko zatem chtenie odnogo elementa dannyh iz SRAM dannyh Put chteniya dlya 2 way associative cache Diagramma sprava dolzhna pokazat kak proishodit ispolzovanie razlichnyh chastej adresa Bit 31 adresa yavlyaetsya starshim bit 0 naimenee znachashim bitom mladshim Na diagramme pokazany dve SRAM indeksaciya i multipleksirovanie dlya 4 kB 2 way set associative virtualno indeksirovannogo i virtualno tegirovannogo kesha s 64bajtnymi blokami 32bitnoj shirinoj chteniya i 32bitnym virtualnym adresom Poskolku kesh imeet razmer 4 KB i linii razmerom 64 bajta v nyom hranitsya 64 linii i my mozhem schitat za dva raza iz tega SRAM kotoryj soderzhit 32 stolbca kazhdyj iz kotoryh soderzhit paru 21 bitnyh tegov Hotya mozhet byt ispolzovana lyubaya funkciya virtualnoj adresacii bitov 31 po 6 chtoby indeksirovat teg i dannye SRAM proshe vsego vospolzovatsya mladshimi razryadami Tak zhe potomu chto obyom kesha sostavlyaet 4 kB i imeet chetyryohbajtnyj put dlya chteniya i chtenie proizvoditsya po dvum putyami dlya kazhdogo dostupa dannye SRAM sostavlyayut 512 ryadov shirinoj 8 bajt Bolee sovremennyj kesh vozmozhno byl by 16 kilobajtnym chetyryohputnym nabor associativnym virtualno indeksiruemym virtualno popadaemym i fizicheski pomechaemym tegom s 32 bitnymi strokami 32 bitnoj shirinoj shiny chteniya i 36 bitnym fizicheskim adresovaniem Rekurrentnoe sootnoshenie puti chteniya dlya takogo kesha vyglyadit ochen shozhe s rassmotrennymi vyshe Vmesto tegov chitayutsya virtualnye popadaniya angl vhits i snova proizvoditsya sootvetstvie podmnozhestva virtualnomu adresu Pozzhe v konvejere virtualnyj adres perevoditsya v fizicheskij adres TLB i proizvoditsya chtenie fizicheskogo tega tolko odno tak kak virtualnoe popadanie postavlyaet put dlya chteniya kesha V konce fizicheskij adres sravnivaetsya s fizicheskim tegom chtoby opredelit proizoshlo li popadanie Nekotorye processory SPARC imeli uskorennye na neskolko zaderzhek zatvora angl gate delay L1 keshi za schyot ispolzovaniya SRAM dekoderov vmesto summatora virtualnyh adresov Podrobnee sm en Sum addressed decoder V X86 Chetyre mikroshemy kesha vtorogo urovnya na materinskoj plate dlya processorov semejstva i486 Raspolagayutsya v bukvalnom smysle mezhdu CP i OZU Kogda mikroprocessory x86 dostigli chastot v 20 i bolee megagerc nachinaya s Intel 80386 dlya uvelicheniya proizvoditelnosti v nih bylo dobavleno nebolshoe kolichestvo bystroj kesh pamyati Eto bylo neobhodimo iz za togo chto ispolzuemaya kak sistemnaya OZU DRAM imela znachitelnye zaderzhki do 120 ns i trebovala takty dlya obnovleniya Kesh byl postroen na baze bolee dorogoj no znachitelno bolee bystroj SRAM kotoraya v te vremena imela zaderzhki 15 20 ns Rannie keshi byli vneshnimi po otnosheniyu k processoru i chasto raspolagalis na materinskoj plate kak 8 ili 9 mikroshem v korpusah DIP raspolozhennye v soketah dlya vozmozhnosti uvelicheniya ili umensheniya razmera kesha Nekotorye versii processora I386 podderzhivali ot 16 do 64 kB vneshnego kesha S vyhodom processora Intel 80486 8 kB kesha bylo integrirovano neposredstvenno na kristall mikroprocessora Etot kesh byl nazvan L1 pervogo urovnya angl level 1 chtoby otlichat ego ot bolee medlennogo kesha na materinskoj plate nazvannogo L2 vtorogo urovnya angl level 2 Poslednie byli znachitelno bolshe vplot do 256 kB V dalnejshem sluchai otdeleniya kesha proizvodilis lish ishodya iz soobrazhenij marketingovoj politiki naprimer v mikroprocessore Celeron postroennom na yadre Pentium II V mikroprocessore Pentium ispolzuetsya razdelnyj kesh komand i dannyh Bufer translyacii adresov TLB preobrazuet adres v OZU v sootvetstvuyushij adres v keshe Kesh dannyh Pentium ispolzuet metod obratnoj zapisi angl write back kotoryj pozvolyaet modificirovat dannye v keshe bez dopolnitelnogo obrasheniya k operativnoj pamyati dannye zapisyvayutsya v OZU tolko pri udalenii iz kesha i protokol MESI Modified Exclusive Shared Invalid kotoryj obespechivaet kogerentnost dannyh v keshah processorov i v OZU pri rabote v multiprocessornoj sisteme Kazhdyj iz razdelnyh keshej dannyh i komand mikroprocessora Pentium MMX imeet obyom 16 kB i soderzhit dva porta po odnomu dlya kazhdogo ispolnitelnogo konvejera Kesh dannyh imeet bufer translyacii adresov TLB Sleduyushij variant realizacii keshej v x86 poyavilsya v Pentium Pro v kotorom kesh vtorogo urovnya obedinyonnyj dlya dannyh i komand razmerom 256 512 kB razmeshyon v odnom korpuse s processorom i keshem pervogo urovnya razmerom 8 kB razdelnym dlya dannyh i komand i podnyal ego chastotu do chastoty yadra Pozzhe kesh vtorogo urovnya stal razmeshatsya na tom zhe kristalle chto i processor angl Dual Independent Bus novaya arhitektura kesh pamyati ispolzuet raznye shiny dlya soedineniya processornogo yadra s osnovnoj operativnoj pamyatyu Kesh pervogo urovnya dvuhportovyj neblokiruyushij podderzhivaet odnu operaciyu zagruzki i odnu operaciyu zapisi za takt Rabotaet na taktovoj chastote processora Za takt peredayotsya 64 bita V mikroprocessore Pentium II kesh pervogo urovnya uvelichen 16 kB dlya dannyh i 16 kB dlya komand Dlya kesha vtorogo urovnya ispolzuetsya BSRAM raspolozhennaya na odnoj s processorom plate v kartridzhe S E C dlya ustanovki v Slot 1 S rostom populyarnosti mnogoyadernyh processorov na kristall stali dobavlyat keshi tretego urovnya nazvannye L3 Etot uroven kesha mozhet byt obshim dlya neskolkih yader i realizovyvat effektivnoe vzaimodejstvie mezhdu yadrami Ego obyom obychno bolshe summarnogo obyoma keshej vseh podklyuchennyh k nemu yader i mozhet dostigat 16 MB Populyarnym kesh na materinskoj plate ostavalsya do ery vyhoda Pentium MMX i vyshel iz upotrebleniya s vvedeniem SDRAM i rostom raznicy mezhdu chastotoj shiny processora i chastotoj yadra processora kesh na materinskoj plate stal lish nemnogim bystree osnovnoj OZU Primer kesha processornoe yadro K8 Privedena shema keshej yadra mikroprocessorov AMD K8 na kotoroj vidny kak specializirovannye keshi tak i ih mnogourovnevost Yadro ispolzuet chetyre razlichnyh specializirovannyh kesha kesh instrukcij TLB instrukcij TLB dannyh i kesh dannyh Kesh instrukcij sostoit iz 64 bajtnyh blokov yavlyayushihsya kopiej osnovnoj pamyati i mozhet podgruzhat do 16 bajtov za takt Kazhdyj bajt v etom keshe hranitsya v 10 bitah a ne v 8 prichyom v dopolnitelnyh bitah otmecheny granicy instrukcij t o kesh provodit chastichnoe preddekodirovanie Dlya proverki celostnosti dannyh ispolzuetsya lish kontrol chetnosti a ne ECC tak kak bit chetnosti zanimaet menshe mesta a v sluchae sboya povrezhdyonnye dannye mozhno obnovit pravilnoj versiej iz pamyati TLB instrukcij soderzhit kopii zapisej iz tablicy stranic Na kazhdyj zapros chteniya komand trebuetsya translyaciya matematicheskih adresov v fizicheskie Zapisi o translyacii byvayut 4 i 8 bajtnymi i TLB razbit na 2 chasti sootvetstvenno odna dlya 4 kB otobrazhenij i drugaya dlya 2 i 4 MB otobrazhenij bolshie stranicy Takoe razbienie uproshaet shemy polnostyu associativnogo poiska v kazhdoj iz chastej OS i prilozheniya mogut ispolzovat otobrazheniya razlichnogo razmera dlya chastej virtualnogo adresnogo prostranstva TLB dannyh yavlyaetsya sdvoennym i oba bufera soderzhat odinakovyj nabor zapisej Ih sdvoennost pozvolyaet proizvodit kazhdyj takt translyaciyu dlya dvuh zaprosov k dannym odnovremenno Tak zhe kak i TLB instrukcij etot bufer razdelen mezhdu zapisyami dvuh vidov Kesh dannyh soderzhit 64 bajtnye kopii fragmentov pamyati On razdelen na 8 bankov banok kazhdyj soderzhit po 8 kilobajt dannyh Kesh pozvolyaet proizvodit po dva zaprosa k 8 bajtovym dannym kazhdyj takt pri uslovii chto zaprosy budut obrabotany razlichnymi bankami Tegovye struktury v keshe produblirovany tak kak kazhdyj 64 bajtnyj blok raspredelen po vsem 8 bankam Esli sovershaetsya 2 zaprosa v odin takt oni rabotayut s sobstvennoj kopiej tegovoj informacii Takzhe v etom yadre ispolzuyutsya mnogourovnevye keshi dvuhurovnevye TLB instrukcij i dannyh na vtorom urovne hranyatsya lish zapisi o 4 kB otobrazheniyah i kesh vtorogo urovnya L2 unificirovannyj dlya raboty kak s keshami dannyh i instrukcij 1go urovnya tak i dlya razlichnyh TLB Kesh L2 yavlyaetsya eksklyuzivnym dlya L1 dannyh i L1 instrukcij to est kazhdyj keshirovannyj 8 bajtovyj fragment mozhet nahoditsya libo v L1 instrukcij libo v L1 dannyh libo v L2 Isklyucheniem mogut byt lish bajty sostavlyayushie zapisi PTE kotorye mogut nahoditsya odnovremenno v TLB i v keshe dannyh vo vremya obrabotki virtualnogo otobrazheniya so storony OS V takom sluchae OS otvechaet za svoevremennyj sbros TLB posle obnovleniya zapisej translyacii DEC Alpha V mikroprocessore DEC Alpha 21164 vypushennom v noyabre 1995 goda s taktovoj chastotoj 333 MGc kesh pervogo urovnya mozhet podderzhivat nekotoroe kolichestvo do 21 neobrabotannyh promahov Imeetsya shestielementnyj fajl adresov neobrabotannyh promahov angl miss address file MAF kazhdyj element kotorogo soderzhit adres i registr dlya zagruzki pri promahe esli adresa promaha prinadlezhat odnoj stroke kesha to v MAF oni rassmatrivayutsya kak odin element Pomimo razdelnyh keshej L1 so skvoznoj zapisyu na kristalle processora raspolozheny chastichno associativnyj kesh L2 s obratnoj zapisyu i kontroller kesha L3 rabotayushego kak v sinhronnom tak i v asinhronnom rezhime V vypushennom v marte 1997 goda DEC Alpha 21164PC vneshnij kesh vtorogo urovnya obyom kesha komand uvelichen do 16 kB V mikroprocessore DEC Alpha 21264 net kesha vtorogo urovnya kontroller kotorogo tem ne menee razmeshaetsya na kristalle no kesh pervogo urovnya uvelichen do 128 kB po 64 kB dlya kesha komand i kesha dannyh sootvetstvenno PA RISC Razrabotka Hewlett Packard dlya nauchnyh i inzhenernyh vychislenij PA 8000 soderzhit bufer pereuporyadochivaniya adresov angl ARB otslezhivayushij vse komandy zagruzki sohraneniya kotoryj pozvolyaet sokratit zaderzhku adresovaniya vneshnej kesh pamyati dannyh i komand kotoraya v dannom processore mozhet imet obyom do 4 MB Tem ne menee dazhe effektivnoe upravlenie vneshnim keshem pri pomoshi vysokoskorostnyh linij upravleniya i predvyborki dannyh i komand iz osnovnoj pamyati v kesh ne skompensirovalo nevysokuyu skorost i vysokuyu stoimost Ustranit ukazannye nedostatki udalos v PA 8500 v kotorom za schyot tehprocessa 0 25 mkm udalos dobavit na kristall 512 kB kesha komand i 1 MB kesha dannyh PowerPC Postroennyj na garvardskoj arhitekture PowerPC 620 soderzhit dva vstroennyh kesha yomkostyu 32 kB kazhdyj kotorye imeyut sobstvennye bloki upravleniya pamyatyu angl MMU i funkcioniruyut nezavisimo drug ot druga Komandy i adresa perehodov keshiruyutsya v keshe BTAC angl Branch Target Adress Cache Shinnyj interfejs processora vklyuchaet polnuyu realizaciyu podderzhki kesha vtorogo urovnya obyomom do 128 MB rabotayushem na chastote processora libo vdvoe vchetvero menshej i dlya upravleniya rabotoj vneshnego kesha ne trebuet dopolnitelnyh taktov Realizovana kombinaciya skvoznoj i obratnoj zapisi a takzhe podderzhka protokola MESI MIPS Svoya specifika u kesha L1 primenyaemogo v RA 10000 kazhdaya komanda v keshe snabzhena dopolnitelnym chetyryohbitnym tegom kotoryj ispolzuetsya v dalnejshem dekodirovanii i klassifikacii komandy Sm takzheKogerentnost keshaPrimechaniyaKorneev V V Kiselev A V 1 2 3 Strukturnye metody umensheniya vremeni dostupa k pamyati Sovremennye mikroprocessory M Nolidzh 1998 S 75 76 240 s 5000 ekz ISBN 5 98251 050 6 Zavisimost proizvoditelnosti processora ot razmera kesha L2 neopr Data obrasheniya 20 oktyabrya 2011 Arhivirovano 22 oktyabrya 2011 goda AMD Athlon II X4 ili Phenom II vliyanie kesh pamyati L3 na proizvoditelnost neopr Data obrasheniya 12 yanvarya 2015 Arhivirovano 15 iyulya 2014 goda Intel 64 and IA 32 Architectures Software Developer s Manual Volume 1 Basic Architecture Order number 253665 021 Understanding Caching neopr Linux Journal Data obrasheniya 2 maya 2010 Arhivirovano 27 aprelya 2012 goda https www theregister co uk 2004 05 06 hp mx2 itaniummodule Arhivnaya kopiya ot 10 avgusta 2017 na Wayback Machine HP has packed mx2 with 32MB of L4 cache https www theregister co uk 2010 07 23 ibm z196 mainframe processor Arhivnaya kopiya ot 10 avgusta 2017 na Wayback Machine L4 cache memory which most servers do not have IBM added some L4 cache to its EXA chipsets for Xeon processors from Intel a few years back This L4 cache is necessary for one key reason IBM POWER4 Processor Review Ixbtlabs Arhivnaya kopiya ot 13 iyulya 2011 na Wayback Machine An important feature of the L3 cache is a capability to combine separate caches of POWER4 chips up to 4 128 MBytes which allows using address interleaving to speed up the access Detalnoe issledovanie arhitektury AMD64 Arhivnaya kopiya ot 27 yanvarya 2012 na Wayback Machine ixbt com Podsistema kesha Poisk i analiz izmenenij N P Jouppi Improving direct mapped cache performance by the addition of a small fully associative cache and prefetch buffers 17th Annual International Symposium on Computer Architecture 1990 Proceedings DOI 10 1109 ISCA 1990 134547 Victim Cache Simulator neopr Data obrasheniya 12 yanvarya 2012 Arhivirovano 2 maya 2010 goda The Processor Memory performance gap neopr acm org Data obrasheniya 8 noyabrya 2007 Arhivirovano iz originala 27 aprelya 2012 goda Guk M 4 Keshirovanie pamyati Processory Pentium II Pentium Pro i prosto Pentium M Piter 1999 S 126 143 288 s 7000 ekz ISBN 5 8046 0043 5 Korneev V V Kiselev A V 2 2 1 2 Razdelnye kesh pamyat komand i dannyh Sovremennye mikroprocessory M Nolidzh 1998 S 75 76 240 s 5000 ekz ISBN 5 98251 050 6 SsylkiMemory part 2 CPU caches Statya na lwn net avtor Ulrich Drepper s detalnym opisaniem keshej 8 way set associative kesh napisannyj na VHDL





