Rocket - tile - Core

https://mp.weixin.qq.com/s/-PlVHWPPTCG5mMz_jEAd6g

 

简单介绍Core的实现。

 

Rocket - tile - Core_第1张图片

 

1. XLen

 

XLen定义了总线宽度:

 

其值在BaseSubsystemConfig中定义为64:

 

2. CoreParams

 

CoreParams定义了核心的一系列参数:

Rocket - tile - Core_第2张图片

这里不再逐个介绍。

 

3. HasCoreParameters

 

HasCoreParameters继承自HasTileParameters,从tileParams中取出核心参数,提供了一系列针对核心参数的转换方法以方便使用:

Rocket - tile - Core_第3张图片

这里不再逐个介绍。

 

相较于core, tile是一个抽象层次更高的概念,core是一个tile。

core除了包含tile的参数之外,还有core的具体参数。

 

4. CoreModule

 

CoreModule定义了一个包含了核心参数的模块,也就是核心模块:

 

这是一个抽象模块,其抽象成员,也就是IO接口没有定义:

Rocket - tile - Core_第4张图片

 

5. CoreBundle

 

CoreBundle是一个包含核心参数的Bundle:

 

CoreBundle虽然是抽象类,却并没有抽象成员。标记为抽象的意义在于不能单独实例化进行使用,而只能对其继承扩展而后才可使用。

 

6. CoreInterrupts

 

定义核心的中断:

其中:

a. buserror是总线错误单元(BusErrorUnit)报告的中断;

b. TileInterrupts基本上包含了核心的全部中断:

Rocket - tile - Core_第5张图片

 

7. HasCoreIO

 

HasCoreIO定义了核心的IO接口:

Rocket - tile - Core_第6张图片

其中:

a. 定义一个匿名类:继承自CoreBundle,引入了HasExternallyDrivenTileConstants;

b. 就地实例化该匿名类new {...};

c. 匿名类中定义了核心的基本接口,如中断、指令、数据、浮点运算单元、扩展指令、跟踪调试等等;

 

你可能感兴趣的:(Rocket - tile - Core)