domingo, 11 de mayo de 2008

El TLB secreto de AMD. Parte I.

En este artículo desvelamos una estructura oculta en las controladoras de memoria integradas en toda la gama de procesadores AMD desde el primer K8 Athlon64 de 130 nm hasta los actuales AMD K10 Barcelona de 65 nm. En esta primera parte analizo el aspecto teórico del problema, en el segundo y tercero los resultados experimentales.


D-TLB test de RMMA con tamaños hasta 16 MB. ¿Otra inflexión en 8192 KB?

¿Qué es el TLB?

El TLB o Translation Lookaside Buffer es una caché que almacena las traducciones de memoria virtual (con las que internamente trabaja el procesador) a memoria física. Las direcciones de memoria física son las direcciones de la RAM del sistema.
Al igual que con las cachés tradicionales, los TLB se pueden dividir entre datos e instrucciones y puede haber varios niveles de TLB.
.
El TLB hace referencia en sus tablas a direcciones físicas, contiene entradas de las Tablas de Paginación (PTE, Page Table Entry) del sistema operativo. Las tablas de paginación son utilizadas por el subsistema de memoria virtual del sistema operativo y mantienen una relación de correspondencia entre entradas de memoria virtual (paginación) y memoria física (RAM).
.
Los TLB tienen un tamaño limitado (KB), una asociatividad (en vias, ways) y una tasa de aciertos con su latencia de fallo (miss penalty o missprediction latency).
.
El núcleo AMD K8:
.
El AMD K8 fue un procesador que marcó una época, arrasó a la competencia de su archirival Intel y se convirtió en el rey en los segmentos de consumo y estaciones de trabajo / servidores. Marcó unos años dulces y de grandes beneficios para AMD , lo que se reflejó en su cotización bursátil.
.
El primer núcleo K8 (130 nm, 1 MB L2). Fuente: AMD. Pulsa para ampliar.
.
El revolucionario concepto de la controladora de memoria integrada, primicia en el mundo x86, disparó brutalmente las prestaciones del núcleo K8, que no era más que un AthlonXP remozado y mejorado.
.
El K7 siempre adujo de elevadas latencias en su subsistema de memoria, una caché L2 muy lenta y con alta latencia y un hardware prefetch ineficiente con una implementación simplista hacían del AMD Athlon un gran procesador ávido de datos e instrucciones.
.
Llegó el chipset nVidia nForce2 con dual channel DDR 400. NForce2 incluía en su Northbridge un "preprocesador", se encargaba de predecir los accesos a memoria del AthlonXP realizando lecturas especulativas en ambos canales de memoria. AthlonXP llegó a mejorar un 10% sus prestaciones gracias a nForce2.
.
K8 acabó con la gran limitación de K7 y lo hizo a lo grande. Integró la controladora de memoria en la cpu:


Núcleo del AMD K8 130 nm. Abajo podemos ver la controladora de memoria.

La implementación TLB de AMD K8 es como sigue:
  • L1 D-TLB: 32 / 4 entradas. Full associative. Miss penalty de 5 ciclos.
  • L1 I-TLB: 32/ 4 entradas. Full associative. Miss penalty de 4 ciclos.
  • L2 D-TLB: 512 entradas. Asociatividad de 4 vías. Miss penalty de 17 ciclos.
  • L2 I-TLB: 512 entradas. Asociatividad de 4 vías. Miss penalty de 25 ciclos.
Captura de RMMA, RightMark Memory Analyzer. Descarga.

Podemos decir que es una implementación bastante potente. Claramente superior a la de su competidor, el Intel Pentium 4 core Willamette/Northwood/Prescott.
.
El núcleo AMD K10 Barcelona 65 nm:


Arquitectura del AMD Barcelona Quadcore 65 nm.

.

Bloques funcionales del AMD Barcelona 65nm.

Implementación TLB en AMD Barcelona:

  • L1 D-TLB: 48 entradas. Full associativity. Miss penalty 5 ciclos.
  • L1 I-TLB: 48 entradas. Full associativity. Miss penalty 4 ciclos.
  • L2 D-TLB: 512 / 128 entradas. Asociatividad 4 vías. Miss penalty 28 ciclos.
  • L2 I-TLB: 512 / 128 entradas. Asociatividad 4 vías. Miss penalty 36 ciclos.

AMD y los 65 nm:

Este texto está tomado del siguiente artículo en este mismo sitio: http://lowlevelhardware.blogspot.com/2008/03/peculiaridades-microarquitectura-phenom.html.

Los micros Athlon64, inicialmente de 130nm, lograron una exitosa migración a los 90nm con el famoso núcleo Venice en los tiempos que Intel sufría con su core de 90nm, Prescott. Venice era mejor clock for clock respecto al Athlon64 original, consumía menos, escalaba mejor en frecuencia y dió a AMD una ventaja competitiva importante.

No sucedió lo mismo con la transición a 65nm. Actualmente los micros de mayor frecuencia de AMD todavía se fabrican con tecnología de 90nm (léase A64 6400+ a 3.2GHz, 2 L2 de 1MB). La misma CPU fabricada en 65nm (Brisbane 2L2 de 512KB) ráramente escala pasados los 3GHz (por otro lado Brisbane es algo más lento a la misma frecuencia).

Posiblemente sea la falta de recursos (económicos y técnicos) para la optimización y correcta migración al proceso de 65nm, pero estos son los hechos. Recordemos la bajísima capitalización actual de AMD (Nasdaq: AMD) en bolsa y la adquisición de ATI a un precio que luego se ha visto excesivo.

La gran superficie y alto coste del chip ha marcado el tamaño de sus cachés. La L2 es de 512 KB, cuando los Athlon64 de gama alta gozan de 1MB por procesador. En cuanto a la L3, solamente 2MB para cuatro núcleos se antoja una cantidad insuficiente, dado lo extendido del software multithread y el uso del PC en los sistemas operativos actuales. Esto es en parte compensado por su alta asociatividad de 32 vías que aumenta la tasa de aciertos.

Los K8 de 65nm, AMD Brisbane:

Brisbane es el stepping G del Athlon64 X2 AM2 con controladora de 128 bit DDR2 800, sustituye al stepping F, el primer AM2.

Todo el mundo conoce el hecho siguiente: un procesador AMD Athlon64 X2 de 65nm (core Brisbane) es más lento por ciclo que uno de la generación anterior de 90 nm. Empeora la velocidad de la caché L2, empeora su latencia y aumenta catastróficamente la latencia de memoria en accesos aleatorios (random).

¿Porqué es más lento Brisbane clock for clock que sus antecesores de 90 nm?

¿Qué ha ocurrido en la migración del núcleo K8 a 65nm?

¿A qué se debe el TLB bug de los primeros AMD Barcelona?

En la siguiente entrega analizamos el núcleo K8 en su variante de 90 nm, core Manchester. En la tercera analizaremos el core Barcelona que podemos encontrar en los Phenom y Opteron. quadcore de 65 nm.

Descarga de RMMa 3.8.

Página de DigitLife, desarolladores de RMMA.