Существует два основных класса кеша: кеш чтения и кеш записи. Кэш чтения — это инструмент, обеспечивающий быстрый доступ к данным, доступ к которым в противном случае был бы медленным. Кэш записи — это инструмент, который создает иллюзию высокой скорости записи, обычно скрывая от пользователя истинную медленную скорость устройства памяти.
Структура кэша
Обычно кеш хранится на один уровень памяти ниже, чем фактические данные. Однако данные из одного кэша могут быть дополнительно кэшированы на следующем уровне памяти. Существует четыре уровня памяти, причем кэш/регистры ЦП являются самым низким и самым быстрым уровнем, а архивное хранилище — самым высоким и самым медленным уровнем. От самого низкого до самого высокого уровня находятся кэш/регистры ЦП, системная оперативная память, накопители и архивное хранилище.
Каждый шаг вниз по уровням памяти обеспечивает увеличение скорости доступа, но уменьшение емкости. У большинства домашних пользователей в реальном мире есть только три нижних уровня хранения. Архивное хранилище обычно относится к ленточному хранилищу, предназначенному для долгосрочного и автономного хранения. Архивное хранение также может относиться к использованию оптических или других стандартных носителей, которые были удалены с устройств и хранятся в автономном режиме. Эти примеры значительно чаще встречаются дома, но все же не так распространены.
Примечание: В какой-то степени облачное хранилище можно рассматривать как вариант архивного хранилища. Он в значительной степени находится в сети, но не обязательно доступен сразу и, как правило, медленно. Съемные носители, такие как USB-память, также несколько пересекают границу между накопителем и архивным хранилищем.
Типы дискового кэша
Дисковый кеш относится к любому кешу на «диске», то есть на накопителях, таких как SSD и HDD. Существует три типа дискового кэша. Кэш чтения будет включать временное копирование некоторых данных из архивного хранилища, чтобы ускорить доступ, когда это необходимо. Кэш записи может иметь форму кеша SLC на SSD. Кэш ввода-вывода обычно представляет собой некоторую флэш-память или DRAM, используемую для кэширования операций чтения и записи. Определяющей чертой всего этого является то, что кеш находится на самом диске.
Чтение дискового кэша
Версия дискового кэша с кэшем чтения, вероятно, является наименее используемым типом дискового кэша. Архивное хранилище по своему определению редко требуется. Данные также можно считывать непосредственно с архивных носителей. Проблема в скорости. Время доступа медленное, поскольку данные находятся в автономном режиме, что требует определения и подключения подходящего устройства хранения. Скорость чтения зависит от архивного носителя, но обычно ее достаточно для большинства случаев. Но может быть не идеальным для высоких требований к пропускной способности, таких как просмотр видео высокой четкости. В этих сценариях кэш чтения диска может использоваться для кэширования копии видеофайла на носителе, который может воспроизводить его в режиме реального времени.
Запись дискового кэша
Современные твердотельные накопители невероятно быстры, предлагая невероятно высокую скорость чтения и записи. Чего вы можете не осознавать, так это того, что технически это неверно. Большинство твердотельных накопителей на рынке представляют собой TLC, также известные как трехслойные ячейки. Это означает, что каждая ячейка памяти может хранить три бита данных. Хотя это предлагает в три раза большую плотность хранения по сравнению с необработанными SLC (однослойными ячейками) с одним битом на ячейку, это также намного медленнее.
Кончик: Вспышка TLC по-прежнему быстрая. Это во много раз быстрее, чем пиковая пропускная способность шины SATA 3, используемой жесткими дисками и ранними твердотельными накопителями. Флэш-память QLC или ячейки Quad Level Cell еще медленнее, а в некоторых тестах даже медленнее, чем жесткие диски.
Кэш SLC был придуман, чтобы скрыть от пользователя низкую скорость записи. Кэш SLC просто обрабатывает флэш-память TLC как флэш-память SLC, что позволяет ей работать на повышенных скоростях. Данные, записанные в кэш SLC, затем внутренне копируются в формат TLC настолько быстро, насколько позволяет скорость записи. Этот метод отлично работает, предлагая увеличение скорости, что потребовало разработки новых, более быстрых стандартов.
Однако у кэшей SLC есть некоторые оговорки. Размер кэша SLC составляет 1/3 оставшегося свободного места на SSD. По мере заполнения SSD размер кэша SLC уменьшается. Это не такая большая проблема на больших пустых дисках, но может быть на твердотельных накопителях меньшего размера или почти емкости. Как только кэш SLC заполнен, пользователь видит, что скорость записи резко падает, поскольку он подвергается воздействию подлинной скорости записи TLC.
Примечание: Технически, если в будущем данные будут записываться на архивный носитель, любой диск для хранения можно рассматривать как кэш записи для архивного носителя. Однако это значение обычно не предполагается.
Дисковый кэш ввода/вывода
Жесткие диски, как правило, довольно медленные, даже при оптимальных рабочих нагрузках. Чтобы максимально скрыть это от пользователя, можно использовать кэш ввода-вывода. Кэш ввода-вывода кэширует операции чтения и записи по мере необходимости. Этот кэш обычно состоит либо из флэш-памяти, либо из DRAM в самом диске. Емкость, как правило, невелика, хотя класс SSHD или твердотельных гибридных дисков с флэш-памятью предлагает более значительные возможности, хотя и не сравнимые с емкостью современных твердотельных накопителей.
Кэширование чтения означает, что жесткому диску не нужно искать, а затем считывать данные. Это может обеспечить отличные преимущества в производительности, но только при последующих операциях чтения. Первое чтение всегда медленное. Кэширование записи означает, что небольшие операции записи могут быть поглощены кэшем, а затем записаны на фактический жесткий диск с максимально возможной скоростью. Это обеспечивает более высокую скорость, но приводит к значительному падению производительности, если кеш-память когда-либо исчерпана.
Кэш ввода-вывода должен тщательно сбалансировать потребности как чтения, так и записи, особенно когда доступен только небольшой кэш. Большие кэши несколько сводят на нет эту проблему, хотя крайние случаи с большими наборами данных могут по-прежнему перегружать кэш флэш-памяти самых больших SSHD.
Примечание: Технически твердотельные накопители также могут использовать встроенную динамическую память в качестве кэш-памяти ввода-вывода. Однако обычно это используется в основном или исключительно для хранения таблицы преобразования логических адресов в физические, используемой для поиска данных на SSD.
Заключение
Дисковый кеш — это кеш, который существует непосредственно на накопителе. Он может принимать форму кэша чтения или записи или кэша ввода-вывода. Кэши чтения обычно кэшируют данные из более медленного архивного хранилища. Кэши записи скрывают от пользователя низкую скорость записи дисков хранения. Кэши ввода-вывода скрывают от пользователя как медленные скорости чтения, так и медленные скорости записи.
Кэши — отличный инструмент для удобства использования, но они могут вызвать головную боль у пользователей, когда они истощаются. Это особенно верно для кэшей динамической записи, таких как кэш SLC. Поскольку нетехнические пользователи могут не понимать, почему их скорость записи такая низкая, и, следовательно, не могут исправить это, решив проблемы с емкостью.