Assembler und Mehrkernprozessor



  • Hallo,

    wie läuft der Mehrkernbertieb eigentlich auf unterster Ebene ab? Ich habe schon gelesen dass ein Thread die kleinste Einheit teilbare Einheit ist.
    Aber wie funktioniert die Zuweisung an die Kerne in Assembler [in x86/x64]?





  • Telle schrieb:

    Aber wie funktioniert die Zuweisung an die Kerne in Assembler [in x86/x64]?

    Im Prinzip genau so wie bei Multitasking: Wenn ein Thread (weiter-)laufen soll wird in dem gewünschten Kern der interne Zustand (Register) hergestellt und an die Adresse des Codes gesprungen.



  • Tobiking2 schrieb:

    wird in dem gewünschten Kern der interne Zustand (Register) hergestellt und an die Adresse des Codes gesprungen.

    Mit welchen Assemblerbefehlen kann man das denn aktiv steuern und wie verhält es sich bei PC-Start im Real Mode? Oder wird das alles rein hardwaremäßig geregelt und man hat kaum Kontrolle über den Ablauf?



  • Telle schrieb:

    Tobiking2 schrieb:

    wird in dem gewünschten Kern der interne Zustand (Register) hergestellt und an die Adresse des Codes gesprungen.

    Mit welchen Assemblerbefehlen kann man das denn aktiv steuern

    Mit keinen speziellen. Ein Kern hat bzgl. der Ausführung nicht viel mit den anderen zu tun. Jeder Kern hat einen eigenen Instruction Pointer, eigene (lokale) Interrupts und führt seine Befehle aus. Kommunikation findet darüber statt, das ein Kern etwas in den Speicher schreibt und der andere dies liest. Ein OS könnte z.B. eine globale Threadliste haben in der sich jeder Kern Threads zum ausführen rauspickt. Außer das man den gleichzeitigen Zugriff auf die Liste beachten muss, ist da kein Unterschied zum Multitasking.

    Telle schrieb:

    und wie verhält es sich bei PC-Start im Real Mode? Oder wird das alles rein hardwaremäßig geregelt und man hat kaum Kontrolle über den Ablauf?

    Wenn der PC startet ist nur der erste Kern aktiv. Über den io-apic ist es möglich den anderen Kernen ene Interruptsignal zu schicken, der dafür sorgt das diese starten. Ich meine man gibt ihnen noch eine Startadresse mit, kann es aber nicht 100%ig sagen. Und danach gehts so wie oben beschrieben, sie führen unabhängig Code aus.


Anmelden zum Antworten