Skip to content

markaulunGH/yamp-32

 
 

Repository files navigation

YAMP-32 (Yet Another MIPS Processor)

项目背景

NSCSCC2020-个人赛

项目思路

  • (1)建模,利用C++实现周期精确级模拟器(cpp-cpu-model)
  • (2)通过暴力搜索优化参数[1]
  • (3)进行RTL设计
  • (4)若RTL无法满足模型假设,回到(1)修正模型
  • (5)若RTL满足设计要求,进行FPGA验证。

性能

在 120MHz时钟主频下,运行三组高负载基准程序[2],结果如下

测试名称 用时[3]
UTEST_STREAM 0.055s
UTEST_MATRIX 0.114s
UTEST_CRYPTONIGHT 0.245s

关键词

五级流水、猜测执行、分支预测、Cache、Store Buffer

Getting started

源码树:thinpad_top.srcs/sources_1/new 内各文件描述如下:

源文件 描述 详细
yamp32_parameters.vh parameters CPU全局参数定义
yamp32_biu.v BIU(Bus Interface Unit)总线接口单元 实现数据/指令接口的仲裁,实现SRAM读写时序
yamp32_core.v CPU核心 CPU顶层设计
yamp32_bpu.v BPU(Branching Prediction Unit)分支预测单元 目前只实现了静态分支预测
yamp32_icache.v I-Cache 指令高速缓存(四路组相关、LRU置换、全流水化)
yamp32_ifu.v IFU(Insn Fetching Unit) 取指单元
yamp32_idu.v IDU(Insn Decoding Unit) 译码单元
yamp32_exu.v EXU(Execution Unit) 执行单元,包括ALU等子部件
yamp32_lsu.v LSU(Load & Store Unit) 访存单元,包括Store Buffer
yamp32_wb_mux.v WB(Writing Back) 回写单元。实际上为寄存器写入端口提供仲裁
yamp32_regfile.v Regfile 寄存器堆
yamp32_ctrl.v Controller 流水线控制器。决定各级流水线暂停状态
yamp32_segmap.v Segment mapping 完成段映射
bypass_net.v 旁路网络 实现流水线操作数旁路
源文件 描述 详细
uart.v UART 带FIFO的通用异步收发器
fifo_fwft_sclk.v FWFT(First-word-Fall-Through) 实现FWFT模式的FIFO(无需读指令,而自动将操作数放到输出端口)
xpm_sdpram_bypass.v xpm简单双口RAM Xilinx参数化内存封装,增加一层旁路逻辑

指令集

实现MIPS isa32指令集的一个子集:

  1. ADDIU 001001ssssstttttiiiiiiiiiiiiiiii
  2. ADDU 000000ssssstttttddddd00000100001
  3. AND 000000ssssstttttddddd00000100100
  4. ANDI 001100ssssstttttiiiiiiiiiiiiiiii
  5. BEQ 000100ssssstttttoooooooooooooooo
  6. BGTZ 000111sssss00000oooooooooooooooo
  7. BNE 000101ssssstttttoooooooooooooooo
  8. J 000010iiiiiiiiiiiiiiiiiiiiiiiiii
  9. JAL 000011iiiiiiiiiiiiiiiiiiiiiiiiii
  10. JR 000000sssss0000000000hhhhh001000
  11. LB 100000bbbbbtttttoooooooooooooooo
  12. LUI 00111100000tttttiiiiiiiiiiiiiiii
  13. LW 100011bbbbbtttttoooooooooooooooo
  14. MUL 011100ssssstttttddddd00000000010
  15. OR 000000ssssstttttddddd00000100101
  16. ORI 001101ssssstttttiiiiiiiiiiiiiiii
  17. SB 101000bbbbbtttttoooooooooooooooo
  18. SLL 00000000000tttttdddddaaaaa000000
  19. SRL 00000000000tttttdddddaaaaa000010
  20. SW 101011bbbbbtttttoooooooooooooooo
  21. XOR 000000ssssstttttddddd00000100110
  22. XORI 001110ssssstttttiiiiiiiiiiiiiiii

延迟槽,无CP0、HI、LO寄存器,无异常、中断,无TLB

联系作者

如有疑问,请开issues,或发邮件:diyer175@hotmail.com

Notes

参考资料

  • L. Hennessy, David A. Patterson. 计算机体系结构:量化方法(第5版). 机械工业出版社
  • D. Sweetman. See MIPS Run Linux (2nd Edition). 屈建勤译

About

NSCSCC 2020 - Yet Another MIPS Processor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • VHDL 75.3%
  • C 21.9%
  • Verilog 1.6%
  • V 0.9%
  • SystemVerilog 0.2%
  • C++ 0.1%