Citat:
Ursprungligen inskrivet av klk
Fakta på det? det beror ju helt på vilken typ av arbete tråden utför.
En thread-context switch (d.v.s. att byta från en tråd till en annan) är en relativt dyr operation uppmätt i "runt tusen eller tusentals" cykler. Läs t.ex. från: http://www.cs.rochester.edu/u/cli/research/switch.pdf (3,8 mikrosekunder är ungefär 2000 cykler).
Detta är jämförbart och i samma storleksordning som att helt populera L1 cachen.
Vanligtvis sker inte thread-context switchar väldigt ofta (högst några tusen gånger per sekund med dagens processorer, och även då är det oftast ett tecken på att någonting onormalt sker alternativt att man har någon kraftig form av I/O).
Den aktiva tiden som spenderas av en tråd som faktiskt "räknar" är i varje thread-context switch i "miljontals cykler" vilket skulle gömma L1 cachens betydelse vid multitrådningen i sig ( http://www.cs.huji.ac.il/~feit/exp/expcs07/papers/161.pdf ).
Citat:
Ursprungligen inskrivet av klk
Och när det gäller spelande som vi diskuterar här så är vad jag vet de flesta prestsandakrävande spel designade för att kunna köras på en tvåkärning utan L3 cache.
Ummmm.... heh... väldigt få program, även spel, är designade med tankarna om att man har tillgång till vissa lager av cachar av vissa storlekar eller att man har tillgång till vissa speciella egenskaper hos processorn (kan med enkelhet ses genom att spel eller program sällan har separata "kod-stigar" för att t.ex. köras på en i7 eller på en Phenom II).
Jag tror att du stirrar dig alltför blint på namnen L1, L2 och L3. Nej, Core 2-orna har ingen L3 cache. Men i praktisk mening så har den ändå "ett par megabyte" minne som kan avläsas med låg latency (runt 50 cykler eller lägre). Processorn matas fortfarande av med data och instruktioner i en tillräckligt snabb takt.
Citat:
Ursprungligen inskrivet av klk
När det gäller renderingstråden så tror jag de flesta försöker låsa den vid en kärna (så den inte flyttar).
Om de ökar till att sätta minimigränsen till tre kärnor så tappar man en hel del kunder.
Det finns för och nackdelar med att låsa trådar till en viss kärna. Oftast är det inget man behöver göra manuellt då operativsystemets schemaläggare själv försöker att göra det (en viss kostnad att flytta en tråd till en annan kärna, då L2 cachen på i7/Phenom II då innehåller "fel" data och måste ompopuleras).
Citat:
Ursprungligen inskrivet av klk
De har olika typer av fokus. i7 är designad efter prestanda. Phenom har en design som går mer på strömsnålhet samt kunna hantera flexibla hårdvarulösningar och återanvändning av processorn. i7 är mer som en enhet då varje del är mer knuten till andra delar. det är fördel där för att få upp hastigheten men du kommer inte se en i7 X3 där man kopplat av en bit.
Hur strömsnåla de är är inte riktigt relevant. Och att det inte säljs i7 X3... tja... det är egentligen inget som hindrar dem från att göra det. Steger för AMD att få HT är enormt mycket större än steget för Intel att påbörja försäljningen av i7 X3 (vilket med största sannolikhet aldrig kommer att hända då behovet inte finns).
Citat:
Ursprungligen inskrivet av klk
Som du påpekade så cachen inclusive och det innebär att de lagrar minne i alla cachar. Phenom har ju faktiskt mer total cache jämfört med i7 även om den bara har 6 MB L3 cache.
Vet du föresten varför Phenoms har "fler vägars" cachar? Jo, för att just inte flaska vid cache-snooping.
Phenom II kanske har en liten del mer cache totalt än vad i7-orna har men det har nästan ingen betydelse alls för prestandan (förutom om man skapar syntetiska tester som just pressar den exakt rätta mängden; för mycket och båda läcker ändå ut till RAM-minnet och det är snarare pre-fetcherna som tävlar emot varandra, för lite och båda duger finfint). Och man får inte glömma att en tråd kan använda hela 8 MB "totalt cache" på en i7 medan den endast får 6,5-ish på en Phenom II. Vad har det för egentlig betydelse? Tja... nästan ingen alls.
I grund och botten är designen av cacharna och processorn i övrigt långt viktigare än att jämföra mängden cache mellan båda arkitekturerna. Benchmarks visar på att Core i7-orna presterar i de allra flesta fallen bättre för CPU-tunga loads än vad Phenom II-orna gör och det är inget konstigt med det.
Dock så skulle det vara intressant att verkligen få redan på den riktiga orsaken varför de presterar aningen sämre än Phenom II-orna i spel på mycket hög grafik (när de presterar mycket bättre på låg). Cache? Nej, det är inte riktigt rimligt. Om inte någon kan få fram lite tyngre argument för det.
Citat:
Ursprungligen inskrivet av klk
Nej och jag har heller inte diskuterat den typen av arbete utan det jag nämnt är spel. Det är mycket lätt och optimera serverprogramvara och det är inte för inte att den typen av programvara ofta är trådad med för det är lätt och tråda upp dessa program. Mycket mer komplicerat att tråda upp ett program som gör ett flertal olika arbeten för att komma fram till ett slutresultat (en ny spelbild för spelt att renderas av grafikkkort).
Um... huh?
Jag nämnde endast server-loads eftersom det är sådana som oftast pressar multitrådningsegenskaperna av en processor till maximum. Det var mer eller mindre svar på tal till:
Citat:
Ursprungligen inskrivet av klk
i7 är väldigt snabb när saker går lite mer på räls. det är det den är byggd för och programmerare försöker och optimera så också. men när det blir komplicerade situationer vilket innebär att processorn jobbar med minne från flera olika ställen, hoppar hit och dit samt trådar kommunicerar hårt med varandra, då är phenom bättre.
Benchmarks (på server och vanligen multitrådningsloads generellt sett) visar på motsatsen där. i7 är inte byggd för att utföra "seriella" operationer snabbt; det var Netburst som var det. i7 är designad för att ta tillbaka servermarknaden från AMD där just multitrådning är en viktig del. Core 2 var oerhört populära bland "gamers" men inte alltför dugliga på servrar (blev ännu värre när virtualisering blev populärt).