2013-09-03 29 views
11

Il kernel di Linux ha il proprio contesto SSE/AVX?Il kernel di Linux ha il proprio contesto SSE/AVX?

Voglio dire, dal punto di vista di un modulo del kernel, posso usare le istruzioni SSE/AVX senza preoccuparmi delle applicazioni dello spazio utente che potrebbero usarlo anche tu? O devo usare alcuni blocchi o fare un po 'di salvataggio del contesto manualmente?

+0

Perché il voto ravvicinato mi chiedo? Questa sembra una domanda valida e utile. –

+0

Possibile duplicato: http://stackoverflow.com/q/6227603/1401351. Soprattutto vedere la risorsa collegata in una risposta a questa domanda: Sezione 6.3 di http://www.agner.org/optimize/calling_conventions.pdf – Peter

+0

Ragazzi, ho bisogno di sapere che è possibile utilizzare le istruzioni AVX dal LKM. Nessuno di quei collegamenti mi dice questo. E non cerco nemmeno le convenzioni di chiamata. –

risposta

11

Il kernel Linux non salva FPU o registri vettoriali per impostazione predefinita per migliorare la velocità degli switch di contesto. Tuttavia, puoi farne uso in determinate circostanze.

La sezione 6.3 di http://agner.org/optimize/calling_conventions.pdf descrive molto bene l'uso dei registri vettoriali in modalità kernel, sia in Windows che in Linux. Ecco una citazione importante:

Un driver di periferica che deve utilizzare registri vettoriali deve prima salvare questi registri chiamando la funzione kernel_fpu_begin() e ripristinare registri chiamando kernel_fpu_end() prima di ritornare o dormire.

C'è di più, come il fatto che non è possibile utilizzarli affatto in contesto di interrupt, quindi suggerisco di leggere l'intera sezione.

+0

Grazie mille per la risposta :) –

Problemi correlati