Autor Thema: Multi Core + Geschwindigkeit bei gleichem Code fuer alle CPUs  (Gelesen 4380 mal)

mkirin

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
Hallo,
nach dem aktivieren und initialisieren der weiteren CPUs im System rufen diese nun alle den gleichen Code bei 0x1000 auf.
(Es soll etwas berechnet werden, jede CPU rechnet in Abhaengigkeit der APIC_ID etwas anderes aus)

Ist das vom Standpunkt der Geschwindigkeit gesehen ok das alle CPUs den Code aus dem gleichen Speicherbereich lesen?
Oder waehre es besser fuer jede CPU den Code nochmal zu kopieren, so das z.b. CPU0 bei 0x1000 startet, CPU1 bei 0x2000 usw.?

Meine Hauptbefürchtung ist das der gleichzeitige Zugriff dazu fuehrt das immer nur eine CPU Code ausfuehren kann und ich damit nur wieder die gleiche Geschwindigkeit wie bei einer einzigen CPU habe.

Schonmal vielen Dank im vorraus fuer jede Hilfe,
M.K.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 02. August 2009, 00:00 »
Ich habe grundsätzlich keine Ahnung vom Thema, aber wenn dich meine Vermutung interessiert: Ich denke, solange alle CPUs nur lesend auf den Speicherbereich zugreifen, wird das keinen Unterschied machen. Nur wenn sie auf dem gleichen Datenbereich arbeiten (auch schreibend), dürfte das Geschwindigkeit kosten, weil immer wieder mit einem gemeinsamen Cache oder sogar dem RAM synchronisiert werden muss. Denke ich mir jedenfalls mal so. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #2 am: 02. August 2009, 01:58 »
Jop, taljeth hat Recht. Der Begriff über den du dich in dem Zusammenhang informieren solltest dürfte wohl MESI bzw. allgemein Cachekohärenz sein. Bei MESI ist es so, dass nur der gleichzeitige Schreibzugriff zu Performanceproblemen aufgrund von Cache Trashing führt. Lesezugriffe sind kein Problem (dank des Shared-Zustandes einer Cacheline).

edit: Ah genau, ich sollte hinzufügen, dass das (also das es gleich lang dauert für alle CPUs) nur für ein UMA (= Uniform Memory Access) System gilt. Bei einem NUMA-System (Non-Uniform Memory Access) hast du das Problem, dass du eine Hierarchie von Hauptspeichern hast und eventuell von unterschiedlichen Cores unterschiedlich lange Wege zu diesen.
« Letzte Änderung: 02. August 2009, 11:33 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

mkirin

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 05. August 2009, 01:47 »
Ganz vielen Dank! Jetzt wo ich endlich Geschwindigkeitstests machen kann sieht man auch deutlich das es z.b. bei 4 CPU's auch die vierfache Geschwindigkeit ist. Beim schreiben ist auf jeden Fall sichergestellt das es in unterschiedliche Bereiche geht.

M.K.

matheguru

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 05. August 2009, 11:37 »
respekt! eine multicore unterstützung für dein OS, das hat was! :-D
Hacker zu sein bedeutet mehr, als sich nur damit auseinander zu setzen, es ist eine Lebenseinstellung

 

Einloggen