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

cortex m7 CPU/FPU pipeline, оптимизация кода

22 minutes ago, sasamy said:

Не, лучше пусть memcpy перепишет на ассемблере. :lol2:
Вот потеха будет. 

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


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

57 minutes ago, jcxz said:

Что "CMSIS"?

Библиотека оптимизированных под SIMD ф-ий

Quote

DSP library collection with over 60 Functions for various data types: fixed-point (fractional q7, q15, q31) and single precision floating-point (32-bit). Implementations optimized for the SIMD instruction set are available for Cortex-M4/M7/M33/M35P.

на C

 

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

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


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

8 часов назад, AlexandrY сказал:

Не, лучше пусть memcpy перепишет на ассемблере. 

А чего тешитесь - memcpy гораздо быстрее работает на НЕОНе, и да, на ассемблере, так что тут шуточки в сторону...

7 часов назад, sasamy сказал:

Библиотека оптимизированных под SIMD ф-ий

Так лень все перекапывать, но подобные функции vdupq_n_s16 скорее всего на асме писаны...

24.01.2021 в 03:00, SII сказал:

Разработкой ОС, написанием драйверов и т.п. низкоуровневой фигнёй занимается тоже меньше 1% программистов, а основная масса тусуется в веб-разработке.

Ну тут уж мягкое с теплым не путайте, скорее всего все те, кто тут отписался все-таки больше занимаются как раз низкоуровневой разработкой, да платят вебщикам больше, но тут меньше быдлокода и интереснее :biggrin:

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

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


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

13 часов назад, mantech сказал:

А чего тешитесь - memcpy гораздо быстрее работает на НЕОНе, и да, на ассемблере, так что тут шуточки в сторону...

Она (библиотечная) и на Cortex-M написана на асме (в IAR по крайней мере). Если кто-то этого не знает - сразу видно, что он ни разу не запускал отладчик.

И вправда - на кой рекламщику отладчик?  :biggrin:

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


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

Еще немного про кеш (тестировалось на DRAM памяти, кеш включен на чтение и запись)

Заметил, что при любом обращении на чтение незакешированных данных, читается _вся_ строка кеша (32 байта), а не только тот элемент что вы запросили. Т.е. достаточно одной операции (например PLD) чтоб предварительно загрузить всю строку кеша.

Предположительно, при чтении на границе будут читаться 2 строки кеша (будет полезно чтоб командой PLD грузить сразу 64 байта)

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


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

2 часа назад, jeka сказал:

Заметил, что при любом обращении на чтение незакешированных данных, читается _вся_ строка кеша (32 байта), а не только тот элемент что вы запросили. Т.е. достаточно одной операции (например PLD) чтоб предварительно загрузить всю строку кеша.

Возможно - дело не в кеше, а размере пакета для DRAM-интерфейса. DRAM позволяет производить пакетный обмен с памятью и размер пакета задаётся при инициализации в широких пределах.

Возможно задан размер пакета == 32 байта.

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


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

При работе "кэш-память" всегда читается-пишется вся линия кэша. Размер линии у всех разный, но часто это 32 байта. Делать короче смысла мало — накладные обращения в DRAM большие.

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


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

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

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

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

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

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

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

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

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

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