TW202341347A - 多功能裝置、操作其的方法及用於其的物品 - Google Patents
多功能裝置、操作其的方法及用於其的物品 Download PDFInfo
- Publication number
- TW202341347A TW202341347A TW111129128A TW111129128A TW202341347A TW 202341347 A TW202341347 A TW 202341347A TW 111129128 A TW111129128 A TW 111129128A TW 111129128 A TW111129128 A TW 111129128A TW 202341347 A TW202341347 A TW 202341347A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- port
- present disclosure
- function
- computing
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 95
- 239000000872 buffer Substances 0.000 claims description 145
- 230000015654 memory Effects 0.000 claims description 127
- 230000006870 function Effects 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 28
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 47
- 230000003863 physical function Effects 0.000 description 29
- 238000012546 transfer Methods 0.000 description 18
- 230000008901 benefit Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000003466 welding Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
-
- 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/0028—Serial attached SCSI [SAS]
-
- 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/0032—Serial ATA [SATA]
-
- 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/0036—Small computer system interface [SCSI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Warehouses Or Storage Devices (AREA)
Abstract
揭露一種多功能裝置。第一埠可用於與主機處理器進行通訊。第二埠可用於與儲存裝置進行通訊。第三埠可用於與計算儲存單元進行通訊。電路可用於將訊息自主機處理器路由至儲存裝置或計算儲存單元中的至少一者。
Description
本揭露大體而言是有關於儲存裝置,且更具體而言,是有關於一種允許對儲存裝置以及一或多個計算儲存單元進行存取的橋接器(bridge)。
[相關申請案資料]
本申請案主張於2021年8月12日提出申請且序列號為63/232,631的美國臨時專利申請案的權益,所述美國臨時專利申請案出於全部目的以引用的方式併入本案。
本背景部分旨在僅提供環境背景(context),且在本部分中對任何概念的揭露不被視為承認所述概念是先前技術。
隨著由儲存裝置提供的容量的增大,應用可能會處理越來越多的資料。將大量資料自儲存裝置傳送至主記憶體以供應用來處理可能需要大量時間。另外,讓主機處理器(host processor)執行命令來處理所述資料可能會給主機處理器帶來負擔。
仍然需要改善處理資料。
本揭露的實施例包括一或多個橋接器。橋接器可支援一或多個儲存裝置以及一或多個計算儲存單元。橋接器可向主機處理器暴露與由儲存裝置及計算儲存單元所提供的功能相似的功能。橋接器可支援在儲存裝置與計算儲存單元之間傳送資料。
現在將詳細參照本揭露的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,陳述諸多具體細節以使得能夠透徹地理解本揭露。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本揭露。在其他情形中,未對眾所習知的方法、程序、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用用語「第一」、「第二」等來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本揭露的範圍的條件下,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組。
本文中在本揭露的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本揭露。除非上下文另外清楚地指示,否則在本揭露的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文中所使用的用語「及/或(and/or)」是指且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式所示組件及特徵未必按比例繪製。
隨著儲存裝置容量的增大,應用要處理的資料量亦可能會增加。在儲存裝置與主記憶體之間傳送此種資料所需的時間可能會增加,從而潛在地減慢應用的執行。另外,讓主機處理器執行命令可能會給主機處理器帶來負擔,此可能會減少可供主機處理器用於執行其他命令的週期(cycle)。
本揭露的實施例藉由提供橋接器來解決該些問題。橋接器可對主機處理器、一或多個儲存裝置以及一或多個計算儲存單元進行連接。橋接器可確定由儲存裝置及計算儲存單元提供的功能,且可向主機處理器暴露相似的功能。計算儲存單元可代表應用來施行命令。主機處理器可與橋接器進行通訊,且橋接器可與儲存裝置及/或計算儲存單元進行通訊。
橋接器亦可包括緩衝器,以使得儲存裝置及/或計算儲存單元能夠共享資料,而無需經由主記憶體傳送所述資料。
圖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可為揮發性記憶體或非揮發性記憶體。記憶體115亦可為不同記憶體類型的任何所期望組合且可由記憶體控制器125進行管理。記憶體115可用於儲存可被稱為「短期(short-term)」的資料:即,預期不會被儲存達延長時間段的資料。短期資料的實例可包括臨時檔案、由應用在本地使用的資料(其可自其他儲存位置拷貝)及類似資料。
處理器110及記憶體115亦可支援作業系統,各種應用可在所述作業系統下運行。該些應用可發出請求(其亦可被稱為命令),以自任一記憶體115讀取資料或者向記憶體115寫入資料。當儲存裝置120用於支援經由某種檔案系統來讀取或寫入資料的應用時,可使用裝置驅動器130來存取儲存裝置120。儘管圖1示出一個儲存裝置120,然而機器105中可存在任何數目(一或多個)的儲存裝置。儲存裝置120可支援任何所期望的一或多個協定,包括例如快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)協定。
儘管圖1使用通用用語「儲存裝置」,然而本揭露的實施例可包括可受益於使用計算儲存單元的任何儲存裝置格式,其實例可包括硬碟驅動機及固態驅動機(Solid State Drive,SSD)。以下對「SSD」的任何引用均應被理解為包括本揭露的此類其他實施例。
機器105亦可包括多功能裝置135(其亦可稱為加速器或裝置)。如以下所論述,多功能裝置135可支援與儲存裝置120及計算儲存單元140的連接,但對於處理器110而言,呈現得如同儲存裝置120與計算儲存單元140是單一裝置一樣。多功能裝置135可達成儲存裝置120及/或計算儲存單元140的模組化(modularity),此乃因可添加或替換儲存裝置120及/或計算儲存單元140,而不必替換連接至多功能裝置135的其他組件。
多功能裝置135可使用任何所期望硬體來實施。舉例而言(舉幾種可能性),多功能裝置135或其組件可使用現場可程式化閘陣列(Field Programmable Gate Array,FPGA)、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)、中央處理單元(central processing unit,CPU)、系統晶片(System-on-a-Chip,SoC)、圖形處理單元(graphics processing unit,GPU)、通用GPU(general purpose GPU,GPGPU)、資料處理單元(data processing unit,DPU)、神經處理單元(neural processing unit,NPU)、網路介面卡(Network Interface Card,NIC)或張量處理單元(tensor processing unit,TPU)來實施。多功能裝置135亦可使用該些元件的組合來實施多功能裝置135。
儘管圖1示出在上文被闡述為支援對儲存裝置120的存取的裝置驅動器(device driver)130,然而機器105亦可包括用於計算儲存單元140及/或多功能裝置135的裝置驅動器(未示出)。亦即,本揭露的實施例可支援用於支援儲存裝置120、計算儲存單元140或多功能裝置135中的任一者或所有者的裝置驅動器130,且本揭露的實施例可包括附加裝置驅動器以支援該些組件中的任意組合或所有組合。
在本揭露的一些實施例中,裝置驅動器130(以及其他裝置驅動器,例如用於支援計算儲存單元140的裝置驅動器)可提供應用程式化介面(application programming interface,API)來存取儲存裝置120及/或計算儲存單元140。藉由支援現有的裝置驅動器,現有的應用可由處理器110執行,而無需改變所述應用(儘管本揭露的實施例可能涉及對軟體堆疊中的其他要素的修改)。舉例而言,TPU可能具有TPU裝置驅動器,或者GPU可能具有GPU裝置驅動器:對TPU或GPU的功能進行存取的應用可繼續使用現有的TPU裝置驅動器或GPU裝置驅動器。另外,藉由支援現有的裝置驅動器,計算儲存單元140亦可為任何計算儲存單元(即使是由與儲存裝置120及/或多功能裝置135不同的製造商製造)。此外,在本揭露的一些實施例中,裝置驅動器130(或其他裝置驅動器)可為專屬的。
本揭露的實施例可包括用於與儲存裝置120及/或計算裝置140進行通訊的任何所期望機制。舉例而言,儲存裝置120及/或計算裝置140可連接至匯流排,例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)匯流排,或者儲存裝置120及/或計算裝置140可包括乙太網路介面或一些其他網路介面。與儲存裝置120及/或計算裝置140之間的其他可能介面可除其他可能性以外亦包括遠程直接記憶體存取(Remote Direct Memory Access,RDMA)、傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol,TCP/IP)、無限頻帶(InfiniBand)、串列附接小電腦系統介面(Small Computer System Interface,SCSI)(Serial Attached SCSI,SAS)、網際網路小電腦系統介面(Internet SCSI,iSCSI)及串列先進技術(Advanced Technology,AT)附接(Serial AT Attachment,SATA)。
機器105可在記憶體115中包括可由處理器110、儲存裝置120及/或計算儲存單元140定址的位址範圍。在本揭露的一些實施例中,處理器110可分配此位址範圍的可與欲發送至儲存裝置120及/或計算儲存單元140的命令相關聯的子集。另外,處理器110可分配此位址範圍的可與用於儲存裝置120與計算儲存單元140之間的同級間(peer-to-peer,P2P)通訊(P2P communication)的命令相關聯的子集。亦即,藉由將命令與記憶體115中的特定位址相關聯,可確定所述命令是旨在用於儲存裝置120、計算儲存單元140還是用於在儲存裝置120與計算儲存單元140之間傳送資料。應注意,記憶體115可能不包括足夠的記憶體來包括此種實體位址,但記憶體115未必需要實際上足夠的記憶體來包括此種位址。舉例而言,記憶體115可包括2吉位元組(gigabyte,GB)的記憶體,但可支援對高達4吉位元組的記憶體進行定址。即使記憶體115可能不能夠處理對位址的子集(例如處於2吉位元組與3吉位元組之間的位址)的請求,該些特定位址可用於辨識用於同級間通訊的命令。多功能裝置135可基於指派給此種命令的位址來辨識所述命令,且可截獲此種命令以進行處理。
圖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。
圖3示出根據本揭露實施例的圖1所示多功能裝置135的細節。在圖3中,多功能裝置135可包括連接件305。連接件305可提供與匯流排的連接,所述匯流排可用於與圖1所示處理器110進行通訊。舉例而言,連接件305可提供與PCIe匯流排的連接,但亦可使用其他匯流排。
端點(End Point,EP)310可連接至連接件305(或者實施為連接件305的一部分)。端點310可充當來自圖1所示處理器110的查詢的端點。如以下所進一步論述,端點310可暴露與多功能裝置135的其他連接件(例如連接件315及連接件320)附接的裝置的功能。
異步緩衝器325可連接至端點310及/或連接件305。異步緩衝器325可充當欲在圖1所示主機處理器110與和多功能裝置135連接的其他裝置之間交換的請求、訊息及/或資料的落放點(landing point)。異步緩衝器325可為異步的,此乃因異步緩衝器325可以與處理器110不同的時鐘週期進行操作。亦即,圖1所示處理器110可基於圖1所示處理器110的時鐘週期來發送請求、訊息或資料,當自圖1所示處理器110接收時,所述請求、訊息或資料可被寫入至異步緩衝器325中;然後,可在由多功能裝置135的時鐘週期主控的時間處自異步緩衝器325讀取所述請求、訊息或資料。藉由包括異步緩衝器325,多功能裝置135可使得不再需要以與處理器110相同的時鐘週期進行操作。
應注意,在本揭露的一些實施例中,多功能裝置135可使用與圖1所示處理器110相同的時鐘週期來進行操作。在本揭露的此種實施例中,異步緩衝器325可被完全省略,或者利用同步緩衝器來替換(以允許臨時儲存自圖1所示處理器110接收的或者欲傳輸至圖1所示處理器110的請求、訊息及/或資料)。
多工器/解多工器330可連接至異步緩衝器325。多工器/解多工器330可對來自異步緩衝器325的請求、訊息及/或資料進行存取。然後,多工器/解多工器330可確定請求、訊息或資料是針對哪一與多功能裝置135連接的裝置,且可相應地對請求、訊息或資料進行路由。為了達成此功能,多工器/解多工器330亦可連接至橋接器335及橋接器340,橋接器335及橋接器340中的每一者可最終將請求、訊息或資料遞送至與多功能裝置135連接的特定裝置。在本揭露的另一實施例中,多工器/解多工器330可與多於兩個橋接器進行通訊。以下進一步論述多工器/解多工器330可如何確定特定請求應被遞送至哪一橋接器。
橋接器335及橋接器340可分別連接至異步緩衝器345及異步緩衝器350。如異步緩衝器325一樣,異步緩衝器345及異步緩衝器350可使得多功能裝置135能夠以與和連接件315及連接件320連接的各種裝置不同的時鐘週期進行操作。另外,如異步緩衝器325一樣,在本揭露的一些實施例中,多功能裝置135可使用與和連接件315及/或連接件320連接的裝置相同的時鐘週期來進行操作。在本揭露的此種實施例中,異步緩衝器345及/或異步緩衝器350可被完全省略,或者利用同步緩衝器來替換(以允許臨時儲存自與連接件315及/或連接件320連接的裝置接收的或者欲傳輸至與連接件315及/或連接件320連接的裝置的請求、訊息及/或資料)。
根埠(Root Port,RP)355及根埠360可分別連接至異步緩衝器345及異步緩衝器350(且可分別實施為連接件315及連接件320的一部分)。根埠355及根埠360可分別與和連接件315及連接件320連接的裝置進行通訊。舉例而言,圖1所示儲存裝置120可連接至連接件315,且圖1所示計算儲存單元140可連接至連接件320。
根埠355及根埠360可向與連接件315及連接件320連接的裝置詢問關於該些裝置的資訊。舉例而言,與連接件315或連接件320連接的裝置可暴露用於辨識可能由所述裝置作出的請求的各種功能。
在本揭露的一些實施例中,該些功能可包括一或多個實體功能(physical function,PF)及/或一或多個虛擬功能(virtual function,VF)。每一PF可表示資源,例如由所述裝置提供的功能。每一VF可表示與PF相關聯但被「虛擬化」的功能:亦即,對於給定的PF,可存在一或多個VF。PF及VF可在枚舉所述裝置時被發現:此種枚舉可由根埠355及根埠360來實行,而非由圖1所示處理器110來實行。儘管PF、VF、端點及根埠是通常與PCIe裝置相關聯的概念,然而當使用與其他匯流排連接的裝置時,本揭露的實施例可包括相似的概念。
一旦枚舉了PF及VF,此種資訊便可被提供給橋接器335及橋接器340,且最終被提供回多工器/解多工器330及/或端點310。藉由此種方式,端點310可能夠暴露與連接件315及連接件320連接的各種裝置的功能(PF、VF或兩者)。若由與連接件315及連接件320連接的裝置所暴露的功能之間存在任何衝突(例如,相同的功能辨識符),多工器/解多工器330及/或端點310可改變枚舉以避免此種衝突。舉例而言,裝置可自零開始枚舉所述功能:若與連接件315及連接件320連接的裝置二者均被指派自零開始的功能編號,則多工器/解多工器330可能不能夠確定與功能編號零相關聯的特定請求是針對哪一裝置。因此,舉例而言,若與連接件315連接的裝置具有三個PF,而與連接件320連接的裝置具有兩個PF,則多工器/解多工器330可使用編號0、1及2將PF指派給與連接件315連接的裝置,且可使用編號3及4將PF指派給與連接件320連接的裝置。只要沒有兩個PF被指派相同的編號,多工器/解多工器330可以任何所期望方式對功能進行映射。另外,由與連接件315及/或連接件320連接的裝置所暴露的VF可被暴露為VF或PF(即,裝置的VF可映射至由多功能裝置135所暴露的PF)。
基於此種理解,現在可理解多工器/解多工器330的操作。在經由連接件305自圖1所示處理器110接收到請求、訊息或資料時,多工器/解多工器330可確定與所述資料相關的功能的辨識符。舉例而言,若所述請求是針對圖1所示儲存裝置120的寫入請求,則多工器/解多工器330可辨識寫入請求中的寫入功能,且可在內部將所述寫入功能映射至圖1所示儲存裝置120。然後,多工器/解多工器330可端視哪一橋接器可通向圖1所示儲存裝置120而將寫入請求路由至橋接器335或橋接器340。在於2020年4月10日提出申請而現在待決且序列號為16/846,271的美國專利申請案中可找到關於多功能裝置135可如何暴露與連接件315及連接件320附接的裝置的所暴露功能的更多資訊,所述美國專利申請案主張於2020年1月21日提出申請且序列號為62/964,114的美國臨時專利申請案及於2019年6月24日提出申請且序列號為62/865,962的美國臨時專利申請案的權益,所述申請案中的所有者出於全部目的併入本案供參考。
儘管圖3示出多功能裝置135包括可與圖1所示處理器110、圖1所述儲存裝置120及圖1所示計算儲存單元140連接的三個連接件305、315及320,然而本揭露的實施例可包括任何數目的連接件。舉例而言,多功能裝置135可包括四或更多個連接件:附加的連接件可連接至附加的儲存裝置及/或計算儲存單元。此外,可存在經由連接件(例如連接件315及連接件320)而連接至多功能裝置135的任何數目(一或多個)的儲存裝置及/或任何數目(一或多個)的計算儲存單元。不要求與多功能裝置135連接的儲存裝置的數目相同於與多功能裝置135連接的計算儲存單元的數目。若多功能裝置135包括較連接件315及連接件320多的連接件,則多功能裝置135亦可包括附加橋接器(如橋接器335及橋接器340)、附加異步緩衝器(如異步緩衝器345及異步緩衝器350)以及附加根埠(如根埠355及根埠360),以支援附加裝置。
圖3亦包括可夾置於橋接器340與異步緩衝器350之間的多工器/解多工器365。多工器/解多工器365可用於與連接件315及連接件320連接的裝置之間的同級間通訊。亦即,利用多工器/解多工器365,附接至連接件320的裝置可與附接至連接件315的裝置進行通訊,而不需要使此種通訊通過圖1所示處理器110(經由連接件305)。為了達成此結果,多工器/解多工器365可在多工器/解多工器365處接收的請求、訊息或資料中的實例性資訊。然後,多工器/解多工器365可辨識自與連接件320連接的裝置接收的對此種請求、訊息或資料的任何響應,且可將此種響應返回給發出原始請求、訊息或資料的組件。舉例而言,多工器/解多工器365可確定所述請求、訊息或資料的辨識符以及所述請求、訊息或資料所接收於的源。然後,若多工器/解多工器365自與和所述辨識符相關聯的連接件320連接的裝置接收到響應,則多工器/解多工器365可將所述響應發送至適當的組件。
如以上所論述,在本揭露的一些實施例中,與連接件315及連接件320連接的裝置可為PCIe裝置。在本揭露的此種實施例中,多工器/解多工器365可預期對交易層封包(transaction layer packet,TLP)進行處理。
在本揭露的支援與多功能裝置135連接的多於兩個裝置的實施例中,可存在與和多功能裝置135附接的裝置相關聯的多工器/解多工器(如多工器/解多工器365)。在本揭露的一些實施例中,此種多工器/解多工器可夾置於用於所有裝置的橋接器(如橋接器340)與異步緩衝器(如異步緩衝器350)之間;在本揭露的其他實施例中,此種多工器/解多工器可夾置於用於計算儲存單元(如圖1所示計算儲存單元140)(但不用於儲存裝置(如圖1所示儲存裝置120))的橋接器與異步緩衝器之間。應注意,多工器/解多工器365及相似的多工器/解多工器可連接至一些或所有橋接器(如橋接器335及橋接器340),以支援各種裝置對之間的資料交換。
應注意,多工器/解多工器365可自與連接件315附接的裝置以及自與連接件305附接的圖1所示處理器110接收請求、訊息及/或資料。在本揭露的一些實施例中,由多工器/解多工器365自圖1所示處理器110以及自與連接件315附接的裝置接收的請求可包括辨識所述請求的標籤。舉例而言,讀取請求可包括辨識所述請求的標籤,以使得可返回與相同標籤相關聯的資料。當僅自一個源接收到此種帶標籤的請求時,可預期標籤將不會衝突:舉例而言,多工器/解多工器365可合理地假定圖1所示處理器110將不會將相同標籤指派給兩個不同的讀取請求。但當自多個源接收請求時,除非所述多個源對其對標籤的使用進行協調,否則可能發生自一個源接收的請求可能具有與自另一源接收的請求相同的標籤。一旦自圖1所示計算儲存單元140接收到所述資料,多工器/解多工器365便可能不能夠區分哪一裝置發起了讀取請求:此種情況可能是衝突。
存在幾種可避免此種衝突的方式。一種解決方案可以是一次處理僅來自一個源的請求,而另一源可能一直等待至來自第一源的請求皆不現用(active)為止。但此種解決方案可能無法提供最佳效能。另一解決方案可以是在任何時間均僅允許具有唯一標籤的請求為現用。因此,只要每一請求具有與任何其他現用請求不同的標籤,所述請求便可被處理;若所述請求複製了與另一現用請求相關聯的標籤,則可對新請求進行緩衝,直至具有所述標籤的現用請求完成為止。此種解決方案提供更佳的效能。又一解決方案可以是多工器/解多工器365提供可由各種源使用的標籤:只要每一源可被提供不與指派給另一源的一組標籤相交的一組標籤,便可避免標籤衝突。又一解決方案可以是多工器/解多工器365引入一個層級的間接取值(indirection),從而將來自每一源的標籤映射至新標籤(在多工器/解多工器365內部使用)。當接收到請求時,可對標籤進行映射,且可將自原始標籤至新標籤的映射儲存於多工器/解多工器365中的表中。當請求完成時,多工器/解多工器365可根據與響應一起接收的新標籤來確定原始標籤。
為了支援此種操作,橋接器335可亦能夠將請求、訊息或資料(無論是自圖1所示處理器110接收(如經由連接件305接收),還是自與連接件315連接的裝置接收)引導至多工器/解多工器365。舉例而言,若與連接件315及連接件320附接的裝置可支援直接記憶體定址(direct memory addressing,DMA),則可能發生此種情況。舉例而言,假定圖1所示儲存裝置120連接至連接件315,且圖1所示計算儲存單元140連接至連接件320。若圖1所示計算儲存單元140包括記憶體(例如DRAM)且圖1所示儲存裝置120可發出可將資料寫入至所述記憶體中的DMA請求,則橋接器335可將DMA請求引導至多工器/解多工器365(而非多工器/解多工器330)。藉由此種方式,可繞過圖1所示處理器110,此可導致請求被進一步加快處理。
儘管讓圖1所示儲存裝置120或圖1所示計算儲存單元140直接自另一者讀取或寫入資料是有用的,然而其並不總是可能或實際的。舉例而言,為了支援DMA,一個裝置可能需要記憶體,而另一裝置可能需要用於自所述記憶體讀取資料或向所述記憶體寫入資料的電路(在第一裝置中)。若缺少任一元件(例如,若圖1所示計算儲存單元140既不包括記憶體亦不包括用於對圖1所示儲存裝置120中的記憶體進行讀取或寫入的電路),則可能不可能達成DMA。
另外,若使用DMA,則所述裝置可能需要處置所儲存的資料,而不進行處理。若所述資料在其被使用前需要處理,則DMA可能並不可取。舉例而言,慮及圖1所示計算儲存單元140進行操作來處理視訊資料。若圖1所示計算儲存單元140預期資料呈特定格式(例如,動畫專家群組(motion picture experts group,MPEG)格式),但所述資料呈另一格式(例如,WVM格式),則除非所述資料首先被轉碼,否則圖1所示計算儲存單元140可能不能夠處理所述資料。或者若表中的資料以行格式儲存,但圖1所示計算儲存單元140預期所述表以列格式儲存,則在圖1所示計算儲存單元140可處理所述資料之前,所述表可能需要被轉置。
若圖1所示儲存裝置120包括可處理所述資料以使得所述資料呈可由圖1所示計算儲存單元140使用的格式的處理器,則圖1所示儲存裝置120可在使用DMA將資料自圖1所示儲存裝置120傳送至圖1所示計算儲存單元140之前處理所述資料。但亦可使用另一方式。
緩衝器370可用於儲存在與連接件315及連接件320連接的裝置之間傳送的資料。一旦資料被儲存於緩衝器370中,資料處理器375可然後在傳送至目的地裝置之前適當地處理所述資料。一旦緩衝器370中的資料已由資料處理器375處理,經處理的資料便可被傳送至目的地裝置。在本揭露的一些實施例中,DMA可由所述裝置用於向緩衝器370寫入資料或者自緩衝器370讀取資料。緩衝器370可使用任何所期望儲存形式:例如,DRAM、SRAM或類似儲存形式,且可為片上(on-chip)式或片外(off-chip)式。
資料處理器375可對緩衝器370中的資料實行任何所期望的處理。資料處理器375可包括電路及/或軟體來實行一些預期的處理。但資料處理器375亦可足夠通用以支援由圖1所示處理器110所指令進行的處理。亦即,圖1所示處理器110可將程式下載至資料處理器375,資料處理器375可然後對緩衝器370中的資料執行所述程式,以將所述資料轉換成目的地裝置所預期的格式。
如以上所論述,在本揭露的一些實施例中,可實行資料處理以將所述資料置於對於被指定用於接收所述資料的裝置而言適當的格式。但在本揭露的一些實施例中,即使被指定用於接收所述資料的裝置可能夠處理所述資料,亦可實行資料處理。舉例而言,所述資料可能已呈目的地裝置可接受的格式,但可能存在更佳的格式。在本揭露的此種實施例中,即使所述資料已呈目的地裝置可接受的格式,資料處理器375亦可處理所述資料。
在本揭露的一些實施例中,圖1所示處理器110可充當排程器(scheduler)。在本揭露的此種實施例中,圖1所示處理器110可向源裝置發送請求。在自源裝置接收到響應時,圖1所示處理器110可然後用訊號通知資料處理器375來處理緩衝器370中的資料。一旦資料處理器375已完成對緩衝器370中的資料的處理,資料處理器375便可用訊號通知圖1所示處理器110所述處理完成,在此之後,圖1所示處理器110可請求目的地裝置自緩衝器370讀取所述資料。
在本揭露的其他實施例中,資料處理器375可充當用於資料傳送的排程器。資料處理器375可向源裝置發送要求將所述資料傳送至緩衝器370的請求。應注意,橋接器335及橋接器340可對緩衝器370進行存取,以達成向緩衝器370寫入資料(以及自緩衝器370讀取資料)。一旦所述傳送完成,源裝置便可用訊號通知資料處理器375所述傳送完成。資料處理器375可然後適當地轉換所述資料。一旦資料處理器375已完成對緩衝器370中的資料的轉換,資料處理器375便可用訊號通知目的地裝置所述資料準備好被擷取,且目的地裝置可然後自緩衝器370讀取所述資料。資料處理器375可自圖1所示處理器110接收關於排程的此種指令。該些指令可利用任何所期望協定來編碼:亦可設計新的協定來支援此種排程指令。
當圖1所示計算儲存單元140處理來自圖1所示處理器110(或在圖1所示處理器110上運行的應用)的請求時,所述處理可使用來自緩衝器370的資料(可能由資料處理器375處理)。但所述處理亦可能涉及來自處理器110的資料。舉例而言,若圖1所示計算儲存單元140正在實行影像辨別,則來自圖1所示儲存裝置120的資料可包括關於如何辨別影像的各種特徵的資訊。但欲處理的影像本身可由圖1所示處理器110來提供。或者,若圖1所示計算儲存單元140正在處理對資料庫的查詢,則資料庫本身可來自圖1所示儲存裝置120,但所述查詢可由圖1所示處理器110提供。因此,由圖1所示計算儲存單元140處理的資訊可經由多功能裝置135來自不同的源。
如以上所論述,多功能裝置135可包括多於兩個連接件315及320,且因此可包括多於兩個所附接裝置。在本揭露的一些實施例中,一些或所有所附接裝置可對緩衝器370進行存取,且可自緩衝器370讀取資料或向緩衝器370寫入資料。在本揭露的其他實施例中,可存在任何數目(一或多個)的緩衝器370(且亦可能存在多於一個資料處理器375)。舉例而言,可存在與和多功能裝置135連接的圖1所示每一計算儲存單元140相關聯的緩衝器370。藉由此種方式,資料可被寫入至與預期用於處理所述資料的圖1所示計算儲存單元140相關聯的緩衝器。應注意,緩衝器370亦可用於在與多功能裝置135附接的圖1所示兩個(或更多個)儲存裝置120之間或者在圖1所示兩個(或更多個)計算儲存單元140之間交換資料:本揭露的實施例不限於使用緩衝器370在圖1所示儲存裝置120與圖1所示計算儲存單元140之間交換資料。亦可存在一或多個資料處理器375:資料處理器375的數目可與緩衝器370的數目一對一,或者資料處理器375的數目可不同於緩衝器370的數目。
在本揭露的一些實施例中,同級間通訊可使用PCIe協定來進行通訊。亦即,橋接器335及/或橋接器340可使用PCIe協定來向及/或自與連接件315及連接件320連接的裝置傳輸請求、訊息及/或資料。在本揭露的其他實施例中,同級間通訊可使用其他協定。在本揭露的一些實施例中,與連接件315及連接件320連接的裝置可使用不同的協定來進行通訊(儘管在本揭露的此種實施例中,可能需要請求、訊息或資料格式及/或所述協定之間或之中的協定的一些映射)。
如上所述,除其他可能性以外,圖1所示計算儲存單元140亦可為NIC。當NIC連接至連接件320時,圖1所示儲存裝置120(當連接至連接件315時)可能夠經由同級間通訊(例如,使用緩衝器370)與NIC進行通訊。多功能裝置135可因此支援圖1所示儲存裝置120與NIC之間的通訊,而此種通訊不必通過圖1所示處理器110。應注意,使用NIC作為圖1所示計算儲存單元140及將NIC連接至連接件320並不會防止圖1所示處理器110與NIC進行通訊:圖1所示處理器110仍然可經由多功能裝置135與NIC進行通訊。另外,若多功能裝置135包括附加的連接件,則圖1所示另一計算儲存單元140亦可連接至多功能裝置135,從而亦使得圖1所示計算儲存單元140能夠與NIC進行通訊,而不需要此種通訊通過圖1所示處理器110。藉由此種方式,NIC可被視為計算儲存單元,且與圖1所示一或多個儲存裝置及/或一或多個其他計算儲存單元140組合於一起。
儘管圖3示出連接件315及連接件320,且暗示連接件315及連接件320可允許替換所附接裝置,然而本揭露的實施例可包括連接件315及連接件320中的一或多者作為永久連接件(permanent connector)。另外,本揭露的一些實施例可包括永久連接件與可調換連接件(swappable connector)二者。舉例而言,圖1所示儲存裝置120可永久地固定至連接件315(可能經由焊接),而圖1所示計算儲存單元140可***至連接件320中,此可支援圖1所示計算儲存單元140的拆卸及替換。在本揭露的一些實施例中,調換與連接件315或連接件320連接的裝置可作為熱調換(hot-swap)來實行(即,不切斷圖1所示機器105的電源來實行所述替換);在本揭露的其他實施例中,調換與連接件315或連接件320連接的裝置可涉及在替換所述裝置之前切斷圖1所示機器105的電源。
圖4示出根據本揭露實施例的圖1所示儲存裝置120的細節。在圖4中,儲存裝置120的實施方式被示出為用於固態驅動機。在圖4中,儲存裝置120可包括主機介面層(host interface layer,HIL)405、控制器410及可被組織成各種通道420-1至420-4的各種快閃記憶體晶片415-1至415-8(亦稱為「快閃記憶體儲存器」)。主機介面層405可管理儲存裝置120與其他組件(例如圖1所示處理器110)之間的通訊。主機介面層405亦可管理與遠離儲存裝置120的裝置(即,不被視為圖1所示多功能裝置135的一部分但例如經由一或多個網路連接而與儲存裝置120進行通訊的裝置)的通訊。該些通訊可包括自儲存裝置120讀取資料的讀取請求、向儲存裝置120寫入資料的寫入請求以及自儲存裝置120刪除資料的刪除請求。
主機介面層405可管理僅跨單一埠的介面,或者其可管理跨多個埠的介面。作為另外一種選擇,儲存裝置120可包括多個埠,所述多個埠中的每一者可具有單獨的主機介面層405以管理跨所述埠的介面。本發明概念的實施例亦可對可能性進行混合(例如,具有三個埠的SSD可具有一個主機介面層來管理一個埠,且具有第二主機介面層來管理另外兩個埠)。
控制器410可使用快閃記憶體控制器425來管理對快閃記憶體晶片415-1至415-8的讀取操作及寫入操作以及垃圾收集(garbage collection)及其他操作。SSD控制器410亦可包括快閃轉譯層430、記憶體435及/或DMA控制器440。快閃轉譯層430可管理邏輯區塊位址(logical block address,LBA)(由圖1所示主機105使用)向資料在儲存裝置120上所實際儲存於的實體區塊位址(physical block address,PBA)的映射。利用快閃轉譯層430,不需要在資料在儲存裝置120內自一個區塊移動至另一區塊時通知圖1所示主機105。
記憶體435可為由儲存控制器410使用的本地記憶體,例如DRAM。記憶體435可為揮發性或非揮發性記憶體。記憶體435亦可經由DMA自除儲存裝置120以外的裝置(例如,圖1所示計算儲存單元140)進行存取。可省略記憶體435,如其使用虛線的表示方式所示。
DMA 440可為使得儲存裝置120能夠在儲存裝置120外部的記憶體中執行DMA命令的電路。舉例而言,DMA 440可使得儲存裝置120能夠自圖1所示記憶體115或圖1所示計算儲存單元140中的記憶體讀取資料或向其寫入資料。可省略DMA 440,如其使用虛線的表示方式所示。
儘管圖4示出儲存裝置120包括被組織成四個通道420-1至420-4的八個快閃記憶體晶片415-1至415-8,然而本發明概念的實施例可支援被組織成任何數目的通道的任何數目的快閃記憶體晶片。相似地,儘管圖4示出SSD的結構,然而可使用與圖4中所示結構不同的結構來實施其他儲存裝置(例如,硬碟驅動機)以管理資料的讀取及寫入,但具有相似的可能益處。
圖5A至圖5D示出根據本揭露實施例的圖1所示計算儲存單元140的實例性實施方式。在圖5A中,示出儲存裝置505及計算裝置510-1。儲存裝置505可包括控制器515及儲存器520-1,且可跨主機協定介面(例如主機介面525)到達。主機介面525可用於管理儲存裝置505與控制儲存裝置505的I/O二者。主機介面525的實例可包括用於提交及完成的佇列對(queue pair),但亦可存在使用由儲存裝置505支援的任何本機主機協定的其他主機介面525。
計算裝置510-1可與儲存裝置505進行配對。計算裝置510-1可包括任何數目(一或多個)的處理器530,處理器530可提供一或多個服務535-1及535-2。為了更清楚起見,每一處理器530可提供任何數目(一或多個)的服務535-1及535-2(儘管本揭露的實施例可包括恰好包含兩個服務535-1及535-2的計算裝置510-1)。每一處理器530可為單核處理器或多核處理器。計算裝置510-1可跨主機協定介面(例如主機介面540)到達,所述主機協定介面可用於管理計算裝置510-1及/或控制計算裝置510-1的I/O二者。如同主機介面525一樣,主機介面540可包括用於提交及完成的佇列對,但亦可存在使用由計算裝置510-1支援的任何本機主機協定的其他主機介面540。此種主機協定的實例可除其他可能性以外亦包括乙太網路、RDMA、TCP/IP、無限頻帶、iSCSI、PCIe、SAS及SATA。另外,主機介面540可支援與圖1所示系統105的其他組件(例如,在NIC未連接至圖1所示多功能裝置135的情況下為NIC)的通訊,或者作為NIC進行操作並與本地及/或遠程網路/雲組件進行通訊。
處理器530可被視為近儲存器處理(near-storage processing):即,較圖1所示處理器110更靠近儲存裝置505的處理。由於處理器530更靠近儲存裝置505,因此相較於圖1所示處理器110執行命令的情形而言,處理器530可能夠更快地對儲存於儲存裝置505中的資料執行此種命令。處理器530可具有相關聯的記憶體545,記憶體545可用於在本地對儲存於儲存裝置505中的資料執行命令。記憶體545亦可與圖4所示記憶體435相似地被使用,且可藉由DMA自除計算儲存單元410-1以外的裝置進行存取。記憶體545可包括與圖1所示記憶體115相似的本地記憶體、片上記憶體(其可能快於例如圖1所示記憶體115等記憶體,但生產起來可能更昂貴)或二者。
計算儲存單元410-1亦可包括DMA 550。DMA 550可與圖4所示DMA 440相似地被使用,且可用於存取除計算儲存單元410-1以外的裝置中的記憶體。
端視實施方式而定,可省略記憶體545及/或DMA 550,如虛線所示。
儘管圖5A將儲存裝置505及計算裝置510-1示出為可跨組構(fabric)555單獨到達,然而本揭露的實施例亦可包括串聯連接或共享圖1所示多功能裝置135(如圖1中所示)的儲存裝置505與計算裝置510-1。亦即,指向儲存裝置505的命令與指向計算裝置510-1的命令二者均可在與組構555之間的同一實體連接處被接收,且可通過一個裝置(或圖1所示多功能裝置135)以到達另一裝置。舉例而言,若計算裝置510-1位於儲存裝置505與組構555之間,則計算裝置510-1可接收指向計算裝置510-1與儲存裝置505二者的命令:計算裝置510-1可處理指向計算裝置510-1的命令,且可將指向儲存裝置505的命令傳遞給儲存裝置505。相似地,若儲存裝置505位於計算裝置510-1與組構555之間,則儲存裝置505可接收指向儲存裝置505與計算裝置510-1二者的命令:儲存裝置505可處理指向儲存裝置505的命令,且可將指向計算裝置510-1的命令傳遞給計算裝置510-1。
服務535-1及服務535-2可提供可對儲存於儲存裝置505中的資料執行的一定數目的不同功能。舉例而言,服務535-1及服務535-2可提供預定義功能,例如資料的加密、解密、壓縮及/或解壓縮、抹除編碼及/或應用正規表達式(regular expression)。或者,服務535-1及服務535-2可提供更通用的功能,例如資料搜尋及/或結構化查詢語言(structured query language,SQL)功能。服務535-1及服務535-2亦可支援運行應用專用碼(application-specific code)。亦即,使用服務535-1及服務535-2的應用可提供欲使用儲存裝置505上的資料來執行的定製碼(custom code)。服務535-1及服務535-2亦可為此種功能的任意組合。表1列出可由處理器530提供的服務的一些實例。
表1:服務類型
壓縮 |
加密 |
資料庫過濾器 |
抹除編碼 |
RAID |
散列/CRC |
RegEx(圖案匹配) |
分散集中 |
管線 |
視訊壓縮 |
資料重複刪除 |
作業系統影像加載器 |
容器影像加載器 |
柏克萊封包過濾器(BPF)加載器 |
FPGA位元串流加載器 |
大資料集合 |
處理器530(以及實際上計算裝置510-1)可以任何所期望方式來實施。除其他可能性以外,實例性實施方式可亦包括本地處理器(例如CPU或一些其他處理器(例如FPGA、ASIC或SoC))、GPU、GPGPU、DPU、NPU、NIC或TPU。除其他可能性以外,處理器530亦可使用FPGA或ASIC來實施。若計算裝置510-1包括多於一個處理器530,則每一處理器可如上所述來實施。舉例而言,計算裝置510-1可具有CPU、TPU及FPGA中的一者或每一者,或者計算裝置510-1可具有兩個FPGA,或者計算裝置510-1可具有兩個CPU及一個ASIC,等等。
端視所期望解譯而定,計算裝置510-1或處理器530可被視為計算儲存單元。
本揭露的一些實施例可包括與儲存裝置505及/或計算裝置510-1進行通訊的其他機制。舉例而言,儲存裝置505及/或計算裝置510-1可包括網路介面560,網路介面560可支援除其他可能性以外亦使用乙太網路、RDMA、TCP/IP、無限頻帶、SAS、iSCSI或SATA來與其他裝置進行通訊。網路介面560可提供用於與儲存裝置505及/或計算裝置510-1進行通訊的另一介面。儘管圖5A將網路介面560示出為向計算裝置510-1提供通訊,然而本揭露的實施例亦可包括與儲存裝置505之間的網路介面。另外,在本揭露的一些實施例中,可使用此種其他介面來代替主機介面525及/或主機介面540(在此種情形中,可省略主機介面525及/或主機介面540)。在以下圖5B至圖5D中示出的其他變型亦可包括此種介面。
儘管圖5A將儲存裝置505與計算裝置510-1示出為單獨的裝置,然而在圖5B中其可組合於一起。因此,計算裝置510-2可包括控制器515、儲存器520-1、提供服務535-1及服務535-2的處理器530、記憶體545及/或DMA 550。如同圖5A所示儲存裝置505及計算裝置510-1一樣,可經由主機介面540及/或網路介面560接收管理及I/O命令。即使計算裝置510-2被示出為包括儲存器與處理器530二者,圖5B仍可被視為包括與計算儲存單元相關聯的儲存裝置。
在圖5C中所示又一變型中,示出計算裝置510-5。計算裝置510-3可包括控制器515及儲存器520-1以及提供服務535-1及535-2的處理器530、記憶體545及/或DMA 550。但即使計算裝置510-3可被視為包括控制器515、儲存器520-1、處理器530(且亦被視為與計算儲存單元相關聯的儲存裝置)、記憶體545及/或DMA 550的單一組件,與圖5B中所示實施方式不同,控制器515及處理器530可各自包括其自己的主機介面525及主機介面540及/或網路介面560(同樣,其可用於管理及/或I/O)。藉由包括主機介面525,控制器515可提供對儲存器520-1透明的存取(而非要求所有通訊皆經由處理器530來進行)。
另外,處理器530可對儲存器520-1進行代理儲存器存取(proxied storage access)565。因此,作為經由控制器515來對存取請求進行路由的代替,處理器530可能夠直接自儲存器520-1存取所述資料。
在圖5C中,控制器515與代理儲存器存取565二者均用虛線示出,以表示其為可選元件,且可相依於實施方式而被省略。
最後,圖5D示出又一實施方式。在圖5D中,示出計算裝置510-4,計算裝置510-4可與圖5C相似地包括控制器515、記憶體545、DMA 550及代理儲存器存取565。另外,計算裝置510-4可包括由一或多個儲存器520-1至520-4構成的陣列。儘管圖5D示出四個儲存元件,然而本揭露的實施例亦可包括任意數目(一或多個)的儲存元件。另外,各別儲存元件可為其他儲存裝置,例如圖5A至圖5D中所示儲存裝置。
由於計算裝置510-4可包括多於一個儲存元件520-1至520-4,因此計算裝置510-4可包括陣列控制器570。陣列控制器570可管理如何將資料儲存於儲存元件520-1至儲存元件520-4上以及如何自儲存元件520-1至儲存元件520-4擷取資料。舉例而言,若儲存元件520-1至儲存元件520-4被實施為某種層級的獨立磁碟冗餘陣列(Redundant Array of Independent Disk,RAID),則陣列控制器570可為RAID控制器。若儲存元件520-1至儲存元件520-4是使用某種形式的抹除編碼來實施,則陣列控制器570可為抹除編碼控制器。
圖6示出根據本揭露實施例的用於使用圖1所示多功能裝置135向圖1所示儲存裝置120及/或圖1所示計算儲存單元140遞送請求的實例性程序的流程圖。在圖6中,在方塊605處,圖1所示多功能裝置135可在圖3所示埠310處接收請求。在方塊610處,圖3所示多工器/解多工器330可自請求辨識裝置。在方塊615處,圖3所示多工器/解多工器330可將圖3所示埠355或圖3所示埠360辨識為連接至自所述請求辨識的裝置。在方塊620處,圖3所示多工器/解多工器330、圖3所示橋接器335或圖3所示橋接器340以及圖3所示埠355或圖3所示埠360可將請求傳輸至自所述請求辨識的裝置。
圖7示出根據本揭露實施例的用於使用圖1所示多功能裝置135來辨識圖1所示儲存裝置120及/或圖1所示計算儲存單元140的所暴露功能的實例性程序的流程圖。在圖7中,在方塊705處,圖3所示根埠355可辨識由與圖3所示連接件315連接的裝置暴露的功能。在方塊710處,圖3所示根埠360可辨識由與圖3所示連接件320連接的裝置暴露的功能。在方塊715處,圖3所示端點310可暴露來自圖1所示多功能裝置135的功能。
圖8示出根據本揭露實施例的用於使用圖3所示異步緩衝器的實例性程序的流程圖。在圖8中,在方塊605處,圖1所示多功能裝置135可在圖3所示埠310處接收請求。由於所闡述的操作相同,因此方塊605使用與圖6所示方塊605相同的辨識符。在方塊805處,圖1所示多功能裝置135可將請求儲存於圖3所示異步緩衝器325中。
在方塊810處,在某一稍後的時間處,圖3所示多工器/解多工器330可自圖3所示異步緩衝器325讀取請求。在方塊610處,圖3所示多工器/解多工器330可自請求辨識裝置。在方塊615處,圖3所示多工器/解多工器330可將圖3所示埠355或圖3所示埠360辨識為連接至自所述請求辨識的裝置。由於所闡述的操作相同,因此方塊610及方塊615使用與圖6所示方塊610及方塊615相同的辨識符。在方塊815處,圖3所示橋接器335或圖3所示橋接器340可將請求儲存於圖3所示異步緩衝器345或圖3所示異步緩衝器350中。
在方塊820處,在某一稍後的時間處,圖3所示根埠355可自圖3所示異步緩衝器345讀取請求,或者圖3所示根埠360可自圖3所示異步緩衝器350讀取請求。在方塊620處,圖3所示根埠355或圖3所示根埠360可將請求傳輸至自所述請求辨識的裝置。由於所闡述的操作相同,因此方塊620使用與圖6所示方塊620相同的辨識符。
圖9示出根據本揭露實施例的用於利用另一計算儲存單元來替換圖1所示計算儲存單元140的實例性程序的流程圖。在方塊905處,可將圖1所示計算儲存單元140自圖3所示連接件320斷開連接。在方塊910處,可將新的計算儲存單元連接至圖3所示連接件320。
圖10示出根據本揭露實施例的用於使用圖1所示多功能裝置135在與圖1所示多功能裝置135附接的裝置之間遞送請求的實例性程序的流程圖。在方塊1005處,圖1所示多功能裝置135可自與圖1所示多功能裝置135的埠連接的裝置接收請求。應注意,所論述的裝置可使用圖3所示埠355或圖3所示埠360或者與其他儲存裝置或計算儲存單元連接的其他埠來進行連接,而非使用與圖3所示埠310連接的圖1所示處理器110來進行連接。在方塊1010處,在方塊1010處,圖3所示橋接器335或圖3所示橋接器340可自請求辨識裝置。在方塊1015處,圖3所示橋接器335或圖3所示橋接器340可將圖3所示埠355或圖3所示埠360辨識為連接至自所述請求辨識的裝置。在方塊1020處,圖3所示橋接器335或圖3所示橋接器340可將所述請求傳輸至自所述請求辨識的裝置。最後,在方塊1025處,發送原始請求的裝置可向在請求中辨識的裝置提供資料。
圖11A至圖11B示出根據本揭露實施例的用於使與圖1所示多功能裝置135附接的裝置共享資料的實例性程序的流程圖。在圖11A中,在方塊1105處,一個裝置可使用圖4所示DMA 440或圖5A至圖5D所示DMA 550將資料寫入至圖4所示記憶體435或圖5A至圖5D所示記憶體545。作為另外一種選擇,在方塊1110處,一個裝置可使用圖4所示DMA 440或圖5A至圖5D所示DMA 550自圖4所示記憶體435或圖5A至圖5D所示記憶體545讀取資料。
作為另外一種選擇,在方塊1115(圖11B)處,一個裝置可將資料寫入至圖3所示緩衝器370中。在方塊1120處,圖3所示資料處理器375可處理圖3所示緩衝器370中的資料,以或許將所述資料置於可由其他裝置處理的格式。應注意,方塊1120是可選的,如由虛線1125所示。最後,在方塊1130處,第二裝置可自圖3所示緩衝器370讀取資料。
在圖6至圖11B中,示出本揭露的一些實施例。但熟習此項技術者將認識到,藉由改變方塊的次序、藉由省略方塊或者藉由包括圖式中未示出的鏈路,本揭露的其他實施例亦是可能的。無論是否明確闡述,流程圖的所有此種變型皆被視為本揭露的實施例。
本揭露的實施例包括一種多功能裝置。一或多個儲存裝置以及一或多個計算儲存單元可連接至所述多功能裝置。所述多功能裝置將所連接的儲存裝置及計算儲存單元以如同其為一個裝置的形式呈現給主機處理器,且暴露由所附接裝置提供的所有功能,從而提供優於將多個各別的裝置附接至主機處理器的技術優勢。
所述多功能裝置亦可包括緩衝器,從而允許資料在所附接裝置之間交換,而非通過主機處理器。所述多功能裝置亦可包括可用於轉換在所述裝置之間傳遞的資料的資料處理器。緩衝器的使用藉由自在所述裝置之間傳遞資料的過程移除主機處理器及主機記憶體而提供技術優勢,藉此可能加快資料傳送。
在儲存領域,資料處理是一種新興技術。固態驅動機(SSD)已成為現代IT基礎設施中持久資料儲存器的重要組件。資料正在由各種應用(例如物聯網(Internet of Things,IOT)、社會網路、自駕車,等等)產生。以高效的方式處理大量資料是重要的。此種資料處理可能除其他資源以外亦涉及例如CPU週期、記憶體頻寬、網路頻寬及功率等資源。
本揭露的實施例可包括圖1所示多功能裝置135,包括用於提供大量計算資源的計算儲存(Computational Storage)SSD架構。本揭露的實施例可使得將大量資料移動至中央處理單元(CPU)以供處理,且可使對昂貴系統資源(例如功率、CPU週期、網路頻寬及主機記憶體)的需求最小化。
計算儲存是能夠在SSD內部或附近達成高效資料處理的新興技術。本揭露的實施例能夠更高效地解決計算需求,而不需要不同的產品庫存計量單位(stock keeping unit,SKU)。圖1所示多功能裝置135可實施能夠達成可與應用的需求匹配的諸多不同電腦資源的架構。本揭露的實施例可包括用於計算儲存的彈性SSD架構。本揭露的實施例可使得用於計算資源的可插拔模組(pluggable module)能夠***至基礎SSD控制器板(base SSD controller board)中。本揭露的實施例可使得諸多不同計算資源的用途能夠除SSD控制器以外亦作為圖1所示多功能裝置135呈現給主機,所述計算資源為例如現場可程式化閘陣列(FPGA)、圖形處理單元(GPU)、張量處理單元(TPU)、神經處理單元(NPU)、網路介面卡(NIC)、中央處理單元(CPU)、系統晶片(SoC)及特殊應用積體電路(ASIC)。一個快速周邊組件互連(PCIe)實體功能(PF)可用於暴露用於儲存輸入/輸出(I/O)操作的NVMe控制器。另一PCIe PF可用於將所期望的計算資源暴露給主機。SSD控制器與計算資源之間的同級間資料傳送可在圖1所示多功能裝置135內部完成。此種架構可達成針對不同用例的最佳化計算儲存解決方案。
本揭露的一些實施例可包括用於計算儲存應用的多功能彈性SSD。本揭露的一些實施例可包括用於儲存I/O操作的一或多個PF(NVMe)。本揭露的一些實施例可包括一或多個PF計算資源。本揭露的一些實施例可使用連接件來附接計算資源,因此可在需要時替換所述計算資源。本揭露的一些實施例可包括SSD控制器與計算資源之間對主機透明的同級間資料傳送。本揭露的一些實施例可包括由通往計算資源的PCIe橋接器中的主機軟體而程式化的PCIe基址暫存器(Base Address Register,BAR)窗口或位址範圍,其可用作同級間(P2P)位址範圍。本揭露的一些實施例可使得主機及SSD控制器能夠併發地存取所述計算資源。本揭露的一些實施例可包括用於P2P直接記憶體存取(DMA)的主機及SSD控制器讀取請求標籤衝突管理。本揭露的一些實施例可包括併發的儲存I/O及計算交易。本揭露的一些實施例可容許客戶使用其自己針對所述計算資源的專屬介面。本揭露的一些實施例可包括並行PCIe至PCIe橋接器(Parallel PCIe-to-PCIe bridge),其可用於連接至SSD控制器及計算資源。本揭露的一些實施例可包括用於P2P資料傳送的計算資源PF BAR範圍。本揭露的一些實施例可包括諸多不同種類的計算資源:FPGA、ASIC、SoC、CPU、GPU、SoC、TPU、NPU、NIC等。
本揭露的實施例可提供一定數目的優點,例如計算儲存SSD的彈性;針對特定用例的最佳化解決方案;容許客戶使用其自己針對所述計算的專屬介面;及/或可容許與現有客戶系統軟體堆疊的簡單及快速整合。
一個實例性實施例包括彈性計算儲存裝置的系統及方法。新興的計算儲存技術渴望消除或減少向主機記憶體傳送大量資料以進行處理的情況。計算儲存的基本理念是處理SSD本身中或附近的資料,並僅將結果傳送至主機。計算資源的使用預期可降低功耗、潛時、CPU利用率、主機匯流排頻寬、主機記憶體頻寬及其他系統資源。
在本揭露的一些實施例中,為了在儲存裝置內部或附近達成資料處理,可使一或多個計算資源整合於儲存裝置中或位於儲存裝置附近。計算資源的一些實例可包括FPGA、ASIC、SoC、GPU、TPU、NPU、NIC等。不同的應用可能使用不同的計算資源。在本揭露的一些實施例中,在單一計算儲存裝置中實施二或更多個此種計算資源可能是成本有效的。在本揭露的一些實施例中,使計算儲存裝置或SKU的種類最小化可更高效。因此,本揭露的實施例可使用連接件來使得各種計算元件能夠整合於SSD中或位於SSD附近。圖1所示的此種多功能裝置135可允許基於需要來***各種計算資源。
圖1所示多功能裝置135可包括:PCIe端點,可通告二或更多個實體功能(PF);PCIe根埠,可對與其附接的端點(即,NVMe控制器端點及計算資源端點)進行配置;異步先進先出記憶體,可達成PCIe時鐘與本地FPGA時鐘之間的時鐘邊界交叉(clock boundary crossing);多工器/解多工器(PF),可使用PF辨識符值來進行操作,以轉送或合併來自PCIe橋接器-儲存器及PCIe橋接器-計算的PCIe封包;PCIe-PCIe橋接器-計算模組,可用於實行主機與計算資源之間的PCIe交易的通過:PCIe-PCIe橋接器-計算模組亦可實施與儲存裝置和計算資源之間的P2P資料傳送相關的特定功能;PCIe-PCIe橋接器-儲存模組,可用於實行主機與NVMe SSD控制器之間的PCIe交易的通過;PCIe-PCIe橋接器-儲存模組亦可實施與儲存裝置和計算資源之間的P2P資料傳送相關的特定功能;以及多工器/解多工器(TLP),可對主機-計算資源及SSD控制器-計算資源訊務量過渡層封包(TLP)進行多工及解多工。
本揭露的實施例可使得能夠使用圖1所示PCIe多功能裝置135將計算資源通告給主機。一個PCIe實體功能(PF0)可用於通告基於NVMe協定的儲存功能。單獨的實體功能(PF1)可用於通告計算資源的計算功能。在本揭露的其他實施例中,可存在用於儲存器(NVMe控制器)的二或更多個PF以及用於對多個計算元件進行整合的二或更多個PF。
在本揭露的一些實施例中,NVMe控制器以及計算資源可使用如圖3中所示的PCIe至PCIe橋接器連接至主機。FPGA可用於實施二或更多個PCIe至PCIe橋接器。每一PCIe橋接器可將在端點(EP)上接收的主機PCIe TLP傳遞至NVMe控制器及計算資源的根埠(RP)。
PCIe橋接器可實行該些功能中的一些或全部。在本揭露的一些實施例中,PCIe橋接器可將多個PCIe EP PF以及與NVMe控制器及/或計算資源匹配的配置通告給主機;在本揭露的一些實施例中,PCIe橋接器可實行NVMe控制器及/或計算資源端點的PCIe配置;在本揭露的一些實施例中,PCIe橋接器可將主機PCIe配置週期鏡像反映給NVMe控制器及/或計算資源PCIe端點;在本揭露的一些實施例中,PCIe橋接器可向/自主機及NVMe控制器或計算資源轉送PCIe TLP;在本揭露的一些實施例中,PCIe橋接器可針對通過的TLP來實行位址轉譯。
在圖1所示多功能裝置135的一些實施例中,可實行儲存裝置與計算資源之間的同級間資料移動。在本揭露的一些實施例中,用於計算資源的PCIe橋接器可向用於SSD控制器的PCIe橋接器提供用於資料移動的位址範圍。P2P位址範圍可為PCIe BAR窗口的一部分或者由PCIe橋接器中的主機軟體程式化的範圍。此位址範圍及其他相關資訊可被稱為P2P控制。
在本揭露的一些實施例中,PCIe橋接器-儲存器可獲取P2P控制資訊,且可截獲來自NVMe SSD控制器的落入P2P位址範圍內的所有TLP。然後,所截獲的P2P PCIe交易(記憶體寫入及記憶體讀取)可被呈現給根埠側上的多工器/解多工器模組。此多工器/解多工器模組可合併來自主機及來自PCIe橋接器-儲存器且目的地是計算資源的TLP。此模組可使得主機及PCIe橋接器-儲存器能夠併發地存取計算資源。對於可為投遞式交易(posted transaction)的寫入交易,簡單的TLP多工可達成所期望的功能。對於可為非投遞式(non-posted)的讀取請求,自計算資源返回的完成封包可被分開用於主機與PCIe橋接器-儲存器。此種分開可利用包含於每一讀取請求中的讀取請求標籤值來達成。然而,可能需要管理主機與PCIe橋接器-儲存器之間的衝突標籤值,且可使用多種方式來處置讀取請求標籤衝突。
在本揭露的一些實施例中,因應於來自PCIe橋接器-儲存器的記憶體讀取請求的完成封包可被分開並被發送至PCIe橋接器-儲存器,PCIe橋接器-儲存器又可將完成封包轉送至SSD控制器。多工器/解多工器模組可追蹤屬於主機讀取請求及PCIe橋接器-儲存器讀取請求的記憶體讀取請求標籤。本揭露的一些實施例可檢查讀取請求標籤是否不衝突。本揭露的一些實施例可檢查在任何給定時間處是否僅一個唯一標籤為現用。在本揭露的一些實施例中,圖1所示多功能裝置135可僅容許一個代理(主機或PCIe橋接器-儲存器)向計算資源發出讀取請求。在本揭露的其他實施例中,多工器/解多工器模組可追蹤現用讀取標籤,且可在表中對來自主機以及來自PCIe橋接器-儲存器的所有讀取請求實行查找。在本揭露的一些實施例中,若發現相同的標籤已為現用,則多工器/解多工器模組可使所述請求延遲,直至現用標籤被釋放為止。在本揭露的一些實施例中,若未發現衝突,則多工器/解多工器模組可容許多個併發讀取請求被發送至計算資源。在本揭露的一些實施例中,可將兩組讀取請求標籤值分配給主機與PCIe橋接器-儲存器,以使得可避免標籤衝突。在本揭露的一些實施例中,多工器/解多工器模組可對傳入的讀取請求標籤實行一個層級的間接取值或轉譯,進而使得不會發生標籤衝突。原始的輸入標籤及經轉譯的標籤值可保存於表中,且可在以下兩個方向上實行轉譯:對計算資源的讀取請求;以及自計算資源返回的完成。
本揭露的一些實施例使得SSD控制器能夠對計算資源記憶體實行直接記憶體存取(DMA)操作,而不會給主機CPU帶來負擔。本揭露的實施例可包括該些特徵中的一些或全部:用於計算儲存應用的多功能彈性SSD;用於儲存I/O操作的一或多個PF(NVMe);用於計算資源的一或多個PF;可使用連接件來附接計算資源,以使得可在需要時替換計算資源;SSD控制器與計算資源之間的同級間資料傳送可對主機透明;由PCIe橋接器中的主機軟體程式化且被用作P2P位址範圍的PCIe BAR窗口或位址範圍;主機與SSD控制器可併發地存取所述計算資源;用於P2P DMA的主機與SSD控制器之間的讀取請求標籤衝突管理;併發儲存I/O及計算交易;客戶可使用針對計算資源的專屬介面;用於與SSD控制器及計算資源連接的並行PCIe至PCIe橋接器;用於P2P資料傳送的計算資源PF BAR範圍;諸多不同種類的計算資源:FPGA、ASIC、SoC、CPU、GPU、TPU、NPU、NIC等。
以下論述旨在提供對可在其中實施本揭露的某些態樣的一或多個適合的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令(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. 本揭露的實施例包括一種多功能裝置,所述多功能裝置包括:
第一埠,與主機處理器進行通訊;
第二埠,與儲存裝置進行通訊;
第三埠,與計算儲存單元進行通訊;以及
電路,將來自主機處理器的訊息路由至儲存裝置或計算儲存單元中的至少一者。
聲明2. 本揭露的實施例包括根據聲明1的多功能裝置,其中所述多功能裝置是使用現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、中央處理單元(CPU)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)、神經處理單元(NPU)、網路介面卡(NIC)或系統晶片(SoC)中的至少一者來實施。
聲明3. 本揭露的實施例包括根據聲明1的多功能裝置,所述多功能裝置更包括與第二儲存裝置進行通訊的第四埠。
聲明4. 本揭露的實施例包括根據聲明1的多功能裝置,所述多功能裝置更包括與第二計算儲存單元進行通訊的第四埠。
聲明5. 本揭露的實施例包括根據聲明1的多功能裝置,其中所述電路包括多工器/解多工器,所述多工器/解多工器被配置成至少部分地基於訊息中的資料而將儲存裝置或計算儲存單元中的至少一者辨識為訊息的目的地。
聲明6. 本揭露的實施例包括根據聲明5的多功能裝置,其中所述電路更包括:
第一橋接器,連接至第二埠;以及
第二橋接器,連接至第三埠,
其中多工器/解多工器被配置成至少部分地基於訊息中的資料而將所述訊息路由至第一橋接器或第二橋接器中的至少一者。
聲明7. 本揭露的實施例包括根據聲明1的多功能裝置,其中:
第一埠包括端點;
第二埠包括第一根埠;並且
第三埠包括第二根埠。
聲明8. 本揭露的實施例包括根據聲明7的多功能裝置,其中:
第一根埠被配置成辨識儲存裝置的至少第一所暴露功能;
第二根埠被配置成辨識計算儲存單元的至少第二所暴露功能;並且
端點被配置成暴露至少第一所暴露功能及第二所暴露功能。
聲明9. 本揭露的實施例包括根據聲明8的多功能裝置,其中第一所暴露功能包括實體功能(PF)或虛擬功能(VF)中的至少一者。
聲明10. 本揭露的實施例包括根據聲明8的多功能裝置,其中第二所暴露功能包括PF或VF中的至少一者。
聲明11. 本揭露的實施例包括根據聲明1的多功能裝置,所述多功能裝置更包括異步緩衝器。
聲明12. 本揭露的實施例包括根據聲明11的多功能裝置,其中異步緩衝器被配置成使用與主機處理器、儲存裝置或計算儲存單元中的至少一者不同的時鐘週期來進行操作。
聲明13. 本揭露的實施例包括根據聲明11的多功能裝置,其中異步緩衝器連接至第一埠、第二埠或第三埠中的一者。
聲明14. 本揭露的實施例包括根據聲明11的多功能裝置,其中:
異步緩衝器連接至第一埠;並且
多功能裝置更包括:
第二異步緩衝器,連接至第二埠;以及
第三異步緩衝器,連接至第三埠。
聲明15. 本揭露的實施例包括根據聲明14的多功能裝置,其中:
異步緩衝器被配置成使用與主機處理器不同的時鐘週期來進行操作;
第二異步緩衝器被配置成使用與儲存裝置不同的時鐘週期來進行操作;並且
第三異步緩衝器被配置成使用與計算儲存單元不同的時鐘週期來進行操作。
聲明16. 本揭露的實施例包括根據聲明1的多功能裝置,其中儲存裝置包括快速非揮發性記憶體(NVMe)儲存裝置。
聲明17. 本揭露的實施例包括根據聲明16的多功能裝置,其中NVMe儲存裝置包括NVMe固態驅動機(SSD)。
聲明18. 本揭露的實施例包括根據聲明1的多功能裝置,其中第一埠被配置成連接至快速周邊組件互連(PCIe)匯流排。
聲明19. 本揭露的實施例包括根據聲明1的多功能裝置,其中多功能裝置被配置成使用一種協定與主機處理器、儲存裝置或計算儲存單元中的至少一者進行通訊,所述協定為PCIe、乙太網路、遠程直接記憶體存取(RDMA)、傳輸控制協定/網際網路協定(TCP/IP)、無限頻帶、串列附接小電腦系統介面(SCSI)(SAS)、網際網路SCSI(iSCSI)及串列AT附接(SATA)中的至少一者。
聲明20. 本揭露的實施例包括根據聲明1的多功能裝置,其中第二埠連接至連接件,所述連接件被配置成允許利用第二計算儲存單元替換計算儲存單元。
聲明21. 本揭露的實施例包括根據聲明1的多功能裝置,其中多功能裝置使得主機處理器與儲存裝置能夠併發地與計算儲存單元進行通訊。
聲明22. 本揭露的實施例包括根據聲明1的多功能裝置,所述多功能裝置更包括用於同級間通訊的第二電路。
聲明23. 本揭露的實施例包括根據聲明22的多功能裝置,其中第二電路包括用於儲存裝置與第二儲存裝置之間的通訊的第三電路。
聲明24. 本揭露的實施例包括根據聲明22的多功能裝置,其中第二電路包括用於計算儲存單元與第二計算儲存單元之間的通訊的第三電路。
聲明25. 本揭露的實施例包括根據聲明22的多功能裝置,其中第二電路包括用於儲存裝置與計算儲存單元之間的通訊的第三電路。
聲明26. 本揭露的實施例包括根據聲明25的多功能裝置,其中:
儲存裝置包括記憶體;並且
第二電路包括計算儲存單元中的直接記憶體定址電路,以存取所述記憶體。
聲明27. 本揭露的實施例包括根據聲明25的多功能裝置,其中
計算儲存單元包括記憶體;並且
第二電路包括儲存裝置中的直接記憶體定址電路,以存取所述記憶體。
聲明28. 本揭露的實施例包括根據聲明25的多功能裝置,其中第二電路包括用於儲存欲與計算儲存單元共享的資料的緩衝器。
聲明29. 本揭露的實施例包括根據聲明28的多功能裝置,其中:
多功能裝置更包括用於與第二計算儲存單元進行通訊的第四埠;並且
第二電路更包括用於欲與第二計算儲存單元共享的資料的第二緩衝器。
聲明30. 本揭露的實施例包括根據聲明28的多功能裝置,其中儲存裝置被配置成自緩衝器讀取資料或向緩衝器寫入資料。
聲明31. 本揭露的實施例包括根據聲明28的多功能裝置,其中計算儲存單元被配置成自緩衝器讀取資料或向緩衝器寫入資料。
聲明32. 本揭露的實施例包括根據聲明28的多功能裝置,其中第二電路更包括用於處理緩衝器中的資料的資料處理器。
聲明33. 本揭露的實施例包括根據聲明32的多功能裝置,其中資料處理器被配置成對由儲存裝置或計算儲存單元對緩衝器的存取進行排程。
聲明34. 本揭露的實施例包括根據聲明32的多功能裝置,其中資料處理器被配置成處理緩衝器中的資料以產生第二資料。
聲明35. 本揭露的實施例包括根據聲明34的多功能裝置,其中資料處理器被進一步配置成將第二資料儲存於緩衝器中。
聲明36. 本揭露的實施例包括根據聲明35的多功能裝置,其中資料處理器被進一步配置成自緩衝器刪除資料。
聲明37. 本揭露的實施例包括根據聲明34的多功能裝置,其中資料處理器被配置成對緩衝器中的資料進行轉碼以產生第二資料。
聲明38. 本揭露的實施例包括根據聲明25的多功能裝置,所述多功能裝置更包括被配置成使得計算儲存單元能夠與主機處理器及儲存裝置進行通訊的多工器/解多工器。
聲明39. 本揭露的實施例包括根據聲明38的多功能裝置,其中:
用於對訊息進行路由的電路包括:
第一橋接器,連接至第二埠;以及
第二橋接器,連接至第三埠;並且
多工器/解多工器連接至第一橋接器及第二橋接器。
聲明40. 本揭露的實施例包括根據聲明25的多功能裝置,其中主機處理器包括用於與儲存裝置進行通訊的第一位址範圍、用於與計算儲存單元進行通訊的第二位址範圍以及用於儲存裝置與計算儲存單元之間的同級間通訊的第三位址範圍。
聲明41. 本揭露的實施例包括一種方法,所述方法包括:
在多功能裝置的第一埠處自主機處理器接收請求;
自所述請求辨識第一裝置;
辨識多功能裝置的與第一裝置連接的第二埠;以及
經由多功能裝置的第二埠向第一裝置傳輸所述請求,
其中多功能裝置包括與第二裝置連接的第三埠,
第一裝置抽取自包括儲存裝置或計算儲存單元的集合;並且
第二裝置抽取自包括儲存裝置或計算儲存單元的集合。
聲明42. 本揭露的實施例包括根據聲明41的方法,其中儲存裝置包括快速非揮發性記憶體(NVMe)儲存裝置。
聲明43. 本揭露的實施例包括根據聲明42的方法,其中NVMe儲存裝置包括NVMe固態驅動機(SSD)。
聲明44. 本揭露的實施例包括根據聲明41的方法,其中多功能裝置是使用現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、中央處理單元(CPU)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)、神經處理單元(NPU)、網路介面卡(NIC)或系統晶片(SoC)中的至少一者來實施。
聲明45. 本揭露的實施例包括根據聲明41的方法,其中在多功能裝置的第一埠處自主機處理器接收請求包括在多功能裝置的第一埠處經由快速周邊組件互連(PCIe)匯流排自主機處理器接收請求。
聲明46. 本揭露的實施例包括根據聲明41的方法,其中多功能裝置被配置成使用一種協定與主機處理器或第一裝置中的至少一者進行通訊,所述協定包括PCIe、乙太網路、遠程直接記憶體存取(RDMA)、傳輸控制協定/網際網路協定(TCP/IP)、無限頻帶、串列附接小電腦系統介面(SCSI)(SAS)、網際網路SCSI(iSCSI)或串列AT附接(SATA)中的至少一者。
聲明47. 本揭露的實施例包括根據聲明41的方法,其中在多功能裝置的第一埠處自主機處理器接收請求包括使用一種協定在多功能裝置的第一埠處自主機處理器接收請求,所述協定包括PCIe、乙太網路、RDMA、TCP/IP、無限頻帶、SAS、iSCSI或SATA中的至少一者。
聲明48. 本揭露的實施例包括根據聲明41的方法,其中經由多功能裝置的第二埠向第一裝置傳輸請求包括使用一種協定經由多功能裝置的第二埠向第一裝置傳輸請求,所述協定包括PCIe、乙太網路、RDMA、TCP/IP、無限頻帶、SAS、iSCSI或SATA中的至少一者。
聲明49. 本揭露的實施例包括根據聲明41的方法,所述方法更包括:
在多功能裝置的第一埠處自主機處理器接收第二請求;
自第二請求辨識第三裝置;
辨識多功能裝置的與第三裝置連接的第四埠;以及
經由多功能裝置的第四埠向第三裝置傳輸第二請求。
聲明50. 本揭露的實施例包括根據聲明49的方法,其中第三裝置抽取自包括第二儲存裝置或第二計算儲存單元的集合。
聲明51. 本揭露的實施例包括根據聲明41的方法,其中:
在多功能裝置的第一埠處自主機處理器接收請求包括在多功能裝置的端點處自主機處理器接收請求;
經由多功能裝置的第二埠向第一裝置傳輸請求包括經由多功能裝置的根埠向第一裝置傳輸請求。
聲明52. 本揭露的實施例包括根據聲明51的方法,其中:
第三埠包括多功能裝置的第二根埠;並且
所述方法更包括:
經由根埠來辨識第一裝置的至少第一所暴露功能;
經由第二根埠來辨識第二裝置的至少第二所暴露功能;以及
在多功能裝置的端點處將至少第一所暴露功能及第二所暴露功能暴露給主機處理器。
聲明53. 本揭露的實施例包括根據聲明52的方法,其中第一所暴露功能包括實體功能(PF)或虛擬功能(VF)中的至少一者。
聲明54. 本揭露的實施例包括根據聲明52的方法,其中第二所暴露功能包括PF或VF中的至少一者。
聲明55. 本揭露的實施例包括根據聲明41的方法,其中在多功能裝置的第一埠處自主機處理器接收請求包括將請求儲存於多功能裝置的與第一埠連接的異步緩衝器中。
聲明56. 本揭露的實施例包括根據聲明55的方法,其中多功能裝置的異步緩衝器被配置成使用與主機處理器不同的時鐘週期來進行操作。
聲明57. 本揭露的實施例包括根據聲明55的方法,其中經由多功能裝置的第二埠向第一裝置傳輸請求包括將請求儲存於多功能裝置的與第二埠連接的第二異步緩衝器中。
聲明58. 本揭露的實施例包括根據聲明57的方法,其中多功能裝置的第二異步緩衝器被配置成使用與第一裝置不同的時鐘週期來進行操作。
聲明59. 本揭露的實施例包括根據聲明58的方法,其中多功能裝置包括與第三埠連接的第三異步緩衝器,第三異步緩衝器被配置成使用與第二裝置不同的時鐘週期來進行操作。
聲明60. 本揭露的實施例包括根據聲明41的方法,其中:
第一裝置包括第一計算儲存單元;並且
所述方法更包括利用第二計算儲存單元來替換第一計算儲存單元。
聲明61. 本揭露的實施例包括根據聲明41的方法,所述方法更包括:
在多功能裝置的第三埠處自第二裝置接收第二請求;
自第二請求辨識第一裝置;
辨識多功能裝置的與第一裝置連接的第二埠;以及
經由多功能裝置的第二埠向第一裝置傳輸第二請求。
聲明62. 本揭露的實施例包括根據聲明61的方法,其中經由多功能裝置的第二埠向第一裝置傳輸第二請求包括與經由多功能裝置的第二埠向第一裝置傳輸請求併發地經由多功能裝置的第二埠向第一裝置傳輸第二請求。
聲明63. 本揭露的實施例包括根據聲明41的方法,所述方法更包括自第二裝置向第一裝置提供資料。
聲明64. 本揭露的實施例包括根據聲明63的方法,其中:
第一裝置包括第一儲存裝置;
第二裝置包括第二儲存裝置。
聲明65. 本揭露的實施例包括根據聲明63的方法,其中:
第一裝置包括第一計算儲存單元;
第二裝置包括第二計算儲存單元。
聲明66. 本揭露的實施例包括根據聲明63的方法,其中:
第一裝置包括儲存裝置;
第二裝置包括計算儲存單元。
聲明67. 本揭露的實施例包括根據聲明66的方法,其中:
儲存裝置包括記憶體;並且
自第二裝置向第一裝置提供資料包括由計算儲存單元使用直接記憶體定址電路自儲存裝置的記憶體讀取資料。
聲明68. 本揭露的實施例包括根據聲明66的方法,其中:
計算儲存單元包括記憶體;並且
自第二裝置向第一裝置提供資料包括由儲存裝置使用直接記憶體定址電路將資料寫入至計算儲存單元的記憶體中。
聲明69. 本揭露的實施例包括根據聲明66的方法,其中自第二裝置向第一裝置提供資料包括:
由第一裝置將資料寫入至緩衝器中;以及
由第二裝置自緩衝器讀取資料。
聲明70. 本揭露的實施例包括根據聲明69的方法,所述方法更包括:
由第一裝置將第二資料寫入至第二緩衝器中;以及
由與多功能裝置的第四埠連接的第三裝置自第二緩衝器讀取第二資料。
聲明71. 本揭露的實施例包括根據聲明69的方法,其中:
所述方法更包括使用資料處理器來處理緩衝器中的資料以產生第二資料;以及
由第二裝置自緩衝器讀取資料包括由第二裝置自緩衝器讀取第二資料。
聲明72. 本揭露的實施例包括根據聲明71的方法,其中使用資料處理器來處理緩衝器中的資料以產生第二資料包括至少部分地基於來自主機處理器的命令而使用資料處理器來處理緩衝器中的資料以產生第二資料。
聲明73. 本揭露的實施例包括根據聲明72的方法,其中使用資料處理器來處理緩衝器中的資料以產生第二資料更包括至少部分地基於正在產生的第二資料來通知主機處理器。
聲明74. 本揭露的實施例包括根據聲明69的方法,其中:
由第一裝置將資料寫入至緩衝器中包括由第一裝置至少部分地基於來自主機處理器的第一命令而將資料寫入至緩衝器中;以及
由第二裝置自緩衝器讀取資料包括由第二裝置至少部分地基於來自主機處理器的第二命令而自緩衝器讀取資料。
聲明75. 本揭露的實施例包括根據聲明74的方法,其中:
由第一裝置將資料寫入至緩衝器中更包括至少部分地基於被寫入至緩衝器中的第二資料來通知主機處理器;以及
由第二裝置自緩衝器讀取資料更包括至少部分地基於自緩衝器讀取的第二資料來通知主機處理器。
聲明76. 本揭露的實施例包括根據聲明66的方法,其中自第二裝置向第一裝置提供資料包括在與同級間通訊相關聯的位址範圍中自主機處理器接收命令。
聲明77. 本揭露的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得:
在多功能裝置的第一埠處自主機處理器接收請求;
自請求辨識第一裝置;
辨識多功能裝置的與第一裝置連接的第二埠;以及
經由多功能裝置的第二埠向第一裝置傳輸請求,
其中多功能裝置包括與第二裝置連接的第三埠,
第一裝置抽取自包括儲存裝置或計算儲存單元的集合;並且
第二裝置抽取自包括儲存裝置或計算儲存單元的集合。
聲明78. 本揭露的實施例包括根據聲明77的物品,其中儲存裝置包括快速非揮發性記憶體(NVMe)儲存裝置。
聲明79. 本揭露的實施例包括根據聲明78的物品,其中NVMe儲存裝置包括NVMe固態驅動機(SSD)。
聲明80. 本揭露的實施例包括根據聲明77的物品,其中多功能裝置是使用現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、中央處理單元(CPU)、圖形處理單元(GPU)、通用GPU(GPGPU)、張量處理單元(TPU)、神經處理單元(NPU)或網路介面卡(NIC)、系統晶片(SoC)中的至少一者來實施。
聲明81. 本揭露的實施例包括根據聲明77的物品,其中在多功能裝置的第一埠處自主機處理器接收請求包括在多功能裝置的第一埠處經由快速周邊組件互連(PCIe)匯流排自主機處理器接收請求。
聲明82. 本揭露的實施例包括根據聲明77的物品,其中多功能裝置被配置成使用一種協定與主機處理器或第一裝置中的至少一者進行通訊,所述協定包括PCIe、乙太網路、遠程直接記憶體存取(RDMA)、傳輸控制協定/網際網路協定(TCP/IP)、無限頻帶、串列附接小電腦系統介面(SCSI)(SAS)、網際網路SCSI(iSCSI)或串列AT附接(SATA)中的至少一者。
聲明83. 本揭露的實施例包括根據聲明77的物品,其中在多功能裝置的第一埠處自主機處理器接收請求包括使用一種協定在多功能裝置的第一埠處自主機處理器接收請求,所述協定包括PCIe、乙太網路、RDMA、TCP/IP、無限頻帶、SAS、iSCSI或SATA中的至少一者。
聲明84. 本揭露的實施例包括根據聲明77的物品,其中經由多功能裝置的第二埠向第一裝置傳輸請求包括使用一種協定經由多功能裝置的第二埠向第一裝置傳輸請求,所述協定包括PCIe、乙太網路、RDMA、TCP/IP、無限頻帶、SAS、iSCSI或SATA中的至少一者。
聲明85. 本揭露的實施例包括根據聲明77的物品,所述非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得:
在多功能裝置的第一埠處自主機處理器接收第二請求;
自第二請求辨識第三裝置;
辨識多功能裝置的與第三裝置連接的第四埠;以及
經由多功能裝置的第四埠向第三裝置傳輸第二請求。
聲明86. 本揭露的實施例包括根據聲明85的物品,其中第三裝置抽取自包括第二儲存裝置或第二計算儲存單元的集合。
聲明87. 本揭露的實施例包括根據聲明77的物品,其中:
在多功能裝置的第一埠處自主機處理器接收請求包括在多功能裝置的端點處自主機處理器接收請求;
經由多功能裝置的第二埠向第一裝置傳輸請求包括經由多功能裝置的根埠向第一裝置傳輸請求。
聲明88. 本揭露的實施例包括根據聲明87的物品,其中:
第三埠包括多功能裝置的第二根埠;並且
非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得:
經由根埠來辨識第一裝置的至少第一所暴露功能;
經由第二根埠來辨識第二裝置的至少第二所暴露功能;以及
在多功能裝置的端點處將至少第一所暴露功能及第二所暴露功能暴露給主機處理器。
聲明89. 本揭露的實施例包括根據聲明88的物品,其中第一所暴露功能包括實體功能(PF)或虛擬功能(VF)中的至少一者。
聲明90. 本揭露的實施例包括根據聲明88的物品,其中第二所暴露功能包括PF或VF中的至少一者。
聲明91. 本揭露的實施例包括根據聲明77的物品,其中在多功能裝置的第一埠處自主機處理器接收請求包括將請求儲存於多功能裝置的與第一埠連接的異步緩衝器中。
聲明92. 本揭露的實施例包括根據聲明91的物品,其中多功能裝置的異步緩衝器被配置成使用與主機處理器不同的時鐘週期來進行操作。
聲明93. 本揭露的實施例包括根據聲明91的物品,其中經由多功能裝置的第二埠向第一裝置傳輸請求包括將請求儲存於多功能裝置的與第二埠連接的第二異步緩衝器中。
聲明94. 本揭露的實施例包括根據聲明93的物品,其中多功能裝置的第二異步緩衝器被配置成使用與第一裝置不同的時鐘週期來進行操作。
聲明95. 本揭露的實施例包括根據聲明94的物品,其中多功能裝置包括與第三埠連接的第三異步緩衝器,所述第三異步緩衝器被配置成使用與第二裝置不同的時鐘週期來進行操作。
聲明96. 本揭露的實施例包括根據聲明77的物品,其中:
第一裝置包括第一計算儲存單元;並且
非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得利用第二計算儲存單元來替換第一計算儲存單元。
聲明97. 本揭露的實施例包括根據聲明77的物品,非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得:
在多功能裝置的第三埠處自第二裝置接收第二請求;
自第二請求辨識第一裝置;
辨識多功能裝置的與第一裝置連接的第二埠;以及
經由多功能裝置的第二埠向第一裝置傳輸第二請求。
聲明98. 本揭露的實施例包括根據聲明97的物品,其中經由多功能裝置的第二埠向第一裝置傳輸第二請求包括與經由多功能裝置的第二埠向第一裝置傳輸請求併發地經由多功能裝置的第二埠向第一裝置傳輸第二請求。
聲明99. 本揭露的實施例包括根據聲明77的物品,非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得自第二裝置向第一裝置提供資料。
聲明100. 本揭露的實施例包括根據聲明99的物品,其中:
第一裝置包括第一儲存裝置;
第二裝置包括第二儲存裝置。
聲明101. 本揭露的實施例包括根據聲明99的物品,其中:
第一裝置包括第一計算儲存單元;
第二裝置包括第二計算儲存單元。
聲明102. 本揭露的實施例包括根據聲明99的物品,其中:
第一裝置包括儲存裝置;
第二裝置包括計算儲存單元。
聲明103. 本揭露的實施例包括根據聲明102的物品,其中:
儲存裝置包括記憶體;並且
自第二裝置向第一裝置提供資料包括由計算儲存單元使用直接記憶體定址電路自儲存裝置的記憶體讀取資料。
聲明104. 本揭露的實施例包括根據聲明102的物品,其中:
計算儲存單元包括記憶體;並且
自第二裝置向第一裝置提供資料包括由儲存裝置使用直接記憶體定址電路將資料寫入至計算儲存單元的記憶體中。
聲明105. 本揭露的實施例包括根據聲明102的物品,其中自第二裝置向第一裝置提供資料包括:
由第一裝置將資料寫入至緩衝器中;以及
由第二裝置自緩衝器讀取資料。
聲明106. 本揭露的實施例包括根據聲明105的物品,非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得:
由第一裝置將第二資料寫入至第二緩衝器中;以及
由與多功能裝置的第四埠連接的第三裝置自第二緩衝器讀取第二資料。
聲明107. 本揭露的實施例包括根據聲明105的物品,其中:
非暫時性儲存媒體上儲存有進一步的指令,當由機器執行時,所述指令使得使用資料處理器來處理緩衝器中的資料以產生第二資料;並且
由第二裝置自緩衝器讀取資料包括由第二裝置自緩衝器讀取第二資料。
聲明108. 本揭露的實施例包括根據聲明107的物品,其中使用資料處理器來處理緩衝器中的資料以產生第二資料包括至少部分地基於來自主機處理器的命令而使用資料處理器來處理緩衝器中的資料以產生第二資料。
聲明109. 本揭露的實施例包括根據聲明108的物品,其中使用資料處理器來處理緩衝器中的資料以產生第二資料更包括至少部分地基於正在產生的第二資料來通知主機處理器。
聲明110. 本揭露的實施例包括根據聲明105的物品,其中:
由第一裝置將資料寫入至緩衝器中包括由第一裝置至少部分地基於來自主機處理器的第一命令而將資料寫入至緩衝器中;以及
由第二裝置自緩衝器讀取資料包括由第二裝置至少部分地基於來自主機處理器的第二命令而自緩衝器讀取資料。
聲明111. 本揭露的實施例包括根據聲明110的物品,其中:
由第一裝置將資料寫入至緩衝器中更包括至少部分地基於被寫入至緩衝器中的第二資料來通知主機處理器;並且
由第二裝置自緩衝器讀取資料更包括至少部分地基於自緩衝器讀取的第二資料來通知主機處理器。
聲明112. 本揭露的實施例包括根據聲明102的物品,其中自第二裝置向第一裝置提供資料包括在與同級間通訊相關聯的位址範圍中自主機處理器接收命令。
因此,慮及本文中所述的實施例的各種各樣的排列,此詳細說明及隨附材料僅旨在為例示性的,且不應被視為限制本揭露的範圍。因此,所主張保護的揭露內容是所有可落入以下申請專利範圍及其等效內容的範圍及精神內的此種潤飾。
105:機器/主機
110、530:處理器
115、435、545:記憶體
120、505:儲存裝置
125:記憶體控制器
130:裝置驅動器
135:多功能裝置/PCIe多功能裝置
140:計算儲存單元/計算裝置
205:時鐘
210:網路連接件
215:匯流排
220:使用者介面
225:輸入/輸出(I/O)引擎
305、315、320:連接件
310:端點/埠
325、345、350:異步緩衝器
330、365:多工器/解多工器
335、340:橋接器
355、360:根埠/埠
370:緩衝器
375:資料處理器
405:主機介面層
410:控制器/SSD控制器
415-1、415-2、415-3、415-4、415-5、415-6、415-7、415-8:快閃記憶體晶片
420-1、420-2、420-3、420-4:通道
425:快閃記憶體控制器
430:快閃轉譯層
440、550:直接記憶體定址(DMA)
510-1、510-2、510-4、510-5:計算裝置
515:控制器
520-1、520-2、520-3、520-4:儲存元件/儲存器
525、540:主機介面
535-1、535-2:服務
555:組構
560:網路介面
565:代理儲存器存取
570:陣列控制器
605、610、615、620、705、710、715、805、810、815、820、905、910、1005、1010、1015、1020、1025、1105、1110、1115、1120、1130:方塊
1125:虛線
以下闡述的圖式是關於可如何實施本揭露的實施例的實例,且不旨在限制本揭露的實施例。本揭露的各別實施例可包括未在特定圖中示出的元件及/或可省略特定圖中示出的元件。所述圖式旨在提供例示且可能不按比例繪製。
圖1示出根據本揭露實施例的機器,所述機器包括用於支援模組式儲存裝置及/或計算儲存單元的多功能裝置。
圖2示出根據本揭露實施例的圖1所示機器的細節。
圖3示出根據本揭露實施例的圖1所示多功能裝置的細節。
圖4示出根據本揭露實施例的圖1所示儲存裝置的細節。
圖5A示出根據本揭露實施例的圖1所示計算儲存單元的第一實例性實施方式。
圖5B示出根據本揭露實施例的圖1所示計算儲存單元的第二實例性實施方式。
圖5C示出根據本揭露實施例的圖1所示計算儲存單元的第三實例性實施方式。
圖5D示出根據本揭露實施例的圖1所示計算儲存單元的第四實例性實施方式。
圖6示出根據本揭露實施例的用於使用圖1所示多功能裝置向圖1所示儲存裝置及/或圖1所示計算儲存單元遞送請求的實例性程序的流程圖。
圖7示出根據本揭露實施例的用於使用圖1所示多功能裝置來辨識圖1所示儲存裝置及/或圖1所示計算儲存單元的所暴露功能的實例性程序的流程圖。
圖8示出根據本揭露實施例的用於使用圖3所示異步緩衝器的實例性程序的流程圖。
圖9示出根據本揭露實施例的用於利用另一計算儲存單元來替換圖1所示計算儲存單元的實例性程序的流程圖。
圖10示出根據本揭露實施例的用於使用圖1所示多功能裝置在與圖1所示多功能裝置附接的裝置之間遞送請求的實例性程序的流程圖。
圖11A示出根據本揭露實施例的用於使與圖1所示多功能裝置附接的裝置共享資料的實例性程序的流程圖。
圖11B是根據本揭露實施例的用於使與圖1所示多功能裝置附接的裝置共享資料的實例性程序的圖11A所示流程圖的延續。
135:多功能裝置/PCIe多功能裝置
305、315、320:連接件
310:端點/埠
325、345、350:異步緩衝器
330、365:多工器/解多工器
335、340:橋接器
355、360:根埠/埠
370:緩衝器
375:資料處理器
Claims (20)
- 一種多功能裝置,包括: 第一埠,與主機處理器進行通訊; 第二埠,與儲存裝置進行通訊; 第三埠,與計算儲存單元進行通訊;以及 電路,將來自所述主機處理器的訊息路由至所述儲存裝置或所述計算儲存單元中的至少一者。
- 如請求項1所述的多功能裝置,其中所述電路包括多工器/解多工器,所述多工器/解多工器被配置成至少部分地基於所述訊息中的資料來將所述儲存裝置或所述計算儲存單元中的所述至少一者辨識為所述訊息的目的地。
- 如請求項2所述的多功能裝置,其中所述電路更包括: 第一橋接器,連接至所述第二埠;以及 第二橋接器,連接至所述第三埠, 其中所述多工器/解多工器被配置成至少部分地基於所述訊息中的所述資料來將所述訊息路由至所述第一橋接器或所述第二橋接器中的至少一者。
- 如請求項1所述的多功能裝置,其中: 所述第一埠包括端點, 所述第二埠包括第一根埠,並且 所述第三埠包括第二根埠。
- 如請求項4所述的多功能裝置,其中: 所述第一根埠被配置成辨識所述儲存裝置的至少第一所暴露功能, 所述第二根埠被配置成辨識所述計算儲存單元的至少第二所暴露功能,並且 所述端點被配置成暴露至少所述第一所暴露功能及所述第二所暴露功能。
- 如請求項1所述的多功能裝置,更包括用於同級間通訊的第二電路。
- 如請求項6所述的多功能裝置,其中所述第二電路包括用於所述儲存裝置與所述計算儲存單元之間的通訊的第三電路。
- 如請求項7所述的多功能裝置,其中所述第二電路包括用於儲存欲與所述計算儲存單元共享的資料的緩衝器。
- 如請求項7所述的多功能裝置,更包括多工器/解多工器,所述多工器/解多工器被配置成使得所述計算儲存單元能夠與所述主機處理器及所述儲存裝置進行通訊。
- 如請求項1所述的多功能裝置,其中所述計算儲存單元包括網路介面卡(NIC)。
- 如請求項1所述的多功能裝置,其中所述多功能裝置被配置成使用協定與所述主機處理器、所述儲存裝置或所述計算儲存單元中的至少一者進行通訊,所述協定包括快速周邊組件互連(PCIe)、乙太網路、遠程直接記憶體存取(RDMA)、傳輸控制協定/網際網路協定(TCP/IP)、無限頻帶、串列附接小電腦系統介面(SCSI)(SAS)、網際網路小電腦系統介面(iSCSI)或串列先進技術附接(SATA)中的至少一者。
- 一種方法,包括: 在多功能裝置的第一埠處自主機處理器接收請求; 自所述請求辨識第一裝置; 辨識所述多功能裝置的與所述第一裝置連接的第二埠;以及 經由所述多功能裝置的所述第二埠向所述第一裝置傳輸所述請求, 其中所述多功能裝置包括與第二裝置連接的第三埠, 所述第一裝置抽取自包括儲存裝置或計算儲存單元的集合;以及 所述第二裝置抽取自包括所述儲存裝置或所述計算儲存單元的所述集合。
- 如請求項12所述的方法,其中: 在所述多功能裝置的所述第一埠處自所述主機處理器接收所述請求包括在所述多功能裝置的端點處自所述主機處理器接收所述請求; 經由所述多功能裝置的所述第二埠向所述第一裝置傳輸所述請求包括經由所述多功能裝置的根埠向所述第一裝置傳輸所述請求。
- 如請求項13所述的方法,其中: 所述第三埠包括所述多功能裝置的第二根埠,並且 所述方法更包括: 經由所述根埠來辨識所述第一裝置的至少第一所暴露功能; 經由所述第二根埠來辨識所述第二裝置的至少第二所暴露功能;以及 在所述多功能裝置的所述端點處將至少所述第一所暴露功能及所述第二所暴露功能暴露給所述主機處理器。
- 如請求項12所述的方法,更包括自所述第二裝置向所述第一裝置提供資料。
- 如請求項15所述的方法,其中: 所述第一裝置包括所述儲存裝置, 所述第二裝置包括所述計算儲存單元。
- 如請求項16所述的方法,其中自所述第二裝置向所述第一裝置提供所述資料包括: 由所述第一裝置將所述資料寫入至緩衝器中,以及 由所述第二裝置自所述緩衝器讀取所述資料。
- 如請求項17所述的方法,其中: 所述方法更包括使用資料處理器來處理所述緩衝器中的所述資料以產生第二資料;以及 由所述第二裝置自所述緩衝器讀取所述資料包括由所述第二裝置自所述緩衝器讀取所述第二資料。
- 一種物品,包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得: 在多功能裝置的第一埠處自主機處理器接收請求; 自所述請求辨識第一裝置; 辨識所述多功能裝置的與所述第一裝置連接的第二埠;以及 經由所述多功能裝置的所述第二埠向所述第一裝置傳輸所述請求, 其中所述多功能裝置包括與第二裝置連接的第三埠, 所述第一裝置抽取自包括儲存裝置或計算儲存單元的集合;以及 所述第二裝置抽取自包括所述儲存裝置或所述計算儲存單元的所述集合。
- 如請求項19所述的物品,所述非暫時性儲存媒體上儲存有進一步的指令,當由所述機器執行時,所述指令使得自所述第二裝置向所述第一裝置提供資料。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163232631P | 2021-08-12 | 2021-08-12 | |
US63/232,631 | 2021-08-12 | ||
US17/669,351 US20240211418A9 (en) | 2019-06-24 | 2022-02-10 | Multi-function flexible computational storage device |
US17/669,351 | 2022-02-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202341347A true TW202341347A (zh) | 2023-10-16 |
Family
ID=83115444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111129128A TW202341347A (zh) | 2021-08-12 | 2022-08-03 | 多功能裝置、操作其的方法及用於其的物品 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP4134830B1 (zh) |
KR (1) | KR20230024843A (zh) |
CN (1) | CN115705306A (zh) |
TW (1) | TW202341347A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117744118B (zh) * | 2023-12-21 | 2024-05-28 | 北京星驰致远科技有限公司 | 一种基于fpga的高速加密存储装置和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628353B2 (en) * | 2014-03-08 | 2020-04-21 | Diamanti, Inc. | Enabling use of non-volatile media-express (NVMe) over a network |
US10509758B1 (en) * | 2017-09-28 | 2019-12-17 | Amazon Technologies, Inc. | Emulated switch with hot-plugging |
US11809799B2 (en) * | 2019-06-24 | 2023-11-07 | Samsung Electronics Co., Ltd. | Systems and methods for multi PF emulation using VFs in SSD controller |
-
2022
- 2022-08-03 TW TW111129128A patent/TW202341347A/zh unknown
- 2022-08-03 EP EP22188425.7A patent/EP4134830B1/en active Active
- 2022-08-05 KR KR1020220097877A patent/KR20230024843A/ko unknown
- 2022-08-10 CN CN202210954403.4A patent/CN115705306A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4134830A1 (en) | 2023-02-15 |
EP4134830B1 (en) | 2024-07-03 |
CN115705306A (zh) | 2023-02-17 |
KR20230024843A (ko) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI770358B (zh) | 主機系統及其方法和加速模組 | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
US10257273B2 (en) | Systems, methods and devices for RDMA read/write operations | |
TWI777072B (zh) | 主機、非揮發性記憶體快速固態驅動器及儲存服務的方法 | |
US8433770B2 (en) | Combined local and network storage interface | |
US7849260B2 (en) | Storage controller and control method thereof | |
CN113253919A (zh) | 多功能存储装置和处理消息的方法 | |
US10564898B2 (en) | System and method for storage device management | |
KR20220061771A (ko) | 직접 메모리 억세스 엔진을 포함하는 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작방법 | |
US7562111B2 (en) | Multi-processor architecture with high capacity I/O | |
TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
TW202341347A (zh) | 多功能裝置、操作其的方法及用於其的物品 | |
US11029847B2 (en) | Method and system for shared direct access storage | |
US7493404B2 (en) | Apparatus and method for providing transparent sharing of channel resources by multiple host machines utilizing mixed mode block and file protocols | |
US20230198740A1 (en) | Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device | |
US20230195320A1 (en) | Systems and methods for integrating a compute resource with a storage device | |
US7409486B2 (en) | Storage system, and storage control method | |
KR20230016110A (ko) | 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법 | |
WO2017072868A1 (ja) | ストレージ装置 | |
JP2009199428A (ja) | ストレージ装置及びアクセス命令送信方法 | |
US20230051553A1 (en) | Multi-function flexible computational storage device | |
EP4332747A1 (en) | Systems and methods for integrating a compute resource with a storage device | |
TW202424719A (zh) | 多功能裝置和多功能裝置的整合方法 | |
TW202411867A (zh) | 用於整合全同態加密(fhe)與儲存裝置的多功能裝置及方法 | |
CN117648203A (zh) | 多功能装置和用于多功能装置的方法 |