Комментарии 28
Хорошая статья! Ждем еще! :)
Пытаюсь сам на ПЛИС программировать. Всегда неудачно. Даже VGA не смог завести :(
При данных измерениях принято что 1 Мбайт это 1024 кбайт, а 1 кбайт это 1024 байта.
забыли сказать, что 1 байт при измерении считается = 8 бит.
Однажды у нас на работе разгорелась большая дискуссия — а сколько же битов в байте. Мнения были разные.
Не все так однозначно… при последовательной передаче в USB и PCIe по дифференциальным парам применяется так называемое «8b/10b encoding». Это позволяет в среднем избавиться от постоянной составляющей в сигнале. Так что обычно байт передается за 10 бит. И значит, что скорость передачи полезной информации немного меньше, чем физическая скорость передачи.
Наверное имелись ввиду приставки «киби» и «миби». Кстати, если позанудствовать окончательно, то в случае «в 1кб 1024 байта» приставку «к» надо писать с заглавной буквы
НЛО прилетело и опубликовало эту надпись здесь
Это крайне интересно. А работает?
110 кбайт внутренней памяти для современных ПЛИС — совсем небольшое количество. Для вашего кристалла — меньше 4% от доступной.
Дмитрий, спасибо, что рассказываете о своих разработках и достижениях.
Что требовалось от Операционной Системы, чтобы это всё заработало (приходилось ли драйвер писать/модифицировать для этого)? Как это сейчас видится в системе? Как два /dev/ устройства? Как данные попадают в юзерспейс?
Для сообщения о том, что дескриптор был обработан, используется прерывание или поллинг?
Вы в Чипскопе видели, что обмен по PCIe встает на 10 мкс? Или 10 мкс это суммарное время простоя за измеряемую одну минуту? Какие еще PCIe устройства подключены были к CPU? Пробовали ли их отключать?
Что требовалось от Операционной Системы, чтобы это всё заработало (приходилось ли драйвер писать/модифицировать для этого)? Как это сейчас видится в системе? Как два /dev/ устройства? Как данные попадают в юзерспейс?
Для сообщения о том, что дескриптор был обработан, используется прерывание или поллинг?
Задержки возникают из-за работы других устройств. Величина задержки может быть разной, это может быть 5 – 10 мкс, а может и больше.
Вы в Чипскопе видели, что обмен по PCIe встает на 10 мкс? Или 10 мкс это суммарное время простоя за измеряемую одну минуту? Какие еще PCIe устройства подключены были к CPU? Пробовали ли их отключать?
Разумеется драйверы для наших устройств мы пишем. Часть из них опубликована на GutHub.
Обмен данными идёт в режиме Scatter-gather, конечно используется прерывание. Причём особых требований к времени обработки прерывания нет. Задержку в 10 мкс я видел на осциллографе, на контрольную точку были выведены внутренние сигналы из ПЛИС. В данных тестах в системе только обычные устройства — видеоадаптер, диск. Отключать не пробовал.
Обмен данными идёт в режиме Scatter-gather, конечно используется прерывание. Причём особых требований к времени обработки прерывания нет. Задержку в 10 мкс я видел на осциллографе, на контрольную точку были выведены внутренние сигналы из ПЛИС. В данных тестах в системе только обычные устройства — видеоадаптер, диск. Отключать не пробовал.
Однако доступные ПЛИС имеют HARDWARE контроллер только для PCIe v3.0 x8; Реализации SOFT IP Core есть, но очень дорогие. Но выход есть.
ПЛИС Virtex 7 VX330T имеет два контроллера PCI Express v3.0 x8; Очевидным решением является размещение коммутатора, который имеет на стороне разъёма x16 и две шины x8 которые подключены к ПЛИС.
Каким образом происходит конкурирование устройства в таком режиме? Ведь когда LTSSM = Configuration, Endpoint должен сообщить свою шину шины, а как я понимаю, ширина шины у HARDWARE контроллера может быть не больше 8?
Спасибо! Отличная статья! А как насчет области применения, например, в обработке больших данных? Планируется ли реализовать в этой связке 10/40 Gigabit Ethernet?
По пропускной способности это 100G Ethernet, Если заказчика найдём, то сделаем.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Реализация PCI Express v3.0 x16 на ПЛИС Virtex 7