鲲鹏处理器的中断处理、内部异常处理以及访存原理

中断

中断在哪里发生在CPU运行时,除非来自收到处理器外部的中断消息来通知CPU,CPU会一直按照既定的运行流程运行,而不受到其它外部干扰。也就是说只有中断才是处理器与外部的交互方式。
中断分类:在计算机中,中断通常是频繁发生的。中断既然来自外部,也就是说中断不是由当前执行的指令触发,把中断也称为异步异常。异步异常分为三种:IRQ(Interrupt ReQuest)、FIQ(Fast Interrupt reQuest)、SError(System Error,由处理器外部硬件触发)。FIQ的优先级高于IRQ,中断也通常指的是这两种。
中断发生的流程:外部硬件声明一条中断请求线与每个CPU核的某个引脚连接。在这个中断线未禁用的情况下,当这里产生中断并发送到CPU的引脚上,CPU在下一次取指令前看到这个中断后,就会触发相应的异常类型。通常计算机系统会把中断源并到中断控制器中,由它按优先级发送中断消息给CPU。

内部异常处理

中断在哪里发生内部异常是指CPU在执行某一条指令的过程里触发的异常。也称为同步异常。
内部异常分类

  1. 执行异常生成指令时引发的异常:SVC(Supervisor Call)、HVC(Hypervisor Call)、SMC(Secure Monitor Call)。
  2. 访问数据时,没有相应的读/写权限无法访问或虚拟地址未映射到物理地址而引发的异常——数据异常。
  3. 取指时,没有执行权限或虚拟地址未映射到物理地址而引发的异常——指令异常。
  4. CPU遇到无法识别的指令——未定义的指令异常。
  5. 调试过程中需要在执行中暂停——调试异常。

寄存器

此架构中,寄存器分为通用寄存器、特殊寄存器、系统寄存器。
31个64位通用寄存器X0~X30:用来保存地址或者数据,这里的数据主要是参数、临时数据、计算结果等。如果是三十二位寄存器通常用Wn表示。