微处理器实现没有想明白的问题
在做选择的时候,先列出两种实现方法的不同点,各有什么优缺点。
数据通路
mux放的位置
- 从registerfile的read data 跟imm 扩展之后的mux放在 ID stage 还是EX stage?
- 从data mem的数据和alu的result mux 放在mem stage 还是wb stage?
5级流水线branch控制模块放的位置
放在ID 还是EXE阶段
控制通路
控制信号名字的选择
mips相关的会根据用途,但在cs61c的课程中很多都用了sel。
sel用独热码还是二进制传递控制信号
- 独热码在stage之间需要更多的寄存器,因为少了使用时重新解码,速度会更快一些。
- 二进制在stage之间需要寄存器少一些,但在使用时需要重新解码,速度会慢一些。
控制通路跟数据通路是否放在不同的模块实现
mips教程中,两个是放在一起的。
cs61c 的riscv课件中,数据通路跟控制通路是分开的。
华科有两个同学的硕士毕业论文,一个做数据通路,一个做控制通路。
数据通路从控制通路分离可能也是一件好事。这样的数据通路会更加清晰。
每部分需要考虑的内容更加集中。
微处理器实现方向的选择
网上开源的mips/arm等cpu的实现
微处理器的发展历史
cortex M处理文档相当的详细
risc-v跟cortex M的区别
除了cpu核,cache,总线,memory map,DMA,等需要考虑的内容还是基本相同的。