首页 > 代码库 > 理解RMQ问题和ST算法的原理
理解RMQ问题和ST算法的原理
下图为TI C6xx DSP Nyquist总线拓扑图,总线连接了master与slave,提供了高速的数据传输。有很多种速率不同的总线,如图中的红色方框,最高速总线为CPU/2 TeraNet SCR(即VBUSM SCR),带宽为256bit,其他低速总线为CPU/3,CPU/6,带宽参考图中所示。总线之间用Bridge(桥)连接,作用包括转换总线的速率,使之与所流向总线的速率相同等。
在具体应用中,各种速率的总线完全可以满足复杂的数据传输,而数据传输的瓶颈往往在于连接总线之间的Bridge。下面将举例说明,首先讲解下master访问salve的路径。
AIF2(片上协处理器,在LTE系统中用于接收天线数据)访问MSM(MSM为片上共享内存,对于Nyquist,大小为4M,它独立于四个CPU,四个CPU均可访问,管理MSM的为MSMC,即共享内存控制器,在MSMC上提供给协处理访问MSM的接口为SMS)与DDR(DSP外接的扩展内存,即外存,在MSMC上提供给协处理访问DDR的接口为SES,MSMC详细内容可参考MSMC data manual):
1,AIF2访问MSM路径:
AIF2-->CPU/3低速总线-->Bridge-->CPU/2高速总线-->MSMC接口M3_SL2(即SMS)-->MSM。(见图中的蓝色曲线)
2,AIF2访问DDR路径:
AIF2-->CPU/3低速总线-->Bridge-->CPU/2高速总线-->MSMC接口M3_DDR(即SES)-->EMIF(外部内存接口控制器)-->DDR。(见图中的蓝色曲线)
CPUx访问CPUy的L1或L2内存:
CPUx(通过corePac-x的XMC模块)-->MSMC S端口(S表示MSMC作为slave)-->MSMC M端口(M表示MSMC作为msater发起访问)-->CPU/2高速总线-->Bridge-->corePac-y的EMC模块-->corePac-y的L1或L2内存。(图中紫色曲线)
Bridge的瓶颈问题:
如图中示,若FFTC与AIF2或者还有其他模块同时访问了MSM或者DDR,这样连接CPU/3与CPU/2的Bidge(指向CPU/2总线方向的Bridge)将面临很大的压力,Bridge必将舍弃一些数据传输任务,导致数据传输失败,如AIF2无法写或读MSM或DDR内存,导致软件或硬件出现问题。
解决Bridge瓶颈问题的办法:
1,尽量避免多个Master(图中左下侧连接CPU/3总线的master)同时访问MSM或DDR.
2,如果无法避免多个Master同时访问MSM或DDR,可将某些Master的内存空间设置在corePac中的L1D或者L2资源,这样可以避免访问MSM或者DDR的次数,减小Bridge的数据传输压力。因为Mster(图中左下侧连接CPU/3总线的master)访问corePac中的L1D或者L2资源不再需要经过连接CPU/3与CPU/2的Bidge(指向CPU/2总线方向的Bridge)。如指定AIF2将接收到的天线数据存储在需要处理该天线数据的CPU对应的corePac中的L1D或者L2资源中。