BWM(带宽管理,corePac中的模块,每个corePac有一个BWM)的目的是避免一个请求对一个资源的长期存取而造成的阻塞,BWM确保所有请求者都能获取一定大的带宽资源。
BWM是全局定义(对于整个corePac来说),局部实现(在每一个corePac中实现)。
初始化带宽管理既是设置一系列寄存器(arbitration registers),配置时需要在每个CPU上对同一寄存器设置(即每个仲裁寄存器都是CPU specific的,所有的CPU都有同样的一组仲裁寄存器,寄存器地址也是CPU specific的)。
BWM资源:
L1P SRAM/cache,L1D SRAM/cache,L2 SRAM/cache,配置总线。
请求集:
1,CPU发起的数据访问(load/store),程序访问(包括访问自己所属corePac的资源以及其他corePac的资源以及MSM,DDR);
2,IDMA发起的传输(以及产生的一致性操作);
3,cache一致性操作(eg,Wb) - global与block-based;
4,corePac外部发起的SDMA(以及产生的一致性操作)操作,即协处理器(DMA)或其他CPU访问当前CPU所在的corePac资源。
如下图,在L2内存控制器中实现了下面的仲裁寄存器:
CPUARBU:当前CPU(指当前CPUARBU寄存器所作用的CPU)访问L2内存(当前corePac)的仲裁寄存器;
IDMAARBU:当前CPU所在的corePac的IDMA模块访问L2内存的仲裁寄存器;
SDMAARBU:外设或其他CPU访问当前CPU所属的corePac的L2内存时的仲裁寄存器。注意这个仲裁寄存器是在L2内存控制器上实现,不是在EMC模块上实现。这里的L2内存控制器作为slave接收其他CPU以及外设对本corePac L2内存的访问请求并仲裁(对于L1D内存控制器,有相应的SDMAARBD);
UCARBU:对L2内存的一致性操作的仲裁寄存器;
MDMAARBU:当前CPU访问当前corePac之外的资源时的仲裁寄存器,注意这个仲裁寄存器是在L2内存控制器上实现,不是在XMC模块上实现。这里L2内存控制器作为master发起对其他corePac资源以及MSM,DDR的访问。
TI_DSP_corePac_带宽管理 - 1(原理)