less than 1 minute read

前言

似乎从大二上过数字逻辑,写过CPU大作业后,我就踏入了这条不归路。

暑假,我们借了机电楼824,从单周期CPU开始,到完成所有中断例外,也不过两周时间。 当时离提交还有三周左右,就剩下一个AXI I/F没有完成了,看起来一切进展顺利。 我认为我自己的水平足够,也许是之前的内存保证了一定可以在下一周期返回的缘故, 选择了跳过书中建议的先实现类SRAM I/F,直接将没有握手信号的SRAM I/F接到了一个AXI转接桥上。 但这个行为也成为了我痛苦的根源。事实证明:

在没有绝对的经验与把握的前提下,不要试图忽视任何成熟的建议与警告。 也不要好高骛远,眼高手低,过于追求完美。

得益于未经过思考写下的交互与流水线控制逻辑,整个CPU在加上AXI I/F后堪称摇摇欲坠。 任何修改都可能让CPU跑飞,更不用说添加更复杂的逻辑。 此外,初学者用一个月的时间显然无法完成一个AXI I/F的CPU,更不用说LoongArch32R几乎没有什么资料可以参考。

之后,我们似乎过于追求一个部件的完美,而忽略了整体。 23年的CPU我们采用了一款性能非常优秀的除法器:主频高、运算快。那是一个支持110MHz主频,平均3周期以内可以算完的整数触发器。 我们认为这个除法器一定会给我们带来巨大的收益,但当我们发现每一次访存,无论是取指令还是取数据,都会被加上25周期的延时后, 除法运算省下来的时间可以说是九牛一毛。这对于我们初赛的性能测试几乎没有任何帮助,除了可以在报告中写上一笔。

过了这个假期,我决定从主要矛盾入手,提升性能。 于是,一个dcache,我写了几周。当想要做一些自己的事时,总是被各种杂事缠身,当然,也可能是我对这个事情很害怕,试图用各种事情 掩盖过去,直到一个不能再拖的时候,才会开始动手。

又是一年新年,回家之后非常自由自在。吃饭,睡觉,穿插着写代码。于是我的第一版带cache的CPU就这样完成了。我叫他Hades, 也许是受尽了cache的折磨,或者是受尽了CPU的折磨,所以叫他这个名字。

We named it “Hades”, the god of the underworld For a long period, it has been experienced, unmoved by prayer or sacrifice. In such an unseen depth, freezing, dark and empty, there are few persons, individuals, mortals, who could not feel despair. Like a forbidden area - one great Furnace flam’d, yet from those flames no light, but rather darkness visible serv’d only to discover sights of woe, regions of sorrow, doleful shades, where peace and rest can never dwell, with ever-burning Sulphur unconsum’d, we stepped into and fought with, whereas failure takes the throne, where divine light will never spread.

又过了一个学期,又是缝缝补补的一个学期,害怕做一些实质性的更改,不敢去做,不敢去想,只想做一些机械性的工作, 完善现在的项目,整理现在的项目,但是显然没能成功。各种事让我无法思考,编码工作也就随之停滞了。

拖延症拖到最后总要付出一些代价,不是身体上的折磨就是心灵上的折磨,或者两者兼有。 临近比赛截止日期,也就是六月下旬,我们正式开始了这次的备赛工作。 这个去年的时间差不多,但区别是我们已经有了一个自行设计的,完整的CPU核,还有tlb、cache等模块,也有了丰富的设计经验, 去年只是空有一颗参赛的决心而已。显然,决心没有用,也不要想能够抄一份代码。在CPU核的极高耦合度下,没什么东西是开箱即用的; 经验才有用,可能一个bug需要没有经验的人找一个星期,有经验的人一眼就能看出来。

该踩的坑,一个不少,该走的路,一米不差

临近提交的很短时间内,我们完成了超标量的设计,这个设计并没有我们想象的那么难。为了提升频率将跳转单元挪来挪去,改来改去。 最后算是交上了一个还算满意的版本。也算是给这么长时间的努力一个交代。

进了决赛,去了重庆,答辩过后依旧兴奋,直到第二天的颁奖典礼过后才冷静下来。拿了二等奖,也算是破了学校记录,还是非常心满意足的。 比赛一年比一年难,从最开始的完成即完赛,到现在标配cache,不敢想象过两年是不是要标配双发射了。不过我能做的,就是把参赛的CPU写好注释,写好文档,让他可以传承下去,让更多人能够学会设计CPU,调试CPU,就足够了。

2024年8月

学院路

CPU设计

Tags:

Categories:

Updated: