Общие концепции работы кэша жесткого диска
Самый простой принцип работы кэша — это хранение данных не только запрошенного сектора, но и нескольких секторов после него. Как правило, чтение с жесткого диска происходит не блоками по 512 байт, а блоками по 4096 байт (кластер, хотя размер кластера может и варьироваться). Кэш разбит на сегменты, каждый из которых может хранить один блок данных. Когда происходит запрос к жесткому диску, контроллер накопителя в первую очередь проверяет, находятся ли запрашиваемые данные в кэше, и, если это так, то мгновенно выдает их компьютеру, не производя физический доступ к поверхности. В случае если данных в кэше не было, они сначала считываются и попадают в кэш, и только после этого передаются в компьютер. Т.к. размер кэша ограничен, происходит постоянное обновление кусочков кэша. Типично, что самый старый кусок заменяется новым. Это называется цикличным буфером, или круговым кэшем. Для повышения быстродействия накопителя производители придумали несколько методов повышения скорости работы за счет кэша: Адаптивная сегментация. Обычно кэш разделен на сегменты одинакового размера. Так как запросы могут иметь разный размер, это приводит к излишнему расходованию блоков кэша, т.к. один запрос будет разделяться на сегменты фиксированной длины. Многие современный накопители динамически меняют размер сегмента, определяя размер запроса и подстраивая размер сегмента под конкретный запрос, таким образом, повышая эффективность и увеличивая или уменьшая размер сегмента. Также может меняться количество сегментов. Данная задача более сложная, чем операции с сегментами фиксированной длины, и может приводить к фрагментированности данных внутри кэша, увеличивая нагрузку на микропроцессор жесткого диска. Превыборка. Микропроцессор жесткого диска на основе анализа запрашиваемых данных в настоящий момент и запросов в предыдущие моменты времени, загружает в кэш данные, которые еще не были запрошены, но имеют к этому большой процент вероятности. Самый простой случай превыборки — это загрузка в кэш дополнительных данных, которые лежат немного дальше, чем запрашиваемые сейчас данные, т.к. статистически они имеют большую вероятность быть запрошенными позднее. Если алгоритм превыборки реализован в микропрограмме накопителя корректно, то это увеличит скорость его работы в различных файловых системах и с различными типами данных. Контролирование пользователем. Высокотехнологичные жесткие диски имеют набор команд, которые позволяют пользователю точно контролировать все операции с кэшем. Эти команды включают в себя следующие: разрешение и запрещение работы кэша, управление размером сегментов, включение и выключение адаптивной сегментации и превыборки и т.п. Не смотря на то, что кэш увеличивает скорость работы накопителя в системе, он также имеет и свои минусы. Для начала, кэш нисколько не ускоряет работу накопителя при случайных запросах информации, расположенной в разных концах пластины, поскольку при таких запросах нет смысла в превыборке. Также, кэш нисколько не помогает при чтении больших объемов данных, т.к. он обычно достаточно маленький, например при копировании 10 мегабайтного файла, при обычном в наше время буфере объемом 2 мегабайта, в кэш влезет только чуть меньше 20% копируемого файла. Вследствие этих и других особенностей работы кэша, он не так сильно ускоряет работу накопителя, как хотелось бы. То, какой выигрыш в скорости он дает, зависит не только от размера буфера, но и от алгоритма работы с кэшем микропроцессора, а также от типа файлов, с которыми ведется работа в данный момент. И, как правило, очень тяжело выяснить, какие алгоритмы работы кэша применяются в данном конкретном накопителе. На рисунке представлена микросхема кэша накопителя Seagate Barracuda, она имеет емкость 4 мегабита или 512 килобайт.
|