¿Cuál es el código ensamblador x86 más rápido para sincronizar el acceso a una matriz en la memoria?¿Código de ensamblaje x86 más rápido para sincronizar el acceso a una matriz?
Para ser más precisos: tenemos una región de paginación única continua mallocada en la memoria y el sistema operativo no realizará una paginación de esta región durante la duración de nuestro experimento. Un hilo escribirá en el conjunto, un hilo leerá del conjunto. la matriz es pequeña, pero más grande que la capacidad de escritura atómica de su CPU (para que se requiera un bloqueo por separado)
"más rápido": la velocidad efectiva: no suponga que la longitud del bytecode es significativa, pero tome teniendo en cuenta el comportamiento de bloqueo del bloqueo y el comportamiento de bifurcación con respecto al código circundante.
Se tiene que trabajar en x86-32 y/o x86-64
Tiene que trabajar en la parte superior de (o descendientes de) de Windows desde XP, Linux desde kernel 2.2 o MAXOS X (en el usuario -modo).
Por favor, no "depende" -respuestas: Si depende de algo que no ha especificado aquí sólo hacer su propio ejemplo (s) y el estado lo que es más rápido en que/los caso (s).
¡Código postal! (Esto es para evitar descripciones vagas)
mensaje no sólo su línea 2 LOCK
+ CMPXCHG
comparar & de intercambio, pero nos muestran cómo se integran con las instrucciones de lectura en el hilo y la reseña de instrucciones de la otra.
Si lo desea, explique sus ajustes para la optimización de la memoria caché y cómo evitar errores de predicción de ramas si el branch-target depende de (1) si obtiene o no el bloqueo (2) cuál es el primer byte de un -read es.
Si desea distinguir entre multiprocesamiento y conmutación de tareas: ¿cómo se comportará su código si los hilos no se realizan en 2 cpus pero solo se apoderan de uno?
@Ken blanco: jaja divertida. o estas en serio? de ser así, eche un vistazo a la terminología que uso y las preguntas que he respondido. –
@Ken - Me interesaría mucho la escuela que asigna este tipo de preguntas como tarea. – linuxuser27
@eznme, leí la terminología utilizada. Parece algo directamente de un libro de texto. "Publica no solo tu 2 líneas ... sino muestra". Sin intención de ofender, no parecía algo que contuviera una pregunta típica. @ linuxuser27, ¿has visto alguno de los cursos avanzados en MIT o RIT? –