專利名稱:一種基于同步訪問模式的多端口存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,具體的說提出了一種基于同步訪問模式的多端口存儲(chǔ)器。
背景技術(shù):
在測控、儀器儀表、語音信號(hào)處理和圖像通信領(lǐng)域中往往需要多處理器分工完成數(shù)字信號(hào)處理(DSP)算法和與外部系統(tǒng)的通信、控制、數(shù)據(jù)采集和人機(jī)接口功能。從存儲(chǔ)管理的角度來看,這類多處理器系統(tǒng)可以分為共享存儲(chǔ)多處理器系統(tǒng)和消息傳遞多處理器系統(tǒng)。在消息傳遞多處理器系統(tǒng)中,每個(gè)處理器都有一個(gè)它自己才能訪問的局部存儲(chǔ)器,處理器之間的通訊必須通過顯示的消息傳遞來進(jìn)行。在共享存儲(chǔ)多處理機(jī)系統(tǒng)中,所有的處理器共享主存儲(chǔ)器,每個(gè)處理器都把數(shù)據(jù)存入主存儲(chǔ)器,或者從主存儲(chǔ)器里取出數(shù)據(jù),處理機(jī)之間的通訊可以通過訪問共享存儲(chǔ)器來實(shí)現(xiàn)。一般來說,涉及到大量的數(shù)據(jù)交互的多處理器系統(tǒng)都考慮采用共享存儲(chǔ)方式。多端口存儲(chǔ)器通過內(nèi)置硬件控制邏輯實(shí)現(xiàn)并行訪問,常被用做多處理器系統(tǒng)的共享存儲(chǔ)器。
多個(gè)端口同時(shí)訪問同一存儲(chǔ)單元存在沖突現(xiàn)象,稱之為存儲(chǔ)單元沖突。在一般的多處理器系統(tǒng)中,各個(gè)處理器工作在不同的頻率,對(duì)多端口存儲(chǔ)器進(jìn)行異步訪問,因此市場上的多端口存儲(chǔ)器都是基于異步訪問模式。在異步訪問模式下,各個(gè)端口的讀寫訪問請求存在一定的先后順序,異步多端口存儲(chǔ)器的設(shè)計(jì)普遍采用Busy邏輯控制,嚴(yán)格的根據(jù)訪問的先后順序來處理存儲(chǔ)單元沖突如果連續(xù)的訪問請求存在存儲(chǔ)單元沖突,執(zhí)行排在最前面的訪問,放棄后面的訪問請求并且給出Busy信號(hào)。Busy邏輯控制的優(yōu)點(diǎn)是簡單,缺點(diǎn)在于不夠靈活,發(fā)生存儲(chǔ)單元沖突后缺乏有效的處理手段。
在某些特殊的多處理系統(tǒng)中,各個(gè)處理器在相同的頻率上工作,例如,片上多內(nèi)核芯片的各個(gè)內(nèi)核,它們對(duì)共享存儲(chǔ)器的訪問是同步的;其次處理器通過不同的端口訪問共享存儲(chǔ)器應(yīng)該存在不同的權(quán)限,例如處理器A正在執(zhí)行關(guān)鍵任務(wù),它對(duì)存儲(chǔ)器的訪問不能因?yàn)楹推渌丝诎l(fā)生存儲(chǔ)單元沖突而被打斷?;诖耍疚奶岢鲆环N基于同步訪問模式的多端口存儲(chǔ)器。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于同步訪問模式的多端口存儲(chǔ)器。各端口有獨(dú)立的地址總線,數(shù)據(jù)總線和地址譯碼單元,在同一時(shí)鐘的驅(qū)動(dòng)下,并發(fā)的訪問共享存儲(chǔ)模塊。通過硬件端口優(yōu)先級(jí)和硬件讀寫優(yōu)先設(shè)置來處理存儲(chǔ)單元沖突。
所述的同一時(shí)鐘指整個(gè)多處理器系統(tǒng)共用同一時(shí)鐘(或者同一時(shí)鐘同步),處理器在該時(shí)鐘的驅(qū)動(dòng)下同步的訪問多端口存儲(chǔ)器。
所述的存儲(chǔ)單元沖突包括兩類多個(gè)端口同時(shí)對(duì)同一地址單元執(zhí)行寫操作稱為寫寫沖突;一個(gè)端口執(zhí)行寫操作,一個(gè)或者多個(gè)端口對(duì)同一地址單元執(zhí)行讀操作稱為讀寫沖突。多個(gè)端口同時(shí)對(duì)同一地址單元執(zhí)行讀操作不存在沖突。
所述的硬件端口優(yōu)先級(jí)指每個(gè)端口都具有優(yōu)先級(jí),用戶可以使用靜態(tài)的優(yōu)先級(jí)設(shè)置,也可以在訪問存儲(chǔ)器的過程中動(dòng)態(tài)修改。端口之間出現(xiàn)寫寫沖突時(shí),優(yōu)先級(jí)最高的端口獲得寫操作權(quán)利;其它與之沖突的端口放棄寫操作并且給出寫失敗信號(hào)。
所述的硬件讀寫優(yōu)先設(shè)置指端口之間出現(xiàn)讀寫沖突時(shí),仲裁先讀后寫或者先寫后讀的依據(jù)。先讀后寫指先將要讀出的數(shù)據(jù)鎖存到輸入輸出模塊中的鎖存器中,然后在執(zhí)行寫操作的同時(shí)將鎖存器中的數(shù)據(jù)輸出到外部數(shù)據(jù)總線上;先寫后讀指將需要寫入的數(shù)據(jù)通過輸入輸出模塊中的讀寫數(shù)據(jù)總線直接鎖存輸出到外部數(shù)據(jù)總線上。
本發(fā)明的使用方式為共享存儲(chǔ)器方式,利用硬件端口優(yōu)先級(jí)可以實(shí)現(xiàn)靈活的存儲(chǔ)管理策略。如前面提到的,某個(gè)時(shí)段某處理器執(zhí)行關(guān)鍵任務(wù),該處理器訪問的端口在該時(shí)段具有最高的硬件端口優(yōu)先級(jí),保證該處理器對(duì)存儲(chǔ)器的訪問不被打斷。
如上所述,采用本發(fā)明的效果如下本發(fā)明支持多個(gè)處理器獨(dú)立并發(fā)的訪問存儲(chǔ)器,擁有高速的數(shù)據(jù)傳輸速率。
本發(fā)明提供硬件端口優(yōu)先級(jí)處理寫寫沖突;提供硬件讀寫優(yōu)先設(shè)置處理讀寫沖突。對(duì)于可能存在的存儲(chǔ)單元沖突,用戶可以事先給處理策略,相對(duì)于Busy邏輯控制具有一定的靈活性。
圖1-以四端口為例的頂層邏輯結(jié)構(gòu)。
圖2-Memory array模塊中的存儲(chǔ)單元邏輯設(shè)計(jì)。
圖3-I/O模塊邏輯設(shè)計(jì)。
圖4-flow-through模式下讀操作時(shí)序。
圖5-pipe-line模式下讀操作時(shí)序。
圖6-OE模式下,讀操作切換到寫操作時(shí)序。
圖7-非OE模式下,讀操作切換到寫操作時(shí)序。
圖8-讀寫沖突時(shí)序。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
以四端口為例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
多端口存儲(chǔ)器邏輯上分為4個(gè)模塊Memory share模塊,Addressdecode模塊,I/O模塊,Arbitration logic模塊,如圖1。4個(gè)模塊之間的關(guān)系是Memory share模塊提供共享存儲(chǔ)單元陣列,Address decode模塊完成地址譯碼,I/O模塊用于控制雙向數(shù)據(jù)總線數(shù)據(jù)的輸入輸出,Arbitration logic根據(jù)用戶設(shè)定的端口優(yōu)先級(jí)和讀寫優(yōu)先級(jí)來處理存儲(chǔ)單元沖突。
本發(fā)明中的Arbitration logic模塊負(fù)責(zé)存儲(chǔ)單元沖突檢測和處理。對(duì)于寫寫沖突,比較發(fā)生沖突的端口之間的端口優(yōu)先級(jí),優(yōu)先級(jí)高的端口獲得寫操作的權(quán)利,放棄寫操作的端口給出操作失敗信號(hào)。對(duì)于讀寫沖突,判斷此時(shí)的讀寫優(yōu)先級(jí),如果寫優(yōu)先,在執(zhí)行寫操作的同時(shí)直接將要寫入的數(shù)據(jù)輸出到執(zhí)行讀操作的端口;如果讀優(yōu)先,先鎖存要讀取的數(shù)據(jù),然后在執(zhí)行寫操作的同時(shí)將鎖存器的數(shù)據(jù)輸出到執(zhí)行讀操作的端口。
本發(fā)明中的Memory share模塊具有多條獨(dú)立的內(nèi)部雙向數(shù)據(jù)總線,每個(gè)存儲(chǔ)單元都連接到多條內(nèi)部雙向數(shù)據(jù)總線,底層物理上提供了多端口并發(fā)訪問的支持。如圖2,每個(gè)存儲(chǔ)單元包括一組用于存儲(chǔ)數(shù)據(jù)的位寄存器,兩組用于控制位寄存器和內(nèi)部數(shù)據(jù)總線之間數(shù)據(jù)交互的三態(tài)門,兩組產(chǎn)生控制三態(tài)門信號(hào)的或門,一組產(chǎn)生寫有效信號(hào)的與門。地址選擇信號(hào)(AS)包括CAS和RAS,分別為列選擇信號(hào)和行選擇信號(hào)。r/w為仲裁模塊產(chǎn)生的讀寫信號(hào),需要注意的是,圖1和圖2中的r/w讀寫不相同。寫寫沖突時(shí)必然有端口需要放棄寫操作,為了不引入額外信號(hào)來表示讀操作和寫操作以外的空操作,仲裁模塊將放棄的寫操作改為對(duì)同一地址的讀操作,稱之為假讀。引入假讀將寫寫沖突轉(zhuǎn)變成讀寫沖突,而讀寫沖突并不會(huì)影響存儲(chǔ)單元中數(shù)據(jù)的完整性。
本發(fā)明中的I/O模塊負(fù)責(zé)控制雙向數(shù)據(jù)總線的輸入輸出,提供靈活的輸出模式,如圖3。每個(gè)端口都有兩個(gè)寄存器分別用于鎖存寫入數(shù)據(jù)和鎖存輸出數(shù)據(jù)。執(zhí)行寫操作時(shí),右邊的三態(tài)門開啟,左邊的三態(tài)門關(guān)閉,外部總線上的數(shù)據(jù)流入內(nèi)部數(shù)據(jù)總線;執(zhí)行讀操作時(shí)右邊的三態(tài)門關(guān)閉,左邊的三態(tài)門開,讀出的數(shù)據(jù)流向外部數(shù)據(jù)總線。需要寫入的數(shù)據(jù)都會(huì)被鎖存,而讀出的數(shù)據(jù)會(huì)在F/P_en信號(hào)的控制下,要么鎖存輸出要么繞過寄存器直接輸出到外部數(shù)據(jù)總線上。當(dāng)發(fā)生讀寫沖突且讀優(yōu)先時(shí),需要寫入的數(shù)據(jù)并沒有直接寫入目標(biāo)存儲(chǔ)單元而是先被鎖存在I/O輸入輸出模塊的寄存器中,在下一個(gè)時(shí)鐘上升沿寫入,讀操作不會(huì)受到寫操作的影響??刂茢?shù)據(jù)輸出到外部數(shù)據(jù)總線的三態(tài)門由out_en信號(hào)驅(qū)動(dòng),該信號(hào)可能是圖1中的oe信號(hào)或者r/w信號(hào)。
硬件上提供端口之間交換數(shù)據(jù)的讀寫數(shù)據(jù)總線(RWB)用于解決讀寫沖突且寫優(yōu)先的情況。圖3中RWB由r_en和w_en控制,這兩個(gè)信號(hào)由仲裁模塊產(chǎn)生,低電平有效。當(dāng)發(fā)生讀寫沖突且寫優(yōu)先時(shí),獲得寫操作權(quán)利的端口將置r_en為低電平,其它端口的r_en保持高電平,寫入的數(shù)據(jù)出現(xiàn)在RWB上;發(fā)生讀寫沖突且執(zhí)行讀操作的端口將置w_en為低電平,使得RWB上的數(shù)據(jù)能夠流向外部數(shù)據(jù)總線,直接把要寫入的數(shù)據(jù)輸出到執(zhí)行讀操作的端口。信號(hào)cell_read_en也通過仲裁模塊產(chǎn)生。cell_read_en和w_en不能同時(shí)為低電平,其含義是,輸出到外部數(shù)據(jù)總線上的數(shù)據(jù)要么是來自于存儲(chǔ)單元,要么來自于RWB。
讀寫優(yōu)先通過管腳rw_priority_en設(shè)定。存儲(chǔ)器各個(gè)端口具有靜態(tài)優(yōu)先級(jí)設(shè)置,按照port0->port1->port2順序優(yōu)先級(jí)依此遞減。管腳set_en用于選擇是否采用靜態(tài)優(yōu)先級(jí)設(shè)置。set_en為低電平表示最高優(yōu)先級(jí)的端口的id號(hào)通過管腳id_0,id_1給出。
OE管腳控制OE模式的設(shè)置。某些處理器,比如intel8051系列,分別輸出rd(讀信號(hào))和wd(寫信號(hào))。在這種情況下,處理器的rd信號(hào)連接存儲(chǔ)器的oe信號(hào),處理器的wd信號(hào)連接存儲(chǔ)器的r/w信號(hào),rd信號(hào)控制讀出的數(shù)據(jù)輸出到外部總線,我們稱這種模式為OE模式。某些處理器只輸出r/w信號(hào),高電平和低電平分別表示讀操作和寫操作,在這種情況下處理器的r/w信號(hào)連接存儲(chǔ)器的r/w信號(hào),同步后的r/w信號(hào)控制讀出的數(shù)據(jù)輸出到外部總線,我們稱這種模式為非OE模式。
讀出的數(shù)據(jù)直接輸出到外部數(shù)據(jù)總線上輸出為flow-through模式,讀出的數(shù)據(jù)在下個(gè)周期的上升沿鎖存輸出到外部數(shù)據(jù)總線為pipeline模式。F/P管腳用于設(shè)置flow-through模式和pipeline模式兼容不同的處理器。
寫操作在第一個(gè)周期的上升沿鎖存地址,寫入數(shù)據(jù)和讀寫信號(hào)。在第二個(gè)周期的上升沿,把數(shù)據(jù)寫入相應(yīng)的存儲(chǔ)單元。我們稱之為緩寫。
讀操作在第一個(gè)周期的上升沿鎖存地址和讀寫信號(hào)。如果工作在flow-through模式下,數(shù)據(jù)滯后第一個(gè)周期上升沿一段時(shí)間后出現(xiàn)在外部數(shù)據(jù)總線上,見圖4;如果工作在pipeline模式下,第二個(gè)周期的上升沿鎖存輸出數(shù)據(jù),見圖5。
在OE模式下,讀操作切換到寫操作需要插入一個(gè)讀無效周期,見圖6;在非OE模式下,讀操作切換到寫操作需要插入一個(gè)讀無效周期和一個(gè)寫無效周期,見圖7。
在第一個(gè)周期的上升沿檢測到存在讀寫沖突,執(zhí)行寫操作的端口在第二個(gè)周期的上升沿將數(shù)據(jù)寫入,與此同時(shí)在第二個(gè)周期的上升沿把要寫入的數(shù)據(jù)鎖存輸出到執(zhí)行讀操作的端口,見圖8。
存儲(chǔ)器進(jìn)行連續(xù)的數(shù)據(jù)讀取或者連續(xù)的數(shù)據(jù)寫入操作,平均一個(gè)周期完成一次訪問操作;在讀寫操作頻繁交替的情況下,OE模式平均1.5個(gè)周期完成一次訪問操作;非OE模式平均2個(gè)周期完成一次訪問操作。
權(quán)利要求
1.一種基于同步訪問模式的多端口存儲(chǔ)器,其特征在于各端口有獨(dú)立的地址總線,數(shù)據(jù)總線和地址譯碼單元,在同一時(shí)鐘的驅(qū)動(dòng)下,并發(fā)的訪問共享存儲(chǔ)模塊;通過硬件端口優(yōu)先級(jí)和硬件讀寫優(yōu)先設(shè)置來處理存儲(chǔ)單元沖突。
2.如權(quán)利要求1所述的一種基于同步訪問模式的多端口存儲(chǔ)器,其特征在于所述的同一時(shí)鐘指整個(gè)多處理器系統(tǒng)共用同一時(shí)鐘(或者同一時(shí)鐘同步),處理器在該時(shí)鐘的驅(qū)動(dòng)下同步的訪問多端口存儲(chǔ)器。
3.如權(quán)利要求1所述的一種基于同步訪問模式的多端口存儲(chǔ)器,其特征在于所述的存儲(chǔ)單元沖突包括兩類多個(gè)端口同時(shí)對(duì)同一地址單元執(zhí)行寫操作稱為寫寫沖突;一個(gè)端口執(zhí)行寫操作,一個(gè)或者多個(gè)端口對(duì)同一地址單元執(zhí)行讀操作稱為讀寫沖突。
4.如權(quán)利要求1所述的一種基于同步訪問模式的多端口存儲(chǔ)器,其特征在于所述的硬件端口優(yōu)先級(jí)指每個(gè)端口都具有優(yōu)先級(jí),用戶可以使用靜態(tài)的優(yōu)先級(jí)設(shè)置,也可以在訪問存儲(chǔ)器的過程中動(dòng)態(tài)修改。端口之間出現(xiàn)寫寫沖突時(shí),優(yōu)先級(jí)最高的端口獲得寫操作權(quán)利;其它與之沖突的端口放棄寫操作并且給出寫失敗信號(hào)。
5.如權(quán)利要求1所述的一種基于同步訪問模式的多端口存儲(chǔ)器,其特征在于所述的硬件讀寫優(yōu)先設(shè)置指端口之間出現(xiàn)讀寫沖突時(shí),仲裁先讀后寫或者先寫后讀的依據(jù);先讀后寫指先將要讀出的數(shù)據(jù)鎖存到輸入輸出模塊中的鎖存器中,然后在執(zhí)行寫操作的同時(shí)將鎖存器中的數(shù)據(jù)輸出到外部數(shù)據(jù)總線上;先寫后讀指將需要寫入的數(shù)據(jù)通過輸入輸出模塊中的讀寫數(shù)據(jù)總線直接鎖存輸出到外部數(shù)據(jù)總線上。
全文摘要
本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,具體地說提出了一種基于同步訪問模式的多端口存儲(chǔ)器。各端口有獨(dú)立的地址總線,數(shù)據(jù)總線和地址譯碼單元,在同一時(shí)鐘的驅(qū)動(dòng)下,并發(fā)的訪問共享存儲(chǔ)模塊;通過硬件端口優(yōu)先級(jí)和硬件讀寫優(yōu)先設(shè)置來處理存儲(chǔ)單元沖突。
文檔編號(hào)G06F15/167GK101030180SQ200710065210
公開日2007年9月5日 申請日期2007年4月6日 優(yōu)先權(quán)日2007年4月6日
發(fā)明者石峰, 王佐, 薛立成 申請人:北京理工大學(xué)