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

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

AFAIK, as seguintes definições se aplicam:

  • As portas de E/S sãoendereços de memóriausado como uma interface para comunicação com dispositivos externos, por exemplo, 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, são duas coisas diferentes. No entanto, isso (minha definição) está correto? Ou isso é realmente uma coisa e a porta física tem um endereço de memória?

Interpretei a definição anterior de um livro que estou lendo sobre arquitetura de computadores, mas agora que estou lendo mais, estou ficando confuso aos poucos. Acho que minhas definições podem estar erradas e interpretei mal o livro.

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

Responder1

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

As seguintes definições se aplicam:

  • Portas de E/S são endereços de memória usados ​​como interface para comunicação com dispositivos externos, por exemplo, uma impressora.
  • Uma porta física (conector) é a interface física na qual você conecta o dispositivo.

Suas definições estão essencialmente corretas.

Uma porta de E/S se comunica usando umdriver de software (dispositivo)com um dispositivo físico (um dispositivo conectado a uma porta física).

VerSistemas de E/Spara uma visão geral mais detalhada.

Responder2

Uma "porta de E/S" está realmente mais no domínio do software, e isso começou por causa do design legado do hardware Intel x86, onde havia uma diferença real entre a memória e as portas de E/S. Você poderia ter ambos os dispositivos no barramento de endereço e, quando quisesse conversar com a memória, acionaria um sinal que 'desligava' as portas de E/S e 'ligava' a memória e vice-versa, se quisesse falar para E/S. Havia um esquema de endereçamento diferente para memória e E/S, então o software também precisava acompanhar isso.

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). À medida que as CPUs evoluíram, o barramento de dados cresceu para 32 bits (4 gigabytes) e 64 bits (18 quintilhões!) e a sobrecarga para compartilhar não era necessária.

Com os processadores de 32 e 64 bits usados ​​atualmente, 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. Este método é chamado de E/S mapeada em memória.

Com relação às portas físicas, tanto as portas de E/S quanto as E/S mapeadas na memória são conectadas ao hardware que armazena em buffer e formata (ou seja, RS-232) o sinal que vai para um conector que você encontra na parte traseira do computador.

Responder3

O espaço/portas de E/S é uma criação legada específica do x86. Nos velhos tempos, havia vários espaços de endereço diferentes (você deve ter visto a tendência recente de espaço de endereço de memória compartilhada para melhor compartilhar recursos de CPU/GPU, como no PlayStation 4 e no Xbox One) para endereçar memória e endereçamento " Periféricos de E/S".

O espaço de E/S foi usado para conversar 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 de um sistema estaria localizada lá. Para conversar com este dispositivo, em vez de usar instruções convencionais de acesso à memória, você emitiria instruções de acesso de E/S; no Linux, por exemplo, você usaria outb(), outl() ou outw(), dependendo da largura que pretende usar. De novo,este é um espaço de memória completamente diferentedo que o mapa de memória do sistema.

À medida que os PCs e o x86 amadureceram (leia-se: agora poderíamos endereçar nativamente 32 bits de memória e mais),mapeado em memóriaE/S se tornam mais comuns. Agora, um local de memória arbitrário no mapa de memória do sistema (digamos, de 0 a 0xFFFFFFFF) pode ser mapeado dinamicamente para um dispositivo específico. Um dispositivo PCI terá BAR (registros de endereço base) que requerem uma certa quantidade de memória OU espaço de E/S. Portanto, uma simples leitura/gravação para dizer o endereço de memória 0x80000000 pode, na verdade, mapear para um dispositivo PCI físico que acende um LED quando você grava um '1' nesse local. Esta é uma simplificação grosseira que negligencia a existência de memória virtual/espaço de endereço por processo e até mesmo endereços de espaço de usuário versus espaço de kernel.

Então pararesumir, na minha opinião e como engenheiro elétrico/de computação, uma "Porta IO" refere-se a um local na arquitetura x86Memória IOespaço que mapeia para algum dispositivo específico. Uma porta física seria um conector real e tangível em seu dispositivo de computação, seja ele USB, serial, qualquer que seja.

Como um exemplo divertido, se você se lembra de jogar jogos DOS antigos como Star Wars: Dark Forces, você se lembrará de ter configurado seu SoundBlaster Pro. Você definirá parâmetros como Porta 220, IRQ 5, DMA 1. Isso informa 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 de última geração). neste ponto, você provavelmente tinha um Intel 8259 ou dois) e canal DMA 1.

Responder4

Eu discordaria de sua afirmação. O termoportaestá associado a uma interface física, como uma porta USB, um conector db-25 (SR-232), etc.Porta de E/Stambém é frequentemente interpretado como o "físico"Pinos de E/S.

Contudo, é verdade que estesPortas de E/S, ou conjunto de pinos, têm associadoRegistros de E/S, então pode-se considerar aproximadamente umPorta de E/Sser de fato umendereço de memória.

Na figura abaixo, pode-se ver4 portas de E/S, ao qual você pode conectar cabos. Cada porta tem associadoRegistros de E/S. Por exemplo, PB0o nível lógico do pino (primeiro pino na figura) dependerá de como os níveis lógicos selecionados dos registradores ( DDRB, PINBe PORTB) são combinados naquele pino. UmRegistro de E/S, como o DDRB, tem um associadoendereço de memóriaque você pode acessar por meio de código e alterar seus valores lógicos.

insira a descrição da imagem aqui

[link da imagem]

informação relacionada