Los detractores del presidente Johnson, decían que no podía hacer
dos cosas a la vez, por ejemplo, andar y mascar chicle. Esta
indudable maldad política, es un buen ejemplo para explicar lo que
supone el Hyper-Threading, una nueva palabra que nos encontraremos
con frecuencia en el futuro.
na capacidad de los procesadores actuales es la multitarea. Es la capacidad de repartir ciclos sucesivos de trabajo del procesador entre varias tareas o hilos, (thread). En nuestro ejemplo, el procesador intercalaría un paso con una mascada de chicle, de forma que si se hace el cambio con la suficiente rapidez, parece que la máquina es capaz de andar y mascar chicle a la vez. Por ejemplo el ordenador parece imprimir, navegar por Internet y utilizarlo como máquina de escribir, (procesadores de textos). simultáneamente, aunque en realidad lo hagan consecutivamente, de manera que si cada una de esas tareas se realizara sola, iría mucho más rápida.
La multitarea aprovecha sobre todo los tiempos muertos en los
procesos para dar el aspecto de efectuar muchos procesos a la vez.
Por ejemplo, el procesador llena el área de almacenaje temporal,
(buffer), de la impresora y paraliza el proceso de impresión hasta
que la impresora, mucho más lenta, escribe el contenido del buffer,
por otra parte el programa Word esperar a que tecleemos un carácter
o un mandato antes de continuar su proceso. Estas paradas, muy
largas desde la perspectiva del procesador, se aprovechan para
hacer avanzar mas rápido el resto de las tareas. Hay que tener en
cuenta que hoy un procesador ronda los tres kilohercios de
velocidad. O sea, que si se tardamos una centésima de segundo en
decidir hacia donde damos el siguiente paso, podemos mascar treinta
veces el chicle.
Hyper-Threading
El
Hyper-Threading aprovecha la arquitectura de los procesadores
de forma diferente a como hasta ahora se hacía. El procesador está
formado por varios sistemas especializados, que se pueden diseñar
independientes entre sí con relativo poco esfuerzo, de forma que a
los efectos el procesador se desdobla en distintos componentes,
como la unidad de cálculo aritmético, la unidad de cálculo con coma
flotante, la unidad de lectura/escritura de memoria, etc.. Si
además le dotamos de suficientes herramientas de control, nada
impide que en un mismo ciclo de reloj, una unidad procese un paso
elemental de una tarea o hilo, (tread) mientras que otro paso de
otra tarea se procesa en otra usidad diferente. En pocas palabras,
podemos a la vez, con las mandíbulas mascar, mientras con las
piernas andar, (si el cerebro nos da para ello). El sistema actúa
como si cada tarea corriera en diferentes procesadores.
Para poder hacer esto tiene que ocurrir que ambas tareas utilicen
partes del procesador independientes, de intentar utilizar ambas la
misma parte, el procesador va dando paso simultáneamente a una y a
otra como en la multitarea. Con ello se recorta el tiempo de
proceso (tiempo de CPU) en una media del 33%. El hyper-threading es
independiente de las aplicaciones, por tanto actúa perfectamente
sobre aplicaciones antiguas, sólo se necesita un procesador con
esta característica, como últimos Pentium IV, una placa base con un
chipset adecuado, como los últimos de Intel, un sistema operativo
que aproveche esta opción, Linux, Windows 2000 o XP, pero no el
Windows 95, y por último que se autorice desde la BIOS, donde se
puede mandar inhibir esta opción.
¿ Por qué se lo vamos a prohibir? Porque en ciertos usos, el
procedimiento Hyper-Threading, no sólo no mejora el resultado
final, sino que incluso lo ralentiza. Todo funciona perfectamente
si las aplicaciones hacen un uso equilibradamente de los distintos
componentes del procesador, pero si ambas tareas utilizan mucho el
mismo componente, las colisiones entre ambas tareas por el uso del
componente se multiplican más de lo previsto y la fracción de
tiempo que el procesador necesita para resolver a quien le concede
el paso, anula la ventaja que produce el que el procesamiento se
haga ocasionalmente en paralelo. Por ello siempre se puede inhibir
en la BIOS esta capacidad.
En nuestro uso habitual no notaremos mucho la ventaja del
Hyper-Threading; ciertamente un procesador a tres megahercios
actúa, (como media), como si tuviera cuatro, pero todos tenemos la
experiencia de cambiar nuestro viejo ordenador por otro, que no
solo supera en un 33%, sino que multiplica por 10 la velocidad de
la vieja CPU, sin que los procesos aceleren de forma espectacular.
El tiempo ahorrado de CPU es en cualquier caso pequeño comparado
con el tiempo que se pierde en accesos a elementos internos como
drivers, memorias, cachés, buffers y cosas por el estilo, y
aun mas a externos como disco duro, pantalla, scanner ,
impresora, y sobre todo al modem. Tiempos que realmente
determinan la velocidad de los procesos en un uso habitual del
ordenador personal.
Multiprocesadores
El Hiper-Threading emula, con mas o menos fortuna, algo conocido,
los ordenadores multiprocesador. Hay placas base con varios
procesadores, normalmente dos o cuatro, que reparten los distintos
procesos entre ellos. Son las típicas placas de los servidores de
red. El tráfico originado por el acceso de los usuarios a la red se
reparte entre los distintos procesadores, de modo que, dependiendo
de que la placa base tenga dos o cuatro procesadores, cada
procesador atiende a la mitad o a la cuarta parte de las
solicitudes recibidas.
En casos de grandes cargas de trabajo, se instalan varias placas
bases, cada una de ellas con su procesador en cluster. Un
cluster es una agrupación de ordenadores interconectados de forma
que actúan conjuntamente como si fueran una unidad operacional, si
bien, en función del trabajo a realizar, cada ordenador puede
actuar independientemente. Por ejemplo un servidor de páginas web
que espere mucho tráfico de visitas, puede optar por dos
soluciones, instalar un procesador de gran capacidad y velocidad de
proceso que haga frente holgadamente a las peticiones, o instalar
un cluster de ordenadores modestos, dividiendo el tráfico entre
los distintos procesadores.
La segunda opción suele ser mejor solución por una característica
que adquiere cada vez más importancia, la escalabilidad, es
decir, la capacidad de adaptar el hardware a los requerimientos del
software. Si optamos por un ordenador muy potente, inicialmente
estará muy holgado de potencia, quizá trabaje al 60%, pero si crece
su uso llegaremos al 100% y no habrá más solución que sustituirlo
por otro aún mayor. Normalmente se suma al coste de la sustitución
del ordenador el del software y la formación del personal necesario
para el manejo del nuevo equipo. El equipo se usará al principio en
un 60 %, para al llegar a un uso del 100%, volver a empezar.
Un cluster, permite ir agregando poco a poco más equipos, el uso
del sistema se puede mantener siempre en una banda entre el 75% y
el 90% de su capacidad, hay más tiempo para amortizar los equipos,
pues se van sustituyendo poco a poco los más antiguos por otros
nuevos más potentes sin necesidad de sustituir todos de golpe.
Además la ampliación de equipos no supone comprar nuevo software ni
entrenar personal, tan sólo en algún lugar del software, se
modifica el parámetro que indica el número de ordenadores que
componen el cluster, indicando que el número de equipos ha pasado
de ser N a ser M. Con sólo este dato el viejo software es capaz de
utilizar los nuevos ordenadores añadidos al cluster sin más
cambios.
Parece increíble, pero el corazón de
Google lo forman 20.000 PCs de IBM con dos discos duros de
40Gb a 75Gb. Como 20.000 PCs ocupan un gran volumen, una empresa,
la Rackable Systems los
compacta en el menor espacio posible. Google inicia su actividad en
1998 con 2 procesadores, para llegar a los 20.000 actuales ha
creciendo al 20% mensual. Si hubiera optado por una opción lineal
de procesamiento, posiblemente hubiera quebrado hace mucho tiempo,
pues se hubiera visto obligada a cambiar de ordenador más o menos
cada tres meses, tiempo absolutamente insuficiente para poner en
marcha un gran ordenador. La razón de elegir PCs bajo Linux fue en
un principio solamente económica, pero el acierto de la elección ha
sido básico para su desarrollo posterior.
Multithreading
Todo ello es muy útil cuando tenemos que atender múltiples procesos
independientes, como las peticiones a través de Internet de Google.
Cada petición es independiente de las demás, por tanto se asignan a
procesadores diferentes y en paz. Pero si sólo hay una petición que
atender, el tiempo de respuesta no mejora, un procesador trabajará
a tope, mientras que el resto del cluster permanece parado. En
este caso hubiera sido mucho más útil tener el superordenador, pues
trabaja a tope lo mismo cuando tiene mil procesos en marcha que
cuando sólo tiene uno.
Con una o pocas peticiones, el tiempo de respuesta del superequipo
es mucho mejor que el del cluster. Cabe otra solución y ésta se
llama multithreading,
multihilo. Esta solución desdobla una sola tarea en varias y manda
cada una de ellas a un procesador diferente. Sería algo parecido a
deshacer una cuerda en cada una de sus hebras y tratar cada una por
separado para un poco mas allá volver a formar de nuevo la cuerda.
Si una empresa tiene que hacer la facturación de las tarjetas de
crédito de sus clientes. Si tiene un software capaz de repartir los
cálculos de la factura de cada cliente entre procesadores
diferentes, podremos conseguir mejores resultados trabajando con un
cluster de muchos PCs, que trabajando consecutivamente todos los
clientes con un único ordenador, aunque sea muy potente.
En un proceso hay cientos de cálculos que son iterativos, que se
han de repetir con diferentes datos múltiples veces. Son las
instrucciones condicionales que nos encontramos en cualquier
lenguaje de programación, IF
THEN
(Si
, entonces
) , WIHLE
(Mientras que
.), REPEAT (repetir), DO
TO
(hacer
hasta
) Si un
lenguaje es capaz de repartir estos procesos iterativos entre los
procesadores de un cluster, que estén ociosos, la velocidad de
cálculo aumenta espectacularmente. Esto es en esencia la técnica
multihilo o multithreading, que fracciona en un proceso un paso
iterativo en muchos realizados de forma paralela.
Muchos superordenadores que se construyen en la actualidad se basan
en cluster gigantescos,
el último del que tengo noticia está formado por 4000
ordenadores Itanium bajo Linux. Entre los 500 más rápidos del
mundo, 93 se basan en clusters. De ellos 14 han sido construidos
por sus propios usuarios y más de 60 están basados en PCs Intel o
AMD, es decir en PCs como el que tenemos tú y yo.
La pregunta obligada es ¿Por qué no se
fabrican todos así, si son relativamente baratos y fáciles de
montar? Si intentamos que una diligencia corra mas, ponemos un
tronco con más caballos, el peso de la diligencia se reparte entre
los caballos y éstos la arrastran con mas facilidad. Pero ocurre
que pasados los seis primeros caballos la diligencia deja de correr
más, e incluso, si añadimos más caballos, la velocidad de la
diligencia desciende. La diligencia nunca podrá correr más que lo
que corre un caballo suelto, incluso no puede ir más deprisa que el
caballo más lento del tronco, por tanto pasado un punto, cuantos
más caballos haya, más riesgo hay de encontrar un caballo
torpe.
Algo parecido pasa con los cluster; puedo dividir un paso del
proceso en varios, pero tendré que esperar a que acabe el último de
ellos para seguir los cálculos con el resultado de ese paso; es lo
que se llama la sincronización de procesos paralelos. Si el proceso
que estoy realizando no se bifurca en muchos hilos, sino en unos
pocos, de nada me vale tener miles de ordenadores en el cluster,
la velocidad del proceso estará en función de la velocidad de los
procesadores del cluster pero no de su número. Por ello, para
ciertos cálculos se siguen necesitando carísimos procesadores
lineales de altas velocidades. El superordenador
más rápido de este tipo en servicio actualmente es el Simulador
Terrestre de Yokohama, de 35,86 Tflop/s, trenta y cinco trillones
de ciclos de cálculos por segundo. Compárese esta cantidad con los
tres mil de un PC de Intel de la última generación.

Yo no entiendo.... pero me ha aclarado unas dudas importantes para mi.
Me gusta el artículo.
Todo trabajo es importante y merece nuestro respeto, creo que si el Sr. Juan Pérez verdaderamente sabe y conoce del tema nos envié un articulo para pode evaluar sus conocimientos.
Por otra parte se debería publicar por lo menos la ip de donde proviene el mensaje, para evitar estos sujetos y sus insultos.
JUAN PEREZ ES UN ROTO , YO NECESITO SABER SI ME PUEDEN AYUDAR DICIENDOME SI SE PUEDEN TENER 2 Ó MÁS DISCOS DUROS CON UNA SOLA LETRA ,
¿COMO LO HAGO? .- CHAO
No hagan caso de Juan Perez, es un pobre desgraciado, que no tiene otra cosa que hacer que tratar de molestar.
Este artículo es MUY BUENO, claro y conciso. Me ha servido para aclarar unas cuantas dudas acerca de los sistemas multiprocesador y del hyperthreading.
Es muy de agradecer que haya gente como José Manuel Gimeno, que de forma altruista, comparten su conocimiento con los demás. Salud y gracias!
el articulo esta bien esta muy bien
y me parese qeu esta bien demaciao bien bueno eso veo .
me parese que esta bien qeu los s comentarios etan bien
Este articulo esta preciso, simple y facil de entender como para una persona que recien se esta iniciando en estas investigaciones, ademas creo que no todo se puede decir en unas cuantas lineas, si se necesita saber del tema, es bueno averiguar mas y no quedarse con la primera informacion encontrada.
No le hagan caso a IGNORANTES como JUAN PEREZ, que no sabe valorar el conocimiento ajeno.
El artículo me parece bueno, sería interesante compararlo con los micros de amd (nunca pude saber la real velocidad reloj).Sigan así y Gracias.
La intención del artículo es de dar a conocer conceptos, no técnicas, de trabajo en paralelos. Se adapto a un nivel técnico de concocimiento bajo, como el que puede tener un usuarios medio de PC. Por su puesto, no pensó, para técnicos en programación ni analistas del sistema.
Por lo que leo en sus comentarios, he acertado en mi intento de divulgar conocimientos básicos sobre trabajo en paralelo. Como era, previsible, los que saben del tema lo consideran flojò.
no lo lei por que era mucho y ademas no era llamativo
Pues a mi me ha gustado. Quizás da demasiadas vueltas en algunas cosas, pero es bastante esclarecedor, aunque ciertamente básico.
Y respecto a algunas opiniones, creo que se puede criticar sin faltar al respeto, lo que da una muestra de la capacidad intelectual de quienes las emiten.
seria interesante que me pudieran ayudar en un asunto respecto al tema de trabajo en paralelo. me gustaria montar un cluster pero no se como hacerlo despues de dos semanas navegando en internet y despues de haber leido articulos. un saludo
Seria interesante que yo pudiera encontrar novia, me compre el Hiper-Threading para poder trabajar con mas Chats al mismo tiempo (y de manera mas rapida para que la tia no te diga que tardas mucho y al final te acabe preguntando si estas hablando con otra chica o que)y por lo tanto tener mas posibilidades reales de encontrar novia por internet. Como no saquen la tecnologia Supermega-Threading al cubo me parece que me quedare con ná. adios super informaticos un saludo
ME PARECE QUE HACE FALTA MAS INFORMACIÓN PORQUE NO ENCONTRE LO QUE REQUERIA.
ESTO ES UN POCO INCOMPLETO.
Tengo un 286 del año de la pera que es capaz de ejecutar un mayor numero de instrucciones en coma flotante por segundo que cualquier procesador con Hiper-threading. AH Juan Perez e Ivan ahora vais y lo cascais!!!
Yo también estuve curioseando sobre esto del Hiper Therading y conseguí enterarme de cosas.
Cierto, que no sé si es mejor la tecnología Intel Centrino o la de Hiper Threading, pero ya me enteraré.
Con respecto a los tontos mentales (incluídos los retrasados mentales por vicio o gracia), decirles que no podrán ser mas tonton, porque no practicarán lo suficiente y que todo es intentarlo en esta vida.
Al del Chat con su novia, que ojalá su novia se meta a monja, porque vaya un porvenir para la pobrecita, con semejante tipejo multi tarea.
Al margen de ésto, el artículo es bueno aunque es verdad que para los mas novatos nos deja un poco sin saber que decidir.
Pero como en todo, es una parte de contenido técnico para aclarar conceptos y lo hace eficientemente, a mi entender.
Para el autor y gente seria, que se han pronunciado mi saludo y un beso.
Me parece que debo agradecer que gente linda se tome tiempo para escribir estos articulos y ponerlos al alcance de todos, ¡sigan adelante! y si bien es cierto que redunda un poco me fué de mucha ayuda.
Esta bueno, pero falta informaciòn, por ejemplo cambios significativos que implica su aplicación...
notiene nadaver con qque busque haver si pueden hacer algo al respecto se me hace un aperdoda de tiempo buscar en paginas chafas.
Soy Técnico e una empresa que repara a nivel Nacional y el presente articulo me ha aclarado el tema del Hiperthreading, es mas, me ha ayudado a solucionar un problema con un ordenador. El equipo se ralentizaba si se pulsaba una tecla constantemente. Tras desavilitar el Hiperthreading en la Bios desaparecio el problema.
Gracias por su ayuda desinteresada.
alguien le interesaria ayudarme ,, diciendome como hacer un cluster
no se a mi me dijieron q el chicle se asi de hueso y no se si es verdad !
ojala me puedan responder esto pu a : polanneaxe@hotmail.com
me tiene inqueta esto xfa repondanme !!
Autor, seria tan amable de citar un sitio de referencia en donde esncontrar mas informacion acerca del hiper threading, sun informe es bastante bueno y completo, felicitaciones
Tenía problemas con el equipo nuevo y al deshabilitar el Hiperthreading en la Bios el equipo funciona perfectamente.
Muchas gracias.
Muy buen articulo, muy ilustrativo e interesante
El articulo es bastante interesante me gustaria saber donde puedo encontrar mas informacion sobre la computacion multihilo
Gracias
necesito saber los elementos de un escaner
necesito saber cuale son los problemas de un scanner
espero tu respuesta rapido gracias
quisiera saber si se puede que SOs soportan tecnología multithreading.