24 noviembre 2010

Tema 3. Análisis de la jerarquía de memoria de Intel Pentium Pro


                 La arquitectura Intel Pentium Pro es la sexta generación de arquitectura x86 de los microprocesadores de Intel, cuya meta era remplazar al Intel Pentium en toda la gama de aplicaciones, pero luego se centró como chip en el mundo de los servidores y equipos de sobremesa de gama alta. Posteriormente Intel lo dejó de lado a favor de su gama de procesadores de altas prestaciones llamada Xeon. 

                 Pentium Pro fue puesto a la venta en noviembre de 1995, dos años después de la salida de Pentium. En 1997 fue reemplazado cuando Intel estrenó Pentium II. 

                 Pentium Pro tiene una dirección virtual de 32 bits, hoy en día se queda un poco corto, pues las nuevas arquitecturas tienen una dirección virtual mayor. Las direcciones físicas son de 32 bits. Esta máquina permite páginas grandes (4KB, 4MB), lo que se puede usar para cuestiones como el sistema operativo o para tener un buffer de bloques. Las páginas grandes evitan que se asignen muchas entradas a un simple objeto que estará siempre presente.

                  La cache está dividida en dos: caché de datos y caché de instrucciones separadas. Su tamaño es de 8KB cada una. Las cachés de primer nivel son indexadas y etiquetadas físicamente y las de segundo nivel contienen tanto instrucciones como datos y son de 256KB o de 512KB. Estas memorias son 4-Asociativas y usan LRU aproximado como técnica de reemplazo. El tamaño de los bloques es de 32 bytes. Y la política de escrituras es la Escritura diferida.




Jerarquía de memoria del Pentium Pro:

– Registros del microprocesador
- 7 registros de propósito general: AX, BX, CX, DX, BP, DI, SI... de 16 bits, 32 bits y 64 bits
- Registros de pila: SS (Stack Segment), ESP (Extended Stack Pointer), EBP (Extended Base Pointer)
- Registros para manejo de Strings: ESI (dirección de comienzo de una cadena de origen) y EDI (dirección de una cadena de destino)
- Puntero de Instrucción: registro EIP (Extended Instruction Pointer), registro CS (Code Segment)
- Registro de estado: EFLAGS, de 32 bits contiene las banderas de acarreos, paridad, cero, signo, desbordamiento...
- Registros de segmento
- Otros registros... de tablas, de control, de depuración, de prueba de la TLB, específicos del Pentium...


– Memoria principal:
Memoria segmentada.
Mecanismo de paginación.


– Memoria caché

El Pentium Pro tiene dos cachés de nivel 1 (L1).
- Caché de datos de 8KBs y bus de 64 bits
- Caché de instrucciones de 8KBs y bus de 256 bits. Conectado con los registros de pre búsqueda de instrucciones.
- Cada caché tiene su propia TLB 4-asociativa. La TLB de datos tiene 32 bits y la TLB de instrucciones posee 64 bits
- Se puede acceder simultáneamente a ambas cachés
- La arquitectura NetBurst (nativa desde el Pentium 4) sustituye la caché de instrucciones por una caché de traza: almacenar microinstrucciones en lugar de instrucciones, ahorrando hacer de nuevo la etapa de decodificación.
- Controlador de caché
- Elementos de caché: bloque de datos, bloque de etiquetas, lógica de control

- Caché Asociativa de N vías (asociativa por conjuntos), cada conjunto tiene N líneas. La memoria principal se divide en grupos con N bloques de memoria cada uno. En el caso del Pentium, N (número de vías) = 2. En Pentium III hay 4 vías para la caché de instrucciones y 2 para la de datos.

                Cada vía tiene 128 etiquetas. Cada línea tiene 32 bytes. Cada etiqueta es de 22 bits: 20 bits de dirección y 2 bits de atributos para Write protect y Valid.

                 Por ejemplo, la dirección física A31-A0 estaría formada por:
- A31-A12 (20 bits): Etiqueta
- A11.A-5 (7 bits): Conjunto (índice en el acceso a la vía)
- A4-A0 (5 bits): Posición (byte dentro de la línea)

Las direcciones virtuales y físicas tienen 32 bits

                  Cuando se produce una ausencia en la caché, se busca la información de una línea completa (32B) en la memoria principal y se carga en una línea que esté libre. Si debe sustituirse una de las líneas existentes, se aplica un algoritmo de reemplazo. El Pentium Pro utiliza el algoritmo de reemplazo LRU aproximado (Least Recently Used): se sustituye la línea que lleva más tiempo en la caché sin haber sido referenciada.

                Para actualizar la línea se utiliza lectura directa: primero se da a la CPU el dato que quiere, y luego se lee el resto de la línea, mientras la CPU trabaja.

               Antes de reemplazar un bloquede caché, es necesario comprobar si ha sido alterado en caché pero no en memoria principal. Si ha sido modificado, la memoria principal debe también actualizarse para evitar incongruencias de datos. El Pentium utiliza el método de actualización de memoria de escritura diferida (postescritura o copy back).
Jerarquía de caché

Jerarquía de la caché

Caché de nivel 1 (L1) o caché primaria:
- Caché de pequeño tamaño integrada en la CPU.
-  La más rápida (velocidad del microprocesador).
-  Algoritmos de carga clásicos (vecindad temporal y espacial).
- 8 KB

Caché de nivel 2 (L2) o caché secundaria:
-  Ligeramente más lenta que la caché L1, pero de mayor capacidad.
-  Almacena los datos e instrucciones muy usados recientemente pero que no han sido guardados en la caché L1.
-  Si la L1 no contiene el dato, se transfierela petición a L2.
-  Algoritmos especiales (ajustados a programas).
- Puede estar en la placa base o integrada en la CPU (pero separada de la L1).
-  Se incluye a partir del Pentium Pro.
- La caché L2 tiene entre 256KB y 1MB, y es asociativa por conjuntos de 8 vías. Alimenta a las dos cachés L1 (8-16KB).

Características de la jerarquía de memoria del Pentium Pro



2 comentarios:

  1. Muchas Gracias! :) Me fue de gran ayuda, muy bien explicado!

    ResponderEliminar
  2. Muchas Gracias! :) Me fue de gran ayuda, muy bien explicado!

    ResponderEliminar