Muy buen post, me ha despejado un par de dudas, pero me ha creado un par.
¿Tienes algún enlace para ver más en profundidad en que consiste el hyperthreading y lo de los núcleos pareados? Me ha entrado la curiosidad...
Si hubiera encontrado algún enlace medianamente legible para la gente común (no especializados en arquitectura de computadores), lo habría puesto. Buscaré por ahí, porque ese es uno de los puntos que me parecían fundamentales del debate, intercambiar conocimientos para comprenderlo mejor.
Disculpad si digo algo incorrecto.
Para comprender el Hyperthreading primero es necesario conocer la decodificación de instrucciones, la segmentación de las mismas, las etapas que tiene la segmentación, el poder empezar a ejecutar una segunda instrucción antes de que la primera haya acabado de ejecutarse, la predicción que hace el procesador para intentar optimizar el procesamiento segmentado de múltiples instrucciones en la CPU, y ya llegamos a los errores de predicción, que implican anular la instrucción o segmentos de las mismas en ejecución y volver a cargar otra.
Gracias al hyperthreading, ya se encuentra precargada, en un segundo hilo del mismo procesador, otra instrucción o segmento, a la espera de que ocurra un fallo de predicción, y así no se pierdan tiempos muertos, con lo que el rendimiento mejora. El concepto de Hyperthreading es relativamente sencillo de implantar en la fabricación de chips (los i5 son i7 a los que se les ha deshabilitado el hyperthreading) sin aumentar mucho el coste y es de una simpleza conceptual y de una eficiencia tremenda, para algunos procesos.
Y ya podemos rizar el rizo con el multiprocesamiento y la programación paralela.
Una gráfica muy sencillita sobre el hyperthreading:
Pongo 3 artículos que no están mal (o eso creo xD):
Cual es la relación entre la velocidad del reloj de los procesadores y el rendimiento
Segmentacion - Generalidades - Parte I
Segmentacion - Generalidades - Parte II
Los AMD no usan hyperthreading. No se si es por tema de que intel lo tiene patentado, o por que no han conseguido implementarlo eficazmente o qué.
Como no pueden tener el doble de hilos con el mismo número de núcleos, lo que hacen es diseñar procesadores de más núcleos que intel para aumentar su rendimiento. Pero claro, eso duplicaría el coste de los procesadores, por lo que para poder mantener buenos precios, lo que se les ocurrió fue unirlos dos a dos y hacer que compartieran una serie de recursos, para tener un resultado parecido al intel con el hyperthreading, puesto que al compartir recursos también hay esperas, y al duplicar ciertos elementos en dos núcleos, también ganan rendimiento.
Aquí puedes ver un FX-83xx con sus cuatro módulos, con dos núcleos en cada módulo y con la caché L2 compartida para los dos procesadores de cada núcleo.
Recordar también que un FX-6xxx es un FX-8xxx al que se le ha deshabilitado uno de los 4 módulos.