La Red de Conocimientos Pedagógicos - Currículum vitae - Descripción detallada de PowerPC E500 MMU

Descripción detallada de PowerPC E500 MMU

1. ¿Qué es MMU?

MMU es la abreviatura de unidad de gestión de memoria y su nombre chino es unidad de gestión de memoria. MMU es el hardware de la computadora responsable de las solicitudes de acceso a la memoria del procesador (CPU). Sus funciones incluyen la conversión de direcciones virtuales a direcciones físicas (administración de memoria virtual), protección de la memoria, control de caché, etc.

MMU es un componente de hardware estrechamente relacionado con el software y uno de los componentes más grandes que ejecuta el mecanismo del kernel de Linux y otros sistemas operativos que dependen de la unidad de administración de memoria MMU. Si el procesador no tiene una MMU, la señal de dirección de memoria generada por la unidad de ejecución interna de la CPU se enviará directamente al pin del chip a través del bus de direcciones y será recibida por el chip de memoria, que es la dirección física (PA para abreviar). La palabra inglesa "físico" representa contacto físico, por lo que PA es una señal en el bus que está físicamente conectado al chip de memoria.

Si la MMU existe y está habilitada, la señal de dirección generada por la unidad de ejecución de la CPU será interceptada por la MMU antes de ser enviada al chip de memoria. Esta señal de dirección se denomina dirección virtual (VA para abreviar). La MMU es responsable de traducir VA a otra dirección y luego enviarla al pin de dirección del chip de memoria, es decir, VA se asigna a PA.

2. PowerPC E500 MMU

powerpc (Performance Optimization with Enhanced RISC–Performance Computing, a veces abreviado como PPC) es una CPU con arquitectura de conjunto de instrucciones reducido (RISC). se deriva de IBM's Power (Performance Optimization with Enhanced RISC).

Con su excelente rendimiento, alta integración y tecnología avanzada, los chips PowerPC se utilizan ampliamente en aplicaciones de comunicación de red, aplicaciones de control industrial, digitalización doméstica, almacenamiento de red, industria militar, control de sistemas de energía y otros campos.

PowerPC E500 es el núcleo de microprocesador de 32 bits de Freescale basado en la arquitectura Power. Hay tres versiones del kernel de la serie E500, a saber, E500v1 y E500mc de E500v2. La versión de 64 bits del E500mc evolucionó hasta convertirse en el núcleo E5500 y se lanzó en 2010.

El núcleo PowerPC E500 (en adelante, "E500") adopta una arquitectura de unidad de gestión de memoria (MMU) de dos niveles. L1-MMU y L2-MMU son dos unidades de hardware en esta estructura. E500 utiliza L1-MMU y L2-MMU, así como algunos registros e instrucciones auxiliares para lograr la conversión de direcciones virtuales y reales. El núcleo de E500v1 es convertir una dirección efectiva de 32 bits en una dirección física de 32 bits (usando 41 direcciones virtuales temporales). El núcleo de E500v2 es convertir una dirección efectiva de 32 bits en una dirección física de 36 bits.

Características de L1-MMU:

1. Dos matrices TLB totalmente asociativas con cuatro entradas (una para acceso a instrucciones y otra para acceso a datos) admiten nueve (E500v1) u 11 (E500v2). tamaño de página, es decir, I-L1VSP y D-L1VSP.

2. Dos matrices TLB asociadas a grupos de 4 vías y 64 entradas (una para acceso a instrucciones y otra para acceso a datos) solo admiten páginas de 4 kb, a saber, IL1TLB4K y D-L1TLB4K.

3.El acceso a la MMU L1 y el acceso a la caché L1 (traducción de direcciones/caché L1) se pueden canalizar completamente, de modo que se pueda completar una carga/almacenamiento por reloj.

4.L1 El acceso a instrucciones de búsqueda TLB y el acceso a datos son paralelos.

5. Todas las entradas TLB L1 son un subconjunto apropiado de las entradas TLB ubicadas en la MMU L2.

6. Realizar automáticamente operaciones de invalidación para mantener la coherencia de L2 TLB.

Características de L2-MMU:

1.16 entradas, matriz TLB L2 unificada totalmente asociativa (para acceso a instrucciones y datos). TLB1 admite un tamaño de 9 (E500v1) o 11 (E500v2), es decir. TLB1.

Los conjuntos de matrices TLB L2 unificadas asociadas (TLB0) de 2.256 entradas de 2 vías (E500v1) o 512 entradas de 4 vías (E500v2) solo admiten páginas de 4 kb, es decir, TLB0 para mapeo de páginas.

3. Apoyo excepcional para la Sra. TLB.

4.TLB1 y TLB0 son administrados por las instrucciones tlbRe, tlbwe, tlbsx, tlbSync, tlbivax y mtspr.

5. La ejecución de TLB1 y TLB0 generada por la instrucción tlbivax del núcleo actual no es válida. Admite operaciones no válidas en TLB1 y TLB0 causadas por otros núcleos que ejecutan instrucciones tlbivax.

6.El bit IPROT implementado en TLB 1 evita la invalidación, protegiendo así las entradas clave (especificadas estableciendo el bit IPROT) contra la invalidación.

2.1 Proceso de conversión de dirección efectiva a dirección real

El proceso de conversión de dirección efectiva a dirección real es el siguiente:

Porque el tamaño mínimo de página del E500 es 4K bytes, por lo que los 12 bits inferiores generalmente se usan como índices dentro de páginas de 4K y no requieren conversión. Primero verifique si la MMU L1 (instrucción o datos) llega a la traducción de la dirección. De lo contrario, la solicitud de traducción se enviará a la MMU L2 (instrucciones y datos) para su procesamiento.

Los tamaños de página admitidos por el núcleo E500v1 y el núcleo E500v2 se muestran en la siguiente tabla. En comparación con el núcleo E500v1, el núcleo E500v2 admite tamaños de página de 1 GB y 4 GB.

2.2 Campo de entrada MMU

En el TLB, los datos se almacenan en filas y una fila se denomina entrada. Una entrada contiene varios bits. La siguiente es una descripción de los significados de los bits de las entradas MMU:

v: Se utiliza para indicar si la entrada actual es válida. 0 significa no válido, 1 significa válido. Después de un reinicio del sistema, el bit V de todas las entradas se establece en 0.

TS: Igual que el espacio de direcciones anterior. 0 representa el espacio de direcciones 0 y 1 representa el espacio de direcciones 1.

Tid [0:7]: PID en el espacio de direcciones anterior. Cuando TID es 0, se ignora la comparación de PID. En Linux, son todos ceros.

EPN [0:19]: Número de marco de página virtual. Dependiendo del tamaño de la página, el número de páginas válidas es diferente.

RPN [0:19]: Número de marco de página físico.

Tamaño [0:3]: Indica el tamaño de página de la entrada actual.

permi[0:5]: utilizado para describir los bits de control de acceso de la entrada actual. Son UR, SR, UW, SW, UX, SX. Representa permisos de lectura/escritura/ejecución en modo usuario y modo kernel respectivamente.

Wimge[0: 4]: w indica si la entrada actual es de escritura directa o de reescritura. Indica si la entrada actual debe ignorar el almacenamiento en caché. m indica que el acceso al área de datos requiere un procesamiento de coherencia del almacenamiento. g representa la protección de funcionamiento del área de almacenamiento correspondiente. e indica si la entrada actual es pequeña o grande.

X0, X1: Describe algunos atributos adicionales.

U [0:3]: Propósito personalizado.

IPROT: Cuando IPROT es 1, significa que la entrada actual está protegida. Las entradas no se pueden invalidar utilizando la directiva tlbivax. Se borra a 0 solo mediante instrucción tlbwe. En E500, sólo TLB1 admite este bit, en TLB0 este bit es siempre 0.

Las instrucciones, registros y excepciones relacionadas con el TLB se muestran en la siguiente tabla:

2.3 Registros relacionados con MMU

Registro Pid0-2: utilizado para almacenar el proceso actual Pid. Este registro sólo es válido para los bits 54-63.

Registro MMUCSR0: se utiliza para invalidar todas las entradas de TLB0 y TLB1.

El bit L2TLB0_FI de este registro invalida todas las entradas de TLB0; el bit L2TLB1_FI invalida todas las entradas de TLB1.

Registro MMUCFG: se utiliza para almacenar la información de configuración actual de la MMU, incluido el número y tamaño de los registros PID, el número de TLB, etc.

Registros TLB0CFG y TLB1CFG: se utilizan para describir la información de configuración de TLB0 y TLB1, incluido el número de entradas, el tamaño de la tabla de páginas y otra información.

El registro auxiliar MAS (MAS 0–MAS 4, MAS 6–MAS 7, sin MAS5) se utiliza principalmente para mantener entradas TLB en la MMU.

Registro MAS0: Qué entrada determina qué TLB se escribe. El campo TLBSEL se utiliza para seleccionar el TLB que se va a operar, 0 indica TLB0 y 1 indica TLB1. El campo ESEL se utiliza para seleccionar entradas TLB. Cuando se utiliza TLB1, los 4 bits inferiores del campo ESEL son efectivos para seleccionar la entrada en TLB1. Cuando se utiliza TLB0, sólo el bit más bajo de ESEL es válido porque TLB0 está conectado por dos conjuntos. El bit NV se utiliza para determinar cómo se reemplazan las entradas en TLB0.

Los campos almacenados en MAS 1-3 corresponden a los campos de la entrada TLB.

Registro MAS4

Este registro se utiliza principalmente para almacenar el valor predeterminado utilizado para cargar automáticamente el registro MAS 0-3 cuando ocurre una excepción de pérdida de TLB. Es decir, el contenido. del registro MAS4 se escribe mediante entrada de hardware. Para mejorar la eficiencia de las excepciones de pérdida de TLB, cuando ocurre una excepción, E500 completará automáticamente parte del registro MAS0-2 con el valor en el registro MAS4:

MAS 0[TLBSEL]lt;- MAS4[TLBSELD ]

MAS 1[TID]lt;- MAS4[TIDSELD]

MAS 1[TSIZE]lt;- MAS4[TSIZED]

MAS2 [X0, x 1] lt; - MAS4[X0D, Para recuperar el TLB. El registro MAS6 proporciona SPID0 y SAS, es decir, dominios PID y AS.

Registro MAS7 (solo compatible con E500v2): Contiene los bits de dirección de orden superior del RPN implementado para admitir direcciones físicas superiores a 32 bits.

2.4 Instrucciones relacionadas con TLB y estado de ejecución

Tianmu (SkyEye), el nombre chino completo del software de simulación digital en tiempo real Tianmu, es una plataforma de simulación de nivel de comportamiento de hardware basada en imágenes Modelado que apoya a los usuarios mediante el uso de arrastrar y soltar para simular y modelar el nivel de comportamiento del hardware. SkyEye admite la simulación del conjunto de instrucciones del procesador E500 basado en la arquitectura PowerPC. Para soportar el funcionamiento de sistemas operativos (como VxWorks, Linux, etc.). ) contiene la unidad MMU, que necesita implementar la función de simulación de la MMU, incluida la implementación de instrucciones relacionadas con el TLB (Translation Lookaside Buffer) y el proceso de traducción virtual y real de la MMU.

Las instrucciones relacionadas con TLB son las siguientes:

Instrucción Tlbre: la instrucción tlbre lee el contenido de cada campo de una única entrada TLB de la MMU L2 y lo escribe en la MMU. Auxiliar (MAS) campo correspondiente del registro. La entrada de lectura está especificada por los campos TLBSEL, ESEL y EPN del registro MAS2 de MAS0. Al leer TLB1, ESEL es válido y EPN no es válido; al leer TLB0, los 2 bits altos de ESEL son válidos y EPN son válidos. Tenga en cuenta que para E500v2, si HID0[en_MAS7_UPDATE] = 1, MAS7 también se actualiza a la dirección física de la entrada TLB.

Instrucción Tlbwe: Esta instrucción extrae el contenido de cada campo del Registro Auxiliar (MAS) de la MMU y lo escribe en una única entrada TLB en la MMU L2. Las entradas escritas están especificadas por los campos TLBSEL, ESEL y EPN del registro MAS2 de MAS0. Cuando se escribe en TLB1, ESEL es válido y EPN no es válido; cuando se escribe en TLB0, los 2 bits superiores de ESEL son válidos y EPN es válido. Tenga en cuenta que para E500v2, el campo RPN en MAS7 también se escribe en la entrada TLB seleccionada.

Comando Tlbsx: El formato del comando es tlbsx RA, RB. Lo que hace esta instrucción es buscar el TLB a través del registro MAS6 usando la dirección de ra Rb, y si acierta, coloca el resultado en los registros MAS 0-3.

Implementación de instrucción:

Instrucción Tlbivax: operación TLB no válida. Esta instrucción invalidará todas las entradas TLB correspondientes a esa dirección virtual calculada y también invalidará las entradas TBL contenidas en TLB en otros procesadores.

De acuerdo con el Bit61 de la dirección efectiva EA, determine si todas las entradas no son válidas. Si no, calcule las entradas correspondientes y luego use la entrada V = 0 para invalidar las entradas.

Comando Tlbsync: Este comando se utiliza para sincronizar la lectura y escritura de entradas TLB. El objetivo principal es transmitir entradas actualizadas de instrucciones tlbivax al bus del sistema para sincronizar otros procesadores. Este comando sólo es válido en sistemas SMP.

2.5 Estado inicial de TLB después del reinicio del sistema

Después del reinicio, todas las entradas de TLB en L1 y L2 MMU no son válidas. La primera entrada de TLB1 debe inicializarse y asignarse un valor. como se muestra en la siguiente figura Pantalla:

Materiales de referencia:

[1] PowerPC? Manual de referencia de la serie e500 core.pdf