Wie werden SIMD Einheiten, wie z.B. die SSE Register mit Daten gefüttert?



  • Wird hierzu jedes Einzelne Register mit einem mov Befehl angesprochen um es mit Daten zu füttern oder geht das schneller, in dem man z.B. nur einen Adressbereich angeben muss, der dann entsprechend des Befehls eine feste Länge hat?

    Also so

    mov XMM0, &irgandwas
    mov XMM1, &irgendwas+1
    .
    .
    .
    mov XMM7, &irgendwas+7
    [code]
    
    oder so:
    
    [code]
    super_mov XMM, %adressrange // füllt alle XMM* Register mit den Daten aus Adressbereich %adressrange mit der festen Länge von Registerbreite *8.
    


  • Mir fallen nur die Befehle fxsave und fxrstor ein, die ein gleichzeitges Laden ermöglichen.



  • 4lc0h0l schrieb:

    Mir fallen nur die Befehle fxsave und fxrstor ein, die ein gleichzeitges Laden ermöglichen.

    Danke für deine Antwort.

    Hm, das scheint nicht das zu sein, was ich gerne hätte.
    D.h. dass ein größerer Memoryblock geladen und gespeichert wird geht schon in die richtige Richtung, aber das ist ja für alle Register und nicht nur für die, die man vielleicht nur haben will.
    Da verliert man also Zeit, weil der Speicher in der richtigen Organisation gefüttert werden muss.

    Dennoch frage ich mich da jetzt, wofür man so eine Funktion, die alle Register sichert, überhaupt benötigt?



  • na für Taskwechsel natürlich

    Nicky



  • versuchs doch mal mit popa und pusha wird genauso gehen.
    beschreibung hier:
    https://www.youtube.com/watch?v=hiRacdl02w4


Log in to reply