2016-12-30 9 views
1

Я разрабатываю приложение для Atmel SAME70Q21 Микропроцессор. Этот MCU имеет ядро ​​ARM Coretex-M7.Могу ли я использовать «Инструкцию» TCM в процессоре Atmel SAME70 для данных?

Atmel внедрил ARM TCM (плотно связанная память) в этом конкретном варианте MCU. Atmel, по-видимому, классифицирует TCM в двух разделах «ITCM» (инструкция TCM) и «DTCM» (данные TCM)

В настоящее время я использую DTCM для быстрого хранения, как правило, от прерываний. Тем не менее, ITCM в настоящее время фактически отключен, хотя система конфигурации для TCM по-прежнему выделяет 32K данных.

Я думал, так как я не выполняю работу из ITCM, а ram-сервер уже выделен, могу ли я использовать ITCM для хранения данных? Cortex-M7 - это процессор архитектуры Von Neumann, а диаграммы архитектуры, которые я видел, показывают два сегмента памяти TCM как имеющие отдельные интерфейсы от CPU.

Оба пространства памяти DTCM и ITCM: rw в сценарии компоновщика (для использования ITCM на самом деле вам необходимо переместить код в него во время выполнения). Какова производительность, влияющая на (ab) использование ARM-ядер таким образом?

+0

А как насчет названия «** инструкция ** TCM не понятен?» Он предназначен для хранения, например, обработчиков прерываний или других функций, связанных с эффективностью. Лучшим подходом было бы использовать его по назначению. преждевременная оптимизация. Контролируйте и просматривайте свой код. Идентифицируйте горячие точки и оптимизируйте их на C. Сначала, если это недостаточно, подумайте о другом подходе и разместите функции в ITCM. Это приведет к большей производительности, чем использование это для datqa (если это вообще будет работать). – Olaf

+1

@Olaf - Возможно, часть, где AFICT, различие между инструкциями/данными было первоначально для более раннего ядра (ARM926EJ), а движущиеся функции в нем связаны с рассмотрением его как обычной RAM? Или факт, что мне просто интересно? Или то, что вы, кажется, предполагаете, что я еще не сделал других оптимизаций? –

+1

Я всегда удивляюсь, как вопросы «что если бы я это сделал, то на стоп-обмене так агрессивно отвергаются. Попытка вещей и экспериментирование - отличный способ узнать, а документация по разделам TCM минимальна в лучшем случае, и я пытаюсь понять, как устройство работает лучше. Почему я не могу спросить о странных вещах? –

ответ

2

From the ARM Cortex-M7 Processor Technical Reference Manual Section 5.8 TCM Interfaces:

Группа Prefetch (ОРП) может принести инструкции от любого из интерфейсов TCM. Блок загрузки (LSU) и интерфейс AHBS могут считывать и записывать данные с помощью любого из интерфейсов TCM. Наилучшая производительность достигается, если код размещен в ITCM и данные в DTCM. Однако нет функционального ограничения, в котором размещены TCM, код и данные.

Если вы используете ни для кода, то есть, вероятно, не удар по производительности, но если вы являются выполнением кода в TCM, затем отделить их преимущество от архитектуры Гарвардского университета, что позволяет получать одновременно обучение и чтение данных. 64-битная шина ITCM, по-видимому, допускает однократную инструкцию и выборка операндов, но я сомневаюсь, что это принесет пользу для чтения/записи данных.

+0

Bam, это точно документирует поведение, которое мне было интересно. Я, очевидно, должен прочитать документацию ARM. –