ARM的BUS Matrix的作用
最近忽然发现三星的2410和2440都没有使用bus matrix,但是atmel的arm9大部分都采用了bus matrix,这个bus matrix到底能带来多大的性能提升? 这要根据你的应用决定而且三星序号2450以后(不过2450本身出品相当晚)的ARM器件都有用到总线矩阵了…… 我是这么想的,如果我扩一片sram作为LCD显示缓冲区的话,如果有bus matrix(比如atmel的9621)的话,DMA传输时不影响其它总线上的操作,用2440的话就会有影响 ARM的BUS Matrix就是多主(Core,DMA等),多从(内部RAM,APB,外部总线等)的交联和仲裁。目的是为了提高不同主机访问不同外设情况下的带宽,另外一个就是简化Bus Master的协议设计。
比如,DMA把片内RAM的数据搬运到APB的外设,如串行口。同时Core从外部总线,SDRAM取指令。如果单一总线,那么Core和DMA控制器就需要先仲裁总线控制权,然后才能访问对应的外设,此时单一总线的带宽不一定够。如果用交联矩阵,那么Core可以直接访问SDRAM,同时DMA访问APB外设。
如果没有用到多个BUS Master,典型如DMA,LCD控制器等都没有用到,具体看芯片,那么Matrix不会有什么性能提升;当然,如果用到了多个Slave,可能会有少量的性能损失,切换总线节点可能需要比直接仲裁更多的时间;(仲裁完成-传输数据 vs 仲裁完成-切换/保持总线节点-传输数据)
如果只用了一个Slave,比如Core,DMA,LCD都是只访问外部总线的SDRAM,实质上就是多主单从结构,效率或许会下降。至少看ATmel的手册,切换连接节点好像需要一个MCK,单总线仲裁,不一定会需要这一个周期。
多主多从的应用才会得到较为明显的好处。 mark dr2001兄的回复,不知道总线仲裁器的信息是哪个文档上面的?
页:
[1]