(57)【要約】  本明細書に記載される実施形態は、ストレージエッジコントローラ内の計算エンジン（人工知能エンジン等）においてメディアオブジェクトのメタデータを生成し、データ処理システム内でそのようなメタデータを保存及び使用するための改善された方法及びシステムを提供する。
2021533447.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数のストレージデバイスにおけるデータの保存及び取り出しを管理するストレージデバイスコントローラであって、前記ストレージデバイスコントローラは、
１つ又は複数のホストと通信するように構成されているホストインタフェースと、
前記１つ又は複数のストレージデバイスの不揮発性メモリとローカルに通信するように構成されているメモリインタフェースと、
前記不揮発性メモリにおけるオブジェクトのローカル保存又は取り出しを管理するように構成されている第１のプロセッサと、
揮発性メモリから第１の計算モデル及び前記第１の計算モデルを実装するためのパラメータのセットを取得し、
前記第１の計算モデルを用いて、前記不揮発性メモリから取り出された又は前記不揮発性メモリに保存するために前記１つ又は複数のホストから受信した前記オブジェクトのコンテンツ特徴を定義するメタデータを選択的に計算する、
ように構成されている計算エンジンと、
を備える、ストレージデバイスコントローラ。
【請求項２】
前記揮発性メモリは、前記ストレージデバイスコントローラに連結されているダイナミックランダムアクセスメモリである、請求項１に記載のストレージデバイスコントローラ。
【請求項３】
前記揮発性メモリは、ホストシステムによって前記ストレージデバイスコントローラに割り当てられるホストメモリバッファであり、前記ホストメモリバッファは、コンピュータネットワーク接続又はバス接続を通じて前記ストレージデバイスコントローラによってアクセス可能である、請求項１又は２に記載のストレージデバイスコントローラ。
【請求項４】
前記計算エンジンは、
前記第１のプロセッサとは別個であり、前記第１の計算モデルの実装を含むメタデータ生成に関連する計算タスクを実行するように構成されている、第２のプロセッサを備え、
前記第１のプロセッサは、
前記ストレージデバイスコントローラによって実行されている進行中操作のための前記第１のプロセッサのリソースを占有せずに、メタデータ生成に関連する計算タスクを前記計算エンジンにおける前記第２のプロセッサに送信するように構成されている、請求項１〜３のいずれか一項に記載のストレージデバイスコントローラ。
【請求項５】
前記計算エンジンは、
前記第２のプロセッサに連結されている揮発性メモリをさらに備え、
前記揮発性メモリは、前記オブジェクトのキャッシュされる一部分のコンテンツ特徴を定義する前記メタデータの計算中、前記オブジェクトの一部分を少なくともキャッシュするように構成されているスタティックランダムアクセスメモリである、請求項４に記載のストレージデバイスコントローラ。
【請求項６】
前記第１のプロセッサは、
前記ホストインタフェースを介して、前記１つ又は複数のホストから前記オブジェクトを受信し、前記オブジェクトは、前記不揮発性メモリに保存されることになり、
前記受信したオブジェクトを、メタデータ計算のために前記ストレージデバイスコントローラ内に配置された揮発性メモリに一時的に保存し、
前記オブジェクトのコンテンツ特徴を定義する前記メタデータの計算が完了した後、
前記メモリインタフェースを介して、前記受信したオブジェクトを保存のために前記揮発性メモリから前記不揮発性メモリに送信し、
前記ホストインタフェースを介して、前記メタデータをホストシステムに送信すること、及び、前記メモリインタフェースを介して、前記メタデータを保存のために前記不揮発性メモリに送信することのうちの少なくとも一方を実行する、
ようにさらに構成されている、請求項１〜５のいずれか一項に記載のストレージデバイスコントローラ。
【請求項７】
前記第１のプロセッサは、
前記ホストインタフェースを介して、前記１つ又は複数のホストのホストシステムから、前記不揮発性メモリから前記オブジェクトを取り出すコマンドを受信し、
前記コマンドに応答して、前記メモリインタフェースを介して、メタデータ計算のために前記ストレージデバイスコントローラ内に配置されている前記揮発性メモリから前記オブジェクトを取り出し、
前記オブジェクトのコンテンツ特徴を定義するメタデータの計算が完了した後、前記メモリインタフェースを介して、前記メタデータ及び前記オブジェクトを保存のために前記不揮発性メモリに送信する、 
ようにさらに構成されている、請求項１〜６のいずれか一項に記載のストレージデバイスコントローラ。
【請求項８】
前記第１のプロセッサは、
前記計算エンジンが前記メタデータを計算している間に、前記ホストインタフェースを介して前記１つ又は複数のホストからメタデータの要求を受信し、
前記計算エンジンにおいて前記要求されたメタデータが計算されるまで待機し、
前記計算エンジンにおいて前記要求されたメタデータとは異なる新たなメタデータが計算されている間に、前記ホストインタフェースを介して、前記要求されたメタデータをホストシステムに送信することによって、
前記メタデータの要求に非同期的に応答する、
ようにさらに構成されている、請求項１〜７のいずれか一項に記載のストレージデバイスコントローラ。
【請求項９】
前記第１のプロセッサは、
前記コマンドに応答して、前記ホストシステムからの前記コマンドが前記第１の計算モデルの更新を要求しているか否かを決定し、
前記ホストシステムからの前記コマンドが前記第１の計算モデルの更新を要求していないと決定したことに応答して、前記計算エンジンに既存の計算モデルを実装するように命令し、
前記ホストシステムからの前記コマンドが、前記第１の計算モデルが前記第１の計算モデルとは異なる第２の計算モデルに更新されることを要求していると決定したことに応答して、
前記ストレージデバイスコントローラ内に配置された前記揮発性メモリから、又は、前記ホストインタフェースを介して、前記ホストシステム内に配置されたホストバッファメモリから、前記第２の計算モデルの更新されたパラメータのセットを取り出し、
前記第２の計算モデルを実装するために、前記計算エンジンに前記更新されたパラメータのセットを送信する、
ようにさらに構成されている、請求項７に記載のストレージデバイスコントローラ。
【請求項１０】
前記計算エンジンは、関心人物又は他のオブジェクトの識別、ストリームビデオへの広告のカスタマイズされた挿入、自律車両からのデータのクラウドベース分析、ＣｈａｔＢｏｔ  Ｖｏｉｃｅコールデータベースにおけるコール及びレスポンスの品質の分析、テキスト文書及びテキストメッセージデータベース分析、ムード検出、ビデオファイル又はボイスコール内のシーン識別、監視カメラ映像における人物又はオブジェクトの識別、監視カメラ映像に発生する動作のタイプの識別、録音における声又は音のタイプの識別、会話中に用いられているフレーズ及び応答の分類、並びに、自動車センサデータ及び駆動応答の分析のいずれかを実行することによって、前記オブジェクトのコンテンツ特徴を定義するメタデータを自動的に生成するようにさらに構成されている、請求項１〜９のいずれか一項に記載のストレージデバイスコントローラ。
【請求項１１】
１つ又は複数のストレージデバイスにおけるデータの保存及び取り出しを管理する方法であって、前記方法は、
ストレージデバイスコントローラのホストインタフェースを介して、１つ又は複数のホストと通信する段階と、
前記ストレージデバイスコントローラのメモリインタフェースを介して、前記１つ又は複数のストレージデバイスの不揮発性メモリとローカルに通信する段階と、
前記ストレージデバイスコントローラの第１のプロセッサを介して、前記不揮発性メモリにおけるオブジェクトのローカル保存又は取り出しを管理する段階と、
第１の計算モデルを実装するために、揮発性メモリから、前記第１の計算モデル及びパラメータのセットを取得する段階と、
前記第１の計算モデルを使用する計算エンジンを介して、前記不揮発性メモリから取り出された又は前記不揮発性メモリに保存するために前記１つ又は複数のホストから受信した前記オブジェクトのコンテンツ特徴を定義するメタデータを選択的に計算する段階と、
を含む、方法。
【請求項１２】
前記計算エンジンのための前記第１の計算モデルのパラメータを前記揮発性メモリに保存する段階をさらに備え、
前記揮発性メモリは、前記ストレージデバイスコントローラに連結されているダイナミックランダムアクセスメモリである、請求項１１に記載の方法。
【請求項１３】
前記計算エンジンのための前記第１の計算モデルのパラメータを前記揮発性メモリに保存する段階であって、前記揮発性メモリは、ホストシステムによって前記ストレージデバイスコントローラに割り当てられたホストメモリバッファであり、前記ホストメモリバッファは、コンピュータネットワーク接続又はバス接続を通じて前記ストレージデバイスコントローラによってアクセス可能である、段階をさらに含む、請求項１１又は１２に記載の方法。
【請求項１４】
前記第１のプロセッサとは別個の第２のプロセッサによって前記第１の計算モデルを実装する段階と、
前記第１のプロセッサによって、前記ストレージデバイスコントローラによって実行されている進行中操作のための第１のプロセッサのリソースを占有せずに、メタデータ生成に関連する計算タスクを前記計算エンジンにおける前記第２のプロセッサに送信する段階と、
をさらに含む、請求項１１〜１３のいずれか一項に記載の方法。
【請求項１５】
前記オブジェクトのキャッシュされる一部分のコンテンツ特徴を定義する前記メタデータの計算中に、前記オブジェクトの一部分を、前記第２のプロセッサに連結されている揮発性メモリに少なくともキャッシュする段階であって、前記揮発性メモリは、スタティックランダムアクセスメモリである、段階をさらに含む、請求項１４に記載の方法。
【請求項１６】
前記ホストインタフェースを介して、前記１つ又は複数のホストから前記オブジェクトを受信する段階であって、前記オブジェクトは、前記不揮発性メモリに保存されることになる、段階と、
前記受信したオブジェクトを、メタデータ計算のために前記ストレージデバイスコントローラ内に配置された揮発性メモリに一時的に保存する段階と、
前記オブジェクトのコンテンツ特徴を定義する前記メタデータの計算が完了した後、
前記メモリインタフェースを介して、前記受信したオブジェクトを保存のために前記揮発性メモリから前記不揮発性メモリに送信する段階と、
前記ホストインタフェースを介して、前記メタデータをホストシステムに送信する段階、及び、前記メモリインタフェースを介して、前記メタデータを保存のために前記不揮発性メモリに送信する段階の少なくとも一方を実行する段階と、
をさらに含む、請求項１１〜１５のいずれか一項に記載の方法。
【請求項１７】
前記ホストインタフェースを介して、前記１つ又は複数のホストのホストシステムから、前記不揮発性メモリから前記オブジェクトを取り出すコマンドを受信する段階と、
前記コマンドに応答して、前記メモリインタフェースを介して、前記不揮発性メモリから、メタデータ計算のために前記ストレージデバイスコントローラ内に配置された揮発性メモリに、前記オブジェクトを取り出す段階と、
前記オブジェクトのコンテンツ特徴を定義する前記メタデータの計算が完了した後、前記メモリインタフェースを介して、前記メタデータ及び前記オブジェクトを保存のために前記不揮発性メモリに送信する段階と、
をさらに含む、請求項１１〜１６のいずれか一項に記載の方法。
【請求項１８】
前記計算エンジンが前記メタデータを計算している間に、前記ホストインタフェースを介して前記１つ又は複数のホストから、前記メタデータの要求を受信する段階と、
前記計算エンジンにおいて前記要求されたメタデータが計算されるまで待機し、
前記要求されたメタデータとは異なる新たなメタデータが前記計算エンジンにおいて計算されている間に、前記ホストインタフェースを介して、前記要求されたメタデータをホストシステムに送信することによって、
前記メタデータの要求に非同期的に応答する段階と、
をさらに含む、請求項１１〜１７のいずれか一項に記載の方法。
【請求項１９】
前記コマンドに応答して、前記コマンドが前記第１の計算モデルの更新を要求しているか否かを決定する段階と、
前記ホストシステムからの前記コマンドが前記第１の計算モデルの更新を要求していないと決定したことに応答して、前記計算エンジンに前記第１の計算モデルを実装するように命令する段階と、
前記ホストシステムからの前記コマンドが、前記第１の計算モデルが前記第１の計算モデルとは異なる第２の計算モデルに更新されることを要求していると決定したことに応答して、
前記ストレージデバイスコントローラ内に配置された前記揮発性メモリから、又は、前記ホストインタフェースを介して、前記ホストシステム内に配置されたホストバッファメモリから、前記第２の計算モデルのための更新されたパラメータのセットを取り出す段階と、
前記第２の計算モデルを実装するために、前記計算エンジンに前記更新されたパラメータのセットを送信する段階と、
をさらに含む、請求項１７に記載の方法。
【請求項２０】
関心人物又は他のオブジェクトの識別、ストリームビデオへの広告のカスタマイズされた挿入、自律車両からのデータのクラウドベース分析、ＣｈａｔＢｏｔ  Ｖｏｉｃｅコールデータベースにおけるコール及びレスポンスの品質の分析、テキスト文書及びテキストメッセージデータベース分析、ムード検出、ビデオファイル又はボイスコール内のシーン識別、監視カメラ映像における人物又はオブジェクトの識別、監視カメラ映像に発生する動作のタイプの識別、録音における声又は音のタイプの識別、会話中に用いられているフレーズ及び応答の分類、並びに、自動車センサデータ及び駆動応答の分析のいずれかを自動的に実行することによって、前記オブジェクトのコンテンツ特徴を定義するメタデータを生成する段階をさらに含む、請求項１１〜１９のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］  本開示は、係属中の、同一出願人による、２０１８年７月３１日に出願された米国仮特許出願第６２／７１２，８２３号、２０１８年８月３日に出願された同第６２／７１４，５６３号、２０１８年８月８日に出願された同第６２／７１６，２６９号、２０１８年９月４日に出願された同第６２／７２６，８４７号、及び２０１８年９月４日に出願された同第６２／７２６，８５２号の米国特許法１１９条（ｅ）下での利益を主張する。以下の同一出願人による米国通常特許出願のそれぞれもまた、上記米国仮特許出願の利益を主張し、本明細書と同日に出願される。  １．米国特許出願第１６／２６４，２４８号。  ２．米国特許出願第１６／２６３，３８７号。  ３．米国特許出願第１６／２６２，９７５号。  ４．米国特許出願第１６／２６２，９７１号。上記仮特許出願及び通常特許出願のそれぞれは、そのそれぞれの全体が本明細書で参照されることによって本明細書に援用される。
【０００２】
本開示は、不揮発性ストレージデバイスのストレージ制御及び管理に関し、特に、計算エンジンを備えるストレージコントローラに関する。
【背景技術】
【０００３】
既存のストレージシステムは、データを、データの記述又は意味をコンパクトな形式で提供する関連メタデータと共に保存することが多い。メタデータの一般的な形式は、様々なラベル、タグ、データタイプインジケータ、データ内で検出されるオブジェクト及びアクティビティ、データが作成されたロケーション等を含む。メタデータは、データが保存されるデータストレージセンター等のストレージシステムとインタラクトする、データセンター等のホストシステムによって生成されることが多い。例えば、ストレージシステムは、不揮発性メモリから保存されているデータを取得し、取得したデータを、コンピュータネットワークを通じてホストシステムに送信するように構成されている。次に、ホストシステムは、取得したデータを分析し、取得したデータに関連するメタデータを生成することができる。次に、生成されたメタデータは、ホストインタフェースを介して、保存のためにストレージシステムに戻される。したがって、ストレージシステムとホストシステムとの間でやりとりされるデータの量はかなり大きなものとなり、そのため、コンピュータ処理及びネットワーキングシステムの利用可能な帯域幅に悪影響を与え得る。結果として、今日の世界で生成されるかなり大量のメディアのためにメタデータを生成することは実用上不可能である。
【発明の概要】
【０００４】
本明細書に記載される実施形態は、１つ又は複数のストレージデバイスにおけるデータの保存及び取り出しを管理するためのストレージデバイスコントローラを提供する。ストレージデバイスコントローラは、１つ又は複数のホストと通信するように構成されているホストインタフェースと、１つ又は複数のストレージデバイスの不揮発性メモリとローカルに通信するように構成されているメモリインタフェースと、不揮発性メモリにおけるオブジェクトのローカル保存又は取り出しを管理するように構成されている第１のプロセッサとを備える。ストレージデバイスコントローラは、揮発性メモリから第１の計算モデル及び第１の計算モデルを実装するためのパラメータのセットを取得し、第１の計算モデルを用いて、不揮発性メモリから取り出された又は不揮発性メモリに保存するために１つ若しくは複数のホストから受信したオブジェクトのコンテンツ特徴を定義するメタデータを選択的に計算するように構成されている計算エンジンをさらに備える。
【０００５】
いくつかの実装において、揮発性メモリは、ストレージデバイスコントローラに連結されているダイナミックランダムアクセスメモリである。
【０００６】
いくつかの実装において、揮発性メモリは、ホストシステムによってストレージデバイスコントローラに割り当てられるホストメモリバッファであり、ホストメモリバッファは、コンピュータネットワーク接続又はバス接続（例えば、ＰＣＩｅ）を通じてストレージデバイスコントローラによってアクセス可能である。
【０００７】
いくつかの実装において、計算エンジンは、第１のプロセッサとは別個であり、第１の計算モデルの実装を含むメタデータ生成に関連する計算タスクを実行するように構成されている、第２のプロセッサを備える。第１のプロセッサは、ストレージデバイスコントローラによって実行されている進行中操作のための第１のプロセッサのリソースを占有せずに、メタデータ生成に関連する計算タスクを計算エンジンにおける第２のプロセッサに送信するように構成されている。
【０００８】
いくつかの実装において、計算エンジンは、第２のプロセッサに連結されている揮発性メモリをさらに備える。揮発性メモリは、オブジェクトのキャッシュされる一部分のコンテンツ特徴を定義するメタデータの計算中、当該オブジェクトの一部分を少なくともキャッシュするように構成されているスタティックランダムアクセスメモリである。
【０００９】
いくつかの実装において、第１のプロセッサは、ホストインタフェースを介して、１つ又は複数のホストからオブジェクトを受信するようにさらに構成されている。オブジェクトは、不揮発性メモリに保存されることになる。第１のプロセッサは、受信したオブジェクトを、メタデータ計算のためにストレージデバイスコントローラ内に配置された揮発性メモリに一時的に保存するようにさらに構成されている。オブジェクトのコンテンツ特徴を定義するメタデータの計算が完了した後、第１のプロセッサは、メモリインタフェースを介して、受信したオブジェクトを保存のために揮発性メモリから不揮発性メモリに送信するように構成されている。第１のプロセッサは、ホストインタフェースを介して、メタデータをホストシステムに送信すること、及び、メモリインタフェースを介して、メタデータを保存のために不揮発性メモリに送信することの少なくとも一方を実行するように構成されている。
【００１０】
いくつかの実装において、第１のプロセッサは、ホストインタフェースを介して、１つ又は複数のホストのホストシステムから、不揮発性メモリからオブジェクトを取り出すコマンドを受信するようにさらに構成されている。このコマンドに応答して、第１のプロセッサは、メモリインタフェースを介して、メタデータ計算のためにストレージコントローラ内に配置された揮発性メモリからオブジェクトを取り出すように構成されている。オブジェクトのコンテンツ特徴を定義するメタデータの計算が完了した後、第１のプロセッサは、メモリインタフェースを介して、メタデータ及びオブジェクトを保存のために不揮発性メモリに送信するように構成されている。
【００１１】
いくつかの実装において、第１のプロセッサは、計算エンジンがメタデータを計算している間に、ホストインタフェースを介して、１つ又は複数のホストから、メタデータの要求を受信するようにさらに構成されている。第１のプロセッサは、計算エンジンにおいて要求されたメタデータが計算されるまで待機し、計算エンジンにおいて要求されたメタデータとは異なる新たなメタデータが計算されている間に、ホストインタフェースを介して、要求されたメタデータをホストシステムに送信することによって、メタデータの要求に非同期的に応答するようにさらに構成されている。
【００１２】
いくつかの実装において、第１のプロセッサは、コマンドに応答して、ホストシステムからのコマンドが第１の計算モデルの更新を要求しているか否かを決定するようにさらに構成されている。ホストシステムからのコマンドが計算モデルの更新を要求していないと決定したことに応答して、第１のプロセッサは、計算エンジンに既存の計算モデルを実装するように命令するように構成されている。ホストシステムからのコマンドが、第１の計算モデルが第１の計算モデルとは異なる第２の計算モデルに更新されることを要求していると決定したことに応答して、第１のプロセッサは、ストレージコントローラ内に配置された揮発性メモリから、又は、ホストインタフェースを介して、ホストシステム内に配置されたホストバッファメモリから、第２の計算モデルの更新されたパラメータのセットを取り出すように構成されている。第１のプロセッサは、第２の計算モデルを実装するために、計算エンジンに更新されたパラメータのセットを送信するようにさらに構成されている。
【００１３】
いくつかの実装において、計算エンジンは、関心人物又は他のオブジェクトの識別、ストリームビデオへの広告のカスタマイズされた挿入、自律車両からのデータのクラウドベース分析、ＣｈａｔＢｏｔ  Ｖｏｉｃｅコールデータベースにおけるコール及びレスポンスの品質の分析、テキスト文書及びテキストメッセージデータベース分析、ムード検出、ビデオファイル又はボイスコール内のシーン識別、監視カメラ映像における人物又はオブジェクトの識別、監視カメラ映像に発生する動作のタイプの識別、録音における声又は音のタイプの識別、会話中に用いられているフレーズ及び応答の分類、並びに、自動車センサデータ及び駆動応答の分析のいずれかを実行することによって、オブジェクトのコンテンツ特徴を定義するメタデータを自動的に生成するようにさらに構成されている。
【図面の簡単な説明】
【００１４】
添付図面と共に以下の詳細な説明を考慮すれば、本開示のさらなる特徴、その性質及び様々な利点が明らかになる。図面全体を通して、同様の参照符号は、同様の部分を指す。
【００１５】
【図１】本明細書に記載の一実施形態に係る、ソリッドステートデバイス（ＳＳＤ）ストレージデバイスのためのインストレージＤＲＡＭを伴うインストレージデバイス計算構造を示すブロックダイアグラムである。
【００１６】
【図２】本明細書に記載の１つの代替的な実施形態に係る、ソリッドステートデバイス（ＳＳＤ）ストレージデバイスのためのインストレージＤＲＡＭを伴わない代替的なインストレージ計算構造を示すブロックダイアグラムである。
【００１７】
【図３】ホストシステムから送信されるデータストリームのメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムである。
【００１８】
【図４】本明細書に記載の一実施形態に係る、図３に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。
【００１９】
【図５】本明細書に記載の別の実施形態に係る、不揮発性メモリに保存されているデータのメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムである。
【００２０】
【図６】本明細書に記載の別の実施形態に係る、図５に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。
【００２１】
【図７】ストレージデバイスのＡＩエンジン内の専用ＣＰＵを用いたメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムである。
【００２２】
【図８】本明細書に記載の別の実施形態に係る、図７に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。
【発明を実施するための形態】
【００２３】
本明細書に記載される実施形態は、ストレージエッジコントローラ内の計算エンジン（人工知能エンジン等）においてメディアオブジェクトのメタデータを生成し、データ処理システム内でそのようなメタデータを保存及び使用するための改善された方法及びシステムを提供する。
【００２４】
いくつかの実施形態において、データ処理システムは、大量のメディアオブジェクトを保存及び分析するのに用いられる。メディアオブジェクトのいくつかの非限定的な例としては、ビデオ、録音、静止画像、テキストメッセージ及び電子メール等のテキストオブジェクト、自動車センサ及び物のインターネット（ＩｏＴ）センサ等の様々なタイプのセンサから取得されたデータ、データベースオブジェクト、並びに／又は任意の他の好適なオブジェクトが挙げられる。オブジェクト分析用途のいくつかの非限定的な例としては、防犯カメラのビデオ映像における関心人物又は他のオブジェクトの識別、ストリームビデオへの広告（「アド」）のカスタマイズされた挿入、自律車両からのデータのクラウドベース分析等、ＣｈａｔＢｏｔ  Ｖｏｉｃｅコールデータベースにおけるコール及びレスポンスの品質の分析、テキスト文書及び／又はテキストメッセージデータベース分析、ムード検出、ビデオファイル又はボイスコール内のシーン識別、監視カメラ映像における人物又はオブジェクトの識別、監視カメラ映像に発生する動作のタイプの識別、録音における声又は音のタイプの識別、会話中に用いられているフレーズ及び／又は応答の分類、自動車センサデータ及び駆動応答の分析等が挙げられる。
【００２５】
本開示の背景技術で議論されたように、従来、ホストシステムは、不揮発性メモリからメディアオブジェクトを読み出し、メディアオブジェクトに関連するメタデータを生成し、次に、メタデータを保存のために不揮発性メモリに戻すように構成されている。したがって、不揮発性メモリとホストシステムとの間でやりとりされるデータの量はかなり大きなものとなり、そのため、コンピュータ処理及びネットワーキングシステムの利用可能な帯域幅に悪影響を与え得る。
【００２６】
背景技術で説明したように、データが保存されている場所からリモートに位置するホストシステムは、コンピュータネットワークを通じてデータ保存ロケーションからデータ計算ロケーションに大量のデータを転送することを必要とする。それらのシステムにおけるメタデータ計算の非効率性に鑑みて、ストレージエッジにおけるメタデータの計算を説明する。ストレージエッジにおいてメタデータを計算することによって、コンピュータネットワークを通じた過剰なデータの送信が不要になる。特に、本明細書に記載されている実施形態は、不揮発性ストレージデバイスのストレージコントローラ内に位置し、不揮発性ストレージデバイスに保存される途中にある又は不揮発性ストレージデバイスから取り出されるデータに対してメタデータを生成する計算エンジンを提供する。このようにして、ストレージデバイスは、元のデータコンテンツを処理のためにホストシステムに渡さずに、メタデータをローカルに、例えば、ストレージコントローラ内に存在する内部計算エンジンを介して生成可能である。データが保存されている場所に対してローカルな高度計算エンジンを用いてメタデータを計算することによって、メタデータ生成は、例えば、ストレージデバイスのホストインタフェースのキャパシティ、又は、データをストレージから計算設備に転送するコンピュータネットワークの帯域幅制限によって、もはや制限されない。保存されているデータ、特に構造化されていない若しくは部分的に構造化されたメディアのメタデータをストレージエッジにおいて計算することによって、データ保存及び保存されているデータを記述するメタデータ生成の効率が改善される。
【００２７】
本明細書で用いられる「ストレージエッジ」という用語は、不揮発性ストレージデバイスに対してローカルなモジュール又はコンポーネントを意味するように用いられている。例えば、不揮発性メモリの１つ又は複数のインスタンスにおいてデータを保存又は取り出すために１つ又は複数のストレージデバイスの動作を制御するコントローラが、ストレージエッジに配置される。ストレージエッジは、例えば、専用ストレージデバイス内に又はストレージネットワークにおいて見出され、例えば、ホストコンピュータ内に又はデータセンターにおいてリモートに配置されるプロセッサとは別個である。ストレージエッジとリモートホストとは、コンピュータネットワーク接続を通じて通信する。
【００２８】
本明細書で用いられる「データオブジェクト」、「メディアオブジェクト」、又は「オブジェクト」という用語は、ホストシステム上で実行されるアプリケーションによって発行され、ストレージデバイスに保存することができる、様々なタイプのデータを意味するように用いられている。「メディアオブジェクト」又は「オブジェクト」の例としては、限定されないが、ビデオ、録音、静止画像、テキストメッセージ及び電子メール等のテキストオブジェクト、自動車センサ及び物のインターネット（ＩｏＴ）センサ等の様々なタイプのセンサから取得されたデータ、データベースオブジェクト、並びに／又は任意の他の好適なオブジェクトが挙げられ得る。多くの場合において、メディアオブジェクトは構造化されていない。本明細書で用いられる「構造化されていないオブジェクト」という用語は、オブジェクトのメディアコンテンツ（例えば、テキストコンテンツ、オーディオコンテンツ、画像コンテンツ、又はビデオコンテンツ）が、未処理の形態で提供されており、固定フィールド形式にしたがって予め編成されていないことを意味する。構造化されていないオブジェクトは、フレーム若しくは他のコンテンツ部分ごとのコンテンツの任意の様相を定義するメタデータでアプリオリにタグ付けされていない。構造化されていないデータは、トランザクションで扱えるものでなく、その形式は、リレーショナルデータベーススキーマに容易に適合しない。
【００２９】
本明細書で用いられる「メタデータ」という用語は、不揮発性ストレージデバイスに保存されているメディアオブジェクトの実際のデータコンテンツの高水準表現を指すように用いられている。「メタデータ」は、データコンテンツの記述又は意味をコンパクトな形式で提供する、実際のデータコンテンツの抽象層であり得る。メタデータは、ほぼ常に構造化されていないメディアオブジェクトから、様々な方法で生成することができる。メタデータの例としては、ラベル、タグ、データのタイプ、データコンテンツ内で検出されたオブジェクト／コンセプト／センチメント、データコンテンツ内でのそのようなオブジェクト／コンセプト／センチメントの空間的／時間的ロケーション等を挙げることができる。
【００３０】
本明細書で用いられる「インストレージ計算」という用語は、ストレージデバイス上に保存されているデータ（例えば、ハードディスクドライブ、ソリッドステートドライブ等）が、当該データの構造を自動的に生成するために当該ストレージデバイス上でストレージコントローラによってローカルに処理されることを指すように用いられている。換言すれば、データは、例えば、コンピュータネットワークを通じて別個のサーバ又はホストシステムに送信されるのではなく、ストレージデバイスの「境界」内で処理される。「インストレージ計算」は様々な種類の計算を指すことができるが、そのような計算は、１つの実装において、ストレージデバイス内の人工知能（ＡＩ）エンジンによって実行することができる。
【００３１】
本明細書で用いられる「人工知能（ＡＩ）モデル」という用語は、例えば、ディープニューラルネットワーク又は任意の回帰型ニューラルネットワーク又はそれらの任意の変形で実装される任意の好適なＡＩアルゴリズムを指すように用いられている。いくつかの実装において、ＡＩモデルは、好適には、任意の他の教師あり学習又は教師なし学習又は強化学習アルゴリズムである。ＡＩモデルは、「訓練セット」、すなわち、メディアオブジェクトの本体及び正確であることが知られている対応するメタデータを用いて訓練される。次に、訓練されたＡＩモデルは、他のメディアオブジェクトのメタデータを生成するために適用される。予め訓練されたＡＩモデルを受信し、このＡＩモデルを用いてオブジェクトのメタデータを計算するソフトウェア又はハードウェアモジュールは、本明細書では、「ＡＩエンジン」又は「ＡＩインタフェースエンジン」と称される。いくつかの実装において、いくつかの異なるＡＩモデルが、構造化されていない又は部分的に構造化されたメディアオブジェクトに適用される。
【００３２】
図１は、本明細書に記載の一実施形態に係る、ストレージデバイスのためのインストレージＤＲＡＭを伴うインストレージデバイス計算構造を示すブロックダイアグラム１００である。ストレージデバイスは、限定されないが、ソリッドステートデバイス（ＳＳＤ）、ハイブリッドハードドライブ等のような任意の種類の不揮発性メモリを備える。ダイアグラム１００は、ホストシステム１１０に接続されているストレージデバイス１２０を示している。ホストシステム１１０は、ストレージデバイス１２０に対してリモートに位置しており、ストレージデバイス１２０には、コンピュータネットワークを介してアクセス可能である。
【００３３】
ストレージデバイス１２０、例えば、ＳＳＤストレージデバイスコントローラは、データバスを介してストレージコントローラ１３０に接続されているＮＡＮＤフラッシュメモリ１１９ａ〜ｄ（ただし他のタイプの不揮発性メモリも適用可能である）として図１に示す、複数の不揮発性メモリを備える。
【００３４】
一実装において、ストレージコントローラ１３０は、パッケージ内に一緒に組み合わされた１つ又は複数の集積回路を含むチップ上のシステムとして構成されている。ストレージコントローラ１３０は、不揮発性メモリ（例えば、ＮＡＮＤフラッシュメモリ１１９ａ〜ｄ）において読み出し又は書き込み操作を実行し、例えば、ＮＡＮＤフラッシュメモリ１１９ａ〜ｄから保存されているデータコンテンツを読み出す、又は、保存のためにＮＡＮＤフラッシュメモリ１１９ａ〜ｄにデータコンテンツを書き込むように構成されている。
【００３５】
ストレージコントローラ１３０は、ホストインタフェース１３６、ストレージコントローラの中央処理装置（ＣＰＵ）１３３、ローカルメモリ（ＳＲＡＭ１３７又はＤＲＡＭコントローラ１３４を介したＤＲＡＭ１２５）、メディアコントローラ１３８等のような様々なモジュールを備える。様々なモジュールは、制御又はデータバス１３５のファブリックを介して互いにインタラクトするように構成されている。具体的には、ＣＰＵ１３３は、ＮＡＮＤメモリ１１９ａ〜ｎのうちの１つ又は複数において書き込み又は読み出し操作等の様々なタスクを実行するために、ストレージコントローラ１３０のための命令を発行するように構成されている。ＳＲＡＭ１３７は、ストレージコントローラ１３０によって実行される操作中に生成される又は用いられるデータをキャッシュするように構成されている。メディアコントローラ１３８は、一実装において、ＮＡＮＤフラッシュメモリ１１９ａ〜ｄとインタフェース通信するように構成されている。ホストインタフェース１３６は、例えば、コンピュータネットワーク接続１１１を通じて、外部ホストシステム１１０とインタフェース通信するように構成されている。
【００３６】
一実装によれば、ストレージコントローラ１３０は、制御又はデータバス１３５のファブリックを介してストレージコントローラ１３０内の他のモジュールと通信する、例えばＡＩエンジン１３１等の計算エンジンをさらに備える。ＡＩエンジン１３１は、アクセラレータとして、ＣＰＵ１３３とは別個にデータコンテンツを処理して、ＮＡＮＤメモリ１１９ａ〜ｈのうちの１つに保存されている若しくはそこから取り出される又はＮＡＮＤメモリ１１９ａ〜ｈのうちの１つに保存される途中にあるデータコンテンツを記述するメタデータを生成するように構成されている。一実装において、ＡＩエンジンは、ベクトルプロセッサと、ＤＳＰと、メディアデータの分析及びメタデータの生成に好適な他のコアと、のうちの１つ又は複数を備える。ＡＩエンジン１３１によるメタデータ生成の詳細な実装は、図３〜図６に関してさらに説明される。代替的に、専用ＡＩエンジンによって提供される一部又は全ての機能は、好適なソフトウェア又はファームウェアを実行するＣＰＵ１３２及び１３３のうちの１つ又は複数によって提供され得る。
【００３７】
ＡＩエンジン１３１は、ストレージコントローラ１３０のＣＰＵ１３３とは別個の、それ自身のＣＰＵ１３２を任意に備える。ＡＩエンジン１３１がＣＰＵ１３２を備える場合、ＣＰＵ１３２は、好適には、例えば、様々なＡＩ関連計算操作をメインＣＰＵ１３３からオフロード、ＡＩエンジン割り込み及びレジスタプログラミングを管理、メタデータ生成を支援等するように構成されているコプロセッサとして構成されている。ＡＩエンジン１３１がＣＰＵ１３２を備えない場合、メタデータを生成するための任意の計算タスク等の、ＡＩエンジン１３１によって必要とされる任意のＣＰＵ操作は、ストレージコントローラ１３０のＣＰＵ１３３によって実行される。そのような場合、ＡＩエンジン１３１は、他のストレージ関連操作とＣＰＵリソースを共有する。ＡＩエンジンにおける専用ＣＰＵによるメタデータ生成の詳細な実装は、図７〜図８に関して説明される。
【００３８】
ストレージデバイス１２０は、ディープニューラルネットワークの係数、重み等のＡＩモデル用のデータパラメータを保存するように構成されている、ＤＲＡＭ１２５等のローカル揮発性メモリを備える。このようにして、ＡＩエンジン１３１は、ＡＩモデルによって要求される計算を好適に実行するために、ＤＲＡＭコントローラ１３４を介してＤＲＡＭ１２５からデータパラメータを取得するように構成されている。
【００３９】
図２は、本明細書に記載の１つの代替的な実施形態に係る、ストレージデバイスのためのインストレージＤＲＡＭを伴わない代替的なインストレージ計算構造を示すブロックダイアグラムである。ダイアグラム２００は、図１におけるダイアグラム１００のものと同様のストレージデバイス１２０及びホストシステム１１０を示している。ダイアグラム１００に示す構造とは異なり、ストレージデバイス１２０は、ローカルＤＲＡＭを備えず、したがってローカルＤＲＡＭにＡＩモデルのデータパラメータを保存しない。その代わりに、ホストシステム１１０は、ＡＩモデル用のデータパラメータを保存するために、ストレージコントローラ１３０に、ホストバッファメモリ１０８としてメモリ片を割り当てるように構成されている。ホストメモリバッファ１０８は、ホスト１１０に配置されており、ホストインタフェース１３６を介して、例えば、データバス接続１１２を通じて、又は、ＮＡＮＤフラッシュメモリ１１９ａ〜ｄのうちの１つ若しくは複数において、ストレージコントローラ１３０によってアクセス可能である。したがって、ＡＩモデル用のデータパラメータ１０８は、ホストメモリバッファ１０８から又はＮＡＮＤフラッシュから、ホストインタフェース１３６を介して、例えば、データバス接続１１２を通じて、ＡＩエンジン１３１に渡される。
【００４０】
いくつかの実施形態において、インストレージ計算構造は、ホストシステム１１０がストレージデバイス１２０に対してローカルにあり、データバス１１２を介してストレージデバイス１２０に接続されている場合に適用され得る。ホストシステム１１０がストレージデバイス１２０に対してリモートでないので、ホストシステム１１０とストレージデバイス１２０との間でのデータのやりとりは、ホストシステムがネットワーク接続を介してストレージデバイスにリモートに接続されている場合のシナリオよりも、比較的効率的である。したがって、ホスト側（例えば、ホストメモリバッファ１０８）に保存されているＡＩモデルのパラメータは、効率的に読み出してストレージ側に送信することができる。ＡＩモデルのデータパラメータが大量のデータを含む場合、ホストメモリバッファ１０８は、ストレージデバイス１２０内に位置するＳＲＡＭ又はＤＲＡＭのデータ容量に制限されずに大量のデータを保存するように、ローカルメモリとしての機能を果たすことができる。
【００４１】
図３は、ホストシステムから送信されるデータストリームのメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムであり、図４は、本明細書に記載の一実施形態に係る、図３に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。ダイアグラム３００は、ホストシステム１１０に通信可能に連結されているストレージコントローラ１３０、及び、様々なコンポーネント間を通したデータのフローを示す。ストレージコントローラ１３０及びホストシステム１１０のコンポーネントは、図１〜図２に示すダイアグラム１００〜２００において説明した構造と同様である。プロセス４００は、図示の例において、ダイアグラム３００に示す構造を用いて、ストレージデバイス１２０及びホストシステム１１０の様々なモジュール間でのデータのやりとりを通して実施される。
【００４２】
具体的には、プロセス４００は、４０２で開始する。ここで、メディアオブジェクト等の構造化されていないデータは、メディアジェネレータから直接又は間接的に受信される。例えば、いくつかの実装において、メディアオブジェクトは、ホストシステム１００において実行されているホストアプリケーション１０５から受信される。いくつかの他の実装において、構造化されていないメディアオブジェクトは、ホストプロセッサを通さずに、又は、メタデータが生成又は分析され得るホストプロセッサとは異なるサーバ（すなわち、クラウドサーバ）を通した後、メディアオブジェクトを生成するデバイスから直接又は間接的に受信される。書き込みコマンドは、メディアオブジェクトのデータストリーム３０１と共に、保存のためにストレージデバイス１２０に送信される。具体的には、ストレージデバイス１２０に送信されるデータストリーム３０１は、構造化されていない（すなわち、未処理）メディアオブジェクト又は部分的に構造化されたオブジェクト（例えば、フレーム化されているか、又はメディアコンテンツの一部の属性を部分的にのみ記述する部分メタデータを伴う）を含む。
【００４３】
４０４にて、構造化されていない又は部分的に構造化されたメディアオブジェクトのデータストリーム３０１は、ホストコンテンツマネージャ１４２を通して送信され、ローカルメモリ１２５に一時的に保存される。ホストコンテンツマネージャ１４２は、ストレージコントローラ１３０のホストインタフェース１３６と共に動作するようにＣＰＵ１３３によって実装されるソフトウェアモジュールである。例えば、ホストインタフェース１３６は、ホストシステム１１０から構造化されていないメディアオブジェクトのデータストリーム３０１を受信するように構成されている。次に、ホストデータコマンドハンドリングモジュール１４１は、３０２ａにおいて、構造化されていないメディアオブジェクトをホストコンテンツマネージャ１４２に転送するように構成されている。例えば、ホストデータコマンドハンドリングモジュール１４１及びホストコンテンツマネージャ１４２は、同じＣＰＵ１３３上で実行されるソフトウェアモジュールであり、データをやりとりするように構成されている。ホストコンテンツマネージャ１４２は、データバス３０２ｂを介してデータコンテンツをローカルメモリ１２５に転送するように構成されている。一実装において、ローカルメモリ１２５は、図１に示すようなＤＲＡＭである。別の実装において、ＳＳＤストレージデバイス１３０内のローカルメモリ１２５に一時的に保存されるようにデータストリーム３０１を送信する代わりに、データストリーム３０１は、ＮＡＮＤメモリのうちの１つに形成されているＮＡＮＤベースキャッシュシステム（図示せず）に一時的に保存される。ＮＡＮＤベースキャッシュシステムのさらなる例は、同一出願人による２０１６年１０月２５日付けで発行された米国特許第９，４７７，６１１号及び２０１８年９月４日に発行された米国特許第１０，０６７，６８７号に見出すことができる。
【００４４】
４０６にて、構造化されていないメディアオブジェクト及び／又はＡＩモデルのパラメータ（例えば、ディープニューラルネットワークの重み／係数）がローカルメモリ１２５から読み出される。例えば、ＡＩモデルのパラメータは、ホストシステム１１０から以前に取得され、ローカルメモリ１２５に予め保存されている。いくつかの実装において、ＡＩモデルのパラメータは、データバス３０２ａ〜ｂを介して、ホストシステム１１０からの新たなパラメータで、周期的に、コンスタントに、又は断続的に更新される。ホストコンテンツマネージャモジュール１４２は、データバス３０４を介して、ローカルメモリ１２５から、構造化されていないメディアオブジェクト及びＡＩモデル用のパラメータを読み出すように構成されている。別の実装において、ＡＩモデル用のパラメータは、図２に示すホストメモリバッファ１０８から任意に読み出される。
【００４５】
４０８にて、構造化されていない又は部分的に構造化されたメディアオブジェクトは、ビデオ、録音、静止画像、テキストメッセージ及び電子メール等のテキストオブジェクト、自動車センサ及び物のインターネット（ＩｏＴ）センサ等の様々なタイプのセンサから取得されたデータ、データベースオブジェクト、並びに／又は任意の他の好適なオブジェクト等の様々なタイプのメディアオブジェクトの分類、ラベリング、又はドキュメンテーション等により、ＡＩエンジン１３１によって処理される。具体的には、ホストコンテンツマネージャは、ＡＩエンジン１３１と共に動作するＡＩドライバ１４４（例えば、ＨＡＬドライバ）に、データコンテンツ及びＡＩモデル用のデータパラメータを送信するように構成されている。次に、ＡＩドライバ１４４は、データパラメータを組み込み、所望のＡＩモデル（ディープニューラルネットワークのための所望の係数／重みを伴う）を実装するように構成されている。次に、ＡＩエンジン１３１は、ＡＩモデルを実行することによって、データコンテンツを記述するメタデータを生成するように構成されている。次に、生成されたメタデータは、図１〜図２に示すデータバス１３５のファブリックを介してメディアコントローラ１３８に送信することができる。
【００４６】
４１０にて、生成されたメタデータは、一実装において、ＮＡＮＤフラッシュメモリ１１９ａ〜ｎ上で元のデータコンテンツと共に保存される。具体的には、ホストコンテンツマネージャ１４２は、ＡＩエンジン１３１からの生成されたメタデータを、データバス１３５のファブリックの一部であるデータバス３０６を介して、内部ファイルシステム１４８に送信させるように構成されている。次に、内部ファイルシステム１４８は、メタデータを対応するメディアオブジェクトにリンクするように構成されている。メタデータを対応するメディアオブジェクトにリンクする内部ファイルシステム１４８のさらなる例は、同時係属中である、同一出願人による同日出願の米国特許出願第１６／２６２，９７１号に見出すことができる。次に、メタデータは、データバス１３５のファブリックの一部であるデータバス３０７を介して、内部ファイルシステム１４８からメディアコマンドプロセッサ１４９に送信される。さらに、メディアコマンドプロセッサ１４９は、フラッシュコントローラ１２９を介してＮＡＮＤフラッシュメモリ１１９ａ〜ｎにメタデータを書き込むように書き込みコマンドを発行する。
【００４７】
いくつかの実装において、生成されたメタデータは、ＮＡＮＤフラッシュメモリ１１９ａ〜ｎ内で元のデータコンテンツと共に保存される。例えば、各データストリーム３０１ａ〜ｎは、それぞれのデータストリームを記述する、対応するメタデータ３１７ａ〜ｎを伴う。このようにして、メタデータ３１７ａ〜ｎは、別個の物理的ロケーションに保存することによって又は論理的に分離することによって、元のデータコンテンツ３０１ａ〜ｎから別個に取り出すことができる。
【００４８】
いくつかの実装において、メタデータは、データコンテンツとは別個に、例えば、連続するメモリアドレスになく、同じメモリページ内になく、又はさらには同じＮＡＮＤメモリダイ上にないようにして、保存することができる。この場合、内部ファイルシステム１４８は、データコンテンツのメディアオブジェクトが存在するメモリアドレスと、データコンテンツを記述するメタデータが存在するメモリアドレスとをリンクするポインタを割り当てるように構成されている。このようにして、関心メディアオブジェクト内の元のデータコンテンツの一部分がメタデータを用いて識別されると、構造化されていないメディアオブジェクトからメディアの対応するセグメントを取り出すことができる。構造化されていないメディアオブジェクト及びメディアオブジェクトを記述するメタデータのストレージ構造のさらなる詳細は、同時係属中である、同一出願人による同日出願の米国特許出願第１６／２６３，３８７号に見出すことができる。
【００４９】
４１２にて、データ処理が終了していない場合、例えば、処理すべきメディアオブジェクトの新たなデータストリームが存在する場合、異なるＡＩモデルを用いて異なるセットのコンテンツ属性に対応する別個のセットのメタデータが生成等されることになり、プロセス４００は、４０６、４０８、及び４１０を繰り返して進む。データ処理が終了している場合、プロセス４００は終了する。
【００５０】
図５は、不揮発性メモリ内に保存されているデータのメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムであり、図６は、本明細書に記載の別の実施形態に係る、図５に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。ダイアグラム５００は、図１〜図２に示すダイアグラム１００〜２００において説明した構造と同様かつ図３のダイアグラム３００において示す構造と同様である、ホストシステム１１０に通信可能に連結されているＳＳＤストレージデバイス１２０を示している。プロセス６００は、ダイアグラム５００に示す構造において、ＳＳＤストレージデバイス１２０及びホストシステム１１０の様々なモジュール間でのデータのやりとりを通して実施される。
【００５１】
具体的には、ホストシステム１１０からデータストリームを受信して処理するプロセス４００とは異なり、プロセス６００とダイアグラム５００におけるデータフローとは、構造化されていない又は部分的に構造化されたメディアオブジェクトがＮＡＮＤフラッシュメモリ１１９ａ〜ｎ上に既に保存されているが、対応するメタデータがまだ完全に生成されていないシナリオを説明している。したがって、プロセス６００は、構造化されていない又は部分的に構造化されたメディアオブジェクトが、構造化されていない又は部分的に構造化されたメディアオブジェクトがホストシステムから当初受信された時間よりも後の時間に処理（又は再処理）される「オフライン」シナリオに適用することができる。
【００５２】
６０２にて、不揮発性メモリ、例えばＮＡＮＤフラッシュメモリ１１９ａ〜ｎに以前に保存されていた構造化されていないメディアオブジェクトを処理するために、ホストシステム１１０からデータ要求が受信される。具体的には、ホストアプリケーション１０５は、不揮発性メモリ１１９ａ〜ｎからデータコンテンツの構造化されていない又は部分的に構造化されたメディアオブジェクトの一部分を取り出すようにストレージコントローラ１３０に命令するコマンド５０１を発行するように構成されている。具体的には、コマンド５０１を受信すると、ホストデータコマンドハンドリングモジュール１４１は、データバス５０２ａを介してコマンドをホストコンテンツマネージャ１４２に転送するように構成されており、ホストコンテンツマネージャ１４２はさらに、ＮＡＮＤメモリ１１９ａ〜ｄからローカルメモリ１２５にメディアオブジェクトを取り出させる。
【００５３】
６０４にて、ホストコンテンツマネージャ１４２は、コマンド５０１が、ＡＩエンジン１３１に既にロードされている既存のＡＩモデルを用いたデータ処理を要求しているのか、又は、ＡＩエンジン１３１にまだロードされていない新たなＡＩモデルを用いて保存されているデータコンテンツを再処理することを要求しているのかを決定するように構成されている。
【００５４】
コマンド５０１が既存のＡＩモデルでのデータ処理を要求している場合、プロセス６００は６０８に進み、ここで、ＡＩエンジン１３１は、メタデータ生成のためにＡＩエンジン１３１において既にロードされている既存のＡＩモデルで再開するように構成されている。
【００５５】
コマンド５０１が新たなＡＩモデルでのデータ処理を要求している場合、プロセス６００は６０６に進み、ここで、ＡＩモデル用の新たなデータパラメータがＡＩエンジン１３１及びローカルメモリ１２５にロードされる。具体的には、新たなデータパラメータ（例えば、新たなパラメータ／重み、新たなニューラルネットワークモデル等）は、コマンド５０１と共にホストシステム１１０からホストデータコマンドハンドリングモジュール１４１に送信されることがあり、ホストデータコマンドハンドリングモジュール１４１はさらに、データバス５０２ａを介してホストコンテンツマネージャ１４２に新たなデータパラメータを送信する。次に、ホストコンテンツマネージャ１４２は、（例えば、ＡＩモデル用の以前に保存されていたパラメータを更新等するために）データバス１３５のファブリックの一部であるデータバス５０２ｃを介して、新たなデータパラメータを保存のためにローカルメモリ１２５に送信するように構成されている。また、ホストコンテンツマネージャ１４２は、データバス１３５のファブリックの一部であるデータバス５０３を介して、ＡＩドライバ１４４に新たなデータパラメータを送信する。次に、ＡＩドライバ１４４は、ＡＩエンジン１３１において新たなＡＩモデルを実装するように新たなデータパラメータを組み込むように構成されている。
【００５６】
いくつかの実装において、ストレージコントローラ１３０が、不揮発性メモリ上に保存されているデータに関していかなる保存及び取り出し操作も実行せず、又は、ホストシステム１１０から直接受信したいかなるデータストリーム（例えば、図３の３０１）も処理等せず、アイドル状態である場合、ホストシステム１１０によって命令される代わりに、ストレージコントローラ１３０は、不揮発性メモリ１１９ａ〜ｄに保存されている構造化されていないメディアオブジェクトのためのメタデータの計算を自動で開始するように構成されている。したがって、ストレージコントローラ１３０が、不揮発性メモリに対するデータの読み出し又は書き込み等の保存操作を実行せずアイドル状態である場合、ストレージコントローラ１３０のＣＰＵリソースは、ストレージコントローラ１３０と関連付けられている不揮発性メモリのうちの１つ又は複数に保存されているコンテンツに対してメタデータを生成する広範なＡＩ計算のために用いられる。いくつかの実装において、ストレージコントローラ１３０は、メモリアレイ等の複数のストレージデバイスと共に動作し、それらのストレージデバイスを制御するように構成されているアグリゲータである。メモリアレイに保存されている構造化されていないメディアオブジェクトのためのメタデータを計算して集約するためのアグリゲータの使用のさらなる詳細は、同時係属中である、同一出願人による同日出願の米国特許出願第１６／２６４，２４８号に見出すことができる。
【００５７】
操作６０６又は６０８の後、プロセス６００は次に６１０に進む。操作６１０〜６１５は、図４における操作４０６〜４１２とそれぞれ同様であるが、ただし、データコンテンツは、一実装において、新たなＡＩモデルで再処理される。この場合、一部のメタデータは、同じデータコンテンツのために以前に生成されていてよく、新たなＡＩモデルからの新たに生成されたメタデータで更新又は修飾される。
【００５８】
６１０にて、データコンテンツのメディアオブジェクトは、ＮＡＮＤフラッシュメモリ１１９ａ〜ｎからローカルメモリ１２５に取り出される。具体的には、フラッシュコントローラ１２９は、データバス５１２を介して、ＮＡＮＤメモリ１１９ａ〜ｎから取り出されたデータコンテンツのメディアオブジェクトを受信し、そのデータコンテンツをホストコンテンツマネージャ１４２に提供する。ホストコンテンツマネージャ１４２は、処理又は再処理すべきデータコンテンツを、データバス５０２ｃを介してローカルメモリ１２５に供給するように構成されている。
【００５９】
６１２にて、構造化されていないメディアオブジェクトは、６０８にて以前にロードされていたＡＩモデルを実行するか又は６０６にて新たなＡＩモデルを生成して実行するＡＩエンジン１３１によって処理される。具体的には、ホストコンテンツマネージャ１４２は、データバス５０４を介してローカルメモリ１２５からデータコンテンツを読み出し、次に、データバス５０３を介して、ＡＩエンジン１３１と共に動作するＡＩドライバ１４４にデータコンテンツを送信するように構成されている。次に、ＡＩエンジン１３１は、利用可能な（既存の又は新たな）ＡＩモデルを実行することによって、データコンテンツを記述するメタデータを生成するように構成されている。
【００６０】
６１４にて、生成されたメタデータは、保存のためにＮＡＮＤフラッシュメモリ１１９ａ〜ｎに提供される。具体的には、ホストコンテンツマネージャ１４２は、ＡＩエンジン１３１からの生成されたメタデータを、データバス１３５のファブリックの一部であるデータバス５０６を介して内部ファイルシステム１４８に送信させるように構成されている。次に、内部ファイルシステム１４８は、メタデータを対応するメディアオブジェクトにリンクするように構成されている。メタデータを対応するメディアオブジェクトにリンクする内部ファイルシステム１４８のさらなる例は、同時係属中である、同一出願人による同日出願の米国特許出願第１６／２６２，９７１号に見出すことができる。
【００６１】
メディアコマンドプロセッサ１４９はさらに、フラッシュコントローラ１２９を介してＮＡＮＤフラッシュメモリ１１９ａ〜ｎにメタデータを書き込むために書き込みコマンドを発行する。
【００６２】
いくつかの実装において、新たに生成されたメタデータは、データコンテンツの同じメディアオブジェクトのために以前に生成されたメタデータと共に保存されて組み合わされる。例えば、構造化されていないメディアオブジェクトのデータストリーム５１２ａ〜ｎのうちの１つは、それぞれのデータストリームを記述する、対応するセットのメタデータ５０７ａ〜ｎを伴う。メタデータ５０７ａ〜ｎのうち、それぞれのセットのメタデータ５０７ａ〜ｎのセグメントは、一実装において、５０８に示す、新たなＡＩモデルを介して生成された新たに生成されたメタデータであり得る。構造化されていないメディアオブジェクト及びメディアオブジェクトを記述するメタデータのストレージ構造のさらなる詳細は、同時係属中である、同一出願人による同日出願の米国特許出願第１６／２６３，３８７号に見出すことができる。
【００６３】
６１５にて、データ処理が終了していない場合、例えば、処理すべきさらなるデータが存在する場合、異なるＡＩモデルを用いた異なるセットのコンテンツ属性に対応する別個のセットのメタデータが生成等され、プロセス６００は、６１０、６１２、及び６１４を繰り返して進む。データ処理が終了している場合、プロセス６００は６１６に進み、ここで、新たに生成されたメタデータは、例えば、新たなメタデータ５０９を含むレポートの形式で、ホストシステム１１０に任意に送り返される。一実装において、ストレージコントローラ１３０は、データ処理が終了すると、ホストシステム１１０に新たなメタデータ５０９のレポートを送り返すように構成されている。又は代替的に、ストレージコントローラ１３０は、コマンド５０１に関して非同期的にホストシステム１１０に新たなメタデータ５０９のレポートを送り返すように構成されている。例えば、ホストシステムは、メタデータの更新が実行されている間に、任意の時点でメタデータを要求することができ、ストレージコントローラ１３０は、メタデータ更新が終了すると、メタデータ要求に対して非同期的に新たなメタデータ５０９のレポートを送り返すように構成されている。
【００６４】
図７は、ストレージデバイスのＡＩエンジン内の専用ＣＰＵを用いたメタデータ生成のための、不揮発性メモリストレージデバイス内の様々なモジュール及びそれらのモジュール間のデータフローを示す概略データフローダイアグラムであり、図８は、本明細書に記載の別の実施形態に係る、図７に示すデータフローの例示的な論理フローを提供する論理フローダイアグラムである。ダイアグラム７００は、図１〜図２に示すダイアグラム１００〜２００に記載の構造と同様である、ホストシステム１１０に通信可能に連結されているストレージデバイス１２０を示している。プロセス８００は、ダイアグラム７００に示す構造において、ストレージデバイス１２０及びホストシステム１１０の様々なモジュール間でのデータのやりとりを通して実施される。具体的には、ダイアグラム７００は、ＡＩエンジン１３１がそれ自身のＣＰＵ１３２及びＳＲＡＭ１５４を備えるストレージコントローラ構造１３０を記載している。
【００６５】
ストレージコントローラ１３０では、一実装において、ＣＰＵ１３３は、ＡＩ関連操作を実行するために、ＣＰＵ１３３における制御レジスタをプログラムするのに用いられる。ＡＩ関連操作が完了すると、ＡＩエンジン１３１からＣＰＵ１３３にサービス割り込みが送信され、ＣＰＵ１３３は、プログラムされた制御レジスタを解放し、他のアクティビティに従事することができる。例えば、ＣＰＵ１３３は、ホストシステム１１０からコマンドをフェッチしてデータを転送し、ＮＡＮＤフラッシュメモリ１１９ａ〜ｄからの基礎となるメディアデータを抽象化するようにフラッシュ変換層（ＦＴＬ）操作を実行し、基礎となるメディア（例えば、ＮＡＮＤメモリ１１９ａ〜ｄ等）デバイスにアクセスするようにメディア管理を実行し、実際のデータ読み出し又は書き込み操作等を実行するために、ホストインタフェース管理のためのリソースをしばしば要求する。一部のＡＩモデルの回帰性により、ＡＩ操作は、高周波数で複数回繰り返す必要がある。ＣＰＵ１３３が、ＡＩ操作を実行するために制御レジスタをコンスタントに割り当てることを要求されれば、比較的高いＣＰＵ作業負荷が生じる。これは、ストレージコントローラＣＰＵ１３３の帯域幅を占有し、ストレージ関連タスクを実行するためのその利用可能性を低減させ、それによってストレージのパフォーマンスに悪影響を与える。
【００６６】
ＣＰＵ１３２又はコプロセッサは、メインＣＰＵ１３３からＡＩ関連タスクをオフロードするために、また、ＡＩ管理とストレージ関連タスクを実行するメインＯＳとの間のオペレーティングシステム（ＯＳ）分離を提供するために、ＡＩエンジン１３１に含まれる。ＣＰＵ１３２は、高性能な汎用中央処理機能、デジタル信号中央処理機能、ベクトル中央処理機能又は他の好適な中央処理機能を提供する１つ又は複数のプロセッサユニットを備える。加えて、専用ＳＲＡＭ１５４は、頻繁にアクセスされるデータを、ファブリックを通じてＤＲＡＭ１２５から読み出す（又はＮＡＮＤベースキャッシュから読み出す）必要がないように、当該データをキャッシュするために、ＡＩエンジン１３１内に配置される。したがって、ファブリックの帯域幅は、他の非ＡＩ関連操作に適用することができる。
【００６７】
プロセス８００は８０２で開始し、ここで、例えば、図４における操作４０２と同様に、保存要求７０１及び保存すべきデータコンテンツがホストシステム１１０から受信される。８０４にて、データコンテンツは、例えば、図４における操作４０４と同様に、データバス７０２を介してローカルメモリＤＲＡＭ１２５にロードされる。８０６にて、頻繁にアクセスされるデータは、ＡＩエンジン１３１内の専用ＳＲＡＭ１５４にキャッシュされる。例えば、一実装において、データのキャッシュは、メタデータが生成されている間に、ＡＩエンジンの実施と並んで漸次的に実行される。処理すべきデータコンテンツの構造化されていないメディアオブジェクトのセグメント、回帰型ＡＩモデルにおいて頻繁に用いられるデータ変数等はそれぞれ、アクセスのためにＳＲＡＭ１５４にキャッシュされ、ＡＩモデルの後続の反復において使用される。１つの実装において、ＳＲＡＭ１５４にキャッシュされたデータは、ＡＩモデルが実施されている間に、コンスタントに、周期的に、又は断続的に上書きされ、必要に応じて置換される。
【００６８】
８０８にて、ＡＩエンジン１３１は、ＳＲＡＭ１５４からキャッシュされたデータを読み出して、ＡＩモデルの実施を継続するように構成されている。具体的には、ＡＩハードウェア１５３は、ＡＩ関連タスクを支援するように構成されているが、一般的に、これらのＡＩ操作は、完全にハードウェア自動化されておらず、より複雑なタスクのために何らかのＣＰＵ支援を依然として要求する。ストレージコントローラ１３３のＣＰＵ１３３は、全て又は実質的に全てのＡＩ関連タスク１６１を、処理のために、ストレージコントローラ１３０に対してローカルである専用ＣＰＵ１３２に割り当てるように構成されている。
【００６９】
生成されたメタデータは、８１０にてローカルメモリＤＲＡＭ１２５に任意に保存され、又は、８１２にてＮＡＮＤフラッシュに直接、例えば、ＮＡＮＤベースキャッシュ内に保存される。例えば、新たに生成されたメタデータは、ＤＲＡＭ１２５において、ＡＩモデルを改定するために更新された訓練データとして用いることができるＡＩモデル用のパラメータと共に保存される。８１２にて、データコンテンツ及びデータコンテンツを記述するメタデータは、データバス７０３及び７０５を介して、保存のためにＮＡＮＤフラッシュメモリ１１９ａ〜ｄに送信される。
【００７０】
いくつかの実装において、８０８におけるＡＩ操作は、８０２、８０４、８１０、及び８１２における保存操作と同時に実行される。例えば、ＡＩエンジン１３１においてメタデータが生成されている間に、ホストシステム１１０からストレージコントローラ１３０に新たなデータを続けて送信することができる。専用ＣＰＵ１３２を伴う場合、ＣＰＵ１３３は、ＡＩ操作１６１を専用ＣＰＵ１３２にオフロードしている間に、例えば、ＡＩエンジン１３１においてＡＩブロックレジスタをプログラム、ＡＩ割り込みを処理等している間に、保存操作（例えば、８０２、８０４、８１０、及び８１２）を管理するように構成されている。したがって、ＡＩ関連タスクは、ＳＳＤ関連タスクを実行する場合のストレージコントローラＣＰＵ１３３の動作を阻害せず、ＣＰＵ１３３の作業負荷を実効的に増大させない。
【００７１】
図１〜図８に関して議論された様々な実施形態は、限定されないが、集積回路、特定用途向け集積回路（ＡＳＩＣ）等のような１つ又は複数の電子回路の電子コンポーネントによって実装される。本開示を通して議論された様々なコンポーネント、例えば、限定されないが、ＣＰＵ１３３、ＡＩエンジン１３１、ホストインタフェース１３６等は、電子回路コンポーネントのセットを含み、１つ又は複数の電子回路上で通信可能に動作するように構成されている。
【００７２】
本開示の様々な実施形態が本明細書において示され、説明されてきたが、そのような実施形態は、例としてのみ提供されている。本明細書において説明される実施形態に関連する多数の変形、変更及び置換が、本開示から逸脱することなく適用可能である。本明細書において説明される本開示の実施形態に対する様々な代替形態を、本開示の実施に際して用いることができることに留意されたい。以下の請求項が本開示の範囲を定めることと、これらの請求項の範囲内の方法及び構造並びにそれらの均等物が当該請求項により包含されることとが意図されている。
【００７３】
本明細書の主題が特定の態様に関して説明されてきたが、他の態様も実装され得、以下の請求項の範囲内にある。例えば、請求項に列挙する動作は、異なる順序で実行されても所望の結果を実現することができる。特定の実装において、マルチタスキング及び並行処理が有利であり得る。他の変形例が、以下の請求項の範囲内にある。
【図１】
2021533447.tif 000003
【図２】
2021533447.tif 000004
【図３】
2021533447.tif 000005
【図４】
2021533447.tif 000006
【図５】
2021533447.tif 000007
【図６】
2021533447.tif 000008
【図７】
2021533447.tif 000009
【図８】
2021533447.tif 000010
【国際調査報告】
2021533447.tif 000011
2021533447.tif 000012
2021533447.tif 000013