(57)【要約】グラフアクセスデバイスおよびブロックアクセスデバイスは、両デバイス間で共有されたメモリプールに同時にアクセスすることが出来る。メモリプールは、単一の論理メモリとしてアクセスされる１または複数のメモリアレイを備えていてもよい。ブロックアクセスデバイスは、メモリブロックの平面アレイとしてのメモリプールにアクセスし、グラフアクセスデバイスは、階層ファイルシステムとしてのメモリプールにアクセスする。同時アクセスは、メモリプールへのアクセス中にブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視することにより実現される。このブロックアクセス動作は、メモリプールを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に変換される。プロセッサは、メモリプールへのアクセスを制御し、グラフデータ構造に従って、グラフアクセスデバイスがブロックアクセスデバイスと同時にメモリプールにアクセスすることを許可するように構成されている。
2013508885.tif 000002
【特許請求の範囲】
【請求項１】
グラフアクセスデバイスおよびブロックアクセスデバイスが両デバイス間で共有されたメモリプールに同時にアクセスする方法であって、
前記メモリプールへのアクセス中に前記ブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視し、
前記メモリプールを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に前記ブロックアクセス動作を変換し、
前記グラフデータ構造に従って、前記グラフアクセスデバイスが前記ブロックアクセスデバイスと同時に前記メモリプールにアクセスする、
ことを含む方法。
【請求項２】
前記ブロックアクセスデバイスが前記メモリプールの第１メモリブロックへの書き込みを試み、
前記グラフアクセスデバイスが前記第１メモリブロックにアクセス中であるか否かを判定し、
前記グラフアクセスデバイスが前記第１メモリブロックにアクセス中である場合は、前記ブロックアクセスデバイスが当該第１メモリブロックの代わりに第２メモリブロックに書き込みを行い、
前記グラフデータ構造を分解することにより、前記ブロックアクセスデバイスによって行われた書き込みの少なくとも１つのメモリ位置を指示する、
ことをさらに含む、請求項１に記載の方法。
【請求項３】
前記グラフデータ構造の分解が、当該グラフデータ構造のポインタによる指示を前記第１メモリブロックから前記第２メモリブロックに変更することを含む、請求項２に記載の方法。
【請求項４】
前記グラフデータ構造の分解が、前記グラフアクセスデバイスの前記第１メモリブロックへのアクセス完了後に前記第２メモリブロックのコンテンツを当該第１メモリブロックにコピーすることを含む、請求項２に記載の方法。
【請求項５】
前記メモリプールが単一の論理メモリである、請求項１に記載の方法。
【請求項６】
前記メモリプールが周辺機器に含まれている、請求項１に記載の方法。
【請求項７】
前記メモリプールが複数の別個のネットワーク機器に分散されている、請求項１に記載の方法。
【請求項８】
前記グラフアクセスデバイスが、無線リンクを介して前記メモリプールにアクセスするように構成された無線クライアントを含む、請求項１に記載の方法。
【請求項９】
前記ブロックアクセスデバイスが、ＵＳＢ接続を介して前記メモリプールにアクセスするように構成されたＵＳＢホストを含む、請求項１に記載の方法。
【請求項１０】
前記ブロックアクセスデバイスが、前記メモリブロックアクセス動作中に当該メモリプールにアクセスするため各々前記メモリプールに設けられた離散開始位置メモリアドレスおよび離散終了位置メモリアドレスを提供する、請求項１に記載の方法。
【請求項１１】
前記監視が、
前記メモリブロックアクセス動作が、前記グラフデータ構造を格納した前記メモリプールのメモリ位置に書き込みを行っているか否かを判定し、
前記メモリブロックアクセス動作が、データコンテンツを格納した前記メモリプールのメモリ位置に書き込みを行っているか否かを判定する、
ことを含む、請求項１に記載の方法。
【請求項１２】
前記変換が、前記メモリブロックアクセス動作中に前記ブロックアクセスデバイスによって書き込まれたメモリ位置に基づいて前記グラフデータ構造を更新することを含む、請求項１１に記載の方法。
【請求項１３】
前記変換が、前記メモリプールの所定のメモリアドレス位置にアクセスするメモリブロックアクセス動作の数に基づいて前記グラフデータ構造を更新することを含む、請求項１に記載の方法。
【請求項１４】
グラフアクセスデバイスとブロックアクセスデバイスとの間で共有されたメモリプールと、
前記メモリプールへのアクセス中に前記ブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視する手段と、
前記メモリプールを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に前記ブロックアクセス動作を変換する手段と、
前記グラフデータ構造に従って、前記グラフアクセスデバイスが前記ブロックアクセスデバイスと同時に前記メモリプールにアクセスする手段と、
を備えた装置。
【請求項１５】
グラフアクセスデバイスとブロックアクセスデバイス間で共有されたメモリと、
前記ブロックアクセスデバイスと通信するように構成された第１通信インターフェースと、
前記グラフアクセスデバイスと通信するように構成された第２通信インターフェースと、
前記メモリ並びに前記第１および第２通信インターフェースに動作可能に接続され、
前記メモリへのアクセス中に前記ブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視し、
前記メモリを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に前記ブロックアクセス動作を変換し、
前記ブロックアクセスデバイスもまた前記メモリにアクセスしている間に、前記グラフデータ構造に従って、前記グラフアクセスデバイスが前記メモリに同時にアクセスすることを許可するように構成されたプロセッサと、
を備えた周辺機器。
【請求項１６】
前記メモリが、当該周辺機器および少なくとも１つの他の別個の機器に分散されたメモリプールに含まれている、請求項１５に記載の周辺機器。
【請求項１７】
前記第２通信インターフェースが複数のグラフアクセスデバイスと通信するように構成され、前記メモリが前記ブロックアクセスデバイスと前記複数のグラフアクセスデバイスとの間で共有されている、請求項１５に記載の周辺機器。
【請求項１８】
前記プロセッサが前記メモリに格納されたコンテンツを暗号化するように構成された、請求項１５に記載の周辺機器。
【請求項１９】
前記プロセッサが前記メモリに格納されたコンテンツをトランスコードするように構成された、請求項１５に記載の周辺機器。
【請求項２０】
前記プロセッサが前記ブロックアクセスデバイスを認証し、適正に認証されたブロックアクセスデバイスに対してのみ前記メモリへのアクセスを承認するように構成された、請求項１５に記載の周辺機器。
【請求項２１】
前記プロセッサが前記グラフアクセスデバイスを認証し、適正に認証されたグラフアクセスデバイスに対してのみ前記メモリへのアクセスを承認するように構成された、請求項１５に記載の周辺機器。
【発明の詳細な説明】
【技術分野】
【０００１】
（米国特許法第１１９条に基づく優先権の主張）
本特許出願は、２００９年１０月２６日に出願された米国仮特許出願第６１／２５５，００２号「１または複数の電子機器および／またはデータネットワークにストレージ、通信、演算、およびサービスを追加する方法、システム、装置、および製品」に対して優先権を主張するものであり当該仮出願の全開示内容は、本明細書中に参考として明示的に援用する。
【０００２】
本開示は、一般的には電子データシステムに関し、具体的にはデータストレージを提供するコンピュータシステムおよび／または通信システムに関する。
【背景技術】
【０００３】
コンピュータ業界には、周辺機器の接続規格がいくつかあるが、近年最もよく知られているものはユニバーサルシリアルバス（ＵＳＢ）である。ＵＳＢ等の接続規格は、無数の電子機器間の接続を可能とするため、コンピュータの枠を超えて推移してきた。最も広く使用されているＵＳＢ周辺機器の中には、データストレージおよび無線接続を提供する機器もある。また、特定の用途に対する接続プロトコルおよび規約をさらに定義した一般的なＵＳＢ「タイプ」もいくつか存在する。これらの定義により、上記プロトコルに準拠したＵＳＢ機器であれば、ホストに特別なソフトウェアを追加することなくホストシステムとの相互運用が可能である。例えば、一般的なＵＳＢ接続プロトコルとしては、ＵＳＢマスストレージという仕様が挙げられる。ＵＳＢホストは、この仕様に従う任意のＵＳＢ周辺機器に対して、データの書き込みや読み出しを行うことができる。
【０００４】
多機能の周辺機器は既に知られている。例えば、データストレージに対する暗号化／復号化等のより有用な機能を可能にする中央演算処理装置（ＣＰＵ）を備えたＵＳＢ周辺機器が存在している。また、例えば、データストレージと無線接続との組み合わせが単一の周辺機器に組み込まれたものもある。これら多機能の周辺機器がＵＳＢ機器であるとき、物理的には単一のＵＳＢ周辺機器であっても、通常は論理的に分離されたＵＳＢ機器として動作する。各機能は、ホストと各機能間の相互運用を規定するそれぞれのＵＳＢプロファイルと適合するが、これら２つの機能は相互排他的に作用する。例えば、データストレージがＵＳＢマスストレージプロトコルを単独で使用するのに対し、無線機能はＵＳＢワイヤレスネットワーキングプロトコルを使用する。これら独立した機能は、ホスト用の別個のソフトウェアドライバが必要とする場合があり、あるいは、周辺機器の様々な機能にアクセスするため、ホストが複数のＵＳＢプロトコルをサポートしていることを必要とする場合もある。
【０００５】
既存のＵＳＢアーキテクチャは、以下のタイプから成る。図１は、ＵＳＢ周辺機器１４に接続されたＵＳＢホスト１２を含む一般的な従来技術のＵＳＢシステム１０を示している。ＵＳＢストレージ周辺機器１４としては、半導体サムドライブ、回転媒体ハードドライブ、ＣＤ、ＤＶＤドライブ等が考えられる。ＵＳＢインターフェース１６は、ＵＳＢストレージプロトコルを動作させるステートマシンで構成されており、物理的なデータストレージ１８に接続されている。読み出しおよび／または書き込みに際しては、データの「ブロック」（例えば、アドレス可能な５１２個のブロック）で構成された配列状のデータにアクセスする。ＵＳＢホスト１２は、ファイル、フォルダ、ディレクトリ、およびストレージ管理アレイ（例えば、ファイルアロケーションテーブル）といった高水準のデータ構造を規定している。
【０００６】
図２は、従来技術のＵＳＢ通信システム２０を示しており、ＵＳＢ通信システム２０は、ＵＳＢ周辺機器２２がＵＳＢインターフェース１６に結合された無線または有線の通信電子装置２４を備えていることを除いては図１のシステム１０と類似しているアーキテクチャを有する。この構成は、ＵＳＢの規格に対応している場合があり、あるいは、通信電子装置２４と正しく作用するため、ホスト１２に特別なソフトウェアドライバを必要とする場合もある。
【０００７】
図３は、データストレージ１８および無線または有線の通信電子装置２４という２つの機能を単一のＵＳＢ周辺機器３２に組み込んだ従来技術のシステム３０を示している。ＵＳＢプロトコルは、ＵＳＢホスト１２が仮想的に分離された２つのＵＳＢ周辺機器として認識する複数の論理パスを割り当てる。この例では、電源やＵＳＢスレーブコントローラの共有等、ストレージおよび無線の両機能が内部周辺構成要素を物理的に共有するが、これらストレージおよび無線の両機能がＵＳＢ周辺機器３２内で直接通信することはない。これらの機能は、論理的には相互排他的な機器として扱われる。
【０００８】
図４は、ＵＳＢホスト１２に対して透過的なＵＳＢ周辺機器４２の内部機能として、この場合は暗号化／復号化４４をＵＳＢ周辺機器４２に備えた従来技術のシステム４０を示している。ＵＳＢホスト１２は、データストレージ１８を通常の非暗号化データストレージアレイと見なすが、機器４２の指紋センサーまたはパスワード等を用いた適正な認証が行われない場合は、復号化が不可能となって、ＵＳＢホスト１２はデータストレージ１８にアクセスできない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ホストを更新することなく、周辺機器に機能を追加する必要がある。特に低コストの機器の場合は、ホストのソフトウェアを追加する必要性を抑えることが望ましい。また、周辺機器に機能を追加することによって現在のプロトコルの不備に対応すること、および／またはユーザーの繁雑度を増すことなく機能を追加することが必要である。これらの必要性およびその他の必要性には、本明細書に開示の改良によって対応出来る。
【００１０】
本開示の一態様によれば、グラフアクセスデバイスおよびブロックアクセスデバイスが両デバイス間で共有されたメモリプールに同時にアクセスする方法が提供される。グラフアクセスデバイスは、階層ファイルシステム構造等のグラフとして構成されたデータにアクセスするコンピュータ等の任意の電子機器であってもよい。これにより、グラフは、データ構造を用いてメモリプール内の特定のアドレスに分解される。ブロックアクセスデバイスは、以前に任意のグラフアクセスが機器と非共有のブロックメモリに分解された離散開始位置アドレスおよび終了位置アドレスを用いてメモリにアクセスする任意の電子機器である。また、メモリプールは、少なくともその一部が周辺機器に含まれていてもよい。この方法は、メモリプールへのアクセス中にブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視し、メモリプールを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に上記ブロックアクセス動作を変換し、グラフデータ構造に従って、グラフアクセスデバイスがブロックアクセスデバイスと同時にメモリプールにアクセスすることを含む。
【００１１】
別の態様に係る装置は、グラフアクセスデバイスとブロックアクセスデバイス間で共有されたメモリプールを備える。また、この装置は、メモリプールへのアクセス中にブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視する手段と、メモリプールを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に上記ブロックアクセス動作を変換する手段と、グラフデータ構造に従って、グラフアクセスデバイスがブロックアクセスデバイスと同時にメモリプールにアクセスする手段とを備えている。
【００１２】
さらに別の態様に係る周辺機器は、メモリ、第１通信インターフェース、および第２通信インターフェースを備えている。このメモリは、グラフアクセスデバイスとブロックアクセスデバイス間で共有されている。第１通信インターフェースは、ブロックアクセスデバイスと通信するように構成され、第２通信インターフェースは、グラフアクセスデバイスと通信するように構成されている。プロセッサは、メモリへのアクセス中にブロックアクセスデバイスによって行われた１または複数のメモリブロックアクセス動作を監視し、メモリを階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に上記ブロックアクセス動作を変換し、ブロックアクセスデバイスのメモリへのアクセス中に、グラフデータ構造に従って、グラフアクセスデバイスのメモリへの同時アクセスを許可するように構成されている。
【００１３】
さらに別の態様に係る周辺機器は、外部ホストまたはクライアント機器と通信を行うとともに、当該ホスト／クライアント機器がブロックまたはグラフアクセスにより通信する必要があるか否かを知的に判定する。そして、当該周辺機器はこのアクセス方法で外部機器と通信を行う。
【００１４】
本明細書に記載した改良のその他の態様、特徴、利点、および変形例については、当業者であれば以下の図面および詳細な説明から明らかとなるであろう。なお、このような付加的な態様、特徴、変形例、および利点のすべては、以下の説明に含まれるとともに、添付の特許請求の範囲によって保護されるものとする。
【図面の簡単な説明】
【００１５】
図面は単に説明を目的としたものであって、添付の特許請求の範囲に制限を加えるものではない。さらに、図面中の各構成要素は必ずしも縮尺通りとはなっていない。また、図面中、異なる図面を通して対応する部分には、同一の参照符号を付している。
【００１６】
【図１】従来技術の周辺機器システムを示した図。
【図２】従来技術の周辺機器システムを示した図。
【図３】従来技術の周辺機器システムを示した図。
【図４】従来技術の周辺機器システムを示した図。
【図５】メモリへの同時アクセスを可能にする多機能周辺機器を備えた例示的なシステムの特定の構成要素を示したブロック図。
【図６】図５の多機能周辺機器に含まれるメモリに格納された例示的なコンテンツの概念図。
【図７】２つ以上の通信インターフェースを備えた別の例示的な多機能周辺機器アーキテクチャの特定の構成要素を示したブロック図。
【図８】図５に示す多機能周辺機器の特定の例示的な実施態様における特定の構成要素を示したブロック図。
【図９】多機能周辺機器の例示的なソフトウェアアーキテクチャを示した図。
【図１０】グラフアクセスデバイスおよびブロックアクセスデバイスの共有メモリプールへの同時アクセスを可能にする例示的な方法を示したフローチャート。
【図１１】グラフデータ構造のブロックメモリアレイへのマッピングの一例を示した概念図。
【図１２】シャドウメモリ技術を用いたブロックアクセスデバイスおよびグラフアクセスデバイスへの同時メモリアクセスの一例を示した概念図。
【図１３】シャドウメモリによりメモリプールへの同時アクセスを可能にする例示的な方法を示したフローチャート。
【図１４】複数の機器に分散されてクラウドコンピューティングをサポートするメモリプールを示した概念図。
【図１５】特定のユーザーに制限された領域へのメモリプールの例示的な分割を示した概念図。
【図１６】少ないメモリ空間でＴＣＰ／ＩＰパケットを送信する例示的な方法を示したフローチャート。
【図１７】周辺機器を含む支払い処理システムを示した概念図。
【発明を実施するための形態】
【００１７】
以下の詳細な説明は、図面を参照・援用して、特許請求の範囲に係る１または複数の特定の実施形態を記述・説明するものである。これらの実施形態は、本発明を限定することなく単に例示・教示するものであって、特許請求の範囲に規定された本発明を当業者が実施できるように十分詳しく開示・説明する。したがって、本発明が不明瞭になることを回避するため、当業者に周知の情報は必要に応じて説明を省略する場合がある。
【００１８】
本開示の全体にわたって、「例示的」という用語の使用は、「一例、事例、または実例として作用する」ことを意味する。本明細書に「例示的」と記載された如何なる実施形態または特徴であっても、他の実施形態または特徴に対して必ずしも好適または好都合と解釈されるものではない。
【００１９】
本明細書には、ホストシステムの更新を最小限に抑えつつ、もしくは更新を行うことなく既存のシステムの有用性を改善し、および／またはユーザーの繁雑度を増すことなく新たな特徴を提供する周辺機器の新規ソリューションを開示している。
【００２０】
これらのソリューションは、ＵＳＢ等の周辺機器の新たな方法およびアーキテクチャで構成されており、データストレージに用いられるＵＳＢマスストレージプロトコル等の一般的なプロトコルを活用するとともに、ホストのソフトウェアの追加または他のＵＳＢ通信プロトコルの使用の必要なく機能を追加するものである。このような追加機能としては、付加的な通信インターフェース、セキュリティ、サーバー、同期、およびインターネット等の大規模ネットワークに関連するその他のサービス等が挙げられるが、これらに限定されるものではない。
【００２１】
本明細書に記載の例示的なアーキテクチャおよび方法ではＵＳＢを利用するが、これら方法およびアーキテクチャはＵＳＢに限定されるものではなく、例えばｅＳＡＴＡ、ｉＳＣＳＩ等の他のバスおよび通信プロトコルを代わりに使用してもよい。
【００２２】
本明細書に開示の周辺機器アーキテクチャおよび方法を活用した結果として得られる新たなサービスを提供することはさらなる利点である。例えば、より広範囲のネットワークを組み込んでユーザーの繁雑度を増すことなくユーザーにサービスを提供する新規システムのアーキテクチャについても開示している。
【００２３】
Ｉ．周辺機器アーキテクチャ
図５は、ブロックアクセスデバイス５２および１または複数のグラフアクセスデバイス５６、５８、６０によるメモリ６６への同時アクセスを可能にする多機能周辺機器５４を備えた例示的なシステム５０の特定の構成要素を示したブロック図である。このシステム５０は、ブロックアクセスデバイス５２、周辺機器５４、およびグラフアクセスデバイス５６、５８、６０を備えている。ブロックアクセスデバイス５２はワイヤライン（有線）接続を介して周辺機器５４と通信を行い、グラフアクセスデバイス５６〜６０は１または複数の無線リンクを介して周辺機器５４と通信を行う。
【００２４】
各グラフアクセスデバイス５６〜６０は、階層ファイルシステム構造等のグラフとして構成されたデータにアクセスするコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、ビデオゲーム機等の任意の電子機器であってもよい。これにより、グラフは、グラフデータ構造を用いてメモリ６６内の特定のアドレスに分解される。グラフデータ構造は、グラフとメモリプール間の一連のマッピングを規定する。メモリプールは、単一の論理メモリアレイとしてアクセスされる１または複数のメモリアレイである。
【００２５】
より具体的に説明すると、グラフデータ構造は、メモリ６６を階層ファイルシステムにマッピングする複数のポインタを含んでいる。本明細書に記載の周辺機器５４、７０、１００に利用可能なグラフデータ構造の例としては、ファイルアロケーションテーブル（ＦＡＴ）またはその改良型（ｖＦＡＴ、ＦＡＴ３２、ＦＡＴ１６、ｅｘＦＡＴ、ＮＴＦＳ、ＮＦＳ等）といったファイルストレージデータベースが挙げられる。
【００２６】
メモリ６６はメモリプールであるが、あるいは他の物理的メモリおよび／または機器を備えた大型のメモリプールの一部であってもよい。また、データ構造およびデータコンテンツは、ポインタを含むファイルアロケーションテーブル（ＦＡＴ）ファイルシステム等の同じメモリプールに存在していてもよく、データは共通のメモリプールにまとめて格納される。あるいは、グラフデータ構造を別個のメモリに格納することもできる。グラフアクセスデバイス５６〜６０は、場合によってはＷｉ−Ｆｉクライアントである。また、場合によってはＵＳＢホストであってもよい。
【００２７】
図６は、グラフデータ構造１５２およびデータコンテンツ１５４をまとめて格納した共有メモリ６６の例示的な部分１５０を示したハイレベル概念図である。図示の例では、グラフデータ構造１５２がメモリ位置０〜ｍに存在し、データ１５４がアドレスｍ＋１〜ｎのメモリブロックに存在する。データ１５４およびグラフデータ構造１５２は、図中ではメモリ位置が隣接しているが、隣接したメモリブロックに割り当てる必要はなく、メモリ６６または他のメモリ内で分割してもよい。
【００２８】
図５を参照して、ブロックアクセスデバイス５２は、グラフデータ構造ではなく低水準のアドレス方式すなわち離散開始位置アドレスおよび終了位置アドレスを用いてメモリ６６にアクセスするコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、ビデオゲーム機等の任意の電子機器であってもよい。ブロックアクセスデバイス５２は、場合によってはＵＳＢマスストレージプロトコルを動作させて周辺機器５４にアクセスするＵＳＢホストである。
【００２９】
周辺機器５４は、プロセッサ６２、有線インターフェース６４、メモリ６６、および無線インターフェース６８を備えている。プロセッサ６２は、ソフトウェア／ファームウェア命令を実行するマイクロプロセッサまたはＤＳＰ、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ハードウェア実装されたステートマシン等、本明細書に開示の機能を実行する任意の適当なデジタルプロセッサであってもよい。また、メモリ６６は、周辺機器５４に対して着脱可能なものも含めて、セキュアデジタル（ＳＤ）カード、ＳＤＨＣカード、ＳＤＸＣカード、ハードドライブ、半導体メモリ等、任意の適当なメモリ機器であってもよい。ブロックアクセスデバイス５２と周辺機器５４間の有線通信はＵＳＢが好ましく、無線通信はＷｉ−Ｆｉであってもよい。したがって、有線インターフェース６４は、市販のＵＳＢインターフェースモジュールであってもよい。また、無線インターフェース６８は、市販のＷｉ−Ｆｉインターフェースモジュールであってもよい。
【００３０】
周辺機器５４は２つ以上の機能を有しており、その１つは、ブロックアクセスデバイス５２またはグラフアクセスデバイス５６〜６０のいずれかがアクセス可能なメモリ６６のデータストレージアレイであってもよい。図示の例では、もう一方の機能は無線通信インターフェース６８である。データストレージアレイは、周辺機器５４上の共有メモリとして扱われ、上記機能および／または周辺機器５４がサポートする外部機器によって共有される。プロセッサ６２は、各機能のメモリ６６へのマッピングを行い、ブロックアクセスデバイスおよびグラフアクセスデバイス５２、５６〜６０によるメモリ６６へのアクセスを制御する。共有メモリ６６を用いることにより、周辺機器５４が提供する無線インターフェース６８およびデータストレージアレイ等の機能は、外部のブロックアクセスデバイス５２とグラフアクセスデバイス５６〜６０間でデータを通信または共有するために互いに直接通信を行う必要はない。その代わりに、これらの機能は、メモリ６６を介して互いに間接的に通信を行う。
【００３１】
プロセッサ６２は、ブロックアクセスデバイス５２およびグラフアクセスデバイス５６〜６０によるメモリ６６への同時アクセスを許可するように構成されている。これは、メモリ６６へのアクセス中にブロックアクセスデバイス５２によって行われた１または複数のメモリブロックアクセス動作をプロセッサ６２が監視することによって実現される。以下に詳述するように、プロセッサ６２は、メモリ６６を階層ファイルシステムにマッピングする複数のポインタを含むグラフデータ構造に上記ブロックアクセス動作を変換する。これにより、グラフアクセスデバイス５６〜６６のいずれも、ブロックアクセスデバイス５２と同時にメモリ６６にアクセス可能となる。グラフアクセスデバイス５６〜６６の１または複数は、ブロックアクセスデバイスのメモリ６６へのアクセス中に、グラフデータ構造に従ってメモリ６６にアクセスしてもよい。
【００３２】
本明細書において、「同時」「同時に」という用語の使用は、それぞれの通常の意味を表すものの、「外見上は同時」という意味もある。すなわち、周辺機器５４、７０、もしくは１００における実際のメモリアクセスが順々に起こっている場合であっても、ユーザーおよび／またはプロセスからは、ブロックアクセスデバイス５２およびグラフアクセスデバイス５６〜６０のうち少なくとも１つへのメモリアクセスが同時に起こっているように見える。周辺機器のメモリへの同時アクセスを提供する実用的な方法としては、同時に見える速度でのメモリへの多重アクセスと、周辺機器に多ポートメモリを備えることによる真の同時アクセスとの２つが挙げられる。
【００３３】
ブロックアクセスデバイス５２は、図５においては有線インターフェース６４を介して周辺機器に接続されているが、無線接続または無線接続と有線接続との組み合わせを介して接続してもよい。同様に、グラフアクセスデバイス５６〜６０のいずれも、無線リンクの代わりに有線接続を用いるか、または無線接続と有線接続との組み合わせを用いて周辺機器５４に接続してもよい。また、ブロックアクセスが行われず、グラフアクセスのみが行われる場合もある。
【００３４】
上記周辺機器５４は、図７に示すようなより一般的な周辺機器アーキテクチャに拡張可能である。図７は、２つ以上の通信インターフェース７２、７４、７６、７８を備えた別の例示的な多機能周辺機器７０の特定の構成要素を示したブロック図である。この周辺機器７０も、プロセッサ６２およびメモリ６６のほか、充電式バッテリ等のバッテリまたはスーパーキャパシタ等のその他適当な蓄電要素である電源８０を備えている。各通信インターフェース７２〜７８は、本明細書に開示のいずれか等、有線または無線のインターフェースであってもよい。通信インターフェース７２〜７８の各々は、周辺機器７０上では異なる機能であるため、プロセッサ６２がインターフェース７２〜７８の共有メモリ６６へのマッピングを行う。これら通信インターフェース７２〜７８は、プロセッサ６２が管理する共有メモリ６６を介してデータの相互通信および／または授受が可能である。周辺機器７０には、通信インターフェース７２〜７８の内１または複数を介して、ブロックアクセスデバイスまたはグラフアクセスデバイスを接続してもよく、本明細書に記載の方法を用いてメモリ６６に同時アクセスしてもよい。
【００３５】
図８は、図５に示す多機能周辺機器５４の特定の例示的な実施態様における特定の構成要素を示したブロック図である。図８の周辺機器１００は、中央演算処理装置（ＣＰＵ）１０２またはプロセッサ、メモリ１０４、ＵＳＢインターフェース１０６、無線インターフェース１０８、電力管理モジュール１１０、電源１１２、１または複数のセンサー１１３、ランダムアクセスメモリ（ＲＡＭ）１１４、リードオンリーメモリ（ＲＯＭ）１１６、およびユーザーインターフェース１１８を備えている。また、ユーザーインターフェース１１８は、スイッチ１２０およびＬＥＤ１１２等の可視的表示器を備えている。
【００３６】
ＣＰＵ１０２は、ソフトウェア／ファームウェア命令を実行するマイクロプロセッサまたはＤＳＰ、特定用途向け集積回路（ＡＳＩＣ）、ハードウェア実装されたステートマシン等、本明細書に開示の機能を実行する任意の適当なデジタルプロセッサであってもよい。ＣＰＵ１０２は、プログラミング命令およびデータを格納するＲＡＭ１１４およびＲＯＭ１１６等のオンボードメモリを備えた市販のマイクロプロセッサであることが好ましい。
【００３７】
ＲＯＭ１１６は、周辺機器のブートコードまたはスタートアップコードを格納することができる。ＣＰＵ１０２は、ＲＯＭ１１６を用いてそのコードのスタートアップおよび動作を行わせる。このスタートアップコードまたはブートコードに別個のＲＯＭ１１６を使用する代わりに、メモリ１０４の一部をブートコードに使用することも可能である。ＲＡＭ１１４は、ＣＰＵ１０２が使用するデータおよびプログラミング命令を格納することができる。
【００３８】
メモリ１０４は、任意の適当なメモリ機器であってもよく、着脱可能なＳＤカードであることが好ましい。ＳＤカードを用いる場合、周辺機器１００は、カードを挿入するＳＤポートを備えていてもよい。メモリ１０４はメモリプールであって、他の物理的メモリおよび／または機器を備えた大型のメモリプールの一部であってもよい。また、場合によってはフラッシュメモリ等の取り外しできない埋め込み式半導体メモリであってもよい。
【００３９】
ＵＳＢインターフェース１０６は、ＣＰＵ１０２に接続するデジタルバスを備えた市販のＵＳＢインターフェースモジュールであることが好ましい。また、無線インターフェース１０８についても、ＣＰＵ１０２に接続するデジタルバスを備えた市販のＷｉ−Ｆｉインターフェースモジュールであることが好ましい。
【００４０】
周辺機器の無線インターフェース１０８は、標準的なウェブプロトコル上に提供されたＷｉ−Ｆｉ（８０２．１１）インターフェースであってもよい。周辺機器１００は、ＩＰスタックおよびＨＴＴＰサーバーを含む。また、無線ネットワーク上の他の機器にその存在を知らせるため、リンクローカルマルチキャストＤＮＳ（ＺｅｒｏＣｏｎｆまたはＢｏｎｊｏｕｒとしても周知）を使用する。周辺機器１００へのアクセスは、Ｗｉ−Ｆｉ暗号化（ＷＥＰまたはＷＰＡ）、ＭＡＣアドレスフィルタリング、および／またはアプリケーション層セキュリティ（ＳＳＬおよびＨＴＴＰ認証）を用いて制御してもよい。
【００４１】
周辺機器１００は、接続された複数の無線クライアント間でのファイルアクセスの調整を行ってもよい。例えば、接続された複数のクライアント上のメディア（映像または音声）にアクセスする場合、周辺機器１００は、すべてのクライアントが同期再生の開始を要求できるようにしてもよい。この調整は、周辺機器１００からクライアントに送信されてクライアント上で実行されるプログラム（例えば、リッチＡＪＡＸクライアントアプリケーション等）または標準的なメディアストリーミングプロトコルを介して行ってもよい。
【００４２】
電源１１２は、周辺機器１００がＵＳＢポートに接続された時に充電可能な充電式バッテリ等のバッテリまたはスーパーキャパシタ等のその他適当な蓄電要素であってもよい。周辺機器１００は、電源１１２を付加することによって、ホストＵＳＢポート等のホストから抜いた後にも機能する。この場合、電源１１２は周辺機器に電力を供給可能である。したがって、周辺機器１００は、ＵＳＢホストに接続中またはＵＳＢホストに接続されていない場合に、独立した機器として機能する。また、接続されているにも関わらず周辺機器１１２が機能するのに十分な電力をホストが提供できていない場合も、電源１１２が周辺機器１００に電力を供給可能である。
【００４３】
電力管理モジュール１１０はＣＰＵ１０２に接続されており、一般的にはＣＰＵ１０２を介して、ＵＳＢインターフェース１０２、電源１１２、およびユーザーインターフェース１１８にも接続されている。このモジュール１１０は、ＵＳＢインターフェース１０６を介した充電、スリープモード、およびユーザーインターフェース１１８のＬＥＤ１２２によって表示される周辺機器の電力状態表示器（充電状態、低電力状態等）といった電源１１２を管理するための市販のソフトウェア要素およびハードウェア要素を備えている。
【００４４】
センサー１１３としては、ＣＰＵ１０２に連結された任意の適当な数または種類のコンテキストセンサーを挙げることができる。例えば、センサー１１３としては、実時間クロック、市販のＧＰＳ位置決めモジュール、加速度計、バイオメトリックセンサー、温度センサー、等が挙げられる。また、センサー１１３の出力は、本明細書に記載の方法と連動してＣＰＵ１０２が使用することにより、ブロックアクセスデバイスおよび／またはグラフアクセスデバイス（例えば、ホストおよび／またはクライアント）からメモリ１０４へのアクセスを承認または拒否することができる。
【００４５】
周辺機器１００を用いることにより、ＵＳＢホスト（例えば、ブロックアクセスデバイス５２）がＵＳＢインターフェース１０６と通信を行う。無線インターフェース１０８の無線通信機能は、メモリ１０４にマッピングされて、ＵＳＢホストとは独立に機能する。また、ＣＰＵ１０２は、ＵＳＢホストの無線通信機能およびデータストレージ機能をまとめてメモリ１０４に適宜マッピングする。その他、より高機能の無線サーバーを提供する機能および／または管理機能等の別の機能も周辺機器１００のメモリにマッピングしてもよい。これらメモリマッピングによって、ＵＳＢホストは、ＵＳＢマスストレージプロトコルにより周辺機器１００にアクセスすると、従来のＵＳＢ周辺機器における論理的に分離された無線機器およびストレージデバイスとしてではなく、周辺機器１００を単一のＵＳＢストレージデバイスと見なす。これにより、周辺機器の追加機能はホストに対して透過的となる。ＵＳＢホストでは、無線機能に対してドライバを追加する必要が一切なくなり、メモリ１０４上のデータストレージアレイと通信を行いさえすればよい。これにより、ＵＳＢホストは、ソフトウェアを追加することなく、ＵＳＢストレージプロトコルを活用して追加機能を受け取ることができる。
【００４６】
ＣＰＵ１０２は、メモリ１０４の特定部分を異なる機能およびマスストレージに内部で割り当てることによって、メモリマッピングが可能である。これらの割り当てはＣＰＵ１０２が管理し、ホストおよび無線インターフェース１０８を介して周辺機器１００と通信するその他の機器に対して透過的であってもよい。
【００４７】
メモリマッピングでは、周辺機器１００に設けられた物理ストレージまたは任意の粒度の任意の組み合わせ仮想／物理ストレージを参照可能である。例えば、各フォルダまたはファイルが周辺機器のどこか別の場所に存在するか、同じファイルの各部が異なるメモリ上に存在する。あるいは、メモリアクセスの結果、通信インターフェース１０６、１０８の機能が変更となる。
【００４８】
また、ＣＰＵ１０２は、本明細書に開示の方法を用いて、各機能、ブロックアクセスデバイス、およびグラフアクセスデバイスからメモリ１０４への同時アクセスを行えるように構成可能である。
【００４９】
複数の機能を共通の（または複数の共通の）メモリ空間にマッピングする上記周辺機器アーキテクチャにより、周辺機器１００は、無線ネットワークインターフェースおよびデータストレージの機能を越えて、ＵＳＢホストには単一の論理デバイスに見える複数の機能を含むことができる。例えば、周辺機器１００は無線インターフェース１０８、メモリ１０４のマスデータストレージ、およびその他の機能を含む場合があるが、ＵＳＢホストはこれら周辺機器の機能を単一のファイルシステムと見なしてもよい。したがって、ＵＳＢホストは、ファイルと相互作用しているように、周辺機器１００上のすべての機能を扱うことができる。このため、ホストは、周辺機器の機能とソフトウェアアプリケーション層レベルで連動可能である。これにより、ＵＳＢホストは、周辺機器１００による各機能へのマッピングがあるにも関わらず、ホストとは独立に周辺機器１００を１つの機能として扱うことができる（ただし、直接的または暗黙的な設定をメモリ１０４に格納することによって、ＵＳＢホストが設定した上記第２の機能を制御することも可能である）。
【００５０】
周辺機器１００のＵＳＢおよび無線インターフェース１０６、１０８のいずれも、ハードウェアが提供する接続機器／ホストとの直接インターフェースではなく、結局は周辺機器のソフトウェアによって制御されるため、各メディアを介したストレージおよび／または機能の提供方法を当該ソフトウェアにより決定することができる。特に、ソフトウェアでは以下のようなことが可能となる。
１．複数のデータソースを組み合わせて１つの論理ストレージプールを生成（例えば、無線インターフェース上での内部ＲＯＭおよびＳＤストレージからのデータの組み合わせ等）、
２．認証またはその他の要因に基づいてデータへのアクセスを制限または防止、および／または
３．ＳＤカード等のメモリ１０４上でデータを暗号化（復号化にはホストまたはクライアントからのキーが必要）、および／または
４．ＵＳＢまたは無線インターフェース１０６、１０８のいずれかを介した論理ストレージプールへの独立データ転送を含む追加機能を提供。
【００５１】
図８の例では、周辺機器１００とそれに接続された外部サーバー間で無線インターフェース１０８を介して、マスストレージデバイスとしての周辺機器１００と相互作用しているＵＳＢホストとは独立にＷｉ−Ｆｉトランザクションが発生する可能性がある。例えば、共有メモリ１０４にファイルとして何が格納されても、ＣＰＵ１０２によって、外部サーバーまたは１もしくは複数のその他類似機器との同期をＷｉ−Ｆｉインターフェースを介して自動的に図ることができる。
【００５２】
また、周辺機器１００は、ＵＳＢホストの様々な制御方法を提供することにより、データストレージおよび／またはＵＳＢデータストレージプロトコルを活用して第２の機能の態様を制御することができる。例えば、通常のＵＳＢマスストレージプロトコルおよびＵＳＢホストのソフトウェアは、ファイルアロケーションテーブル（ＦＡＴ）またはその改良型（ｖＦＡＴ、ＦＡＴ３２、ＦＡＴ１６、ｅｘＦＡＴ、ＮＴＦＳ、ＮＦＳ等）といった周知のファイルストレージデータベースを利用する。第２の機能が例えばＷｉ−Ｆｉ無線通信の場合、データドライブのボリューム名は、ホストでのＷｉ−Ｆｉ用ＳＳＩＤ名に直接マッピング可能である。そして、ＵＳＢホストは、周知のボリューム改名機能を用いて、ＳＳＩＤの名称を制御することができる。あるいは、それぞれが特化したファイルフォルダ名に対応する複数のＳＳＩＤが存在してもよい。これにより、ユーザーは、Ｗｉ−Ｆｉネットワークの選択中に複数のＳＳＩＤを単一のメニューとして閲覧し、許可された然るべきアクセスを選択することができる。以下に詳述するように、複数のユーザー／サーバーは、異なるセキュリティレベルで、ＳＳＩＤを介して様々なフォルダにアクセス可能である。
【００５３】
また、ＣＰＵ１０２は、トランスコードおよび／または暗号化／復号化等の追加機能を提供するように構成することもできる。トランスコードの場合、ＣＰＵ１０２は、例えば映像、音声、または文書ファイル等のコンテンツをあるデータフォーマットから別のフォーマットへ、コマンドを起動しているホストとは独立に自動変換可能である。また、ＣＰＵ１０２は、ファイルの転送中または転送後のいずれであっても、メモリ１０４へ格納するデータの暗号化および／または復号化が可能である。
【００５４】
周辺機器１００の基本的な機能は、無線および有線インターフェース１０６、１０８を介したストレージへのアクセスを提供することである。周辺機器１００の特定の構成には、これら特徴の基本的な実施態様を備えることにより、ＵＳＢ２．０またはＳＤ／ＳＤＨＣストレージ（メモリ１０４）への無線アクセスを提供している。暗号化されたファームウェアは、ダウンロードしてＳＤ／ＳＤＨＣストレージ（メモリ１０４）に直接格納した後、内蔵ＲＯＭ１１６の更新に使用可能である。あるいは、内蔵ＲＯＭ１１６に直接ダウンロード可能である。このダウンロードは、ＵＳＢインターフェースまたはＷｉ−Ｆｉインターフェースを介して行うことができる。この複合機器のその他の構成要素は、標準的なＵＳＢ２．０ＳＤカードリーダー機として提供される。
【００５５】
ＵＳＢを介した接続中、周辺機器１００は、ホストから電力を引き出すことによって内部電源１１２を充電する。ＵＳＢを介して接続していない場合、周辺機器１００は、スイッチ１２０での決定により、電源をオンにしてもオフにしてもよい。スイッチ１２０は、周辺機器１００上の押しボタンであってもよい。電源オンの場合、周辺機器１００は、（アドホック／ピアツーピア、インフラモード、および／またはＷｉ−Ｆｉダイレクト等の様々なモードを用いて）８０２．１１無線ネットワークをブロードキャストする。無線ネットワークの名称は、挿入されたＳＤカードの名称により決定されてもよい（カード非挿入の場合はデフォルトの名称を選択）。また、暗号化設定は、カード上のファイルによって決定される（カード非挿入の場合は暗号化なし）。
【００５６】
無線ファイルアクセスは、周辺機器１００に含まれる標準的なＨＴＴＰサーバーにより提供してもよい。周辺機器１００は、プライベートなリンクローカルＩＰアドレスを自身に割り当て、接続されたクライアントによる発見可能性をサポートするため、リンクローカルマルチキャストＤＮＳメッセージに応答する。ＨＴＴＰサーバーは、周辺機器からのファイルへのアクセスに用いられるダイナミックＡＪＡＸアプリケーションをｉＰｈｏｎｅ／ｉＰａｄ等の接続されたｉＯＳ機器に送信可能である。他のクライアントは、基本的なファイルリストを受信する。
【００５７】
メモリ１０４がＳＤまたはセキュアデジタルハイキャパシティ（ＳＤＨＣ）カードである周辺機器１００の構成において、周辺機器１００の電源がオンの場合は、ＳＤ／ＳＤＨＣカードの挿入または取り外しをスキャンする。周辺機器１００に対するカードの挿入または取り外しがあると、それに応答して一連の動作が行われる場合がある。カード挿入時に周辺機器１００がＵＳＢを介して接続されている場合は、カードが挿入済みであることをホストに通知することができ、これによりホストは、カードのコンテンツを視聴および修正することができる。カードが取り外された際も同様に、周辺機器１００はそのことをホストに通知する。そして、ストレージからの情報を用いて無線アクセスを構成してもよい。例えば、カードのボリューム名を用いて無線インターフェースのＳＳＩＤを設定してもよいし、カード上のファイルを用いて暗号キーを決定してもよい。カードの挿入および取り外しにより、カードに設定データが存在する場合は、無線インターフェース１０８の状態変更が発生する。周辺機器１００は、カード上の特定のファイルによって、すべてのカードまたはその他最優先の設定情報を持たないカードに当てはまるデフォルトのパラメータの設定を開始してもよい。
【００５８】
別の構成においては、ＵＳＢインターフェース１０６の代わりにシリアルＡＴＡ（ＳＡＴＡ）またはセキュアデジタル（ＳＤ）カードインターフェース等の有線ストレージインターフェースを用いることもできる。また、Ｗｉ−Ｆｉとの別の無線インターフェースとしては、例えば３Ｇ／４Ｇ携帯電話モデム、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＮＦＣ、赤外線、ＺｉｇＢｅｅ改良型等を上記無線インターフェースとして用いることもできる。また、複数の無線インターフェースをサポートすることも可能である（例えば、Ｗｉ−Ｆｉ８０２．１１とＢｌｕｅｔｏｏｔｈ（登録商標））。これらのインターフェースは、異なるプロトコルを介して同じサービスを提供してもよいし、独自の方法で組み合わせてもよい。暗号化されたストレージまたは認証された無線クライアントへのアクセスのロックを解除するキーとしては、Ｂｌｕｅｔｏｏｔｈ（登録商標）近接ペアリングを用いてもよい。周辺機器１００は、Ｂｌｕｅｔｏｏｔｈ（登録商標）（ＤＵＮ）を介してインターネット接続を取得し、これをファイルサービスに用いてもよい。この場合は、Ｗｉ−ＦｉまたはＵＳＢを介して接続を他の機器と共有してもよい。
【００５９】
別の構成においては、無線または有線インターフェース１０６、１０８の内１または複数を介して通信を行うネットワークサーバー等、周辺機器１００以外の１または複数の機器上にメモリ１０４を設けてもよい。このような構成においては、物理的なメモリストレージアレイが周辺機器１００上に存在しない場合、ＣＰＵ１０２が行うメモリマッピングでは仮想メモリが参照される。また、当該仮想メモリへの／からの転送を行うには、周辺機器１００とリモートのストレージサーバー／ユニット間の通信が必要となる。この場合、周辺機器１０２は、データが実存しない場合は、周辺機器１０２上に物理的に設けられているかのように無線または有線インターフェース１０６、１０８を介して他のホスト／クライアントにデータを提供するように構成されている。これらの構成においては、ＣＰＵ１０２が必要に応じて、リモートで格納されたコンテンツの一部をローカルメモリストレージ（ＲＡＭ１１４等）にキャッシングすることにより、ホストがリモートメモリにアクセスしている時のネットワーク待ち時間および速度等の性能を改善することもできる。この場合、キャッシュデータはホストに対して透過的である。すなわち、ホストはローカルメモリストレージの性能の利益を享受するが、依然として、キャッシュデータは周辺機器１００上のストレージアレイに格納されているものと見なす。
【００６０】
図９は、多機能周辺機器１００の例示的なソフトウェアアーキテクチャ２５０を示した図である。周辺機器１００のソフトウェアアーキテクチャ２５０は、多数の層状要素で構成されている。
【００６１】
ソフトウェアの最下層は、周辺機器ハードウェアとの接続を扱うとともに、ＵＳＢ機器、ＳＤカードインターフェース、Ｗｉ−Ｆｉ  ＳＤＩＯインターフェース、ＬＥＤおよびスイッチ等のユーザーインターフェース、クロックおよび電力制御、並びにバッテリの充電を制御する。このソフトウェアの最下層には、ＵＳＢハードウェアバスインターフェース２７６、ＳＤハードウェアバスインターフェース２７８、ＳＤメモリドライバ２７０、ＳＤ入出力（ＳＤＩＯ）２７２、タイマーサービス２７４、例えば温度センサー、実時間クロック、ＧＰＳ位置決めモジュール等とのソフトウェアインターフェースを含むセンサーインターフェース２８０、ユーザーインターフェース２８２、タイマーサービス２７４、バッテリ管理２８４、およびＷｉ−Ｆｉドライバ２６８が含まれる。この層は、周辺機器ソフトウェアの残りの部分が使用するハードウェア抽象化レイヤーを構成している。
【００６２】
周辺機器ソフトウェアの上位層は、機器の主要な特徴を規定する。これらの層には、ＵＳＢマスストレージプロトコルソフトウェア２５４、ファームウェア更新ソフトウェア２５６、グラフアクセスサーバー（例えば、ｍＤＮＳ、ＨＴＴＰ、ＦＴＰ等）２５８、Ｗｉ−Ｆｉ設定ソフトウェア２６０、ＴＣＰ／ＩＰスタック２６２、電力管理・設定ソフトウェア２６４、ＦＡＴ２６６等のグラフデータ構造、およびコンテキストを意識したステートマシン２５２が含まれる。
【００６３】
コンテキストを意識したステートマシン２５２には、本明細書に開示の方法を実行するためのソフトウェアコードを含むことができる。また、ステートマシン２５２には、セキュリティおよび認証、暗号化／復号化、トランスコード、メモリおよび機能アクセス制御、通信チャンネル制御等、本明細書に記載の付加的なサービスを提供するためのソフトウェアコードを含むことができる。
【００６４】
ファームウェア更新ソフトウェア２５６は、ＳＤカードインターフェース２７８またはＵＳＢインターフェース１０６を介して周辺機器のソフトウェアをシステム内更新する際に使用する。ＵＳＢの仕様は固定されておらず、プロトコルの更新および拡張は定期的に発生する。その他の更新としては新たなプロファイルが挙げられ、無線ネットワークの新たな規格等、新たなソフトウェアドライバでホストを更新する必要性を無くして相互運用性を改善する。
【００６５】
ＵＳＢマスストレージプロトコルソフトウェア２５４は、ＵＳＢインターフェース１０６を介してメモリ１０４のコンテンツ（および場合によってはその他のデータ）を添付ディスクとしての接続ホストに提供する。別の例では、メモリ１０４へのアクセスを有するネットワーク周辺機器としてのホストに接続するＵＳＢネットワークアクセス等のＵＳＢプロトコルも考えられる。
【００６６】
電力管理・設定ソフトウェア２６４は、バッテリの充電および省電力モードを制御する。
【００６７】
このソフトウェアは、Ｗｉ−Ｆｉアクセスポイント（ＡＰ）またはＷｉ−Ｆｉクライアントのいずれかとして機能するように周辺機器１００を設定する。周辺機器１００は、Ｗｉ−Ｆｉ  ＡＰとして動作する場合は周囲に移動式のパーソナルエリアネットワーク（ＰＡＮ）を提供する。別の例では、ＡＰおよびクライアントへの同時アクセスにより周辺機器１００が機能するようにすることも可能であって、Ｗｉ−Ｆｉダイレクト規格を活用してもよい。
【００６８】
一部の構成において、周辺機器１００は、Ｗｉ−Ｆｉ  ＡＰモードで動作中に機能を増強するため、１または複数のＷｉ−Ｆｉクライアントと「一体化」することもできる。周辺機器１００は、必要に応じて各クライアントのＭＡＣアドレスおよび特定のログイン認証情報を格納することにより、クライアントと一体化される。また、周辺機器１００は、ＡＰモードで動作中、別のＡＰに送信されている一体化クライアントのＭＡＣアドレスのＷｉ−Ｆｉチャンネルを傍受する。一体化クライアントは、別のＡＰとの接続を試みる場合、そのＭＡＣアドレスをブロードキャストする。周辺機器１００は、ブロードキャストされたクライアントのＭＡＣアドレスを検出すると、クライアントの接続要求に対してブロードキャストされた他のＡＰの宛先ＭＡＣアドレスを待って検出する。そして、周辺機器１００は、他のＡＰに接続する必要がある場合、宛先ＭＡＣアドレスとクライアントに対応する格納されたログイン認証情報とを比較する。あるいは、周辺機器１００は、クライアントの接続伝送からログイン認証情報を傍受することもできる。周辺機器１００は、他のＡＰの領域内に存在する場合、Ｗｉ−Ｆｉクライアントモードに切り替わり、一体化機器の認証情報を用いてＷｉ−Ｆｉクライアントとして他のＡＰに接続可能である。
【００６９】
別のソフトウェアアーキテクチャを実装しても、同じ結果を得ることができる。また、既知のソフトウェア技術を用いて削減、代用、付加、および／または再構成を行うことにより、周辺機器のソフトウェア／ファームウェアを実装することもできる。
【００７０】
ＩＩ．メモリプールへのアクセス方法
図１０は、グラフアクセスデバイスおよびブロックアクセスデバイスの共有メモリプールへの同時アクセスを可能にする例示的な方法を示したフローチャート３００である。この方法は、本明細書に記載の周辺機器５４、７０、１００のいずれによって実行してもよい。グラフアクセスは、グラフとして構成されたデータへのアクセスを表すため、サーバーまたはプロセッサは、高水準のアクセスコマンドを受信して、グラフデータ構造等のデータ構造によりグラフをメモリプールコンテンツに分解する。ブロックアクセスは、離散開始位置アドレスおよび終了位置アドレスを用いたメモリプールへのアクセスを表す。
【００７１】
ステップ３０２においては、ブロックアクセスデバイスがメモリプールにアクセスしようとする試みが検出される。周辺機器がメモリプールへのアクセスを承認すると、周辺機器のプロセッサは、メモリプールへのアクセス中にブロックアクセスデバイスによって行われたメモリブロックアクセス動作の監視へと移行する（ステップ３０４）。メモリブロックアクセス動作としては、ブロック読み出し動作またはブロック書き込み動作が挙げられる。プロセッサは、動作の種類（読み出しまたは書き込み）、動作の数、およびブロックアクセス中の動作のメモリアドレス位置を追跡する。
【００７２】
次のステップ３０６においては、プロセッサが、メモリプールを表すグラフデータ構造に上記ブロックアクセス動作を変換する。グラフデータ構造には、メモリプールを階層ファイルシステムにマッピングする１または複数のポインタが含まれる。単純なグラフデータ構造の例を図１１、図１２、図１４、および図１５に示す。上記変換ステップにおいては、分解プロセスを用いてもよい。すなわち、バッファリングした複数の更新をグラフデータ構造に分解してもよい。分解には、当該技術分野において既知のＮウェイマージアルゴリズムを用いてもよい。
【００７３】
分解は、ブロックアクセスのために必要となる。メモリプールでグラフアクセスがいつ発生しても、グラフデータ構造は常に適格な状態を維持する。しかし、ブロックアクセスが発生すると、グラフデータ構造は一時的に不適格な状態となる場合がある。周辺機器のプロセッサは、将来的にはある時点でグラフを分解することになる。
【００７４】
分解プロセスの分解／開始時期については、以下のような様々な粒度のレベルが存在する。
１．最小粒度：すべてのアクセス（ブロックおよびグラフ、読み出しおよび書き込みの両方）が停止するまで分解を遅延させる。すなわち、ＵＳＢホストから機器が取り出されるとともにすべてのＷｉ−Ｆｉクライアントが非接続となるまで分解を遅延させ、その後分解する。
２．ブロックアクセスが停止し、分解が終了するまでグラフアクセスをロックアウトするようにグラフデータ構造を更新した後、グラフアクセスを再開するまで分解を遅延させる。例えば、分解が終了するまでＷｉ−Ｆｉ通信を失速させる。
３．アクセス中のファイルを識別し、同時アクセス中ではないファイルを即座に分解する（別個のバッファを用いなくてもよい）。
４．アクセス中のファイルの部分を識別し、当該部分を即座に分解する。別の改良として、アクセス対象となる部分を予測し、アクセスの可能性が低くなるまで当該部分の分解を阻止する。
５．ブロックアクセスによってグラフデータ構造が安定した状態となった時を識別し、分解プロセスを適用する。
【００７５】
選択肢として、機器プロセッサは、周辺機器の内部グラフデータ構造を更新してグラフと以前のブロック動作とを一致させることにより、および／またはメモリブロックを移動／コピーしてブロックメモリとグラフアクセスとを一致させることによりメモリを分解してもよい。これら分解動作の一方または両方は、グラフ（グラフデータ構造）の漸増的な更新であって、プロセッサまたはホスト機器によるブロックメモリの完全な再スキャンよりも起こり得るものであり、発生した更新が分解される。この漸増的な分解は、グラフアクセスデバイスまたはブロックアクセスデバイスのいずれかによる一連のブロックアクセスが完了した後に発生する。
【００７６】
状況によっては、上記ブロックアクセス動作の変換が、プロセッサによるアドレスＡの要求メモリブロックの別のアドレス（例えば、アドレスＢ）へのリダイレクトを伴うこともある。この手法は、周辺機器の内部グラフデータ構造が更新され、ブロックアクセスデバイスが自身の内部グラフデータ構造を更新していない場合に用いられる。また、プロセッサは、ブロックアクセス動作の完了を待って、ブロックの並べ替えおよび／または内部グラフデータ構造の部分的な再構成を順次行うことによりブロックおよびグラフ構造を互いに一致させるようにしてもよい。
【００７７】
ステップ３０８において、周辺機器のプロセッサは、グラフアクセスデバイスにグラフデータ構造を提供する。これは、グラフアクセスデバイスがアクセス可能なメモリ領域に更新グラフデータ構造を格納することによって行ってもよい。そして、グラフアクセスデバイスは、グラフデータ構造に従って、ブロックアクセスデバイスと同時にメモリプールにアクセス可能である。
【００７８】
図１１は、グラフデータ構造３５２のブロックメモリアレイ３５０へのマッピングの一例を示した概念図である。メモリアレイ３５０は、局所的にでも分散的にでも、物理的または仮想的に、本明細書に記載のメモリのいずれか（例えば、メモリ６６、１０４等）に含まれていてもよい。図示の例では、メモリアレイ３５０がメモリブロック（またはクラスタ）Ｂ１〜Ｂｎを備えている。ここで、ｎは任意の適当な整数値である。各ブロックのバイト数は、任意に適当であってもよい。
【００７９】
ブロックアクセスデバイスは、プロセッサ６２、１０２にブロックアドレスを提供することによってアクセス可能なアレイ３５０の任意のブロックにアクセスしてもよく、その後は、ブロックアクセス動作に応じて、アドレス指定されたブロックに対してデータの書き込みまたは読み出しを行う。
【００８０】
グラフデータ構造３５２は、階層的なグラフ表現をメモリアレイ３５０に強制する。グラフデータ構造は、ＦＡＴまたはその改良型（ｖＦＡＴ、ＦＡＴ３２、ＦＡＴ１６、ｅｘＦＡＴ、ＮＴＦＳ、ＮＦＳ等）といったファイルストレージデータベースを含んでいてもよい。図示の例では、グラフデータ構造３５２がルートディレクトリＲ、ファイルＦ１、Ｆ２、Ｆ３、およびディレクトリＤ１を含んでいる。グラフデータ構造のこれら各要素は、それぞれに対応するメモリブロックを識別するポインタを含んでいる。例えば、ディレクトリＤ１はブロックＢ５に、ファイルＦ２はブロックＢ６、Ｂ９、Ｂ１０に、ファイルＦ３はブロックＢ１０５、Ｂ１０６に対応する。
【００８１】
グラフアクセスデバイスは、グラフデータ構造３５２を用いてメモリアレイ３５０にアクセスする。これは、データ構造３５２のファイルおよび／またはディレクトリを読み出し、書き込み、あるいは操作することによって行う。そして、プロセッサ６２、１０２がグラフデータ構造３５２のポインタを用いることにより、アレイ３５０の対応するメモリブロックにアクセスする。
【００８２】
図１３は、ブロックアクセスデバイスおよびグラフアクセスデバイスに対して外見上は同時のメモリアクセスを許可するシャドウメモリ技術の一例を示した概念図である。シャドウメモリ技術は本質的に、メモリアレイ４００の書き込み中のアドレスにグラフアクセスデバイス等の別の機器が同時アクセスしている場合、ブロックアクセスデバイスによるメモリブロック書き込みをバッファリングする。当該技術およびメモリアレイ４００は、本明細書に記載の周辺機器５４、７０、１００のいずれにおいても実装可能であって、メモリアレイ４００は周辺機器のメモリ６６、１０４に設けることもできる。
【００８３】
シャドウメモリのバッファは、同じメモリプールに設けてもよいし、周辺機器の別個のメモリプールに設けてもよい。同じメモリプールの場合、バッファリングされたデータはメモリアレイ４００の未使用領域に格納される。プロセッサ６２、１００は、バッファのメモリ領域が確保されたことを示すグラフデータ構造４０２を更新するか、または、プロセッサ６２、１０２はシャドウバッファの位置を示す自身の使用メモリテーブルを保持する必要がある。グラフアクセスデバイスまたはブロックアクセスデバイスの書き込みが一時使用のバッファメモリの位置に発生する場合、プロセッサ６２、１０２は、その書き込みをメモリアレイ４００の未使用部分にリダイレクトする。
【００８４】
図示のシナリオ例では、ブロックアクセスデバイスがメモリブロックＢ１０５、Ｂ１０６へのブロック書き込みを試行する。プロセッサ６２、１０２は、グラフアクセスデバイスがグラフデータ構造４０２を用いてファイルＦ３としてのブロックＢ１０５、Ｂ１０６にアクセス中であることを検出し、代わりに、ブロックＢ１１５、Ｂ１１６への書き込みをブロック書き込みに行わせると、これらがシャドウバッファとして動作する。グラフアクセスデバイスによるＦ３へのアクセスが完了すると、プロセッサ６２、１０２は、Ｆ３がＢ１０５、Ｂ１０６の代わりにＢ１１５、Ｂ１１６を指し示すためのグラフデータ構造４０２のポインタを更新することによってブロックアクセス書き込みを分解する。あるいは、Ｂ１１５、Ｂ１１６のコンテンツをＢ１０５、Ｂ１０６にそれぞれ転送した後、Ｂ１１５、Ｂ１１６を未使用ブロックとして解放する。
【００８５】
図１３は、シャドウメモリによりメモリプールへの外見上は同時のアクセスを可能にする方法をさらに詳しく説明するためのフローチャート４５０である。ステップ４５２において、ブロックアクセスデバイスは、メモリアレイ４００のＦ３のメモリブロックＢ１０５、Ｂ１０６への書き込み動作を試行する。プロセッサ６２、１０２は、書き込み動作を検出すると、グラフデバイスがＢ１０５、Ｂ１０６に対応するＦ３に現在アクセス中であるか否かを判定する（ステップ４５４）。アクセス中でない場合、プロセッサ６２、１０２は、ブロックＢ１０５、Ｂ１０６への書き込みを許可する（ステップ４５６）。
【００８６】
グラフアクセスデバイスが同じメモリブロックＢ１０５、Ｂ１０６にアクセス中の場合、プロセッサ６２、１０２は、代わりに未使用メモリブロックＢ１１５、Ｂ１１６への書き込みをブロックアクセスデバイスに行わせる（ステップ４５８）。
【００８７】
ステップ４６０において、プロセッサ６２、１０２は、グラフアクセスデバイスのメモリアクセス動作を監視して、グラフアクセスデバイスがＦ３へのアクセスを完了したか否かを判定する。そして、プロセッサ６２、１０２は、グラフアクセスデバイスがブロックへのアクセス動作を完了すると、Ｂ１１５、Ｂ１１６のコンテンツをＦ３に含むようにグラフデータ構造を分解する。図１２に関連して上述したように、バッファコンテンツＢ１１５、Ｂ１１６は、以下２つのいずれかの方法でグラフデータ構造４０２に分解される。一方は、Ｂ１１５、Ｂ１１６のコンテンツがＢ１０５、Ｂ１０６にコピーされる。他方は、Ｆ３に対するグラフデータ構造４０２のポインタがＢ１０５、Ｂ１０６の代わりにバッファＢ１１５、Ｂ１１６を指し示すように更新される。そして、ブロックに書き込まれたコンテンツは、同じメモリ位置Ｂ１１５、Ｂ１１６を維持する。
【００８８】
図１４は、複数の機器５０２、５０６に分散されてクラウドコンピューティングをサポートするメモリプールを示した概念図である。このメモリプールは、周辺機器５０２上に存在するメモリプールＡ５０８を備えている。周辺機器５０２は、上記周辺機器５４、７０、１００のいずれであってもよい。また、メモリプールは、ネットワーク機器５０６上に存在するメモリプールＢ５１０を備えている。ネットワーク機器５１０は、本明細書に記載の無線ネットワークおよび有線ネットワーク（例えば、ＵＳＢ等）といった任意の適当なネットワーク接続を介して周辺機器５０２に接続されている。
【００８９】
周辺機器５０２は、別個の機器上に物理的に設けられた別個のメモリプールＡ５０８、Ｂ５１０で構成されているものの、単一の論理メモリプールとして、分散メモリプールをＵＳＢホストまたはＷｉ−Ｆｉクライアント等の他の接続機器に提供するように構成されている。周辺機器５０２は、これをメモリプールＢ５１０のマッピングを行う第２のグラフデータ構造５１１に接続するポインタを含むグラフデータ構造５０９を用いて行うことにより、メモリプールＡ５０８、Ｂ５１０の両者を単一の論理メモリとして論理的にマッピングする。第２のグラフデータ構造５１１は、図１４に示すようにネットワーク機器５０６上のメモリプールＢに格納してもよいし、周辺機器５０２にアクセスしてメモリプールＢ５１０を参照できるのであれば、どこに格納してもよい。
【００９０】
外部データサービスについてもメモリプールと見なして、同様に扱ってもよい。例えば、ＲＳＳニュース収集サービスは、ニュース記事を有する他のサーバーを指し示すグラフデータ構造を備えた外部の第三者サーバーであってもよい。これは、グラフマッピングにより周辺機器５４、１００からアクセス可能なグラフデータ構造およびメモリプールである。
【００９１】
周辺機器５０８のグラフデータ構造５０９は、以下のいずれかにより更新可能である。
【００９２】
プル：ブロックアクセスまたはグラフアクセスによるリソースへのアクセスによって、物理的に分離されたメモリプールにあるデータのプルが発生する場合がある。
【００９３】
プッシュ：他の場所に設けられたメモリプールへのアクセスによって、アクセス開始により周辺機器５０８外に設けられたメモリプールのグラフデータ構造５０９の一部または全部の更新が発生する（新たなＷｉ−Ｆｉネットワークへの接続、Ｆａｃｅｂｏｏｋ更新等のサービスからの通知等）。
【００９４】
図１５は、特定のユーザーに制限された領域へのメモリプール５５０の例示的なパーティションを示した概念図である。周辺機器１００上で実行するコンテキストを意識したステートマシン２５２は、１または複数のグラフデータ構造内の特定のファイルおよびディレクトリにユーザーを制限するセキュリティ機構を備えていてもよい。ユーザーは、例えばパスワードその他の手段によって認証を行うことにより、メモリプール５５０の領域へのアクセスが可能である。アクセスを承認する許可は、グラフデータ構造の一部として格納および構成してもよい。
【００９５】
図示の例では、グラフデータ構造５５３で表される第１のメモリプールパーティション５５２に対して、ユーザーＡ、Ｃ、Ｄのアクセスが許可されている。ユーザーＢだけは、グラフデータ構造５５７で表される第３のメモリプールパーティション５５６に対してアクセスが許可されている。グラフデータ構造５５５で表される第２のメモリプールパーティション５５４に対しては、全ユーザー共通のディレクトリＤを介して、すべてのユーザーＡ、Ｂ、Ｃ、Ｄのアクセスが許可されている。
【００９６】
図１６は、少ないメモリ空間でＴＣＰ／ＩＰパケットを送信する例示的な方法を示したフローチャート６００である。この方法は、周辺機器１００上で動作するソフトウェア（例えば、ＴＣＰ／ＩＰスタック２６２および／またはステートマシン２５２等）により実装してもよい。この方法では、ＴＣＰ／ＩＰプロトコルの実行に必要なメモリストレージを低減できて都合が良い。このことは、周辺機器等のメモリおよびリソースが制限された機器には重要となり得る。
【００９７】
ステップ６０２においては、ＴＣＰ／ＩＰによりパケットが送信される。周辺機器１００の場合、このＴＣＰ／ＩＰパケットは、無線インターフェース１０８またはＵＳＢインターフェース１０６を介して送信してもよい。そして、従来のＴＣＰ／ＩＰにより、送信が成功したことを示す確認メッセージ（ＡＣＫ）が受信側ＴＣＰ／ＩＰノードから受信されるまで、通常、送信パケットのコピーが一時メモリに格納される。ＡＣＫが受信されない場合は、送信側でコピーしたパケットを一時メモリから素早く読み出して再送する。ただし、コピーしたパケットを一時的に格納するこの従来のＴＣＰ／ＩＰ手法には、相対的に多くのメモリ量を消費してしまうという欠点があるため、メモリ空間が限られたアプリケーションには望ましくない場合がある。
【００９８】
この欠点を克服するため、図１６の方法では、送信パケットをコピーすることなく、メモリプール内の存在位置に送信パケットへのポインタを格納する（ステップ６０４）。パケットの送信後は、従来のＴＣＰ／ＩＰプロトコルステップを用いて、受信側からＡＣＫが受信されたか否かの確認が行われる（ステップ６０６）。ＡＣＫが受信された場合は、パケットを追加送信する必要があるか否かが判定される（ステップ６０８）。必要な場合はステップ６０２に戻り、不要な場合は終了となる。
【００９９】
ＴＣＰ／ＩＰプロトコルによる規定の通り受信側からＡＣＫが受信されていない場合は、ポインタを用いてメモリプールからパケットを呼び戻し（ステップ６１０）、当該パケットを再送する（ステップ６１２）。
【０１００】
ＩＩＩ．周辺機器のセキュリティ
周辺機器５４、７０、１００がサポートするメモリプールの部分は、機器／パーティションレベルまたは個々のファイルレベルで暗号化可能である。ストレージの個々の部分が異なるキーで暗号化された場合、ストレージの全領域はマスターキーを用いてアクセス可能であってもよく、個々のサブキーは確保した領域（マスターキーを用いて暗号化）に格納される。あるいは、ストレージの全領域は、１つのキーで暗号化してもよい。
【０１０１】
暗号化されたストレージのロック解除は、有線インターフェースまたは無線インターフェースのいずれかを介して行ってもよい。ホストの認証のため、周辺機器５４、７０、１００は、標準的なマスストレージデバイスをホストに提供するとともに、キーとして動作する特定の名称のファイルの書き出しまたはディレクトリの作成をホストに要求するか、またはホスト上で動作するプログラムと通信を行ってもよい。ストレージをロック解除して無線アクセスまたは有線アクセスのいずれかを行うため、無線認証を利用してもよい。ロック解除の時期が決定された後のアクセスは、ユーザーがストレージを明確に再ロックするまで、および／または現在の無線ネットワークからの認証（ホワイトリスト）の停止もしくは他の無線ネットワークの検出（ブラックリスト）まで持続してもよい。無線認証に使用されるアクセス制御と同じモードを用いてもよい。例えば、ユーザーは、ＷＰＡ２を用いて無線アクセスの認証を行ってもよく、これにより、設定した持続時間にわたってストレージへの有線アクセスがロック解除される。また、ストレージのロック解除には、その他の標準的な認証方法（ＮＦＣ（近距離無線通信）ペアリング、ＲＦＩＤ、またはＢｌｕｅｔｏｏｔｈ（登録商標））を用いてもよい。
【０１０２】
また、周辺機器のプロセッサは、ブロックアクセスまたはグラフアクセスの接続のいずれを提供するかを判定する。この場合、プロセッサは、ステートマシンを用いて、特定のパイプ（接続）を介するかまたはメモリプールの様々な部分に対して、どのように特定アクセスをブロックするかを決定する。このため、プロセッサはホストからの要求を見て、当該要求に基づいて提供するアクセスの種類を判定するか、または既知の優先リストからサービス案内を提供して機器の応答内容を確認するか、または以前格納した設定に基づいて接続を許可するか、または時間、特定の既存接続または特定ホストの存在、周辺機器の位置、ローカルのメモリプールに格納されたデータの種類等の判定コンテキスト状況に基づいて接続を許可する。
【０１０３】
周辺機器のプロセッサが接続判定時に従い得る規則は複数組存在する。これらの規則は、接続クライアントまたは可用クライアント（Ｗｉ−Ｆｉネットワークの存在）、メモリプール内のデータ、事前設定条件、センサーデータ（時間、温度、光、位置）、グラフおよび／またはデータ比較（認証等）といった周辺機器が意識する様々なコンテキストすべてに言及可能である。
【０１０４】
これらの比較により、支払いシステム等が実現可能となる。
【０１０５】
別の構成においては、ブロックアクセスではなくグラフアクセスによりネットワーク機器としてのクライアントに周辺機器が接続される（ウェブをポップアップするＰＣに対するネットワーク機器として動作する。すなわち、ブロックアクセスのＷｅｂＤＡＶまたはＵＳＢマスストレージデバイスではなくデータへのグラフアクセスを行う）。
【０１０６】
また、接続クライアントから受信されたデータによって、ブロックアクセスまたはグラフアクセスのいずれを介してであっても、アクセス許可イベントが発生する可能性がある。例えば、３Ｇ／４Ｇデータ接続に対するＷｉ−Ｆｉ接続をオン／オフするテキストファイル等、一連のパラメータを有してクライアント機器の接続を変更するファイルを書き込むことができる。別の例としては、グラフのファイルディレクトリに命名して、特定の外部ネットワークサービスおよび／またはメモリプールからＲＳＳフィードを取得する。
【０１０７】
また、固有のデータおよび接続イベントの両者に基づいてプロセッサが意思決定を行う組み合わせデータ／接続インテリジェンスも存在する。これは、特定の時期において、周辺機器の現在のコンテキストに寄与する。
【０１０８】
ＩＶ．グラフアクセスからブロックアクセスへのマッピング
周辺機器５４、１００は、有線インターフェース６４、１０６を介してストレージを提供してもよいが、それは結局のところ、ローカルストレージおよび無線インターフェース６８、１０８を介して得られたリモートコンテンツの組み合わせに由来する。無線コンテンツは、様々なソースから得られたものであってもよく、周辺機器のソフトウェアによってローカルストレージに非同期でキャッシングされてもよい。情報ソースの例としては以下が挙げられる。
１．ローカルネットワーク上のファイル共有、
２．ポッドキャスト、フォトストリーム等の情報収集を含むＲＳＳフィード、および／または
３．ＹｏｕＴｕｂｅ等のオンラインネットワークからの映像収集。
【０１０９】
これらの各情報ソースは、有線インターフェース６４、１０６を介してアクセス可能な個々のディレクトリにマッピングしてもよい。様々なソースは、機器レベル（複数の付属ストレージデバイスの表示）またはファイルシステムレベル（複数の情報ソースからの仮想ファイルシステムおよびＦＡＴテーブルの作成）のいずれかで組み合わせてもよい。
【０１１０】
また、特定のユーザーに対するボリューム／パーティション、ファイル、および／またはフォルダレベルのアクセスも可能である。「Ｂｏｂ」という名称のフォルダは、ユーザー「Ｂｏｂ」が同じネットワーク上に存在、および／またはリモートサーバーを介してアクセスする場合に、「Ｂｏｂ」による当該フォルダへのアクセス許可と関連付けることができる。また、別の周辺機器と対になった２つ以上の周辺機器を有し、例えばＷｉ−Ｆｉ間で直接同期しているか否かに関わらず機器間でデータの一部または全部を確実に同期させるか、またはプロキシおよび／またはリモートストレージとして動作するか否かに関わらずリモートサーバーを介して同期させることを常に試行する機能も独特である。
【０１１１】
無線情報へのアクセスに際して、周辺機器５４、７０、１００上のメモリ６６、１０４には、必要に応じて当該情報の一部または全部を格納してもよいし、一切格納しなくてもよい。例えば、ファイル共有にはデータのキャッシングが一切不要であってもよく、如何なるファイル要求も即座に無線ファイル共有要求に変換される。性能を向上させるためにキャッシングを追加してもよい。
【０１１２】
周辺機器５４、７０、１００上のフォルダは、ＲＳＳフィード等の他のリモートコンテンツのダウンロード領域に指定してもよい。周辺機器は、このフォルダでコンテンツが入手できるようになると、自動的にダウンロードする。
【０１１３】
無線状態が変化すると、ダウンロードが開始される場合がある。例えば、記憶された無線ネットワークが利用可能になると、周辺機器５４、７０、１００は、更新情報を検索してダウンロードしてもよい。別の例としては、周辺機器５４、７０、１００がカーステレオのＵＳＢポートに接続され、車両が所有者のドライブウェイに戻ると、無線ホームネットワークに接続して最新のポッドキャストをダウンロードするか、または所有者のコンピュータとファイルを同期させる。
【０１１４】
また、無線状態が変化すると、ストレージへのアクセスが制御される場合がある。例えば、特定の無線ネットワークに接続すると、特定のファイルまたはフォルダの視聴および修正が可能となる場合がある。周辺機器５４、７０、１００は、ストレージの特定ディレクトリまたは領域への書き込みはいつでも可能であるが、特定のアクセスポイントの範囲内にある場合、または特定のアクセスポイントに関連付けられている場合を除いては、当該領域からのファイル読み出しができないように構成されていてもよい。また、無線ネットワークが存在すると、ファイルの削除（「リモートワイプ」）が発生する場合がある。
【０１１５】
また、周辺機器５４、７０、１００は、後々の処理でネットワークＳＳＩＤおよび／またはＭＡＣアドレスに遭遇すると、それらを検出・記録することもできる。これは、周辺機器５４、７０、１００が時間とともにどの位置にあるか追跡するのに役立ち、アクセス許可を得るためのＧＰＳその他の三角測量／位置決め機能と関連して使用することが出来、または、他の機能を誘発することが出来る。
【０１１６】
別の構成として、周辺機器５４、７０、１００は、ＵＳＢネットワークプロファイルをエミュレートした状態でＵＳＢを介してホストに接続可能である。ホストは、周辺機器５４、７０、１００をネットワーク接続と見なし、ブラウザまたは類似のアプリケーションを立ち上げて、サーバーにアクセスしているかのようにデータをストリーミングする。周辺機器５４、７０、１００は、コンテンツが周辺機器上にあるか否かに関わらず、および／またはリモートサーバーから収集しているか否かに関わらず、ブラウザに対してコンテンツをインタラクティブにフィードするサーバーとして動作可能である。これにより、インターネットを介してリモートサーバーからコンテンツが配信される場合と同様に、コンテンツを安全に配信可能である。
【０１１７】
ストレージに特定のファイルが存在する場合（名称、コンテンツ、またはその他の要素で判明）、機器は、ホストに提供するアクセスのモードを変更してもよい。ストレージに特定名称のＣＤまたはＤＶＤ画像が見つかった場合、周辺機器５４、７０、１００は、付属のＵＳＢ式ＣＤまたはＤＶＤリーダーとしてホストに提供されてもよく、この場合、当該ファイルはドライブに挿入された仮想光ディスクのコンテンツを決定している。この特別な機能により、実際の光ドライブを持たないコンピュータへのオペレーティングシステムのインストールが容易になる。
【０１１８】
周辺機器の機能として、ストレージの一部を確保してもよい。この領域は、機器レベルまたはパーティションレベルのいずれで確保してもよいし、所望サイズのファイルを機器自体に割り当てることによって確保してもよい。ファイルが変更されたり周辺機器５４、７０、１００から削除されたりすると、そのコンテンツが確保した領域にコピーされて、ユーザーが後々データを復元可能となる。
【０１１９】
Ｖ．クラウドサービス
周辺機器の所有者に付加的なサービスを提供するため、有線インターフェースおよび無線インターフェースの組み合わせを使用することができる。無線インターフェースがインターネットに接続されると、有線インターフェースまたは無線インターフェースのいずれかを介してストレージで行われる様々な動作をインターネットストレージ上の動作に変換するか、またはインターネットストレージで補完することができる。
【０１２０】
周辺機器５４、７０、１００は、オンラインのバックアップ機能を提供可能である。ユーザーによるストレージの変更箇所を監視するとともに、確保したメモリ領域に保持されたテーブルにて当該箇所を「劣化（ｄｉｒｔｙ）」とマーキングすることにより、周辺機器５４、７０、１００は、インターネットを介してサーバーにバックアップすべきストレージの箇所を把握する。転送データのコンテンツは、サーバーへの送信前に周辺機器５４、７０、１００で暗号化可能である。周辺機器５４、７０、１００が喪失した場合は、インターネットから周辺機器５４、７０、１００にコマンドを送信して周辺機器５４、７０、１００上のストレージのワイプを開始することができる。また、喪失した機器からのデータのコンテンツを用いて新たな周辺機器をプログラムすることができる。同様に、オンラインバックアップが変更となった場合は、このプロセスを逆方向に適用して、周辺機器がオンラインバックアップの変更に対して確実に整合するようにすることができる。
【０１２１】
周辺機器５４、７０、１００は、通信インターフェースを介したファイル操作に基づいて動作を行うことができ、同一または別の通信インターフェースを介してインターネットストレージ上の動作に変換することができる。例えば、ポリシーに基づいて特定のユーザーにアクセスを与えた状態で、周辺機器５４、７０、１００上の特定のフォルダをファイル共有領域として指定してもよい。ファイルをこのフォルダに移動またはコピーすると、無線インターフェースによりリモートストレージへの当該ファイルの転送が開始され、他のユーザーがアクセス可能となる。フォルダは、別のユーザーからファイルを受信するドロップボックスとして指定してもよく、この場合、周辺機器５４、７０、１００は、リモートストレージに情報を問い合わせてフェッチし、周辺機器５４、７０、１００上のフォルダに格納することができる。周辺機器５４、７０、１００上のすべてのファイルが個々に一意のキーで暗号化される場合は、ファイルを暗号化形式で転送するとともに、安全な手段を介してファイルのロック解除キーを他のユーザーと共有するようにしてもよい。
【０１２２】
インターネットサービスは、ファイル操作に基づく動作が可能であって、その結果、周辺機器のストレージにファイルが追加されるか、または他の動作が行われる。例えば、ファイルを特定のディレクトリに格納すると、当該ファイルが電子メールの添付として所定の電子メールアドレスに送信される場合がある。また、映像ファイルを別のディレクトリに格納すると、インターネットサービス上でフォーマット変換が起こる場合がある。この場合、変換されたファイルは、周辺機器５４、７０、１００上のディレクトリにダウンロードされる。
【０１２３】
別の構成において、周辺機器５４、７０、１００は、機器の実際の容量よりも大きなデータアレイをホストに提供する。この場合、ファイルストレージはホストには通常通りに見えるが、データストレージは、実際には異なる場所のネットワーク機器上に存在する。ただし、データストレージは、周辺機器によってキャッシングされている。
【０１２４】
また、周辺機器５４、７０、１００は、機器がサポートするメモリプールをキャッシュとして用いることにより、１または複数のユーザーに対してクラウドキャッシングを行うように構成することもできる。このため、周辺機器は、１または複数のオンラインクラウドサーバーとユーザー機器（例えば、ホストまたはクライアント等）間のネットワーク通信路に含まれている。
【０１２５】
クラウドサーバーとの接続がダウンしても、ユーザー機器の周辺機器５４、７０、１００との接続は維持される。周辺機器５４、７０、１００は、クラウドサーバーに転送されたデータをキャッシングする。周辺機器５４、７０、１００はデータストレージ周辺機器として動作しているため、将来的にアクセスが再度可能となった場合には、クラウドサーバーと同期される。
【０１２６】
あるいは、クラウドサーバーとの通信の帯域幅を使用しているユーザーが多過ぎる場合は、周辺機器５４、７０、１００が各ユーザーに対してキャッシングおよびプリフェッチ可能である。一方、クラウドサーバーには順次アクセスして、ユーザー間で帯域幅時間を分散させる。
【０１２７】
また、周辺機器５４、７０、１００は、シンクライアントのネットワークキャッシュまたはＡＰに内蔵されたＧｏｏｇｌｅ  Ｇｅａｒｓとして動作するように構成することもできる。この構成において、周辺機器５４、７０、１００は、ネットワーク接続が利用可能となった場合に、ネットワークリソースのフォールバックを伴わない１または複数のネットワークリソースをシミュレーションする。この構成の目的は、ネットワーク輻輳時の応答時間を改善すること、および／またはネットワーク／クラウド機能へのアクセスに断続的なネットワーク接続を提供することである。この機能を用いる一例として、ユーザーは、ネットワーク／インターネットアクセスがなくても、Ｗｉ−Ｆｉ  ＡＰモードであれば周辺機器５４、７０、１００に電子メールを送ることができる。インターネットアクセスが利用可能になると、周辺機器５４、７０、１００はクライアントとなり、例えばＧｏｏｇｌｅ  Ｇｅａｒｓを用いてインターネットに接続し、電子メールを送信する。
【０１２８】
また、周辺機器５４、７０、１００は、傍受および／または位置情報（Ｓｋｙｈｏｏｋ、ＧＰＳ等）に基づいて、ローカルメモリに格納された広告またはネットワークサーバーからの広告を挿入するように構成することもできる。周辺機器５４、７０、１００が同時ＡＰモードおよびクライアントモードの両者を有する場合は、広告を取り去ってローカルメモリストレージからの広告に置き換えることも可能である。これらの広告はクリックされた場合に追跡することが出来、データは、周辺機器のグラフデータ構造に格納することが出来る。
【０１２９】
また、周辺機器５４、７０、１００がＡＰモードの場合は、複数のＳＳＩＤを提供することが出来る。例えば、１つは「Ｖｉｍｅｏ」とすることができる。これを選択するとともにＡＰがｉＰｈｏｎｅを検知すると、Ｖｉｍｅｏは、ＹｏｕＴｕｂｅになりすましてｉＰｈｏｎｅのＹｏｕＴｕｂｅプレーヤを利用してもよい。
【０１３０】
ＶＩ．支払い処理システム
図１７は、周辺機器７０２を含む支払い処理システム７００を示した概念図である。この周辺機器は、本明細書に記載の周辺機器５４、７０、１００のうちの１つであってもよい。支払い処理システム７００は、周辺機器７０２、スマートフォンまたはＰＤＡ７０４、Ｗｉ−Ｆｉ  ＡＰ等の店舗または販売業者の無線アクセスポイント（ＡＰ）、販売時点管理（ＰＯＳ）端末７０８、および支払い処理サーバー７１０を備えている。周辺機器７０２は、Ｗｉ−Ｆｉ接続等の無線チャンネルを用いてスマートフォン７０４および店舗ＡＰ７０６と通信を行う。また、周辺機器７０２は、Ｗｉ−Ｆｉ等の無線通信を用いてＰＯＳ端末７０８と通信することが出来る。あるいは、本明細書に開示のいずれかのような有線接続を用いて通信することが出来る。ＰＯＳ端末７０８は、データネットワークを介してサーバー７１０と通信を行う。サーバー７１０および店舗ＡＰ７０６は、インターネット７１２にネットワーク接続されている。
【０１３１】
システム７００は、スマートフォン７０４を所有する顧客および周辺機器７０２からのＷｉ−Ｆｉ接続を介して支払い処理を可能にすることが好ましい。このシステム７００は、少なくとも２種類の支払いトランザクションをサポートすることが出来る。第１のトランザクション形式においては、システム７００が以下の手順を使用する。
１．周辺機器７０２がスマートフォン７０４のＷｉ−Ｆｉチャンネルをスキャンして、見つかったら確実にペアリングする。
２．店舗のレジ係がＰＯＳ端末７０８でトランザクションを記録する。
３．ＰＯＳ端末７０８がＷｉ−Ｆｉ接続を介して総トランザクション量を周辺機器７０２に送信し、周辺機器７０２がそれをＷｉ−Ｆｉ経由でスマートフォン７０４に送信する。
４．顧客がスマートフォン７０４でトランザクションを承認する。
５．顧客がトランザクションを承認したことを周辺機器７０２がＰＯＳ端末７０８に送信する。
６．その後、周辺機器７０２がスマートフォン７０４との接続を断つ。
【０１３２】
第２のトランザクション形式においては、システムが以下の手順を使用する。
１．周辺機器７０２がＷｉ−Ｆｉネットワークを介して送信したＭＡＣアドレスが有効な範囲であることを確認するアプリケーションをスマートフォン７０４が実行する。
２．有効なＭＡＣアドレスを確認すると、スマートフォン７０４が周辺機器７０２とのＷｉ−Ｆｉ接続を開始する。
３．周辺機器７０２がＰＯＳ端末７０８または店舗ＡＰ７０６と通信を行って、ポイントやクーポン等の顧客アカウントに関する情報を取得する。通信は、無線チャンネルＢを介するか、またはＰＯＳ端末７０８からサーバー７１０および／またはインターネット７１２を介して行うことができる。
４．その後、手順として上記第１のトランザクション形式のステップ３〜６を実行する。
【０１３３】
スーパーマーケットにおける複数のレジ等のマルチレーン支払いシステムにおいては、スマートフォン７０４等のクライアントと周辺機器７０２等のサーバー間でペアリングが混乱する可能性がある。このマルチレーン問題を解決するための様々な方法が存在する。１つの方法は、ＲＦ三角測量を利用することである。別の方法は、周辺機器７０２から放射された無線信号の距離を変更して、１つのレーンから他のレーンへの通信を防止することである。これを実現するため、以下の手順を実行するように周辺機器７０２を構成することができる。
１．周辺機器７０２は、スマートフォン７０４が近距離となった時に通信が開始されるようになるまで、Ｗｉ−Ｆｉの送信距離を数インチに制限する（図１７のチャンネルＡ）。周辺機器は、Ｗｉ−Ｆｉの送信電力を抑えることによってこれを行う。スマートフォン７０４は、周辺機器７０２およびスマートフォン７０４を近接して保持する顧客によって通信可能となる。
２．スマートフォン７０４とのＷｉ−Ｆｉ通信が確立されると、周辺機器７０２の送信距離を大きくして、顧客がスマートフォンを通常通りに保持できるようにすることが出来る。周辺機器７０２とスマートフォン７０４との間でＷｉ−Ｆｉセッションが確立されると、レーン間の干渉は発生しなくなる。
３．周辺機器７０２が店舗のＷｉ−Ｆｉ  ＡＰ７０６と通信を行ってリモートのＷＡＮ／インターネットと接続する必要がある場合は、顧客のスマートフォン７０４に至る短距離から店舗のＷｉ−Ｆｉ  ＡＰ７０６に至る長距離まで距離を多重に変更することができる（図１７のチャンネルＢ）。また、周辺機器は、必要に応じてアクセスポイントモードとクライアントモードを切り替えてもよい。
４．支払い処理が完了したら、ステップ１に戻る。
【０１３４】
周辺機器には、有用性を改善するため追加機能を追加することができる。そのような機能としては、セキュリティ、メディア再生の同期、複数ファイルの単一ファイルへの一体化（例えば、ＴＶ上での写真共有等）、ファイルの自動トランスコード（例えば、映像および／または音声ファイル、文書ファイル等の．ｄｏｃから．ｐｄｆへの変換等）が挙げられる。
【０１３５】
本開示は、周辺機器がＵＳＢ周辺機器および単独の機器の双方としての新たな機能を提供する新たな強化された機能を作成するための新たな方法およびアーキテクチャを提示するものである。このアーキテクチャの特定の構成には、従来のＵＳＢマスストレージデバイスと同じ機能を有することも含まれているが、ＵＳＢポートを介してではなく周辺機器に含まれたデータストレージに関わる共有メモリスキームによって直接インターフェースする追加機能を追加していることで新規性がある。この追加機能としては、Ｗｉ−Ｆｉ、３Ｇ／４Ｇ携帯電話モデム、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＮＦＣ、赤外線といった無線モデム、またはＵＳＢ、イーサネット（登録商標）といった有線通信等の通信が挙げられる。さらに別の方法では、プロセッサ等の複雑なステートマシンがＵＳＢポートと共にまたは無関係に機能的動作を提供する。このような機能的動作としては、通信機能やデータストレージへのファイルまたはデータベースアクセスといったＵＳＢポートと他の機能との間の低水準のメモリアクセス調停、またはウェブサーバー、データ同期エンジン、暗号化／復号化、認証、およびその他の複雑なステート機能といったより高水準の機能が挙げられる。
【０１３６】
本明細書に記載のシステム、機器、それらの各構成要素、並びに方法ステップおよびブロックの機能は、プロセッサが実行するハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の適切な組み合わせで実装してもよい。ソフトウェア／ファームウェアは、マイクロプロセッサ、ＤＳＰ、組み込みコントローラ、または知的所有権（ＩＰ）コア等の１または複数のデジタル回路またはプロセッサが実行可能な命令セット（例えば、コードセグメント）を有する１または複数のプログラムであってもよい。ソフトウェア／ファームウェアでの実装の場合、命令またはコードは、１または複数のコンピュータ可読媒体に格納してもよい。コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体の両者が含まれ、後者には、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体が含まれる。記憶媒体は、コンピュータがアクセス可能な任意の利用可能な媒体であってもよい。一例として、そのようなコンピュータ可読媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＮＡＮＤ／ＮＯＲフラッシュ、ＣＤ−ＲＯＭ、その他の半導体ストレージ、光ディスクストレージ、磁気ディスクストレージ又はその他の磁気ストレージデバイス、または所望のプログラムコードを命令またはデータ構造の形式で移送または格納するのに利用できるとともにコンピュータがアクセス可能なその他任意の媒体が挙げられるが、これらには限定されない。また、本明細書で使用するディスク（ｄｉｓｋおよびｄｉｓｃ）としては、コンパクトディスク（ＣＤ）、レーザーディスク(登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイディスク等が挙げられる。ディスク（ｄｉｓｋ）は通常、磁気的にデータを再生するが、ディスク（ｄｉｓｃ）はレーザーを用いて光学的にデータを再生する。また、上記の組み合わせについても、コンピュータ可読媒体の範囲に含まれるものとする。
【０１３７】
これらの教示内容を考慮すると、上記方法、機器、システム、及び装置のその他の実施形態および改良は、当業者であれば容易に想到し得る。したがって、上記の説明は一例に過ぎず、これに限定されるものではない。本発明は、上記明細および添付の図面と関連付けて考えた時に、このようなその他の実施形態および改良をすべて網羅する以下の特許請求の範囲によってのみ限定される。したがって、本発明の範囲は上記の説明に限定されるものではなく、添付の特許請求の範囲およびそのすべての均等物を参照して決定されるものとする。
【図１】
2013508885.tif 000003
【図２】
2013508885.tif 000004
【図３】
2013508885.tif 000005
【図４】
2013508885.tif 000006
【図５】
2013508885.tif 000007
【図６】
2013508885.tif 000008
【図７】
2013508885.tif 000009
【図８】
2013508885.tif 000010
【図９】
2013508885.tif 000011
【図１０】
2013508885.tif 000012
【図１１】
2013508885.tif 000013
【図１２】
2013508885.tif 000014
【図１３】
2013508885.tif 000015
【図１４】
2013508885.tif 000016
【図１５】
2013508885.tif 000017
【図１６】
2013508885.tif 000018
【図１７】
2013508885.tif 000019
【国際調査報告】
2013508885.tif 000020
2013508885.tif 000021