Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraag


  • zonderbloem
  • Registratie: September 2015
  • Laatst online: 27-11 21:56
Hi Iedereen, voor mijn HBO opleiding ben ik bezig om te kijken hoe exact een CPU in elkaar zit. Ik ben eigenlijk op zoek naar wat exact het verschil is tussen Hypterthreading en meerdere cores. Bij Hyperthreading kan een core meerdere instructies(threads) tegelijk verwerken, maar met meerdere cores kan dit ook (Parrelisme). Op het internet heb ik gezocht en kwam ik tegen dat Hyperthreading te maken heeft met de manier hoe een core het "scheduling" gedeelte doet.

Stel dat ik de volgende som heb, 5x4x3x2 dan gebeurt het volgende met meerdere cores:
Core 1 verwerkt: 5x4 = 20
Core 2 verwerkt: 3x2 = 6
En uiteindelijk 20 x 6 = 120 om het resultaat te berekenen
Stel dat ik de som als instructie aangeef bij een core met HyperThreading voert dan 1 core tegelijkertijd de som uit 5x4 & 3x2?

Verder kom ik de volgende termen tegen kunnen jullie eens jullie mening geven of ik ze juist heb beschreven?
Een thread is een instructie
Een core verwerkt threads
Parrelisme verdeeld de threads over verschillende cores
(Micro)Architecture is de wijze hoe een processor ingedeeld is
Er zijn allemaal verschillende Architecture CPU's maar hebben ze allemaal dezelfde instruction set
Een instuction set kan een X86 of een X86-64 zijn

Alle reacties


  • Hero of Time
  • Registratie: Oktober 2004
  • Nu online

Hero of Time

Moderator LNX

There is only one Legend

Je kan die vergelijking niet zo simpel maken. Wat als je nou een ingewikkeldere som hebt, zoals 8x2-(4x3+5)? En je hebt ook nog met geheugenallocatie te maken. Elke core is met een eigen stuk geheugen bezig om te verwerken. Wat core 0 doet, kan/mag core 1 in principe niet bij. Echter kunnen thread 1 en thread 2 van core 0 wel hetzelfde stuk geheugen benaderen en zo samen het werk verrichten. Meer threads per core kan echter nadelig zijn, bijvoorbeeld omdat al het geheugen waar de instructies in staan al wordt behandeld en dan heb je een thread die niets doet/kan doen.

Om het echt goed te begrijpen zal je in de technische documentatie moeten duiken. Uitzoeken hoe een CPU taken verwerkt (zonder hyperthreading of meerdere cores) en dan hoe het toevoegen van meer cores dat verandert gevolgd door hoe het weer verandert als er hyperthreading is. Wat is het verschil tussen twee cores en twee threads bij 1 core? Hoe verhoud zich dat met verwerkingssnelheid, efficiëntie en geheugenallocatie, alsmede hoe het kwa beveiliging zit voor het benaderen of verwerken van geheugen. Al kom je bij dat laatste meer uit in de richting van de geheugencontroller en die zat vroeger niet in de CPU.

Commandline FTW | Tweakt met mate


  • Hoicks
  • Registratie: Maart 2001
  • Laatst online: 30-11 21:44

Hoicks

Techno!

Ik heb meerdere cursussen gehad waarbij Hyperthreading werd uitgelegd als invoegen op de snelweg. Je hebt een aantal rijbanen (cores) en invoegstroken (HT). Hyperthreading zorgt ervoor dat er zo efficiënt mogelijk wordt ingevoegd met de invoegstroken zodat de CPU niet doelloos staat te wachten op nieuwe instructies.

Omdat applicaties die invoegstrook als een logische rijbaan moeten zien wordt HT als extra cores in je OS weergegeven (logische cpu)

2 rijbanen en 2 invoegstroken wordt dan als 4 cpu's in je taakbeheer weergegeven.

Nikon D7200 & D5000 / SB-700, 2x Yongnuo YN-560 III / Sigma EX 10-20 f4-f5.6 HSM, Sigma EX 17-50mm f2.8 OS HSM, EX 70-200mm f2.8 HSM II Macro / EX 105 f2.8 HSM OS Macro / Nikon AF-S DX 35mm f1.8 / Sigma EX DC 30mm f1.4 HSM


  • dion_b
  • Registratie: September 2000
  • Laatst online: 12:36

dion_b

Moderator Harde Waren

say Baah

zonderbloem schreef op dinsdag 30 mei 2017 @ 21:13:
Hi Iedereen, voor mijn HBO opleiding ben ik bezig om te kijken hoe exact een CPU in elkaar zit. Ik ben eigenlijk op zoek naar wat exact het verschil is tussen Hypterthreading en meerdere cores. Bij Hyperthreading kan een core meerdere instructies(threads) tegelijk verwerken, maar met meerdere cores kan dit ook (Parrelisme). Op het internet heb ik gezocht en kwam ik tegen dat Hyperthreading te maken heeft met de manier hoe een core het "scheduling" gedeelte doet.
Alle enigszins moderne cores zijn 'superscalar', en kunnen dus meerdere instructies per kloktik uitvoeren. Zonder hyperthreading zit daar wel een beperking in: meerdere instructies kunnen tegelijk in de pijplijn geduwd worden, maar als ze niet tegelijk klaar zijn moet het systeem toch wachten tot de laatste klaar is voor er weer twee nieuwe in kunnen. Als dat vaak gebeurt kan een van de execution units een flink deel van de tijd leeg staan.

Met symmetric multi-threading (waar "Hyperthreading" een prorpietary implementatie van is van Intel) kunnen de execution units onafhankelijk van elkaar gevoed worden, waardoor je in theorie veel efficienter gebruik kan maken van de CPU. Beperking is dat de tweede instructie niet afhankelijk mag zijn van de output van de eerste. Is dat wel zo, dan moet alles alsnog wachten.

In praktijk hangt het voordeel sterk af van het type workload. Als er veel vergelijkbare maar onafhankelijke bewerkingen uitgevoerd moeten worden kan de winst oplopen tot bijna 100%, oftewel evenveel als wanneer je een extra core toevoegde. Dat zie je vooral bij bepaalde webservertaken terugkomen. Omgekeerd kan de winst nagenoeg 0% zijn of zelfs licht negatief zijn (ivm iets hogere overhead). Dat zie je bij berekeningen met sterke afhankelijkheden, zoals je bij gaming ziet.

Kijk maar eens naar CPU benchmarks. Core i7 CPU's met 4 cores en 8 threads presteren clock-for-clock nauwelijks beter dan Core i5 CPU's met 4 cores en 4 threads in gamingbenchmarks. In webserverbenchmarks is het een verschil als dag en nacht en zie je de Core i3's (met 2 cores en 4 threads) behoorlijk dicht in de buurt van de Core i5's komen.

Oslik blyat! Oslik!