Dual-core Athlon 64 ondersteunt mogelijk HyperThreading

Tijdens een studie van de architectuur van de dual-core Athlon 64-processor zag x86-secret dat de Athlon 64 X2 mogelijk HyperThreading ondersteunt. Als namelijk het CPUID-register wordt uitgelezen dan geeft dit register aan dat de processor HyperThreading ondersteunt. Volgens x86-secret heeft AMD deze bit ingeschakeld om ervoor te zorgen dat applicaties die geschreven zijn voor single-coreprocessors, maar wel ondersteuning hebben voor HyperThreading, kunnen profiteren van de tweede cpu. Dit wordt bevestigd in een presentatie die AMD vorig jaar openbaar maakte.

ProcessorRegisterWaarde
Athlon 64EDX0x078bfbff
EDX0b00000111100010111111101111111111
EBX0x00000800
Athlon 64 X2EDX0x178bfbff
EDX0b00010111100010111111101111111111
EBX0x00020800

Door Ralph Smeets

Nieuwsposter

18-04-2005 • 20:08

42

Submitter: XWB

Bron: x86-secret

Reacties (42)

42
42
27
14
4
8
Wijzig sortering
Jullie kunnen echt niet lezen. Hyperthreading is niets meer dan de mogelijkheid om twee series instructies naar de cpu te sturen ipv 1, of dat nu een virtuele cpu is of een echte, maakt echt niet uit..

Als dit onderwerp over VirtualCD's of zo zou gaan riepen jullie allemaal "ja, maar als er een echte CD in zit, dan snapt dat virtualcd programma het misschien niet meer...
Nou, van HT mag ik twee stromen sturen. AMD 'misbruikt' een bit. Dus de software denkt dat ze 2x2 stromen mogen sturen (voor twee logische eenheden)?

Klopt dit? En gaat dat wel goed?
Nee. Voor Windows (of elk ander OS) bestaat een HT-CPU uit 2 processoren, en naar elke processor kan hij onafhankelijk (en ook tegelijk) instructies sturen. Of dit nu fysiek 2 cores zijn of 1, maakt Windows niets uit. Sterker nog: Windows weet hier niets vanaf.

Windows ziet door de HT-bit dus gewoon 2 logische CPU's (dit geeft de hardware aan), en bij een P4 met HT is het dan fysiek maar 1 CPU met 1 core, en bij een AMD x2 is het fysiek 1 CPU met 2 cores, maar hier weet Windows niets vanaf.
Gelukkig weet Windows (XP) wel degelijk het verschil. Wanneer het OS beide virtuele processoren maximaal probeert aan te spreken (zoals Win 2000 of NT doet), dan zakt de prestatie per virtueel CPU fors in (want je hebt maar 1 echt CPU, dat zich dankzij HT misschien tot 1,2 CPU (optimistisch) weet op te rekken qua prestaties).

De doorsnee gebruiker draait nog altijd één ééndraads applicatie op de voorgrond en wil die zo snel mogelijk zien gaan en zal HT onder Windows 2000 daarom als een forse vertrager ervaren (uitzetten of XP nemen dus).

Het gaat hier denk ik veel meer om de marketing-modellen: diverse software (zoals XP Home) maakt wel gebruik maken van HT, maar niet van twee processoren; daarvoor moet de gebruiker een uitgebreidere (duurderdere) variant aanschaffen (zoals XP Pro). Een "gewone" XP pro op zijn beurt gaat tot twee CPUs. Een dual dual-core Opteron systeem zal dus niet optimaal ondersteund worden, maar door via deze HT-bit het OS te foppen wordt toch nog een beetje gebruik gemaakt van de tweede cores.

(Edit: kleine verduidelijking)
Anoniem: 134117 @[BoSS]19 april 2005 09:31
een dual dual core opteron systeem zal wel worden ondersteund, want het wordt gewoon gezien als 2 cpu's (wel met 2 core's elk, maar dat is niet belangrijk)...

Net als de Pentium XE 840 (dual core met elke core HTT) ook gewoon door XP wordt gezien als 2 cpu's.... anders zou Intel nu toch wel een probleem hebben....
Wel mooi : dan zouden deze CPU's dus ook meteen met XP Home moeten werken (die in principe geen twee CPU's support, maar wel HT)
Anoniem: 93545 @anvil19 april 2005 10:46
Dat is ook het hele idee van dit systeem: software die wel voor HTT is gemaakt maar niet voor dual-core / dual CPU toch van beide cores gebruik laten maken.

Het is trouwens al veel langer bekend dat AMD plannen in deze richting had, maar dit is het eerste bewijs dat het (blijkbaar) ook is ingevoerd nu.
de AMD topman zie zelf nog geen maand geleden dat hyperthreading een slechte besteding is van CPU resources. dus het lijkt me heel sterk als het echt hyperthreading is zoals bij de p4.
Het is dus ook niet 'echte' hyperthreading, dus dat je 4 procs in windows ziet terwijl je maar 1 dualcore erin hebt zitten. Het enige wat er gedaan is (als ik het zo lees) is een bit op 1 zetten zodat programma's die graag van hyperthreading gebruik maken, maar slechts 1 proc ondersteunen wel gebruik kunnen maken van de beide cores.

Het is dus 'hyperthreading' op twee echte cores ipv hyperthreading op 1 core.
Anoniem: 77640 @Countess18 april 2005 21:53
de AMD topman zie zelf nog geen maand geleden dat hyperthreading een slechte besteding is van CPU resources.
Van AMD ga je niet horen dat HyperThreading een succes is...

De werkelijkheid is dat applicaties die meerdradig zijn en het processorgebruik goed balanceren een grote prestatiewinst vertonen. Bovendien loopt alles zowiezo vlotter, wat altijd een gevoel van hogere snelheid geeft. Dus 5% extra transitors in de core is dan echt niet slecht besteed.
Van AMD ga je niet horen dat HyperThreading een succes is...
nee tuurlijk niet maar dat dragen ze aan als een van de redenen waarom AMD geen eigen hyperthreading contwikkeld voor hun eigen CPU's

en applicaties die meer dradig zijn lopen altijd langzamer op een single cpu/ non-hyperthreading systeem dus dat die applicaties sneller zijn met HT aan is niet echt verwonderlijk.

en dat alles vlotter loops is ook onzin. er zijn genoeg voorbeelden te vinden waar HT negative gevolgen heeft voor de prestaties. soms zelfs vrij zwaar.(ze resenten dualcore p4EE benchmarks)

komt er op neer dat HT is ontwikkeld om de over-verlengde pipeline van de p4 te voeden en vol te houden. een prop middel dus om een een probleem te verminderen die opdoken door het instand willen oude van de mhz-myth.
daarom heeft AMD HT niet nodig.
desondanks is het wel zo dat in vooral cpu zware programma's juist HT een extra win is. ik heb een tal van systemen thuis staan die prijstechnisch ongeveer gelijk zijn maar de PIV'tjes verslaan amd altijd. vooral toen HT net geintroduceerd werd was het een gigantisch verschil tussen amd/intel. ik heb nog athlon 2400's staan en PIV's 2.4ghz en het is soms een 3voud in render tijd per frame.
sure amd is in zekere velden sneller... maar ongeacht welke amd of intel je neemt als je een gelijke prijsklasse neemt is het echt afhankelijk van de taak welke processor nou daadwerkelijk beter is. en amd zal hoogst waarschijnlijk wel weer geschikt zijn om spelletjes te spelen daarin tegen intel zal hoogst waarschijnlijk weer geschikt zijn voor 3d bewerking en andere zware programma's. nu is alleen natuurlijk de vraag.. hoe gaat deze processor zich gedragen en wat gaat intel doen. aangezien het me wel logisch lijkt dat intel dit ook voorzag en hier toch wel een antwoord voor zal hebben.
Nee het is idd geen echte HT, het zorgt er alleen voor dat programma's die HT ondersteunen ook gebruik kunnen maken van de 2e core.
Is toch iets anders dan de techniek hypertrading.
De CPU zegt meer van ik ben dualcore dus ik kan programma's in hyperthreading doen.
Anoniem: 13443 @gp50019 april 2005 15:12
Hypertrading is wel wat voor intel ja ;)

Hyperthreading of multithreading zijn verschillend, maar wel verwant. Alleen als je niet opgeeft dat je meerdere threads tegelijk kunt verwerken zet je alles in de file voor 1 core. En da's niet handig.
ja het is totaal anders, maar het is wel heel logisch dat ze het doen voor met name dual en quad opterons die straks dual core zijn.

Het OS dient namelijk de zaak anders te schedulen, omdat er namelijk resources geshared worden (dezelfde memory controller voor beide cores op dezelfde cpu's).

Dus als er 2 programma's draaien op het systeem dan is het handig als er 1 core van de eerste cpu gebruikt worden en 1 core van de 2e cpu.

Windows Server2003 dus nodig of windows XP64 bits.

Overigens dit is allemaal nu nog theoretische bla bla, want die dual core opterons en dual core Xeons verwacht ik pas rond begin 2006 in de winkel (niet te verwarren met de release datum).
Gaat dit niet fout dan bij progs die HT leuk vinden en die dualcore snappen?
Nee, want feitelijk zin dat dezelfde processen: beiden verdelen hun takenset over meerere threads. Het zal voor het OS netter zijn als er goeie support voor het verschil tussen HT en MT in de software zit maar of het veel boeit...
Dus, als iets meerdere threads snapt, kan het op MT, op HT, en op MT/HT procs draaien. Voor het thread boeit het immers niet hoeveel parallele taken er worden uitgevreten in het systeem: op een 8-way dual-core opteron bak kun je Winamp draaien zonder dat je een 16-cpu versie moet downloaden. AutoCAD snapt het ook prima, en zal bijvoorbeeld 2 of 4 threads starten.
Het OS heeft dan de schone taak om die threads aan CPUs toe te wijzen en daar zit de humor: als het OS het verschl tussen MT en HT snapt, kan het proberen de lading zo goed mogelijk over de CPUs te smeren (eerst één thread per CPU als doel) dan over de cores (één thread per core als doel) en dan per virutal proc (één thread per HT-"processor" als doel)

In de praktijk wordt het ietsje complexer maar de essentie blijft toch redelijk het zelfde: spreiden, spreiden, sprijden.
Een programma wat hyperthreading ondersteunt is single-core geprogrameerd. Deze oplossing van amd is best mooi.. In plaats van 1 core en een 'nep-core' word core 2 aan de aplicatie gegeven. Het programma zal denken te maken te hebben met een hyperthreading cpu. In werkelijk word zijn hyperthreadprocess op de andere core gedraait. Handig!
Anoniem: 120859 18 april 2005 23:00
Exact, AMD ondersteunt het niet, AMD laat windows denken dat, het een ht cpu is.

Ik schrok al, AMD en hyperthreading zou niet goed samen gaan....
Hypert Threading is tog gewoon een techniek van intel dat het doet alsof het 2 cpu's zijn, dus windows zou nu 4 cpu's moeten zien?
Hypert Threading is tog gewoon een techniek van intel dat het doet alsof het 2 cpu's zijn, dus windows zou nu 4 cpu's moeten zien?
Je leest het verkeerd.
AMD heeft gewoon iets ingebouwd zodat software dat HT ondersteund "denkt" dat er een cpu met HT aanwezig is, maar in de plaats daarvan wordt de 2de core gebruikt.
raakt de kernel daar dan niet van in de war bij de verdeling. Hij denkt dat een app op de ene core draait maar stiekem draait het op 2 cores
Dat dus juist niet. Daarom hebben ze deze HT ondersteuning ingebakken, zodat de kernel juist weet dat hij in de tweede core draait.
Ten eerste, de kernel "denkt" niet, hij "ziet" alleen wat jij hem verteld dat ie moet zien. :) Ten tweede, door HT lijkt het alsof er al twee cores zijn, terwijl er maar één is. Dus als je jouw voorbeeld gebruikt dan zou de kernel bij HT zich gedragen alsof er twee cores zijn, terwijl er maar één is, en bij dual core CPU's zijn het er ook echt twee.

Maar voor de kernel maakt het 0,0 verschil. In beide gevallen zal ie de CPU zien en gebruiken als twee CPU's.
als het OS dus NUMA aware is, zoals bijvoorbeeld windows server 2003.

je normale windows XP gaat het niet trekken hoor.

windows is ueberhaupt knullig bij > 1 cpu als het aankomt op multiprocessing. Ze spelen namelijk alles via de swap file.
nee, windows zal 2 CPU's zien,
AMD 'emuleert' HT door middel van 2 echte processoren in plaats van 2 logische.

maakt dat programma's die geoptimaliseerd zijn voor HT, waarschijnlijk nog sneller lopen op deze core.
Anoniem: 29036 18 april 2005 20:21
wel raar dat amd hier zelf niet mee komt .. is toch wel een belangerijke functie lijkt mij... zo heb je veel meer ondersteuning voor programma's !!

Niet alleen proggies die Dual core ondersteunen maar dan ook de HT proggies :)
uhhh.... HT = een fake cpu na bootsen, ik weet niet maar er is helemaal niks anders tussen dual-core en ht op het gebied van programmeren, en AMD doet dit zo als vaker aangegeven, zelfs in dit artikel dat AMD dit alleen puur doet om programma's die alleen kijken naar HT om dus toch de threads op te splitsen.
zoveel HT progjes zullen er wel niet zijn denk ik :)
okey, nog eventjes sparen en ik kan als nog overstappen van
Photoshop 7 naar de nieuwste versie, die gewoon zoveel HT draaide dat ik er gewoon van moest huilen op mijn Athlon xp 2600+ .....

AMD >= my hapy feelings :*)

Op dit item kan niet meer gereageerd worden.