Алгоритм записи

Особая ситуация возникает при записи данных в ОЗУ. А именно тогда, когда строка, в которую производится запись, имеется в наличии в кэш. Если произвести запись только в кэш, то при удалении этой строки результат вычислений потеряется, а в ОЗУ останутся устаревшие данные (данные не содержащие произведенных изменений).

Проблема должна быть решена, а способ решения этой проблемы определяет используемый контроллером "алгоритм записи". Варианты алгоритма:

а) "Алгоритм прямой записи" – данные записываются не только в кэш, тут же записываются и в ОЗУ, и только затем продолжается дальнейшее выполнение программы.

б) "Алгоритм перезаписи" – в этом случае, что бы не тратить время на медленную запись в ОЗУ, первоначально - данные записываются только к кэш. Но при этом контроллер кэш специально помечает строки в которые производилась запись (для каждой строки хранит ещё и "флаг модификации строки", и каждый раз при выполнении новой записи в строку - устанавливает этот флаг), и уже далее, по ходу выполнения программы, используя свободные такты (когда нет других обращений к ОЗУ) переписывает помеченные строки в ОЗУ (после того как перезапись произведена "соответствующий "флаг модификации строки" контроллером сбрасывается). Перед тем, как удалить какую либо строку, контроллер проверяет "флаг модификации строки", и если он установлен, то не спешит удалять (замещать) строку, а сначала перезаписывает эту строку в ОЗУ.

 

Используемый алгоритм записи обычно может выбираться программистом, путём перепрограммирования контроллера кэш. "Алгоритм перезаписи" обычно обеспечивает более быстрое исполнение программ, и особенно прибавка скорости бывает заметна для программ, интенсивно использующих модификацию больших массивов данных в ОЗУ. Но этот алгоритм имеет один очень существенный недостаток: ограниченно совместим с выполнением распараллеленных программ на многопроцессорных ЭВМ в тех случаях, когда программные процессы взаимодействуют между собой (обмениваются данными) через общее поле в ОЗУ. Ограниченность тут состоит в том, что программист, если он желает использовать более быстрый "алгоритм перезаписи", в ряде случаев должен принимать дополнительные, программные меры по организации взаимодействия процессов, обязан сам обеспечить такую синхронизацию процессов что бы из ОЗУ не могли быть прочитаны устаревшие данные.