linux - sanitarias - ¿Cuál es la desventaja de actualizar ARM TTBR(Translate Base Register)?
municipalidad general pueyrredon tramites (1)
Actualizar el TTBR
(registro base de la tabla de traducción) Note1 con la MMU habilitada tiene muchos peligros. Hay interrupciones, fallas de página, TLB (caché MMU) y cachés L1 y L2 a considerar. En sistemas diferentes, las memorias caché pueden ser PIPT o VIVT (etiquetadas física o virtualmente), pueden existir o no cachés L1 o L2.
La gente parece demasiado preocupada por la eficiencia de MMU y TLB. Siempre son eclipsados por los cachés L1 / L2 principales en consideraciones de rendimiento. Es un impacto menor actualizar las tablas MMU y realizar descargas de TLB que tener desalojos innecesarios del código L1 / L2 y cachés de datos. Como mínimo, un TLB vale 4 KB o más de 100 líneas de caché. En algunos casos, la entrada de TLB puede ser de 1 MB.
Algunos datos / códigos en el espacio de usuario L1 / L2 pueden necesitar ser desalojados en los conmutadores de contexto. Sin embargo, para pequeñas cargas de trabajo muy frecuentes, un cambio de contexto de usuario puede mantener el código y los datos en L1 / L2. Por ejemplo, un reproductor de medios que hace una descodificación intensiva de CPU y una comprobación de tareas cron para ver que no hay un nuevo correo electrónico en un servidor. El cambio hacia y desde la tarea ''cron'' puede dar como resultado que el código permanezca en la caché L2 para que se use la descodificación de video.
¿Cuál es la desventaja de actualizar ARM TTBR?
A menos que las tablas from / to sean idénticas, debe mantener constante la vista del sistema de la memoria durante la actualización. Nota2 Naturalmente, esto causará latencia de IRQ y la complejidad de la implementación, ya que necesita sincronizar muchos subsistemas. Además, el código Linux MM (gestión de memoria) es independiente de la arquitectura. Maneja una gran variedad de subsistemas MMU. El objetivo nunca es optimizar localmente (a nivel de arquitectura), sino optimizar a nivel global en las capas genéricas.
Nota 1: El TTBR
es un puntero a una región de memoria alineada 16k física que es el primer nivel de la MMU ARM. Cada entrada es de 1MB (en sistemas de 32 bits) y puede apuntar a otra tabla; a menudo llamado L2.
Nota 2: puede hacer esto en un gestor de arranque o lugares donde está migrando el código de nivel del sistema entre dispositivos de memoria. Es decir, actualizar el TTBR con tablas idénticas no tiene importancia por sí mismo. Es cuando las tablas difieren que cosas extrañas sucederán.
Esta pregunta está relacionada con ésta: mientras se "bifurca" un proceso, ¿por qué el kernel de Linux copia el contenido de la tabla de páginas del núcleo para cada proceso recién creado?
Descubrí que el kernel de Linux intenta evitar la actualización de TTBR al cambiar entre la tierra del usuario y la tierra del kernel al copiar el contenido de la tabla de páginas swapper en cada tabla de página recién creada en la función pgd_alloc
. La pregunta es: ¿Cuál es el inconveniente de actualizar ARM TTBR?