jueves, 2 de febrero de 2017

Intel Core i7 2600 K. Análisis cachés L0i 6 KB y L3 unificada 8 MB – LowLevelHardware

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

DCache_RAM_Lat_rmma_20110209_055954_0734Data 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.

SB_uopcacheL0i en Sandy Bridge.

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.

rmma_20110209_064736_0281Instruction 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.

SB_4C_630p_coresSandy Bridge 32 nm. Bajo cada core está su banco local L3 de 2 MB.

L3_Lat_2048K_M2_rmma_20110211_135757_0687Acceso 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.

SandyBridge_dieEl 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.

L3_Lat_6144K_M2_rmma_20110211_140032_0843Acceso 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.