TWI836132B - 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 - Google Patents
儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 Download PDFInfo
- Publication number
- TWI836132B TWI836132B TW109128151A TW109128151A TWI836132B TW I836132 B TWI836132 B TW I836132B TW 109128151 A TW109128151 A TW 109128151A TW 109128151 A TW109128151 A TW 109128151A TW I836132 B TWI836132 B TW I836132B
- Authority
- TW
- Taiwan
- Prior art keywords
- array
- sorting
- memory
- storage device
- storage system
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 37
- 238000012545 processing Methods 0.000 claims abstract description 206
- 238000004891 communication Methods 0.000 claims abstract description 16
- 239000012634 fragment Substances 0.000 claims description 17
- 239000007787 solid Substances 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000002829 reductive effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000012163 sequencing technique Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000001965 increasing effect Effects 0.000 description 4
- 238000013403 standard screening design Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 1
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Logic Circuits (AREA)
Abstract
一種儲存系統包括:儲存裝置,用於儲存與排序操作相關
聯的資料元素陣列;儲存介面,用於促進儲存裝置與主機電腦之間的通訊;以及可重新配置處理裝置,以可通訊方式連接至儲存裝置,所述可重新配置處理裝置包括:記憶體,用於儲存自儲存裝置讀取的輸入資料,所述輸入資料對應於儲存於儲存裝置中的資料元素陣列;以及核心,包括一或多個計算組件,以根據自主機電腦接收的排序命令對儲存於記憶體中的輸入資料執行排序操作。可重新配置處理裝置欲動態地實例化所述一或多個計算組件以加速排序操作。
Description
本揭露的一或多個示例性實施例的各態樣是有關於一種儲存系統,且更具體而言有關於用於鄰近儲存階層式排序加速的系統以及方法。
一般而言,排序操作用於根據元素的比較來重新排列陣列或列表中的元素,且計算複雜,具有非線性時序複雜性。排序操作(sort operation)廣泛用於自資料庫應用到繪圖演算法的各種應用中。舉例而言,資料庫應用(例如GROUP BY、JOIN及/或類似應用)一般使用排序操作作為其構建操作(或基本操作),且因此,排序操作往往是資料庫應用的效能中的關鍵因素。
然而,不同的資料庫應用可能具有各種不同的操作及規範,且因此,當對不同的資料庫應用實施排序操作時,可能需要支援不同的操作及要求。舉例而言,為對各種不同的資料庫應用實施排序操作,可根據使用者要求及資源要求來設計固定排序引擎,以
改裝固定排序引擎用於不同的資料庫應用。然而,在此種情形中,為根據各種不同的要求來設計(或改裝)固定排序引擎,可能會花費大量的設計時間費用。
在此先前技術部分中揭露的以上資訊是為增強對本揭露的背景的理解,且因此,其可能包含不構成先前技術的資訊。
本揭露的一或多個示例性實施例是有關於一種用於鄰近儲存階層式排序加速的儲存系統以及一種包括所述儲存系統的方法。
根據本揭露的示例性實施例,一種儲存系統包括:儲存裝置,被配置以儲存與排序操作相關聯的資料元素陣列;儲存介面,被配置以促進所述儲存裝置與主機電腦之間的通訊;以及可重新配置處理(reconfigurable processing,RP)裝置,以可通訊方式連接至所述儲存裝置,所述可重新配置處理裝置包括:記憶體,被配置以儲存自所述儲存裝置讀取的輸入資料,所述輸入資料對應於儲存於所述儲存裝置中的所述資料元素陣列;以及核心,包括一或多個計算組件,所述一或多個計算組件被配置以根據自所述主機電腦接收的排序命令對儲存於所述記憶體中的所述輸入資料執行所述排序操作。所述可重新配置處理裝置被配置以動態地實例化所述一或多個計算組件以加速所述排序操作。
在示例性實施例中,所述可重新配置處理裝置可包括現場可程式化閘陣列(field programmable gate array,FPGA),且所
述儲存裝置可包括固態驅動機(solid state drive,SSD)。
在示例性實施例中,所述輸入資料可由所述主機電腦自所述SSD讀取並加載至所述主機電腦的主要記憶體(primary memory)中,且所述FPGA的所述記憶體可被配置以自所述主機電腦的所述主要記憶體接收所述輸入資料。
在示例性實施例中,所述儲存系統可更包括位於所述記憶體與所述SSD之間的直接互連,且所述FPGA可被配置以直接存取所述SSD以經由所述直接互連將所述輸入資料自所述SSD讀取至所述記憶體。
在示例性實施例中,所述FPGA與所述SSD可實施於相同的電路板上。
在示例性實施例中,所述FPGA可被配置以當自所述SSD讀取資料時,使用點對點(point-to-point,P2P)通訊經由所述直接互連來存取所述SSD,以繞過所述主機電腦。
在示例性實施例中,所述記憶體可包括動態隨機存取記憶體(dynamic random-access memory,DRAM)。
在示例性實施例中,所述一或多個計算組件可包括多個處理元件(processing element,PE),且所述多個處理元件中的每一者可被配置以根據排序演算法對對應於所述輸入資料的所述資料元素陣列的片段進行排序。
在示例性實施例中,所述多個處理元件中的每一者可包括本地比較器及本地合併器,且所述本地比較器及所述本地合併
器可被配置以使用所述排序演算法自所述片段產生已部分排序陣列。
在示例性實施例中,所述一或多個計算組件可更包括連接至所述多個處理元件中的每一者的輸出的處理單元(processing unit,PU),且所述處理單元可被配置以根據所述排序演算法對所述多個處理元件的所述輸出進行排序。
在示例性實施例中,所述處理單元可包括全域比較器及全域合併器,且所述全域比較器及所述全域合併器可被配置以使用所述排序演算法自由所述多個處理元件輸出的所述已部分排序陣列產生所述輸入資料的已完全排序陣列。
在示例性實施例中,所述排序演算法可為比併排序演算法(Bitonic sorting algorithm)。
在示例性實施例中,所述可重新配置處理裝置可被配置以根據所述資料元素陣列的大小在運行時間動態地實例化一數目的所述多個處理元件及所述處理單元。
在示例性實施例中,所述可重新配置處理裝置可被配置以:辨識所述資料元素陣列的所述大小;將所述資料元素陣列的所述大小與一或多個臨限值大小進行比較;以及根據所述比較實例化所述數目的所述多個處理元件及所述處理單元。
根據本揭露的示例性實施例,提供一種用於動態地擴縮儲存系統的排序操作的方法,所述儲存系統包括儲存與排序操作相關聯的資料元素陣列的儲存裝置、促進所述儲存裝置與主機電
腦之間的通訊的儲存介面以及以可通訊方式連接至所述儲存裝置的可重新配置處理裝置。所述方法包括:由所述可重新配置處理裝置辨識與來自所述主機電腦的排序命令相關聯的所述資料元素陣列的大小;由所述可重新配置處理裝置將所述大小與一或多個臨限值大小進行比較;以及由所述可重新配置處理裝置根據所述比較實例化一或多個計算組件以加速所述排序操作。
在示例性實施例中,所述可重新配置處理裝置可包括現場可程式化閘陣列(FPGA),且所述儲存裝置可包括固態驅動機(SSD)。
在示例性實施例中,所述實例化所述一或多個計算組件可包括對所述FPGA的核心的一或多個邏輯區塊及一或多個互連進行重新配置。
在示例性實施例中,所述方法可更包括:由所述至少一個本地排序計算組件對所述資料元素陣列的至少片段進行排序;以及由所述至少一個本地排序計算組件產生所述至少所述片段的已排序陣列,且所述實例化所述一或多個計算組件可包括由所述可重新配置處理裝置實例化至少一個本地排序計算組件。
在示例性實施例中,所述方法可更包括:由多個本地排序計算組件中的每一者對所述資料元素陣列的不同片段進行排序;以及由所述多個本地排序計算組件中的每一者產生對應片段的已部分排序陣列,且所述實例化所述一或多個計算組件可包括由所述可重新配置處理裝置實例化所述多個本地排序計算組件。
在示例性實施例中,所述方法可更包括:由全域排序計算組件對由多個本地排序計算組件中的每一者產生的所述已部分排序陣列進行排序;以及由所述全域排序計算組件自對所述已部分排序陣列的所述排序產生對應於所述資料元素陣列的已完全排序陣列,且所述實例化所述一或多個計算組件可更包括由所述可重新配置處理裝置實例化連接至所述多個本地排序計算組件中的每一者的輸出的所述全域排序計算組件。
100、200:儲存系統
102:主機電腦
104:儲存裝置
104a:SSD
106:可重新配置處理(RP)裝置
106a:FPGA
108:主機處理器
110:主機記憶體
112:儲存介面
114:RP記憶體
114a:DRAM/FPGA DRAM
116:RP加速器
116a:FPGA加速器/排序核心
202:FPGA板
204:介面
206:區塊隨機存取記憶體(BRAM)
208:BRAM緩衝器
210:計算組件
212:資料重新定序器
302、304、306:步驟
400:處理元件/處理元件PE
402、504:控制器
404:本地比較器
406:本地合併器
450:比併排序
500:處理單元/處理單元PU
502:仲裁器
506:位址轉譯器
508:全域比較器
510:全域合併器
600:方法
605、610、615、620、625、630、635、640、645:操作
702:直接互連
PE0、PE1、PE2~PE7:處理元件
藉由參照附圖閱讀對示例性實施例的以下詳細說明,本揭露的以上及其他態樣及特徵將對於熟習此項技術者而言變得更顯而易見,在附圖中:圖1是根據本揭露一或多個示例性實施例的儲存系統的系統圖。
圖2是根據本揭露一或多個示例性實施例的儲存系統的方塊圖。
圖3是根據本揭露一或多個示例性實施例的排序操作的例示性例子。
圖4是根據本揭露一或多個示例性實施例的儲存系統的處理元件的方塊圖。
圖5是根據本揭露一或多個示例性實施例的儲存系統的處理單元的方塊圖。
圖6是示出根據本揭露一或多個示例性實施例的動態地
擴縮排序操作的方法的流程圖。
圖7是根據本揭露一或多個示例性實施例的儲存系統的系統圖。
在下文中,將參考附圖來更詳細地闡述示例性實施例,在所有附圖中相同的參考編號指代相同的元件。然而,本發明可實施為各種不同的形式,且不應被視為僅限於本文中所例示的實施例。確切而言,提供該些實施例作為例子是為了使本揭露將透徹及完整,且將向熟習此項技術者充分傳達本揭露的態樣及特徵。因此,可不闡述對於此項技術中具有通常知識者全面理解本揭露的態樣及特徵而言所不必要的製程、元件及技術。除非另外指出,否則在所有附圖及本書面說明通篇中,相同的參考編號表示相同的元件,且因此可不再對其進行贅述。此外,在圖式中,為清晰起見,可誇大及/或簡化元件、層及區的相對大小。
根據本揭露的一或多個示例性實施例,可提供一種用於排序加速的階層式架構,其中可根據各種要求、資源可用性及/或類似情況,利用可重新配置設計在達成寬範圍的效能與面積折衷方面提高設計靈活性及可擴縮性(scalability)。舉例而言,簡而言之,可提供其中一或多個基於模板的計算組件可被高度最佳化的基於模板的階層式架構。在一些實施例中,可根據各種靜態及/或動態要求(例如,使用者要求、資源要求、資料大小及/或類似要求)來動態地實例化計算組件,以提高排序操作的效率。舉例而言,
在一些實施例中,可根據傳入資料陣列的大小增加及/或減少(例如,即時地或近即時地)計算組件。舉例而言,在此種情形中,可減少或消除由固定排序引擎對傳入資料陣列強加的固定大小限制。
在一些實施例中,藉由在可重新配置處理裝置中而不是在主機電腦中執行排序步驟,可提高或最佳化排序操作的效能。舉例而言,可由可重新配置處理裝置來執行排序操作,而不是利用主機電腦的資源(例如,中央處理單元(central processing unit,CPU)利用率)來實行排序操作,進而使得主機電腦的資源可被用於其他操作及功能。因此,可藉由降低主機電腦的資源利用率(例如,CPU利用率)來減少能耗。此外,在一些實施例中,可重新配置處理裝置可被配置用於達成資料層級平行性(data-level parallelism),且合適的平行排序演算法(例如,比併排序)可被可重新配置處理裝置用來平行地(例如,並行地)實行多個排序步驟。因此,可減少排序操作的執行時間,且可減少排序操作的能耗。
在一些實施例中,可藉由減少或消除由主機電腦強加的瓶頸(例如,CPU利用率、週邊組件互連(peripheral component interconnect,PCI)頻寬及/或類似瓶頸)來提高排序操作的可擴縮性。舉例而言,在一些實施例中,可在可重新配置處理裝置與儲存裝置之間提供直接互連,進而使得可重新配置處理裝置與儲存裝置之間的直接資料傳送可被賦能,而不在資料傳送中牽涉主機電腦。在此種情形中,舉例而言,可重新配置處理裝置可經由直接互連自儲存裝置直接存取傳入資料陣列,而不是讓主機電腦將傳入
資料陣列自儲存裝置傳送至可重新配置處理裝置以進行排序。因此,可減少或消除由主機電腦強加的瓶頸(例如,CPU利用率、PCI頻寬及/或類似瓶頸),且可藉由減少例如CPU利用率、執行時間及/或類似瓶頸來減少主機電腦的能耗。
圖1是根據本揭露一或多個示例性實施例的儲存系統的系統圖。
參照圖1,儲存系統100可包括主機電腦102、儲存裝置104及可重新配置處理(RP)裝置(例如,可重新配置處理電路或嵌入式處理裝置)106。主機電腦102以可通訊方式連接至儲存裝置104及RP裝置106,並向其提供命令,以根據所述命令處理儲存於儲存裝置104上的資料元素。舉例而言,主機電腦102可提供排序命令,進而使得RP裝置106對儲存於儲存裝置104中的資料元素陣列進行排序。
主機電腦102可包括主機處理器108及主機記憶體110。主機處理器108可為主機電腦102的通用處理器,(舉例而言)例如中央處理單元(CPU)。主機記憶體110可被視為主機電腦102的高效能主記憶體(例如,主要記憶體)。舉例而言,在一些實施例中,主機記憶體110可包括(或者可為)揮發性記憶體,(舉例而言)例如動態隨機存取記憶體(DRAM)。然而,本揭露不限於此,且如熟習此項技術者所應知,主機記憶體110可包括(或者可為)用於主機電腦102的任何合適的高效能主記憶體(例如,主要記憶體)替換物。舉例而言,在其他實施例中,主機記憶體110可
為例如Z-NANDTM(可自三星(Samsung)獲得)、3D X-POINTTM(可自英特爾(Intel)及美光技術(Micron Technology)獲得)、相變記憶體、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移扭矩隨機存取記憶體(spin transfer torque RAM,STTRAM)及/或類似物等可提供迅速存取及低輸入/輸出(input/output,IO)潛時的相對高效能的非揮發性記憶體。
儲存裝置104可被視為可持久地儲存欲由主機電腦102存取及/或欲由RP裝置106根據命令(例如,排序)處理的資料元素的次要記憶體(secondary memory)。在此上下文中,相較於主機記憶體110的高效能記憶體,儲存裝置104可包括(或者可為)相對較慢的記憶體。舉例而言,在一些實施例中,儲存裝置104可包括例如反及快閃記憶體(NAND flash memory)等非揮發性記憶體以持久地儲存資料元素,且可包括(或者可為)例如固態驅動機(SSD)。然而,本揭露不限於此,且在其他實施例中,儲存裝置104可包括(或者可為)任何合適的儲存裝置(包括熟習此項技術者應知的任何合適的記憶體),以根據來自主機電腦102的命令(例如,排序命令)持久地儲存欲由RP裝置106處理(例如,排序)的資料元素陣列。在又一些其他實施例中,儲存裝置104可包括可將資料傳送至可重新配置處理裝置106以進行排序的任何合適的裝置。舉例而言,在一些實施例中,儲存裝置104可包括網路卡、乙太網路SSD、波形卡(wave card)及/或類似物。在各種實施例中,儲存裝置104可符合大形狀因數標準(例如,3.5英吋硬
驅動機形狀因數)、小形狀因數標準(例如,2.5英吋硬驅動機形狀因數)、M.2形狀因數及/或類似標準。在其他實施例中,儲存裝置104可符合該些形狀因數的任何合適或期望的衍生形式。
在一些實施例中,儲存裝置104可包括儲存介面112,以促進主機電腦102與儲存裝置104之間的通訊(例如,使用連接件及協定)。在一些實施例中,儲存介面112可促進主機電腦102與儲存裝置104之間的儲存請求及響應的交換。在一些實施例中,儲存介面112可促進由儲存裝置104往來於主機電腦102的主機記憶體110進行資料傳送。舉例而言,在一些實施例中,儲存介面112(例如,其連接件及協定)可包括(或者可符合)高速週邊組件互連(Peripheral Component Interconnect Express,PCIe)、乙太網路之上的遠端直接記憶體存取(remote direct memory access,RDMA)、串列高級技術附接(Serial Advanced Technology Attachment,SATA)、光纖通道、串列附接小電腦系統介面(small computer system interface,SCSI)(Serial Attached SCSI,SAS)、高速非揮發性記憶體(Non Volatile Memory Express,NVMe)及/或類似物。在其他實施例中,儲存介面112(例如,其連接件及協定)可包括(或者可符合)各種通用介面,(舉例而言)例如乙太網路、通用串列匯流排(Universal Serial Bus,USB)及/或類似物。
RP裝置106可根據來自主機電腦102的命令處理儲存於儲存裝置104上的資料元素。舉例而言,在一些實施例中,RP裝置106可根據來自主機電腦102的排序命令對儲存於儲存裝置
104上的資料元素陣列進行排序。由於RP裝置106代替主機電腦102執行排序命令,因此可減少主機電腦102的資源使用量(例如,CPU使用量及/或類似使用量)。因此,RP裝置106可與儲存裝置104以可通訊方式連接,以存取儲存於儲存裝置104上的資料元素。舉例而言,在各種實施例中,RP裝置106可經由主機電腦102及/或經由直接(或私人)互連以可通訊方式連接至儲存裝置104,下文將參照圖6對此進行更詳細的闡述。在此上下文中,RP裝置106可被視為儲存裝置104的與主機處理器108分離且不同的儲存處理器(或補充處理器)。在各種實施例中,RP裝置106可被實施為積體電路(integrated circuit,IC),且可嵌入於與儲存裝置104所嵌入於的板相同的板(例如,相同的電路板)上,或者可實施於與儲存裝置104所實施於的板分離的單獨的板(例如,單獨的電路板)上。
在一些實施例中,RP裝置106可被配置用於資料元素的平行處理,進而使得各種處理步驟可平行地(例如,並行地)執行。舉例而言,在一些實施例中,RP裝置106可包括(或者可為)配置有合適的排序演算法以平行地(例如,並行地)對資料元素陣列的列及/或行進行排序的現場可程式化閘陣列(FPGA),但本揭露不限於此。舉例而言,在其他實施例中,RP裝置106可包括(或者可為)配置有合適的排序演算法以平行地(例如,並行地)對資料元素進行排序,或以順序過程對資料元素進行排序的可重新配置特殊專用積體電路(Application Specific Integrated Circuit,ASIC)
(例如,動態可程式化ASIC)。
更詳言之,在一些實施例中,RP裝置106可包括RP記憶體114及RP加速器116。在一些實施例中,RP記憶體114可被視為RP裝置106的不同於(例如,有別於)主機記憶體110及儲存裝置104的記憶體的內部記憶體。在一些實施例中,RP記憶體114可由RP裝置106用於快取(例如,儲存或臨時儲存)自儲存裝置104擷取的資料元素(例如,經由主機電腦102或經由直接互連擷取的資料元素),且根據來自主機電腦102的排序命令對快取於RP記憶體114中的資料元素進行排序。在此上下文中,當相較於主機記憶體110及儲存裝置104的記憶體的容量時,RP記憶體114可被視為較低容量記憶體。在各種實施例中,RP記憶體114可包括(或者可為)揮發性記憶體,(舉例而言)例如DRAM,但本揭露不限於此,且在其他實施例中,RP記憶體114可包括(或者可為)熟習此項技術者應知的任何合適的揮發性記憶體或非揮發性記憶體。舉例而言,在各種實施例中,RP記憶體114可包括(或者可為)Z-NANDTM、3D X-POINTTM、緊耦合記憶體(Tightly-Coupled Memory,TCM)、相變記憶體、電阻式RAM、STTRAM及/或類似物。
在一些實施例中,RP加速器116可被配置以促進(例如,加速)與命令(例如,排序命令)相關聯的操作。舉例而言,RP加速器116可包括被配置以實施任何合適的排序演算法來對資料元素(例如,資料元素陣列)進行排序的多個計算組件。舉例而
言,計算組件可包括一或多個處理元件(PE)及/或一或多個處理單元(PU),下文將對此進行更詳細的論述。在一些實施例中,計算組件(例如,PU及PE)可為可組合的(composable),且可根據使用者要求、應用類型(例如,資料庫應用、繪圖應用及/或類似應用)、資料元素陣列的大小、RP裝置106的資源約束條件(例如,記憶體、通道數目及/或類似條件)、RP裝置106正在計算或等待計算(例如,並行處理或順序處理)的其他操作的數目及/或類似因素來動態地配置,下文將對此進行更詳細的論述。
圖2是根據本揭露一或多個示例性實施例的儲存系統的方塊圖。圖2中所示的儲存系統200可與圖1中所示的儲存系統100相同或實質上相同(或相似),且因此,可簡化對儲存系統200的贅述或可不再對其予以贅述。在下文中,為方便起見,SSD 104a可被闡述為儲存裝置104的代表性例子,DRAM 114a可被闡述為RP記憶體114的代表性例子,且FPGA 106a可被闡述為RP裝置106的代表性例子。然而,如以上所論述,本揭露不限於該些代表性例子,且儲存裝置104、RP記憶體114及RP裝置106中的每一者可包括(或者可為)以上關於其論述的例子中的任何合適的例子,及/或可包括熟習此項技術者已知的其他合適的例子。
參照圖2,在一些實施例中,儲存系統200可包括主機電腦102、SSD 104a及FPGA 106a。主機電腦102以可通訊方式連接至SSD 104a及FPGA 106a,並向其提供命令以處理儲存於SSD 104a上的資料元素。舉例而言,主機電腦102可提供排序命
令,進而使得FPGA 106a根據合適的排序演算法對儲存於SSD 104a中的資料元素陣列進行排序。在一些實施例中,FPGA 106a可包括包含DRAM 114a、FPGA加速器116a及介面204的FPGA板(例如,FPGA電路板)202,以促進DRAM 114a與FPGA加速器116a之間的通訊。舉例而言,在一些實施例中,DRAM 114a可實施為FPGA板202上的多個記憶體胞元(memory cell),且FPGA加速器116a可實施於FPGA板202上的核心(例如,排序核心)上。
本文中所使用的「記憶體胞元」指代記憶體中能夠儲存資料的最小單元。舉例而言,DRAM記憶體胞元可儲存一個位元的資料,且可包括用於儲存電荷的電容器以及用於選擇性地用所述一個位元的資料對電容器進行充電的電晶體。
在一些實施例中,DRAM 114a可快取輸入資料(例如,SSD 104a的欲排序的資料元素),且介面204可用於將輸入資料自DRAM 114a讀取至FPGA加速器116a的區塊隨機存取記憶體(Block Random Access Memory,BRAM)206。舉例而言,介面204可包括(或者可為)512位元高級可擴展介面(Advanced Extensible Interface,AXI介面),但本揭露不限於此,且介面204可包括(或者可為)使用任何合適的協定將輸入資料自DRAM 114a讀取至BRAM 206的任何合適的介面,如熟習此項技術者所應知。
FPGA加速器116a可包括BRAM 206、BRAM緩衝器208、多個計算組件210及資料重新定序器(data reorderer)212。
FPGA加速器116a可使用任何合適的排序演算法對BRAM 206中的輸入資料進行排序,且可將已排序的輸入資料儲存至BRAM緩衝器208中。在一些實施例中,由FPGA加速器116a使用的排序演算法可根據RP裝置106的裝置的類型及/或RP裝置106的處理能力及功能來確定(例如,可預先確定),進而使得排序操作可被增強(例如,加速、改善及/或最佳化)。
舉例而言,在一些實施例中,當RP裝置106是FPGA 106a時,所使用的排序演算法可為利用FPGA 106a的平行處理能力的平行排序演算法,(舉例而言)例如比併排序。根據示例性實施例,相較於其他排序演算法,比併排序可改善或最佳化平行處理實施方案中的效能。在比併排序的每一步驟(例如,每個步驟)中,操作的數目可保持相同,且比併排序中的主要操作是比較及調換(swap)。舉例而言,將兩個數字進行比較,且基於排序方向,可調換所述兩個數字。此外,在比併排序中,所有排序步驟可彼此平行地(例如,並行地)執行。因此,在比併排序的所有步驟中,可使用所有所分配的資源。因此,儘管當相較於其他排序演算法(例如,快速排序(Quick Sort)、合併排序及類似演算法)時,比併排序可能具有更高的時序複雜性,然而比併排序可為(舉例而言)例如FPGA、圖形處理單元(Graphical Processing Unit,GPU)及/或類似物等具有平行計算能力的處理器所期望的。同樣地,由於FPGA 106a可被配置用於達成資料層級平行性,因此當相較於其他排序演算法時,FPGA 106a可進一步改善或最佳化比併排序的
加速。然而,本揭露不限於此,且可使用(舉例而言)例如快速排序、合併排序、插入排序、選擇排序、或類似排序或者其組合等任何合適的平行或順序排序演算法來對輸入資料進行排序。
簡要參照圖3,圖3是根據本揭露一或多個示例性實施例的排序操作的例示性例子。作為例示性例子,圖3示出對於8個隨機輸入的比併排序的例子。比併排序是一種使用比併序列來產生已排序陣列的平行排序演算法。舉例而言,比併排序將比併序列變換成單調排序的序列。比併序列可被視為包括一個升序且另一個降序的兩個已排序片段的已部分排序陣列。舉例而言,可對大小為N的兩個已排序陣列進行組合及合併,以創建大小為2N的已排序陣列(其中N是整數)。將第二個陣列反轉並序連至第一個陣列,以創建比併序列。舉例而言,比併序列1、2、2、4、5、6、8、5、4、3、2、1可被視為包括一個升序且另一個降序的兩個已排序單調子序列的已部分排序列表。可對比併序列進行合併(例如,使用比併合併)以將比併序列變換成已排序陣列。
如圖3中所示,對於8個隨機輸入,比併排序可包括3個步驟302、304及306,且每一步驟可包括由箭頭所指示的4次比較。實線箭頭示出升序比較,且虛線箭頭示出降序比較。對於每次比較,會對兩個數字進行比較,且可根據排序方向對所述兩個數字進行調換。在比併排序中,可以預先定義的順序對元素進行比較,且比較的順序不取決於輸入資料。因此,在比併排序的步驟(例如,在所有步驟中)302、304及306中的每一者中,可使用
所分配資源中的所有者,且可平行地(例如,並行地)執行所述步驟中的每一者。在下文中,為方便起見,比併排序可被闡述為由FPGA加速器116a用來加速排序操作的排序演算法的代表性例子。然而,如以上所論述,本揭露不限於使用比併排序作為排序演算法的代表性例子,且由FPGA加速器116a使用的排序演算法可包括(或者可為)以上所論述的其他示例性排序演算法中的任何合適的一者,及/或可包括熟習此項技術者已知的其他合適的排序演算法例子。
重新參照圖2,可將所述多個計算組件210配置以使用比併排序演算法(或任何其他合適的排序演算法)對儲存於BRAM 206上的輸入資料(例如,資料元素)進行排序。在一些實施例中,所述多個計算組件210可包括一或多個處理元件PE及/或一或多個處理單元PU。舉例而言,在一些實施例中,所述多個計算組件210可包括一或多個處理單元PU,且每一處理單元PU可依據要求(例如,使用者要求、應用要求、資料大小要求及/或類似要求)包括多個處理元件PE。在另一例子中,計算組件210可包括一個處理單元PU,且所述一個處理單元PU可依據要求包括任何合適或期望數目的處理元件PE。在又一例子中,計算組件210可依據要求包括單一處理元件PE,且在此種情形中,可不包括任何處理單元PU。
換言之,處理元件PE可被視為可對自BRAM 206讀取的資料元素(例如,整數元素)進行排序的較低階排序計算組件
(例如,作為本地排序計算組件),且處理單元PU可被視為可對處理元件PE的輸出進行排序的較高階排序計算組件(例如,作為全域排序計算組件)。舉例而言,處理單元PU可包括多個處理元件PE,且處理單元PU可對所述多個處理元件PE的輸出進行排序。此外,當存在多個處理單元PU時,資料重新定序器212可對所述多個處理單元PU的輸出進行定序(例如,排序及/或合併)。然而,本揭露不限於此,且可省略資料重新定序器212。舉例而言,當FPGA 106a包括僅一個處理元件PE或僅一個包括多個處理元件PE的處理單元PU時,可省略資料重新定序器212。
在一些實施例中,處理單元PU及處理元件PE中的每一者可為動態可組合的及/或可配置的。舉例而言,在一些實施例中,FPGA 106a可根據需要或期望動態地實例化任何期望或合適數目的處理元件PE及/或處理單元PU,以便例如增加或改善排序操作的效率。舉例而言,不同的資料庫應用可具有各種的操作及規範,且因此,不同的操作及核心可實施在FPGA 106a上,以便加速FPGA 106a上的不同資料庫應用。在此種情形中,FPGA 106a的可用資源可分佈於核心(例如,排序核心116a)之中,且因此,對於不同的應用,每一核心的可用資源量可有所變化。
因此,在一些實施例中,FPGA 106a可根據各種使用者要求、應用要求、支援其他操作(例如,讀取、寫入及/或類似操作)的要求、資料大小要求、資源要求及/或類似要求來增加或減少處理單元PU及/或處理元件PE的數目。舉例而言,FPGA 106a
包括可程式化邏輯區塊陣列以及以各種不同配置連接邏輯區塊的多個可重新配置互連。可使用合適的硬體描述語言(Hardware Description Language,HDL)對邏輯區塊及互連進行程式化(例如,重新程式化(regrogrammed)或重新配置)。在此種情形中,藉由在運行時間(例如,即時地或近即時地)及/或在設置時間(setup time)根據各種靜態及/或變化的要求動態地對邏輯區塊及/或互連進行重新程式化或重新配置,FPGA 106a可實例化任何合適或期望數目的處理單元PU及/或處理元件PE。在一些實施例中,當使用平行處理排序演算法時,FPGA 106a可藉由增加或減少平行地實行排序步驟的處理元件PE及/或處理單元PU的數目來增加或減少排序操作的平行化。將參照圖4及圖5更詳細地論述處理單元PU及處理元件PE的示例性結構及/或配置實施方案。
圖4是根據本揭露一或多個示例性實施例的儲存系統的處理元件(例如,本地排序計算組件)的方塊圖。圖4中所示的處理元件PE 400可與以上參照圖3闡述的處理元件PE相同或實質上相同(或相似),且因此,可簡化對處理元件PE 400的贅述或可不再對其予以贅述。
參照圖4,處理元件400可包括控制器402、本地比較器(例如,陣列比較器)404及本地合併器(例如,比併合併器)406。控制器402可自BRAM緩衝器208讀取輸入資料,以由處理元件400使用(舉例而言)例如圖4的450中所示的比併排序等合適的排序演算法進行排序。舉例而言,本地比較器404可對自
BRAM緩衝器208讀取的輸入資料進行比較,且本地合併器406可根據排序演算法合併輸入資料,以產生輸入資料的排序陣列。已排序陣列可儲存於BRAM緩衝器208中。
作為代表性例子,處理元件400可藉由對1024個列進行排序(例如,使用本地比較器404及本地合併器406)來實行本地排序操作,從而對64K個整數元素進行本地排序,其中每一列具有64個元素,(舉例而言)如圖4的450中所示。舉例而言,在使用本地合併器406實行合併(例如,比併合併)之後,1024個各別排序的列可變成64K元素(其中K=1024)已排序陣列。然而,本揭露不限於圖4中所示的代表性例子,且處理元件400可根據FPGA 106a的被分配用於處理元件400的資源(例如,DRAM 114a及/或BRAM 206(例如,參見圖2)的大小及/或容量)來對任何合適或期望數目的整數元素進行排序。
在一些實施例中,由處理元件400排序的輸入資料可為與來自主機電腦102(例如,參見圖1)的排序命令相關聯的資料元素的片段(例如,部分或子集)。舉例而言,在一些實施例中,與排序請求相關聯的資料元素陣列的大小可能超過可使用單一處理元件400高效排序的資料量。在此種情形中,FPGA 106a可實例化一或多個附加處理元件400,且處理元件400中的每一者可對與排序命令相關聯的資料元素的不同片段(例如,不同部分或不同子集)進行排序,以產生資料元素的已部分排序陣列。在一些實施例中,處理元件400可彼此平行地(例如,並行地)產生其對應的
已部分排序陣列。舉例而言,在處理元件400所使用的排序演算法是比併排序的情形中,處理元件400中的每一者可彼此平行地(例如,並行地)對輸入資料實行比較。在一些實施例中,所述多個處理元件400可彼此平行地對資料元素的部分的片段進行排序,且可隨後彼此平行地對資料元素的不同部分的附加片段進行排序(例如,當輸入資料太大而無法一次全部排序時)。在一些實施例中,如參照圖5更詳細地論述,FPGA 106a可進一步實例化一或多個處理單元PU,以對所述多個處理元件400的輸出進行排序,從而產生資料元素的已完全排序陣列。
圖5是根據本揭露一或多個示例性實施例的儲存系統的處理單元(例如,全域排序計算組件)的方塊圖。圖5中所示的處理單元500可與以上參照圖3闡述的處理單元PU相同或實質上相同(或相似),且因此,可簡化對處理單元500的贅述或可不再對其予以贅述。
參照圖5,處理單元500可包括多個處理元件PE0至PE7、仲裁器502、控制器504、位址轉譯器506、全域比較器508及全域合併器510。處理元件PE0至PE7中的每一者可具有與以上參照圖4論述的處理元件400的配置相同或實質上相同的配置,且因此,可簡化對處理元件PE0至PE7中的每一者的贅述或可不再對其予以贅述。
如以上所論述,在一些實施例中,所述多個處理元件PE0至PE7中的每一者可產生與排序命令相關聯的資料元素的片段
(例如,部分或子集)的已部分排序陣列,且處理單元500可對所述多個處理元件PE0至PE7的輸出進行排序(例如,全域排序),以產生資料元素的已完全排序陣列。儘管圖5示出八個處理元件PE0至PE7,然而本揭露不限於此,且處理單元500可根據要求(例如,使用者要求、應用要求、資料大小要求、資源要求及/或類似要求)包括任何合適數目的處理元件PE。
更詳言之,控制器504可提供控制訊號來操作排序(例如,比併排序)。仲裁器502可處置部分排序(例如,由處理元件PE0至PE7中的每一者輸出的部分排序)的多次迭代。舉例而言,仲裁器502可向位址轉譯器506提供對儲存於BRAM緩衝器208(例如,參見圖4)上的處理元件PE0至PE7中的每一者的輸出的存取,進而使得處理元件PE0至PE7的輸出可由處理單元500進一步排序。舉例而言,位址轉譯器506可將處理元件PE0至PE7的輸出映射至處理單元PU 500的緩衝器,以由處理單元PU 500(例如,由全域比較器508及全域合併器510)進一步排序。舉例而言,處理單元PU 500可包括統一隨機存取記憶體(Unified Random Access Memory,URAM)緩衝器,所述URAM緩衝器儲存用於由處理單元500排序的處理元件PE0至PE7的輸出且儲存自全域比較器508及全域合併器510輸出的排序結果。在對所有片段進行排序(例如,由處理元件PE0至PE7中的每一者)之後,由全域比較器508(例如,根據比併排序演算法)對所得的部分陣列進行全域排序,且使用全域合併器510(例如,根據比併合併演
算法)對已排序片段進行合併,以對陣列進行全域排序。若輸入資料陣列包括欲排序的又一些片段,則所述又一些片段可由處理元件PE部分排序,且由處理元件部分排序的陣列可由處理單元500進一步排序。因此,藉由動態地實例化處理元件PE及處理單元PU的任何合適的組合來實行排序操作,可提供用於加速(例如,改善及/或最佳化)排序操作的動態可擴縮階層式架構。
圖6是示出根據本揭露一或多個示例性實施例的動態地擴縮排序操作的方法的流程圖。然而,本揭露不限於圖6中所示的方法600的操作順序或數目,且可被變更為此項技術中具有通常知識者所認識到的任何期望的操作順序或數目。舉例而言,在一些實施例中,次序可有所改變,或者所述方法可包括更少的或附加的操作。
參照圖6,方法600可開始,且在操作605處,可自主機電腦102接收排序命令。舉例而言,排序命令可指代由主機電腦102發出的對儲存於SSD 104a中的輸入資料陣列進行排序的命令。在操作610處,可辨識輸入資料陣列的大小。舉例而言,在一些實施例中,FPGA 106a可分析排序命令以辨識輸入資料陣列的大小。在一些實施例中,在操作615處,可將輸入資料陣列的大小與臨限值大小(例如,參考大小)進行比較。舉例而言,在一些實施例中,FPGA 106a可將輸入資料陣列的大小與一或多個臨限值大小(例如,一或多個參考大小)進行比較,以便根據輸入資料陣列的大小來確定欲實例化的計算組件210(例如,參見圖2、圖4
及圖5)的合適配置。換言之,所述一或多個臨限值大小可對應於可用於根據輸入資料陣列的大小及/或各種要求(例如,使用者要求、應用類型、資源分配要求、支援其他操作的要求及/或類似要求)來高效地對輸入資料陣列進行排序的處理元件PE及/或處理單元PU的不同配置。
舉例來說,在一些實施例中,所述一或多個臨限值大小可儲存於查找表(look-up table,LUT)及/或類似物中,且所述一或多個臨限值大小中的每一者可與處理元件PE及/或處理單元PU的合適或期望的組合(例如,預先確定的組合)關聯,處理元件PE及/或處理單元PU的所述合適或期望的組合(例如,預先確定的組合)可被實例化以根據輸入資料陣列的大小高效地對輸入資料陣列進行排序。舉例而言,小於第一臨限值的輸入資料陣列的大小可指示單一處理元件PE可足以高效地對輸入資料陣列進行排序。在另一例子中,大於或等於第一臨限值且小於第二臨限值的輸入資料陣列的大小可指示連接至單一處理單元PU的多個處理元件PE可足以高效地對輸入資料陣列進行排序。在又一例子中,大於或等於第二臨限值的輸入資料陣列的大小可指示各自包括多個處理元件PE的多個處理單元PU可足以高效地對輸入資料陣列進行排序。然而,本揭露不限於該些例子,且應理解,臨限值大小可根據處理元件PE及/或處理單元PU的各種粒度組合以及根據各種使用者要求、資源分配要求、應用類型、欲支援的其他操作及/或類似要求來劃分。
重新參照圖6,在一些實施例中,當在操作615處輸入資料陣列的大小小於臨限值大小(例如,否)時,可確定單一處理元件PE可足以如以上所論述高效地對輸入資料陣列進行排序。因此,在操作620處,可實例化所述單一處理元件PE,且在操作625處,所述單一處理元件PE可對整個輸入資料陣列進行排序(例如,以平行過程或順序過程),以產生輸入資料陣列的已完全排序陣列。在操作645處,可將已完全排序陣列返回至主機電腦,且所述方法可結束。
另一方面,當在操作615處輸入資料陣列的大小大於臨限值大小(例如,是)時,可確定包括多個處理元件PE的至少一個處理單元PU可足以如以上所論述高效地對輸入資料陣列進行排序。舉例而言,在此種情形中,操作615可包括輸入資料陣列的大小與一或多個臨限值的一或多個比較,以確定欲實例化的合適數目的處理單元PU及處理元件PE,進而使得輸入資料陣列可被高效地排序。因此,在操作630處,可實例化包括多個處理元件PE的至少一個處理單元PU,且在操作635處,所述多個處理元件PE可對輸入資料陣列的不同片段(例如,不同部分或不同子集)進行排序,以產生輸入資料陣列的已部分排序陣列。舉例而言,輸入資料陣列可在所述多個處理元件PE之中被劃分片段,且每一處理元件PE可產生對應於其輸入資料片段的已部分排序陣列。
在操作640處,可由處理單元PU對已部分排序陣列進行排序,以產生輸入資料陣列的已完全排序陣列。舉例而言,可由
處理單元PU對由處理元件PE輸出的已部分排序陣列進一步排序(例如,全域排序),以產生輸入資料陣列的已完全排序陣列。在操作645處,可將已完全排序陣列提供至主機電腦102,且所述方法可結束。
圖7是根據本揭露一或多個示例性實施例的儲存系統的系統圖。圖7中所示的儲存系統700可與圖1中所示的儲存系統100相同或實質上相同(或相似),且因此,可簡化對儲存系統700的贅述或可不再對其予以贅述。然而,與圖1中所示的儲存系統100不同,圖7中所示的儲存系統700可進一步包括位於RP裝置106(例如,FPGA 106a)與儲存裝置104(例如,SSD 104a)之間的直接(或私人)互連702。舉例而言,在一些實施例中,直接互連702可由FPGA 106a用來直接存取儲存於SSD 104a中的輸入資料陣列,並將輸入資料陣列讀取至FPGA DRAM 114a,而不牽涉主機電腦102。因此,可減少由主機電腦102強加的潛時及通量限制。
更詳言之,參照圖1所示實施例,主機電腦102自儲存裝置104(例如,SSD 104a)讀取輸入資料陣列,並將輸入資料陣列加載至主機記憶體110中。主機電腦102然後將輸入資料陣列自主機記憶體110傳輸至RP記憶體114(例如,FPGA DRAM 114a),以啟動排序。在此種情形中,主機電腦102、儲存裝置104(例如,SSD 104a)及RP裝置106(例如,FPGA 106a)之間的通訊成本可能會增加,且潛時及通量限制可能會增加。此外,當與多個SSD
進行通訊時,由於大的CPU費用及在多個SSD之間共享PCI頻寬,例如主機電腦102等通用處理器在可擴縮性上可能具有限制。
相較而言,參照圖7中所示的實施例,FPGA 106a可使用點對點(P2P)通訊經由直接互連702直接存取一或多個SSD(例如,SSD 104a),而不牽涉主機電腦102。舉例而言,代替首先將資料加載至主機記憶體110且然後將資料發送至FPGA DRAM 114a以啟動排序,FPGA 106a可直接存取SSD 104a以讀取陣列元素。在排序之後,將已排序片段儲存於FPGA DRAM 114a上,且可加載下一片段且對所述下一片段進行排序。藉由直接互連702在FPGA 106a與SSD 104a之間進行P2P通訊可減少或消除向主機記憶體110寫入及自主機記憶體110讀取的費用,且可藉由移除或減少與藉由主機記憶體110進行通訊相關聯的費用來減少操作潛時。
根據本揭露的實施例,藉由使計算更接近儲存裝置,可降低輸入/輸出(I/O)成本,且可增加管理較大儲存系統方面的系統可擴縮性。舉例而言,管理具有多個SSD的較大儲存系統的可擴縮性通常可能受到以下因素的限制:對大型主機記憶體的要求、讀取資料的CPU費用以及在資源之間共享PCI頻寬。藉由在直接互連702之上使用P2P通訊,可藉由移除或減輕此種瓶頸來增加系統可擴縮性。此外,在直接互連702之上進行P2P通訊對於外部排序可能特別有用,當被排序的資料不適合計算裝置(例如,主機電腦102)的主記憶體(例如,通常是DRAM)時,可使用所述
外部排序,進而使得資料被遷移至較慢的外部儲存(例如SSD 104a)中。對於可能需要對SSD 104a進行多次讀取及寫入的外部排序,減少的資料存取潛時可改善FPGA 106a內計算資源的利用率。
應理解,儘管本文中可使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受該些用語限制。該些用語用於區分各個元件、組件、區、層或區段。因此,在不背離本揭露的精神及範圍的情況下,可將下文所述的第一元件、組件、區、層或區段稱為第二元件、組件、區、層或區段。
應理解,當一元件或層被稱為「位於」另一元件或層「上」、「連接至」或「耦合至」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至或直接耦合至所述另一元件或層,或者亦可存在一或多個中間元件或層。
本文中所使用的術語用於闡述特定實施例,而非旨在限制本揭露。除非上下文另外清楚地指明,否則本文中所使用的單數形式「一(a及an)」亦旨在包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及comprising)」、「包含(includes及including)」、「具有(has、have及having)」時是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文中所使用的用語「及/或」包括相關聯列出項中一或多者中的任一者及所有組合。例如「...中的至少一者」等表達當位
於一系列元件之前時是修飾整個系列的元件,而非修飾所述系列中的個別元件。
本文中所使用的用語「實質上(substantially)」、「約(about)」及相似用語被用作近似值用語而非程度用語,且旨在慮及此項技術中具有通常知識者將認識到的量測值或計算值的固有變化。此外,當使用「可」來闡述本揭露實施例時是指代「本揭露的一或多個實施例」。本文中所使用的用語「使用(use)」、「正使用(using)」及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」及「被利用(utilized)」同義。
除非另外定義,否則本文中所使用的全部用語(包括技術用語及科學用語)的含義均與本揭露所屬技術中具有通常知識者所通常理解的含義相同。更應理解,用語(例如,在常用字典中所定義的用語)應被解釋為具有與其在相關技術及/或本說明書的上下文中的含義一致的含義,且不應將其解釋為具有理想化或過於正式的意義,除非本文中明確地如此定義。
前述內容例示本揭露的示例性實施例,而不應被解釋為限制本揭露。儘管出於例示目的已經揭露本發明的一些示例性實施例,然而熟習此項技術者應理解,在全然不背離隨附申請專利範圍及其等效範圍中所揭露的本發明的所有精神及範圍的條件下,可對各種實施例進行各種修改、添加及/或取代。
100:儲存系統
102:主機電腦
104:儲存裝置
106:可重新配置處理(RP)裝置
108:主機處理器
110:主機記憶體
112:儲存介面
114:RP記憶體
116:RP加速器
Claims (20)
- 一種儲存系統,包括:儲存裝置,被配置以儲存與排序操作相關聯的資料元素陣列;儲存介面,被配置以促進所述儲存裝置與主機電腦之間的通訊;以及可重新配置處理裝置,以可通訊方式連接至所述儲存裝置,所述可重新配置處理裝置包括:記憶體,被配置以儲存自所述儲存裝置讀取的輸入資料,所述輸入資料對應於儲存於所述儲存裝置中的所述資料元素陣列;以及核心,包括一或多個計算組件,所述一或多個計算組件被配置以根據自所述主機電腦接收的排序命令對儲存於所述記憶體中的所述輸入資料執行所述排序操作,其中所述可重新配置處理裝置被配置以根據所述輸入資料與一或多個臨限值大小的比較動態地實例化所述一或多個計算組件以加速所述排序操作。
- 如請求項1所述的儲存系統,其中所述可重新配置處理裝置包括現場可程式化閘陣列(FPGA),且所述儲存裝置包括固態驅動機(SSD),其中所述現場可程式化閘陣列包括所述核心,且透過介面與所述記憶體進行通訊。
- 如請求項2所述的儲存系統,其中所述輸入資料由所述主機電腦自所述固態驅動機讀取並加載至所述主機電腦的主要 記憶體中,且所述現場可程式化閘陣列的記憶體被配置以自所述主機電腦的所述主要記憶體接收所述輸入資料。
- 如請求項2所述的儲存系統,更包括位於所述記憶體與所述固態驅動機之間的直接互連,且所述現場可程式化閘陣列被配置以直接存取所述固態驅動機以經由所述直接互連將所述輸入資料自所述固態驅動機讀取至所述記憶體。
- 如請求項4所述的儲存系統,其中所述現場可程式化閘陣列與所述固態驅動機實施於相同的電路板上。
- 如請求項4所述的儲存系統,其中所述現場可程式化閘陣列被配置以當自所述固態驅動機讀取資料時,使用點對點(P2P)通訊經由所述直接互連來存取所述固態驅動機,以繞過所述主機電腦。
- 如請求項4所述的儲存系統,其中所述記憶體包括動態隨機存取記憶體(DRAM)。
- 如請求項1所述的儲存系統,其中所述一或多個計算組件包括多個處理元件,且所述多個處理元件中的每一者被配置以根據排序演算法對對應於所述輸入資料的所述資料元素陣列的片段進行排序。
- 一種儲存系統,包括:儲存裝置,被配置以儲存與排序操作相關聯的資料元素陣列;儲存介面,被配置以促進所述儲存裝置與主機電腦之間的通訊;以及 可重新配置處理裝置,以可通訊方式連接至所述儲存裝置,所述可重新配置處理裝置包括:記憶體,被配置以儲存自所述儲存裝置讀取的輸入資料,所述輸入資料對應於儲存於所述儲存裝置中的所述資料元素陣列;以及核心,包括一或多個計算組件,所述一或多個計算組件被配置以根據自所述主機電腦接收的排序命令對儲存於所述記憶體中的所述輸入資料執行所述排序操作,其中所述可重新配置處理裝置被配置以動態地實例化所述一或多個計算組件以加速所述排序操作,其中所述一或多個計算組件包括多個處理元件,且所述多個處理元件中的每一者被配置以根據排序演算法對對應於所述輸入資料的所述資料元素陣列的片段進行排序,並且其中所述多個處理元件中的每一者包括本地比較器及本地合併器,且所述本地比較器及所述本地合併器被配置以使用所述排序演算法自所述片段產生已部分排序陣列。
- 如請求項9所述的儲存系統,其中所述一或多個計算組件更包括連接至所述多個處理元件中的每一者的輸出的處理單元,且所述處理單元被配置以根據所述排序演算法對所述多個處理元件的所述輸出進行排序。
- 如請求項10所述的儲存系統,其中所述處理單元包括全域比較器及全域合併器,且所述全域比較器及所述全域合併 器被配置以使用所述排序演算法自由所述多個處理元件輸出的所述已部分排序陣列產生所述輸入資料的已完全排序陣列。
- 如請求項11所述的儲存系統,其中所述排序演算法是比併排序演算法。
- 如請求項11所述的儲存系統,其中所述可重新配置處理裝置被配置以根據所述資料元素陣列的大小在運行時間動態地實例化一數目的所述多個處理元件及所述處理單元。
- 如請求項13所述的儲存系統,其中所述可重新配置處理裝置被配置以:辨識所述資料元素陣列的所述大小;將所述資料元素陣列的所述大小與一或多個臨限值大小進行比較;以及根據所述比較實例化所述數目的所述多個處理元件及所述處理單元。
- 一種用於動態地擴縮儲存系統的排序操作的方法,所述儲存系統包括儲存與所述排序操作相關聯的資料元素陣列的儲存裝置、促進所述儲存裝置與主機電腦之間的通訊的儲存介面以及以可通訊方式連接至所述儲存裝置的可重新配置處理裝置,所述方法包括:由所述可重新配置處理裝置辨識與來自所述主機電腦的排序命令相關聯的所述資料元素陣列的大小;由所述可重新配置處理裝置將所述資料元素陣列的所述大小 與一或多個臨限值大小進行比較;以及由所述可重新配置處理裝置根據所述比較實例化一或多個計算組件以加速所述排序操作。
- 如請求項15所述的方法,其中所述可重新配置處理裝置包括現場可程式化閘陣列(FPGA),且所述儲存裝置包括固態驅動機(SSD),其中所述現場可程式化閘陣列包括所述一或多個計算組件。
- 如請求項16所述的方法,其中所述實例化所述一或多個計算組件包括對所述現場可程式化閘陣列的核心的一或多個邏輯區塊及一或多個互連進行重新配置。
- 如請求項16所述的方法,其中所述實例化所述一或多個計算組件包括由所述可重新配置處理裝置實例化至少一個本地排序計算組件,並且其中所述方法更包括:由所述至少一個本地排序計算組件對所述資料元素陣列的至少片段進行排序;以及由所述至少一個本地排序計算組件產生所述至少片段的已排序陣列。
- 如請求項16所述的方法,其中所述實例化所述一或多個計算組件包括由所述可重新配置處理裝置實例化多個本地排序計算組件,並且其中所述方法更包括: 由所述多個本地排序計算組件中的每一者對所述資料元素陣列的不同片段進行排序;以及由所述多個本地排序計算組件中的每一者產生對應片段的已部分排序陣列。
- 如請求項19所述的方法,其中所述實例化所述一或多個計算組件更包括由所述可重新配置處理裝置實例化連接至所述多個本地排序計算組件中的每一者的輸出的全域排序計算組件,並且其中所述方法更包括:由所述全域排序計算組件對由所述多個本地排序計算組件中的每一者產生的所述已部分排序陣列進行排序;以及由所述全域排序計算組件自對所述已部分排序陣列的所述排序產生對應於所述資料元素陣列的已完全排序陣列。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962927626P | 2019-10-29 | 2019-10-29 | |
US62/927,626 | 2019-10-29 | ||
US16/821,811 US11249651B2 (en) | 2019-10-29 | 2020-03-17 | System and method for hierarchical sort acceleration near storage |
US16/821,811 | 2020-03-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202117532A TW202117532A (zh) | 2021-05-01 |
TWI836132B true TWI836132B (zh) | 2024-03-21 |
Family
ID=75585979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109128151A TWI836132B (zh) | 2019-10-29 | 2020-08-19 | 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11249651B2 (zh) |
JP (1) | JP7381429B2 (zh) |
KR (1) | KR102663759B1 (zh) |
CN (1) | CN112749107B (zh) |
TW (1) | TWI836132B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995448B1 (en) * | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US12112175B1 (en) | 2018-02-08 | 2024-10-08 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US10970080B2 (en) | 2018-02-08 | 2021-04-06 | Marvell Asia Pte, Ltd. | Systems and methods for programmable hardware architecture for machine learning |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US11575916B2 (en) * | 2020-10-30 | 2023-02-07 | Advanced Micro Devices, Inc. | Top palette colors selection using sorting for palette mode in video encoding |
CN113592086B (zh) * | 2021-07-30 | 2024-09-24 | 中科亿海微电子科技(苏州)有限公司 | Fpga cnn加速器并行度最优解的获得方法及系统 |
CN113900622B (zh) * | 2021-09-22 | 2022-04-08 | 中国科学院国家空间科学中心 | 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质 |
CN114356512A (zh) * | 2021-10-25 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
CN115857805B (zh) * | 2022-11-30 | 2023-06-27 | 合肥腾芯微电子有限公司 | 人工智能可计算存储系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144168A1 (en) * | 2003-12-25 | 2005-06-30 | Isamu Kurokawa | Storage system with a data sort function |
US20110314444A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Compiler-Generated Invocation Stubs for Data Parallel Programming Model |
US20150046475A1 (en) * | 2013-08-07 | 2015-02-12 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109711532A (zh) * | 2018-12-06 | 2019-05-03 | 东南大学 | 一种针对硬件实现稀疏化卷积神经网络推断的加速方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2752634B2 (ja) * | 1988-05-26 | 1998-05-18 | 優 喜連川 | ソート処理装置 |
JPH02273828A (ja) * | 1989-04-17 | 1990-11-08 | Toshiba Corp | 内部ソート方式 |
US5210870A (en) * | 1990-03-27 | 1993-05-11 | International Business Machines | Database sort and merge apparatus with multiple memory arrays having alternating access |
US5619693A (en) * | 1994-05-02 | 1997-04-08 | Tandem Computers Incorporated | Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory |
EP2528000B1 (en) | 2003-05-23 | 2017-07-26 | IP Reservoir, LLC | Intelligent data storage and processing using FPGA devices |
SG136862A1 (en) | 2006-04-21 | 2007-11-29 | Oce Tech Bv | Variable speed printing |
WO2012142069A2 (en) | 2011-04-11 | 2012-10-18 | University Of Florida Research Foundation, Inc. | Elastic computing |
US9100012B1 (en) * | 2012-12-14 | 2015-08-04 | Altera Corporation | Adaptable programs using partial reconfiguration |
US9256535B2 (en) * | 2013-04-04 | 2016-02-09 | Advanced Micro Devices, Inc. | Conditional notification mechanism |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9251218B2 (en) | 2013-08-07 | 2016-02-02 | International Business Machines Corporation | Tunable hardware sort engine for performing composite sorting algorithms |
US9495418B2 (en) | 2013-08-07 | 2016-11-15 | International Business Machines Corporation | Scalable acceleration of database query operations |
US20150149691A1 (en) | 2013-09-11 | 2015-05-28 | Glenn Austin Baxter | Directly Coupled Computing, Storage and Network Elements With Local Intelligence |
US10135737B2 (en) * | 2014-09-30 | 2018-11-20 | Nicira, Inc. | Distributed load balancing systems |
US9904793B2 (en) * | 2015-03-23 | 2018-02-27 | Intel Corporation | Systems, methods, and apparatus to provide private information retrieval |
US9740511B2 (en) | 2015-06-04 | 2017-08-22 | Advanced Micro Devices, Inc. | Per-block sort for performance enhancement of parallel processors |
US10445232B2 (en) * | 2015-07-14 | 2019-10-15 | Western Digital Technologies, Inc. | Determining control states for address mapping in non-volatile memories |
US10198264B2 (en) * | 2015-12-15 | 2019-02-05 | Intel Corporation | Sorting data and merging sorted data in an instruction set architecture |
US11740868B2 (en) * | 2016-11-14 | 2023-08-29 | Google Llc | System and method for sorting data elements of slabs of registers using a parallelized processing pipeline |
US20190235863A1 (en) * | 2018-01-31 | 2019-08-01 | Qualcomm Incorporated | Sort instructions for reconfigurable computing cores |
US10915469B2 (en) * | 2018-03-09 | 2021-02-09 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting a field programmable gate array (FPGA) based add-in-card (AIC) solid state drive (SSD) |
-
2020
- 2020-03-17 US US16/821,811 patent/US11249651B2/en active Active
- 2020-07-29 KR KR1020200094791A patent/KR102663759B1/ko active IP Right Grant
- 2020-08-19 TW TW109128151A patent/TWI836132B/zh active
- 2020-10-12 JP JP2020171938A patent/JP7381429B2/ja active Active
- 2020-10-15 CN CN202011101690.1A patent/CN112749107B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144168A1 (en) * | 2003-12-25 | 2005-06-30 | Isamu Kurokawa | Storage system with a data sort function |
US20110314444A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Compiler-Generated Invocation Stubs for Data Parallel Programming Model |
US20150046475A1 (en) * | 2013-08-07 | 2015-02-12 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
CN109711532A (zh) * | 2018-12-06 | 2019-05-03 | 东南大学 | 一种针对硬件实现稀疏化卷积神经网络推断的加速方法 |
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
KR20210052188A (ko) | 2021-05-10 |
TW202117532A (zh) | 2021-05-01 |
US20210124500A1 (en) | 2021-04-29 |
JP2021072107A (ja) | 2021-05-06 |
JP7381429B2 (ja) | 2023-11-15 |
CN112749107A (zh) | 2021-05-04 |
KR102663759B1 (ko) | 2024-05-09 |
US11249651B2 (en) | 2022-02-15 |
CN112749107B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI836132B (zh) | 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 | |
EP3612942B1 (en) | Queue management for direct memory access | |
US10459644B2 (en) | Non-volatile storage system with integrated compute engine and optimized use of local fast memory | |
Zhang et al. | Boosting the performance of FPGA-based graph processor using hybrid memory cube: A case for breadth first search | |
Kim et al. | In-storage processing of database scans and joins | |
Salamat et al. | NASCENT: Near-storage acceleration of database sort on SmartSSD | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
TWI839592B (zh) | 儲存裝置以及用於加速儲存裝置中的操作的方法 | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US11675506B2 (en) | Storage device supporting multi-tenancy and operating method thereof | |
Qiao et al. | FANS: FPGA-accelerated near-storage sorting | |
WO2020133463A1 (zh) | 神经网络系统及数据处理技术 | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
TWI537980B (zh) | 用於寫入經遮罩資料至緩衝器之裝置及方法 | |
Paul et al. | Energy-efficient hardware acceleration through computing in the memory | |
US20240037027A1 (en) | Method and device for storing data | |
CN102279728A (zh) | 数据存储设备及数据计算方法 | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
Jain et al. | Merge network for a non-von Neumann accumulate accelerator in a 3D chip | |
TWI843934B (zh) | 用於處理無結構源資料的方法及系統 | |
US12067484B2 (en) | Learning neural networks of programmable device blocks directly with backpropagation | |
US20240004719A1 (en) | Just-In-Time Re-Partitioning of Feature Maps for Efficient Balancing of Compute Core Workloads | |
Wang et al. | SH-GAT: Software-hardware co-design for accelerating graph attention networks on FPGA |