AMD Zen Cache – informaticapremium

AMD Zen cache: La nueva micro arquitectura de AMD presenta un subsistema de caché muy diferenciado y evolucionado respecto a su antecesor AMD Bulldozer 32 nm y sus derivativas.

AMD Zen cache: Op cache L0i en AMD Ryzen

Para empezar AMD integra una op caché. Una caché L0i de instrucciones que acelera mucho el procesamiento.

Si su tamaño ronda los 8 KB (AMD no lo ha desvelado) tendría una tasa de aciertos del 80 – 90 %. Esto liberaría de mucho trabajo a los decoders y reduciría el consumo de manera importante.

Este tipo de op caché L0i la utiliza Intel desde Sandy Bridge 32 nm y le ha dado excelentes resultados en prestaciones y reducción de consumo.

Desde entonces Intel la ha mantenido en esencia invariada en sus siguientes generaciones:

  • Sandy Bridge 32 nm
  • Ivy Bridge 22 nm
  • Haswell 22 nm
  • Broadwell 14 nm
  • Skylake 14 nm

La µop cache en estas todos estos procesadores es de 1.5 Kops, unos 6 KB.

En el caso de AMD Zen todavía no es público su tamaño ni su asociatividad u organización, solo se apunta el término Large Op cache. A mí me suena bien …

AMD Zen Cache – Cachés L1: L1d (datos) y L1i (instrucciones)

Por fin… Se ha dejado atrás el diseño write thru de Bulldozer (similar al Intel Pentium 4) en favor de un mucho más óptimo y moderno esquema write back.

AMD Zen Cache - Jerarquía
AMD Zen – Jerarquía de cachés

La caché L1i es de 64 KB y sobretodo, el paso a 4 vías de asociatividad, marca un importante paso adelante.

AMD se había caracterizado desde el procesador Athlon por asociatividades de 2 vías en sus diseños L1i. Excepto Steamroller 28 nm y Excavator 28 nm que contaban con 96 KB y 3 vías.

El tamaño de 64 KB es perfecto asegurando una muy alta tasa de aciertos. Es capaz de transferir 32 bytes, 256 bit, al core por ciclo (Instruction Fetch).

Por su parte la caché L1d tiene 8 vías y 32 KB, para mí un compromiso excelente.

Tiene 2 puertos de lectura y 1 de escritura, todos ellos de 128 bit y soporta 72 lecturas y 44 escrituras out of order en cola.

Unos números muy similares a Intel Skylake (la última arquitectura de Intel) y que marcan una gran diferencia con anteriores cores de AMD.

Especulando, apostaría que las latencias L1 son de 4 ciclos load to use y la L0i debería rondar los 2 ciclos, como la µop cache de Intel.

En Sandy Bridge 32 nm medí su latencia en 2 ciclos: Blogs de Micro arquitectura.

Instruction cache: la L0i obtiene una increíble latencia de 2 ciclos.
Intel Sandy Bridge: Instruction cache: la L0i obtiene una increíble latencia de 2 ciclos.

Según AMD, la caché L1 de Zen mejora en un factor 2X el ancho de banda de la de Excavator.

AMD Zen cache – La caché L2

La L2 de AMD Zen / Ryzen es discreta por core con 512 KB y 8 vías de asociatividad. Un muy buen diseño ya que el óptimo actual está entre los 256 KB (actuales diseños de Intel) y los 512 KB.

Habrá que ver qué latencia nos presenta, lógicamente estará sobre los 13 – 15 ciclos, más sería excesivo. Según datos oficiales mejora el rendimiento un 100% respecto a Excavator (cosa no muy difícil…)

AMD Zen Cache - Diagrama
Diagrama de caché AMD Zen

A mí particularmente me gusta la reducción a 512 KB, un tamaño más lógico. y la asociatividad, 8 ways, correcta.

AMD Zen cache – La caché L3 multi banco: 8 MB por clúster

La caché L3 de Zen fácilmente superará los 35 ciclos, lógicamente estará sobre 40 -45. No debería ir más allá si quiere servir a las prestaciones.

En la imagen he marcado los 4 cores Zen de un clúster de 4 cores, sus 4 bancos L3 de 2 MB, 8 MB de L3 por clúster, 16 MB de totales L3 por chip.

AMD cifra en 5X el incremento de ancho de banda para la L3 de Zen respecto al terrible rendimiento de la L3 de Bulldozer.

Espero que también reduzca su latencia unos 10 o 15 ciclos. Recordemos que los números de la latencia L3 de Bulldozer fueron espantosos. Rondaba los 60 !! ciclos efectivos load to use…

Diseño L3 victim cache

Lo que menos me gusta del diseño L3 de AMD Zen es que es una Victim Cache L3 y que hay físicamente 2 cachés L3 de 8 MB por chip.

Es un diseño más sencillo pero también menos efectivo que la organización de L3 de Intel.

Intel utiliza una unificada y con acceso mediante ring bus bidireccional de alto ancho de banda.

El diseño Victim Cache significa que la L3 se nutre solamente con los datos eliminados (evicted)  de las caché L2 de cada core.

Los datos no utilizados o desplazados por datos más recientes en las cachés L2 de Zen van directamente a la caché L3 de su clúster.

Me gusta la reducción de asociatividad a 16 vías desde las 64 de del AMD Piledriver 32 nm FX 8350. 64 vías resultaba tan excesivo…

Este paso ayudará a reducir la latencia L3.

Snoop filter en Ryzen 8 core

EL AMD Ryzen 8 core, 2 clusters de 4 cores y 2 cachés L3 independientes de 8 MB tengo la duda de si se implementa un Snoop Filter.

Un Snoop Filter reserva un espacio en la caché L3 (p.e. 1 MB en cada una de las cachés L3 de 8 MB) para almacenar información.

Esta información sirve para reducir el tráfico de coherencia entre las 2 cachés L3.

Quizás AMD active Snoop Filtering en las versiones server y no en escritorio. O simplemente deje un ajuste en BIOS para activar / desactivar esta característica.

Conclusión

AMD ha hecho un excelente trabajo con el subsistema de caché de AMD Zen. Va a ser una parte fundamental en el éxito de la serie de procesadores Ryzen.

Hasta aquí otro de mis artículos en informaticapremium sobre lo último en hardware, sistemas, almacenamiento, redes, programación, diseño web, recuperación de datos y actualidad del mundo de la técnica y la informática. Nos vemos en breve.

Carlos Yus Valero.

Autor: Carlos Yus Valero

Apasionado de la tecnología, el mundo de las IT y la física teórica. Mi profesión gira en torno a la administración de sistemas y el hardware hace 18 años.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.