
El procesador Broadway esta basado en los PowerPC G3 de IBM. He estado buscando informacion mas especifica sobre el procesador de la Wii pero no he conseguido nada. Pongo informacion sobre el PowerPC G3 pero no puedo confirmar si es igual para el procesador Broadway.
Características
- Cache de datos e instrucciones separadas.
- 32 Kbytes.
- Asociativa por conjuntos de 8 vías.
- Indexada por la dirección efectiva.
- Tags por la dirección física.
- Algoritmo pseudo LRU de reemplazamiento.
- Cada bloque de la cache es de 32 bytes (8 palabras).
- Dos bits de coherencia en cada bloque de la cache de datos:
- Modified, Exclusive, Invalid
- Un bit de coherencia en cada bloque de la cache de instrucciones: Invalid, Valid
Cache de datos
- Modified: El bloque direccionado está en la cache, y está modificado respecto a lo almacenado en el subsistema de memoria.
- Exclusive: El bloque direccionado está en la cache, y esta cache tiene propiedad exclusiva sobre el bloque. Sólo se encuentra en la cache de este procesador. Los datos del bloque son coherentes respecto al bloque en el subsistema de memoria.
- Invalid: El bloque direccionado no contiene datos válidos o no se encuentra en la cache.
Cache L2
- SRAMs síncronas externas para el almacenamiento de datos de hasta 1 Mbyte.
- Asociativa por conjuntos de 2 vías con 4096 entradas.
- Está organizada en líneas de 64 o 128 bytes, sudivididas en bloques de 32 bytes (8 palabras).
- Cada bloque tiene bits de estado valid y modified.
- Acepta múltiples accesos simultáneos.
- Cache de instrucciones: solicitud de instrucción
- Cache de datos: operación de carga o dos almacenamientos
- Peticiones desde la cache L1 son buscadas en los tags de la L2 y servidas por la L2 si se encuentran, en caso de fallo, son reenviadas al bus.
- Soporta sistemas de coherencia de cache a través de snooping.
- Da servicio a peticiones snoop desde el bus.
- Establece prioridad para las peticiones.
- Normalmente trabaja en modo write back.
Predictores de salto en IBM G3
Unidad de procesado de saltoes ( BPU ): predicción estática y dinámica de los saltoes.
Componentes de la BPU
BHT: tabla de histórico de saltoes implementada mediante una caché de 512 entradas y 2 bits por entrada. Predictor local de 2 bits.
BTIC: cache de direcciones de instrucciones de los saltoes (BTB) implementada mediante una caché asociativa por conjuntos de 64 entradas, 4 vías y 16 entradas por conjunto. Almacena los saltoes más recientemente tomados.
Registros de control: CR o registro condicional sobre el cual se realizan la operaciones en los saltoes condicionales, CTR o registro contador que almacena dirección de salto para los “bcctr”, y LR o registro de enlace que almacena la dirección de salto para los “bcl”.
Características de la BPU
Analiza las instrucciones provenientes de caché, 4 instrucciones por ciclo. Es capaz de procesar 1 salto por ciclo, realizando las operaciones necesarias en el registro CR si se trata de un salto condicional.
Si las dependencias de datos impiden resolver el salto inmediatamente se predice el resultado del salto.
El predictor a utilizar, estático o dinámico depende del valor asignado al registro hardware HID0[BHT]:
HID0[BHT] = 1, predicción dinámica
HID0[BHT] = 0, predicción estática
Ante una predicción realizada no se podrá escribir a registro el resultado de la instrucción hasta resolver el salto, ejecución especulativa.
En lo que se resuelve un primer salto se puede hacer la predicción de un segundo salto, pero las nuevas instrucciones a ejecutar han de esperar en la cola de instrucciones hasta saber si la predicción anterior fue correcta.
Tras un salto tomado o predicho como tomado un éxito en la BTIC supone un ahorro de 1 ciclo en la carga de las nuevas instrucciones en la cola.
Predicción estática de los saltos
En la arquitectura PowerPC esté tipo de predicción está implementada como parte del código de instrucción del propio salto.
Las instrucciones de salto cuentan con un campo denominado BO-field que permite realizar una predicción por software sobre la resolución de cada salto.
El bit menos significativo del campo BO-field, bit “y”, determinará si el salto se toma o no, y = 1 se toma,
y = 0 no se toma.
Se utiliza sólo si HID0[BHT] = 0.
Predicción dinámica de los saltos
Se realiza haciendo uso de la BHT o predictor local de 2 bits que almacena la predicción asociada a cada salto.
Esta caché contiene 512, por lo que se utilizan los 9 bits menos significativos de la instrucción para indexar las predicciones asociadas a cada salto.
Para cada salto la predicción puede ser “fuertemente no tomada”, “no tomada”, “tomada” o “fuertemente tomada”.
Se utiliza sólo si HID0[BHT] = 1.
Para tener mas informacion respecto esta jerarquia se tiene que acceder a los siguientes temas de mo Blog. En ellos se especifica mucho mas afondo todos los distintos aspectos respecto al Broadway.
-RISC vs CISC (Usa la tecnologia RISC)
-CPU de la Wii -Broadway-
-Organizacion y rendimiento de la memoria cache.
INTRODUCCION
Una memoria caché es una memoria en la que se almacenas una serie de datos para su rápido acceso. Existen muchas memorias caché (de disco, de sistema, incluso de datos, como es el caso de la caché de Google), pero en este tutorial nos vamos a centrar en la caché de los procesadores.
Básicamente, la memoria caché de un procesador es un tipo de memoria volátil (del tipo RAM), pero de una gran velocidad.
En la actualidad esta memoria está integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantáneos. Estas instrucciones y datos son aquellas a las que el procesador necesita estar accediendo de forma continua, por lo que para el rendimiento del procesador es imprescindible que este acceso sea lo más rápido y fluido posible.
Caché de memoria: De acuerdo a la ubicación física que tienen en elsistema se denominan o identifican por niveles:
-Nivel 1 (L1): Conocido como caché interno, es el nivel más cercano a la CPU (está en el mismo núcleo) con lo que el acceso se produce a la velocidad de trabajo del procesador (la máxima velocidad). Presenta un tamaño muy reducido, en Intel (4 a 32 KB), en VIA/Cyrix (1 a 64 KB), en AMD (8 a 128 KB).
-Nivel 2 (L2): Conocido como caché externo, inicialmente se instalaba en la placa base (en el exterior de la CPU). A partir de los procesadores Pentium 4 vienen incorporado en el procesador (no precisamente en el núcleo). El nivel L2 apareció con el procesador Pentium Pro, es una memoria más lenta que L1, pero de mayor capacidad. Los tamaños típicos de la memoria caché L2 oscilan en la actualidad entre 256 KB y 4 MB.
-Nivel 3 (L3): Se encuentra en algunas placas base, procesadores y tarjetas de interfaz. El procesador de Intel Itanium trae contenida en su cartucho al nivel L3 que soporta un tamaño hasta de 4 MB, y el Itanium 2 tolera hasta 6 MB de caché L3.
-Nivel 4 (L4): Se encuentra ubicado en los periféricos y en algunos procesadores como el Itanium.
Caché de memoria RAM: La memoria principal RAM suele hacer de caché para los dispositivos de almacenamiento y otros tipos de periféricos.
Caché en disco duro: Utilizadas por los navegadores Web y algunos periféricos.
La búsqueda de información comienza por la caché L1, y se va subiendo nivel a nivel en caso de no encontrar lo que se busca en el nivel actual. Cuantas más capas se asciende, mayor es el tiempo de espera. Pero, a mayor cercanía a la CPU, la probabilidad de encontrar lo que se busca es mayor. Esta forma de trabajo resulta una excelente relación de compromiso entre diversos factores, y consigue mejorar el rendimiento del ordenador de forma notable.
DISEÑO DE LA MEMORIA CACHE
En el diseño de la memoria cache se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la cache y de sus bloques.
Política de ubicación
Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria cache. Las más utilizadas son:
Directa: Al bloque i-ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria cache.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria cache.
Asociativa por conjuntos: La memoria cache se divide en k conjuntos de bloques, así al bloque i-ésimo de memoria principal le corresponde el conjunto i módulo k. Dicho bloque de memoria podrá ubicarse en cualquier posición de ese conjunto.
Política de extracción
La política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria cache. Existen dos políticas muy extendidas:
Por demanda: Un bloque sólo se trae a memoria cache cuando ha sido referenciado y se produzca un fallo.
Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-esimo. Esta política se basa en la propiedad de localidad espacial de los programas.
Política de reemplazo
Determina qué bloque de memoria cache debe abandonarla cuando no existe espacio disponible para un bloque entrante. Básicamente hay cuatro políticas que son:
Aleatoria: El bloque es reemplazado de forma aleatoria.
FIFO: Se usa un algoritmo First In First Out FIFO (primero en entrar es el primero en salir) para determinar qué bloque debe abandonar la cache. Este algoritmo generalmente es poco eficiente.
Menos recientemente usado (LRU): Se sustituye el bloque que hace más tiempo que no se ha utilizado.
Menos frecuentemente usado (LFU): Se reemplaza el bloque que se ha usado con menos frecuencia.
Siendo la Aleatoria y la LRU las de mejor rendimiento.
Política de escritura
Determina cuándo se actualiza la información en memoria principal cuando se ha escrito en memoria cache. Existen dos políticas principales:
Escritura inmediata o escritura directa: En inglés Write Through. Cuando se escribe en un bloque que se encuentra en memoria cache, la información se modifica también simultáneamente en memoria principal, manteniendo así la coherencia en todo momento. Suele combinarse con la técnica de "No carga en escritura" (No Write Allocation) que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, la modificación se realizará únicamente en memoria principal, sin traer dicho bloque a cache, y además sólo se actualizará la palabra concreta que haya cambiado.
Escritura aplazada o post-escritura: En inglés Write Back. Cuando se escribe en un bloque que se encuentra en memoria cache, queda marcado como basura usando un bit especial llamado normalmente dirty bit o bit de basura. Cuando el bloque sea desalojado de memoria cache (mediante la correspondiente política de reemplazo), se comprueba el bit de basura, y si está activado se escribe la información de dicho bloque en memoria principal. Esta política suele combinarse con la técnica de "Carga en escritura" (Write Allocation), que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, traeremos a cache el bloque en cuestión y lo modificaremos ahí.