O espaço de endereçamento físico é enorme hoje em dia devido ao endereçamento de 64 bits. Muitos dispositivos, por exemplo, controladores de disco compatíveis com AHCI, exigem que grandes blocos de espaço de endereçamento sejam mapeados para os registros de dispositivos.
Além disso, o espaço de endereço do IO não está acessível com as instruções usuais do montador. É acessível apenas com instruções especiais que podem ler e gravar nas portas IO. Isso não é realmente conveniente e ineficiente em muitos casos.
Por exemplo, o controlador compatível com ACPI mencionado acima possui alguma funcionalidade que requer que o processador execute a operação de leitura-modificação-gravação bloqueada para alterar um único bit em um registrador de dispositivo, desde que nenhum outro núcleo possa acessar e modificar o mesmo registrador. entre. Com o espaço de endereços IO, isso não é possível.
Mais um ponto que devemos levar em conta é que o barramento PCI não é exclusivo da arquitetura x86. Existem outras arquiteturas que não possuem nenhum barramento IO especial. Assim, os fornecedores de dispositivos preferem não usar endereços de E / S para permanecer compatíveis com a maioria dos sistemas. Portanto, ninguém está usando o espaço de endereço do IO. Então por que não fazer de jure a coisa que é de fato há muito tempo?