Говорят ли кеш как особый вид буфера правильно? Они оба выполняют схожие функции, но есть ли какое-то основное различие, которое мне не хватает?
Говорят ли кеш как особый вид буфера правильно? Они оба выполняют схожие функции, но есть ли какое-то основное различие, которое мне не хватает?
Ответы:
Из статьи Википедии о буферах данных :
буфер - это область физической памяти, используемая для временного хранения данных во время их перемещения из одного места в другое
Через буфер заканчивается на велосипеде через и проведение каждый фрагмент данных , который передается из одного места хранения в другую (например , при использовании циклического буфера в обработке звука). Буфер допускает только это - «буфер» данных до и после вашей текущей позиции в потоке данных.
Действительно, есть некоторые общие аспекты буфера и кеша. Однако в обычном смысле кеш обычно не хранит все данные, когда они перемещаются с места на место (то есть кеш процессора).
Цель кэша - хранить данные прозрачным образом, чтобы кэшировалось достаточно данных, чтобы оставшиеся данные могли быть переданы без потери производительности. В этом контексте кэш-память «предварительно извлекает» только небольшой объем данных (в зависимости от скорости передачи, размера кеша и т. Д.).
Основное отличие состоит в том, что буфер в конечном итоге будет содержать все данные. И наоборот, кеш может содержать все, некоторые или ни одного из данных (в зависимости от дизайна). Однако доступ к кешу осуществляется так, как если бы вы непосредственно обращались к данным - то, что именно кэшируется, прозрачно для «пользователя» кеша.
Разница в интерфейсе . Когда вы используете кэш для доступа к источнику данных, можно использовать его как если кэш является источником данных - вы можете получить доступ к любой части источника данных через кэш и кэш будет определить , где данные поступают из ( сам кеш или источник). Сам кеш определяет, какие части данных предварительно загружать (обычно только начало, но иногда все), в то время как используемый алгоритм замены кеша определяет, что / когда будут удалены из кеша. Лучший пример этого - система, помимо самого кеша процессора , - prefetcher / readahead, Оба загружают части данных, которые, по их мнению, вы будете использовать чаще всего, в память и возвращаются на жесткий диск, если что-то не кэшировано.
И наоборот, буфер не может быть использован для мгновенного перемещения вашего местоположения в потоке данных, если новая часть уже не была перемещена в буфер. Для этого потребуется переместить буфер (учитывая, что новое местоположение превышает длину буфера), что фактически потребует от вас «перезапустить» буфер из нового местоположения. Лучший пример этого - перемещение слайдера в видео на Youtube.
Другим хорошим примером буфера является воспроизведение звука в Winamp. Поскольку аудиофайлы должны декодироваться процессором, требуется некоторое время между считыванием песни, обработкой звука и его передачей на звуковую карту. Winamp буферизует некоторые аудиоданные, так что уже обработано достаточное количество аудиоданных, чтобы избежать каких-либо «зависаний» (т. Е. Процессор всегда готовит звук, который вы услышите за несколько сотен миллисекунд, он никогда не будет в реальном времени То, что вы слышите, исходит из буфера, который процессор готовил в прошлом.
Было бы точнее сказать, что кеш - это конкретная схема использования буфера, которая подразумевает многократное использование одних и тех же данных. В большинстве случаев использование «буфера» подразумевает, что данные будут удалены или отброшены после однократного использования (хотя это не обязательно так), в то время как «кэш» подразумевает, что данные будут многократно использоваться повторно. Кэширование также часто подразумевает, что данные хранятся, поскольку они также используются одновременно, хотя это не обязательно так (как при предварительной выборке и т. П.), Тогда как буферизация подразумевает, что данные сохраняются для последующего использования.
Однако, как в реализации, так и в использовании, существует большое совпадение.
Одно важное отличие между кешем и буфером:
Буфер является частью первичной памяти. Они представляют собой структуры, доступные и доступные из первичной памяти (ОЗУ).
С другой стороны, кеш - это отдельная физическая память в иерархии памяти компьютера.
Буфер также иногда называют - Буферный кеш. Это имя подчеркивает тот факт, что использование буфера аналогично использованию буфера, то есть для хранения данных. в то время как разница заключается в контексте его использования.
Буферы используются для временного хранения данных, когда данные перемещаются из одного объекта в другой. Пример: когда видео перемещается из Интернета на наш ПК, для отображения используются буферы для хранения кадров видео, которые будут отображаться далее. (ЭТО УВЕЛИЧИВАЕТ QoS, КАК ВИДЕО БУДЕТ ГЛУБИЛЬНО ПОСЛЕ ПОСЛЕ УСПЕШНОГО ПРОЦЕССА БУФЕРИНГА.) Пример: другой пример - сценарий, когда мы записываем данные в наши файлы. Вновь записанные данные не копируются во вторичную память мгновенно. Внесенные изменения сохраняются в буфере, а затем в соответствии с разработанной политикой изменения отражаются обратно в файл во вторичной памяти (на жестком диске).
Кэши, с другой стороны, используются между основной памятью и процессорами, чтобы сократить разрыв между скоростью выполнения ОЗУ и процессором. Также наиболее часто используемые данные хранятся в кэше, чтобы уменьшить доступ к оперативной памяти.
Обычное дело: оба являются промежуточными компонентами хранения данных (программными или аппаратными) между вычислениями и «основным» хранилищем.
Для меня разница заключается в следующем:
буфер:
кэш: