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

2022/2/11 6:13:48

本文主要是介绍【P7&Loongson】支持部分中断/异常处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Bug_Log

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

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

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

例: 某时刻 D-E-M : mfhi-syscall-divu;下一周期stall和req同时存在
image
下方红圈处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


这篇关于【P7&Loongson】支持部分中断/异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程