wozu ausrichten an cache-line?
-
Hallo,
ich hätte nur eine verständnisfrage. Im neuen Standard gibts es die Möglichkeit über __attribute__ Daten an cache-lines auszurichten. Das soll z.B. Abhelfen beim false sharing.
Wie muss ich mir das vorstellen bzw. warum hilft das Ausrichten an cache-lines gegen das besagte false sharing?Danke für Hilfe
-
cache schrieb:
Im neuen Standard gibts es die Möglichkeit über __attribute__ Daten an cache-lines auszurichten.
Das wäre mir neu. Wo im Standard soll das stehen?
-
Das Ausrichten an cache-lines erhöht die Chance, das die Daten in eine cache-line passen. Das verhindert für sich genommen kein false sharing, aber je mehr Cachlines einzelne Datenstrukturen belegen, desto größer ist die Wahrscheinlichkeit von false sharing. In erster linie ergeben sich aber Performencegewinne beim Zugriff, da es seltener zu Cache-Misses kommt.
-
Hier ist ne lange Erklärung: http://www.roguewave.com/portals/0/products/threadspotter/docs/2011.1/manual/multithreading_problems.html
Die kurze hat TNA viel besser hinbekommen als ich

-
danke, jetzt versteh ichs besser!
-
cache schrieb:
Im neuen Standard gibts es die Möglichkeit über __attribute__ Daten an cache-lines auszurichten.
Das wäre mir neu. Wo im Standard soll das stehen?
-
das mit dem neuen standard ist wohl Blödsinn gewesen, sorry.
Aber in der POSIX-bib und über gcc gehts mit __attribute__
-
cooky451 schrieb:
cache schrieb:
Im neuen Standard gibts es die Möglichkeit über __attribute__ Daten an cache-lines auszurichten.
Das wäre mir neu. Wo im Standard soll das stehen?
Das wäre zumindest mal eine sehr gute Anwendungsmöglichkeit, für die neue Attributssyntax. Wenn ich die Dokumentation des GCC richtig verstehe, geht die neue Syntax ab Version 4.8 für alle Attribute, die der GCC unter seiner speziellen __attribute__-Syntax kennt.
-
die Attribute Syntax ist gcc spezifisch. in C++11 gibt es aber alignas
http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax
http://en.cppreference.com/w/cpp/language/alignasdas ganze ist auch nicht zu verwechseln mit der C++11 attribute specifier sequence
-
dd++ schrieb:
das ganze ist auch nicht zu verwechseln mit der C++11 attribute specifier sequence
Doch, die meine ich. Ich kann es gerade nicht ausprobieren, aber angeblich kann der neueste GCC alle seine __attributes__ auch mit dieser Syntax.