DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба Что-то совсем я тормоз. Вот вопросик такой, работает ядро, считаем там что-то из SDRAM одной (будем считать, что кеши отключены.) Еще имеется две SDRAM, и запущена DMA передача из одной в другую. Эта передача будет тормозить ядро, т.к. занимает шину или не будет ? К data master эти SDRAM подключены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба Эта передача будет тормозить ядро, т.к. занимает шину или не будет ? К data master эти SDRAM подключены. должна тормозить, если шина общая Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба эхх... а нельзя как-нить ее "отключать" от проца на время DMA ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба эхх... а нельзя как-нить ее "отключать" от проца на время DMA ? Если DMA свой, то arbiter lock заблокирует шину на всю транзакцию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба и проц не сможет вообще ничего делать по data bus ? А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ? пожалуй, можно сделать что-то типа моста для data master, который будет отключать этот участок шины для проца на время транзакции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба По простому - нет. Разве что в настройках арбитража соединения указать максимально возможный интервал(View->Show Arbitration) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба и проц не сможет вообще ничего делать по data bus ? А ниизя какую-нить шину дополнительную между этими двумя SDRAM проложить, чтобы пока проц не нужен и идет DMA отключать их ШД проца, а по окончании DMA мультиплексировать ее назад к процу ? В памяти после прочтения полгода назад про шины ниос осталось такое: было написано, что не надо бездумно соединять все устройства со всеми, поскольку для устройств ниос формирует несколько шин, чтобы максимизировать производительность системы.Так что в моем понимании прочитанного можно несколько шин сформировать, но на практике не пробовал. Хотя собирал систему, где проц, внутренняя память и внешняя память сидели на одной шине. Прога была во внутренней памяти. Измерял производительность процессора до включения DMA из внешней памяти в контроллер LCD и после (DMA на той же шине висел - все было на одной шине). Производительность не изменилась никак. В моем понимании если бы шина физически была одна, на время транзакции внешняяSRAM ->DMA->LCD шина должна бы забиться и исполнение команд из внутренней памяти приостановиться. А так похоже по отдельным шинам прокачивалось. На LCD шел поток 10 МБ/с, частота проца 80 МГц. Должно было повлиять на производительность, хоть на 5-10%, но не повлияло. Хотя была еще program cache, может он цикл измерения производительности и кэшировал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба ну вот у меня тоже примерно такие непонятки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба Читаю вот " 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 выходит ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба Давайте уточним - программа обращается к одной из этих двух SDRAM? Если нет - торможения не будет, если да - будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба обращается но не в момент DMA . То есть к data master подключена, но транзакции со стороны DMA и ядра - по времени не пересекаются Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба обращается но не в момент DMA . Тогда прерываться не будет, т.к. прерывать просто некому. Если это так важно - отключите все "лишние" прерывания, которые могут вызвать обращение к ОЗУ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 3 марта, 2011 Опубликовано 3 марта, 2011 · Жалоба Это все понятно, я просто по аналогии с системами с одной общей шиной, решил, что если шина занята - то никто ничего сделать не может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmel1 0 4 марта, 2011 Опубликовано 4 марта, 2011 · Жалоба В SOPC арбитраж на стороне подчиненного. Поэтому пересечения и взаимные остановки будут только при одновременном обращении двух мастеров к одному подчиненному. Пока Ниос не полезет туда же, куда и ДМА, никто его останавливать не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться