Come comunica una GPU / CPU con un output di visualizzazione standard? (HDMI / DVI / ecc.) [Chiuso]


14

Sono interessato al modo in cui la cpu / gpu presenta (a qualunque apparecchiatura faccia) i dati video dopo che sono stati elaborati.

Mi è stato detto che il video viene elaborato dalla CPU / GPU e quindi inviato a un circuito integrato da seriale ad alta velocità che converte il segnale seriale in un'uscita display appropriata, ma non posso confermarlo effettuando una ricerca online.

Sono interessato alla segnalazione e non riesco a cercare protocolli / ecc. Perché non so cosa sto cercando. Quindi la CPU / GPU interagiscono direttamente con le uscite video (posso trovare facilmente questi protocolli) o c'è un "intermediario" per così dire e, in caso affermativo, che cos'è, tipo di chip / ecc?


Puoi acquistare RAMDAC video come parti distinte: ti.com.cn/cn/lit/ds/symlink/tvp3703.pdf anche se ciò non significa che sarà separato sulla tua scheda grafica.
pjc50,

Risposte:


18

L'immagine visualizzata sul monitor è memorizzata nella RAM video del computer sulla scheda grafica in una struttura chiamata framebuffer. I dati nel framebuffer sono generalmente di colore RGB a 24 bit, quindi ci saranno un byte per il rosso, uno per il verde e uno per il blu per ogni pixel sul display, possibilmente con alcuni byte di riempimento extra. I dati nella RAM video possono essere generati dalla GPU o dalla CPU. La RAM video viene continuamente letta da un componente DMA specializzato sulla scheda video e inviata al monitor. L'uscita del segnale al monitor è un segnale analogico (VGA) in cui i componenti del colore vengono inviati attraverso convertitori da digitale ad analogico prima di lasciare la scheda, oppure un segnale digitale nel caso di DVI, HDMI o DisplayPort. L'hardware responsabile di ciò genera anche i segnali di sincronizzazione orizzontale e verticale, nonché tutti i ritardi appropriati, in modo che i dati dell'immagine vengano inviati al monitor solo quando è pronto. In DVI e HDMI, il flusso di informazioni sul colore dei pixel viene codificato e serializzato e inviato al monitor tramite TMDS (segnalazione differenziale ridotta al minimo di transizione). DisplayPort utilizza la codifica 8b / 10b. La codifica ha diversi scopi. Innanzitutto, TMDS minimizza le transizioni del segnale per ridurre le emissioni EMI. In secondo luogo, sia TMDS che 8b / 10b sono protocolli bilanciati CC, quindi i condensatori di blocco CC possono essere utilizzati per eliminare i problemi con i circuiti di massa. In terzo luogo, 8b / 10b garantisce una densità di transizione sufficientemente elevata da consentire il recupero del clock sul ricevitore poiché DisplayPort non distribuisce un clock separato. il flusso di informazioni sul colore dei pixel viene codificato e serializzato e inviato al monitor tramite TMDS (segnalazione differenziale ridotta al minimo di transizione). DisplayPort utilizza la codifica 8b / 10b. La codifica ha diversi scopi. Innanzitutto, TMDS minimizza le transizioni del segnale per ridurre le emissioni EMI. In secondo luogo, sia TMDS che 8b / 10b sono protocolli bilanciati CC, quindi i condensatori di blocco CC possono essere utilizzati per eliminare i problemi con i circuiti di massa. In terzo luogo, 8b / 10b garantisce una densità di transizione sufficientemente elevata da consentire il recupero del clock sul ricevitore poiché DisplayPort non distribuisce un clock separato. il flusso di informazioni sul colore dei pixel viene codificato e serializzato e inviato al monitor tramite TMDS (segnalazione differenziale ridotta al minimo di transizione). DisplayPort utilizza la codifica 8b / 10b. La codifica ha diversi scopi. Innanzitutto, TMDS minimizza le transizioni del segnale per ridurre le emissioni EMI. In secondo luogo, sia TMDS che 8b / 10b sono protocolli bilanciati CC, quindi i condensatori di blocco CC possono essere utilizzati per eliminare i problemi con i circuiti di massa. In terzo luogo, 8b / 10b garantisce una densità di transizione sufficientemente elevata da consentire il recupero del clock sul ricevitore poiché DisplayPort non distribuisce un clock separato.

Inoltre, per HDMI e DisplayPort, i dati audio vengono inviati anche alla scheda grafica per la trasmissione al monitor. Questi dati vengono inseriti in pause nel flusso di dati tra i frame video. In questo caso, la scheda video si presenterà come un sink audio al sistema operativo e i dati audio verranno trasferiti tramite DMA alla scheda per l'inclusione con i dati video.

Ora, probabilmente ti rendi conto che per un display 1920x1080 con 4 byte per pixel, sono necessari solo circa 8 MB per memorizzare l'immagine, ma la RAM video nel tuo computer è probabilmente molte volte quella dimensione. Questo perché la RAM video non è destinata esclusivamente alla memorizzazione del framebuffer. La RAM video è direttamente collegata alla GPU, un processore appositamente progettato per un rendering 3D e una decodifica video efficienti. La GPU utilizza il suo accesso diretto alla RAM video per accelerare il processo di rendering. In effetti, ottenere dati dalla memoria principale nella memoria video è un po 'un collo di bottiglia in quanto il bus PCI che collega la scheda video alla CPU e la memoria principale è significativamente più lento rispetto alla connessione tra GPU e RAM video.


7

Le varie uscite di visualizzazione moderne sono essenzialmente flussi di bit seriali. Il bitrate è troppo alto per un processore (o se potesse tenere il passo richiederebbe troppo tempo di elaborazione). Un pezzo di memoria è messo da parte per contenere i bit dell'immagine. Un componente hardware dedicato legge il contenuto della memoria e lo trasmette in streaming. Questo pezzo è simile a un controller DMA e in realtà abbastanza semplice. È solo una piccola parte di una GPU moderna, che si occupa principalmente di creare quell'immagine in memoria da comandi GPU di livello superiore.

La memoria che contiene l'immagine video può far parte della memoria principale (economica) o di una memoria dedicata a cui è possibile accedere simultaneamente da 'DMA' e CPU e / o GPU. Il "DMA" deve essere configurato con vari parametri, ad esempio la larghezza e l'altezza dei pixel, l'intensità del colore, la posizione iniziale in memoria, ecc.

Sui computer moderni la GPU è un processore (molto specializzato) che rivaleggia con la velocità della CPU principale (e la supera di per sé). Fa cose come generare un'immagine psuido-3D da un gruppo di oggetti 3D con trame e fonti di luce. Tutto ciò può essere fatto all'interno della memoria video, dalla GPU. La CPU fornisce solo oggetti, trame e fonti di luce.

Leggere i dati video dalla memoria e spostarli è un processo piuttosto semplice, ma deve essere fatto abbastanza velocemente e sempre. Quindi questo compito è adatto all'hardware dedicato e inadatto a una CPU. AFAIK gli ultimi computer che hanno coinvolto la CPU nella generazione del segnale video sono stati lo ZX80 / 81 e lo spettro. Su quelli la CPU poteva fare il suo lavoro solo durante il tempo di ritracciamento (verticale?).


1
Questa è un'ottima informazione. Quindi il controller DMA (o hardware simile) accede direttamente alla memoria video? E su un sistema con grafica integrata che utilizza la RAM di sistema accede direttamente alla RAM di sistema? Ci scusiamo per la semplicità delle mie domande. Sono un grande fai-da-te, quindi tendo a saltare in cose di livello superiore con conoscenze di livello inferiore. :)
Craig Lafferty,

E come follow-up, come fa il controller a sapere da quale indirizzo RAM "rubare" il frame? I frame / bitmap vengono sostituiti molto rapidamente e spostati, suppongo.
Craig Lafferty,

Il tuo ultimo commento è corretto: è memorizzato in un framebuffer e per i video analogici viene passato a un RAMDAC . L'indirizzo del framebuffer può essere riparato o specificato in un registro di controllo. Esistono vari trucchi che coinvolgono lo scambio di framebuffer tra o durante i frame o su alcuni sistemi (Amiga) che cambiano la modalità video a metà del frame.
pjc50,

Perché il processore dovrebbe essere rallentato? Non è già necessario elaborare il video affinché il controller sia in grado di utilizzarlo? Ho intenzione di fare un'altra ipotesi qui e dire che il controller legge la RAM più e più volte e la CPU / GPU aggiorna la RAM con nuove informazioni sul display solo quando qualcosa è cambiato, quindi ad esempio la GPU inserirà la mia schermata corrente in la sua RAM e quando sposto il cursore aggiorna i pixel che sono stati modificati. Nel frattempo il controller legge la RAM 60 circa una volta al secondo (tipo di FR standard immagino).
Craig Lafferty,

1
La RAM video non viene utilizzata solo per la memorizzazione dell'immagine di visualizzazione, ma viene anche utilizzata internamente dalla GPU per la memorizzazione dei dati di scena che vengono renderizzati nel framebuffer. Questo può occupare molto spazio perché la GPU ha bisogno di accedere alle mesh 3D dettagliate degli oggetti insieme a tutti i dati delle trame per le loro superfici.
alex.forencich,
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.