Mostrando entradas con la etiqueta entrada/salida. Mostrar todas las entradas
Mostrando entradas con la etiqueta entrada/salida. Mostrar todas las entradas

jueves, 7 de enero de 2010

HyperTransport

HyperTransport (HT) es actualmente el bus con mejores prestaciones en ordenadores de consumo. El estándar lo define un grupo de fabricantes llamado "HyperTransport Consortium". La versión 1.0 se publicó en 2001 y la utilizó AMD para interconectar sus procesadores Opteron y siguientes. La última versión (3.1) se ha publicado en 2008. El funcionamiento básico de un bus HT es el mismo en todas las versiones.


Esta tecnología se basa en un enlace half-duplex de un bit que usa señalización diferencial de bajo voltaje. A partir de este elemento básico, se establecen buses con un número variable de enlaces (entre 2 y 32, normalmente potencias de 2). A la hora de establecer un enlace, las 2 partes negocian el número de lineas a utilizar en cada sentido (puede ser un enlace asimétrico). La comunicación se realiza de manera asíncrona y es DDR, es decir se transmite 2 veces por ciclo.

Los sucesivos estándares han añadido ciertas funcionalidades, pero sobre todo han aumentado la frecuencia de funcionamiento. En la primera versión, HT funcionaba a un máximo de 800 MHz lo que supone, 12.8 GB/s para un enlace de 32 bits. Esta velocidad ha crecido hasta 3.2 GHz en el estándar 3.1, con lo que se pueden conseguir tasas de transferencia de 51.2 GB/s.

La comunicación se realiza mediante paquetes, siguiendo un protocolo parecido a los utilizados en redes de comunicaciones. Los dispositivos tienen asignadas direcciones de 40 bits. Un paquete está formado por un conjunto de palabras de 32 bits. Los paquetes pueden ser de control o de datos. Los paquetes de control contienen comandos y los parámetros que sean necesarios. Después de un paquete de control puede transmitirse si se desea un paquete de datos, como en el siguiente ejemplo:


HyperTransport está pensado para utilizarse como método de señalización y paso de mensajes para controlar un sistema, generar interrupciones y lógicamente transferencia de datos con o sin confirmación por parte del otro extremo de la comunciación. Tiene muchas características interesantes como que está diseñado para poder mapear fácilmente PCI, PCI-X y PCI-Express a partir de la versión 2.0, permite conectar y desconectar elementos en caliente (desde la versión 3.0) y se puede ajustar dinámicamente el ancho y la frecuencia de un enlace (también desde la versión 3.0), entre otras.

Este tipo de bus suele utilizarse para interconectar varios elementos dentro de un sistema. Como ya se ha comentado, AMD lo utiliza pra interconectar sus procesadores y como sustituto del FSB. También puede implementarse en los últimos FPGAs de Altera y Xilinx, por lo que algunas compañías los usan como coprocesadores, que se comunican con el procesador usando este estándar. Hay 2 especificaciones de conectores de tipo slot en el estándar por lo que puede utilizarse como sustituto de PCI-Express a la hora de añadir slots de expansión a una placa base.

Patxi Astiz

sábado, 28 de noviembre de 2009

PCI vs AGP vs PCIe

La tecnología de los buses utilizados con las tarjetas gráficas ha evolucionado para adaptarse a las necesidades. Vamos a hablar de los más utilizados en la informática de consumo durante los últimos años.

En primer lugar el bus PCI apareció de la mano de Intel al comienzo de la década de los 90. Se trata de un bus síncrono de 32 bits de ancho con funcionando a 5 V y a una frecuencia de 33 MHz, lo que supone un ancho de banda de 133 MB/s. Este ancho de banda se comparte entre los componentes que estén conectados y que se reparten el uso del bus. Los dispositivos PCI funcionan junto con un árbitro que decide quien tiene permiso para realizar transacciones usando el bus. Más adelante hubo modificaciones al estándar que disminuyeron el voltaje a 3.3 V, aumentaron el bus a 64 bits y la frecuencia de funcionamiento a 66 MHz. Además de esto apareció una versión llamada PCI-X con mejores prestaciones (mayor frecuencia de reloj) para servidores.

Al final de la década de los 90 apareció AGP (accelerated graphic port) al hacerse necesario un aumento en el ancho de banda disponible para la tarjeta gráfica. En este caso, AGP no se trata de un bus sino que es un puerto por lo que no se comparte con otros dispositivos. Está destinado únicamente a comunicar la tarjeta gráfica con el chipset norte o el dispositivo que corresponda. Las características de este bus son similares a las de PCI. Su ancho de banda es 32 bits, funciona a 66 MHz, realizaba una transferencia por ciclo y el voltaje de señalización es 3.3 V lo que da un ancho de banda de 266 MB/s, el doble que PCI. Después de esta versión conocida como AGP 1x, hubo revisiones que aumentaban el número de transferencias por ciclo y en algunos casos reducían el voltaje, apareciendo AGP 2x (2 transferencias, 533 MB/s), AGP 4x (1.5V, 4 transferencias, 1066MB/s), AGP 8x (0.8V, 8 transferencias, 2133MB/s). Aparecieró una variación con un conector físico mayor que permitía un mayor consumo de potencia por parte de la tarjeta gráfica (AGP PRO) manteniendo el resto de características. En la actualidad, salvo algunas excepciones, está en desuso.

PCI-Express (abreviado como PCIe) es una tecnología de entrada/salida que tiene multitud de utilidades y que en la práctica ha sustituido a AGP. Aunque tome el nombre del bus PCI, lo cierto es que no tiene ningún parecido con él. El motivo es la compatibilidad lógica con el anterior estándar. En este caso no se trata de un bus paralelo compartido por varios dispositivos, sino que la arquitectura consiste en enlaces serie que puede unir dos dispositivos entre sí, o varios dispositivos que enlazan individualmente con un switch que los intercomunica. Esta arquitectura es mucho más parecida a una red full-duplex que a un bus clásico. Respecto a su rendimiento, la frecuencia de reloj es 1.25 GHz y realiza 2 transferencias por ciclo, lo que supone 2.5Gb/s. Al utilizar una codificación 8b/10b, el ancho de banda final es de 250MB/s en un enlace. El estándar permite usar varios enlaces simultaneos. En la práctica, las tarjetas gráficas suelen usar 16, por lo que el ancho de banda en cada sentido es 16*250 = 4 GB/s. Más adelante se estandarizó la versión 2.0 que es la que está en uso actualmente, la mayor diferencia es que la frecuencia de reloj es el doble, con lo que se consigue el doble de tasa de transferencia por lane (500 MB/s) y una tarjeta gráfica PCIe x16 (16 enlaces) tiene 8GB/s en cada dirección. La versión 3.0 está en proceso. Entre los cambios más importantes la frecuencia de reloj llega a 4 GHz y la codificación 8b/10b se ha eliminado por una técnica de scrambling, por lo que se espera 1 GB/s en cada sentido usando un solo lane.

Patxi Astiz

gestión de entrada/salida

A la hora de gestionar la comunicación del procesador con elementos externos (disco duro, tarjeta de red, etc...) hay varias estrategias posibles.

La forma más sencilla de tratar una petición de entrada/salida es la espera de respuesta o espera activa. El funcionamiento es muy sencillo. El procesador consulta cíclicamente al dispositivo en cuestión hasta que la operación por la que se esperaba se ha realizado. Mientras tanto el procesador no hace ninguna tarea útil, desaprovechando un tiempo que podría dedicarse a otras tareas. Por este motivo, este patrón de funcionamiento debería evitarse siempre que sea posible.

Otra forma de gestionar la entrada/salida es el uso de interrupciones. Una interrupción es una señal asíncrona que es recibida por el procesador. En ese momento el flujo de ejecución normal se detiene, se guarda el estado del procesador y se pasa a ejecutar lo que se denomina manejador de la excepción. Este manejador consiste en código que puede estar establecido por el sistema operativo o por el programador. De esta manera el procesador puede dedicarse a ejecutar tareas útiles que interrumpe cuando un dispositivo de entrada/salida avisa mediante una interrupción de un evento que necesita ser conocido por el procesador como la finalización de una operación, la llegada de un paquete a un interfaz de red u otros. Entonces el procesador realiza las operaciones necesarias, como copiar datos o procesarlos en el código del manejador.

Un tercer método es el denominado acceso directo a memoria (DMA, Direct Memory Access). Con este método se permite leer y escribir de la memoria a un dispositivo distinto a la CPU y se utiliza para agilizar las operaciones de entrada/salida. Con esta tecnología se libera a la CPU de la tarea de copiar datos entre un dispositivo de entrada salida y la memoria. Normalmente la CPU inicia la transferencia mediante un comando DMA. Mientras se realiza la copia entre un dispositivo y la memoria (o viceversa) el procesador puede realizar trabajo útil. Mediante una interrupción se notifica el final de la copia.

El objetivo final de los métodos anteriores es conseguir que la gestión de entrada/salida suponga el menor esfuerzo posible a la CPU. El siguiente paso es utilizar hardware especializado. El hardware utilizado es generalmente un procesador especializado al que la CPU envía pequeños programas. Estos coprocesadores tienen una memoria local y acceso a la memoria principal y se utiliza cuando se necesitan altas prestaciones en la entrada/salida de la arquitectura.De esta manera el coprocesador puede gestionar la entrada/salida de manera autónoma sin necesidad de mayor intervención por parte de la CPU.

Patxi Astiz