P7-design-document
P7-Design-Document 0.顶层设计概述 P7要求为实现MIPS微系统,需要为P6实现的流水线CPU添加异常中断功能,并封装为CPU模块、实现系统桥Bridge、计时器Timer1,Timer2等模块,最终形成MIPS微系统,如下图所示。 绿色虚线表示已经实现 紫色虚线表示新增部分 红色虚线为改变后的DM接口 P7需要实现的任务如下列表 任务 解释 计时器 课程组提供代码 系统桥 为CPU提供统一的访问外设的接口,自行实现 协处理器CP0 设置CPU的异常处理功能,反馈CPU的异常信息,自行实现 内部检测异常与流水 CPU检测内部指令执行错误 外部中断响应 CPU需要具有响应外部中断信号的能力 异常处理指令 异常处理程序中,会有一些特殊的指令需要实现 单周期CPU的封装 让CPU从外部看上去是单周期CPU 异常处理程序 利用MARS编写简单的异常处理程序进行测试 施工步骤: 更改流水线各级使之可以产生异常 添加CP0处理异常 添加Bridge与两个外设 异常与中断 异常:内部异常 如F级取指异常、D级计算溢出等 中断:来自外部设备,Timer0,Timer1,Interrupt 来自外部设备的中断比内部异常优先级更高 一.功能部件设计 0.新增指令的实现思路 P7中增加四条指令 mtc0 mfc0 eret syscall mtc0 :写入CP0中寄存器(12/14) 对于mtc0和mfc0指令 : 读取的CP0寄存器地址均为rd域,由于本实现中采用了集中式译码,故增加数据通路,将原指令的rd域流水下去,作为CP0寄存器地址, CP0_addr 指令格式 : 010000 || 00100 || rt || rd || 00000000000 mtc0 rt,rd MCU : CP0_WE_D T_rs_use = T_rt_use = 3(这里rt的真实使用时间是3,但是并不会对暂停/转发造成影响,Tuse >= Tnew成立,可以通过转发解决) T_new = 0 写入时应当注意 :Cause寄存器(13)不允许写入,EPC允许写入,SR寄存器部分字段允许写入,其他不允许写入的字段要保持为0 ...