Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9.2 ЦАП, АЦП, ДМА 21.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
307.2 Кб
Скачать

Когерентность кэша

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

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

В системах с неполной когерентностью кэша работа по поддержке кэша отдается операционной системе. От операционной системы в таком случае требуется, чтобы она принимала решение, стоит ли обновлять значение кэша перед операцией прямого доступа к памяти или аннулировать после нее. Какой метод лучше? Я не уверен, что есть однозначный ответ на этот вопрос, ведь оба метода достаточно адекватны. Но лично я предпочитаю элегантность аппаратного решения, реализуемого в случае полностью когерентной системы.

21