Autor Thema: Multicore/DualCore Nutzung in reinem Assembler ohne c++ und OpenMP?  (Gelesen 5273 mal)

maxinator

  • Beiträge: 21
    • Profil anzeigen
    • Maxinators HP - übers Leben und Programmieren :)
Gespeichert
Joa, der Thread-Titel ist ja schon relativ aussagekräftig xD, aber weiß zufällig jemand, wie ich bei meinem AMD Turion 64 x2 den 2.Core aktivieren kann und dann an diesen ein Programm schicken kann?
Also ziel ist es z.b. rechenintensive Probleme auf den zweiten Core zu verlagern, so sollte das daann aussehen:

Programm1:
  Lade_Programm_2_in_den_zweiten_core_und_beginne_Programm1

  rechne_irgendwas_und_warte_dann_auf_den_zweiten_core

Programm2:
  rechne_irgendwas_und_springe_zu_Programm1_wenn_ein_ergebnis_gefunden _wurde

joa, so im groben sollte das aussehen, aber mir würde es auch reichen, wenn man mir einfach alle möglichen Befehle darüber gibt.

Das Problem und der Grund, weshalb ich hier nachfrage ist ja, dass mich intel und amd damit erzürnt habe :), dass sie abertausendemal predigen, man solle Multicore nutze, da das die Zukunft sei, aber Möglichkeiten DualCore-Programm bieten beite nicht und schicken einen dann immer nur zu c++-units wie OpenMP.

Im AMD-Forum hat mich jemand auf das Cpu1En-Bit hingewiesen, aber wie ich das zu nutzen habe, weiß ich nun nicht, in der BIOS-Guide steht dann zwar, dass der zweite core beginnt Code abzuarbeiten, aber z.b. weiß ich nicht, wie ich dann dem Core2 die Adresse des Codes übergeben soll....

Ich hoffe jemand hat sich damit schoneinmal beschäftigt  :-)

EDIT: ich sehe grade, dass es vor einem Jahr einen ähnlichen Thread gab, der das thema behandelte, aber uach zu keinem Ergebnis kam...
Ich würde dann auch ein Tutorial über das Thema schreiben, wenn ich es hinbekommen würde(hatte ich eh vor)

Ach übrigens, noch einige etwaig nützliche Links, ich hoffe andere werden schlauer als ich daraus:
mein Beitrag im AMD-Developers Forum - mit einer Antwort
Mein Thread im Programmersheaven-Forum - unbeantwortet
Der BiosGuide, wo das Cpu1En-Bit nur ERWÄHNT wird
Das ist eine Intel-Doku, die bisher die vielversprechendste ist, aber die ich mir noch durchlesen muss

ansonsten würde ich für diejenigen empfehlen, die sich wirklich damit beschäftigen und mir helfen wollen hier ein wenig alles durchzustöber. Bei AMD habe ich schon sogut wie alles umgekrempelt, da ist nichts zu finden...

Überlegung: Bestünde evtl. die Möglichkeit, dass der zweite Core im ProtectedMode automatisch die Häkfte der Threads abarbeitet und die andere Hälfte dem ersten überlässt  :?
« Letzte Änderung: 14. October 2007, 14:04 von maxinator »

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
Du wirst wohl SMP Unterstützung brauchen, um beide Core benutzen zu können. Andere Möglichkeiten beide Cores zu nutzen gibt es AFAIK nicht, oder?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
hi,

um die Cores zu starten gibt es meines Wissens nach 2 Möglichkeiten: Entweder über die Intel Multiprocessor Specification oder über die ACPI Tables. Die Multiprocessor Specification lässt nur SMP zu. Über die ACPI sind auch so Sachen wie NUMA möglich. Da die Multiprocessor Specification verständlicher/kürzer/etc. ist würde ich dir raten die mal als erstes anzuschauen. Damit lässt sich die zusätzlichen CPUs schonmal starten.
Danach musst du den Kernelcode natürlich noch an die 2 oder mehr CPUs anpassen, sonst treten Probleme wie Deadlocks, Race Conditions & <everything evil that could possibly happen to a programmer> auf. Soll heißen, du musst für jede CPU einen Kernelstack & ein TSS bereitstellen. Außerdem musst du die TLBs & Pagedirectories/-tables synchronisieren. Danach musst du den Kernelcode, der nicht reentrant ist, mit Spinlocks, oä absichern.
Wenn du dann soweit bist, dann kannst du auf jeder CPU einen Thread ausführen. Ob eine Anwendung dann mehrere Threads nutzt, ist dann ihre Sache. Wenn sie das allerdings macht, muss sie auch die entsprechenden Lockmechanismen verwenden.

EDIT: Willst du eigentlich ein Anwendungsprogram oder ein Betriebssystem schreiben? :-o Mir ist das irgendwie nicht so ganz klar... Für ein Anwendungsprogramm müsstest du nur mehrere Threads machen und halt das entsprechende Locking implementieren. Die CPUs sollte dein Host-OS eigentlich starten (und wenn nicht, dann lad dir ein gescheites runter. Linux).
« Letzte Änderung: 14. October 2007, 14:57 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

maxinator

  • Beiträge: 21
    • Profil anzeigen
    • Maxinators HP - übers Leben und Programmieren :)
Gespeichert
ich schreibe eine anwendung für mein OS :D
und das os schreibe ich unter linux und teste alles mit virtualbox xD
danke für den beitrag, ich werde mir mal alles anschauen...

EDIT: was für eine Anwendung genau ist meiner HP, wo das os beschrieben ist zu entnehmen, aber ich will das hier mal nicht zu genau erwähnen xD
« Letzte Änderung: 14. October 2007, 15:06 von maxinator »

 

Einloggen