一种用于多处理器的多端口访存控制器及其控制方法

文档序号:8258396阅读:471来源:国知局
一种用于多处理器的多端口访存控制器及其控制方法
【技术领域】
[0001]本发明涉及数字信号处理技术领域,尤其是一种用于多处理器的多端口访存控制器及其控制方法。
【背景技术】
[0002]多端口访存控制器的发明是为了解决在多处理器核和集成高速外设的片上网中,大量数据的存储和交换工作。对于由SRAM构成的存储器阵列,既要利用其读写端口简单易操作的特性,又要兼顾多通道并发请求仲裁机制的合理性,充分发挥最大的数据带宽。
[0003]以往多端口访存控制器沿用请求和数据串入串出的特点,对由单口 SRAM所构成的存储器,当多路请求同时生效并且冲突时,往往会按优先级选择其中某一路进入存储单元,其余请求则会等待,降低了访存数据的吞吐率。

【发明内容】

[0004]本发明的首要目的在于提供一种能够提高访存数据的吞吐率,减小因为地址冲突所造成的等待时间的用于多处理器的多端口访存控制器。
[0005]为实现上述目的,本发明采用了以下技术方案:一种用于多处理器的多端口访存控制器,包括指令通道,其输入端分别与多处理器的外设DMA通道、内核DMA通道的输出端相连,其输出端与仲裁模块的输入端相连,仲裁模块的输出端与存储器阵列的输入端相连,存储器阵列的输出端与数据通道的输入端相连,数据通道的输出端分别与多处理器的外设DMA通道、内核DMA通道的输入端相连。
[0006]所述指令通道由第一、二 BANK选择模块、第一、二请求合并模块和第一、二串行化模块组成,所述第一 BANK选择模块的输入端与外设DMA通道的输出端相连,第一 BANK选择模块的输出端与第一请求合并模块的输入端相连,第一请求合并模块的输出端与第一串行化模块的输入端相连;所述第二 BANK选择模块的输入端与内核DMA通道的输出端相连,第二 BANK选择模块的输出端与第二请求合并模块的输入端相连,第二请求合并模块的输出端与第二串行化模块的输入端相连,第一、二串行化模块的输出端均与仲裁模块的输入端相连。
[0007]所述存储器阵列由多个存储器BLOCK组成,每个存储器BLOCK由多个存储器BANK组成。
[0008]所述数据通道由输出寄存器、DMA通道选择模块、数据排序模块、数据合并模块和数据输出缓冲模块组成,所述输出寄存器的输入端与存储器阵列的输出端相连,输出寄存器的输出端与DMA通道选择模块的输入端相连,DMA通道选择模块的输出端与数据排序模块的输入端相连,数据排序模块的输出端与数据合并模块的输入端相连,数据合并模块的输出端与内设第三串行化模块的数据输出缓冲模块的输入端相连,数据缓冲模块的输出端分别与外设DMA通道、内核DMA通道的输入端相连。
[0009]所述第一、二请求合并模块的电路相同,所述第一请求合并模块由五级二选一数据选择器组成,其中,第一级二选一数据选择器C2的输入端与第一 BANK选择模块的输出端相连,第一级二选一数据选择器C2的输出端与第二级二选一数据选择器C4的输入端相连,第二级二选一数据选择器C4的输出端与第三级二选一数据选择器CS的输入端相连,第三级二选一数据选择器CS的输出端与第四级二选一数据选择器C16的输入端相连,第四级二选一数据选择器C16的输出端与第五级二选一数据选择器C32的输入端相连,第五级二选一数据选择器C32的输出端与第一串行化模块的输入端相连;第一级二选一数据选择器C2的个数为外设DMA通道个数和内核DMA通道个数之和的二分之一,第二级二选一数据选择器C4的个数为第一级二选一数据选择器C2的个数的二分之一,第三级二选一数据选择器CS的个数为第二级二选一数据选择器C4的个数的二分之一,第四级二选一数据选择器C16的个数为第三级二选一数据选择器CS的个数的二分之一,第五级二选一数据选择器C32的个数为第四级二选一数据选择器C16的个数的二分之一。
[0010]所述第一、二串行化模块的电路相同,所述第一串行化模块由多个寄存器和多个二选一数据选择器交替排序组成,寄存器和二选一数据选择器的个数均为外设DMA通道个数和内核DMA通道个数之和,各个二选一数据选择器的第一输入端均接第一请求合并模块的输出端,各个二选一数据选择器的第二输入端接与其相邻的寄存器的输出端Q端,各个二选一数据选择器的控制端stall接倒数第二个寄存器的输出端Q端,各个二选一数据选择器的输出端接与其相邻的寄存器的输入端D端,各个寄存器的控制端HOLD端与仲裁模块的仲裁结果输出端arbt端相连,最后一个寄存器的输出端Q端作为第一串行化模块的输出端与仲裁模块的输入端相连。
[0011]所述数据合并模块由多个寄存器和多个三十二选一数据选择器交替排序组成,寄存器和数据选择器的个数均为外设DMA通道个数和内核DMA通道个数之和,各个数据选择器的输入端均接数据排序模块的输出端,各个数据选择器的输出端均接与其相邻的寄存器的输入端D端,各个数据选择器的控制端stall接外设DMA通道、内核DMA通道的输出端,各个寄存器的输出端Q端作为数据合并模块的输出端与数据输出缓冲模块的输入端相连。
[0012]本发明的另一目的在于提供一种用于多处理器的多端口访存控制器的控制方法,该方法包括下列顺序的步骤:
(1)指令通道接收外设DMA通道、内核DMA通道的读/写请求,按其地址中BANK字段进行选择性接收,将各通道请求紧密排列,并将多个请求逐周期向仲裁模块输出;
(2)仲裁模块对外设DMA通道、内核DMA通道访问同一BANK的请求做优先级选择,并将优先级高的请求选择至存储器阵列的输入端口,若为写请求,则写入存储器阵列后完成,否贝1J,进入下一步;
(3)数据通道接收存储器阵列的数据输出,并按数据所对应的DMA通道ID号进行选择,将各BANK数据紧密排列,并将多周期内各存储器BANK输出的数据按时间先后排列在一起,再将各BANK返回数据串行化后输出至DMA通道,DMA通道根据数据ID字段匹配识别读请求。
[0013]指令通道中的BANK选择模块将接收到的各DMA通道请求,按其地址中BANK字段选择性接收,若地址非属于对应BANK,则输出空请求;接着,请求合并模块接收BANK选择模块的输出,通过多级选择,将各DMA通道请求紧密排列;最后,串行化模块接收请求合并模块的输出,将多个请求逐周期向仲裁模块输出,并生成向DMA通道的暂停信号,即当倒数第二级寄存器输出非O时,暂停DMA通道对应BANK的请求。
[0014]在进行读操作时,首先,数据通道中的DMA通道选择模块接收所有存储器BANK的数据输出,并按数据所对应的DMA通道ID号进行选择;接着,数据排序模块接收DMA通道选择模块的输出,通过多级选择,将各存储器BANK数据紧密排列;接着,数据合并模块接收数据排序模块的输出,将多周期内各存储器BANK输出的数据按时间先后排列在一起;最后,数据输出缓冲模块接收数据合并模块的输出,将各存储器BANK返回数据串行化后输出至外设DMA通道、内核DMA通道,外设DMA通道、内核DMA通道根据数据ID字段匹配识别读请求。
[0015]由上述技术方案可知,本发明在指令通道中将同一时刻多通道的请求选择至目标存储器BANK,后经并串行化模块输出至仲裁模块,在获取仲裁权后将读写请求选择至相应存储器输入端口 ;对于各存储器BANK返回的读数据,同样按照其所对应的DMA通道号选择至相应的DMA数据通道,再经数据合并和串行化后输出。由于经多端口访存控制器输出的读数据顺序与输入的读请求不一定相同,在DMA通道一端,需要按照数据所附加的ID号与请求ID相匹配。本发明为多路DMA通道并发请求提供了有效的响应机制,兼顾请求响应的实时性和存储器带宽充分利用的特点,能够提高访存数据的吞吐率,减小因为地址冲突所造成的等待时间。
【附图说明】
[0016]图1为本发明的电路框图。
[0017]图2、3、4、5为本发明中存储器阵列、第一请求合并模块、第一串行化模块、数据合并模块的电路原理图。
【具体实施方式】
[0018]一种用于多处理器的多端口访存控制器,包括指令通道30,其输入端分别与多处理器的外设DMA通道10、内核DMA通道20的输出端相连,其输出端与仲裁模块40的输入端相连,仲裁模块40的输出端与存储器阵列50的输入端相连,存储器阵列50的输出端与数据通道60的输入端相连,数据通道60的输出端分别与多处理器的外设DMA通道10、内核DMA通道20的输入端相连,如图1所示。指令通道30用于连接多路DMA请求接口,针对每个存储器BANK串行化读写请求,对于每一个存储器BANK均存在这样一组逻辑;仲裁逻模块用于按固定优先级判定仲裁结果;存储器阵列50是由单口 SRAM所组成的存储器BANK和存储器BLOCK,用于响应经仲裁模块40输出的
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1