亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

高速流水線中長延時(shí)多端口sram的快速訪問方法

文檔序號(hào):6759623閱讀:275來源:國知局
專利名稱:高速流水線中長延時(shí)多端口sram的快速訪問方法
技術(shù)領(lǐng)域
本發(fā)明涉及多端口靜態(tài)隨機(jī)存取存儲(chǔ)器SRAM(Static Random AccessMemory)的訪問方法,尤其是應(yīng)用于高主頻深度流水線中的長延時(shí)隨機(jī)存取存儲(chǔ)器的訪問方法。
背景技術(shù)
存儲(chǔ)器是計(jì)算機(jī)的核心部件之一,其性能直接關(guān)系到整個(gè)計(jì)算機(jī)系統(tǒng)性能的高低。存儲(chǔ)系統(tǒng)設(shè)計(jì)始終是計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)的關(guān)鍵問題之一。長期以來,由于發(fā)展的不平衡性,處理器與主存之間存在巨大的速度上的差距。為了解決存儲(chǔ)瓶頸的問題,現(xiàn)代計(jì)算機(jī)都在處理器與主存之間設(shè)置一級(jí)或多級(jí)由SRAM組成的高速緩沖存儲(chǔ)器Cache。Cache對(duì)于提高整個(gè)計(jì)算機(jī)系統(tǒng)的性能有著重要的意義,是一個(gè)不可缺少的部件。流水線結(jié)構(gòu)的存儲(chǔ)系統(tǒng)通過將訪問請(qǐng)求流水化,有效地隱藏訪問延遲,顯著提高系統(tǒng)的存儲(chǔ)帶寬,故被廣泛采用。
SRAM盡管相對(duì)于其他類型存儲(chǔ)器,速度更快、訪問時(shí)間是納秒(Nanosecond,ns)級(jí),但從實(shí)際應(yīng)用看,仍不能滿足高主頻流水線對(duì)存儲(chǔ)訪問延遲的要求,如千兆赫茲以上的流水線的時(shí)鐘周期只有零點(diǎn)幾個(gè)納秒,比SRAM的訪問延遲要小1~10倍。因此,SRAM訪問延遲在很大程度上直接影響整個(gè)流水線的性能,研究加快SRAM訪問速度的方法有著重要的意義。
目前,在高速流水線中訪問SRAM的通用方法有(1)等待SRAM訪問操作完成后再執(zhí)行其他操作,這是目前國內(nèi)普遍使用的。這種方法每次訪問均需要等待數(shù)個(gè)時(shí)鐘周期,不能連續(xù)訪問,性能較差;(2)將SRAM數(shù)據(jù)寬度按訪問周期與系統(tǒng)時(shí)鐘周期的比率增大數(shù)倍,一次訪問可以讀取多個(gè)請(qǐng)求的數(shù)據(jù)。這種方法在相鄰訪問的地址連續(xù)時(shí),可以緩解流水線中數(shù)據(jù)訪問的壓力,但在實(shí)際應(yīng)用中,由于很難保證相鄰地址訪問,因此實(shí)際帶寬利用率并不高。例如,在CPU Cache設(shè)計(jì)中,相鄰訪問的地址為A、B,如果B不等于A+1,那么B地址的數(shù)據(jù)就不能充分利用訪問A地址所預(yù)取的數(shù)據(jù),因此,仍然需要暫停訪問流水線;(3)復(fù)制多個(gè)SRAM,增大訪問數(shù)據(jù)寬度,這種方法與第二種方法相似,本質(zhì)上屬于第二種方法,且需要增加大量額外資源。因此,如何同時(shí)解決上述方法的缺陷在工程實(shí)現(xiàn)中顯得尤為重要。
SRAM有單端口SRAM和多端口SRAM兩種。多端口SRAM與單端口SRAM相比,訪問延遲稍長,但多端口SRAM對(duì)同一存儲(chǔ)體有多套讀寫控制電路,各端口之間可以是并行的、不分主次的關(guān)系,即每個(gè)端口都可執(zhí)行讀寫操作;也可以是有主有次的關(guān)系,即某些端口可執(zhí)行讀寫操作而其它端口只能執(zhí)行讀操作。如果能夠充分利用多個(gè)端口的訪問特性,則可以實(shí)現(xiàn)資源復(fù)制,使訪問重疊,達(dá)到減少訪問延遲的目的。因此研究對(duì)多端口SRAM的快速訪問方法對(duì)提升流水線的總體性能具有重要意義。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是針對(duì)高主頻流水線中多端口SRAM訪問延時(shí)過長的問題,利用多端口SRAM的應(yīng)用特性,提供一種對(duì)多端口SRAM的快速訪問方法,使SRAM訪問流水化,隱藏?cái)?shù)據(jù)訪問延遲,充分開發(fā)多端口SRAM的存儲(chǔ)帶寬,提高數(shù)據(jù)的訪問效率,從而大幅度提升流水線的總體性能。
本發(fā)明的技術(shù)方案是設(shè)計(jì)一套時(shí)鐘產(chǎn)生電路、SRAM端口選擇器、SRAM存儲(chǔ)體和出口寄存器組四個(gè)部分組成的多端口SRAM訪問控制邏輯,采用這個(gè)訪問控制邏輯對(duì)多端口SRAM進(jìn)行訪問,提高數(shù)據(jù)訪問效率。
時(shí)鐘產(chǎn)生電路是基于鎖相環(huán)的多時(shí)鐘生成部件,其設(shè)計(jì)方法是它由一個(gè)或多個(gè)鎖相環(huán)組成,以系統(tǒng)時(shí)鐘CLK_S作為輸入,輸出n(n為SRAM端口個(gè)數(shù))個(gè)周期為n*Tclk_S的同頻時(shí)鐘信號(hào)CLK_1..n。這n個(gè)時(shí)鐘信號(hào)的相位依次相差一個(gè)系統(tǒng)時(shí)鐘周期時(shí)間Tclk_S。
SRAM端口選擇器的主要功能是選擇SRAM可用端口和設(shè)置輸出端口有效信號(hào),其設(shè)計(jì)方法是它由空閑端口判斷邏輯和n級(jí)輸出數(shù)據(jù)有效信號(hào)站組成。每一級(jí)輸出數(shù)據(jù)有效信號(hào)站由n個(gè)寄存器組成,分別對(duì)應(yīng)于SRAM存儲(chǔ)體的n個(gè)端口,用于表示該端口數(shù)據(jù)是否有效。在系統(tǒng)時(shí)鐘CLKS的每個(gè)上升沿,空閑端口判斷邏輯對(duì)SRAM各端口時(shí)鐘信號(hào)CLK_1..n進(jìn)行采樣,根據(jù)采樣到的時(shí)鐘狀態(tài)獲得空閑端口號(hào)i(1≤i≤n),由于端口時(shí)鐘之間的相位關(guān)系是固定的,當(dāng)?shù)弥骋粫r(shí)刻一個(gè)端口時(shí)鐘的相位值時(shí),其他端口時(shí)鐘在此刻的相位也就隨之確定了,當(dāng)各端口時(shí)鐘的時(shí)鐘周期都為n*Tclk_S,且相位依次相差一個(gè)系統(tǒng)時(shí)鐘周期Tclk_S時(shí),同一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)有且只有一個(gè)端口時(shí)鐘出現(xiàn)上升沿跳變,與之對(duì)應(yīng)的端口就是空閑端口;如果是寫請(qǐng)求(RW為0),空閑端口判斷邏輯置空閑端口號(hào)i的寫使能信號(hào)Writei(i為端口號(hào)),SRAM存儲(chǔ)體的工作端口i在寫使能信號(hào)Writei的驅(qū)動(dòng)下,將請(qǐng)求數(shù)據(jù)Data寫入SRAM存儲(chǔ)體中;如果是讀請(qǐng)求(RW為1),空閑端口判斷邏輯生成對(duì)應(yīng)的輸出數(shù)據(jù)有效信號(hào)DValidi1(i為端口號(hào)),寫入輸出有效信號(hào)站的第1站,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期之后,輸出數(shù)據(jù)有效信號(hào)從第一站傳入到第二站(即DValidi2為1),依次傳遞,n個(gè)系統(tǒng)時(shí)鐘周期后,該輸出有效信號(hào)到達(dá)SRAM端口選擇器的出口(即DValidin為1),此時(shí),由于SRAM端口的時(shí)鐘周期為n*Tclk_S,對(duì)應(yīng)的空閑SRAM端口i在一個(gè)端口時(shí)鐘周期(即n個(gè)系統(tǒng)時(shí)鐘周期)后,將輸出數(shù)據(jù)采樣到輸出端口i中寄存,與數(shù)據(jù)有效信號(hào)DValidin一起送到出口寄存器組。
SRAM存儲(chǔ)體與傳統(tǒng)方法中的SRAM存儲(chǔ)體邏輯結(jié)構(gòu)基本相同,只是擁有更多的訪問端口。
出口寄存器組用于寄存SRAM存儲(chǔ)體端口流出的有效數(shù)據(jù),其設(shè)計(jì)方法是它由輸出寄存器Reg_out、輸出數(shù)據(jù)暫存隊(duì)列Tmp_fifo、Fifo控制邏輯和兩個(gè)多路選擇器第一MUX和第二MUX構(gòu)成。第一MUX以SRAM存儲(chǔ)體的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的n個(gè)輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn作為控制輸入,選擇有效的端口數(shù)據(jù)送到Tmp_fifo的輸入端;Fifo控制邏輯以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn作為控制輸入,它負(fù)責(zé)產(chǎn)生Tmp_fifo的寫使能信號(hào)WrEn和讀使能信號(hào)RdEn以及隊(duì)列的空狀態(tài)信號(hào)Fifo_Empty,并使用內(nèi)部計(jì)數(shù)器cnt對(duì)Tmp_fifo的有效數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù);輸出數(shù)據(jù)暫存隊(duì)列tmp_fifo有n-1項(xiàng),它以第一MUX選擇的有效端口數(shù)據(jù)作為數(shù)據(jù)輸入,以Fifo控制邏輯輸出的寫使能信號(hào)WrEn和讀使能信號(hào)RdEn作為控制輸入,按順序?qū)?shù)據(jù)暫存和讀出;第二MUX以Tmp_fifo輸出數(shù)據(jù)及SRAM的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn和Tmp_fifo空狀態(tài)信號(hào)Fifo_Empty作為控制輸入,選擇有效數(shù)據(jù)送到輸出寄存器Reg_out;Reg_out位寬與每次訪問的數(shù)據(jù)位寬相同,也與每個(gè)SRAM訪問數(shù)據(jù)位寬相同,它以第二MUX的輸出數(shù)據(jù)作為數(shù)據(jù)輸入,以流水線停頓信號(hào)Stall作為控制輸入,在流水線不停頓時(shí)用第二MUX的輸出數(shù)據(jù)更新寄存器的內(nèi)容。
第一MUX輸出數(shù)據(jù)寫入Tmp_fifo需要滿足如下兩個(gè)條件之一(1)流水線停頓信號(hào)stall有效且存在DValidin(1≤i ≤n)有效;(2)流水線未停頓(即stall為0),但Tmp_fifo非空(即Fifo_Empty為0)且存在DValidin(1≤i≤n)有效。因此Tmp_fifo的寫使能信號(hào)WrEn的生成邏輯為WrEn=(DValid1DValid2····DValidn)(Fifo_Emptystall);其中,F(xiàn)ifo_Empty有效即Fifo控制邏輯中的有效數(shù)據(jù)計(jì)數(shù)器cnt為0,即Fifo_Empty=Cnt[i]…cnt
當(dāng)流水線不停頓(即stall為0)且Tmp_fifo非空(即Fifo_Empty為0)時(shí),暫存隊(duì)列的讀使能信號(hào)RdEn有效,即RdEn=(Fifo_Emptystall);計(jì)數(shù)器cnt的生成邏輯為INC=cnt+1DEC=cnt-1cnt[k]=(WrEnRdEnINC[k])(WrEnRdEnDEC[k]);(0≤K≤i)當(dāng)寫使能信號(hào)WrEn有效時(shí),暫存隊(duì)列Tmp_fifo將第一MUX輸出的有效數(shù)據(jù)寫入隊(duì)列的頭部,當(dāng)讀使能信號(hào)RdEn有效時(shí),Tmp_fifo將隊(duì)列尾部的數(shù)據(jù)送到暫存隊(duì)列tmp_fifo的輸出端。
當(dāng)Tmp_fifo輸出數(shù)據(jù)有效時(shí),第二MUX優(yōu)先選擇Tmp_fifo的輸出數(shù)據(jù)。第二MUX的選擇邏輯為如果Tmp_fifo隊(duì)列非空(即Fifo_Empty為0),選擇Tmp_fifo的輸出數(shù)據(jù);如果Tmp_fifo隊(duì)列為空(即Fifo_Empty為1),則選擇SRAM端口的有效輸出數(shù)據(jù)。
流水線不停頓時(shí),則第二MUX的輸出數(shù)據(jù)連續(xù)更新Reg_out的內(nèi)容,供外部使用。
采用多端口SRAM訪問控制邏輯對(duì)SRAM進(jìn)行訪問的過程是1.時(shí)鐘產(chǎn)生電路以CLK_S作為輸入,輸出n個(gè)時(shí)鐘信號(hào)CLK1..n,作為SRAM存儲(chǔ)體各個(gè)讀/寫端口的工作時(shí)鐘,并作為SRAM端口選擇器的輸入信號(hào)。各個(gè)端口在對(duì)應(yīng)的CLKi(1≤i≤n)驅(qū)動(dòng)下工作,除SRAM存儲(chǔ)體外其他部分的邏輯統(tǒng)一由CLR_S驅(qū)動(dòng);2.外部請(qǐng)求Rqt_Valid有效時(shí),SRAM端口選擇器將外部讀寫請(qǐng)求轉(zhuǎn)化為SRAM的讀寫操作信號(hào),根據(jù)空閑端口判斷邏輯獲取可用的空閑端口,如果是寫請(qǐng)求(即RW為0),置SRAM的i號(hào)端口的寫使能信號(hào)Writei(i為空閑端口號(hào));如果是讀請(qǐng)求(即RW為1),置相應(yīng)空閑端口的輸出有效信號(hào)Dvalidi1,寫入輸出有效信號(hào)站的第1站,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期之后,輸出數(shù)據(jù)有效信號(hào)從第一站傳入到第二站(即DValidi2為1),依次傳遞,n個(gè)系統(tǒng)時(shí)鐘周期后,該輸出有效信號(hào)到達(dá)SRAM端口選擇器的出口(即DValidin為1)。
3.SRAM存儲(chǔ)體在每個(gè)系統(tǒng)時(shí)鐘周期都有一個(gè)工作端口,工作端口i(1≤i≤n)對(duì)輸入控制信號(hào)進(jìn)行判斷,當(dāng)Writei有效時(shí),將請(qǐng)求數(shù)據(jù)Data寫入存儲(chǔ)體中;當(dāng)Writei無效時(shí),將與請(qǐng)求地址對(duì)應(yīng)的數(shù)據(jù)讀出,在一個(gè)端口時(shí)鐘周期(即n個(gè)系統(tǒng)時(shí)鐘周期)后,輸出數(shù)據(jù)被采樣到輸出端口i中寄存,此時(shí)對(duì)應(yīng)的數(shù)據(jù)有效信號(hào)DValidin也正好到達(dá)SRAM端口選擇器的出口,與輸出數(shù)據(jù)一起送到出口寄存器組。
4.出口寄存器組以SRAM存儲(chǔ)體n個(gè)端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器輸出的有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn和流水線暫停信號(hào)stall作為控制輸入,將SRAM存儲(chǔ)體輸出的有效數(shù)據(jù)寄存在暫存隊(duì)列Tmp_fifo或出口寄存器Reg_out中,然后順序提交給外部訪問者。
采用本發(fā)明可以達(dá)到以下技術(shù)效果有效降低數(shù)據(jù)訪問延遲,提高存儲(chǔ)帶寬。設(shè)SRAM的訪問周期為tAC,系統(tǒng)的時(shí)鐘周期為Tclk_S,對(duì)于連續(xù)的a個(gè)讀請(qǐng)求,按照傳統(tǒng)的SRAM訪問方法,從發(fā)出第一個(gè)讀請(qǐng)求到獲取最后一個(gè)讀數(shù)據(jù)的時(shí)間為tR=a*tAC,而采用本發(fā)明進(jìn)行SRAM訪問tR=(n+a)×Tclk_S(第1拍發(fā)出的請(qǐng)求需在n個(gè)系統(tǒng)時(shí)鐘周期后才能取得數(shù)據(jù))。相比于傳統(tǒng)的訪問方法,本發(fā)明獲得的加速比E為E=a×tACtR=a×tAC(n+a)×Tclk_S]]>當(dāng)a遠(yuǎn)大于n時(shí),有E≈tAC/Tclk_S。對(duì)于長延時(shí)SRAM,tAC大于tclk_s,使用本發(fā)明進(jìn)行訪問明顯優(yōu)于傳統(tǒng)訪問方法。


圖1是背景技術(shù)中第一種和第二種SRAM訪問方法所用訪問電路的邏輯結(jié)構(gòu)圖。
圖2是本發(fā)明多端口SRAM訪問控制邏輯示意圖。
圖3是采用了本發(fā)明的四端口SRAM的各端口時(shí)鐘頻率與相位關(guān)系圖。
具體實(shí)施例方式
圖1是背景技術(shù)中第一種和第二種SRAM訪問方法所用訪問電路的邏輯結(jié)構(gòu)圖,這種訪問電路由SRAM存儲(chǔ)體、空閑周期判斷電路和輸出寄存器組成。SRAM存儲(chǔ)體(一般是單端口)保存外部寫入的數(shù)據(jù);空閑周期判斷電路根據(jù)當(dāng)前等待周期計(jì)數(shù)器的狀態(tài)判斷SRAM是否處于忙狀態(tài),如果不忙則可以服務(wù)新的外部請(qǐng)求;輸出寄存器在輸出數(shù)據(jù)有效時(shí)將SRAM輸出的數(shù)據(jù)寄存,返回給外部使用者。每次訪問,空閑周期判斷電路控制訪問等待,等待其間不能服務(wù)新的請(qǐng)求,極大地影響了總體訪問性能。
圖2是本發(fā)明多端口SRAM訪問控制邏輯示意圖。多端口SRAM訪問控制邏輯包括相位時(shí)鐘產(chǎn)生電路、SRAM端口選擇器、SRAM存儲(chǔ)體和出口寄存器組四個(gè)部分。
相位時(shí)鐘產(chǎn)生電路由一個(gè)或多個(gè)鎖相環(huán)組成,以系統(tǒng)時(shí)鐘CLK_S作為輸入,輸出n(n為SRAM端口個(gè)數(shù))個(gè)周期為n*Tclk_S的同頻時(shí)鐘信號(hào)。這n個(gè)時(shí)鐘信號(hào)的相位依次相差一個(gè)系統(tǒng)時(shí)鐘周期時(shí)間Tclk_S。
SRAM端口選擇器由空閑端口判斷邏輯和n級(jí)輸出數(shù)據(jù)有效信號(hào)站組成。每一級(jí)輸出數(shù)據(jù)有效信號(hào)站由n個(gè)寄存器組成,分別對(duì)應(yīng)于存儲(chǔ)體的n個(gè)端口,用于表示該端口數(shù)據(jù)是否有效。在系統(tǒng)時(shí)鐘CLK_S的每個(gè)上升沿,空閑端口判斷邏輯對(duì)SRAM各端口時(shí)鐘信號(hào)CLK_1..n進(jìn)行采樣,根據(jù)采樣到的時(shí)鐘狀態(tài)獲取空閑端口號(hào)i;如果是寫請(qǐng)求(RW為0),端口選擇器置空閑端口號(hào)i的寫使能信號(hào)Writei(i為端口號(hào)),SRAM存儲(chǔ)體的工作端口i在寫使能信號(hào)Writei的驅(qū)動(dòng)下,將請(qǐng)求數(shù)據(jù)Data寫入SRAM存儲(chǔ)體中;如果是讀請(qǐng)求(RW為1),端口選擇器生成對(duì)應(yīng)的輸出數(shù)據(jù)有效信號(hào)DValidi1(i為端口號(hào)),寫入輸出有效信號(hào)站的第1站,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期之后,輸出數(shù)據(jù)有效信號(hào)從第一站傳入到第二站(即DValidi2為1),依次傳遞,n個(gè)系統(tǒng)時(shí)鐘周期后,該輸出有效信號(hào)到達(dá)端口選擇器的出口(即DValidin為1),此時(shí),由于SRAM端口的時(shí)鐘周期為n*Tclk_S,對(duì)應(yīng)的空閑SRAM端口i在一個(gè)端口時(shí)鐘周期(即n個(gè)系統(tǒng)時(shí)鐘周期)后,將輸出數(shù)據(jù)采樣到輸出端口i中寄存,與數(shù)據(jù)有效信號(hào)DValidin一起送到到出口寄存器組。再配合外部請(qǐng)求有效信號(hào)Rqt_valid、請(qǐng)求類型RW和流水線停頓信號(hào)stall的狀態(tài),可以相應(yīng)地生成各端口輸出數(shù)據(jù)的有效信號(hào)DValidi(1≤i≤n),對(duì)于n端口的SRAM,DValidi信號(hào)需要寄存n站,分別為DValidi1,DValidi2…DValidin,這n站寄存器不受stall信號(hào)控制,每一個(gè)系統(tǒng)時(shí)鐘周期有效信號(hào)都更新到下一寄存器,在n個(gè)系統(tǒng)周期后到達(dá)SRAM端口選擇器的出口,供出口寄存器組使用。
SRAM存儲(chǔ)體與傳統(tǒng)方法中的SRAM存儲(chǔ)體邏輯結(jié)構(gòu)基本相同,只是擁有更多的訪問端口。
出口寄存器組由輸出寄存器Reg_out、輸出數(shù)據(jù)暫存隊(duì)列Tmp_fifo、Fifo控制邏輯和兩個(gè)多路選擇器第一MUX和第二MUX構(gòu)成。第一MUX以SRAM存儲(chǔ)體的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的n個(gè)輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn作為控制輸入,選擇有效的端口數(shù)據(jù)送到Tmp_fifo的輸入端;Fifo控制邏輯以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn作為控制輸入,它負(fù)責(zé)產(chǎn)生Tmp_fifo的寫使能信號(hào)WrEn和讀使能信號(hào)RdEn以及隊(duì)列的空狀態(tài)信號(hào)Fifo_Empty,并使用內(nèi)部計(jì)數(shù)器cnt對(duì)Tmp_fifo的有效數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù);輸出數(shù)據(jù)暫存隊(duì)列tmp_fifo有n-1項(xiàng),它以第一MUX選擇的有效端口數(shù)據(jù)做為數(shù)據(jù)輸入,以Fifo控制邏輯輸出的寫使能信號(hào)WrEn和讀使能信號(hào)RdEn作為控制輸入,按順序?qū)?shù)據(jù)暫存和讀出;第二MUX以Tmp_fifo輸出數(shù)據(jù)及SRAM的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n…Dvalidnn和Tmp_fifo空狀態(tài)信號(hào)Fifo_Empty作為控制輸入,選擇有效數(shù)據(jù)送到輸出寄存器Reg_out;Reg_out位寬與每次訪問的數(shù)據(jù)位寬相同,也與每個(gè)SRAM訪問數(shù)據(jù)位寬相同,它以第二MUX的輸出數(shù)據(jù)作為數(shù)據(jù)輸入,以流水線停頓信號(hào)Stall作為控制輸入,在流水線不停頓時(shí)用第二MUX的輸出數(shù)據(jù)更新寄存器的值。
圖3是采用本發(fā)明設(shè)計(jì)的四端口SRAM的各端口時(shí)鐘頻率與相位關(guān)系圖。四端口SRAM的端口時(shí)鐘與系統(tǒng)時(shí)鐘的頻率關(guān)系為fs∶fram=1∶4,各端口時(shí)鐘相位依次相差一個(gè)系統(tǒng)時(shí)鐘周期時(shí)間Tclk_S,且與系統(tǒng)時(shí)鐘上升沿均錯(cuò)開相同的時(shí)間長度tp(tp必須大于RAM的地址建立時(shí)間,以保證RAM端口能采樣到穩(wěn)定的數(shù)據(jù)),即如圖所示CLK_A第一個(gè)上升沿比CLK_S第一個(gè)上升沿落后tp,CLK_B第一個(gè)上升沿比CLK_S第二個(gè)上升沿落后tp,CLK_C第一個(gè)上升沿比CLK_S第三個(gè)上升沿落后tp,CLK_D第一個(gè)上升沿比CLK_S第四個(gè)上升沿落后tp。由于端口時(shí)鐘之間的相位關(guān)系是固定的,當(dāng)?shù)弥骋粫r(shí)刻一個(gè)端口時(shí)鐘的相位值時(shí),其他端口時(shí)鐘在此刻的相位也就隨之確定了。從圖中可以看出CLK_S對(duì)CLK_A的采樣值是四種不同相位值的循環(huán),設(shè)為a1、a2、a3、a4,由CLK_A的相位值a1即可得到同一時(shí)刻其他端口時(shí)鐘的相位值,可用向量表示為(a1,b1,c1,d1);同理可得到其他情況下的向量值(a2,b2,c2,d2)(a3,b3,c3,d3),(a4,b4,c4,d4)。從圖中還可以看出同一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)有且只有一個(gè)端口時(shí)鐘出現(xiàn)上升沿跳變,與之對(duì)應(yīng)的端口就是空閑端口。第1拍發(fā)出的請(qǐng)求需要在4拍之后才能獲取所需的數(shù)據(jù)。
下表是采用本發(fā)明對(duì)四端口SRAM進(jìn)行訪問對(duì)于連續(xù)請(qǐng)求所需要的系統(tǒng)時(shí)鐘周期個(gè)數(shù)相對(duì)于背景技術(shù)第一種方法和第二種方法所需要的系統(tǒng)時(shí)鐘周期個(gè)數(shù)比較表。表中所有請(qǐng)求均為讀請(qǐng)求。對(duì)于第一個(gè)請(qǐng)求,三種方法的訪問過程是相同的,都需要四個(gè)系統(tǒng)時(shí)鐘周期Tclk_S;對(duì)于第二個(gè)請(qǐng)求,背景技術(shù)第一種方法只能串行訪問,故需要另外4個(gè)時(shí)鐘周期進(jìn)行處理,總共需要8個(gè)時(shí)鐘周期;背景技術(shù)第二種方法在請(qǐng)求地址連續(xù)時(shí),因?yàn)榈诙€(gè)請(qǐng)求的數(shù)據(jù)已在處理第一個(gè)請(qǐng)求的同時(shí)取了出來,不需要額外的周期,所以僅總共需要4個(gè)時(shí)鐘周期,而當(dāng)請(qǐng)求地址不連續(xù)時(shí),背景技術(shù)第二種方法仍需要另外4個(gè)時(shí)鐘周期處理處理第二個(gè)請(qǐng)求,故總共需要8個(gè)時(shí)鐘周期;使用本發(fā)明的方法進(jìn)行訪問時(shí),由于請(qǐng)求是流水進(jìn)行處理的,故第二個(gè)請(qǐng)求是在第2個(gè)時(shí)鐘周期進(jìn)行處理的,其結(jié)果可在第5個(gè)時(shí)鐘周期得到,因此總共需要5個(gè)時(shí)鐘周期。依此類推,可以得出其他情況下,三種不同方法所需要的時(shí)鐘周期數(shù)。從表中可見,當(dāng)連續(xù)請(qǐng)求的個(gè)數(shù)遠(yuǎn)大于端口個(gè)數(shù)時(shí),本發(fā)明訪問時(shí)間明顯優(yōu)于背景技術(shù)第一種方法,如果請(qǐng)求地址不連續(xù),那么本發(fā)明訪問時(shí)間也明顯優(yōu)于背景技術(shù)第二種方法,如果請(qǐng)求地址連續(xù),背景技術(shù)第二種方法的訪問時(shí)間最短,但是實(shí)際應(yīng)用中,請(qǐng)求地址完全連續(xù)的情況是很少的。因此本發(fā)明對(duì)提高SRAM的訪問速度有重要的現(xiàn)實(shí)意義。
本發(fā)明與背景技術(shù)實(shí)際應(yīng)用時(shí)所需周期數(shù)比較表

權(quán)利要求
1.一種高速流水線中長延時(shí)多端口SRAM的快速訪問方法,方法是設(shè)計(jì)一套訪問控制邏輯,采用這個(gè)訪問控制邏輯對(duì)SRAM進(jìn)行訪問,其特征在于所述訪問控制邏輯是多端口SRAM訪問控制邏輯,它由時(shí)鐘產(chǎn)生電路、SRAM端口選擇器、SRAM存儲(chǔ)體和出口寄存器組四個(gè)部分組成;假設(shè)n為SRAM端口個(gè)數(shù),這四個(gè)部分的設(shè)計(jì)方法分別是
1.1時(shí)鐘產(chǎn)生電路的設(shè)計(jì)方法是它由一個(gè)或多個(gè)鎖相環(huán)組成,以系統(tǒng)時(shí)鐘clk_S作為輸入,輸出n個(gè)周期為n*Tclk_S的同頻時(shí)鐘信號(hào),這n個(gè)時(shí)鐘信號(hào)的相位依次相差一個(gè)系統(tǒng)時(shí)鐘周期時(shí)間Tclk_S;
1.2SRAM端口選擇器的設(shè)計(jì)方法是它由空閑端口判斷邏輯和n級(jí)輸出數(shù)據(jù)有效信號(hào)站組成;每一級(jí)輸出數(shù)據(jù)有效信號(hào)站由n個(gè)寄存器組成,分別對(duì)應(yīng)于SRAM存儲(chǔ)體的n個(gè)端口,用于表示該端口數(shù)據(jù)是否有效;在系統(tǒng)時(shí)鐘CLK_S的每個(gè)上升沿,空閑端口判斷邏輯對(duì)SRAM各端口時(shí)鐘信號(hào)CLK_1..n進(jìn)行采樣,根據(jù)采樣到的時(shí)鐘狀態(tài)獲得空閑端口號(hào)i;如果是寫請(qǐng)求,空閑端口判斷邏輯置空閑端口號(hào)i的寫使能信號(hào)Writei,SRAM存儲(chǔ)體的工作端口i在寫使能信號(hào)Writei的驅(qū)動(dòng)下,將請(qǐng)求數(shù)據(jù)Data寫入SRAM存儲(chǔ)體中;如果是讀請(qǐng)求,空閑端口判斷邏輯生成對(duì)應(yīng)的輸出數(shù)據(jù)有效信號(hào)DValidi1,寫入輸出有效信號(hào)站的第1站,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期之后,輸出數(shù)據(jù)有效信號(hào)從第一站傳入到第二站即DValidi2為1,依次傳遞,n個(gè)系統(tǒng)時(shí)鐘周期后,該輸出有效信號(hào)到達(dá)SRAM端口選擇器的出口即DValidin為1,此時(shí),由于SRAM端口的時(shí)鐘周期為n*Tclk_S,對(duì)應(yīng)的空閑SRAM端口i在一個(gè)端口時(shí)鐘周期即n個(gè)系統(tǒng)時(shí)鐘周期后,將輸出數(shù)據(jù)采樣到輸出端口i中寄存,與數(shù)據(jù)有效信號(hào)DValidin一起送到出口寄存器組;i為端口號(hào),且1≤i≤n;
1.3SRAM存儲(chǔ)體與傳統(tǒng)方法中的SRAM存儲(chǔ)體邏輯結(jié)構(gòu)基本相同,只是擁有更多的訪問端口;
1.4出口寄存器組的設(shè)計(jì)方法是它由輸出寄存器Reg_out、輸出數(shù)據(jù)暫存隊(duì)列tmp_fifo、Fifo控制邏輯和兩個(gè)多路選擇器第一MUX和第二MUX構(gòu)成;
1.5采用多端口SRAM訪問控制邏輯對(duì)SRAM進(jìn)行訪問的過程是
1.5.1時(shí)鐘產(chǎn)生電路以CLK_S作為輸入,輸出n個(gè)時(shí)鐘信號(hào)CLK1..n,各個(gè)端口在對(duì)應(yīng)的CLKi驅(qū)動(dòng)下工作,除SRAM存儲(chǔ)體外其他部分的邏輯統(tǒng)一由CLR_S驅(qū)動(dòng);
1.5.2外部請(qǐng)求Rqt_Valid有效時(shí),SRAM端口選擇器將外部讀寫請(qǐng)求轉(zhuǎn)化為SRAM的讀寫操作信號(hào),根據(jù)空閑端口判斷邏輯獲取可用的空閑端口,如果是寫請(qǐng)求,置SRAM的i號(hào)端口的寫使能信號(hào)Writei;如果是讀請(qǐng)求,置相應(yīng)空閑端口的輸出有效信號(hào)Dvalidi1,寫入輸出有效信號(hào)站的第1站,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期之后,輸出數(shù)據(jù)有效信號(hào)從第一站傳入到第二站即DValidi2為1,依次傳遞,n個(gè)系統(tǒng)時(shí)鐘周期后,該輸出有效信號(hào)到達(dá)SRAM端口選擇器的出口即DValidin為1;
1.5.3SRAM存儲(chǔ)體的工作端口i對(duì)輸入控制信號(hào)進(jìn)行判斷,當(dāng)Writei有效時(shí),將請(qǐng)求數(shù)據(jù)Data寫入存儲(chǔ)體中;當(dāng)Writei無效時(shí),將與請(qǐng)求地址對(duì)應(yīng)的數(shù)據(jù)讀出,在一個(gè)端口時(shí)鐘周期即n個(gè)系統(tǒng)時(shí)鐘周期后,輸出數(shù)據(jù)被采樣到輸出端口i中寄存,此時(shí)對(duì)應(yīng)的數(shù)據(jù)有效信號(hào)DValidin也正好到達(dá)SRAM端口選擇器的出口,與輸出數(shù)據(jù)一起送到出口寄存器組;其中,1≤i≤n;
1.5.4出口寄存器組以SRAM存儲(chǔ)體n個(gè)端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器輸出的有效信號(hào)Dvalid1n,Dvalid2n...Dvalidnn和流水線暫停信號(hào)stall作為控制輸入,將SRAM存儲(chǔ)體輸出的有效數(shù)據(jù)寄存在暫存隊(duì)列Tmp_fifo或出口寄存器Reg_out中,然后順序提交給外部訪問者。
2.如權(quán)利要求1所述的一種高速流水線中長延時(shí)多端口SRAM的快速訪問方法,其特征在于所述第一MUX以SRAM存儲(chǔ)體的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的n個(gè)輸出有效信號(hào)Dvalid1n,Dvalid2n...Dvalidnn為控制輸入,選擇有效的端口數(shù)據(jù)送到Tmp_fifo的輸入端;輸出數(shù)據(jù)暫存隊(duì)列tmp_fifo有n-1項(xiàng),它以第一MUX選擇的有效端口數(shù)據(jù)做為數(shù)據(jù)輸入,以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n...Dvalidnn為控制輸入;Fifo控制邏輯負(fù)責(zé)產(chǎn)生Tmp_fifo的寫使能信號(hào)WrEn和讀使能信號(hào)RdEn以及隊(duì)列的空狀態(tài)信號(hào)Fifo_Empty,并使用內(nèi)部計(jì)數(shù)器cnt對(duì)Tmp_fifo的有效數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù);第二MUX以Tmp_fifo輸出數(shù)據(jù)及SRAM的n個(gè)輸出端口數(shù)據(jù)作為數(shù)據(jù)輸入,以SRAM端口選擇器的輸出有效信號(hào)Dvalid1n,Dvalid2n...Dvalidnn和Tmp_fifo空狀態(tài)信號(hào)Fifo_Empty為控制輸入,選擇有效數(shù)據(jù)送到輸出寄存器Reg_out;Reg_out位寬與每次訪問的數(shù)據(jù)位寬相同,也與每個(gè)SRAM訪問數(shù)據(jù)位寬相同。
3.如權(quán)利要求1或2所述的一種高速流水線中長延時(shí)多端口SRAM的快速訪問方法,其特征在于Tmp_fifo的寫使能信號(hào)WrEn的生成邏輯為WrEn=(DValid1DValid2....DValidn)(Fifo_Emptystall);其中,F(xiàn)ifo_Empty有效即Fifo控制邏輯中的有效數(shù)據(jù)計(jì)數(shù)器cnt為0,即Fifo_Empty=Cnt[i]...cnt
Tmp_fifo的讀使能信號(hào)RdEn的生成邏輯為RdEn=(Fifo_Emptystall);計(jì)數(shù)器cnt的生成邏輯為INC=cnt+1DEC=cnt-1cnt[k]=(WrEnRdEnINC[k])(WrEnRdEnDEC[k]);(0≤K≤i)。
4.如權(quán)利要求1所述的一種高速流水線中長延時(shí)多端口SRAM的快速訪問方法,其特征在于第二MUX的選擇邏輯為如果Tmp_fifo隊(duì)列非空即Fifo_Empty為0,選擇Tmp_fifo的輸出數(shù)據(jù);如果Tmp_fifo隊(duì)列為空即Fifo_Empty為1,則選擇SRAM端口的有效輸出數(shù)據(jù);流水線不停頓時(shí),則連續(xù)使用第二MUX的輸出數(shù)據(jù)更新Reg_out的內(nèi)容,供外部使用。
全文摘要
本發(fā)明公開了一種高速流水線中長延時(shí)多端口SRAM的快速訪問方法,要解決的技術(shù)問題是提供一種對(duì)多端口SRAM的快速訪問方法,提高數(shù)據(jù)的訪問效率,提升流水線的總體性能。技術(shù)方案是設(shè)計(jì)一套時(shí)鐘產(chǎn)生電路、SRAM端口選擇器、SRAM存儲(chǔ)體和出口寄存器組四個(gè)部分組成的多端口SRAM訪問控制邏輯,采用這個(gè)訪問控制邏輯對(duì)多端口SRAM進(jìn)行訪問。采用本發(fā)明可使SRAM訪問流水化,有效降低數(shù)據(jù)訪問延遲,提高存儲(chǔ)帶寬。
文檔編號(hào)G11C8/00GK1851824SQ20061003166
公開日2006年10月25日 申請(qǐng)日期2006年5月17日 優(yōu)先權(quán)日2006年5月17日
發(fā)明者鄧讓鈺, 戴澤福, 張明, 陳海燕, 馬馳遠(yuǎn), 周宏偉, 邢座程, 蔣江, 冀蓉, 談民, 彭元喜, 穆長富, 衣曉飛 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1