异常、中断的发生时刻与响应时刻 ·异常:立即响应,同步 IF ID EX MEM WB 一指令异常:重启当前指令,或终止执行 一系统调用:返回下一条指令 时钟ㄇ几几几几几几几几冂几门 节拍 状态) 中断:指令周期结束响应,异步 机器周期 机器周期 机器周期 、 (取指令) (取有效地址) (执行指令) 指令周期 一返回下一条指令,停止 User program Interrupt handler 程序序语义:精确断点,p228 一之前的指令已执行完成 ·已经提交其体系结构可见状态 一之后的指令还没有发射 ·没有改变任何机器状态 一精确性:顺序/按序,与指令绑定
异常、中断的发生时刻与响应时刻 • 异常:立即响应,同步 – 指令异常:重启当前指令,或终止执行 – 系统调用:返回下一条指令 • 中断:指令周期结束响应,异步 – 返回下一条指令,停止 • 程序序语义:精确断点,p228 – 之前的指令已执行完成 • 已经提交其体系结构可见状态 – 之后的指令还没有发射 • 没有改变任何机器状态 – 精确性:顺序/按序,与指令绑定
外部中断发生时刻:异步 ·f=(g+h)-(i+j; add x5,x20,x21 /register x5 contains g h add x6,x22,x23 /register x6 contains i j sub x19,x5,x6 /f gets x5-x6,which is (g h)-(i j) ·A[12]=h+A[8]; ld x9,64(x22)//Temporary reg x9 gets A[8] add x9,x21,x9 /Temporary reg x9 gets h+A[8] sd x9,96(x22)//Stores h+A[8]back into A[12]
外部中断发生时刻:异步 • f = (g + h) - (i + j); • A[12] = h + A[8]; ld x9, 64(x22) // Temporary reg x9 gets A[8] add x9, x21, x9 // Temporary reg x9 gets h + A[8] sd x9, 96(x22) // Stores h + A[8] back into A[12]
The Basics of Exception Handling Offset o Reserved for ·软硬件接口约定 (p228) Interrupt Vectors Top of Stack- Reserved for 硬件 Stack ·EPC:断点=异常指令地址/下一条指令地址 RAM Cause:检测并记录异常原因 Reserved for Heap Top of Heap ·关中断,清当前中断 8 bytes DATA ·保存PSW/CSR Unused Memory Mapped 建立处理环境:user mode=>kernel mode ·转ESR/ISR入口:非向量式/向量式(Vector表) ROM CODE 软件 50 bytes 1.保存剩余现场:RF User program Interrupt handler 2.开中断 3.进行异常服务 4.关中断 5.恢复现场:RF Interrupt 6.中断返回:iret/eret occurs here -开中断,恢复用户模式,恢复PSW
The Basics of Exception Handling • 软硬件接口约定(p228) – 硬件 • EPC:断点=异常指令地址/下一条指令地址 • Cause:检测并记录异常原因 • 关中断,清当前中断 • 保存PSW/CSR • 建立处理环境:user mode => kernel mode • 转ESR/ISR入口:非向量式/向量式(Vector表) – 软件 1. 保存剩余现场:RF 2. 开中断 3. 进行异常服务 4. 关中断 5. 恢复现场:RF 6. 中断返回:iret/eret – 开中断,恢复用户模式,恢复PSW