Скачиваний:
406
Добавлен:
22.01.2014
Размер:
3.77 Mб
Скачать

23.3. Целостность данных в кэш-памяти

Кэш-память содержит отдельные копии информации, хранящейся в основной памяти системы. При появлении операций записи в буфер возможно изменение данных, хранящихся в кэше. Если при этом не принять мер по коррекции соответствующей информации в оперативной памяти, то может нарушиться целостность данных в оперативной памяти, т.е. содержимое буфера перестанет соответствовать содержимому оперативной памяти.

Существует несколько способов обновления информации в основной памяти, которые гарантируют, что при любых изменениях в кэше в оперативной памяти будут храниться новые текущие значения данных.

Метод Write Through, называемый также методом сквозной записи, предполагает наличие двух копий данных - одной в основной памяти, а другой – в кэш-памяти. Каждый цикл записи процессора в память идет через кэш. Это обуславливает, конечно, высокую загрузку системной шины, так как на каждую операцию модификации данных приходятся две операции записи. Поэтому каждое обновление содержимого кэш-памяти ощутимо сказывается на работе шины. С другой стороны, микропроцессор по-прежнему вынужден ожидать окончания записи в основную память. Такое техническое решение снижает производительность системы. Хотя следует отметить, что в основной памяти в этом случае всегда содержатся правильные данные.

Метод Buffered Write Through является разновидностью метода Write Through и называется также методом буферизированной сквозной записи. Для того чтобы как-то уменьшить загрузку шины, процесс записи выполняется в один или несколько буферов, которые работают по принципу FIFO (First Input-First Output - первым вошел - первым вышел). Таким образом, цикл записи для микропроцессора заканчивается практически мгновенно (т.е. когда данные записаны в буфер), хотя информация в основной памяти еще не сохранена. Сам же микропроцессор может выполнять дальнейшую обработку команд. Конечно, соответствующая логика управления должна заботиться о том, чтобы своевременно опустошать заполненные буферы. При использовании данного метода процессор полностью освобожден от работы с основной памятью.

Вместе с тем количество обращений к основной памяти можно сократить, если учесть, что записывать в нее копию блока целесообразно только в том случае, если его содержимое было изменено. Это соображение положено в основу метода Write Back, называемого также методом обратной записи, цикл записи микропроцессора происходит сначала в кэш-память, если там есть адрес приемника. Если адреса приемника в кэш-памяти не оказывается, то информация записывается непосредственно в память. Содержимое основной памяти обновляется только тогда, когда из кэш-памяти в нее записывается полный блок данных, называемый длиной строки-кэша (Cache-line). Прежде чем будет произведена замена содержимого строки кэша на новый блок памяти, старый блок должен быть перезаписан в основную память. Это связано с тем, что данные в этом блоке (если он использовался, разумеется) не совпадают с данными (старыми) этого блока в основной памяти и являются единственной действительной копией. В противном случае произойдет нарушение целостности данных.

Для предотвращения этого каждая строка кэша содержит пару служебных битов (modify and dirty bits). Если происходит операция замены (replacement) содержимого этой строки, то благодаря соответствующим установкам обоих этих битов вызывается операция обновления блока основной памяти, если это необходимо. Преимуществом того метода является значительно меньшая загрузка системной шины, потому что на ней выполняется меньше циклов записи. Этот метод быстрее двух предыдущих. Но при этом усложняется аппаратное обеспечение.