选课类别:计划 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业核心 | 学分:4.0 |
《计算机组成原理(H)》是计算机科学与技术专业本科教学中的一门重要专业基础课,是在《计算机组成原理》课程基础上面向计算机学院英才班开设的层次化课程。计算机组成原理在计算机科学与技术专业的教学计划中占有重要地位和作用,是学习操作系统、计算机系统结构、编译技术等计算机核心课程的重要基础。学习本课程旨在使学生掌握计算机硬件各子系统的组成原理及实现技术,对全面理解现代计算机软硬件系统的运行机理十分关键,对培养学生设计开发计算机系统的能力有重要作用。
评分其实不太重要,因为你没得选
关于作业:刚开学有一篇报告,隔几周会有一些课后题,总体量不多
那么作业多在哪里呢?在配套的COD实验,总共六个硬件实验,后三个分别是单周期CPU,流水线,综合实验(今年变成固定要求不是自由发挥了,也好)。实验最后一次大概花了我整整三四天(:50+h)的时间。而我这个学期每周最自闭的时候也就是周三网上走出机房的时候,有一部分原因大概是因为Mac,配环境花了很久(到第五次实验的时候我才找到了能在我一台笔记本上完成编程、烧写、调试所有流程的方法),在这之前我只能靠Vlab或者是机房的电脑存活(机房的电脑也疏于维护,甚至有的时候你找不到Vivado在哪里)。你可能无法想象这是一件多么痛苦的事情:在我找到解决方法之前,后面一点的实验依靠Vlab每次生成比特流都需要花20min,也就是说每次上板子调试都需要20min。
如果你用的是Mac
Vivado部分:用PD或者UTM+Debian,在里面安装学校提供的Vivado版本,可以大致参见或者查找其他文章:https://gist.github.com/sohnryang/ca5d2512f7c6e0bab87843dbf1a3708f
烧写、调试部分:用PD+串口调试工具,最新的PD是可以支持串口的,所有功能正常,不过你可能需要一个micro-usb -> type-C的转换头。
给学弟学妹们减轻一些负担(虽然我不知道实验会不会改动)
课程资源:https://github.com/Melmaphother/ustc-course-resources/tree/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86(H)
实验 repo:https://github.com/Melmaphother/ustc-codh-2023
wwcc老师是计科的老学长(05级),所以在上课的时候有不少挺乐的睿评:
当时我们还得写x86汇编呢,你们现在还是太幸福了(大意如此)—— wwcc
整体上课的体验很好,今年(这儿先指前几周吧)的小视频也没缺席!
今天中午往教室走的时候碰到老师了,唠嗑的时候才想起来老师平常在苏州,每天上午坐车到合肥,中午在西区吃个饭之后下午就要上课,他真的好敬业我哭死5555555
“嗯,车票钱还是报销的”——wwcc
幸好如此!Amen!
老师讲课以PPT为主,并配有板书解说。老师讲课还可以,看得出来是很有水平的,虽然有时候比较平淡,但讲到激情的地方也会让人不觉一震。
课间有时会播放一些相关小视频,有的挺有趣的。
讲课内容为COD黑皮书+唐书,黑皮书中不讲算术部分,额外补充了唐书上的中断异常、总线、IO以及指令调度和智能计算系统部分。
老师作业布置得不算多,每章讲完才布置一次作业。个人甚至觉得布置得算比较少的。
考试题目见后文回忆版,相比平行班来说,没有背诵部分,还是挺不错的。有一些送分题,但也有不少坑。
总体来说,这门课确实可以让人去了解一个计算机是怎样一点一点搭起来的,这样那样的部件是因为什么而添加进计算机里的。
印象比较深刻的是上课时老师常会画一个示意图,一个大框代表CPU,然后边解说边往里加小框代表部件。感觉这个过程还是非常有趣的。
CODH还是不错的,值得推荐。
因为这门课的理论和实验部分是不同老师负责的,就分开来给评价了。
实验部分和模数实验一样,依然是张俊霞老师负责。
一共6个lab,都基于RISCV,全部是单人独立完成。分别是alu, reg file, 汇编程序, 单周期CPU, 流水线CPU, cache + IOU.
不过因为助教都是研究生,所以不像平行班一样准备了完备的实验手册,而是只有张老师的PPT作为实验文档,相对来说可能平行班在实验部分体验会更好一点。
考完了,来点题目回忆:
1.(20分)阿姆达尔定律计算程序加速比
2.(10分)给出器件延时,算单周期、多周期、流水线运行时间(PPT原题)
3.(10分)流水线数据通路的数据依赖和运算溢出异常处理(PPT原题改)
4.(10分)大小端内存读写(作业原题改)
5.(10分)连线 RAM 和 ROM 实现存储拓展,数电题(PPT原题)
6.(18分)流水线下,两指令序列在无forward、只有ALU的forward、完全forward下的执行方式
7.(15分)给出主存和cache大小,给出块大小,设计四路组相连cache,写出主存地址分段,给出程序计算命中率,求相比无cache时的加速比,求效率
8.(7分)给定数据与本原多项式,分别考了海明码和 CRC
资料分享,包括一些RISCV的参考和教材电子版
老师人比较和蔼,看面相就觉得很平易近人。上课中规中矩,没有太强的感染力(虽然但是我还是基本都到课了。ppt还是比较详细的,但是也有一些笔误。我个人不是很理解讲单多周期、流水线的时候为什么要把RISC-V和MIPS混在一起(上课没好好听,复习的时候看ppt觉得有点混乱)。平时作业算是挺少的了,还有课本答案可以参考(答案有些是错的hhh)。总体来说理论课部分还是比较轻松的(省流:可以速通)
考试我自己觉得题量比较大,最后勉勉强强把会的都糊上了。试卷回忆见一楼thy大佬。建议复习以ppt为主,考前一定要完整过一遍ppt。我因为codh复习的比较早,在考前只看了我自己整理的省流版ppt就没有完整地过一遍ppt,导致我考场上现想ppt的原题(🙃🙃。复习的时候可以适度参考王道考研(流水线部分好像比较简略,cache计算啥的还是比较详细的)
实验跟普通班没有太大差别,但是没有普通班助教写的文档,只有zjx破烂的ppt(当然作为科大计科学生,实验这方面的体验懂得都懂了,不要有什么期待)。国内其他高校的实验课程网站挺多也挺好的,做实验的时候可以参照。经历了大二上的数电提高班的话,就会感觉计组H的实验没有很难,所以感觉计组的实验也就还好。(当然助教可能有点小摆hhh)
给分的话,我自己是相当满意了。wc老师有奶爸的潜质!
下面是一些资源:
https://github.com/Wloner0809/ustc-curriculum-resource/tree/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86H
上课完全按照PPT,对应内容为唐书/教材,但唐书中内容仅做介绍,考试作业均不涉及。
作业包括一次调研报告+六次作业。前期作业很少,但后期一周一作业,一次作业为教材中数题,完成需要时间不定。
前几次实验还好,但最后一次实验(单人完成Cache+输入输出单元)相对困难,任务较重。前几次实验大多可以在一晚上完成,后几次可能需要一整天(以上)。
期末不公布成绩,因此无法在给分上提供很大参考。本人作业、实验均按时完成,考试自认为不算好(吐槽一下,试卷有几个点比较坑),总评95。