ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
182772
Evgeny_CD, Архитектор (24.02.2010 01:43, просмотров: 27775)
Правильные кеши в микропроцессорных архитектурах. Постановка задачи: поддержание когерентности процессорного кеша при DMA операциях. Суть: есть буфер в памяти. Обработали мы его. Что-то осталось в кеше. Потом DMA притащило новый кусок данны туда. Обращаемся по адресу буфера - и вуаля: либо считаем старые данные из кеша, либо они уже будут вытеснены их кеша, и мы считаем новые. Посты по теме: http://caxapa.ru/182320.html - как все криво сделано в ARM720. Реально для быстроты можно только DMA в некешируемый SRAM использовать http://caxapa.ru/182408.html - более правильная реализация в ColdFire. Можно принудительно сбросить кеш лайн в память и инвалидировать его. Т.е. посде завершения обрабтки блока данных сбрасываем кеш лайны в память и инвалидируем их. Но красивее всего все сделано в MIPS4KC. Приснопамятная алхимия. Там есть много фишек: * понятие когерентных транзакций по системной шине. Т.е. если надо, Bus master выставляет специальный тип транзакции - когерентная, и она обрабатывается процессорным кешем. Т.е. DMA может прочитать из процессорного кеша, а при записи DMA в системную память это же содержимое записывается в кеш * инструкции CACHE и PREF для управления кешлайнами: The CACHE instruction manages the caches, including the ability to lock lines in the cache. Valid data cache operations are: • Index Writeback Invalidate • Index Load Tag • Index Store Tag • Hit Invalidate (unlocks) • Hit Writeback and Invalidate • Hit Writeback • Fetch and Lock The effect of the CACHE instruction is immediately visible to subsequent data accesses. The PREF instruction places data into the data cache. The following prefetch hints are implemented: • 0x00 - Normal load • 0x04 - Streaming load The streaming load hint directs the data be placed into way 0 of the data cache (even if the line is locked), thus permitting transient data to be cached and non-transient data to remain in the cache for improved performance. Data cache streaming support combined with the PREF instruction enhances multimedia processing. Кеши ARM7|9 смотрятся как убогое поделие на фоне этой продуманности. В общем, как говорят мылые дети "почему все, что полезно, невкусно".