O espaço / portas de E / S é uma criação legada específica do x86. Voltando ao bom e velho diz, havia vários espaços de endereços diferentes (você pode ter visto a tendência recente de espaço de endereço de memória compartilhada para compartilhar melhor recursos de CPU / GPU, como no PlayStation 4 e Xbox One) para endereçar memória e endereçamento " Periféricos de E / S ".
O espaço de E / S foi usado para falar com periféricos de hardware "reais", como sua porta serial ou porta paralela. Convencionalmente, no endereço de espaço de E / S 0x3F8, a primeira porta serial em um sistema estaria localizada lá. Para falar com esse dispositivo, em vez de usar as instruções de acesso à memória convencional, você emite instruções de acesso de E / S; no Linux, por exemplo, você usaria outb (), outl () ou outw (), dependendo da largura que você pretende usar. Novamente, este é um espaço de memória completamente diferente do que o mapa de memória do sistema.
Com o amadurecimento de PCs e x86 (leia-se: podemos agora endereçar nativamente 32-bits de memória e mais), a E / S memória mapeada se torna mais comum. Agora, um local de memória arbitrária no mapa de memória do sistema (digamos de 0 a 0xFFFFFFFF) poderia ser mapeado para um dispositivo específico dinamicamente. Um dispositivo PCI terá BAR (registradores de endereço base) que requerem uma certa quantidade de memória OU espaço de E / S. Portanto, um simples ler / escrever para dizer endereço de memória 0x80000000 pode realmente mapear para um dispositivo PCI físico que inverte um LED quando você escreve um '1' para esse local. Isso é uma simplificação grosseira que negligencia a existência de espaço de endereço de memória virtual / por processo e até mesmo endereços de espaço de kernel do usuário.
Então, para resumir , na minha opinião e vista como engenheiro elétrico / de computador, uma "Porta IO" refere-se a um local no espaço Memória IO da arquitetura x86 que mapeia para algum dispositivo específico. Uma porta física seria um conector real e tangível no seu dispositivo de computação, seja USB, serial ou qualquer outra coisa.
Como um exemplo divertido, se você se lembra de ter jogado jogos antigos do DOS, como Star Wars: Dark Forces, você se lembra de ter configurado o seu SoundBlaster Pro. Você definirá parâmetros como Port 220, IRQ 5, DMA 1. Isso está dizendo ao jogo que sua placa de som está localizada no espaço de E / S em 0x220, usando o canal IRQ 5 (lembre-se, você não tinha um APIC high-end neste ponto, você provavelmente tinha um Intel 8259 ou dois) e o canal 1 de DMA.