Полная версия этой страницы:
Вопрос про W5100
Стоит задача передавать по Ethernet-100 поток данных в PC и из него. При этом требуется скорость передачи порядка 80 Мбит в сек. Хочется использовать для этого максимально готовый W5100 в связке с FPGA. Основная идея - попытаться задействовать все четыре сокета внутри W5100 для предачи на один Destination адрес. Т.е. производить заполнение памяти данными на отправку в одном сокете пока другой сокет занят отправкой предыдущего пакета. По идее, должна как-минимум удвоиться производительность.
Отсюда вопрос- не знает ли кто непреодолимых препятствий на пути реализации идеи параллельного использования сокетов в W5100 для одной цели?
И второй вопрос- возникли подозрения, что чип W5100 содержит внутри процессор последовательного дейстия с жесткой программой один на все сокеты. А это может означать, что закачивать ему в память данные на отправку, пока другой сокет занят передачей может не получиться. Подозрения могут быть и напрасными. Кто-нибудь знает хардварные ограничения чипа, или сам игрался уже в этом напраквлении- откликнитесь пожалуйства
Цитата(Aprox @ Nov 9 2007, 19:01)

Стоит задача передавать по Ethernet-100 поток данных в PC и из него. При этом требуется скорость передачи порядка 80 Мбит в сек. Хочется использовать для этого максимально готовый W5100 в связке с FPGA.
А потянет он (этот чип) такой поток? Младшие, вроде, не тянули, по некоторым данным, например, W3100 осиливает максимум 30-40 Мбит/сек. Сколько вообще этот чип реально может потянуть, есть у кого-нибудь практические результаты?
Цитата(dxp @ Nov 9 2007, 17:12)

А потянет он (этот чип) такой поток? Младшие, вроде, не тянули, по некоторым данным, например, W3100 осиливает максимум 30-40 Мбит/сек. Сколько вообще этот чип реально может потянуть, есть у кого-нибудь практические результаты?
Я игрался до этого с ColdFire-2 c Ethernet контроллером на борту. Максимум, чего я добился по производительности отправки UDP пакетов- это 29 Mbit/s . Исследовал, что ограничивает скорость и выяснил- до 2/3 времени уходит на софтовую подготовку данных и оформление UDP пакетов. Т.е. проблема реальной пропускной способности канала зависит от хоста. Думаю, что и в случае с W5100 цифры 30-40 Мбит/сек вытекают из скорости работы хост-контроллера по загрузке буферов чипа. Сам же чип, его скоростные данные по чтению/ записи в память вполне способен переварить загрузку и выгрузку пакетов со скоростью не намного меньше 100 Mbit/s, если с учетом служебных команд. Hо, например, микроконтроллер ATmega128, который поставлен в известной EB от WIZNET, может писать и читать во внешнюю память намного медленнее. Я поэтому и нацелился на FPGA в качестве хоста, чтобы обойти ограничения традиционных микроконтроллеров.
Вообщето у W5100 минимальное время цикла записи 70 ns
zltigo
Nov 12 2007, 13:06
Цитата(psL @ Nov 12 2007, 14:40)

Вообщето у W5100 минимальное время цикла записи 70 ns
И озвучена максимальная скорость обмена "Up to 25Mbps throughput at application layer"
Цитата(zltigo @ Nov 12 2007, 16:06)

И озвучена максимальная скорость обмена "Up to 25Mbps throughput at application layer"
Это, по-видимому, при обмене по TCP. UDP должно быть побыстрее.
zltigo
Nov 12 2007, 16:58
Цитата(Aprox @ Nov 12 2007, 18:35)

Это, по-видимому...

не надо
себя пытаться обмануть.
Это то, что максимум, что Ваш Application через MCU Interface сможет запихнуть в W5100.
Цитата(zltigo @ Nov 12 2007, 19:58)


не надо
себя пытаться обмануть.
Это то, что максимум, что Ваш Application через MCU Interface сможет запихнуть в W5100.
Странно, я считал иначе. Если в мануале на W5100 представлен цикл записи 8-ми битового значения за минимум 80 нС, то максимальная скорость загрузки чипа будет 8бит/0,08 мкс = 100 Мбит/Сек. Если использовать пакеты максимально возможного размера, то за-за служебных посылок скорость уменьшится незначительно, т.е. вполне реально выйти где-то на 80 Мбит/Сек. Очень хотелось бы знать, где я неправ в своих оценках, прежде чем начинать дела практически.
Epikur
Nov 15 2007, 13:38
Нет.
Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.
А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.
Зы. Сталкивался ли кто-нибудь с недокументированными глюками W3100A, такими, что в W3150 или W5100 они были устранены или обойдены?
Цитата(Epikur @ Nov 15 2007, 16:38)

Нет.
Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.
А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.
Внутри чипа я видел 4 сокета, каждый со своим отдельным буфером. Пока из буфера одного сокета выгружается пакт в сеть, почему нельзя в это же самое время загружать следующий пакет в буфер другого сокета? Такая параллельная операция тоже приведет к сбоям и зависаниям визнета?
Epikur
Nov 17 2007, 20:25
Aprox
Не знаю. Как это ни удивительно, но я использую визнет в режиме MAC.
Цитата(Epikur @ Nov 17 2007, 23:25)

Aprox
Не знаю. Как это ни удивительно, но я использую визнет в режиме MAC.
Кажется я понял, где ошибаюсь. Hет в визнете независимых буферов на каждый слот. Физически все буфера размещены в одной памяти, только по разным адресам. Это означает, что обслуживаться 4-ре сокета могут только поочереди, последовательно. Отсюда, скорей всего, и максимальная производительность визнета = 100/4 = 25 Mbit/sec Жаль, придется отказаться от этого чипа.
Epikur
Nov 22 2007, 08:23
>> Отсюда, скорей всего, и максимальная производительность визнета = 100/4 = 25 Mbit/sec.
Нет, дело где-то в другом. Даже когда используешь только один канал, и буфер выделяешь только для него, а остальные каналы отключены, производительность не превышает 25 мбит.
zltigo
Nov 22 2007, 08:29
Цитата(Aprox @ Nov 21 2007, 11:17)

Кажется я понял.....
Какое-то маниакальное желание обмануть самого себя

Зачем?
Цитата(zltigo @ Nov 22 2007, 11:29)

Какое-то маниакальное желание обмануть самого себя

Зачем?
Hе понял про "обмануть". Просто не хочется тратить время бестолку. Вот, и пытаюсь разобраться заранее, откуда такие цифры информационной скорости, когда они должны быть по-расчетам совсем другими. Вы же не взялись обьяснить, почему реальный предел 25Mbit/sec для визнета, когда они пишут Ethernet 100Mbit/s ?
zltigo
Nov 22 2007, 13:56
Цитата(Aprox @ Nov 22 2007, 15:50)

когда они пишут Ethernet 100Mbit/s ?
При таком подходе, тогда Вас еще ждет еже большое удивление, когда будете пытаться выжимать даже на приличном MAC желаемые 80Mbit из 100Mbit Ethernet.
Epikur
Nov 23 2007, 09:03
Aprox
>> Вы же не взялись обьяснить, почему реальный предел 25Mbit/sec для визнета, когда они пишут Ethernet 100Mbit/s
Поправочка: они пишут "10/100 Base-T Ethernet (Auto detection)". То бишь, совместим с электрическим интерфейсом стобитной сетки. К реальной скорости работы это имеет третье отношение.
zltigo
Это должно быть не сложно, если у управляющего процессора есть DMA (а он практически всегда есть) и интерфейс связи с процессором достаточно скоростной. Сам видел, как Blackfin с микролинуском в связке с SMSC маком выжимал почти 11 мбайт/сек на TCP.
Цитата(Epikur @ Nov 23 2007, 12:03)

...почему реальный предел 25Mbit/sec для визнета, когда они пишут Ethernet 100Mbit/s
Поправочка: они пишут "10/100 Base-T Ethernet (Auto detection)". То бишь, совместим с электрическим интерфейсом стобитной сетки. К реальной скорости работы это имеет третье отношение.
Это понятно, что всегда меньше. Однако, цифра 25Mbit/sec -это реальный максимум именно для визнета? Некий органический предел для визнета?
Цитата
zltigo
Это должно быть не сложно, если у управляющего процессора есть DMA (а он практически всегда есть) и интерфейс связи с процессором достаточно скоростной. Сам видел, как Blackfin с микролинуском в связке с SMSC маком выжимал почти 11 мбайт/сек на TCP.
Я работал с ColdFire-2, у которого тоже DMA и встроенный адаптер Ethernet. Убедился, что основное время занимает программно реализуемый стек TCP/IP. 2/3 времени уходило на подготовку процессором в памяти пакетов к отправке. Hикакое DMA здесь не помогает. Та же ситуация по-видимому для всех случаев реализации TCP/IP стека программным способом. Сейчас я практически созрел, чтобы реализовать его аппаратно на FPGA, благо прецеденты имеются.
H O--O K
Dec 24 2007, 12:21
Раз уж тема называется так, то и я спрошу. Заметил одну особенность (глюк) в работе W5100. Реализован поиск своих устройств в сети по UDP путём выпихивания в сеть широковещательных пакетов. Соответственно если устройство своё, то оно отвечает вполне конкретной последовательностью инфы. Так вот, при работе через старые хабы 10-мегабитные у W5100, при получении широковещательных пакетов, возникает прерывание IP-конфликта... С чем это связано и как с этим бороться? Может кто-то подскажет.
P.S. По TCP на десятке работает отлично. На сотне вообще во всех режимах работает, при эмуляции десятки на 100-мегабитной карточке глюк не наблюдается, только на старых от рождения 10-мегабитных свичах.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.