折疊式fifo存儲器生成器的制造方法
【專利摘要】公開了折疊式FIFO存儲器生成器??梢允褂帽硎鞠冗M先出(FIFO)存儲器的可綜合代碼來產(chǎn)生硬件元件或者系統(tǒng)中的FIFO存儲器。為了更有效地使用FIFO中的存儲數(shù)據(jù)的存儲器元件,代碼生成器可以生成線程束,其使得FIFO能夠使用具有不同于FIFO的規(guī)格的規(guī)格(即深度和寬度)的存儲器元件。例如,線程束使得128深、1位寬的FIFO能夠?qū)?shù)據(jù)存儲在具有每行存儲8位的16行的存儲器元件中。對于與FIFO通信的任何系統(tǒng),盡管FIFO使用16×8存儲器元件來實現(xiàn),但FIFO的表現(xiàn)就像128×1FIFO。為了這樣做,代碼生成器可以生成線程束,其使得折疊式存儲器元件的表現(xiàn)就像非折疊式存儲器元件。
【專利說明】折疊式FIFO存儲器生成器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施例總體涉及設(shè)計先進先出(FIFO)存儲器,并且更具體地涉及對FIFO存儲器的深度和寬度進行折疊以與對應(yīng)的存儲器元件的規(guī)格一致。
【背景技術(shù)】
[0002]設(shè)計為處理數(shù)據(jù)的集成電路一般使用FIFO存儲器來在處理級之間存儲數(shù)據(jù)。這些FIFO存儲器可以具有不同的寬度、深度、以及不同的輸入和輸出時鐘頻率。照慣例,產(chǎn)生可綜合代碼的生成器已被用來產(chǎn)生不同變化的FIFO存儲器。然而,F(xiàn)IFO存儲器的不同物理特性可能導(dǎo)致低效率。例如,生成器響應(yīng)于請求,可以產(chǎn)生與128X 1FIF0 (即具有每條目I位的128個條目的FIFO)對應(yīng)的可綜合代碼。然而,如果使用RAM來實現(xiàn)該FIF0,那么RAM單元的寬度可以至少是8位寬。相應(yīng)地,128深的FIFO將要求每行8位寬的128行的RAM。因為每個條目僅存儲I位,所以行中的其他7位未被使用。這種低效率可能導(dǎo)致硬件系統(tǒng)消耗附加的功率,并且要求的空間比所必須的更多。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的實施例描述接收將第一數(shù)據(jù)部分存儲在FIFO存儲器中的請求的方法和計算機可讀存儲介質(zhì)。方法和存儲介質(zhì)將第一數(shù)據(jù)部分存儲在FIFO存儲器中的緩沖區(qū)中。方法和介質(zhì)接收將第二數(shù)據(jù)部分存儲在FIFO存儲器中的請求,并且對將第二數(shù)據(jù)部分存儲在緩沖區(qū)將會超過緩沖區(qū)的容量進行確定。方法和存儲介質(zhì)將緩沖區(qū)的內(nèi)容存儲到FIFO存儲器中的存儲器元件的單個行,其中存儲器元件中的每行設(shè)定大小為存儲多個數(shù)據(jù)部分。
[0004]本發(fā)明的另一個實施例描述FIFO存儲器,其包括用于存儲與由FIFO存儲器所接收的寫請求相關(guān)聯(lián)的多個數(shù)據(jù)部分的緩沖區(qū)。FIFO存儲器還包括耦連到緩沖區(qū)的存儲器元件,其中存儲器元件中的每行設(shè)定大小為存儲多個數(shù)據(jù)部分。FIFO存儲器包括路由邏輯,其配置為對將下一個數(shù)據(jù)部分存儲在緩沖區(qū)將會超過緩沖區(qū)的容量進行確定,并且將緩沖區(qū)的內(nèi)容存儲到存儲器元件的單個行。
[0005]通過折疊FIFO存儲器的深度和寬度以與對應(yīng)的存儲器元件的規(guī)格一致,本實施例可以改善能效以及硬件系統(tǒng)所需的面積。具體,相對其規(guī)格沒有被折疊的用于FIFO的存儲器元件,獲得的存儲器元件可以減少未使用的存儲單元的數(shù)目。
【專利附圖】
【附圖說明】
[0006]因此,可以詳細地理解本發(fā)明上述特征,并且可以參考施例得到對如上面所簡要概括的本發(fā)明更具體的描述,其中一些實施例在附圖中示出。然而,應(yīng)當注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應(yīng)被認為是對其范圍的限制,本發(fā)明可以具有其他等效的實施例。
[0007]圖1示出根據(jù)本發(fā)明的一個實施例的、包括FIFO代碼生成器的計算設(shè)備的框圖。[0008]圖2示出根據(jù)本發(fā)明的一個實施例的、包括具有折疊式存儲器單元的FIFO的硬件系統(tǒng)的框圖。
[0009]圖3A-3G示出根據(jù)本發(fā)明的實施例的、寫入FIFO存儲器和從FIFO存儲器讀取。
[0010]圖4A-4B示出根據(jù)本發(fā)明的實施例的、從FIFO存儲器中的相同存儲器地址寫入數(shù)據(jù)和讀取數(shù)據(jù)。
[0011]圖5是根據(jù)本發(fā)明的一個實施例的、用于確定何時折疊FIFO的存儲器元件的方法。
[0012]圖6示出根據(jù)本發(fā)明的一個實施例的、由多個線程訪問的FIFO的硬件系統(tǒng)。
[0013]為便于理解,相同的參考數(shù)字在可能情況下已被用于指定圖中共同的相同的元件。這是考慮在一個實施例中公開的元件可以有利地用于其他實施例而無需具體詳述。
【具體實施方式】
[0014]為了更有效地使用FIFO中的存儲數(shù)據(jù)的存儲器元件,代碼生成器可以生成線程束(wrapper),其使得FIFO能夠使用具有不同于FIFO的規(guī)格的規(guī)格(即深度和寬度)的存儲器元件。例如,線程束使得128深、I位寬的FIFO能夠?qū)?shù)據(jù)存儲在具有每行存儲8位的16行存儲器元件中。對于與FIFO通信的任何系統(tǒng),盡管FIFO使用16X8存儲器元件來實現(xiàn),但FIFO的表現(xiàn)就像128X1FIF0。在一個實施例中,F(xiàn)IFO的規(guī)格被折疊以確定對應(yīng)的存儲器元件的規(guī)格。例如,假如代碼生成器被要求配置具有每條目I位寬的128個條目(128X1)的FIFO。然而,如果存儲器元件的各個行被限制為最小8位,在沒有對存儲器元件的規(guī)格進行折疊的情況下,用于該FIFO的實際存儲器元件可能是128X8 (即具有每行9個存儲單元的128行)。在這樣的實施例中,每行中的7位可能未被使用。相反,生成器可以折疊所要求的FIFO的規(guī)格,從而減小存儲器元件的深度并將寬度增加對應(yīng)量以維持存儲器元件的總存儲大小。例如,以因子2折疊的128X 1FIF0可以由64X2存儲器元件來實現(xiàn)。
[0015]代碼生成器可以生成線程束,其使得折疊式存儲器元件能夠表現(xiàn)得像未折疊的存儲器元件。特別是,線程束包括支配數(shù)據(jù)如何讀入和讀出折疊式存儲器元件的邏輯。以使用128X 1FIF0為例,線程束可以將數(shù)據(jù)存儲在折疊式16X8存儲器元件中的8位塊中。這樣,存儲器元件中的每個存儲位置均可以被使用。相對于使用非折疊式存儲器元件,將存儲器元件的規(guī)格進行折疊不僅提高了存儲效率,獲得的存儲器元件可能要求更小的面積(例如在集成電路中具有更小的占地面積)。繼續(xù)以上示例,折疊式16X8存儲器元件僅需要足以存儲128位的面積,而128X8存儲器元件要求存儲1024位所需的面積。
[0016]圖1示出根據(jù)本發(fā)明的一個實施例的、包括FIFO代碼生成器115的計算系統(tǒng)100的框圖。具體地,系統(tǒng)100包括處理器105和系統(tǒng)存儲器110。FIFO生成器115可以是存儲在存儲器110中的程序或者應(yīng)用程序。生成器115當由處理器105執(zhí)行時,產(chǎn)生表示FIFO存儲器的可綜合代碼120??删C合代碼120可以與由生成器程序所產(chǎn)生的或者由程序員授權(quán)的其他代碼結(jié)合,以產(chǎn)生用于集成電路的可綜合代碼??梢砸訴erilog、VHDL或者本領(lǐng)域技術(shù)人員已知的其他硬件描述語言來寫可綜合代碼120??梢允褂蒙虡I(yè)上可獲得的綜合工具諸如由Synopsys公司開發(fā)的Design Complier?和由Synplicity公司開發(fā)的Synplify?來對可綜合代碼120進行綜合,以產(chǎn)生限定集成電路的部件和連接的網(wǎng)表。在一個實施例中,網(wǎng)表可以用于設(shè)計和制造圖形處理單元(GPU)中的FIFO存儲器,GPU可以用在諸如臺式計算機、筆記本電腦、移動電話、服務(wù)器等計算設(shè)備中。
[0017]圖2示出根據(jù)本發(fā)明的一個實施例的、包括具有折疊式存儲器單元的FIFO的硬件系統(tǒng)200的框圖。硬件系統(tǒng)200可以是集成電路(例如GPU或者CPU)、FPGA、存儲器、安裝在共享PCB上的硬件單元等。硬件系統(tǒng)包括至少部分是使用圖1的可綜合代碼生成的FIF0210。也就是說,F(xiàn)IF0210包括其功能由FIFO代碼生成器所產(chǎn)生的可綜合代碼限定的一個或多個硬件元件。FIF0210包括FIFO邏輯215,其包括用于實施FIFO操作(例如存儲和取回)所需的邏輯。FIFO邏輯215還可以被賦予任務(wù):接收來自硬件系統(tǒng)200中的其他部件的數(shù)據(jù)存儲請求,以及傳送所請求的數(shù)據(jù)到這些部件。FIF0210包括線程束220,其使得FIFO邏輯215能夠與折疊式隨機存取存儲器(RAM) 225交互。例如,F(xiàn)IFO邏輯215可以輸入數(shù)據(jù)和對應(yīng)的寫地址到線程束220,線程束220隨后控制如何將數(shù)據(jù)寫到折疊式RAM225。通過使用線程束220,F(xiàn)IFO邏輯215可以配置為,就像FIFO邏輯215被耦連到非折疊式存儲器元件而不是折疊式存儲器元件一樣實施。在一個實施例中,F(xiàn)IFO邏輯215可以是即使FIF0210包括非折疊式存儲器單元其仍然會被使用的相同的邏輯。因此,為了使用FIF0210中的折疊式存儲器,只需要增加線程束220到FIF0210,而FIFO邏輯215的其余部分可以保持基本不變。
[0018]折疊式RAM225是具不同于描述FIF0210的深度和寬度規(guī)格的規(guī)格的存儲器元件。在一個實施例中,即使規(guī)格可能不同,但總存儲空間可以相同(雖然這并不被要求)。例如在總存儲容量可以不同的情況下,用戶可能期望每條目存儲3位的128個條目的FIFO (即最大容量386位)。因為與RAM相關(guān)聯(lián)的物理的或者設(shè)計限制,折疊式RAM225的規(guī)格可以是64X8 (最大容量512位),而不是例如將會與128X3FIF0的容量匹配的32X6。因此,在FIF0210的操作期間,折疊式RAM225可能包括未被使用的存儲位置。盡管如此,即使一些位置未被使用,與使用非折疊式存儲器單元(例如128 X 8RAM)相比,折疊式RAM225仍可能是更節(jié)能的和/或面積有效的。雖然在本發(fā)明的實施例中RAM示出為FIF0210的存儲元件,但本公開并不限于此。在其他實施例中,存儲器元件可以由觸發(fā)器、寄存器、鎖存器等實現(xiàn)。
[0019]圖3A-3G示出了根據(jù)本發(fā)明的實施例的、寫入使用線程束220和折疊式RAM225的FIFO存儲器以及從使用線程束220和折疊式RAM225的FIFO存儲器讀取。具體地,線程束220包括緩沖區(qū)302 (buff )和折疊式RAM225。緩沖區(qū)302是與折疊式RAM225分開的存儲器元件,并且可以包括多個觸發(fā)器、鎖存器、寄存器等。緩沖區(qū)302的輸入端耦連到線程束220的輸入(di),并且在該示例中是8位寬。對于圖3A-3G,假設(shè)FIFO是使用16X8折疊式RAM225來實現(xiàn)的128深I(lǐng)位寬的存儲器。
[0020]如圖3A所示,根據(jù)時鐘信號(例如前沿或者后沿),線程束220按照寫使能(we)信號所指示的接收將存儲在FIFO中的位301。FIFO邏輯(未示出)可以轉(zhuǎn)發(fā)位301到線程束并控制寫使能信號。如圖3B所示,線程束220根據(jù)寫地址(wa)將所接收的位存儲在緩沖區(qū)302。然而此時,位301沒有存儲在折疊式RAM255 (即FIFO的主要存儲元件)。相反,位301保持存儲在緩沖區(qū)302。在一個實施例中,寫過程可以描述為位301被接收并且隨后存儲在緩沖區(qū)302的兩步驟的過程。寫過程可以在兩個順序的時鐘周期期間或者在相同周期的上升沿和下降沿期間發(fā)生。
[0021]如圖3C所示,重復(fù)寫過程直到緩沖區(qū)302已滿。例如,在FIFO邏輯對應(yīng)于每個命令傳送給線程束220 —位的情況下,F(xiàn)IFO可以接收8個存儲命令。線程束220將這些位存儲在緩沖區(qū)302。當線程束220將第8個所接收的位存儲在緩沖區(qū)302時,讀使能(re)信號指示FIFO應(yīng)該輸出第I個存儲在FIFO中的數(shù)據(jù)位。
[0022]圖3D示出了使得線程束220能夠從緩沖區(qū)302或者折疊式RAM225讀取數(shù)據(jù)來滿足讀請求的邏輯。具體地,線程束220包括存儲器選擇器305,其配置為確定所請求的數(shù)據(jù)是存儲在緩沖區(qū)302還是折疊式RAM225中。如果數(shù)據(jù)在緩沖區(qū)302中,那么存儲器選擇器305使用可以基于讀地址(ra)的3-位信號來從緩沖區(qū)302選擇對應(yīng)的位。例如,緩沖區(qū)302中的每個存儲器位置可以耦連到8個輸入端/I個輸出端的多路復(fù)用器306或者使用3-位信號來選擇存儲位置之一的多路復(fù)用器(mux)。如果數(shù)據(jù)存儲在折疊式RAM225中,那么存儲器選擇器305可以傳送4-位行地址信號到折疊式RAM225,其選擇數(shù)據(jù)所位于的行。下面將具體描述從RAM225讀取。
[0023]因為與圖3D中所提供的讀地址對應(yīng)的數(shù)據(jù)(即位301)存儲在緩沖區(qū)302中,所以存儲器選擇器305傳送該數(shù)據(jù)的復(fù)制到延遲緩沖區(qū)307 (buff_d)。也就是說,在一個實施例中,在位301沒有被從緩沖區(qū)302驅(qū)逐的情況下,其被存儲在延遲緩沖區(qū)307。即使在線程束220中位302保持存儲在存儲器元件中,線程束之外的FIFO邏輯也可以使與位301相對應(yīng)的存儲器地址無效——即地址I。因此,在取回操作期間,正在讀出的數(shù)據(jù)可能被從FIFO邏輯上驅(qū)逐,而實際的數(shù)據(jù)可以保持存儲在FIFO中。繼續(xù)該示例,地址2成為FIFO存儲器的頂部。因此,如果FIFO被要求實施另一個取回操作,那么由FIFO邏輯所提供的新的讀地址會是地址2。因此,在該實施例中,管理數(shù)據(jù)可以由在線程束220外部的FIFO邏輯來實施。然而在其他實施例中,線程束220自身可以具有管理和存儲數(shù)據(jù)兩者所需的電路。
[0024]因為所請求的數(shù)據(jù)可以來自緩沖區(qū)302或者折疊式RAM225,所以線程束220包括多路復(fù)用器313,其由延遲緩沖區(qū)控制信號(use_buff_d)控制。如在此所示,如果該信號為低,那么線程束220的輸出(dout)是延遲緩沖區(qū)307的輸出。如果信號為高,那么輸出位由折疊RAM225提供。
[0025]在圖3E,線程束220按照寫使能信號的指示在輸入處接收第9位315。然而在存儲所接收的數(shù)據(jù)之前,線程束220可以轉(zhuǎn)移存儲在緩沖區(qū)302中的至少部分數(shù)據(jù)到折疊式RAM225。在一個實施例中,線程束220可以使用寫使能信號和當前寫地址的組合,來確定是否應(yīng)該轉(zhuǎn)移緩沖區(qū)302中的至少一些內(nèi)容。例如,如果寫使能信號為高并且寫地址具有與緩沖區(qū)302的多個存儲容量對應(yīng)的值,那么線程束220將緩沖區(qū)302中的數(shù)據(jù)轉(zhuǎn)移到折疊式 RAM225。
[0026]如圖3F所示,緩沖區(qū)302的內(nèi)容被存儲到折疊式RAM225 (例如第I行)。此外,將輸入位315存儲在目前空的緩沖區(qū)302。雖然,示出為同步發(fā)生,在另一個實施例中,圖3F所示的過程可以例如發(fā)生在不同的時鐘周期。隨著更多的數(shù)據(jù)存儲到FIF0,線程束220可以繼續(xù)填滿緩沖區(qū)302。一旦該存儲器元件再次填滿,線程束220可以將數(shù)據(jù)轉(zhuǎn)移到折疊式RAM225。在一個實施例中,一旦確定緩沖區(qū)302是滿的,無需等待直到新的數(shù)據(jù)被接收,線程束220就可以轉(zhuǎn)移數(shù)據(jù)。
[0027]在一個實施例中,線程束220之外的FIFO邏輯可以確定如果超出FIFO的容量則該做什么,在該示例中,這在FIFO被要求存儲128位以上的數(shù)據(jù)時發(fā)生。在一個實施例中,如果要求存儲大于FIFO容量,那么如果發(fā)送器是可停的(Stallable)則FIFO邏輯可以反壓發(fā)送器。而且,F(xiàn)IFO邏輯可以繼續(xù)確定與FIFO頂部對應(yīng)的地址。假設(shè)例如FIFO存儲128位數(shù)據(jù)并且讀出第一個8位。因為順序訪問FIFO中的數(shù)據(jù),所以由FIFO邏輯將存儲在地址1-8處的第一個8位數(shù)據(jù)無效。如果FIFO邏輯隨后轉(zhuǎn)發(fā)8個附加的位以存儲,線程束220可以自由將這些位存儲到之前由被讀出的位所占用的存儲位置——即地址1-8。FIFO隊列的頂部將是地址9,而地址8是FIFO的底部。這樣,F(xiàn)IFO可以響應(yīng)于取回數(shù)據(jù)的請求而更新,而不必將緩沖區(qū)302和折疊式RAM225中的數(shù)據(jù)驅(qū)逐和移位。
[0028]返回圖3E,當線程束220存儲位315到緩沖區(qū)302時,讀使能信號可以指示FIFO邏輯正請求線程束220實施另一個讀操作。與其中所請求的數(shù)據(jù)存儲在緩沖區(qū)302中的圖3D相反,在圖3G中線程束220從折疊式RAM225取回所請求的數(shù)據(jù)302。在一個實施例中,存儲器選擇器305確定所請求的數(shù)據(jù)320是存儲在緩沖區(qū)302還是折疊式RAM225中。例如,存儲器選擇器305可以基于讀地址來確定是否所請求的數(shù)據(jù)320之前已經(jīng)從緩沖區(qū)302移動到折疊式RAM225。在圖3F中因為所請求的數(shù)據(jù)位320被移動到RAM225,所以存儲器選擇器305使用行選擇信號(ra_f)來激活折疊式RAM225中的與所請求的位320對應(yīng)的行。行中的數(shù)據(jù)隨后可以由折疊式RAM225輸出。
[0029]線程束220包括位偏移信號(ro_d),其選擇折疊式RAM的8位輸出中的特定位。具體,將位偏移信號用作用于多路復(fù)用器310的控制信號,以從行選擇正確的位。隨后控制用于多路復(fù)用器313的選擇信號,使得來自多路復(fù)用器310的輸出被用作線程束220的輸出,而忽略延遲緩沖區(qū)307的輸出。隨著位320從線程束220輸出(即通過多路復(fù)用器310和313),其采用的通常路徑由箭頭360生動示出。在一個實施例中,從折疊式RAM225取回所請求的數(shù)據(jù)320并從線程束220輸出該數(shù)據(jù)僅占用一個周期,而在其他實施例中,讀取過程可能要求多個周期。雖然圖3A-3G示出了只有I位寬的FIFO條目,但是線程束可以配置為存儲和取回具有任何數(shù)目的位的FIFO條目,例如具有2位寬的64個條目的FIFO。
[0030]圖4A-4B示出了根據(jù)本發(fā)明的實施例的、從FIFO存儲器中的相同存儲器地址寫入數(shù)據(jù)和讀取數(shù)據(jù)。具體地,圖4A示出了 FIFO存儲器中的線程束400,其使能以并行的方式從相同F(xiàn)IFO存儲器地址寫入和讀取。也就是說,除了能夠從不同的地址同步讀取和寫入之夕卜,圖4A-4B所示的FIFO存儲器可以實施從相同地址同步讀取和寫入。為了實施從相同地址讀取和寫入,寫入和讀取使能信號都變高。而且,線程束400包括使得所接收的數(shù)據(jù)370能夠旁路緩沖區(qū)302的數(shù)據(jù)路徑。如所示,多路復(fù)用器365對是否許可所接收的數(shù)據(jù)位旁路緩沖區(qū)302以直接存儲到延遲緩沖區(qū)307進行控制。多路復(fù)用器365由控制信號(same_addr_write_and_read)控制,其基于針對相同地址的寫使能和讀使能信號。如果這些信號都為高,那么用于多路復(fù)用器365的控制信號將在線程束的輸入處所接收的數(shù)據(jù)路由到延遲緩沖區(qū)307,如箭頭380所示。如果不是,則多路復(fù)用器365將存儲在緩沖區(qū)302的數(shù)據(jù)位轉(zhuǎn)移到延遲緩沖區(qū)307。無論多路復(fù)用器365是否許可所接收的數(shù)據(jù)370旁路緩沖區(qū)302,箭頭375都示出所接收的位370被傳送到緩沖區(qū)302用于存儲。雖然沒有示出,但線程束可以包括圖3G中所述的、用于從緩沖區(qū)302取回所請求的數(shù)據(jù)的相同的存儲器選擇器。
[0031]圖4B示出了當輸出所接收的數(shù)據(jù)時線程束400的狀態(tài)。線程束400控制多路復(fù)用器313,使得延遲緩沖區(qū)307的輸出一即所接收的位370——成為線程束400的輸出。這樣,在一個周期所接收的數(shù)據(jù)可以在下一個周期輸出。如果線程束400不包括多路復(fù)用器365,那么數(shù)據(jù)370將從緩沖區(qū)302取回,這可能要求附加的時鐘周期。因此,在期望從相同地址同步寫入和讀取的實施例中,線程束400可以是優(yōu)選的。雖然沒有示出,線程束400可以包括如以上在圖3A-3G所述的、用于訪問和取回存儲在折疊式RAM225中的數(shù)據(jù)的附加的邏輯。
[0032]表1示出了用于生成折疊式FIFO的可綜合代碼。具體地,表1示出了可以由圖1所示的FIFO生成器產(chǎn)生的可綜合代碼500。當表1中的代碼被綜合時,其配置硬件邏輯(例如圖3A-3G以及圖4A-4B所示的邏輯)為創(chuàng)建用于折疊式FIFO的線程束。也就是說,經(jīng)綜合的代碼生成具有上述功能的折疊式FIFO。為了簡潔,如表1和2中所提供的代碼,圖3A-3G以及圖4A-4B所示的信號和電路包括相同的變量名。
[0033]
【權(quán)利要求】
1.一種方法,包括: 接收將第一數(shù)據(jù)部分存儲在先進先出(FIFO)存儲器中的請求; 將所述第一數(shù)據(jù)部分存儲在所述FIFO存儲器中的緩沖區(qū)中; 接收將第二數(shù)據(jù)部分存儲在所述FIFO存儲器中的請求; 對將所述第二數(shù)據(jù)部分存儲在所述緩沖區(qū)中將會超過所述緩沖區(qū)的容量進行確定;以及 將所述緩沖區(qū)的內(nèi)容存儲到所述FIFO存儲器中的存儲器元件的單個行,其中所述存儲器元件中的每行設(shè)定大小為存儲多個數(shù)據(jù)部分。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括: 接收從所述FIFO存儲器取回所存儲的數(shù)據(jù)部分的讀請求; 確定所述所存儲的數(shù)據(jù)部分是在所述緩沖區(qū)中還是在所述存儲器元件中; 如果所述所存儲的數(shù)據(jù)部分在所述緩沖區(qū)中,那么從所述緩沖區(qū)取回所述所存儲的數(shù)據(jù)而不訪問所述存儲器元件;或者 如果所述所存儲的數(shù)據(jù)部分在所述存儲器元件中,那么從所述存儲器元件取回所述所存儲的數(shù)據(jù)部分而不訪問所述緩沖區(qū)。
3.根據(jù)權(quán)利要求1所述的方法,進一步包括: 接收對相同存儲器地址的 同步的讀請求和寫請求; 將與所述同步的讀請求和寫請求相關(guān)聯(lián)的第三數(shù)據(jù)部分,經(jīng)由旁路所述緩沖區(qū)和所述存儲器元件的數(shù)據(jù)路徑,路由到所述FIFO存儲器的輸出端;以及 將所述第三數(shù)據(jù)部分存儲在所述緩沖區(qū)中,其中所述第三數(shù)據(jù)部分經(jīng)由所述數(shù)據(jù)路徑被同步路由和存儲在所述緩沖區(qū)。
4.一種FIFO存儲器,包括 緩沖區(qū),用于存儲與由所述FIFO存儲器所接收的寫請求相關(guān)聯(lián)的多個數(shù)據(jù)部分; 耦連到所述緩沖區(qū)的存儲器元件,其中所述存儲器元件中的每行設(shè)定大小為存儲多個數(shù)據(jù)部分;以及 路由邏輯,配置為對將下一個數(shù)據(jù)部分存儲在所述緩沖區(qū)將會超過所述緩沖區(qū)的容量進行確定,并且將所述緩沖區(qū)的內(nèi)容存儲到所述存儲器元件的單個行。
5.根據(jù)權(quán)利要求4所述的FIFO存儲器,進一步包括: 選擇邏輯,配置為響應(yīng)于取回所存儲的數(shù)據(jù)部分的讀請求: 確定所述所存儲的數(shù)據(jù)部分是在所述緩沖區(qū)中還是在所述存儲器元件中; 如果所述所存儲的數(shù)據(jù)部分在所述緩沖區(qū)中,那么從所述緩沖區(qū)取回所述所存儲的數(shù)據(jù)而不訪問所述存儲器元件;或者 如果所述所存儲的數(shù)據(jù)部分在所述存儲器元件中,那么從所述存儲器元件取回所述所存儲的數(shù)據(jù)部分而不訪問所述緩沖區(qū)。
6.根據(jù)權(quán)利要求5所述的FIFO存儲器,其中所述選擇邏輯包括置于所述緩沖區(qū)和所述FIFO存儲器的輸出端之間的數(shù)據(jù)路徑中的延遲緩沖區(qū),并且所述延遲緩沖區(qū)配置為,在所述所存儲的數(shù)據(jù)部分從所述FIFO存儲器輸出之前,存儲從所述緩沖區(qū)取回的所述所存儲的數(shù)據(jù)部分。
7.根據(jù)權(quán)利要求5所述的FIFO存儲器,其中所述選擇邏輯包括置于所述存儲器元件和所述FIFO存儲器的輸出端之間的數(shù)據(jù)路徑中的多路復(fù)用器,并且所述多路復(fù)用器配置為,從存儲在所述存儲器元件的行中的多個數(shù)據(jù)部分選擇所述所存儲的數(shù)據(jù)部分。
8.根據(jù)權(quán)利要求4所述的FIFO存儲器,其中所述存儲器元件的總行數(shù)小于所述FIFO存儲器的總深度。
9.根據(jù)權(quán)利要求4所述的FIFO存儲器,其中所述存儲器元件的行的寬度通過改變所述FIFO存儲器的深度和寬度規(guī)格直到與經(jīng)改變的規(guī)格對應(yīng)的寬度規(guī)格小于或者等于最小寬度閾值來選擇。
10.根據(jù)權(quán)利要求4所述的FIFO存儲器,其中所述存儲器元件包括隨機存取存儲器(RAM),并且其中 所 述第一數(shù)據(jù)部分存儲在所述RAM的一個或多個存儲單元中。
【文檔編號】G11C11/413GK103853522SQ201310658886
【公開日】2014年6月11日 申請日期:2013年12月6日 優(yōu)先權(quán)日:2012年12月6日
【發(fā)明者】羅伯特·A·阿爾菲里 申請人:輝達公司