2016-01-19 2 views
-1

Если система имеет иерархию двухуровневой памяти, вам нужно записать глобальную переменную в основную память в конце программы, если она находится в кэшеподобной памяти для ее жизненного цикла в программа?Запись глобальных переменных

+2

Нет. Пожалуйста, ознакомьтесь с основными материалами о [CPU cache] (https://en.wikipedia.org/wiki/CPU_cache) и [виртуальном адресном пространстве] (https://en.wikipedia.org/wiki/Virtual_address_space) ; и ваш вопрос не в тему. –

+1

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

+0

Мне известно механизм кэширования/виртуального адреса. Мой вопрос скорее о правильности, если я хочу создать систему с программным кешем и решил выделить глобальный объект в этом кеше, не означает ли это, что этот объект будет записан обратно или нет в конце программы , –

ответ

2

На «обычных» машинах нет, кеши прозрачны. Они просто ускорят доступ к памяти без видимого изменения способа доступа к памяти, все средства выключения/синхронизации/записи кеша обрабатываются в автономном режиме.

+0

Спасибо за ответ. Я знаю, что кеш должен быть прозрачным. Мой вопрос заключается в том, есть ли способ, которым память в виде кеша знает, что живучесть объекта, которая находится в нем, заканчивается в какой-то момент, правильно ли она с точки зрения программы, чтобы не записывать ее, или бывают случаи, когда это не подать заявление? –