TW202314488A - 儲存裝置、操作儲存裝置的方法以及電腦實施系統 - Google Patents
儲存裝置、操作儲存裝置的方法以及電腦實施系統 Download PDFInfo
- Publication number
- TW202314488A TW202314488A TW111126841A TW111126841A TW202314488A TW 202314488 A TW202314488 A TW 202314488A TW 111126841 A TW111126841 A TW 111126841A TW 111126841 A TW111126841 A TW 111126841A TW 202314488 A TW202314488 A TW 202314488A
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- storage device
- storage
- storage unit
- computing
- Prior art date
Links
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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
揭露一種儲存裝置。所述儲存裝置可包括:用於資料的儲存器;以及控制器,用於對來自主機處理器的關於儲存器中的資料的輸入/輸出(I/O)請求進行處理。計算儲存單元可實施對儲存器中的資料執行的至少一個服務。命令路由器可至少部分地基於自主機處理器接收的命令來將所述命令路由至控制器或計算儲存單元。
Description
本揭露大體而言是有關於儲存裝置,且更具體而言是有關於經由其他協定將計算裝置的能力與儲存裝置一起使用。
[相關申請案資料]
本申請案主張於2021年7月19日提出申請的序列號為63/223,544的美國臨時專利申請案的權益,所述美國臨時專利申請案出於全部目的併入本案供參考。
儲存裝置包括計算裝置變得越來越普遍,此會增強儲存裝置的功能性並支援近儲存器計算(near-storage computing)。然而,此種儲存裝置的介面可能不支援對計算裝置的所有特徵的存取。
仍需要提供對計算裝置的所有特徵的存取。
本揭露的實施例包括將命令路由至計算儲存單元的能力。當接收到命令時,命令路由器可判斷所述命令是欲由儲存裝置進行處置的命令還是欲由計算儲存單元進行處置的命令。然後可將所述命令引導至儲存裝置或計算儲存單元。
現在將詳細參照本揭露的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,陳述諸多具體細節以使得能夠透徹地理解本揭露。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本揭露。在其他情形中,未對眾所習知的方法、過程、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用用語「第一」、「第二」等來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本揭露的範圍的條件下,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組。
本文中在本揭露的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本揭露。除非上下文另外清楚地指示,否則在本揭露的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文中所使用的用語「及/或(and/or)」是指且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式所示組件及特徵未必按比例繪製。
儲存裝置不斷變大,進而會儲存越來越多的資料。就時間及處理器負載二者而言,將所有資料自儲存裝置移動至主記憶體使得處理器可對資料進行操作可能是昂貴的過程。
為解決該些困難,儲存裝置可包括計算裝置。計算裝置可支援近儲存器處理,進而避免將資料自儲存裝置移動至主記憶體所需的時間並減少處理器上的負載,使得可實行其他過程。
但是,隨著該些計算裝置變得更加先進,用於對該些儲存裝置進行存取的介面可能會限制對計算裝置所供應的功能的存取。舉例而言,快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)規範可定義如何與儲存裝置進行通訊,但不定義如何對與儲存裝置相關聯的計算裝置所供應的功能進行存取。
本揭露的實施例藉由向儲存裝置添加命令剖析器/路由器來解決該些問題。所述命令剖析器/路由器可為附加元件,或者所述命令剖析器/路由器可被實施為儲存裝置的控制器的一部分。命令剖析器/路由器可對傳入命令進行分析並判斷所述命令是否是可由儲存裝置進行處理的命令。若所述命令是可由儲存裝置進行處理的命令,則可將所述命令轉發至儲存裝置;否則,可將所述命令發送至計算裝置。以此種方式,可支援對計算裝置的功能進行存取的請求。此類功能可包括例如:產生追蹤資訊;處理器管理(啟用/禁用處理器;改變處理器頻率);以及錯誤校正。可使用新的供應商專用命令或者藉由利用現有命令(例如設定特徵命令)(以及對儲存裝置未實施的特徵進行辨識)來對此類功能進行存取。
圖1示出根據本揭露實施例的包括支援對計算儲存裝置的特徵進行存取的計算儲存單元的系統。在圖1中,機器105(其亦可被稱為主機或系統)可包括處理器110、記憶體115及儲存裝置120。處理器110可為任何種類的處理器。(為易於例示,處理器110以及以下論述的其他組件被示出為位於機器之外:本揭露的實施例可包括位於機器內的該些組件。)儘管圖1示出單個處理器110,然而機器105可包括任意數目的處理器,所述處理器中的每一者可為單核心處理器或多核心處理器,所述單核心處理器或多核心處理器中的每一者可實施精簡指令集電腦(Reduced Instruction Set Computer,RISC)架構或複雜指令集電腦(Complex Instruction Set Computer,CISC)架構(以及其他可能性),且可以任何所期望組合進行混合。
處理器110可耦合至記憶體115。記憶體115可為任何種類的記憶體,例如快閃記憶體、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、持久隨機存取記憶體、鐵電隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM),例如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等。記憶體115亦可為不同記憶體類型的任何所期望組合且可由記憶體控制器125進行管理。記憶體115可用於儲存可被稱為「短期(short-term)」的資料:即,預期不會被儲存達延長時間段的資料。短期資料的實例可包括臨時檔案、由應用在本地使用的資料(其可自其他儲存位置拷貝)及類似資料。
處理器110及記憶體115亦可支援作業系統,各種應用可在所述作業系統下運行。該些應用可發出請求(其亦可被稱為命令),以自記憶體115或儲存裝置120讀取資料或者向記憶體115或儲存裝置120寫入資料。可使用裝置驅動器130來對儲存裝置120進行存取。
儲存裝置120可與計算儲存單元135相關聯。如以下參照圖3A至圖3D所論述,計算儲存單元135可為儲存裝置120的一部分或者計算儲存單元135可與儲存裝置120分離。片語「與…相關聯」旨在涵蓋包括計算儲存單元的儲存裝置以及與不是儲存裝置本身的一部分的計算儲存單元配對的儲存裝置二者。換言之,當儲存裝置與計算儲存單元是在實體上分離的裝置但以使其能夠彼此進行通訊的方式連接時,可認為所述儲存裝置與計算儲存單元是「配對的」。
另外,儲存裝置120與配對的計算儲存單元135之間的連接可能會使所述兩個裝置能夠進行通訊,但亦可能會使一個(或兩個)裝置無法與不同的夥伴一起工作:即,儲存裝置120可能無法與另一計算儲存單元進行通訊及/或計算儲存單元135可能無法與另一儲存裝置進行通訊。舉例而言,儲存裝置120及配對的計算儲存單元135可串聯連接(以任一次序)至組構(例如匯流排),進而使得計算儲存單元135能夠以另一計算儲存單元可能無法達成的方式自儲存裝置120存取資訊。
處理器110及儲存裝置120可連接至組構。組構可為資訊可沿其傳遞的任何組構。組構可包括可位於機器105內部且可使用例如以下介面的組構:快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)、串列進階技術(advanced technology,AT)附接(Serial AT Attachment,SATA)、小型電腦系統介面(Small Computer Systems Interface,SCSI)以及其他介面。組構亦可包括可位於機器105外部且可使用例如乙太網路(Ethernet)、無限頻寬(InfiniBand)或光纖通道以及其他介面等介面的組構。另外,組構可支援一或多個協定,例如快速非揮發性記憶體(NVM)(NVMe)、組構上NVMe(NVMe over Fabric,NVMe-oF)或簡單服務發現協定(Simple Service Discovery Protocol,SSDP)以及其他協定。因此,組構可被認為囊括內部網路化連接及外部網路化連接二者,可藉由所述內部網路化連接及外部網路化連接將命令直接或間接地發送至儲存裝置120(且更具體而言,發送至與儲存裝置120相關聯的計算儲存單元)。
儘管圖1示出一個儲存裝置120及一個計算儲存單元135,然而在機器105中可存在任意數目的(一或多個)儲存裝置及/或任意數目的(一或多個)計算儲存單元。
儘管圖1使用通用用語「儲存裝置」,然而本揭露的實施例可包括可受益於使用計算儲存單元的任何儲存裝置格式,其實例可包括硬碟驅動機及固態驅動機(Solid State Drive,SSD)。以下對「SSD」的任何引用均應被理解為包括本揭露的此類其他實施例。另外,儘管以上(及以下)的論述著重於儲存裝置120與計算儲存單元相關聯,然而本揭露的實施例可擴展至除儲存裝置之外的可包括計算儲存單元或與計算儲存單元相關聯的裝置。以上(及以下)對「儲存裝置」的任何引用均可被理解為亦囊括可與計算儲存單元相關聯的其他裝置。
圖2示出根據本揭露實施例的圖1所示機器105的細節。在圖2中,機器105通常包括一或多個處理器110,所述一或多個處理器110可包括記憶體控制器120及可用於對機器的組件的操作進行協調的時鐘205。處理器110亦可耦合至記憶體115,作為實例,記憶體115可包括隨機存取記憶體(RAM)、唯讀記憶體(read-only memory,ROM)或其他狀態保持媒體。處理器110亦可耦合至儲存裝置125且耦合至網路連接件210,網路連接件210可為例如乙太網路連接件或無線連接件。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出(Input/Output,I/O)引擎225及其他組件進行管理的I/O介面埠可附接至匯流排215。
圖3A至圖3D示出根據本揭露實施例的可與圖1所示儲存裝置120相關聯的圖1所示計算儲存單元135(其亦可被稱為「計算裝置」或「裝置」)的各種佈置。在圖3A中示出儲存裝置305及計算裝置310-1。儲存裝置305可包括控制器315及儲存器320-1且可跨佇列對獲得:佇列對(queue pair,QP)325可用於對儲存裝置305進行管理且用於對儲存裝置305的I/O進行控制。
計算裝置310-1可與儲存裝置305配對。計算裝置310-1可包括任意數目的(一或多個)處理器330,所述處理器330可供應一或多個服務335-1及335-2。為更清晰起見,每一處理器330可供應任意數目的(一或多個)服務335-1及335-2(但本揭露的實施例可包括恰好包括兩個服務335-1及335-2的計算裝置310-1)。每一處理器330可為單核心處理器或多核心處理器。計算裝置310-1可跨佇列對340獲得,佇列對340可用於對計算裝置310-1進行管理及/或對計算裝置310-1的I/O進行控制。
處理器330可被認為是近儲存器處理:即,相較於圖1所示處理器110更靠近儲存裝置305的處理。由於處理器330更靠近儲存裝置305,因此相較於圖1所示處理器110執行命令的情況,處理器330可能夠更快地對儲存於儲存裝置305中的資料執行此類命令。儘管未在圖3A中示出,然而處理器330可具有相關聯的記憶體,所述記憶體可用於對儲存於儲存裝置305中的資料進行命令的本地執行。所述相關聯的記憶體可包括與圖1所示記憶體115相似的本地記憶體、晶片上記憶體(其可快於例如記憶體115等記憶體,但生產起來可能更昂貴)或本地記憶體及晶片上記憶體二者。
儘管圖3A將儲存裝置305與計算裝置310-1示出為可跨組構345單獨獲得,然而本揭露的實施例亦可包括串聯連接的儲存裝置305與計算裝置310-1(如圖1中所示)。亦即,被引導至儲存裝置305及計算裝置310-1的命令二者可在對組構345的同一實體連接處被接收且可經由一個裝置傳遞以到達另一裝置。舉例而言,若計算裝置310-1位於儲存裝置305與組構345之間,則計算裝置310-1可接收被引導至計算裝置310-1及儲存裝置305二者的命令:計算裝置310-1可對被引導至計算裝置310-1的命令進行處理且可將被引導至儲存裝置305的命令傳遞至儲存裝置305。相似地,若儲存裝置305位於計算裝置310-1與組構345之間,則儲存裝置305可接收被引導至儲存裝置305及計算裝置310-1二者的命令:儲存裝置305可對被引導至儲存裝置305的命令進行處理且可將被引導至計算裝置310-1的命令傳遞至計算裝置310-1。
服務335-1及335-2可供應可對儲存於儲存裝置305中的資料執行的數個不同的功能。舉例而言,服務335-1及335-2可供應預先定義的功能,例如資料的加密、解密、壓縮及/或解壓縮、抹除編碼及/或應用正規表示式(regular expression)。或者,服務335-1及335-2可供應更通用的功能,例如資料搜尋及/或結構化查詢語言(Structured Query Language,SQL)功能。服務335-1及335-2亦可支援運行特殊應用的碼。亦即,使用服務335-1及335-2的應用可提供欲使用儲存裝置305上的資料來執行的客製碼(custom code)。服務335-1及335-2亦可為此類功能的任意組合。表1列出可由處理器330供應的服務的一些實例。
表1:服務類型
補償 |
加密 |
資料庫過濾器 |
抹除編碼 |
RAID |
散列/CRC |
正規表示式(型樣匹配) |
分散聚集 |
管線 |
視訊壓縮 |
資料重複刪除 |
作業系統影像加載器 |
容器影像加載器 |
柏克萊封包過濾器(BPF)加載器 |
FPGA位元流加載器 |
大型資料集 |
處理器330(以及實際上計算裝置310-1)可以任何所期望方式實施。實例性實施方案可包括本地處理器,例如中央處理單元(Central Processing Unit,CPU)或一些其他處理器、圖形處理單元(Graphics Processing Unit,GPU)、通用GPU(General Purpose GPU,GPGPU)、資料處理單元(Data Processing Unit,DPU)、張量處理單元(Tensor Processing Unit,TPU)及神經處理單元(Neural Processing Unit,NPU)以及其他可能性。亦可使用現場可程式化閘陣列(Field Programmable Gate Array,FPGA)或特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)以及其他可能性來實施處理器330。若計算裝置310-1包括多於一個處理器330,則每一處理器可如上所述般實施。舉例而言,計算裝置310-1可具有CPU、TPU及FPGA中的每一者,或者計算裝置310-1可具有兩個FPGA,或者計算裝置310-1可具有兩個CPU及一個ASIC等。
依據所期望解釋而定,計算裝置310-1或處理器330可被認為是計算儲存單元。
儘管圖3A將儲存裝置305與計算裝置310-1示出為單獨的裝置,然而在圖3B中可對其進行組合。因此,計算裝置310-2可包括控制器315、儲存器320-1及供應服務335-1及335-2的處理器330。如同圖3A所示儲存裝置305及計算裝置310-1一般,可經由佇列對340接收管理及I/O命令。即使計算裝置310-2被示出為包括儲存器及處理器330二者,圖3B仍可被認為包括與計算儲存單元相關聯的儲存裝置。
在圖3C中所示的又一變型中示出計算裝置310-3。計算裝置310-3可包括控制器315及儲存器320-1以及供應服務335-1及335-2的處理器330。但是,即使計算裝置310-3可被認為是包括控制器315、儲存器320-1及處理器330的單個組件(且亦被認為是與計算儲存單元相關聯的儲存裝置),然而與圖3B中所示的實施方案不同,控制器315及處理器330可各自包括其自己的佇列對325及340(其同樣可用於管理及/或I/O)。藉由包括佇列對325,控制器315可供應對儲存器320-1的透明存取(而非要求經由處理器330進行所有通訊)。
另外,處理器330可具有針對儲存器320-1的代理儲存器存取件(proxied storage access)350。因此,不再經由控制器315對存取請求進行路由,處理器330可能夠直接自儲存器320-1存取資料。
在圖3C中,控制器315及代理儲存器存取件350二者皆使用虛線示出,以表示其是可選元件且可依據實施方案而被省略。
最後,圖3D示出又一實施方案。在圖3D中示出計算裝置310-4,計算裝置310-4可包括與圖3C相似的控制器315及代理儲存器存取件350。另外,計算裝置310-4可包括一或多個儲存器320-1至320-4的陣列。儘管圖3D示出四個儲存元件,然而本揭露的實施例可包括任意數目的(一或多個)儲存元件。另外,各別的儲存元件可為其他儲存裝置,例如圖3A至圖3D中所示的儲存裝置。
由於計算裝置310-4可包括多於一個的儲存元件320-1至320-4,因此計算裝置310-4可包括陣列控制器355。陣列控制器355可對如何將資料儲存於儲存元件320-1至320-4上以及如何自儲存元件320-1至320-4擷取資料進行管理。舉例而言,若儲存元件320-1至320-4被實施為獨立磁碟冗餘陣列(Redundant Array of Independent Disk,RAID)的某種層級,則陣列控制器355可為RAID控制器。若使用某種形式的抹除編碼來實施儲存元件320-1至320-4,則陣列控制器355可為抹除編碼控制器。
圖4A示出根據本揭露實施例的圖1所示儲存裝置120的用於將命令路由至圖1所示計算儲存單元135的第一佈置。在圖4A中,主機105可發出可被發送至儲存裝置120的命令。然後儲存裝置120可包括命令路由器405。命令路由器405可接收命令、對所述命令進行檢驗並判斷所述命令是儲存器命令還是計算儲存單元命令。若所述命令是儲存器命令,則命令路由器405可將所述命令路由至儲存模組410(其可為例如位於儲存裝置120內的控制器),然後儲存模組410可對所述儲存器命令進行處理。作為另外一種選擇,若所述命令是計算儲存單元命令,則命令路由器405可將所述命令路由至計算儲存單元135,然後計算儲存單元135可對所述計算儲存單元命令進行處理(可能使用記憶體415)。舉例而言,計算儲存單元命令可為執行例如圖3A至圖3D所示服務335-1及/或335-2等服務的命令;或者計算儲存單元命令可為加載位元組碼的命令或然後可被執行的程式;或者計算儲存單元命令可為對運行於計算儲存單元135上的程式執行追蹤的命令。簡而言之,計算儲存單元命令可為可被發送至計算儲存單元135的任何命令,而不論計算儲存單元135是否處於儲存裝置120的「後面」(在某種意義上,儲存裝置120可接收所述命令並確定如何在所述命令被遞送至計算儲存單元135之前對所述命令進行處置)。
至於命令路由器405可如何知曉特定命令是儲存器命令還是計算儲存單元命令,命令路由器405可對命令本身進行檢驗。若所述命令被辨別為儲存器命令,則可將所述命令路由至儲存模組410;否則,可將所述命令路由至計算儲存單元135。作為另外一種選擇,若所述命令被辨別為計算儲存單元命令,則可將所述命令路由至計算儲存單元135;否則,可將所述命令路由至儲存模組410。
作為實例,考量表2,表2列出各種NVMe特徵。該些特徵可被定義為由儲存裝置使用。
表2:NVMe特徵列表
特徵辨識符 | 當前設定在電源循環及重設之後持續 | 針對屬性使用記憶體緩衝器 | 特徵名稱 |
00h | 預留 | ||
01h | 否 | 否 | 仲裁 |
02h | 否 | 否 | 電源管理 |
03h | 是 | 是 | LBA範圍類型 |
04h | 否 | 否 | 溫度臨限值 |
05h | 否 | 否 | 錯誤復原 |
06h | 否 | 否 | 揮發性寫入快取 |
07h | 否 | 否 | 佇列數目 |
08h | 否 | 否 | 中斷聯合 |
09h | 否 | 否 | 中斷向量配置 |
0Ah | 否 | 否 | 寫入原子性正常 |
0Bh | 否 | 否 | 異步事件配置 |
0Ch | 否 | 是 | 自主電源狀態變換 |
0Dh | 否 | 否 | 主機記憶體緩衝器 |
0Eh | 否 | 是 | 時間戳記 |
0Fh | 否 | 否 | 保持帶電定時器 |
10h | 是 | 否 | 主機控制熱管理 |
11h | 否 | 否 | 非運作電源層階配置 |
12h | 是 | 否 | 讀取復原層階配置 |
13h | 否 | 是 | 可預測延遲模式配置 |
14h | 否 | 否 | 可預測延遲模式窗口 |
15h | 否 | 否 | LBA狀況資訊報告間隔 |
16h | 否 | 是 | 主機行為支援 |
17h | 是 | 否 | 清除配置 |
18h | 否 | 否 | 耐久性群組事件配置 |
19h至77h | 預留 | ||
78h至7Fh | 參照NVMe管理介面規範進行定義 | ||
80h至BFh | 特定命令集(預留) |
應注意,預留特徵19h至77h。此意指該些特徵當前未被定義為由儲存裝置使用。通常而言,若命令列出被辨識為19h至77h的特徵,則儲存裝置可返送無法確定如何對此種命令進行處理的錯誤。但是,此類特徵辨識符可用於欲被發送至計算儲存單元135的命令。舉例而言,特徵19h可用於指示計算儲存單元135對一部分碼實行追蹤。命令路由器405在看到使用此種特徵辨識符的命令時可確定出所述命令是計算儲存單元命令,且可將所述命令路由至計算儲存單元135而非儲存模組410。當前不用於儲存器命令的其他特徵辨識符可以相似的方式用於對計算儲存單元135的其他特徵進行管理。
儘管以上實例著重於對作為儲存器命令的命令進行辨別且將任何其他命令路由至計算儲存單元135,然而本揭露的實施例可以相反方式進行工作。亦即,本揭露的實施例可對擬定用於計算儲存單元135的命令進行辨別且可將任何未被辨別出的命令引導至儲存模組410。本揭露的實施例亦可對所述兩種方法進行組合,進而對作為儲存器命令的命令及作為計算儲存單元命令的命令進行辨別且適當地對每一者進行路由;任何未被辨別為儲存器命令或計算儲存單元命令的命令可能會導致返送錯誤。
命令路由器405可確定出將命令路由至何處的事實並不保證所述命令將被成功處理。舉例而言,命令路由器405可確定出特定命令不是儲存器命令且可將所述命令路由至計算儲存單元135。但是,若計算儲存單元135可無法辨識出所述命令,則計算儲存單元135可返送錯誤。
另外,命令路由器405可實行轉譯。舉例而言,如以上參照表2:NVMe特徵列表所闡述,擬定用於計算儲存單元135的命令可作為儲存器命令被發送,但使用當前未被儲存裝置120使用的特定特徵。命令路由器405可負責將由命令路由器405接收的儲存器格式化命令轉譯成可由計算儲存單元135進行處理的格式。(若命令未被格式化為儲存器命令,則命令路由器405亦可將命令轉譯成可由儲存裝置120進行處理的格式。但是,通常可將命令格式化為儲存器命令,所述儲存器命令可在無需轉譯的情況下由儲存裝置120進行處理。)
在圖4A中,計算儲存單元135被示出為儲存裝置120的一部分。但是,在本揭露的一些實施例中,計算儲存單元135可與儲存裝置120分離(例如以上參照圖3A所論述)。
圖4B示出根據本揭露實施例的圖1所示儲存裝置的用於將命令路由至圖1所示計算儲存單元135的第二佈置。圖4A與圖4B之間的不同之處在於,在圖4B中可省略命令路由器135。相反,儲存模組410(其同樣可為儲存裝置120中的控制器)可對所接收的命令進行檢驗且未被辨別為儲存器命令的任何命令可被路由至計算儲存單元135。應注意,本揭露的實施例在此處亦可以相反方式進行操作:首先可由計算儲存單元135對命令進行檢驗,且然後可將作為儲存器命令的任何命令路由至儲存模組410。在圖4B中所示的本揭露的實施例中,儲存模組410可以任何所期望方式(作為儲存模組410內的組件(例如電路)或者使用在儲存模組410中的處理器或其他電路上運行的適當韌體或軟體)來實施圖4A所示命令路由器405的處理。
如上所述,圖4A所示命令路由器405(以及在圖4B所示儲存模組410實施圖4A所示命令路由器405的邏輯時的圖4B所示儲存模組410)可對命令進行檢驗,以判斷所述命令是欲由儲存模組410還是計算儲存單元135進行處理的命令。但是,在本揭露的一些實施例中,儲存模組410可接收所有命令且可對儲存模組410可辨別出的命令進行處理,且然後任何未被辨別出的命令可被發送至計算儲存單元135。本揭露的此類實施例可在具有或不具有圖4A所示命令路由器405的情況下使用。舉例而言,圖4A所示命令路由器405可在開始時將所有命令路由至儲存模組410;當自儲存模組410接收到錯誤結果時,圖4A所示命令路由器405然後可將所述命令路由至計算儲存單元135,以使計算儲存單元135試圖對所述命令進行處理。在本揭露的此類實施例中,圖4A所示命令路由器405可包括一些儲存器來對命令進行緩衝,直至儲存模組410對所述命令進行處理(成功或不成功)。
如以上所論述,在圖4A中,圖4A所示命令路由器405可簡單地將命令路由至儲存模組410或路由至計算儲存單元135。圖4A所示命令路由器405可不負責將命令轉譯成可由計算儲存單元135執行的格式。可由計算儲存單元135來對所接收的命令進行解釋,包括對可由計算儲存單元135執行的一個指令/多個指令的任何轉譯。(由於擬定用於儲存模組410的命令可能已呈由儲存模組410辨別出的形式,因此圖4A所示命令路由器405亦可不負責對路由至儲存模組410的儲存器命令進行轉譯。)但是,在本揭露的一些實施例中,圖4A所示命令路由器405亦可實行對路由至計算儲存單元135的命令的轉譯。當圖4B所示儲存模組410實施圖4A所示命令路由器405的邏輯時,圖4B所示儲存模組410亦是如此。
圖5示出根據本揭露實施例的被配置成將命令路由至圖1所示計算儲存單元135的圖4A所示命令路由器405。在圖5中,命令路由器405可接收命令505。藉由對命令505與儲存器命令列表510及/或計算儲存單元命令列表515進行比較,命令路由器405可判斷命令505是儲存器命令520還是計算儲存單元(computational storage unit,CSU)命令525且可將命令505分別路由至儲存模組410或計算儲存單元135。儲存器命令列表510及/或計算儲存單元命令列表515可儲存於命令路由器405中的一些儲存器(揮發性儲存器或非揮發性儲存器)中,且可根據需要進行更新:例如,可在命令路由器405加電時或者當命令路由器405自外部源接收到用於對儲存器命令列表510及/或計算儲存單元命令列表515進行更新的訊號時對儲存器命令列表510及/或計算儲存單元命令列表515進行更新。
以上說明使用儲存器命令列表510及/或計算儲存單元命令列表515來判斷命令505是儲存器命令520還是計算儲存單元命令525。舉例而言,儲存器命令列表510可包括NVMe設定特徵命令以及關於用於儲存裝置的特徵的相關聯資訊(如以上在表2中闡述)。不處於儲存器命令列表510中的任何命令(或者使用未在儲存器命令列表510中闡述的特徵的命令)可被理解為計算儲存單元命令。亦可使用與除NVMe之外的其他協定相關聯的命令:例如,快取同調互連協定,例如快速計算鏈路®(Compute Express Link®,CXL)協定或PCIe協定。(快速計算鏈路是快速計算鏈路聯盟公司(Compute Express Link Consortium, Inc.)的注冊商標)。但是,本揭露的實施例亦可依賴於其他機制來判斷命令505是儲存器命令520還是計算儲存單元命令525。舉例而言,命令505可包括將命令505辨識為儲存器命令520或計算儲存單元命令525的標籤(可能作為命令本身的一部分,或者可能作為命令元資料(例如封包標頭(packet header)或其他封包資訊))。或者,儲存器命令520與計算儲存單元命令525可使用不同的協定或不同的命令結構,或者在某種程度上是可區分的,而無需對命令505與儲存器命令列表510及/或計算儲存單元命令列表515進行比較。或者,計算儲存單元135可使用供應商專用命令。
儘管以上論述將命令路由器405闡述為使用儲存器命令「列表」510及計算儲存命令列表515,然而本揭露的實施例可使用任何資料結構來儲存關於儲存器命令520及/或計算儲存單元命令525的資訊。舉例而言,「列表」510及515可被儲存為用於表示哪些命令是儲存器命令520以及哪些命令是計算儲存單元命令525的數組、鏈接列表(linked list)、散列表或任何其他所期望資料結構。
圖6示出根據本揭露實施例的支援將命令路由至圖1所示計算儲存單元135的固態驅動機(SSD)。在圖6中,SSD 120可包括介面605。介面605可為用於將SSD 120連接至圖1所示機器105的介面且可自圖1所示處理器110(或其他請求源)接收I/O請求(例如讀取請求及寫入請求)。SSD 120可包括多於一個的介面605:例如,一個介面可用於基於區塊的讀取請求及寫入請求且另一介面可用於鍵值讀取請求及寫入請求。儘管圖6表明介面605是圖1所示SSD 120與機器105之間的實體連接,然而介面605亦可表示可跨越共用實體介面使用的協定差異。舉例而言,SSD 120可使用U.2或M.2連接件連接至機器105,但可支援基於區塊的請求及鍵值請求:處置不同類型的請求可由不同的介面605來實行。
SSD 120亦可包括可對介面605進行管理的主機介面層610。若SSD 120包括多於一個的介面605,則單個主機介面層610可對所有介面進行管理,SSD 120可包括用於每一介面的主機介面層,或者可使用其一些組合。
SSD 120亦可包括SSD控制器615、各種通道620-1、620-2、620-3及620-4,各種快閃記憶體晶片625-1、625-2、625-3、625-4、625-5、625-6、625-7及625-8可沿著該些通道以陣列方式排列(快閃記憶體晶片625-1至625-8可被統稱為快閃記憶體晶片625)。SSD控制器615可對沿著通道620-1至620-4(其可被統稱為通道620)向快閃記憶體晶片625-1至625-8發送讀取請求及寫入請求進行管理。儘管圖6示出四個通道及八個快閃記憶體晶片,然而本揭露的實施例可包括包含任意數目的(一或多個,無限制)快閃記憶體晶片的任意數目的(一或多個,無限制)通道。
在每一快閃記憶體晶片內,空間可被組織成區塊,所述區塊可被進一步細分成頁且可被分組成超區塊。頁大小可根據需要變化:例如,頁可為4千位元組的資料。若欲寫入少於整個頁,則多餘的空間「未被使用(unused)」。區塊可包含任意數目的頁:例如128或256。並且,超區塊可包含任意數目的區塊。快閃記憶體晶片可能不會將資料組織成超區塊,而僅組織成區塊及頁。
儘管可寫入及讀取頁,然而SSD通常不容許重寫資料:即,現有資料可能不會被新資料「就地(in place)」替換。相反,當欲更新資料時,新資料被寫入至SSD上的新頁,且原始頁被無效化(標記為準備抹除)。因此,SSD頁通常具有三種狀態中的一者:空閒(準備寫入)、有效(包含有效資料)及無效(不再包含有效資料,但在抹除之前不可用)(該些狀態的確切名稱可能有所變化)。
但是,儘管頁可被各別地寫入及讀取,然而區塊是可進行抹除的基本資料單位。亦即,頁不被各別地抹除:區塊中的所有頁通常是被同時抹除。舉例而言,若區塊包含256個頁,則區塊中的所有256個頁被同時抹除。此種佈置可能導致關於SSD的一些管理問題:若選擇抹除仍包含一些有效資料的區塊,則在可抹除所述區塊之前,可能需要將所述有效資料拷貝至SSD上其他位置的空閒頁。(在本揭露的一些實施例中,抹除單位可不同於區塊:例如,其可為超區塊,以下論述的超區塊可為多個區塊的集合。)
由於寫入資料的單位與抹除資料的單位不同(頁與區塊不同),因此若SSD進行等待直至區塊僅包含無效資料時才抹除所述區塊,則SSD可能會耗盡可用的儲存空間,即使有效資料量可能少於SSD宣傳的容量。為避免此種情況,SSD控制器615可包括垃圾收集控制器(未在圖6中示出)。垃圾收集的功能可為對包含所有或幾乎所有無效頁的區塊進行辨識並使該些區塊空閒,使得有效資料可再次被寫入至該些區塊中。但是,若被選擇進行垃圾收集的區塊包括有效資料,則所述有效資料將被垃圾收集邏輯抹除(由於抹除的單位是區塊而非頁)。為避免此類資料丟失,垃圾收集邏輯可將此類區塊中的有效資料程式化至其他區塊中。一旦資料已被程式化至新的區塊中(且將邏輯區塊位址(logical block address,LBA)映射至實體區塊位址(physical block address,PBA)的表被更新以反映資料的新位置),則所述區塊可被抹除,進而使所述區塊中的頁的狀態返回至空閒狀態。
在胞元可能不被信任以正確地保留資料之前,SSD亦具有每一胞元可被寫入的有限次數。此數目通常被量測為胞元經歷的程式化/抹除循環的數目的計數。胞元可支援的程式化/抹除循環的數目通常意指SSD將保持可靠的功能達合理的時間段:對於個人使用者而言,使用者可更有可能因儲存容量不足而非由於已超過程式化/抹除循環的數目而更換SSD。但是,在資料可被更頻繁地寫入及抹除的企業環境中,胞元超過其程式化/抹除循環計數的風險可能更顯著。
為幫助抵消此種風險,SSD控制器615可採用磨耗均衡控制器(未在圖6中示出)。磨耗均衡可涉及基於區塊的程式化/抹除循環計數來選擇資料區塊以對資料進行程式化。藉由選擇具有較低程式化/抹除循環計數的區塊來對新資料進行程式化,SSD可能夠避免一些區塊的程式化/抹除循環計數增大超過其可靠操作點。藉由保持每一區塊的磨耗水準盡可能接近,SSD可保持可靠達更長的時間段。
SSD控制器615可包括快閃轉譯層(flash translation layer,FTL)630(對於不使用快閃儲存器的儲存裝置而言,其可更一般地被稱為轉譯層)、命令路由器405、計算儲存單元135及記憶體415。FTL 630可對LBA或其他邏輯ID(由圖1所示處理器110使用)與實體區塊位置(PBA)或其他實體位址的轉譯進行處置,其中資料儲存於快閃晶片625-1至625-8中。FTL 630亦可負責將資料自一個PBA重新定位至另一PBA,此可在實行垃圾收集及/或磨耗均衡時進行。命令路由器405、計算儲存單元135及記憶體415可為以上參照圖1至圖4B所論述的命令路由器、計算儲存單元及記憶體。應注意,在本揭露的一些實施例(例如以上參照圖4B闡述的實施例)中,命令路由器405可使用控制器615中的其他硬體來實施,而非作為單獨的模組或電路來實施。
圖7示出根據本揭露實施例的在圖1所示計算儲存單元135中的多個核心中產生追蹤。在圖7中,計算儲存單元135可包括多個核心705-1至705-4(其可被統稱為核心705)。圖7將計算儲存單元135示出為包括四個核心705,但本揭露的實施例可具有包括任意數目的(一或多個)核心705的計算儲存單元135。
每一核心705可包括程式追蹤微胞元(program trace microcell,PTM),被示出為PTM 710-1至710-4(且其可被統稱為PTM 710)。藉由寫入至特定PTM 710,可啟用或禁用核心705的追蹤特徵。因此,例如,若使用者對核心705-1及705-4上的追蹤感興趣,則可啟用PTM 710-1及710-4且可禁用PTM 710-2及710-3。應注意,每一PTM 710可使用不同的編號來辨識,使得能夠使用各別的PTM。
隨著追蹤的產生,可將資訊提供至漏斗件(funnel)715,漏斗件715可自PTM 710s收集資訊。然後可將所述資訊傳遞至先進先出(first in, first out,FIFO)緩衝器720。追蹤資訊的副本可作為追蹤725而被儲存於內部記憶體中。所述資訊亦可被傳遞至複製器(replicator)730,複製器730可將資料的副本發送至追蹤埠介面單元735(trace port interface unit)以及嵌入式追蹤緩衝器/嵌入式追蹤FIFO(embedded trace buffer/embedded trace FIFO,ETB/ETF)745,追蹤埠介面單元735可將追蹤740保存於外部捕獲裝置中,嵌入式追蹤緩衝器/嵌入式追蹤FIFO(ETB/ETF)745可將追蹤750保存於計算儲存引擎135的圖4所示記憶體415中。
PTM 710可表示資訊源,例如在圖7所示實例中闡述的追蹤。可以相似的方式指定資訊的匯點(sink),進而對應保存追蹤的位置進行辨識。因此,例如,ETB/ETF 745可被辨識為追蹤的匯點。可以相似的方式將TPIU 735及/或FIFO緩衝器720辨識為追蹤的匯點。
如以上所論述,本揭露的一些實施例可使用NVMe設定特徵命令來表示圖5所示計算儲存單元命令525。對於可表示圖5所示計算儲存單元命令525的特徵,所述特徵可包括可傳遞至計算儲存單元135的任何所期望資訊。舉例而言,NVMe設定特徵命令可在命令雙字(command double word,CDW)10中包括特徵辨識符(例如,最低有效的8個位元可用於對所述特徵進行辨識),且可在CDW 11中包括特徵特定資訊。所述特徵特定資訊可為例如以下的值:在所述值中各種位元可用於啟用或禁用計算儲存單元135中的各種特徵。對於追蹤而言,一些位元可表示源(其可被啟用或禁用),且其他位元可表示匯點(其可被啟用或禁用)。舉例而言,值0×10F可指示可啟用圖7所示PTM 710-1至710-4(由於十六進位F是二進位1111)且可啟用匯點0(由於十六進位1是二進位0001)。依據計算儲存單元135的特徵而定,不同的值可表示被啟用及/或被禁用的特徵的不同組合,且並非所述值中的所有位元皆可被使用(一些位元可能不需要或者可被忽略)。
CDW 0可用於返送NVMe設定特徵命令的結果。
圖7亦示出本揭露實施例的另一益處。當使用終端介面來對計算儲存單元135(或其他處理器)進行管理時,可單獨啟用或禁用每一核心或其他組件。因此,可發出用於對核心705-1進行管理的一個命令,可發出用於對核心705-2進行管理的另一命令,可使用用於對PTM 710-1進行管理的另一命令,可發出用於對PTM 710-2進行管理的另一命令,且以此類推。但是,在使用本揭露的實施例的情況下,由於不同的值可表示在計算儲存單元135中啟用及/或禁用的不同服務,因此使用此種命令使得單個命令能夠表示計算儲存單元135的多個各別的指令。亦即,不再發送單獨的命令來啟用PTM 710-1、然後啟用PTM 710-2且以此類推,而是可利用使用值0×F的單個命令來啟用PTM 710-1至710-4。因此,本揭露的實施例支援使用一個命令啟用及/或禁用計算儲存單元135的多個服務。
儘管以上實例闡述了可如何在計算儲存單元135中啟用及/或禁用追蹤,然而亦可針對其他命令使用本揭露的實施例。舉例而言,在使用本揭露的實施例的情況下,藉由簡單地使用不同的特徵辨識符(或不同的命令),可選擇性地啟用及/或禁用核心705,可改變CPU頻率,可啟用及/或禁用錯誤校正等。
圖8示出根據本揭露實施例的圖4A所示命令路由器405將命令路由至圖1所示計算儲存單元135的過程的流程圖。在圖8中,在方塊805處,圖4A所示命令路由器405可自圖1所示主機105接收圖5所示命令505。在方塊810處,圖4A所示命令路由器405可基於圖5所示命令505是擬定用於圖1所示儲存裝置120還是擬定用於圖1所示計算儲存單元135來為圖5所示命令505選擇接收方(例如圖6所示控制器615或圖3所示計算儲存單元310)。在方塊815處,圖4A所示命令路由器405可將圖5所示命令505路由至接收方。
圖9示出根據本揭露實施例的如何使用圖4A所示命令路由器405來對命令進行路由。在圖9中,在方塊905處,圖4A所示命令路由器405可進行檢查以查看圖5所示命令505是否處於圖5所示儲存器命令列表510中。若圖5所示命令505處於圖5所示儲存器命令列表510中,則可選擇圖1所示儲存裝置120(或圖6所示控制器615)作為圖5所示命令505的接收方,且在方塊910處,圖4A所示命令路由器405可將圖5所示命令505路由至圖1所示儲存裝置120。
作為另外一種選擇,在方塊915處,圖4A所示命令路由器405可進行檢查以查看圖5所示命令505是否處於圖5所示計算儲存單元命令列表515中。若圖5所示命令505處於圖5所示計算儲存單元命令列表515中,則可選擇圖1所示計算儲存單元135作為圖5所示命令505的接收方,且在方塊920處,圖4A所示命令路由器405可將圖5所示命令505路由至圖1所示計算儲存單元135。否則,若圖5所示命令505既不處於圖5所示儲存器命令列表510中且亦不處於圖5所示計算儲存單元命令列表515中,則可在方塊925處報告錯誤。
應注意,圖9包括方塊905及915二者。在本揭露的一些實施例中,包括所述兩種檢查可能是冗餘的:即,若圖5所示命令505不處於圖5所示儲存器命令列表510中,則可假設圖5所示命令505處於圖5所示計算儲存單元命令列表515中且可省略方塊915。可以相反方式考量相同的可能性:若圖5所示命令505不處於圖5所示計算儲存單元命令列表515中,則可假設圖5所示命令505處於圖5所示儲存器命令列表510中且可省略方塊905。但是,若本揭露的實施例可被概括為支援擬定用於經由圖1所示儲存裝置120達成的其他模組的其他類型的命令,則可包括方塊905及915二者(以及其他相似方塊)。作為另外一種選擇,可對圖5所示儲存器命令列表510及圖5所示計算儲存單元命令列表515進行檢查:若圖5所示命令505不處於任一列表中,則可返送錯誤。
在圖8至圖9中示出本揭露的一些實施例。但熟習此項技術者將認識到,藉由改變方塊的次序、藉由省略方塊或者藉由包括圖式中未示出的鏈路,本揭露的其他實施例亦是可能的。無論是否明確闡述,流程圖的所有此種變型皆被視為本揭露的實施例。
本揭露的實施例可出於併發日誌記錄(concurrent logging)、追蹤及除錯(debugging)目的而使用通用控制特徵(例如圖4A所示命令路由器405)來進行計算裝置中的多個組件之間的計算儲存。本揭露的實施例可包括用於擴展及克服與計算裝置進行通訊的現有介面的限制的機制。
本揭露的實施例可藉由對介面現有命令進行擴展且將其直接映射至計算裝置中的配置特徵來使得能夠對計算裝置硬體的配置、特徵及設定進行直接控制。
本揭露的實施例可提供將計算裝置的功能性擴展至執行程式及產生輸出之外的能力。此種功能性的實例可包括:對處理器中所支援中斷的數目進行配置;使得能夠禁用每個核心或所有核心的追蹤,以達成多維除錯(並行除錯);在處理器中設定特定選項,例如除錯層階或啟用/禁用錯誤校正控制(error correction control,ECC);以及為處理器中的記憶體保護單元(memory protection unit,MPU)配置區的數目。
在未在實體上連接至計算裝置的情況下達成追蹤及除錯的能力對於可能無法對裝置進行直接存取的資料中心及雲環境可為有用的。
本揭露的優點可包括向主機暴露構建於計算裝置中的特徵,因此所述特徵可被利用及使用。本揭露的一些實施例可包括在不存在對裝置埠的直接存取時使用及控制計算裝置中的特徵的能力(例如聯合測試存取組(joint test access group,JTAG))。本揭露的一些實施例可包括在不需要兩個不同介面的情況下使用一個介面來傳遞命令且自固態驅動機(SSD)及計算裝置獲得結果的能力。
本揭露的實施例(例如圖4A所示命令路由器405)可使得能夠對計算裝置硬體特徵及配置進行直接控制。本揭露的實施例可使用記憶體映射區作為將資料移動至裝置、加載及執行計算命令以及將結果移動回主機的方式來避免可能在主機與計算裝置之間進行限制的交互。本揭露的一些實施例可包括用於獲取關於計算裝置正在執行的指令的除錯資料或追蹤的機制。本揭露的一些實施例可包括用於多維除錯(並行除錯)的機制。本揭露的一些實施例可包括對計算裝置的特徵進行控制及配置的機制。
本揭露提出一種用於對計算裝置(其可為ARM中央處理單元(CPU)、圖形處理單元(GPU)、神經處理單元(NPU)等)特徵進行存取且經由快速非揮發性記憶體(NVMe)或快速計算鏈接(CXL)介面啟用/禁用所述計算裝置特徵的機制。本揭露的一些實施例可包括在不需要多個命令的情況下使用一個命令來啟用/禁用特徵及對狀況進行檢查的能力。本揭露的一些實施例可使用命令剖析器/重新路由器機制來對傳入命令進行檢查並將其重新引導至計算裝置或儲存裝置。
本揭露的一些實施例可包括圖4A所示命令路由器405,以藉由對介面現有命令進行擴展並將其直接映射至計算裝置中的配置特徵來使得能夠對計算裝置硬體的配置、特徵及設定進行直接控制。本揭露的一些實施例可給出將計算裝置的功能性擴展至執行程式及產生輸出之外的能力。舉例而言,一些實施例可對處理器中所支援中斷的數目進行配置。
本揭露的一些實施例可使得能夠禁用每個核心或所有核心的追蹤,以達成多維除錯(並行除錯)。本揭露的一些實施例可包括在處理器中設定特定選項(如除錯層階)或啟用/禁用ECC。
本揭露的一些實施例可包括對處理器中的記憶體保護單元(MPU)中的區的數目進行配置,以藉由在特權存取層階與非特權存取層階中對不同的存取許可進行定義來保護記憶體區。
本揭露的一些實施例可包括計算儲存裝置,其中計算裝置不具有主機可用來對計算裝置的能力進行精細調諧的介面。
本揭露的一些實施例可包括現有設定特徵命令,所述現有設定特徵命令可用於在無需為每一特徵引入新命令的情況下使得能夠禁用計算裝置的新特徵及其引數(argument)。命令雙字(CDW)10可包括特徵辨識符,其中位元0至7指定所述特徵,且CDW 11可包括特徵特定資訊。其餘的命令欄位可被預留。可在CDW 0中返送命令結果。
本揭露的一些實施例可包括預留欄位19h至77h,其可用於啟用/禁用ARM除錯/追蹤特徵或其他特徵。
儲存模組(例如圖4B所示儲存模組410)可基於特徵辨識符對命令進行重新路由。若所述命令包括儲存裝置NVMe命令,則儲存模組可如同任何典型的NVMe命令一般對所述命令進行處理。若所述命令未被辨識為NVMe儲存器命令且所述命令處於計算裝置命令列表中,則儲存模組可將所述命令重新路由至計算裝置。
本揭露的實施例可克服NVMe/CXL介面的缺點,所述缺點可能會阻止主機處理器與計算裝置進行直接通訊。
本揭露的一些實施例可提供用於啟用/禁用與使用者無法對裝置進行直接存取的任何計算裝置相關的特徵的機制。
可向特徵列表添加供應商專用特徵。
本揭露的一些實施例可使用及利用計算裝置所提供的現有除錯/追蹤及設定表示(profiling)工具,而不需要重新實施該些工具。
本揭露的一些實施例可提供在不需要多個命令的情況下使用一個命令來啟用/禁用特徵並對狀況進行檢查的機制。
本揭露的實施例可引入充當命令剖析器/重新路由器(例如圖4A所示命令路由器405)的新特徵,以對傳入命令進行檢查並將傳入命令重新引導至計算裝置或儲存裝置。
本揭露的一些實施例可包括經由NVMe/CXL介面或缺乏此種能力的任何其他介面來對計算裝置特徵進行存取、配置及觸發的機制。
本揭露的一些實施例可包括在不需要多個命令的情況下使用一個命令來啟用/禁用特徵及對狀況進行檢查的能力。
本揭露的一些實施例可包括多組件計算儲存裝置內部架構,以對傳入命令進行檢查並將傳入命令重新引導至計算裝置或儲存裝置。第一種選擇可為使用命令剖析器/重新路由器來辨識傳入命令並將其重路由至對應的硬體。第二種選擇是使用儲存模組作為命令剖析器/重新路由器。舉例而言,儲存裝置接收命令(例如,NVMe命令)。若所述命令是儲存裝置NVMe命令,則所述命令可用作任何典型的NVMe命令。若所述命令未被辨識為NVMe儲存器命令且所述命令處於計算裝置命令列表中,則儲存模組將所述命令重新路由至計算裝置。
本揭露的一些實施例可設定命令剖析器作業來辨識命令並將其重新路由至對應的硬體。舉例而言,若命令是NVMe儲存器命令,則命令剖析器可將其重新路由至儲存裝置;若所述命令是除錯追蹤命令,則命令剖析器可將其重新路由至計算裝置。
本揭露的一些實施例可包括儲存裝置(例如,SSD)之內的命令剖析。本揭露的其他實施例可在儲存裝置之外進行命令剖析。藉由確定出所述命令所屬的硬體,可將所述命令「重新路由」至對應的硬體。
本揭露的一些實施例可包括用於產生某些資料型樣的命令描述符,而本揭露的其他實施例可著重於在計算裝置環境中基於命令將所述命令重新路由至適當的硬體(儲存裝置或計算裝置),其中命令可以儲存器為目標或者可旨在觸發計算裝置中的某些動作。
本揭露的一些實施例可包括基於Linux開放式韌體層命名約定(Linux Open Firmware layer naming convention)的名稱,所述名稱跟隨裝置的基本實體位址,所述基本實體位址之後是裝置名稱。
本揭露的一些實施例可藉由啟用追蹤源及匯點來啟用追蹤。在本揭露的一些實施例中,在任何給定時刻皆可啟用的匯點(或源)的數目不具有限制。「啟用」源可立即觸發追蹤捕獲;「禁用」源可能會立即觸發追蹤捕獲。
在本揭露的一些實施例中,系統中的每一核心可被映射至被稱為嵌入式追蹤巨胞元(Embedded Trace Macrocell,ETM)的伴生區塊(companion block)。作業系統驅動器可使用特定的追蹤特性對追蹤巨胞元進行程式化。追蹤可由硬體以被稱為程式流追蹤的格式產生。程式流追蹤可包括:一些分支指令;例外情況;返送;及/或記憶體障礙(Memory barrier)。在本揭露的一些實施例中,藉由使用原始程式影像及追蹤,可能重新構造處理器經由碼所採用的路徑。
一些實施例可使用開放式核心視線解碼庫(開放式CSD庫)來對程式流追蹤進行解碼。
本揭露的一些實施例可對用於實施晶片上指令及資料存取追蹤設施的晶片上掛鉤(on-chip hook)進行定義。本揭露的實施例可具有在不影響CPU核心的效能的情況下對CPU核心所進行的操作進行追蹤的能力。CPU核心可能不參與,因此可不對效能造成影響。可能不需要對外部硬體進行連接。來自不同源的追蹤的同步可包括多維除錯。在本揭露的一些實施例中,多維除錯對於在條件發生時可能無法負擔使目標停止除錯的除錯場景可為有用的。一些實施例可包括不具有JTAG埠或者所述埠不可存取的系統。
在本文中的揭露的實施例中,可使用追蹤解決的問題可包括指針問題;非法指令及資料中止(例如未對齊的寫入);碼重寫,例如寫入至快閃、非預期寫入至周邊暫存器(SFR)、堆疊損壞;資料出界;未被初始化的變量及數組;慢速程式;堆疊溢出;通訊協定及定時問題;碼覆蓋率;以及執行源碼的時間。
本揭露的實施例使得能夠判斷發送至儲存裝置的命令是擬定用於儲存裝置還是針對計算儲存單元。然後可基於所述命令的預期接收方將所述命令路由至適當的硬體。本揭露的一些實施例可在命令剖析器中實行路由(在儲存裝置之內或之外);本揭露的其他實施例可使用儲存裝置的控制器中的邏輯來實行路由。本揭露的實施例亦可使得能夠使用單個命令來表示多個指令(可能必須使用至計算儲存單元的終端介面來各別地發出所述多個指令)。
以下論述旨在提供對可在其中實施本揭露的某些態樣的一或多個適合的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令(directive)、與虛擬實境(virtual reality,VR)環境、生物統計回饋(biometric feedback)或其他輸入訊號的交互作用。本文中所使用的用語「機器」旨在廣泛地囊括單一機器、虛擬機器或由以通訊方式耦合的一起進行操作的機器、虛擬機器或裝置構成的系統。實例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(ASIC)、嵌入式電腦、智慧卡及類似裝置。所述一或多個機器可利用例如藉由網路介面、數據機或其他通訊性耦合達成的與一或多個遠程機器的一或多個連接。機器可以例如內部網路(Intranet)、網際網路、局域網路、廣域網路等實體及/或邏輯網路的方式進行互連。熟習此項技術者應理解,網路通訊可利用各種有線及/或無線短程或長程載波及協定,所述載波及協定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍芽®、光學的、紅外線的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本揭露的實施例,所述相關聯資料包括當由機器存取時使得所述機器實行任務或對抽象資料類型或低層階硬體上下文進行定義的功能、過程、資料結構、應用程式等。相關聯資料可儲存於例如揮發性記憶體及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於包括硬驅動機、軟磁碟(floppy-disk)、光學儲存器、磁帶(tape)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等的其他儲存裝置及其相關聯儲存媒體中。相關聯資料可以封包、串列資料、並列資料、傳播訊號等形式經由包括實體網路及/或邏輯網路在內的傳輸環境而進行遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本地及/或遠程儲存以供機器存取。
本揭露的實施例可包括有形非暫時性機器可讀取媒體,所述有形非暫時性機器可讀取媒體包括可由一或多個處理器執行的指令,所述指令包括用於實行如在本文中所述的本揭露的要素的指令。
上述方法的各種操作可藉由能夠實行所述操作的任何適合的手段(例如各種硬體及/或軟體組件、電路及/或模組)來實行。所述軟體可包括用於實施邏輯函數的可執行指令的有序列表,且可實施於任何「處理器可讀取媒體」中,以供由指令執行系統、設備或裝置(例如單核心處理器或多核心處理器或包含處理器的系統)使用或者與指令執行系統、設備或裝置結合使用。
結合本文中所揭露的實施例闡述的方法或演算法及功能的方塊或步驟可直接以硬體、以由處理器執行的軟體模組或以所述二者的組合來實施。若以軟體實施,則功能可作為一或多個指令或碼儲存於有形非暫時性電腦可讀取媒體上或者在有形非暫時性電腦可讀取媒體之上傳輸。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電性可程式化ROM(Electrically Programmable ROM,EPROM)、電性可抹除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可抽換式磁碟(removable disk)、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
由於已參照所示實施例闡述及例示了本揭露的原理,因此將認識到,在不背離此種原理的條件下,所示實施例可在佈置及細節上作出潤飾,且可以任何所期望方式進行組合。並且,儘管前述論述著重於特定實施例,然而亦可預期存在其他配置。具體而言,即使在本文中使用例如「根據本揭露的實施例」或類似表述等表述,然而該些片語意在一般指代實施例可能性,且不旨在將本揭露限制於特定實施例配置。本文中所使用的該些用語可指組合至其他實施例中的相同或不同的實施例。
前述例示性實施例不應被視為限制其揭露內容。儘管已闡述幾個實施例,然而熟習此項技術者應易於理解,在不實質上背離本揭露的新穎教示內容及優點的條件下,可對該些實施例作出諸多潤飾。因此,所有此種潤飾皆旨在包含於如在申請專利範圍中所界定的本揭露的範圍內。
本揭露的實施例可擴展至以下聲明,但不限於此:
聲明1. 本揭露的實施例包括一種儲存裝置,所述儲存裝置包括:
用於資料的儲存器;
控制器,用於對來自主機處理器的關於儲存器中的資料的輸入/輸出(I/O)請求進行處理;
計算儲存單元,用於實施對儲存器中的資料執行的至少一個服務;以及
命令路由器,用於至少部分地基於自主機處理器接收的命令來將所述命令路由至控制器或計算儲存單元。
聲明2. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令包括快速非揮發性記憶體(NVMe)命令、快速計算鏈路(CXL)命令或快速周邊組件互連(PCIe)命令中的至少一者。
聲明3. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令包括供應商專用命令。
聲明4. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述儲存裝置包括固態驅動機(SSD)。
聲明5. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述控制器包括所述命令路由器。
聲明6. 本揭露的實施例包括根據聲明5的儲存裝置,其中所述控制器包括用於實施命令路由器的邏輯。
聲明7. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令路由器被配置成至少部分地基於所述命令是儲存裝置命令而將所述命令路由至所述控制器。
聲明8. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令路由器被配置成至少部分地基於所述命令是計算儲存單元命令而將所述命令路由至所述計算儲存單元。
聲明9. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令包括計算儲存單元的至少兩個服務。
聲明10. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令路由器包括欲被路由至計算儲存單元的命令列表。
聲明11. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述命令路由器包括欲被路由至所述控制器的命令列表。
聲明12. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述計算儲存單元包括中央處理單元(CPU)、複雜指令集電腦(CISC)、精簡指令集電腦(RISC)、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)或神經處理單元(NPU)中的至少一者。
聲明13. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述計算儲存單元包括單個核心。
聲明14. 本揭露的實施例包括根據聲明1的儲存裝置,其中所述計算儲存單元包括至少兩個核心。
聲明15. 本揭露的實施例包括一種方法,所述方法包括:
在命令路由器處接收來自主機處理器的命令;
至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方;以及
將所述命令路由至所述接收方。
聲明16. 本揭露的實施例包括根據聲明15的方法,其中所述命令包括快速非揮發性記憶體(NVMe)命令、快速計算鏈路(CXL)命令或快速周邊組件互連(PCIe)命令中的至少一者。
聲明17. 本揭露的實施例包括根據聲明15的方法,其中所述命令包括供應商專用命令。
聲明18. 本揭露的實施例包括根據聲明15的方法,其中所述儲存裝置包括固態驅動機(SSD)。
聲明19. 本揭露的實施例包括根據聲明15的方法,其中所述命令路由器是所述儲存裝置的組件。
聲明20. 本揭露的實施例包括根據聲明15的方法,其中所述儲存裝置的所述控制器包括所述命令路由器。
聲明21. 本揭露的實施例包括根據聲明20的方法,其中所述控制器包括用於實施命令路由器的邏輯。
聲明22. 本揭露的實施例包括根據聲明15的方法,其中所述命令包括計算儲存單元的至少兩個服務。
聲明23. 本揭露的實施例包括根據聲明15的方法,其中至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方包括在命令路由器處判斷所述命令是否處於欲被路由至計算儲存單元的命令列表中。
聲明24. 本揭露的實施例包括根據聲明15的方法,其中至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方包括在命令路由器處判斷所述命令是否處於欲被路由至儲存裝置的命令列表中。
聲明25. 本揭露的實施例包括根據聲明15的方法,其中所述計算儲存單元包括中央處理單元(CPU)、複雜指令集電腦(CISC)、精簡指令集電腦(RISC)、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)或神經處理單元(NPU)中的至少一者。
聲明26. 本揭露的實施例包括根據聲明15的方法,其中所述計算儲存單元包括單個核心。
聲明27. 本揭露的實施例包括根據聲明15的方法,其中所述計算儲存單元包括至少兩個核心。
聲明28. 本揭露的實施例包括一種電腦實施系統,所述電腦實施系統包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的指令,所述指令在由處理器執行時使得:
在命令路由器處接收來自主機處理器的命令;
至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方;以及
將所述命令路由至所述接收方。
聲明29. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述命令包括快速非揮發性記憶體(NVMe)命令、快速計算鏈路(CXL)命令或快速周邊組件互連(PCIe)命令中的至少一者。
聲明30. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述命令包括供應商專用命令。
聲明31. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述儲存裝置包括固態驅動機(SSD)。
聲明32. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述命令路由器是所述儲存裝置的組件。
聲明33. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述儲存裝置的所述控制器包括所述命令路由器。
聲明34. 本揭露的實施例包括根據聲明33的電腦實施系統,其中所述控制器包括用於實施命令路由器的邏輯。
聲明35. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述命令包括計算儲存單元的至少兩個服務。
聲明36. 本揭露的實施例包括根據聲明28的電腦實施系統,其中至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方包括在命令路由器處判斷所述命令是否處於欲被路由至計算儲存單元的命令列表中。
聲明37. 本揭露的實施例包括根據聲明28的電腦實施系統,其中至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方包括在命令路由器處判斷所述命令是否處於欲被路由至儲存裝置的命令列表中。
聲明38. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述計算儲存單元包括中央處理單元(CPU)、複雜指令集電腦(CISC)、精簡指令集電腦(RISC)、現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)或神經處理單元(NPU)中的至少一者。
聲明39. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述計算儲存單元包括單個核心。
聲明40. 本揭露的實施例包括根據聲明28的電腦實施系統,其中所述計算儲存單元包括至少兩個核心。
因此,慮及本文中所述的實施例的各種各樣的排列,此詳細說明及隨附材料僅旨在為例示性的,且不應被視為限制本揭露的範圍。因此,所主張保護的揭露內容是所有可落入以下申請專利範圍及其等效內容的範圍及精神內的此種潤飾。
105:機器/主機
110、330:處理器
115、415:記憶體
120:儲存裝置/固態驅動機(SSD)
125:記憶體控制器
130:裝置驅動器
135:計算儲存單元
205:時鐘
210:網路連接件
215:匯流排
220:使用者介面
225:輸入/輸出(I/O)引擎
305:儲存裝置
310-1、310-2、310-3、310-4:計算裝置
315:控制器
320-1、320-2、320-3~320-4:儲存元件/儲存器
325、340:佇列對
335-1、335-2:服務
345:組構
350:代理儲存器存取件
355:陣列控制器
405:命令路由器
410:儲存模組
505:命令
510:儲存器命令列表/列表
515:計算儲存單元命令列表/列表
520:儲存器命令
525:計算儲存單元(CSU)命令
605:介面
610:主機介面層
615:SSD控制器/控制器
620-1、620-2、620-3、620-4:通道
625-1、625-2、625-3、625-4、625-5、625-6、625-7、625-8:快閃記憶體晶片/快閃晶片
630:快閃轉譯層(FTL)
705-1、705-2、705-3、705-4:核心
710-1、710-2、710-3、710-4:程式追蹤微胞元(PTM)
715:漏斗件
720:先進先出(FIFO)緩衝器
725、740、750:追蹤
730:複製器
735:追蹤埠介面單元(TPIU)
745:嵌入式追蹤緩衝器/嵌入式追蹤FIFO(ETB/ETF)
805、810、815、905、915、925:方塊
以下闡述的圖式是關於可如何實施本揭露的實施例的實例,且不旨在限制本揭露的實施例。本揭露的各別實施例可包括未在特定圖中示出的元件及/或可省略特定圖中示出的元件。所述圖式旨在提供例示且可能不按比例繪製。
圖1示出根據本揭露實施例的包括支援對計算儲存裝置的特徵進行存取的計算儲存單元的系統。
圖2示出根據本揭露實施例的圖1所示機器的細節。
圖3A示出根據本揭露實施例的可與圖1所示儲存裝置相關聯的計算儲存單元的第一實例性佈置。
圖3B示出根據本揭露實施例的可與圖1所示儲存裝置相關聯的計算儲存單元的第二實例性佈置。
圖3C示出根據本揭露實施例的可與圖1所示儲存裝置相關聯的計算儲存單元的第三實例性佈置。
圖3D示出根據本揭露實施例的可與圖1所示儲存裝置相關聯的計算儲存單元的第四實例性佈置。
圖4A示出根據本揭露實施例的圖1所示儲存裝置的用於將命令路由至圖1所示計算儲存單元的第一佈置。
圖4B示出根據本揭露實施例的圖1所示儲存裝置的用於將命令路由至圖1所示計算儲存單元的第二佈置。
圖5示出根據本揭露實施例的被配置成將命令路由至圖1所示計算儲存單元的圖4A所示命令路由器。
圖6示出根據本揭露實施例的支援將命令路由至圖1所示計算儲存單元的固態驅動機(SSD)。
圖7示出根據本揭露實施例的在圖1所示計算儲存單元中的多個核心中產生追蹤。
圖8示出根據本揭露實施例的圖4A所示命令路由器將命令路由至圖1所示計算儲存單元的實例性過程的流程圖。
圖9示出根據本揭露實施例的使用圖4A所示命令路由器來對命令進行路由的實例性過程的流程圖。
805、810、815:方塊
Claims (20)
- 一種儲存裝置,包括: 用於資料的儲存器; 控制器,用於對來自主機處理器的關於所述儲存器中的所述資料的輸入/輸出(I/O)請求進行處理; 計算儲存單元,用於實施對所述儲存器中的所述資料執行的至少一個服務;以及 命令路由器,用於至少部分地基於自所述主機處理器接收的命令來將所述命令路由至所述控制器或所述計算儲存單元。
- 如請求項1所述的儲存裝置,其中所述命令包括快速非揮發性記憶體(NVMe)命令、快速計算鏈路(CXL)命令或快速周邊組件互連(PCIe)命令中的至少一者。
- 如請求項1所述的儲存裝置,其中所述儲存裝置包括固態驅動機(SSD)。
- 如請求項1所述的儲存裝置,其中所述控制器包括所述命令路由器。
- 如請求項1所述的儲存裝置,其中所述命令路由器被配置成至少部分地基於所述命令是儲存裝置命令而將所述命令路由至所述控制器。
- 如請求項1所述的儲存裝置,其中所述命令路由器被配置成至少部分地基於所述命令是計算儲存單元命令而將所述命令路由至所述計算儲存單元。
- 如請求項1所述的儲存裝置,其中所述命令包括所述計算儲存單元的至少兩個服務。
- 如請求項1所述的儲存裝置,其中所述命令路由器包括欲被路由至所述控制器的命令列表。
- 如請求項1所述的儲存裝置,其中所述計算儲存單元包括至少兩個核心。
- 一種操作儲存裝置的方法,包括: 在命令路由器處接收來自主機處理器的命令; 至少部分地基於所述命令來選擇所述儲存裝置的控制器或者計算儲存單元作為接收方;以及 將所述命令路由至所述接收方。
- 如請求項10所述的方法,其中所述命令包括快速非揮發性記憶體(NVMe)命令、快速計算鏈路(CXL)命令或快速周邊組件互連(PCIe)命令中的至少一者。
- 如請求項10所述的方法,其中所述儲存裝置的所述控制器包括所述命令路由器。
- 如請求項10所述的方法,其中所述命令包括所述計算儲存單元的至少兩個服務。
- 如請求項10所述的方法,其中至少部分地基於所述命令來選擇所述儲存裝置的所述控制器或者所述計算儲存單元作為所述接收方包括在所述命令路由器處判斷所述命令是否處於欲被路由至所述儲存裝置的命令列表中。
- 如請求項10所述的方法,其中至少部分地基於所述命令來選擇所述儲存裝置的所述控制器或者所述計算儲存單元作為所述接收方包括在所述命令路由器處判斷所述命令是否處於欲被路由至所述計算儲存單元的命令列表中。
- 如請求項10所述的方法,其中所述計算儲存單元包括至少兩個核心。
- 一種電腦實施系統,包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的指令,所述指令在由處理器執行時使得: 在命令路由器處接收來自主機處理器的命令; 至少部分地基於所述命令來選擇儲存裝置的控制器或者計算儲存單元作為接收方;以及 將所述命令路由至所述接收方。
- 如請求項17所述的電腦實施系統,其中所述儲存裝置的所述控制器包括所述命令路由器。
- 如請求項17所述的電腦實施系統,其中所述命令包括所述計算儲存單元的至少兩個服務。
- 如請求項17所述的電腦實施系統,其中至少部分地基於所述命令來選擇所述儲存裝置的所述控制器或者所述計算儲存單元作為所述接收方包括在所述命令路由器處判斷所述命令是否處於欲被路由至所述儲存裝置的命令列表中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163223544P | 2021-07-19 | 2021-07-19 | |
US63/223,544 | 2021-07-19 | ||
US17/482,412 | 2021-09-22 | ||
US17/482,412 US11966343B2 (en) | 2021-07-19 | 2021-09-22 | Universal mechanism to access and control a computational device |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202314488A true TW202314488A (zh) | 2023-04-01 |
Family
ID=82611219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111126841A TW202314488A (zh) | 2021-07-19 | 2022-07-18 | 儲存裝置、操作儲存裝置的方法以及電腦實施系統 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11966343B2 (zh) |
EP (1) | EP4123465A1 (zh) |
KR (1) | KR20230013627A (zh) |
CN (1) | CN115639952A (zh) |
TW (1) | TW202314488A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230112448A1 (en) * | 2021-10-12 | 2023-04-13 | Seagate Technology Llc | Computational storage drive using fpga implemented interface |
US11941266B2 (en) * | 2021-10-20 | 2024-03-26 | Samsung Electronics Co., Ltd. | Resource isolation in computational storage devices |
US11880568B2 (en) | 2021-11-17 | 2024-01-23 | Seagate Technology Llc | On demand configuration of FPGA interfaces |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7673180B1 (en) | 2005-05-05 | 2010-03-02 | Sun Microsystems, Inc. | Method and apparatus for dispatching a remote debugging agent in a distributed computing environment |
US8209704B1 (en) | 2008-03-28 | 2012-06-26 | Emc Corporation | Techniques for user space and kernel space communication |
US8041849B2 (en) | 2008-07-02 | 2011-10-18 | Lsi Corporation | Method for handling small computer system interface (SCSI) commands via a redundant array of inexpensive disks (RAID) device driver |
US9703678B2 (en) | 2008-12-23 | 2017-07-11 | Microsoft Technology Licensing, Llc | Debugging pipeline for debugging code |
US8261361B2 (en) | 2009-03-11 | 2012-09-04 | Microsoft Corporation | Enabling sharing of mobile communication device |
US8055816B2 (en) | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8271557B1 (en) | 2009-04-20 | 2012-09-18 | Xilinx, Inc. | Configuration of a large-scale reconfigurable computing arrangement using a virtual file system interface |
US8806511B2 (en) | 2010-11-18 | 2014-08-12 | International Business Machines Corporation | Executing a kernel device driver as a user space process |
US8990536B2 (en) | 2011-06-01 | 2015-03-24 | Schneider Electric It Corporation | Systems and methods for journaling and executing device control instructions |
US20120311117A1 (en) | 2011-06-01 | 2012-12-06 | Morgan Stanley | Object Pipeline-Based Virtual Infrastructure Management |
US8898542B2 (en) | 2011-12-12 | 2014-11-25 | Cleversafe, Inc. | Executing partial tasks in a distributed storage and task network |
US8914785B2 (en) | 2012-07-30 | 2014-12-16 | International Business Machines Corporation | Providing virtual appliance system firmware images |
US9122794B2 (en) | 2012-10-30 | 2015-09-01 | Oracle International Corporation | System and method for debugging domain specific languages |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US10187479B2 (en) | 2013-08-26 | 2019-01-22 | Vmware, Inc. | Cloud-scale heterogeneous datacenter management infrastructure |
WO2015067983A1 (en) | 2013-11-08 | 2015-05-14 | Sandisk Il Ltd. | Reduced host data command processing |
US9542224B2 (en) | 2014-01-30 | 2017-01-10 | Vmware, Inc. | User space function execution from a kernel context for input/output filtering from a thread executing in the user space |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
WO2016033718A1 (zh) | 2014-09-01 | 2016-03-10 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
CN109766302B (zh) | 2014-09-12 | 2022-09-16 | 华为技术有限公司 | 设备管理的方法和装置 |
US9542122B2 (en) | 2014-10-23 | 2017-01-10 | Seagate Technology Llc | Logical block addresses used for executing host commands |
WO2016074166A1 (en) | 2014-11-12 | 2016-05-19 | Intel Corporation | Live migration of virtual machines from/to host computers with graphics virtualization |
US20160378545A1 (en) | 2015-05-10 | 2016-12-29 | Apl Software Inc. | Methods and architecture for enhanced computer performance |
US10552058B1 (en) * | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US10705952B2 (en) | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
EP3916536A1 (en) | 2015-12-28 | 2021-12-01 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage device |
US9632848B1 (en) | 2015-12-29 | 2017-04-25 | Advanced Micro Devices, Inc. | Asynchronous submission of commands |
GB2546343A (en) | 2016-01-15 | 2017-07-19 | Stmicroelectronics (Grenoble2) Sas | Apparatus and methods implementing dispatch mechanisms for offloading executable functions |
US20200034073A1 (en) | 2016-02-22 | 2020-01-30 | Nutanix, Inc. | Accelerating background tasks in a computing cluster |
US10877911B1 (en) | 2016-03-30 | 2020-12-29 | Amazon Technologies, Inc. | Pattern generation using a direct memory access engine |
US10642496B2 (en) | 2016-04-01 | 2020-05-05 | Sandisk Technologies Inc. | Out of order read transfer with host memory buffer |
FR3051934A1 (fr) | 2016-05-24 | 2017-12-01 | Orange | Procede d'identification d'au moins une fonction d'un noyau d'un systeme d'exploitation |
KR102278721B1 (ko) | 2016-07-22 | 2021-07-16 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스(NVMe) 장치의 커맨드의 실행 조정을 위한 시스템 및 방법 |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10678432B1 (en) | 2016-10-04 | 2020-06-09 | Pure Storage, Inc. | User space and kernel space access to memory devices through private queues |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
CN110073323B (zh) | 2017-03-24 | 2022-10-25 | 西部数据技术公司 | 使用控制器存储器缓冲区进行推测性执行命令的系统和方法 |
US20180285252A1 (en) * | 2017-04-01 | 2018-10-04 | Intel Corporation | Optimized memory access bandwidth devices, systems, and methods for processing low spatial locality data |
KR102263357B1 (ko) | 2017-04-19 | 2021-06-11 | 한국전자통신연구원 | 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법 |
US10534546B2 (en) | 2017-06-13 | 2020-01-14 | Western Digital Technologies, Inc. | Storage system having an adaptive workload-based command processing clock |
US10496335B2 (en) * | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
US10908998B2 (en) | 2017-08-08 | 2021-02-02 | Toshiba Memory Corporation | Managing function level reset in an IO virtualization-enabled storage device |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US11074114B1 (en) | 2017-12-29 | 2021-07-27 | Virtuozzo International Gmbh | System and method for executing applications in a non-native environment |
CN108415795B (zh) | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US10592380B2 (en) | 2018-04-20 | 2020-03-17 | Sysdig, Inc. | Programmatic container monitoring |
US10769050B2 (en) | 2018-05-16 | 2020-09-08 | Texas Instruments Incorporated | Managing and maintaining multiple debug contexts in a debug execution mode for real-time processors |
US10740217B1 (en) | 2018-05-22 | 2020-08-11 | Parallels International Gmbh | Non-native system-level debugging using symbolic information |
US20200301898A1 (en) * | 2018-06-25 | 2020-09-24 | BigStream Solutions, Inc. | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates |
US10783051B2 (en) | 2018-09-06 | 2020-09-22 | Servicenow, Inc. | Performance regression framework |
US10915381B2 (en) * | 2018-10-16 | 2021-02-09 | Ngd Systems, Inc. | System and method for computational storage device intercommunication |
US10949321B1 (en) | 2018-11-26 | 2021-03-16 | Amazon Technologies, Inc. | Operational management of a device |
KR20200076244A (ko) | 2018-12-19 | 2020-06-29 | 삼성전자주식회사 | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 |
US10678677B1 (en) | 2019-01-10 | 2020-06-09 | Red Hat Israel, Ltd. | Continuous debugging |
US11138134B2 (en) | 2019-05-22 | 2021-10-05 | Nxp Usa, Inc. | Non-intrusive semihosting solution for debug using direct memory access implementation-based library |
US11334404B2 (en) | 2019-05-31 | 2022-05-17 | Apple Inc. | Techniques for managing access to file systems |
US11086800B2 (en) | 2019-06-01 | 2021-08-10 | Apple Inc. | Execution space agnostic device drivers |
US10915426B2 (en) | 2019-06-06 | 2021-02-09 | International Business Machines Corporation | Intercepting and recording calls to a module in real-time |
US10901624B1 (en) | 2019-07-01 | 2021-01-26 | Western Digital Technologies, Inc. | Dummy host command generation for supporting higher maximum data transfer sizes (MDTS) |
US11334498B2 (en) | 2019-07-11 | 2022-05-17 | Vmware, Inc. | Zero copy method that can span multiple address spaces for data path applications |
US11294750B2 (en) | 2019-07-15 | 2022-04-05 | Micron Technology, Inc. | Media management logger for a memory sub-system |
US20210049036A1 (en) | 2019-08-13 | 2021-02-18 | Facebook Technologies, Llc | Capability Space |
US11194706B2 (en) | 2019-09-05 | 2021-12-07 | Facebook Technologies, Llc | System and method for split storage stack |
US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
US11496314B2 (en) | 2019-12-18 | 2022-11-08 | Intel Corporation | Integrity protected command buffer execution |
US11194695B2 (en) | 2020-01-07 | 2021-12-07 | Supercell Oy | Method for blocking external debugger application from analysing code of software program |
US11429299B2 (en) | 2020-02-13 | 2022-08-30 | Samsung Electronics Co., Ltd. | System and method for managing conversion of low-locality data into high-locality data |
US11507301B2 (en) * | 2020-02-24 | 2022-11-22 | Sunrise Memory Corporation | Memory module implementing memory centric architecture |
US11868622B2 (en) | 2020-02-25 | 2024-01-09 | Pure Storage, Inc. | Application recovery across storage systems |
US11507298B2 (en) * | 2020-08-18 | 2022-11-22 | PetaIO Inc. | Computational storage systems and methods |
US11487471B2 (en) * | 2020-08-20 | 2022-11-01 | Intel Corporation | Storage device with client reconfigurable protocol |
US20210117246A1 (en) | 2020-09-25 | 2021-04-22 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
CN112579254B (zh) | 2020-12-08 | 2022-03-29 | 成都海光微电子技术有限公司 | 图形处理器的仿真方法、装置、电子设备和存储介质 |
US11442733B2 (en) * | 2021-01-29 | 2022-09-13 | Seagate Technology Llc | Embedded computation instruction performance profiling |
US11645005B2 (en) * | 2021-02-26 | 2023-05-09 | PetaIO Inc. | Near-memory computing systems and methods |
CN112905472A (zh) | 2021-03-04 | 2021-06-04 | 黑芝麻智能科技(上海)有限公司 | 内核调试系统及方法 |
JP2022143959A (ja) * | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、方法及びデータ処理システム |
US12014052B2 (en) * | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
US11467987B1 (en) * | 2021-03-31 | 2022-10-11 | Seagate Technology Llc | Computational pipelines for computational storage devices |
US11561909B2 (en) * | 2021-04-28 | 2023-01-24 | Western Digital Technologies, Inc. | Bandwidth allocation for storage system commands in peer-to-peer environment |
US11687338B2 (en) * | 2021-04-30 | 2023-06-27 | Seagate Technology Llc | Computational storage with pre-programmed slots using dedicated processor core |
CN113342590B (zh) | 2021-08-06 | 2021-10-29 | 苏州浪潮智能科技有限公司 | NVMe设备调试功能实现方法、装置、设备及存储介质 |
US20220365709A1 (en) * | 2022-07-25 | 2022-11-17 | Intel Corporation | Computational storage for logical volumes that span physical devices |
-
2021
- 2021-09-22 US US17/482,412 patent/US11966343B2/en active Active
-
2022
- 2022-07-13 KR KR1020220086563A patent/KR20230013627A/ko unknown
- 2022-07-18 TW TW111126841A patent/TW202314488A/zh unknown
- 2022-07-18 EP EP22185404.5A patent/EP4123465A1/en active Pending
- 2022-07-19 CN CN202210849202.8A patent/CN115639952A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230013627A (ko) | 2023-01-26 |
US11966343B2 (en) | 2024-04-23 |
EP4123465A1 (en) | 2023-01-25 |
CN115639952A (zh) | 2023-01-24 |
US20230024949A1 (en) | 2023-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
TW202314488A (zh) | 儲存裝置、操作儲存裝置的方法以及電腦實施系統 | |
CN113424144A (zh) | 计算数据存储系统 | |
JP2017021804A (ja) | 不揮発性メモリ装置におけるデータ特性基盤データ配置を活用するためのインターフェイス提供方法及びシステム並びに不揮発性メモリ装置とそのデータ特性基盤データ配置方法 | |
TWI492061B (zh) | 經由主機傳輸速率偵測之操作模式或特徵之選擇性啟用 | |
US20110072209A1 (en) | Processing Diagnostic Requests for Direct Block Access Storage Devices | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
WO2013061375A1 (en) | Storage system and its management method | |
CN113806253A (zh) | 受到损害的存储设备固件的检测 | |
TW202213068A (zh) | 用於計算儲存功能的裝置、系統以及方法 | |
KR20200030245A (ko) | 메모리 시스템에서의 유효 데이터 관리 방법 및 장치 | |
US11947419B2 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
CN113468083B (zh) | 一种双端口NVMe控制器及控制方法 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
US20230153006A1 (en) | Data processing method and data processing device | |
WO2018041258A1 (zh) | 去分配命令处理的方法与存储设备 | |
CN114281245A (zh) | 同步写方法及装置、存储系统、电子设备 | |
US20230153237A1 (en) | Method and device for storing data | |
US20230325110A1 (en) | Operation method of host device and operation method of storage device | |
US20230393749A1 (en) | Method and device of storage data | |
US20230236737A1 (en) | Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same | |
US20230084539A1 (en) | Computational storage device and storage system including the computational storage device | |
US20230062610A1 (en) | Dual mode storage device | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
CN115480700A (zh) | 数据存储方法、存储设备以及主机 |