/ComputerArchitectureLab

This repository is used to release the Labs of Computer Architecture Course from USTC

Primary LanguageVerilogMIT LicenseMIT

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一致性软件模拟器,并完成实验报告

签到与补交

  • 学生总数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的同学们为本实验付出的努力,也感谢每一位参与实验的本科生的理解与支持。