2008-09-16 3 views
1

В нашей встроенной системе (с использованием процессора PowerPC) мы хотим отключить кеш процессора. Какие шаги нам нужно предпринять?Как отключить кеш процессора на процессоре PowerPC?

Чтобы прояснить ситуацию, рассматриваемое приложение должно иметь постоянную скорость выполнения, как мы можем это сделать. Изменчивость при выполнении одного и того же пути кода неприемлема. Это причина отключения кеша.

ответ

4

Я немного опаздываю на этот вопрос, а также прошло некоторое время с тех пор, как я выполнил весь низкоуровневый код инициализации процессора на КПП, но, похоже, я помню кеш & MMU довольно тесно связан (один для включения другого) и I думаю в таблицах страниц MMU, вы можете определить атрибут cacheable.

Итак, я хочу сказать следующее: если есть определенное подмножество кода, которое должно выполняться в детерминированное время, возможно, вы найдете этот код (через файл команды компоновщика) в области памяти, которая определяется как не кэшируемая в таблиц страниц? Таким образом, весь код, который может/должен извлечь выгоду из кеша, и, возможно, подмножество кода, которое не должно, не делает этого.

В любом случае я бы справился с этим так, чтобы позже, если вы хотите включить кеширование для части системы, вам просто нужно перевернуть несколько битов в таблицах страниц MMU, а не (переписывать) код инициализации для настройки всех таблиц страниц &.

2

Из справочника E600:
Реестр специального назначения HID0 содержит несколько бит, которые недействительны, деактивируют и блокируют кэши команд и данных.

Чтобы отключить кеш данных, вы должны использовать HID0 [DCE] = 0.
Чтобы отключить кеш команд, вы должны использовать HID0 [ICE] = 0.

Обратите внимание, что при включении питания оба тайника отключены. Вам нужно будет записать это в ассемблере.

+1

Вы не можете БЕЗОПАСНО отключить кэши, как описано. Вы должны убедиться, что они не содержат ВСЕ грязных данных! - То есть, вы должны сначала записать все грязные данные в память ПЕРЕД отключением. – 2009-02-16 22:27:55

+1

Справочное руководство PowerPC для вашей конкретной версии ядра сообщает вам, какие последовательности следует использовать для записи всех грязных данных в кеш, прежде чем отключать их. – 2009-02-16 22:31:41

1

Возможно, вы не хотите глобально отключать кеш, вы хотите отключить его только для определенного диапазона адресов?

На некоторых процессорах вы можете сконфигурировать записи TLB (трансляции lookaside buffer) для диапазонов адресов, чтобы каждый диапазон мог включить или отключить кеширование. Таким образом, вы можете отключить кэширование для ввода/вывода с отображением памяти и оставить кеширование для основного блока ОЗУ.

Единственный PowerPC, на котором я это сделал, был PowerPC 440EP (от IBM, затем AMCC), поэтому я не знаю, работают ли все PowerPC так же.

1

Какое это ядро ​​PPC? Управление кешем очень отличается между разными ядрами от разных поставщиков ... Кроме того, отключение кеша в целом считается очень плохой задачей для машины. Производительность становится настолько медленной, что вы будете делать со старым 8-битным процессором (преувеличением немного). Некоторые варианты ARM имеют TCM, плотно связанные памяти, которые работают вместо кэшей, но я не знаю ни одного варианта PPC с этим средством.

Возможно, лучшим решением является сохранение кэша уровня 1 и использование кэшей L2 на кристалле в качестве статически отображаемой ОЗУ вместо этого? Это, по крайней мере, на современных устройствах PowerQUICC.

1

Отключение кеша не принесет вам никакой пользы. Ваша скорость выполнения будет уменьшаться на порядок. Вы никогда не отправляли такую ​​систему, поэтому ее производительность в этих условиях не представляет интереса.

Для достижения устойчивой скорости выполнения, рассмотрит один из этих подходов:

1) Зафиксируйте все или некоторые из кэша. Все эти чипы PowerPC от Freescale, IBM и AMCC предлагают эту функцию.

2) Если это чип Freescale с кешем L2, рассмотрите возможность отображения части этого кеша в качестве встроенной памяти.

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