MIPS流水实现(Verilog,无中断异常的处理)
时间:04-09 15:53 阅读:1012次
*温馨提示:点击图片可以放大观看高清大图
简介:经过一周的努力,终于将流水部分的Verilog代码给写出,并给出了自己的MIPS汇编测试代码,过了,可能里面还有一些小细节没处理好,但这不影响我的总体的框架,总的框架已将架构起来没什么问题,后面的工作就是,加入异常中断的处理,最好能下板子,这样才是有始有终。
虽然前面做过多周期的异常中断的处理,但是我知道流水部分的异常中断处理和多周期的是不一样的,其实,多周期和单周期对指令的并行是为零的,它们都是一条一条的串行执行的,做中断只是为了,了解指令的切分,和MIPS的中断异常处理机制。关键是对CPU有深入的了解。正如“纸上得来终觉浅,觉知此事要躬行!”这句话可以说是我这是科创项目的核心感想。以前只是对计算机的底层有一种不懂,神秘的感觉。随着项目的不断往前推,对底层的认识也加深了,不像以前那样浮于表面了。结合这学期的OS课程,受益匪浅,最好有时间能摸透Linux OS 的代码,给我的CPU上OS,这样就完美了。
这次的流水实现比较紧,主要是指导老师追的紧(不过还得感谢冯老师的严格要求,我才能如此,当然我的努力也是很重要的。关于这一点我得吃几句:老师的严格只是外因,主要还是靠自己,努力的孩子,是不需要别人的管束,我应该是输入半自觉的学生,。还好有冯老师的督促。),与多周期相比,我对多周期的深入了解是在做中断异常处理的时候,那是,几乎一个月都在看书,《see MIPS run in Linux》的3-6章节快被我方便了,那是的感觉就是,它(中断异常)明明就在眼前,可就是捉不住,最后在曾学长的指点下,我是醍醐灌顶,一下只就顿悟了。接下来时顺畅的编程,往往后期的测试也是关键,也是能力提升和对你系统的更深更全面的掌握,所以有了问题,一定自己弄(在条件允许),反正多周期我是了解的挺多了,流水由于上的快,有些还没消化,细节部分。
下面是,部分仿真结果的波形图和DM,RF中的值:
经过三周的努力终于将多周期的异常和中断(Exception and Interruption)个解决了,经过此次的实现,对MIPS的中断有了即中断的整个流程有了更深的了解。
以前只是会背书上的概念,知其然而不知其所以然,现在深入底层实现以下,才知其所以然。就比如什么时候该关中断,什么时候该开中断都是有讲究的,其中还涉及到操作系统课上老师讲的原子性的问题(我明白了为什么可以简单粗暴的用关中断解决了)。
知识,理论你只有实践了,你才是真正懂得了这个知识,这样才可应用的更得心应手。
纸上得来终觉浅,绝知此事要躬行。正至理名言,这句话,特别是我在做这个项目时,深有体会。
不过目前的中断。