Jump to content

    

Dynamic bus sizing And DMA

18 минут назад, djhall сказал:

Меня смущает следущее:

1. Уменьшение производительности. В данном случае в два раза. В произвольном случае в зависимости от отношений ширин мастера и слэйва.

2. Невозможно считать данные из нечётного адреса. Можно считать данные из 0-го и 1-го адреса сразу и они будут лежать последовательно в памяти. Можно считать данные из 0-го адреса и данные будут лежать в младшем и старшем полу-словах. Только из первого адреса данные считать вообще нельзя, ну во всяком случае с помощью стандартной DMA.

Уменьшение производительности кого? ДМА или процессора? Для ДМА считать несколько лишних слов - это не серьезно. Ну кроме случая, когда у Вас еще 10 каналов ДМА лезут в эту же память, а вот у обсуждаемого самый низкий приоритет... Но так ведь ради одного-двух слов и ДМА не нужен.

А если говорить о процессоре, так посмотрите на программу и определите, сколько в ней переходов-возвратов, которые рушат конвейер. Вот это действительно потеря производительности, потому как при каждом таком случае пока конвейер не заполнится, а это 5-10 тактов ничего вычисляться не будет... Правда это будет иметь место если в  Вашем процессоре нет микроархитектуры или специального буфера для того, чтобы запоминать команды цикла. И посмотрите сколько команд приходится на обработку одного записанного слова. Всяко больше сотни, так что реальные потери производительности они совсем не там, где Вы их ищите... 

Share this post


Link to post
Share on other sites
16 minutes ago, iosifk said:

Уменьшение производительности кого? ДМА или процессора? Для ДМА считать несколько лишних слов - это не серьезно. Ну кроме случая, когда у Вас еще 10 каналов ДМА лезут в эту же память, а вот у обсуждаемого самый низкий приоритет... Но так ведь ради одного-двух слов и ДМА не нужен.

А если говорить о процессоре, так посмотрите на программу и определите, сколько в ней переходов-возвратов, которые рушат конвейер. Вот это действительно потеря производительности, потому как при каждом таком случае пока конвейер не заполнится, а это 5-10 тактов ничего вычисляться не будет... Правда это будет иметь место если в  Вашем процессоре нет микроархитектуры или специального буфера для того, чтобы запоминать команды цикла. И посмотрите сколько команд приходится на обработку одного записанного слова. Всяко больше сотни, так что реальные потери производительности они совсем не там, где Вы их ищите... 

Я говорю именно о DMA. Что значит несколько лишних слов? Например у меня по этому адресу USB, DMA нужно считать одно слово по адресу 0, а он вместо этого читает слово по этому адресу и ещё по адресу 1. Если говорить про теоретические цифры, то производительность падет ровно в два раза, ведь вместо чтения по адресу 1, можно было бы ещё раз прочитать по адресу 0.

Share this post


Link to post
Share on other sites
23 минуты назад, djhall сказал:

Я говорю именно о DMA. Что значит несколько лишних слов? Например у меня по этому адресу USB, DMA нужно считать одно слово по адресу 0, а он вместо этого читает слово по этому адресу и ещё по адресу 1. Если говорить про теоретические цифры, то производительность падет ровно в два раза, ведь вместо чтения по адресу 1, можно было бы ещё раз прочитать по адресу 0.

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

Share this post


Link to post
Share on other sites
10 minutes ago, iosifk said:

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

Ну это всё равно, что сказать, что если по этой шине USB нужно передавать 100 байт в сутки, то можно и карандашом обойтись, что толку огород городить.

Я считаю так, что если передача по каждому такту длится допустим 100нс, а по каждому второму 200нс, то скорость передачи упала в два раза. Короче я говорю о мгновенной скорости, вы о средней.

Share this post


Link to post
Share on other sites
4 минуты назад, djhall сказал:

Ну это всё равно, что сказать, что если по этой шине USB нужно передавать 100 байт в сутки, то можно и карандашом обойтись, что толку огород городить.

Я считаю так, что если передача по каждому такту длится допустим 100нс, а по каждому второму 200нс, то скорость передачи упала в два раза. Короче я говорю о мгновенной скорости, вы о средней.

Именно это я и говорю... И если разработчик тратит свое время на то, что не является приоритетной задачей, то это не айс... Техника - это всегда компромисс. И разработка - тоже. Можно сделать сегодня, а можно круто, но послезавтра. Да вот только в том и разница, что послезавтра это никому не будет нужно. И кому нужно это "круто"???  

Share this post


Link to post
Share on other sites
16 hours ago, iosifk said:

Именно это я и говорю... И если разработчик тратит свое время на то, что не является приоритетной задачей, то это не айс... Техника - это всегда компромисс. И разработка - тоже. Можно сделать сегодня, а можно круто, но послезавтра. Да вот только в том и разница, что послезавтра это никому не будет нужно. И кому нужно это "круто"???  

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

Share this post


Link to post
Share on other sites

Доброго времени суток!

Сама шина Avalonmm мне не особо нравится. Однако она однозначна и хорошо документирована. То, что Platform Designer/Qsys работает с этой шиной согласно документации на неё - для меня очевидно. То, что не все IP ядра поддерживают полную спецификацию - тоже факт!

Вывод прост - пишите свои IP ядра, делайте их универсальными или же ориентированными под конкретные задачи. В чем вопрос-то?

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

Share this post


Link to post
Share on other sites
53 минуты назад, warrior-2001 сказал:

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

Я уже писал, теперь еще раз.

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

Share this post


Link to post
Share on other sites
4 часа назад, iosifk сказал:

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

Ну Вы то ведь понимаете, что есть несколько вариантов обхода этой проблемы.  Я вот делал переходник для Ниоса, чтобы такая схема работала.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this