TW202311974A - 計算系統中的記憶體分層技術 - Google Patents
計算系統中的記憶體分層技術 Download PDFInfo
- Publication number
- TW202311974A TW202311974A TW111122426A TW111122426A TW202311974A TW 202311974 A TW202311974 A TW 202311974A TW 111122426 A TW111122426 A TW 111122426A TW 111122426 A TW111122426 A TW 111122426A TW 202311974 A TW202311974 A TW 202311974A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- metadata
- request
- retrieved
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 614
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 35
- 238000007726 management method Methods 0.000 claims description 5
- 238000012937 correction Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 29
- 238000005516 engineering process Methods 0.000 description 18
- 229920003245 polyoctenamer Polymers 0.000 description 16
- 239000000872 buffer Substances 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 239000000463 material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 2
- 241000724291 Tobacco streak virus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文揭示了計算裝置中的記憶體分層技術。一種示例技術包括在接收到讀取對應於系統記憶體部分的資料的請求時,從第一記憶體中的第一層擷取來自第一層的資料部分的資料及來自第一層的元資料部分的元資料。該方法隨後可包括分析資料位置資訊以決定第一層當前是否包含接收的請求中的對應於系統記憶體部分的資料。回應於決定第一層當前包含接收的請求中的對應於系統記憶體部分的資料,回應於所接收的該請求,將從第一記憶體的資料部分擷取的資料傳輸到處理器。或者,該方法可包括識別第一或第二記憶體中包含對應於系統記憶體部分的資料的記憶體位置,並從所識別的記憶體位置擷取資料。
Description
本揭示案係關於計算系統中的記憶體分層技術。
在計算中,記憶體通常是指用於儲存資料以供電腦或其他類型的計算裝置中的中央處理單元(central processing unit; CPU)立即存取的計算部件。除了記憶體之外,電腦亦可包括一或更多個在電腦上永久儲存資料的電腦儲存裝置(例如,硬碟驅動器或HDD)。在操作中,諸如應用程式指令的資料可首先從電腦儲存裝置載入到記憶體中。隨後,CPU可執行載入記憶體中的應用程式指令,以提供計算服務,如文字處理、線上會議等。
提供此發明內容是為了以簡化形式介紹一些概念,該等概念將在下文的詳細說明中進一步描述。此發明內容不意欲標識所主張標的的關鍵特徵或必要特徵,亦不意欲用於限制所主張標的的範疇。
某些計算裝置可包括配置為存取不同類型記憶體的CPU。例如,計算裝置可包括高速的第一類型記憶體及較慢的第二類型記憶體。示例性的第一類記憶體可為與CPU封裝在一起的雙倍資料速率(Double Data Rate; DDR)同步動態隨機存取記憶體(Synchronous Dynamic Random-Access Memory; SDRAM)。此種第一類型的記憶體有時被稱為「近記憶體」,因為其實體上接近CPU。第二種類型的記憶體的實例可包括CPU可透過快速計算鏈路(Compute Express Link; CXL)或其他合適的協定與之介面連接的記憶體。此種第二類型的記憶體有時可被稱為「遠記憶體」,因為其比近記憶體離CPU更遠。
將高速記憶體用作CPU的近記憶體可能存在某些缺點。例如,DDR SDRAM通常比用於遠記憶體的記憶體更昂貴。近記憶體亦不可由計算裝置上的作業系統(Operating System; OS)存取,或甚至對其不可見。相反,CPU對近記憶體擁有獨佔控制。在一些資料中心伺服器中,用作近記憶體的DDR SDRAM的成本可能高達資料中心伺服器總成本的約百分之五十。因此,若近記憶體對OS可見並可由OS存取,則資料中心伺服器的資本投資及從資料中心伺服器提供各種計算服務的相關成本可顯著降低。
所揭示技術的數個實施例意欲實施記憶體多級分層,根據該記憶體多級分層,近記憶體可用作遠記憶體的交換緩衝器,而不是計算裝置中CPU的專用快取記憶體。如此,當近記憶體及遠記憶體作為可定址及可分配的系統記憶體暴露於OS時,CPU可繼續在近記憶體中快取資料。在某些實施方式中,硬體記憶體控制器(例如,DRAM控制器)可被配置成以快取記憶體列精細度(例如,64位元組)管理交換操作。如此,計算裝置將不需要任何軟體干預或導致軟體影響。在其他實施方式中,具有硬體及軟體部件的記憶體控制器可用於控制此種交換操作。
在某些實施中,近記憶體可具有與遠記憶體相同或甚至更多的儲存空間單元。例如,系統記憶體位址的範圍可由近記憶體及遠記憶體的組合以二比一、二比二、三比一、三比二、四比一、四比三的比率或大於或等於一的其他合適的整數比覆蓋。在一個說明性實例中,系統記憶體位址的範圍(例如,512 GB)可由比率二比二的近記憶體及遠記憶體的組合覆蓋,即,兩個128 GB的近記憶體及兩個128 GB的遠記憶體。如此,系統記憶體的範圍可被分成四個部分,例如,A、B、C及D,每個部分對應於近或遠記憶體中的儲存空間的一個部分。
在某些實施例中,當使用近記憶體作為遠記憶體的交換緩衝器時,可將近記憶體的多個部分配置為單獨的透視層。例如,近記憶體的第一部分可被配置為層1,而近記憶體的第二部分151B被配置為層2。遠記憶體可被配置為層3,其可包括一或更多個額外部分。如此,在操作期間,當執行諸如快取記憶體列的資料的讀取時,記憶體控制器可被配置為初始決定近記憶體的層1是否包含快取記憶體列。當層1包含快取記憶體列時,記憶體控制器從層1擷取快取記憶體列;向請求實體提供快取記憶體列;並終止讀取操作。當層1不包含快取記憶體列時,記憶體控制器可決定層2是否包含快取記憶體列。對於近記憶體中的額外層,可以遞迴方式重複此種操作。在其他實施例中,多個部分可以其他合適的操作方式配置。
在某些實施例中,近或遠記憶體中的每個部分可包括資料部分(例如,512位元)及元資料部分(例如,128位元)。資料部分可被配置成包含表示使用者資料的資料或可由計算裝置中的CPU執行的指令。元資料部分可包括表示資料部分中資料的各種屬性的元資料。例如,元資料部分可包括編碼錯誤跟蹤的錯誤檢查及糾正(Error Checking and Correction; ECC)位元或其他合適類型的資訊。在其他實施例中,每個部分亦可包括額外的及/或不同的資料/元資料部分。
根據所揭示技術的數個實施例,近記憶體的層1中的元資料部分中的數個位元(例如,ECC位元)可被配置為指示(1)近記憶體的層1當前保存的是系統記憶體範圍中哪個部分;及(2)系統記憶體範圍的額外部分在近記憶體或遠記憶體的其他層中的位置。例如,在近/遠記憶體比率為二比二的系統記憶體的四個部分的上述實例中,層1的元資料部分中有八個位元可被配置成包含此種資訊。例如,第一對位元(位元1及位元2)可被配置為指示哪個部分當前保存在近記憶體的層1中,如下所示:
如此,當位元1及位元2分別包含0及0時,記憶體控制器可易於決定近記憶體的層1包含來自系統記憶體的部分A的資料。
位元1 | 位元2 | 部分ID |
0 | 0 | A |
0 | 1 | B |
1 | 0 | C |
1 | 1 | D |
在上述實例中,前兩個位元對應於近記憶體的層1,額外的六個位元可細分為三對,單獨地對應於近記憶體的層2,而遠記憶體中的第一及第二位置映射到系統記憶體範圍的對應部分。例如,第二、第三及第四對可各自分別對應於近記憶體的層2、遠記憶體中的第一位置及遠記憶體中的第二位置,如下:
如此,記憶體控制器可易於決定系統記憶體的某一部分的位置,即使該部分的資料當前不在近記憶體的層1中。例如,當第二對(即,位元3及位元4)包含(0,0)時,記憶體控制器可被配置為決定對應於系統記憶體的部分A的資料位於近記憶體的層2中。
第一對(位元1及位元2) | 近記憶體層1 |
第二對(位元3及位元4) | 近記憶體層2 |
第三對(位元5及位元6) | 遠記憶體中的第一位置 |
第四對(位元7及位元8) | 遠記憶體中的第二位置 |
藉由使用來自近記憶體的層1中元資料部分的元資料,當使用近記憶體作為交換緩衝器時,記憶體控制器可配置為管理近記憶體及遠記憶體中各層之間的交換操作。例如,在讀取目標部分期間,記憶體控制器可被配置為從近記憶體的層1讀取,以從來自近記憶體的層1的資料部分及元資料部分中擷取資料及元資料。基於擷取到的元資料,記憶體控制器隨後可被配置為使用例如上述表格來決定擷取到的資料對應於系統記憶體的哪個部分,並且決定所決定的部分是否與待讀取的目標部分匹配。例如,當目標部分是部分A時,且來自元資料部分的前兩個位元包含(0,0)時,則記憶體控制器可被配置為決定從近記憶體的層1擷取的資料對應於部分A(稱為「資料A」)。因此,記憶體控制器可將從部分A擷取的資料轉發給請求實體,如在計算裝置上執行的應用或OS。
另一方面,例如,當元資料部分的前兩個位元包含(0,1)而非(0,0)時,記憶體控制器可被配置為決定擷取的資料屬於B部分(稱為「資料B」),而非A部分。記憶體控制器可繼續檢查元資料部分中的額外位元,以決定哪對位元包含(0,0)。例如,當來自元資料部分的第二對(位元3及位元4)包含(0,0)時,則記憶體控制器可被配置為決定資料A位於近記憶體中的層2。作為回應,記憶體控制器可被配置為從近記憶體中的層2讀取資料A,並將資料A提供給請求實體。記憶體控制器亦可被配置為將擷取到的資料A寫入近記憶體的層1,並將先前擷取到的資料B從近記憶體的層1寫入層2,從而交換層1與層2中的資料。記憶體控制器亦可被配置成修改近記憶體的層1中的元資料部分中的位元,以反映近記憶體的層1與層2之間的資料交換。
在某些實施中,記憶體控制器可被配置為以階層方式從多個層中執行資料驅逐,例如,T1→T2→T3。例如,在上文的實例中,當檢查元資料部分中的額外位元時,記憶體控制器可決定第三對(位元5及位元6)包含(0,0)。因此,記憶體控制器可決定資料A位於遠記憶體中的第一位置。作為回應,記憶體控制器可被配置成從遠記憶體中的第一位置擷取資料A,並將擷取到的資料A提供給請求實體。記憶體控制器亦可被配置成將當前儲存在近記憶體的層1的資料(例如,資料B)驅逐到近記憶體的層2,並將當前儲存在近記憶體的層2的資料(例如,對應於部分C的資料C)驅逐到遠記憶體的第一位置。因此,在讀取操作完成時,資料A、B、C位於層1、層2及遠記憶體的第一位置。
在寫入操作期間,記憶體控制器可配置為首先從近記憶體的層1中的元資料部分讀取資料。記憶體控制器可被配置為隨後決定來自系統記憶體的哪個部分的資料當前被保存在近記憶體的層1中,及所決定的部分是否與待寫入的目標部分相匹配。例如,當寫入操作的目標部分是部分A,且來自元資料部分的前兩個位元包含(0,0)時,則記憶體控制器可被配置為決定資料A當前位於近記憶體的層1中。作為回應,記憶體控制器可被配置為將資料重新寫入近記憶體的層1的資料部分中,並報告寫入操作的完成。
另一方面,當元資料部分的前兩個位元包含(0,1)時,記憶體控制器可配置為決定資料B當前位於近記憶體的層1中。作為回應,記憶體控制器可被配置為抑制寫入近記憶體的層1,並替代地繼續檢查元資料部分的額外位元,以決定哪對位元包含(0,0)。例如,當來自元資料部分的第二對(位元3及位元4)包含(0,0)時,則記憶體控制器可被配置為決定資料A當前位於近記憶體的層2。作為回應,記憶體控制器可被配置為寫入近記憶體的層2,而不是近記憶體的層1。一旦完成,記憶體控制器可被配置為報告寫入操作的完成。
所揭示技術的數個實施例可透過將先前用作快取記憶體且對OS不可見的記憶體配置為可由OS定址的系統記憶體,來改善計算裝置的操作及效能。例如,不使用近記憶體作為CPU的專用快取記憶體,近記憶體可用作可分配的系統記憶體,同時透過上述交換操作繼續向CPU提供快取功能。透過增加可定址系統記憶體的數量,可減少計算裝置中的計算或其他合適類型的潛時。
所揭示技術的數個實施例亦可減輕與直接映射快取記憶體相關的某些效能異常值。在某些計算系統中,當在近記憶體中交替存取兩個快取記憶體列時,可透過將兩個快取記憶體列之一者從近記憶體驅逐到遠記憶體,來將另一個快取記憶體列從近記憶體驅逐。此種交換會減少記憶體頻寬,從而對系統效能產生負面影響。透過在多個層中配置近記憶體,此種交換可在近記憶體內部的層之間進行,例如,在前述實例中的層1與層2之間。因此,此種交換對記憶體頻寬的影響可顯著小於近記憶體與遠記憶體之間的交換。此外,在多個層中配置近記憶體亦允許計算系統在近記憶體中具有比遠記憶體更多的容量。
下文描述了用於記憶體分層技術的系統、裝置、部件、模組、常式、資料結構及流程的某些實施例。在以下描述中,包括了部件的具體細節,以提供對本文揭示技術的某些實施例的透徹理解。相關領域的技藝人士亦將理解,該技術可具有額外的實施例。該技術亦可在沒有下文參考第1-6圖描述的實施例的數個細節的情況下實施。例如,不在資料中心或其他合適的分散式計算系統中實施,本文揭示的記憶體操作管理技術的各態樣亦可在個人電腦、智慧電話、平板電腦或其他合適類型的計算裝置上實施。
如本文所用,術語「分散式計算系統」大體指具有多個網路節點的互連電腦系統,該等網路節點將複數個伺服器或主機彼此互連及/或互連至外部網路(例如,網際網路)。術語「網路節點」大體指實體網路裝置。示例網路節點包括路由器、交換機、集線器、橋接器、負載平衡器、安全閘道或防火牆。「主機」大體指實體計算裝置。在某些實施例中,主機可被配置成實施例如一或更多個虛擬機器、虛擬交換機或其他合適的虛擬化部件。例如,主機可包括具有被配置成支援一或更多個虛擬機器、虛擬交換機或其他合適類型的虛擬部件的超管理器的伺服器。在其他實施例中,主機可被配置成直接在作業系統之上執行的合適應用程式。
在某些實施中,電腦網路可在概念上分為透過底層網路實施的覆蓋網路。「覆蓋網路」大體指在底層網路上實施並在其上運行的抽象網路。底層網路可包括彼此互連的多個實體網路節點。覆蓋網路可包括一或更多個虛擬網路。「虛擬網路」大體指覆蓋網路中底層網路的一部分的抽象。虛擬網路可包括被稱為「租戶站點」的一或更多個虛擬端點,使用者或「租戶」單獨使用該等虛擬端點來存取虛擬網路及相關聯的計算、儲存或其他合適的資源。租戶站點可代管一或更多個租戶端點(tenant site; TEP),例如虛擬機器。虛擬網路可互連不同主機上的多個TEP。覆蓋網路中的虛擬網路節點可透過分別對應於沿著底層網路中的一或更多個實體網路節點的一或更多個網路路由的虛擬鏈路相互連接。在其他實施方式中,電腦網路可僅包括底層網路。
此處亦使用的術語「近記憶體」大體指實體上比遠離處理器的其他「遠記憶體」更靠近處理器(例如,CPU)的記憶體。例如,近記憶體可包括一或更多個DDR SDRAM晶粒,其透過中介層及/或矽通孔被併入具有一或更多個CPU晶粒的積體電路(Integrated Circuit; IC)部件封裝中。相比之下,遠記憶體可包括加速器、記憶體緩衝器或智慧型I/O裝置上的額外記憶體,CPU可透過CXL或其他合適類型的協定與之介面連接。例如,在資料中心,多個伺服器/伺服器刀片上的多個記憶體裝置可被彙集以分配給伺服器/伺服器刀片之一者上的單個CPU。該CPU可透過資料中心的電腦網路存取分配的遠記憶體。
第1圖為示意圖,示出了根據所揭示技術的實施例實施記憶體操作管理的分散式計算系統100。如第1圖所示,分散式計算系統100可包括底層網路108,該底層網路108互連複數個主機106、與對應使用者101相關聯的複數個客戶端裝置102,及可操作地彼此耦合的平臺控制器125。平臺控制器125可為叢集控制器、結構控制器、資料庫控制器及/或被配置成監控及管理分散式計算系統100中的伺服器106及/或其他部件的資源及操作的其他合適類型的控制器。儘管第1圖中示出了分散式計算系統100的部件,但在其他實施例中,分散式計算系統100亦可包括額外的及/或不同的部件或佈置。例如,在某些實施例中,分散式計算系統100亦可包括網路儲存裝置、額外主機及/或其他合適配置的其他合適部件(未示出)。
如第1圖所示,底層網路108可包括一或更多個網路節點112,其將多個主機106及使用者101的客戶端裝置102互連。在某些實施例中,主機106的組織可為機架、動作區、群組、組或其他合適的分區。例如,在所示實施例中,主機106被分組為三個主機組,分別標識為第一、第二及第三主機組107a-107c。主機組107a-107c中的每一個分別可操作地耦合到對應的網路節點112a-112c,該等網路節點通常被稱為「架頂式」網路節點或「TOR」。TOR 112a-112c可隨後可操作地耦合到額外的網路節點112,以形成階層式、扁平的、網狀的或其他合適類型的拓撲結構的電腦網路。底層網路108可允許主機106、平臺控制器125及使用者101之間的通信。在其他實施例中,多個主機組107a-107c可共享單個網路節點112,或者可具有其他合適的佈置。
主機106可單獨配置為向使用者101提供計算、儲存及/或其他合適的雲端或其他合適類型的計算服務。例如,如下文參考第2圖更詳細描述的,主機106之一者可根據來自使用者101的請求啟動及維護一或更多個虛擬機器144(如第2圖所示)或容器(未示出)。使用者101隨後可利用所提供的虛擬機器144或容器來執行資料庫、計算、通信及/或其他合適的任務。在某些實施例中,主機106之一者可為多個使用者101提供虛擬機器144。例如,主機106a可代管單獨地對應於每個使用者101a-101c的三個虛擬機器144。在其他實施例中,多個主機106可為使用者101a-101c代管虛擬機器144。
客戶端裝置102可各自包括便於使用者101透過底層網路108存取主機106提供的計算服務的計算裝置。在所示實施例中,客戶端裝置102單獨包括桌上型電腦。在其他實施例中,客戶端裝置102亦可包括膝上型電腦、平板電腦、智慧型電話或其他合適的計算裝置。儘管出於說明目的在第1圖中示出了三個使用者101,但是在其他實施例中,分散式計算系統100可便於任何合適數量的使用者101存取由分散式計算系統100中的主機106提供的雲端或其他合適類型的計算服務。
第2圖為示意圖,示出了根據本揭示案實施例的分散式計算系統100的某些硬體/軟體部件。第2圖示出了可在第1圖中的底層網路108上實現的覆蓋網路108’。儘管第2圖中示出了覆蓋網路108’的特定配置,但是在其他實施例中,覆蓋網路108’亦可以其他合適的方式來配置。在第2圖中,為了清楚起見,僅示出了第1圖的底層網路108的某些部件。
在第2圖及本文的其他圖式中,單獨的軟體部件、物件、類、模組及常式可為以C、C++、C#、Java及/或其他合適的程式設計語言編寫為源碼的電腦程式、程序或過程。部件可包括但不限於一或更多個模組、物件、類、常式、屬性、過程、執行緒、可執行程式、資料庫或其他部件。部件可為源碼或二進位形式。部件可包括編譯前的源碼(例如,類、屬性、程序、常式)、編譯後的二進位單元(例如,資料庫、可執行檔)、或在運行時實體化及使用的製品(例如,物件、過程、執行緒)的各態樣。
系統內的部件可在系統內採取不同的形式。作為一個實例,包括第一部件、第二部件及第三部件的系統可無限制地包括一系統,該系統具有作為源碼中的屬性的第一部件,作為二進位編譯庫的第二部件,及作為在運行時創建的執行緒的第三部件。電腦程式、程序或過程可被編譯成目標碼、中間碼或機器代碼,並被呈現以供個人電腦、網路伺服器、膝上型電腦、智慧型電話及/或其他合適的計算裝置中的一或更多個處理器執行。
同樣,部件可包括硬體電路系統。本領域一般技藝人士將認識到,硬體可被認為是僵化的軟體,而軟體可被認為是液化的硬體。僅作為一個實例,部件中的軟體指令可被燒錄到可程式設計邏輯陣列電路中,或者可被設計為具有適當積體電路的硬體電路。同樣,硬體可用軟體來類比。源碼、中間碼及/或目標碼及相關資料的各種實施方式可儲存在電腦記憶體中,該電腦記憶體包括唯讀記憶體、隨機存取記憶體、磁碟儲存媒體、光儲存媒體、快閃記憶體組織及/或除傳播信號之外的其他合適的電腦可讀取儲存媒體。
如第2圖所示,源主機106a及目的地主機106b及106b’(僅顯示了目的地主機106b的詳細部件)均可包括處理器132、記憶體134、網路介面卡136及封包處理器138,上述各者可操作地相互耦合。在其他實施例中,主機106亦可包括輸入/輸出裝置,其被配置為從操作員及/或自動化軟體控制器(未示出)或其他合適類型的硬體部件接受輸入並向其提供輸出。
處理器132可包括微處理器、快取記憶體及/或其他合適的邏輯裝置。記憶體134可包括揮發性及/或非揮發性媒體(例如,ROM、RAM、磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置及/或其他合適的儲存媒體)及/或被配置為儲存從處理器132接收的資料及用於處理器132的指令(例如,用於執行下文參考第5A-5D圖論述的方法的指令)的其他類型的電腦可讀儲存媒體。儘管為了在第2圖中說明,在個別主機106中僅示出了一個處理器132及一個記憶體134,但是在其他實施例中,個別主機106可包括兩個、六個、八個或任何其他合適數量的處理器132及/或記憶體134。
源主機106a及目的地主機106b可單獨地包含可由處理器132執行的記憶體134中的指令,以使個別處理器132提供超管理器140(單獨地標識為第一及第二超管理器140a及140b)及作業系統141(單獨地標識為第一及第二作業系統141a及141b)。儘管超管理器140及作業系統141被示出為獨立的部件,但是在其他實施例中,超管理器140可在主機106上執行的作業系統141或主機106的韌體部件之上操作。
超管理器140可單獨地配置為產生、監控、終止及/或管理一或更多個組織成租戶站點142的虛擬機器144。例如,如第2圖所示,源主機106a可提供分別管理第一及第二租戶站點142a及142b的第一超管理器140a。目的地主機106b可提供分別管理第一及第二租戶站點142a’及142b’的第二超管理器140b。超管理器140在第2圖中作為軟體部件單獨示出。然而,在其他實施例中,超管理器140可為韌體及/或硬體部件。租戶站點142可各自包括特定租戶(未示出)的多個虛擬機器144。例如,源主機106a及目的地主機106b皆可為第一租戶101a(第1圖)代管租戶站點142a及142a’。源主機106a及目的地主機106b皆可為第二租戶101b(第1圖)代管租戶站點142b及142b’。每個虛擬機器144可執行對應的作業系統、中介軟體及/或應用程式。
第2圖中亦顯示,分散式計算系統100可包括覆蓋網路108’,覆蓋網路108’具有一或更多個虛擬網路146,虛擬網路146跨於多個主機106將租戶站點142a及142b互連。例如,第一虛擬網路142a將源主機106a及目的地主機106b處的第一租戶站點142a與142a’互連。第二虛擬網路146b將源主機106a及目的地主機106b處的第二租戶站點142b及142b’互連。儘管單個虛擬網路146被示為對應於一個租戶站點142,但是在其他實施例中,多個虛擬網路146(未示出)可被配置為對應於單個租戶站點146。
虛擬機器144可配置為執行一或更多個應用程式147,以向使用者101(第1圖)提供合適的雲端或其他合適類型的計算服務。例如,源主機106a可執行應用程式147,該應用程式147被配置成提供計算服務,該計算服務監控線上交易並將價格資料分發給訂閱該計算服務的多個使用者101。虛擬網路146上的虛擬機器144亦可經由底層網路108(第1圖)彼此通信,即使虛擬機器144位於不同的主機106上。
每個虛擬網路146的通信可與其他虛擬網路146隔離。在某些實施例中,可允許通信透過安全閘道或以受控方式從一個虛擬網路146跨越到另一個虛擬網路。虛擬網路位址可對應於特定虛擬網路146中的虛擬機器144之一者。因此,不同的虛擬網路146可使用一或更多個相同的虛擬網路位址。示例虛擬網路位址可包括IP位址、MAC位址及/或其他合適的位址。為了促進虛擬機器144之間的通信,虛擬交換機(未示出)可被配置成交換或過濾經由網路介面卡136被引導到不同虛擬機器144的封包,且得到封包處理器138的促進。
如第2圖所示,為便於相互通信或與外部裝置通信,個別主機106亦可包括網路介面卡(network interface card; NIC) 136,用於與電腦網路(例如,第1圖的底層網路108)連接。NIC 136可包括網路適配器、LAN適配器、實體網路介面或其他合適的硬體電路系統及/或韌體,以透過根據乙太網路、光纖通道、Wi-Fi或其他合適的實體及/或資料鏈路層標準,經由網路媒體(例如,光纖)發送/接收資料(例如,作為封包形式),來賦能主機106之間的通信。在操作期間,NIC 136可促進與在主機106上執行的合適的軟體部件之間的通信。示例軟體部件可包括虛擬交換機141、虛擬機器144、在虛擬機器144上執行的應用程式147、超管理器140或其他合適類型的部件。
在某些實施方案中,封包處理器138可與NIC 136互連及/或整合,以促進網路訊務操作,用於實施通信安全、執行網路虛擬化、轉換網路位址、維護/限制通信流狀態或執行其他合適的功能。在某些實施方式中,封包處理器138可包括與NIC 136整合的現場可程式設計閘陣列(Field-Programmable Gate Array; FPGA)。
FPGA可包括邏輯電路陣列及可重新配置互連的階層,允許使用者在製造後將邏輯電路像邏輯閘一樣「用線連接在一起」。如此,使用者101可配置FPGA中的邏輯塊來執行複雜的組合功能,或者僅僅是簡單的邏輯計算,以合成在硬體中以比軟體快得多的速度執行的等效功能。在圖示的實施例中,封包處理器138具有通信地耦合到NIC 136的一個介面,及在另一個介面耦合到網路交換機(例如,架頂式或「TOR」交換機)。在其他實施例中,封包處理器138亦可包括特殊應用積體電路(Application Specific Integrated Circuit; ASIC)、微處理器或其他合適的硬體電路系統。
在操作中,處理器132及/或使用者101(第1圖)可配置封包處理器138中的邏輯電路,以執行複雜的組合功能或簡單的邏輯運算,從而以比軟體快得多的速度合成可在硬體中執行的等效功能。例如,封包處理器138可被配置為根據包含在諸如MAT的流表中的配置策略或規則來處理各流別的入站/出站封包。流表可包含表示對應於每個流的處理動作的資料,用於賦能具有消費者提供的位址空間、可擴展負載平衡器、安全性群組及存取控制清單(Access Control List; ACL)、虛擬路由表、頻寬計量、服務品質(Quality of Service; QoS)等的虛擬網路。
因此,一旦封包處理器138將入站/出站封包識別為屬於特定流,封包處理器138可在將處理後的封包轉發至NIC 136或TOR 112之前,應用流量表中的一或更多個相應策略。例如,如第2圖所示,源主機106a上的應用程式147、虛擬機器144及/或其他合適的軟體部件可產生去往例如目的地主機106b及106b’上的其他應用程式147的出站封包。源主機106a處的NIC 136可將產生的封包轉發給封包處理器138,以便根據流表中的某些策略進行處理。一旦被處理,封包處理器138可將出站封包轉發到第一TOR 112a,第一TOR 112a又經由覆蓋/底層網路108及108’將封包轉發到第二TOR 112b。
隨後,第二TOR 112b可將封包轉發至目的地主機106b及106b’的封包處理器138,以根據目的地主機106 b及106b’的另一個流表中的其他策略進行處理。若封包處理器138不能將封包識別為屬於任何流,則封包處理器138可經由NIC 136將封包轉發給處理器132以進行異常處理。在另一個實例中,當第一TOR 112a例如經由第二TOR 112b從目的地主機106b接收到入站封包時,第一TOR 112a可將該封包轉發給封包處理器138,以根據與該封包的流相關聯的策略進行處理。封包處理器138隨後可將處理後的封包轉發給NIC 136,以轉發給例如應用程式147或虛擬機器144。
在某些實施例中,記憶體134可包括高速記憶體及低速記憶體。高速記憶體可充當低速記憶體與處理器132之間的緩衝器,以保存頻繁使用的資料及指令,供處理器132立即使用。例如,某些電腦可包括與處理器132封裝在一起的雙倍資料速率(Double Data Rate; DDR)同步動態隨機存取記憶體(Synchronous Dynamic Random-Access Memory; SDRAM),作為處理器132的快取記憶體。由於靠近處理器132,此種快取記憶體有時被稱為「近記憶體」。除了近記憶體之外,處理器132亦可透過快速計算鏈路(Compute Express Link; CXL)或其他合適類型的介面協定與較低速的記憶體介面連接。由於比近記憶體離處理器132的距離更遠,低速記憶體有時可被稱為「遠記憶體」。
將DDR SDRAM用作處理器132的快取記憶體可能存在某些缺點。例如,DDR SDRAM記憶體通常比用於遠記憶體的記憶體更昂貴,且不能被計算裝置上的作業系統(operating system; OS)存取或者甚至對其不可見。相反,處理器132具有對近記憶體的獨佔控制。此外,近記憶體,如DDR SDRAM,可能非常昂貴。在一些資料中心伺服器中,DDR SDRAM作為近記憶體的成本可能高達伺服器總成本的約百分之五十。因此,若近記憶體對作業系統141可見並可由作業系統141存取,則伺服器的資本投資及從主機106提供各種計算服務的相關成本可顯著降低。
所揭示技術的數個實施例針對實施記憶體分層,根據該記憶體分層,近記憶體用作遠記憶體的交換緩衝器,而不是用作處理器132的專用快取記憶體。如此,當近記憶體及遠記憶體作為可定址系統記憶體暴露給作業系統141時,處理器132可繼續在近記憶體中快取資料。在某些實施方式中,硬體記憶體控制器(未示出)可被配置成以快取記憶體列精細度(例如,64位元組)控制交換操作。如此,主機106將不會經歷任何軟體干預或影響。在其他實施方式中,具有硬體及軟體部件的記憶體控制器可用於控制此種交換操作。
近記憶體與遠記憶體之間的儲存空間比率可為靈活的。例如,系統記憶體位址的範圍可由近記憶體及遠記憶體的組合以二比一、二比二、三比一、三比二、四比一、四比三的比率或大於或等於一的其他合適的整數比覆蓋。在第3A圖所示的說明性實例中,系統記憶體位址150的範圍被近記憶體151與遠記憶體153以二比二的比率覆蓋。如此,系統記憶體150的範圍可被分成四個部分152,例如,A、B、C及D。每個部分可包括資料部分156(例如,512位元)及元資料部分154(例如,128位元)。資料部分156可被配置成包含表示使用者資料或在主機106(第2圖)中執行的指令的資料。元資料部分154可包括表示資料部分156中資料的各種屬性的資料。例如,元資料部分154可包括錯誤檢查(error checking; ECC)及糾正位元或其他合適類型的資訊。
在某些實施例中,當使用近記憶體151作為遠記憶體153的交換緩衝器時,可將近記憶體的多個部分配置為單獨的透視層。例如,近記憶體151的第一部分151A可被配置為層1,而近記憶體的第二部分151B被配置為層2。遠記憶體可被配置為層3,其可包括一或更多個額外部分,如第一記憶體位置158a及第二記憶體位置158b。如此,在操作期間,當執行諸如快取記憶體列的資料的讀取時,記憶體控制器135可被配置為初始決定近記憶體151的層1是否包含快取記憶體列。當層1包含快取記憶體列時,記憶體控制器135從層1擷取快取記憶體列;向請求實體提供快取記憶體列;並終止讀取操作。當層1不包含快取記憶體列時,記憶體控制器135可決定層2是否包含快取記憶體列。如下文參考第4A-5C圖更詳細的描述,對於近記憶體151中的額外層,可以遞迴方式重複此種操作。在其他實施例中,多個部分可以其他合適的操作方式配置。
根據所揭示技術的數個實施例,近記憶體151的層1中的元資料部分154中的數個位元可被配置為指示(1)近記憶體154的層1當前保存的是系統記憶體範圍中哪個部分;及(2)近記憶體或遠記憶體153的層2中的系統記憶體範圍的額外部分的位置。在系統記憶體150的四個部分的實例中,近記憶體151中的元資料部分154中的八個位元可被配置成指示前述資訊。例如,第一對前兩個位元可被配置為指示哪個部分152當前保存在近記憶體151的層1中,如下所示:
如此,如第3A圖所示,當位元1及位元2分別包含0及0時,記憶體控制器135可易於決定近記憶體151的層1包含來自系統記憶體的部分A的資料。
位元1 | 位元2 | 部分ID |
0 | 0 | A |
0 | 1 | B |
1 | 0 | C |
1 | 1 | D |
儘管前個兩位元對應於近記憶體151,但額外的六個位元可細分為三對,單獨地對應於近記憶體的層2、遠記憶體153中的第一位置及遠記憶體153中的第二位置,如第3B圖所示。例如,第二、第三及第四對可各自對應於遠記憶體153中的層2、第一及第二位置,如下所示:
第一對(位元1及位元2) | 近記憶體層1 |
第二對(位元3及位元4) | 近記憶體層2 |
第三對(位元5及位元6) | 遠記憶體中的第一位置 |
第四對(位元7及位元8) | 遠記憶體中的第二位置 |
因此,即使系統記憶體150的特定部分的資料當前不在近記憶體151的層1中,記憶體控制器135亦可易於決定該資料在近記憶體151的層2或遠記憶體153中的位置。例如,當第二對(即,位元3及位元4)包含(0,1)時,記憶體控制器135可被配置為決定對應於系統記憶體150的部分B的資料位於近記憶體151的層2中。當第三對(即,位元5及位元6)包含(1,1)時,記憶體控制器135可被配置成決定對應於系統記憶體150的部分D的資料位於遠記憶體153中的第一位置158a中。當第四對(即,位元7及位元8)包含(1,0)時,記憶體控制器135可被配置為決定對應於系統記憶體150的部分C的資料在遠記憶體153中的第二位置158b,如第3A及3B圖所示。儘管前述示例使用元資料部分中的八個位元來編碼系統記憶體範圍的各個部分的位置,但是在其他實施方式中,元資料部分中的其他合適數量的位元可用於編碼相同的資訊。例如,在上述具有四個部分的實例中,可使用五個、六個或七個位元來編碼該等部分的位置資訊。
使用近記憶體151中元資料部分154的資料,記憶體控制器135可被配置為使用近記憶體151的層1作為交換緩衝器來管理近記憶體151與遠記憶體153的層之間的交換操作。例如,如第4A圖所示,在讀取操作期間,當對應於例如部分A的資料當前沒有駐留在CPU的末級快取記憶體中時,CPU可向記憶體控制器135發出命令以讀取該資料。作為回應,記憶體控制器135可被配置為從近記憶體151的層1中讀取,以從近記憶體151的資料部分及元資料部分中擷取資料。隨後,記憶體控制器135可被配置為使用例如上述表格,基於擷取到的元資料,決定擷取到的資料對應於系統記憶體的哪個部分,及決定的部分是否匹配待讀取的目標部分。例如,如第4A圖所示,當目標部分是部分A,且來自層1中的元資料部分的前兩個位元包含(0,0)時,則記憶體控制器135可被配置為決定所擷取的資料來自部分A(即,「資料A」)。因此,記憶體控制器135可將部分A的擷取到的資料轉發給請求實體,如由計算裝置上的CPU執行的應用程式。
另一方面,如第4B圖所示,當元資料部分的前兩個位元包含(0,1)而不是(0,0)時,記憶體控制器135可經配置為決定擷取的資料屬於B部分(即,「資料B」),而不是資料A。記憶體控制器135隨後可繼續檢查元資料部分中的額外位元,以決定哪對位元包含(0,0)。例如,當來自元資料部分的第二對(位元3及位元4)包含(0,0)時,則記憶體控制器135可被配置為決定資料A位於近記憶體151中的層2。作為回應,記憶體控制器135可被配置為從近記憶體151中的層2讀取資料A,並將資料A提供給請求實體。記憶體控制器135隨後可被配置為將擷取到的資料A寫入近記憶體的層1,並將先前擷取到的資料B寫入近記憶體的層2。記憶體控制器135亦可被配置成修改近記憶體的層1中的元資料部分中的位元,以反映近記憶體151的層1及層2中的部分A與部分B之間的交換。
在另一個實例中,如第4B圖所示,當元資料部分的前兩個位元包含(0,1)而不是(0,0)時,記憶體控制器135可經配置為決定擷取到的資料屬於B部分(即「資料B」),而不是資料A。記憶體控制器135可繼續檢查元資料部分中的額外位元,以決定例如來自元資料部分的第三對(位元5及位元6)包含(0,0),隨後記憶體控制器135可被配置為決定資料A位於遠記憶體153中的第一位置158a(第3A圖)。作為回應,記憶體控制器135可被配置為從遠記憶體153中的第一位置158a讀取資料A,並將資料A提供給請求實體。記憶體控制器135隨後可被配置為將擷取到的資料A寫入近記憶體的層1;將先前擷取的資料B寫入近記憶體的層2;並將當前駐留在層2中的資料(例如,資料C)驅逐到遠記憶體153中的第一位置158a。記憶體控制器135亦可被配置成修改近記憶體151的層1中的元資料部分中的位元,以反映從近記憶體151的層1到層2隨後到遠記憶體153的層3的順序資料驅逐。
在寫入操作期間,如第5A圖所示,記憶體控制器135可經配置為首先從近記憶體151的層1中的元資料部分讀取資料。記憶體控制器135隨後可決定資料近記憶體的層1中當前保存的是來自系統記憶體的哪個部分,及所決定的部分是否與待寫入的目標部分匹配。例如,當目標部分是部分A,且來自元資料部分的前兩個位元包含(0,0)時,則記憶體控制器135可被配置為決定資料當前位於近記憶體151的層1中。因此,記憶體控制器135可重寫近記憶體151的層1的資料部分中的資料,並報告寫入操作的完成。
另一方面,如第5B圖所示,當元資料部分的前兩個位元包含(0,1)時,記憶體控制器135可經配置為決定資料B當前位於近記憶體151的層1中。作為回應,記憶體控制器135可被配置成抑制寫入近記憶體151的層1,並繼續檢查元資料部分的額外位元,以決定哪對位元包含(0,0)。例如,當來自元資料部分的第二對(位元3及位元4)包含(0,0)時,則記憶體控制器135可被配置為決定資料A位於近記憶體151的層2。作為回應,記憶體控制器135可被配置為寫入近記憶體151的層2而不是近記憶體151的層1,並報告寫入操作的完成。
在另一個實例中,如第5C圖所示,當元資料部分的前兩個位元包含(0,1)時,記憶體控制器135可配置為決定資料B當前位於近記憶體151的層1中。作為回應,記憶體控制器135可被配置成抑制寫入近記憶體151的層1,而是繼續檢查元資料部分的額外位元,以決定哪對位元包含(0,0)。例如,當來自元資料部分的第三對(位元5及位元6)包含(0,0)時,則記憶體控制器135可被配置為決定資料A位於遠記憶體153中的第一位置158a。作為回應,記憶體控制器135可被配置為寫入遠記憶體153中的第一位置158a而不是近記憶體151的層1,並報告寫入操作的完成。
所揭示技術的數個實施例可透過允許將先前用作快取記憶體且對作業系統不可見的記憶體配置為可由OS定址的系統記憶體,來改善計算裝置的操作及效能。例如,不使用近記憶體151作為CPU的專用快取記憶體,近記憶體151可用作可分配的系統記憶體,同時透過上述交換及順序驅逐操作繼續向CPU提供快取記憶體功能。透過增加可定址系統記憶體的數量,可減少計算裝置中的計算或其他合適類型的潛時。
透過將近記憶體151的多個部分配置為單獨的層,所揭示技術的數個實施例亦可減少與層1與層2之間的交換操作相關的執行潛時。咸信,記憶體控制器135可被配置成以非常高的速度(例如,小於或等於40奈秒)在層1與層2之間執行交換操作。如此,儘管近記憶體151被配置為作為交換緩衝器而不是專用快取記憶體來操作,但是額外的交換操作對執行潛時的影響很小或者甚至可忽略。儘管在第3A-5C圖中僅示出了層1及層2來說明所揭示的技術的各個同樣,但是在其他實施例中,近記憶體151可被配置成包括三個、四個、五個或任何其他合適數量的層。
第6圖為適用於第1圖中分散式計算系統100的某些部件的計算裝置300。例如,計算裝置300可適用於第1圖的主機106、客戶端裝置102或平臺控制器125。在非常基本的配置302中,計算裝置300可包括一或更多個處理器304及系統記憶體306。記憶體匯流排308可用於處理器304與系統記憶體306之間的通信。
根據所需配置,處理器304可為任何類型,包括但不限於微處理器(µP)、微控制器(µC)、數位信號處理器(digital signal processor; DSP)或其任何組合。處理器304可包括一或更多級快取,如一級快取記憶體310及二級快取記憶體312、處理器核心314及暫存器316。示例處理器內核314可包括算數邏輯單元(arithmetic logic unit; ALU)、浮點單元(floating-point unit; FPU)、數位信號處理核心(DSP核心)或上述各者任意組合。示例記憶體控制器318亦可與處理器304一起使用,或者在一些實施方式中,記憶體控制器318可為處理器304的內部部分。
根據所需配置,系統記憶體306可為任何類型,包括但不限於揮發性記憶體(如RAM)、非揮發性記憶體(如ROM、快閃記憶體等)或上述各者任意組合。系統記憶體306可包括作業系統320、一或更多個應用程式322及程式資料324。如第11圖所示,作業系統320可包括用於管理一或更多個虛擬機器144的超管理器140。所描述的基本配置302在第6圖中由內虛線內的彼等部件示出。
計算裝置300可具有額外特徵或功能,及額外介面,以促進基本配置302與任何其他裝置及介面之間的通信。例如,匯流排/介面控制器330可用於促進基本配置302與一或更多個資料儲存裝置332之間經由儲存介面匯流排334的通信。資料儲存裝置332可為可移除式儲存裝置336、不可移除式儲存裝置338或其組合。可移除式儲存裝置及不可移除式儲存裝置設備的實例包括諸如軟碟機及硬碟驅動器(hard-disk drive; HDD)之類的磁碟裝置、諸如緊湊型光碟(compact disk; CD)驅動器或數位多功能光碟(digital versatile disk; DVD)驅動器之類的光碟驅動器、固態驅動器(solid state drive; SSD)及磁帶驅動器等。示例電腦儲存媒體可包括以任何方法或技術實現的揮發性及非揮發性、可移動及不可移動媒體,用於儲存資訊,如電腦可讀指令、資料結構、程式模組或其他資料。術語「電腦可讀儲存媒體」或「電腦可讀儲存裝置」不包括傳播信號及通信媒體。
系統記憶體306、可移除式儲存裝置裝置336及不可移除式儲存裝置裝置338為電腦可讀儲存媒體的實例。電腦可讀儲存媒體包括但不限於RAM、ROM、EEPROM、快閃記憶體或其他儲存技術、CD-ROM、數位多功能光碟(digital versatile disk; DVD)或其他光儲存、磁帶匣、磁帶、磁碟儲存或其他磁儲存裝置,或者可用於儲存所需資訊並可由計算裝置300存取的任何其他媒體。任何此種電腦可讀儲存媒體都可為計算裝置300的一部分。術語「電腦可讀儲存媒體」不包括傳播信號及通信媒體。
計算裝置300亦可包括介面匯流排340,用於促進各種介面裝置(例如,輸出裝置342、週邊介面344及通信裝置346)透過匯流排/介面控制器330與基本配置302的通信。示例輸出裝置342包括圖形處理單元348及音訊處理單元350,其可被配置成經由一或更多個A/V埠352與諸如顯示器或揚聲器之類的各種外部裝置通信。示例週邊介面344包括串行介面控制器354或並行介面控制器356,其可被配置為與諸如輸入裝置(例如,鍵盤、滑鼠、筆、語音輸入裝置、觸控輸入裝置等)的外部裝置或其他週邊設備(例如,印表機、掃描器等)經由一或更多個I/O埠358通信。示例通信設備346包括網路控制器360,網路控制器360可被佈置成便於經由一或更多個通訊連接埠364透過網路通信鏈路與一或更多個其他計算裝置362進行通信。
網路通信鏈路可為通信媒體的一個實例。通信媒體通常可由電腦可讀指令、資料結構、程式模組或調變資料信號中的其他資料來體現,如載波或其他傳輸機制,且可包括任何資訊傳遞媒體。「調變資料信號」可為以在信號中編碼資訊的方式設置或改變其一或更多個特徵的信號。作為示例而非限制,通信媒體可包括諸如有線網路或直接線連接的有線媒體,及諸如聲學、射頻(RF)、微波、紅外(IR)及其他無線媒體的無線媒體。本文使用的術語電腦可讀媒體可包括儲存媒體及通信媒體。
計算裝置300可實施為小型可攜式(或行動)電子裝置的一部分,如蜂巢式電話、個人數位助理(personal data assistant; PDA)、個人媒體播放機裝置、無線網路手錶裝置、個人耳機裝置、專用裝置或包括任何上述功能的混合裝置。計算裝置300亦可被實現為個人電腦,包括膝上型電腦及非膝上型電腦配置。
綜上所述,應理解,出於說明目的,本文對本揭示案的特定實施例進行了描述,但在不偏離本揭示案的情況下,可進行各種修改。此外,一個實施例的許多元件可與其他實施例組合,作為其他實施例的元件的補充或替代。因此,除了所附申請專利範圍之外,該技術不受限制。
100:分散式計算系統
101:使用者
101a:使用者
101b:使用者
101c:使用者
102:客戶端裝置
106:主機
106a:源主機
106b:目的地主機
107a:第一主機組
107b:第二主機組
107c:第三主機組
108:底層網路
112:網路節點
112a:TOR
112b:TOR
112c:TOR
125:平臺控制器
132:處理器
134:記憶體
136:網路介面卡
138:封包處理器
140:超管理器
140a:第一超管理器
140b:第二超管理器
141a:第一作業系統
141b:第二作業系統
142:租戶站點
142a:第一租戶站點
142a':第一租戶站點
142b:第二租戶站點
142b':第二租戶站點
144:虛擬機器
144':虛擬機器
144'':虛擬機器
146a:虛擬網路
146b:虛擬網路
146c:虛擬網路
147:應用程式
150:系統記憶體位址
151:近記憶體
151A:第一部分
151B:第二部分
152A:部分
152B:部分
152C:部分
152D:部分
153:遠記憶體
154:元資料部分
156:資料部分
158a:第一記憶體位置
158b:第二記憶體位置
300:計算裝置
302:基本配置
304:處理器
306:系統記憶體
308:記憶體匯流排
310:一級快取記憶體
312:二級快取記憶體
314:處理器核心
316:暫存器
318:記憶體控制器
320:作業系統
322:應用程式
324:程式資料
330:匯流排/介面控制器
332:資料儲存裝置
334:儲存介面匯流排
336:可移除式儲存裝置
338:不可移除式儲存裝置
342:輸出裝置
344:週邊介面
348:圖形處理單元
350:音訊處理單元
352:A/V埠
354:串行介面控制器
356:並行介面控制器
358:I/O埠
360:網路控制器
362:計算裝置
364:通訊連接埠
第1圖為示意圖,示出了根據所揭示技術的實施例實施記憶體操作管理的分散式計算系統。
第2圖為示意圖,示出了根據本揭示案實施例的第1圖所示分散式計算系統的某些硬體/軟體部件。
第3A及3B圖為示意圖,示出了根據所揭示技術實施例的系統記憶體分層的實例。
第4A-4C圖為示意時序圖,示出了根據所揭示技術的實施例,使用近記憶體作為交換緩衝器的示例讀取操作。
第5A-5C圖為示意時序圖,示出了根據所揭示技術的實施例,使用近記憶體作為交換緩衝器的示例寫入操作。
第6圖為適用於第1圖中分散式計算系統某些部件的計算裝置。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:分散式計算系統
101:使用者
101a:使用者
101b:使用者
101c:使用者
102:客戶端裝置
106:主機
106a:源主機
106b:目的地主機
107a:第一主機組
107b:第二主機組
107c:第三主機組
108:底層網路
112:網路節點
112a:TOR
112b:TOR
112c:TOR
125:平臺控制器
Claims (20)
- 一種在一計算裝置中的記憶體管理方法,該計算裝置具有一處理器、接近該處理器並被配置為該處理器的一快取記憶體的一第一記憶體、與該處理器分離並與其介面連接的一第二記憶體、及被配置為管理該第一及該第二記憶體的操作的一記憶體控制器,該方法包括以下步驟: 在該記憶體控制器處接收來自該處理器的從該處理器的該快取記憶體中讀取對應於一系統記憶體部分的資料的一請求;及 回應於接收到該讀取請求,利用該記憶體控制器從該第一記憶體的一第一部分中擷取來自該第一記憶體的該第一部分中的一資料部分的資料及來自一元資料部分的元資料,來自該元資料部分的該元資料編碼該第一記憶體的該第一部分中的多個系統記憶體部分、該第一記憶體的一第二部分及該第二記憶體中的一或更多個額外部分的資料位置資訊; 分析從該第一記憶體中的該第一部分的該元資料部分擷取的該元資料中的該資料位置資訊,以決定該第一記憶體中的該第一部分當前是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 回應於決定該第一記憶體中的該第一部分當前包含接收的該請求中的對應於該系統記憶體部分的資料,回應於所接收的該請求,將從該第一記憶體中的該第一部分的該資料部分擷取的該資料傳輸到該處理器。
- 如請求項1所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 回應於接收的該請求,從該第一記憶體中的該第二部分或該第二記憶體中的該記憶體位置擷取該資料,並將擷取到的該資料提供給該處理器。
- 如請求項1所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的該資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的該資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器;及 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分。
- 如請求項1所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的該資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的該資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器; 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分;及 修改該第一記憶體的該元資料部分中的該元資料,以指示接收的該請求中的對應於該系統記憶體部分的該資料現在位於該第一記憶體的該第一部分中。
- 如請求項1所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的該資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的該資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器; 將從該第一記憶體中的該第二部分中擷取的該資料寫入該第一記憶體中的第一部分;及 將從第一記憶體的該第一部分擷取的該資料寫入該第一記憶體中的該第二部分。
- 如請求項1所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的該資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的該資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器; 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分; 將從該第一記憶體的該第一部分擷取的該資料寫入該第一記憶體的該第二部分;及 修改該第一記憶體的該第一部分中的該元資料部分中的該元資料,以指示: 接收的該請求中的對應於該系統記憶體部分的該資料當前位於該第一記憶體的該第一部分中;及 先前保存在該第一記憶體的該第一部分中的該資料當前位於該第一記憶體的該第二部分中。
- 如請求項1所述的方法,其中: 來自該元資料部分的該元資料包括一或更多個位元;及 該資料位置資訊包括單獨地對應於該多個系統記憶體部分之一的該一或更多個位元的組合;及 分析該資料位置資訊包括: 識別該一或更多個位元的一組合;及 決定所識別的該組合是否在接收的該請求中對應於該系統記憶體部分。
- 如請求項1所述的方法,其中: 來自該元資料部分的該元資料包括一或更多個錯誤檢查及糾正(ECC)位元;及 該資料位置資訊包括該一或更多個ECC位元的組合,該等位元單獨地對應於該多個系統記憶體部分中的一個;及 分析該資料位置資訊包括: 識別該一或更多個ECC位元的組合;及 決定所識別的該ECC位元組合是否在接收的該請求中對應於該系統記憶體部分。
- 一種計算裝置,包括: 一處理器; 一第一記憶體,靠近該處理器並被配置為該處理器的一快取記憶體; 一第二記憶體,與該處理器分離並與之介面連接;及 一記憶體控制器,被配置為管理該第一及該第二記憶體的操作,其中該記憶體控制器具有可由該記憶體控制器執行以執行以下操作的指令: 在從該處理器接收從該處理器的該快取記憶體讀取對應於一系統記憶體部分的資料的一請求時,從該第一記憶體的一第一部分擷取來自該第一記憶體的該第一部分的一資料部分的資料及來自一元資料部分的元資料,來自該元資料部分的該元資料編碼該第一記憶體的該第一部分、該第一記憶體的一第二部分及該第二記憶體的一或更多個額外部分中的多個系統記憶體部分的資料位置資訊; 分析從該第一記憶體中的該第一部分的該元資料部分擷取的該元資料中的該資料位置資訊,以決定該第一記憶體中的該第一部分當前是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 回應於決定該第一記憶體中的該第一部分當前包含接收的該請求中的對應於該系統記憶體部分的該資料,回應於接收的該請求,將從該第一記憶體中的該第一部分的該資料部分擷取的該資料傳輸到該處理器。
- 如請求項9所述的計算裝置,其中該記憶體控制器包括可執行以下操作的額外指令: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 回應於接收的該請求,從該第一記憶體中的該第二部分或該第二記憶體中的該記憶體位置擷取資料,並將擷取到的該資料提供給該處理器。
- 如請求項9所述的計算裝置,其中該記憶體控制器包括可執行以下操作的額外指令: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器;及 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分。
- 如請求項9所述的計算裝置,其中該記憶體控制器包括可執行以下操作的額外指令: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料; 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分;及 修改該第一記憶體的該元資料部分中的該元資料,以指示接收的該請求中的對應於該系統記憶體部分的該資料當前位於該第一記憶體的該第一部分中。
- 如請求項9所述的計算裝置,其中該記憶體控制器包括可執行以下操作的額外指令: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料; 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器; 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分;及 將從該第一記憶體的該第一部分擷取的該資料寫入該第一記憶體的該第二部分。
- 如請求項9所述的計算裝置,其中該記憶體控制器包括可執行以下操作的額外指令: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料; 當決定該第一記憶體中的該第二部分包含接收的該請求中的對應於該系統記憶體部分的資料時, 回應於接收的該請求,從該第一記憶體中的該第二部分擷取該資料,並將擷取到的該資料提供給該處理器; 將從該第一記憶體的該第二部分擷取的該資料寫入該第一記憶體的該第一部分; 將從該第一記憶體的該第一部分擷取的該資料寫入該第一記憶體的該第二部分;及 修改該第一記憶體的該第一部分中的該元資料部分中的該元資料,以指示接收的該請求中的對應於該系統記憶體部分的資料當前位於該第一記憶體的該第一部分中,且先前保存在該第一記憶體的該第一部分中的該資料當前位於該第一記憶體的該第二部分中。
- 如請求項9所述的計算裝置,其中: 來自該元資料部分的該元資料包括一或更多個位元;且 該資料位置資訊包括單獨地對應於該多個系統記憶體部分之一者的該一或更多個位元的組合;及 分析該資料位置資訊包括: 識別該一或更多個位元的一組合;及 決定所識別的該組合是否在接收的該請求中對應於該系統記憶體部分。
- 一種在一計算裝置中的記憶體管理方法,該計算裝置具有一處理器、接近該處理器並被配置為該處理器的一快取記憶體的一第一記憶體、與該處理器分離並與其介面連接的一第二記憶體、及被配置為管理該第一及該第二記憶體的操作的一記憶體控制器,該方法包括以下步驟: 在該記憶體控制器處接收來自該處理器的將對應於一系統記憶體部分的一資料塊寫入該處理器的該快取記憶體的一請求;及 回應於接收到寫入該資料塊的該請求,利用該記憶體控制器, 從該第一記憶體的一第一部分擷取來自該第一記憶體中的該第一部分的一元資料部分的元資料,來自該元資料部分的該元資料編碼該第一記憶體的該第一部分中的多個系統記憶體部分、該第一記憶體的一第二部分及該第二記憶體中的一或更多個額外部分的資料位置資訊; 分析從該第一記憶體中的該第一部分的該元資料部分擷取的該元資料中的該資料位置資訊,以決定該第一記憶體中的該第一部分當前是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 回應於決定該第一記憶體中的該第一部分當前包含接收的該請求中的對應於該系統記憶體部分的該資料, 將對應於系統記憶體部分的該資料塊寫入該第一記憶體中的一第一部分;及 向該處理器指示寫入該資料塊的一完成。
- 如請求項16所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料;及 將該資料塊寫入該第一記憶體中的該第二部分或該第二記憶體中的該記憶體位置;及 向該處理器指示寫入該資料塊的一完成。
- 如請求項16所述的方法,進一步包括以下步驟: 回應於決定該第一記憶體中的該第一部分當前不包含接收的該請求中的對應於該系統記憶體部分的資料, 進一步分析擷取到的該元資料中的該資料位置資訊,以識別該第一記憶體中的該第二部分或該第二記憶體中的一記憶體位置是否包含接收的該請求中的對應於該系統記憶體部分的資料; 當前將資料保存在該第一記憶體的該第一部分中; 將該資料塊寫入該第一記憶體中的該第二部分或該第二記憶體中的該記憶體位置;及 向該處理器指示寫入該資料塊的一完成。
- 如請求項17所述的方法,其中: 來自該元資料部分的該元資料包括一或更多個位元;及 該資料位置資訊包括單獨地對應於該多個系統記憶體部分之一者的該一或更多個位元的組合;及 分析該資料位置資訊包括: 識別該一或更多個位元的一組合;及 決定所識別的該組合是否在接收的該請求中對應於該系統記憶體部分。
- 如請求項17所述的方法,其中: 來自該元資料部分的該元資料包括一或更多個錯誤檢查及糾正(ECC)位元;及 該資料位置資訊包括單獨地對應於該多個系統記憶體部分之一者的該一或更多個ECC位元的組合;及 分析該資料位置資訊包括: 識別該一或更多個ECC位元的一組合;及 決定所識別的該ECC位元組合是否在接收的該請求中對應於該系統記憶體部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/371,422 US11599415B2 (en) | 2021-07-09 | 2021-07-09 | Memory tiering techniques in computing systems |
US17/371,422 | 2021-07-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202311974A true TW202311974A (zh) | 2023-03-16 |
Family
ID=82358578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111122426A TW202311974A (zh) | 2021-07-09 | 2022-06-16 | 計算系統中的記憶體分層技術 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11599415B2 (zh) |
EP (1) | EP4367578A1 (zh) |
JP (1) | JP2024529857A (zh) |
KR (1) | KR20240032735A (zh) |
CN (1) | CN117716343A (zh) |
TW (1) | TW202311974A (zh) |
WO (1) | WO2023283000A1 (zh) |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454572B2 (en) | 2005-11-08 | 2008-11-18 | Mediatek Inc. | Stack caching systems and methods with an active swapping mechanism |
EP2761465B1 (en) * | 2011-09-30 | 2022-02-09 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
WO2013048493A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9026888B2 (en) | 2012-12-21 | 2015-05-05 | Intel Corporation | Method, system and apparatus for providing access to error correction information |
US9710514B1 (en) * | 2013-06-25 | 2017-07-18 | Marvell International Ltd. | Systems and methods for efficient storage access using metadata |
US9852076B1 (en) * | 2014-12-18 | 2017-12-26 | Violin Systems Llc | Caching of metadata for deduplicated LUNs |
US9965402B2 (en) | 2015-09-28 | 2018-05-08 | Oracle International Business Machines Corporation | Memory initialization detection system |
US20170177482A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Computing system having multi-level system memory capable of operating in a single level system memory mode |
US10007606B2 (en) * | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US20180060235A1 (en) | 2016-08-30 | 2018-03-01 | Intel Corporation | Non-volatile memory compression devices and associated methods and systems |
US10055164B2 (en) | 2016-09-07 | 2018-08-21 | Sandisk Technologies Llc | Data storage at an access device |
US10296457B2 (en) * | 2017-03-30 | 2019-05-21 | Intel Corporation | Reducing conflicts in direct mapped caches |
JP6370958B2 (ja) | 2017-04-26 | 2018-08-08 | インテル・コーポレーション | デバイス |
US11138121B2 (en) | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
US20190034337A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Multi-level system memory configurations to operate higher priority users out of a faster memory level |
US10853168B2 (en) * | 2018-03-28 | 2020-12-01 | Samsung Electronics Co., Ltd. | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) |
US10599568B2 (en) | 2018-04-09 | 2020-03-24 | Intel Corporation | Management of coherent links and multi-level memory |
US10839093B2 (en) * | 2018-04-27 | 2020-11-17 | Nutanix, Inc. | Low latency access to physical storage locations by implementing multiple levels of metadata |
US10691593B1 (en) * | 2018-12-19 | 2020-06-23 | Micron Technology, Inc. | Predictive data storage hierarchical memory systems and methods |
US11669454B2 (en) * | 2019-05-07 | 2023-06-06 | Intel Corporation | Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory |
KR20210022260A (ko) | 2019-08-20 | 2021-03-03 | 삼성전자주식회사 | 메모리 컨트롤러의 구동방법, 메모리 컨트롤러 및 스토리지 장치 |
US20200278804A1 (en) | 2020-04-13 | 2020-09-03 | Intel Corporation | Managing memory system quality of service (qos) |
US11301325B2 (en) | 2020-05-29 | 2022-04-12 | Intel Corporation | Memory in integrity performance enhancement systems and methods |
-
2021
- 2021-07-09 US US17/371,422 patent/US11599415B2/en active Active
-
2022
- 2022-06-02 WO PCT/US2022/031862 patent/WO2023283000A1/en active Application Filing
- 2022-06-02 KR KR1020237043344A patent/KR20240032735A/ko unknown
- 2022-06-02 CN CN202280048020.9A patent/CN117716343A/zh active Pending
- 2022-06-02 EP EP22736083.1A patent/EP4367578A1/en active Pending
- 2022-06-02 JP JP2024500485A patent/JP2024529857A/ja active Pending
- 2022-06-16 TW TW111122426A patent/TW202311974A/zh unknown
-
2023
- 2023-01-13 US US18/154,164 patent/US20230143375A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4367578A1 (en) | 2024-05-15 |
US20230020131A1 (en) | 2023-01-19 |
KR20240032735A (ko) | 2024-03-12 |
WO2023283000A1 (en) | 2023-01-12 |
US11599415B2 (en) | 2023-03-07 |
JP2024529857A (ja) | 2024-08-14 |
CN117716343A (zh) | 2024-03-15 |
US20230143375A1 (en) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825320B (zh) | 虚拟化固态存储介质的隔离区域 | |
CN107111558A (zh) | Nfvs和其他生产者‑消费者工作负载vm间通信性能和能量改进的硬件/软件协同优化 | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
KR20200123187A (ko) | 상위 계층 캐시의 항목을 기반으로 하위 계층 캐시로의 유입을 로깅함으로써 트레이스 기록 | |
US11068418B2 (en) | Determining memory access categories for tasks coded in a computer program | |
CN110119304A (zh) | 一种中断处理方法、装置及服务器 | |
US20240078187A1 (en) | Per-process re-configurable caches | |
US10204060B2 (en) | Determining memory access categories to use to assign tasks to processor cores to execute | |
TW202343254A (zh) | 具有零線最佳化的直接交換快取 | |
EP4158485A1 (en) | Inference in memory | |
TW202238390A (zh) | 計算系統中的記憶體操作管理 | |
TW202422331A (zh) | 儲存裝置及操作方法 | |
TW202301133A (zh) | 計算系統中的記憶體包容性管理 | |
TW202311974A (zh) | 計算系統中的記憶體分層技術 | |
WO2022197419A1 (en) | Memory operations management in computing systems | |
US20230036751A1 (en) | Sparse memory handling in pooled memory | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US20240338330A1 (en) | Apparatus and method for supporting data input/output operation based on a data attribute in a shared memory device or a memory expander | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
JP4774099B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
TW202344971A (zh) | 使用整合記憶體池化及直接交換快取的系統及方法 | |
TW202340931A (zh) | 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 | |
KR20240148519A (ko) | 공유 메모리 장치 혹은 메모리 확장 장치에서 데이터 종류에 따른 데이터 입출력 동작을 수행하는 장치 및 방법 | |
TW202331519A (zh) | 基於晶體堆疊架構的計算機系統和記憶體管理方法 |