zum ersten teil:
höchstwahrscheinlich genauso wie bei multicore-CPUs
das problem ist eigentlich folgendes:
eine CPU macht ja nix anderes, als rechnen... also mathematische probleme lösen...
genauso, wie man es in der grundschule machen würde...
nehmen wir mal folgendes szenario:
man hat 1 grundschüler und 1 sehr leichte aufgabe... simple addition z.b....
dann würde es eine gewisse zeit dauern, bis der schüler die aufgabe gelöst hat...
sagen wir mal, es dauert die zeit X
jetz sollen aber 100 simple gleichungen gelöst werden...
was kann man tun, um die dauer möglichst kurz zu halten?
naja logisch überlegt, gibt es erstmal 2 offensichtliche lösungen:
1.: man nimmt nen schlaueren schüler... bspw einen aus ner höheren schule/klasse oder so... das soll jetz mal das pendant sein zu einer schnelleren CPU bei rechnern...
der schlaue schüler brauch weniger zeit pro aufgabe und wird mit den 100 aufgaben deswegen schneller fertig sein, als der grundschüler...
leuchtet ein, denke ich...
aber man kanns auch ander machen:
2.: man setzt einfach N grundschüler vor die aufgaben!
jeder davon rechnet 100/N aufgaben...
also wird das ergebnis in der zeit (100/N)*X fertig sein...
mit recht hoher wahrscheinlichkeit also um welten schneller, als der gymnasiast...
das soll jetz einfach das pendant zu den multicore-CPUs sein...
jetz könnte man natürlich auf die idee kommen "ach wozu die kinder trainieren und besser ausbilden!? wir nehmen einfach mehr kinder! die leisten dasselbe in kürzerer zeit!"
das ist unter günstigen bedingungen auch völlig richtig...
aber jetz stelle man sich eine rechnung von, die rekursiv ist...
also eine rechnung, die sich selbst wieder aufruft und mit dem ergebnis des vorigen aufrufs weiterrechnet...
sowas ist bei software extrem verbreitet, soll hier aber nur als beispiel dienen
jedenfalls kann man jetz nichtmehr 100 grundschüler dransetzen!
egal wie simpel die rechnung ansich ist...
beschäftigt wäre immer nur EIN einziges kind... dieses kind rechnet halt den aktuellen durchlauf... aber man kann nicht GLEICHZEITIG ein anderes kind 10 durchläufe später berechnen lassen, weil die ergebnisse der vorigen aufgaben startwerte für nachfolgende rechnungen sind...
das endergebnis ist also folgendes:
von den 100 grundschülern rechnet nur ein einziger zur gleichen zeit an der aufgabe...
der gymnasiast kann schneller rechnen und ist somit eher fertig, also die 100 grundschüler...
obwohl deren potentielle rechenleistung ja wie oben präsentiert IM PRINZIP ein vielfaches der des gymnasiasten ist...
und genau das ist auch das problem der multicore-CPUs:
da man die teile auch noch kühlen muss und die dinger natürlich enorme abwärme auf geringstem raum produzieren, kann man sie kaum so hoch takten wie klassische singlecore-CPUs... zumindest ned, ohne den kühlaufwand zu vervielfachen
also die einzelnen kerne sind in der regel langsamer...
aber es sind halt mehrere... verdammt schnell wäre die multicore-CPU immer genau dann, wenn die aufgabe in teilprobleme zerlegt wäre, die man gleichzeitig lösen kann...
aber bei heutiger software siehts so aus: es ist eher eine ewige rechnung, die immer auf den ergebnissen voriger rechnungen aufbaut...
ganz genau genommen sind es zwar mehrere endlose rekursive rechnungen, aber wenn der programmierer diese nicht explizit in mehrere sogenannte 'threads' zerlegt, ist es für den prozessor lediglich eine einzige rechnung...
also der prozessor kann die rechnung nicht selbstständig sinnvoll zerlegen
ein mensch schon...
der mensch würde bei nem strategiespiel z.b. sagen
-der eine thread kümmert sich nur um ein-und ausgaben des spielers bzw die benutzeroberfläche
-ein anderer thread berechnet ausschließlich die KI und die wegfindung der einheiten
-wieder ein anderer kümmert sich um die darstellung, ansteuerung der grafikschnittstelle des betriebssystems
und so weiter...
aber SO ISSES LEIDER HEUTE NOCH NED...
1 programm = normalerweise 1 thread ---> nur 1 prozessorkern kann dieses programm bearbeiten...
sollte das jetz imemrnoch unverständlich sein, dann bitte mal sagen, welcher teil genau
@ chekker: ich find dich faszinierend...
ich verweise da mal auf dieses topic:
http://www.united-forum.de/showthread.php?t=35349
ach und nochwas:
http://www.united-forum.de/showthread.php?t=43777
magst du nicht dem UF-user erklären, was bei dir so furchtbar schief gelaufen ist?