TWI512466B - 在複數執行緒處理單元中的效率式記憶體虛擬化 - Google Patents

在複數執行緒處理單元中的效率式記憶體虛擬化 Download PDF

Info

Publication number
TWI512466B
TWI512466B TW102138456A TW102138456A TWI512466B TW I512466 B TWI512466 B TW I512466B TW 102138456 A TW102138456 A TW 102138456A TW 102138456 A TW102138456 A TW 102138456A TW I512466 B TWI512466 B TW I512466B
Authority
TW
Taiwan
Prior art keywords
address
address space
tlb
memory
virtual
Prior art date
Application number
TW102138456A
Other languages
English (en)
Other versions
TW201432453A (zh
Inventor
Nick Barrow-Williams
Brian Fahs
Duluk, Jr
James Leroy Deming
Timothy John Purcell
Lucien Dunning
Mark Hairgrove
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW201432453A publication Critical patent/TW201432453A/zh
Application granted granted Critical
Publication of TWI512466B publication Critical patent/TWI512466B/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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

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

在複數執行緒處理單元中的效率式記憶體虛擬化
本發明一般有關多執行緒電腦架構,尤其係,有關在多執行緒處理單元內有效率的記憶體虛擬化。
在具有一中央處理單元(CPU,central processing unit)及一圖形處理單元(GPU,graphics processing unit)的傳統計算系統中,該中央處理單元執行應用程式計算的一部分、分配資源及管理整個應用程式的執行,而圖形處理單元執行由中央處理單元決定的高產出計算。在某些應用程式空間中,例如高效能計算(HPC,high performance computing)應用程式,該圖形處理單元通常執行有關已知應用程式的大量計算。因此,整體應用程式效能是與圖形處理單元利用率有直接關聯。在這種應用程式中,使用高圖形處理單元利用率就可達成高應用程式效能,這是一種大部分圖形處理單元同時執行有用工作之情況。該工作被安排在執行緒程式內,而在這些程式在處理單元平行執行。
典型執行緒程式是以高度平行、高度類似操作來執行單一虛擬位址空間內的橫跨平行資料集,例如影像或影像集。若一應用程式需要執行多個相異的執行緒程式,則該圖形處理單元習用上一次會在一對應虛擬位址空間內執行該等不同的執行緒程式之一個執行緒程式,直到該等不同的執行緒程式已完成指派的工作。每一執行緒程式會被載入至一對應內文儲存區(Context)當中,以便在該圖形處理單元內執行。該內文儲存區包括虛擬位址空間狀態,其會被載入該圖形處理單元內的分頁表中。因為每一不同的執行緒程式在習用上需要一私用虛擬位址空間,任何時間上在圖形處理單元都只可執行一執行緒程式。
高效能計算應用程式一般都在高效能計算應用程式叢集上 執行,其習用上包括一組節點,每一節點都包括一中央處理單元及一圖形處理單元。每一節點通常指派有一組任務,其透過一訊息傳遞介面(MPI,message passing interface)任務可與其他節點上執行的其他任務通訊。運用高圖形處理單元利用率當成共用虛擬記憶體空間內平行執行緒程式實例,來有效率地執行典型的圖形處理單元計算任務。不過,對於已知傳統圖形處理單元執行模型,在已知圖形處理單元上一次只能執行一訊息傳遞介面任務。每一訊息傳遞介面任務都包括該圖形處理單元的一系列工作負載,產生一系列對應的圖形處理單元利用率。在一案例中,在圖形處理單元上針對一訊息傳遞介面任務只執行一執行緒或少數執行緒,導致圖形處理單元利用率不良及整體應用程式效能不彰。因此,某些高效能計算應用程式在圖形處理單元型高效能計算應用程式處理叢集上的執行效率不佳。一般而言,若任務包括少量執行緒實例且每一者都需要獨立虛擬位址空間的應用程式,當應用程式需要該圖形處理單元依序執行這些任務時將有不彰的執行結果。
如先前所例示,業界需要一種允許圖形處理單元同時執行具 有不同虛擬位址空間的任務之技術。
【簡述】
本發明之一具體實施例揭示一種在一平行處理子系統上同時執行具有不同虛擬位址空間的兩個或多個執行緒程式之方法,該方法包括:取得一組任務中繼資料,該組任務中繼資料包括與由一第一位址空間識別碼(ASID,first address space identifier)識別的一第一虛擬位址空間有關聯之一第一分頁表、及與由一第二位址空間識別碼識別的一第二虛擬位址空間有關聯之一第二分頁表;排程一第一執行緒程式,其與該第一虛擬位址空間有關聯,以便在該平行處理子系統的一第一處理核心內執行;及排程一第二執行緒程式,其與該第二虛擬位址空間有關聯,以便在該平行處理子系統的該第一處理核心或另一處理核心內執行,其中該第一執行緒程式執行時所產生的虛擬位址要求包括該第一位址空間識別碼,且該第二執行緒程式執行時所產生的虛擬位址要求包括該第二位址空間識別碼。
本發明之其他具體實施例包括但不限制一電腦可讀儲存媒體,包括由一處理器單元執行時導致該處理單元執行本說明書所述技術之指令、以及包括一處理單元構成執行本說明書所述技術之一計算裝置。
本發明的一項優點為一圖形處理單元可同時執行具有不同虛擬位址空間的不同任務,藉此改善特定應用程式當中的圖形處理單元利用率和效能。本發明的另一項優點為可使用位址空間隔離來執行圖形處理單元任務,藉此改善可靠度且降低除錯所伴隨的開發工作量。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧切換
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主機
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體橫桿單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧分割單元
220‧‧‧隨機動態存取記憶體
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧區域型暫存器檔案
305‧‧‧管線管理員
306‧‧‧共享記憶體
310‧‧‧串流多重處理器
312‧‧‧經線排程器與指令單元
315‧‧‧配置單元
320‧‧‧L1快取
321‧‧‧排程器表
322‧‧‧任務中繼資料
325‧‧‧preROP
328‧‧‧記憶體管理單元
330‧‧‧工作分配橫桿
335‧‧‧第一點五層快取
340‧‧‧工作分配單元
345‧‧‧任務表
352‧‧‧一致性位址映射單元
370‧‧‧指令L1快取
380‧‧‧記憶體與快取互連
407‧‧‧前端關聯切換
410‧‧‧位址空間識別碼表
412‧‧‧位址空間識別碼表輸入
414‧‧‧位址空間識別碼欄位
416‧‧‧分頁資料繫結識別碼欄位
420‧‧‧分頁表
422‧‧‧分頁表輸入
424‧‧‧虛擬位址欄位
426‧‧‧實體位址欄位
430‧‧‧轉換後備緩衝器
432‧‧‧轉換後備緩衝器輸入
434‧‧‧位址空間識別碼欄位
436‧‧‧虛擬位址欄位
438‧‧‧實體位址欄位
440‧‧‧處理核心
450‧‧‧圖形處理單元關聯
452‧‧‧任務中繼資料
454‧‧‧資源管理器
456‧‧‧代理主機
460‧‧‧應用程式處理
510‧‧‧位址空間識別碼
520‧‧‧虛擬位址
525‧‧‧佇列
530‧‧‧實體位址
610‧‧‧虛擬位址空間
620‧‧‧實體位址空間
630‧‧‧映射功能
710‧‧‧排程器
714‧‧‧位址空間識別碼
720‧‧‧計算工作分配器
750-754‧‧‧合作執行緒陣列
760-764‧‧‧網格
800‧‧‧方法
900‧‧‧方法
1000‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖內。不過值得注意的是,附圖只說明本發明的典型具體實施例,但並不對發明領域產生限制,本發明承認其他等效具體實施例。
第一圖為例示設置來實施本發明一或多個態樣的電腦系統方塊圖;第二圖為根據本發明之一具體實施例,用於第一圖中該電腦系統的一平行處理子系統之方塊圖;第三A圖為根據本發明之一具體實施例,第二圖中前端的方塊圖;第三B圖為根據本發明之一具體實施例,第二圖中平行處理單元之一者內一般處理叢集的方塊圖;第三C圖為根據本發明之一具體實施例,第三B圖中該串流多重處理器一部分的方塊圖;第四A圖例示根據本發明之一具體實施例,構成實施多個同時虛擬位址空間的一平行處理子系統;第四B圖例示根據本發明之一具體實施例的一位址空間識別碼表輸入;第四C圖例示根據本發明之一具體實施例的一分頁表輸入;第四D圖例示根據本發明之一具體實施例的轉換後備緩衝器輸入; 第五圖例示根據本發明之一具體實施例,將一位址空間識別碼表及虛擬位址轉換成一實體位址;第六圖例示根據本發明之一具體實施例,兩同時虛擬位址空間共同存在於一實體位址空間內;第七圖例示根據本發明之一具體實施例,構成執行具有不同虛擬位址空間的多個執行緒程式之一平行處理子系統;第八圖為根據本發明之一具體實施例,用於在該平行處理子系統上同時執行具有不同虛擬位址空間的兩或多個執行緒程式之方法步驟的流程圖;第九圖為根據本發明之一具體實施例,用於在複數個不同虛擬位址空間之一者內執行一虛擬對實體位址映射之方法步驟的流程圖;及第十圖為根據本發明之一具體實施例,用於執行一圖形處理單元關聯性之內任務深度排程之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應該了解,在沒有一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示設置來實施本發明之一或多個態樣之電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,central processing unit)102、以及一系統記憶體104,其通過一互連路徑來通訊。該互連路徑可包括一記憶體橋接器105。例如,記憶體橋接器105可為北橋晶片,透過匯流排或其他通訊路徑106(例如超傳輸連結)連接至一I/O(輸入/輸出)橋接器107。輸入/輸出橋接器107可為南僑晶片,接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如週邊組件互連(PCI)Express、加速圖形連接埠(Accelerated Graphics Port)或HyperTransport連結)耦接至記憶體橋接器105;在一具體實施例中,平行處理子系統112為傳遞像素給顯示裝置110(例 如傳統陰極射線管或液晶監視器)的圖形子系統。系統磁碟114亦連接至輸入/輸出橋接器107。一開關116提供輸入/輸出橋接器107與其他組件,像是網路配接器118及各種外接卡120和121之間的連接。其他組件(未明確顯示),包括萬用序列匯流排(USB,universal serial bus)或其他連接埠連接、CD光碟機、DVD光碟機、檔案記錄裝置等等,也可連接至輸入/輸出橋接器107。第一圖內顯示的許多通訊路徑,包括特地指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,及不同組件之間的連接都可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入針對圖形與視 訊處理最佳化的電路,例如包括視訊輸出電路,且構成一圖形處理單元(GPU,graphics processing unit)。在另一具體實施例中,平行處理子系統112併入針對一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。在另一具體實施例中,平行處理子系統112可合併一或多個其他系統元件以形成單一子系統,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107以形成一晶片系統(SoC,system on chip)。
將可瞭解本說明書中顯示的該系統僅為例示,所以可能有多 種變化與修改。包括橋接器的數量與配置、中央處理單元102的數量、及平行處理子系統112的數量之連接拓撲可依照需求加以修改。例如,在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,且其他裝置透過記憶體橋接器105及中央處理單元102而與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接至輸入/輸出橋接器107或直接連接至中央處理單元102,而不是連接至記憶體橋接器105。在其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型實施例可包括兩個或更多個中央處理單元102及兩個或更多個平行處理子系統112。本說明書中顯示的該等特定組件為選擇性;例如,可支援任何數量的外接卡或週邊裝置。在某些具體實施例中,開關116可被省略,且網路配接器118和外接卡120、121都直接連接至輸入/輸出橋接器107。
第二圖例示根據本發明之一具體實施例之平行處理子系統 112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,parallel processing unit)202,每一者連結本機平行處理(PP,parallel processing)記憶體204。一般來說,一平行處理子系統包括數量U個的平行處理單元,其中U1。(本說明書中多重類似物體的實例都用參考號碼標示出該物體,且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置實施,例如可程式處理器、特殊應用積體電路(ASIC,application specific integrated circuit)或記憶體裝置、或以任何其他技術可行方式。
請再次參閱第一圖和第二圖,在一具體實施例中,平行處理 子系統112內的某些或全部平行處理單元202為具有繪圖管線的圖形處理器,其設置成能執行關於依據自CPU 102及/或系統記憶體104經由記憶體橋接器105及第二通訊路徑113所供應的圖形資料來產生像素資料的多種作業、與本機平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動來儲存與更新像素資料、傳遞像素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一個或多個平行處理單元202、及用於一般用途計算的一或多個其他平行處理單元202。該等平行處理單元可相同或不同,且每一平行處理單元可擁有一專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202都可輸出資料至一個或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理 器,負責控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令以控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入一資料結構(第一圖或第二圖內未明確顯示),該資料結構可位於系統記憶體104、平行處理記憶體204、或可由中央處理單元102和平行處理單元202來存取的其他儲存位置。每一資料結構的指標器會被寫入一推送緩衝區,用以開始在該資料結 構內的該指令串流處理。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後非同步執行有關中央處理單元102操作的指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
請再次參閱第二圖及第一圖,每一平行處理單元202都包括 一I/O(輸入/輸出)單元205,其透過連接至記憶體橋接器105(或在替代具體實施例中,直接連接至中央處理單元102)的通訊路徑113而與電腦系統100的其餘組件通訊。平行處理單元202與電腦系統100的其餘組件之連接亦可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100擴充槽內的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107的這類匯流排橋接器整合在單一晶片上。在其他具體實施例中,平行處理單元202的某些或全部元件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結, 其中專屬通道為分配給每一平行處理單元202,如業界內所熟知。在此亦可使用其他通訊路徑。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),亦從通訊路徑113上接收所有傳入的封包(或其他信號),將該等傳入的封包導引至平行處理單元202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體橫桿單元210。主介面206可讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一平行處理單元202可較佳地實施一高度平行處理架構。如圖式詳細所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數量C的一般處理叢集(GPC,general processing cluster)208,其中C1。每個一般處理叢集208可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同種類的程式,或用於執行不同種類的計算。一般處理叢集208的分配絕大部分取決於針對每一類型程式或計算所賦予的工作負載。
一般處理叢集208從任務/工作單元207內的工作分配單元 接收要執行的處理任務,該工作分配單元接收指標器以處理任務,該等任務編碼為任務中繼資料(TMD,task metadata)並儲存在記憶體內。指向任務中繼資料的該指標器包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引、以及定義如何處理該資料的狀態參數與指令(例如要執行的程式)。任務/工作單元207從前端212接收任務,且確保在該等中繼資料之每一者所指定的處理開始之前,一般處理叢集208已設置成有效狀態。 一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。處理任務亦可從處理叢集陣列230接收。或者,該任務中繼資料可包括一參數,用以控制該任務中繼資料是否加入處理任務清單(或指向處理任務的指標器清單)的頭部或尾部,藉此提供優先順序之上的另一控制等級。
記憶體介面214包括數量D的分割單元215,這些單元每一 者直接連接至一部分平行處理記憶體204,其中D1。如所示,分割單元215的數量一般等於動態隨機存取記憶體(DRAM,dynamic random access memory)220的數量。在其他具體實施例中,分割單元215的數量可以不等於記憶體裝置的數量。精通技術人士將了解,動態隨機存取記憶體220可使用其他合適的裝置取代,且可為一般傳統設計,因此省略其詳細說明。 像是訊框緩衝區或結構映射的這類呈現器目標可通過動態隨機存取記憶體220儲存,允許分割單元215平行寫入每一呈現器目標的部分,以有效使用平行處理記憶體204的可用頻寬。
任一一般處理叢集208都可處理寫入平行處理記憶體204 內的任一動態隨機存取記憶體220的資料。記憶體橫桿單元210設置成將每個一般處理叢集208的輸出繞送至任意分割單元215的輸入或至其他一般處理叢集208來做進一步處理。一般處理叢集208透過記憶體橫桿單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一具體實施例中,記憶體橫桿單元210具有一連接至記憶體介面214以與輸入/輸出單元205通訊、以及一連接至本機平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202本 機上的其他記憶體通訊。在第二圖所示的具體實施例中,記憶體橫桿單元210直接連接至輸入/輸出單元205。記憶體橫桿單元210可使用虛擬通道,以分隔一般處理叢集208與分割單元215之間的流量串流。
一般處理叢集208同樣可程式編輯來執行有關廣泛應用的 處理任務,包括但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用物理定律來決定物體位置、速度以及其他屬性)、影像呈現器運算(例如曲線細分著色、影點著色、幾何著色及/或像素著色程式)等等。平行處理單元202可從系統記憶體104及/或本機平行處理記憶體204將資料傳輸至內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或本機平行處理記憶體204,其中這種資料可由其他系統組件存取,包括中央處理單元102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的本機平行處理記憶 體204,包括非本機記憶體,並且可使用本機記憶體和系統記憶體的任何組合。例如:平行處理單元202可為統一記憶體架構(UMA,unified memory architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或沒有專屬圖形(平行處理)記憶體,且平行處理單元202完全或幾乎完全使用系統記憶體。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或如同具高速連結(例如PCI Express)的獨立晶片提供,其透過橋接器晶片或其他通訊方式將平行處理單元202連接至系統記憶體。
如上述,平行處理子系統112可包括任何數量的平行處理單 元202。例如:單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接至通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此一致或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的本機平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高流量的方式來處理資料。合併一或多個平行處理單元202的系統可實作成多種組態及型式,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式 系統等等。
多重平行任務排程
多重處理任務可在一般處理叢集208上同時執行,並且一處理任務可在執行期間產生一或多個「子」處理任務。任務/工作單元207接收該等任務,且動態排定要由一般處理叢集208執行的處理任務及子處理任務。
第三A圖為根據本發明之一具體實施例,第二圖中任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300及工作分配單元340。任務管理單元300根據執行優先順序等級來組織要排程的任務。針對每一優先順序等級,任務管理單元300儲存指標清單到對應至排程器表321內任務的任務中繼資料322,其中該清單可用連結清單來實施。任務中繼資料322可儲存在PP記憶體204或系統記憶體104內。任務管理單元300接受任務且將該等任務儲存在排程器表321內的速率與任務管理單元300排定任務來執行的速率無關,因此任務管理單元300可在排定該等任務之前集中許多任務。然後根據優先順序資訊或使用其他技術,例如輪轉排程,來排定集中的任務。
工作分配單元340包括一任務表345,其具有的時槽之每一者是由任務中繼資料322佔用以供任務的執行。任務管理單元300可排定任務在任務表345內有空時槽時執行。當無空時槽時,未佔用時槽的較高優先順序任務會驅逐未佔用時槽的較低優先順序任務。一任務遭到驅逐時,該任務會停止,並且若該任務尚未執行完畢,則該任務的指標會加入要排定的任務指標清單中,如此稍後會恢復執行該任務。在一任務執行期間產生子處理任務時,將該子任務的指標加入要排定的任務指標清單內。在處理叢集陣列230內執行的任務中繼資料322可產生一子任務。
不像從前端212的任務/工作單元207所接收的任務,子任務是從處理叢集陣列230接收。子任務並未插入推送緩衝區或傳輸至該前端。子任務已產生或該子任務的資料已儲存在記憶體內時,並不會通知中央處理單元102。另一差異在於,透過推送緩衝區提供的該等任務是由該應用程式定義,而該等子任務則在該等任務執行期間動態產生。
任務處理概觀
第三B圖為根據本發明之一具體實施例,第二圖中平行處理單元202之一者內之一般處理叢集208的方塊圖。每個一般處理叢集208都可構成同時執行大量執行緒,其中「執行緒」代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令多重資料(SIMD,single-instruction,multiple-data)指令發行技術用於支援大量執行緒的平行執行,而不用提供多重獨立指令單元。在其他具體實施例中,單一指令多重執行緒(SIMT,single-instruction,multiple-thread)技術用於支援大量一般同步執行緒的平行執行,其使用共用指令單元來發出指令至一般處理叢集208之每一者內的處理引擎集。在單一指令多重資料執行架構下,所有處理引擎通常都執行相同的指令;在單一指令多重執行緒執行架構下,允許不同執行緒透過一已知執行緒程式更迅速遵循分散的執行路徑。業界內精通技術人士將了解,單一指令多重資料處理架構代表一SIMT處理架構的功能子集。
透過將處理任務分配至串流多重處理器(SM,streaming multiprocessor)310的管線管理員305可有利地控制一般處理叢集208的操作。管線管理員305也可構成利用指定串流多重處理器310所輸出已處理資料的目的地,控制一工作分配橫桿330。
在一具體實施例中,每個一般處理叢集208都包括數量M 的串流多重處理器310,其中M1,每一串流多重處理器310都構成處理一或多個執行緒群組。另外,每一串流多重處理器310有利地包括可管路化的一致功能執行單元集(例如執行單元與載入儲存單元,在第三C圖內顯示為執行單元302及載入儲存單元303),允許完成先前指令之前發出新指令,如先前技術所知。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數以及對數函數等等);並且該相同功能單元可用來執行不同運算。
傳輸至特定的一般處理叢集208的一系列指令構成一執行緒,如本說明書先前所定義,且整個通過串流多重處理器310內平行處理 引擎(未顯示)的特定數量同時執行的執行緒在此稱為「線緒」或「執行緒群組」。如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內的不同處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還較少的執行緒,在此案例中,某些處理引擎會在處理該執行緒群組的週期過程閒置。一執行緒群組亦可包括數量比串流多重處理器310內處理引擎數量還更多的執行緒,在此案例中,處理會於連續時脈週期執行。因為每一串流多重處理器310都可同時支援最多G個執行緒群組,所以在任何已知時間上一般處理叢集208內都可執行最多G *M 個執行緒群組。
此外,在串流多重處理器310內可同時啟用複數個相關執 行緒群組(在不同執行階段內)。此整個執行緒群組稱為「合作執行緒陣列」(CTA,cooperative thread array)或「執行緒陣列」。特定合作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒個數,其通常為串流多重處理器310內平行處理引擎數量的整數倍數,且m為串流多重處理器310內同時啟用的執行緒群組個數。合作執行緒陣列的大小一般由程式設計師及該合作執行緒陣列可用的硬體資源數量,例如記憶體或暫存器,來決定。
每一串流多重處理器310都包括第一層(L1)快取(如第三C 圖所示),或使用串流多重處理器310之外的對應L1快取內的空間,其用於執行負載與儲存操作。每一串流多重處理器310亦可存取所有一般處理叢集208之間共享的第二層(L2)快取,且可用於在執行緒之間傳輸資料。最後,串流多重處理器310亦可存取晶片外「全域」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。平行處理單元202之外的任何記憶體都可用來當成全域記憶體。此外,層1.5(L1.5)快取335可包括在一般處理叢集208內,構成接收及擁有透過由串流多重處理器310要求的記憶體介面214從記憶體擷取的資料,包括指令、一致性資料及常數資料,且將該要求的資料提供給串流多重處理器310。具有一般處理叢集208中多重串流多重處理器310的具體實施例得利於分享共用指令和在L1.5快取 335內快取的資料。
每個一般處理叢集208都可包括一記憶體管理單元(MMU,memory management unit)328,用來將虛擬位址映射至實體位址。在其他具體實施例中,MMU 328可位於記憶體介面214、多處理器串流多重處理器310或L1快取320之內。MMU 328用來透過分頁表420,將虛擬位址映射至實體位址。MMU 328可包括轉換後備緩衝器(TLB)或快取,來儲存部分分頁表420。該實體位址經過處理來分配表面資料存取地點,以便讓要求有效率地交錯於分割單元215之間。該快取線索引可用於指示一快取線的要求是否命中或錯失。
在圖形與計算應用當中,一般處理叢集208可設置成使得每一串流多重處理器310耦接至一配置單元315,用於執行配置映射操作,例如決定配置樣本位置、讀取文例資料以及篩選該配置資料。配置資料從內部配置L1快取(未顯示)讀取,或在某些具體實施例中從串流多重處理器310內的該L1讀取,且依照需求從所有一般處理叢集208之間共享的L2快取、平行處理記憶體204或系統記憶體104擷取。每一串流多重處理器310都輸出處理過的任務至工作分配橫桿330,以將該處理過的任務提供給另一一般處理叢集208供進一步處理,或透過記憶體橫桿單元210將該處理過的任務儲存在L2快取、平行處理記憶體204或系統記憶體104內。preROP(預先光柵運算)325用來從串流多重處理器310接收資料、將資料導引至分割單元215內的光柵運算單元,且執行顏色混合、組織像素顏色資料及執行位址轉換的最佳化。
將可瞭解本說明書中顯示的該核心架構僅為例示,所以可能有多種變化與修改。任何數量的處理單元,例如串流多重處理器310或配置單元315、preROP 325都可包括在一般處理叢集208內。此外,如第二圖內所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,如此執行行為並不取決於接收特定處理任務的一般處理叢集208。此外,每個一般處理叢集208可獨力地運作,各自運用獨立且特定的處理單元、L1快取來執行一個或多個應用程式的任務。
精通此技術人士將了解,第一圖、第二圖、第三A圖和第 三B圖內描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括但不受限於一個或多個中央處理單元、一個或多個多核心中央處理單元、一個或多個平行處理單元202、一個或多個一般處理叢集208、一個或多個圖形或特殊用途處理單元等等。
在本發明的具體實施例中,使用一計算系統的平行處理單元 202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定一執行緒是要處理輸入資料集的哪個部分、及/或決定一執行緒是要產生或寫入輸出資料集的哪個部分。
每個執行緒指令的序列可包括至少一個指令,其定義該代表 性執行緒與該執行緒陣列的一或多個其他執行緒之間的合作行為。例如:每一執行緒指令的順序可包括在該順序內特定點上中斷該代表執行緒運算執行直到一或多個其他執行緒到達該特定點上為止之指令、讓該代表執行緒將資料儲存至一共享記憶體內之指令、讓該代表執行緒自動讀取與更新一共享記憶體內存資料之指令等等,其中一或多個該等其他執行緒可根據其執行緒ID來存取共享記憶體。該合作執行緒陣列程式也可包括一指令,計算該共享記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用一合作執行緒陣列的一執行緒寫入共享記憶體內一已知位置,並且以可預測方式用相同合作執行緒陣列的不同執行緒從該位置當中讀取。因此,本發明可支援在執行緒之間共享的任何資料圖案,並且一合作執行緒陣列內的任何執行緒都可與相同合作執行緒陣列內任何其他執行緒共享資料。在合作執行緒陣列執行緒之間共享的資料內容(若有的話)由該合作執行緒陣列程式決定。因此,在使用合作執行緒陣列的特定應用當中,根據該合作執行緒陣列程式,合作執行緒陣列的執行緒彼此之間可共享資料或是不共享資料,並且在本說明書中所使用的「合作執行緒陣列」與「執行緒陣列」兩者為同義詞。
第三C圖為根據本發明之一具體實施例,第三B圖中串流 多重處理器310的方塊圖。串流多重處理器310包括一指令L1快取370,用來透過L1.5快取335接收指令與常數。經線排程器與指令單元312從指令L1快取370接收指令與常數,並且根據該等指令與常數控制區域型暫存器檔案304以及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302及P個載入儲存單元(LSU,load-store unit)303。
串流多重處理器310提供具備不同存取階層的晶片上(內部) 資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但是無法寫入,並且可用於儲存定義每一執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括對應每一執行緒(或串流多重處理器310內每一執行單元302)的暫存器,其儲存一相對應執行緒ID;每一執行緒ID暫存器都只能由個別一個執行單元302存取。特殊暫存器也可包括額外暫存器,可由執行任務中繼資料322(或由所有載入儲存單元303)所呈現相同處理任務的所有執行緒讀取,其儲存一合作執行緒陣列識別碼、該合作執行緒陣列維度、該合作執行緒陣列所屬網格的維度(或若任務中繼資料322編碼一佇列任務而非一網格任務時的佇列位置)以及指派合作執行緒陣列的任務中繼資料322之識別碼。
若任務中繼資料322為一網格任務中繼資料,則執行任務 中繼資料322會啟動並執行固定數量的合作執行緒陣列,來處理佇列525內所儲存的固定數量資料。合作執行緒陣列的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在任務中繼資料322內,或任務中繼資料322可儲存將由合作執行緒陣列處理的資料之指標。任務中繼資料322也儲存該合作執行緒陣列所執行程式的開始位址。
若任務中繼資料322為佇列任務中繼資料,則使用任務中 繼資料322的佇列功能,表示不一定要處理固定的資料量。佇列記錄儲存資料,供指派給任務中繼資料322的該等合作執行緒陣列處理。該等佇列記錄也呈現執行緒執行期間由另一任務中繼資料322產生的子任務,藉此提供巢狀平行。一般來說,執行緒的執行或包括該執行緒的合作執行緒陣 列會中止,直到子任務執行完成為止。該佇列可儲存在任務中繼資料322內或其他地方。當該佇列儲存在其他地方時,任務中繼資料322內會儲存對應該佇列的佇列指標。有利的是,當代表該子任務的任務中繼資料322正在執行時,由該子任務產生的資料可寫入該佇列。該佇列可實施為一環形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的合作執行緒陣列具有隱含的網格寬度、高度和 深度參數,指示該網格內個別合作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收到的命令,並且在一處理任務期間不會改變。前端212排程執行每一處理任務。每一合作執行緒陣列都關聯於一特定任務中繼資料322,以同時執行一或多個任務。此外,單一一般處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同合作執行緒陣列(或任 何載入儲存單元303)內任何執行緒能讀取但無法寫入的執行時間參數(常數)。在一具體實施例中,裝置驅動程式103在導引串流多重處理器310開始執行使用這些參數的任務之前,提供參數該參數記憶體。任何合作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)都可透過記憶體介面214存取全域記憶體。全域記憶體的一部分可儲存在L1快取320內。
每一執行緒都使用區域型暫存器檔案304當成挖掘空間;每 一暫存器都分配給一個執行緒專用,並且任何區域型暫存器檔案304內的資料都只能由分配給該暫存器的該執行緒存取。區域型暫存器檔案304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此每一記錄都可儲存例如32位元字)。一通路指派給該N個執行單元302以及P個載入儲存單元載入儲存單元303的每一者,並且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,進而達到單一指令多重資料執行。通路的不同部分可分配給該G 個同時執行緒群組中不同的執行緒,如此區域型暫存器檔案304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,區域型暫存器檔案304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一統一L1快 取375儲存N個執行單元302及P個載入儲存單元載入儲存單元303的每一通路之統一值或常數值。
共享記憶體306可由單一合作執行緒陣列內的執行緒存 取;換言之,共享記憶體306內任何位置都可由相同合作執行緒陣列內任何執行緒(或串流多重處理器310內任何處理引擎)來存取。共享記憶體306可實施為具有互連的一共享暫存檔或共享晶片上快取記憶體,允許任何處理引擎從該共享記憶體內任何位置讀取或寫入。在其他具體實施例中,共享的狀態空間可映射至晶片外記憶體的每一合作執行緒陣列區域,且快取在L1快取320內。該參數記憶體可實施為該相同共享暫存檔或實施共享記憶體306的共享快取記憶體內一指定區段,或實施為載入儲存單元303具有唯讀存取的一別共享暫存檔或晶片上快取記憶體。在一具體實施例中,實施該參數記憶體的區域也用於儲存該合作執行緒陣列ID和任務ID,以及合作執行緒陣列和網格尺寸或佇列位置,實施該特殊暫存器的位置。串流多重處理器310內每一載入儲存單元303都連結至一致性位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換至每一分散記憶體空間內一位址。因此,利用指定該統一記憶體空間內一位址,可使用一指令來存取任何該本機、共享或全域記憶體空間。
每一串流多重處理器310內的L1快取320都可用於快取私 用(Private)每一執行緒區域資料,並且也快取每一應用程式全域資料。在某些具體實施例中,該每一合作執行緒陣列共享資料可快取在L1快取320內。載入儲存單元303可透過一記憶體與快取互連380連結至共享記憶體306及L1快取320。
獨立虛擬位址空間
本發明的具體實施例可讓一平行處理子系統,例如圖形處理單元,同時執行具有不同、獨立虛擬位址空間的執行緒程式。每一虛擬位址空間都可共同存在一或多個其他虛擬位址空間,讓該圖形處理單元可同時執行該等執行緒程式。每一執行緒程式都可在與一對應應用程式處理有關聯的一虛擬位址空間內操作,其中該處理可分配記憶體並且傳遞虛擬位址參考至該執行緒程式。利用讓該平行處理系統同時執行不同虛擬位址空 間內的多個執行緒程式,可達成較高的圖形處理單元利用率以及效能,賦予更寬廣的應用範圍。
第四A圖例示根據本發明之一具體實施例,構成實施多個 同時虛擬位址空間的第一圖之平行處理子系統112。在特定具體實施例中,平行處理子系統112包括一圖形處理單元。針對實施統一虛擬記憶體(UVM,unified virtual memory)的具體實施例,每一應用程式處理460可包括要在一虛擬位址空間內執行的圖形處理單元計算任務,其中該虛擬位址空間在該應用程式處理460與任何相關圖形處理單元計算任務之間都一致。此統一能使得記憶體參照在應用程式處理460及圖形處理單元計算任務之間無縫地通訊。一般而言,每一應用程式處理460與其他應用程式處理460會在不同的虛擬位址空間內操作。每一應用程式關聯都包括由一主作業系統維護的一應用程式內容分頁表,用於將與該應用程式有關聯的該虛擬位址空間映射至通常由應用程式處理460共享的一實體位址空間。
已知的應用程式處理460可透過執行要求至驅動程式103, 來啟動圖形處理單元計算任務,驅動程式103會將該圖形處理單元計算任務的執行資訊加入至一圖形處理單元關聯450,並且將圖形處理單元關聯450加入至該圖形處理單元的工作佇列。GPU關聯450包括任務中繼資料(TMD,task metadata)452,其中包括用於執行一或多個執行緒程式的資訊,該等程式實施可在圖形處理單元內同時執行的一或多個圖形處理計算任務。該等一或多個執行緒程式可與相同圖形處理單元關聯450內定義的一或多個不同虛擬位址空間有關聯。此時定義一虛擬位址空間的一分頁表,用於任務中繼資料452的一實例。任務中繼資料452的每一實例都包括執行資訊,用於一圖形處理單元關聯450之內一有關聯執行緒程式。
已知任務中繼資料452內的一分頁表可從一對應應用程式 內容分頁表當中獲得。或者,已知任務中繼資料452內的一分頁表可參照一對應應用程式內容分頁表。在一具體實施例中,應用程式關聯450位於系統記憶體104之內。驅動程式103內的資源管理器(RM,resource manager)454可將該等一或多個執行緒程式(其中每一都指派給任務中繼資料452)收容在一圖形處理單元關聯450,用於在單一圖形處理單元關聯內同時執行。 在一具體實施例中,代理主機456包括一使用者空間程序,可將要求通訊至資源管理器454。例如:某些執行要求與分配要求可透過代理主機456傳輸至資源管理器454。
如先前第二圖內的描述,主機206能從一記憶體內取得資 料,例如取得系統記憶體104內的資料。該資料可包括有關佇藏用於執行的一或多個圖形處理單元關聯450之資訊。主機206依序一次選擇一圖形處理單元關聯450用於執行。前端212讀取圖形處理單元關聯450內的任務中繼資料452,且根據圖形處理單元450設置平行處理單元202以執行一或多個執行緒程式。前端關聯切換(FECS,Front end context switch)407設置記憶體管理單元328,以將正確虛擬位址提供給實體位址映射。直到前端關聯切換407完成與圖形處理單元關聯450有關聯的所有分頁表的設置後,才會開始執行已知圖形處理單元關聯450。在一個實施當中,前端關聯切換407產生「完成」信號,指出已經完成該分頁表以及相關設置步驟,藉此促進前端212指出分頁表設置完成至任務/工作單元207。此指示可讓任務/工作單元207開始排程與該分頁表有關聯的任務。
任務中繼資料452內的每一分頁表都由前端關聯切換407 關聯於一位址空間識別碼(ASID,address space identifier),透過繫結指令傳輸至記憶體管理單元328。每一執行續程式都關聯於一位址空間識別碼,該識別碼在執行期間附加於該執行緒程式所產生的每一虛擬記憶體要求。例如:若一已知圖形處理單元關聯450包括兩不同執行緒程式的執行資訊,並且每一者都關聯於一不同虛擬位址空間,然後該兩執行緒程式之一者可關聯於位址空間識別碼=0,而該兩執行緒程式的另一可關聯於位址空間識別碼=1。在此範例中,圖形處理單元關聯450也包括一個分頁表用於一虛擬位址空間零(ASID=0),及一不同分頁表用於虛擬位址空間一(ASID=1)。 在執行期間,由該第一執行緒程式產生的每一虛擬記憶體存取要求包括一虛擬位址及一位址空間識別碼0,來自此執行緒程式的分頁表查詢要求會被導引至位址空間識別碼ASID=0的該分頁表。同樣地,由該第二執行緒程式產生的每一虛擬記憶體存取要求包括一虛擬位址及一位址空間識別碼1,將來自此執行緒程式的分頁表查詢要求導引至位址空間識別碼ASID=1 的該分頁表。
處理核心440可執行預定任務的特定集合,例如將記憶體區 塊從一個位址範圍複製到另一位址範圍。處理核心440接收來自前端關聯切換407的工作,並且可與串流多重處理器310結合操作,但是不需要一般程式能力。在一具體實施例中,主機206指引處理核心440的操作。
記憶體管理單元328包括位址空間識別碼表410、分頁表420 以及轉換後備緩衝器430。位址空間識別碼表410包括一或多個位址空間識別碼表輸入,其將一位址空間識別碼關聯於一對應分頁表420。一般而言,由串流多重處理器310內執行的一執行緒程式所產生之每一記憶體要求都包括一虛擬位址以及一位址空間識別碼值,以選擇一分頁表420來執行從該虛擬位址映射至一實體位址。位址空間識別碼表410將一位址空間識別碼映射至一對應分頁表420。然後分頁表420從一虛擬位址將一映射提供給一實體位址。分頁表420顯示於記憶體管理單元328,但是可位於任何技術可行的記憶體子系統內,例如系統記憶體104或平行處理記憶體204。
轉換後備緩衝器430可將虛擬位址快取至實體位址映射,其 中每一映射代表一快取輸入。每一快取輸入標籤包括一位址空間識別碼以及一虛擬位址。每一快取輸入值都包括一實體位址。轉換後備緩衝器命中(TLB hit)會發生在當轉換後備緩衝器430所包括之一快取輸入符合一記憶體存取要求的位址空間識別碼及虛擬位址輸入時。在轉換後備緩衝器命中的情況下,該轉換後備緩衝器提供一對應實體位址給該記憶體存取要求。 轉換後備緩衝器錯失(TLB miss)會發生在當轉換後備緩衝器430不包括匹配位址空間識別碼以及虛擬位址輸入的一快取輸入時。轉換後備緩衝器430可由任何可行技術來實施,來決定該位址空間識別碼輸入以及虛擬位址輸入是否造成轉換後備緩衝器命中或轉換後備緩衝器錯失。在一具體實施例中,一內容可定址記憶體電路可儲存一位址空間識別碼以及一虛擬位址配對,當成用來決定轉換後備緩衝器命中或錯失的搜尋標籤。當該內容可定址記憶體能將一輸入位址空間識別碼以及虛擬位址配對匹配至一先前儲存的標籤時,代表轉換後備緩衝器命中,此時該內容可定址記憶體會選擇該轉換後備緩衝器內儲存的一對應實體位址以完成一虛擬對實體映射。這種 技術可完全關聯於該搜尋標籤,而實施其他技術可達到不同程度的關聯性。在轉換後備緩衝器錯失的情況下,記憶體管理單元328選擇由包括該記憶體存取要求的一位址空間識別碼所識別之一分頁表420,且根據用於一虛擬位址的一記憶體存取要求,透過該已識別分頁表420執行一虛擬位址至實體位址轉換。一旦已經識別一分頁表420,將分頁表資訊提供給該轉換操作,則任何技術可行技術都可用來執行該虛擬對實體轉換。若分頁表420無法將該虛擬位址映射至一實體位址,則該記憶體存取要求產生一錯誤,指出該記憶體存取要求無效。
由串流多重執行緒310內一執行緒程式所使用的一特定位 址空間識別碼可透過一繫結指令關聯於一指定分頁表430,其從前端關聯切換407產生並傳輸至記憶體管理單元328。該繫結指令也用來使得位於轉換後備緩衝器430內的虛擬對實體映射資料無效。如此,位址空間識別碼值可重複使用於後續執行的圖形處理單元關聯450。
第四B圖例示根據本發明之一具體實施例的一位址空間識 別碼表輸入412。位址空間識別碼表輸入412包括一位址空間識別碼欄位414以及一對應的分頁資料繫結識別碼(PDBID,page data bind identifier)欄位416,其指向位於記憶體內一分頁表,用於位址空間識別碼欄位414內指定的該位址空間識別碼值。在一具體實施例中,分頁資料繫結識別碼416為一分頁目錄基礎(PDB,page directory base),其對應至記憶體內分頁表420的一實體位址參照。該分頁表可位於平行處理單元記憶體204或系統記憶體104之內。
第四C圖例示根據本發明之一具體實施例的一分頁表輸入 422。分頁表輸入(PTE,page table entry)422包括一虛擬位址欄位424及一對應的實體位址欄位426。一已知分頁表關聯於一特定位址空間識別碼,這暗示關聯於虛擬位址欄位424內指定的一虛擬位址。
第四D圖例示根據本發明之一具體實施例的轉換後備緩衝 器輸入432。轉換後備緩衝器輸入432包括一位址空間識別碼欄位434、一虛擬位址欄位436及一對應的實體位址欄位438。位址空間識別碼欄位434與虛擬位址欄位436包括一查詢標籤,用於找尋實體位址欄位438。一已知 轉換後備緩衝器430可包括多個轉換後備緩衝器輸入432,其為在位址空間識別碼欄位434之內具有位址空間識別碼值之混合。在轉換後備緩衝器輸入432所指定一虛擬對實體映射操作內,轉換後備緩衝器430利用將位址空間識別碼欄位434當成轉換後備緩衝器輸入432該查詢標籤的一部分,可快取虛擬位址至實體位址映射以用於獨立虛擬位址空間。
第五圖例示根據本發明之一具體實施例,將一位址空間識別 碼及一虛擬位址(VA,virtual address)轉換成一實體位址(PA,physical address)。此操作可執行以回應一轉換後備緩衝器430內發生的失敗。位址空間識別碼510和虛擬位址520包括一查詢要求。位址空間識別碼510用來在位址空間識別碼表410內執行一查詢。在此範例中,該查詢匹配位址空間識別碼表輸入412(1)中儲存的位址空間識別碼,其參照分頁表420(1)。 從此虛擬位址520用來在分頁表420(1)內執行一查詢。在此範例中,該查詢匹配分頁表輸入422(e)的虛擬位址欄位424。分頁表輸入422(e)之內一對應實體位址欄位426完成至實體位址530的一映射操作,其設定為分頁表輸入422(e)中的實體位址欄位426之值。多個分頁表420可維持保持啟動,且轉換後備緩衝器430可在發生失敗時,從多個分頁表420當中任一個取得虛擬對實體位址映射。針對每一虛擬位置空間維持不同的分頁表420,如位址空間識別碼所指定,可同時存在多個虛擬位址空間,並且映射至一共用實體位址空間,如底下第六圖內所例示。在一具體實施例中,位址空間識別碼指定一圖形處理單元關聯及與該圖形處理單元關聯有關聯之一特定分頁表識別碼。
第六圖例示根據本發明之一具體實施例,兩同時虛擬位址空 間610(0)、610(1)共同存在於一實體位址空間620內。虛擬位址空間610(0)包括複數個虛擬位址分頁,其透過映射功能630映射至實體位址空間620之內對應的實體位址分頁。同樣地,虛擬位址空間610(1)包括複數個虛擬位址分頁,其映射至實體位址空間620之內對應的實體位址分頁。
如所示,虛擬位址空間610(0)包括:一虛擬位址分頁 0x0..0000,其映射至實體位址分頁0x0..0000;及一虛擬位址分頁0x0..0001,其映射至實體位址分頁0x0..0001。虛擬位址空間610(1)也包括虛擬位址分 頁0x0..0000和0x0..0001,但是這些虛擬位址分頁分別映射至實體位址分頁0x0..0002和0x0..0003。一應用程式關聯405可包括分配在虛擬位址空間610(0)之內的記憶體,並且一不同的應用程式關聯可包括分配在虛擬位址空間610(1)之內的記憶體。利用維護由位址空間識別碼來識別的不同虛擬位址空間,在平行處理子系統112上執行的執行緒程式可一致管理資源並且從在中央處理單元102上執行的應用程式碼來分配。在一使用模型中,特定實體位址分頁映射至兩或多個虛擬位址空間。在這種使用模型中,該實體位址分頁在對應執行關聯內包括具有兩或多個不同虛擬位址代表的一共享記憶體分頁。
第七圖例示根據本發明之一具體實施例,啟動平行處理子系統112來執行具有不同虛擬位址空間,其包括一關聯的多個執行緒程式。前端212讀取第四A圖的任務中繼資料452,包括選擇由主機206執行的一圖形處理單元關聯450。每一任務中繼資料452都包括一位址空間識別碼714。在一具體實施例中,資源管理器454指派一位址空間識別碼714至每一不同的任務中繼資料452。排程器710決定一特定任務中繼資料452應該排程來執行並傳輸一執行要求至計算工作分配器(CWD,compute work distributor)720,其將工作分配給一或多個串流多重處理器310之間的任務中繼資料452,以建立由任務中繼資料452指定的一或多個合作執行緒陣列之網格。如先前第三B圖內所討論,每一合作執行緒陣列都包括一或多個執行緒群組。合作執行緒陣列的每一執行緒群組都繫結至一共用位址空間識別碼714。在一具體實施例中,排程器710包括第三A圖的任務管理單元300,且計算工作分配器720包括工作分配單元340。
此時可實施不同的分配策略,將合作執行緒陣列的網格映射至可用的串流多重處理器310上。此處稱為「深層分配」的一種方式較佳將與相同網格有關聯的合作執行緒陣列指派至最少量的不同串流多重處理器310,以便針對轉換後備緩衝器快取以及資料快取產生最大快取密切關係。例如:若一個串流多重處理器310可容納一完整網格,則計算工作分配器720將所有合作執行緒陣列指派給一串流多重處理器310上的該網格。繼續該範例,網格760包括合作執行緒陣列750,其指派給串流多重處 理器310(0)。同樣地,網格762包括合作執行緒陣列752,其指派給串流多重處理器310(1),且網格764包括合作執行緒陣列754,其指派給串流多重處理器310(n)。合作執行緒陣列750可能展現出對於轉換後備緩衝器查詢以及資料快取的密切關係。同樣地,合作執行緒陣列752和754可能展現出類似的快取密切關係,這樣通常會改善整體效能。
深層分配適合用於需要多個、不同虛擬位址空間,以容納不 同執行緒程式同時執行多次進入一共用圖形處理單元關聯內之案例。深層分配一般利用同時允許多個較小網格,將圖形處理單元利用率最大化。在本發明的具體實施例中,利用允許不同網格所需的多個虛擬位址空間同時存在於轉換後備緩衝器430以及記憶體管理單元328內,以啟用深層分配。 廣分配在可用的串流多重處理器310之上展開與特定網格有關聯的合作執行緒陣列。廣分配適用於其中一個網格構成需要大量全都在相同虛擬位址空間內操作的合作執行緒陣列之案例。廣分配一般將與該任務有關聯的執行緒間之平行處理最大化,將單獨任務的效能最大化。利用每一任務中繼資料452的該屬性位址空間識別碼417,幫助偵測是否應該使用該深層分配。例如:當已經排定執行的一圖形處理單元關聯450之內多重任務中繼資料452之間呈現多重、不同位址空間識別碼值時,則採用深層分配為較佳選擇。
第八圖為根據本發明之一具體實施例,用於在該平行處理子系統上同時執行具有不同虛擬位址空間的兩或多個執行緒程式之方法800的流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖、第三C圖、第四A圖、第五圖和第七圖的系統來描述方法800,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。在一具體實施例中,方法800由一平行處理單元執行,例如第二圖的平行處理單元202。
方法800從步驟810開始,其中該平行處理單元取得一組任務中繼資料描述,其用於與圖形處理單元關聯之任務,例如第四A圖的圖形處理單元關聯450。每一任務中繼資料都包括用來在平行處理單元上執行一任務之資訊。該資訊包括參照至實施該任務的一執行緒程式;及一對應 分頁表,用於將該任務產生的虛擬位址轉換成實體位址。在步驟820內,該平行處理單元內的一排程器排定每一任務在一可用串流多重處理器上執行,例如第三B圖的串流多重處理器310。在步驟830,該平行處理單元內的一前端關聯切換單元將該圖形處理單元關聯內每一不同的分頁表和對應位址空間識別碼繫結至一串流多重處理器及轉換後備緩衝器。繫結具有將一分頁表及該分頁表的位址空間識別碼關聯至一執行緒程式之效果,其中該執行緒程式可使用由該位址空間識別碼所識別及由該分頁表所映射之該虛擬位址空間。繫結也可具有讓準備用於執行該圖形處理單元關聯的一轉換後備緩衝器無效之效果,其代表與該轉換後備緩衝器內先前快取的映射無關之新關聯。
在步驟840,該平行處理單元執行一對應串流多重處理器上 排定的每一任務。在執行期間,每一任務都產生一或多個記憶體存取要求至一有關聯虛擬位址空間。該虛擬位址空間由與該任務繫結的一位址空間識別碼值來識別。初始時,對一虛擬位址要求一記憶體存取會造成轉換後備緩衝器錯失。第一轉換後備緩衝器錯失會發生在當第一串流多重處理器第一次產生一第一記憶體存取要求至一第一虛擬位置時。第二轉換後備緩衝器錯失會發生在當第二串流多重處理器第一次產生一第二記憶體存取要求至一第二虛擬位置時。每一記憶體存取要求都包括一虛擬位址以及一位址空間識別碼。該虛擬位址與該位址空間識別碼都必須與目標轉換後備緩衝器內一轉換後備緩衝器輸入標籤相符,才會造成轉換後備緩衝器命中。 一轉換後備緩衝器命中表示該虛擬位址與位址空間識別碼包括具有一目標轉換後備緩衝器內一快取映射的一記憶體存取要求。轉換後備緩衝器錯失表示該轉換後備緩衝器目前並不具有一要求的虛擬位址以及位址空間識別碼之快取映射。在步驟850內,該平行處理單元內的一記憶體管理單元,例如第三B圖的記憶體管理單元328,會執行第一分頁表查詢,以回應來自該第一串流多重處理器的第一轉換後備緩衝器錯失。該第一分頁查詢從一第一虛擬位址與一第一位址空間識別碼至一對應實體位址的組合,產生一第一映射。該第一映射在該第一目標轉換後備緩衝器內快取。在步驟852,該記憶體管理單元會執行一第二分頁表查詢,以回應該第二轉換後備 緩衝器錯失。該第二記憶體存取要求包括一第二位址空間識別碼,要求該記憶體管理單元使用一第二分頁表執行該第二分頁查詢,由該第二位址空間識別碼所識別。該第二映射在該第二目標轉換後備緩衝器內快取。該第一目標轉換後備緩衝器以及第二目標轉換後備緩衝器可包括相同的轉換後備緩衝器單元,例如一轉換後備緩衝器430。在一具體實施例中,每一分頁表查詢都牽涉到瀏覽分頁表以找出該對應虛擬位址空間內每一虛擬位址的一適當映射。在不背離本發明範疇與精神之下,可實施任何技術可行的分頁表瀏覽分技術。
第八圖所示之方法800中止於步驟890。
第九圖為根據本發明之一具體實施例,用於在複數個不同虛擬位址空間之一者內執行一虛擬至實體位址映射之方法步驟的流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖、第三C圖、第四A圖、第五圖和第七圖的系統來描述方法900,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。在一具體實施例中,方法900由一平行處理單元執行,例如第二圖的平行處理單元202。
方法900從步驟910開始,其中該平行處理單元之內的一記憶體管理單元接收一虛擬位址至實體位址映射要求,包括一虛擬位址及一位址空間識別碼,以指定該等複數個不同虛擬位址空間之哪一者應該用來執行該映射。在步驟920,若該映射要求不含一轉換後備緩衝器命中,則該方法前往步驟930。在步驟930,該記憶體管理單元透過一位址空間識別碼表,例如一位址空間識別碼表410,將該位址空間識別碼映射至一分頁表參照。在步驟940,該記憶體管理單元使用該分頁表參照所參照的該分頁,將該虛擬位址映射至一實體位址。在步驟950,該記憶體管理單元將該虛擬位址至實體位址映射傳輸至該目標轉換後備緩衝器,以供快取及稍後使用。在步驟960,該記憶體管理單元使一實體位址與該映射要求產生關聯性,以啟用且關聯記憶體存取要求進行處理。方法900中止於步驟990。
在返回步驟920時,若該映射要求不包括一轉換後備緩衝器命中,則該方法前往步驟960。
第十圖為根據本發明之一具體實施例,用於執行一圖形處理 單元關聯性之內任務深度排程之方法步驟的流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖、第三C圖、第四A圖、第五圖和第七圖的系統來描述方法1000,不過精通技術人士將了解,構成執行該等方法步驟(以任何順序)之任何系統都在本發明範疇內。在一具體實施例中,方法1000由一平行處理單元執行,例如第二圖的平行處理單元202。
方法1000是從步驟1010開始,其中在該平行處理單元內的 一計算工作分配器(CWD)接收一圖形處理單元關聯,其包括在該平行處理單元內同時執行的多個任務,例如圖形處理單元關聯450。在步驟1020,該計算工作分配器從包括該圖形處理單元關聯的該等多個任務當中選擇一任務。在步驟1030,該計算工作分配器根據該選取任務的執行要求及一串流多重處理器佇池內可用的資源,從該串流多重處理器佇池選擇一或多個串流多重處理器。在此步驟,該計算工作分配器嘗試降低已經排定執行該選取任務的不同串流多重處理器之數量。任何技術可行的技術都可實施,以將任務需求映射至可用的資源上以滿足該任務需求。在步驟1040,該計算工作分配器排定該選取的任務用於執行從該串流多重處理器佇池當中選擇的一或多個串流多重處理器。在步驟1050,若該選取的任務並非該圖形處理單元關聯內的最後一任務,則該方法前往步驟1020。否則,方法1000中止於步驟1060。
在一具體實施例中,基於明確指令,計算工作分配器可根據 深層排程或廣排程技術,排定一完整圖形處理單元關聯。該明確指令可用程式規劃方式、或透過一或多個環境變數來傳輸。在其他具體實施例中,基於明確指令,該計算工作分配器可根據深層排程或廣排程技術,單獨排定一完整圖形處理單元關聯內的每一任務。或者,該計算工作分配器可根據與每一任務有關聯的不同位址空間識別碼,選用所要實施的排程技術或任務。
雖然上面的討論聚焦在組織不同任務來執行至一共用圖形處理單元關聯,不過平行共同處理器構成同時執行具有不同虛擬位址空間的多個關聯都在本發明具體實施例的範疇與精神內。
在特定具體實施例中,根據實體位址來標示資料快取記憶 區。在替代具體實施例中,根據虛擬位址來標示資料快取,且需要當成每一標籤的一部分的位址空間識別碼。這兩種標示參數可結合在單一圖形處理單元內。
總結來說,在此揭示一種用於在該相同圖形處理單元上同時 執行具有不同虛擬位址空間的不同任務之技術。每一任務都透過一位址空間識別碼(ASID)關聯於一虛擬位址空間。一執行任務所產生的一虛擬記憶體要求包括該位址空間識別碼,其用來選擇一對應的分頁表。然後該選取的分頁表用來將包括一虛擬記憶體的該虛擬位址映射至一實體位址。該等分頁表由一作業系統所維護的對應分頁表來建立,用於牽涉到該等任務的使用者應用程式處理。轉換後備緩衝器(TLB)快取虛擬記憶體要求位址映射,供未來使用。轉換後備緩衝器輸入包括一標籤,其包括該位址空間識別碼以及虛擬位址,及包括一資料欄位,該資料欄位包括該對應實體位址。 在一具體實施例中,該等任務組織成用來執行的一共用關聯。根據一深層排程參數可排程該等任務,如此共享一共用虛擬位址空間的任務可在最少數量的不同串流多重處理器上執行。
本發明的一項優點為一圖形處理單元可同時執行具有不同 虛擬位址空間的不同任務,藉此改善特定應用程式當中的圖形處理單元利用率和效能。
本發明具體實施例的另一項優點為可用位址空間隔離來執行圖形處理單元任務,改善可靠度且降低除錯所伴隨的開發工作量。
雖然上述都導引至本發明的具體實施例,但在不悖離本發明基本領域之下可提供其他與進一步具體實施例。例如:本發明領域可實現於硬體、軟體或軟體與硬體的組合之上,本發明之一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本文所述的方法)的功能,並且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如CD-ROM光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁 碟或任何一種固態隨機存取半導體記憶體)。這種儲存電腦可讀指令以執行本發明功能的電腦可讀儲存媒體屬於本發明的具體實施例。
因此,本發明的領域由下列申請專利範圍所決定。

Claims (10)

  1. 一種用以將一虛擬位址映射至一實體位址之方法,該虛擬位址相關於一組不同虛擬位址空間中所包括的一第一虛擬位址空間,該方法包括:接收一要求位址,該要求位址包括該虛擬位址及一位址空間識別碼(ASID,address space identifier),該位址空間識別碼相關於該第一虛擬位址空間;根據一轉換後備緩衝器錯失(TLB miss,translation look aside buffer miss)來判斷該要求位址未被快取在一第一轉換後備緩衝器內;將該要求位址映射至一實體位址以回應該轉換後備緩衝器錯失;及使該實體位址與該要求位址產生關聯性;其中該第一TLB是與被包括在複數個串流多重處理器內的一第一串流多重處理器相關聯,一第二TLB是與設置於和該第一串流多重處理器一起執行的一或多個預定任務的一處理核心相關聯,以及該第一TLB與該第二TLB皆與包括關聯於該第一TLB與該第二TLB的索引輸入的一ASID表相關聯。
  2. 如申請專利範圍第1項所述之方法,其中映射該要求位址包括:將該位址空間識別碼映射至一分頁表參照;根據與該分頁表參照有關聯的一分頁表,將該第一虛擬位址映射至該實體位址;及將該虛擬位址至實體位址映射傳輸至該轉換後備緩衝器。
  3. 如申請專利範圍第2項所述之方法,其中將該位址空間識別碼映射至一分頁表參照包括在該位址空間識別碼表內執行一查表,其中該位址空間識別碼包括指向該位址空間識別碼表之一索引,且其中,該位址空間識別碼表內之一索引輸入包括一對應分頁表之一記憶體參照。
  4. 如申請專利範圍第2項所述之方法,其中將該第一虛擬位址映射至該實體位址包括瀏覽與該分頁表參照有關聯的一分頁表。
  5. 如申請專利範圍第2項所述之方法,其中該分頁表參照包括一實體位址指標器。
  6. 如申請專利範圍第1項所述之方法,其中判斷該要求位址是否未快取 包括在該轉換後備緩衝器內執行一關聯性查表。
  7. 如申請專利範圍第6項所述之方法,其中該轉換後備緩衝器設置成儲存複數個輸入,其中每一輸入包括一標籤以及一對應的實體位址,且其中該關聯性查表包括將該要求位址與該等複數個輸入內的每一標籤相比較。
  8. 如申請專利範圍第1項所述之方法,其中該位址空間識別碼是與一第一執行關聯性有關聯,且一不同位址空間識別碼是與一第二執行關聯性有關聯,且其中該轉換後備緩衝器設置成快取有關該第一執行關聯性與該第二執行關聯性兩者的虛擬位址至實體位址映射。
  9. 一種平行處理子單元,其針對相關於一組不同虛擬位址空間內所包含的一第一虛擬位址空間之一虛擬位址,設置成執行下列步驟以將該虛擬位址映射至一實體位址:接收一要求位址,該要求位址包括該虛擬位址及一位址空間識別碼(ASID,address space identifier),該位址空間識別碼與該第一虛擬位址空間有關聯;根據一轉換後備緩衝器錯失(TLB miss,translation look aside buffer miss),判斷該要求位址未被快取在一第一轉換後備緩衝器內;將該要求位址映射至一實體位址以回應該轉換後備緩衝器錯失;及將該實體位址與該要求位址產生關聯性;其中該第一TLB是與被包括在複數個串流多重處理器內的一第一串流多重處理器相關聯,一第二TLB是與設置和該第一串流多重處理器一起執行的一或多個預定任務的一處理核心相關聯,以及該第一TLB與該第二TLB皆與包括關聯於該第一TLB與該第二TLB的索引輸入的一ASID表相關聯。
  10. 一種計算裝置,其包括:一中央處理單元,其設置成執行具有一第一處理關聯性之處理;及一平行處理子單元,其耦接至該中央處理單元,其設置成:接收一要求位址,該要求位址包括一虛擬位址及一位址空間識別碼(ASID,address space identifier),該位址空間識別碼與包括在不同虛擬 位址空間內的一組的一第一虛擬位址空間有關聯;根據一轉換後備緩衝器錯失(TLB miss,translation look aside buffer miss),判斷該要求位址未被快取在一轉換後備緩衝器內;將該要求位址映射至一實體位址以回應該轉換後備緩衝器缺失率;及將該實體位址與該要求位址產生關聯性;其中該第一TLB是與被包括在複數個串流多重處理器內的一第一串流多重處理器相關聯,一第二TLB是與設置和該第一串流多重處理器一起執行的一或多個預定任務的一處理核心相關聯,以及該第一TLB與該第二TLB皆與包括關聯於該第一TLB與該第二TLB的索引輸入的一ASID表相關聯。
TW102138456A 2012-10-25 2013-10-24 在複數執行緒處理單元中的效率式記憶體虛擬化 TWI512466B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/660,815 US10310973B2 (en) 2012-10-25 2012-10-25 Efficient memory virtualization in multi-threaded processing units

Publications (2)

Publication Number Publication Date
TW201432453A TW201432453A (zh) 2014-08-16
TWI512466B true TWI512466B (zh) 2015-12-11

Family

ID=50479786

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102138456A TWI512466B (zh) 2012-10-25 2013-10-24 在複數執行緒處理單元中的效率式記憶體虛擬化

Country Status (4)

Country Link
US (1) US10310973B2 (zh)
CN (1) CN103778072A (zh)
DE (1) DE102013017510A1 (zh)
TW (1) TWI512466B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
JP6081672B2 (ja) * 2014-07-21 2017-02-15 ヴィア アライアンス セミコンダクター カンパニー リミテッド 多数の異なるアドレス空間をサポートするプロセッサにおける効率的なアドレス変換キャッシング
US9495302B2 (en) * 2014-08-18 2016-11-15 Xilinx, Inc. Virtualization of memory for programmable logic
US9501425B2 (en) * 2014-11-14 2016-11-22 Cavium, Inc. Translation lookaside buffer management
US20170046156A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Table lookup using simd instructions
EP3441884B1 (en) 2016-05-03 2021-09-01 Huawei Technologies Co., Ltd. Method for managing translation lookaside buffer and multi-core processor
US10678702B2 (en) * 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US20180011792A1 (en) * 2016-07-06 2018-01-11 Intel Corporation Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System
US9864700B1 (en) * 2016-08-17 2018-01-09 Advanced Micro Devices, Inc. Method and apparatus for power reduction in a multi-threaded mode
US10599582B2 (en) * 2016-09-26 2020-03-24 Intel Corporation Using a virtual to virtual address table for memory compression
GB2557588B (en) * 2016-12-09 2019-11-13 Advanced Risc Mach Ltd Memory management
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10896064B2 (en) 2017-03-27 2021-01-19 International Business Machines Corporation Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads
US10373285B2 (en) * 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10331581B2 (en) * 2017-04-10 2019-06-25 Hewlett Packard Enterprise Development Lp Virtual channel and resource assignment
EP3422192B1 (en) * 2017-06-28 2020-08-12 Arm Ltd Address translation data invalidation
US10552937B2 (en) * 2018-01-10 2020-02-04 Intel Corporation Scalable memory interface for graphical processor unit
US11307903B2 (en) * 2018-01-31 2022-04-19 Nvidia Corporation Dynamic partitioning of execution resources
CN109062826B (zh) * 2018-08-16 2022-04-15 北京算能科技有限公司 数据传输方法及系统
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理系统及其加速方法
CN110058931B (zh) 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
CN110083387B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理系统及其访存方法
CN110032452B (zh) 2019-04-19 2021-08-24 上海兆芯集成电路有限公司 处理系统与异构处理器加速方法
CN110442469B (zh) * 2019-07-23 2020-06-30 浙江大学 一种基于局部随机映射的缓存侧信道攻击防御方法
CN114035980B (zh) * 2021-11-08 2023-11-14 海飞科(南京)信息技术有限公司 基于便笺存储器来共享数据的方法和电子装置
US20230297499A1 (en) * 2022-01-21 2023-09-21 Nvidia Corporation Locating a memory unit associated with a memory address utilizing a mapper

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US20030120856A1 (en) * 2000-12-27 2003-06-26 Gilbert Neiger Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
TW200636572A (en) * 2005-01-14 2006-10-16 Intel Corp Virtualizing physical memory in a virtual machine system
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US7159216B2 (en) 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US7500240B2 (en) 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US20050188087A1 (en) 2002-05-28 2005-08-25 Dai Nippon Printing Co., Ltd. Parallel processing system
US7287254B2 (en) 2002-07-30 2007-10-23 Unisys Corporation Affinitizing threads in a multiprocessor system
US20040199919A1 (en) 2003-04-04 2004-10-07 Tovinkere Vasanth R. Methods and apparatus for optimal OpenMP application performance on Hyper-Threading processors
US7349958B2 (en) 2003-06-25 2008-03-25 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7103720B1 (en) * 2003-10-29 2006-09-05 Nvidia Corporation Shader cache using a coherency protocol
US20050108717A1 (en) 2003-11-18 2005-05-19 Hong Steve J. Systems and methods for creating an application group in a multiprocessor system
US20050108713A1 (en) 2003-11-18 2005-05-19 Geye Scott A. Affinity mask assignment system and method for multiprocessor systems
US7461376B2 (en) 2003-11-18 2008-12-02 Unisys Corporation Dynamic resource management system and method for multiprocessor systems
US8332483B2 (en) 2003-12-15 2012-12-11 International Business Machines Corporation Apparatus, system, and method for autonomic control of grid system resources
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US20060037017A1 (en) 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7551617B2 (en) 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7958507B2 (en) 2005-06-16 2011-06-07 Hewlett-Packard Development Company, L.P. Job scheduling system and method
US20080172668A1 (en) 2007-01-12 2008-07-17 Tzruya Yoav M Profile-based cpu/core affinity
KR101078277B1 (ko) 2007-06-20 2011-10-31 후지쯔 가부시끼가이샤 계산기, 어드레스 변환 버퍼 제어 방법 및 컴퓨터 판독 가능한 기록 매체
US20090165007A1 (en) 2007-12-19 2009-06-25 Microsoft Corporation Task-level thread scheduling and resource allocation
US8156495B2 (en) 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
GB2457341B (en) 2008-02-14 2010-07-21 Transitive Ltd Multiprocessor computing system with multi-mode memory consistency protection
US20090254319A1 (en) 2008-04-03 2009-10-08 Siemens Aktiengesellschaft Method and system for numerical simulation of a multiple-equation system of equations on a multi-processor core system
US20100064291A1 (en) 2008-09-05 2010-03-11 Nvidia Corporation System and Method for Reducing Execution Divergence in Parallel Processing Architectures
WO2010095182A1 (ja) 2009-02-17 2010-08-26 パナソニック株式会社 マルチスレッドプロセッサ及びデジタルテレビシステム
US8069446B2 (en) 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques
US8095772B2 (en) 2009-05-08 2012-01-10 Oracle America, Inc. Large memory pages for shared libraries
US8245234B2 (en) 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
US8856794B2 (en) 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US9138110B2 (en) * 2011-07-25 2015-09-22 Wausau Paper Towel & Tissue, Llc Tissue dispenser, method for dispensing tissue, and tissue dispenser insert
US9152572B2 (en) * 2011-12-30 2015-10-06 Intel Corporation Translation lookaside buffer for multiple context compute engine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US20030120856A1 (en) * 2000-12-27 2003-06-26 Gilbert Neiger Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
TW200636572A (en) * 2005-01-14 2006-10-16 Intel Corp Virtualizing physical memory in a virtual machine system

Also Published As

Publication number Publication date
DE102013017510A1 (de) 2014-04-30
CN103778072A (zh) 2014-05-07
US20140122829A1 (en) 2014-05-01
US10310973B2 (en) 2019-06-04
TW201432453A (zh) 2014-08-16

Similar Documents

Publication Publication Date Title
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
TWI588653B (zh) 針對記憶體存取的動態記憶列模式定址
US8982140B2 (en) Hierarchical memory addressing
TWI531974B (zh) 管理巢狀執行串流的方法和系統
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
TWI475386B (zh) 有記憶體分配限制的協同處理器的虛擬記憶體結構
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
US8751771B2 (en) Efficient implementation of arrays of structures on SIMT and SIMD architectures
TWI466027B (zh) 解決執行緒發散的方法及系統
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
US9069609B2 (en) Scheduling and execution of compute tasks
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
TW201439770A (zh) 透過貼圖硬體執行記憶體存取操作之技術
TW201342243A (zh) 處理系統中動態產生任務的傳訊、排序和執行
TW201337829A (zh) 暫存器檔案型讀取
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
TW201351276A (zh) 計算工作的排程和執行
TW201432573A (zh) 工作佇列型圖形處理單元工作創建
US10235208B2 (en) Technique for saving and restoring thread group operating state
TW201342229A (zh) 分散操作的批次重播