Ein Doppelkernprozesser (egal ob Intel Core Duo, Core 2 Duo, Athlon X2 oder ähnliche) haben 2 physikalische Rechenkerne die (fast) völlig unabhängig voneinander Arbeiten. Das Konzept ist eigentlich (fast) gleich wie bei einem Board mit 2 Prozesserfassungen. Einige kleine Unterschiede gibts aber doch. So teilen sich manche den L2 Cache (zB Core 2) und auch die Verbindung zum Hauptspeicher teilen sich manche.
Trotzdem können die beiden Kerne unabhängig voneinander und gleichzeitig Befehle verarbeiten. Das passiert nicht nach "einer die ungerade der andere die geraden Codezeilen" denn das ginge nicht, da immer erst das Ergebnis der vorhereigen Zeile abgeabreitet sein muss bevor mit der nächsten fortgefahren werden kann.
Die erwähnten Threads sind eigentlich genau solche linearen Programmabläufe. Ein Thread kann zB das ganz Programm sein etwas MS Word oder es kein ein Programm auch schlau in mehrere Threads aufgeteilt sein die voneinander weitgehend unabhängige Sachen machen zB die KI, die Physik und die Spiellogik in einem Spiel. Natürlich gibts aber auch hier immer wieder stellen an denen die Threads sich syncronisieren müssen und Informationen austauschen um richtig zu laufen.
Trotzdem verlaufen auch auf der kleinsten Ebene alles wirklich parallel. Das gleiche Konzept hat jeder in seinem Rechner schon - zB. läuft die CPU und der Grafikchip auch parallel und unabhängig voneinander.
Der einzige Flaschenhals sind die Verbindungen nach aussen. Hier ist entscheidend wir schnell der FSB (Front Side Bus - Verbindung der CPU zum Chipsatz, also vor allem Speicher) oder bei AMDs ab Athlon 64 die ihren eigenen Speicherkontroller haben der Hypertransport läuft. Wenn man so will, kommt dort alles zusammen. Irgendwann muss ja auch alles per PCIe oder AGP an den Grafikprozessor gesendet werden um das Ergebniss darzustellen.
Aber nachdem diese Verbindungen ausreichend schnell sind, sollte solche Überlegungen keine Rolle spielen. Die verarbeitung läuft absolut parallel.
Übrigens sollte man das ganze nicht mit Hyperthreading verwechseln. Ich glaub Homer hat das schon angesprochen (fälschlicherweise als Multithreading wenn mich nicht alles täusch? Naja, lesen bildet
![Smile :)](./images/smilies/nuforum/icon_smile.gif)
)
Dabei werden nur die ohnehin auf jedem Prozesser vorhandenen und unabhängig voneinenander rechnenden Funktionseinheiten besser ausgelastet, in dem die CPU selber die Einzelschritte etwas besser darauf verteilen kann. Dadurch steigt (manchmal) die Auslastung der einzelnen Recheneinheiten der CPU was sie etwas schneller macht. Wirklich parallel laufen da nur einzelne kleine Aufgaben und nicht ganze Programme.