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

А потянет он (этот чип) такой поток? Младшие, вроде, не тянули, по некоторым данным, например, W3100 осиливает максимум 30-40 Мбит/сек. Сколько вообще этот чип реально может потянуть, есть у кого-нибудь практические результаты?
Aprox
Цитата(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 в качестве хоста, чтобы обойти ограничения традиционных микроконтроллеров.
psL
Вообщето у W5100 минимальное время цикла записи 70 ns
zltigo
Цитата(psL @ Nov 12 2007, 14:40) *
Вообщето у W5100 минимальное время цикла записи 70 ns

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


Это, по-видимому, при обмене по TCP. UDP должно быть побыстрее.
zltigo
Цитата(Aprox @ Nov 12 2007, 18:35) *
Это, по-видимому...

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


Странно, я считал иначе. Если в мануале на W5100 представлен цикл записи 8-ми битового значения за минимум 80 нС, то максимальная скорость загрузки чипа будет 8бит/0,08 мкс = 100 Мбит/Сек. Если использовать пакеты максимально возможного размера, то за-за служебных посылок скорость уменьшится незначительно, т.е. вполне реально выйти где-то на 80 Мбит/Сек. Очень хотелось бы знать, где я неправ в своих оценках, прежде чем начинать дела практически.
Epikur
Нет.
Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.
А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.

Зы. Сталкивался ли кто-нибудь с недокументированными глюками W3100A, такими, что в W3150 или W5100 они были устранены или обойдены?
Aprox
Цитата(Epikur @ Nov 15 2007, 16:38) *
Нет.
Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.
А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.


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

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

Какое-то маниакальное желание обмануть самого себя sad.gif Зачем?
Aprox
Цитата(zltigo @ Nov 22 2007, 11:29) *
Какое-то маниакальное желание обмануть самого себя sad.gif Зачем?

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

При таком подходе, тогда Вас еще ждет еже большое удивление, когда будете пытаться выжимать даже на приличном MAC желаемые 80Mbit из 100Mbit Ethernet.
Epikur
Aprox
>> Вы же не взялись обьяснить, почему реальный предел 25Mbit/sec для визнета, когда они пишут Ethernet 100Mbit/s
Поправочка: они пишут "10/100 Base-T Ethernet (Auto detection)". То бишь, совместим с электрическим интерфейсом стобитной сетки. К реальной скорости работы это имеет третье отношение.

zltigo
Это должно быть не сложно, если у управляющего процессора есть DMA (а он практически всегда есть) и интерфейс связи с процессором достаточно скоростной. Сам видел, как Blackfin с микролинуском в связке с SMSC маком выжимал почти 11 мбайт/сек на TCP.
Aprox
Цитата(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
Раз уж тема называется так, то и я спрошу. Заметил одну особенность (глюк) в работе W5100. Реализован поиск своих устройств в сети по UDP путём выпихивания в сеть широковещательных пакетов. Соответственно если устройство своё, то оно отвечает вполне конкретной последовательностью инфы. Так вот, при работе через старые хабы 10-мегабитные у W5100, при получении широковещательных пакетов, возникает прерывание IP-конфликта... С чем это связано и как с этим бороться? Может кто-то подскажет.
P.S. По TCP на десятке работает отлично. На сотне вообще во всех режимах работает, при эмуляции десятки на 100-мегабитной карточке глюк не наблюдается, только на старых от рождения 10-мегабитных свичах.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.