miércoles, 17 de junio de 2009

5.b Coprocesadores para gráficos: PPU, RTPU, etc

Coprocesadores

Un coprocesador es un microprocesador de un ordenador utilizado como suplemento de las funciones del procesador principal (la CPU). Las operaciones ejecutadas por uno de estos coprocesadores pueden ser operaciones de aritmética en coma flotante, procesamiento gráfico, procesamiento de señales, procesado de texto o Criptografía, etc. Y su función es evitar que el procesador principal tenga que realizar estas tareas de cómputo intensivo, estos coprocesadores pueden acelerar el rendimiento del sistema por el hecho de esta descarga de trabajo en el procesador principal y porque suelen ser procesadores especializados que realizan las tareas para las que están diseñado más eficientemente. Además estos coprocesadores permiten a los compradores de ordenadores personalizar su equipamiento ya que sólo tendrán que pagar ese hardware específico quienes deseen o necesiten tener el rendimiento extra ofrecido por estos dispositivos. En la siguiente figura podemos ver un coprocesador matemático Intel C8087.



La demanda de coprocesador gráfico dedicado ha crecido mucho en los últimos años debido a la alta demanda de procesamiento gráfico por parte de los videojuegos de ordenador que requieren gráficos 3D por computadora muy reales; este procesador dedicado elimina una considerable carga computacional a la CPU principal e incrementa el rendimiento en las aplicaciones gráficas intensivas.


A partir del año 2000, las tarjetas gráficas con una Unidad de Procesado de Gráfico (GPU) son comunes. Las tarjetas de sonido actuales también vienen con un potente procesador incluido con extensiones multimedia para eliminar tiempo de cómputo en al procesador principal. En 2006, AGEIA anunció otra tarjeta de expansión para ordenadores llamada PhysX, este dispositivo tiene un procesador integrado diseñado para ejecutar computación de los aspectos físicos de los escenarios 3D liberando de esta carga a la CPU y GPU. Está diseñado para trabajar con videojuegos, pero teóricamente se podrán ejecutar otras tareas matemáticas en él.


Un coprocesador no es un procesador de propósito general, algunos coprocesadores no pueden ni siquiera leer las instrucciones desde la memoria sino que ejecutan flujo de instrucciones. Estos procesadores requieren de un procesador principal que lea las respuestas del coprocesador y maneje todas las operaciones junto con las funciones del procesador. En algunas arquitecturas el coprocesador es otro procesador de propósito general, pero que solamente ejecutará un rango de funciones limitadas por el procesador principal que le ejercerá el control. Nótese la diferencia de este modelo con los términos de un multiprocesador, que también tiene más de un microprocesador de propósito general.



PPU

Años atrás, sobre los 90, la industria de los ordenadores introdujeron la GPU (Graphics Processing Unit). Esto liberó bastante al procesador de la carga de los videojuegos, pudiendo enfocarse en otras tareas como AI o la física. Gracias a este avance, los graficos en videojuegos han avanzado mucho y su calidad es impresionante.


La Ppu hace lo mismo que la GPU hace para los videojuegos, pero en vez de añadir potencia de procesamiento, está enfocado al código de la física. Éste elimina la carga de los cálculos físicos del procesador y los envía a la PPU.

Gracias a esto podemos tener juegos en tiempo real con una física hiperealista. Procesos tales como partículas o humo son ahora calculadas y desarrolladas, no como hasta ahora que sólo eran animaciones.


La PPU (Unidad de Procesamientos de Física) PhysX es un chip y un kit de desarrollo diseñados para llevar a cabo cálculos físicos muy complejos. Conocido anteriormente como la SDK de NovodeX, fue originalmente diseñada por AGEIA y tras la adquisición de AGEIA, es actualmente desarrollado por Nvidia e integrado en sus chip gráficos más recientes.



El 20 de Julio de 2005, Sony firmó un acuerdo con AGEIA para usar la SDK de NovodeX en la consola PlayStation 3. Esto provocó que muchos desarrolladores empezaran a crear juegos muy complejos, antes impensables, gracias a esta tecnología. AGEIA afirmó que el PhysX era capaz de realizar estos procesos de cálculos físicos cien veces mejor que cualquier CPU creada anteriormente.



Este coprocesador tiene las siguientes especificaciones:

      • 125 millones de transistores.

      • 182 mm² de tamaño.

      • Memoria: 128 MB GDDR3 RAM en interfaz de 128 bits.

      • Versiones de Asus y BFG tienen 128 MB GDDR3 RAM.

      • Interfaz: PCI.

      • Sphere: 530 millones por segundo (capacidad máxima).

      • Convex: 530,000 por segundo (capacidad máxima).

      • Ancho de banda de Instrucciones (picos): 20 billones por segundo.

      • Las tarjetas de Nvidia que soportan PhysX son las series GeForce 8, 9 y 200.



RTPU

Hace pocos meses se revolucionó el mundo gráfico añadiendo realismo a las escenas mediante el uso de Ray-tracing sin que ello hiciera mella en el rendimiento. Para ello se desarrollo la Ray Tracing Processing Unit (RTPU), que junto a la colaboración de las GPUs o gráficas actuales, alcanza un número de imágenes por segundo que permite la interactividad.



De momento con el hardware actual sólo se consiguen entre 3 y 5 imágenes por segundo, pero nos aseguran que para el año que viene podrán multiplicar los números por catorce con una nueva revisión de su RTPU, que se multiplicarán además por el número de tarjetas que tengamos instaladas.

A destacar que la tarjeta prepara los datos más complicados para que la GPU los trabaje en su etapa final -donde es muy eficiente-, liberándola de esta manera de los cálculos que nos es capaz de procesar adecuadamente tanto por su arquitectura como por su limitación de memoria (2GB no serían suficientes).

5.a Escoger una evaluación de rendimiento o una comparativa reciente y analizarla/criticarla

Introducción


No sé cuantos rumores ni cuantas veces hemos oído hablar de que Nvidia abriría la tecnología SLI a otros chipsets que no fueran los suyos propios o cuántos de nosotros habremos usado esos controladores "hackeados" que la propia Nvidia neutralizó encriptando sus controladores. Al final el día ha llegado, con limitaciones eso sí, pero cualquier usuario de los nuevos chipsets X58 tiene la libertad de optar por Crossfire de ATI o SLI de Nvidia según sean sus necesidades o convicciones.


Una habilitación no exenta de polémica:

Nvidia se ha rendido a dos factores, esto no ha sido un regalo sino una claudicación. Nvidia no tenia intención de liberar el SLI a chipsets Intel y menos cuando el gigante azul pretende hacerle, en un futuro no muy lejano, competencia también en el mercado de los chips gráficos dedicados. Que ahora podamos estar escribiendo este articulo se debe fundamentalmente a dos razones: falta de licencias y la competencia creciente de AMD.

Nvidia no solo no consiguió llegar a un acuerdo para usar procesadores Core i7 con sus chipsets sino que encima la creciente competencia de ATI, con sus chips Radeon 4000, estaba golpeando duramente no solo a nivel de precios y prestaciones sino también en sectores tan llamativos a la hora del marketing como es la integración de múltiples chips gráficos en el mismo ordenador.


AMD tiene abierto su sistema Crossfire a todo aquel que quiera usarlo, de hecho Nvidia no lo soporta porque no quiere en sus chipsets, así que se convertiría en la única opción multitarjeta disponible para los nuevos procesadores de Intel. Esto sería un golpe muy duro para la últimamente mermada imagen de Nvidia así que no les ha quedado otro remedio.

De todos modos no os penséis que Nvidia se ha ido de vacío en todo este tema porque cuando compres tu próxima placa base X58 debes saber que buena parte de su coste, se habla de hasta 50$, se debe al canon que Nvidia ha establecido a los fabricantes de placas base para que las bios de sus placas base soporten el sistema SLI de Nvidia. Si compras una placa X58 tienes que saber que estas pagando si o si vayas o no a usar el sistema de múltiples tarjetas graficas de este fabricante.


Presentando nuestras tarjetas:

Hemos aprovechado la nueva generación de tarjetas GTX 260, adaptadas para competir con las ATI Radeon 4870 de 1GB, con 216 Streamprocessors para conocer de lo que puede ser capaz un ordenador con procesador Core i7 y un sistema SLI de alto nivel. Es una combinación envidiable que nosotros hemos montado gracias a dos de las tarjetas más interesantes del mercado en cuanto a precio-prestaciones.


La primera de ellas, aunque tanto monta - monta tanto, es una Zota GTX 260². Se trata de una de las primeras Geforce GTX 260 de nueva generación, con 216 shaders frente a los 192 estándar, con una frecuencia de trabajo de 575MHz para su GPU y de 2000MHz DDR para sus 896MB de memoria GDDR3 con un bus de datos de 448-Bit. Es una tarjeta que sigue el diseño térmico del modelo de referencia de Nvidia y que dispone de los habituales dos conectores DVI y su salida de TV de alta definición por componentes. Su precio es de 279€ y viene con Farcry 2 incluido.



La segunda de ellas es una Gainward GTX 260 de edición limitada. Esta tarjeta sigue las indicaciones de referencia de la GTX 260 pero amplia su capacidad de proceso con 216 shaders como en el caso de la Zotac. Como la Zotac, esta tarjeta no overclockea su procesador manteniendo los 576MHz para la GPU y los 2000MHz para los 896MB de memoria GDDR3. En principio el único requisito para que el SLI funcione es que ambas tarjetas tengan el mismo número de shaders, la frecuencias de trabajo son indiferentes así que si te decides por "mezclar" tarjetas de diferentes frecuencias no tendrás problemas.



Las dos tarjetas disponen de un disipador de doble slot alimentado por una turbina posterior que disipa el calor de la tarjeta expulsando el aire caliente fuera de la caja a través del segundo slot de la tarjeta. Son tarjetas voluminosas que requieren de alimentación extra mediante un doble conector PEG de seis contactos. Lo cierto es que el acabado una vez instaladas es impresionante. Esperemos que también lo sean los resultados.


Comparativa de rendimiento:

Para amenizar nuestros resultados hemos decidido medir la fuerza de estas GTX 260 contra su competidor natural como es un crossfire de Radeon 4870 de 1GB. Una competencia de alto nivel que nos permitirá decidir la opción mas adecuada a la hora de equipar nuestro Core i7.

Las pruebas utilizadas son las siguientes:
3DMark 2006
3DMark Vantage
Unreal Tournament 3
World in Conflict
FarCry 2
Drivers:
Forceware 180.43 y Catalyst 8.11 Hotfix Core i7
.


Los resultados:

3DMark Vantage. Performance test



Esta primera captura que veis es el test realizado en 3DMark Vantage con el sistema PhysX activado. No es un resultado que podamos ni queramos usar para la comparativa pero se puede ver una mejora importante en el resultado de CPU, que pasa de 24000 a casi 49000 puntos y que afecta al resultado en casi 2000 puntos.

3Dmark 2006



Unreal Tournament 3 – Calidad máxima

World in Conflict – Calidad máxima

FarCry 2 – Calidad máxima


Análisis y conclusión

Lo que está claro es que cualquiera de las dos soluciones propulsa a los Core i7 a los niveles de rendimiento adecuados para disfrutar plenamente de cualquier juego en nuestro ordenador a resoluciones Full HD. El sistema SLI de Nvidia funciona plenamente en estos nuevos chipsets de Intel y nos ofrece un rendimiento 3D excelente a la vez que amplia algunas prestaciones como el soporte de física por hardware. Si sumamos a esto que los nuevos controladores habilitan funciones muy esperadas sin duda el SLI se convierte en una opción más que interesante para cualquier propietario de un Core i7 y una placa base X58 certificada para SLI.

La competencia sin embargo es dura, ATI ha hecho un gran trabajo con sus chips RV770 y cualquiera de las dos opciones satisfará plenamente a su propietario. Debemos tener también en cuenta que los precios de ambas soluciones son muy similares. Unos 270-280€ por cada tarjeta por lo que la elección se complica aun mas. Esperemos que esta guerra siga dándonos productos a mejor precio y con mayores prestaciones y para eso ambos fabricantes deben mantener el buen nivel de desarrollo que están llevando a cabo en los últimos meses.

También hay que valorar que Intel ahora mismo tiene la primera solución grafica universal, sin limitaciones, ofreciendo a sus usuarios elecciones antes no disponibles en ninguna plataforma. Esto sin duda es un gran avance que se apoya en un procesador excelente con un chipset fiable y sólido.

4.e Sistemas operativos para videoconsolas

A continuación, hablaremos de los sistemas operativos de las tres videoconsolas mas importantes del mercado actual, la PlayStation 3, la Xbox 360 y la Wii.


Sony PlayStation 3: Nos ofrece la posibilidad de cambiar el sistema operativo de la consola, más que una modificación es una aplicación que Sony decidió instalar para seguir presumiendo de que sus consolas pueden correr Linux, todo comenzó en el año 2000 cuando Sony empezó a presumir esta función y más adelante lanzo lo que fuera el Ps2 Linux Kit que incluía un disco duro de 40 gb. Teclado, mouse, cables del monitor, un adaptador de red de 10/100 Mbps y el DVD de instalación que transformaba la consola en una PC por el precio de $200 dólares. Años después para el lanzamiento del Ps3 Sony decidió hacer más fácil la instalación del software y para esto conto con la ayuda de IBM (una de las compañías más grande que promueve el OS Linux) y su procesador Cell (el núcleo del Ps3).


La distribución oficial para Ps3 es Yellow Dog Linux (es patrocinada por Sony) aunque también funciona con otras versiones de Linux como son OpenSuSE, Ubuntu, Fedora Core 8, Gentoo y Debian. Otros sistemas operativos basados en Windows pueden usarse pero son más difíciles de “instalar”. La razón principal para realizar la instalación de un sistema operativo consiste en que tu consola pasara a ser una PC con las funciones del Ps3, permitiéndote así manejar todos los aspectos de tu consola manualmente.


Si bien Sony ofrece oficialmente la habilidad de instalar el Linux también les da ciertas restricciones, ya que por medio de Linux se puede liberar ciertas funciones que tenia restringidas por lo general para los usuarios, también en teoría es posible permitir que la consola lea juegos “copia” aunque todavía es un mito en las ultimas actualizaciones del firmware Sony ha dejado parches que lo evitan.



Xbox 360: Esta consola creada por Microsoft, tiene protegida la información sobre su sistema operativo aunque se cree que es un tipo de Windows especial. Hace tiempo hubo rumores de que se iba a liberar para poder poner alguna distribución de Linux pero de momento no se puede.


Wii: Sobre esta consola también hay rumores de que se podrá poner alguna distribución de Linux aunque todavia no hay nada definitivo.


4.c Modelos de programación para el Cell

El procesador Cell es un procesador de última generación desarrollado por IBM, Sony y Toshiba diseñado para realizar cargas de trabajo de cálculo intensivo y aplicaciones de banda ancha con contenido multimedia. Su arquitectura es complicada para trabajar con ella. Es escalable y puede utilizarse en una amplia variedad de dispositivos.


La macro-arquitectura del procesador es la sigiuente:

1. Circuitería de gestión de memoria y entrada/salida.

2. Una memoria caché de segundo nivel de 512 Kbytes.

3. Una unidad de proceso de próposito general llamada Power Proccessor Element o PPE.

4. Ocho unidades de proceso vectorial llamadas Synergistic Proccessor Elements o SPEs.

5. Un bus que interconecta los elementos anteriores llamados Element Interconected Bus o EIB.



Los modelos de programación son los siguientes:

Stream processing: En realidad es un pipeline processing. Consiste en alinear varias SPEs en cascada (en pipeline) para que cada una ejecute una etapa de un proceso complejo.



Cola de tareas: Se van poniendo tareas en una cola y un hilo que corre en el PPE las va sacando y asignando dinámicamente a una SPE concrete según vayan quedando libres. Si algún día vemos un mainframe basado en Cell, éste será el modelo que utilice.


Multitarea auto-gestionada: Este es el modelo que está desarrollando Arnd Bergmann de IBM para Linux. El sistema operativo abstrae cada SPE como un dispositivo en el virtual file system y permite comunicarse con él mediante llamadas al sistema.

Esencialmente, es un modelo “yo me lo guiso, yo me lo como”, porque toda la sincronización entre hilos y la asignación de tareas la tiene que gestionar nuestro sofware. Es de suponer que los desarrolladores de videojuegos utilizarán sus propias implementaciones de este modelo.


4.a Explicación en detalle del Xenon relacionando su arquitectura con todas las técnicas generales estudiadas en los dos temas anteriores

La CPU de la Xbox 360 (Xenon) es de tres cores, y funciona a 3,2GHz. Teniendo en cuenta que el procesador de PC más potente del momento, el Core2Duo, fue lanzado medio año después, en un rango de frecuencias de 1,8 a 2,6GHz, y es de dos cores, puede parecer que el Xenon es una CPU monstruosa. No obstante, hay “truco”.


El Core2Duo es fruto de una larga evolución, dispone una capacidad de ejecución fuera de orden fabulosa, así como muchas funciones que optimizan la ejecución de las instrucciones (micro y macro fusión, mejor decodificación, memory disambiguation, predicción de saltos,…). En definitiva, la planificación de la ejecución es muy compleja. Mientras, en el desarrollo del Xenon se optó por prescindir de esta circuitería. Se le ha quitado la "inteligencia" para planificar la ejecución del código, lo cual abarata costes, y ahorra espacio en silicio, que ahora se puede aprovechar para integrar más cores, más caché, etc. Una filosofía de diseño totalmente distinta. De otro modo no se podrían haber integrado más de 2 cores, pues se hubiera requerido tecnología de 65nm, no disponible en el momento.




TPL frente a ILP

La ejecución fuera de orden y las arquitecturas superescalaras, están enfocadas a explotar el IPL (paralelismo a nivel de instrucción), esto es, el ejecutar el mayor numero de instrucciones simultáneamente. Otras técnicas empleadas son el pipeline, el renombramiento de registros, la ejecución especulativa, y la predicción de saltos.

El Xenon, aunque tiene un pipeline largo, no soporta ejecución fuera de orden, y aunque es superescalar, no al nivel de otros procesadores. Su objetivo es explotar el TPL (paralelismo a nivel de thread). Es decir, ejecutar varios hilos de ejecución en paralelo, a costa de optimizar la ejecución de un solo flujo de instrucciones.


El Xenon puede ejecutar hasta 6 threads. Para que los juegos de Xbox 360 aprovechen bien el hardware, deben organizar el código de manera que se pueda dividir en threads. Deben, además, de tener ciertas cosas en cuenta. No se pueden programar de cualquier modo, pues el rendimiento se degradaría, al no tener la versatilidad de un procesador de PC.




Estructura y cores

Es un único chip, compuesto de 165 millones de transistores, que alberga 3 procesadores. Está fabricado en tecnología de 90nm CMOS, usando la técnica SOI.

Cada core, basado en la arquitectura PowerPC, dispone de 32Kb+32Kb de cache L1 (instrucciones y datos). La caché L2, de 1Mb, es compartida por los 3 procesadores. Su ancho de banda con el bus de sistema es de 21.6Gb/s.

Los procesadores funcionan a 3,2GHz, aunque ciertas partes del integrado funcionan a 1,6GHz. Las señales de reloj son generadas por 4 PPLs integrados en el chip.



Cada core es capaz de traer hasta 4 instrucciones de memoria por ciclo, hasta un buffer de instrucciones, de donde se van despachando a un ritmo máximo de 2 por ciclo, lo cual permite que cada core sea capaz de ejecutar 2 hilos de ejecución (threads).

Cada core dispone de 5 unidades de ejecución:

- 1 VMX (vectorial unit)

- 1 FPU (floating point unit)

- 2 FXU (fixed point unit)

- 1 LSU (load-store-unit)

Además de dispone de una unidad de predicción de saltos, con 4k entradas por thread de BHT (Branch History Table).



3.h Comparación de PCI-Express con PCI y AGP

PCI

Un Peripheral Component Interconnect (PCI, "Interconexión de Componentes Periféricos") consiste en un bus de ordenador estándar para conectar dispositivos periféricos directamente a su placa base. Estos dispositivos pueden ser circuitos integrados ajustados en ésta (los llamados "dispositivos planares" en la especificación PCI) o tarjetas de expansión que se ajustan en conectores. Es común en PC, donde ha desplazado al ISA como bus estándar, pero también se emplea en otro tipo de ordenadores.


A diferencia de los buses ISA, el bus PCI permite configuración dinámica de un dispositivo periférico. En el tiempo de arranque del sistema, las tarjetas PCI y el BIOS interactúan y negocian los recursos solicitados por la tarjeta PCI. Esto permite asignación de IRQs y direcciones del puerto por medio de un proceso dinámico diferente del bus ISA, donde las IRQs tienen que ser configuradas manualmente usando jumpers externos. Las últimas revisiones de ISA y el bus MCA de IBM ya incorporaron tecnologías que automatizaban todo el proceso de configuración de las tarjetas, pero el bus PCI demostró una mayor eficacia en tecnología "plug and play". Aparte de esto, el bus PCI proporciona una descripción detallada de todos los dispositivos PCI conectados a través del espacio de configuración PCI. En la siguiente imagen podemos ver ranuras PCI de 64 bits de un Power Macintosh G4.



El PCI tiene 2 espacios de dirección separados de 32-bit y 64-bit correspondientes a la memoria y puerto de dirección de entrada/salida de la familia de procesadores de X86. El direccionamiento es asignado por el software. Un tercer espacio de dirección llamado PCI Configuration Space, el cual utiliza un esquema de direccionamiento corregido que permite al software determinar la cantidad de memoria y espacio de direcciones entrada/salida necesitado por cada dispositivo. Cada dispositivo que conectas puede solicitar hasta seis áreas de espacio de memoria o espacios de puerto entrada/salida a través de su registro de espacio de configuración.


Las especificaciones hardware que se enuncian a contuniación representan a la versión de PCI más comúnmente usada en los PC:

    • Reloj de 33,33 MHz con transferencias síncronas.

    • Ancho de bus de 32 bits o 64 bits.

    • Tasa de transferencia máxima de 133 MB por segundo en el bus de 32 bits (33,33 MHz × 32 bits ÷ 8 bits/byte = 133 MB/s)

    • Tasa de transferencia máxima de 266 MB/s en el bus de 64 bits.

    • Espacio de dirección de 32 bits (4 GB).

    • Espacio de puertos I/O de 32 bits (actualmente depreciado).

    • 256 bytes de espacio de configuración.

    • 3,3 V o 5 V, dependiendo del dispositivo.


AGP

Accelerated Graphics Port (AGP, Puerto de Gráficos Acelerado) es un puerto (puesto que solo se puede conectar un dispositivo, mientras que en el bus se pueden conectar varios) desarrollado por Intel en 1996 como solución a los cuellos de botella que se producían en las tarjetas gráficas que usaban el bus PCI. El diseño parte de las especificaciones del PCI 2.1.


El puerto AGP es de 32 bit como PCI pero cuenta con notables diferencias como 8 canales más adicionales para acceso a la memoria RAM. Además puede acceder directamente a esta a través del puente norte pudiendo emular así memoria de vídeo en la RAM. La velocidad del bus es de 66 MHz.


El bus AGP cuenta con diferentes modos de funcionamiento.


    - AGP 1X: velocidad 66 MHz con una tasa de transferencia de 266 MB/s y funcionando a un voltaje de 3,3V.

    - AGP 2X: velocidad 133 MHz con una tasa de transferencia de 532 MB/s y funcionando a un voltaje de 3,3V.

    - AGP 4X: velocidad 266 MHz con una tasa de transferencia de 1 GB/s y funcionando a un voltaje de 3,3 o 1,5V para adaptarse a los diseños de las tarjetas gráficas.

    - AGP 8X: velocidad 533 MHz con una tasa de transferencia de 2 GB/s y funcionando a un voltaje de 0,7V o 1,5V.

Estas tasas de transferencias se consiguen aprovechando los ciclos de reloj del bus mediante un multiplicador pero sin modificarlos físicamente.

El puerto AGP se utiliza exclusivamente para conectar tarjetas gráficas, y debido a su arquitectura sólo puede haber una ranura. Dicha ranura mide unos 8 cm y se encuentra a un lado de las ranuras PCI.


A partir de 2006, el uso del puerto AGP ha ido disminuyendo con la aparición de una nueva evolución conocida como PCI-Express, que proporciona mayores prestaciones en cuanto a frecuencia y ancho de banda. Así, los principales fabricantes de tarjetas gráficas, como ATI y nVIDIA, han ido presentando cada vez menos productos para este puerto.

Sin embargo, la primera semana de enero de 2008, se anunció el lanzamiento de la tarjeta más poderosa que haya existido en la historia del AGP hasta la fecha. Se trata de la ATi Radeon HD 3850 AGP 8x con 512MB GDDR3, una frecuencia de 1660Mhz efectivos, interfaz de memoria de 256Bits y soporte para DirectX 10.1. Además destaca por ser la única tarjeta de vídeo que puede mover DirectX10 de forma fluida.



PCI-Express

PCI-Express (anteriormente conocido por las siglas 3GIO, en el caso de las "Entradas/Salidas de Tercera Generación", en inglés: 3rd Generation I/O) es un nuevo desarrollo del bus PCI que usa los conceptos de programación y los estándares de comunicación existentes, pero se basa en un sistema de comunicación serie mucho más rápido. Este sistema es apoyado principalmente por Intel, que empezó a desarrollar el estándar con nombre de proyecto Arapahoe después de retirarse del sistema Infiniband.


PCI-Express es abreviado como PCI-E o PCIE, aunque erróneamente se le suele abreviar como PCIX o PCI-X. Sin embargo, PCI-Express no tiene nada que ver con PCI-X que es una evolución de PCI, en la que se consigue aumentar el ancho de banda mediante el incremento de la frecuencia, llegando a ser 32 veces más rápido que el PCI 2.1. Su velocidad es mayor que PCI-Express, pero presenta el inconveniente de que al instalar más de un dispositivo la frecuencia base se reduce y pierde velocidad de transmisión.



Este bus está estructurado como enlaces punto a punto, full-duplex, trabajando en serie. En PCIE 1.1 (el más común en 2007) cada enlace transporta 250 MB/s en cada dirección. PCIE 2.0 dobla esta tasa y PCIE 3.0 la dobla de nuevo.

Cada slot de expansión lleva uno, dos, cuatro, ocho, dieciséis o treinta y dos enlaces de datos entre la placa base y las tarjetas conectadas. El número de enlaces se escribe con una x de prefijo (x1 para un enlace simple y x16 para una tarjeta con dieciséis enlaces. Treinta y dos enlaces de 250MB/s dan el máximo ancho de banda, 8 GB/s (250 MB/s x 32) en cada dirección para PCIE 1.1. En el uso más común (x16) proporcionan un ancho de banda de 4 GB/s (250 MB/s x 16) en cada dirección. En comparación con otros buses, un enlace simple es aproximadamente el doble de rápido que el PCI normal; un slot de cuatro enlaces, tiene un ancho de banda comparable a la versión más rápida de PCI-X 1.0, y ocho enlaces tienen un ancho de banda comparable a la versión más rápida de AGP.


PCI-Express está pensado para ser usado sólo como bus local, aunque existen extensores capaces de conectar múltiples placas base mediante cables de cobre o incluso fibra óptica. Debido a que se basa en el bus PCI, las tarjetas actuales pueden ser reconvertidas a PCI-Express cambiando solamente la capa física. La velocidad superior del PCI-Express permitirá reemplazar casi todos los demás buses, AGP y PCI incluidos. La idea de Intel es tener un solo controlador PCI-Express comunicándose con todos los dispositivos, en vez de con el actual sistema de puente norte y puente sur.



PCI-Express no es todavía suficientemente rápido para ser usado como bus de memoria. Esto es una desventaja que no tiene el sistema similar HyperTransport, que también puede tener este uso. Además no ofrece la flexibilidad del sistema InfiniBand, que tiene rendimiento similar, y además puede ser usado como bus interno externo.


Este conector es usado mayormente para conectar tarjetas gráficas. PCI-Express en 2006 es percibido como un estándar de las placas base para PC, especialmente en tarjetas gráficas. Marcas como ATI Technologies y nVIDIA entre otras tienen tarjetas gráficas en PCI-Express.

3.f Explicación en detalle de las técnicas de gestión de E/S: espera de respuesta, interrupciones, DMA y procesadores de E/S

Espera de respuesta o E/S programada: Los datos se intercambian entre el CPU y el módulo de E/S. El CPU ejecuta un programa que controla directamente la operación de E/S, incluyendo la comprobación del estado del dispositivo, el envío de la orden de lectura o escritura y la transferencia del dato. Cuando el CPU envía la orden debe esperar hasta que la operación de E/S concluya. Si el CPU es más rápido, éste estará ocioso. El CPU es el responsable de comprobar periódicamente el estado del módulo de E/S hasta que encuentre que la operación ha finalizado.


Normalmente habrá muchos dispositivos de E/S conectados al sistema a través de los módulos de E/S. Cada dispositivo tiene asociado un identificador o dirección. Cuando el CPU envía una orden de E/S, la orden contiene la dirección del dispositivo deseado.

> Los inconvenientes que tiene esta técnica son la pérdida de tiempo en el bucle de espera, que algunos programas no permiten estar en un bucle, y que si hay varios periféricos pueden originarse muchos problemas.



Interrupciones: El problema con E/S programada es que el CPU tiene que esperar un tiempo considerable a que el módulo de E/S en cuestión esté preparado para recibir o transmitir los datos. El CPU debe estar comprobando continuamente el estado del módulo de E/S. Se degrada el desempeño del sistema.

Una alternativa es que el CPU tras enviar una orden de E/S continue realizando algún trabajo útil. El módulo de E/S interrumpirá al CPU para solicitar su servicio cuando esté preparado para intercambiar datos. El CPU ejecuta la transferencia de datos y después continua con el procesamiento previo.

Se pueden distinguir dos tipos: E/S síncrona y E/S asíncrona

  • E/S Síncrona: cuando la operación de E/S finaliza, el control es retornado al proceso que la generó. La espera por E/S se lleva a cabo por medio de una instrucción wait que coloca al CPU en un estado ocioso hasta que ocurre otra interrupción. Aquellas máquinas que no tienen esta instrucción utilizan un loop. Este loop continua hasta que ocurre una insterrupción transfiriendo el control a otra parte del sistema de operación. Sólo se atiende una solicitud de E/S por vez. El sistema de operación conoce exactamente que dispositivo está interrumpiendo. Esta alternativa excluye procesamiento simultáneo de E/S.

  • E/S Asíncrona: retorna al programa usuario sin esperar que la operación de E/S finalice. Se necesita una llamada al sistema que le permita al usuario esperar por la finalización de E/S (si es requerido). También es necesario llevar un control de las distintas solicitudes de E/S. Para ello el sistema de operación utiliza una tabla que contiene una entrada por cada dispositivo de E/S (Tabla de Estado de Dispositivos). La ventaja de este tipo de E/S es el incremento de la eficiencia del sistema. Mientras se lleva a cabo E/S, el CPU puede ser usado para procesar o para planificar otras E/S. Como la E/S puede ser bastante lenta comparada con la velocidad del CPU, el sistema hace un mejor uso de las facilida



El procesamiento de una interrupción es el siguiente:

Cuando un dispositivo de E/S termina una operación de E/S, se produce la siguiente secuencia de eventos:

  • El dispositivo envía una señal de interrupción al procesador

  • El procesador termina la ejecución de la instrucción en curso antes de responder a la interrupción.

  • El procesador comprueba si hay alguna interrupción. Si hay alguna, envía una señal de reconocimiento al dispositivo que la originó

  • El procesador debe prepararse para transferir el control a la rutina de interrupción. Debe guardar la información necesaria para continuar con el proceso en curso en el punto en que se interrumpió. Guarda en la pila del sistema el contenido de los registros, etc.

  • El procesador carga en el PC la dirección de inicio del programa de gestión o servicio de interrupción solicitada.

  • Una vez modificado el PC, el procesador continúa con el ciclo de instrucción siguiente. Es decir, se transfiere el control a la rutina servidora de la interrupción.

  • Cuando finaliza el servicio de la interrupción, se restauran los valores de los registros.



DMA (Direct Memory Access): La E/S con interrupciones, aunque más eficiente que la E/S programada, también requiere la intervención del CPU para transferir datos entre la memoria y el módulo de E/S.

Consideren el siguiente ejemplo. Cuando se va a leer una línea desde un terminal, el primer carácter escrito es enviado al computador. Cuando el carácter es recibido por el controlador, éste interrumpe al CPU. El CPU le da servicio a la interrupción y luego continua con el proceso que estaba ejecutando. Esto es posible cuando el dispositivo es muy lento comparado con el CPU. Entre un carácter y otro el CPU lleva a cabo gran cantidad de procesamiento. Pero qué sucede cuando estamos trabajando con dispositivos de E/S más veloces? Tendríamos interrupciones muy seguidas y se estaría desperdiciando mucho tiempo.

Para evitar esto, se utiliza DMA para dispositivos de E/S de alta velocidad. E1 controlador del dispositivo transfiere un bloque de datos desde o para sus buffers de almacenamiento a memoria directamente sin intervención del CPU. Solo se produce una interrupción por bloque en lugar de tener una interrupción por cada byte (o palabra).

Por ejemplo, un programa solicita una transferencia de datos. El Sistema de Operación busca un buffer disponible. El controlador de DMA tiene sus registros actualizados con las direcciones del fuente y del destino y la longitud de la transferencia . Por lo general esta actualización es realizada por el manejador de dispositivo (rutina). Se indica al controlador de DMA a través de bits de control en un registro de control pare que inicie la operación de E/S. Mientras tanto el CPU puede llevar a cabo otras operaciones. El controlador de DMA interrumpe el CPU cuando la transferencia ha sido terminada . El CPU interviene solo al comienzo y al final de la transferencia.



> Procesadores de E/S: Es una unidad de entrada salida a la que se le ha dotado de un microprocesador, formando dicha unidad un microcomputador.

Cuando se le solicita una comunicación con el periférico, el PE/S recibe los datos desde el procesador del sistema y ejecuta el programa correspondiente (almacenado en memoria principal) de manera autónoma e independiente al procesador principal del sistema, suponiendo ello un aumento del rendimiento. Estos procesadores se pueden clasificar en dos tipos:


- Canal Selector: El Procesador de E/S selecciona el periférico que tiene que comunicar y destina todo su tiempo a atenderle, no atendiendo al resto.

- Canal multiplexor: El Procesador de E/S reparte el tiempo de comunicación de manera secuencial y en espacios cortos entre todos los periféricos, dando la sensación de que está atendiendo a todos de modo paralelo.