Colli di bottiglia e tempi di rendering

Le DirectX 12 sono disponibili dal debutto di Windows 10, ma ancora non ci sono giochi che le sfruttino. Abbiamo usato l'ultima beta di Ashes of the Singularity per esaminare le prestazioni attuali di Radeon e GeForce in DirectX 12.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Le origini dei colli di bottiglia

Prima di entrare nel vivo dell'analisi dei dati diamo un altro sguardo alla stringa di comandi fissi sotto DirectX 11 e predecessori. Il grafico mostra che il carico su ogni core non è nemmeno vicino alla parità, ed è necessario un sacco di tempo affinché vediate il risultato finale, che nel log è chiamato Present Time. È interessante vedere anche la grande quantità di tempo spesa dal driver e dalla CPU.

DX11 01

Clicca per ingrandire

Lo stesso scenario appare molto diverso con le DirectX 12. Il carico su ogni core è distribuito in modo più uniforme, portando a più operazioni completate in parallelo. Il tempo speso dal driver è ora diffuso su tutti i thread. Non è che il processo richieda meno tempo di calcolo al processore, ma il tempo per raggiungere il Present Time è tagliato nettamente perché parti del processo sono svolte in parallelo.

DX12 01

Clicca per ingrandire

Batch (Comandi GPU)

Abbiamo iniziato confrontando il numero di comandi GPU (batch) per frame renderizzato. Emerge che questo rapporto oggi non è del tutto differente per diverse CPU o persino differenti produttori.

08 1 FHD Batches r 600x450

08 2 QHD Batches r 600x450

08 3 UHD Batches r 600x450

Tempo CPU

L'analisi sopra è solo un punto di partenza. Dobbiamo esaminare come il carico della CPU è distribuito analizzando la percentuale di tempo in cui la CPU è in uso. Anche facendo un buon uso della parallelizzazione questo misura è ancora un'immagine speculare delle prestazioni di gioco. Le schede video veloci producono più frame nello stesso periodo di tempo rispetto a quelle più lente, e questo significa che anche la CPU deve completare più operazioni nello stesso periodo di tempo.

05 1 FHD CPU Time r 600x450

05 2 QHD CPU Time r 600x450

05 3 UHD CPU Time r 600x450

Collo di bottiglia CPU

Quindi, qual è il punto in cui la CPU diventa un collo di bottiglia? Quando troppi pochi core lavorano sulle operazioni per far sì che siano svolte in tempo a causa dell'assenza di parallelizzazione, o se non c'è sufficiente potenza di calcolo disponibile tra tutti i core che lavorano in parallelo. In quest'ultimo scenario, fondamentalmente, la CPU non è sufficientemente veloce per tenere il passo della GPU, anche quando lavora al massimo della capacità.

Ci sono altri potenziali colli di bottiglia legati alla CPU. Per esempio quando un sacco di dati sono gestiti in parallelo e poi devono essere passati avanti e indietro tra gli altri sottosistemi, qualche altra interfaccia potrebbe rallentarvi.

04 1 FHD CPU Bound r 600x450

04 2 QHD CPU Bound r 600x450

04 3 UHD CPU Bound r 600x450

Più la GPU è occupata, più facile è per la CPU fare il proprio lavoro. Questo effetto è facile da vedere quando si confrontano le differenti risoluzioni. La Radeon R9 Fury X di AMD sfrutta questo trend molto bene. È una scheda video veloce ma non mette sotto torchio la CPU come altre soluzioni nel suo segmento. Chiaramente, la parallelizzazione migliora marcatamente tra le architetture Hawaii e Fiji.

Tempo legato ai driver

Abbiamo visto che un sacco di tempo di rendering del frame è consumato dal driver. AMD perde un sacco di tempo in più in questo modo rispetto a Nvidia. Questo fenomeno potrebbe essere attribuito all'overhead del drive, ma nuovamente, far girare più operazioni asincrone crea del lavoro aggiuntivo.

06 1 FHD Driver Time r 600x450

06 2 QHD Driver Time r 600x450

06 3 UHD Driver Time r 600x450

Present Time

Il Present Time è il tempo richiesto per mostrare effettivamente il frame a chi osserva. Di conseguenza è l'ultimo passo. Il tempo complessivo varia leggermente a seconda della risoluzione. Questo è dovuto all'influenza della risoluzione sui colli di bottiglia della CPU che abbiamo discusso prima, e il carico aggiuntivo della GPU con risoluzioni maggiori. Se la GPU è il collo di bottiglia, il Present Time è davvero breve, dato che la CPU ha già avuto un sacco di tempo per terminare i suoi calcoli.

07 1 FHD Present Time r 600x450

07 2 QHD Present Time r 600x450

07 3 UHD Present Time r 600x450

Tempo di rendering, conclusione

AMD è la vincitrice con le schede video attuali. La vera parallelizzazione e l'esecuzione asincrona di operazioni sono migliori rispetto alla suddivisione delle operazioni tramite una soluzione basata sul software. Non è totalmente chiara la differenza in scenari di gioco reali, ma è certamente una tecnologia che potrebbe avere un uso maggiore in futuro.