Когда компьютер запускается, BIOS или операционная система проверяет каждое устройство PCI, чтобы узнать, сколько адресного пространства оно хочет. Затем он выделяет соответствующее пространство и сообщает каждому устройству PCI, где начинается его пространство, чтобы устройство PCI могло отвечать на запросы чтения и записи в этом диапазоне.
У меня вопрос, почему всем устройствам нужно выделять блоки из одного и того же адресного пространства. Почему бы не дать каждому устройству собственное адресное пространство?
На печатной плате уже есть «внеполосный» способ различения PCI-устройств: линия IDSEL. Это то, что используется во время перечисления PCI, прежде чем каждому устройству будет выделено место. Так почему бы не использовать это и для доступа после перечисления, и сохранить некоторую логику декодирования на устройстве PCI? Это было бы как-то медленнее или что-то в этом роде?