Rocket-chip学习笔记(1)——rocket生成器内部结构

时间:2024-03-16 20:49:44

Rocket-chip学习笔记(1)——rocket生成器内部结构

rocket生成器内部结构

Rocket-chip学习笔记(1)——rocket生成器内部结构

1、Tiles

(1)rocket

图示为双rocket核系统,rocket核为有序执行,可以替换为BOOM核,BOOM核为乱序执行。
有序执行指系统会一直执行某一程序直至终了,乱序执行指系统会提前执行之后的语句,以避免资源的浪费,个人认为在某种意义上和Pipeline技术类似,但比一般的Pipeline利用率更高。

(2)PTW

page-table walker的缩写,意为页表查找。
page-table意为页表,指包含了逻辑地址和物理地址之间映射关系的对应表。
逻辑地址指CPU所生成的地址。CPU产生的逻辑地址被分为 :p (页号) 它包含每个页在物理内存中的基址,用来作为页表的索引;d (页偏移),同基址相结合,用来确定送入内存设备的物理内存地址。物理地址指内存单元看到的地址。
逻辑地址转换成物理地址的过程是:用页号p去检索页表,从页表中得到该页的物理块号,把它装入物理地址寄存器中。同时,将页内地址d直接送入物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。

(3)L1 cache

一级缓存由SRAM组成,和CPU同频工作,所以速度很快。其中包括L1 instruction cache指令缓存和and L1 data cache数据缓存。

(4)TileBus

Tile总线,连接其他部件。
总线,连接其他部件的信息传输干线,包括数据总线、地址总线和控制总线等。传输时串行按时序传输,并行时同时传输。

2、Memory System

(1)SystemBus

意为系统总线,系统总线结合数据总线的功能来搭载信息,地址总线来决定将信息送往何处,控制总线来决定如何动作。
在此处用来将tiles连接到L2 cache

(2)MemoryBus

二级缓存之后连接到存储器总线,存储器总线再通过TileLink连接到AXI转换器,然后连接到DRAM控制器。
AXI是一种总线协议,它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。
Outstanding指每写入若干个预设值的数据后,需要一个response信号,否则拉低ready位。同理,在读信号时,通过rlast位来判断是否有response。

3、MMIO

(1)ControlBus

BootROM

上电或复位后执行的加载引导程序,还包括设备树(Device Tree),来确认已连接的外围设备。

PLIC

Platform-Level Interrupt Controller的缩写,为global interrupt controller的架构定义,用来聚类和屏蔽设备中断和外部中断。
负责将global interrupt sources(一般来源为I/O devices)连接到interrupt targets(通常是hart contexts)。
PLIC包括interrupt gateways(每个interrupt source对应一个)和PLICcore(负责interrupt priorittization and routing,即优先级和传输)。

CLINT

core-local interrupts的缩写,包括每个CPU的软件中断和计时器中断。

Debug Unit

调试单元(Debug Unit)用于外部控制芯片。它可用于将数据和指令加载到内存或从内存中提取数据。它可以通过自定义DMI(Desktop Management Interface)或标准JTAG协议进行控制。

PeripheryBus

外设总线连接其他外设,如网卡和块设备。它还可以选择公开外部AXI4端口,该端口可以连接到供应商提供的AXI4 IP(一种总线,用于大量数据传输)。

4、DMA

还可以添加直接从内存系统读写的DMA设备。这些连接到前端总线(FrontendBus)。前端总线还可以通过AXI4到TileLink转换器连接供应商提供的AXI4 DMA设备。
前端总线即外部数据总线,是CPU与外界进行数据、命令、地址、控制信号互连的通道。