Casa Arboles y arbustos Núcleos e hilos de microprocesadores modernos. Apéndice B. El esquema de interacción entre el motor y los sistemas.

Núcleos e hilos de microprocesadores modernos. Apéndice B. El esquema de interacción entre el motor y los sistemas.

  • tutorial

En este artículo, intentaré describir la terminología utilizada para describir sistemas capaces de ejecutar múltiples programas en paralelo, es decir, multinúcleo, multiprocesador, multihilo. Diferentes tipos de paralelismo en la CPU IA-32 aparecieron en diferentes momentos y en un orden algo inconsistente. Es fácil confundirse con todo esto, especialmente dado que los sistemas operativos tienen cuidado de ocultar los detalles de los programas de aplicación menos sofisticados.

El propósito del artículo es mostrar que con toda la variedad de configuraciones posibles de sistemas multiprocesador, multinúcleo y multihilo para programas que se ejecutan en ellos, se crean oportunidades tanto para la abstracción (ignorando las diferencias) como para tener en cuenta detalles ( la capacidad de aprender mediante programación la configuración).

Advertencia sobre signos ®, ™, en el artículo

El mío explica por qué los empleados de la empresa deben usar marcas de derechos de autor en las comunicaciones públicas. En este artículo, tuvieron que usarse con bastante frecuencia.

UPC

Por supuesto, el término más antiguo, más utilizado y ambiguo es "procesador".

En el mundo moderno, un procesador es lo que compramos en una bonita caja minorista o en un paquete OEM no tan bonito. Una entidad indivisible insertada en un zócalo de una placa base. Incluso si no hay un conector y no se puede quitar, es decir, si está bien soldado, este es un chip.

Los sistemas móviles (teléfonos, tabletas, computadoras portátiles) y la mayoría de las computadoras de escritorio tienen un solo procesador. Las estaciones de trabajo y los servidores a veces cuentan con dos o más procesadores en la misma placa base.

La compatibilidad con múltiples CPU en un solo sistema requiere numerosos cambios de diseño. Como mínimo, es necesario proporcionar su conexión física (proporcionar varios zócalos en la placa base), resolver los problemas de identificación del procesador (ver más adelante en este artículo, así como mi nota), coordinar los accesos a la memoria y entregar interrupciones (el controlador de interrupciones debe ser capaz de enrutar interrupciones a múltiples procesadores) y, por supuesto, soporte del sistema operativo. Desafortunadamente, no pude encontrar una mención documentada del momento en que se creó el primer sistema multiprocesador en procesadores Intel, sin embargo, Wikipedia afirma que Sequent Computer Systems los suministró ya en 1987 usando procesadores Intel 80386. El soporte generalizado para varios chips en un sistema está disponible a partir de con Intel® Pentium.

Si hay varios procesadores, cada uno de ellos tiene su propio conector en la placa. Al mismo tiempo, cada uno de ellos tiene copias completas e independientes de todos los recursos, como registros, dispositivos de ejecución, cachés. Comparten una memoria común: RAM. La memoria se puede conectar con ellos de varias maneras y no triviales, pero esta es una historia separada que está más allá del alcance de este artículo. Lo importante es que, en cualquier caso, los programas ejecutables deben crear la ilusión de una memoria compartida homogénea, accesible desde todos los procesadores del sistema.


¡Listos para despegar! Placa Intel® para equipos de sobremesa D5400XS

Centro

Históricamente, el multinúcleo en Intel IA-32 apareció más tarde que Intel® HyperThreading, pero le sigue en la jerarquía lógica.

Parecería que si hay más procesadores en el sistema, entonces su rendimiento es mayor (en tareas que pueden usar todos los recursos). Sin embargo, si el costo de las comunicaciones entre ellos es demasiado alto, toda la ganancia del paralelismo se pierde debido a los largos retrasos en la transferencia de datos comunes. Esto es exactamente lo que se observa en los sistemas multiprocesador: tanto física como lógicamente están muy lejos unos de otros. Para comunicarse de manera efectiva en tales condiciones, se deben inventar buses especializados como Intel® QuickPath Interconnect. El consumo de energía, el tamaño y el precio de la solución final, por supuesto, no disminuyen con todo esto. La alta integración de componentes debería venir al rescate: los circuitos que ejecutan partes de un programa paralelo deben arrastrarse más cerca uno del otro, preferiblemente en un chip. En otras palabras, un procesador debe organizar varios núcleos, idénticos entre sí en todo, pero trabajando de forma independiente.

Los primeros procesadores multinúcleo IA-32 de Intel se introdujeron en 2005. Desde entonces, la cantidad promedio de núcleos en servidores, computadoras de escritorio y ahora plataformas móviles ha ido en constante crecimiento.

A diferencia de dos procesadores de un solo núcleo en el mismo sistema, que solo comparten memoria, dos núcleos también pueden compartir cachés y otros recursos responsables de interactuar con la memoria. La mayoría de las veces, los cachés del primer nivel permanecen privados (cada núcleo tiene el suyo), mientras que los niveles segundo y tercero pueden compartirse o separarse. Esta organización del sistema reduce el retraso en la entrega de datos entre núcleos vecinos, especialmente si están trabajando en una tarea común.


Una micrografía de un procesador Intel de cuatro núcleos con nombre en código Nehalem. Se destacan los núcleos separados, un caché L3 compartido, así como enlaces QPI a otros procesadores y un controlador de memoria compartido.

hiperproceso

Hasta alrededor de 2002, la única forma de obtener un sistema IA-32 capaz de ejecutar dos o más programas en paralelo era usar específicamente sistemas multiprocesador. El Intel® Pentium® 4, así como la línea Xeon, cuyo nombre en código es Foster (Netburst), introdujeron una nueva tecnología - hyperthreading o hyperthreading - Intel® HyperThreading (en adelante HT).

No hay nada nuevo bajo el sol. HT es un caso especial de lo que se conoce en la literatura como subprocesos múltiples simultáneos (SMT). A diferencia de los núcleos "reales", que son copias completas e independientes, en el caso de HT, solo una parte de los nodos internos se duplican en un procesador, el principal responsable de almacenar el estado arquitectónico: los registros. Los nodos ejecutivos encargados de organizar y procesar los datos permanecen en singular, y en todo momento son utilizados como máximo por uno de los hilos. Al igual que los núcleos, los hiperprocesos comparten cachés entre ellos, pero a partir de qué nivel depende del sistema específico.

No intentaré explicar todas las ventajas y desventajas de los diseños SMT en general y los diseños HT en particular. El lector interesado puede encontrar una discusión bastante detallada de la tecnología en muchas fuentes y, por supuesto, en Wikipedia. Sin embargo, señalaré el siguiente punto importante, que explica las restricciones actuales sobre la cantidad de hiperprocesos en producción real.

Límites de subprocesos
¿En qué casos se justifica la presencia de multinúcleo "deshonesto" en forma de HT? Si un subproceso de la aplicación no puede cargar todos los nodos de ejecución dentro del kernel, entonces se pueden "tomar prestados" a otro subproceso. Esto es típico de las aplicaciones que tienen un "cuello de botella" no en los cálculos, sino en el acceso a los datos, es decir, a menudo generan errores de caché y tienen que esperar a que los datos se entreguen desde la memoria. Durante este tiempo, el núcleo sin HT se verá obligado a permanecer inactivo. La presencia de HT le permite cambiar rápidamente los nodos de ejecución libres a otro estado arquitectónico (porque solo está duplicado) y ejecutar sus instrucciones. Este es un caso especial de un truco llamado ocultación de latencia, cuando una operación larga, durante la cual los recursos útiles están inactivos, se enmascara con la ejecución paralela de otras tareas. Si la aplicación ya tiene un alto grado de utilización de los recursos del kernel, la presencia de hyperthreading no permitirá la aceleración; aquí se necesitan kernels "honestos".

Los escenarios típicos para aplicaciones de escritorio y servidor diseñadas para arquitecturas de máquinas de uso general tienen el potencial de paralelismo implementado mediante HT. Sin embargo, este potencial se "agota" rápidamente. Quizás por esta razón, en casi todos los procesadores IA-32, la cantidad de hiperprocesos de hardware no supera los dos. En escenarios típicos, la ganancia de usar tres o más hyperthreadings sería pequeña, pero la pérdida en el tamaño del troquel, el consumo de energía y el costo es significativa.

Otra situación se observa en tareas típicas realizadas en aceleradores de video. Por tanto, estas arquitecturas se caracterizan por el uso de tecnología SMT con un mayor número de hilos. Dado que los coprocesadores Intel® Xeon Phi (presentados en 2010) son ideológica y genealógicamente muy parecidos a las tarjetas de video, es posible que tengan cuatro Hyperthreading en cada núcleo: una configuración única para el IA-32.

procesador lógico

De los tres "niveles" de paralelismo descritos (procesadores, núcleos, hiperprocesamiento), algunos o incluso todos pueden faltar en un sistema en particular. Esto se ve afectado por la configuración del BIOS (multi-core y multi-threading se desactivan de forma independiente), la microarquitectura (por ejemplo, HT no estaba presente en Intel® Core™ Duo, pero se recuperó con el lanzamiento de Nehalem) y los eventos del sistema ( los servidores multiprocesador pueden apagar los procesadores que fallan en caso de mal funcionamiento y continuar "volando" en los restantes). ¿Cómo es visible este zoológico de múltiples capas de concurrencia para el sistema operativo y, en última instancia, para las aplicaciones?

Además, por conveniencia, denotamos el número de procesadores, núcleos y subprocesos en algún sistema por un triple ( X, y, z), donde X es el número de procesadores y es el número de núcleos en cada procesador, y z es el número de hiperprocesos en cada núcleo. De ahora en adelante, me referiré a este trío. topología- un término establecido que tiene poco que ver con la sección de matemáticas. Trabajo pags = xyz define el número de entidades nombradas procesadores lógicos sistemas Define el número total de contextos de procesos de aplicaciones independientes en un sistema de memoria compartida ejecutándose en paralelo que el sistema operativo debe considerar. Digo "forzado" porque no puede controlar el orden de ejecución de dos procesos que están en diferentes procesadores lógicos. Esto también se aplica a los hiperprocesos: aunque se ejecutan "secuencialmente" en el mismo núcleo, el orden específico lo dicta el hardware y los programas no lo ven ni lo controlan.

Muy a menudo, el sistema operativo oculta a las aplicaciones finales las características de la topología física del sistema en el que se ejecuta. Por ejemplo, las siguientes tres topologías: (2, 1, 1), (1, 2, 1) y (1, 1, 2) - el sistema operativo se representará como dos procesadores lógicos, aunque el primero de ellos tiene dos procesadores , el segundo tiene dos núcleos y el tercero tiene solo dos subprocesos.


El Administrador de tareas de Windows muestra 8 procesadores lógicos; pero, ¿cuánto es eso en procesadores, núcleos e hiperprocesos?


La parte superior de Linux muestra 4 procesadores lógicos.

Esto es bastante conveniente para los creadores de aplicaciones aplicadas: no tienen que lidiar con características de hardware que a menudo son insignificantes para ellos.

Definición de software de topología

Por supuesto, abstraer la topología en un solo número de procesadores lógicos en algunos casos crea motivos suficientes para la confusión y los malentendidos (en disputas acaloradas en Internet). Las aplicaciones informáticas que desean obtener el máximo rendimiento del hardware requieren un control detallado sobre dónde se colocarán sus subprocesos: más juntos en hiperprocesos adyacentes, o viceversa, más alejados en diferentes procesadores. La velocidad de comunicación entre procesadores lógicos dentro del mismo núcleo o procesador es mucho más rápida que la velocidad de transferencia de datos entre procesadores. La posibilidad de heterogeneidad en la organización de RAM también complica el panorama.

La información sobre la topología del sistema en su conjunto, así como la posición de cada procesador lógico en el IA-32, está disponible mediante la instrucción CPUID. Desde la llegada de los primeros sistemas multiprocesador, el esquema de identificación del procesador lógico se ha ampliado varias veces. A la fecha, partes del mismo están contenidas en las hojas 1, 4 y 11 del CPUID. Cuál de las hojas mirar se puede determinar a partir del siguiente diagrama de bloques, tomado del artículo:

No aburriré aquí con todos los detalles de las partes individuales de este algoritmo. Si hay interés, entonces la siguiente parte de este artículo puede dedicarse a esto. Remitiré al lector interesado a, en el que se analiza este tema con el mayor detalle posible. Aquí primero describiré brevemente qué es APIC y cómo se relaciona con la topología. A continuación, considere trabajar con la hoja 0xB (once en decimal), que actualmente es la última palabra en "apico-building".

IDENTIFICADOR DE APIC
El APIC local (controlador de interrupción programable avanzado) es un dispositivo (ahora parte del procesador) responsable de trabajar con las interrupciones que llegan a un procesador lógico específico. Cada procesador lógico tiene su propio APIC. Y cada uno de ellos en el sistema debe tener un valor de ID de APIC único. Este número lo utilizan los controladores de interrupción para el direccionamiento al entregar mensajes, y todos los demás (como el sistema operativo) para identificar los procesadores lógicos. La especificación para este controlador de interrupción ha evolucionado desde Intel 8259 PIC a través de Dual PIC, APIC y xAPIC hasta x2APIC.

Por el momento, el ancho del número almacenado en el APIC ID ha alcanzado los 32 bits completos, aunque en el pasado estaba limitado a 16, e incluso antes a solo 8 bits. Hoy en día, los restos de los viejos tiempos están dispersos por todo el CPUID, pero los 32 bits del ID de APIC se devuelven en CPUID.0xB.EDX. Cada procesador lógico que ejecuta de forma independiente la instrucción CPUID devolverá un valor diferente.

Aclaración de los lazos familiares.
El valor de APIC ID por sí mismo no dice nada sobre la topología. Para averiguar qué dos procesadores lógicos están dentro del mismo procesador físico (es decir, son "hermanos" de los hiperprocesos), cuáles dos están dentro del mismo procesador y cuáles son procesadores completamente diferentes, debe comparar sus valores de ID de APIC. Dependiendo del grado de relación, algunos de sus bits coincidirán. Esta información está contenida en las sublistas CPUID.0xB, que están codificadas con un operando en ECX. Cada uno de ellos describe la posición del campo de bits de uno de los niveles de topología en EAX (más precisamente, la cantidad de bits que se deben desplazar en el ID de APIC hacia la derecha para eliminar los niveles inferiores de la topología), así como como el tipo de este nivel - hyperthread, core o procesador - en ECX.

Los procesadores lógicos dentro del mismo núcleo coincidirán con todos los bits de ID de APIC, excepto los del campo SMT. Para procesadores lógicos que están en el mismo procesador, todos los bits excepto los campos Core y SMT. Dado que la cantidad de subhojas para CPUID.0xB puede crecer, este esquema admitirá la descripción de topologías con una mayor cantidad de niveles, si es necesario en el futuro. Además, será posible introducir niveles intermedios entre los existentes.

Una consecuencia importante de la organización de este esquema es que en el conjunto de todas las ID de APIC de todos los procesadores lógicos del sistema puede haber "agujeros", es decir, no irán secuencialmente. Por ejemplo, en un procesador multinúcleo con HT deshabilitado, todas las ID de APIC pueden resultar pares, ya que el bit menos significativo responsable de codificar el número de hiperproceso siempre será cero.

Tenga en cuenta que CPUID.0xB no es la única fuente de información sobre los procesadores lógicos disponibles para el sistema operativo. La lista de todos los procesadores disponibles, junto con sus valores de ID de APIC, está codificada en la tabla MADT ACPI.

Sistemas operativos y topología

Los sistemas operativos proporcionan información de topología de procesador lógico a las aplicaciones a través de sus propias interfaces.

En Linux, la información de topología se encuentra en el pseudoarchivo /proc/cpuinfo, así como en la salida del comando dmidecode. En el siguiente ejemplo, estoy filtrando el contenido de cpuinfo en un sistema de cuatro núcleos que no es HT, dejando solo las entradas relacionadas con la topología:

Texto oculto

[correo electrónico protegido]:~$ cat /proc/cpuinfo |grep "procesador\|físico\ id\|hermanos\|núcleo\|núcleos\|apicid" procesador: 0 id. físico: 0 hermanos: 4 id. de núcleo: 0 núcleos de cpu: 2 apicid: 0 apicid inicial: 0 procesador: 1 id física: 0 hermanos: 4 id de núcleo: 0 núcleos de cpu: 2 apicid: 1 apicid inicial: 1 procesador: 2 id física: 0 hermanos: 4 id de núcleo: 1 núcleos de cpu: 2 apicid: 2 apicid inicial: 2 procesador: 3 identificación física: 0 hermanos: 4 identificación de núcleo: 1 núcleos de cpu: 2 apicid: 3 apicid inicial: 3

En FreeBSD, la topología se informa a través del mecanismo sysctl en la variable kern.sched.topology_spec como XML:

Texto oculto

[correo electrónico protegido]:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 grupo HILOgrupo SMT 2, 3 grupo HILOgrupo SMT 4, 5 grupo HILOgrupo SMT 6, 7 grupo HILOgrupo SMT

En MS Windows 8, la información de topología se puede ver en el Administrador de tareas.

Habiendo tratado la teoría de subprocesos múltiples, consideremos un ejemplo práctico: Pentium 4. Ya en la etapa de desarrollo de este procesador, los ingenieros de Intel continuaron trabajando para aumentar su rendimiento sin realizar cambios en la interfaz del programa. Se consideraron cinco métodos simples:
1. Aumentar la frecuencia del reloj.
2. Colocar dos procesadores en un chip.
3. Introducción de nuevos bloques funcionales.
1. Extensión del transportador.
2. Uso de subprocesos múltiples.
La forma más obvia de mejorar el rendimiento es aumentar la velocidad del reloj sin cambiar otros parámetros. Como regla general, cada modelo de procesador posterior tiene una velocidad de reloj ligeramente más alta que la anterior. Desafortunadamente, con un aumento lineal en la velocidad del reloj, los desarrolladores se enfrentan a dos problemas: mayor consumo de energía (que es relevante para las computadoras portátiles y otros dispositivos informáticos que funcionan con baterías) y sobrecalentamiento (que requiere disipadores de calor más eficientes).
El segundo método, colocar dos procesadores en un chip, es relativamente simple, pero implica duplicar el área ocupada por el chip. Si cada procesador cuenta con su propia memoria caché, la cantidad de chips por oblea se reduce a la mitad, pero esto también significa el doble del costo de producción. Si ambos procesadores tienen una memoria caché compartida, se puede evitar un aumento significativo en el área ocupada, pero en este caso surge otro problema: la cantidad de memoria caché por procesador se reduce a la mitad y esto inevitablemente afecta el rendimiento. Además, mientras que las aplicaciones de servidor profesionales son capaces de utilizar completamente los recursos de múltiples procesadores, los programas de escritorio ordinarios tienen mucho menos paralelismo interno.
La introducción de nuevos bloques funcionales tampoco es difícil, pero es importante lograr un equilibrio aquí. ¿De qué sirve una docena de ALU si el chip no puede enviar instrucciones a la tubería a una velocidad que pueda cargar todas esas ALU?
Una canalización con un mayor número de etapas, capaz de dividir tareas en segmentos más pequeños y procesarlas en períodos cortos de tiempo, por un lado, mejora el rendimiento, por otro lado, aumenta las consecuencias negativas de la predicción errónea de transiciones, errores de caché, interrupciones y otros eventos que interrumpen el procesamiento normal de las instrucciones del curso en el procesador. Además, para aprovechar al máximo las capacidades de la tubería extendida, es necesario aumentar la frecuencia del reloj y esto, como sabemos, conduce a un mayor consumo de energía y disipación de calor.
Finalmente, puede implementar subprocesos múltiples. La ventaja de esta tecnología es que introduce un subproceso de software adicional que permite poner en uso los recursos de hardware que de otro modo estarían inactivos. Con base en los resultados de estudios experimentales, los desarrolladores de Intel encontraron que un aumento del 5 % en el área del chip al implementar subprocesos múltiples para muchas aplicaciones genera un aumento del rendimiento del 25 %. El primer procesador Intel de subprocesos múltiples fue el Xeon 2002. Posteriormente, a partir de 3,06 GHz, se introdujo el subprocesamiento múltiple en la línea Pentium 4. Intel llama a la implementación del subproceso múltiple en el Pentium 4 hyperthreading.
El principio fundamental de hyperthreading es la ejecución simultánea de dos subprocesos de programa (o procesos; el procesador no distingue entre procesos y subprocesos de programa). El sistema operativo trata al procesador Pentium 4 con hiperprocesos como un complejo de dos procesadores con memoria caché y memoria principal compartidas. El sistema operativo realiza la programación de cada subproceso de programa por separado. Por lo tanto, dos aplicaciones pueden estar ejecutándose al mismo tiempo. Por ejemplo, un programa de correo podría enviar o recibir mensajes en segundo plano mientras el usuario interactúa con una aplicación interactiva, es decir, el daemon y el programa del usuario se ejecutan al mismo tiempo, como si el sistema tuviera dos procesadores disponibles.
Los programas de aplicación capaces de ejecutarse en varios subprocesos pueden utilizar ambos "procesadores virtuales". Por ejemplo, los programas de edición de video generalmente permiten a los usuarios aplicar filtros a todos los cuadros. Dichos filtros corrigen el brillo, el contraste, el balance de color y otras propiedades de los marcos. En tal situación, el programa puede asignar un procesador virtual para procesar cuadros pares y otro para procesar cuadros impares. En este caso, los dos procesadores funcionarán de forma completamente independiente el uno del otro.
Dado que los subprocesos de software acceden a los mismos recursos de hardware, es necesaria la coordinación de estos subprocesos. En el contexto de hyperthreading, los desarrolladores de Intel han identificado cuatro estrategias útiles de administración de uso compartido de recursos: duplicación de recursos y uso compartido de recursos duro, de umbral y completo. Echemos un vistazo a estas estrategias.
Comencemos con la duplicación de recursos. Como saben, algunos recursos se duplican para organizar los flujos de programas. Por ejemplo, dado que cada subproceso de programa necesita un control individual, se necesita un segundo contador de programa. Además, es necesario introducir una segunda tabla para mapear registros arquitectónicos (EAX, EBX, etc.) a registros físicos; De manera similar, el controlador de interrupciones está duplicado, ya que el procesamiento de interrupciones para cada subproceso se realiza individualmente.
A esto le sigue una técnica para la partición dura de recursos (compartición de recursos particionados) entre subprocesos de programa. Por ejemplo, si el procesador tiene una cola entre dos etapas funcionales de la canalización, la mitad de las ranuras se pueden asignar al subproceso 1 y la otra mitad al subproceso 2. El uso compartido de recursos es fácil de implementar, no genera desequilibrio y asegura la completa independencia de los subprocesos del programa entre sí. Con la separación completa de todos los recursos, un procesador en realidad se convierte en dos. Por otro lado, puede haber una situación en la que un subproceso de programa no utilice recursos que podrían ser útiles para el segundo subproceso, pero para los cuales no tiene derechos de acceso. Como resultado, los recursos que de otro modo podrían utilizarse están inactivos.
Lo contrario de compartir duro es compartir todos los recursos. En este esquema, cualquier subproceso de programa puede acceder a los recursos deseados y se atienden en el orden en que se reciben las solicitudes de acceso. Consideremos una situación en la que un flujo rápido, que consiste principalmente en operaciones de suma y resta, coexiste con un flujo lento, que implementa operaciones de multiplicación y división. Si las instrucciones se llaman desde la memoria más rápido que las operaciones de multiplicación y división, la cantidad de instrucciones llamadas dentro del subproceso lento y en cola en la canalización aumentará gradualmente. En última instancia, estos comandos llenarán la cola y, como resultado, la transmisión rápida se detendrá debido a la falta de espacio. El uso compartido completo de recursos resuelve el problema del uso no óptimo de los recursos compartidos, pero crea un desequilibrio en su consumo: un subproceso puede ralentizar o detener a otro.
El esquema intermedio se implementa en el marco del umbral de recursos compartidos. De acuerdo con este esquema, cualquier subproceso de programa puede recibir dinámicamente una cierta cantidad (limitada) de recursos. Cuando se aplica a recursos replicados, este enfoque brinda flexibilidad sin la amenaza de que uno de los subprocesos del programa esté inactivo debido a la incapacidad de obtener recursos. Si, por ejemplo, se prohíbe que cada uno de los hilos ocupe más de 3/4 de la cola de comandos, el mayor consumo de recursos por parte del hilo lento no interferirá en la ejecución del rápido.
El modelo de hiperprocesamiento del Pentium 4 integra diferentes estrategias para compartir recursos. Así, se intenta resolver todos los problemas asociados a cada estrategia. La duplicación se implementa con respecto a los recursos a los que ambos subprocesos del programa necesitan acceder constantemente (en particular, con respecto al contador del programa, la tabla de mapeo de registros y el controlador de interrupciones). La duplicación de estos recursos aumenta el área del microcircuito solo en un 5%; estará de acuerdo en que es un precio bastante razonable para subprocesos múltiples. Los recursos que están disponibles en un volumen tal que es prácticamente imposible que sean capturados por un solo subproceso (por ejemplo, líneas de caché) se asignan dinámicamente. El acceso a los recursos que controlan el funcionamiento de la tubería (en particular, sus muchas colas) se divide: a cada subproceso del programa se le asigna la mitad de las ranuras. La canalización principal de la arquitectura Netburst implementada en el Pentium 4 se muestra en la Fig. 8,7; las áreas blancas y grises en esta ilustración representan el mecanismo de asignación de recursos entre los subprocesos de programa blancos y grises.
Como puede ver, todas las colas en esta ilustración están divididas: a cada subproceso del programa se le asigna la mitad de las ranuras. Ningún hilo puede restringir el trabajo del otro. El bloque de distribución y sustitución también se divide. Los recursos del programador se comparten dinámicamente, pero en función de algún valor de umbral; por lo tanto, ningún subproceso puede ocupar todas las ranuras de la cola. Para todas las demás etapas del transportador, hay una separación completa.
Sin embargo, multiproceso no es tan simple. Incluso esta técnica avanzada tiene sus inconvenientes. La partición dura de recursos no está asociada con costos serios, pero la partición dinámica, especialmente con respecto a los umbrales, requiere monitorear el consumo de recursos en tiempo de ejecución. Además, en algunos casos los programas funcionan mucho mejor sin multiproceso que con él. Supongamos, por ejemplo, que si hay dos hilos de programa, cada uno de ellos necesita 3/4 de la memoria caché para funcionar correctamente. Si se ejecutaran a su vez, cada uno funcionaría razonablemente bien con una pequeña cantidad de errores de caché (que se sabe que están asociados con una sobrecarga adicional). En el caso de la ejecución en paralelo, habría significativamente más errores de caché para cada uno, y el resultado final sería peor que sin subprocesos múltiples.
Para obtener más información sobre el mecanismo multiproceso de RepPit 4, consulte .

Introducción. La tecnología informática se está desarrollando a un ritmo acelerado. Los dispositivos informáticos son cada vez más potentes, pequeños y convenientes, pero recientemente aumentar el rendimiento de los dispositivos se ha convertido en un gran problema. En 1965, Gordon Moore (uno de los fundadores de Intel) llegó a la conclusión de que "la cantidad de transistores colocados en un chip de circuito integrado se duplica cada 24 meses".

Los primeros desarrollos en el campo de la creación de sistemas multiprocesador comenzaron en los años 70. Durante mucho tiempo, el rendimiento de los procesadores familiares de un solo núcleo aumentó aumentando la frecuencia del reloj (hasta el 80% del rendimiento estaba determinado solo por la frecuencia del reloj) con un aumento simultáneo en la cantidad de transistores en un chip. Las leyes fundamentales de la física detuvieron este proceso: los chips comenzaron a sobrecalentarse, el tecnológico comenzó a acercarse al tamaño de los átomos de silicio. Todos estos factores han llevado a:

  • las corrientes de fuga han aumentado, como resultado de lo cual han aumentado la disipación de calor y el consumo de energía.
  • El procesador se ha vuelto mucho "más rápido" que la memoria. El rendimiento se degradó debido a la latencia en el acceso a la RAM y la carga de datos en el caché.
  • existe algo así como un "cuello de botella de von Neumann". Significa la ineficiencia de la arquitectura del procesador al ejecutar un programa.

Los sistemas multiprocesador (como una de las formas de resolver el problema) no se utilizaron mucho, ya que requerían placas base multiprocesador costosas y difíciles de fabricar. En base a esto, la productividad aumentó de otras maneras. El concepto de subprocesos múltiples resultó ser efectivo: el procesamiento simultáneo de varios flujos de comandos.

Hyper-Threading Technology (HTT) o tecnología de superthreading que permite que un procesador ejecute múltiples subprocesos de programa en un solo núcleo. Fue HTT, según muchos expertos, el requisito previo para la creación de procesadores multinúcleo. La ejecución por parte del procesador de varios subprocesos de programa al mismo tiempo se denomina paralelismo a nivel de subprocesos (TLP -thread-level parallelism).

Para desbloquear el potencial de un procesador multinúcleo, el programa ejecutable debe utilizar todos los núcleos informáticos, lo que no siempre se puede lograr. Los viejos programas en serie que podían usar solo un núcleo ya no se ejecutarán más rápido en una nueva generación de procesadores, por lo que los programadores están cada vez más involucrados en el desarrollo de nuevos microprocesadores.

1. Conceptos generales

La arquitectura en un sentido amplio es una descripción de un sistema complejo que consta de muchos elementos.

En el proceso de desarrollo, las estructuras de semiconductores (microcircuitos) evolucionan, por lo tanto, los principios de construcción de procesadores, la cantidad de elementos incluidos en su composición, cómo se organiza su interacción, cambian constantemente. Por lo tanto, las CPU con los mismos principios básicos de estructura suelen denominarse procesadores de la misma arquitectura. Y estos principios en sí mismos se denominan arquitectura de procesador (o microarquitectura).

El microprocesador (o procesador) es el componente principal de una computadora. Procesa información, ejecuta programas y controla otros dispositivos en el sistema. La potencia del procesador determina qué tan rápido se ejecutarán los programas.

El núcleo es la base de cualquier microprocesador. Consiste en millones de transistores ubicados en un chip de silicio. El microprocesador se divide en celdas especiales, que se denominan registros de propósito general (RON). El trabajo del procesador en general consiste en extraer comandos y datos de la memoria en una secuencia determinada y ejecutarlos. Además, para aumentar la velocidad de la PC, el microprocesador está equipado con una memoria caché interna. La caché es la memoria interna del procesador que se utiliza como búfer (para proteger contra interrupciones en la comunicación con la RAM).

Los procesadores Intel utilizados en las PC compatibles con IBM tienen más de mil instrucciones y pertenecen a los procesadores con un conjunto de instrucciones ampliado: procesadores CISC (CISC - Computación de conjunto de instrucciones complejas).

1.1 Computación de alto rendimiento. Paralelismo

El ritmo de desarrollo de la tecnología informática es fácil de seguir: desde ENIAC (la primera computadora digital electrónica de uso general) con un rendimiento de varios miles de operaciones por segundo hasta la supercomputadora Tianhe-2 (1000 billones de operaciones de punto flotante por segundo). Esto significa que la velocidad de la computación ha aumentado un billón de veces en 60 años. La creación de sistemas informáticos de alto rendimiento es una de las tareas científicas y técnicas más difíciles. Si bien la velocidad de cómputo del hardware ha aumentado solo unos pocos millones de veces, la velocidad de cómputo general ha aumentado billones de veces. Este efecto se logra mediante el uso del paralelismo en todas las etapas de la computación. La computación paralela requiere la búsqueda de una distribución racional de la memoria, formas confiables de transferir información y coordinar procesos computacionales.

1.2 Multiprocesamiento simétrico

El multiprocesamiento simétrico (abreviado como SMP) o multiprocesamiento simétrico es una arquitectura especial de sistemas multiprocesador en la que varios procesadores tienen acceso a una memoria compartida. Esta es una arquitectura muy común, muy utilizada en los últimos tiempos.

Cuando se usa SMP, varios procesadores trabajan simultáneamente en una computadora, cada uno en su propia tarea. Un sistema SMP con un sistema operativo de alta calidad distribuye racionalmente las tareas entre los procesadores, asegurando una carga uniforme en cada uno de ellos. Sin embargo, existe un problema con la inversión de memoria, porque incluso los sistemas de un solo procesador requieren un tiempo relativamente largo para esto. Por lo tanto, el acceso a la RAM en SMP ocurre secuencialmente: primero un procesador, luego el segundo.

Debido a las características anteriores, los sistemas SMP se utilizan exclusivamente en el campo científico, industrial, comercial, muy raramente en oficinas de trabajo. Además del alto costo de la implementación del hardware, dichos sistemas requieren un software muy costoso y de alta calidad que proporcione la ejecución de tareas de subprocesos múltiples. Los programas comunes (juegos, editores de texto) no funcionarán de manera efectiva en los sistemas SMP, ya que no brindan este grado de paralelismo. Si adapta cualquier programa para un sistema SMP, se volverá extremadamente ineficiente para trabajar en sistemas de un solo procesador, lo que lleva a la necesidad de crear varias versiones del mismo programa para diferentes sistemas. La excepción es, por ejemplo, el programa ABLETON LIVE (diseñado para crear música y preparar Dj-sets), que tiene soporte para sistemas multiprocesador. Si ejecuta un programa normal en un sistema multiprocesador, aún se ejecutará un poco más rápido que en un solo procesador. Esto se debe a la llamada interrupción de hardware (detener el programa para que el núcleo lo procese), que se ejecuta en otro procesador libre.

Un sistema SMP (como cualquier otro sistema basado en computación paralela) impone mayores requisitos en un parámetro de memoria como el ancho de banda del bus de memoria. Esto a menudo limita la cantidad de procesadores en un sistema (los sistemas SMP modernos funcionan efectivamente con hasta 16 procesadores).

Dado que los procesadores tienen memoria compartida, se hace necesario utilizarla racionalmente y coordinar los datos. En un sistema multiprocesador, resulta que varios cachés funcionan para un recurso de memoria compartido. La coherencia de caché es una propiedad de caché que garantiza la integridad de los datos almacenados en cachés individuales para un recurso compartido. Este concepto es un caso especial del concepto de coherencia de memoria, donde varios núcleos tienen acceso a una memoria común (es omnipresente en los sistemas multinúcleo modernos). Si describimos estos conceptos en términos generales, la imagen será la siguiente: el mismo bloque de datos se puede cargar en diferentes cachés, donde los datos se procesan de manera diferente.

Si no se utilizan notificaciones de cambio de datos, se producirá un error. La coherencia de la caché está diseñada para resolver tales conflictos y mantener la coherencia de los datos en las cachés.

Los sistemas SMP son un subconjunto de la clasificación de sistemas informáticos MIMD (sistema de computación de múltiples instrucciones y múltiples datos) según Flynn (profesor de la Universidad de Stanford, cofundador de Palyn Associates). De acuerdo con esta clasificación, casi todas las variedades de sistemas paralelos se pueden atribuir a MIMD.

La división de los sistemas multiprocesador en tipos se produce sobre la base de la división según el principio del uso de la memoria. Este enfoque hizo posible distinguir los siguientes tipos importantes

sistemas multiprocesador - multiprocesadores (sistemas multiprocesador con memoria compartida compartida) y multicomputadoras (sistemas con memoria separada). Los datos compartidos utilizados en la computación paralela requieren sincronización. La tarea de sincronización de datos es uno de los problemas más importantes, y su solución en el desarrollo de multiprocesador y multinúcleo y, en consecuencia, el software necesario es una prioridad para ingenieros y programadores. Los datos se pueden compartir con la asignación de memoria física. Este enfoque se denomina acceso a memoria no uniforme (NUMA).

Estos sistemas incluyen:

  • Sistemas en los que solo se usa la caché del procesador individual para representar datos (arquitectura de memoria de solo caché).
  • Sistemas con coherencia de caché local para diferentes procesadores (NUMA coherente con caché).
  • Sistemas que brindan acceso compartido a la memoria del procesador individual sin implementar NUMA coherente sin caché a nivel de hardware.

La simplificación del problema de crear sistemas multiprocesador se logra mediante el uso de memoria compartida distribuida, pero este método conduce a un aumento notable en la complejidad de la programación paralela.

1.3 Subprocesos múltiples simultáneos

Con base en todas las desventajas anteriores del multiprocesamiento simétrico, tiene sentido desarrollar y desarrollar otras formas de mejorar el rendimiento. Si analiza el funcionamiento de cada transistor individual en el procesador, puede prestar atención a un hecho muy interesante: al realizar la mayoría de las operaciones computacionales, no están involucrados todos los componentes del procesador (según estudios recientes, aproximadamente el 30% de todos los transistores). Por lo tanto, si el procesador realiza, digamos, una operación aritmética simple, entonces la mayor parte del procesador está inactivo, por lo tanto, puede usarse para otros cálculos. Entonces, si el procesador está realizando actualmente operaciones reales, entonces se puede cargar una operación aritmética de enteros en la parte libre. Para aumentar la carga en el procesador, puede crear una ejecución especulativa (o avanzada) de operaciones, lo que requiere una gran complicación de la lógica del hardware del procesador. Si el programa predefine hilos (secuencias de comandos) que se pueden ejecutar de forma independiente entre sí, esto simplificará significativamente la tarea (este método se implementa fácilmente a nivel de hardware). Esta idea, que pertenece a Dean Tulsen (desarrollada por él en 1955 en la Universidad de Washington), se denomina subprocesos múltiples simultáneos. Más tarde fue desarrollado por Intel bajo el nombre de hyperthreading. Por ejemplo, el sistema operativo Windows percibe un procesador que ejecuta muchos subprocesos como varios procesadores. El uso de esta tecnología nuevamente requiere un nivel adecuado de software. El efecto máximo del uso de la tecnología de subprocesos múltiples es de alrededor del 30 %.

1.4 multinúcleo

La tecnología de subprocesos múltiples es la implementación de múltiples núcleos a nivel de software. Un mayor aumento en el rendimiento, como siempre, requiere cambios en el hardware del procesador. La complicación de sistemas y arquitecturas no siempre es efectiva. Hay una opinión opuesta: “¡todo lo ingenioso es simple!”. De hecho, para aumentar el rendimiento del procesador, no es necesario aumentar su frecuencia de reloj, complicar los componentes lógicos y de hardware, ya que basta con racionalizar y refinar la tecnología existente. Este método es muy rentable: no es necesario resolver el problema de aumentar la disipación de calor del procesador, el desarrollo de nuevos equipos costosos para la producción de microcircuitos. Este enfoque se implementó como parte de la tecnología multinúcleo: la implementación de varios núcleos informáticos en un solo chip. Si toma el procesador original y compara las ganancias de rendimiento de la implementación de múltiples mejoras de rendimiento, está claro que la tecnología multinúcleo es la mejor opción.

Si comparamos las arquitecturas de un multiprocesador simétrico y uno multinúcleo, resultarán casi idénticas. La memoria caché de los núcleos puede ser de varios niveles (local y compartida, y los datos de la RAM se pueden cargar directamente en la memoria caché de segundo nivel). Sobre la base de las ventajas consideradas de la arquitectura multinúcleo de los procesadores, los fabricantes se centran en ella. Esta tecnología resultó ser bastante económica de implementar y universal, lo que permitió llevarla a un amplio mercado. Además, esta arquitectura ha realizado sus propios ajustes a la ley de Moore: “la cantidad de núcleos de cómputo en el procesador se duplicará cada 18 meses”.

Si observa el mercado de la tecnología informática moderna, puede ver que dominan los dispositivos con procesadores de cuatro y ocho núcleos. Además, los fabricantes de procesadores dicen que pronto se verán en el mercado procesadores con cientos de núcleos de procesamiento. Como se ha dicho repetidamente antes, todo el potencial de una arquitectura multinúcleo se revela solo con software de alta calidad. Así, el ámbito de la producción de hardware y software informático está muy relacionado.

* siempre preguntas de actualidad, a qué debe prestar atención al elegir un procesador, para no cometer un error.

Nuestro objetivo en este artículo es describir todos los factores que afectan el rendimiento del procesador y otras características de rendimiento.

Probablemente no sea un secreto para nadie que el procesador es la unidad informática principal de una computadora. Incluso se podría decir: la parte más importante de la computadora.

Es él quien maneja casi todos los procesos y tareas que ocurren en la computadora.

Ya sea viendo videos, música, navegando por Internet, escribiendo y leyendo en la memoria, procesando 3D y video, juegos. Y muchos más.

Por lo tanto, para elegir C central PAGS procesador, debe tratarse con mucho cuidado. Puede resultar que decida instalar una tarjeta de video potente y un procesador que no corresponda a su nivel. En este caso, el procesador no revelará el potencial de la tarjeta de video, lo que ralentizará su trabajo. El procesador estará completamente cargado y literalmente hervirá, y la tarjeta de video esperará su turno, funcionando al 60-70% de sus capacidades.

Por eso, a la hora de elegir un ordenador equilibrado, no costos descuidar el procesador a favor de una poderosa tarjeta de video. La potencia del procesador debería ser suficiente para desbloquear el potencial de la tarjeta de video, de lo contrario, es solo dinero tirado.

Intel contra AMD

* perseguir para siempre

Corporación Intel, tiene enormes recursos humanos y finanzas casi inagotables. Muchas innovaciones en la industria de los semiconductores y las nuevas tecnologías provienen de esta empresa. Procesadores y desarrollos Intel, en promedio para 1-1,5 años por delante de los desarrollos de los ingenieros AMD. Pero como sabes, hay que pagar por la oportunidad de tener las tecnologías más modernas.

Política de precios del procesador Intel, está basado en numero de nucleos, cantidad de caché, pero también en "frescura" de la arquitectura, rendimiento por relojvatio,tecnología de proceso de chips. El valor de la memoria caché, las "sutilezas del proceso técnico" y otras características importantes del procesador se considerarán a continuación. Por la posesión de tecnologías tales como un multiplicador de frecuencia gratuito, también deberá pagar una cantidad adicional.

Compañía AMD, a diferencia de la empresa Intel, se esfuerza por la disponibilidad de sus procesadores para el consumidor final y por una política de precios competente.

Incluso se podría decir que AMD– « sello de la gente". En sus etiquetas de precio encontrarás lo que necesitas a un precio muy atractivo. Por lo general, un año después de la introducción de una nueva tecnología, la empresa Intel, un análogo de la tecnología de AMD. Si no persigue el máximo rendimiento y presta más atención al precio que a la presencia de tecnologías avanzadas, entonces los productos de la empresa AMD- solo para ti.

Política de precios AMD, se basa más en la cantidad de núcleos y muy poco en la cantidad de memoria caché, la presencia de mejoras arquitectónicas. En algunos casos, para tener la oportunidad de tener una memoria caché de tercer nivel, tendrá que pagar un poco más ( fenómeno tiene una memoria caché de nivel 3, Athlon contenido con solo limitado, 2 niveles). Pero a veces AMD mima a sus fans habilidad para desbloquear procesadores más baratos a los más caros. Puede desbloquear núcleos o memoria caché. Mejorar Athlon antes de fenómeno. Esto es posible debido a la arquitectura modular y la falta de algunos modelos más económicos, AMD simplemente desactiva algunos bloques en chip más caros (por software).

Núcleos– permanecen prácticamente sin cambios, solo difiere su número (válido para procesadores 2006-2011 años). Debido a la modularidad de sus procesadores, la empresa hace un excelente trabajo vendiendo chips desechados, que cuando se apagan algunos bloques, se convierten en un procesador de una línea menos productiva.

La compañía ha estado trabajando en una arquitectura completamente nueva durante muchos años bajo el nombre en clave Excavadora, pero en el momento del lanzamiento 2011 año, los nuevos procesadores no mostraron el mejor rendimiento. AMD Pecaron en los sistemas operativos que no entienden las características arquitectónicas de los núcleos duales y "otros subprocesos múltiples".

Según los representantes de la compañía, debe esperar las correcciones y parches especiales para sentir el rendimiento completo de estos procesadores. Sin embargo, al principio 2012 año, representantes de la compañía pospusieron el lanzamiento de una actualización para soportar la arquitectura Excavadora para la segunda mitad del año.

Frecuencia del procesador, número de núcleos, subprocesos múltiples.

A veces pentium 4 y ante el Frecuencia de la CPU, fue el principal factor de rendimiento del procesador al elegir un procesador.

Esto no es de extrañar, porque las arquitecturas de los procesadores fueron especialmente diseñadas para lograr altas frecuencias, esto se reflejó especialmente en el procesador. pentium 4 sobre arquitectura estallido de red. La alta frecuencia no fue efectiva con la tubería larga que se usó en la arquitectura. Incluso Athlon XP frecuencia 2GHz, en términos de rendimiento fue superior a pentium 4 C 2,4 GHz. Así que fue puro marketing. Después de este error, la empresa Intel Me di cuenta de mis errores y de vuelta al lado bueno Empecé a trabajar no en el componente de frecuencia, sino en el rendimiento por reloj. De la arquitectura estallido de red tuvo que negarse.

Qué nosotros da multi-núcleo?

Procesador de cuatro núcleos 2,4 GHz, en aplicaciones de subprocesos múltiples, teóricamente sería más o menos equivalente a un procesador de un solo núcleo con una frecuencia de 9,6 GHz o procesador de 2 núcleos con una frecuencia 4,8 GHz. Pero eso es solo En teoria. Prácticamente por otro lado, dos procesadores de doble núcleo en placas base de dos zócalos serán más rápidos que un procesador de 4 núcleos con la misma frecuencia operativa. Los límites de velocidad de los autobuses y las latencias de memoria se hacen sentir.

* sujeto a las mismas arquitecturas y la cantidad de memoria caché

Multinúcleo, permite ejecutar instrucciones y cálculos por partes. Por ejemplo, necesita realizar tres operaciones aritméticas. Los dos primeros se ejecutan en cada uno de los núcleos del procesador y los resultados se añaden a la memoria caché, donde la siguiente acción puede ser realizada con ellos por cualquiera de los núcleos libres. El sistema es muy flexible, pero sin la optimización adecuada puede que no funcione. Por lo tanto, la optimización de múltiples núcleos para la arquitectura de los procesadores en el entorno del sistema operativo es muy importante.

Aplicaciones que "aman" y utilizar subprocesamiento múltiple: archivadores, reproductores y codificadores de video, antivirus, programas desfragmentadores, editor gráfico, navegadores, Destello.

Además, los "fanáticos" de los subprocesos múltiples incluyen sistemas operativos como ventanas 7 Y Windows Vista, así como muchos sistema operativo, basado en el núcleo linux, que se ejecutan notablemente más rápido con un procesador multinúcleo.

Más juegos, a veces un procesador de 2 núcleos a alta frecuencia es suficiente. Ahora, sin embargo, hay más y más juegos "afilados" para subprocesos múltiples. Toma al menos estos salvadera juegos como GTA 4 o prototipo, en el que en un procesador de 2 núcleos con una frecuencia inferior 2,6 GHz- no te sientes cómodo, la velocidad de fotogramas cae por debajo de los 30 fotogramas por segundo. Aunque en este caso lo más probable es que la causa de este tipo de incidencias sea la "débil" optimización de los juegos, la falta de tiempo o las manos "no directas" de quienes trasladaban los juegos de consolas a ordenador personal.

Al comprar un nuevo procesador para juegos, ahora debe prestar atención a los procesadores con 4 o más núcleos. Pero aún así, no descuides los procesadores de 2 núcleos de la "categoría superior". En algunos juegos, estos procesadores a veces se sienten mejor que algunos de varios núcleos.

Caché del procesador.

- Esta es un área dedicada del chip del procesador, en la que se procesan y almacenan datos intermedios entre los núcleos del procesador, la RAM y otros buses.

Funciona a una velocidad de reloj muy alta (generalmente a la frecuencia del propio procesador), tiene un ancho de banda muy alto y los núcleos del procesador funcionan directamente con él ( L1).

Por ella escasez, el procesador puede estar inactivo en tareas que consumen mucho tiempo, esperando que se procesen nuevos datos en la memoria caché. También la memoria caché sirve para registros de datos repetidos con frecuencia que se pueden restaurar rápidamente si es necesario sin cálculos innecesarios, sin obligar al procesador a dedicar tiempo a ellos nuevamente.

El rendimiento también agrega el hecho de que si se combina la memoria caché, todos los núcleos pueden usar los datos de la misma por igual. Esto brinda oportunidades adicionales para la optimización de subprocesos múltiples.

Esta técnica ahora se utiliza para caché de nivel 3. para procesadores Intel había procesadores con un caché de nivel 2 combinado ( C2D E 7***,E8***), gracias a lo cual este método pareció aumentar el rendimiento multiproceso.

Al hacer overclocking del procesador, la memoria caché puede convertirse en un punto débil, evitando que el procesador overclockee más de su frecuencia máxima de funcionamiento sin errores. Sin embargo, la ventaja es que funcionará a la misma frecuencia que el procesador overclockeado.

En general, cuanto mayor sea la memoria caché, más rápido UPC. ¿En qué aplicaciones?

En todas las aplicaciones en las que se utilizan muchos datos de punto flotante, instrucciones y subprocesos, la memoria caché se utiliza activamente. La memoria caché es muy popular archivadores, codificadores de video, antivirus Y editor gráfico etc

Favorablemente a una gran cantidad de memoria caché son juegos. Especialmente estrategias, auto-sims, RPG, SandBox y todos los juegos donde hay muchos pequeños detalles, partículas, elementos geométricos, flujos de información y efectos físicos.

La memoria caché juega un papel muy importante en el desbloqueo del potencial de los sistemas con 2 o más tarjetas de video. Después de todo, una parte de la carga recae en la interacción de los núcleos del procesador entre ellos y para trabajar con las transmisiones de varios chips de video. Es en este caso que la organización de la memoria caché es importante, y la memoria caché del 3er nivel de un gran volumen es muy útil.

La memoria caché siempre está equipada con protección contra posibles errores ( ECC), una vez detectados, se corrigen. Esto es muy importante, porque un pequeño error en la memoria caché, durante el procesamiento, puede convertirse en un error gigante y continuo, a partir del cual todo el sistema se "recostará".

Tecnologías corporativas.

(hiperhilo, HT)–

por primera vez la tecnología se aplicó en procesadores pentium 4, pero no siempre funcionaba correctamente y muchas veces ralentizaba el procesador más que acelerarlo. La razón fue una canalización demasiado larga y un sistema de predicción de sucursales sin terminar. Aplicado por la empresa Intel, todavía no hay análogos de la tecnología, si no se considera un análogo, ¿entonces? lo que implementaron los ingenieros de la empresa AMD en arquitectura Excavadora.

El principio del sistema es tal que para cada núcleo físico, dos hilos de computación, en lugar de uno. Es decir, si tienes un procesador de 4 núcleos con HT (Núcleo i 7), entonces tienes subprocesos virtuales 8 .

La ganancia de rendimiento se logra debido al hecho de que los datos pueden ingresar a la tubería ya en el medio, y no necesariamente al principio. Si algunas unidades de procesador capaces de realizar esta acción están inactivas, reciben una tarea para ejecutar. El aumento de rendimiento no es el mismo que el de los núcleos físicos reales, pero es comparable (~ 50-75 %, según el tipo de aplicación). Es bastante raro que en algunas aplicaciones, HT afecta negativamente sobre el rendimiento Esto se debe a la mala optimización de las aplicaciones para esta tecnología, la incapacidad de entender que existen hilos "virtuales" y la falta de limitadores para cargar los hilos de manera uniforme.

TurboAumentar - una tecnología muy útil que aumenta la frecuencia de los núcleos de procesador más utilizados, según su nivel de carga de trabajo. Es muy útil cuando la aplicación no sabe cómo usar los 4 núcleos y carga solo uno o dos, mientras su frecuencia aumenta, lo que compensa parcialmente el rendimiento. Un análogo de esta tecnología en la empresa. AMD, es la tecnología núcleo turbo.

, 3 ¡ahora! instrucciones. Diseñado para acelerar el procesador en multimedia cálculos (video, música, gráficos 2D/3D, etc.), así como acelerar el trabajo de programas tales como archivadores, programas para trabajar con imágenes y video (con el apoyo de instrucciones de estos programas).

3¡ahora! - tecnología bastante antigua AMD, que contiene instrucciones adicionales para procesar contenido multimedia, además de SSE primera versión.

* Es decir, la posibilidad de procesamiento continuo de números reales de precisión simple.

La presencia de la última versión es una gran ventaja, el procesador comienza a realizar ciertas tareas de manera más eficiente con la optimización adecuada del software. Procesadores AMD tienen nombres similares, pero ligeramente diferentes.

* Ejemplo - SSE 4.1 (Intel) - SSE 4A (AMD).

Además, estos conjuntos de instrucciones no son idénticos. Estos son análogos, en los que hay ligeras diferencias.

fresco y tranquilo, paso rápido, CoolCore, Mejorado medio Estado (C1E) YT. D.

Estas tecnologías, a baja carga, reducen la frecuencia del procesador reduciendo el voltaje del multiplicador y del núcleo, inhabilitando parte de la caché, etc. Esto permite que el procesador se caliente mucho menos y consuma menos energía, haga menos ruido. Si se necesita energía, el procesador volverá a su estado normal en una fracción de segundo. En la configuración estándar biografías casi siempre habilitados, si se desea se pueden deshabilitar para reducir posibles "frisos" al cambiar en juegos 3D.

Algunas de estas tecnologías controlan la velocidad de los ventiladores en el sistema. Por ejemplo, si el procesador no necesita una disipación de calor mejorada y no está bajo carga, la velocidad del ventilador del procesador se reduce ( AMD Cool'n'Quiet, paso de velocidad de Intel).

Tecnología de virtualización de Intel Y Virtualización AMD.

Estas tecnologías de hardware permiten, con la ayuda de programas especiales, ejecutar varios sistemas operativos a la vez, sin una pérdida significativa de rendimiento. Además, se utiliza para el correcto funcionamiento de los servidores, ya que muchas veces tienen más de un SO instalado.

Ejecutar Desactivar Poco Yno ejecutar Poco una tecnología diseñada para proteger una computadora de ataques de virus y errores de software que pueden causar un bloqueo del sistema al desbordamiento de búfer.

Intel 64 , AMD 64 , EM 64 T - esta tecnología permite que el procesador funcione tanto en SO con arquitectura de 32 bits como en SO con arquitectura de 64 bits. Sistema 64 bits- en cuanto a prestaciones, para el usuario medio, se diferencia en que en este sistema se pueden utilizar más de 3,25 GB de RAM. En sistemas de 32 bits, use b sobre Más RAM no es posible debido a la cantidad limitada de memoria direccionable*.

La mayoría de las aplicaciones con una arquitectura de 32 bits se pueden ejecutar en un sistema con un sistema operativo de 64 bits.

* Qué hacer si allá por 1985, nadie podía siquiera pensar en cantidades tan gigantescas, para los estándares de esa época, de RAM.

Adicionalmente.

Unas pocas palabras sobre

Vale la pena prestar mucha atención a este punto. Cuanto más delgado es el proceso técnico, menos energía consume el procesador y, como resultado, se calienta menos. Y entre otras cosas, tiene un mayor margen de seguridad para el overclocking.

Cuanto más delgado sea el proceso técnico, más podrá "envolver" en el chip (y no solo) y aumentar las capacidades del procesador. La disipación de calor y el consumo de energía también disminuyen proporcionalmente, debido a menores pérdidas de corriente y una disminución en el área del núcleo. Puede ver una tendencia que con cada nueva generación de la misma arquitectura en una nueva tecnología de proceso, el consumo de energía también está creciendo, pero esto no es así. Es solo que los fabricantes se están moviendo hacia un rendimiento aún mayor y están superando la línea de disipación de calor de la generación anterior de procesadores debido a un aumento en la cantidad de transistores, que no es proporcional a una disminución en el proceso técnico.

integrado en el procesador.

Si no necesita un núcleo de video integrado, entonces no debe comprar un procesador con él. Solo obtendrá peor disipación de calor, calor adicional (no siempre), peor potencial de overclocking (no siempre) y dinero pagado en exceso.

Además, esos núcleos que están integrados en el procesador solo son adecuados para cargar el sistema operativo, navegar por Internet y ver videos (e incluso así no son de ninguna calidad).

Las tendencias del mercado aún están cambiando y la oportunidad de comprar un procesador productivo de Intel Sin un núcleo de video, se cae cada vez menos. La política de imposición forzada del núcleo de video incorporado, apareció con procesadores Intel con nombre en código Sandy Bridge, cuya principal innovación fue el núcleo integrado en el mismo proceso de fabricación. El núcleo de video se encuentra conjuntamente con procesador en un cristal, y no tan simple como en generaciones anteriores de procesadores Intel. Para aquellos que no lo usan, existen desventajas en forma de un sobrepago por el procesador, el desplazamiento de la fuente de calor con respecto al centro de la cubierta de distribución de calor. Sin embargo, también hay ventajas. Núcleo de video deshabilitado, se puede usar para una codificación de video muy rápida usando tecnología Sincronización rápida junto con un software especial que admite esta tecnología. En el futuro, Intel promete expandir los horizontes del uso del núcleo de video incorporado para computación paralela.

Zócalos para procesadores. Vida útil de la plataforma.


Intel lleva una política áspera para sus plataformas. La vida útil de cada uno (la fecha de inicio y finalización de las ventas de los procesadores) generalmente no supera los 1,5 a 2 años. Además, la empresa cuenta con varias plataformas de desarrollo en paralelo.

Compañía AMD, tiene la política de compatibilidad opuesta. A su plataforma soy 3, todos los procesadores de futuras generaciones que soporten DDR3. Incluso cuando la plataforma va a AM3+ y más tarde, ya sea nuevos procesadores bajo soy 3, o los nuevos procesadores serán compatibles con las placas base antiguas, y será posible realizar una actualización sin dolor para la billetera cambiando solo el procesador (sin cambiar la placa base, RAM, etc.) y flasheando la placa base. Los únicos matices de incompatibilidad pueden ser al cambiar el tipo, ya que se requerirá un controlador de memoria diferente integrado en el procesador. Por lo tanto, la compatibilidad es limitada y no es compatible con todas las placas base. Pero en general, para un usuario económico o aquellos que no están acostumbrados a cambiar la plataforma por completo cada 2 años -la elección del fabricante del procesador es comprensible- esto AMD.

Refrigeración de la CPU.

Viene con procesador de serie CAJA-nuevo enfriador que simplemente hará el trabajo. Es una pieza de aluminio con un área de dispersión no muy alta. Los enfriadores eficientes basados ​​en tubos de calor y placas unidas a ellos están diseñados para una disipación de calor altamente eficiente. Si no desea escuchar un ruido excesivo del ventilador, entonces debería considerar comprar un enfriador de tubo de calor alternativo más eficiente o un sistema de enfriamiento líquido de circuito cerrado o abierto. Dichos sistemas de refrigeración permitirán además el overclocking del procesador.

Conclusión.

Se han considerado todos los aspectos importantes que afectan el rendimiento y el rendimiento del procesador. Recapitulemos lo que hay que tener en cuenta:

  • Seleccionar fabricante
  • arquitectura del procesador
  • Proceso tecnológico
  • Frecuencia de la CPU
  • Número de núcleos de procesador
  • Tamaño y tipo de caché del procesador
  • Soporte para tecnologías e instrucciones.
  • Refrigeración de calidad

Esperamos que este material lo ayude a comprender y decidir la elección de un procesador que cumpla con sus expectativas.

Habiendo tratado la teoría de subprocesos múltiples, consideremos un ejemplo práctico: Pentium 4. Ya en la etapa de desarrollo de este procesador, los ingenieros de Intel continuaron trabajando para aumentar su rendimiento sin realizar cambios en la interfaz del programa. Se consideraron cinco métodos simples:

Aumentar la frecuencia del reloj;

Colocando dos procesadores en un chip;

Introducción de nuevos bloques funcionales;

extensión del transportador;

Uso de subprocesos múltiples.

La forma más obvia de mejorar el rendimiento es aumentar la velocidad del reloj sin cambiar otros parámetros. Como regla general, cada modelo de procesador posterior tiene una velocidad de reloj ligeramente más alta que la anterior. Desafortunadamente, con un aumento lineal en la velocidad del reloj, los desarrolladores se enfrentan a dos problemas: mayor consumo de energía (que es relevante para las computadoras portátiles y otros dispositivos informáticos que funcionan con baterías) y sobrecalentamiento (que requiere disipadores de calor más eficientes).

El segundo método, colocar dos procesadores en un chip, es relativamente simple, pero implica duplicar el área ocupada por el chip. Si cada procesador cuenta con su propia memoria caché, la cantidad de chips por oblea se reduce a la mitad, pero esto también significa el doble del costo de producción. Si ambos procesadores tienen una memoria caché compartida, se puede evitar un aumento significativo en el área ocupada, pero en este caso surge otro problema: la cantidad de memoria caché por procesador se reduce a la mitad y esto inevitablemente afecta el rendimiento. Además, mientras que las aplicaciones de servidor profesionales son capaces de utilizar completamente los recursos de múltiples procesadores, los programas de escritorio ordinarios tienen mucho menos paralelismo interno.

La introducción de nuevos bloques funcionales tampoco es difícil, pero es importante lograr un equilibrio aquí. ¿De qué sirve una docena de ALU si el chip no puede enviar instrucciones a la tubería a una velocidad que pueda cargar todas esas ALU?

Una canalización con un mayor número de etapas, capaz de dividir tareas en segmentos más pequeños y procesarlas en períodos cortos de tiempo, por un lado, mejora el rendimiento, por otro lado, aumenta las consecuencias negativas de la predicción errónea de transiciones, errores de caché, interrupciones y otros eventos que interrumpen el procesamiento normal de las instrucciones del curso en el procesador. Además, para aprovechar al máximo las capacidades de la tubería extendida, es necesario aumentar la frecuencia del reloj y esto, como sabemos, conduce a un mayor consumo de energía y disipación de calor.

Finalmente, puede implementar subprocesos múltiples. La ventaja de esta tecnología es que introduce un subproceso de software adicional que permite poner en uso los recursos de hardware que de otro modo estarían inactivos. Con base en los resultados de estudios experimentales, los desarrolladores de Intel encontraron que un aumento del 5 % en el área del chip al implementar subprocesos múltiples para muchas aplicaciones genera un aumento del rendimiento del 25 %. Xeon fue el primer procesador Intel en admitir subprocesos múltiples en 2002. Posteriormente, a partir de 3,06 GHz, se introdujo el subprocesamiento múltiple en la línea Pentium 4. Intel llama a la implementación del subproceso múltiple en el Pentium 4 hyperthreading.

Nuevo en el sitio

>

Más popular