Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI-шина на MegaCore pci_t32 от Altera
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Волощенко
Кто смог сделать для PCI-шины на MegaCore pci_t32 от Altera, команды Burst-пересылок для режима Target на процессоре типа Pentium-4. В User Guide на ядро PCI MegaCore Function version 1.0 December 1999, возможность пакетной пересылки в pci_t32 (target) указана на Figure 2 (p.86), аналогичное есть и для более свежих версий.
Обычные однословные пересылки осуществляются, но нам скорости уже не достаточно и есть необходимость ускорить обмен.
Вопросы:
1. В обычных пересылках в процессоре используются команды MOV (REP MOV). А какая команда используется в Burst-пересылках?
2. Нужно ли для этого дополнительно программировать внутренние регистры процессора?
Спасибо за ответ.
Harbour
1. Те же команды, в случае memory prefetch
2. Нет wink.gif

Burst транзакции - это функции чипсета/моста - например при дма перессылках или prefetch'ах. Со стороны проца (hw) управлять ими IMHO практически нельзя. При prefetch'ах мост сам должен инициировать burst, пока полностью не заполнит линейку кеша. При дма пересылках должон быть по идее соостветствующий параметр.
oval
1. Смотрите в сторону расширений системы команд типа SSE, MMX.

А вообщем, как заметил уважаемый Harbour, burst пересылками управляет мост (чипсет). Со стороны CPU этим можно управлять лишь косвенно: обращаясь по последовательным адресам, используя обращения в кэшируемые области адресов, используя SSE (MMX), конфигурируя области адресов с предвыборкой/отложенной записью и т. п.

P.S. Обычно, при проблемах с производительностью программных пересылок, прибегают к использованию контроллера DMA или организуют PCI-master в самом устройстве, который затем автономно занимается пересылкой данных.
Волощенко
Спасибо за ответы, но, как начинающий в данной тематике, хотел бы уточнить:
1. Ядро pci_t32 поддерживает Burst-транзакции, это так? Кто-то работал c ядром pci_t32 в этом режиме?
2. Заранее не известно, какой вид транзакции выполнится: Single-Cycle или Burst, процессор это сделает автоматически, исходя из цепочки команд, это так? Или есть возможность задавать каким-то образом одну из транзакций?
3. Или только так: Burst-транзакции нельзя сделать на процессоре и ядре pci_t32, а обеспечить более высокий темп обмена возможно, только применив ядро pci_mt32, и войдя в режим прямого доступа к памяти?
4. Есть ли источники, где бы можно почитать о частностях по данной проблематике?
hobgoblin
Цитата
1. Ядро pci_t32 поддерживает Burst-транзакции, это так? Кто-то работал c ядром pci_t32 в этом режиме?


Поддерживает, работал немножко.

Цитата
2. Заранее не известно, какой вид транзакции выполнится: Single-Cycle или Burst, процессор это сделает автоматически, исходя из цепочки команд, это так? Или есть возможность задавать каким-то образом одну из транзакций?


Неизвестно. У меня одна и та же программа с одним и тем же драйвером на одном компе для функции WriteFile выдавала burst-ы длиной до 8-и DWORD, а на другом - только одиночные транзакции. В чем загвоздка, я разбираться не пробовал - задачи выжать по максимуму тогда не стояло, а потом перешел на mt32. Объединение транзакций в burst осуществляет мост.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.