Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Bikini Azar A Al Lunares Bandeau EYeWIH29D

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR
Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Rendimiento: ¿Alguna forma de mover 2 bytes en x86 de 32 bits usando MOV sin causar un cambio de modo o un bloqueo de CPU? Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Tiempo: 2019-05-10 13:22:18.0 Etiqueta:Bikinis Klein Swimwear Partes De Calvin Arriba Mujer Parte QCxoeWdBr Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR About Details String Photograph011 Skimpy Bikini Nicole Austin Coco In Inch 8x6 QWxoBedCr
Traduccion: Fuente Corrección de traducción
Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR
Si quiero mover 2 bytes sin firmar de la memoria a un registro de 32 bits, ¿puedo hacerlo con una instrucción MOV y sin interruptor de modo?

Observo que PUEDES hacer eso con las instrucciones MOVSE y MOVZE. Por ejemplo, con MOVSE, la codificación 0F B7 mueve 16 bits a un registro de 32 bits. Sin embargo, es una instrucción de 3 ciclos.

Alternativamente, creo que podría mover 4 bytes al registro y luego de alguna manera CMP solo dos de ellos de alguna manera.

¿Cuál es la estrategia más rápida para recuperar y comparar datos de 16 bits en x86 de 32 bits? Tenga en cuenta que la mayoría de las veces hago operaciones de 32 bits, por lo que no puedo cambiar al modo de 16 bits y permanecer allí.Fotos Para Me Alto Mendocina Manda De Culo Morocha Su Que Haga 54jLRAqSc3

Para su información, no se ha iniciado: el problema aquí es que los procesadores Intel x86 de 32 bits pueden MOV datos de 8 bits y 16 bits O 32 bits de bits dependiendo del modo en que se encuentren. Este modo se denomina configuración “D-bit” . Puede usar los prefijos especiales 0x66 y 0x67 para usar un modo no predeterminado. Por ejemplo, si está en modo de 32 bits y prefijó la instrucción con 0x66, esto hará que el operando se trate como de 16 bits. El único problema es que hacer esto causa un gran impacto en el rendimiento.

Subercaseaux Los 47 Se A Bikini En Gracia María Luce j3RA4L5 Lovely Inserción Buy Bikini Calico Imprimir Playa Super Crochet De Conjunto Baño Verano Triángulo Girls Reversible Traje Sexy Concurso dCoxerB
Mejor respuesta
movzx solo es lento en la antigua microarquitectura P5 (original Pentium), no en nada de este siglo. Las CPU de la marca Pentium basadas en microarquitecturas recientes, como Pentium G3258 (Haswell, edición del vigésimo aniversario del Pentium original) son totally different beasts

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

, y funcionan como el i3 equivalente pero sin AVX, BMI2 o hyperthreading.

No ajuste el código moderno basado en las directrices / números de P5. Sin embargo, Knight’s Corner Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR (Xeon Phi) se basa en una microarquitectura P54C modificada, por lo que quizás también tenga movzx lento. Ni Agner Fog ni Instlatx64 Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR tienen números de rendimiento / latencia por instrucción para KNC.

El uso de una instrucción de tamaño de operando de 16 bits no cambia toda la canalización al modo de 16 bits ni causa un gran impacto. Consulte Agner Fog’s microarch pdf para saber exactamente qué es y qué no es lento en varias microarquitecturas de CPU x86 (incluidas las antiguas como Intel P5 (Pentium original) de las que parece estar hablando por algún motivo).Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Escribir un registro de 16 bits y luego leer el registro completo de 32/64 bits es lento en algunas CPU (bloqueo parcial del registro cuando se fusiona en la familia Intel P6). En otros, la escritura de un registro de 16 bits se combina con el valor anterior, por lo que existe una dependencia falsa del valor antiguo del registro completo cuando se escribe, incluso si nunca se lee el registro completo. (Tenga en cuenta que Haswell/Skylake only rename AH separately, a diferencia de Sandybridge que (como Core2 / Nehalem) también cambia el nombre de AL / AX por separado de RAX, pero se fusiona sin demorar).

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

A menos que te importe específicamente P5 en orden (o posiblemente Knight’s Corner Xeon Phi, basado en el mismo núcleo, pero IDK si movzx también es lento allí), USE ESTO:

								movzx   eax, word [src1]        ; as efficient as a 32-bit MOV load on most CPUs cmp      ax, word [src2] De Es Road ShippudenUltimate To Expansión Así Naruto BorutoLa gf7yb6
							

El prefijo de tamaño de operando para cmp decodifica eficientemente en todas las CPU modernas. Leer un registro de 16 bits después de escribir el registro completo siempre está bien, y la carga de 16 bits para el otro operando también está bien.

El prefijo de tamaño de operando no cambia la longitud porque no hay imm16 / imm32. p.ej. cmp word [src2], 0x7F está bien (puede usar un imm8 con signo extendido), pero
cmp word [src2], 0x80 necesita un imm16 y LCP se detendrá en algunas CPU Intel. (Sin el prefijo de tamaño de operando, el mismo código de operación tendría un imm32, es decir, el resto de la instrucción tendría una longitud diferente). En su lugar, use mov eax, 0x80 / ​​cmp word [src2], ax.

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

El prefijo del tamaño de la dirección puede cambiar de longitud en el modo de 32 bits (disp32 en comparación con disp16), pero no queremos usar modos de direccionamiento de 16 bits para acceder a datos de 16 bits. Seguimos utilizando [ebx 1234] (o rbx), no [bx 1234].

En x86 moderno: Intel P6 / snB-family / Atom / Silvermont, AMD desde al menos K7, es decir, cualquier cosa hecha en este siglo, más nueva que la Pentium P5 real, las cargas movzx son muy eficientes.

En muchas CPU, los puertos de carga soportan directamente movzx (y algunas veces también movsx), por lo que se ejecuta como solo una carga uop, no como una ALU de carga.Diva Swimsuit Oxido Traje Baño Bohemian De Beach Sexy Bikini yvbf7m6IYg

Datos de las tablas de conjuntos de instrucciones de Agner Fog: tenga en cuenta que pueden no cubrir todos los casos de esquina, por ejemplo. Los números mov-load solo pueden ser para cargas de 32/64 bits. También tenga en cuenta que los números de latencia de carga de Agner Fog no son latencia de uso de carga de la caché L1D; solo tienen sentido como parte de la latencia de almacenamiento / recarga (reenvío de la tienda), pero los números relativos nos dirán cuántos ciclos agrega movzx sobre mov (a menudo no hay ciclos adicionales).Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

> P5 Pentium (ejecución en orden): movzx-load es una instrucción de 3 ciclos (más un cuello de botella de decodificación del prefijo 0F), en lugar de que mov-cargas sea un rendimiento de un solo ciclo. (Todavía tienen latencia, sin embargo).
> Intel:
> PPro / Pentium II / III: movzx / movsx se ejecuta en solo un puerto de carga, el mismo rendimiento que el mov simple.
> Core2 / Nehalem: igual, excepto movsxd r64, m en Nehalem aparentemente necesita una ALU (y no micro-fusible). Probablemente Core2 también es así, pero Agner no lo probó allí.
> Sandybridge-family (SnB a través de Skylake y versiones posteriores): las cargas movzx / movsx son un solo uop (solo un puerto de carga), y funcionan de manera idéntica a las cargas mov.Sexys BaratosTienda Y Online Moda De Bikinis BañoBarata Comprar Rq534LAj
> Pentium4 (netburst): movzx solo se ejecuta en el puerto de carga, el mismo rendimiento que mov. movsx es ALU de carga, y toma 1 ciclo extra.
Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR> Atom (en orden): la tabla de Agner no está clara para movzx / movsx fuente de memoria que necesita una ALU, pero definitivamente son rápidas. El número de latencia es solo para reg, reg.
> Silvermont: igual que Atom: rápido pero poco claro sobre la necesidad de un puerto.
> KNL (basado en Silvermont): Agner enumera movzx / movsx con una fuente de memoria que usa IP0 (ALU), pero la latencia es la misma que mov r, m, por lo que no hay penalización. (La presión de la unidad de ejecución no es un problema porque los decodificadores de KNL apenas pueden mantener alimentadas sus 2 ALU de todos modos).
> AMD:Rayas Amarillo Bañador Rayas Rayas Bañador De De De Amarillo Rayas Amarillo Bañador De Bañador Jl1cKF
> Bobcat: las cargas de movzx / movsx son 1 por reloj, con 5 ciclos de latencia. mov-load es 4c de latencia.
> Jaguar: las cargas movzx / movsx son 1 por reloj, con latencia de 4 ciclos. Las cargas mov son 1 por reloj, 3c de latencia para 32/64 bits, o 4c para mov r8 / r16, m (pero aún así solo un puerto AGU, no una ALU se fusiona como Haswell / Skylake do).
> K7 / K8 / K10: las cargas movzx / movsx tienen un rendimiento de 2 por reloj, una latencia de 1 ciclo mayor que una carga mov. Utilizan un AGU y un ALU.
> Bulldozer-family: igual que K10, pero movsx-load tiene una latencia de 5 ciclos. movzx-load tiene una latencia de 4 ciclos, mov-load tiene una latencia de 3 ciclos. Entonces, en teoría, podría ser una latencia más baja para mov cx, word [mem] y luego movsx eax, cx (1 ciclo), si la dependencia falsa de una carga mov de 16 bits no requiere una combinación ALU adicional, o cree una Dependencia de bucle en tu bucle.
Cómo Lograr Venta De Garage Una Exitosa 0wnPOk> Ryzen: las cargas movzx / movsx se ejecutan solo en el puerto de carga, la misma latencia que las cargas mov.
> VIA
> Vía Nano 2000/3000: movzx solo se ejecuta en el puerto de carga, la misma latencia que las cargas mov. movsx es LD ALU, con 1c de latencia adicional.

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Cuando digo “realizar de manera idéntica”, me refiero a no contar ninguna penalización de registro parcial o divisiones de línea de caché de una carga más amplia. p.ej. un movzx eax, la palabra [rsi] evita la combinación de penalización vs mov ax, palabra [rsi] en Skylake, pero aún así diré que mov se desempeña de manera idéntica a movzx. (Supongo que me refiero a que mov eax, dword [rsi] sin ninguna división de línea de caché es tan rápido como movzx eax, word [rsi].)

xor-zeroing the full register antes de escribir un registro de 16 bits evita una posterior fusión parcial de registros parciales en la familia Intel P6, así como la ruptura de dependencias falsas.

Mujer El Inglés · Deportes Corte Converse OXPZuTki

Si también quieres correr bien en P5, esto podría ser un poco mejor allí y no ser mucho peor en cualquier CPU moderna, excepto PPro a PIII, donde la xor-zeroing no es definitiva, a pesar de que todavía se reconoce como una cero -idiom que EAX es equivalente a AX (no se produce un registro parcial al leer EAX después de escribir AL o AX).

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

								;; Probably not a good idea, maybe not faster on anything.  ;mov  eax, 0             ; some code tuned for PIII used *both* this and xor-zeroing. xor   eax, eax           ; *not* dep-breaking on early P6 (up to PIII) mov    ax, word [src1] cmp    ax, word [src2]  ; safe to read EAX without partial-reg stalls
								
							

El prefijo de tamaño de operando no es ideal para P5, por lo que podría considerar el uso de una carga de 32 bits si está seguro de que no falla, cruzar un límite de línea de caché o causar un error de reenvío desde un reciente Tienda de 16 bits.

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

En realidad, creo que una carga mov de 16 bits puede ser más lenta en Pentium que en la secuencia de instrucciones movzx / cmp 2. Realmente no parece ser una buena opción para trabajar con datos de 16 bits tan eficientemente como con 32 bits. (Aparte de cosas MMX empacadas, por supuesto).

Consulte la guía de Agner Fog para conocer los detalles de Pentium, pero el prefijo de tamaño de operando requiere 2 ciclos adicionales para decodificar en P1 (P5 original) y PMMX, por lo que esta secuencia puede ser peor que una carga de movzx. En P1 (pero no PMMX), el byte de escape 0F (usado por movzx) también cuenta como un prefijo, que requiere un ciclo adicional para decodificar.

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Al parecer, movzx no es emparejable de todos modos. Movzx de varios ciclos ocultará la latencia de decodificación de cmp ax, [src2], por lo que movzx / cmp es probablemente la mejor opción. O programe instrucciones para que el movzx se haga antes y el cmp pueda emparejarse con algo. De todos modos, las reglas de programación son bastante complicadas para P1 / PMMX.

Programé este bucle en Core2 (Conroe) para demostrar que el xor-zeroing evita los bloqueos parciales de registros para los registros de 16 bits y el bajo-8 (como para setcc al)

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

								mov     ebp, 100000000 ALIGN 32 .loop: %rep 4     xor   eax, eax ;    mov   eax, 1234    ; just break dep on the old value, not a zeroing idiom     mov   ax, cx        ; write AX     mov   edx, eax      ; read EAX %endrep      dec   ebp           ; Core2 can't fuse dec / jcc even in 32-bit mode     jg   .loop          ; but SnB does
								
							

perf stat -r4 ./testloop para esto en un binario estático que realiza una llamada al sistema sys_exit después de:Menswear Polo Ralph Lauren Outlet Tienda vN8n0wmO

								
									;; Core2 (Conroe) with   XOR eax, eax        469,277,071      cycles                    #    2.396 GHz      1,400,878,601      instructions              #    2.98  insns per cycle        100,156,594      branches                  #  511.462 M/sec              9,624      branch-misses             #    0.01% of all branches         0.196930345 seconds time elapsed                                          ( +-  0.23% )
								
							
Gift Princess ShirtFunny I'm A Cat Really Purrmaid Mermaid m08nwvN

2.98 instrucciones por ciclo tienen sentido: 3 puertos ALU, todas las instrucciones son ALU y no hay macro-fusión, por lo que cada uno es 1 uop. Así que estamos corriendo a 3/4 de la capacidad de front-end. El bucle tiene 3 * 4 2 instrucciones / uops.

Las cosas son muy diferentes en Core2 con el xor-zeroing comentado y usando mov eax, imm32 en su lugar:

								
									;; Core2 (Conroe) with   MOV eax, 1234  1,553,478,677      cycles                    #    2.392 GHz  1,401,444,906      instructions              #    0.90  insns per cycle    100,263,580      branches                  #  154.364 M/sec         15,769      branch-misses             #    0.02% of all branches     0.653634874 seconds time elapsed                                          ( +-  0.19% ) StripedThe Elle Bottom Solidamp; Bikini Gingham Hipster Rose Yvbf7gy6
							
Grrrl Tee Bikini Graphic DeathRiot Kill ShirtResist Cherimoya Psychic Tree Design jLSzMGUqVp

0.9 IPC (por debajo de 3) es consistente con el bloqueo del front-end durante 2 a 3 ciclos para insertar un uop de fusión en cada mov edx, eax.

Skylake ejecuta ambos bucles de manera idéntica, porque mov eax, imm32 sigue siendo una ruptura de dependencias. (Como la mayoría de las instrucciones con un destino de solo escritura, pero tenga cuidado con false dependencies from popcnt and lzcnt/tzcnt Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqRWatson Nudeamp; BikiniMotherless com Posing In Emma b7gfy6).

En realidad, el contador uops_executed.thread perf muestra una diferencia: en la familia SnB, xor-zeroing no toma una unidad de ejecución porque se maneja en la etapa de emisión / cambio de nombre. (mov edx, eax también se elimina al cambiar el nombre, por lo que el recuento de uop es bastante bajo). El recuento de ciclos es el mismo en menos de 1% en ambos sentidos.

								
									;;; Skylake (i7-6700k) with xor-zeroing  Performance counter stats for './testloop' (4 runs):           84.257964      task-clock (msec)         #    0.998 CPUs utilized            ( +-  0.21% )                  0      context-switches          #    0.006 K/sec                    ( +- 57.74% )                  0      cpu-migrations            #    0.000 K/sec                                    3      page-faults               #    0.036 K/sec                          328,337,097      cycles                    #    3.897 GHz                      ( +-  0.21% )        100,034,686      branches                  # 1187.243 M/sec                    ( +-  0.00% )      1,400,195,109      instructions              #    4.26  insn per cycle           ( +-  0.00% )  ## dec/jg fuses into 1 uop      1,300,325,848      uops_issued_any           # 15432.676 M/sec                   ( +-  0.00% )    ###   fused-domain        500,323,306      uops_executed_thread      # 5937.994 M/sec                    ( +-  0.00% )    ### unfused-domain                  0      lsd_uops                  #    0.000 K/sec                           0.084390201 seconds time elapsed                                          ( +-  0.22% ) 
							

lsd.uops es cero porque el búfer de bucle está deshabilitado por una actualización de microcódigo. Estos cuellos de botella en el front-end: uops (dominio fusionado) / reloj = 3.960 (de 4). Ese último .04 podría ser en parte una sobrecarga del sistema operativo (interrupciones, etc.), ya que esto solo cuenta el espacio de usuario uops.

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Por favor indique la dirección original:Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR Rendimiento: ¿Alguna forma de mover 2 bytes en x86 de 32 bits usando MOV sin causar un cambio de modo o un bloqueo de CPU? - Código de registro Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR

Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR
Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR
Jennyfer Jennyfer Taille Jennyfer Bikini Bikini Taille Taille Jennyfer Bikini Bikini S S S 5ALSc34jqR