本科毕业论文:基于 Chisel 实现 RISC-V 指令集标量密码学扩展

在本科毕业论文综合训练开始之前,我就在想我的本科毕业论文要不要公开出来。据我观察,出于各种各样的考虑,这样做的同学确实较少;然而我想,克服一下困难,总是能公开的。所以我在选题的时候就选择了一个公开的主题,即 RISC-V;开源工作也是我喜欢的工作,毕业设计能开源最好。恰好,当时 Rocket Chip 和 OpenSSL 正好缺少 RISC-V 标量密码学扩展的实现和支持,我也正好想学习密码学工具的硬件和软件实现,这是量身打造的课题啊。

于是我选定了这个题目。不过,与其说是写毕业论文,不如说是欢快搞开源业务然后顺便出了一篇毕业论文。体验下来,相比于单纯做大作业/写论文,这种工作模式更亦可赛艇,毕竟能有肉眼可见的反馈和影响,这对自我实现还是很有帮助的。另外,这种开源模式非常省心,毕竟不用自己去摇旗呐喊做宣传了,能合并进入上游就是最好的证明:我知道开源是现有论文的标配,但一种是实现了然后开源在自己的项目下面,往往只有少数人知道和用到,另一种是就是合并给上游,而我显然更喜欢后者带来的影响力收益。

这次体验以后,我觉得一些搞工程的毕业论文完全可以拿着一些开源项目的老大难问题来修嘛。问题描述又清晰,影响又大(三年五年十年都没修的东西,项目维护者又忙,抽不出大段时间来修),完全可以发动广大同学拿一个学期去做掉(做不掉的毕什么业),然后广大同学成为了新一轮的维护者,双赢。

言归正传。在写论文的时候,我除了描述和解释「我的设计」,更想借此来表述「RISC-V 标量密码学指令集的设计」乃至「指令集的设计」.在这种情况下,公开的毕业论文既能让强相关的人员了解我的设计,也能让一些路人有些收获,所以这篇论文其实可以作为一篇博客或者教程,用具体的硬件和软件设计、一些例子和框图,来解释标量密码学指令集,毕竟指令集是抽象的,需要硬件和软件设计才能体现出来指令集的设计精巧之处。

我认为这是这篇论文最值得公开的地方。

论文在,有一些裁剪(例如签名页)。同时放出的还有答辩幻灯片(英文,较为简短)和开组会时的幻灯片(英文,较为详细)。