Цитата(Sergey1212 @ Apr 25 2013, 22:30)

Извеняюсь конечно но чет я не понимаю не фига)
бутстрапом приложение копируется в 0x73f00000 это получается сегмент кода для которого достаточно только ICache?
а где тогда сегмент данных?
ICache кеширует только сам код программы?
а чем занимаются DCache и MMU?
к дополнительному перевариванию надо в общих чертах про кэши и АРМ.
У вас в проце отдельно шина данных и шина команд. Первые идеи были положить и данные и инструкции в одну память и сложение выглядело так
загрузить адрес инструкции
загрузить инструкцию
распознать ее, понять что надо складывать
загрузить адрес первого операнда
загрузить операнд
загрузить адрес 2 операнда
загрузить операнд
сложить
получить адрес результата
загрузить адрес результата
выложить данные.
Если к этому добавить что операнды обычно лежат черти как, а инструкции одна за одной, при это операнды лежат там где появились, а иснтрукции идут вперед и вперед, всем показалось разумным разделить области с операндами и инструкциями. При том пошли радикально, и разделили даже шины доступа к ним. А потом борясь с медленной памятью сделали кэши, вот мы и имеем их 2 штуки.
кеш данных - на шине данных кеширует операнды
кеш инструкций - на шине инструкций кеширует выполняемый код
Кеши имеют разные алгоритмы работы, но в целом они автоматизированы, попали в ячейку памяти забрали ее и некую область вокруг. Попали в область кеша работаем из него, промазали, сбросили кеш загрузили новую область. Размер кеша допустим 4 кбайта, если вы будите тыкаться в ячейки расположенные друг от друга в 5 кбайтах так и будет постоянный сброс кеша и загрузка, будет медленее чем без него.
И вот тут как я понимаю и помогает ММУ, как я понял при помощи него вы можете положить себе поближе нужные куски памяти, и постараться учесть как будет вести себя программа, как она будет и куда прыгать и так далее.. То есть это как бы интеллектуальный, управляемый кеш... Хотя я могу ошибаться, и тогда меня поправят

...
Если шину данных и адреса использовать для управления чем либо, то есть выставляя биты на ножках адреса и данных, то кешировать это пространство низя, данные будт в кеше, а ножки не будут шевелиться. Так же как и для переферии если надо менять ее регистры, то кеш не даст это делать, вы будите менять внутреннюю память проца (кеш), а не регистры. Ну и при обращении через ДМА - тоже беда, рассинхронизация памяти...