初章——
龙芯杯主要做些什么:
龙芯杯的主要内容在于设计cpu并按照功能和性能进行评分
龙芯杯的赛道类型:
目前(2024年第八届)龙芯杯主要分为个人赛(mips)和团队赛(la)
时间安排及参赛流程:
以团队赛为例:
3-4月报名
期间官方会发布团队发布包及培训视频等资源
7月末进行初赛(测试得分/展示)
八月初进行决赛(测试得分/展示/现场答辩/现场答题【添加指令】)
推荐工具:
第八届龙芯杯团队赛规定使用vivado2023.2进行综合
一般使用verilog语言进行硬件描述
评分标准:
在初赛的评分标准中
功能性测试和性能测试按比例算分后按总得分取前十几名团队
在决赛的评分测试中
包含更多性能测试程序以及对于是否运行bootloader、内核等评分
解析第八届龙芯杯团体赛技术方案:
第八届“龙芯杯”全国大学生计算机系统能力培养大赛
团体赛技术方案
一、 评价方式的基本说明
第 1 条 除本技术方案特别要求、规定和禁止事项外,各参赛队自行决定
CPU 微架构、演示方案等。
第 2 条 大赛鼓励各参赛队综合运用各种知识(如流水线、超标量、预测、
Cache 等)并充分利用实验板硬件资源以尽可能提高 CPU 运行性
能。
第 3 条 大赛鼓励各参赛队综合运用多种知识去构思并实现一个综合性
的软硬件系统,以展示构造系统的想象力与能力。
第 4 条 为展示参赛队伍的设计水平、增加竞赛的对抗性以及体现“自主
可控”的设计理念,进入决赛的参赛队还需要再实现若干由大赛
组委会定义的指令。
二、 初赛评分标准
第 5 条 比赛内容。开发支持 LoongArch 基准指令集的微系统。
1. 初赛阶段的 LoongArch 微系统使用 FPGA 片内存储器(指使用ip核即可,不与ddr或nand交互)即可。
2. 指令存储器应不小于 8KB,数据存储器应不小于 8KB。
3. FPGA 内部集成 1 个系统计数器(用于性能测试)。
4. FPGA 支持 7 段数码管显示(用于性能测试)。
5. CPU 核能通过接口与各 I/O 设备互联通信。
第 6 条 功能测试。以正确通过的指令功能测试项数为评价依据。功能测 试分值越大越好。计算方法如下:
功能测试得分 =
正确通过的指令功能测试项分值之和/所有 LoongArch 基准指令功能测试项分值之和 × 100%
第 7 条 性能测试。以 FPGA 运行基准测试程序所需时间为评价依据。性
能测试分值越大越好。基本计算方法如下:
1. 各参赛队中程序执行时间最小者的性能测试分值被定义为 100 分,
最大者的性能测试分值被定义为 0 分;其余各队成绩被映射至
[0,100]区间。
2. 程序执行时间的计算方法如下:
程序执行时间 = 系统计数器周期数 × 系统计数器所用时钟周期时间
3. 系统计数器周期数。该值是指利用系统计数器记录基准测试程序运
行的时钟周期数。计算方法如下:
系统计数器周期数 = 程序执行后系统计数器值 − 程序执行前系统计数器值
第 8 条 各参赛队总成绩计算方法如下:
总成绩 = 功能测试得分 + 性能测试得分
三、 决赛评分标准
第 9 条 决赛阶段的 LoongArch 微系统内部设计可以与初赛阶段的设计
不同,但必须满足下列设计约束:
1. CPU 应支持核内计数器(用于性能测试)。
2. FPGA 支持 7 段数码管显示(用于性能测试)。
第 10 条
比赛内容如下:
1. 性能测试。运行基准测试程序测量 CPU 的性能。
2. 系统展示。运行操作系统(可以是大赛提供的操作系统,也可以自
行选择操作系统)或应用程序的实际效果。3. 实现自定义指令。在进行系 统展示的 LoongArch 微系统基础上,在
规定时间内再实现由大赛组委会定义的指令。大赛仅测试自定义功
能是否正确实现。
4. 答辩。汇报设计思路并回答专家问题。
第 11 条
决赛总成绩 100 分,各分项成绩权重如下:
1. 基准测试程序运行成绩:40%
2. 系统测试运行成绩:20%
3. 自定义指令实现的成绩:10%
4. 系统展示及答辩成绩:30%
第 12 条
基准测试程序运行成绩将以 FPGA 上运行基准测试程序时处
理器主频和程序执行周期数为评价依据。基本计算方法如下:
1. 基准测试程序运行成绩为处理器主频得分和程序执行周期数得分两
部分得分之和,两部分各自占比 50%。
2. 计算处理器主频得分时,各参赛队中处理器主频最高者的得分被定
义为 20 分,处理器主频最低者的得分被定义为 0 分;其余各队得分
被映射至[0,20]区间。
3. 计算程序执行周期数得分时,各参赛队中程序执行周期数最少者的
得分被定义为 20 分,程序执行周期数最多者的得分被定义为 0 分;
其余各队得分被映射至[0,20]区间。
4. 程序执行周期数。计算方法如下:
程序执行周期数 = 程序执行后核内计数器数值 − 程序执行前核内计数器数值
第 13 条
系统测试成绩将以 FPGA 上启动系统运行结果作为评价依据:
1. 按照指定方式成功启动典型 bootloader(如 U-Boot、PMON)并完
成指定功能操作,系统测试运行成绩得分为 5 分;
2. 按照指定方式成功启动典型教学操作系统(如 ucore)并完成指定功能操作,系统测试运行成绩得分为 10 分;
3. 按照指定方式成功启动 Linux 操作系统,系统测试运行成绩得分为
15 分;
4. 按照指定方式成功启动 Linux 操作系统并完成指定功能操作,系统
测试运行成绩得分为 20 分。;
四、 参赛作品提交
第 14 条
各参赛队初赛阶段需要在大赛网站提交完整的设计内容:
1. LoongArch 微系统硬件设计的完整工程文件(必须包含全部源代码、
FPGA 管脚分配文件、FPGA 二进制下载文件(提交后会被验证,请勿造假))
2. LoongArch 微系统设计报告。
第 15 条
如果决赛阶段的硬件设计与初赛阶段的硬件设计有任何不
同,均需要再次提交完整的设计内容。
第 16 条
如果需要使用第三方 IP 或者借鉴他人的部分源码,必须在
设计报告中予以明确说明。
第 17 条
参赛队必须严守学术诚信。一经发现代码抄袭或技术抄袭等
学术不端行为,取消参赛队的参赛资格。
五、 测试程序
第 18 条
大赛提供的基准测试程序包括功能测试程序和性能测试程
序,分别用于测试 LoongArch 微系统能否执行正确的基准指令集
及其性能。
第 19 条
自定义指令测试程序为汇编程序,仅用于测试自定义指令实
现的正确性。自定义指令测试程序与性能测试无关。
六、 软硬件系统规范
第 20 条
LoongArch 基准指令集是龙架构 32 位精简版指令集的子集,只包括基础 整数指令、例外与中断等特权指令功能,不含基础浮
点指令及 TLB MMU 相关特权指令功能。
第 21 条
自定义指令由大赛组委会在决赛阶段发布。
1. 自定义指令为基础整数指令。
2. 自定义指令包括:计算、分支与访存三大类。
3. 自定义指令符合 LoongArch 指令架构基本设计理念。
第 22 条
大赛提供一个小型操作系统供各参赛队在决赛阶段选用。各
参赛队也可自行选择操作系统,以充分展示 LoongArch 微系统的
全系统功能和应用水平。
第 23 条
为确保大赛提供的测试程序可以正确运行,LoongArch 微系
统必须在下列方面符合第27条中的“龙芯架构32位精简版参考
手册”:
1. 存储器地址空间。
2. I/O 设备地址空间。
第 24 条
大赛指定的 FPGA 实验设备主要参数如下:
1. FPGA 型号:XILINX 公司 Artix-7 FPGA。
2. DDR3 SDRAM:16 位,128MB。
3. SPI FLASH:4MB。
4. RS-232 UART 接口:1 个。
5. 7 段数码管:8 个。
6. 拨动开关:8 位。
第 25 条
EDA 及软件开发环境如下:
1. 大赛指定龙芯体系结构教学实验平台作为 LoongArch 运行环境。
2. 大赛指定龙芯 LoongArch32 精简版交叉编译工具链为编译工具。
3. 大赛指定 Vivado2023.2 为 FPGA 综合工具。
4. 除编译工具和 FPGA 综合工具为大赛指定外,各参赛队可使用其他各
种开发工具。