Archiv Prozessoren 8.660 Themen, 54.742 Beiträge

Cache pro Core - mehr Power für Mehrkerner dank Prefetching?

Olaf19 / 4 Antworten / Baumansicht Nickles

Hallo zusammen!

Dass ein Sechskernprozessor nicht 3x so schnell ist wie ein Zweikerner, weil die Verwaltung der unterschiedlichen Kerne Leistung verbraucht, ist ja seit längerem bekannt - der sog. "Overhead".

Forscher der Universität North Carolina wollen dem mit Hilfe von Prefetching beikommen, d.h. jeder Kern soll seinen eigenen Cache bekommen. Der Clou dabei ist die intelligente Steuerung: Sollte das Prefetching eher dazu tendieren, die Gesamtperformance zu verlangsamen, wird es wieder abgeschaltet.

Mehr zum Thema hier:
http://www.elektronikpraxis.vogel.de/themen/hardwareentwicklung/mikrocontrollerprozessoren/articles/317528/

FYI
Olaf

P.S. "Elektronikpraxis Vogel"... den Vogel kannte ich auch noch nicht ;-)

Conqueror Olaf19 „Cache pro Core - mehr Power für Mehrkerner dank Prefetching?“
Optionen

Forscher wollen dies und das. Was sich letzendlich durchsetzt war man in zig Jahren sehen.
Und beim heutigen PC ist die CPU nicht mehr die limitierende Komponente sondern die Anbindung der Daten an die CPU und RAM, der Bus quasi. Der ist überholt.

Olaf19 Conqueror „Forscher wollen dies und das. Was sich letzendlich durchsetzt war man in zig...“
Optionen
Forscher wollen dies und das. Was sich letzendlich durchsetzt war man in zig Jahren sehen.

Sicherlich, nur wenn man nichts erforscht, kann man auch nichts erfinden, was sich durchsetzt ;-)

die Anbindung der Daten an die CPU und RAM, der Bus quasi. Der ist überholt.

Was genau wäre denn dort verbesserungsbedürftig?

CU
Olaf
Andreas42 Olaf19 „Cache pro Core - mehr Power für Mehrkerner dank Prefetching?“
Optionen

Hi!

Die Technik des Prefetchings und des CPU-Caches ist im Prinzip ein alter Hut. Damit arbeiten CPUs AFAIK seit der Einführung der ersten Pentiums(?) im Massenmarkt.

Bekannt sind auch die Probleme, wenn die Programmstruktur es nicht zulässt den Cache und das Prefetching optimal zu nutzen. Wenn sich bei der Verarbeitung herausstellt, dass die vorgeladenen Daten falsch sind, dann muss der Cache gelöscht und neu geladen werden. Das dauert natürlich. Moderne Programmcompiler optimieren hier automatisch um solche Situationen möglichst zu unterbinden.

Neu ist eigentlich nur, dass man der CPU offenbar eine Überwachungsfunktion spendiert, die Teile des Caches (oder den ganzen) abschaltet, wenn dies negative Auswirkungen auf die Performance hat. Wichtiger ist aber IMHO die Fähigkeit den Cache dynamisch an die Kerne zu verteilen. Braucht ein Kern mehr Cache, dann kann er diesen offenbar bekommen.
Zusammen mit der Fähigkeit für einzelne Kerne den Cache abzuschalten ist dies interessant. Ich denke dabei allerdings weniger an Fälle, in welchen das Caching negative Performanceauswirkungen hat, sondern daran, wenn bei einem Multi-Core System einzelne Cores nicht benötigt werden, dann können diese ihren Cache quasi an die Kerne unter last verteilen.

Wie oft es bei Cachenutzung zu negativen Auswirkungen kommt, müsste man einmal prüfen. Ich glaube wie gesagt, dass das die Softwarehersteller durch Compileroptimierungen weitestgehend im Griff haben. (Mal sehen, ob andere Mitleser da im Detail mehr wissen, was die Optimierungen der Compiler betrifft - ich bin aus dem Thema etwas raus.)

Bis dann
Andreas

Olaf19 Andreas42 „Hi! Die Technik des Prefetchings und des CPU-Caches ist im Prinzip ein alter...“
Optionen
Wichtiger ist aber IMHO die Fähigkeit den Cache dynamisch an die Kerne zu verteilen. Braucht ein Kern mehr Cache, dann kann er diesen offenbar bekommen. Zusammen mit der Fähigkeit für einzelne Kerne den Cache abzuschalten ist dies interessant.

Meine ich auch. Dass es Caching und Prefetching auf CPU-Ebene bereits seit der ersten Pentium-Generation gibt, mag durchaus sein - eine "Kern-Ebene" gab es damals aber noch nicht. War ja eh immer nur einer da ;-)

CU
Olaf