JP2017534942A - ソリッドステートドライブを使用して計算集約的な動作を加速するための技術 - Google Patents

ソリッドステートドライブを使用して計算集約的な動作を加速するための技術 Download PDF

Info

Publication number
JP2017534942A
JP2017534942A JP2017510647A JP2017510647A JP2017534942A JP 2017534942 A JP2017534942 A JP 2017534942A JP 2017510647 A JP2017510647 A JP 2017510647A JP 2017510647 A JP2017510647 A JP 2017510647A JP 2017534942 A JP2017534942 A JP 2017534942A
Authority
JP
Japan
Prior art keywords
server
data
solid state
output
state drive
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
JP2017510647A
Other languages
English (en)
Other versions
JP6569962B2 (ja
Inventor
ビー. ハン、ジャワド
ビー. ハン、ジャワド
エス. グリムスラッド、ヌット
エス. グリムスラッド、ヌット
エル. カウルソン、リチャード
エル. カウルソン、リチャード
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2017534942A publication Critical patent/JP2017534942A/ja
Application granted granted Critical
Publication of JP6569962B2 publication Critical patent/JP6569962B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Abstract

暗号化、暗号解読、符号化、復号化、その他などの計算集約的な動作を加速するための技術が説明される。いくつかの実施形態において、本技術は、例えばサーバ又は他の計算ベースに代わって計算集約的な動作を行うために、1つ以上のソリッドステートドライブの、又はそれと関連付けられるハードウェア加速エンジンを活用する。また、このような技術を利用するシステム、方法、及びコンピュータ読み出し可能な媒体も説明される。

Description

本開示は、計算集約的な動作を加速するための技術に関する。具体的には、本開示は、1又は複数のソリッドステートドライブによって計算集約的な動作を加速するための技術に関する。
暗号化、暗号解読、圧縮/解凍、ハッシュ計算、低レベルの画像処理アルゴリズム(限定されないが、フィルタ、閾値化、その他など)、DNA配列整合及び検索アルゴリズム、符号化、復号化アルゴリズム、その他などの計算集約的な動作は、完了するためにかなりの中央演算処理装置(CPU:central processing unit)のサイクル及び/又は他のリソースを必要とし得る。計算集約的な動作に対する必要性及びその複雑さが増すにつれて、そのような動作の実行をCPUから専用のハードウェアにオフロードするための技術が開発されてきた。例えば、計算集約的な暗号化及び暗号解読動作を行うために、スタンドアロンの暗号化及び暗号解読アクセラレータが開発されてきた。このようなアクセラレータは、ある特定の暗号化及び暗号解読動作の特定の実行のために設計することができ、したがって、数多くの事例において、該アクセラレータは、このような動作を汎用プロセッサよりも高速に行うことができる。該アクセラレータはまた、このような動作を行うために必要なCPUサイクルの数を低減させることもでき、したがって、暗号化、暗号解読、又は他の計算集約的な動作がアクセラレータによって行われているときであっても、他の動作のためにCPUを解放することができる。スタンドアロンのハードウェアアクセラレータは、それらの意図する目的に対しては効果的であるが、非常に高コストであり得る。実際に、スタンドアロンのハードウェアアクセラレータのコストは、いくつかの事例において、例えば、複数のスタンドアロンのハードウェアアクセラレータが、加速された計算サービスを1又は複数のクライアントに提供するように構成されるサーバ(本明細書では、「ホストシステム」とも称される)において使用されるときに、極端に高くなり得る。
特許請求される主題の実施形態の特徴及び利点は、以下の発明を実施するための形態が進行するにつれて、図面を参照すれば明らかになるはずであり、図面において同じ符号は同じ部分を示す。
本開示と一致する計算集約的な動作を加速するためのシステムのブロック図である。 本開示の様々な実施形態と一致する図1のシステムの更に詳細なブロック図である。 本開示の様々な実施形態と一致するサーバ及びソリッドステートドライブアレイの更なる詳細を示すブロック図である。 本開示と一致する計算集約的な動作を加速する例示的な方法と一致する例示的な動作のフロー図である。 本開示の様々な実施形態と一致する追加的なシステム構成を示す図である。 本開示の様々な実施形態と一致する追加的なシステム構成を示す図である。
本開示は、特定の用途のための実例となる実施形態を参照して本明細書で説明されるが、そのような実施形態は、例示的なものに過ぎないこと、及び添付の特許請求の範囲によって定義される本発明がそうした実施形態に限定されないことを理解されたい。本明細書で提供される教示を利用することができる当業者(複数可)は、本開示の範囲内の追加的な修正、用途、及び実施形態、並びに本開示の実施形態が有用である追加的な分野を認識するであろう。
本明細書で説明される技術は、1又は複数のデバイスを使用して、例えばクライアントサーバアーキテクチャにおいて実施することができる。「デバイス(device)」、「デバイス(devices)」、「電子デバイス(electronic device)」、及び「電子デバイス(electronic devices)」という用語は、本開示と一致するクライアント及び/又はサーバとして使用することができる多数の電子デバイスのうちのいずれかを個別的又は集合的に参照するために、本明細書で互換的に使用される。本開示に従って使用することができるデバイスの非限定的な例としては、限定されないが、カメラ、携帯電話、コンピュータ端末、デスクトップコンピュータ、電子読取装置、ファクシミリ装置、キオスク、ネットブックコンピュータ、ノートブックコンピュータ、インターネットデバイス、支払い端末、パーソナルデジタルアシスタント、メディアプレーヤー及び/又はレコーダー、サーバ(例えば、ブレードサーバ、ラックマウントサーバ、これらの組み合わせ、その他)、セットトップボックス、スマートフォン、タブレットパーソナルコンピュータ、ウルトラモバイルパーソナルコンピュータ、有線電話、これらの組み合わせ、並びに同類のものなどの、任意の種類のモバイルデバイス及び/又は固定デバイスが挙げられる。このようなデバイスは、ポータブル又は固定とすることができる
「クライアント」及び「クライアントデバイス」という用語は、本開示と一致するクライアント機能を行うことができる1又は複数の電子デバイスを指すように、本明細書で互換的に使用される。対照的に、「サーバ」及び「サーバデバイス」という用語は、本開示と一致するサーバ機能を行うことができる1又は複数の電子デバイスを指すように、本明細書で互換的に使用される。いくつかの実施形態において、サーバデバイスは、1又は複数のサービス(例えば、計算加速サービス)をクライアントなどの別のデバイスに提供するように構成される、ホストシステムの形態とすることができる。このような実施形態において、サーバデバイスは、データセンタ又は他の計算ベースの一部を形成するか、それを含むか、又はその形態とすることができる。「ホストシステム」という用語は、本明細書で「サーバ」及び「サーバデバイス」という用語と互換的に使用される。
図1〜図3は、単一のクライアント及び単一のサーバを含む、本開示に従う例示的なシステムを例示する。このような具体例は、例示のためのもの、任意の数のクライアント及びサーバを使用することができることを理解されたい。実際に、本明細書で説明される技術は、複数(例えば、2、5、10、20、50、100、1000、10,000、又はそれ以上)のクライアント及び/又はサーバデバイスによって実施することができる。更に、サーバの数は、クライアントの数に相関させる必要はない。実際に、いくつかの実施形態において、本明細書で説明される技術は、比較的多数(例えば、100、1,000、10,000)などのクライアントに対する計算加速サービスをサポート及び/又は提供するために、比較的少数(例えば、1つ又は2つ)のサーバを利用する。したがって、本開示は、単数のクライアント及び/又はサーバを指す場合があるが、このような表現は、複数形も含むものと解釈されるべきである。同様に、クライアント又はサーバとしてのデバイスの指定は、明確にするためのものであり、いくつかの実施形態では、クライアントデバイスを、サーバ機能を行うように構成することができること、及びサーバデバイスを、本開示と一致するクライアント機能を行うように構成することができることを理解されたい。
本明細書の任意の実施形態において使用されるときに、「モジュール」という用語は、本開示と一致する1又は複数の動作を行うように構成される、ソフトウェア、ファームウェア、回路、及び/又はこれらの組み合わせを指すことができる。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記録されるソフトウェアパッケージ、コード、命令、命令セット、及び/又はデータとして具現化することができる。ファームウェアは、メモリデバイスにおいてハードコードされる(例えば、不揮発性である)コード、命令若しくは命令セット、及び/又はデータとして具現化することができる。「回路」は、本明細書で任意の実施形態において使用されるときに、例えば、単独で、又は任意の組み合わせで、ハードワイヤード回路、1又は複数の個別の命令処理コアを備えるコンピュータプロセッサなどのプログラマブル回路、データマシン回路、プログラマブル回路によって実行される命令を記憶するソフトウェア及び/又はファームウェアを備えることができる。モジュールは、先に定義されたように、1又は複数の電子デバイスの一部を形成する回路として、集合的又は個別的に具現化することができる。いくつかの実施形態において、本明細書で説明される1又は複数のモジュールは、本開示と一致する1又は複数のクライアント機能及び/又はサーバ機能を行うために、ハードウェアにおいて少なくとも部分的に実施される論理の形態とすることができる。
「近距離通信ネットワーク」という語句は、本明細書では、互いに比較的近くにあるデバイス間で、すなわち近距離通信を介して、データ信号を送信/受信するための技術を指すために使用される。近距離通信としては、例えば、BLUETOOTH(登録商標)ネットワーク、パーソナルエリアネットワーク(PAN:personal area network)、近距離無線通信、ZigBee(登録商標)ネットワーク、有線Ethernet(登録商標)接続、これらの組み合わせ、及び同類のものを使用したデバイス間の通信が挙げられる。対照的に、「長距離通信ネットワーク」という語句は、本明細書において、互いにかなり離れた距離であるデバイス間で、すなわち長距離通信を使用して、データ信号を送信/受信するための技術を指すために使用される。長距離通信としては、例えば、WiFi(登録商標)ネットワーク、携帯電話ネットワーク(3G、4G、その他、及び同類のもの)が挙げられるがこれらに限定されないワイドエリアネットワーク(WAN:wide area network)、インターネット、電話通信ネットワーク、これらの組み合わせ、及び同類のものを使用したデバイス間の通信が挙げられる。
「SSD」、「SSDs」、及び「ソリッドステートドライブ(solid state drive)」という用語は、本明細書において、データを持続的に記憶するために集積回路アセンブリ(例えば、不揮発性ランダムアクセスメモリ(RAM:random access memory)アセンブリ)が使用される、多種多様なデータ記憶デバイスのいずれかを指すために使用される。このような用語はまた、ソリッドステートドライブを、例えば磁気記録媒体を含む、ハードディスクドライブと組み合わせて(例えば、キャッシュとして)使用することができる、いわゆる「ハイブリッド」ドライブも包含する。いずれの事例においても、SSDは、限定されないが、否定及び否定倫理積(NAND:not and)及び/又は否定論理和(NOR:not or)メモリなどのフラッシュメモリ、相変化メモリ(PCM:phase change memory)、3次元クロスポイントメモリ、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM:ferro−electric transistor random access memory)、メモリスタ技術、スピン転送トルク(STT:spin transfer torque)−MRAM、又は他のバイトアドレス可能なメモリデバイスを組み込む磁気抵抗ランダムアクセスメモリ(MRAM:magnetoresistive random access memory)メモリ、これらの組み合わせ、及び同類のものなどの、不揮発性メモリを含むものと理解することができる。
「計算集約的な動作」という語句は、本明細書において、完了するためにかなりのプロセッササイクルを必要とし得る、多種多様な計算動作のいずれかを指すために使用される。計算集約的な動作の非限定的な例としては、暗号化、暗号解読、圧縮/解凍、ハッシュ計算、低レベルの画像処理アルゴリズム(限定されないが、フィルタ、閾値化、その他など)、DNA配列整合及び検索アルゴリズム、符号化アルゴリズム、復号化アルゴリズム、これらの組み合わせ、及び同類のものが挙げられる。当然、上述した動作は単なる例示であり、他の計算集約的な動作が本開示によって想定され、包含される。
背景技術において述べたように、データ暗号化/暗号解読、ビデオ符号化/復号化、ネットワークパケットルーティング、その他などの計算集約的な動作を加速するために、スタンドアロンのハードウェアアクセラレータが開発され、実装されてきた。このようなスタンドアロンのハードウェアアクセラレータは、それらの意図する目的に対しては効果的であり得るが、それらは非常に高価になり得る。したがって、スタンドアロンのハードウェアアクセラレータは、特にサーバが複数のこのようなアクセラレータを含むためのものである場合に、1又は複数のクライアントに対して計算加速サービス(例えば、加速された暗号化、暗号解読、その他)を提供するように構成されるサーバ又は他の計算ベースのコストのかなりの部分に相当し得る。更に、計算集約的な動作の実行は、ある特定のスタンドアロンのハードウェアアクセラレータによって十分にスケーリングすることができない場合がある。すなわち、いくつかの場合において、スタンドアロンのハードウェアアクセラレータの数の増加は、計算集約的な動作の実行の相応する(例えば、1:1)増加をもたらさない場合がある。
電子デバイスは、ますますソリッドステートドライブを備えるようになり、ソリッドステートドライブは、全般的に、データの記憶に使用される。このことを考慮すれば、SSDは、高帯域幅(例えば、1秒あたりマルチギガバイト)のハードウェア暗号化/暗号解読エンジンを含む、ハードウェアベースのコントローラを含む(以下、「SSDコントローラ」)。SSDのハードウェア暗号化/暗号解読エンジンは、様々な動作を高速で行うことができるが、多くの場合において、このエンジンは、データ保存時の暗号化及び/若しくは復号化を行うように、並びに/又はドライブの通常の読み出し/書き込みフローの一部としてデータを暗号化/暗号解読するように構成される。例えば、いくつかのSSDは、限定されないが、FIPS Publication197及び/又はISO/IEC18033−3において指定される高度暗号化規格(AES:Advanced Encryption Standard)アルゴリズムなどの1又は複数の暗号化アルゴリズムによって、SSDに記憶されたデータを暗号化/暗号解読するように構成される、ハードウェア暗号化/暗号解読エンジンを含むことができる。既存の技術によって、SSDのハードウェア暗号化/暗号解読エンジンは、このような暗号化/暗号解読を(クライアント又はサーバの汎用プロセッサによって実行される)ソフトウェアにおいて行うよりも、数倍高速にデータ暗号化/暗号解読を行うことができる。
多くのSSDのハードウェア暗号化/暗号解読エンジンの実行に注目しているが、典型的なシステムにおいて、SSDコントローラ、具体的には、SSDコントローラのハードウェア暗号化/暗号解読エンジンは、クライアント及び/又はサーバデバイスに、例えば、データ暗号化/暗号解読又は他の計算集約的な動作の実行に利用できない。すなわち、スタンドアロンのハードウェアアクセラレータとは異なり、SSDのハードウェア暗号化/暗号解読エンジンは、全般的に、計算集約的な動作の実行のために、ホストシステム(クライアント又はサーバ)が直接アクセスできない。
前述したことを考慮すれば、本開示は、全般的に、多くのSSDに存在する1又は複数のハードウェア加速エンジンを利用する、計算集約的な動作を加速するための技術に関する。具体的には、及び下で説明されるように、本明細書で説明される技術は、SSDのハードウェア加速エンジンをホストシステムに提供することができる。その結果、ホストシステムは、上で識別されるような計算集約的な動作を加速するために、SSDのハードウェア加速エンジン(複数可)を使用することができる。以下から明らかになるように、この様式でのハードウェア加速エンジンの使用は、ソリッドステートドライブの従来のデータ記憶機能について妥協する必要はない。更に、いくつかの実施形態において、本明細書で説明される技術による計算集約的な動作の加速は、SSDの数によってスケーリングすることができる。
したがって、本開示の1つの態様は、計算集約的な動作を加速するためのシステムに関する。明確にし、理解を容易にするために、本開示は、加速される計算集約的な動作が暗号化/暗号解読アルゴリズムの、又はそのある一部分の実行である、様々な実施形態の説明に進む。本明細書で説明される技術は、暗号化/暗号解読動作を加速することに限定されるものではないこと、及びこれらの技術は、限定されないが、上記のもの及び/又はそれらの任意の部分を含む、任意の適切なタイプの計算集約的な動作を加速するために使用することができることを理解されたい。
これに関して、図1を参照する。図1は、本開示と一致する計算集約的な動作を加速するための例示的なシステムのブロック図である。示されるように、システム100は、クライアント101と、サーバ102と、ソリッドステートドライブ(SSD)アレイ103とを含む。
クライアント101は、上で定義されたように、任意の適切な電子デバイスとすることができる。限定されることなく、いくつかの実施形態において、クライアント101は、1又は複数の、携帯電話、デスクトップコンピュータ、電子読取装置、ラップトップコンピュータ、セットトップボックス、スマートフォン、タブレットパーソナルコンピュータ、テレビ、又はウルトラモバイルパーソナルコンピュータの形態である。その形態にかかわらず、いくつかの実施形態において、クライアント101(又はそのオペレータ)は、加速が所望される計算集約的な動作(本明細書において「ジョブ」とも称される)を有することができる。例えば、クライアント101(又はそのオペレータ)は、1組のデータを暗号化させることを望み得る。そのような場合において、及び下で詳細に説明されるように、クライアント101は、加速のためにジョブの全て又は一部分(例示的な事例では、暗号化のためにデータの全て又は一部分)をサーバ102に通信するように構成することができる。
クライアント101のように、サーバ102は、任意の適切な電子デバイスとすることができる。限定されることなく、サーバ102は、いくつかの実施形態において、1又は複数のブレードサーバ、ラックマウントサーバ、これらの組み合わせ、及び同類のものなどの、1又は複数のサーバコンピュータの形態である。いくつかの例示的な実施形態において、サーバ102は、スタンドアロンのサーバである。他の例示的な実施形態において、サーバ102は、データセンタ又は他の集約した計算ベースに見ることができるような、サーバアレイの1又は複数のサーバとすることができる。いずれの事例においても、サーバ102は、加速のためにクライアント101からジョブを受信し、加速のためにSSDアレイ103の1又は複数のSSDにこのジョブを伝送するように構成することができる。具体的には、及び下で説明されるように、サーバ102は、SSDのハードウェア加速エンジンにジョブの少なくとも一部分を行わせるために、SSDアレイ103の少なくとも1つのSSDに、クライアント101から受信したジョブの全部又は一部分を伝送するように構成することができる。サーバ102は、次いで、ハードウェア加速エンジンによって行われる動作の出力を取り出すか、又は受信し、この出力をクライアント101に通信することができる。
SDDアレイ103は、1又は複数のソリッドステートドライブを含むことができる。例示のために、本開示は、(例えば、図3に示されるように)SSDアレイが1つのSSD又は2つのSSDを含む、様々な実施形態を説明する。このような説明は、単なる例示のためのものであること、及び任意の数のSSDを使用することができることを理解されたい。実際に、本開示は、複数のSSDがSSDアレイ103に含まれる、例えば、SSD103が約2つより多い又は等しい、約5つより多い又は等しい、約10より多い又は等しい、約100より多い又は等しい、約1000より多い又は等しい、又はより多くのSSDを含む実施形態を想定する。ここでも、このような範囲は、単なる例示のためのものである。
SSDアレイ103のSSDは、任意の適切なフォームファクタ又は構成とすることができる。適切なSSDのフォームファクタの非限定的な例としては、様々な標準ハードディスクドライブのフォームファクタ(例えば、2.5インチ、3.5インチ、1.8インチ)、モバイルシリアルアドバンストテクノロジーアタッチメントのフォームファクタなどのモバイルフォームファクタ、周辺装置接続インターフェース(PCI:peripheral connect interface)ミニカードのフォームファクタ、モジュール上のディスクのフォームファクタ、ハイブリッドディスクのフォームファクタ、これらの組み合わせ、及び同類のもの、のいずれかであるSSDが挙げられる。いくつかの実施形態において、SSDアレイ103のSSDの1又は複数は、INTEL(登録商標) Corporationによって、例えばシリーズ300以上の呼称で販売されるSSDである。
例示のため、及び理解を容易にするために、図1、図2、及び図3は、SSDアレイ103がサーバ102とは別体であるように例示されるシステムを示す。このような場合において、SSDアレイ103は、サーバ102とは別体であるがサーバ102によってアクセス可能である計算ベースの一部とすることができると理解することができる。したがって、例えば、SSDアレイ103は、サーバ102とは別体の計算ベースの一部を形成するか、その形態とするか、又はそれを含むことができる。すなわち、SSDアレイ103は、サーバ102と同じ又は異なるデータセンタ、サーバファーム、ハウジング、その他に収容することができる。当然、このような具体例は、単なる例示のためのものであること、及びSSDアレイがサーバ102と一体的とすることができること、又は別様にはサーバ102の一部を形成することができることを理解されたい。例えば、サーバ102は、SSDアレイ103を含む、又は別様には該SSDアレイと一体的である、1又は複数のラックマウントサーバ及び/又はブレードサーバを含むことができる。このような実施形態において、SSDアレイ103のSSDの1又は複数は、サーバ102に、例えばマザーボード及び/又はその拡張ボードに通信可能に結合することができる。
クライアント101、サーバ102、及びソリッドステートドライブアレイ103は、互いに、例えば直接又は随意のネットワーク104を通して、有線通信又は無線通信とすることができる(破線で示す)。限定されることなく、クライアント101及びサーバ102は、いくつかの実施形態において、ネットワーク104を介して互いに通信し、サーバ102及びSSDアレイ103は、直接又はネットワーク104を通して通信する。いずれの事例においても、ネットワーク104は、データを搬送する任意のネットワークとすることができる。ネットワーク104として使用することができる適切なネットワークの非限定的な例としては、上で定義されたような短距離通信ネットワーク及び長距離通信ネットワーク、これらの組み合わせ、及び同類のものが挙げられる。いくつかの実施形態において、ネットワーク104は、BLUETOOTH(登録商標)ネットワーク、ZigBee(登録商標)ネットワーク、近距離無線通信(NFC:near field communications)リンク、有線(例えば、Ethernet(登録商標))接続、これらの組み合わせ、及び同類のものなどの、近距離通信ネットワークである。他の実施形態において、ネットワーク104は、Wi−Fi(登録商標)ネットワーク、セルラー(例えば、3G、4G、その他)ネットワーク、インターネットなどのワイドエリアネットワーク、これらの組み合わせ、及び同類のものなどの長距離通信ネットワークである。
以下、図2を参照する。図2は、計算集約的な動作を加速するためのシステム100の更なる詳細を含むブロック図を示す。示されるように、クライアント101は、任意の適切なデバイスプラットフォームとすることができる、クライアントデバイスプラットフォーム201を含む。限定されることなく、クライアントデバイスプラットフォーム201は、クライアント101として使用される電子デバイスのタイプと相関することが好ましい。したがって、例えば、クライアント101が携帯電話、スマートフォン、デスクトップコンピュータ、ラップトップコンピュータ、その他である場合、クライアントデバイスプラットフォーム201は、いくつかの実施形態において、それぞれ、携帯電話プラットフォーム、スマートフォンプラットフォーム、デスクトップコンピュータプラットフォーム、ラップトップコンピュータプラットフォーム、その他である。
その性質にかかわらず、デバイスプラットフォーム201は、プロセッサ202と、メモリ203と、通信リソース(COMMS:communications resources)204とを含むことができる。プロセッサ202は、任意の適切な汎用プロセッサ又は特定用途向け集積回路とすることができ、また、1つ又は複数のプロセッサコア上で1つ又は複数のスレッドを実行することができる。限定されることなく、プロセッサ202は、いくつかの実施形態において、限定されないが、INTEL(登録商標) Corp.、ADVANCED MICRO DEVICES(登録商標)、ARM(登録商標)、NVIDIA(登録商標)、APPLE(登録商標)、及びSAMSUNG(登録商標)から市販されている汎用プロセッサなどの、汎用プロセッサである。図2は、シングルプロセッサを含むようにクライアント101を例示しているが、複数のプロセッサを使用することができる。
メモリ203は、任意の適切なタイプのコンピュータ可読メモリとすることができる。メモリ203として使用することができる例示的なメモリのタイプとしては、プログラマブルメモリ、不揮発性メモリ、リードオンリーメモリ、電気的プログラマブルメモリ、ランダムアクセスメモリ、フラッシュメモリ(例えば、NAND型又はNOR型メモリ構造を含むことができる)、磁気ディスクメモリ、光ディスクメモリ、相変化メモリ、メモリスタメモリ技術、スピントルク転送メモリ、これらの組み合わせ、及び同類のものが挙げられるが、これらに限定されない。加えて、又は代替的に、メモリ203としては、他の及び/又は後で開発されるタイプのコンピュータ可読メモリを挙げることができる。
COMMS204は、下で論じられるように、クライアント101が、サーバ102との間で、又はより具体的には、サーバデバイスプラットフォーム211のCOMMS214との間で少なくともメッセージを送信及び受信することを可能にするように構成される、ハードウェア(すなわち、回路)、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせを含むことができる。COMMS204とCOMMS214との間の通信は、上で全般的に説明したように、近距離及び/又は長距離通信ネットワークを使用して有線又は無線接続を通じて起こすことができる。したがって、COMMS204は、このような通信をサポートするためのハードウェア、例えば、1又は複数の、トランスポンダ、アンテナ、BLUETOOTH(登録商標)チップ、パーソナルエリアネットワークチップ、近距離無線通信チップ、有線及び/又は無線ネットワークインターフェース回路、これらの組み合わせ、並びに同類のものを含むことができる。
クライアントデバイスプラットフォーム201は、ジョブインターフェースモジュール(JIM:job interface module)205を更に含む。後で詳細に説明されるように、JIM205は、実行のために、(計算集約的な)ジョブをバッチ処理するように、及び/又はサーバ102に送信するように構成することができる。いずれの事例においても、JIM205は、クライアント101に本開示と一致するジョブ要求動作を行わせるように構成される、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせの形態とすることができる。いくつかの実施形態において、JIM205は、プロセッサ202によって実行されたときに本開示と一致するジョブ要求動作の実行を引き起こす、(例えば、メモリ203に記憶された)コンピュータ可読命令の形態とすることができる。代替的に、又は加えて、いくつかの実施形態において、JIM205は、本開示と一致する1又は複数のクライアント機能を行うために、少なくとも部分的にハードウェアにおいて実施される論理を含むか、又はその形態とすることができる。
図2に更に示されるように、サーバ102は、サーバデバイスプラットフォーム211を含む。クライアントデバイスプラットフォーム201のように、サーバデバイスプラットフォーム211は、任意の適切なデバイスプラットフォームとすることができる。限定されることなく、サーバデバイスプラットフォーム211は、サーバ102として使用される電子デバイスのタイプと相関することが好ましい。したがって、例えば、サーバ102がラックマウントサーバプラットフォーム、ブレードサーバプラットフォーム、デスクトップコンピュータプラットフォーム、その他である場合、サーバデバイスプラットフォーム211は、いくつかの実施形態において、それぞれ、ラックマウントサーバプラットフォーム、ブレードサーバプラットフォーム、デスクトップコンピュータプラットフォーム、その他である。サーバデバイスプラットフォーム211は、プロセッサ212と、メモリ213と、COMMS214とを更に含む。このような構成要素の性質及び機能は、クライアントデバイスプラットフォーム201の対応する部分と同じであり、したがって、簡潔にするために再度説明されない。
前述の構成要素に加えて、デバイスプラットフォーム211は、ジョブ加速インターフェースモジュール(JAIM:job acceleration interface module)215を含む。下で詳細に説明されるように、JAIMは、全般的に、クライアント101から(計算集約的な)ジョブを受信し、このようなジョブを実行のためにSSDアレイ103の1又は複数のSSDに運搬するように構成することができる。JAIMはまた、SSDアレイ103によって生成された出力を受信し、及び/又は取り出し、そして、該出力をクライアント101に通信するように構成することもできる。このようにして、JAIM215は、SSDのハードウェア加速エンジンをサーバ102に提供することができ、したがって、サーバ102が計算集約的な動作を行うためにこのようなハードウェアを活用することを可能にすることができる。
JIM205のように、JAIM215は、サーバ102に本開示と一致するジョブ加速インターフェース動作を行わせるように構成される、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせの形態とすることができる。このような動作としては、例えば、下で論じられるように、クライアント101からジョブ要求及び/又はデータを受信すること、1又は複数のジョブ実行コマンドを生成することと、SSDアレイ103にジョブ実行コマンド(複数可)を伝送すること、(いくつかの実施形態において)SSDアレイ(又はそのSSD)によって生成される出力を要求すること、並びにクライアント101に出力を伝送することを挙げることができる。いくつかの実施形態において、JAIM215は、プロセッサ212によって実行されたときに本開示と一致するジョブ加速インターフェース動作の実行を引き起こす、(例えば、メモリ213に記憶された)コンピュータ可読命令の形態とすることができる。代替的に、又は加えて、いくつかの実施形態において、JAIM215は、本開示と一致する1又は複数のサーバ機能を行うために、少なくとも部分的にハードウェアにおいて実施される論理を含むか、又はその形態とすることができる。
いくつかの実施形態において、JAIM215は、過去の、現在の、又は将来開発されるバージョンのシリアルアドバンストテクノロジーアタッチメント(SATA:serial advanced technology attachment)プロトコル、不揮発性メモリエクスプレス(NVMe:non− volatile memory express)プロトコル、シリアルアタッチドスモールコンピュータシステムインタフェース(SAS:small computer systems interface)プロトコル、これらの組み合わせ、及び同類のものなどの、確立された通信プロトコルに従ってSSDアレイ103と通信するように構成することができる。このようなプロトコルは、JAIM215によって発行されているような、本明細書で説明されるコマンド、例えば上記以外のジョブ実行コマンドを説明し、及び/又は実施するために使用することができる、ベンダ固有のコマンドを定義するためのオプションを有する。したがって、JAIM215によって発行されるコマンドが、上述したプロトコルの1又は複数に従うベンダ固有のコマンドとすることができることを理解されたい。
上で述べたように、SDDアレイ103は、1又は複数のソリッドステートドライブを含むことができる。この概念は図3に図示され、該図は、本開示の様々な実施形態と一致するサーバ及びソリッドステートドライブアレイの更なる詳細を示すブロック図である。図3に示されるように、SSDアレイ103は、SSD3011・・・nを含むように構成することができ、ここで、nは、0である(単一のSSDだけが使用されることを示す)か、又は2以上の整数である。前述と一致して、nは、2〜約5、2〜約10、2〜約50、2〜約100、2〜約1000、その他の範囲とすることができる。限定されることなく、SSDアレイ103は、いくつかの実施形態において、2つ以上のSSD含む。
SSD3011、301nは、それぞれ、コントローラ302、302'を含むことができる。図3に更に示されるように、各コントローラ3011、301nは、ハードウェア加速エンジン(HAE:hardware acceleration engine)303、303'を含むことができる。全般に、HAE303、303'は、本明細書においてデータとも称される、データに対して加速された動作を行うように構成することができる。より具体的には、HAE303、303'は、SSD301、301'(例えば、不揮発性メモリ(NVM:non−volatile memory)304、304')に記憶された、及び/又はサーバ102から受信することができるデータ/データに対して、加速された計算集約的な動作を行うように構成することができる。いくつかの実施形態において、HAE303、303'は、フィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)、特定用途向け集積回路、暗号化/暗号解読加速エンジン、圧縮/解凍エンジン、符号化/復号化エンジン(CODEC:encode/decode engine)、これらの組み合わせ、及び同類のものの形態で構成され、これらのいずれか又は全ては、ハードウェア、ソフトウェア、又はこれらの組み合わせの形態のインターフェースを含むことができる。限定されることなく、HAE303、303'は、いくつかの実施形態において、ハードウェア暗号化/暗号解読エンジンの形態である。適切なハードウェア暗号化/暗号解読エンジンの非限定的な例としては、限定されないがINTEL(登録商標)P3700シリーズのSSDなどの、INTEL(登録商標)Corporationによって販売されているある特定のSSDにおいて利用可能なハードウェア暗号化エンジンが挙げられる。いくつかの実施形態において、HAW303、303'は、データに対する1又は複数の暗号化アルゴリズム(例えば、FIPS197によって指定されるAESアルゴリズム)の実行を加速するように構成される、ハードウェア暗号化/暗号解読エンジンである。
後で詳細に説明されるように、コントローラ302は、例えば有線又は無線通信を介して、JAIM215からデータ/データと関連付けられるジョブ実行コマンドを受信することができる。ジョブ実行コマンドに応じて、コントローラ302は、ジョブ要求に従って処理するために、HAE303にデータを転送することができる。HAE303は、ジョブ実行コマンドによって指定される様式で、例えばデータに対して加速された計算集約的な動作を行うことによって、データを処理することができる。SSD3011、301nの構成、及び/又は受信したジョブ実行コマンドの構成に応じて、HAEによって生成された出力は、例えばフロースルーの様式で、サーバ102に通信することができる。すなわち、いくつかの実施形態において、出力は、サーバ102が出力を要求することを必要とせずに、サーバ102に転送することができる。
代替的に、又は加えて、いくつかの実施形態において、HAE303、303'の出力は、NVM304、304'又は随意の転送バッファ305、305'などのSSD3011、301nのメモリに記憶することができる。随意の転送バッファ305、305'は、任意の適切な転送バッファとすることができ、いくつかの実施形態では、ダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)又はスタティックランダムアクセスメモリすなわちSRAM(static random access memory)などの、揮発性メモリを含むか、又はその形態である。
限定されることなく、いくつかの実施形態において、SSD3011、301nは、随意の転送バッファ305、305'を含み、JAIM215から受信するジョブ実行コマンドは、コントローラ302、302'(又は、より具体的には、HAE303、303')に、その出力を転送バッファ305に記憶させるように構成される。このような場合において、JAIM215は、サーバ102に、出力要求メッセージ(例えば、読み出しバッファコマンド)をSSD3011、301nに発行させるように更に構成され、SSDアレイ103に、HAE303、303'の出力をサーバ102に提供させる。
例示のために、本開示は、以下、加速された暗号化動作を行うために図1〜図3に例示されるシステムが使用される、例示的な一実施形態の説明に進む。これに関して、クライアント101及び/又はそのオペレータが、高度暗号化規格などの暗号化アルゴリズムによって、データセット(データ)を暗号化することを望み得ることに留意されたい。これに関して、JIM205は、クライアント101のCOMMS204に、サーバ102のCOMMS214に第1の信号を伝送させるように構成することができる。いくつかの実施形態において、第1の信号は、ジョブ加速要求を含むことができる。とりわけ、ジョブ加速要求は、加速されるジョブのパラメータを指定することができる。
このようなパラメータの非限定的な例としては、データのサイズ、データに対して行われる動作(この事例では、他の計算集約的な動作を通した暗号化が想定される)、用いられる暗号化のタイプ(例えば、AES暗号化、SMS4暗号化、その他)、暗号化に使用される1又は複数の鍵、これらの組み合わせ、及び同類のものが挙げられる。当然、前述のリストは、例示ためのものであり、加速される動作は、考慮中の暗号化アルゴリズムに依存し得ることを理解されたい。いくつかの実施形態において、第1の信号はまた、1又は複数の鍵も含むことができ、及び/又はデータの処理に使用される1又は複数のアルゴリズムも指定することができる。例えば、データが単一鍵暗号化プロトコルを使用して暗号化される場合、第1の信号は、データを暗号化するためにHAEによって使用される鍵を含むことができる。代替的に、又は加えて、SSD3011、301nの各々は、データを暗号化するために使用される鍵とともに予め用意しておくことができる。
第1の信号はまた、クライアント101に関する情報も含むことができる。例えば、第1の信号は、クライアント101の真正性を検証するためにサーバ102によって使用することができる、クライアント認証情報を含むことができる。適切なクライアント識別情報の非限定的な例としては、クライアント101の識別子、1又は複数のパスワード、1又は複数の鍵(例えば、クライアント101の拡張プライバシー識別子(EPID:enhanced privacy identifier))、1又は複数のハッシュ、それらの組み合わせ、又は同類のものが挙げられる。これらは、当然、単なる例示のためのものであり、サーバ102がクライアント101の真正性を検証することを可能にすることができるのであれば、任意の適切な情報をクライアント認証情報として第1の信号に含むことができる。これに関して、サーバ102は、任意の適切な認証プロトコルを介して、クライアント101の真正性を検証することができる。
クライアントの真正性が検証されると、又はこのような検証が必要とされない場合、JAIM215は、サーバ102に、例えばCOMMS214を使用して、クライアント101に第2の信号を伝送させることができる。いくつかの実施形態において、第2の信号は、第1の信号に確認応答し、クライアント101に、サーバ102に直接又はネットワーク104を介してデータを伝送させることができる。
この時点で、JAIM215は、ジョブを開始する前に、クライアント101からの全データの受信を待つことができ、又は、データを受信している間に、例えばサーバ102へのインフライト又はストリーミング中に、ジョブを開始することができる。いずれの事例においても、JAIM215は、SSDアレイ1003に第3の信号を送ることによって、ジョブ(この事例では、データの暗号化)の実行を開始することができる。第3の信号は、データに対して行われる動作を詳述するジョブ実行コマンド、並びにSSDアレイ103のSSDの1又は複数によって処理されるデータを含むことができる。この例示的な事例において、例えば、第3の信号は、行われる暗号化動作のタイプを指定するジョブ実行コマンド、並びに暗号化が行われるデータの説明を含むことができる。上で述べたように、ジョブ実行コマンドは、1又は複数の過去の、現在の、又は将来開発されるバージョンのSATA、NVMe、及び/又はSASプロトコルに従う、ベンダ固有のコマンドの形態とすることができる。
ジョブ実行コマンドに応じて、SSDアレイ103のSSDのコントローラは、処理のために、ハードウェア加速エンジン(例えば、HAE303、303')に該コントローラが受信したデータの全て又は一部分を伝送するように構成することができる。例えば、HAE303は、サーバ102から受信したジョブ実行コマンドに指定される動作と一致する様式で、又はより具体的には、サーバ102から受信したジョブ実行コマンドに応じてコントローラ302によって生成されたコマンドから、受信したデータを処理することができる。この実施例において、HAE303は、様々な市販のSSDにおいて用いることができるような、ハードウェア暗号化エンジンとすることができる。したがって、SSDによって受信したデータが(例えば、高度暗号化規格又は別の適切な暗号化アルゴリズムを使用して)暗号化される場合、コントローラ302、302'は、HAE303、303'にデータの全て又は一部分を供給することができる。それに応じて、HAE303、303'は、出力を生成するために、データに対してハードウェア加速された暗号化を行うことができる。ジョブ実行コマンドのように、SSDアレイ103のSSDのコントローラによって発行されるコマンドは、例えば1又は複数の過去の、現在の、又は将来開発されるバージョンのSATA、NVM、及び/又はSASプロトコルに従う、ベンダ固有のコマンドの形態とすることができる。
いくつかの実施形態において、JAIM215は、サーバ102に、ジョブ実行コマンドを生成させることができ、該ジョブ実行コマンドは、SSDアレイ103のSSD(例えば、SSD 3011、303n)のコントローラ(例えば、コントローラ302、302')に発行される(随意に、ベンダ固有の)読み出し/書き込みコマンドを含むか、それと関連付けられるか、又はその形態である。このような場合において、ジョブ実行コマンドは、不揮発性メモリに対してデータ及び/又は出力を読み出すこと及び/又は書き込むことに加えて、ハードウェア加速エンジン(例えば、HAE303、303')によって、コントローラに、要求された動作の実行を起こさせる。すなわち、ジョブ実行コマンドに応じて、SSDの不揮発性メモリ(例えば、NVM304、304')にHAE303、303'の出力を書き込むことができる。代替的に、又は加えて、出力は、SSDのバッファ(例えば、随意のバッファ305、305')に書き込むことができる。いずれの事例においても、出力が書き込まれると、コントローラ302は、サーバ102に、ジョブの実行が完了したことを示す信号を伝送することができる。このような信号に応じて、JAIM215は、サーバ102に、コントローラ302からの出力の伝送を要求させることができる。したがって、例えば、JAIM215は、サーバ102に、SSDアレイ103の適切なSSDに要求出力コマンドを発行させることができる。要求出力コマンドは、SSDのコントローラに、ハードウェア加速エンジンによって行われる動作の出力を読み出させ、サーバ102に該出力を伝送させるように構成することができる。ジョブ実行コマンドのように、要求出力コマンドは、1又は複数のSAT、NVMe、及び/又はSASプロトコルに従う、ベンダ固有のコマンドとすることができる。次いで、サーバ102は、例えば有線又は無線通信を介して、出力をクライアント101に通信することができる。
より全般的には、いくつかの実施形態において、JAIM215は、ジョブ実行コマンドを読み出し/書き込みコマンドの一部として構成することができ、該読み出し/書き込みコマンドは、SSDのコントローラに、処理のために、ハードウェア加速エンジンにジョブと関連して受信したデータを伝送させる。ジョブ実行コマンドに応じて、ハードウェア加速エンジンは、データに対して計算集約的な動作、例えば暗号化、暗号解読、その他を行い、不揮発性メモリ、バッファ/キャッシュ、これらの組み合わせ、及び同類のものなどのSSDのメモリに記憶される出力を生成することができる。限定されることなく、ジョブ実行コマンドは、いくつかの実施形態において、SSDコントローラに、SSDのバッファのハードウェア加速エンジンによって生成された出力を記憶させるように構成される。いずれの事例においても、JAI215は、サーバ102に、SSDアレイ103の適切なSSDに要求出力コマンドを発行させることができる。要求出力コマンドは、読み出しコマンド(例えば、読み出し不揮発性メモリコマンド、読み出しバッファコマンド、これらの組み合わせ、及び同類のもの)を含むか、又はその形態とすることができ、該コマンドは、SSDのコントローラに、SSDの不揮発性メモリ及び/又はバッファ/キャッシュに記憶された出力を読み出させ、該読み出させた出力をサーバ102に提供させる。JAI215は、次いで、サーバ102に、ジョブ出力をクライアント101に通信させることができる。
他の非限定的な実施形態において、JAIM215は、サーバ102に、読み出し/書き込みコマンドと関連付けられないジョブ実行コマンドを生成させることができる。先の実施形態のように、ジョブ実行コマンドは、SSDのコントローラコントローラに、処理のために、ハードウェア加速エンジンにジョブと関連して受信したデータを伝送させるように構成することができる。しかしながら、先の実施形態とは異なり、ジョブ実行コマンドは、コントローラに、ハードウェア加速エンジンの出力をバッファ又は不揮発性メモリに記憶させないことができる。むしろ、ジョブ実行コマンドは、コントローラに、出力を不揮発性メモリに記憶することなく、サーバに、又はより具体的にはJAIM215にハードウェア加速エンジンの出力を自動的に運搬させることができる。すなわち、先の実施形態とは異なり、サーバ102(又はより具体的には、JAIM215)は、ハードウェア加速エンジンからの出力を要求する必要はない。むしろ、各SSDは、ハードウェア加速エンジンからの出力をサーバ102に(又はより具体的には、JAIM215に)自動的に提供することができる。このような実施形態では、SSDアレイ103のSSDが、単にジョブ実行コマンドと関連付けられる計算集約的な動作のためのアクセラレータとして作用することができ、データ/データが、フロースルー様式での、アレイの1又は複数のSSDへの入力及びそこからの出力であると理解することができる。出力を受信することに応じて、サーバ102は、次いで、例えば有線又は無線通信を介して、出力をクライアント101に通信することができる。
例示及び例証のために、図3は、ハードウェア加速エンジン303、303'がコントローラ(例えば、コントローラ302、302')と一体的である一実施形態を示すことに留意されたい。このような例証は、単なる例示のためのものであること、及びHAE303、303'は、それぞれ、コントローラ302、302'と一体的である必要はないことを理解されたい。実際に、本開示は、ハードウェア加速エンジンがSSDの内部にある別個の構成要素として形成される実施形態、並びに、ハードウェア加速エンジンがSSDの外部にあるが、最終的にはSSDコントローラによって制御される実施形態を想定する。
例えば、いくつかの実施形態において、コントローラ302、302'は、デュアルポートコントローラなどのマルチポートコントローラの形態とすることができる。このような実施形態において、コントローラの第1のポートは、例えばケーブルインターフェースなどの適切なインターフェースを介して、サーバ102に通信可能に結合させることができる。コントローラの別の(例えば、第2の)ポートは、ハードウェア加速エンジンに通信可能に結合させることができ、該ハードウェア加速エンジンは、上で述べたように、コントローラとは別体とすることができ、また、SSDと別体とするか、又はSSDに一体化させることができる。これらの概念は、図5A及び5Bに例示される。具体的には、図5Aは、SSD301がデュアルポートコントローラ302'を含む例示的な一実施形態を示し、コントローラ302'の第1のポートは、サーバ102に結合され、コントローラ302'の第2のポートは、ハードウェア加速エンジン303'に結合され、該ハードウェア加速エンジンは、コントローラ302'とは別体であるが、SSD301と一体的である。図5BのSSD30は、コントローラ302'の第2のポートが、SSD301'の外部にあるハードウェア加速エンジン303''に結合されることを除いて、類似する要素を含む。図5A及び5Bにおいて、SSD301及び301'は、図3のSSD3011・・・nと同じ様式で使用することができることを理解されたい。また、図5A及びBのSSD301及び301'がサーバ102とは別体であるような描写は、例示のためのものであること、及びこのようなSSDは、サーバ102と一体的とすること、又は別様にはその中に組み込むことができることも理解されたい。最後に、HAE303'及び303''は、図3のHAE303と同じ様式で使用することができること、及びHAE303''は、いくつかの実施形態において、サーバ102と一体的とすること、又は別様にはその中に組み込むことができることを理解されたい。
図5A及び5Bの実施形態の動作は、ハードウェア加速エンジンの相対的な場所を除いて、図1〜図3と関連して先に上で説明したものと同じである。認識できるように、このような実施形態は、図3に示される実施形態と比較して、ある特定の利点、すなわち、ハードウェア加速エンジンがSSDコントローラと一体的であるという利点を提供することができる。具体的には、図3の実施形態は、アクセラレータがコントローラと連動して正しく機能していることを確実にするために、かなりの事前の設計及び妥当性の確認を伴う場合がある。このことを考慮すれば、上で述べられる代替的な手法は、このような課題を回避することができ、また、アクセラレータとコントローラとを一体化することが困難である、又はできない場合の別の経路を提供することができる。
理解を容易にするために、前述の実施形態は、1つの又は比較的少数のSSDを含むソリッドステートドライブアレイの文脈で説明した。このような説明は、単なる例示のためのものであること、及び本明細書で説明される技術は、複数のSSDの間でバッチ処理すること、及び/又はスケーリングすることができることに留意されたい。実際に、行われる動作、データのサイズ、及び/又は他の因子に応じて、第3の信号は、SSDアレイ103に、その中の1つ又は複数のSSDによってデータを処理させるように構成することができる。例えば、データのサイズが比較的小さい、又はデータに対して行われる動作が比較的単純である場合に、JAIM215は、第3の信号を、SSDアレイ103に単一のSSDによって全データを処理させるように構成することができる。代替的に、データが比較的大きい、及び/又はデータに対する動作のより高速な実行が所望される場合に、JAIM215は、第3の信号を、各SSDがデータの一部分に対して動作するように、SSDアレイ103に複数のSSDの間でデータを細分化させるように構成することができる。
例えばいくつかの実施形態において、及び図3に示されるように、SSDアレイ103は、少なくとも第1のソリッドステートドライブ(例えば、SSD 3011)及び第2のソリッドステートドライブ(3011)を含む、複数のSSDを含むことができる。このような実施形態において、及び図3に示されるように、第1のソリッドステートドライブは、第1のコントローラと、第1のハードウェア加速エンジンと、第1の不揮発性メモリとを含むことができ、第2のソリッドステートドライブは、第2のコントローラと、第2のハードウェア加速エンジンと、第2の不揮発性メモリとを含むことができる。
このことを考慮すれば、サーバ102のJAIM215は、第1のソリッドステートドライブに第1のジョブ加速コマンド及び該データの第1の部分を伝送し、第2のソリッドステートドライブに第2のジョブ加速コマンド及び該データの第2の部分を伝送するように構成することができる。第1のジョブ加速コマンドは、例えば全般的に上で論じたように、第1のコントローラに、該データの第1の部分に対して第1の加速された動作を実行するために、第1のハードウェア加速エンジンに該データの第1の部分を伝送させるように構成することができる。例えば、第1のハードウェア加速エンジンは、第1の加速された動作の出力を第1の不揮発性メモリに記憶することなく、データの第1の部分に対して第1の加速された動作を実行することができる。同様に、第2のジョブ加速コマンドは、例えば全般的に上で説明したように、第2のコントローラに、該データの第2の部分に対して第2の加速された動作を実行するために、第2のハードウェア加速エンジンに該データの第2の部分を伝送させるように構成することができる。いくつかの実施形態において、第2のハードウェア加速エンジンは、第2の加速された動作の出力を第2の不揮発性メモリに記憶することなく、第2の加速された動作を行うことができる。このような実施形態において、第1のジョブ加速コマンドは、第1のソリッドステートドライブに、該JAIMにデータの第1の部分に対して行われた加速された動作の出力を伝送させるように更に構成することができ、第2のジョブ加速コマンドは、第2のソリッドステートドライブに、該JAIMにデータの第2の部分に対して行われた加速された動作の出力を伝送させるように更に構成することができる。
上で述べたように、第1及び第2のソリッドステートドライブの第1及び第2のハードウェア加速エンジンは、それらのそれぞれの出力をSSDの不揮発性メモリに記憶することなく、第1及び第2の加速された動作を行うことができる。このような実施形態は有用であるが、2つ以上のソリッドステートドライブを用いるシステムは、その特定の構成に限定されない。実際に、上で説明した他の実施形態のように、第1及び第2のソリッドステートドライブは、各々、それぞれ第1の転送バッファ及び第2の転送バッファを含むことができる。このような実施形態において、第1及び第2のハードウェア加速エンジンは、それぞれ、第1及び第2の動作の出力を第1及び第2の転送バッファに記憶することができる。次いで、JAIM215は、サーバ102に、1又は複数の要求出力コマンドを発行させることができ、該要求出力コマンドは、第1及び第2のソリッドステートドライブに、第1及び第2の伝送バッファの出力を、それぞれ、サーバ102に提供させるか、又はソリッドステートドライブがサーバ102と一体的である場合は、サーバ102の他の構成要素に提供させる。いずれの事例においても、要求出力コマンドに応じて、SSDは、任意の適切なインターフェースを介して、それらのそれぞれの転送バッファからの出力をサーバ102に提供することができる。例えば、SSDがサーバ102と一体的でない場合には、長距離通信ネットワーク、短距離通信ネットワーク、これらの組み合わせ、及び同類のものを介するなどの適切な通信インターフェースを介して、出力を通信することができる。SSDがサーバ102と一体的である場合には、シリアルアドバンストテクノロジーアタッチメント(SATA)プロトコル、周辺構成要素相互接続(PCI)プロトコル、PCIエクスプレスプロトコルなどの通信プロトコルを介して、出力を通信することができる。
当然、本明細書で説明される技術は、1つ又は2つのSSDを含むSSDアレイの使用に限定されない。実際に、上述のことから、当業者は、本明細書で説明される技術が、データに対する計算集約的な動作を処理するために、多数のSSDを使用することができることを認識するであろう。すなわち、計算集約的な動作の実行は、所望に応じて、より多い又はより少ないSSDに対してジョブをバッチ処理することによってスケールアップ又はスケールダウンすることができる。
別の本開示の態様は、計算集約的な動作を加速するための方法に関する。これに関して、図4を参照すると、該図は、本開示と一致する計算集約的な動作を加速する方法の1つの実施形態の例示的な動作のフロー図である。示されるように、本方法は、ブロック401から始まる。本方法は、次いで、随意のブロック402に進むことができ、そこでは、サーバがクライアントからジョブ要求を受信することができる。ブロック402は、破線がその随意の性質を示すが、いくつかの実施形態では、サーバ自体をジョブ要求のソースとすることができることが想定される。すなわち、いくつかの実施形態において、サーバは、ジョブ加速要求を含む第1の信号を生成するように構成される、ジョブインターフェースモジュール(例えば、JIM205など)を含むことができる。
本方法は、次いで、随意のブロック403に進むことができ、そこでは、例えば全般的に上で論じたように、クライアント(又はジョブ加速要求を生成する他のエンティティ)が認証されたかどうかに関して判定を行うことができる。認証されていない場合、本方法は、随意のブロック404に進むことができ、そこでは、本方法を続けるかどうかに関して判定を行うことができる。続けない場合、本方法は、ブロック409に進み、終了することができる。続ける場合、本方法は、ブロック402にループバックし、続けることができる。
クライアントがブロック403に従って認証された場合、又はブロック402及び/又は403の動作が要求されなかった場合、本方法は、ブロック405に進み、そこでは、例えば全般的に上で論じた様式で、ジョブ実行コマンドを生成し、SSDアレイに送信することができる。先に論じたように、ジョブ実行コマンドは、SSDアレイのSSDのコントローラに、処理のために、ハードウェア加速エンジンにコマンドと関連付けられるデータを送信させることができる。
本方法は、次いで、ブロック405に進むことができ、そこでは、SSDアレイのSSDのハードウェア加速エンジンが、そのSSDのバッファ又はメモリに記憶された出力を生成するためのものであるかどうかに関する判定を行うことができる。上で論じたように、SSDのハードウェア加速エンジンの出力は、(例えば、ジョブ実行コマンドが、SSDコントローラに発行された読み出し/書き込みコマンドに含まれるか、その形態であるか、又はそれと関連付けられる場合に)例えば、ジョブ実行コマンドに応じて、SSDのバッファ及び/又は不揮発性メモリに記憶することができる。出力がバッファ又はメモリに記憶される場合、必要に応じて、本方法は、ブロック406に進むことができ、そこでは、必要に応じて出力をSSDバッファ及び/又はメモリから取得することができる。上で論じたように、これは、例えば、サーバによってSSDのコントローラに発行される読み出しコマンド(例えば、読み出しメモリ又は読み出しバッファコマンド)の発行によって達成することができる。しかしながら、出力がSSDのバッファ又はメモリに記憶されない場合、本方法は、ブロック407に進むことができ、そこでは、該出力をSSDから自動的に受信することができる。すなわち、ブロック407に従って、ジョブ実行コマンドを発行するパーティは、例えば出力を要求する追加的なコマンドを発行することを必要とせずに、SSDアレイのSSD(複数可)のハードウェア加速エンジンの出力を自動的に受信することができる。
いずれの事例においても、本方法は、次いで、ブロック408に進むことができ、そこでは、加速される追加的な計算集約的な動作があるかどうかに関する判定を行うことができる。ある場合、本方法は、ブロック402にループバックすることができる。ない場合、本方法は、ブロック409に進み、終了することができる。
以下の実施例は、更なる実施形態に関する。本開示の以下の実施例は、下に提供されるように、システム、デバイス、方法、実行したときに該方法に基づいてマシンに動作を行わせる命令を記憶するコンピュータ可読記憶媒体、及び/又は該方法に基づいて動作を行うための手段などの対象材料を含むことができる。
実施例1:本開示の1つの実施例によれば、計算集約的な動作を加速するためのシステムが提供され、該システムは、コントローラと、ハードウェア加速エンジンと、不揮発性メモリとを含む少なくとも1つのソリッドステートドライブを含み、該コントローラは、サーバからのジョブ実行コマンドの受信に応じて、加速された動作の出力を不揮発性メモリに記憶することなく、データに対する加速された動作の実行のために、ハードウェア加速エンジンにジョブ実行コマンドと関連付けられるデータを伝送し、出力をサーバに提供するように構成される。
実施例2:この実施例は、実施例1の特徴のいずれか又は全てを含み、少なくとも1つのソリッドステートドライブが、転送バッファを更に含み、コントローラが、ハードウェア加速エンジンに、転送バッファの出力を記憶させるように更に構成され、コントローラが、サーバからの要求出力メッセージの受信に応じて、出力をサーバに提供するように更に構成される。
実施例3:この実施例は、実施例1及び2のいずれか一例の特徴のいずれか又は全てを含み、コントローラが、加速されるジョブのパラメータに従って、ハードウェア加速エンジンに加速された動作を行わせるように更に構成される。
実施例4:この実施例は、実施例1〜3のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例5:この実施例は、実施例1〜3のいずれか一例の特徴のいずれか又は全てを含み、少なくとも1つのソリッドステートドライブが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例6:この実施例は、実施例1〜5のいずれか一例の特徴のいずれか又は全てを含み、少なくとも1つのソリッドステートドライブが、サーバと一体的である。
実施例7:この実施例は、実施例1〜6のいずれか一例の特徴のいずれか又は全てを含み、コントローラが、出力をサーバに自動的に提供するように構成される。
実施例8:この実施例は、実施例1〜7のいずれか一例の特徴のいずれか又は全てを含み、ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例9:この実施例は、実施例1〜8のいずれか一例の特徴のいずれか又は全てを含み、加速された動作が、データの暗号化、データの暗号解読、データの符号化、データの復号化、データの圧縮、及びデータの解凍、又はこれらの組み合わせの少なくとも一部分を含む。
実施例10:この実施例は、実施例1〜9のいずれか一例の特徴のいずれか又は全てを含み、少なくとも1つのソリッドステートドライブが、複数のソリッドステートドライブをソリッドステートドライブアレイに含み、該複数のソリッドステートドライブが、少なくとも第1のソリッドステートドライブ及び第2のソリッドステートドライブを含み、第1のソリッドステートドライブが、第1のコントローラと、第1のハードウェア加速エンジンと、第1の不揮発性メモリとを含み、第2のソリッドステートドライブが、第2のコントローラと、第2のハードウェア加速エンジンと、第2の不揮発性メモリとを含み、第1のコントローラが、サーバからのジョブ実行コマンドの受信に応じて、第1の加速された動作の第1の出力を第1の不揮発性メモリに記憶することなく、第1のデータに対して第1の加速された動作を実行するために、第1のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第1のデータを伝送するように構成され、第2のコントローラが、サーバからのジョブ実行コマンドの受信に応じて、第2の加速された動作の第2の出力を第2の不揮発性メモリに記憶することなく、第2のデータに対して第2の加速された動作を実行するために、第2のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第2のデータを伝送するように構成され、第1及び第2のコントローラが、それぞれ、第1及び第2の出力をサーバに提供するように構成される。
実施例11:この実施例は、実施例10の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブが、それぞれ、第1の転送バッファ及び第2の転送バッファを含み、第1のコントローラが、第1のハードウェア加速エンジンに、第1の転送バッファに第1の出力を記憶させるように更に構成され、第2のコントローラが、第2のハードウェア加速エンジンに、第2の転送バッファに第2の出力を記憶させるように更に構成され、第1のコントローラが、サーバからの第1の要求出力メッセージの受信に応じて、第1の出力をサーバに提供するように更に構成され、第2のコントローラが、サーバからの第2の要求出力メッセージの受信に応じて、第2の出力をサーバに提供するように更に構成される。
実施例12:この実施例は、実施例10又は11のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のコントローラが、第1及び第2のハードウェア加速エンジンに、それぞれ、加速されるジョブのパラメータに従って、第1及び第2の加速された動作を行わせるように更に構成される。
実施例13:この実施例は、実施例10〜12のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例14:この実施例は、実施例10〜13のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例15:この実施例は、実施例10〜14のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバと一体的である。
実施例16:この実施例は、実施例10〜15のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のコントローラが、それぞれ、第1及び第2の出力をサーバに自動的に提供するように構成される。
実施例17:この実施例は、実施例10〜16のいずれか一例の特徴のいずれか又は全てを含み、第1のハードウェア加速エンジン及び第2のハードウェア加速エンジンが、各々、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例18:この実施例は、実施例10〜17のいずれか一例の特徴のいずれか又は全てを含み、第1の加速された動作が、データの第1の部分を暗号化すること、データの第1の部分を暗号解読すること、データの第1の部分を符号化すること、データの第1の部分を復号化すること、データの第1の部分を圧縮すること、データの第1の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含み、第2の加速された動作が、データの第2の部分を暗号化すること、データの第2の部分を暗号解読すること、データの第2の部分を符号化すること、データの第2の部分を復号化すること、データの第2の部分を圧縮すること、データの第2の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含む。
実施例19:この実施例によれば、計算集約的な動作を加速するための方法が提供され、ソリッドステートドライブのコントローラよって、サーバからジョブ実行コマンドを受信することに応じて、加速された動作の実行のために、ソリッドステートドライブのハードウェア加速エンジンにジョブ実行コマンドと関連付けられるデータを伝送することと、出力をソリッドステートドライブの不揮発性メモリに記憶することなく、出力を生成するために、ハードウェア加速エンジンによって、データに対して加速された動作を行うことと、出力をサーバに提供することとを含む。
実施例20:この実施例は、実施例19の特徴のいずれか又は全てを含み、ソリッドステートドライブが、転送バッファを更に含み、本方法が、コントローラによって、ハードウェア加速エンジンに、出力を転送バッファに記憶させることと、サーバからの要求出力メッセージの受信に応じて、出力をサーバに提供することとを更に含む。
実施例21:この実施例は、実施例19及び20のいずれか一例の特徴のいずれか又は全てを含み、コントローラによって、ハードウェア加速エンジンに、加速されるジョブのパラメータに従って、加速された動作を行わせることを更に含む。
実施例22:この実施例は、実施例19〜21のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例23:この実施例は、実施例19〜22のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例24:この実施例は、実施例19〜23のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、サーバと一体的である。
実施例25:この実施例は、実施例19〜24のいずれか一例の特徴のいずれか又は全てを含み、出力をサーバに自動的に提供することを更に含む。
実施例26:この実施例は、実施例19〜25のいずれか一例の特徴のいずれか又は全てを含み、ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例27:この実施例は、実施例19〜26のいずれか一例の特徴のいずれか又は全てを含み、加速された動作が、データの暗号化、データの暗号解読、データの符号化、データの復号化、データの圧縮、及びデータの解凍、又はこれらの組み合わせの少なくとも一部分を含む。
実施例28:この実施例は、実施例19〜27のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、複数のソリッドステートドライブをソリッドステートドライブアレイに含み、該複数のソリッドステートドライブが、少なくとも第1のソリッドステートドライブ及び第2のソリッドステートドライブを含み、第1のソリッドステートドライブが、第1のコントローラと、第1のハードウェア加速エンジンと、第1の不揮発性メモリとを含み、第2のソリッドステートドライブが、第2のコントローラと、第2のハードウェア加速エンジンと、第2の不揮発性メモリとを含み、本方法が、ジョブ実行コマンドの受信に応じて、第1のコントローラによって、第1の加速された動作の第1の出力を第1の不揮発性メモリに記憶することなく、第1のデータに対して第1の加速された動作を実行するために、第1のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第1のデータを伝送することと、第2のコントローラによって、第2の加速された動作の第2の出力を第2の不揮発性メモリに記憶することなく、第2のデータに対して第2の加速された動作を実行するために、第2のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第2のデータを伝送することと、第1及び第2のコントローラによって、それぞれ、第1及び第2の出力をサーバに提供することとを含む。
実施例29:この実施例は、実施例28の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブが、それぞれ、第1の転送バッファ及び第2の転送バッファを含み、本方法が、第1のハードウェア加速エンジンに、第1の出力を第1の転送バッファに記憶させることと、第2のハードウェア加速エンジンに、第2の出力を第2の転送バッファに記憶させることと、サーバからの少なくとも1つの出力要求メッセージに応じて、第1及び第2の出力のうちの少なくとも1つをサーバに提供することとを更に含む。
実施例30:この実施例は、実施例28及び29のいずれか一例の特徴のいずれか又は全てを含み、第1のコントローラによって、第1のハードウェア加速エンジンに、加速されるジョブのパラメータに従って、第1の加速された動作を行わせることと、第2のコントローラによって、第2のハードウェア加速エンジンに、パラメータに従って、第2の加速された動作を行わせることとを更に含む。
実施例31:この実施例は、実施例28〜30のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例32:この実施例は、実施例28〜31のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例33:この実施例は、実施例28〜32のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバと一体的である。
実施例34:この実施例は、実施例28〜33のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2の出力を、それぞれ、第1及び第2のコントローラによって、サーバに自動的に提供することを更に含む。
実施例35:この実施例は、実施例28〜34のいずれか一例の特徴のいずれか又は全てを含み、第1のハードウェア加速エンジン及び第2のハードウェア加速エンジンが、各々、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例36:この実施例は、実施例28〜35のいずれか一例の特徴のいずれか又は全てを含み、第1の加速された動作が、データの第1の部分を暗号化すること、データの第1の部分を暗号解読すること、データの第1の部分を符号化すること、データの第1の部分を復号化すること、データの第1の部分を圧縮すること、データの第1の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含み、第2の加速された動作が、データの第2の部分を暗号化すること、データの第2の部分を暗号解読すること、データの第2の部分を符号化すること、データの第2の部分を復号化すること、データの第2の部分を圧縮すること、データの第2の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含む。
実施例37:この実施例によれば、そこに記憶されるコンピュータ可読命令を有する少なくとも1つのコンピュータ読み出し可能な媒体が提供され、該命令が、ソリッドステートドライブのコントローラによって実行されたときに、サーバからジョブ実行コマンドを受信することに応じて、加速された動作の実行のために、ソリッドステートドライブのハードウェア加速エンジンにジョブ実行コマンドと関連付けられるデータを伝送することと、出力をソリッドステートドライブの不揮発性メモリに記憶することなく、出力を生成するために、ハードウェア加速エンジンによって、データに対して加速された動作を行うことと、出力をサーバに提供することとを含む動作の実行を引き起こす。
実施例38:この実施例は、実施例37の特徴のいずれか又は全てを含み、ソリッドステートドライブが、転送バッファ及び命令を更に含み、該命令が、コントローラによって実行されたときに、ハードウェア加速エンジンに、出力を転送バッファに記憶させることと、サーバからの要求出力メッセージの受信に応じて、出力をサーバに提供することとを含む動作の実行を更に引き起こす。
実施例39:この実施例は、実施例37及び38のいずれか一例の特徴のいずれか又は全てを含み、命令が、コントローラによって実行されたときに、ハードウェア加速エンジンに、加速されるジョブのパラメータに従って、加速された動作を行わせることを含む動作の実行を更に引き起こす。
実施例40:この実施例は、実施例37〜39のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例41:この実施例は、実施例37〜40のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例42:この実施例は、実施例37〜41のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、サーバと一体的である。
実施例43:この実施例は、実施例37及び42のいずれか一例の特徴のいずれか又は全てを含み、命令が、コントローラによって実行されたときに、出力をサーバに自動的に提供することを含む動作の実行を更に引き起こす。
実施例44:この実施例は、実施例37〜43のいずれか一例の特徴のいずれか又は全てを含み、ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例45:この実施例は、実施例37〜44のいずれか一例の特徴のいずれか又は全てを含み、加速された動作が、データの暗号化、データの暗号解読、データの符号化、データの復号化、データの圧縮、及びデータの解凍、又はこれらの組み合わせの少なくとも一部分を含む。
実施例46:この実施例は、実施例37〜45のいずれか一例の特徴のいずれか又は全てを含み、ソリッドステートドライブが、複数のソリッドステートドライブをソリッドステートドライブアレイに含み、該複数のソリッドステートドライブが、少なくとも第1のソリッドステートドライブ及び第2のソリッドステートドライブを含み、第1のソリッドステートドライブが、第1のコントローラと、第1のハードウェア加速エンジンと、第1の不揮発性メモリとを含み、第2のソリッドステートドライブが、第2のコントローラと、第2のハードウェア加速エンジンと、第2の不揮発性メモリとを含み、命令が、第1及び第2のコントローラによって実行されたときに、第1のコントローラによって、第1の加速された動作の第1の出力を第1の不揮発性メモリに記憶することなく、第1のデータに対して第1の加速された動作を実行するために、第1のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第1のデータを伝送することと、第2のコントローラによって、第2の加速された動作の第2の出力を第2の不揮発性メモリに記憶することなく、第2のデータに対して第2の加速された動作を実行するために、第2のハードウェア加速エンジンにジョブ実行コマンドと関連付けられる第2のデータを伝送することと、第1及び第2のコントローラによって、それぞれ、第1及び第2の出力をサーバに提供することとを含む動作の実行を更に引き起こす。
実施例47:この実施例は、実施例46の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブが、それぞれ、第1の転送バッファ及び第2の転送バッファを含み、命令が、第1及び第2のコントローラによって実行されたときに、第1のハードウェア加速エンジンに、第1の出力を第1の転送バッファに記憶することと、第2のハードウェア加速エンジンに、第2の出力を第2の転送バッファに記憶することと、サーバからの少なくとも1つの出力要求メッセージに応じて、第1及び第2の出力のうちの少なくとも1つをサーバに提供することとを含む動作の実行を更に引き起こす。
実施例48:この実施例は、実施例46及び47のいずれか一例の特徴のいずれか又は全てを含み、命令が、第1及び第2のコントローラによって実行されたときに、第1のコントローラによって、第1のハードウェア加速エンジンに、加速されるジョブのパラメータに従って、第1の加速された動作を行わせることと、第2のコントローラによって、第2のハードウェア加速エンジンに、パラメータに従って、第2の加速された動作を行わせることとを含む動作の実行を更に引き起こす。
実施例49:この実施例は、実施例46〜48のいずれか一例の特徴のいずれか又は全てを含み、パラメータが、データのサイズ、データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む。
実施例50:この実施例は、実施例46〜49のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバから離れたソリッドステートドライブアレイに含まれる。
実施例51:この実施例は、実施例46〜50のいずれか一例の特徴のいずれか又は全てを含み、第1及び第2のソリッドステートドライブのうちの少なくとも1つが、サーバと一体的である。
実施例52:この実施例は、実施例46〜51のいずれか一例の特徴のいずれか又は全てを含み、命令が、第1及び第2のコントローラによって実行されたときに、第1及び第2の出力を、それぞれ、第1及び第2のコントローラによって、サーバに自動的に提供することを含む動作の実行を更に引き起こす。
実施例53:この実施例は、実施例46〜52のいずれか一例の特徴のいずれか又は全てを含み、第1のハードウェア加速エンジン及び第2のハードウェア加速エンジンが、各々、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される。
実施例54:この実施例は、実施例46〜53のいずれか一例の特徴のいずれか又は全てを含み、第1の加速された動作が、データの第1の部分を暗号化すること、データの第1の部分を暗号解読すること、データの第1の部分を符号化すること、データの第1の部分を復号化すること、データの第1の部分を圧縮すること、データの第1の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含み、第2の加速された動作が、データの第2の部分を暗号化すること、データの第2の部分を暗号解読すること、データの第2の部分を符号化すること、データの第2の部分を復号化すること、データの第2の部分を圧縮すること、データの第2の部分を解凍すること、又はこれらの組み合わせの少なくとも一部分を含む。
実施例55:この実施例によれば、少なくとも1つのソリッドステートディスクのコントローラによって実行されたときに、実施例19〜36のいずれか一例の方法の実行を引き起こすコンピュータ可読命令を含む、少なくとも1つのコンピュータ可読媒体が提供される。
本明細書で用いられている用語及び表現は、限定の用語ではなく説明の用語として使用されており、そのような用語及び表現の使用において、図示及び説明された特徴(又はそれらの一部分)の任意の均等物を除外するいかなる意図もなく、特許請求の範囲の範囲内で様々な修正が可能であることが認識される。故に、以下の特許請求の範囲は、全てのそのような均等物を網羅することを意図する。

Claims (25)

  1. 計算集約的な動作を加速するためのシステムであって、
    コントローラと、ハードウェア加速エンジンと、不揮発性メモリとを有する少なくとも1つのソリッドステートドライブを備え、前記コントローラが、
    サーバからのジョブ実行コマンドの受信に応じて、加速された動作の出力を前記不揮発性メモリに記憶することなく、データに対する前記加速された動作の実行のために、前記ハードウェア加速エンジンに前記ジョブ実行コマンドと関連付けられる前記データを伝送し、
    前記出力を前記サーバに提供するように構成される、システム。
  2. 前記少なくとも1つのソリッドステートドライブが、転送バッファを更に備え、
    前記コントローラが、前記ハードウェア加速エンジンに、前記出力を前記転送バッファに記憶させるように更に構成され、
    前記コントローラが、前記サーバからの要求出力メッセージの受信に応じて、前記出力を前記サーバに提供するように更に構成される、請求項1に記載のシステム。
  3. 前記コントローラが、加速されるジョブのパラメータに従って、前記ハードウェア加速エンジンに前記加速された動作を行わせるように更に構成される、請求項1に記載のシステム。
  4. 前記パラメータが、前記データのサイズ、前記データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む、請求項3に記載のシステム。
  5. 前記少なくとも1つのソリッドステートドライブが、前記サーバから離れたソリッドステートドライブアレイに含まれる、請求項1〜4のいずれか一項に記載のシステム。
  6. 前記少なくとも1つのソリッドステートドライブが、前記サーバと一体的である、請求項1〜4のいずれか一項に記載のシステム。
  7. 前記コントローラが、前記出力を前記サーバに自動的に提供するように構成される、請求項1〜4のいずれか一項に記載のシステム。
  8. 前記ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される、請求項1〜4のいずれか一項に記載のシステム。
  9. 前記加速された動作が、前記データの暗号化、前記データの暗号解読、前記データの符号化、前記データの復号化、前記データの圧縮、及び前記データの解凍、又はこれらの組み合わせの少なくとも一部分を備える、請求項1〜4のいずれか一項に記載のシステム。
  10. 計算集約的な動作を加速するための方法であって、ソリッドステートドライブのコントローラによって、
    サーバからジョブ実行コマンドを受信することに応じて、加速された動作の実行のために、前記ソリッドステートドライブのハードウェア加速エンジンに前記ジョブ実行コマンドと関連付けられるデータを伝送することと、
    出力を前記ソリッドステートドライブの不揮発性メモリに記憶することなく、前記出力を生成するために、前記ハードウェア加速エンジンによって、前記データに対して前記加速された動作を行うことと、
    前記出力を前記サーバに提供することと、を含む、方法。
  11. 前記ソリッドステートドライブが、転送バッファを更に備え、前記方法が、前記コントローラによって、
    前記ハードウェア加速エンジンに、前記出力を前記転送バッファに記憶させることと、
    前記サーバからの要求出力メッセージの受信に応じて、前記出力を前記サーバに提供することと、を更に含む、請求項10に記載の方法。
  12. 前記コントローラによって、
    前記ハードウェア加速エンジンに、加速されるジョブのパラメータに従って、前記加速された動作を行わせることを更に含む、請求項10に記載の方法。
  13. 前記パラメータが、前記データのサイズ、前記データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む、請求項11に記載の方法。
  14. 前記ソリッドステートドライブが、前記サーバから離れたソリッドステートドライブアレイに含まれる、請求項10〜13のいずれか一項に記載の方法。
  15. 前記ソリッドステートドライブが、前記サーバと一体的である、請求項10〜13のいずれか一項に記載の方法。
  16. 前記出力を前記サーバに自動的に提供することを更に含む、請求項10〜13のいずれか一項に記載の方法。
  17. 前記ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される、請求項10〜13のいずれか一項に記載の方法。
  18. そこに記憶されるコンピュータ可読命令を有する少なくとも1つのコンピュータ可読媒体であって、前記命令が、ソリッドステートドライブのコントローラによって実行されたときに、
    サーバからジョブ実行コマンドを受信することに応じて、加速された動作の実行のために、前記ソリッドステートドライブのハードウェア加速エンジンに前記ジョブ実行コマンドと関連付けられるデータを伝送することと、
    出力を前記ソリッドステートドライブの不揮発性メモリに記憶することなく、前記出力を生成するために、前記ハードウェア加速エンジンによって、前記データに対して前記加速された動作を行うことと、
    前記出力を前記サーバに提供することと
    を含む動作の実行を引き起こす、少なくとも1つのコンピュータ可読媒体。
  19. 前記ソリッドステートドライブが、転送バッファを更に備え、
    前記命令が、前記コントローラによって実行されたときに、
    前記ハードウェア加速エンジンに、前記出力を前記転送バッファに記憶させることと、
    前記サーバからの要求出力メッセージの受信に応じて、前記出力を前記サーバに提供することと
    を含む動作の実行を更に引き起こす、請求項18に記載の少なくとも1つのコンピュータ可読媒体。
  20. 前記命令が、前記コントローラによって実行されたときに、
    前記ハードウェア加速エンジンに、加速されるジョブのパラメータに従って、前記加速された動作を行わせることを含む動作の実行を更に引き起こす、請求項18に記載の少なくとも1つのコンピュータ可読媒体。
  21. 前記パラメータが、前記データのサイズ、前記データに対して行われる1又は複数の動作、これらの組み合わせ、及び同類のもの、のうちの少なくとも1つを含む、請求項20に記載の少なくとも1つのコンピュータ可読媒体。
  22. 前記ソリッドステートドライブが、前記サーバから離れたソリッドステートドライブアレイに含まれる、請求項18〜21のいずれか一項に記載の少なくとも1つのコンピュータ可読媒体。
  23. 前記ソリッドステートドライブが、前記サーバと一体的である、請求項18〜21のいずれか一項に記載の少なくとも1つのコンピュータ可読媒体。
  24. 前記命令が、前記コントローラによって実行されたときに、
    前記出力を前記サーバに自動的に提供することを含む動作の実行を更に引き起こす、請求項18〜21のいずれか一項に記載の少なくとも1つのコンピュータ可読媒体。
  25. 前記ハードウェア加速エンジンが、暗号化/暗号解読エンジン、符合化/復号化エンジン、圧縮/解凍エンジン、又はこれらの組み合わせからなる群から選択される、請求項18〜21のいずれか一項に記載の少なくとも1つのコンピュータ可読媒体。
JP2017510647A 2014-09-26 2015-08-31 システム、方法、コンピュータプログラムおよびコンピュータ可読記録媒体 Active JP6569962B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/498,030 2014-09-26
US14/498,030 US20160094619A1 (en) 2014-09-26 2014-09-26 Technologies for accelerating compute intensive operations using solid state drives
PCT/US2015/047755 WO2016048598A1 (en) 2014-09-26 2015-08-31 Technologies for accelerating compute intensive operations using solid state drives

Publications (2)

Publication Number Publication Date
JP2017534942A true JP2017534942A (ja) 2017-11-24
JP6569962B2 JP6569962B2 (ja) 2019-09-04

Family

ID=55581787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017510647A Active JP6569962B2 (ja) 2014-09-26 2015-08-31 システム、方法、コンピュータプログラムおよびコンピュータ可読記録媒体

Country Status (7)

Country Link
US (1) US20160094619A1 (ja)
EP (1) EP3198458B1 (ja)
JP (1) JP6569962B2 (ja)
KR (1) KR102320150B1 (ja)
CN (1) CN106663178A (ja)
TW (1) TWI662414B (ja)
WO (1) WO2016048598A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228205A (ja) * 2016-06-24 2017-12-28 株式会社デンソー 電子制御装置及びデータ処理システム
JP2019185764A (ja) * 2018-04-02 2019-10-24 三星電子株式会社Samsung Electronics Co.,Ltd. Ndpサーバー―データセンターのストレージサーバーベースのデータ中心のコンピューティングアーキテクチャ―

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11032259B1 (en) * 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US9910705B1 (en) * 2015-02-18 2018-03-06 Altera Corporation Modular offloading for computationally intensive tasks
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US20190109720A1 (en) 2016-07-26 2019-04-11 Samsung Electronics Co., Ltd. Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US10353604B2 (en) * 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
US10324644B2 (en) * 2017-03-31 2019-06-18 Hewlett Packard Enterprise Development Lp Memory side accelerator thread assignments
WO2018201249A1 (en) 2017-05-03 2018-11-08 Eidetic Communications Inc. Apparatus and method for controlling data acceleration
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10509600B2 (en) * 2018-02-27 2019-12-17 Goke Us Research Laboratory Method and apparatus for data compression and decompression using a standardized data storage and retrieval protocol
US10452871B2 (en) * 2018-02-27 2019-10-22 Goke Us Research Laboratory Method and apparatus for data encryption using a standardized data storage and retrieval protocol
US10509698B2 (en) * 2018-02-27 2019-12-17 Goke Us Research Laboratory Method and apparatus for data encoding and decoding using a standardized data storage and retrieval protocol
US10585819B2 (en) 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
US10585843B2 (en) 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
CN108537048B (zh) * 2018-03-13 2021-08-17 超越科技股份有限公司 一种加密固态硬盘与授权计算机的安全关联方法及系统
KR102570581B1 (ko) * 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
CN108920964B (zh) * 2018-06-21 2020-09-29 深圳忆联信息系统有限公司 可重构硬件加解密方法、系统、计算机设备及存储介质
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
US10860504B2 (en) * 2018-12-05 2020-12-08 New Century Technologies Ltd. Peripheral device with embedded video codec functionality
US11868284B2 (en) * 2018-12-05 2024-01-09 Rongming Microelectronics (Jinan) Co., Ltd. Peripheral device with embedded video codec functionality
KR102348154B1 (ko) * 2018-12-14 2022-01-07 론밍 마이크로일렉트로닉스 (지난) 엘티디. 내장된 비디오 코덱 기능성을 구비한 주변 디바이스
US11054993B2 (en) 2019-05-28 2021-07-06 Intel Corporation Mass storage system having peer-to-peer data movements between a cache and a backend store
US11288013B2 (en) * 2019-07-15 2022-03-29 Micron Technology, Inc. Hardware based status collector acceleration engine for memory sub-system operations
CN112765055B (zh) * 2019-11-01 2021-12-21 北京忆芯科技有限公司 存储设备的控制部件
JP7028902B2 (ja) * 2020-02-07 2022-03-02 株式会社日立製作所 ストレージシステム及び入出力制御方法
CN112084138A (zh) * 2020-08-21 2020-12-15 杭州电子科技大学 一种用于可信存储的SoC安全盘控芯片架构设计方法
KR20230035947A (ko) 2021-09-06 2023-03-14 삼성전자주식회사 저장 장치 및 그의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054236A1 (en) * 2010-06-29 2012-03-01 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators
JP2013093026A (ja) * 2011-10-26 2013-05-16 Imagination Technologies Ltd デジタル信号処理のデータ転送
US8626995B1 (en) * 2009-01-08 2014-01-07 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
WO2015166540A1 (ja) * 2014-04-28 2015-11-05 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009149059A1 (en) * 2008-06-04 2009-12-10 Initio Corporation Ssd with a controller accelerator
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
CN101986305B (zh) * 2010-11-01 2013-04-17 华为技术有限公司 一种文件系统的操作方法及一种通信装置
CN102902581B (zh) * 2011-07-29 2016-05-11 国际商业机器公司 硬件加速器及方法、中央处理单元、计算设备
US11048410B2 (en) * 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
US9423983B2 (en) * 2012-01-19 2016-08-23 Syncsort Incorporated Intelligent storage controller
US8819335B1 (en) * 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
CN103955440A (zh) * 2013-12-18 2014-07-30 记忆科技(深圳)有限公司 一种非易失存储设备及其进行数据操作的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626995B1 (en) * 2009-01-08 2014-01-07 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US20120054236A1 (en) * 2010-06-29 2012-03-01 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators
JP2013093026A (ja) * 2011-10-26 2013-05-16 Imagination Technologies Ltd デジタル信号処理のデータ転送
WO2015166540A1 (ja) * 2014-04-28 2015-11-05 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228205A (ja) * 2016-06-24 2017-12-28 株式会社デンソー 電子制御装置及びデータ処理システム
JP2019185764A (ja) * 2018-04-02 2019-10-24 三星電子株式会社Samsung Electronics Co.,Ltd. Ndpサーバー―データセンターのストレージサーバーベースのデータ中心のコンピューティングアーキテクチャ―
JP7246989B2 (ja) 2018-04-02 2023-03-28 三星電子株式会社 Ndpサーバー―データセンターのストレージサーバーベースのデータ中心のコンピューティングアーキテクチャ―
US11803337B2 (en) 2018-04-02 2023-10-31 Samsung Electronics Co., Ltd. NDP-server: a data-centric computing architecture based on storage server in data center

Also Published As

Publication number Publication date
KR20170034425A (ko) 2017-03-28
US20160094619A1 (en) 2016-03-31
EP3198458A1 (en) 2017-08-02
TW201629787A (zh) 2016-08-16
JP6569962B2 (ja) 2019-09-04
CN106663178A (zh) 2017-05-10
WO2016048598A1 (en) 2016-03-31
TWI662414B (zh) 2019-06-11
EP3198458A4 (en) 2018-06-13
KR102320150B1 (ko) 2021-11-01
EP3198458B1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
JP6569962B2 (ja) システム、方法、コンピュータプログラムおよびコンピュータ可読記録媒体
CN107922049B (zh) 用于无人机源内容创作的装置和系统
US20190171612A1 (en) Network adapter with a common queue for both networking and data manipulation work requests
US9735962B1 (en) Three layer key wrapping for securing encryption keys in a data storage system
US10044703B2 (en) User device performing password based authentication and password registration and authentication methods thereof
JP5852265B2 (ja) 計算装置、コンピュータプログラム及びアクセス許否判定方法
US8782441B1 (en) Methods and systems for storage of large data objects
US10027660B2 (en) Computer program, method, and system for secure data management
US20110178987A1 (en) Apparatus and method for processing data according to remote control in data storage device
US10673975B2 (en) Content streaming service method for reducing communication cost and system therefor
EP2869232A1 (en) Security key device for secure cloud services, and system and method of providing security cloud services
US10607034B1 (en) Utilizing an address-independent, non-repeating encryption key to encrypt data
TW202032406A (zh) 記憶體裝置之物理不可複製函數
JP6023853B1 (ja) 認証装置、認証システム、認証方法、およびプログラム
US20140281513A1 (en) Block encryption
US9282083B2 (en) Encryption system and method
US11281786B2 (en) Mechanism to secure side band communication between service processor and an end point
US11934542B2 (en) Methods and apparatus for offloading encryption
US10168939B2 (en) Reading records from a tape medium
US20140189134A1 (en) System and Method for NAS Server Test Load Generation
US11023595B1 (en) System and method for processing encrypted search
CN111198784A (zh) 一种数据存储的方法及装置
KR20190139081A (ko) 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
KR102476081B1 (ko) Lisp을 이용한 통신에서 상호 인증을 수행하는 방법, 이를 수행하기 위한 장치 및 시스템
CN117195324A (zh) 存储装置内加解密模块的调用方法、存储装置及电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180307

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180727

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180806

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20180817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190725

R150 Certificate of patent or registration of utility model

Ref document number: 6569962

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250