Hyper Threating

wolf_killer

hola wenas, me e comprado una placa base p4 q tiene Hyper threating. aguien m puede q es exactemente esto?? se q es algo de doble procesador oalgo asi, pero hay q activarlo o algo?? saludos!

oFF-sIDE

Veamos, tu tienes una sola CPU, y ésta solo puede atender a un proceso cada vez, expulsandolos si el siguiente es mas prioritario o dependiendo del algoritmo de reemplazo utilizado.

Pues el objetivo de el Hyper Threading viene a ser, tratar 2 procesos a la vez, ésto no duplica la velocidad, pero si mejora mucho el rendimiento, pues los procesos son atendidos mas rapidamente al contar con dos vias de ejecucion, aunq fisicamente sigues teniendo un solo procesador con un solo core.

Basicamente CREO q es algo asi.

ach3chin0

Multithread, Superthread e Hyperthread

Dada la demanda de una aclaracion de estos terminos, y la incorporacion de la circuiteria HT en los mVID de intel desde el 2.4c en adelante, os explico un poco como anda la situacion del mundo del multiproceso

*Os cuento caballeros:

Evidentemente merece la pena que vuestro micro lleven integrada la circuiteria HT. En un ppio solo estaba destinada al 3.06 Ghz, hace cosa de unos pocos meses empezaron a integrarlo en los mVID 2.4, 2.6, 2.8, 3.0 y finalmente en el 3.2Ghz.

Para entender que es el HyperThread teneis que entender claramente las diferencias entre SuperThread, MultiThread e HyperThread. Creo que la importancia es tal que voy a explayarme con el tema.

*Reflexion acerca de la multitarea: Aunque nos de la sensacion de que nuestro procesador esta haciendo varias tareas o "polls" simultaneos, esto NO es asi.

Asi que mientras pensamos que todos nuestros programas estan siendo ejecutados simultaneamente. Cada uno de nuestros programas "piensan" que estan monopolizando nuestra CPU y DRAM. El programa por lo tanto "cree" que tiene acceso total al espacio de direccionamiento de memoria (esto es acceso total al mapa de nuestra DRAM) y que la CPU esta constantemente ejecutando este programa sin ningun tipo de interrupcion. Por supuesto es totalmente FALSO.

El programa en cuestion, esta compartiendo con todas los demas programas residentes y tiene que "esperar" su turno para poder ser ejecutado por la CPU (recordad el post de IRQŽs donde os explicaba todo este contexto)

Como podeis ver usamos el termino "programa" de forma muy general, para dar una vision mas concreta vamos a diferenciar entre "Process", "Context" y "Thread".
Para expresarnos con propiedad, lo que nosotros llamamos programa es mas apropiado llamarlo PROCESO. Asociado a cada proceso hay un CONTEXTO, este contexto es la informacion detallada que describe el estado de ejecucion del proceso (Registros de CPU, Flags, etc...).

Los Procesos estan constituidos por "THREADS", vemos nuestro primer acercamiento al termino HyperThread. Al igual que para explicar el Overclock antes entendimos el termino Clock y para entender lo que es una Peticion de Interrupcion IRQ entendimos que era una interrupcion, tenemos que entender que es un THREAD para entender el HyperThread.

Como deciamos antes, los Threads constituyen los procesos. En cada proceso al menos hay 1 Thread, este es el denominado "Thread principal de Ejecucion".
Los procesos pueden estar formados de varios threads y cada uno de ellos tener un contexto local amen del contexto general que comparten todos los threads que forman un proceso.

Daros cuenta que al no poder la CPU ejecutar mas que 1 solo proceso a la vez, este tiene que ser ejecutado y posteriormente "flushed" o eliminado para hacer sitio a otro proceso con un alto nivel de preferencia. Cuando decimos que estamos ejecutandolo, lo que hacemos es cargar ese CONTEXTO (Flags, etc...). El proceso de ir cargando Contextos e ir ahorrando espacio para el proceso posterior se denomina "Context Switch".
Esa switch de threads lleva consigo penalizaciones de dtdos ciclos de reloj. y por lo tanto restan capacidad de proceso de threads por parte de nuestro microprocesador. Para aliviar estos problemas podemos añadir otra CPU a nuestra plataforma, esto es el SMP (Multiproceso Paralelo Simultaneo). Es decir equipos DUALES, todos conocemos los XEONES, ATHLON MP, etc....

En los tipicos sistemas DUALES, el Sistema Operativo, asigna 2 procesos para ejecutar al mismo tiempo, cada uno ejecutado claramente por una CPU. El resultado es que tenemos mas tiempo de ejecucion para unos procesos concretos a ejecutar y un menor tiempo de espera en terminos de flush.

En sistemas duales, ambos contexts de los procesos se alojan en cada micro independientemente, codigo y datos se flushean y dejan espacio a un nuevo proceso. Vemos por tanto que las posibilidades de procesado se duplican.

La razon de que estos sistemas NO sean MUY eficientes se remonta a la arquitectura del Front End de la propia CPU (Esto lo explicaremos mas adelante, ahora con que entendais lo que hemos explicado YA ES suficiente

***Esta es la forma de proceso de los XEON, ATHLON MP, etc....

Un paso adelante del multiproceso paralelo en el SuperTHREAD...

*SuperThread: Las CPUŽs denominadas asi son aquellas que pueden ejecutar mas de 1 Thread al mismo tiempo. Es decir su FRONT-end puede alojar chunks de varios procesos simultaneamente, es por tanto un paso adelante o como dicen los britanicos "One Step Beyond in Threading-Performance".

Al igual que explique en su momento las diferencias entre ancho de banda teorico y ancho de banda real. En la arquitectura SuperThread hay menos slots libres del Front END, es decir, el procesado en terminos de ejecucion es mas efectivo. Vemos que el SuperThreading nos permite un gran avance en relacion con el Multiproceso Paralelo Simultaneo.

Ejemplos de arquitecturas SuperThread es la CMA super-escalar.

http://tab.computer.org/tcca/HPCA-4/tsai.pdf

INTERESANTISIMO articulo del Superthread, algo denso desde luego.

Vayamos ahora con el HyperThread...
*HyperThread: Tb llamado MultiThread simultaneo, considerado por la mayoria como una clara evolucion del Superthreading. Va mas alla de la limitacion de que los slots del FRONT-end provengan del mismo thread. Para tener una vision mas clara de la perspectiva tenemos que entender que en las CPU Hyperthreaded, estas desde la perspectiva del Sistema Operativo las divide en 2 procesadores logicos, los threads se pueden "asignar" al igual que explique en el Multiproceso Paralelo Simultaneo, cada context a 1 CPU logica.

La TREMENDA ventaja del HyperThread es que permite ese uso de los slots logicos del FRONT-end de una manera mas eficiente, haciendo que el nucleo de ejecucion trabaje de forma mas eficiente. Asi que entended que ese FRONT-end esta siendo utilizado de forma OPTIMA. La circuiteria HT de los micro de INTEL, segun reza su datasheet ocupa un 3% del tamaño de su die. Como hablamos en su momento del diseño de microprocesadores, NO era buena idea implementar el clock generator en la die ya que era mejor idea dejar espacio a futura circuiteria mas avanzada.

http://www.intel.com/technology/hyperthread/index.htm

Excelente articulo del tema

Por tanto, la circuiteria HT solo se percibe en el "mundo real" en conmutacion de tareas,NO he notado ninguna mejoria en el rendimiento de juegos.

Evidentemente merece la pena pillar un micro HT, ya que estan a disposicion nuestra a un precio MUY interesante. El 2.8c HT esta rondando los 165 euros.

oFF-sIDE

Por lo q he entendido (q ha sido mas bien poco xD ) el HyperThread se basa en dividir internamente cada procesor y ejecutar en cada momento la parte de proceso mas preferente y dejar el resto del proceso en cola hasta q vuelva a tener preferencia... no?

Es q a veces cuesta seguir una jerga tan tecnica :P

jOK

#4

Básicamente se trata de llenar las etapas del pipeline que en un ciclo están vacias con un segundo thread, o dicho de otro modo, a toda esa parte del micro que no se usa para ejecutar el thread A se le asigna el thread B.

saludos

oFF-sIDE

Pero eso ya lo hace de normal no ?
Es el fundamento de la segmentacion de la CPU... no?

GR33N

tios pero de ke hablais, en serio no me entero de nada xD

gRaVe

Basicamente el HyperThreading es q tu procesador trabaje como si fueran dos.

MaLaK

Pues a mi me ha quedado claro.... . Y yo que creia que un HT rendia mucho mas en juegos que uno normalito.

jOK

#6

No, la segmentación es otra cosa. ;)
Lo que puede hacer una CPU (superescalar) normal es trabajar con más de una instrucción a la vez, pero trabajar con dos treads simultaniamente sólo puede hacerse con algún tipo de implementación SMT/SMP en el micro, como lo es el HyperTreading.

saludos

Usuarios habituales

  • jOK
  • MaLaK
  • gRaVe
  • GR33N
  • oFF-sIDE
  • ach3chin0
  • wolf_killer