TW202042059A - 用於將應用函數卸載到裝置的系統和方法 - Google Patents
用於將應用函數卸載到裝置的系統和方法 Download PDFInfo
- Publication number
- TW202042059A TW202042059A TW108142424A TW108142424A TW202042059A TW 202042059 A TW202042059 A TW 202042059A TW 108142424 A TW108142424 A TW 108142424A TW 108142424 A TW108142424 A TW 108142424A TW 202042059 A TW202042059 A TW 202042059A
- Authority
- TW
- Taiwan
- Prior art keywords
- bridge core
- host
- cores
- bridge
- variable parameters
- Prior art date
Links
- 230000006870 function Effects 0.000 title claims description 100
- 238000000034 method Methods 0.000 title claims description 27
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000012546 transfer Methods 0.000 claims abstract description 8
- 230000006855 networking Effects 0.000 claims description 12
- 239000000872 buffer Substances 0.000 claims description 11
- 239000007787 solid Substances 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 5
- 230000007723 transport mechanism Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/445—Program loading or initiating
- G06F9/44594—Unloading
-
- 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
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
Abstract
本發明提供一種系統,包含:主機裝置;儲存裝置,包含嵌入式處理器;以及橋接器內核裝置,包含橋接器內核硬體和橋接器內核韌體,其中橋接器內核裝置配置成從主機裝置接收多個變數參數且將多個變數參數傳輸到嵌入式處理器以用於資料處理。
Description
根據本揭露的實施例的一或多個方面涉及一種用於將應用函數卸載到裝置的系統和方法。
在現代資訊技術(information technology;IT)基礎設施中,可通過各種裝置和工藝產生相對大量的資料。這些資料產生器的一些實例包含智慧裝置(例如,iPhone、iPad等)、自動駕駛車輛、社交網路以及物聯網(internet of things;IOT)裝置。正在開發人工智慧(Artificial intelligence;AI)和機器學習(machine learning;ML)演算法以分析和使用收集到的資料,以實現更高的應用效率和生產率。鑒於IT基礎設施的近期發展,可能需要處理和分析資料。
背景技術章節中的以上資訊僅用於增進對所述技術的背景的理解,且因此所述資訊不應理解為對現有技術的存在性或相關性的承認。
[本揭露的目標]
本揭露的實施例的實例可提供一種用於將應用函數卸載到裝置的系統和方法。
本揭露的實例實施例的方面涉及一種用於將應用函數卸載到裝置的系統和方法。根據本揭露的一些實例實施例,一種系統包含:主機裝置;儲存裝置,包含嵌入式處理器;以及橋接器內核裝置,包含橋接器內核硬體和橋接器內核韌體,其中橋接器內核裝置配置成從主機裝置接收多個變數參數且將多個變數參數傳輸到嵌入式處理器以用於資料處理。
在一些實施例中,橋接器內核裝置的實現對主機裝置透明,其中橋接器內核裝置對主機裝置與橋接器內核裝置之間的輸送機構不可知,其中輸送機構是快速周邊元件連接(peripheral component interconnect express;PCIe)或以太網路連接中的一個。在一些實施例中,儲存裝置是固態驅動器(solid state drive;SSD),且嵌入式處理器是現場可程式化閘陣列(field programmable gate array;FPGA)處理器或SSD控制器或分立輔助處理器,其中:嵌入式處理器包含配置成在嵌入式處理器上執行的經卸載應用函數,嵌入式處理器進一步包含橋接器內核韌體,橋接器內核裝置將從主機裝置接收到的多個變數參數傳輸到經卸載應用函數,且橋接器內核裝置提取從主機裝置的主機暫存器介面接收到的多個變數參數。
在一些實施例中,儲存裝置進一步包含先進先出(first in, first out;FIFO)暫存器和動態隨機存取記憶體(dynamic random-access memory;DRAM),DRAM包含多個資料緩衝器和交握區以儲存從主機裝置接收到的多個變數參數,且其中FIFO暫存器和DRAM以通訊方式耦合到橋接器內核硬體。在一些實施例中,FIFO暫存器配置成將多個變數參數傳送到併入有經卸載應用函數的嵌入式處理器以用於資料處理。在一些實施例中,橋接器內核硬體設定成將從主機裝置接收到的多個變數參數暫時儲存到DRAM的交握區中。在一些實施例中,橋接器內核裝置配置成充當在主機裝置的客戶應用模組上運行的主機應用的代理,其中主機應用對在何處或如何實現經卸載應用函數不可知。
在一些實施例中,主機裝置包含客戶應用模組和開放計算語言(open computing language;OpenCL)模組,且其中主機裝置配置成與儲存裝置建立快速周邊元件連接(PCIe)或以太網路連接。在一些實施例中,橋接器內核硬體包含多個硬體內核且橋接器內核韌體包含多個軟體內核,多個軟體內核配置成在嵌入式處理器上運行,其中在主機裝置的客戶應用模組上運行的主機應用配置成通過OpenCL模組與多個軟體內核和/或硬體內核介接。在一些實施例中,橋接器內核裝置配置成基於成本函數從多個硬體內核和多個軟體內核當中選擇一或多個內核以用於資料處理。
在一些實施例中,橋接器內核裝置配置成基於使用從主機裝置接收到的多個變數參數和儲存參數或聯網參數的成本函數來選擇一或多個內核以用於資料處理,其中從主機裝置接收到的儲存參數或聯網參數包含提交佇列識別字(Submission Queue Identifier;SQID)、完成佇列識別字(Completion Queue Identifier;CQID)、流ID、主機ID、邏輯塊位址(Logical Block Address;LBA)範圍、網路服務ID(Network Service ID;NSID)、媒體存取控制(Media Access Control;MAC)ID、傳輸控制協議(Transmission Control Protocol;TCP)/網際網路協定(Internet Protocol;IP)欄位、應用類型、應用識別字或與主機裝置相關聯的時間和日期中的至少一個。在一些實施例中,橋接器內核裝置配置成使用FIFO暫存器從多個硬體內核和多個軟體內核當中選擇一或多個內核以用於資料處理。在一些實施例中,橋接器內核韌體配置成提取DRAM的交握區中的多個變數參數且使用從主機裝置接收到的多個變數參數來調用經卸載應用函數。在一些實施例中,經卸載應用函數配置成使用多個變數參數以用於資料處理。
根據本揭露的一些實例實施例,一種方法包含:通過儲存裝置中的橋接器內核裝置從連接儲存裝置的主機裝置接收觸發;通過橋接器內核裝置提取從主機裝置接收到的多個變數參數,其中橋接器內核裝置配置成從主機暫存器介面提取多個變數參數;通過橋接器內核裝置將多個變數參數儲存在儲存裝置的動態隨機存取記憶體(DRAM)中,其中在DRAM的交握區中儲存多個變數參數;通過橋接器內核裝置在DRAM中設定就緒旗標,其中在DRAM的交握區中設定就緒旗標;通過橋接器內核裝置基於橋接器內核裝置確定基於多個變數參數對儲存裝置的嵌入式處理器中的橋接器內核裝置的韌體中的經卸載函數的處理完成來在DRAM中輪詢完成旗標,其中在DRAM的交握區中輪詢完成旗標;以及通過橋接器內核裝置在主機暫存器介面中設定就緒旗標。
在一些實施例中,方法進一步包含:通過橋接器內核裝置基於檢測DRAM的交握區中的完成旗標來從DRAM的交握區讀取錯誤或狀態;以及通過橋接器內核裝置將錯誤或狀態更新到主機暫存器介面中。在一些實施例中,方法進一步包含:通過橋接器內核裝置的韌體在DRAM中輪詢就緒旗標;通過橋接器內核裝置的韌體提取DRAM的交握區中的多個變數參數;通過橋接器內核裝置的韌體使用多個變數參數來調用儲存裝置的嵌入式處理器中的經卸載應用函數以用於資料處理;通過經卸載應用函數基於資料處理的完成來使調用返回到橋接器內核裝置的韌體;以及通過橋接器內核裝置的韌體在DRAM的交握區中設定完成旗標。
根據本揭露的一些實例實施例,一種系統包含:儲存裝置,包含嵌入式處理器;以及橋接器內核裝置,配置成從主機裝置接收多個變數參數且將多個變數參數傳輸到嵌入式處理器以用於資料處理。在一些實施例中,橋接器內核裝置包含橋接器內核硬體和橋接器內核韌體,其中儲存裝置是固態驅動器(SSD),且嵌入式處理器是現場可程式化閘陣列(FPGA)處理器或SSD控制器或分立輔助處理器,其中嵌入式處理器包含配置成在嵌入式處理器上執行的經卸載應用函數,嵌入式處理器進一步包含橋接器內核韌體,且其中橋接器內核裝置將從主機裝置接收到的多個變數參數傳輸到配置成在嵌入式處理器上執行的經卸載應用函數,其中橋接器內核裝置從主機暫存器介面提取從主機裝置接收到的多個變數參數。
在一些實施例中,儲存裝置進一步包含先進先出(FIFO)暫存器和動態隨機存取記憶體(DRAM),其中DRAM進一步包含多個資料緩衝器和交握區,其中FIFO暫存器和DRAM以通訊方式耦合到橋接器內核硬體,其中橋接器內核硬體包含多個硬體內核且橋接器內核韌體包含多個軟體內核,多個軟體內核配置成在嵌入式處理器中運行,其中橋接器內核裝置配置成基於使用從主機裝置接收到的多個變數參數和儲存參數或聯網參數的成本函數來從多個硬體內核和多個軟體內核當中選擇一或多個內核以用於資料處理,其中從主機裝置接收到的儲存參數或聯網參數是提交佇列識別字(SQID)、完成佇列識別字(CQID)、流ID、主機ID、邏輯塊位址(LBA)範圍、網路服務ID(NSID)、媒體存取控制(MAC)ID、傳輸控制協議(TCP)/網際網路協定(IP)欄位、應用類型、應用識別字或與主機裝置相關聯的時間和日期中的至少一個,且其中橋接器內核裝置配置成使用FIFO暫存器從多個硬體內核和多個軟體內核當中選擇一或多個內核以用於資料處理。
[本揭露的效果]
本發明可使用基於軟體的經卸載函數來重用已經在主機上進行那些函數的軟體代碼。此外,本發明可哥保持主機軟體堆疊與經卸載內核之間的介面與軟體內核相同以及與任何其它形式的內核實現相同。因此,可以軟體內核形式進行初始快速卸載,且稍後可在不顯著改變或破壞總體主機軟體堆疊和/或系統架構的情況下在硬體中實現經卸載函數。通過使快速卸載啟動和運行,可在正在開發更多高性能內核的同時進行其它系統活動(例如,系統集成、檢核、特徵化等)。
換句話說,本發明可將應用函數卸載到例如具有嵌入式處理器的SSD的計算儲存裝置以用於高效且有成本效益的資料處理。
下文結合附圖闡述的具體實施方式意圖作為對根據本揭露提供的用於將應用函數卸載到裝置的系統和方法的一些實例實施例的描述,且不意圖表示本揭露可建構或利用的唯一形式。所述描述結合所示出的實施例來闡述本揭露的特徵。然而,將理解,可通過不同實施例來實現相同或等效的功能和結構,所述不同實施例也意圖涵蓋在本揭露的範圍內。如本文中其它地方所指示,相同元件編號意圖指示相同元件或特徵。
在一些系統架構中,可將資料從永久儲存器提取到可使用高性能網路連接到儲存的相對高性能的伺服器。就所消耗能量的量以及部署的計算和網路資源而言,將這種大量原始資料移動到中央處理單元(central processing unit;CPU)以用於處理和分析可能是昂貴的。這種大量原始資料的移動可增大資源(例如網路頻寬、CPU週期以及CPU記憶體)上的負擔。將大量原始資料移動到伺服器以用於處理還可能增大由在伺服器上運行的應用經歷的延時。
在一些情況下,在完成處理和作出決策之前,應用可能首先需要等待將資料提取到伺服器。這些所添加的資源要求可導致較高資本支出和運營成本花費。因此,盡可能在儲存裝置(例如,固態驅動器(SSD))內處理原始資料可表示許多資料分析使用情況(例如,針對增長的原始資料量的貨幣化的使用情況)的有成本效益的解決方案。另外,通過減少資料移動,可改善系統運行應用的回應延時。
此外,採用資料分析任務的系統可經常讀取相對大量的資料、處理所述資料且通過過濾和其它資料簡化操作來簡化所述資料。這些和許多其它類似任務可使用基於SSD的服務來實現,這是因為這些任務可利用裝置(例如,SSD)內的較高可用頻寬,且通過僅移動簡化的結果來節省SSD與CPU之間的有限頻寬(例如,快速周邊元件連接(PCIe)介面或在遠端直接附接儲存(remote direct attached storage;RDAS)的情況下的網路結構介面)。因此,用於處理更靠近儲存裝置(例如,SSD)或所述儲存裝置內部的資料的技術合乎高效且有成本效益的資料處理的需要。
本揭露的一些實施例包含用於將應用函數卸載到計算儲存裝置(例如,具有嵌入式處理器的SSD)的方法和系統,其可在一些實例中產生高效且有成本效益的資料處理解決方案。智慧儲存裝置(例如,具有嵌入式處理器的SSD)可提供用於進行可以其它方式通過主機CPU處理器進行的資料處理功能的至少一部分的平臺。就能量消耗、網路頻寬、CPU週期、記憶體等而言,在智慧SSD或類似儲存裝置內部進行那些資料處理功能可為儲存網路提供益處。
在一些實例中,可使用具有嵌入式處理器(例如,FPGA或SSD控制器或分立輔助處理器)的儲存裝置中的暫存器傳輸級(register-transfer level;RTL)邏輯、高級合成(high-level synthesis;HLS)或現場可程式化閘陣列(FPGA)邏輯來實現經卸載函數,以提高性能且減小儲存網路的功耗。然而,使用RTL或HLS的高性能經卸載函數的較長開發週期可阻礙或顯著減緩系統開發的其它活動。本揭露的一些實施例可使得能夠在嵌入式處理器上(例如,在SSD中)執行經卸載函數作為軟體(也稱為韌體)函數。通過執行作為軟體的經卸載函數,可實現快速開發時間。基於軟體的經卸載函數還可使得能夠重用已經在主機(例如,主機CPU)上進行那些函數的軟體代碼。
在儲存裝置或SSD的嵌入式處理器中執行經卸載函數作為軟體或韌體可保持主機軟體堆疊與經卸載內核之間的介面與軟體內核相同,以及與任何其它形式的內核實現相同。因此,可以軟體內核形式進行初始快速卸載,且稍後可在不顯著改變或破壞總體主機軟體堆疊和/或系統架構的情況下在硬體中實現經卸載函數。通過使快速卸載啟動和運行,可在正在開發更多高性能內核的同時進行其它系統活動(例如,系統集成、檢核、特徵化等)。
如上文所提及,本揭露的一些實施例包含用於將應用函數卸載到計算儲存裝置(例如具有嵌入式處理器(例如FPGA或SSD控制器或分立輔助處理器)的SSD)的方法和系統以用於高效且有成本效益的資料處理。一些實施例可包含可代表經卸載函數充當主機(例如,主機CPU)的代理的基於FPGA硬體的橋接器內核。橋接器內核可從主機驅動器接受變數參數且可將那些變數參數(例如,參數值、記憶體指針等)傳輸到將在嵌入式處理器(例如,FPGA或SSD控制器或分立輔助處理器)上作為軟體內核執行的經卸載函數。其它實施例中的硬體和韌體片段可充當在主機和軟體內核上運行的應用之間的橋接器。這種軟體內核可接著在稍後時刻處移動到硬體中以獲得對主機透明的高性能。因此,可在不進行進一步修改的情況下使用橋接器內核主機介面,這可使得計算儲存裝置(例如,智慧SSD)的用戶能夠例如通過將其現有應用函數編碼基數移植到儲存裝置中的嵌入式處理器(例如,FPGA或SSD控制器或分立輔助處理器)來快速開發使用情況。
智慧SSD的使用情況開發的這一易化可准許用戶更快地採用本文中所描述的技術。使用HLS和RTL的高性能內核可耗費相對大量的開發時間和資源。本揭露的實例實施例可使得使用者能夠在後臺正在開發高性能內核的同時進行各種任務(例如,系統集成、客戶演示、系統檢核以及其它任務)。另外,橋接器內核可進行到不同內核的基於成本的路由。也就是說,橋接器內核可基於從主機接收到的變數參數和配置在具有嵌入式處理器的儲存裝置中的各種儲存參數或聯網參數的一些函數來叫用(invoke)不同內核。舉例來說,在一些實施例中,基於在執行時間期間從主機接收到的變數參數,橋接器內核可在適當時叫用不同性能級的內核。
圖1A示出包含橋接器內核的系統的實例框圖。系統100包含主機102和儲存裝置104(例如智慧SSD,例如具有FPGA處理器的跨結構非揮發性儲存快速(Non-Volatile Memory express;NVMe)(Non-Volatile Memory express over Fabrics;NVMe-oF)相容的以太網路SSD(Ethernet SSD;eSSD),或具有加速能力的NVMe SSD)。主機102包含使用者應用106的模組和開放計算語言(OpenCL)108模組。OpenCL 108模組可用於表示計算卸載應用程式化介面(例如,這可應用於主機102與儲存裝置104(例如,SSD)之間的任何計算卸載介面)。主機102可使用快速周邊元件連接(PCIe)或以太網路連接來建立與儲存裝置104的連接。
儲存裝置104包含橋接器內核。在一些實施例中,橋接器內核可包含橋接器內核硬體110和橋接器內核韌體116。儲存裝置104進一步包含嵌入式處理器112、先進先出(FIFO)118暫存器以及動態隨機存取記憶體(DRAM)。DRAM 120包含資料緩衝器122和交握區124。嵌入式處理器112包含經卸載應用函數114和橋接器內核韌體116。
在一些實施例中,系統100中的主機102可進一步包含作業系統(operating system;OS)和檔案系統(file system;FS),以及NVMe-oF驅動器。在一些實施例中,儲存裝置104可以在包含以太網路交換機、主機板管理控制器(baseboard management controller;BMC)以及PCIe交換機的主機殼(未繪示)內部。以太網路交換機提供通過中板與儲存裝置104(例如,智慧SSD)的以太網路連接,且PCIe交換機提供通過中板對儲存裝置104的管理介面。BMC可根據由系統管理員給出的指令來對儲存裝置104進行程式化。BMC可管理包含以太網路交換機、PCIe交換機以及儲存裝置104的主機殼的內部元件。BMC可支援PCIe和/或用於系統管理的系統管理匯流排(system management bus;SMBus)介面。BMC可配置儲存裝置104且對以太網路交換機進行程式化。在一些實施例中,以太網路交換機提供主機102與儲存裝置104之間的網路連線性。
圖1B示出通過橋接器內核(例如,橋接器內核硬體110)對經卸載函數的不同內核的基於成本的路由進程。在一些實施例中,系統100使得能夠將經卸載函數(例如,經卸載應用函數114)相對快速地移植到例如智慧SSD(例如,儲存裝置104)的儲存裝置。在一些實施例中,在主機(例如,主機102)的CPU上運行的用戶應用106可受益於將函數中的一些卸載到智慧SSD(例如,儲存裝置104)。通常,處理儲存在SSD(例如,儲存裝置104)中的大量資料的函數可受益於這種卸載。經卸載函數(例如,經卸載應用函數114)可稱為“內核”(例如,內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m))。
在圖1B中,內核126(1)、…、內核126(n)是軟體內核且內核126(n+1)、…、內核126(m)是硬內核或硬體內核。內核126(1)……內核126(n)當中的軟體內核可在嵌入式處理器112上運行。(例如,在用戶應用106中運行的)主機應用可通過主機102側上的由類似OpenCL(例如,OpenCL 108)的語言提供的介面且通過儲存裝置104側上的橋接器內核硬體110與內核(例如,內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m))介接。
在一些實施例中,內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m)當中的多個內核可以是高性能內核(例如,高性能內核可具有高於設定或預定閾值的性能度量),且內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m)當中的其它多個內核可以是低性能內核(例如,低性能內核可具有低於設定或預定閾值的性能度量)。橋接器內核(例如,橋接器內核硬體110)可從內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m)當中進行一或多個內核的選擇以用於資料處理。
在一些實施例中,橋接器內核可基於成本函數來進行內核的選擇以用於資料處理。在一些實施例中,可基於從主機102接收到的變數參數和從主機102接收到的儲存參數或聯網參數來確定成本函數。儲存參數或聯網參數的實例可包含但不限於提交佇列識別字(SQID)、完成佇列識別字(CQID)、流ID、主機ID、邏輯塊位址(LBA)範圍、網路服務ID(NSID)、媒體存取控制(MAC)ID、傳輸控制協議(TCP)/網際網路協定(IP)欄位、應用類型、應用識別字、與主機102相關聯的時間和/或日期、其組合和/或類似物。
舉例來說,可將變數參數從主機102的應用側傳送到橋接器內核(例如,主機102的應用可將成本函數卸載到橋接器內核硬體110)。橋接器內核可計算使用給定內核的成本。橋接器內核可接著基於成本函數和從主機102接收到的儲存參數或聯網參數的組合來選擇最佳內核。在一些實施例中,例如,儲存裝置104可實現兩個資料壓縮內核,一個設計用於更好的輸送量且另一個設計用於更好的壓縮比。針對來自主機102的對壓縮的給定執行時間叫用,橋接器內核可檢查長度變數參數,且每當長度大於例如64千位元組時都可選擇更好的壓縮比內核,且可為其餘部分選擇其它類型的壓縮內核。在一些實施例中,橋接器內核硬體110可從內核126(1)、…、內核126(n)、內核126(n+1)、…、內核126(m)當中選擇最佳內核以用於使用FIFO暫存器的資料處理。
圖2A到圖2B示出主機應用(例如,使用者應用106)與經卸載內核介接的實例流程。在步驟201處,橋接器內核(例如,橋接器內核驅動器)可從上層(例如,主機上層軟體136,如圖4中所繪示)接收調用或叫用。在步驟202處,橋接器內核(例如,橋接器內核驅動器)可將主機變數參數(例如,變數參數-1……變數參數-n)儲存到主機暫存器介面(例如,圖3的主機暫存器介面300)中。在步驟203處,橋接器內核(例如,橋接器內核驅動器)可分配緩衝器(例如,資料緩衝器122)以用於資料處理。在步驟204處,橋接器內核(例如,橋接器內核驅動器)可初始化由經卸載應用函數114所需的其它變數參數。在步驟205處,橋接器內核(例如,橋接器內核驅動器)可將資料提取到緩衝器中以用於處理。在步驟206處,橋接器內核(例如,橋接器內核驅動器)可叫用處理內核。一旦資料處理完成,系統100就可在步驟207處進行淨化操作。在步驟208處,通過橋接器內核(例如,橋接器內核驅動器),經卸載應用函數114可使調用返回到上層應用軟體。
在一些實施例中,橋接器內核可向主機102提供通用暫存器介面。圖3示出通過橋接器內核向主機102呈現的暫存器介面300的實例。暫存器介面300可位於儲存裝置104中。系統100可使用暫存器介面300(例如,如圖3中所繪示)向(例如,在用戶應用106中運行的)主機應用呈現內核以將變數參數傳送到經卸載函數(例如,經卸載應用函數114)且檢索返回的值或狀態。在一些實施例中,系統100可使用OpenCL 108的平臺以便於內核的緩衝分配。
圖4示出圖1A的DRAM 120的交握區124的佈局的實例。如圖4中所示出,在一些實施例中,橋接器內核硬體110可將從主機102接收到的變數參數(例如,變數參數-1……變數參數-n)暫時儲存到儲存裝置104(例如,智慧SSD)的DRAM 120中的設定或預定記憶體位置中。在一些實施例中,片上FIFO 118的結構可用於將變數參數傳送到併入經卸載應用函數114、韌體以及橋接器內核韌體116的嵌入式處理器112,而不是DRAM 120。
可將暫存器介面300的內容(例如變數參數-1到變數參數-n)暫時儲存到DRAM 120的交握區124中。一旦將變數參數暫時儲存在DRAM 120中,橋接器內核硬體110就可在DRAM 120的交握區124中設定“就緒”128旗標。在所述時刻處,橋接器內核硬體110可等待在韌體(例如,橋接器內核韌體116)上運行的經卸載函數完成處理。因此,為了確定經卸載函數處理的完成,橋接器內核硬體110可在DRAM 120的交握區124中輪詢“完成”130旗標。
一旦橋接器內核硬體110檢測到“完成”130旗標,橋接器內核硬體110就可從DRAM 120的交握區124讀取任何錯誤或其它狀態。橋接器內核硬體110將錯誤和/或其它狀態132更新到暫存器介面300(如圖3中所繪示)的對應暫存器中。橋接器內核硬體110可接著設定“完成”130的暫存器,這可繼而通過主機應用軟體134輪詢以指示經卸載函式呼叫的完成。
圖5示出使用橋接器內核硬體作為狀態機的方法500。橋接器內核硬體可以是圖1A的橋接器內核硬體110。
在步驟501處,橋接器內核硬體110保持在空閒狀態下。在步驟501處,橋接器內核硬體110從主機102接收觸發。在步驟503處,橋接器內核硬體110從主機暫存器介面(例如,圖3的主機暫存器介面300)提取從主機102接收到的變數參數(例如,變數參數-1……變數參數-n)。在步驟505處,橋接器內核硬體110將從主機102接收到的變數參數(例如,變數參數-1……變數參數-n)暫時儲存在DRAM 120的交握區124中。一旦將變數參數暫時儲存在DRAM 120中,橋接器內核硬體110就在步驟507處在DRAM 120的交握區124中設定“就緒”128旗標。
在所述時刻處,橋接器內核硬體110基於變數參數等待韌體(例如,橋接器內核韌體116)中的經卸載函數完成其處理。為了所述目的,在步驟509處,橋接器內核硬體110在DRAM 120的交握區124中輪詢“完成”130旗標。在一些實施例中,一旦橋接器內核硬體110檢測到“完成”130旗標,橋接器內核硬體110就可從DRAM 120的交握區124讀取任何錯誤或其它狀態。橋接器內核硬體110將所述錯誤和/或其它狀態132更新到暫存器介面300(如圖3中所繪示)的適合的暫存器中。橋接器內核硬體110接著設定“完成”130的暫存器,這繼而通過主機應用軟體134輪詢以指示經卸載函式呼叫的完成。
在步驟511處,橋接器內核硬體110在主機暫存器介面(例如,圖3的主機暫存器介面300)中設定就緒旗標。在步驟511之後,橋接器內核硬體110返回到步驟501。
圖6示出橋接器內核韌體操作。橋接器內核韌體可以是圖1A的橋接器內核韌體116。
在步驟601處,橋接器內核韌體116保持在空閒狀態下。在步驟603處,通過在嵌入式處理器112上運行的橋接器內核韌體116輪詢DRAM 120中的“就緒”旗標128。換句話說,橋接器內核韌體116充當使用適合的變數參數來叫用經卸載函數(例如,經卸載應用函數114)的卸載管理器。當橋接器內核韌體116檢測到設定“就緒”旗標時,橋接器內核韌體116在步驟605處提取暫時儲存在DRAM 120的交握區124中的變數參數(例如,變數參數-1……變數參數-n)。在步驟607處,橋接器內核韌體116使用主機102的變數參數調用經卸載應用函數114。經卸載應用函數114使用變數參數(例如,變數參數-1……變數參數-n)且按照設計進行資料處理功能。經卸載應用函數114的實例繪示在實例608處。一旦資料處理完成,經卸載應用函數114就在步驟609處使調用返回到橋接器內核韌體116。在步驟611處,橋接器內核韌體116在DRAM 120中的交握區124中設定“完成”旗標。如早先所描述,“完成”旗標繼而通過橋接器內核硬體110輪詢以便將完成發送回主機102。在步驟611之後,橋接器內核韌體116返回到步驟601。
在一些實施例中,橋接器內核充當(例如,在用戶應用106中運行的)主機應用的代理。舉例來說,(例如,在用戶應用106中運行的)主機應用對在何處或如何實現經卸載函數不可知。在一些實施例中,內核實現可對主機102透明。在一些實施例中,內核可在嵌入式處理器(例如,嵌入式處理器112)上作為軟體內核實現。然而,在一些實施例中,內核可在硬體門(例如,橋接器內核硬體110)中實現。
在一些實施例中,橋接器內核自身可對經卸載函數(例如,經卸載應用函數114)不可知,這可實現用戶保密性(例如,IP地址保密性)。因此,使用者可在不對儲存裝置使用者顯露的情況下創建其自己的經卸載函數作為軟體內核或硬體內核。也就是說橋接器內核機構的實例實施例可充當可由使用者用以將其私有加速函數卸載到儲存裝置的平臺。在一些實施例中,與內核和/或經卸載函數的主機介面可以不改變(例如,內核可在沒有顯著主機側改變的情況下升級到高性能版本)。在這種情況下,橋接器內核(例如,橋接器內核硬體110)RTL可向主機應用(例如,使用者應用106)提供標準或商定介面。
在一些實施例中,橋接器內核(例如,橋接器內核硬體110)可使用FPGA DRAM(例如,DRAM 120)記憶體來與橋接器內核韌體116進行交握。在其它實施例中,橋接器內核硬體110可使用片上FIFO(例如,FIFO 118)來與橋接器內核韌體116進行交握。在一些實施例中,橋接器內核(例如,橋接器內核硬體110)的RTL可使用FPGA DRAM(例如,DRAM 120)來將變數參數傳送到在嵌入式處理器112上運行的經卸載函數。
在一些實施例中,橋接器內核(例如,橋接器內核硬體110)可以是相對於下層輸送機構(例如,PCIe、以太網路等)不可知的,所述下層輸送機構用於在主機102與儲存裝置104之間建立連接。在一些實施例中,包含橋接器內核(例如,橋接器內核硬體110)的系統100可通過相較於不具有橋接器內核的系統而提供相對快速的移植或開發選項來提供相對快速的用戶參與,增加通過使用者對現有編碼基數的重用,且可使得系統能夠在開發高性能內核的同時進行其它活動。在一些實施例中,包含橋接器內核(例如,橋接器內核硬體110)的系統100還可提供系統集成、檢核、測試、演示等。
在一些實施例中,橋接器內核可使用通過主機傳送(和/或通過裝置設定)的變數參數來決定叫用哪個經卸載函數(例如,內核)。在一些實施例中,橋接器內核可叫用軟內核、硬內核或各種性能水準的一或多個內核。在一些實施例中,橋接器內核可基於變數參數使用成本函數來選擇特定內核。在一些實施例中,內核選擇是基於配置參數,例如應用類型、應用識別字、命名空間識別字、主機識別字、LBA位址範圍、NVM設定識別字、NVMe提交佇列識別字、完成佇列識別字、流識別字、以太網路MAC識別字、TCP/IP位址和其它輸送/網路參數,以及類似日期和時間的普通參數等。
應理解,儘管本文中可使用術語“第一”、“第二”、“第三”等來描述各種元件、元件、區、層和/或區段,但這些元件、元件、區、層和/或區段不應受這些術語限制。這些術語僅用於區分一個元件、元件、區、層或區段與另一元件、元件、區、層或區段。因此,本文中所論述的第一元件、元件、區、層或區段可稱為第二元件、元件、區、層或區段,而並不脫離本發明概念的精神和範圍。
為易於描述,本文中可使用例如“在……之下”、“在……下方”、“下部”、“在……下”、“上方”、“上部”以及類似物的空間相對術語來描述如圖中所示出的一個元件或特徵與另一元件或特徵的關係。應理解,除圖中所描繪的定向之外,這種空間相對術語意圖涵蓋裝置在使用或操作中的不同定向。舉例來說,如果圖中的裝置倒過來,那麼描述為“在”其它元件或特徵“下方”或“之下”或“下”的元件將定向“在”其它元件或特徵“上方”。因此,實例術語“在……下方”和“在……下”可涵蓋在上方和在下方的定向。裝置可以其它方式定向(例如,旋轉90度或處於其它定向),且本文中所使用的空間相對描述詞應相應地進行解譯。此外,還將理解,當層稱作“在”兩個層“之間”時,其可以是兩個層之間的唯一層,或也可存在一或多個插入層。
本文中所使用的術語僅出於描述特定實施例的目的,且並不意圖限制本發明概念。如本文所使用,術語“實質上”、“約”以及類似術語用作近似術語且不用作程度術語,且意圖考慮將由本領域的技術人員識別出的測量值或計算值的固有偏差。
如本文中所使用,除非上下文另作明確指示,否則單數形式“一(a/an)”也意圖包含複數形式。應進一步理解,當用於本說明書中時,術語“包括(comprises/comprising)”指定存在所陳述的特徵、整數、步驟、操作、元件和/或元件,但不排除存在或添加一或多個其它特徵、整數、步驟、操作、元件、元件和/或其群組。如本文中所使用,術語“和/或”包含相關聯的所列項中的一或多個的任何以及所有組合。當在元件列表之前時,例如“中的至少一個”的表達修飾元件的整個列表並且不修飾列表中的個別元件。另外,當描述本發明概念的實施例時,使用“可”是指“本揭露的一或多個實施例”。此外,術語“示範性”意圖指代實例或圖示。如本文中所使用,術語“使用(use)”、“正使用(using)”、“被使用(used)”可視為分別與術語“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同義。
應理解,當元件或層稱作“在”另一元件或層“上”、“連接到”、“耦合到”或“鄰近於”所述另一元件或層時,其可直接在另一元件或層上、連接到、耦合到或鄰近於所述另一元件或層,或可存在一或多個介入元件或層。相比之下,當元件或層稱作“直接在”另一元件或層“上”、“直接連接到”、“直接耦合到”或“緊鄰”所述另一元件或層時,不存在介入元件或層。
本文中所述的任何數值範圍意圖包含所述範圍內歸入的相同數值精度的所有子範圍。舉例來說,範圍“1.0到10.0”意圖包含所述最小值1.0與所述最大值10.0之間的所有子範圍(且包含所述最小值和所述最大值),也就是說,具有等於或大於1.0的最小值和等於或小於10.0的最大值,例如2.4到7.6。本文中所述的任何最大數值限制都意圖包含歸入於其中的所有更低數值限制,且本說明書中所述的任何最小數值限制都意圖包含歸入於其中的所有更高數值限制。
在一些實施例中,可將本揭露的方法和系統的不同實施例的一或多個輸出發送到耦合到顯示裝置或具有顯示裝置的電子件裝置,所述顯示裝置用於顯示一或多個輸出或關於本揭露的方法和系統的不同實施例的一或多個輸出的資訊。
本文中所描述的根據本揭露的實施例的電子或電氣裝置和/或任何其它相關裝置或元件可利用任何合適的硬體、韌體(例如,專用積體電路)、軟體或軟體、韌體以及硬體的組合來實現。舉例來說,這些裝置的各種元件可在一個積體電路(integrated circuit;IC)晶片上或在獨立IC晶片上形成。另外,這些裝置的各種元件可在柔性印刷電路膜、載帶封裝(tape carrier package;TCP)、印刷電路板(printed circuit board;PCB)上實現或在一個襯底上形成。另外,這些裝置的各種元件可以是在一或多個處理器上運行、位於一或多個計算裝置中、執行電腦程式指令以及與其它系統元件交互以用於進行本文中所描述的各種功能的進程或執行緒。電腦程式指令可儲存在使用例如隨機存取記憶體(random access memory;RAM)的標準記憶體裝置在計算裝置中實現的記憶體中。電腦程式指令也可儲存在例如CD-ROM、快閃記憶體驅動器或類似物的其它非暫時性電腦可讀媒體中。此外,本領域的技術人員應認識到可將各種計算裝置的功能性組合或集成到單個計算裝置中,或可將特定計算裝置的功能性分佈於一或多個其它計算裝置上而不脫離本揭露的示範性實施例的精神和範圍。
儘管本文中已具體描述和示出了用於將應用函數卸載到裝置的系統和方法的示範性實施例,但許多修改和變化對於本領域的技術人員而言將是顯而易見的。因此,應理解,根據本揭露的原理建構的用於將應用函數卸載到裝置的系統和方法可以不同于本文中所具體描述的方式實施。本發明概念也定義於以上權利要求書和其等效物中。
100:系統
102:主機
104:儲存裝置
106:用戶應用
108:開放計算語言模組
110:橋接器內核硬體
112:嵌入式處理器
114:經卸載應用函數
116:橋接器內核韌體
118:先進先出暫存器
120:動態隨機存取記憶體
122:資料緩衝器
124:交握區
126(1)、126(m)、126(n)、126(n+1):內核
128:“就緒”旗標
130:“完成”旗標
132:錯誤和/或其它狀態
134:主機應用軟體
136:主機上層軟體
200、500:方法
201、202、203、204、205、206、207、208、501、502、503、505、507、509、511、601、603、605、607、609、611:步驟
300:暫存器介面
608:實例
將參考本說明書、權利要求書以及附圖來瞭解並理解本揭露的一些實例實施例的這些特徵和其它特徵,其中:
圖1A示出包含橋接器內核的系統的實例框圖。
圖1B示出通過橋接器內核對不同內核的基於成本的路由進程。
圖2A到圖2B示出主機應用與經卸載內核介接的實例流程。
圖3示出通過橋接器內核向主機呈現的暫存器介面的實例。
圖4示出如圖1A中所繪示的交握區的佈局的實例。
圖5示出使用橋接器內核硬體作為狀態機的方法。
圖6示出橋接器內核韌體操作。
100:系統
102:主機
104:儲存裝置
106:用戶應用
108:開放計算語言模組
110:橋接器內核硬體
112:嵌入式處理器
114:經卸載應用函數
116:橋接器內核韌體
118:先進先出暫存器
120:動態隨機存取記憶體
122:資料緩衝器
124:交握區
Claims (20)
- 一種系統,包括: 主機裝置; 儲存裝置,包含嵌入式處理器;以及 橋接器內核裝置,包含橋接器內核硬體和橋接器內核韌體,其中所述橋接器內核裝置配置成從所述主機裝置接收多個變數參數且將所述多個變數參數傳輸到所述嵌入式處理器以用於資料處理。
- 如請求項1所述的系統,其中所述橋接器內核裝置的實現對所述主機裝置透明,其中所述橋接器內核裝置對所述主機裝置與所述橋接器內核裝置之間的輸送機構不可知,其中所述輸送機構是快速周邊元件連接或以太網路連接中的一個。
- 如請求項1所述的系統,其中所述儲存裝置是固態驅動器,且所述嵌入式處理器是現場可程式化閘陣列處理器或固態驅動器控制器或分立輔助處理器,其中: 所述嵌入式處理器包含配置成在所述嵌入式處理器上執行的經卸載應用函數,所述嵌入式處理器進一步包含所述橋接器內核韌體, 所述橋接器內核裝置將從所述主機裝置接收到的所述多個變數參數傳輸到所述經卸載應用函數,且 所述橋接器內核裝置提取從所述主機裝置的主機暫存器介面接收到的所述多個變數參數。
- 如請求項3所述的系統,其中所述儲存裝置進一步包含先進先出暫存器和動態隨機存取記憶體,所述動態隨機存取記憶體包含多個資料緩衝器和交握區以儲存從所述主機裝置接收到的所述多個變數參數,且其中所述先進先出暫存器和所述動態隨機存取記憶體以通訊方式耦合到所述橋接器內核硬體。
- 如請求項4所述的系統,其中所述先進先出暫存器配置成將所述多個變數參數傳送到併入有所述經卸載應用函數的所述嵌入式處理器以用於資料處理。
- 如請求項4所述的系統,其中所述橋接器內核硬體設定成將從所述主機裝置接收到的所述多個變數參數暫時儲存到所述動態隨機存取記憶體的所述交握區中。
- 如請求項4所述的系統,其中所述橋接器內核裝置配置成充當在所述主機裝置的客戶應用模組上運行的主機應用的代理,其中所述主機應用對在何處或如何實現所述經卸載應用函數不可知。
- 如請求項4所述的系統,其中所述主機裝置包含客戶應用模組和開放計算語言模組,且其中所述主機裝置配置成與所述儲存裝置建立快速周邊元件連接或以太網路連接。
- 如請求項8所述的系統,其中所述橋接器內核硬體包含多個硬體內核且所述橋接器內核韌體包含多個軟體內核,所述多個軟體內核配置成在所述嵌入式處理器上運行,其中在所述主機裝置的所述客戶應用模組上運行的主機應用配置成通過所述開放計算語言模組與所述多個軟體內核和所述多個硬體內核中的至少一個介接。
- 如請求項9所述的系統,其中所述橋接器內核裝置配置成基於成本函數從所述多個硬體內核和所述多個軟體內核當中選擇一或多個內核以用於資料處理。
- 如請求項10所述的系統,其中所述橋接器內核裝置配置成基於使用從所述主機裝置接收到的所述多個變數參數和儲存參數或聯網參數的所述成本函數來選擇所述一或多個內核以用於資料處理,其中從所述主機裝置接收到的所述儲存參數或所述聯網參數包含提交佇列識別字、完成佇列識別字、流識別字、主機識別字、邏輯塊位址範圍、網路服務識別字、媒體存取控制識別字、傳輸控制協定/網際網路協定欄位、應用類型、應用識別字或與所述主機裝置相關聯的時間和日期中的至少一個。
- 如請求項11所述的系統,其中所述橋接器內核裝置配置成使用所述先進先出暫存器從所述多個硬體內核和所述多個軟體內核當中選擇一或多個內核以用於資料處理。
- 如請求項12所述的系統,其中所述橋接器內核韌體配置成提取所述動態隨機存取記憶體的所述交握區中的所述多個變數參數且使用從所述主機裝置接收到的所述多個變數參數來調用所述經卸載應用函數。
- 如請求項13所述的系統,其中所述經卸載應用函數配置成使用所述多個變數參數以用於資料處理。
- 一種方法,包括: 通過儲存裝置中的橋接器內核裝置從連接到所述儲存裝置的主機裝置接收觸發; 通過所述橋接器內核裝置提取從所述主機裝置接收到的多個變數參數,其中所述橋接器內核裝置配置成從主機暫存器介面提取所述多個變數參數; 通過所述橋接器內核裝置將所述多個變數參數儲存在所述儲存裝置的動態隨機存取記憶體中,其中在所述動態隨機存取記憶體的交握區中儲存所述多個變數參數; 通過所述橋接器內核裝置在所述動態隨機存取記憶體中設定第一就緒旗標,其中在所述動態隨機存取記憶體的所述交握區中設定所述就緒旗標; 通過所述橋接器內核裝置基於所述橋接器內核裝置確定基於所述多個變數參數對所述儲存裝置的嵌入式處理器中的所述橋接器內核裝置的韌體中的經卸載函數的處理完成來在所述動態隨機存取記憶體中輪詢完成旗標,其中在所述動態隨機存取記憶體的所述交握區中輪詢所述完成旗標;以及 通過所述橋接器內核裝置在所述主機暫存器介面中設定第二就緒旗標。
- 如請求項15所述的方法,更包括: 通過所述橋接器內核裝置基於檢測所述動態隨機存取記憶體的所述交握區中的所述完成旗標來從所述動態隨機存取記憶體的所述交握區讀取錯誤或狀態;以及通過所述橋接器內核裝置將所述錯誤或所述狀態更新到所述主機暫存器介面中。
- 如請求項15所述的方法,更包括: 通過所述橋接器內核裝置的所述韌體在所述動態隨機存取記憶體中輪詢所述第一就緒旗標; 通過所述橋接器內核裝置的所述韌體提取所述動態隨機存取記憶體的所述交握區中的多個變數參數; 通過所述橋接器內核裝置的所述韌體使用所述多個變數參數來調用所述儲存裝置的所述嵌入式處理器中的經卸載應用函數以用於資料處理; 通過所述經卸載應用函數基於所述資料處理的完成來使通過所述橋接器內核裝置的所述韌體調用的所述經卸載應用函數返回到所述橋接器內核裝置的所述韌體;以及 通過所述橋接器內核裝置的所述韌體在所述動態隨機存取記憶體的所述交握區中設定完成旗標。
- 一種系統,包括: 儲存裝置,包含嵌入式處理器;以及 橋接器內核裝置,配置成從主機裝置接收多個變數參數且將所述多個變數參數傳輸到所述嵌入式處理器以用於資料處理。
- 如請求項18所述的系統,其中所述橋接器內核裝置包含橋接器內核硬體和橋接器內核韌體, 其中所述儲存裝置是固態驅動器,且所述嵌入式處理器是現場可程式化閘陣列處理器或固態驅動器控制器或分立輔助處理器, 其中所述嵌入式處理器包含經卸載應用函數和所述橋接器內核韌體,且 其中所述橋接器內核裝置將從所述主機裝置接收到的所述多個變數參數傳輸到配置成在所述嵌入式處理器上執行的所述經卸載應用函數,其中所述橋接器內核裝置從主機暫存器介面提取從所述主機裝置接收到的所述多個變數參數。
- 如請求項19所述的系統,其中所述儲存裝置更包含先進先出暫存器和動態隨機存取記憶體,其中所述動態隨機存取記憶體更包含多個資料緩衝器和交握區,其中所述先進先出暫存器和所述動態隨機存取記憶體以通訊方式耦合到所述橋接器內核硬體, 其中所述橋接器內核硬體包含多個硬體內核且所述橋接器內核韌體包含多個軟體內核,所述多個軟體內核配置成在所述嵌入式處理器中運行, 其中所述橋接器內核裝置配置成基於使用從所述主機裝置接收到的所述多個變數參數和儲存參數或聯網參數的成本函數來從所述多個硬體內核和所述多個軟體內核當中選擇一或多個內核以用於資料處理, 其中從所述主機裝置接收到的所述儲存參數或聯網參數是提交佇列識別字、完成佇列識別字、流識別字、主機識別字、邏輯塊位址範圍、網路服務識別字、媒體存取控制識別字、傳輸控制協定/網際網路協定欄位、應用類型、應用識別字或與所述主機裝置相關聯的時間和日期中的至少一個,且 其中所述橋接器內核裝置配置成使用所述先進先出暫存器從所述多個硬體內核和所述多個軟體內核當中選擇所述一或多個內核以用於資料處理。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862784275P | 2018-12-21 | 2018-12-21 | |
US62/784,275 | 2018-12-21 | ||
US16/543,264 US11204819B2 (en) | 2018-12-21 | 2019-08-16 | System and method for offloading application functions to a device |
US16/543,264 | 2019-08-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202042059A true TW202042059A (zh) | 2020-11-16 |
Family
ID=71096874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108142424A TW202042059A (zh) | 2018-12-21 | 2019-11-22 | 用於將應用函數卸載到裝置的系統和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11204819B2 (zh) |
JP (1) | JP2020102218A (zh) |
KR (1) | KR20200078331A (zh) |
CN (1) | CN111352666A (zh) |
TW (1) | TW202042059A (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11016755B2 (en) * | 2019-07-31 | 2021-05-25 | Dell Products L.P. | System and method to secure embedded controller flashing process |
KR20210113859A (ko) * | 2020-03-09 | 2021-09-17 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그 동작 방법 |
CN113051206A (zh) * | 2020-05-04 | 2021-06-29 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
US11687276B2 (en) | 2021-01-26 | 2023-06-27 | Seagate Technology Llc | Data streaming for computational storage |
JP2022143959A (ja) | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、方法及びデータ処理システム |
US11675540B2 (en) | 2021-08-05 | 2023-06-13 | Seagate Technology Llc | In-line data flow for computational storage |
US20230114636A1 (en) * | 2021-10-12 | 2023-04-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for accessing a device program on a storage device |
US20230214269A1 (en) * | 2022-01-05 | 2023-07-06 | Dell Products L.P. | Method and system for performing computational offloads for composed information handling systems |
US11728979B2 (en) | 2022-01-05 | 2023-08-15 | Dell Products L.P. | Method and system for performing telemetry services for composed information handling systems |
CN114035842B (zh) * | 2022-01-07 | 2022-04-08 | 飞腾信息技术有限公司 | 固件配置方法、计算系统配置方法、计算装置以及设备 |
CN115145592A (zh) * | 2022-09-01 | 2022-10-04 | 新华三技术有限公司 | 离线模型部署方法和装置、网络设备、分析器 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7873829B2 (en) * | 2002-11-06 | 2011-01-18 | International Business Machines Corporation | Offload processing for secure data transfer |
WO2006110952A1 (en) * | 2005-04-19 | 2006-10-26 | Fairlight.Au Pty Ltd | Media processing system and method |
US8151323B2 (en) | 2006-04-12 | 2012-04-03 | Citrix Systems, Inc. | Systems and methods for providing levels of access and action control via an SSL VPN appliance |
US8019929B2 (en) * | 2006-09-13 | 2011-09-13 | Rohm Co., Ltd. | Data processing apparatus and data control circuit for use therein |
US7958280B2 (en) * | 2006-10-27 | 2011-06-07 | Stec, Inc. | Parallel data transfer in solid-state storage |
CN101681282A (zh) | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US7660933B2 (en) * | 2007-10-11 | 2010-02-09 | Broadcom Corporation | Memory and I/O bridge |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US20110283059A1 (en) * | 2010-05-11 | 2011-11-17 | Progeniq Pte Ltd | Techniques for accelerating computations using field programmable gate array processors |
KR101564569B1 (ko) * | 2011-01-18 | 2015-11-03 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US20140059278A1 (en) | 2011-11-14 | 2014-02-27 | Lsi Corporation | Storage device firmware and manufacturing software |
US8848741B2 (en) | 2012-06-21 | 2014-09-30 | Breakingpoint Systems, Inc. | High-speed CLD-based TCP segmentation offload |
KR20140067737A (ko) | 2012-11-27 | 2014-06-05 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
EP2946296A4 (en) | 2013-01-17 | 2016-11-16 | Xockets Ip Llc | DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY |
US20150052280A1 (en) * | 2013-08-19 | 2015-02-19 | Emulex Design & Manufacturing Corporation | Method and system for communications-stack offload to a hardware controller |
US10326448B2 (en) * | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
US10332229B2 (en) * | 2014-05-12 | 2019-06-25 | Palo Alto Research Center Incorporated | System and method for high performance k-means clustering on GPU with smart kernels |
US11099918B2 (en) * | 2015-05-11 | 2021-08-24 | Xilinx, Inc. | Accelerating algorithms and applications on FPGAs |
US10075524B1 (en) * | 2015-09-29 | 2018-09-11 | Amazon Technologies, Inc. | Storage bridge device for communicating with network storage |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US20180115496A1 (en) * | 2016-10-21 | 2018-04-26 | Advanced Micro Devices, Inc. | Mechanisms to improve data locality for distributed gpus |
US10235202B2 (en) * | 2016-11-08 | 2019-03-19 | International Business Machines Corporation | Thread interrupt offload re-prioritization |
US10545860B2 (en) * | 2017-08-10 | 2020-01-28 | Samsung Electronics Co., Ltd. | Intelligent high bandwidth memory appliance |
JP2020532795A (ja) * | 2017-08-31 | 2020-11-12 | レール ビジョン リミテッドRail Vision Ltd | 複数計算における高スループットのためのシステムおよび方法 |
US10445118B2 (en) * | 2017-09-22 | 2019-10-15 | Intel Corporation | Methods and apparatus to facilitate field-programmable gate array support during runtime execution of computer readable instructions |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10896139B2 (en) * | 2018-03-15 | 2021-01-19 | Western Digital Technologies, Inc. | Methods and apparatus for host register access for data storage controllers for ongoing standards compliance |
US20200301898A1 (en) * | 2018-06-25 | 2020-09-24 | BigStream Solutions, Inc. | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates |
US10719462B2 (en) * | 2018-09-25 | 2020-07-21 | Intel Corporation | Technologies for computational storage via offload kernel extensions |
US11074101B2 (en) * | 2018-10-23 | 2021-07-27 | International Business Machines Corporation | Automated switching between interrupt context I/O processing and thread context I/O processing |
-
2019
- 2019-08-16 US US16/543,264 patent/US11204819B2/en active Active
- 2019-11-22 TW TW108142424A patent/TW202042059A/zh unknown
- 2019-12-03 KR KR1020190159399A patent/KR20200078331A/ko active Search and Examination
- 2019-12-18 CN CN201911311441.2A patent/CN111352666A/zh active Pending
- 2019-12-20 JP JP2019229993A patent/JP2020102218A/ja active Pending
-
2021
- 2021-12-15 US US17/552,276 patent/US20220107857A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20200078331A (ko) | 2020-07-01 |
JP2020102218A (ja) | 2020-07-02 |
CN111352666A (zh) | 2020-06-30 |
US20200201692A1 (en) | 2020-06-25 |
US20220107857A1 (en) | 2022-04-07 |
US11204819B2 (en) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202042059A (zh) | 用於將應用函數卸載到裝置的系統和方法 | |
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US8589941B2 (en) | Resource affinity via dynamic reconfiguration for multi-queue network adapters | |
EP4136532A1 (en) | Storage transactions with predictable latency | |
WO2019226355A1 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
JP5669851B2 (ja) | 論理的にパーティション化されたシステムにおいてパーティション間の効率的なコミュニケーションを行うための装置、方法、及びコンピュータ・プログラム | |
US9323544B2 (en) | Dynamic reconfiguration of queue pairs | |
KR20180105554A (ko) | 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법 | |
US20220206846A1 (en) | Dynamic decomposition and thread allocation | |
US11720475B2 (en) | Debugging dataflow computer architectures | |
US20230161652A1 (en) | Acceleration of communications | |
CN118076944A (zh) | 可重新配置计算组构中的循环执行期间的数据存储 | |
CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
US11366690B2 (en) | Scheduling commands in a virtual computing environment | |
US11789790B2 (en) | Mechanism to trigger early termination of cooperating processes | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
CN117581200A (zh) | 在分派期间从存储器加载数据 | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
CN117546133A (zh) | 缓解具有多个存储器控制器的系统上的存储器热点 | |
US20230333879A1 (en) | System for the Remote Execution of Applications | |
US20230297527A1 (en) | Direct Access to Reconfigurable Processor Memory | |
US20230251989A1 (en) | Direct Access to External Storage from a Reconfigurable Processor | |
CN117632256A (zh) | 用于处置多元件处理器中的断点的装置及方法 | |
CN118119933A (zh) | 用于触发协作进程的提前终止的机制 | |
CN117632403A (zh) | 在用于管理危险清除的桶形处理器中停驻线程 |