Цитата(AlexandrY @ Mar 14 2008, 00:40)

Решил я тут проверить эти утверждения.
Картина немного не такая.
Я сделал чистый эксперимент и вообще не использовал програмную поддержку для передачи данных в Ethernet.
Я сделал цепочку из 1000 дескрипторов для DMA и запускал пересылку при разных длинах пакетов.
Причем пересылались данные из внутренней RAM.
Привожу графики реальных замеров.

Сегодня я тоже решил проверить реально работу своего варианта на коротких пакетах. Действительно, для коротких пакетов я ошибся в оценках. Для пакетов в 64 байта у меня получилось даже хуже, чем в вашем эксперименте. Если данные брались из SRAM, то 55Mbit/s. Если MAC-DMA брал пакет из EMI, то 59Mbit/s. Мои результаты хуже по производительности потому, что я использовал всего один дескриптор и программу для периодического его старта. Это программная часть дает нагрузку в виде дополнительных 3.3 мкс к чистому времени отсылки короткого пакета 5.1мкс. Как видно, КПД сети действительно около 60% на пакетах в 64 байта. Hо ситуация еще хуже, потому что я обнаружил PAUSE пакеты, которые вдруг стал посылать PC, и именно когда короткие пакеты. Игнорировать такие сигналы чревато потерей пакетов.
Цитата
Как видно скорость можно получить и 98 Mbit/s
В плюс также полное отсутствие ошибок при приеме пакетов на PC.
Но при коротких пакетах сделать 90 Mbit не реально даже из внутренного RAM
Хуже того, при коротких пакетах начинаются флуктуации, вероятно обусловленные коллизиями на AHB шине. Т.е. шина у STR91 явно не предназначена для толстого трафика.
Флуктуации объясняются скорей всего именно PAUSE пакетами, компьютер пропускает часть входящего трафика. На пакетах максимальной длины я PAUSE пакеты и флуктуации не обнаружил. И скорость передачи данных, даже в моем однодискрипторном варианте и участии короткой программы, равна 96Mbit/s. Вывод- будем работать с большими пакетами. Тем более, что никаких требований с практической стороны на размер пакета в моем случае не существует.
Цитата
Еще надо помнить, что внешний порт у STR91 идет через шины APB и AHB, т.е. этот трафик конфликтует со всеми другими каналами DMA и обращениями к периферии и пропускная способность ограничена где-то 20 Mbyte/s т.е. критическая граница слишком близко.
По опыту работы в embedded system у меня сложилось впечатление, что для большинства практических конструкций необходим только один скоростной канал, требования по производительности к остальной периферии незначительны. Hапример, трудно ожидать, чтобы устройство одновременно качало данные и по Ethernet и по USB-2. Именно поэтому замечание о перегрузке шин APB и AHB по DMA-периферии носит скорей академический характер из сферы компьютеров общего назначения.
Цитата
Также серьезно тормозится выполнение програмного кода. Этот анализ есть на моем сайте.
Правильно, обязательно будет тормозиться, если за данными MAC-DMA обращается к SRAM. Потому что через AHB лезет на шину, связывающую ядро ARM с памятью. В моем случае MAC-DMA обращается за данными к внешней шине EMI, которая также принадлежит AHB. Т.е. по-идее процесс обмена не выходит за рамки AHB и никого вокруг тормозить не должен. Практически это мною не проверялось. И и наверное не буду проверять за второстепенностью вопроса.
Цитата
Ну и на конец серьезное приложение на STR91 обязательно потребует операционки, а там такие финты с DMA не пройдут, будет много накладных для обеспечения межзадачной синхронизации.
"Обязательность операционки" относится к разряду религиозных канонов. В embedded совсем не очевидно. Как-то удавалось всегда обходится без RTOS, хотя реальные приложения никак не могу назвать простенькими. Только один раз сподобился на использование uCOS-II и только потому, что она шла в составе пакета разработки, куда входил также TCP/IP стек и WEB-сервер. Стек был заточен под операционку и поэтому пришлось поневоле. Теперь же, поскольку никаких TCP/IP нет, то однозначно отпала всякая необходимость и в операционках.
Цитата
iMX в этом плане значительно лучше, у него и системные шины быстрее и внеший порт минимум в 4-е раза быстрее и есть коммутатор на внутренней шине чтобы разделять потоки данных.
Зато возникает много конструктивных и технологических проблем: BGA корпус, многослойная плата, Flash снаружи, DDRAM снаружи, разводка шин с тактом 200MHz, что-нибудь обязательно еще в довесок этим 200MHz.... Hет, я предпочитаю однокристальные варианты.