ARM64异常模型之系统错误异常System Error

文章目录

    • Know Why
    • System Error常见类型
    • 总结

Know Why

为什么把系统错误System Error称作为异步异常?

在ARM64体系结构中,异常(Exceptions)是处理器响应某种特定事件或错误条件的方式。异常会导致处理器中断当前执行的指令流,并跳转到一个称为异常向量的预定义位置,以运行特定于异常的处理程序。异常分为同步异常和异步异常两类。

同步异常是由处理器当前执行的指令引发的。这意味着当处理器执行特定指令时,它会检测到一个错误或异常条件。在这种情况下,处理器能够精确地确定引发异常的指令和相关的上下文信息。典型的同步异常包括:未对齐访问(Misaligned access)、除以零错误(Division by zero)、未定义指令(Undefined instruction)等。

异步异常与处理器当前执行的指令无关,而是由外部事件或处理器以外的硬件组件引发的。因为异步异常不是由特定指令触发的,所以它们可能在任何时候发生,与当前执行的指令无关。典型的异步异常包括:中断(Interrupts)、系统错误(System Errors)等。

在ARM64体系结构中,将系统错误(System Error)称为异步异常,是因为它们通常由硬件故障、外部信号或系统总线错误引起,这些错误不是由处理器当前执行的指令直接引发的。因此,系统错误与当前执行的指令无关,可能在任何时候发生,因此被归类为异步异常。

System Error常见类型

在ARM体系结构中,系统错误异常(System Error Exceptions)通常是由硬件故障、外部信号或系统总线错误引起的。以下是一些常见的系统错误异常:

  • Synchronous External Abort:同步外部终止,当处理器试图访问一个发生错误的外部存储器位置时触发。它可以由访问权限错误、内存奇偶校验错误或其他外部存储器系统错误引发。

  • Asynchronous External Abort:异步外部终止,由处理器以外的硬件组件报告的错误触发。例如,当一个外部设备报告内存访问问题时,可能会触发异步外部终止。因为这种异常与处理器当前执行的指令无关,所以它可能在任何时候发生。

  • SError(System Error)中断:这是ARMv8架构中引入的一种新异常类型,用于报告来自处理器的内部错误或来自系统内其他硬件的错误。SError中断可以报告诸如RAS(可靠性、可用性和服务性)错误、ECC(错误校验和纠正)错误等系统级别的问题。

  • 内存管理单元(MMU)异常:当处理器检测到与内存管理单元相关的错误时,可能会触发MMU异常。例如,当发生地址翻译错误或访问权限错误时,MMU会引发异常。

这些系统错误异常通常需要特殊的处理程序来诊断和处理错误。操作系统和硬件厂商可能提供用于处理这些异常的工具和故障排除方法。请注意,具体的系统错误异常类型可能因处理器版本和实现而异。

总结

系统错误异常(System Error Exceptions)是处理器在遇到系统级别错误时引发的异常。这些错误通常与硬件故障、外部信号或系统总线错误有关。系统错误异常通常需要特殊的处理程序来诊断和处理,因为它们通常表明硬件设备、内存子系统或其他关键系统组件中存在问题。

以下是一些常见的系统错误异常类型和相关说明:

  • Synchronous External Abort(同步外部终止):这种异常在处理器试图访问发生错误的外部存储器位置时触发。同步外部终止可以由访问权限错误、内存奇偶校验错误或其他外部存储器系统错误引发。因为此异常是由处理器当前执行的指令触发的,所以可以精确地确定引发异常的指令和上下文信息。

  • Asynchronous External Abort(异步外部终止):这种异常由处理器以外的硬件组件报告的错误触发,例如当一个外部设备报告内存访问问题时。异步外部终止与处理器当前执行的指令无关,因此可能在任何时候发生。它通常表示系统内存子系统中存在问题,需要调查和解决。

  • SError(System Error)中断:这是ARMv8架构中引入的一种新异常类型,用于报告来自处理器的内部错误或来自系统内其他硬件的错误。SError中断可以报告诸如RAS(可靠性、可用性和服务性)错误、ECC(错误校验和纠正)错误等系统级别的问题。这些错误可能源于处理器、内存控制器或其他硬件组件的故障。与异步外部终止类似,SError中断也可能在任何时候发生,与处理器当前执行的指令无关。

  • 内存管理单元(MMU)异常:这类异常在处理器检测到与内存管理单元相关的错误时触发。例如,当发生地址翻译错误或访问权限错误时,MMU会引发异常。MMU异常可能表明虚拟地址到物理地址的翻译过程中存在问题,或者是由于访问了受保护的内存区域而触发的。

当处理器遇到系统错误异常时,它会中断当前执行的指令流并跳转到一个称为异常向量的预定义位置,以运行特定于异常的处理程序。操作系统通常需要实现用于处理这些异常的处理程序,这些处理程序可以诊断问题、尝试恢复错误(如果可能的话),或者通知管理员以进行进一步的故障排除和修复。

请注意,具体的系统错误异常类型和处理方式可能因处理器版本和实现而异。在某些情况下,硬件供应商可能会提供专用的故障排除工具和方法来帮助诊断和解决系统错误异常。

你可能感兴趣的:(Linux内核360度剖析,linux,车载系统,c语言,arm开发)