usuario
clave
iniciar sesión
regístrate
Portada
Canales
  • Apple
  • Blackhats
  • Ciencia
  • Comunicación
  • Curiosidades
  • e-Administración
  • Empresas
  • Eventos
  • Hardware
  • Nombramientos
  • Seguridad
  • Software
  • Software Libre
  • Telefonía
  • Videojuegos
  • Wireless
El Periódico
  • Blogs
  • Editorial
  • Entrevistas
  • Gadgets
  • Perfiles
  • Tags
  • Top noticias
  • Videorreportajes
  • Webcómics
Servicios
  • Boletines
  • Contactos
  • Empleo
  • Formación
  • Minijuegos
  • Tienda
  • Viviendas
Comunidad
  • Encuestas
  • Foros
  • Emails de los lectores
Viviendas
Acción:
Propiedad:
Provincia:

Patrocinado por:
Tienda
Boletín semanal
Email:
Boletines publicados

  • Ciencia
  • Artículos
Ciencia
  • ¿Son las ciencias de la comunicación esencialmente incompletas?
  • Haciendo pilates con las neuronas
  • ¿El fin de los aviadores?
  • El error del espacio-tiempo (II)
  • El error del espacio-tiempo (I)
Del mismo autor
  • Posibilidades de triunfo de una tienda online V: El camino del éxito
    Blackhats
  • Los asombrosos anuncios de Youtube
    Curiosidades
  • Posibilidades de triunfo de una tienda online IV: Los productos
    Blackhats
  • Posibilidades de triunfo de una tienda online III: Trato al cliente
    Blackhats
  • Posibilidades de triunfo de una tienda online II: Soluciones
    Blackhats

Hacer dos cosas a la vez

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.

29 Ene 2004 | José Manuel Gimeno
U

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 PC’s de IBM con dos discos duros de 40Gb a 75Gb. Como 20.000 PC’s 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 PC’s 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 PC’s, 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 PC’s Intel o AMD, es decir en PC’s 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.

Tags: informatica, multitarea, ordenadores, superordenador
Comentarios
LaFlecha.net no se hace responsable del contenido de los comentarios publicados.
Editar | Borrar | #1 | 15 Mar 2004, 15:48
Andreu Vendrell

Yo no entiendo.... pero me ha aclarado unas dudas importantes para mi.

Me gusta el artículo.

Editar | Borrar | #2 | 19 Mar 2004, 16:51
Luis Aguila

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.

Editar | Borrar | #3 | 29 Mar 2004, 02:47
JUAN URETA

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

Editar | Borrar | #4 | 30 Mar 2004, 02:26
Dan

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!

Editar | Borrar | #5 | 14 Abr 2004, 23:13
holas

el articulo esta bien esta muy bien

y me parese qeu esta bien demaciao bien bueno eso veo .

Editar | Borrar | #6 | 14 Abr 2004, 23:21
marco luque

me parese que esta bien qeu los s comentarios etan bien

Editar | Borrar | #7 | 30 Abr 2004, 14:41
Moises Noriega

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.

Editar | Borrar | #8 | 02 May 2004, 15:23
Anónimo

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.

Editar | Borrar | #9 | 03 May 2004, 13:42
El autor

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ò.

Editar | Borrar | #10 | 19 May 2004, 16:34
Ana

no lo lei por que era mucho y ademas no era llamativo

Editar | Borrar | #11 | 20 May 2004, 19:37
JR

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.

Editar | Borrar | #12 | 19 Jun 2004, 19:25
juan cubero

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

Editar | Borrar | #13 | 26 Jun 2004, 02:38
Juanito Garcia

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

Editar | Borrar | #14 | 27 Jun 2004, 21:44
FABY

ME PARECE QUE HACE FALTA MAS INFORMACIÓN PORQUE NO ENCONTRE LO QUE REQUERIA.

ESTO ES UN POCO INCOMPLETO.

Editar | Borrar | #15 | 15 Jul 2004, 10:16
Moro

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!!!

Editar | Borrar | #16 | 19 Jul 2004, 17:33
Sandra Raquel

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.

Editar | Borrar | #17 | 30 Jul 2004, 17:59
Valery

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.

Editar | Borrar | #18 | 27 Sep 2004, 18:43
Carolina Herrera

Esta bueno, pero falta informaciòn, por ejemplo cambios significativos que implica su aplicación...

Editar | Borrar | #19 | 13 Oct 2004, 15:40
ralf cret

notiene nadaver con qque busque haver si pueden hacer algo al respecto se me hace un aperdoda de tiempo buscar en paginas chafas.

Editar | Borrar | #20 | 08 Nov 2004, 19:59
Bladeeyes

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.

Editar | Borrar | #21 | 20 Nov 2004, 03:36
JuaNEs

alguien le interesaria ayudarme ,, diciendome como hacer un cluster

Editar | Borrar | #22 | 27 Dic 2004, 04:53
karis

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 !!

Editar | Borrar | #23 | 04 Mar 2005, 15:28
Roberto

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

Editar | Borrar | #24 | 21 Mar 2005, 17:38
José Miguel

Tenía problemas con el equipo nuevo y al deshabilitar el Hiperthreading en la Bios el equipo funciona perfectamente.

Muchas gracias.

Editar | Borrar | #25 | 18 Abr 2005, 21:44
Pollirrata

Muy buen articulo, muy ilustrativo e interesante

Editar | Borrar | #26 | 19 Ago 2005, 00:10
El Gilberto

El articulo es bastante interesante me gustaria saber donde puedo encontrar mas informacion sobre la computacion multihilo

Gracias

Editar | Borrar | #27 | 03 Nov 2005, 14:25
jesica

necesito saber los elementos de un escaner

Editar | Borrar | #28 | 03 Nov 2005, 14:27
jesica

necesito saber cuale son los problemas de un scanner

espero tu respuesta rapido gracias

Editar | Borrar | #29 | 08 May 2006, 04:24
martin

quisiera saber si se puede que SOs soportan tecnología multithreading.

Entérate de cuándo hay nuevos comentarios

No se permitirán los comentarios que :
- puedan resultar ofensivos o injuriosos
- incluyan insultos, alusiones sexuales innecesarias y palabras soeces o vulgares
- apoyen la pedofilia, el terrorismo o la xenofobia

Autor
Comentario
BBCode (Ayuda): [b], [i], [quote], [code]
Publicidad

  • Acerca de LaFlecha
  • Contactar
  • Política de privacidad
  • RSS/RDF
  • Registro de Dominios
    Alojamiento Web
    Servidores Dedicados
    Buscador de Empresas
  • Pixmania
  • Alojamiento web
  • Eventos Barcelona
  • Alojamiento Web Linux
  • Alquiler Limusinas
  • Fotografos
  • Casino Online
  • ¿Quieres saberlo todo sobre Hacking?