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.