# ZhengLiu **Repository Path**: giftwen/ZhengLiu ## Basic Information - **Project Name**: ZhengLiu - **Description**: “行知”系列“争流”处理器 - **Primary Language**: Scala - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-10-11 - **Last Updated**: 2024-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # “争流”处理器 ## 介绍 ``` 看万山红遍, 层林尽染; 漫江碧透, 百舸争流。 ``` “行知”系列“争流”处理器是一款基于LoongArch指令集32位精简版的乱序超标量通用中央处理器核。 ## 总览 流水线分为8个流水级: 三个取指级,译码级,重命名级,发射级,寄存器级和执行级。 ![overview](doc/pic/overview.png) 处理器分为三个部分: 前端,后端和访存子系统。各部分的设计细节请参考`./doc`中的设计文档。 - [frontend](doc/frontend.md) - [backend](doc/backend.md) - [memory](doc/memory.md) 各部分的代码请参考`./src/main/scala`中的源码。 ``` src/main/scala ├── backend 后端 │ ├── Bus 内部总线 │ ├── Component 组件 │ ├── FunctionUnit 功能部件 │ └── Pipeline 流水线 ├── frontend 前端 │ ├── Bus 内部总线 │ ├── Cache 指令缓存 │ ├── Pipeline 流水线 │ └── Predictor 预测器 ├── memory 访存 │ ├── Arbiter 仲裁器 │ ├── Bus 内部总线 │ └── Component 组件 └── util 工具 ``` ## 编译 ### 依赖 安装Java,Scala,SBT。 ```shell sudo apt-get install openjdk-8-jdk sudo apt-get install scala echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install sbt ``` ### 参数 在`./src/main/scala/Config.scala`中可以配置运行环境和处理器规模。 运行环境包括“是否使用Difftest”和“RAM是否使用Vivado IP”。 ```scala object RTConfig{ var use_vivado = false var use_difftest = true } ``` `ISAConfig`是ISA的参数,`CPUInfo`是CPU的参数,两者不可修改。可配置的CPU规模参数请参考`CPUConfig`对象。 ### 生成 执行以下命令,Verilog代码会生成在`./gen/rtl/`中。 ```shell sbt run ``` ## 仿真 本项目使用[chiplab](https://gitee.com/loongson-edu/chiplab)敏捷开发平台。请将生成的Verilog代码拷贝到chiplab/IP/myCPU下, 参考chiplab的[文档](https://chiplab.readthedocs.io/)操作。 本处理器核可仿真运行chiplab平台中的所有随机指令测试,func_lab19。可仿真运行dhrystone性能测试程序,coremark性能测试程序。可仿真启动linux 5.14内核。 | 性能测试程序 | 分数 | | :--: | :--: | | coremark | 4.1155/MHz | | dhrystone | 0.5447/MHz | ## 综合 设置`RTConfig.use_vivado = true`,`RTConfig.use_difftest = false`,并将gen/IP下的.xcix文件一并拷贝到chiplab/IP/myCPU下,使用龙芯杯开发板对应项目进行综合,结果如下。 因资源不足,本项目未进行上板验证。 ![综合后资源使用情况](doc/pic/sys.png)