Ultrascale+ Cortex-A53 в режиме асинхронной многопроцессорной обработки (AMP)

Я экспериментирую с платой Xilinx Ultrascale+, в частности с APU Quad Cortex-A53. Я пытаюсь создать полностью функциональную схему AMP, в которой каждое ядро ​​запускает свой собственный экземпляр FreeRTOS и совместно использует один фрагмент DDR для обмена данными между ними.

Я столкнулся с рядом проблем, я думаю, все они связаны с неправильной конфигурацией или пониманием платформы, и я возвращаюсь к ним здесь. Цель экспериментов - полностью понять, как правильно поступать при работе в режиме AMP.

  1. Какая правильная конфигурация для каждого ядра? В некоторых показаниях указано, что я должен отключить DCache в первом ядре, а в других - во всех ядрах, которые я использую. Нет единого и последовательного источника информации, в котором указано, что делать с кешами (ID). Конкретно: когда и где мне нужно отключить эти кеши? Влияние огромно, простая операция с массивом в цикле for занимает примерно в 8 раз больше времени.

  2. Как правильно настроить MMU? Правильно ли оставить все нетронутым и пометить как Inner Shareable | Внешний общий доступ | Non Cacheable область, которая будет использоваться как разделяемая память? Правильно ли оставлять все остальное как есть? В конце концов, как я могу пометить частные области DDR каждого ядра как частные для каждого ядра, учитывая, что TLB имеет таблицу ограниченного размера, а размер каждого фрагмента составляет 1 МБ?

  3. файл boot.S, поставляемый со средой (Xilinx SDK 2019.1), имеет сборочную линию без какого-либо оператора условного обхода, который явно включает бит SMPEN (расширенный регистр управления EL1 в бите 6). Эта строка комментируется чем-то, что связано с механизмом согласованности аппаратного ядра, что приводит к следующему пункту.

  4. В чем заключается основная согласованность с точки зрения непрофессионала? Как можно "проинструктировать" этот движок, что я хочу работать в режиме AMP?

TL;DR Какая правильная настройка в режиме AMP для каждого ядра? Как я могу сохранить кеши без потери производительности? Что еще нужно знать, чтобы правильно использовать APU в конфигурации AMP?

Заранее благодарим за каждое предложение

0 ответов

Другие вопросы по тегам