TW202211039A - 用於計算裝置中分批請求之系統以及方法、以及計算儲存單元 - Google Patents
用於計算裝置中分批請求之系統以及方法、以及計算儲存單元 Download PDFInfo
- Publication number
- TW202211039A TW202211039A TW110130288A TW110130288A TW202211039A TW 202211039 A TW202211039 A TW 202211039A TW 110130288 A TW110130288 A TW 110130288A TW 110130288 A TW110130288 A TW 110130288A TW 202211039 A TW202211039 A TW 202211039A
- Authority
- TW
- Taiwan
- Prior art keywords
- request
- requests
- batch
- storage unit
- batched
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了一種系統。所述系統可包括處理器。軟體可在所述處理器上運行以構建分批請求,所述分批請求可包括至少第一請求及第二請求。所述系統還可包括儲存裝置及與所述儲存裝置相關聯的計算儲存單元,所述計算儲存單元可被配置成執行所述分批請求。
Description
本揭露大體而言是有關於儲存裝置,且更具體而言,是有關於使用計算儲存功能的分批請求。
[相關申請案資料]
本申請案主張於2020年9月2日提出申請的序列號為63/073,922的美國臨時專利申請案、於2021年1月26日提出申請的序列號為63/141,970的美國臨時專利申請案、於2021年1月27日提出申請的序列號為63/142,485的美國臨時專利申請案及於2021年2月1日提出申請的序列號為63/144,469的美國臨時專利申請案的權益,所述美國臨時專利申請案全部併入本案供參考用於所有目的。
本申請案與於2021年4月19日提出申請的序列號為17/234,780的美國專利申請案有關,所述美國專利申請案主張於2020年9月2日提出申請的序列號為63/073,922的美國臨時專利申請案及於2021年2月1日提出申請的序列號為63/144,469的美國臨時專利申請案的權益,所述美國臨時專利申請案全部併入本案供參考用於所有目的。
當主機處理器向儲存裝置發送請求時—無論是讀取資料,寫入資料,還是讓某個近儲存處理器(near-storage processor)處理資料—所述請求通常包括三個步驟。首先,將命令(可能還有一些資料)發送至儲存裝置。其次,儲存裝置執行所述請求。第三,儲存裝置將結果(可能還有一些資料)發送回主機處理器。
當使用近儲存處理(near-storage processing)時,仍然需要改善儲存裝置附近的資料處理。
本揭露的實施例包括構建可由應用使用的分批請求的機制。分批請求可包括二或更多個請求。應用可將分批請求發送至計算儲存單元,計算儲存單元可執行分批請求中的多個請求,並將結果返回給應用。如此一來,應用可發送包括二或更多個個別請求的一個分批請求,並且計算儲存單元可對所述一個分批請求作出響應,而不是由應用發送計算儲存單元可向其發送個別響應的多個個別請求。
現在將詳細參照本揭露的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,闡述諸多具體細節以使得能夠透徹地理解本揭露。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本揭露。在其他情形中,未對眾所習知的方法、程序、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用「第一」、「第二」等用語來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本揭露的範圍的條件下,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組。
本文中在對本揭露的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本揭露。除非上下文中另外清楚地指示,否則在對本揭露的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文中所使用的用語「及/或(and/or)」指代且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式中的組件及特徵未必按比例繪製。
當主機處理器要求儲存裝置實行單個請求時,組構上的負載可為可接受的。但是,若主機處理器可能希望以某種序列實行幾個請求,則此負載可能會成為瓶頸。舉例而言,考量主機處理器需要自儲存裝置讀取一些資料、對所述資料執行一些處理、且然後將經處理的資料寫回儲存裝置的情況。由於此序列涉及三個單獨的請求,因此主機處理器與儲存裝置之間的組構可攜帶資訊或資料六次:一次發送每個請求及任何支持資料,且一次返回每個結果。
不僅組構可能成為瓶頸,而且組構可能被用來來回傳輸大量資料。繼續以上實例,若讀取請求涉及自儲存裝置讀取例如5十億位元組(GB)的資料,則在讀取請求之後,組構將自儲存裝置向主機處理器載送5 GB的資料,僅將所述同一5 GB的資料載送回儲存裝置以執行近儲存處理。類似地,在近儲存處理之後,組構將把經處理的資料自儲存裝置載送至主機處理器,僅把所述同一經處理的資料載送回儲存裝置以寫入資料。因此,組構最終可能會以載送不需要在所述組構上發送的資料而告終。
本揭露的實施例藉由使應用能夠構建分批請求來解決組構負擔的問題。此分批請求可包括任意數量的處理請求,包括自儲存裝置讀取資料或向儲存裝置寫入資料、在主機記憶體與儲存裝置之間傳送資料、以及本地處理請求。一旦分批請求被組裝,儲存裝置便可解析所述分批請求。儲存裝置可構建表示分批請求中每個個別請求的依賴性的有向圖,且然後可基於其依賴性以適當的順序執行個別請求。因此,分批請求可表示一組串行、並行或以某種組合方式執行的請求(稱為混合分批請求)。
匹配請求中的個別請求可為相關的。舉例而言,個別請求可能在使用類似的計算裝置、類似的網路、類似的儲存資源需求或類似的帶寬需求方面相關。此外,個別請求可能在資源管理方面相關。舉例而言,兩個請求在使用不同的(非競爭的)計算裝置資源以提高執行效率方面可能為相關的。
在本揭露的一些實施例中,藉由使用應用程式化介面(Application Programing Interface,API),應用可忽略詳述儲存裝置可如何執行分批請求中的個別請求的代碼及指令。應用亦可不知儲存裝置的處理能力。若儲存裝置缺少適當的硬體及/或軟體來執行特定請求,則儲存裝置可向其他近儲存處理元件或主機處理器發出請求來執行此類請求。
圖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讀取資料或向其寫入資料。可使用裝置驅動器(device driver)130來存取儲存裝置120。
儲存裝置120可與計算儲存單元135相關聯。如以下參照圖3A至圖3D所論述,計算儲存單元135可為儲存裝置120的一部分,或者其可與儲存裝置120分離。片語「與…相關聯」旨在涵蓋包括計算儲存單元的儲存裝置及與並非儲存裝置自身的一部分的計算儲存單元配對的儲存裝置兩者。換言之,當儲存裝置與計算儲存單元為實體分離的裝置但以使其能夠彼此通訊的方式連接時,所述儲存裝置與所述計算儲存單元可被稱為「配對的」。
此外,儲存裝置與配對的計算儲存單元之間的連接可能使所述兩個裝置能夠通訊,但可能不能使一個(或兩個)裝置與不同的夥伴一起工作:亦即,儲存裝置可能不能與另一計算儲存單元通訊,且/或計算儲存單元可能不能與另一儲存裝置通訊。舉例而言,儲存裝置及配對的計算儲存單元可串行(以任意順序)連接至組構,從而使得計算儲存單元能夠以另一計算儲存單元可能無法達成的方式自儲存裝置存取資訊。
處理器105及儲存裝置120被示出為連接至組構140。組構140旨在表示資訊可沿其傳遞的任何組構。組構140可包括可能位於機器105內部的組構,並且所述組構可使用例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)、串行高級技術附件(Serial AT Attachment,SATA)、小型電腦系統介面(Small Computer Systems Interface,SCSI)及其他介面等介面。組構140還可包括可能位於機器105外部的組構,並且所述組構可使用例如乙太網路、無限帶寬或光纖通道及其他介面等介面。此外,組構140可支持一或多個協定,例如快速(Express)非揮發性記憶體(Non-Volatile Memory,NVM)(NVM Express,NVMe)、組構上NVMe(NVMe over Fabrics,NVMe-oF)或簡單服務發現協定(Simple Service Discovery Protocol,SSDP)及其他協定。因此,組構140可被認為涵蓋內部及外部網路連接兩者,藉由所述連接,命令可被直接或間接發送至儲存裝置120(且更具體而言,與儲存裝置120相關聯的計算儲存單元)。
儘管圖1使用通用術語「儲存裝置」,但本揭露的實施例可包括可受益於資料品質度量的使用的任何儲存裝置格式,其實例可包括硬碟驅動器及固態驅動器(Solid State Drive,SSD)。以下對「SSD」的任何提及皆應被理解為包括本揭露的此類其他實施例。此外,儘管以上(及以下)論述側重於儲存裝置120與計算儲存單元相關聯,但本揭露的實施例可擴展至除了可包括計算儲存單元或者與計算儲存單元相關聯的儲存裝置之外的裝置。以上(及以下)對「儲存裝置」的任何提及可被理解為亦涵蓋可能與計算儲存單元相關聯的其他裝置。
圖2示出根據本揭露實施例的圖1所示機器105的細節。在圖2中,通常,機器105包括一或多個處理器110,處理器110可包括記憶體控制器120及可用於協調機器的組件的操作的時脈205。處理器110亦可耦合至記憶體115,作為實例,記憶體115可包括隨機存取記憶體(random access memory,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)到達:佇列對325可用於管理儲存裝置305及控制儲存裝置305的I/O此兩種操作。
計算裝置310-1可與儲存裝置305配對。計算裝置310-1可包括可提供一或多種服務335-1及335-2的任意數量(一或多個)的處理器330。為更清楚,每一處理器330可提供任意數量(一或多種)的服務335-1及335-2(儘管本揭露的實施例可包括確切包括兩種服務335-1及335-2的計算裝置310-1)。計算裝置310-1可跨佇列對340到達,佇列對340可用於管理計算裝置310-1及/或控制計算裝置310-1的I/O此兩種操作。
處理器330可被認為是近儲存處理:亦即,較圖1的處理器110更靠近儲存裝置305的處理。由於處理器330更靠近儲存裝置305,因此處理器330能夠較圖1的處理器110執行此類命令更快地對儲存於儲存裝置305中的資料執行命令。儘管在圖3A中未示出,但處理器330可具有相關聯的記憶體,所述記憶體可用於對儲存於儲存裝置305中的資料本地執行命令。此相關聯的記憶體可包括類似於圖1的記憶體115的本地記憶體、片上記憶體(其可能相較於例如記憶體115等記憶體更快,但生產起來可能更昂貴)或包括所述兩者。
儘管圖3A示出儲存裝置305及計算裝置310-1可跨組構140分別到達,但本揭露的實施例亦可包括儲存裝置305與計算裝置310-1串行連接(如圖1所示)。亦即,指向儲存裝置305及計算裝置310-1的命令皆可在至組構140的相同物理連接上接收,並且可穿過一個裝置到達另一裝置。舉例而言,若計算裝置310-1位於儲存裝置305與組構140之間,則計算裝置310-1可接收指向計算裝置310-1及儲存裝置305兩者的命令:計算裝置310-1可處理指向計算裝置310-1的命令,並且可將指向儲存裝置305的命令傳遞至儲存裝置305。類似地,若儲存裝置305位於計算裝置310-1與組構140之間,則儲存裝置305可接收指向儲存裝置305及計算裝置310-1兩者的命令:儲存裝置305可處理指向儲存裝置305的命令,並且可將指向計算裝置310-1的命令傳遞至計算裝置310-1。
服務335-1及335-2可提供許多不同的功能,所述功能可對儲存於儲存裝置305中的資料執行。舉例而言,服務335-1及335-2可提供預定義的功能,例如資料的加密、解密、壓縮及/或解壓縮、抹除編碼及/或應用正規表式。或者,服務335-1及335-2可提供更普通的功能,例如資料搜索及/或SQL功能。服務335-1及335-2亦可支持運行應用特定代碼(application-specific code)。亦即,使用服務335-1及335-2的應用可提供將使用儲存裝置305上的資料執行的定製代碼。服務335-1及335-2亦可為此類功能的任意組合。表##1列出可由處理器330提供的服務的一些實例。
表1:服務類型
壓縮 |
加密 |
資料庫過濾器 |
抹除編碼 |
RAID |
散列/CRC |
正則表式(圖案匹配) |
分散集中 |
管道 |
視訊壓縮 |
重複資料刪除 |
作業系統影像加載器 |
容器影像加載器 |
柏克萊封包過濾器(Berkeley packet filter,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)以及其他可能的事物。處理器330亦可使用現場可程式化閘陣列(Field Programmable Gate Array,FPGA)或特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)及其他可能的事物來實施。若計算裝置310-1包括多於一個處理器330,則每一處理器可如上所述實施。舉例而言,計算裝置310-1可具有CPU、TPU及FPGA各一個,或者計算裝置310-1可具有二個FPGA,或者計算裝置310-1可具有二個CPU及一個ASIC等。
依據期望的解釋,計算裝置310-1或處理器330可被認為是計算儲存單元。
儘管圖3A將儲存裝置305及計算裝置310-1示出為分離的裝置,但在圖3B中,儲存裝置305與計算裝置310-1可被組合。因此,計算裝置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(同樣,所述佇列對325及340可用於管理及/或I/O)。藉由包括佇列對325,控制器315可提供對儲存器320-1的透明存取(而不是要求所有通訊都藉由處理器330進行)。
此外,處理器可具有代理儲存器存取345,用於存取儲存器320-1。因此,處理器330可能能夠直接存取來自儲存器320-1的資料而非藉由控制器315路由存取請求。
在圖3C中,控制器315及代理儲存器存取345兩者皆用虛線示出,以表示其為可選的元件,並且可依據實施方式進行省略。
最後,圖3D示出另一實施方式。在圖3D中,示出計算裝置310-4,所述計算裝置310-4可包括陣列。類似於圖3C的計算裝置310-3,所述陣列可包括一或多個儲存器320-1至320-4。儘管圖3D示出四個儲存元件,但本揭露的實施例可包括任意數量(一或多個)的儲存元件。此外,個別儲存元件可為其他儲存裝置,例如圖3A至圖3D中所示的儲存裝置。
由於計算裝置310-4可包括多於一個儲存元件320-1至320-4,因此計算裝置310-4可包括陣列控制器350。陣列控制器350可管理資料如何儲存於儲存元件320-1至320-4上以及如何自儲存元件320-1至320-4檢索資料。舉例而言,若儲存元件320-1至320-4被實施為獨立磁碟冗餘陣列(Redundant Array of Independent Disk,RAID)的某個層級,則陣列控制器350可為RAID控制器。若使用某種形式的抹除編碼來實施儲存元件320-1至320-4,則陣列控制器350可為抹除編碼控制器。
根據本揭露的實施例,圖4A至圖4B比較圖1的計算儲存單元135處理個別請求與處理分批請求。在圖4A中,應用405可發送個別請求,例如讀取資料請求410、處理資料請求415及寫入資料請求420。舉例而言,讀取資料請求410可為自資料庫讀取資料的請求,處理資料請求415可為根據某些標準過濾資料的請求(作為附加至處理資料請求415的資料425提供至計算儲存單元135),並且寫入資料請求420可為將經過濾的資料430寫回至圖1的儲存裝置120的請求。(應注意,計算儲存單元135可能能夠作為提供的服務來執行此序列,在此種情形中,計算儲存單元135可能能夠自圖1的儲存裝置120讀取資料並將經過濾的資料寫回至圖1的儲存裝置120,而應用405不必發送特定請求來執行該些步驟。此實例旨在作為簡化的實例以便於理解,而不代表真實世界的情況。此外,在讀取資料請求410與寫入資料請求420之間引入額外的處理請求可能意味著計算儲存單元135可能需要被發送個別處理請求。)
由於請求410、415及420中的每一者被視為單獨的請求,因此計算儲存單元135可依次對每一請求作出響應,從而自其返回結果。因此,在計算儲存單元135執行讀取資料請求410(示出為處理435)之後,計算儲存單元135可返回讀取資料結果440,所述讀取資料結果440可包括自圖1的儲存裝置120讀取的資料425。類似地,在計算儲存單元135執行處理資料請求415(示出為處理445)之後,計算儲存單元135可返回處理資料結果450,所述處理資料結果450可包括經過濾的資料430。並且在計算儲存單元135執行寫入資料請求420(示出為處理455)之後,計算儲存單元135可返回寫入資料結果460。
應注意,由於每一請求與自計算儲存單元135返回的結果鏡像,因此在應用405與計算儲存單元135之間發送多個訊息:每一請求涉及二個訊息(一個發送請求,一個返回結果)。此外,一些訊息可包括在應用405與計算儲存單元135之間發送的資料。若要發送的資料為大,則發送所述資料可能會限制可在應用405(或更概括而言,可能也正在運行其他應用或處理的圖1的處理器110)與計算儲存單元135之間發送的其他資料(或訊息)。
還應注意,各種訊息可包括資料的冗餘傳輸。舉例而言,資料讀取結果440可包括資料425,所述資料425包括應用405請求讀取的資料。但應用405然後可在處理資料請求415中立即發回資料425,此意味著資料被發送兩次:一次自計算儲存單元135發送至應用405,且一次自應用405發送回計算儲存單元135。由於資料425在儲存裝置120上已為可用的,因此以此種方式來回發送資料使用帶寬益處不大。經過濾的資料430在計算儲存單元135與應用405之間的來回傳輸同樣用處不大。
應用305可發送指定所有三個個別請求的單個分批請求,而非發送個別的請求410、415及420。計算儲存單元135然後可像處理單個請求一樣處理所有三個請求,並返回整個分批請求的單個結果。此種情況如圖4B所示。
在圖4B中,應用405可發送分批請求465,分批請求465可指示計算儲存單元135如何執行圖4A的一序列請求410、415及420。計算儲存單元135然後可執行每一個別請求(示出為處理435、445及455),且然後返回分批請求的分批結果470。因此,計算儲存單元135可藉由省略圖4A的訊息440及450來節省處理器110與計算儲存單元135之間的帶寬。此外,由於計算儲存單元135可避免將圖4A的資料425發送回應用405,因此處理器110與計算儲存單元135之間的帶寬進一步減小了圖4A的資料425及圖4A的經過濾的資料430的大小的兩倍(由於每一資料被發送兩次:一次自計算儲存單元135發送至應用405,且一次自應用405發送至計算儲存單元135)。
以上的實例除了為便於理解而被簡化之外,還假定了一串行序列的請求。亦即,首先執行圖4A的讀取資料請求410,然後執行圖4A的處理資料請求415,然後執行圖4A的寫入資料請求420。但分批請求亦可支持不同於串行請求的結構,如以下在圖5A至圖5C中所述。
圖5A至圖5C示出根據本揭露的實施例,圖4B的分批請求465的三種不同結構。在圖5A中,示出了串行分批請求465-1。類似於以上圖4B的實例,串行分批請求465-1可包括三個請求:輸入請求505-1、計算請求510-1及輸出請求515-1。輸入請求505-1可類比於圖4A的讀取資料請求410。除了自圖1的儲存裝置120讀取資料之外,資料可自圖1的記憶體115傳送至圖1的計算儲存單元135;亦可使用其他輸入請求。計算請求510-1可類比於圖4A的處理資料請求415,並且可為以某種方式操縱資料的任何請求。輸出請求515-1可類比於圖4A的寫入資料請求420。除了將資料寫入圖1的儲存裝置120之外,資料可自圖1的計算儲存單元135傳送至圖1的記憶體115;亦可使用其他輸出請求。儘管圖5A示出串行分批請求465-1中的三個請求,但串行分批請求465-1可包括任意數量的請求(儘管分批請求465-1通常可包括至少二個請求),所述請求可以任意期望的順序包括任意數量(零個或更多)的輸入請求505-1、計算請求510-1及/或輸出請求515-1。
在圖5B中,示出了並行分批請求465-2。並行分批請求465-2被示出為包括可並行執行的五個計算請求510-2至510-6。對於要並行執行的請求而言,所述請求可能不相互依賴:亦即,對於計算請求510-2至510-6中的任何一對—例如,計算請求510-2及510-3—計算請求510-2可能不依賴於計算請求510-3,且計算請求510-3可能不依賴於計算請求510-2。作為類比,考量來自並行計算的單指令、多資料(Single Instruction, Multiple Data,SIMD)及多指令、單資料(Multiple Instruction, Single Data,MISD)的概念:相同的資料可使用若干不同的計算請求來處理,或者相同的計算請求可應用於若干不同的資料。只要在一個請求與另一請求之間無依賴性,所述請求便可並行執行。(當然,並行分批請求465-2亦可包括各自應用於不同資料的不同計算請求。)
儘管圖5B示出並行分批請求465-2中的五個計算請求510-2至520-6,但並行分批請求465-2可包括任意數量(零個或更多,儘管通常並行分批請求465-2可包括至少二個)的計算請求。此外,儘管並行分批請求465-2僅包括計算請求,但並行分批請求465-2可包括輸入請求、輸出請求或者輸入、計算及輸出請求的任何期望的組合。
最後,圖5C示出了混合分批請求465-3。混合分批請求465-3可包括一些並行的請求及一些串行的請求。舉例而言,輸入請求505-7及505-8可並行執行,計算請求510-7及510-8以及計算請求515-9及515-10亦可並行執行。但計算請求515-8及515-10兩者的結果皆可為計算請求515-11提供資料,輸出請求515-7可串行跟隨在計算請求515-11之後。本質上,當分批請求既不是嚴格串行亦不是嚴格並行時,可使用混合分批結構。
混合分批請求465-3示出總共八個請求(二個輸入請求、五個計算請求及一個輸出請求)。如同串行分批請求465-1及並行分批請求465-2一樣,混合分批請求465-3可以任何期望的組合包括任何數量(零個或更多,儘管通常混合分批請求465-3可包括至少二個)的請求。
儘管以上論述表明在分批請求中的各種請求之間可能存在某種關係,但分批請求中各請求之間關係的具體性質可能相當廣泛。以下是各請求之間可能存在的一些示例性關係(本揭露的實施例亦可包括其他關係)。
在本揭露的一些實施例中,二個(或更多個)請求可自不同的晶粒/NVM組/名稱空間並行加載儲存資料。藉由讓請求自儲存器的不同部分加載資料,有可能並行執行此類請求,從而潛在地減少總執行時間。
在本揭露的一些實施例中,二個(或更多個)請求可將較大的作業分成可在類似計算裝置上運行的較小的作業。藉由使用不同的計算裝置執行請求,有可能並行執行此類請求,從而潛在地減少總執行時間。
在本揭露的一些實施例中,二個(或更多個)請求可取決於某些裝置記憶體對於某些計算服務更接近/更快:例如,FPGA本地專用記憶體對(vs)FPGA共享DRAM。藉由為進行計算服務的儲存器使用更接近或更快的記憶體,可減少總執行時間。
在本揭露的一些實施例中,對於某些裝置直接記憶體存取(direct memory access DMA)引擎而言,二個(或更多個)請求可能較單個副本更有效/提供更佳的效能。舉例而言,使用可能穿插有其他請求的多個請求(所述多個請求中的每一者可能較小)而非讓計算裝置執行連續運行至完成的單個請求可能更有效。
在本揭露的一些實施例中,二個(或更多個)請求可以避免與另一分批請求交疊的方式管理分批請求中的計算及儲存請求以使用裝置記憶體。舉例而言,若計算裝置包括二個記憶體庫作為裝置記憶體,則第一分批分配可使用一個記憶體庫,而第二分批分配可使用另一記憶體,藉此避免記憶體爭用。藉由讓請求使用不同的儲存區域,有可能並行執行此類請求,從而潛在地減少總執行時間。
在本揭露的一些實施例中,二個(或更多個)請求可被分批以利用組件的使用,所述組件在分批請求中可能較作為獨立的請求發揮更佳效能。舉例而言,某個服務可在硬體ASIC中實施,所述硬體ASIC在向主機回報時可能具有較差的延遲,而在向計算裝置中的另一組件報告時可能具有較佳的延遲。藉由使用最適合整體執行的組件來處理請求,有可能減少總執行時間。
圖6示出根據本揭露實施例的示例性分批請求,其具有用於在處理圖4B的分批請求期間儲存資料的緩衝器。在圖6中,示出了分批請求465-4。如圖可見,分批請求465-4包括將依序執行的多個請求,此意指分批請求465-4可為串行分批請求。分批請求465-4可為處理資料庫中的資料的分批請求的實例。
分批請求465-4以自圖1的儲存裝置120上的資料庫讀取資料的讀取請求605開始:讀取請求605可為輸入請求的形式。解密請求610連同以下各種請求可為計算請求的形式,可被執行來解密來自資料庫的加密資料。在解密之後,可執行解壓縮請求615來解壓縮(解密的)資料。在解壓縮之後,可執行資料庫過濾請求620來過濾資料。在過濾之後,可執行聚集請求625來以期望的方式組合經過濾的資料。最後,可為輸出請求形式的寫入請求630可將經處理的資料寫回至圖1的儲存裝置120以供稍後使用。
每一請求605至630可指定可用於輸入及/或輸出目的的各種緩衝器(其亦可被稱為請求的來源及目的地)。舉例而言,緩衝器635可用作其中可儲存由讀取請求605讀取的資料的輸出緩衝器。緩衝器635可充當用以解密請求610的輸入緩衝器,且緩衝器640可充當用於解密請求的輸出緩衝器。緩衝器640及645可分別充當用於解壓縮請求615的輸入及輸出緩衝器。
應注意,資料庫過濾請求620可指定緩衝器645作為輸入緩衝器,並且可指定二個輸出緩衝器650及655。類似地,應注意,聚集請求625可指定緩衝器650及655兩者作為輸入緩衝器,緩衝器660作為輸出緩衝器。因此,特定請求可能指定多於一個輸入緩衝器及/或多於一個輸出緩衝器。舉例而言,資料庫過濾請求620可沿著二個不同的軸過濾來自資料庫的資料,聚集請求625以某種期望的方式組合該些過濾器的結果。最後,寫入請求630可指定緩衝器660作為輸入緩衝器,而無輸出緩衝器。
各種緩衝器635至660可被指定為一些記憶體(例如,圖1的計算儲存單元135的DRAM或片上記憶體)中可臨時儲存資料的位置。舉例而言,緩衝器635至660可在一些此類記憶體中包括各種位址範圍。各種請求可將資料寫入此類緩衝器及/或自此類緩衝器中讀取資料:此類緩衝器的使用可用於判斷特定請求是否依賴於來自另一請求的資料。舉例而言,由於讀取請求605可將資料寫入緩衝器635,並且解密請求610可讀取緩衝器635,因此解密請求610可被確定為取決於讀取請求605已經首先完成。以下參照圖12進一步論述如何確定此種依賴性資訊。
圖7示出根據本揭露的實施例,資料被重用的圖4B的另一示例性分批請求。在圖7中,示出了分批請求465-5。分批請求465-5可表示執行例如矩陣乘法序列(A×B)×B的分批請求。讀取請求705及710可自各種來源讀取矩陣A及B:例如,矩陣A可自圖1的儲存裝置120讀取,而矩陣B可自圖1的記憶體115傳送。乘法請求715然後可執行(A×B)的第一矩陣乘法。乘法請求720然後可執行(A×B)×B的第二矩陣乘法。最後,寫入請求725可根據需要將矩陣乘法的結果寫回至圖1的儲存裝置120或圖1的記憶體115。
應注意,在圖7中,讀取請求710的結果被使用了兩次:首先被乘法請求715使用,且然後再次被乘法請求715使用。此示出特定的緩衝器(圖7中未示出)可用作多個後續請求的輸入:在執行下一請求後,緩衝器未必空閒以供重用:存取緩衝器的最後一個請求應在緩衝器可安全抹除之前完成。
圖8示出根據本揭露的實施例,用於構建分批請求的軟體的細節。在圖8中,示出了裝置驅動器130。裝置驅動器被示出為包括構建軟體805及執行軟體810,其中構建軟體805包括分批創建軟體815及請求添加軟體820。構建軟體805可負責構建圖4B的分批請求465(以及圖5A至圖7所示的其所有變體)。圖4B的應用405可使用分批創建軟體815來請求創建新的分批請求。請求添加軟體820可用於向現有的分批請求添加請求。在使用請求添加軟體820時,圖4B的應用405可辨識應被添加新請求的分批請求、關於要被添加的請求的資訊、關於新請求應被***至分批請求的結構中的何處(例如,新請求應被***至分批請求中的現有請求之前及/或之後)的資訊、以及關於要用於新請求的資料輸入及輸出的緩衝器的資訊。
另一方面,執行軟體810可用於向圖1的計算儲存單元135發送分批請求。圖4B的應用405可指定應被發送分批請求的計算儲存單元(至少可使用在圖1的系統105內唯一的某個辨識符來辨識)、以及要處理的分批請求的辨識符。執行軟體810亦可被稱為排佇軟體(queueing software),乃因所述軟體對分批請求進行排佇以由圖1的計算儲存單元135執行。
分批軟體805及執行軟體820被示出為裝置驅動器130的一部分,此基於以下理論:裝置驅動器130作為圖1的儲存裝置120及/或圖1的計算儲存單元135的介面可為將圖4B的分批請求465發送至圖1的計算儲存單元135的介面。但分批軟體805及執行軟體820可駐留在圖1的系統105內的任何地方。藉由使分批軟體805及執行軟體820成為應用程式化介面(API)的一部分,圖4B的分批請求465的創建及使用可自圖4B的應用405(及圖1的機器105的硬體)及自圖1的計算儲存單元135兩者中抽象出來。亦即,在分批軟體805及執行軟體820為API的一部分的情況下,圖4B的分批請求465可在完全不知曉由圖1的計算儲存單元135提供的特定硬體及/或功能的情況下構建。如此一來,圖4B的分批請求465可與圖1的系統105內可用的任何計算儲存單元一起使用。(此種概化確實導致潛在的問題—若圖1的計算儲存單元135缺少必要的硬體來全部或部分執行圖1的分批請求465將會怎樣—此將在以下參照圖11來解決。)
儘管在圖8中未示出,但其他軟體亦可被包括作為分批軟體805的一部分。舉例而言,為鏡像分批創建軟體815,可存在軟體來釋放不再需要的現有分批請求。亦可能存在作為分批軟體805的一部分可用的其他命令,例如調整分批請求大小的命令(為進一步的請求增加空間,釋放請求不再需要的空間,以及重新配置分批請求)。表2示出各種命令以及可使用的描述及參數列表,但表2不應被視為此類命令的詳盡列表(命令名稱及參數列表可根據本揭露的實施例而變化)。表 2
命令名稱 | 功能 | 參數 |
csAllocBatchRequest | 創建新的分批請求 | Mode:分批請求的結構(串行、並行或混合) MaxReqs:此分批請求預期的最大請求數 BatchHandle:指向儲存分批請求的資料結構的指示器 |
csFreeBatchRequest | 釋放現有分批請求使用的空間 | BatchHandle:指向儲存分批請求的資料結構的指示器 |
csAddBatchEntry | 向現有分批請求添加請求 | BatchHandle:指向儲存分批請求的資料結構的指示器 Req:要添加至分批請求中的新請求 Before:位於添加的分批請求之前的請求的辨識符 After:位於添加的分批請求之後的請求的辨識符 |
csHelperConfigBatchEntry | 更改現有分批請求的參數 | BatchHandle:指向儲存分批請求的資料結構的指示器 Entry:要配置的請求的辨識符 Req:指向帶有配置資訊的資料結構的指示器 |
csHelperResizeBatchRequest | 增加或減少現有分批請求中的請求數量 | BatchHandle:指向儲存分批請求的資料結構的指示器 MaxReqs:此分批請求的新最大請求數 |
csQueueBatchRequest | 將分批請求排佇以供計算儲存單元執行 | BatchHandle:指向儲存分批請求的資料結構的指示器 ReqContext:分批請求的上下文 CallbackFn:指向分批請求完成時要調用的函數的指示器 EventHandle:分批請求完成時要觸發的事件的辨識符 |
圖9示出根據本揭露的實施例,可用於儲存圖4B的分批請求465的各種示例性資料結構。在圖9中,示出資料結構905、910及915。資料結構905、910及915是可儲存圖4B的分批請求465的各種不同方式。圖9並不旨在為可用於儲存圖4B的分批請求465的資料結構的詳盡列表:亦可使用其他資料結構。
在資料結構905中,圖4B的分批請求465可包括圖4B的分批請求465的結構類型—串行、並行或混合—(使用列舉將值分配給描述性常數名稱)、圖4B的分批請求465的長度(即,圖4B的分批請求465中的個別請求的數量)以及三種不同資料結構中的一者(用於將資料複製至記憶體或自記憶體複製資料、用於處理資料或用於自儲存裝置120讀取或寫入資料)。此類資料結構本身可包括多個個別請求(例如,儲存於陣列中或作為鏈表連接),並且可包括配置資訊,例如應自其(自儲存器)讀取資料、寫入資料(至記憶體)或複製資料(至記憶體或自記憶體複製)的位址。
資料結構910類似於資料結構905,除了資料結構910明確地包括指向可排佇等待執行的下一分批請求的指示器(而非讓API處理此種管理)及關於圖4B的分批請求465中的請求的依賴性資訊。(在資料結構910中為此資訊使用不同的資料結構而非用列舉來標記模式,但效果是相同的。)
資料結構915類似於資料結構910,但不儲存指向下一排佇的分批請求的指示器或依賴性資訊。當資料結構915用於描述分批請求中的特定請求時,此種資料結構的陣列可用於描述整個分批請求,陣列中的每一條目描述分批請求中的一個特定請求。
圖10示出根據本揭露的實施例,可使用圖4B的分批請求465的示例性代碼片段。在圖10中,示出了代碼1005。代碼1005僅為示例性的,且應理解,代碼1005可能不完整:可能需要其他代碼來完成程式。
在代碼1005中,在第1行中,可創建圖4B的分批請求465。在第2行至第4行中,儲存、計算及複製(自記憶體)的請求被添加至圖4B的分批請求465。自最後一個至第一個添加個別請求:儲存請求將為圖4B的分批請求465中處理的最後一個請求,且複製請求將為圖4B的分批請求465中處理的第一個請求。
在第5行中,開始回環,此在文件仍然有資料要處理時運行。在第6行中,圖4B的分批請求465可排佇等待由圖4B的計算儲存單元465執行。在第7行中,文件的大小可減少被處理的資料的量,且在第8行中,可辨識將儲存下一資料塊的位置。在第9行中,隨著對將儲存資料的位置的更新,圖4B的分批請求465中的儲存請求可被重新配置。此時,回環(在第5行開始)完成,並且可如所描述般迭代,直至文件中的所有資料皆已被處理。最後,在第10行中,由於不再需要圖4B的分批請求465,可釋放圖4B的分批請求465,並且可回收圖4B的分批請求465所使用的儲存。
圖11示出根據本揭露的實施例,被設計成處理分批請求的圖1的計算儲存單元135的細節。在圖11中,計算儲存單元135可包括接收器1105、解析器1110、有向圖構造器1115、驗證器1120、排程器1125、硬體1130及發射器1135。接收器1105可自圖4B的應用405接收圖4B的分批請求465(更準確而言,接收器1105可自API或其他軟體接收圖4B的分批請求465:但由於該些元件可代表圖4B的應用405發揮作用,因此該些元件可被認為是代表圖4B的應用405操作的代理)。解析器1110可解析圖4B的分批請求465的資料結構,以辨識作為圖4B的分批請求465的一部分的個別請求。解析器1110可藉由遍歷構成圖4B的分批請求465的請求來操作,如在圖4B的分批請求465的資料結構中所定義。
有向圖構造器1115可構造圖4B的分批請求465中的各種請求之間的依賴性的有向圖。驗證器1120可驗證由有向圖創建器1115創建的有向圖是非循環的。以下參照圖12進一步論述有向圖構造器1115及驗證器1120的操作。
排程器1125可採用由有向圖構造器1115產生的有向圖,並使用所述資訊來排程圖4B的分批請求465中的各種請求以供執行。若個別請求無依賴性或者其所有依賴性已被滿足,則排程器1125可排程所述請求立即執行;其他請求可能要等待直至其依賴性得到滿足之後才可被執行。
排程器1125還可管理圖4B的二或更多個分批請求465的排程請求,並且可管理其相對執行。舉例而言,若有二個圖4B的分批請求465皆在等待一個特定的硬體來執行(例如,二個不同的向圖1的儲存裝置120寫入資料的儲存請求),則排程器1125可排程一個此請求以供執行,並且讓另一請求等待直至第一個請求已完成。(當然,若可基於圖1的計算儲存單元135或儲存裝置120的能力並行執行多個此類請求,則所述二個請求可並行執行。)
排程器1125還可管理應並行執行的請求。若存在足夠的硬體來支持並行執行多個請求,則排程器1125可使用此硬體來並行執行。若不存在,則排程器1125可在硬體內實施分時安排(time-sharing arrangement),使得多個請求可在同一時間左右皆取得進展,但每一請求可被暫停以執行另一請求(此類似於單核/單線程處理器可如何同時執行多個程式:每一程式在被移出處理器以允許執行另一程式之前使用處理器一小段時間)。
排程器1125還可認識到,計算儲存單元135可能缺少執行個別請求所必需的硬體。舉例而言,圖4B的分批請求465中的個別請求可涉及執行由圖4B的應用405提供的定製代碼。若計算儲存單元135缺少能夠執行此定製代碼的處理器,則排程器1125可請求計算儲存單元135外部的一些其他硬體來處理所述特定請求。此其他硬體可包括例如圖1的系統105的圖1的處理器110或圖1的系統105的另一計算儲存單元135。(若圖4B的分批請求465中的個別請求可能不被滿足,則排程器1125亦可簡單地使圖1的計算儲存單元135將錯誤返回至圖4B的應用405。)
硬體1130可為執行個別請求的任何硬體(且亦可包括適當的軟體)。硬體1130被示出為FPGA,但硬體1130亦可使用CPU或其他處理器、GPU、GPGPU、TPU、DPU、BPF處理器或ASIC來實施,僅舉幾個可能的實例。計算儲存單元135還可包括硬體1130的多個例子,此類實例可為相同或不同類型的硬體,並且可提供相同、類似或不同的功能(例如,實施不同計算請求的不同硬體1130)。舉例而言,硬體1130的一個例子可包括被設計成實施特定服務的FPGA,而硬體1130的另一例子可包括可支持自圖4B的應用405下載的程式的CPU。最後,發射器1135可將圖4B的分批結果470(圖4B的分批請求465的執行結果)傳送回圖4B的應用405。
圖11中未示出物理介面,接收器1105可跨過所述物理介面自圖4B的應用405接收圖4B的分批請求465,或者發射器1135可跨過所述物理介面將圖4B的分批結果470傳輸至圖4B的應用405。圖11所示的各種元件亦可使用在適當處理器上運行的硬體或軟體來實施。
圖12示出根據本揭露的實施例,由圖11的有向圖構造器1115為圖7的分批請求465-5構造的示例性有向圖的細節。在圖12中,示出了有向圖1205。有向圖1205包括節點1210、1215、1220、1225及1230、以及源節點及最終節點(其可標記圖7的分批請求465的起點及終點)。節點1210、1215、1220、1225及1230分別代表請求705、710、715、720及725。連接有向圖1205中的節點的箭頭可表示依賴性:節點1210及1215不依賴於任何較早的請求,節點1220依賴於節點1210及1215兩者,節點1225依賴於節點1220及1215兩者,且節點1230依賴於節點1225。箭頭示出依賴的方向,其中依賴節點接觸箭頭。
應注意,若箭頭沒有指向(即,沒有指向節點之間的邊緣的方向),則節點1215、1220及1225將形成回環(閉環)。(對於源節點及節點1210、1215及1220而言亦為如此;但源節點通常不被認為是圖中的節點。)但由於節點之間的邊緣是有向的(邊緣示出為箭頭而非無方向的線段),節點1215、1220及1225不形成循環。
另一方面,若節點1215與1225之間的箭頭反向(使得箭頭指向節點1215),則節點1215、1220及1225將形成循環:節點1215將依賴於節點1225,節點1225將依賴於節點1220,節點1220將依賴於節點1215。由於循環中的每一節點將依賴於自身,因此圖4B的分批請求465的有向圖表示中的循環的存在將指示存在不能被執行的請求的子集。(此處描述的依賴將為間接的;但若箭頭自節點引出並返回至節點,則節點亦可能依賴於自身,此在有向圖中可能發生)。
若有向圖包含循環,則由有向圖所表示的分批請求可能不被滿足。圖11的驗證器1120可驗證是否存在沿著有向圖1205中的箭頭自節點引出且返回至其自身的任何路徑。若存在此種路徑,則有向圖被稱為循環的;若不存在自一個節點返回自身的路徑,則有向圖被稱為非循環的。若表示分批請求的有向圖是非循環的,則可能執行分批請求(此種執行是否實際上可取決於圖1的計算儲存單元135是否包括圖11的必要硬體1130來執行圖4B的分批請求465中的請求)。
圖13示出根據本揭露的實施例,使用圖8的軟體來構建圖4B的分批請求的示例性程序的流程圖。在圖13中,在方塊1305處,圖8的分批創建軟體815可接收創建圖4B的分批請求465的請求。在方塊1310處,圖8的請求添加軟體820可接收請求以添加至圖4B的分批請求465。在方塊1315處,圖8的請求添加軟體820可接收第二請求以添加至圖4B的分批請求465。最後,在方塊1320處,圖8的構建軟體805可儲存圖4B的分批請求465。
圖14A至圖14B示出根據本揭露的實施例,使用圖8的構建軟體805來構建圖4B的分批請求465的示例性程序的流程圖。圖14A至圖14B類似於圖13,但更普通並且具有一些附加的方塊。在圖14A中,在方塊1305處,圖8的分批創建軟體815可接收創建圖4B的分批請求465的請求。在方塊1310處,圖8的請求添加軟體820可接收請求以添加至圖4B的分批請求465。在方塊1405處,圖8的請求添加軟體820可接收圖6的輸入緩衝器635至660的辨識符,用於向圖4B的分批請求465進行添加的請求,並且在方塊1410處,圖8的請求添加軟體820可接收圖6的輸出緩衝器635至660的辨識符,用於向圖4B的分批請求465進行添加的請求。應注意,依據請求,請求可省略輸入緩衝器635至660、輸出緩衝器635至660或省略所述兩者。
在方塊1315(圖14B)處,圖8的請求添加軟體820可接收第二請求以添加至圖4B的分批請求465。在方塊1415處,圖8的請求添加軟體820可接收圖6的輸入緩衝器635至660的辨識符,用於向圖4B的分批請求465進行添加的第二請求,並且在方塊1420處,圖8的請求添加軟體820可接收圖6的輸出緩衝器635至660的辨識符,用於向圖4B的分批請求465進行添加的第二請求。如由虛線1425所示,若有更多的請求要添加至圖4B的分批請求465,則控制可返回至方塊1315。
在方塊1430處,圖8的構建軟體805可接收關於圖4B的分批請求465中的請求中的一者的配置資訊。若要配置更多的請求,則可重複方塊1430,如由虛線1435所示。若無請求需要配置,則亦可省略方塊1435,如由虛線1440所示。最後,在方塊1320處,圖8的構建軟體805可儲存圖4B的分批請求465。
圖15示出根據本揭露的實施例,圖1的計算儲存單元處理圖4B的分批請求的示例性程序的流程圖。在圖15中,在方塊1505處,圖11的接收器1105可接收圖4B的分批請求465。在方塊1510處,圖11的解析器1110可解析圖4B的分批請求465,以辨識圖4B的分批請求465中的個別請求。在方塊1515處,圖11的硬體1130(或圖1的計算儲存單元135中的一些其他硬體)可執行第一請求,並且圖11的硬體1130(或圖1的計算儲存單元135中的一些其他硬體)可執行第二請求。最後,在方塊1520處,發射器1135可向圖4B的應用405發送圖4B的分批結果470,藉此報告圖4B的分批請求465的結果。
圖16A至圖16B示出根據本揭露的實施例,圖1的計算儲存單元135處理圖4B的分批請求465的示例性程序的流程圖。圖16A至圖16B類似於圖15,但更普通並且具有一些附加的方塊。在圖16A中,在方塊1505處,圖11的接收器1105可接收圖4B的分批請求465。在方塊1510處,圖11的解析器1110可解析圖4B的分批請求465,以辨識圖4B的分批請求465中的個別請求。在方塊1605處,圖11的有向圖構造器1115可構造圖12的有向圖1205,藉此表示圖4B的分批請求465中的請求的依賴性。
在方塊1610處,圖11的驗證器1120可驗證圖12的有向圖1205是否是非循環的。若否,則在方塊1615處,由於圖4B的分批請求465可能未被滿足,圖1的計算儲存單元135可報告錯誤。否則,在方塊1620(圖16B)處,排程器1125可在圖4B的分批請求465中排程個別請求(其中通常至少有二個)。在方塊1625處,圖11的硬體1130可執行第一請求,並且在方塊1630處,硬體1130(或者圖1的計算儲存單元135中的一些其他硬體)可執行第二請求。若在圖4B的分批請求465中有更多的請求,則可重複方塊1630,如由虛線1635所示。最後,在方塊1520處,發射器1135可向圖4B的應用405發送圖4B的分批結果470,藉此報告圖4B的分批請求465的結果。
圖17至圖18示出根據本揭露的實施例,圖11的排程器1125對圖4B的分批請求465中的各種請求進行排程以供執行的示例性程序的流程圖。在圖17中,在方塊1705處,圖11的排程器1125可判斷個別請求的所有依賴性(假定有任何依賴性)是否已經完成(即,產生當前請求所使用的資料的任何請求是否已完成其執行)。若否,則在方塊1710處,圖11的排程器1125可使所述請求等待,直至所有的依賴性皆已完成。否則,在方塊1715處,圖11的排程器1125可排程所述請求以供執行。
在圖18中,在方塊1805處,圖11的排程器1125可判斷圖1的計算儲存單元135是否包括必要的硬體及/或軟體來執行圖4B的分批請求465中的特定請求。若否,則在方塊1810處,圖11的排程器1125可請求其他硬體(例如,圖1的處理器110或圖1的系統105的圖1的另一計算儲存單元135)執行所述請求。(作為另一選擇,圖11的排程器1125可能會由於缺少合適的硬體及/或軟體來執行請求而導致圖4B的分批請求465失敗。)否則,在方塊1815處,圖11的排程器1125可對請求進行排程以在圖1的計算儲存單元135上執行。
在圖14A至圖18中,示出了本揭露的一些實施例。但熟習此項技術者將認識到,藉由改變方塊的順序、藉由省略方塊或者藉由包括附圖中未示出的鏈接,本揭露的其他實施例亦為可能的。無論是否明確描述,流程圖的所有此類變化皆被視為本揭露的實施例。
本揭露的實施例提供了優於先前技術的技術優勢。藉由構建分批請求並將所述分批請求提交給計算儲存單元而非分別發送個別請求,可減少作為與計算儲存單元傳送分批請求的一部分而發送的資料量,從而留下可用於其他目的的更多帶寬。此外,分批請求可被重新配置及/或重用,藉此減少傳送僅略有不同的多組請求所需的能量。藉由使用分批請求,特別是藉由應用程式化介面(API),還可使用分批請求自應用中抽象出計算儲存單元,藉此避免需要使應用判斷計算儲存單元是否具有實施分批請求所需的硬體及/或軟體。
以下論述旨在提供對可在其中實施本揭露的某些態樣的一或多個適合的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境、生物統計回饋(biometric feedback)或其他輸入訊號的交互作用。本文中所使用的用語「機器」旨在廣泛地囊括單個機器、虛擬機器或由以通訊方式耦合的一起運作的機器、虛擬機器或裝置構成的系統。示例性機器包括:運算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit,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)、暫存器、硬碟、可抽換式磁碟、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
由於已參照所示實施例闡述及例示了本揭露的原理,因此應知,在不背離此種原理的條件下,所示實施例可在佈置及細節上作出潤飾,且可以任何所期望方式進行組合。並且,儘管前述論述著重於特定實施例,然而亦可設想其他配置。具體而言,即使在本文中使用例如「根據本揭露的實施例」等表述,然而該些片語意在一般指代實施例可能性,且不旨在將本揭露限制於特定實施例配置。本文中所使用的該些用語可指代可組合至其他實施例中的相同或不同的實施例。
前述例示性實施例不應被視為限制本揭露。儘管已闡述若干實施例,然而熟習此項技術者應易於理解,在不實質上背離本揭露的新穎教示內容及優點的情況下,可對該些實施例作出諸多潤飾。因此,所有此種潤飾皆旨在包含於如在申請專利範圍中所界定的本揭露的範圍內。
本揭露的實施例可擴展至以下聲明,但不限於此:
聲明1. 本揭露的實施例包括一種系統,所述系統包括:
處理器;
軟體,被配置成在所述處理器上運行並產生分批請求,所述分批請求包括至少第一請求及第二請求;
儲存裝置;以及
計算儲存單元,與所述儲存裝置相關聯,所述計算儲存單元被配置成處理所述分批請求。
聲明2. 本揭露的實施例包括根據聲明1的系統,其中所述計算儲存單元被配置成自在所述處理器上運行的應用接收所述分批請求,並且至少部分基於所述第一請求及所述第二請求向所述應用返回所述分批請求的分批結果。
聲明3. 本揭露的實施例包括根據聲明1的系統,其中所述軟體包括裝置驅動器。
聲明4. 本揭露的實施例包括根據聲明1的系統,其中所述軟體包括應用程式化介面(API)。
聲明5. 本揭露的實施例包括根據聲明1的系統,其中所述軟體包括請求添加軟體,以將所述第一請求添加至所述分批請求。
聲明6. 本揭露的實施例包括根據聲明5的系統,其中所述請求添加軟體被配置成在所述分批請求中的第二請求之前將所述第一請求添加至所述分批請求。
聲明7. 本揭露的實施例包括根據聲明5的系統,其中所述請求添加軟體被配置成在所述分批請求中的所述第二請求之後將所述第一請求添加至所述分批請求。
聲明8. 本揭露的實施例包括根據聲明1的系統,其中所述分批請求包括串行結構、並行結構或混合結構中的一者。
聲明9. 本揭露的實施例包括根據聲明1的系統,所述系統更包括第二軟體,所述第二軟體被配置成向所述計算儲存單元發送所述分批請求。
聲明10. 本揭露的實施例包括根據聲明9的系統,其中所述第二軟體包括API。
聲明11. 本揭露的實施例包括根據聲明10的系統,其中所述第二軟體包括裝置驅動器。
聲明12. 本揭露的實施例包括根據聲明1的系統,其中所述第一請求及所述第二請求至少部分基於所述第一請求與所述第二請求相關而被包括在所述分批請求中。
聲明13. 本揭露的實施例包括根據聲明1的系統,其中所述計算儲存單元包括:
接收器,用於自在所述處理器上運行的應用接收所述分批請求;
解析器,用於將所述分批請求解析成至少所述第一請求及所述第二請求;
有向圖構造器,用於自至少所述第一請求及所述第二請求構造有向圖;
排程器,用於至少部分基於所述有向圖來排程所述第一請求及所述第二請求以供執行;以及
硬體,用於執行至少所述第一請求。
聲明14. 本揭露的實施例包括一種計算儲存單元,所述計算儲存單元包括:
接收器,用於自在處理器上運行的應用接收分批請求;
解析器,用於將所述分批請求解析成至少第一請求及第二請求;
有向圖構造器,用於自至少所述第一請求及所述第二請求構造有向圖;
排程器,用於至少部分基於所述有向圖來排程所述第一請求及所述第二請求以供執行;
硬體,至少部分基於所述排程器來執行所述第一請求;以及
發射器,用於至少部分基於所述第一請求及所述第二請求向在所述處理器上運行的所述應用發送所述分批請求的分批結果。
聲明15. 本揭露的實施例包括根據聲明14的計算儲存單元,所述計算儲存單元更包括第二硬體,用於執行所述第二請求。
聲明16. 本揭露的實施例包括根據聲明15的計算儲存單元,其中所述第二硬體是所述硬體。
聲明17. 本揭露的實施例包括根據聲明14的計算儲存單元,其中所述硬體取自包括以下的集合:中央處理單元(CPU)、處理器、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)、資料處理單元(DPU)、柏克萊封包過濾器(BPF)處理器、現場可程式化閘陣列(FPGA)或特殊應用積體電路(ASIC)。
聲明18. 本揭露的實施例包括根據聲明14的計算儲存單元,所述計算儲存單元更包括驗證器,用於驗證所述有向圖是非循環的。
聲明19. 本揭露的實施例包括根據聲明14的計算儲存單元,其中所述排程器被配置成至少部分基於指示所述第一請求獨立於所述第二請求的所述有向圖來排程所述第一請求以供執行。
聲明20. 本揭露的實施例包括根據聲明19的計算儲存單元,其中所述排程器被配置成至少部分基於指示所述第二請求獨立於所述第一請求的所述有向圖以及所述硬體支持所述第一請求與所述第二請求的並行處理來排程所述第二請求與所述第一請求並行執行。
聲明21. 本揭露的實施例包括根據聲明14的計算儲存單元,其中所述排程器被配置成至少部分基於所述第二請求的完成及指示所述第一請求依賴於所述第二請求的所述有向圖來排程所述第一請求以供執行。
聲明22. 本揭露的實施例包括根據聲明14的計算儲存單元,其中所述排程器被配置成至少部分基於所述計算儲存單元的配置來排程所述處理器執行所述第二請求。
聲明23. 本揭露的實施例包括一種方法,所述方法包括:
接收分批創建請求以創建分批請求;
接收第一添加請求以將第一請求添加至所述分批請求;
接收第二添加請求以將第二請求添加至所述分批請求;以及
儲存所述分批請求。
聲明24. 本揭露的實施例包括根據聲明23的方法,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求。
聲明25. 本揭露的實施例包括根據聲明24的方法,其中接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求包括接收所述第二添加請求,以將所述第二請求在所述第一請求之後與所述第一請求串行添加至所述分批請求。
聲明26. 本揭露的實施例包括根據聲明24的方法,其中接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求包括接收所述第二添加請求,以將所述第二請求在所述第一請求之前與所述第一請求串行添加至所述分批請求。
聲明27. 本揭露的實施例包括根據聲明23的方法,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求並行添加至所述分批請求。
聲明28. 本揭露的實施例包括根據聲明23的方法,其中接收所述第一添加請求以將所述第一請求添加至所述分批請求包括:
接收所述第一請求的輸入緩衝器的辨識符;以及
接收所述第一請求的輸出緩衝器的辨識符。
聲明29. 本揭露的實施例包括根據聲明23的方法,所述方法更包括配置所述分批請求。
聲明30. 本揭露的實施例包括根據聲明29的方法,其中配置所述分批請求包括將所述分批請求的參數設置為值。
聲明31. 本揭露的實施例包括根據聲明30的方法,其中將所述分批請求的所述參數設置為所述值包括將所述第一請求的所述參數設置為所述值。
聲明32. 本揭露的實施例包括根據聲明23的方法,其中所述分批請求獨立於儲存裝置或與所述儲存裝置相關聯的計算儲存單元的硬體。
聲明33. 本揭露的實施例包括根據聲明23的方法,其中所述分批請求可用於第一資料及第二資料。
聲明34. 本揭露的實施例包括根據聲明23的方法,其中所述第一請求及所述第二請求至少部分基於所述第一請求與所述第二請求相關而被包括在所述分批請求中。
聲明35. 本揭露的實施例包括一種方法,所述方法包括:
自在計算儲存單元處的主機處理器上運行的應用接收分批請求,所述分批請求包括至少第一請求及第二請求,所述計算儲存單元與儲存裝置相關聯;
解析所述分批請求以辨識所述第一請求及所述第二請求;
執行所述第一請求及所述第二請求;以及
將所述分批請求的分批結果返回至在所述主機處理器上運行的所述應用。
聲明36. 本揭露的實施例包括根據聲明35的方法,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求包括至少部分基於所述第一請求及所述第二請求為所述分批請求產生有向圖。
聲明37. 本揭露的實施例包括根據聲明36的方法,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求更包括驗證所述有向圖是非循環的。
聲明38. 本揭露的實施例包括根據聲明37的方法,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求更包括至少部分基於所述有向圖是循環的來報告錯誤。
聲明39. 本揭露的實施例包括根據聲明36的方法,其中執行所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求。
聲明40. 本揭露的實施例包括根據聲明39的方法,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於指示所述第一請求獨立於所述第二請求的所述有向圖來排程所述計算儲存單元執行所述第一請求。
聲明41. 本揭露的實施例包括根據聲明40的方法,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於指示所述第二請求獨立於所述第一請求的所述有向圖以及所述計算儲存單元支持並行處理來排程所述計算儲存單元與所述第一請求並行執行所述第二請求。
聲明42. 本揭露的實施例包括根據聲明39的方法,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述第二請求的完成及指示所述第一請求依賴於所述第二請求的所述有向圖來排程所述第一請求以供執行。
聲明43. 本揭露的實施例包括根據聲明39的方法,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述計算儲存單元不支持所述第一請求來排程主機處理器執行所述第一請求。
聲明44. 本揭露的實施例包括根據聲明35的方法,其中執行所述第一請求及所述第二請求包括在所述計算儲存單元上執行所述第一請求及所述第二請求。
聲明45. 本揭露的實施例包括根據聲明35的方法,其中將所述分批請求的所述分批結果返回至在所述主機處理器上運行的所述應用包括至少部分基於所述第一請求及所述第二請求將所述分批請求的所述分批結果返回至在所述主機處理器上運行的所述應用。
聲明46. 本揭露的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得:
接收分批創建請求以創建分批請求;
接收第一添加請求以將第一請求添加至所述分批請求;
接收第二添加請求以將第二請求添加至所述分批請求;以及
儲存所述分批請求。
聲明47. 本揭露的實施例包括根據聲明46的物品,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求。
聲明48. 本揭露的實施例包括根據聲明47的物品,其中接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求包括接收所述第二添加請求以將所述第二請求在所述第一請求之後與所述第一請求串行添加至所述分批請求。
聲明49. 本揭露的實施例包括根據聲明47的物品,其中接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求包括接收所述第二添加請求以將所述第二請求在所述第一請求之前與所述第一請求串行添加至所述分批請求。
聲明50. 本揭露的實施例包括根據聲明46的物品,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求並行添加至所述分批請求。
聲明51. 本揭露的實施例包括根據聲明46的物品,其中接收所述第一添加請求以將所述第一請求添加至所述分批請求包括:
接收所述第一請求的輸入緩衝器的辨識符;以及
接收所述第一請求的輸出緩衝器的辨識符。
聲明52. 本揭露的實施例包括根據聲明46的物品,所述非暫時性儲存媒體上儲存有另外的指令,當由機器執行時,所述指令使得對所述分批請求進行配置。
聲明53. 本揭露的實施例包括根據聲明52的物品,其中對所述分批請求進行配置包括將所述分批請求的參數設置為值。
聲明54. 本揭露的實施例包括根據聲明53的物品,其中將所述分批請求的所述參數設置為所述值包括將所述第一請求的所述參數設置為所述值。
聲明55. 本揭露的實施例包括根據聲明46的物品,其中所述分批請求獨立於儲存裝置或與所述儲存裝置相關聯的計算儲存單元的硬體。
聲明56. 本揭露的實施例包括根據聲明46的物品,其中所述分批請求可用於第一資料及第二資料。
聲明57. 本揭露的實施例包括根據聲明46的物品,其中所述第一請求及所述第二請求至少部分基於所述第一請求與所述第二請求相關而被包括在所述分批請求中。
聲明58. 本揭露的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得:
自在計算儲存單元處的主機處理器上運行的應用接收分批請求,所述分批請求包括至少第一請求及第二請求,所述計算儲存單元與儲存裝置相關聯;
解析所述分批請求以辨識所述第一請求及所述第二請求;
執行所述第一請求及所述第二請求;以及
將所述分批請求的分批結果返回至在所述主機處理器上運行的所述應用。
聲明59. 本揭露的實施例包括根據聲明58的物品,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求包括至少部分基於所述第一請求及所述第二請求為所述分批請求產生有向圖。
聲明60. 本揭露的實施例包括根據聲明59的物品,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求更包括驗證所述有向圖是非循環的。
聲明61. 本揭露的實施例包括根據聲明60的物品,其中自在所述計算儲存單元處的所述主機處理器上運行的所述應用接收所述分批請求更包括至少部分基於所述有向圖是循環的來報告錯誤。
聲明62. 本揭露的實施例包括根據聲明59的物品,其中執行所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求。
聲明63. 本揭露的實施例包括根據聲明62的物品,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於指示所述第一請求獨立於所述第二請求的所述有向圖來排程所述計算儲存單元執行所述第一請求。
聲明64. 本揭露的實施例包括根據聲明63的物品,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於指示所述第二請求獨立於所述第一請求的所述有向圖以及所述計算儲存單元支持並行處理來排程所述計算儲存單元與所述第一請求並行執行所述第二請求。
聲明65. 本揭露的實施例包括根據聲明62的物品,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述第二請求的完成及指示所述第一請求依賴於所述第二請求的所述有向圖來排程所述第一請求以供執行。
聲明66. 本揭露的實施例包括根據聲明62的物品,其中由所述計算儲存單元至少部分基於所述有向圖來排程所述第一請求及所述第二請求包括由所述計算儲存單元至少部分基於所述計算儲存單元不支持所述第一請求而排程所述主機處理器執行所述第一請求。
聲明67. 本揭露的實施例包括根據聲明58的物品,其中執行所述第一請求及所述第二請求包括在所述計算儲存單元上執行所述第一請求及所述第二請求。
聲明68. 本揭露的實施例包括根據聲明58的物品,其中將所述分批請求的所述分批結果返回至在所述主機處理器上運行的所述應用包括至少部分基於所述第一請求及所述第二請求將所述分批請求的所述分批結果返回至在所述主機處理器上運行的所述應用。
因此,慮及本文中所述的實施例的各種各樣的排列,此詳細說明及隨附材料僅旨在為例示性的,且不應被視為限制本揭露的範圍。因此,所主張保護的揭露內容是所有可落入以下申請專利範圍及其等效範圍的範圍及精神內的此種潤飾。
105:機器/系統
110:處理器
115:記憶體
120:儲存裝置
125:記憶體控制器
130:裝置驅動器
135:計算儲存單元
140:組構
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:佇列對
330:處理器
335-1、335-2:服務
345:代理儲存器存取
350:陣列控制器
405:應用
410:讀取資料請求/請求
415:處理資料請求/請求
420:寫入資料請求/請求
425、430:資料
435、445、455:處理
440:讀取資料結果/資料讀取結果/訊息
450:處理資料結果/訊息
460:寫入資料結果
465、465-4、465-5:分批請求
465-1:串行分批請求/分批請求
465-2:並行分批請求
465-3:混合分批請求
470:分批結果
505-1、505-7、505-8:輸入請求
510-1、510-2、510-3、510-4、510-5、510-6、510-7、510-8、510-9、510-10、510-11:計算請求
515-1、515-7:輸出請求
605、705、710:讀取請求/請求
610:解密請求/請求
615:解壓縮請求/請求
620:資料庫過濾請求/請求
625:聚集請求/請求
630、725:寫入請求/請求
635、640、645、660:緩衝器
650、655:輸出緩衝器/緩衝器
715:乘法請求/請求
720:乘法請求/請求
805:構建軟體/分批軟體
810:執行軟體
815:分批創建軟體
820:請求添加軟體/執行軟體
905、910、915:資料結構
1005:代碼
1105:接收器
1110:解析器
1115:有向圖構造器/有向圖創建器
1120:驗證器
1125:排程器
1130:硬體
1135:發射器
1205:有向圖
1210、1215、1220、1225、1230:節點
1305、1310、1315、1320、1405、1410、1415、1420、1430、1505、1510、1515、1520、1605、1610、1615、1620、1625、1630、1705、1710、1715、1805、1810、1815:步驟
1425、1435、1440、1635:虛線
以下所闡述的圖式是可如何實施本揭露的實施例的實例,且不旨在限制本揭露的實施例。本揭露的各別實施例可包括特定圖中所未示出的元件及/或可省略特定圖中所示出的元件。所述圖式旨在提供例示,且可能未按比例繪製。
圖1示出根據本揭露的實施例,包括支持分批請求的計算儲存單元的系統。
圖2示出根據本揭露的實施例,圖1的機器的細節。
圖3A示出根據本揭露的實施例,可與圖1的儲存裝置相關聯的計算儲存單元的第一示例性佈置。
圖3B示出根據本揭露的實施例,可與圖1的儲存裝置相關聯的計算儲存單元的第二示例性佈置。
圖3C示出根據本揭露的實施例,可與圖1的儲存裝置相關聯的計算儲存單元的第三示例性佈置。
圖3D示出根據本揭露的實施例,可與圖1的儲存裝置相關聯的計算儲存單元的第四示例性佈置。
圖4A示出根據本揭露的實施例,處理個別請求的圖1的計算儲存單元。
圖4B示出根據本揭露的實施例,處理分批請求的圖1的計算儲存單元。
圖5A示出根據本揭露的實施例,圖4B的分批請求的一種結構。
圖5B示出根據本揭露的實施例,圖4B的分批請求的第二結構。
圖5C示出根據本揭露的實施例,圖4B的分批請求的第三結構。
圖6示出根據本揭露實施例的示例性分批請求,其具有用於在處理圖4B的分批請求期間儲存資料的緩衝器。
圖7示出根據本揭露的實施例,資料被重用的圖4B的另一示例性分批請求。
圖8示出根據本揭露的實施例,用於構建分批請求的軟體的細節。
圖9示出根據本揭露的實施例,可用於儲存圖4B的分批請求的各種示例性資料結構。
圖10示出根據本揭露的實施例,可使用圖4B的分批請求的示例性代碼片段。
圖11示出根據本揭露的實施例,被設計成處理分批請求的圖1的計算儲存單元的細節。
圖12示出根據本揭露的實施例,由圖11的有向圖構造器為圖7的分批請求構造的示例性有向圖的細節。
圖13示出根據本揭露的實施例,使用圖8的軟體來構建圖4B的分批請求的示例性程序的流程圖。
圖14A示出根據本揭露的實施例,使用圖8的軟體來構建圖4B的分批請求的另一示例性程序的流程圖。
圖14B根據本揭露的實施例,繼續示出使用圖8的軟體來構建圖4B的分批請求的另一示例性程序的圖14A的流程圖。
圖15示出根據本揭露的實施例,圖1的計算儲存單元處理圖4B的分批請求的示例性程序的流程圖。
圖16A示出根據本揭露的實施例,圖1的計算儲存單元處理圖4B的分批請求的另一示例性程序的流程圖。
圖16B根據本揭露的實施例,繼續示出圖1的計算儲存單元處理圖4B的分批請求的另一示例性程序的流程圖。
圖17示出根據本揭露的實施例,圖11的排程器對圖4B的分批請求中的各種請求進行排程以供執行的示例性程序的流程圖。
圖18示出根據本揭露的實施例,圖11的排程器對圖4B的分批請求中的各種請求進行排程以供執行的另一示例性程序的流程圖。
105:機器/系統
110:處理器
115:記憶體
120:儲存裝置
125:記憶體控制器
130:裝置驅動器
135:計算儲存單元
140:組構
Claims (20)
- 一種系統,包括: 處理器; 軟體,被配置成在所述處理器上運行並構建分批請求,所述分批請求包括至少第一請求及第二請求; 儲存裝置;以及 計算儲存單元,與所述儲存裝置相關聯,所述計算儲存單元被配置成處理所述分批請求。
- 如請求項1所述的系統,其中所述計算儲存單元被配置成自在所述處理器上運行的應用接收所述分批請求,並且至少部分基於所述第一請求及所述第二請求向所述應用返回所述分批請求的分批結果。
- 如請求項1所述的系統,其中所述軟體包括請求添加軟體,以將所述第一請求添加至所述分批請求。
- 如請求項1所述的系統,其中所述分批請求包括串行結構、並行結構或混合結構中的一者。
- 如請求項1所述的系統,其中: 所述軟體包括第一軟體;且 所述系統更包括第二軟體,所述第二軟體被配置成向所述計算儲存單元發送所述分批請求。
- 如請求項1所述的系統,其中所述第一請求及所述第二請求至少部分基於所述第一請求與所述第二請求相關而被包括在所述分批請求中。
- 如請求項1所述的系統,其中所述計算儲存單元包括: 接收器,用於自在所述處理器上運行的應用接收所述分批請求; 解析器,用於將所述分批請求解析成至少所述第一請求及所述第二請求; 圖形構造器,用於自至少所述第一請求及所述第二請求構造有向圖; 排程器,用於至少部分基於所述有向圖來排程所述第一請求及所述第二請求以供執行;以及 硬體,用於執行至少所述第一請求。
- 一種計算儲存單元,包括: 接收器,用於自在處理器上運行的應用接收分批請求; 解析器,用於將所述分批請求解析成至少第一請求及第二請求; 有向圖構造器,用於自至少所述第一請求及所述第二請求構造有向圖; 排程器,用於至少部分基於所述有向圖來排程所述第一請求及所述第二請求以供執行; 硬體,至少部分基於所述排程器來執行所述第一請求;以及 發射器,用於至少部分基於所述第一請求及所述第二請求向在所述處理器上運行的所述應用發送所述分批請求的分批結果。
- 如請求項8所述的計算儲存單元,更包括第二硬體,用於執行所述第二請求。
- 如請求項8所述的計算儲存單元,更包括驗證器,用於驗證所述有向圖是非循環的。
- 如請求項8所述的計算儲存單元,其中所述排程器被配置成至少部分基於指示所述第一請求獨立於所述第二請求的所述有向圖來排程所述第一請求以供執行。
- 如請求項8所述的計算儲存單元,其中所述排程器被配置成至少部分基於所述第二請求的完成及指示所述第一請求依賴於所述第二請求的所述有向圖來排程所述第一請求以供執行。
- 一種方法,包括: 接收分批創建請求以創建分批請求; 接收第一添加請求以將第一請求添加至所述分批請求; 接收第二添加請求以將第二請求添加至所述分批請求;以及 儲存所述分批請求。
- 如請求項13所述的方法,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求串行添加至所述分批請求。
- 如請求項13所述的方法,其中接收所述第二添加請求以將所述第二請求添加至所述分批請求包括接收所述第二添加請求以將所述第二請求與所述第一請求並行添加至所述分批請求。
- 如請求項13所述的方法,其中接收所述第一添加請求以將所述第一請求添加至所述分批請求包括: 接收所述第一請求的輸入緩衝器的辨識符;以及 接收所述第一請求的輸出緩衝器的辨識符。
- 如請求項13所述的方法,更包括配置所述分批請求。
- 如請求項17所述的方法,其中配置所述分批請求包括將所述分批請求的參數設置為值。
- 如請求項13所述的方法,其中所述分批請求獨立於儲存裝置或與所述儲存裝置相關聯的計算儲存單元的硬體。
- 如請求項13所述的方法,其中所述分批請求可用於第一資料及第二資料。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063073922P | 2020-09-02 | 2020-09-02 | |
US63/073,922 | 2020-09-02 | ||
US202163141970P | 2021-01-26 | 2021-01-26 | |
US63/141,970 | 2021-01-26 | ||
US202163142485P | 2021-01-27 | 2021-01-27 | |
US63/142,485 | 2021-01-27 | ||
US202163144469P | 2021-02-01 | 2021-02-01 | |
US63/144,469 | 2021-02-01 | ||
US17/359,495 | 2021-06-25 | ||
US17/359,495 US20220066821A1 (en) | 2020-09-02 | 2021-06-25 | Systems and method for batching requests in computational devices |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202211039A true TW202211039A (zh) | 2022-03-16 |
Family
ID=77316842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110130288A TW202211039A (zh) | 2020-09-02 | 2021-08-17 | 用於計算裝置中分批請求之系統以及方法、以及計算儲存單元 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220066821A1 (zh) |
EP (1) | EP3964957A1 (zh) |
KR (1) | KR20220030196A (zh) |
CN (1) | CN114201111A (zh) |
TW (1) | TW202211039A (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 |
US11880568B2 (en) | 2021-11-17 | 2024-01-23 | Seagate Technology Llc | On demand configuration of FPGA interfaces |
US20240201856A1 (en) * | 2022-12-15 | 2024-06-20 | Dell Products L.P. | Provide host applications ability to dynamically manage application specific functionality on storage application |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943504B2 (en) * | 2012-04-20 | 2015-01-27 | Qualcomm Incorporated | Tracking and releasing resources placed on a deferred unlock list at the end of a transaction |
WO2016079786A1 (ja) * | 2014-11-17 | 2016-05-26 | 株式会社日立製作所 | 計算機システム及びデータ処理方法 |
US11474974B2 (en) * | 2018-12-21 | 2022-10-18 | Home Box Office, Inc. | Coordinator for preloading time-based content selection graphs |
-
2021
- 2021-06-25 US US17/359,495 patent/US20220066821A1/en active Pending
- 2021-08-12 EP EP21190952.8A patent/EP3964957A1/en active Pending
- 2021-08-17 TW TW110130288A patent/TW202211039A/zh unknown
- 2021-08-26 CN CN202110986376.4A patent/CN114201111A/zh active Pending
- 2021-09-02 KR KR1020210116695A patent/KR20220030196A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US20220066821A1 (en) | 2022-03-03 |
CN114201111A (zh) | 2022-03-18 |
KR20220030196A (ko) | 2022-03-10 |
EP3964957A1 (en) | 2022-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202211039A (zh) | 用於計算裝置中分批請求之系統以及方法、以及計算儲存單元 | |
US8818964B2 (en) | Optimization of a computing environment in which data management operations are performed | |
US8028292B2 (en) | Processor task migration over a network in a multi-processor system | |
CN111868676A (zh) | 在基于云的存储***中服务i/o操作 | |
CN111095225B (zh) | 使用rdma读取非易失性高速缓存中存储的数据的方法 | |
CN109314721B (zh) | 分布式文件***的多个集群的管理 | |
US20100185587A1 (en) | Data movement with reduced service outage | |
TW200846910A (en) | Hints model for optimization of storage devices connected to host and write optimization schema for storage devices | |
US11467987B1 (en) | Computational pipelines for computational storage devices | |
TW202213068A (zh) | 用於計算儲存功能的裝置、系統以及方法 | |
JP2016507093A (ja) | 回帰モデルを計算するための方法、コンピュータ・プログラム、およびシステム | |
US7376758B2 (en) | I/O dependency graphs | |
US9575669B2 (en) | Programmable solid state drive controller and method for scheduling commands utilizing a data structure | |
US20220365709A1 (en) | Computational storage for logical volumes that span physical devices | |
TW202314490A (zh) | 用於管理通訊的系統及方法、以及包括非暫時性儲存媒體的物品 | |
TW202201230A (zh) | 儲存裝置及實時虛擬機遷移的方法 | |
Shu et al. | Disaggregated RAID storage in modern datacenters | |
KR20190026860A (ko) | 이종 디바이스 유형들을 위한 피어-투-피어 분산 컴퓨팅 시스템 | |
CN112540858B (zh) | 任务处理方法、服务器、客户端及*** | |
US10824640B1 (en) | Framework for scheduling concurrent replication cycles | |
TW202341347A (zh) | 多功能裝置、操作其的方法及用於其的物品 | |
US11556659B1 (en) | Partially encrypted snapshots | |
Stone et al. | PDIO: High-Performance Remote File I/O for Portals-Enabled Compute Nodes. | |
US20230409226A1 (en) | Method and system for acceleration or offloading utilizing a multiple input data stream | |
US11144206B2 (en) | Method and system for sharing data reduction metadata with storage systems |