Кеш у вінчестері

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Буфер (кеш) жорсткого диска - це певна область, де відбувається тимчасове зберігання результатів останнього читання з диска, а також превиборка інформації, на яку може бути запит дещо пізніше.
Логіка роботи більшості вінчестерів зводиться до запису в буфер обміну не шматочка необхідної інформації, а цілком всієї доріжки або декількох доріжок відразу. І вже з буфера обміну дістається необхідна частина інформації і відправляється за призначенням.
Чим більше кеш пам'яті в жорсткому диску, тим більше система зможе помістити в тимчасове сховище найбільш важливої ​​інформації, тим самим, прискорюючи зчитування / відтворення в 10-1000 разів звернення до якої було вироблено повторно. Прийнято розрізняти вінчестери з кеш пам'яттю в діапазоні від 8 і до 32 мегабайт. Найбільш модернізовані SCSI диски мають кеш, що досягає обсягу в 16 мегабайт.
Головна причина такої важливості кешу вінчестера - це велика різниця між швидкістю роботи самого жорсткого диска і швидкістю роботи інтерфейсу жорсткого диска. При пошуку потрібного нам сектора проходять цілі мілісекунди, тому що витрачається час на пересування голівки, очікування потрібного сектора. У сучасних персональних комп'ютерах навіть одна мілісекунда це дуже багато. На типовому IDE/ATA накопичувачі час передачі 16-кілобайтного блоку даних з кеша в комп'ютер приблизно в сотні разів швидше, ніж час знаходження та зчитування його з поверхні. Ось тому всі жорсткі диски мають внутрішній кеш.

Інша ситуація, це запис даних на диск. Припустимо, що нам треба записати все той же 16-кілобайтний блок даних. Вінчестер миттєво перекидає цей блок даних у внутрішній кеш, і рапортує системі, що він знову вільний для запитів, паралельно з цим записуючи дані на поверхню магнітних дисків. У разі послідовного читання секторів з поверхні, кеш вже не відіграє великої ролі, тому що швидкості послідовного читання і швидкість інтерфейсу в даному випадку приблизно однакові.

Рівні кеша вінчестера

Memory-cache.jpg

Більшість жорстких дисків використовують один рівень кеш-пам'яті. Але кеш має два рівні, де рівень L1 менше і швидше, а рівень L2, трохи повільніше (але все одно швидше, ніж основна внутрішня пам'ять).
На прикладі бібліотеки розглянемо принцип роботи зовнішня пам'ять комп'ютера.
Розглянемо ящик бібліотекаря в якості кеша L1. Коли попит на книги високий, і в ящику вже досить багато книг (нема місця складати) і ймовірність того, що там знайдеться потрібна, знижується.
Тут і з'являється необхідність L2. Уявімо L2 як книжкову шафу біля столу бібліотекаря. Коли маленький ящик столу заповнений, бібліотекар починає ставити книги в цю шафу. І тепер, якщо книга не знайдена в ящику відразу, треба взяти її з шафи, не відходячи далеко.
Аналогічним чином, коли кеш L1 заповнений, дані зберігаються в L2. В першу чергу йдезвернення до L1, якщо вони не будуть знайдені, то далы виконуэться запит до L2. Якщо там теж дані не знайдені в L2, то йде звернення до основної пам'яті.

Принцип дії

Кеш — це швидка буферна пам'ять невеликої місткості, що розташована поміж процесором і основною пам'яттю. Кеш працює на повній швидкості процесора і не пригальмовує його роботу. Кеш (cache в перекладі з англ. — тайник) лишається прозорим для програміста, тому що система інструкцій процесора, як правило, не містить команд роботи з кешем. При поясненні роботи кеша можна прийняти, що процесор також не «бачить» кеш і генерує адреси пам'яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копії інформаційних кодів, які тимчасово зберігає у власній робочій пам'яті. Якщо кеш спроможний підмінити собою пам'ять (у понад 96-98 відсотків випадків), тоді він за рахунок власних ресурсів задовольняє запит процесора. Процесор не пригальмовується і залишається працювати на повній швидкості. Коли «підміна» пам'яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш залучає до роботи пам'ять, обмін з якою суттєво пригальмовує процесор.

Усі завдання, пов'язані з перехопленням запитів від процесора на роботу із пам'яттю, вирішує частина апаратури кешу під назвою контролер кешу. Друга частина апаратури кешу містить невелику робочу пам'ять, де зберігають вміст копій комірок головної пам'яті, що брали участь в обслуговуванні останніх, тобто «найсвіжіших» запитів процесора. Важливо, що вміст комірок головної пам'яті копіюється до пам'яті кешу разом зі своїми адресами. Саме ці копійовані адреси і дозволяють контролеру кешу приймати рішення про спроможність буферної пам'яті задовольнити конкретний процесорний запит без залучення до обміну повільної головної пам'яті.

Переваги кеша полягають в тому, що обробка даних не займає багато часу, тоді коли під час фізичного звернення до певного сектору, має пройти час поки головка диска знайде потрібну ділянку інформації і почне читання. Крім того, жорсткі диски з великим об'ємом кеша можуть значно розвантажувати процесор комп'ютера, адже для запиту інформації з кешу не потрібно фізичного звернення. Відповідно і робота процесора тут мінімальна.