In che modo il mio driver dello schermo gestisce così tanti dati?


61

Ho appena fatto alcuni rapidi calcoli:

Sul mio MacBook ho una risoluzione di 2560x1440 moltiplicata per 24 bit per i colori otteniamo 11,05 MB per una singola immagine o 663 MB al secondo a 60 fps .

Immagino che ci sia un po 'di compressione, ma per esempio quando mi muovo con tre dita sul mio touch pad è abbastanza casuale, cosa succede dopo sullo schermo e quasi ogni pixel cambia. Come con quasi ogni altra interazione.

Spiegare se i miei calcoli sono errati e come vengono trasferiti questi dati dalla mia scheda grafica allo schermo? Quanto sono grandi gli autobus tra la mia scheda grafica e il mio schermo? Forse spieghi in poche parole come un display memorizza i pixel? Registro dei turni? Cache?


7
"Forse spieghi in poche parole come un display memorizza i pixel?" Il display in realtà non memorizza i dati pixel, tutto gestito dalla RAM sulla scheda grafica (o RAM di sistema per la grafica integrata). La RAM ha facilmente una larghezza di banda di diversi GB / s. I frame vengono inviati al display seguendo un protocollo, quindi i dati sono disponibili come richiesto per il display.
ks0ze,

3
Perché pensi che ci sia compressione? Cosa pensi che accada quando i dati non sono comprimibili? Pensi che il display rimanga indietro?
Mehrdad,

3
@Aresloom: Ah, capisco. La compressione con perdita sarebbe un modo, sì. :) Pensavo stessi pensando a senza perdita!
Mehrdad,

2
@ ks0ze alcuni pannelli più recenti memorizzano l'ultima schermata che sono stati inviati. La memorizzazione nella cache utilizza una quantità di energia inferiore rispetto alla GPU che genera un'immagine statica 60 volte al secondo. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely

2
I moderni display per laptop utilizzano ancora LVDS? Una mezza dozzina di anni fa le compagnie GPU stavano pianificando di eliminarle contemporaneamente a VGA (che è passata dall'attuale generazione di output nativo di GPU) a favore del displayport incorporato.
Dan Neely,

Risposte:


69

I tuoi calcoli sono corretti in sostanza. Per un segnale a 1440p60Hz, una velocità dati di 5,8 Gbps è disponibile anche dopo aver concesso il tempo di oscuramento (bordo pixel non visibile nell'output dell'immagine).

Per HDMI / DVI, viene utilizzata una codifica 10 / 8b, il che significa in modo efficace sebbene si dica 24 bit di dati colore per pixel, in realtà viene inviato 30 bit quando i dati vengono codificati e vengono aggiunte parole di controllo del protocollo. Non viene eseguita alcuna compressione, i dati non elaborati vengono inviati, pertanto è necessario disporre di una larghezza di banda dei dati di 7,25 Gbps .

Ancora una volta guardando HDMI / DVI. Utilizza lo standard di segnalazione "TDMS" per il trasferimento dei dati. Lo standard HDMI V1.2 impone un massimo di 4,9 Gbps per un Single-Link (3 linee dati seriali + 1 linea di clock), o nel caso di Dual-Link DVI un massimo di 9,8 Gbps (6 linee dati seriali, penso ). Quindi c'è una larghezza di banda più che sufficiente per fare 1440p60 attraverso un DVI Dual-Link, ma non attraverso un HDMI V1.2.

Nello standard HDMI V1.3 (la maggior parte dei dispositivi ha in realtà saltato alla V1.4a che è la stessa larghezza di banda di 1.3), la larghezza di banda è stata raddoppiata a circa 10 Gbps che supporterebbe 1440p60, ed è anche abbastanza larghezza di banda per UHD a 30Hz (2160p30).

DisplayPort come un altro esempio ha 4 flussi di dati seriali, ciascuno capace (in V1.1) di 2,16 Gbps per flusso (tenendo conto della codifica), quindi con un collegamento V1.1 potresti fare facilmente 1440p60 con tutti e 4 i flussi. Hanno anche rilasciato un nuovo standard, V1.2 che raddoppia a 4,32 Gbps / stream consentendo UHD a 60Hz. Esiste ancora una versione più recente che hanno ulteriormente spinto a 6,4 Gbps / stream .


Inizialmente quelle cifre suonano enormi, ma in realtà non tanto quando si considera USB 3.0. È stato rilasciato con una velocità dati di 5 Gbps su un solo cavo (in realtà due, uno per TX, uno per RX, ma sto divagando). Il PCIe, che è quello che la scheda grafica utilizza internamente al giorno d'oggi, funziona fino a 8 Gbps attraverso una singola coppia differenziale, quindi non è poi così sorprendente che le interfacce dati esterne stiano raggiungendo.


Ma la domanda rimane: come si fa? Quando pensi a VGA, è composto da singoli fili per i dati R, G e B che vengono inviati in un formato analogico. L'analogico, come sappiamo, è altamente suscettibile al rumore e anche il throughput di DAC / ADC è limitato, quindi ciò limita enormemente ciò che è possibile passare attraverso di essi (detto che si può fare a malapena 1440p60Hz su VGA se si è fortunati).

Tuttavia, con gli standard moderni utilizziamo standard digitali che sono molto più immuni al rumore (devi solo distinguere tra alto e basso piuttosto che ogni valore in mezzo) e rimuovi anche la necessità di conversione tra analogico e digitale.

Inoltre, l'avvento dell'uso di standard differenziali su single ended aiuta in modo significativo perché ora si sta confrontando il valore tra due fili (+ ve differenza = 1, -ve differenza = 0) piuttosto che confrontare un singolo filo con una certa soglia. Ciò significa che l'attenuazione è meno un problema perché influenza entrambi i fili in modo uniforme e si attenua fino alla tensione del punto medio - l'occhio (differenza di tensione) diventa più piccolo, ma puoi ancora dire se è + ve o -ve pari se è solo 100mV o meno. I segnali a terminazione singola una volta che il segnale si attenua potrebbe scendere al di sotto della soglia e diventare indistinguibile anche se ha ancora 1 V o un'ampiezza maggiore.

Usando un collegamento seriale su uno parallelo, possiamo anche passare a velocità dati più elevate perché l'inclinazione cessa di essere un problema. In un bus parallelo, diciamo a 32 bit di larghezza, è necessario abbinare perfettamente le caratteristiche di lunghezza e propagazione di 32 cavi per evitare che i segnali si spostino fuori fase l'uno dall'altro (inclinazione). In un collegamento seriale hai un solo cavo, quindi l'inclinazione non può avvenire.


TL; DR I dati vengono inviati al bit rate completo calcolato (diversi Gbps), senza compressione. Ciò è reso possibile dalle moderne tecniche di segnalazione di collegamenti digitali serializzati su coppie differenziali.


Inoltre, penso che alcuni schermi HDMI utilizzino 2 collegamenti HDMI 1.2v per ottenere l'immagine, dividendo efficacemente lo schermo in 2. Ciò darebbe una larghezza di banda combinata di essenzialmente 9,8 Gbps.
Ismael Miguel,

5
@Aresloom 5GHz è il punto in cui praticamente tutte le CPU iniziano a sciogliersi a causa dell'enorme numero di transistor che commutano simultaneamente e generano enormi quantità di calore. Non significa che 5 GHz è l'orologio più alto di tutto , si riduce al calore (e al materiale che usi - il silicio non è sempre il migliore). Il miglior esempio che mi viene in mente è un DSAX96204Q Keysight Infinnium in cui ciascuna delle quattro estremità frontali ha un campionatore di fosfuro di indio che passa a 80 GHz! Ma quel campionatore ha solo una dozzina di transistor e brucia diversi watt (le moderne CPU hanno miliardi )
Sam

4
@Aresloom 340MHz sarebbe la frequenza di clock, la velocità dei dati è serializzata in modo tale che (ad esempio in TDMS) vengano inviati 10 bit su un cavo in ciascun ciclo di clock - quindi un clock a 340MHz produrrebbe 3,4 Gbps. Sono solo i cavi e l'hardware (de) serializzazione (SERDES) alla periferia dei circuiti integrati video che funzionano a tali velocità di dati seriali. Dopo l'hardware SERDES, internamente c'è di nuovo un bus parallelo che torna indietro alla frequenza di clock inferiore. I blocchi SERDES possono funzionare molto velocemente - PCIe è 8 Gbps per corsia, quindi i blocchi SERDES funzionano a 4 GHz (usando entrambi i bordi di clock per i bit - DDR).
Tom Carpenter,

1
8b / 10b migliora il rifiuto degli errori perché è più facile rilevare le transizioni rispetto agli stati nei segnali veloci. Questa codifica garantisce che non ci sarà una corsa troppo lunga di zero o zero consecutivi.
pjc50,

1
@curiousdannii È un ciclo interessante, vero? Per prima cosa abbiamo iniziato con seriale (ad es. UART) che era troppo lento (diciamo 115kbps max). Quindi siamo passati a bus paralleli come IDE che hanno raggiunto circa 66 MHz a 16 bit, quindi 1 Gbps o giù di lì. Quindi siamo tornati al seriale perché si è scoperto che possiamo andare molto velocemente con i bus differenziali. Ma ora il seriale non è ancora abbastanza veloce, quindi andiamo con una sorta di seriale parallela: più corsie di singoli bus seriali che possono essere essenzialmente gestite completamente separatamente e quindi qualsiasi deviazione corsia-corsia viene corretta con FIFO.
Tom Carpenter,

19

I computer moderni sono sorprendentemente veloci. Le persone caricheranno felicemente video full HD 30fps senza rendersi conto che ciò comporta miliardi di operazioni aritmetiche al secondo. I giocatori tendono ad esserne leggermente più consapevoli; una GTX 1060 ti darà 4.4 TFLOPS ( trilioni di operazioni in virgola mobile al secondo).

Spiegare se i miei calcoli sono errati e come vengono trasferiti questi dati dalla mia scheda grafica allo schermo?

Quanto sono grandi gli autobus tra la mia scheda grafica e il mio schermo?

Un'altra risposta ha riguardato la natura multi-gigabit di HDMI, DisplayLink ecc.

Forse spieghi in poche parole come un display memorizza i pixel? Registro dei turni? Cache?

Il display stesso memorizza, in teoria, nessun dato di immagine.

(Alcuni display, in particolare i televisori, memorizzano un frame o due per applicare l'elaborazione delle immagini. Ciò aumenta la latenza ed è impopolare con i giocatori.)

Il sottosistema grafico di un computer memorizza i pixel nella normale DRAM. Di solito non ridisegna il tutto dal processore in ogni frame, ma trasferisce alcune funzionalità a sottosistemi dedicati e a un compositore . Un compositore consentirà ad esempio che ogni finestra del desktop sia memorizzata come un insieme distinto di pixel, che può quindi essere spostato, fatto scorrere o ingrandito dall'hardware dedicato. Questo diventa abbastanza ovvio con lo scorrimento su dispositivi mobili: puoi fare una breve strada fino a quando non esaurisci i pixel pre-calcolati "offscreen" e il software deve fermarsi e renderizzare un po 'di più i buffer del compositore.

I giochi vengono ridisegnati in ogni fotogramma e c'è molta letteratura su come viene costruita una scena. Questo è incorporato in un framebuffer sulla scheda grafica che viene quindi trasmesso mentre il frame successivo viene disegnato in un buffer diverso.

La decodifica video viene solitamente fornita anche a hardware dedicato, in particolare H.264.


11

Il collegamento tra la scheda display e il pannello LCD viene trasferito su diverse coppie differenziali ad alta velocità utilizzando la segnalazione TMDS , generalmente denominata "corsia". In genere vengono utilizzate quattro corsie, quindi si può dire che il bus è largo 4 bit. Per qualche dettaglio in più c'è una risposta di scambio dello stack .

Ogni modello di pannello LCD viene solitamente prodotto con diverse incarnazioni di interfaccia, quindi è necessario fare attenzione e osservare i suffissi quando si cerca di sostituire un pannello rotto. Il collegamento digitale più moderno (HDMI 1.4) ha 10,2 Gbps, o solo 2,5 Gbps per corsia. Nei tuoi calcoli (663 MBps) ammonta a 1,2 Gbps per corsia (presupponendo 4 corsie), il che non è molto (ad esempio SATA3 ha 6 Gbps).

AGGIUNTA su pannelli LCD. Il display LCD a matrice attiva in realtà tenta di memorizzare l'immagine del fotogramma (dati pixel) nei condensatori associati a "Twisted Nematic Cells" (quello che controlla la polarizzazione del film). Il problema è che la dimensione dei tappi di memoria analogici deve essere un compromesso tra tempo di memorizzazione e velocità dell'interruttore pixel. Quindi non può essere ingrandito, perde velocemente il potenziale immagazzinato e quindi richiede un aggiornamento periodico . Ogni cella di pixel è collegata con dati e linee di indirizzo tramite un transistor (elemento "attivo"), vedi questo articolo di Tomshardware . Il controller del driver LCD muliplexes i dati e le linee di indirizzo in modo riga per riga mantenendo così l'immagine visualizzata. L'immagine stessa è memorizzata in un frame buffer (RAM) all'interno del controller grafico.

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.