Jump to content

    

Вопрос про W5100

Стоит задача передавать по Ethernet-100 поток данных в PC и из него. При этом требуется скорость передачи порядка 80 Мбит в сек. Хочется использовать для этого максимально готовый W5100 в связке с FPGA. Основная идея - попытаться задействовать все четыре сокета внутри W5100 для предачи на один Destination адрес. Т.е. производить заполнение памяти данными на отправку в одном сокете пока другой сокет занят отправкой предыдущего пакета. По идее, должна как-минимум удвоиться производительность.

Отсюда вопрос- не знает ли кто непреодолимых препятствий на пути реализации идеи параллельного использования сокетов в W5100 для одной цели?

И второй вопрос- возникли подозрения, что чип W5100 содержит внутри процессор последовательного дейстия с жесткой программой один на все сокеты. А это может означать, что закачивать ему в память данные на отправку, пока другой сокет занят передачей может не получиться. Подозрения могут быть и напрасными. Кто-нибудь знает хардварные ограничения чипа, или сам игрался уже в этом напраквлении- откликнитесь пожалуйства

Share this post


Link to post
Share on other sites
Стоит задача передавать по Ethernet-100 поток данных в PC и из него. При этом требуется скорость передачи порядка 80 Мбит в сек. Хочется использовать для этого максимально готовый W5100 в связке с FPGA.

А потянет он (этот чип) такой поток? Младшие, вроде, не тянули, по некоторым данным, например, W3100 осиливает максимум 30-40 Мбит/сек. Сколько вообще этот чип реально может потянуть, есть у кого-нибудь практические результаты?

Share this post


Link to post
Share on other sites
А потянет он (этот чип) такой поток? Младшие, вроде, не тянули, по некоторым данным, например, 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 в качестве хоста, чтобы обойти ограничения традиционных микроконтроллеров.

Share this post


Link to post
Share on other sites

Вообщето у W5100 минимальное время цикла записи 70 ns

Share this post


Link to post
Share on other sites
Вообщето у W5100 минимальное время цикла записи 70 ns

И озвучена максимальная скорость обмена "Up to 25Mbps throughput at application layer"

Share this post


Link to post
Share on other sites
И озвучена максимальная скорость обмена "Up to 25Mbps throughput at application layer"

 

Это, по-видимому, при обмене по TCP. UDP должно быть побыстрее.

Share this post


Link to post
Share on other sites
Это, по-видимому...

:) :) :) не надо себя пытаться обмануть.

Это то, что максимум, что Ваш Application через MCU Interface сможет запихнуть в W5100.

Share this post


Link to post
Share on other sites
:) :) :) не надо себя пытаться обмануть.

Это то, что максимум, что Ваш Application через MCU Interface сможет запихнуть в W5100.

 

Странно, я считал иначе. Если в мануале на W5100 представлен цикл записи 8-ми битового значения за минимум 80 нС, то максимальная скорость загрузки чипа будет 8бит/0,08 мкс = 100 Мбит/Сек. Если использовать пакеты максимально возможного размера, то за-за служебных посылок скорость уменьшится незначительно, т.е. вполне реально выйти где-то на 80 Мбит/Сек. Очень хотелось бы знать, где я неправ в своих оценках, прежде чем начинать дела практически.

Share this post


Link to post
Share on other sites

Нет.

Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.

А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.

 

Зы. Сталкивался ли кто-нибудь с недокументированными глюками W3100A, такими, что в W3150 или W5100 они были устранены или обойдены?

Share this post


Link to post
Share on other sites
Нет.

Визнеты работают более-менее стабильно только тогда, когда для отправки дожидаешься полного освобождения буфера, прежде чем запихнуть туда пакет. Если бы можно было дать команду на отправку пакета и тут же начать заливать в него новый, то максимальная производительность бы и достигалась. А вместо этого он начинает сбоить.

А так получается: время опроса/обновления всех регистров +время загрузки пакета +время отправки пакета на MAC-уровне +внутричиповое обновление регистров - всё это делить производительность раза в три..четыре.

 

Внутри чипа я видел 4 сокета, каждый со своим отдельным буфером. Пока из буфера одного сокета выгружается пакт в сеть, почему нельзя в это же самое время загружать следующий пакет в буфер другого сокета? Такая параллельная операция тоже приведет к сбоям и зависаниям визнета?

Share this post


Link to post
Share on other sites

Aprox

Не знаю. Как это ни удивительно, но я использую визнет в режиме MAC.

Share this post


Link to post
Share on other sites
Aprox

Не знаю. Как это ни удивительно, но я использую визнет в режиме MAC.

Кажется я понял, где ошибаюсь. Hет в визнете независимых буферов на каждый слот. Физически все буфера размещены в одной памяти, только по разным адресам. Это означает, что обслуживаться 4-ре сокета могут только поочереди, последовательно. Отсюда, скорей всего, и максимальная производительность визнета = 100/4 = 25 Mbit/sec Жаль, придется отказаться от этого чипа.

Share this post


Link to post
Share on other sites

>> Отсюда, скорей всего, и максимальная производительность визнета = 100/4 = 25 Mbit/sec.

Нет, дело где-то в другом. Даже когда используешь только один канал, и буфер выделяешь только для него, а остальные каналы отключены, производительность не превышает 25 мбит.

Share this post


Link to post
Share on other sites
Кажется я понял.....

Какое-то маниакальное желание обмануть самого себя :( Зачем?

Share this post


Link to post
Share on other sites
Какое-то маниакальное желание обмануть самого себя :( Зачем?

Hе понял про "обмануть". Просто не хочется тратить время бестолку. Вот, и пытаюсь разобраться заранее, откуда такие цифры информационной скорости, когда они должны быть по-расчетам совсем другими. Вы же не взялись обьяснить, почему реальный предел 25Mbit/sec для визнета, когда они пишут Ethernet 100Mbit/s ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this