O que exatamente é VGA e qual a diferença entre ele e uma placa de vídeo?

O que exatamente é VGA e qual a diferença entre ele e uma placa de vídeo?

Os tutoriais de desenvolvimento de sistema operacional identificam o alcance dos dados da tela gravando diretamente em VGA, EGA ou Super VGA, mas o que não entendo é qual é a diferença real entre gravar em um endereço fixo para exibição e gravar diretamente em uma placa de vídeo, seja onboard ou removível? Eu só quero o esclarecimento básico da minha confusão sobre isso no meu problema

E como não é um caso tão simples com variáveis ​​em placas, interfaces conectivas, barramentos, arquiteturas, sistema em um chip, sistemas embarcados, etc., acho difícil encontrar uma maneira de entender a ideia por trás disso 100%. . Os endereços fixos seriam diferentes de uma GPU topo de linha para uma GPU integrada de baixo custo? Por que e por que não?

Um dos meus objetivos na programação é hospedar um kernel e criar um sistema operacional, e é realmente um sonho improvável. Não entender a terminologia não apenas me atrapalha em algumas áreas, mas também me faz parecer um tolo quando se trata de hardware.

EXTRA: Algumas dessas respostas atuais falam em usar a memória endereçável máxima dos processadores especificamente em 16 bits. O problema são algumas dessas outras questões emergentes:

1.E a memória do próprio cartão? Isso não precisaria de RAM do sistema para os dados da tela em si.

2.E nos modos de bits mais altos? E você não pode negligenciar o BIOS em modo real (x86) e ainda endereçar a memória através do AL?

3.Como o conceito de gravação em um endereço fixo permaneceria inalterado em uma GPU com vários registros e desempenho igual ou superior ao microprocessador real?

Responder1

Tecnicamente VGA significaMatriz de gráficos de vídeo, um padrão de vídeo 640x480 introduzido em 1987. Na época, essa era uma resolução relativamente alta, especialmente para uma tela colorida.

AntesVGA foi introduzido e tínhamos alguns outros padrões gráficos, comoHérculesque exibia texto (80 linhas de 25 caracteres) ou gráficos monocromáticos de alta definição relativa (720x348 pixels).

Outros padrões da época eram CGA (Adaptador gráfico colorido), que também permitia até 16 cores com resolução de até 640x200 pixels. O resultado disso ficaria assim:

insira a descrição da imagem aqui

Finalmente, um padrão digno de nota para PC foi o adaptador gráfico Enhanced (EGA), que permitia resoluções de até 640×350 com 64 cores.

(Estou ignorando os padrões que não são de PC para manter isso relativamente curto. Se eu começar a adicionar padrões Atari ou Amiga - até 4.096 cores na época! - então isso ficará bastante longo.)

Então, em 1987, a IBM lançou o computador PS2. Ele tinha várias diferenças notáveis ​​em comparação com seus antecessores, que incluíam novas portas para mouses e teclados (Anteriormente, os mouses usavam portas seriais de 25 pinos ou portas seriais de 9 pinos,sevocê tinha um rato); unidades padrão de 3½ polegadas e um novo adaptador gráfico com alta resolução e muitas cores.

Este padrão gráfico foi chamadoMatriz de gráficos de vídeo. Ele usava um conector de 3 linhas e 15 pinos para transferir sinais analógicos para um monitor. Este conector durou até alguns anos atrás, quando foi substituído por padrões digitais superiores, como DVI e display port.

Depois do VGA

O progresso não parou nos padrões VGA. Pouco depois da introdução do VGA surgiram novos padrões como o 800x600Super VGA (SVGA), que usava o mesmo conector. (Hercules, CGA, EGA etc. todos tinham seus próprios conectores. Você não poderia conectar um monitor CGA a uma placa VGA, nem mesmo se tentasse exibir uma resolução suficientemente baixa).

Desde então, passamos para monitores de resolução muito mais alta, mas o nome mais usado continua sendo VGA. Mesmo que os nomes corretos sejam SVGA, XVGA, UXGA etc.

insira a descrição da imagem aqui

(Gráfico cortesia da Wikipedia)


Outra coisa que é chamada de 'VGA' é o conector DE15 usado com a placa VGA original. Este conector geralmente azul não é a única maneira de transferir 'sinais VGA' analógicos para um monitor, mas é o mais comum.

Esquerda: DB5HD Direita: Conectores VGA alternativos, geralmente usados ​​para melhor qualidade) insira a descrição da imagem aqui


Uma terceira maneira de usar 'VGA' é para descrever uma placa gráfica, mesmo que essa placa possa produzir resoluções totalmente diferentes da VGA. O uso é tecnicamente errado, ou deveria pelo menos ser 'placa compatível com VGA', mas o discurso comum não faz essa diferença.


Isso deixaescrevendo para VGA

Isso vem da maneira como a memória de um IBM XT foi dividida. A CPU pode acessar até 1MiB (1024KiB) de memória. Os 512 KiB inferiores foram reservados para RAM, os 512 KiB superiores para placas adicionais, ROM etc.

Esta área superior é onde a memória das placas VGA foi mapeada. Você poderia escrever diretamente nele e o resultado apareceria no display.

Isso não foi usado apenas para VGA, mas também para alternativas da mesma geração.

  G = RAM de vídeo no modo gráfico
  M = RAM de vídeo em modo de texto monocromático
  C = RAM de vídeo em modo de texto colorido
  V = BIOS da ROM de vídeo (seria "a" no PS/2)
  a = ROM da placa adaptadora e RAM para fins especiais (espaço UMA livre)
  r = ROM BIOS adicional da placa-mãe PS/2 (UMA gratuita em sistemas não-PS/2)
  R = BIOS da ROM da placa-mãe
  b = IBM Cassette BASIC ROM (seria "R" em compatíveis com IBM)
  h = Área de memória alta (HMA), se HIMEM.SYS estiver carregado.

Memória Convencional (Base):   
Primeiros 512 KB (ou 8 pedaços de 64 KB).

Área de memória superior (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000: RRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

(Fontedo mapa ASCII).

Responder2

Escrevendo para um "endereço fixo"eraessencialmente escrevendo diretamente para uma placa de vídeo. Todas aquelas placas de vídeo ISA (CGA, EGA, VGA) tinham essencialmente alguma RAM (e registros) mapeadas diretamente na memória da CPU e no espaço de E/S.

Então, quando você gravou um byte em um determinado local da memória, esse caractere (em modo texto) apareceu na tela imediatamente, pois na verdade você escreveu em uma memória localizada em uma placa de vídeo, e a placa de vídeo acabou de usar essa memória.

Tudo isso parece muito confuso hoje, especialmente considerando que as placas de vídeo atuais às vezes são chamadas de VGA (e têm semelhanças com as "verdadeiras" placas VGA da década de 1990). No entanto, mesmo as placas modernas emulam algumas das funcionalidades desses designs mais antigos (você pode inicializar o DOS na maioria dos PCs modernos e usar programas DOS que gravam diretamente na memória de vídeo). Claro que hoje em dia tudo é emulado no firmware da placa de vídeo.

Responder3

Não há realmente diferença: se você estiver gravando no endereço da memória de vídeo, o hardware irá roteá-lo para a placa de vídeo.

Se você estiver escrevendo seu próprio sistema operacional, provavelmente terá que trabalhar muito para fazer com que a placa gráfica mapeie sua memória da maneira desejada, começando pela varredura do barramento PCI para encontrar a placa.

Responder4

Até agora, as respostas explicaram que as placas de vídeo antigas funcionavam com a memória de vídeo mapeada no espaço de endereço do processador. Esta era a memória da própria carta. O northbridge sabe redirecionar solicitações dessa memória mapeada para o dispositivo VGA.

Além disso, houve muitas expansões e novos modos para placas compatíveis com VGA. Isso levou à criação de extensões VESA BIOS (VBE), que operam através de arquivos int 10h. Isso suporta aceleração 2D básica (BitBlt), cursores de hardware, buffer duplo/triplo, etc. Este é o método básico para exibição em cores em qualquer resolução suportada (incluindo altas resoluções). Isso normalmente também usava memória interna da placa, com a ponte norte realizando o redirecionamento como no VGA clássico. Esta é a maneira mais simples de utilizar gráficos em cores/resolução total.

A seguir, apresentamos um método direto de acesso a uma GPU sem usar o BIOS, que fornece acesso aos mesmos recursos do VBE, e possivelmente a outros adicionais. Meu entendimento é bastante confuso aqui. Acho que essa interface é específica do dispositivo, mas não tenho certeza disso.

Depois, há a interface GPU que pode suportar aceleração 3D/computação GP-GPU, etc. Isso definitivamente requer drivers ou especificações fornecidas pelo fabricante para uso completo, e frequentemente há diferenças substanciais mesmo entre dispositivos do mesmo fabricante.

informação relacionada