link140 link141 link142 link143 link144 link145 link146 link147 link148 link149 link150 link151 link152 link153 link154 link155 link156 link157 link158 link159 link160 link161 link162 link163 link164 link165 link166 link167 link168 link169 link170 link171 link172 link173 link174 link175 link176 link177 link178 link179 link180 link181 link182 link183 link184 link185 link186 link187 link188 link189 link190 link191 link192 link193 link194 link195 link196 link197 link198 link199 link200 link201 link202 link203 link204 link205 link206 link207 link208 link209 link210 link211 link212 link213 link214 link215 link216 link217 link218 link219 link220 link221 link222 link223 link224 link225 link226 link227 link228 link229 link230 link231 link232 link233 link234 link235 link236 link237 link238 link239 link240 link241 link242 link243 link244 link245 link246 link247 link248 link249 link250 link251 link252 link253 link254 link255 link256 link257 link258 link259 link260 link261 link262 link263 link264 link265 link266 link267 link268 link269 link270 link271 link272 link273 link274 link275 link276 link277 link278 link279

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

PCI и PCI-X

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

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

Мосты подчиняются следующим основным правилам:

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

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

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