Чтение онлайн

на главную

Жанры

Шины PCI, USB и FireWire

Гук Михаил Юрьевич

Шрифт:

Транслируя транзакции чтения памяти (как отложенные запросы), мост в некоторых случаях может использовать предвыборку (prefetch, чтение про запас) с целью ускорения работы с памятью. Выполняя предвыборку, мост рискует считать из источника данных больше, чем инициатор заберет от него в данной транзакции. В фазе завершения транзакции инициатором лишние данные в буфере моста проще всего аннулировать, поскольку до возможного последующего востребования в их реальном источнике они могут быть уже модифицированы. Более сложный мост может отслеживать и эти изменения, аннулируя лишь модифицированные данные. Обращения командами обычного чтения памяти разрешают мосту считать только точно затребованное количество данных. При этом возможности ускорения передач меньше, но не возникнет побочных эффектов от лишних чтений. Лишние чтения совершенно недопустимы для регистров ввода-вывода, отображенных на память. Например, чтение управляющих регистров может изменять их состояние; лишнее (с

неиспользуемым результатом) чтение регистров данных может привести к потере данных. Мост может смело выполнять предвыборку, когда отрабатывает запросы с командами чтения строк и множественного чтения, транслируемые в любом направлении. Применивший эти команды мастер отвечает за то, что для адресованных областей предвыборка допустима. Если у моста есть регистры, описывающие предвыбираемую память, то транзакции с командами простого чтения с первичного интерфейса, обращенные к предвыбираемой памяти на вторичном интерфейсе, при трансляции могут преобразовываться в команды чтения строк или множественного чтения. Мост может предположить также, что все транзакции к памяти с вторичного интерфейса имеют устройством назначения оперативную память и, следовательно, допускают предвыборку. Однако мост должен иметь специальный бит, запрещающий преобразование команд и предвыбор-ку по этому предположению («слепая» предвыборка может порождать проблемы взаимодействия ПО и аппаратуры).

Отправленные записи

Для транзакций записи в память, находящуюся по другую сторону моста, мост должен производить отправленную запись (posted write). При этом адрес и данные записи принимаются в буферы моста, и для инициатора транзакция завершится раньше, чем данные дойдут до реального получателя. Мост выполнит их доставку в удобное для другой стороны время, причем эта доставка может выполняться и не за одну транзакцию, инициированную уже мостом. Конечно, если мост не успевает освободить свои буферы отправленной записи (их размер ограничен), то ему придется на некоторые транзакции записи в память отвечать условием «повтор» (Retry). Однако это не будет отложенной транзакцией – запросы на запись в память в очередь отложенных транзакций мост не ставит. Для отправленных записей у моста имеются отдельные буферы. Отправленная запись в общем случае применима только к памяти. Записи в порты ввода-вывода отправлять имеет право только главный мост, и то только для транзакций, инициированных центральным процессором. Запись в конфигурационное пространство отправлена быть не может.

Мосты могут преобразовывать транслируемые ими отправленные записи с целью оптимизации пропускной способности шины и эффективности всей системы. Мост может, например, одну длинную пакетную транзакцию обычной записи в память MW (Memory Write) блока, не выровненного по границам строк кэша, разбить на три: MW от начала до ближайшей границы строки, MWI (Memory Write Invalidate, запись с инвалидацией) с одной или несколькими целыми строками кэша и MW от последней границы строки до конца блока. Кроме того, несколько последовательных транзакций записи могут объединяться в одну пакетную, в которой лишние записи могут блокироваться с помощью сигналов разрешения байтов. Например, последовательность одиночных записей двойных слов по адресам 0, 4, Ch может быть скомбинирована (write combining) в один пакет с начальным адресом 0, а во время третьей фазы данных (когда предполагается нетребуемый адрес 8) все сигналы C/BE[3:0]# будут пассивны. Записи отдельных байтов в определенных случаях могут быть объединены (byte merging) в одну транзакцию, это допустимо для предвыбираемой памяти. Так, например, последовательность записей байтов по адресам 3, 1, 0 и 2 может быть объединена в одну запись двойного слова, поскольку эти байты принадлежат одному адресуемому двойному слову. Комбинирование и объединение могут работать независимо (объединенные транзакции могут комбинироваться), однако эти преобразования не изменяют порядок следования физических записей в устройства. Наличие этих возможностей не обязательно – оно зависит от «ловкости» мостов. Цель преобразований – сократить число отдельных транзакций (каждая имеет по крайней мере одну «лишнюю» фазу адреса) и, по возможности, фаз данных. Однако мост не имеет права коллапсировать записи (write collapsing): если к нему поступает две и более отправленных записи с одинаковым стартовым адресом, он должен все их отработать.

Устройства PCI должны нормально отрабатывать комбинированные записи – если устройство не допускает комбинирования, оно неправильно спроектировано. Если устройство не допускает объединения байтов, то оно в описании своей памяти должно иметь обнуленным бит Prefetchable.

Особенности мостов PCI–X

Протокол шины PCI–X обеспечивает мостам возможность более эффективной работы. Детерминированность длины транзакции позволяет мосту более эффективно планировать трансляцию транзакций. К размеру буферов мостов предъявляются особые требования: для каждого типа очередей буферы должны вмещать не менее двух строк кэша. По отношению к мостам PCI мост PCI–X имеет ряд особенностей, отмеченных далее.

Интерфейсы моста PCI–X могут работать как в режиме PCI, так и PCI–X (Mode 1 или Mode 2). Мост должен определить возможности самого слабого устройства на своем вторичном интерфейсе и перевести эту шину (все устройства) в соответствующий режим (по протоколу и частоте синхронизации).

В случае соединения шин PCI и PCI–X мосту приходится преобразовывать некоторые команды, а также преобразовывать протокол. При трансляции транзакции с PCI на PCI–X мосту приходится формировать атрибуты транзакции. Для них номер шины берется из регистров моста, номера устройства и функции устанавливаются нулевыми. Значение счетчика байтов для команд обращения к памяти мост может «придумать» исходя из команды (для чтения и записи строк кэша длину можно вычислить из длины строки) или адреса (определить возможность предвы-борки).

Все одиночные (DWORD) транзакции, а также все пакетные чтения с шины PCI–X, адресуемые за мост, завершаются мостом как расщепленные транзакции (а не отложенные, как в PCI). Это более выгодное использование шины, поскольку инициатору (запросчику) транзакции не нужно периодически повторять запрос – ответ придет к нему сам, по мере своей готовности. Все пакетные записи в память отрабатываются как отправленные записи. Конечно, если у моста заполнены буферы запросов, то ему придется отложить транзакцию (условием Retry).

Порядок выполнения операций и синхронизация

Механизмы отправленных записей и отложенных транзакций нацелены на по возможности одновременное выполнение множества операций обмена в системе шин PCI. Каждый мост имеет буферы и очереди отправленных записей и отложенных транзакций для команд, транслируемых в обоих направлениях. При этом мост одновременно может выполнять обмены данными на обоих своих интерфейсах, будучи как инициатором, так и играя роль целевого устройства. Возникает вопрос о порядке выполнения транзакций, причем речь идет именно о порядке завершений (фаз, в которых происходит взаимодействие с конечным целевым устройством). Мосты подчиняются следующим основным правилам:

• отправленные записи, проходящие через мост в одном направлении, завершаются в устройстве назначения в том же порядке, что и на шине инициатора;

• транзакции записей, идущие через мост во встречных направлениях, по порядку друг с другом не увязываются;

• транзакция чтения выталкивает из моста все записи, отправленные с той же стороны до ее прихода. Перед тем как эта транзакция завершится на стороне ее инициатора (перед третьей фазой отложенной транзакции), она выталкивает из моста и все записи, отправленные с противоположной стороны до завершения данного чтения конечным целевым устройством. Таким образом, сохраняется очередность операций записи и чтения;

• мост (как целевое устройство) не будет принимать для посылки транзакцию записи в память до тех пор, пока он не завершит неблокированную транзакцию как ведущее устройство на той же шине.

Мосты сами по себе не предпринимают никаких действий для синхронизации транзакций и запросов прерываний. В то время как транзакции буферируются (могут на некоторое время «застрять» в очередях мостов), сигналы запросов прерывания (INTx#) транслируются мостом совершенно прозрачно (мост просто электрически соединяет эти линии первичного и вторичного интерфейса). Для корректной работы ПО с устройствами в общем случае требуется, чтобы все данные, посланные до выдачи сигнала прерывания, дошли до своих получателей. Для этого нужно разгрузить все буферы всех мостов, находящихся между устройством, выдавшим запрос прерывания, и его конечными партнерами по транзакциям. Программно этого легко достичь чтением любого регистра устройства – чтение через мост выгружает буферы. Возможен и аппаратный вариант: до посылки сигнала прерывания устройство выполняет чтение последних записанных им данных. С прерываниями MSI дело обстоит проще: сообщение MSI не может обогнать данные, ранее посланные этим устройством.

Одной из особенностей применения шины PCI с ее мостовыми соединениями является возможность действительно одновременного выполнения более одного обмена данными по непересекающимся путям – Concurrent PCI Transferring или PCI Concurrency. Например, во время взаимодействия процессора с памятью ведущее устройство шины PCI может обмениваться данными с другим устройством PCI. Этот пример одновременности обмена скорее теоретический, поскольку ведущее устройство шины PCI, как правило, обменивается данными с системной памятью. Более интересный случай – обмен графического адаптера, подключенного к порту AGP («родственнику» PCI, см. главу 7), с памятью одновременно с обменом процессора с устройством PCI или, наоборот, загрузка данных процессором в графический адаптер одновременно с обменом между ведущим устройством шины PCI и системной памятью. Одновременность требует довольно сложной логики централизованного арбитража запросов всех агентов системы и различных ухищрений в буферизации данных. Одновременность реализуется не всеми чипсетами (в описаниях она всегда специально подчеркивается) и может быть запрещена настройками CMOS Setup.

Поделиться:
Популярные книги

Месть бывшему. Замуж за босса

Россиус Анна
3. Власть. Страсть. Любовь
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть бывшему. Замуж за босса

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Последний попаданец

Зубов Константин
1. Последний попаданец
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Последний попаданец

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Прометей: владыка моря

Рави Ивар
5. Прометей
Фантастика:
фэнтези
5.97
рейтинг книги
Прометей: владыка моря

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8

Титан империи 4

Артемов Александр Александрович
4. Титан Империи
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Титан империи 4

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Наизнанку

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Наизнанку

Вечная Война. Книга VIII

Винокуров Юрий
8. Вечная Война
Фантастика:
боевая фантастика
юмористическая фантастика
космическая фантастика
7.09
рейтинг книги
Вечная Война. Книга VIII

Генерал-адмирал. Тетралогия

Злотников Роман Валерьевич
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Генерал-адмирал. Тетралогия

Идеальный мир для Лекаря 6

Сапфир Олег
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 6

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5