楼主:
kyuudonut (善良è€ç™¾å§“)
2020-02-03 21:40:35在去年五月看到短ID大大 (shortid) 分享外系就读资讯所心得时,
那时的我也刚口试完,也想发文响应,但无奈当时候还在赶实验,因此作罢。
直到最近刚退伍才又想起这篇文章的存在,此文章的受众设定为对于计算机系统
(Architecture/Compiler/Operating system) 有兴趣的学生们,其中又主要为外系学生。
会写下这篇文章的最大原因是,我发现其实许多计算机系统领域的前辈们,
都不是如我们所想像地原先就读于本科系,
但系统的底层似乎又离非本科系的我们太过遥远,
希望我的经验能够带给有志于系统领域的大学生们一些参考。
网志好读版 (无广告及音乐):
https://2henwei.blogspot.com/2020/02/thoughts-on-my-ms-degree-in-cs.html
-
原本这篇文章,在百般深思后,是打算不写的。但在就职日 (On board) 来临之际,内心
也随之躁动而不安;我想,有必要借此,顺便唤醒我甫退伍后松散的思绪,同时也因为受
到太多人的帮忙,让我感到有责任必须去纪录在这个人生里程碑下 (Milestone) 间所发
生的事,供有需要的后辈参考。
-
故事得从 2015/11/4 开始说起,这天,我向成功大学交通管理科学系的 L 老师正式
请辞研究助理的工作,因自觉无法在此地继续精进资讯系统相关的知识。我拿着当年暑假
参加的资讯比赛 (由中兴工程顾问公司所举办) 所获得的奖学金,毅然报名了资讯工程学
研究所的补习班课程。准备的心得可见我在 PTT 所发表的文章。
-
时间来到 2017 年 2 月,各研究所陆续放榜,我也顺利地在台湾大学找到指导教授,承
蒙 Y 老师不嫌弃我的管理背景下,收了我做研究生。我也在离研究所开学的这段时间
,选修了 jserv 老师在国立成功大学开设的系统软件课程,藉以精进自己对计算机系统
的了解。
从我当时的期末个人评量可以看到,这堂课程启蒙了我对当代电脑系统的认识,
不仅是程式码专案的维护 (Coding style, build system, version-control system,
...),还有培养得以一窥网络上开源专案 (Open source project) 的能力。除了大家一
般在意的实作之外,老师也会指派会议论文 (Conference paper) 给我们撰写心得报告 (
直到硕二时,回去翻过往记录才发现:哇,以前读的是一篇 TACO paper 啊!)
最后,修这堂课还可以体验在三更半夜里,老师不断在 GitHub 发 Comments/PRs 过来;这么好的课,不修吗?
-
然而,与 jserv 老师的缘分并未随着课程结束而日薄,在学期即将结束之际,我在
Facebook 发了讯息给老师,表明想一起研究当时 Java 9 所新增的 AoT (Ahead-of-Time) feature。
这也是我第一次,从无到有,去设计数个实验去测试几个仍在开发中的程式码专案
(OpenJDK & OpenJ9),相关成果可见 JCConf 2017 的录影。
也因为这样的经验,jserv 老师继续邀请我加入国立成功大学分布式帐本实验室 (DLTcollab),并筹备了 dcurl 专案,藉以榨干 (Utilize) 服务器硬件架构来加速 Proof of Work
(PoW) 的运算,相关成果可见 SITCON 2018 的录影。
-
尽管在系统实务上的经验有所建树,我在硕士班一年级里唸得并不是很开心。因为研究课
题认知上的歧异 (Accelerate/optimize machine learning system),在 2018 甫过完年
的学期初,我决定更换指导教授到 H 老师的实验室,坚持研究新兴的计算机架构
RISC-V。
可想而知,这段时间的心理压力非常大,因除了未定的研究题目外,暑假亦得前
往老师安排的新竹晶心科技架构设计部实习;但在事后,这也是我认为在学涯期间,所获
得很有价值 (Valuable) 的经验之一。实习结束后,
我也顺水推舟地安排产学两边的合作,一同进行向量架构 (Vector architecture) 的研究。
进行这个研究题目的难处在于:向量架构在电脑科学史里算得上是一种上古技术。
研究过程中,我仿佛在进行某种资讯领域的文艺复兴,一边阅读著 2,30 年前的文献,
一边从 H 老师口中摸索曾经的微架构 (Microarchitecture) 细节 (注: H 老师曾于 Cray Research 工作,后者为当时超级电脑市场霸主。)
当我描绘出心目中的架构设计,还得与新竹晶心确认是否够实际 (Practical);
当我考虑到太多实作细节时,便不晓得该如何在期限内完成研究。而这两边的权衡,
也一直为架构领域学生们 (Architecture students) 所困扰著。而等到我完
成模拟器 (Simulator) 的实作后,已约是 2019 年 2 月中了,与 H 老师设计几个实验后
,便顺势投稿在台湾举办的 RISC-V Workshop 发表,成果可见录影。
在三月份的 RISC-V Workshop 发表结束后,又花了一个月撰写硕士论文以准备五月份的
论文口试 (发表结束后的茶会,H 老师突然跟我说可以毕业了,可以不要这么突然吗?)
口试后的两个月期间,因为实验工具已俨然成形,又另外准备了几个关于编译器最佳化
(Compiler optimization) 的实验,准备投稿其他研讨会。
求职方面,我前往面试的 MediaTek, Qualcomm, Synopsys, SiFive 都有获得颇正面的评价,
由于面试过程过于冗碎,不在此赘述。最后,硕士学涯便在投稿及求职完成后平静地结束。
-
文末,我想鼓励外科系对计算机系统有兴趣的学生,努力争取充实自己的机会。如果我大
四没有跑去修成功大学电机系陈中和老师的 Computer organization (当时还并未决定转
唸资讯所),Y 老师或许就不会收我这个外系学生做 RA;
如果我没有在暑假时与 jserv 老师一起研究 Java virtual machine 以及跑去 H 老师的虚拟机器课堂上踊跃发问,H 老师可能也不会收我这中途学生;
如果我没有去新竹晶心科技实习,我的模拟器也不可能在 RISC-V vector specification
都还没有确定的情况下,花费四个月完成。
而在做这些决定之前,我都还没有想过这么多意料之外的事情会发生。正因为如此喜欢计算机系统运作的细节,让我们愿意拉起衣袖、弄脏双手,踏离原本的舒适圈,一头埋入这个世界。
zhenw