Как правило, кэши представляют собой последовательные местоположения в памяти для временных значений удержания при выполнении других операций. Вы можете рассматривать их как одномерный массив.
Кэши могут также быть разными структурами. Например, кэш диска может быть Trie, используя сектор в качестве индекса. Процессор может иметь массив кеша, используя хэш адреса памяти в качестве индекса.
В общем, чтение из кеша имеет одинаковую производительность, будь то инкрементный, декрементальный или произвольный доступ, до тех пор, пока обращаются к той же строке кеша. Некоторые процессоры могут иметь указатели на кеширование значений, которые увеличиваются после чтения или уменьшения.
Оптимизационный трюк для кэшей заключается в том, чтобы ваши часто доступные данные входили в строку кеша. Например, если у вас есть 2-мерный массив, каждая строка должна быть строкой кэша. Любой доступ в строке (например, столбец внутри строки) является оптимальным. Тем не менее, повторение по строкам, сохраняя колонку одинаково, не является оптимальным, потому что процессор должен загружать (или искать) другую строку и помещать ее в свой кеш.
С жестким диском кеш служит в двух целях: 1) содержать часто используемые данные; и 2) Буферные данные от процессора, когда данные записываются на диск. В случае 2) процессор не должен ждать завершения транзакции; он выгружает данные, а затем продолжает выполнять другие операции, в то время как диск передает данные из своего кеша в планшеты.
В качестве подтверждения, вы говорите о дисковых кэшах или кешах в процессоре (например, кэш данных L2 или кэш команд)? Или вы говорите о кешах в целом? –
@LightnessRacesinOrbit Это довольно неэффективно, чтобы читать целую книгу по теме, которую многие образованные люди могут быстро ответить ... – jonnyd42
Говоря о процессоре! @ThomasMatthews – jonnyd42