Skip to content

CA

Final Grade:

争议最大的一门课,没有之一。选了它和110P,这学期你就有了。琐碎的知识点,大量的作业和lab,de不完的bug只为不漏过任何一个测试点。这就是CA。

期中考的爆炸了,于是悔过自新认真学习CA,但是其实也是发现CA知识点还是有一些主线的。PPT不能一知半解,因为每一页可能都会是试卷上的题目。当然熟练度也很重要,尤其是cache、RISC-V代码、virtual memory这三个大头,几乎期末考试是必考的。

在CA上面下的功夫近乎是IML和AI总和的五倍,非常的夸张。当期末考试收卷的时候,有一种‘轻舟已过万重山’的感觉。往年的试题都是十分珍贵的资源(当然,期末试题没有)。

cheatsheet做了,但是考试的时候几乎很少用(没错,三次考试都有这种感觉),如果把cheatsheet当做一些知识点的cache,那么在考试的access场景下,hit rate疑似有点低了,很多时候要访问main memory - brain了,但是又遗憾的是brain中很多数据是损坏的(bushi。

但是最要命的,其实是考试的时间非常的紧张,要非常合理地安排时间。在写邮箱前缀的时候,就可以浏览一下题型和每道大题的workload。期中考试1的时候就是有两道RISC-V,最后一道我的时间留的不是很多的,导致紧张地没有写出来,导致最终没有高出平均分一个sigma。

CA Project

Final Grade: A+

CA project的工作量更是大中大,而且给分很差+学生卷到爆,导致不得不追求完美,把所有的测试点都拿下。而corner case+hidden bug会直接让debug的时间复杂度螺旋式上升。

1.1是写assemble,1.2是RISC-V代码,2.1是简单CPU,2.2是pipelined CPU,3是竞速,4是longan-nano开发小游戏。我在上面花的时间其实很多,但是绝大部分的时候都是为了把分数拿满。以及在2.2的时候,由于2.1中埋下的bug而且在2.1的gradescope testcase没检查出来,导致浪费了大量的时间。但是好在最终还是发现了问题所在。

Project3在使用了loop unrolling,openmp,SIMD之后,一般就能拿很好的分数了。但是只有30个人能拿满分的规则实在是太变态了。并且最终的测试机制是有波动的,你在gradescope leaderboard是前30名,并不意味着最终的测试机子上你是前30,虽然团队会进行7次运行且抛弃最大值和最小值以尽可能地减少波动。所以说实力之外,还需要一点小运气。