|
|
  |
Ускорение LwIP, Как? |
|
|
|
Feb 1 2010, 17:08
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416

|
Я воспользовался данной версией LwIP, но со значениями всех констант по умолчанию скорость обмен данными tcp-клиента (из папки examples) с сервером на ПК составила лишь ок. 550 Кб/с (~4Мбит/с). Тестировал ли кто-нибудь данную реализацию tcp-клиента и с какими параметрами (константами)? Какая получена скорость? Можете ли что-нибудь посоветовать мне для увеличения скорости (с ethernet работаю недавно)? Стоит ли использовать другие реализации TCP/IP (требуется скорость >60-80Мбит/с)? Мое железо: DK-NIOS-2S60N LAN91C111 NIOSII без ОС Спасибо.
Сообщение отредактировал Veg@ - Feb 1 2010, 17:12
|
|
|
|
|
Feb 1 2010, 17:43
|
Участник

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876

|
Не могу сказать конкретно про NIOS. Но есть несколько общих рекомендаций увеличения быстродействия LwIP. 1. Ethernet контроллер должен быть сконфигурирован в режиме DMA. 2. Процессор должен иметь кэш данных и кэш инструкций, часть инструкций желательно разместить в блочной памяти FPGA.
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Feb 1 2010, 19:15
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416

|
Да, не уточнил: использую стандартную сборку niosII_stratixII_2s60_RoHS. 1. а где (в SOPC или прямо в коде) и как настроить контроллер на режим DMA? 2. ок, попробую NiosII/f
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Feb 4 2010, 13:31
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Как подсчитана скорость? Расскажите немного о Вашей системе, тогда можно говорить об оптимизации вычислительных процессов. Может, хватит и UDP-пакетов. У меня Nios/f на 100МГц, с аппаратным вычислением контрольной суммы для UDP. Причем, в нем два поочередно переключаемых блока памяти, пока из одного выдается пакет в LAN через NiosII, второй заполняется аппаратно и для него вычисляется контрольная сумма, т.е. здесь распараллеливание. Потом, работа идет 32-разрядными кодами, а как в LwIP? Может, поможет это «Nios II Ethernet Acceleration Design Example» в http://www.altera.com/support/examples/nio...celeration.htmlи здесь "Nios II CRC Acceleration Design Example " http://www.altera.com/support/examples/nio...celeration.html
|
|
|
|
|
Feb 4 2010, 15:10
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Veg@ @ Feb 4 2010, 18:41)  Действительно, программный подсчет CRC занимает очень много времени. Как реализовать это аппаратно ? Т.е. вычисление может производить сам ethernet-контроллер либо необходимо написать собственную реализацию на verilog (vhdl) и соединить ее с LwIP ? Прошу поделиться опытом и, если возможно, примером кода. Спасибо. 2-й вариант предложен выше, там и примеры кода есть. один минус - дополнительные транзакции из памяти в память + канал DMA. но выигрыш уже будет большой. в идеале - запихать весь функционал в MAC, но он у вас железный, так что вариант один. еще всякие ip-шники, MAC-адреса тоже лучше на свой блок скинуть. тут еще гляньте http://www.itee.uq.edu.au/~peters/xsvboard/stack/stack.htm - от этой всей фигни проц можно избавить, пусть логика молотит.
|
|
|
|
|
Feb 4 2010, 15:15
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416

|
Цитата Как подсчитана скорость? В ПЛИС зашит демонстрационный пример TCP-клиента, отсылающий байты в ПК, на котором имеется написанный на C# TCP-сервер, работающий через сокеты и подсчитывающий количество принятых байт за определенное время. На ПЛИС временные задержки измерялись с использованием Perfomance counter. В ПЛИС зашита стандартная сборка Nios - Full featured (NiosII/f, кэш инструкций и данных, DMA-контроллер). Данная конфигурация позволяет передавать TCP-пакеты на скорости ~13Мбит/с. По всей видимости ( link) это предел чисто программной реализации LwIP. По Ethernet-каналу планируется передача видеопотока с частотой 25 кадров/сек (про качество картинки и ее размер пока ничего сказать не могу, но скорости ~55-60Мбит/с должно быть вполне достаточно), поэтому выбор сделан в сторону TCP, хотя и он неоднозначен (думаю, выбор будет сделан исходя из полученных скоростей передачи). О разрядности кодов ничего сказать не могу, т.к. с CRC начал разбираться недавно. Благодарю за предоставленные ссылки - полезный материал. Буду разбираться.
Сообщение отредактировал Veg@ - Feb 4 2010, 15:16
|
|
|
|
|
Feb 5 2010, 06:43
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Думаю, Вашей системе хватило бы и UDP-пакетов, а это даст существенное увеличение скорости в сравнении с TCP-пакетами, где на каждый пакет ожидается подтверждение о его получении. Да и аппаратное вычисление контрольной суммы здесь само напрашивается. Моя система чем-то сходна, тоже видеосигнал, оцифровка, и тоже реальный масштаб времени. В пике получается до 70 Мбит/с, а реально после сжатия хватает и 30 Мбит/с. Правда, без DMA, так как NiosII/f достаточно для этих задач LAN. В основном идет выдача, а во встречном направлении, время от времени, поступают команды управления, которые сразу обрабатываются и квитируются. Обошелся набором: UDP, ARP. RARP, ICMP (для ping). По поводу LwIP – хорошо, что она освоена Вами и работает, может когда-то и нам пригодится. Ее я просматривал пока только в качестве примера для некоторых функций в LAN91C111.
|
|
|
|
|
Feb 22 2010, 13:02
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Цитата(Veg@ @ Feb 22 2010, 15:26)  Выходит, что аппаратный подсчет не даст никакого выигрыша в скорости ? Аппаратный подсчет обязательно дает выигрыш, хотя, согласен, можно и без него и контрольной суммы. Время 0.30мс - это многовато. Хотя, для LwIP, это может и хороший результат. В приложении осциллограммы по оценке времени, там это время 0.19мс с аппаратной контрольной суммой. Но это не предел, еще не задействован DMA и др.
|
|
|
|
|
Feb 23 2010, 19:08
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(Veg@ @ Feb 1 2010, 19:08)  Я воспользовался данной версией LwIP, но со значениями всех констант по умолчанию скорость обмен данными tcp-клиента (из папки examples) с сервером на ПК составила лишь ок. 550 Кб/с (~4Мбит/с). Тестировал ли кто-нибудь данную реализацию tcp-клиента и с какими параметрами (константами)? Какая получена скорость? Можете ли что-нибудь посоветовать мне для увеличения скорости (с ethernet работаю недавно)? Стоит ли использовать другие реализации TCP/IP (требуется скорость >60-80Мбит/с)? Мое железо: DK-NIOS-2S60N LAN91C111 NIOSII без ОС Спасибо. AVR32. ~50МГц ~3 мегабайта в секунду. Свой протокол поверх UDP.
|
|
|
|
|
Mar 10 2010, 08:46
|
Местный
  
Группа: Свой
Сообщений: 222
Регистрация: 2-12-06
Из: г. Хабаровск
Пользователь №: 23 035

|
Цитата(Methane @ Feb 24 2010, 05:08)  AVR32. ~50МГц ~3 мегабайта в секунду. Свой протокол поверх UDP. А можно, пожалуйста поподробнее, на каком AVR32? У меня на UC3 при 66МГц получилось 16Мбит/с чистый трафик UDP на lwIP. lwIP оптимизтировался слабо и мало.
--------------------
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|