Single Cycle CPU 实验报告:中断与指令扩展

需积分: 0 0 下载量 133 浏览量 更新于2024-06-30 收藏 31.44MB PDF 举报
"实验4补充:Single Cycle CPU with Interrupts1" 实验报告主要涵盖了Single Cycle CPU的设计与实现,特别是在原有基础上增加了中断处理功能。这个实验旨在帮助学生深入理解CPU的内部结构,提高CPU效率,并教授CPU中断的工作原理。实验中使用的环境包括Intel Core i7计算机、Sword4.0开发板以及VIVADO 2020开发工具。 实验原理与内容主要包括两个主要部分:中断处理和指令扩展。 1. **中断处理**: - 中断分为两类:外中断(通常由外部设备如I/O引发)和内中断(通常由处理器内部错误或特定指令触发,如异常和系统调用)。 - 中断处理程序的主要任务是保存CPU状态,处理中断事件,然后恢复正常的程序执行。 - 在实验中,当发生外部中断(int)、非法指令(illegal)触发的异常或ecall系统调用时,会跳转到由mtvec寄存器定义的PC值对应的地址执行服务程序。中断处理流程如下: - mepc寄存器存储当前PC值+4,以便在处理完中断后能从正确位置恢复执行。 - 执行异常服务程序。 - 使用mret指令返回,继续从mepc寄存器保存的PC处执行。 - 实验中,所有中断的优先级相同,一旦进入中断处理,通过设置interr_en<=0关闭中断,mret返回后设置interr_en<=1重新开启中断。 2. **指令扩展**: - 实验中新增了lui、sll/slli、sltu和bne等指令的解码支持。 - lui指令允许将指令的高20位加载到寄存器中。这需要修改ImmSel信号,同时更新ImmGen模块以生成新的立即数。 - MemtoReg信号的修改使得数据路径能够处理alu结果以外的其他数据源,例如来自内存的读取数据,这在执行lui指令时特别有用。 实验通过这样的设计和实现,让学生能够实际操作和理解CPU如何响应中断并进行指令扩展,从而提升对计算机系统底层工作原理的理解。通过这种方式,学生不仅学习了硬件层面的知识,也加深了对软件与硬件交互机制的认识。