<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-518690872231683580</id><updated>2011-07-07T15:51:41.130-07:00</updated><category term='Tema 5'/><category term='Tema 3'/><category term='Tema 2'/><category term='Tema 4'/><category term='Tema 1'/><title type='text'>Arquitectura para Gráficos y Multimedia by Me</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-1658570715641129865</id><published>2009-12-29T04:56:00.000-08:00</published><updated>2009-12-29T06:45:17.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 5'/><title type='text'>CoProcesadores para las GPU</title><content type='html'>Con la misma idea inicial que nacieron las tarjetas gráficas se llega a plantear añadir procesadores auxiliares que trabajen con nuestras &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GPU&lt;/span&gt;. Estos procesadores llevarán a cabo tareas más específicas y resolverlas por hardware en vez de dejar el peso en la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;programación&lt;/span&gt;. Actualmente las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GPU&lt;/span&gt; están enfocadas a un uso más genérico como unidades de altos rendimientos de calculo en vez de la inicial idea de gráficos  simplemente. Por ello se vuelve a pensar en coprocesadores más centrados en gráficos que las ayuden.&lt;br /&gt;Como ejemplo de estos coprocesadores vamos a ver la Unidad de Procesamiento de Física o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PPU&lt;/span&gt;: &lt;a href="http://www.nvidia.com/object/physx_new.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PHYSX&lt;/span&gt;. &lt;/a&gt;En particular, yo conocí la existencia de este coprocesador por noticias de varios &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;videojuegos&lt;/span&gt; desarrollados con esa base (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Batman&lt;/span&gt;:&lt;em&gt;&lt;/em&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Arkham&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Asylum&lt;/span&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;. Este coprocesador está diseñado por &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Nvidia&lt;/span&gt; y permite realizar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;calculos&lt;/span&gt; físicos de en entornos 3D de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;videojuegos&lt;/span&gt;. Este coprocesador hace aparición a partir de la serie 8 de tarjetas, además la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;compañía&lt;/span&gt; provee de un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;kit&lt;/span&gt; de desarrollo específico para el coprocesador.&lt;br /&gt;A continuación una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;demo&lt;/span&gt; sobre &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;líquidos&lt;/span&gt; y &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;partículas&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;representadas&lt;/span&gt; con el coprocesador:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ou3cKedwQ7s&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ou3cKedwQ7s&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-1658570715641129865?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/1658570715641129865/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/coprocesadores-para-las-gpu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1658570715641129865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1658570715641129865'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/coprocesadores-para-las-gpu.html' title='CoProcesadores para las GPU'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-2749118335075715131</id><published>2009-12-29T03:57:00.000-08:00</published><updated>2009-12-29T04:36:49.498-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 5'/><title type='text'>Analizando análisis: Tom Hardware</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NTaQYOdxj7w/SznyFeFMk8I/AAAAAAAAATg/X1NIoYkticY/s1600-h/Dibujo.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 262px; height: 108px;" src="http://1.bp.blogspot.com/_NTaQYOdxj7w/SznyFeFMk8I/AAAAAAAAATg/X1NIoYkticY/s400/Dibujo.JPG" alt="" id="BLOGGER_PHOTO_ID_5420629802305229762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Los análisis y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;comparativas&lt;/span&gt; de tarjetas gráficas son muy abundantes en los foros de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;videojuegos&lt;/span&gt;. Pero tal y como hemos visto en clase la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;mayoría&lt;/span&gt; de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;comparaciones&lt;/span&gt; son realizadas sobre medidas poco correctas, como el numero de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;teraflots&lt;/span&gt; o la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;memoria&lt;/span&gt; de cada tarjeta gráfica.&lt;br /&gt;En clase estuvimos analizando este tipo de medidas y una de las páginas que vimos fue &lt;a href="http://www.blogger.com/www.tomshardware.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Tom&lt;/span&gt;´s Hardware&lt;/a&gt;. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;Así&lt;/span&gt; que quise informarme a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;través&lt;/span&gt; de esta página de análisis de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;GPUs&lt;/span&gt; actuales y no tan actuales. En esta página &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;web&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;encontré&lt;/span&gt; un un articulo bastante interesante (y creo que completo) sobre distintas tarjetas gráficas: &lt;a href="http://www.tomshardware.com/charts/gaming-graphics-cards-charts-2009-high-quality/benchmarks,68.html"&gt;Resumen del cuarto trimestre de 2009&lt;/a&gt;&lt;br /&gt;En este artículo &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;veíamos&lt;/span&gt; una comparativa de las gráficas de alto rendimiento del mercado. Está enfocado concretamente al rendimiento de juegos actuales pero no deja &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;atrás&lt;/span&gt; el análisis de la tarjeta gráfica por parte de dos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Bechmark&lt;/span&gt; (&lt;a href="http://www.futuremark.com/"&gt;3&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;dMark&lt;/span&gt;&lt;/a&gt;, por ejemplo)...eso si, ambos están enfocados a gráficos de juegos.&lt;br /&gt;Cada análisis deja claro varios datos que son importantes a la hora de realizar el análisis de rendimiento, como la resolución con la que se va a trabajar. Estos detalles son clave en el fondo, ya que podemos ver si el rendimientos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;varía&lt;/span&gt; por las distintas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;configuraciones&lt;/span&gt; con las que trabajemos o por la tarjeta gráfica con que trabajemos en sí.&lt;br /&gt;Algo que me ha llamado la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;antención&lt;/span&gt; de los análisis es que prueban muchos juegos, indican la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;configuración&lt;/span&gt; con la que los prueban y cosas por el estilo, pero no hablan del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;PC&lt;/span&gt; que se utiliza. El resto de componentes del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;PC&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;también&lt;/span&gt; son importantes al evaluar el rendimiento de las tarjetas gráficas, pueden darse cuellos de botella en el Bus, por ejemplo. Imagino que los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;PCs&lt;/span&gt; utilizados serán de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;prácticamente&lt;/span&gt; iguales, pero cuando nosotros hagamos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;algún&lt;/span&gt; análisis de rendimiento &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;deberíamos&lt;/span&gt; tenerlo en cuenta (&lt;span style="font-style: italic;"&gt;fallo por mi parte en la evaluación que llevé a cabo en el &lt;/span&gt;&lt;a style="font-style: italic;" href="http://agm-urjc.blogspot.com/2009/10/analisis-de-hardware-specviewperf-100.html"&gt;Tema 1&lt;/a&gt;).&lt;br /&gt;Por último resaltar que la medida que nos muestran de rendimiento es el número de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;frames&lt;/span&gt; por segundo (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;FPS&lt;/span&gt;). Como vimos en clase esta medida de rendimiento es bastante orientativa si tenemos en cuenta todos los demás aspectos del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;PC&lt;/span&gt; que estamos evaluando. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_30"&gt;Así&lt;/span&gt; que como conclusión, creo que la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_31"&gt;próxima&lt;/span&gt; vez que tenga que comprarme una tarjeta gráfica buscare información en esta página &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;web&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-2749118335075715131?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/2749118335075715131/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/analizando-analisis-tom-hardware.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/2749118335075715131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/2749118335075715131'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/analizando-analisis-tom-hardware.html' title='Analizando análisis: Tom Hardware'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NTaQYOdxj7w/SznyFeFMk8I/AAAAAAAAATg/X1NIoYkticY/s72-c/Dibujo.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-7954352196215509535</id><published>2009-12-29T01:57:00.000-08:00</published><updated>2009-12-29T02:34:19.407-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 4'/><title type='text'>Modelos de programación para el Cell</title><content type='html'>El Cell es un procesador muy potente y lo que es  más importante, aunque lo tengamos en nuestras PS3, es un procesador de propósito general. Actualmente se está intentando sacar partido del Cell no solo en consola sino en investigaciones científicas. Por eso cuando debamos ponernos a programar en este tipo de máquina debemos pensar en que modelo de programación queremos seguir. A contiuación doy unos ejemplos.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Programación Secuencial.-&lt;/span&gt; O también podemos llamarlo "como desaprovechar el multinucleo". Con este modelo (el de toda la vida) vamos realizando las tareas paso a paso y no indicamos a los distintos procesadores como deben repartirse las tareas, por lo tanto, no se la reparten.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Modelo de programación de Dispositivos.-&lt;/span&gt; Este modelo consiste en tratar los distintos núcleos como dispositivos. Es parecido al modelo que se utiliza en los PC al programar aplicaciones en las que la CPU manda tareas a (por ejemplo) la tarjeta gráfica del PC. El procesador central (PPE) se dedicará a mandar tareas específicas a los SPE.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Modelo de Streaming.-&lt;/span&gt; Básicamente, creamos un pipeline o cauce de ejecución con los distintos SPE, con esto conseguimos que tareas complejas se dividan en tareas simples y se puedan ejecutar en paralelo. Para hacernos una idea, es parecido a la filosofia de dividir las instrucciones del procesador en etapas simples y solapar la ejecución de las etapas en un mismo momento.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Modelo de memoria compartida.-&lt;/span&gt; Este modelo se basa en que los SPE se encarguen de la misma tarea pero para muchos datos al mismo tiempo. Nuestra aplicación tendría un hilo de ejecución central por así decirlo, y en distintas partes del código tendríamos zonas en las que una misma tarea se reparte en distintos hilos para ejecutarse más rápidamente. Imaginaos un tabla muy grande que debemos procesar, pues llegada la zona en la que dividimos en hilos, cada dato de la tabla (o grupo de datos) se ejecuta por separado en distintos núcleos y se unifica el resultado después.&lt;/li&gt;&lt;/ol&gt;Estos solo son unos cuantos de los modelos que podemos utilizar. Evidentemente no son modelos exclusivos de la PS3, si os fijáis pueden ser utilizados para cualquier arquitectura multinucleo en la que queramos programar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-7954352196215509535?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/7954352196215509535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/modelos-de-programacion-para-el-cell.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/7954352196215509535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/7954352196215509535'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/modelos-de-programacion-para-el-cell.html' title='Modelos de programación para el Cell'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-3568878223661890277</id><published>2009-12-25T11:11:00.000-08:00</published><updated>2009-12-29T01:53:47.121-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 4'/><title type='text'>Versus: Cell contra Xenon</title><content type='html'>Existen millones de foros con hilos de comparativas entre Xbox 360 y PS3, con la única base de como se ve un juego en una consola u otra, o de el número de núcleos o TFlops que pueden ejecutar. Aquí voy a intentar hacer una comparativa un poco distinto,vamos a comparar las arquitecturas y veremos cual nos parece "mejor".&lt;br /&gt;En la entrada anterior me dediqué a analizar la CPU de la Xbox 360 haciendo referencia a mejoras de rendimiento. Ahora voy a analizar un poco el Cell y comparando paso a paso con el Xenon.&lt;br /&gt;El Cell es un procesador multicore formado por 1 PPE y 8 SPE. El PPE es un procesador al estilo de los 3 que tiene el Xenon, Power PC de intel con 23 etapas por instrucción y a 3,2 Ghz. Al igual que los del Xenon no permiten ejecución fuera de orden pero si multithreading. La única gran diferencia que encontramos es que el PPE del Cell,  además de incorporar cache de nivel 1 tiene su propia cache de 512 KB de nivel 2.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NTaQYOdxj7w/SznRfgGnk3I/AAAAAAAAATY/GA4Ps4lueNg/s1600-h/Dibujo.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 387px;" src="http://1.bp.blogspot.com/_NTaQYOdxj7w/SznRfgGnk3I/AAAAAAAAATY/GA4Ps4lueNg/s400/Dibujo.JPG" alt="" id="BLOGGER_PHOTO_ID_5420593965640946546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Los SPE son la gran diferencia de la CPU. Nos encontramos con 8 núcleos que trabajan a la misma frecuencia que el PPE y que tampoco permiten ejecución fuera de orden pero si multihilo. ¿Entonces en que lo diferenciamos? Pues en que los SPE, no tienen memoria cache de ningún tipo, utilizan almacenamiento local de 256 KB. Esto parece un desperdicio de procesador, pero la filosofía de la arquitectura se pueden aprovechar. Los SPE están conectados a un Bus de muy altas prestaciones llamado EIB que permite la comunicación entre ellos y además cada SPE puede acceder a los registros locales de otros SPE, intentan explotar que los SPE trabajen con el mayor paralelismo posible. Estos procesadores no son tan complejos como los del Xenon, pero son más y trabajan casi del mismo modo.&lt;br /&gt;Resumiendo un poco las ideas, parece que el Cell es mejor, pero todo tiene un pero. Es cierto que el Cell es más complejo y puede llevar a cabo tareas con más paralelismo que el Xenon, pero tiene la misma pega pero con mayor complejidad, no resuelve problemas de eficiencia por hardware, dejando mucha responsabilidad a los programadores o compiladores. Esto en la Xbox 360 es notable, pero en la PS3 es mucho mayor el problema. Ninguna de las CPU están siendo programadas como es debido, ya que no es fácil pero en una destaca más que en otra, por eso se ven juegos en PS3 de la misma calidad que en Xbox 360, se realizan de forma genérica sin centrarse en la arquitectura y sin sacar el rendimiento debidamente.&lt;br /&gt;&lt;br /&gt;PD: Casi todas las conclusiones son opinión propia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-3568878223661890277?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/3568878223661890277/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/versus-cell-contra-xenon.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3568878223661890277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3568878223661890277'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/versus-cell-contra-xenon.html' title='Versus: Cell contra Xenon'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NTaQYOdxj7w/SznRfgGnk3I/AAAAAAAAATY/GA4Ps4lueNg/s72-c/Dibujo.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-6773229867689005938</id><published>2009-12-16T02:29:00.000-08:00</published><updated>2009-12-25T10:30:24.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 4'/><title type='text'>Xenon Xbox 360, al detalle</title><content type='html'>Vamos a comenzar por dar un vistazo en general al &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xenon&lt;/span&gt;. Según las especificaciones tiene tres núcleos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PowerPC&lt;/span&gt; de 21 etapas de segmentación, cada núcleo permite &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;hyperthreading&lt;/span&gt; y trabaja a 3.2 GHz. Dicho así suena muy impresionante, pero vamos a mirarlo más de cerca.&lt;br /&gt;Tanta frecuencia de reloj parece un poco abrumadora, pero si tenemos en cuenta que en cada ciclo se ejecuta una etapa de una instrucción cualquiera, y que una instrucción se divide en 21 etapas, ya veis que la velocidad de ejecución por instrucción es menor (y mejor medida de rendimiento) que la frecuencia de reloj. Pero de cara al mercado es mucho mejor decir que la CPU corre a 3.2 GHz, cosas del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;marketing&lt;/span&gt;.&lt;br /&gt;Ahora vamos a meternos en la manera de trabajar del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xenon&lt;/span&gt;. AL contrario que otras CPU de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;proposito&lt;/span&gt; general, la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Xenon&lt;/span&gt; no puede trabajar con &lt;a href="http://es.wikipedia.org/wiki/Ejecuci%C3%B3n_fuera_de_orden"&gt;ejecución fuera de orden&lt;/a&gt; con las instrucciones, pero si tiene la ventaja del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;multithreading&lt;/span&gt;. Esto nos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;permitirá&lt;/span&gt; ejecutar por ejemplo en cada &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;núcleo&lt;/span&gt; un par de hilos de ejecución y teniendo en cuenta sus 3 &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;núcleos&lt;/span&gt;, en la teoría &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;podríamos&lt;/span&gt; ejecutar 6 hilos al mismo tiempo. Esto nos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;da&lt;/span&gt; un rendimiento bastante bueno al fin y al cabo, pero la arquitectura tiene un pega, esta filosofía es un problema para el desarrollo de software eficiente en la consola.&lt;br /&gt;Cambiemos de ámbito a analizar de la consola, la jerarquía de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;memoria&lt;/span&gt; y el acceso a ella es otro ámbito que merece la pena mencionar. La arquitectura tiene dos niveles de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;memoria&lt;/span&gt; cache, que nos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;da&lt;/span&gt; una mejora de rendimiento respecto a 1 solo nivel o el acceso a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;memoria&lt;/span&gt; principal &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;directamente&lt;/span&gt;. Cada procesador tiene su propia cache de primer nivel de 64, dividida en dos (instrucciones/datos) para evitar fallos de acceso. En cambio el nivel 2 de memoria cache es compartida entre todos los procesadores, y la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;mayoría&lt;/span&gt; de veces utilizado únicamente como &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;simple&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;buffer&lt;/span&gt; de almacenamiento.&lt;br /&gt;Toda esta arquitectura nos da un máquina con eficiente, centrada en el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;multithreading&lt;/span&gt; y parecida a las de propósito general, pero con mucha carga de eficiencia de rendimiento que deben solucionar los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;programadores&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-6773229867689005938?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/6773229867689005938/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/xenon-xbox-360-al-detalle.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6773229867689005938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6773229867689005938'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/12/xenon-xbox-360-al-detalle.html' title='Xenon Xbox 360, al detalle'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-6197988299592947990</id><published>2009-11-30T08:01:00.000-08:00</published><updated>2009-11-30T08:04:54.175-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 3'/><title type='text'>Explicación al detalle de las técnicas de gestión de E/S</title><content type='html'>Un ordenador no puede funcionar  si no tiene datos para poder trabajar con ellos. Estos datos no se crean de la nada, sino que tienen que alguien tiene que ponerlos en el ordenador a través de un sistema de Entrada/Salida.&lt;br /&gt;Los dispositivos de E/S (teclado, ratón,…) se comunican con la CPU a través del bus del sistema. Al no estar tan optimizada la E/S como el resto de sistemas, puede llevar a la bajada de rendimiento de nuestros equipos. Para solucionar esto, se han ideado técnicas de gestión con las que  realizar las tareas de E/S sin que afecte al resto del sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;E/S Programada.-&lt;/span&gt; Es tan simple como que la CPU realiza un sondeo (en bucle) sobre si los controladores del dispositivo de E/S para ver su estado, y usarlos cuando sea preciso. Este sistema está anticuado, ya que la CPU estará la mayoría de veces en espera de los dispositivos de E/S.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;E/S por Interrupciones.-&lt;/span&gt; En vez de ser la CPU la que espere al dispositivo, será el dispositivo el que interrumpa a la CPU para avisar de la finalización de las operaciones. Entonces la CPU puede resolver que dispositivo ha lanzado la interrupción, realizar las operaciones necesarias (rutina de manejo de interrupciones) y enviar la siguiente operación al dispositivo.&lt;br /&gt;Esta técnica permite a la CPU estar trabajando en otras operaciones sin dedicarle tiempo al dispositivo. Este manejo de la E/S puede parecer un mecanismo bastante bueno, pero todo depende de si  hay excesiva carga de E/S, porque si se da el caso la CPU puede dedicar demasiado tiempo al manejo de estas instrucciones y llegar de nuevo a la bajada de rendimiento.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;E/S por DMA (Acceso Directo a Memoria).-&lt;/span&gt; Tendremos un dispositivo auxiliar que controlará por sí mismo la escritura de E/S directamente en memoria, sin pasar por la CPU. La CPU sigue teniendo carga de trabajo, pero es mínima, solo se encarga de decirle a la DMA la fuente/destino de la transferencia de datos. Para poder llevar a cabo la transferencia de datos, la DMA “roba” un ciclo del bus el sistema para poder escribir en memoria. Una vez los datos estén en memoria la DMA avisa a la CPU que los datos están listos.&lt;br /&gt;Esta forma de trabajar evita que la CPU tenga que estar cambiando de contextos de procesos cada vez que una operación de E/S de termine. En contra tenemos que el DMA y la CPU estarán compitiendo por el uso del bus y puede darse que la CPU trabaje a menor velocidad al final.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;E/S por Procesador Dedicado.-&lt;/span&gt; Hoy en día el peso de las operaciones de E/S se deja sobre un co-procesador dedicado exclusivamente a ello. La CPU solo se comunica con él para comunicarle sus necesidades de los dispositivos de E/S. El procesador de E/S ejecuta código propio para controlar la operación. Además, en la actualidad, se añade cierta cantidad de memoria RAM a los dispositivos, y las transferencias se realizan sobre esta memoria.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-6197988299592947990?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/6197988299592947990/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/explicacion-al-detalle-de-las-tecnicas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6197988299592947990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6197988299592947990'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/explicacion-al-detalle-de-las-tecnicas.html' title='Explicación al detalle de las técnicas de gestión de E/S'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-4541294729861689463</id><published>2009-11-30T07:58:00.000-08:00</published><updated>2009-11-30T08:01:10.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 3'/><title type='text'>Comparativa: PCI‐Express vs. PCI y AGP</title><content type='html'>Poniéndonos en antecedentes podemos ver como los buses PCI y AGP “competían” en la misma época. Ambos estaban presentes en numerosas tarjetas gráficas y de prestaciones equiparables, aunque cada una trabajase de cierta manera. PCI-Express es la evolución del PCI y el bus actual de las tarjetas gráficas. Pasemos a ver las características de cada uno.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PCI.-&lt;/span&gt; El bus PCI tiene 32 bits de comunicaciones que trabajan a una frecuencia de 33 MHz, por lo tanto la tasa de transferencias teórica es de 133 Mbits/s. Velocidad de transferencia más que suficiente para cualquier tarjeta gráfica 2D.&lt;br /&gt;Evidentemente no solo hay un tipo de PCI, dependiendo de los requisitos electrónicos se pueden dividir en tres tipos.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;PCI de 5 voltios.&lt;/li&gt;&lt;li&gt;PCI de 3.3 voltios, más usadas en ordenadores portátiles.&lt;/li&gt;&lt;li&gt;Universales, seleccionan el voltaje automáticamente y se utilizan tanto en sobremesas como en portátiles.&lt;/li&gt;&lt;/ol&gt;También existen distintas ranuras de acuerdo con los bits que se puedan transportar.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ranuras de 32 bits: son las normales y más extendidas.&lt;/li&gt;&lt;li&gt;Ranuras de 64 bits: muy recientes, agregan 32 conectores más.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;AGP.-&lt;/span&gt; Bus para conectar periféricos a la placa base del equipo. Los buses AGP trabajan a distintas frecuencias y voltajes, hay más diferencias entre ellas que en el caso de las PCI.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;AGP 1X, frecuencia de 66 MHz y tasa de transferencia de 264 MB/s con un voltaje de 3,3 V.&lt;/li&gt;&lt;li&gt;AGP 2X, frecuencia de 133 MHz y tasa de transferencia de 528 MB/s con un voltaje de 3,3 V.&lt;/li&gt;&lt;li&gt;AGP 4X, frecuencia de 266 MHz y tasa de transferencia de 1 GB/s con un voltaje de 3,3 o 1,5 V, para poder adaptarse al diseño de tarjetas gráficas.&lt;/li&gt;&lt;li&gt;AGP 8X, frecuencia de 533 MHz y tasa de transferencia de 2 GB/s con un voltaje de 0,7 o 1,5 V.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;PCI-Express.-&lt;/span&gt; Es mucho más veloz que los dos buses anteriores, convirtiéndose en el sustituto natural de los dos. Dependiendo del dispositivo existen PC-Express de distintas frecuencias de reloj. Para trabajar con dispositivos de sonido o de televisión se puede utilizar PCI-Express 1x (133Mhz). Pero en el caso de tarjetas gráficas se utiliza PCI-Express 16x de 2128Mhz. Existen más modelos (1x, 2x, 3x, 4x, 16x).&lt;br /&gt;Se ha convertido en el sustituto de AGP por velocidad de transferencia y al ser la evolución del PCI se ha afianzado en el mercado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-4541294729861689463?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/4541294729861689463/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/comparativa-pciexpress-vs-pci-y-agp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/4541294729861689463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/4541294729861689463'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/comparativa-pciexpress-vs-pci-y-agp.html' title='Comparativa: PCI‐Express vs. PCI y AGP'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-2793618227243392538</id><published>2009-11-27T02:50:00.000-08:00</published><updated>2009-11-30T07:58:10.275-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 3'/><title type='text'>Análisis de Jerarquia de memoria: MacBook</title><content type='html'>Voy a centrarme en el análisis de la jerarquia memoria de un ordenador que hoy en dia esta de moda (no se puede definir de otra manera). El MacBook es un ordenador portatil de Mac con unas especificaciones muy concretas, no es tan buena máquina como diseño, al estilo de los productos Mac. Según he podido investigar la jerarquia de memoria del equipo queda de la siguiente manera:&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Caché L1:&lt;/span&gt; el MacBook lleva un procesador Intel Core 2 Duo con dos niveles de cache. Cada core lleva un nivel L1 de 64 KB (32 de &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NTaQYOdxj7w/SxPofeMDTXI/AAAAAAAAATE/Bm_r_d2pcoE/s1600/MACBOOK.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 109px; height: 264px;" src="http://2.bp.blogspot.com/_NTaQYOdxj7w/SxPofeMDTXI/AAAAAAAAATE/Bm_r_d2pcoE/s400/MACBOOK.bmp" alt="" id="BLOGGER_PHOTO_ID_5409923204779298162" border="0" /&gt;&lt;/a&gt;instrucciones/32 de datos).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Caché L2:&lt;/span&gt; Un nivel de cache L2 de 3 MB compartida por el par de nucleos que funciona a la velocidad del procesador. Los dos niveles de cache trabajan a la frecuencia de reloj del procesador, 2,26 GHz.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Bus de comunicación frontal:&lt;/span&gt; Conecta la CPU, memoria principal y el resto de componentes del equipo. Trabaja a 1.066 MHz.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Memoria Principal: &lt;/span&gt;Dos módulos SO-DIMM de memoria DDR3 de 1 GB cada uno, un total de 2 GB. Trabaja a 800 MHz (2 transferencias por ciclo).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Memoria secundaria: &lt;/span&gt;Disco duro SATA de 250 GB o 500 GB.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-2793618227243392538?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/2793618227243392538/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-jerarquia-de-memoria.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/2793618227243392538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/2793618227243392538'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-jerarquia-de-memoria.html' title='Análisis de Jerarquia de memoria: MacBook'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NTaQYOdxj7w/SxPofeMDTXI/AAAAAAAAATE/Bm_r_d2pcoE/s72-c/MACBOOK.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-5583836451710006029</id><published>2009-11-26T06:58:00.000-08:00</published><updated>2009-11-27T02:08:43.811-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 3'/><title type='text'>Memorias DRAM de Tarjetas Gráficas y Consolas</title><content type='html'>Toda arquitectura (tanto gráfica como de propósito general) tiene una memoria principal. Al aparecer arquitecturas dedicadas a gráficos se provocó un avance, y una especialización de memorias dedicadas a gráficos. En este post daré un repaso leve a distintas memorias &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DRAM&lt;/span&gt; para tarjetas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;gŕaficas&lt;/span&gt; y comentaré los tipos de memoria de la actual generación de consolas.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Memorias &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;DRAM&lt;/span&gt; en Tarjetas Gráficas&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;DRAM&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;EDO&lt;/span&gt;.- Esta memoria era capaz de acceder introducir datos mientras los de salida aun no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;estan&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;colodos&lt;/span&gt; en el BUS del sistema, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;tenían&lt;/span&gt; una especie de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;buffer&lt;/span&gt;. La máxima velocidad de lectura de la memoria &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;EDO&lt;/span&gt; RAM es de 5-2-2-2 ciclos y es &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;difícil&lt;/span&gt; crear memorias de este tipo que funcionen a velocidades de reloj superiores a 66&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Mhz&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;VRAM&lt;/span&gt;.- Este &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;memoria&lt;/span&gt; es exclusiva de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;vídeo&lt;/span&gt;. Esta memoria era muy similar a la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;EDO&lt;/span&gt;, la principal &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;caraterística&lt;/span&gt; es que se podía acceder a memoria desde dos dispositivos a la vez, tenia un puerto dual, o leer y escribir al mismo tiempo.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;WRAM&lt;/span&gt;.- No es más que una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;VRAM&lt;/span&gt; optimizada, trabaja del mismo modo, con puerto dual, pero tiene un tiempo de acceso más rápido y es más barato.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SGRAM&lt;/span&gt;.- Es un tipo de especialización de la memoria &lt;a href="http://es.wikipedia.org/wiki/SDRAM"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;SDRAM&lt;/span&gt;&lt;/a&gt; (de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_21"&gt;ámbito&lt;/span&gt; general). Añade mejoras a la hora de escribir en un solo bit sin afectar a otros y escritura de linea entera de un mismo "color". Tiene un solo puerto de entrada y salida pero puede simular el doble puerto creando dos paginas de memoria&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;MDRAM&lt;/span&gt;.- Esta arquitectura define la memoria como un conjunto de bloques pequeños (32 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;KB&lt;/span&gt;) en paralelo conectados a un BUS. Esto conlleva poder trabajar con accesos a memoria en paralelo.&lt;/li&gt;&lt;li&gt;3&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;DRAM&lt;/span&gt;.- Es una memoria optimizada para 3D, ya que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;integra&lt;/span&gt; en la memoria una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;unida&lt;/span&gt; ALU para poder llevar a cabo operaciones (Z-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Buffer&lt;/span&gt;, por ejemplo) en la misma memoria.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;GDDR&lt;/span&gt; (1,2,3, 4, 5).- Son memorias basadas en la tecnología &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;DDR&lt;/span&gt; (dos transferencias por ciclo, en bajada y subida) pero optimizadas para tarjetas gráficas. Los distintos tipos son sucesivas mejoras en rendimiento, velocidad y amplitud de ancho de banda, pero la arquitectura sigue siendo la misma. Las tarjetas gráficas de alta &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;prestaciones&lt;/span&gt; actuales usan &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;GDDR&lt;/span&gt;5 y las de baja &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;GDDR&lt;/span&gt;3.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_33"&gt;Después&lt;/span&gt; de ver este leve resumen, podemos observar como los avances en memoria se dan de manera paralela entre memoria para &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;PC&lt;/span&gt; y para gráficos, siempre siendo la de gráficos optimizada.&lt;br /&gt;Ahora veamos que tipos de memoria utilizan las consolas de la actual generación:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;XBOX&lt;/span&gt; 360.- &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;GDDR&lt;/span&gt;3 RAM a 700 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;Mhz&lt;/span&gt;, es una arquitectura &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;convencional&lt;/span&gt;, no quiere decir que la tarjeta gráfica sea de baja gamma, simplemente no les hace falta más.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;PS&lt;/span&gt;3.- Para sorpresa tiene dos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_40"&gt;módulos&lt;/span&gt; de memoria. Uno &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;GDDR&lt;/span&gt;3 para la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;GPU&lt;/span&gt; (características similares a la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;XBOX&lt;/span&gt;) y otra &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;XDR&lt;/span&gt; RAM, memoria de tipo &lt;a href="http://es.wikipedia.org/wiki/Memoria_de_acceso_aleatorio#RDRAM_.28Rambus_DRAM.29"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;Rambus&lt;/span&gt; RAM&lt;/a&gt; que se basa en una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;comunicación&lt;/span&gt; serie de alta velocidad y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;prestaciones&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;Nintendo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;Wii&lt;/span&gt;.- &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;GDDR&lt;/span&gt;3 normal para trabajar con gráficos y una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;ARAM&lt;/span&gt; (memoria de bajas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;prestaciones&lt;/span&gt;) dedicada exclusivamente al audio, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_53"&gt;así&lt;/span&gt; liberan la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;GDDR&lt;/span&gt;3 de datos de audio.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-5583836451710006029?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/5583836451710006029/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/memorias-dram-de-tarjetas-graficas-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/5583836451710006029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/5583836451710006029'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/memorias-dram-de-tarjetas-graficas-y.html' title='Memorias DRAM de Tarjetas Gráficas y Consolas'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-8664223319584174834</id><published>2009-11-26T01:21:00.000-08:00</published><updated>2009-11-26T06:03:14.777-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 3'/><title type='text'>Organizaciones de Memoria Cache y su rendimiento</title><content type='html'>Uno de los problemas importantes a la hora de la velocidad de trabajo de un ordenador son los retardos por accesos a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;memoria&lt;/span&gt;. La CPU tiene que trabajar con datos, pero estar continuamente accediendo a la memoria principal es costoso en tiempo. Por ello en los ordenadores de hoy en día existe la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Jerarquía&lt;/span&gt; de Memorias:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NTaQYOdxj7w/Sw57LMy7wNI/AAAAAAAAAS8/7N3nmddhewE/s1600/jerarquia+de+memoria.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_NTaQYOdxj7w/Sw57LMy7wNI/AAAAAAAAAS8/7N3nmddhewE/s400/jerarquia+de+memoria.jpg" alt="" id="BLOGGER_PHOTO_ID_5408395634862178514" border="0" /&gt;&lt;/a&gt;Esta &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;jerarquía&lt;/span&gt; nos ayuda a agilizar los accesos a memoria. Pero hay que tener en cuenta que el rendimiento que esta &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;jerarquía&lt;/span&gt; (el caso que estudiamos el de la cache) depende totalmente de la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;organización&lt;/span&gt; de ellas.&lt;br /&gt;Podemos pensar en la caché como una tabla dividida en filas, que serán las unidades básicas de almacenamiento. Cada vez que traemos información de le memoria principal a la caché, traemos como mínimo una línea, funcionando del mismo modo a la hora de escribir desde caché a memoria principal.&lt;br /&gt;La idea principal que debemos tener en cuenta para organizar la cache, es como se va a comunicar la caché con la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;memoria&lt;/span&gt; principal. Es decir, como vamos a traducir las direcciones de la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;memoria&lt;/span&gt; principal en caché. Existen tres técnicas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1)  Caché &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;completamente&lt;/span&gt; asociativa:&lt;br /&gt;&lt;/span&gt;Este tipo de caché puede almacenar en cualquiera de sus filas cualquier posición de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;memoria&lt;/span&gt; principal. Esto quiere decir que no se realizan &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;búsquedas&lt;/span&gt; para seleccionar en que parte de la caché se almacenará (en la primera línea vacía que tengamos) y que el acierto es muy alto. Pero por el contrario, el tiempo de acceso a la caché es muy alto, ya que al buscar cualquier dato nos encontramos con que puede &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;estar&lt;/span&gt; en cualquier parte.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Caché de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;mapeado&lt;/span&gt; directo:&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;En este caso cada dirección de memoria principal &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;tendrá&lt;/span&gt; una posición en caché concreta donde se debe almacenar. Esto nos da la ventaja de saber de antemano que al acceder a caché encontraremos la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;dirección&lt;/span&gt; que estamos buscando en esa linea, es decir, velocidad de acceso muy alta.&lt;br /&gt;Pero por otro lado tenemos el inconveniente de que a una linea de caché corresponden varias posiciones de memoria principal, o lo que es lo mismo, que hay muchas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;posibilidades&lt;/span&gt; que cada vez que busquemos los datos en caché de cierta &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;posición&lt;/span&gt; de memoria, encontremos datos referentes a otra posición, tendremos una alta tasa de fallos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Caché asociativa por conjuntos:&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Si ninguno de los &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;métodos&lt;/span&gt; de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;organización&lt;/span&gt; anteriores son eficientes, podemos mezclarlos para dar una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;organización&lt;/span&gt; mixta. Esta es la idea de la "asociativa por conjuntos"&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;. La caché estará dividida por bloques o conjuntos con más de una linea, cada dirección de memoria principal corresponderá a un bloque y dentro del bloque se &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;distribuirá&lt;/span&gt; de manera asociativa.&lt;br /&gt;En este caso particular la eficiencia dependerá del tamaño del bloque que decidamos utilizar. Mientras mayor sea el tamaño de bloque la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;memoria&lt;/span&gt; parecerá más asociativa, y si es menor más de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;mapeado&lt;/span&gt; directo, cada una con sus ventajas e inconvenientes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-8664223319584174834?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/8664223319584174834/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/organizaciones-de-memoria-cache-y-su.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/8664223319584174834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/8664223319584174834'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/organizaciones-de-memoria-cache-y-su.html' title='Organizaciones de Memoria Cache y su rendimiento'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NTaQYOdxj7w/Sw57LMy7wNI/AAAAAAAAAS8/7N3nmddhewE/s72-c/jerarquia+de+memoria.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-1061665489299441904</id><published>2009-11-09T04:20:00.000-08:00</published><updated>2009-11-09T04:50:59.042-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>Multithreading en Arquitecturas Gráficas</title><content type='html'>El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Multithreading&lt;/span&gt; (o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;multihilo&lt;/span&gt; en español) es una forma de programar,  y por consiguiente de estructurar el hardware del procesador para la compatibilidad, en la cual los &lt;a href="http://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n"&gt;hilos de ejecución&lt;/a&gt; comparten el mismo estado de memoria. Al separar las tareas en hilos de ejecución diferentes, el procesador puede llevar a cabo muchos más al mismo tiempo y, por lo tanto, aumentando la productividad. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Evidentemente&lt;/span&gt; no es &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;fácil&lt;/span&gt; de hacer, hay que tener en cuenta que se deben programar hilos teniendo en cuenta su tiempo de ejecución.&lt;br /&gt;El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Multithreading&lt;/span&gt; surgió en las CPU y hasta hace poco no se encontraban en las arquitecturas gráficas. A partir de 2008 surgen tarjetas gráficas con arquitecturas con varios &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;núcleos&lt;/span&gt;, en los cuales se puede aprovechar el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;multithreading&lt;/span&gt;.&lt;br /&gt;En clase hemos visto la serie 9 de las tarjetas gráficas de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Nvidia&lt;/span&gt;. Las arquitecturas de esta serie de tarjetas gráficas incluyen una arquitectura &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;multinúcleo&lt;/span&gt;. Pero no solo se trabaja de esta manera en las tarjetas gráficas, por &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;ejemplo&lt;/span&gt; la tecnología &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Hybrid&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SLI&lt;/span&gt; de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Nvidia&lt;/span&gt;. Esta tecnología en los portátiles trabaja con una tarjeta gráfica integrada en la placa base y otra no integrada, haciendo que las dos trabajen &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;conjuntamente&lt;/span&gt;.&lt;br /&gt;Un ejemplo más actual de este modo de trabajo lo tenemos en la nueva tecnología de &lt;a href="http://agm-urjc.blogspot.com/2009/11/analisis-de-una-arquitecuta-de-gpu.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Nvidia&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Fermi&lt;/span&gt;&lt;/a&gt; (vista en una entrada anterior del blog). Esta arquitectura tiene un controlador llamado &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;GigaThread&lt;/span&gt; que se encarga exclusivamente de poder trabajar con el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;multithreading&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-1061665489299441904?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/1061665489299441904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/multithreading-en-arquitecturas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1061665489299441904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1061665489299441904'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/multithreading-en-arquitecturas.html' title='Multithreading en Arquitecturas Gráficas'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-1354338161762017378</id><published>2009-11-09T02:50:00.000-08:00</published><updated>2009-11-09T04:10:51.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>Predictores de salto multinivel y adaptativos</title><content type='html'>Los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;predictores&lt;/span&gt; de saltos son recursos hardware para reducir ciclos de paradas de la ejecución. Concretamente paradas provocadas por tener que evaluar una condición antes de decidir cual será la siguiente instrucción. Para poder crear &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;predictores&lt;/span&gt; funcionales hay que estudiar el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;comportamiento&lt;/span&gt; de los programas. Hoy voy a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;analizar&lt;/span&gt; dos tipos de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;predictores&lt;/span&gt; en concreto:&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Predictores&lt;/span&gt; de Salto Multinivel&lt;/span&gt;&lt;br /&gt;Los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;predictores&lt;/span&gt; multinivel se caracterizan por utilizar información del salto para el que se realiza la predicción, junto a información del resto de saltos del programa.&lt;br /&gt;Un ejemplo sencillo para entender esta clase de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;predictores&lt;/span&gt; es el paso del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;preditor&lt;/span&gt; 1-1. Su nombre viene de utilizar el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;comportamiento&lt;/span&gt; del último salto para seleccionar un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;predictor&lt;/span&gt; de 1 bit para el salto que estamos evaluando. El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;predictor&lt;/span&gt; que queda es el siguiente:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;El primer bit denomina la predicción si el último salto del programa no se había tomado.&lt;/li&gt;&lt;li&gt;El segundo bit denomina la predicción en el caso contrario, si se ha tomado el último salto.&lt;/li&gt;&lt;/ol&gt;Los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;predictores&lt;/span&gt; multinivel se denominan M-N, es decir, utilizan el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;funcionamiento&lt;/span&gt; de los &lt;span style="font-weight: bold;"&gt;m&lt;/span&gt; últimos saltos tomados para escoger un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;predictor&lt;/span&gt; de &lt;span style="font-weight: bold;"&gt;n&lt;/span&gt; bits para el salto que se está evaluando.&lt;br /&gt;Si tenemos la información de los saltos anteriores del programa podemos mejorar la tasa de aciertos de la predicción del salto actual. Pero tiene una pega grande, la gran complejidad del hardware que hace falta para tener &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;encuentra&lt;/span&gt; la predicción de todos estos saltos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Predictores&lt;/span&gt; Adaptativos&lt;/span&gt;&lt;br /&gt;Estos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;predictores&lt;/span&gt; pueden seleccionar si trabajan con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;predictores&lt;/span&gt; que trabajen con información exclusivamente del salto con el que estamos trabajando o con información los n saltos anteriores (como los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;predictores&lt;/span&gt; multinivel).&lt;br /&gt;Un ejemplo de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;predictor&lt;/span&gt; adaptativo trabajaría de la siguiente manera: Si las dos últimas predicciones de salto han fallado con un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;predictor&lt;/span&gt; que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;evalúa&lt;/span&gt; la información local, se cambia la siguiente predicción, para que se escoja teniendo en cuenta la información de otros saltos del código del programa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-1354338161762017378?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/1354338161762017378/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/predictores-de-salto-multinivel-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1354338161762017378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/1354338161762017378'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/predictores-de-salto-multinivel-y.html' title='Predictores de salto multinivel y adaptativos'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-3324505469317116239</id><published>2009-11-07T10:16:00.000-08:00</published><updated>2009-11-11T04:46:40.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>Análisis de una arquitectura de CPU: Intel Core i7</title><content type='html'>Al mismo hilo que la entrada anterior, vamos a analizar un poco la nueva arquitectura de CPU de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Intel&lt;/span&gt;: &lt;a href="http://www.intel.com/espanol/products/processor/corei7/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Intel&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Core&lt;/span&gt; i7&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW89-D4-XI/AAAAAAAAASM/LJwfPN0myv4/s1600-h/nehalem-quad-core-rusheroz-wordpress-com.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 251px;" src="http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW89-D4-XI/AAAAAAAAASM/LJwfPN0myv4/s320/nehalem-quad-core-rusheroz-wordpress-com.jpg" alt="" id="BLOGGER_PHOTO_ID_5401431100918135154" border="0" /&gt;&lt;/a&gt;La principal característica de esta linea de CPU son sus 4 procesadores de 64 bits de tamaño de palabra. Se ha optimizado la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;comunicación&lt;/span&gt; entre los procesadores para acelerar la realización de tareas simultaneas.&lt;br /&gt;Además, tal y como se puede apreciar en el esquema, cada procesador lleva consigo un controlador de memoria integrado. Este controlador ofrece mejoras en el ancho de banda y latencia para programas con uso intensivo de datos. Estas mejoras vienen en forma de 3 canales de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;comunicación&lt;/span&gt; con &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;memoria&lt;/span&gt; principal &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;DDR&lt;/span&gt;3. Esto, según hemos visto actualmente en clases, significa la posibilidad de trabajar con hasta tres módulos de memória principal DDR3 paralélamente.&lt;br /&gt;No solo el acceso a la memoria principal se ha mejorado, la cache principal del procesador es de un tamaño de 8 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MB&lt;/span&gt;, lo que ayuda bastante a la ejecución de programas.&lt;br /&gt;Un último detalle que comentar son sus ocho subprocesos de procesamiento con la tecnología &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Hyper&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Threading&lt;/span&gt;, con lo cual sus cuatro procesadores simularán ser 8 procesadores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-3324505469317116239?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/3324505469317116239/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-una-arquitectura-de-cpu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3324505469317116239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3324505469317116239'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-una-arquitectura-de-cpu.html' title='Análisis de una arquitectura de CPU: Intel Core i7'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW89-D4-XI/AAAAAAAAASM/LJwfPN0myv4/s72-c/nehalem-quad-core-rusheroz-wordpress-com.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-7594438424651927238</id><published>2009-11-07T09:23:00.000-08:00</published><updated>2009-11-07T10:15:37.336-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>Análisis de una arquitecuta de GPU: Nvidia Fermi</title><content type='html'>Por seguir la evolución de las tarjetas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Nvidia&lt;/span&gt; vistas en clase he preferido analizar la nueva arquitectura de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Nvidia&lt;/span&gt;: &lt;a href="http://www.nvidia.es/object/fermi_architecture_es.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Fermi&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;Tal y como las series vistas en clase, el hardware está pensado para gestionar tres tipos de threads que se ejecutan en la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;GPU&lt;/span&gt;. En este caso se han ampliado la cantidad de chips como se hizo en el paso de la serie 6 a 7. Especialmente diseñado para ejecutar una enorme cantidad de tareas en paralelo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW4hwkoauI/AAAAAAAAASE/pQpDZl1JujA/s1600-h/fermi-block.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 271px;" src="http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW4hwkoauI/AAAAAAAAASE/pQpDZl1JujA/s320/fermi-block.png" alt="" id="BLOGGER_PHOTO_ID_5401426218214517474" border="0" /&gt;&lt;/a&gt;-16 celdas de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;stream&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Streaming&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Multiprocessor&lt;/span&gt;)&lt;br /&gt;-32 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;cores&lt;/span&gt; en cada celda&lt;br /&gt;-Cada celda contiene una memoria a modo de registros de 4 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;kb&lt;/span&gt;.&lt;br /&gt;-2 niveles de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;chache&lt;/span&gt;. Nivel 1 de cache totalmente dedicada para cada celda de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;stream&lt;/span&gt; (1&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Mb&lt;/span&gt;) y una cache compartida por todas las celdas de nivel 2 (768&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Kb&lt;/span&gt;).&lt;br /&gt;-Para la ejecución de threads se dispone de un controlador que los gestiona, el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;GigaThread&lt;/span&gt;.&lt;br /&gt;-Además cada celda &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;SM&lt;/span&gt; contiene procesadores especiales para calculo de operaciones complejas con números en coma flotante.&lt;br /&gt;&lt;br /&gt;Como contrapunto, la única pega que se le puede sacar es la poca memoria por celda usada a modo de registros. Imagino que esto puede acarrear &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;dificultades&lt;/span&gt; a la hora de la cantidad de operaciones que se ejecutan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-7594438424651927238?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/7594438424651927238/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-una-arquitecuta-de-gpu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/7594438424651927238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/7594438424651927238'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/11/analisis-de-una-arquitecuta-de-gpu.html' title='Análisis de una arquitecuta de GPU: Nvidia Fermi'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NTaQYOdxj7w/SvW4hwkoauI/AAAAAAAAASE/pQpDZl1JujA/s72-c/fermi-block.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-620711046988121624</id><published>2009-10-27T05:30:00.000-07:00</published><updated>2009-11-27T00:22:46.376-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>Resolución de riesgos de Segmentación: MIPS</title><content type='html'>Antes de comenzar con las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;explicaciones&lt;/span&gt; detalladas de las técnicas de resolución, debería explicar brevemente en que consiste la &lt;a href="http://es.wikipedia.org/wiki/Segmentaci%C3%B3n_%28inform%C3%A1tica%29"&gt;Segmentación&lt;/a&gt;. Básicamente es una técnica que permite solapar la ejecución de instrucciones, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;dividiendolas&lt;/span&gt; en etapas. En las arquitecturas &lt;a href="http://es.wikipedia.org/wiki/MIPS_%28procesador%29"&gt;MIPS&lt;/a&gt; clásicas son:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Búsqueda de la instrucción en memoria. &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IF&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Lectura de registros mientras se decodifica la instrucción. &lt;span style="font-weight: bold;"&gt;ID&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ejecución de la operación o cálculo de una dirección. &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;EX&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Acceso a un operando en memoria. &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MEM&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Escritura del resultado en memoria. &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;WB&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Estas etapas son ejecutadas por separado realizando la ejecución de las instrucciones del siguiente modo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NTaQYOdxj7w/Subo8VuPzaI/AAAAAAAAARs/EVFnhs0ozb0/s1600-h/Fivestagespipeline.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 93px;" src="http://1.bp.blogspot.com/_NTaQYOdxj7w/Subo8VuPzaI/AAAAAAAAARs/EVFnhs0ozb0/s320/Fivestagespipeline.png" alt="" id="BLOGGER_PHOTO_ID_5397257326771031458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pero la segmentación trae consigo problemas:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Riesgos estructurales (Instrucciones que utilizan los mismos recursos a la vez)&lt;/li&gt;&lt;li&gt;Riesgos de datos (Necesidad de datos que aun se están calculando)&lt;/li&gt;&lt;li&gt;Riesgos de control (Problemas al controlar los saltos en un código)&lt;/li&gt;&lt;/ol&gt;Existen técnicas para resolver estos riesgos. A continuación &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;voy&lt;/span&gt; a explicar las que se utilizan en los procesadores tipo MIPS clásicos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ESTRUCTURALES&lt;/span&gt;. En este caso se ha decidido duplicar los recursos. Por ejemplo, en cierto código la etapa de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;IF&lt;/span&gt; de una operación se ejecuta al mismo tiempo que la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MEM&lt;/span&gt; de otra (como en la imagen anterior). Esto crea un conflicto ya que ambas etapas acceden a memoria. En MIPS se ha separado la memoria de datos y de instrucciones, de esta manera se evitan todos estos conflictos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DE DATOS&lt;/span&gt;. Supongamos en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;este&lt;/span&gt; caso que tenemos una instrucción &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;add&lt;/span&gt; &lt;/span&gt;seguida de una instrucción &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;sub&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;add&lt;/span&gt; $s0, $t0, $t1&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;sub&lt;/span&gt; $t2,  $s0, $t3&lt;br /&gt;En este caso la segunda instrucción se verá obligada a esperar antes de la etapa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;EX&lt;/span&gt; hasta que la primera escriba en memoria. La arquitectura MIPS lo soluciona con &lt;span style="font-style: italic;"&gt;cortocircuitos &lt;/span&gt;o &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;anticipación&lt;/span&gt;&lt;/span&gt;. Esta técnica consiste en unir la ALU (Unidad &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;Aritmético&lt;/span&gt; Lógica, en español) perteneciente a la ejecución de la etapa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;EX&lt;/span&gt; de la primera instrucción, con la entrada de datos de la etapa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;EX&lt;/span&gt; de la segunda instrucción, evitando &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;así&lt;/span&gt; el acceso a memoria.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DE CONTROL&lt;/span&gt;. Cuando la instrucción a ejecutar se trata de un salto, no se sabe si la siguiente instrucción será la que se debe ejecutar. Esto trae muchos problemas de espera ya que en los códigos es muy común instrucciones de tipo &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;if&lt;/span&gt; &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;while&lt;/span&gt;&lt;/span&gt;. Existen soluciones como bloquear la ejecución, predecir el salto o retardar la decisión. Esta última es la utilizada en los procesadores MIPS.&lt;br /&gt;Su &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;funcionamiento&lt;/span&gt; es sencillo, mientras se decide si el salto se debe tomar o no, el procesador pone como siguiente instrucción a ejecutar una que no dependa de la decisión del salto. Todo el proceso de que instrucción colocar es "invisible" para el programador, el procesador se encarga de ello de manera automática.&lt;br /&gt;&lt;br /&gt;Como detalle &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;bibliográfico&lt;/span&gt;, todas estas técnicas vienen especialmente bien explicadas en el libro Estructura y diseño de computadores de D.A. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Patterson&lt;/span&gt; y J.L. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Hennessy&lt;/span&gt;, Volumen 2. Me ha sido especialmente útil y los ejemplos sobre la segmentación comparada al proceso del lavado de ropa es muy &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;fácil&lt;/span&gt; de ver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-620711046988121624?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/620711046988121624/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/resolucion-de-riesgos-de-segmentacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/620711046988121624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/620711046988121624'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/resolucion-de-riesgos-de-segmentacion.html' title='Resolución de riesgos de Segmentación: MIPS'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NTaQYOdxj7w/Subo8VuPzaI/AAAAAAAAARs/EVFnhs0ozb0/s72-c/Fivestagespipeline.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-6469396189906541172</id><published>2009-10-19T03:43:00.000-07:00</published><updated>2009-10-26T01:19:38.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 2'/><title type='text'>RISC vs. CISC</title><content type='html'>&lt;span style="font-family: arial;"&gt;Antes de meternos a comparar voy a explicar brevemente uno y otro tipo de arquitectura de CPU:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;-CISC (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:HELVETICA,ARIAL;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;complex&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;instruction&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;set&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;computer&lt;/span&gt;): Como su propio nombre implica, son &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CPUs&lt;/span&gt; de una variedad muy amplia de instrucciones y que permiten operaciones muy complejas con registros, esto conlleva instrucciones de tamaño grande y que tardan varios ciclos de reloj en ejecutarse, pero a cambio da una gran potencia al microprocesador.&lt;br /&gt;Uno de los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;contras&lt;/span&gt; (bajo mi punto de vista personal) es la dificultad de aplicar mejoras al rendimiento de la CPU como el paralelismo de instrucciones, es decir, cuesta mucho poder ejecutar varias instrucciones al mismo tiempo.&lt;br /&gt;Por otro lado la arquitectura CISC ayuda al desarrollo software, ya que al tener un juego de instrucciones tan amplio y potente las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;aplicaciones&lt;/span&gt; son mas fáciles de desarrollar y los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;compiladores&lt;/span&gt; dejan mucha carga de trabajo a la CPU, no son tan complejos.&lt;br /&gt;&lt;br /&gt;-RISC (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:HELVETICA,ARIAL;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;reduced&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;instruction&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;set&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;computer&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:HELVETICA,ARIAL;" &gt;): Son la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;filosofía&lt;/span&gt; contraria a los CISC, en ellos el conjunto de instrucciones es reducido y de tamaño fijo, por lo tanto toman menos tiempo en ejecutarse. &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:HELVETICA,ARIAL;" &gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;Además&lt;/span&gt; dejan la carga del acceso a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;memoria&lt;/span&gt; sobre dos instrucciones. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:HELVETICA,ARIAL;" &gt;El hecho de que las instrucciones sean fijas y de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;código&lt;/span&gt; de operaciones simples facilita la estructuración de las operaciones y que se pueda decodificar la operación mientras se accede a los registros de memoria. Todas las mejoras facilitan el uso de segmentación y paralelismo.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Las pegas de los procesadores RISC tienen mucho que ver con el software. Ofrecen un peor soporte para la &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;programación&lt;/span&gt;&lt;span style="font-family: arial;"&gt; en lenguajes de alto nivel, los &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;compiladores&lt;/span&gt;&lt;span style="font-family: arial;"&gt; son mas complejos y &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;difíciles&lt;/span&gt;&lt;span style="font-family: arial;"&gt; de crear.A parte, si un programa en CISC se podía escribir con 2 instrucciones, en RISC &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;ocuparían&lt;/span&gt;&lt;span style="font-family: arial;"&gt; muchas mas y por lo tanto el programa seria mas largo y &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;tardaría&lt;/span&gt;&lt;span style="font-family: arial;"&gt; mas en ejecutarse aunque las operaciones tardasen menos ciclos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;En conclusión final, cada uno tiene sus ventajas, pero creo que la elección de un tipo u otro de procesador al final viene por sopesar el coste y las &lt;/span&gt;&lt;span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;aplicaciones&lt;/span&gt;&lt;span style="font-family: arial;"&gt; que se utilizarán.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-6469396189906541172?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/6469396189906541172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/risc-vs-cisc.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6469396189906541172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/6469396189906541172'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/risc-vs-cisc.html' title='RISC vs. CISC'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-5515091743893601692</id><published>2009-10-13T07:15:00.000-07:00</published><updated>2009-10-20T03:07:24.364-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 1'/><title type='text'>Análisis de hardware: SPECviewperf 10.0</title><content type='html'>Tal y como se comentó en clase he llevado a cabo un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;test&lt;/span&gt; de &lt;a href="http://www.spec.org/gwpg/gpc.static/vp10info.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SPECviewperf&lt;/span&gt;&lt;/a&gt;. A parte de intentar comprender los resultados que me da la aplicación, he decidido comparar los resultados de mi tarjeta gráfica algunos ordenadores que nos proporciona la facultad.&lt;br /&gt;A continuación los resultados de mi &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;PC&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ATI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Radeon&lt;/span&gt; X800 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;GTO&lt;/span&gt; de 256 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MB&lt;/span&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NTaQYOdxj7w/StSPmGdLBUI/AAAAAAAAARU/lAZtTbUAcGM/s1600-h/resultado1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 245px;" src="http://2.bp.blogspot.com/_NTaQYOdxj7w/StSPmGdLBUI/AAAAAAAAARU/lAZtTbUAcGM/s400/resultado1.JPG" alt="" id="BLOGGER_PHOTO_ID_5392092538600097090" border="0" /&gt;&lt;/a&gt;Previamente había realizado ya las pruebas en un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;PC&lt;/span&gt; de la facultad y me llevé una grata sorpresa, ya que pensaba que mi tarjeta gráfica (comprada hace casi 5 años) no rendiría en comparación.&lt;br /&gt;A continuación los resultados del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;PC&lt;/span&gt; de la facultad, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;nVIDIA&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Riva&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;TNT&lt;/span&gt;2 64 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;MB&lt;/span&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NTaQYOdxj7w/StSQ11MdFhI/AAAAAAAAARc/mc0IgC8LEfY/s1600-h/resultado2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 229px;" src="http://3.bp.blogspot.com/_NTaQYOdxj7w/StSQ11MdFhI/AAAAAAAAARc/mc0IgC8LEfY/s400/resultado2.JPG" alt="" id="BLOGGER_PHOTO_ID_5392093908356109842" border="0" /&gt;&lt;/a&gt;Visto esto, además de informarme sobre que pone a prueba cada una de las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;aplicaciones&lt;/span&gt;, si tengo que realizar cualquier practica que necesite respuesta del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;PC&lt;/span&gt; utilizaré el mio propio. No es una queja, ni mucho menos, a los medios de la facultad, ya que solo he puesto a prueba un puesto normal de acceso a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;internet&lt;/span&gt;, me quedaría poder examinar un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;PC&lt;/span&gt; del laboratorio.&lt;br /&gt;Por otro lado, buscando información sobre el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;benchmarks&lt;/span&gt; en cuestión, me he dado cuenta que es una herramienta más utilizada de lo que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;creía&lt;/span&gt;. Tanto en foros de juegos, &lt;a href="http://foro.noticias3d.com/vbulletin/showthread.php?t=116296"&gt;del mundo 3D&lt;/a&gt; o de &lt;a href="http://www.maximopc.org/articulos/sapphire-ati-radeon-x800xl-pcie-p4.html"&gt;noticias &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;tecnológicas&lt;/span&gt;&lt;/a&gt; sobre rendimientos del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;PC&lt;/span&gt;, se utiliza bastante esta herramienta para comparar hardware. Aunque a veces simplemente examinan bajo la regla de "mientras más grande mejor"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-5515091743893601692?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/5515091743893601692/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/analisis-de-hardware-specviewperf-100.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/5515091743893601692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/5515091743893601692'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/analisis-de-hardware-specviewperf-100.html' title='Análisis de hardware: SPECviewperf 10.0'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NTaQYOdxj7w/StSPmGdLBUI/AAAAAAAAARU/lAZtTbUAcGM/s72-c/resultado1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-3090399860946654013</id><published>2009-10-07T05:28:00.000-07:00</published><updated>2009-10-13T08:06:06.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 1'/><title type='text'>Evolución de las consolas: Nintendo</title><content type='html'>Tenía pensado hacer un post sobre la &lt;a href="http://www.youtube.com/watch?v=dLudF7Tj35g"&gt;evolución de los videojuegos&lt;/a&gt;, pero voy a centrarme en consolas, dado que la asignatura es más hardware que software. Concretamente voy a analizar la história de Nintendo en las consolas de sobremesa.&lt;br /&gt;&lt;br /&gt;-NES (Nintendo Entertainment System): Lanzada en Japón en 1983 fue la consola mas exisota de su época, y con diferencia. La consola contaba con una CPU de 8 bits y una memoria RAM interna de 2 KB. Además ya incorporaba un procesador que se dedicaba exclusivamente a las imágenes, era capaz de mostrar 52 colores en pantalla y conseguir una resolución de 256x240 píxeles.&lt;br /&gt;&lt;br /&gt;-Super Nintendo: 7 años después llegó al mercado la siguiente consola, en 1990, con una serie de mejoras muy vistosas. En este caso la CPU de 16 bits contaba con una ampliación de memoria muy relevante de 2 a 128 KB. Por otro lado el procesador de imágenes era capaz de mostrar 32,768 colores y llegar a una resolución de 512x448, que por otra parte rara vez utilizaban los juegos.&lt;br /&gt;&lt;br /&gt;-Nintendo 64: Solo 6 años después hizo acto de presencia la siguiente generación de Nintendo. Esta consola no solo traía consigo un salto muy grande de hardware, CPU de 64 bits de arquitectura RISC y Procesador de Video (GPU) con, por ejemplo,  anti-aliasing y corrección de perspectiva. Claramente era la primera consola de Nintendo centrada en el 3D y gracias a su I+D para llevarla a cabo, Sony pudo dar lugar a su famosa PlayStation.&lt;br /&gt;&lt;br /&gt;-Game Cube: Otros 5 años mas tarde Nintendo lanzó su nuevo Hardware. Tanto el procesador gráfico como la memoria dedicada a los gráficos se aumentó bastante y el hardware de la consola en general fue bastante bueno en su momento, siendo de los mejores (si no el mejor) de su generación de consolas. A parte de estas mejoras gráficas, la Game Cube traia consigo la lecutara de disco en vez de cartucho como soporte de los videojuegos.&lt;br /&gt;&lt;br /&gt;-Wii: Actual consola de Nintendo, vio la luz en 2006. En comparación con los avances de las anteriores generaciones Wii casi no llegó a "subir un escalón". Casi todo el hardware tiene muy poco avance en comparación a su predecesora, y eso se nota en la calidad visual de sus juegos. Pero aun siendo la consola con menos "potencia" gráfica, ha sido un superventa por su detección de movimiento y el buen marketing de la compañía al abrir el mundo de los videojuegos a un público mucho mas amplio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-3090399860946654013?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/3090399860946654013/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/evolucion-de-las-consolas-nintendo.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3090399860946654013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/3090399860946654013'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/evolucion-de-las-consolas-nintendo.html' title='Evolución de las consolas: Nintendo'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-518690872231683580.post-8210457563211474892</id><published>2009-10-06T06:18:00.000-07:00</published><updated>2009-10-09T05:47:26.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tema 1'/><title type='text'>Historia y Evolución de APIs: OpenGL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NTaQYOdxj7w/SstSiOk_49I/AAAAAAAAAQ8/6kTWmZA3CAE/s1600-h/200902121422034915.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 103px;" src="http://1.bp.blogspot.com/_NTaQYOdxj7w/SstSiOk_49I/AAAAAAAAAQ8/6kTWmZA3CAE/s200/200902121422034915.jpg" alt="" id="BLOGGER_PHOTO_ID_5389492127061238738" border="0" /&gt;&lt;/a&gt;A principios de los 90 las aplicaciones 3D no estabana a la orden del día, pero ya existia una competitividad en el mercado hardware. IBM y HP, entre otros, competian con &lt;a href="http://www.sgi.com/"&gt;Silicon Graphics Inc.&lt;/a&gt; en este mercado. SGI, por su parte, utilizaba una API llamada IrisGL que, aunque considerada mejor y más sencilla que las usadas por la competencia, perdía valor poco a poco frente a estas. Debido a esto SGI decidio abrir esta API de programación para que se adoptase como estándar, dando vida a OpenGL.&lt;br /&gt;En 1995 Microsoft lanzó Direct3D que a partir de ese momento se convirtió en el competidor directo de OpenGL. En 1999 SGI tuvo que abandonar el proyecto por restricciones y poco apoyo indrustrial, pero hoy en día siguen desarrollando versiones:&lt;br /&gt;&lt;br /&gt;-En 3Dlabs se desarrollo la version OpenGL 2.0, continuando con el desarrollo de la API, y creando el estandar GLSL, o lenguaje de sombreado de OpenGL&lt;br /&gt;-En 2006 se publicó OpenGL 2.1, compatible con versiones anteriores, soporte de especificacion de matrices no cuadradas, Pixel buffer para acelerar el tráfico de imágenes y texturas &lt;a href="http://es.wikipedia.org/wiki/Espacio_de_color_sRGB"&gt;sRGP&lt;/a&gt;&lt;br /&gt;-Entre 2008 y 2009 se han dado a conocer las versiones 3.0, 3.1 y 3.2. Con aportes como revisiones del lenguaje GLSL, texturas, render buffers y Z-buffer en coma flotante 32-bits, Soporte de Geometría Shader.&lt;br /&gt;&lt;br /&gt;Para más detalles se puede encontrar información muy interesante en &lt;a href="http://www.opengl.org/"&gt;la pagina oficial&lt;/a&gt;,  en la serie de libros Rojo, Azul, Verde, Alpha y Naranja u &lt;a href="http://www.opengl.org/documentation/books/"&gt;otros igual de interesantes&lt;/a&gt; y en páginas como &lt;a href="http://nehe.gamedev.net/"&gt;NEHE&lt;/a&gt;, donde tienen una colección de ejemplos básicos y no tan básicos para programar con OpenGL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/518690872231683580-8210457563211474892?l=agm-urjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agm-urjc.blogspot.com/feeds/8210457563211474892/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/historia-y-evolucion-de-apis-opengl.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/8210457563211474892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/518690872231683580/posts/default/8210457563211474892'/><link rel='alternate' type='text/html' href='http://agm-urjc.blogspot.com/2009/10/historia-y-evolucion-de-apis-opengl.html' title='Historia y Evolución de APIs: OpenGL'/><author><name>Christian</name><uri>http://www.blogger.com/profile/07670798136246607930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_NTaQYOdxj7w/SPLzayk_i2I/AAAAAAAAAI8/9x_7AS3LHNI/S220/aburrido.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NTaQYOdxj7w/SstSiOk_49I/AAAAAAAAAQ8/6kTWmZA3CAE/s72-c/200902121422034915.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
