| Artículos | 01 OCT 2006

Hypertransport 3

Tags: Histórico
Nueva revisión del bus que emplean los procesadores AMD
Eugenio Barahona.
Recientemente el consorcio Hypertransport ha ratificado la versión 3 del bus que le da nombre. Aún pasará algún tiempo antes de que aparezcan en el mercado los primeros productos que lo implementen y, sin duda alguna, uno de los primeros en hacerlo será el nuevo procesador de AMD que estará basado en el núcleo que, de momento, se conoce como K8L.
Cuando AMD presentó sus primeros procesadores de tipo Athlon 64 anunció que dichos productos emplearían un nuevo tipo de conexión para unirlos al resto del sistema: Hypertransport. Una importante novedad que presentaba dicha conexión es que no se había diseñado como un bus ligado a una determinada arquitectura de microprocesador y que no se trataba de una tecnología cerrada, ya que la especificación Hypertransport estuvo disponible, desde su primera versión, para que cualquier compañía interesada desarrollase circuitos integrados que empleasen dicho tipo de conexión para comunicarse con otros componentes. Esto hizo que esta tecnología se adoptase rápidamente y que incluso se diesen situaciones curiosas, como por ejemplo algunos chipsets de nVidia para procesadores Intel que empleaban Hypertransport para la comunicación entre el north bridge y el south bridge del conjunto de chips.

Características básicas
Aunque normalmente se dice que Hypertransport, al igual que sucede con PCI Express, es un bus, en realidad en ambos casos se trata de conexiones punto a punto entres dos circuitos integrados de un determinado sistema. En el caso de Hypertransport, se trata de una conexión que se basa en la transmisión de paquetes de información a través de dos conjuntos de señales unidireccionales. Debido a que se trata de una conexión punto a punto, si un determinado componente debe conectarse a más de un dispositivo externo, entonces deberá disponer de tantos enlaces Hypertransport como conexiones sea necesario implementar. Este tipo de configuración es común en la familia de procesadores Opteron que son capaces de funcionar en configuraciones con más de un socket, implementándose la conexión entre los diversos procesadores mediante enlaces Hypertransport.
Un enlace está formado por tres tipos de señales distintas, denominadas CAD, CTL y CLK. Un enlace completo requiere la presencia de estos tres conjuntos de señales en cada dirección, es decir, un conjunto de señales de entrada y otro de salida, si bien cada conjunto no tiene que tener el mismo número de bits, o anchura, en cada uno de los sentidos.
El conjunto de señales CAD puede tener una anchura de 2, 4, 8, 16 ó 32 bits y se encarga de transferir peticiones, respuestas, direcciones y datos. Los conjuntos de señales CTL pueden tener un ancho de 1, 2 ó 4 bits y sirven para diferenciar entre información de control y datos que se transfieren a través del conjunto de señales CAD. Por último, el conjunto de conexiones de tipo CLK puede tener un ancho de 1, 2 ó 4 bits y se encarga de transferir las señales de reloj correspondientes a las señales de tipo CAD y CTL, de forma que cada byte de tipo CAD disponga de una señal de reloj independiente del resto.
Los enlaces de más de 8 bits se implementan encadenando en paralelo varios enlaces de 8 bits para formar conexiones de 16 ó 32 bits, de manera que en este tipo de configuración cada byte de la conexión disponga de su propia señal de reloj y de control.

Control de las transferencias
Como ya se ha indicado, el control de la transmisión de datos a través de un enlace se realiza mediante las señales de tipo CTL. Esto se debe a que a través de un enlace se transfieren tanto paquetes de datos como de control, distinguiéndose entre ambos tipos mediante el uso de las señales CTL, cuyo propósito es permitir la inserción de paquetes de control en medio de una larga transmisión de paquetes de datos. La transmisión de paquetes está gobernada por cuatro reglas:

- Los paquetes de control con longitud superior a 4 bytes deben transmitirse de forma continua.
- Los paquetes de control que se inserten en una transmisión de paquetes de datos no deben tener paquetes de datos asociados. Una vez concluida la transferencia del paquete de control se continuará la transferencia de paquetes de datos desde el punto en que se interrumpió.
- Los paquetes de petición de escritura y de respuesta a una lectura siempre tienen asociado un paquete de datos.
- El orden de funcionamiento del enlace viene determinado por el orden de los paquetes de control.

La versión 3 de Hypertransport emplea una señal de tipo CTL para cada 8 bits de señales de tipo CAD, lo que hace que se disponga de 4 bits de control para cada 32 bits transferidos a través de señales de tipo CAD. En los cuatros bits de tipo CTL se codifican diferentes palabras de control, de datos o CRC, lo que permite que un receptor interprete la información recibida con tan sólo consultar el estado de los 4 bits de señales de tipo CTL. La codificación y significado de las señales CTL aparece en la siguiente tabla.

Bits CTL[3:0] Significado
1111 Comando
0111 Comando insertado
1100 CRC para un comando con paquete de datos asociado
0011 CRC para un comando sin paquete de datos asociado
0000 Datos

Estructura de los paquetes
Si bien no disponemos en PC World del espacio necesario para describirles de forma detallada la configuración de todos los paquetes de control y datos que pueden llegar a intervenir en una conexión Hypertransport, sí que vamos a dar una visión general de su estructura. Los paquetes de control están formados por conjuntos de cuatro u ocho bytes, codificándose dichos bytes de manera distinta dependiendo del tipo de paquete de control de que se trate. Sin embargo, sí que existen una serie de campos comunes para todos los tipos de paquetes, cuya función es permitir que el hardware identifique el tipo de paquete, a quién va dirigido o de quién procede.
Un campo de 6 bits, denominado Cmd, sirve para codificar el tipo de paquete que se está transfiriendo. Por otro lado un conjunto de 5 bits, denominado UnitID, se emplea para identificar a uno de los participantes en una transferencia. Ya que todos los paquetes se transfieren desde o hacia el host del sistema, se hace referencia bien al origen o al destino de la transferencia. El valor cero se reserva para el host, que en el caso de la familia de procesadores Athlon 64 y Opteron es el propio procesador.
Para los paquetes que sirven para realizar peticiones de entrada o salida de datos se reserva un campo con una longitud de 62 bits, denominado Addr, que hace referencia a la dirección a la que se desea acceder. Sólo se representan 62 bits en lugar de 64, ya que los dos más bajos, 0 y 1, se considera que siempre tienen el valor cero de manera que siempre se acceda a direcciones alineadas a frontera de 4 bytes.
Por otro lado, los paquetes de datos contienen la información correspondiente a paquetes de lectura o escritura. Este tipo de paquetes siguen a los paquetes de petición de escritura y a los de respuesta a petición de lectura. La longitud de los paquetes de lectura varía entre 4 y 64 bytes, si bien siempre serán de una longitud que sea múltiplo de cuatro bytes. Si la longitud de la transferencia es inferior a 4 bytes, los no utilizados se rellenan con datos cuyo valor es indeterminado. La transferencia de datos como respuesta a una petición de lectura se efectúa de manera que primero se transfiera la doble pa

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información