專利名稱::先進(jìn)先出存儲器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明是有關(guān)于一種先進(jìn)先出存儲器,特別是有關(guān)于一種高速的先進(jìn)先出存^(渚器(FirstInFirstOut,FIFO)。
背景技術(shù):
:圖l所示為一現(xiàn)有技術(shù)中具有四輸入四輸出的先進(jìn)先出存儲器(FirstInFirstOut,FIFO)。先進(jìn)先出存儲器100可應(yīng)用于中央處理器(CentralProcessingUnit,CPU)和北橋(NorthBridge)之間進(jìn)行傳輸數(shù)據(jù)。先進(jìn)先出存儲器100具有四路多工器(Mux)lll、112、113、114、141、142、143和144,暫存器121、122、123和124以及十六路多工器131、132、133和134。其中,暫存器121、122、123和124均為可儲存16組32位數(shù)據(jù)的先進(jìn)先出暫存器。輸入數(shù)據(jù)DataO、Datal、Data2和Data3通過四路多工器lll、112、113和114存入暫存器121、122、123和124的對應(yīng)位置。十六路多工器131、132、133和134接收來自暫存器121、122、123和124的暫存數(shù)據(jù)并輸出至四路多工器141、142、143和144。從圖l可以看出,由于四路多工器lll、112、113和114必須具有驅(qū)動具有儲存16組32位的暫存器121、122、123和124的驅(qū)動能力,即必須通過寫入指針Push從64個32位的存儲單元中選擇出用來存儲數(shù)據(jù)Data0Data3的存儲單元,使得寫入指針Push的負(fù)載很大。因此四路多工器lll、112、113和114需要較大驅(qū)動器,從而增加四路多工器lll、112、113和114電路復(fù)雜度和傳輸門的數(shù)目,并且由于傳輸門的數(shù)目較多,數(shù)據(jù)傳輸也比較慢。同樣地,在先進(jìn)先出存儲器100的輸出端,存于暫存器121~124的數(shù)據(jù)需要通過兩級多工器,即十六路多工器131134與四路多工器141~144才能以先進(jìn)先出的方式輸出,進(jìn)而使得電路復(fù)雜度增加而數(shù)據(jù)傳輸速度降低。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種高速的先進(jìn)先出存儲器。本發(fā)明提供一種先進(jìn)先出存儲器,包括一緩沖單元,包含多個用于存儲數(shù)據(jù)的單元格;一輸出控制電路,依據(jù)一讀取指針與一讀取字節(jié)數(shù)讀取所述緩沖單元存儲的數(shù)據(jù)。輸出控制電路包含一選擇信號產(chǎn)生模塊,根據(jù)所述讀取指針與讀取字節(jié)數(shù)產(chǎn)生多個選擇信號;以及一數(shù)據(jù)輸出模塊,依據(jù)所述多個選擇信號與讀取指針,由所述緩沖單元中讀取相應(yīng)單元格的數(shù)據(jù),并作為所述先進(jìn)先出存儲器的輸出數(shù)據(jù)輸出。本發(fā)明所述的先進(jìn)先出存儲器,通過移位寄存器產(chǎn)生對應(yīng)于即將用來存儲或輸出數(shù)據(jù)的單元格,因此大大降低了讀取指針與寫入指針的負(fù)載,避免使用復(fù)雜的驅(qū)動電路,從而降低了控制電路復(fù)雜度和傳輸門的數(shù)目。由于傳輸門的數(shù)目較少,本發(fā)明先進(jìn)先出存儲器具有相對較小的面積和較高的數(shù)據(jù)傳輸速度。通過下面結(jié)合示例性地示出一例的附圖進(jìn)行的描述,本發(fā)明的上述和其他目的和特點將會變得更加清楚,其中圖l為現(xiàn)有技術(shù)的四輸入四輸出的先進(jìn)先出存儲器的示意圖2為根據(jù)本發(fā)明一實施例的先進(jìn)先出存儲器的示意圖;圖3為圖2所示先進(jìn)先出存儲器的輸入控制電路的示意圖4為圖2所示先進(jìn)先出存儲器的輸出控制電路的示意圖;圖5為圖4所示先進(jìn)先出存儲器的輸出控制電路的詳細(xì)示意圖6a6c為圖5所示選擇邏輯的詳細(xì)示意圖。具體實施例方式為讓本發(fā)明的上述和其它目的、特征和優(yōu)點能更明顯易懂,下文特舉出較佳實施例,并配合所附圖式,作詳細(xì)說明如下。如圖2所示,本發(fā)明一實施例的先進(jìn)先出存4諸器(FirstInFirstOut,FIFO)200包括一控制單元20、一緩沖單元23、一輸入控制電路21以及一輸出控制電路22。假設(shè)本實施例中先進(jìn)先出存儲器200每個周期(cycle)可支持最多4個長度為32bit的數(shù)據(jù)寫入,以及最多4個長度為32bit數(shù)據(jù)輸出。于本實施例中,控制單元20用于依據(jù)接收的傳輸請求request輸出一緩沖單元23的寫入指針Push與一寫入字節(jié)數(shù)Push—valid至輸入控制電路21,以及一讀取指針Pop與一讀取字節(jié)數(shù)Pop—valid至輸出控制電路22。于本實施例中,控制單元20設(shè)于先進(jìn)先出存儲器200中,但不限定于此。如本領(lǐng)域技術(shù)人員所知,寫入指針Push指向緩沖單元23下一個可存儲數(shù)據(jù)的單元格的存儲地址,讀取指針Pop用來指向緩沖單元23下一個數(shù)據(jù)可被讀取的單元格的存儲地址。假設(shè)寫入字節(jié)數(shù)Push—valid與讀取字節(jié)數(shù)Pop—valid均為包含4個位,用來標(biāo)示將要寫入的數(shù)據(jù)長度和將要讀取的數(shù)據(jù)長度。舉例來說,若寫入字節(jié)數(shù)Push—valid為4,b0001,則將一個長度為1DW(即32bit)的數(shù)據(jù)存入緩沖單元23;若寫入字節(jié)數(shù)Push—valid為4,b0011,則將兩個1DW的數(shù)據(jù)存入緩沖單元23;若寫入字節(jié)數(shù)Push一valid為4,b0111,則將三個1DW的數(shù)據(jù)存入緩沖單元23;若寫入字節(jié)數(shù)Push—valid為4,b1111,則將四個1DW的數(shù)據(jù)存入緩沖單元23。控制單元20接收到的傳輸請求r叫uest可以是來自CPU的讀取或?qū)懭胝埱?。輸入控制電?1依據(jù)寫入指針Push與寫入字節(jié)數(shù)Push—valid將接收到的數(shù)據(jù)datain0~datain3存入先進(jìn)先出緩沖單元23的相應(yīng)單元才各中。進(jìn)一步來說,輸入控制電路21包括單元格選擇模塊216和排序模塊210。單元格選擇模塊216依據(jù)寫入指針Push與寫入字節(jié)數(shù)Push—valid最多產(chǎn)生四個單元格使能信號act—1~act—4,以將先進(jìn)先出緩沖單元23中即將用來存儲數(shù)據(jù)的單元格激活。排序模塊210依據(jù)寫入指針Push將接收到的數(shù)據(jù)datain0datain3按照先進(jìn)先出的方式存入由單元格使能信號actl~act4激活的單元格中,從而完成數(shù)據(jù)存儲4喿作。輸出控制電路22依據(jù)讀取指針Pop與讀取字節(jié)數(shù)Pop—valid自先進(jìn)先出緩沖單元23中讀取并輸出數(shù)據(jù)dataout0~dataout3。于本實施例中,輸出控制電路22包括數(shù)據(jù)輸出模塊224和選擇信號產(chǎn)生模塊225。選擇信號產(chǎn)生模塊225由多工器220和移位寄存器組221組成。多工器220依據(jù)接收的讀取指針Pop和讀取字節(jié)數(shù)Pop—valid產(chǎn)生一讀取行移位信號R—shift。移位寄存器組221在讀取行移位信號R一shift的控制下輸出多個選擇信號,即RPtr—0~RPtr—a。數(shù)據(jù)輸出模塊224依據(jù)多個選沖奪信號RPtr—0~RPtr一a由先進(jìn)先出緩沖單元23中選擇輸出相應(yīng)單元格的數(shù)據(jù),并進(jìn)一步依據(jù)讀取指針Pop選擇輸出4個數(shù)據(jù)dataout0~dataout3作為先進(jìn)先出存儲器200的輸出。以下將結(jié)合圖3說明本實施例中,輸入控制電路21如何依據(jù)寫入指針Push與寫入字節(jié)數(shù)Push—valid將接收到的數(shù)據(jù)存入緩沖單元23中。假設(shè)輸入控制電路21需要將4個長度為1DW的數(shù)據(jù)datain0~datain3按照先進(jìn)先出的方式放入緩沖單元23中。如圖3所示,本實施例中緩沖單元23由四個先進(jìn)先出的子存儲塊bankl~bank4構(gòu)成,每一子存儲塊bankl~bank4的數(shù)據(jù)寬度為1DW,深度為96。也就是說,每一子存儲塊bankl~bank4均包含96個寬度為1DW的單元格,即單元格cel11—0~cel11—95、單元格cell2一0~cel1295、單元格cel13—0~cell3一95和單元格cel14—0~cel14—95。因此,本實施例緩沖單元23也可看作一具有96行x4列,共包含有384個寬度為1DW的單元格的存儲器。子存儲塊bankl~bank4位于第n(n=0,1......95)行的單元格l一n4—n的地址是連續(xù)的,且第n+l行的單元格l一n+l與第n行的單元格4—n的地址連續(xù)是連續(xù)的,因而先進(jìn)先出存儲器200接收到的數(shù)據(jù)通過輸入控制電路21蛇形地存入子存儲塊bankl~bank4的單元格中。為方便理解,本實施例在描述以及附圖中將以datan—n來表示單元格celln—n中存儲的數(shù)據(jù)。譬如說,單元格cel11—30中存儲的數(shù)據(jù)為data1—30。輸入控制電路21包括多工器210、2U,第一移位寄存器212、第二移位寄存器213、單元格預(yù)選模塊214以及一時鐘控制模塊215。多工器210依據(jù)寫入指針Push的低兩位,即Push[l:O],將接收到的數(shù)據(jù)datain0~datain3分別依據(jù)表1所示的對應(yīng)關(guān)系輸出至相應(yīng)的子存儲塊bankl~bank4。其中,子存儲塊bankl用來存儲地址的低兩位為"00"的數(shù)據(jù),子存儲塊bank2用來存儲地址的低兩位為"01,,的數(shù)據(jù),子存儲塊bank3用來存儲地址的低兩位為"10"的數(shù)據(jù),子存儲塊bank4用來存儲地址的低兩位為"1l"的數(shù)據(jù)。表l<formula>formulaseeoriginaldocumentpage9</formula><table>tableseeoriginaldocumentpage10</column></row><table>舉例來說,若寫入指針Push二8,b010100101,貝'J數(shù)據(jù)datainO將被存入子存儲塊bank2,數(shù)據(jù)datainl存入子存儲塊bank3,數(shù)據(jù)datain2存入子存儲塊bank4,數(shù)據(jù)datain3存入子存儲塊bank1。換句話說,本實施例中輸入控制電路21可通過多工器210確定數(shù)才居datainO~datain3與子存4諸塊bank1~bank4的只于應(yīng)關(guān)系,即確定接收到的數(shù)據(jù)將分別存入緩沖單元23的哪一列。多工器211依據(jù)寫入字節(jié)數(shù)Push—valid[3:O]與寫入指針Push[1:0]產(chǎn)生一寫入行移位信號W_shift,用以控制第一移位寄存器212、第二移位寄存器213的移位。第一移位寄存器212包含有96bit,在寫入行移位信號W—shift的控制下順序移位,并輸出一第一行選擇信號wptr—0[95:0],其96個位分別對應(yīng)子存儲塊bankl~bank4的96個單元格,且僅有一個位為'T,。第二移位寄存器213也包含有96位,在寫入行移位信號W—shift的控制下輸出一第二行選擇信號wptr—1[95:0],其96個位分別對應(yīng)子存儲塊bankl~bank4的96個單元格,且僅有一個位為"l"。特別地,第一行選擇信號wptr—O的起始值為wptr—O[O],即bitO為"l",對應(yīng)于緩沖單元23的第l行單元格,而第二行選擇信號wptr一l的起始值為wptr_l[l],即bitl為"l",對應(yīng)于緩沖單元23的第2行單元格。多工器211依據(jù)接收到的寫入指針Push[l:0]與寫入字節(jié)數(shù)Push—valid[3:O]來判斷即將接收到的數(shù)據(jù)是否可被完整存入當(dāng)前第一、第二行選4奪信號wptr一0,wptr—l所對應(yīng)的單元格中,若不能,則輸出行移位信號W一shift,使得第一移位寄存器212、第二移位寄存器213移位,以通過第一、第二行選擇信號wptr—0,wptr—l預(yù)選兩行(8個)單元格。舉例來說,在進(jìn)行完第一筆數(shù)據(jù)存儲后,若第一移位寄存器212、第二移位寄存器213接收的寫入行移位信號W—shift被致能,則第一移位寄存器212輸出第一行選擇信號由wptr—0變?yōu)閣ptr—0[1],第二移位寄存器213輸出第二行選擇信號由wptr—l[l]變?yōu)閣ptr—1[2],即預(yù)選緩沖單元23的第2行和第3行單元格。單元格預(yù)選模塊214隨后依據(jù)寫入指針Push[l:0]、寫入字節(jié)數(shù)Push—valid[3:O]以及第一行選擇信號wptr—O[n]與第二行選擇信號wptr—1[n+1],按照表2~表5所示的對應(yīng)關(guān)系輸出相應(yīng)子存4諸i夾bankl~bank4的單元才各指4十a(chǎn)ddr—1~addr—4,乂人而由予貞選的兩行單元格中進(jìn)一步選擇出即將用來存儲數(shù)據(jù)的單元格。表2:(Pushvalid=4,bllll)<table>tableseeoriginaldocumentpage11</column></row><table>表4:<table>tableseeoriginaldocumentpage12</column></row><table>舉例來說,如表2所示,假設(shè)單元格預(yù)選模塊214接收到低兩位為"01"的寫入指針Push、寫入字節(jié)數(shù)Push—valid-4'bllU、第一行選擇信號wptr—0[41]與第二行選擇信號wptr—1[42],則單元格預(yù)選模塊214輸出單元格指針addr—1[42],addr_2[41〗,addr一3[41],addr—4[41],表示其值為"l"的位分別對應(yīng)子存儲塊bankl的單元才各cell1—42,子存4諸》夾bank2~bank4的單元才各cel12—41,cel13—41和cel14—41,且這些單元格將被用來存儲本次傳輸周期(cycle)接收到的數(shù)據(jù)。為達(dá)到省電的目的,單元格預(yù)選模塊214輸出的單元格指針addr一l~addr—4被送到時鐘控制模塊215。時鐘控制模塊215依據(jù)系統(tǒng)時鐘CLK輸出四個使能信號act—1~act一4至緩沖單元23的各個單元格,以使即將用來存儲數(shù)據(jù)的單元格,即子存儲塊bankl~bank4中使能信號act—1~act—4值為"1"的位所對應(yīng)的單元格被激活(提供時鐘信號給該單元格)。由以上描述可知,在本實施例先進(jìn)先出存儲器200的輸入端,依據(jù)第一行選擇信號wptr_0和第二行選擇信號wptr_1由緩沖單元23中選4奪出兩行單元格,即8個地址連續(xù)的單元格,然后再通過單元格預(yù)選模塊214由這兩行單元格中選擇出即將用來存儲數(shù)據(jù)的單元格。時鐘控制模塊215激活被選中的單元格,使得多工器210將4妄收到的數(shù)據(jù)datain0~datain3按序存入4皮啟動的單元格中。顯然,與現(xiàn)有技術(shù)相比,本實施例先進(jìn)先出存儲器200的輸入控制電路21通過移位寄存器等相對簡單的電路,依據(jù)接收到的寫入指針Push以及寫入字節(jié)數(shù)Push—valid產(chǎn)生對應(yīng)于緩沖單元23的每一個單元格的使能信號actl~act—4,從而有效降低了寫入指針Push與寫入字節(jié)數(shù)Push—valid的負(fù)載。由于本實施例中不需要設(shè)計具有很大驅(qū)動力的電路來驅(qū)動寫入指針Push依據(jù)寫入字節(jié)數(shù)Push—valid從384個單元格中選擇即將用來存儲數(shù)據(jù)的單元格,因而本實施例先進(jìn)先出存儲器200的數(shù)據(jù)存儲效率被有效提高。以下將結(jié)合圖4說明本實施例中,輸出控制電路22如何依據(jù)讀取指針Pop與讀取字節(jié)數(shù)Pop—valid將數(shù)據(jù)由緩沖單元23中讀出。如圖4所示,輸出控制電路22包含一多工器220、移位寄存器0~a以及數(shù)據(jù)輸出模塊224。移位寄存器0a組成移位寄存器組221。數(shù)據(jù)輸出模塊224包括由處理單元2261~2264組成的單元格初選模塊226和多工器223。多工器220依據(jù)讀取指針Pop的低三位以及讀取字節(jié)數(shù)Pop—valid輸出一讀取行移位信號I^shift,用以控制移位寄存器0~a的移位。移位寄存器0~a分別依據(jù)行移位信號R—shift輸出一選拷:信號RPtr—0~RPtr—a,每一選褲:信號RPtr—0~RPtr—a均包含有48個位,且同一時間每個選擇信號RPtr—0~RPtr—a只有一個位為"1"。單元格初選模塊226依據(jù)選擇信號RPtr—0~RPtr—a由緩沖單元23的相應(yīng)子存儲塊bankl~bank4中選擇11個地址連續(xù)的單元格,并將選中單元格中存儲的數(shù)據(jù)通過信號cell—outO~cell—outa輸出給多工器223。多工器223依據(jù)讀取指針Pop由初選出來的ll個數(shù)據(jù)中選擇輸出4個數(shù)據(jù)dataout0~dataout3,作為先進(jìn)先出存儲器200的輸出。更進(jìn)一步來說,為減輕選擇信號RPtr—0~RPtr—a的負(fù)載,每一子存儲塊bankl~bank3的單元格所存儲的數(shù)據(jù)在輸出至相應(yīng)的處理單元2261~2264時都被分為兩組。其中,第一組數(shù)據(jù)由存儲于奇數(shù)行單元格中的數(shù)據(jù)組成,第二組數(shù)據(jù)由存儲于偶數(shù)行單元格中的數(shù)據(jù)組成,因而每組都包含48個數(shù)據(jù),且分別對應(yīng)于相應(yīng)選4奪信號RPtr—0~RPtr—a的48個位。為方便說明,子存儲塊bankl~bank4輸出的第一組數(shù)據(jù)分別用groupl_l,group2—1,group3—1和group4—1標(biāo)示,第二組數(shù)據(jù)分另)J用g訓(xùn)pl—2,group2—2,group3—2和group4—2標(biāo)示。舉例來說,子存儲單元bankl輸出的第一組數(shù)據(jù)groupl—1由單元格cel11—0,cel11—2,cel11—4......cel11—94中所存儲的數(shù)據(jù)組成,即數(shù)據(jù)datal—0,datal—2......datal—94(圖6a),第二組數(shù)據(jù)groupl—2由單元格cel11—1,cel11—3,celll_5......celll—95中所存儲的數(shù)據(jù)組成,即數(shù)據(jù)data1—1,datal—3......datal—95(圖6b)。于本實施例中,處理單元2261~2263還接收一第三組數(shù)據(jù),即數(shù)據(jù)group1—3,g訓(xùn)p2—3和g簡p3—3。如圖所示,數(shù)據(jù)輸出模塊224包含調(diào)序單元2271~2273,用于對相應(yīng)的子存儲塊bankl~bank3輸出的第一組數(shù)據(jù)group1—1,g訓(xùn)p2—1和g腦p3—1進(jìn)行調(diào)序操作,以獲得第三組數(shù)據(jù)group1—3,group2—3和group3—3。更進(jìn)一步來說,本實施例中調(diào)序單元2271~2273為一循環(huán)右移移位寄存器,即可對接收到的數(shù)據(jù)進(jìn)行右移操作,從而達(dá)到調(diào)整數(shù)據(jù)排列順序的目的。例如,假設(shè)子存儲塊bankl輸出的第一組數(shù)據(jù)g腦pl—1由數(shù)據(jù)data1—0,datal—2......datal—94組成,且4非歹'J順序為data1—94,datal—92......datal—2,datal—0,則經(jīng)過調(diào)序單元2271的循環(huán)右移移位操作后,數(shù)據(jù)的排列順序變?yōu)閐atal—0,datal—94......datal—4,datal_2(圖6c)。簡言之,以處理單元2261為例,處理單元2261所接收的第三組數(shù)據(jù)groupl—3是第一組數(shù)據(jù)group1—l右移所得。處理單元2261~處理單元2264隨后依據(jù)選擇信號RPtr—0~RPtr_a,由數(shù)據(jù)組groupl—1~group4一l,groupl—2~group4—2以及groupl—3~group3—3中選才奪ll個凄t據(jù),并通過信號ce11—out0~cell—outa輸出至多工器223。多工器223依據(jù)讀取指針Pop的低三位,從數(shù)據(jù)cell—out0~cell—outa中選擇輸出四個數(shù)據(jù)dataout0~dataout3作為本實施例先進(jìn)先出存儲器200的輸出數(shù)據(jù)。請一并參閱圖4至圖6,處理單元2261~2264均包含有多個處理邏輯con0~cona,用于依據(jù)相應(yīng)的選擇信號RPtr—0~RPtr—a從對應(yīng)的子存儲塊bankl~bank4中選擇11個地址連續(xù)的單元格中存儲的數(shù)據(jù)輸出。請參閱圖6a6c,以選擇邏輯02為例來說明本實施例中如何通過選擇邏輯0~a由緩沖單元23中選擇出ll個地址連續(xù)的單元格。選擇邏輯0包含48個與門AN0~47以及一個或門OR0。與門AN0-47均具有兩個輸入端,一端連接至子存儲塊bankl的第一組數(shù)據(jù)groupl一l,即數(shù)據(jù)datal—0,data1—2......datal—94,另一端連才妄至選擇信號RPtr—0[47:0]的相應(yīng)位。如本領(lǐng)域熟練技術(shù)人員所知,通過與門AN0~47,與選擇信號RPtr0中l(wèi),bl相對應(yīng)的數(shù)據(jù)將被送至或門ORO,并作為數(shù)據(jù)ce11—out0輸出。選擇邏輯1和選擇邏輯2的結(jié)構(gòu)與選擇邏輯0相同,只是選擇信號RPtr—l的48個位分別對應(yīng)于第二組數(shù)據(jù)group1—2,即數(shù)據(jù)data1—1,datal—3......datal—95,選擇信號RPtr—2的48個位分別對應(yīng)于第三組數(shù)據(jù)group1—3,即數(shù)據(jù)datal—2,datal—4......datal—94,datal—0。。因此,假設(shè)移位寄存器0~2分別輸出選擇信號RPtr—0[20]~RPtr—2[20],則選擇邏輯0~2輸出的數(shù)據(jù)cell—out0~cell—out2分別為單元格celll—40,cel11—41與cel11—42所存儲的數(shù)據(jù),即數(shù)據(jù)datal—40,datal一41與datal—42。換句話說,選擇邏輯0~2依據(jù)接收到的選擇信號0~2自子存儲塊bankl中選擇三個單元格,并將其中存儲的數(shù)據(jù)通過ce11—out0~cell—out2輸出。與選4奪邏輯0~2相似,選擇邏輯3~5分別依據(jù)選擇信號RPtr—3~RPtr—5由子存儲塊bank2中選擇三個單元格,并將其中存儲的數(shù)據(jù)通過cel1—out3~cell一out5輸出。選擇邏輯6~8分別依據(jù)選擇信號RPtr—6~RPtr—8由子存儲塊bank3中選擇三個單元格,并將其存儲的數(shù)據(jù)通過cel1—out6~cell—out8輸出。選擇邏輯9~a分別依據(jù)選擇信號RPtr—9~RPtr—a由子存儲塊bank4中選擇兩個單元格,并將其存儲的數(shù)據(jù)通過ce11—out9~cell—outa輸出。由以上描述可知,本實施例中輸出控制電路22可依據(jù)選擇信號0~a控制相應(yīng)的選擇邏輯0a由緩沖單元23中選擇出ll個地址連續(xù)的單元格,并由信號cell—out0~cell—outa將這11個單元格中的數(shù)據(jù)輸出。舉例來說,假設(shè)移位寄存器0a分別輸出選擇信號RPtr—0[20]~RPtr—a[20],則選擇邏輯0~a輸出的數(shù)據(jù)cell—out0~cell—outa為單元格celll—40~cel14—40,celll—41~cel14—41,cel11—42~cel13—42所存儲的數(shù)據(jù)。多工器223隨后依據(jù)讀取指針Pop的低三位,從數(shù)據(jù)cel1—out0~cell—outa中選擇輸出四個H才居dataout0~dataout3豐lr出。多工器220依4居讀耳又指^十Pop和讀取字節(jié)數(shù)Pop—valid判斷即將讀取的數(shù)據(jù)是否已經(jīng)由選擇邏輯con0cona輸出至多工器223,若否,則輸出讀取行移位信號R—shift,使得選擇邏輯con0~cona依據(jù)移位后的選擇信號RPtr—0~RPtr—a選擇ll個數(shù)據(jù)輸出至多工器223。由于本實施例中輸出控制電路22通過一組移位寄存器,即移位寄存器0a來產(chǎn)生一組選擇信號RPtr—0~RPtr—a,使得選4奪遷|專cono~cona豐t出一纟且i也it連續(xù)的凄史4居cell一out0~cell—outa。因此,與現(xiàn)有技術(shù)相比,本發(fā)明輸出控制電路22只需要驅(qū)動讀取指針Pop從ll個地址連續(xù)的數(shù)據(jù)中選擇出4個數(shù)據(jù)作為先進(jìn)先出存儲器200的輸出數(shù)據(jù),進(jìn)而大幅減小了讀取指針Pop的負(fù)載,使得本實施例先進(jìn)先出存儲器200的數(shù)據(jù)輸出效率被有效提高。以上說明均假設(shè)本實施例中先進(jìn)先出存儲器200每個周期可支持最多4個長度為32bit的數(shù)據(jù)寫入,以及最多4個長度為32bit數(shù)據(jù)輸出,然而,如本領(lǐng)域熟練技術(shù)人員所知,以上假設(shè)可因應(yīng)不同的應(yīng)用環(huán)境而改變,且輸入/輸出控制電路及緩沖單元的結(jié)構(gòu)只需要做簡單的更改即可。舉例來說,若緩沖單元23由32個位寬為32bit的單元格組成,則輸出控制電路22的多工器220可依據(jù)讀取字節(jié)數(shù)Pop—valid[3:0]與讀取指針Pop[l:O]產(chǎn)生讀取行移位信號R—shift。移位寄存器的個數(shù)可以相應(yīng)地由ll個減少為8個。此時,每一子存儲塊bankl~bank4包含8個單元格,其中奇數(shù)行的單元格分為一組,偶數(shù)行的單元格分為另一組,并分別輸出至相應(yīng)的處理單元2261~2264。移位寄存器0~7依據(jù)讀取行移位信號R—shift,分別輸出選擇信號RPtr—0~RPtr—7,每一選擇信號RPtr—0~RPtr—7包含有4個位。處理單元2261~2264隨后依據(jù)選擇信號RPtr—0~RPtr—7自緩沖單元23中選擇輸出兩行,共8個地址連續(xù)的單元格的數(shù)據(jù),以供多工器223依據(jù)讀取指針Pop[1:0]選擇性地輸出數(shù)據(jù)dataoutO~dataout3。以上所述僅為本發(fā)明較佳實施例,然其并非用以限定本發(fā)明的范圍,任何熟悉本項技術(shù)的人員,在不脫離本發(fā)明的精神和范圍內(nèi),可在此基礎(chǔ)上權(quán)利要求1.一種先進(jìn)先出存儲器,其特征在于,包括一緩沖單元,包含多個用于存儲數(shù)據(jù)的單元格;一輸出控制電路,依據(jù)一讀取指針與一讀取字節(jié)數(shù)讀取所述緩沖單元存儲的數(shù)據(jù),所述輸出控制電路包含一選擇信號產(chǎn)生模塊,根據(jù)所述讀取指針與所述讀取字節(jié)數(shù)產(chǎn)生多個選擇信號;以及一數(shù)據(jù)輸出模塊,依據(jù)所述多個選擇信號與所述讀取指針,由所述緩沖單元中讀取相應(yīng)單元格的數(shù)據(jù),并作為所述先進(jìn)先出存儲器的輸出數(shù)據(jù)輸出。2.根據(jù)權(quán)利要求l所述的先進(jìn)先出存儲器,其特征在于,所述輸出控制電路的所述選擇信號產(chǎn)生模塊包括一第一多工器,根據(jù)所述讀取指針與所述讀取字節(jié)數(shù)產(chǎn)生一讀耳又4亍移4立^[言號;以及一移位寄存器組,依據(jù)所述讀取行移位信號輸出所述多個選擇信號。3.根據(jù)權(quán)利要求2所述的先進(jìn)先出存儲器,其特征在于,所述第一多工器依據(jù)所述讀取指針與所述讀取字節(jié)數(shù)判斷將要讀取的數(shù)據(jù)是否存儲于所述選擇信號對應(yīng)的單元格中,若否,則輸出所述讀取行移位信號,使所述移位寄存器組輸出移位的選擇信號。4.根據(jù)權(quán)利要求l所述的先進(jìn)先出存儲器,其特征在于,所述輸出控制電路的所述數(shù)據(jù)輸出模塊包括一單元格初選模塊,分別依據(jù)相應(yīng)的選擇信號,由所述緩沖單元中選擇輸出相應(yīng)單元格的數(shù)據(jù);以及一第二多工器,接收所述單元格初選模塊輸出的數(shù)據(jù),并依據(jù)所述讀取指針選擇多個數(shù)據(jù)作為所述先進(jìn)先出存儲器的輸出數(shù)據(jù)輸出;其中,由所述單元格初選模塊輸出的數(shù)據(jù)的存儲地址連續(xù)。5.根據(jù)權(quán)利要求4所述的先進(jìn)先出存儲器,其特征在于,所述單元格初選模塊包含多個選擇邏輯,分別依據(jù)相應(yīng)的選擇信號由所迷緩沖單元中選擇輸出相應(yīng)單元格的數(shù)據(jù)。6.根據(jù)權(quán)利要求5所述的先進(jìn)先出存儲器,其特征在于,所述數(shù)據(jù)輸出模塊還包括一調(diào)序單元,耦接于所述緩沖單元與選擇邏輯之間,用于調(diào)整所述緩沖單元輸出至所述選擇邏輯的數(shù)據(jù)的排列順序。7.根據(jù)權(quán)利要求4所述的先進(jìn)先出存儲器,其特征在于,所述輸出電路的選擇信號的個數(shù)等于所述選擇邏輯的個數(shù)。8.根據(jù)權(quán)利要求l所述的先進(jìn)先出存儲器,其特征在于,還包括一輸入控制電路,依據(jù)一寫入指針與一寫入字節(jié)數(shù),將接收的數(shù)據(jù)存入緩沖單元,所述輸入控制電路包括一第三多工器,依據(jù)所述寫入指針與所述寫入字節(jié)數(shù)產(chǎn)生一寫入行移位信號;第一移位寄存器、第二移位寄存器,分別依據(jù)所述寫入行移位信號輸出第一行選擇信號、第二行選擇信號;以及一單元格預(yù)選模塊,依據(jù)所述第一行選擇信號、第二行選擇信號、所述寫入指針與所述寫入字節(jié)數(shù)產(chǎn)生多個單元格指針,分別指向即將用于存儲數(shù)據(jù)的單元格。9.根據(jù)權(quán)利要求8所述的先進(jìn)先出存儲器,其特征在于,所述輸入控制電路還包括一時鐘控制模塊,用以依據(jù)所述單元格預(yù)選模塊輸出的所述單元格指針給相應(yīng)的單元格提供時鐘信—,10.根據(jù)權(quán)利要求8所述的先進(jìn)先出存儲器,其特征在于,所述輸入控制電路還包括一第四多工器,依據(jù)所述寫入指針將所述先進(jìn)先出存儲器接收到的多個數(shù)據(jù)存入所述單元格指針指向的單元格中,且使所述先進(jìn)先出存儲器接收到的第一個數(shù)據(jù)存入所述寫入指針?biāo)鶎?yīng)的單元格中。11.根據(jù)權(quán)利要求8所述的先進(jìn)先出存儲器,其特征在于,所述第一行選擇信號、第二行選擇信號均包括多個位,且所述第二行選擇信號為"l"的位比所述第一行選擇信號為"l"的位高一位。12.根據(jù)權(quán)利要求ll所述的先進(jìn)先出存儲器,其特征在于,所述第三多工器依據(jù)所述讀取指針與所述讀取字節(jié)數(shù)判斷將要寫入的數(shù)據(jù)是否能夠全部存儲于所述第一行選擇信號、第二行選擇信號所對應(yīng)的單元格中,并依據(jù)判斷結(jié)果輸出所述寫入行移位信號,使得所述第一移位寄存器、第二移位寄存器移位。13.根據(jù)權(quán)利要求l所述的先進(jìn)先出存儲器,其特征在于,所述緩沖單元的單元格包含多行多列,且所述緩沖單元的同一行的單元格的存儲地址連續(xù),相鄰兩行中的前一行的最后一個單元格的存儲地址與后一行的第一個單元格的存儲地址連續(xù)。全文摘要本發(fā)明提供一種先進(jìn)先出存儲器,包括一緩沖單元,包含多個用于存儲數(shù)據(jù)的單元格;一輸出控制電路,依據(jù)一讀取指針與一讀取字節(jié)數(shù)讀取所述緩沖單元存儲的數(shù)據(jù)。輸出控制電路包含一選擇信號產(chǎn)生模塊,根據(jù)所述讀取指針與讀取字節(jié)數(shù)產(chǎn)生多個選擇信號;以及一數(shù)據(jù)輸出模塊,依據(jù)所述多個選擇信號與讀取指針,由所述緩沖單元中讀取相應(yīng)單元格的數(shù)據(jù),并作為所述先進(jìn)先出存儲器的輸出數(shù)據(jù)輸出。本發(fā)明所述的先進(jìn)先出存儲器,大大降低了讀取指針與寫入指針的負(fù)載,避免使用復(fù)雜的驅(qū)動電路,從而降低了控制電路復(fù)雜度和傳輸門的數(shù)目,且具有相對較小的面積和較高的數(shù)據(jù)傳輸速度。文檔編號G11C7/10GK101110259SQ20071014208公開日2008年1月23日申請日期2007年8月22日優(yōu)先權(quán)日2007年8月22日發(fā)明者斌張,磊張,洋杜,鵬秦申請人:威盛電子股份有限公司