2014-12-23 4 views
0

В ARM архитектуры при чтении последовательности выключения CPU Я нашел эти шаги:Что такое чистое состояние в кэше L2?

  1. экономия на периферии CPU (IC, VFP, PMU)
  2. сохранить CPU регистрирует
  3. чистый L1-кэша
  4. чистое состояние из L2
  5. отключить L1-кэш распределение
  6. чистый L1-кэш
  7. выхода когерентность
  8. вызов WFI (ожидание прерывания)

Что чистый L1 означает? Означает ли это удаление всего содержимого L1? И что такое чистое состояние от L2?

ответ

1

Что такое чистый?

Clean, в документах ARM Cortex-A, как правило, означает вровень (запись грязных строк кэша на следующий уровень). Действует только для Dcache или унифицированные тайники. Несколько раз нам нужны как clean, так и аннулировать (очистить кэш). Это важно, если какой-либо другой объект (мастер шины/периферия) может изменить память. Обычно шина (AXI) имеет механизм, позволяющий избежать этого. Кроме того, если вы обновляете код в основной памяти и есть предыдущие данные I-кеша, вам нужно аннулировать.


Почему несколько чистит?

Вам необходимо очистить L1, чтобы убедиться, что данные в L2 (промыты), чтобы вы могли очистить L2. Поскольку мы отключили DC-файл L1, у вас могут быть некоторые устаревшие данные из разряда L2 в L1. Я не совсем уверен, почему они говорят, что чистые, а не недействительные для шага 6. Вы не указали точно процессор ARM, и эти данные меняются в зависимости от типа. Кажется, это, возможно, Cortex-A5/A8/A9 с внешним L2C-310.

2-й L1 чистый из-за гонки между двумя уровнями кешей. Он описан в одном из технических справочников Cortex-A (TRM). Я буду следовать их советам, поскольку он, вероятно, избегает некоторых редких угловых случаев, и этот тип кода трудно отлаживать. Отключение/приостановка/спящий по необходимости отключает все ваши устройства отладки и с трудом удается снять как загрузочный код.

Смежные вопросы