viernes, 27 de noviembre de 2009

Arquitectura de memoria del Phenom

Vamos a fijarnos a modo de ejemplo en una arquitectura actual. En este caso se trata del procesador Phenom de AMD. Este procesador es multi-core y además puede usarse en configuraciones con varios procesadores.

Vamos a comenzar observando una fotografía de un procesador con 4 cores:

Como se puede ver, sobre la foto se han marcado las areas que corresponden a algunas partes del procesador. En concreto en la parte superior izquierda, vemos las zonas más importantes en las que se divide un core. Respecto a la memoria vemos los siguientes componentes:
  • Memoria caché de nivel 1: Al ser un procesador segmentado las instrucciones están separadas del código. Cada core tiene 64 KB para la caché de instrucciones y la misma cantidad para la caché de datos.
  • Cada core tiene su propia caché de nivel 2 de 512 KB
  • Por último, los 4 nucleos comparten una memoria caché de nivel 3 de 2 MB.
Los nucleos del procesador se comunican entre ellos mediante el hardware etiquetado como northbridge en la fotografía, que hace las veces de bus de conexión. Este también conecta el controlador de memoria que se ve a la derecha y los puertos hypertransport de la parte superior e inferior del chip, etiquetados como "HT".

El esquema para una configuración con 4 procesadores es el siguiente:


Según las especificaciones del fabricante, cada uno de estos enlaces realiza hasta 4000MT/s y tiene un ancho de banda de 8 GB/s y hasta 16 GB/s funcionando en modo 3.0. Esto coincide con un bus de 16 bits de ancho, funcionando a 1 GHz. Al ser DDR (Double Data Rate), eso se traduce en 16 * 2 bits/ciclo * 1 GHz = 4GB/s. Se incluyen 2 buses hypertransport, uno en cada sentido, por lo que el total en los 2 sentidos son los 8 GB/s anunciados. El estándar 3.0 aumenta la frecuencia de funcionamiento permitida, por lo que a 2 GHz el bus daría 16 GB/s de ancho de banda en total (sumando los 2 sentidos).

El controlador de memoria DDR2 de doble canal está incorporado en cada procesador y en este caso acepta memoria funcionando a frecuencias hasta 266 MHz. La tecnología DDR2 dobla la frecuencia del bus para obtener un mayor ancho de banda (aumentando la latencia). Además se transmiten 2 bits por ciclo (Double Data Rate). Teniendo en cuenta esto, que el ancho del bus es de 64 bits y el hecho de que el controlador es de doble canal, tenemos un ancho de banda máximo (266 * 2) MHz * 64 pistas/canal * 2 canales * 2 bits/(pista*ciclo) = 17.024 GB/s.

Hay que fijarse que la arquitectura de este ejemplo es NUMA (Non-Uniform Memory Access) por lo que ambos anchos de banda son importantes a la hora de acceder a la memoria ya que un dato podría estar en cualquiera de los bancos de memoria, no necesariamente en el que está directamente conectado al procesador que necesita dicho dato, teniendo que pasar por un enlace hypertransport compartido para más tareas y más lento que los 17 GB/s máximos de ancho de banda del controlador de memoria. En este problema mucha responsabilidad recae en el sistema operativo, que debe repartir los procesos entre los procesadores y las páginas de memoria física entre los bancos de memoria de forma que estén los más cerca posible.

Patxi Astiz

No hay comentarios:

Publicar un comentario