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

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

Отправлено ВН 03 марта 2003 г. 13:37
В ответ на: про кэш и конвеер (пояснения к моим вопросам 2), 3) ) отправлено yes 03 марта 2003 г. 09:23

По кэш.
direct mapped и 1-way set assoc. - по сути одно и то же.
Что такое direct mapped? Это означает, что любая ячейка памяти (в 6000 для программной памяти размер этой ячейке для удобства можно считать равным одному фетч-пакету, т.е. 32 байтам) может кэшироваться только в одну ячейку кэш. Т.е. ячейка памяти с адресом, допустим, M0 всегда будет кэшироваться в ячейку кэш с адресом, например, K0. И только в нее. Собственно для direct mapped адрес кэшевой ячейки K0 -младшие разряды адреса ячейки памяти M0. Старшие разряды адреса M0 хранятся в памяти тегов кэша. Естественно никто не делает размер кэша равным максимально возможному объему памяти. Зачем тогда кэш? Т.е. кэшевую ячейку K0 может занимать более чем одна ячейка памяти. Естественно не одновременно. Для direct mapped одну и ту же ячейку K0 могут занимать ячейки памяти с адресами M0=K0+N*CACHESIZE. CACHESIZE-размер кэша. N - целое число, по сути старшие разряда адреса ячейки памяти, хранятся в соответствующей ячейки памяти тэгов.
В этой же памяти тегов хранится и признак занятости кэшевой ячейки памяти. Этот признак и старшие разряды адреса N и определяют, какая именно ячейка памяти из набора заняла ячейку кэш. Когда из процессора приходит команда на чтение фетч-пакета по какому-то адресу памяти, то младшие разряды этого адреса используются как адрес кэшевых ячеек и одновременно как адрес памяти тегов. Из соотв. ячейки памяти тегов читается содержимое, анализируется бит занятости, и если ячейка кэш занята, то сравниваются старшие разряды адреса, храняшиеся в ячейке тэгов, со старшими разрядами адреса запрашиваемой ячейки памяти. При совпадении читается содержимое ячейки кэш и отправляется в процессор.
Процессор получает требуемые данные сразу.
В противном случае возникает кэш-мисс, запрос на чтение переадресуется в EMIF, происходит чтение ячейки памяти, ее содержимое кладется в соотв. ячейку кэш, старшие разряды адреса в соотв. ячейку памяти тэгов, устанавливается бит занятости, содержимое кроме того отправляется в процессор. При этом, конечно, старое содержимое кэшевой ячейки теряется, как и ячейки памяти тэгов.
Процессор мирно ждет окончания всех этих процедур.
Что такое n-way set ass.? В этом случае ячейка памяти может кэшироваться не в одну ячейку кэш, а в n. Естественно не одновременно. Как и в случае с direct mapped в одну кэшевую ячейку может кэшироваться не одна ячейка памяти. Но, в отличии от direct mapped, если кэшевая ячейка, в которую должно производиться кэширование по умолчанию, что ли, занята, то кэширование может произойти в одну из свободных ячеек из набора в n штук. Если, конечно, в этом наборе в данный момент есть свободные ячейки. Если их нет, то обычно в наиболее редко используемую из этого же набора. Старое содержимое теряется. Есть и тэговая память, конечно.
Но если n в n-way-ном кэше равно 1, то какое, собственно, отличие от
direct mapped?
В 6201-05 кэш, если она используется, direct mapped. Так же как кэш первого уровня, L1, в 6211. Но значительно большего размера.
Для 6202, например, размер кэша 128кб. 4К фетч-пакетов.
В кэше может лежать кусок памяти аналогичного размера, выравненный по 128кб границе, может лежать конец одного 128кб блока и начало другого,
ну и другие варианты. Размер приличный, поэтому и писал, что проблемы с кэшированием памяти большого объема возникнут, если программа из одних бранчей состоит. Так они и в n-way кэше возникнут.
А насчет использования части внутр. памяти в 6202,03 в качестве кэш,
мне кажется - при большой программе, никак не лезущей во внутреннюю память. И при невозможности разместить все быстрые куски во внутренней памяти. Но вообще это от задачи зависит. Рекомендации на все случаи вряд ли возможны.
По второму вопросу ув. SM уже ответил. Я только добавлю.
Пожалуй к первому типу. Т.е. одновременно выборка, исполнение.
Но всякие тонкости есть. 2 примера.
Конвейер, например, может стоять и при выборке, например те же кэш-миссы, или просто выборка из внешней памяти без кэша. Может стоять и при исполнении. Например чтение данных из внешней памяти.



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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru