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

#cpu #cpu-cache

#процессор #cpu-cache

Вопрос:

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

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

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

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

Ответ №1:

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

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

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

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

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

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

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

Комментарии:

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

2. @Dan Универсальная последовательная шина и Serial ATA (два общих интерфейса) являются «чисто» последовательными (не совсем чистыми, поскольку используется дифференциальная сигнализация, для которой требуется два «провода» на полосу). Они часто подключаются к вспомогательному чипу, который подключается к процессорному чипу с помощью PCIe или аналогичного интерфейса. Доступ к памяти не полностью параллельный, но и не последовательный. PCIe предпочитает узкую ширину (синхронизация широких интерфейсов сложнее) по сравнению с PCI / AGP.

3. извините, я хотел спросить data transfer between CPU and other peripherals like the memory is serial? . Итак, когда вы говорите «не полностью параллелен, но и не последовательный». что это такое, как оно называется?

4. Интерфейсы @Dan с каналами шириной в один бит считаются последовательными, все остальные считаются параллельными. Интерфейс к процессорному чипу часто (в последнее время) PCIe (позволяющий прямое подключение к устройствам PCIe) или аналогичный с различными чипами для преобразования интерфейсов ввода-вывода, отличных от PCIe; также распространена прямая поддержка USB и SATA на процессорном чипе. Отдельный интерфейс, такой как HT ) или QPI , имеет то преимущество, что он также является межпроцессорным интерфейсом, а также интерфейсом набора микросхем.