TW202344978A - 用於管理裝置記憶體的裝置 - Google Patents
用於管理裝置記憶體的裝置 Download PDFInfo
- Publication number
- TW202344978A TW202344978A TW112116726A TW112116726A TW202344978A TW 202344978 A TW202344978 A TW 202344978A TW 112116726 A TW112116726 A TW 112116726A TW 112116726 A TW112116726 A TW 112116726A TW 202344978 A TW202344978 A TW 202344978A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- program
- computing
- namespace
- functional circuitry
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 380
- 238000004891 communication Methods 0.000 claims description 43
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 description 67
- 238000000034 method Methods 0.000 description 51
- 230000007246 mechanism Effects 0.000 description 46
- 238000007726 management method Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 13
- 230000008901 benefit Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 208000036142 Viral infection Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
-
- 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/0658—Controller construction 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/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
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)
- Storage Device Security (AREA)
Abstract
本發明提供一種裝置,可包含:裝置記憶體;及裝置功能性電路,其中裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分;以及控制電路,經組態以提供資訊,其中資訊可指示裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分。另外或替代地,控制電路可經組態以接收至少一個請求,及基於至少一個請求執行組態操作,其中組態操作可包含將裝置記憶體的至少一部分組態為由元件功能性電路的至少一部分存取。
Description
本揭露內容大體上是關於裝置,且更特定言之,是關於用於管理裝置記憶體及程式的系統、方法以及設備。
[相關申請案的交叉參考]
本申請案主張2022年5月8日申請的美國臨時專利申請案序列號63/339,506的優先權及權益,所述美國臨時專利申請案以引用的方式併入。
諸如加速器、儲存裝置及/或類似物的裝置可針對諸如主機的另一設備執行一或多個操作。舉例而言,加速器可使用由主機提供的資料來執行計算。作為另一實例,儲存裝置可儲存由主機提供的資料。諸如加速器、儲存裝置及/或類似物的裝置可使用裝置記憶體來實施一或多個操作。
此背景技術章節中所揭露的上述資訊僅用於增強對本發明原理的背景的理解,且因此其可能含有不構成先前技術的資訊。
一種裝置可包含:裝置記憶體;及裝置功能性電路,其中裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分;以及控制電路,經組態以提供資訊,其中資訊指示裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分。資訊可進一步指示裝置記憶體的至少一部分的特性。裝置可更包含通信介面,其中控制電路可經組態以使用通信介面提供資訊。控制電路可經組態以使用通信介面接收請求,且基於所述請求而提供資訊。裝置記憶體的部分可為裝置記憶體的第一部分,且資訊可指示裝置功能性電路的至少一部分可能夠存取裝置記憶體的第二部分。裝置功能性電路的部分可為裝置功能性電路的第一部分,且資訊可指示裝置功能性電路的第二部分可能夠存取裝置記憶體的至少一部分。裝置功能性電路的至少一部分的第一部分可經組態為第一名稱空間,且裝置記憶體的至少一部分的第二部分可經組態為第二名稱空間。
一種裝置可包含:裝置記憶體;及裝置功能性電路,其中裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分;以及控制電路,經組態以接收至少一個請求,及基於至少一個請求執行組態操作,其中組態操作可包含將裝置記憶體的至少一部分組態為由裝置功能性電路的至少一部分存取。組態操作可包含接收組態資訊,及將組態資訊提供至與裝置功能性電路的至少一部分相關聯的記憶體控制設備。組態操作可包含將裝置記憶體的至少一部分分配至裝置功能性電路的至少一部分。裝置可更包含通信介面,其中控制電路可經組態以使用通信介面接收請求。裝置記憶體的部分可為裝置記憶體的第一部分,且控制電路可經組態以基於至少一個請求而將裝置記憶體的第二部分組態為由裝置功能性電路的至少一部分存取。裝置功能性電路的部分可為裝置功能性電路的第一部分,且控制電路可經組態以基於至少一個請求而將裝置記憶體的至少一部分組態為由裝置功能性電路的第二部分存取。裝置功能性電路的至少一部分的第一部分可經組態為第一名稱空間,且裝置記憶體的至少一部分的第二部分可經組態為第二名稱空間。裝置功能性電路的部分可包含計算引擎及經組態以使用計算引擎的程式。
裝置可包含至少一個計算資源,及控制電路,其經組態以接收程式、使程式與至少一個計算資源的第一計算名稱空間相關聯及使程式與至少一個計算資源的第二計算名稱空間相關聯。裝置可更包含通信介面,其中控制電路可經組態以使用通信介面接收程式。控制電路可經組態以使用通信介面提供關於程式的資訊。控制電路可經組態以將至少一個計算資源的至少第一部分組態為第一計算名稱空間,且將至少一個計算資源的至少第二部分組態為第二計算名稱空間。控制電路可經組態以接收命令,且基於所述命令接收程式。
一種方法可包含:在裝置處接收對資訊的請求,其中裝置包含裝置記憶體及裝置功能性電路,及基於所述請求提供資訊,其中資訊指示裝置功能性電路的至少一部分可能夠存取裝置記憶體的至少一部分。資訊可進一步指示裝置記憶體的至少一部分的特性。裝置可更包含通信介面,且提供可至少部分地使用通信介面來執行。接收可至少部分地使用通信介面來執行。裝置記憶體的至少一部分可包含裝置記憶體的第一部分,且其中資訊可指示裝置功能性電路的至少一部分可能夠存取裝置記憶體的第二部分。裝置功能性電路的至少一部分可包含裝置功能性電路的第一部分,且其中資訊可指示裝置功能性電路的第二部分可能夠存取裝置記憶體的至少一部分。裝置功能性電路的至少一部分的第一部分可經組態為第一名稱空間,且裝置記憶體的至少一部分的第二部分可經組態為第二名稱空間。
一種方法可包含:在裝置處接收至少一個請求,其中裝置可包含裝置記憶體及裝置功能性電路,及基於至少一個請求而執行組態操作,其中組態操作可包含將裝置記憶體的至少一部分組態為由裝置功能性電路的至少一部分存取。組態操作可包含在裝置處接收組態資訊,及將組態資訊提供至與裝置功能性電路的至少一部分相關聯的記憶體控制設備。組態操作可包含將裝置記憶體的至少一部分分配至裝置功能性電路的至少一部分。裝置可更包含通信介面,且至少一個請求可至少部分地使用所述通信介面來接收。裝置記憶體的部分可為裝置記憶體的第一部分,且方法可更包含基於至少一個請求而將裝置記憶體的第二部分組態為由裝置功能性電路的至少一部分存取。裝置功能性電路的部分可為裝置功能性電路的第一部分,且方法可更包含基於至少一個請求而將裝置記憶體的至少一部分組態為由裝置功能性電路的第二部分存取。裝置功能性電路的至少一部分的第一部分可經組態為第一名稱空間,且裝置記憶體的至少一部分的第二部分可經組態為第二名稱空間。裝置功能性電路的部分可包含計算引擎及經組態以使用計算引擎的程式。
一種方法可包含:在裝置處接收程式,其中裝置可包含至少一個計算資源,及使程式與至少一個計算資源的第一計算名稱空間相關聯且使程式與至少一個計算資源的第二計算名稱空間相關聯。裝置可更包含通信介面,且程式可至少部分地使用所述通信介面來接收。方法可更包含使用通信介面提供關於程式的資訊。方法可更包含將至少一個計算資源的至少第一部分組態為第一計算名稱空間,且將至少一個計算資源的至少第二部分組態為第二計算名稱空間。方法可更包含在裝置處接收命令,且接收程式可基於所述命令。
諸如加速器、儲存裝置及/或類似物的裝置可使用裝置記憶體來執行一或多個操作。舉例而言,加速器可使用裝置記憶體來儲存輸入及/或輸出資料以供計算。作為另一實例,儲存裝置可使用裝置記憶體作為用於可儲存於儲存媒體中的資料的快取記憶體。
本揭露內容的一些本發明原理是關於裝置記憶體的管理。舉例而言,裝置可實施可使得裝置能夠提供關於裝置記憶體的資訊(例如,至諸如主機的設備)的探索機制。另外或替代地,裝置可實施可使得裝置記憶體能夠基於由裝置(例如使用探索機制)提供的記憶體資訊而被管理(例如,藉由諸如主機的設備)的管理機制。
在一些實施例中,探索機制可實施提供關於裝置記憶體的資訊的一或多個請求。舉例而言,裝置可接收請求關於裝置記憶體的資訊的請求(例如,來自諸如主機的設備的探索命令)。裝置可藉由返回裝置記憶體資源的清單、可包含關於裝置記憶體資源的資訊的日誌頁及/或類似者而對請求作出回應。資訊可包含可能夠存取裝置記憶體的一或多個部分的裝置功能性的一或多個部分的一或多個指示。另外或替代地,資訊可包含裝置記憶體的一或多個部分的一或多個特性(例如,類型、量、配置、存取特性、效能特性及/或類似者)的指示。
在一些實施例中,裝置記憶體可藉由將裝置記憶體的一或多個部分組態為由裝置功能性的一或多個部分存取而管理。舉例而言,在具有計算資源的裝置中,管理機制可使得主機能夠將裝置記憶體的一或多個第一部分組態為由第一計算資源存取及將裝置記憶體的一或多個第二部分組態為由第二計算資源存取。
在一些實施例中,對裝置記憶體的一或多個部分的存取可經受各種限制、權限、實體及/或邏輯連接、局部性及/或類似者。舉例而言,某一裝置記憶體可與特定計算資源(例如,場可程式化閘陣列(field programmable gate array;FPGA)、特殊應用電路(ASIC)及/或類似者)成一體且僅可由其存取,而某一裝置記憶體可更廣泛地存取(例如,對於裝置功能性的任何一或多個部分)。
在一些實施例中,裝置資源的一或多個部分可使用一或多個名稱空間來組態。舉例而言,裝置記憶體資源、裝置計算資源及/或裝置儲存資源的一或多個部分可分別經組態為一或多個記憶體名稱空間、計算名稱空間及/或儲存名稱空間。
本揭露內容的發明原理中的一些是關於在計算裝置處接收可由多個計算資源存取的計算裝置程式。舉例而言,可將計算裝置程式下載(例如,自諸如主機的設備)至計算裝置。經下載計算裝置程式可例如儲存於儲存庫(例如,可至少部分地為公用的、全局的及/或類似者的儲存庫)中,所述儲存庫可由經組態為第一計算名稱空間的一或多個第一計算資源及經組態為第二計算名稱空間的一或多個第二計算資源存取。
在一些實施例中,裝置可使得計算裝置程式能夠使用命令機制經下載、探索、啟動及/或類似者(例如,藉由諸如主機的設備)。在一些實施例中,裝置可使得能夠組態經下載計算裝置程式的可視性及/或可存取性。舉例而言,諸如主機的設備可組態經下載計算裝置程式以呈現為原生計算程式(例如,至少部分地具有公用的、全局的及/或類似者可存取性)。另外或替代地,經下載計算裝置程式可經組態以具有受限存取(例如,藉由一或多個特定計算資源)。
本揭露內容涵蓋與裝置記憶體及/或程式的管理相關的眾多發明原理。本文中所揭露的原理可具有獨立效用,且可單獨地實施,且並非每一實施例皆可利用每一原理。此外,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式擴增個別原理的一些益處。
出於說明的目的,可在計算裝置(例如,計算儲存裝置)及/或計算資源的上下文中描述一些實施例。然而,原理可應用於可利用裝置記憶體及/或在裝置處接收的程式的任何裝置及/或裝置功能性。
圖1示出根據本揭露內容的示例性實施例的具有裝置記憶體的裝置的實施例。圖1中所示出的裝置102可包含裝置功能性設備104(其亦可被稱為裝置功能性、裝置功能性資源或功能性資源)、裝置記憶體106(其亦可被稱為裝置記憶體資源或記憶體資源)、一或多個控制器110(其可個別地及/或共同地被稱為控制器)及/或一或多個通信介面112(其可個別地及/或共同地被稱為通信介面)。
裝置功能性104可包含可使得裝置102能夠執行裝置的一或多個功能(例如,主要功能)的任何類型的資源(例如,硬體及/或軟體)。舉例而言,若裝置102至少部分地實施為儲存裝置,則裝置功能性104可包含任何類型的非揮發性儲存媒體、媒體轉譯層、一或多個頻道控制器及/或類似者。儲存媒體的實例可包含固態媒體、磁性媒體、光學媒體及/或類似者,或其組合。舉例而言,儲存裝置可實施為具有反及(NAND)快閃記憶體及實施為快閃轉譯層(flash translation layer;FTL)的媒體轉譯層的SSD。固態媒體的其他實例可包含持續記憶體,諸如交叉網格的非揮發性記憶體、具有體電阻變化的記憶體、相變記憶體(phase change memory;PCM)及/或類似者,或其任何組合。
作為另一實例,若裝置102至少部分地實施為計算裝置(例如,加速器、計算儲存裝置及/或類似者),則裝置功能性104可包含任何類型的硬體及/或軟體計算資源,諸如一或多個計算引擎、一或多個程式及/或類似者。
計算引擎的實例可包含複雜可程式化邏輯裝置(complex programmable logic device;CPLD)、場可程式化閘陣列(FPGA)、特定應用積體電路application specific integrated circuit;ASIC)、包含諸如x86處理器的複雜指令集電腦(complex instruction set computer;CISC)處理器及/或諸如ARM處理器的精簡指令集電腦(reduced instruction set computer;RISC)處理器的中央處理單元(central processing unit;CPU)、圖形處理單元(graphics processing unit;GPU)、資料處理單元(data processing unit;DPU)、神經處理單元(neural processing unit;NPU)、張量處理單元(tensor processing unit;TPU)及/或類似者,其可實行儲存於任何類型的記憶體中的指令及/或實施任何類型的執行環境,諸如容器、虛擬機、諸如Linux的作業系統、經擴展伯克利封包過濾器(Extended Berkeley Packet Filter;eBPF)環境及/或類似者,或其組合。在一些實施例中,計算引擎可包含組合邏輯、順序邏輯、一或多個計時器、計數器、暫存器及/或狀態機,及/或類似者。在一些實施例中,計算資源中的一些或全部可實施為系統單晶片(system-on-chip;SOC)。
程式的實例可包含可由一或多個計算資源執行的任何類型的指令,諸如演算法、資料移動、資料管理、資料選擇、濾波、加密及/或解密、壓縮及/或解壓縮、編碼及/或解碼(例如,抹除寫碼)、校驗和計算、雜湊值計算、循環冗餘檢查(cyclic redundancy check;CRC)及/或類似者。在一些實施例中,程式可使用儲存於裝置記憶體106中的資料、串流至程式的資料及/或類似者來執行操作。
作為另一實例,若裝置102至少部分地實施為通信裝置,諸如網路介面卡(network interface card;NIC)、無線存取點(access point;AP)、無線電台(STA)、無線基地台、無線使用者設備(user equipment;UE)及或類似物,則裝置功能性104可包含用以接收及/或傳輸有線及/或無線(例如,RF)信號的一或多個組件,諸如放大器、濾波器、調變器及/或解調器、A/D及/或DA轉換器、天線、開關、移相器、偵測器、耦合器、導體、傳輸線、數據機、網路介面、實體層(physical layer;PHY)、媒體存取控制層(medium access control layer;MAC)及/或類似者。
裝置記憶體106可包含可具有諸如記憶體類型、頻寬、容量、潛時、存取粒度、寫入耐久性、功率消耗及/或類似者的廣泛多種特性的一或多個揮發性及/或非揮發性(例如,持續)記憶體資源。揮發性記憶體的實例可包含動態隨機存取記憶體(dynamic random access memory;DRAM)、靜態隨機存取記憶體(static random access memory;SRAM)及/或類似者。非揮發性記憶體的實例可包含NAND快閃記憶體、交叉網格的非揮發性記憶體、具有體電阻變化的記憶體、PCM、磁阻性隨機存取記憶體(magnetoresistive random-access memory;MRAM)、電阻性隨機存取記憶體(resistive random-access memory;ReRAM)及/或類似者。
在一些實施例中,裝置記憶體的一或多個部分可經組態為一或多個記憶體名稱空間。在一些實施例中,記憶體名稱空間可指記憶體胞元、線、行、位元組、字、頁面、區塊及/或類似者的一或多個位址、位址範圍及/或類似者的集合。
在一些實施例中,對裝置記憶體的一或多個部分的存取可經受各種限制、權限、實體及/或邏輯連接、局部性及/或類似者。舉例而言,某一裝置記憶體可與特定計算資源(例如,FPGA、ASIC及/或類似者)成一體且僅可由其存取,而某一裝置記憶體可更廣泛地存取(例如,對於裝置功能性的任何一或多個部分)。
裝置記憶體106可以任何實體配置實施,所述實體配置包含嵌入於諸如FPGA、ASIC及/或類似者的一或多個其他組件中的單列直插記憶體模組(single inline memory module;SIMM)、雙列直插記憶體模組(dual inline memory module;DIMM)、個別記憶體裝置(例如,積體電路(IC))、記憶體裝置的堆疊。裝置記憶體106可定位於裝置102中、裝置102上、裝置102處及/或裝置102附近。舉例而言,裝置記憶體106的一或多個部分可附接至(例如,焊接、使用連接器連接及/或類似者)至電路板,所述電路板可用於實施裝置102、附接至裝置102,及/或以可藉由裝置102實現控制及/或存取的方式定位成鄰近於或接近裝置102,例如在記憶體緩衝器、快取記憶體及/或類似者中,其可使用諸如CXL.cache、CXL.io、CXL.mem及/或類似者的介面及/或協定(例如,相干介面及/或協定)由裝置102存取。
儘管裝置功能性104及裝置記憶體106可示出為分開的組件,但在一些實施例中,裝置功能性104的一或多個部分及裝置記憶體106的一或多個部分可交疊。舉例而言,裝置記憶體106的一或多個部分可至少部分地位於裝置功能性104的一或多個部分內(例如,FPGA或ASIC可包含局部DRAM)。類似地,正當某一局部記憶體可定位於計算引擎內(且可能僅可由計算引擎存取)時,一或多個計算資源104可定位於裝置記憶體106的一或多個部分內。舉例而言,在一些實施例中,記憶體裝置或記憶體裝置的堆疊可包含記憶體內處理(processing in memory;PIM)硬體,所述硬體可定位於記憶體裝置或記憶體裝置的堆疊內(且可能僅能夠存取記憶體裝置或記憶體裝置的堆疊)。
控制器110可包含可控制裝置102的一或多個部分的一或多個操作的任何類型的資源(例如,硬體及/或軟體)。舉例而言,控制器110可包含一或多個處理器、狀態機、組合邏輯、順序邏輯、CPLD、FPGA、ASIC、專用邏輯及/或類似者。在一些實施例中,若裝置102至少部分地實施為儲存裝置,則一或多個控制器110可包含一或多個FTL、頻道控制器、非揮發性記憶體高速(Nonvolatile Memory;NVMe)控制器、周邊組件高速互連(Peripheral Component Interconnect Express;PCIe)控制器、計算高速鏈接(Compute Express Link;CXL)控制器及/或類似者,或其組合。在一些實施例中,若裝置102至少部分地實施為通信裝置,則一或多個控制器110可包含一或多個MAC控制器。
通信介面112可藉由任何類型的有線及/或無線通信媒體、介面、網路、互連件、協定及/或類似者實施,包含PCIe、NVMe、網狀架構上的NVMe(NVMe over Fabric;NVMe-oF)、CXL及/或相干協定(諸如CXL.mem、CXL.cache、CXL.IO及/或類似者)、Gen-Z、開放相干加速器處理器介面(Open Coherent Accelerator Processor Interface;OpenCAPI)、用於加速器的快取相干互連(Cache Coherent Interconnect for Accelerators;CCIX)及/或類似者,高級可擴展介面(Advanced eXtensible Interface;AXI)、直接記憶體存取(Direct Memory Access;DMA)遠端DMA(RDMA)、彙聚乙太網路上的RDMA(RDMA over Converged Ethernet;ROCE)、高級訊息佇列協定(Advanced Message Queuing Protocol;AMQP)、乙太網路、傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol;TCP/IP)FibreChannel、InfiniBand、串列ATA(SATA)、小型電腦系統介面(Small Computer Systems Interface;SCSI)、串列附接SCSI(SAS)、iWARP、包含2G、3G、4G、5G、6G及/或類似者的任一代無線網路、任一代Wi-Fi、藍牙、近場通信(near-field communication;NFC)及/或類似者,或其任何組合。
裝置102可藉由任何實體外觀尺寸實施。外觀尺寸的實例可包含3.5吋儲存裝置外觀尺寸、2.5吋儲存裝置外觀尺寸、1.8吋儲存裝置外觀尺寸、M.2裝置外觀尺寸、企業及資料中心標準外觀尺寸(Enterprise and Data Center Standard Form Factor;EDSFF)(其可包含例如E1.S、E1.L、E3.S、E3.L、E3.S 2T、E3.L 2T及/或類似者)、附加卡(add-in card;AIC)(例如,PCIe卡(例如PCIe擴充卡)外觀尺寸,包含半高(HH)、半長(HL)、半高半長(HHHL)及/或類似者)、下一代小外觀尺寸(Next - generation Small Form Factor;NGSFF)、NF1外觀尺寸、CF卡(compact flash;CF)外觀尺寸、安全數位(secure digital;SD)卡外觀尺寸、個人電腦記憶體卡國際協會(Personal Computer Memory Card International Association;PCMCIA)裝置外觀尺寸及/或類似者,或其組合。
在一些實施例中,本文中所揭露的裝置中的任一者可使用一或多個連接器連接至系統,所述連接器諸如SATA連接器、SCSI連接器、SAS連接器、M.2連接器、EDSFF連接器(例如,1C、2C、4C、4C+及/或類似者)、U.2連接器(其亦可被稱為SSD外觀尺寸(SSF)SFF-8639連接器)、U.3連接器、PCIe連接器(例如,卡緣連接器)及/或類似者。
在一些實施例中,本文中所揭露的裝置中的任一者可完全或部分地與下述者一起實施及/或與下述者結合使用:伺服器底盤、伺服器機架、資料機房、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合。
圖2示出根據本揭露內容的示例性實施例的具有名稱空間的計算儲存裝置的實施例。圖2中所示出的裝置202可用於例如實施圖1中所示出的裝置102。裝置202可包含與圖1中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。然而,在圖2中所示出的裝置202中,裝置功能性的一或多個部分可實施為計算引擎211及/或程式207,且裝置功能性的一或多個部分可實施為儲存媒體213。
在圖2中所示出的裝置202中,裝置資源的一或多個部分可經組態為一或多個名稱空間。舉例而言,裝置記憶體資源、裝置計算資源及/或裝置儲存資源的一或多個部分可分別經組態為一或多個記憶體名稱空間、計算名稱空間及/或儲存名稱空間。
在一些實施例中,名稱空間可指一或多個資源的集合。在一些實施例中,經組態為名稱空間的一或多個資源的集合可至少部分地與經組態為其他名稱空間的資源的其他集合隔離。在一些實施例中,名稱空間可在名稱空間及/或可經組態為名稱空間的資源之間提供邏輯及/或實體隔離。在一些實施例中,名稱空間可指示可作為單元例如藉由諸如主機的設備存取的一或多個資源的集合。
在一些實施例中,名稱空間可經組態、處置及/或類似者為虛擬構造(例如,虛擬名稱空間)。取決於實施細節,此可使得名稱空間(例如,計算名稱空間)能夠(例如,直接)映射至諸如虛擬機(VM)的虛擬環境中。在一些實施例中,虛擬機可控制程式至與虛擬機相關聯的計算名稱空間中的載入(例如,下載)。此可與將諸如超管理器的中心實體用於載入程式形成對比。取決於實施細節,使得虛擬機可控制載入程式可提供靈活性,例如以移除載入程式(例如,當虛擬機終止關閉時)。
在儲存資源的上下文中,名稱空間可指一或多個邏輯區塊位址(logical block addresses;LBA)的集合。LBA可映射至可位於諸如磁柱、磁道、頻道、頁面及/或類似者的不同實體位置處的一或多個實體區塊位址(physical block addresse;PBA)。取決於實施細節,名稱空間可呈現(例如,向諸如主機的設備)為單獨儲存裝置。在圖2中所示出的裝置202中,儲存媒體213的一或多個部分可經組態為一或多個儲存名稱空間246。
在計算資源的上下文中,計算名稱空間可指例如如上文關於圖1所描述的一或多個計算引擎、程式及/或類似者的集合。在圖2中所示出的裝置202中,諸如計算引擎211及/或程式207的一或多個計算資源可經組態為一或多個計算名稱空間244。
在記憶體資源的上下文中,記憶體名稱空間可指例如如上文關於圖1所描述的一或多個記憶體及/或其部分的集合。舉例而言,記憶體名稱空間經組態為記憶體胞元、線、行、位元組、字、頁面、區塊及/或類似者的一或多個位址、位址範圍及/或類似者的集合。在圖2中所示出的裝置202中,裝置記憶體206的一或多個部分可經組態為一或多個記憶體名稱空間248。
再次參看圖1,在一些實施例中,裝置記憶體106的部分中的一或多者可由裝置功能性104的一或多個部分使用。舉例而言,在裝置102經實施為計算儲存裝置的實施例中,裝置功能性104可包含計算資源(例如,一或多個計算引擎及/或計算程式)及儲存資源(例如,儲存媒體)。在此實施例中,裝置記憶體106的一或多個部分可例如用於任何數目個以下操作:儲存自主機、儲存媒體(例如,經組態為儲存名稱空間的儲存媒體的一或多個部分)及/或類似者複製的輸入資料;緩衝及/或輸出用於在計算引擎上運行的程式的資料;緩衝由在計算引擎上運行的程式使用的中間資料;將輸出資料複製至主機記憶體、儲存媒體(例如,經組態為儲存名稱空間的儲存媒體的一或多個部分)及/或類似者;在程式之間交換資料;在虛擬機(例如,在一或多個計算資源上運行)之間交換資料;及/或類似者。
本揭露內容的一些發明原理是關於可用於獲得關於裝置記憶體106的資訊及/或管理裝置記憶體106的機制(其亦可被稱為方案)。舉例而言,在一些實施例中,裝置102可實施探索機制,所述探索機制可使得主機能夠獲得關於可定位於裝置102中、裝置102上、裝置102處及/或裝置102附近的裝置記憶體106的一或多個部分的資訊。另外或替代地,裝置102可實施管理機制,所述管理機制可使得主機可使用關於裝置記憶體的資訊(例如,使用探索機制獲得)來管理裝置記憶體106的一或多個部分。在一些實施例中,裝置記憶體106的一或多個部分可藉由組態裝置記憶體106的一或多個部分以存取裝置功能性104的一或多個部分而管理。舉例而言,在裝置功能性104的至少一部分藉由計算資源實施的裝置102中,管理機制可使得主機能夠組態裝置記憶體106的一或多個第一部分以存取第一計算資源及組態裝置記憶體106的一或多個第二部分以存取第二計算資源。
在一些實施例中,主機可藉由可使用裝置功能性104、裝置記憶體106、裝置102的探索機制及/或管理機制中的一或多者的任何組件或組件的組合實施。舉例而言,主機可包含用戶端裝置、伺服器、儲存節點、CPU、個人電腦、平板電腦、智慧型手機及/或類似者中的一或多者。
出於說明的目的,一些示例性實施例可描述於主機可使用探索及/或管理方案來獲得關於裝置記憶體的資訊及/或管理裝置記憶體的系統的上下文中。然而,原理不限於由如上文所描述的主機使用。舉例而言,用於獲得關於裝置記憶體的資訊及/或管理裝置記憶體的方案中的任一者可至少部分地由裝置自身、由另一裝置及/或可包含硬體、軟體、程序、服務及/或類似者的任何其他實體使用。因此,在一些實施例中,且取決於上下文及/或實施細節,主機可指任何實體,包含裝置自身及/或另一裝置的一部分,所述實體可使用探索方案及/或管理方案來獲得關於根據揭露內容的裝置記憶體的資訊及/或管理所述裝置記憶體。
圖3示出根據本揭露內容的示例性實施例的包含探索機制的裝置的實施例。裝置302可包含與圖1及/或圖2中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。然而,在圖3中所示出的實施例中,控制器310可包含探索邏輯314,所述探索邏輯314可實施探索機制以使得裝置302能夠提供關於裝置記憶體306的資訊(其可被稱為記憶體資訊)316(例如,至諸如主機的設備)。
記憶體資訊316可包含裝置記憶體的一或多個部分的一或多個特性(例如,類型、量、配置、存取特性、效能特性及/或類似者)的指示。舉例而言,裝置記憶體306可包含一或多種類型的揮發性記憶體(例如,DRAM、SRAM及/或類似者)及/或非揮發性(例如,持續)記憶體資源(例如,快閃記憶體、PCM及/或類似者)。裝置記憶體306的各種部分可具有不同頻寬(例如,讀取及/或寫入頻寬)、容量(例如,就位元組而言的大小,諸如千位元組(KB)、百萬位元組(MB)、十億位元組(GB)等等)、潛時、存取粒度(例如,持續記憶體可為位元組可存取的,而快閃記憶體可在頁面中寫入及/或讀取但在區塊中抹除)、名稱空間組態(例如,任何記憶體資源的一或多個部分可經組態為一或多個名稱空間、名稱空間內的位址範圍及/或類似者)、寫入耐久性、功率消耗及/或類似者。在一些實施例中,記憶體資訊316可包含裝置記憶體306的一或多個部分的這些或其他特性中的任一者的一或多個指示。
另外或替代地,記憶體資訊316可包含可能夠存取裝置記憶體的一或多個部分的裝置功能性的一或多個部分的一或多個指示。舉例而言,裝置功能性304的一或多個部分及裝置記憶體306的一或多個部分可經由一或多個連接(例如,連接的結構或配置)連接。連接中的一些可僅實現對裝置記憶體306的一或多個部分的受限存取(例如,本端或私用存取),而連接中的一些可使得裝置記憶體306的一或多個部分能夠藉由裝置功能性304的一或多個部分以不受限制或較不受限的方式存取(例如,全球或公用存取)。舉例而言,FPGA可包含本端(例如,內部)記憶體及可僅允許本端記憶體由FPGA內的計算資源存取的連接的配置。類似地,計算引擎(例如,諸如ARM電路的CPU電路)可包含本端記憶體及可僅允許本端記憶體由CPU存取的連接的配置。在一些實施例中,記憶體資訊316可包含裝置功能性304及/或裝置記憶體306的這些或其他特性、連接、限制、配置及/或類似者中的任一者的一或多個指示。
在一些實施例中,探索機制可實施一或多個記憶體資訊請求(例如,命令)315以提供關於裝置記憶體306的資訊。舉例而言,裝置可接收請求關於裝置記憶體306的資訊的探索命令(例如,來自諸如主機的設備)。裝置302可藉由返回可包含關於裝置記憶體資源306的資訊的資料結構(例如,清單、表及/或類似者)、指向資料結構的指針、日誌頁及/或類似者而對探索命令作出回應。作為另一實例,裝置302可實施可使得裝置能夠提供記憶體資訊(例如,至例如主機的設備)的命令行介面(command line interface;CLI)。
圖4示出根據本揭露內容的示例性實施例的探索裝置記憶體命令的示例性實施例。圖4中所示出的探索裝置記憶體命令418可例如用於實施圖3中所示出的記憶體資訊請求315。探索裝置記憶體命令418可例如發送至裝置302的控制器310(例如,藉由主機)以使控制器310提供記憶體資訊316(例如,至主機)。在一些實施例中,控制器310可回應於探索裝置記憶體命令418而發送可包含所請求記憶體資訊316的回應(例如,包含嵌入於回應中的所請求記憶體資訊316的資料結構)。替代地或另外,圖4中所示出的探索裝置記憶體命令418可包含資料位置420,所述資料位置420可指示(例如,藉由指針)控制器310可寫入所請求記憶體資訊316的位置(例如,緩衝位置)。在一些實施例中,探索裝置記憶體命令418可例如實施為NVMe命令、CXL命令及/或類似者。
表1示出可用於提供關於根據本揭露內容的示例性實施例的裝置記憶體的資訊的資料結構的示例性實施例。表1中所示出的實施例可例如用於回應於圖4中所示出的探索裝置記憶體命令418且在圖3中所示出的裝置302的上下文中提供裝置記憶體資訊316。在表1中所示出的實施例中,裝置功能性304的一或多個部分可實施為如行2中所示的計算引擎(CE),但原理可應用於任何其他類型的裝置功能性。
參看表1,列可對應於裝置記憶體306的一或多個部分。列內的行可提供以下資訊:行1可指示用於裝置記憶體306(例如,記憶體裝置)的一部分的記憶體識別符(Memory ID或Mem ID);行2可指示用於可能夠存取由Mem ID識別的裝置記憶體306的部分的裝置功能性304的一或多個部分的識別符(在此實例中,計算引擎識別符(Compute Engine ID或CEID);行3可指示由Mem ID指示的裝置記憶體306的部分的一或多個特性(在此實例中,記憶體類型(例如,DRAM或持續)、潛時、頻寬及/或功率特性);行4及行5可包含一或多個子列,所述一或多個子列可包含指示一或多個名稱空間及/或可組態為對應名稱空間的記憶體的範圍的Namespace識別符(Namespace ID或NSID)及/或範圍識別符(Range ID或RID);行6可指示與對應Namespace ID及/或Range ID相關聯的記憶體位址的範圍;且行7可指示對應記憶體位址範圍是否已分配(例如,至計算引擎、程式及/或類似者)。
表1
1 | 2 | 3 | 4 | 5 | 6 | 7 |
Mem ID | 可由Compute Engine ID存取 | 特性 | Namespace ID | Range ID | 範圍 | 分配 |
MEM A | CE1, CE2 | DRAM, CAS14, 3200MHz | NS100 | Range 1 | 0000-0999 | |
Range 2 | 1000-1999 | |||||
NS101 | Range 1 | 2000-2999 | 是 | |||
Range 2 | 3000-3999 | 是 | ||||
NS102 | Range 1 | 4000-4999 | ||||
Range 2 | 5000-5999 | |||||
MEM B | CE1, CE2, CE3 | DRAM, CAS16, 3200MHz, 低功率(LPDDR4) | NS200 | Range 1 | 0000-0999 | 是 |
Range 2 | 1000-1999 | 是 | ||||
NS201 | Range 1 | 2000-2999 | ||||
Range 2 | 3000-3999 | |||||
NS202 | Range 1 | 4000-4999 | ||||
Range 2 | 5000-5999 | |||||
MEM C | CE1, CE2, CE3 | 持續,8微秒 | NS300 | Range 1 | 0000-0999 | |
Range 2 | 1000-1999 | |||||
NS301 | Range 1 | 2000-2999 | ||||
Range 2 | 3000-3999 | |||||
NS302 | Range 1 | 4000-4999 | 是 | |||
Range 2 | 5000-5999 | 是 |
如上文所提及,出於說明的目的,在表1中所示出的實施例中,裝置功能性304的一或多個部分可實施為如行2中所示的計算引擎,但原理可應用於任何其他類型的裝置功能性。舉例而言,在其他具體實例中,行2可將裝置功能性304的一或多個部分的識別符指示為裝置功能性識別符(Device Functionality ID或DFID)。出於說明的目的,表1中所示出的實施例可提供關於對應於圖9中所示出的實施例的裝置記憶體的資訊的實例,但原理不限於這些或任何其他實施細節。
圖5示出根據本揭露內容的示例性實施例的包含管理機制的裝置的實施例。圖5中所示出的裝置502可包含與圖1、圖2及/或圖3中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。然而,在圖5中所示出的實施例中,控制器510可包含管理邏輯518,所述管理邏輯518可實施管理機制以使得裝置記憶體506能夠基於由裝置例如使用探索機制提供的記憶體資訊而被管理。
管理邏輯518可例如藉由將裝置記憶體506的一或多個部分組態為由裝置功能性504的一或多個部分存取而管理裝置記憶體506。
在一些實施例中,管理邏輯518可藉由接收組態資訊523(例如,自諸如主機的設備)及將組態資訊523提供至與可實施組態資訊的裝置功能性504的一或多個部分相關聯的記憶體控制設備而組態裝置記憶體506的一或多個部分。舉例而言,在一些實施例中,諸如主機的設備可將裝置記憶體506的一或多個部分分配至裝置功能性504的一或多個部分。因此,組態資訊523可包含指示裝置功能性504的一或多個部分及可經組態為由裝置功能性504的一或多個部分存取的裝置記憶體506的一或多個對應部分的清單、表或其他資料結構。與裝置功能性504的一或多個部分相關聯的記憶體控制設備的實例可包含處理器(例如,CPU)中的記憶體控制器、FPGA或ASIC中的記憶體組態暫存器及/或類似者。
另外或替代地,管理邏輯518可藉由將裝置記憶體506的一或多個部分分配至裝置功能性504的一或多個部分而組態裝置記憶體506的一或多個部分。在此實施例中,組態資訊523可針對裝置功能性504的一或多個部分包含一或多個規格、需求及/或類似者,以使得管理邏輯518能夠例如基於記憶體的一或多個類型、量、存取粒度、效能特性及/或類似者而將裝置記憶體506的一或多個適當部分分配至裝置功能性504的一或多個部分。
在一些實施例中,管理邏輯518可回應於組態請求522而組態裝置記憶體506。在一些實施例中,組態請求522可例如藉由由管理邏輯518(例如,自諸如主機的設備)接收的命令實施。另外或替代地,裝置502可至少部分地藉由命令行介面(CLI)實施管理邏輯518及/或組態請求522。
在一些實施例中,裝置功能性504的一或多個部分及裝置記憶體506的一或多個部分可使用可影響裝置功能性504的一或多個部分存取裝置記憶體506的一或多個部分的能力的一或多個連接(例如,連接的結構或配置)而連接。舉例而言,如上文所描述,裝置記憶體506的一些部分可位於裝置功能性504的某些部分(例如,FPGA、ASIC及/或類似者中的本端記憶體)中,且僅可由裝置功能性504的某些部分存取,而裝置記憶體506的其他部分可具有較低限制性存取(例如,全局記憶體可公開存取)。因此,主機或其他設備可使用記憶體資訊(例如,圖3中所示出的記憶體資訊316及/或表1中的記憶體資訊)以判定裝置記憶體506的哪些部分可經組態以由裝置功能性504的哪些部分存取。
圖6示出根據本揭露內容的示例性實施例的組態記憶體命令的第一示例性實施例。圖6中所示出的組態記憶體命令622可例如用於實施圖5中所示出的組態請求522。圖6中所示出的組態記憶體命令622可例如發送至裝置502的控制器510(例如,藉由主機)以使管理邏輯518將裝置記憶體506的一或多個部分組態為由裝置功能性504的一或多個部分存取。出於說明的目的,圖6中所示出的組態記憶體命令622可描述於可藉由計算引擎實施的裝置功能性504的一或多個部分的上下文中,但原理可應用於任何其他類型的裝置功能性。在一些實施例中,組態記憶體命令622可例如藉由NVMe命令、CXL命令及/或類似者實施。
組態記憶體命令622可包含可使得管理邏輯518能夠將裝置記憶體506的一或多個部分組態為由裝置功能性504的一或多個部分存取的組態資訊623。(在一些實施例中,組態資訊623可藉由指針或其他參考方案實施以存取組態資訊。)舉例而言,在一些實施例中,組態資訊623可包含清單、表或其他資料結構(或指向資料結構的指針),所述清單、表或其他資料結構可包含對管理邏輯518可組態為由裝置功能性504的一或多個部分存取(例如,基於由諸如主機的設備判定的一或多個記憶體分配)的裝置記憶體506的一或多個部分的一或多個指示。作為另一實例,在一些實施例中,組態資訊623可針對裝置功能性504的一或多個部分包含一或多個規格、需求及/或類似者,以使得管理邏輯518能夠例如基於記憶體的一或多個類型、量、存取粒度、效能特性及/或類似者而將裝置記憶體506的一或多個適當部分分配至裝置功能性504的一或多個部分。
表2示出可用於將組態資訊623發送(例如,自諸如主機的設備)至裝置502的管理邏輯518的資料結構的示例性實施例。在一些實施例中,表2可由管理邏輯518接收且用於將裝置記憶體506的一或多個部分組態為由裝置功能性504的一或多個部分存取。舉例而言,表2可嵌入於組態記憶體命令622內,由組態記憶體命令622內的指針提及,或以任何其他方式結合組態記憶體命令622而傳達。在表2中所示出的實施例中,裝置功能性504的一或多個部分可藉由如行1中所示的計算引擎實施,但原理可應用於任何其他類型的裝置功能性。表2中所示出的實施例可使用與表1中使用的識別符類似的識別符(例如,Compute Engine ID、Mem ID、Namespace ID及/或類似者)。
參看表2,行1可指示計算引擎。行2可指示可經實體化、啟動及/或類似者以在對應計算引擎上運行的程式。行3、行4以及行5可分別指示可經組態為由對應計算引擎及/或程式存取的記憶體(例如,記憶體裝置)、名稱空間及/或位址範圍。
表2
1 | 2 | 3 | 4 | 5 |
Compute Engine ID | Program ID | Mem ID | Namespace ID | Range ID |
CE1 | P1 | MEM A | NS101 | Range 1 |
Range 2 | ||||
MEM B | NS200 | Range 1 | ||
Range 2 | ||||
MEM C | NS302 | Range 1 | ||
Range 2 | ||||
P2 | MEM A | NS100 | Range 1 | |
MEM B | NS201 | Range 1 | ||
Range 2 | ||||
MEM C | NS301 | |||
Range 2 | ||||
CE2 | P4 | MEM A | NS102 | Range 1 |
MEM B | ||||
MEM C | ||||
P5 | MEM A | NS102 | ||
Range 2 | ||||
MEM B | ||||
MEM C | ||||
CE3 | P8 | MEM B | NS202 | Range 1 |
Range 2 | ||||
MEM C | ||||
P9 | MEM B | |||
MEM C | NS300 | Range 1 | ||
Range 2 |
出於說明的目的,表2中所示出的實施例可提供可與圖8中所示出的實施例一起使用的組態資訊的實例。舉例而言,行3可不包含用於CE3的Mem A的條目,此是因為在圖9中所示出的實施例中Mem A可不由CE3存取。然而,原理不限於這些或任何其他實施細節。
圖7示出根據本揭露內容的示例性實施例的組態記憶體命令的第二示例性實施例。圖7中所示出的組態記憶體命令722可例如用於實施圖5中所示出的組態請求522。圖7中所示出的組態記憶體命令722可例如發送至裝置502的控制器510(例如,藉由主機)以使管理邏輯518將裝置記憶體506的一或多個部分組態為由裝置功能性504的一或多個部分存取。出於說明的目的,圖7中所示出的組態記憶體命令722可描述於可藉由計算引擎實施的裝置功能性504的一或多個部分的上下文中,但原理可應用於任何其他類型的裝置功能性。在一些實施例中,組態記憶體命令722可例如藉由NVMe命令、CXL命令及/或類似者實施。
組態記憶體命令722可包含指示待組態的裝置記憶體506的一部分的記憶體ID(Mem ID)724,及指示記憶體可經組態以由其存取的裝置功能性504的一部分的計算引擎識別符(Compute Engine ID或CEID)728。另外或替代地,組態記憶體命令722可包含指示待組態的裝置記憶體506的一部分的Namespace ID(NSID)726(例如,Namespace ID的子集)。另外或替代地,組態記憶體命令722可包含指示待組態的裝置記憶體506的一部分的範圍ID(Range ID或RID)727(例如,Namespace ID的子集)。另外或替代地,組態記憶體命令722可包含指示記憶體可經組態以由其存取的特定程式(例如,藉由由Prog ID指示的計算引擎中的一者運行)的程式識別符(Program ID、Prog ID或PID)730。
圖8示出根據本揭露內容的示例性實施例的包含探索機制及管理機制的裝置的實施例。圖8中所示出的裝置802可包含與圖1、圖2、圖3及/或圖5中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。然而,在圖8中所示出的實施例中,控制器810可包含探索邏輯814及管理邏輯818兩者。此外,在圖8中所示出的實施例中,示出裝置功能性804的一或多個部分與裝置記憶體806的一或多個部分之間的一或多個連接832。(一或多個連接832亦可被稱為結構、配置或連接的網狀架構)。
圖8中所示出的實施例亦可包含經由通信網狀架構803連接至裝置802的主機801。在一些實施例中,主機801可將一或多個任務發送至裝置802,所述裝置802可例如使用裝置功能性804的一或多個部分中的至少一者來執行一或多個任務。在一些實施例中,主機801可運行可利用裝置功能性804的一或多個部分的一或多個應用程式805。
一或多個連接832可使用廣泛多種不同導體、互連件、網路、介面、協定及/或類似者實施。實例可包含使用電路板跡線、緩衝器、線驅動器、鎖存器、中繼器、重計時器、開關、多工器及/或解多工器、任何一代雙資料速率(DDR)介面(例如,DDR2、DDR3、DDR4、DDR5等等)、低功率DDR(LPDDR)、開放記憶體介面(OMI)、共同快閃記憶體介面(CFI)、開放NAND快閃記憶體介面(ONFI)、PCIe、NVMe、NVMe-oF、CXL、Gen-Z、OpenCAPI、CCIX、AXI、DMA、RDMA、ROCE、AMQP、乙太網路、TCP/IP、FibreChannel、InfiniBand、SATA、SCSI、SAS、iWARP及/或類似者的有線連接。
儘管裝置功能性804、裝置記憶體806以及一或多個連接832可示出為分開的元件,但在一些實施中,這些元件中的一些或全部可交疊。舉例而言,在裝置功能性804的至少一部分藉由FPGA實施的實施例中,至少某一裝置記憶體(例如,FPGA中的本端記憶體)及記憶體互連件的至少一部分可包含於FPGA內。此外,儘管一或多個連接832可示出為單個元件,但其可包含第一組組件之間的一或多個第一連接及第二組組件之間的一或多個第二連接,其中第一組組件與第二組組件之間可不存在連接。舉例而言,第一ASIC可包含第一處理器、第一本端裝置記憶體以及第一處理器與第一本端裝置記憶體之間的第一連接,且第二ASIC可包含第二處理器、第二本端裝置記憶體以及第二處理器與第二本端裝置記憶體之間的第二連接,然而,第一ASIC與第二ASIC之間可不存在連接。
在圖8中所示出的實施例中,裝置記憶體806的一或多個部分可例如特定用於上文關於圖1所描述的操作中的任一者:儲存自主機、儲存媒體(例如,經組態為儲存名稱空間的儲存媒體的一或多個部分)及/或類似者複製的輸入資料;緩衝及/或輸出用於在計算引擎上運行的程式的資料;緩衝由在計算引擎上運行的程式使用的中間資料;將輸出資料複製至主機記憶體、儲存媒體(例如,經組態為儲存名稱空間的儲存媒體的一或多個部分)及/或類似者;在程式之間交換資料;在虛擬機(例如,在一或多個計算資源上運行)之間交換資料;及/或類似者。
作為其他實例,圖8中所示出的裝置記憶體806的一或多個部分可用於任何數目個以下目的、操作及/或類似者:驅動管理(例如,儲存後設資料及/或後設資料查找以供使用,諸如鍵值儲存、檔案系統資訊、快取管理及/或類似者);複製緩衝器(例如用以複製名稱空間之間的資料的中間緩衝器),同位緩衝器(例如,儲存校驗和或用於諸如獨立硬碟冗餘陣列(RAID)的冗餘操作的其他資料,臨時緩衝器(例如,用於可例如在主機處、在裝置及/或類似者處運行的一或多個應用程式)、命令處理、轉譯及/或查找緩衝器、校驗和及/或加密金鑰緩衝器,及/或類似者。
命令處理的實例可包含處理NVMe命令佇列及/或條目(例如,提交佇列(submission queue;SQ)、提交佇列條目(submission queue entry;SQE)、完成佇列(completion queue;CQ)及/或完成佇列條目(completion queue entry;CQE)。舉例而言,NVMe系統中的控制記憶體緩衝器(control memory buffer;CMB)可實施為記憶體映射空間中的PCIe基礎位址暫存器(base address register;BAR),所述記憶體映射空間可由主機存取(例如,直接),所述主機可將CMB用於任務,諸如將SQE置放於緩衝器中,使得裝置能夠將CQE置放於緩衝器中,及/或類似者。在一些實施例中,裝置記憶體可用於CMB之一或多個功能,例如在裝置處處理一或多個命令。取決於實施細節,此可提供改良的效用、效能及/或類似者。
在根據本揭露內容的示例性實施例的將裝置記憶體用於加密金鑰的示例性實施例中,主機可將加密金鑰的資料結構預先下載至裝置記憶體中(例如,用於每IO金鑰(key-per-IO;KPIO)實施)。藉由此配置,主機可發佈IO且提供及指向資料結構中的索引的指針以擷取用於IO的對應加密金鑰,裝置可使用所述對應加密金鑰來加密及/或解密IO。取決於實施細節,將加密金鑰置放於裝置記憶體中的緩衝器中可保護金鑰免於曝光(例如,至主機),例如,此是因為金鑰可能並非IO命令的部分。
圖9示出具有根據本揭露內容的示例性實施例組態的裝置記憶體的裝置的示例性實施例。圖9中所示出的實施例可藉由例如圖1、圖3、圖5、圖8及/或表1中所示出的實施例實施或用於實施所述實施例,在所述實施例中,類似元件可具有以類似數字結束的附圖標號。出於說明的目的,圖9中所示出的實施例可描述於藉由計算引擎實施的裝置功能性設備的上下文中,但原理可應用於任何其他類型的裝置功能性。
參看圖9,裝置可包含藉由被識別為CE1、CE2以及CE3的三個計算引擎934實施的裝置功能性及藉由被識別為Mem A、Mem B以及Mem C的記憶體裝置936實施的裝置記憶體。計算引擎CE1及計算引擎CE2以及記憶體裝置Mem A可包含於ASIC 940中。計算引擎CE1及計算引擎CE2可例如藉由處理器(例如,ARM處理器)、閘極陣列、邏輯裝置及/或類似者實施,而計算引擎CE3可藉由CPU實施。
程式P1及程式P2可在CE1上實體化、載入、啟動及/或類似者。程式P4及程式P5可在CE2上實體化、載入、啟動及/或類似者。程式P8及程式P9可在CE3上實體化、載入、啟動及/或類似者。
記憶體裝置Mem A及記憶體裝置Mem B可藉由揮發性記憶體(例如,DRAM)實施,而記憶體裝置Mem C可藉由持續記憶體實施。記憶體裝置Mem A中的一些或全部可細分成(例如,經組態為)名稱空間NS100、名稱空間NS101及/或名稱空間NS102,所述名稱空間可進一步細分成範圍Range 1及範圍Range 2。記憶體裝置Mem B中的一些或全部可細分成(例如,經組態為)名稱空間NS200、名稱空間NS201及/或名稱空間NS202,所述名稱空間可進一步細分成範圍Range 1及範圍Range 2。記憶體裝置Mem C中的一些或全部可細分成(例如,經組態為)名稱空間NS300、名稱空間NS301及/或名稱空間NS302,所述名稱空間可進一步細分成範圍Range 1及範圍Range 2。圖9中所示出的記憶體裝置936的數目、類型、特性及/或類似者是出於說明的目的,且在其他實施例中,可使用具有任何其他數目、類型、特性及/或類似者的記憶體裝置。
連接結構932可包含計算引擎934與記憶體裝置936之間的連接。特定言之,Mem A可分別藉由連接932-1及連接932-2連接至CE1及CE2。Mem B可分別藉由連接932-3、連接932-4以及連接932-5連接至CE1、CE2以及CE3。Mem C可分別藉由連接932-6、連接932-7以及連接932-8連接至CE1、CE2以及CE3。由於CE3在ASIC 940外部,因此CE3與Mem A之間可不存在連接。
因此,CE1及/或CE2可能夠存取Mem A、Mem B及/或Mem C,而CE3可能夠存取Mem A及/或Mem B,但不能夠存取Mem C。
在圖9中所示出的示例性實施例中,所指示的記憶體資源的以下集合942可經組態(例如,藉由圖5中的管理邏輯518及/或圖8中的管理邏輯818)為由程式P1存取(如例如表1中所示):Mem A中的NS101的Range 1及Range 2、Mem B中的NS200的Range 1及Range 2,及/或Mem C中的NS302的Range 1及Range 2。因此,P1可將集合942中的記憶體資源中的任一者用於程式執行。相比之下,程式P8可不能夠存取Mem A中的記憶體資源以用於程式執行。
在一些實施例中,且取決於實施細節,根據本揭露內容的示例性實施例的具有裝置記憶體及/或裝置功能性的裝置可實施任何數目個以下特徵及/或提供任何數目個以下益處。裝置記憶體(例如,在裝置本端的記憶體)可用於存取裝置功能性(例如,一或多個計算儲存引擎)。裝置記憶體的一或多個部分可細分成一或多個名稱空間,其中名稱空間可提供裝置記憶體的一或多個部分的虛擬表示。可使諸如主機的設備例如使用探索機制感知裝置記憶體的一或多個部分及/或可能夠存取裝置記憶體的一或多個部分的裝置功能性的一或多個部分。在一些實施例中,裝置記憶體的一或多個部分可分割成一或多個群組(例如,基於不同記憶體特性)。裝置可實施探索機制,所述探索機制可使得裝置能夠提供(例如,至主機)關於裝置功能性的一或多個部分(例如,計算引擎)可能夠存取記憶體的哪一群組或哪些群組的資訊(記憶體資訊)。裝置功能性的一或多個部分(例如,計算引擎)可能夠存取記憶體、儲存器及/或類似者的一或多個群組。裝置功能性的一或多個部分(例如,計算引擎)可能夠存取裝置功能性的一或多個部分可能夠存取的一或多個群組的一或多個次分部分。諸如主機的設備可使用記憶體資訊來指示(例如,使用清單、表或其他資料結構)特定記憶體資源可由程式(例如,在計算引擎上運行)使用以用於程式的執行。
在一些實施例中,且取決於實施細節,根據本揭露內容的示例性實施例的具有裝置記憶體及/或裝置功能性的裝置可實施任何數目個以下特徵及/或提供任何數目個以下益處。裝置記憶體(例如,在裝置內本端的記憶體)可用於可針對其他類型的裝置實施裝置功能性的一或多個計算引擎及/或邏輯的私用存取。裝置記憶體(例如,在裝置內本端的記憶體)可用於裝置內的公用存取,例如,對可針對其他類型的裝置實施裝置功能性的一或多個(例如,所有)計算引擎及/或邏輯的公用存取。一或多種類型的記憶體可藉由諸如揮發性、潛時、功率及/或類似者的特性區分。記憶體可分割成具有可例如藉由主機管理的例如基於存取地點對特定裝置功能性的一或多個部分的存取的一或多個名稱空間。名稱空間可細分成具有一或多個偏移(例如,位址範圍)的一或多個子群組,所述一或多個子群組可經組態以由一或多個程式存取以用於程式執行。子群組中的一或多者可分組在一起以形成較大群組,例如,用於藉由諸如主機的設備管理資料流。裝置功能性的一或多個部分(例如,計算引擎)可經組態以存取一或多個記憶體名稱空間及/或範圍群組。任何數目個這些特徵及/或益處可由根據本揭露內容的示例性實施例的計算儲存裝置提供。
在一些實施例中,裝置記憶體可藉由各種類型的可存取性實施。舉例而言,對裝置記憶體的一些部分的存取可受限於裝置功能性的特定部分,而裝置記憶體的其他部分可由裝置功能性的任何部分存取。因此,在一些實施中,記憶體管理機構可組態裝置功能性的一些部分及/或裝置記憶體的一些部分以用於交疊存取。另外或替代地,記憶體管理機構可針對各種類型的可存取性組態裝置記憶體的一或多個部分。
在一些實施例中,記憶體管理機構可使用記憶體名稱空間來組態裝置記憶體的一或多個部分。在一些實施例中,記憶體名稱空間可指裝置記憶體的一或多個部分的邏輯表示。因此,在一些實施例中,記憶體名稱空間可實施為裝置記憶體的一或多個部分的集合。取決於實施細節,記憶體名稱空間可或可不包含記憶體的交疊部分。在一些實施例中,一或多個命令可附接至一或多個名稱空間。
圖10示出根據本揭露內容的示例性實施例的包含具有計算資源及程式資源的計算裝置的系統的實施例。圖10中所示出的實施例可包含藉由通信網狀架構1003連接的主機1001及計算裝置1002。
計算裝置1002可包含裝置控制器1010、程式儲存庫1009、裝置記憶體1006、一或多個計算資源(computational resource)1008(其亦可被稱為計算資源(compute resource))及/或裝置功能性電路1004。裝置控制器1010可控制包含本文中所描述的操作、特徵及/或類似者中的任一者的計算裝置1002的總體操作。舉例而言,在一些實施例中,裝置控制器1010可解析、處理、調用自主機1001接收到的命令及/或類似者。裝置功能性電路1004可包含實施計算裝置1002的主要功能的任何硬體。舉例而言,若計算裝置1002實施為儲存裝置,則裝置功能性電路1004可包含儲存媒體,諸如一或多個快閃記憶體裝置、快閃轉譯層(flash translation layer;FTL)及/或類似者。在一些實施例中,計算儲存裝置可實施為計算儲存驅動器(computational storage drive;CSD)、計算儲存處理器(computational storage processor;CSP)及/或計算儲存陣列(computational storage array;CSA)。
作為另一實例,若計算裝置1002實施為網路介面卡(network interface card;NIC),則裝置功能性電路1004可包含一或多個數據機、網路介面、實體層(PHY)、媒體存取控制層(MAC)及/或類似者。作為另一實例,若計算裝置1002實施為加速器,則裝置功能性電路1004可包含一或多個計算資源,諸如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、嵌入式處理器及/或類似者。
主機1001可藉由可利用計算裝置1002的計算資源1008的任何組件或組件的組合來實施。舉例而言,主機1001可包含用戶端裝置、伺服器、儲存節點、中央處理單元(central processing unit;CPU)、個人電腦、平板電腦、智慧型手機及/或類似者中的一或多者。此外,圖10中所示出的實施例可包含任何數目個主機。
通信網狀架構1003可使用任何類型的介面及/或協定藉由一或多個互連件、一或多個網路、網路中的一個網路(例如,網際網路)及/或類似者或其組合來實施。舉例而言,網狀架構1003可藉由PCIe、NVMe、NVMe-oF、CXL、Gen-Z、OpenCAPI、CCIX、AXI、DMA、RDMA、ROCE、AMQP、乙太網路、TCP/IP、FibreChannel、InfiniBand、SATA、SCSI、SAS、iWARP及/或類似者或其任何組合實施。舉例而言,在計算裝置1002經實施為儲存裝置的實施例中,控制器1010可實施諸如NVMe、CXL及/或類似者的儲存協定,所述儲存協定可使得主機1001及計算裝置1002能夠經由通信網狀架構1003交換命令、資料及/或類似者。在一些實施例中,通信網狀架構1003可包含一或多個開關、集線器、節點、路由器及/或類似者。
在一些實施例中,計算引擎1011中的一或多者可包含一或多個處理資源,諸如CPLD、FPGA(繪示為計算引擎1011a)、ASIC(繪示為計算引擎1011b)、CPU(例如,CISC、RISC及/或類似者,或其核心,繪示為計算引擎1011c)、GP DP NPU TP及/或類似者,所述一或多個處理資源可執行儲存於任何類型的記憶體中的指令及/或實施任何類型的執行環境,諸如容器、虛擬機、諸如Linux的作業系統、經擴展伯克利封包過濾器(eBPF)環境及/或類似者,或其組合。在一些實施例中,計算引擎可包含組合邏輯、順序邏輯、一或多個計時器、計數器、暫存器及/或狀態機,及/或類似者。在一些實施例中,計算資源中的一些或全部可實施為系統單晶片(SOC)。
程式儲存庫1009可包含用於儲存一或多個可執行計算裝置程式1007的一或多個程式槽。在一些實施例中,計算裝置程式(亦可被稱為計算程式、計算程式或取決於上下文,程式)可指可由計算裝置的一或多個計算資源執行的任何類型的程式,諸如演算法、資料移動、資料管理、資料選擇、濾波、加密及/或解密、壓縮及/或解壓縮、校驗和計算、雜湊值計算、循環冗餘檢查(CRC)及/或類似者。在一些實施例中,計算裝置程式可指可意欲由計算裝置執行、適於由計算裝置執行及/或類似者的程式。在一些實施例中,計算引擎可指可能夠執行一或多個計算裝置程式的組件或組件的組合。
一或多個程式1007可例如使用計算資源1008中的一或多個計算引擎1011執行。在一些實施例中,裝置記憶體1006可在與計算引擎1011中的一或多者一起執行時由程式1007中的一或多者使用。舉例而言,裝置記憶體1006可用於針對程式1007中的一或多者保持輸入資料、輸出資料、過渡資料及/或類似者。在一些實施例、上下文及/或類似者中,程式1007可被稱作函式。
在一些實施例中,主機1001可將一或多個任務卸載至可執行一或多個任務的計算裝置1002,例如,使用可由計算資源1008執行的程式1007中的一或多者。舉例而言,主機1001可運行可利用計算裝置1002的程式1007及/或計算引擎1011中的一或多者的一或多個應用程式1005。
在一些實施例中,計算引擎中的一或多者可提供程式1007中的一或多者的完全或部分(例如,混合型)硬體實施。舉例而言,在一些實施例中,計算引擎1011中的一或多者可包含組合邏輯、順序邏輯、一或多個計時器、計數器、暫存器及/或狀態機、一或多個CPLD、FPGA、ASIC及/或其經組態以處理用於程式1007的位元串流的組合,所述程式1007可例如實施為軟FPGA函數。
圖11示出根據本揭露內容的示例性實施例的包含具有可載入程式資源的計算裝置的系統的實施例。圖11中所示出的實施例可包含與圖10中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。
參看圖11,在計算裝置1102中,計算資源1108中的一或多者可經組態為一或多個計算名稱空間1144及/或使用一或多個計算名稱空間1144存取,所述一或多個計算名稱空間1144被識別為Compute Namespace A(CN A或CNS A)、Compute Namespace B(CN B或CNS B)、Compute Namespace C(CN C或CNS C)及/或Compute Namespace D(CN D或CNS D)。
計算名稱空間1144中的一或多者可經組態以使用可自計算資源1108映射至計算名稱空間1144的計算資源1150(被識別為CR A、CR B、CR C及/或CR D)。舉例而言,如圖11中的箭頭所示,Compute Namespace A可經組態以使用兩種CPU核心,Compute Namespace B可經組態以使用一個CPU核心及一個FPGA,Compute Namespace C可經組態以使用一個CPU核心,且Compute Namespace D可經組態以使用一個ASIC。在一些實施例中,計算資源1108中的一或多者的利用率對於計算名稱空間可能並非排他性的。舉例而言,映射至第一計算名稱空間的資源(例如,FPGA、ASIC、CPU核心及/或類似者)可再使用於(例如,映射至)另一計算名稱空間。
計算裝置1102可包含具有用於儲存被識別為Program 1、Program 2、Program 3、Program 4及/或Program 5的程式1107的一或多個程式槽的程式儲存庫1109,所述程式1107可例如由映射至計算名稱空間1144中的一或多者的計算資源1150中的一或多者執行。
程式1107可使用各種技術置放於程式儲存庫1109中。作為第一實例技術(其可被稱為內建式技術),程式1107可藉由供應商(例如,製造商、經銷商及/或類似者)以ASIC的方式建置至程式儲存庫1109中。作為第二實例技術(其可被稱為預載技術),程式1107可例如在裝置1102經製造、分銷及/或類似者時藉由供應商預載於程式儲存庫1109中。
作為第三實例(其可被稱為下載技術),程式1107可經載入(例如,經下載)至程式儲存庫1109中作為韌體安裝及/或修正的部分。舉例而言,裝置供應商可提供可包含再一個程式1107(例如,包含一或多個程式1107的程式儲存庫1109的全部或部分)的韌體內容(例如,韌體影像、檔案及/或類似者)。韌體內容可經載入(例如,下載)至程式儲存庫1109中作為製造程序、修正程序(例如,更新程序、升級程序及/或類似者)、分佈程序及/或類似者的部分。在一些實施例中,韌體內容可使用供應商特定機制而載入至裝置1102中(包含將一或多個程式1107載入至程式儲存庫1109中)。舉例而言,韌體內容可使用下載韌體命令(例如,NVMe下載韌體命令)載入至裝置1102中,所述下載韌體命令可起始供應商特定機制以用於將韌體內容載入至裝置1102中。在一些實施例中,此機制可載入整個裝置1102的韌體影像,且因此,可能難以或不可能判定韌體影像的哪一部分可包含用於程式儲存庫1109的一或多個程式1107。因此,裝置1102的計算資源1108的使用者(例如,主機、應用程式、程序、服務及/或類似者)可能不能夠使用上文所描述的第一(內建式)實例技術、第二(預載)實例技術及/或第三(下載)實例技術中的任一者將程式1107載入至程式儲存庫1109中。在一些實施例中,用於載入程式的供應商特定機制可將解碼韌體封裝解碼至裝置韌體及/或用於裝置1102的一或多個計算程式中。
使用上文所描述的第一實例技術、第二實例技術及/或第三實例技術中的任一者載入至程式儲存庫1109中的程式1107可被稱為原生程式(或固定程式或預載程式)。
在一些實施例中,使用第三(下載)技術來將程式1107載入至程式儲存庫中(例如,將韌體影像、封裝及/或類似者下載至裝置1102)可提供類似於第二(預載)技術的一或多個益處。然而,取決於實施細節,使用第三(下載)技術可涉及將裝置1102及/或一或多個執行程式置放於靜態(例如,睡眠狀態或斷開、關閉、暫停、停止、休眠、終止、中斷及/或類似者)中。此外,取決於實施細節,使用第三(下載)技術可涉及:(1)重新啟動已指派計算名稱空間的一或多個虛擬機;(2)重新載入(例如,下載)一或多個先前下載程式1107;及/或(3)完成、中止可能正在進行中(例如,藉由一或多個執行程式1107)的一或多個計算及/或類似者。
程式儲存庫1109可例如藉由揮發性及/或非揮發性記憶體實施為例如裝置記憶體1106的一部分及/或藉由可至少部分地專用於程式儲存庫1109的記憶體實施。在一些實施例中,程式儲存庫1109可至少部分地虛擬實施而非作為實體實施。舉例而言,程式儲存庫1109的一或多個部分可實施為貫穿裝置1102使用的任何記憶體實施機制的虛擬實體化(例如,使用用於記憶體虛擬化、傳呼、映射及/或類似者的任何方案)。
計算名稱空間1144可包含可用於儲存程式1152的一或多個程式槽,所述程式1152可例如藉由映射至對應計算名稱空間1144的計算資源1150中的一或多者執行。舉例而言,Compute Namespace A可包含可儲存程式Program A1、程式Program A2……程式Program An的一或多個槽;Compute Namespace B可包含可儲存程式Program B1、程式Program B2……程式Program Bn的一或多個槽;等等。
在一些實施例中,程式1152可如箭頭1154所示載入(例如,下載)至名稱空間1144(例如,藉由名稱空間的使用者,諸如應用程式、程序、服務及/或類似者)。載入(例如,下載)至計算名稱空間1144及/或儲存於計算名稱空間1144中的程式1152可被稱為計算名稱空間程式、名稱空間程式或本端程式。在一些實施例中,計算名稱空間程式1152可使用被稱作「將程式載入至名稱空間命令」的命令(其亦可被稱為load_program_to_namespace命令或載入本端程式命令)而下載。在一些實施例中,載入本端程式指令可例如使用應用程式設計介面(application programming interface;API)存取。在一些實施例中,此API可例如使用一或多個NVMe命令實施為計算裝置的構架的部分。取決於實施細節,計算名稱空間映射至的虛擬機可控制程式至計算名稱空間的下載。
在一些實施例中,計算名稱空間1144可使用一或多個映射計算資源1150來執行來自程式儲存庫1107的一或多個程式1107(如箭頭1156所示)及/或本端儲存於名稱空間1144處的一或多個程式1152(如箭頭1158所示)。在一些實施例中,計算名稱空間1144可使用裝置記憶體1106的一或多個部分(例如,經組態為一或多個記憶體名稱空間1148)及/或儲存媒體的一或多個部分(例如,實施為裝置功能性的部分且經組態為一或多個儲存名稱空間1146)。
在一些實施例中,計算名稱空間程式1152可具有可限於其可下載至及/或儲存於其中的計算名稱空間的範疇。(此範疇可被稱為本端或私用範疇。)在一些實施例中,程式儲存庫1109中的程式1107可具有可延伸以下各者的範疇:整個裝置1102(其可被稱為裝置全局範疇);裝置1102的子系統(例如,NVMe子系統)(其可被稱為子系統全局範疇);及/或裝置1102的任何其他部分。因此,在一些實施例中,程式儲存庫1109中的原生程式1107可具有裝置全局範疇(其亦可被稱為裝置公用)、子系統全局範疇(其亦可被稱為子系統公用)及/或類似者。
在一些實施例中,可不覆寫及/或移除一或多個原生程式,但可停用及/或不使用所述一或多個原生程式。在一些實施例中,一或多個原生程式可例如藉由一或多個載入的全局程式覆寫(例如,替換)。
在一些實施例中,為了利用,一或多個程式(例如,原生程式1107及/或本端程式1152)可與一或多個計算名稱空間1144相關聯。可例如藉由啟動名稱空間內的程式(例如,原生程式1107及/或本端程式1152)而在程式與名稱空間之間建立關聯。在一些實施例中,啟動程式可使得程式可經排程以供例如由諸如主機的設備執行。
在一些實施例中,本文中關於圖11所描述的操作中的一或多者可例如使用一或多個命令(例如,在NVMe構架的上下文中及/或使用NVMe API的NVMe命令)實施,所述一或多個命令可使用通信介面1112接收及/或由控制器1110(其可至少部分地實施為NVMe控制器)處理。
在一些實施例中,計算程式構架(例如,NVMe構架)可對可載入至名稱空間1144的程式1152進行類型檢查。舉例而言,使用者可嘗試將程式1152載入至Namespace D。然而,若程式1152指示(例如,公告)程式具有意欲與CPU一起操作的類型,則構架可禁止(例如,阻止)程式1152載入至Namespace D,此是因為在圖11中所示出的實施例中,Namespace D可不具有映射至計算資源CR D的CPU,且因此,程式1152可不由計算資源CR D中的任何計算引擎支援。在一些實施例中,可藉由標準規格實施、限定一或多個程式類型及/或類似者。
相比之下,在一些實施例中,程式儲存庫1109中的一或多個程式1107可不指示程式類型,及/或可不為類型檢查,例如,此是因為可映射至可試圖使用一或多個程式1107的名稱空間1144的計算資源1150的類型可能並非已知的(例如,在一或多個程式1107置放於程式儲存庫1109中時)。
圖12示出根據本揭露內容的示例性實施例的包含能夠將程式資源載入至程式儲存庫的計算裝置的系統的實施例。圖12中所示出的實施例可包含與圖11中所示出的元件類似的一些元件,其中類似元件可具有以類似數字結束的附圖標號。
參看圖12,計算裝置1202可實施可使得能夠將一或多個程式1207a載入(例如,下載)至程式儲存庫1209的程式載入機制(其可被稱為全局程式載入機制),如箭頭1260所示。舉例而言,使用者(例如,主機、應用程式、程序、服務及/或類似者)可使用被稱作「將程式載入至儲存庫命令」的命令(其亦可被稱為載入全局程式命令或load_program_to_repository命令)將一或多個程式1207a載入至程式儲存庫1209。在一些實施例中,載入全局程式指令可例如使用API存取。在一些實施例中,此API可例如使用一或多個NVMe命令實施為計算裝置的構架的部分。
載入(例如,下載)至程式儲存庫1209的程式1207a可被稱為載入程式(或下載程式或載入全局程式),而使用上文所描述的第一(內建式)實例技術、第二(預載)實例技術及/或第三(下載)實例技術中的任一者置放於程式儲存庫1209中的程式1207b可被稱為原生程式(或固定程式或預載程式)。
在一些實施例中,特定載入全局程式1207a在特定計算名稱空間1244中可能不可見,此是因為特定計算名稱空間1244可不具有支援映射至其的特定載入全局程式(如上文所描述)的計算引擎。舉例而言,FPGA核心程式可能在僅包含ARM CPU計算資源的計算名稱空間中不可見。
在一些實施例中,且取決於實施細節,根據本揭露內容的示例性實施例的全局程式載入機制可提供可例如類似於使用預先建構及/或預載技術的一或多個益處,及/或可減少或消除與如上文所描述的下載技術(例如,第三實例技術)相關聯的一或多個潛在問題。
舉例而言,全局程式載入機制可使得一或多個程式能夠下載至程式儲存庫1209,例如以補償在製造時及/或作為韌體更新的部分可能尚未包含(例如,預載)的一或多個程式。
作為另一實例,根據本揭露內容的示例性實施例的全局程式載入機制可使得一或多個載入全局程式可在裝置全局範疇、子系統全局範疇及/或類似者處存取。因此,取決於實施細節,載入全局程式可藉由例如同一裝置、子系統及/或類似者內的多於一個計算名稱空間存取。
作為另一實例,根據本揭露內容的示例性實施例的全局程式載入機制可利用一或多個現有程式實施技術。舉例而言,載入全局程式可使用啟動命令啟動,所述啟動命令可與用於原生程式、本端程式及/或類似者的啟動命令相同或類似。
作為又一實例,已使用根據本揭露內容的示例性實施例的全局程式載入機制載入的載入全局程式可不經受類型檢查。因此,在一些實施例中,且取決於實施細節,載入全局程式1207a可經載入(例如,至程式儲存庫1209),而不管可支援待載入的載入全局程式1207a的任何計算資源1208是否已映射至任何計算名稱空間1244中的計算資源1250,或甚至存在於計算資源1208中。因此,取決於實施細節,已使用根據本揭露內容的示例性實施例的全局程式載入機制載入的載入全局程式可呈現為與內建式程式及/或預載程式相同或類似。
此外,已使用根據本揭露內容的示例性實施例的全局程式載入機制載入的載入全局程式可不指示(例如,公告)程式類型。取決於實施細節,此可進一步使得載入全局程式能夠避免一或多個類型檢查操作。此潛能益處可尤其有利,例如,使得定製程式能夠而不揭露定製程式可如何構造、執行及/或類似者的情況下載入為載入全局程式。另外,取決於實施細節,根據本揭露內容的示例性實施例的全局程式載入機制可啟用及/或支援可卸載至裝置的較大組使用情況及/或程式。
在一些實施例中,且取決於實施細節,已使用根據本揭露內容的示例性實施例的全局程式載入機制載入至程式儲存庫1209中的程式可以可與已使用第一(內建式)技術及/或第二(預載)技術置放於程式儲存庫1209中的程式相同或類似的方式表現。因此,計算名稱空間1244可能無法在載入全局程式1207a與原生程式1207b之間進行區分。在一些實施例中,諸如主機的設備可判定自程式儲存庫1209至一或多個計算名稱空間1244的一或多個程式(例如,載入全局程式1207a及/或原生程式1207b以啟動、映射及/或類似者。
在一些實施例中,全局程式載入機制可使得程式能夠載入至程式儲存庫1209而不涉及系統、裝置、子系統及/或類似者的層級處的重設。因此,取決於實施細節,全局載入程式1207a可載入至程式儲存庫1209而不涉及裝置1202及/或一或多個執行程式進入靜態,而不重新啟動已指派計算名稱空間的一或多個虛擬機,而不重新載入(例如,下載)一或多個先前下載的程式,及/或而不完成、中止可能正在進行中的一或多個計算及/或類似者。
在一些實施例中,且取決於實施細節,根據本揭露內容的示例性實施例的全局程式載入機制可實施任何數目個以下特徵及/或提供任何數目個以下益處。程式可使用載入程式指令(其可藉由管理特權實施)載入(例如,下載)至程式儲存庫(例如,全局儲存庫)。可實施載入程式指令以將程式載入至具有子系統層級範疇、裝置層級範疇及/或類似者的程式儲存庫。可實施載入程式命令而無需系統、裝置及/或子系統層級處的重設。一或多個載入程式命令可藉由主機、虛擬機及/或類似者協調。程式儲存庫的內容可例如使用日誌頁命令而被探索。載入程式可例如基於在計算名稱空間中啟動而在計算名稱空間中實體化。載入於程式儲存庫中的程式可呈現為與內建式程式及/或預載程式相同或類似,取決於實施細節,此可使得能夠程式化以避免類型檢查。用於將程式載入至程式儲存庫中、探索程式儲存庫的內容、啟動程式及/或類似者的一或多個命令可使用至主機的API、應用程式、程序、服務及/或類似者實施。本文中所揭露的任何數目個特徵及/或益處可實施於計算儲存裝置的上下文中。
本文中所揭露的功能性中的任一者(包含例如控制器、探索邏輯、管理邏輯或在主機、裝置及/或類似者處實施的任何其他功能性中的任一者)可藉由硬體、軟體、韌體或其任何組合實施,包含組合邏輯、時序邏輯、一或多個計時器、計數器、暫存器及/或狀態機、一或多個複雜可程式化邏輯裝置CPLD、FPGA、ASIC、CPU、GPU、NPU、TPU及/或類似者,其執行儲存於任何類型的記憶體中的指令,或其任何組合。在一些實施例中,一或多個組件可實施為系統單晶片(SOC)。在一些實施例中,且取決於上下文,術語邏輯、電路、裝置及/或類似者可互換使用。
圖13示出根據本揭露內容的示例性實施例的主機設備的示例性實施例。圖13中所示出的主機設備可用於例如實施本文中所揭露的主機中的任一者。圖13中所示出的主機設備1300可包含處理器1302,所述處理器1302可包含記憶體控制器1304、系統記憶體1306、主機邏輯1308及/或通信介面1310。圖13中所示出的組件中的任一者或所有可經由一或多個系統匯流排1312通信。在一些實施例中,圖13中所示出的一或多個組件可使用其他組件實施。舉例而言,在一些實施例中,主機控制邏輯1308可由執行儲存於系統記憶體1306或其他記憶體中的指令的處理器1302實施。在一些實施例中,主機邏輯1308可實施本文中所揭露的主機功能性中的任一者,包含例如運行應用程式、將命令發送至計算裝置及/或自計算裝置接收回應,以及對主機1300及/或其上運行的應用程式利用如本文中所揭露的裝置功能性。
圖14示出根據本揭露內容的示例性實施例的裝置的示例性實施例。圖14中所示出的實施例1400可用於例如實施本文中所揭露的裝置中的任一者。裝置1400可包含裝置控制器1402、一或多個計算資源1408、裝置邏輯1416、裝置功能性電路1406以及通信介面1410。圖14中所示出的組件可經由一或多個裝置匯流排1412通信。裝置邏輯1416可例如用於實施本文中所揭露的探索邏輯、管理邏輯、程式下載機制及/或類似者中的任一者。
裝置功能性電路1406可包含實施裝置1400的主要功能的任何硬體。舉例而言,若裝置1400實施為儲存裝置,則裝置功能性電路1406可包含儲存媒體,諸如一或多個快閃記憶體裝置、FTL及/或類似者。作為另一實例,若裝置1400實施為網路介面卡(NIC),則裝置功能性電路1406可包含一或多個數據機、網路介面、實體層(PHY)、媒體存取控制層(MAC)及/或類似者。作為另一實例,若裝置1400實施為加速器,則裝置功能性電路1406可包含一或多個加速器電路、記憶體電路及/或類似者。
圖15示出根據本揭露內容的示例性實施例的用於提供裝置記憶體資訊的方法的實施例。方法可在操作1502處開始。在操作1504處,方法可在裝置處接收對資訊的請求,其中裝置可包含裝置記憶體及裝置功能性電路。舉例而言,裝置功能性電路可包含用以如上文關於圖3、圖8及/或圖9所描述將裝置實施為計算裝置、儲存裝置、通信裝置及/或類似者的設備。在操作1506處,方法可基於請求提供資訊,其中資訊可指示裝置功能性電路的至少一部分能夠存取裝置記憶體的至少一部分,如上文關於圖3、圖8及/或圖9所描述。舉例而言,資訊可指示FPGA可能夠存取FPGA內的記憶體及/或在FPGA外部的記憶體,如上文關於圖9所描述。方法可在操作1508處結束。
圖16示出根據本揭露內容的示例性實施例的用於組態裝置記憶體的方法的實施例。方法可在操作1602處開始。在操作1604處,方法可在裝置處接收至少一個請求,其中裝置可包含裝置記憶體及裝置功能性電路。舉例而言,裝置功能性電路可包含用以如上文關於圖3、圖8及/或圖9所描述將裝置實施為計算裝置、儲存裝置、通信裝置及/或類似者的設備。在操作1606處,方法可基於至少一個請求執行組態操作,其中組態操作可包含將裝置記憶體的至少一部分組態為由裝置功能性電路的至少一部分存取。舉例而言,裝置可藉由接收組態資訊(例如,自諸如主機的設備)及將組態資訊提供至CPU的記憶體控制器而將裝置記憶體的一部分組態為由CPU存取,如上文關於圖5所描述。方法可在操作1608處結束。
圖17示出根據本揭露內容的示例性實施例的用於將程式資源載入至裝置的方法的實施例。方法可在操作1702處開始。在操作1704處,方法可在裝置處接收程式,其中裝置可包含至少一個計算資源。舉例而言,裝置可在程式儲存庫1209處接收載入程式1207a,且裝置可包含圖12中所示出的至少一個計算資源1208。在操作1706處,方法可使程式與至少一個計算資源的第一計算名稱空間相關聯,且在操作1708處,方法可使程式與至少一個計算資源的第二計算名稱空間相關聯。舉例而言,第一及第二名稱空間1244可藉由用如圖12中所示出的第一及第二名稱空間1244啟動載入程式1207a而與載入程式1207a相關聯。方法可在操作1708處結束。
圖13、圖14、圖15、圖16及/或圖17中所示出的實施例以及本文中所描述的所有其他實施例為實例操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包含其他操作及/或組件。此外,在一些實施例中,操作及/或組件的時間及/或空間次序可變化。儘管一些組件及/或操作可示出為個別組件,但在一些實施例中,單獨展示的一些組件及/或操作可整合於單一組件及/或操作中,及/或展示為單一組件及/或操作的一些組件及/或操作可使用多個組件及/或操作來實施。
儘管不限於任何特定應用,但在與計算儲存器一起使用時,與本文中所揭露的裝置記憶體及/或程式的管理相關的本發明原理可尤其有益,所述計算儲存器可例如與NVMe一起實施。在添加在裝置內可用的計算資源的情況下,一或多個計算操作可自主機卸載至用於一或多個計算的資料可駐存於其中的裝置。取決於實施細節,根據本揭露內容的示例性實施例的裝置可提供優於模型的一或多個益處:可將資料例如自儲存媒體或網路資源提取至主機記憶體中且接著允許CPU對所提取資料運行計算操作(例如,發現可具有趨向病毒感染的郵遞區號計數)。此方法可變得,例如,此是因為資料可跨越網狀架構(例如,可增加潛時的直接附接的PCIe匯流排及/或網路網狀架構傳輸。另外,若多個此類配置嚙合,則總輸送量可每裝置低於單個裝置的總輸送量,例如,此是因為匯流排可能無法利用由一或多個裝置(例如,NVMe裝置)提供的總效能。根據本揭露內容的示例性實施例的計算儲存器可使得一或多個計算操作能夠在儲存器處或附近執行,此取決於實施細節而可減少傳送潛時。此外,與在一些使用情況下可實質上較大的源資料相反,僅結果可複製。本揭露內容的發明原理可提供一或多個益處,例如,在與計算儲存裝置一起使用時,所述計算儲存裝置可藉由嵌入式CPU、專用ASIC、FPGA、GPU及/或類似者而實施計算資源。
上文所揭露的一些實施例已在各種實施細節的上下文中描述,但本揭露內容的原理不限於這些或任何其他特定細節。舉例而言,一些功能性已描述為藉由某些組件實施,但在其他實施例中,所述功能性可在不同位置中分佈於不同系統及組件之間且具有各種使用者介面。某些實施例已經描述為具有特定過程、操作等,但此等術語亦涵蓋其中特定過程、操作等可藉由多個過程、操作等實施或其中多個過程、操作等可整合至單一過程、步驟等中的實施例。對組件或元件的提及可僅指組件或元件的一部分。舉例而言,對區塊的提及可指整個區塊或一或多個子區塊。在本揭露內容中及申請專利範圍中,諸如「第一」及「第二」的術語的使用可僅出於區分其修改的元件的目的,且除非自上下文另外顯而易見,否則可並不指示任何空間或時間次序。在一些實施例中,對元件的提及可指元件的至少一部分,例如,「基於」可指「至少部分地基於」及/或類似者。對第一元件的提及可能不暗示存在第二元件。本文中所揭露的原理具有獨立效用,且可單獨地實施,且並非每一實施例皆可利用每一原理。然而,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式放大個別原理的益處。上文描述的各種細節及實施例可經組合以產生根據此專利揭露內容的發明原理的額外實施例。
由於可在不脫離本發明概念的情況下修改此專利揭露內容的發明原理的配置及細節,因此將此類改變及修改視為落入以下申請專利範圍的範疇內。
102、202、302、502、802、1400:裝置
104:裝置功能性設備
106、206、306、506、806、1006、1106:裝置記憶體
110、310、510、810、1110:控制器
112、1112、1310、1410:通信介面
207、1107、1152、P1、P2、P4、P5、P8、P9:程式
211、934、1011、CE1、CE2、CE3:計算引擎
213:儲存媒體
244、1144、1244:計算名稱空間
246、1146:儲存名稱空間
248、1148:記憶體名稱空間
304、504、804:裝置功能性
314、814:探索邏輯
315:記憶體資訊請求
316:記憶體資訊
418:探索裝置記憶體命令
420:資料位置
518、818:管理邏輯
522:組態請求
523、623:組態資訊
622、722:組態記憶體命令
724:記憶體ID
726:Namespace ID
727:範圍ID
728:計算引擎識別符
730:程式識別符
832、932-1、932-2、932-3、932-4、932-5、932-6、932-7、932-8:連接
801、1001:主機
803、1003:通信網狀架構
805、1005:應用程式
932:連接結構
936、Mem A、Mem B、Mem C:記憶體裝置
940、1011b:ASIC
942:集合
1002、1102、1202:計算裝置
1004、1406:裝置功能性電路
1007:計算裝置程式
1008、1108、1150、1208、1250、1408、CR A、CR B、CR C、CR D:計算資源
1009、1109、1209:程式儲存庫
1010、1402:裝置控制器
1011a:FPGA
1011c:CPU核心
1154、1156、1158、1260:箭頭
1207a:載入全局程式
1207b:原生程式
1300:主機設備
1302:處理器
1304:記憶體控制器
1306:系統記憶體
1308:主機邏輯
1312:系統匯流排
1412:裝置匯流排
1416:裝置邏輯
1502、1504、1506、1508、1602、1604、1606、1608、1702、1704、1706、1708:操作
NS100、NS101、NS102、NS200、NS201、NS202、NS300、NS301、NS302:名稱空間
Range 1、Range 2:範圍
貫穿諸圖,出於示出的目的,圖式未必按比例繪製且類似結構或功能的元件可通常由相似附圖標號或其部分表示。諸圖僅意欲促進對本文中所描述的各種實施例的描述。諸圖並不描述本文中所揭露的教示的每一態樣且並不限制申請專利範圍的範疇。為防止圖式變得模糊,並非可繪示所有組件、連接以及類似者,且並非所有組件可具有附圖標號。然而,組件組態的圖案可自圖式顯而易見。隨附圖式與本說明書一起示出本揭露內容的示例性實施例,且與描述一起用以解釋本揭露內容的原理。
圖1示出根據本揭露內容的示例性實施例的具有裝置記憶體的裝置的實施例。
圖2示出根據本揭露內容的示例性實施例的具有名稱空間的計算儲存裝置的實施例。
圖3示出根據本揭露內容的示例性實施例的包含探索機制的裝置的實施例。
圖4示出根據本揭露內容的示例性實施例的探索裝置記憶體命令的示例性實施例。
圖5示出根據本揭露內容的示例性實施例的包含管理機制的裝置的實施例。
圖6示出根據本揭露內容的示例性實施例的組態記憶體命令的第一示例性實施例。
圖7示出根據本揭露內容的示例性實施例的組態記憶體命令的第二示例性實施例。
圖8示出根據本揭露內容的示例性實施例的包含探索機制及管理機制的裝置的實施例。
圖9示出具有根據本揭露內容的示例性實施例組態的裝置記憶體的裝置的示例性實施例。
圖10示出根據本揭露內容的示例性實施例的包含具有計算資源及程式資源的計算裝置的系統的實施例。
圖11示出根據本揭露內容的示例性實施例的包含具有可載入程式資源的計算裝置的系統的實施例。
圖12示出根據本揭露內容的示例性實施例的包含能夠將程式資源載入至程式儲存庫的計算裝置的系統的實施例。
圖13示出根據本揭露內容的示例性實施例的主機設備的示例性實施例。
圖14示出根據本揭露內容的示例性實施例的裝置的示例性實施例。
圖15示出根據本揭露內容的示例性實施例的用於提供裝置記憶體資訊的方法的實施例。
圖16示出根據本揭露內容的示例性實施例的用於組態裝置記憶體的方法的實施例。
圖17示出根據本揭露內容的示例性實施例的用於將程式資源載入至裝置的方法的實施例。
502:裝置
504:裝置功能性
506:裝置記憶體
510:控制器
518:管理邏輯
522:組態請求
523:組態資訊
Claims (20)
- 一種裝置,包括: 裝置記憶體;以及 裝置功能性電路,其中所述裝置功能性電路的至少一部分能夠存取所述裝置記憶體的至少一部分;以及 控制電路,經組態以提供資訊,其中所述資訊指示所述裝置功能性電路的所述至少一部分能夠存取所述裝置記憶體的所述至少一部分。
- 如請求項1所述的裝置,其中所述資訊進一步指示所述裝置記憶體的所述至少一部分的特性。
- 如請求項1所述的裝置,更包括通信介面,其中所述控制電路經組態以使用所述通信介面提供所述資訊。
- 如請求項3所述的裝置,其中所述控制電路經組態以: 使用所述通信介面接收請求;以及 基於所述請求提供所述資訊。
- 如請求項1所述的裝置,其中裝置記憶體的所述部分為裝置記憶體的第一部分,且其中所述資訊指示所述裝置功能性電路的所述至少一部分能夠存取所述裝置記憶體的第二部分。
- 如請求項1所述的裝置,其中所述裝置功能性電路的所述部分為所述裝置功能性電路的第一部分,且其中所述資訊指示所述裝置功能性電路的第二部分能夠存取所述裝置記憶體的所述至少一部分。
- 如請求項1所述的裝置,其中: 所述裝置功能性電路的所述至少一部分的第一部分經組態為第一名稱空間;以及 所述裝置記憶體的所述至少一部分的第二部分經組態為第二名稱空間。
- 一種裝置,包括: 裝置記憶體;以及 裝置功能性電路,其中所述裝置功能性電路的至少一部分能夠存取所述裝置記憶體的至少一部分;以及 控制電路,經組態以: 接收至少一個請求;以及 基於所述至少一個請求執行組態操作,其中所述組態操作包括將所述裝置記憶體的至少一部分組態為由所述裝置功能性電路的所述至少一部分存取。
- 如請求項8所述的裝置,其中所述組態操作包括: 接收組態資訊;以及 將所述組態資訊提供至與所述裝置功能性電路的所述至少一部分相關聯的記憶體控制設備。
- 如請求項8所述的裝置,其中所述組態操作包括將所述裝置記憶體的所述至少一部分分配至所述裝置功能性電路的所述至少一部分。
- 如請求項8所述的裝置,更包括通信介面,其中所述控制電路經組態以使用所述通信介面接收所述請求。
- 如請求項8所述的裝置,其中裝置記憶體的所述部分為裝置記憶體的第一部分,且其中所述控制電路經組態以基於所述至少一個請求而將所述裝置記憶體的第二部分組態為由所述裝置功能性電路的所述至少一部分存取。
- 如請求項8所述的裝置,其中所述裝置功能性電路的所述部分為所述裝置功能性電路的第一部分,且其中所述控制電路經組態以基於所述至少一個請求而將所述裝置記憶體的所述至少一部分組態為由所述裝置功能性電路的第二部分存取。
- 如請求項8所述的裝置,其中: 所述裝置功能性電路的所述至少一部分的第一部分經組態為第一名稱空間;以及 所述裝置記憶體的所述至少一部分的第二部分經組態為第二名稱空間。
- 如請求項8所述的裝置,其中所述裝置功能性電路的所述部分包括: 計算引擎;以及 程式,經組態以使用所述計算引擎。
- 一種裝置,包括: 至少一個計算資源;以及 控制電路,經組態以: 接收程式; 使所述程式與所述至少一個計算資源的第一計算名稱空間相關聯;以及 使所述程式與所述至少一個計算資源的第二計算名稱空間相關聯。
- 如請求項16所述的裝置,更包括通信介面,其中所述控制電路經組態以使用所述通信介面接收所述程式。
- 如請求項17所述的裝置,其中所述控制電路經組態以使用所述通信介面提供關於所述程式的資訊。
- 如請求項16所述的裝置,其中所述控制電路經組態以: 將所述至少一個計算資源的至少第一部分組態為所述第一計算名稱空間;以及 將所述至少一個計算資源的至少第二部分組態為所述第二計算名稱空間。
- 如請求項16所述的裝置,其中所述控制電路經組態以: 接收命令;以及 基於所述命令接收所述程式。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263339506P | 2022-05-08 | 2022-05-08 | |
US63/339,506 | 2022-05-08 | ||
US18/141,362 US20230359376A1 (en) | 2022-05-08 | 2023-04-28 | Systems, methods, and apparatus for managing device memory and programs |
US18/141,362 | 2023-04-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202344978A true TW202344978A (zh) | 2023-11-16 |
Family
ID=86330364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112116726A TW202344978A (zh) | 2022-05-08 | 2023-05-05 | 用於管理裝置記憶體的裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230359376A1 (zh) |
EP (1) | EP4276641A1 (zh) |
KR (1) | KR20230156890A (zh) |
TW (1) | TW202344978A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201814918D0 (en) * | 2018-09-13 | 2018-10-31 | Blancco Tech Group Ip Oy | Method and apparatus for use in sanitizing a network of non-volatile memory express devices |
US11200082B2 (en) * | 2019-10-31 | 2021-12-14 | EMC IP Holding Company LLC | Data storage system employing dummy namespaces for discovery of NVMe namespace groups as protocol endpoints |
US11163716B2 (en) * | 2020-03-16 | 2021-11-02 | Dell Products L.P. | Discovery controller registration of non-volatile memory express (NVMe) elements in an NVMe-over-fabrics (NVMe-oF) system |
-
2023
- 2023-04-28 US US18/141,362 patent/US20230359376A1/en active Pending
- 2023-05-04 KR KR1020230058485A patent/KR20230156890A/ko unknown
- 2023-05-05 TW TW112116726A patent/TW202344978A/zh unknown
- 2023-05-08 EP EP23172094.7A patent/EP4276641A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4276641A1 (en) | 2023-11-15 |
KR20230156890A (ko) | 2023-11-15 |
US20230359376A1 (en) | 2023-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346042B2 (en) | Management of external memory | |
US10564872B2 (en) | System and method for dynamic allocation to a host of memory device controller memory resources | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
CN107077303B (zh) | 分配和配置持久存储器 | |
US20200371700A1 (en) | Coordinated allocation of external memory | |
US11656775B2 (en) | Virtualizing isolation areas of solid-state storage media | |
US20100083247A1 (en) | System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA | |
US20170344430A1 (en) | Method and apparatus for data checkpointing and restoration in a storage device | |
US20160283127A1 (en) | Fork-safe memory allocation from memory-mapped files with anonymous memory behavior | |
US10114763B2 (en) | Fork-safe memory allocation from memory-mapped files with anonymous memory behavior | |
KR20160022226A (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
KR20140097483A (ko) | 휘발성 메모리 및 비휘발성 메모리 간의 코드 및 데이터 저장소들을 분산하기 위한 방법 및 장치 | |
US20210278998A1 (en) | Architecture and design of a storage device controller for hyperscale infrastructure | |
KR20230094964A (ko) | 이종 메모리 타겟의 인터리빙 | |
US11544205B2 (en) | Peer storage devices sharing host control data | |
CN113204311A (zh) | NVMe SGL位存储桶传输 | |
TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
TW202344978A (zh) | 用於管理裝置記憶體的裝置 | |
CN117032555A (zh) | 用于管理设备存储器和程序的系统、方法和装置 | |
US20230359389A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230084539A1 (en) | Computational storage device and storage system including the computational storage device | |
US11835992B2 (en) | Hybrid memory system interface | |
US11899585B2 (en) | In-kernel caching for distributed cache | |
US20230141936A1 (en) | Secure processor, operating method thereof, and storage device including same | |
US20230342049A1 (en) | Reading a master boot record for a namespace using a regular read operation |