Come comunica la CPU con la GPU prima di caricare i driver? [duplicare]


24

A quanto ho capito, le GPU hanno i propri set di istruzioni, le cui istruzioni sono generate dai driver grafici. Le istruzioni GPU vengono quindi inviate alla GPU. Quindi, come funziona la comunicazione grafica prima del caricamento dei driver? Ci sono alcune istruzioni di base che le GPU devono implementare come minimo per garantire che il computer possa eseguire le attività di visualizzazione di base?


Risposte:


34

"Ci sono alcune istruzioni di base ...?"Si, esattamente. Tutte le GPU sono necessarie per implementare una delle numerose interfacce semplici - sono troppo primitive per essere chiamate "set di istruzioni" - quale firmware della piattaforma ("BIOS" o "UEFI") e driver che sono inclusi con il sistema operativo sanno parlare con . La solita scelta di "interfaccia semplice" in questi giorni è "VGA" ("Video Graphics Array"), l'interfaccia a livello di registro originariamente definita per le schede video di quello standard. (Ora più di 30 anni!)

Ad esempio, se Gestione dispositivi su un sistema Windows identifica la scheda grafica come "Scheda video di base Microsoft", il sistema operativo non è stato in grado di trovare un driver specifico per la scheda e ha invece caricato il driver compatibile VGA.

Beh, tecnicamente, Windows sempre carica quel driver (in modo che possa visualizzare ad esempio le schermate di avanzamento dell'avvio), quindi (abbastanza tardi all'avvio) identifica e carica il driver "reale" per la scheda grafica.

Lo standard VGA supporta solo alcune modalità grafiche e modalità di testo a bassa risoluzione e non prevede ciò che definirei "programmi in esecuzione" o "istruzioni" sulla GPU. In sostanza, il firmware di sistema o il "driver video di base" lo mette nella modalità desiderata e quindi scrive i bit su una bitmap; i bit nella bitmap corrispondono direttamente ai pixel sullo schermo. Qualsiasi aritmetica che deve essere fatta per disegnare linee o curve viene eseguita nella CPU. Che è un modo molto basso e lento per far apparire le cose sullo schermo. Ma è sufficiente per i display e le semplici interazioni con il firmware, per le installazioni del sistema operativo e le schermate di avanzamento dell'avvio, ecc.

Wikipedia: matrice di grafica video


1
La situazione completa è complicata. Le primissime carte "VGA" erano davvero così limitate. Per molto tempo Windows NT ha richiesto il supporto per 800x600, ma sì, solo 16 colori. Sembrava piuttosto terribile! Vedi l'articolo di Wikipedia che ho collegato.
Jamie Hanrahan, il

9
Windows probabilmente utilizza VESA BIOS Extentions (VBE) per il suo adattatore di base. VBE è abbastanza ampiamente supportato e consente colori a 16-24 bit e fino a 1600x1200 pixel.
8

3
Non sarebbe l'estensione del BIOS VESA, perché Windows non invoca categoricamente il codice BIOS / UEFI per nulla dopo aver eseguito le prime fasi di bootstrap.
Jamie Hanrahan,

2
Ho visto alcuni computer, incluso il mio laptop, in cui la schermata di avvio di Windows "punti rotanti" inizia con una risoluzione estremamente bassa (320x200, direi, la modalità 256 colori di VGA) e passa rapidamente a una risoluzione più elevata.
Artelius

1
Anche 800x600 a 16 colori va oltre le capacità di VGA. VGA al massimo a 640x480 16 colori. Tuttavia, i produttori di chip grafici sono andati oltre e hanno aggiunto le modalità "SuperVGA" alias SVGA che aumenterebbero i colori e la risoluzione, pur avendo le proprie modalità proprietarie. VESA ha trovato un modo standard per accedere a quelle modalità proprietarie, ma era in quel momento che il PC ha iniziato a essere principalmente guidato dalla GUI e quindi i driver erano una buona scelta. È stato anche quando l'accelerazione 3D stava iniziando ad essere aggiunta. Quindi, mentre la maggior parte delle carte è diventata compatibile con VESA, nessuno ne ha parlato.
sincero

16

Proverò a chiarire il "voodoo" dietro tutto questo, spiegando come funzionava il vecchio hardware. Le GPU moderne non funzionano in questo modo ma emulano l'interfaccia da CPU a scheda grafica.

tl; dr

Chip / schede grafiche negli anni '80 e nei primi anni '90 hanno dovuto produrre output in modo estremamente rapido (rispetto alla velocità del clock), quindi non hanno eseguito le istruzioni, ma avevano piuttosto circuiti fissi. Hanno semplicemente aspirato i dati dalla RAM mentre procedevano, quindi la CPU aveva semplicemente bisogno di scaricare i dati nella RAM nel posto giusto e il chip grafico li raccoglieva e li lanciava sullo schermo. La CPU potrebbe anche impostare varie variabili di configurazione sul chip grafico.

Dettagli:

Negli anni '80, i computer domestici avevano un chip grafico veramente "stupido" che aveva alcuni comportamenti fissi. Avrà più senso se attraverserò la conduttura all'indietro.

Monitor CRT

Questi monitor necessitavano di ingressi analogici. In altre parole, tensione più alta = uscita più luminosa. I monitor a colori avevano 3 canali (rosso, verde e blu (o, ad es. YUV o YIQ ) ). Queste tensioni regolarono l'intensità di un raggio di elettroni. Roba semplice.

CRT monitora letteralmente elettromagneti usati per deviare il fascio di elettroni da sinistra a destra, quindi ricominciare un po 'più in basso e andare da sinistra a destra, e così via dall'alto verso il basso. Quindi torna all'inizio e ripeti.

DAC

I chip grafici avevano un convertitore "da digitale ad analogico" (un componente elettrico molto comune ). Ciò ha convertito i valori digitali (ad es. 2, 4 o 8 bit) in tensioni che potrebbero essere fornite al monitor.

lettura

I chip grafici dovevano "tenere il passo" con il fascio di elettroni, inviando il giusto valore al DAC in modo che potesse emettere la tensione corrispondente al momento giusto. (Gli orologi sono stati usati per questo, in cui non entrerò.) Non c'era tempo per eseguire le istruzioni qui. Tutto era cablato e richiedeva un piccolo numero fisso di cicli di clock.

Modalità video

I primi chip non erano molto veloci e avevano una RAM limitata. Per questo motivo, tendevano a consentire la selezione di varie modalità e altri parametri di configurazione, ad esempio colore di sfondo, selezione del carattere, posizione e dimensione del cursore, selezione della tavolozza e sprite. La maggior parte offriva una modalità "solo carattere" ad alta risoluzione e modalità pixel per pixel a bassa risoluzione.

Le tre modalità VGA degne di nota sono:

  • 16 (ish) color 80x25 text mode (questo è essenzialmente l'aspetto di una schermata di caricamento del BIOS)
  • Modalità 16 colori 640x480 ad alta risoluzione
  • Modalità a colori 320x200 a 256 colori

Pixel di pittura

Molto approssimativamente, a seconda del sistema grafico, la pipeline è simile a questa:

Posizione attuale del pixel ⇒ Carattere di processo / carattere / sprite / pixel / dati di configurazione ⇒ Valori pixel ⇒ Tavolozza ⇒ DAC

È quel secondo passaggio che deve leggere da un paio di posizioni RAM. Ad esempio, in Modalità testo, verrebbe cercato un carattere di 1 byte. Ciò costituirebbe un indice in una tabella dei caratteri. Un po 'verrebbe cercato da questa tabella, indicando se quel pixel dovrebbe essere il colore di primo piano o di sfondo. Verrà recuperato un terzo byte per ottenere quel colore di primo piano / sfondo. Tutto sommato, 3 byte letti dalla RAM.

Ma questo "flusso" è praticamente un insieme di semplici circuiti fissi disposti esattamente come, bene, il flusso appena descritto.

Interfaccia del bus di memoria

Le CPU Intel hanno questa fastidiosa cosa legacy chiamata bus IO ma non è importante, quindi farò finta che non sia lì.

Le CPU accedono alla RAM trasmettendo una richiesta READ o WRITE e un indirizzo sul bus di memoria. Sebbene la maggior parte degli indirizzi validi susciti una risposta dalla RAM, alcuni intervalli sono gestiti dai dispositivi . Ad esempio, la LETTURA da un determinato indirizzo potrebbe fornire informazioni sui tasti premuti sulla tastiera.

Scrivendo nelle parti giuste dell '"intervallo grafico", è possibile scrivere sia il contenuto dello schermo, sia impostare i parametri di configurazione della scheda grafica. Il chip grafico "stupido" non esegue alcuna istruzione. Continua a sgattaiolare via, avendo alcuni byte che scorrono attraverso i suoi circuiti e generando tensioni.

Con VGA, in realtà c'è RAM sulla scheda grafica, perché è possibile configurare la scheda grafica su dati preelaborati prima che vengano scritti nella RAM grafica, per migliorare le prestazioni in alcune situazioni.

VESA

Le schede grafiche dopo VGA offrivano risoluzioni più elevate e una buona intensità del colore ma funzionavano con principi simili. Molte moderne schede grafiche forniscono ancora compatibilità con questo per consentire una maggiore risoluzione durante l'avvio. Ma VGA è quello "infallibile" che praticamente tutte le carte emuleranno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.