Vou tentar esclarecer o "vodu" por trás de tudo isso, explicando como o hardware antigo funcionava. As GPUs modernas não funcionam assim, mas emulam a interface da CPU para a placa gráfica.
tl; dr
Os chips / placas gráficas nos anos 80 e início dos 90 precisavam produzir resultados extremamente rapidamente (em relação à velocidade do relógio), para que não executassem as instruções, mas tivessem circuitos fixos. Eles apenas sugavam dados da RAM à medida que avançavam, então a CPU simplesmente precisava despejar dados na RAM no lugar certo, e o chip gráfico os pegava e jogava na tela. A CPU também pode definir várias variáveis de configuração no chip gráfico.
Detalhes:
Nos anos 80, os computadores domésticos tinham um chip gráfico realmente "burro" que tinha alguns comportamentos fixos. Faz mais sentido se eu seguir o oleoduto para trás.
Monitores CRT
Esses monitores precisavam de entradas analógicas. Em outras palavras, tensão mais alta = saída mais brilhante. Os monitores coloridos tinham três canais (vermelho, verde e azul (ou, por exemplo, YUV ou YIQ ) ). Essas tensões ajustaram a força de um feixe de elétrons. Coisas simples.
Os monitores CRT literalmente usavam eletroímãs para desviar o feixe de elétrons da esquerda para a direita, depois recomeçam um pouco mais baixo e vão da esquerda para a direita, e assim por diante, de cima para baixo. Então volte ao topo e repita.
DAC
Os chips gráficos tinham um conversor "digital para analógico" (um componente elétrico muito comum ). Isso converteu valores digitais (por exemplo, 2, 4 ou 8 bits) em voltagens que poderiam ser fornecidas ao monitor.
Digitalização
Os chips gráficos tinham que "acompanhar" o feixe de elétrons, enviando o valor correto ao DAC para que ele pudesse produzir a tensão correspondente no momento certo. (Foram usados relógios para isso, que não vou abordar.) Não houve tempo para executar instruções aqui. Tudo estava conectado e levou um número pequeno e fixo de ciclos de relógio.
Modos de vídeo
Os primeiros chips não eram muito rápidos e tinham RAM limitada. Por causa disso, eles tendiam a permitir a seleção de vários modos e outros parâmetros de configuração, por exemplo, cor de fundo, seleção de fonte, localização e tamanho do cursor, seleção de paleta e sprites. A maioria oferecia um modo "somente caracteres" de alta resolução e modos pixel a pixel de resolução mais baixa.
Os três modos VGA dignos de nota são:
- Modo de texto de 16 (ish) cores 80x25 (é basicamente a aparência da tela de carregamento do BIOS)
- Modo de alta resolução em 16 cores, 640x480
- Modo de 256 cores e 320 x 200 em cores
Pixels de pintura
De maneira bem aproximada, dependendo do sistema gráfico, o pipeline se parece com isso:
Localização atual do pixel ⇒ Caractere do processo / fonte / sprite / pixel / dados de configuração ⇒ Valores do pixel ⇒ Paleta ⇒ DAC
É o segundo passo que precisa ser lido em alguns locais da RAM. Por exemplo, no modo de texto, um caractere de 1 byte seria procurado. Isso formaria um índice em uma tabela de fontes. Um pouco seria pesquisado nesta tabela, indicando se esse pixel deve ser a cor do primeiro plano ou do plano de fundo. Um terceiro byte seria buscado para obter a cor de primeiro plano / plano de fundo. Ao todo, 3 bytes são lidos da RAM.
Mas esse "fluxo" é praticamente um conjunto de circuitos fixos simples, organizados exatamente como, bem, o fluxo que acabamos de descrever.
Interface de barramento de memória
As CPUs Intel têm esse recurso herdado e irritante chamado de barramento de entrada / saída, mas não é importante, então vou fingir que não está lá.
As CPUs acessam a RAM transmitindo uma solicitação READ ou WRITE e um endereço no barramento de memória. Embora a maioria dos endereços válidos provoque uma resposta da RAM, alguns intervalos são tratados pelos dispositivos . Por exemplo, a leitura de um endereço específico pode fornecer informações sobre as teclas pressionadas no teclado.
Ao escrever nas partes corretas do "intervalo de gráficos", você pode escrever o conteúdo da tela e também definir os parâmetros de configuração da placa gráfica. O chip gráfico "burro" não executa nenhuma instrução. Ele continua se arrastando, tendo alguns bytes fluindo através de seus circuitos e voltagens de saída.
Com o VGA, existe realmente RAM na placa gráfica, porque você pode configurar a placa gráfica para dados pré-processados antes de serem gravados na RAM gráfica, para aumentar o desempenho em algumas situações.
VESA
As placas gráficas após VGA ofereceram resoluções mais altas e boa profundidade de cor, mas funcionaram com princípios semelhantes. Muitas placas gráficas modernas ainda oferecem compatibilidade com isso para permitir maiores resoluções durante a inicialização. Mas o VGA é o "infalível" que praticamente todos os cartões imitam.