TWI249103B - Method and system for optimally sharing memory between a host processor and graphics processor - Google Patents

Method and system for optimally sharing memory between a host processor and graphics processor Download PDF

Info

Publication number
TWI249103B
TWI249103B TW092112344A TW92112344A TWI249103B TW I249103 B TWI249103 B TW I249103B TW 092112344 A TW092112344 A TW 092112344A TW 92112344 A TW92112344 A TW 92112344A TW I249103 B TWI249103 B TW I249103B
Authority
TW
Taiwan
Prior art keywords
processing unit
central processing
pattern
shared memory
memory
Prior art date
Application number
TW092112344A
Other languages
English (en)
Other versions
TW200405170A (en
Inventor
David A Wyatt
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200405170A publication Critical patent/TW200405170A/zh
Application granted granted Critical
Publication of TWI249103B publication Critical patent/TWI249103B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

1249103 玖、發明說明: 【發明所屬之技術領域】 本發明係關於電腦圖樣系統,且更特別是最佳化由中央 處理單7C (中央處理單元)與圖樣處理器使用之共享記憶體。 【先前技術】 在許多習知電腦系統中,主中央處理單元可執行一經呼 叫用於施行圖樣操作之應用程式。為實施此圖樣操作,該 應用私式通常會從離線儲存(包括但不限於網路、CD或硬碟 儲存)取得原始騎資料與基本㈣(包括但不限於紋理、幾 何元狀、棱型等),而後在線上系、統記憶體内產生該圖樣資 1、基本貝料的一稷本。該應用程式可在該線上系統記憶 體内之圖樣像素、資料模型與基本資料上操作,而是在某 個:間,該應用程式可呼叫電腦系統之圖樣處理器在該圖 樣資料與基本資料上换作, ^ σ 、 a 乍、吊疋為了減輕主中央處理單 元之低層級圖形描繪工作。 依據習知之實施,告由兮同 、 I她田由该圖樣處理器行使操作時,應用 $式會屋生供圖樣處理器操作之圖樣資料與基本資料的一 =7’而與原先從離線儲存載入線上系統記憶體之版 弟 刀離足稷本(其在此可稱為一別名, aliased複本)通常可冒#人 憶體-區域内,二=圖樣記憶體,|之線上系統記 各細“L 經設定由該圖樣處理器使用。 圖檢β己IS fa之貫施係先前 ® ^ M iA 4- 白知技術。例如,離散附加 圓I轉接卡可含有由該卡 、卜,油 專用記憶體匯流排局部連接 4圖樣圮丨思體;此通常是、 8侧 為局邵視頻記憶體”。另一範 1249103 J在具有習知英特爾(Intel®)集線器架構之晶片組内, :經指足為先進圖樣連接蜂(AGP)記憶體的㈣記憶體之 品或係用作圖樣c憶體。AGp記憶體也可稱為"非局部視頻 記憶體”。 、 β圖^處理$通常會在圖樣記憶體内圖樣資料之別名複 本U乍&時間。通常,含有圖樣資料之別名複本圖樣的 »己憶體會被指疋為在該主中央處理單元之記憶體頁特性表 中的-未快取特性,意指存取該圖樣資料之應用程式將不 會利用f!j王巾央處理單元之快取,同時在此未快取圖樣記
It to區域中尤孩資料將由圖樣處理器處理。在未快取後, 別名複本已由該圖樣處理器處理—段時間,其通常將必須 =到應用程^供進—步處理該圖樣資料。然而,依據上述 貫施’應用程式會在⑽記憶體之圖樣資料複本上操作。 j系統記憶體通常已被指定—快取特性,使得該中央處理 單元可以一快取模式施行該應用程式之操作。如吾人已熟 知’藉由中央處理單元之快取操作允言午中央處理單元比Z 快取之操作更具效率。 為了使應用程式在該圖樣處理器後能繼續在該圖樣資料 上操作,由該圖樣處理器對該別名複本之改變,當然必須 反映在由應用程式使用之系統記憶體的該複本内。 該應用程式可繼續以快取模式處理在系統記憶體内之複 本達一段時間,而後再度將處理轉交該圖樣處理器。當然, 在該系統記憶體内複本的改變,當該圖樣處理器再接手時 必須反映在該圖樣記憶體之該別名複本内。上述介於該應 84668 1249103 用程式與該圖樣處理器間之交換可重複許多次。 應瞭解前述配置伴隨著缺點。一缺點在於必須維持相同 圖樣資料的二複本,耗費了可貴的系統記憶體資源。此外, 可貴之中央處理單元頻帶寬被耗費在產生與維持該等二個 分離複本’特別是在跨過多數介面間之匯流排而在二複本 之間傳送個別的更新版時。 不涉及如上述維持二圖樣資料之實施方式係吾人已知。 依據一此類實施,可快取系統記憶體可由一圖樣處理器用 作一圖樣記憶體,而該圖樣處理器以及主中央處理單元施 仃操作於該圖樣記憶體上之圖樣資料。如上述,該圖樣處 理器與該主中央處理單元輪流在該圖樣資料上操作。因為 孩元憶體係可快取,該中央處理單元能以快取模式操作以 改進效率。 然而,此方式會導致資料"不一致"之可能性。意即,因 為该中央處理早7C以快取模式使用該圖樣記憶體,該圖樣 處理器已要求施行操作之資料可能尚未被清洗(即從該快 取逐出且k通圖樣記憶體窝出)。而是,該資料可能駐留在 該中央處理單it内部與快取之間某處,尚未真正達 到該圖樣記憶體。因此’當該圖樣處理器進入該圖樣記憶 to以止圖Α Θ *求貝料上施行操作時,其可能無法發現該 而求具料之取新版本。而是在該圖樣記憶體内之資料可能 是”過時Π。或更糟的县,々二、 勺疋在琢圖樣處理器已完全進入該資 料位置時,該資料可能外此I、 , 卞Jk f夬取記憶體清空,因而使該操作 失效。 84668 1249103 為處理不一致之問題,晶片組"探察循環,,業經使用。探 察循環係關於該圖樣處理器造成在該圖樣處理器被允許進 入該圖樣記憶體前,該晶片組強制使該中央處理單元快取 與相關圖樣記憶體-致。然而,探察循環伴隨需求一相當 多量之額外負擔的缺點,而減低了系統效能。探察循環以 -位置接著位置之基礎檢查記憶體資料,且如果該需求位 置之資料仍留在該中央處理單元之快取記憶體中,其將被 抽取且以位置接著位置之基礎使其一致。此操作需求在介 面間大量之”交握”’且因為其必須在—位置接著位置或線 接著線之基礎上施行,因此是無效率的。 依據又另-實施,圖樣記憶體是純粹以一未快取模式使 用。在此方法中’在該圖樣記憶體中之資料永遠保持一致, 因為只要當孩中央處理單元希望從該圖樣記憶體將資料讀 出或窝入時,該寫人永遠會直接與立即到達該圖樣記憶體 且水遠不會快取。然而’與此方法有關之㈣在於將不改 進由快取操作提供之中央處理單元效能。 有4皿万、上述(考慮,需求可克服現存實施之缺失的方法 與系統。 【發明内容】 本發明係揭示用於在電腦系統中之—或多數個中央處理 早凡上執行之應用程式與加速協同處理 器)之間共享記憶體之方法鱼手續, 、 /、糸、、死其中孩記憶體可維持其 84668 利於中央處理單元與圖樣處理器二者之最大效能的最佳 W。存取特性m法係關於在處理將該共享記憶體 1249103 置於下一個所有者觀點前,使得該共享記憶體中所有權之 #伤與相關之先前所有者—致。此隨意性可涉及其中所 有‘:系仗-用戶轉變至另-者之介面。在此所有權轉變 中,可猎由主動地改變該共享記憶體處理器之快取特性, 以及經由使用處理器低層快取控制指令及/或具有增強資 料一致性功能之圖樣處理器描繪清洗演算法,將該記憶體 之所有權從一觀點改變至另一者。本發明之具體實施例有 助於使共享該資料之所有用戶有最大存取效率,而不會產 生在用戶之間移動或複製資料時之額外負擔。 【實施方式】 在依據本發明方法與系統之具體實施例中,會提供具有 根據該最佳化共享記憶體是由一主中央處理單元或由一圖 樣處理器使用而指定快取特性的一最佳化共享圖樣記憶 體。所指定予該最佳化共享記憶體之特性,係經選擇以致 當該中央處理單元是使用該最佳化共享記憶體時有利於該 中央處理單元之效能,且當該圖樣處理器是使用該最佳化 共旱記憶體時有利於該圖樣處理器之效能。 依據孩具體實施例,指定予該最佳化共享記憶體之快取 特性可在主中央處理單元是使用該最佳化共享記憶體之模 式’與圖樣處理器是使用該最佳化共享記憶體之模式間轉 變時加以改變。 ^ 4中央處理單元是使用該最佳化共享記憶體時,指定 予其之特性可為一快取特性。在本文中,”快取特性,,意指 能夠由該中央處理單元以其内部時鐘速度操作,指定予該 84668 -10- 1249103 取佳化共旱記憶體之資料邵份可首先轉移至該中央處理單 元之快取記憶體且在其上運作。當一轉變發生至其中該圖 樣處理器將在該最佳化共享記憶體内運作該資料的一模式 時,在該中央處理單元之快取記憶體中之資料將會一致, 而才日足丁為取佳化共子€丨思體之快取特性可改變成未快取 特性。本文中,π未快取之特性"意指在讀與寫操作時,不 會由該中央處理單元之快取記憶體取得資料。而是,該資 料直接從該外部系統記憶體匯流排流至該系統記憶體,如 同不存在快取記憶體。 在其他具體實施例中,該最佳化共享記憶體可永遠被指 定一快取特性,但當轉變至其中該圖樣處理器將在該最佳 化共卓記憶體中運作該資料的一模式時,該中央處理單元 之快取記憶體中之資料將成為一致。在進行該轉變前強制 一致之一優勢在於,可避免探察循環與其對效能之相關損 咅’因為該圖樣處理器之直接記憶體存取(DMΑ)可處理該 最佳化共享記憶體如同其早已一致。由該圖樣控制器施行 中央處理單元快取記憶體探察循環之需求得以避免,且該 取佳化共旱記憶體可有效地處理,如同其早已以該未快取 特性使用。 以下圖1與2之討論描述如何依據習知技術提供一 ”可共 旱π圖樣記憶體區。應瞭解以下所使用之"可共享”,與依據 本發明之具體貫施例之’’最佳化共享”須加以區別,如以下 之更詳細說明。 圖1顯示由英特爾公司製造之電腦系統的元件,其係市售 84668 -11 - 1249103 在使用整合式繪圖之一替代性具體實施例中,則只提供 一圖樣開口的一映射(對圖樣處理器與主中央處理單元二 者均為可視)。 圖2示範用於提供可共享圖樣記憶體之系統的另一可能 性真體實施例。在圖2之具體實施例中,圖樣功能並未與整 體系統整合,而是由一分離之π附加式π圖形卡提供。該附 加式卡可插入該整體電腦系統的一 AGP(先進圖形連接璋) 或PCI(周邊組件互連埠1 2)或其他π插孔”,或轉接卡介面。 在圖2所顯示之附加卡系統中,可共享圖樣記憶體可設置 如下。一GART(圖樣開口浮動表)209映射系統記憶體頁202 進入實體位址空間200之AGP(先進圖樣連接埠)記憶體區 205中。AGP記憶體區205對一經由圖樣處理器單元(GPU) 管線206與AGP匯流排之圖樣處理器係可視的。 該AGP記憶體區205對連接中央處理單元管線203之主中 央處理單元也是可視的。一主中央處理單元頁表204(可由 中央處理單元管線203存取)維持該AGP記憶體205的一映 射(對應於該GART209映射)。頁表204也維持系統記憶體頁 202的一直接映射(即如上述的一 ’’虛擬映射")。由該GART 209維持該AGP記憶體區205之映射,與由該主中央處理單 元頁表204維持之虛擬映射是彼此不同的,因為各自分別映 -13- 1 請參考相關文獻,例如:1· Accelerated Graphics Port Interface Specification,Revision 1.0, Intel Corporation, July 31 1996; 2. Accelerated Graphics Port Interface Specification, Revision 2.0, Intel Corporation, May 4 1998; and 3. Revision 3.0 Draft Version 0.95, Intel Corporation,June 12 2001。 2 請參考相關文獻,例如:PCI Special Interest Group (SIG) PCI Local Bus Specification, Revision 2.2, published December 18, 1998; BCPR Services Inc. EISA Specification, Version 3.12, 1992, published 1992; USB Specification, Version 1.1, published September 23, 1998; or other specifications relating to comparable peripheral buses。 84668 1249103 射位址於實體位址空間之非重叠範圍中,但各對應至相同 系統記憶體頁。二種映射對由—主中央處理單元執行之應 用程式均係可视的。因&,可提供對圖樣處理器與主中央 處理單70二者均為可視的一可共享記憶體區域。 如圖2所顯示之附加卡系統也可包括映射至一圖樣開口 207之局部視頻記憶體208。 如上述,藏中央處理單元與圖樣處理器可在該記憶體之 相同區域内的資料上實施操作。個別的存取通常是串列式 而非同時施行。意即,通常由該中央處理單元執行的一應 用程式可產生需要由該圖樣處理器操作之資料,且該中央 處^單元可將資料寫至該圖樣記憶體。於是,該應用程式 可人遞處理予該圖樣處理器,要求其以該資料施行一些 描繪功能。當該圖樣處理器結束施行所要求之操作時,其 可能隨後將處理傳回予該應用程式。 j考慮上述交遞處理時,本發明之具體實施例使得該可 共享記憶體能夠以最佳化方式加以使用。因此,在下文中 當該可共享記憶體係依據本發明之具體實施例產生或修改 時’其係稱為"最佳化共享記憶體,,。 圖3係示範依據本發明之具體實施例在該中央處理單元 與圖樣處理器之間交遞的一狀態圖。圖3顯示在該中央處理 單兀使用取佳化共享記憶體的一模式,與該圖樣處理器使 用最佳化共享記憶體的一模式二者間之轉變。為利說明, 當該中央處理單元是使用該最佳化共享記憶體時,該最佳 化共旱圮憶體可稱為在一"中央處理單元觀點”、”中央處理 84668 -14- 1249103 單元最佳化觀點”或”中央處理單元最佳觀點”,同時當該圖 樣處理器是使用該最佳化共享記憶體時,該最佳化共享記 憶體可稱為在一,,圖樣觀點”、”圖樣最佳化觀點”或”圖樣最 佳觀點π。 橢圓302代表該最佳化共享記憶體是在一圖樣處理器觀 點的一段時間。該觀點可為,,最佳化”,是在於會指定該最 佳化共享記憶體一快取特性,使得其有利於該圖樣處理器 之效能。 在該最佳化共享記憶體之圖樣最佳化觀點與該中央處理 單元最佳化觀點間可以有一轉變相位。依據本發明之具體 貫施例,在該轉變相位介於該圖樣最佳化觀點與中央處理 單元最佳化觀點之間時,可指定有利於該中央處理單元效 能之該最佳化共享記憶體特性。 該轉變相位可包括在橢圓3〇3中指出之一,,鎖定,,操作。該 鎖定是引用一可依據本發明之具體實施例使用的習知 API(>C用私式介面)。該鎖定Αρι可由該中央處理單元所執 仃的一應用程式加以呼叫。通常一鎖定Αρι會保留一記憶體 區域供提出該鎖定的一應用程式專用。 橢圓300代表該最佳化共享記憶體是在_中央處理單元 觀曰點的-段時間。依據本發明之具體實施例,該觀點可為 取佳化疋在於,已指定該最佳化共享記憶體一快取特 ^使得其有利於該中央處理單元之效能(如,該最佳化共 子隐把可為丨失取)。特別是(例如)該最佳化共享記憶體可 被指定一白-黑特性。 84668 -15- 1249103 在該最佳化共享記憶體之圖樣最佳化觀點與該中央處理 單7L最佳化觀點間可以有一轉變相位。依據本發明之具體 貫施例,在該轉變相位介於中央處理單元最佳化觀點與該 圖樣最佳化觀點之間時,可指定有利於該圖樣處理器之效 能的該最佳化共享記憶體特性。 為备乂相位可包括在橢圓3 〇 1中指出之一 ”解鎖”操作。該 解鎖引用一可依據本發明之具體實施例使用的習知Αρι(應 用程式介面)。該解鎖API可由該中央處理單元所執行的一 應用程式加以呼叫。通常一解鎖API會不作用或使先前的一 --乂足API反向&作。该應用程式可呼叫該解鎖A?〗以通知該 圖樣處理器,此時該中央處理單元將不再使用該最佳化共 享記憶體,且該最佳化共享記憶體目前可由該圖樣處理器 存取。 。。依據本發明之具體實施例,#該轉變相位從該中央處理 單元最佳化觀點成為該圖樣最佳化觀點時,快取記憶體一 致性可如後續將加說明地被”強制,,施於該最佳化共享記憶 體上(即,其可確保在該中央處理單元之快取記憶體内之; 求資料會被送回至記憶體)。 憶 -圖樣”表面"可為駐留在最佳化共享記憶體内經歷如上 述在—中央處理單元最佳化魅與—圖樣最佳化觀點之間 轉變的—種資料。然而通常圖樣表面無 體中。 田杜/、子口己 圖樣表面係用在許多用涂φ | 搞p、、, 干^途中。表面可為從-應用程式轉 土邊圖樣處理器之資料(替如 84668 ,、者如〒令、像素或頂點)的一緩衝 -16- 1249103 器。表面可含有將被顯示在一輸出顯示裝置上或只是將A 送回該應用程式之騎結果。可產生表面用於暫時儲存該 圖樣處理器(巾間結果,且就此對應用程式而言將無須是 可視的。可產生表面用於應用程式之中間儲存與使用,且 就此對該圖樣處理器而言將無須是可視的。 圖4A示範通常稱為”㈣表面”之圖樣表面4〇〇之範例。一 矩形表面通常含有圖樣像素,其水平組織成由像素構成具 有預定間距與見度之掃描線。多數掃描線可垂直地連貫 以形成一表面。此一圖樣表面通常可如此組織以允許傳輸 ^-也具有—特定水平寬度與垂直掃描線數目之輸出顯示 裝置,或允許將該表面當作一紋理貼片描繪至另一表面上 以便隨後被顯示或用於後續操作。 夕該圖樣表面之區域可由其從一基本記憶體位址4〇ι之偏 :與其大小而加以界定’即通常是依從該表面之基本記憶 體位置401至一末端點4〇2之偏移所界定。受界限子區域可 界定於一表面内’諸如受界限子區域4〇3。當一圖樣應用程 式或圖樣處理器是在其上操作時,一受界限子區域可說是 在作用,。在一文界限子區域内的記憶體位置可被界定 為二子區域之基本座;^x,y與離該基本座標之偏移量以,匕, j者表示成該受界限子區域的上、左、右與底邊界之座標。 前述座標系統也可使用以描述該整個表面,藉由相對於該 表面原點之該上、左、底與右的矩形座標。以下一矩形表 面或子區域將會由縮窝之參數RECT (t,1,b,〇來表示, 其中t,1,b,r分別表示相對該表面原點之該上、左、底與 84668 -17- 1249103 右矩形座標。 圖4B顯示通常稱為一"線性表面"之圖樣表面“ο的另一 可能組態。在圖樣表面41〇中,—受界限子區域4ιι延伸橫 過菽表面之間距。對於該受界限子區域411,可特定一開始 偏移(Stan Offset)位址與一長度。在該表面内像素之位址位 置,從孩開始偏移位址以線性增加至一結束位址。以下一 子區域將會由縮寫之參數LIN(。,υ來表示,其中。與!分別 表示相對該表面原點之開始偏移,與該子區域相對該開始 偏移《長度。此表面通常是用作傳送成組之圖樣資料(諸如 描緣命令之列表、眾頂點或頂點指標之列表,或使用視頻 或紋理壓縮技術之已壓縮像素資料之緩衝器。 有關圖3討論之鎖定與解鎖Αρι中,可允許明定某些參 數。廷些參數可包括(例如)只有在一表面内之受界限子區域 會被鎖定或解鎖之規格,或整個表面會被鎖定或解鎖之規 格。通f 一鎖定API與後續解鎖Αρι會具體指定將被鎖定與 後續解鎖之相同受界限子區域或整體表面。 畲產生-圖樣表面且-應用程式正操控在該表面内之像 素時,該表面之部份可駐留在該主中央處理單元之快取記 憶體中-段時間。在該快取記憶體中,當作一單位來處理 之表面資料的-部份稱為該資料之”顆粒度"。圖5顯示當一 =界限子區域(諸如受界限子區域4G3)是駐留在—快取記憶 體中之範例。掃描線N與N+1包含像素與在其上之受界限^ 區域403。 再者,数界限子區域内掃描線N+1之範圍可視為由一 84668 -18- 1249103 ”上’,片段、 全’’片段與一 下”片段構成 下片段具有比一快取線之長度少的範圍, 具有與一快取線之長度相同的範圍。 。各個該’’上,’與 然而該”全,,片段 控制’’基本資料”存在之快取記憶體允許根據_特定顆粒 度以便低層面控制位於該快取記憶體中之資料線,範圍從 -快取線上達所有線。此基本資料可使用以強制位於該快 取屺fe、中一#料範圍内或整個快取記憶體本身為一致。 例如,對於連接一供應邏輯記憶體位址參數之所有快取 線,一稱為”CLFLUSH”(快取線清洗)之習知英特爾⑧奔騰 (Pentmm) 4處理器快取控制指令基本資料,以—等於該快 取線之長度寬顆粒度清洗快取資料。 因此有利的是,依據本發明之具體實施例,一表面的一 受界限子區域可藉由使用諸如clflush的一基本資料以一 f夬取、、泉之長度或更短的片段成為一致。如果以一快取線之 長度或更少的一片段使受界限子區域一致所需時間,比使 用以一具有較粗顆粒度之基本資料或藉由清洗該整個 L1/L2快取記憶體使該受界限子區域一致所需時間要短 時’此一方式可能特別有利。 另一方面,可能以一如上述之片段使該受界限子區域一 致所需之時間量會超過單純清洗該整個L1/L2快取記憶體 所需 < 時間量。以片段使一特定受界限子區域一致所需之 最大時間,可根據該外部記憶體匯流排速度與寬度,及將 以。亥外部匯泥排寬度為單位形成一致之快取區域的大小而 計算出。清洗該整個快取所需之最大時間,同樣可根據該 84668 -19- 1249103 快取心大小與該外部記憶體匯流排速度與寬度,以及其他 處理器之額外負擔而計算出。依據以下將詳加說明之本發 :具體實施例,以片段使—特定受界限子區域—致所需之 瑕大時間,將與清洗該整個快取記憶體所需之最大時間相 比較’而花費最少時間之方式將可使用以使該受界限子區 域一致。 另一基本資料,以一頁之顆粒度清洗快取資料之”快取頁 清洗"(CPFLUSH)是吾人已知。在特定情況下,—快取頁清 洗可比一快取線清洗要較快且較具效率。同理,較大顆粒 度之快取記憶體中可易於預期。例如,—,,實體位址區域快 取清洗’’基本資料可有效率地強制關聯一實體頁(如4 KB) 記憶體或以上之圖樣像素資料之所有線一致。 依據本發明具體實施例之最佳化共享記憶體,可在某些 情況下產生與使用。一應用程式可明顯地說明其希望產生 與使用最佳化共享記憶體。另—方面,最佳化共享記憶體 可明顯地提供予一應用程式,即無須使該應用程式明瞭其 係使用最佳化共享記憶體。 在妁面之情形中,一圖樣驅動器可首先列舉或,,公佈,,予 一應用程式(由該繪圖子系統支援之表面型式的一列表),而 後孩應用程式可從該最佳化共享型式之記憶體區域之列表 與而求配置選擇該”最佳化共享”型式。要配置一最佳化共 旱記憶體區域,一應用程式可能會要求(經由一 API至該圖 樣驅動器)一具有先前列舉之最佳化共享型式之記憶體區 域。例如,該應用程式可能會要求產生一具有最佳化共享 84668 -20- 1249103 記憶體型式之圖樣表面。 在後者之情形,應用程式可能不會獲得如上述之列舉 表,而是由該圖樣驅動器將最佳化共享記憶體明顯地或”幕 後’f提供予該應用程式。該圖樣驅動器基於從應用程式接 收之資訊可依據一 ’’使用策略”決定使用最佳化共享記憶 體。例如,與其從一列舉表明白地選擇該最佳化共享記憶 體,該應用程式可經由從該應用程式以一圖樣的API傳至該 圖樣驅動器之”提示”指出其希望如何使用一圖樣表面。提 示之範例包括指明(例如)該應用程式將讀自/寫至該表面、 或該表面將只是不透明的(只供寫入,例如只用作圖樣處理 务描緣之目標而永不會由該應用程式讀回)的資訊。根據提 示’該圖樣驅動器可(對該應用程式明顯地)根據效能如何增 強之評估配置一最佳化共享記憶體表面且指定其快取特 性。 在又另一具體實施例中,該圖樣驅動器可(在評估用途與 命令後)決定先前以一記憶體型式或位置產生之圖樣記憶 體’可能最適合改變成一最佳化共享型式。其次在稍後, 该圖樣記憶體型式可根據該應用程式之存取用途模式的一 反轉,變回該原始型式及/或位置。 如先前所指出,在本發明之具體實施例中,該最佳化共 享記憶體可根據該最佳化共享記憶體是要由該中央處理單 元或泫圖樣處理器使用而指定快取特性。當一轉變發生在 該中央處理單元觀點與該圖樣處理器觀點間或相反時,該 指定特性可加以改變。當從該中央處理單元觀點轉變至該 84668 -21 - 1249103 圖樣處理器觀點時,在該中央處理單元快取記憶體中之資 料可在將該最佳化共享記憶體交遞予該圖樣處理器前成為 一致。此具體實施例可有利於使用,例如當一應用程式未 明顯地指出其需要最佳化共享記憶體時,而是由該圖樣驅 動器動態決定(如經由上述之提示)最佳化共享記憶體應如 何使用。在此情況下,該圖樣記憶體可能已是”舊型”,即 已被用作另一型式。 另一方面,依據其他具體實施例,該最佳化共享記憶體 可永遠具有一快取特性(即所指定之特性不發生改變)。此具 體貫施例可有利於使用,例如當一應用程式從開始決定其 希望產生與使用最佳化共享記憶體。在此具體實施例中, 當從該中央處理單元觀點轉變至該圖樣處理器觀點時,在 該中央處理單元之快取記憶體中之資料可在將該最佳化共 享記憶體交遞予該圖樣處理器前使其一致。為了不觸發探 察循環,當該最佳化共享記憶體是在該圖樣處理器觀點 時,蔹圖樣處理器之記憶體介面引擎可經由可程式dma暫 存器設定、經由該圖樣處理器頁表項目之頁特性或藉由其 他方式接受指令,以視同該最佳化共享記憶體如其未快 取。大多數處理器通常會支持視圖樣記憶體為未快取而不 管該中央處理單元頁表之快取特性設定,因為大多數對一 致之解決方法是以用圖樣記憶體為未快取作為中心。然而 於該記憶體之該中央處理單元頁表項目中,該記憶體 繼續具有一快取特性。 其中該指定特性會在該中央處理單元觀點與圖樣處理器 84668 -22- 1249103 將先在下文中詳加說 觀點間之轉變時改變的具體實施例 明。 圖6顯示根據該表面會在何 ^ 規,,、、占而用於設定一最佳化共 享記憶體表面之快取特性的流程圖。 /、 一最佳化共享表面可如方塊6〇〇 兄〇υυ所頌不開始產生,當一表 面產生時,各種資料結構可關聯 J外土咸表面以有利於在其上 操作。例如,依據一具體實施例 只她灼,一獨一識別符或,,表面處 理兀,handle”可關聯至該表面且去 叫且田作對孩表面的一指向 符。此表面處理元可進-步指向表面-物件處理元",並 隨後指向-”表面-物件”。該表面,件可包括專用資料結 構’包括如記憶體型式描述元(如,該記憶體是否是最佳化 共享):該表面之記憶體基本偏移、像素景深、大小(寬度、 高度)之資訊,及該表面之其他特徵。該專用資料結構也可 包括含有關於該表面-物件之資訊的"部件,,。 在產生如方塊600所顯示之最佳化共享記憶體表面後,該 記憶體之特性可根據該表面之觀點如方塊6〇ι中所決定而 加以設定。 如該表面會是以該圖樣處理器之觀黑占,該表面之特性可 設定為該白-組合(或未快取)特性,如方塊6〇2所顯示。接著 在該2面-物件中,可設定一型式描述元"標籤”指出此記憶 體目前是最佳化映射予圖樣處理器使用,如方塊6〇4所顯 示。 另一方面,如該表面會以該中央處理單元之觀點,該表 面之特性通常會被設定為白-黑(快取)特性(如方塊6〇3=顯 岭68 - 23 - 1249103 示),而餘面-物#之型式描4元可如方塊6〇5所顯示加以 標記,指出該表面目前是最佳化映射予中央處理單元使用。 一產生〃亥表面,遠應用程式可藉由p乎叫一鎖定Αρι或解 鎖API而要求鎖疋或解鎖該表面。言玄鎖定與解鎖州通常會 包括之參數諸如該表面-物件之處理元或一”界限區域,,參 數。孩界限區域參數如以上概述之表面的一子區域。鎖定 該表面允許該應用程式將資料寫至該表面。 假設該最佳化共享記憶體一開始是由該中央處理單元使 用,而該最佳化共享記憶體一開始是依快取模式使用,當 該應用程式已達到處理中的一點(至少至目前),即其將不再 對該最佳化共享記憶體施行進一步存取時’其於是會將處 理交予該圖樣處理器。為此,該應用程式可呼叫—解鎖 API’其會通知該圖樣處理器該最佳化共享記憶體區域現在 是可存取。在該解鎖操作中,該圖樣驅動器隱然了解該應 用程式已結束修改該表面,且該中央處理單元不再能夠進 入該表面。因此,配置予該表面而具有利於該中央處理單 元觀點的一快取特性之最佳化共享記憶體,可將該快取特 性改變成有利於該圖樣處理器觀點。 因為该共牟記憶體之快取特性會從中央處理單元-最佳 化模式(即快取)改變成圖樣處理器_最佳化模式(即未快 取),該最佳化共享記憶體應成為一致。 圖7 A顯示將該最佳化共享記憶體從中央處理單元觀點轉 換成一圖樣處理器觀點的一流程,當該過程包括以強制一 致之方式改變該該記憶體之快取特性。如方塊7〇1所顯示, 84668 -24- 1249103 其可首先決定由該中央處理單元運作之該共享記憶體的一 區域是一整個表面或只是一表面的子區域。此子區域或整 個表面區域可對應於如上述被轉送至鎖定與解鎖API的該 界限區域或表面-物件參數。 如果該最佳化共享記憶體區域是一子區域,會依方塊702 所顯示計算該子區域的一開始與結束位址。如結合圖4A之 概述中,該子區域可由描述該位置與該子區域之尺寸之 RECT (t,1,b,r)參數加以描述。或者如圖4B之概述中, 該子區域也可由一來自該表面基本位址與長度參數之開始 偏移加以描述。接著,該流程可前進至方塊703。 另一方面,如果其決定最佳化’共享記憶體之區域非一子 區域(即是一整個表面),該流程可直接前進至方塊703。在 方塊703,可藉由向下調整該位址至一頁-對準開始,而從 該記憶體之開始位址推導出一開始頁。此通常是藉由丢棄 該位址最不重要之位元直到該頁之大小而完成。例如,如 果一頁是4KB,則藉由以(4KB-1)的1之補數逆矩陣逐位元 AND該位址,該頁顆粒開始位址’’addrn即可導出。 其次,如方塊704中所顯示,具有該位址naddr”的一快取 線可為清洗,例如藉由轉送該’’addr’’參數至一諸如 ’’CLFLUSH”之快取線清洗基本資料。 清洗快取線之方法可繼續直到所有快取線均已清洗,如 方塊705與706中所顯示。在方塊705中,其可能決定是否任 何快取線仍須被清洗。如果該結果方塊705之決定是肯定 的,藉由如方塊706所顯示增加該”addr’’參數且回到方塊 84668 -25- 1249103 704,下一個子區域之線可被清洗。 一旦所有快取線已被清洗,該流程可前進至方塊707,其 中該最佳化共享記憶體之快取特性會從快取(如白-黑)改變 至未快取(如白-組合)。接著,如方塊708所顯示,該方法可 使用一習知英特爾®處理器快取記憶體控制指令(諸如 INVLPG),使含有該先前快取特性之頁TLB(轉換旁視緩衝 器)項目無效。此操作可施行以允許該記憶體特性之改變發 生效用,且使用處理器互連匯流排傳播至可能在該系統中 之其他中央處理單元。 方法可針對該最佳化共享記憶體中各頁繼續進行,如方 塊709與710所顯示。在方塊709,其可決定是否仍留有任何 頁須被清洗。如果方塊709之決定結果是肯定,藉由如方塊 710所顯示增加該naddr’’參數且回到方塊704,下一頁可被清 洗。 如果未留有頁待清洗,該流程可前進至方塊711,其中在 該表面-物件内之該記憶體型式描述元會經標記,以指出該 最佳化共享記憶體現在是在在圖樣處理器觀點,以容許追 蹤在後續該表面上之操作中該表面之現行觀點。 當在運作該最佳化共享記憶體中之資料一段時間後,該 圖樣處理器可將該最佳化共享記憶體交回給該中央處理單 元。在該交遞中,該最佳化共享記憶體之快取特性可從有 利於該圖樣處理器改變至有利於該中央處理單元。依據本 發明之具體實施例,當該交遞回到該中央處理單元的一轉 變相位期間,一先前由該圖樣處理器運作之表面或子區域 84668 -26- 1249103 (同時該最佳化共享記憶體是在該圖樣-最佳化觀點),可與 任何作用或佇列中待點陣轉換至該表面之暫待描繪命令同 :化’藉由等候直到該等命令已完畢。此外,胃圖樣驅動 器可追蹤暫待點陣轉換與清洗該描繪快取記憶體造成所有 邊在该圖樣處理器内之相關像素遷移至該表面。 圖7B頭示一在該轉變相位從一圖樣處理器觀點變成一中 央處理單元觀點時實施之方法的可能具體實施例之流程 圖,該方法用以如上述同步化有關任何暫待描 佳化共享記憶體。 取 如方塊721所顯示,一先前曾由該圖樣處理器使用之表面 可被識別為具有暫待操作與其關聯。這些暫待操作可由當 在該表面上開始圖樣操作時先設定之該表面_物件中描2 元與部件指出。接著,如方塊722所顯示,其可決定任何描 繪至該表面之輸出是否仍暫待,在什麼情況下該表面必須 在其可被交予該中央處理單元前與該圖樣處理器一致。如 果方塊722之決定結果為否定,則無須進一步方法。該流程 可前進至方塊727。 另一方面,如果描繪至該表面是暫待中,表示有表面像 素尚未完全地描繪且資料尚未寫出至記憶體,該流程可前 至方塊723。在方塊723中,可決定是否使用由該圖樣驅動 器累積且在該表面-物件之部件或描述元中之專用資料,描 繪至在該表面内暫待之子區域。如果無描繪係在暫待中, 該流程可前至方塊727。 該流程可前 如果方塊723之決定結果為肯定,另一方面 84668 -27- 1249103 至方塊724。在方塊724,應用在被交遞之表面而仍暫待在 該圖樣處理器中的任何描繪命令將會被處理。此包括二種 命令,即會描繪至該最佳化共享表面,以及該等將描繪至 無關表面,但其中在該最佳化共享表面中之像素將用以產 生一結果到一無關之表面。 該流程接著可前至方塊725,其中先前經識別之描繪命令 的執行結果(即已描繪之像素),會從任何内部描繪佇列中清 洗以確保該表面是與該圖樣處理器一致。該流程可繼續至 方塊726,其中可延遲方塊723至726的連續重覆,直到其確 定該等描繪命令與描繪輸出已完全完成。方塊723至726可 依次地重覆,直到已無有關之描繪輸出留下。屆時,流程 可前至方塊727。 如果方塊722之決定該結果為否定,該流程可前至方塊 727,其中該共享記憶體之快取特性會從未快取(如白-組合) 變成快取(如白-黑)。接著,如方塊728所顯示,該方法可使 用一習知英特爾®處理器快取記憶體控制指令(諸如 INVLPG),使含有先前快取特性之頁TLB無效。可施行此操 作以允許該頁特性之改變發生效用,且經由處理器互連匯 流排傳播至可能在該系統中之其他中央處理單元。 方法可針對在該共享記憶體中之各頁繼續進行。在方塊 729,其可決定是否仍留給任何頁須改變其快取特性。如果 方塊729之決定結果是肯定,可重覆方塊727與728之過程。 如果沒有剩餘之頁待改變其快取特性,該流程可前進至 方塊730,其中在該表面-物件内之該記憶體型式描述元會 84668 -28- 1249103 經標記’以指出該最佳化共享記憶體現在是在該中央處理 單元與應用程式軟體觀點。 現將描述其中該最佳化共享記憶體可永遠被指定一中央 處理單元-最佳化快取特性之具體實施例,但其中當發生一 從該中央處理單元觀點至該圖樣處理器觀點之轉變時,在 該中央處理單元之快取記憶體中之資料可成為一致,以允 許該圖樣處理器視該最佳化共享記憶體為一未快取。當從 該圖樣處理器觀點轉變至該主中央處理單元觀點時,該圖 樣資料可與該圖樣處理器之快取成為一致。 圖8示範依據一可能具體實施例用於依據後者之具體實 施例產生或配置一最佳化共享記憶體表面的一流程。在圖8 所顯示之方法中,會產生該最佳化共享表面,使其永遠具 有一快取(如白-黑)特性。意即,該最佳化共享記憶體之快 取特性將不論是由該中央處理單元使用該記憶體或由該圖 樣處理器使用該記憶體。而是,該圖樣處理器被指示當該 冗憶體是在該圖樣處理器觀點時,視該最佳化共享記憶體 如同其為未快取。通常,該圖樣處理器具有介面控制暫存 詻或頁表描述元(如在圖1之107),其指出該圖樣處理器之記 憶體介面與轉換邏輯,是否該記憶體由該處理器快取與存 取需要一探察操作。藉由應用依據本發明具體實施例之方 法,當在一中央處理單元觀點與一圖樣處理器觀點間轉變 相叙時,該最佳化共享表面會一致,除去了探察之需要。 如方塊800至801所顯示,該最佳化共享記憶體表面可配 置在指定一白_黑(WB)快取特性之頁中。如方塊8〇2中所顯 1249103 717其可由型式描述元或提示決定新配置之記憶體將如何 使用.如,由孩中央處理單元讀/寫,或僅不透明(只能由該 圖樣處理器使用)。 如果一開始是由該中央處理單元使用該表面,該流程可 直接W至方塊804,其中該新配置之表面會標記在該表面一 物件 < 藏記憶體型式描述元中以指示其目前之觀點。如果 疋另一万面,在開始是由該圖樣處理器使用該表面,該表 面可成為一致以清出有關該表面之來自先前及/或無關應 用秸式使用该圮憶體而仍在該快取之任何資料。此操作係 頜π於方塊803中,且包含以一習知一致_強制基本資料清 洗在这快取記憶體中之任何頁,諸如英特爾⑧處理器快取記 L把控制指令WBINVD(白黑無效快取記憶體)、INVD(無效 快取記憶體)或CLFLUSH。- CPFLUSH(快取記憶骨重頁清洗) 或其他處理器快取記憶體控制基本資料也可供此用途使 用。接著,該新配置表面可如方塊8〇4所顯示經由該表面_ 物件中dlf體型式描述元識別或標記以指出其目前之觀 點。 如果该表面一開始係配置在一中央處理單元觀點,該應 用私式可要求使用由该圖樣驅動器傳送至該應用程式用於 该表面之處理元鎖定該表面。鎖定該表面允許該應用程式 將資料寫人該表面。該應用程式藉由呼叫如上述之鎖定Αρι 可要求該鎖定。 、當該表面之觀點改變成一圖樣處理器觀點,因為使用時 该中央處理單元可能已經在讀取與寫至該最佳化共享記憶 84668 >30- 1249103 體上’該最佳化共享記憶體需要與該圖樣處理器—致。圖 9A係示範用於強制—致之可行具體實施例的方法之流程 圖0 、如万塊9G1所顯示,其可首先決定由該中央處理單元運作 < Θ /、予"己體的一區域是涵蓋一整個表面或只是一表面 的受界限子區域。此受界限子區域或整個表面區域可對應 於被轉运至如上述進行鎖定與解鎖A ρ ι之受界限區域或整 個表面區域。 如果其決定該最佳化共享記憶體之區域非一子區域(即t 是一整個表面),即可施行如方塊902所顯示的一計算,以 決定是否使該表面一致所需時間大於施行所有中央處理單 7L (因為本發明之具體實施例可使用在多重_中央處理單元 系統)之所有快取的清洗所需時間的二分之一。 如果方塊902之計算結果係肯定,該整個中央處理單sLi 與L2快取記憶體之清洗可如方塊9〇3所顯示施行,以儲存在 該最佳化共享記憶體内這些快取記憶體之内容,使其一 嫌 致。於是,該表面-物件之該記憶體型式描述元可標記如方 . 塊912所顯示,指出該表面係在該觀點最佳化供圖樣處理器 用途。如果方塊902之計算結果係否定,該流程可前進至方 塊905,描述如下。 如果該最佳化共享記憶體區域係一子區域,可如在方塊 904中所顯示計算該子區域的一開始與結束位址。該子區域 可如圖4A中由一RECT (t,1,b,r)參數所描述,其中該子 區域之界限形狀係使用指出該子區域之位置與尺寸的該矩 84668 -31 - 1249103 开y <上、左、下與右座標加以描述。或者該子區域可為一 、泉I*生表面,如圖4B中藉由一開始偏移位址與一長度加以描 述。 s:旦計算出該子區域之開始與結束位址,該流程可前進 至万塊905,其將偵測是否該子區域開始從中途進入一快取 T。如果方塊905之決定結果係肯$,可施行方塊_,其 和重新枚〜袁區域之開始至一致性會被強制,使得該快取 線清洗會導致該不良快取線在該特定位址預期成為一致處 無效,而後該流程可前進至方塊9〇7。 如果方塊905《決足結果係否定,該流程可直接前進至方 塊907。在方塊9〇7,-具有對應於該位址” addr"之快取記憶 體資料的-快取線可被清洗,例如藉由轉送該,⑽,參數至 快取線清洗基本資料,諸如,,CLFLush,,。 於是,如方塊_所顯示,其可決定是否達到該矩形或線 性子區域之線的未端。如果方塊909決定之結果係否定可 藉由以-等於一快取線大小之量增加方塊908所顚示之該 ”addr"參數而清洗下-個快取線,而後回到方塊907。 如果方塊909之決定結果係肯定,該流程可前進至方塊 9Π)。在方塊刚,其可決定是否該子區域之末端已達到。 如果已達到該子區域之末端,該整個子區域已被清洗以使 得該最佳化共享記憶體區域—致供該圖樣處理器使用,而 後該流程可前進至方塊912。 否則’可藉由以-等於該表面間距減去針對任何校準所 調整出之子區域寬度的大小量來增加方塊9u所顯示:該 84668 ^ 1249103 而後回到方塊 ’’addr”參數而清洗一矩形子區域的次一線 905。 ,使用7、上述方法中的_快取線清洗(CLFlush)i有一相 當小之顆粒度(即其可處理相當小之資料)。反之二頁清洗 (CPFLUSH)可清洗所有關聯記憶體之—頁的快取線。因 此、’ _具體實施例,當該最佳化共享記憶體係如以下將 描述人遞予㈣樣處理器處理時強制—致的—方法時,可 使用頁清洗而非快取線清洗,以便以最低之處理器負擔在 車:大邯份之圖樣資料上強制—致。在特定情況下,使用頁 —先疋万法可比招致將—共享區❹成線之额外操作較快 與較有效。 或者可考慮-中央處理單元指令,其藉由將一記憶體範 圍當作一參數且確保所有在該範圍内之資料係快取一致而 有效地處理一特定記憶體區域。 曰一旦該最佳化共享記憶體藉由上述之方法成為—致,該 最佳化共享記憶體内之資料可由該圖樣處理器運作,如同 其係使用一未快取或白-組合頁快取特性。 在使用該表面與該最佳化共享記憶體内之資料一段時間 後,該圖樣處理器可將該共享記憶體交回給該中央處理單 兀。依據本發明之具體實施例,在交回給該中央處理單元 的一轉變相位期間,一先前由該圖樣處理器運作之表面或 子區域(同時該最佳化共享記憶體是在該圖樣_最佳化觀 點),可與該圖樣處理器同步化,包括完成任何作用中或佇 列待點陣轉換至該表面之暫待描繪命令。此外,該圖樣驅 84668 -33- 1249103 陣轉換且清洗該描績快 動為可追細:此等描纟會命令之暫待點 取記憶體以確保該表面係一致。 圖9B係示範用於實施上述說 方法之流程圖。 明之可行性具體實施例的一 〜則曰田孩圖樣處,王命1文用之表面 可被識別為具有與其關聯之暫待操作。這些暫待操作可由 當在該表面上開始圖樣操作時先設定之該表面物件中的 描述元與部件指出。接著,如方塊922所顯示,其可決定任 何描繪至絲面之輸出是否仍暫待,在什麼情況下該表面 乂肩在,、可被又回至孩中央處理單元前與該圖樣處理器成 為一致。如果方塊922決定之結果為否定,則無須進—步方 法。孩流程可前進至方塊927,其中在該表面_物件之該記 憶體型式描述元會妹才西今 4匕、、 、、 n铋记,以指出孩表面現在是最佳化地 在孩中央處理單元與應用程式觀點。 另万面,如果描緣至該表面是暫待中,表示有表面像 素尚未完全地騎且資料尚未寫出至記憶體,該流程可前 至万塊923。在方塊923中’其使用由該圖樣驅動器累積且 在孩表面·物件之部件或描述元中之專用資料,決定是石描 繪至該表面内任何子區域係暫待。如果沒有描㈣暫待, 該流程可前進至方塊927。 另一万面,如果方塊923決定之結果為肯定,該流程可前 至万塊924。在方塊924,應用在交遞之該表面而仍暫待在 該圖樣處理器中的任何描績命令將會被處理。&包括會描 繪土及取佳化共享表面,以及該等將描繪至無關表面的二 84668 -34- 1249103 中令’但其中在該最佳化共享表面中之像素將用以產生一 結果到一無關之表面。 琢流程接著可前至方塊925,其中先前經識別之描繪命令 的執行結果(即已描繪之像素),會從任何内部描繪佇列中清 洗以確保该表面是與該圖樣處理器一致。該流程可繼續至 万塊926,其中可延遲方塊723至726的連續重覆,直到其確 疋該等描繪命令與描繪輸出已完全完成。方塊923至926可 依序重覆,直到沒有相關之描繪輸出留存。此時,流程可 前進至方塊927。 依據本發明之具體貫施例,轉換該最佳化共享記憶體以 使該快取特性有利於該中央處理單元,可發生在該鎖定Αρι 或相關地等同介面中,且轉換該最佳化共享記憶體以使該 快取特性有利於該圖樣處理器,可發生在該解鎖Αρι或相關 地等同介面中。在具體實施例中,該鎖定與解鎖Αρι可於該 圖樣裝置驅動器層級處執行。然而,本發明之具體實施例 並未限制在該鎖定與解鎖API中施行該轉換。例如,類型之 介面API係習知,諸如指出協商有助於共享所有權之開始與 結束存取的相關等效動作之開始存取(BeginAccess)與結束 存取(EndAccess) API。該轉換可在各種其他層級之程式碼 中施行,諸如在其他介面中,及在内部記憶體管理與其他 活動中。 更一般而言,應注意的是本文中揭示之該可程式結構(諸 如所不範4流程)、孩API與辨識之快取記憶體控制基本資 料係任意’且只是代表可以由任意指定之各種電腦指令順 84668 1249103 序貫施之功能。 本發明之實施可明顯地具體化為電腦可執行指令,其可 為儲存與傳送至一電腦可使用媒體(諸如一碟片、磁帶或 CD-ROM)上。該指令可(例如)在一圖樣裝置驅動器中實 施。該指令可經由一適當讀取裝置下載至一電腦記憶體, 從邊處其可被取出且由一處理器執行以使本發明之優勢發 生效用。 本發明之具體貫施例在許多應用程式中具有優勢。例 如,MPEG(移動圖片專定群組連接埠勹應用程式產生,,關鍵 視框’’’其係儲存在記憶體且由該中央處理單元後續讀取以 便根據該關鍵視框產生插入之中間視框。藉由使該關鍵視 框能夠儲存在一實質上最適於由該中央處理單元讀回之共 卓圮憶體’同時能避免先前方法之該別名、探察循環與其 類似者,可實質上改進MPEG應用程式之效能。 本發明之另一應用可涉及3D應用程式。在此應用中,通 常會產生頂點緩衝器。一頂點緩衝器係填滿多邊形之點或 頂點的一緩衝器;該頂點可加以索引。在由一應用程式產 生後,一頂點緩衝器通常會被交遞予該圖樣處理器待描 繪。該應用程式也將需要讀回在該頂點緩衝器中之資料, 以便偵測(例如)是否圖樣物件會彼此”碰撞”。或者(例如)該 應用程式可能會需要修改該等頂點,以便操控圖樣物件以 造成其π變形’’或彎曲或其類似者。 J 請參考相關文獻’例如:1· ISO/IEC 11172-1/2/3 (Parts l:System/2:Video/3:Audio): Coding ofmoving pictures and associated audio for digital storage media at up to about 1.5MBits/s;以及 2. ISO/IEC 13818-1/2/3 (Parts l:System/2: Video/3: Audio): Generic coding of moving pictures and associated audio information。 84668 -36- 1249103 依據本發明之具體實施例,該頂點緩衝器可以一共享記 憶體型式產生。該頂點緩衝器於是將具有之格式使其可有 1地從一中央處理單元觀點(用於由該應用程式讀回頂點 資料),與從一圖樣觀點(用於在該頂點資料上施行描繪操 作)二方面存取該緩衝器。 本發明另-有利之應用係在一傳統3D管線之圖樣”轉換 與照明"操作’或用於在現代"可程式頂點著色器"之複雜頂 點操控。在二範财,該應用程式可產生包括待描緣物; 頂點(幾何形狀的_緩衝器。這些頂點描述來自於"全域空 間"需要轉換與照明之多邊形,在其中該模型會在可連同: 他物件一起被描繪至螢幕上之視覺空間中產生。在此過程 中’該等頂點可能需要之操控涉及讀、修改與寫該頂點二 料。 " 某些電腦晶片組包括專用製圖硬體,祕施行轉換與照 明應用。或者’部份中央處理單元之特定指令組可使用以 加速該轉換與照明。 在後者中’處理器製造商提供該中央處理單元之管線的 -部份作為”處理器_特定圖樣管線"(pSGp),供軟體販售者 使用未包括專用轉換與照明硬體之圖樣晶片組。PSGP管線 使用該主中央處理單元以施行轉換與照明操作,而業經轉 換與照明之頂點資料因而持續地傳送至該圖樣處理器供用 以描繪。 在孩中央處理單元係在施行轉換與照明操作中,如果其 可在快取模式下施行將會是最有效率的。如果是需要"修整 84668 -37- 1249103 ^貝料可能需要由該中央處理單元讀回而後加以操控。因 為此需求由一記憶體緩衝器將資料讀回、操控其與將其寫 回該緩衝器,當該記憶體係在快取模式時,這些操控可為 最佳化施行。此外如果將在該頂點上施行之操作是程式性 地複雜如從一完成可程式頂點著色器係明顯地可能。處理 占了涉及各頂點以及許多其他頂點之許多讀與寫動 乍X達到複_效果,諸如物件-表面位移映射與環境照明 效果。 因為依據本發明,該共享記憶體對於很困難施行之觀 看、轉換與照明操作實質上係最佳化之格式;無須緩衝器、 或別名資料。 本發明另一可行之應用可涉及用於繪圖之Αρι的實施,其 可施行無須由硬體直接支援之先進圖形描繪。由該Αρι提供 《圖形描㈣某些部份可為,,硬體可加速,,(能夠由該圖樣處 理w施行)’而某些則否。使可加速之操作在儘可能與中央 處理單元操作平行之該圖樣處理器完成將可改進效率。此 對於在一描繪過程中之繁瑣描繪操作(諸十移動、填滿或整 數與布林操作)是由該圖樣處理器完成時是特別適用,如此 曰使邊中央處理單疋得α自由地產生複雜形狀㈠者如貝氏 曲、泉bezier curve)的下一個頂點,或施行該描繪效果之複 雜的點陣轉換階段。 本又中特別7F範與描述本發明的數個具體實施例。然而 應可暸解到,在不背離本發明的精神及所要的範圍之下, 本毛月之G正及欠化係由以上的原理所涵蓋,並係在所附 84668 -38- 1249103 申請專利範圍條款之内。 【圖式簡單說明】 圖1』不在中央處理單元與圖樣處理器之間共享的-電 腦記憶體之可能性具體實施例; 圖2,員7F在中央處理單元與圖樣處理器之間共享的一電 腦記憶體之另一可能性具體實施例; 古圖3㉙V狀怨圖’示範在該中央處理單元使用最佳化共 予m的-模式’與該圖樣處理器使用最佳化共享記憶 體的一模式間之轉變; 圖4A與4B顯示圖樣表面與緩衝器以及可經由表面參數 加以描述的該表面之子區域型式的範例; 圖5顯示在一圖樣表面界限區域中之掃描線; 圖6頒不依據一具體實施例用於配置一最佳化共享記憶 體區域之過程的流程圖; 圖7A顯示依據圖6之具體實施例用於使一表面或該表面 的一界限子區域一致之過程的流程圖; 圖7B顯示依據圖6之具體實施例用於完全暫待在一圖樣 表面 < 描%操作,與改變該表面之快取特性的程圖; 圖8頌不依據另一具體實施例用於配置一最佳化共享記 憶體區域之過程的流程圖; 圖9A顯示依據圖8之具體實施例用於使一表面或該表面 的界限子區域一致之過程的流程圖;及 圖9B顯示依據圖8之具體實施例用於完全暫待在一圖樣 表面之描繪操作,與改變該表面之快取特性的程圖。 84668 -39· 1249103 圖式代表符號說明】 100 實體位址空間 102 系統記憶體頁 103 主CPU管線 104 頁表 105 TLB緩衝器 106 圖樣開口 107 圖樣處理器頁翻譯表 108 TLB緩衝器 109 圖樣處理器單元管線 200 實體位址空間 202 系統記憶體頁 204 頁表 205 先進圖樣埠記憶體區域 206 圖樣處理器單元管線 207 圖樣開口 208 局部視頻記憶體 209 圖樣開口浮動表 400 圖樣表面 401 基本記憶體位址 402 結束點 403 受界限子區域 410 圖樣表面 411 受界限子區域 -40- 84668 411

Claims (1)

1249103 第092112344號專利申請案 中文申請專利範圍替換本(93年9
曰 本 拾、申請專利範圍: 一種最佳化共享記憶體之方法,包含: 配置一記憶體區域,其係用於在一中央處理單元與一 圖樣處理器間共享; 指定該共享記憶體區域一有利於該中央處理單元之 操作效率的快取特性; 施行一從其中該中央處理單元係使用該記憶體區域 的一第一模式至其中該圖樣處理器係使用該記憶體區 域的一第二模式之轉變;及 在從該第一模式至該第二模式之轉變期間,將該快取 特性改變至有利於該圖樣處理器的一操作效率。 2.如申請專利範圍第丨項之方法,其中有利於該中央處理 單元之操作效率的該特性係一啟動快取之特性。 3·如申请專利範圍第丨項之方法,其中有利於該圖樣處理 器之操作效率的該特性係一非啟動快取之特性。 4.如申清專利範圍第丨項之方法,其中當從該第一模式轉 變至孩第二模式時,該共享記憶體係成為一致。 5·如_請專利範圍第丨項之方法,施行從該第二模式回到 3第一杈式的一轉變,且當從該第二模式轉變至該第一 模式時,將该特性改回有利於該中央處理單元之操作效 率 〇 6. 如申請專利範圍第1項之方法,其中該共享記憶體區域 係配置用於一圖樣表面。 84668 1249103 7. 如申請專利範圍第6嚷之方法,其中該中央處理單元執 - 行一應用程式以施行在該圖樣表面一受界限區域内之 資料上的一操作。 8. 如申請,專利範圍第7項之方法,其中當從該第一模式轉 變至該第二模式時,會決定何種快取清洗之顆粒度會甩 以使该受界限區域'致。 9. 如申請專利範圍第8項之方法,其中該顆粒度係一快取 線、一快取頁與一整個快取中之一。 10. —種最佳化共享記憶體之方法,包含: φ (a) 配置一記憶體區域,其係用於在一中央處理單元與 一圖樣處理器間共享; (b) 以一有利於該中央處理單元之操作效率的該第一 模式使用該共享記憶體區域;及 (c) 以一有利於該圖樣處理器之操作效率的該第二模 式使用該共享記憶體區域。 1 1 ·如申請專利範圍第10項之方法,進一步包括·· 在(b)與(c)間,使在該共享記憶體區域内之資料一致。 * 12·如申請專利範圍第11項之方法,其中該共享記憶體區域 係以最多為一快取線之長度的單位成為一致。 13.如申請專利範圍第1 1項之方法,其中該共享記憶體係以 最多為一頁之單位成為一致。 14· 一種最佳化共享記憶體之方法,包含: 配置一記憶體區域,其係用於在一中央處理單元與一 圖樣處理器間共享; 84668 1249103 指定該共享記憶體區域為二供選擇之特性中之―,梦 等二供選擇之性特分別為有利於該巾央處理單元之效 月匕或疋4圖樣處理器之效能; 使用該中央處理單元或該圖樣處理器中之_存取該 記憶體㈣’同時該記憶體區域具有該對應之有利特 性;及 當該記憶體區域之使用在該中央處理單元與該圖樣 處理器之間改變時,改變該指定特性至該另一選擇:
性。 15.如申請專利範圍第14項之方法,其中該等二供選擇之特 性係用㈣巾央處輯元的—快取㈣,與料該圖樣 處理器的一非快取特性。 16· —種最佳化共享記憶體之方法,包含: 配置一記憶體區域,其係用於在一中央處理單元與一 圖樣處理器間共享;
指定該共享記憶體區域一快取特性; 使用該中央處理單元存取該共享記憶體區域; 使該共享記憶體區域一致;及 交遞該共享記憶體區域由該圖樣處理器使用。 17.如中請專利範圍第16項之方法,其中該共享記憶體區域 係以最多為一快取線之長度的單位達到一致。 18· —種最佳化共享記憶體之方法,包含: 配置一記憶體區域,其係用於在一中央處理單元與一 圖樣處理器間共享; 84668 1249103 指定該共享記憶體區域一快取特性; 在泫中央處理單元上執行一在該共享記憶體區域内 讀取、修改或寫資料之應用程式; 使該共享記憶體區域一致; 改變遠特性至一未快取特性;及 X遞遠共旱記憶體區域至一圖樣處理器,用於該資料 之描緣。 19·如申請專利範圍第18項之方法,進一步包括: 在該圖樣處理.器中之資料施行描繪操作; 將該特性改回一快取特性;及 將該共旱記憶體區域交回由該中央處理單元,用於進 一步處理。 20.如申請專利範圍第18項之方法,其中該記憶體區域係一 圖樣表面。 21 —種最佳化共享記憶體之系統,該系統包含·· 一中央處理單元; 一圖樣處理器; 一在該中央處理單元與圖樣處理器間共享之記憶體 區域;及 电月®可執行指令,用於根據該中央處理單元或該圖學 處理器中何者使用該記憶體區域而改變該記憶體區域. 的一快取特性。 22·如申請專利範圍第21項之系統,其中該指令係包括在圖 樣驅動器軟體中。 84668 1249103 23 24. 25. 26. 27. 28. 如申請專利範圍第21項之系統,其中該圖樣處理器係整 合於一包括該中央處理單元之晶片組中。 如申請專利範圍第21項之系統,其中該圖樣處理器係包 括在一分離之附加卡中。 一種包含電腦可執行指令之電腦可讀取之記錄媒體,用 於根據孩中央處理單元或該圖樣處理器中何者使用該 記憶體區域而改變一中央處理單元與一圖樣處理器間 共享的一該記憶體區域之一特性。 如申請專利範圍第25項之電腦可讀取之記錄媒體,其中 當由泫中央處理單元使用該區域轉變成由該圖樣處理 器使用該區域時,該等指令造成該記憶體區域成為一 致。 如申請專利範圍第26項之電腦可讀取之記錄媒體,其中 在该轉變期間,會決定何種快取清洗之顆粒度會被用以 使該區域一致。 一種用於儲存電腦可執行指令之電腦可讀取之記錄媒 體,當由一處理器執行實施一處理時該指令包含: 配置一圮憶體區域,用於在一中央處理單元與一圖樣 處理器間共享; ^足S共旱i己憶體區域一有利於該中央處理單元之 操作效率的快取特性; 施行一從其中該中央處理單元係使用該記憶體區域 的一第一模式至其中該圖樣處理器係使用該記憶體區 域的一第二模式之轉變;及 84668 1249103 在從該第一模式至該第二模式之轉變期間,將該快取 特性改變至有利於該圖樣處理器的一操作效率。 29. 如申請專利範圍第28項之電腦可讀取之記錄媒體,其中 有利於該中央處理單元之操作效率的該特性係一快取 特性。 30. 如申請專利範圍第28項之電腦可讀取之記錄媒體,其中 有利於該圖樣處理器之操作效率的該特性係一非快取 特性。 3 1 · —種最佳化共享記憶體之方法,包含: 配置一記憶體區域,用於在一中央處理單元與一圖樣 處理器間共享; 才曰足該共旱$己憶體區域一快取特性; 施行一從其中該中央處理單元係使用該記憶體區域 的一第一模式至其中該圖樣處理器係使用該記憶體區 域的一第二模式之轉變;及 在孩第二模式中,造成該圖樣處理器視該共享記憶體 區域如同其為非快取。 32·如申請專利範圍第31項之方法,其中當從該第一模式轉 變至孩第二模式時,該共享記憶體成為一致。 33· —種最佳化共享記憶體之方法,包含: 配置一記憶體區域,用於在一中央處理單元與一圖樣 處理器間共享; 才曰足$亥ά己丨思體區域一快取特性; 84668 1249103 士在該中央處理單元上執行一在該共享記憶體區域内 讀取、修改或寫資料之應用程式; 使該共享記憶體區域一致; 、交遞該共享記憶體區域至一圖樣處理器用於該資料 之描纟會;及 造成该圖樣處理器視該共享記憶體區域如同其為非 快取。 34·如申請專利範圍第33項之方法,進一步包括: 在該圖樣處理器中之資料上施行描繪操作; 將泫共旱圮憶體區域交回由該中央處理單元,用於進 一步處理。 35. 如申請專利範圍第33項之方法,其中該記憶體區域係一 圖樣表面。 36. —種儲存電腦可執行指令之電腦可讀取之記錄媒體,當 由一處理器執行實施一處理時該指令包含: 配置一記憶體區域,用於在一中央處理單元與一圖樣 處理器間共享; 4曰足该共本1己憶體區域_有利於該中央處理單元之 操作效率的快取特性; 施行一從其中該中央處理單元係使用該記憶體區域 的一第一模式至其中該圖樣處理器係使用該記憶體區 域的一第二模式之轉變;及 在孩第二模式’造成該圖樣處理器視該共享記憶體區 域如同其為非快取。 1249103 37. 38. 39. 如申請專利範圍第W艰、 一、 国弟36員又電腦可讀取之記錄媒體,其中 當從該第一模式轉、 土 4罘一棱式時,邊共旱記憶體係 成為一致。 —種儲存電腦可執行指令之電腦可讀取之記錄媒體,當 由處理备執仃實旅一處理時該指令包含: 配置一記憶體區域,用於在一中央處理單元與一圖樣 處理器間共享; 7 指定該記憶體區域一快取特性; ^在該中央處理單元上執行一在該共享記憶體區域内 頡取、修改或寫資料之應用程式; 使該共享記憶體區域一致; X遞咸共旱圯丨思體區域至一圖樣處理器,用於該資料 之描缯* ;及 造成該圖樣處理器視該共享記憶體區域如同其係非 快取。 如申請專利範圍第38項之電腦可讀取之記錄媒體,該方 法進一步包含: 在該圖樣處理器中之該資料上施行描繪操作; 將該共车記憶體區域交回由該中央處理單元,用於進 一步處理。 如申請專利範圍第38項之電腦可讀取之記錄媒體,其中 该1己憶體區域係一圖樣表面。 84668 40.
1249103 第092112344號專利申請案 中文圖式替換頁(93年9月) 拾壹、圖式: 國101 • 110 實體位址空間
圖 1 84668 1249103
2 84668 -2- 1249103 303
84668 1249103
•表面偏移(基本) 增加地址 增加線I 間距(=寬度) 表面像素 受界限子區域
結束位址(=長度+開始位址) X\\\\\\\\\\\\\\Nj 84668 1249103 a 5
84668 1249103
圖 6 84668 1249103
圖 7A 84668 1249103
圖 7B 84668 1249103
^ 標記共享~804 I記憶體表面 J
84668 1249103 91
圖9A 84668 -10- 1249103
圖 9B 84668 -11-
TW092112344A 2002-05-08 2003-05-06 Method and system for optimally sharing memory between a host processor and graphics processor TWI249103B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/140,263 US6891543B2 (en) 2002-05-08 2002-05-08 Method and system for optimally sharing memory between a host processor and graphics processor

Publications (2)

Publication Number Publication Date
TW200405170A TW200405170A (en) 2004-04-01
TWI249103B true TWI249103B (en) 2006-02-11

Family

ID=29399416

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092112344A TWI249103B (en) 2002-05-08 2003-05-06 Method and system for optimally sharing memory between a host processor and graphics processor

Country Status (8)

Country Link
US (1) US6891543B2 (zh)
EP (1) EP1502194A1 (zh)
JP (1) JP4489580B2 (zh)
KR (1) KR100655355B1 (zh)
CN (1) CN1317648C (zh)
AU (1) AU2003225168A1 (zh)
TW (1) TWI249103B (zh)
WO (1) WO2003096197A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI410803B (zh) * 2006-06-15 2013-10-01 Nvidia Corp 用於具有兩個或多個繪圖處理單元之具成本效益高效能繪圖系統的匯流排介面控制裝置

Families Citing this family (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7268785B1 (en) * 2002-12-19 2007-09-11 Nvidia Corporation System and method for interfacing graphics program modules
GB0301448D0 (en) * 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
US7549023B2 (en) * 2003-04-21 2009-06-16 Intel Corporation Method and apparatus to update a cache for security records
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US20050190193A1 (en) * 2004-03-01 2005-09-01 Freker David E. Apparatus and a method to adjust signal timing on a memory interface
US7023445B1 (en) * 2004-04-12 2006-04-04 Advanced Micro Devices, Inc. CPU and graphics unit with shared cache
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8044951B1 (en) * 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
TWI245560B (en) * 2004-08-19 2005-12-11 Realtek Semiconductor Corp Video data processing method and apparatus capable of saving bandwidth
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8736623B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Programmable DMA engine for implementing memory transfers and video processing for a video processor
US7490215B2 (en) * 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US8667249B2 (en) 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US7486290B1 (en) * 2005-06-10 2009-02-03 Nvidia Corporation Graphical shader by using delay
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US7725609B2 (en) * 2005-08-05 2010-05-25 Qimonda Ag System memory device having a dual port
US7426607B2 (en) * 2005-08-05 2008-09-16 Infineon Technologies Ag Memory system and method of operating memory system
US7616202B1 (en) 2005-08-12 2009-11-10 Nvidia Corporation Compaction of z-only samples
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US7873788B1 (en) 2005-11-15 2011-01-18 Oracle America, Inc. Re-fetching cache memory having coherent re-fetching
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7768507B2 (en) * 2005-11-17 2010-08-03 Ati Technologies Ulc Methods and apparatus for driving a display device
US8212832B2 (en) * 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
JP4129693B2 (ja) * 2006-05-18 2008-08-06 コニカミノルタビジネステクノロジーズ株式会社 メモリ管理方法
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US9099050B1 (en) 2006-08-24 2015-08-04 Nvidia Corporation Method and apparatus for dynamically modifying the graphics capabilities of a mobile device
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
JP4369471B2 (ja) * 2006-12-27 2009-11-18 富士通株式会社 ミラーリングプログラム、ミラーリング方法、情報記憶装置
US7907138B2 (en) * 2006-12-29 2011-03-15 Intel Corporation System co-processor
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US7941594B2 (en) * 2007-09-21 2011-05-10 Freescale Semiconductor, Inc. SDRAM sharing using a control surrogate
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9177368B2 (en) 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8780128B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8397241B2 (en) * 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US9865233B2 (en) * 2008-12-30 2018-01-09 Intel Corporation Hybrid graphics display power management
EP2385467A4 (en) * 2009-01-30 2012-10-24 Mitsubishi Electric Corp STATUS DISPLAY DEVICE
US8151061B2 (en) * 2009-03-10 2012-04-03 Intel Corporation Ensuring coherence between graphics and display domains
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US9547535B1 (en) * 2009-04-30 2017-01-17 Nvidia Corporation Method and system for providing shared memory access to graphics processing unit processes
US8395631B1 (en) * 2009-04-30 2013-03-12 Nvidia Corporation Method and system for sharing memory between multiple graphics processing units in a computer system
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US20110043518A1 (en) * 2009-08-21 2011-02-24 Nicolas Galoppo Von Borries Techniques to store and retrieve image data
US8402246B1 (en) * 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
US8675003B2 (en) * 2009-09-09 2014-03-18 Advanced Micro Devices, Inc. Efficient data access for unified pixel interpolation
US8933947B2 (en) * 2009-09-10 2015-01-13 Ati Technologies Ulc Reading a local memory of a processing unit
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US9324175B2 (en) * 2009-09-11 2016-04-26 Nvidia Corporation Memory coherency in graphics command streams and shaders
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US9645866B2 (en) * 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US8797332B2 (en) * 2010-12-15 2014-08-05 Ati Technologies Ulc Device discovery and topology reporting in a combined CPU/GPU architecture system
WO2012083012A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Device discovery and topology reporting in a combined cpu/gpu architecture system
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9304570B2 (en) 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
WO2013097137A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Transpose of image data between a linear and a y-tiled storage format
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US9430391B2 (en) 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US20130262736A1 (en) * 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies
US8898397B2 (en) 2012-04-11 2014-11-25 Moon J. Kim Memory and process sharing across multiple chipsets via input/output with virtualization
US10387331B2 (en) * 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9864638B2 (en) * 2012-06-22 2018-01-09 Intel Corporation Techniques for accessing a graphical processing unit memory by an application
US9105250B2 (en) 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US9292414B2 (en) 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
CN103927254B (zh) * 2013-01-14 2017-04-05 北大方正集团有限公司 一种pdf光栅化处理模块的测试方法和装置
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
KR101442643B1 (ko) * 2013-04-30 2014-09-19 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
US9418400B2 (en) 2013-06-18 2016-08-16 Nvidia Corporation Method and system for rendering simulated depth-of-field visual effect
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
US9478000B2 (en) 2013-09-27 2016-10-25 Intel Corporation Sharing non-page aligned memory
JP6272011B2 (ja) * 2013-12-24 2018-01-31 Necプラットフォームズ株式会社 キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法
US9886736B2 (en) * 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
KR102100161B1 (ko) * 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템
US9436395B2 (en) 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
US9740611B2 (en) * 2014-10-29 2017-08-22 Advanced Micro Devices, Inc. Memory management for graphics processing unit workloads
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
US20170154403A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Triple buffered constant buffers for efficient processing of graphics data at computing devices
US9892058B2 (en) 2015-12-16 2018-02-13 Advanced Micro Devices, Inc. Centrally managed unified shared virtual address space
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
US10572399B2 (en) * 2016-07-13 2020-02-25 Qualcomm Incorporated Memory request arbitration
US10346307B2 (en) 2016-09-28 2019-07-09 Samsung Electronics Co., Ltd. Power efficient snoop filter design for mobile platform
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
KR102066212B1 (ko) * 2017-01-19 2020-01-14 서울대학교산학협력단 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
US10503652B2 (en) * 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US10373285B2 (en) 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10970118B2 (en) 2017-08-02 2021-04-06 Advanced Micro Devices, Inc. Shareable FPGA compute engine
US10452549B2 (en) * 2017-08-17 2019-10-22 Intel Corporation Method and apparatus for page table management
CN109509139B (zh) * 2017-09-14 2023-06-27 龙芯中科技术股份有限公司 顶点数据处理方法、装置及设备
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
US11169953B2 (en) * 2018-02-28 2021-11-09 SK Hynix Inc. Data processing system accessing shared memory by using mailbox
US10599568B2 (en) * 2018-04-09 2020-03-24 Intel Corporation Management of coherent links and multi-level memory
US10846235B2 (en) * 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US11436151B2 (en) * 2018-08-29 2022-09-06 Seagate Technology Llc Semi-sequential drive I/O performance
CN109242758A (zh) * 2018-09-18 2019-01-18 珠海金山网络游戏科技有限公司 一种材质参数存储、材质参数获取方法及装置
CN109542628B (zh) * 2018-12-12 2023-03-14 中国航空工业集团公司西安航空计算技术研究所 一种基于状态机的层次化gpu资源管理系统
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US11422812B2 (en) 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
CN113190350B (zh) * 2021-04-30 2022-06-14 华南理工大学 一种面向在离线容器混合部署的llc分配方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2819982B2 (ja) * 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US5557733A (en) * 1993-04-02 1996-09-17 Vlsi Technology, Inc. Caching FIFO and method therefor
US5706407A (en) * 1993-12-28 1998-01-06 Kabushiki Kaisha Toshiba System for reallocation of memory banks in memory sized order
US5941968A (en) * 1997-04-14 1999-08-24 Advanced Micro Devices, Inc. Computer system for concurrent data transferring between graphic controller and unified system memory and between CPU and expansion bus device
US6052133A (en) * 1997-06-27 2000-04-18 S3 Incorporated Multi-function controller and method for a computer graphics display system
US5990913A (en) * 1997-07-30 1999-11-23 Intel Corporation Method and apparatus for implementing a flush command for an accelerated graphics port device
GB2331379A (en) 1997-11-13 1999-05-19 Advanced Telecommunications Mo Controlling access to a shared memory by dual mapping
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US6157397A (en) * 1998-03-30 2000-12-05 Intel Corporation AGP read and CPU wire coherency
US6483516B1 (en) * 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
DE69935852T2 (de) 1999-06-09 2007-12-20 Texas Instruments Inc., Dallas Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
US6665775B1 (en) * 2000-09-22 2003-12-16 Intel Corporation Cache dynamically configured for simultaneous accesses by multiple computing engines
US6832269B2 (en) * 2002-01-04 2004-12-14 Silicon Integrated Systems Corp. Apparatus and method for supporting multiple graphics adapters in a computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI410803B (zh) * 2006-06-15 2013-10-01 Nvidia Corp 用於具有兩個或多個繪圖處理單元之具成本效益高效能繪圖系統的匯流排介面控制裝置

Also Published As

Publication number Publication date
WO2003096197A1 (en) 2003-11-20
KR20040106472A (ko) 2004-12-17
US6891543B2 (en) 2005-05-10
JP4489580B2 (ja) 2010-06-23
KR100655355B1 (ko) 2006-12-08
EP1502194A1 (en) 2005-02-02
JP2005524907A (ja) 2005-08-18
CN1317648C (zh) 2007-05-23
US20030210248A1 (en) 2003-11-13
CN1666182A (zh) 2005-09-07
TW200405170A (en) 2004-04-01
AU2003225168A1 (en) 2003-11-11

Similar Documents

Publication Publication Date Title
TWI249103B (en) Method and system for optimally sharing memory between a host processor and graphics processor
JP6707605B2 (ja) 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US10365930B2 (en) Instructions for managing a parallel cache hierarchy
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US9952977B2 (en) Cache operations and policies for a multi-threaded client
US8766988B2 (en) Providing pipeline state through constant buffers
TWI417806B (zh) 單一通過鑲嵌
TWI354240B (en) Method and system for synchronizing parallel engin
CN109978751A (zh) 多gpu帧渲染
US8917271B2 (en) Redistribution of generated geometric primitives
US8392667B2 (en) Deadlock avoidance by marking CPU traffic as special
JP2004510269A5 (zh)
JP2011204247A (ja) 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置
US8234478B1 (en) Using a data cache array as a DRAM load/store buffer
US6587113B1 (en) Texture caching with change of update rules at line end
US20220036632A1 (en) Post-processing in a memory-system efficient manner
US20120079201A1 (en) System and method for explicitly managing cache coherence
TW201626218A (zh) 傳遞api的相依性的技術
WO2018118367A1 (en) Mid-render compute for graphics processing
US10445852B2 (en) Local image blocks for graphics processing
US5748938A (en) System and method for maintaining coherency of information transferred between multiple devices
US7877565B1 (en) Constant versioning for multi-threaded processing
US7710425B1 (en) Graphic memory management with invisible hardware-managed page faulting
US9401004B2 (en) State shadowing to support a multi-threaded driver environment
US8976185B2 (en) Method for handling state transitions in a network of virtual processing nodes

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees