Memoria transazionale vs Mutex e serrature

3

Abbiamo appena scoperto che i processori Intel ora supportano la memoria transazionale !!!! Ho imparato a conoscere le operazioni Transazionali nella mia classe dB / OS, è un concetto molto semplice: l'intera operazione viene eseguita o non viene eseguito nulla.

Come è la programmazione con il nuovo Memoriale Transazionale il modello è diverso dal modello multithread che utilizza serrature e mutex? Significa che ci libereremo delle serrature e dei mutex?

    
posta newprint 17.11.2013 - 10:07
fonte

1 risposta

3

La programmazione Transactional Memory (TM) ha davvero due elementi che devono essere discussi: produttività e prestazioni.

Produttività

Rispetto ai blocchi, la memoria transazionale può essere considerata un costrutto di controllo di accesso di livello superiore. La differenza è simile alla programmazione imperativa vs dichiarativa.

Dal punto di vista di un programmatore, TM dovrebbe consentire di dichiarare cosa deve essere eseguito atomicamente, piuttosto che fornire istruzioni (sotto forma di codice di blocco) su come l'esecuzione atomica dovrebbe essere fatta.

Questo ha un numero di vantaggi promessi rispetto al blocco: ragionamento, composibilità, libertà di stallo più facili.

Prestazioni

Rispetto ai blocchi, TM è (dovrebbe essere --- le implementazioni possono variare qui!) un ottimistico costrutto di controllo dell'accesso, in opposizione al pessimismo delle serrature . L'idea generale di TM è che invece di richiedere l'esclusione reciproca da una regione atomica, come si farebbe con i blocchi, il sistema consente a più thread di entrare nella regione atomica.

Monitorando le modifiche dello stato e monitorando la possibilità di gare di dati, nel caso in cui non si verifichi una gara, il sistema consentirà il commit dei thread. Altrimenti, almeno una transazione verrà interrotta e riavviata. Nel caso in cui il conflitto sia raro, questo può rappresentare un notevole guadagno in termini di prestazioni.

Avvertimenti

Come tutti i sistemi reali, c'è un elenco di avvertimenti lungo quanto il mio braccio. Ecco un set parziale:

  • In un HTM, è necessario preoccuparsi delle transazioni che non possono essere commesse --- codici operativi illegali, troppo stato per il sistema da gestire, ecc. Ciò significa che è necessario un percorso di fallback.
  • Come gestire le operazioni di I / O atomico?
  • Le prestazioni aumentano se il conflitto è raro --- ma che succede se non lo è? Le prestazioni diminuiscono, sprecando il lavoro riprovando ancora e ancora.
  • Come cooperate tra i thread usando TM invece di lock?
risposta data 28.11.2013 - 18:34
fonte

Leggi altre domande sui tag