2011-03-28 18 views
10

Actualmente estoy leyendo/aprendiendo acerca de la arquitectura ARM ... y me preguntaba por qué hay tantos modos (FIQ, Usuario, Sistema, Supervisor, IRQ, ...).modos ARM y ¿por qué hay tantos?

Mi pregunta es ¿por qué necesitamos tantos modos? ¿No bastaría simplemente con el Usuario y el Sistema?

Gracias de antemano.

Respuesta

11

Es solo una decisión arquitectónica. La gran ventaja de los modos múltiples es que tienen algunos registros bancarizados. Esos registros extra le permiten escribir mucho rutinas de excepción menos complicadas.

Si tuviera que elegir solo dos, solo USR y SYS son probablemente la mejor opción, pero ¿qué pasaría si tomara una excepción? El modelo ARM normal es ir a un modo de excepción, configurar el registro de enlace almacenado para ese modo de excepción para que apunte a la instrucción a la que desea regresar después de resolver la excepción, guardar el estado del procesador en el registro SPSR del modo de excepción y luego salta al vector de excepción. USR y SYS comparten todos sus registros: con este modelo, volarías la dirección de devolución de funciones (en LR) cada vez que tomaras una interrupción.

El modo FIQ en particular tiene aún más registros bancarizados que los otros modos de excepción. Esos registros adicionales están en consonancia con la parte "F" de FIQ - significa "rápido". No tener que guardar y restaurar más contexto del procesador en el software acelerará su manejador de interrupciones.

5

No hay mucho que añadir a la respuesta de Carl. No estoy seguro de qué familia/arquitectura de procesadores ARM está hablando, así que supongo que en base a su pregunta (FIQ, IRQ, etc.) usted está hablando de ARM7/9/11. No enumeraré todas las diferencias entre cada modo en cada variante de arquitectura ARM.

Además de lo que dijo Carl, algunas otras ventajas de tener diferentes modos para diferentes circunstancias:

  • por ejemplo, en el FIQ, que no tienen que ramifican de inmediato, usted puede solo sigue ejecutando. Con otras excepciones, tiene que derivarse de inmediato

  • con modos diferentes, tiene soporte natural para pilas separadas. Si está realizando múltiples tareas (por ejemplo, RTOS) y no tiene una pila separada cuando está en modo de interrupción, tiene que agregar espacio extra en cada pila de tareas para la situación de interrupción del peor caso

  • con diferentes modos, ciertos registros (por ejemplo, CPSR, MMU regs, etc., depende de la arquitectura) están fuera de los límites. Lo mismo con ciertas instrucciones. No desea permitir que el código de usuario modifique registros privilegiados, ¿verdad?

Cuestiones relacionadas