Кэш-память 2 5 9
Среди известных в настоящее время систем с кэш-памятью наиболее встречае­мым является алгоритм LRU.            ^
Алгоритмы согласования содержимого кэш-памяти и основной памяти
В процессе вычислений ЦП может не только считывать имеющуюся информацию, но и записывать новую, обновляя тем самым содержимое кэш-памяти. С другой стороны, многие устройства ввода/вывода умеют напрямую обмениваться инфор­мацией с основной памятью. В обоих вариантах возникает ситуация, когда содер­жимое строки кэша и соответствующего блока ОП перестает совпадать. В резуль­тате на связанное с основной памятью устройство вывода может быть выдана «устаревшая» информация, поскольку все изменения в ней, сделанные процессо­ром, фиксируются только в кэш-памяти, а процессор будет использовать старое содержимое кэш-памяти вместо новых данных, загруженных в ОП из устройства ввода.
Для разрешения первой из рассмотренных ситуаций (когда процессор выпол­няет операцию записи) в системах с кэш-памятью предусмотрены методы обнов­ления основной памяти, которые можно разбить на две большие группы: метод сквозной записи (write through) и метод обратной записи (write back).
По методу сквозной записи прежде всего обновляется слово, хранящееся в ос­новной памяти. Если в кэш-памяти существует копия этого слова, то она также обновляется. Если же в кэш-памяти отсутствует нужная копия, то либо из основ­ной памяти в кэш-память пересылается блок, содержащий обновленное слово (сквозная запись с отображением); либо этого не делается (сквозная запись без отображения).
:Главное достоинство метода сквозной.записи состоит в том, что когда строка в кэш-памяти назначается для хранения другрго блока, то удаляемый блок можно ' не возвращать в основную память, поскольку его копия там уже имеется. Метод достаточно прост в реализации. К сожалению, эффект от использования кэш-па­мяти (сокращение времени доступа) в отношении к операциям записи здесь от­сутствует. Данный метод применен в микропроцессорах i486 фирмы Intel.
Определенный выигрыш дает егр модификация, известная как метод буфери -зированной сквозной запцси. Информация сначала записывается в кэш-память и в специальный буфер, работающий по схеме FIFO. Запись в основную память про­изводится уже из буфера, а процессор, не дожидаясь ее окончания, может сразу же продолжать свою работу. Конечно, соответствующая логика управления должна заботиться о том, чтобы своевременно «опустошать» заполненный буфер. При ис­пользовании буферизации процессор полностью освобождается от работы с ОП.
Согласно методу обратной записи, слово заносится только в кэш-память. Если соответствующей строки в кэш-памяти нет, то нужный блок сначала пересылается из ОП, после чего запись все равно выполняется исключительно в кэш-память. При замещении строки ее необходимо предварительно переслать в соответствую­щее место основной памяти. Для метода обратной записи, в отличие от алгоритма сквозной записи, характерно то, что при каждом чтении из основной памяти осу­ществляются две пересылки между основной и кэш-памятью.
260 Глава 5. Память
У рассматриваемого метода есть разновидность — метод флаговой обратной записи. Когда в какой-то строке кэша производится изменение, устанавливается связанный с этой строкой бит изменения (флажок). При замещении строка из кэш­памяти переписывается в ОП только тогда, когда ее флажок установлен в 1. Ясно, что эффективность флаговой обратной записи несколько выше. Такой метод ис­пользуется в микропроцессорах класса i486 и Pentium фирмы Cyrix.
В среднем обратная запись на 10% эффективнее сквозной записи, но для ее реа­лизации требуются и повышенные аппаратные затраты. С другой стороны, прак­тика показывает, что операции записи составляют небольшую долю от общего ко­личества обращений к памяти. Так, в [194] приводится число 16%. Другие авторы оценивают долю операций записи величинами в диапазоне от 5 до 34%. Таким обра­зом, различие по быстродействию между рассмотренными методами невелико.
Теперь рассмотрим ситуацию, когда в основную память из устройства ввода, минуя процессор, заносится новая информация и неверной становится копия, хра­нящаяся в кэш-памяти. Предотвратить подобную несогласованность позволя­ют два приема. В первом случае система строится так, чтобы ввод любой информа­ции в ОП автоматически сопровождался соответствующими изменениями в кэш-памяти. Для второго подхода «прямой» доступ к основной памяти допускает­ся только через кэш-память.
Смешанная и разделенная кэш-память
Когда в микропроцессорах впервые стали применять внутреннюю кэш-память, ее обычно использовали как для команд, так и для данных; Такую кэш-память При­нято называть смешанной, а соответствующую архитектуру — Принстонской (Prin- ' ceton architecture), по названию университета, где разрабатывались ВМ с единой памятью для команд и данных, то есть соответствующие классической архитекту­ре фон-Неймана. Сравнительно недавно стало обычным разделять кэш-память на две — отдельно для команд и отдельно для данных. Подобная архитектура полу­чила название Гарвардской (Harvard architecture), поскольку именно в Гарвард­ском университете был создан компьютер «Марк-1» (1950 год), имевший раздель­ные ЗУ для команд и данных.
Смешанная кэш-память обладает тем преимуществом, что при заданной емкости ей свойственна более высокая вероятность попаданий по сравнению с разделен­ной, поскольку в ней оптимальный баланс между командами и данными устанав­ливается автоматически. Так, если в выполняемом фрагменте программы обраще­ния к памяти связаны в основном с выборкой команд, а доля обращений к данным относительно мала, кэш-память имеет тенденцию насыщаться командами, и на­оборот.
С другой стороны, при раздельной кэш-памяти выборка команд и данных мо­жет производиться одновременно, при этом исключаются возможные конфликты. Последнее обстоятельство существенно в системах, использующих конвейериза­цию команд, где процессор извлекает команды с опережением и заполняет ими буфер или конвейер.
В табл. 5.7 приведены основные параметры внутренней кэш-памяти для наибо­лее распространенных типов микропроцессоров.
Hosted by uCoz