Qual è il codice assembly x86 più veloce per sincronizzare l'accesso a un array in memoria?Codice assembly x86 più veloce per sincronizzare l'accesso a un array?
Per essere più precisi: Abbiamo un continuo singola regione di paging malloc'ed in memoria e il sistema operativo non sarà pagina-out questa regione per tutta la durata del nostro esperimento. Un thread scriverà nell'array, un thread leggerà dall'array. la matrice è piccola, ma è più grande della capacità di scrittura atomica della CPU (in modo che sia necessario un blocco separato)
"più veloce": la velocità effettiva: non solo supporre che la lunghezza del bytecode sia significativa ma in considerazione il comportamento di memorizzazione nella cache del comportamento di blocco e ramificazione in relazione al codice circostante.
Si deve lavorare su x86-32 e/o x86-64
Si deve lavorare on-top (o discendenti di) Windows a partire da XP, Linux dal kernel 2.2, o Maxos X (a utente -modalità).
Si prega di non "dipende" -responsabili: se dipende da qualcosa che non ho specificato qui basta creare il proprio esempio (s) e dichiarare ciò che è più veloce in quei/quei casi (s).
CAP! (Questo per evitare che le descrizioni vaghe)
Messaggio non solo il 2-line LOCK
+ CMPXCHG
confrontare & di swap, ma ci mostrano come si integrano con le istruzioni di lettura in un thread e le rettifiche di istruzioni del altra.
Se si desidera, spiegare le modifiche apportate all'ottimizzazione della cache e come evitare le previsioni errate di ramo se il target di diramazione dipende da (1) se si ottiene il blocco o meno (2) quale è il primo byte di un più grande -read è.
Se ti piace distinguere tra multiprocessing e task-switching: come funzionerà il tuo codice se i thread non vengono eseguiti su 2 cpus ma ne prendi uno?
@Ken Bianco: haha divertente. o sei serio? In tal caso: dai un'occhiata alla terminologia che uso e alle domande a cui ho risposto. –
@Ken - Sarei molto interessato alla scuola che assegna questo tipo di domande come compiti a casa. – linuxuser27
@eznme, ho letto la terminologia utilizzata. Sembra qualcosa direttamente da un libro di testo. "Pubblica non solo la tua 2-line ... ma mostra". Nessuna offesa intesa - non sembrava qualcosa che una tipica domanda avrebbe potuto contenere. @ linuxuser27, hai visto uno dei corsi avanzati al MIT o al RIT? –