🚩 Home / NSCSCC / record.md

过程简记

6月 25, 2019

今天考完本科阶段最后一门考试——《汇编语言与接口技术》,至此这学期的所有考试也就全考完了,NSCSCC的比赛也耽搁了有半个多月没进展了,那么也就需要继续做NSCSCC的比赛。在6月上旬,我们基本完成了cpu在AXI接口下的功能测试和性能测试,性能分只有0.7左右,频率也只能跑在90MHz,这个性能还是很低的。距离提交初赛作品还有41天的时间,未来cpu能做成什么样我也不知道。

然后还要一个不好的消息就是,我们物联网工程在7月的前半个月有一个卓越工程实习,具体能不能翘掉,我也不知道。而且范志鹏在七月之前需要去华为实习,基本上工作日也没什么时间来做,这就意味着我俩来做这个东西的时间都不多!

然后,今天晚上,我和范志鹏大致说了一下要如何进行下一步工作如下:

  1. 进一步深入学校AXI接口,将接口直接转换为AXI的(我们现在是SRAM→类SRAM→AXI,这也的性能会有所降低,而且对于接口并没有进一步的深入理解,对后面的继续工作有一定的影响)。
  2. 将现有的代码进行重构整理,进一步优化,减少不必要的以及效率低的代码。
  3. 在以上的基础之上给cpu添加一个cache(使用自己写的吧,因为我们觉得那个system cache ip的性能比较差)。

6月 26, 2019

组内会议:

今天晚上我们具体讨论了一下cache相关的内容,然后范志鹏给我讲了一下他的构想,我听着听着就发现他对于nWay组相联的这个nWay理解是有偏差的,因为他是电信学院的,没有学过CA,所有我后来又给他讲了一下这个组相联。最终我们商量的结果是先做一个1K大小的全相联cache,每个块大小是16个字,这样就是有16个cache块,采用FIFO的方式,指令和数据混在一起。关于cache这一块就交给他了。我主要负责将我们的cpu接口改成AXI的,完全摒弃SRAM和类SRAM。同时,我们也达成一致,将代码进行优化,重新整理代码。最终我们计划在7月的前三个星期内把以上内容完成。如果还要需要的话,还需要在修改一下cache。之后的时间需要留下了去跑操作系统及搭soc。所有时间还是很紧迫的。

7月 01, 2019

今天我跟范志鹏再次讨论了一下cache和接口的问题。之前说是先实现一个inst和data公用的全相联cache,但是后来发现这样的代价太高了,而且如果指令和数据公用一块cache这样会降低指令cache的命中率。我们就计划是实现两块cache,一块给指令,一块给数据。并且采用组相联的方式,每组4way。

关于接口的问题。之前我们是想采用的双AXI接口,这样便于统一,也就是下面这样的结构:

这样就是说cpu访问cache通过一层axi,cache访问内存也是通过层axi,axi的时间消耗还是很大的,这样就导致cpu访问效率会降低。因此我们决定在cpu到cache采用简单的sram接口但需要稍微修改。

这样从cpu到cache就可以很快的访问到数据而不会经过axi延迟。假设cache中含有数据,那么可以在两个周期内访问到数据。加入cache中没有数据,那么需要到内存中访问,经过axi总线。

接口如下:

这个接口跟sram区别并不大,只是需要多一个valid的确认的信号。

7月 15, 2019

这两天范志鹏把cache写好了,然后我和他就一起开始调bug,调了有几天的时间了,但是到今天还是有问题,这个cache就是出现了一些bug,cache主要是他写的,具体内部是什么样的我也不知道。然后这两天我都有些气馁了,我自己是计划在它写cache的期间来看tlb相关的内容的,找了一些资料,但是还是看不懂,看学长的代码也是看的很晕,完全不知道从何做起,加上这个cache有不能正常工作,更是感到没有信心,但是范志鹏好像还行,他总是很乐观。

不管怎么说,还是要努力一下的,不管能做到什么程度。我今天稍微再把流水线处理一下,之前改了好多次,流水线改的有点乱了,现在统一处理,遇到stall整个流水线就停掉。