TWI785320B - 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 - Google Patents
裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 Download PDFInfo
- Publication number
- TWI785320B TWI785320B TW109111025A TW109111025A TWI785320B TW I785320 B TWI785320 B TW I785320B TW 109111025 A TW109111025 A TW 109111025A TW 109111025 A TW109111025 A TW 109111025A TW I785320 B TWI785320 B TW I785320B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- memory
- memory system
- data
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 43
- 230000015654 memory Effects 0.000 claims abstract description 427
- 238000012545 processing Methods 0.000 claims abstract description 82
- 238000012546 transfer Methods 0.000 claims abstract description 64
- 239000004744 fabric Substances 0.000 claims abstract description 34
- 238000004891 communication Methods 0.000 claims abstract description 18
- 230000008520 organization Effects 0.000 claims description 90
- 230000004044 response Effects 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 10
- 238000007726 management method Methods 0.000 description 42
- 238000010586 diagram Methods 0.000 description 14
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 230000006855 networking Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0669—Configuration or reconfiguration with decentralised address assignment
-
- 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/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/061—Improving I/O performance
-
- 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/0656—Data buffering arrangements
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/151—Emulated environment, e.g. virtual machine
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Traffic Control Systems (AREA)
Abstract
一種裝置內標記資料移動系統具有一機櫃,該機櫃包括經組態以提供一第一執行緒及一第二執行緒之一或多個處理系統。該機櫃中之一資料移動器子系統耦合至該一或多個處理系統。在由該第一執行緒傳輸之一通信中,該資料移動器子系統識別將資料傳送至該第二執行緒之一請求,該資料儲存在與一記憶體組構管理資料庫中之該第一執行緒相關聯的一記憶體系統之一第一部分中。接著,該資料移動器子系統修改該記憶體組構管理資料庫中之標記參考資訊,以使該記憶體系統之該第一部分與該第一執行緒解除關聯,且使該記憶體系統之該第一部分與該第二執行緒相關聯,此允許該第二執行緒使用請求/回應操作來參考該資料。
Description
本發明大體上係關於資訊處置系統,且更特定言之,係關於經由標記參考資訊修改技術在資訊處置系統內移動資料。
隨著資訊之價值及使用持續增加,個人及企業都在尋求額外方式來處理及儲存資訊。使用者可用之一個選項為資訊處置系統。資訊處置系統通常出於企業、個人或其他目的而處理、編譯、儲存及/或傳達資訊或資料,藉此允許使用者利用資訊之價值。由於技術及資訊處置之需求及要求在不同使用者或應用之間會有所不同,因此資訊處置系統在處理何資訊、如何處理資訊、處理、儲存或傳達多少資訊及可如何快速且有效地處理、儲存或傳達資訊方面亦可能有所不同。資訊處置系統之變化允許資訊處置系統為通用的或針對特定使用者或特定用途(諸如金融交易處理、航空公司預訂、企業資料儲存或全球通信)進行組態。另外,資訊處置系統可包括可經組態以處理、儲存及傳達資訊之多種硬體及軟體組件,且可包括一或多個電腦系統、資料儲存系統及聯網系統。
諸如伺服器裝置之資訊處置系統通常操作以提供資料之移動。舉
例而言,伺服器裝置中包括之處理器系統可操作以提供複數個虛擬機及/或其他應用程式,且彼等虛擬機可包括向彼此傳送資料之執行緒。由伺服器裝置提供的在虛擬機上包括之執行緒之間的資料傳送相對較慢、消耗記憶體頻寬,及/或引入了此項技術中已知之其他資料傳送效率低下問題。
此外,隨著聯網系統及儲存系統之速度趕上處理系統/記憶體系統對,正在重新思考以處理系統/記憶體系統對「快」且聯網系統及記憶體系統「慢」之範例構建之傳統處理系統/記憶體系統組合。舉例而言,已經引入諸如Gen-Z記憶體組構之記憶體組構,以經由統一通信路徑及簡化處理系統/記憶體系統通信所需之軟體來消除瓶頸且相對於習知系統提高效率。如熟習本發明所屬領域之技術者將理解,藉由將處理系統/計算功能性與記憶體系統/媒體功能性解耦,此種記憶體組構將處理系統/記憶體系統之位元組可定址之載入/儲存模型擴展至整個系統,從而允許處理系統與記憶體系統充當對等方,其使用相同之語言且經由經簡化、高效能、低延遲之通信路徑進行通信,而不會產生與習知系統相關聯之轉譯損失及軟體額外負荷。
然而,本發明之發明人已經發現,包括在由伺服器裝置提供之虛擬機上之執行緒之間且經由此種記憶體組構之資料傳送仍然效率低下。舉例而言,自包括在伺服器裝置所提供之第一虛擬機上之第一執行緒至包括在該伺服器裝置所提供之第二虛擬機上之第二執行緒之資料傳送可包括:第一執行緒產生記憶體載入指令且將其傳輸至與提供第一虛擬機之處理系統相關聯的記憶體組構請求器。回應於接收到該記憶體載入指令,記憶體組構請求器將接著向與該記憶體系統相關聯之記憶體組構回應器傳輸記憶體組構請求。接著,記憶體組構回應器將自記憶體系統中之一或多個記憶體裝置中擷取在記憶體組構請求中請求之資料,且將該資料作為有效載荷在記憶體組構回應中傳輸至記憶體組構請求器。接著,記憶體組構請求器將記憶體組構回應中之資料載入至由提供
第一虛擬機之處理系統利用的本端記憶體系統中,其允許第一執行緒將該資料傳送(例如,經由複製引擎)至第二執行緒(例如,藉由將該資料複製至由提供第二虛擬機之處理系統利用的本端記憶體系統中)。由此,在同一伺服器裝置提供之虛擬機上包括的執行緒之間且經由記憶體組構進行的資料移動需要若干讀取、寫入、複製及/或其他資料傳送操作,而本發明之發明人已發現該等操作係不必要的。
因此,需要提供一種改良之裝置內資料移動系統。
根據一個實施例,一種資訊處置系統(IHS)包括:處理系統;及一記憶體系統,該記憶體系統耦合至該處理系統且包括指令,該等指令當由該處理系統執行時使該處理系統提供一資料移動器引擎,該資料移動器引擎經組態以:在由包括在一機櫃中之至少一個處理系統提供之一第一執行緒傳輸的一通信中,識別將資料傳送至由包括在該機櫃中的該至少一個處理系統提供之一第二執行緒之一請求,其中該資料儲存在與一記憶體組構管理資料庫中之該第一執行緒相關聯的一記憶體系統之一第一部分中;及在該記憶體組構管理資料庫中修改標記參考資訊,以便使該記憶體系統之該第一部分與該第一執行緒解除關聯,且使該記憶體系統之該第一部分與該第二執行緒相關聯,其中該記憶體系統之該第一部分與該第二執行緒之該關聯允許該第二執行緒使用請求/回應操作來參考該資料。
100:IHS
102:處理器
104:匯流排
106:輸入裝置
108:大容量儲存裝置/儲存器
110:顯示器
112:視訊控制器
114:系統記憶體
116:機櫃
200:聯網系統
202a:伺服器裝置
202b:伺服器裝置
202c:伺服器裝置
204:網路
206:記憶體系統
300:伺服器裝置
302:機櫃
304:處理系統
304a:記憶體組構邏輯子系統
306:處理系統
306a:記憶體組構邏輯子系統
308:處理系統
308a:記憶體組構邏輯子系統
310:資料移動器引擎
312:記憶體組構管理子系統
314:記憶體組構管理資料庫
400:記憶體系統
402:機櫃
404:記憶體裝置
406:媒體控制器裝置
408:記憶體組構管理子系統
500:方法
502:區塊
504:區塊
506:區塊
508:決策區塊
510:區塊
512:區塊
514:區塊
516:區塊
600:虛擬機(VM)
600a:執行緒
602:虛擬機(VM)
602a:執行緒
604:第一執行緒記憶體空間
606:第二執行緒記憶體空間
700:請求
800:標記參考資訊修改操作
圖1為說明資訊處置系統(IHS)之一實施例之示意圖。
圖2為說明網路系統之一實施例之示意圖。
圖3為說明伺服器裝置之一實施例之示意圖,該伺服器裝置可包括
在圖2之網路系統中且可提供本發明之裝置內標記資料移動系統。
圖4為說明可包括在圖2之網路系統中之記憶體系統之一實施例的示意圖。
圖5為說明用於提供裝置內標記資料移動之方法之一實施例的流程圖。
圖6A為說明在圖5之方法期間操作之圖3的伺服器裝置之一實施例之示意圖。
圖6B為說明在圖5之方法期間操作之圖4的記憶體系統之一實施例之示意圖。
圖7為說明在圖5之方法期間操作之圖3的伺服器裝置之一實施例之示意圖。
圖8為說明在圖5之方法期間操作之圖3的伺服器裝置之一實施例之示意圖。
圖9為說明在圖5之方法期間操作之圖4的記憶體系統之一實施例之示意圖。
圖10A為說明在圖5之方法期間操作之圖3的伺服器裝置之一實施例之示意圖。
圖10B為說明在圖5之方法期間操作之圖4的記憶體系統之一實施例之示意圖。
圖10C為說明在圖5之方法期間操作之圖4的記憶體系統之一實施例之示意圖。
圖10D為說明在圖5之方法期間操作之圖3的伺服器裝置之一實施例之示意圖。
為了本發明之目的,資訊處置系統可包括可操作以計算、推算、判定、分類、處理、傳輸、接收、擷取、發起、切換、儲存、顯示、傳達、展現、偵測、記錄、複製、處置或利用任何形式的資訊、情報或資料以用於商業、科學、控制或其他目的的任何工具或工具集合。舉例而言,資訊處置系統可為個人電腦(例如,桌上型電腦或膝上型電腦)、平板電腦、行動裝置(例如,個人數位助理(PDA)或智慧型電話)、伺服器(例如,刀鋒伺服器或機架伺服器)、網路記憶體裝置或任何其他合適之裝置,且大小、形狀、效能、功能性及價格可能會有所不同。資訊處置系統可包括隨機存取記憶體(RAM)、一或多個處理資源(諸如中央處理單元(CPU)或硬體或軟體控制邏輯)、ROM及/或其他類型之非揮發性記憶體。資訊處置系統之額外組件可包括一或多個磁碟驅動器、用於與外部裝置通信之一或多個網路埠以及多種輸入及輸出(I/O)裝置(例如鍵盤、滑鼠、觸控螢幕及/或視訊顯示器)。資訊處置系統亦可包括可操作以在多種硬體組件之間傳輸通信之一或多個匯流排。
在一個實施例中,圖1之IHS 100包括連接至匯流排104之處理器102。匯流排104用作處理器102與IHS 100之其他組件之間的連接。輸入裝置106耦合至處理器102以向處理器102提供輸入。輸入裝置之實例可包括鍵盤、觸控螢幕、諸如滑鼠、軌跡球及觸控板之指向裝置,及/或本領域中已知之多種其他輸入裝置。程式及資料儲存在耦合至處理器102之大容量儲存裝置108上。大容量記憶體裝置之實例可包括硬碟、光碟、磁光碟、固態記憶體裝置及/或本領域已知之多種其他大容量記憶體裝置。IHS 100進一步包括顯示器110,該顯示器藉由視訊控制器112耦合至處理器102。系統記憶體114耦合至處理器102,以向處理器提供快速儲存,以促進處理器102執行電腦程式。系統記憶體之實例可包括隨機存取記憶體(RAM)裝置,諸如動態RAM(DRAM)、同步DRAM(SDRAM)、
固態記憶體裝置及/或本領域中已知之多種其他記憶體裝置。在一實施例中,機櫃116容納IHS 100之一些或所有組件。應理解,可在上述組件與處理器102之間部署其他匯流排及中間電路,以促進該等組件與處理器102之間的互連。
現在參考圖2,說明聯網系統200之實施例。在所說明之實施例中,聯網系統200包括複數個伺服器裝置202a、202b及202c。在一實施例中,伺服器裝置202a-c中之任一者可由以上參考圖1論述之IHS 100提供,及/或可包括IHS 100之一些或所有組件。然而,儘管說明且論述為伺服器裝置,但熟習本發明所屬領域之技術者將認識到,聯網系統200中提供之伺服器裝置202a-c可由可經組態以類似地操作的任何裝置來提供,如下文論述。儘管下文僅說明及論述了三個伺服器裝置202a-c,但熟習本發明所屬領域之技術者將認識到,可(且通常將)在聯網系統200(例如,資料中心)中提供更多之伺服器裝置,且保持在本發明之範圍內。
在所說明之實施例中,伺服器裝置202a-c各自耦合至網路204,該網路包括在聯網系統200中且可由例如區域網路(LAN)、網際網路及/或對於熟習本發明所屬領域之技術者將顯而易見的任何其他網路(或網路之組合)提供。此外,聯網系統200之所說明實施例包括經由網路204耦合至伺服器裝置202a-c之記憶體系統206。在一實施例中,記憶體系統206可由上文參考圖1論述之IHS 100提供,及/或可包括IHS 100之一些或所有組件。在特定實例中,記憶體系統206可由一或多個單獨之伺服器裝置、提供為伺服器裝置202、204及206中之一或多者的邏輯部分,及/或以熟習本發明所屬領域之技術者將顯而易見的多種其他方式提供。在下文論述之實施例中,記憶體系統206提供可由伺服器裝置202a-c經由網路204利用之網路連接之記憶體組構。
舉例而言,網路連接之記憶體組構可為由Gen-Z聯盟建立及商業化之Gen-Z記憶體組構,且熟習本發明所屬領域之技術者將認識到,Gen-Z記憶體
組構藉由使伺服器裝置202a-c中之處理系統/計算功能性與記憶體系統206中之記憶體系統/媒體功能性解耦而將處理系統/記憶體系統可位元組定址之載入/儲存模型擴展至整個聯網系統200,從而允許處理系統與記憶體系統充當使用相同語言且經由經簡化、高效能、低延遲之通信路徑進行通信之對等體,該等通信路徑不會招致與習知系統相關聯之轉譯損失及軟體額外負荷,因此消除瓶頸且經由通信路徑之統一及處理系統/記憶體系統通信所需的軟體之簡化而提高了效率。然而,熟習本發明所屬領域之技術者將認識到,其他類型之記憶體組構亦將落入本發明之範圍內。此外,儘管將伺服器裝置202a-c說明為各自經由網路204耦合至記憶體系統206,但熟習本發明所屬領域之技術者將認識到,在其他實施例中,記憶體系統206可提供於伺服器裝置中,同時仍實現下文描述之功能性且亦保持在本發明之範圍內。由此,儘管已說明及描述特定聯網系統200,但熟習本發明所屬領域之技術者將認識到,本發明之裝置內標記資料移動系統可利用多種其他組件及組件組態,同時亦保持在本發明之範圍內。
現在參考圖3,說明伺服器裝置300之一實施例,其可提供上文參考圖2論述之伺服器裝置202a-c中之任一者。由此,伺服器裝置300可由上文參考圖1論述之IHS 100提供及/或可包括IHS 100之一些或所有組件。此外,儘管說明及論述為伺服器裝置300,但熟習本發明所屬領域之技術者將認識到,下文論述之伺服器裝置300之功能性可由經組態以類似地操作之其他裝置來提供,如下文所論述。在所說明之實施例中,伺服器裝置300包括容納伺服器裝置300之組件的機櫃302,下文僅論述該等組件中的一些。
例如且如圖3所說明,機櫃302可容納複數個處理系統304、306及308,其中處理系統304、306及308中之每一者包括各別記憶體組構邏輯子系統304a、306a及308a。特定言之,處理系統304、306及308可由中央處理單元(CPU)裝置、系統單晶片(SOC)裝置及/或不包括媒體控制器裝置之其他處理系統(如下
所述,其可在由處理系統利用之記憶體組構記憶體系統中提供)提供。由此,分別包括在處理系統304、306及308中之記憶體組構邏輯子系統304a、306a及308a可實現下文論述之記憶體組構功能性中之至少一些。在特定實例中,記憶體組構為Gen-Z記憶體組構,且記憶體組構邏輯子系統操作以提供Gen-Z邏輯,以利用Gen-Z記憶體組構,但熟習本發明所屬領域之技術者將認識到,其他記憶體組構及記憶體組構邏輯子系統可與本發明之教示一起使用,同時保持在本發明之範圍內。儘管未說明,但處理系統304、306及308中之每一者可耦合至一或多個本端記憶體系統,該一或多個本端記憶體系統提供於伺服器裝置300中且包括當由處理系統304、306及308執行時允許處理系統304、306及308執行下文論述之任何功能性(例如,提供虛擬機、應用程式、執行緒、資料移動器引擎等)之指令。
在一些實施例中,機櫃302可容納資料移動器處理系統(未說明,但可包括上文參考圖1論述之處理器102)及資料移動器記憶體系統(未說明,但可包括上文參考圖1論述之記憶體114),該資料移動器記憶體系統耦合至資料移動器處理系統,且包括在由資料移動器處理系統執行時使資料移動器處理系統提供經組態以執行下文論述之資料移動器引擎及/或伺服器裝置之功能的資料移動器引擎310之指令。在所說明之實施例中,資料移動器引擎310說明為與處理系統304、306及308分離,且因此可由耦合至彼等處理系統304、306及308之單獨資料移動器硬體及軟體(例如,提供於周邊組件高速互連(PCIe)卡上之場可程式化閘陣列(FPGA)及/或此項技術中已知之其他子系統)提供。然而,在其他實施例中,資料移動器引擎310可與處理系統304、306及308中之任一者或每一者整合、包括在其中及/或以其他方式為其一部分。由此,在彼等實施例中,資料移動器引擎310可由伺服器裝置300中之本端記憶體系統上之指令來提供,該本端記憶體系統由處理系統304、306及308中之任一者或每一者利用、提供為FPGA(其為處理系統304、306及308中之任一者或每一者的一部分),及/或以對於熟習本發
明所屬領域之技術者而言顯而易見之多種方式提供。
在一些實施例中,除了下文論述之裝置內標記資料移動操作之外,資料移動器引擎310亦可經組態以對處理系統304、306及308執行讀取、寫入、複製及/或其他資料移動操作(例如,至其本端記憶體系統),以便例如使處理系統304、306及308不必使用處理週期來執行彼等操作。然而,熟習本發明所屬領域之技術者將認識到,下文論述之資料移動器引擎310之功能性可由其自身提供及/或與其他功能一起提供,同時亦保持在本發明之範圍內。儘管已描述資料移動器引擎實施方式及功能性之一些實例,但熟習本發明所屬領域之技術者將認識到,可以多種方式來實現資料移動器引擎310之多種不同功能性,其將亦落入本發明之範圍內。
在所說明之實施例中,機櫃302容納記憶體組構管理子系統312,該記憶體組構管理子系統經組態以為伺服器裝置300提供記憶體組構管理操作。舉例而言,當記憶體組構為如上所述之Gen-Z記憶體組構時,記憶體組構管理子系統312可包括Gen-Z記憶體管理單元(Gen-Z ZMMU),在下文提供之實例中,該單元作為Gen-Z ZMMU請求器操作,其為處理系統304、306及308提供對Gen-Z記憶體組構之存取。然而,熟習本發明所屬領域之技術者將認識到,用於其他記憶體組構之其他記憶體組構管理子系統可與本發明之教示一起使用,同時亦保持在本發明之範圍內。
機櫃302還可容納儲存系統(未說明,但其可包括以上參考圖1論述之儲存器108),該儲存系統(例如,經由儲存系統與資料移動器處理系統之間的耦合)耦合至資料移動器引擎310且耦合至記憶體組構管理子系統312,且包括經組態以儲存由資料移動器引擎310及/或下文論述之記憶體組構管理子系統312所利用的任何資訊(例如,記憶體組構參考指標、記憶體組構頁擁有權資訊等)之記憶體組構管理資料庫314。儘管已說明特定伺服器裝置300,但熟習本發明所屬
領域之技術者將認識到,伺服器裝置(或根據本發明之教示以與下文針對伺服器裝置300所描述之方式類似的方式操作的其他裝置)可包括多種組件及/或組件組態,用於提供習知伺服器裝置功能以及下文論述之功能性,同時亦保持在本發明之範圍內。
現在參考圖4,說明記憶體系統400之實施例,該記憶體系統可提供上文參考圖2論述之記憶體系統206。由此,記憶體系統可由上文參考圖1論述之IHS 100提供,及/或可包括IHS 100之一些或全部組件,且在特定實例中可由一或多個單獨之伺服器裝置、伺服器裝置202、204及206中之一或多者及/或以熟習本發明所屬領域之技術者顯而易見之多種其他方式提供。此外,儘管被說明及論述為記憶體系統,但熟習本發明所屬領域之技術者將認識到,下文論述之記憶體系統之功能性可由經組態以與下文論述者類似地操作之其他裝置來提供。在所說明之實施例中,記憶體系統400包括容納記憶體系統400之組件的機櫃402,下文僅論述該等組件中之一些。
舉例而言,機櫃402可容納一或多個記憶體裝置404,該一或多個記憶體可由動態隨機存取記憶體(DRAM)裝置、儲存類記憶體(SCM)裝置、固態驅動器(SSD)裝置陣列及/或熟習本發明所屬領域之技術者將顯而易見之任何其他記憶體裝置提供。在所說明之實施例中,機櫃402容納耦合至記憶體裝置404之媒體控制器裝置406。儘管說明為耦合至一或多個記憶體裝置404之單個媒體控制器裝置406,但熟習本發明所屬領域之技術者將認識到,可為記憶體裝置404提供多個媒體控制器裝置,同時亦保持在本發明之範圍內。舉例而言,可為每種記憶體裝置技術提供單獨之媒體控制器裝置(例如,可為DRAM裝置提供第一媒體控制器裝置,可為SCM裝置提供第二媒體控制器裝置,等等)。然而,儘管已論述記憶體裝置及媒體控制器裝置之幾個特定實例,但熟習本發明所屬領域之技術者將認識到,多種記憶體裝置及/或媒體控制器裝置組件及/或組態亦將落
入本發明之範圍之內。
在所說明之實施例中,機櫃402容納記憶體組構管理子系統408,該記憶體組構管理子系統經組態以為記憶體系統400提供記憶體組構管理操作。舉例而言,當記憶體組構為如上所述之Gen-Z記憶體組構時,記憶體組構管理子系統408可包括Gen-Z記憶體管理單元(Gen-Z ZMMU),在下為提供之實例中,該Gen-Z記憶體管理單元作為與Gen-Z ZMMU請求器一起操作之Gen-Z ZMMU回應器而操作,為處理系統304、306及308提供對Gen-Z記憶體組構之存取。然而,熟習本發明所屬領域之技術者將認識到,用於其他記憶體組構之其他記憶體組構管理子系統可與本發明之教示一起使用,同時亦保持在本發明之範圍內。儘管已說明特定記憶體系統400,但熟習本發明所屬領域之技術者將認識到,記憶體系統(或以與下文針對記憶體系統400描述之方式類似的方式根據本發明之教示操作的其他系統)可包括多種組件及/或組件組態,用於提供習知記憶體系統功能性及下文論述之功能性,同時亦保持在本發明之範圍內。
現在參考圖5,說明了用於提供裝置內標記資料移動的方法之一實施例。如下所述,本發明之系統及方法提供資料之「傳送」,同時藉由在請求傳送該資料之執行緒與請求被傳送資料之執行緒之間改變記憶體組構中的記憶體系統部分之分配而避免了執行讀取、寫入、複製及/或實際上在記憶體組構位址空間之間移動資料之其他習知資料傳送操作的需要。舉例而言,由伺服器裝置中之處理系統提供之第一虛擬機中所包括之第一執行緒可請求將資料傳送至由該伺服器裝置中之處理系統提供之第二虛擬機中所包括之第二執行緒,且資料移動器引擎(例如,包括在提供第一執行緒之處理系統中、包括在耦合至提供第一執行緒之處理系統的硬體/軟體中等)可識別該請求以傳送資料。作為回應,資料移動器引擎修改資料庫中之標記參考資訊,以使記憶體組構記憶體系統之第一部分與第一執行緒解除關聯,且使記憶體組構記憶體系統之第一部分與第
二執行緒相關聯,從而允許第二執行緒使用請求/回應操作參考記憶體組構記憶體系統中之該資料。由此,提供了更有效之基於裝置內記憶體組構之資料傳送,從而消除了執行實際上在記憶體組構位址空間之間移動資料之習知資料傳送操作之需要,同時經由修改標記參考資訊以便重新分配記憶體組構之各部分來提供此資料移動效果。
方法500開始於區塊502,其中向記憶體組構中之記憶體系統之各別部分分配包括於各別虛擬機中之執行緒。在一實施例中,在區塊502處,處理系統304、306及308中之任一者或全部可用於提供虛擬機或其他應用程式(例如,經由在其所連接至之本端記憶體系統上執行指令),且如熟習本發明所屬領域之技術者將理解,此等虛擬機/應用程式可包括執行緒或其他虛擬機/應用程式組件,該等執行緒或其他虛擬機/應用程式組件經組態以類似於下文之論述利用記憶體組構記憶體系統之部分。參考圖6A且出於下文提供的實例之目的,處理系統304被說明為提供包括執行緒600a之虛擬機(VM)600(例如,經由執行包括在本端記憶體系統上之指令),且處理系統306被說明為提供包括執行緒602a之虛擬機(VM)602(例如,經由執行包括在本端記憶體系統上之指令)。然而,儘管包括各別執行緒之兩個虛擬機被說明為由不同處理系統提供,但熟習本發明所屬領域之技術者將認識到,可在同一處理系統上提供彼等虛擬機及其執行緒,同時亦保持在本發明之範圍內。
在一實施例中,在區塊502處,虛擬機、應用程式、執行緒及/或其他虛擬機/應用程式組件中之任一者或全部可為記憶體組構中的記憶體系統之所分配部分。舉例而言,伺服器裝置300中之記憶體組構管理子系統312可藉由例如與記憶體系統206/400中之記憶體組構管理子系統408通信以便使媒體控制器裝置406向執行緒600a及602a提供包括在一或多個記憶體裝置404中之記憶體系統位址空間之分配而將記憶體系統206/400之不同部分分配給執行緒600a及
602a。
在一特定實例中,Gen-Z ZMMU可為記憶體組構中之頁提供Gen-Z孔徑,此等孔徑基本上用作由記憶體組構管理器管理/程式化且使用Gen-Z孔徑、特定記憶體組構資源及記憶體區進行廣告之記憶體組構之頁目錄。此外,一旦被映射且發佈至伺服器裝置,伺服器裝置便可作為其正常啟動記憶體發現過程之一部分來發現記憶體(例如,使用韌體且經由e820/ACPI表映射),且在伺服器裝置中的其位址區中提供實體位址空間映射,從而允許該記憶體被其作業系統發現。接著,作業系統記憶體管理器將自系統實體位址空間(包括經由Gen-Z ZMMU孔徑發現之空間)內的各別區分配一或多個虛擬機執行緒。
此外,伺服器裝置300中之記憶體組構管理子系統312可在記憶體組構管理資料庫314中儲存關於記憶體系統部分分配之標記參考資訊,該標記參考資訊可包括例如將第一執行緒映射至記憶體系統206/400之第一部分及將第二執行緒映射至記憶體系統206/400之第二部分的參考指標、為第一執行緒提供對記憶體系統206/400之第一部分之擁有權及為第二執行緒提供對記憶體系統206/400之第二部分之擁有權的頁擁有權資訊,及/或熟習本發明所屬領域之技術者將認識到的提供記憶體組構記憶體系統之各部分至執行緒的分配之任何其他標記參考資訊。
參考圖6B且出於下文提供的實例之目的,執行緒600a被說明為已被分配第一執行緒記憶體空間604(例如,由媒體控制器裝置406回應於記憶體組構管理子系統312與408之間的通信而分配),且執行緒602a被說明為已被分配第二執行緒記憶體空間606(例如,由媒體控制器裝置406回應於如上所述之記憶體組構管理子系統312與408之間的通信而分配)。如熟習本發明所屬領域之技術者將瞭解,第一執行緒記憶體空間604與第二執行緒記憶體空間606可由由記憶體裝置404提供之不同記憶體位址、由一或多個記憶體裝置404提供之不同記憶體
頁及/或熟習本發明所屬領域之技術者將係顯而易見的一或多個記憶體裝置404之其他不同部分來界定。在以下實例中,第一執行緒記憶體空間604與第二執行緒記憶體空間606為相等大小之記憶體空間,但熟習本發明所屬領域之技術者將認識到,可為執行緒分配不同大小之記憶體空間,且下文對相等大小之記憶體空間之論述適用於本發明之特定實施例。特定言之,分配給執行緒602a的記憶體系統400之部分可大於第二執行緒記憶體空間606,其中第二記憶體執行緒空間606提供分配給執行緒602a的記憶體系統400之該部分之子集,該子集儲存在方法500期間「傳送」之資料。
方法500接著進行至區塊504,其中第一執行緒傳輸通信,該通信包括將儲存在記憶體系統之其所分配部分中的資料傳送至第二執行緒之請求。在一實施例中,在區塊504處或之前,由伺服器裝置300中之處理系統提供的虛擬機中所包括之任何執行緒可請求將資料傳送至由伺服器裝置300中之處理系統提供的另一虛擬機中所包括之另一執行緒。熟習本發明所屬領域之技術者將認識到,多種場景可能要求在由伺服器裝置300中之一或多個處理系統提供的虛擬機中所包括之執行緒之間資料傳送,且設想自彼等場景中之任一者得出的資料傳送請求落入本發明之範圍內。繼續上文之實例且參考圖7,執行緒602a被說明為傳輸經由處理系統306中包括之記憶體組構邏輯子系統306a傳送資料之請求700,其中資料移動器引擎310可存取該請求700。在一實施例中,可在進程間通信(IPC)中提供在區塊504處由第一執行緒提供的資料傳送請求,該進程間通信(IPC)包括識別第二執行緒之僅參考資料描述符傳送訊息,且熟習本發明所屬領域之技術者將理解,其不包括待傳送之資料,而是包括對該資料在記憶體組構記憶體系統中的位置之參考。舉例而言,在區塊504處由執行緒602a提供的資料傳送請求700可包括識別執行緒600a之IPC,且不包括待傳送之資料,而是包括對一或多個記憶體裝置404中的在記憶體系統400中儲存該資料的第二執行緒記
憶體空間606之參考。
接著,方法500進行至區塊506,其中資料移動器子系統識別在第一執行緒傳輸的通信中傳送資料之請求。在一實施例中,在區塊506處,資料移動器引擎310可操作以識別傳送由處理系統304、306及308中之任一者提供的任何虛擬機中包括的任何執行緒傳輸的資料之請求。繼續上文提供之實例且參考圖7,資料移動器引擎310可操作以識別傳送由執行緒602a傳輸的資料之請求700。在一些實施例中,資料移動器引擎310可經組態以偵聽由處理系統304、306及308中之任一中提供的任何虛擬機中包括之任何執行緒傳輸之通信,以便識別傳送資料之請求。舉例而言,資料移動器引擎310可操作以偵聽傳送由執行緒602a傳輸的資料之請求700,以便識別資料將被傳輸至的執行緒600a、待傳送資料之資料位址、待傳送資料之資料參考及/或熟習本發明所屬領域之技術者將顯而易見的任何其他資料傳送資訊。然而,儘管已描述識別資料傳送請求之特定實例,但熟習本發明所屬領域之技術者將認識到,可以亦落入本發明之範圍內的多種方式來識別資料傳送請求。
接著,方法500進行至決策區塊508,其中判定所請求之資料傳送是否在記憶體組構中之記憶體系統之各部分之間。在一實施例中,在決策區塊508處,資料移動器引擎310可操作以判定在區塊506處識別之資料傳送請求中所包括之資訊是否提供了在諸如記憶體系統206/400之記憶體組構記憶體系統之各部分之間的資料傳送。舉例而言,在決策區塊508處,資料移動器引擎310可使用在區塊506處識別之資料傳送請求中所包括之資訊來判定待傳送資料之當前位置以及資料將被傳送至的位置。在一些實例中,資料傳送請求可識別待傳送資料之當前位置及資料將被傳送至的位置。然而,在其他實例中,可藉由識別請求資料傳送之執行緒且存取記憶體組構管理資料庫314以判定記憶體系統206/400之分配給該執行緒的部分來判定待傳送資料之當前位置,同時可藉由識
別資料將被傳送至的執行緒且存取記憶體組構管理資料庫314以判定記憶體系統206/400之分配給該執行緒的部分來判定資料將被傳送至的位置。然而,儘管已提供一些特定實例,但熟習本發明所屬領域之技術者將認識到,可以亦將落入本發明之範圍內的多種方式執行對所請求之資料傳送是否在記憶體組構中之記憶體系統之各部分之間的判定。
若在決策區塊508處判定所請求之資料傳送不在記憶體組構中之記憶體系統之各部分之間,則方法500進行至區塊510,其中資料移動器子系統執行習知複製操作。在一實施例中,資料移動器引擎310可判定所請求之資料傳送為去往及/或來自本端記憶體系統(即,伺服器裝置300中包括之本端記憶體系統),且在區塊510處,資料移動器引擎310可操作以執行習知複製操作。舉例而言,若在決策區塊508判定所請求之資料傳送係在伺服器裝置300中之本端記憶體系統之間,則在區塊510處,資料移動器引擎310可自伺服器裝置300(例如,由執行緒602a利用)中之本端記憶體系統讀取並複製該資料,且將該資料寫入伺服器裝置300(例如,由執行緒600a利用)中之本端記憶體系統。在另一實例中,若在決策區塊508處判定所請求之資料傳送係自伺服器裝置300中之本端記憶體系統至記憶體組構記憶體系統(例如,記憶體系統206/400),則在區塊510處,資料移動器引擎310可自伺服器裝置300(例如,由執行緒602a利用)中之本端記憶體系統讀取並複製該資料,且將該資料提供至記憶體組構管理子系統312,以供寫入至記憶體系統206/400(例如,由執行緒600a利用之第一執行緒記憶體空間604)。在另一實例中,若在決策區塊508處判定所請求之資料傳送係自記憶體組構記憶體系統(例如,記憶體系統206/400)至伺服器裝置300中之本端記憶體系統,則在區塊510處,資料移動器引擎310可經由記憶體系統206/400(例如,由執行緒602a利用之第二執行緒記憶體空間606)自記憶體組構管理子系統312請求且接收該資料,且自伺服器裝置300(例如,由執行緒600a利用)中之本端記憶體系
統寫入該資料。然而,儘管已提供一些實例,但熟習本發明所屬領域之技術者將認識到,可在區塊510處執行多種習知複製操作,同時亦保持在本發明之範圍內。
若在決策區塊508處判定所請求之資料傳送係在記憶體組構中之記憶體系統之各部分之間,則方法500進行至區塊512,其中資料移動器子系統修改標記參考資訊以使記憶體系統之第一部分與第一執行緒解除關聯,且使記憶體系統之第一部分與第二執行緒相關聯。舉例而言,若在決策區塊508處判定所請求之資料傳送係在分配給執行緒602a之第二執行緒記憶體空間606與分配給執行緒602a之第二執行緒記憶體空間606之間,則在區塊512處,資料移動器引擎310可操作以存取記憶體組構管理資料庫314且在記憶體組構管理資料庫314中執行標記參考資訊修改操作800,如圖8中所說明。在一實施例中,在區塊502處,可對與記憶體系統部分分配相關聯且儲存在記憶體組構管理資料庫314中之標記參考資訊執行標記參考資訊修改操作800,如上所述,該標記參考資訊可包括將執行緒600a映射至記憶體系統206/400中包括之一或多個記憶體裝置404中的第一執行緒記憶體空間604及將執行緒602a映射至記憶體系統206/400中包括之一或多個記憶體裝置404中的第二執行緒記憶體空間606的參考指標、為執行緒600a提供對記憶體系統206/400中包括之一或多個記憶體裝置404中之第一執行緒記憶體空間604之擁有權及為執行緒602a提供對記憶體系統206/400中包括之一或多個記憶體裝置404中之第二執行緒記憶體空間606之擁有權的頁擁有權資訊,及/或熟習本發明所屬領域之技術者將認識到的提供記憶體組構記憶體系統之各部分至執行緒之分配的任何其他標記參考資訊。
舉例而言,在區塊512處,對記憶體組構管理資料庫314中之標記參考資訊之修改可包括資料移動器引擎310使執行緒602a與其在區塊502處被分配的在記憶體系統206/400中包括之一或多個記憶體裝置404中的第二執行緒記
憶體空間606解除關聯,且使執行緒600a與記憶體系統206/400中包括之一或多個記憶體裝置404中之第二執行緒記憶體空間606相關聯。在一特定實例中,執行緒602a與第二執行緒記憶體空間606之解除關聯及執行緒600a與第二執行緒記憶體空間606之關聯可包括改變將執行緒602a映射至第二執行緒記憶體空間606之參考指標,使得該參考指標將執行緒600a映射至第二執行緒記憶體空間606,且改變為執行緒602a提供對第二執行緒記憶體空間606之擁有權的頁擁有權資訊,使得執行緒600a擁有第二執行緒記憶體空間606。然而,儘管已描述特定標記參考資訊修改操作,但熟習本發明所屬領域之技術者將認識到,第二執行緒記憶體空間606可以多種方式與執行緒602a解除關聯且與執行緒600a相關聯,其亦落入本發明之範圍內。
方法500進行至區塊514,其中資料移動器子系統修改標記參考資訊以使記憶體系統之第二部分與第二執行緒解除關聯,且使記憶體系統之第二部分與第一執行緒相關聯。繼續上文提供之實例,在區塊514處,對記憶體組構管理資料庫314中之標記參考資訊之修改可包括資料移動器引擎310使執行緒600a與其在區塊502處被分配的在記憶體系統206/400中包括之一或多個記憶體裝置404中的第一執行緒記憶體空間604解除關聯,且使執行緒602a與記憶體系統206/400中包括之一或多個記憶體裝置404中的第一執行緒記憶體空間604相關聯。在一特定實例中,執行緒600a與第一執行緒記憶體空間604之解除關聯及執行緒602a與第一執行緒記憶體空間604之關聯可包括改變將執行緒600a映射至第一執行緒記憶體空間604之參考指標,使得該參考指標將執行緒602a映射至第一執行緒記憶體空間604,及改變為執行緒600a提供對第一執行緒記憶體空間604之擁有權的頁擁有權資訊,使得執行緒602a擁有第一執行緒記憶體空間604。然而,儘管已描述特定標記參考資訊修改操作,但熟習本發明所屬領域之技術者將認識到,第一執行緒記憶體空間604可以多種方式與執行緒600a解除關聯且與
執行緒602a相關聯,其亦落入本發明之範圍內。
如熟習本發明所屬領域之技術者將瞭解,可在基本上同時及/或作為類似操作之部分來執行在區塊512及514處執行的標記參考資訊修改,使得在記憶體系統中的一或多個記憶體裝置404中之第一執行緒記憶體空間604與第二執行緒記憶體空間606使其分配(即,分別分配給執行緒600a及602a)「調換」,如圖9中說明(熟習本發明所屬領域之技術者將認識到,其完全係藉由修改記憶體組構管理資料庫314中之標記參考資訊來完成,且不需要在記憶體系統206/400內執行資料移動動作)。由此,區塊512及514可提供記憶體組構管理資料庫314中將執行緒600a映射至第一執行緒記憶體空間604的參考指標與將執行緒602a映射至第二執行緒記憶體空間606的參考指標之調換,使得執行緒600a映射至第二執行緒記憶體空間606,且執行緒602a映射至第一執行緒記憶體空間604,且可提供為執行緒600a提供對第一執行緒記憶體空間604之擁有權的頁擁有權資訊與為執行緒602a提供對第二執行緒記憶體空間606之擁有權的頁擁有權資訊之調換,使得執行緒600a擁有第二執行緒記憶體空間604,且執行緒602a擁有第一執行緒記憶體空間604。
在許多實施例中,被調換之記憶體系統206/400之部分可為記憶體系統206/400之大小相等之部分,以使得作為方法500之結果,將資料傳送至第二執行緒之第一執行緒不會丟失所分配之記憶體。由此,第一執行緒記憶體空間604之大小可等於第二執行緒記憶體空間606之大小,以使得執行緒602a不會在第二執行緒記憶體空間606中之資料「傳送」至執行緒600a時丟失所分配之記憶體。在一些實施例中,可選擇在方法500期間分配給提供至「傳送」資料的第一執行緒之第二執行緒的記憶體部分,以具有與分配給第一執行緒的在「傳送」之前儲存該資料的記憶體部分(例如,以上實例中之第二執行緒記憶體空間606)相同之大小。由此,可在方法500期間識別第一執行緒記憶體空間604以供重新
分配給執行緒602a,具體係基於其當前已分配給執行緒600a,且具有等於儲存由執行緒602a「傳送」的資料之第二執行緒記憶體空間606之大小。然而,儘管已描述具有相等大小之記憶體空間分配之調換的特定實例,但熟習本發明所屬領域之技術者將認識到,可調換不同大小之記憶體空間。此外,在一些實施例中,可跳過區塊514,使得第一執行緒(例如,在下文實例中之執行緒602a)作為標記參考資訊修改資料「傳送」之部分而最終失去所分配之記憶體。
方法500進行至區塊516,其中第二執行緒存取記憶體系統之第一部分中的資料。在一實施例中,在區塊516處,執行緒600a現在可經由例如請求/回應操作來存取第二執行緒記憶體空間606中之資料。圖10A說明執行緒600a產生且經由處理系統304中之記憶體組構邏輯子系統304a且經由資料移動器引擎310傳輸記憶體載入指令至記憶體組構管理子系統312,該記憶體載入指令請求由執行緒602a「傳送」資料,如上所述。接著,記憶體組構管理子系統312可充當記憶體組構請求器(例如,Gen-Z請求器),且利用記憶體組構管理資料庫314中之標記參考資訊來產生記憶體組構請求(例如,Gen-Z請求),該記憶體組構請求經由網路204傳輸至記憶體系統206。如圖10B及圖10C中所說明,記憶體組構管理子系統408可充當記憶體組構回應器(例如,Gen-Z回應器),且經由媒體控制器裝置406且自一或多個記憶體裝置404中之第二執行緒記憶體空間606擷取資料、產生記憶體組構回應(例如,Gen-Z回應)(該記憶體組構回應包括作為其有效載荷自第二執行緒記憶體空間606擷取之資料),且將該記憶體組構回應經由網路204傳輸至伺服器裝置300。圖10D說明記憶體組構管理子系統312可如何充當記憶體組構請求器以將自第二執行緒記憶體空間606擷取之資料載入(經由處理系統304中之資料移動器引擎310及記憶體組構邏輯子系統304a)至為虛擬機600提供且可被執行緒600a存取的本端記憶體系統中。然而,儘管已描述藉由第二執行緒存取記憶體系統之第一部分中的資料之特定實例,但熟習本發明所屬領域
之技術者將認識到,可經由本文中所述的標記參考資訊修改而傳送的資料可以多種方式存取,其亦將落入本發明之範圍內。
因此,已描述的系統及方法提供資料「傳送」,同時藉由在請求傳送該資料之執行緒與請求被傳送資料之執行緒之間改變記憶體組構中的記憶體系統部分之分配而避免了讀取、寫入、複製及/或執行實際上在記憶體組構位址空間之間移動資料之其他習知資料傳送操作的需要。由此,包括在由伺服器裝置中之處理系統所提供的第一虛擬機中之第一執行緒可請求將資料傳送至包括在由該伺服器裝置中之處理系統所提供的第二虛擬機中之第二執行緒,且資料移動器子系統可識別該資料傳送請求。作為回應,資料移動器子系統可修改資料庫中之標記參考資訊,以便調換分配給第一執行緒且儲存待傳送資料之記憶體組構記憶體系統之第一部分與分配給第二執行緒的記憶體組構記憶體系統的某一大小相等的部分,此允許第二執行緒使用請求/回應操作來參考記憶體組構記憶體系統之第一部分中的資料。由此,提供了更有效的基於裝置內記憶體組構之資料傳送,其消除了執行實際上在記憶體組構位址空間之間移動資料的習知資料傳送操作之需要,同時藉由重新分配記憶體組構之各部分的標記參考修改提供了此種資料移動之效果。
此外,本發明與以下美國專利申請案一起申請:美國專利申請案第16/395,902號,代理人檔案號為16356.2039US01,2019年4月26日提交且係針對基於控制器之裝置間標記資料移動技術;美國專利申請案第16/396,140號,代理人檔案號為16356.2041US01,2019年4月26日申請,且係針對基於開關之裝置間標記資料移動技術;該等美國專利申請案中之每一者包括利用標記資料移動系統之實施例,該等標記資料移動系統類似於在本發明中包括之一些實施例中描述的系統。熟習本發明所屬領域之技術者將認識到本發明之實施例可如何與以上論述之一些或全部公開案進行組合,且因此,此等公開案以全文引用之方
式併入本文中。
儘管已說明且描述了說明性實施例,但在前述揭示內容中設想了多種修改、改變及替換,且在一些情況下,可採用實施例之一些特徵而未相應地使用其他特徵。因此,可適當地廣義地且以與本文揭示之實施例之範圍一致之方式解釋所附申請專利範圍。
300:伺服器裝置
302:機櫃
304:處理系統
304a:記憶體組構邏輯子系統
306:處理系統
306a:記憶體組構邏輯子系統
308:處理系統
308a:記憶體組構邏輯子系統
310:資料移動器引擎
312:記憶體組構管理子系統
314:記憶體組構管理資料庫
600:虛擬機(VM)
600a:執行緒
602:虛擬機(VM)
602a:執行緒
Claims (11)
- 一種裝置內標記資料移動系統,該裝置內標記資料移動系統包括:一機櫃;至少一個處理系統,該至少一個處理系統係包括在該機櫃中且包括經組態以進行下列動作之至少一個處理器:提供一第一執行緒;及提供一第二執行緒,其與該第一執行緒同時並行地操作;一資料移動器子系統,該資料移動器子系統係包括在該機櫃中且耦合至該至少一個處理系統,其中該資料移動器子系統經組態以:在由該第一執行緒傳輸之一通信中,識別將資料傳送至與該第一執行緒同時並行地操作的該第二執行緒之一請求,其中該資料儲存在與一記憶體組構管理資料庫中之該第一執行緒相關聯的一記憶體系統之一第一部分中;在該記憶體組構管理資料庫中修改標記參考資訊,以便使該記憶體系統之該第一部分與該第一執行緒解除關聯,且使該記憶體系統之該第一部分與該第二執行緒相關聯,以滿足將該資料傳送至該第二執行緒之該請求,而無需從該記憶體系統之該第一部分移動該資料,其中該記憶體系統之該第一部分與該第二執行緒之該關聯允許該第二執行緒使用請求/回應操作來參考儲存在該記憶體系統之該第一部分中的該資料;且在該記憶體組構管理資料庫中修改該標記參考資訊,以便使該記憶體系統之一第二部分與該第二執行緒解除關聯,且使該記憶體系統之該第二部分與該第一執行緒相關聯,其中該記憶體系統之該第一部分與該第一執行緒之該解除關聯、該記憶體系統之該第一部分與該第二執行緒之該關聯、該記憶體系統之該第二部分與該 第二執行緒之該解除關聯及該記憶體系統之該第二部分與該第一執行緒之該關聯包括下列中之一者:調換將該第一執行緒映射至該記憶體系統之該第一部分的參考指標與將該第二執行緒映射至該記憶體系統之該第二部分的參考指標,或調換為該第一執行緒提供對該記憶體系統之該第一部分之擁有權的頁擁有權與為該第二執行緒提供對該記憶體系統之該第二部分之擁有權的頁擁有權,使得該第二執行緒擁有該記憶體系統之該第一部分,且該第一執行緒擁有該記憶體系統之該第二部分。
- 如請求項1之系統,其中該記憶體系統之該第一部分與該記憶體系統之該第二部分具有相同之大小。
- 如請求項1之系統,其中該記憶體系統經由一網路耦合至該機櫃。
- 一種資訊處置系統(IHS),該資訊處置系統包括:一處理系統;及一記憶體系統,該記憶體系統耦合至該處理系統且包括指令,該等指令在由該處理系統執行時使該處理系統提供一資料移動器引擎,該資料移動器引擎經組態以:在由包括在一機櫃中之至少一個處理系統提供之一第一執行緒傳輸的一通信中,識別將資料傳送至由包括在該機櫃中且與該第一執行緒同時並行地操作之該至少一個處理系統提供之一第二執行緒的一請求,其中該資料儲存在與一記憶體組構管理資料庫中之該第一執行緒相關聯的一記憶體系統之一第一部分中;在該記憶體組構管理資料庫中修改標記參考資訊,以便使該記憶體系統之該第一部分與該第一執行緒解除關聯,且使該記憶體系統之該第一部分與該第 二執行緒相關聯,以滿足將該資料傳送至該第二執行緒之該請求,而無需從該記憶體系統之該第一部分移動該資料,其中該記憶體系統之該第一部分與該第二執行緒之該關聯允許該第二執行緒使用請求/回應操作來參考儲存在該記憶體系統之該第一部分中的該資料;且在該記憶體組構管理資料庫中修改該標記參考資訊,以便使該記憶體系統之一第二部分與該第二執行緒解除關聯,且使該記憶體系統之該第二部分與該第一執行緒相關聯,其中該記憶體系統之該第一部分與該第一執行緒之該解除關聯、該記憶體系統之該第一部分與該第二執行緒之該關聯、該記憶體系統之該第二部分與該第二執行緒之該解除關聯及該記憶體系統之該第二部分與該第一執行緒之該關聯包括下列中之一者:調換將該第一執行緒映射至該記憶體系統之該第一部分的參考指標與將該第二執行緒映射至該記憶體系統之該第二部分的參考指標,或調換為該第一執行緒提供對該記憶體系統之該第一部分之擁有權的頁擁有權與為該第二執行緒提供對該記憶體系統之該第二部分之擁有權的頁擁有權,使得該第二執行緒擁有該記憶體系統之該第一部分,且該第一執行緒擁有該記憶體系統之該第二部分。
- 如請求項4之IHS,其中該記憶體系統之該第一部分與該記憶體系統之該第二部分具有相同之大小。
- 如請求項4之IHS,其中該記憶體系統經由一網路耦合至該機櫃。
- 如請求項4之IHS,其中該資料移動器子系統經組態以:判定將資料傳送至該第二執行緒之該請求為將該資料自一第一記憶體組構位置傳送至一第二記憶體組構位置之一請求,且作為回應,修改該記憶體組構 管理資料庫中之該標記參考資訊。
- 一種用於提供裝置內標記資料移動之方法,該方法包括:由一資料移動器子系統在由包括在一機櫃中之至少一個處理系統提供之一第一執行緒傳輸的一通信中識別將資料傳送至由包括在一機櫃中且與該第一執行緒同時並行地操作之該至少一個處理系統提供之該第二執行緒的一請求,其中該資料儲存在與一記憶體組構管理資料庫中之該第一執行緒相關聯的一記憶體系統之一第一部分中;由該資料移動器子系統在該記憶體組構管理資料庫中修改標記參考資訊,以便使該記憶體系統之該第一部分與該第一執行緒解除關聯,且使該記憶體系統之該第一部分與該第二執行緒相關聯,以滿足將該資料傳送至該第二執行緒之該請求,而無需從該記憶體系統之該第一部分移動該資料,其中該記憶體系統之該第一部分與該第二執行緒之該關聯允許該第二執行緒使用請求/回應操作來參考儲存在該記憶體系統之該第一部分中的該資料;且由該資料移動器子系統在該記憶體組構管理資料庫中修改該標記參考資訊,以便使該記憶體系統之一第二部分與該第二執行緒解除關聯,且使該記憶體系統之該第二部分與該第一執行緒相關聯,其中該記憶體系統之該第一部分與該第一執行緒之該解除關聯、該記憶體系統之該第一部分與該第二執行緒之該關聯、該記憶體系統之該第二部分與該第二執行緒之該解除關聯及該記憶體系統之該第二部分與該第一執行緒之該關聯包括下列中之至少一者:調換將該第一執行緒映射至該記憶體系統之該第一部分的參考指標與將該第二執行緒映射至該記憶體系統之該第二部分的參考指標,或調換為該第一執行緒提供對該記憶體系統之該第一部分之擁有權的頁擁有權與為該第二執行緒提供對該記憶體系統之該第二部分之擁有權的頁擁有權, 使得該第二執行緒擁有該記憶體系統之該第一部分,且該第一執行緒擁有該記憶體系統之該第二部分。
- 如請求項8之方法,其中該記憶體系統之該第一部分與該記憶體系統之該第二部分具有相同之大小。
- 如請求項8之方法,其中該記憶體系統經由一網路耦合至該機櫃。
- 如請求項8之方法,該方法進一步包括:由該資料移動器子系統判定將資料傳送至該第二執行緒之該請求為將該資料自一第一記憶體組構位置傳送至一第二記憶體組構位置之一請求,且作為回應,修改該記憶體組構管理資料庫中之該標記參考資訊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/396,433 US11157191B2 (en) | 2019-04-26 | 2019-04-26 | Intra-device notational data movement system |
US16/396,433 | 2019-04-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202111541A TW202111541A (zh) | 2021-03-16 |
TWI785320B true TWI785320B (zh) | 2022-12-01 |
Family
ID=70968984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109111025A TWI785320B (zh) | 2019-04-26 | 2020-03-31 | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11157191B2 (zh) |
EP (1) | EP3959611B1 (zh) |
CN (1) | CN113678104A (zh) |
TW (1) | TWI785320B (zh) |
WO (1) | WO2020219810A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263019B2 (en) * | 2019-07-24 | 2022-03-01 | Vmware, Inc. | Method for converting device tree data into ACPI data for edge device operating in a network |
US12026393B2 (en) * | 2020-12-17 | 2024-07-02 | Electronics And Telecommunications Research Institute | Apparatus and method for selecting storage location based on data usage |
US11860783B2 (en) * | 2022-03-11 | 2024-01-02 | Microsoft Technology Licensing, Llc | Direct swap caching with noisy neighbor mitigation and dynamic address range assignment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217075A1 (en) * | 2002-05-16 | 2003-11-20 | Hitachi, Ltd. | Method for reserving pages of database |
US20060026380A1 (en) * | 2004-07-27 | 2006-02-02 | Fujitsu Limited | Apparatus and method for controlling address conversion buffer |
US20100241786A1 (en) * | 2009-03-19 | 2010-09-23 | Samsung Electronics, Co., Ltd. | Apparatus and method for optimized NAND flash memory management for devices with limited resources |
TW201535314A (zh) * | 2014-03-14 | 2015-09-16 | Intel Corp | 在圖形處理器中的連通物件標記技術 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884040A (en) | 1995-01-11 | 1999-03-16 | Sony Corporation | Per-packet jamming in a multi-port bridge for a local area network |
JPH10512074A (ja) * | 1995-02-13 | 1998-11-17 | インタートラスト テクノロジーズ コーポレイション | 安全な取引管理および電子権利保護のためのシステムおよび方法 |
EP0813710B1 (en) * | 1996-01-09 | 2001-08-22 | Koninklijke Philips Electronics N.V. | A method and system for synchronizing concurrent sequential processes by means of intra-process update operations and inter-process adapt operations |
US6349355B1 (en) * | 1997-02-06 | 2002-02-19 | Microsoft Corporation | Sharing executable modules between user and kernel threads |
US7856636B2 (en) * | 2005-05-10 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Systems and methods of sharing processing resources in a multi-threading environment |
US7685330B2 (en) | 2006-03-09 | 2010-03-23 | International Business Machines Corporation | Method for efficient determination of memory copy versus registration in direct access environments |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US8495435B2 (en) * | 2010-09-22 | 2013-07-23 | Intel Corporation | Dynamic physical memory replacement through address swapping |
US8769549B2 (en) | 2012-04-30 | 2014-07-01 | National Instruments Corporation | Graphical programming system enabling data sharing from a producer to a consumer via a memory buffer |
US9292380B2 (en) * | 2014-04-06 | 2016-03-22 | Freescale Semiconductor,Inc. | Memory access scheme for system on chip |
US10754796B2 (en) * | 2018-08-29 | 2020-08-25 | Red Hat, Inc. | Efficient user space driver isolation by CPU page table switching |
US11010084B2 (en) * | 2019-05-03 | 2021-05-18 | Dell Products L.P. | Virtual machine migration system |
-
2019
- 2019-04-26 US US16/396,433 patent/US11157191B2/en active Active
-
2020
- 2020-03-31 TW TW109111025A patent/TWI785320B/zh active
- 2020-04-24 EP EP20730130.0A patent/EP3959611B1/en active Active
- 2020-04-24 WO PCT/US2020/029720 patent/WO2020219810A1/en unknown
- 2020-04-24 CN CN202080027910.2A patent/CN113678104A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217075A1 (en) * | 2002-05-16 | 2003-11-20 | Hitachi, Ltd. | Method for reserving pages of database |
US20060026380A1 (en) * | 2004-07-27 | 2006-02-02 | Fujitsu Limited | Apparatus and method for controlling address conversion buffer |
US20100241786A1 (en) * | 2009-03-19 | 2010-09-23 | Samsung Electronics, Co., Ltd. | Apparatus and method for optimized NAND flash memory management for devices with limited resources |
TW201535314A (zh) * | 2014-03-14 | 2015-09-16 | Intel Corp | 在圖形處理器中的連通物件標記技術 |
Also Published As
Publication number | Publication date |
---|---|
US20200341673A1 (en) | 2020-10-29 |
TW202111541A (zh) | 2021-03-16 |
US11157191B2 (en) | 2021-10-26 |
CN113678104A (zh) | 2021-11-19 |
EP3959611B1 (en) | 2025-03-05 |
EP3959611A1 (en) | 2022-03-02 |
WO2020219810A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324832B2 (en) | Address based multi-stream storage device access | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
JP5348429B2 (ja) | 持続性メモリのためのキャッシュコヒーレンスプロトコル | |
US10824574B2 (en) | Multi-port storage device multi-socket memory access system | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
US20240264768A1 (en) | Request Processing Method, Apparatus, and System | |
US11010084B2 (en) | Virtual machine migration system | |
US9448934B2 (en) | Affinity group access to global data | |
CN110892381A (zh) | 用于在数据处理系统中进行快速上下文克隆的方法和装置 | |
CN107203411A (zh) | 一种基于远程ssd的虚拟机内存扩展方法及系统 | |
TW201432454A (zh) | 針對大型共享位址空間之映射機構 | |
JP2024512087A (ja) | 階層型メモリ管理をオフロードするための方法及び装置 | |
CN113010452B (zh) | 一种高效且支持QoS的虚拟内存架构 | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
JP2021536643A (ja) | ハイブリッドメモリシステムインタフェース | |
CN117632778A (zh) | 电子装置和操作电子装置的方法 | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US11106543B2 (en) | Application image cloning system | |
US11003378B2 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
KR102544401B1 (ko) | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 | |
US20240231615A1 (en) | Apparatus and method for sanitizing a shared memory device or a memory expander | |
US9298622B2 (en) | Affinity group access to global data | |
CN116204452A (zh) | 地址转换高速缓存以及包括地址转换高速缓存的系统 |