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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: