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

TI Keystone vs Intel i7. Одноядерный режим

Сравниваю результаты профилирования демодулятора, написанного на С, для одного ядра С66 на 1.2 ГГц и Intel 6700 c 3.6 ГГц. Данные fixed-point. Intel выигрывает минимум в 2-3 раза по быстродействию.

Реально ли всякие кордики, FFT, частотные дискриминаторы допилить интринсиками, чтобы раз в 5 ускориться? Ассемблер на С66 совсем не хочется применять. Ну FFT можно аппаратный использовать, но он не так много общего времени занимает.

Понятно, что для сигналов под 30 МГц нужны ПЛИС, но всё-таки хочется впихнуть в DSP.

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


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

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

у i7 ещё видеокарта есть с сотней двойных гигафлопсов. или 400 одинарных

Угу. Получается, что нынче DSP только по TDP выигрывают. Процессоры общего назначения в разы стали быстрее, если смотреть с точки зрения необходимой скорости вычислений.

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


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

Хм, заменил cordic на вычисление первой разности в ЧМ-детекторе: https://www.embedded.com/design/configurable-systems/4212086/DSP-Tricks--Frequency-demodulation-algorithms-

На интеле в 2 раза стало быстрее работать, а на сигнальнике процентов на 5% медленнее. Вот и избавился от пары десятков итераций кордика...

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


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

On 8/5/2019 at 8:43 PM, Grizzly said:

Сравниваю результаты профилирования демодулятора, написанного на С, для одного ядра С66 на 1.2 ГГц и Intel 6700 c 3.6 ГГц. Данные fixed-point. Intel выигрывает минимум в 2-3 раза по быстродействию.

Реально ли всякие кордики, FFT, частотные дискриминаторы допилить интринсиками, чтобы раз в 5 ускориться? Ассемблер на С66 совсем не хочется применять. Ну FFT можно аппаратный использовать, но он не так много общего времени занимает.

Понятно, что для сигналов под 30 МГц нужны ПЛИС, но всё-таки хочется впихнуть в DSP.

Смысл в разработке под сигнальник без интринсиков вообще не ясен, ИМХО в этом самый цимес. Тем более, что можно основную фазу разработки провести в какой-нибудь комфортной визуал студии, используя программную эмуляцию интринсиков. Во сколько раз можно ускориться - сильно зависит от задачи и того, с чем сравнивается. Для типовых задач ЦОС обычно вполне реально. Ну и не следует пренебрегать библиотеками от техаса, тоже неплохо написаны.

По поводу 30 МГц - бабка надвое сказала, downlink или uplink LTE 20 МГц с аппаратными сопроцессорами турбо и витерби обрабатывается без проблем одним ядром, т.е. сильно зависит от задачи.

On 8/5/2019 at 9:38 PM, _pv said:

у i7 ещё видеокарта есть с сотней двойных гигафлопсов. или 400 одинарных

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

23 hours ago, Grizzly said:

Получается, что нынче DSP только по TDP выигрывают.

Габариты, куча высокоскоростных интерфейсов прямо на СоКе без необходимости дополнительных сетевых адаптеров и мостов, аппаратные сопроцессоры декодеров, FFT, RAKE. Т.е. опять все упирается в решаемую задачу. И такое положение вещей было, в общем-то, всегда, чистая вычислительная мощность сигнальников была примерно равна процессорам от интела и амд, наличие специнструкций компенсировало более низкую тактовую (речь про задачи ЦОС, конечно).

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


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

11 минут назад, stealth-coder сказал:

По поводу 30 МГц - бабка надвое сказала, downlink или uplink LTE 20 МГц с аппаратными сопроцессорами турбо и витерби обрабатывается без проблем одним ядром, т.е. сильно зависит от задачи.

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

Стоит же что-то нестандартное начать делать, то уже не все так гладко. Взять тот же WiFi. Пакеты во времени случайны. Надо в полосе 20 МГц постоянно искать автокорреляционной двух преамбул. Тактовая 1.2 ГГц. 60 тактов на комплексный отсчёт. Можно считать скользящими способами автокорреляцию и мощность. Где-то впритык, наверное, и получится. Ещё же всякие фоновые задачи что-то отжирают. Дальше проще. После синхронизации всё тот же аппаратный сопроцессор FFT.

Ещё возникает проблема, если куски отсчётов большие, которые приходится класть в DDR3. Тут ещё по сравнению с L2 будут потери. Похоже, у меня сейчас в этом проблема. Надо, наверное, стараться выходить в реал-тайм, чтобы обрабатывать мелкие порции данных в L2, а не отложенного из DDR3.

25 минут назад, stealth-coder сказал:

Ну и не следует пренебрегать библиотеками от техаса, тоже неплохо написаны.

Интересно, в реальности для Arctan2 будут обещанные 24 такта? Насколько в боевых условиях от лабораторных бенчей будут различия?

http://www.ti.com/processors/digital-signal-processors/core-benchmarks/core-benchmarks.html

Завтра буду пробовать.

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


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

10 hours ago, Grizzly said:

Ещё возникает проблема, если куски отсчётов большие, которые приходится класть в DDR3.

При правильно настроенном кэше L1 вижу разницу в 1-2%. Всё, что требует рандомного доступа (обычно перемежитель), обязательно размещать в L2.

11 hours ago, Grizzly said:

Насколько в боевых условиях от лабораторных бенчей будут различия?

Пользовался библиотечными FFT, комплексные и вещественные фильтры, быстрое копирование, различия на уровне стат. погрешностей.

Также неплохо пользоваться "здравым смыслом". Например, в OFDM эквалайзере использовал плавающую точку, но ограничился точностью вычисления 1/Х в 16 бит (одна итерация Ньютона-Рафсона), оказалось достаточно и стало настолько быстро, что даже с фиксированной точкой не стал заморачиваться, хотя даже нашёл пример реализации для WiMax (см. вложение).

sprp530.pdf

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


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

11 hours ago, Grizzly said:

Взять тот же WiFi. Пакеты во времени случайны. Надо в полосе 20 МГц постоянно искать автокорреляционной двух преамбул.

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

eth-30122-02.pdf

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


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

4 часа назад, stealth-coder сказал:

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

Побоялся большого числа ложных тревог от всякого мусора в эфире. А так "скользящая" мощность очень быстро считается.

 

4 часа назад, stealth-coder сказал:

хотя даже нашёл пример реализации для WiMax (см. вложение).

Круто! Спасибо.

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


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

@stealth-coder оказалось, что дело не в DDR3, а в делении float. Компилятор заменял его на вызов функции, не было поэтому программного конвейера.

При замене на интринсик где-то в 15 раз стало быстрее :)

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


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

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

Эта тема обсуждалась уже раз 100500...

Как-то пропустил. Похоже, каждый через это должен пройти...

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


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

А как лучше сделать эмуляцию для rcpsp? На форуме тексаса были вопросы, но ответа не прозвучало. С Ньютоном-Рафсоном понятно, не ясно, как начальное значение с 8-битной точностью получить. Нужно для исходной сишной модели. Или нет смысла это проверять, а просто 2-3 итерации сразу брать?

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


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

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

Как-то пропустил. Похоже, каждый через это должен пройти...

Да. Каждый должен попрыгать по персональным граблям.

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


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

55 минут назад, Grizzly сказал:

А как лучше сделать эмуляцию для rcpsp? На форуме тексаса были вопросы, но ответа не прозвучало. С Ньютоном-Рафсоном понятно, не ясно, как начальное значение с 8-битной точностью получить. Нужно для исходной сишной модели. Или нет смысла это проверять, а просто 2-3 итерации сразу брать?

Дык, а кто мешает посмотреть эмуляцию команд?

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


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

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

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

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

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

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

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

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

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

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