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

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

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

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

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

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

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

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


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

16 minutes ago, iosifk said:

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

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

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

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


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

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

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

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

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


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

10 minutes ago, iosifk said:

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

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

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

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


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

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

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

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

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

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


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

16 hours ago, iosifk said:

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

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

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


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

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

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

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

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

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


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

53 минуты назад, warrior-2001 сказал:

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

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

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

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


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

4 часа назад, iosifk сказал:

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

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

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


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

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

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

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

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

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

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

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

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

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