Permalänk

Threads (processorer)

Vad är threads för nåt? Jag har sökt på Google men jag får bara engelska resultat :/ så..

1. Vad är det?

2. Vi säger att det är 4 kärnig processor med 2threads är det 2 threads i varje kärna eller är det totalt? Samt vad är deras uppgift?

Permalänk
Medlem
Skrivet av Darkboot:

Vad är threads för nåt? Jag har sökt på Google men jag får bara engelska resultat :/ så..

1. Vad är det?

2. Vi säger att det är 4 kärnig processor med 2threads är det 2 threads i varje kärna eller är det totalt? Samt vad är deras uppgift?

http://sv.wikipedia.org/wiki/Tr%C3%A5d_(datavetenskap)

Visa signatur

8700K 5GHz | GeForce GTX960 4GB WFOC | Corsair Vengeance LPX 16GB 3200MHz | Windows 11

Permalänk
Medlem

Sök på trådar så för du svenska svar.

En kärna en tråd brukar vara det vanliga, intel kör två trådar per kärna med hyperthreading.

Visa signatur

i9 11900k ||32GB 4000MHz CL15||ASUS ROG STRIX Z590-E||Noctua NH-D15s
Intel Arc a750 ||Samsung 980 pro|| EVGA Supernova G3 850W
Asus xonar essence STX|| Lian-Li O11 Dynamic XL
Asus VG27AQ 165Hz IPS, Sennheiser HD650, Logitech g502 Hero, fUnc f30r, Vortex TAB90M, Audio-Technicha ATR2500x-USB
Server: x10SL7-F, Xeon E3 1230v3, 32GB Samsung ECC ram, 6x3TB WD RED, FD Node 804.

Permalänk

Funkar inte, står bara att det itne skapats en artikel om det ännu.

TS: Nu kan jag ha väääldigt fel men som jag uppfattat det så är det simpelt förklarat ungefär som följande.
En i7a har 4 fysiska kärnor.. men med hyperthreading som den har som alternativ kan den skapa 4 stycken logiska kärnor.. så kallade threads. D.v.s det blir som den har 8 kärnor att dela upp arbetet på men det 4 extra trådarna man aktiverar är inte fysiska utan de är virtuella. 4 fysiska som är default och 4 extra logiska med HT aktiverat vilket ökar arbetspotentialen för processorn då den kan dela upp jobbet mer och på så sätt klara mer.

Detta är vad jag har för mig att det innebär, kortfattat och inte så tydligt förklarat kanske. Kan dessutom ha fel men folk som KAN kommer svara inom kort

Visa signatur

CITERA FÖR SVAR!

Permalänk
Medlem
Skrivet av znorlaxvbg:

Funkar inte, står bara att det itne skapats en artikel om det ännu.

Om du lägger till parentesen som inte är inräknad i länken så går det bra.
(Syns ganska tydligt i texten du citerat)

Visa signatur

i9 11900k ||32GB 4000MHz CL15||ASUS ROG STRIX Z590-E||Noctua NH-D15s
Intel Arc a750 ||Samsung 980 pro|| EVGA Supernova G3 850W
Asus xonar essence STX|| Lian-Li O11 Dynamic XL
Asus VG27AQ 165Hz IPS, Sennheiser HD650, Logitech g502 Hero, fUnc f30r, Vortex TAB90M, Audio-Technicha ATR2500x-USB
Server: x10SL7-F, Xeon E3 1230v3, 32GB Samsung ECC ram, 6x3TB WD RED, FD Node 804.

Permalänk
Skrivet av BergEr:

Om du lägger till parentesen som inte är inräknad i länken så går det bra.
(Syns ganska tydligt i texten du citerat)

Opps, jag som var ett klantarsel! My bad!

Visa signatur

CITERA FÖR SVAR!

Permalänk
Rekordmedlem
Skrivet av Darkboot:

Vad är threads för nåt? Jag har sökt på Google men jag får bara engelska resultat :/ så..

1. Vad är det?

2. Vi säger att det är 4 kärnig processor med 2threads är det 2 threads i varje kärna eller är det totalt? Samt vad är deras uppgift?

Trådar är hur mycket olika saker en cpu kan köra samtidigt och en kärna innebär minst en tråd, så en 4 kärnig cpu kan minst köra 4 trådar samtidigt så det finns inga 4 kärniga 2 trådiga cpuer, däremot finns det 2 kärniga som kan hantera 4 trådar.
Möjlighet till flera trådar ger bättre multitasking i cpun, en del program kan använda flera trådar, men annars så låter operativsystemet dem köra olika program samtidigt.

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av znorlaxvbg:

Funkar inte, står bara att det itne skapats en artikel om det ännu.

TS: Nu kan jag ha väääldigt fel men som jag uppfattat det så är det simpelt förklarat ungefär som följande.
En i7a har 4 fysiska kärnor.. men med hyperthreading som den har som alternativ kan den skapa 4 stycken logiska kärnor.. så kallade threads. D.v.s det blir som den har 8 kärnor att dela upp arbetet på men det 4 extra trådarna man aktiverar är inte fysiska utan de är virtuella. 4 fysiska som är default och 4 extra logiska med HT aktiverat vilket ökar arbetspotentialen för processorn då den kan dela upp jobbet mer och på så sätt klara mer.

Detta är vad jag har för mig att det innebär, kortfattat och inte så tydligt förklarat kanske. Kan dessutom ha fel men folk som KAN kommer svara inom kort

För att förtydliga och upplysa lite:
Ökar arbetpotentialen - Ja!
Klara mer? - Nej

Det Hyperthreading gör är att processorns alla kärnor får en extra tråd som den Snabbt kan byta till om något tokigt händer med den primära. T ex den beräknar och behöver en variabel som inte är uträknad ännu.

Då slipper den spara allt til RAM-minnet, ladda in nya arbetsuppgifter, beräkna den nya variabeln, spara variabeln till RAM-minnet och sedan åter ladda in den primära uppgiften. Istället byter den bara tråd.

Detta ger ingen ökad "rå-kraft", man märker inte av mer kraft i spel och rent tekniskt sett kan den inte räkna ut fler tal än vad en likadan kärna utan HT skulle kunna.
Dock kan den lägga lite mer tid på beräkningar istället för att sitta och vänta på instruktioner från Ram/Cache-minnet.

Samma sak sker om processorn räknar fel eller plockar in fel information. Istället för att sitta och vänta ~40clock cykler och inte göra något så byter den tråd och arbetar på den andra tråden i kanske 20-25clock cykler för att sedan gå tillbaka till den primära tråden.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Datavetare
Skrivet av DavidtheDoom:

För att förtydliga och upplysa lite:
Ökar arbetpotentialen - Ja!
Klara mer? - Nej

Det Hyperthreading gör är att processorns alla kärnor får en extra tråd som den Snabbt kan byta till om något tokigt händer med den primära. T ex den beräknar och behöver en variabel som inte är uträknad ännu.

Då slipper den spara allt til RAM-minnet, ladda in nya arbetsuppgifter, beräkna den nya variabeln, spara variabeln till RAM-minnet och sedan åter ladda in den primära uppgiften. Istället byter den bara tråd.

Detta ger ingen ökad "rå-kraft", man märker inte av mer kraft i spel och rent tekniskt sett kan den inte räkna ut fler tal än vad en likadan kärna utan HT skulle kunna.
Dock kan den lägga lite mer tid på beräkningar istället för att sitta och vänta på instruktioner från Ram/Cache-minnet.

Samma sak sker om processorn räknar fel eller plockar in fel information. Istället för att sitta och vänta ~40clock cykler och inte göra något så byter den tråd och arbetar på den andra tråden i kanske 20-25clock cykler för att sedan gå tillbaka till den primära tråden.

Dold text

Så fungerar inte SMT (och HT är bara Intels namn på deras SMT implementation).

CPUer med HT har verkligen två uppsättningar av CPU-register per CPU-kärna, vilket betyder att sett ur OS:ets synvinkel finns det ingen logisk skillnad mellan en CPU-tråd och en "riktig" CPU-kärna. Däremot delar de två CPU-trådarna i en CPU-kärna på nästan alla resurser. Att duplicera register-filen för varje CPU-tråd är något som alla implementationer av SMT gör.

Så vad är då poängen med SMT om allt delas, blir inte farten per tråd då halv?

I viss fall är det inte så långt från sanningen, SMT ger normalt sätt väldigt liten effekt i program som kör i princip uteslutande ur CPU-cachen. Nästan allt man gör på en "desktop-dator" har ett s.k. "working-set" (storlek på data som man aktivt jobbar på för stunden) som är mindre än CPU-cachen, spel hör definitivt till den kategorin. I dessa lägen blir den enda bonus från SMT att antalet möjliga sätt att lägga ut instruktioner som kan köras oberoende av varandra ökar, vilket gör det möjligt att öka IPC sett för en fysisk kärna, men denna ökning är relativt liten, typ 10-30%.

Då varje CPU-tråd i HT har sin egen uppsättning register, vilket då inkluderar en egen programräknare (pekare till nästa instruktion att köra) så är det fullt möjligt att båda trådarna kan avancera under samma klockcykel, d.v.s inga byten sker och OS:et är överhuvudtaget inte involverad i processen att välja vilken CPU-tråd som kör när och vilka ALU-enheter tråden får ta i anspråk en viss cykel.

Finns andra implementationer av SMT, vissa version av SPARC t.ex., där det är omöjligt att mer än en tråd avancerar sin programräknare en viss CPU-cykel. Men det är som sagt bara en implementationsdetalj som inte OSet behöver bry sig om (eller ens kan påverka).

Så vad är då poängen med SMT, framförallt på SPARC-processorn ovan? SMT är ett väldigt effektivt sätt att dölja latens.
Så vad menas med det?
I program som har ett "working-set" som är för stort att få plats i CPU-cachen så kommer minnesoperationer få vänta på att data ska hämtas/skrivas till RAM. Accesstiden mot RAM är från CPUs perspektiv väldigt lång, 100-tals cykler. Till en viss gräns kan moderna CPUer (tack vare s.k. out-of-order execution) utföra andra saker medan de väntar, men det räcker inte då man ganska snart når en punkt när man måste få resultatet från det som väntar på RAM för att kunna gå vidare.

Notera att för OS:et så är allt detta osynligt, det finns inte möjlighet för ett OS att "byta tråd" i detta läge då det som nu hänt är bara att en "mov" instruktion råkar bli väldigt dyr, tråden är inte "blockad" ur ett OS-perspektiv.

Men om CPUn har flera CPU-trådar som alla kör olika program så kan CPUn fortfarande utföra arbete så länge som någon tråd har de data den behöver. Och om man har många trådar, SPARC har i dag 8 trådar per CPU-kärna, POWER, vissa MIPS samt Xeon Phi har 4, så sjunker i.o.f.s. prestanda per CPU-tråd men det betyder också att latensen mot RAM räknat i CPU-cykler också sjunker sett ur perspektivet frå varje enskild tråd. Att gå mot RAM är därför, relativt sätt, inte lika dyrt och SMT kan i dessa fall ge nära nog lika stor effekt som en "riktig" kärna (då den ändå bara skulle få vänta på RAM om den bara hade en CPU-tråd).

Så HT/SMT är typiskt ganska meningslöst för desktop, det kan faktiskt vara rent negativt om det enda man är ute efter är låg latans. Men HT/SMT kan vara väldigt bra för vissa specifika arbetslaster.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av virtual void:
Dold text

Så fungerar inte SMT (och HT är bara Intels namn på deras SMT implementation).

CPUer med HT har verkligen två uppsättningar av CPU-register per CPU-kärna, vilket betyder att sett ur OS:ets synvinkel finns det ingen logisk skillnad mellan en CPU-tråd och en "riktig" CPU-kärna. Däremot delar de två CPU-trådarna i en CPU-kärna på nästan alla resurser. Att duplicera register-filen för varje CPU-tråd är något som alla implementationer av SMT gör.

Så vad är då poängen med SMT om allt delas, blir inte farten per tråd då halv?

I viss fall är det inte så långt från sanningen, SMT ger normalt sätt väldigt liten effekt i program som kör i princip uteslutande ur CPU-cachen. Nästan allt man gör på en "desktop-dator" har ett s.k. "working-set" (storlek på data som man aktivt jobbar på för stunden) som är mindre än CPU-cachen, spel hör definitivt till den kategorin. I dessa lägen blir den enda bonus från SMT att antalet möjliga sätt att lägga ut instruktioner som kan köras oberoende av varandra ökar, vilket gör det möjligt att öka IPC sett för en fysisk kärna, men denna ökning är relativt liten, typ 10-30%.

Då varje CPU-tråd i HT har sin egen uppsättning register, vilket då inkluderar en egen programräknare (pekare till nästa instruktion att köra) så är det fullt möjligt att båda trådarna kan avancera under samma klockcykel, d.v.s inga byten sker och OS:et är överhuvudtaget inte involverad i processen att välja vilken CPU-tråd som kör när och vilka ALU-enheter tråden får ta i anspråk en viss cykel.

Finns andra implementationer av SMT, vissa version av SPARC t.ex., där det är omöjligt att mer än en tråd avancerar sin programräknare en viss CPU-cykel. Men det är som sagt bara en implementationsdetalj som inte OSet behöver bry sig om (eller ens kan påverka).

Så vad är då poängen med SMT, framförallt på SPARC-processorn ovan? SMT är ett väldigt effektivt sätt att dölja latens.
Så vad menas med det?
I program som har ett "working-set" som är för stort att få plats i CPU-cachen så kommer minnesoperationer få vänta på att data ska hämtas/skrivas till RAM. Accesstiden mot RAM är från CPUs perspektiv väldigt lång, 100-tals cykler. Till en viss gräns kan moderna CPUer (tack vare s.k. out-of-order execution) utföra andra saker medan de väntar, men det räcker inte då man ganska snart når en punkt när man måste få resultatet från det som väntar på RAM för att kunna gå vidare.

Notera att för OS:et så är allt detta osynligt, det finns inte möjlighet för ett OS att "byta tråd" i detta läge då det som nu hänt är bara att en "mov" instruktion råkar bli väldigt dyr, tråden är inte "blockad" ur ett OS-perspektiv.

Men om CPUn har flera CPU-trådar som alla kör olika program så kan CPUn fortfarande utföra arbete så länge som någon tråd har de data den behöver. Och om man har många trådar, SPARC har i dag 8 trådar per CPU-kärna, POWER, vissa MIPS samt Xeon Phi har 4, så sjunker i.o.f.s. prestanda per CPU-tråd men det betyder också att latensen mot RAM räknat i CPU-cykler också sjunker sett ur perspektivet frå varje enskild tråd. Att gå mot RAM är därför, relativt sätt, inte lika dyrt och SMT kan i dessa fall ge nära nog lika stor effekt som en "riktig" kärna (då den ändå bara skulle få vänta på RAM om den bara hade en CPU-tråd).

Så HT/SMT är typiskt ganska meningslöst för desktop, det kan faktiskt vara rent negativt om det enda man är ute efter är låg latans. Men HT/SMT kan vara väldigt bra för vissa specifika arbetslaster.

Absolut så håller jag med dig. Men jag försöker lägga fram HT på ett sätt som är simpelt att förstå.
Du vet väl om att vi redan har tagit detta snacket om HT du och jag tidigare på detta forum?

"CPUer med HT har verkligen två uppsättningar av CPU-register per CPU-kärna"

Och det är exakt samma sak jag syftar på. Dock delas resterade resurser mellan dessa Cpu-register.

SMT - Simultainiously Multithreading ja.
Det finns en hyfsat bra artikel jag kan dela med mig om skillnaden mellan SMT, CMT och CMP.
http://atenra.blog.com/2012/02/01/amd%E2%80%99s-bulldozer-cmt...

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Datavetare
Skrivet av DavidtheDoom:

Absolut så håller jag med dig. Men jag försöker lägga fram HT på ett sätt som är simpelt att förstå.
Du vet väl om att vi redan har tagit detta snacket om HT du och jag tidigare på detta forum?

"CPUer med HT har verkligen två uppsättningar av CPU-register per CPU-kärna"

Och det är exakt samma sak jag syftar på. Dock delas resterade resurser mellan dessa Cpu-register.

SMT - Simultainiously Multithreading ja.
Det finns en hyfsat bra artikel jag kan dela med mig om skillnaden mellan SMT, CMT och CMP.
http://atenra.blog.com/2012/02/01/amd%E2%80%99s-bulldozer-cmt...

Dold text

Var vissa formuleringar som jag reagerade emot, t.ex. det finns inget koncept av en primär/sekundär tråd. Faktum är att en sådan uppdelning skulle definitivt kunna vara en fördel på desktop (och än större fördel på mobiler där CPUn är mycket klenare) då man skulle kunna köra GUI på den primära tråden och därmed slippa den nackdel SMT har med ökad latens, men alla (nuvarande) SMT-implementationer har samma prioritet på alla trådar.

Sedan i just fallet HT så körs båda trådarna verkligen samtidigt, visst blir prestanda per tråd lägre när båda trådarna används, men summan utfört arbete på två trådar blir större än när bara en tråd används. Jämför man med AMDs moduler så har ju Intel mycket högre IPC när en CPU-tråd används och när båda trådarna används så sjunker IPC/tråd mer på Intel men i genomsnitt har redan Sandy-bridge faktiskt något bättre IPC/tråd än FX-8350 när båda trådarna används (ungefär samma totala prestanda men SNB är lägre klockad).

Det finns SMT implementationer där man switchar, men den policy du beskrev där man kör till det tar stopp används så vitt jag vet inte av någon. Anledningen är med stor sannolikhet att en sådan policy skulle väldigt lätt kunna leda till helt horribel prestanda (eller till och med total utsvältning) på en tråd som ganska ofta får en cache-miss och som delar fysisk CPU med en tråd som nästan aldrig får en miss. SPARC T1-T3 byter tråd varje cykel, medan alla övriga SMT jag känner till är som Intels HT, trådar körs verkligen samtidigt i bemärkelsen att mer än en tråd kan avancera sin programräknare samma cykel (gäller till och med Atom).

Sedan tillför HT mer "rå-kraft" i de lägen det är en bra idé (och i fallet Atom så tillför HT i princip alltid runt 50% extra). En server som jobbar med ett stort "working set" kan hantera fler transaktioner per sekund, d.v.s. kapaciteten ökar. Också applikationer som använder sig mycket av SSE/AVX, även med ett litet "working set" får mer kapacitet av HT (FLOPS ökar). I fallet SSE/AVX beror det på att flaskhalsen inte alls är avkodning- och "dispatch" av instruktioner (något som delas mellan trådarna) då SSE- och framförallt AVX-instruktioner har relativt hög latens men utför också mycket. HT blir då igen effektiv p.g.a. latensen.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av Yoshman:
Dold text

Var vissa formuleringar som jag reagerade emot, t.ex. det finns inget koncept av en primär/sekundär tråd. Faktum är att en sådan uppdelning skulle definitivt kunna vara en fördel på desktop (och än större fördel på mobiler där CPUn är mycket klenare) då man skulle kunna köra GUI på den primära tråden och därmed slippa den nackdel SMT har med ökad latens, men alla (nuvarande) SMT-implementationer har samma prioritet på alla trådar.

Sedan i just fallet HT så körs båda trådarna verkligen samtidigt, visst blir prestanda per tråd lägre när båda trådarna används, men summan utfört arbete på två trådar blir större än när bara en tråd används. Jämför man med AMDs moduler så har ju Intel mycket högre IPC när en CPU-tråd används och när båda trådarna används så sjunker IPC/tråd mer på Intel men i genomsnitt har redan Sandy-bridge faktiskt något bättre IPC/tråd än FX-8350 när båda trådarna används (ungefär samma totala prestanda men SNB är lägre klockad).

Det finns SMT implementationer där man switchar, men den policy du beskrev där man kör till det tar stopp används så vitt jag vet inte av någon. Anledningen är med stor sannolikhet att en sådan policy skulle väldigt lätt kunna leda till helt horribel prestanda (eller till och med total utsvältning) på en tråd som ganska ofta får en cache-miss och som delar fysisk CPU med en tråd som nästan aldrig får en miss. SPARC T1-T3 byter tråd varje cykel, medan alla övriga SMT jag känner till är som Intels HT, trådar körs verkligen samtidigt i bemärkelsen att mer än en tråd kan avancera sin programräknare samma cykel (gäller till och med Atom).

Sedan tillför HT mer "rå-kraft" i de lägen det är en bra idé (och i fallet Atom så tillför HT i princip alltid runt 50% extra). En server som jobbar med ett stort "working set" kan hantera fler transaktioner per sekund, d.v.s. kapaciteten ökar. Också applikationer som använder sig mycket av SSE/AVX, även med ett litet "working set" får mer kapacitet av HT (FLOPS ökar). I fallet SSE/AVX beror det på att flaskhalsen inte alls är avkodning- och "dispatch" av instruktioner (något som delas mellan trådarna) då SSE- och framförallt AVX-instruktioner har relativt hög latens men utför också mycket. HT blir då igen effektiv p.g.a. latensen.

Ännu en gång. Det var ett sätt att visualisera för en lekman hur det fungerar. Att säga primär och sekundär syftade inte på någon rangordning eller prioritering i uppgifter. Kanske hade varit lämpligare att jag hade sagt Tråd A tråd B etc.

Men nu tycker jag du gör som du gjorde förra gången. Jag håller med om att du vet mer och säkerligen kan förklara det bättre, och det både hoppas jag och önskar jag att du gör. Men du gillar verkligen att peka ut vad jag kanske inte formulerar exakt som det är när jag försöker göra det lagom komplicerat. Som du märker så dör tråden jäkligt snabbt när svårighetsgraden på inläggen ökar.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem

Ta en titt på: http://en.wikipedia.org/wiki/Thread_(computing)

Tänk på det finns trådning i mjukvara såväl som i hårdvara.

Mjukvara: Programmet är skapat på ett sätt som tillåter/möjliggör delar i det att exekvera parallellt.
Antingen genom att ha flera trådar inom samma process eller flera processer sammankopplade.
Det är inte helt enkelt att göra detta.

Hårdvara: CPU:n är skapad på ett sätt som gör att den kan exekvera mer än en sak samtidigt. "Äldre" CPU:er kunde bara göra en sak åt gången och exekverade processerna en åt gången i korta tidsintervall. Tex varje process får exekvera 20 millisekunder sedan skiftas en annan process in.

Permalänk
Datavetare
Skrivet av DavidtheDoom:

Ännu en gång. Det var ett sätt att visualisera för en lekman hur det fungerar. Att säga primär och sekundär syftade inte på någon rangordning eller prioritering i uppgifter. Kanske hade varit lämpligare att jag hade sagt Tråd A tråd B etc.

Men nu tycker jag du gör som du gjorde förra gången. Jag håller med om att du vet mer och säkerligen kan förklara det bättre, och det både hoppas jag och önskar jag att du gör. Men du gillar verkligen att peka ut vad jag kanske inte formulerar exakt som det är när jag försöker göra det lagom komplicerat. Som du märker så dör tråden jäkligt snabbt när svårighetsgraden på inläggen ökar.

Dold text

Sorry om det uppfattades som drygt, var inte min menig. Inget fel att göra förenklingar, kan vara rätt svårt att göra bra (tyck i alla fall jag). Är lite väl mycket nörd för att kunna se förenklingar som beskriver tekniken felaktigt.

Är det egentligen någon här som svara på den ursprungliga frågan av TS?

1. En CPU består av en eller flera "kärnor" och varje sådan kärna har en eller flera trådar. En kärna består av en rad olika funktionella enheter som kan t.ex. hämta/skriva ett tal från/till minne, kan addera/subtrahera två tal från varandra och liknande.

En CPU tråd är i sin absoluta mest nedskalade variant bara en pekare (representerat som ett tal mellan 0..2^32 alt. 0..2^64 för 32-bitars resp 64-bitars CPUer) som talar vilken den nästa instruktionen som ska köras är. En sådan instruktion skulle kunna vara "addera innehållet i minnescell X med talet 17 och skriv ner resultatet i minnescell X igen". Har din CPU två trådar finns det två sådana pekare som delar på (nästan all) de beräknings-enheter som finns i kärnan.

2. Om du har 4 kärnor med 2 trådar så menar man 2 trådar på varje kärna. En CPU-kärna utan minst en tråd skulle vara meningslös. Så i fallet 4 kärnor / 2 trådar skulle ditt operativsystem "se" totalt 8 CPU-trådar.

Läser man teknisk dokument från Intel så brukar den tala om fysiska kärnor (som i ditt exempel är 4) och logiska kärnor (som i ditt exempel då är 4*2=8).

Logiska kärnor är nog bättre då ordet "tråd" är kanske lite olyckligt valt då, som redan påpekats i här, ordet är betydligt mer välanvänt för att mena "en serie instruktioner som ditt operativsystem kan välja att köra på en lämplig logisk CPU-kärna".

Och rent krasst skulle någon som skriver operativsystem helt kunna ignorerar "fysiska kärnor" då man rent logiskt kan behandla en CPU-tråd på samma sätt oavsett om det finns en eller två sådana per CPU-kärna. Men rent praktiskt så vill man hålla isär begreppen då det i (nästan) alla fall är betydligt mer effektivt att använda en logisk kärna som inte delar fysisk kärna med någon annan aktiv logisk kärna. I.e. Windows/Linux/OSX kommer i första hand sprida ut ditt program på CPU-trådar som tillhör olika fysiska kärnor och först när alla har en tråd aktiv kommer man använda den andra CPU-tråden.

Så har du en 4 kärnors CPU med HT så kommer HT överhuvudtaget inte att används så länge som du har färre än 4 OS-trådar aktivt körande samtidigt.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av Yoshman:
Dold text

Sorry om det uppfattades som drygt, var inte min menig. Inget fel att göra förenklingar, kan vara rätt svårt att göra bra (tyck i alla fall jag). Är lite väl mycket nörd för att kunna se förenklingar som beskriver tekniken felaktigt.

Är det egentligen någon här som svara på den ursprungliga frågan av TS?

1. En CPU består av en eller flera "kärnor" och varje sådan kärna har en eller flera trådar. En kärna består av en rad olika funktionella enheter som kan t.ex. hämta/skriva ett tal från/till minne, kan addera/subtrahera två tal från varandra och liknande.

En CPU tråd är i sin absoluta mest nedskalade variant bara en pekare (representerat som ett tal mellan 0..2^32 alt. 0..2^64 för 32-bitars resp 64-bitars CPUer) som talar vilken den nästa instruktionen som ska köras är. En sådan instruktion skulle kunna vara "addera innehållet i minnescell X med talet 17 och skriv ner resultatet i minnescell X igen". Har din CPU två trådar finns det två sådana pekare som delar på (nästan all) de beräknings-enheter som finns i kärnan.

2. Om du har 4 kärnor med 2 trådar så menar man 2 trådar på varje kärna. En CPU-kärna utan minst en tråd skulle vara meningslös. Så i fallet 4 kärnor / 2 trådar skulle ditt operativsystem "se" totalt 8 CPU-trådar.

Läser man teknisk dokument från Intel så brukar den tala om fysiska kärnor (som i ditt exempel är 4) och logiska kärnor (som i ditt exempel då är 4*2=8).

Logiska kärnor är nog bättre då ordet "tråd" är kanske lite olyckligt valt då, som redan påpekats i här, ordet är betydligt mer välanvänt för att mena "en serie instruktioner som ditt operativsystem kan välja att köra på en lämplig logisk CPU-kärna".

Och rent krasst skulle någon som skriver operativsystem helt kunna ignorerar "fysiska kärnor" då man rent logiskt kan behandla en CPU-tråd på samma sätt oavsett om det finns en eller två sådana per CPU-kärna. Men rent praktiskt så vill man hålla isär begreppen då det i (nästan) alla fall är betydligt mer effektivt att använda en logisk kärna som inte delar fysisk kärna med någon annan aktiv logisk kärna. I.e. Windows/Linux/OSX kommer i första hand sprida ut ditt program på CPU-trådar som tillhör olika fysiska kärnor och först när alla har en tråd aktiv kommer man använda den andra CPU-tråden.

Så har du en 4 kärnors CPU med HT så kommer HT överhuvudtaget inte att används så länge som du har färre än 4 OS-trådar aktivt körande samtidigt.

Fan det är ju bara att du spelar in en liten video på 2-3min och skickar till Linus
http://www.youtube.com/watch?v=lgKbwDIsg7Q

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk

Så man kan alltså säga att jag öppnar 2 internet samtidigt och då jag bara har 1 kärna med en 1 tråd så öppnar processorn 1 själv medans den andra instruktionen om att öppna den andra internet ligger i tråden? Har jag rätt?

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av Darkboot:

Så man kan alltså säga att jag öppnar 2 internet samtidigt och då jag bara har 1 kärna med en 1 tråd så öppnar processorn 1 själv medans den andra instruktionen om att öppna den andra internet ligger i tråden? Har jag rätt?

Nej.
Har du en kärna med en tråd så har du som sagt bara en tråd att utföra operationer på.
Har du en kärna med två trådar så kommer varje tråd arbeta med olika operationer.

Notis: Du kan inte öppna "internet" men du kan öppna en webbläsare.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem
Skrivet av DavidtheDoom:

Nej.
Har du en kärna med en tråd så har du som sagt bara en tråd att utföra operationer på.
Har du en kärna med två trådar så kommer varje tråd arbeta med olika operationer.

Notis: Du kan inte öppna "internet" men du kan öppna en webbläsare.

hehe, fick mig att tänka på http://www.youtube.com/watch?v=UTBsm0LzSP0
Fantastisk TV-serie förövrigt

Visa signatur

Outtröttlig, löpartokig besserwisser!

Bli vegan! För djuren, planeten, hälsan och våra barns skull!

Permalänk
Avstängd

Trådar är enklast att föreställa sig som filer på en motorväg.

Skickades från m.sweclockers.com

Visa signatur

Hur jävla svårt kan det vara att inte särskriva?!

Permalänk
Medlem
Skrivet av znorlaxvbg:

Funkar inte, står bara att det itne skapats en artikel om det ännu.

TS: Nu kan jag ha väääldigt fel men som jag uppfattat det så är det simpelt förklarat ungefär som följande.
En i7a har 4 fysiska kärnor.. men med hyperthreading som den har som alternativ kan den skapa 4 stycken logiska kärnor.. så kallade threads. D.v.s det blir som den har 8 kärnor att dela upp arbetet på men det 4 extra trådarna man aktiverar är inte fysiska utan de är virtuella. 4 fysiska som är default och 4 extra logiska med HT aktiverat vilket ökar arbetspotentialen för processorn då den kan dela upp jobbet mer och på så sätt klara mer.

Detta är vad jag har för mig att det innebär, kortfattat och inte så tydligt förklarat kanske. Kan dessutom ha fel men folk som KAN kommer svara inom kort

Ungefär så ja. men en sån logisk kärna är sämre än en riktig.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av deadich:

Ungefär så ja. men en sån logisk kärna är sämre än en riktig.

Läs det virtual Void har skrivit.

Det är ingen skillnad på trådarna. Men trådarna delar på de totala resurserna i kärnan.
Dvs. Skillnaden mellan en logisk kärna och en fysisk kärna är marginell. Det handlar mest om vilken kärna som tilldelas arbete först fram till alla "fysiska" kärnor är upptagna.

OS:et kan i sig inte se skillnad på logisk tråd 1a eller logisk tråd 1b i kärna 1. Men den vet om kärna 1 har arbete eller inte.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem
Skrivet av DavidtheDoom:

Läs det virtual Void har skrivit.

Det är ingen skillnad på trådarna. Men trådarna delar på de totala resurserna i kärnan.
Dvs. Skillnaden mellan en logisk kärna och en fysisk kärna är marginell. Det handlar mest om vilken kärna som tilldelas arbete först fram till alla "fysiska" kärnor är upptagna.

OS:et kan i sig inte se skillnad på logisk tråd 1a eller logisk tråd 1b i kärna 1. Men den vet om kärna 1 har arbete eller inte.

Det var ju precis det jag sa. Sämre än en riktig. Hur mycket sämre har väl mycket att göra med vad man gör? i vissa saker kan det vara en stor begränsning?

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av deadich:

Det var ju precis det jag sa. Sämre än en riktig. Hur mycket sämre har väl mycket att göra med vad man gör? i vissa saker kan det vara en stor begränsning?

Tror inte riktigt du lästa vad jag skrev.

Det är ingen skillnad på program exekvering på tråd a eller tråd b. Det är omöjligt att definera vilken tråd som är den "logiska" och den "fysiska".
Den är en riktig tråd.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem
Skrivet av DavidtheDoom:

Tror inte riktigt du lästa vad jag skrev.

Det är ingen skillnad på program exekvering på tråd a eller tråd b. Det är omöjligt att definera vilken tråd som är den "logiska" och den "fysiska".
Den är en riktig tråd.

Fast jag sa aldrig något om logisk och riktig tråd. jag sa logisk och riktig kärna.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av deadich:

Fast jag sa aldrig något om logisk och riktig tråd. jag sa logisk och riktig kärna.

I processorn så finns det inget som heter logisk kärna. Det finns en kärna och två trådar i denna kärna.
Kärnar har alltså två individuella register att nyttja och dessa delar på beräkningsenheterna i kärnan.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem
Skrivet av DavidtheDoom:

I processorn så finns det inget som heter logisk kärna. Det finns en kärna och två trådar i denna kärna.
Kärnar har alltså två individuella register att nyttja och dessa delar på beräkningsenheterna i kärnan.

Det stämmer ju men han jag citerade skrev logisk kärna. Det jag menade med det ursprungliga inlägget var att 8 trådar med 4 st kärnor är sämre än 8 st likadana kärnor med 8 trådar.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595