JP2021072107A - ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 - Google Patents

ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 Download PDF

Info

Publication number
JP2021072107A
JP2021072107A JP2020171938A JP2020171938A JP2021072107A JP 2021072107 A JP2021072107 A JP 2021072107A JP 2020171938 A JP2020171938 A JP 2020171938A JP 2020171938 A JP2020171938 A JP 2020171938A JP 2021072107 A JP2021072107 A JP 2021072107A
Authority
JP
Japan
Prior art keywords
array
sort
processing
storage system
reconfigurable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020171938A
Other languages
English (en)
Other versions
JP2021072107A5 (ja
JP7381429B2 (ja
Inventor
サハンド サラナト,
Salamat Sahand
サハンド サラナト,
フゥイ ヂァン
Hui Zhang
フゥイ ヂァン
周 桓 李
Ju-Hwan Yi
周 桓 李
亮 ソク 奇
Yang Seok Ki
亮 ソク 奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021072107A publication Critical patent/JP2021072107A/ja
Publication of JP2021072107A5 publication Critical patent/JP2021072107A5/ja
Application granted granted Critical
Publication of JP7381429B2 publication Critical patent/JP7381429B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-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

【課題】ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法を提供する。【解決手段】本発明のストレージシステムは、ソート演算に関連するデータエレメントの配列を格納するストレージ装置と、ストレージ装置とホストコンピュータとの間の通信を可能にするストレージインターフェースと、ストレージ装置に通信可能に接続された再構成可能な処理装置と、を備え、再構成可能な処理装置は、ストレージ装置からリードされ、ストレージ装置に格納されたデータエレメントの配列に対応する入力データを格納するメモリと、ホストコンピュータから受信されたソートコマンドに応じて、メモリに格納された入力データに対するソート演算を実行する1つ以上の演算コンポーネントを有するカーネルを含み、再構成可能な処理装置は、ソート演算を加速化する1つ以上の演算コンポーネントを動的にインスタンス化する。【選択図】図1

Description

本発明は、ストレージシステムに関し、より詳細には、ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法に関する。
一般的に、ソート演算(sort operation)は、エレメントの比較に基づいて配列(array)又はリスト(list)からエレメントをリアレンジ(rearrange)するために使用され、非線形タイミングの複雑性(nonlinear timing complexity)により計算的に複雑である。ソート演算は、データベース・アプリケーション(application)からグラフ化アルゴリズム(graphing algorithm)まで多様なアプリケーションにおいて広く用いられる。例えば、GROUP BY、JOINなどのようなデータベース・アプリケーションは、それ自体の構築演算(又は基本演算)として一般的にソート演算を使用するため、データベース・アプリケーションの性能において、ソート演算は、大体核心的要因である。
しかし、異なるデータベース・アプリケーションは、多様で異なる演算及び仕様を有し得るため、異なるデータベース・アプリケーションに対するソート演算を実施する際に、異なる演算及び要求事項がサポートされることを必要とする。例えば、多様で異なるデータベース・アプリケーションに対してソート演算を実施するために固定のソーティングエンジン(fixed sorting engine)は、異なるデータベース・アプリケーションに固定のソーティングエンジンを適用するため、ユーザーの要求事項及びリソース(資源)の要求事項に基づいて設計される。しかし、この場合、多様で異なる要求事項に応じて固定のソーティングエンジンを設計(又は適用)するため、相当の設計−時間のオーバーヘッド(overhead)が消費される。
本背景技術として上述した内容は、本発明の背景に対する理解を増進させるためのものであり、従来技術を構成していない情報を含み得る。
米国特許第9251219号明細書 米国特許第9336274号明細書 米国特許第9495139号明細書 米国特許第9619499号明細書 米国特許第9740511号明細書 米国特許第9176775号明細書 米国特許出願公開第20150149691号明細書
CHEN, Ren et al., "Energy and Memory Efficient Mapping of Bitonic Sorting on FPGA," Proceedings of the 2015 ACM/SIGDA International Symposium on Field−Programmable Gate Arrays, ACM, 2015, 37 pages. JUN, Sang−Woo et al., "Terabyte Sort on FPGA−Accelerated Flash Storage," 2017 IEEE 25th Annual International Symposium on Field−Programmable Custom Computing Machines, IEEE, 2017, 8 pages. MUELLER, Rene et al., "Sorting Networks on FPGAs," The VLDB Journal−The International Journal on Very Large Data Bases, 2012, 25 pages. MUSLIM, Fahad Bin et al.,"Efficient FPGA Implementation of OpenCL High−Performance Computing Applications via High−Level Synthesis," IEEE Access, Vol. 5, 2017, 16 pages. SRIVASTAVA, Ajitesh et al., "A Hybrid Design for High Performance Large−scale Sorting on FPGA," 2015 International Conference on ReConFigurable Computing and FPGAs, IEEE, 2015, 6 pages.
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法を提供することにある。
上記目的を達成するためになされた本発明の一態様によるストレージシステムは、ソート演算(operation)に関連するデータエレメントの配列を格納するストレージ装置と、前記ストレージ装置とホストコンピュータとの間の通信を可能に(facilitate)するストレージインターフェースと、前記ストレージ装置に通信可能に接続された再構成可能な処理装置(reconfigurable processing device)と、を備え、前記再構成可能な処理装置は、前記ストレージ装置からリード(read)され、前記ストレージ装置に格納された前記データエレメントの配列に対応する入力データを格納するメモリと、前記ホストコンピュータから受信されたソートコマンド(SORT command)に応じて、前記メモリに格納された入力データに対する前記ソート演算を実行する1つ以上の演算コンポーネント(compute component)有するカーネルを含み、前記再構成可能な処理装置は、前記ソート演算を加速化する前記1つ以上の演算コンポーネントを動的にインスタンス化(instantiate)する。
前記ストレージ装置は、SSD(Solid State Drive)を含み、前記再構成可能な処理装置は、FPGA(Field Programmable Gate Array)を含み得る。
前記入力データは、前記ホストコンピュータによって前記SSDからリードされて前記ホストコンピュータの1次メモリ(primary memory)にロード(load)され、前記FPGAの前記メモリは、前記ホストコンピュータの1次メモリから前記入力データを受信し得る。
前記ストレージシステムは、前記メモリと前記SSDとの間の直接相互接続(direct interconnect)を更に含み、前記FPGAは、前記直接相互接続を通じて前記SSDから前記メモリに前記入力データをリードする前記SSDに直接アクセスし得る。
前記FPGA及び前記SSDは、同一の回路ボード上に実装され得る。
前記FPGAは、前記SSDからデータをリードする場合、前記ホストコンピュータをバイパスするためにP2P(Point−to−Point)通信を使用する前記直接相互接続を通じて前記SSDにアクセスし得る。
前記メモリは、DRAM(Dynamic Random−Access Memory)を含み得る。
前記1つ以上の演算コンポーネントは、複数の処理エレメント(processing element)を含み、前記複数の処理エレメントの各々は、ソーティングアルゴリズムに基づいて前記入力データに対応する前記データエレメントの配列のセグメントをソートし得る。
前記複数の処理エレメントの各々は、ローカルコンパレータ及びローカルマージャーを含み、前記ローカルコンパレータ及び前記ローカルマージャーは、前記ソーティングアルゴリズムを使用して前記セグメントから部分的にソートされた配列を生成し得る。
前記1つ以上の演算コンポーネントは、前記複数の処理エレメントの各々の出力に接続された処理ユニット(processing unit)を更に含み、前記処理ユニットは、前記ソーティングアルゴリズムに基づいて前記複数の処理エレメントの前記出力をソートし得る。
前記処理ユニットは、グローバルコンパレータ及びグローバルマージャーを含み、前記グローバルコンパレータ及び前記グローバルマージャーは、前記ソーティングアルゴリズムを使用して、前記複数の処理エレメントによって前記部分的にソートされた配列から前記入力データの完全にソートされた配列を生成し得る。
前記ソーティングアルゴリズムは、バイトニックソートアルゴリズム(Bitonic sorting algorithm)であり得る。
前記再構成可能な処理装置は、前記データエレメントの配列のサイズに応じてランタイム(run−time)に多数の前記複数の処理エレメント及び前記処理ユニットを動的にインスタンス化し得る。
前記再構成可能な処理装置は、前記データエレメントの配列のサイズを識別し、1つ以上のしきい値と前記データエレメントの配列のサイズとを比較し、前記比較に基づいて、多数の前記複数の処理エレメント及び前記処理ユニットをインスタンス化し得る。
上記目的を達成するためになされた本発明の一態様による方法は、ソート演算に関連するデータエレメントの配列を格納するストレージ装置、前記ストレージ装置とホストコンピュータとの間の通信を可能にするストレージインターフェース、及び前記ストレージ装置に通信可能に連結された再構成可能な処理装置を備えるストレージシステムのソート演算を動的にスケーリング(調整)(scaling)する方法であって、前記方法は、前記再構成可能な処理装置によって、前記ホストコンピュータからソートコマンドに関連するデータエレメントの配列のサイズを識別するステップと、前記再構成可能な処理装置によって、前記配列のサイズと1つ以上のしきい値とを比較するステップと、前記再構成可能な処理装置によって、前記ソート演算を加速化するために、前記比較に基づいて1つ以上の演算コンポーネントをインスタンス化(instantiate)するステップと、を有する。
前記ストレージ装置は、SSD(Solid State Drive)を含み、前記再構成可能な処理装置は、FPGA(Field Programmable Gate Array)を含み得る。
前記1つ以上の演算コンポーネントをインスタンス化するステップは、1つ以上のロジックブロック、及び前記FPGAのカーネルの1つ以上の相互接続を再構成するステップを含み得る。
前記方法は、少なくとも1つのローカルソート演算コンポーネント(local sort compute component)によって、前記データエレメントの配列の少なくとも1つのセグメントをソートするステップと、前記少なくとも1つのローカルソート演算コンポーネントによって、前記少なくとも1つセグメントのソートされた配列を生成するステップと、を更に含み、前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記少なくとも1つのローカルソート演算コンポーネントをインスタンス化するステップを含み得る。
前記方法は、複数のローカルソート演算コンポーネントの各々によって、前記データエレメントの配列の異なるセグメントをソートするステップと、前記複数のローカルソート演算コンポーネントの各々によって、対応するセグメントの部分的にソートされた配列を生成するステップと、を更に含み、前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記複数のローカルソート演算コンポーネントをインスタンス化するステップを含み得る。
前記方法は、グローバルソート演算コンポーネント(global sort compute component)によって、前記複数のローカルソート演算コンポーネントの各々によって生成された前記部分的にソートされた配列をソートするステップと、前記グローバルソート演算コンポーネントによって、前記部分的にソートされた配列のソートから前記データエレメントの配列に対応する完全にソートされた配列を生成するステップと、を更に含み、前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記複数のローカルソート演算コンポーネントの各々の出力に接続された前記グローバルソート演算コンポーネントをインスタンス化するステップを更に含み得る。
本発明によると、多様な要求事項、資源(リソース)の利用可能性、及び/又はその他のエレメントに基づいて再構成可能なデザインとして広範囲な性能と領域とのトレードオフ(trade−off)を提供するという側面で、ストレージシステムの設計適応性及び拡張性が向上する。
また、本発明によると、ソート演算の実行時間が短くなり、ソート演算によるエネルギー消費を減少させることができる。
また、本発明によると、ホストコンピュータによって課されたボトルネック現象(例えば、CPU利用率、及びPCIの帯域幅など)を減らすか又は除去することで、ソート演算の拡張性を向上させることができる。
本発明の一実施形態によるストレージシステムのシステム図である。 本発明の一実施形態によるストレージシステムのブロック図である。 本発明の一実施形態によるソート演算の例である。 本発明の一実施形態によるストレージシステムの処理エレメントのブロック図である。 本発明の一実施形態によるストレージシステムの処理ユニットのブロック図である。 本発明の一実施形態によるソート演算を動的にスケーリングする方法を示すフローチャートである。 本発明の一実施形態によるストレージシステムの他の例のシステム図である。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。本明細書に開示された態様及び特徴は、本発明の実施形態の詳細な説明から、当業者(当業者)により明らかになるであろう。
図面全体に亘って同一の参照符号は同一のコンポーネントを指す。但し、本発明は、多様な他の形態に実施される場合があり、ここで説明する内容に限定されて解釈されてはならない。むしろ、本明細書の実施形態は、本発明が徹底且つ完全なものになるための例として提供され、当業者に本発明の態様及び特徴を完璧に伝えるはずである。従って、本発明の技術分野における通常の知識を有する者が本発明の特徴及び機能を完全に理解するために必要としないプロセス、エレメント、並びに技術は、説明しない場合がある。特に言及しない限り、同一の参照符号は、図面及び明細書の説明で、同一のコンポーネントを指し、それに対する説明は繰り返されない。なお、図面で、コンポーネント、レイヤー(階層、layer)、及び領域の相対的なサイズは、明確性のために誇張、及び/又は簡素化され得る。
本発明の実施形態によると、ソートの加速化ための階層構造が提供され、多様な要求事項、資源の利用可能性、及び/又はその他のエレメントに基づいて再構成可能なデザインとして、広範囲な性能と領域とのトレードオフ(trade−off)を提供するという側面から、設計適応性(柔軟性)及び拡張性が向上する。例えば、概括すると、テンプレートベースの(template−based)の階層構造が提供され、1つ以上のテンプレートベースの演算コンポーネント(compute component)は、高度に最適化される。いくつかの実施形態で、演算のコンポーネントは、ソート演算の効率を増加させるために、多様な静的及び/又は動的要求事項(例えば、ユーザーの要求事項、資源の要求事項、データサイズなど)に応じて動的にインスタンス化(instantiate)される。例えば、いくつかの実施形態で、演算のコンポーネントは、入力データの配列(array)のサイズに応じて増加及び/又は減少する(例えば、リアルタイム又は略リアルタイムで)。この場合、例えば固定されたソーティングエンジンによって課される入力データの配列に対する固定されたサイズの制限が減少又は除去される。
いくつかの実施形態で、ソート演算の性能は、ホストコンピュータではない再構成可能な処理装置でソートステップを実行することにより、向上又は最適化される。例えば、ソート演算を実行するために、ホストコンピュータのリソース(例えば、CPU利用率)を用いずに、再構成可能な処理装置によってソート演算が実行される場合があるため、ホストコンピュータのリソースは、他の演算及び機能のために用いられる。従って、ホストコンピュータのリソース利用率(例えば、CPU利用率)を減少させることによって、エネルギー消費量を減少させることができる。なお、いくつかの実施形態で、再構成可能な処理装置は、データレベル並列化(data−level parallelism)のために構成される場合があり、再構成可能な処理装置によって複数のソートステップを並列に(例えば、同時に)遂行するために、適切な並列ソーティングアルゴリズム(例えば、バイトニックソート(Bitonic Sort))が使用される。従って、ソート演算の実行時間は短くなり、ソート演算によるエネルギー消費は減少する。
いくつかの実施形態で、ホストコンピュータによって課されたボトルネック現象の(例えば、CPU利用率、PCIの帯域幅など)を減らすか又は除去することで、ソート演算の拡張性は向上する。例えば、いくつかの実施形態で、再構成可能な処理装置とストレージ装置との間の直接相互接続(direct interconnect)が提供される場合があるため、データ伝送において、ホストコンピュータを関連させずに再構成可能な処理装置とストレージ装置との間の直接的なデータ伝送を可能にする。このような場合、例えばホストコンピュータがソートのためにストレージ装置から再構成可能な処理装置に入力データの配列を伝送する代わりに、再構成可能な処理装置は、ストレージ装置から直接相互接続を通じて入力データの配列に直接アクセスすることができる。従って、ホストコンピュータによって課されたボトルネック現象(例えば、CPU利用率、PCIの帯域幅など)は減少又は除去され、例えばCPU利用率、実行時間などを減少させることによって、ホストコンピュータによるエネルギー消費が減少する。
図1は、本発明の一実施形態によるストレージシステムのシステム図である。
図1を参照すると、ストレージシステム100は、ホストコンピュータ102、ストレージ装置104、及び再構成可能な処理装置(reconfigurable processing device:RP)106(例えば、再構成可能な処理回路又は内蔵された処理装置)を含む。ホストコンピュータ102は、ストレージ装置104及び再構成可能な処理装置106に通信可能に連結され、コマンドに応じてストレージ装置104に格納されたデータエレメントを処理するためのコマンドをストレージ装置104及び再構成可能な処理装置106に提供する。例えば、ホストコンピュータ102は、再構成可能な処理装置106がストレージ装置104に格納されたデータエレメントの配列をソートするように、ソートコマンド(SORT command)を提供する。
ホストコンピュータ102は、ホストプロセッサ108及びホストメモリ110を含む。ホストプロセッサ108は、ホストコンピュータ102の例としてCPU(Central Processing Unit)のような汎用プロセッサである。ホストメモリ110は、ホストコンピュータ102の高性能メインメモリ(例えば、1次メモリ)として見なされる。例えば、一実施形態で、ホストメモリ110は、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)のような揮発性メモリを含む(又は揮発性メモリである)。しかし、本発明はこれに限定されず、ホストメモリ110は、当業者(通常の技術者)に知られているように、ホストコンピュータ102に対する任意の適合する高性能メインメモリ(例えば、1次メモリ)の代替物を含み得る(又はホストコンピュータ102の任意の適合する高性能メインメモリ代替物であり得る)。例えば、他の実施形態で、ホストメモリ110は、Z−NANDTM(サムスン(samsung)から提供される)、3D X−POINTTM(Intel及びMicron Technologyから提供される)、相変化メモリ(Phase Change Memory)、抵抗メモリ(Resistive RAM:ReRAM)、STTRAMなどのように、高速アクセス、低い入力/出力(Input/Output:I/O)レイテンシ(latency)を提供することができる比較的高性能の不揮発性メモリである。
ストレージ装置104は、ホストコンピュータ102によってアクセスされるか及び/又はコマンド(command)(例えば、ソート(SORT))に基づいて再構成可能な処理装置106によって処理されるデータエレメントを永続的に格納する2次メモリとして見なされる。このような文脈において、ストレージ装置104は、ホストメモリ110の高性能メモリと比較して、相対的により遅いメモリを含むか又は相対的により遅いメモリである。例えば、一実施形態で、ストレージ装置104は、データエレメントを永続的に格納する不揮発性メモリ(例えば、NANDフラッシュメモリ(NAND flash memory))を含み、ソリッドステートドライブ(Solid −State Drive:SSD)を含むか又はソリッドステートドライブである。しかし、本発明はこれに限定されず、他の実施形態で、ストレージ装置104は、ホストコンピュータ102のコマンド(例えば、ソートコマンド)に応じて再構成可能な処理装置106によって処理される(例えば、ソートされる)データエレメントの配列(array)を永続的に格納するための、当業者に知られている任意の適切なメモリを有する任意の適切なストレージ装置を含むか又は任意の適切なストレージ装置である。更に他の実施形態で、ストレージ装置104は、ソートのために再構成可能な処理装置106にデータを伝送する任意の適切な装置を含む。例えば、一実施形態で、ストレージ装置104は、ネットワークカード(network card)、イーサネット(登録商標)SSD(Ethernet(登録商標) SSD)、ウェーブカード(wave card)などを含む。多様な実施形態で、ストレージ装置104は、大型フォームファクター標準(large form factor standard)(例えば、3.5インチハードドライブのフォームファクター)、小型フォームファクター標準(small form factor standard)(例えば、2.5インチハードドライブのフォームファクター)、M.2フォームファクターなどに符合する。他の実施形態で、ストレージ装置104は、このようなフォームファクターに適するか又は要求される任意の派生物に符合する。
本実施形態で、ストレージ装置104は、ホストコンピュータ102とストレージ装置104との間の通信(例えば、コネクタ及びプロトコルを使用して)を容易にするためのストレージインターフェース112を含む。一実施形態で、ストレージインターフェース112は、ホストコンピュータ102とストレージ装置104との間のストレージ要請及び応答の交換を容易にする。一実施形態で、ストレージインターフェース112は、ストレージ装置104からホストコンピュータ102のホストメモリ110へのデータ伝送、及びホストメモリからストレージ装置104へのデータ伝送を容易にする。例えば、一実施形態で、ストレージインターフェース112(例えば、コネクタ及びそのプロトコル)は、PCIe(Peripheral Component Interconnect Express)、イーサネット(登録商標)を介するRDMA(Remote Direct Memory Access)、SATA(Serial Advanced Technology Attachment)、ファイバーチャネル(Fibre Channel)、SAS(Serial Attached SCSI)、不揮発性メモリエクスプレス(Non−Volatile Memory Express:NVM Express)などを含む(又は、これらに符合する)。他の実施形態で、ストレージインターフェース112(例えば、コネクタ及びそのプロトコル)は、例としてイーサネットやUSB(Universal Serial Bus)などのような多様な汎用インターフェースを含むか又は多様な汎用インターフェースに符合する。
再構成可能な処理装置106は、ホストコンピュータ102のコマンドに基づいてストレージ装置104に格納されたデータエレメントを処理する。例えば、一実施形態で、再構成可能な処理装置106は、ホストコンピュータ102のソートコマンドに基づいてストレージ装置104に格納されたデータエレメントの配列をソートする。再構成可能な処理装置106は、ホストコンピュータ102の代わりにソートコマンドを実行するため、ホストコンピュータ102の資源使用量(例えば、CPU利用率など)が減少する。従って、再構成可能な処理装置106は、ストレージ装置104に格納されたデータエレメントにアクセスするために、ストレージ装置104と通信可能に連結される。例えば、多様な実施形態で、再構成可能な処理装置106は、ホストコンピュータ102及び/又は直接(又は専用)相互接続を通じてストレージ装置104に通信可能に連結され、これは図6を参照してより詳細に説明する。このような文脈において、再構成可能な処理装置106は、ホストプロセッサ108から分離・区別されるストレージ装置104のためのストレージプロセッサ(又は補助プロセッサ)と見なされる。多様な実施形態で、再構成可能な処理装置106は、集積回路(Integrated Circuit:IC)として実装され、ストレージ装置104と同一のボード(例えば、同一の回路ボード)上に内蔵されるか又はストレージ装置104から分離されたボード(例えば、分離された回路ボード)上に実装される。
一実施形態で、再構成可能な処理装置106は、多様な処理ステップが並列に(例えば、同時に)実行されるように、データエレメントの並列処理のために構成される。例えば、一実施形態で、再構成可能な処理装置106は、データエレメントの配列の行(row)及び/又は列(column)を並列に(又は同時に)ソートするのに適したアルゴリズムで構成されたFPGA(Field Programmable Gate Array)を含むか又はそのようなFPGAであるが、これに限定されるものではない。例えば、他の実施形態で、再構成可能な処理装置106は、データエレメントを並列に(又は同時に)ソートするのに適したアルゴリズム、或いはデータエレメントを逐次プロセスでソートするのに適したアルゴリズムで構成された再構成可能な(reconfigurable)特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)(例えば、動的プログラマブル(dynamically programmable)ASIC)を含むか又はそのようなASICである。
より詳細に、本実施形態で、再構成可能な処理装置106は、再構成可能な処理メモリ(Reconfigurable Processing Memory)114、及び再構成可能な処理アクセラレータ(Reconfigurable Processing Accelerator)116を含む。一施形態で、再構成可能な処理メモリ114は、ホストメモリ110及びストレージ装置104のメモリとは異なる(例えば、区別される)再構成可能な処理装置106の内部メモリと見なされる。一実施形態で、再構成可能な処理メモリ114は、再構成可能な処理装置106によってストレージ装置104から検索(回収)されたデータエレメント(例えば、ホストコンピュータ102を通して又は直接相互接続を通じて検索されたデータエレメント)をキャッシング(caching)(例えば、貯蔵又は一時的貯蔵)し、ホストコンピュータ102のソートコマンドに基づいて再構成可能な処理メモリ114からキャッシュされた(cached)データエレメントをソートするために用いられる。この文脈において、再構成可能な処理メモリ114は、ホストメモリ110の容量とストレージ装置104のメモリの容量とを比較した場合、低容量メモリと見なされる。多様な実施形態で、再構成可能な処理メモリ114は、DRAMのような揮発性メモリを含むか又は揮発性メモリであるが、これに限定されず、他の実施形態で、再構成可能な処理メモリ114は、当業者に知られている任意の適切な揮発性メモリ又は不揮発性メモリを含むか又は任意の適切な揮発性メモリ若しくは不揮発性メモリである。例えば、多様な実施形態で、再構成可能な処理メモリ114は、Z−NANDTM、3D X−POINTTM、TCM(Tightly−Coupled Memory)、相変化メモリ(Phase Change Memory)、抵抗メモリ(Resistive RAM:ReRAM)、STTRAMなどを含むか又はそれらである。
一実施形態で、再構成可能な処理アクセラレータ116は、コマンド(例えば、ソートコマンド)に関連する動作を容易に(例えば、加速)するように構成される。例えば、再構成可能な処理アクセラレータ116は、データエレメント(例えば、データエレメントの配列)をソートするための任意の適切なソーティングアルゴリズムを実装するように構成された複数の演算コンポーネントを含む。例えば、演算コンポーネントは、1つ以上の処理エレメント(Processing Element)及び/又は1つ以上の処理ユニット(Processing Unit)を含み、以下でより詳細に説明する。一実施形態で、演算コンポーネント(例えば、処理ユニット及び処理エレメント)は、合成(構成)可能な場合があり(composable)、ユーザーの要求事項、アプリケーションのタイプ(例えば、データベース・アプリケーション、グラフィックスアプリケーションなど)、データエレメントの配列のサイズ、再構成可能な処理装置106の資源制約(例えば、メモリ、チャンネルの数など)、再構成可能な処理装置106によって演算されるか又は演算されるのを待機する(例えば、同時に処理されるか又は逐次に処理される)他の動作の数などに応じて動的に構成可能な場合があり、以下でより詳細に説明する。
図2は、本発明の一実施形態によるストレージシステムのブロック図である。図2に示すストレージシステム200は、図1に示したストレージシステム100(図1参照)と同一であるか又は実質的に同一であり(又は類似であり)、それに応じて重複する説明は簡略化されるか又は繰り返されない場合が有る。以下、便宜上、SSD104aはストレージ装置104(図1参照)の代表的な例として説明し、DRAM114aは再構成可能な処理メモリ114(図1参照)の代表的な例として説明し、FPGA106aは再構成可能な処理装置106(図1参照)の代表的な例として説明する。しかし、上述したように、本発明は、このような代表的な例に限定されず、ストレージ装置104、再構成可能な処理メモリ114、及び再構成可能な処理装置106のそれぞれは、これに関連して上述した例の中の適切なものを含む(又は適切なものである)か、及び/又は当業者に知られている他の適切な例を含む。
図2を参照すると、本実施形態で、ストレージシステム200は、ホストコンピュータ102、SSD104a、及びFPGA106aを含む。ホストコンピュータ102は、SSD104a及びFPGA106aに通信可能に連結され、SSD104aに格納されたデータエレメントを処理するためのコマンドを提供する。例えば、ホストコンピュータ102はソートコマンドを提供し、FPGA106aは適切なソーティングアルゴリズムに基づいてSSD104aに格納されたデータエレメントの配列をソートする。本実施形態で、FPGA106aは、DRAM114a、FPGAアクセラレータ116a、及びDRAM114aとFPGAアクセラレータ116aとの間の通信を容易にするためのインターフェース204を有するFPGAボード202(例えば、FPGA回路ボード)を含む。例えば、一実施形態で、DRAM114aはFPGAボード202上に複数のメモリセルとして実装され、FPGAアクセラレータ116aはFPGAボード202のカーネル(例えば、ソートカーネル)上に実装される。
本明細書で、「メモリセル」は、データを格納するメモリの最小単位を意味する。例えば、DRAMメモリセルは、1ビットのデータを格納し、電荷を貯蔵するためのキャパシタ(capacitor)、及び1ビットのデータとしてキャパシタを選択的に充電するためのトランジスタ(transistor)を含む。
一実施形態で、DRAM114aは入力データ(例えば、SSD104aのソートされるデータエレメント)をキャッシュし、インターフェース204はDRAM114aからFPGAアクセラレータ116aのBRAM(Block Random Access Memory)206に入力データをリード(read)するのに使用される。例えば、インターフェース204は512ビットAXI(Advanced Extensible Interface)を含むか又は512ビットAXIであるが、本発明はこれに限定されるものではなく、インターフェース204は、当業者に知られているように、DRAM114aからBRAM206に入力データをリードするための任意の適切なプロトコルを使用する任意の適切なインターフェースを含むか又は任意の適切なインターフェースである。
FPGAアクセラレータ116aは、BRAM206、BRAMバッファ208、複数の演算コンポーネント210、及びデータリオーダラ(reorderer、再整列器)212を含む。FPGAアクセラレータ116aは、任意の適切なソーティングアルゴリズムを利用してBRAM206の入力データをソートし、ソートされた入力データをBRAMバッファ208に格納する。一実施形態で、FPGAアクセラレータ116aによって使用されるソーティングアルゴリズムは、再構成可能な処理装置106の装置タイプ、再構成可能な処理装置106の処理能力及び/又は機能に応じて決定され(例えば、予め決定され)、その結果としてソート演算(動作)は向上する(例えば、加速され、改善され、及び/又は最適化される)。
一実施形態で、再構成可能な処理装置106がFPGA106aである場合、使用されるソーティングアルゴリズムは、例えばバイトニックソートのように、FPGA106aの並列処理機能を活用する並列ソーティングアルゴリズムである。一実施形態によると、他のソーティングアルゴリズムと比較した場合、バイトニックソートは、並列処理の実装において、性能を向上又は最適化することができる。バイトニックソートの各ステップ(例えば、全てのステップ)で、動作の数は同一に維持され、バイトニックソートの主な動作は、比較及びスワップ(swap)である。例えば、2つの数値が比較され、ソート方向に基づいて2つの数値はスワップされる。なお、バイトニックソートで、全てのソートステップは互いに並列に(例えば、同時に)実行される。従って、バイトニックソートの全てのステップにおいて、割り当てられた全てのリソースが使用される。従って、バイトニックソートは、他のソーティングアルゴリズム(例えば、クイックソート(Quick Sort)、マージソート(Merge Sort)など)と比較すると、より高いタイミングの複雑性を有するが、バイトニックソートは、例えばFPGA、GPUs(Graphical Processing Units)などのように、並列演算機能を有するプロセッサに好ましい。同様に、FPGA106aはデータレベルの並列化のために構成されるため、FPGA106aは、他のソーティングアルゴリズムと比較すると、バイトニックソートの加速を更に向上させたり最適化させたりすることができる。しかし、本発明はこれに限定されるものではなく、例えばクイックソート、マージソート、挿入ソート(Insertion Sort)、選択ソート、又はこれらの組み合わせのように、入力データをソートするために任意の適切な並列又は逐次ソートアルゴリズムが使用される。
図3を簡単に参照すると、図3は、本発明の一実施形態によるソート演算の例である。この例で、図3は、8つのランダムな入力に対するバイトニックソートの例を示している。バイトニックソートは、ソートされた配列を生成するためにバイトニックシーケンスを使用する並列ソーティングアルゴリズムである。例えば、バイトニックソートは、バイトニックシーケンスを単調に(monotonically)ソートされたシーケンスに変換する。バイトニックシーケンスは、1つが昇順でソートされ且つもう1つが降順でソートされた2つのソートされたセグメントを含む部分的にソートされた配列と見なされる。例えば、サイズがNである2つのソートされた配列は、サイズが2Nであるソートされた配列を生成するために結合されてマージされる(ここで、Nは整数)。2番目の配列は、バイトニックシーケンスを生成するために反転されて1番目の配列に連結される。例えば、バイトニックシーケンス(1、2、2、4、5、6、8、5、4、3、2、1)は、昇順及び降順の2つのソートされた単調のサブシーケンスを含む部分的にソートされたリストと見なされる。バイトニックシーケンスは、バイトニックシーケンスをソートされた配列に変換するために(例えば、バイトニックマージを使用して)マージされる。
図3に示すように、8つのランダム入力に対して、バイトニックソートは3つのステップ(302、304、306)を含み、各ステップは矢印により表示された4つの比較を含む。実線の矢印は昇順の比較を示し、点線の矢印は降順の比較を示す。比較毎に2つの数値が比較され、ソートの方向に沿ってスワップされる。バイトニックソートで、エレメントは事前に定義された順序で比較され、比較の順序は入力データに依存しない。従って、バイトニックソートの各ステップ(例えば、全てのステップ)(302、304、306)で、割り当てられた全てのリソースが使用され、各ステップは、並列に(例えば、同時に)実行される。以下、便宜上バイトニックソートは、ソート演算を加速化するためのFPGAアクセラレータ116aによって使用されるソーティングアルゴリズムの代表的な例として記述される。しかし、上述したように、本発明は、ソーティングアルゴリズムとしてバイトニックソートを使用する代表的な例に限定されず、FPGAアクセラレータ116aによって使用されるソーティングアルゴリズムは、上述した他の例としての分類アルゴリズムの適切ないずれか1つを含むか又は適切ないずれか1つであり、当業者に知られているソーティングアルゴリズムの中の他の適した例を含み得る。
上述した図2を再び参照すると、複数の演算コンポーネント210(図2参照)は、バイトニックソーティングアルゴリズム(又は任意の他の適切なソーティングアルゴリズム)を利用して、BRAM206(図2参照)に格納された入力データ(例えば、データエレメント)をソートするように構成される。本実施形態で、複数の演算コンポーネント210は、1つ以上の処理エレメント(PE、図2を参照)及び/又は1以上の処理ユニット(PU、図2を参照)を含む。例えば、一実施形態で、複数の演算コンポーネント210は1つ以上の処理ユニット(PU)を含み、各処理ユニット(PU)は要求事項(例えば、ユーザーの要求事項、アプリケーションの要求事項、データサイズの要求事項など)に依存する複数の処理エレメント(PE)を含む。他の例で、演算コンポーネント210は1つの処理ユニット(PU)を含み、1つの処理ユニット(PU)は要求事項に依存する任意の適切な又は所望の個数の処理エレメント(PE)を含む。更に他の例で、演算コンポーネント210は、要求事項に依存する単一の処理エレメント(PE)を含み、この場合、どのような処理ユニット(PU)も含まないことが有る。
即ち、処理エレメント(PE)はBRAM206からリードされたデータエレメント(例えば、整数エレメント)をソートする下位のソート演算のコンポーネント(例えば、ローカル(局部)ソート演算コンポーネント)と見なされ、処理ユニット(PU)は処理エレメント(PE)の出力をソートする上位ソート演算のコンポーネント(例えば、グローバル(全域)ソート演算コンポーネント)として見なされる。例えば、処理ユニット(PU)は複数の処理エレメント(PE)を含み、処理ユニット(PU)は複数の処理エレメント(PE)の出力をソートする。なお、複数の処理ユニット(PU)がある場合、データリオーダラ(再整列器)212は、複数の処理ユニット(PU)の出力をソート(例えば、整列及び/又はマージ)する。しかし、本発明はこれに限定されず、データリオーダラ(再整列器)212は省略され得る。例えば、FPGA106a(図2を参照)が単一の処理エレメント(PE)のみを含むか又は複数の処理エレメント(PE)を含む単一の処理ユニット(PU)のみを含む場合、データリオーダラ(再整列器)212は省略される。
一実施形態で、各々の処理ユニット(PU)及び処理エレメント(PE)は、動的に合成及び/又は構成される場合が有る。例えば、一実施形態で、FPGA106aは、例えばソート演算の効率を高めたり向上させたりするために、必要又は希望により任意の所望の又は適切な固数の処理エレメント(PE)及び/又は処理ユニット(PU)を動的にインスタンス化する。例えば、異なるデータベース・アプリケーションは多様な演算及び仕様を有し、従ってFPGA106a上で異なるデータベース・アプリケーションを加速化するために、異なる演算及びカーネルがFPGA106a上で実装される。この場合、FPGA106aの利用可能な資源はカーネル(例えば、ソートカーネルとしてFPGAアクセラレータ116a(図2を参照))の中で配置され、従って各カーネルの利用可能な資源の量は異なるアプリケーション毎に異なる。
従って、一実施形態で、FPGA106aは、多様なユーザーの要求事項、アプリケーションの要求事項、他の動作(例えば、リード動作、ライト(write)動作など)をサポートするための要求事項、データサイズの要求事項、資源(リソース)の要求事項などに応じて処理ユニット(PU)及び/又は処理エレメント(PE)の個数を増加又は減少させる。例えば、FPGA106aは、プログラム可能な(programmable)ロジックブロック(logic block)及び多様で異なる構成において、ロジックブロックを連結する複数の再構成可能な相互接続(reconfigurable interconnect)を含む。ロジックブロック及び相互接続は、適切なハードウェア記述言語(Hardware Description Language:HDL)を利用してプログラム(例えば、再プログラミング又は再構成)される。この場合、FPGA106aは、多様で静的な及び/又は変更される要求事項に基づいて、ランタイム(例えば、リアルタイム又は略リアルタイム)及び/又は設定時にロジックブロック及び/又は相互接続を動的に再プログラミング又は再構成することで、任意の適切な又は所望の個数の処理ユニット(PU)及び/又は処理エレメント(PE)をインスタンス化することができる。一実施形態で、並列処理のソーティングアルゴリズムが使用される場合、FPGA106aは、並列に分類段階を遂行する処理エレメント(PE)及び/又は処理ユニット(PU)の数を増加又は減少させることによって、ソート演算の並列化を増加又は減少させる。処理ユニット(PU)及び処理エレメント(PE)の例としての構造及び/又は構成の実装は、次の図4及び図5を参照して、より詳細に説明する。
図4は、本発明の一実施形態によるストレージシステムの処理エレメント(例えば、ローカルソート演算コンポーネント(local sort compute component))のブロック図である。図4に示す処理エレメント(Processing Element:PE)400は、上述した図3を参照して説明した処理エレメント(PE、図3を参照)と同一であるか又は実質的に同一(又は類似)であり、従って重複する説明は簡略化されるか又は繰り返されない。
図4を参照すると、処理エレメント400は、コントローラ402、ローカルコンパレータ404(例えば、配列コンパレータ)、及びローカルマージャー406(例えば、バイトニックマージャー)を含む。コントローラ402は、BRAMバッファ208から、図4に示すバイトニックソート450のような適切なソーティングアルゴリズムを使用して処理エレメント400によってソートされる入力データをリードする。例えば、ローカルコンパレータ404はBRAMバッファ208からリードされた入力データを比較し、ローカルマージャー406は入力データのソートされた配列を生成するためのソーティングアルゴリズムに基づいて入力データをマージする。ソートされた配列は、BRAMバッファ208に格納される。
代表的な例として、処理エレメント400は、(例えば、ローカルコンパレータ404及びローカルのマージャー406を用いて、)図4の参照符号450で示すように、各行が64個のエレメントを有する1024個の行をソートするローカルソート演算を遂行することにより、64Kの整数エレメントをローカルにソートする。例えば、1024個の個別にソートされた行は、ローカルマージャー406を利用して併合(例えば、バイトニックマージ)を遂行した後、64Kエレメント(K=1024)にソートされた配列になる。しかし、本発明は、図4に示す代表的な例に限定されず、処理エレメント400は処理エレメント400のために割り当てられたFPGA106a(図2を参照)のリソース(例えば、DRAM114a(図2を参照)及び/又はBRAM206(図2参照)のサイズ及び/又は容量)に応じて、任意の適切な又は所望の数の整数エレメントをソートすることができる。
一実施形態で、処理エレメント400によってソートされた入力データは、ホストコンピュータ102(図1参照)のソートコマンドに関連付けられたデータエレメントのセグメント(例えば、部分又はサブセット)である。例えば、一実施形態で、ソート要請に関連付けられたデータエレメントの配列のサイズは、単一の処理エレメント400を利用して効率的にソートするデータの量を超過する。この場合、FPGA106aは1つ以上の追加的な処理エレメント400をインスタンス化し、各処理エレメント400はデータエレメントの部分的なソート配列を生成するためにソートコマンドに関連付けられたデータエレメントの異なるセグメント(例えば、異なる部分又は異なるサブセット)をソートする。一実施形態で、処理エレメント400は、それらの対応する部分的にソートされた配列を互いに並列に(例えば、同時に)生成する。例えば、処理エレメント400によって使用されるソーティングアルゴリズムがバイトニックソートである場合、処理エレメント400の各々は、入力データに対する比較を互いに並列に(例えば、同時に)遂行する。一実施形態で、複数の処理エレメント400は、データエレメントの一部のセグメントを互いに並列にソートし、その後データエレメントの他の部分の付加的なセグメントを互いに並列にソートする(例えば、入力データが多すぎて一度に全てソートすることができない場合)。一実施形態で、次の図5を参照して、より詳細に説明するように、FPGA106aは、データエレメントの完全にソートされた配列を生成するために、複数の処理エレメント400の出力をソートする1つ以上の処理ユニット(PU)(図2を参照)を更にインスタンス化する。
図5は、本発明の一実施形態によるストレージシステムの処理ユニット(例えば、グローバル(全域)ソート演算のコンポーネント(global sort compute component))のブロック図である。図5に示す処理ユニット500は、上述した図3を参照して説明した処理ユニット(PU)図2を参照)と同一であるか又は実質的に同一(又は類似)であり、従って重複する説明は簡略化されるか又は繰り返されない。
図5を参照すると、処理ユニット500は、複数の処理エレメント(PE0〜PE7)、アービタ(arbiter)502、コントローラ504、アドレス変換器506、グローバル(全域)コンパレータ508、及びグローバル(全域)マージャー510を含む。各処理エレメント(PE0〜PE7)は、上述した図4を参照して説明した処理エレメント400(図4参照)と同一であるか又は実質的に同一(又は類似)であり、従って重複する説明は簡略化されるか又は繰り返されない。
上述したように、一実施形態で、複数の処理エレメント(PE0〜PE7)の各々はソートコマンドに関連付けられたデータエレメントのセグメント(例えば、部分的又はサブセット)の部分的にソートされた配列を生成し、処理ユニット500は、データエレメントの完全にソートされた配列を生成するために、複数の処理エレメント(PE0〜PE7)の出力をソート(例えば、グローバルにソート)する。図5は、8つの処理エレメント(PE0〜PE7)を示すが、本発明はこれに限定されず、処理ユニット500は、要求事項(例えば、ユーザーの要求事項、アプリケーションの要求事項、データサイズの要求事項、資源の要求事項など)に応じて任意の適切な個数の処理エレメント(PE)を含む。
より詳細に、コントローラ504は、ソート(例えば、バイトニックソート)演算するための制御信号を提供する。アービタ502は、部分ソート(例えば、各処理エレメント(PE0〜PE7)による部分ソート出力)の多重繰り返しを処理する。例えば、アービタ502はアドレス変換器506にBRAMバッファ208(図4参照)上に格納された各処理エレメント(PE0〜PE7)の出力に対するアクセスを提供するため、処理エレメント(PE0〜PE7)の出力は処理ユニット500によって追加でソートされる。例えば、アドレス変換器506は、処理ユニット500によって(例えば、グローバルコンパレータ508及びグローバルマージャー510によって)追加でソートされるようにするために、処理エレメント(PE0〜PE7)の出力を処理ユニット500のバッファにマッピングする。例えば、処理ユニット500は、処理ユニット500によるソートのために処理エレメント(PE0〜PE7)の出力を格納し、グローバルコンパレータ508及びグローバルマージャー510から出力されたソート結果を格納するURAM(Unified Random Access Memory)バッファを含む。(例えば、処理エレメント(PE0〜PE7)の各々によって)全てのセグメントがソートされた後、部分配列の結果はグローバルコンパレータ508によってグローバル(全域的)に(例えば、バイトニックソーティングアルゴリズムに基づいて)ソートされ、全域的に配列をソートするためにソートされたセグメントはグローバルマージャー510を利用して(例えば、バイトニックマージアルゴリズムに基づいて)マージされる。入力データの配列がソートされる追加的なセグメントを含む場合、追加的なセグメントは処理エレメント(PE)によって部分的にソートされ、処理エレメントによって部分的にソートされた配列は処理ユニット500によって追加的にソートされる。従って、ソート演算を遂行するために処理エレメント(PE)及び処理ユニット500の任意の適切な組み合わせを動的にインスタンス化することで、ソート演算を加速化(例えば、向上及び/又は最適化)するための動的に拡張可能な階層構造が提供される。
図6は、本発明の一実施形態によるソート演算を動的にスケーリングする方法を示すフローチャートである。しかし、本発明は、図6に示す方法600の動作の順序又は個数に限定されず、当業者によって認識される動作の任意の所望の順序又は個数に変更され得る。例えば、一実施形態で、動作の順序が変わるか又は動作がより少ないか若しくは追加の動作を含む。
図6を参照すると、方法600は、開始し、ステップ605で、ホストコンピュータ102(図1参照)からソートコマンドを受信する。例えば、ソートコマンドは、SSD104a(図2を参照)に格納された入力データの配列をソートするためのホストコンピュータ102によるコマンドを指す。ステップ610で、入力データ配列のサイズが識別される。例えば、一実施形態で、FPGA106a(図2を参照)は、入力データ配列のサイズを識別するためにソートコマンドを分析する。ステップ615で、入力データ配列のサイズは、しきい値(例えば、基準サイズ)と比較される。例えば、一実施形態で、入力データ配列のサイズに応じてインスタンス化される演算コンポーネント210(図2、図4、及び図5を参照)の適切な構成を決定するために、FPGA106aは、入力データ配列のサイズを1つ以上のしきい値サイズ(例えば、1つ以上の基準サイズ)と比較する。即ち、1つ以上のしきい値は、入力データの配列のサイズ及び/又は多様な要求事項(例えば、ユーザーの要求事項、アプリケーションのタイプ、リソース割り当ての要求事項、他の動作をサポートするための要求事項など)に基づいて、入力データの配列を効率的にソートするのに使用される処理エレメント(PE)及び/又は処理ユニット(PU)の異なる構成に対応する。
例えば、一実施形態で、1つ以上のしきい値はルックアップテーブル(Look−Up Table:LUT)などに格納され、1つ以上のしきい値の各々は入力データ配列のサイズに応じて入力データ配列を効率的にソートするようにインスタンス化される処理エレメント(PE)及び/又は処理ユニット(PU)の適切な又は所望の組み合わせ(例えば、予め決められた組み合わせ)と相関する。例えば、第1のしきい値未満の入力データ配列のサイズは、単一の処理エレメント(PE)が入力データの配列を効率的にソートするのに十分であることを示す。他の例で、第1のしきい値以上で第2のしきい値未満の入力データ配列のサイズは、単一の処理ユニット(PU)に接続された複数の処理エレメント(PE)が入力データの配列を効率的にソートするのに十分であることを示す。他の例で、第2のしきい値以上の入力データ配列のサイズは、各々が複数の処理エレメント(PE)を含む複数の処理ユニット(PU)が入力データの配列を効率的にソートするのに十分であることを示す。しかし、本発明はこのような例示に限定されず、しきい値は、処理エレメント(PE)及び/又は処理ユニット(PU)の多様な粒状の(granular)の組み合わせに応じて、多様なユーザーの要求事項、資源割り当ての要求事項、アプリケーションのタイプ、サポートされる他の動作になどによって分割されることが理解されるべきである。
図6を再び参照すると、ステップ615で、入力データ配列のサイズがしきい値よりも小さい場合(「いいえ」の場合)、単一の処理エレメント(PE)は、上述したように入力データの配列を効率的にソートするのに十分であると決定される。従って、単一の処理エレメント(PE)はステップ620でインスタンス化され、ステップ625で、入力データの配列の完全にソートされた配列を生成するために、単一の処理エレメント(PE)は入力データの配列全体をソートする(例えば、並列プロセス又は逐次プロセスで)。ステップ645で、完全にソートされた配列は、ホストコンピュータ102に返され(リターンされ)、方法は終了する。
一方、ステップ615で、入力データ配列のサイズがしきい値よりも大きい場合(「はい」の場合)、複数の処理エレメント(PE)を含む少なくとも1つの処理ユニット(PU)は、上述したように入力データの配列を効率的にソートするのに十分であると決定される。例えばこの場合、ステップ615は、入力データの配列が効率的にソートされるようにインスタンス化される処理ユニット(PU)及び処理エレメント(PE)の適切な個数を決定するために、1つ以上のしきい値と入力データ配列のサイズとの1つ以上の比較を含む。従って、ステップ630で、複数の処理エレメント(PE)を含む少なくとも1つの処理ユニット(PU)はインスタンス化され、ステップ635で、入力データの配列の部分的にソートされた配列を生成するために、複数の処理エレメント(PE)は、入力データの配列の異なるセグメント(例えば、異なる部分又は異なるサブセット)をソートする。例えば、入力データ配列は複数の処理エレメント(PE)の間でセグメント化され、各処理エレメント(PE)は入力データのセグメントに対応する部分的にソートされた配列を生成する。
ステップ640で、入力データ配列の完全にソートされた配列を生成するために部分的にソートされた配列は、処理ユニット(PU)によってソートされる。例えば、処理エレメント(PE)による出力された部分的にソートされた配列は、入力データ配列の完全にソートされた配列を生成するために、処理ユニット(PU)によって追加的にソート(例えば、グローバルソート)される。ステップ645で、完全にソートされた配列は、ホストコンピュータ102に提供され、方法は終了する。
図7は、本発明の一実施形態によるストレージシステムの他の例のシステム図である。図7に示すストレージシステム700は、図1に示したストレージシステム100(図1参照)と同一であるか又は実質的に同一であるため(類似するため)、重複する説明は簡略化されるか又は繰り返されない。しかし、図1に示したストレージシステム100とは異なり、図7に示すストレージシステム700は、再構成可能な処理装置106(図1参照)(例えば、FPGA106a)とストレージ装置104(図1参照)(例えば、SSD104a)との間の直接(又は個別に)相互接続702を更に含む。例えば、一実施形態で、直接相互接続702は、FPGA106aによってSSD104aに格納された入力データの配列に直接アクセスし、ホストコンピュータ102(図1参照)を必要とせずにFPGA DRAM114aに入力データ配列をリードするために使用される。従って、ホストコンピュータ102によって課されたレイテンシ(latency)とスループット制限(throughput limitation)が減少する。
より具体的に、図1の実施形態を参照すると、ホストコンピュータ102は、ストレージ装置104(例えば、SSD104a)から入力データ配列をリードし、ホストメモリ110に入力データ配列をロード(load)する。その後、ホストコンピュータ102は、ソートを開始するために、ホストメモリ110から再構成可能な処理メモリ114(例えば、FPGA DRAM114a)に入力データ配列を伝送する。この場合、ホストコンピュータ102、ストレージ装置104(例えば、SSD104a)、及び再構成可能な処理装置106(例えば、FPGA106a)の間の通信コストが増加し、レイテンシとスループットの制限が増加する。なお、ホストコンピュータ102のような汎用プロセッサは、CPUのオーバーヘッドが大きく、多数のSSDでのPCIの帯域幅を共有するため、多数のSSDと通信する場合に拡張性に限界が有る。
図7に示す実施形態を参照して比較すると、FPGA106aは、ホストコンピュータ102を伴わず、P2P(Point−to−Point)通信を使用する直接相互接続702を通じて1つ以上のSSD104aに直接アクセスする。例えば、最初にデータをホストメモリ110にロードしてからソートを開始するためにデータをFPGA DRAM114aに伝送する代わりに、FPGA106aは、配列のエレメントをリードするためにSSD104aに直接アクセスする。ソート後に、ソートされたセグメントはFPGA DRAM114aに格納され、次のセグメントはロード及びソートされる。直接相互接続702を通じてFPGA106aとSSD104aとの間のP2P通信は、ホストメモリ110からリードしてホストメモリ110にライトするオーバーヘッドを減らすか又は除去し、ホストコンピュータ110を通した通信に関連付けられたオーバーヘッドを除去又は減少させることによって、動作上のレイテンシを減少させることができる。
本実施形態によると、演算をストレージ装置の近くにすることで、入力/出力(I/O)のコストが減少し、より大規模なストレージシステムを管理する観点から、システムの拡張性が増加される。例えば、多数のSSDとしてより大きなストレージシステムを管理するための拡張性は、一般的に大容量のホストメモリ、データリードに対するCPUのオーバーヘッド、及びリソース間のPCIの帯域幅の共有によって制限される。直接相互接続702を通じたP2P通信を使用することにより、そのようなボトルネックの現象を除去又は軽減するため、システムの拡張性は増加する。なお、直接相互接続702を通じたP2P通信は、ソートされるデータが演算装置(例えば、ホストコンピュータ102)のメインメモリ(例えば、一般的にDRAM)に適合しない場合に使用される外部ソートに特に有用であるため、例えばSSD104aのように遅い外部ストレージにデータが移行される。SSD104aに多数のリード及びライトを要求する外部ソートの場合、減少されたデータへのアクセスレイテンシは、FPGA106a内部の演算資源の利用率を向上させる。
本明細書で、「第1」、「第2」、「第3」などの用語は、多様なエレメント、成分、コンポーネント、領域、レイヤー、及び/又はセクションを説明するために使用されるとしても、このようなエレメント、成分、コンポーネント、領域、レイヤー、及び/又はセクションは、このような用語によって限定されないものとして理解すべきである。このような用語は、他のエレメント、コンポーネント、領域、レイヤー、又はセクションから1つのエレメント、コンポーネント、領域、レイヤー、又はセクションを区分するために使用される。従って、本発明の思想及び範囲を逸脱せずに、本明細書の第1のエレメント、コンポーネント、領域、レイヤー、又はセクションは、第2のエレメント、コンポーネント、領域、レイヤー、又はセクションを指す。
1つのコンポーネント又はレイヤーが他のコンポーネント又はレイヤー「上に」、「接続された」、又は「結合された」と言及する場合、それは他のエレメント又はレイヤーに直接接続されるか、接続されるか、又は1つ以上の介在するエレメント又はレイヤーが存在するものと理解すべきである。
本明細書で使用される用語は、特定の実施形態を説明するためのものであり、本発明を限定しようとするものとして意図されない。本明細書で使用されるように、文脈上明らかに別の意味を示していると判定されない限り、単数形「1つ」は複数形も含むものとして意図される。「構成される」、「構成する」、「含む」及び「含んでいる」、「有する」及び「有している」との用語は、本明細書で使用される場合、このような用語は、定められた特徴、整数、ステップ、動作、エレメント、及び/又は成分の存在を明示するが、1つ以上の他の特徴、整数、ステップ、動作、エレメント、成分、及び/又はそれらのグループの追加又は存在を排除しない。本明細書で使用される「及び/又は」との用語は、1つ以上のリストされた項目に関連付けられた任意且つ全ての組み合わせを含む。「少なくとも1つ」のような表現は、エレメント全体のリストを修正し、リストの個別のエレメントを修正しない。
本明細書で使用されるように、「大体」、「大略」のような用語及びこれと類似する用語は、程度の用語ではない近似値の用語として使用され、当業者によって認識される測定又は計算された値の固有な変動を考慮するためのものとして意図される。なお、本発明の実施形態を記述するにあたって、「できる」の使用は、「本発明の1つ以上の実施形態」を意味する。本明細書で使用されるように、「使用」、「使用される」、及び「使用された」のような用語は、「利用」、「利用される」、及び「利用された」のような用語の同義語としてそれぞれみなされる。
別の方法で定義されない限り、本明細書で使用される全ての用語(技術的、科学的な用語を含む)は、本発明が属する技術分野における通常の知識を有する者によって一般的に理解されるのと同一の意味を有する。なお、一般的に使用される辞書に定義された用語のような用語は、関連技術及び/又は本明細書の文脈で、その意味に一致する意味を有するものと解釈されるべきであり、本明細書で明示的に定義しない限り、理想的且つ過度に公式的な意味で解釈されてはならない。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
100、200 ストレージシステム
102 ホストコンピュータ
104 ストレージ装置
104a SSD
106 再構成可能な処理装置
106a FPGA
108 ホストプロセッサ
110 ホストメモリ
112 ストレージインターフェース
114 再構成可能な処理メモリ
114a FPGA DRAM
116 再構成可能な処理アクセラレータ
116a FPGAアクセラレータ(ソートカーネル)
202 FPGAボード
204 インターフェース
206 BRAM
208 BRAMバッファ
210 演算コンポーネント
212 データリオーダラ(再整列器)
400 処理エレメント(PE)
402、504 コントローラ
404 ローカルコンパレータ
406 ローカルマージャー
450 バイトニックソート
500 処理ユニット
502 アービタ
506 アドレス変換器
508 グローバルコンパレータ
510 グローバルマージャー
702 直接相互接続

Claims (20)

  1. ソート演算に関連するデータエレメントの配列を格納するストレージ装置と、
    前記ストレージ装置とホストコンピュータとの間の通信を可能にするストレージインターフェースと、
    前記ストレージ装置に通信可能に接続された再構成可能な処理装置と、を備え、
    前記再構成可能な処理装置は、
    前記ストレージ装置からリードされ、前記ストレージ装置に格納された前記データエレメントの配列に対応する入力データを格納するメモリと、
    前記ホストコンピュータから受信されたソートコマンドに応じて、前記メモリに格納された入力データに対する前記ソート演算を実行する1つ以上の演算コンポーネントを有するカーネルを含み、
    前記再構成可能な処理装置は、前記ソート演算を加速化する前記1つ以上の演算コンポーネントを動的にインスタンス化することを特徴とするストレージシステム。
  2. 前記ストレージ装置は、SSD(Solid State Drive)を含み、
    前記再構成可能な処理装置は、FPGA(Field Programmable Gate Array)を含むことを特徴とする請求項1に記載のストレージシステム。
  3. 前記入力データは、前記ホストコンピュータによって前記SSDからリードされて前記ホストコンピュータの1次メモリにロードされ、
    前記FPGAの前記メモリは、前記ホストコンピュータの1次メモリから前記入力データを受信することを特徴とする請求項2に記載のストレージシステム。
  4. 前記メモリと前記SSDとの間の直接相互接続を更に含み、
    前記FPGAは、前記直接相互接続を通じて前記SSDから前記メモリに前記入力データをリードする前記SSDに直接アクセスすることを特徴とする請求項2に記載のストレージシステム。
  5. 前記FPGA及び前記SSDは、同一の回路ボード上に実装されることを特徴とする請求項4に記載のストレージシステム。
  6. 前記FPGAは、前記SSDからデータをリードする場合、前記ホストコンピュータをバイパスするためにP2P(Point−to−Point)通信を使用する前記直接相互接続を通じて前記SSDにアクセスすることを特徴とする請求項4に記載のストレージシステム。
  7. 前記メモリは、DRAM(Dynamic Random Access Memory)を含むことを特徴とする請求項4に記載のストレージシステム。
  8. 前記1つ以上の演算コンポーネントは、複数の処理エレメントを含み、
    前記複数の処理エレメントの各々は、ソーティングアルゴリズムに基づいて前記入力データに対応する前記データエレメントの配列のセグメントをソートすることを特徴とする請求項1に記載のストレージシステム。
  9. 前記複数の処理エレメントの各々は、ローカルコンパレータ及びローカルマージャーを含み、
    前記ローカルコンパレータ及び前記ローカルマージャーは、前記ソーティングアルゴリズムを使用して前記セグメントから部分的にソートされた配列を生成することを特徴とする請求項8に記載のストレージシステム。
  10. 前記1つ以上の演算コンポーネントは、前記複数の処理エレメントの各々の出力に接続された処理ユニットを更に含み、
    前記処理ユニットは、前記ソーティングアルゴリズムに基づいて前記複数の処理エレメントの出力をソートすることを特徴とする請求項9に記載のストレージシステム。
  11. 前記処理ユニットは、グローバルコンパレータ及びグローバルマージャーを含み、
    前記グローバルコンパレータ及び前記グローバルマージャーは、前記ソーティングアルゴリズムを使用して、前記複数の処理エレメントによって前記部分的にソートされた配列から前記入力データの完全にソートされた配列を生成することを特徴とする請求項10に記載のストレージシステム。
  12. 前記ソーティングアルゴリズムは、バイトニック(Bitonic)ソーティングアルゴリズムであることを特徴とする請求項11に記載のストレージシステム。
  13. 前記再構成可能な処理装置は、前記データエレメントの配列のサイズに応じてランタイムに多数の前記複数の処理エレメント及び前記処理ユニットを動的にインスタンス化することを特徴とする請求項11に記載のストレージシステム。
  14. 前記再構成可能な処理装置は、
    前記データエレメントの配列のサイズを識別し、
    1つ以上のしきい値と前記データエレメントの配列のサイズとを比較し、
    前記比較に基づいて、多数の前記複数の処理エレメント及び前記処理ユニットをインスタンス化することを特徴とする請求項13に記載のストレージシステム。
  15. ソート演算に関連するデータエレメントの配列を格納するストレージ装置、前記ストレージ装置とホストコンピュータとの間の通信を可能にするストレージインターフェース、及び前記ストレージ装置に通信可能に接続された再構成可能な処理装置を備えるストレージシステムのソート演算を動的にスケーリングする方法であって、
    前記再構成可能な処理装置によって、前記ホストコンピュータからソートコマンドに関連するデータエレメントの配列のサイズを識別するステップと、
    前記再構成可能な処理装置によって、前記配列のサイズと1つ以上のしきい値のサイズとを比較するステップと、
    前記再構成可能な処理装置によって、前記ソート演算を加速化するために、前記比較に基づいて1つ以上の演算コンポーネントをインスタンス化するステップと、を有することを特徴とする方法。
  16. 前記ストレージ装置は、SSD(Solid State Drive)を含み、
    前記再構成可能な処理装置は、FPGA(Field Programmable Gate Array)を含むことを特徴とする請求項15に記載の方法。
  17. 前記1つ以上の演算コンポーネントをインスタンス化するステップは、1つ以上のロジックブロック、及び前記FPGAのカーネルの1つ以上の相互接続を再構成するステップを含むことを特徴とする請求項16に記載の方法。
  18. 少なくとも1つのローカルソート演算コンポーネントによって、前記データエレメントの配列の少なくとも1つのセグメントをソートするステップと、
    前記少なくとも1つのローカルソート演算コンポーネントによって、前記少なくとも1つのセグメントのソートされた配列を生成するステップと、を更に含み、
    前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記少なくとも1つのローカルソート演算コンポーネントをインスタンス化するステップを含むことを特徴とする請求項16に記載の方法。
  19. 複数のローカルソート演算コンポーネントの各々によって、前記データエレメントの配列の異なるセグメントをソートするステップと、
    前記複数のローカルソート演算コンポーネントの各々によって、対応するセグメントの部分的にソートされた配列を生成するステップと、を更に含み、
    前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記複数のローカルソート演算コンポーネントをインスタンス化するステップを含むことを特徴とする請求項16に記載の方法。
  20. グローバルソート演算コンポーネントによって、前記複数のローカルソート演算コンポーネントの各々によって生成された前記部分的にソートされた配列をソートするステップと、
    前記グローバルソート演算コンポーネントによって、前記部分的にソートされた配列のソートから前記データエレメントの配列に対応する完全にソートされた配列を生成するステップと、を更に含み、
    前記1つ以上の演算コンポーネントをインスタンス化するステップは、前記再構成可能な処理装置によって、前記複数のローカルソート演算コンポーネントの各々の出力に接続された前記グローバルソート演算コンポーネントをインスタンス化するステップを更に含むことを特徴とする請求項19に記載の方法。

JP2020171938A 2019-10-29 2020-10-12 ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 Active JP7381429B2 (ja)

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 2020-03-17
US16/821,811 US11249651B2 (en) 2019-10-29 2020-03-17 System and method for hierarchical sort acceleration near storage

Publications (3)

Publication Number Publication Date
JP2021072107A true JP2021072107A (ja) 2021-05-06
JP2021072107A5 JP2021072107A5 (ja) 2023-09-29
JP7381429B2 JP7381429B2 (ja) 2023-11-15

Family

ID=75585979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020171938A Active JP7381429B2 (ja) 2019-10-29 2020-10-12 ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法

Country Status (4)

Country Link
US (1) US11249651B2 (ja)
JP (1) JP7381429B2 (ja)
KR (1) KR102663759B1 (ja)
CN (1) CN112749107B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
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
CN113900622B (zh) * 2021-09-22 2022-04-08 中国科学院国家空间科学中心 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质
CN115857805B (zh) * 2022-11-30 2023-06-27 合肥腾芯微电子有限公司 人工智能可计算存储系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007524923A (ja) 2003-05-23 2007-08-30 ワシントン ユニヴァーシティー Fpgaデバイスを使用するインテリジェントデータ記憶および処理
JP2005190047A (ja) 2003-12-25 2005-07-14 Hitachi Ltd データソート機能を持つストレージシステム
SG136862A1 (en) 2006-04-21 2007-11-29 Oce Tech Bv Variable speed printing
US8589867B2 (en) * 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US9495139B2 (en) 2011-04-11 2016-11-15 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
US9619499B2 (en) * 2013-08-07 2017-04-11 International Business Machines Corporation Hardware implementation of a tournament tree sort algorithm
US9495418B2 (en) 2013-08-07 2016-11-15 International Business Machines Corporation Scalable acceleration of database query operations
US9251218B2 (en) 2013-08-07 2016-02-02 International Business Machines Corporation Tunable hardware sort engine for performing composite sorting algorithms
US20150149691A1 (en) 2013-09-11 2015-05-28 Glenn Austin Baxter Directly Coupled Computing, Storage and Network Elements With Local Intelligence
US10257095B2 (en) * 2014-09-30 2019-04-09 Nicira, Inc. Dynamically adjusting load balancing
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
WO2018089993A1 (en) * 2016-11-14 2018-05-17 Google Llc Sorting for data-parallel computing devices
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)

Also Published As

Publication number Publication date
US11249651B2 (en) 2022-02-15
TW202117532A (zh) 2021-05-01
JP7381429B2 (ja) 2023-11-15
KR102663759B1 (ko) 2024-05-09
US20210124500A1 (en) 2021-04-29
CN112749107A (zh) 2021-05-04
KR20210052188A (ko) 2021-05-10
CN112749107B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
JP7381429B2 (ja) ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法
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
Jun et al. Terabyte sort on FPGA-accelerated flash storage
EP4010793A1 (en) Compiler flow logic for reconfigurable architectures
Qiao et al. FANS: FPGA-accelerated near-storage sorting
Lee et al. Smartsage: training large-scale graph neural networks using in-storage processing architectures
JP2021072107A5 (ja)
US11675506B2 (en) Storage device supporting multi-tenancy and operating method thereof
Chen et al. Towards efficient allocation of graph convolutional networks on hybrid computation-in-memory architecture
Salamat et al. NASCENT2: Generic near-storage sort accelerator for data analytics on SmartSSD
US11429299B2 (en) System and method for managing conversion of low-locality data into high-locality data
Paul et al. Energy-efficient hardware acceleration through computing in the memory
US20240061779A1 (en) Hardware accelerator for hypergraph processing and operating method thereof
US11983141B2 (en) System for executing an application on heterogeneous reconfigurable processors
HeydariGorji et al. In-storage processing of I/O intensive applications on computational storage drives
TWI836132B (zh) 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法
US20220374348A1 (en) Hardware Acceleration
Jain et al. Merge network for a non-von Neumann accumulate accelerator in a 3D chip
Kim et al. FPGA Prototyping of Low-Precision Zero-Skipping Accelerator for Neural Networks
Li et al. Efficient FPGA-based Sparse Matrix-Vector Multiplication with Data Reuse-aware Compression
US11442643B2 (en) System and method for efficiently converting low-locality data into high-locality data
Balasubramonian Making the case for feature-rich memory systems: The march toward specialized systems
Winkler et al. FPGA processing of decision tree ensembles stored in external DRAM
Wang et al. SH-GAT: Software-hardware co-design for accelerating graph attention networks on FPGA

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230921

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230921

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230921

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231102

R150 Certificate of patent or registration of utility model

Ref document number: 7381429

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150