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

Avalon - арбитраж

Что-то совсем я тормоз. Вот вопросик такой, работает ядро, считаем там что-то из SDRAM одной (будем считать, что кеши отключены.) Еще имеется две SDRAM, и запущена DMA передача из одной в другую. Эта передача будет тормозить ядро, т.к. занимает шину или не будет ? К data master эти SDRAM подключены.

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


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

Эта передача будет тормозить ядро, т.к. занимает шину или не будет ? К data master эти SDRAM подключены.

должна тормозить, если шина общая

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


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

эхх... а нельзя как-нить ее "отключать" от проца на время DMA ?

Если DMA свой, то arbiter lock заблокирует шину на всю транзакцию.

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


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

и проц не сможет вообще ничего делать по data bus ? А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ?

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


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

А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ?

пожалуй, можно сделать что-то типа моста для data master, который будет отключать этот участок шины для проца на время транзакции.

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


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

По простому - нет. Разве что в настройках арбитража соединения указать максимально возможный интервал(View->Show Arbitration)

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


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

и проц не сможет вообще ничего делать по data bus ? А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ?

В памяти после прочтения полгода назад про шины ниос осталось такое: было написано, что не надо бездумно соединять все устройства со всеми, поскольку для устройств ниос формирует несколько шин, чтобы максимизировать производительность системы.Так что в моем понимании прочитанного можно несколько шин сформировать, но на практике не пробовал. Хотя собирал систему, где проц, внутренняя память и внешняя память сидели на одной шине. Прога была во внутренней памяти. Измерял производительность процессора до включения DMA из внешней памяти в контроллер LCD и после (DMA на той же шине висел - все было на одной шине). Производительность не изменилась никак. В моем понимании если бы шина физически была одна, на время транзакции внешняяSRAM ->DMA->LCD шина должна бы забиться и исполнение команд из внутренней памяти приостановиться. А так похоже по отдельным шинам прокачивалось. На LCD шел поток 10 МБ/с, частота проца 80 МГц. Должно было повлиять на производительность, хоть на 5-10%, но не повлияло.

 

Хотя была еще program cache, может он цикл измерения производительности и кэшировал...

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


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

Читаю вот " Unlike traditional

host-side arbitration architectures where each master must wait until it is granted

access to the shared bus, multiple Avalon-MM masters can simultaneously

perform transfers with independent slaves. Arbitration logic stalls a master only

when multiple masters attempt to access the same slave during the same cycle" То есть все OK выходит ?

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


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

Давайте уточним - программа обращается к одной из этих двух SDRAM? Если нет - торможения не будет, если да - будет.

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


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

обращается но не в момент DMA . То есть к data master подключена, но транзакции со стороны DMA и ядра - по времени не пересекаются

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


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

обращается но не в момент DMA .

Тогда прерываться не будет, т.к. прерывать просто некому.

Если это так важно - отключите все "лишние" прерывания, которые могут вызвать обращение к ОЗУ.

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


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

Это все понятно, я просто по аналогии с системами с одной общей шиной, решил, что если шина занята - то никто ничего сделать не может.

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


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

В SOPC арбитраж на стороне подчиненного. Поэтому пересечения и взаимные остановки будут только при одновременном обращении двух мастеров к одному подчиненному. Пока Ниос не полезет туда же, куда и ДМА, никто его останавливать не будет.

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


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

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

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

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

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

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

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

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

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

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