TW202345003A - 用於具有相干介面的隊列管理的系統、方法和設備 - Google Patents
用於具有相干介面的隊列管理的系統、方法和設備 Download PDFInfo
- Publication number
- TW202345003A TW202345003A TW112102006A TW112102006A TW202345003A TW 202345003 A TW202345003 A TW 202345003A TW 112102006 A TW112102006 A TW 112102006A TW 112102006 A TW112102006 A TW 112102006A TW 202345003 A TW202345003 A TW 202345003A
- Authority
- TW
- Taiwan
- Prior art keywords
- queue
- host
- interface
- coherence
- memory
- Prior art date
Links
- 230000001427 coherent effect Effects 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000007246 mechanism Effects 0.000 claims abstract description 49
- 238000012544 monitoring process Methods 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 112
- 238000004891 communication Methods 0.000 claims description 42
- 230000008569 process Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Memory System Of A Hierarchy Structure (AREA)
- Testing And Monitoring For Control Systems (AREA)
Abstract
一種方法可包括:由第一裝置對隊列進行存取,其中隊列可由第二裝置存取,且第一裝置可藉由相干介面連接至第二裝置;以及由相干介面向第二裝置指示存取。指示可包括藉由監視機制進行指示。指示可包括產生監視請求。指示可包括基於監視請求產生警報。隊列可包括提交隊列。隊列可包括完成隊列。存取可包括自隊列讀取表項。存取可包括向隊列寫入表項。表項可包括命令。表項可包括完成。第一裝置可包括主機,且第二裝置可包括設備。隊列可位於主機處。
Description
本揭露一般而言是有關於隊列管理,且更具體而言,是有關於用於具有相干介面的隊列管理的系統、方法和設備。
[相關申請案的參考]
本申請案主張於2022年1月27日提出申請且名稱為「用於針對相干介面的隊列處置的系統、方法和設備(Systems, Methods, And Devices For Queue Handling For a Coherent Interface)」的序列號為63/303,985的美國臨時專利申請案的優先權及權益,所述美國臨時專利申請案併入本案供參考。
主機與設備可使用可利用一或多個隊列的協定進行通訊。主機可將例如命令等表項寫入提交隊列。主機亦可向設備提供所述表項已被寫入提交隊列的指示。基於接收到指示,設備可自提交隊列提取表項且對表項進行處理。設備亦可將例如完成等表項寫入完成隊列。主機可自完成隊列提取表項且對表項進行處理。
背景技術部分中揭露的上述資訊僅用於增強對發明原理的背景的理解,且因此它可能包含不構成先前技術的資訊。
[本揭露目的]
本揭露的目的是提供減少門鈴暫存器(doorbell register)及相關中斷的資源的系統、方法和設備。
一種方法可包括:由第一裝置對隊列進行存取,其中隊列可由第二裝置存取,且第一裝置可藉由相干介面連接至第二裝置;以及由相干介面向第二裝置指示存取。指示可包括藉由監視機制進行指示。指示可包括產生監視請求。指示可包括基於監視請求產生警報。隊列可包括提交隊列。隊列可包括完成隊列。存取可包括自隊列讀取表項。存取可包括向隊列寫入表項。表項可包括命令。表項可包括完成。第一裝置可包括主機,且第二裝置可包括設備。隊列可位於主機處。隊列可位於設備處。隊列可與通訊協定相關聯。通訊協定可包括儲存協定。儲存協定可包括快速非揮發性記憶體(NVMe)協定。相干介面可包括計算快速鏈路(CXL)介面。
一種設備可包括:相干介面;以及控制器,被配置成使用相干介面使用隊列進行通訊,且藉由相干介面接收對隊列的存取的指示。設備可包括快取,且相干介面可被配置成維持快取的至少一部分的相干性。隊列可至少局部地位於快取中。設備可包括共享本地記憶體,且相干介面可被配置成維持共享本地記憶體的至少一部分的相干性。隊列可至少局部地位於共享本地記憶體的所述至少一部分中。相干介面可被配置成基於存取接收監視請求。相干介面可被配置成基於監視請求產生警報。控制器可被配置成自相干介面接收警報作為指示。控制器可被配置成基於指示對隊列中的表項進行處理。
一種系統可包括:主機;以及設備,使用相干介面耦合至主機,設備可包括控制器,控制器被配置成:使用相干介面使用隊列而與主機進行通訊;以及由相干介面接收主機對隊列的存取的指示。設備可包括共享本地記憶體,相干介面可被配置成維持共享本地記憶體的至少一部分的相干性;且隊列可至少局部地位於共享本地記憶體的所述至少一部分中。相干介面可為第一相干介面,隊列可為第一隊列,指示可為第一指示,存取可為第一存取,且主機可更包括第二相干介面,其中主機可被配置成使用第二相干介面使用第二隊列而與設備進行通訊,且藉由第二相干介面接收設備對第二隊列的第二存取的第二指示。設備可包括共享本地記憶體,第一相干介面及第二相干介面可被配置成維持共享本地記憶體的至少一部分的相干性。第二隊列可至少局部地位於共享本地記憶體的所述至少一部分中。
[本揭露的有益效果]
根據本揭露,藉由相干機制的監聽及警報而將提交隊列及/或完成隊列的更新通知給主機及/或設備。因此,提供減少門鈴暫存器及相關中斷的資源的系統、方法和設備。
通訊協定可使用一或多個隊列在組件之間交換命令、完成及/或類似項。舉例而言,為了自設備讀取資料,主機可將讀取命令放置於可由設備存取的提交隊列中。主機亦可向設備發送指示,以通知設備所述命令存在於提交隊列中。設備可自提交隊列提取讀取命令且對讀取命令進行處理,例如藉由向主機發送所請求的資料。設備亦可將完成放置於完成隊列中,以通知主機讀取命令被完成。
在一些態樣中,通訊協定可使用指示機制來指示表項已被添加至隊列。舉例而言,除了將命令放置於提交隊列中之外,主機亦可向暫存器(可被稱為門鈴暫存器)寫入表項。對暫存器的寫入可產生中斷,所述中斷可通知設備命令已被放置於提交隊列中。然而,此種指示機制可能消耗主機及/或設備資源,例如,以將表項寫入暫存器(可位於設備處)、服務中斷及/或進行類似操作。
根據本揭露實例性實施例的通訊方案可利用相干介面的相干性機制來實行用於隊列存取的指示功能的一或多個態樣。舉例而言,記憶體相干介面可包括相干性機制,相干性機制可向一或多個裝置通知相干性記憶體位置的改變。藉由實施具有相干記憶體位置的隊列,相干性機制可通知一或多個裝置(例如,主機、設備及/或類似裝置)隊列已被存取(例如,寫入及/或讀取)。端視實施方式細節而定,此可減少或消除用於指示隊列已被存取的資源量。舉例而言,端視實施方式細節而定,此可減少或消除門鈴暫存器、一或多個處理操作、一或多個中斷、及/或類似項的使用。
在一些實施例中,可使用相干介面的相干性特徵來實施隊列的指示機制。舉例而言,相干介面可實施快取相干性協定,快取相干性協定可用於例如向設備提供對主機記憶體的一部分的存取。主機記憶體的所述部分的副本可儲存於設備處的快取記憶體中,且相干介面的快取相干性機制可維持設備處的快取記憶體與主機記憶體的所述部分的相干性。在一些實施例中,相干性機制可使用監視機制(例如,監聽機制)來確定記憶體位置已被更新(例如,在主機處或設備處的對應快取)。在此種實施例中,若使用設備快取記憶體來實施隊列,則可使用監視機制向主機及/或設備指示隊列已被存取。
作為另一實例,相干介面可實施記憶體相干性協定,記憶體相干性協定可用於例如向主機提供對設備處的本地記憶體的共享存取。相干介面的記憶體相干性機制可維持共享設備記憶體的相干性,例如,使得若共享記憶體位置被主機或設備更新,則可通知另一者以防止它使用過期資料。在此種實施例中,若使用設備共享記憶體來實施隊列,則可使用相干介面的記憶體相干性機制來向主機及/或設備指示隊列已被存取。
作為另外一種選擇或附加地,相干介面的快取相干性機制與記憶體相干性機制可結合使用以實施隊列的指示機制。舉例而言,可使用相干介面的記憶體相干性機制在設備共享記憶體位置中實施隊列。可使用相干介面的快取相干性機制來監視(例如,藉由監聽)設備共享記憶體位置中的隊列,以確定隊列已被主機更新且向設備發送指示(例如,警報)。
圖1示出根據本揭露實例性實施例的用於通訊協定的隊列方案的實施例。圖1中所示的實施例可例如與例如快速非揮發性記憶體(Nonvolatile Memory Express,NVMe)等儲存協定一起使用,所述儲存協定可使用例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)等互連及/或可被稱為CXL.IO的CXL的非相干輸入及/或輸出(input and/or output,I/O或IO)協定。作為另一實例,圖1中所示的實施例可與可使用例如乙太網路等網路的組構上NVMe(NVMe-over-fabric,NVMe-oF)協定一起使用,但原理並不限於該些或任何其他實施方式細節。在利用對CXL的支援實施的一些實施例中,CXL.IO協定可本質上與PCIe對應,而CXL.mem及/或CXL.cache協定可實施可提供相干性的一或多個附加特徵。
圖1中所示的實施例可包括主機102及設備104。主機102可包括位於例如主機記憶體110中的提交隊列(submission queue,SQ)106及完成隊列(completion queue,CQ)108。在其他實施例中,提交隊列106及/或完成隊列108可位於設備104及/或任何其他位置處。設備104可包括控制器112,控制器112可包括提交隊列尾部門鈴暫存器114及/或完成隊列頭部門鈴暫存器116。
在一些實施例中,提交隊列106及/或完成隊列108可用於例如使設備104能夠接收及/或處理來自主機102的一或多個命令。提交隊列106及/或完成隊列108可被實施為例如循環的先入先出(first-in-first-out,FIFO)隊列,在循環的先入先出隊列中,隊列的一個端部可在邏輯上包繞至隊列的另一個端部,以使表項能夠被無限地添加至隊列及自隊列被移除(在一些實施例中,受制於最大表項數目),但隊列可使用有限的線性位址空間來實施。參照提交隊列106或完成隊列108中的任一者,具有最老的未提取表項(例如,命令或完成)的槽可被稱為頭部,且下一個可用的未被佔用的槽可被稱為尾部。提交隊列106的頭部可由頭部表項指針103(亦可被稱為頭部指針)指向,且提交隊列106的尾部可由尾部表項指針105(亦可被稱為尾部指針)指向。完成隊列108的頭部可由頭部表項指針107指向,且完成隊列108的尾部可由尾部表項指針109指向。當隊列為空時,頭部表項指針與尾部表項指針可指向同一位置。
用於接收及/或處理來自主機102的一或多個命令的方法的實例性實施例可如下進行。
在操作(1)處,主機102可在提交隊列106中的一或多個槽中放置(例如,寫入)一或多個命令(例如,每個槽一個命令),提交隊列106開始於由尾部表項指針105指向的空槽。然後可對尾部表項指針105進行更新以指向提交隊列106中的下一個可用槽。
在操作(2)處,主機102亦可對提交隊列尾部門鈴暫存器(submission queue tail doorbell register,SQ-TDB)114進行更新(例如,寫入),以啟用可通知控制器112一或多個新命令已被放置於提交隊列106中的過程。舉例而言,主機102可向提交隊列尾部門鈴暫存器114寫入提交隊列尾部表項指針105的新值。
在一些實施例中,可使用硬體、軟體或其組合來對提交隊列尾部門鈴暫存器114進行監視,以向控制器112提供一或多個新命令已被放置於提交隊列106中的指示。舉例而言,在一些實施例中,提交隊列尾部門鈴暫存器114可被實施為硬體監視的暫存器或記憶體位置(例如,例如控制器112及/或設備104處的PCIe位置等位置),硬體監視的暫存器或記憶體位置可基於暫存器114的更新而針對設備104產生中斷。在一些實施例中,中斷可用作向控制器112及/或設備104指示一或多個新命令已被放置於提交隊列106中的指示。
在一些實施例中,接收一或多個新命令被放置於提交隊列106中的指示可使控制器112能夠追蹤提交隊列106中可能存在的未被提取及/或未被處理的命令的數目。在一些實施例中,此資訊可用於例如命令仲裁過程,命令仲裁過程可使控制器112能夠判斷控制器112可自哪個提交隊列(若存在多個提交隊列)提取一或多個命令。
在操作(3)處,控制器112可自提交隊列106提取(例如,藉由讀取)一或多個命令,提交隊列106開始於由頭部表項指針103指向的位置處。可例如使用設備104可存取的記憶體位置(例如,PCIe記憶體位置)來實施頭部表項指針103。在一些實施例中,頭部表項指針103可作為提交隊列106的初始化過程的一部分來建立。然後,可對頭部表項指針103進行更新,以指向提交隊列106中的下一個(例如,最老的)未提取命令。
在圖1中所示的實施例中,提交隊列106可為位於主機102處的循環隊列。因此,對於主機而言,追蹤提交隊列106的頭部的位置(例如,對提交隊列106進行包繞以防止提交隊列106的頭部與尾部之間的碰撞)可能是有益的。在一些實施例中,主機102可存取頭部表項指針103,且因此,主機102可讀取頭部表項指針103來追蹤提交隊列106的頭部的位置。然而,在一些其他實施例中,主機102可能不直接對提交隊列106的頭部表項指針103進行存取。因此,圖1中所示的方案可實施一種機制,以使主機102能夠追蹤提交隊列106的頭部的位置。舉例而言,在一些實施例中,此種機制可本質上被實施為提交隊列頭部門鈴暫存器,例如,使用PCIe基位址暫存器。作為另一實例,在一些實施例中,此種機制可藉由控制器112在以下闡述的完成隊列108中的表項(例如,每一表項)中向主機102發送頭部表項指針103的當前值來實施。
在操作(4)處,控制器112可對控制器112已自提交隊列106提取的一或多個命令進行處理。在一些實施例中,控制器112可無序地對一或多個命令進行處理。在一些實施例中,提取及/或處理可被稱為消費。
在操作(5)處,控制器112可將與一或多個經處理命令對應的一或多個完成放置於完成隊列108中,完成隊列108開始於例如由完成隊列尾部表項指針109指向的下一個可用槽。可對完成隊列尾部表項指針109進行更新以指向完成隊列108中的下一個可用槽。在一些實施例中,完成可包括可自先前表項反轉的階段標籤,例如,向主機102指示完成隊列表項(例如,新的完成)是可用於進行處理的新表項。
在操作(6)處,控制器112可產生中斷(例如,基於接腳的中斷、訊息訊號中斷(message signaled interrupt,MSI)、擴展的MSI中斷(extended MSI interrupt,MSI-X)及/或類似中斷)以向主機102指示一或多個完成已被添加至完成隊列108。在一些實施例中,可將用於一或多個完成的一或多個中斷合併成較少數目的中斷。
在操作(7)處,主機102可自完成隊列108提取(例如,藉由讀取)一或多個完成,完成隊列108開始於可例如由完成隊列頭部表項指針107指向的頭部處。在一些實施例中,主機102可對主機102已自完成隊列108提取的完成中的一或多者進行處理。在一些實施例中,主機102可繼續提取完成及/或對完成進行處理,例如,直至主機102遇到具有自先前提取的完成的階段標籤反轉的階段標籤的完成。
在操作(8)處,主機102可對完成隊列頭部門鈴暫存器(completion queue head doorbell register,CQ-HDB)116進行更新(例如,寫入),以啟用可通知控制器112一或多個完成已自完成隊列108被移除(例如,自完成隊列108釋放)(例如,藉由自完成隊列108讀取一或多個完成)的過程。舉例而言,主機102可將完成隊列頭部表項指針107的新值寫入完成隊列頭部門鈴暫存器116。在一些實施例中,主機102可在對相關聯的完成隊列頭部門鈴暫存器116進行更新之前提取一或多個完成及/或對所述一或多個完成進行處理。
針對圖1闡述的方法及/或裝置可使得使用一或多個隊列的通訊協定能夠來對主機102與設備104的活動進行協調(例如,保持同步)。然而,端視實施方式細節而定,涉及一或多個門鈴暫存器的方案的使用可能消耗主機及/或設備資源,例如,主機102將所述一或多個表項寫入所述一或多個暫存器114及/或116(可位於設備104處)、服務一或多個中斷及/或進行類似操作。
出於例示的目的,一些實施例可在一些具體實施方式細節的上下文中進行闡述。然而,原理並不限於該些或任何其他實施方式細節。
圖2示出根據本揭露實例性實施例的用於使用一或多個隊列及相干介面進行通訊的方案的實施例。圖2中所示的實施例可包括第一裝置222及第二裝置224。第一裝置222可包括第一相干介面226。第二裝置224可包括第二相干介面228及控制器230。第一相干介面226與第二相干介面228可藉由通訊連接件232進行通訊。在一些實施例中,第一裝置222及/或第二裝置224可被配置成主機、客戶端、設備及/或類似裝置、或其任意組合。在一些實施例中,控制器230可為主機控制器、客戶端控制器、設備控制器及/或類似裝置。在一些實施例中,除了相干訊息之外,第一相干介面226及/或第二相干介面228可傳遞非相干訊息。舉例而言,在實施對CXL的支援的實施例中,可使用CXL.IO協定來傳遞非相干訊息。作為另外一種選擇或附加地,除了第一相干介面226及/或第二相干介面228之外,一些實施例可例如使用一或多個介面(例如,具有非相干訊息傳遞能力的一或多個介面)來傳遞非相干訊息。
控制器230可由第二裝置224使用,以使用通訊協定藉由第二相干介面228與第一裝置222進行通訊,所述通訊協定可使用一或多個隊列234以用於在第一裝置222與第二裝置224之間交換請求、命令、完成及/或類似項。在一些實施例中,所述一或多個隊列234中的一或多者可例如使用如以上針對圖1闡述的循環的先進先出(FIFO)來實施。在一些實施例中,所述一或多個隊列234中的一或多者可使用任何其他類型的隊列佈置來實施。舉例而言,在一些實施例中,第一裝置222可使用主機來實施,第二裝置224可使用設備來實施,且隊列234可使用記憶體位置(其中主機可寫入指示設備實行一或多個操作的表項)來實施。設備可偵測(例如,藉由指示236)主機的寫入且實行表項所指示的所述一或多個操作。設備可寫回記憶體位置,以向主機指示所述一或多個操作的至少一部分被完成。在一些實施例中,此記憶體位置可在原子記憶體存取環境中實施,原子記憶體存取環境可在例如第一中央處理單元(central processing unit,CPU)與第二CPU之間、在CPU與圖形處理單元(graphics processing unit,GPU)之間、在CPU與加速器之間及/或類似位置處維持同步。在一些實施例中,且端視實施方式細節而定,此種記憶體位置可使用或可不使用例如FIFO、SQ、CQ及/或類似模型等模型來實施。
所述一或多個隊列234可位於第二裝置224處,如以圖2中的虛線輪廓所示。附加地或作為另外一種選擇,所述一或多個隊列234可位於第一裝置222處,可局部地位於第一裝置222處且局部地位於第二裝置224處,或者可位於任意其他一或多個位置處。在一些實施例中,所述一或多個隊列234中的一或多者可本質上位於第一裝置222及第二裝置224二者處,例如,在隊列234使用第二裝置224處的相干快取(被配置成對第一裝置222處的記憶體的一或多個位置進行快取)來實施的情形中。
第二相干介面228可向控制器230提供第一裝置222對所述一或多個隊列234中的一或多者的存取的指示236。在一些實施例中,對隊列進行存取可指對隊列中的表項、指向隊列中的位置(例如,表項)的指針及/或類似項進行存取。舉例而言,在一些實施例中,指示236可指示對一或多個記憶體位置的存取(例如,讀取及/或寫入),所述一或多個記憶體位置可至少局部地包含於所述一或多個隊列234中的一或多者中及/或指向所述一或多個隊列234中的一或多者中的位置。在一些實施例中,且端視實施方式細節而定,圖2中所示的實施例可利用第一相干介面226及/或第二相干介面228的相干性機制來提供指示236。舉例而言,第一相干介面226及/或第二相干介面228可實施相干性機制,相干性機制可向第一裝置222及/或第二裝置224通知第一裝置222及/或第二裝置224處的一或多個快取位置及/或共享相干記憶體位置的改變。藉由使用相干快取及/或相干記憶體位置實施所述一或多個隊列234中的一或多者及/或指向隊列中一或多個位置的一或多個指針,相干性機制可提供所述一或多個隊列234中的一或多者及/或指向隊列中一或多個位置的一或多個指針已被第一裝置222存取的指示236。端視實施方式細節而定,此可減少或消除用於提供指示236的資源量。舉例而言,端視實施方式細節而定,此可減少或消除門鈴暫存器、一或多個處理操作、一或多個中斷及/或類似操作的使用。
第一裝置222及/或第二裝置224可使用任何類型的裝置來實施,所述任何類型的裝置包括例如計算伺服器、儲存伺服器、網路伺服器及/或類似伺服器等伺服器、例如工作站、個人電腦、平板電腦、智慧型電話及/或類似裝置等電腦、例如加速器設備、儲存設備、網路設備、記憶體擴展及/或緩衝設備等設備、GPU、神經處理單元(neural processing unit,NPU)、張量處理單元(tensor processing unit,TPU)及/或類似裝置、或其任意組合。
第一相干介面226及/或第二相干介面228可使用例如計算快速鏈路(Compute Express Link,CXL)等任何類型的相干介面及/或相干性協定及/或例如CXL.mem、CXL.cache、CXL.IO及/或類似協定等相干協定、Gen-Z、開放相干加速器處理器介面(Open Coherent Accelerator Processor Interface,OpenCAPI)、用於加速器的快取相干互連(Cache Coherent Interconnect for Accelerator,CCIX)及/或類似物、或其任意組合來實施。
控制器230可實施可使用一或多個隊列的任何類型的通訊協定,所述任何類型的通訊協定包括例如NVMe、NVMe-oF、PCIe、CXL.IO、串列先進技術附件(Advanced Technology Attachment,ATA)(Serial ATA,SATA)、小型電腦系統介面(Small Computer Systems Interface,SCSI)、串列附接SCSI(Serial Attached SCSI,SAS)、直接記憶體存取(Direct Memory Access,DMA)、遠程DMA(Remote DMA,RDMA)、融合乙太網路上RDMA(RDMA over Converged Ethernet,ROCE)、高級訊息隊列協定(Advanced Message Queuing Protocol,AMQP)及/或類似協定、及/或其任意組合。
通訊連接件232可使用任何類型的有線及/或無線通訊媒體、介面、協定及/或包括以下的類似裝置來實施:PCIe、CXL、高級可擴展介面(Advanced eXtensible Interface,AXI)、乙太網路、傳輸控制協定/網際網路協定((Transmission Control Protocol,TCP)/(Internet Protocol,IP))、光纖通道、無限頻寬(InfiniBand)、SATA、SCSI、SAS、網際網路廣域RDMA協定(Internet Wide Area RDMA Protocol,iWARP)、包括第二代(second generation,2D)、3G、4G、5G及/或類似代的任意無線網路代、任意代的Wi-Fi、藍芽、近場通訊(near-field communication,NFC)及/或類似項、或其任意組合。在一些實施例中,通訊連接件232可包括通訊組構,通訊組構包括一或多個鏈路、匯流排、交換機、集線器、節點、路由器、轉換器、中繼器及/或類似裝置。在一些實施例中,圖2中所示的方案可包括一或多個附加裝置,所述一或多個附加裝置具有使用通訊連接件232及/或其擴展進行連接的一或多個附加相干介面。在一些實施例中,通訊連接件232可包括具有可被一或多個主機、設備及/或類似裝置存取的記憶體的交換機。在一些實施例中,通訊連接件232可包括一或多個附加裝置,所述一或多個附加裝置可被配置成同級(peer)(例如,同等同級),且在一些實施例中,所述一或多個附加裝置可包括一或多個其他裝置可存取的記憶體。
在其中第一裝置222及/或第二裝置224中的一或多者被實施為儲存設備的實施例中,儲存設備可包括任何類型的非揮發性儲存媒體,所述非揮發性儲存媒體例如基於固態媒體(例如,固態驅動機(solid state drive,SSD))、磁性媒體(例如,硬碟驅動機(hard disk drive,HDD))、光學媒體及/或類似媒體、或者其任意組合。舉例而言,在一些實施例中,儲存設備可被實施為基於反及(not-AND,NAND)快閃記憶體的SSD、例如交叉網格非揮發性記憶體等持續記憶體、具有體電阻改變的記憶體、相變記憶體(phase change memory,PCM)、及/或類似裝置、或其任意組合。任何此種儲存設備可使用任何連接件配置(例如SATA、SCSI、SAS、U.2、M.2、及/或類似配置)以任何形狀因數(例如3.5英吋、2.5英吋、1.8英吋、M.2、企業及資料中心SSD形狀因數(Enterprise and Data Center SSD Form Factor,EDSFF)、NF1及/或類似形狀因數)來實施。任何此種儲存設備可全部或局部地與伺服器機箱、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合一起實施及/或結合伺服器機箱、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合使用。
圖3示出根據本揭露實例性實施例的用於使用一或多個隊列及相干介面進行通訊的系統的實例性實施例。圖3中所示的實施例可用於例如實施圖2中所示的方案。圖3中所示的實施例可包括主機322及設備324,主機322與設備324可使用通訊連接件332進行通訊。
主機322可例如使用伺服器或任何其他裝置來實施。主機322可包括相干介面326及/或協定邏輯342。主機322可使用相干介面326以藉由通訊連接件332與設備324進行通訊。
相干介面326可包括相干性引擎344及/或監聽邏輯346(亦可被稱為監視邏輯)。在一些實施例中,監聽邏輯346可能夠偵測隊列的存取,例如,一或多個資料記憶體位置的一或多個修改(例如,寫入)及/或所述一或多個資料記憶體位置的一或多個讀取。相干介面326可例如使用CXL及/或一或多個CXL協定或任何其他相干介面、相干協定及/或類似項來實施。舉例而言,在其中相干介面326使用CXL實施的實施例中,相干性引擎344可使用CXL相干性引擎(亦可被稱為相干性邏輯)來實施。在一些實施例中,監聽邏輯346可與相干性引擎344分離及/或局部整合。
協定邏輯342可實施例如以下協定:例如NVMe等儲存協定或者可使用一或多個隊列的任何其他通訊協定。舉例而言,在其中協定邏輯342實施NVMe協定的實施例中,協定邏輯342可如下所述對提交隊列334及/或完成隊列335進行配置。在一些實施例中,協定邏輯342及/或協定控制器330可實施可能涉及使用一或多個隊列的任何其他類型的通訊協定。舉例而言,主機可使用一或多個隊列來將一或多個工作列表指派給一或多個圖形處理單元(GPU)、現場可程式化閘陣列(field programmable gate array,FPGA)、加速器及/或類似裝置。作為另一實例,主機可使用一或多個隊列來針對一或多個網路連接設備、通訊設備及/或類似設備提供一或多個資料傳送列表。
設備324可包括相干介面328、設備本地記憶體350、協定控制器330及/或設備功能電路352。設備324可使用任何類型的設備來實施,所述任何類型的設備包括例如加速器設備、儲存設備、網路設備、記憶體擴展及/或緩衝設備、GPU、神經處理單元(NPU)、張量處理單元(TPU)、FPGA及/或類似設備、或者其任意組合(例如計算儲存設備)。
設備功能電路352可包括可能夠使設備324實行其預期功能的任何裝置。舉例而言,若設備324被實施為加速器,則設備功能電路352可包括一或多個計算資源,例如一或多個處理器(例如CPU,(例如)例如x86處理器等複雜指令集電腦(complex instruction set computer,CISC)處理器及/或例如精簡指令集電腦(reduced instruction set computer,RISC)-V及/或高級RISC機器(Advanced RISC Machine,ARM)處理器等精簡指令集電腦(RISC)處理器)、應用專用積體電路(application specific integrated circuit,ASIC)、FPGA、及/或類似裝置、或其任意組合。作為另一實例,若設備324被實施為儲存設備,則設備功能電路352可包括一或多個儲存媒體、儲存設備控制器、媒體轉換層(例如,快閃轉換層(flash translation layer,FTL))及/或類似層或其任意組合。
相干介面328可包括相干性引擎358及/或監聽邏輯360(亦可被稱為監視邏輯)。相干介面328可例如使用CXL及/或一或多個CXL協定或任何其他相干介面、相干協定、及/或類似項來實施。舉例而言,在其中相干介面328使用CXL實施的實施例中,相干性引擎358可使用CXL相干性引擎(亦可被稱為相干性邏輯)來實施。在一些實施例中,監聽邏輯360可與相干性引擎358分離及/或局部整合。
在一些實施例中,設備本地記憶體350的全部或一部分可由記憶體相干性協定來相干地維持。舉例而言,在其中相干介面328使用CXL實施的實施例中,相干介面328可使用CXL.mem協定來維持設備本地記憶體350與設備324及/或主機322的相干性。
作為另外一種選擇或附加地,在一些實施例中,設備本地記憶體350的全部或一部分可由快取相干性協定來相干地維持。舉例而言,在其中使用CXL來實施相干介面328的實施例中,相干介面328可使用CXL.cache協定來維持設備本地記憶體350的全部或一部分與設備324及/或主機322的相干性。
作為另外一種選擇或附加地,在一些實施例中,相干介面的快取相干性機制與記憶體相干性機制可組合使用,以相干地維持設備本地記憶體350的全部或一部分。舉例而言,在其中使用CXL來實施相干介面328的實施例中,相干介面328可使用CXL.mem協定來將設備本地記憶體350的全部或一部分配置為相干記憶體,且使用CXL.cache協定來實施用於可能位於設備本地記憶體350的相干部分中的隊列的指示機制。
在一些實施例中,設備本地記憶體350可配置有任意數目的隊列。舉例而言,在圖3中所示的實施例中,設備本地記憶體350可配置有提交隊列334及/或完成隊列335。
協定控制器330可實施例如以下協定:例如NVMe等儲存協定或者可使用一或多個隊列的任何其他通訊協定。舉例而言,在其中協定控制器330實施NVMe的實施例中,提交隊列334及/或完成隊列335可分別被配置為NVMe提交隊列及/或NVMe完成隊列。
在一些實施例中,相干介面328可向協定控制器330提供主機322對提交隊列334及/或完成隊列335進行存取的指示336。舉例而言,圖3中所示的實施例可利用相干性引擎358及/或監聽邏輯360來向協定控制器330提供提交隊列334及/或完成隊列335的改變的指示,如以下所更詳細闡述。
在一些實施例中,相干介面326可向主機322處的協定邏輯342提供設備324對提交隊列334及/或完成隊列335的存取的指示337。舉例而言,圖3中所示的實施例可利用相干性引擎344及/或監聽邏輯346來向協定邏輯342提供提交隊列334及/或完成隊列335的改變的指示,如以下所更詳細闡述。
在一些實施例中,對提交隊列334及/或完成隊列335的存取可涉及表項(例如,命令),所述表項(例如,命令)可涉及對例如讀取資料、寫入資料及/或類似資料等資料的傳送。在一些實施例中,此種資料可至少局部地駐留於設備本地記憶體350中(至少一部分可作為共享記憶體被相干地維持)、其他設備記憶體中、系統記憶體(例如,主機322處的主機記憶體)中或任何其他位置處。
圖4示出根據本揭露實例性實施例的使用一或多個隊列及相干介面的通訊方法的實例性實施例。圖4中所示的實施例可與圖3中所示的系統一起使用。
出於例示的目的,圖3中所示的實例性實施例可結合圖4來闡述,且在其中相干介面326及328可使用CXL來實施,且協定邏輯342及協定控制器330可使用NVMe來實施的系統的上下文中闡述。然而,所述原理並不限於該些或任何其他實施方式細節。
參照圖3及圖4,在操作462處,相干性引擎344及/或358中的一者或兩者可例如使用CXL.mem協定將設備324處的設備本地記憶體350的至少一部分配置為供主機322存取的共享相干記憶體。在一些實施例中,當提交隊列334及/或完成隊列335被更新時,相干性引擎344及/或358中的一者或兩者可對欲被監視的共享相干記憶體中的一些或全部進行配置,例如,使用CXL.cache協定來向主機322及/或設備324提供指示。因此,在一些實施例中,可使用CXL.mem協定在設備324的設備本地記憶體350的共享部分中配置提交隊列334及/或完成隊列335,且可將CXL.cache協定的相干性機制(例如相干性規則)應用於可配置提交隊列334及/或完成隊列335的記憶體位置中的一些或全部。
在使用CXL實施的一些實施例中,相干性引擎344及/或358可實施基於硬體的相干性管理,例如,使用CXL.cache主機至設備(host-to-device,H2D)及設備至主機(device-to-host,D2H)請求、響應及資料通道來維持主機322與設備324之間的相干性。在其他實施例中,可使用硬體、軟體或其任意組合來維持快取相干性(例如,快取一致性)。
在操作464處,提交隊列334及/或完成隊列335可被配置成至少局部地駐留於設備本地記憶體350的共享部分中。舉例而言,在其中使用NVMe來實施協定邏輯342及/或協定控制器330的實施例中,提交隊列334及/或完成隊列335可分別被配置成NVMe提交隊列及/或NVMe完成隊列。在一些實施例中,此種佈置可使主機322能夠相干地存取提交隊列334及/或完成隊列335,正如它是主機記憶體的部分那般,但CXL.cache協定的相干性機制被配置成當主機322對提交隊列334及/或完成隊列335的一或多個表項進行更新時,向協定控制器330提供監聽,且因此提供如下所述的警報(例如,作為指示336)。在一些實施例中,可使用CXL.cache直接對提交隊列334及/或完成隊列335進行配置。
在操作466處,監聽邏輯346及/或360可被配置成對例如設備本地記憶體350的共享部分中的提交隊列334及/或完成隊列335中的一些或全部進行監視。舉例而言,在一些實施例中,監聽邏輯360可被配置成對提交隊列334進行監視且在主機322對提交隊列334的一或多個表項進行更新(例如,寫入)時向協定控制器330提供警報(例如,作為指示336)。在一些實施例中,主機322對提交隊列334及/或完成隊列335的一或多個表項的更新可產生主機322對設備324的監聽請求。在一些實施例中,相干性引擎358及/或監聽邏輯360可被配置成基於監聽請求而向協定控制器330產生警報。
在操作468處,監聽邏輯360可確定出主機322已對提交隊列334及/或完成隊列335的一或多個表項進行更新且可向協定控制器330發送警報,例如作為指示336。
在操作470處,協定控制器330可基於接收到警報而對提交隊列334及/或完成隊列335的更新進行處置。所述方法然後可返回至操作468,以等待監聽邏輯360對提交隊列334及/或完成隊列335的另一更新進行偵測。
圖4中所示的實施例可在協定控制器330基於主機322對隊列的存取而自相干性介面328接收警報(例如,作為指示336)的上下文中進行闡述。然而,圖4中所示的方法可被配置成以類似的方式進行操作,以對提交隊列334及/或完成隊列335上的一或多個監聽進行配置,以基於設備324對提交隊列334及/或完成隊列335的存取而自相干性介面326向主機322的協定邏輯342提供警報(例如,作為指示337)。
端視實施方式細節而定,針對圖4及/或圖3闡述的系統及/或方法可用於實施與圖1中所示類似的基於隊列的通訊協定,但門鈴暫存器114及/或116及/或伴隨的中斷及/或其他資源被相干介面326及/或328的相干性機制局部或完全替代。因此,端視實施方式細節而定,針對圖4及/或圖3闡述的系統及/或方法可利用相干介面326及/或328的相干性機制,減少與圖1中所示的門鈴架構相關聯的時間、功耗、操作、記憶空間、開銷及/或類似項。
舉例而言,參照圖1,在使用根據本揭露的相干性機制的一些實施例中,操作(1)及/或(2)可至少部分地被以下操作替代:在所述操作中,主機可將提交隊列表項寫入提交隊列(提交隊列可位於例如如圖3中所示的設備快取及/或設備記憶體位置中),且相干性機制可向設備提供提交隊列已被更新的指示(例如,使用監聽及/或警報)。
作為另一實例,參照圖1,在使用根據本揭露的相干性機制的一些實施例中,操作(5)及/或(6)可至少部分地被以下操作所替代:在所述操作中,設備可將完成寫入完成隊列(所述完成隊列可位於例如如圖3中所示的設備快取及/或設備記憶體位置中),且相干性機制可向主機提供完成隊列已被更新的指示(例如,使用監聽及/或警報)。
作為又一實例,參照圖1,在使用根據本揭露的相干性機制的一些實施例中,可使用相干性機制將第一裝置(例如,主機102及/或設備104)對指針103、105、107及/或109中的任意者的任何存取(例如,更新)指示給另一裝置,例如,如圖2、圖3及/或圖4中所示。
再次參照圖3,在一些實施例中,相干介面326及/或328的相干性機制可提供指示336,以使協定控制器330能夠確定在隊列被更新時或接近隊列被更新時隊列已被更新。在一些實施例中,相干介面326及/或328的相干性機制可維持協定控制器330的一或多個隊列更新的次序。
在一些實施例中,當協定控制器330自隊列提取表項時,相干介面326及/或328的相干性機制可向主機322提供警報,例如,使主機322能夠追蹤隊列的頭部(例如,減少或防止隊列溢出)。作為另外一種選擇或附加地,在一些實施例中,圖3中所示的系統可實施與以上針對圖1所闡述類似的提交隊列頭部門鈴機制,以在協定控制器330自隊列提取表項時通知主機322。
在一些實施例中,可在設備處配置用於一或多個隊列的記憶空間,且相干性協定可被配置成對記憶空間中的一些或全部進行監視(例如,監聽),以使用相干性協定的相干性機制來基於主機對所述一或多個隊列的一或多個表項進行更新而向設備提供指示。
在一些實施例中,通訊協定(例如,NVMe)可被配置成減少或防止對隊列的局部更新。在一些實施例中,通訊協定(例如,NVMe)可被配置成實施原子更新。舉例而言,在一些實施例中,可同時對隊列的一或多個表項進行更新。端視實施方式細節而定,此可減少或防止可能發生的錯誤,例如,若對隊列的局部更新觸發對相干性機制及/或相關聯警報的監聽,且協定控制器在一或多個表項被完全更新之前讀取所述局部更新。
在一些實施例中,通訊協定(例如,NVMe)可使用包繞來實施(例如,界定)隊列大小(例如,提交隊列及/或完成隊列),以使用相干介面的相干性機制來實施更新通知。
在一些實施例中,通訊協定(例如,NVMe)可在一或多個隊列記憶體位址上實施(例如,界定)一或多個相干性設定(例如,監聽設定、警報設定及/或類似設定)。
在一些實施例中,隊列表項的更新(例如,由主機添加提交隊列表項)可觸發設備(例如,例如SSD等儲存設備)中的活動。
在一些實施例中,可基於監聽及/或警報來中斷主機。
在一些實施例中,當啟動裝置(例如,主機、設備及/或類似裝置)時,所述裝置可根據本揭露的實例性實施例宣告一或多個能力。舉例而言,若裝置被實施為NVMe裝置,則所述裝置可宣告(例如,使用配置位元)所述裝置能夠使用相干性機制來指示隊列的更新。
本文中闡述的功能(包括主機功能、設備功能及/或類似功能(例如,協定邏輯342、控制器230、協定控制器330、監聽邏輯346及/或360、相干性引擎344及/或358及/或類似功能)中的任意者)中的任意者可以包括例如以下的硬體、軟體、韌體或者其任意組合來實施:硬體及/或軟體組合邏輯、序列邏輯、定時器、計數器、暫存器、狀態機、例如動態隨機存取記憶體(dynamic random access memory,DRAM)及/或靜態隨機存取記憶體(static random access memory,SRAM)等揮發性記憶體、包括快閃記憶體的非揮發性記憶體、例如交叉網格非揮發性記憶體等持續記憶體、具有體電阻改變的記憶體、相變記憶體(PCM)及/或類似記憶體、及/或其任意組合、複雜可程式化邏輯裝置(complex programmable logic device,CPLD)、現場可程式化閘陣列(field programmable gate array,FPGA)、應用專用積體電路(application specific integrated circuit,ASIC)、CPU(包括複雜指令集電腦(CISC)處理器(例如x86處理器)及/或精簡指令集電腦(RISC)處理器(例如ARM處理器))、圖形處理單元(GPU)、神經處理單元(NPU)、張量處理單元(TPU)及/或類似裝置,其執行儲存於任何類型的記憶體中的指令。在一些實施例中,一或多個組件可被實施為系統晶片(system-on-chip,SOC)。
圖5示出根據本揭露實例性實施例的主機裝置的實例性實施例。圖5中所示的主機裝置500可用於例如實施本文中揭露的主機中的任意者。圖5中所示的主機裝置500可包括處理器502,處理器502可包括記憶體控制器504、系統記憶體506、主機邏輯508及/或相干介面510。圖5中所示的組件中的任意者或全部可藉由一或多個系統匯流排512進行通訊。在一些實施例中,圖5中所示的組件中的一或多者可使用其他組件來實施。舉例而言,在一些實施例中,主機控制邏輯508可藉由執行儲存於系統記憶體506或其他記憶體中的指令的處理器502來實施。在一些實施例中,主機邏輯508可實施本文中揭露的主機功能(包括例如協定邏輯342、讀取及/或寫入一或多個隊列及/或類似功能)中的任意者。
圖6示出根據本揭露實例性實施例的設備的實例性實施例。圖6中所示的實施例600可用於例如實施本文中揭露的設備中的任意者。設備600可包括設備控制器602、通訊邏輯608、設備功能電路606及/或相干介面610。圖6中所示的組件可藉由一或多個設備匯流排612進行通訊。通訊邏輯608可用於例如實施控制器230、協定控制器330及/或類似裝置。
設備功能電路606可包括實施設備600的主要功能的任何硬體。舉例而言,若設備600被實施為儲存設備,則設備功能電路606可包括儲存媒體(例如一或多個快閃記憶體設備、FTL、及/或類似裝置)。作為另一實例,若設備600被實施為網路介面卡(network interface card,NIC),則設備功能電路606可包括一或多個數據機、網路介面、實體層(physical layer,PHY)、媒體存取控制層(medium access control layer,MAC)及/或類似裝置。作為又一實例,若設備600被實施為加速器,則設備功能電路606可包括一或多個加速器電路、記憶體電路及/或類似電路。
圖7示出根據本揭露實例性實施例的用於通訊的方法的實施例。方法可開始於操作702處。在操作704處,方法可由第一裝置對隊列進行存取,其中隊列可由第二裝置存取,且第一裝置藉由相干介面連接至第二裝置。舉例而言,在一些實施例中,第一裝置可被實施為主機,第二裝置可被實施為設備,且隊列可被實施為通訊協定的提交隊列。在操作706處,方法可由相干介面向第二裝置指示存取。舉例而言,在一些實施例中,可藉由主機將表項放置於提交隊列中來實施存取,且可藉由對相干介面進行配置以對隊列進行監視(例如,監聽)提交且向設備發送警報來實施指示。所述方法可在操作708處結束。
圖7中所示的實施例以及本文中闡述的所有其他實施例是實例性操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包括其他操作及/或組件。此外,在一些實施例中,可使操作及/或組件的時間及/或空間次序發生變化。儘管一些組件及/或操作可被示出為個別組件,但在一些實施例中,可將單獨示出的一些組件及/或操作整合成單個組件及/或操作,及/或可使用多個組件及/或操作來實施被示出為單個組件及/或操作的一些組件及/或操作。
以上所揭露的一些實施例已在各種實施方式細節的上下文中進行闡述,但本揭露的原理並不限於該些或任何其他具體細節。舉例而言,一些功能已被闡述為由某些組件實施,但在其他實施例中,所述功能可分佈於位於不同位置中且具有各種使用者介面的不同系統及組件之間。某些實施例已被闡述為具有特定的過程、操作等,但該些用語亦囊括其中可利用多個過程、操作等來實施特定過程、操作等的實施例或者其中可將多個過程、操作等整合成單一過程、步驟等的實施例。對組件或元件的引用可僅指所述組件或元件的一部分。舉例而言,對區塊的引用可指整個區塊或者一或多個子區塊。除非上下文中以其他方式顯而易見,否則在本揭露及申請專利範圍中使用例如「第一」及「第二」等用語可僅為了區分所述用語所修飾的元件且可能並不指示任何空間次序或時間次序。在一些實施例中,對元件的引用可指所述元件的至少一部分,例如「基於」可指「至少部分地基於」及/或類似情況。對第一元件的引用可能並不暗示第二元件的存在。在本文中所揭露的原理具有獨立的效用且可個別地實施,且並非每個實施例皆可利用每個原理。然而,所述原理亦可以各種組合來實施,其中一些組合可以協同的方式對個別原理的益處進行放大。
根據本專利揭露的發明原理,可對上述各種細節及實施例進行組合以生成附加的實施例。由於可在不背離本發明概念的條件下對本專利揭露的發明原理進行佈置及細節上的修改,因此此種改變及修改被認為落於以下申請專利範圍的範圍內。
(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、462、464、466、468、470、702、704、706、708:操作
102、322:主機
103:頭部表項指針/指針
104、324、600:設備
105:提交隊列尾部表項指針/尾部表項指針/指針
106、334:提交隊列
107:頭部表項指針/完成隊列頭部表項指針/指針
108、335:完成隊列
109:完成隊列尾部表項指針/尾部表項指針/指針
110:主機記憶體
112、230:控制器
114:提交隊列尾部門鈴暫存器/門鈴暫存器/暫存器
116:完成隊列頭部門鈴暫存器/門鈴暫存器/暫存器
222:第一裝置
224:第二裝置
226:第一相干介面
228:第二相干介面
232:通訊連接件
234:隊列
236、336、337:指示
326、328:相干介面/相干性介面
330:協定控制器
332:通訊連接件
342:協定邏輯
344、358:相干性引擎
346、360:監聽邏輯
350:設備本地記憶體
352、606:設備功能電路
500:主機裝置
502:處理器
504:記憶體控制器
506:系統記憶體
508:主機邏輯/主機控制邏輯
510、610:相干介面
512:系統匯流排
602:設備控制器
608:通訊邏輯
612:設備匯流排
各圖未必按比例繪製,且出於例示目的,在所有圖中具有相似的結構或功能的元件可一般由相同的參考編號或其部分表示。各圖僅旨在有利於對本文中闡述的各種實施例的說明。各圖並未闡述本文中所揭露的教示內容的每個態樣,且不對申請專利範圍的範圍進行限制。為防止圖式變得模糊,可能並未示出所有的組件、連接件及類似部件,且並非所有的組件皆可具有參考編號。然而,組件配置的圖案在圖式中可容易地顯而易見。附圖與說明書一同例示出本揭露的實例性實施例,且與說明一同用於闡釋本揭露的原理。
圖1示出根據本揭露實例性實施例的用於通訊協定的隊列方案的實施例。
圖2示出根據本揭露實例性實施例的用於使用一或多個隊列及相干介面進行通訊的方案的實施例。
圖3示出根據本揭露實例性實施例的用於使用一或多個隊列及相干介面進行通訊的系統的實例性實施例。
圖4示出根據本揭露實例性實施例的使用一或多個隊列及相干介面的通訊的方法的實例性實施例。
圖5示出根據本揭露實例性實施例的主機裝置的實例性實施例。
圖6示出根據本揭露實例性實施例的設備的實例性實施例。
圖7示出根據本揭露實例性實施例的用於通訊的方法的實施例。
702、704、706、708:操作
Claims (20)
- 一種方法,包括: 由第一裝置對隊列進行存取,其中所述隊列能夠由第二裝置存取,且所述第一裝置藉由相干介面連接至所述第二裝置;以及 由所述相干介面向所述第二裝置指示所述存取。
- 如請求項1所述的方法,其中所述指示包括藉由監視機制進行指示。
- 如請求項1所述的方法,其中所述指示包括產生監視請求。
- 如請求項3所述的方法,其中所述指示更包括基於所述監視請求產生警報。
- 如請求項1所述的方法,其中所述隊列包括提交隊列。
- 如請求項1所述的方法,其中所述存取包括自所述隊列讀取表項。
- 如請求項1所述的方法,其中所述存取包括向所述隊列寫入表項。
- 如請求項7所述的方法,其中所述表項包括命令。
- 如請求項7所述的方法,其中所述表項包括完成。
- 如請求項1所述的方法,其中: 所述第一裝置包括主機; 所述第二裝置包括設備;且 所述隊列位於所述設備處。
- 如請求項1所述的方法,其中所述隊列與通訊協定相關聯。
- 如請求項11所述的方法,其中所述通訊協定包括儲存協定。
- 一種設備,包括: 相干介面;以及 控制器,被配置成: 使用所述相干介面使用隊列進行通訊;以及 由所述相干介面接收對所述隊列的存取的指示。
- 如請求項13所述的設備,其中: 所述設備包括共享本地記憶體;且 所述相干介面被配置成維持所述共享本地記憶體的至少一部分的相干性。
- 如請求項14所述的設備,其中所述隊列至少局部地位於所述共享本地記憶體的所述至少一部分中。
- 如請求項13所述的設備,其中所述相干介面被配置成接收基於所述存取的監視請求。
- 如請求項16所述的設備,其中所述相干介面被配置成基於所述監視請求產生警報。
- 如請求項17所述的設備,其中所述控制器被配置成自所述相干介面接收所述警報作為所述指示。
- 一種系統,包括: 主機;以及 設備,使用相干介面耦合至所述主機,所述設備包括控制器,所述控制器被配置成: 使用所述相干介面使用隊列而與所述主機進行通訊;以及 由所述相干介面接收所述主機對所述隊列的存取的指示。
- 如請求項19所述的系統,其中: 所述設備包括共享本地記憶體; 所述相干介面被配置成維持所述共享本地記憶體的至少一部分的相干性;且 所述隊列至少局部地位於所述共享本地記憶體的所述至少一部分中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263303985P | 2022-01-27 | 2022-01-27 | |
US63/303,985 | 2022-01-27 | ||
US17/712,066 US20230236994A1 (en) | 2022-01-27 | 2022-04-01 | Systems, methods, and devices for queue management with a coherent interface |
US17/712,066 | 2022-04-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202345003A true TW202345003A (zh) | 2023-11-16 |
Family
ID=85036122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112102006A TW202345003A (zh) | 2022-01-27 | 2023-01-17 | 用於具有相干介面的隊列管理的系統、方法和設備 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230236994A1 (zh) |
EP (1) | EP4220375A1 (zh) |
KR (1) | KR20230115890A (zh) |
TW (1) | TW202345003A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573208A (zh) * | 2024-01-12 | 2024-02-20 | 深圳宏芯宇电子股份有限公司 | 指令信息分配方法及存储器存储装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564271B2 (en) * | 1999-06-09 | 2003-05-13 | Qlogic Corporation | Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter |
US9122515B2 (en) * | 2012-12-19 | 2015-09-01 | Dell Products L.P. | Completion notification for a storage device |
US10061743B2 (en) * | 2015-01-27 | 2018-08-28 | International Business Machines Corporation | Host based non-volatile memory clustering using network mapped storage |
KR102365113B1 (ko) * | 2015-05-27 | 2022-02-18 | 삼성전자주식회사 | 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템 |
CN106775434B (zh) * | 2015-11-19 | 2019-11-29 | 华为技术有限公司 | 一种NVMe网络化存储的实现方法、终端、服务器及系统 |
CN107992436B (zh) * | 2016-10-26 | 2021-04-09 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
US20190035445A1 (en) * | 2017-07-31 | 2019-01-31 | CNEX Labs, Inc. a Delaware Corporation | Method and Apparatus for Providing Low Latency Solid State Memory Access |
CN109983449B (zh) * | 2018-06-30 | 2022-03-29 | 华为技术有限公司 | 数据处理的方法和存储系统 |
CN116134475A (zh) * | 2020-05-29 | 2023-05-16 | 奈特力斯股份有限公司 | 计算机存储器扩展设备及其操作方法 |
US11561912B2 (en) * | 2020-06-01 | 2023-01-24 | Samsung Electronics Co., Ltd. | Host controller interface using multiple circular queue, and operating method thereof |
-
2022
- 2022-04-01 US US17/712,066 patent/US20230236994A1/en active Pending
-
2023
- 2023-01-10 KR KR1020230003677A patent/KR20230115890A/ko unknown
- 2023-01-17 TW TW112102006A patent/TW202345003A/zh unknown
- 2023-01-23 EP EP23152879.5A patent/EP4220375A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573208A (zh) * | 2024-01-12 | 2024-02-20 | 深圳宏芯宇电子股份有限公司 | 指令信息分配方法及存储器存储装置 |
CN117573208B (zh) * | 2024-01-12 | 2024-05-28 | 深圳宏芯宇电子股份有限公司 | 指令信息分配方法及存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
EP4220375A1 (en) | 2023-08-02 |
KR20230115890A (ko) | 2023-08-03 |
US20230236994A1 (en) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3028162B1 (en) | Direct access to persistent memory of shared storage | |
JP6961686B2 (ja) | トリガ動作を用いたgpuリモート通信 | |
JP6067230B2 (ja) | 観測可能クライアント側メモリアクセスを用いる高性能データストレージ | |
US9986028B2 (en) | Techniques to replicate data between storage servers | |
US10346156B2 (en) | Single microcontroller based management of multiple compute nodes | |
US9244881B2 (en) | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface | |
KR20210147976A (ko) | 확장 가능하고 일관성 있는 메모리 장치를 위한 시스템 및 방법 | |
US20110004732A1 (en) | DMA in Distributed Shared Memory System | |
US20180225254A1 (en) | Network communications using pooled memory in rack-scale architecture | |
US9092275B2 (en) | Store operation with conditional push of a tag value to a queue | |
US10963295B2 (en) | Hardware accelerated data processing operations for storage data | |
WO2019153702A1 (zh) | 一种中断处理方法、装置及服务器 | |
WO2015169054A1 (zh) | 一种实现数据一致性的方法、装置及计算机存储介质 | |
US20130290984A1 (en) | Method for Infrastructure Messaging | |
WO2017101080A1 (zh) | 处理写请求的方法、处理器和计算机 | |
TW202345003A (zh) | 用於具有相干介面的隊列管理的系統、方法和設備 | |
JP2013025794A (ja) | フラッシュインタフェースの有効利用 | |
WO2023076591A1 (en) | Hardware management of direct memory access commands | |
US20110106990A1 (en) | Efficient handling of queued-direct i/o requests and completions | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
CN114356839A (zh) | 处理写操作的方法、设备、处理器及设备可读存储介质 | |
CN116501456A (zh) | 用于利用一致性接口的队列管理的系统、方法和设备 | |
US20050289252A1 (en) | Method and system for host device event synchronization | |
US11914516B1 (en) | Memory side cache request handling | |
US11940919B2 (en) | Recall pending cache line eviction |