2015-12-27 2 views
-1

Итак, я знаком с циклом обмена для оптимизации чтения из-за способов выделения массивов в памяти.Кэш порядка петли для записи

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

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

Спасибо!

+0

В качестве подтверждения, вы говорите о дисковых кэшах или кешах в процессоре (например, кэш данных L2 или кэш команд)? Или вы говорите о кешах в целом? –

+0

@LightnessRacesinOrbit Это довольно неэффективно, чтобы читать целую книгу по теме, которую многие образованные люди могут быстро ответить ... – jonnyd42

+0

Говоря о процессоре! @ThomasMatthews – jonnyd42

ответ

0

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

Кэши могут также быть разными структурами. Например, кэш диска может быть Trie, используя сектор в качестве индекса. Процессор может иметь массив кеша, используя хэш адреса памяти в качестве индекса.

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

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

С жестким диском кеш служит в двух целях: 1) содержать часто используемые данные; и 2) Буферные данные от процессора, когда данные записываются на диск. В случае 2) процессор не должен ждать завершения транзакции; он выгружает данные, а затем продолжает выполнять другие операции, в то время как диск передает данные из своего кеша в планшеты.