[go: up one dir, main page]

TWI515564B - 管理統一虛擬記憶體的分頁狀態目錄 - Google Patents

管理統一虛擬記憶體的分頁狀態目錄 Download PDF

Info

Publication number
TWI515564B
TWI515564B TW102149060A TW102149060A TWI515564B TW I515564 B TWI515564 B TW I515564B TW 102149060 A TW102149060 A TW 102149060A TW 102149060 A TW102149060 A TW 102149060A TW I515564 B TWI515564 B TW I515564B
Authority
TW
Taiwan
Prior art keywords
processing unit
page
memory
parallel processing
virtual memory
Prior art date
Application number
TW102149060A
Other languages
English (en)
Other versions
TW201447574A (zh
Inventor
二世 傑羅米F 多樂士
卡麥隆 布加勒斯特
雪儀 張
戴明 詹姆斯 勒羅伊
塞繆爾H 鄧肯
路斯恩 鄧寧
羅伯特 喬治
阿爾溫德 戈帕拉克里什南
馬克 海爾格羅夫
賈承歡
約翰 麥謝伊
Original Assignee
輝達公司
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
Priority claimed from US14/055,318 external-priority patent/US9767036B2/en
Application filed by 輝達公司 filed Critical 輝達公司
Publication of TW201447574A publication Critical patent/TW201447574A/zh
Application granted granted Critical
Publication of TWI515564B publication Critical patent/TWI515564B/zh

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

管理統一虛擬記憶體的分頁狀態目錄
本發明的具體實施例一般係關於虛擬記憶體,尤其係關於管理虛擬記憶體的分頁狀態目錄。
大多數現代電腦系統通常實施某種虛擬記憶體架構,除此之外,該虛擬記憶體架構可讓指令使用虛擬記憶體位址存取記憶體,而非使用實體記憶體位址。利用在實體記憶體與應用軟體之間提供此虛擬記憶體層,使用者階層軟體與實體記憶體管理的細節相隔,該實體記憶體管理係留給專屬記憶體管理系統之用。
實施虛擬記憶體架構的典型電腦系統包含一中央處理單元(CPU,central processing unit)以及一或多個平行處理單元(GPUs)。在操作上,在中央處理單元或圖形處理單元上執行的軟體處理可透過一虛擬記憶體位址要求資料。在許多傳統架構當中,透過將虛擬記憶體位址供給一中央處理單元以及一圖形處理單元,來處置資料要求的該等虛擬記憶體系統是獨立的,尤其是,個別中央處理單元記憶體管理系統與個別圖形處理器單元記憶體管理系統分別處置來自該中央處理單元以及圖形處理單元的資料要求。
這種獨立記憶體管理系統伴隨許多缺點,例如:每一獨立記憶體管理系統並不需要知道與該其他記憶體管理系統相關聯的該等記憶體單元內容,如此該記憶體管理系統不需要合併來提供特定效率,例如決定資料應該儲存在哪處以改善存取延遲。此外,當該記憶體管理系統為獨立裝置,則這種系統的指標器不需要與其他系統相容。如此,應用程式設計師必須持續追蹤兩種不同的指標器。
如先前所例示,業界內需要一種更有效率的方式,使用同質 處理器,例如中央處理單元以及圖形處理單元,管理系統內的虛擬記憶體。
本發明的一個具體實施例揭示一種透過一分頁狀態目錄來管理虛擬記憶體至實體記憶體映射之系統。該系統包含一第一處理單元,其設置成執行參考一第一虛擬記憶體位址的一第一操作,該系統也包含與該第一處理單元相關聯的一第一記憶體管理單元(MMU,memory management unit),其設置成決定儲存在與該第一處理單元相關聯的一第一記憶體單元內之一第一分頁表並不包含對應至該第一虛擬記憶體位址的一映射時,產生一第一分頁錯誤。該系統另包含與該第一處理單元相關聯的一第一複製引擎,該第一複製引擎設置成讀取一第一命令佇列,以決定對應至該第一虛擬記憶體位址並且包含在一第一分頁狀態目錄內的一第一映射。該第一複製引擎也設置成更新該第一分頁表來包含該第一映射。
上述方式的優點在於使用者階層應用不需要根據特定資料片段所儲存位置來持續追蹤多個指標器。額外優點在於記憶體分頁根據使用在記憶體單元之間遷移,這允許記憶體分頁位於單元本機上,讓存取該等記憶體分頁更頻繁。另一個優點在於提供一錯誤緩衝區,允許合併該平行處理單元(PPU)產生的錯誤來有效執行。
100‧‧‧電腦系統
102‧‧‧中央處理單元
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120‧‧‧外接卡
121‧‧‧外接卡
202‧‧‧平行處理單元
101‧‧‧統一虛擬記憶體驅動程式
200‧‧‧統一虛擬記憶體系統
204‧‧‧平行處理單元記憶體
209‧‧‧中央處理單元記憶體管理單元
211‧‧‧中央處理單元錯誤處置器
206‧‧‧中央處理單元分頁表
210‧‧‧分頁狀態目錄
216‧‧‧錯誤緩衝區
214‧‧‧命令佇列
213‧‧‧平行處理單元記憶體管理單元
212‧‧‧複製引擎
208‧‧‧平行處理單元分頁表
215‧‧‧平行處理單元錯誤處置器
300‧‧‧系統
400‧‧‧系統
401‧‧‧分頁狀態目錄輸入
402‧‧‧虛擬記憶體位址
404‧‧‧實體記憶體位址
406‧‧‧狀態資訊
408‧‧‧記憶體分頁
500‧‧‧虛擬記憶體系統
504‧‧‧串流多重處理器
502‧‧‧錯誤緩衝區輸入
600‧‧‧虛擬記憶體系統
700‧‧‧方法
800‧‧‧方法
900‧‧‧方法
1000‧‧‧方法
1100‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖內。應注意附圖只說明本發明的典型具體實施例,因此並不對發明範圍產生限制,本發明容許其他等效具體實施例。
第一圖為例示設置來實施本發明一或多個態樣的電腦系統方塊圖;第二圖為根據本發明一個具體實施例,例示一統一虛擬記憶體系統的方塊圖;第三圖為根據本發明一個具體實施例,用於追蹤記憶體分頁狀態的一系統300之概念圖;第四圖為根據本發明的一個具體實施例,實施一遷移操作的 系統之概念圖;第五圖例示根據本發明一個具體實施例,用於將錯誤儲存在一錯誤緩衝區的一虛擬記憶體系統;第六圖例示根據本發明一個具體實施例,用於解決平行處理單元所產生分頁錯誤的一虛擬記憶體系統;第七圖揭示根據本發明的一個具體實施例,用於透過分頁狀態目錄管理虛擬記憶體至實體記憶體映射的方法步驟流程圖;第八圖揭示根據本發明的一個具體實施例,用於追蹤分頁錯誤的方法步驟流程圖;第九圖揭示根據本發明的一個具體實施例,用於使用一錯誤緩衝區解決分頁錯誤的方法步驟流程圖;第十圖揭示根據本發明的一個具體實施例,用於建立與管理一虛擬記憶體架構內共用指標器的方法步驟流程圖;以及第十一圖揭示根據本發明的一個具體實施例,用於管理一虛擬記憶體子系統內所有權狀態的方法步驟流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,所屬領域具有通常知識者應可了解,本發明在無一或多個該等特定細節之下仍可實施。
系統概觀
第一圖為例示設置來實施本發明一或多個態樣的電腦系統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 link))連接至記憶體橋接器105;在一個具體實施例內,平行處理子系統112為傳遞畫素給顯示裝置110(任何傳統陰極射線管、液晶顯視器、發光二極體顯示器等等)的圖形子系統。系統磁碟114也連接至I/O橋接器107,並且可設置成儲存內容與應用程式以及資料,供中央處理單元102以及平行處理子系統112使用。系統磁碟114提供非揮發性儲存裝置給應用程式與資料,並且可包含固定式或可移除式硬碟機、快閃記憶體裝置以及CD-ROM(小型光碟唯讀記憶體)、DVD-ROM(數位多用途光碟-ROM)、藍光、HD-DVD(高傳真DVD)或其他磁性、光學或固態儲存裝置。
一開關116提供I/O橋接器107與其他組件,像是網路配接器118以及許多外接卡120和121之間的連接。其他組件(未明確繪示),包含萬用序列匯流排(USB,universal serial bus)或其他連接埠、小型光碟(CD)光碟機、數位多用途光碟(DVD)光碟機、檔案記錄裝置等等,也可連接至輸入/輸出橋接器107。第一圖內顯示的許多通訊路徑,包含特地指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,以及不同組件之間的連接都可使用業界內已知的不同協定。
在一個具體實施例內,平行處理子系統112併入將圖形與視訊處理最佳化的電路,包含例如視訊輸出電路,並且構成一或多個平行處理單元(PPU,parallel processing unit)202。在另一具體實施例內,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本文內有更詳細描述。尚且在另一具體實施例內,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107來形成一系統晶片(SoC,system on chip)。如已知,許多圖形處理單元(GPU,graphics processing unit)設計成執行平行操作與計算,如此考慮為平行處理單元(PPU,parallel processing unit)的等級。
任何數量的平行處理單元202都可包含在一平行處理子系統112內。例如:單一外接卡上可提供多個平行處理單元202,或多張外接 卡可連接至通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元(multi-PPU)系統內的平行處理單元202可彼此一致或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的本機平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包含桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
平行處理單元202都有利地實施一高平行處理架構。平行處理單元202包含許多一般處理叢集(GPC,general processing cluster),每一一般處理叢集都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在某些具體實施例內,單一指令、多重資料(single-instruction,multiple-data,SIMD)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例內,單一指令、多重執行緒(single-instruction,multiple-thread,SIMT)技術用於支援大量一般已同步執行緒的平行執行。不同於一單一指令、多重資料執行方式,其中所有處理引擎一般都執行一致的指令,單一指令、多重執行緒執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。
一般處理叢集(GPCs)包含一些串流多重處理器(SM,streaming multiprocessor),其中每一串流多重處理器都設置成處理一或多個執行緒群組。這一系列指令傳輸至構成一執行緒的特定一般處理叢集,如本文先前所定義,並且通過串流多重處理器內平行處理引擎的特定數量同時執行的執行緒之集合在此稱為「經線(warp)」或「執行緒群組」。如本文所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一個執行緒指派給串流多重處理器內不同的處理引擎。此外,在串流多重處理器內可同時啟用複數個相關執行緒群組(在不同執行相位內)。此執行緒群組的集合稱為「合作執行緒陣列」(CTA,cooperative thread array)或「執行緒陣列」。
在本發明的具體實施例內,想要使用一計算系統的平行處理 單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派一個獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸出資料部分要產生或寫入。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令控制平行處理單元202的操作。在一個具體實施例內,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。也可使用其他通訊路徑。平行處理單元202都有利地實施一高平行處理架構。平行處理單元202可提供給任意數量的本機平行處理單元記憶體(PPU記憶體)。
在某些具體實施例內,系統記憶體104包含一統一虛擬記憶體(UVM,unified virtual memory)驅動程式101,統一虛擬記憶體驅動程式101包含執行與管理中央處理單元102和平行處理單元202共用的統一虛擬記憶體系統相關之許多任務的指令,此外,該架構讓中央處理單元102和平行處理單元202使用一共用虛擬記憶體位址存取一實體記憶體位置,而不管該實體記憶體位置是否在系統記憶體104之內或在屬於平行處理單元202本機的記憶體之內。
可理解地,本文中顯示的該系統為例示,所以可進行改變與修改。包含橋接器的數量與配置、中央處理單元102的數量以及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例內,系統記憶體104直接連接至中央處理單元102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105以及中央處理單元102與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接至輸入/輸出橋接器107或直接連接至中央處理單元102,而不是連接至記憶體橋接器105。在其他具體實施例內,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型組件可包含二或多個中央處理 單元102以及二或多個平行處理子系統112。本文中顯示的該等特定組件為選擇性的;例如可支援任何數量的外接卡或週邊裝置。在某些具體實施例內,省略開關116,並且網路配接器118和外接卡120、121都直接連接至I/O橋接器107。
統一虛擬記憶體系統架構
第二圖為根據本發明一個具體實施例,例示一統一虛擬記憶體系統200的方塊圖。如所示,統一虛擬記憶體系統200包含但不限制有中央處理單元102、系統記憶體104以及耦合至平行處理單元記憶體(PPU記憶體)204的平行處理單元(PPU,parallel processing unit)202,中央處理單元102以及系統記憶體104都透過記憶體橋接器105彼此耦合並且耦合至平行處理單元202。
中央處理單元102執行可透過一虛擬記憶體位址,要求儲存在系統記憶體104或平行處理單元記憶體204內資料的執行緒。虛擬記憶體位址讓在中央處理單元102內執行的執行緒不知道記憶體系統的內部運作,如此執行緒只知道虛擬記憶體位址,並且可利用透過虛擬記憶體位址要求資料來存取資料。
中央處理單元102包含一中央處理單元記憶體管理單元209,其處理來自中央處理單元102將虛擬記憶體位址轉譯成實體記憶體位址的要求。該等實體記憶體位址需要存取實體記憶體單元內儲存的資料,例如系統記憶體104以及平行處理單元記憶體204。中央處理單元102包含中央處理單元錯誤處置器211,其執行步驟回應中央處理單元記憶體管理單元209產生一分頁錯誤,讓要求的資料可送至中央處理單元102。中央處理單元錯誤處置器211一般為位於系統記憶體104內並且在中央處理單元102上執行的軟體,該軟體由至中央處理單元102的岔斷所啟動。
系統記憶體104儲存許多記憶體分頁(未顯示),包含由在中央處理單元102或平行處理單元202上執行的執行緒所使用之資料。如所示,系統記憶體104儲存一中央處理單元分頁表206,其包含虛擬記憶體位址與實體記憶體位址之間的映射。系統記憶體104也儲存一分頁狀態目錄210,做為統一虛擬記憶體系統200的「主分頁表」,如底下更詳細討論。 系統記憶體104儲存一錯誤緩衝區216,其包含平行處理單元202寫入的輸入,以便通知中央處理單元102,告知由平行處理單元202產生的一分頁錯誤。在某些具體實施例內,系統記憶體104包含統一虛擬記憶體(UVM,unified virtual memory)驅動程式101,其包含執行時導致中央處理單元102執行命令解決一分頁錯誤。在替代具體實施例內,分頁狀態目錄210、錯誤緩衝區216以及一或多個命令佇列214的任意組合可儲存在平行處理單元記憶體204內。進一步,平行處理單元分頁表208可儲存在系統記憶體104內。
在與中央處理單元102類似的方式中,平行處理單元202可透過一虛擬記憶體位址,來執行要求儲存在系統記憶體104或平行處理單元記憶體204內資料的指令。平行處理單元202包含一平行處理單元記憶體管理單元213,其處理來自平行處理單元202將虛擬記憶體位址轉譯成實體記憶體位址的要求。平行處理單元202包含一複製引擎212,其執行儲存在命令佇列214內的命令,用於複製記憶體分頁、修改平行處理單元分頁表208內的資料以及其他指令。平行處理單元錯誤處置器215執行步驟,回應平行處理單元202上的一分頁錯誤。平行處理單元錯誤處置器215可為在處理器或平行處理單元202內專屬微控制器上運行的軟體,或平行處理錯誤處置器215可為在中央處理單元102上運行的軟體,其中後者為較佳的選擇。在某些具體實施例內,中央處理單元錯誤處置器211以及平行處理單元錯誤處置器215可為統一軟體程式,由中央處理單元102或平行處理單元202上的錯誤喚起。命令佇列214可為平行處理單元記憶體204或系統記憶體104,但是較佳位於系統記憶體104內。
在某些具體實施例內,中央處理單元錯誤處置器211以及統一虛擬記憶體驅動程式101可為統一軟體程式。在這種案例中,該統一軟體程式可為位於系統記憶體104內並且在中央處理單元102上執行的軟體。平行處理單元錯誤處置器215可為在處理器或平行處理單元202內專屬微控制器上運行的一個別軟體程式,或平行處理單元錯誤處置器215可為在中央處理單元102上運行的一個別軟體程式。
在其他具體實施例內,平行處理單元錯誤處置器215以及統 一虛擬記憶體驅動程式101可為統一軟體程式。在這種案例中,該統一軟體程式可為位於系統記憶體104內並且在中央處理單元102上執行的軟體。中央處理單元錯誤處置器211可為位於系統記憶體104內並且在中央處理單元102上執行的一個別軟體程式。
在其他具體實施例內,中央處理單元錯誤處置器211、平行處理單元錯誤處置器215以及統一虛擬記憶體驅動程式101可為統一軟體程式。在這種案例中,該統一軟體程式可為位於系統記憶體104內並且在中央處理單元102上執行的軟體。
在某些具體實施例內,中央處理單元錯誤處置器211、平行處理單元錯誤處置器215以及統一虛擬記憶體驅動程式101全都在系統記憶體104內,如上述。如第二圖內所示,統一虛擬記憶體驅動程式101位於系統記憶體104內,而中央處理單元錯誤處置器211以及平行處理單元錯誤處置器215都位於中央處理單元102內。
中央處理單元錯誤處置器211以及平行處理單元錯誤處置器215都可回應從中央處理單元102或平行處理單元202發出的硬體岔斷,例如來自一分頁錯誤的岔斷。如以下進一步討論,統一虛擬記憶體驅動程式101包含指令來執行與統一虛擬記憶體系統200管理相關的許多任務,包含但不受限為解決一分頁錯誤,以及存取中央處理單元分頁表206、分頁狀態目錄210、命令佇列214及/或錯誤緩衝區216。
在某些具體實施例內,中央處理單元分頁表206以及平行處理單元分頁表208具有不同格式,以及內含不同資訊;例如平行處理單元分頁表208可內含以下但是中央處理單元分頁表206則否:單元停用位元、壓縮標籤以及記憶體混合類型。
在與系統記憶體104類似的方式中,平行處理單元記憶體204儲存許多記憶體分頁(未顯示)。如所示,平行處理單元記憶體204也可包含平行處理單元分頁表208,其中包含虛擬記憶體位址與實體記憶體位址之間的映射。或者,平行處理單元分頁表208可儲存在系統記憶體104內。
分頁狀態目錄
第三圖為根據本發明一個具體實施例,用於追蹤記憶體分頁 狀態的一系統300之概念圖。如所示,系統300包含同時耦合至中央處理單元分頁表206與平行處理單元分頁表208的一分頁狀態目錄210。
分頁狀態目錄210為一資料結構,儲存與特定虛擬記憶體位址空間內每一記憶體分頁相關聯的映射。為了從分頁狀態目錄210獲得一實體位址,一要求器將一要求的虛擬位址提供給分頁狀態目錄210,其根據該虛擬位址執行一查找操作。在某些具體實施例內,分頁狀態目錄210可維持追蹤不同大小的記憶體分頁。如此,分頁狀態目錄210包含多個陣列,例如:第一陣列管理中央處理單元規模分頁,並且第二陣列管理平行處理單元規模分頁。
雖然分頁狀態目錄210可用任何技術上可行的方式實施,但是在一個具體實施例內,分頁狀態目錄210包含多層表。每一非葉級節點(non-leaf level)都包含一指標器陣列,至下一層內的輸入。指標器可指向平行處理單元記憶體204或系統記憶體104之內的輸入。
每一中央處理單元102或平行處理單元202都可更新分頁狀態目錄210,使用跨越PCI-E匯流排的單元比較與交換,達成對於系統記憶體104內分頁狀態目錄210分頁的更新。利用將更新要求放入儲存在系統記憶體內的一分頁狀態目錄更新循環緩衝區,達成更新平行處理單元記憶體204內分頁狀態目錄210分頁。代理程式檢查該循環緩衝區,在分頁狀態目錄210上任何讀取操作之前套用更新。
如下所述,多個虛擬記憶體位址空間可存在,在中央處理單元102上運行的兩種不同處理可指派給兩個不同的虛擬記憶體位址空間,某些處理可共享位址空間,而每一虛擬記憶體位址空間都存在一個分頁狀態目錄210。
不同的分頁狀態目錄210都各包含至系統記憶體104或平行處理單元記憶體204內相同記憶體位置的一映射,在這種案例中,可指定單一處理為該記憶體位置的所有者。分頁狀態目錄210對應至被視為「所有者分頁狀態目錄」的單一處理,該所有者分頁狀態目錄包含至該記憶體位置的一映射,並且包含映射至該記憶體位置的所有其他處理之分頁狀態目錄210包含至該所有者分頁狀態目錄內該映射。
當與一特定分頁狀態目錄210相關聯的一處理不再需要與特定記憶體位置相關聯的一特定映射,則該處理導致該映射從與該處理相關聯的分頁狀態目錄210當中移除。該映射放入一除役清單當中。在此點上,其他分頁狀態目錄210仍舊包含至該記憶體位置的映射。這些分頁狀態目錄210持續指示包含該映射,直到與這些分頁狀態目錄210相關聯的該等處理決定不再需要該映射。當無分頁狀態目錄210包含與該記憶體位址相關聯的映射時,則從該退役清單當中移除該映射。
分頁狀態目錄210內的輸入包含一虛擬位址與一實體位址之間的一映射,該等輸入也包含與該輸入相關聯的該記憶體分頁之狀態資訊。以下清單包含許多範例狀態,其可包含在本發明許多具體實施例的分頁狀態目錄輸入內。「專用」-一記憶體分頁可被視為「專用」,表示該記憶體分頁不重複,並且平行處理單元202或中央處理單元102內可見,但非同時。「專用」狀態類似於「平行處理單元所有」或「中央處理單元所有」狀態,底下會有討論。「共享未快取」-一記憶體分頁可被視為「共享未快取」,表示該記憶體分頁不重複,但是在一或多個平行處理單元202及/或一或多個中央處理單元102內可見。「共享未快取」狀態類似於底下討論的「中央處理單元共享」狀態,具備「未快取」的額外品質,表示「並未重複」。一記憶體分頁可位於超過一個記憶體單元之內(例如同時在系統記憶體104與平行處理單元記憶體204內),並且如此「重複」。「讀取重複」-一記憶體分頁可被視為「讀取重複」,表示存在一個以上的記憶體分頁副本,並且至少一個副本在中央處理單元102或平行處理單元202的本機之內,並且只能讀取至中央處理單元102或平行處理單元202。「遷移唯讀」-一記憶體分頁可被視為「遷移唯讀」,表示該記憶體分頁已經在遷移處理當中,例如:統一虛擬記憶體系統200可在將該記憶體分頁從平行處理單元記憶體204遷移至系統記憶體104內的該處理當中。因為該記憶體分頁被視為「遷移唯讀」,所以在此狀態下只能讀取該記憶體分頁而不能寫入。「遷移隱形」-一記憶體分頁可被視為「遷移隱形」,表示該記憶體分頁正在遷移處理當中,但是該記憶體分頁「隱形」,表示無處理可以讀取或寫入該記憶體分頁。「點轉送輸入」-分頁狀態目錄210內的特定輸入可被視為「點轉送輸入」, 表示該輸入內含至分頁狀態目錄210內不同輸入,並且包含與該記憶體分頁相關聯的一映射之連結。
統一虛擬記憶體系統200可將記憶體分頁儲存在一備用儲存裝置內,例如硬碟機空間。統一虛擬記憶體驅動程式101或作業系統維持追蹤儲存在該備用儲存裝置內的記憶體分頁,若在分頁狀態目錄210上執行的一查找操作指示一記憶體分頁儲存在該備用儲存裝置內,則統一虛擬記憶體驅動程式101將該記憶體分頁從該備用儲存裝置,移動至系統記憶體104或平行處理單元記憶體204。在該記憶體分頁從該備用儲存裝置當中複製之後,統一虛擬記憶體驅動程式101讓分頁狀態目錄210查找除役。
下表描述範例分頁狀態目錄輸入,每一列都描述不同的範例輸入。
轉譯虛擬記憶體位址
請回頭參閱第二圖,當在中央處理單元102內執行的一執行緒透過虛擬記憶體位址要求資料時,中央處理單元102要求將來自中央處理單元記憶體管理單元(CPU MMU,CPU memory management unit)209的該虛擬記憶體位址轉譯成一實體記憶體位址。在回應上,中央處理單元記憶體管理單元209嘗試將該虛擬記憶體位址轉譯成實體記憶體位址,這指定一記憶體單元,例如系統記憶體104,儲存由中央處理單元102所要求資料的位置。
為了將一虛擬記憶體位址轉譯成一實體記憶體位址,中央處理單元記憶體管理單元209執行查找操作,決定中央處理單元分頁表206是否包含與該虛擬記憶體位址相關聯的一映射。除了虛擬記憶體位址以外,對於存取資料的要求也可指示一虛擬記憶體位址空間。統一虛擬記憶體系統200可實施多個虛擬記憶體儲存空間,每一都可指派至一或多個執行緒。虛擬記憶體位址在任何已知虛擬記憶體位址空間內都是唯一的。進一步,一已知虛擬記憶體位址空間之內的虛擬記憶體位址在跨中央處理單 元102與平行處理單元202時都是一致的,藉此允許相同的虛擬位址在跨中央處理單元102與平行處理單元202時參照相同的資料。在某些具體實施例內,相同虛擬位址空間內的兩個虛擬記憶體位址可參照相同資料,但是一般不會映射至相同的實體記憶體位址(例如中央處理單元102與平行處理單元202每一都具有本機唯讀的資料副本)。
針對任何已知的虛擬記憶體位址,中央處理單元分頁表206可包含或不包含該虛擬記憶體位址與一實體記憶體位址之間的一映射。若中央處理單元分頁表206包含一映射,則中央處理單元記憶體管理單元209讀取該映射,來決定與該虛擬記憶體位址相關聯的一實體記憶體位址,並且將該實體記憶體位址提供給中央處理單元102。不過,若中央處理單元分頁表206不包含與該虛擬記憶體位址相關聯的一映射,則中央處理單元記憶體管理單元209無法將該虛擬記憶體位址轉譯成一實體記憶體位址,並且中央處理單元記憶體管理單元209產生一分頁錯誤。為了解決一分頁錯誤並且讓該要求的資料可供應給中央處理單元102,則執行「分頁錯誤程序」,尤其是中央處理單元102讀取分頁狀態目錄210,找出該分頁的當前映射狀態,然後決定該適當的分頁錯誤程序。該分頁錯誤程式一般映射與該要求的虛擬記憶體位址相關聯之該記憶體分頁,或改變允許的存取類型(例如讀取存取、寫入存取、單元存取),除非已經發生嚴重錯誤。底下更詳細討論在統一虛擬記憶體系統200內實施的不同種分頁錯誤程序。
在統一虛擬記憶體系統200之內,與已知虛擬記憶體位址相關聯的資料可儲存在系統記憶體104內、平行處理單元記憶體204內或同時在系統記憶體104以及平行處理單元記憶體204內,當成該相同資料的唯讀副本。進一步,針對任何這種資料,中央處理單元分頁表206或平行處理單元分頁表208之一或兩者可包含與該資料相關聯之一映射。請注意,某些資料存在用於一個分頁表內存在的一映射,但在另一個之內則否。不過,分頁狀態目錄210包含平行處理單元分頁表208內儲存的所有映射,以及中央處理單元分頁表206內儲存的該等平行處理單元相關映射。如此,分頁狀態目錄210當成統一虛擬記憶體系統200的「主要」分頁表。因此,當中央處理單元記憶體管理單元209未在與一特定虛擬記憶體位址相關聯 的中央處理單元分頁表206內找到一映射,則中央處理單元102讀取分頁狀態目錄210,以決定分頁狀態目錄210是否包含與該虛擬記憶體位址相關聯的一映射。分頁狀態目錄210的許多具體實施例可包含除了與該虛擬記憶體位址相關聯的映射以外,與虛擬記憶體位址相關聯的不同種資訊。
當中央處理單元記憶體管理單元209產生一分頁錯誤時,中央處理單元錯誤處置器211執行該適當分頁錯誤程序的一系列操作,來解決該分頁錯誤。同樣,在一分頁錯誤程序期間,中央處理單元102讀取分頁狀態目錄210並且執行額外操作,以便改變中央處理單元分頁表206以及平行處理單元分頁表208之內的該等映射或許可。這種操作可包含讀取及/或修改中央處理單元分頁表206、讀取及/或修改分頁狀態目錄210輸入,及/或在記憶體單元之間(例如系統記憶體104與平行處理單元記憶體204)遷移稱為「記憶體分頁」的資料區塊。
第四圖為根據本發明的一個具體實施例,實施一遷移操作的系統400之概念圖。如所示,系統400包含一分頁狀態目錄210、系統記憶體104以及平行處理單元記憶體204。
如上述,分頁狀態目錄210儲存分頁狀態目錄輸入401,指示所有或部分虛擬記憶體位址402、所有或部分實體記憶體位址404以及狀態資訊406。如此,分頁狀態目錄輸入401將虛擬記憶體位址402映射至實體記憶體位址404。
在回應分頁錯誤方面,統一虛擬記憶體驅動程式101可決定一記憶體分頁,例如記憶體分頁408,要從一個記憶體單元遷移到另一個記憶體單元,以解決該分頁錯誤。例如:統一虛擬記憶體驅動程式101可決定記憶體分頁408要從系統記憶體104遷移到驅動程式行處理單元記憶體204。回應此決定,統一虛擬記憶體驅動程式101執行一系列操作,底下稱為一分頁錯誤程序,導致要遷移記憶體分頁408。此外,該分頁錯誤程序可改變與記憶體分頁408相關聯的一分頁狀態目錄輸入401之一部分。尤其是,該分頁錯誤程序可在已經遷移該記憶體分頁之後,將實體記憶體位址404更新為記憶體分頁408的該實體位置。不過,分頁狀態目錄輸入401內的虛擬記憶體位址402仍舊未改變,這樣不管記憶體分頁408儲存在何處, 都允許應用程式內的指標器維持一致並且參照記憶體分頁408。
為了決定哪個操作執行一分頁錯誤程序,中央處理單元102識別與該虛擬記憶體位址相關聯的該記憶體分頁,然後中央處理單元102從與導致該分頁錯誤的該記憶體存取要求相關聯的該虛擬記憶體位址相關之分頁狀態目錄210當中,讀取該記憶體分頁的狀態資訊。這種狀態資訊包含除此之外與該虛擬記憶體位址相關聯的該記憶體分頁之一所有權狀態,針對任何已知的記憶體分頁,可以有數個所有權狀態,例如:一記憶體分頁可為「中央處理單元所有」、「平行處理單元所有」或「中央處理單元共享」。若中央處理單元102可透過一虛擬位址存取一記憶體分頁,並且若平行處理單元202透過一虛擬位址無法存取該記憶體分頁而不引起一分頁錯誤,則考慮該記憶體分頁為中央處理器所有。較佳是,中央處理器所有分頁位於系統記憶體104內,但是也可位於平行處理單元記憶體204內。若平行處理單元202可透過一虛擬位址存取一記憶體分頁,並且若中央處理單元102透過一虛擬位址無法存取該記憶體分頁而不引起一分頁錯誤,則考慮該記憶體分頁為平行處理器所有。較佳是,一平行處理單元所有分頁位於平行處理單元記憶體204內,但是在從系統記憶體104遷移到平行處理單元記憶體204未完成時,也可位於系統記憶體104內,這一般來自於該平行處理單元所有權的短期天性。若一記憶體分頁儲存在系統記憶體104內,並且在平行處理單元分頁表208內存在至該記憶體分頁的一映射,允許平行處理單元202透過一虛擬記憶體位址存取該系統記憶體104內的該記憶體分頁,則該記憶體分頁考慮為中央處理器共享。
統一虛擬記憶體系統200可根據許多因素,將所有權狀態指派給記憶體分頁,包含該記憶體分頁的使用率歷史,該使用率歷史選擇性儲存在分頁狀態目錄210輸入內。使用率歷史可包含有關中央處理單元102或平行處理單元202最近是否存取該記憶體分頁,以及進行多少次這種存取的資訊,例如:根據該記憶體分頁的該使用率歷史,若統一虛擬記憶體系統200決定中央處理單元102最可能使用或只有其使用該記憶體分頁,則統一虛擬記憶體系統200將「中央處理單元所有」的所有權狀態指派給一已知的記憶體分頁,並且將該分頁定位在系統記憶體104內。類似地, 根據該記憶體分頁的該使用率歷史,若統一虛擬記憶體系統200決定平行處理單元202最可能使用或只有其使用該記憶體分頁,則統一虛擬記憶體系統200將「平行處理單元所有」的所有權狀態指派給一已知的記憶體分頁,並且將該分頁定位在平行處理單元記憶體204內。最後,根據該記憶體分頁的該使用率歷史,若統一虛擬記憶體系統200決定中央處理單元102以及平行處理單元202最可能使用該記憶體分頁,則統一虛擬記憶體系統200將「中央處理單元共享」的所有權狀態指派給一已知的記憶體分頁,並且將該記憶體分頁從系統記憶體104來回遷移至平行處理單元記憶體204會消耗過多時間。
根據範例,錯誤處置器211和215可針對遷移實施任意或所有以下啟發:(a)在中央處理單元102上存取一未映射的分頁,其已經映射至平行處理單元202、最近尚未遷移、未映射來自平行處理單元202的該錯誤分頁、將該分頁遷移至中央處理單元102以及將該分頁映射至中央處理單元102;(b)在平行處理單元202上存取一未映射的分頁,其已經映射至中央處理單元102、最近尚未遷移、未映射來自中央處理單元102的該錯誤分頁、將該分頁遷移至平行處理單元202以及將該分頁映射至平行處理單元202;(c)在中央處理單元102上存取一未映射的分頁,其已經映射至平行處理單元202、最近已經遷移、將該錯誤分頁遷移至中央處理單元102以及將該分頁映射至中央處理單元102以及平行處理單元202;(d)在平行處理單元202上存取一未映射的分頁,其已經映射至中央處理單元102、最近已經遷移、將該分頁映射至中央處理單元102以及平行處理單元202;(e)在平行處理單元102上單元存取已經映射至中央處理單元102以及平行處理單元202但是並未啟用由平行處理單元202進行單元操作的分頁、未映射來自中央處理單元102的該分頁以及映射至具有啟用單元操作的平行處理單元202;(f)在平行處理單元202上將存取寫入至已經映射在中央處理單元102以及平行處理單元202上的分頁當成寫入時複製(COW, copy-on-write)、將該分頁複製到平行處理單元202,藉此進行該分頁的獨立複製、依照該平行處理單元上的讀取-寫入來映射該新分頁以及讓當前分頁維持當成映射在中央處理單元120上;(g)在平行處理單元202上讀取存取已經映射在中央處理單元102以及平行處理單元202上的分頁當成隨選填零(ZFOD,zero-fill-on-demand)、分配平行處理單元202上實體記憶體的一分頁並填入零,以及映射該平行處理單元上的分頁,但是將之改變成未映射至中央處理單元102上;(h)在一存取上由一第一平行處理單元202(1)至映射在一第二平行處理單元202(2)上的一未映射分頁,其最近尚未遷移、未映射來自第二平行處理單元202(2)的該錯誤分頁、將該分頁遷移至第一平行處理單元202(1)以及將該分頁映射至第一平行處理單元202(1);以及(i)在一存取上由一第一平行處理單元202(1)至映射在一第二平行處理單元202(2)上的一未映射分頁,其最近已經遷移、將該錯誤分頁映射至第一平行處理單元202(1)以及將該分頁的該映射維持在第二平行處理單元202(2)上。
總結來說,許多啟發規則都有可能,並且本發明範疇並不受限於這些範例。
此外,任何遷移啟發都可「進位」成包含更多分頁或較大分頁尺寸,例如:(j)在中央處理單元102上存取一未映射的分頁,其已經映射至平行處理單元202、最近尚未遷移、未映射來自平行處理單元202的該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁、將該分頁遷移至中央處理單元102以及將該分頁映射至中央處理單元102(更詳細範例中:針對4kB錯誤分頁,遷移包含該4kB錯誤分頁的該已校準64kB區域);(k)在平行處理單元202上存取一未映射的分頁,其已經映射至中央處理單元102、最近尚未遷移、未映射來自中央處理單元102的該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁、將該分頁遷移至平行處理單元202以及將該分頁映射至平行處理單元202(更詳細範例中:針對4kB錯誤分頁,遷移包含該4kB錯誤分頁的該已校準64kB區域); (l)在中央處理單元102上存取一未映射的分頁,其已經映射至平行處理單元202、最近尚未遷移、未映射來自平行處理單元202的該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁、將該分頁遷移至中央處理單元102、將該分頁映射至中央處理單元102以及將所有已遷移分頁當成中央處理單元102上一或多個較大分頁來處理(更詳細範例中:針對4kB錯誤分頁,遷移包含該4kB錯誤分頁的該已校準64kB區域,並且將該已校準64kB區域處理當成一64kB分頁);(m)在平行處理單元202上存取一未映射的分頁,其已經映射至中央處理單元102、最近尚未遷移、未映射來自中央處理單元102的該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁、將該分頁遷移至平行處理單元202、將該分頁映射至平行處理單元202以及將所有已遷移分頁當成平行處理單元202上一或多個較大分頁來處理(更詳細範例中:針對4kB錯誤分頁,遷移包含該4kB錯誤分頁的該已校準64kB區域,並且將該已校準64kB區域處理當成一64kB分頁);(n)在一存取上由一第一平行處理單元202(1)至映射在一第二平行處理單元202(2)上的一未映射分頁,其最近尚未遷移、未映射來自第二平行處理單元202(2)的該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁、將該分頁遷移至第一平行處理單元202(1)以及將該分頁映射至第一平行處理單元202(1);以及(o)在一存取上由一第一平行處理單元202(1)至映射在一第二平行處理單元202(2)上的一未映射分頁,其最近已經遷移、將該錯誤分頁,加上與該虛擬位址空間內該錯誤分頁相鄰的額外分頁,映射至第一平行處理單元202(1)以及將該分頁的該映射維持在第二平行處理單元202(2)上。
總結來說,許多包含「進位」的啟發規則都有可能,並且本發明範疇並不受限於這些範例。
在某些具體實施例內,該分頁狀態目錄輸入可包含轉換狀態資訊,確保由中央處理單元102與平行處理單元202之內單元所做許多要求之間正確同步,例如:分頁狀態目錄210輸入可包含一轉換狀態,指示一特定分頁在從中央處理單元所有轉換成平行處理單元所有的處理當 中。中央處理單元102與平行處理單元202內的許多單元,例如決定一分頁在這種轉換狀態之中的中央處理單元錯誤處置器211以及平行處理單元錯誤處置器215,可領先一分頁錯誤程序的一部分,避免對於該相同虛擬記憶體位址的一先前虛擬記憶體存取觸發一分頁錯誤程序內的步驟。針對一特定範例,若一分頁錯誤導致一分頁從系統記憶體104遷移至平行處理單元記憶體204,則會偵測到導致相同遷移的不同分頁錯誤,並且不會導致另一個分頁遷移。進一步,在有超過一個寫入至分頁狀態目錄210之處,中央處理單元102與平行處理單元202內許多單元可實施單元操作,以便在分頁狀態目錄210上正確排列操作,例如:針對修改分頁狀態目錄210輸入,中央處理單元錯誤處置器211或平行處理單元錯誤處置器215可發出一單元比較與交換操作,以修改分頁狀態目錄210內特定輸入的該分頁狀態。因此,不用來自其他單元的操作介入就可完成該修改。
多個分頁狀態目錄210可儲存在系統記憶體104內-每一虛擬記憶體位址空間一個。因此,由中央處理單元102或平行處理單元202產生的一記憶體存取要求可包含一虛擬記憶體位址,並且也識別與該虛擬記憶體位址相關聯的該虛擬記憶體位址空間。以下及第三圖將提供有關分頁狀態目錄的額外細節。
如同中央處理單元102可執行包含虛擬記憶體位址的記憶體存取要求(即是包含透過一虛擬記憶體位址要求存取資料的指令),平行處理單元202也可執行類似類型的記憶體存取要求。尤其是,平行處理單元202包含上面結合第一圖所描述的複數個執行單元,例如一般處理叢集以及串流多重處理器,其設置成執行多個執行緒以及執行緒群組。在操作上,這些執行緒可利用指定一虛擬記憶體位址,從記憶體(例如系統記憶體104或平行處理單元記憶體204)要求資料。如同使用中央處理單元102以及中央處理單元記憶體管理單元209,平行處理單元202包含平行處理單元記憶體管理單元(MMU,memory management unit)213。平行處理單元記憶體管理單元213接收來自平行處理單元202的虛擬記憶體位址轉譯,並且嘗試提供來自平行處理單元分頁表208的一轉譯給該虛擬記憶體位址。類似於中央處理單元分頁表206,平行處理單元分頁表208包含虛擬記憶體位址與 實體記憶體位址之間的映射。這也適用於中央處理單元分頁表206,針對任何已知的虛擬位址,平行處理單元分頁表208並不包含將該虛擬記憶體位址映射至一實體記憶體位址的一分頁表輸入。針對使用中央處理單元記憶體管理單元209,當平行處理單元記憶體管理單元213要求來自平行處理單元分頁表208的一虛擬記憶體位址轉譯,並且在平行處理單元分頁表208內不存在映射或平行處理單元分頁表208不允許該存取類型,則平行處理單元記憶體管理單元213產生一分頁錯誤。接著,平行處理單元錯誤處置器215觸發一分頁錯誤程序。同樣地,底下更詳細說明在統一虛擬記憶體系統200內實施的不同種分頁錯誤程序。
如上述,在回應接收到虛擬記憶體位址轉譯要求方面,若該中央處理單元分頁表206不包含與該要求的虛擬記憶體位址相關聯之一映射,或不允許要求的存取類型,則中央處理單元記憶體管理單元209產生一分頁錯誤。類似地,在回應接收到虛擬記憶體位址轉譯要求方面,若該平行處理單元分頁表208不包含與該要求的虛擬記憶體位址相關聯之一映射,或不允許要求的存取類型,則平行處理單元記憶體管理單元213產生一分頁錯誤。當中央處理單元記憶體管理單元209或平行處理單元記憶體管理單元213產生一分頁錯誤時,要求該虛擬記憶體位址上資料的該執行緒靜止,並且一「本機錯誤處置器」-用於中央處理單元102的中央處理單元錯誤處置器211或用於平行處理單元202的平行處理單元錯誤處置器215-嘗試利用執行「分頁錯誤程序」來解決該分頁錯誤。如上所示,一分頁錯誤程序包含一系列操作,可讓該錯誤單元(即是在中央處理單元102或平行處理單元202內導致該分頁錯誤的單元)存取與該虛擬記憶體位址相關聯的該資料。在完成該分頁錯誤程序之後,恢復執行透過該虛擬記憶體位址要求該資料的該執行緒。在某些具體實施例內,利用允許該錯誤復原邏輯追蹤錯誤記憶體存取,與錯誤指令相反,簡化錯誤復原。
該等操作根據所有權狀態改變或存取許可改變,在一分頁錯誤程序期間執行,若是,則必須經歷與該分頁錯誤相關聯的該記憶體分頁。從當前所有權狀態至新所有權狀態的轉換,或存取權限的變化,都可為該分頁錯誤程序的一部分。在某些實例當中,從系統記憶體104將與該分頁 錯誤相關聯的該記憶體分頁遷移至平行處理單元記憶體204也屬於該分頁錯誤程序的一部分。在其他例子中,從平行處理單元記憶體204將與該分頁錯誤相關聯的該記憶體分頁遷移至系統記憶體104也屬於該分頁錯誤程序的一部分。本說明書內有更完整描述的許多啟發,可用來設置統一虛擬記憶體系統200,以改變記憶體分頁所有權狀態,或在操作條件與模式的許多設定之下,遷移記憶體分頁。底下更詳細描述用於以下四個記憶體分頁所有權狀態轉換的分頁錯誤程序:中央處理單元所有至中央處理單元共享、中央處理單元所有至平行處理單元所有、平行處理單元所有至中央處理單元所有以及平行處理單元所有至中央處理單元共享。
平行處理單元202引起的錯誤會起始從中央處理單元所有至中央處理單元共享的轉換。在這種轉換之前,在平行處理單元202內執行的執行緒嘗試存取一虛擬記憶體位址上未映射在平行處理單元分頁表208內的資料。此存取嘗試導致一平行處理單元型分頁錯誤,然後導致一錯誤緩衝區輸入寫入至錯誤緩衝區216。在回應上,平行處理單元錯誤處置器215讀取對應至該虛擬記憶體位址的分頁狀態目錄210輸入,並且識別與該虛擬記憶體位址相關聯的該記憶體分頁。在讀取分頁狀態目錄210之後,平行處理單元錯誤處置器215決定與該虛擬記憶體位址相關聯的該記憶體分頁之該當前所有權狀態為中央處理單元所有。根據該當前所有權狀態以及其他因素,例如該記憶體分頁的使用率特性或記憶體存取類型,平行處理單元錯誤處置器215決定該分頁的新所有權狀態應該為中央處理單元共享。
為了變更該所有權狀態,平行處理單元錯誤處置器215將一新輸入寫入對應至該虛擬記憶體位址的平行處理單元分頁表208內,並且將該虛擬記憶體位址關聯於透過分頁狀態目錄210輸入識別的該記憶體分頁。平行處理單元錯誤處置器215也針對該記憶體分頁修改分頁狀態目錄210輸入,以指示該所有權狀態為中央處理單元共享。在某些具體實施例內,平行處理單元202內的轉譯側查緩衝區(TLB,translation look-aside buffer)對於說明其中該轉譯至一有效分頁已經快取的情況無效。在此點上,該分頁錯誤程序完成。該記憶體分頁的該所有權狀態為中央處理單元共享,表 示該記憶體分頁可存取至中央處理單元102以及平行處理單元202。中央處理單元分頁表206以及平行處理單元分頁表208都包含將該虛擬記憶體位址關聯至該記憶體分頁的輸入。
平行處理單元202引起的錯誤會起始從中央處理單元所有至平行處理單元共享的轉換。在這種轉換之前,在平行處理單元202內執行的一操作嘗試存取一虛擬記憶體位址上未映射在平行處理單元分頁表208內的資料。此記憶體存取嘗試導致一平行處理單元型分頁錯誤,然後導致一錯誤緩衝區輸入寫入至錯誤緩衝區216。在回應上,平行處理單元錯誤處置器215讀取對應至該虛擬記憶體位址的分頁狀態目錄210輸入,並且識別與該虛擬記憶體位址相關聯的該記憶體分頁。在讀取分頁狀態目錄210之後,平行處理單元錯誤處置器215決定與該虛擬記憶體位址相關聯的該記憶體分頁之該當前所有權狀態為中央處理單元所有。根據該當前所有權狀態以及其他因素,例如該分頁的使用率特性或記憶體存取類型,平行處理單元錯誤處置器215決定該分頁的新所有權狀態為平行處理單元所有。
平行處理單元202將一錯誤緩衝區輸入寫入至錯誤緩衝區216,指示平行處理單元202產生一分頁錯誤,並且指示該虛擬記憶體位址關聯於該分頁錯誤。在中央處理單元102上執行的平行處理單元錯誤處置器215讀取該錯誤緩衝區輸入,並且在回應上,中央處理單元102將該中央處理單元分頁表206內與導致該分頁錯誤的該虛擬記憶體位址相關聯之該映射移除。中央處理單元102可在移除該映射之前及/或之後,清除快取。中央處理單元102也將命令寫入命令佇列214,指示平行處理單元202從系統記憶體104將該分頁複製到平行處理單元記憶體204。平行處理單元202內的複製引擎212讀取命令佇列214內的該等命令,並且從系統記憶體104將該分頁複製到平行處理單元記憶體202。平行處理單元202將一分頁表輸入寫入對應至該虛擬記憶體位址的平行處理單元分頁表208內,並且將該虛擬記憶體位址關聯於平行處理單元記憶體204內該新複製記憶體分頁。該寫入至平行處理單元分頁表208可透過複製引擎212來達成,另外中央處理單元102可更新平行處理單元分頁表208。平行處理單元錯誤處置器215也針對該記憶體分頁修改分頁狀態目錄210輸入,以指示該所有權狀態 為平行處理單元所有。在某些具體實施例內,平行處理單元202或中央處理單元102內轉譯側查緩衝區的輸入可無效,說明該轉譯已經快取的情況。在此點上,該分頁錯誤程序完成。該記憶體分頁的該所有權狀態為平行處理單元所有,表示該記憶體分頁只可存取至平行處理單元202。只有平行處理單元分頁表208包含將該虛擬記憶體位址關聯至該記憶體分頁的輸入。
中央處理單元102引起的錯誤會起始從平行處理單元所有至中央處理單元所有的轉換。在這種轉換之前,在中央處理單元102內執行的一操作嘗試存取一虛擬記憶體位址上未映射在中央處理單元分頁表206內的資料,其導致一中央處理單元型分頁錯誤。中央處理單元錯誤處置器211讀取對應至該虛擬記憶體位址的分頁狀態目錄210輸入,並且識別與該虛擬記憶體位址相關聯的該記憶體分頁。在讀取分頁狀態目錄210之後,中央處理單元錯誤處置器211決定與該虛擬記憶體位址相關聯的該記憶體分頁之該當前所有權狀態為平行處理單元所有。根據該當前所有權狀態以及其他因素,例如該分頁的使用率特性或記憶體存取類型,中央處理單元錯誤處置器211決定該分頁的新所有權狀態為中央處理單元所有。
中央處理單元錯誤處置器211將與該記憶體分頁相關聯的該所有權狀態改變成中央處理單元所有,中央處理單元錯誤處置器211將一命令寫入命令佇列214,導致複製引擎212從平行處理單元分頁表208將該虛擬記憶體位址關聯於該記憶體分頁的該輸入移除。許多轉譯側查緩衝區輸入都無效。中央處理單元錯誤處置器211也從平行處理單元記憶體204將該記憶體分頁複製到系統記憶體104,這可透過命令佇列214以及複製引擎212來完成。中央處理單元錯誤處置器211將一分頁表輸入寫入中央處理單元分頁表206,其將該虛擬記憶體位址關聯於複製到系統記憶體104的該記憶體分頁。中央處理單元錯誤處置器211也更新分頁狀態目錄210,將該虛擬記憶體位址關聯於該新複製的記憶體分頁。在此點上,該分頁錯誤程序完成。該記憶體分頁的該所有權狀態為中央處理單元所有,表示該記憶體分頁只可存取至中央處理單元102。只有中央處理單元分頁表206包含將該虛擬記憶體位址關聯至該記憶體分頁的輸入。
中央處理單元102引起的錯誤會起始從平行處理單元所有 至中央處理單元共享的轉換。在這種轉換之前,在中央處理單元102內執行的一操作嘗試存取一虛擬記憶體位址上未映射在中央處理單元分頁表206內的記憶體,其導致一中央處理單元型分頁錯誤。中央處理單元錯誤處置器211讀取對應至該虛擬記憶體位址的分頁狀態目錄210輸入,並且識別與該虛擬記憶體位址相關聯的該記憶體分頁。在讀取分頁狀態目錄210之後,中央處理單元錯誤處置器211決定與該虛擬記憶體位址相關聯的該記憶體分頁之該當前所有權狀態為平行處理單元所有。根據該當前所有權狀態或存取類型以及其他因素,例如該分頁的使用率特性,中央處理單元錯誤處置器211決定該記憶體分頁的新所有權狀態為中央處理單元共享。
中央處理單元錯誤處置器211將與該記憶體分頁相關聯的該所有權狀態改變成中央處理單元共享,中央處理單元錯誤處置器211將一命令寫入命令佇列214,導致複製引擎212從平行處理單元分頁表208將該虛擬記憶體位址關聯於該記憶體分頁的該輸入移除。許多轉譯側查緩衝區輸入都無效。中央處理單元錯誤處置器211也將該記憶體分頁從平行處理單元記憶體204複製到系統記憶體104,此複製操作可透過命令佇列214以及複製引擎212來達成。然後中央處理單元錯誤處置器211將一命令寫入命令佇列214,導致複製引擎212改變平行處理單元分頁表208內的該輸入,如此該虛擬記憶體位址關聯於系統記憶體104內的該記憶體分頁。許多轉譯側查緩衝區輸入都無效。中央處理單元錯誤處置器211將一分頁表輸入寫入中央處理單元分頁表206,以便將該虛擬記憶體位址關聯於系統記憶體104內的該記憶體分頁。中央處理單元錯誤處置器211也更新分頁狀態目錄210,將該虛擬記憶體位址關聯於系統記憶體104內的該記憶體分頁。在此點上,該分頁錯誤程序完成。該分頁的該所有權狀態為中央處理單元共享,並且該記憶體分頁已經複製到系統記憶體104。該分頁可存取至中央處理單元102,因為中央處理單元分頁表206包含將該虛擬記憶體位址關聯於系統記憶體104內該記憶體分頁的一輸入。該分頁也可存取至平行處理單元202,因為平行處理單元分頁表208包含將該虛擬記憶體位址關聯於系統記憶體104內該記憶體分頁的一輸入。
分頁錯誤程序的詳細範例
在此提供在從中央處理單元所有至中央處理單元共享的轉換事件中,由平行處理單元錯誤處置器215所執行一分頁錯誤程序之詳細描述,以顯示如何使用單元操作以及轉移狀態來更有效率管理一分頁錯誤程序。該分頁錯誤程序由平行處理單元202執行緒觸發,嘗試存取一虛擬位址,其中一映射並不存在於平行處理單元分頁表208內。當一執行緒嘗試透過一虛擬記憶體位址存取資料時,平行處理單元202(尤其是一使用者階層執行緒)要求來自平行處理單元分頁表208的一轉譯。因為平行處理單元分頁表208不包含與該要求虛擬記憶體位址相關聯的一映射,所以發生一平行處理單元分頁錯誤來回應。
在發生該分頁錯誤之後,該執行緒進入一陷阱、靜止並且該平行處理單元錯誤處置器215執行一分頁錯誤程序。平行處理單元錯誤處置器215讀取分頁狀態目錄210,以決定哪個記憶體分頁關聯於該虛擬記憶體位址,以及決定該虛擬記憶體位址的該狀態。平行處理單元錯誤處置器215從分頁狀態目錄210決定,該記憶體分頁的該所有權狀態為中央處理單元所有。因此,平行處理單元202所要求的該資料無法透過一虛擬記憶體位址存取至平行處理單元202。該記憶體分頁的狀態資訊也指示該要求的資料無法遷移至平行處理單元記憶體204。
根據從分頁狀態目錄210所獲得的該狀態資訊,平行處理單元錯誤處置器215決定該記憶體分頁的新狀態應為中央處理單元共享。平行處理單元錯誤處置器215將該狀態改變成「轉換成中央處理單元共享」,此狀態指示該分頁目前在轉換成中央處理單元共享的程序當中。當平行處理單元錯誤處置器215在該記憶體管理單元內一微控制器上運行時,則兩個處理器將非同步更新分頁狀態目錄210,在分頁狀態目錄210上使用單元比較與交換(CAS,compare-and-swap)操作,將該狀態改變成「轉換成圖形處理單元可見」(中央處理單元共享)。
平行處理單元202更新平行處理單元分頁表208,將該虛擬位址關聯於該記憶體分頁。平行處理單元202也使該轉譯側查緩衝區快取輸入無效。接下來,平行處理單元202在分頁狀態目錄210上執行另一個單元比較與交換操作,將與該記憶體分頁相關聯的該所有權狀態改變成中 央處理單元共享。最後,結束該分頁錯誤程序,並且恢復執行透過該虛擬記憶體位址要求該資料的該執行緒。
錯誤緩衝區
中央處理單元102所產生分頁錯誤的解決並不牽涉到該錯誤緩衝區216,不過由平行處理單元記憶體管理單元213所產生分頁錯誤的解決牽涉到該錯誤緩衝區216。底下參考第五圖與第六圖,更詳細描述解決由平行處理單元記憶體管理單元213所產生分頁錯誤當中錯誤緩衝區216之角色。
第五圖例示根據本發明一個具體實施例,用於將錯誤儲存在一錯誤緩衝區的一虛擬記憶體系統500。如所示,虛擬記憶體系統500包含一平行處理單元錯誤處置器215、一錯誤緩衝區216以及一平行處理單元202,包含多個串流多重處理器504。
錯誤緩衝區216儲存錯誤緩衝區輸入502,指示與平行處理單元202所產生分頁錯誤有關的資訊。錯誤緩衝區輸入502可包含例如:已嘗試的存取類型(例如讀取、寫入或單元)、一嘗試存取導致一分頁錯誤的該虛擬記憶體位址、該虛擬位址空間以及導致一分頁錯誤的一單元或執行緒之指示。在操作上,當平行處理單元202導致一分頁錯誤,則平行處理單元202可將一錯誤緩衝區輸入502寫入錯誤緩衝區216,通知平行處理單元錯誤處置器215有關該錯誤記憶體分頁以及導致該錯誤的存取類型。然後,平行處理單元錯誤處置器215執行動作來解決該分頁錯誤。因為平行處理單元202正在執行複數個執行緒,其中由於平行處理單元202的該記憶體存取之管線天性,所以每一執行緒都可導致一或多個錯誤,如此錯誤緩衝區216可儲存多個錯誤。每一錯誤緩衝區輸入502都可由一或多個串流多重處理器504所產生,這些處理器包含在平行處理單元202之內。
第六圖例示根據本發明一個具體實施例,用於解決平行處理單元202所產生分頁錯誤的一虛擬記憶體系統600。如所示,虛擬記憶體系統600包含一平行處理單元錯誤處置器215、一錯誤緩衝區216、一包含命令佇列214的一系統記憶體104以及包含一複製引擎212的一平行處理單元202。
平行處理單元錯誤處置器215讀取儲存在錯誤緩衝區216內的錯誤緩衝區輸入502,以決定如何解決與錯誤緩衝區輸入502相關聯的該等分頁錯誤。為了解決該等分頁錯誤,平行處理單元錯誤處置器215執行一分頁錯誤程序,以修改與對應至錯誤緩衝區輸入502的記憶體分頁相關聯之一分頁狀態目錄輸入,及/或遷移與該錯誤緩衝區輸入502相關聯的記憶體分頁。在一分頁錯誤程序期間,中央處理單元102或平行處理單元202可將命令寫入命令佇列214,供複製引擎212來執行。這種方式在複製引擎212讀取並執行命令佇列214內所儲存該等命令時,釋放中央處理單元102或平行處理單元202來執行其他任務,並且允許同時佇存一錯誤程序的所有命令,藉此避免監控該錯誤程序的進度。由複製引擎212執行的命令可包含在平行處理單元分頁表208內刪除、建立或修改分頁表輸入、從系統記憶體104讀與或寫入資料以及讀取或寫入資料至平行處理單元記憶體204。
中央處理單元102和平行處理單元202可分別交換範疇,換言之,一平行處理單元202可將一錯誤緩衝區輸入寫入錯誤緩衝區216,來回應偵測到一錯誤。該中央處理單元內的平行處理單元錯誤處置器215不會立即解決此錯誤緩衝區,而是中央處理單元102可執行其他處理任務,並且最終處置該平行處理單元錯誤。如此,中央處理單元102與平行處理單元202並不需要同時在相同範疇內操作。換言之,中央處理單元102可執行一處理,其與產生目前在平行處理單元202上執行的工作之處理不同。為了將哪個處理關聯於產生一錯誤緩衝區輸入502的平行處理單元202工作通知平行處理單元錯誤處置器215,平行處理單元202提供具有該錯誤緩衝區輸入的一實例指標器,將行處理單元202導致該錯誤通知該位址空間的中央處理單元102。錯誤緩衝區216可包含與相同記憶體分頁相關聯的許多分頁錯誤輸入,因為多個串流多重處理器504都平行運行,並且可產生導引至該相同記憶體分頁的分頁錯誤。平行處理單元錯誤處置器215試驗錯誤緩衝區216,以決定要解決哪個錯誤。
統一虛擬記憶體系統架構變化
統一虛擬記憶體系統200可進行許多修改,例如在某些具體 實施例內,在將一錯誤緩衝區輸入寫入錯誤緩衝區216之後,平行處理單元202可觸發一中央處理單元岔斷,導致中央處理單元102讀取錯誤緩衝區216內的錯誤緩衝區輸入,並且執行適當操作來回應該錯誤緩衝區輸入。在其他具體實施例內,中央處理單元102可定期輪詢錯誤緩衝區216。在中央處理單元102在錯誤緩衝區216內找到一錯誤緩衝區輸入之事件中,中央處理單元102執行一系列操作,以回應該錯誤緩衝區輸入。
在某些具體實施例內,系統記憶體104而非平行處理單元記憶體204,儲存平行處理單元分頁表208。在其他具體實施例內,單一或多層快取階層,例如單一或多層轉譯側查緩衝區(TLB,translation look-aside buffer)階層(未顯示),可實施來快取虛擬位址轉譯給中央處理單元分頁表206或平行處理單元分頁表208。
尚且在其他具體實施例內,在一執行緒在平行處理單元202內執行引起一平行處理單元錯誤(一「錯誤執行緒」)的事件中,平行處理單元202可採取一或多個動作,這些動作包含:靜止整個平行處理單元202、靜止執行該錯誤執行緒的該串流多重處理器、靜止平行處理單元記憶體管理單元213、只靜止該錯誤執行緒、靜止包含該錯誤執行緒的一組執行緒,或靜止一或多層轉譯側查緩衝區。在某些具體實施例內,在發生一平行處理單元分頁錯誤之後,並且已經由統一虛擬記憶體系統200執行一分頁錯誤程序,則恢復該錯誤執行緒的執行,並且該錯誤執行緒再次嘗試執行導致該分頁錯誤的該記憶體存取要求。在某些具體實施例內,以當成長延遲存取至該錯誤串流多重處理器或錯誤執行緒的方式,達到在一轉譯側查緩衝區上靜止,如此不需要該串流多重處理器針對一錯誤做任何特殊操作。
最後在其他替代具體實施例內,統一虛擬記憶體驅動程式101可包含指令導致中央處理單元102執行一或多個操作,用來管理統一虛擬記憶體系統200並且解決一分頁錯誤,例如存取中央處理單元分頁表206、分頁狀態目錄210及/或錯誤緩衝區216。在其他具體實施例內,一作業系統核心(未顯示)可設置成利用存取中央處理單元分頁表206、分頁狀態目錄210及/或錯誤緩衝區216,管理統一虛擬記憶體系統200並解決一分頁錯誤。尚且在其他具體實施例內,一作業系統核心可與統一虛擬記憶體 驅動程式101結合操作,利用存取中央處理單元分頁表206、分頁狀態目錄210及/或錯誤緩衝區216,管理統一虛擬記憶體系統200並解決一分頁錯誤。
第七圖揭示根據本發明的一個具體實施例,用於透過分頁狀態目錄管理虛擬記憶體至實體記憶體映射的方法步驟流程圖。雖然已經結合第一圖至第六圖來描述該等方法步驟,不過此領域技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法700從步驟702開始,在此一平行處理單元202執行參照一第一虛擬記憶體位址的第一操作。在步驟704內,平行處理單元記憶體管理單元213讀取平行處理單元分頁表208,並且決定平行處理單元分頁表208不包含與該第一虛擬記憶體位址相關聯的一映射。平行處理單元記憶體管理單元213做出此決定時產生第一分頁錯誤。在步驟706內,在平行處理單元錯誤處置器215解決該分頁錯誤並且將命令放入命令佇列214之後,平行處理單元202內的複製引擎212讀取命令佇列214,以決定對應至該第一虛擬記憶體位址的一映射。在步驟708內,複製引擎212更新平行處理單元分頁表208,以包含該映射。
第八圖揭示根據本發明的一個具體實施例,用於追蹤分頁錯誤的方法步驟流程圖。雖然已經結合第一圖至第六圖來描述該等方法步驟,不過此領域技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法800從步驟802開始,其中一平行處理單元202執行與一第一虛擬記憶體位址相關聯的第一指令。在步驟804內,平行處理單元記憶體管理單元213決定平行處理單元分頁表208不包含與該第一虛擬記憶體位址相關聯的一第一映射。在步驟805內,串流多重處理器504或執行該第一指令的其他單元都靜止。在步驟806內,平行處理單元202將第一分頁錯誤傳輸至錯誤緩衝區216。
第九圖揭示根據本發明的一個具體實施例,用於使用一錯誤緩衝區解決分頁錯誤的方法步驟流程圖。雖然已經結合第一圖至第六圖來描述該等方法步驟,不過此領域技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法900從步驟902開始,其中一錯誤緩衝區216儲存複數個錯誤緩衝區輸入。在步驟904內,平行處理單元錯誤處置器215讀取該錯誤緩衝區輸入,以解決該錯誤緩衝區輸入。在步驟906內,平行處理單元錯誤處置器215決定要採取哪些步驟來解救該錯誤緩衝區,並且觸發一分頁錯誤程序來解決與該等錯誤緩衝區輸入相關聯的一或多個分頁錯誤。在步驟908內,平行處理單元錯誤處置器215傳輸命令至一命令佇列214,來更新平行處理單元分頁表208。在步驟910內,串流多重處理器504或已經靜止的其他單元都恢復執行。
第十圖揭示根據本發明的一個具體實施例,用於建立與管理一虛擬記憶體架構內共用指標器的方法步驟流程圖。雖然已經結合第一圖至第六圖來描述該等方法步驟,不過此領域技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1000從步驟1002開始,其中統一虛擬記憶體驅動程式101儲存一第一分頁狀態目錄輸入,其包含一第一虛擬記憶體位址與一第一實體記憶體位址之間的一映射。在步驟1004,中央處理單元記憶體管理單元209或平行處理單元記憶體管理單元213都根據該第一分頁狀態目錄,將該第一虛擬記憶體位址轉譯成該第一實體位址。在步驟1005,複製或遷移與該第一虛擬位址相關聯的一記憶體分頁。在步驟1006,統一虛擬記憶體驅動程式101儲存一第二分頁狀態目錄輸入(或修改該第一分頁狀態目錄輸入來代替),其包含一第一虛擬記憶體位址與一第二實體記憶體位址之間的一映射。此第二分頁目錄輸入儲存起來,以回應修改與該第一分頁狀態目錄輸入相關聯的該記憶體分頁之狀態,例如:該記憶體分頁可從一個記憶體單元遷移至另一個,或可從一個記憶體單元複製到另一個。在步驟1008,中央處理單元記憶體管理單元209或平行處理單元記憶體管理單元213都根據該第二分頁狀態目錄,將該第一虛擬記憶體位址轉譯成該第二實體記憶體位址。
第十一圖揭示根據本發明的一個具體實施例,用於管理一虛擬記憶體子系統內所有權狀態的方法步驟流程圖。雖然已經結合第一圖至第六圖來描述該等方法步驟,不過此技術領域人士將了解,設置來執行該 等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1100從步驟1102開始,其中中央處理單元記憶體管理單元209或平行處理單元記憶體管理單元213都發出一分頁錯誤,以回應分別由中央處理單元102或平行處理單元202所要求的一記憶體存取。在步驟1104,中央處理單元錯誤處置器211或平行處理單元錯誤處置器215識別一分頁狀態目錄210內一輸入,對應至與該虛擬記憶體位址相關聯的一記憶體分頁。在步驟1107,分頁狀態目錄210內該記憶體分頁的所有權狀態經過修改,並且若有需要則遷移該記憶體分頁。在步驟1106,中央處理單元錯誤處置器211或平行處理單元錯誤處置器215從分頁狀態目錄210內該輸入,讀取與該記憶體分頁相關聯的一所有權狀態。在步驟1108,中央處理單元錯誤處置器211或平行處理單元錯誤處置器215更新該本機分頁表,以包含對應至該虛擬記憶體位址的一輸入,並且將該虛擬記憶體位址關聯於該記憶體分頁。
總結來說,提供一種統一虛擬記憶體系統,在一中央處理單元與一或多個平行處理單元之間以共享方式管理記憶體。該統一虛擬記憶體系統包含一分頁狀態目錄,其中儲存包含在與該中央處理單元相關聯的一分頁表以及與該平行處理單元相關聯的一分頁表內之映射。當一平行處理單元或一中央處理單元觸發一分頁錯誤時,該分頁狀態目錄可用來提供與該分頁錯誤相關聯的記憶體分頁之狀態。此外,當一平行處理單元觸發一分頁錯誤時,該平行處理單元將一分頁錯誤傳輸至一錯誤緩衝區。該平行處理單元錯誤處置器試驗該錯誤緩衝區的內容,以解決該等分頁錯誤。提供一錯誤緩衝區,允許該平行處理單元錯誤處置器「合併」該平行處理單元所執行的分頁錯誤。此外,統一虛擬記憶體驅動程式管理該分頁狀態目錄以及相關的虛擬記憶體位址,如此該虛擬記憶體位址在該中央處理單元與該平行處理單元之間共用。最後,該統一虛擬記憶體驅動程式實施一遷移方法,根據該中央處理單元與平行處理單元的使用率,遷移記憶體分頁。
上述方式的優點在於根據特定資料片段所儲存位置,使用者階層應用不需要保持追蹤多個指標器。額外優點在於記憶體分頁根據使用 率在記憶體單元之間遷移,這允許記憶體分頁位於單元本機上,讓存取該等記憶體分頁更頻繁。另一個優點在於提供一錯誤緩衝區,允許合併該平行處理單元產生的錯誤來有效執行。
本發明的一個具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包含本文所述的方法)的功能,並且可包含在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包含但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);以及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將會了解,在不背離申請專利範圍內公佈之本發明廣泛精神以及領域下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明具體實施例的範疇公布於以下的申請專利範圍之內。
104‧‧‧系統記憶體
204‧‧‧平行處理單元記憶體
210‧‧‧分頁狀態目錄
400‧‧‧系統
401‧‧‧分頁狀態目錄輸入
402‧‧‧虛擬記憶體位址
404‧‧‧實體記憶體位址
406‧‧‧狀態資訊
408‧‧‧記憶體分頁

Claims (10)

  1. 一種透過一分頁狀態目錄來管理虛擬記憶體至實體記憶體映射之系統,該系統包含:一第一處理單元,其設置成執行參考一第一虛擬記憶體位址的一第一操作;一第一記憶體管理單元(MMU,memory management unit),其與該第一處理單元相關聯並且設置成決定儲存在與該第一處理單元相關聯的一第一記憶體單元內之一第一分頁表並不包含對應至該第一虛擬記憶體位址的一映射時,產生與該第一虛擬記憶體位址相關聯的一第一分頁錯誤;以及一第一複製引擎,其與該第一處理單元相關聯並且設置成:讀取一第一命令佇列,以決定對應至與該第一分頁錯誤相關聯的該第一虛擬記憶體位址並且包含在一第一分頁狀態目錄內的一第一映射,以及更新該第一分頁表來包含該第一映射。
  2. 如申請專利範圍第1項之系統,其中該第一分頁狀態目錄具有一第一輸入,其包含該第一映射,並且其中該第一分頁狀態目錄另包含一第一組輸入,其包含該第一輸入與一第二組輸入,該第一分頁表根據該第一組輸入包含一第一複數個輸入,以及一第二分頁表,其與一第二處理單元相關聯並且根據該第二組輸入包含一第二複數個輸入。
  3. 如申請專利範圍第2項之系統,其中該第一複數個輸入內含的每一輸入都係根據該第一組輸入內含的不同輸入,並且該第二複數個輸入內含的每一輸入都係根據該第二組輸入內含的不同輸入。
  4. 如申請專利範圍第2項之系統,其中該第一輸入另包含第一狀態資料,其指示複數個同質處理單元內含的一或多個處理單元,存取至與該第一映射相關聯的一第一記憶體分頁,並且其中該第一處理單元與該第二處理單元都包含在該複數個同質處理單元內。
  5. 如申請專利範圍第4項之系統,其中該第一輸入另包含第二狀態資料,其指示與該第一記憶體分頁相關聯的一第一遷移狀態。
  6. 如申請專利範圍第2項之系統,其中該第二處理單元設置成執行參考該第一虛擬記憶體位址的一第二操作。
  7. 如申請專利範圍第6項之系統,其中:該第一輸入與該第一處理單元相關聯,該第一分頁狀態目錄另包含一第二輸入,其與該第一虛擬記憶體位址以及該第二處理單元相關聯,並且其中該第二輸入包含一第二映射,其對應至該第一虛擬記憶體位址,以及該第一輸入包含參照該第二映射的一轉送輸入。
  8. 如申請專利範圍第2項之系統,另包含一第二分頁狀態目錄,其中該第一分頁狀態目錄關聯於一第一處理,並且該第二分頁狀態目錄關聯於一第二處理。
  9. 如申請專利範圍第8項之系統,其中該第一輸入關聯於一第一實體位址,包含在該第二分頁狀態目錄內的一第二輸入也關聯於該第一實體位址,並且該第二輸入包含至該第一輸入的一連結。
  10. 一種透過一分頁狀態目錄來管理虛擬記憶體至實體記憶體映射之方法,該方法包含:執行參照一第一虛擬記憶體位址的一第一操作;決定儲存在與一第一處理單元相關聯的一第一記憶體單元內之一第一分頁表並不包含對應至該第一虛擬記憶體位址的一映射時,產生與該第一虛擬記憶體位址相關聯的一第一分頁錯誤;經由包括在一處理器內的一複製引擎讀取一第一命令佇列,以決定對應至與該第一分頁錯誤相關聯的該第一虛擬記憶體位址並且包含在一第一分頁狀態目錄內的一第一映射,以及更新該第一分頁表來包含該第一映射。
TW102149060A 2013-03-14 2013-12-30 管理統一虛擬記憶體的分頁狀態目錄 TWI515564B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361782349P 2013-03-14 2013-03-14
US201361800004P 2013-03-15 2013-03-15
US14/055,318 US9767036B2 (en) 2013-03-14 2013-10-16 Page state directory for managing unified virtual memory

Publications (2)

Publication Number Publication Date
TW201447574A TW201447574A (zh) 2014-12-16
TWI515564B true TWI515564B (zh) 2016-01-01

Family

ID=52707496

Family Applications (3)

Application Number Title Priority Date Filing Date
TW102149060A TWI515564B (zh) 2013-03-14 2013-12-30 管理統一虛擬記憶體的分頁狀態目錄
TW102149069A TW201447579A (zh) 2013-03-14 2013-12-30 追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區
TW102149073A TW201447582A (zh) 2013-03-14 2013-12-30 統一虛擬記憶體系統的遷移方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW102149069A TW201447579A (zh) 2013-03-14 2013-12-30 追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區
TW102149073A TW201447582A (zh) 2013-03-14 2013-12-30 統一虛擬記憶體系統的遷移方法

Country Status (1)

Country Link
TW (3) TWI515564B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
WO2016205976A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Apparatus and method for efficient communication between virtual machines
US10140216B2 (en) * 2016-01-21 2018-11-27 Arm Limited Measuring address translation latency
US10838656B2 (en) 2016-12-20 2020-11-17 Mediatek Inc. Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units
CN110134325A (zh) * 2018-02-09 2019-08-16 晨星半导体股份有限公司 存储器控制装置及存储器控制方法

Also Published As

Publication number Publication date
TW201447579A (zh) 2014-12-16
TW201447574A (zh) 2014-12-16
TW201447582A (zh) 2014-12-16

Similar Documents

Publication Publication Date Title
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
US10031856B2 (en) Common pointers in unified virtual memory system
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US9792220B2 (en) Microcontroller for memory management unit
US9830210B2 (en) CPU-to-GPU and GPU-to-GPU atomics
TW201502781A (zh) 解決記憶體存取錯誤時重播記憶體交易
US10216413B2 (en) Migration of peer-mapped memory pages
US10114758B2 (en) Techniques for supporting for demand paging
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system
TWI515564B (zh) 管理統一虛擬記憶體的分頁狀態目錄
CN104049904B (zh) 用于管理统一虚拟存储器的页面状态目录的系统和方法
CN104049951A (zh) 在解决存储器访问故障的同时重播存储器事务
CN104049903A (zh) 用于统一虚拟存储器系统的迁移方案
CN104049905B (zh) 在异构处理器之间迁移不同尺寸的页