В этой статье речь пойдет отнюдь не о каких-либо гастрономических тонкостях, а о значениях английского слова "cache". В разговорной речи американцев оно несет весьма прозаический смысл - за океаном так называют наличные деньги. Да-да, те самые зеленые, которые весьма популярны и в нашем далеком от совершенства обществе. Если же говорить на компьютерную тему, то cache - это, в общем случае, некоторый объем памяти, используемый для ускорения обмена данными между двумя устройствами с сильно различающейся производительностью.
Общий принцип работы любой кэш-памяти основан на том, что в большинстве случаев требуется выполнять доступ к последовательно расположенным данным. При этом кэш-память служит промежуточным буфером между более медленным и более быстрым устройством как при чтении данных, так и при их записи. Чтение из более медленного устройства ускоряется за счет того, что в кэш-памяти всегда находится тот блок данных, из которого было последнее чтение, и поэтому при каждом следующем обращении к нему отсутствуют затраты времени на его повторное чтение из более медленного устройства. Помимо этого, в большинстве случаев кэш-память позаботится о заблаговременной подгрузке следующего блока, исходя из тех же соображений последовательности доступа к данным, тем самым сводя затраты времени к минимуму. Этот метод носит название опережающего чтения - Read-Ahead. При записи - аналогичная ситуация: если выполняется несколько операций записи в один и тот же блок, то этот измененный блок не сразу записывается в более медленное устройство, и даже после записи еще некоторое время находится в кэш-памяти. Этот метод называют отложенной записью - Write-Back. Если же кэш-память работает только на чтение, а записываемые данные отправляются сразу по назначению, то говорят о режиме сквозной записи - Write-Through. Теперь рассмотрим некоторые виды кэш-памяти и аспекты их применения.
Кэш оперативной памяти. До тех пор, пока производительность процессоров была не очень высока, они обходились без кэш-памяти. В ранних процессорах, включительно до 80286, с этой ролью справлялся так называемый внутренний конвейер команд процессора. Его задачей являлась постоянная подгрузка следующих команд из оперативной памяти в процессе выполнения программы. Длина его была невелика - всего несколько байт, от 6 до 16. По мере роста производительности процессоров возникла необходимость увеличить и скорость подгрузки команд. Вот тут и появилась первая кэш-память. Ее объем был поначалу невелик. На наиболее простых материнских платах класса 386/486 можно было установить 32, 64 или 128 килобайт кэш-памяти. Это значительно ускоряло работу даже в случае с 32Kb, поскольку процессор уже обращался за командами и данными не к оперативной памяти, имеющей быстродействие от 70 до 100ns, а к кэш-памяти, у которой эта характеристика лежала в пределах 15-25ns. Но и этого оказалось мало после появления процессоров 4-го поколения. Они во многом радикально отличаются от 386-х, в том числе и наличием кэш-памяти внутри процессора. Это - кэш-память первого уровня. Она ускоряет обмен данными между процессором и кэш-памятью второго уровня, унаследованной от 386-х. На первых процессорах класса 486 внутренняя кэш-память насчитывала всего 8Kb, по мере их развития ее объем увеличился до 32Kb. Следующим шагом в развитии и увеличении производительности стало изобретение процессора Pentium. Коренное отличие новорожденного процессора от его предшественника состояло в том, что он оснащен несколькими внутренними конвейерами, работающими одновременно. Это позволило еще больше повысить производительность за счет предсказания ветвлений выполняемой программы. А это значит, что каждый конвейер должен работать с кэш-памятью первого и второго уровня независимо от других. Вследствие этого потребовалось изменение структур внутренней и внешней кэш-памяти. Новая кэш-память второго уровня получила название Pipeline Burst Cache, и время доступа у нее уменьшилось до 8ns. Но и это не было последним словом. Когда дело дошло до создания Pentium Pro, внешняя кэш-память также была интегрирована в процессор.
Кэш жесткого диска. При обмене данными с жестким диском возникают те же проблемы скорости чтения и записи, и решаются они аналогично. В этом случае также имеет место два уровня кэширования. Первый уровень - аппаратный, его выполняет контроллер жесткого диска, используя для этого кэш-память, установленную на нем. Второй уровень реализуется на программном уровне, с помощью специальных утилит - программ кэширования диска. Принцип работы всех этих программ схож в том, что все они используют некоторый объем оперативной памяти (как правило, так называемой расширенной - Extended) в качестве кэш-памяти диска. Самая известная из этих программ и самая неприхотливая в использовании - SmartDrv.Exe, входящая в комплект MS DOS и MS Windows. Она ускоряет работу не только с гибкими и жесткими дисками, но и с магнитооптическими накопителями и с CD-ROM-драйвами. Большинство программ кэширования диска поддерживают все режимы: Read-Ahead, Write-Back, Write-Through. Третий режим хотя и медленнее, чем Write-Back, но, тем не менее, надежнее. А в общем случае эффективность использования программного кэширования диска зависит прежде всего от соотношения объема кэш-памяти и длины таблицы FAT кэшируемого диска. Если таблица FAT не помещается полностью в кэш-память, большого увеличения скорости обмена с жестким диском можно не ожидать, но в этом случае не стоит совсем отказываться от кэширования диска. Дело в том, что программное кэширование значительно продлевает срок жизни винчестера. Попробуйте интенсивно поработать с жестким диском без программного кэширования - и через некоторое время на нем появятся плохие блоки. Причем появятся они именно на тех местах, которые наиболее часто используются - на области FAT и часто используемых каталогах, что приведет к неизбежным потерям информации.
Кэш для HTML-страниц. Этот вид кэширования используется WEB-браузерами для ускорения доступа к тем страницам, которые уже были однажды приняты. Эти страницы хранятся на жестком диске в определенном каталоге в виде отдельных файлов. Если в процессе работы браузера объем полученных страниц превышает объем выделенного кэш-пространства на диске, то автоматически удаляются те страницы, которые не использовались дольше остальных.
Константин ФРАНЦЕВ
Горячие темы