
Intel ha mostrado recientemente uno de sus últimos productos, al que ha denominado Knights Ferry. Es por ahora un prototipo, con lo que aún no lo podremos ver en el mercado. Sin embargo, nos muestra por dónde están yendo los fabricantes.
Empezaremos con las características técnicas de esta criatura. Con una apariencia de tarjeta gráfica (es decir, se conecta al slot PCI-Express de la placa base), Knights Ferry contiene 32 núcleos a 1.2 GHz., cada uno de los cuales es capaz de emular cuatro hilos de ejecución. En total son 128 hilos los que son visibles por el sistema operativo, todo en un formato muy reducido. Es posible que también permitan instalar varios de estos módulos en paralelo, aunque los detalles más técnicos no se han hecho públicos.
Esta bestia sirve, cómo no, para la computación masiva de datos, y más concretamente para aplicaciones y sistemas operativos que permitan aprovechar tantos núcleos simultáneamente. Es algo que se lleva moviendo desde hace varios años con productos como NVidia Tesla, y que en un sector muy específico del mercado se utiliza y mucho. Por ejemplo, en el cálculo de ciertos datos científicos o en el campo del renderizado a gran escala.
Knights Ferry es, como ya hemos dicho, un producto que se encuentra en un estado de continuo estudio y evolución, actualmente un simple prototipo. Su fecha de lanzamiento podría situarse a finales del 2010 para los primeros productos, con una fabricación más estable a lo largo de los años sucesivos.
Varios núcleos, ese es el camino a seguir
El común denominador que desde años llevan siguiendo los fabricantes es el de estudiar el campo del procesamiento en paralelo. Ya hace tiempo que disponemos de microprocesadores de varios núcleos, y los dos grandes fabricantes (Intel y AMD) siguen esta evolución.

Este tipo de procesadores ofrecen una mayor potencia de cálculo al integrar varios núcleos de proceso. Aunque no es exactamente la multiplicación (es decir, un procesador de dos núcleos no es el doble de rápido que uno de un núcleo), la mejora es sustancial, más aún si las aplicaciones están programadas y preparadas para el paralelismo.
Y es precisamente este campo el que debe mejorar, y mucho. Gran cantidad de las aplicaciones de corte profesional (sobretodo las que se programan específicamente para ser ejecutadas sobre núcleos de tipo Tesla, o sobre granjas de datos) se desarrollan utilizando técnicas que permiten dividir los datos para ser ejecutados de forma paralela. El software doméstico que todos manejamos no lo está, pero en un futuro tendrá que adaptarse o el esfuerzo de las empresas de hardware habrá sido en vano.
El cómo y el cuándo es algo incierto. Hay decenas de técnicas, pero el paralelismo es un campo muy complejo y avanzado que será mejor tomar con tiempo y calma. Una vez más se vuelve a cumplir eso de que lo que entra en el mercado profesional termina llegando a los usuarios domésticos. O terminará llegando, vamos.
Vía | NordicHardware.
Comentarios
38.4 Ghz triplica a los prosesadores actuales y segun por lo que dice se podran instalar varios. Sigo pensando que los fabricantes solo nos van dando los productos segun vean las ventas. Primero dan de un core luego dual-core despues quad-core y ahora hexa-core. Sabiendo que ellos ya han desarrollado prosesadores de 64 nucleos.
2 Comentario moderado
27.5interesante
No importan los gigahertzios que sumen todos los procesadores de Knights Ferry. ¡Olvidémonos de los GHz.! Hace años que no valen de nada.
Además, el cuello de botella que tiene que tener esta preciosidad va de Madrid a Barcelona, a pesar del enorme ancho de banda del PCI-Express. Por ahora es un prototipo, ya veremos cuando empiece a utilizarse qué tal funciona y si se nota mejora o no.
Exelente observacion ¬¬ pero si no te mantienes al dia tu computadora simplemente quedas limitado. a utilizar lo que va saliendo
dudo mucho que esto tenga cuello de botella...
desconozco cual es su potencia teorica, pero si los 32 procesadores son X86 no aprovecha el pciexpress ni al 10 %...
se han hecho mil veces pruebas de rendimiento, con la ultima generacion de GTX480 de nvidia, bajanado la velocidad del PCiexpress a 8X y a 4X, a 8X rendia un 2% menos que a 16X, y a 4X rendia un 4% menos, y apuesto lo que quieras a que no es por insuficiencia de ancho de banda si no por imposibilidad de la tarjeta de gestionar correctamente un flujo de datos por un canal para la que no esta preparada...
tratan de vendernos la moto con el pciexpress 2.0, y pronto quieren meternos el 3.0, cuando todavia no se ha alcanzado el limite del AGP...
-- editado por última vez a las 20:43
interesante
Muy interesante lo que expones, ¿tienes algún enlace con más información?
Lo que dije del cuello de botella lo decía un poco de memoria, que no me se los datos específicos del ancho de banda soportado y demás. Sin embargo, si no es el PCIe como tal será el controlador del disco duro, o el de red o el que sea. Esto huele a que como no esté bien configurado y estudiado tienes un cuello de botella enoooooorme.
Gracias por el aporte :)
interesante
lo vi hace tiempo en toms hardware, ahora no sabria decirte donde esta la noticia esactamente puesto que es de cuando salieron las GTX480...
en cuanto al disco duro, cuando la finalidad del aparato son hacer calculos de complejidad exponencial, la red, o el disco duro implican poca importancia, sin embargo, si va destinado a la edicion de renders de alta calidad (esto siempre en estaciones gigantestas, que nadie se piense que avatar se hacia con un SLI de quadro) y la transferencia de datos del disco duro pudiese implicar un cuello de botella existen SSD pciexpress que tienen una transferencia de datos fuera de todo lo visto hasta ahora...
http://www.alternate.es/html/product/Solid_State_Drive_PCI_Express/OCZ/Z-Drive_R2_p88_PCIe_SSD_1_TB/419653/?tn=HARDWARE&l1=Discos+duros&l2=Solid+State+Drive&l3=PCI+Express
entre unas 15 y 20 veces mas rapidos que discos convencionales...
habra quien diga que con este precio no habra dios que este dispuesto a "subsanar" ese cuello de botella en una estacion de renderizado, pero hay que tener en cuenta, que la velocidad de renderizado de un par de estas no creo que vaya mas alla de la velocidad de transferencia de un SSD convencional en tiempo real (teniendo en cuenta la velocidad del guardado de render), por lo que estos discos, al solo ser necesarios en estaciones donde el numero de tarjetas de este tipo es muy elevado, el que puede pagar esas estaciones, puede pagar estos discos...
Y no te equivocas mi amigo. Las marcas ya tienen desarrolladas muchas tecnologias que para nosotros hoy en dia suenan a "tecnologia alienigena", pero no las sacan por 2 motivos: Costos y pocas ventas". Costos es porque no todos podriamos comprarlo dado que esa tecnologia es cara aun, cuando las van sacando es porque los precios son adecuados y por el tema de "pocas ventas" es porque mientras mas versiones saquen de a poco, mas venden porque compramos algo y luego sale lo nuevo que igualmente terminamos comprando, comprar y comprar y comprar es la clave de todo. Ahora existe la tecnologia para renderizados en tiempo real pero que no está ni al alcance del bolsillo ni en los planes de las marcas en distribuirlos.
No necesariamente el acceso a memoria tiene que ser un problema. El tipo de proceso que se desea ejecutar sobre algo como esto es totalmente basado en cálculo, y no en memoria. Lo veo totalmente práctico a esto, claro está para el que realmente lo necesite, que no es el usuario común.
He tenido la ocasión hace ya bastantes años de tener delante una estación Silicon-Graphics la cual estaba representado imagen CG a tiempo real y viendo las entrañas, solo veía slots por todas partes y pregunté al operador..
¿y los discos duros?
¿discod duros? no hombre no! demasiado lento el acceso a los datos, todo está en memoria!
Hablo de hace muchos años!
Veo muy acertado tu punto de vista, ya que se tenia en cuenta desde hace mucho.
También no tenemos que olvidarnos la opción de enviar la escena a una granja de render cosa que te evita tener que subsanar este conocido problema de ponerle el motor de un Porche a un 600.
Lo que sea posible mientras se evite que las CPU tenga que esperar a la escritura.
Olvidaos de cualquier dispositivo de discos al uso, este tipo de tecnología está destinada a funcionar con almacenamiento en SAN, con máquinas con discos a 15K revoluciones, en RAID, con Gigas de caché y con acceso por fibra óptica.
Eso es un mito. No la sacan, no por el costo y por pocas ventas sino que no la sacan porque nos van dando estas tecnologías de antaño, para ellos ir ganando más y más dineroo sin importarle nada (ni lo que contaminan, ni gastar recursos, ni que el cliente reciba productos con errores, de mala calidad, obsoletos). Hace 30 años la base de la computación es la misma, de echo no sé si más todavía...la única diferencia es que cada vez es más chiquito y rapido... Pero bueno son empresas..¿acaso alguien puede confiar en ellas pensando que sólo buscan hacer tu vida mejor?
Creo que era en Tom's Hardware donde hicieron la prueba de 25 discos SSD en RAID y daba 1GB/s.. Gigabyte, no gigabit... Aún así, el disco es lo más lento del equipo. Pensádlo, la CPU en Mhz, la RAM en nanosegundos y el disco en milisegundos. Un milisegundo son muchos megahertzios y nanosegundos...
Vale, me he leido el artículo un par de veces y aún no he entendido qué es o para que sirve ese aparato. supongo que eso descarta que yo sea un geek (cosa que tampoco se lo que es xD). En claro sólo he sacado que en un bicharraco a la hora de procesar lo que sea que procese
interesante
Básicamente, ésto es un accesorio que se lo conectas a la placa base del ordenador y te permite tener 32 microprocesadores adicionales. La cosa explicada fácil es así, luego en la realidad es muchísimo más compleja.
aaaaaammmmm, pos muchas gracias caballero. Perdona mi ignorancia, es que soy nuevo y eso, pero con personas como tú es un gustazo aprender. Gracias
Un placer, para eso estamos :)
Simplemente triplica la capacidad actual de una maquina ahora en un espacio MUUUY REDUCIDO digamos q no habra cosa que no procese (actualmente)renderizara video,juegos,autocad's y demas cosas simplemente no sentira el pesar de tener todo eso ejecutandose :D nice !! kiero 3 ! XD
Jodo, yo que pensaba que era una tarjeta grafica, de todas formas opino q por lo menos el redactor del articulo tiene que decir de que producto se trata.
Lo dijo...
a nivel consumidor final, entiendase el 99% de la población (o algo muy cercano a ése número), de que sirve tener 64 núcleos o 2500 si no hay aplicaciones del mundo real que usen mas de 4 núcleos? aún los juegos mas avanzados para PC no pueden hacer uso de 6 núcleos, es mas, el cell processor de la PS3 que cuenta con 9 núcleos cuenta con un grupo de juegos muy limitado (que son exclusivos de la consola), que usan en algun momento los 9 nucleos al unísono, a lo que voy es que simplemente no tenemos el software para explotar el hardware, entonces para que necesitarlo? por novedad?
la necesidad equipara al deseo?
salu2
-- editado por última vez a las 20:33
interesante
A nivel de consumidor los dos núcleos son perfectos. Uno de ellos para las tareas en segundo plano, el otro para la tarea principal. Eso si los sistemas operativos y el resto del software estuviera preparado... que, por supuesto, no es así.
Y sí, como bien dices cosas del tipo a Knights Ferry están puramente enfocadas al sector profesional, punto, pero nos ayudan a ver por dónde pueden ir los tiros de los productos domésticos dentro de unos cuantos años :)
que tu como usuario casual no le des uso a mas nucleos no significa que otros no se lo den, puesto que gente que se dedica al renderizado de video o procesamiento grafico, los nucleos de mas les vienen como anillo al dedo, y te aseguro que el software que usan si esta preparado...
ademas, este "bicho" no es para usuarios convencionales, apuesto a que su precio es tan prohibitibo como la serie Quadro de Nvidia, esto esta pensado para estaciones o servidores, o para superordenadores, donde con tan solo 10 de estas en un espacio de 1 metro consigues el mismo resultado que 160 procesadores en un armatoste como una habitacion de grande...
el procesamiento grafico o renderizado se hace en el GPU como la seria QUADRO, y el que un programa use 200 nucleos no significa que este optimizado para explotarlos correctamente, es lo mismo que como el que sabe hacer vectores texturizados, no es lo mismo que el que sabe programar, y mi punto sigue siendo el mismo, no existe el software optimizado para hacer uso de esa cantidad de procesadores, lo que hacen es tan solo crear la necesidad fantasma de que se necesitan 16 procesadores. tan solo cuanto tardamos en tener 2 nucleos, y en pocos meses ya estamos en 16?? los metodos de programación standard ya estan a la par de esos 16 nucleos (o mas?)??
Yo te digo por donde van los tiros, tarjetas biologicas, pegale un tiro a uno en la mandibula y recreate viendo como le saltan los dientes, como las arterias bombean sangre, etc... y todo sin descuidar la destruccion de escenario, o la calidad grafica.
Primero las graficas, luego las fisicas, y cuando esto este para el mercado general, las biologicas; todo sea por descargar la CPU.
La recreacion biologica en los juegos es algo que todabia no se ha explotado por la enorme cantidad de procesamiento necesaria, y esto no sirve para otra cosa.
interesante
¿Pero que estas diciendo tio?
Eeeeeeeeeeh.... ¿?
Shattered Horizon lanza 16 hilos de ejecución simultáneos.
Es un videojuego.
Que no existen aplicaciones profesionales que aprovechen varios núcleos. Madre.
Tio... dime quien es tu camello, que le voy a decir que me de de eso. jajaja
Pues yo le he entendido perfectamente, pero para eso existe la simulación de materiales y fluidos, ya se se puede hacer sin problemas. Solo tienes que ir juntando Cuda´s a punta pala! Esos si el juego solo lo podrán jugar unos pocos.
Por lo demás normalmente el interior de los personajes suelen ser huecos ya que se supone que no se va mostra el interior pero poder se puede hace!
Del cual he sido Beta tester y DOY FË!
¿Nivel profesional? ¿Cuantas empresas necesitan hacer calculos DIARIOS de tales magnitudes?
He estado en el primer supercomputador de España (el Marenostrum) y no tienen lista de espera para relizar esos calculos.
En realidad este bicharraco (porque lo es, hay que reconocerlo), solo tiene interés a nivel de Investigación. Las empresas que requieren de cálculos de este tipo recurren a los supercomputadores y que ellos se curren los algoritmos y las demás necesidades.
Yo creo que los tiros pasan por ahí, y que el anuncio pasa mas por: "Oye tio, mira lo que podemos hacer!!"
Con el objetivo de decir al publico: "Seguimos siendo mejor que esos tontos de AMD!!"
Y a sus accionistas: "Tranquilos pueden seguir conservando sus acciones, tenemos cuerda para rato... ahh y si te sobra algo por ahí, venga... te emitiremos algunas más"
En realidad creo que Intel apunta a la investigación más que a contentar a los accionistas o asustar a AMD, que si, pero no lo hace como objetivo principal.
lo que dije y vuelvo a repetir es que sea de forma optimizada, windows 7 puede usar creo que hasta 256 hilos, y eso que? no me digan que esta optimizado para hacer uso de esos 256 hilos. mas objetividad por favor, no por ser novedad es bueno y no hay que sentirse ofendido por esto o si?
Es que una cosa no va de la mano con la otra. Por empezar, en un par de meses no saldrán procesadores de 16 núcleos, ni por conveniencia económica ni por nada. Tardamos un par de años en pasar de dual-cores a quad-cores, bastante más en que aparezcan los primeros hogareños de seis cores y hasta el año que viene no se espera más.
Que Windows 7 puede usar 256 hilos me gustaría ver una referencia técnica a eso, no por llevarte la contra sino porque me interesa ese dato (avalado como corresponde). Claro, hilos no es lo mismo que núcleos.
Y, no se en que condiciones o entornos piensan que se usan estas soluciones de cálculo de alto rendimiento, pero no, cuando juntamos algunos cientos de núcleos en paralelo no se usa un Windows de entrecasa (olviden las referencias a Windows XP, por el amor del cielo). La mayoría de las granjas de proceso usan sistemas operativos especialmente adaptados. En general, distribuciones Linux modificadas al extremo o derivados de OS/2 o BSD/FreeBSD. Por ejemplo, por lo que se, Pixar usaba hace uno años una versión de Linux desarrollado para ellos (excluyendo las terminales de los artistas, que creo que eran Macs G5 en ese momento).
Yo particularmente, expliqué docenas de veces que estas soluciones son para empresas, con un dominio y un entorno muy particular y en condiciones que la mayoría de nosotros ni nos imaginamos. Y me cansé que aparezca alguien que nunca haya visto un procesador sin el cooler y ya salte con la referencia obvia a Windows XP o que "eso no lo usa nadie" sin tener una más mínima idea de lo que se está hablando. No creo que sea tu caso, pero lo dejo expresado. Saludos.
Si, exacto, pero aun no se puede recrear a un nivel real real, en plan de que el personaje sufra exactamente el tipo de lesion que sufriria una persona real, se utilizan trucos para emularlo (como que se salgan los intestinos), igual que se hacia antaño para emular las fisicas de las que hoy disponemos de targetas dedicadas.
Tambien piensa que en los juegos, los animales mantienen perfectamente el equilibrio en cualquier situacion, y eso es subrealista, dotarles de quilibrio requierecasi una granja de PCs para jugar.
Planta y no fomentes el trafico anda...
¿de que procesador sin disipador estas hablando?
La idea es bastante interesante, pero ,me intriga bastante el tema del pci-express.
Aun así es un campo ya usado profesionalmente sino mirar los sparc T2+, ademas estos procesadores son abiertos, sus especificaciones fueron liberadas por lo que no me extrañaría que intel ser haya basado (Copiado) en ellos. Aunque son un poco mas bestias 8 cores*8 hilos = 64 hilos.
El problema vendrá con los S.O, aunque linux integra bastante bien este tipo de arquitecturas, aunque tendría que mejorar, el problema es como lo integrara windows, sobre todo la gente que siga emperrada con el XP.
es obvio y claro que lo que se desarrolla a nivel profesional, militar, etc. termina con alguna aplicacion en el ambito doméstico, creo que no hace falta mencionarlo, y sobre todo que el punto del articulo es sobre un prototipo; mi comentario es mas enfocado a que es una novedad de prototipo mas no el prototipo de novedad; esto me recuerda al IDC de hace unos 3 o 4 años que hablaban de procesadores mosntruosos de 64 o 128 nucleos, pero que aun y si fuese posible construir eso, donde conectarlo? con que lo usarian, me explico? al final la realidad de las cosas es que ninguna compañia va con intel y le ordena su archi mega super computadora de un millon de procesadores; van con intel o con quien sea para los procesadores, juntan un grupo de expertos de x,y, z universidades y otro grupo de expertos freelance para el desarrollo del software que usará el hardware, todo a la medida, como los proyectos de el ejercito de USA (vease el ultimo trato de DARPA con nVidia), el resto con servidores dell y procesadores xenon pues ese resto somos los simples mortales que pgamos un precio premium por hardware al que nunca le sacaremos el 100% de la capacidad, gracias a un software que esta diseñado para correr con sistemas mono-núcleo hasta sistemas con 8 o 12 nucleos.
"actualmente un simple prototipo. Su fecha de lanzamiento podría situarse a finales del 2010 para los primeros productos"
si es un simple prototipo no creo que en tres meses vayan a empezar a venderlo, aunque quien sabe......
Un prototipo lo que están probando, no es fabricación en masa, a eso me refería :)
21 Comentario moderado
35(Sarcasmo on) Se han viciaos con el CRISYS (Sarcasmo off)
Bueno ¿teóricamente no es el sistema operativo el que se encarga de direccionar los hilos a los diferentes núcleos?
Es decir, si tenemos un procesador de 6 núcleos(y un sistema operativo que sepa usarlos) podremos tener corriendo6 procesos relativamente "gordos" a las vez ¿no?
Aunque en la realidad no necesitemos correr 32 programas a la vez, si tenemos 32 núcleos podremos estar corriendo 32 programas diferentes aunque ninguno de ellos esté preparado para usar varios núcleos en sus acciones ¿no es esta la teoría?
¿Donde está el límite de núcleos que puede dirigir Windows/Mac? ¿Influyen otros factores como el tiempo de acceso a los discos duros para poder correr tantos programas cada uno en un núcleo?
-- editado por última vez a las 22:00
Es una hermosa pregunta, y la respuesta es un curso en la universidad sobre Sistemas Operativos. Hay muchisimos factores a tener en cuenta.
Lo más sencillo, la memoria influye, si quieres aprovechar los nucleos extras sería útil tener todos los procesos cargados en memoria RAM, ahí tienes varios problemas, cuellos de botella para todos esos accesos a memoria "paralelos", coherencia de caches, etc.
Luego todo esto de los x nucleos, lo puedes hacer con uno solo, como se ha hecho por años, dando el recurso procesador un poquito a cada proceso, dando la ilusión de correr varias cosas a la vez lo cuál tiene ventajas y desventajas.
Los sistemas operativos actuales tienen soporte para muchisimos hilos de ejecución, pero a su vez no necesitan tener un core especifico para cada hilo.
El tema es tan amplio que hasta yo me perdí!
Saludos.
No es tan sencillo. Un programa se compone de datos a procesar y código a ejecutar. Resumiendo mucho, puedes colocar código en cada procesador, pero los datos siempre están en memoria. Y ahí reside el problema. Si el programa no está preparado para ejecución en paralelo, no tiene en cuenta que otros programas quieren acceder a memoria y los bloquea, perdiendo la ventaja de tener muchos núcleos. En cuanto al número máximo de procesadores en los sistemas operativos actuales, no están limitados, pero los estudios indican que apartir de 16 núcleos no hay ganancia significativa. Lo siento, pero no tengo a mano la gráfica. Es exponencial hasta los 16 y lineal apartir de ahí.
Gracias a los dos por responder.
Ya se que la multitarea es más una sensación que una realidad en procesadores de un solo núcleo.
Lo que me interesa es saber, del mismo modo que podemos correr y acceder a la memoria RAM desde dos programas diferentes en un mismo núcleo ejecutándose ambos de una forma un poco más "pesada", teóricamente podemos hacer lo mismo corriendo esos dos programas en dos núcleos diferentes por lo que así se reparte el trabajo entre ellos ¿no?
Por ejemplo, tengo entendido que cada pestaña de Chrome se ejecuta en un hilo con lo que si tienes dos pestañas realizando acciones relativamente grandes es posible que el sistema operativo derive una a cada núcleo(suponiendo que son 2 núcleos lo que tiene tu procesador) y así se compensa el trabajo.
Al menos, ese es el concepto que yo tengo.
Esto lo soluciono SUN poniendo una cache para cada core y una unidad de coherencia que interconectaba las caches para que se traspasasen información.
De todos modos en los entornos empresariales, a dia de hoy es recomendable hacer un tuning para que ciertos procesos se ejecute en un core especifico y de esta forma no van saltando entre cores y no se producen los problemas que indicas.
Aun dejando que sea el sistema el que gestione los procesos, en el caso de los procesadores de SUN, han conseguido un rendimiento increíble, por lo que seguramente los de intel andarán a la zaga o incluso pueden superarlos, si hacen bien las cosas.
Eso si no esperéis que esto funcione bien en un windows XP, porque es imposible.
http://jjmora.es/sparc-granja-de-servidores-vs-granja-de-threads/
Hay que ser tonto del culo para votar negativo esto.
En fin...
brillante
Te respondo hasta dónde yo se por el momento...sigamos el ejemplo de Chrome. Abres una nueva pestaña y el programa crea un nuevo proceso (instancia) que pasa a ser gestionado por el sistema operativo. Gestionar los procesos en multinúcleo o mononúcleo no es mucho problema, dependerá de cómo cada sistema operativo resuelva dicha tarea. El problema, como han dicho más arriba son las memorias, tanto cachés como memoria principal.
Debes entender la estructura total de memoria de un ordenador como un sistema piramidal en el que en la cima se encuentran los registros internos del procesador y en la base las unidades externas más masivas y lentas. Mientras más arriba en la pirámide mayor velocidad tiene esa "memoria" y menor tamaño. No puedes tener unos registros internos del procesador que supongan en total unas decenas de Mb, por ejemplo, sólo un puñado de bytes, lo mismo con la memoria caché, que no podrás tener varios Gb de caché. Por todo ello se estructura una función y prioridad específica para cada memoria. En este caso nos interesa cómo se organizan los registros del procesador, sus cachés y la memoria principal.
Para que un procesador o núcleo ejecute una instrucción a máxima velocidad debe tener los datos sobre los que aplica dicha instrucción guardados en sus propios registros, y para ello dichos datos tienen que viajar desde la memoria principal, la caché, o donde quiera que se ubiquen los mismos. Esto se hace a base de peticiones que gestiona el procesador/núcleo directamente. El hecho de que un dato se encuentre en un sitio u otro viene dado por el código del programa compilado a bajo nivel e influye en la velocidad de ejecución de la instrucción. Para que el procesador/núcleo no se quede esperando un dato de brazos cruzados existe algo que se llama paralelismo a nivel de instrucción. Esto quiere decir que el procesador/núcleo dispone de varios cauces de ejecución completos y en cada ciclo de reloj se están tratando diferentes fases de varias instrucciones a la vez. Al principio esta fue la idea a seguir en el desarrollo de procesadores "de consumo", aprovechar las mejoras en la tecnología de integración para duplicar, triplicar, etc unidades funcionales del procesador y así obtener un mayor rendimiento. Poco después al estancarse la posibilidad de seguir aumentando la frecuencia de funcionamiento y llegado a un punto en el que aumentar el número de cauces de ejecución no mejoraba apreciablemente el rendimiento de los procesadores, se opta por replicar el procesador entero en cada chip y así aparecen los procesadores multinúcleo.
Ahora viene una diferenciación, el hecho de tener el mismo número de núcleos y trabajar a la misma frecuencia o equivalente no iguala dos procesadores, el sistema multinúcleo puede ser completo o parcial. Por ejemplo, un procesador puede tener las caché de nivel uno divididas para cada núcleo o no. Lo mismo con la caché de nivel 2. Puede tener el controlador de acceso a memoria principal preparado para peticiones de varios núcleos o no, etc. Todo esto influye en el modo en que el procesador responde al funcionamiento en multitarea por parte del sistema operativo. Explicarlo todo como se debería requeriría casi el equivalente de la asignatura optativa "Configuración y evaluación de equipos informáticos" (puede llamarse de diferente forma dependiendo del plan de estudios o la universidad). No te preocupes que si dispones del tiempo no hace falta ni que te matricules, con colarte en las clases es suficiente, cosa que es posible en la mayoría de universidades públicas españolas.
Y es ahí donde íbamos. Los programas en ejecución ocupan memoria en forma de procesos y en forma de datos cargados en la misma. Cada proceso puede ser independiente, pero los datos pueden ser comunes o no para cada proceso. Hay datos que deben permanecer "ocultos" al resto de procesos tanto del sistema como del programa al que pertenece el proceso. Otros datos tienen que estar disponibles. Y es ahí donde entra el cómo haya sido programado el programa en cuestión y el cómo gestiona el sistema operativo dichas peticiones de ocupación de memoria, si establece algún tipo de jerarquía a parte de la básica de procesos de sistema y procesos del usuario.
El modo en cómo se haga esa gestión de memoria tanto para reservar espacio para nuevos procesos como para los datos que estos usan/generan tiene que estar optimizado también para aprovechar el paralelismo de las memorias actuales. La mayoría de ellas son capaces de suministrar varios datos a la vez por cada ciclo de reloj, por ello si un sistema operativo está gestionando dos procesos en multitarea deberá repartir entre esos dos procesos las peticiones de datos a memoria principal, para que así las peticiones masivas de uno de los procesos afecte lo menos posible al resto y viceversa. Ahora metemos los diferentes núcleos de procesamiento.
Cada núcleo se intenta comportar, dentro de sus limitaciones, como una unidad de proceso completa. Tiene sus unidades funcionales, registros, cachés, etc. e intentan trabajar en espacios de memoria a parte de los otros núcleos, siempre y cuando la cantidad y disposición física de la memoria lo permitan. Este comportamiento hace más que posibles las colisiones entre núcleos a la hora de acceder a memoria principal (RAM). Imagina que dos núcleos quieren acceder al mismo dato a la vez. Tanto el lenguaje de programación de la aplicación, como el compilador, como el sistema operativo tienen que preveer dichas situaciones e intentar resolverlas de la manera más óptima. Esta forma óptima de resolver esta colisión entre núcleos sería que se aprovechara el acceso a memoria (infinitamente lento comparado a las velocidades de cachés y los registros del procesador) para que el dato llegara a la vez a ambos núcleos, con un único acceso a memoria. La manera poco óptima sería realizando dos accesos a memoria para cada núcleo. Esta situación la puedes aplicar a como se gestionan los diferentes procesos, porque este mismo tipo de colisión puede darse entre dos procesos del mismo núcleo o núcleos diferentes.
Como ves, es un tema complicado y en el que están implicados no sólo los desarrolladores de software, sino los de hardware e incluso, tangencialmente, los propios usuarios. Durante años el desarrollo de aplicaciones "comunes" se ha hecho como si sólo existiera un núcleo de proceso y todavía se sigue haciendo así en muchas aplicaciones. Bien porque la optimización para varios núcleos de proceso no reportaría mucho o ningún beneficio a la velocidad de ejecución de la apicación o por pereza o falta de recursos por parte de los desarrolladores.
Por ahí también comentan que hay tal o cual juego/aplicación que lanza X procesos al ejecutarse y tal...en fin, más de lo mismo. No depende del número de procesos que lance la aplicación al ejecutarse, depende de cómo se organice el funcionamiento de dichos procesos internamente en la aplicación y de cómo son gestionados por el sistema operativo y el hardware. Al igual que los Ghz., un mayor número no quiere necesariamente decir un mayor rendimiento u optimización en este caso.
Sorry for the light-years long post ;)
Me quito el sombrero, caballero. Así da gusto. Lo he leido algo por encima, luego por la noche antes de dormir lo repaso completo :P
Simplemente añadir que, desde mi experiencia personal, el tema de los sistemas operativos y la programación multinúcleo es lo más complmejo que he visto en toda la carrera que he estudiado (estoy estudiando, vaya). Es un combo de matemáticas + lógica + electrónica + programación + idea feliz y en absoluto es un tema baladí.
puff, vaya currazo te has pegado jeje.
Gracias.
Entiendo y tengo asimilado que más no es mejor, se que tiene que haber una compensación en todo el sistema y que una buena programación es difícil y necesaria...
Mi duda no va relacionada con hilos de un mismo programa si no con procesos de programas diferentes, siendo claro... si realmente un usuario normal(sin ejecutar programas muy específicos) nota una diferencia de rendimiento corriendo varios procesos en un procesador de de varios núcleos que en uno con un solo núcleo(asumiendo que el equipo está "compensado").
O por el contrario, quitando programas espécificos(como un Maya en un Mac Pro por ejemplo) el rendimiento vienen a ser el mismo pues lo que ganas de procesamiento lo pierdes en acceso a memoria, control de datos, E/S y demás que tú has comentado.
Comprendo que es un tema complejo que no se puede resumir en un par de líneas pero quiero pensar que multi-core es algo más que marketing... lo mismo es que soy un romántico xD.
Gracias de nuevo.
Quizá seas un poco romantico si :)
El principal objetivo que movio a empresas como Intel a desarrollar diferentes nucleos dentro del mismo procesador fue simplemente el MARKETING. El poder seguir vendiendo algo nuevo y con mejor apariencia que lo que vendian hasta entonces.
Prefieren invertir en nuevas plataformas y sacar algo que es la releche cada poco que realmente dedicarse a optimizar y sacar productos realmente buenos. Con esto no digo que saquen procesadores malos, pero esta claro que podrian luchar mucho mas por una buena gestion de los procesos, y no estas medias tintas que nos venden como lo ultimo.
Bueno, el marketing influye, pero no es sólo eso.
Hace ya mucho que existen las placas multiprocesador, los dobles Pentium II por ejemplo.
Cierto es que eran más caros y difíciles de fabricar y sacaron los núcleos embebidos en un sólo procesador.
El paralelismo siempre dá más rendimiento, siempre que esté bien hecho. Lo fundamental es no intentar usar el mismo recurso al mismo tiempo. ¿Os imagináis jugar a la vez al Crysis y al Halo? ¿Qué haría la gráfica?
Se intenta siempre que no hagan los dos lo mismo al mismo tiempo. Si un hilo lee del disco, el otro puede escribir en memoria, y otro manejar la gráfica, otro el sonido, ...
¿En defintiva, divide y vencerás!
Tu teoría pierde la lógica en el momento en el que descubrimos que NO es Intel quien programa el código que controla los diferentes hilos, sino el sistema operativo (más concretamente, ciertas librerías).
Así que creo que estás bastante desencaminado.
interesante
No, no fue "marketing" ni mucho menos. Fue una decisión exclusiva de los equipos de ingenieros de Intel, AMD,... Eso sí, luego el equipo de "marketing" ha vendido la moto como les ha parecido bien.
Se puede demostrar matemáticamente, pero paso de soltar otro chorizo como el que puse ayer (en el que por cierto ya puse lo que te pongo ahora, perdón por repetirme), que llegando a un número X de cauces de ejecución en procesadores mononúcleo, la mejora de rendimiento total del mismo en situaciones normales (si usas programas que no tienen "saltos" como bucles o estructuras condicionales todo cauce adicional es poco, pero en la realidad muy pocos programas son así) es exigua, prácticamente despreciable. Por ello en vez de continuar replicando unidades funcionales dentro del núcleo del procesador, se decidió replicar núcleos enteros con cada mejora en la tecnología de integración.
El hecho de tener varios núcleos de procesamiento en vez de aumentar el número de cauces dentro del procesador, deja la tarea de optimización al software y al sistema operativo, ya que a nivel "hardware" (dentro del procesador) no se podía mejorar más. Como bien han dicho antes, había ya experiencia de programación para múltiples núcleos en servidores y estaciones de trabajo. Lo único es que, a pesar de que llevamos varios años disfrutando de procesadores multinúcleo, todavía los grandes del software siguen sin adaptarse a la realidad del hardware.
Más sobre cómo influye la tecnología de integración en lo que puedes poner o no dentro de un procesador lo puedes encontrar en la Wikipedia.
Al final, otro choricillo...si es que no aprendo ;)
interesante
Te pongo otro ejemplo, imagina dos usuarios con el mismo sistema base, sistema operativo, programas, etc y diferente procesador. Uno tiene un multinúcleo parcial (diferentes "cores" mismas cachés para todos los "cores") y otro uno total (cada "core" tiene su correspondiente caché de primer y segundo nivel).
Normalmente cada núcleo intenta buscar en caché los datos antes de salir a memoria principal, por lo que se suele decir que la caché es la antesala de memoria principal. El rendimiento del trío formado por el procesador-caché-memoria es básicamente la medida del rendimiento de todo el sistema, salvo en casos excepcionales.
Si cada núcleo tiene que compartir las cachés con sus "compañeros" tienen una probabilidad bastante alta, debido a la poca capacidad de estas memorias, de acabar colisionando o acumulando peticiones y generando colas ya dentro del procesador. En el otro ordenador, con un multinúcleo completo las colisiones, si se dan, será en memoria principal donde la cantidad de memoria es muchísimo mayor y por tanto menor la posibilidad de colisión.
Normalmente un sistema operativo suele ir asignando tareas (procesos) a cada núcleo del procesador según lo cree conveniente, y cada uno de los núcleos gestiona todas las peticiones y "necesidades" de dicha tarea. Esta situación convierte en algo crítico el cómo se gestionen las peticiones de acceso a memoria y otros recursos de cada núcleo dentro del procesador, dado que el sistema operativo sólo puede decidir a quién asigna tal o cual tarea, nada más, el resto queda siempre bajo el control del hardware.
Por lo que, volviendo a nuestro ejemplo, podrías encontrar incluso diferencias de rendimiento apreciables en dos equipos idénticos simplemente porque uno de los procesadores tiene un canal de comunicación específico para cada núcleo y otro pasa las comunicaciones de todos los núcleos por el mismo canal. Esto provoca que se vean pocas diferencias entre equipos similares mononúcleo y multinúcleo parcial y el salto sólo se pueda apreciar a nivel de usuario cuando el multinúcleo es completo.
Ujaldón está orgulloso de tí.
Mmmmm...
Perdona mi ignorancia, pero ¿cuáles procesadores fabrica SUN?
Actualmente SUN monta Intel y AMD, y están girando a Intel desde que la compró Oracle, ¿no?
En una época SUN se dedicaba a hacer los Sparc, más precisamente UltraSparc ya que Sparc es simplemente una especificación para procesadores RISC. No se en que anda ahora.
Cierto, no me acordaba.
¡Gracias!
No me digas que también tú lo has tenido en la asignatura...
Yo creo que que se están dirigiendo demasiado hacia el paralelismo, lo que tendrian que hacer es investigar mejores materiales como máxima prioridad para aumentar la frecuencia. Hoy en día muy poca cosa aprovecha el multinucleo, solo aplicaciones científicas. De que sirve tener 6 nucleos si si tienes tantos programas que lo aprovechen saturarán al disco duro, otro pedazo cuello de botella desde hace siglos.
Lo de aumentar la frecuencia tiene limites físicos, con el aumento de la miniaturización etc, se empieza a poner dificil mover más rápido los electrones de lo que se mueven, no es infinito lo que se puede avanzar con respecto a velocidad, de allí que se investigue en paralelizar ahora. Y también han encontrado una veta de marketing, ya que la mayoria de la gente piensa que es mejor un procesador de 8 núcleos que uno de 4, y la razón es "porque tiene más núcleos"
holy shit... en que mundo acabaremos un dia de estos?
Nos guste o no, el mundo de la computación va en esta dirección, cálculos bestiales basados en multinúcleos que harán que la tecnología que les rodea se adapte a ellos. Se reducirá el tamaño y en poco más espacio de lo que ahora ocupa un procesador, tendremos centenares de núcleos con velocidad y potencia sólo imaginables en nuestros sueños.
Ya ha salido el tema del aprovechamiento y el software. Todo evoluciona, y sino recordad aquéllos tiempos en los que 64kb de ram deberían ser suficientes para todos. Lo que ahora es sólo un plan, teoría, sueños, intenciones, se convertirá (si todo va bien) en realidad. Es lo fascinante de la tecnología. Y aquéllos a los que cuestionáis la decencia de los fabricantes al ofrecer productos 'según les interesa y según va el mercado', puede que estéis incurriendo en el mismo error que repetía una y otra vez mi padre: '¿por qué demonios no sacarían hace 20 años este tractor y no el que yo compré por el mismo precio?'
Un saludo.
lol, un bicho así te arranca el crysis sin sentirlo xD
En todo caso hay una norma que siempre se cumple:
Un máquina siempre será tan rápida como el más lento de sus componentes.
De ahí la importancia de un ordenador bien equilibrado. Un SO capaz y potente con poca RAM es ineficaz. Una CPU poderosa en una placa de calidad mediocre, dará como resultado una computadora mediocre. Un coche con muchos caballos y frenos débiles es candidato a un impacto seguro.
Yo creo que la carrera entre soft y hard es eterna. En cuanto sale una CPU potente, el SO que corre sobre ella requiere más prestaciones. Las páginas web se enriquecen cada vez más, Photoshop tarda más en abrir, etc.
Y es que un handicap a tener muy en cuenta son las aplicaciones clásicas que tienen código antiguo y tardan años en adaptarse a los nuevos SOs y hardware.
Apple decidió plantarse con Mac OS 10.6 y depurar código y hacerlo más rápido y estable. GCD y OpenCL son muestras de los avances de Mac OS en este campo. Y a día de hoy aplicaciones como Pixelmator ya aprovechan estas nuevas tecnologías:
Thanks to these improvements, the overall performance of Pixelmator increased up to 40%; the launch time is now twice as fast and the ability to paint with Pixelmator is four times faster than it was in the previous version. Users will notice the overall performance improvements in nearly every function of the application.
http://www.pixelmator.com/weblog/2010/07/13/pixelmator-team-releases-pixelmator-1-6-nucleus
Es así, si el sistema no está equilibrado empezando por el procesador y acabando por la refrigeración y polvo que genera... de está tirando dinero y recursos.
Mucho resentido se mueve por este blog...
Patada en los cojones a quien dudamos de Intel y elegimos a Nvidia y ATI.
interesante
¿Qué tiene que ver un fabricante de CPUs con otros de tarjetas gráficas? XDD.
¿Has leido el artículo o solo te has fijado en la vistosa foto?.
¿Adaptar programas de consumo doméstico al paralelismo? sinceramente no me veo un reproductor de música aprovechando eso, ¿qué aplicaciones domésticas podrían aprovecharlo? porque los juegos tampoco, ellos se centran en las GPU, y aun no son ni de doble núcleo salvo las 2 reinas de AMD y Nvidia.
"...sinceramente no me veo un reproductor de música aprovechando eso..."
Pues a mí se me ocurren dos reproductores, uno de música y otro todoterreno que sí lo aprovecharían. Además son libres. Amarok para música y VideoLan. Los dos podrían aprovecharse perfectamente de sistemas operativos que estuvieran enfocados a multinúcleo.
Las GPU se centran (hasta Cuda) en la representación gráfica de datos. Todos los shaders y Mhz de las gráficas se usan para eso. Y cada "shader" es un núcleo en la gráfica, pasan de 32...
Un ejemplo de aprovechar varios núcleos en juegos, un hilo de "coordinador", otro de control de GPU, otro de IA de enemigos, otro de cálculo de física de partículas para los impactos, otro para el control de la tarjeta de sonido, otro que observa como juegas y modifica los parámetros a tu manera de jugar.... Y seguro que a vosotros se os ocurren más.
Yo solo digo una cosa..el 23 es mi cumpleaños-
QUE ALGUIEN LLAME A INTEL!!!
Esto parece mas una 5970 Toxic de 4gb que un super procesador(es), 32 núcleos;los de la NASA ya pideron 100,y ya me están haciendo enojar el core i5 que tengo desde diciembre se va quedando atrás, mi proximo CPU esrá ATI/AMD XD
-- editado por última vez a las 07:31
53 Comentario moderado
25Genial, ya tenemos el hardware, pero como siempre aun nos falta el software que lo aproveche, y unos buenos drivers. Recuerdo que el software aun está parcialmente anclado en los 32 bits como ejemplo.
Esto es parecido a CUDA no? porque es que tampoco hay mucho software para CUDA. Diría que tampoco se aprovecha bien el multihilo con los procesadores actuales. Nos lo venderán igualmente y dentro de diez años tendrá un buen aprovechamiento quien sabe...
Necesito una respuesta!!!... Tengo una PC de escritorio cuya tarjeta madre con suerte soporta un procesador Dual Core (como tope), con un puerto PCI Express libre... Podria ponerle un aparatillo de estos y dejar que vuele?
P.D.: Entiendo perfectamente que es un prototipo y etcéteras...
en teoria si, siempre y cuando existan las aplicaciones para jalar el poder de computo de este pequeño monstruo. como dije, en teoria si.
Probablemente los watios que pedirá éste aparatito te quemarán fuente y placa base, pero... ¡Sería una bonita tea!
Hasta donde yo se esto es lo que antes se conocía como Intel Larrabee ( que alguien me corrija si me equivoco ) . Este verano estuve en un cursillo sobre CUDA donde explicaban un poco por encima ésta arquitectura, que en un principio iba a ser una tarjeta gráfica a la vez que una tarjeta de cálculo, pero parece ser que se complicó la cosa con los drivers ( y alguna cosilla hardware ) y al final solo van a sacar la tarjeta para cómputo HPC, según pude entender cada núcleo de la tarjeta sería parecidos a los últimos procesadores pentium IV y que ejecutarían instrucciones X86, aunque no se podría cargar el sistema operativo desde la tarjeta. La principal diferencia es que la Larrabee sería del paradigma de la programación paralela a nivel de tarea, mientras que las Tesla de Nvidia son paralelas a nivel de instrucción. En pocas palabras, Larrabee sería bastante parecido a un procesador de 32 núcleos de los de hoy día, aunque serían núcleos más sencillitos que los que llevan ahora mismo los i7, y sin poder cargar ahí el sistema operativo :-P.
Creo que Larrabee pretendía ser un chip gráfico con capacidades de cálculo matemático, a diferencia de esto, que parece que se dirige sólo a cálculo matemático.
De igual forma, Intel lo puede llamar Larrabee 2 o Pepe Pepito, a nivel interno no sabemos como se manejan ambos proyectos, pero parece ser que la solución final no es lo que en un principio pretendía ser Larrabee.
Pues si llevan la arquitectura Netburst...