Hyperthreading riduce le prestazioni single core
Hyperthreading riduce le prestazioni single core?
Questa è una domanda che spesso si presenta quando si discute i benefici e gli svantaggi dell’iperthreading. Hyperthreading è una tecnologia che consente a un singolo nucleo fisico di fungere da due core logici, raddoppiando efficacemente il numero di thread che un processore può gestire. Tuttavia, si discute se Hyperthreading migliora effettivamente le prestazioni o se può potenzialmente ostacolare le prestazioni a core singolo. Esploriamo ulteriormente questo argomento.
Innanzitutto, è importante capire come funziona Hyperthreading. Quando un singolo nucleo è iperthread, è diviso in due core virtuali, ciascuno in grado di eseguire il proprio set di istruzioni. Ciò consente al processore di gestire contemporaneamente più thread, migliorando le prestazioni multitasking complessive. Tuttavia, ciò non significa necessariamente che le prestazioni di un singolo core saranno migliorate.
In effetti, alcuni sostengono che Hyperthreading può effettivamente ridurre le prestazioni a core singolo. Questo perché le risorse di un nucleo fisico, come la cache e le unità di esecuzione, sono condivise tra i due core logici creati dall’hyperthreading. Ciò può portare ad un aumento della contesa per queste risorse, potenzialmente rallentando l’esecuzione del filo individuale.
Inoltre, Hyperthreading potrebbe non fornire un aumento significativo delle prestazioni per le applicazioni che non sono ottimizzate per sfruttare più thread. Molti giochi, ad esempio, sono principalmente a thread e potrebbero non vedere un notevole miglioramento rispetto all’hyperthreading.
Tuttavia, vale la pena notare che l’impatto dell’hyperthreading sulle prestazioni a core singolo può variare a seconda del carico di lavoro specifico e dell’architettura del processore. In alcuni casi, Hyperthreading può effettivamente migliorare le prestazioni a core singolo consentendo al processore di utilizzare meglio le risorse disponibili.
Non esiste una risposta definitiva alla domanda se l’hyperthreading riduca le prestazioni a core singolo. Dipende in gran parte dalle circostanze specifiche e dal carico di lavoro. Alcuni utenti possono scegliere di disabilitare Hyperthreading in alcuni scenari in cui le prestazioni a core singolo sono una priorità, mentre altri potrebbero preferire lasciarlo abilitato a sfruttare le maggiori capacità multitasking.
Ecco alcuni takeaway chiave:
- Hyperthreading è una tecnologia che consente a un singolo nucleo fisico di fungere da due core logici.
- Hyperthreading può migliorare le prestazioni multitasking consentendo al processore di gestire più thread contemporaneamente.
- Alcuni sostengono che Hyperthreading può potenzialmente ridurre le prestazioni singoli aumentando la contesa per le risorse condivise.
- Hyperthreading potrebbe non fornire un aumento significativo delle prestazioni per le applicazioni che non sono ottimizzate per più thread.
- L’impatto dell’hyperthreading sulle prestazioni single core può variare a seconda del carico di lavoro e dell’architettura del processore.
- Non esiste una risposta definitiva al fatto che Hyperthreading riduca le prestazioni singoli, in quanto dipende in gran parte dalle circostanze specifiche.
Ecco alcune domande basate sul testo:
- Ciò che è iperthreading?
- Hyperthreading migliora le prestazioni multitasking?
- L’hyperthreading può potenzialmente ridurre le prestazioni single core?
- Tutte le applicazioni beneficiano di hyperthreading?
- Come varia l’impatto dell’iperthreading sulle prestazioni single core?
- Esiste una risposta definitiva al fatto che Hyperthreading riduca le prestazioni singoli?
- Quali fattori dovrebbero essere considerati quando si decide se abilitare o disabilitare l’iperthreading?
- Sono i giochi tipicamente ottimizzati per più thread?
- Può essere hyperthreading migliorare le prestazioni complessive del multitasking?
- Quali sono alcuni potenziali svantaggi di hyperthreading?
- C’è un consenso sul fatto che l’hyperthreading sia benefico o dannoso per le prestazioni a core singolo?
- Può disabilitare l’hyperthreading migliorare le prestazioni single core?
- Può essere hyperthreading migliorare l’utilizzo delle risorse disponibili?
- Dovrebbe essere abilitato o disabilitato per i giochi?
- Sono CPU AMD inferiori alle CPU Intel in termini di performance iperthreading?
- Hyperthreading fornisce vantaggi per il gioco?
Hyperthreading è una tecnologia che consente a un singolo nucleo fisico di fungere da due core logici.
Sì, Hyperthreading può migliorare le prestazioni multitasking consentendo al processore di gestire più thread contemporaneamente.
Sì, alcuni sostengono che l’hyperthreading può potenzialmente ridurre le prestazioni a core singolo aumentando la contesa per le risorse condivise.
No, Hyperthreading potrebbe non fornire un aumento significativo delle prestazioni per le applicazioni che non sono ottimizzate per più thread.
L’impatto dell’hyperthreading sulle prestazioni single core può variare a seconda del carico di lavoro e dell’architettura del processore.
No, non esiste una risposta definitiva in quanto dipende in gran parte dalle circostanze specifiche.
Fattori come il carico di lavoro specifico e la priorità data alle prestazioni a core singolo dovrebbero essere presi in considerazione quando si decide se abilitare o disabilitare Hyperthreading.
No, molti giochi sono principalmente a thread e potrebbero non vedere un notevole miglioramento rispetto all’hyperthreading.
Sì, Hyperthreading può migliorare le prestazioni multitasking complessive consentendo al processore di gestire più thread contemporaneamente.
Alcuni potenziali svantaggi di hyperthreading includono un aumento della contesa per le risorse condivise e il potenziale rallentamento dell’esecuzione del filo individuale.
No, non c’è consenso in quanto dipende in gran parte dalle circostanze specifiche e dal carico di lavoro.
In alcuni casi, la disabilitazione dell’hyperthreading può migliorare le prestazioni a core singolo riducendo la contesa per le risorse condivise.
Sì, in alcuni casi, Hyperthreading può migliorare l’utilizzo delle risorse disponibili consentendo al processore di allocarle meglio.
Dipende dal gioco specifico e se è ottimizzato per più thread. Alcuni giochi possono beneficiare di hyperthreading, mentre altri potrebbero non vedere un notevole miglioramento.
Non esiste una risposta definitiva a questa domanda poiché le prestazioni delle CPU AMD e Intel possono variare a seconda delle circostanze specifiche e del carico di lavoro.
Hyperthreading può offrire vantaggi per i giochi in alcuni scenari in cui il gioco è ottimizzato per più thread e può sfruttare le maggiori capacità multitasking.
Hyperthreading riduce le prestazioni single core
Accettando tutti i cookie, accetti il nostro utilizzo dei cookie per fornire e mantenere i nostri servizi e il nostro sito, migliorare la qualità di Reddit, personalizzare i contenuti e pubblicità Reddit e misurare l’efficacia della pubblicità.
Hyperthreading riduce le prestazioni single core
Questo non ha alcun senso, praticamente tutto ciò che viene fatto qui può essere gestito tramite Windows o addirittura Unix stesso.
Primo: Hyperthreading è di per sé un enorme miglioramento delle prestazioni, quindi perché per qualsiasi motivo lo disabilita? Voglio dire, se un titolo ha problemi, puoi impostare non solo l’affinità di elaborazione, ma anche l’affinità di base tramite Task Manager. Se hai qualche concetto di come funziona multithreading, sapresti che i moderni microprocessori sono in grado di scrivere più istruzioni per ciclo di clock e, inoltre, utilizzando più thread dallo stesso processo.
Non vedo alcun motivo per quanto riguarda lo scopo di questo strumento, tutto può essere fatto in Task Manager.
Inoltre, teoricamente non dovrebbe esserci modo di migliorare le prestazioni senza aumentare direttamente la velocità di elaborazione del chip o migliorare l’utilizzo (o l’adattamento) delle istruzioni nel chip del processore stesso.
Visualizzazione di 16 – 30 commenti su 48
6 Lug 2015, minerale 23:21
Messaggio originale di Timdimmdrive:
Messaggio originale di Yumri:
Come e/o perché i giochi hyperthreading aiuterebbero o danneggerebbero i giochi? Davvero la maggior parte dei giochi usa solo 1 ~ 4 core ora e Hyperthreading realizzerà uno spettacolo a doppia nucleo come 4 core che Um a seconda di come gli gestisce potrebbe essere meglio potrebbe essere peggio, ma da una sitrea elecronica non aiuterà a spegnerlo poiché allora viene vietato tra 2 core anziché 2 core che corre 4 fili . Hyperthreading è in calo con 1 core Run 2 thread come mi è stato spiegato comunque è che non puoi avere lo stesso nucleo su parti regolate con una carica elettronica, quindi perché sono solo 2 thread anziché 4 ciascuno ma perché hanno 4 parti che puoi avere 2 in corsa contemporaneamente e in questo perché farebbero male il thread hyper thread ?
Immagina che un core della CPU sia un lavoratore che fa il check-out che si trova in un negozio di alimentari, che squillano la spesa. Ora immagina di avere 1 di quelle cinture del trasportatore con 1 cliente e la cassiera sta suscitando quel cliente. Il cassiere afferra 1 pezzo di cibo, lo suona, quindi ne prenderà 1 altro. Il cliente e il loro cibo = giochi/programmi e il cassiere = CPU core.
Ora immagina lo stesso cassiere, ma invece di 1 nastro trasportatore con 1 cliente, il cassiere ha 2 cinture di trasporto, ognuna con il proprio cliente. Quindi ora il cassiere può telefonare a due clienti contemporaneamente. Tuttavia, il cassiere può sopportare solo 1 pezzo di cibo alla volta. Quindi il cassiere prende 1 pezzo di cibo dal cliente A, quindi 1 pezzo dal cliente B e un altro pezzo del cliente A, ecc. Ecco come funziona Hyperthreading (in breve). L’iperThread è il secondo trasportatore con il secondo cliente.
Quindi ora immagina ora che devi acquistare 100 pezzi di cibo. Che è più veloce? 2 Cinture di trasportatore separate, ognuna che va al proprio cassiere o 1 cassiere con 2 cinture di trasportatore?
La risposta è 2 cinture del trasportatore, ognuna che va al proprio cassiere. AKA 2 core CPU. Perché 1 cassiere può controllare solo 1 articolo alla volta, indipendentemente da 2 cinture di trasportatore, mentre 2 cassieri possono fare il doppio del lavoro come 1.
Questo è il motivo per cui, se hai la possibilità di scegliere, hai sempre il tuo gioco su core CPU effettivi rispetto ai processori virtuali.
Ok, ho la tua anologia, però che, così l’anologia significa che i giochi così intrinsecamente non funzionerebbero altrettanto bene sulla CPU AMD dopo che sono stati trasformati in moduli? Poiché i moduli hanno diviso le prime 2 cellule dalle ultime 2 cellule per realizzare 2 core parziali all’interno di 1 modulo di un nucleo completo ? Questa è la stessa cosa nel concetto di Intel Hyper Threading fa solo Hyperthreading lo fa su una singola linea anziché su 2 linee di cellule, quindi come può farlo su 2 linee di cellule essere migliori o peggiori che farlo su 1 linea di cellule? o intendi dire che le CPU AMD sono tutte inferiori a tutte le CPU Intel ?
Ottengo la tua ananolgia e sì, se fosse qualcosa che elettricità si applicherebbe, ma le linee di celle che passano una tensione di 1 Vsuale da 1 V da una cella all’altra, quindi la parte non è in grado di non essere fianco. Ha senso a livello di pensiero software sì, solo non a livello di pensiero hardware è tutto.
Se funziona così meravigliosamente spiegarmi come e perché, come non capisco e non comprerò fino a quando non capirò.
6 Lug 2015, minerale 23:30
^ Non citerò anche il motivo..
Nessuna AMD fx non * dividi * celle,
I chip AMD FX sono base modulare sì, come mai hanno 2 core fisici pre a modulare. Come mai i nuclei condividono alcuni aspetti del dado, come la FPU ecc..
La dose AMD FX ha infatti 8 core fisici, 1 filo per core..
La cosa con Intel HT è che dose 2 thread per core.. E entrambi i thread devono condividere tutti gli aspetti del core e della CPU. Questo è uno dei motivi per cui AMD FX OUT Preforces Intel HT, in thread multipli, applicazione multi core..
I core BEACUSE AMD FX devono condividere fpu ect con in un modulare sebbene siano completi classificati da Intel in singolo thread, preformare. Questo è soprattutto vero se HT è disabilitato.. È possibile disabilitare i core nei chip AMD FX per abbinare 1 core per 1 modulare e quindi non avere nulla condiviso tra loro eccetto la cache L3
Per AMD questo è uno dei più grandi motivi per cui metà coreboost è più veloce di tutto.
Sulla mia CPU 8120 Normale è 3.1 GHz, il nucleo completo (8 core) è 3.4 GHz e mezzo core (4x core, 1 per modulare) è 4.0GHz
Se si disabilita HT su Intel, è possibile ottenere il chip di più, anche avere HT abilitato.
Ultima modifica da maddoggyca; 6 Lug 2015, Ore 23:36
7 LUG 2015, minerale 1:34
Non ho mai side le celle “divise” ho detto che AMD utilizza una riga per i passaggi 1 e 2, quindi un’altra riga per i passaggi 3 e 4 mentre Intel usa la stessa linea di lega di silicio per i passaggi 1, 2, 3 e 4 non hanno invocato il back e il back -loop è il motivo per cui i moduli AMD funzionano e la linea retta è come funziona Hyperthreading.
Non ricevere ancora perché HT degrarebbe la preformanza del gioco Probalby, è più da fare per più core del necessario che per averlo sullo stesso nucleo della carica elecrtica sarà la stessa in entrambi i casi con o senza iperthreading. Lo stesso con i core AMD la carica elettroica nel modo in cui fanno i core.
Inoltre, come hai detto, la preformance a core singolo è migliore con Intel non singolo thread ma singolo core è poiché nulla fa un singolo thread non intel e non amd entrambi fanno thread a più multple per ciclo di clock.
Mi dispiace che non abbia senso per me, ma se è vero allora e qualunque cosa a velocità più elevate rispetto a quella di 3GHz smette di avere importanza perché nessun gioco vede alcuna differenza di quella velocità in questo momento che è e se non puoi semplicemente spegnere ciò che non è in grado di sfruttare ciò che non è in grado di sfruttare ciò che non è in grado di sfruttare ciò che non è in grado di sfruttare ciò che non è in grado di sfruttare ciò che non è in grado di sfruttare ciò che non è in grado di sfuggire a ciò che non è in grado di sfumare. Bo non funziona bene con Hyperthreading.
7 Lug 2015, Ore 2:03
hmm no amd e intel non fanno multimetro per un ciclo di clock. Solo Intel con dose abilitata HT 2 thread per un ciclo di clock.. anche un ciclo dell’orologio è come .000000001.. Aka davvero velocemente. *Questo è MHZ, GHZ entra. Più veloce è il GHZ più veloce del ciclo dell’orologio. Più veloce è il ciclo, significa più thread dentro e fuori dalla CPU.. AKA i tuoi dati vengono calcolati più velocemente e più dati vengono calulati nello stesso periodo di tempo di una CPU più lenta
Questo è il diagramma migliore e più simple per seguire il ciclo dell’orologio spiegativo, il ciclo del filo e l’intel ht .
Singolo core, thread singolo = 1 ciclo, il thread inizia e termina nello stesso momento in cui il ciclo di clock inizia/termina
Singolo core, hyper thread = 1 ciclo.. HT è quando 1 core esegue 2 thread, uno inizia al ciclo di clock e termina alla fine del ciclo di clock. Il 2 ° thread inizia a metà del ciclo dell’orologio e termina a metà del ciclo successivo.. (ripetere)
Dose Intel ht non avvia 2 thread contemporaneamente, né dose It Avvia 2 thread al rilascio del ciclo dell’oro. Non è stato set per la ragione solista che un thread in teoria non deve aspettare un altro thread per finire usando il resto della CPU. Tuttavia, questo non è il caso .. La collisione del thread accade sempre anche se personalmente non lo vedresti o lo saperai e raramente lo dose effettuare il PC o il sistema operativo e hai una probabilità 1: 1000000000000000 1: BSOD l’intero sistema.. Ma la dose provoca ancora problemi di preformare che un singolo core, un’operazione a thread singolo non deve affrontare
Questo è uno dei motivi per cui i giochi e l’applicazione single core eseguono un po ‘più velocemente su Intel Chip che ha disabilitato HT. Non c’è possibilità che un thread debba aspettare un altro per finire.
Per quanto riguarda i giochi abilitati multi core, è meglio scaricarli in core dedicati che gestiscono 1 thread per ciclo per evitare di avere un thread in attesa di un altro per finire quello che potrebbe fare..
Sembra tutto Redunent e leggermente ridicoli quando pensi a quanto velocemente è un ciclo e quanto velocemente l’elettricità/dati scorre attraverso l’hardware. Ma le persone si preoccupano davvero di ottenere la velocità più rapida possibile da lì hardware. anche se sono alcuni milanecondi di guadagno.
Ultima modifica da maddoggyca; 7 Lug 2015, minerale 2:23
7 Lug 2015, Ore 3:55
ok penso che tu abbia avuto quello che hyper threading fa male. Hyper Threading consente di eseguire istruzioni a più multple dallo stesso nucleo se entrambe le istruzioni pretenti allo stesso thread sono inrelavant. Sì 1 ciclo di clock è molto veloce intorno a 1 nanosecondo o giù di lì per 1 ciclo di clock, ma le istruzioni a più anni possono essere eseguite in 1 ciclo di clock, quindi parte di come Intel è migliore dell’AMD nella preformance a singolo core anche se non sono sicuro, il che non è meglio nella preformanza multi core. Se un programma è l’unico programma su un nucleo, allora sì, sarà in grado di utilizzare il core ogni volta che deve usare quel nucleo e se è un nucleo reale e tutto il meglio, quindi non dire che usare questo vecchio trucco del 2003 non è più buono, sto solo dicendo che non vedo più alcun beneficio dall’usare il sistema operativo e lo stesso.
7 Lug 2015, Ore 4:08
Ecco l’immagine delle opere interiori di una CPU reale e perché dico quello che dico
http: // www.cbtricks.com/radio/presidente/george/grafica/george_main_sch.GIF
your picture is overly simplifed for the users who do not understand electronic engineering and need it put into simple terms but what you are saying does not make sense as you can run mulple instructions per clock cycle in that ( george ) CPU it is not a CPU made to go very fast and Intel and AMD make theirs probalby very extremely diffenret form that one but it is the simplistic CPU workings on a diagram sheet that is not copyrighted
La tua logica funziona se stava andando in un cerchio dritto sì, ma quando non va in un ciclo né uno schema definito, tranne un metodo definito dalla quantità di atomi inonizzati all’interno di un resistore a quel nanosecondo che le cose funzionano in modo differenziato . Sì, se stai eseguendo un gioco a doppio core e il secondo core termina le istruzioni prima del primo nucleo, molto probabilmente otterrai uno schermo blu poiché il secondo nucleo sarà nella stessa linea del primo nucleo ma dietro di esso e fatto per andare solo a uno stesso ritmo non più veloce e non più lento ma la stessa velocità . Le CPU di Morden possono far andare i loro core a velocità diffent se non diversamente impostato nel BIOS ciò che questo programma fa supponicamente è inviare un messaggio per eseguire tutti i core alla velocità massima che elimina che “problrem” e aumenta la velocità alla velocità massima / la velocità elencata come la maggior parte delle CPU non funziona a quel 3GHz o in qualsiasi velocità di stock che sono commercializzate a circa 1.2GHz a 1.8 GHz per conservare la vita della CPU e conservare l’uso di energia.
Quello che hai detto nell’ultima parte di “anche se si tratta di alcuni milisdi di guadagno” bene se sta eseguendo una CPU nuova o di ultima generazione la sua velocità di serie al 100% sarà 3.0 GHz a 3.2 GHz che fa la differenza alcuni nanosecondi di guadagno al massimo. 12 Nanaosecondi WHCIH è il caso migliore per quanto tempo questo programma ti farà risparmiare in esecuzione su una CPU di Generazione dell’Altima CPU o quella prima che a velocità di serie non è più veloce dal cervello umano ha bisogno di circa 150 Milisecondi a 200 milisecondi per preservare qualsiasi cosa a tutto ciò che è abbastanza veloce ma non veloce come 12 nanosecone.
Questo programma è realizzato per hardware di fascia bassa allora e quindi non per me forse per te ma non per me.
7 Lug 2015, minerale 7:07
Messaggio originale di Timdimmdrive:
La risposta è davvero facile:
Hyperthreading non è una vera CPU. Invece, è una CPU virtualizzata. Se stai giocando a un gioco che può utilizzare solo 2 thread CPU contemporaneamente, otterrai prestazioni molto migliori dandogli 2 core CPU reali, rispetto a 1 CORE CPU reale e 1 core CPU virtuale. Quindi quello che fa i cpucores è garantire che un gioco non stia usando Hyperthreading e invece sta solo usando core reali. Nota: questa è un’opzione nel software. È possibile abilitarlo/disabilitarlo su base per partita. Ecco una buona lettura su ciò che è hyperthreading: https: // en.Wikipedia.org/wiki/hyper-threading
“Tutto può essere fatto in Task Manager. “
Questo non è corretto. Alcuni dei video e delle descrizioni di ciò che i cpucores lo spiegheranno di più. Ad esempio, non tocca solo il gioco reale stesso. Identifica e modifica il modo in cui i processi del sistema operativo sono in esecuzione, i tuoi processi non giochi, il tuo gioco stesso e lo avvolge tutto in un programma estremamente facile da usare integrato a vapore.
“Teoricamente non è un modo per migliorare le prestazioni senza aumentare direttamente la velocità di elaborazione del chip”
Questo non è corretto. Il modo più semplice per capirlo è questo: che è meglio per un gioco? CPU al 70% di un nucleo, o CPU al 100% di un nucleo? Questo è esattamente ciò che faranno i cpucores: pulirà quali processi sono cosa e quindi presenterà un core pulito e inutilizzato quasi al 100% per il tuo gioco a vapore. (Tra le altre caratteristiche dei cpucores).
Ho alcuni video di cpucores utilizzati da alcuni giochi reali. Ti incoraggio a verificarlo: http: // Steamcommunity.com/app/384300/discussioni/
Spero che questo ti aiuti a capire le cose.
Tim, per favore elabora alcune cose per me. In che modo esattamente i cpucores consentono un gioco che funziona al 70% di core (onestamente non ho mai visto un gioco adeguatamente costruito che non utilizza il 100% core) per funzionare al 100% core? Non è possibile forzare un programma a utilizzare più carico della CPU. Non credo che la chiusura dei processi abbia alcun effetto sulle prestazioni del gioco (ho testato questa teoria molte volte in passato). È inoltre noto che il 95% dei processi aggiuntivi che si svolgono adiacenti al gioco siano richiesti da Windows e che siano necessari ulteriori processi, come manager audio, programmi specifici per i driver, ecc. Un altro esempio: quando lancio GTA V, ho bisogno del processo del club sociale per rimanere attivo per giocare. Ma gli unici processi “extra” che sono in esecuzione quando ho un gioco sono un gestore del download, Foobar2000 e una console di commutazione hardware MSI. Ho testato questa teoria, mentre ero tra le scrivendo questo e non ho notato assolutamente alcuna differenza nelle prestazioni o nella fluidità del mio gioco dopo aver chiuso quei processi extra.
Concordo tuttavia, Hyper-threading ha la tendenza a rendere le cose instabili. Non sono d’accordo sul fatto che Hyper-threading degraderà le prestazioni. Tutto ciò che è iper-threading è pensato per gestire in modo efficiente il carico di un processore. Alcune applicazioni di caricamento pesante come redattori di foto/video sono adatti per essere eseguiti con iper-threading abilitati e disabilitarlo per qualsiasi motivo può comportare più problemi.
Ho anche letto da qualche parte (non ho esperienza personale di questo) che la disabilitazione di Hyper-threading causerà i giochi con un carico di texture pesanti (come TES: Skyrim) per avere un grande successo nel caricamento.
Tim, sono un utente PC esperto. La mia esperienza supera i 10+ anni senza contare le ore infinite di ricerca su argomenti come questo. Ho bisogno che tu mi dica qualcosa che non so.
Ultima modifica da ketonasarus; 7 Lug 2015, minerale 7:20
7 Lug 2015, Ore 13:01
Finalmente una persona che lo ottiene sull’hyperthreading . Anche nel tuo link sopra sembra che se la CPU è abbastanza veloce come 3GHz o più veloce, quindi disabilitare Hyperthreading non darà alcuna spinta per le prestazioni a meno che tu non stia anche overclocking, ma questo programma non è per overclocking.
E sì, vedo il tuo punto, ma da come lo capisco il programma costringe Turboboost ad essere in vigore, il che è fondamentale un overclock di sé per uno scoppio di velocità ogni tanto e poi perché hai detto se non può eliminare il 100% di un nucleo quindi anche se si usa questo programma non . In quanto puoi comunque far pensare a Windows e dire che è e ingannare la CPU nell’uso di funzionalità extra per farla andare rapidamente della velocità di serie e/o alla velocità di serie perché l’ulizzazione aumenta, quindi l’aumento della velocità che ppl pensa che questo programma dia loro.
Ultima modifica da Yumri; 7 Lug 2015, Ore 13:05
8 Lug 2015, Ore 11:41
Messaggio originale di GS-R:
Tutto ciò che è iper-threading è pensato per gestire in modo efficiente il carico di un processore. Alcune applicazioni di caricamento pesante come redattori di foto/video sono adatti per essere eseguiti con iper-threading abilitati e disabilitarlo per qualsiasi motivo può comportare più problemi.
SÌ. Questo è “tutto ciò che è pensato per fare”, ma ottengo il furbo sospetto che stai interpretando male ciò che è il “caricamento” effettivo qui e come funziona o non funziona.
Ciò che fa iper-threading è divulgare un nucleo fisico in due core logici. Questi due core logici hanno uno stato di esecuzione separato in modo che loro Potere Esegui compiti in parallelo, ma devono condividere e contendere risorse come un bus di sistema o una cache di memoria della CPU in modo che loro non può sempre Corri in parallelo.
Questo è di fondamentale importanza da capire. Devi eseguire software scritto in un modo particolare per sfruttare i trucchi di pianificazione iper-threading abilita senza uno dei core logici in una coppia che blocca l’altro.
L’esempio più semplice è un thread che esegue un lavoro computazionale pesante su un nucleo logico, mentre il suo nucleo logico gemello è il backup dei dati sulla RAM principale e la raccolta di nuovi dati per ulteriori calcoli.
Che tipo di software opera principalmente in quel modo? Software che esegue calcoli su flussi di dati. Gli esempi canonici di quel tipo sono software di codifica o decodifica audio e video.
In pratica la maggior parte del software non è abbastanza bene parallelizzato per consentire a due core logici di funzionare in modo completamente disgiunta. Ci saranno collisioni. Molti e molti di loro, più entro un solo secondo di quanto puoi contare sulle mani collettive del pubblico in un film affollato.
Tuttavia, più brevi periodi di operazioni senza collisione, disgiunte e parallele sono ancora più veloci che non avere operazioni parallele. E così correre i thread di mulitple con hyper-threading è ancora più veloce che eseguire un solo thread alla volta senza hyper-threading, in cui lo scheduler del sistema operativo deve entrare in gioco e puoi pagare la penalità completa del cambio di contesto.
Quindi, come influisce sui giochi?
BENE. Dipende per la maggior parte da quanti core fisici ha la tua CPU disponibile e quanti thread simultanei il tuo gioco si genera.
I vecchi giochi sono di solito a thread e quindi molti giochi indipendenti dagli sviluppatori iniziali che non hanno ancora una buona comprensione del multi-threading (o stanno costruendo qualcosa di abbastanza leggero da non aver bisogno affatto di multi-threading). Per ottenere il maggior numero di prestazioni da un simile gioco, vuoi eseguire il thread singolo del gioco su uno dei processori logici e tenere tutto fuori dall’altro il più possibile. Assicurati che un processore logico non sia mai bloccato da nulla che l’altro possa voler fare.
Per i giochi multi-thread e i sistemi multi-core, lo stesso principio vale: idealmente si desidera che ogni thread attiva nel gioco sia eseguito su un processore logico e mantieni la sorella libera in modo che non possa bloccare il primo.
Dove diventa interessante è quando hai meno core fisici di quanto il gioco abbia dei thread.
In questi casi, può essere molto vantaggioso funzionare con iper threading abilitato ed entrambi i core logici abbinati sotto un nucleo fisico a pieno carico. Anche se i processori logici possono scontrarsi a volte e rallentarsi a vicenda, generalmente avranno anche periodi in esecuzione in parallelo e nel complesso funzionerà meglio del sistema operativo che dovrà programmare due thread sullo stesso nucleo e sottoporsi a costi completi di commutazione del contesto.
I benefici esatti variano comunque in base al gioco: dipende da quanto bene ogni thread rimane fuori l’uno dall’altro thread. Varierà anche con il particolare generazione della CPU che stai usando. Intel è diventato sempre migliore nell’esecuzione di ottimizzazioni e trucchi di programmazione con ogni nuova generazione di CPU e un moderno i3 o i7 in media soffrirà in media meno collisioni che eseguono lo stesso software rispetto a una generazione più anziana di i3 o i7.
Giochi precedenti
Ciò ha fatto l’uso di multi-threading in genere avrebbe usato solo due fili concorrenti, perché le CPU più vecchie generalmente avevano solo due core fisici da risparmiare. Anche quando si esegue questi giochi su un i3, se Hyper-threading abilitato (creando quattro core logici dai suoi due core fisici) è più che probabile che diminuisca le prestazioni a causa delle collisioni. A meno che non si pianifichi esplicitamente quei due thread in esecuzione su nuclei fisici separati. La maggior parte dei vecchi giochi non lo fa, perché il sistema operativo Windows non aveva modo di discernere quali core logici fossero coppie fino a Windows 7. È qui che software come i cpucores può costringerlo a.
Giochi moderni
in genere usa quattro core. I motivi sono un po ‘più vari. Può essere perché gli sviluppatori di motori di gioco non sono stati in grado di gestire una divisione più granulare o perché le console di gioco Rnodern hanno solo quattro core disponibili e il gioco è una versione multipiattaforma.
Per un i3 che gestisce quei giochi, in genere è un Bene Idea per consentire l’hyper-threading e mantenere tutti e quattro i core logici a pieno carico, quindi otterrai la massima quantità di parallelizzazione per quel sistema. Mentre per un i7 (quattro core fisici, otto core logici), in genere è negativo a consentire l’hyper-threading a meno che non isoli i fili su core fisici separati.
I giochi moderni scritti sui motori moderni in genere sanno anche come interrogare per quali core sono logici e quali di questi sono accoppiati insieme e lo faranno quando vengono eseguiti su un moderno sistema operativo Windows che può segnalare quel tipo di informazioni. (Cioè: Windows 7 e oltre.) Iirc Unreal Engine 3 ha questo tipo di tecnologia a bordo.
Quando si ha a che fare con un gioco scritto su un tale motore, non ha molto senso “disabilitare Hyper-threading” (leggi; isolare un gioco per disgiungere elaboratori logici) per esso in cpucores, perché il gioco lo gestirà già se stesso.
Hyperthreading riduce le prestazioni single core
Reddit e i suoi partner usano cookie e tecnologie simili per offrirti un’esperienza migliore.
Accettando tutti i cookie, accetti il nostro utilizzo dei cookie per fornire e mantenere i nostri servizi e il nostro sito, migliorare la qualità di Reddit, personalizzare i contenuti e pubblicità Reddit e misurare l’efficacia della pubblicità.
Rifiutando i cookie non essenziali, Reddit può ancora utilizzare alcuni cookie per garantire la corretta funzionalità della nostra piattaforma.
Per ulteriori informazioni, consultare il nostro avviso sui cookie e la nostra politica sulla privacy .
[Risolto] fa le prestazioni di influenza iperthreading?
Stai usando un browser obsoleto. Potrebbe non visualizzare correttamente questo o altri siti Web.
Dovresti aggiornare o utilizzare un browser alternativo.
Mangasoy
8 novembre 2021 61 2 35
Il mio amico mi chiede, quale è migliore tra i5 4690 e i7 3770. L’i7 ha hyperthreading mentre i5 non lo fa. Così è l’i5 peggiore di i7?
Vuole costruire un PC da gioco economico e questo PC sarà dotato come regalo di compleanno per il fratello dei miei amici, quindi spero che le risposte sarebbero utili
Kanewolf
Io e il mio amico sono a conoscenza delle differenze di socket, vogliamo solo sapere se l’hyper threading aiuterà nelle prestazioni.
Per la maggior parte del software, sì. Il software scritto per utilizzare pienamente le CPU fisiche può beneficiare di disabilitare iperthreading. Il software commerciale non è scritto in questo modo. Perché? Perché il software commerciale deve essere eseguito su dozzine di CPU diverse. Se stavi scrivendo software personalizzato per YouTube, ad esempio, potresti ottimizzarlo per CPU specifiche. YouTube avrebbe migliaia dello stesso hardware esatto. Ottimizzando per quell’hardware, e quindi benchmarking è possibile determinare se l’hyperthreading on o off ha prestazioni migliori. Sono stato un ingegnere sui sistemi in cui un passaggio di configurazione di base.
Lutfij
Titano
Moderatore
7 ottobre 2009 49.405 3.748 153.390
Con che tipo di giochi vuole tassare il sistema?
pazzo.Drechsler
Campione
16 ottobre 2017 9.449 2.474 52.290
Quanto influisce sulle prestazioni può essere sia discutibile che condizionale, ma tutto il resto uguale, sì, lo fa.
Johnbonhamsghost
Glorioso
14 gennaio 2016 6.970 1.078 49.190
Iper-threading influenza le prestazioni?
Tutto dipende dal software specifico coinvolto.
Alcuni fanno uso di hyper-threading, alcuni dei core CPU più dedicati, alcuni solo di singolo core.
Quale prezzo pagherebbero per questa vecchia CPU di terza o 4a generazione?
Vuole costruire
Questo tipo di conversazione è Sempre più facile con l’acquirente/costruttore effettivo.
Farli contattare da soli questo thread o crearne uno nuovo.
Mangasoy
8 novembre 2021 61 2 35
Con che tipo di giochi vuole tassare il sistema?
Giochi come Minecraft, GTA V, CS GO, quel tipo di giochi
Mangasoy
8 novembre 2021 61 2 35
Tutto dipende dal software specifico coinvolto.
Alcuni fanno uso di hyper-threading, alcuni dei core CPU più dedicati, alcuni solo di singolo core.
Quale prezzo pagherebbero per questa vecchia CPU di terza o 4a generazione?
Questo tipo di conversazione è Sempre più facile con l’acquirente/costruttore effettivo.
Farli contattare da soli questo thread o crearne uno nuovo.
Entrambi sono CPU di seconda mano a circa 20 dollari, l’i5 è 21 dollari e i7 è 24 dollari in un negozio di computer locale
Johnbonhamsghost
Glorioso
14 gennaio 2016 6.970 1.078 49.190
I5 è 21 dollari e i7 è 24
acquistali entrambi.
Mangasoy
8 novembre 2021 61 2 35
acquistali entrambi.
Quale dovrebbe usare nel PC?
E ho dimenticato di menzionare, sta cercando una CPU per abbinare la sua vecchia GTX 950
Nighthawk117
Onorevole
27 settembre 2021 2.029 633 10.540
Il mio amico mi chiede, quale è migliore tra i5 4690 e i7 3770. L’i7 ha hyperthreading mentre i5 non lo fa. Così è l’i5 peggiore di i7?
Vuole costruire un PC da gioco economico e questo PC sarà dotato come regalo di compleanno per il fratello dei miei amici, quindi spero che le risposte sarebbero utili
Hyper threading fa una differenza significativa nella maggior parte dei giochi moderni, oltre a beneficiare multi -tasking. Il 3770 è la CPU migliore, ma si prega di notare che non usano la stessa presa.
Mangasoy
8 novembre 2021 61 2 35
Hyper threading fa una differenza significativa nella maggior parte dei giochi moderni, oltre a beneficiare multi -tasking. Il 3770 è la CPU migliore, ma si prega di notare che non usano la stessa presa.
Io e il mio amico sono a conoscenza delle differenze di socket, vogliamo solo sapere se l’hyper threading aiuterà nelle prestazioni.
Nighthawk117
Onorevole
27 settembre 2021 2.029 633 10.540
Io e il mio amico sono a conoscenza delle differenze di socket, vogliamo solo sapere se l’hyper threading aiuterà nelle prestazioni.
Dipende dal software ma dall’esperienza come regola generale, sceglierei sempre il chip iper filettato. Le differenze di core singolo sono piccole, l’hyper threading offrirà un’esperienza per PC migliore e farà un gameplay più fluido nei giochi moderni. Se volevi giocare ad ad esempio Battlefield V, il 3770 è il chip migliore per questo perché utilizzerà tutti gli 8 thread. Alcuni di questi giochi non sono molto fluidi con chip 4C/4T più vecchi.
Kanewolf
Titano
Moderatore
29 maggio 2013 35.821 2.774 153.790
Io e il mio amico sono a conoscenza delle differenze di socket, vogliamo solo sapere se l’hyper threading aiuterà nelle prestazioni.
Per la maggior parte del software, sì. Il software scritto per utilizzare pienamente le CPU fisiche può beneficiare di disabilitare iperthreading. Il software commerciale non è scritto in questo modo. Perché? Perché il software commerciale deve essere eseguito su dozzine di CPU diverse. Se stavi scrivendo software personalizzato per YouTube, ad esempio, potresti ottimizzarlo per CPU specifiche. YouTube avrebbe migliaia dello stesso hardware esatto. Ottimizzando per quell’hardware, e quindi benchmarking è possibile determinare se l’hyperthreading on o off ha prestazioni migliori. Sono stato un ingegnere sui sistemi in cui una fase di configurazione di base doveva disabilitare l’iperthreading nel BIOS.
Se hai un software specifico che deve eseguire al massimo, allora lo prendi in banconota in entrambi i modi e si eseguono con le migliori prestazioni.
Iper-threading rallenta entrambi i fili su un nucleo?
Questo potrebbe essere già risposto in un altro thread, ma ecco comunque. Supponiamo di avere un processore a 4 core con 8 fili di hyper threading. Prendiamo come esempio l’intel i7-4770k. Il fatto che ci siano due thread in esecuzione contemporaneamente su un singolo core lento o entrambi i thread verso il basso rispetto ad avere un solo thread in esecuzione su un singolo core. Sto parlando del throughput netto di un singolo thread, non del throughput di sistema. Mi sembrerebbe che se un processore sia in esecuzione in modalità hyper-threading, dovrebbe passare molto tempo a gestire risorse condivise come cache, unità di esecuzione, condutture, ecc. In altre parole, sembra che la “performance per thread” sarebbe inferiore a una CPU con 4 core e 4 thread di quanto sarebbe su una CPU con 4 core e 8 fili. Si prega di illuminare, spiegare ed elaborare.
Più opzioni
Redleader
Ars Legatus Legionis
Dipende da come è implementato e da cosa stanno effettivamente facendo i thread (e.G. Combattono sulla cache sfrattando la memoria reciproca o qualcosa del genere). Ma in generale, no. Cose come la cache e così non sono davvero “gestite”, dal punto di vista dell’hardware; Un valore di memoria è un valore di memoria, non importa da dove provenga. Per le istruzioni in cantiere, è necessario tenere traccia di quale set di registri si riferisca ogni istruzione (poiché ogni thread avrà una sua) ma su un moderno processore X86 devi comunque farlo poiché avrai in effetti molte copie del registro del thread a causa dell’esecuzione fuori servizio e registrare la rinomina.
La cosa interessante di SMT è quanto naturalmente si adatta a ciò che un processore ampio e superscalare deve già fare.
Più opzioni
Tom Dunkerton
Ars praefectus
Grazie Redleader. Non sono sicuro del perché, ma penso solo a quattro core senza hyper-thread. Cosa mi manca?
Più opzioni
Breze
Ars praefectus
L’unico caso che ho incontrato in cui l’hyperthreading degrada in modo misurabile le prestazioni è matematica numerica. Se stai sgretolando dati ben organizzati potresti essere in grado di mantenere il nucleo occupato. E se stai lavorando molto, puoi diventare troppo grande per la cache. Quindi vuoi diffondere i tuoi calcoli attraverso i core in modo da ottenere la cache di tutti (mentre allo stesso tempo, minimizzando la comunicazione. È un’arte!). In generale hai la metà della larghezza di banda a “qualunque cosa” in base se hai iperthreads, ma non sono sicuro che molte persone gestiscono spesso codici legati alla larghezza di banda.
Penso che quello che ti perdi sia che i core siano così follemente veloci che sono quasi sempre in attesa di dati comunque, a meno che il tuo codice non sia accuratamente sintonizzato. È un problema di latenza, potresti anche avere un altro thread che capisce cosa chiederà mentre il primo sta aspettando.
Detto questo, hai essenzialmente ragione che 4 core reali sono più veloci di 2 iper reali/2. È solo che 2 iper reale/2 è più veloce di 2 reali da soli, tutte le altre cose sono uguali.
Suppongo inoltre che, poiché i hyperthread condividono l’hardware, potrebbero condividere i dati attraverso la cache. Quindi suppongo che se avessi due thread con un mucchio di comunicazione potrebbero essere più felici una volta core. Non sono sicuro di come funzioni in pratica. Sembra che sarebbe una strana combinazione di ottimizzazione buona e cattiva (se c’è abbastanza comunicazione perché questo sia buono, forse non dovrebbero essere due thread, immagino?)
EDIT: la linea guida vagamente ricordati di vedere gettati in giro è che, con costante il numero di core reali, Hyperthreading è buono per circa il 30% e cambia prestazioni extra. Non al 100%.
Più opzioni
Redleader
Ars Legatus Legionis
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29436487#P29436487: KLBS68DB ha detto:
Tom Dunkerton [/url] “: klbs68db] non sono sicuro del perché, ma penso solo che un core a quattro senza hyper-threading sarebbe più veloce per thread che a un doppio core con hyper-threading. Cosa mi manca?
La mia ipotesi sarebbe che non hai una grande comprensione di come funziona un computer. Ars Technica aveva una serie di articoli molto buoni su questo argomento circa dieci anni fa. Potrebbe valere la pena scavarli.
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29438331#P29438331: KLBS68DB ha detto:
Breze [/url] “: klbs68db]
Detto questo, hai essenzialmente ragione che 4 core reali sono più veloci di 2 iper reali/2. È solo che 2 iper reale/2 è più veloce di 2 reali da soli, tutte le altre cose sono uguali.
Non è “2 reale/2hyper”. Hai ancora esattamente 2 core, è solo che ognuno può eseguire 2 thread contemporaneamente. Nessuno di questi è più “reale” dell’altro.
Più opzioni
continuum
Ars Legatus Legionis
Moderatore
Abbiamo appena avuto una discussione su questo, potrebbe aiutare?
Più opzioni
Tom Dunkerton
Ars praefectus
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29439557#P29439557: 1CD9UD67
Continuum [/url] “: 1cd9ud67] abbiamo appena avuto una discussione su questo, potrebbe aiutare?
Più opzioni
Breze
Ars praefectus
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29439055#P29439055: 172MK6GH ha detto:
Redleader [/url] “: 172mk6gh]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29436487#P29436487: 172MK6GH ha detto:
Tom Dunkerton [/url] “: 172mk6gh] Non sono sicuro del perché, ma penso solo a quattro core senza hyper-thread. Cosa mi manca?
La mia ipotesi sarebbe che non hai una grande comprensione di come funziona un computer. Ars Technica aveva una serie di articoli molto buoni su questo argomento circa dieci anni fa. Potrebbe valere la pena scavarli.
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29438331#P29438331: 172MK6GH ha detto:
Breze [/url] “: 172mk6gh]
Detto questo, hai essenzialmente ragione che 4 core reali sono più veloci di 2 iper reali/2. È solo che 2 iper reale/2 è più veloce di 2 reali da soli, tutte le altre cose sono uguali.
Non è “2 reale/2hyper”. Hai ancora esattamente 2 core, è solo che ognuno può eseguire 2 thread contemporaneamente. Nessuno di questi è più “reale” dell’altro.
Beh, non ha torto che quattro core reali siano generalmente più veloci di due con hyperthreading (Io, d’altra parte, implicito in modo errato che ci sono due diversi tipi di fili su un sistema hyperthreading, Oops)
Più opzioni
Jlarja
Ars Centurion
Per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente! Perché Intel o chiunque altro farebbe anche processori a doppio core o quad-core, se potessi ottenere le stesse prestazioni con single-core iper-thread o dual-core?
Più opzioni
adatto
Ars Legatus Legionis
Abbonamento++
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29440315#P29440315: ISM45JMP ha detto:
Jlarja [/url] “: ism45jmp] per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente!
Dipende da cosa stanno facendo i thread. Due thread in competizione per le stesse risorse hardware (entrambe FPU Heavy, entrambi legati alla memoria, ecc.) ma due thread che non competono così tanto (un thread FPU pesante, l’altro con praticamente senza FPU, per esempio, ed entrambi si comportano abbastanza bene rispetto alla cache) non avrà una concorrenza così grande.
La normale nomenclatura per discutere di questo è 4C/8T (quattro core, otto fili), 2C/4T (due core, quattro thread), ecc. Non vi è alcuna differenza nei processori moderni tra i due thread (o più) per core per una designazione “due core, due iper”.
Più opzioni
Byosys
Ars praefectus
Abbonamento++
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29441313#P29441313: 26Miaqlu ha detto:
fitten [/url] “: 26miaqlu]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29440315#P29440315: 26Miaqlu ha detto:
Jlarja [/url] “: 26miaqlu] Per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente!
Dipende da cosa stanno facendo i thread. Due thread in competizione per le stesse risorse hardware (entrambe FPU Heavy, entrambi legati alla memoria, ecc.) ma due thread che non competono così tanto (un thread FPU pesante, l’altro con praticamente senza FPU, per esempio, ed entrambi si comportano abbastanza bene rispetto alla cache) non avrà una concorrenza così grande.
La normale nomenclatura per discutere di questo è 4C/8T (quattro core, otto fili), 2C/4T (due core, quattro thread), ecc. Non vi è alcuna differenza nei processori moderni tra i due thread (o più) per core per una designazione “due core, due iper”.
Mentre Hyperthreading non può aiutare le prestazioni del singolo thread, il sovraccarico è generalmente molto piccolo. Al di fuori di alcuni casi come Descrive Fitten, Hyperthreading è generalmente abbastanza bravo a utilizzare parti inutilizzate del processore eseguono più thread in parallelo sullo stesso nucleo fisico, accelerando le cose. Ad esempio, l’utilizzo di un secondo thread su parti inutilizzate di un nucleo fisico potrebbe impedire allo scheduler di aver bisogno di interrompere l’attività che si interessa di gestire le attività di fondo.
Più opzioni
Mostro di cappello
Ars Legatus Legionis
Abbonamento
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29441313#P29441313: 3JXFYNH2 ha detto:
fitten [/url] “: 3jxfynh2]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29440315#P29440315: 3JXFYNH2 ha detto:
Jlarja [/url] “: 3jxfynh2] per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente!
La normale nomenclatura per discutere di questo è 4C/8T (quattro core, otto fili), 2C/4T (due core, quattro thread), ecc. Non vi è alcuna differenza nei processori moderni tra i due thread (o più) per core per una designazione “due core, due iper”.
Si C’è. La CPU identifica come processori “fisici” e “logici” – Ogni nucleo è fisico + logico. Il sistema operativo normalmente (a meno che non intervenga la gestione dell’alimentazione) si pianificherà al fisico prima di logico. Android (dispositivi Nexus, No Fancy Big.Piccole cose), ad esempio, richiede un certo carico e un certo orologio minimo raggiunto prima che si svegli un altro nucleo.
Più opzioni
Breze
Ars praefectus
Con hyper threading, la macchina ha 2 (o 4 [ne ha mai visto 3?]) thread per nucleo fisico. La mappatura dei thread utilizzati -> thread dipende dall’ambiente. A seconda del carico di lavoro potrebbe avere senso pianificare le attività ai fili su nuclei fisici separati. OpenMP per esempio no, ma puoi costringerlo a farlo.
Sembra più probabile che il tuo sistema operativo stia facendo una distinzione arbitraria tra i thread, che alcuni dei tuoi thread sono speciali. Ha senso segnare arbitrariamente un thread per core come “extra.”In questo modo il programmatore può dire” Inizia a pianificare le attività sui thread reali “quando significano davvero” Assegna i thread uno per core.”
Più opzioni
Redleader
Ars Legatus Legionis
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29443099#P29443099: 2856VWWW ha detto:
Breze [/url] “: 2856vwww] con hyper threading, la macchina ha 2 (o 4 [ne ha mai visti 3?])
Certo, Qualcomm Hexagon è a 3 vie SMT.
Più opzioni
Redleader
Ars Legatus Legionis
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29442833#P29442833: Zynp60yg ha detto:
Hat Monster [/url] “: zynp60yg]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29441313#P29441313: ZYNP60YG ha detto:
fitten [/url] “: zynp60yg]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29440315#P29440315: ZYNP60YG ha detto:
Jlarja [/url] “: zynp60yg] Per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente!
La normale nomenclatura per discutere di questo è 4C/8T (quattro core, otto fili), 2C/4T (due core, quattro thread), ecc. Non vi è alcuna differenza nei processori moderni tra i due thread (o più) per core per una designazione “due core, due iper”.
Si C’è. La CPU identifica come processori “fisici” e “logici” – Ogni nucleo è fisico + logico.
Per quanto ne so, è solo una cosa organizzativa per aiutare il sistema operativo ad allocare correttamente i thread. La scelta di cui si è “fisica” è arbitraria.
Più opzioni
NetMasteroc3
Ars praefectus
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29442833#P29442833: 3rsj3eod ha detto:
Hat Monster [/url] “: 3rsj3eod]
Si C’è. La CPU identifica come processori “fisici” e “logici” – Ogni nucleo è fisico + logico.
Ehm, non è così che le CPU Intel presentano informazioni o, afaik, funzionano elettricamente. Tutti i thread sono logici, non esiste un concetto di thread fisico o un thread logico mentre li descrivi. Un core può eseguire 1 o più (2, 4 nel caso di Xeon Phis). Questa è l’estensione della visibilità che hai nel sistema. Internamente, l’hardware di decodifica/spedizione/pianificazione front-end non è un involucro speciale, né è necessario, tiene semplicemente traccia N-thread fino al limite consentito.
Le informazioni CPUID riflettono questo thread logico come concetto di bambino a un nucleo fisico. Il sistema operativo può ovviamente monitorare quali thread stanno eseguendo su quali CPU, ma non c’è visibilità nella pianificazione del core o nelle unità di esecuzione oltre a ciò.
Più opzioni
Mostro di cappello
Ars Legatus Legionis
Abbonamento
Non ho detto nulla su “thread fisici” o “thread logici”. Ho detto che un core della CPU si presenta al sistema operativo come un processore fisico e logico. Questo aiuta lo Scheduler del sistema operativo a salvare l’alimentazione (non svegliare un altro core se un nucleo di smting può prendere un altro thread) o eseguire meglio (usa due core anziché uno).
Per quanto riguarda i thread, stanno solo “correndo”. Né ha la priorità sull’altro, ottengono risorse come e quando il dispatcher della CPU decide.
Più opzioni
NetMasteroc3
Ars praefectus
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29446355#P29446355: 7E0SH86S ha detto:
Hat Monster [/url] “: 7e0sh86s]
Ho detto che un core della CPU si presenta al sistema operativo come un processore fisico e logico. Ho detto che un core della CPU si presenta al sistema operativo come un processore fisico e logico.
Non sono sicuro che ci stiamo parlando l’uno accanto all’altro. Anche se il tuo nitpick è del tutto tangenziale al punto in cui stavo facendo.
Quello che sto dicendo è che, almeno per Intel, la relazione fisica-logica è gerarchica e che l’hardware non disegna o presenta una distinzione come sei. Un processore fisico è un nucleo; Ogni core contiene 1 o più processori logici. Questo è stato il caso risalente almeno ai P4 per quanto posso dire dai dati CPUID che ho.
La distinzione che stai disegnando non corrisponde alla realtà, almeno non nel modo in cui io (e sembra che Redleader la stia interpretando.
Dal punto di vista hardware, i processori logici sono un tag nella logica che traccia i file e le istruzioni appartengono a cui thread non qualsiasi costrutto effettivo. Dal punto di vista del software, un processore fisico è solo un contenitore che raggruppa i processori logici e le cache in modo che il sistema operativo sia a conoscenza della disposizione fisica nel silicio.
Più opzioni
adatto
Ars Legatus Legionis
Abbonamento++
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29446355#P29446355: MRITO0BP ha detto:
Hat Monster [/url] “: mrito0bp] Né ha la priorità sull’altro, ottengono risorse come e quando il dispatcher della CPU decide.
Che è quello che ho detto
Più opzioni
Jimbopalmer
Ars Tribunus Angusticlavius
Abbonamento
Prenderò un altro punto di vista su ciò che l’OP ha chiesto.
Nell’iperthreading molto precoce, c’erano alcuni carichi di lavoro in cui era più lento dello stesso compito disattivato.
Questo non è vero da anni.
Se hai un singolo compito, funzionerà più velocemente con Hyperthreading acceso come disattivato.
Se, ad esempio, si dispone di una CPU con due core e in grado di 4 thread, eseguirà un singolo thread più veloce di un singolo core, CPU a filo singolo alla stessa velocità di clock. Se si avvia un secondo thread, molto probabilmente verrà assegnato al secondo nucleo e escluderà i colli di bottiglia di memoria, entrambi funzionano alla stessa velocità con cui utilizzano due PC alla stessa velocità di clock. La throughput aumenta del 100%
Una volta avviato il terzo thread (non il terzo thread!) Un nucleo inizierà Hyperthreading, che di solito migliora la produttività solo di un altro 30%, quindi ogni nucleo viene rallentato del 35%, in media. (Ancora una volta, questo dipende dal carico di lavoro, diversi algoritmi potrebbero già aspettare le risorse il 35% delle volte. Alcuni algoritmi possono essere così legati alla memoria che due core in esecuzione solo due thread possono essere in conflitto)
Una volta che tutti e quattro i thread sono in uso, ne stai ottenendo circa 2.6 volte il throughput di un singolo thread, quindi rispetto a quel singolo thread in esecuzione sulla stessa macchina, è probabile che sia solo il 65% più veloce come lo era. Ma non si è risolto a causa di HyerThreading, ha rallentato perché hai chiesto al tuo computer di svolgere 4 attività separte. Se avessi chiesto a una CPU a filo singolo singolo a core di eseguire 4 attività di calcolo di calcolo, sarebbe solo il 25% veloce come il singolo compito.
Hyperthreading è una vittoria ogni volta che il produttore non ha spazio per aggiungere solo core. In futuro con stampi più piccoli e risoluzioni più fini, più core e hyperthreading saranno sempre più comuni. Quasi l’unica altra cosa per cui usano i transistor sono cache sempre più grandi, che aiutano i carichi di lavoro non sono in conflitto.
Più opzioni
Jlarja
Ars Centurion
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29441313#P29441313: JVVftvyo ha detto:
fitten [/url] “: jvvftvyo]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29440315#P29440315: JVVftvyo ha detto:
Jlarja [/url] “: jvvftvyo] per quanto posso leggere, il poster originale chiede in particolare se il throughput di un singolo thread sia influenzato da un altro thread in esecuzione sullo stesso nucleo. Certo che lo è, enormemente!
Dipende da cosa stanno facendo i thread. Due thread in competizione per le stesse risorse hardware (entrambe FPU Heavy, entrambi legati alla memoria, ecc.) ma due thread che non competono così tanto (un thread FPU pesante, l’altro con praticamente senza FPU, per esempio, ed entrambi si comportano abbastanza bene rispetto alla cache) non avrà una concorrenza così grande.
La normale nomenclatura per discutere di questo è 4C/8T (quattro core, otto fili), 2C/4T (due core, quattro thread), ecc. Non vi è alcuna differenza nei processori moderni tra i due thread (o più) per core per una designazione “due core, due iper”.
È una bella teoria (e fa grandi diagrammi nelle diapositive di marketing), ma mi piacerebbe davvero vederlo testato da qualche parte. L’ultima volta che ho visto un test del sito di recensione questo era nell’era P4, quando Hyper-threading era una novità. Non riuscivano davvero a trovare un paio di carichi di lavoro che corrono bene insieme, anche se considerando l’architettura di P4, non è davvero sorprendente.
Qualcuno sa se questo è stato testato ultimamente? Soprattutto Haswell sembra che possa andare bene in un simile test, anche se già va abbastanza bene in molti test di throughtput iper-threading già.
A proposito, adoro Hyper-threading. È ottimo per la compilazione di basi di codice C (++) grandi, che è ciò che faccio sempre al lavoro. Ma non c’è dubbio che il doppio numero di core sarebbe ancora migliore.
Più opzioni
adatto
Ars Legatus Legionis
Abbonamento++
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29450801#P29450801: 1CF23TGA ha detto:
Jlarja [/url] “: 1cf23tga]
Qualcuno sa se questo è stato testato ultimamente?
È stato testato molto nel corso degli anni (facilmente trovato dalla ricerca di Google). I risultati variano a seconda dei carichi di lavoro e degli algoritmi. Come accennato in precedenza, i thread che competono per le stesse risorse possono esibire un numero di comportamenti diversi mentre altri scenari si svolgono favorevolmente (fino al 20% di tempo di esecuzione complessivo più rapido nei test favorevoli a HT). Ci sono casi speciali in cui HT può avere un rallentamento significativo (grave concorrenza delle risorse) ma il più delle volte, i rallentamenti sembrano essere nel margine di errore dei test. Come sempre, è importante trovare test simili ai compiti che ci si aspetta di eseguire per determinare gli effetti di HT sulle prestazioni complessive e se vale la pena aver abilitato o no.
Più opzioni
Redleader
Ars Legatus Legionis
Su Haswell il backend è molto più ampio (7 porte) e più di esse possono fare operazioni interi, quindi probabilmente il ridimensionamento è un po ‘diverso perché saranno meno contese per le porte di esecuzione:
Con 4 porte per carico/negozi, 4 per interi e 2 per il ramo, anche due thread che eseguono carichi di lavoro interi identici probabilmente non introducono molte contese.
Più opzioni
Jlarja
Ars Centurion
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29453201#P29453201: 1G7FY5RL ha detto:
fitten [/url] “: 1g7fy5rl]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29450801#P29450801: 1G7FY5RL ha detto:
Jlarja [/url] “: 1g7fy5rl]
Qualcuno sa se questo è stato testato ultimamente?
È stato testato molto nel corso degli anni (facilmente trovato dalla ricerca di Google). I risultati variano a seconda dei carichi di lavoro e degli algoritmi. Come accennato in precedenza, i thread che competono per le stesse risorse possono esibire un numero di comportamenti diversi mentre altri scenari si svolgono favorevolmente (fino al 20% di tempo di esecuzione complessivo più rapido nei test favorevoli a HT). Ci sono casi speciali in cui HT può avere un rallentamento significativo (grave concorrenza delle risorse) ma il più delle volte, i rallentamenti sembrano essere nel margine di errore dei test. Come sempre, è importante trovare test simili ai compiti che ci si aspetta di eseguire per determinare gli effetti di HT sulle prestazioni complessive e se vale la pena aver abilitato o no.
Non intendevo eseguire un carico di lavoro con o senza iper-threading. Questo viene sempre testato (core i5 vs i7). Volevo dire eseguire due diversi carichi di lavoro (qualcosa di mobile punto pesante come il raytracing e il numero intero pesante come la compilation c ++ parallela) insieme, dove potremmo vedere quelli “non rallentano altri thread” di risultati.
Dalla tua risposta sopra (processo complessivo più veloce del 20 %) vedo che stiamo ancora parlando di cose diverse. A volte non ti interessa i progressi complessivi, ma di un singolo compito (che potrebbe essere uno o più thread, non ha davvero importanza, purché non possa bloccare l’intero processore).
Prima di Hyper-threading, è possibile eseguire sempre progetti di calcolo distribuiti in background. Sono stati eseguiti con priorità inattiva, quindi non hanno rallentato le cose (almeno non così tanto da notare). Oggi non funziona, poiché avere thread DC che corrono insieme ad altre cose su core iper-thread rallenterà le altre cose.
Un altro esempio della vita reale: sul mio DVR basato su MyTHTV, ho dovuto limitare il rilevamento commerciale di fondo all’utilizzo di un solo thread su un 4C/8T i7 4771, perché usare di più stava interferendo con la riproduzione di HD, che pioli quattro thread quasi completamente (non so perché usi solo quattro thread. Forse chiunque abbia codificato non si fida di iper-threading. Se usasse tutti gli 8 thread, non ci sarebbe un problema). Non aiuta che il rilevamento commerciale sia eseguito con valori elevati, ruba ancora tempo dal compito in primo piano più importante di ottenere immagini senza intoppi in TV.
Credo che questo sia il tipo di situazione che il poster originale stava chiedendo. In questa situazione, Hyper-threading rallenta le cose in un modo che non fa in caso non threading. Puoi incolpare l’utente per essere stupido o di essere stupido e dire che tutto funziona come progettato. Non sono in disaccordo né mi interessa. Sto solo cercando di rispondere alla domanda originale .
Più opzioni
NetMasteroc3
Ars praefectus
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29457345#P29457345: TCEZXJMB ha detto:
Jlarja [/url] “: tcezxjmb]
Un altro esempio della vita reale: sul mio DVR basato su MyTHTV, ho dovuto limitare il rilevamento commerciale di fondo all’utilizzo di un solo thread su un 4C/8T i7 4771, perché usare di più stava interferendo con la riproduzione di HD, che pioli quattro thread quasi completamente (non so perché usi solo quattro thread.
La domanda più grande nella mia mente, è perché sta prendendo 4 thread e così tanto tempo per riprodurre il contenuto HD.
Riproduzione di 1080 h.264 e h.265 il contenuto non è così impegnativo e hai un sacco di CPU per gestirlo. Oppure mettilo in altro modo, la riproduzione di contenuti 1080p sul mio computer mangia solo il 10% del mio tempo di CPU (I5-2500K) e posso codificare il contenuto di 1080p al tempo o meglio del tempo reale e guardare il contenuto 1080p allo stesso tempo e la riproduzione rimane liscia e la code rimane come dovrebbe essere. Il caso è essenzialmente lo stesso sul mio i7-4980HQ nel mio MBP.
Più opzioni
Jlarja
Ars Centurion
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29457527#P29457527: CKO73P2V ha detto:
Netmasteroc3 [/url] “: cko73p2v]
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29457345#P29457345: CKO73P2V ha detto:
Jlarja [/url] “: cko73p2v]
Un altro esempio della vita reale: sul mio DVR basato su MyTHTV, ho dovuto limitare il rilevamento commerciale di fondo all’utilizzo di un solo thread su un 4C/8T i7 4771, perché usare di più stava interferendo con la riproduzione di HD, che pioli quattro thread quasi completamente (non so perché usi solo quattro thread.
La domanda più grande nella mia mente, è perché sta prendendo 4 thread e così tanto tempo per riprodurre il contenuto HD.
Riproduzione di 1080 h.264 e h.265 il contenuto non è così impegnativo e hai un sacco di CPU per gestirlo. Oppure mettilo in altro modo, la riproduzione di contenuti 1080p sul mio computer mangia solo il 10% del mio tempo di CPU (I5-2500K) e posso codificare il contenuto di 1080p al tempo o meglio del tempo reale e guardare il contenuto 1080p allo stesso tempo e la riproduzione rimane liscia e la code rimane come dovrebbe essere. Il caso è essenzialmente lo stesso sul mio i7-4980HQ nel mio MBP.
Non sta usando il metodo più ottimale (perché apparentemente non può gestire H rotto H.264 che esce dal connettore TV via cavo di tanto in tanto) e fa anche qualche altra elaborazione (de-inter-staracing è probabilmente il passaggio più impegnativo). Nessuna accelerazione hardware (parte di quel “non utilizza il metodo più ottimale”). Inoltre, il bitrate è spesso superiore a quello che vedi in contenuti streami o scaricabili (4-5 GBS / ora è abbastanza normale, penso).
Modifica: in genere il carico è circa due thread completamente utilizzati, tra l’altro. La custodia a quattro thread accade abbastanza spesso da essere fastidiosa. Soprattutto perché non salta solo le cornici o la balbuzie, spesso termina del tutto la riproduzione (forse Mythtv pensa che la registrazione sia finita, non lo so).
Suonare gli stessi file con VLC funziona molto meglio, tranne quando VLC rifiuta solo di riprodurli. È incredibilmente difficile guardare la TV in questi giorni.
Più opzioni
adatto
Ars Legatus Legionis
Abbonamento++
[url = http: // arstechnica.com/civis/visualtopic.PHP?p = 29457345#P29457345: 2MVY04FA ha detto:
Jlarja [/url] “: 2mvy04fa]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29453201#P29453201: 2MVY04FA ha detto:
fitten [/url] “: 2mvy04fa]
[url = http: // arstechnica.com/civis/visualtopic.PHP?P = 29450801#P29450801: 2MVY04FA ha detto:
Jlarja [/url] “: 2mvy04fa]
Qualcuno sa se questo è stato testato ultimamente?
È stato testato molto nel corso degli anni (facilmente trovato dalla ricerca di Google). I risultati variano a seconda dei carichi di lavoro e degli algoritmi. Come accennato in precedenza, i thread che competono per le stesse risorse possono esibire un numero di comportamenti diversi mentre altri scenari si svolgono favorevolmente (fino al 20% di tempo di esecuzione complessivo più rapido nei test favorevoli a HT). Ci sono casi speciali in cui HT può avere un rallentamento significativo (grave concorrenza delle risorse) ma il più delle volte, i rallentamenti sembrano essere nel margine di errore dei test. Come sempre, è importante trovare test simili ai compiti che ci si aspetta di eseguire per determinare gli effetti di HT sulle prestazioni complessive e se vale la pena aver abilitato o no.
Non intendevo eseguire un carico di lavoro con o senza iper-threading. Questo viene sempre testato (core i5 vs i7). Volevo dire eseguire due diversi carichi di lavoro (qualcosa di mobile punto pesante come il raytracing e il numero intero pesante come la compilation c ++ parallela) insieme, dove potremmo vedere quelli “non rallentano altri thread” di risultati.
Dalla tua risposta sopra (processo complessivo più veloce del 20 %) vedo che stiamo ancora parlando di cose diverse. A volte non ti interessa i progressi complessivi, ma di un singolo compito (che potrebbe essere uno o più thread, non ha davvero importanza, purché non possa bloccare l’intero processore).
Prima di Hyper-threading, è possibile eseguire sempre progetti di calcolo distribuiti in background. Sono stati eseguiti con priorità inattiva, quindi non hanno rallentato le cose (almeno non così tanto da notare). Oggi non funziona, poiché avere thread DC che corrono insieme ad altre cose su core iper-thread rallenterà le altre cose.
Un altro esempio della vita reale: sul mio DVR basato su MyTHTV, ho dovuto limitare il rilevamento commerciale di fondo all’utilizzo di un solo thread su un 4C/8T i7 4771, perché usare di più stava interferendo con la riproduzione di HD, che pioli quattro thread quasi completamente (non so perché usi solo quattro thread. Forse chiunque abbia codificato non si fida di iper-threading. Se usasse tutti gli 8 thread, non ci sarebbe un problema). Non aiuta che il rilevamento commerciale sia eseguito con valori elevati, ruba ancora tempo dal compito in primo piano più importante di ottenere immagini senza intoppi in TV.
Credo che questo sia il tipo di situazione che il poster originale stava chiedendo. In questa situazione, Hyper-threading rallenta le cose in un modo che non fa in caso non threading. Puoi incolpare l’utente per essere stupido o di essere stupido e dire che tutto funziona come progettato. Non sono in disaccordo né mi interessa. Sto solo cercando di rispondere alla domanda originale .
In realtà avevo scritto un po ‘su questo nell’altro messaggio ma l’ho cancellato. Stokes ha alcune presentazioni HT qui su AR che sono bene da leggere/guardare. Tuttavia, nella spiegazione più semplice, vengono emesse istruzioni dei due flussi di istruzioni HT per colmare le “lacune” nelle risorse inattive del processore. Alcune delle istruzioni di entrambi i flussi avranno bisogno delle stesse risorse contemporaneamente. Quando ciò accade, tale contesa diventerà necessariamente serializzata per quelle istruzioni. In un mondo perfetto (o con risorse sufficienti), potrebbero essere emessi in parallelo e non si vede alcun impatto. Tuttavia, se ogni nucleo avesse semplicemente 2x le risorse necessarie, allora sarebbero effettivamente due core fisici separati, quindi perché non fare solo due core separati?
Pensa ai vecchi tempi del semplice tempo che si taglia su un singolo core (core a filo singolo). Se il thread si nascondesse un IO, per esempio, allora il sistema operativo potrebbe prevenire quel thread e pianificarne un altro. Tutto questo era a livello del sistema operativo. Tuttavia, il sistema operativo non poteva davvero vedere a livello di cache, né vorrebbe, perché il sovraccarico per pianificare un’altra attività nel tempo di taglio è enorme rispetto a una cache, ad esempio. Quindi ora abbiamo SMT/HT che si trova in hardware e * possiamo * vedere a livello di misteri della cache uniforme e stalloni di pericolo di esecuzione (cicli di clock a singola cifra) e possono emettere istruzioni da più thread/contesti hardware per sfruttare le risorse hardware del core inattiva.
Quindi estendi questo (un insieme idealizzato di esempi semplificati. Supponiamo che tutte le risorse fondamentali siano le stesse. Come tutte le risorse di tipo intero, ignora il punto galleggiante o altri). Se hai due thread identici che operano in modo tale da non esistere bancarelle (dati o altro) e il core non ha risorse aggiuntive su ciò che un thread può utilizzare (questo non è il caso degli attuali processori HT. Hanno di più) quindi i fili prendono ipoteticamente 2x più tempo, tempo a parete, assumendo una pianificazione perfettamente equa (prendi un’istruzione da un flusso, quindi l’uno dall’altro, ripeti) per finire perché è come mescolare due mazzi di carte insieme in una perfetta shuffle. Il mazzo di risultati finali è alto 2x come uno dei mazzi originali perché ora ci sono 2x il numero di carte nel mazzo risultante (paragonabile a 2x il tempo di esecuzione di Wallclock).
Ora, più bancarelle si verificano (o più risorse ha un nucleo. o entrambi) significa che più volte le risorse potrebbero essere inattive per un thread in cui l’altro thread potrebbe eseguire senza influire sull’esecuzione del primo thread. È quindi possibile entrare in una situazione in cui l’esecuzione del secondo thread ha avuto un impatto zero sull’esecuzione del primo thread fino al tempo di esecuzione end-to-end di ciò che il primo thread avrebbe incontrato anche se il secondo thread non esistesse. Il thread avrebbe sperimentato lo stesso tempo di esecuzione del muro con o senza l’altro thread HT. Questo secondo scenario sarebbe anche lo stesso di avere due core fisici, ognuno con un solo contesto (come abbiamo fatto in processori multicore e non HT oggi) o un core 1c/2t con il doppio delle risorse di base che qualsiasi thread potrebbe usare o una quantità perfetta di bancarelle/cache, ecc.
Quindi la realtà è da qualche parte nel mezzo, ma possiamo escogitare scenari (forse artificiali) in cui la penalità di tempo di esecuzione del muro migliore è lo 0% e il peggio è, diciamo, al 100%. Ciò che si può sperimentare nell’esecuzione di Wallclock di un singolo thread dipende fortemente dalle risorse di base e sia i flussi di istruzioni del thread. I processori HT non tendono ad avere 2x la quantità di risorse che un singolo thread potrebbe mai utilizzare. I flussi di istruzioni non hanno un set perfetto di esigenze di risorse/stallo/cache-miss, quindi più flussi di istruzioni possono essere interlacciati in modo tale che nessun thread sia influenzato dagli altri. D’altra parte, i processori HT possono trarre vantaggio da una granularità di “attesa” in un processore che non è visibile a livello di sistema operativo e che sarebbe troppo costoso per sfruttare, in ogni caso (taglio del tempo), al fine di migliorare il throughput di più thread di esecuzione. Mentre un determinato thread può sperimentare un tempo di esecuzione più lungo di Wallclock, il compito generale (entrambi i thread insieme) può sperimentare un tempo di esecuzione più breve rispetto al non avere HT. Data la natura altamente dipendente dalla domanda di carico di lavoro, esiterei a tentare di indovinare qualsiasi numero sul rallentamento del Wallclock a filo singolo, anche tentando di costruire un caso “medio”.
Tuttavia. Direi che se ti preoccupi del tempo di esecuzione di Wallclock di un singolo thread, allora disabilitare (o non avere) HT sarebbe probabilmente la strada da percorrere. Se sei preoccupato per le prestazioni complessive del sistema, il tempo di esecuzione di Wallclock di un’attività o più attività simultanee, allora abilitare HT sarebbe probabilmente la strada da percorrere. So per esperienza personale che le VM, ad esempio, beneficiano abbastanza bene di HT. Ho anche scritto una serie di applicazioni in cui generano tanti thread quanti contesti HT in un ambiente HT mostrano anche un bel throughput rispetto alla pianificazione solo del numero di thread come core fisici sullo stesso sistema. Tuttavia, dal mondo HPC, so che anche i codici FPU “pesanti” tendono ad essere effettivamente meno pesanti di quanto si possa pensare (il 40% delle istruzioni FPU del flusso di istruzioni su alcuni codici di risoluzione. le istruzioni per il numero intero). Tuttavia, in quei codici l’utilizzo della cache sarebbe un grande fattore (dimezzare efficacemente la cache quando la condivisione dei thread con HT) e i miss cache alla memoria principale potrebbero iniziare a essere un fattore più significativo (gli algoritmi adattivi delle dimensioni della cache potrebbero aiutare lì), tuttavia).