Кэш-память
Когда ваши программы используют кэш-память и микропроцессор получает к ней прямой доступ, она отличается от обычной памяти тем, что ваши программы не подозревают о ее существовании. Она функционально невидима. Цель кэш-памяти состоит в том. чтобы привести в соответствие сверхскоростной микропроцессор с менее быстрыми микросхемами оперативной памяти.
С тех пор. как появились микропроцессоры с тактовой частотой 16МГц, компьютеры стали выходить за рамки возможностей большинства микросхем памяти. Только самые быстрые, самые дорогие микросхемы оперативной памяти могут идти в ногу со стремительными временными показателями современных микропроцессоров Кэш - это буфер, который вставлен между быстрым микропроцессором и медленной памятью, чтобы помочь им взаимодействововать друг с другом. С помощью использования скромного блока (обычно от 8 до 64К) быстрой, но дорогой статической памяти в качестве кэша, создатели компьютеров могут сконструировать машины, используя гораздо более доступные, но менее быстрые динамические микросхемы памяти Некоторые микропроцессоры имеют даже свои собственные встроенные кэши. 486-й DX и 486-й SX - оба имеют 8К кэш-памяти, встроенной в их кремниевые хитросплетения
Только быстрые чипы статической оперативной памяти работают с такой скоростью. Доступные же динамические микросхемы требуют от 60 до 80 наносекунд между обращениями.
Кэш является мостом над пропастью этих несоответствий. Микропроцессор соединен только с быстрой памятью кэша. Специальное устройство кэш-контроллер - пытается предвидеть, какие именно байты будут нужны микропроцессору для его следующего обращения, и загружает их из основной памяти в кэш.
Кэш-контроллер, конечно, не ясновидящий. Он без колдовства, вполне обоснованно, угадывает, какие байты загрузить в кэш в соответствии с определенным алгоритмом. Например, простейший алгоритм предполагает лишь, что следующие необходимые байты будут в той же адресной области, что и предыдущие. Этот алгоритм просто заполняет кэш блоком памяти с какого-то данного адреса. Кзширующие алгоритмы должны также учитывать потребности OS/2, многозадачных и многопользовательских операционных систем. Такие кэши должны col держать байты для каждой задачи, чтобы каждая из них могла работать, когда на нее переключаются, а это происходит от 10 до 50 раз в секунду.
Когда кэш-контроллер неправильно "угадывает" еле] дующие необходимые микропроцессору байты, эти бай ты должны быть извлечены напрямую из основной памяти. Это замедляет систему до скорости основной памяти, так как процессор в этой ситуации вынужден, чаете переходить в состояние ожидания.
На самом деле в реальном компьютере архитектура кэша выглядит еще сложнее. Кроме процессора сущеетвуют еще другие устройства, такие как DMA (Direci Memory Acces - устройство прямого доступа к памяти, которые также постоянно изменяют содержимое основной памяти, и эти изменения должны быть согласованы с тем, что делает контроллер. Более того, когда байты записываются непосредственно в кэш, основная память должна быть немедленно приведена в соответствие.
С другой стороны, соответствующим образом сконструированный кэш может увеличить возможности "мыслительной" деятельности компьютера гораздо серьез! нее, чем позволяет скорость его микропроцессора! Компьютеры, базирующиеся на EISA и Micro Channel позволяют системному микропроцессору обрабатывать данные в кэш-памяти, тогда как остальные компоненты системы занимаются основной памятью, достигая предельного уровня параллельности обработки информации!
Принципиальным измерителем качества кэша является соотношение его правильных и неправильных показаний - количество байтов, угаданных правильно, ко всему количеству байтов, на самом деле использованных микропроцессором. Это отношение равно количеств ву времени, в течение которого процессор работал без перехода в состояние ожидания. В реальных кэшах количество, т.е. соотношение правильных и неправильных попаданий варьируется в зависимости от используемого кэш-контроллером алгоритма и от размеров самого кэша! Для большего кэша количество попаданий, естественно! будет выше, так как и вероятность для каждого данного байта оказаться в кэше будет выше. С увеличением размера кэша увеличивается вероятность того, что каждый байт, необходимый микропроцессору, будет найден, и в этой ситуации о извлечение из памяти не потребует никакого ожидания. (Если необходимый байт находится вне кэша, необходимость ожидания может, возникнут" для того, чтобы привести в соответствие скорость выполнения операций по доступу к памяти со скоростью самого микропроцессора.) Как правило, кэш размером е 32К имеет соотношение правильных и неправильных попаданий не менее 90%.