Как по-разному обрабатываются адреса памяти и ввода-вывода в устройстве конечной точки? - PullRequest
1 голос
/ 12 октября 2019

Предположим, у нас есть два оконечных устройства PCIe A и B. A реализует адреса MMIO, а B реализует адрес IO. Как эти конечные точки обрабатывают эти адреса внутри? Как решено, что конечная точка должна использовать адрес MMIO или IO или оба? Какая разница с точки зрения конечной точки PCIe? Это просто выглядит как адрес, используемый для взаимодействия с хостом.

1 Ответ

0 голосов
/ 12 октября 2019

Разработчик устройства решает, использовать ли пространство ввода-вывода, пространство MMIO или и то, и другое. (Но я думаю, что спецификация PCIe может иметь некоторые требования по реализации пространства MMIO.)

Два типа операций отображаются как разные типы транзакций, когда они поступают на устройство. Это зависит от устройства, чтобы определить, как их обрабатывать. Это может не иметь никакого значения.

Операции записи в память опубликованы, то есть ответ от устройства не требуется, в то время как записи ввода / вывода не опубликованы, поэтому ответ требуется. Конечно, и чтения из памяти, и из операций ввода-вывода не публикуются. (https://paritycheck.wordpress.com/2008/01/13/pcie-posted-vs-non-posted-transactions)

Могут также быть различия в том, как процессор обрабатывает их. Например, в x86 команды ввода-вывода сериализуются (и, следовательно, медленнее).

...