| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
| 课程层次:专业核心 | 学分:4.0 |
王超老师的教学风格偏向平实,课堂上主要是按照PPT讲解,内容详细而清楚,尤其是CPU设计部分。PPT 多源于唐朔飞老师的书和 COD 第四版,考前复习主要以 PPT 为主,很多例题和作业题会在考试中出现。老师乐于听取学生意见,平易近人,但有些同学反馈上课声音较小,语调平淡,容易催眠。
《计算机组成原理》主要讲解计算机硬件的组成成分和工作原理,包括指令系统、CPU设计等。课程内容复杂,概念多,还涉及许多需要理解和记忆的知识点。很多学生评价这门课像“文科期末考试”,需要背诵大量知识。实验内容硬核,包括设计与实现CPU、流水线等,需要有一定的 Verilog 语言基础。
作业主要是 COD 书的课后题,量适中但占总评的比重较大。题目难度适中,但需要细心完成,并建议与大佬或者参考答案对照。部分同学反映作业进度合理,总体作业布置比隔壁班 llxx 易于接受。作业多与课堂内容紧密关联,对理解课程内容有帮助。
实验任务繁重,难度较高,共有六个实验,涵盖 ALU、寄存器堆、流水线CPU设计等内容。实验需要较强的 Verilog 能力和调试技巧,尤其是最后两个实验工作量巨大。实验成绩比重较大,建议好好完成,有助于理解课程内容和复习考试。其中有同学反馈最后一次实验总分可以超出 100 分,但整个实验部分总评分数最高为 30 分。部分实验内容较为坑爹,但也有助于提升动手能力和对硬件设计的理解。
期末考试以闭卷形式进行,卷面主要是简答题,占比70%,还有一些计算题和综合题。题目多来源于 PPT 和作业,但也有较多需要背诵的内容。由于简答题占比较多,重记忆的性质较强。有同学建议考前通过王道考研视频或者课堂复习提纲进行复习,有助于应对考试。考试难度偏中等,很多同学提前完成答卷,总体上考试并不困难。
总体分数给得较好,很多情况下不需要调分就能达到优秀率上限。实验、作业和课堂考试分数占比较大,建议各部分都认真对待,以获得较好的总评成绩。有同学总评达 96 分,显示只要认真完成各项任务,取得好成绩并不难。
《计算机组成原理》是一门重要的核心课,对计算机专业的同学有很大帮助。王超老师的课程比较详细而清晰,虽然有些课堂上的部分催眠,但 PPT 及课后作业都能很好地辅助学习。实验任务繁重难度高,但对于理解硬件设计及课程内容很有帮助。期末考试多为简答题,建议考前好好复习 PPT 和作业,这样能应对自如。总的来说,这门课对提升底层计算机知识及动手能力都很有帮助,选课值得。
课堂教学:
王超老师的 ppt 非常详细,似乎比隔壁班的 llxx 好(隔壁班的梗:张开想象的翅膀??)
今年题目是 llxx 出的,不过参考材料是王超老师提供的 summary。
课件可以在 http://home.ustc.edu.cn/~louwenqi/ 下载(截至 2019-06-25 有效)
平常课上留的作业都比较简单(似乎有不少同学是下节课要交的时候才开始做)
实验:
其实感觉还好,不过如果不熟 Verilog 可能会比较费劲(包括辨别什么是 Synthesizable 的代码,仿真器和综合器的不同行为等)
最后两个实验我投入了 Chisel 的怀抱(Chisel 真香),有兴趣围观的同学可以戳我,我就更新的更加详细一些。
HInt. 用 mipsel-linux-gnu-gcc 可以极大缓解对着汇编狂写的头秃之情,安利一下
(但是到结课也没布置阅读报告)
课后实验是用 MIPS / x86 Assembly 写 bubble sort 并且测试性能。我写的是 x86 汇编,写一个 bubble_sort 函数之后,和 C 的代码链接在一起,在 C 中处理输入输出。
p.s. 老师讲话声音有点小,如果想认真听课要往前坐一点。
p.s.2 还没出分,出分再更新
下面的文字是考完期末当天写的,现在从某个地方复制过来(
COD(使命召唤划掉,计算机组成原理)考完了,感觉还好,没有我预想的那么糟糕。当然,考试时候也发挥了一下想象的翅膀。不过实话讲,这门课给我的感觉像(高中)地理:要记很多很多东西,大家都觉得这是文科,但是实际上却属于理工科一类的。槽点其实还挺多的:CPU 讲完流水线之后唐书的比例就开始增大了,但是唐书的话,我只能给「没有太多错误,比谭某的 C 语言教材好一些」的评价,书中有的地方已经很过时了。
其实这都还好,一个关键的槽点是老师的 PPT 里有些 terminology 喜欢自造,把词往 Google 上一搜只有个位数结果的那种(比如说,「并行竞争分布式仲裁」)。不过 wc 至少比 llxx 好一些,至少一堆没头没脑的思考题不是他出的,虽然他上课也有一些槽点啦,比如说把苹果电脑和 x86 对立起来(然而十几年前 Mac 就转到 Intel 架构了),还有「(网络)高端口寄存器很危险」(???)。
总之呢,COD 这门课就是……硬核硬件实验 + 文科期末考试,总体给我的观感其实不是很好。要改进的话,可以考虑在开卷的前提下加大一点题目难度之类的,像文科一样背概念定义真的没意思。
对于一名 CS 专业的本科生来说,这门课还是十分重要的。在一些涉及硬件的交叉领域(如可穿戴设备),拥有一些计算机的底层思维,往往能比其他人更快的找到问题的关键(暑研感想)
王超老师讲课实在谈不上吸引人,主要问题在于语调很平,没有什么激情,也不太有趣,但也不是让人难以接受的类型。讲到重点的时候会特意提醒大家要认真听,也会乐于听取大家的意见,平易近人。在一些重点章节如果能耐着性子听收获还是蛮大的,概念为主的章节那就随意吧...
今年个人认为相比于隔壁 llxx 班主要的优点是作业量较小且布置进度更为合理,助教更好(体现在实验要求更合理更自由)。有一次 MIPS 汇编冒泡排序的附加实验我们是选做加分,隔壁班是必做,体现在总评中大概有 1-2 分的差别。其他方面给分差别不大,基本按比例。
今年的实验zjx老师突然不要求写流水线,改为利用外设和CPU完成一个应用。但是个人觉得如果写流水线能拿到一个满意的分数那还是建议选择流水线,用代码实现出这样一整套解决所有 Hazard 的流水线 CPU 确实收获很大,也使最后复习时的压力大大降低。
最后考试要综合两个班透露的信息来抓重点,复习主要以 PPT 为主,PPT 上的例题和作业题一定要重点关注。复习起来陌生概念太多可能比较痛苦,但考试不会考很偏很难的点。最后卷面 90,实验应该是满分或接近满分,总评 96。
本门课程是wc老师教授理论课+zjx老师教实验课,实验~~一写一周~~每周一节,每堂课都在下午。
对于希望在本科上获得良好收益的同学,及其建议在大二上半学期选英才班计算机系统详解,算是所有英才班课里难度最低的了。
课程内容就不提了,下面是~~(口嗨点评)~~认真评论:
关于理论课:COD5相对COD4最大的改进就是改掉了课后作业每题六七问、每问分ab的沙雕作风(一位写作业感觉就是在复读的人类前来揭示本质)。但这本书怎么读都还是比另一本唐书要好得多——唐书主要是IO和总线这些COD上涉及的不多的,考试也只会出及其文科的“简答题”(有去年两个简答题被原封不动的再搬了回来,还有三个简答题被本人考前群内口嗨不幸言中,看到卷子的瞬间就想原地爆炸了),包括DMA工作方式,CPU设计过程(在PPT上有,还是未经加粗变色的很普通的一行黑字)。
关于实验课:zjx老师今年看起来是想动动实验的陈旧风格,给更多的人张开想象翅膀的机会(),但我个人还是觉得写好CPU写好verilog逻辑比搞些花哨的强(尽管自己最后的大实验也没有实现流水线OTZ),但是觉得难度反而是降低了(键盘鼠标显示器这种模板化的代码网上一抓一大把)。
这里还想分享一个自己给别人debug流水线veribug的一个经历:一位小可怜半夜十二点还没有写完流水线,可是明天就是迟交实验的最后截止日期了,无奈之下作为一名乐于助人~~(贩卖月卡)~~的同学要来了它的代码。
应该跳的跳转指令不跳转,但是仿真一切正常,下载出错。最后把问题定位在了一个简单的always描述的寄存器里。

没注释过rst的是原来的代码,我把它注释掉了,下载就过了(但是不能复位清零),后来改了一下if语句的写法,异步复位也通过了。没想太清楚原理,应该是综合器的行为(fjw大佬说应该给综合器明显提示,将异步复位弄成最高优先级)。
所以得出结论:和verilog相处了一年,我还是不了解她(
关于考试:体验很一般,好多文科题,一大堆的背诵(),有一道是要你在一个图上把流水线段间寄存器标出来,结果这个图自己就有一定限制不能标正确(寄存器写入地址的问题)然后我画的密密麻麻得有二十多个(不知老师判卷作何感想)。最后一道题,cache缺失命中,算了半天直接映射发现是送分题——地址块都没重复的命中个鬼啊心态崩了。
关于wc老师:“不要养成中午睡觉的坏习惯”,“今天要交作业了,大家赶紧做啊!”,“30,40,50......人好少啊”(其实我基本就没听过课orz)
出分真慢,都快两个月了才出(