專利名稱:用于依據(jù)存儲(chǔ)器訪問模式執(zhí)行數(shù)據(jù)存取的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)或多個(gè)實(shí)施例總體而言涉及存儲(chǔ)器存取領(lǐng)域。更具體而言,本發(fā)明的一個(gè)實(shí)施例涉及一種用于依據(jù)存儲(chǔ)器訪問模式來執(zhí)行數(shù)據(jù)存取的方法和裝置。
背景技術(shù):
近十多年來,媒體應(yīng)用一直在驅(qū)動(dòng)著微處理器的開發(fā)。實(shí)際上,將來的媒體應(yīng)用將把高得多的計(jì)算要求放在可用的微處理器上。因此,明天的個(gè)人計(jì)算(PC)體驗(yàn)在音頻/視頻效果中將豐富得多以及更容易來使用。更重要地是,將來的微處理器將使計(jì)算和通信合并起來。
因此,圖像的顯示對(duì)于當(dāng)前、以及將來的計(jì)算設(shè)備越來越普及。不幸地是,這類媒體應(yīng)用所需要的數(shù)據(jù)數(shù)量趨向于非常的大。此外,在計(jì)算能力、存儲(chǔ)器和磁盤存儲(chǔ)器、以及網(wǎng)絡(luò)帶寬方面的增加,已經(jīng)便于創(chuàng)建和使用更大和更高質(zhì)量的圖像。然而,更大和更高質(zhì)量圖像的使用經(jīng)常導(dǎo)致在處理器和存儲(chǔ)器之間的一個(gè)瓶頸。因而,盡管微處理器時(shí)鐘頻率不斷增加,但是圖像/視頻處理(媒體)應(yīng)用經(jīng)常遭受存儲(chǔ)器等待時(shí)間問題的困擾。
雖然隨機(jī)存取存儲(chǔ)器(RAM)聲稱能提供對(duì)包含在其內(nèi)的存儲(chǔ)器進(jìn)行隨機(jī)訪問,但是RAM通常不能以隨機(jī)模式存取。實(shí)際上,訪問RAM不同部分所要求的時(shí)間會(huì)變化。例如,一個(gè)存儲(chǔ)器設(shè)備內(nèi)的存儲(chǔ)單元的橫向訪問通常是非常方便的。與此相反,當(dāng)使用常規(guī)內(nèi)存設(shè)備時(shí),縱向存儲(chǔ)器訪問是非常緩慢的。
因此,用于視頻圖像的光柵掃瞄存儲(chǔ)器排列線性地放置像素?cái)?shù)據(jù)以使其跨過一高速緩沖存儲(chǔ)器內(nèi)的圖像平面,這經(jīng)常導(dǎo)致許多的問題。首先,一條高速緩存線保持若干個(gè)基本圖象塊(例如,8×8或者16×16)的某些部分。作為對(duì)比,一個(gè)基本的圖像塊被包含在幾條高速緩存線中。因而,訪問一個(gè)塊,假定8×8,相當(dāng)于訪問幾條高速緩存線(例如,在假定我們正處理比單條高速緩存線更寬的圖像的情況下,在當(dāng)前體系結(jié)構(gòu)中有至少8條高速緩存線)。
使用常規(guī)內(nèi)存設(shè)備訪問一個(gè)圖像需要至少八次存儲(chǔ)器訪問。此外,很可能需要八個(gè)軟件預(yù)先緩存指令來避免八次高速緩存器未命中。此外,當(dāng)處理一個(gè)圖象塊時(shí),傳統(tǒng)的應(yīng)用除了所述塊本身之外還加載多余的數(shù)據(jù)到所述高速緩存里。因此,如果鄰近的塊沒有被立即處理,則多余的數(shù)據(jù)被帶進(jìn)高速緩沖存儲(chǔ)器中,這就會(huì)由于所述多余的數(shù)據(jù)而降低所述高速緩存器的效率。
一種用于在處理圖象數(shù)據(jù)涉及基于塊的存儲(chǔ)器排列時(shí)可提供改進(jìn)的高速緩存器局部性的解決方案。雖然基于塊的存儲(chǔ)器排列方案提供了更高的高速緩存器局部性,但是使用一條指令訪問一個(gè)8像素或者16像素的縱向集合仍然是不被支持的。為了訪問一個(gè)縱向數(shù)據(jù)集,大多數(shù)的傳統(tǒng)的實(shí)現(xiàn)使用壓縮和解壓縮操作來轉(zhuǎn)置所述數(shù)據(jù)。不幸地是,在大多數(shù)應(yīng)用中這是一個(gè)緩慢的過程。此外,在諸如圖像/視頻壓縮之類的一些應(yīng)用中,像素?cái)?shù)據(jù)必須以變化的掃描次序加以訪問,這幾乎是所述像素?cái)?shù)據(jù)的隨機(jī)訪問。
此外,不同的視頻/圖像算法和矩陣操作需要依據(jù)變化的存儲(chǔ)器訪問模式以及位平面提取來進(jìn)行數(shù)據(jù)存取。實(shí)際上,依據(jù)變化的存儲(chǔ)器訪問模式的數(shù)據(jù)存取是圖像和視頻編碼應(yīng)用所需要的,上述這些應(yīng)用包含例如零樹圖像編碼、用于離散余弦變換(DCT)的之字形掃描,在聯(lián)合攝影專家組(JPEG)2000和運(yùn)動(dòng)圖像專家組-四(MPE6-4)細(xì)粒度可伸縮性中的位平面提取。不幸地是,在傳統(tǒng)的圖像/視頻系統(tǒng)中,在JPEG2000圖像編碼標(biāo)準(zhǔn)中對(duì)位面進(jìn)行編碼會(huì)占據(jù)中央處理單元(CPU)執(zhí)行時(shí)間的40%。因此,這仍需要克服上述現(xiàn)有技術(shù)中的一個(gè)或多個(gè)局限性。
在附圖中通過示例而不是限制的方式來說明了本發(fā)明的不同實(shí)施例,在所述附圖中圖1給出了根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)高速緩存處理器的計(jì)算機(jī)系統(tǒng)的框圖。
圖2給出了一個(gè)框圖,所述框圖依據(jù)本發(fā)明的另一個(gè)實(shí)施例進(jìn)一步說明了在圖1中所描述的處理器。
圖3A和3B描述了這樣的框圖,所述框圖依據(jù)本發(fā)明的一實(shí)施例說明了128位壓縮SIMD數(shù)據(jù)類型。
圖3C和3D描述了這樣的框圖,所述框圖依據(jù)本發(fā)明的另一個(gè)實(shí)施例說明了64位壓縮SIMD數(shù)據(jù)類型。
圖4描述了一個(gè)框圖,所述框圖說明了在本技術(shù)領(lǐng)域中已知的傳統(tǒng)光柵掃描存儲(chǔ)器排列。
圖5描述了一個(gè)框圖,所述框圖說明了根據(jù)本發(fā)明一個(gè)實(shí)施例的按照存儲(chǔ)器訪問模式的存儲(chǔ)器讀取操作。
圖6描述了一個(gè)框圖,所述框圖進(jìn)一步說明了依據(jù)本發(fā)明另一實(shí)施例的、如圖1和2所描述的使用一高速緩存處理器的計(jì)算機(jī)系統(tǒng)。
圖7A和7B描述了這樣的框圖,所述框圖說明了依據(jù)本發(fā)明另一實(shí)施例的高速緩存處理器(CaPro)。
圖8A描述了一個(gè)框圖,所述框圖說明了依據(jù)本發(fā)明一實(shí)施例的一個(gè)零樹編碼數(shù)據(jù)存取模式。
圖8B描述了一個(gè)框圖,所述框圖說明了依據(jù)本發(fā)明一個(gè)實(shí)施例的一個(gè)位平面提取數(shù)據(jù)存取模式。
圖9依據(jù)本發(fā)明的一實(shí)施例描述了如圖1、2和6中所示的計(jì)算機(jī)系統(tǒng)的制造系統(tǒng)。
圖10描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的一實(shí)施例說明了一種用于依據(jù)所接收到的存儲(chǔ)器存取模式來存取數(shù)據(jù)的方法。
圖11描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于確定所接收到的存儲(chǔ)器存取指令的存儲(chǔ)器存取模式的方法。
圖12描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的一實(shí)施例說明了另外一種用于依據(jù)所接收到的存儲(chǔ)器存取模式來存取數(shù)據(jù)的方法。
圖13描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于將數(shù)據(jù)塊加載到本地?cái)?shù)據(jù)緩沖器中的方法。
圖14描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的一個(gè)實(shí)施例說明了另外一種用于在本地高速緩存器未命中之后向一個(gè)或多個(gè)存儲(chǔ)器緩沖器發(fā)出一個(gè)數(shù)據(jù)請(qǐng)求的方法。
圖15描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于對(duì)包含有請(qǐng)求數(shù)據(jù)的數(shù)據(jù)塊進(jìn)行加載的方法。
圖16描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于在一個(gè)或多個(gè)存儲(chǔ)器緩沖器中存儲(chǔ)數(shù)據(jù)以維護(hù)高速緩存器一致性的方法。
圖17描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于根據(jù)由一存儲(chǔ)器存取指令所指示的存儲(chǔ)器存取模式來存取數(shù)據(jù)的方法。
圖18描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的另一實(shí)施例說明了另外一種用于根據(jù)所接收的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù)的方法。
圖19描述了一個(gè)流程圖,所述流程圖依據(jù)本發(fā)明的示例性實(shí)施例說明了另外一種用于根據(jù)所接收到的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù)的方法。
具體實(shí)施例方式
描述了一種用于依據(jù)存儲(chǔ)器存取模式來執(zhí)行數(shù)據(jù)存取的方法和裝置。在一個(gè)實(shí)施例中,所述方法包含響應(yīng)于存儲(chǔ)器存取指令,確定與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)器存取模式。一旦確定了所述存儲(chǔ)器存取模式,依據(jù)所確定的存儲(chǔ)器存取模式來存取與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。最后,一旦所述數(shù)據(jù)被存取了,依據(jù)所述存儲(chǔ)器存取指令來存儲(chǔ)所述數(shù)據(jù)。因此,在本發(fā)明的這個(gè)實(shí)施例中,依據(jù)包含之字形模式掃描、零樹掃描、位平面提取、細(xì)粒度可伸縮性等等的存儲(chǔ)器存取模式來存取數(shù)據(jù),以允許依據(jù)隨機(jī)存儲(chǔ)器存取模式的存儲(chǔ)器存取。
在下面的描述中,為了說明起見,闡述了許多具體的細(xì)節(jié)以便提供對(duì)本發(fā)明實(shí)施例的一個(gè)徹底了解。然而,對(duì)于在本領(lǐng)域的技術(shù)人員來說,在沒有一些具體細(xì)節(jié)的情況下,顯然可以實(shí)踐本發(fā)明的各個(gè)實(shí)施例。此外,以下的描述提供了示例,而且為了說明起見,附圖給出了各種例子。然而,因?yàn)檫@些示例僅僅用來提供本發(fā)明實(shí)施例的例子而不是提供本發(fā)明所有可能實(shí)施例的一個(gè)窮盡列表,所以它們不應(yīng)該以一種限制的意義進(jìn)行解釋。在其它實(shí)例中,以框圖形式顯示了眾所周知的結(jié)構(gòu)和設(shè)備,以避免弄模糊本發(fā)明實(shí)施例的細(xì)節(jié)。
以下詳細(xì)說明的部分以對(duì)數(shù)據(jù)位的操作的算法和符號(hào)表示而給出。這些算法的描述和表示,被數(shù)據(jù)處理領(lǐng)域的那些技術(shù)人員使用來把他們的工作實(shí)質(zhì)傳送給所述領(lǐng)域的其它技術(shù)人員。在此描述的算法是指趨向期望結(jié)果的自相一致的動(dòng)作序列。所述動(dòng)作是那些需要物理量的物理操作的動(dòng)作。這些量可以采取電的或者磁的、能夠被存儲(chǔ)、傳送、組合、比較、以及以別的方式被操作的信號(hào)的形式。此外,主要是由于公共使用的原因,把這些信號(hào)稱為位、值、元件、信號(hào)、字符、項(xiàng)、數(shù)值等等。
然而,這些及類似的術(shù)語是與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)的,而且僅僅是應(yīng)用于這些量的便利標(biāo)記。除非以別的方式具體地說明了,否則應(yīng)該理解利用諸如“處理”或者“計(jì)算”或者“演算”或者“確定”或者“顯示”等等的術(shù)語的討論涉及一個(gè)計(jì)算機(jī)系統(tǒng)、或者類似的電子計(jì)算設(shè)備的動(dòng)作和過程,所述計(jì)算機(jī)系統(tǒng)或者類似的電子計(jì)算設(shè)備,把在計(jì)算機(jī)系統(tǒng)設(shè)備內(nèi)表示為物理(電子)量的數(shù)據(jù)操作并轉(zhuǎn)換成為其它的如下數(shù)據(jù),所述數(shù)據(jù)類似地表示為在諸如存儲(chǔ)器、寄存器或者其他這樣的信息存儲(chǔ)器、傳輸、顯示設(shè)備等等的計(jì)算機(jī)系統(tǒng)設(shè)備中的物理量。
在此所給出的算法及顯示不是內(nèi)在地與任何特定的計(jì)算機(jī)或者其它裝置相關(guān)聯(lián)。各種通用系統(tǒng)可以與根據(jù)此實(shí)施例的程序一起加以使用,或者可以證明構(gòu)造一個(gè)更專用的裝置以執(zhí)行所要求的方法是方便的。例如,任何依據(jù)本發(fā)明實(shí)施例的方法能夠以硬接線電路的形式、通過對(duì)一個(gè)通用處理器進(jìn)行編程、或者通過硬件和軟件的任何組合來實(shí)現(xiàn)。
在本領(lǐng)域的技術(shù)人員將會(huì)立即理解本發(fā)明的實(shí)施例能夠用不同于那些如下所述計(jì)算機(jī)系統(tǒng)配置進(jìn)行實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包含手持設(shè)備、多處理器系統(tǒng)、基于微處理器或者可編程的消費(fèi)者電子設(shè)備、數(shù)字信號(hào)處理(DSP)設(shè)備、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、大型計(jì)算機(jī)、等等。本發(fā)明的實(shí)施例還能夠在分布式計(jì)算環(huán)境中實(shí)踐,在所述環(huán)境中,任務(wù)由通過一通信網(wǎng)絡(luò)而鏈接的遠(yuǎn)程處理設(shè)備加以執(zhí)行。從下面的描述中可得出各種系統(tǒng)所需的結(jié)構(gòu)。
可以理解各個(gè)術(shù)語和技術(shù)來由本領(lǐng)域技術(shù)人員使用來描述通信、協(xié)議、應(yīng)用、實(shí)現(xiàn)、機(jī)制等等。一種這樣的技術(shù)是依據(jù)一種算法或者數(shù)學(xué)表達(dá)式來描述一個(gè)技術(shù)的實(shí)現(xiàn)。即,雖然所述技術(shù)可以例如在一臺(tái)計(jì)算機(jī)上作為執(zhí)行代碼來實(shí)現(xiàn),但是所述技術(shù)的表示作為一個(gè)公式、算法、或者數(shù)學(xué)表達(dá)式可是更適宜且更簡便地用于傳送和通信。
因此,本領(lǐng)域的技術(shù)人員把表示A+B=C的一個(gè)方框認(rèn)為是一個(gè)加法功能,它以硬件和/或軟件的實(shí)現(xiàn)將使用兩個(gè)輸入(A和B)并且產(chǎn)生一個(gè)求和輸出(C)。因此,公式、算法、或者數(shù)學(xué)表達(dá)式作為描述的使用將被理解為具有以至少硬件和/或軟件的形式的物理實(shí)施例(諸如一個(gè)計(jì)算機(jī)系統(tǒng),其中可以實(shí)踐本發(fā)明的技術(shù)以及本發(fā)明的技術(shù)可以作為一個(gè)實(shí)施例而實(shí)現(xiàn))。
在一個(gè)實(shí)施例中,本發(fā)明的方法以機(jī)器可執(zhí)行指令的形式體現(xiàn)。這些指令能夠用來導(dǎo)致一個(gè)可利用所述指令對(duì)其進(jìn)行編程的通用或者專用處理器以執(zhí)行本發(fā)明的方法??蛇x地,本發(fā)明實(shí)施例中的方法可以由包含硬連線邏輯的、用于執(zhí)行所述方法的具體硬件部件執(zhí)行,或者可以由編程的計(jì)算機(jī)部件和定制硬件部件的任何組合執(zhí)行。
在一個(gè)實(shí)施例中,本發(fā)明可以作為一個(gè)計(jì)算機(jī)程序產(chǎn)品提供,所述計(jì)算機(jī)程序產(chǎn)品可以包含在上面存儲(chǔ)如下指令的計(jì)算機(jī)可讀介質(zhì)或者機(jī)器,這些指令可以用來編程計(jì)算機(jī)(或者其他電子設(shè)備),以便依據(jù)本發(fā)明來執(zhí)行一過程。所述計(jì)算機(jī)可讀介質(zhì)可以包含但不局限于軟盤、光盤、壓縮光盤、只讀存儲(chǔ)器(CD-ROM)、和磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦可編程序只讀存儲(chǔ)器(EPROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM)、磁或者光卡、閃速存儲(chǔ)器、等等。
因此,所述計(jì)算機(jī)可讀介質(zhì)包含適合于存儲(chǔ)指令的任何類型的介質(zhì)/機(jī)器可讀介質(zhì)。此外,本發(fā)明還可以作為一個(gè)計(jì)算機(jī)程序產(chǎn)品被下載。因而,所述程序可以從一臺(tái)遠(yuǎn)程計(jì)算機(jī)(例如,一臺(tái)服務(wù)器)傳輸?shù)揭慌_(tái)請(qǐng)求計(jì)算機(jī)(例如一客戶)。可以經(jīng)由一條通信鏈路(例如,一個(gè)調(diào)制解調(diào)器、網(wǎng)絡(luò)連接等等)借助于包含在載波或者其他傳播介質(zhì)中的數(shù)據(jù)信號(hào)進(jìn)行所述程序的傳輸。
計(jì)算體系結(jié)構(gòu)圖1給出了一個(gè)能夠在其上實(shí)現(xiàn)本發(fā)明一實(shí)施例的一個(gè)計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100包含用于傳遞信息的總線102,以及用于處理信息的、與總線102相耦合的處理器(CPU)110。計(jì)算機(jī)系統(tǒng)100還包含與102相耦合的、用于為處理器110存儲(chǔ)信息和指令的存儲(chǔ)器子系統(tǒng)104-108。處理器110包括執(zhí)行單元130,執(zhí)行單元130包括有算術(shù)邏輯部件(ALU)180、寄存器堆200、一個(gè)或多個(gè)高速緩沖存儲(chǔ)器160(160-1、……、160-N)、譯碼器170和內(nèi)部總線190。此外,系統(tǒng)100包括協(xié)處理器400,協(xié)處理器400包含本地高速緩存器(數(shù)據(jù)緩沖器)410,在此被稱為高速緩存處理器400。
高速、臨時(shí)的存儲(chǔ)器緩沖器(高速緩存)160與執(zhí)行單元130相耦合,并且為處理器110存儲(chǔ)頻繁地和/或最近使用的信息。如在此所描述的,存儲(chǔ)器緩沖器160、以及本地?cái)?shù)據(jù)緩沖器400包含但不局限于,高速緩沖存儲(chǔ)器、固態(tài)存儲(chǔ)器、RAM、同步RAM(SRAM)、同步數(shù)據(jù)RAM(SDRAM)或者任何能夠支持高速緩沖數(shù)據(jù)的設(shè)備。因此,高速、臨時(shí)的存儲(chǔ)器緩沖器160可互換地被稱為高速緩沖存儲(chǔ)器160或者一個(gè)或多個(gè)存儲(chǔ)器緩沖器160,而高速、臨時(shí)的存儲(chǔ)器緩沖器410被可互換地稱為本地高速緩存器410或者本地?cái)?shù)據(jù)緩沖器410。
此外,應(yīng)當(dāng)注意到在一個(gè)替換實(shí)施例中,術(shù)語存儲(chǔ)器緩沖器涉及外部存儲(chǔ)器104。然而,與視頻/圖像處理系統(tǒng)相對(duì)照,系統(tǒng)100包含高速緩存處理器400。如在下面進(jìn)一步詳細(xì)描述的那樣,高速緩存處理器400被用來在依據(jù)一存儲(chǔ)器存取模式110來進(jìn)行存取時(shí),通過在本地高速緩存器410中執(zhí)行必要的數(shù)據(jù)轉(zhuǎn)換來隱藏CPU110的存儲(chǔ)器存取時(shí)間。因此,一個(gè)實(shí)施例可依據(jù)隨機(jī)存儲(chǔ)器存取模式來進(jìn)行數(shù)據(jù)的存取,同時(shí)避免了處理器到存儲(chǔ)器的瓶頸。
計(jì)算機(jī)系統(tǒng)還包含寄存器堆200,寄存器堆200被用來存儲(chǔ)由處理器110存取的數(shù)據(jù),并且經(jīng)由內(nèi)部總線170與執(zhí)行單元130相耦合。在一個(gè)實(shí)施例中,寄存器堆200包含多媒體寄存器,例如,用于存儲(chǔ)多媒體信息的SIMD(單指令,多數(shù)據(jù))寄存器。在一個(gè)實(shí)施例中,多媒體寄存器每個(gè)都存儲(chǔ)高達(dá)128位的壓縮數(shù)據(jù)。多媒體寄存器可以是專用的多媒體寄存器或者是被用來存儲(chǔ)多媒體信息及其它信息的寄存器。在一個(gè)實(shí)施例中,當(dāng)執(zhí)行多媒體操作時(shí),所述多媒體寄存器存儲(chǔ)多媒體數(shù)據(jù),以及當(dāng)執(zhí)行浮點(diǎn)運(yùn)算時(shí),所述多媒體寄存器存儲(chǔ)浮點(diǎn)數(shù)據(jù)。
在一個(gè)實(shí)施例中,執(zhí)行單元130依據(jù)由處理器110所接收到的、包含在指令集140中的指令對(duì)圖像/視頻數(shù)據(jù)進(jìn)行操作。執(zhí)行單元130還依據(jù)在通用處理器中所實(shí)現(xiàn)的指令來對(duì)壓縮、浮點(diǎn)以及標(biāo)量數(shù)據(jù)進(jìn)行操作。處理器110以及高速緩存處理器400能夠支持Pentium微處理器指令集以及壓縮指令,所述壓縮指令對(duì)壓縮數(shù)據(jù)進(jìn)行操作。通過將壓縮指令集包含在標(biāo)準(zhǔn)的微處理器指令集,諸如Pentium微處理器指令集中,壓縮數(shù)據(jù)指令能夠被容易地并入現(xiàn)有的軟件(先前是為標(biāo)準(zhǔn)微處理器指令集而編寫的)中。其他的標(biāo)準(zhǔn)指令集,諸如PowerPC以及Alpha處理器指令集也可以依據(jù)描述的發(fā)明加以使用。(Pentium是Intel公司的一個(gè)注冊(cè)商標(biāo)。PowerPCIM是IBM、APPLECOMPUTER和MOTOROLA的商標(biāo)。AlphaTM是Digital Equipment Corporation的商標(biāo)。)在一個(gè)實(shí)施例中,本發(fā)明提供了多個(gè)高速緩存處理器(CP)移動(dòng)(CPMOV)指令,它們?cè)诖私y(tǒng)稱為CP加載操作或者指令。此外,在描述的實(shí)施例中,CP加載以及CPMOV指令可以被稱為存儲(chǔ)器存取指令。在一個(gè)實(shí)施例中,所述存儲(chǔ)器存取指令包含CP寫和CP讀操作。
因此,如圖1所示的,所述指令集包含可支持字節(jié)數(shù)據(jù)(指令142-146)、字?jǐn)?shù)據(jù)(指令148-152)和雙字?jǐn)?shù)據(jù)(指令154-158)的CP移動(dòng)操作。使用這些操作,當(dāng)前的圖像處理技術(shù)可以通過使CPU110避開依據(jù)非標(biāo)準(zhǔn)或者特定數(shù)據(jù)存取模式進(jìn)行高代價(jià)的存儲(chǔ)器存取而得到改善,這些非標(biāo)準(zhǔn)或者特定數(shù)據(jù)存取模式包含例如之字形掃描、零樹編碼、位平面提取、MPEG4細(xì)粒度可伸縮性等等,它們都是所需要的圖像視頻編碼應(yīng)用。
在所描述的實(shí)施例中的參數(shù)MMX和XMM涉及64位寄存器,例如如圖2中描述的寄存器214,以及128位寄存器,諸如在圖2中描述的寄存器210。PATTERN-MAP參數(shù)指定了一個(gè)包含多個(gè)地址的存儲(chǔ)單元,這些地址定義了在描述的實(shí)施例中存取數(shù)據(jù)所依據(jù)的存儲(chǔ)器存取模式。START_ADDR參數(shù)涉及一個(gè)圖像塊內(nèi)的起始地址,而OFFSET參數(shù)涉及距離先前或者起始地址的地址偏移量。如在下面進(jìn)一步詳細(xì)描述的那樣,統(tǒng)稱為CP加載操作的CPMOV操作,允許使用本地高速緩存器410進(jìn)行數(shù)據(jù)的非橫向/非縱向順序(隨機(jī))存儲(chǔ)器存取。
通過將指令集140包括在通用處理器110的指令集中連同用于執(zhí)行這些指令的相關(guān)聯(lián)電路,由許多現(xiàn)有的多媒體應(yīng)用使用的操作可以更有效地使用一個(gè)通用處理器執(zhí)行圖像/視頻處理。因此,通過使用單條指令來依據(jù)非標(biāo)準(zhǔn)或者隨機(jī)存儲(chǔ)器存取模式執(zhí)行一個(gè)圖像塊的存儲(chǔ)器存取,就可以加速和更有效地執(zhí)行包含視頻/圖像編碼的多媒體應(yīng)用。此外,壓縮指令能夠使用處理器的數(shù)據(jù)總線的全部寬度來執(zhí)行對(duì)壓縮數(shù)據(jù)的操作。這樣就消除了通過所述處理器的數(shù)據(jù)總線來傳輸更小的數(shù)據(jù)單元來一次一個(gè)單元地執(zhí)行一個(gè)或多個(gè)數(shù)據(jù)單元的操作的需要。
仍然參見圖1,本發(fā)明的計(jì)算機(jī)系統(tǒng)100可以包含一個(gè)或多個(gè)I/O(輸入/輸出)設(shè)備120,設(shè)備120包含諸如監(jiān)控器的顯示設(shè)備。所述I/O設(shè)備120也可以包含諸如鍵盤之類的輸入設(shè)備以及諸如鼠標(biāo)、跟蹤球、或者跟蹤板之類的光標(biāo)控制。此外,所述I/O設(shè)備還可以包含網(wǎng)絡(luò)連接器,以便使計(jì)算機(jī)系統(tǒng)100作為局域網(wǎng)(LAN)、內(nèi)部網(wǎng)、外部網(wǎng)絡(luò)或者廣域網(wǎng)(WAN)的一部分。此外,I/O設(shè)備120包含與用于記錄聲音輸入以便進(jìn)行語音識(shí)別的麥克風(fēng)相耦合的如下設(shè)備,所述設(shè)備用于錄音和/或回放,諸如音頻數(shù)字化器。所述I/O設(shè)備120還可以包含能夠用來捕捉視頻圖像的視頻數(shù)字化設(shè)備、諸如打印機(jī)的硬拷貝設(shè)備、以及CD-ROM設(shè)備等等。
處理器圖2說明了一個(gè)處理器110,以及高速緩存處理器(CaPro)400的詳圖。利用下述多種工藝技術(shù)中的任何一種,將處理器110和CaPro400實(shí)現(xiàn)在一個(gè)或多個(gè)襯底上,所述工藝技術(shù)例如是BiCMOS、CMOS、和NMOS。處理器110包含用于對(duì)處理器110所使用的控制信號(hào)和數(shù)據(jù)進(jìn)行譯碼的譯碼器202。然后,數(shù)據(jù)能夠經(jīng)由內(nèi)部總線205被存儲(chǔ)在寄存器堆200中。為了清楚起見,一個(gè)實(shí)施例中的寄存器不應(yīng)該被限制為意味著特定類型的電路。更準(zhǔn)確地說,實(shí)施例中的寄存器僅僅需要能夠存儲(chǔ)和提供數(shù)據(jù),以及執(zhí)行在此描述的功能。在一個(gè)實(shí)施例中,CaPro400可以包含處理器110的寄存器以及內(nèi)部總線的一部分。
根據(jù)數(shù)據(jù)的類型,數(shù)據(jù)可以被存儲(chǔ)在整數(shù)寄存器202、寄存器210、寄存器214、狀態(tài)寄存器208、或者指令指針寄存器206中。其他的寄存器能夠被包含在寄存器堆204中,例如被包含浮點(diǎn)寄存器204中。在一個(gè)實(shí)施例中,整數(shù)寄存器202存儲(chǔ)32位整型數(shù)據(jù)。在一個(gè)實(shí)施例中,寄存器210包含8個(gè)多媒體寄存器,R0212-1到R7212-7,例如,包含壓縮數(shù)據(jù)的單指令、多數(shù)據(jù)(SIMD)寄存器。在一個(gè)實(shí)施例中,在寄存器210中的每個(gè)寄存器長度為128位,R1 212-1、R2 212 2和R3 212-3是寄存器210中的單獨(dú)寄存器的示例。在寄存器210中的寄存器的32位能夠被移入到在整數(shù)寄存器202中的整數(shù)寄存器中。類似地,整數(shù)寄存器中的值能夠被移入寄存器210中的寄存器的32位中。
在一個(gè)實(shí)施例中,寄存器214包含8個(gè)多媒體寄存器,216-1到216-N,例如,包含壓縮數(shù)據(jù)的單指令、多數(shù)據(jù)(SIMD)寄存器。在一個(gè)實(shí)施例中,寄存器214中的每個(gè)寄存器長度為64位。寄存器214中的寄存器的32位能夠被移入到整數(shù)寄存器202中的整數(shù)寄存器中。類似地,整數(shù)寄存器中的值能夠被移入寄存器214中的寄存器的32位中。狀態(tài)寄存器208指示處理器109的狀態(tài)。在一個(gè)實(shí)施例中,指令指針寄存器211存儲(chǔ)要被執(zhí)行的下一個(gè)指令的地址。整數(shù)寄存器202、寄存器210、狀態(tài)寄存器208、寄存器214、浮點(diǎn)寄存器204和指令指針寄存器206它們都與內(nèi)部總線190相連接。任何附加的寄存器也常和內(nèi)部總線190相連接。
在另一個(gè)實(shí)施例中,一些寄存器能夠供不同類型的數(shù)據(jù)使用。例如,寄存器210/214和整數(shù)寄存器202能夠被組合在一起,其中每個(gè)寄存器能夠存儲(chǔ)整型數(shù)據(jù)或者壓縮數(shù)據(jù)。在另一個(gè)實(shí)施例中,寄存器210/214能夠被用作浮點(diǎn)寄存器。在這個(gè)實(shí)施例中,壓縮數(shù)據(jù)或者浮點(diǎn)數(shù)據(jù)能夠被存儲(chǔ)在寄存器210/214中。在一個(gè)實(shí)施例中,組合的寄存器長度為192位,而且整數(shù)被表示為192位。在這個(gè)實(shí)施例中,在存儲(chǔ)壓縮數(shù)據(jù)和整型數(shù)據(jù)時(shí),寄存器不需要區(qū)分這兩種數(shù)據(jù)類型。
執(zhí)行單元130與例如ALU180一起執(zhí)行由處理器110執(zhí)行的操作。這樣的操作可以包含移位、加法、減法和乘法等等。功能單元130連接到內(nèi)部總線190。在一個(gè)實(shí)施例中,如上所述,系統(tǒng)100包含高速緩存處理器(CaPro)400,包括數(shù)據(jù)緩沖器(本地高速緩存器)410,而處理器110包含一個(gè)或多個(gè)第二存儲(chǔ)器緩沖器(高速緩存器)160。CaPro400,以及一個(gè)或多個(gè)高速緩沖存儲(chǔ)器160和本地高速緩存器410,能夠用來緩沖來自例如主存儲(chǔ)器104的數(shù)據(jù)和/或控制信號(hào)。CaPro400以及高速緩沖存儲(chǔ)器160被連接到譯碼器170,以及被連接來接收控制信號(hào)。
數(shù)據(jù)和存儲(chǔ)格式現(xiàn)在參見圖3A和3B,圖3A和3B說明了依據(jù)本發(fā)明一實(shí)施例的128位SIMD數(shù)據(jù)類型。圖3A說明了四個(gè)128位壓縮數(shù)據(jù)類型220,壓縮字節(jié)222、壓縮字224、壓縮雙字(雙字)226和壓縮四倍字228。壓縮字節(jié)222的長度是包含16個(gè)壓縮字節(jié)數(shù)據(jù)單元的128位。通常,一個(gè)數(shù)據(jù)單元是一個(gè)和其他同樣長度的數(shù)據(jù)單元一起被存儲(chǔ)在單個(gè)寄存器(或者存儲(chǔ)單元)中的單個(gè)數(shù)據(jù)片。在壓縮數(shù)據(jù)序列中,存儲(chǔ)在寄存器中的數(shù)據(jù)單元的數(shù)目是128位除以以數(shù)據(jù)單元的位為單位的長度。
壓縮字224長度是128位,并且包含8個(gè)壓縮字的數(shù)據(jù)單元。每個(gè)壓縮字包含16位的信息。壓縮雙字226長度為128位,并且包含四個(gè)壓縮雙字?jǐn)?shù)據(jù)單元。每個(gè)壓縮雙字?jǐn)?shù)據(jù)單元包含32位信息。壓縮四倍字228長度為128位,而且包含兩個(gè)壓縮四倍字?jǐn)?shù)據(jù)單元。因此,所有可用的位都被用在寄存器中。這個(gè)存儲(chǔ)排列增加了所述處理器的存儲(chǔ)效率。此外,利用同時(shí)存取的多個(gè)數(shù)據(jù)單元,現(xiàn)在能夠同時(shí)對(duì)多個(gè)數(shù)據(jù)單元執(zhí)行一個(gè)操作。
圖3B依據(jù)本發(fā)明的一實(shí)施例說明了128位壓縮浮點(diǎn)和整型數(shù)據(jù)類型230。壓縮單精度浮點(diǎn)232說明了存儲(chǔ)在如圖2所示的一SIMD寄存器210中的四個(gè)32位浮點(diǎn)值。壓縮雙精度浮點(diǎn)234說明了存儲(chǔ)在如圖2所示的一SIMD寄存器210中的兩個(gè)64位浮點(diǎn)值。如在下面進(jìn)一步詳細(xì)描述的那樣,利用兩個(gè)128位寄存器,壓縮雙精度浮點(diǎn)234可以被用來存儲(chǔ)一個(gè)完整的子矩陣,其中每個(gè)寄存器128都包含以壓縮雙精度浮點(diǎn)格式存儲(chǔ)的四個(gè)向量元素。壓縮字節(jié)整數(shù)236說明了16個(gè)壓縮整數(shù)的存儲(chǔ),同時(shí)壓縮字整數(shù)238說明了8個(gè)壓縮字的存儲(chǔ)。最后,壓縮雙字整數(shù)240說明了四個(gè)壓縮雙字的存儲(chǔ),同時(shí)壓縮四倍字整數(shù)242說明了在例如如圖2所示的128位寄存器內(nèi)的兩個(gè)壓縮四倍字整數(shù)的存儲(chǔ)。
現(xiàn)在參見圖3C和3D。圖3C和3D描述了這樣的方框圖,所述方框圖說明了依據(jù)本發(fā)明一實(shí)施例的64位壓縮單指令多數(shù)據(jù)(SIMD)數(shù)據(jù)類型,如在寄存器214內(nèi)所存儲(chǔ)的。因而,圖3C描述了四464位壓縮數(shù)據(jù)類型250,壓縮字節(jié)252、壓縮字254、壓縮雙字256和壓縮四倍字258。壓縮字節(jié)252長度為64位,包含8個(gè)壓縮字節(jié)數(shù)據(jù)單元。如上所述,在壓縮數(shù)據(jù)序列中,存儲(chǔ)在一個(gè)寄存器中的數(shù)據(jù)單元的數(shù)目為64位除以以一個(gè)數(shù)據(jù)單元的位為單位的長度。壓縮字254長度為64位并且包含4個(gè)壓縮字單元。每個(gè)壓縮字都包含16位的信息。壓縮雙字256長度為64位并且包含2個(gè)壓縮雙字?jǐn)?shù)據(jù)單元。每個(gè)壓縮雙字?jǐn)?shù)據(jù)單元包含32位信息。最后壓縮四倍字258長度為64位,并且正好包含一個(gè)64位的壓縮四倍字?jǐn)?shù)據(jù)單元。
現(xiàn)在參見圖3D,圖3D說明了依據(jù)本發(fā)明的另一個(gè)實(shí)施例,64位壓縮浮點(diǎn)和整型數(shù)據(jù)類型260,如在寄存器214內(nèi)所存儲(chǔ)的。壓縮單精度浮點(diǎn)262說明了在如圖2所示的一SIMD寄存器214中所存儲(chǔ)的兩個(gè)32位浮點(diǎn)數(shù)值。壓縮雙精度浮點(diǎn)264說明了在如圖2所示的一SIMD寄存器214中所存儲(chǔ)的一個(gè)64位浮點(diǎn)值。壓縮字節(jié)整數(shù)266說明了在如圖2所示的一SIMD寄存器214中所存儲(chǔ)的八個(gè)32位整數(shù)值。壓縮雙字整數(shù)270說明了在如圖2所示的一SIMD寄存器214中所存儲(chǔ)的兩個(gè)32位整數(shù)值。最后,壓縮四倍字整數(shù)272說明了在如圖2所示的一SIMD寄存器214中所存儲(chǔ)的一個(gè)64位整數(shù)值。
傳統(tǒng)的圖像塊處理如圖4中描述的那樣,當(dāng)前用于圖像/視頻應(yīng)用的光柵掃瞄存儲(chǔ)器排列300以一種線性方式貫穿圖像平面放置像素?cái)?shù)據(jù)302。因此,在傳統(tǒng)的光柵掃描存儲(chǔ)器排列300中,一條高速緩存線通常保持了幾個(gè)基本圖像塊(例如,8×8或者16×16)的一些部分。例如,一條高速緩存線能夠保持用于四個(gè)單獨(dú)基本圖像塊的一條線。在另一方面,一個(gè)基本的圖像塊通常被包含多條高速緩存線中。即,單個(gè)基本的塊能夠包含在例如八條單獨(dú)的高速緩存線中。
依據(jù)Memorv存取模式的數(shù)據(jù)存取現(xiàn)在參見圖5,圖5描述了一個(gè)框圖,所述框圖說明了依據(jù)本發(fā)明的一個(gè)實(shí)施例、依據(jù)一個(gè)存儲(chǔ)器訪問模式的存儲(chǔ)器讀取操作350。如說明的那樣,圖像352包括一個(gè)圖像塊,所述圖像塊由高速緩存線354(354-1,…,354-4)組成。為了處理這圖像,本發(fā)明描述了存儲(chǔ)器存取(CP-Load)操作/指令,它允許依據(jù)每一高速緩存/存儲(chǔ)器線內(nèi)的存儲(chǔ)器存取模式來縱向讀取/寫入數(shù)據(jù)到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備370中。與傳統(tǒng)的存儲(chǔ)器操作指令相反,響應(yīng)于單條指令來執(zhí)行這樣一個(gè)操作。
為了支持由例如CPU所進(jìn)行的依據(jù)一個(gè)存儲(chǔ)器存取模式(如圖5描述的那樣)的存儲(chǔ)器存取,如圖1中說明的那樣提供新的指令。在一個(gè)實(shí)施例中,一個(gè)新的指令看來像以下所示CPMOV[B|W|D]2[Q|DQ][MMX|XMM],patten_map,start_addr,offset如圖5中說明的那樣,新的指令,假定CPMOVW2Q MMO,start_addr,pitch的效果如下所示MMO
←[start_addr+pattern_map[offset]](1)MMO[16..31]←[start_addr+pattern_map+[offset]] (2)MMO[32..47]←[start_addr+pattern_map[offset]+*2](3)MMO[48..63]←[start_addr+pattem_map[offset]+*3] (4)在一個(gè)實(shí)施例中,CP加載操作的實(shí)現(xiàn)是利用CaPro400來執(zhí)行的,當(dāng)依據(jù)隨機(jī)/各種存儲(chǔ)器存取模式來存取數(shù)據(jù)時(shí)使用本地高速緩存器410來隱藏?cái)?shù)據(jù)存取時(shí)間。換句話說,CaPro400依據(jù)存儲(chǔ)器存取模式來存取所請(qǐng)求的數(shù)據(jù),并且例如如在圖3A-3D中描述的那樣,順序地在一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備諸如z寄存器內(nèi)順序地存儲(chǔ)數(shù)據(jù)。在一個(gè)替換的實(shí)施例中,CP加載指令/操作能夠把本地高速緩存器指定為目的地設(shè)備。依據(jù)這個(gè)實(shí)施例,一旦請(qǐng)求的數(shù)據(jù)可用于由CPU110進(jìn)行的順序存儲(chǔ)器存取,則CaPro400通知CPU110。
因此,如由操作1-4說明的那樣,指令參數(shù)MMO涉及例如目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備370,如圖5所示。如參考圖1所描述的,CPMOV操作支持字節(jié)、字和雙字的非橫向順序存儲(chǔ)器讀取。然而,本領(lǐng)域的那些技術(shù)人員將要理解本發(fā)明的實(shí)施例可以應(yīng)用于字節(jié)倍數(shù)的任何變化。因此,CPMOV操作用于說明的目的而提供,而且它不應(yīng)該以一種限制的意義被解釋。
因而,響應(yīng)于單個(gè)CPMOV操作來實(shí)現(xiàn)移動(dòng)操作1-4。此外,當(dāng)檢測(cè)到由CP加載操作所請(qǐng)求的數(shù)據(jù)的高速緩存器未命中時(shí),CPMOV操作內(nèi)的參數(shù)2Q和2DQ引導(dǎo)在本地高速緩存器410內(nèi)的數(shù)據(jù)塊加載。因此,在一個(gè)實(shí)施例中,當(dāng)處理所述字節(jié)數(shù)據(jù)時(shí),參數(shù)2Q要求在CP高速緩沖存儲(chǔ)器410的相應(yīng)部分內(nèi)加載8字節(jié)8線的數(shù)據(jù)塊。此外,當(dāng)提供2DQ參數(shù)時(shí),在所述CP高速緩沖存儲(chǔ)器410的相應(yīng)部分內(nèi)加載一個(gè)8字節(jié)16線的塊。
當(dāng)處理字?jǐn)?shù)據(jù)時(shí),2Q參數(shù)要求在本地高速緩存器410內(nèi)加載一個(gè)8字節(jié)4線的塊,同時(shí)2DQ參數(shù)要求加載一個(gè)8字節(jié)8線塊的數(shù)據(jù)。最后,當(dāng)處理雙字?jǐn)?shù)據(jù)時(shí),參數(shù)2Q要求加載一個(gè)8字節(jié)2線的塊,而2DQ參數(shù)要求加載一個(gè)8字節(jié)4線的塊。因此,假定CP移動(dòng)操作如上所述,如果檢測(cè)到請(qǐng)求數(shù)據(jù)的高速緩存器未命中,所執(zhí)行的操作如下所述local Cache←[astart_addr]
(5)local Cache←[[astart_addr+offset]
(6)local Cache←[[astart_addr+offset*2]
(7)local Cache←[astart_addr+offset*3]
(8)到CP高速緩存器中,其中對(duì)齊的開始地址(astart_addr)=(start_addr&(-7))??蛇x地,在一個(gè)實(shí)施例中,可以依據(jù)存儲(chǔ)器存取模式來選擇數(shù)據(jù)塊以確定包含所請(qǐng)求數(shù)據(jù)的圖像塊的最小維度。
高速緩存處理器-CaPro
現(xiàn)在參見圖6,圖6依據(jù)一個(gè)利用用于實(shí)現(xiàn)如上所述的CP加載操作的高速緩存處理器(CaPro)400的實(shí)施例,進(jìn)一步說明了如圖1中描述的計(jì)算機(jī)系統(tǒng)100。如說明的那樣,CaPro400包含能夠存儲(chǔ)位和多倍字節(jié)的數(shù)據(jù)的本地高速緩存器410。在一個(gè)實(shí)施例中,本地高速緩存器410被再分成字節(jié)緩沖器、字緩沖器和雙字緩沖器。然而,在本領(lǐng)域的技術(shù)人員將要理解可以使用不同的多倍字節(jié)作為本地高速緩沖存儲(chǔ)器410的各種數(shù)據(jù)緩沖器來實(shí)現(xiàn)本地高速緩沖存儲(chǔ)器410。因此,圖6僅僅為說明的目的提供而且不應(yīng)該以一種限制的意義進(jìn)行解釋。在一個(gè)實(shí)施例中,高速緩存410被稱為本地?cái)?shù)據(jù)緩沖器,而一級(jí)高速緩存器160-1和二級(jí)高速緩存器160-2被稱為一個(gè)或多個(gè)存儲(chǔ)器緩沖器。
在圖6描述的實(shí)施例中,CPU110可能需要依據(jù)非橫向/非縱向的順序存取模式進(jìn)行數(shù)據(jù)高速緩存。因而,依據(jù)本發(fā)明的一個(gè)實(shí)施例,CPU110將確定所期望的存取模式,并和CP加載指令一起將所述存取模式(或者另外的引用)和加載指令傳輸?shù)礁咚倬彺嫣幚砥?00。接著,高速緩存處理器400將收集來自1級(jí)(LI)高速緩存160-1、2二級(jí)高速緩存器(L2)160-2或者主存儲(chǔ)器104的所希望的數(shù)據(jù)。
一旦收集了所希望的數(shù)據(jù),CaPro400重新組織所希望的數(shù)據(jù),以使CPU110能夠使用傳統(tǒng)的順序存儲(chǔ)器存取來存取所希望的數(shù)據(jù)。然而,在描述的實(shí)施例中,本地高速緩存器410被配置為用于CPU110的只讀高速緩存器。因而,CPU110總體上被限值在讀取來自本地高速緩存器410的數(shù)據(jù),而由CPU110執(zhí)行的數(shù)據(jù)寫在L1/L2高速緩存器160和主存儲(chǔ)器104內(nèi)加以執(zhí)行,并且僅限于在它們中加以執(zhí)行。作為對(duì)照,CaPro400在本地高速緩存器410內(nèi)讀和寫希望的數(shù)據(jù),如由所接收的存儲(chǔ)器存取模式以及CP加載指令所規(guī)定。
現(xiàn)在參見圖7A,圖7A依據(jù)本發(fā)明的另一實(shí)施例,進(jìn)一步說明了如圖6所示的本地高速緩沖存儲(chǔ)器410。如所說明的那樣,本地高速緩存器410的數(shù)據(jù)緩沖器(420、430和440),每個(gè)都包含相應(yīng)的高速緩存器標(biāo)記(422、432和442),用于在所述相應(yīng)數(shù)據(jù)緩沖器內(nèi)確定所請(qǐng)求數(shù)據(jù)的高速緩存器命中或者未命中。此外,每個(gè)數(shù)據(jù)緩沖器包含一個(gè)并行寫端口(424、434和444),以及一個(gè)并行讀端口(426、436和446)。在一個(gè)實(shí)施例中,并行讀/寫端口由CaPro400使用來依據(jù)存儲(chǔ)器存取模式來加載數(shù)據(jù),并且組織所述數(shù)據(jù)以允許由CPU110在一個(gè)選定的目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備內(nèi)順序存取數(shù)據(jù)。
現(xiàn)在參見圖7B,圖7B描述了一個(gè)本地高速緩沖存儲(chǔ)器410的一個(gè)替換實(shí)施例,本地高速緩沖存儲(chǔ)器4 10圖示了線緩沖器450,以及數(shù)據(jù)混洗器460,由CaPro400使用來產(chǎn)生相應(yīng)的輸出數(shù)據(jù)370。如說明的那樣,線緩沖器450被用來保持?jǐn)?shù)據(jù),而混洗器/交叉開關(guān)460用來收集分散的數(shù)據(jù)。一旦數(shù)據(jù)被收集了,則數(shù)據(jù)就被放置到輸出370中??蛇x地,一旦所述數(shù)據(jù)是按照順序的次序被放置的以允許對(duì)其的存取,則CaPro400就向CPU110發(fā)送一個(gè)信號(hào)。
雖然如在圖7A和7B中描述的那樣,本地高速緩存器410利用了存儲(chǔ)器轉(zhuǎn)置電路(圖7A)或者線緩沖器440和混洗器450(圖7B),但是在本領(lǐng)域的技術(shù)人員將要承認(rèn)本發(fā)明包含了各種用于如由本發(fā)明所示教的那樣、依據(jù)從高速緩沖存儲(chǔ)器所接收的存儲(chǔ)器存取模式而實(shí)現(xiàn)存儲(chǔ)器存取的其他裝置。因此,所描述的實(shí)施例不應(yīng)該以限制的意義解釋,因?yàn)樗峁┑母鞣N實(shí)施例是作為本發(fā)明的一種可能的實(shí)現(xiàn)。
因而,當(dāng)響應(yīng)于指定存儲(chǔ)器存取模式的CP加載操作來存取數(shù)據(jù)時(shí),使用高速緩存處理器400,就從CPU110隱藏了存儲(chǔ)器存取時(shí)間。這樣做時(shí),可以使用計(jì)算機(jī)系統(tǒng)100以一種超過傳統(tǒng)計(jì)算機(jī)系統(tǒng)的改進(jìn)和有效方式執(zhí)行圖像和視頻處理操作。在一個(gè)實(shí)施例中,CaPro400將依據(jù)所請(qǐng)求的存儲(chǔ)器存取模式來在諸如像寄存器之類的目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中加載數(shù)據(jù)??蛇x地,CaPro400將在本地高速緩存器410內(nèi)組織所請(qǐng)求的數(shù)據(jù)。因此,基于所示的實(shí)施例,一旦所請(qǐng)求的數(shù)據(jù)被組織以允許順序的存儲(chǔ)器存取數(shù)據(jù)時(shí),CaPro400將發(fā)信號(hào)通知CPU110。因而,一旦提供了來自CaPro400的信號(hào),CPU110可以使用傳統(tǒng)的順序存儲(chǔ)器存取來存取所請(qǐng)求的數(shù)據(jù)。
如上所述,使用CP加載操作以及CaPro400,本發(fā)明的實(shí)施例能夠?yàn)镃PU110屏蔽如下存儲(chǔ)器存取時(shí)間,所述存儲(chǔ)器存取時(shí)間是依據(jù)由例如視頻/圖像處理操作所要求的隨機(jī)存儲(chǔ)器存取模式來存取數(shù)據(jù)所需要的。因此,如圖5中說明的那樣,通過使用非橫向/非縱向順序存儲(chǔ)器存取,諸如以之字形掃描次序從一個(gè)圖像塊中讀取數(shù)據(jù),圖像視頻處理/編碼操作就被簡化了??梢砸罁?jù)本發(fā)明中的實(shí)施例,例如,如圖8A和8B中描述的那樣,實(shí)現(xiàn)各種圖像處理/編碼操作。
圖8A描述了這樣一個(gè)框圖,所述框圖說明了在例如JPEG2000內(nèi)執(zhí)行基于小波變換的圖像編碼所要求的零樹編碼500。如說明的那樣,使用傳統(tǒng)的橫向順序存儲(chǔ)器存取(圖4)不能有效地執(zhí)行所需的數(shù)據(jù)存取。然而,利用CaPro400,使用依據(jù)CP加載操作的非縱向/非橫向的順序存儲(chǔ)器存取,能夠有效地存取所需要的零樹數(shù)據(jù)504(504-1、5042和504-3)。因此,CPU110能夠確定存儲(chǔ)器存取模式(如箭頭所示的那樣)來收集低頻率510和高頻率零樹數(shù)據(jù)504。響應(yīng)于CP加載操作和所接收的參考存取模式,CaPro400依據(jù)零樹編碼500把CPU110從存取數(shù)據(jù)所需要的存儲(chǔ)器存取時(shí)間中屏蔽開來。一旦被存取了,CaPro400就組織所述數(shù)據(jù)以允許它由CPU110進(jìn)行的順序存取。
現(xiàn)在參見圖8B,圖8B描述了一個(gè)說明一圖像550的框圖,其中要求用位平面提取來執(zhí)行小波圖像編碼和解碼。如說明的那樣,位平面提取需要存取位平面數(shù)據(jù)554(554-1,…,554-N),所述數(shù)據(jù)無法使用傳統(tǒng)的橫向順序存儲(chǔ)器存取(圖4)來加以存取。然而,依據(jù)本發(fā)明的實(shí)施例,可以由CPU110發(fā)出存儲(chǔ)器存取模式,從而使得利用CP加載操作以及CaPro400,如圖6中描述的,可以有效地存取各種位平面數(shù)據(jù)554。因此,利用CP加載指令以及CaPro400,通過利用根據(jù)本發(fā)明的實(shí)施例所提供的非橫向/非縱向順序存儲(chǔ)器存取,在小波圖像編碼和解碼期間位平面提取所需要的存儲(chǔ)器存取和CPU110就被屏蔽掉了。
高速緩存器一致性在一個(gè)實(shí)施例中,假定描述的實(shí)施例不支持CP寫操作,那么由CaPro400實(shí)現(xiàn)MESI(修改(M)、排它(E)、共享(S)和無效(I))高速緩存線狀態(tài)的一個(gè)子集,S和I。如果CP加載未命中,則CaPro向L1/L2高速緩存160發(fā)出一個(gè)請(qǐng)求。在L1/L2高速緩存160中執(zhí)行一次查找,導(dǎo)致一次命中或者未命中。如果檢測(cè)到了命中,則CaPro400檢索所述塊。把所述數(shù)據(jù)塊放置到具有S狀態(tài)的本地高速緩存器410中。如果所述請(qǐng)求導(dǎo)致高速緩存器未命中,則CaPro400可以向外部總線接口發(fā)出一個(gè)請(qǐng)求,并且所述數(shù)據(jù)塊就被從外部存儲(chǔ)器104或者外部數(shù)據(jù)緩沖器(沒有顯示)中讀取。
在所述事務(wù)的探聽階段期間,其他的高速緩存器報(bào)告它們是否具有一份所述數(shù)據(jù)塊的拷貝。如果任何外部的高速緩存器都具有在M狀態(tài)中的一個(gè)拷貝,則從那個(gè)高速緩存器中提供所述線,并且所述線被放置到處于S狀態(tài)的本地高速緩存器410和L1/L2高速緩存器160中。在M個(gè)數(shù)據(jù)塊被提供給本地高速緩存器410的同時(shí),所述數(shù)據(jù)塊被寫入存儲(chǔ)器104中。外部高速緩存器中的所述塊數(shù)據(jù)因此不再和存儲(chǔ)器104中的不相同了。
因而,數(shù)據(jù)塊的狀態(tài)從M轉(zhuǎn)換為S狀態(tài)。當(dāng)沒有其它的高速緩存器具有一個(gè)拷貝(探聽未命中)或者任何其他高速緩存器(外部高速緩存器)具有在E或者S狀態(tài)中的一個(gè)拷貝時(shí),從存儲(chǔ)器104中讀取所述數(shù)據(jù)塊。當(dāng)完成從存儲(chǔ)器104中讀取所述數(shù)據(jù)塊時(shí),L1/L2高速緩存160和本地高速緩存器410使它們的拷貝處于S狀態(tài)。任何其他的高速緩存器具有一個(gè)拷貝,所述數(shù)據(jù)塊也在S狀態(tài)。因此,CaPro400維護(hù)在系統(tǒng)100內(nèi)的數(shù)據(jù)一致性。在描述的實(shí)施例中,CPU110不負(fù)責(zé)維護(hù)本地高速緩存器410的一致性,因?yàn)镃PU110不向本地高速緩存器410進(jìn)行寫入。
現(xiàn)在轉(zhuǎn)向圖9,其中顯示了一個(gè)電子系統(tǒng)600的一個(gè)實(shí)施例框圖,所述電子系統(tǒng)600中處理器具有如上所述的CaPro400以及本地高速緩沖存儲(chǔ)器的特征。所述系統(tǒng)包含一個(gè)多層印刷布線板604,在其上形成了一條并行總線608??偩€608可以是點(diǎn)到點(diǎn)類型的,或者諸如在主存儲(chǔ)器中所使用的那些總線的多站總線??蛇x地,總線608可以利用各種芯片封裝之間的光信號(hào)來實(shí)現(xiàn),其中需要光/電轉(zhuǎn)換。集成電路(IC)芯片封裝606可被操作地安裝在板上以使用所述并行總線608進(jìn)行通信。封裝606的安裝可以通過表面安裝技術(shù)或者經(jīng)由連接器或者槽來完成。
此外,所述封裝具有IC芯片610,IC芯片610包括邏輯功能部分和I/O部分,I/O部分作為所述邏輯功能部分和總線608之間的接口。在一個(gè)實(shí)施例中,邏輯功能是一個(gè)微處理器,包含如上所述的CaPro400和本地高速緩存器410存儲(chǔ)器??蛇x地,能夠在IC芯片的邏輯功能部分中實(shí)現(xiàn)的其他設(shè)備也可以被使用,諸如存儲(chǔ)器控制器,和總線橋接器。所述I/O部分具有一個(gè)總線接收器,在所述總線接收器中,提供了如上所述的平衡回路。
第二IC封裝612也被安置在板604上,以經(jīng)由總線608與第一個(gè)封裝606進(jìn)行通信。第二IC封裝612也包含一個(gè)在其中提供了總線接收器的芯片614,用于與總線608相接口,以及它自己的邏輯功能部分(在此顯示為一個(gè)存儲(chǔ)控制器)。本領(lǐng)域的技術(shù)人員將會(huì)明白,制造系統(tǒng)600是為說明目的提供而不應(yīng)該以一種限制的意義進(jìn)行解釋。此外,各個(gè)IC封裝可以按具體實(shí)現(xiàn)細(xì)節(jié)的要求被包括在獨(dú)立的板內(nèi)體現(xiàn)或者加以組合。此外,在各個(gè)部件之間通信不局限于電信號(hào)而且包含光通信、微電子機(jī)械通信信號(hào)等等。
如上所述,依據(jù)一個(gè)實(shí)施例,微處理器(MP)620利用一個(gè)高速緩存處理器(CaPro)630。因此,在這樣一個(gè)實(shí)施例中,當(dāng)響應(yīng)于單個(gè)CP加載指令并根據(jù)存儲(chǔ)器存取模式來存取數(shù)據(jù)時(shí),CaPro630隱藏MP620的存儲(chǔ)器存取時(shí)間。高速緩存處理器630的其他系統(tǒng)應(yīng)用是可能的,包括例如存儲(chǔ)器控制器。
因此,在圖1和2中描述的計(jì)算機(jī)系統(tǒng)100沒有遭受上面參考傳統(tǒng)的圖形應(yīng)用所述的問題。通過使用一個(gè)高速緩存處理器400,處理器110能夠依據(jù)由當(dāng)前圖像/視頻處理/編碼算法所需要的特定/存儲(chǔ)器存取模式來讀取/寫入數(shù)據(jù)。此外,當(dāng)依據(jù)特定存儲(chǔ)器存取模式進(jìn)行處理圖像數(shù)據(jù)時(shí),高速緩存處理器400避免了由傳統(tǒng)高速緩沖存儲(chǔ)器所遭受的過多的數(shù)據(jù)存取時(shí)間?,F(xiàn)在描述用于實(shí)現(xiàn)本發(fā)明實(shí)施例的過程方法。
操作現(xiàn)在參見圖10,圖10描述了一個(gè)流程圖,所述流程圖說明了用于依據(jù)隨機(jī)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器諸如在圖1,2,6和9中描述的計(jì)算機(jī)系統(tǒng)100的高速緩存處理器400的本地高速緩沖存儲(chǔ)器410中,存取數(shù)據(jù)的方法700。在過程塊702處,確定是否接收了CP存儲(chǔ)器存取指令。CP存儲(chǔ)器存取指令包含例如但不局限于,如圖1所描述的CPMOV指令(142-158)。一旦接收了CP存儲(chǔ)器存取指令,則執(zhí)行過程塊704。
在過程塊704處,確定是否檢測(cè)到了存儲(chǔ)器存取模式。如在上面實(shí)施例中描述的那樣,存儲(chǔ)器存取模式依據(jù)一組由存儲(chǔ)器存取模式指針?biāo)甘镜臄?shù)據(jù)地址和偏移量來指示存儲(chǔ)器存取。存儲(chǔ)器存取模式可能包含但不局限于,之字形存儲(chǔ)器存取模式(如在圖5中描述的那樣)、零樹編碼存儲(chǔ)器存取模式(圖8A)、位平面提取存儲(chǔ)器存取模式(圖8B)、細(xì)粒度可伸縮性存取模式等等。
此外,如在上面的實(shí)施例中描述的那樣,當(dāng)檢測(cè)到這樣的存儲(chǔ)器存取模式時(shí),高速緩存處理器400向CPU110屏蔽依據(jù)所述存儲(chǔ)器存取模式的存取數(shù)據(jù)所要求的存儲(chǔ)器存取時(shí)間。存取模式根據(jù)視頻或者圖像編碼操作而變化,這些操作是,諸如離散余弦變換、JPEG2000位平面提取、和MPEG4細(xì)粒度可伸縮性等等所需要的。因此,讓CPU110集中于圖像/視頻處理操作的其他部分。
接下來,在過程塊706處,確定與所接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)器存取模式。如在上面的實(shí)施例描述的那樣,所述存儲(chǔ)器存取模式可以起到指向存儲(chǔ)器中的地址單元的指針的作用,其中所述指針包含如下數(shù)據(jù)的地址和偏移列表,所述數(shù)據(jù)包含存儲(chǔ)器存取模式。因此,一旦確定了這些數(shù)據(jù)地址和偏移,在過程塊720處,高速緩存處理器410將依據(jù)所確定的存儲(chǔ)器存取模式存取與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。最后,在過程塊790處,高速緩存處理器依據(jù)所接收的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù),這在一個(gè)實(shí)施例將要求高速緩存處理器在CPU110的數(shù)據(jù)存儲(chǔ)設(shè)備內(nèi)存儲(chǔ)所存取的數(shù)據(jù),并且一旦所述數(shù)據(jù)可利用順序存儲(chǔ)器存取來存取,則修改CPU110。
現(xiàn)在參見圖11,圖11描述了一個(gè)流程圖,所述流程圖說明了一種如在圖6中描述的CaPro410執(zhí)行的,用于依據(jù)所確定的存儲(chǔ)器存取模式確定用于存取數(shù)據(jù)的數(shù)據(jù)地址和數(shù)據(jù)偏移量的另一方法708。在過程塊710處,高速緩存處理器400確定所述存儲(chǔ)器存取模式的存儲(chǔ)單元。在一實(shí)施例中,存儲(chǔ)器存取模式充當(dāng)指向存儲(chǔ)單元的指針,所述指針包含如下數(shù)據(jù)的地址和偏移量,所述數(shù)據(jù)地址和偏移量定義了包含存儲(chǔ)器存取模式的數(shù)據(jù)。一旦確定了所述存儲(chǔ)單元,在過程塊712處,高速緩存處理器400讀取定義所述存儲(chǔ)器存取模式的一個(gè)或多個(gè)數(shù)據(jù)地址。接下來,在過程塊714處,高速緩存處理器確定用于存取與接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)偏移量。最后,在過程塊716處,高速緩存處理器存儲(chǔ)按照所述一個(gè)或多個(gè)數(shù)據(jù)偏移量的一個(gè)或多個(gè)數(shù)據(jù)地址,以允許依據(jù)所述存儲(chǔ)器存取模式存取數(shù)據(jù)。
現(xiàn)在參見圖12,圖12描述了另外一種用于對(duì)如圖10所示的過程塊720的存取數(shù)據(jù)的方法722的流程圖,所述過程塊720可以是例如如圖6所示的本地高速緩存器410的過程塊。在過程塊724處,確定是否檢測(cè)到由所述存儲(chǔ)器存取指令請(qǐng)求的數(shù)據(jù)的高速緩存器未命中。當(dāng)檢測(cè)到高速緩存器未命中時(shí),在過程塊724處,在本地?cái)?shù)據(jù)緩沖器410內(nèi)加載一數(shù)據(jù)塊。依據(jù)一個(gè)實(shí)施例,數(shù)據(jù)塊的大小是由如圖1所示的CPMOV操作的2DQ/2Q參數(shù)所確定的。因此,根據(jù)CPMOV操作的數(shù)據(jù)類型,在本地高速緩存器410內(nèi)將加載一個(gè)包含與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)塊。最后,在過程塊778處,高速緩存處理器400依據(jù)存儲(chǔ)器存取模式從本地?cái)?shù)據(jù)緩沖器410中存取數(shù)據(jù)。
現(xiàn)在參見圖13,圖13描述了一個(gè)流程圖,所述流程圖說明了另外一種方法726,用于如圖12所示的過程塊724的在本地?cái)?shù)據(jù)緩沖器內(nèi)加載一數(shù)據(jù)塊。在過程塊728處,高速緩存處理器400向一個(gè)或多個(gè)存儲(chǔ)器緩沖器160發(fā)出一個(gè)數(shù)據(jù)請(qǐng)求。如參考圖6描述的那樣,高速緩存處理器400會(huì)向一級(jí)高速緩存器160-1和二級(jí)高速緩存器160-2都發(fā)出一個(gè)數(shù)據(jù)請(qǐng)求。
接下來,在過程塊772處,高速緩存處理器400從一個(gè)或多個(gè)存儲(chǔ)器緩沖器160的一個(gè)存儲(chǔ)器緩沖器160-1中檢索包含所請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)塊。如描述的那樣,所述一個(gè)或多個(gè)存儲(chǔ)器緩沖器是指計(jì)算機(jī)系統(tǒng)100的一級(jí)高速緩存器160-1和二級(jí)高速緩存器160-2,如在圖6所示。最后,在過程塊774處,數(shù)據(jù)塊被如下高速緩存處理器加載到本地高速緩存器410中,在此可互換地稱為協(xié)處理器400或者CaPro400。
現(xiàn)在參見圖14,圖14描述了一個(gè)流程圖,所述流程圖說明了另外一種方法730,用于發(fā)出如圖13所示的過程塊728的數(shù)據(jù)請(qǐng)求。在過程塊732處,確定是否檢測(cè)到與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的高速緩存器未命中。當(dāng)檢測(cè)到高速緩存器未命中時(shí),執(zhí)行過程塊732。否則,執(zhí)行過程塊770。在過程塊730處,CaPro400,例如,從外部存儲(chǔ)器104請(qǐng)求一個(gè)包含與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)塊。在一個(gè)實(shí)施例中,如參考圖6說明的那樣,CaPro400向主存儲(chǔ)器104請(qǐng)求一個(gè)數(shù)據(jù)塊。
在過程塊740處,所述包含所請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)塊被加載到一個(gè)或多個(gè)存儲(chǔ)器緩沖器100,例如像圖6所示的一級(jí)高速緩存器和二級(jí)高速緩存器160中。然而,當(dāng)在一個(gè)或多個(gè)存儲(chǔ)器緩沖器160內(nèi)檢測(cè)到高速緩存命中時(shí),從包含所述請(qǐng)求的數(shù)據(jù)的存儲(chǔ)器緩沖器中檢索所述數(shù)據(jù)塊。最后,在過程塊772處,將包含所請(qǐng)求數(shù)據(jù)的數(shù)據(jù)塊存儲(chǔ)到本地?cái)?shù)據(jù)緩沖器,例如存儲(chǔ)到本地高速緩沖存儲(chǔ)器410中。
現(xiàn)在參見圖15,圖15描述了一個(gè)流程圖,所述流程圖說明了另外一種方法742,用于維護(hù)一個(gè)或多個(gè)存儲(chǔ)器緩沖器160以及本地高速緩沖存儲(chǔ)器410和外部存儲(chǔ)器104內(nèi)的高速緩存器一致性。因此,在一個(gè)實(shí)施例中,方法792說明了如圖6所示的計(jì)算機(jī)系統(tǒng)100的一級(jí)高速緩存器160-1、二級(jí)高速緩存器160-2、本地高速緩存器410以及主存儲(chǔ)器104內(nèi)的高速緩存器一致性的性能。在過程塊744處,確定是否接收了所述請(qǐng)求數(shù)據(jù)塊的探聽命中的通知。
因此,當(dāng)接收到了探聽命中的通知時(shí),執(zhí)行過程塊746。否則,執(zhí)行過程塊762。在過程塊746處,將所述數(shù)據(jù)塊存儲(chǔ)在具有共享S狀態(tài)的一個(gè)或多個(gè)存儲(chǔ)器緩沖器內(nèi),例如存儲(chǔ)在如圖6所示的一級(jí)高速緩存器160和二級(jí)高速緩存器160內(nèi)。否則,在過程塊762處,在具有排它E狀態(tài)的一個(gè)或多個(gè)存儲(chǔ)器緩沖器160內(nèi)存儲(chǔ)所述數(shù)據(jù)塊。一旦存儲(chǔ)了,控制流返回到如在圖14中描述的過程塊740。
現(xiàn)在參見圖16,圖16描述了一個(gè)流程圖,所述流程圖說明了另外一種方法748,用于在具有如圖5所示的S狀態(tài)的過程塊746的一個(gè)或多個(gè)存儲(chǔ)器緩沖器160內(nèi)存儲(chǔ)數(shù)據(jù)塊。在過程塊750處,確定所述數(shù)據(jù)塊的狀態(tài)。一旦確定了所述數(shù)據(jù)塊的狀態(tài),則在過程塊752處,確定是否檢測(cè)到所述數(shù)據(jù)塊的修改狀態(tài)。當(dāng)沒有檢測(cè)到修改狀態(tài)時(shí),則如在圖15中描述的那樣,控制流返回到過程塊746。否則,執(zhí)行過程塊753。在過程塊753處,向諸如主存儲(chǔ)器104這樣的外部存存儲(chǔ)器請(qǐng)求所述數(shù)據(jù)塊。
接下來,在過程塊754處,將所述數(shù)據(jù)塊加載到具有S狀態(tài)的一個(gè)或多個(gè)存儲(chǔ)器緩沖器160內(nèi)。一旦在存儲(chǔ)設(shè)備160內(nèi)加載了,則在過程塊756處,在諸如如圖6所示的本地高速緩沖存儲(chǔ)器410這樣的具有S狀態(tài)的本地?cái)?shù)據(jù)緩沖器中加載數(shù)據(jù)塊。與過程塊753-756同時(shí),在過程塊758處,數(shù)據(jù)塊被寫入到諸如圖6所示的存儲(chǔ)器104這樣的外部存存儲(chǔ)器中。最后,在過程塊760處,在包含所述數(shù)據(jù)塊的外部存儲(chǔ)器緩沖器(沒有顯示)中,數(shù)據(jù)塊的狀態(tài)被修改為S狀態(tài)。
現(xiàn)在參見圖17,圖17描述了一個(gè)流程圖,所述流程圖說明了另外一種方法780,用于加載一個(gè)數(shù)據(jù)塊到如圖10所示的過程塊720的本地?cái)?shù)據(jù)緩沖器中。在過程塊782處,確定包含有與所接收的存儲(chǔ)器存取指令相關(guān)數(shù)據(jù)的數(shù)據(jù)塊的塊大小。接下來,在過程塊784處,向諸如如圖6所示一級(jí)高速緩存器和二級(jí)高速緩存器160這樣的一個(gè)或多個(gè)存儲(chǔ)器緩沖器請(qǐng)求所述數(shù)據(jù)塊。接下來,在過程塊736處,從一個(gè)存儲(chǔ)器緩沖器中接收所述數(shù)據(jù)塊。最后,在過程塊788處,把所述數(shù)據(jù)塊加載到本地?cái)?shù)據(jù)緩沖器410中。
現(xiàn)在參見圖18,圖18描述了一個(gè)流程圖,所述流程圖說明了另外一種方法792,用于執(zhí)行對(duì)如圖12所示的過程塊790的請(qǐng)求數(shù)據(jù)進(jìn)行非橫向/非縱向順序存取。在過程塊794處,由存儲(chǔ)器存取操作所指示的數(shù)據(jù)類型被確定為位、字節(jié)或者多倍字節(jié)諸如字、雙字、四倍字等等之一。接下來,在過程塊796處,依據(jù)存儲(chǔ)器存取模式來確定一個(gè)數(shù)據(jù)部分的數(shù)據(jù)地址和數(shù)據(jù)偏移量。接下來,在過程塊798處,從本地高速緩存器410中讀取所述數(shù)據(jù)部分。接下來,在過程塊800處,所讀取的數(shù)據(jù)部分被加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中。最后,在過程塊802處,為由存儲(chǔ)器存取模式所指示的每個(gè)數(shù)據(jù)部分重復(fù)過程塊796到800。
最后,參見圖19,圖19描述了一個(gè)流程圖,所述流程圖說明了另外一種方法810,用于由例如高速緩存處理器400進(jìn)行的請(qǐng)求數(shù)據(jù)存取。在過程塊812處,CaPro 400使用本地?cái)?shù)據(jù)緩沖器410,諸如本地高速緩存器410,來執(zhí)行請(qǐng)求數(shù)據(jù)的一個(gè)非縱向/非橫向的順序存儲(chǔ)器存取。一旦存取了所述數(shù)據(jù),則執(zhí)行過程塊814。在過程塊814處,所存取的數(shù)據(jù)從本地?cái)?shù)據(jù)緩沖器400加載到CPU110的一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中??蛇x地,所述數(shù)據(jù)可以在本地高速緩存器410內(nèi)被重新組織,從而使得一旦被通知知了數(shù)據(jù)的可用性,則CPU110就能夠順序地存取數(shù)據(jù)。
因此,利用本發(fā)明的實(shí)施例,高速緩存處理器結(jié)合在此描述的CP加載指令,允許根據(jù)一存儲(chǔ)器存取模式在所述本地高速緩沖存儲(chǔ)器內(nèi)進(jìn)行非橫向/非縱向順序(隨機(jī))存儲(chǔ)器存取。因此,使用高速緩存處理器的CPU就被屏蔽了如下存儲(chǔ)器存取時(shí)間,所述存儲(chǔ)器存取時(shí)間被要求用來根據(jù)在視頻/圖像處理操作期間所要求的實(shí)際上的隨機(jī)存儲(chǔ)器存取模式,執(zhí)行數(shù)據(jù)存取。因而,使用本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)能夠例如通過使用CP加載操作來大大地改善例如圖像的處理時(shí)間,所述時(shí)間被CP加載操用來響應(yīng)單個(gè)指令,根據(jù)一存儲(chǔ)器存取模式來執(zhí)行數(shù)據(jù)存取。因而,使用本發(fā)明的實(shí)施例,避免了在以隨機(jī)次序/方向處理像素?cái)?shù)據(jù)時(shí)所要求的許多轉(zhuǎn)置操作。
替換實(shí)施例已經(jīng)描述了實(shí)現(xiàn)用于依據(jù)數(shù)據(jù)存取模式而提供數(shù)據(jù)存取的高速緩存處理器的的幾個(gè)方面。然而,高速緩存處理器的各個(gè)實(shí)現(xiàn)提供了許多的特征,它們包含、補(bǔ)充、增補(bǔ)、和/或代替如上所述的特征。在不同的實(shí)施例實(shí)現(xiàn)中,這些特征能夠作為一個(gè)處理器芯片的部分或者作為一個(gè)存儲(chǔ)控制器的部分而被實(shí)現(xiàn)。此外,上面的描述,為了解釋起見,使用了具體的命名法以提供對(duì)本發(fā)明實(shí)施例的一個(gè)徹底了解。然而,對(duì)于本領(lǐng)域的專業(yè)人員來說,顯而易見對(duì)于實(shí)施本發(fā)明實(shí)施例,這些細(xì)節(jié)并不是必須的。
此外,盡管在此描述的實(shí)施例是指用于依據(jù)數(shù)據(jù)存取模式來提供數(shù)據(jù)存取的高速緩存處理器,但是本領(lǐng)域的技術(shù)人員將要理解本發(fā)明的實(shí)施例能夠應(yīng)用于其他的系統(tǒng)。實(shí)際上,用于數(shù)據(jù)的非縱向/橫向順序存取的系統(tǒng)屬于本發(fā)明的實(shí)施例,而沒有背離本發(fā)明的范圍和精神。選擇和描述如上所述的實(shí)施例是為了最好地說明本發(fā)明和它的實(shí)際應(yīng)用的原理。選擇這些實(shí)施例以借此允許在本領(lǐng)域的技術(shù)人員來利用本發(fā)明和具有各種修改的各種實(shí)施例,這些具有各種修改的各種實(shí)施例適用于所考慮的特定使用。
將要理解雖然在上述中已經(jīng)連同本發(fā)明各個(gè)實(shí)施例的結(jié)構(gòu)和功能的詳細(xì)信息一起闡述了本發(fā)明各個(gè)實(shí)施例的許多特征和優(yōu)點(diǎn),但是這個(gè)公開僅僅是說明性的。在某些情況下,僅僅用一個(gè)這樣的實(shí)施例詳細(xì)描述了某些子部件。盡管如此,應(yīng)該認(rèn)識(shí)到并明白,這樣的子部件可以在本發(fā)明的其他實(shí)施例中使用??梢赃M(jìn)行更詳細(xì)地改變,尤其是可以進(jìn)行在本發(fā)明原理內(nèi)的與部件結(jié)構(gòu)和管理有關(guān)的改變,而這些與部件結(jié)構(gòu)和管理有關(guān)的改變能將由附加權(quán)利要求所表達(dá)的術(shù)語的廣泛意思的全部內(nèi)容表示出來。
本發(fā)明的實(shí)施例提供了許多優(yōu)于現(xiàn)有技術(shù)的優(yōu)點(diǎn)。在一個(gè)實(shí)施例中,本發(fā)明包含了在處理圖像/視頻數(shù)據(jù)時(shí),當(dāng)從一個(gè)存儲(chǔ)器子系統(tǒng)中讀取數(shù)據(jù)時(shí),顯著地降低了由一個(gè)處理器使用的時(shí)間的性能。例如,在新的JPEG圖像編碼標(biāo)準(zhǔn)中的位平面編碼大幅度地降低了當(dāng)前圖像/視頻處理應(yīng)用所需要的百分之四十(40%)執(zhí)行時(shí)間。因而,使用本發(fā)明的實(shí)施例,能夠由CaPro來處理硬件位平面提取,而讓主CPU自由地處理小波變換和算術(shù)編碼。此外,其他的應(yīng)用能夠從像之字形掃描的CaPro、零樹編碼、MPEG4細(xì)粒度可伸縮性等等實(shí)施例中受益。此外,目的在于協(xié)處理器、或者CaPro的實(shí)施例能夠通過在發(fā)送數(shù)據(jù)到主處理單元之前,在本地高速緩存器中執(zhí)行必要的數(shù)據(jù)轉(zhuǎn)換,而從CPU隱藏存取時(shí)間。
已經(jīng)公開了示例實(shí)施例和最佳模式,可以向公開的實(shí)施例做出修改和變化而同時(shí)保持在如以下權(quán)利要求定義的本發(fā)明范圍之內(nèi)。
權(quán)利要求
1.一種方法,包含響應(yīng)于存儲(chǔ)器存取指令,確定與所接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)器存取模式;依據(jù)所確定的存儲(chǔ)器存取模式來存取與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及依據(jù)所接收到的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于確定存儲(chǔ)器存取模式進(jìn)一步包含確定所述存儲(chǔ)器存取模式的存儲(chǔ)單元;從所確定的存儲(chǔ)單元中讀取用于定義所述存儲(chǔ)器存取模式的一個(gè)或多個(gè)數(shù)據(jù)地址;確定用于存取與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)偏移量;以及存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)地址和一個(gè)或多個(gè)數(shù)據(jù)偏移量以允許依據(jù)與所接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的存儲(chǔ)器存取模式的數(shù)據(jù)存取。
3.如權(quán)利要求1所述的方法,其特征在于存取數(shù)據(jù)進(jìn)一步包含響應(yīng)于存儲(chǔ)器存取指令,在本地?cái)?shù)據(jù)緩沖器中檢測(cè)與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的緩沖器命中/未命中;當(dāng)檢測(cè)到緩沖器未命中時(shí),依據(jù)存儲(chǔ)器存取指令加載一個(gè)數(shù)據(jù)塊到本地?cái)?shù)據(jù)緩沖器中,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中存取與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。
4.如權(quán)利要求3所述的方法,其特征在于加載所述數(shù)據(jù)塊進(jìn)一步包含向一個(gè)或多個(gè)存儲(chǔ)器緩沖器發(fā)出對(duì)如下數(shù)據(jù)塊的數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)塊包括包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中檢索如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及將所接收的數(shù)據(jù)塊加載到本地?cái)?shù)據(jù)緩沖器中。
5.如權(quán)利要求4所述的方法,其特征在于發(fā)出數(shù)據(jù)請(qǐng)求進(jìn)一步包含依據(jù)數(shù)據(jù)請(qǐng)求,在一個(gè)或多個(gè)存儲(chǔ)器緩沖器內(nèi)檢測(cè)由所述存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)的緩沖器命中/緩沖器未命中;當(dāng)檢測(cè)到緩沖器未命中時(shí),向一個(gè)外部存儲(chǔ)器請(qǐng)求如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);一旦接收了所述數(shù)據(jù)塊,則把所述數(shù)據(jù)塊加載到一個(gè)或多個(gè)存儲(chǔ)器緩沖器中;否則,依據(jù)存儲(chǔ)器存取指令,從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中選擇如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含由存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù);以及向本地?cái)?shù)據(jù)緩沖器存儲(chǔ)包含由存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)塊。
6.如權(quán)利要求3所述的方法,其特征在于加載所述數(shù)據(jù)塊進(jìn)一步包含依據(jù)存儲(chǔ)器存取指令確定數(shù)據(jù)塊的塊大??;依據(jù)確定的塊大小從一個(gè)或多個(gè)存儲(chǔ)器緩沖器中請(qǐng)求數(shù)據(jù)塊;從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中檢索所述數(shù)據(jù)塊;以及依據(jù)存儲(chǔ)器存取指令把所述數(shù)據(jù)塊加載到本地?cái)?shù)據(jù)緩沖器中。
7.如權(quán)利要求1所述的方法,其特征在于存取數(shù)據(jù)進(jìn)一步包含把由存儲(chǔ)器存取指令指示的數(shù)據(jù)類型確定為字節(jié)和多倍字節(jié)之一;選擇由存儲(chǔ)器存取模式指示的一個(gè)數(shù)據(jù)部分的數(shù)據(jù)地址和偏移量;對(duì)應(yīng)于確定的數(shù)據(jù)類型,以及依據(jù)確定的數(shù)據(jù)地址和偏移量,從本地?cái)?shù)據(jù)緩沖器中讀取一個(gè)數(shù)據(jù)部分;依據(jù)存儲(chǔ)器存取指令把所讀取的數(shù)據(jù)部分加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中;以及為由存儲(chǔ)器存取模式所指示的每個(gè)數(shù)據(jù)部分,重復(fù)確定、讀取和加載。
8.如權(quán)利要求1所述的方法,其特征在于存取數(shù)據(jù)進(jìn)一步包含依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中執(zhí)行與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的非橫向/非縱向順序存取;以及依據(jù)存儲(chǔ)器存取指令把從本地?cái)?shù)據(jù)緩沖器中所存取的數(shù)據(jù)加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中。
9.如權(quán)利要求5所述的方法,進(jìn)一步包含在本地?cái)?shù)據(jù)緩沖器、存儲(chǔ)器緩沖器和外部存儲(chǔ)器之間維護(hù)如下數(shù)據(jù)塊的一致性,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。
10.如權(quán)利要求1所述的方法,其特征在于存儲(chǔ)器存取指令是讀指令和寫指令之一。
11.一種裝置,包含一執(zhí)行單元,具有用于執(zhí)行指令的電路;與執(zhí)行單元相耦合的本地?cái)?shù)據(jù)緩沖器,所述本地?cái)?shù)據(jù)緩沖器被配置為允許依據(jù)存儲(chǔ)器存取模式存儲(chǔ)在其中包含的數(shù)據(jù);以及與執(zhí)行單元相耦合的存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備在其中存儲(chǔ)有指令序列,當(dāng)所述指令序列被執(zhí)行單元執(zhí)行時(shí),會(huì)導(dǎo)致執(zhí)行單元進(jìn)行如下操作響應(yīng)于存儲(chǔ)器存取指令,確定與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)器存取模式;依據(jù)所確定的存儲(chǔ)器存取模式,存取與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及依據(jù)所接收到的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù),以便允許所存儲(chǔ)的數(shù)據(jù)的順序存取。
12.如權(quán)利要求11所述的裝置,其特征在于用于確定存儲(chǔ)器存取模式的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作確定所述存儲(chǔ)器存取模式的存儲(chǔ)單元;從所確定的存儲(chǔ)單元中讀取定義所述存儲(chǔ)器存取模式的一個(gè)或多個(gè)數(shù)據(jù)地址;確定用于存取如下數(shù)據(jù)的數(shù)據(jù)偏移量,所述數(shù)據(jù)與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián);以及存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)地址和一個(gè)或多個(gè)數(shù)據(jù)偏移量,以便允許依據(jù)與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的存儲(chǔ)器存取模式存取數(shù)據(jù)。
13.如權(quán)利要求11所述的裝置,其特征在于存取數(shù)據(jù)的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作響應(yīng)于存儲(chǔ)器存取指令,在本地?cái)?shù)據(jù)緩沖器中檢測(cè)與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的緩沖器命中/未命中;當(dāng)檢測(cè)到緩沖器未命中時(shí),依據(jù)存儲(chǔ)器存取指令加載一個(gè)數(shù)據(jù)塊到本地?cái)?shù)據(jù)緩沖器中,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中存取與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。
14.如權(quán)利要求13所述的裝置,其特征在于加載數(shù)據(jù)塊的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作向一個(gè)或多個(gè)存儲(chǔ)器緩沖器發(fā)出對(duì)如下數(shù)據(jù)塊的數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中檢索如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及加載所接收到的數(shù)據(jù)塊到本地?cái)?shù)據(jù)緩沖器中。
15.如權(quán)利要求14所述的裝置,其特征在于發(fā)出數(shù)據(jù)請(qǐng)求的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作依據(jù)數(shù)據(jù)請(qǐng)求,在一個(gè)或多個(gè)存儲(chǔ)器緩沖器內(nèi)檢測(cè)由所述存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)的緩沖器命中/緩沖器未命中;當(dāng)檢測(cè)到緩沖器未命中時(shí),從一個(gè)外部存儲(chǔ)器中請(qǐng)求如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);一旦接收了所述數(shù)據(jù)塊,則把所述數(shù)據(jù)塊加載到一個(gè)或多個(gè)存儲(chǔ)器緩沖器中;否則,依據(jù)存儲(chǔ)器存取指令,從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中選擇如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含由存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù);以及向本地?cái)?shù)據(jù)緩沖器存儲(chǔ)如下數(shù)據(jù)塊,所述數(shù)據(jù)塊包含由存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)。
16.如權(quán)利要求13所述的裝置,其特征在于加載數(shù)據(jù)塊的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作依據(jù)存儲(chǔ)器存取指令確定數(shù)據(jù)塊的塊大小;依據(jù)所確定的塊大小向一個(gè)或多個(gè)存儲(chǔ)器緩沖器請(qǐng)求數(shù)據(jù)塊;從一個(gè)或多個(gè)存儲(chǔ)器緩沖器的存儲(chǔ)器緩沖器中檢索所述數(shù)據(jù)塊;以及依據(jù)存儲(chǔ)器存取指令把所述數(shù)據(jù)塊加載到本地?cái)?shù)據(jù)緩沖器中。
17.如權(quán)利要求11所述的裝置,其特征在于存取數(shù)據(jù)的指令進(jìn)一步導(dǎo)致執(zhí)行單元進(jìn)行如下操作把由存儲(chǔ)器存取指令所指示的數(shù)據(jù)類型確定為字節(jié)和多倍字節(jié)之一;選擇由存儲(chǔ)器存取模式所指示的一個(gè)數(shù)據(jù)部分的數(shù)據(jù)地址和偏移量;對(duì)應(yīng)于所確定的數(shù)據(jù)類型并依據(jù)所確定的數(shù)據(jù)地址和偏移量,從本地?cái)?shù)據(jù)緩沖器中讀取一個(gè)數(shù)據(jù)部分;依據(jù)存儲(chǔ)器存取指令把所讀取的數(shù)據(jù)部分加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中;以及為由存儲(chǔ)器存取模式所指示的每個(gè)數(shù)據(jù)部分,重復(fù)確定、讀取和加載。
18.如權(quán)利要求11所述的裝置,其特征在于存取數(shù)據(jù)的指令進(jìn)一步導(dǎo)致處理器進(jìn)行如下操作依據(jù)存儲(chǔ)器存取模式從本地?cái)?shù)據(jù)緩沖器中執(zhí)行與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的非橫向/非縱向順序存??;以及依據(jù)存儲(chǔ)器存取指令把從本地?cái)?shù)據(jù)緩沖器中所存取的數(shù)據(jù)加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中。
19.如權(quán)利要求11所述的裝置,其特征在于還導(dǎo)致執(zhí)行單元進(jìn)一步進(jìn)行如下操作在本地?cái)?shù)據(jù)緩沖器、一個(gè)或多個(gè)存儲(chǔ)器緩沖器和外部存儲(chǔ)器之間維護(hù)如下數(shù)據(jù)塊的一致性,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)。
20.如權(quán)利要求11所述的裝置,其特征在于所述存儲(chǔ)器存取指令是讀指令和寫指令之一。
21.一種系統(tǒng),包含具有一個(gè)或多個(gè)存儲(chǔ)器緩沖器的中央處理器,所述緩沖器經(jīng)由存儲(chǔ)器總線耦合到所述處理器;以及經(jīng)由系統(tǒng)總線與中央處理器相耦合的協(xié)處理器,所述協(xié)處理器具有一本地?cái)?shù)據(jù)緩沖器,所述本地?cái)?shù)據(jù)緩沖器經(jīng)由總線與協(xié)處理器相耦合,所述本地?cái)?shù)據(jù)緩沖器被配置為允許非橫向/非縱向本地?cái)?shù)據(jù)順序存取在其中包含的數(shù)據(jù),其中所述協(xié)處理器,響應(yīng)于一存儲(chǔ)器存取指令,依據(jù)由所述存儲(chǔ)器存取指令所指示的存儲(chǔ)器存取模式從本地高速緩存器中存取數(shù)據(jù)。
22.如權(quán)利要求21所述的系統(tǒng),進(jìn)一步包含經(jīng)由系統(tǒng)總線與處理器相耦合的外部存儲(chǔ)器,所述外部存儲(chǔ)器包含一個(gè)或多個(gè)外部數(shù)據(jù)緩沖器,其中當(dāng)響應(yīng)于來自一個(gè)或多個(gè)存儲(chǔ)器緩沖器、外部數(shù)據(jù)緩沖器和一個(gè)或多個(gè)外部數(shù)據(jù)緩沖器中的一個(gè)或多個(gè)的存儲(chǔ)器存取指令,檢測(cè)到緩沖器未命中時(shí),所述協(xié)處理器響應(yīng)于與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的緩沖器未命中,將將數(shù)據(jù)加載到本地?cái)?shù)據(jù)緩沖器中。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于所述高速緩存處理器依據(jù)由所接收到的存儲(chǔ)器存取指令所指示的數(shù)據(jù)類型來存取多倍字節(jié)的位數(shù)據(jù)中的一個(gè)。
24.如權(quán)利要求21所述的系統(tǒng),其特征在于所述協(xié)處理器進(jìn)一步包含一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備,以便在將依據(jù)存儲(chǔ)器存取模式所存取的數(shù)據(jù)提供給中央處理器之前,將其存儲(chǔ)在所述一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備內(nèi)。
25.如權(quán)利要求21所述的系統(tǒng),其特征在于所述協(xié)處理器進(jìn)一步包含與協(xié)處理器相耦合的執(zhí)行單元;以及與執(zhí)行單元相耦合的存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備在其中存儲(chǔ)有指令序列,當(dāng)所述指令序列被執(zhí)行單元執(zhí)行時(shí),導(dǎo)致第一存儲(chǔ)器緩沖器執(zhí)行如下操作響應(yīng)于存儲(chǔ)器存取指令,確定與所接收到的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)器存取模式;響應(yīng)于來自執(zhí)行單元的存儲(chǔ)器存取請(qǐng)求,在本地?cái)?shù)據(jù)緩沖器內(nèi)檢測(cè)由存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)的緩沖器命中/未命中,當(dāng)檢測(cè)到緩沖器未命中時(shí),依據(jù)存儲(chǔ)器存取指令從所述存儲(chǔ)器緩沖器中加載一個(gè)數(shù)據(jù)塊到本地?cái)?shù)據(jù)緩沖器中,所述數(shù)據(jù)塊包含與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù),依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中存取與所述存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù),以及向中央處理器提供所存取的數(shù)據(jù)。
26.如權(quán)利要求21所述的系統(tǒng),其特征在于還導(dǎo)致所述協(xié)處理器進(jìn)一步進(jìn)行如下操作在本地?cái)?shù)據(jù)緩沖器和存儲(chǔ)器緩沖器,外部存儲(chǔ)器和外部存儲(chǔ)器緩沖器之間維護(hù)數(shù)據(jù)的一致性。
27.如權(quán)利要求21所述的系統(tǒng),其特征在于執(zhí)行非橫向順序存取的指令進(jìn)一步導(dǎo)致第一存儲(chǔ)器緩沖器進(jìn)行如下操作依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中執(zhí)行與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的非橫向/非縱向順序存??;以及依據(jù)存儲(chǔ)器存取指令把從本地?cái)?shù)據(jù)緩沖器中存取的數(shù)據(jù)加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中。
28.如權(quán)利要求21所述的系統(tǒng),其特征在于所述系統(tǒng)在如下印刷布線板上加以制造,在所述印刷布線板上構(gòu)成了并行總線,一個(gè)集成電路(IC)芯片封裝可被操作地安裝在所述板上以便使用并行總線進(jìn)行通信,所述封裝具有一個(gè)IC芯片,所述IC芯片包含中央處理器和協(xié)處理器和I/O部分,所述I/部分作為在中央處理器、協(xié)處理器和總線之間的接口,從而所述協(xié)處理器響應(yīng)于來自中央處理器的存儲(chǔ)器存取請(qǐng)求,依據(jù)存儲(chǔ)器存取模式在本地?cái)?shù)據(jù)緩沖器內(nèi)執(zhí)行數(shù)據(jù)的非橫向/非縱向順序存取。
29.如權(quán)利要求28所述的系統(tǒng),其特征在于所述協(xié)處理器進(jìn)一步包含與協(xié)處理器相耦合的執(zhí)行單元,用于依據(jù)由所述存儲(chǔ)器存取請(qǐng)求指示的存儲(chǔ)器存取模式來執(zhí)行數(shù)據(jù)存??;以及所述中央處理器包含與所述處理器相耦合的一個(gè)或多個(gè)存儲(chǔ)器緩沖器。
30.如權(quán)利要求28所述的系統(tǒng),其特征在于所述系統(tǒng)進(jìn)一步包含第二IC芯片封裝,包含如下I/O接口,所述I/O接口用于允許在一個(gè)或多個(gè)外部存儲(chǔ)器緩沖器、外部存儲(chǔ)器和所述協(xié)處理器之間進(jìn)行通信。
31.一種包含如下程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)這些程序指令由處理器執(zhí)行時(shí)引導(dǎo)計(jì)算機(jī)以指定的方式運(yùn)行,這些程序指令包含響應(yīng)于存儲(chǔ)器存取指令,確定與所接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)器存取模式;依據(jù)確定的存儲(chǔ)器存取模式存取與接收的存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù);以及依據(jù)接收的存儲(chǔ)器存取指令來存儲(chǔ)所存取的數(shù)據(jù)。
32.如權(quán)利要求31所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于存取數(shù)據(jù)進(jìn)一步包含依據(jù)存儲(chǔ)器存取模式,從本地?cái)?shù)據(jù)緩沖器中執(zhí)行與存儲(chǔ)器存取指令相關(guān)聯(lián)的數(shù)據(jù)的非橫向/非縱向順序存??;以及依據(jù)存儲(chǔ)器存取指令把從本地?cái)?shù)據(jù)緩沖器中存取的數(shù)據(jù)加載到一個(gè)目的地?cái)?shù)據(jù)存儲(chǔ)設(shè)備中。
33.如權(quán)利要求31所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于所述存儲(chǔ)器存取指令是讀指令和寫指令之一。
全文摘要
描述了用于依據(jù)存儲(chǔ)器存取模式執(zhí)行數(shù)據(jù)存取的裝置和方法。在一個(gè)實(shí)施例中,所述方法包含響應(yīng)于存儲(chǔ)器存取指令,確定由所述存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)的存儲(chǔ)器存取模式。一旦確定了所述存儲(chǔ)器存取模式,依據(jù)所述確定的存儲(chǔ)器存取模式來存取由所述存儲(chǔ)器存取指令所請(qǐng)求的數(shù)據(jù)。最后,一旦所述數(shù)據(jù)被存取了,依據(jù)所述處理器存取指令來處理所述數(shù)據(jù)。因此,在本發(fā)明的這個(gè)實(shí)施例中,依據(jù)包含之字形模式掃描、零樹掃描、位平面提取、細(xì)粒度可伸縮性等等在內(nèi)的存儲(chǔ)器存取模式來存取數(shù)據(jù)。
文檔編號(hào)G09G5/36GK1501258SQ2003101198
公開日2004年6月2日 申請(qǐng)日期2003年10月10日 優(yōu)先權(quán)日2002年10月10日
發(fā)明者E·德貝斯, Y·-K·陳, M·J·霍林曼, M·M·楊, E 德貝斯, こ, 楊, 霍林曼 申請(qǐng)人:英特爾公司