一種用于多處理器的多端口訪存控制器及其控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字信號(hào)處理技術(shù)領(lǐng)域,尤其是一種用于多處理器的多端口訪存控制器及其控制方法。
【背景技術(shù)】
[0002]多端口訪存控制器的發(fā)明是為了解決在多處理器核和集成高速外設(shè)的片上網(wǎng)中,大量數(shù)據(jù)的存儲(chǔ)和交換工作。對(duì)于由SRAM構(gòu)成的存儲(chǔ)器陣列,既要利用其讀寫端口簡單易操作的特性,又要兼顧多通道并發(fā)請(qǐng)求仲裁機(jī)制的合理性,充分發(fā)揮最大的數(shù)據(jù)帶寬。
[0003]以往多端口訪存控制器沿用請(qǐng)求和數(shù)據(jù)串入串出的特點(diǎn),對(duì)由單口 SRAM所構(gòu)成的存儲(chǔ)器,當(dāng)多路請(qǐng)求同時(shí)生效并且沖突時(shí),往往會(huì)按優(yōu)先級(jí)選擇其中某一路進(jìn)入存儲(chǔ)單元,其余請(qǐng)求則會(huì)等待,降低了訪存數(shù)據(jù)的吞吐率。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的首要目的在于提供一種能夠提高訪存數(shù)據(jù)的吞吐率,減小因?yàn)榈刂窙_突所造成的等待時(shí)間的用于多處理器的多端口訪存控制器。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明采用了以下技術(shù)方案:一種用于多處理器的多端口訪存控制器,包括指令通道,其輸入端分別與多處理器的外設(shè)DMA通道、內(nèi)核DMA通道的輸出端相連,其輸出端與仲裁模塊的輸入端相連,仲裁模塊的輸出端與存儲(chǔ)器陣列的輸入端相連,存儲(chǔ)器陣列的輸出端與數(shù)據(jù)通道的輸入端相連,數(shù)據(jù)通道的輸出端分別與多處理器的外設(shè)DMA通道、內(nèi)核DMA通道的輸入端相連。
[0006]所述指令通道由第一、二 BANK選擇模塊、第一、二請(qǐng)求合并模塊和第一、二串行化模塊組成,所述第一 BANK選擇模塊的輸入端與外設(shè)DMA通道的輸出端相連,第一 BANK選擇模塊的輸出端與第一請(qǐng)求合并模塊的輸入端相連,第一請(qǐng)求合并模塊的輸出端與第一串行化模塊的輸入端相連;所述第二 BANK選擇模塊的輸入端與內(nèi)核DMA通道的輸出端相連,第二 BANK選擇模塊的輸出端與第二請(qǐng)求合并模塊的輸入端相連,第二請(qǐng)求合并模塊的輸出端與第二串行化模塊的輸入端相連,第一、二串行化模塊的輸出端均與仲裁模塊的輸入端相連。
[0007]所述存儲(chǔ)器陣列由多個(gè)存儲(chǔ)器BLOCK組成,每個(gè)存儲(chǔ)器BLOCK由多個(gè)存儲(chǔ)器BANK組成。
[0008]所述數(shù)據(jù)通道由輸出寄存器、DMA通道選擇模塊、數(shù)據(jù)排序模塊、數(shù)據(jù)合并模塊和數(shù)據(jù)輸出緩沖模塊組成,所述輸出寄存器的輸入端與存儲(chǔ)器陣列的輸出端相連,輸出寄存器的輸出端與DMA通道選擇模塊的輸入端相連,DMA通道選擇模塊的輸出端與數(shù)據(jù)排序模塊的輸入端相連,數(shù)據(jù)排序模塊的輸出端與數(shù)據(jù)合并模塊的輸入端相連,數(shù)據(jù)合并模塊的輸出端與內(nèi)設(shè)第三串行化模塊的數(shù)據(jù)輸出緩沖模塊的輸入端相連,數(shù)據(jù)緩沖模塊的輸出端分別與外設(shè)DMA通道、內(nèi)核DMA通道的輸入端相連。
[0009]所述第一、二請(qǐng)求合并模塊的電路相同,所述第一請(qǐng)求合并模塊由五級(jí)二選一數(shù)據(jù)選擇器組成,其中,第一級(jí)二選一數(shù)據(jù)選擇器C2的輸入端與第一 BANK選擇模塊的輸出端相連,第一級(jí)二選一數(shù)據(jù)選擇器C2的輸出端與第二級(jí)二選一數(shù)據(jù)選擇器C4的輸入端相連,第二級(jí)二選一數(shù)據(jù)選擇器C4的輸出端與第三級(jí)二選一數(shù)據(jù)選擇器CS的輸入端相連,第三級(jí)二選一數(shù)據(jù)選擇器CS的輸出端與第四級(jí)二選一數(shù)據(jù)選擇器C16的輸入端相連,第四級(jí)二選一數(shù)據(jù)選擇器C16的輸出端與第五級(jí)二選一數(shù)據(jù)選擇器C32的輸入端相連,第五級(jí)二選一數(shù)據(jù)選擇器C32的輸出端與第一串行化模塊的輸入端相連;第一級(jí)二選一數(shù)據(jù)選擇器C2的個(gè)數(shù)為外設(shè)DMA通道個(gè)數(shù)和內(nèi)核DMA通道個(gè)數(shù)之和的二分之一,第二級(jí)二選一數(shù)據(jù)選擇器C4的個(gè)數(shù)為第一級(jí)二選一數(shù)據(jù)選擇器C2的個(gè)數(shù)的二分之一,第三級(jí)二選一數(shù)據(jù)選擇器CS的個(gè)數(shù)為第二級(jí)二選一數(shù)據(jù)選擇器C4的個(gè)數(shù)的二分之一,第四級(jí)二選一數(shù)據(jù)選擇器C16的個(gè)數(shù)為第三級(jí)二選一數(shù)據(jù)選擇器CS的個(gè)數(shù)的二分之一,第五級(jí)二選一數(shù)據(jù)選擇器C32的個(gè)數(shù)為第四級(jí)二選一數(shù)據(jù)選擇器C16的個(gè)數(shù)的二分之一。
[0010]所述第一、二串行化模塊的電路相同,所述第一串行化模塊由多個(gè)寄存器和多個(gè)二選一數(shù)據(jù)選擇器交替排序組成,寄存器和二選一數(shù)據(jù)選擇器的個(gè)數(shù)均為外設(shè)DMA通道個(gè)數(shù)和內(nèi)核DMA通道個(gè)數(shù)之和,各個(gè)二選一數(shù)據(jù)選擇器的第一輸入端均接第一請(qǐng)求合并模塊的輸出端,各個(gè)二選一數(shù)據(jù)選擇器的第二輸入端接與其相鄰的寄存器的輸出端Q端,各個(gè)二選一數(shù)據(jù)選擇器的控制端stall接倒數(shù)第二個(gè)寄存器的輸出端Q端,各個(gè)二選一數(shù)據(jù)選擇器的輸出端接與其相鄰的寄存器的輸入端D端,各個(gè)寄存器的控制端HOLD端與仲裁模塊的仲裁結(jié)果輸出端arbt端相連,最后一個(gè)寄存器的輸出端Q端作為第一串行化模塊的輸出端與仲裁模塊的輸入端相連。
[0011]所述數(shù)據(jù)合并模塊由多個(gè)寄存器和多個(gè)三十二選一數(shù)據(jù)選擇器交替排序組成,寄存器和數(shù)據(jù)選擇器的個(gè)數(shù)均為外設(shè)DMA通道個(gè)數(shù)和內(nèi)核DMA通道個(gè)數(shù)之和,各個(gè)數(shù)據(jù)選擇器的輸入端均接數(shù)據(jù)排序模塊的輸出端,各個(gè)數(shù)據(jù)選擇器的輸出端均接與其相鄰的寄存器的輸入端D端,各個(gè)數(shù)據(jù)選擇器的控制端stall接外設(shè)DMA通道、內(nèi)核DMA通道的輸出端,各個(gè)寄存器的輸出端Q端作為數(shù)據(jù)合并模塊的輸出端與數(shù)據(jù)輸出緩沖模塊的輸入端相連。
[0012]本發(fā)明的另一目的在于提供一種用于多處理器的多端口訪存控制器的控制方法,該方法包括下列順序的步驟:
(1)指令通道接收外設(shè)DMA通道、內(nèi)核DMA通道的讀/寫請(qǐng)求,按其地址中BANK字段進(jìn)行選擇性接收,將各通道請(qǐng)求緊密排列,并將多個(gè)請(qǐng)求逐周期向仲裁模塊輸出;
(2)仲裁模塊對(duì)外設(shè)DMA通道、內(nèi)核DMA通道訪問同一BANK的請(qǐng)求做優(yōu)先級(jí)選擇,并將優(yōu)先級(jí)高的請(qǐng)求選擇至存儲(chǔ)器陣列的輸入端口,若為寫請(qǐng)求,則寫入存儲(chǔ)器陣列后完成,否貝1J,進(jìn)入下一步;
(3)數(shù)據(jù)通道接收存儲(chǔ)器陣列的數(shù)據(jù)輸出,并按數(shù)據(jù)所對(duì)應(yīng)的DMA通道ID號(hào)進(jìn)行選擇,將各BANK數(shù)據(jù)緊密排列,并將多周期內(nèi)各存儲(chǔ)器BANK輸出的數(shù)據(jù)按時(shí)間先后排列在一起,再將各BANK返回?cái)?shù)據(jù)串行化后輸出至DMA通道,DMA通道根據(jù)數(shù)據(jù)ID字段匹配識(shí)別讀請(qǐng)求。
[0013]指令通道中的BANK選擇模塊將接收到的各DMA通道請(qǐng)求,按其地址中BANK字段選擇性接收,若地址非屬于對(duì)應(yīng)BANK,則輸出空請(qǐng)求;接著,請(qǐng)求合并模塊接收BANK選擇模塊的輸出,通過多級(jí)選擇,將各DMA通道請(qǐng)求緊密排列;最后,串行化模塊接收請(qǐng)求合并模塊的輸出,將多個(gè)請(qǐng)求逐周期向仲裁模塊輸出,并生成向DMA通道的暫停信號(hào),即當(dāng)?shù)箶?shù)第二級(jí)寄存器輸出非O時(shí),暫停DMA通道對(duì)應(yīng)BANK的請(qǐng)求。
[0014]在進(jìn)行讀操作時(shí),首先,數(shù)據(jù)通道中的DMA通道選擇模塊接收所有存儲(chǔ)器BANK的數(shù)據(jù)輸出,并按數(shù)據(jù)所對(duì)應(yīng)的DMA通道ID號(hào)進(jìn)行選擇;接著,數(shù)據(jù)排序模塊接收DMA通道選擇模塊的輸出,通過多級(jí)選擇,將各存儲(chǔ)器BANK數(shù)據(jù)緊密排列;接著,數(shù)據(jù)合并模塊接收數(shù)據(jù)排序模塊的輸出,將多周期內(nèi)各存儲(chǔ)器BANK輸出的數(shù)據(jù)按時(shí)間先后排列在一起;最后,數(shù)據(jù)輸出緩沖模塊接收數(shù)據(jù)合并模塊的輸出,將各存儲(chǔ)器BANK返回?cái)?shù)據(jù)串行化后輸出至外設(shè)DMA通道、內(nèi)核DMA通道,外設(shè)DMA通道、內(nèi)核DMA通道根據(jù)數(shù)據(jù)ID字段匹配識(shí)別讀請(qǐng)求。
[0015]由上述技術(shù)方案可知,本發(fā)明在指令通道中將同一時(shí)刻多通道的請(qǐng)求選擇至目標(biāo)存儲(chǔ)器BANK,后經(jīng)并串行化模塊輸出至仲裁模塊,在獲取仲裁權(quán)后將讀寫請(qǐng)求選擇至相應(yīng)存儲(chǔ)器輸入端口 ;對(duì)于各存儲(chǔ)器BANK返回的讀數(shù)據(jù),同樣按照其所對(duì)應(yīng)的DMA通道號(hào)選擇至相應(yīng)的DMA數(shù)據(jù)通道,再經(jīng)數(shù)據(jù)合并和串行化后輸出。由于經(jīng)多端口訪存控制器輸出的讀數(shù)據(jù)順序與輸入的讀請(qǐng)求不一定相同,在DMA通道一端,需要按照數(shù)據(jù)所附加的ID號(hào)與請(qǐng)求ID相匹配。本發(fā)明為多路DMA通道并發(fā)請(qǐng)求提供了有效的響應(yīng)機(jī)制,兼顧請(qǐng)求響應(yīng)的實(shí)時(shí)性和存儲(chǔ)器帶寬充分利用的特點(diǎn),能夠提高訪存數(shù)據(jù)的吞吐率,減小因?yàn)榈刂窙_突所造成的等待時(shí)間。
【附圖說明】
[0016]圖1為本發(fā)明的電路框圖。
[0017]圖2、3、4、5為本發(fā)明中存儲(chǔ)器陣列、第一請(qǐng)求合并模塊、第一串行化模塊、數(shù)據(jù)合并模塊的電路原理圖。
【具體實(shí)施方式】
[0018]一種用于多處理器的多端口訪存控制器,包括指令通道30,其輸入端分別與多處理器的外設(shè)DMA通道10、內(nèi)核DMA通道20的輸出端相連,其輸出端與仲裁模塊40的輸入端相連,仲裁模塊40的輸出端與存儲(chǔ)器陣列50的輸入端相連,存儲(chǔ)器陣列50的輸出端與數(shù)據(jù)通道60的輸入端相連,數(shù)據(jù)通道60的輸出端分別與多處理器的外設(shè)DMA通道10、內(nèi)核DMA通道20的輸入端相連,如圖1所示。指令通道30用于連接多路DMA請(qǐng)求接口,針對(duì)每個(gè)存儲(chǔ)器BANK串行化讀寫請(qǐng)求,對(duì)于每一個(gè)存儲(chǔ)器BANK均存在這樣一組邏輯;仲裁邏模塊用于按固定優(yōu)先級(jí)判定仲裁結(jié)果;存儲(chǔ)器陣列50是由單口 SRAM所組成的存儲(chǔ)器BANK和存儲(chǔ)器BLOCK,用于響應(yīng)經(jīng)仲裁模塊40輸出的