專利名稱::高速緩存及其數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種高速緩存及其數(shù)據(jù)處理方法,特別是一種用于影像處理裝置的高速緩存及其數(shù)據(jù)處理方法。
背景技術(shù):
:影像處理標(biāo)準(zhǔn)H.264的影像譯碼器對外部動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)訪問量與標(biāo)準(zhǔn)MPEG2相比,增加了好幾倍。在R264的影像譯碼器,訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)量最大的是運(yùn)動(dòng)補(bǔ)償部分。例如,在進(jìn)行圖像重構(gòu)時(shí),讀取的數(shù)據(jù)量以每個(gè)宏塊為單位讀取的數(shù)據(jù)量來說,在最差的情況下(worstcase)情況下,是通常一個(gè)宏塊數(shù)據(jù)量的9到10倍。因此,對存儲器的帶寬要求也大為增加。在常見的支持H.264譯碼芯片的芯片系統(tǒng)(SystemonChip,SoC)系統(tǒng)中,不得不采用兩條以上的存儲器信道(memorychannel),來滿足整個(gè)系統(tǒng)對帶寬的要求,因而相應(yīng)的產(chǎn)品成本也會上升。然而,現(xiàn)有技術(shù)中也有適用一高速緩存來暫存影像譯碼器所需的影像數(shù)據(jù)的方法。其中,當(dāng)影像譯碼器需要讀取數(shù)據(jù)時(shí),若高速緩存中有影像譯碼器所需的數(shù)據(jù)時(shí),便在高速緩存中讀?。蝗舾咚倬彺嬷袥]有影像譯碼器需要讀取的數(shù)據(jù),則再去動(dòng)態(tài)隨機(jī)存取存儲器中讀取。但是,現(xiàn)有技術(shù)對于配合高速緩存在動(dòng)態(tài)隨機(jī)存取存儲器讀取影像數(shù)據(jù)的技術(shù),往往會存在影像譯碼器無法實(shí)際從高速緩存中讀取到有效的數(shù)據(jù),以及讀取動(dòng)態(tài)隨機(jī)存取存儲器的效率不高等缺點(diǎn),無法有效發(fā)揮影像數(shù)據(jù)預(yù)讀取的功效。
發(fā)明內(nèi)容本發(fā)明的目的在于,通過分析H.264影像譯碼器數(shù)據(jù)訪問的特點(diǎn),提供一種高效率的數(shù)據(jù)高速緩存與其數(shù)據(jù)處理方法。通過本發(fā)明的高速緩存及其數(shù)據(jù)處理方法,可以有效的提高高速緩存中數(shù)據(jù)的命中率及訪問動(dòng)態(tài)隨機(jī)存取存儲器的效率,對比于從外部動(dòng)態(tài)隨機(jī)存取存儲器讀數(shù)據(jù),速度會更快,從而可加快系統(tǒng)譯碼的速度,同時(shí),本發(fā)明還可以降低生產(chǎn)成本,提高產(chǎn)品的競爭力。為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種高速緩存,用于暫存一動(dòng)態(tài)存取存儲器的數(shù)據(jù),供一影像譯碼器讀取,該高速緩存包括一命中比較單元,接收一讀動(dòng)態(tài)存取存儲器請求,用于比較判斷該讀動(dòng)態(tài)存取存儲器請求是一命中高速緩存的讀動(dòng)態(tài)存取存儲器請求,還是一未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求;一合并模塊,連接至該命中比較單元,接收及合并該未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求;一指令隊(duì)列模塊,連接至該命中比較單元及該合并模塊,根據(jù)命中高速緩存的讀動(dòng)態(tài)存取存儲器請求及合并后的該未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求,讀取該動(dòng)態(tài)存取存儲器的數(shù)據(jù)及該高速緩存中的數(shù)據(jù)。此外,本發(fā)明還提供了一種高速緩存的數(shù)據(jù)處理方法,供一影像譯碼器在一動(dòng)態(tài)隨機(jī)存取存儲器中讀取數(shù)據(jù),該方法包括以下步驟首先,接收該影像譯碼器送來的一讀動(dòng)態(tài)隨機(jī)存取存儲器請求,然后,通過一命中比較單元判斷該讀動(dòng)態(tài)隨機(jī)存取存儲器請求是否命中該高速緩存。若比較結(jié)果為命中,則將該讀動(dòng)態(tài)隨機(jī)存取存儲器請求的信息傳送寫入一指令隊(duì)列模塊。若比較結(jié)果為未命中,則將該讀動(dòng)態(tài)隨機(jī)存取存儲器請求的信息傳送至一合并模塊,由該合并模塊將該未命中的讀動(dòng)態(tài)隨機(jī)存取存儲器請求合并。在合并模塊合并該未命中的讀動(dòng)態(tài)隨機(jī)存取存儲器請求后,將合并后的信息寫入該指令隊(duì)列模塊。最后,該指令接收模塊根據(jù)該命中比較單元及該合并模塊所寫入的信息,從該動(dòng)態(tài)隨機(jī)存取存儲器或該高速緩存中讀取該讀動(dòng)態(tài)隨機(jī)存取存儲器請求的數(shù)據(jù)。以下結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。圖1為本發(fā)明高速緩存的功能方塊圖;圖2為本發(fā)明指令隊(duì)列模塊的功能方塊圖;圖3為第一級緩存指令隊(duì)列示意圖;圖4為第二級緩存指令隊(duì)列示意圖5為多指令流出方式的時(shí)序示意圖6為本發(fā)明高速緩存數(shù)據(jù)處理方法的流程圖。其中,附圖標(biāo)記l一高速緩存2—運(yùn)動(dòng)補(bǔ)償單元3—?jiǎng)討B(tài)隨機(jī)存取存儲器IO—命中比較單元101—命中比較模塊102—命中地址產(chǎn)生模塊20—合并模塊30—指令隊(duì)列模塊301—第一級緩存指令隊(duì)列302—第二級緩存指令隊(duì)列303—指令控制單元304—地址產(chǎn)生單元40—第一協(xié)議控制模塊50—第二協(xié)議控制模塊60—第一暫存模塊控制單元70—第一數(shù)據(jù)暫存模塊80—地址暫存模塊90—第二數(shù)據(jù)暫存模塊IOO—第二暫存模塊控制單元IIO—數(shù)據(jù)選擇模塊READ—CACHE—QUE_讀第二數(shù)據(jù)暫存模塊的指令隊(duì)列WRITE—CACHE一QUE—寫第二數(shù)據(jù)暫存模塊的指令隊(duì)列READ—BUF—QUE—讀第一數(shù)據(jù)暫存模塊的指令隊(duì)列WRITE_BUF—QUE—寫第一數(shù)據(jù)暫存模塊的指令隊(duì)列READ—DRAM—QUE—讀動(dòng)態(tài)隨機(jī)存取存儲器的指令隊(duì)列ReadCache—讀第二數(shù)據(jù)暫存模塊的指令WriteCache—寫第二數(shù)據(jù)暫存模塊的指令ReadBUF—讀第一數(shù)據(jù)暫存模塊的指令WriteBUF—寫第一數(shù)據(jù)暫存模塊的指令ReadDram—讀動(dòng)態(tài)隨機(jī)存取存儲器的指令CACHE—CLK—高速緩存的時(shí)鐘信號READ—DRAM,RDD—讀動(dòng)態(tài)隨機(jī)存取存儲器WRITE—CACHE,RDC—寫第二數(shù)據(jù)暫存模塊WRITE—BUF,WRB—寫第一數(shù)據(jù)暫存模塊READ—BUF,RDB—讀第一數(shù)據(jù)暫存模塊WRITE一CACHE,WRC—寫第二數(shù)據(jù)暫存模塊DATA2CIDEO—VALD—數(shù)據(jù)擷取信號DATA2VIDEO—數(shù)據(jù)傳送具體實(shí)施例方式在11.264影像譯碼器(VideoDecoder)中,訪問數(shù)據(jù)量最大的是運(yùn)動(dòng)補(bǔ)償部分。針對許多數(shù)據(jù)是可以重復(fù)利用的及可以預(yù)先讀回的這一特性,我們可以將這些需要重復(fù)利用或預(yù)先讀回的數(shù)據(jù),保存在高速緩存(Cache)中。同時(shí),需要從動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)中讀取數(shù)據(jù)的請求(沒有命中高速緩存的讀請求),可依據(jù)動(dòng)態(tài)隨機(jī)存取存儲器中數(shù)據(jù)可以順序(wraplinear或sequential)方式讀取的特性,把沒有命中高速緩存而需從動(dòng)態(tài)隨機(jī)存取存儲器中讀取數(shù)據(jù)的請求進(jìn)行合并。從而可通過增加每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength),來提高訪問動(dòng)態(tài)隨機(jī)存取存儲器的效率。在H.264影像譯碼器的高速緩存的設(shè)計(jì)中,為了降低讀外部動(dòng)態(tài)隨機(jī)存取存儲器的響應(yīng)延遲時(shí)間(Latency)對影像譯碼器譯碼速度的影響,提高高速緩存的效率。本發(fā)明通過高速緩存內(nèi)部的指令機(jī),在高速緩存內(nèi)部的某種狀態(tài)下,每個(gè)時(shí)鐘周期發(fā)送多個(gè)指令的方式,將讀動(dòng)態(tài)隨機(jī)存取存儲器的響應(yīng)延遲時(shí)間(latency)隱藏在讀內(nèi)部高速緩存的操作中。從而提高系統(tǒng)的效率,加快譯碼的速度。再者,在設(shè)計(jì)高速緩存的時(shí)候,一方面為了節(jié)約面積,我們用靜態(tài)隨機(jī)存取存儲器(SRAM)來保存每筆需要更新到高速緩存中的數(shù)據(jù),同時(shí),用靜態(tài)隨機(jī)存取存儲器保存該數(shù)據(jù)對應(yīng)在動(dòng)態(tài)隨機(jī)存取存儲器中的地址。因此,在進(jìn)行高速緩存數(shù)據(jù)命中比較的時(shí)候,只要將該讀地址與動(dòng)態(tài)隨機(jī)存取存儲器中所有保存的有效地址比較一遍,就可以知道該讀請求有沒有命中高速緩存。進(jìn)而,本發(fā)明采用了動(dòng)態(tài)調(diào)整高速緩存中數(shù)據(jù)的有效性的方法,以提高高速緩存中數(shù)據(jù)的命中率。以下將進(jìn)一步說明本發(fā)明的上述特點(diǎn)及工作原理。請參閱圖l,此為本發(fā)明高速緩存的功能方塊圖。如圖所示,影像譯碼器的運(yùn)動(dòng)補(bǔ)償單元2通過本發(fā)明的高速緩存1從動(dòng)態(tài)隨機(jī)存取存儲器3中讀取數(shù)據(jù)。本發(fā)明的高速緩存1的主要架構(gòu)包括一高速緩存命中比較單元10、一合并模塊20及一指令隊(duì)列模塊30。其中,高速緩存命中比較單元IO包括一命中比較模塊101及一命中地址產(chǎn)生模塊102。另外,本發(fā)明的高速緩存l還包括一第一協(xié)議控制模塊40、第二協(xié)議控制模塊50、第一暫存模塊控制單元60、第一數(shù)據(jù)暫存模塊70、地址暫存模塊80、第二數(shù)據(jù)暫存模塊90、第二暫存模塊控制單元100及數(shù)據(jù)選擇模塊110。其中,第一數(shù)據(jù)暫存模塊70用于暫存由動(dòng)態(tài)隨機(jī)存取存儲器3讀回的數(shù)據(jù),第二數(shù)據(jù)暫存模塊90為用于保存高速緩存1的數(shù)據(jù)的模塊。接下來,介紹本發(fā)明高速緩存l中各模塊的功能及彼此的關(guān)系。高速緩存1利用第一協(xié)議控制模塊40連接至影像譯碼器的運(yùn)動(dòng)補(bǔ)償單元2。第一協(xié)議控制模塊40用于高速緩存1與運(yùn)動(dòng)補(bǔ)償單元2間接口協(xié)議的控制,通過內(nèi)部存儲器總線(Internalmemorybus)連接至運(yùn)動(dòng)補(bǔ)償單元2。運(yùn)動(dòng)補(bǔ)償單元2傳送一讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求,經(jīng)第一協(xié)議控制模塊40到命中比較單元10。命中比較單元10的命中比較模塊101接收該讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求,并依照每一請求發(fā)送的順序進(jìn)行編碼,每一請求對應(yīng)一個(gè)編碼序號索引(index)。索引的位寬由后級指令隊(duì)列模塊30中的隊(duì)列深度決定,因?yàn)樵摼幋a序號索引將作為指令隊(duì)列的地址指針。接著,命中比較模塊101便將編碼后的每個(gè)請求進(jìn)行高速緩存l命中比較,該命中比較是一個(gè)多級的流水(pipe)過程,并采用動(dòng)態(tài)調(diào)整數(shù)據(jù)的有效性的方法,以提高高速緩存1中數(shù)據(jù)的命中率。所謂動(dòng)態(tài)調(diào)整數(shù)據(jù)的有效性的方法,其特點(diǎn)在于,在流水(pipe)命中比較過程中,有些保存在高速緩存l中的數(shù)據(jù)是無效的,而有些還在動(dòng)態(tài)隨機(jī)存取存儲器3中將要被讀回或正在讀回的數(shù)據(jù)卻是有效的。在高速緩存1數(shù)據(jù)更新機(jī)制上,通過分析影像譯碼器運(yùn)動(dòng)補(bǔ)償部分圖像重構(gòu)讀取數(shù)據(jù)"向右、向下"的特性、圖像重構(gòu)劃分的邊界數(shù)據(jù)可以重復(fù)利用以及可以部分預(yù)讀取的特點(diǎn),我們采用時(shí)間順序的原則,即最早保存在高速緩存1中的數(shù)據(jù)最先被覆蓋的方法,來更新數(shù)據(jù)。同時(shí),采用16級的流水(pipe)來進(jìn)行數(shù)據(jù)命中比較,在這16級流水(pipe)命中比較的時(shí)候,在每一級比較中同樣遵循時(shí)間順序的原則,即每一級比較不僅與從靜態(tài)隨機(jī)存取存儲器(如圖1地址暫存模塊80)中讀出來的地址比較,同時(shí)還要與在這16級流水(pipe)中,在當(dāng)前這一級流水(pipe)的前面所有流水(pipe)中將要被寫進(jìn)靜態(tài)隨機(jī)存取存儲器中保存的動(dòng)態(tài)隨機(jī)存取存儲器3的地址進(jìn)行比較。也就是將這16級流水(pipe)中有可能將被寫進(jìn)高速緩存1的數(shù)據(jù)的地址,也參與命中比較,而這些數(shù)據(jù)還是存在動(dòng)態(tài)隨機(jī)存取存儲器3中沒有被讀回來的。每一級命中比較從靜態(tài)隨機(jī)存取存儲器讀出來的地址,還要看它是否將要被排在它前面的可能寫進(jìn)高速緩存的,但是還在這16級流水(pipe)中的請求所覆蓋,若將被覆蓋則該命中無效,即,有些已經(jīng)存在高速緩存中的數(shù)據(jù)是無效的。通過這種動(dòng)態(tài)地調(diào)整每一級中參加比較的地址的有效性(也就是數(shù)據(jù)的有效性)來確保參與比較的有效地址是最近被更新的,以提高高速緩存1的命中率。當(dāng)然,若采用4級、8級的流水(pipe)命中比較方法,也可以采用這種動(dòng)態(tài)調(diào)整的方式。若比較結(jié)果該讀請求有命中,表示該請求所要讀的數(shù)據(jù)可從高速緩存1中讀取。接著,命中比較單元IO便傳送該命中請求的相關(guān)信息給指令隊(duì)列模塊30及命中地址產(chǎn)生模塊102;同時(shí)由命中地址產(chǎn)生模塊102產(chǎn)生命中高速緩存1的地址及命中標(biāo)志,并將命中高速緩存1的地址及命中標(biāo)志傳通過內(nèi)部流水(pipe)寫入指令隊(duì)列模塊30。若是比較結(jié)果該讀請求沒有命中,表示必須從動(dòng)態(tài)隨機(jī)存取存儲器3中讀取。則命中比較單元10將讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求傳送至合并模塊20。合并模塊20會將每一個(gè)沒命中高速緩存1的讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求進(jìn)行合并,并將合并后的相關(guān)信息送入指令隊(duì)列模塊30。上述合并模塊20可利用動(dòng)態(tài)隨機(jī)存取存儲器3的存儲數(shù)據(jù)可以以順序(wraplinear或s叫uential)方式讀取的特性,將沒命中高速緩存1的讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求進(jìn)行合并,再將合并后的相關(guān)信息送入指令隊(duì)列模塊30,以從動(dòng)態(tài)隨機(jī)存取存儲器3讀取數(shù)據(jù)。增加每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength),可以提高訪問動(dòng)態(tài)隨機(jī)存取存儲器3的效率。以每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength)為4舉例,請同時(shí)請參考表一所示<table>tableseeoriginaldocumentpage11</column></row><table>(表一)表一表示動(dòng)態(tài)隨機(jī)存取存儲器3的存儲數(shù)據(jù)可以以順序(wraplinear或sequential)方式讀取的特性,與首地址及每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength)間的關(guān)系。假設(shè)我們首先要讀數(shù)據(jù)"2",然后又有某些請求要讀數(shù)據(jù)"3"、數(shù)據(jù)"0"及數(shù)據(jù)"1",那我們就可以利用表一所示的特性,將這四筆不連續(xù)的讀請求合并成一筆讀請求,只要令首地址的起始位為"10",且數(shù)據(jù)長度(BurstLength)為4就可以了。數(shù)據(jù)回來的順序是按"2、3、0、1"的順序;這樣向動(dòng)態(tài)隨機(jī)存取存儲器3發(fā)送的請求就可以從四次減少到一次,數(shù)據(jù)總線上傳輸?shù)臄?shù)據(jù)也可以連續(xù)起來,從而可以提高訪問動(dòng)態(tài)隨機(jī)存取存儲器3的效率。因此,數(shù)據(jù)長度(BurstLength)的值就是該讀請求需要的數(shù)據(jù)個(gè)數(shù),本發(fā)明的數(shù)據(jù)長度(BurstLength)的值并不限定于4;在總的數(shù)據(jù)量一定的情況下,訪問數(shù)據(jù)長度(BurstLength)的值越大(當(dāng)然不能超過系統(tǒng)規(guī)定的最大值),則請求的次數(shù)便越少,訪問動(dòng)態(tài)隨機(jī)存取存儲器3的效率就越高。接著,請參閱圖2,此為本發(fā)明指令隊(duì)列模塊的功能方塊圖。通過前述的說明可知,指令隊(duì)列模塊30接收命中比較模塊101、命中地址產(chǎn)生模塊102及合并模塊20的寫入信號。指令隊(duì)列模塊30中包括第一級緩存指令隊(duì)列301、第二級緩存指令隊(duì)列302、指令控制單元303及地址產(chǎn)生單元304。其中,指令控制單元303用于第一級緩存指令隊(duì)列301及第二級緩存指令隊(duì)列302中相關(guān)指令的控制。第一級緩存指令隊(duì)列301還包括有多個(gè)隊(duì)列,按照運(yùn)動(dòng)補(bǔ)償單元2讀取數(shù)據(jù)的正常順序,分別保存著每個(gè)讀動(dòng)態(tài)隨機(jī)存取存儲器3請求的數(shù)據(jù)長度(BurstLength)值以及對應(yīng)的首地址、讀第二數(shù)據(jù)暫存模塊90的標(biāo)志以及地址、讀寫第一數(shù)據(jù)暫存模塊70的標(biāo)志以及地址。然后,第二級緩存的指令隊(duì)列302及地址產(chǎn)生單元304根據(jù)這些隊(duì)列中保存的信息,分別產(chǎn)生相關(guān)指令以及與指令相關(guān)的地址,包括讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令及地址與每筆訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength,BL)值、讀第二數(shù)據(jù)暫存模塊90的指令及地址、寫第二數(shù)據(jù)暫存模塊90的指令及地址、讀第一數(shù)據(jù)暫存模塊70的指令及地址及寫第一數(shù)據(jù)暫存模塊70的指令及地址等指令。上述指令通過第二級緩存的指令隊(duì)列302發(fā)出,具有兩個(gè)作用,其一是指令隊(duì)列模塊30可以以亂序的方式向動(dòng)態(tài)隨機(jī)存取存儲器3發(fā)送經(jīng)過合并以后的請求,提高訪問速度。其從動(dòng)態(tài)隨機(jī)存取存儲器3讀回的數(shù)據(jù)在通過第二協(xié)議控制模塊50寫進(jìn)內(nèi)部的第一數(shù)據(jù)暫存模塊70時(shí),按照送給高速緩存1的正確順序重排。其二是這些指令在某些特定的時(shí)鐘周期里,可以以每時(shí)鐘周期多指令方式流出,從而提高系統(tǒng)效率。接著,進(jìn)一步說明通過第二級緩存指令隊(duì)列302發(fā)出指令的作用。為了盡量減少高速緩存1讀取動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)對譯碼速度的影響。當(dāng)高速緩存1內(nèi)部的指令隊(duì)列模塊30發(fā)現(xiàn)當(dāng)前有M筆數(shù)據(jù)需要從高速緩存1中讀取時(shí),指令隊(duì)列模塊30可以將隨后第M+l或第M+2或第M+N筆讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令與地址,與當(dāng)前的讀高速緩存1的指令與地址,在一個(gè)時(shí)鐘周期內(nèi)發(fā)送出去。當(dāng)M個(gè)讀高速緩存1的操作完成后,若M比較大,即讀高速緩存1數(shù)據(jù)比較多的時(shí)候,第M+l個(gè)或第M+2或第M+N個(gè)讀動(dòng)態(tài)隨機(jī)存取存儲器3的數(shù)據(jù)可能已經(jīng)讀回來,按排好的順序放在第一數(shù)據(jù)暫存模塊70中了,這樣就可以不用等待。緊接著,將排好順序的數(shù)據(jù),一方面送給影像譯碼器(圖中未示出)譯碼用,另外一方面也可以同時(shí)將要更新到高速緩存1中的數(shù)據(jù)寫進(jìn)高速緩存1,即讀第一數(shù)據(jù)暫存模塊70的命令及地址與寫高速緩存1的指令及地址等指令與地址也可以在同一個(gè)時(shí)鐘周期產(chǎn)生。若M比較小,即讀高速緩存l的數(shù)據(jù)比較少的時(shí)候,讀動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)也有部分隱藏在這些讀高速緩存1的操作中。因此,采用這種可以在一個(gè)時(shí)鐘周期發(fā)送多條指令的方式,可以將讀取外部動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)完全或者部分隱藏在讀取內(nèi)部的高速緩存1的操作中。接著,用一較具體的實(shí)施例來說明上述在一個(gè)時(shí)鐘周期發(fā)送多條指令的方式及將讀取外部動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)完全或者部分隱藏在讀取內(nèi)部的高速緩存1的操作中的方法。請參閱圖1及圖3,圖3為第一級緩存指令隊(duì)列示意圖。在系統(tǒng)的某個(gè)時(shí)候,假定第一級緩存指令隊(duì)列301中的指令順序如圖3所示。隊(duì)列緩沖器(buffer)深度為32級,其中,前28條是讀高速緩存1的指令(ReadCache),后4條是讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令(ReadDram),每條讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令的每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength)為2個(gè)64位寬的數(shù)據(jù)(也可以是1個(gè)或其它系統(tǒng)規(guī)定的個(gè)數(shù))。這些數(shù)據(jù)讀回來后,按重新排好的順序?qū)戇M(jìn)內(nèi)部的緩沖器(第一數(shù)據(jù)暫存模塊70),然后,按順序讀出來送給影像譯碼器(圖中未示出)譯碼用,以及更新到高速緩存1的第二數(shù)據(jù)暫存模塊卯中(第二數(shù)據(jù)暫存模塊90為保存高速緩存1的數(shù)據(jù)的模塊)。所以每一條ReadDmm指令,當(dāng)數(shù)據(jù)讀回來后,會對應(yīng)兩條寫第一數(shù)據(jù)暫存模塊(WriteBUF)、兩條讀第一數(shù)據(jù)暫存模塊(ReadBUF)、兩條寫第二數(shù)據(jù)暫存模塊(WriteCache)指令。接著,請參閱圖4,此為第二級緩存指令隊(duì)列示意圖。ReadCache、ReadDram、WriteBUF、ReadBUF及WriteCache的指令經(jīng)過第二級緩存指令隊(duì)列302處理以后,暫存于各指令隊(duì)列,如圖4讀第二數(shù)據(jù)暫存模塊的指令隊(duì)列(READ—CACHE—QUE)、寫第二數(shù)據(jù)暫存模塊的指令隊(duì)列(WRITE—CACHE—QUE)、讀第一數(shù)據(jù)暫存模塊的指令隊(duì)列(READ—BUF—QUE)、寫第一數(shù)據(jù)暫存模塊的指令隊(duì)列(WRITE—BUF—QUE)及讀動(dòng)態(tài)隨機(jī)存取存儲器的指令隊(duì)列(READ_DRAM—QUE)所示。而圖4中的各條指令,在適當(dāng)?shù)臅r(shí)候,某些指令是可以在同一個(gè)時(shí)鐘內(nèi)讀出來執(zhí)行的。接著,請?jiān)賲㈤唸D5,此為多指令流出方式的時(shí)序示意圖。當(dāng)四條ReadDmm指令和ReadCache指令同時(shí)發(fā)送出去后,假定26個(gè)時(shí)鐘周期后,第一個(gè)讀Dram的數(shù)據(jù)己經(jīng)回來了,這個(gè)時(shí)候,指令機(jī)繼續(xù)發(fā)送ReadCache指令(因?yàn)榭偣灿?8條ReadCache指令,也就是有28個(gè)64位寬數(shù)據(jù)(QWs)需要從高速緩存l的第二數(shù)據(jù)暫存模塊90中讀)。同時(shí),也會執(zhí)行WriteBUF指令,將從動(dòng)態(tài)隨機(jī)存取存儲器3讀回的數(shù)據(jù)寫進(jìn)第一數(shù)據(jù)暫存模塊70。所以,讀動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)就隱藏在讀高速緩存1的操作中。當(dāng)28條ReadCache指令執(zhí)行完后,馬上執(zhí)行ReadBUF與WriteCache指令,將數(shù)據(jù)從第一數(shù)據(jù)暫存模塊70讀出來送給影像譯碼器(圖中未示出),并同時(shí)更新到第二數(shù)據(jù)暫存模塊90中。當(dāng)然,這時(shí)還會同時(shí)執(zhí)行WriteBUF指令,繼續(xù)將從動(dòng)態(tài)隨機(jī)存取存儲器3讀回的數(shù)據(jù)按照排好的順序?qū)戇M(jìn)第一數(shù)據(jù)暫存模塊70。所以,通過上述方法,可實(shí)現(xiàn)在同一個(gè)時(shí)鐘周期內(nèi)發(fā)送多條指令,將讀動(dòng)態(tài)隨機(jī)存取存儲器3的響應(yīng)延遲時(shí)間(latency)隱藏在讀高速緩存1的操作中,達(dá)到提高高速緩存1效率。請參閱圖6,此為本發(fā)明高速緩存數(shù)據(jù)處理方法的流程圖。首先,高速緩存1接收運(yùn)動(dòng)補(bǔ)償單元2傳來的讀動(dòng)態(tài)隨機(jī)存取存儲器3請求(如圖6步驟S601)。接著,由命中比較單元10判斷讀動(dòng)態(tài)隨機(jī)存取存儲器3請求是否命中高速緩存1(如圖6步驟S603)。若讀動(dòng)態(tài)隨機(jī)存取存儲器3請求命中高速緩存l,根據(jù)命中高速緩存l的讀動(dòng)態(tài)隨機(jī)存取存儲器3請求,從高速緩存1中(第二數(shù)據(jù)暫存模塊90)輸出讀動(dòng)態(tài)隨機(jī)存取存儲器3請求欲讀取的數(shù)據(jù)到運(yùn)動(dòng)補(bǔ)償單元2(如圖6步驟S605)。若讀動(dòng)態(tài)隨機(jī)存取存儲器3請求未命中高速緩存1,便將讀動(dòng)態(tài)隨機(jī)存取存儲器3請求傳至合并模塊20進(jìn)行合并(如圖6步驟S607)。接著便根據(jù)合并的讀動(dòng)態(tài)隨機(jī)存取存儲器3請求,從動(dòng)態(tài)隨機(jī)存取存儲器3中讀取每個(gè)讀動(dòng)態(tài)隨機(jī)存取存儲器3請求欲讀取的數(shù)據(jù),并輸出至運(yùn)動(dòng)補(bǔ)償單元2(如圖6步驟S609)。請?jiān)俅螀㈤唸D1,繼上述各功能原理的說明后,將針對本發(fā)明的高速緩存1中各功能方塊間的動(dòng)作及信號流程進(jìn)行進(jìn)一步整體說明。運(yùn)動(dòng)補(bǔ)償單元2通過高速緩存1從動(dòng)態(tài)隨機(jī)存取存儲器3讀取數(shù)據(jù)。高速緩存1通過第一協(xié)議控制模塊40接收運(yùn)動(dòng)補(bǔ)償單元2所傳送過來的讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求。接下來,該讀請求便傳送至命中比較單元IO,命中比較單元10依照每一個(gè)請求發(fā)送的順序進(jìn)行編碼,并在該讀請求被編碼后進(jìn)行比較。若比較結(jié)果有命中的讀請求,命中比較單元IO便分別傳送該命中的讀請求的相關(guān)信息給指令隊(duì)列模塊30及命中地址產(chǎn)生模塊102。然后,由命中地址產(chǎn)生模塊102產(chǎn)生命中高速緩存1的地址及命中標(biāo)志,并將命中高速緩存1的地址及命中標(biāo)志通過內(nèi)部流水(pipe)寫入指令隊(duì)列模塊30。若是比較結(jié)果該讀請求沒有命中,則命中比較單元10將該讀請求傳送至合并模塊20。該合并模塊20會將每一個(gè)沒命中高速緩存1的讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求進(jìn)行合并,并將合并后的相關(guān)信息送入指令隊(duì)列模塊30。其中,命中比較單元10的命中比較是一個(gè)多級的流水(pipe)過程,并采用動(dòng)態(tài)調(diào)整數(shù)據(jù)的有效性的方法,以提高高速緩存l中數(shù)據(jù)的命中率。合并模塊20可利用動(dòng)態(tài)隨機(jī)存取存儲器中數(shù)據(jù)可以順序(wraplinear或s叫uential)方式讀取的特性,將未命中高速緩存1的讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求進(jìn)行合并,從而增加每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength),進(jìn)而提高訪問動(dòng)態(tài)隨機(jī)存取存儲器3的效率。指令隊(duì)列模塊30接收了命中比較模塊101、命中地址產(chǎn)生模塊102及合并模塊20所傳來的相關(guān)信息,然后分別輸出讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令及地址與每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength)、讀寫第一數(shù)據(jù)暫存模塊70的指令及地址及讀寫第二數(shù)據(jù)暫存模塊90的指令及地址的相關(guān)指令到第二協(xié)議控制模塊50、第一暫存模塊控制單元60及第二暫存模塊控制單元100。第二協(xié)議控制模塊50接收讀動(dòng)態(tài)隨機(jī)存取存儲器3的指令及地址與每個(gè)訪問動(dòng)態(tài)隨機(jī)存取存儲器的數(shù)據(jù)長度(BurstLength)后,便從動(dòng)態(tài)隨機(jī)存取存儲器3讀取數(shù)據(jù),并將讀回的數(shù)據(jù)暫存于第一數(shù)據(jù)暫存模塊70。第一數(shù)據(jù)暫存模塊70連接至第二協(xié)議控制模塊50、第一數(shù)據(jù)暫存模塊70、第二暫存模塊控制單元100及數(shù)據(jù)選擇模塊110,根據(jù)指令隊(duì)列模塊30所傳來的讀寫第一數(shù)據(jù)暫存模塊70的指令及地址,控制第一數(shù)據(jù)暫存模塊70中數(shù)據(jù)的寫入及讀出。第一數(shù)據(jù)暫存模塊70由第二協(xié)議控制模塊50接收動(dòng)態(tài)隨機(jī)存取存儲器3中的數(shù)據(jù)后,可將數(shù)據(jù)傳送至數(shù)據(jù)選擇模塊IIO,同時(shí)寫入第二數(shù)據(jù)暫存模塊卯。第二暫存模塊控制單元100連接至地址暫存模塊80及數(shù)據(jù)選擇模塊110,根據(jù)指令隊(duì)列模塊30及第一暫存模塊控制單元60所傳來的信息,控制地址暫存模塊80的動(dòng)作及第二數(shù)據(jù)暫存模塊90中數(shù)據(jù)的寫入及讀出。其中,地址暫存模塊80用于暫存第二數(shù)據(jù)暫存模塊90中的數(shù)據(jù)的地址,并提供該數(shù)據(jù)的地址傳送至命中比較單元10,以供命中比較單元10與讀動(dòng)態(tài)隨機(jī)存取存儲器3的請求進(jìn)行命中比較之用。第二暫存模塊控制單元100控制,將第二數(shù)據(jù)暫存模塊90中的數(shù)據(jù)傳送至數(shù)據(jù)選擇模塊110。接著,數(shù)據(jù)選擇模塊110根據(jù)第一暫存模塊控制單元60及第二暫存模塊控制單元100所傳來的信息,選擇由第一數(shù)據(jù)暫存模塊70或由第二數(shù)據(jù)暫存模塊90輸出數(shù)據(jù)的運(yùn)動(dòng)補(bǔ)償單元2。而數(shù)據(jù)選擇模塊110輸出的數(shù)據(jù)的順序,將依照運(yùn)動(dòng)補(bǔ)償單元2對高速緩存1所發(fā)出的讀請求的順序輸出。綜上所述,通過本發(fā)明的高速緩存及其數(shù)據(jù)處理方法,可有效提高高速緩存的命中率,使運(yùn)動(dòng)補(bǔ)償單元所需的數(shù)據(jù)大部分可從高速緩存中讀取,并且有效提高訪問動(dòng)態(tài)隨機(jī)存取存儲器的效率,從而提升影像譯碼器的譯碼速度。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。權(quán)利要求1、一種高速緩存,供一影像譯碼器從一動(dòng)態(tài)存取存儲器讀取數(shù)據(jù),其特征在于,包括一命中比較單元,接收一讀動(dòng)態(tài)存取存儲器請求,用于比較判斷該讀動(dòng)態(tài)存取存儲器請求為一命中高速緩存的讀動(dòng)態(tài)存取存儲器請求還是一未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求;一合并模塊,連接至該命中比較單元,接收及合并該未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求;一指令隊(duì)列模塊,連接至該命中比較單元及該合并模塊,根據(jù)命中高速緩存的讀動(dòng)態(tài)存取存儲器請求及合并后的該未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求,讀取該動(dòng)態(tài)存取存儲器的數(shù)據(jù)及該高速緩存中的數(shù)據(jù)。2、如權(quán)利要求1所述的高速緩存,其特征在于,該命中比較單元還包括一命中比較模塊,將該讀動(dòng)態(tài)存取存儲器請求與一暫存在該高速緩存中數(shù)據(jù)的地址進(jìn)行比較,并將該命中高速緩存的讀動(dòng)態(tài)存取存儲器請求的信息傳送至該指令隊(duì)列模塊,而未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求的信息傳送至該合并模塊合并;一命中地址產(chǎn)生模塊,根據(jù)命中比較模塊判斷該讀動(dòng)態(tài)存取存儲器請求為一命中高速緩存的讀動(dòng)態(tài)存取存儲器請求,而產(chǎn)生該命中高速緩存的讀動(dòng)態(tài)存取存儲器請求的地址,并輸出至該指令隊(duì)列模塊。3、如權(quán)利要求1所述的高速緩存,其特征在于,還包括一第一協(xié)議控制模塊,連接至該影像譯碼器的一運(yùn)動(dòng)補(bǔ)償單元,控制該高速緩存與該運(yùn)動(dòng)補(bǔ)償單元間接口的協(xié)議。4、如權(quán)利要求1所述的高速緩存,其特征在于,該命中比較單元利用多級的流水來比較判斷該讀動(dòng)態(tài)存取存儲器請求為一命中高速緩存的讀動(dòng)態(tài)存取存儲器請求還是一未命中高速緩存的讀動(dòng)態(tài)存取存儲器請求。5、如權(quán)利要求1所述的高速緩存,其特征在于,該指令隊(duì)列模塊還包括一第一級緩存指令隊(duì)列,用于暫存該命中比較單元及該合并模塊所傳來的信息;一第二級緩存指令隊(duì)列,根據(jù)該第一級緩存指令隊(duì)列中暫存的信息,輸出對應(yīng)的讀寫指令;一地址產(chǎn)生單元,根據(jù)該第一級緩存指令隊(duì)列中暫存的信息,產(chǎn)生對應(yīng)指令的地址;一指令控制單元,連接至該第一級緩存指令隊(duì)列及該第二級緩存指令隊(duì)列,用于控制第一級緩存指令隊(duì)列及第二級緩存指令隊(duì)列中的指令。6、如權(quán)利要求5所述的高速緩存,其特征在于,還包括一第二協(xié)議控制模塊,接收該第二級緩存指令隊(duì)列輸出的一讀動(dòng)態(tài)隨機(jī)存取存儲器的指令及地址,以從動(dòng)態(tài)隨機(jī)存取存儲器讀取數(shù)據(jù);一第一數(shù)據(jù)暫存模塊,暫存該第二協(xié)議控制模塊由動(dòng)態(tài)隨機(jī)存取存儲器所讀取的數(shù)據(jù);一第一暫存模塊控制單元,接收該第二級緩存指令隊(duì)列輸出的一讀寫第一數(shù)據(jù)暫存模塊的指令及地址,以控制該第一數(shù)據(jù)暫存模塊中暫存的數(shù)據(jù)的傳輸;一第二數(shù)據(jù)暫存模塊,用于暫存該第一數(shù)據(jù)暫存模塊中的數(shù)據(jù),為該高速緩存儲存數(shù)據(jù)的模塊;一地址暫存模塊,暫存該第二數(shù)據(jù)暫存模塊的數(shù)據(jù)的地址,并傳送至該比較單元;一第二暫存模塊控制單元,接收該第二級緩存指令隊(duì)列輸出的一讀寫第二數(shù)據(jù)暫存模塊的指令及地址,以控制該第二數(shù)據(jù)暫存模塊中暫存的數(shù)據(jù)的傳輸。7、如權(quán)利要求6所述的高速緩存,其特征在于,還包括一數(shù)據(jù)選擇模塊,根據(jù)該第一暫存模塊控制單元及該第二暫存模塊控制單元的指令,以輸出該第一數(shù)據(jù)暫存模塊及該第二數(shù)據(jù)暫存模塊所傳來的數(shù)據(jù)。8、一種高速緩存的數(shù)據(jù)處理方法,供一影像譯碼器從一動(dòng)態(tài)隨機(jī)存取存儲器中讀取數(shù)據(jù),其特征在于,包括以下步驟接收該影像譯碼器送來的一讀動(dòng)態(tài)隨機(jī)存取存儲器請求;通過一命中比較單元判斷該讀動(dòng)態(tài)隨機(jī)存取存儲器請求是否命中該高速緩存,并且將每一該讀動(dòng)態(tài)隨機(jī)存取存儲器請求依照發(fā)送的順序進(jìn)行編碼,每個(gè)請求對應(yīng)一個(gè)編碼序號索引;若比較結(jié)果為命中,則將該讀動(dòng)態(tài)隨機(jī)存取存儲器請求的地址信息傳送寫入一指令隊(duì)列模塊;若比較結(jié)果為未命中,則將該讀動(dòng)態(tài)隨機(jī)存取存儲器請求的信息傳送至一合并模塊,由該合并模塊將該未命中的讀動(dòng)態(tài)隨機(jī)存取存儲器請求合并;合并模塊合并該未命中的讀動(dòng)態(tài)隨機(jī)存取存儲器請求后,將合并后的信息寫入該指令隊(duì)列模塊;該指令隊(duì)列模塊根據(jù)該命中比較單元及該合并模塊所寫入的信息,從該動(dòng)態(tài)隨機(jī)存取存儲器或該高速緩存中讀取該讀該動(dòng)態(tài)隨機(jī)存取存儲器請求的數(shù)據(jù)。9、如權(quán)利要求8所述的數(shù)據(jù)處理方法,其特征在于,該命中比較單元判斷該讀動(dòng)態(tài)隨機(jī)存取存儲器請求是否命中該高速緩存為一多級流水命中比較過程,而該命中比較單元的多級流水命中比較通過動(dòng)態(tài)調(diào)整數(shù)據(jù)的有效性,來判斷該讀動(dòng)態(tài)隨機(jī)存取存儲器請求是否命中該高速緩存。10、如權(quán)利要求8所述的數(shù)據(jù)處理方法,其特征在于,該指令隊(duì)列模塊利用一個(gè)時(shí)鐘周期發(fā)送多條指令的方式讀取該動(dòng)態(tài)隨機(jī)存取存儲器或該高速緩存中讀取該讀該動(dòng)態(tài)隨機(jī)存取存儲器請求的數(shù)據(jù),并且該指令隊(duì)列模塊將該讀動(dòng)態(tài)隨機(jī)存取存儲器的響應(yīng)延遲時(shí)間隱藏在讀該高速緩存的動(dòng)作中。全文摘要本發(fā)明涉及一種高速緩存,供一影像譯碼器在一動(dòng)態(tài)存取存儲器讀取數(shù)據(jù),該高速緩存包括一命中比較單元、一合并模塊及一指令隊(duì)列模塊。命中比較單元接收并處理一讀動(dòng)態(tài)隨機(jī)存取存儲器的請求;若該請求命中高速緩存,則將該請求相關(guān)信息傳送至指令隊(duì)列模塊,以在高速緩存中讀取數(shù)據(jù)。若該請求未命中高速緩存,則將該請求傳送至合并模塊合并,并在合并后傳送至指令隊(duì)列模塊,以在動(dòng)態(tài)隨機(jī)存取存儲器中讀取數(shù)據(jù)。本發(fā)明可提升影像譯碼器讀取在動(dòng)態(tài)存取存儲器讀取數(shù)據(jù)的速度、降低總的存儲帶寬,并提高訪問動(dòng)態(tài)隨機(jī)存取存儲器的效率。文檔編號H04N7/24GK101340569SQ20071012606公開日2009年1月7日申請日期2007年7月6日優(yōu)先權(quán)日2007年7月6日發(fā)明者順原,成世明,易四軍,王津福,蔡忠憲申請人:揚(yáng)智科技股份有限公司