Existe diferença entre uma porta de E / S e uma porta física?

2

AFAIK, as seguintes definições se aplicam:

  • As portas de E / S são endereços de memória usados como uma interface para se comunicar com dispositivos externos. uma impressora.
  • Uma porta física (ou seja, conector) é a interface física na qual você conecta o dispositivo.

Como você pode ver por esta definição, eles são duas coisas diferentes. No entanto, esta (minha definição) está correta? Ou isso é realmente uma coisa e a porta física tem um endereço de memória?

Eu interpretei a primeira definição de um livro que estou lendo na arquitetura de computadores, mas agora estou lendo mais sobre isso. Estou lentamente me confundindo. Acho que minhas definições podem estar erradas e interpretei mal o livro.

Eu realmente agradeceria se a resposta pudesse explicar brevemente como as portas de E / S também são usadas ... Eu simplesmente não entendo.

    
por user1534664 04.06.2015 / 00:11

3 respostas

2

Existe uma diferença entre a porta de E / S e a porta física?

The following definitions apply:

  • I/O ports are memory adresses used as an interface to communicate with external devices, eg a printer.
  • A physical port (connector) is the physical interface that you plug the device in.

Suas definições são essencialmente corretas.

Uma porta de E / S se comunica usando um driver de software (dispositivo) com um dispositivo físico (um dispositivo que está conectado em uma porta física).

Consulte Sistemas de E / S para obter uma visão geral mais detalhada.

    
por 04.06.2015 / 00:29
2

Uma "porta de E / S" é realmente mais no domínio do software, e isso começou devido ao design herdado do hardware Intel x86, onde havia uma diferença real entre a memória e as portas de E / S. Você poderia ter os dois dispositivos no barramento de endereços, e quando você quisesse falar com a memória, você afirmava um sinal que "desligava" as portas de E / S, e a memória "ligada", e vice-versa se você queria falar para I / O. Havia um esquema de endereçamento diferente para memória e E / S, então o software tinha que acompanhar isso também.

A razão pela qual a memória e a E / S precisavam compartilhar o barramento de dados era devido à quantidade limitada de espaço de endereço disponível em uma CPU de 16 bits (64k). Como o processador evoluiu, o barramento de dados cresceu para 32 bits (4 gigabytes) e 64 bits (18 quintilhões!) E a sobrecarga para compartilhar não foi necessária.

Com os processadores de 32 bits e 64 bits usados agora, tanto a memória quanto a E / S são endereçadas diretamente, os dispositivos de E / S são mapeados para uma área diferente de endereços. Esse método é chamado E / S de memória mapeada.

Com relação às portas físicas, ambas as portas de E / S e E / S mapeadas de memória estão conectadas ao hardware que armazenam mais buffers e formatos (isto é, RS-232) o sinal que vai para um conector encontrado na parte traseira do computador.

    
por 31.12.2015 / 23:05
1

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.

    
por 31.12.2015 / 23:24