專利名稱:便于具有通用讀/寫模式的存儲器數(shù)據(jù)存取的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及存儲器存取領(lǐng)域。更特別地,本發(fā)明涉及一種便于具有通用且連續(xù)的讀/寫模式的存儲器數(shù)據(jù)存取的方法和裝置。
背景技術(shù):
十多年來,媒體應(yīng)用一直激勵著微處理器的開發(fā)。實際上,將來的媒體應(yīng)用將對可用的微處理器提出更高的計算要求。因此,未來的個人計算(PC)體驗在音頻/視頻效果方面將更豐富,并且更容易使用。更重要地是,將來的微處理器將允許計算和通信合并起來。
因此,對于當(dāng)前以及將來的計算設(shè)備,圖像的顯示已經(jīng)變得越來越普及。不幸地是,這類媒體應(yīng)用所需的數(shù)據(jù)量趨向于非常大。此外,在計算能力、存儲器和磁盤存儲、以及網(wǎng)絡(luò)帶寬方面的增加,已經(jīng)便于更大和更高質(zhì)量圖像的創(chuàng)建和使用。然而,使用更大和更高質(zhì)量的圖像經(jīng)常導(dǎo)致在處理器和存儲器之間的一個瓶頸。因而,盡管有微處理器時鐘速度不斷增加的事實,圖像/視頻處理(媒體)應(yīng)用還是經(jīng)常遭受存儲器等待時間的問題。
雖然隨機(jī)存取存儲器(RAM)自稱能提供對包含在其中的存儲器的隨機(jī)存取,但是RAM通常不能以隨機(jī)模式存取。實際上,存取RAM不同部分所需要的時間可以是變化的。例如,對存儲器設(shè)備內(nèi)的存儲單元的橫向存取通常是非常方便的。與此相反,當(dāng)使用常規(guī)存儲器設(shè)備時,縱向的存儲器存取是非常緩慢的。
因此,用于視頻圖像的光柵掃描存儲器排列跨越在高速緩沖存儲器內(nèi)的圖像平面線性地放置像素數(shù)據(jù),這經(jīng)常導(dǎo)致許多的問題。首先,一條高速緩存線保持若干個基本圖像塊(例如,8×8或者16×16)的一些部分。與此相反,一個基本的圖像塊被包含在幾條高速緩存線中。因而,存取一個塊(假定是8×8的結(jié)構(gòu))相當(dāng)于存取幾條高速緩存線(例如,假設(shè)我們正處理比單條高速緩存線更寬的圖像,那么在當(dāng)前體系結(jié)構(gòu)中至少要存取8條高速緩存線)。
使用常規(guī)存儲器設(shè)備存取一個圖像需要至少存取八次存儲器。此外,很可能需要八個軟件預(yù)先緩存指令以便避免八次高速緩存器未命中。此外,當(dāng)處理一個圖像塊時,傳統(tǒng)的應(yīng)用除了所述塊本身之外還加載多余的數(shù)據(jù)到所述高速緩存器里。因此,除非我們立即處理鄰近的塊,否則多余的數(shù)據(jù)會被帶進(jìn)高速緩沖存儲器中,這將會由于所述多余的數(shù)據(jù)而降低高速緩存器的性能。
一種用于當(dāng)處理圖像數(shù)據(jù)時提供改進(jìn)的高速緩存器位置的解決方案涉及基于塊的存儲器排列。雖然基于塊的存儲器排列方案提供了更高的高速緩存器位置,但是使用一條指令存取一個8個或者16個像素的縱向集合仍然是不被支持的。為了存取一個縱向數(shù)據(jù)集,大多數(shù)傳統(tǒng)的實現(xiàn)方式使用壓縮和解壓縮操作來轉(zhuǎn)置所述數(shù)據(jù)。不幸地是,在大多數(shù)應(yīng)用中這是一個緩慢的過程。此外,在某些諸如圖像/視頻壓縮等應(yīng)用中,像素數(shù)據(jù)必須以變化的掃描次序存取,這幾乎是對所述像素數(shù)據(jù)的隨機(jī)存取。因此,還需要克服上述現(xiàn)有技術(shù)中的一個或多個局限性。
在附圖中通過示例的方式而不是限制的方式說明了本發(fā)明的不同實施例,其中附圖包含圖1描述了用于說明依據(jù)本發(fā)明一個實施例實現(xiàn)重布置(re-tiling)(RT)的高速緩沖存儲器的計算機(jī)系統(tǒng)的框圖。
圖2描述了一個框圖,它進(jìn)一步說明了依據(jù)本發(fā)明另一個實施例的如圖1所述的處理器。
圖3A和3B描述了這樣的框圖,它們說明了依據(jù)本發(fā)明一個實施例的128位壓縮的SIMD數(shù)據(jù)類型。
圖3C和3D描述了這樣的框圖,它們說明了依據(jù)本發(fā)明的另一個實施例的64位壓縮的SIMD數(shù)據(jù)類型。
圖4描述了一個框圖,它說明了在本技術(shù)領(lǐng)域已知的傳統(tǒng)光柵掃描存儲器排列。
圖5描述了一個框圖,它說明了依據(jù)本發(fā)明一個實施例的非橫向順序存儲器讀取操作。
圖6描述了一個框圖,它進(jìn)一步說明了依據(jù)本發(fā)明另一個實施例、如圖1和2所述利用RT高速緩存存儲器的計算機(jī)系統(tǒng)。
圖7A和7B描述了這樣的框圖,它們進(jìn)一步說明了依據(jù)本發(fā)明另一個實施例、如圖6所述的RT高速緩存器。
圖8A描述了一個框圖,它說明了一種用于如本領(lǐng)域已知的那樣執(zhí)行像素填充的傳統(tǒng)方法。
圖8B描述了一種方法,所述方法說明了依據(jù)本發(fā)明的一個實施例、利用RT加載操作的像素填充過程。
圖9A-9E描述了這樣的框圖,它們說明了依據(jù)如圖8A所述的傳統(tǒng)像素填充過程對一幅圖像的像素數(shù)據(jù)所進(jìn)行的轉(zhuǎn)置和填充。
圖10A描述了一個框圖,它說明了一幅被用于如圖10B和10C所述的圖像過濾的圖像。
圖10B描述了一種用于利用如本領(lǐng)域已知的可分離的過濾器進(jìn)行圖像過濾的方法。
圖10C描述了說明一種依據(jù)本發(fā)明一個示例性實施例的方法的流程圖,所述方法用于利用RT加載操作并用可分離的過濾器來執(zhí)行圖像過濾。
圖11描述了依據(jù)本發(fā)明一個實施例的電子系統(tǒng)600的框圖,所述電子系統(tǒng)600實現(xiàn)了支持非橫向順序存儲器存取的RT高速緩沖存儲器。
圖12描述了流程圖,它說明了依據(jù)本發(fā)明一個實施例的一種用于響應(yīng)于存儲器存取指令執(zhí)行非橫向順序存取的方法。
圖13描述了一個流程圖,它說明了依據(jù)本發(fā)明另一個實施例的一種用于檢測存儲器存取操作所請求的數(shù)據(jù)的高速緩存器命中/未命中的另一方法。
圖14描述了一個流程圖,它說明了依據(jù)本發(fā)明另一個實施例的一種用于在第一存儲緩沖器內(nèi)加載一個數(shù)據(jù)塊的另一方法。
圖15描述了一個流程圖,它說明了依據(jù)本發(fā)明另一個實施例的一種用于向一個或多個第二存儲緩沖器發(fā)出數(shù)據(jù)請求的另一方法。
圖16描述了一個流程圖,它說明了依據(jù)本發(fā)明另一個實施例的一種用于從一個外部存儲器請求數(shù)據(jù)塊的另一方法。
圖17描述了一個流程圖,它說明了依據(jù)本發(fā)明一個示例性實施例的一種用于在存儲緩沖器內(nèi)加載一數(shù)據(jù)塊的另一方法。
圖18描述了一個流程圖,它說明了依據(jù)本發(fā)明一個示例性實施例的一種用于執(zhí)行非橫向順序存取的另一方法。
圖19描述了一個流程圖,它說明了依據(jù)本發(fā)明一個示例性實施例的、一種用于在一個目的地數(shù)據(jù)存儲設(shè)備內(nèi)加載非橫向順序存取的數(shù)據(jù)的方法。
具體實施例方式
描述了一種便于具有利用一般讀/寫模式進(jìn)行存儲器數(shù)據(jù)存取的方法和裝置。在一個實施例中,所述方法包含響應(yīng)于一個存儲器存取指令,在一個重布置(RT)的高速緩存器中檢測由所述存儲器存取指令請求的數(shù)據(jù)的高速緩存器命中/高速緩存器未命中。當(dāng)檢測到高速緩存器未命中時,依據(jù)加載指令把一個數(shù)據(jù)塊加載到RT高速緩存器中。這個數(shù)據(jù)塊將包含由存儲器存取指令所請求的數(shù)據(jù)。一旦被加載了,就從RT高速緩存器中執(zhí)行由存儲器存取指令請求的數(shù)據(jù)的非橫向順序存取。最后,從RT高速緩存器存取的數(shù)據(jù)可以依據(jù)所述存儲器存取指令存儲在目的地數(shù)據(jù)存儲設(shè)備內(nèi)。
在下面的描述中,為了說明起見,闡述了大量細(xì)節(jié)以便提供對本發(fā)明的一個徹底了解。然而,對于在本領(lǐng)域的技術(shù)人員來說,顯然可以實踐本發(fā)明而不用一些具體的細(xì)節(jié)。此外,以下的描述提供了示例,而且為了說明起見,附圖顯示了各種示例。然而,因為這些示例僅僅用來提供本發(fā)明實現(xiàn)的示例而不是提供本發(fā)明所有可能實現(xiàn)的實施例的一個完整列表,所以它們不應(yīng)該以一個限制的意義進(jìn)行解釋。在其它實例中,以框圖形式顯示了眾所周知的結(jié)構(gòu)和設(shè)備,以避免弄模糊本發(fā)明實施例的細(xì)節(jié)。
以下詳細(xì)說明中的部分可以以對數(shù)據(jù)位進(jìn)行的操作的算法和符號表示法給出。這些算法描述和表示法被數(shù)據(jù)處理領(lǐng)域內(nèi)的技術(shù)人員用來向所述領(lǐng)域其它技術(shù)人員最有效地傳達(dá)他們的工作內(nèi)容。如在此描述的那樣,一個算法是指導(dǎo)致一個期望結(jié)果的一個自相一致的動作序列。所述動作是那些要求對物理量進(jìn)行實際操作的動作。這些量可以采取能夠被存儲、傳送、組合、比較、以及以別的方式被操作的電信號或磁信號的形式。此外,主要是由于共同使用的原因,這些信號被稱為位、值、單元、符號、字符、項、數(shù)字等等。
然而,這些術(shù)語和類似的術(shù)語與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),而且僅僅是應(yīng)用于這些量的便利標(biāo)記。除非另外具體指出,否則應(yīng)理解為使用諸如“處理”或者“計算”或者“演算”或者“確定”或者“顯示”等等術(shù)語的討論涉及一個計算機(jī)系統(tǒng)、或者類似電子計算設(shè)備的動作和處理,這些計算機(jī)系統(tǒng)或者計算設(shè)備把表示為所述計算機(jī)系統(tǒng)設(shè)備內(nèi)的物理(電子)量的數(shù)據(jù)操縱和轉(zhuǎn)換成為類似地表示為計算機(jī)系統(tǒng)設(shè)備內(nèi)的物理量的其它數(shù)據(jù),所述計算機(jī)系統(tǒng)設(shè)備諸如存儲器、寄存器或者其他這樣的信息存儲器、傳輸、顯示設(shè)備等等。
在此給出的算法和顯示不是固有地與任何特定計算機(jī)或者其它裝置有關(guān)的??梢砸罁?jù)這里的教導(dǎo)與程序一起使用各種通用系統(tǒng),或者可以證明構(gòu)造更專用的裝置來執(zhí)行所要求的方法是方便的。例如,能夠以硬接線電路形式、通過對通用處理器編程或者通過硬件和軟件的任何組合來實現(xiàn)依據(jù)本發(fā)明的任何方法。
本領(lǐng)域的技術(shù)人員將會立即理解本發(fā)明的實施例能夠用除了那些如下所述的計算機(jī)系統(tǒng)配置來進(jìn)行實踐,這些計算機(jī)系統(tǒng)配置包含手持設(shè)備、多處理器系統(tǒng)、基于微處理器或者可編程的消費(fèi)電子設(shè)備、數(shù)字信號處理(DSP)設(shè)備、網(wǎng)絡(luò)PC、微型計算機(jī)、大型計算機(jī)等等。本發(fā)明還能夠在分布式計算環(huán)境中實踐,在所述分布式計算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)連接起來的遠(yuǎn)程處理設(shè)備來執(zhí)行的。將從在下面的描述中發(fā)現(xiàn)用于多種這些系統(tǒng)的所需結(jié)構(gòu)。
應(yīng)該理解那些本領(lǐng)域技術(shù)人員使用各種術(shù)語和技術(shù)來描述通信、協(xié)議、應(yīng)用、實現(xiàn)、機(jī)制等等。這樣的一種技術(shù)是依據(jù)算法或者數(shù)學(xué)表達(dá)式的技術(shù)實現(xiàn)的描述。也就是說,雖然所述技術(shù)可以,例如,被實現(xiàn)為在計算機(jī)上的執(zhí)行代碼,但是作為公式、算法或者數(shù)學(xué)表達(dá)式,那個技術(shù)的表示可以更適宜和更簡便地用于傳達(dá)和通信的。
因此,本領(lǐng)域的技術(shù)人員把表示A+B=C的方框認(rèn)為是一個加法功能,它以硬件和/或軟件的實現(xiàn)將獲得兩個輸入(A和B)并且產(chǎn)生一個求和輸出(C)。因此,公式、算法或者數(shù)學(xué)表達(dá)式作為描述的使用將被理解為以至少硬件和/或軟件形式的物理實施例(諸如一個計算機(jī)系統(tǒng),其中可以實踐本發(fā)明的技術(shù)以及本發(fā)明的技術(shù)可以作為一個實施例而實現(xiàn))。
在一個實施例中,本發(fā)明的方法以機(jī)器可執(zhí)行指令的形式實施。這些指令能夠用來導(dǎo)致一個用所述指令編程的通用或者專用處理器執(zhí)行本發(fā)明的方法??商鎿Q地,本發(fā)明中的方法可以由包含用于執(zhí)行所述方法的硬連線邏輯的具體硬件組件來執(zhí)行,或者可以由編程的計算機(jī)組件和定制硬件組件的任何組合來執(zhí)行。
在一個實施例中,本發(fā)明可以作為計算機(jī)程序產(chǎn)品提供,所述計算機(jī)程序產(chǎn)品可以包含其上存儲有指令的機(jī)器可讀或者計算機(jī)可讀的介質(zhì),這些指令可以用來對計算機(jī)(或者其他電子設(shè)備)編程從而執(zhí)行依據(jù)本發(fā)明的處理過程。所述計算機(jī)可讀介質(zhì)可以包含但不局限于軟盤、光盤、壓縮光盤、只讀存儲器(CD-ROM)、和磁光磁盤、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、可擦可編程序只讀存儲器(EPROM)、電可擦可編程只讀存儲器(EEPROM)、磁或者光卡、閃速存儲器等等。
因此,所述計算機(jī)可讀介質(zhì)包含適合于存儲電子指令的任何類型的介質(zhì)/機(jī)器可讀介質(zhì)。此外,本發(fā)明的實施例還可以作為計算機(jī)程序產(chǎn)品被下載。因而,所述程序可以從遠(yuǎn)程計算機(jī)(例如服務(wù)器)傳輸?shù)秸埱笥嬎銠C(jī)(例如客戶機(jī))。所述程序的傳輸可以經(jīng)由通信鏈路(例如,一個調(diào)制解調(diào)器、網(wǎng)絡(luò)連接等等)通過包含在載波或者其它傳播介質(zhì)中的數(shù)據(jù)信號的方式進(jìn)行。
計算體系結(jié)構(gòu)圖1顯示了能夠在其上實現(xiàn)本發(fā)明一個實施例的計算機(jī)系統(tǒng)100。計算機(jī)系統(tǒng)100包含用于傳送信息的總線102,以及耦合到總線102的、用于處理信息的處理器110。計算機(jī)系統(tǒng)100還包含耦合到總線102的存儲器子系統(tǒng)104-108,用于為處理器110存儲信息和指令。處理器110包括一個包含算術(shù)邏輯部件(ALU)180的執(zhí)行單元130、寄存器堆200、一個或多個高速緩存存儲器160(160-1、……、160-N)、一個重布置(RT)高速緩沖存儲器400和內(nèi)部總線190。
高速的臨時存儲緩沖器(高速緩存器)160耦合到執(zhí)行單元130并且為處理器110存儲頻繁使用和/或最近使用的信息。如在此描述的那樣,存儲緩沖器160包含但不局限于高速緩存存儲器、固態(tài)存儲器、RAM、同步RAM(SRAM)、同步數(shù)據(jù)RAM(SDRAM)或者任何能夠支持?jǐn)?shù)據(jù)的高速緩沖的設(shè)備。因此,高速的臨時存儲緩沖器160可互換地被稱為高速緩存存儲器160或者一個或多個第二存儲緩沖器。
此外,應(yīng)當(dāng)注意到在一個替換實施例中,術(shù)語第二存儲緩沖器指主(外部)儲存器104。然而,與傳統(tǒng)的高速緩存存儲器相反,系統(tǒng)100包含RT高速緩沖存儲器400。如在下面進(jìn)一步詳細(xì)描述的那樣,RT高速緩存存儲器400支持處理器110對包含在其中的數(shù)據(jù)進(jìn)行非橫向順序存儲器存取。寄存器堆200在處理器110中存儲信息,并且它經(jīng)由內(nèi)部總線190耦合到執(zhí)行單元130。
在本發(fā)明的一個實施例中,寄存器堆200包含多媒體寄存器,例如,用于存儲多媒體信息的SIMD(單指令多數(shù)據(jù))寄存器。在一個實施例中,多媒體寄存器每個都存儲至少六十四位壓縮的數(shù)據(jù)。多媒體寄存器可以是專用的多媒體寄存器或者是被用來存儲多媒體信息及其它信息的寄存器。在一個實施例中,當(dāng)執(zhí)行多媒體操作時,所述多媒體寄存器存儲多媒體數(shù)據(jù),而當(dāng)執(zhí)行浮點(diǎn)操作時,所述多媒體寄存器存儲浮點(diǎn)數(shù)據(jù)。
在一個實施例中,執(zhí)行單元130依據(jù)由處理器110接收的、包含在指令集140中的指令對圖像數(shù)據(jù)進(jìn)行操作。執(zhí)行單元130還依據(jù)在通用處理器中實現(xiàn)的指令對壓縮的、浮點(diǎn)以及標(biāo)量數(shù)據(jù)進(jìn)行操作。處理器110能夠支持Pentium微處理器指令集以及對壓縮數(shù)據(jù)進(jìn)行操作的壓縮指令。通過在標(biāo)準(zhǔn)的微處理機(jī)指令集(諸如Pentium微處理器指令集等)中包含壓縮指令集,壓縮的數(shù)據(jù)指令能夠被很容易地并入現(xiàn)有的軟件(先前為標(biāo)準(zhǔn)微處理器指令集編寫的)中。其他的標(biāo)準(zhǔn)指令集(諸如PowerPCTM以及AlphaTM處理器指令集等)也可以依據(jù)描述的發(fā)明來使用。(Pentium是Intel公司的注冊商標(biāo)。PowerPCTM是IBM、APPLE COMPUTER和MOTOROLA的商標(biāo)。AlphaTM是DigitalEquipment Corporation的商標(biāo)。)依據(jù)本發(fā)明的一個實施例提供了多個RT移動(RTMOV)指令,它們在此被統(tǒng)稱為RT加載操作或者指令。此外,在描述的實施例中,RT加載以及RTMOV指令可以被稱為存儲器存取指令。在一個實施例中,所述存儲器存取指令包含RT寫和RT讀操作。因此,如圖1所示,指令集包含支持字節(jié)數(shù)據(jù)(指令142-146)、字?jǐn)?shù)據(jù)(指令148-152)和雙字?jǐn)?shù)據(jù)(指令154-158)的RT移動操作。在一個替換實施例中,本指令集包含RT移動預(yù)取操作。所述預(yù)取操作依據(jù)所述指令將數(shù)據(jù)預(yù)載到RT高速緩存器中以便預(yù)期請求的數(shù)據(jù)。利用這些操作,可以通過避免高代價的圖像數(shù)據(jù)轉(zhuǎn)置操作,以及避免具有多余數(shù)據(jù)的高速緩存器位置問題和高速緩存器超載問題,來改善當(dāng)前的圖像處理技術(shù)。
在描述的實施例中的參數(shù)MMX和XMM指64位寄存器,例如如圖2所示的寄存器214,以及諸如圖2所示的寄存器210等128位寄存器。START_ADDR參數(shù)指圖像塊內(nèi)的起始地址,而間距參數(shù)指圖像塊,所述參數(shù)在一個實施例中是8字節(jié)。如將在下面進(jìn)一步詳細(xì)描述的那樣,被一起稱為RT加載操作的RTMOV操作允許對RT高速緩存0器400內(nèi)的數(shù)據(jù)進(jìn)行非橫向順序存儲器存取。如在此描述的那樣,非橫向順序存儲器存取包含但不局限于順序和非順序的縱向存儲器存取以及非順序的橫向存儲器存取。
通過在通用處理器110的指令集中包含指令集140,連同執(zhí)行這些指令的相關(guān)電路一起,許多現(xiàn)有的多媒體應(yīng)用使用的操作可以使用通用處理器更有效地執(zhí)行圖像處理。因此,通過利用單一指令來執(zhí)行圖像塊的非橫向順序存取,可以加速以及更有效地執(zhí)行許多多媒體應(yīng)用。此外,壓縮指令允許將處理器的數(shù)據(jù)總線的全部寬度用于執(zhí)行對壓縮數(shù)據(jù)的操作。這樣就不需要通過所述處理器的數(shù)據(jù)總線傳輸較小單元的數(shù)據(jù)以執(zhí)行一個或多個一次一個數(shù)據(jù)單元的操作。
仍然參見圖1,本發(fā)明的計算機(jī)系統(tǒng)100可以包含一個或多個I/O(輸入/輸出)設(shè)備120,包括諸如監(jiān)控器等顯示設(shè)備。所述I/O設(shè)備120還可以包括諸如鍵盤等輸入設(shè)備以及諸如鼠標(biāo)、跟蹤球、或者跟蹤墊等光標(biāo)控制。此外,I/O設(shè)備還可以包括網(wǎng)絡(luò)連接器,以便使得計算機(jī)系統(tǒng)100是局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的一部分,I/O設(shè)備120,用于聲音記錄和/或重放的設(shè)備,諸如耦合到麥克風(fēng)的、用于記錄聲音輸入以便語音識別的音頻數(shù)字化器。所述I/O設(shè)備120還可以包括能夠用來捕捉視頻圖像的視頻數(shù)字化設(shè)備、諸如打印機(jī)等硬拷貝設(shè)備以及CD-ROM設(shè)備。
處理器圖2說明了處理器110的一個詳圖。處理器110能夠使用多種工藝技術(shù)諸如BiCMOS、CMOS、和NMOS等中的任何一種在一個或多個基片上加以實現(xiàn)。然后,數(shù)據(jù)能夠經(jīng)由內(nèi)部總線190被存儲在寄存器堆200中。為了清楚起見,實施例中的寄存器在意思上不應(yīng)該被限制于一種特定類型的電路。相反地,實施例中的寄存器只需要能夠存儲和提供數(shù)據(jù),以及執(zhí)行在此描述的功能即可。
根據(jù)數(shù)據(jù)的類型,數(shù)據(jù)可以被存儲在整數(shù)寄存器202、寄存器210、寄存器214、狀態(tài)寄存器208或者指令指針寄存器206中。其他的寄存器能夠被包含在寄存器堆200中,例如浮點(diǎn)寄存器204。在一個實施例中,整數(shù)寄存器202存儲32位整型數(shù)據(jù)。在一個實施例中,寄存器210包含R1212-1到R8212-8的8個多媒體寄存器(XMM),例如,包含壓縮數(shù)據(jù)的單指令多數(shù)據(jù)(SIMD)寄存器。在寄存器210中的每個寄存器長都為128位。R1 212a,R2 212b和R3212c是寄存器209中獨(dú)立寄存器的示例。
在一個實施例中,寄存器214包含216-1到216-8的8個多媒體寄存器(MMX),例如,包含壓縮數(shù)據(jù)的單指令多數(shù)據(jù)(SIMD)寄存器。寄存器214中的每個寄存器長度都為64位。狀態(tài)寄存器208指示處理器110的狀態(tài)。指令指針寄存器206存儲要被執(zhí)行的下一個指令的地址。整數(shù)寄存器202、狀態(tài)寄存器208、寄存器210、寄存器214、浮點(diǎn)寄存器204和指令指針寄存器206全部都和內(nèi)部總線190連接。任何附加的寄存器將也和內(nèi)部總線190連接。
在另一個實施例中,一些寄存器能夠用于不同類型的數(shù)據(jù)。例如,寄存器210/214和整數(shù)寄存器202能夠被組合在一起,其中,每個寄存器能夠存儲整型數(shù)據(jù)或者壓縮數(shù)據(jù)。在另一個實施例中,寄存器210/214能夠被用作浮點(diǎn)寄存器。在這個實施例中,壓縮數(shù)據(jù)或者浮點(diǎn)數(shù)據(jù)能夠被存儲在寄存器210/214中。在一個實施例中,組合的寄存器長度為192位,而且整數(shù)被表示為192位。在這個實施例中,當(dāng)存儲壓縮數(shù)據(jù)和整型數(shù)據(jù)時,寄存器不需要區(qū)分這兩種數(shù)據(jù)類型。
執(zhí)行單元130結(jié)合例如ALU180,執(zhí)行由處理器110執(zhí)行的操作。這樣的操作可以包含移位、加法、減法和乘法等等。執(zhí)行單元130經(jīng)由內(nèi)部總線190連接到處理器110的各個部件以及和它們進(jìn)行通信。如上所述,處理器包含第一存儲緩沖器(RT高速緩存器)400以及一個或多個第二存儲緩沖器(高速緩存器)160。RT高速緩存器400以及一個或多個高速緩存存儲器160能夠被用來緩沖來自例如主存儲器104的數(shù)據(jù)和/或控制信號。
數(shù)據(jù)和存儲格式現(xiàn)在參見圖3A和3B,圖3A和3B說明了依據(jù)本發(fā)明一個實施例的128位SIMD數(shù)據(jù)類型。圖3A說明了四個128位的壓縮數(shù)據(jù)類型壓縮字節(jié)221、壓縮字222、壓縮雙字(dword)223和壓縮四倍字224。壓縮字節(jié)221為128位長,包含16個壓縮字節(jié)數(shù)據(jù)單元。通常,一個數(shù)據(jù)單元是一個和其他同樣長度的數(shù)據(jù)單元一起存儲在單個寄存器(或者存儲單元)中的單個數(shù)據(jù)片。在壓縮數(shù)據(jù)單元序列中,存儲在一個寄存器中的數(shù)據(jù)單元的數(shù)目是128位除以以數(shù)據(jù)單元的位為單位的長度。
壓縮字222為128位長并且包含8個壓縮字?jǐn)?shù)據(jù)單元。每個壓縮字包含16位的信息。壓縮雙字223為128位長并且包含4個壓縮雙字?jǐn)?shù)據(jù)單元。每個壓縮雙字?jǐn)?shù)據(jù)單元包含32位信息。一個壓縮四倍字224為128位長而且包含2個壓縮四倍字?jǐn)?shù)據(jù)單元。因此,在所述寄存器中使用了所有可用的位。這個存儲排列增加了所述處理器的存儲效率。此外,利用多個數(shù)據(jù)單元同時存取,現(xiàn)在能夠同時對多個數(shù)據(jù)單元執(zhí)行一個操作。
圖3B說明了依據(jù)本發(fā)明一個實施例的128位壓縮浮點(diǎn)和整型數(shù)據(jù)類型230。壓縮單精度浮點(diǎn)230示出了4個32位浮點(diǎn)值在如圖2所示的一個SIMD-XMM寄存器210中的存儲。壓縮的雙精度浮點(diǎn)231示出了兩個64位浮點(diǎn)值在如圖2所示的一個SIMD-XMM寄存器210中的存儲。如將在下面的進(jìn)一步詳細(xì)描述的那樣,壓縮雙精度浮點(diǎn)231可以被用來存儲一個2×2子矩陣的兩個單元向量,因此可以使用兩個128位寄存器來存儲整個子矩陣,其中每個寄存器包含四個以壓縮雙精度浮點(diǎn)格式存儲的向量單元。壓縮字節(jié)整數(shù)232說明了16個壓縮整數(shù)的存儲,而壓縮字整數(shù)233說明了8個壓縮字的存儲。最后,壓縮雙字整數(shù)234說明了四個壓縮雙字的存儲,而壓縮四倍字整數(shù)235說明了2個壓縮四倍字整數(shù)在如圖2所述的一個128位寄存器內(nèi)的存儲。
現(xiàn)在參見圖3C和3D,圖3C和3D描述了這樣的方框圖,它說明了依據(jù)本發(fā)明一個實施例的64位的壓縮SIMD數(shù)據(jù)類型。因而,圖3C描述了4個64位壓縮數(shù)據(jù)類型壓縮字節(jié)242、壓縮字244、壓縮雙字246和壓縮四倍字248。壓縮字節(jié)242長為64位,包含8個壓縮字節(jié)數(shù)據(jù)單元。如上所述,在壓縮數(shù)據(jù)序列中,存儲在一個寄存器中的數(shù)據(jù)單元的數(shù)目為64位除以以數(shù)據(jù)單元的位為單位的長度。壓縮字244長為64位并且包含4個壓縮字單元。每個壓縮字都包含16位的信息。壓縮雙字246長為64位并且包含2個壓縮雙字?jǐn)?shù)據(jù)單元。每個壓縮雙字?jǐn)?shù)據(jù)單元包含32位信息。最后,壓縮四倍字248長為64位并且正好包含一個64位的壓縮四倍字?jǐn)?shù)據(jù)單元。
現(xiàn)在參見圖3D,圖3D說明了依據(jù)本發(fā)明另一個實施例的64位壓縮浮點(diǎn)和整型數(shù)據(jù)類型。壓縮單精度浮點(diǎn)252示出了兩個32位浮點(diǎn)值在如圖2所示的一個SIMD-XMM寄存器214中的存儲。壓縮雙精度浮點(diǎn)254示出了一個64位浮點(diǎn)值在如圖2所示的一個SIMD-MMX寄存器214中的存儲。壓縮字節(jié)整數(shù)256示出了8個32位整數(shù)值在如圖2所示的一個SIMD-MMX寄存器214中的存儲。壓縮雙字整數(shù)260示出了2個32位整數(shù)值在如圖2所示的一個SIMD-MMX寄存器214中的存儲。最后,壓縮四倍字整數(shù)262示出了一個64位整數(shù)值在如圖2所示的一個SIMD-MMX寄存器214中的存儲。
傳統(tǒng)的圖像塊處理如圖4中描述的那樣,當(dāng)前用于圖像/視頻應(yīng)用的光柵掃描存儲器排列300以一種線性方式貫穿圖像平面放置像素數(shù)據(jù)302。因此,在傳統(tǒng)的光柵掃描存儲器排列300中,一高速緩存線通常保存幾個基本圖像塊(例如,8×8或者16×16)的某些部分。例如,一高速緩存線可以保持對應(yīng)4個單獨(dú)的基本圖像塊的一線。在另一方面,一個基本的圖像塊通常被包含在多條高速緩存線中。即,單個基本的塊能夠包含在例如八條單獨(dú)的高速緩存線中。
非橫向順序存儲器存取現(xiàn)在參見圖5,圖5描述了一個框圖,所述框圖說明了依據(jù)本發(fā)明一個實施例的非橫向順序存儲器讀取350。如說明的那樣,圖像352包括一個圖像塊,它由高速緩存線(354-1,...,354-4)組成。為了處理所述圖像,本發(fā)明描述了存儲器存取(RT-Load)操作/指令,它允許以在每一個高速緩存/存儲器線內(nèi)的起始地址開始縱向讀取/寫入數(shù)據(jù)到目的地數(shù)據(jù)存儲設(shè)備370中。與傳統(tǒng)的存儲器操作指令相比,這樣的操作響應(yīng)于單一指令來執(zhí)行,其中,數(shù)據(jù)以橫向方式(橫向順序)順序地讀取。如在此描述的那樣,非橫向的順序存儲器存取不局限于縱向存儲器存取。在一個實施例中,非橫向順序存儲器存取可以依據(jù)一個具體的模式(諸如之字形掃描等)來執(zhí)行。
為了支持由例如CPU進(jìn)行的非橫向順序存儲器存取(如圖5描述的那樣),提供如圖1所述的新指令。在一個實施例中,新的指令看來像以下所示的那樣RTMOV[B|W|D]2[Q|DQ] [MMX|XMM],start_addr,pitch如圖5中說明的那樣,新的指令,假定是RTMOVW2Q MM0,start_addr,pitch的效果如下所示MM0
←[start_addr] (1)MM0[16..31]←[start_addr+pitch] (2)MM0[32..47]←[start_addr+pitch*2](3)
MM0[48..63]←[start_addr+pitch*3] (4)在一個實施例中,RT加載操作的實現(xiàn)在預(yù)取硬件或者諸如協(xié)處理器之類的專用硬件中執(zhí)行。
因此,如由操作1-4說明的那樣,指令參數(shù)MM0指例如如圖5所述的目的地數(shù)據(jù)存儲設(shè)備370。如參考圖1進(jìn)行的描述一樣,RTMOV操作支持字節(jié)、字和雙字的非橫向順序存儲器讀取。然而,本領(lǐng)域的那些技術(shù)人員將要理解本發(fā)明的實施例可以應(yīng)用于字節(jié)倍數(shù)的任何變化。因此,RTMOV操作為了說明的目的而提供,而且它不應(yīng)該以一種限制的意義來解釋。
因而,響應(yīng)于單個RTMOV操作實現(xiàn)移動操作1-4。此外,在檢測到由RT加載操作請求的數(shù)據(jù)的高速緩存器未命中時,RTMOV操作內(nèi)的參數(shù)2Q和2DQ指導(dǎo)將一個數(shù)據(jù)塊加載到RT高速緩沖存儲器中。因此,在一個實施例中,當(dāng)處理所述字節(jié)數(shù)據(jù)時,參數(shù)2Q要求將一個8×8字節(jié)的數(shù)據(jù)塊加載到一個RT高速緩沖存儲器中。此外,當(dāng)處理字節(jié)數(shù)據(jù)時,2DQ參數(shù)的檢測要求在RT高速緩沖存儲器的相應(yīng)部分內(nèi)加載一個8字節(jié)16線的塊。
當(dāng)處理字?jǐn)?shù)據(jù)時,2Q參數(shù)要求在RT高速緩沖存儲器內(nèi)加載一個8字節(jié)4線的塊,而2DQ參數(shù)需要加載一個8×8字節(jié)的塊。
最后,當(dāng)處理雙字?jǐn)?shù)據(jù)時,參數(shù)2Q要求加載一個8字節(jié)2線的塊,而2DQ參數(shù)要求加載一個8字節(jié)4線的塊。因此,假設(shè)RT移動操作如上所述,如果檢測到所請求數(shù)據(jù)的高速緩存器未命中,那么所述操作將按如下所述執(zhí)行RT Cache←[astart_addr]
(5)RT Cache←[astart_addr+pitch]
(6)RT Cache←[astart_addr+pitch*2]
(7)RT Cache←[astart_addr+pitch*3]
(8)到RT高速緩存器中,其中對齊的開始地址(astart_addr)=(start_addr&(-7))。
RT高速緩沖存儲器現(xiàn)在參見圖6,圖6進(jìn)一步說明了依據(jù)一個實施例的、如圖1所述的計算機(jī)系統(tǒng)100,該計算機(jī)系統(tǒng)利用RT高速緩沖存儲器400來實現(xiàn)如上所述的RT加載操作。如說明的那樣,RT高速緩沖存儲器400包括字節(jié)緩沖器410、字緩沖器420和雙字緩沖器430。然而,在本領(lǐng)域的技術(shù)人員將要理解RT高速緩沖存儲器400可以被實現(xiàn)為使用不同的多倍字節(jié)作為它的不同的數(shù)據(jù)緩沖器。因此,圖6僅僅為說明的目的而提供,而且不應(yīng)該以一種限制的意義進(jìn)行解釋。
在一個實施例中,RT高速緩存器400被稱為第一存儲緩沖器,而一級高速緩存器160-1和二級高速緩存器160-2被稱為一個或多個第二存儲緩沖器。在一個實施例中,使用例如存儲器轉(zhuǎn)置電路來實現(xiàn)RT高速緩沖存儲器400。最初,從一個或多個第二存儲緩沖器160中加載數(shù)據(jù)。一旦被加載了,所述數(shù)據(jù)就被橫向地寫入到所述電路中(例如,操作5-8)。接下來,從存儲器轉(zhuǎn)置電路中縱向讀取所述數(shù)據(jù)(例如,操作1-4)。
現(xiàn)在參見圖7A,圖7A進(jìn)一步說明了依據(jù)本發(fā)明另一個實施例的、如圖6所述的RT高速緩沖存儲器400。如說明的那樣,RT高速緩存器410的數(shù)據(jù)緩沖器(410、420和430)均包含一個相應(yīng)的高速緩存器標(biāo)記(412、422、432),用于確定在所述相應(yīng)數(shù)據(jù)緩沖器內(nèi)所請求數(shù)據(jù)的高速緩存器命中或者未命中。此外,每個數(shù)據(jù)緩沖器包含一個并行寫端口(414、424和434)以及一個并行讀端口(416、426和436)。
例如,參見RT高速緩存器400的字節(jié)緩沖器410,并行寫端口414允許將數(shù)據(jù)橫向?qū)懭氲絉T高速緩存器400中(例如,操作5-8)。并行讀端口416允許從RT高速緩存器400中非橫向順序存儲器讀取(縱向存儲器讀取)(例如,操作1-4)。利用各并行寫端口和并行讀端口,處理器110(圖6)可以響應(yīng)于RT加載操作從RT高速緩存器400中存取非橫向順序的存儲器數(shù)據(jù)。在圖7A描述的實施例中,并行寫端口和并行讀端口連接到例如如上所述的存儲器轉(zhuǎn)置電路。
現(xiàn)在參見圖7B,圖7B描述了一個RT高速緩沖存儲器410的一個替換實施例,該替換實施例利用線緩沖器440以及數(shù)據(jù)混洗器450來產(chǎn)生相應(yīng)的輸出數(shù)據(jù)370。如說明的那樣,線緩沖器440用來保存數(shù)據(jù)而混洗器/交叉開關(guān)450用來收集被分散的數(shù)據(jù)。一旦數(shù)據(jù)被收集到了,則該數(shù)據(jù)就被放置到輸出370中。雖然如在圖7A和7B中描述的那樣,RT高速緩存存儲器利用了存儲器轉(zhuǎn)置電路(圖7A)或者線緩沖器440和混洗器450(圖7B),但是在本領(lǐng)域的技術(shù)人員將會認(rèn)識到各種其他的裝置由本發(fā)明所包含用于如由本發(fā)明示教的那樣,實現(xiàn)對高速緩沖存儲器的非橫向順序存儲器存取。因此,因為提供了各種不同的實施例作為本發(fā)明可能的實現(xiàn),所以描述的實施例不應(yīng)該以限制的意義來解釋。
因而,利用RT高速緩沖存儲器400,執(zhí)行單元130沒有被限制成響應(yīng)于RT加載操作,從RT高速緩沖存儲器400中以橫向的順序次序進(jìn)行存儲器數(shù)據(jù)的常規(guī)存取。這樣做時,可以使用計算機(jī)系統(tǒng)100以一種超過傳統(tǒng)計算機(jī)系統(tǒng)的改進(jìn)和有效的方式來執(zhí)行圖像處理操作。如將要在下面進(jìn)一步詳細(xì)描述的那樣,利用RT加載操作以及RT高速緩沖存儲器,本發(fā)明能夠簡化像素填充過程以及圖像過濾。因此,通過利用非橫向的順序存儲器存取,諸如像如圖5說明的那樣縱向地從圖像塊中讀取數(shù)據(jù),來簡化圖像處理操作。
高速緩存器一致性在一個實施例中,假定描述的實施例不支持RT寫操作,MESI(修改(M)、排它(E)、共享(S)和無效(I))高速緩存線狀態(tài)的一個子集S和I,由RT高速緩存器400實現(xiàn)。如果發(fā)生RT加載未命中,則RT高速緩存器向L1/L2高速緩存器160發(fā)出一個請求。在L1/L2高速緩存器160中執(zhí)行一次查找,這將導(dǎo)致命中或者未命中。如果檢測到命中,則把請求的數(shù)據(jù)塊供應(yīng)給RT高速緩存器400。把所述數(shù)據(jù)塊放置到S狀態(tài)下的RT高速緩存器400中。如果所述請求導(dǎo)致高速緩存器未命中,則L1/L2高速緩存器160可以向外部總線接口發(fā)出一個請求,并且從外部儲存器104中讀取所述數(shù)據(jù)塊。
在所述事務(wù)的探聽階段期間,其它高速緩存器(例如,協(xié)處理器170內(nèi)的高速緩存存儲器)報告它們是否有所述數(shù)據(jù)塊的拷貝。如果任一其它處理器的高速緩存器都具有在M狀態(tài)中的一拷貝,則所述線就從那個高速緩存器中加以提供,而且把所述線放置到在S狀態(tài)下的L1/L2高速緩存器160和RT高速緩存器400中。同時當(dāng)M數(shù)據(jù)塊被提供給RT高速緩存器400時,所述數(shù)據(jù)塊就被寫入到存儲器104中。在其它高速緩存器(例如,協(xié)處理器170的高速緩存存儲器)中的所述數(shù)據(jù)塊因此不再與存儲器104中的數(shù)據(jù)塊不同。
因而,數(shù)據(jù)塊的狀態(tài)從M轉(zhuǎn)換為S狀態(tài)。當(dāng)沒有其它的高速緩存器具有一拷貝(探聽未命中)或者任何其他高速緩存器(這個處理器或者其它處理器)具有在E或者S狀態(tài)中的一拷貝時,就從存儲器104中讀取數(shù)據(jù)塊。當(dāng)完成從存儲器104中讀取數(shù)據(jù)塊時,L1/L2高速緩存器160和RT高速緩存器400使它們的拷貝處于S狀態(tài)中。任何其他的高速緩存器(其它處理器)都具有一個拷貝,所述數(shù)據(jù)塊還在S狀態(tài)下。
為了支持用于在運(yùn)動圖像專家組-四(MPEG-4)中的任意形狀視頻對象編碼的、基于塊的算法,一種填充算法已經(jīng)被引入。MPEG-4規(guī)范規(guī)定必須在縱向填充之前執(zhí)行橫向填充。不幸地是,由于存儲器中的鄰近字節(jié)是在同一個行、而不是同一個列中,所以用傳統(tǒng)的指令有效地實現(xiàn)縱向填充是更加困難的。如將通過比較圖8A和8B進(jìn)行說明的那樣,利用RTLoad操作,如在此描述的那樣,避免了由傳統(tǒng)的像素填充操作500(圖8A)所使用的圖像轉(zhuǎn)置步驟(502和506)。
現(xiàn)在參見圖8A,圖8A描述了傳統(tǒng)的像素填充方法500。在過程塊502處,轉(zhuǎn)置圖像塊。在所述塊被第一次轉(zhuǎn)置之后,在過程塊504,縱向填充所述塊。這相等于在橫向進(jìn)行填充。然后,在過程塊506,轉(zhuǎn)置所述矩陣,并且在過程塊506,所述矩陣第二次以縱向被填充。為簡單起見,假定忽略了像素平均,使用MMXTM指令以便實現(xiàn)連接像素填充過程500的匯編代碼在表1中進(jìn)行了說明。
表1用于簡單縱向填充的代碼(沒有重布置指令)Twopassfillsimplemov edi,transposedpixelptrmov esi,transposedmaskptrmov ecx,7;循環(huán)計數(shù)器passlooplsimplemovq mm1,[esi+8] ;mm1<-M2movq mm0,[edi+8] ;mm0<-P2movq mm5,mm1 ;mm5<-M2pandn mm1,[edi] ;mm1<-P1 AND(NOT M2);不對當(dāng)前線的屏蔽逐位進(jìn)行,并且;當(dāng)前線具有上一行的像素。
por mm0,mm1 ;mm0<-P2+[P1 AND(NOT M2)];并且將它們加在一起。
;這樣就以向下方向“抹去”像素。
por mm5,[esi];mm5<-M2+M1;改變所述屏蔽movq[edi+8],mm0
movq[esi+8],mm5add esi,8add edi,8loop passlooplsimplemov ecx,7;循環(huán)計數(shù)器sub esi,8sub edi,8passloop2simplemovq mm1,[esi] ;這做的是同樣的事,但這次是反向movq mm0,[edi]; ;進(jìn)行的。
movq mm5,mm1pandn mm1,[edi+8]por mm0,mm1por mm5,[esi+8] ;新的屏蔽!在任一行中的所以像素movq[edi],mm0movq[esi],mm5sub esi,8sub edi,8loop passloop2simple另一方面,如表3所示,RT加載操作允許把轉(zhuǎn)置操作和重復(fù)的像素填充過程組合到單一的操作中。在圖8B中說明了這個RT加載像素填充過程510。整個像素填充過程510現(xiàn)在僅僅執(zhí)行相同的代碼兩次。估計這個新的代碼已經(jīng)比傳統(tǒng)的像素填充過程500獲得了更高的性能。
現(xiàn)在參見圖9A-E,圖9A-9E描述了傳統(tǒng)像素填充過程的一個示例。圖9A描述了一個初始塊。圖9B描述了初始塊的轉(zhuǎn)置。圖9C描述了一個縱向填充。圖9D描述了所述縱向填充的轉(zhuǎn)置塊的轉(zhuǎn)置,這相當(dāng)于所述塊的橫向填充。圖9E描述了縱向填充。
表2用于轉(zhuǎn)置一個8×8矩陣的代碼
mov ecx,eax punpckhdq mm1,mm5mov edx,eax movq[edi],mm1sh1 ecx,2add edi,ebxsh1 edx,2sub ecx,eax movq mm0,[esi]movq mm1,[esi+eax]movq mm0,[esi] punpckhbw mm0,mm1movq mm1,[esi+eax] movq mm2,[esi+2*eax]punpcklbw mm0,mm1movq mm3,[esi+ecx]movq mm2,[esi+2*eax] add esi,edxmovq mm3,[esi+ecx] punpckhbw mm2,mm3add esi,edxpunpcklbw mm2,mm3movq mm4,[esi]movq mm5,[esi+eax]movq mm4,[esi] punpckhbw mm4,mm5movq mm5,[esi+eax] movq mm6,[esi+2*eax]punpcklbw mm4,mm5movq mm7,[esi+ecx]movq mm6,[esi+2*eax] punpckhbw mm6,mm7movq mm7,[esi+ecx] movq mm1,mm0punpcklbw mm6,mm7movq mm3,mm2movq mm5,mm4movq mm1,mm0 movq mm7,mm6movq mm3,mm2movq mm5,mm4 punpcklwd mm0,mm2movq mm7,mm6 punpcklwd mm4,mm6movq mm6,mm0sub esi,edxpunpckldq mm0,mm4punpcklwd mm0,mm2movq[edi],mm0punpcklwd mm4,mm6add edi,ebxmovq mm6,mm0punpckldq mm0,mm4movq mm0,mm6movq[edi],mm0punpckhdq mm0,mm4add edi,ebx movq[edi],mm0movq mm0,mm6 add edi,ebxpunpckhdq mm0,mm4punpckhwd mm1,mm3movq[edi],mm0punpckhwd mm5,mm7add edi,ebx movq mm7,mm1punpckhwd mm1,mm3punpckldq mm1,mm5punpckhwd mm5,mm7movq[edi],mm1movq mm7,mm1 add edi,ebxpunpckldq mm1,mm5 movq mm1,mm7movq[edi],mm1add edi,ebx punpckhdq mm1,mm5movq mm1,mm7 movq[edi],mm1
表3用于使用重布置指令進(jìn)行縱向填充的代碼Twopassfillsimplemov edi,tpixelptrmov esi,maskptrmov eax,8rtmovq mm2,[edi],eax;mm2<-M1rtmovq mm4,[edi],eax;mm4<-P1mov edx,transposedpixelptrmov ebx,transposedmaskptrmovq[edx],mm2movq[ebx],mm4mov ecx,7;循環(huán)計數(shù)器passlooplsimplertmovq mm1,[esi+8],eax ;mm1<-M2rtmovq mm0,[esi+8],eax ;mm0<-P2movq mm5,mm1 ;mm5<-M2pandn mm1,mm2;mm1<-P1 AND(NOT M2);不對當(dāng)前線的屏蔽逐位進(jìn)行,并且;當(dāng)前線具有上一行的像素。
por mm0,mm1 ;mm0<-P2+[P1 AND(NOT M2)];并且將它們加在一起。
;這樣就以向下方向“抹去”像素。
por mm5,mm4 ;mm5<-M2+M1改變所述屏蔽movq[edx+8],mm0movq mm2,mm5movq[ebx+8],mm5movq mm4,mm5add esi,8add edi,8add ebx,8add edx,8loop passlooplsimplemov ecx,7;循環(huán)計數(shù)器sub esi,8sub edi,8sub ebx,8sub edx,8
passloop2simplemovq mm1,[ebx] ;這做的是同樣的事,但這次是反向movq mm0,[edx] ;進(jìn)行的。
movq mm5,mm1pandn mm1,[edx+8]pormm0,mm1por mm5,[ebx+8] ;新的屏蔽!在任一行中的所以像素movq[edi],mm0movq[esi],mm5sub esi,8sub edi,8sub ebx,8sub edx,8loop passloop2simple另一個應(yīng)用示例是利用分離的過濾器的圖像過濾,如在圖10A-10C中描述的那樣。這種操作將被例如在將來用于為在H.26L中的半像素運(yùn)動估計產(chǎn)生半像素位置(如由ITU視頻編碼專家小組在2001年六月在Test ModelLong Term H.26L版本8中定義的那樣)。這個操作使用一個具有6個系數(shù)的過濾器產(chǎn)生一幅加倍橫向和加倍縱向方向的圖像。
現(xiàn)在參見圖10A,在圖像550內(nèi)的‘X’表示可以從初始圖像中獲得的整數(shù)像素位置。首先通過使用一個6抽頭過濾器(1,-5,20,20,-5,1)/32產(chǎn)生′+′(橫向像素位置)。所述結(jié)果被四舍五入到最近的整數(shù)并且被修剪到0到255的范圍內(nèi)。然后通過使用相同的6抽頭產(chǎn)生所有的‘*’。所述結(jié)果被四舍五入到最近的整數(shù)并且被修剪在0到255的范圍內(nèi)。如果所述過濾過程涉及所述圖片外部的像素,則它由最近的圖像邊緣像素來代替。
在圖10B中顯示了當(dāng)前可能的最佳實現(xiàn)方式(現(xiàn)有技術(shù))。不幸地是,為了以橫向方式縱向過濾存取數(shù)據(jù),需要有兩次轉(zhuǎn)置。使用建議的RT加載操作,有可能在沒有轉(zhuǎn)置操作的情況下,進(jìn)行縱向向上采樣和過濾。利用RT加載執(zhí)行向上采樣功能,這相當(dāng)于轉(zhuǎn)置操作(然后圖像尺寸是2*高度×2*寬度)。然后用RT加載對所述圖像執(zhí)行縱向過濾操作。接下來,所述操作如在圖10C中所述的塊582-594描述的那樣再次轉(zhuǎn)置圖像(所述圖像具有正確的方位和大小)。使用RT加載操作的估算改善是2.1x。
現(xiàn)在轉(zhuǎn)向圖11,其中顯示了電子系統(tǒng)600的實施例的框圖,在所述電子系統(tǒng)600中,處理器具有如上所述的RT高速緩沖存儲器的特征。所述系統(tǒng)包含一個多層印刷布線板604,并行總線608形成在所述電路板上??偩€608可以是點(diǎn)到點(diǎn)類型的,或者是諸如用在主存儲器中的那些總線的多站總線??商鎿Q地,總線608可以使用在各個芯片封裝間的光信號來實現(xiàn),在所述芯片封裝中,需要光/電轉(zhuǎn)換。集成電路(IC)芯片封裝606被可操作地安裝在所述板上以使用并行總線608進(jìn)行通信。封裝606的安裝可以采用表面安裝技術(shù)或者經(jīng)由連接器或者插槽來完成。
此外,所述封裝具有如下的IC芯片610,所述IC芯片610包含邏輯功能部件和作為所述邏輯功能部件和總線608之間接口的I/O部分。在一個實施例中,邏輯功能是包含如上所述的RT高速緩沖存儲器的微處理器??商鎿Q地,能夠在IC芯片的邏輯功能部件中實現(xiàn)的其他器件也可以被使用,諸如存儲器控制器和總線橋等。所述I/O部分具有一個其中提供了如上所述的平衡回路的總線接收器。
第二IC封裝612也被安裝在板604上以便經(jīng)由總線608和第一封裝606進(jìn)行通信。第二IC封裝612也包含具有I/O部分的芯片614以及它自己的邏輯功能部件(在這里示為存儲器控制器),在所述I/O部分中提供了總線接收器以便接口到總線608。本領(lǐng)域的技術(shù)人員將會認(rèn)識到制造的系統(tǒng)600是為說明目的提供的而不應(yīng)該以一種限制的意義進(jìn)行解釋。此外,各個IC封裝可以按具體實現(xiàn)細(xì)節(jié)的要求在單獨(dú)的板內(nèi)實施或組合。此外,在各個部件之間的通信不局限于電信號,而且包含光通信、微電子機(jī)械通信信號等等。
依據(jù)一個實施例,處理器620利用如上所述的RT高速緩沖存儲器630。因此,在這樣一個實施例中,處理器620能夠響應(yīng)于單個RT加載指令執(zhí)行包含在RT高速緩沖存儲器630內(nèi)的數(shù)據(jù)的非橫向順序存取。RT高速緩存器630的其他系統(tǒng)應(yīng)用也是可能的,這包含例如存儲器控制器。通過使用RT高速緩沖存儲器400,處理器能夠在RT高速緩存器400的相應(yīng)部分內(nèi)縱向讀取/寫入數(shù)據(jù)。現(xiàn)在描述用于實現(xiàn)本發(fā)明實施例的過程方法。
操作現(xiàn)在參見圖12,圖12描述了一個流程圖,它說明了一種用于從第一存儲緩沖器諸如如圖1、2和6-7B中所述的計算機(jī)系統(tǒng)100的RT高速緩沖存儲器400中執(zhí)行非橫向順序存儲器存取的方法700。在過程塊702,確定是否接收到RT存儲器存取指令。RT存儲器存取指令包含但不局限于例如在圖1所述的RTMOV指令(142-158)。一旦接收到RT存儲器存取指令,則在過程塊704處,確定是否檢測到了由存儲器存取指令請求的數(shù)據(jù)的高速緩存器未命中。當(dāng)檢測到高速緩存器未命中時就執(zhí)行過程塊720。
在過程塊720,在第一存儲緩沖器內(nèi)加載數(shù)據(jù)塊。依據(jù)一個實施例,所述數(shù)據(jù)塊的大小如圖1中描述的那樣由RTMOV操作的2DQ/2Q參數(shù)所確定。因此,根據(jù)RTMOV操作的數(shù)據(jù)類型,將加載包含由存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊到高速緩沖存儲器400內(nèi)。最后,在過程塊790,CPU可以執(zhí)行由存儲器存取指令請求的數(shù)據(jù)的非橫向順序存取。
現(xiàn)在參見圖13,圖13描述了說明另一種方法706的流程圖,該方法用于檢測在第一存儲緩沖器諸如如圖6所述的RT高速緩存400中由存儲器存取指令請求的數(shù)據(jù)的高速緩存器命中/未命中。在過程塊708處,確定所述存儲器存取指令指示的目標(biāo)地址。一旦確定了,在過程塊710處,屏蔽所述目標(biāo)地址以形成屏蔽的目標(biāo)地址。一旦形成了屏蔽的目標(biāo)地址,就在過程塊712處,確定所述屏蔽的目標(biāo)地址是否與標(biāo)記地址相匹配。當(dāng)檢測到匹配時,則在過程塊713處確定高速緩存器命中。否則,在過程塊714處檢測到高速緩存器未命中。
現(xiàn)在參見圖14,圖14描述了另一方法722的流程圖,所述方法722用于在如圖12所述的過程塊720中將數(shù)據(jù)塊加載到第一存儲緩沖器內(nèi)。在過程塊724處,RT-高速緩存器400將向一個或者多個第二存儲緩沖器發(fā)出一個數(shù)據(jù)請求。如參考圖6描述的那樣,RT-高速緩存器400將向一級高速緩存器160-1和二級高速緩存器160-2發(fā)出一個數(shù)據(jù)請求。
接下來,在過程塊774處,從一個或者多個第二存儲緩沖器中的一個第二存儲緩沖器中接收包含請求的數(shù)據(jù)的數(shù)據(jù)塊。如描述的那樣,所述一個或者多個第二存儲緩沖器指如圖6所述的計算機(jī)系統(tǒng)100的一級高速緩存器160-1和二級高速緩存器160-2。最后,在過程塊776處,所述數(shù)據(jù)塊被加載到RT高速緩沖存儲器400中,在此它被可互換地稱為第一存儲緩沖器。
現(xiàn)在參見圖15,圖15描述了說明另一方法的流程圖,所述方法用于發(fā)出如圖14所述的過程塊724中的數(shù)據(jù)請求。當(dāng)從第二存儲緩沖器中請求和所述存儲器存取指令相關(guān)聯(lián)的數(shù)據(jù)時,在處理塊728處確定是否檢測到高速緩存器未命中。當(dāng)檢測到高速緩存器未命中時,則執(zhí)行過程塊730。否則,執(zhí)行過程塊770。在過程塊730處,例如,CPU110將從外部存儲器104請求包含由存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊。在一個實施例中,如參考圖6說明的那樣,CPU110將從主存儲器104請求數(shù)據(jù)塊。
在過程塊740處,包含請求的數(shù)據(jù)的數(shù)據(jù)塊被加載到一個或者多個第二存儲緩沖器中,例如,加載到如圖6所述的一級高速緩存器160-1和二級高速緩存器160-2中。然而,當(dāng)在所述一個或者多個第二存儲緩沖器中檢測到高速緩存器命中時,在過程塊770處,所述數(shù)據(jù)塊從包含請求的數(shù)據(jù)的一個第二存儲緩沖器(160-1/160-2)中被選擇出來。最后,在過程塊772處,包含請求的數(shù)據(jù)的數(shù)據(jù)塊被提供給第一存儲緩沖器,例如提供給RT高速緩沖存儲器400。
現(xiàn)在參見圖16,圖16描述了說明另一方法732的流程圖,該方法732用于從如圖15所述的過程塊730中的外部儲存器104中請求所述數(shù)據(jù)塊。在過程塊734處,請求數(shù)據(jù)的數(shù)據(jù)類型被確定為字節(jié)或者多倍字節(jié),例如字或者雙字等。一旦確定了數(shù)據(jù)類型,就在過程塊736處確定請求的數(shù)據(jù)的這樣的塊寬度,塊深度和所述塊寬度就確定了數(shù)據(jù)塊的數(shù)據(jù)大小。最后,在過程塊738處,依據(jù)在過程塊736處確定的數(shù)據(jù)大小,從外部儲存器諸如像例如如圖6所述的主存儲器104中讀取所述數(shù)據(jù)塊。要注意到這個流程圖不僅適用于730,而且還適用于770和790。
現(xiàn)在參見圖17,圖17描述了說明另一方法780的流程圖,所述方法780用于將數(shù)據(jù)加載到如圖12所述的過程塊720的第一存儲緩沖器中。在過程塊782處,確定數(shù)據(jù)塊的塊大小。接下來,在過程塊784處,從一個或多個第二存儲緩沖器例如在圖6中所述的一級高速緩存器和二級高速緩存器160中請求所述數(shù)據(jù)塊。接下來,在過程塊736處,從第二存儲緩沖器中接收所述數(shù)據(jù)塊。最后,在過程塊788處,所述數(shù)據(jù)塊被加載到第一存儲緩沖器的相應(yīng)部分中。例如,參見圖6,根據(jù)與RTMOV操作相關(guān)聯(lián)的數(shù)據(jù)類型,所述數(shù)據(jù)塊將被存儲到如圖6所述的RT高速緩沖存儲器400的字節(jié)部分410、字部分420或者雙字部分430中。
現(xiàn)在參見圖18,圖18描述了說明另一方法792的流程圖,所述方法792用于執(zhí)行如圖12所述的過程塊790中的請求數(shù)據(jù)的非橫向順序存取。在過程塊794處,由存儲器存取操作指示的數(shù)據(jù)類型被確定為字節(jié)或者多倍字節(jié)諸如字、雙字、四倍字之一。接下來,在過程塊796處,依據(jù)所述存儲器存取指令確定塊的深度。接下來,在過程塊798處,從RT高速緩沖存儲器400中縱向地讀取請求的數(shù)據(jù)。最后,在過程塊800處,縱向讀取的數(shù)據(jù)部分被加載到目的地數(shù)據(jù)存儲設(shè)備中。
最后,參見圖19,圖19描述了說明另一方法810的流程圖,所述方法810用于例如從RT高速緩沖存儲器400執(zhí)行所請求的數(shù)據(jù)的非橫向順序存取。在過程塊812處,從第一存儲緩沖器例如像RT高速緩沖存儲器400中執(zhí)行請求數(shù)據(jù)的縱向、順序存儲器讀取。一旦讀取了所述數(shù)據(jù),則執(zhí)行過程塊814。在過程塊814處,依據(jù)所述存儲器存取指令,縱向讀取的數(shù)據(jù)被從第一存儲緩沖器400中加載到目的地數(shù)據(jù)存儲設(shè)備中。
因此,使用本發(fā)明的實施例,RT高速緩存器結(jié)合在此描述的RT加載指令允許在RT高速緩沖存儲器非橫向順序存儲器存取。因此,使用RT高速緩沖存儲器400的CPU可以執(zhí)行數(shù)據(jù)的縱向讀取,所述的數(shù)據(jù)的縱向讀取在圖像處理操作期間被提供。因而,使用本發(fā)明教導(dǎo)的計算機(jī)系統(tǒng)能夠通過使用RT加載操作來響應(yīng)于單個指令執(zhí)行數(shù)據(jù)的縱向讀取數(shù)據(jù),大大地提高例如圖像處理的時間。因而,使用本發(fā)明的教導(dǎo),避免了當(dāng)以非橫向方向處理像素數(shù)據(jù)時所要求的許多轉(zhuǎn)置操作。
在一個實施例中,硬件預(yù)取能夠使用對第一存儲緩沖器的存儲器請求,以便預(yù)取數(shù)據(jù)到RT高速緩存存儲器400中。
替換實施例已經(jīng)描述了用于在RT高速緩存器內(nèi)執(zhí)行數(shù)據(jù)的非橫向順序存儲器存取的RT加載操作的一個實施例的幾個方面。然而,RT加載高速緩存器和RT加載指令的各個實施例提供了許多的特征,它們包括補(bǔ)充、增補(bǔ)、和/或代替如上所述的實施例的特征。在不同的實施例實現(xiàn)中,這些特征能夠被實現(xiàn)為處理器的一部分或者存儲器控制器的一部分。此外,為了解釋起見,上面的描述使用了具體的命名法以提供對本發(fā)明實施例的一個徹底了解。然而,對于本領(lǐng)域的專業(yè)人員來說,顯而易見的是這些細(xì)節(jié)不是實踐本發(fā)明實施例所必需的。
此外,在此描述的一個實施例集中于RT高速緩存器,本領(lǐng)域的技術(shù)人員將要理解本發(fā)明的實施例能夠應(yīng)用于其他的系統(tǒng)。實際上,用于非橫向順序存取的系統(tǒng)屬于本發(fā)明的實施例之內(nèi),并且沒有背離本發(fā)明的范圍和精神。選擇和描述如上所述的實施例是為了最好地說明本發(fā)明的原理和它的實際應(yīng)用。選擇這些實施例以借此允許在本領(lǐng)域的技術(shù)人員利用適用于所考慮的特定使用的各個修改最好地使用本發(fā)明的各個實施例。
將要理解雖然在上述中已經(jīng)闡述了本發(fā)明各個實施例的許多特征和優(yōu)點(diǎn)以及本發(fā)明各個實施例的結(jié)構(gòu)和功能的詳細(xì)信息,但是這個公開僅僅是說明性的。在一些情況下,僅僅用一個這樣的實施例詳細(xì)描述了某些子部件。盡管如此,要認(rèn)識并體會到,這樣的子組件可以在本發(fā)明的其他實施例中使用。可以作出詳細(xì)的改變,尤其是在本發(fā)明原理內(nèi)的部件的結(jié)構(gòu)和管理有關(guān)的部分,可以在由其中表示所附權(quán)利要求的術(shù)語的廣泛的通用意思所指示的最大可能的范圍內(nèi)詳細(xì)地進(jìn)行。
本發(fā)明的實施例相對于已知技術(shù)提供了許多優(yōu)點(diǎn)。在一個實施例中,本發(fā)明包含允許在RT高速緩沖存儲器內(nèi)的非橫向順序存儲器存取的能力。因此,使用RT高速緩沖存儲器400的CPU可以執(zhí)行數(shù)據(jù)的縱向讀取,這在圖像處理操作期間提供。因而,使用本發(fā)明教導(dǎo)的圖形子系統(tǒng)能夠通過使用RT加載操作響應(yīng)于單個指令來執(zhí)行數(shù)據(jù)的縱向讀取,大大地提高圖像處理時間。因而,使用本發(fā)明的教導(dǎo),避免了在以非橫向方向處理像素數(shù)據(jù)時所要求的許多轉(zhuǎn)置操作。
已經(jīng)公開了示例性的實施例和最佳模式,可以對公開的實施例做出修改和變化,同時保持在如以下權(quán)利要求定義的本發(fā)明范圍之內(nèi)。
權(quán)利要求
1.一種方法,包含響應(yīng)于存儲器存取指令,在第一存儲緩沖器內(nèi)檢測所述存儲器存取指令所請求的數(shù)據(jù)的緩沖器命中/未命中;當(dāng)檢測到緩沖器未命中時,依據(jù)所述存儲器存取指令加載一個數(shù)據(jù)塊到第一存儲緩沖器中,所述數(shù)據(jù)塊包含存所述儲器存取指令請求的數(shù)據(jù);以及從第一存儲緩沖器中執(zhí)行由所述存儲器存取指令請求的數(shù)據(jù)的非橫向順序存取。
2.如權(quán)利要求1所述的方法,其特征在于檢測緩沖器命中/緩沖器未命中進(jìn)一步包括確定由所述存儲器存取指令指示的如下目標(biāo)地址,所述目標(biāo)地址對應(yīng)于由所述存儲器存取指令所請求的數(shù)據(jù);屏蔽所述目標(biāo)地址以形成屏蔽的目標(biāo)地址;當(dāng)所述屏蔽的目標(biāo)地址與一個標(biāo)記地址相匹配時,就檢測到緩沖器命中;以及否則,就檢測到緩沖器未命中。
3.如權(quán)利要求1所述的方法,其特征在于 加載所述數(shù)據(jù)塊進(jìn)一步包括向一個或多個第二存儲緩沖器發(fā)出一個對所述存儲器存取指令所請求的數(shù)據(jù)的數(shù)據(jù)請求;從一個或多個所述第二存儲緩沖器中的一個第二存儲緩沖器中接收包含由所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊;以及加載接收到的數(shù)據(jù)塊到第一存儲緩沖器中。
4.如權(quán)利要求3所述的方法,其特征在于發(fā)出數(shù)據(jù)請求進(jìn)一步包括依據(jù)所述數(shù)據(jù)請求,在所述一個或多個第二存儲緩沖器內(nèi)檢測所述存儲器存取指令請求的數(shù)據(jù)的緩沖器命中/緩沖器未命中;當(dāng)檢測到緩沖器未命中時,從外部儲存器中請求包含所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊;一旦接收到所述數(shù)據(jù)塊,則把所述數(shù)據(jù)塊加載到所述一個或多個第二存儲緩沖器中;否則,依據(jù)所述存儲器存取指令,從所述一個或多個第二存儲緩沖器中的一個第二存儲緩沖器中選擇包含所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊;以及向第一存儲緩沖器提供包含所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊。
5.如權(quán)利要求1所述的方法,其特征在于加載所述數(shù)據(jù)塊進(jìn)一步包括依據(jù)所述存儲器存取指令,確定所述數(shù)據(jù)塊的塊大?。灰罁?jù)所確定的塊大小,從一個或多個第二存儲緩沖器中請求數(shù)據(jù)塊;從所述一個或多個第二存儲緩沖器中的一個第二存儲緩沖器中接收所述數(shù)據(jù)塊;以及依據(jù)所述存儲器存取指令,把所述數(shù)據(jù)塊加載到第一存儲緩沖器的相應(yīng)部分中。
6.如權(quán)利要求1所述的方法,其特征在于執(zhí)行非橫向順序存取進(jìn)一步包括把由所述存儲器存取指令指示的數(shù)據(jù)類型確定為字節(jié)和多倍字節(jié)之一;確定由所述存儲器存取指令指示的塊深度;對應(yīng)于所確定的數(shù)據(jù)類型以及依據(jù)所確定的塊深度,從第一存儲緩沖器中讀取數(shù)據(jù)部分;以及依據(jù)所述存儲器存取指令,把每個讀取的數(shù)據(jù)部分加載到目的地數(shù)據(jù)存儲設(shè)備中。
7.如權(quán)利要求1所述的方法,其特征在于執(zhí)行非橫向存取進(jìn)一步包括從第一存儲緩沖器中執(zhí)行由所述存儲器存取指令請求的數(shù)據(jù)的縱向讀??;以及依據(jù)所述存儲器存取指令,把從第一存儲緩沖器中讀取的數(shù)據(jù)加載到目的地數(shù)據(jù)存儲設(shè)備中。
8.如權(quán)利要求4所述的方法,其特征在于請求數(shù)據(jù)塊進(jìn)一步包括把由所述存儲器存取指令指示的數(shù)據(jù)類型確定為字節(jié)和多倍字節(jié)之一;依據(jù)由所述存儲器存取指令指示的數(shù)據(jù)類型確定這樣的塊寬度,從而使得所述塊深度和塊寬度就確定了所述數(shù)據(jù)塊的數(shù)據(jù)大小;依據(jù)所確定的數(shù)據(jù)大小,從外部儲存器中讀取一個數(shù)據(jù)塊。
9.如權(quán)利要求4所述的方法,進(jìn)一步包括在第一存儲緩沖器、第二存儲緩沖器和外部儲存器當(dāng)中維護(hù)包含由所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊的一致性。
10.如權(quán)利要求1所述的方法,其特征在于所述存儲器存取指令是讀指令和寫指令之一。
11.一種裝置,包括一個或多個數(shù)據(jù)緩沖器,被配置成用于支持在其中包含的數(shù)據(jù)的非橫向順序存取,其中所述裝置被配置成用于執(zhí)行如下的一個操作序列,所述操作序列包括響應(yīng)于存儲器存取請求,在所述一個或多個數(shù)據(jù)緩沖器內(nèi)檢測由所述存儲器存取請求所請求的數(shù)據(jù)的緩沖器命中/未命中;當(dāng)檢測到緩沖器未命中時,加載如下的一個數(shù)據(jù)塊到所述一個或多個數(shù)據(jù)緩沖器中的、依據(jù)所述存儲器存取請求選擇的一個數(shù)據(jù)緩沖器中,所述數(shù)據(jù)塊包含由所述存儲器存取請求所請求的數(shù)據(jù);以及從選擇的數(shù)據(jù)緩沖器中執(zhí)行由所述存儲器存取請求所請求的數(shù)據(jù)的非橫向順序存取。
12.如權(quán)利要求11所述的裝置,其特征在于檢測緩沖器命中/緩沖器未命中的操作進(jìn)一步包括確定由所述存儲器存取請求指示的如下目標(biāo)地址,所述目標(biāo)地址對應(yīng)于由所述存儲器存取請求所請求的數(shù)據(jù);屏蔽所述目標(biāo)地址,以形成屏蔽的目標(biāo)地址;當(dāng)所屏蔽的目標(biāo)地址與一個標(biāo)記地址相匹配時,就檢測到了緩沖器命中;以及否則,檢測到了緩沖器未命中。
13.如權(quán)利要求11所述的裝置,其特征在于加載所述數(shù)據(jù)塊的操作進(jìn)一步包括向一個或多個第二數(shù)據(jù)緩沖器發(fā)出一個對所述存儲器存取請求所請求的數(shù)據(jù)的數(shù)據(jù)請求;接收包含由所述存儲器存取請求所請求的數(shù)據(jù)的數(shù)據(jù)塊;以及依據(jù)所述存儲器存取請求,把所接收的數(shù)據(jù)塊加載到所選擇的數(shù)據(jù)緩沖器的相應(yīng)部分中。
14.如權(quán)利要求13所述的裝置,其特征在于發(fā)出數(shù)據(jù)請求的操作進(jìn)一步包括依據(jù)所述數(shù)據(jù)請求,在一個或多個第二存儲緩沖器內(nèi)檢測存儲器存取指令所請求的數(shù)據(jù)的緩沖器命中/緩沖器未命中;當(dāng)檢測到緩沖器未命中時,從外部儲存器中請求包含由所述存儲器存取指令請求的數(shù)據(jù)的數(shù)據(jù)塊;一旦接收到所述數(shù)據(jù)塊,就把所述數(shù)據(jù)塊加載到所述的一個或多個第二存儲緩沖器中;否則,依據(jù)所述存儲器存取指令,從所述一個或多個第二存儲緩沖器中的一個第二存儲緩沖器中選擇包含存儲器存取指令所請求的數(shù)據(jù)的數(shù)據(jù)塊;以及向所選擇的數(shù)據(jù)緩沖器提供包含存儲器存取指令所請求的數(shù)據(jù)的數(shù)據(jù)塊。
15.如權(quán)利要求13所述的裝置,其特征在于加載數(shù)據(jù)請求的操作進(jìn)一步包括依據(jù)所述存儲器存取指令確定數(shù)據(jù)塊的塊大小;依據(jù)所確定的塊大小,從所述的一個或多個第二數(shù)據(jù)緩沖器中請求數(shù)據(jù)塊;從所述的一個或多個第二存儲緩沖器中的一個第二存儲緩沖器中接收所述數(shù)據(jù)塊;以及依據(jù)所述存儲器存取指令,把數(shù)據(jù)存儲到所選擇的數(shù)據(jù)緩沖器的相應(yīng)部分中。
16.如權(quán)利要求11所述的裝置,其特征在于執(zhí)行非橫向順序存取的操作進(jìn)一步包括把由所述存儲器存取請求指示的數(shù)據(jù)類型確定為字節(jié)和多倍字節(jié)之一;確定由所述存儲器存取請求指示的塊深度;對應(yīng)于確定的數(shù)據(jù)類型以及依據(jù)確定的塊深度,從選擇的數(shù)據(jù)緩沖器中讀取數(shù)據(jù)部分;以及依據(jù)所述存儲器存取請求,把每個讀取的數(shù)據(jù)部分加載到目的地數(shù)據(jù)存儲設(shè)備中。
17.如權(quán)利要求11所述的裝置,其特征在于執(zhí)行非橫向順序存取的操作進(jìn)一步包括從選擇的數(shù)據(jù)緩沖器中執(zhí)行由存儲器存取請求所請求的數(shù)據(jù)的縱向讀?。灰约耙罁?jù)所述存儲器存取請求,把從第一存儲緩沖器中縱向讀取的數(shù)據(jù)加載到目的地數(shù)據(jù)存儲設(shè)備中。
18.如權(quán)利要求11所述的裝置,其特征在于所述一個或多個存儲緩沖器進(jìn)一步包括一個或多個多倍字節(jié)數(shù)據(jù)緩沖器,以便使所述多倍字節(jié)數(shù)據(jù)緩沖器支持對包含在其中的相應(yīng)多倍字節(jié)數(shù)據(jù)的非橫向順序存取。
19.如權(quán)利要求11所述的裝置,進(jìn)一步包括一個或多個并行寫端口;一個或多個讀端口;以及一個或多個存儲器轉(zhuǎn)置電路,用于從選擇的數(shù)據(jù)緩沖器中執(zhí)行由存儲器存取請求所請求的數(shù)據(jù)的非橫向順序存取。
20.如權(quán)利要求11所述的裝置,進(jìn)一步包括一個或多個數(shù)據(jù)混洗器,用于從選擇的數(shù)據(jù)緩沖器中執(zhí)行由存儲器存取請求所請求的數(shù)據(jù)的非橫向順序存取。
21.一個系統(tǒng),包括第一存儲緩沖器,經(jīng)由一總線耦合到執(zhí)行單元,所述第一存儲緩沖器被配置為允許對包含在其中的數(shù)據(jù)的非橫向順序存??;以及一個或多個第二存儲緩沖器,經(jīng)由所述總線耦合到執(zhí)行單元,以便響應(yīng)來自執(zhí)行單元的存儲器存取請求,在檢測到緩沖器未命中時,把數(shù)據(jù)加載到第一存儲緩沖器中。
22.如權(quán)利要求21所述的系統(tǒng),進(jìn)一步包括一個或多個共同執(zhí)行單元,經(jīng)由一系統(tǒng)總線耦合到執(zhí)行單元。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于第一存儲緩沖器進(jìn)一步包括一個或多個多倍字節(jié)數(shù)據(jù)緩沖器,被配置為支持對包含在其中的多倍字節(jié)數(shù)據(jù)的非橫向順序存取。
24.如權(quán)利要求21所述的系統(tǒng),其特征在于第一存儲緩沖器被配置為執(zhí)行一個操作序列,所述操作序列包括響應(yīng)于來自執(zhí)行單元的存儲器存取請求,在第一存儲緩沖器內(nèi)檢測由存儲器存取請求所請求的數(shù)據(jù)的緩沖器命中/未命中;當(dāng)檢測到緩沖器未命中時,依據(jù)所述存儲器存取請求從第二存儲緩沖器中加載一個數(shù)據(jù)塊到第一存儲緩沖器中,所述數(shù)據(jù)塊包含由存儲器存取請求所請求的數(shù)據(jù);以及從第一存儲緩沖器中執(zhí)行由存儲器存取請求所請求的數(shù)據(jù)的非橫向順序存取。
25.如權(quán)利要求24所述的系統(tǒng),其特征在于執(zhí)行非橫向順序存取的操作進(jìn)一步包括從第一存儲緩沖器中執(zhí)行由存儲器存取請求所請求的數(shù)據(jù)的縱向讀取;以及依據(jù)所述存儲器存取請求,從第一存儲緩沖器中把縱向讀取的數(shù)據(jù)加載到目的地數(shù)據(jù)存儲設(shè)備中。
26.如權(quán)利要求21所述的系統(tǒng),其特征在于第一存儲緩沖器保持在第一存儲緩沖器和第二存儲緩沖器當(dāng)中的數(shù)據(jù)的一致性。
27.如權(quán)利要求21所述的系統(tǒng),其特征在于所述系統(tǒng)被制造到一個在上面形成了并行總線的布線板上,并且集成電路(IC)芯片封裝可操作地被安裝到所述板上以便使用并行總線進(jìn)行通信,該所述包裝封裝具有如下的IC芯片,所述IC芯片包括處理器和作為處理器和總線之間接口的I/O部分,以便使處理器在第一存儲緩沖器內(nèi)執(zhí)行數(shù)據(jù)的非橫向順序存取。
28.如權(quán)利要求27所述的系統(tǒng),其特征在于所述處理器進(jìn)一步包括耦合到第一存儲緩沖器的執(zhí)行單元;以及耦合到處理器的一個或多個第二存儲緩沖器。
29.如權(quán)利要求27所述的系統(tǒng),其特征在于所述IC芯片進(jìn)一步包括耦合到并行總線的協(xié)處理器,包含一個或多個外部存儲緩沖器。
30.一種包含如下程序指令的計算機(jī)可讀存儲介質(zhì),當(dāng)所述程序指令由處理器執(zhí)行時指導(dǎo)計算機(jī)以一種指定的方式起作用,所述程序指令包含響應(yīng)于存儲器存取指令,從存儲緩沖器中執(zhí)行由存儲器存取指令所請求的數(shù)據(jù)的非橫向順序存取。
31.如權(quán)利要求30所述的計算機(jī)可讀存儲介質(zhì),其特征在于執(zhí)行非橫向順序存取進(jìn)一步包括從第一存儲緩沖器中執(zhí)行由所述存儲器存取指令請求的數(shù)據(jù)的縱向讀??;以及依據(jù)所述存儲器存取指令,將從第一存儲緩沖器中讀取的數(shù)據(jù)加載到目的地數(shù)據(jù)存儲設(shè)備中。
32.如權(quán)利要求30所述的計算機(jī)可讀存儲介質(zhì),其特征在于存儲器存取指令是讀指令和寫指令之一。
全文摘要
描述了一種便于具有通用讀/寫模式的存儲器數(shù)據(jù)存取的裝置和方法。在一個實施例中,所述方法包括響應(yīng)于加載指令,在重布置的(RT)高速緩存器內(nèi)檢測所述加載指令請求的數(shù)據(jù)的高速緩存器命中/高速緩存器未命中。當(dāng)檢測到高速緩存器未命中時,依據(jù)加載指令把一個數(shù)據(jù)塊加載到RT高速緩存器中。這個數(shù)據(jù)塊將包含加載指令所請求的數(shù)據(jù)。一旦被加載了,就從RT高速緩存器中執(zhí)行由加載指令所請求的數(shù)據(jù)的非橫向順序存取。最后,從RT高速緩存器中存取的數(shù)據(jù)可以依據(jù)加載指令被存儲到目的地數(shù)據(jù)存儲設(shè)備中。
文檔編號G06F12/08GK1501259SQ20031011984
公開日2004年6月2日 申請日期2003年10月10日 優(yōu)先權(quán)日2002年10月10日
發(fā)明者Y·-K·陳, E·德比斯, M·J·霍林曼, M·M·楊, Y -K 陳, 人, 楊, 霍林曼 申請人:英特爾公司