2015-10-23 29 views

risposta

4

Si è permesso. Potresti anche averlo provato. Oppure leggi il riferimento al set di istruzioni:

L'integrità del prefisso LOCK non è influenzata dall'allineamento del campo di memoria . Il blocco della memoria viene osservato per arbitrariamente i campi disallineati.

Ma vedi anche:

eccezioni

#AC (0) Se il controllo di allineamento è abilitata e viene fatto un riferimento di memoria non allineato mentre il livello di privilegio corrente è 3.

Si noti che il controllo dell'allineamento non è solitamente abilitato.

4

È consentito, ma è possibile che si verifichi un'enorme riduzione delle prestazioni poiché il blocco potrebbe non essere possibile conservarlo all'interno della cache e potrebbe subire un downgrade completo del bus lock (uno stallo di sistema completo, in modo efficace).

Vedere per es. - https://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures:

Nei giorni di Intel 486 processori, il prefisso blocco utilizzato per affermare una serratura sul bus con un grande successo in termini di prestazioni. A partire da l'architettura Intel Pentium Pro, il blocco del bus viene trasformato in un blocco di cache . Un blocco verrà comunque affermato sul bus nella maggior parte delle architetture moderne se il blocco risiede nella memoria non memorizzabile o se il blocco si estende oltre un limite della linea cache che divide le linee della cache. Entrambi questi scenari sono improbabili, quindi la maggior parte dei prefissi di blocco sarà trasformata in un blocco della cache che è molto meno costoso.

Può variare secondo le specifiche del processore, ma si noti che un'altra considerazione è che la linea di attraversamento di confine può anche significare che attraversa un limite di pagina, che è ancora più difficile da mantenere (e quindi anche più probabile di declassare).