Lord_Skul zei:
Ik zie dat alles dit moment Dual core de klok draait
Ik ben eigelijk eerlijk gezegd niet mee met die technologie
Klassiek bestaan processoren uit slechts 1 verwerkingseenheid. Een dual-core processor heeft er echter 2 aan boord.
In workstations (en lichte servers) vindt je al lang 2 processoren (en meer) terug (we noemen dit multi-processor ofte "SMP"-systemen). De belangrijkste reden om dat te doen is dat het werk voor 1 programma verdeeld kan worden over meerdere verwerkingseenheden. Moederborden waar je meerdere processoren op kan prikken worden echter snel erg complex en dus duur. Een multi-core systeem verhelpt dat omdat de complexiteit in 1 enkele chip vervat zit en niet op het moederbord. Chips zijn echter véél kleiner en daarom goedkoper dan de complexe moederborden.
Lord_Skul zei:
Ze zullen waarschijnlijk niet dubbel zo snel fungeren, maar ik schat dat ze 2 bewerkingen tergelijker tijd kunnen doen
Programma's bestaan uit massa's instructies die uitgevoerd moeten worden. De instructies van een programma worden in kleinere groepen onderverdeeld die we threads noemen. Een thread is het kleinste stuk van een programma dat onafhankelijk van een ander uitgevoerd kan worden. Binnen de thread moeten de instructies allen in een vaste volgorde uitgevoerd worden. Daardoor kan een thread niet opgedeeld worden en in parallel verwerkt worden. Een thread wordt daarom door slechts 1 enkele core tegelijk verwerkt.
Lord_Skul zei:
Ze zullen waarschijnlijk niet dubbel zo snel fungeren, maar ik schat dat ze 2 bewerkingen tergelijker tijd kunnen doen
Dat is een verkeerde opvatting die velen hebben. Omdat niet alle instructies even snel kunnen worden afgehandeld, zullen processoren bepaalde instructies van een thread reeds uitvoeren terwijl vorige instructies nog niet zijn afgehandeld. Het resultaat van de op voorhand uitgevoerde instructie kan dan meteen gebruikt worden wanneer de vorige instructie(s) afgelopen is/zijn. We noemen zo'n processors "superscalar".
Let op: de vorige paragraaf is een zéér sterke vereenvoudiging van de werking van een processor. In werkelijkheid is het héél wat complexer.
De eenvoudigste manier voor processorfabrikanten om de performance te verhogen is het parallelisme verhogen. Daartoe doen ze er alles aan om zo veel mogelijke threads tegelijk te verwerken op een processor. De eenvoudigste (en beste) manier om dat te bereiken is het toevoegen van extra cores. Iedere core kan dan aan een verschillende thread werken.
Intel heeft ten tijde van de Pentium4 een technologie ontwikkeld waardoor meerdere threads tegelijk door 1 core uitgevoerd kunnen worden (=HyperThreading). Die benadering heeft echter als nadeel dat cores geen 2 dezelfde instructies tegelijk kunnen uitvoeren (en dat gebeurt nu eenmaal heel vaak waardoor HyperThreading vaak niet doeltreffend bleek).
Lord_Skul zei:
Maar verder langs de technische kant, bv. AMD 3800+ X2 64bit Dual-core Processor Boxed AM2
Dat zijn dan 2 1900 processors maar hoeveel gaat dat schillen in capaciteit ?
Die opvatting van 2 x 1900+ = 3800+ klopt uiteraard niet (maar dat zal je hier ondertussen wel begrepen hebben). De performance die je met een extra core zal winnen zal sterk afhangen van de gebruikte toepassing. Zoals je uit de voorgaande uitleg misschien begrepen zult hebben, kan een 2de core pas nuttig werk verrichten wanneer je meerdere threads tegelijkertijd wil uitvoeren. Hoewel de meeste applicaties tegenwoordig multi-threaded zijn, zal je er toch niet zo'n denderende winsten mee boeken. Ongeveer 90% van de instructies van zo'n toepassingen zijn namelijk vervat in 1 thread terwijl enkel kleinere bijkomstigheden in aparte threads zijn ondergebracht.
Het schrijven van (goede) multi-threaded toepassingen is echter erg moeilijk. Dit is nog het gemakkelijkst in server-toepassingen. Dat zijn toepassingen die tegelijk door meerdere users gebruikt worden (zoals een web-server). Voor iedere user die de toepassing tegelijk gebruikt, wordt een aparte thread gemaakt. Omdat iedere user dezelfde taken kan uitvoeren als elke andere zijn alle threads ongeveer even zwaar. In die gevallen heb je dus de meeste winst van een extra core.
migelle zei:
ik dacht dat die processor da automatisch deed, allé het werk verdele tss de 2 cores
Klopt niet: het is het OS dat die verdeling uitvoert. Wat Exit bedoelt heet "processor affinity". Een degelijk OS (=Win2k/XP, Linux, ...) doet daar doorgaans zelf een goede keuze in. Soms kan je liever een bepaalde applicatie op een eigen core laten draaien. Dat kan je dan manueel bepalen als je wil.