Возможен ли доступ к кешу ЦП (чтение и запись) через C #?

Я хочу знать, есть ли в C # реализованные вещи, которые позволяют получить доступ к кешу процессора. Мне это просто интересно, но в данный момент я не имею отношения к кешу процессора. Поэтому мне было интересно, является ли это системным ограниченным доступом или он также доступен для пользователей. Я говорю о L1 / L2 или как они там называются!

Было бы приятно услышать ваши комментарии, внешние ссылки и, возможно, некоторые фрагменты кода! Спасибо.


person Saeid Yazdani    schedule 27.05.2011    source источник
comment
Невозможно написать настоящий код C #, который не обращается к кешу процессора. Все операции чтения и записи в память проходят через кеш. В этом вопросе мало смысла.   -  person Hans Passant    schedule 27.05.2011
comment
@Hans Хорошо, я знаю, хотите вы этого или нет, кеш будет заполнен какими-то 0 и 1, но вопрос был в том, можем ли мы иметь какой-либо контроль над тем, что там происходит в кеше.   -  person Saeid Yazdani    schedule 27.05.2011
comment
Ответьте на этот вопрос, объяснив, почему, по вашему мнению, вам нужно управлять кешем.   -  person Hans Passant    schedule 27.05.2011
comment
@Hans Ну, мне просто интересно, существует ли вообще такая вещь. Тогда вы правы, мне следовало задать вопрос по-другому.   -  person Saeid Yazdani    schedule 27.05.2011
comment
@HansPassant может быть для dl.acm.org/citation.cfm?id=2046670   -  person Offler    schedule 14.03.2014
comment
@HansPassant Может быть, кто-то предприимчивый захочет создать ОС и BIOS, которые запускаются из кеша процессора, а не из оперативной памяти, гений.   -  person    schedule 03.08.2014


Ответы (3)


Ни один язык программирования не имеет прямого доступа к кеш-памяти ЦП. Чтение и запись кеша выполняется оборудованием автоматически; нет способа написать инструкции, которые рассматривают кеш как какую-либо отдельную сущность. Чтение и запись в кэш являются побочным эффектом для всех инструкций, касающихся памяти.

person Ernest Friedman-Hill    schedule 27.05.2011

C # слишком высок для такого рода деятельности. Если только вы не вызываете какую-то другую библиотеку, написанную на C / ASM =) Конечно, работа с кешем в целом - довольно непонятная тема, и по большей части она полностью контролируется аппаратно. С другой стороны, есть несколько довольно интересных вопросов / обсуждений по SO, с которыми вы, возможно, уже сталкивались.

Программирование с учетом кеширования C ++
Как выполнить очистку кэша процессора в x86 Windows?

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

person A.R.    schedule 27.05.2011
comment
Хорошая точка AR, но это становится сложнее, когда у вас есть несколько ядер, общие кеши L2 и так далее. - person Robinson; 27.05.2011
comment
Не поймите меня неправильно, это не то, что я бы попробовал с десятифутовым шестом. Я могу придумать более увлекательные способы избавиться от головной боли = D - person A.R.; 27.05.2011

person    schedule
comment
Хотя это может дать ответ на вопрос, лучше объяснить основные части ответа. - person pirho; 04.12.2017