Come può un processore essere reso più veloce con un aggiornamento "software"?


120

I nuovi processori AMD Ryzen sono sul mercato e sfortunatamente sembrano mancare nei giochi. I processori Intel sono ovviamente ancora più veloci per i giochi. Le persone ovviamente non erano favorevoli a questo e AMD ha fatto una dichiarazione affermando che stanno aggiornando il firmware o il software per accelerare Ryzen per i giochi.

Correggimi se sbaglio ma il processore deve avere un firmware statico per essere compatibile con lo standard x64? In tal caso AMD non dovrebbe ottimizzare i giochi (software) per i loro processori, il che è ovviamente impossibile? Cosa sta succedendo lì per dire queste cose se sembra impossibile vedere le condizioni sottostanti?

Ma potrei sbagliarmi (lo spero) quindi la domanda è:

È possibile ottenere uno speedup per un processore senza modificare l'hardware sottostante? Se è possibile, come si fa? Esiste un software accanto al firmware per il processore?


71
Potresti voler cercare su Google il termine "microcodice".
PlasmaHH


10
Il firmware potrebbe essere buono o cattivo o semplicemente non "buono per l'applicazione". x86 non definisce i tempi delle istruzioni, quindi l'aggiornamento del firmware (microcodice) per migliorare i tempi delle istruzioni non compromette la compatibilità x86. Esistono alcuni motivi potenziali per cui questo è fattibile e potrebbe essere necessario: 1) il microcodice iniziale è un lavoro rapido e non ottimale; 2) il microcodice iniziale funziona bene quando il programma è compilato per Ryzen, ma non se il programma è compilato per x86 generico o per il processore intel, che è la maggior parte del software esistente.
user3528438

15
Un aggiornamento del microcodice può migliorare i tempi di istruzione ma c'è molto di più. Le CPU moderne fanno cose come la previsione dei rami, l'esecuzione speculativa, l'esecuzione fuori ordine e altro che può migliorare significativamente le prestazioni. Tutto questo è controllato da microcodice. Le ottimizzazioni dei microcodici richiedono tempo e spesso le merci scarseggiano in un'azienda competitiva.
LMiller7

4
Immagina di correre e, per qualche motivo, ti rifiuti di piegare la gamba sinistra. Questo ti renderà scomodo e lento: puoi facilmente aumentare la tua velocità di corsa usando in modo più efficiente lo "stesso hardware" della gamba e piegandolo in modo più efficace. La modifica delle istruzioni del "cervello" sulla gamba aumenta notevolmente le prestazioni.
Enderland

Risposte:


123

I processori moderni sono molto più complicati di quanto si possa pensare. Sono incredibilmente complicati, quasi al di là della comprensione di una sola persona. Espandendo una breve osservazione di "horta", si potrebbe avere tutto quanto segue:

  1. Per cominciare, quasi tutto l'hardware interno è configurabile in larga misura. Esistono migliaia e migliaia di registri di configurazione con miliardi di singoli bit che devono essere impostati affinché una CPU funzioni. Tutti i diversi livelli di interazione CPU-cache hanno pipeline configurabili e vari ritardi di temporizzazione hanno ovviamente un effetto sulle prestazioni complessive.

  2. Esistono centinaia di funzionalità avanzate che vengono messe lì dagli architetti che l'ingegneria non ha avuto il tempo di validare, quindi centinaia di funzionalità sono disabilitate o impostate in una configurazione a prova di errore con "bit di pollo" . Ma possono essere sintonizzati e abilitati se trovati funzionali e utili. Queste funzionalità avanzate di solito vengono validate in modo approfondito nel tempo e possono essere gradualmente abilitate nel corso della vita di un processore da varie patch di microcodice.

  3. Tutte le CPU recenti hanno diverse unità interne che sono controllate da microprocessori indipendenti incorporati nel chip CPU x86. Un'unità emersa pubblicamente è la P-Unit. I processori moderni non possono funzionare senza una gestione aggressiva della potenza o si scioglieranno. Tuttavia, la gestione approfondita dell'alimentazione è in contraddizione con una politica aggressiva di clock / tensione di ingresso / uscita e le modifiche alla politica incidono fortemente sulle prestazioni complessive del sistema. Tutti i dettagli sono controllati dall'unità P e possono essere ottimizzati / sintonizzati caricando un'altra patch di microcodice, come indicato qui.

  4. Molti altri aspetti dell'interconnessione interna sono controllati da vari processori integrati aggiuntivi, che possono essere corretti caricando patch microcodice in essi o aggiornando il BIOS se ha accesso a queste risorse di configurazione.

In breve, mentre l'hardware della CPU è effettivamente cablato, la configurazione di detto hardware definisce praticamente le sue prestazioni e può essere ottimizzata per migliorare le prestazioni del sistema mediante aggiornamenti del BIOS e patch di microcodice incorporate.


Non sono sicuro di quale risposta dovrei accettare. La risposta di @ bwDraco va bene, ma la tua risponde perfettamente alla risposta più dura, anche se la sua risposta sta fornendo informazioni specifiche sul problema.
Arthur PR,

Bene, dovresti accettare questa risposta. Provieni da un background elettronico, quindi sembra che tu sia interessato al firmware della CPU (non alcuni cambiamenti di Windows). @ ArthurP.R.
AnoE

3
@ ArthurP.R. Se le persone di benchmarking hanno scoperto che Windows non pianifica correttamente le attività sui processori multithread (tratta i thread come core indipendenti), significa che AMD ha in qualche modo rovinato i descrittori del processore / qualunque cosa, quindi Microsoft non può capirli. Se i descrittori possono essere patchati secondo gli standard Microsoft mediante un meccanismo di aggiornamento, questa sarebbe una soluzione semplice per il primo ordine. E hai fatto una domanda generale, quindi questo risponde. :-)
Ale..chenski

Ecco perché ho accettato la tua risposta anche se la risposta di @bwDraco è anche qui
Arthur PR

102

Una varietà di problemi software sia a livello di sistema operativo sia a livello di applicazioni sta causando prestazioni non ottimali.

I processori Ryzen a otto core sono costituiti da due complessi core (CCX) ciascuno con quattro core e 8 MB di cache L3. L'accesso alla cache L3 su un CCX diverso è più lento a causa della necessità di spostare i dati più avanti lungo l'Infinity Fabric (interconnessione cache-proprietaria di AMD), il che significa che lo spostamento di thread da un CCX a un altro o la comunicazione tra core su CCX diversi comporta prestazione ridotta. Questa penalità ricorda ciò che accadrebbe su un server multi-socket che esegue un sistema operativo che non è compatibile con NUMA .

Sembra che Windows abbia la tendenza a spostare semplicemente i processi su diversi core e non riconosce la penalità di comunicazione tra CCX . Ciò significa che Windows può inserire thread su CCX diversi anche quando ciò non è necessario , riducendo le prestazioni.

Il recensore tedesco PC Games Hardware ha testato un Ryzen 7 1800X con un numero variabile di core disabilitato e ha scoperto che avere due CCX con due core abilitati su ciascuno produce prestazioni più lente rispetto a un CCX abilitato con tutti i suoi core intatti:

Risultato benchmark hardware per giochi per PC: Battlefield 1

Ciò nonostante il fatto che avere un solo CCX abilitato significhi che sono disponibili solo 8 MB di cache L3, anziché i 16 MB completi. Dall'articolo Hardware giochi per PC, tramite Google Translate (enfasi aggiunta):

[...] È molto più interessante riconoscere il fatto che i trasferimenti di dati CCX interferiscono l'uno con l'altro in ogni caso - a volte di più, a volte meno chiaramente. I vantaggi della cache L3 più grande (configurazione 2 + 2) non si trovano da nessuna parte in questa serie di misurazioni.

Questo articolo Prospettiva PC mostra che esiste una latenza di comunicazione sostanziale tra i core su CCX diversi, ma una latenza molto ridotta quando si comunica con i core sullo stesso CCX. Si noti che questo articolo suggerisce che Windows è a conoscenza del design di CCX ed evita di pianificare thread su CCX diversi ma i membri della comunità hanno trovato risultati contrastanti.


Molti (ma non tutti) gaming benchmarks mostrano un aumento delle prestazioni quando SMT è disabilitato. Tuttavia, voci che affermano che Windows pianifica in modo errato come se ogni thread hardware come il proprio core non fosse corretto . Secondo AMD, questo è causato dal fatto che molte app sono ottimizzate solo per i processori Intel (il che non è inaspettato dato che AMD è stato MIA dal mercato dei processori di fascia alta per circa cinque anni). AMD afferma che stanno lavorando con centinaia di sviluppatori di giochi per migliorare le prestazioni sui processori Ryzen. Tuttavia, sospetto che un aggiornamento di Windows possa ancora essere d'aiuto sintonizzando in modo più preciso lo scheduler per le caratteristiche dell'architettura Zen .

L' esempio seguente di Tom's Hardware mostra prestazioni degradate con SMT abilitato:

Risultato benchmark di Tom's Hardware: Ashes of the Singularity

TechSpot ha effettuato un'analisi approfondita delle prestazioni di gioco con SMT abilitato e disabilitato e ha prodotto risultati molto simili:

Risultato benchmark TechSpot: Deus Ex: Mankind Divided


Ci sono anche problemi di gestione dell'alimentazione implicati in questi test. La stessa dichiarazione AMD rileva che Windows non è pienamente consapevole delle nuove funzionalità di Ryzen come il core parking e il cambio rapido della frequenza di clock. Ciò è coerente con i miglioramenti delle prestazioni riportati dall'hardware Tom durante l'utilizzo del piano di alimentazione ad alte prestazioni (vedere la tabella sopra, HP = Prestazioni elevate). Un aggiornamento a Windows può aggiungere il supporto per queste funzionalità e migliorare le prestazioni.


12
Non sono sicuro di seguire. L'OP afferma esplicitamente che poiché l'ottimizzazione del gioco per Ryzen è fuori discussione in questa fase e i bug di Windows sono ancora una storia più lunga, in che modo questa risposta aiuta a capire come gli aggiornamenti del firmware possano sperare in un miglioramento delle prestazioni?
Ale..chenski

11
Sta essenzialmente dicendo che Windows sta incasinando totalmente come / dove sta allocando i thread - causando problemi di prestazioni.
Journeyman Geek

2
@JourneymanGeek, qualsiasi Windows decente (non sono sicuro che W10 si qualifichi) ha sempre il controllo esplicito dell'affinità di base con un processo, e deridere con l'affinità è sempre stato il primo strumento nel benchmarking. Cosa c'è di nuovo allora?
Ale..chenski l'

4
Sfortunatamente sì, ma gli aggiornamenti del kernel sono in lavorazione. Probabilmente dovrai aspettare il kernel 4.12; 4.11 porta alcune correzioni ma non è del tutto lì. phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11
bwDraco

7
@Crouchingkitten AMD può fornire solo driver e non aggiornamenti del sistema operativo. Tali elementi non si trovano nel pool di attività AMDS.
Arthur PR,

9

http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/

1) I primi BIOS della scheda madre erano sicuramente problematici: disabilitando le funzionalità non correlate si spegnevano i core. L'impostazione di overclock della memoria su alcune schede madri disabiliterebbe il boost. Alcune revisioni del BIOS genererebbero prestazioni universalmente soppresse.

2) Ryzen beneficia della disabilitazione dei timer per eventi ad alta precisione (HPET). La risoluzione del timer di HPET può causare un effetto osservatore che può sottrarre le prestazioni. Questa è un'opzione BIOS o una funzione che può essere disabilitata dalla shell dei comandi di Windows.

3) Ryzen beneficia dell'abilitazione del profilo di potenza ad alte prestazioni. Questo sostituisce il parcheggio principale. Alla fine avremo un autista che consente alle persone di rimanere in equilibrio e disabilitare comunque il parcheggio principale. I giocatori lo fanno anche da un po '. Ho sbagliato, qui. Voglio chiarire il vantaggio: la modalità ad alte prestazioni consente alla CPU di aggiornare la sua tensione / velocità di clock in 1ms, rispetto ai 30ms che assume la modalità bilanciata. Questo è ciò che il nostro autista realizzerà. Ci scusiamo per la confusione!

Quindi la vera domanda non è come può un aggiornamento BIOS / firmware rendere più veloce un processore (può fare, ottimizzazione di microcodici ecc ...) è di più ... quanto paralizzato è una CPU con BIOS / firmware difettoso


Mi dispiace per aver fatto la domanda sbagliata. Ho pensato che sarebbe adatto soprattutto perché sono interessato anche a informazioni non banali.

np, forse è abbastanza astratto per rimanere. Sto seguendo Ryzen mentre sto pianificando una grande ricostruzione, quindi sto seguendo tutti i problemi di dentizione. Come utente Linux seguo anche problemi specifici di Linux. Una cosa da considerare con Ryzen (e il core zen) è che questo è il primo SMT di AMD e le indicazioni iniziali sono che riporta core logici in modo diverso rispetto a Intel e BIOS / Windows potrebbero tentare di usare tutti i "core" come core fisici quando la metà è logica nuclei. Ciò influenzerebbe SIGNIFICATIVAMENTE le prestazioni
Naib

Le risposte, i commenti e le riflessioni su questa domanda sono molto importanti, penso perché le persone hanno bisogno di sapere se le cose possono andare ancora meglio e finora ho visto che ora posso sperare di nuovo. A proposito l'articolo è molto, molto buono!

Per informazioni specifiche su Ryzen ... forum.gentoo.org/viewtopic-t-1057910.html Un gruppo di noi sul post del forum di Gentoo e discute quando riceviamo informazioni. In questo momento per Linux i driver audio mobo sono solo in git, allo stesso modo non esistono monitor termici ... L'HPET e le questioni fondamentali sono una preoccupazione immediata. In questo momento AMD mette completamente al tappeto Intel per puro calcolo
Naib

1
fino a un certo punto sì. Sostengo la mia affermazione che per Ryzen viene paralizzato, quindi BIOS / driver "accelereranno"
Naib

6

Il BIOS è generalmente pensato come firmware. Il BIOS può modificare tutti i tipi di bit nell'hardware per modificare la modalità di funzionamento del sistema

Quindi sì, è del tutto fattibile per loro far uscire il nuovo firmware e per cose come la velocità di clock, o se i prefetch sono abilitati o se un certo core - o IIO - può ottenere determinate preferenze nella cache che ha il potenziale per aumentare le prestazioni di gioco a causa alla maggior parte dei giochi progettati in modo a thread singolo.


Sembra interessante, è possibile trovare riferimenti per questo? Sarebbe molto bello averne qualcuno per dimostrarlo alla gente :)

@ ArthurP.R. Tra pcode, ucode (microcode) e bios, le prestazioni e la funzionalità di un chip possono essere notevolmente modificate. Questi sono tutti software / firmware. Per quanto riguarda la fonte, no, non posso darti alcuna fonte esterna per queste informazioni (dato che è tutto interno).
horta,

Che peccato @horta comunque molte grazie per queste informazioni. Sentiti libero di modificare la tua risposta per includere anche queste informazioni. Ne vale la pena!

4

Non è tanto che gli aggiornamenti software renderanno il processore più veloce. Ciò che tutti si aspettano è che gli aggiornamenti del software rendano il software più adatto all'architettura di Ryzen e in grado di sfruttare al meglio le sue prestazioni.

Correggimi se sbaglio ma il processore deve avere un firmware statico per essere compatibile con lo standard x64?

Quasi. C'è un software nella CPU (microcodice, come menzionato sopra) e può influenzare le prestazioni. Fondamentalmente X86 specifica solo i risultati delle operazioni, il modo in cui esattamente la CPU raggiunge questi risultati è il problema degli ingegneri. Le probabilità di modifiche al microcodice che svolgono un ruolo importante con Ryzen sono ridotte, poiché il divario di prestazioni sembra applicarsi principalmente ai giochi che suggeriscono che la CPU funziona bene, ma alcuni giochi in particolare non lo sfruttano bene.

Il sistema operativo è responsabile del tentativo di assicurarsi che i programmi siano distribuiti in modo efficiente nella CPU, il che può influire sulle prestazioni, ma in linea generale nessuno di questi fattori è il problema principale per una nuova architettura. La maggior parte dei miglioramenti delle prestazioni in casi come questo deriva dal fatto che gli sviluppatori scrivono codice più adatto alla nuova architettura. Questo tende a non accadere tra generazioni di CPU Intel poiché i cambiamenti di progettazione non sono tremendamente significativi, quindi ciò che funziona bene su uno probabilmente funzionerà bene su un altro.

Ryzen, tuttavia, è un progetto completamente nuovo, quindi tutto ciò che è stato scritto per adattarsi ad altre CPU per definizione non è stato scritto per soddisfare Ryzen.

Per semplificare eccessivamente la situazione, immagina due processori:

  • Processor One è sul mercato da un po 'di tempo ed è (per qualsiasi motivo) molto veloce nell'aggiungere numeri. Il software è progettato per cercare di utilizzare l'aggiunta il più possibile, per sfruttare questa capacità.

  • Un processore concorrente arriva sul mercato ed è più debole in aggiunta, ma più forte in moltiplicazione. Tutto il software ottimizzato per l'uso di istruzioni più pesanti comporta prestazioni non ottimali sul nuovo processore, ma il software che non è stato personalizzato per utilizzare molte aggiunte funziona in modo più o meno simile. Alcuni software potrebbero già fare moltiplicazioni e faranno meglio sulle nuove CPU rispetto a quelle sul Processore Uno, anche il giorno del lancio.

Qualche tempo dopo il lancio, gli sviluppatori inizieranno ad adattarsi, utilizzando una maggiore moltiplicazione nel loro software, o persino progettando il proprio software per passare da percorsi di codice ad addizione pesante a percorsi di moltiplicazione a seconda dell'architettura della CPU utilizzata.

Questo è un po 'quello che sta succedendo con Ryzen: è una nuova architettura che gli sviluppatori di software non hanno ancora ottimizzato per adattarsi alle caratteristiche di. Con il passare del tempo, gli sviluppatori inizieranno a modificare il proprio software per ottenere prestazioni migliori. Poiché la maggior parte dei software è già progettata per funzionare bene con le CPU Intel (sono abbastanza popolari, dopo tutto!), Probabilmente non trarranno molto beneficio da questi cambiamenti.

Ci sono alcuni carichi di lavoro in cui Intel rimarrà semplicemente più veloce e alcuni in cui Ryzen è già più veloce (e diventerà ancora più veloce) a seconda del comportamento sottostante. Nella situazione che ho indicato sopra, un software che deve solo aggiungere cose funzionerà sempre meglio sul primo processore, e il software che deve semplicemente moltiplicare le cose funzionerà sempre meglio sul secondo, ma per la maggior parte il software è complesso e queste differenze si livelleranno leggermente.

In tal caso AMD non dovrebbe ottimizzare i giochi (software) per i loro processori, il che è ovviamente impossibile?

Vale anche la pena notare che ciò che AMD ha effettivamente detto sulle prestazioni di gioco è che stanno lavorando con gli sviluppatori per ottimizzare i giochi. Stanno inviando sistemi di sviluppo alle aziende (attualmente ce ne sono 300 allo stato brado e puntano a 1000 entro la fine dell'anno) e stanno parlando con quelli i cui giochi funzionano male per aiutare a risolvere il problema. Per quanto ne so, non è stata fatta alcuna dichiarazione secondo cui AMD sta ottimizzando i giochi stessi.

In questo caso particolare, Ryzen viene anche trattenuto in alcune circostanze da Windows che prende decisioni sbagliate su quali core caricare con il lavoro, e gli attuali BIOS sono problematici per motivi che semplicemente non pretendo di conoscere. Tuttavia, tali problemi non possono essere responsabili di tutto il gap prestazionale, in quanto vi sono carichi di lavoro in cui Ryzen supera già Intel in modo convincente, il che suggerisce che il problema è almeno parzialmente (se non principalmente) dovuto ai programmi specifici in esecuzione, piuttosto che il sistema operativo o il BIOS nel suo insieme.


Anche questa risposta è interessante e interessante. Grazie.
Arthur PR,

1

Naturalmente il software può migliorare le prestazioni della CPU o persino della GPU.

Un modo è sicuramente l'overclocking o qualche altro tipo di meccanismo di modifica dell'orologio. Il secondo può essere l'ottimizzazione del driver. Questi includono migliori metodi di compressione dei dati, algoritmi di decodifica più veloci, ecc ... fondamentalmente funzionalità che aiutano a utilizzare meglio l'hardware meglio. Queste funzionalità possono essere aggiornate anche tramite aggiornamenti del firmware, che non sono realmente (regolari) software. Quindi c'è un software che può controllare la soluzione di raffreddamento del tuo computer. Ciò è molto utile per CPU e GPU che utilizzano tecnologie di miglioramento delle prestazioni come il Turbo boost di Intel e il GPU boost di Nvidia. Hardware di questo tipo hanno determinati limiti di temperatura, quindi riducono le loro prestazioni, quando sono troppo caldi e si overcloccano dinamicamente, quando le app richiedono una potenza di elaborazione maggiore, purché non abbiano raggiunto la massima potenza assorbita e "

Ci sono anche altre opzioni, ma queste lo riguardano principalmente. Fondamentalmente, fintanto che conosci il problema e puoi manipolare programmaticamente il modo in cui i dati vengono elaborati (come introdurre un algoritmo di decodifica intelligente che sostituisce un tipo di soluzione "forza bruta") o manipolare le reazioni del processore a diversi fattori chiave delle sue prestazioni (come aumentare il raffreddamento in modo più aggressivo in caso di surriscaldamento o monitoraggio delle esigenze di risorse delle applicazioni e overclocking dinamico se stesso quando è necessaria una maggiore potenza di elaborazione), è possibile fare molto per migliorare (o peggiorare) le prestazioni di un'unità di elaborazione.

Nel caso di AMD, è probabilmente un'ottimizzazione del suo meccanismo di potenziamento o della sua soluzione di raffreddamento. Uno o entrambi questi sono stati probabilmente modificati per reagire in modo più aggressivo all'aumento del carico o della temperatura.

TL; DR: Sì, il software può migliorare le prestazioni di un processore. Esistono molti modi per eseguire, come l'ottimizzazione del driver e del firmware, gli overclock, ecc. Qualsiasi modifica del software che prepara i dati in modo che sia più facile da elaborare o che l'hardware reagisca meglio al carico o che i suoi limiti molto probabilmente porteranno ad un aumento delle prestazioni.


-1

Gli aggiornamenti del software possono sicuramente rendere il sistema (incluso il processore) più veloce.

Un esempio estremo di questo sono i grandi computer mainframe IBM: puoi acquistare più tempo CPU online e tutto ciò che ottieni è una chiave di licenza che devi inserire nel tuo sistema operativo e boom !, il tuo sistema funziona più velocemente. Il trucco è semplice: lo scheduler del sistema operativo a volte rifiuta semplicemente di pianificare le attività e fa in modo che la CPU vada in sospensione, o addirittura esegua un ciclo NO-OP per un breve periodo, per raggiungere un dato throughput medio complessivo. Se si paga per una licenza più costosa, lo scheduler rimuove quei NO-OP.

O ancora più drasticamente: se acquisti un sistema con solo 4 o 6 o 8 CPU, in genere ne saranno installate circa 16-32. Il sistema operativo semplicemente ne arresta alcuni e, inserendo una chiave di licenza, è possibile accenderli.

Allo stesso modo, i mainframe IBM distinguono tra diversi tipi di processori: processori Linux, processori Java, processori di transazione, ecc. In realtà sono tutti lo stesso processore, ma lo scheduler del sistema operativo rifiuterà di pianificare attività di transazione (che sono le più importanti) per un Processore Java o Linux. Solo le VM Java saranno programmate per i processori Java e solo le VM Linux saranno programmate per i processori Linux. Se si desidera ottenere prestazioni di transazione più elevate, è necessario acquistare licenze per più processori di transazioni: ancora una volta, questi sono esattamente gli stessi processori, l'unica differenza è un flag di configurazione nello scheduler che dice "non pianificare attività di transazione per quei processori ".

Un altro esempio, non così estremo, sono le diverse edizioni di Windows. Diverse edizioni di Windows supportano un numero diverso di core della CPU e diverse quantità di memoria. Se disponi di memoria estesa e un numero elevato di CPU, puoi rendere il tuo sistema più veloce, semplicemente aggiornando a una versione "più grande" di Windows. Si noti che le edizioni hanno lo stesso codice esatto; c'è solo qualche interruttore di configurazione da qualche parte che dice "sei una Home Edition, supporti solo 1 CPU e 128 GiByte".

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.