core2 q...



  • Soviel ich weiss teilen sich bei den core2 quadcore Prozessoren jeweils zwei Kerne einen Cache. Was passiert, jetzt wenn in beiden caches die gleichen speicherbereiche gecached werden, wie werden die Daten dann synchronisiert?



  • passiert nicht weil die cpus den bus sn00pen



  • Grohool schrieb:

    Soviel ich weiss teilen sich bei den core2 quadcore Prozessoren jeweils zwei Kerne einen Cache. Was passiert, jetzt wenn in beiden caches die gleichen speicherbereiche gecached werden, wie werden die Daten dann synchronisiert?

    http://de.wikipedia.org/wiki/Cache-Kohärenz

    Kann man aber auch ganze Vorlesungen drüber halten...

    Viele Grüße
    Christian



  • Grohool schrieb:

    Soviel ich weiss teilen sich bei den core2 quadcore Prozessoren jeweils zwei Kerne einen Cache.

    jeder kern hat einen cache ;),
    dann dazu noch je zwei einen
    und am ende zZ sogar ein dritter fuer alle kerne zusammen.

    Was passiert, jetzt wenn in beiden caches die gleichen speicherbereiche gecached werden, wie werden die Daten dann synchronisiert?

    an sich, wie bei den meisten multithreading dingen, gibt es einen "besitzer", und zwar den core der schreiben will. sobald der das macht, werden die copys in den anderen caches als invalid markiert und beim naechsten cache lookup neu geholt.
    deswegen gibt es diese cache hierarchy, damit man die copy mit kleinerer latenz bekommt.

    das ganze ist aber eine relativ einfache sache, viel aufwendiger ist die synchronisierung innerhalb einer cpu, das kann echt mit winzigen gruenden wochenlange debugging bedeuten von bugs die nur einmal alle 24h auftauchen.
    Das betrifft eigentlich jeden porgrammierer und jede cpu, dafuer gibt es memory fences/barriers



  • Hmm, in dem script, das ich grade durchlese steht, dass sich auf den Prozessor-Chips häufig ein, heute etwa 256 Mbyte - 512 Mbyte großer, Sekundär-Cache befindet.
    Welcher Prozessor hat denn einen so großen L2 Cache? Der von meinem ist gaube ich nur 2 MB groß.



  • rapso schrieb:

    Grohool schrieb:

    Soviel ich weiss teilen sich bei den core2 quadcore Prozessoren jeweils zwei Kerne einen Cache.

    jeder kern hat einen cache ;),
    dann dazu noch je zwei einen
    und am ende zZ sogar ein dritter fuer alle kerne zusammen.

    Also so eine Architektur kenne ich von keiner CPU.
    Die Core 2 haben einen L1 Cache pro Kern, und einen L2 Cache für je zwei Kerne, und das wars. L3 Cache gibt's da nicht.
    Die i7 haben drei Cache-Levels, wobei L1 und L2 pro Kern sind, und L3 für alle kerne zusammen.



  • hast recht, hatte mich verlesen gehabt.


Anmelden zum Antworten