[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]

Vista General de la Caché de la CPU

Para mejorar el rendimiento algunas CPU's de la familia 68k tienen la posibilidad de guardar accesos a memoria en una caché.
La información en Caché siempre es referida usando direcciones lógicas, incluyendo el código de la función que realiza el acceso. Esto significa que los accesos en Modo Usuario y Modo Supervisor crearan diferentes entradas en la Caché (por favor consulte la documentación de Motorola para mas información).

siguiendo con la vista general acerca de las capacidades de uso de Caché en las CPU's 68k:

Gestión de la Caché en WHDLoad

La primer cosa importante es comprender que las caches en los 68030..68060 son controladas por el Registro de Control de Caché (Cache Control Register, CACR) y la Unidad de Gestión de Memoria (Memory Managment Unit, MMU)!
En el CACR los caches pueden ser activados o desactivados en forma global. Usando las Paginas individuales de la MMU (4 KByte con WHDLoad) se marcara como deben ser cacheadas.
En el 68030 una pagina de memoria puede ser Cacheable o NoCacheable. En un 68040/68060 puede ser cacheable con WriteThrough, cacheable con CopyBack, NoCacheable (impreciso) o NoCacheable Serializada (preciso).

Si la MMU no esta siendo usada por WHDLoad, el mismo controla solamente el CACR.

Configuración de la Caché por Defecto

Por defecto, las áreas de WHDLoad, el Esclavo y ExpMem son marcadas como cacheables con CopyBack. El área BaseMem se marca como NoCacheable, y las Caches de Datos e Instrucciones son activadas en el CACR. Por lo tanto los programas ubicados en el área BaseMem se ejecutan sin Caches, pero WHDLoad, el Esclavo y la ExpMem usan las Caches para mejor rendimiento. Si la MMU no es utilizada por WHDLoad esta configuración resulta en la desactivación de ambos Caches dado que sin la MMU una configuración diferente para diferentes regiones de memoria no puede ser implementada y por lo tanto si se marca una región como NonCacheable deben desactivarse todos los Caches.

Control de la Caché por el Programador

Existon dos funciones resload para controlar las Caches: resload_SetCACR y resload_SetCPU. La resload_SetCACR es la rutina históricamente mas vieja y puede ser reemplazada completamente por resload_SetCPU (WHDLoad mapea internamente los argumentos de resload_SetCACR y llama a resload_SetCPU). De todas formas el uso de resload_SetCACR se recomienda para todas aquellas personas que no lo conocen todo acerca de las Caches y su comportamiento en un sistema Amiga. Usando resload_SetCACR las caches de instrucciones y datos pueden ser activadas o desactivadas separadamente. resload_SetCACR solamente afecta a la capacidad de cachear el área BaseMem.

Control de la Caché por el Usuario

Si el programador ha hecho un buen trabajo el usuario no debe hacer nada relacionado con las Caches debido a que toda la configuración requerida ha sido hecha por el Esclavo.
Sin embargo puede haber dos razonas para cambiar manualmente la configuración de la Caché. Primero, para hacer que un instalador funcione cuando tiene problemas debido a que se ejecuta demasiado rápido (por ej. creando errores en la salida grafica) y segundo para hacer que un programa instalado se ejecute mas rápidamente.

Para hacer que un programa que ocasiona una caída del sistema funcione la opción NoCache puede ser usada. Esta opción desactiva todas las caches y marca toda la memoria como NoCacheable Serializada (preciso). Si la máquina tiene Memoria Chip de 32 bits aun será mas rápida que una A500 original.

Para hacer que un programa instalado se ejecute mas rápidamente se pueden configurar algunas opciones que habilitaran las Caches. Esta configuración sobreescribirá la del Esclavo. En el 68020 la opción Cache puede configurarse. En un 68030 también la opción DCache puede utilizarse, que incluye también la opción Cache. En un 68060 hay algunas opciones mas: BranchCache, StoreBuffer y SuperScalar. La opción ChipNoCache/S puede mejorar el rendimiento en 68040 y 68060, ver debajo.

Posibilidad de Cachear la Memoria Chip

La posibilidad de cachearla puede hacerse no solamente por medio de la CPU (CACR) y la configuración de la MMU sino también mediante hardware externo. La CPU envía una señal al bus si intenta cachear una dirección. Y un hardware externo puede enviar una señal a la CPU (luego de que una dirección ha sido colocada en el bus de direcciones durante un acceso a memoria) indicando que una dirección no debe ser cacheada.
El mecanismo por el cual el hardware envía la señal a la CPU indicando si la memoria es cacheable o no es utilizado en todas (hasta donde yo se) las Amigas y las tarjetas de CPU conteniendo CPU's >= 68030 (debido a que tienen una caché de datos). Toda la Memoria Chip y el Espacio de E/S (CIA/Custom/RTC) que no debe ser cacheado por la caché de datos se ve afectado. Esto es necesario para evitar inconsistencias en la caché, por ejemplo debidas a actividad DMA.
La reacción de la CPU ante un rechazo del hardware sobre el cacheado de un acceso varia entre las diferentes CPU's. En el 68030 no hay ningún impacto en el rendimiento del acceso, los datos simplemente no son cacheados. En el 68040 los accesos de lectura se realizaran a la máxima velocidad pero los accesos de escritura (CopyBack) serán cancelados y reiniciados sin cachear lo cual resultara en un acceso aproximadamente 5 veces mas lento (dependiendo del hardware y la velocidad de la CPU) comparado con un acceso sin cachear. En el 68060 las operaciones de lectura y escritura serán canceladas y reiniciadas. Los accesos de lectura serán aproximadamente 3 veces mas lentos y los de escritura aproximadamente 5 veces mas lentos.
Los problemas mencionados están relacionados con el acceso a datos. Los accesos a instrucciones usualmente no son afectados y son cacheables incluso dentro de la Memoria Chip. Existen algunos (probablemente fallidos) componentes de hardware que no permiten que las instrucciones se cacheen en Memoria Chip. En este tipo de hardware la opción ChipNoCache/S debe ser usada para evitar un enlentecimiento mayor en la velocidad de ejecución debido a que los accesos a instrucciones serán alrededor de 2 veces mas lentos.
Este comportamiento puede verificarse ejecutando el Speed.Slave ubicado en el directorio src/memory-speed del archivo para desarrolladores.

Modo Acelerado (Burst)

El Modo Acelerado (Burst) del 68030 instruye a la CPU para siempre leer una línea completa de la caché (16 octetos) si ocurre una falla de localización en caché en lugar de solo leer la palabra larga que se solicitó. El Modo Acelerado debe ser soportado por el equipo, en caso contrario no se realiza la operación en Modo Acelerado sin penalización a la velocidad. El Modo Acelerado puede ser activado por separado para las cachés de instrucciones y de datos. Dado que un acceso en Modo Acelerado toma más tiempo que un acceso simple el Modo Acelerado solo brinda una ventaja en el rendimiento si la mayoría de las entradas en la línea de la caché son también utilizadas antes que la línea de caché se descarte. Para el caso de la caché de instrucciones el Modo Acelerado en general mejora el rendimiento. Para la caché de datos solamente cuando ocurren lecturas de ubicaciones de memoria consecutivas. WHDLoad activa el Modo Acelerado junto con el uso de la caché de instrucciones a partir de la versión 18.0. El Modo Acelerado de datos no es activado por WHDLoad.

Alocación de Escritura (Write Allocation)

La Alocación de Escritura controla la gestión de la caché en el 68030 cuando ocurre una pérdida de caché durante una operación de escritura. La Alocación de Escritura debe ser activada cuando partes del programa instalado se ejecuten en Modo Usuario. Si el programa instalado se ejecuta solamente en Modo Supervisor la Alocación de Escritura puede ser desactivada, lo cual brindara una mínima ventaja en el rendimiento.

Caché de Ramificaciones (Branch Cache)

La Caché de Ramificaciones solamente esta disponible en el 68060. Es una especie de caché de instrucciones para instrucciones de ramificación. Pero en diferencia con la caché de instrucciones no se ve afectada por la configuración de la MMU! Esto significa que aun cuando la Pagina de memoria apropiada sea marcada como No Cacheable, las instrucciones de ramificación serán cacheadas si la Caché de Ramificaciones esta activada.


Lea el Manual de Usuario de Microprocesadores Motorola para mayor información. Si Ud. tiene correcciones o adiciones a esta pagina por favor contacteme.
[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]