Skip to main content

BOOM v3学习探索日记

本文可能很多地方都是错误的,以及很多可能和主题无关,请谨慎参考

BOOM是ucb的一款ooo处理器,官网在https://boom-core.org/

首先是一个chipyard,总之就像是把所有东西全部塞到一个文件夹那种感觉,各种core啊,各种工具呀,然后通过一套make来实现不同的替换,我感觉还是很牛逼的,可以通过编写不同的配置class,来换core啊,加加速器啊之类的,不仅如此,还集成了特别多的东西,ysyx的AM项目肯定也是受此启发,可以说chipyard包含了ucb所有的成果,是一个framework

chipyard,rocket-chip,boom这些感兴趣的都有相应的论文,总觉得自己得多看一点论文,不然真成农民工了

Makefile粗览

从boom的makefile开始阅读,啥也没有,ok,开始读sims/verilator的makefile

好的,完全看不懂,留一个TODO在这里,需要看懂的时候再来看好了

前端

frontend.scala小小一千行,加上其他文件的代码,前端代码量大概在4k-5k行左右,说实在有点打退堂鼓,我之前看一个300行左右的icache都快给我看吐了,希望这个可以readable一点

From BOOM’s point of view, the Rocket core can be thought of as a “Library of Processor Components.” 悲,看的第一眼就体会到了,一个Bundle被extend了n次,全是rocketChip的基础设施

而且基本上全都是diplomacy的影子,我打算去看看论文https://carrv.github.io/2017/papers/cook-diplomacy-carrv2017.pdf,但是讲的实在太简略了,痛苦面具

看了三百行,都是bundle定义,感觉压力不是很大,他每一个module都是lazymodule,推荐读者入门diplomacy通过这个视频https://www.bilibili.com/video/BV17r4y1i7qt/?spm_id_from=333.337.search-card.all.click&vd_source=9d92636f938d2ae062a6b23f118d19d1,diplomacy基本上花活都在node上面

首先是frondend的第0阶段,有一个icache,文档上面说The i-cache is a virtually indexed, physically tagged set-associative cache.首先是一个组相联的cache,使用虚拟地址做index,找出对应的set,然后是用从tlb翻译出来的pa做tag比较,选出一个way

我发现从frontend的整体开始看实在是太难了,所以我还是打算一个器件一个器件的来看,首先我想先看tlb,也就是虚拟地址部分(这是因为最近刚看的这部分的书),这样分着来看也更好做学习

有点崩溃了…..是不是目标定的太高了…..,哎,其实可以不要着急,慢慢来就好,觉得难最主要的是知识的缺失,慢慢学就好

TLB

这个东西其实和操作系统关系比较大,所以我打算先读一读riscv特权指令

ABI这个东西我一直都不是很理解,趁此机会理解了一下,但是我发现我竟然说不出来,感觉很难描述,我尝试一下吧,就是首先ISA就像是对于一段二进制(01串)的一种解读,所以会有ISA的出现,只要你用同一个ISA在一个硬件上跑,这段二进制串就被赋予了意义,但是只有这个还不够,于是就有了在ISA上面的ABI,网上对于ABI的理解很多都是从calling convention来理解的,ABI就像是指令的一些规范,比如说你写了一个函数,被编译器按照某种ABI编译成一个二进制的指令,现在在我的代码中我想调用的这个函数,我就需要遵循相同的约定,比如说,你写的这个函数会从寄存器中取第一个参数(fastcall),那我就不能把第一个参数放在栈上(cdecl),这就是ABI,所以说从编译器的角度去理解ABI还挺好的,ISA和ABI这两套规范保证了一个二进制能与另一个二进制进行交互以及运行在同一个架构上面

(好像windows就有一个开启hyperv的选项,开启后,windows都会作为第三种的一个虚拟OS来运行)其实上图就是一个套娃,挺容易理解的

但是这个XEE(exe env),通过XBI来进行交互,这是个什么东西,中文翻译是“运行时环境“,是不是特别熟悉(详见NJU PA的AM,即基础的有TRM,IOE),在只有一个app的第一张图,AEE就是硬件,是klib,到出现OS时,App的AEE变成了os给它提供的环境,就是syscall

看到这里突然想起linux了(用nemu),我想试试能不能启,比较boom肯定是能启的,我需要了解一下这部分的内容,这部分内容详见我另一篇博客:https://www.yizishun.com/?p=4119