LINUX.ORG.RU

кэши risc'ов


0

0

Есть risc проц (arm). Вопрос - можно ли задействовать I и D кэши при выключенном mmu. Как с этим обстоят дела у других risco'ов (не армов).

anonymous

Спеки читай. Я работаю с ARM1136 - там I мождно использовать, D нет.

anonymous
()

Смотря что считать задействовать. Intel (Marvel) pxa2** (ARMv5TE) можно писать/читать любые кеши, но использовать как кеш - нет.

alexru ★★★★
()
Ответ на: комментарий от alexru

Нельзя ли пояснить - Вы хотите сказать что в режиме когда mmu выключено доступ к кэшам есть но ничего кэшироваться не может?

--------------------------------------------------- Кстати ещё вопрос (вдогонку) - на freescale imx21 в доках написано что режим работы с памятью только little endian, хотя пишут что процессоры арм позволяют использовать big endian. Возникает вопрос - от чего (архитектурно) зависит возможность варьирования endianess при наличии этой возможности в процессоре. ---------------------------------------------------

anonymous
()
Ответ на: комментарий от anonymous

> Нельзя ли пояснить - Вы хотите сказать что в режиме когда mmu выключено доступ к кэшам есть но ничего кэшироваться не может?

Да, доступ через специальные инструкции сопроцессора. Можно писать-читать-сбрасывать кеши, но включить их как кеши нельзя. А в чем проблема включить mmu?

По второму вопросу. Различные режимы обеспечиваются прослойкой на шине данных, которая так или иначе переворачивает байты. Соответственно или ее просто выкинули при синтезе (что весьма маловероятно), или просто недокументировали.

"процессоры арм" понятие очень размытое. Их много и они разные. Лучше использовать обозначение архитектуры ядра (характерный вид ARMv***) как описано в доке DDI100, ну или коммерческое название ядра(ARM7**, 9**, 11**).

alexru ★★★★
()
Ответ на: комментарий от alexru

Тогда возникает резонный вопрос - почему (с какой целью) сделано так что эта возможность отсутствует при выключенном mmu? И соотвественно чем определяется такая возможность - я имею ввиду что в отличие от случая с endianess здесь (наверно) определяется не архитекурой board'ы а архитектурой процессора - вроде armv4t. Я тут ещё прочитал что вроде как на sparc'ах при выключенном mmu I и D кэши работают аналогично но при этом отсутствуют тэги виртуальных адресов. (В спеках посмотрю чуть позже...)

anonymous
()
Ответ на: комментарий от anonymous

По поводу ARM1136 (ARMv6 архитектура) - D cache должен быть отключен, когда отключен MMU, доступ данным noncacheable. I cache отключать не обязательно, доступ зависит от I бита в cp16 control register.

В iMX.21 reference manual указана поддержка только Little Endian.

anonymous
()
Ответ на: комментарий от anonymous

> отличие от случая с endianess здесь (наверно) определяется не архитекурой board'ы а архитектурой процессора

endianess тоже определяется архитектурой процессора. Прослойка про которую я говорил находится на кристале.

Почему так работают кеши - не знаю. Вероятно просто их работа как-то завязана на MMU. Я не вижу проблем создать mapping 1:1 и включить MMU. Наверное потому что так можно сделать никто и не думал о кешах :)

alexru ★★★★
()
Ответ на: комментарий от alexru

Странное дело - посмотрел ARM DDI0198B (ARM926EJ-S) - написано что включить можно при выкл mmu, но похоже действительно - доступ к данным будет noncachable и nonbufferable. Кстати в главе про кэши написано что структура кэшей такова что позволяет избежать очистки при context switch - что то я не совсем понял каким это образом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.