TWI622878B - 用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一) - Google Patents

用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一) Download PDF

Info

Publication number
TWI622878B
TWI622878B TW104140795A TW104140795A TWI622878B TW I622878 B TWI622878 B TW I622878B TW 104140795 A TW104140795 A TW 104140795A TW 104140795 A TW104140795 A TW 104140795A TW I622878 B TWI622878 B TW I622878B
Authority
TW
Taiwan
Prior art keywords
volatile memory
page
memory device
physical
local volatile
Prior art date
Application number
TW104140795A
Other languages
English (en)
Other versions
TW201633143A (zh
Inventor
莫利史蒂芬亞瑟
千德斯特塔密歐
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
Application filed by 高通公司 filed Critical 高通公司
Publication of TW201633143A publication Critical patent/TW201633143A/zh
Application granted granted Critical
Publication of TWI622878B publication Critical patent/TWI622878B/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

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

Abstract

揭示用於在具有非統一記憶體架構的可攜式計算設備中分配記憶體的系統、方法以及電腦程式。方法的一個實施例包括:從在第一單晶片系統(SoC)上執行的程序接收針對虛擬記憶體頁的請求,該第一SoC經由晶片間介面電耦合於第二SoC,該第一SoC經由第一高效能匯流排電耦合於第一本端揮發性記憶體設備,並且該第二SoC經由第二高效能匯流排電耦合於第二本端揮發性記憶體設備;決定包括在該第一和第二本端揮發性記憶體設備上可用的相同實體位址的閒置實體頁對;及將該閒置實體頁對映射到單個虛擬頁位址。

Description

用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一)
本案係關於用於在非統一記憶體架構中提供改進的延遲的系統和方法。
可攜式計算設備(例如,蜂巢式電話、智慧型電話、平板電腦、可攜式數位助理(PDA)以及可攜式遊戲控制台)持續提供不斷擴展的服務和特徵陣列,並且向使用者提供前所未有的資訊存取、資源以及通訊的水平。為了跟上這些服務增強的步伐,這些設備已經變得更加強大並且更加複雜。可攜式計算設備現在通常包括包含嵌在單個基底上的一或多個晶片部件(例如,一或多個中央處理單元(CPU)、圖形處理單元(GPU)、數位訊號處理器等)的單晶片系統(SoC)。
由於在積體電路上增加電晶體密度變得更具挑戰,二維單片積體電路的成本可能變得過高,導致在可攜式計算 設備中對多晶粒或多SoC產品的使用增加。該多晶粒產品可以包括互連的實體晶粒,每個實體晶粒提供對快速本機存放區器(諸如,動態隨機存取記憶體(DRAM))的存取。該架構一般被稱作非統一記憶體架構(NUMA)。然而,NUMA設計提出了多種情況,在這些情況中,經由高效能匯流排可存取的近的或本端的DRAM中的資料或經由低效能晶片間介面可存取的遠的DRAM中的資料需要被任一晶粒上的處理器存取。這可能導致較高的延遲,例如當處理器必須去往遠的DRAM時。
因此,需要提供針對非統一記憶體架構中的所有處理器的低延遲記憶體存取的系統和方法。
揭示用於在具有非統一記憶體架構的可攜式計算設備中分配記憶體的系統、方法以及電腦程式。一種此類方法涉及:從在第一單晶片系統(SoC)上執行的程序接收針對虛擬記憶體頁的請求。該第一SoC經由晶片間介面電耦合與第二SoC。該第一SoC經由第一高效能匯流排電耦合於第一本端揮發性記憶體設備,並且該第二SoC經由第二高效能匯流排電耦合於第二本端揮發性記憶體設備。決定閒置實體頁對,其包括在該一和第二本端揮發性記憶體設備上可用的相同實體位址。將該閒置實體頁對映射到單個虛擬頁位址。
100‧‧‧系統
102‧‧‧單晶片系統(SoC)
104‧‧‧本端DRAM
105‧‧‧匯流排
106‧‧‧DRAM控制器
108‧‧‧處理器
110‧‧‧作業系統(O/S)
112‧‧‧SoC匯流排
114‧‧‧晶片間介面控制器
116‧‧‧晶粒間介面
120‧‧‧處理器
122‧‧‧處理器
200‧‧‧系統記憶體管理器
201‧‧‧自我調整NUMA延遲最佳化模組
202‧‧‧單晶片系統(SoC)
203‧‧‧非阻塞NUMA延遲模組
204‧‧‧第二DRAM
205‧‧‧匯流排
206‧‧‧DRAM控制器
208‧‧‧處理器
210‧‧‧O/S
212‧‧‧SoC匯流排
214‧‧‧晶片間介面控制器
220‧‧‧O/S
222‧‧‧處理器
300‧‧‧記憶體資料
302‧‧‧存取資料
304‧‧‧存取資料
306‧‧‧存取資料
308‧‧‧存取資料
328‧‧‧顯示器控制器
330‧‧‧觸控式螢幕控制器
334‧‧‧視訊轉碼器
336‧‧‧視訊放大器
338‧‧‧視訊連接埠
340‧‧‧通用序列匯流排(USB)控制器
342‧‧‧USB埠
346‧‧‧使用者辨識模組(SIM)卡
348‧‧‧數位照相機
350‧‧‧身歷聲音訊編碼器-解碼器(CODEC)
352‧‧‧音訊放大器
354‧‧‧第一身歷聲揚聲器
356‧‧‧第二身歷聲揚聲器
358‧‧‧第二身歷聲揚聲器
360‧‧‧麥克風
362‧‧‧頻率調制(FM)無線電調諧器
364‧‧‧FM天線
366‧‧‧身歷聲頭戴式耳機
368‧‧‧射頻(RF)收發機
370‧‧‧RF開關
372‧‧‧RF天線
376‧‧‧單聲道耳機
378‧‧‧振盪器設備
380‧‧‧顯示電源
388‧‧‧網卡
400‧‧‧頁表條目
402‧‧‧實體位址
404‧‧‧虛擬記憶體管理器
432‧‧‧實體位址
450‧‧‧複製屬性欄位
452‧‧‧複製位元值
454‧‧‧實體頁索引
500‧‧‧方法
502‧‧‧方塊
504‧‧‧方塊
506‧‧‧判斷方塊
508‧‧‧方塊
510‧‧‧方塊
600‧‧‧方法
602‧‧‧方塊
604‧‧‧方塊
606‧‧‧判斷方塊
608‧‧‧方塊
700‧‧‧方法
702‧‧‧判斷方塊
704‧‧‧方塊
706‧‧‧判斷方塊
708‧‧‧方塊
800‧‧‧頁表條目
802‧‧‧頁表欄位
804‧‧‧頁表欄位
900‧‧‧方法
902‧‧‧方塊
904‧‧‧判斷方塊
906‧‧‧方塊
908‧‧‧方塊
910‧‧‧判斷方塊
912‧‧‧方塊
914‧‧‧方塊
916‧‧‧方塊
1000‧‧‧方法
1002‧‧‧方塊
1004‧‧‧方塊
1006‧‧‧方塊
1008‧‧‧判斷方塊
1010‧‧‧方塊
1012‧‧‧方塊
1014‧‧‧方塊
1100‧‧‧方法
1102‧‧‧方塊
1104‧‧‧方塊
1106‧‧‧方塊
1108‧‧‧判斷方塊
1110‧‧‧方塊
1112‧‧‧方塊
1114‧‧‧方塊
1300‧‧‧可攜式計算設備(PCD)
1302‧‧‧多核CPU
1306‧‧‧觸控式螢幕顯示器
1310‧‧‧第零核
1312‧‧‧第一核
1314‧‧‧第N核
1401‧‧‧頁表
1402‧‧‧頁表
1404‧‧‧頁偏移
1406‧‧‧實體頁索引#1
1408‧‧‧實體頁索引#2
在附圖中,除非另外指出,貫穿各個視圖的相似的元件符號代表相似的部分。對於具有字母符號標號的元件符 號(諸如「102A」或「102B」),該字母符號標號可以對在同一附圖中出現的兩個相似的部分或元件進行區分。當元件符號意欲包括在所有附圖中的具有相同元件符號的所有部分時,可以省略針對元件符號的字母符號標號。
圖1是包括複數個互連的具有非統一記憶體架構(NUMA)的單晶片系統(SoC)的系統的實施例的方塊圖。
圖2圖示具有在多個SoC上選擇性複製的記憶體資料的圖1的系統。
圖3是圖示在包括具有相同實體位址的閒置實體頁對的SoC中的頁表的實施例的方塊圖。
圖4是圖示用於實現包括用於將閒置實體頁對映射到單個虛擬位址的複製屬性欄位的頁表條目的資料結構的實施例的方塊圖。
圖5是圖示由圖1和2中的自我調整NUMA延遲最佳化模組實現的方法的實施例的流程圖。
圖6是圖示由用於釋放實體頁對的作業系統實現的方法的實施例的流程圖。
圖7是圖示用於將先前分配的單個頁轉換為閒置實體頁對的方法的實施例的流程圖。
圖8是圖示用於實現圖1和2的系統中的頁表條目的資料結構的另一個實施例的方塊圖。
圖9a和圖9b是圖示由圖1和2中的非阻塞NUMA延遲最佳化模組實現的方法的實施例的流程圖。
圖10是圖示實現圖8的頁表條目的示例性寫事務的 流程圖。
圖11是圖示實現圖8的頁表條目的示例性讀事務的流程圖。
圖12是圖示用於複製使用圖8的頁表條目的資料的頁翻譯圖表的功能方塊圖。
圖13是可以合併用於擴展系統記憶體的RAM卡/插槽的可攜式通訊設備的另一個實施例的方塊圖。
本文中所使用的詞語「示例性」意指「用作實例、例子或說明」。本文中被描述為「示例性」的任何態樣未必要被解釋為比其他態樣更優選或更具優勢。
在本描述中,術語「應用」或「影像」亦可以包括具有可執行內容的檔,例如:目標代碼、腳本、位元組代碼、標記語言檔和補丁。另外,本文中所提及的「應用」,亦可以包括本質上不可執行的檔,例如可能需要被打開的文件或需要被存取的其他資料檔案。
術語「內容」亦可以包括具有可執行內容的檔,例如:目標代碼、腳本、位元組代碼、標記語言檔和補丁。另外,本文中所提及的「內容」,亦可以包括本質上不可執行的檔,例如可能需要被打開的文件或需要被存取的其他資料檔案。
如在本描述中所使用的,術語「部件」、「資料庫」、「模組」、「系統」以及類似的術語意欲代表與電腦相關的實體,其可以是硬體、韌體、硬體和軟體的結合、軟體 、或執行中的軟體。例如,部件可以是但不限於是處理器上執行的程序、處理器、物件、可執行檔、執行的執行緒、程式、及/或電腦。舉例而言,計算設備上執行的應用和計算設備均可以是部件。一或多個部件可以存在於執行中的程序及/或執行緒內,以及部件可以位於一台電腦上及/或分佈於兩台或更多台電腦之間。另外,可以從其上儲存了各種資料結構的各種電腦可讀取媒體來執行這些部件。這些部件可以經由本端及/或遠端程序的方式,例如根據具有一或多個資料封包(例如,來自經由信號的方式與本端系統、分散式系統中的另一個部件進行互動及/或跨越諸如網際網路此類網路與其他系統進行互動的一個部件的資料)的信號,來進行通訊。
術語「虛擬記憶體」指的是從引用記憶體的應用或映射(image)對實際實體記憶體的抽象。可以使用翻譯或映射將虛擬記憶體位址轉換為實體記憶體位址。該映射可以是如1對1一樣簡單的(例如,實體位址等於虛擬位址)、適度複雜的(例如,實體位址等於距虛擬位址的常數偏移),或該映射可以是複雜的(例如,每4KB頁唯一地映射)。該映射可以是靜態的(例如,在啟動時執行一次),或該映射可以是動態的(例如,隨著分配和釋放記憶體而不斷演變)。
在本描述中,可互換地使用術語「通訊設備」、「無線設備」、「無線電話」、「無線通訊設備」以及「無線手機」。隨著第三代(「3G」)無線技術以及第四代(「4G」)的出現,更大的可用頻寬已經使得更多的可攜式計算設備能夠具有更多種多樣的無線能力。因此,可攜式計算設備 可以包括蜂巢式電話、傳真機、PDA、智慧型電話、導航設備、或具有無線連接或連結的手持電腦。
圖1圖示包括複數個互連的具有非統一記憶體架構(NUMA)的實體晶粒(例如,單晶片系統(SoC)102和SoC 202)的系統100的實施例。系統100可以被實現為設計用於任何計算設備的、或者常駐在任何計算設備中的多晶粒產品,上述任何計算設備包括:個人電腦、工作站、伺服器、可攜式計算設備(PCD)(例如,蜂巢式電話、可攜式數位助理(PDA)、可攜式遊戲控制台、掌上電腦或平板電腦)。SoC 102和202經由晶粒間介面116電耦合。每個SoC經由高效能匯流排電耦合於近的或本端的揮發性記憶體設備(例如,動態隨機存取儲存區(DRAM)設備)。如圖1中的實施例中示出的那樣,SoC 102經由匯流排105連接於本端DRAM 104,並且SoC 202經由匯流排205連接於本端DRAM 204。匯流排105和205分別由SoC 102和202提供具有對本端DRAM 104和204的更低延遲的更快速的、更高效能的存取。如本發明所屬領域已知的那樣,NUMA使得SoC 102和202中的每一個皆能夠存取其他SoC的本端DRAM,晶粒間介面116可以造成更高的延時以及相對更低的效能。
SoC 102和202包括各個晶片上或晶粒上部件。應當瞭解的是,晶片上部件可以隨需要而變化,並且系統100可以包括任何數量的SoC。在圖1的實施例中,SoC 102包括經由SoC匯流排112互連的一或多個處理器108(例如,中央處理單元(CPU)、圖形處理單元(GPU)、數位訊號處理器(DSP) 等)、DRAM控制器106以及晶片間介面控制器114。SoC 202包括經由SoC匯流排212互連的一或多個處理器208、DRAM控制器206以及晶片間介面控制器214。SoC 102和202可以包括從SoC的本端DRAM(分別經由匯流排105和205)或經由晶粒間介面116連接於另一個SoC的遠的DRAM請求記憶體資源的一或多個記憶體客戶端。DRAM控制器106和206分別管理去往和來自DRAM 104和204的資料串流。晶片間介面控制器114和214管理SoC 102和202之間的資料串流。
每個SoC均可以包括作業系統(O/S 110和220),其支援經由諸如系統記憶體管理器200的虛擬記憶體來管理。系統記憶體管理器200被配置為控制可以使用硬體及/或軟體二者實現的各個記憶體管理技術。如本發明所屬領域已知的那樣,系統記憶體管理器200將由程式使用的記憶體位址(稱作虛擬位址)映射到電腦記憶體中的實體位址。O/S 110和210管理虛擬位址空間和實體記憶體(例如,DRAM 104和204)到虛擬記憶體的分配。位址翻譯硬體(例如,記憶體管理單元(MMU))將虛擬位址翻譯成實體位址。
參考圖2,應當瞭解的是,O/S 110、O/S 210以及系統記憶體管理器200可以被配置為支援NUMA,在NUMA中,跨越多個處理器來管理記憶體存取、任務以及工作負荷。如下文更詳細描述的那樣,系統記憶體管理器200可以包括用於提供具有在系統100的非統一記憶體架構中的多個處理器上的改進延遲的記憶體存取的各個模組。自我調整NUMA延遲最佳化模組201在下文中結合圖3-7進行描述,而非阻塞NUMA 延遲最佳化模組在下文中結合圖8-12進行描述。
如圖2的示例性實施例中示出的那樣,系統記憶體管理器200可以被配置為選擇性地複製記憶體資料,從而使得每個晶粒(例如,SoC 102和202)在本端DRAM(亦即,直接與之連接的DRAM)中具有該資料的副本。例如,常駐在DRAM 204中的記憶體資料300可以被複數個處理器存取。記憶體資料300可以包括複數個資料部分302、304、306以及308。常駐在SoC 202上,處理器220可以請求存取資料304和308,而處理器222可以請求存取資料302和306。常駐在SoC 102上,處理器120可以請求存取資料302和304,而處理器122可以請求存取資料306。儘管NUMA使得處理器120和122能夠經由晶粒間介面116存取記憶體資料300,但是可能期望在DRAM 104上選擇性地複製位於DRAM 204中的記憶體資料(反之亦然)以向SoC 102上的處理器120和122提供對它們需要的記憶體的更高效能、更低延遲的存取。
應當瞭解的是,為了系統100中選擇性地複製記憶體資料,可以採用各種方法、演算法以及技術。在圖3-7中示出的實施例中,系統100經由定位、辨識及/或管理閒置實體頁對來複製記憶體資料。如圖3中示出的那樣,閒置實體頁對399包括DRAM 104中的可用實體位址與DRAM 204中的相同的可用實體位址的邏輯映射。應當瞭解的是,在示例性實施例中,相同的實體位址可以指的是它們的頁位址具有完全相同的低位N位元的兩個實體頁位址,其中N=log2(單個記憶體晶片的容量)。例如,在包括兩個1GB的記憶體晶片的2GB系統 中,實體頁對可以在位置(29、28、27...14、13、12)處具有完全相同的位址位元。應當瞭解的是,可以不比較位元(11、10...1、0),這是因為它們可能已經在例如4KB的頁內。可以經由頁表350和360來提供邏輯映射。頁表350(對應於DRAM 104)可以由在SoC 102上執行的虛擬記憶體管理器402管理。頁表360(對應於DRAM 204)可以由在SoC 202上執行的虛擬記憶體管理器404管理。頁表350和360包括對實體位址402-432的範圍的索引。作為實例,頁表350中的實體位址402a和頁表360中的實體位址402b代表實體頁對,這是因為它們具有相同的實體位址。閒置或可用實體頁對399指的是可用於DRAM 104和204二者中的記憶體分配的實體頁對(亦即,402a/b、404a/b、406a/b等)。在圖3中,閒置實體頁對在灰視方塊中進行標識。就這點而言,利用字母「a」標引的實體位址(例如,406a、408a等)對應於SoC 102/DRAM 104,而利用字母「b」標引的實體位址(例如,406b、408b等)對應於SoC 202/DRAM 204,其中相同編號的「a/b」對包括實體頁對399。
為了選擇性地複製用於在多個處理器(例如,SoC 102上的處理器120和122以及SoC 202上的處理器220和222)上存取的記憶體資料,可以提供經修改的頁表條目400,如圖4中所示。該經修改的頁表條目400包括用於將實體頁索引454儲存到實體位址的欄位454,以及用於儲存複製位元值452的複製屬性欄位450。複製位元值「0」或「假」可以用於預設操作中以將單個實體頁映射到對應的虛擬頁位址。當期望改 進的延遲並且當閒置實體頁對399可用時,可以將該複製位元值設置為「1」或「真」,其使得系統100能夠將該閒置實體頁對399邏輯地映射到單個虛擬頁位址。應當瞭解的是,複製屬性欄位450可以用於選擇性地複製記憶體資料,從而使得每個SoC晶粒在本端DRAM中皆具有該資料的副本。
圖5圖示用於使用閒置實體頁對399在NUMA中分配記憶體的方法500。方法500可以由O/S 110、O/S 210及/或系統記憶體管理器200實現。在方塊500處,可以從在第一SoC 102上執行的程序接收針對虛擬記憶體頁的請求。在方塊502處,該系統決定是否存在任何閒置實體頁對399。若閒置實體頁對399不可用(判斷方塊506),則可以將虛擬頁位址邏輯地映射到單個實體頁。然而,若可用,則可以將該閒置實體頁對399邏輯地映射到相同的虛擬頁位址(方塊508)。如前述,可以經由修改頁表條目350來執行該邏輯映射。例如,在方塊510處,可以經由將複製位元值452設置為「1」或「真」值來修改複製屬性欄位450,其複製儲存在DRAM 104和204上的相同實體位址中的記憶體資料。
系統記憶體管理器200可以被配置為使得O/S 110和O/S 210能夠執行後臺程序以定位及/或管理閒置實體頁對399。圖6圖示用於釋放額外的實體頁對的方法600。可以提供所有記憶體實體頁的全域目錄。在方塊602處,作業系統可以經由該全域目錄進行搜尋。在方塊604處,作業系統可以決定頁表350和360是否辨識具有分配給不同虛擬位址的匹配實體位址的任何實體頁。若不存在匹配(判斷方塊606),則流程可 以返回方塊602以隨後檢查潛在的匹配。若發現匹配,則在方塊608處,作業系統可以經由重分配實體頁中的一個實體頁的衝突實體位址來建立閒置實體頁對399。具有原始實體位址的剩餘實體頁現在可用作新的實體頁對399。
圖7圖示用於經由將先前分配的單個頁轉換為成對的頁來提高記憶體複製的效能的另一個技術。方法700可以用於決定此類情況,在該情況中,存在較少的記憶體壓力並且變得期望從預設的非複製模式切換到上文所描述的切換模式。在判斷方塊702處,作業系統可以決定閒置頁的總數量是否超出最小閾值。若沒有超出該閾值,則可以以預定間隔來重複判斷方塊702。若超出了該閾值,則在方塊704處,作業系統可以在全域目錄中的全部記憶體實體頁框進行遍歷搜尋。作業系統可以決定是否存在此類情況:具有複製位元值452未啟動(值=「0」或「假」)的頁而匹配頁對是閒置的。在判斷方塊706處,若匹配被定位,則作業系統可以將頁複製到該頁對中的另一個頁,並且將複製位元值設置為「1」或「真」。
圖8-12圖示實現基於不共用相同實體位址的閒置實體頁對的非阻塞、匿名分配的複製方案的另一個實施例。該複製方案可以由系統100中的非阻塞NUMA延遲模組203(圖1)實現。為了在不考慮匹配實體位址的情況下選擇性地複製記憶體資料,可以提供經修改的頁表條目800,如圖8中示出的那樣。經修改的頁表條目800包括複製屬性欄位450、用於儲存對與第一DRAM 104相關聯的第一實體位址的實體頁索 引#1 1406的欄位802、以及用於儲存副本位址的新的欄位804。該副本位址包括對與第二DRAM 204相關聯的第二實體位址1408的實體頁索引#2。就這點來說,頁表條目800可以支援單個虛擬位址到具有任意(例如,不需要是相同的)實體位址的實體頁對的映射,每個晶粒一個。頁表條目800實現到這兩個實體位址的翻譯。圖12圖示單個虛擬位址怎樣由頁索引1402(第13個位元及以上)和頁偏移1404(低位元12個位元)組成,以及單獨的頁索引1402怎樣分別基於頁表欄位802和804映射到實體頁索引#1 1406和實體頁索引#2 1408。頁偏移1404不被修改並且將其用於存取每個4KB頁內的字。
圖9圖示用於使用任意實體頁對在NUMA中分配記憶體的方法900。在方塊902處,可以從在第一SoC 102上執行的程序接收針對虛擬記憶體頁的請求。系統可以實現各種閾值以決定是否存在足夠的記憶體以支援複製。應當瞭解的是,該複製可以基於逐頁來發生。在實施例中,在判斷方塊904處,系統可以決定多個可用實體頁是否超出針對使用DRAM 104的SoC 102的最小閾值。若「是」,則在方塊906處,可以將針對SoC 102的記憶體充足值設置為「真」。若「否」,則在方塊908處,可以將針對SoC 102的記憶體充足值設置為「假」。在判斷方塊910處,系統可以決定可用實體頁的數量是否超出針對使用DRAM 204的SoC 202的最小閾值。若「是」,則在方塊912處,可以將針對SoC 202的記憶體充足值設置為「真」。若「否」,則在方塊914處,可以將針對SoC 202的記憶體充足值設置為「假」。基於該記憶體充足值,在判 斷方塊916處,系統可以決定要執行的合適的分配行動。如圖9b中示出的那樣,若在SoC 102和SoC 202二者中皆有充足的記憶體可用(亦即,二者的值皆=「真」),則作業系統可以從使用DRAM 104的SoC 102和使用DRAM 204的SoC 202分配頁,並且將該複製位元值設置為「真」或「1」以啟動複製,當複製位元值以這種方式啟動時,亦可以將副本位址添加到頁表條目800中。若在SoC 102或SoC 202中有(但不是二者皆有)充足的記憶體可用時,取決於哪個SoC具有充足的記憶體(亦即,值=「真」),作業系統可以從使用DRAM 104的SoC 102或使用DRAM 204的SoC 202分配單個頁。若SoC 102或SoC 202二者皆不具有充足的記憶體(亦即,二者值皆=「假」),則作業系統將分配失敗並且觸發異常。針對分配失敗的異常處理與現有的方法沒有不同,並且調用將終止較低優先順序的不經常存取的程序以便釋放分配給它們的記憶體的執行程式或服務。應當瞭解的是,在其中可以共用記憶體的NUMA中,可以從使用DRAM 104的SoC 102或使用DRAM 204的SoC 202分配單個頁。
圖10圖示用於執行涉及經修改的頁表條目800的記憶體寫事務的方法1000的實施例。應當瞭解的是,該方法1000可以經由軟體及/或硬體來實現。在硬體實施例中,該方法可以經由例如記憶體管理單元(MMU)中的翻譯後備緩衝器(TLB)來執行。在方塊1000處,記憶體寫事務由TLB接收。在方塊1004處,TLB執行頁表條目800的檢視。在方塊1006處,讀複製位元值452。若該複製位元值是「真」(判斷方塊1008 ),則讀副本位址(方塊1010)並且快取記憶體硬體將資料刷新到原始實體位址和副本實體位址二者中。若該複製位元值是「假」,則快取記憶體硬體只將資料刷新到原始實體位址中。
圖11圖示用於執行涉及經修改的頁表條目800的記憶體讀事務的方法1100的實施例。應當瞭解的是,該方法1100可以經由軟體及/或硬體來實現。在硬體實施例中,該方法可以經由例如記憶體管理單元(MMU)中的翻譯後備緩衝器(TLB)來執行。在方塊1100處,記憶體讀事務由TLB接收。在方塊1104處,TLB執行頁表條目800的檢視。在方塊1106處,讀複製位元值452。若該複製位元值是「真」(判斷方塊1108),則讀副本位址(方塊1110)並且從副本位址或原始位址(方塊1112)發生快取記憶體填充。若該複製位元值是「假」,則從原始位址發生快取記憶體填充。
如前述,系統100可以被併入任何期望的計算系統中。圖13圖示包括SoC 102和SoC 202的示例性可攜式計算設備(PCD)1300。在該實施例中,SoC 102和SoC 202可以包括多核CPU 1302。該多核CPU 1302可以包括第零核1310、第一核1312、以及第N核1314。這些核中的一個可以包括例如圖形處理單元(GPU),而其他核中的一或多個包括CPU。
顯示器控制器328和觸控式螢幕控制器330可以耦合於CPU 602。反過來,在SoC 102和202外部的觸控式螢幕顯示器606可以耦合於顯示器控制器328和觸控式螢幕控制器330。
圖13亦圖示耦合於多核CPU 1302的視訊轉碼器334 ,例如,逐行倒相制式(PAL)編碼器、順序與儲存彩色電視系統(SECAM)編碼器或國家電視系統委員會(NTSC)編碼器。此外,視訊放大器336耦合於視訊轉碼器334和觸控式螢幕顯示器1306。另外,視訊連接埠338耦合於視訊放大器336。如圖13顯示的那樣,通用序列匯流排(USB)控制器340耦合於多核CPU 602。另外,USB埠342耦合於USB控制器340。記憶體104和204以及用戶辨識模組(SIM)卡346亦可以耦合於多核CPU 1302。
此外,如圖13所述,數位照相機348可以耦合於多核CPU 1302。在示例性態樣中,數位照相機348是電荷耦合裝置(CCD)照相機或互補金屬氧化物半導體(CMOS)照相機。
如圖13中進一步所示,身歷聲音訊編碼器-解碼器(CODEC)350可以耦合於多核CPU 1302。此外,音訊放大器352可以耦合於身歷聲音訊CODEC 350。在示例性態樣中,第一身歷聲揚聲器354和第二身歷聲揚聲器356耦合於音訊放大器352。圖13顯示麥克風放大器358亦可以耦合於身歷聲音訊CODEC 350。此外,麥克風360可以耦合於麥克風放大器358。在特定態樣中,頻率調制(FM)無線電調諧器362可以耦合於身歷聲音訊CODEC 350。此外,FM天線364耦合於FM無線電調諧器362。此外,身歷聲頭戴式耳機366可以耦合於身歷聲音訊CODEC 350。
圖13亦圖示射頻(RF)收發機368可以耦合於多核CPU 1302。RF開關370可以耦合於RF收發機368和RF天線372。鍵盤204可以耦合於多核CPU 602。此外,具有麥克風的單 聲道耳機376可以耦合於多核CPU 1302。此外,振盪器設備378可以耦合於多核CPU 1302。
圖13亦顯示電源380可以耦合於SoC 102和SoC 202。在特定態樣中,電源380是向PCD 1300的需要電力的各個部件提供電力的直流(DC)電源。此外,在特定態樣中,電源是可再充電的DC電池或從連接於交流(AC)電源的AC到DC變換器匯出的DC電源。
圖13亦指示PCD 1300亦可以包括網卡388,網卡388可用於存取資料網路,例如區域網路、個人區域網路或任何其他網路。網卡388可為藍芽網卡、WiFi網卡、個人區域網路(PAN)卡、個人區域網路超低功率技術(PeANUT)網卡、電視/電纜/衛星調諧器、或本發明所屬領域眾所周知的任何其他網卡。此外,網卡388可併入到晶片中,即網卡388可為晶片上的整個解決方案,且可以不是單獨的網卡388。
參考圖13,應當瞭解的是,記憶體104、RAM卡105、觸控式螢幕顯示器606、視訊連接埠338、USB埠342、相機348、第一身歷聲揚聲器354、第二身歷聲揚聲器356、麥克風360、FM天線364、身歷聲頭戴式耳機366、RF開關370、RF天線372、鍵盤374、單聲道耳機376、振動器378以及電源380可以在單晶片系統102的外部。
應當瞭解的是,本文所描述的方法步驟中的一者或一者以上可作為電腦程式指令(諸如,上文所描述的模組)儲存於記憶體中。這些指令可由任何合適的處理器與對應的模組結合或合作執行以執行本文所描述的方法。
本描述中所描述的程序或處理流程中的某些步驟自然先於針對本發明的其他步驟來如同所描述的執行。然而,在這種次序或順序不改變本發明的功能的情況下,本發明不受限於所描述的步驟的次序。亦即,應認識到的是,在不脫離本發明的範疇及精神的情況下,可以將一些步驟在其他步驟之前、之後或與其他步驟並行地(基本上與其他步驟同時地)執行。在一些實例中,在不脫離本發明的情況下,可以省略或者不執行某些步驟。此外,諸如「其後」、「隨後」、「接下來」等詞語不是要限制步驟的次序。這些詞語僅用於引導讀者通讀示例性方法的描述。
另外,程式設計領域中具有通常知識者能夠基於例如本說明書中的流程圖及相關聯的描述而毫不費力地編寫電腦代碼或辨識適當的硬體及/或電路來實施本案的發明。
因此,對程式碼指令或詳細硬體設備的特定集合的公開不視為對於充分理解如何製造及使用本發明的必須。在以上的描述中以及結合圖示各個處理流程的附圖,較為詳細地解釋了所提出的電腦實施的程序的創造性功能。
在一或多個示例性方案中,所描述的功能可以由硬體、軟體、韌體、或其任何組合來實現。若用軟體實現,則該功能可儲存在電腦可讀取媒體上或者作為電腦可讀取媒體上的一或多個指令或代碼來傳輸。電腦可讀取媒體包括電腦儲存媒體和通訊媒體二者,該通訊媒體包括促進將電腦程式從一處傳送到另一處的任何媒體。儲存媒體可以是可由電腦存取的任何可用媒體。舉例而言並非限制,該電腦可讀取媒 體可包括RAM、ROM、EEPROM、NAND快閃記憶體、NOR快閃記憶體、M-RAM、P-RAM、CD-ROM或其他光碟記憶體、磁碟記憶體或其他磁存放裝置或可用於攜帶或儲存具有指令或資料結構形式的期望程式碼並且可由電腦存取的任何其他媒體。
此外,可將任何連接恰當地稱為電腦可讀取媒體。例如,若使用同軸電纜、光纖光纜、雙絞線、數位用戶線路(「DSL」)或諸如紅外線、無線電及微波的無線技術從網站、伺服器或其他遠端源來傳輸軟體,則同軸電纜、光纖光纜、雙絞線、DSL、或諸如紅外線、無線電及微波的無線技術包含在媒體的定義中。
本文中所使用的,磁碟和光碟包括壓縮光碟(「CD」)、雷射光碟、光碟、數位多功能光碟(「DVD」)、軟碟及藍光光碟,其中磁碟通常磁性地複製資料,而光碟則利用鐳射光學地複製資料。以上各物的組合亦應包含在電腦可讀取媒體的範疇內。
對於本發明所屬領域中具有通常知識者來說,在不脫離本發明的精神及範疇的情況下,附屬於本發明的替代實施例將變得顯而易見。因此,儘管已詳細說明和描述了選定的方案,但應理解的是,在不脫離作為由所附申請專利範圍所定義的本發明的精神及範疇的情況下,可在其中做出各種替代及改變。

Claims (40)

  1. 一種用於在具有一非統一記憶體架構的一可攜式計算設備中分配記憶體的方法,該方法包括以下步驟:從在一第一單晶片系統(SoC)上執行的一程序接收針對一虛擬記憶體頁的一請求,該第一SoC經由一晶片間介面電耦合於一第二SoC,該第一SoC經由一第一高效能匯流排電耦合於一第一本端揮發性記憶體設備,並且該第二SoC經由一第二高效能匯流排電耦合於一第二本端揮發性記憶體設備;由該第一SoC決定在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備之間的一閒置實體頁對,其中該閒置實體頁對包含:在該第一本端揮發性記憶體設備上的一第一實體位址和在該第二本端揮發性記憶體設備上的一第二實體位址,該第一實體位址和該第二實體位址具有相同實體位址,且其中該第一實體位址和該第二實體位址二者可在該第一實體位址和該第二實體位址分別對應的本端揮發性記憶體設備中用於記憶體分配;及由該第一SoC將該閒置實體頁對邏輯地映射到請求的該虛擬記憶體頁的一相同的虛擬頁位址。
  2. 根據請求項1之方法,其中該將該閒置實體頁對映射到該相同的虛擬頁位址包括以下步驟:修改與該相同實體位址相關聯的一頁表條目。
  3. 根據請求項2之方法,其中該修改該頁表條目包括以下步驟:設置一複製屬性以複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  4. 根據請求項1之方法,亦包括以下步驟:複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  5. 根據請求項1之方法,其中該決定該閒置實體頁對包括以下步驟:搜尋一全域目錄中的實體頁框以辨識可用於記憶體分配的該相同實體位址。
  6. 根據請求項1之方法,其中該決定該閒置實體頁對包括以下步驟:決定針對該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備的該相同實體位址被分配給不同的虛擬位址;及重新分配該等實體位址以釋放該實體頁對。
  7. 根據請求項1之方法,亦包括以下步驟:接收針對另一個虛擬記憶體頁的一另一個請求;決定沒有另外可用的實體頁對;及回應於該另一個請求,將一另一個實體頁映射到另一個虛擬頁位址。
  8. 根據請求項1之方法,亦包括以下步驟:一作業系統將先前被分配的實體頁轉換為額外的閒置實體頁對。
  9. 根據請求項1之方法,其中該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備中的一或多個本端揮發性記憶體設備包括:一動態隨機存取記憶體(DRAM)設備。
  10. 根據請求項1之方法,其中該可攜式計算設備包括:一行動電話、一平板電腦、一導航設備以及一可攜式遊戲控制台中的一個。
  11. 一種用於在具有一非統一記憶體架構的一可攜式計算設備中分配記憶體的系統,該系統包括:用於從在一第一單晶片系統(SoC)上執行的一程序接收針對一虛擬記憶體頁的一請求的單元,該第一SoC經由一晶片間介面電耦合於一第二SoC,該第一SoC經由一第一高效能匯流排電耦合於一第一本端揮發性記憶體設備,並且該第二SoC經由一第二高效能匯流排電耦合於一第二本端揮發性記憶體設備;用於由該第一SoC決定在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備之間的一閒置實體頁對的單元,其中該閒置實體頁對包含:在該第一本端揮發性記憶體設備上的一第一實體位址和在該第二本端揮發性記憶體設備上的一第二實體位址,該第一實體位址和該第二實體位址具有相同實體位址,且其中該第一實體位址和該第二實體位址二者可在該第一實體位址和該第二實體位址分別對應的本端揮發性記憶體設備中用於記憶體分配;及用於由該第一SoC將該閒置實體頁對映射到請求的該虛擬記憶體頁的一相同的虛擬頁位址的單元。
  12. 根據請求項11之系統,其中該用於將該閒置實體頁對映射到該相同的虛擬頁位址的單元亦包括:用於修改與該相同實體位址相關聯的一頁表條目的單元。
  13. 根據請求項12之系統,其中該用於修改該頁表條目的單元包括:用於設置一複製屬性以複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料的單元。
  14. 根據請求項11之系統,亦包括:用於複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料的單元。
  15. 根據請求項11之系統,其中該用於決定該閒置實體頁對的單元包括:用於搜尋一全域目錄中的實體頁框以辨識可用於記憶體分配的該相同實體位址的單元。
  16. 根據請求項11之系統,其中該用於決定該閒置實體頁對的單元包括:用於決定針對該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備的該相同實體位址被分配給不同的虛擬位址的單元;及用於重新分配該等實體位址以釋放該實體頁對的單元。
  17. 根據請求項11之系統,亦包括:用於接收針對另一個虛擬記憶體頁的一另一個請求的單元;用於決定沒有另外可用的實體頁對的單元;及回應於該另一個請求,將一另一個實體頁映射到另一個虛擬頁位址。
  18. 根據請求項11之系統,亦包括:用於將先前被分配的實體頁轉換為額外的閒置實體頁對的單元。
  19. 根據請求項11之系統,其中該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備中的一或多個本端揮發性記憶體設備包括:一動態隨機存取記憶體(DRAM)設備。
  20. 根據請求項11之系統,其中該可攜式計算設備包括:一行動電話、一平板電腦、一導航設備以及一可攜式遊戲控制台中的一個。
  21. 一種體現在一記憶體中並且由一處理器可執行的用於分配一可攜式計算設備中之記憶體的電腦程式,該可攜式計算設備具有一非統一記憶體架構,該電腦程式包括被配置為進行以下操作的邏輯單元:從在一第一單晶片系統(SoC)上執行的一程序接收針對一虛擬記憶體頁的一請求,該第一SoC經由一晶片間介面電耦合於一第二SoC,該第一SoC經由一第一高效能匯流排電耦合於一第一本端揮發性記憶體設備,並且該第二SoC經由一第二高效能匯流排電耦合於一第二本端揮發性記憶體設備;決定在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備之間的一閒置實體頁對,其中該閒置實體頁對包含:在該第一本端揮發性記憶體設備上的一第一實體位址和在該第二本端揮發性記憶體設備上的一第二實體位址,該第一實體位址和該第二實體位址具有相同實體位址,且其中該第一實體位址和該第二實體位址二者可在該第一實體位址和該第二實體位址分別對應的本端揮發性記憶體設備中用於記憶體分配;及將該閒置實體頁對映射到請求的該虛擬記憶體頁的一相同的虛擬頁位址。
  22. 根據請求項21之電腦程式,其中該被配置為將該閒置實體頁對映射到該相同的虛擬頁位址的邏輯單元包括被配置為進行以下操作的邏輯單元:修改與該相同實體位址相關聯的一頁表條目。
  23. 根據請求項22之電腦程式,其中該被配置為修改該頁表條目的邏輯單元包括被配置為進行以下操作的邏輯單元:設置一複製屬性以複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  24. 根據請求項21之電腦程式,亦包括被配置為進行以下操作的邏輯單元:複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  25. 根據請求項21之電腦程式,其中該被配置為決定該閒置實體頁對的邏輯單元包括被配置為進行以下操作的邏輯單元:搜尋一全域目錄中的實體頁框以辨識可用於記憶體分配的該相同實體位址。
  26. 根據請求項21之電腦程式,其中該被配置為決定該閒置實體頁對的邏輯單元包括被配置為進行以下操作的邏輯單元:決定針對該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備的該相同實體位址被分配給不同的虛擬位址;及重新分配該等實體位址以釋放該實體頁對。
  27. 根據請求項21之電腦程式,亦包括被配置為進行以下操作的邏輯單元:接收針對另一個虛擬記憶體頁的一另一個請求;決定沒有另外可用的實體頁對;及回應於該另一個請求,將一另一個實體頁映射到另一個虛擬頁位址。
  28. 根據請求項21之電腦程式,亦包括被配置為進行以下操作的邏輯單元:將先前被分配的實體頁轉換為額外的閒置實體頁對。
  29. 根據請求項21之電腦程式,其中該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備中的一或多個本端揮發性記憶體設備包括:一動態隨機存取記憶體(DRAM)設備。
  30. 根據請求項21之電腦程式,其中該可攜式計算設備包括:一行動電話、一平板電腦、一導航設備以及一可攜式遊戲控制台中的一個。
  31. 一種用於分配一可攜式計算設備中的記憶體的系統,該可攜式計算設備具有一非統一記憶體架構,該系統包括:經由一晶片間介面電耦合的一第一單晶片系統(SoC)和一第二SoC,該第一SoC經由一第一高效能匯流排電耦合於一第一本端揮發性記憶體設備,並且該第二SoC經由一第二高效能匯流排電耦合於一第二本端揮發性記憶體設備;及用於管理在一非統一記憶體架構中的該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備的一系統記憶體管理器,該系統記憶體管理器包括被配置為進行以下操作的邏輯單元:從在該第一SoC上執行的一程序接收針對一虛擬記憶體頁的一請求;由該第一SoC決定在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備之間的一閒置實體頁對,其中該閒置實體頁對包含:在該第一本端揮發性記憶體設備上的一第一實體位址和在該第二本端揮發性記憶體設備上的一第二實體位址,該第一實體位址和該第二實體位址具有相同實體位址,且其中該第一實體位址和該第二實體位址二者可在該第一實體位址和該第二實體位址分別對應的本端揮發性記憶體設備中用於記憶體分配;及由該第一SoC將該閒置實體頁對映射到請求的該虛擬記憶體頁的一相同的虛擬頁位址。
  32. 根據請求項31之系統,其中該被配置為將該閒置實體頁對映射到該相同的虛擬頁位址的邏輯單元包括被配置為進行以下操作的邏輯單元:修改與該相同實體位址相關聯的一頁表條目。
  33. 根據請求項32之系統,其中該被配置為修改該頁表條目的邏輯單元包括被配置為進行以下操作的邏輯單元:設置一複製屬性以複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  34. 根據請求項31之系統,亦包括被配置為進行以下操作的邏輯單元:複製在該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備上的該相同實體位址中儲存的記憶體資料。
  35. 根據請求項31之系統,其中該被配置為決定該閒置實體頁對的邏輯單元包括被配置為進行以下操作的邏輯單元:搜尋一全域目錄中的實體頁框以辨識可用於記憶體分配的該相同實體位址。
  36. 根據請求項31之系統,其中該被配置為決定該閒置實體頁對的邏輯單元包括被配置為進行以下操作的邏輯單元:決定針對該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備的該相同實體位址被分配給不同的虛擬位址;及重新分配該等實體位址以釋放該實體頁對。
  37. 根據請求項31之系統,其中該系統記憶體管理器亦包括被配置為進行以下操作的邏輯單元:接收針對另一個虛擬記憶體頁的一另一個請求;決定沒有另外可用的實體頁對;及回應於該另一個請求,將一另一個實體頁映射到另一個虛擬頁位址。
  38. 根據請求項31之系統,其中該系統記憶體管理器亦包括被配置為進行以下操作的邏輯單元:將先前被分配的實體頁轉換為額外的閒置實體頁對。
  39. 根據請求項31之系統,其中該第一本端揮發性記憶體設備和該第二本端揮發性記憶體設備中的一或多個本端揮發性記憶體設備包括:一動態隨機存取記憶體(DRAM)設備。
  40. 根據請求項31之系統,其中該可攜式計算設備包括:一行動電話、一平板電腦、一導航設備以及一可攜式遊戲控制台中的一個。
TW104140795A 2014-12-04 2015-12-04 用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一) TWI622878B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/560,290 2014-12-04
US14/560,290 US9575881B2 (en) 2014-12-04 2014-12-04 Systems and methods for providing improved latency in a non-uniform memory architecture

Publications (2)

Publication Number Publication Date
TW201633143A TW201633143A (zh) 2016-09-16
TWI622878B true TWI622878B (zh) 2018-05-01

Family

ID=54834928

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104140795A TWI622878B (zh) 2014-12-04 2015-12-04 用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一)

Country Status (6)

Country Link
US (1) US9575881B2 (zh)
EP (1) EP3227786A1 (zh)
JP (1) JP6674460B2 (zh)
CN (1) CN107003940B (zh)
TW (1) TWI622878B (zh)
WO (1) WO2016089631A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542333B2 (en) 2014-12-04 2017-01-10 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture
US10055158B2 (en) * 2016-09-22 2018-08-21 Qualcomm Incorporated Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems
US10776046B1 (en) * 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11734176B2 (en) * 2021-10-27 2023-08-22 Dell Products L.P. Sub-NUMA clustering fault resilient memory system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US20020065998A1 (en) * 2000-11-30 2002-05-30 International Business Machines Corporation NUMA system with redundant main memory architecture
US20090153897A1 (en) * 2007-12-18 2009-06-18 Blackmore Robert S Method, System and Program Product for Reserving a Global Address Space
US20100321397A1 (en) * 2009-06-23 2010-12-23 Boris Ginzburg Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049853A (en) 1997-08-29 2000-04-11 Sequent Computer Systems, Inc. Data replication across nodes of a multiprocessor computer system
US6167437A (en) 1997-09-02 2000-12-26 Silicon Graphics, Inc. Method, system, and computer program product for page replication in a non-uniform memory access system
DE69819927D1 (de) 1997-09-05 2003-12-24 Sun Microsystems Inc Nachschlagtabelle und verfahren zur datenspeicherung darin
US6871219B2 (en) 2001-03-07 2005-03-22 Sun Microsystems, Inc. Dynamic memory placement policies for NUMA architecture
EP1611513B1 (en) 2003-04-04 2010-12-15 Oracle America, Inc. Multi-node system in which global address generated by processing subsystem includes global to local translation information
US7765381B2 (en) 2003-04-04 2010-07-27 Oracle America, Inc. Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
US8417913B2 (en) 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
JP4171749B2 (ja) * 2006-04-17 2008-10-29 Tdk株式会社 メモリコントローラおよびフラッシュメモリシステム
US8392736B2 (en) 2009-07-31 2013-03-05 Hewlett-Packard Development Company, L.P. Managing memory power usage
EP2437161A1 (en) * 2010-10-01 2012-04-04 Intel Mobile Communications Technology Dresden GmbH Hardware accelerator module and method for setting up same
US8560757B2 (en) 2011-10-25 2013-10-15 Cavium, Inc. System and method to reduce memory access latencies using selective replication across multiple memory ports
TWI500292B (zh) * 2012-11-08 2015-09-11 Realtek Semiconductor Corp 具有節能功能的網路通訊裝置及方法
CN103257929B (zh) * 2013-04-18 2016-03-16 中国科学院计算技术研究所 一种虚拟机内存映射方法及系统
US9361233B2 (en) 2013-12-20 2016-06-07 Intel Corporation Method and apparatus for shared line unified cache
US9558041B2 (en) 2014-09-05 2017-01-31 Telefonaktiebolaget L M Ericsson (Publ) Transparent non-uniform memory access (NUMA) awareness
US9542333B2 (en) 2014-12-04 2017-01-10 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US20020065998A1 (en) * 2000-11-30 2002-05-30 International Business Machines Corporation NUMA system with redundant main memory architecture
US20090153897A1 (en) * 2007-12-18 2009-06-18 Blackmore Robert S Method, System and Program Product for Reserving a Global Address Space
US20100321397A1 (en) * 2009-06-23 2010-12-23 Boris Ginzburg Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System

Also Published As

Publication number Publication date
US9575881B2 (en) 2017-02-21
TW201633143A (zh) 2016-09-16
CN107003940A (zh) 2017-08-01
US20160162399A1 (en) 2016-06-09
JP2018501559A (ja) 2018-01-18
WO2016089631A1 (en) 2016-06-09
JP6674460B2 (ja) 2020-04-01
EP3227786A1 (en) 2017-10-11
CN107003940B (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
US20170177497A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
KR102569545B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
TWI622878B (zh) 用於在非統一記憶體架構中提供改進延遲的電腦程式、系統和方法(一)
WO2017054610A1 (zh) 计算机、服务质量控制方法及装置
US10628308B2 (en) Dynamic adjustment of memory channel interleave granularity
US10769073B2 (en) Bandwidth-based selective memory channel connectivity on a system on chip
WO2015156937A1 (en) Multi-level memory hierarchy
CN106575273B (zh) 用于扩展片上系统的存储器的系统和方法
US10061709B2 (en) Systems and methods for accessing memory
EP3227787B1 (en) Systems and methods for providing improved latency in a non-uniform memory architecture
US10725932B2 (en) Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown
JP2018508869A (ja) 仮想化環境におけるストレージリソース管理
US20180357000A1 (en) Big Block Allocation of Persistent Main Memory
US10579516B2 (en) Systems and methods for providing power-efficient file system operation to a non-volatile block memory
US20160320972A1 (en) Adaptive compression-based paging

Legal Events

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