Перейти к содержанию
    

Cortex-M7 кол-во циклов на инструкцию

Приветствую всех!

 

А есть ли какой-нить инструмент, или хотя бы таблица по теме? Понимаю, что там конвейер со всеми делами, но как-то же нужно в этом всем ориентироваться?

 

Например у DSP56300 можно скормить ассемблеру опцию и он в листинге дает кол-во циклов отдельной колонкой (учитывая конвееризацию и показывая возникающие простои конвейера).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В TechRefMan-е на M7 раздела "Instruction Timing" нет, но есть в DDI0337E (для М3) и фраза "Table 18-1 shows the Thumb-2 subset supported in the ARMv7-M architecture." обнадёживает. В общем, гл. 18.

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть ли какой-нить инструмент, или хотя бы таблица по теме? Понимаю, что там конвейер со всеми делами, но как-то же нужно в этом всем ориентироваться?

Wiki:

Key features of the Cortex-M7 core are:

  • ARMv7E-M architecture.
  • 6-stage pipeline with branch speculation.
  • Instruction sets:

    • Thumb-1 (entire).
    • Thumb-2 (entire).
    • 32-bit hardware integer multiply with 32-bit or 64-bit result, signed or unsigned, add or subtract after the multiply.
    • 32-bit hardware integer divide (2-12 cycles).
    • Saturation arithmetic support.
    • DSP extension: Single cycle 16/32-bit MAC, single cycle dual 16-bit MAC, 8/16-bit SIMD arithmetic.
  • 1 to 240 interrupts, plus NMI.
  • 12 cycle interrupt latency.
  • Integrated sleep modes.
Изменено пользователем =SSN=

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но есть в DDI0337E (для М3) и фраза "Table 18-1 shows the Thumb-2 subset supported in the ARMv7-M architecture

Так для М4 на сайте АРМ были тоже, но М7 по идее несколько иной "зверь".

 

Это очень уж лаконично :)

 

Похоже придется смотреть через DWT на реальном процессоре, неудобно однако...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже придется смотреть через DWT на реальном процессоре, неудобно однако...

...если этот DWT в реальном процессоре есть :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так для М4 на сайте АРМ были тоже, но М7 по идее несколько иной "зверь".

В TRM на M4 тоже нет таймингов

Ну сами уж "supported in the ARMv7-M architecture" подчеркните (:

DDI0403E.b применИм к M7? Всё…

 

Не знаю, пользуетесь ли IAR-ом, там есть

post-83663-1493377162_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну сами уж "supported in the ARMv7-M architecture" подчеркните (:

DDI0403E.b применИм к M7? Всё…

И что?

Открываем ARM Cortex-M4 Technical Reference Manual, читаем "The DWT, if present, contains counters for:".

May be present, or may be don't. Применимо к M7?

Всё.... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...если этот DWT в реальном процессоре есть :rolleyes:

В том, который могу попытать есть :)

 

В TRM на M4 тоже нет таймингов

Я ж писал, что не в TRM, а не сайте АРМ - вот http://infocenter.arm.com/help/index.jsp?t...b/CHDIJAFG.html :)

 

Ну сами уж "supported in the ARMv7-M architecture" подчеркните (:

DDI0403E.b применИм к M7? Всё…

Как по мне, то эта фраза не гарантирует, что тайминги одинаковые. Да и не понятно какие инструкции в М7 могут быть выполнены параллельно.

 

Не знаю, пользуетесь ли IAR-ом, там есть

Не, у меня все инструменты бесплатные :) - MS VS Code + GCC + GDB + OpenOCD, но доступ к DWT получить не должно быть проблемой.

Изменено пользователем Шаманъ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я ж писал, что не в TRM, а не сайте АРМ - вот http://infocenter.arm.com/help/index.jsp?t...b/CHDIJAFG.html :)

Поправка: действительно, в DDI0439B есть только про LDR\STR и "This section describes how best to pair instructions to achieve more reductions in timing." (: Эт раз.

Два: в DDI0337E (для M3) глава про тайминги есть, а в DDI0337H уже такой подробной нет, аналогично DDI0439B (п.3.3 Instruction set summary)

 

Процы сложнее - дока кУцее и кУцее…

 

Как по мне, то эта фраза не гарантирует, что тайминги одинаковые. Да и не понятно какие инструкции в М7 могут быть выполнены параллельно.

 

Ну те что "Parallel arithmetic"

 

Не, у меня все инструменты бесплатные :)

Я тоже не внук рокфеллера…

 

PS: заинтересовали. Качнул DDI0489D M7 TRM r1p1 - гениальный документ! Вот ВЕСЬ раздел

2.3 Instruction set summary

The processor implements the ARMv7-M instruction set and features provided by the

ARMv7E-M architecture profile. For more information about the ARMv7-M instructions, see

the ARM®v7-M Architecture Reference Manual. ФСЁ!

 

Так что, фраза гарантирует (;

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже придется смотреть через DWT на реальном процессоре, неудобно однако...

Разрешите поинтересоваться, зачем? Я ещё могу понять, когда измеряется время выполнения участка кода, если уж очень сильно куда-то спешим и не успеваем. Но отдельные инструкции, Холмс? :laughing:

 

Как по мне, то эта фраза не гарантирует, что тайминги одинаковые. Да и не понятно какие инструкции в М7 могут быть выполнены параллельно.

Точно помню, что есть отличия между M3 и M4. Но там мелочь какая-то была, грубо говоря, 99% одинаково.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разрешите поинтересоваться, зачем? Я ещё могу понять, когда измеряется время выполнения участка кода, если уж очень сильно куда-то спешим и не успеваем. Но отдельные инструкции, Холмс? :laughing:

Вы не поняли. Если бы у меня такой инструмент, как в ассемблере DSP56300, то я бы позанимался оптимизацией просто используя его (там и отдельные инструкции и общее кол-во тактов видно). Была бы бумажка-табличка, то для начала заглянул бы в нее, а так остается DWT, но естественно не для отдельных инструкций - конечная цель оптимизация нескольких критических кусков выполняющих DSP обработку.

 

Сваял тестовый проект, через DWT все отлично видится в gdb. Вопрос наверное можно закрыть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По хорошему надо бы ввести в архитектуру банки регистров, как в MIPS...тогда бы переключение контекста в многозадачности свелось бы к простому переключению нужного банка...все остальное-игрулечки-бирюлечки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По хорошему надо бы ввести в архитектуру банки регистров, как в MIPS...тогда бы переключение контекста в многозадачности свелось бы к простому переключению нужного банка

Банки регистров есть в классических ARM, например ARM7, ARM9.

Только это никак не помогает переключению задач, а наоборот - переключение гораздо сложнее.

Или Вы хотите количество банков по количеству задач? :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ, а есть ли какие-нить вменяемые benchmarks по части DSP фильтров/функций для Cortex-M7 на которые стоит ориентироваться? А то что-то везде одна реклама, как все хорошо, а хотелось бы конкретики типа столько-то тактов на 1tap FIR фильтра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В том, который могу попытать есть :)

Везёт Вам. У меня вот CM4, а в нём нету даже bitband :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...