Наглостью. Рисовать я не собираюсь.
pci шина двунаправленная и операции чтения и записи могут выполняться одновременно, но они все равно проходят через буфер. Вообще pci устройства могут выполнять более одного обмена данными в единицу времени. Но транзакции все равно выполняются по порядку (уточняю опять. Важен порядок завершения транзакции).
Это конечно будет большой наглостью с моей стороны, но вы бы не могли бы это изобразить как то визуально. Получается, что шина в pci не двунаправленна?
Они идет не по одному каналу. Один идут по одной шине, но в коммутатор (электрически устройства не связаны напрямую). Если устройство, которому предназначена транзакция занято - транзакция становится задержанной и ожидает следующего цикла выполнения. Транзакция выполняется не устройством, а, как правило, коммутатором.
В контексте PCI master\slave не очень корректная терминология. У PCI есть CPU и остальные устройства и приоритет может быть только в таких рамках (CPU или остальные устройства и наоборот). PCI устройства между собой равнозначные.
Это конечно будет большой наглостью с моей стороны, но вы бы не могли бы это изобразить как то визуально. Получается, что шина в pci не двунаправленна?
Ну смотри. Каждая команда должна завершиться транзакцией. По стандарту PCI есть ряд требований выполнений транзакций, но если упростить: транзакция может быть отложено, отменена или задержана в зависимости от времени выполнения, доступности данных, соответствия стандартам.
Порядок выполнения зависит так же от самой транзакции как и от условий выполнения. Конкретным важным параметром в твоем случае является время завершения выполнения транзакции. Так что если мы рассматриваем 2 pci устройства с одинаковым приоритетом, работающем через коммутатор с произвольными командами, которые при этом выполняют все требования PCI - зависит от конкретной команды и условий выполнения кто будет первым. Если команда пришла первая и упала в буфер, то это не дает гарантии того, что она выполнится быстрее, чем последующая команда.
Точнее я тебе сказать не могу, так как знаю только достаточно поверхностные факты про pci чуть выходящие за рамки моей работы. Напрямую с ней я никогда не работаю.
Заранее извиняюсь, я чайник и просто пытаюсь понять. То есть у нас одновременно поступает сигнал с командой от двух устройств. Одинаковые приоритет, все требования выполнены. Сигналы же встретятся в одном канале вроде как. Как по итогу они смогу дойти до второго устройства? И кто из них первым по итогу станет мастером? И после выполнения задачи первого мастера, второе устройство становится мастером и выполняет уже свою задачу?
Все будет нормально. Они на прямую друг с другом не общаются в нашу современность. На старых системах с DMA шиной скорее всего будет коллизия.
Я немного чайник в этом. Можно чуть более подробней и простым языком? Заранее спасибо
Ну допустим там gpu и ssd. Оба одновременно подали команду на чтение/записи. И вот что дальше. Кто инициатор. Как пойдёт сигнал. Кто по итогу окажется мастером и тд