Lines Matching refs:las

32 pretende ser una guía para usar las diversas barreras de memoria
47 (2) proporcionar una guía sobre cómo utilizar las barreras disponibles.
66 (*) ¿Qué son las barreras de memoria?
69 - ¿Qué no se puede asumir sobre las barreras de memoria?
110 (*) Cosas que hacen las CPU.
152 En la CPU abstracta, el orden de las operaciones de memoria es muy
153 relajado, y una CPU en realidad puede realizar las operaciones de memoria
155 mantenerse. De manera similar, el compilador también puede organizar las
159 Entonces, en el diagrama anterior, los efectos de las operaciones de
161 medida que las operaciones cruzan la interfaz entre la CPU y el resto del
162 sistema (las líneas discontinuas a puntos).
230 pero esto podría aparecer como cualquiera de las siguientes dos secuencias:
235 el segundo de las cuales casi con certeza resultará en mal funcionamiento,
249 donde READ_ONCE() es LEER_UNA_VEZ(), la CPU emitirá las siguientes
256 Alpha, sin embargo emite las siguientes operaciones de memoria:
297 podemos obtener cualquiera de las siguientes secuencias:
311 podemos obtener cualquiera de las siguientes secuencias:
337 campo de bits dado están protegidos por diferentes locks, las
366 estructura anidada y el otro no, o si las dos están separados por una
378 Como se puede leer arriba, las operaciones independientes de memoria se
385 percepción de orden parcial, sobre las operaciones de memoria a ambos lados
388 Tal cumplimiento es importante porque las CPUs y otros dispositivos en un
405 Una barrera de memoria de escritura garantiza que todas las
407 suceden antes de todas las operaciones STORE especificadas después
418 [!] Tenga en cuenta que las barreras de escritura normalmente deben
439 Como se mencionó en (1), las otras CPU en el sistema pueden verse como
449 para ver los diagramas mostrando las restricciones de orden.
459 [!] Tenga en cuenta que las barreras de dependencia de dirección
464 de memoria de direcciones explícitas. Hoy en día, las APIs para marcar
472 más una garantía de que todas las operaciones de LOAD especificadas
473 antes de la barrera parecerán ocurrir antes de todas las operaciones
483 [!] Tenga en mente que las barreras de lectura normalmente deben
490 las operaciones LOAD y STORE especificadas antes de que la barrera
491 aparezca suceden antes de que todas las operaciones LOAD y STORE
507 toda las operaciones de memoria después de la operación ACQUIRE
522 Garantiza que todas las operaciones de memoria antes de la operación
530 El uso de las operaciones ACQUIRE y RELEASE generalmente excluye la
537 todos los accesos de todas las secciones críticas anteriores para esa
544 Un subconjunto de las operaciones atómicas descritas en atomic_t.txt
554 particular, entonces las barreras de memoria son innecesarias en ese
557 Tenga en cuenta que estas son las garantías _mínimas_. Diferentes
565 Hay ciertas cosas que las barreras de memoria del kernel Linux no
589 una barrera de memoria entre las CPU, pero es posible que no lo hagan
603 READ_ONCE() para DEC Alpha, lo que significa que las únicas personas que
608 de las barreras de dependencia de dirección.
610 [!] Si bien las dependencias de direcciones se observan tanto en carga a
611 carga como en relaciones de carga a store, las barreras de dependencia de
614 El requisito de las barreras de dependencia de dirección es un poco sutil,
658 Esto refuerza la ocurrencia de una de las dos implicaciones, y previene la
674 escrituras dependientes porque las CPU que admite el kernel Linux no
701 de error y similares, y el orden natural de las CPUs evita que se pierdan
723 compiladores actuales no las entienden. El propósito de esta sección es
806 incluso después de que se hayan aplicado todas las optimizaciones del
896 Además, las dependencias de control se aplican solo a la cláusula then y
911 razonamiento, el compilador podría compilar las dos escrituras en 'b' como
925 resumen, las dependencias de control se aplican solo a los stores en la
927 las funciones invocado por esas dos cláusulas), no al código que sigue a
962 reordenar las dependencia hasta su inexistencia. El uso cuidadoso de
977 usted necesita todas las CPU para ver un store dado al mismo tiempo,
980 (*) Los compiladores no entienden las dependencias de control. Por lo
995 supuesto, las barreras generales. Una barrera de escritura se empareja con
1053 En primer lugar, las barreras de escritura actúan como orden parcial en las
1091 En segundo lugar, las barreras de dependencia de dirección actúan como
1181 las cargas. Considere la siguiente secuencia de eventos:
1266 Aunque las dos cargas de A ocurren después de la carga de B, ambas pueden
1325 Muchas CPU especulan con las cargas: es decir, ven que necesitarán cargar
1359 Una vez completadas las divisiones --> : : ~-->| |
1428 todos las CPU o, alternativamente, que todas las CPU acuerdan el orden en
1433 al mismo tiempo en todas las -otras- CPUs. El resto de este documento
1449 a Y precede la carga de la CPU 3 desde Y. Además, las barreras de memoria
1469 Sin embargo, las dependencias, las barreras de lectura y las barreras de
1489 este ejemplo se ejecuta en un sistema atómico no multicopia donde las CPU 1
1492 requieren barreras generales para garantizar que todas las CPU acurden el
1497 que -todas- las CPU percibirán el mismo orden de -todas- las operaciones.
1500 que las CPU de la cadena estén de acuerdo en el orden combinado de los
1541 cpu1() debe ver las escrituras de cpu0(), de modo que el siguiente
1547 liberación-adquisición es local a las CPU que participan en esa cadena y no
1558 en orden, las CPU que no participan en la cadena de liberación-adquisición
1560 de que las instrucciones de barrera de memoria débiles utilizadas para
1577 Para reiterar, si su código requiere un orden completo de todas las
1615 (*) Dentro de un bucle ("loop"), obliga al compilador a cargar las
1691 recargan las variables. Hacerlo es perfectamente seguro para código de
1734 algo incorrecto para las variables compartidas. Por ejemplo, suponga
1801 documentación. (Tenga también en cuenta que las interrupciones
1814 descartar el valor de todas las ubicaciones de memoria que tiene
1905 directo en la CPU, que luego puede reordenar las cosas como quiera.
1921 Todas las barreras de memoria, excepto las barreras de dependencia de
1925 Además: en el caso de las dependencias de direcciones, se esperaría que el
1926 compilador emita las cargas en el orden correcto (por ejemplo, `a[b]`
1942 [!] Tenga en cuenta que las barreras de memoria SMP _deben_ usarse para
1951 al orden en que las operaciones de memoria aparecen en un dispositivo, al
2030 las escrituras de la memoria caché coherente se hayan completado antes
2042 para los que las modificaciones se escriben en el almacenamiento
2052 Para la carga desde memoria persistente, las barreras de memoria de
2069 Algunas de las otras funciones en el kernel Linux implican barreras de
2089 En todos los casos existen variantes de las operaciones "ACQUIRE" y
2111 Todas las operaciones ACQUIRE emitidas antes de otra operación
2116 Todas las operaciones ACQUIRE emitidas antes de una operación RELEASE
2127 [!] Nota: una de las consecuencias de que los cerrojos en ACQUIRE y RELEASE
2128 sean barreras unidireccionales, es que los efectos de las instrucciones
2176 desarrollador) cambió las operaciones, un deadlock -podría- ocurrir.
2178 Pero supongamos que la CPU reordenó las operaciones. En este caso, el
2247 suceder en el orden correcto, las primitivas para comenzar el proceso de ir
2248 a dormir, y las primitivas para iniciar un despertar implican ciertas
2279 formas, todas las cuales obtienen la barrera de memoria en el lugar
2332 Si ocurre una reactivación ("wakeup"), una (al menos) de las dos cargas
2339 una llamada a wake_up_process(), las dos cargas verían 1, garantizado.
2359 En términos de orden de la memoria, todas estas funciones proporcionan las
2362 [!] Tenga en cuenta que las barreras de la memoria implicadas por el
2410 En los sistemas SMP, las primitivas de bloqueo proveen una forma más
2432 hasta que *H ocurra, además de las restricciones impuestas por los bloqueos
2433 separados en las distintas CPUs. Podría, por ejemplo, ver:
2452 circunstancias en las que reordenar definitivamente _podría_ ser un
2472 cerrojo a ser posible. En cuyo caso, es posible que las operaciones que
2491 Para despertar a un proceso que espera ("waiter") en particular, las
2562 de dicha barrera con respecto a las demás CPU del sistema. _No_ garantiza
2568 emita las instrucciones en el orden correcto sin realmente intervenir en la
2577 procesadores, las operaciones atómicas se destacan especialmente porque
2588 interrupción y, por lo tanto, las dos partes del driver pueden interferir
2591 Esto puede aliviarse, al menos en parte, desactivando las interrupciones
2592 locales (una forma de bloqueo), de modo que las operaciones críticas sean
2616 almacenamiento en el registro de direcciones si las reglas de orden son lo
2621 Si se relajan las reglas de orden, se debe asumir que los accesos
2657 devueltos por ioremap()), las garantías de orden son las siguientes:
2669 orden consistente con las adquisiciones del cerrojo.
2672 a la finalización de todas las escrituras anteriores en la memoria
2674 que las escrituras de la CPU a un búfer DMA de salida asignadas por
2681 el mismo subproceso pueda comenzar. Esto asegura que las lecturas de
2703 tanto, las garantías enumeradas anteriormente no pueden por lo general ser
2733 periféricos a través de un mapeo interno de memoria virtual, las
2734 garantías de orden portátiles proporcionadas por inX() y outX() son las
2735 mismas que las proporcionadas por readX() y writeX(), respectivamente, al
2742 garantizado por todas las arquitecturas y por lo tanto no forma parte de
2798 La forma en que se perciben las operaciones de memoria caché en todo el
2800 encuentran entre las CPU y la memoria, y por el sistema de coherencia en
2806 entre la CPU y su caché (las barreras de memoria lógicamente actúan sobre
2834 hubiera tenido lugar para las otras CPUs, ya que los mecanismos de
2840 programa. Algunas de las instrucciones generan operaciones de carga y
2846 De lo que se ocupan las barreras de la memoria es de controlar el orden en
2852 determinada, ya que las CPU siempre ven sus propias cargas y stores como si
2856 sistema de caché. Esto depende de las propiedades de la ventana de memoria
2867 DMA puede obtener datos obsoletos de la RAM, porque las líneas de caché
2876 propios datos, o las líneas de caché presentes en el caché de la CPU pueden
2907 Un programador podría dar por sentado que la CPU realizará las operaciones
2926 (*) es más probable que las cargas deban completarse de inmediato para
2930 (*) las cargas se pueden hacer especulativamente, y el resultado es
2933 (*) las cargas se pueden hacer de forma especulativa, lo que lleva a que
2940 (*) las cargas y los stores se pueden combinar para mejorar el rendimiento
2991 que GCC emita las instrucciones especiales ld.acq y st.rel
3024 La CPU DEC Alpha es una de las CPU más relajadas que existen. No solo eso,