2012-10-30 19 views
5

Ho alcuni dubbi riguardo l'uso dell'istruzione PLD nella corteccia ARM A8. Poiché sto utilizzando l'istruzione all'interno del loop, esiste la possibilità di accesso alla memoria non associata. Il mio dubbio è che ciò possa causare o meno un errore di segmentazione. Ho letto nella ARM manual which states thatUso dell'istruzione PLD

Poiché un'istruzione PLD viene gestita come qualsiasi altra istruzione carico da tutti i livelli di cache, l'istruzione PLD segue regole dati-dipendenza standard e procedure di sfratto. Durante qualsiasi fase dell'esecuzione PLD, l'istruzione PLD viene ignorata in caso di un errore di traduzione dell'indirizzo, di un riscontro nella cache o di una interruzione.

Quindi, se viene eseguito un accesso alla memoria fuori limite, l'istruzione PLD corrispondente viene ignorata o non è il mio dubbio.

+1

+1: Grande domanda, me lo sono chiesto ma non mi sono mai preso la briga di controllarlo. – Leo

+0

Grazie per la domanda @Rugger, io stesso ho affrontato questo paio di anni fa. La risposta qui sotto è corretta. – poloolop

risposta

5

L'istruzione PLD non crea un errore di segmentazione. Nel caso in cui PLD chieda al sistema di memoria di raggiungere un'area di memoria non esistente, viene ignorata.

Da ARM ARM

Le istruzioni precarico sono accenni, e così implementazioni li possono trattare come PON senza intaccare la funzionalità comportamento del dispositivo. Le istruzioni non generano eccezioni di annullamento dati sincrone, ma le operazioni del sistema di memoria potrebbero, in circostanze eccezionali, generare aborti asincroni.

...

Tuttavia, un'operazione di memoria eseguita come risultato di uno di questi sistemi di memoria indizi potrebbero innescare un evento asincrono, influenzando così l'esecuzione del processore. Esempi degli eventi asincroni che possono essere attivati ​​sono interruzioni e interrupt asincroni.