Seite 2 von 3

Verfasst: So 13. Aug 2006, 18:01
von imacer
Etwas gegoogelt habe ich schon, aber so richtig gute Erklärungen, die mehr sind als oberflächliche Textauszüge aus Werbeprospekten von Intel und AMD (überspitzt formuliert) fand' ich nicht.
Ich denke, die Begriffe "gleichzeitig" und "parallel" werden oft vorschnell angeführt.

Für uns träge Menschen mag uns ja vieles gleichzeitig erscheinen, ob es auch tatsächlich so ist, ist eine andere Frage und da hoffe ich ja auf die Sachkenntnis einiger "nubertianer".
Es sei denn, hier ist wer so konfirm, dass er das beantworten kann.
Schaun mer mal ;)

imacer

Verfasst: So 13. Aug 2006, 18:48
von Homernoid
Na ja. Auf Grund der Busbandbreite z.B. müssen logischerweise ja auch Daten warten.
Man versucht ja die Wartezeiten so gering wie möglich zu halten, in dem man bessere Cachestrukturen einsetzt und Daten in Vorhalt hat z.B. Aber wenn die Daten dann anders gelesen werden müssen, dann muss die CPU wieder darauf warten. Also, letztendlich wartet eben immer irgendwas.

Nur. Und das ist eben der Unterschied. Während die eine CPU noch immer auf Daten wartet, kann die and. CPU z.B. weitermachen mit Berechnungen. So gesehen hat man dann sowas wie eine Verbesserung, da letztendlich das Ergebnis zählt. Und mit irgendwas müssen ja Intel und AMD werben. :mrgreen:

Wenn Du auf das Philosophische hinauswillst in Richtung Physik. Da kann ich natürlich nicht mitreden. :D
Da bräuchten wir nen Physiker wie man ihn immer auf Bayern oder so sieht. ;)

Ich denke mal, selbst das Gehirn kann nicht alles parallel abarbeiten und muss ab und an auf Input warten. :D

Verfasst: So 13. Aug 2006, 18:50
von Sirarokh
Soweit ich weiß - aber achtung: viel ist das nicht und das Meiste ist nur mündlich überliefert worden - funktioniert ein Prozessor auf kleinster Ebene folgendermaßen:
An einem Teil der Eingangsschnittstellen (innerhalb des Core) liegt eine Spannung an (Input). Die "Arbeit" des Prozessors liegt darin, dass ausgehend von dieser Kombination von Spannungen an einem anderen Teil der Schnittstellen eine Spannung anliegt oder eben auch nicht (Output).
Diese Eingangs- und Ausgangskombination ist natürlich eine Repräsentation von einem Eingangswert (Binär) und -Befehl und einem Ausgangswert (Binär).

Ein Dualcore könne nun theoretisch zwei dieser "Befehle" gleichzeitig bearbeiten.

Aber es steht noch zur Debatte, ob diese Information auch wirklich richtig ist. Ich bin mir da nicht 100% sicher.

Verfasst: So 13. Aug 2006, 18:59
von JensII
Wie währe es mal direkt an der Quelle?

http://www.intel.com/multi-core/index.htm

Verfasst: Mi 16. Aug 2006, 08:51
von Mayday21
Das Prinzip ist recht einfach.
Große Aufgaben werden in mehrere Teilaufgaben zerlegt. Dies geschieht in der Regel durch das Betriebssystem.
Dieses ist für die Koordination der Tasks und deren Verteilung auf den Kernen zuständig.

Ist ein Teilprozess fertig, muß dieser unter Umständen auf einen anderen Teilprozeß warten und kann erst dann weiter machen. Beide Teilprozesse werden aber unabhängig von einander in jedem Kern seperat abgearbeitet.


Sieht dann vielleicht so aus:

Code: Alles auswählen

Aufgabe   ---v                                                         ^------------>
Proz1        |--------------..............|----------------------------|
Proz2        |----------------------------|--------------..............|

             ^1            ^2             ^3            ^4             ^5

1) Aufteilung auf 2 Kerne
2) erster Teilprozeß fertig, wartet auf den zweiten Teilprozeß
3) Synchronisieren, weiter arbeiten
4) zweiter Teiprozeß fertig
5) beide fertig, Ergebnis an Betriebssystem

Verfasst: Mi 16. Aug 2006, 09:48
von maks
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 :) )
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.

Verfasst: Mi 16. Aug 2006, 18:21
von imacer
Danke maks, das war mal eine hilfreiche, verständliche Antwort.
Jetzt fehlt nur noch die Ebene der Elektronen bzw die derer Bestandteile. 8)

imacer

Verfasst: Mi 16. Aug 2006, 18:23
von Homernoid
Komm imacer.
An was schreibst Du gerade? Hausarbeit? :lol:

Verfasst: Mi 16. Aug 2006, 20:29
von imacer
8O

ich bin doch keine 14...oder in einem anderen schulkompatiblen Alter :D
Nein, die Frage hatte keinen tieferen Sinn, bzw muss nicht erschöpfend beantwortet werden.
Es waren bloss Gedanken, aber dennoch nicht ganz uninteressant, wie eng man das Zeitfenster setzen müsste, um von echter Parallelität zu reden. Mikrosekunden, Nano...Pico...?
(3GHz=Taktabstand von 0,33 Nanosekunden. Wenn es nun also im Abstand von weniger als diesem Zeitraum erfolgen würde, wäre es nicht parallel, aber wohl auch kaum feststellbar?)

Gib's zu, du willst das auch wissen :)

imacer

Verfasst: Mi 16. Aug 2006, 21:34
von Homernoid
Ehrlich gesagt hat mich das noch nie sonderlich interessiert. Auch dann nicht, als ich mal an ner E10K mit 34 Proz. gesessen habe. :mrgreen:
Also. Was Du wissen möchtest, geht schon tief in die Physik rein. Richtung Atome und so. :D