# ComputerArchitectureLab **Repository Path**: cknnsshxs/ComputerArchitectureLab ## Basic Information - **Project Name**: ComputerArchitectureLab - **Description**: This repository is used to release the Labs of Computer Architecture Course from USTC - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2019-12-30 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Computer Architecture 2019 Lab ===================== **此仓库用于发布USTC体系结构课程2019年夏季学期的实验代码和要求,同时可用于学生的意见反馈。** 实验成绩占课程成绩的40%,实验验收方式主要为课堂当面验收和实验报告的提交。 本学期计划实验时长为10周 * Lab1(4-5周)【15%】: 熟悉RISC-V指令集,完成RV32I指令集流水线CPU的设计报告; * Lab2 (第6周清明假期)(7-9周)【40%】: 配置和使用RISCV编译工具链;完成RV32I流水线CPU的Verilog代码;利用RISCV-test测试文件进行仿真和CPU功能验证 * Lab3(第10周五一假期)(第11-12周)【20%】: cache设计和实现 * Lab4(13-14周)【15%】: 分支预测设计与实现 * Lab5(第15周)【10%】:学习使用提供的Tomasulo软件模拟器和多Cache一致性软件模拟器,并完成实验报告 ![CPU_Modules](https://github.com/Summer-Summer/ComputerArchitectureLab/blob/master/images/CPU.PNG) ## 签到与补交 * 学生总数220人左右,教室容量110,每周开两次实验课,内容完全一样,**可二选一参加** * 验收和报告**补交**在**一周内扣除20%成绩**,介于**一周两周之内补交扣除40%成绩**,**超过两周不予验收**。 * **为了照顾对流水线不熟悉的学生和鼓励实验课出勤,每堂课设置签到。**(每次实验课开始15分钟后停止签到,实验课结束半小时前可以签离,每周两个实验时间段任选其一参加,有签到和签离就算当周满勤)。 * **上周和本周连续两次满勤可以申请本周实验晚交一周不做扣分处理。**(比如Lab2阶段一验收是第6周,如果到了第6周实验课结束了实验还没做完,如果你第5周和第6周都满勤,可以在第6周签离时向助教申请晚交一周同时不扣分。)希望对流水线和verilog不熟悉的同学可以积极参与实验课,届时有问题多问问助教,助教可以一对一讲解或者统一指导。 * **签到记录不以其他方式影响成绩** ## 助教统一讲解 * 每周实验课的开始时间,**助教准点(14:30或18:30)**开始**本周实验指导**和**下周实验内容简单介绍** * 每次讲解5-45分钟 ## 实验发布、验收和报告 * **2019.3.17 Release Lab1** 请提交CPU设计报告 截止日期:2019.3.31 邮箱地址:USTC_CA2019@163.com * **2019.3.17 Release Lab2** 阶段一课堂验收 截止日期:2019.4.13 阶段二课堂验收 截止日期:2019.4.20 阶段三课堂验收 截止日期:2019.4.27 请提交实验2的实验报告 截止日期:2019.5.4 邮箱地址:USTC_CA2019@163.com 提交格式:Lab2-学号-姓名.rar(or .zip) 要求包括一份pdf格式实验报告和用到的源代码集合的文件夹 * **2019.5.4 Release Lab3** 阶段一和阶段二课堂验收 截止日期:2019.5.18 请提交实验3的实验报告 截止日期:2019.5.26 邮箱地址:USTC_CA2019@163.com 提交格式:Lab3-学号-姓名-n.rar(or .zip) 要求包括一份pdf格式实验报告和用到的源代码集合的文件夹,n代表提交版本号,从0开始,以最大版本提交文件为准 * **2019.5.19 Release Lab4** 阶段一和阶段二课堂验收 截止日期:2019.6.1 请提交实验4的实验报告 截止日期:2019.6.8 邮箱地址:USTC_CA2019@163.com 提交格式:Lab4-学号-姓名-n.rar(or .zip) 要求包括一份pdf格式实验报告和用到的源代码集合的文件夹,n代表提交版本号,从0开始,以最大版本提交文件为准 * **2019.5.27 Release Lab5** 请提交实验5的实验报告 截止日期:2019.6.22 邮箱地址:USTC_CA2019@163.com 提交格式:Lab5-学号-姓名-n.pdf 要求包括一份pdf格式实验报告,n代表提交版本号,从0开始,以最大版本提交文件为准 ## 实验课安排 * ~~lab1助教答疑 (教室容量110人,无签到)~~ ~~2019.3.21下午(14:30-17:00 电三楼406)~~ ~~2019.3.23晚(18:30-21:00 电三楼406)~~ * ~~**lab1答案分析+Lab2预先讲解**(讲解大约20分钟)(教室容量110人,**有签到**)~~ ~~2019.3.28下午(14:30-17:00 电三楼406)~~ ~~2019.3.30晚(18:30-21:00 电三楼406)~~ * ~~lab2阶段一课堂验收时间(教室容量110人,**有签到**)~~ ~~2019.4.11下午(14:30-17:00 电三楼406)~~ ~~2019.4.13晚(18:30-21:00 电三楼406)~~ * ~~lab2阶段二课堂验收时间(教室容量110人,**有签到**)~~ ~~2019.4.18下午(14:30-17:00 电三楼406)~~ ~~2019.4.20晚(18:30-21:00 电三楼406)~~ * ~~lab2阶段三课堂验收时间(教室容量110人,**有签到**)~~ ~~2019.4.25下午(14:30-17:00 电三楼406)~~ ~~2019.4.27晚(18:30-21:00 电三楼406)~~ * ~~lab3验收时间1(教室容量110人,**有签到**)~~ ~~2019.5.9下午(14:30-17:00 电三楼406)~~ ~~2019.5.11晚(18:30-21:00 电三楼406)~~ * ~~lab3验收时间2(教室容量110人,**有签到**)~~ ~~2019.5.16下午(14:30-17:00 电三楼406)~~ ~~2019.5.18晚(18:30-21:00 电三楼406)~~ * ~~lab4验收时间1(教室容量110人,**有签到**)~~ ~~2019.5.23下午(14:30-17:00 电三楼406)~~ ~~2019.5.25晚(18:30-21:00 电三楼406)~~ * lab4验收时间2(教室容量110人,**有签到**) 2019.5.30下午(14:30-17:00 电三楼406) 2019.6.1晚(18:30-21:00 电三楼406) * lab4补交时间(教室容量110人,**木有签到,最后一次啦,恭喜大家实验结束了~辛苦啦~完结撒花~**) 2019.6.6下午(14:30-17:00 电三楼406) 2019.6.8晚(18:30-21:00 电三楼406) **注意,端午假期内的实验课时将取消,同时不会补设实验课** ## 文件夹目录 >**1_VerilogSourceCode** Verilog源代码 > >>**1_CPUCore_src CPU** CPU core的verilog代码 >>**2_Simulation** 仿真用testBench代码 > >**2_BRAMInputFileGenerator** 脚本文件,利用汇编文件生成对应的16进制指令流文件 > >**3_CacheLab** Lab3所需的verilog代码和单元测试文件,详情见文件夹readme > >**4_ProjectDesignFiles** 包含CPU的流水线模块设计图 >**5_DetailDocuments** 包含每次实验的具体实验要求 > >**6_branch_prediction** 包含Lab4所需要的代码 ## Quickstart * 新实验发布时会在群里面统一公告。 * 动手做新实验时,请先进入**5_DetailDocuments**目录下,**查找本次实验对应的文档,并根据文档完成实验和试验报告。** ## Change Log * 2019.3.31 因为清明假期**Lab2延后一周** * 完善2_BRAMInputFileGenerator脚本文件,调用Utils文件夹中编译好的**Ubuntu64bit**的riscv工具链,**makefile将不需要用户自己安装riscv-tools**;同时删除多余的.S文件 * 1_VerilogSourceCode/2_Simulation/中增加利用2_BRAMInputFileGenerator处理好的**testAll测试二进制文件(.inst 和 .data)以及对应的反汇编代码(.txt)** * 2019.5.1 **五一假期**Lab3延后一周 * **微调后续实验内容安排**。因为FPGA开发板的缺少,同时进一步提高和体系结构课程内容的相关度,原定烧写实验取消 * 2019.5.4 **release Lab3代码和Lab3实验要求**,代码见新增**3_CacheLab**文件夹,实验要求见更新后的**5_DetailedDoucuents** * 2019.5.19 **release Lab4代码和Lab4实验要求**,代码见新增**6_branch_prediction**文件夹,实验要求见更新后的**5_DetailedDoucuents** * 2019.5.27 **release Lab5实验要求**(**5_DetailedDoucuents/Lab5-多Cache一致性与Tomasulo模拟器使用.docx**),需要用到的软件模拟器请自行获取 ## 致谢 现在是2019年夏季学期学期初,体系结构课程实验刚刚开始了它的升级换代。 嵌入式系统实验室研一的同学们(部分也是体系结构课程的助教)正在努力地设计实验和提供资料。不过由于时间和能力有限,试验过程中可能存在一些问题,希望大家多多体谅,也欢迎大家在群里或者issue中提出宝贵的意见。 感谢ESLAB的同学们为本实验付出的努力,也感谢每一位参与实验的本科生的理解与支持。