Warum Multicore statt Singlecore?

Guten Morgen,

mich beschäftigt da eine allgemeine Frage zum Thema Prozessoren.
Die Prozessorenhersteller bauen ja ständig mehr Kerne in einen Prozessor. Warum macht man das so und entwickelt nicht einach einen grossen Singlecore Prozessor?

Gruss und Dank Maldweister

Moin,

Die Prozessorenhersteller bauen ja ständig mehr Kerne in einen
Prozessor. Warum macht man das so und entwickelt nicht einach
einen grossen Singlecore Prozessor?

Das ist ein wenig wie bei der Post. Die könnte auch einen riesenriesengroßen LKW kaufen und damit die Post in ganz D verteilen. Es ist aber offensichtlich effizienter, die Post mit vielen kleinen LKW zu verteilen.

Ein großer LKW ist -genau!- größer. Nicht schneller. Wenn ich Unmengen Briefe habe, die alle an die selbe Adresse sollen, ist ein großer LKW besser. Leider ist das aber nicht die Regel. Aber selbst ab einer gewissen Größe gibt es auch da Probleme: Um die Achlasten zu tragen, muss das Fahrgestell überproportional groß werden, am Ende braucht man mehr Sprit, um den LKW selbst zu bewegen, als für die Ladung, die eigentlich transportiert werden soll. Bei der CPU heißt das: Mehr Verluststrom, mehr Abwärme (die nicht gut da raus kann).

Ein LKW braucht immer die gleiche Zeit, um ein Brief von A nach B zu bringen, egal, wie groß er ist. So ist das auch bei der CPU. Entsprechend länger dauert die Tour, wenn ein Teil nach B und ein weiterer Teil dann nach C gebracht werden soll. Habe ich zwei LKW, kann ich einen von A nach B schicken und währenddessen den zweiten von A nach C. In der Summe sind so die Briefe schneller am Ziel. Und so ist das auch mit den Multicore-CPUs.

VG
Jochen

Hallo Maldweister

Die Prozessorenhersteller bauen ja ständig mehr Kerne in einen
Prozessor. Warum macht man das so und entwickelt nicht einach
einen grossen Singlecore Prozessor?

Imho besteht der Hauptgrund darin, daß die Fehler-
rate bei der Herstellung zu groß wird, wenn die
lineare Dimension der Chips bzw. die Anzahl der
immer kleiner werdenden Elemente zu groß wird.
Ausserdem steigt die Komplexität der Verschaltungen
mindestens quadratisch mit der Anzahl der
Funktionselemente.

Die Natur ist übrigens vor Jahrmilliarden zum selben
Schluß bei der „Strukturgröße“ von Funktions- und
Strukturproteinen gekommen. Proteinmoleküle, die
eine bestimmte Größe überschreiten, können von
den zellulären Bausystemen nicht mehr „wirtschaftlich“
genug hergestellt werden. Die Folge: große Protein-
strukturen werden *immer* aus mehreren kleinen
zusammengesetzt, die einzeln gefertigt und
geprüft werden. (http://www.youtube.com/watch?v=uAmRen-HBWg)

Grüße

CMБ

Danke für die schöne Erklärung, soweit habe ich es glaube verstanden. Was für Programme wären das, die ihre „Post“ parallel an verschiedene „Adressen“ versenden müssen. Soweit ich weiß ist das z.B. bei Spielen ja eher ein Problem, die Rechenlast gleichmäßig auf versch. Kerne aufzuteilen, oder?

Bei sechs Rechenkernen schon noch, aber Quadcore-CPUs werden mittlerweile oft unterstützt.
http://www.pcgameshardware.de/aid,747900/PCGH-Specia…

Und alle halbwegs vernünftigen Programme können auf wenigstens zwei Rechenkerne skalieren.

Hallo,

Die Prozessorenhersteller bauen ja ständig mehr Kerne in einen
Prozessor. Warum macht man das so und entwickelt nicht einach
einen grossen Singlecore Prozessor?

Das Stichwort heißt Paralellisierung und ist insgesamt nicht neu.
http://de.wikipedia.org/wiki/Parallelrechner
http://de.wikipedia.org/wiki/Parallele_Programmierung

Das bedeutet, dass nicht die gesamte Aufgabe seriell (also immer
schon nacheinander in Reihe) ausgeführt wird, sondern Aufgaben
in Teile zerlegt werden und dann gleichzeitig von vielen
parallelen Verarbeitungeinheiten abgearbeitet werden.

Da heutige Betriebssysteme Multitasking und Multiuser unterstützen,
und gleichzeitig eine Vielzahl von Prozessen quasi gleichzeitig
bedienen müssen, ist es doch logisch, diese unter mehreren
Einheiten zu verteilen, um höhere Gesamtleistung zu erreichen.

Eigentlich ist das ein alter Hut, weil auch in SingleCore-CPU
schon lange diverse parallele Prozesse ausgeführt werden.

Aber ein ganz klassisches Beispiel für hoch parallelisierte
Hardware sind Grafikkarten.
Schau die mal die Daten von solchen Teilen an.
Da gibt es hunderte gleichartige Recheneinheiten.
http://www.computerbase.de/artikel/grafikkarten/2009…

Warum nun nach über 30 Jahren SingelCore-Hauptprozessoren
jetzt die Zeit der MultiCore-CPUs angebrochen ist, hat
verschiedene Ursachen und Gründe:

  • Nur durch Erhöhung der Taktgeschwindigkeit ist nicht mehr
    viel Leitungssteigerung zu machen, weil man den den jetzt
    erreichten Werten technologisch langsam an Grenzen stößt.

  • Die Erhöhung der Datenbreite, von ganz anfänglich 4 Bit
    auf 8 und 16 Bit und zuletzt auf 32 und 65Bit macht im normalen
    PC auch keinen Sinn mehr. Auch diese Maßnahme ist ja eigentlich
    eine Parallelisierung.

  • Man kann mit den modernen Technologien so viele Transistoren
    integrieren, dass man diese riesige Zahl gar nicht mehr in
    einer einzigen CPU benötigt.

Gruß Uwi

  • Nur durch Erhöhung der Taktgeschwindigkeit ist nicht mehr
    viel Leitungssteigerung zu machen, weil man den den jetzt
    erreichten Werten technologisch langsam an Grenzen stößt.

der Hauptgrund dabei ist, dass man die Taktfrequenz kaum noch erhöhen kann. Wenn man sich die elektronengeschwindigkeiten in den Leiterbahnen ansieht, ist bei diesen kurzen abmessungen inzwischen die Taktrate so hoch, dass ein neues Signal gesendet wird, während das alte noch nicht weggelaufen ist. Das wäre (um beim LKW beispiel zu bleiben) so, als würde man alle 10 sekunden einen LKW aus der Postzentrale schicken aber der LKW braucht 11 sekunden um aus der Ausfahrt rauszufahren.

  • Man kann mit den modernen Technologien so viele Transistoren
    integrieren, dass man diese riesige Zahl gar nicht mehr in
    einer einzigen CPU benötigt.

wie kann es sein, das man zuviele Transistoren in einer CPU hat?

Hallo,

  • Nur durch Erhöhung der Taktgeschwindigkeit ist nicht mehr
    viel Leitungssteigerung zu machen, weil man den den jetzt
    erreichten Werten technologisch langsam an Grenzen stößt.

der Hauptgrund dabei ist, dass man die Taktfrequenz kaum noch
erhöhen kann.

Die Taktfrequenz könnte man ohne Probleme erhöhen, aber die
Schaltgeschwindigkeiten der Transistoren sind begrenzt.

Wenn man sich die elektronengeschwindigkeiten in
den Leiterbahnen ansieht, ist bei diesen kurzen abmessungen
inzwischen die Taktrate so hoch, dass ein neues Signal
gesendet wird, während das alte noch nicht weggelaufen ist.

???
Rechne das mal vor.
Laufzeiten speilen zwar unter Umständen auch eine Rolle,
aber so wie du das beschreibst ist das irgendwie nicht plausibel.

  • Man kann mit den modernen Technologien so viele Transistoren
    integrieren, dass man diese riesige Zahl gar nicht mehr in
    einer einzigen CPU benötigt.

wie kann es sein, das man zu viele Transistoren in einer CPU hat?

Wenn alle Funktionen, die man in Hardware umsetzen kann und will,
die Möglichkeiten unterfordern, dann hat man da noch anderweitig
Reserven. Ein Prozessorkern braucht nicht unendlich viele
Transistoren.

Dann kann man z.B. auch daran gehen die GraKa mit zu intergerieren,
so wie das jetzt auch zunehmend praktiziert wird.
Oder man packt eben mehrere Prozessorkerne auf einen Chip.
Gruß Uwi

Wenn alle Funktionen, die man in Hardware umsetzen kann und
will,
die Möglichkeiten unterfordern, dann hat man da noch
anderweitig
Reserven. Ein Prozessorkern braucht nicht unendlich viele
Transistoren.

naja, aber mit mehr transistoren kann man schnellere Kerne bauen. oder auch mehr kerne, wie du schon sagtest. Also zu viele Transistoren gibt es nur aus finanzieller sicht

Rechne das mal vor.
Laufzeiten speilen zwar unter Umständen auch eine Rolle,
aber so wie du das beschreibst ist das irgendwie nicht
plausibel.

das hier meinte ich, im zweiten Abschnitt:

http://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Te…

grüße

Hallo,

naja, aber mit mehr transistoren kann man schnellere Kerne bauen.

nur bis zu einem bestimmten Punkt.

Wenn man alle Funktionen, die man braucht mit einer definierten
Anzahl Schaltelemente realisieren kann, wird eine noch größere
Zahl von Elementen das ganze nur langsamer werden lassen.

Beispiel:
Um 64Bit-Zahlen zu adieren, braucht an eben einen Addierer,
der eben 64 Bit breit ist.
Um diesen mit optimaler Geschwindigkeit zu nutzen, benötigt man
eine rel. klar definierte Zahl Schaltelemente.
Mit der 10-fachen Zahl kann man den Addierer nicht schneller
machen.

oder auch mehr kerne, wie du schon sagtest. Also zu
viele Transistoren gibt es nur aus finanzieller sicht

Das gilt nur, wenn man Anwendungen hat, die unbegrenzte
Recourcen nutzen können. Das ist aber in der Praxis nicht
notwendigerweise der Fall.

Wenn du die Aufgabe bekommst, nacheinander die Zahlen von
1 bis 100 abzuzählen, bringt es nix, wenn du hundert Leute
hinstellst und jeweils „Eins“ sagen lässt.

Am schnellsten geht es dann aber immer, indem statistisch gesehen
der Signalpfand so kurz wie möglich ist. Wenn dann aber mehr
Elemente als nötig benutzt werden, wird es langsamer.

http://de.wikipedia.org/wiki/Lichtgeschwindigkeit#Te…

Aha, was da steht ist zwar richtig und hat in verschiedenen
Zusammenhängen Bedeutung, aber es gibt da auch noch viele
andere Aspekte und Zusammenhänge.
Gruß Uwi

Hallo Fragewurm,

Was für Programme wären das, die ihre „Post“
parallel an verschiedene „Adressen“ versenden müssen. Soweit
ich weiß ist das z.B. bei Spielen ja eher ein Problem, die
Rechenlast gleichmäßig auf versch. Kerne aufzuteilen, oder?

Neben rechenintensiven Programmen, welche auf mehrere Kerne verteilt werden können, gibt es auch den Fall, dass mehrere Programme gleichzeitig laufen.
z.B. kann das Betriebssystem Daten auf die Platte schreiben, während das Programm schon weiter rechnet. Gleichzeitig werden die Daten vom Virenscanner geprüft …

Taskwechsel benötigen auch immer Rechenzeit.

MfG Peter(TOO)