Controlla i limiti utilizzando MPX di Intel

2

Intel ha recentemente aggiunto nuove istruzioni al proprio set di istruzioni per supportare il controllo dei limiti. Intel li chiama Memory Protection Extensions (MPX) e sono descritti nel capitolo 9 di questo manuale . In poche parole, è possibile utilizzare le nuove istruzioni MPX per caricare una base e un limite superiore in registri speciali prima di eseguire un'operazione di memoria; il processore controllerà quindi che l'indirizzo di memoria sia entro i limiti e verrà intrappolato se non lo è. Fondamentalmente, questo è il supporto a livello hardware per il controllo dei limiti.

Sembra molto interessante. Fino ad ora, una delle principali sfide con la distribuzione automatica del controllo dei limiti per i programmi C e C ++ è la prestazione: se un'opzione del compilatore rallenterebbe il programma del 50%, o del 10%, molti sviluppatori potrebbero essere riluttanti. Questa estensione hardware suona come il tipo di cosa che potenzialmente potrebbe indirizzare l'indirizzo delle prestazioni, e forse anche rendere più facile per i compilatori abilitare il controllo automatico dei limiti con meno complessità nel codice del compilatore.

Quindi, è utile in pratica? I compilatori esistenti offrono supporto per il controllo dei limiti con accelerazione hardware utilizzando queste istruzioni? Ci sono delle misurazioni su quale overhead delle prestazioni di questo tipo di controllo dei limiti accelerati dall'hardware?

    
posta D.W. 09.11.2013 - 05:25
fonte

1 risposta

4

È apparentemente presente un ramo di sviluppo di gcc che include il supporto per il controllo dei limiti usando le estensioni MPX. Sembra interessante Non sono forniti numeri di rendimento.

Il progetto AddressSanitizer ha sperimentato l'utilizzo delle estensioni MPX nel loro progetto, ma le loro reazioni sono miste . Prevedono che per alcuni programmi questo approccio potrebbe essere molto veloce, ma per altri potrebbe essere lento. È difficile saperlo con certezza.

Una delle sfide è che nessun processore di spedizione supporta l'MPX (al momento), quindi è difficile sapere esattamente quanto bene o male funzionerà. Tutto quello che possiamo fare adesso è eseguire il codice all'interno di un emulatore, non eseguirlo su una CPU hardware reale.

    
risposta data 09.11.2013 - 09:36
fonte

Leggi altre domande sui tag