Pelo que entendi, as GPUs têm seus próprios conjuntos de instruções, cujas instruções são geradas pelos drivers gráficos. As instruções da GPU são então enviadas para a GPU. Então, como funciona a comunicação gráfica antes do carregamento dos drivers? Existem instruções básicas que as GPUs devem implementar no mínimo para garantir que o computador possa executar tarefas básicas de exibição?
drivers
graphics-card
gpu
VortixDev
fonte
fonte
Respostas:
"Existem algumas instruções básicas ...?" Sim, exatamente. Todas as GPUs precisam implementar uma de várias interfaces simples - elas são muito primitivas para serem chamadas de "conjuntos de instruções" - com o firmware da plataforma ("BIOS" ou "UEFI") e os drivers incluídos no sistema operacional que sabem conversar com . A escolha usual de "interface simples" atualmente é "VGA" ("Video Graphics Array"), a interface em nível de registro originalmente definida para as placas de vídeo desse padrão. (Agora com mais de 30 anos!)
Por exemplo, se o Gerenciador de dispositivos em um sistema Windows identifica a placa de vídeo como "Microsoft Basic Video Adapter", o sistema operacional não conseguiu encontrar um driver específico para a placa e carregou o driver compatível com VGA.
Bem, tecnicamente, o Windows sempre carrega esse driver (para que ele possa exibir, por exemplo, as telas de progresso da inicialização), e (bastante tarde na inicialização) identifica e carrega o driver "real" da sua placa gráfica.
O padrão VGA suporta apenas alguns modos gráficos de baixa resolução e modos de texto e não envolve o que eu chamaria de "programas em execução" ou mesmo "instruções" na GPU. Em essência, o firmware do sistema ou o "driver de vídeo básico" apenas o coloca no modo desejado e depois grava bits em um bitmap; os bits no bitmap correspondem diretamente aos pixels na tela. Qualquer aritmética que precise ser feita para desenhar linhas ou curvas é feita na CPU. Que é uma maneira muito lenta e de baixo nível para fazer com que as coisas apareçam na tela. Mas é suficiente para exibições e interações simples com o firmware, para instalações de SO e telas iniciais de progresso da inicialização, etc.
Wikipedia: Matriz de gráficos de vídeo
fonte
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:
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.
fonte