Hogar / Misceláneas / Compatibilidad con la tecnología de hiperprocesamiento. Tecnología Hyper-Threading de Intel. La productividad nunca es suficiente

Compatibilidad con la tecnología de hiperprocesamiento. Tecnología Hyper-Threading de Intel. La productividad nunca es suficiente

Los usuarios que han estado configurando el BIOS al menos una vez probablemente ya hayan notado que hay un parámetro Intel Hyper Threading que es incomprensible para muchos. Muchos no saben qué es esta tecnología y con qué propósito se utiliza. Intentemos descubrir qué es Hyper Threading y cómo puede habilitar el uso de este soporte. También intentaremos averiguar qué ventajas le da a una computadora. esta configuración. En principio, no hay nada difícil de entender aquí.

Intel Hyper Threading: ¿qué es?
Si no profundiza en la jungla de la terminología informática, sino que la expresa en un lenguaje sencillo, entonces esta tecnología fue diseñado para aumentar el flujo de comandos procesados ​​simultáneamente por la CPU. Los chips de procesadores modernos, por regla general, utilizan solo el 70% de las capacidades informáticas disponibles. El resto queda, por así decirlo, en reserva. En cuanto al procesamiento del flujo de datos, en la mayoría de los casos solo se utiliza un hilo, a pesar de que el sistema utiliza un procesador multinúcleo.

Principios básicos de trabajo.
Para aumentar las capacidades del procesador central, se desarrolló una tecnología especial Hyper Threading. Esta tecnología facilita la división de un flujo de comandos en dos. También es posible agregar una segunda transmisión a una existente. Solo una transmisión de este tipo es virtual y no funciona a nivel físico. Este enfoque le permite aumentar significativamente el rendimiento del procesador. Todo el sistema, en consecuencia, comienza a funcionar más rápido. El aumento en el rendimiento de la CPU puede fluctuar bastante. Esto se discutirá por separado. Sin embargo, los propios desarrolladores de la tecnología Hyper Threading afirman que no llega a ser un núcleo completo. En algunos casos, el uso de esta tecnología está plenamente justificado. Si conoce la esencia de los procesadores Hyper Threading, el resultado no tardará en llegar.

referencia histórica
Vamos a sumergirnos un poco en la historia de este desarrollo. La compatibilidad con Hyper Threading apareció por primera vez solo en los procesadores Intel Pentium 4. Más tarde, la implementación de esta tecnología continuó en la serie Intel Core iX (X significa serie de procesador aquí). Cabe señalar que, por alguna razón, está ausente en la línea de chips de procesador Core 2. Es cierto que el aumento de la productividad fue bastante débil: en algún lugar en el nivel del 15-20%. Esto indicaba que el procesador no contaba con la potencia de procesamiento necesaria, y la tecnología creada estaba prácticamente adelantada a su tiempo. Hoy en día, el soporte para la tecnología Hyper Threading ya está disponible en casi todos los chips modernos. Para aumentar la potencia del procesador central, el proceso en sí utiliza solo el 5% de la superficie del cristal, dejando espacio para procesar comandos y datos.

Una cuestión de conflictos y performance
Todo esto ciertamente es bueno, pero en algunos casos, al procesar datos, puede haber una ralentización en el trabajo. Esto se debe principalmente al llamado módulo de predicción de sucursales y al tamaño de caché insuficiente cuando se recarga constantemente. Si hablamos del módulo principal, entonces en este caso la situación se desarrolla de tal manera que en algunos casos el primer hilo puede requerir datos del segundo, los cuales pueden no ser procesados ​​en ese momento o estar en cola de procesamiento. Además, no menos comunes son las situaciones en las que el núcleo del procesador central tiene una carga muy seria y, a pesar de esto, el módulo principal continúa enviándole datos. Algunos programas y aplicaciones, como los juegos en línea que consumen muchos recursos, pueden ralentizarse seriamente solo porque carecen de optimización para el uso de la tecnología Hyper Threading. ¿Qué pasa con los juegos? El sistema informático del usuario, por su parte, trata de optimizar los flujos de datos desde la aplicación al servidor. El problema es que el juego no sabe cómo distribuir flujos de datos de forma independiente, volcando todo en un montón. En general, es posible que simplemente no esté diseñado para esto. A veces, en los procesadores de doble núcleo, el aumento de rendimiento es significativamente mayor que en los de 4 núcleos. Simplemente no tienen el poder de procesamiento.

¿Cómo habilitar Hyper Threading en BIOS?
Ya hemos descubierto un poco sobre qué es la tecnología Hyper Threading y nos hemos familiarizado con la historia de su desarrollo. Nos hemos acercado a comprender qué es la tecnología Hyper Threading. ¿Cómo activar esta tecnología para su uso en el procesador? Aquí todo se hace de manera bastante simple. Debe utilizar el subsistema de gestión del BIOS. El subsistema se ingresa usando las teclas Del, F1, F2, F3, F8, F12, F2+Del, etc. Si está utilizando una computadora portátil Sony Vaio, entonces tienen una entrada específica cuando usan la tecla ASSIST dedicada. En la configuración del BIOS, si el procesador que está utilizando es compatible con la tecnología Hyper Threading, debe haber una línea de configuración especial. En la mayoría de los casos, se parece a la tecnología Hyper Threading y, a veces, se parece a la función. Según el desarrollador del subsistema y la versión del BIOS, la configuración de este parámetro puede estar contenida en el menú principal o en la configuración avanzada. Para habilitar esta tecnología, debe ingresar al menú de opciones y establecer el valor en Habilitado. Después de eso, debe guardar los cambios realizados y reiniciar el sistema.

¿Por qué es útil Hyper Threading?
Para concluir, me gustaría hablar sobre los beneficios que brinda el uso de la tecnología Hyper Threading. ¿Para qué es todo esto? ¿Por qué es necesario aumentar la potencia del procesador a la hora de procesar información? Aquellos usuarios que trabajan con aplicaciones y programas que consumen muchos recursos no necesitan explicar nada. Muchas personas probablemente saben que los paquetes de software de diseño gráfico, matemático y requieren muchos recursos del sistema en el proceso de trabajo. Debido a esto, todo el sistema se carga tanto que comienza a ralentizarse terriblemente. Para evitar que esto suceda, se recomienda habilitar la compatibilidad con Hyper Threading.

Muchos procesadores Intel incluyen módulos con Hiper soporte-Tecnología de subprocesos, que, de acuerdo con la idea de los desarrolladores, debería ayudar a aumentar el rendimiento del chip y acelerar la PC en su conjunto. ¿Cuáles son los detalles de esta solución de una corporación estadounidense? ¿Cómo puede aprovechar Hyper-Threading?

Conceptos básicos de tecnología

Echemos un vistazo a los detalles clave sobre Hyper-Threading. ¿Qué es esta tecnología? Fue desarrollado por Intel y presentado por primera vez al público en 2001. El propósito de su creación fue aumentar el rendimiento de los servidores. El principio principal implementado en Hyper-Threading es la distribución de los cálculos del procesador a varios subprocesos. Además, esto es posible incluso si solo se instala un núcleo en el tipo de microcircuito correspondiente (a su vez, si hay 2 o más de ellos y los hilos en el procesador ya están distribuidos, la tecnología complementa con éxito este mecanismo).

Garantizar el funcionamiento del chip de PC principal dentro de varios subprocesos se lleva a cabo mediante la creación de copias de estados arquitectónicos en el curso de los cálculos. En este caso, se utiliza el mismo conjunto de recursos en el chip. Si la aplicación utiliza la capacidad adecuada, las operaciones significativas en la práctica se llevan a cabo mucho más rápido. También es importante que la tecnología en cuestión sea compatible con el sistema de entrada/salida de la computadora: el BIOS.

Habilitación de Hyper-Threading

Si el procesador instalado en la PC es compatible con el estándar apropiado, generalmente se activa automáticamente. Pero en algunos casos, debe realizar manualmente las acciones necesarias para que funcione la tecnología Hyper-Threading. ¿Cómo habilitarlo? Muy simple.

Debe ingresar a la interfaz principal del BIOS. Para hacer esto, al comienzo del arranque de la computadora, debe presionar DEL, a veces, F2, F10, con menos frecuencia, otras teclas, pero la deseada siempre aparece en una de las líneas de texto que se muestran en la pantalla inmediatamente después. encendiendo la computadora. En la interfaz del BIOS, debe encontrar el elemento Hyper-Threading: en las versiones del sistema de E / S que lo admiten, generalmente se encuentra en un lugar destacado. Habiendo seleccionado la opción adecuada, debe presionar Enter y activarla, marcándola como Habilitada. Si este modo ya está configurado, la tecnología Hyper-Threading está funcionando. Puedes utilizar todas sus ventajas. Después de activar la tecnología en la configuración, debe guardar todas las entradas en el BIOS seleccionando Guardar y salir de la configuración. Después de eso, la computadora se reiniciará en el modo en que el procesador está funcionando con soporte Hyper-Theading. Del mismo modo, Hyper-Threading está deshabilitado. Para hacer esto, seleccione otra opción en el elemento correspondiente: Deshabilitado y guarde la configuración.

Habiendo estudiado cómo habilitar Hyper-Threading y desactivar esta tecnología, echemos un vistazo más de cerca a sus características.

CPU con soporte Hyper Threading

El primer procesador en el que se implementó el concepto de la compañía, según algunas fuentes, es el Intel Xeon MP, también conocido como Foster MP. Este chip es similar en varios componentes arquitectónicos al Pentium 4, que más tarde también implementó la tecnología en cuestión. Posteriormente, se implementó la función informática de subprocesos múltiples en los procesadores de servidor Xeon con el núcleo Prestonia.

Si hablamos de la prevalencia actual de Hyper-Threading, ¿qué "pros" lo respaldan? Entre los chips más populares de este tipo se encuentran los que pertenecen a las familias Core y Xeon. También hay información de que se implementan algoritmos similares en procesadores como Itanium y Atom.

Habiendo estudiado la información básica sobre Hyper-Threading, los procesadores con su soporte, veamos los hechos más notables sobre la historia del desarrollo de la tecnología.

Historial de desarrollo

Como señalamos anteriormente, Intel mostró el concepto en cuestión al público en 2001. Pero los primeros pasos en la creación de tecnología se dieron a principios de los 90. Los ingenieros de la empresa estadounidense notaron que los recursos de los procesadores de PC no se utilizan por completo al realizar una serie de operaciones.

Como calcularon los expertos de Intel, durante el trabajo de un usuario en una PC, el microcircuito no se usa activamente durante intervalos significativos, casi la mayor parte del tiempo, en aproximadamente un 30%. Las opiniones de los expertos con respecto a esta figura son muy diferentes: alguien lo considera claramente subestimado, otros están completamente de acuerdo con la tesis de los desarrolladores estadounidenses.

Sin embargo, la mayoría de los especialistas en TI coincidieron en que aunque no el 70% de la capacidad del procesador está inactiva, sino una cantidad muy significativa de ellos.

La tarea principal de los desarrolladores.

Intel ha decidido corregir este estado de cosas a través de un enfoque cualitativamente nuevo para garantizar la eficiencia de los principales chips de PC. Se propuso crear una tecnología que contribuyera a un uso más activo de las capacidades de los procesadores. En 1996, los especialistas de Intel comenzaron su desarrollo práctico.

De acuerdo con el concepto de una corporación estadounidense, el procesador, al procesar datos de un programa, podría dirigir recursos inactivos para trabajar con otra aplicación (o un componente de la actual, pero con una estructura diferente y que requiere el uso de recursos adicionales). El algoritmo correspondiente también asumió una interacción efectiva con otros componentes de hardware de PC: RAM, chipset y programas.

Intel logró resolver el problema. Inicialmente, la tecnología se llamaba Willamette. En 1999, se introdujo en la arquitectura de algunos procesadores y comenzó su prueba. Pronto, la tecnología recibió su nombre moderno: Hyper-Threading. Es difícil decir qué fue exactamente: un simple cambio de marca o ajustes fundamentales a la plataforma. Ya conocemos más datos sobre la aparición de la tecnología en público y su implementación en varios modelos de procesadores Intel. Entre los nombres de desarrollo comunes hoy en día se encuentra Hyper-Threading Technology.

Aspectos de la compatibilidad con la tecnología

¿Qué tan bien está implementado el soporte para la tecnología Hyper-Threading en los sistemas operativos? Se puede notar que si estamos hablando de modernos Versiones de Windows, entonces no habrá problemas para que el usuario aproveche al máximo los beneficios de la tecnología Intel Hyper-Threading. Por supuesto, también es muy importante que el sistema de E / S sea compatible con la tecnología; hablamos de esto anteriormente.

Factores de software y hardware

Con respecto a las versiones anteriores del sistema operativo: Windows 98, NT y el XP relativamente desactualizado, una condición necesaria para la compatibilidad con Hyper-Threading es la compatibilidad con ACPI. Si no está implementado en el sistema operativo, la computadora no reconocerá todos los flujos computacionales formados por los módulos correspondientes. Tenga en cuenta que Windows XP en su conjunto proporciona los beneficios de esta tecnología. También es muy deseable que se implementen algoritmos de subprocesos múltiples en las aplicaciones utilizadas por el propietario de la PC.

A veces, es posible que necesite una PC, si instala procesadores compatibles con Hyper-Threading en lugar de los que originalmente tenía y no eran compatibles con la tecnología. Sin embargo, como en el caso de los sistemas operativos, no habrá problemas especiales si el usuario tiene una PC moderna o al menos los componentes de hardware correspondientes a los primeros procesadores Hyper Threading, como apuntábamos anteriormente, implementados en la línea Core y adaptados Para ello, los conjuntos de chips en las placas base son totalmente compatibles con las funciones correspondientes del chip.

Criterios de aceleración

Si la computadora a nivel de componentes de hardware y software no es compatible con Hyper-Threading, esta tecnología, en teoría, puede incluso ralentizar su trabajo. Este estado de cosas ha llevado a algunos profesionales de TI a dudar de las perspectivas de la solución de Intel. Decidieron que no se trataba de un salto tecnológico, sino de un movimiento de marketing que subyace en el concepto de Hyper Threading, que, debido a su arquitectura, no es capaz de acelerar significativamente la PC. Pero las dudas de los críticos fueron disipadas rápidamente por los ingenieros de Intel.

Entonces, las condiciones básicas para que la tecnología sea utilizada con éxito:

Soporte para Hyper-Threading por el sistema I/O;

Compatibilidad de la placa base con el procesador del tipo correspondiente;

El soporte de una tecnología por parte del sistema operativo y la aplicación específica que se ejecuta en él.

Si no debería haber ningún problema particular en los dos primeros puntos, entonces en términos de compatibilidad de los programas con Hyper-Threading, todavía puede haber algunas superposiciones. Pero cabe señalar que si una aplicación admite, por ejemplo, trabajar con procesadores de doble núcleo, entonces será compatible, casi garantizado, con la tecnología de Intel.

Al menos hay estudios que confirman el aumento del rendimiento de los programas adaptados a los microcircuitos de doble núcleo en aproximadamente un 15-18% si los módulos Intel Hyper Threading funcionan en el procesador. Ya sabemos cómo deshabilitarlos (por si el usuario tiene dudas sobre la conveniencia de utilizar la tecnología). Pero probablemente haya muy pocas razones tangibles para su aparición.

Utilidad práctica de Hyper-Threading

¿La tecnología en cuestión ha tenido un impacto tangible en Intel? Hay diferentes opiniones sobre este asunto. Pero muchas personas notan que la tecnología Hyper-Threading se ha vuelto tan popular que esta solución se ha vuelto indispensable para muchos fabricantes de sistemas de servidor, y también fue recibida positivamente por los usuarios comunes de PC.

Procesamiento de datos de hardware

La principal ventaja de la tecnología es que se implementa en un formato de hardware. Es decir, la parte principal de los cálculos se realizará dentro del procesador en módulos especiales, y no en forma de algoritmos de software transmitidos al nivel del núcleo principal del microcircuito, lo que implicaría una disminución en el rendimiento general del ORDENADOR PERSONAL. En general, según los expertos en TI, los ingenieros de Intel lograron resolver el problema que identificaron al comienzo del desarrollo de la tecnología: hacer que el procesador funcione de manera más eficiente. De hecho, como han demostrado las pruebas, al resolver muchas tareas que son prácticamente significativas para el usuario, el uso de Hyper-Threading ha permitido acelerar significativamente el trabajo.

Se puede notar que entre 4 esos microcircuitos que estaban equipados con módulos de soporte para la tecnología en consideración funcionaron mucho más eficientemente que las primeras modificaciones. Esto se expresó en gran medida en la capacidad de la PC para funcionar en modo multitarea real, cuando varios tipos diferentes de aplicaciones de windows, y es altamente indeseable que, debido al mayor consumo de recursos del sistema por parte de uno de ellos, disminuya la velocidad de los demás.

Solución simultánea de diferentes tareas.

Así, los procesadores con soporte para Hyper-Threading se adaptan mejor que los microcircuitos que no son compatibles con él, para iniciar simultáneamente, por ejemplo, un navegador, reproducir música y trabajar con documentos. Por supuesto, el usuario siente todas estas ventajas en la práctica solo si los componentes de software y hardware de la PC son suficientemente compatibles con este modo de operación.

Desarrollos similares

Hyper-Threading no es la única tecnología diseñada para mejorar el rendimiento de la PC a través de la computación de subprocesos múltiples. Ella tiene análogos.

Por ejemplo, los procesadores POWER5 lanzados por IBM también admiten subprocesos múltiples. Es decir, cada uno (en total, se instalan 2 elementos correspondientes en él) puede realizar tareas dentro de 2 subprocesos. Por lo tanto, el microcircuito procesa 4 flujos de cálculos simultáneamente.

AMD también tiene excelentes resultados en el área de conceptos de subprocesos múltiples. Entonces, se sabe que la arquitectura Bulldozer usa algoritmos similares a Hyper-Threading. Una característica de la solución de AMD es que cada uno de los subprocesos procesa bloques de procesador separados. Cuando el segundo nivel sigue siendo común. Conceptos similares se implementan en la arquitectura Bobcat desarrollada por AMD, que está adaptada para computadoras portátiles y PC pequeñas.

Por supuesto, los análogos directos del concepto de AMD, IBM e Intel pueden considerarse muy condicionales. Así como enfoques para el diseño de la arquitectura de los procesadores en general. Pero los principios implementados en las tecnologías respectivas pueden considerarse bastante similares, y los objetivos establecidos por los desarrolladores en términos de mejorar la eficiencia del funcionamiento de los microcircuitos son muy similares en esencia, si no idénticos.

Estos son los datos clave sobre la tecnología más interesante de Intel. Qué es, cómo habilitar Hyper-Threading o, por el contrario, desactivarlo, lo hemos determinado. El punto probablemente esté en el uso práctico de sus ventajas, que se pueden aprovechar asegurándose de que la PC en componentes de hardware y software sea compatible con la tecnología.

Hiper subprocesamiento (hiperprocesamiento, 'hiperproceso', hyper threading - rus.) - una tecnología desarrollada por la empresa Intel, que permite que el núcleo del procesador ejecute más flujos de datos que uno (generalmente dos). Dado que se encontró que un procesador convencional en la mayoría de las tareas no usa más de 70% de toda la potencia de cómputo, se decidió utilizar una tecnología que permite, cuando ciertas unidades de cómputo están inactivas, cargarlas de trabajo con otro hilo. Esto le permite aumentar el rendimiento del kernel. del 10 al 80% dependiendo de la tarea.

Ver cómo funciona Hyper-Threading .

Suponga que el procesador realiza cálculos simples y al mismo tiempo un bloque de instrucciones está inactivo y SIMD extensiones

El módulo de direccionamiento detecta esto y envía datos allí para su posterior cálculo. Si los datos son específicos, estos bloques los ejecutarán más lentamente, pero los datos no estarán inactivos. O los preprocesarán, para un procesamiento más rápido por parte del bloque apropiado. Esto proporciona una ganancia de rendimiento adicional.

Naturalmente, el hilo virtual no llega al núcleo completo, pero esto le permite lograr casi 100% eficiencia de la potencia informática, cargando casi todo el procesador con trabajo, sin dejarlo inactivo. Con todo esto, para implementar la tecnología HT solo aprox. 5% espacio adicional de troquel, y el rendimiento a veces se puede agregar a 50% . Esta área adicional incluye bloques adicionales de registros y predicción de ramificación, que calculan en flujo dónde se puede usar la potencia informática en un momento dado y envían datos desde un bloque de direcciones adicional allí.

Por primera vez, la tecnología apareció en los procesadores. pentium 4, pero no hubo un gran aumento en el rendimiento, ya que el procesador en sí no tenía un alto poder de cómputo. El crecimiento fue en el mejor de los casos 15-20% , y en muchas tareas el procesador funcionó mucho más lento que sin HT.

Desacelerar procesador debido a la tecnología Hiper subprocesamiento, sucede si:

  • Caché insuficiente por todo lo dado y se reinicia cíclicamente, ralentizando el procesador.
  • El predictor de bifurcación no puede procesar correctamente los datos. Se produce principalmente por falta de optimización para software específico o soporte del sistema operativo.
  • También puede ocurrir debido a dependencias de datos, cuando, por ejemplo, el primer subproceso requiere datos inmediatos del segundo, pero aún no están listos o están esperando en línea para otro subproceso. O los datos cíclicos necesitan ciertos bloques para un procesamiento rápido y se cargan con otros datos. Puede haber muchas variaciones de dependencia de datos.
  • Si el núcleo ya está muy cargado y el módulo de predicción de bifurcaciones "no lo suficientemente inteligente" aún envía datos que ralentizan el procesador (relevante para pentium 4).

Después pentium 4, Intel comenzó a usar la tecnología solo desde Núcleo i7 primera generación, saltándose la serie 2 .

La potencia de procesamiento de los procesadores se ha vuelto suficiente para la implementación completa de hyperthreading sin mucho daño, incluso para aplicaciones no optimizadas. Luego, Hiper subprocesamiento apareció en procesadores de clase media e incluso económicos y portátiles. Usado en todas las series núcleo yo (i3; i5; i7) y en procesadores móviles átomo(de nada). Curiosamente, los procesadores de doble núcleo con HT, recibe una mayor ganancia de rendimiento que quad-core al usar Hiper subprocesamiento, de pie sobre 75% cuatro nucleares de pleno derecho.

¿Dónde es útil HyperThreading?

Será útil para usar junto con programas profesionales, gráficos, analíticos, matemáticos y científicos, editores de video y audio, archivadores ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas &etc). Todos los programas que usan muchos cálculos, HT definitivamente será útil. Afortunadamente, en 90% casos, dichos programas están bien optimizados para su uso.

hiperprocesamiento indispensable para los sistemas de servidor. En realidad, para este nicho se desarrolló parcialmente. Gracias a HT, puede aumentar significativamente el rendimiento del procesador cuando hay una gran cantidad de tareas. Cada subproceso se descargará a la mitad, lo que tiene un efecto beneficioso sobre el direccionamiento de datos y la predicción de bifurcaciones.

Muchos juegos de computadora , se relacionan negativamente con la presencia Hiper subprocesamiento, lo que reduce el número de fotogramas por segundo. Esto se debe a la falta de optimización para Hiper subprocesamiento desde el lado del juego. Una optimización por parte del sistema operativo no siempre es suficiente, especialmente cuando se trabaja con datos inusuales, heterogéneos y complejos.

En las placas base que admiten HT, siempre puede deshabilitar la tecnología de hiperprocesamiento.

20 de enero de 2015 a las 19:43

Más sobre Hyper-Threading

  • pruebas de sistemas de TI,
  • Programación

Hubo un tiempo en que era necesario evaluar el rendimiento de la memoria en el contexto de la tecnología Hyper-threading. Llegamos a la conclusión de que su influencia no siempre es positiva. Cuando apareció la cantidad de tiempo libre, hubo un deseo de continuar la investigación y considerar los procesos en curso con una precisión de ciclos de máquina y bits, utilizando software desarrollo propio.

Plataforma investigada

El objeto de los experimentos - portátil asus N750JK con procesador Intel Core i7-4700HQ. La velocidad del reloj es de 2,4 GHz, impulsada por el modo Intel Turbo Boost hasta 3,4 GHz. 16 gigas instalados memoria de acceso aleatorio DDR3-1600 (PC3-12800) funcionando en modo de doble canal. Sistema operativo - Microsoft Windows 8.1 64 bits.

Fig.1 Configuración de la plataforma estudiada.

El procesador de la plataforma en estudio contiene 4 núcleos, que cuando se habilita la tecnología Hyper-Threading, brinda soporte de hardware para 8 hilos o procesadores lógicos. El firmware de la plataforma pasa esta información al sistema operativo a través de la tabla ACPI MADT (tabla de descripción de APIC múltiple). Dado que la plataforma contiene solo un controlador de RAM, no existe una SRAT (tabla de afinidad de recursos del sistema) que declare la proximidad de los núcleos del procesador a los controladores de memoria. Obviamente, la computadora portátil bajo investigación no es una plataforma NUMA, pero sistema operativo, a los efectos de la unificación, lo considera como un sistema NUMA con un dominio, como lo indica la línea NUMA Nodes = 1. El hecho fundamental para nuestros experimentos es que el caché de datos de primer nivel tiene un tamaño de 32 kilobytes para cada uno de los cuatro núcleos. Dos procesadores lógicos que comparten el mismo núcleo comparten las cachés L1 y L2.

operación investigada

Investigaremos la dependencia de la velocidad de lectura del bloque de datos con su tamaño. Para ello, elegiremos el método más productivo, es decir, la lectura de operandos de 256 bits mediante la instrucción VMOVAPD AVX. En los gráficos, el eje X muestra el tamaño del bloque y el eje Y muestra la velocidad de lectura. En la vecindad del punto X, correspondiente al tamaño de la memoria caché L1, esperamos ver un punto de inflexión, ya que el rendimiento debería caer después de que el bloque que se está procesando salga de la memoria caché. En nuestra prueba, en el caso de subprocesos múltiples, cada uno de los 16 subprocesos iniciados funciona con un rango de direcciones separado. Para controlar la tecnología Hyper-Threading dentro de una aplicación, cada subproceso utiliza la función API SetThreadAffinityMask, que establece una máscara en la que cada procesador lógico corresponde a un bit. Un solo valor del bit permite el uso del procesador especificado por el subproceso especificado, un valor cero lo prohíbe. Para 8 procesadores lógicos de la plataforma estudiada, la máscara 11111111b permite usar todos los procesadores (Hyper-Threading habilitado), la máscara 01010101b permite usar un procesador lógico en cada núcleo (Hyper-Threading deshabilitado).

En los gráficos se utilizan las siguientes abreviaturas:

MBPS (Megabytes por segundo)velocidad de lectura del bloque en megabytes por segundo;

CPI (relojes por instrucción)número de ciclos por instrucción;

TSC (contador de marca de tiempo)contador de ciclos del procesador.

Nota: Es posible que la velocidad del reloj del registro TSC no coincida con la velocidad del reloj del procesador cuando se ejecuta en modo Turbo Boost. Esto debe tenerse en cuenta a la hora de interpretar los resultados.

En el lado derecho de los gráficos se visualiza un volcado hexadecimal de las instrucciones que componen el cuerpo del ciclo de la operación objetivo realizada en cada uno de los hilos del programa, o sea, los primeros 128 bytes de este código.

Experiencia número 1. un hilo



Figura 2 Leyendo en un hilo

La velocidad máxima es de 213563 megabytes por segundo. El punto de inflexión se produce en un tamaño de bloque de unos 32 kilobytes.

Experiencia número 2. 16 subprocesos en 4 procesadores, Hyper-Threading deshabilitado



Fig. 3 Lectura en dieciséis hilos. El número de procesadores lógicos utilizados es de cuatro.

Hyper-threading está deshabilitado. La velocidad máxima es de 797598 megabytes por segundo. El punto de inflexión se produce en un tamaño de bloque de unos 32 kilobytes. Como era de esperar, en comparación con la lectura en un hilo, la velocidad aumentó aproximadamente 4 veces, en términos de la cantidad de núcleos de trabajo.

Experiencia número 3. 16 subprocesos en 8 procesadores, Hyper-Threading habilitado



Figura 4 Lectura en dieciséis hilos. El número de procesadores lógicos utilizados es de ocho.

Hyper-threading habilitado. La velocidad máxima de 800722 megabytes por segundo, como resultado de la inclusión de Hyper-Threading, casi no aumentó. El gran inconveniente es que el punto de inflexión se produce en un tamaño de bloque de unos 16 kilobytes. La habilitación de Hyper-Threading aumentó ligeramente la velocidad máxima, pero ahora la caída de la velocidad se produce a la mitad del tamaño del bloque, unos 16 kilobytes, por lo que la velocidad media se ha reducido significativamente. Esto no es sorprendente, cada núcleo tiene su propio caché L1, mientras que los procesadores lógicos del mismo núcleo lo comparten.

conclusiones

La operación investigada escala bastante bien en un procesador multinúcleo. Las razones son que cada uno de los núcleos contiene su propia memoria caché de primer y segundo nivel, el tamaño del bloque de destino es comparable al tamaño de la memoria caché y cada uno de los subprocesos funciona con su propio rango de direcciones. Con fines académicos, creamos tales condiciones en una prueba sintética, y nos dimos cuenta de que las aplicaciones reales suelen estar lejos de la optimización ideal. Pero la inclusión de Hyper-Threading, incluso en estas condiciones, tuvo un efecto negativo, con un ligero aumento en la velocidad máxima, hay una pérdida significativa en la velocidad de procesamiento de bloques, cuyo tamaño está en el rango de 16 a 32 kilobytes.

Escribimos que el uso de sistemas Xeon de un solo procesador no tiene sentido, ya que a un precio más alto su rendimiento será el mismo que el de un Pentium 4 de la misma frecuencia. Ahora, después de un examen más detenido, esta declaración probablemente tendrá que ser ligeramente modificada. La tecnología Hyper-Threading implementada en Intel Xeon con el núcleo Prestonia realmente funciona y produce un efecto bastante tangible. Aunque también hay muchas dudas a la hora de usarlo...

dar rendimiento

"Más rápido, aún más rápido...". La carrera por el rendimiento lleva más de un año y, a veces, incluso es difícil decir cuál de los componentes de la computadora acelera más rápido. Para esto, se están inventando más y más formas nuevas, y cuanto más, se invierte más mano de obra calificada y cerebros de alta calidad en este proceso similar a una avalancha.

Por supuesto, se necesita un aumento constante en el rendimiento. Como mínimo, es un negocio rentable, y siempre hay una buena forma de animar a los usuarios a actualizar la "CPU de superrendimiento" de ayer a la "aún más super..." de mañana. Por ejemplo, reconocimiento de voz simultáneo y traducción simultánea a otro idioma: ¿no es este el sueño de todos? O juegos inusualmente realistas de casi calidad de "cine" (que absorben completamente la atención y, a veces, conducen a cambios serios en la psique), ¿no es este el deseo de muchos jugadores, jóvenes y viejos?

Pero dejemos de lado los aspectos de marketing en este caso, centrándonos en los técnicos. Además, no todo es tan sombrío: hay tareas urgentes (aplicaciones de servidor, cálculos científicos, modelado, etc.), donde todo es más alto rendimiento, en particular las unidades centrales de procesamiento, es realmente necesario.

Entonces, ¿cuáles son las formas de aumentar su rendimiento?

Impulso de reloj. Se puede "adelgazar" aún más proceso tecnológico y aumentar la frecuencia. Pero, como saben, esto no es fácil y está plagado de todo tipo de efectos secundarios, como problemas con la disipación de calor.

Aumento de los recursos del procesador- por ejemplo, aumentando el volumen de la memoria caché, agregando nuevos bloques (Unidades de Ejecución). Todo esto implica un aumento en la cantidad de transistores, la complejidad del procesador, un aumento en el área del cristal y, en consecuencia, en el costo.

Además, los dos métodos anteriores dan, por regla general, de ninguna manera un aumento lineal de la productividad. Esto es bien conocido en el ejemplo de Pentium 4: los errores en la predicción de bifurcaciones y las interrupciones provocan un reinicio de una tubería larga, lo que afecta en gran medida el rendimiento general.

multiprocesamiento. La instalación de varias CPU y la distribución del trabajo entre ellas suele ser bastante eficiente. Pero este enfoque no es muy barato: cada procesador adicional aumenta el costo del sistema, y ​​una placa base dual es mucho más cara que una normal (sin mencionar las placas base con soporte para cuatro o más CPU). Además, no todas las aplicaciones se benefician lo suficiente del multiprocesamiento como para justificar el costo.

Además del multiprocesamiento "puro", existen varias opciones "intermedias" que le permiten acelerar la ejecución de la aplicación:

Multiprocesamiento de chips (CMP)- dos núcleos de procesador están ubicados físicamente en el mismo chip, utilizando un caché común o separado. Naturalmente, el tamaño del cristal resulta ser bastante grande, y esto no puede sino afectar el costo. Tenga en cuenta que varias de estas CPU "dobles" también pueden funcionar en un sistema multiprocesador.

Multiproceso de intervalo de tiempo. El procesador cambia entre hilos de programa a intervalos fijos. Los gastos generales a veces pueden ser bastante elevados, especialmente si hay un proceso en espera.

Multiproceso de evento de encendido. Cambio de tareas cuando hay pausas prolongadas, como "errores de caché" (cache misses), un gran número de los cuales son típicos de las aplicaciones de servidor. En este caso, se suspende un proceso que está esperando para cargar datos de una memoria relativamente lenta en la memoria caché, lo que libera recursos de la CPU para otros procesos. Sin embargo, Switch-on-Event Multithreading, como Time-Slice Multithreading, no siempre logra un uso óptimo de los recursos del procesador, en particular debido a errores en la predicción de saltos, dependencias de instrucciones, etc.

Subprocesos múltiples simultáneos. En este caso, los subprocesos del programa se ejecutan en el mismo procesador "simultáneamente", es decir, sin cambiar entre ellos. Los recursos de la CPU se distribuyen dinámicamente, según el principio "si no lo usas, dáselo a otra persona". Este es el enfoque que subyace Tecnologías Intel Hyper-Threading, al que nos dirigimos ahora.

Cómo funciona Hyper-Threading

Como saben, el "paradigma informático" actual implica informática multiproceso. Esto se aplica no solo a los servidores, donde este concepto existe inicialmente, sino también a las estaciones de trabajo y los sistemas de escritorio. Los subprocesos pueden pertenecer a las mismas o diferentes aplicaciones, pero casi siempre hay más subprocesos activos que uno (para ver esto, simplemente abra el Administrador de tareas en Windows 2000/XP y encienda la visualización del número de subprocesos). Al mismo tiempo, un procesador convencional solo puede ejecutar uno de los subprocesos a la vez y se ve obligado a cambiar constantemente entre ellos.

Por primera vez, la tecnología Hyper-Threading se implementó en el procesador Intel Xeon MP (Foster MP), en el que se estaba "ejecutando". Recuerde que Xeon MP, presentado oficialmente en IDF Spring 2002, utiliza un núcleo Pentium 4 Willamette, contiene 256 KB de caché L2 y 512 KB/1 MB de caché L3, y admite configuraciones de 4 procesadores. La compatibilidad con Hyper-Threading también está presente en el procesador Intel Xeon para estaciones de trabajo (núcleo Prestonia, caché L2 de 512 KB), que ingresó al mercado un poco antes que el Xeon MP. Nuestros lectores ya están familiarizados con las configuraciones de doble procesador en Intel Xeon, por lo que consideraremos las posibilidades de Hyper-Threading utilizando estas CPU como ejemplo, tanto teórica como prácticamente. Sea como fuere, el "simple" Xeon es más mundano y digerible que el Xeon MP en sistemas de 4 procesadores...

El principio de funcionamiento de Hyper-Threading se basa en el hecho de que en un momento dado solo se utiliza una parte de los recursos del procesador al ejecutar el código del programa. Los recursos no utilizados también se pueden cargar con trabajo; por ejemplo, se puede usar una aplicación más (u otro subproceso de la misma aplicación) para la ejecución en paralelo. En un procesador Intel Xeon físico, se forman dos procesadores lógicos (LP - Procesador lógico), que comparten los recursos informáticos de la CPU. El sistema operativo y las aplicaciones "ven" exactamente dos CPU y pueden distribuir el trabajo entre ellas, como en el caso de un sistema completo de dos procesadores.

Uno de los objetivos de implementar Hyper-Threading es permitir que solo un subproceso activo se ejecute a la misma velocidad que en una CPU normal. Para hacer esto, el procesador tiene dos modos principales de operación: Single-Task (ST) y Multi-Task (MT). En el modo ST, solo un procesador lógico está activo y utiliza los recursos disponibles sin dividir (modos ST0 y ST1); el otro LP es detenido por el comando HALT. Cuando aparece un segundo subproceso de programa, el procesador lógico inactivo se activa (a través de una interrupción) y la CPU física se pone en modo MT. Detener los LP no utilizados con el comando HALT es responsabilidad del sistema operativo, que es responsable en última instancia de la misma ejecución rápida de un subproceso que en el caso sin Hyper-Threading.

Para cada uno de los dos LP, se almacena el llamado Estado de arquitectura (AS), que incluye el estado de los registros de varios tipos: propósito general, control, APIC y servicio. Cada LP tiene su propio APIC (controlador de interrupciones) y un conjunto de registros, para su correcto funcionamiento con lo que se introduce el concepto de Register Alias ​​Table (RAT), que rastrea la correspondencia entre ocho registros de propósito general IA-32 y 128 registros físicos de la CPU (una RAT para cada LP).

Cuando se ejecutan dos subprocesos, se admiten dos conjuntos correspondientes de punteros de instrucción siguiente. La mayoría de las instrucciones se toman del Trace Cache (TC), donde se almacenan en forma decodificada, y los dos LP activos acceden al TC a su vez, cada reloj. Al mismo tiempo, cuando solo un LP está activo, obtiene acceso exclusivo al TC sin intercalar en los relojes. Del mismo modo, hay acceso a Microcode ROM. Los bloques ITLB (Instruction Translation Look-aside Buffer), que se activan en ausencia de las instrucciones necesarias en el caché de instrucciones, se duplican y entregan instrucciones cada uno para su propio hilo. El bloque de decodificación de instrucciones IA-32 Instruction Decode se comparte y, en el caso de que se requiera la decodificación de instrucciones para ambos flujos, los sirve uno por uno (nuevamente, cada reloj). Los bloques Uop Queue y Allocator se dividen en dos, con la mitad de los elementos asignados para cada LP. Los programadores de 5 piezas procesan colas de comandos decodificados (Uops) a pesar de pertenecer a LP0 / LP1 y comandos directos para ser ejecutados por las Unidades de Ejecución necesarias, dependiendo de la preparación para la ejecución del primero y la disponibilidad del segundo. Las cachés de todos los niveles (L1/L2 para Xeon y L3 para Xeon MP) se comparten completamente entre dos LP; sin embargo, para garantizar la integridad de los datos, las entradas en DTLB (Búfer de búsqueda de traducción de datos) se proporcionan con descriptores en forma de ID de procesador lógico.

Por lo tanto, las instrucciones de ambas CPU lógicas se pueden ejecutar simultáneamente en los recursos de un procesador físico, que se dividen en cuatro clases:

  • duplicado (Duplicado);
  • totalmente compartido (Fully Shared);
  • con descriptores de elementos (Entrada Etiquetada);
  • dividido dinámicamente (particionado) dependiendo del modo de operación de ST0/ST1 o MT.

Sin embargo, la mayoría de las aplicaciones que se aceleran en sistemas multiprocesador también se pueden acelerar en una CPU con Hyper-Threading habilitado sin modificaciones. Pero también hay problemas: por ejemplo, si un proceso está en un ciclo de espera, puede consumir todos los recursos de la CPU física, impidiendo que funcione el segundo LP. Por lo tanto, el rendimiento al usar Hyper-Threading a veces puede caer (hasta un 20%). Para evitar esto, Intel recomienda utilizar la instrucción PAUSE en lugar de bucles de espera vacíos (introducidos en IA-32 a partir de Pentium 4). También se está trabajando seriamente en la optimización automática y semiautomática del código durante la compilación; por ejemplo, los compiladores de la serie Intel OpenMP C ++ / Fortran Compilers () han logrado un progreso significativo en este sentido.

Otro objetivo de la primera implementación de Hyper-Threading, según Intel, era minimizar el crecimiento en la cantidad de transistores, el área de la matriz y el consumo de energía, al mismo tiempo que aumentaba significativamente el rendimiento. La primera parte de este compromiso ya se cumplió: la adición de la compatibilidad con Hyper-Threading al Xeon/Xeon MP aumentó el área de matriz y el consumo de energía en menos del 5 %. Lo que pasó con la segunda parte (actuación), aún tenemos que comprobarlo.

parte práctica

Por razones obvias, no probamos sistemas de servidor de 4 procesadores en Xeon MP con Hyper-Threading habilitado. En primer lugar, es bastante laborioso. Y en segundo lugar, si nos decidimos por tal hazaña, todavía es ahora, menos de un mes después del anuncio oficial, es absolutamente irreal obtener este costoso equipo. Por ello, se decidió ceñirnos al mismo sistema con dos Intel Xeon de 2,2 GHz, sobre los que se realizaron las primeras pruebas de estos procesadores (ver el enlace al principio del artículo). El sistema se basó en tarjeta madre Supermicro P4DC6+ ( conjunto de chips Intel i860), contenía 512 MB de RDRAM, una tarjeta de video en un chip GeForce3 (64 MB DDR, controladores Detonator 21.85), disco duro Occidente digital WD300BB y 6X DVD-ROM; Como sistema operativo se utilizó Windows 2000 Professional SP2.

Primero, algunas impresiones generales. Al instalar un Xeon con kernel Prestonia al inicio BIOS del sistema muestra un mensaje sobre la presencia de dos CPU; si se instalan dos procesadores, el usuario ve un mensaje sobre cuatro CPU. El sistema operativo normalmente reconoce "ambos procesadores", pero solo si se cumplen dos condiciones.

Primero, en la configuración de CMOS, el último Versiones de BIOS Las placas Supermicro P4DCxx introdujeron el elemento Habilitar Hyper-Threading, sin el cual el sistema operativo solo reconocerá los procesadores físicos. En segundo lugar, ACPI se usa para decirle al sistema operativo que hay procesadores lógicos adicionales. Por lo tanto, para habilitar Hyper-Threading, la opción ACPI debe estar habilitada en la configuración de CMOS, y HAL (Capa de abstracción de hardware) con compatibilidad con ACPI también debe estar instalada para el propio sistema operativo. Afortunadamente, en Windows 2000 cambiar HAL de PC estándar (o MPS Uni-/Multiprocessor PC) a ACPI Uni-/Multiprocessor PC es fácil, cambiando el "controlador de la computadora" en el administrador de dispositivos. Al mismo tiempo, para Windows XP, la única forma legal de migrar a ACPI HAL es reinstalar el sistema sobre la instalación existente.

Pero ahora todos los preparativos están hechos, y nuestro Windows 2000 Pro ya cree firmemente que funciona en un sistema de dos procesadores (aunque en realidad solo hay un procesador instalado). Ahora, como de costumbre, es el momento de decidir los objetivos de las pruebas. Entonces queremos:

  • Evaluar el impacto de Hyper-Threading en el rendimiento de aplicaciones de varias clases.
  • Compare este efecto con el efecto de instalar un segundo procesador.
  • Compruebe cómo se asignan "justamente" los recursos al procesador lógico activo cuando el segundo LP está inactivo.

Para evaluar el rendimiento, tomamos un conjunto de aplicaciones ya familiares para los lectores, que se utilizaron para probar los sistemas de estaciones de trabajo. Comencemos, quizás, desde el final y verifiquemos la "igualdad" de las CPU lógicas. Todo es extremadamente simple: primero ejecutamos pruebas en un procesador con Hyper-Threading deshabilitado, y luego repetimos el proceso con Hyper-Threading habilitado y usando solo una de las dos CPU lógicas (usando el Administrador de tareas). Dado que en este caso solo nos interesan los valores relativos, los resultados de todas las pruebas se reducen a la forma "cuanto más grande, mejor" y se normalizan (los indicadores de un sistema de un solo procesador sin Hyper-Threading se toman como una unidad).

Bueno, como puedes ver, las promesas de Intel se cumplen aquí: con solo un hilo activo, el rendimiento de cada uno de los dos LP es exactamente igual al rendimiento de una CPU física sin Hyper-Threading. El LP inactivo (tanto LP0 como LP1) se suspende, y los recursos compartidos, en la medida en que se puede juzgar por los resultados obtenidos, se transfieren completamente al uso del LP activo.

Por lo tanto, sacamos la primera conclusión: dos procesadores lógicos en realidad tienen los mismos derechos y habilitar Hyper-Threading "no interfiere" con el funcionamiento de un subproceso (que no es malo en sí mismo). Ahora veamos si esta inclusión "ayuda", y si es así, ¿dónde y cómo?

representación. Los resultados de cuatro pruebas en los paquetes de modelado 3D 3D Studio MAX 4.26, Lightwave 7b y A|W Maya 4.0.1 se combinan en un diagrama debido a su similitud.

En los cuatro casos (para Lightwave - dos escenas diferentes), la carga de la CPU en presencia de un procesador con Hyper-Threading deshabilitado se mantiene casi constantemente al 100%. Sin embargo, cuando Hyper-Threading está habilitado, el cálculo de las escenas se acelera (como resultado, incluso bromeamos sobre el uso de la CPU por encima del 100 %). En tres pruebas, podemos ver un aumento del rendimiento de Hyper-Threading del 14 al 18%; por un lado, no mucho en comparación con la segunda CPU, pero por otro lado, es bastante bueno, considerando el efecto "gratis". de este efecto. En una de las dos pruebas con Lightwave, la ganancia de rendimiento es casi nula (aparentemente, afecta la especificidad de esta aplicación llena de rarezas). Pero no hay ningún resultado negativo en ninguna parte, y un aumento notable en los otros tres casos es alentador. Y esto a pesar del hecho de que los procesos de renderizado en paralelo hacen un trabajo similar y, por supuesto, no pueden usar los recursos de la CPU física al mismo tiempo de la mejor manera.

Codificación de Photoshop y MP3. El códec GOGO-no-coda 2.39c es uno de los pocos que admite SMP y muestra un aumento del rendimiento del 34 % con el procesador dual. Al mismo tiempo, el efecto de Hyper-Threading en este caso es cero (no consideramos que una diferencia del 3% sea significativa). Pero en la prueba con Photoshop 6.0.1 (un script que consta de un gran conjunto de comandos y filtros), se puede ver una ralentización cuando se activa Hyper-Threading, aunque la segunda CPU física añade un 12% de rendimiento en este caso. Este, de hecho, es el primer caso en el que Hyper-Threading provoca una caída en el rendimiento...

OpenGL profesional. Hace tiempo que se sabe que SPEC ViewPerf y muchas otras aplicaciones OpenGL a menudo se ralentizan en los sistemas SMP.

OpenGL y doble procesador: por qué no son amigos

Muchas veces en los artículos llamamos la atención de los lectores sobre el hecho de que las plataformas de dos procesadores rara vez muestran una ventaja significativa sobre las de un solo procesador cuando se realizan pruebas profesionales de OpenGL. Y lo que es más, hay casos en los que la instalación de un segundo procesador, por el contrario, degrada el rendimiento del sistema al renderizar escenas 3D dinámicas.

Naturalmente, no solo notamos esta rareza. Algunos probadores simplemente eludieron este hecho en silencio, por ejemplo, al proporcionar resultados de comparación de SPEC ViewPerf solo para configuraciones de dos procesadores, evitando así las explicaciones "¿por qué un sistema de dos procesadores es más lento?". Otros hicieron todo tipo de suposiciones fantasiosas sobre la coherencia de la memoria caché, la necesidad de mantenerla, la sobrecarga resultante, etc. Y por alguna razón, nadie se sorprendió de que, por ejemplo, los procesadores estuvieran impacientes por controlar la coherencia con precisión en el renderizado OpenGL con ventana (en su esencia "computacional", no es muy diferente de cualquier otra tarea computacional).

De hecho, la explicación, en nuestra opinión, es mucho más sencilla. Como sabe, una aplicación puede ejecutarse más rápido en dos procesadores que en uno si:

  • hay más de dos o más subprocesos de programa que se ejecutan simultáneamente (subprocesos);
  • estos subprocesos no interfieren con la ejecución de los demás; por ejemplo, no compiten por un recurso compartido, como una unidad externa o una interfaz de red.

Ahora, echemos un vistazo simplificado a cómo se ve el renderizado OpenGL, realizado por dos subprocesos. Si una aplicación, "viendo" dos procesadores, crea dos subprocesos de renderizado OpenGL, entonces para cada uno de ellos, de acuerdo con las reglas de OpenGL, se crea su propio contexto gl. En consecuencia, cada subproceso representa su propio contexto gl. Pero el problema es que para la ventana en la que se muestra la imagen, solo un contexto gl puede estar activo en cualquier momento. En consecuencia, los subprocesos en este caso simplemente "a su vez" envían la imagen generada a la ventana, haciendo que su contexto sea alternativamente actual. No hace falta decir que este "intercalado de contexto" puede ser muy costoso en términos de gastos generales.

Además, como ejemplo, daremos gráficos del uso de dos CPU en varias aplicaciones que muestran escenas OpenGL. Todas las mediciones se realizaron sobre una plataforma con la siguiente configuración:

  • uno o dos Intel Xeon de 2,2 GHz (Hyper-Threading desactivado);
  • 512 MB de RAM;
  • Placa base Supermicro P4DC6+;
  • Tarjeta de video ASUS V8200 Deluxe (NVidia GeForce3, 64 MB DDR SDRAM, controladores Detonator 21.85);
  • Windows 2000 Profesional SP2;
  • modo de video 1280x1024x32 bpp, 85 Hz, Vsync deshabilitado.

Azul y rojo son gráficos de carga de CPU 0 y CPU 1, respectivamente. La línea del medio es el gráfico de uso de CPU final. Los tres gráficos corresponden a dos escenas de 3D Studio MAX 4.26 y parte de la prueba SPEC ViewPerf (AWadvs-04).


Uso de CPU: Animation 3D Studio MAX 4.26 - Anibal (con manipuladores).max


Uso de CPU: Animación 3D Studio MAX 4.26 - Rabbit.max


Uso de la CPU: SPEC ViewPerf 6.1.2 - AWadvs-04

El mismo patrón se repite en muchas otras aplicaciones que usan OpenGL. Dos procesadores no se molestan en trabajar en absoluto, y el uso total de la CPU está en el nivel de 50-60%. Al mismo tiempo, para un sistema de un solo procesador, en todos estos casos, el uso de la CPU se mantiene con confianza al nivel del 100 %.

Así que no sorprende que muchas aplicaciones OpenGL no sean mucho más rápidas en sistemas duales. Pues el hecho de que a veces incluso ralenticen tiene, en nuestra opinión, una explicación completamente lógica.

Podemos afirmar que con dos CPU lógicas, la caída del rendimiento es aún más significativa, lo cual es bastante comprensible: dos procesadores lógicos interfieren entre sí de la misma forma que dos físicos. Pero su rendimiento general, por supuesto, resulta ser menor en este caso, por lo que cuando Hyper-Threading está habilitado, disminuye incluso más que cuando se ejecutan dos CPU físicas. El resultado es predecible y la conclusión es simple: Hyper-Threading, como SMP "real", a veces está contraindicado para OpenGL.

aplicaciones CAD. La conclusión anterior está confirmada por los resultados de dos pruebas CAD: SPECapc para SolidEdge V10 y SPECapc para SolidWorks. El rendimiento gráfico de estas pruebas para Hyper-Threading es similar (aunque el resultado es ligeramente superior en el caso de un sistema SMP para SolidEdge V10). Pero los resultados de las pruebas CPU_Score que cargan el procesador te hacen pensar: 5-10 % de aumento de SMP y 14-19 % de ralentización de Hyper-Threading.

Pero al final del día, Intel reconoce honestamente el potencial de degradación del rendimiento con Hyper-Threading en algunos casos, por ejemplo, cuando se usan bucles de espera vacíos. Solo podemos suponer que esta es la razón (un examen detallado del código de SolidEdge y SolidWorks está más allá del alcance de este artículo). Después de todo, todos conocen el conservadurismo de los desarrolladores de aplicaciones CAD que prefieren una confiabilidad comprobada y no tienen prisa por reescribir el código teniendo en cuenta las nuevas tendencias en programación.

Resumiendo, o "Atención, la pregunta correcta"

Hyper-Threading funciona, no hay duda al respecto. Por supuesto, la tecnología no es universal: hay aplicaciones para las que Hyper-Threading "se vuelve malo", y en el caso de la expansión de esta tecnología, sería conveniente modificarlas. ¿Pero no le pasó lo mismo a MMX y SSE y le sigue pasando a SSE2?..

Sin embargo, esto plantea la cuestión de la aplicabilidad de esta tecnología a nuestras realidades. Inmediatamente descartaremos la opción de un sistema de un solo procesador en Xeon con Hyper-Threading (o lo consideraremos solo como temporal, antes de comprar un segundo procesador): incluso un aumento de rendimiento del 30% no justifica el precio en ningún caso. manera - entonces es mejor comprar un Pentium 4 normal. El número de CPU restantes es de dos o más.

Ahora imaginemos que estamos comprando un sistema Xeon de dos procesadores (por ejemplo, con Windows 2000/XP Professional). Hay dos CPU instaladas, Hyper-Threading está habilitado, el BIOS encuentra hasta cuatro procesadores lógicos, ahora despeguemos... Deténgase. Pero, ¿cuántos procesadores verá nuestro sistema operativo? Así es, dos. Solo dos, porque simplemente no está diseñado para un número mayor. Estos serán dos procesadores físicos, es decir, todo funcionará exactamente igual que con Hyper-Threading deshabilitado: no más lento (dos CPU lógicas "adicionales" simplemente se detendrán), pero no más rápido (verificado por pruebas adicionales, los resultados no se citan para su obviedad). Hmmm, no es muy divertido...

¿Lo que queda? Bueno, no instale Advanced Server o .NET Server en nuestra estación de trabajo, ¿de verdad? No, el sistema se instalará, reconocerá los cuatro procesadores lógicos y funcionará. Eso es solo el sistema operativo del servidor que se ve en la estación de trabajo, por decirlo suavemente, un poco extraño (sin mencionar los aspectos financieros). El único caso razonable es cuando nuestro sistema Xeon de dos procesadores actuará como un servidor (al menos algunos constructores no dudan en lanzar servidores en procesadores Xeon para estaciones de trabajo). Pero para las estaciones de trabajo duales con los sistemas operativos correspondientes, la aplicabilidad de Hyper-Threading sigue en duda. Intel ahora aboga activamente por la concesión de licencias de SO en función de la cantidad de CPU no lógicas, sino físicas. Las discusiones aún están en curso y, en general, mucho depende de si vemos un sistema operativo de estación de trabajo con soporte para cuatro procesadores.

Bueno, con los servidores, todo sale muy simple. Por ejemplo, un servidor avanzado de Windows 2000 instalado en un sistema Xeon de dos sockets con Hyper-Threading habilitado verá cuatro procesadores lógicos y funcionará sin problemas en él. Para evaluar lo que Hyper-Threading aporta a los sistemas de servidor, presentamos los resultados de Intel Microprocessor Software Labs para sistemas de dos procesadores en Xeon MP y varias aplicaciones de servidor de Microsoft.

Un aumento de rendimiento del 20-30% para un servidor de dos procesadores "gratis" es más que tentador (especialmente en comparación con la compra de un sistema "real" de 4 procesadores).

Entonces resulta que, por el momento, la aplicabilidad práctica de Hyper-Threading solo es posible en servidores. El problema con las estaciones de trabajo depende de la solución con la licencia del sistema operativo. Aunque una aplicación más de Hyper-Threading es bastante real, si los procesadores de escritorio obtienen soporte para esta tecnología. Por ejemplo (imaginemos), ¿por qué es malo un sistema Pentium 4 con soporte Hyper-Threading, en el que está instalado Windows 2000/XP Professional con soporte SMP? - desde servidores hasta sistemas de escritorio y móviles.