(57)【要約】本開示は、ハイブリッドメモリシステムインタフェースに関連する装置及び方法を含む。例示的なコンピューティングシステムは、処理リソースと、ハイブリッドインタフェースを介して処理リソースに結合されたストレージシステムとを備える。ハイブリッドインタフェースは、ブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートするストレージシステムへのＩ／Ｏアクセスパスを提供することができる。
2021536643.tif 000002
【特許請求の範囲】
【請求項１】
処理リソースと、
ハイブリッドインタフェースを介して前記処理リソースに結合されたストレージシステムと、
を備える、メモリ操作用のコンピューティングシステムであって、
前記ハイブリッドインタフェースは、ブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートする前記ストレージシステムへのＩ／Ｏアクセスパスを提供する、
前記コンピューティングシステム。
【請求項２】
前記ハイブリッドインタフェースは、
前記ブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成された第１の部分と、
前記サブブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成された第２の部分であって、直接アクセス可能なファイルシステム部分である前記第２の部分と、
を含むファイルシステムを備える、請求項１に記載のコンピューティングシステム。
【請求項３】
前記ストレージシステムは、
第１のタイプの不揮発性メモリリソースと、
第２のタイプの不揮発性メモリリソースと、
を備えるハイブリッドメモリストレージシステムであり、
前記第１のタイプ及び前記第２のタイプの不揮発性メモリリソースのうちの１つのみが、サブブロックレベルのストレージＩ／Ｏアクセス要求をサポートする、
請求項１に記載のコンピューティングシステム。
【請求項４】
ブロックレベルのストレージＩ／Ｏ要求は、ホストキャッシュラインサイズより大きいサイズを有するストレージＩ／Ｏ要求に対応し、サブブロックレベルのストレージＩ／Ｏ要求は、前記ホストキャッシュラインサイズ以下のサイズを有するストレージＩ／Ｏ要求に対応する、請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項５】
前記ハイブリッドインタフェースは、アプリケーションの実行に関連して生成されたサブブロックサイズのデータ要求に応答して、前記サブブロックサイズのデータ要求が前記ストレージシステムとの間で転送するためにブロックサイズのデータ要求に集約されるのを防ぐように構成される、請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項６】
前記ハイブリッドインタフェースは、いくつかのアプリケーションの実行に関連して生成された複数のサブブロックサイズのデータ要求の受信に応答して、それぞれのサブブロックサイズのデータ要求が前記ストレージシステムとの間で転送するために集約されることなく処理されるように、それぞれの複数の別個のサブブロックサイズのストレージＩ／Ｏアクセス要求を生成するように構成される、請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項７】
前記ストレージシステムは、複数のサブブロックサイズのデータベースファイルを記憶するメモリリソースを備え、前記ハイブリッドインタフェースは、前記処理リソースによって同時に実行されているプロセスによって、前記複数のサブブロックサイズのデータベースファイルへの同時アクセスを提供するように構成される、請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項８】
前記コンピューティングシステムは、モバイルシステムであり、
前記ストレージシステムは、各アプリケーションを開始することに関連して、前記処理リソースによって実行可能な命令セットを記憶するように構成され、且つ、
前記ハイブリッドインタフェースは、特定のアプリケーションを開始する要求に応答して、前記記憶された命令セットを前記モバイルシステムのメインメモリに転送することなく、前記要求に対応する前記記憶された命令セットへの前記処理リソースによる直接アクセスを提供するように構成される、
請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項９】
周辺Ｉ／Ｏデバイスと、
メインメモリと、
をさらに備え、
前記周辺Ｉ／Ｏデバイス及び前記メインメモリは、バスを介して前記処理リソース及び前記ストレージシステムに結合され、且つ、
前記ハイブリッドインタフェースは、前記周辺Ｉ／Ｏデバイスからのデータが、最初に前記周辺Ｉ／Ｏデバイスから前記メインメモリに転送されることなく、前記ストレージシステムのメモリリソースに直接記憶されることを可能にするように構成される、
請求項１〜３のいずれか一項に記載のコンピューティングシステム。
【請求項１０】
メモリ操作用のコンピューティングシステムであって、
ストレージシステムであって、
ブロックレベルのアクセス可能性を有する第１のメモリリソースと、
サブブロックレベルのアクセス可能性を有する第２のメモリリソースと、
を備える前記ストレージシステムと、
ブロックレベルとサブブロックレベルの両方のストレージ入力／出力（Ｉ／Ｏ）アクセス要求を管理するように構成されたハイブリッドインタフェースと、
前記ハイブリッドインタフェースを介して前記ストレージシステムに結合された処理リソースであって、
サブブロックサイズのデータ要求の受信に応答して、前記ハイブリッドインタフェースを介して前記第２のメモリリソースに直接アクセスし、且つ、
前記サブブロックサイズのデータ要求に関連付けられた命令セットを、前記第２のメモリリソースから直接実行する
ように構成された前記処理リソースと、
を備える、前記コンピューティングシステム。
【請求項１１】
前記ストレージシステム及び前記処理リソースにバスを介して結合されたメインメモリをさらに備え、前記処理リソースは中央処理装置（ＣＰＵ）であり、前記処理リソースは、前記命令セットを最初に前記メインメモリに転送せずに、前記第２のメモリリソースから前記命令セットを実行するように構成される、請求項１０に記載のコンピューティングシステム。
【請求項１２】
前記処理リソースは、前記ストレージシステムがバスを介して結合された周辺Ｉ／Ｏデバイスのプロセッサである、請求項１０に記載のコンピューティングシステム。
【請求項１３】
前記コンピューティングシステムは、モバイルシステムであり、前記命令セットは、前記ＣＰＵにモバイルアプリケーションを起動させる、請求項１０〜１２のいずれか一項に記載のコンピューティングシステム。
【請求項１４】
前記ブロックレベルのアクセス可能性を有する前記第１のメモリリソースは、ＮＡＮＤフラッシュメモリリソースである、請求項１０〜１２のいずれか一項に記載のコンピューティングシステム。
【請求項１５】
バイトレベルのアクセス可能性を有する前記第２のメモリリソースは、新たな不揮発性メモリリソースを含む、請求項１０〜１２のいずれか一項に記載のコンピューティングシステム。
【請求項１６】
処理リソースを介して、ストレージシステムに対して特定のサイズを有するデータ要求をもたらす命令セットを実行することであって、前記ストレージシステムは、ブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートする前記ストレージシステムへのＩ／Ｏアクセスパスを提供するハイブリッドインタフェースを介して前記処理リソースに結合される、前記命令セットを実行することと、
前記データ要求に対応するデータの前記ストレージシステムへのＩ／Ｏ転送を実行する前に、前記データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応するか、またはサブブロックレベルのストレージＩ／Ｏアクセス要求に対応するかを判断することと、
前記データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、サイズがブロックサイズ未満のデータ要求を集約することに関連付けられた第１のファイルシステム部分を介して前記データ要求を管理することと、
前記データ要求がサブブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、サイズがブロックサイズ未満のデータ要求を集約することを防ぐことに関連付けられた第２のファイルシステム部分を介して前記データ要求を管理することと、
を含む、コンピューティングシステムを操作する方法。
【請求項１７】
前記第２のファイルシステム部分によって管理される前記データは、データベース管理システム（ＤＢＭＳ）に関連するデータを含む、請求項１６に記載の方法。
【請求項１８】
前記コンピューティングシステムはモバイルシステムであり、前記方法は、
前記命令セットを実行する前に、前記処理リソースによって、前記命令セットを記憶する前記ストレージシステムのメモリリソースに直接アクセスすることと、
前記記憶された命令セットを前記モバイルシステムのメインメモリに転送することなく、前記メモリリソースから直接、前記命令セットを実行することと、
をさらに含む、請求項１６に記載の方法。
【請求項１９】
前記ストレージシステムは、複数のサブブロックサイズのデータベースファイルを記憶するメモリリソースを備え、
前記方法は、前記処理リソースによって同時に実行されているプロセスによって、前記複数のサブブロックサイズのデータベースファイルへの同時アクセスを提供することをさらに含む、
請求項１６に記載の方法。
【請求項２０】
前記コンピューティングシステムは、周辺入力／出力（Ｉ／Ｏ）デバイスとメインメモリとをさらに備えるモバイルシステムであり、
前記方法は、前記周辺（Ｉ／Ｏ）デバイスからのサブブロックサイズのデータを、最初に前記周辺Ｉ／Ｏデバイスから前記メインメモリに転送することなく、サブブロックレベルのアクセス可能性を有する前記ストレージシステムのメモリリソースに直接、記憶できるようにすることによって、ダイレクトメモリアクセス（ＤＭＡ）を実行することをさらに含む、
請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般的に、半導体メモリ及び方法に関し、より詳細には、ハイブリッドメモリシステムインタフェースに関連する装置及び方法に関する。
【背景技術】
【０００２】
ストレージシステム等のメモリシステムは、コンピュータ、携帯電話、ハンドヘルド電子デバイスなどの電子システムに実装されてよい。ソリッドステートドライブ（ＳＳＤ）、組み込みマルチメディアコントローラ（ｅＭＭＣ）デバイス、ユニバーサルフラッシュストレージ（ＵＦＳ）デバイスなどの様々な電子デバイスは、いくつかの処理リソース（例えば、ホストプロセッサ、周辺装置のプロセッサ等）によってアクセス可能なデータを記憶するための不揮発性ストレージコンポーネントを含み得る。不揮発性ストレージコンポーネントは、電源が入っていないときに記憶されたデータを保持することで永続的なデータを提供し、種々のメモリの中でも特に、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み込み専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、並びに、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗性ランダムアクセスメモリ（ＲＲＡＭ）、強誘電性ランダムアクセスメモリ（ＦｅＲＡＭ）、磁気抵抗性ランダムアクセスメモリ（ＭＲＡＭ）、プログラム可能な導電性メモリなどの抵抗変化型メモリを含み得る。メモリシステムは、データを維持するために電力を必要とする揮発性ストレージコンポーネントも含み得る。揮発性メモリコンポーネントは、メインシステムメモリ及び／または一時ストレージに使用されることが多い。揮発性メモリの例には、特に、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、及び、サイリスタランダムアクセスメモリ（ＴＲＡＭ）が含まれる。
【図面の簡単な説明】
【０００３】
【図１】本開示のいくつかの実施形態による、メインメモリを含むホストとメモリシステムとを含むコンピューティングシステムの形の装置のブロック図である。
【図２】一部のアプローチによる、装置のブロック図である。
【図３】本開示のいくつかの実施形態による、コンピューティングシステムの一部を表すシステム／アプリケーションレベルのブロック図である。
【図４】本開示のいくつかの実施形態による、中央処理装置（ＣＰＵ）を含むコンピューティングシステムの一部の概略図である。
【図５】本開示のいくつかの実施形態による、コンピューティングシステムを操作するための方法の例を示す例示的な流れ図である。
【発明を実施するための形態】
【０００４】
本開示は、ハイブリッドメモリシステムインタフェースに関連する装置及び方法を含む。例示的なコンピューティングシステムは、処理リソースと、ハイブリッドインタフェースを介して処理リソースに結合されたストレージシステムとを備える。ハイブリッドインタフェースは、ブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートするストレージシステムへのＩ／Ｏアクセスパスを提供することができる。
【０００５】
パーソナルコンピュータ、ラップトップ、タブレット、ファブレット、スマートフォン、モノのインターネット（ＩｏＴ）対応デバイスなどのコンピューティングシステムは、コンピューティングシステムと関連付けられたデータ及び／または命令を記憶する１つまたは複数のメモリリソースを備えてよい。本明細書で使用される場合、「ＩｏＴ対応デバイス」は、物理デバイス、車両、家庭用電気製品、並びに電子機器、ソフトウェア、センサ、アクチュエータ、及び／またはそのような物体が接続し、データを交換することを可能にするネットワーク接続と共に組み込まれた他のデバイスを含む。ＩｏＴ対応デバイスの例には、サイバーフィジカルシステムの中でも特に、ウェアラブルテクノロジー、スマートホームデバイス、インテリジェントショッピングシステム、及び、監視デバイスが含まれる。さらに、コンピューティングシステムは、コンピューティングシステム上で実行するアプリケーションに共通サービスを提供するオペレーティングシステムなどのシステムソフトウェアを実行する１つまたは複数の処理リソースを含んでよい。オペレーティングシステムの例は、Ａｎｄｒｏｉｄ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）などを含む。
【０００６】
演算の間、コンピューティングシステムの中央処理装置（ＣＰＵ）等のプロセッサは、ファームウェア、コンピュータコード、メタコード、データベースファイルなどの命令を実行して、コンピューティングシステムに機能を提供してよい。命令を実行するために、命令に関連するいくつかのデータ要求と、いくつかのデータ要求に関連するデータ及び／または命令とは、いくつかのそれぞれのアクセス操作を実行することによって、ストレージシステムからアクセスされてよい。一部のアプローチでは、ＣＰＵとストレージシステムの間のＩ／Ｏバスは、特定のサイズのみであってよく、ＣＰＵにローカルのメモリ（例えば、コンピューティングシステムのメインメモリの内部及び／または外部のキャッシュなど）は、仲介デバイスとして働いてよく、この場合、Ｉ／Ｏバスのサイズ要件を満たすために、いくつかのデータ要求のサイズが修正されてよい。例えば、特定のサイズよりも小さいサイズを有するいくつかのデータ要求は、メインメモリで集約されてよい。次に、Ｉ／Ｏアクセス要求（例えば、特定のサイズに等しいサイズを有する要求）が、集約されたデータ要求に基づいて生成され、特定のサイズのＩ／Ｏバスを介してストレージシステムに転送されてよい。したがって、様々なサイズの要求、または要求に関連するデータ及び／または命令をサポートする柔軟性の欠如は、コンピューティングシステムのリソースを消費する場合がある。
【０００７】
一方、本明細書の本開示のいくつかの実施形態は、ハイブリッドメモリシステムインタフェースを利用することによって、命令の実行に関連して消費されるリソースの量を減らし得る。例えば、サブブロックレベルのストレージＩ／Ｏ要求などの要求に関連するデータ及び／または命令は、データ及び／または命令を記憶するストレージシステムから、処理リソース（例えば、ＣＰＵ）によって直接アクセスされてよい。したがって、一部の実施形態では、いくつかの実施形態によるメインメモリは、必ずしも仲介デバイスとして利用されない場合があり、これによって、メインメモリを介したデータ及び／または命令の転送に関連するレイテンシを短縮することができる。
【０００８】
本開示の以下の詳細な説明では、本開示の一部を形成し、本開示の１つまたは複数の実施形態をどのように実施し得るかを例示として示す添付図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実施することが可能となるように十分詳細に説明されており、本開示の範囲から逸脱することなく、他の実施形態が利用されてよいこと、また、プロセスの変更、電気的変更及び／または構造的変更がなされてよいことが理解されよう。本明細書で使用される場合、特に、図面の参照符号に関する「Ｎ」等の指定子は、そのように指定されたいくつかの特定の特徴を含むことができることを示す。本明細書で使用される場合、「いくつかの」特定のものは、そのようなものの１つまたは複数を指す（例えば、いくつかのメモリアレイは、１つまたは複数のメモリアレイを指すことができる）。「複数の」は、そのようなものの複数を指すことを意図している。
【０００９】
本明細書中の図は、最初の数字（単数または複数）が図面の図番に対応し、残りの数字が図面の要素またはコンポーネントを識別するという番号付けの慣習に従う。異なる図における類似の要素またはコンポーネントは、類似の数字を使用することによって識別されてよい。例えば、１０４は、図１における要素「０４」を参照してよく、類似の要素は、図３において３０４として参照されてよい。認識されるように、本明細書における様々な実施形態において示される要素は、本開示のいくつかの追加の実施形態を提供するように追加、交換、及び／または除去することができる。さらに、認識されるように、図において提供される要素の比率及び相対的大きさは、本発明の特定の実施形態を示すことを意図しており、制限的に取らえられるべきではない。
【００１０】
図１は、本開示のいくつかの実施形態による、メインメモリ１０９を含むホスト１０２と、ストレージシステム１０４とを備えるコンピューティングシステム１００の形の装置のブロック図である。本明細書で使用される場合、ホスト１０２及び／またはストレージシステム１０４は、別個に「装置」と見なされてもよい。
【００１１】
コンピューティングシステム１００（例えば、モバイルシステム）は、モバイルデバイスなどのコンピューティングデバイスであってよい。本明細書で使用される場合、「モバイルデバイス」は、携帯可能であり、携帯用電源を利用し、手で保持及び操作するために十分に小さいデバイスを指す。しかしながら、実施形態はそのようなものに限定されない。一例として、ホスト１０２は、様々なタイプのホストの中でも特に、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、スマートフォン、メモリカードリーダ、ＩｏＴ対応デバイスを含み得る。
【００１２】
システム１００は、本明細書において示されるように、１つまたは複数のメモリリソースを含むストレージシステム１０４にＩ／Ｏアクセスパスを介して結合された（例えば、接続された）ホスト１０２を含む。システム１００は、別個の集積回路を含むことができる、またはホスト１０２及びメモリシステム１０４の両方が、同一の集積回路上にあってよい。システム１００は、例えば、サーバシステム及び／または高性能コンピューティング（ＨＰＣ）システム、及び／またはこれらの一部であってよい。
【００１３】
ホスト１０２は、システムマザーボード及び／またはバックプレーンを含むことができ、処理リソース１０３など、いくつかの処理リソース（例えば、１つまたは複数のプロセッサ、マイクロプロセッサ、または何らかの他のタイプの制御回路）を含むことができる。処理リソース１０３は、命令の実行に関連して生成され得るデータ要求の受信に応答して、メモリリソース１０８−１，・・・，１０８−Ｎに記憶されたデータ及び／または命令にアクセスしてよい。例えば、アプリケーションを開始する要求の受信に応答して、処理リソース１０３は、アプリケーションの起動に関連する命令を読み出すために、メモリリソース１０８−１，・・・，１０８−Ｎにアクセスしてよい。例えば、処理リソース１０３は、命令の実行に関連するデータを読み出すために、メモリリソース１０８−１，・・・，１０８−Ｎにアクセスしてよい。本明細書でさらに説明するように、Ｉ／Ｏアクセスパス１７３を提供するハイブリッドインタフェース（図示せず）は、データ要求のサイズに基づいて、様々なタイプのストレージＩ／Ｏアクセス要求に対応し得る。
【００１４】
ホスト１０２は、処理リソース１０３にローカルなデータを記憶するハードウェア及び／またはソフトウェアデバイスを含み得るキャッシュ１０１（例えば、ＣＰＵキャッシュ）を備える。ストレージシステム１０４から読み出されたデータ及び／または命令セット（例えば、処理リソース１０３によって実行可能な命令セット）は、キャッシュ１０１にコピーすることができ、それによって、処理リソース１０３は、データ及び／または命令セットにキャッシュ１０１からアクセスすることができる。
【００１５】
ホスト１０２は、メモリ管理ユニット１０５を備える。メモリ管理ユニット１０５は、仮想メモリアドレスと物理メモリアドレスの間の変換を実行するハードウェアコンポーネントであってよい。メモリ管理ユニット１０５は、データ要求のサイズが一致することを要求され得るプラットフォームメモリ管理モデルをさらに規定することができる。いくつかの実施形態では、メモリ管理ユニット１０５は、ブロックサイズ及びサブブロックサイズのデータ要求の両方が互いに変換されることなく（例えば、サブブロックサイズのデータ要求がブロックサイズのデータ要求に集約されずに）処理され得るように、プラットフォームメモリ管理モデルを柔軟に規定することができる。
【００１６】
ホスト１０２は、メインメモリ１０９を備える。いくつかの実施形態では、メインメモリ１０９は、コンピューティングシステム１００の演算と関連するデータの１つまたは複数のページを記憶するために使用され得る、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリであってよい。実施形態は、揮発性メモリに限定されないが、メインメモリは、揮発性メモリに加えてまたはその代わりに、不揮発性メモリを含んでよい。
【００１７】
図１に示すように、ストレージシステム１０４は、コントローラ１０６及びメモリリソース１０８−１，・・・，１０８−Ｎを備えることができる。本明細書で使用される場合、ホスト１０２、ストレージシステム１０４、コントローラ１０６、及び／またはメモリリソース１０８−１，・・・，１０８−Ｎは、別個に「装置」と見なされてもよい。
【００１８】
コントローラ１０６は、状態機械、シーケンサ、または何らかの他のタイプのコントローラであってよく、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイなどの形式のハードウェア及び／またはファームウェア（例えば、マイクロコード命令）を含むことができる。コントローラ１０６は、例えば、コンピューティングシステム１００の演算を促進するように実行される命令のアクセスパターンを制御することができる。
【００１９】
図１に示すように、コントローラ１０６は、それぞれの通信チャネル１０７−１，・・・，１０７−Ｎを介して、メモリリソース１０８−１，・・・，１０８−Ｎに通信可能に結合される。通信チャネル１０７−１，・・・，１０７−Ｎは、要求、データ及び／または命令がコントローラ１０６とメモリリソース１０８−１，・・・，１０８−Ｎの間で転送されることを可能にし得る。
【００２０】
図１に示すように、ストレージシステム１０４は、コントローラ１０６に結合された１つまたは複数のメモリリソース１０８−１，・・・，１０８−Ｎを備えてよい。一部の実施形態では、ストレージシステム１０４は、ハイブリッドストレージシステムであってよく、メモリリソース１０８−１，・・・，１０８−Ｎは、異なる種類のメモリリソースであってよい。例えば、メモリリソース１０８−１は、３Ｄ  Ｘｐｏｉｎｔメモリリソース、強誘電体ＲＡＭ（ＦｅＲＡＭ）などの新たな不揮発性メモリリソースであってよく、メモリリソース１０８−Ｎは、ＮＡＮＤメモリリソースであってよい。実施形態は、これらの特定の例に限定されず、メモリリソース１０８−１，・・・，１０８−Ｎは、新たな不揮発性メモリリソースなど、同じ種類のメモリリソースであってよい。
【００２１】
異なる種類のメモリリソース１０８−１，・・・，１０８−Ｎは、様々な特性を示すストレージＩ／Ｏアクセス要求をサポート（例えば、実行するために利用）することができる。例えば、様々な特性は、特定のストレージＩ／Ｏ要求の実行の頻度、要求のサイズ、要求の実行が消費するリソース（例えば、メモリリソース及び／または処理リソース）の量、要求が実行され得る速度、または他の適切な特性を含み得る。さらに、異なる種類のメモリリソース１０８−１，・・・，１０８−Ｎは、本明細書に記載するように、様々なサイズを有するストレージＩ／Ｏアクセス要求をサポートすることができる。例えば、ＮＡＮＤフラッシュリソースなどの一部のメモリリソースは、ブロックレベルのストレージＩ／Ｏ要求のみをサポートしてよく、他のメモリリソースはサブブロックレベルのストレージＩ／Ｏ要求をサポートしてよい。
【００２２】
ホスト１０２は、ストレージシステム１０４へのＩ／Ｏアクセスパス１７３を提供するハイブリッドインタフェース（図示せず）を介してストレージシステム１０４に通信可能に結合することができる。Ｉ／Ｏアクセスパス１７３は、ブロックレベルのストレージＩ／Ｏアクセス要求とサブブロックレベルのストレージＩ／Ｏ要求の両方をサポートすることができる。様々な実施形態において、ブロックレベルのストレージＩ／Ｏ要求は、ホストキャッシュラインサイズより大きいサイズ（例えば、４キロバイト）を有するストレージＩ／Ｏ要求を指してよく、サブブロックレベルのストレージＩ／Ｏ要求は、ホストキャッシュラインサイズ以下のサイズ（例えば、３２、６４、及び／または１２８バイト）を有するストレージＩ／Ｏ要求を指してよい。
【００２３】
Ｉ／Ｏアクセスパス１７３は、ブロックレベル及びサブブロックレベルの両方のＩ／Ｏアクセス要求をサポートできるので、ハイブリッドインタフェースは、（例えば、アプリケーションの実行に関連して生成された）データ要求のサイズに基づいて様々なタイプのストレージＩ／Ｏアクセス要求を生成し得る。例えば、ハイブリッドインタフェースは、受信したデータ要求がブロックサイズのデータ要求である場合に、ブロックレベルのストレージＩ／Ｏアクセス要求を生成してよい。例えば、ハイブリッドインタフェースは、受信したデータ要求がサブブロックサイズのデータ要求である場合に、サブブロックレベルのストレージＩ／Ｏアクセス要求を生成してよい。したがって、複数のサブブロックサイズのデータ要求は、ストレージシステム１０４との間の転送のために集約されることなく、複数の別個のサブブロックレベルのストレージＩ／Ｏアクセス要求を介して処理することができる。言い換えると、ハイブリッドインタフェースは、複数のサブブロックサイズのデータ要求が、ストレージシステム１０４との間で転送するためにブロックサイズのデータ要求に集約されるのを防ぐように構成されてよい。
【００２４】
複数のサブブロックサイズのデータ要求が、転送のために集約されることなく処理することができることにより、サブブロックサイズのデータ要求のために、処理リソース１０３がメモリリソース１０８−１，・・・，１０８−Ｎに直接アクセスすることが可能になる。例えば、データ要求がサブブロックサイズのデータ要求である場合、ハイブリッドインタフェースは、処理リソース１０３に、サブブロックレベルのアクセス可能性を有する（例えば、データ要求に関連するデータ及び／または命令セットを記憶する）メモリリソース１０８−１，・・・，１０８−Ｎの特定の１つへの直接アクセスを提供することができる。本明細書で使用する場合、ブロックレベルのストレージＩ／Ｏアクセス要求をサポートするメモリリソースは、ブロックレベルのアクセス可能性を有するメモリリソースと呼ぶことができ、サブブロックレベルのストレージＩ／Ｏアクセス要求をサポートするメモリリソースは、サブブロックレベルのアクセス可能性を有するメモリリソースと呼ぶことができる。例えば、新たな不揮発性メモリリソースなどの第１のタイプのメモリリソース１０８−１，・・・，１０８−Ｎは、サブブロックレベルのアクセス要求をサポートでき、ＮＡＮＤなどの第２のタイプのメモリリソース１０８−１，・・・，１０８−Ｎは、ブロックレベルのアクセス要求をサポートできるが、サブブロックレベルのアクセス要求をサポートしない場合がある。実施形態はそのように限定されないが、第１のタイプ及び第２のタイプの不揮発性メモリリソースのうちの１つだけが、サブブロックレベルのストレージＩ／Ｏアクセス要求をサポートしてよい。サブブロックレベルのアクセス可能性を有するメモリリソース１０８−１，・・・，１０８−Ｎの一部は、ブロックレベルのアクセス可能性を有するメモリリソース１０８−１，・・・，１０８−Ｎの他の部分よりもアクセス時間が短い及び／または耐久性が高い場合がある。
【００２５】
メインメモリ（例えば、１０９）を仲介として使用せずに、ストレージシステム１０４のメモリリソース１０８への直接アクセスを可能にすることは、様々な方法で利用することができる。多くの場合、ホスト１０２とストレージシステム１０４の間で要求、データ、及び／または命令を通信する際に、メインメモリ１０９は、要求、データ、及び／または命令が転送される仲介デバイスとして機能し得る。一例として、ストレージシステム１０４に記憶されたデータ及び／または命令の読み込み操作を実行することは、処理リソース１０３がデータ及び／または命令セットにメインメモリ１０９からアクセスできるように、データ及び／または命令セットをメインメモリ１０９にコピーすることを伴ってよい。
【００２６】
しかしながら、いくつかの実施形態によるハイブリッドインタフェースは、ストレージシステム１０４への直接アクセスを提供することができる。一例として、ハイブリッドインタフェースは、（例えば、サブブロックレベルのＩ／Ｏアクセス要求もサポートするＩ／Ｏアクセスパスを備えることによって）複数のサブブロックサイズのデータ要求をブロックサイズの要求に集約する必要性を排除することができ、したがって、ストレージＩ／Ｏアクセス要求、データ、及び／または命令セットはまた、メインメモリ１０９を介して転送することなく、処理リソース１０３とメモリリソース１０８−１，・・・，１０８−Ｎとの間で直接通信されてよい。したがって、メインメモリ１０９のリソースは、他の操作のために保存され得る。いくつかの実施形態では、直接アクセス要求のサイズは、例えば、ＣＰＵキャッシュラインサイズ以下の要求に制限されてよいが、実施形態はそのように限定されない。サブブロックサイズのデータ要求に関連する直接アクセスを有効にする方法のさらなる詳細は、図３、図４及び図５に関連して説明する。
【００２７】
図２は、一部のアプローチによるコンピューティングシステム２１０の一部を表すシステム／アプリケーションレベルのブロック図である。コンピューティングシステム２１０の一部は、コンピューティングシステムの操作を担当するユーザ空間２１２及びシステム空間２１４（例えば、カーネル空間）などのソフトウェアスタックと、ストレージシステム２３２を含むハードウェア部分とを含み得る。
【００２８】
ユーザ空間２１２及びシステム空間２１４は、オペレーティングシステムの一部であってよい。例えば、ユーザ空間２１２及びシステム空間２１４のオペレーティングシステムは、それぞれ、アンドロイド（登録商標）ユーザ及びそれに関連付けられたＬｉｎｕｘ（登録商標）カーネルのオペレーティングシステムを表してよい。そのような実施形態では、コンピューティングシステム２１０の一部は、「ソフトウェアストレージスタック」と見なされてよい（例えば、コンピューティングシステム２１０の一部は、オペレーティングシステムのソフトウェアベースのカーネルの実装を表してよい）。
【００２９】
ストレージシステム２３２内の（例えば、ファイルとして編成される）データ／命令にアクセスするための操作（例えば、読み込み及び／または書き込み）を実行するためのコマンド（例えば、要求）は、ユーザ空間２１２のアプリケーション２１６に関連する命令の実行の一部としてライブラリコンポーネント２１８に発行されてよい。ユーザ空間２１２（例えば、ユーザ空間２１２のアプリケーション２１６）から発行可能なコマンドは、例えば、ストレージシステム２３２上で、それぞれ、読み込み操作及び書き込み操作を実行するためのｆｒｅａｄ（）及び／またはｆｗｒｉｔｅ（）を含んでよい。
【００３０】
ユーザ空間２１２のライブラリコンポーネント２１８は、コマンドをカーネル空間２１４にルーティングするためにユーザ空間２１２によって利用できるいくつかの命令を記憶してよい。例えば、ユーザ空間２１２は、アプリケーション２１６の実行に関連するコマンドに対応する命令（例えば、Ｃベースの命令）を探してよく、ライブラリコンポーネント２１８から読み出された命令をカーネル空間（例えば、ページキャッシュ２２４）にルーティングしてよい。読み出された命令は、元のバイトレベル（例えば、サブブロックレベル）コマンドを４ｋＢコマンドなどのブロックレベル（例えば、ブロックレベル）コマンドに変換してよい。ライブラリコンポーネント２１８は、少なくともＣベースの言語を含む様々な言語での命令を含む標準関数のライブラリであってよい。
【００３１】
書き込み及び／または読み込みコマンドに加えて、ライブラリコンポーネントはまた、例えば、ページキャッシュ２２４に対して他のコマンドを発行してよい。他のコマンドは、ファイルを特定のメモリ位置にマップするマッピングコマンド（例えば、ｍｍａｐ）と、ファイルをメモリ位置に割り当てる及び／またはファイルが割り当てられるメモリ位置にポインタを返す割り当てコマンド（例えば、ｍａｌｌｏｃ）とを含み得る。
【００３２】
仮想ファイルシステムコンポーネント２２０は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含んでよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上でファイルシステムコンポーネント２２２の上に抽象化層を設けるように最終的に命令が実行されてよい。例えば、仮想ファイルシステムコンポーネント２２０は、ローカルストレージデバイス及び／またはネットワークストレージデバイスにアクセスするように実行され得る命令を含んでよい。一部の実施形態では、仮想ファイルシステム２２０は、透過的に（例えば、クライアントアプリケーション対話なしに）ローカルストレージデバイス及び／またはネットワークストレージデバイスにアクセスするように実行され得る命令を含んでよい。仮想ファイルシステムコンポーネント２２０と関連付けられた命令は、カーネル空間とファイルシステムコンポーネント２２２の間のインタフェースを指定してよい。
【００３３】
ファイルシステムコンポーネント２２２は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含んでよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上で、コンピューティングシステム２１０と関連付けられたデータがどのように記憶及び／または取り出されるかを制御するように最終的に命令が実行されてよい。例えば、ファイルシステムコンポーネント２２２は、ストレージシステム１０４からデータを記憶及び／または読み出すように実行可能な命令を含んでよい。
【００３４】
デバイスマッパーコンポーネント２２６は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含んでよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上で物理ブロックデバイスをより高位の仮想ブロックデバイスにマップするように最終的に命令が実行されてよい。デバイスマッパーコンポーネント２２６は、論理ボリューム管理（ＬＶＭ）、ソフトウェアＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）、及び／またはｄｍ−ｃｒｙｐｔディスク暗号化（例えば、カーネル空間２１４における透過ディスク暗号化サブシステム）の基盤を形成し、ファイルシステムスナップショットなどの追加機能を提供する。
【００３５】
ページキャッシュコンポーネント２２４は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含んでよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上で、仮想ファイルシステムコンポーネント２２０からルーティングされたコマンドをバッファリングするように最終的に命令が実行されてよい。ページキャッシュコンポーネント２２４は、「ディスクキャッシュ」と呼ばれてよく、ストレージシステム（例えば、図１に示されるストレージシステム１０４）に置かれ、特定のストレージシステムメモリリソース（例えば、メモリリソース１０８−１〜１０８−Ｎ）へのアクセス要求に関連付けられてよい。
【００３６】
いくつかのデバイスのうちの１つ（例えば、コンピューティングシステム２１０のストレージシステム２３２）に記憶されたデータが修正される場合、コンピューティングシステム２１０は最初に、ページキャッシュコンポーネント２２３内のページのキャッシュバージョンを修正し、ページを「ダーティ」ページとしてマークしてよい。後の時点で、「ダーティ」ページの新しいコンテンツをページキャッシュからドライバコンポーネント２３０にコピーして、同じページが短期間に２回更新された場合にストレージデバイス２３２で必要とされる書き込み操作の回数を減らすことができる。
【００３７】
コマンドはページキャッシュコンポーネント２２４でバッファリングされるが、バッファリングされたコマンドは、メモリ管理ユニット（ＭＭＵ）によって規定されるプラットフォームメモリ管理モデルに一致するように、より大きなサイズを有する個々のコマンドを形成するために（例えば、サブブロックレベルからブロックレベルに）集約されてよい。メモリ管理ユニット（ＭＭＵ）は、仮想メモリアドレスと物理メモリアドレスの間の変換を実行するハードウェアコンポーネントである。
【００３８】
ブロック層２２８は、処理リソース（例えば、ホストに関連付けられた処理リソース）によって実行可能な命令を記憶してよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上で、ページキャッシュコンポーネント２２４からルーティングされるコマンドを編成及びスケジュールし、ストレージシステム２３２に（例えば、ドライバコンポーネント２３０を介して）さらにルーティングするように最終的に命令が実行されてよい。ブロック層２２８は、ストレージシステム２３２に、ルーティングされたコマンドを最終的に再順序付け、再優先順位付け、及び／またはマージするためにバッファリングされたアクセスを提供してよい。
【００３９】
ドライバコンポーネント２３０は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含んでよい、及び／またはハードウェアリソースがプロビジョニングされて、ハードウェアリソース上でコンピューティングシステム２１０と関連付けられた様々なコンポーネントにドライバサポートを提供するように最終的に命令が実行されてよい。例えば、ドライバコンポーネント２３０は、ホスト、メモリシステム、及び／またはコンピューティングシステム２００と関連し得る他の周辺機器（図示せず）と関連付けられたドライバをロード及び／または更新する命令を実行するように構成されてよい。ブロック層２２８からルーティングされたコマンドは、ドライバコンポーネント２３０を介して、例えば、コントローラ及びストレージデバイスを含むストレージシステム２３２にルーティングされてよい。ブロックレベルコマンドに集約され、ストレージシステム２３２で受信されるバイトレベルコマンドは、ストレージデバイスのコントローラ（例えば、図１に示すコントローラ１０６）によって実行されてよい。
【００４０】
一部のアプローチでは、コンピューティングシステム２３２の一部は、ブロックレベルのストレージＩ／Ｏアクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートするＩ／Ｏアクセスパスを提供することができるハイブリッドインタフェースを欠く場合があり、そのため、サブブロックレベルのアクセス可能性が不足する。したがって、複数のバイトレベルコマンド（例えば、複数のサブブロックサイズのデータ要求）は、サブブロックレベルのアクセス可能性がないＩ／Ｏアクセスパスを介して転送されるブロックレベルのコマンド（例えば、ブロックサイズのデータ要求）にページキャッシュコンポーネント２２４で集約されることが必要な場合がある。一方、いくつかの実施形態では、対応するサブブロックレベルのストレージＩ／Ｏアクセス要求はハイブリッドインタフェースのＩ／Ｏアクセスパスを介して転送できるので、複数のサブブロックサイズのデータ要求をページキャッシュコンポーネント２２４を介してルーティングする必要はない。したがって、本開示の一部の実施形態では、ストレージシステム１０４の一部は、ページキャッシュコンポーネント２２４などの別個のコンポーネントを有することなく、ページキャッシュコンポーネント２２４によって提供されたであろう機能を提供するためのページキャッシュとして割り当てられてよい。
【００４１】
図３は、本開示のいくつかの実施形態による、コンピューティングシステム３００の一部を表すシステム／アプリケーションレベルのブロック図を示す。コンピューティングシステム３００の一部及びストレージシステム３０４は、それぞれ、図１に関連して説明したコンピューティングシステム１００の少なくとも一部及びストレージシステム１０４に類似してよい。さらに、ハイブリッドインタフェース３４０は、図１に関連して説明したＩ／Ｏアクセスパス１７３を有するハイブリッドインタフェースに類似してよい。
【００４２】
コンピューティングシステム３００の一部は、コンピューティングシステムの操作を担当するユーザ空間３３４（例えば、ｕｓｅｒｌａｎｄ）及びカーネル３３６（例えば、システム空間）などのソフトウェアスタックと、ストレージシステム３０４を含むハードウェア部分とを含み得る。本明細書で使用される場合、「システム空間」または「カーネル空間」は、コンピューティングシステム３００の一部に関連付けられたメモリ位置であり、コンピューティングシステム３００に関連付けられたハードウェアプロセッサによって実行されてコンピューティングシステムを制御し得る命令を記憶する。一方、本明細書で使用される場合、「ユーザ空間」は、コンピューティングシステム３００の一部に関連付けられたメモリ位置であり、コンピューティングシステムによって実行されるアプリケーション３３８に対応する命令が記憶される。アプリケーション３３８に対応する命令は、図１に関連して説明した処理リソース１０３などのハードウェアプロセッサによって実行されて、ユーザの利益のために調整された機能、タスク、またはアクティビティのグループを行ってよい。
【００４３】
一部の実施形態では、ユーザ空間３３４及びシステム空間３３６は、オペレーティングシステムの一部であってよい。例えば、ユーザ空間３３４及びシステム空間３３６のオペレーティングシステムは、それぞれ、アンドロイド（登録商標）ユーザ及びそれに関連するＬｉｎｕｘ（登録商標）カーネルのオペレーティングシステムを表してよい。そのような実施形態では、コンピューティングシステム３００の一部は、「ソフトウェアストレージスタック」と見なされてよい（例えば、コンピューティングシステム３００の一部は、オペレーティングシステムのソフトウェアベースのカーネルの実装を表してよい）。
【００４４】
ファイルシステム３４２は、ハイブリッドインタフェース４３０に含まれてよい。ファイルシステム３４２は、第１の部分３４２−１及び第２の部分３４２−２を有することができ、それぞれ、各ドライバ（例えば、ドライバ３４４−１及び３４４−２）に結合される。ファイルシステム３４２の部分３４２−１及び部分３４２−２は、仮想ファイルシステムであってよく、ストレージシステム３０４などのローカルストレージデバイス及び／またはネットワークストレージデバイスにアクセスするために実行され得る命令を含んでよい。仮想ファイルシステムに含まれる命令は、ストレージシステム３０４との間でデータ及び／または他の命令を通信するために利用されるファイルシステム３４０の部分３４２−１及び部分３４２−２のうちの１つを指定してよい。ドライバ３４４−１及び３４４−２は、コンピューティングシステム（例えば、コンピューティングシステム１００）に関連付けられた様々なハードウェアコンポーネント（例えば、プロセッサ、メモリデバイス、周辺機器など）とインタフェースする仮想（例えば、ソフトウェア）ドライバであってよい。
【００４５】
いくつかの実施形態では、ファイルシステム３４２は、ブロックレベルのストレージＩ／Ｏアクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方を管理するように構成されてよい。ファイルシステム３４２の各部分は、異なるタイプのストレージＩ／Ｏアクセス要求を管理するために利用されてよい。例えば、第１の部分はブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成することができ、第２の部分はサブブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成することができる。
【００４６】
したがって、サブブロックレベルのストレージＩ／Ｏアクセス要求に対応するサブブロックサイズのデータ要求は、ブロックレベルサイズのデータ要求に集約されることなく処理することができる。一例として、処理リソース（例えば、図１に関連して説明した処理リソース１０３）は、サブブロックサイズのデータ要求の受信に応答して、ストレージシステム３０４（の、例えば、サブブロックレベルのアクセス可能性を有するメモリリソース）にハイブリッドインタフェース３４０を介して直接アクセスし、サブブロックサイズのデータ要求に関連する命令セットをストレージシステム３０４から直接、実行するように構成されてよい。命令セットは、処理リソースにモバイルアプリケーションを起動させ得る。
【００４７】
様々な実施形態では、ハイブリッドインタフェース３４０のファイルシステム３４２は、直接アクセス（ＤＡＸ）対応のファイルシステム部分を含み得る。ＤＡＸ対応ファイルシステムは、（例えば、ユーザ空間３３４から）ストレージシステム３０４に直接読み込み及び／または書き込み操作を実行することができるファイルシステムを指す。別の言い方をすれば、データ、コマンド、命令、及び／または要求は、メインメモリ（例えば、メインメモリ１０９）を介してルーティング、転送、及び／またはコピーすることなく、ストレージシステム３０４との間で直接ルーティング、転送、及び／またはコピーされてよい。したがって、一部の実施形態では、ストレージシステム３０４は、（例えば、読み込み／書き込みを実行するために）ストレージシステム３０４への直接アクセスのために、ユーザ空間３３４に直接マッピングすることができる。
【００４８】
一部の実施形態では、要求、データ、及び／または命令は、共有バスを介してストレージシステム３０４との間で通信されてよい。例えば、要求、データ、及び／または命令がブロックレベルまたはサブブロックレベルのどちらに対応するかに関係なく、要求、データ、及び／または命令は、同じ共有バスを介してストレージシステム３０４から通信されてよい。しかしながら、実施形態はそのようなものに限定されない。例えば、ブロックレベル及びサブブロックレベルの要求、データ、及び／または命令は、異なるそれぞれのバスを介してストレージシステム３０４との間で通信されてよい。例えば、サブブロックレベルのストレージＩ／Ｏアクセス要求は、ブロックレベルのストレージＩ／Ｏアクセスを通信するために利用されるバスとは異なるバスを介して通信されてよい。
【００４９】
一部の実施形態では、データベース管理システム（ＤＢＭＳ）に関連するデータ、ファイルメタデータ、及び／またはファイルシステム３４０のメタデータなどのサブブロックサイズのデータベースファイルは、ファイルシステム３４２の第２の部分３４２−２を介して処理リソース（例えば、処理リソース１０３）によって直接アクセスされてよい。例えば、ＤＢＭＳに関連するデータ、ファイルメタデータ、及び／またはファイルシステム３４０のメタデータなどの複数のサブブロックサイズのデータベースファイルは、処理リソースによって同時に実行されているプロセスによって同時にアクセスされてよい。ＮｏＳＱＬ、ＳＱＬｉｔｅ、クラウドベースのＤＢＭＳ、または他の適切なＤＢＭＳなどのＤＢＭＳは、ユーザ空間３３４で実行されるデータベースシステムプロセス及び／またはアプリケーションであってよい。ＤＢＭＳは、エンドユーザが、コンピューティングシステム３００の一部と関連付けられたデータベース内のデータを作成、読み込み、更新、及び／または削除することを可能にし得る。
【００５０】
図４は、本開示のいくつかの実施形態による、中央処理装置（ＣＰＵ）４５２を含むコンピューティングシステム４５０の一部の概略図を示す。メインメモリ４０９及びストレージシステム４０４は、図１に関連して説明したメインメモリ１０９及びストレージシステム１０４に類似してよい。
【００５１】
図４に示すように、ＣＰＵ４５２は、Ｉ／Ｏアクセスパス４７１を介して、コンピューティングシステム４５０の一部の他のコンポーネント（例えば、メインメモリ４０９、無線４５８、周辺コンポーネント４６０、及び／またはストレージシステム４０４）に結合される。Ｉ／Ｏアクセスパス４７１は、本明細書で説明されるように、ホスト１０２をストレージシステム４０４に結合することができるハイブリッドインタフェース（例えば、ハイブリッドインタフェース３４０）によって提供することができる。Ｉ／Ｏアクセスパスは、ブロックレベルのストレージＩ／Ｏアクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートすることができる。これは、サブブロックレベルのストレージアクセス要求をストレージシステムとの間で転送するために集約することなしに処理できるように、ファイルシステムによって管理されてよい。Ｉ／Ｏアクセスパス４７１は、システムバスを含んでよく、システムバスは、コンピューティングシステムの主要なコンポーネントを接続して、データを通信するためのデータバス、データの宛先を決定するためのアドレスバス、データに関連付けられた操作を決定するための制御バスの機能を組み合わせる。
【００５２】
無線コンポーネント４５８は、コンピューティングシステム４５０の一部のトランシーバであってよい。一例として、トランシーバは、コンピューティングシステム４５０の一部の送信機及び受信機の両方を含むデバイスであってよい。コンピューティングシステム４５０の一部は、無線コンポーネント４５８を利用して、他のデバイスと無線通信してよい。
【００５３】
周辺コンポーネント４６０（例えば、周辺Ｉ／Ｏデバイス）は、コンピューティングシステム（例えば、コンピューティングシステム４５０の一部）に情報を出し入れするために実行可能な命令を含んでよい。一例として、周辺コンポーネント４６０は、入力デバイス（例えば、マウス及び／またはキーボード）、出力デバイス（例えば、モニタ及び／またはプリンタ）、及び／またはストレージデバイス（例えば、ハードディスクドライブ（ＨＤＤ）及び／またはソリッドステートドライブ（ＳＤＤ））などのコンピューティングシステム４５０の様々なコンポーネントを含んでよい。さらに、デジタル時計、スマートフォン、及び／またはタブレットコンピュータなどの他のコンピューティングシステムもまた、それらのデバイスを周辺デバイスとして使用することを可能にする特定のインタフェースを備えてよい。周辺コンポーネント４６０はまた、コンピューティングシステムの一次コンテナ内に収容される統合された周辺デバイスであってよい。一例として、モバイルデバイスのデジタルカメラは、例えばラップトップ及び／またはデスクトップの外部周辺デバイスであるキーボード、マウス、及び／またはプリンタとは対照的に、統合された周辺デバイスであってよい。
【００５４】
周辺コンポーネント４６０（例えば、統合周辺デバイス）は、欠陥補正、デモザイク（色補間）、ホワイトバランス、色調整、明度及び／またはコントラスト強調のためのガンマ調整、色変換、及び／またはダウンサンプリングなどの色補正操作を含む様々な操作を行うために利用できる画像信号プロセッサ（ＩＳＰ）をさらに含んでよい。画像信号プロセッサを含む周辺コンポーネント４６０は、コンピューティングデバイスのデジタルカメラ（例えば、モバイルデバイスのデジタルカメラ）を含んでよい。
【００５５】
メインメモリ４０９は、コンピューティングシステム４５０の一部の演算と関連するデータの１つまたは複数のページを記憶するために使用し得る、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリであってよい。実施形態は、揮発性メモリに限定されないが、メインメモリは、揮発性メモリに加えてまたはその代わりに、不揮発性メモリを含んでよい。
【００５６】
一部のアプローチでは、メインメモリは、要求、データ、及び／または命令が転送される仲介デバイスとして機能してよい。一例として、ストレージシステムから読み出されたデータ及び／または命令セットは、ＣＰＵ４５２などの処理リソースがメインメモリからのデータ及び／または命令セットにアクセスできるように、メインメモリにコピーすることができる。別の例として、サブブロックサイズのデータ要求は、実行される前にメインメモリでバッファリングされてよく、それによって、サブブロックサイズのデータ要求をブロックサイズのデータ要求に集約することができる。これらのアプローチでは、要求、データ、及び／または命令の転送により、メインメモリに圧力がかかり得る追加の操作が発生する場合がある。特に、モバイルシステムのメインメモリのリソースは比較的不足している場合があり、メインメモリにかかる圧力は、モバイルシステムの操作に関連する深刻なレイテンシを招き得る。
【００５７】
したがって、いくつかの実施形態では、以下でさらに説明するように、メインメモリ４０９は、メインメモリ４０９を介してデータを転送することなく、コンピューティングシステム（例えば、モバイルシステム）のデバイス間で直接、要求、データ、及び／または命令を転送することによって、追加の操作を実行する負担から解放され得る。
【００５８】
例えば、ＣＰＵ４５２は、ストレージシステム４０４（の、例えば、サブブロックレベルのアクセス可能性を有するメモリリソース）から直接、サブブロックサイズのデータ要求に対応する命令セットを実行してよい。言い換えると、ＣＰＵ４５２は、命令セットがメインメモリにコピーされ、ＣＰＵがメインメモリから命令セットにアクセスするこれらのアプローチとは対照的に、命令セットを最初にメインメモリに転送することなく、（例えば、ストレージシステム４０４の）サブブロックレベルのアクセス可能性を有するメモリリソースから命令セットを実行するように構成されてよい。
【００５９】
例えば、ダイレクトメモリアクセス（ＤＭＡ）転送は、ＤＭＡに関連付けられたデータをメインメモリを介して転送せずに実行されてよい。本明細書で使用される場合、ＤＭＡ転送は、ＣＰＵ（例えば、ＣＰＵ４５２）とは独立した、送信元デバイスと宛先デバイスの間のデータ転送を指す。ＣＰＵによって指示される操作ではなく、ＤＭＡ転送を実行することにより、プロセス全体をＣＰＵがプロビジョニングする必要のない操作を指示する負担からＣＰＵを解放し得る。一部のアプローチでは、ＤＭＡ転送は、送信元デバイスと宛先デバイス（例えば、コンポーネント４５８、４６０、及び／または４６２のうちの１つ）の間で転送されるデータが、宛先デバイスで受信される前にメインメモリを介して転送されるように、メインメモリを利用することに関連付けられてきた。
【００６０】
一方、ハイブリッドインタフェースは、周辺コンポーネント４６０（例えば、周辺Ｉ／Ｏデバイス）からのデータが、最初に周辺コンポーネント４６０からメインメモリ４０９に転送されることなく、ストレージシステムのメモリリソースに直接記憶されることを可能にするように構成されてよい。言い換えると、（例えば、ストレージシステム４０４がＩ／Ｏアクセスパス４７１のバスを介して結合される）周辺コンポーネント４６０のプロセッサ（例えば、ＩＳＰ）は、例えば、サブブロックレベルのアクセス可能性を有するメモリリソースがプロセッサによって直接アクセスされ得るように、ハイブリッドインタフェースを介してストレージシステム４０４に直接アクセスするように構成されてよい。
【００６１】
図５は、本開示のいくつかの実施形態による、コンピューティングシステム（例えば、モバイルシステム）を操作するための方法５７０の例を示す例示的な流れ図である。明示的に述べられていない限り、本明細書で説明される方法の要素は、特定の順番または順序に制約されない。さらに、本明細書で説明されるいくつかの方法の実施形態またはその要素は、同じ時点で、または実質的に同じ時点で実行されてよい。
【００６２】
ブロック５７２において、方法５７０は、処理リソースを介して、ストレージシステムに対して特定のサイズを有するデータ要求をもたらす命令セットを実行することを含み得る。ストレージシステムは、それぞれ図１、図３及び／または図４に関連して説明したストレージシステム１０４、３０４、及び／または４０４に類似してよい。ストレージシステムは、ストレージシステムへの入力／出力（Ｉ／Ｏ）アクセスパスを提供することができるハイブリッドインタフェースを介して、処理リソース（例えば、図１に関連して説明した処理リソース１０３）に結合されてよい。本明細書で説明するように、Ｉ／Ｏアクセスパスは、ブロックレベルのストレージＩ／Ｏアクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートすることができる。
【００６３】
ブロック５７４において、方法５７０は、データ要求に対応するデータのストレージシステムへのＩ／Ｏ転送を実行する前に、データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応するか、またはサブブロックレベルのストレージＩ／Ｏアクセス要求に対応するかを判断することを含み得る。ブロック５７６において、方法５７０は、データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、サイズがブロックサイズ未満のデータ要求を集約することに関連付けられた第１のファイルシステム部分を介してデータ要求を管理することを含み得る。ブロック５７８において、方法５７０は、データ要求がサブブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、サイズがブロックサイズ未満のデータ要求を集約することを防ぐことに関連付けられた第２のファイルシステム部分を介してデータ要求を管理することを含み得る。第１のファイルシステム部分及び第２のファイルシステム部分は、それぞれ、図３に関連して説明したファイルシステム３４２の第１の部分３４２−１及び第２の部分３４２−２に類似し得る。一部の実施形態では、第２のファイルシステム部分によって管理されるデータは、データベース管理システム（ＤＢＭＳ）、ファイルメタデータ、及び／またはファイルシステムのメタデータを含むことができる。
【００６４】
一部の実施形態では、方法５７０は、命令セットを実行する前に、処理リソースによって、命令セットを記憶するストレージシステムのメモリリソースに直接アクセスすることをさらに含み得る。方法５７０は、記憶された命令セットをモバイルシステムのメインメモリに転送することなく、メモリリソースから直接、命令セットを実行することをさらに含み得る。
【００６５】
一部の実施形態では、ストレージシステムは、複数のサブブロックサイズのデータベースファイルを記憶するメモリリソースを含み得る。この例では、方法５７０は、処理リソースによって同時に実行されるプロセスによって、複数のサブブロックサイズのデータベースファイルへの同時アクセスを提供することをさらに含み得る。
【００６６】
一部の実施形態では、モバイルシステムは、周辺Ｉ／Ｏデバイス（例えば、周辺コンポーネント４６０）及びメインメモリを含み得る。この例では、方法５７０は、最初に周辺Ｉ／Ｏデバイスからメインメモリに転送されることなく、サブブロックレベルのアクセス可能性を有するストレージシステムのメモリリソースに直接、周辺（Ｉ／Ｏ）デバイスからのサブブロックサイズのデータを記憶できるようにすることによってＤＭＡを実行することをさらに含み得る。図４に関連して説明したように、ＤＭＡ転送とは、ＣＰＵなどの処理リソースとは独立した送信元デバイスと宛先デバイス間のデータ転送を指す。
【００６７】
本明細書中で特定の実施形態が示され、説明されたが、同じ結果を達成すると想定される構成が、示されている特定の実施形態を置き換え得ることを当業者は理解されよう。この開示は、本開示の１つまたは複数の実施形態の適合または変形を含むことを意図している。上記説明は、限定的でなく例示的に行われたことが理解されよう。上記実施形態の組み合わせ、及び本明細書で特に説明されていない他の実施形態は、上記説明を見直した当業者にとって明らかであろう。本開示の１つまたは複数の実施形態の範囲は、上記構造及び方法が使用される他の用途を含む。したがって、本開示の１つまたは複数の実施形態の範囲は、添付の特許請求の範囲の権利が与えられる均等物の全範囲とともに、添付の特許請求の範囲を参照して判断されるべきである。
【００６８】
前述の「発明を実施するための形態」では、本開示を簡素化する目的のために、単一の実施形態にいくつかの特徴を一緒にまとめている。本開示の方法は、本開示の開示された実施形態が各請求項に明確に記載されたものより多くの特徴を使用する必要があるという意図を表すものとして解釈されるべきではない。むしろ、以下の請求項が表すように、発明の主題は、単一の開示された実施形態の全ての特徴よりも少ない特徴にある。したがって、以下の請求項は、本明細書によって発明を実施するための形態に組み込まれ、各請求項は、別個の実施形態として独立している。
【図１】
2021536643.tif 000003
【図２】
2021536643.tif 000004
【図３】
2021536643.tif 000005
【図４】
2021536643.tif 000006
【図５】
2021536643.tif 000007
【手続補正書】
【提出日】令和3年5月6日(2021.5.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理リソースと、
ハイブリッドインタフェースを介して前記処理リソースに結合されたストレージシステムと、
を備えるコンピューティングシステムであって、
前記ハイブリッドインタフェースは、ホストキャッシュラインサイズより大きいサイズを有するブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求と、ホストキャッシュラインサイズ以下のサイズを有するサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートする前記ストレージシステムへのＩ／Ｏアクセスパスを提供し、
前記ハイブリッドインタフェースは、サブブロックサイズのデータ要求の受信に応答して、前記サブブロックレベルのストレージＩ／Ｏアクセス要求をサポートする前記Ｉ／Ｏアクセスパスを提供するために、前記サブブロックサイズのデータ要求がメインメモリでブロックサイズのデータ要求に集約されるのを防ぐように構成される、
前記コンピューティングシステム。
【請求項２】
前記ハイブリッドインタフェースは、
前記ブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成された第１の部分と、
前記サブブロックレベルのストレージＩ／Ｏアクセス要求を管理するように構成された第２の部分であって、直接アクセス可能なファイルシステム部分である前記第２の部分と、
を含むファイルシステムを備える、請求項１に記載のコンピューティングシステム。
【請求項３】
前記ハイブリッドインタフェースは、いくつかのアプリケーションの実行に関連して生成された複数のサブブロックサイズのデータ要求の受信に応答して、それぞれのサブブロックサイズのデータ要求が前記ストレージシステムとの間で転送するために集約されることなく処理されるように、それぞれの複数の別個のサブブロックサイズのストレージＩ／Ｏアクセス要求を生成するように構成される、請求項１〜２のいずれか一項に記載のコンピューティングシステム。
【請求項４】
前記ストレージシステムは、複数のサブブロックサイズのデータベースファイルを記憶するメモリリソースを備え、前記ハイブリッドインタフェースは、前記処理リソースによって同時に実行されているプロセスによって、前記複数のサブブロックサイズのデータベースファイルへの同時アクセスを提供するように構成される、請求項１〜２のいずれか一項に記載のコンピューティングシステム。
【請求項５】
前記コンピューティングシステムは、モバイルシステムであり、
前記ストレージシステムは、各アプリケーションを開始することに関連して、前記処理リソースによって実行可能な命令セットを記憶するように構成され、且つ、
前記ハイブリッドインタフェースは、特定のアプリケーションを開始する要求に応答して、前記記憶された命令セットを前記モバイルシステムの前記メインメモリに転送することなく、前記要求に対応する前記記憶された命令セットへの前記処理リソースによる直接アクセスを提供するように構成される、
請求項１〜２のいずれか一項に記載のコンピューティングシステム。
【請求項６】
周辺Ｉ／Ｏデバイスをさらに備え、
前記周辺Ｉ／Ｏデバイス及び前記メインメモリは、バスを介して前記処理リソース及び前記ストレージシステムに結合され、且つ、
前記ハイブリッドインタフェースは、前記周辺Ｉ／Ｏデバイスからのデータが、最初に前記周辺Ｉ／Ｏデバイスから前記メインメモリに転送されることなく、前記ストレージシステムのメモリリソースに直接記憶されることを可能にするように構成される、
請求項１〜２のいずれか一項に記載のコンピューティングシステム。
【請求項７】
コンピューティングシステムであって、
ストレージシステムであって、
ブロックレベルのアクセス可能性を有する第１のメモリリソースと、
サブブロックレベルのアクセス可能性を有する第２のメモリリソースと、
を備える前記ストレージシステムと、
ハイブリッドインタフェースと、
前記ハイブリッドインタフェースを介して前記ストレージシステムに結合された処理リソースであって、
サブブロックサイズのデータ要求の受信に応答して、前記ハイブリッドインタフェースを介して前記第２のメモリリソースに直接アクセスし、且つ、
前記サブブロックサイズのデータ要求に関連付けられた命令セットを、前記第２のメモリリソースから直接実行する
ように構成された前記処理リソースと、
を備え、
前記ハイブリッドインタフェースは、前記処理リソースから前記第２のメモリリソースへの前記直接アクセスを提供するために、
前記受信したサブブロックサイズのデータ要求がメインメモリでブロックサイズのデータ要求に集約されるのを防ぎ、且つ、
前記受信したサブブロックサイズのデータ要求と対応し、ホストキャッシュラインサイズ以下のサイズを有するサブブロックレベルＩ／Ｏアクセス要求を生成する
ようにさらに構成される、
前記コンピューティングシステム。
【請求項８】
前記処理リソースは中央処理装置（ＣＰＵ）であり、前記処理リソースは、前記命令セットを最初に前記メインメモリに転送せずに、前記第２のメモリリソースから前記命令セットを実行するように構成される、請求項７に記載のコンピューティングシステム。
【請求項９】
前記処理リソースは、前記ストレージシステムがバスを介して結合された周辺Ｉ／Ｏデバイスのプロセッサである、請求項７に記載のコンピューティングシステム。
【請求項１０】
前記コンピューティングシステムは、モバイルシステムであり、前記命令セットは、前記ＣＰＵにモバイルアプリケーションを起動させる、請求項７〜９のいずれか一項に記載のコンピューティングシステム。
【請求項１１】
処理リソースを介して、ストレージシステムに対して特定のサイズを有するデータ要求をもたらす命令セットを実行することであって、前記ストレージシステムは、ブロックレベルのストレージ入力／出力（Ｉ／Ｏ）アクセス要求とサブブロックレベルのストレージＩ／Ｏアクセス要求の両方をサポートする前記ストレージシステムへのＩ／Ｏアクセスパスを提供するハイブリッドインタフェースを介して前記処理リソースに結合される、前記命令セットを実行することと、
前記データ要求に対応するデータの前記ストレージシステムへのＩ／Ｏ転送を実行する前に、前記データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応するか、またはサブブロックレベルのストレージＩ／Ｏアクセス要求に対応するかを判断することと、
前記データ要求がブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、サイズがブロックサイズ未満のデータ要求をメインメモリで集約することに関連付けられた第１のファイルシステム部分を介して前記データ要求を管理することと、
前記データ要求がサブブロックレベルのストレージＩ／Ｏアクセス要求に対応すると判断することに応答して、データ要求のそれぞれのサイズがブロックサイズ未満の前記データ要求を前記メインメモリで集約することを防ぐことに関連付けられた第２のファイルシステム部分を介して前記データ要求を管理することと、
を含む、方法。
【請求項１２】
前記第２のファイルシステム部分によって管理される前記データは、データベース管理システム（ＤＢＭＳ）に関連するデータを含む、請求項１１に記載の方法。
【請求項１３】
前記コンピューティングシステムはモバイルシステムであり、前記方法は、
前記命令セットを実行する前に、前記処理リソースによって、前記命令セットを記憶する前記ストレージシステムのメモリリソースに直接アクセスすることと、
前記記憶された命令セットを前記モバイルシステムの前記メインメモリに転送することなく、前記メモリリソースから直接、前記命令セットを実行することと、
をさらに含む、請求項１１に記載の方法。
【請求項１４】
前記ストレージシステムは、複数のサブブロックサイズのデータベースファイルを記憶するメモリリソースを備え、
前記方法は、前記処理リソースによって同時に実行されているプロセスによって、前記複数のサブブロックサイズのデータベースファイルへの同時アクセスを提供することをさらに含む、
請求項１１に記載の方法。
【請求項１５】
前記コンピューティングシステムは、周辺Ｉ／Ｏデバイスと前記メインメモリとをさらに備えるモバイルシステムであり、
前記方法は、前記周辺Ｉ／Ｏデバイスからのサブブロックサイズのデータを、最初に前記周辺Ｉ／Ｏデバイスから前記メインメモリに転送することなく、サブブロックレベルのアクセス可能性を有する前記ストレージシステムのメモリリソースに直接、記憶できるようにすることによって、ダイレクトメモリアクセス（ＤＭＡ）を実行することをさらに含む、
請求項１１に記載の方法。
【国際調査報告】
2021536643.tif 000008
2021536643.tif 000009
2021536643.tif 000010