【P7&Loongson】支持部分中断/异常处理

Bug_Log

1.检测到异常后,未能完全将受害指令之后的指令影响消除

受害指令前后指令“假冲突”产生的阻塞

Stall与Req同时存在时,忽略了增添Req对F_pc写使能的影响,导致Stall单方面使F_pc不可写,F_pc未更新,异常跳转NPC失效。

例: 某时刻 D-E-M : mfhi-syscall-divu;下一周期stall和req同时存在
【P7&Loongson】支持部分中断/异常处理
下方红圈处F_pc值未更新

解决: 顶层Req信号优先级最高,修正IFU的写使能We

错误开始的乘除槽

例: 某时刻 D-E-M : bnez-divu-syscall;req存在,div进入乘除槽HILO开始运算

解决: M级必定能检测出是否发生异常,只有在E级的乘除槽脱离管控;所以异常发生时,受害指令后的指令最多刚刚到乘除槽,所以只需要用Req信号限制乘除槽的运作即可

always @(posedge Clk) begin
	if(Rst == 1) begin
		HI <= 0;
		LO <= 0;
		Wait <= 0;
		Busy <= 0;
	end else if(Req != 1) begin	//Req limitation
		if(Wait == 0) begin
			case(HILOOp)
			...
	end
上一篇:java 可变参数 int...


下一篇:2.3 字符串