TW202129510A - 儲存裝置以及用於加速儲存裝置中的操作的方法 - Google Patents
儲存裝置以及用於加速儲存裝置中的操作的方法 Download PDFInfo
- Publication number
- TW202129510A TW202129510A TW110102835A TW110102835A TW202129510A TW 202129510 A TW202129510 A TW 202129510A TW 110102835 A TW110102835 A TW 110102835A TW 110102835 A TW110102835 A TW 110102835A TW 202129510 A TW202129510 A TW 202129510A
- Authority
- TW
- Taiwan
- Prior art keywords
- logic
- data
- memory
- logic block
- storage device
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 44
- 239000000872 buffer Substances 0.000 claims abstract description 113
- 230000003068 static effect Effects 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 12
- 230000009467 reduction Effects 0.000 description 11
- 238000001914 filtration Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 150000004770 chalcogenides Chemical class 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/0611—Improving I/O performance in relation to response time
-
- 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
- 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
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering 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/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/068—Hybrid storage device
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
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)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
本發明提供一種儲存裝置,包含:儲存控制器,自主機裝置接收資料並將資料儲存在儲存記憶體中;及可重新組態的積體電路,可通信地連接至儲存控制器並加速對儲存在儲存記憶體中的資料執行的邏輯運算,可重新組態的積體電路包含:第一邏輯區塊,執行邏輯運算當中的靜態邏輯運算;第二邏輯區塊,執行邏輯運算當中的一或多個動態邏輯運算;以及多個記憶體緩衝器,組態成儲存第一邏輯區塊及第二邏輯區塊的輸入及輸出。
Description
本揭露內容的一或多個實例實施例的態樣是關於儲存裝置,且更特定言之,是關於用於潛時關鍵及輸送量定向的資料密集型操作的近儲存加速的儲存裝置。
[相關申請案的交叉參考
]
本申請案主張2020年1月27日提交的名稱為「以潛時及輸送量為中心的可重新組態的儲存裝置(LATENCY AND THROUGHPUT CENTRIC RECONFIGURABLE STORAGE DEVICES)」的美國臨時申請案第62/966,443號的優先級及權益,所述臨時申請案的全部內容以引用的方式併入本文中。
儲存系統通常包含主機裝置及一或多個儲存裝置。此類儲存裝置包含例如磁性儲存裝置(例如,硬碟機(hard disk drive;HDD)及類似物)、光儲存裝置(例如,藍光光碟機、緊密光碟(緊密光碟;CD)驅動器、數位多功能光碟(digital versatile disc;DVD)驅動器,以及類似物)、快閃記憶體裝置(例如,USB快閃驅動器、固態磁碟機(solid-state drive;SSD)以及類似物)及/或類似物。大體而言,為了處理儲存在儲存裝置中的資料,主機裝置首先自儲存裝置讀取資料,使得資料自儲存裝置傳送至主機裝置的主記憶體中。主機裝置(例如,包含諸如中央處理單元(CPU)的主機處理器的主機裝置)接著可處理自儲存裝置傳送至主機裝置的主記憶體中的資料。
舉例而言,在資料庫管理系統的上下文中,主機裝置可藉由對儲存在儲存裝置中的資料執行各種資料密集型操作而輸出對輸入資料庫查詢的回應。作為說明性實例,主機裝置可藉由首先自儲存裝置讀取資料元素且接著處理資料元素而對儲存在儲存裝置中的資料元素的表執行各種操作(例如,過濾、排序、分組、聚合及/或類似者),以便自對應於輸入資料庫查詢的表識別及輸出資料元素的子集。此類操作可為資料密集型的,此係因為其可要求大量資料(例如,資料元素之表)自儲存裝置傳送至主機裝置以便由主機裝置處理。當藉由主機裝置處置資料密集型操作,使得大量資料在儲存裝置與主機裝置之間傳送以便處理時,主機裝置的資源(例如,CPU使用率、頻寬及/或類似者)可能過度利用,潛時可被引入,且儲存系統的效能可能降低。
相應地,可能需要用於加速更接近儲存的資料密集型操作的儲存裝置。
此背景技術部分中揭露的上述資訊用於增強對本揭露內容的背景技術的理解,且因此,其可含有不構成先前技術的資訊。
本揭露內容的一或多個實例實施例涉及一種用於潛時關鍵及輸送量定向的資料密集型操作的近儲存加速的儲存裝置,及包含其的方法。
根據本揭露內容的一或多個實例實施例,一種儲存裝置,包含:儲存控制器,組態成自主機裝置接收資料並將資料儲存在儲存記憶體中;及可重新組態的積體電路,可通信地連接至儲存控制器,且組態成加速對儲存在儲存記憶體中的資料執行的邏輯運算,可重新組態的積體電路包含:第一邏輯區塊,組態成執行邏輯運算當中的靜態邏輯運算;第二邏輯區塊,組態成執行邏輯運算當中的一或多個動態邏輯運算;以及多個記憶體緩衝器,組態成儲存第一邏輯區塊及第二邏輯區塊的輸入及輸出。
在實例實施例中,邏輯運算可對應於管線工作流程,第一邏輯區塊可組態成靜態地組態有用於管線工作流程的靜態邏輯運算,且第二邏輯區塊可組態成動態地重新組態有用於管線工作流程的至少一個級的一或多個動態邏輯運算。
在實例實施例中,一或多個動態邏輯運算可包含第一動態邏輯運算及第二動態邏輯運算,第二邏輯區塊在管線工作流程的第一級期間可組態有第一動態邏輯運算,且第二邏輯區塊在管線工作流程的第二級期間可動態地重新組態有第二動態邏輯運算。
在實例實施例中,多個記憶體緩衝器可包含:輸入輸出(I/O)緩衝器,組態成儲存第一邏輯區塊及第二邏輯區塊的輸入及輸出;中間I/O緩衝器,組態成在第二邏輯區塊正重新組態時儲存第二邏輯區塊的中間輸出;以及組態緩衝器,組態成儲存組態檔案以重新組態第二邏輯區塊。
在實例實施例中,第二邏輯區塊可藉由將儲存在組態緩衝器中的組態檔案當中的組態檔案加載至第二邏輯區塊而動態地重新組態。
在實例實施例中,在第一級期間第二邏輯區塊的輸出可儲存在中間I/O緩衝器中,第二邏輯區塊可重新組態有用於第二級的不同動態邏輯指令,且中間I/O緩衝器在第二級期間可指定為第二邏輯區塊的輸入緩衝器。
在實例實施例中,靜態邏輯運算可對應於潛時關鍵操作,且一或多個動態邏輯運算可對應於輸送量定向操作。
在實例實施例中,潛時關鍵操作可為完成時間小於第二邏輯區塊的重新組態時間的運算。
在實例實施例中,儲存裝置可為固態驅動器。
在實例實施例中,可重新組態的積體電路可為現場可程式邏輯閘陣列(field programmable gate array;FPGA)。
根據本揭露內容的一或多個實例實施例,一種用於加速儲存裝置中的操作的方法,所述儲存裝置包括:儲存控制器;儲存記憶體;以及包括第一邏輯區塊、第二邏輯區塊以及緩衝器的可重新組態的積體電路,所述方法包含:藉由第一邏輯區塊對儲存在儲存記憶體中的輸入資料執行第一邏輯運算;藉由第一邏輯區塊將第一邏輯運算的輸出儲存在緩衝器的中間輸出緩衝器中;藉由可重新組態的積體電路將第二邏輯運算組態於第二邏輯區塊中;藉由可重新組態的積體電路將中間輸出緩衝器指定為用於第二邏輯運算的輸入緩衝器;以及藉由第二邏輯區塊對儲存在中間輸出緩衝器中的第一邏輯運算的輸出執行第二邏輯運算。
在實例實施例中,當在第一邏輯區塊中執行第一邏輯運算時,第二邏輯運算可組態於第二邏輯區塊中。
在實例實施例中,將第二邏輯運算組態於第二邏輯區塊中可包含:監測中間輸出緩衝器的值;判定所述值超過臨限值;以及回應於所述值超過臨限值而將第二邏輯運算組態於第二邏輯區塊中。
在實例實施例中,臨限值可為中間輸出緩衝器的高水位標記。
在實例實施例中,緩衝器可包含組態成儲存用於組態第二邏輯區塊的組態檔案的組態緩衝器。
在實例實施例中,將第二邏輯運算組態於第二邏輯區塊中可包含:將位元檔案加載至第二邏輯區塊中,所述位元檔案對應於儲存在組態緩衝器中的組態檔案當中的第二邏輯運算。
在實例實施例中,將中間輸出緩衝器指定為用於第二邏輯運算的輸入緩衝器可包含:判定第一邏輯運算是否暫停;回應於判定第一邏輯運算暫停,將中間輸出緩衝器指定為用於第二邏輯運算的輸入緩衝器;以及將第一邏輯運算的輸入緩衝器指定為用於第二邏輯運算的輸出緩衝器。
在實例實施例中,判定第一邏輯運算是否暫停可包含:判定是否達至中間輸出緩衝器的末端。
在實例實施例中,方法可更包含:判定第二邏輯區塊已處理儲存在中間輸出緩衝器中的第一邏輯運算的所有輸出;以及將第二邏輯運算的輸出緩衝器指定為最終輸出緩衝器。
在實例實施例中,儲存裝置可為固態驅動器,且可重新組態的積體電路可為現場可程式邏輯閘陣列(FPGA)。
在下文中,將參考隨附圖式更詳細地描述實例實施例,其中相同附圖標號始終指代相同元件。然而,本揭露內容可以各種不同形式體現,且不應解釋為僅限於本文中的所說明實施例。確切而言,提供此等實施例作為實例,使得本揭露內容將為透徹且完整的,且將向所屬技術領域中具通常知識者充分傳達本揭露內容的態樣及特徵。因此,可能未描述不為所屬技術領域中具通常知識者完整理解本揭露內容的態樣及特徵所必需的程序、元件以及技術。除非另外指出,否則相同附圖標號貫穿附圖以及書面描述指相同元件,且因此,可不重複其描述。
本揭露內容的一或多個實例實施例涉及用於加速主機裝置的更接近儲存(例如,近儲存或儲存中)的資料密集型操作的儲存裝置。舉例而言,主機裝置可將資料密集型操作卸載至儲存裝置,使得儲存裝置根據資料密集型操作處理儲存於其中的資料。在此情況下,在一些實施例中,儲存裝置可處理儲存於其中的原始資料以輸出減少量的資料,且可將減少量的資料傳送至主機裝置,而非傳送待由主機裝置處理的原始資料(例如,全部原始資料)。因此,原本將藉由主機裝置對新近提取的資料執行的大量操作可卸載至儲存裝置,而非使主機裝置自儲存裝置讀取資料並處理新近提取的資料,使得主機裝置的資源(例如,CPU使用率、頻寬及/或類似者)可以例如用於跨裝置操作(例如,諸如接合來自儲存在多個儲存裝置中的表的資訊)。相應地,可例如藉由減少主機裝置與儲存裝置之間的訊務量而改良儲存系統的效能。
在一些實施例中,當資料密集型操作卸載至儲存裝置時,儲存裝置的可擴展性可藉由減少主機裝置的原本將用於處理儲存在儲存裝置中的所提取資料的資源而得以改良。舉例而言,當主機裝置處置資料密集型操作時,主機裝置可變成有效可擴展性的瓶頸。作為說明性實例,在現代資料處理系統中使用的橫向擴展群集通常可使用包含一個或兩個中低等核心計數CPU的伺服器,所述CPU可在達至其介面上的最大限度之前處置對來自4個至8個SSD的資料的處理。在此情況下,為了擴展此類資料處理系統的儲存,額外伺服器通常可添加至橫向擴展群集以便處置對來自額外SSD的資料的額外處理,而非擴展群集中的現有伺服器的核心CPU可處置的SSD的數目。另一方面,根據一或多個實例實施例,儲存裝置可加速主機裝置的資料密集型操作,使得每一伺服器可處置更多資料。舉例而言,若首先藉由儲存裝置過濾資料,使得最小已過濾表傳輸至主機裝置以與來自其他表(例如,儲存於伺服器內的相同或其他儲存裝置上)的資訊接合,則可在群集中不需要額外伺服器的情況下改良給定的決定支援基準的總體效能。
在一些實施例中,儲存裝置可至少部分地動態地(例如,即時或近即時地)可重新組態(例如,可再程式化)以處理儲存於其中的資料。舉例而言,在一些實施例中,儲存裝置可包含多個邏輯區塊,所述多個邏輯區塊組態成執行卸載至儲存裝置的資料密集型操作。在一些實施例中,邏輯區塊可包含靜態邏輯區塊及動態邏輯區塊。靜態邏輯區塊可對應於靜態地組態於儲存裝置中以用於至少整個管線工作流程的邏輯區塊。動態邏輯區塊可對應於可視要求或需要動態地重新組態以用於管線工作流程的一或多個級的邏輯區塊。如本文中所使用,管線工作流程是指在各級中對資料執行(例如,同時及/或依序地)的一系列操作(例如,程序),使得自儲存裝置讀取的資料可為至管線工作流程的第一級的第一操作的輸入,第一級的第一操作的輸出可為至管線工作流程的第二級的第二操作的輸入,諸如此類,直至管線工作流程的最終級的最終操作的輸出為一系列操作的最終結果。
在一些實施例中,對應於給定管線工作流程的操作可包含為潛時關鍵操作的一或多個操作及/或為輸送量定向操作的一或多個操作。如本文中所使用,潛時關鍵操作可指試圖最佳化或減少自對資料的讀取操作開始至對讀取資料執行的操作結束所花費的時間的操作,而輸送量定向操作可指試圖最佳化或提高速率參數的操作,所述速率參數諸如每單位時間執行的操作的數目或每單位時間處理的資料的量,但不必為任一操作的潛時。在此情況下,潛時關鍵操作(其可能不能夠容許重新組態儲存裝置所花費的時間)可對應於靜態邏輯區塊,且輸送量定向操作(其可能夠容許重新組態儲存裝置所花費的時間)可對應於動態邏輯區塊。
舉例而言,在一些實施例中,重新組態動態邏輯區塊可要求重新組態時間(例如,約1毫秒(ms)),而使用者要求(例如,服務等級協議(service level agreement;SLA))可要求特定潛時關鍵操作在與重新組態時間相比更少的時間(例如,約25微秒(μs))內執行。在此情況下,潛時關鍵操作可能不能容許重新組態動態邏輯區塊所花費的時間(例如,可為完成時間小於重新組態時間的操作),且因此,潛時關鍵操作可組態於靜態邏輯區塊中。另一方面,當儲存裝置僅包含靜態邏輯區塊時,可根據儲存裝置的固定資源限制可卸載至儲存裝置的操作。舉例而言,在此情況下,資料密集型操作可在儲存裝置上同時(例如,同步地或在相同時間)組態,且因此,所處理的資料的量及/或可在儲存裝置上同時組態的操作的類型可限於儲存裝置的固定資源。
在一些實施例中,根據各種使用者要求(例如,服務等級協議(SLA)及/或類似者)、儲存裝置的可用資源(例如,可用記憶體、可用查找表(LUT)計數及/或類似者)、管線工作流程、加速效能、資料大小、資料減少操作的選擇性,及/或類似者,可在開始時間及/或運行時間處(例如,即時或近即時地)視要求或需要而組態(例如,重新組態或再程式化)儲存裝置。舉例而言,在一些實施例中,考慮到SLA(例如,被視為潛時關鍵的操作)、邏輯區塊的重新組態時間、儲存裝置的可用資源(例如,其可重新組態的積體電路)、管線工作流程,及/或類似者,可視要求或需要將潛時關鍵操作及/或以輸送量為中心的操作組態於靜態及動態邏輯區塊中。在另一實例中,儲存裝置可根據加速效能及/或其資料減少操作的選擇性而在各種模式中操作。舉例而言,在一些實施例中,若卸載至儲存裝置的資料密集型操作並不減少最終返回至主機裝置的資料的大小,則卸載至儲存裝置的資料密集型操作實際上可由主機裝置執行,使得儲存裝置動態地重新組態以在正常模式(例如,其中資料經讀取且由主機裝置處理而非卸載至儲存裝置的模式)中操作。
下文中將參考隨附圖式更詳細地描述本揭露內容的這些及其他態樣以及特徵。
圖1為根據本揭露內容的一或多個實例實施例的儲存系統的系統圖。
總體而言,根據本揭露內容的一或多個實施例的儲存系統100可包含主機裝置(例如,主電腦)102及儲存裝置104。主機裝置102可將各種資料密集型操作卸載至儲存裝置104,使得儲存裝置104加速主機裝置102的資料密集型操作。舉例而言,主機裝置102可以可通信地連接至儲存裝置104,且可將資料傳送至儲存裝置104以將資料儲存在儲存裝置104中。主機裝置102可將各種命令傳輸至儲存裝置104,使得儲存裝置104根據所述命令處理儲存於其中的資料,而非將全部資料傳輸至主機記憶體(例如,主記憶體)108以供主機處理器(例如,CPU)106處理。舉例而言,儲存裝置104可回應於所述命令處理儲存於其中的原始資料以將減少量的已處理資料(例如,原始資料的子集)輸出至主機裝置104,而非將儲存在儲存裝置104中的大量原始資料傳輸至主機記憶體108以大部分供主機處理器106濾除。相應地,對新近提取的資料執行的大量操作可卸載至儲存裝置104以更接近儲存(例如,近儲存或儲存中)而執行,使得主機裝置102的資源(例如,CPU使用率、I/O匯流排頻寬、CPU快取容量、快取至記憶體頻寬、記憶體容量,及/或類似者)可用於其他操作,例如記憶體內操作及跨裝置操作(例如,接合儲存於多個儲存裝置上的資料)。
更詳細地,參考圖1,主機裝置102可包含主機處理器106及主機記憶體108。主機處理器106可為通用處理器,例如主機裝置102的CPU核心。主機記憶體108可被視為主機裝置102的高性能(high performing)主記憶體(例如,主要記憶體)。舉例而言,在一些實施例中,主機記憶體108可包含(或可為)揮發性記憶體,例如動態隨機存取記憶體(DRAM)。然而,本揭露內容不限於此,且主機記憶體108可包含(或可為)替代如所屬領域中具通常知識者應已知的主機裝置102的任何適合的高性能主記憶體(例如,主要記憶體)。舉例而言,在其他實施例中,主機記憶體108可為相對高性能的非揮發性記憶體,諸如NAND快閃記憶體、相變記憶體(PCM)、電阻性RAM、自旋轉移力矩RAM(STTRAM)、任何合適的基於PCM技術、憶阻器技術的記憶體,及/或電阻性隨機存取記憶體(ReRAM),且可包含例如硫族化物及/或類似物。
儲存裝置104可被視為次要記憶體,其可持久地儲存可由主機裝置102存取的資料。在此上下文中,儲存裝置104可包含(或可為)在與主機記憶體108的高性能記憶體相比時相對較慢的記憶體。舉例而言,在一些實施例中,儲存裝置104可為主機裝置102的次要記憶體,諸如SSD。然而,本揭露內容不限於此,且在其他實施例中,儲存裝置104可包含(或可為)任何適合的儲存裝置,諸如HDD、USB快閃驅動器、藍光光碟機,及/或類似物。在一些實施例中,儲存裝置104可符合大外觀尺寸標準(例如,3.5吋硬碟驅動器外觀尺寸)、小外觀尺寸標準(例如,2.5吋硬碟驅動器外觀尺寸)、M .2外觀尺寸,及/或類似物。在其他實施例中,儲存裝置104可符合這些外觀尺寸的任何適合或需要的導數。
在一些實施例中,儲存裝置104可包含儲存介面110、儲存控制器112、儲存記憶體114、可再程式化積體電路(reprogrammable integrated circuit;RIC)裝置116、儲存控制器112與RIC裝置116之間的直接(或專用)內連線118,以及RIC擴展記憶體120。儲存介面110可促進主機裝置102與儲存裝置104之間的通信(例如,使用連接件及協定)。舉例而言,在一些實施例中,儲存介面110可暴露於主機裝置102,與儲存控制器112及/或RIC裝置116資料通信。在一些實施例中,儲存介面110可促進主機裝置102與儲存裝置104之間的儲存請求及回應的交換。在一些實施例中,儲存介面110可藉由儲存裝置104促進向主機裝置102的主機記憶體108及自所述主機記憶體108的資料傳送。舉例而言,在一些實施例中,儲存介面110(例如,連接件及其協定)可包含(或可符合)外圍組件互連高速(Peripheral Component Interconnect Express;PCIe)、經由乙太網的遠端直接記憶體存取(remote direct memory access RDMA)、串列進階附接技術(Serial Advanced Technology Attachment;SATA)、光纖通道、串列附接SCSI(Serial Attached SCSI;SAS)、非揮發性記憶體高速(Non Volatile Memory Express;NVMe),及/或類似者。在其他實施例中,儲存介面110(例如,連接件及其協定)可包含(或可符合)各種通用介面,諸如乙太網、通用串列匯流排(USB),及/或類似者。在又其他實施例中,儲存介面110除其自身連接件及相關聯協定(諸如PCIe或乙太網)之外可支援額外加速或一致性協定,諸如CCIX、CAPI、OpenCAPI、nvLink或CXL。
儲存控制器112連接至儲存介面110,且對經由儲存介面110自主機裝置102接收到的輸入/輸出(I/O)請求作出回應。儲存控制器112可提供介面以控制儲存記憶體114,且提供對所述儲存記憶體114的存取並提供自所述儲存記憶體114的存取。舉例而言,儲存控制器112可包含嵌入於其上以用於與主機裝置102及儲存記憶體114介接的至少一個處理電路。處理電路可包含例如數位電路(例如,微控制器、微處理器、數位信號處理器、現場可程式邏輯閘陣列(FPGA)、特殊應用積體電路(ASIC),及/或類似物),所述數位電路能夠執行資料存取指令以根據資料存取指令提供對儲存在儲存記憶體114中的資料的存取並提供自資料的存取。舉例而言,資料存取指令可包含任何適合的資料儲存及檢索演算法(例如,讀取/寫入)指令、加密/解密演算法指令、壓縮演算法指令,及/或類似者。儲存記憶體114可持久地儲存自主機裝置102接收到的資料。舉例而言,在資料庫管理系統的上下文中,儲存記憶體114可以任何適合的自述柱狀格式儲存資料,所述格式諸如AVRO、ORC、PARQUET及/或類似者。然而,本揭露內容不限於此,且儲存記憶體114可以儲存系統100的根據本申請案的任何適合的格式儲存資料。舉例而言,在媒體系統的上下文中,儲存記憶體114可以任何適合的媒體格式儲存資料,所述媒體格式諸如H.264、H.265、MPEG、AVI及/或類似者。在一些實施例中,儲存記憶體114可以加密及/或壓縮格式儲存自主機裝置102接收到的資料。儲存記憶體114可包含非揮發性記憶體,諸如NAND快閃記憶體。然而,本揭露內容不限於此,且儲存記憶體114取決於儲存裝置104的類型可包含任何適合的記憶體,諸如相變記憶體、磁性記憶體、鐵電記憶體及/或類似物。
RIC裝置116可根據來自主機裝置102的命令處理儲存於儲存記憶體114上的資料。舉例而言,在一些實施例中,RIC裝置116可以可通信地連接至儲存控制器112(例如,經由直接互連118)以存取(例如,讀取)儲存於儲存記憶體114上的資料,且可處理(例如,可減少、過濾、排序、分組、聚合、消除及/或類似者)讀取資料,以使得減少量的處理資料(例如,儲存在儲存記憶體114中的所檢索資料的子集)傳輸至主機裝置104。在此情況下,RIC裝置116可包含多個邏輯區塊,所述多個邏輯區塊具有各種合適的組態以根據來自主機裝置102的命令處理儲存在儲存記憶體114中的資料。如本文中所使用,邏輯區塊可包含RIC裝置116的邏輯組件,且可包含其間組態有連接(例如,在一些現場可程式邏輯閘陣列(FPGA)的情況下如查找表(LUT)中所定義)以執行各種邏輯運算(例如,過濾、排序、聚合、消除及/或類似者)的閘極及正反器。由於RIC裝置116而非主機裝置102可包含邏輯區塊以對新近提取的資料執行各種操作,所以主機裝置102的資源利用率(例如,CPU使用率、PCI頻寬及/或類似者)可減少。
相應地,RIC裝置116可被視為與主機裝置102的處理器(例如,與主機處理器106)分離且不同的處理器。舉例而言,在一些實施例中,RIC裝置116可作為積體電路(IC)實施。在一些實施例中,RIC裝置106可實施於儲存裝置104上(例如,可嵌入與儲存裝置104的RIC裝置相同的板或相同的電路板上)。舉例而言,RIC裝置116可作為系統單晶片(SOC)實施於儲存裝置104上(例如,可附接至或安裝於儲存裝置104上)。在此情況下,由於RIC裝置116可實施於儲存裝置104上,儲存在儲存裝置104中的資料可更接近儲存記憶體114而處理。相應地,在跨長距離及/或跨外部介面傳送儲存在儲存記憶體114中的資料時可導致的潛時可減少或最小化。儲存系統100可另外受益於藉由每一額外儲存裝置104引入的RIC裝置116與儲存控制器112之間的額外內部資料傳送頻寬。相應地,儲存系統100的淨資料傳送輸送量不再受主機至儲存介面限制。然而,本揭露內容不限於此,且在其他實施例中,RIC裝置106可實施於與儲存裝置104的板分離的板(例如,分離的電路板)上且可以可通信地連接至儲存裝置104。在一些實施例中,RIC裝置116可包含(或可為)現場可程式邏輯閘陣列(FPGA),所述現場可程式邏輯閘陣列組態成支援動態部分重新組態(DPR),使得其至少一部分視要求或需要動態可重新組態,但本揭露內容不限於此。舉例而言,在其他實施例中,RIC裝置116可包含(或可為)特殊應用積體電路(ASIC)、圖形處理單元(Graphical Processing Unit;GPU)、複雜可程式化邏輯裝置(Complex Programmable Logic Device;CPLD)、粗粒可重新組態陣列(Coarse-Grained Reconfigurable Array;CGRA),及/或類似物。
在一些實施例中,RIC裝置116可被視為儲存裝置102的補充處理器,所述補充處理器與儲存控制器112分離且不同。舉例而言,在一些實施例中,不同於可能不易於可再程式化的儲存控制器112,RIC裝置116可支援DPR,其中RIC裝置116可取決於來自主機裝置102的命令視要求或需要至少部分地動態可重新組態(例如,動態可再程式化)。然而,本揭露內容不限於此,且在其他實施例中,RIC裝置116可作為儲存控制器112的部分實施,例如,在儲存控制器112的全部或部分可再程式化(例如,組態成支援DPR)時。如下文將參考圖2更詳細地描述,在一些實施例中,RIC裝置116可包含靜態邏輯區塊及動態可重新組態的邏輯區塊(例如,動態邏輯區塊)以根據來自主機裝置102的命令對儲存在儲存記憶體114中的資料執行各種操作。
仍參考圖1,在一些實施例中,RIC裝置116可經由直接(或專用)內連線118可通信地連接至儲存控制器116。舉例而言,在一些實施例中,RIC裝置116可藉由在不涉及主機裝置102的情況下經由直接互連118使用同級間(P2P)通信與儲存控制器112直接通信來讀取儲存在儲存記憶體114中的資料。舉例而言,RIC裝置116可在不涉及主機裝置102的情況下與儲存控制器112直接通信以自儲存記憶體114存取或接收資料,而非首先將來自儲存記憶體114的資料加載至主機記憶體108,且接著將資料發送至RIC裝置116以供進一步處理。經由直接互連118的RIC裝置116與儲存控制器112之間的P2P通信可進一步減少或消除自主機記憶體108讀取/寫入的開銷,且可減少在經由主機裝置102傳達資料時可導致的操作潛時。每一直接互連118的資料傳送頻寬與儲存記憶體114中的資料量成比例地添加至儲存系統100的總資料傳送輸送量。即使當額外儲存裝置104置放在儲存系統100中時。本揭露內容的此可擴展性益處允許儲存系統100按比例增大以固持比對比系統更多的資料而不損耗儲存記憶體容量的每單位效能。在藉由RIC裝置116處理資料之後,已處理資料可提供至主機裝置102。藉助於處理資料經由由RIC裝置116執行的過濾操作呈現得較小,或更易於藉由主機經由由RIC裝置116執行的重新格式化操作來處理,或經由由RIC裝置116執行的轉碼操作更適合於由儲存系統100的用戶端觀看,例如,歸因於RIC裝置116的處理能力併入內部儲存裝置104,由儲存系統100實現的功能的額外效能及實用效益累積至消費者,但本揭露內容不限於此。
RIC擴展記憶體120可以可通信地連接至RIC裝置116,且可作為連接至RIC裝置116的通道(例如,雙資料速率(DDR)記憶體介面)的記憶體晶片(例如,作為動態隨機存取記憶體(DRAM)晶片)實施於儲存裝置104上。舉例而言,在一些實施例中,當多個記憶體裝置(例如,多個DRAM記憶體晶片)連接至RIC裝置116的DDR埠時,RIC擴展記憶體120可嵌入儲存裝置104上。如本文中所使用,「記憶體裝置」是指記憶體的能夠儲存資料的最小功能性可替換單元。舉例而言,DRAM記憶體裝置可含有三百六十億位元的資料,每一位元由用於儲存電荷的電容器及用於選擇性地對電容器充電的電晶體運用一位元資料實現。然而,本揭露內容不限於此,且RIC擴展記憶體120可包含用以擴展RIC裝置116的主記憶體(例如,內部記憶體)的任何合適類型的記憶體。舉例而言,在其他實施例中,RIC擴展記憶體120可包含(或可為)如所屬領域中具通常知識者應已知的任何適合的揮發性記憶體或非揮發性記憶體,諸如SRAM、MRAM、NAND、緊密耦合的記憶體(TCM)、PCM、電阻性RAM、STTRAM、任何合適的基於PCM技術、憶阻器技術的記憶體,及/或電阻性隨機存取記憶體(ReRAM),且可包含例如硫族化物及/或類似物。
在一些實施例中,RIC擴展記憶體120在與RIC裝置116的主記憶體(例如,內部記憶體)(例如,參見圖2)相比時可為相對較慢記憶體,但可具有比RIC裝置116的主要晶片上記憶體的容量更多的容量(例如,更多的儲存空間),諸如在RIC裝置116為XilinxUltraScale+FPGA的實例實施例中的任何區塊RAM或通用RAM。在此情況下,如在下文參考圖3更詳細地論述,晶片外RIC擴展記憶體120可以用作分級記憶體,其中RIC擴展記憶體120經分區以儲存中間輸入/輸出,以及儲存組態檔案以視要求或需要動態地重新組態動態邏輯區塊。舉例而言,在一些實施例中,RIC裝置116可包含閘極及正反器(例如,邏輯區塊),且閘極及/或正反器之間的功能及/或連接(例如,在FPGA的情況下為LUT)可藉由將組態資料(例如,目標檔案,或在FPGA的情況下為位元檔案)加載至RIC裝置116中而組態,所述組態資料在下文中可被稱作儲存在RIC擴展記憶體120中的將視要求或需要快速檢索的組態檔案。然而,本揭露內容不限於此,且在其他實施例中,例如在RIC裝置116的主記憶體具有足以執行本文中所描述的RIC擴展記憶體120的功能的容量(例如,足以針對中間分級記憶體分區的容量)時,可省略RIC擴展記憶體120。
圖2為根據本揭露內容的一或多個實例實施例的更詳細地示出圖1的RIC裝置116的方塊圖。圖3為根據本揭露內容的一或多個實例實施例的更詳細地示出圖1的RIC擴展記憶體120的方塊圖。下文中,為方便起見,將在FPGA的上下文中更詳細地描述RIC裝置116,但本揭露內容不限於此。
參考圖1至圖3,RIC裝置116可根據來自主機裝置102的命令處理儲存於儲存記憶體114上的資料。舉例而言,在一些實施例中,RIC裝置116可包含RIC加速器202及RIC記憶體(例如,主記憶體或內部記憶體)204。總體而言,RIC裝置116可經由直接互連118自儲存記憶體114接收資料,且可根據RIC加速器202的組態處理所讀取資料。由RIC加速器202處理的資料的輸入/輸出可儲存在RIC記憶體204(及/或RIC擴展記憶體120)中。一旦資料被全面處理(例如,藉由RIC加速器202),已處理資料即可傳送至主機裝置102。在一些實施例中,可根據RIC裝置116的可用資源、使用者要求(例如,服務等級協議(SLA))、管線工作流程、在各級之間傳送的資料的大小、加速效能、資料減少操作的選擇性及/或類似者來至少部分地動態地重新組態(例如,即時或近即時地)RIC加速器202。
舉例而言,RIC加速器202可包含靜態邏輯區塊206及動態邏輯區塊208。靜態邏輯區塊206可對應於組態於RIC加速器202中以用於至少整個管線工作流程的邏輯區塊,且動態邏輯區塊208可對應於視要求或需要動態地重新組態以用於對應於管線工作流程的一或多個級的邏輯區塊。舉例而言,管線工作流程可劃分成多個級,且所述級中的每一者可包含對資料(例如,自儲存記憶體118讀取或自前一級輸出的資料)執行(例如,針對最大輸送量或最少潛時同時地,或針對每RIC加速器資源的最大輸送量依序地)的一或多個操作。對於管線工作流程的各級中的每一者,RIC加速器202可維持組態於其中的靜態邏輯區塊206,但對於所述級中的任何特定一或多者,RIC加速器202可視要求或需要動態地重新組態動態邏輯區塊208。舉例而言,如在下文參考圖4至圖5B更詳細地論述,靜態邏輯區塊206及動態邏輯區塊208可根據(例如,取決於)操作的關鍵潛時要求及/或RIC加速器202上的可用資源的量組態於RIC加速器202中,所述可用資源可同時(例如,同步地或在相同時間)組態以處置操作。
RIC記憶體204可被視為RIC裝置116的主記憶體(例如,可為內部記憶體)。RIC記憶體204可包含I/O緩衝器210、第一記憶體212以及第二記憶體214。I/O緩衝器210可在第一記憶體212與第二記憶體214之間分區,且可充當用於在RIC加速器202中執行的邏輯區塊(例如,靜態邏輯區塊及/或動態邏輯區塊)的輸入及輸出的緩衝器。RIC擴展記憶體120可為RIC裝置116的擴展記憶體(例如,可為外部記憶體或次要記憶體)。在一些實施例中,RIC擴展記憶體120可充當RIC裝置116的分級記憶體。如圖3中所繪示,在一些實施例中,RIC擴展記憶體120可包含讀取/寫入緩衝器302、中間I/O緩衝器304、組態(組配)緩衝器306以及第三記憶體308。讀取/寫入緩衝器302、中間I/O緩衝器304以及組配緩衝器306可在第三記憶體308上分區。
讀取/寫入緩衝器302可儲存自儲存記憶體114讀取及寫入儲存記憶體114的資料。中間I/O緩衝器304可充當用於邏輯區塊在管線工作流程的各級之間的輸入及輸出的中間緩衝器。舉例而言,當動態邏輯區塊在管線工作流程的各級之間重新組態時,前一級的動態邏輯區塊的輸出可儲存在中間I/O緩衝器304中,使得動態邏輯區塊可針對當前級重新組態,且接著中間I/O緩衝器304可被指定為用於當前級的重新組態的動態邏輯區塊的輸入緩衝器。
組配緩衝器306可儲存用於動態邏輯區塊的各種不同組態的組態檔案(例如,目標檔案,或在FPGA的情況下為位元檔案)。在此情況下,動態邏輯區塊可藉由視要求或需要將不同組態檔案(例如,對應於所需操作)自組配緩衝器306加載至RIC加速器202中而重新組態。當組態檔案儲存在RIC擴展記憶體120的組配緩衝器306中時,動態邏輯區塊的重新組態時間在與組態檔案儲存在外部及/或自另一裝置(例如,主機裝置)提供的其他情況相比時可減少(例如,減少至約1毫秒)。然而,本揭露內容不限於此,且在另一實施例中,可省略組配緩衝器306。在此情況下,組態檔案可例如儲存在儲存記憶體114或RIC記憶體204中,或可自外部裝置(例如,主機裝置及/或類似物)提供。
在一些實施例中,第一記憶體212可RIC裝置116的最快可用記憶體,但可具有低容量(例如,低儲存空間)。第二記憶體214可具有比第一記憶體212的容量更高的容量,但可比第一記憶體212更慢。第三記憶體308可具有最大容量(例如,最大儲存空間),但可為RIC裝置116的最慢可用記憶體。舉例而言,在FPGA的上下文中,第一記憶體212可包含區塊隨機存取記憶體(Block Random Access Memory;BRAM),第二記憶體214可包含通用隨機存取記憶體(Unified Random Access Memory;URAM),且第三記憶體308可包含DRAM。然而,本揭露內容不限於此,且在另一實施例中,可省略第一記憶體212及第二記憶體214中的一者,或第一記憶體212及第二記憶體214取決於RIC裝置116的類型可包含任何合適類型的記憶體。舉例而言,在另一實施例中,在FPGA的上下文中,可省略第二記憶體214(例如,URAM)。在一些實施例中,第三記憶體308可包含(例如,可為)4 GB DRAM晶片或8 GB DRAM晶片,但本揭露內容不限於此。
根據實施例,RIC加速器202可根據在各級之間傳送的資料的大小及/或所需資料速度而將靜態邏輯區塊206及動態邏輯區塊208的輸入/輸出儲存在第一記憶體212、第二記憶體214及/或第三記憶體308中。舉例而言,若在各級之間傳送的資料的量相對小,及/或由RIC加速器202的邏輯區塊(例如,靜態邏輯區塊206)執行的操作為潛時關鍵的,則此邏輯區塊的輸入/輸出可儲存在第一記憶體212或第二記憶體214中。另一方面,若在各級之間傳送的資料相對大,及/或由邏輯區塊(例如,動態邏輯區塊208)執行的操作為輸送量定向的,則此邏輯區塊的輸入/輸出可儲存在第三記憶體308中。
在實施例中,當在各級之間傳送的資料相對大時,則由邏輯區塊(例如,動態邏輯區塊208)執行的操作的輸出最初可儲存在第一記憶體212或第二記憶體214中,且當動態邏輯區塊208重新組態(例如,在各級之間)時,輸出可傳送至第三記憶體308(例如,中間I/O緩衝器304),使得動態邏輯區塊208可重新組態。儲存在第三記憶體308中的輸出接著可指定為用於重新組態的動態邏輯區塊208的輸入緩衝器。在此情況下,重新組態的動態邏輯區塊208的輸出可儲存在第一記憶體212、第二記憶體214以及第三記憶體308中的任何合適一者中(例如,根據速度、資料大小及/或類似者)。在另一實施例中,當在各級之間傳送的資料相對大時,由邏輯區塊(例如,動態邏輯區塊208)執行的操作的輸出最初可儲存在第三記憶體308(例如,中間I/O緩衝器304)中,且當動態邏輯區塊208重新組態時,來自第三記憶體308中的前一級的所儲存的其輸出可指定為當前級的重新組態的動態邏輯區塊208的輸入。然而,本揭露內容不限於這些實例,且靜態邏輯區塊206及動態邏輯區塊208的任何合適的組合可根據在各級之間傳送的資料的量、所需的資料速度及/或類似者視要求或需要而消耗第一記憶體212、第二記憶體214以及第三記憶體308中的任何合適一者的資源。
圖4為根據本揭露內容的一或多個實例實施例的管線工作流程的說明性實例。圖5A示出用與圖4的管線工作流程相關聯的操作靜態地組態儲存裝置的比較例。圖5B為用與圖4的管線工作流程相關聯的操作來組態根據本揭露內容的一或多個實施例的儲存裝置的說明性實例。為方便起見,將在資料庫應用中的說明性資料庫查詢的上下文中描述管線工作流程,但本揭露內容不限於此。
參考圖1至圖5B,回應於資料庫查詢的典型管線工作流程400可包含多個級402至412。舉例而言,所述級可包含第一級402、第二級404、第三級406、第四級408、第五級410以及第六級412,且級402至級412中的每一者可包含(例如,同時或依序地)執行的一或多個操作,所述一或多個操作開始於處理儲存在儲存記憶體118中且自儲存控制器112接收到的資料的第一級402的操作作為處理資料庫查詢中的第一步驟,其後為處理第一級402的輸出的第二級404中的操作作為處理資料庫查詢中的第二步驟,等等。根據本揭露內容的一或多個實施例,與級402至級412的任何組合相關聯的操作可卸載至儲存裝置104,而非由主機裝置102執行。相應地,在此情況下,如藉由在級402至412中的每一者之間具有不同寬度的開口的箭頭所示,不同大小的資料可在儲存裝置104的不同組件之間傳送以執行與所述級相關聯的操作。舉例而言,與第一級402相關聯的操作可由儲存控制器112執行,且與第二級404至第六級412相關聯的操作可由RIC裝置116執行,但本揭露內容不限於此。舉例而言,在另一實施例中,與第一級402至第六級412相關聯的所有操作可由RIC裝置116執行,或與第二級404至第六級412相關聯的操作中的一些(例如,潛時關鍵操作中的一些)可由儲存控制器112執行。
如圖4中所繪示,在資料庫應用的上下文中,資料的表通常可以壓縮及加密格式儲存在儲存裝置104(例如,儲存記憶體118)中。因此,與第一級402相關聯的一或多個操作可包含對資料進行解密的操作。根據本揭露內容的實施例,舉例而言,與第一級402相關聯的一或多個操作可由儲存控制器112執行。因此,壓縮資料可由儲存控制器112解密,且解密的壓縮資料可傳輸至RIC裝置116(例如,經由直接互連118)以供進一步處理。舉例而言,如圖4中所繪示,解密的壓縮資料可以約3.2 GB/s至約6.4 GB/s自儲存控制器112傳輸至RIC裝置116,但本揭露內容不限於此。
接著可例如剖析解密的資料以在資料表內識別所需壓縮行,且可在第二級404期間解壓縮資料表的所需壓縮行。作為說明性實例,資料庫查詢可對應於在儲存在儲存裝置104中的一或多個資料表中「識別居住在郵遞區號95134中的按年齡組排序的所有男性吸菸者」的操作,使得資料表的一行可對應於郵遞區號,一行可對應於性別,一行可對應於年齡,一行可對應於吸菸者/不吸菸者,及/或類似者。因此,與第二級404相關聯的一或多個操作可包含:剖析所儲存資料格式(例如,其在資料庫應用的上下文中可為自述柱狀格式)的操作,及使用原先用於壓縮所儲存資料的演算法的逆向來解壓縮已剖析資料(例如,解壓縮對應於郵遞區號、性別、年齡、吸菸者/不吸菸者及/或類似者的壓縮行)的操作。因此,舉例而言,若使用gzip演算法來壓縮所儲存資料,則在讀取所述壓縮資料後,第二級404將相應地包含使用對應的gunzip解壓縮演算法來解壓縮已剖析資料的操作。因此,如藉由在圖4中的第二級404與第三級406之間的箭頭寬度的增加所示,由於壓縮率通常可具有2至2.5的因數,所以資料的大小可自約3.2 GB/s至6.4 GB/s的壓縮資料增加至約6.4 GB/s至16 GB/s的未壓縮資料。
接著可根據資料庫查詢中所定義的一或多個條件來過濾未壓縮資料。因此,與第三級406相關聯的一或多個操作可包含根據資料庫查詢中所定義的條件過濾解壓縮資料的操作。舉例而言,對應於上文的說明性資料庫查詢的條件可包含:郵遞區號95134、性別男,以及吸菸者而非不吸菸者。在此情況下,舉例而言,RIC裝置116可自對應於郵遞區號的行選擇對應於95134的所有列,且接著可提取彼等匹配列的其他行的剩餘資料(例如,性別、吸菸者、年齡及/或類似者)。接著,RIC裝置116可自匹配列的對應於性別的行選擇對應於男性的所有列,且接著可提取匹配郵遞區號95134及男性的彼等列的其他行的剩餘資料(例如,吸菸者/不吸菸者、年齡及/或類似者)。類似地,RIC裝置116可自彼等匹配列的對應於吸菸者/不吸菸者的行選擇對應於吸菸者而非不吸菸者的所有列,及/或類似者,直至應用所有過濾條件為止。
因此,如藉由在圖4中的第三級406與第四級408之間的箭頭寬度的減少所示,資料的大小可自未壓縮資料大小減小至已過濾資料大小。已過濾資料的大小可取決於用於過濾資料的條件的選擇性。舉例而言,若條件為使未壓縮資料的僅少數條目自未壓縮資料中的數百萬個條目當中匹配,則所得已過濾資料的大小可實質上小於未壓縮資料的大小。因此,至主機裝置102的訊務可實質上減少。另一方面,若條件並不極具選擇性以使得大部分未壓縮資料保留(例如,並未被濾除),則已過濾資料的大小可與未壓縮資料的大小實質上相同。在此情況下,由於已過濾資料的量與未壓縮資料相同或實質上相同,所以藉由儲存裝置104進行的加速可能不是極具成效的。
相應地,在一些實施例中,取決於資料減少操作(例如,圖4的說明中的過濾操作)的選擇性,控制可返回至主機裝置以在用於減少資料(例如,過濾資料)的條件並不極具選擇性時執行剩餘操作。舉例而言,在一些實施例中,用於給定管線工作流程的資料減少操作(例如,過濾操作)的選擇性可能不是事先(例如,在規劃階段期間)已知的。在此情況下,在執行時間期間(例如,在運行時間期間),可監測在邏輯區塊中的一或多者中執行的資料減少操作的選擇性(例如,藉由主機裝置102或藉由可通信地連接至主機裝置102的另一裝置或系統,例如,運行時間服務),且若資料大小的減小小於臨限值減小大小,則控制可返回至主機裝置102(例如,與減少的資料一起)以使得主機裝置102對資料執行剩餘操作。
在資料已經過濾之後,在說明性資料庫查詢的上下文中,已過濾資料可在第四級408處排序,在第五級410處分組,且在第六級412處聚合。舉例而言,已過濾資料可在第四級408處按年齡排序,可在第五級410處分組成不同年齡組,且分組資料可在第六級412處聚合。因此,與第四級408相關聯的一或多個操作可包含排序已過濾資料的操作,與第五級410相關聯的一或多個操作可包含分組已排序資料的操作,且與第六級412相關聯的一或多個操作可為聚合分組資料。如藉由在第四級408至第六級412之間的箭頭的恆定寬度所示,排序及分組操作並不影響資料的大小但聚合可能會潛在地減小所述大小。聚合的資料接著可傳輸至主機裝置102,如藉由最末箭頭所示。相應地,由RIC裝置116處理的資料的大小的減小可取決於過濾級406期間的過濾條件的選擇性、分組級410期間形成的不同組的數目,及/或聚合級412中的操作總結每組中的資料的程度。
如圖5A中所繪示,運用與圖4中的管線工作流程400相關聯的所有操作來靜態地組態RIC加速器202所需要的資源可超過RIC裝置116上的可用資源的量。舉例而言,在FPGA的上下文中,組態邏輯區塊(例如,靜態邏輯區塊206及動態邏輯區塊208)的操作的邏輯區塊的閘極與正反器之間的連接在查找表(LUT)中可定義為例如真值表。然而,可在任何給定時間組態於FPGA中的LUT的數目可限於FPGA的最大總LUT計數。舉例而言,小FPGA可限於300K的最大總LUT計數。在此情況下,由級404至級412中的每一者的操作的實施使用的LUT的總數目可能超過FPGA的最大總LUT計數。
舉例而言,如圖5A中所繪示,用於剖析所儲存資料格式(例如,在第二級404中)的LUT的數目可為約25K,用於解壓縮已剖析資料(例如,在第二級404中)的LUT的數目可為約12K,用於過濾解壓縮資料(例如,在第三級406中)的LUT的數目現以所儲存資料的速率的兩倍流動(假設壓縮因數2可能大得多(例如,90K)),用於排序減少資料(例如,在第四級408中,為了進行說明,假設90%的資料被濾除)的LUT的數目可為約100K,且用於分組及聚合資料(例如,在第五級410及第六級412中)的LUT的數目可為約100K(例如,為了進行說明,假設資料分為10個組)。在此比較例中,根據圖4的管線工作流程400用於處理資料的LUT的總數目為327K,其超過FPGA上的最大總LUT計數(例如,在此說明性實例中為300K)。因此,與管線工作流程400相關聯的所有操作可能並不同時(例如,同步地或在相同時間)適於FPGA資源,且因此,可能並不同時靜態地組態在FPGA上。在此情況下,與管線工作流程400相關聯的可卸載至FPGA的操作的數目可根據FPGA的可用資源減少或受限。
另一方面,如圖5B中所繪示,當管線工作流程400的操作中的至少一些視要求或需要動態地組態時,則與管線工作流程400相關聯的操作可卸載至FPGA。舉例而言,若與剖析、解壓縮以及過濾級(例如,第二級404及第三級406)相關聯的操作502靜態地組態,且與排序、分組以及聚合級(例如,第四級408、第五級410以及第六級412)相關聯的其他剩餘的操作504及操作506視要求或需要動態地重新組態,則在任何時間使用的LUT的最大數目可為227K(例如,127K用於靜態組態的邏輯區塊且100K用於動態組態的邏輯區塊)。相應地,當操作中的至少一些視要求或需要動態地組態時,可卸載至FPGA的操作的數目可增加。
在一些實施例中,動態邏輯區塊的重新組態時間可減少(例如,減少至約1毫秒),此是因為組態檔案可儲存在組配緩衝器306(例如,參見圖3)中以用於視要求或需要快速檢索。在此情況下,當不同操作將藉由動態邏輯區塊208中的一者執行時,對應組態檔案可自組配緩衝器306加載於其中,使得動態邏輯區塊可在1毫秒內重新組態。然而,即使在此情況下,亦可能存在可能不容許重新組態動態邏輯區塊所花費的時間量的潛時關鍵操作。相應地,在一些實施例中,管線工作流程中對應於潛時關鍵操作的操作可組態於靜態邏輯區塊中,使得重新組態時間並不添加至彼等操作,且動態邏輯區塊可組態有管線工作流程的其他操作(例如,輸送量定向操作),所述其他操作可能夠容許重新組態動態邏輯區塊所花費的時間,使得RIC裝置116的資源的利用率可改良。然而,本揭露內容不限於此。舉例而言,如參考圖6A及圖6B所論述,在一些實施例中,動態邏輯區塊可在其他邏輯運算正執行的同時重新組態,使得動態邏輯區塊的重新組態時間可隱藏。
圖6A及圖6B根據本揭露內容的一或多個實例實施例示出藉由儲存裝置加速資料密集型操作的方法600。然而,本揭露內容不限於圖6A及圖6B中所示的方法600的操作的序列或數目,且可變更為如所屬領域中具通常知識者所辨識的操作的任何所需序列或數目。舉例而言,在一些實施例中,次序可變化,或方法可包含更少或額外操作。
參考圖6A及圖6B,當藉由儲存裝置104自主機裝置102接收一或多個命令以處理儲存在儲存記憶體114中的資料時(例如,參見圖1),方法開始。命令可與特定管線工作流程相關聯,使得所述管線工作流程可劃分成多個級,所述級中的每一者對應於與命令相關聯的一或多個資料密集型操作。對於所述級中的每一者,一或多個邏輯運算可動態地組態於RIC裝置116的動態邏輯區塊208(例如,參見圖2)中以執行操作。舉例而言,第一邏輯運算可組態於邏輯區塊(例如,動態邏輯區塊)中,且在操作605處,可將輸入資料(例如,儲存在儲存記憶體114中)傳輸至主動地執行第一邏輯運算的邏輯區塊中。在操作610處,邏輯區塊可組態成將其輸出儲存在中間輸出緩衝器(例如,圖3中的中間I/O緩衝器304)中。
隨著邏輯區塊的輸出填充中間輸出緩衝器,在操作615處,監測中間輸出緩衝器以判定是否達至臨限值(例如高水位標記(high water mark;HWM))。若在操作615處並未命中HWM(例如,否),則在操作620處判定第一邏輯運算是否已完成。若在操作620處第一邏輯運算尚未完成(例如,否),則第一邏輯運算繼續執行,直至在操作615處達至HWM或在操作620處已完成第一邏輯運算為止。另一方面,若在操作620處已完成第一邏輯運算(例如,是),則在操作625處程序繼續(A),其將在下文參考圖6B論述。
若在操作615處達至HWM(例如,是),則在操作630處,在第一邏輯運算繼續執行的同時組態第二邏輯運算(例如,在第二動態邏輯區塊中)。在此情況下,舉例而言,第二邏輯區塊中的第二邏輯運算的重新組態時間可隱藏(例如,可為不重要的),此是因為在第二邏輯運算正組態時繼續執行第一邏輯運算。在此情況下,在一些實施例中,第二邏輯運算可為第一運算的擴展。方法600在第一邏輯運算及第二邏輯運算形成輸送量定向管線(例如,管線工作流程400的最小版本)時最有效。
繼續執行第一邏輯運算,直至其達至中間輸出的末端(例如,中間輸出緩衝器滿)(在此情況下第一邏輯運算暫停),或直至第一邏輯運算運行完輸入資料(在此情況下視為完成)。相應地,在操作635處判定第一邏輯運算是否暫停。若在操作635處第一邏輯運算並未暫停(例如,否),則第一邏輯運算運行至完成,在此情況下,在操作640處將第一邏輯運算的中間輸出緩衝器指定為最終輸出緩衝器。可將儲存在最終輸出緩衝器中的資料傳輸至主機裝置102。
另一方面,若在操作635處第一邏輯運算暫停(例如,是),則在操作645處將第一邏輯運算的中間輸出緩衝器指定為用於第二邏輯運算的輸入緩衝器,且在操作650處將第一邏輯運算的輸入緩衝器指定為用於第二邏輯運算的輸出緩衝器。在操作655處,根據第二邏輯運算來處理中間輸出緩衝器(其現被指定為用於第二邏輯運算的輸入緩衝器)中的資料。方法600可重複直至無輸入保留,且對所有輸入執行操作的整個管線工作流程。
參考圖6B,若在操作620處已完成第一邏輯運算(例如,是),則在操作625處程序繼續(A),其中判定管線工作流程中是否存在供組態的任何額外邏輯運算。若在操作625處對於管線工作流程不存在供組態的額外邏輯運算(例如,否),則在操作660處將第一邏輯運算的中間輸出緩衝器指定為最終輸出緩衝器。可將儲存在最終輸出緩衝器中的資料傳輸至主機裝置102。
另一方面,若在操作625處對於管線工作流程存在供組態的額外邏輯運算(例如,是),則在操作665處組態下一邏輯運算(例如,在第二邏輯區塊中)。在操作670處將第一邏輯運算的中間輸出緩衝器指定為用於下一邏輯運算的輸入緩衝器,且在操作675處將第一邏輯運算的輸入緩衝器指定為用於下一邏輯運算的輸出緩衝器。在操作680處根據下一邏輯運算來處理中間輸出緩衝器(其現被指定為用於下一邏輯運算的輸入緩衝器)中的資料,且方法600可重複直至無輸入保留,且對所有輸入執行操作的整個管線工作流程。
儘管已參考隨附圖式描述一些實例實施例,但本揭露內容可以各種不同形式體現,且不應被視為僅限於本文中所說明的實施例。確切而言,提供此等實施例作為實例,使得本揭露內容將為透徹且完整的,且將向所屬技術領域中具通常知識者充分傳達本揭露內容的態樣及特徵。因此,除非另外指定,否則對每一實例實施例內的態樣及特徵的描述應通常被視為可用於其他實例實施例中的其他類似態樣及特徵。
應理解,儘管在本文中可使用術語「第一」、「第二」、「第三」等以描述各種元件、組件、區、層及/或區段,但此等元件、組件、區、層及/或區段不應受此等術語限制。這些術語用以區別一個元件、組件、區、層或區段與另一元件、組件、區、層或區段。因此,在不脫離本揭露的精神及範疇的情況下,下文所描述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
本文中所使用的術語係出於描述特定實施例的目的且並不意欲限制本揭露。如本文中所使用,除非上下文另外明確指示,否則單數形式「一(a/an)」意欲包含複數形式。應進一步瞭解,術語「包括(comprises/comprising)」、「包含(includes/including)」以及「具有(has/have/having)」當用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或新增。如本文所使用,術語「及/或」包含相關聯所列項目中的一或多者的任何及所有組合。諸如「……中之至少一者」的表述在位於元件清單之前時修飾元件的整個清單,而並不修飾清單的個別元件。
如本文中所使用,術語「大體上」、「約」以及類似術語用作表示近似的術語且並不用作表示程度的術語,且意欲考慮將由所屬技術領域中具通常知識者辨識的量測值或計算值的固有偏差。另外,當描述本揭露的實施例時,「可」的使用指代「本揭露的一或多個實施例」。如本文中所使用,術語「使用(use/using/used)」可分別被視為與術語「利用(utilize/utilizing/utilized)」同義。
除非另外定義,否則本文所使用的所有術語(包含技術及科學術語)具有與於本揭露所屬領域具有通常知識者所通常理解的相同的意義。應進一步理解,術語(諸如,常用詞典中所定義的彼等術語)應被解釋為具有與其在相關技術及/或本發明的上下文中的含義一致的含義,且不應以理想化或過分正式意義進行來解釋,除非本文中明確地如此定義。
雖然圖1至圖3繪示實例封裝,但所屬技術領域中具通常知識者將顯而易見,取決於用於大規模處理資料所使用或所需的組件的數目,可藉由半導體封裝的應用、印刷電路板設計、積體電路設計、系統設計,以及系統的機架或群集的設計而以其他合適的方式配置各種功能及組件。
另外,圖1至圖3中繪示的互連中的任一者可由任何合適的有線或無線連接替換,所述連接在如下範圍內:簡單的積體電路內部的導電或光學鏈接至矽穿孔,或晶粒、封裝或小晶片之間的其他非矽光學、電感、導電或電容鏈接,至印刷電路板跡線、線接合,晶片、封裝及/或系統之間的切換或直接纜線或電線,或為複雜的整個資料中心級架構或機架級架構。
圖1至圖3的本發明概念可應用於任何合適等級的系統,所述系統的範圍為:單核心主機處理器至多核心主機處理器,自主機記憶體的單個通道至各自含有多個裝置(諸如DIMM)的多個通道,自單個主機至數十萬或更多主機,自一個儲存裝置至每一主機中或附接至多個主機的架構上的多個儲存裝置,自具有一個儲存控制器的裝置至含有數個控制器的裝置,自含有一個RIC裝置的彼等至可能含有數個不同種類中的多種的彼等。
相應地,儘管已描述一些實例實施例,但所屬領域中具通常知識者將易於理解,在不脫離本揭露內容的精神及範疇的情況下各種修改在實例實施例中是可能的。將理解,除非另外描述,否則每一實施例內的特徵或態樣的描述應通常視為可用於其他實施例中的其他類似特徵或態樣。因此,應理解,前述內容為各種實例實施例的說明且並不解釋為限於本文中揭露的特定實例實施例,且對所揭露實例實施例以及其他實例實施例的各種修改意欲包含於如隨附申請專利範圍及其等效物所定義的本揭露的精神及範疇內。
100:儲存系統
102:主機裝置
104:儲存裝置
106:主機處理器
108:主機記憶體
110:儲存介面
112:儲存控制器
114:儲存記憶體
116:可再程式化積體電路裝置
118:直接互連
120:RIC擴展記憶體
202:RIC加速器
204:RIC記憶體
206:靜態邏輯區塊
208:動態邏輯區塊
210:I/O緩衝器
212:第一記憶體
214:第二記憶體
302:讀取/寫入緩衝器
304:中間I/O緩衝器
306:組配緩衝器
308:第三記憶體
400:管線工作流程
402:第一級
404:第二級
406:第三級
408:第四級
410:第五級
412:第六級
502、504、506、605、610、615、620、625、630、635、640、645、650、655、660、665、670、675、680:操作
600:方法
參考隨附圖式,本揭露內容的以上及其他態樣及特徵將自實例實施例的以下詳細描述變得對所屬領域中具通常知識者更顯而易見。
圖1為根據本揭露內容的一或多個實例實施例的儲存系統的系統圖。
圖2為根據本揭露內容的一或多個實例實施例的示出儲存裝置的可重新組態的處理裝置的方塊圖。
圖3為根據本揭露內容的一或多個實例實施例的示出儲存裝置的可重新組態的處理裝置的擴展記憶體的方塊圖。
圖4為根據本揭露內容的一或多個實例實施例的管線工作流程的說明性實例。
圖5A示出用與圖4的管線工作流程相關聯的操作靜態地組態儲存裝置的比較例。
圖5B為用與圖4的管線工作流程相關聯的操作來組態根據本揭露內容的一或多個實施例的儲存裝置的說明性實例。
圖6A及圖6B根據本揭露內容的一或多個實例實施例示出藉由儲存裝置加速資料密集型操作的方法。
100:儲存系統
102:主機裝置
104:儲存裝置
106:主機處理器
108:主機記憶體
110:儲存介面
112:儲存控制器
114:儲存記憶體
116:可再程式化積體電路裝置
118:直接互連
120:RIC擴展記憶體
Claims (20)
- 一種儲存裝置,包括: 儲存控制器,組態成自主機裝置接收資料,並將所述資料儲存在儲存記憶體中;以及 可重新組態的積體電路,通信地連接至所述儲存控制器,且組態成加速對儲存在所述儲存記憶體中的所述資料執行的邏輯運算,所述可重新組態的積體電路包括: 第一邏輯區塊,組態成執行所述邏輯運算當中的靜態邏輯運算; 第二邏輯區塊,組態成執行所述邏輯運算當中的一或多個動態邏輯運算;以及 多個記憶體緩衝器,組態成儲存所述第一邏輯區塊及所述第二邏輯區塊的輸入及輸出。
- 如請求項1所述的儲存裝置,其中所述邏輯運算對應於管線工作流程,所述第一邏輯區塊組態成靜態地組態有用於所述管線工作流程的所述靜態邏輯運算,且所述第二邏輯區塊組態成動態地重新組態有用於所述管線工作流程的至少一個級的所述一或多個動態邏輯運算。
- 如請求項2所述的儲存裝置,其中所述一或多個動態邏輯運算包括第一動態邏輯運算及第二動態邏輯運算,所述第二邏輯區塊在所述管線工作流程的第一級期間組態有所述第一動態邏輯運算,且所述第二邏輯區塊在所述管線工作流程的第二級期間動態地重新組態有所述第二動態邏輯運算。
- 如請求項1所述的儲存裝置,其中所述多個記憶體緩衝器包括: 輸入輸出(I/O)緩衝器,組態成儲存所述第一邏輯區塊及所述第二邏輯區塊的所述輸入及所述輸出; 中間輸入輸出緩衝器,組態成在所述第二邏輯區塊正重新組態時儲存所述第二邏輯區塊的中間輸出;以及 組態緩衝器,組態成儲存組態檔案以重新組態所述第二邏輯區塊。
- 如請求項4所述的儲存裝置,其中所述第二邏輯區塊藉由將儲存在所述組態緩衝器中的所述組態檔案當中的組態檔案加載至所述第二邏輯區塊而動態地重新組態。
- 如請求項4所述的儲存裝置,其中在第一級期間所述第二邏輯區塊的輸出儲存在所述中間輸入輸出緩衝器中,所述第二邏輯區塊重新組態有用於第二級的不同動態邏輯指令,且所述中間輸入輸出緩衝器在所述第二級期間被指定為所述第二邏輯區塊的所述輸入輸出緩衝器。
- 如請求項1所述的儲存裝置,其中所述靜態邏輯運算對應於潛時關鍵操作,且所述一或多個動態邏輯運算對應於輸送量定向操作。
- 如請求項7所述的儲存裝置,其中所述潛時關鍵操作為完成時間小於所述第二邏輯區塊的重新組態時間的操作。
- 如請求項1所述的儲存裝置,其中所述儲存裝置為固態驅動器。
- 如請求項9所述的儲存裝置,其中所述可重新組態的積體電路為現場可程式邏輯閘陣列(FPGA)。
- 一種用於加速儲存裝置中的操作的方法,所述儲存裝置包括儲存控制器、儲存記憶體以及可重新組態的積體電路,所述可重新組態的積體電路包括第一邏輯區塊、第二邏輯區塊以及緩衝器,所述方法包括: 藉由所述第一邏輯區塊對儲存在所述儲存記憶體中的輸入資料執行第一邏輯運算; 藉由所述第一邏輯區塊將所述第一邏輯運算的輸出儲存在所述緩衝器的中間輸出緩衝器中; 藉由所述可重新組態的積體電路將第二邏輯運算組態於所述第二邏輯區塊中; 藉由所述可重新組態的積體電路將所述中間輸出緩衝器指定為用於所述第二邏輯運算的輸入緩衝器;以及 藉由所述第二邏輯區塊對儲存在所述中間輸出緩衝器中的所述第一邏輯運算的所述輸出執行所述第二邏輯運算。
- 如請求項11所述的方法,其中當在所述第一邏輯區塊中執行所述第一邏輯運算時,將所述第二邏輯運算組態於所述第二邏輯區塊中。
- 如請求項12所述的方法,其中將所述第二邏輯運算組態於所述第二邏輯區塊中包括: 監測所述中間輸出緩衝器的值; 判定所述值超過臨限值;以及 回應於所述值超過所述臨限值而將所述第二邏輯運算組態於所述第二邏輯區塊中。
- 如請求項13所述的方法,其中所述臨限值為所述中間輸出緩衝器的高水位標記。
- 如請求項12所述的方法,其中所述緩衝器包括組態成儲存用於組態所述第二邏輯區塊的組態檔案的組態緩衝器。
- 如請求項15所述的方法,其中將所述第二邏輯運算組態於所述第二邏輯區塊中包括: 將位元檔案加載至所述第二邏輯區塊中,所述位元檔案對應於儲存在所述組態緩衝器中的所述組態檔案當中的所述第二邏輯運算。
- 如請求項11所述的方法,其中將所述中間輸出緩衝器指定為用於所述第二邏輯運算的所述輸入緩衝器包括: 判定所述第一邏輯運算是否暫停; 回應於判定所述第一邏輯運算暫停,將所述中間輸出緩衝器指定為用於所述第二邏輯運算的所述輸入緩衝器;以及 將所述第一邏輯運算的輸入緩衝器指定為用於所述第二邏輯運算的輸出緩衝器。
- 如請求項17所述的方法,其中判定所述第一邏輯運算是否暫停包括: 判定是否達至所述中間輸出緩衝器的末端。
- 如請求項11所述的方法,更包括: 判定所述第二邏輯區塊已處理儲存在所述中間輸出緩衝器中的所述第一邏輯運算的所有所述輸出;以及 將所述第二邏輯運算的輸出緩衝器指定為最終輸出緩衝器。
- 如請求項11所述的方法,其中所述儲存裝置為固態驅動器,且所述可重新組態的積體電路為現場可程式邏輯閘陣列(FPGA)。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062966443P | 2020-01-27 | 2020-01-27 | |
US62/966,443 | 2020-01-27 | ||
US16/826,016 | 2020-03-20 | ||
US16/826,016 US11687279B2 (en) | 2020-01-27 | 2020-03-20 | Latency and throughput centric reconfigurable storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202129510A true TW202129510A (zh) | 2021-08-01 |
TWI839592B TWI839592B (zh) | 2024-04-21 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI814666B (zh) * | 2022-12-14 | 2023-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置與動態決定緩存器大小的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI814666B (zh) * | 2022-12-14 | 2023-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置與動態決定緩存器大小的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113253916A (zh) | 2021-08-13 |
US20210232339A1 (en) | 2021-07-29 |
US20230273749A1 (en) | 2023-08-31 |
US11687279B2 (en) | 2023-06-27 |
KR20210096553A (ko) | 2021-08-05 |
JP2021118006A (ja) | 2021-08-10 |
EP3859509A1 (en) | 2021-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230273749A1 (en) | Latency and throughput centric reconfigurable storage device | |
US10963393B1 (en) | Storage system and a method for application aware processing | |
EP3422215B1 (en) | Key-value compaction | |
US8819335B1 (en) | System and method for executing map-reduce tasks in a storage device | |
US9711194B2 (en) | Circuits for and methods of controlling the operation of a hybrid memory system | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
US9344091B2 (en) | Die-stacked memory device with reconfigurable logic | |
US9092321B2 (en) | System and method for performing efficient searches and queries in a storage node | |
US9135185B2 (en) | Die-stacked memory device providing data translation | |
US9323457B2 (en) | Memory arrangement for implementation of high-throughput key-value stores | |
US9263102B2 (en) | Apparatus, system, and method for data transformations within a data storage device | |
CN108205499B (zh) | 用于将数据处理转移到混合存储设备的方法和装置 | |
TWI836132B (zh) | 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 | |
TWI706315B (zh) | 儲存元件 | |
US11379127B2 (en) | Method and system for enhancing a distributed storage system by decoupling computation and network tasks | |
US20190123763A1 (en) | Data compression engine for dictionary based lossless data compression | |
US9336135B1 (en) | Systems and methods for performing search and complex pattern matching in a solid state drive | |
WO2024103599A1 (zh) | 一种数据查询方法、系统、装置、设备及非易失性可读存储介质 | |
CN114546253A (zh) | 混洗加速的系统、处理数据的方法、存储节点和分区方法 | |
US20240037027A1 (en) | Method and device for storing data | |
TWI839592B (zh) | 儲存裝置以及用於加速儲存裝置中的操作的方法 | |
TW202225971A (zh) | 用於高性能記憶體除錯記錄產生及管理之裝置及方法 | |
US10402111B1 (en) | Systems and methods for data storage compression | |
US20230135891A1 (en) | Storage device including storage controller and operating method | |
CN116755873A (zh) | 主机、存储装置以及主机和存储装置的数据处理方法 |