2016-08-25 2 views
-4

В настоящее время я работаю над настройкой эталона между микроконтроллерами (на основе Powerpc). Поэтому я хотел бы знать, может ли кто-нибудь предоставить мне подробную документацию, какие факторы наиболее важны для бенчмаркинга? Другими словами, я ищу документацию, которая содержит подробную информацию о факторах, которые следует учитывать для повышения в исполнении Основные Периферийные устройства, банки памяти
Plus, если кто-то может обеспечить алгоритмы, которые будут много полезной.Бенчмаркинг микроконтроллеров

ответ

0

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

я выполнить этот трюк на регулярной основе, совсем недавно этот код

.globl ASMDELAY 
ASMDELAY: 
    subs r0,r0,#1 
    bne ASMDELAY 
    bx lr 

Run на Raspberry Pi (голый металл) такой же малина пи не сравнивая два просто сравнивая его с собой, очевидно, сборка так не даже с учетом особенностей/трюков компилятора, которые вы можете кодировать в эталонном преднамеренно или случайно. Две из этих трех инструкций важны для целей бенчмаркинга, цикл работает много десятков тысяч раз, я думаю, что использовал 0x100000. Первой линией для этой производительности были те две команды в цикле, которые выполнялись так же быстро, как тикеры 93662 и так медленно, как 4063837 тайм-тайм для петель 0x10000. Конечно, кэш и прогнозирование ветвлений были включены и выключены для различных тестов. Но даже с предсказанием ветвления и кешем i эти две команды будут отличаться по скорости в зависимости от того, где они лежат в строке выборки и в строке кэша.

Микроконтроллер делает это значительно хуже, в зависимости от того, что вы сравниваете, у некоторых есть вспышки, которые могут использовать одно и то же состояние ожидания для широкого диапазона тактовых частот, некоторые ограничены скоростью, и для каждого N Mhz вам нужно добавить еще одно ожидание , поэтому в зависимости от того, где вы устанавливаете часы, это влияет на производительность в этом диапазоне и определенно чуть ниже и чуть выше границы, где вы добавляете состояние ожидания (24Mhz минус smidge и 24Mhz с дополнительным условием ожидания, если это было от 2-3 wait, а затем получение только на 50% медленнее 36Mhz за вычетом smidge, он все еще может находиться в состоянии ожидания 3, но 3 состояния ожидания в 36 минут, а smidge быстрее, чем 24mhz 3 состояния ожидания). если вы запускаете тот же код в sram vs flash для этих платформ, обычно нет проблемы с состоянием ожидания, то sram обычно может соответствовать часам процессора и таким образом, что код с любой скоростью может быть быстрее, чем тот же код, который запускается со вспышки.

Если вы сравниваете два микроконтроллера от одного и того же поставщика и семьи, то обычно это бессмысленно, внутренности одинаковы, они обычно просто зависят от того, сколько, сколько флэш-банков, сколько банков-спамеров, сколько уртов, сколько таймеров , сколько контактов и т. д.

Один из моих моментов, если вы не знаете нюансов общей архитектуры, вы можете сделать тот же код, что и сейчас, на одной и той же доске на несколько процентов в десятки раз быстрее просто понимая, как все работает. Включение функций, которые вы не знали, где там, правильное выравнивание кода, который выполняется часто (просто переопределение ваших функций в файле C может/повлияет на производительность), добавляя один или несколько nops в загрузочном блоке, чтобы изменить выравнивание всей программы может и изменит производительность.

Затем вы получаете разницу в компиляторе и параметры компилятора, вы можете играть с ними, а также получать от нескольких до нескольких десятков раз улучшения (или потери).

Итак, в конце дня единственное, что имеет значение, - это приложение, которое является окончательным двоичным кодом и насколько оно выполняется на A, а затем я портировал это приложение и окончательный двоичный код для B, и как быстро он работает там. Все остальное можно манипулировать, а результаты нельзя доверять.

+0

«Если вы сравниваете два микроконтроллера от одного и того же поставщика и семьи, то это обычно бессмысленно, внутренности такие же, как обычно, они варьируются в зависимости от количества, количества флеш-банков, сколько банков-спамеров, сколько уртов, сколько таймеры, сколько штырей и т. д. ». К сожалению, у меня есть этот случай для сравнения двух микроконтроллеров, есть небольшие различия между спецификациями ядер этих микроконтроллеров. как у одного есть chache и локальный байт данных. так как можно было бы установить контрольный показатель для этих различий? – waq

+0

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

+0

Точно мне нужен бенчмарк, чтобы доказать, что микроконтроллер имеет лучшую эффективность. Более того, не только память, мне приходится сравнивать и тестировать каждый аспект двух микроконтроллеров, и на основе этих знаний мне приходится делать профилирование прикладного программного обеспечения. В основном я должен сделать повышение производительности прикладного программного обеспечения. Поэтому, основываясь на предыдущем обсуждении, я ищу важные факторы, которые мне необходимо предпринять для повышения производительности прикладного программного обеспечения. Не могли бы вы посоветовать мне некоторые литературные ссылки или другие материалы? спасибо – waq

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