[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция по продукции «Конференция «Цифровые сигнальные процессоры (DSP) и их применение»»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 11 апреля 2003 г. 13:51
В ответ на: Я так понял, что кэш нужен для того, чтобы пока ждём чего то ещё полезное сделать в плане вычислений. Т.е. ядро в столл не впадает. Или не так? отправлено sdy 11 апреля 2003 г. 13:24

Там 2-х-уровневый кэш. Примерно как в пентиум. К кешу первого уровня относятся:
Direct mapped кэш программы (L1P) на 4кб и 2-way set-associative кэш данных (L1D) кажется тоже на 4 кб.
Кэш второго уровня (L2) (если включен) может быть N-way set-associative. Где N in [1..4]. Размер от 16 кб до 64 кб. регулируется это N программно.

Система такая - если требуемая инструкция есть в L1 то процессор ничего не ждет, а ее выполняет, взяв из кеша. То-же касается данных - если они есть в L1D то попадают в CPU без торможения. Запись данных происходит по-разному. Если данные в кеше есть, то методом "write-back", то есть пишем в кеш, а до памяти это не доходит. Если данных в кеше нет, то при записи не происходит выделения строки кеша, а происходит не-кешированная запись прямо в ОЗУ с соотв. тормозами.

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

ЗЫ осторожно с DMA! Если ты записал данные в внеш. ОЗУ, это еще не значит, что они туда записались. Перед передачей в DMA блока из внешнего кешируемого пространства надо выполнить операцию "cache flush" как минимум для этого блока. Или писать туда через некешируемую область адресного пр-ва.

Составить ответ ||| Конференция ||| Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов ||| Конференция ||| Архив ||| Главная страница ||| Содержание

E-mail: info@telesys.ru