TW201447579A - 追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區 - Google Patents

追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區 Download PDF

Info

Publication number
TW201447579A
TW201447579A TW102149069A TW102149069A TW201447579A TW 201447579 A TW201447579 A TW 201447579A TW 102149069 A TW102149069 A TW 102149069A TW 102149069 A TW102149069 A TW 102149069A TW 201447579 A TW201447579 A TW 201447579A
Authority
TW
Taiwan
Prior art keywords
processing unit
page
memory
parallel processing
central processing
Prior art date
Application number
TW102149069A
Other languages
English (en)
Inventor
Duluk, Jr
Cameron Buschardt
Sherry Cheung
Deming James Leroy
Samuel H Duncan
Lucien Dunning
Robert George
Arvind Gopalakrishnan
Mark Hairgrove
Cheng-Huan Jia
John Mashey
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
Priority claimed from US14/055,345 external-priority patent/US11487673B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201447579A publication Critical patent/TW201447579A/zh

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明揭示一種用於管理虛擬記憶體的系統,該系統包含一第一處理單元,其設置成執行參考一第一虛擬記憶體位址的一第一操作,該系統也包含與該第一處理單元相關聯的一第一記憶體管理單元(MMU,memory management unit),其設置成決定儲存在與該第一處理單元相關聯的一第一記憶體單元內之一第一分頁表並不包含對應至該第一虛擬記憶體位址的一映射時,產生一第一分頁錯誤。該系統另包含與該第一處理單元相關聯的一第一複製引擎,該第一複製引擎設置成讀取一第一命令佇列,以決定對應至該第一虛擬記憶體位址並且包含在一第一分頁狀態目錄內的一第一映射。該第一複製引擎也設置成更新該第一分頁表來包含該第一映射。

Description

追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區
本發明的具體實施例一般係關於虛擬記憶體,尤其係關於追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區。
大多數現代電腦系統通常實施某種虛擬記憶體架構,除此之外,該虛擬記憶體架構可讓指令使用虛擬記憶體位址存取記憶體,而非使用實體記憶體位址。利用在實體記憶體與應用軟體之間提供此虛擬記憶體,使用者階層軟體將不需要去擔心實體記憶體的管理細節,該實體記憶體管理係留給專屬記憶體管理系統之用。
實施虛擬記憶體架構的典型電腦系統包含一中央處理單元(CPU,central processing unit)以及一或多個圖形處理單元(GPU,graphics processing unit)。在操作上,在中央處理單元或圖形處理單元上執行的軟體處理可透過一虛擬記憶體位址要求資料。在許多傳統架構當中,透過將虛擬記憶體位址供給一中央處理單元以及一圖形處理單元,來處置資料要求的該等虛擬記憶體系統是獨立的,尤其是,個別中央處理單元記憶體管理系統與個別圖形處理器單元記憶體管理系統分別處置來自該中央處理單元以及圖形處理單元的資料要求。
這種獨立記憶體管理系統伴隨許多缺點,例如:每一獨立記憶體管理系統並不知道與該其他記憶體管理系統相關聯的該等記憶體單元內容,如此該記憶體管理系統不能合併來提供特定效率,例如決定資料應該儲存在哪處以改善存取延遲。此外,當該記憶體管理系統為獨立裝置,則這種系統的指標器不能與其他系統相容。如此,應用程式設計師必須持續追蹤兩種不同的指標器。
如先前所例示,業界內需要一種更有效率的方式,使用同質處理器,例如中央處理單元以及圖形處理單元,管理系統內的虛擬記憶體。
【簡述】
本發明的一個具體實施例揭示一種透過一分頁狀態目錄來管理虛擬記憶體至實體記憶體映射之系統。該系統包含一第一處理單元,其設置成執行參考一第一虛擬記憶體位址的一第一操作,該系統也包含與該第一處理單元相關聯的一第一記憶體管理單元(MMU,memory management unit),其設置成決定儲存在與該第一處理單元相關聯的一第一記憶體單元內之一第一分頁表並不包含對應至該第一虛擬記憶體位址的一映射時,產生一第一分頁錯誤。該系統另包含與該第一處理單元相關聯的一第一複製引擎,該第一複製引擎設置成讀取一第一命令佇列,以決定對應至該第一虛擬記憶體位址並且包含在一第一分頁狀態目錄內的一第一映射。該第一複製引擎也設置成更新該第一分頁表來包含該第一映射。
上述方式的優點在於根據特定資料片段所儲存位置,使用者階層應用不需要保持追蹤多個指標器。額外優點在於記憶體分頁根據使用率在記憶體單元之間遷移(migrate),這允許記憶體分頁位於存取該等記憶體分頁更頻繁之本機單元上。另一個優點在於提供一錯誤緩衝區,允許合併該並行處理單元產生的錯誤來讓執行有效率。
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連結)連接至記憶體橋接器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可整合到一橋接器晶片上。多PPU系統內的PPU 202可彼此一致或不同。例如:不同的並行處理單元202可具有不同數量的處理核心、不同大小的本機並行處理記憶體等等。當存在多個並行處理單元202時,這些並行處理單元可並行操作,以比單一並行處理單元202還要高產量的方式來處理資料。合併一或多個並行處理單元202的系統可在許多不同方式實施,包含桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
並行處理單元202都可實施一高並行處理架構。並行處理單 元202包含許多一般處理叢集(GPC,general processing cluster),每一一般處理叢集都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在某些具體實施例內,單一指令、多重資料(single-instruction,multiple-data,SIMD)指令發行技術用於支援大量執行緒的並行執行,而不用提供多個獨立指令單元。在其他具體實施例內,單一指令、多重執行緒(single-instruction,multiple-thread,SIMT)技術用於支援大量一般已同步執行緒的並行執行。不同於一單一指令、多重資料執行引擎,其中所有處理區域一般都執行一致的指令,單一指令、多重執行緒執行允許不同執行緒透過一已知執行緒程式更迅速遵循分散的執行路徑。
一般處理叢集都包含一些串流多重處理器(SM,streaming multiprocessor),其中每一串流多重處理器都設置成處理一或多個執行緒群組。這一系列指令傳輸至構成一執行緒的特定一般處理叢集,如本文先前所定義,並且通過串流多重處理器內並行處理引擎的特定數量同時執行的執行緒之集合在此稱為「經線」或「執行緒群組」。如本文所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一個執行緒指派給串流多重處理器內不同的處理引擎。此外,在串流多重處理器內可同時啟用複數個相關執行緒群組(在不同執行階段內)。此執行緒群組的集合稱為「合作執行緒陣列」(CAT,cooperative thread array)或「執行緒陣列」。
在本發明的具體實施例內,吾人想要使用一計算系統的並行 處理單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派一個獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸出資料部分要產生或寫入。
在操作上,中央處理單元102為電腦系統100的主要處理 器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令控制並行處理單元202的操作。在一個具體實施例內,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一並行處理單元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的岔斷(interupt)所啟動。
系統記憶體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內。
在某些具體實施例內,中央處理單元錯誤處置器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最可能使用該記憶體分頁並且將該記憶體分頁從系統記憶體104來回遷移至並行處理單元記憶體204會消耗過多時間,則統一虛擬記憶體系統200將「中央處理單元共享」的所有權狀態指派給一已知的記憶體分頁。
根據範例,錯誤處置器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)在並行處理單元202上基本存取已經映射至中央處理單元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之處,中央處理單元120與並行處理單元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」)操作,將該狀態改變成「轉換成圖形處理單元可見」(中央處理單元共享)。
並行處理單元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可分別交換範疇 (context switch),換言之,一並行處理單元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‧‧‧系統記憶體
202‧‧‧並行處理單元
212‧‧‧複製引擎
214‧‧‧命令佇列
215‧‧‧並行處理單元錯誤處置器
216‧‧‧錯誤緩衝區
502‧‧‧錯誤緩衝區輸入
504‧‧‧串流多重處理器

Claims (10)

  1. 一種用於追蹤分頁錯誤的系統,該系統包含:一第一處理實體,其設置成:執行與一第一虛擬記憶體位址相關聯的一第一指令,決定與該第一處理實體相關聯的一第一分頁表並不包含與該第一虛擬記憶體位址相關聯的一第一映射,以及將一第一錯誤緩衝區輸入傳輸至一錯誤緩衝區,以回應決定該第一分頁表不包含該第一映射;其中該錯誤緩衝區設置成儲存從至少該第一處理實體接收的複數個錯誤緩衝區輸入。
  2. 如申請專利範圍第1項之系統,其中該第一處理實體包含一記憶體管理單元,其設置成決定該第一分頁表不包含該第一映射,並且回應來將該第一錯誤緩衝區輸入傳輸至該錯誤緩衝區。
  3. 如申請專利範圍第2項之系統,其中:該第一處理實體另包含一第一串流多重處理器以及一第二串流多重處理器;該第一串流多重處理器設置成執行該第一指令;該第二串流多重處理器設置成執行與一第二虛擬記憶體位址相關聯的一第二指令;以及該記憶體管理單元設置成決定該第一分頁表不包含與該第二虛擬記憶體位址相關聯的一第二映射,並且回應來將一第二分頁錯誤傳輸至該錯誤緩衝區。
  4. 如申請專利範圍第3項之系統,其中:該第一串流多重處理器設置成靜止以回應該記憶體管理單元決定該第一分頁表不包含該第一映射;以及該第二串流多重處理器設置成靜止以回應該記憶體管理單元決定該第一分頁表不包含該第二映射。
  5. 如申請專利範圍第4項之系統,其中該第一串流多重處理器另設置成恢復執行並且嘗試再次執行該第一指令,並且該第二串流多重處理器 另設置成恢復執行並且嘗試再次執行該第二指令。
  6. 如申請專利範圍第1項之系統,另包含一第二處理實體,其設置成執行一第一分頁錯誤程序,以解決與該第一錯誤緩衝區輸入相關聯的一分頁錯誤。
  7. 如申請專利範圍第6項之系統,另包含一命令佇列,其中執行該第一分頁錯誤程序包含將一或多個命令傳輸至該命令佇列,該一或多個命令設置成導致該第一處理實體執行與該第一分頁錯誤程序相關聯的一第一組操作。
  8. 如申請專利範圍第7項之系統,其中該第一處理實體另包含一複製引擎,設置成執行該第一組操作。
  9. 如申請專利範圍第8項之系統,其中該複製引擎設置成執行包含在該第一組操作內的一第一操作,將該第一分頁表修改成包含該第一映射。
  10. 一種用於追蹤分頁錯誤的方法,該方法包含:執行與一第一虛擬記憶體位址相關聯的一第一指令;決定與一第一處理實體相關聯的一第一分頁表並不包含與該第一虛擬記憶體位址相關聯的一第一映射;以及將一第一錯誤緩衝區輸入傳輸至一錯誤緩衝區,以回應決定該第一分頁表不包含該第一映射;其中該錯誤緩衝區設置成儲存從至少該第一處理實體接收的複數個錯誤緩衝區輸入。
TW102149069A 2013-03-14 2013-12-30 追蹤統一虛擬記憶體系統內分頁錯誤的錯誤緩衝區 TW201447579A (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,345 US11487673B2 (en) 2013-03-14 2013-10-16 Fault buffer for tracking page faults in unified virtual memory system

Publications (1)

Publication Number Publication Date
TW201447579A true TW201447579A (zh) 2014-12-16

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 Before (1)

Application Number Title Priority Date Filing Date
TW102149060A TWI515564B (zh) 2013-03-14 2013-12-30 管理統一虛擬記憶體的分頁狀態目錄

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW102149073A TW201447582A (zh) 2013-03-14 2013-12-30 統一虛擬記憶體系統的遷移方法

Country Status (1)

Country Link
TW (3) TWI515564B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI739748B (zh) * 2016-01-21 2021-09-21 英商Arm股份有限公司 位址轉換延遲之測量

Families Citing this family (4)

* 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
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 晨星半导体股份有限公司 存储器控制装置及存储器控制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI739748B (zh) * 2016-01-21 2021-09-21 英商Arm股份有限公司 位址轉換延遲之測量

Also Published As

Publication number Publication date
TW201447582A (zh) 2014-12-16
TW201447574A (zh) 2014-12-16
TWI515564B (zh) 2016-01-01

Similar Documents

Publication Publication Date Title
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
US9767036B2 (en) Page state directory for managing unified virtual memory
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US9830276B2 (en) Replaying memory transactions while resolving memory access faults
US9792220B2 (en) Microcontroller for memory management unit
US9830210B2 (en) CPU-to-GPU and GPU-to-GPU atomics
US10216413B2 (en) Migration of peer-mapped memory pages
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system
US10114758B2 (en) Techniques for supporting for demand paging
TWI605336B (zh) 監督記憶體管理單元
TWI515564B (zh) 管理統一虛擬記憶體的分頁狀態目錄
CN104049903A (zh) 用于统一虚拟存储器系统的迁移方案