Jump to content

    
Sign in to follow this  
FLTI

Cкорость пересылок PCI Bus Master.

Recommended Posts

Имеется плата с ПЛИС на борту.

К выходу ПЛИС подключен ЦАП.

Внутри ПЛИС есть внутренняя память , которую можно использовать как FIFO.

В ПЛИС требуется залить контроллер PCI Bus Master , который мог бы пересылать данные из памяти на материнской плате, через ПЛИС в ЦАП через DMA.

 

Вопрос:

Какую максимальную скорость пересылок можно достичь в PCI Bus Master?

Хотелось бы 40-50Мб/с.

Share this post


Link to post
Share on other sites

Теоретический предел 128 мб/сек. Практически, на плате быстрого АЦП, мы промеряли скорость и получили 90-100 мб/с - там вроде стоит басмастерный чип от PLX Tech. В Вашем случае скорость может быть ограничена

1. IP ядром, которое будет залито,

2. скоростью драйвера, который настраивает и инициализирует передачу

Share this post


Link to post
Share on other sites

При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

Share this post


Link to post
Share on other sites
При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС  в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

 

Желаемую скорость Вы получите, однако не забудьте поставить буфер между контроллером PCI и ЦАПом, т.к. для ЦАПа нужен непрерывный равномерный поток данных, а PCI работает с пакетами. Данные в буфер закачиваются по мере его опустошения (чтения).

Share this post


Link to post
Share on other sites
При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС  в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

 

Для PCI шины транзакции записи и чтения равноправны (единственное отличие - после gервого такта, в котором передается команда и адрес, добавляется idle такт, если происходит изменение направления передачи данных). Если Ваше устройство не успевает принимать данные, то оно должно вставлять такты ожидания - но это проблема не шины, а Вашего железа.

 

Если Вас беспокоит, сможет ли отдать современная DDR память поток 128 Мб/с, то думаю, что да, там теоретический предел несколько Гб/с. Возможно, будут несколько тактов задержки в начале передачи из-за задержки первой выборки из памяти. Конкретных экспериментальных данных у меня нет и могу только предполагать.

 

Если одновременно будет работать другое busmaster устройство (например винчестер), то пропускная способность PCI будет делиться. Тут возможны варианты.

 

Если скорость чтения для Вас критична, то единственный выход - поставить локальную память на устройство.

Share this post


Link to post
Share on other sites

У меня в устройстве получается что чтение и запись в режиме DMA оказываются не равноправны. Т.е. поток данных непрерывно пишется или читается, скорость небольшая ~10Мб/с чтение + 10Мб/с запись.

При этом запись происходит нормально, т.е. данные не теряются если активно использовать другие устройства, например перекачка данных по сети на винт, там тоже данные пишутся по ДМА.

 

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

 

Хотя у нас чтение почти не используется, так что это не страшно :)

Share this post


Link to post
Share on other sites

Как показывает практика, требуемую скорость передачи данных (40-50 МБ/с) вы получите без чересчур больших проблем. К примеру, одна из наших плат показывает пропускную способность по PCI в районе 45 МБ/с при работе в двух направлениях и заложенной длине пакетов не более 16. Увеличить эту длину при необходимости - не проблема. Конечно, необходимо будет предусмотреть буферизацию данных в устройстве, чтобы не вносить дополнительных вынужденных задержек.

 

Разница между операциями записи и чтения по эффективности для пакетных транзакций (а только о таких в данном случае и может идти речь) незначительна в сравнении с одиночными пересылками. Во-первых, дополнительные такты могут потребоваться только в самом начале пакетной операции - все последующие, кроме первой, фазы передачи данных в пределах пакета обычно проходят без дополнительных задержек (1 такт на слово). Во-вторых, при приличном потоке данных (а 40-50 МБ/с - это вполне приличный поток) с весьма высокой степенью вероятности пакетные транзакции данного устройства в течение длительных промежутков времени не будут перемежаться транзакциями других устройств на шине (из них нас здесь волнуют, в первую очередь, операции чтения из памяти), т.е., во второй и последующих пакетных транзакциях даже первая фаза передачи данных будет проходить без дополнительной задержки. Это возможно благодаря тому, что сколько-нибудь приличный современный Host Bridge обычно сконфигурирован на работу в режиме опережающего чтения, и дополнительное задержка видна устройствам на PCI только в тот момент, когда резко меняется адрес чтения.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this