Quindi la potenza è reale, ma in alcuni ambiti non riesce a esprimersi completamente?
Per fare un parallelismo: è come una macchina con un motore che genera tot cavalli, ma se poi trasmissione, sospensioni, aerodinamica, etc. non sono all'altezza può farsi bagnare il naso in pista da una con meno cavalli?
se torni indiero alle prime 50 pagine di questo thread o di quello su polaris è stato accennato.
in sintesi la questione è che sia AMD che nvidia non usano le API, ma le interpretano tramite driver sulle loro architetture.
l'arichitettura AMD puo' eseguire molti calcoli piccoli, mentre quella Nvidia puo' sviluppare calcoli grandi ma in numero limitato.
se usi il modo di operare di AMD devi, per forza di cose, usare molte unità per sviluppare i calcoli necessari, ma ad ogni passaggio di unità perdi cicli di computo a causa di cicli si spostamento.
meno sposti i dati, piu' le unità hanno il tempo di calcolare i risultati.
Nvidia incece ha affrontato la cosa con unità in cui la richiesta entra ed esce il risultato, senza dover mai spostare i dati e saltare da unità ad unità.
ad oggi, con le API che si usavano, la frammentazione dei dati era ridotta (DX11 vanno con massimo 4 thread principali, 8 se si usano le DX11.3 delle console).
DX 12 e vulkan (emanazione diretta di manlte) hanno invece una granulometria piu' fine dei dati.
spezzettano di piu' la catena delle operazioni, quindi unità piu' piccole hanno la possibilità di produrre per intero il dato, mentre unità piu' grandi sarebbero sottoutilizzate.
calcolo asincrono, insomma.
con la vecchia architetura sotto hawaii almeno il 33% del tempo era dedicato allo spostamento dati e non al calcolo (e quando sposti... esegui comunque un'operazione, e scaldi di conseguenza).
in DX12, con maxwell, nvidia è impossibilitata a spezzettare le sue operazioni, dovendo eseguire il calcolo su una unità molto grande, ma sfruttata per metà, e dovendo poi estrarre il dato dall'unità saltando tuti gli stadi non necessari (flushing dell apipeline) che comporta quindi spostamento e perdita di cili operazionali dedicati al calcolo puro.
su Polaris AMD ha cercato di trovare il modo di aggregare piu' unità, di per se sempre separate, ma in cui l'uscita da una unità di calcolo era già l'entrata dell'altra, eliminando operazioni di spostamento (cluster a 16 SP), ed infatti in DX11 le cose son migliorate parecchio.
dall'altro versante nvidia, con pascal, ha optato per dividere a metà le sue unità di calcolo, in modo da non dover sottoutilizzarle su codice piu' frammentato.
con Vega e Volta entrambe si troveranno a gestire unità di calcolo degnamente variabili a seconda del codice usato, con Vega che puo' evitare le operazioni si spostamento ancora meglio di polaris, recuperando il gap in DX11, e Volta che invece, se lo fanno realmente come V100 con i tensor core (ma decisamente piu' piccoli, perchè un tensor core V100 è per calcoli FP128, ossia potrebbe sviluppare 2x doppia precisione, cosa del tutto inutile sul gaming), a questo punto capace di frammentare maggiormente le sue unità e quindi recuperare in DX12 e AC/ACE.
per dirla in breve AMD sono già 5 anni che punta ad un codice altamente parallelizzato, ma per questo ha dovuto trascurare il modo di sviluppo dei giochi che da 5 anni a questa parte veniva operato, dovendo usare i driver come "traduttore in tempo reale".
a mano a mano il codice si è sempre piu' spostato verso una parallelizzazione maggiore (dx9 con 1 o 2 thread, dx 10 con 2, dx11 con 4, ed ora dx12... ma solo le DX12 t3 sono quelle che permettono ben oltre 4 thread).
nvidia invece ha sempre puntato su un'architettura adatta al tipo di parallelizzazione che si usava nel periodo, facendo diventare "vecchie" le sue vecchie architetture ad ogni generazione, perchè poco adatte al nuovo tipo di parallelizzazione dei giochi (incappava, in pratica, nella stessa problematica di AMD: dover sommare piu' unità e perdere tempo ha farlo, e non sempre a sviluppato driver per 2 successivi salti... le schede pensate per le DX9 non sono adatte alle DX11 sia per l'HW, ma soprattutto per il driver, che ha elevati costi per fare questo).
ecco perchè ancora c'e' gente con una 7000 e invece le 6xx d'invidia non sono piu' efficienti nemmeno in dx11, ma una 7000 è comunque inadeguata oggi per le DX12, o meglio, le unità utilizzate per le top oggi sono ad appannaggio della serie base di AMD, e tanto possono dare.
AGGIUNGO:
al meglio dell'espressione delle DX12 e DX11 di per se non cambia nulla per il gioco.
se fai 100fps usando le DX11 ne puoi produrre al massimo 100 con le DX12.
è il rendimento di calcolo che conta.
DX12 comportano comunque piu' lavoro per l'HW e soprattutto per la CPU, ma è anche una questione di che tipo di HW hai.
se usi un quad core al massimo puoi allocare 4 thread intensivi, sennò vanno in concorrenza sulle risorse HW della CPU; fai il gioco in DX11 e usi 4 thread, ma per ottenere prestazioni superiori devi aumentare per forza il clock della CPU.
in DX12 invece puoi usare almeno 8 thread, quindi su un octacore puoi sfruttare tutte le risorse HW che ha, ma a questo punto, anche se il lavoro aumenta perchè devi gestire piu' thread (ti sforzi sia nel separare, ma anche nel riaccorpare i calcoli), alla fine hai comunque il doppio dei core, e puoi permetterti di andare poco piu' della metà della frequenza del quadcore...
il punto essenziale è questo: la potenza di una 1080 Ti è arrivata a saturare un quadcore a 5ghz se il suo lavoro è leggero (FHD); se scendi a risoluzioni inferiori non ottieni piu' frame perchè la CPU non ce la fà.
usando un octacore a 3Ghz invece puoi ancora incrementare (solo se il gioco sfrutta realmente 8 thread).
prendiamo un esempio: un gioco che scala bene in SLI, ma per cui un 7700K a 5Ghz già è al limite in FHD con una sola 1080 Ti; usi 2x 1080 Ti non ottieni incrementi prestazionali... le GPU se la spassano e la CPU stà tirata al collo.
il problema è che domani avrai GPU singole con la potenza di uno SLI di 1080 Ti, ma cercare di spingere un 7700K o suo successore oltre i 5Ghz diventa impraticabile.
ecco perchè si deve passare a DX12... usi un ocracore a 3.5ghz, che vale come un quad a 7ghz per il quale il lavoro di separazione ed unione ti fà spendere il 10% in piu' di risorse, ma hai sempre la potenza computazionale di un quadcore a 6.3ghz, e sei a posto.
purtroppo pero' non sappiamo come và Vega, non sappiamo chi è Volta, non conosciamo i nuovi motori grafici, e tutto diventa molto confuso nel prevedere cosa succederà..