2015-09-02 2 views
2

Моя среда - это x86, Linux и пространство ядра.Очистка кэша процессора без инсталляции кэша?

Я хотел бы узнать, есть ли какие-либо способы сбросить кеш для области памяти БЕЗ недействительности кеша?

Я просмотрел clflush_cache_range(), но этот метод использует инструкцию clflushopt, которая, как я считаю, приведет к недействительности кеша.

+0

Что вы пытаетесь сделать? Обычно кеш достаточно умен, чтобы управлять собой. – SnakeDoc

ответ

2

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

В x86 для таких случаев вы должны проверить CLWB (кэш-строку WB) и PCOMMIT. Оба были опубликованы совсем недавно, поэтому они, вероятно, еще не поддерживаются в большинстве существующих продуктов (я видел некоторые возможные ссылки на Skylake, но ничего формального). Вот хорошее резюме, включая некоторый анализ производительности - http://danluu.com/clwb-pcommit/

CLWB:

CLWB действует как CLFLUSH, в том, что она заставляет данные, чтобы выписали память. Однако он не заставляет кеш отбрасывать данные, , что делает чтение и запись в будущем быстрее. Кроме того, CLFLUSH - это , заказанный только в отношении MFENCE, но CLWB также заказывается с в отношении SFENCE.

И PCOMMIT:

PCOMMIT применяется ко всем диапазонам памяти и гарантирует, что все в области памяти стремятся к постоянной памяти.

Эти 2 отличаются по типу памяти и хранения, с которыми они работают, и некоторым другим тонкостям, например, как они заказываются в отношении фехтования или других магазинов. Полное описание содержится в руководствах.

+0

Разве PCOMMIT не предназначен для сопоставления памяти и подобных? – MSalters

+0

@MSalters, да, это для постоянного хранения. Я добавил его на случай, если это может быть интересно для него, но clwb кажется более уместным здесь – Leeor

Смежные вопросы