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