Можно ли изменить размер строки кэша ЦП? и как передаются данные в блоках кеша?

У меня есть два вопроса, связанных с оборудованием:

1. Изменяется ли размер строки кэша ЦП операционной системой или он жестко встроен в ЦП? размеры строк кэша можно увидеть с помощью getconf -a в Linux.

2- Предположим, что размер строки моего кэша данных равен 64 bytes, как данные передаются из памяти в ЦП? Это параллельная передача? (имеется в виду, что на шине есть 64*8 = 512 маленьких провода для одновременного перемещения всех битов) или его последовательная передача?

3- Пока мы на этом, у меня есть 3-й вопрос. Как логика Cache placement policies встроена в ЦП, управляется ли ею программное обеспечение (если да, то где оно хранится) или логика буквально каким-то образом находится в аппаратном обеспечении?


person Dan    schedule 25.11.2020    source источник


Ответы (1)


В прошлом некоторые системы позволяли настраивать размер сектора кэша во время загрузки (используя терминологию Intel, где строка кэша — это единица когерентности, а сектор кэша — это единица адресной маркировки). Например, PowerPC 7410 поддерживал до 2 МБ кэш-памяти L2, из которых часть этой внешней SRAM могла использоваться вместо области памяти с прямым отображением. Увеличение размера сектора кэша позволило встроенной в процессор памяти тегов фиксированного размера поддерживать большие кэши L2, но размер внешней SRAM был установлен во время упаковки / производства. Выделив, например, половину емкости памяти с прямым отображением, размер сектора можно было бы уменьшить вдвое.

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

Если бы у дополнительного хранилища тегов было другое применение, конфигурируемость размеров секторов кэша могла бы быть привлекательной. Такое использование может включать сжатие в кэше (где хранилище данных может вместить больше строк/секторов при сжатии данных), выделение хранилища тегов или хранения данных для других целей (например, если половина хранилища данных L3 была выделена для отслеживания фильтр, размер сектора кеша можно было бы уменьшить вдвое, чтобы увеличить значимое использование емкости или уменьшить конфликтные промахи, если бы половина тегов использовалась для метаданных предварительной выборки, размер сектора кеша можно было бы удвоить, чтобы позволить использовать все хранилище данных), или дополнительное использование механизма кэша V-way (где количество наборов удваивается относительно фактической емкости кэша: см. Мойнуддин К. Куреши и др. The V-Way Cache: Demand-Based Associativity via Global Replacement, PDF), где отключение V-way позволит вдвое уменьшить размер сектора кэша.

(Можно также спроектировать кеш с неравномерной задержкой, в котором удвоение размера сектора кеша позволяет одинаково быстро проверять теги, но поскольку доступ к данным медленнее, это принесет пользу поэтапному доступу к кешу данных тегов, как это обычно бывает в L2 и внешнем кеше, и преимущество будет быть скромным. Частичный выбор пути тега / обнаружение промаха обеспечили бы большую часть этого преимущества.)

С 64-битными строками кэша и примерно 36-битными адресными тегами снижение накладных расходов на хранение при использовании 128-битных секторов кэш-памяти является скромным. (Преимущество увеличивается, если для хранения данных используется более плотный механизм, такой как DRAM. Если хранилище данных находится вне кристалла, а теги находятся на кристалле, более крупные сектора могут стать привлекательными, поскольку внутреннее хранилище более ограничено.)

Что касается ширины передачи, то даже до памяти DDR, с ее длиной пакета в два, требующей более узкого интерфейса, чем линия кэш-памяти (DDR4 имеет длину пакета в восемь, хотя пакетная отсечка вдвое меньше), предоставление интерфейса полной ширины было бы оказались чрезмерно дорогими. Даже высокопроизводительная версия Alpha 21064 (Википедия) использовала только 128-битную шину данных с 32B строк кэша. (Обратите внимание, что перед встроенными контроллерами памяти внешний контроллер памяти мог использовать другую ширину, чем шина данных процессора.)

Что касается реализации политики замены, то она выполняется на специализированном оборудовании. (Замена, управляемая программным обеспечением, была предложена академическими кругами: поиск Google Scholar.) TLB, управляемые программным обеспечением, были реализованы, но даже управление TLB сейчас чаще всего осуществляется аппаратно.

person Paul A. Clayton    schedule 26.11.2020
comment
Спасибо за эту подробную информацию. Итак, в современных чипах x64 передача данных между USB и другими периферийными устройствами, такими как память, является последовательной? - person Dan; 27.11.2020
comment
@Dan Universal Serial Bus и Serial ATA (два общих интерфейса) являются «чисто» последовательными (не совсем чистыми, поскольку используется дифференциальная сигнализация, для которой требуется два «провода» на полосу) . Они часто присоединяются к микросхеме поддержки, которая подключается к микросхеме процессора через PCIe или аналогичный интерфейс. Доступ к памяти не является полностью параллельным, но и не последовательным. PCIe предпочитает узкую ширину (синхронизация широких интерфейсов сложнее) по сравнению с PCI/AGP. - person Paul A. Clayton; 28.11.2020
comment
извините, я хотел спросить data transfer between CPU and other peripherals like the memory is serial?. Итак, когда вы говорите «не полностью параллелен, но и не последователен», что это такое, как это называется? - person Dan; 29.11.2020
comment
@Dan Интерфейсы с каналами шириной в один бит считаются последовательными, все остальные считаются параллельными. Интерфейс к микросхеме процессора часто (в последнее время) представляет собой PCIe (позволяющий прямое подключение к устройствам PCIe) или аналогичный с отдельными микросхемами для преобразования интерфейсов ввода-вывода, отличных от PCIe; также распространена прямая поддержка USB и SATA на чипе процессора. Отдельный интерфейс, такой как HT) или QPI имеет то преимущество, что он также является межпроцессорным интерфейсом, а также интерфейсом набора микросхем. - person Paul A. Clayton; 01.12.2020