Con Sandy Bridge, Intel ha innovado en el diseño de cachés y como primicia nos ofrece una caché L0i (caché de instrucciones) que contiene instrucciones ya decodificadas procedentes de la caché L1 de 32 KB y 8 vías a través de los decoders x86.
La micro op cache o L0i de 1500 micro ops
Data caches: observamos las cuatro zonas de caché y la RAM.
La caché de instrucciones de nivel 0 (L0i) de los procesadores Sandy Bridge es una caché de micro operaciones, es decir, de instrucciones ya descodificadas en un formato interno, propietario del procesador.
Para un análisis a fondo de la micro op cache os recomiendo el siguiente enlace:
Intel Sandy Bridge Core i7 2600 K. Análisis X86 decoders y L0i micro op cache – ProfessionalSAT
La caché L1i e igualmente los niveles superiores contienen las complicadas instrucciones X86 sin descodificar. Intel, que en su día diseño la ISA X86, sabe que es compleja y a veces absurda en su arquitectura y por ello ha tomado esta medida novedosa, la inclusión de un nuevo nivel de caché L0.
La tasa de aciertos se cifra en torno al 80% para un tamaño sobre los 6 KB y una transferencia pico de 32 bytes / ciclo.
En las prueba de bajo nivel que he realizado su tamaño efectivo ronda los 2 a 4 KB, con unas latencias prácticamente ridículas de 2 ciclos load to use en lectura secuencial o en acceso pseudo aleatorio.
Instruction cache: la L0i obtiene una increíble latencia de 2 ciclos.
En acceso aleatorio puro (random access) su tasa de aciertos es cero (lógicamente las instrucciones no pueden estar decodificadas y cacheadas previamente a su petición ya que se trata de un patrón aleatorio) y se dan en su caso aciertos de L1i (L1i hits) con los habituales 4 ciclos de latencia.
Caché L3 unificada y multibanco de 8 MB y 16 vías
Sandy Bridge cuenta con una L3 con cuatro bancos de 2 MB y 16 vías. El acceso al banco local de cada core se hace directamente y con baja latencia. A los otros tres bancos se llega a través del Ring Bus.
Sandy Bridge 32 nm. Bajo cada core está su banco local L3 de 2 MB.
Acceso L3 con bloque de 2048 KB.
La latencia efectiva se sitúa en los 34 ciclos en acceso pseudo aleatorio y en 40 ciclos en modo random (aleatorio). Son resultados muy brillantes.
El core de Sandy Bridge junto con su banco local L3 de 2 MB.
Para tamaños de acceso mayores de 2 MB, el núcleo de ejecución se ve obligado a acceder a bancos de L2 de 2 MB no locales a través del Ring Bus. Por ello, lógicamente la latencia se incrementa.
Acceso L3 con bloque de 6 MB (6144 KB).
En los Core i7 2600K contamos con la implementación completa de cuatro bancos L3 para un total de 8 MB, en otras versiones inferiores Intel deshabilita uno de los bancos quedando en 6 MB L3.
Conclusiones
Esperad en breve una ampliación de este artículo, tengo bastantes datos técnicos y microarquitecturales que agregar pero voy realmente mal de tiempo… En concreto estoy preparando un análisis más exhaustivo de la L0i o micro op cache incluyendo una investigación del ancho de banda de descodificación con distintos tipos de instrucciones.
Espero que con esta pequeña introducción tengáis material suficiente para pensar como se mejora un diseño ya excelente partiendo de un core Nehalem / Westmere.
Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.