КОМПЬЮТЕРНОЕ ЖЕЛЕЗО
HARDWARE FOR PC

Шины и карты расширения

Буферизации чтения у процессора, естественно, нет (операцию чтения можно считать выполненной лишь по получению реальных данных), и даже стро¬ковые инструкции будут порождать одиночные циклы. Однако у современных процессоров имеются возможности генерации запросов чтения более 4 байт. Для этого можно использовать инструкции загрузки данных в регистры ММХ (8 байт) или ХММ (16 байт), а из них уже выгружать данные в ОЗУ (которое работает много быстрее устройств PCI).
Строковые инструкции ввода-вывода (INSW, OUTSW с префиксом повторения REP), используемые для программированного ввода-вывода блоков данных (PIO), порождают серии одиночных транзакций, поскольку все данные блока относятся к одному адресу PCI.
Посмотреть, каким образом происходит обращение к устройству, несложно при наличии осциллографа: в одиночных транзакциях сигнал FRAME* активен всего 1 такт, в пакетных он длиннее. Число фаз данных в пакете соответствует числу тактов, во время которых активны оба сигнала IRDY* и TRDY*.
Стремиться к пакетизации транзакций записи стоит только в том случае, если устройство PCI поддерживает пакетные передачи в ведомом (target) режиме. Если это не так, то попытка пакетизации приведет даже к небольшой потере производи¬тельности, поскольку транзакция будет завершаться по инициативе ведомого уст¬ройства (сигналом STOP*), а не инициатора обмена, на чем теряется один такт шины. Так, к примеру, можно наблюдать, как при записи массива в память PCI, выполня¬емой директивой языка высокого уровня, устройство среднего быстродействия (вводящее лишь 3 такта ожидания готовности) принимает данные каждые 7 тактов,

188
Глава 6. Шины и карты расширения
что при частоте 33 МГц и разрядности 32 бита дает скорость 33x4/7=18,8 Мбайт/с. Здесь 4 такта занимает активная часть транзакции (от сигнала FRAME* до снятия сигнала IRDY*) и 3 такта паузы. То же устройство по инструкции MOVSD принимает данные каждые 8 тактов шины (33x4/8=16,5 Мбайт/с). Эти данные — результат наблюдения работы PCI-ядра, выполненного на основе микросхемы FPGA фир¬мы Altera, не поддерживающего пакетные транзакции в ведомом режиме. То же самое устройство при чтении памяти PCI работает существенно медленнее — ин¬струкцией REP MOWSW с него удалось получать данные каждые 19-21 тактов шины (скорость 33x4/20=6,6 Мбайт/с). Здесь сказывается и большая задержка устройства (оно выдает данные лишь в 8 такте после появления сигнала FRAME*), и то, что процессор начинает следующую пересылку лишь дождавшись данных от преды¬дущей.

Hosted by uCoz