Чи правильно сказати кеш - це особливий вид буфера? Вони обидва виконують подібні функції, але чи є якась основна різниця, яку я пропускаю?
Чи правильно сказати кеш - це особливий вид буфера? Вони обидва виконують подібні функції, але чи є якась основна різниця, яку я пропускаю?
Відповіді:
З статті Вікіпедії про буфери даних :
буфер - це область зберігання фізичної пам'яті, яка використовується для тимчасового зберігання даних під час переміщення з одного місця в інше
Через буфер закінчується на велосипеді через та проведення кожен фрагмент даних , який передається з одного місця зберігання в іншу (наприклад , при використанні циклічного буфера в обробці звуку). Буфер дозволяє саме це - "буфер" даних до і після вашого поточного положення в потоці даних.
Дійсно, є деякі загальні аспекти буфера та кешу. Однак кеш у звичайному розумінні зазвичай не зберігає всіх даних, коли він переміщується з місця на місце (тобто кеш процесора).
Призначення кешу полягає в тому, щоб зберігати дані прозорим способом, таким чином, щоб було достатньо кешованих даних, щоб решту даних можна було передати без будь-якого штрафу за продуктивність. У цьому контексті кеш лише "заздалегідь отримує" невелику кількість даних (залежно від швидкості передачі, розмірів кешу тощо).
Основна відмінність полягає в тому, що в результаті буфер зберігав усі дані. І навпаки, кеш може містити всі, деякі або будь-які дані (залежно від конструкції). Однак кеш доступний так, як якщо б ви безпосередньо зверталися до даних в першу чергу - те, що саме відбувається кешування, є прозорим для "користувача" кешу.
Різниця полягає в інтерфейсі . Коли ви використовуєте кеш для доступу до джерела даних, ви використовуєте його так, ніби кеш є джерелом даних - ви можете отримати доступ до кожної частини джерела даних через кеш, і кеш визначатиме, звідки беруться дані ( кеш-пам'ять, або джерело). Сам кеш визначає, які частини даних попередньо завантажувати (зазвичай це лише початок, але іноді всі), тоді як використовуваний алгоритм заміни кешу визначає, що / коли вилучати речі з кешу. Найкращим прикладом цього є система, окрім самого кешу процесора , - prefetcher / readahead. Обидва завантажують частини даних, які, на їх думку, ви будете використовувати найбільше в пам’яті, і повертаєтеся на жорсткий диск, якщо щось не є кешованим.
І навпаки, буфер не може бути використаний для миттєвого переміщення вашого місцезнаходження в потоці даних, якщо нова частина вже не була переміщена в буфер. Для цього потрібно буде перемістити буфер (з огляду на те, що нове місце перевищує довжину буфера), фактично вимагаючи від вас "перезапустити" буфер з нового місця розташування. Найкращий приклад цього - переміщення повзунка у відеоролику Youtube.
Ще одним хорошим прикладом буфера є відтворення аудіозапису в Winamp. Оскільки аудіофайли потрібно розшифрувати процесором, проходить деякий час між тим, як читати пісню, до того, як аудіо обробляється, і коли він надсилається на вашу звукову карту. Winamp буде буферувати частину аудіоданих, щоб було достатньо оброблених аудіоданих, щоб уникнути будь-яких «блокувань» (тобто ЦП завжди готує аудіо, яке ви почуєте за кілька сотень мілісекунд, це ніколи в реальному часі ; те, що ви чуєте, походить з буфера, який саме підготував процесор раніше).
Точніше було б сказати, що кеш - це певна схема використання буфера, яка передбачає багаторазове використання одних і тих же даних. Більшість застосувань "буфера" означають, що дані будуть вилучені або відкинуті після одноразового використання (хоча це не обов'язково так), тоді як "кеш" означає, що дані будуть повторно використані. Кешування також часто означає, що дані зберігаються, оскільки вони також одночасно використовуються, хоча це не обов'язково так (як у попередньому доборі тощо), тоді як буферизація означає, що дані зберігаються для подальшого використання.
Однак, безумовно, є велике перекриття як в реалізації, так і використанні.
Важлива відмінність кешу від буфера:
Буфер - частина первинної пам'яті. Вони є структурами, присутніми та доступними з первинної пам'яті (ОЗП).
З іншого боку, кеш - це окрема фізична пам'ять в ієрархії пам'яті комп'ютера.
Буфер також іноді називають - буфер кеша. Ця назва наголошує на тому, що використання буфера схоже на використання кешу, тобто для зберігання даних. при цьому різниця полягає в контексті його використання.
Буфери використовуються для тимчасового зберігання даних, тоді як дані переміщуються з одного об'єкта на інший. Приклад: при переміщенні відео з Інтернету на наш ПК буфери дисплея використовуються для зберігання кадрів відео, які відображатимуться далі. . Щойно записані дані не копіюються миттєво у вторинну пам'ять. Внесені зміни зберігаються в буфері, після чого відповідно до розробленої політики зміни відображаються назад у файлі у вторинній пам'яті (жорсткому диску).
Кеші, з іншого боку, використовуються між первинною пам'яттю та процесорами, щоб подолати розрив між швидкістю оперативної пам'яті та процесором. Також дані, які найчастіше звертаються, зберігаються в кеші, щоб зменшити доступ до оперативної пам'яті.
Спільне: обидва є посередницькими компонентами зберігання даних (програмне чи апаратне забезпечення) між обчисленнями та "основним" сховищем.
Для мене різниця полягає в наступному:
Буфер:
Кеш: