(57)【要約】  フラッシュストレージからのアプリケーションの圧縮解除をスケジュールするためのシステム、方法、およびコンピュータプログラムが開示される。システムの一実施形態は、フラッシュメモリデバイスと、プリエンプティブ圧縮解除スケジューラ構成要素とを備える。プリエンプティブ圧縮解除スケジューラ構成要素は、アプリケーションインストーラ構成要素による圧縮解除アプリケーションのフラッシュメモリデバイスへのインストールに応じて、圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義するメタデータを生成して記憶するように構成された論理を備える。アプリケーションランチャ構成要素による圧縮アプリケーションの起動に応じて、プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータから、起動されるべき圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを決定する。プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータに基づいて1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする。
2019523480.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするための方法であって、
フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成するステップであって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成するステップと、
前記メタデータをメモリ内に記憶するステップと、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定するステップと、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするステップと
を含む、方法。
【請求項２】
アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するステップ
をさらに含む、請求項1に記載の方法。
【請求項３】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項４】
前記メタデータが、インストールされた経路およびファイル名、複数のブロックインデックスおよびサイズ、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項1に記載の方法。
【請求項５】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項1に記載の方法。
【請求項６】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するステップと、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するステップと
をさらに含む、請求項1に記載の方法。
【請求項７】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするステップが、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするステップを含む、請求項1に記載の方法。
【請求項８】
フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、
フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成するための手段であって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成するための手段と、
前記メタデータをメモリ内に記憶するための手段と、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定するための手段と、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするための手段と
を備える、システム。
【請求項９】
アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するための手段
をさらに備える、請求項8に記載のシステム。
【請求項１０】
前記1つまたは複数の従属オブジェクトを前記圧縮解除するための手段が、中央処理措置(CPU)および専用ランダムアクセスメモリ(RAM)を備えた圧縮コプロセッサのうちの1つを備える、請求項9に記載のシステム。
【請求項１１】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む。前記ファイルの前記コンテンツおよびブロックが、起動されている特定のアプリケーションが必要とする、バイナリ、テキスト、バイトコード、中間プログラム表現、HTML、XML、いずれかの種類のソフトウェアコード、いずれかのフォーマットのデータなどであり得る
請求項9に記載のシステム。
【請求項１２】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項8に記載のシステム。
【請求項１３】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項8に記載のシステム。
【請求項１４】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するための手段と、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するための手段と
をさらに備える、請求項8に記載のシステム。
【請求項１５】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするための手段が、
ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするための手段
を備える、請求項8に記載のシステム。
【請求項１６】
メモリ内で具現化され、フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするためにプロセッサによって実行可能である、コンピュータプログラムであって、
フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成することであって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成することと、
前記メタデータをメモリ内に記憶することと、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定することと、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールすることと
を行うように構成された論理を備える、コンピュータプログラム。
【請求項１７】
アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除する
ように構成された論理をさらに備える、請求項16に記載のコンピュータプログラム。
【請求項１８】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む。前記ファイルの前記コンテンツおよびブロックが、起動されている特定のアプリケーションが必要とする、バイナリ、テキスト、バイトコード、中間プログラム表現、HTML、XML、いずれかの種類のソフトウェアコード、いずれかのフォーマットのデータなどであり得る
請求項16に記載のコンピュータプログラム。
【請求項１９】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項16に記載のコンピュータプログラム。
【請求項２０】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項16に記載のコンピュータプログラム。
【請求項２１】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
ように構成された論理をさらに備える、請求項16に記載のコンピュータプログラム。
【請求項２２】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするように構成された前記論理が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成された論理を備える、請求項16に記載のコンピュータプログラム。
【請求項２３】
フラッシュストレージからの圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、
フラッシュメモリデバイスと、
プリエンプティブ圧縮解除スケジューラ構成要素とを備え、前記プリエンプティブ圧縮解除スケジューラ構成要素が、
アプリケーションインストーラ構成要素による前記圧縮アプリケーションの前記フラッシュメモリデバイスへのインストールに応じて、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義するメタデータを生成して記憶し、
アプリケーションランチャ構成要素による前記圧縮アプリケーションの起動に応じて、前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定し、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする
ように構成される論理を備える、システム。
【請求項２４】
前記アプリケーションランチャ構成要素またはローダ構成要素が前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するように構成された圧縮/圧縮解除構成要素をさらに備える、請求項23に記載のシステム。
【請求項２５】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項24に記載のシステム。
【請求項２６】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項23に記載のシステム。
【請求項２７】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項23に記載のシステム。
【請求項２８】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
ように構成された動的メタデータ生成モジュールをさらに備える、請求項23に記載のシステム。
【請求項２９】
前記プリエンプティブ圧縮解除スケジューラ構成要素が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成される、請求項23に記載のシステム。
【請求項３０】
前記プリエンプティブ圧縮解除スケジューラ構成要素が、前記フラッシュメモリデバイスに電気的に結合されたシステムオンチップ(SoC)上に存在する、請求項23に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤストレージデバイスのためのプリエンプティブ圧縮解除スケジューリングに関する。
【背景技術】
【０００２】
フラッシュストレージなどの不揮発性ストレージは、ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、携帯ゲーム機、ウェアラブルデバイス、および他のバッテリー駆動デバイス)を含めて、様々なタイプのコンピューティングデバイス内に組み込まれている。ユーザ需要に対処するために、ポータブルコンピューティングデバイス内のNANDフラッシュストレージの容量は増大し続けている。しかしながら、より大きなNANDフラッシュストレージは、ポータブルコンピューティングデバイスのコストを著しく増大させる。コスト圧力に対する一般的な解決策は、ユーザデータを可能な限りコンパクトに維持するファイルシステム圧縮を実装することである。圧縮解決策は、NANDフラッシュストレージの限定された容量を一時的に拡張し得るが、アプリケーションデータおよび/またはコードを圧縮/圧縮解除するプロセスは、ポータブルコンピューティングデバイスの性能に悪影響を及ぼし、電力消費を高めて、バッテリー寿命を望ましくなく低減させる。
【０００３】
たとえば、NAND内のデータおよび/またはコードの圧縮はランダムリードレイテンシを延ばす。ランダムリードを実行するためのより長いレイテンシは、直接コード実行に対してNANDを適さないものにする。コードはNANDから揮発性メモリ(たとえば、ダイナミックランダムアクセスメモリ(DRAM))にダウンロードされ、次いで、DRAMから実行される必要がある。さらに、NANDストレージはブロック内で読み取られて書き込まれる。NANDに書き込む前に、コード/データは符号化され得るが、これは、高速符号化アルゴリズムの実装を必要とする。NANDを読み取った後で、圧縮されたコード/データは復号される必要があり、これはデバイス性能を著しく制限し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、デバイス性能およびユーザ経験に悪影響を及ぼさずに、ストレージ容量を増大させるために、NANDストレージ内の圧縮オブジェクトの圧縮解除をスケジュールするための改善されたシステムおよび方法が必要とされる。
【課題を解決するための手段】
【０００５】
フラッシュストレージ内の圧縮オブジェクトの圧縮解除をプリエンプティブにスケジュールするためのシステム、方法、およびコンピュータプログラムが開示される。システムの一実施形態は、フラッシュメモリデバイスと、プリエンプティブ圧縮解除スケジューラ構成要素とを備える。プリエンプティブ圧縮解除スケジューラ構成要素は、アプリケーションインストーラ構成要素による圧縮アプリケーションのフラッシュメモリデバイスへのインストールに応じて、圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義するメタデータを生成して記憶するように構成された論理を備える。アプリケーションランチャ構成要素による圧縮アプリケーションの起動に応じて、プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータから、起動されるべき圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを決定する。プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータに基づいて1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする。
【０００６】
方法の一実施形態は、フラッシュメモリデバイス上にインストールされた圧縮アプリケーションに関するメタデータを生成するステップを含む。メタデータは、圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する。メタデータはメモリ内に記憶される。圧縮アプリケーションの起動に応じて、記憶されたメタデータから、起動されるべき圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトが決定される。この方法は、記憶されたメタデータに基づいて1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするステップをさらに含む。
【０００７】
図では、同様の参照番号は、別段に示されない限り、様々な図の全体を通して同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図内に存在している2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことが意図されるとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【０００８】
【図１】フラッシュストレージ内の圧縮アプリケーションのプリエンプティブ圧縮解除を提供するためのシステムの一実施形態のブロック図である。
【図２】図1のプリエンプティブNAND圧縮解除スケジューラの一実施形態の動作を示す結合ブロック/流れ図である。
【図３】図1のシステム内で圧縮オブジェクトをプリエンプティブに圧縮解除すための方法の一実施形態を示すフローチャートである。
【図４】図1のメタデータテーブルの1つの例示的な実施形態を示すデータ図である。
【図５】図4のメタデータテーブルを動的に更新するための方法の一実施形態を示すフローチャートである。
【図６】図1のシステムを組み込むためのポータブルコンピューティングデバイスの一実施形態のブロック図である。
【発明を実施するための形態】
【０００９】
「例示的」という語は、本明細書では「例、事例、または例示としての働きをすること」を意味するために使用される。本明細書で「例示的」として説明する任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１０】
本説明では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能コンテンツを有するファイルをも含み得る。さらに、本明細書で言及する「アプリケーション」は、開かれる必要があり得る文書、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能でないファイルをも含み得る。
【００１１】
「コンテンツ」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能コンテンツを有するファイルを含み得る。加えて、本明細書で参照する「コンテンツ」は、また、開かれる必要があり得る文書またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含み得る。
【００１２】
本説明で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すことが意図される。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局在化されてもよく、および/または2つ以上のコンピュータ間に分散されてもよい。さらに、これらの構成要素は、様々なデータ構造をその中に記憶した様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システムの中の別の構成要素と、かつ/またはインターネットなどのネットワークにわたって、信号により他のシステムと対話する1つの構成要素からのデータなど)を有する信号などに従って、ローカルおよび/または遠隔のプロセスにより通信してもよい。
【００１３】
この説明では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は互換的に使用される。第3世代(「3G」)ワイヤレス技術および第4世代(「4G」)が出現したことによって、利用可能な帯域幅が拡大されたので、より多様なワイヤレス能力を備えた、より多くのポータブルコンピューティングデバイスが可能になった。したがって、ポータブルコンピューティングデバイスには、セルラー電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータが含まれる場合がある。
【００１４】
図1は、フラッシュストレージ内の圧縮オブジェクトをプリエンプティブに圧縮解除するためのシステム100を示す。システム100は、フラッシュメモリデバイス(たとえば、NANDフラッシュ104)と、ダイナミックランダムアクセスメモリ(DRAM)106などの揮発性ランダムアクセスメモリ(VRAM)とに電気的に結合されたシステムオンチップ(SoC)102を備える。SoC102は、制御バス128およびデータバス130を介してNANDフラッシュ104に電気的に結合され得る。SoC102は、バス132を介してDRAM106に電気的に結合され得る。システム100は、パーソナルコンピュータ、ワークステーション、サーバ、およびセルラー電話、スマートフォン、携帯情報端末(PDA)、ポータブルゲームコンソール、ナビゲーションデバイス、タブレットコンピュータ、スポーツウォッチ、フィットネス追跡デバイスなどのウェアラブルデバイス、などのポータブルコンピューティングデバイス(PCD)、または他のバッテリー駆動、ウェブ対応デバイスを含む、任意のコンピューティングデバイス内に実装されてもよい。
【００１５】
SoC102は、SoCバス120を介して相互接続された、オペレーティングシステム(O/S)122を実行する中央処理装置(CPU)110、DRAMコントローラ112、スタティックランダムアクセスメモリ(SRAM)116、読出し専用メモリ(ROM)114、圧縮/圧縮解除モジュール118、およびフラッシュコントローラ108を含む様々なオンチップ構成要素を備える。SoC102は、DRAM106およびNANDフラッシュ104からのメモリリソースを要求する1つまたは複数のメモリクライアントを含み得る。メモリクライアントは、1つまたは複数の処理装置(たとえば、中央処理装置(CPU)110、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)など)、ビデオエンコーダ、またはNANDフラッシュ104およびDRAM106への読取り/書込みアクセスを要求する他のクライアントを備える場合がある。
【００１６】
図1に示す実施形態では、NANDフラッシュ104はSoC102と別個であるが、他の実施形態では、NANDフラッシュ104は、SoCダイに物理的に接続されてよいか、またはSoCダイ上にスタッキングされてよく、SoCダイと同じ物理パッケージ内に存在してもよい。当技術分野で知られているように、NANDフラッシュ104は、コントローラと、物理ページを記憶するためのメインアレイとを含み得る。SoC102上に存在するCPU110は、フラッシュコントローラ108を介して、NANDフラッシュ104から/に論理ページの単位でデータを読み取りかつ/または書き込む。データは、誤り訂正コード(ECC)モジュール136によって生成/検査された誤り補正ビットとともにメインアレイの物理ページから記憶されて取り出される。
【００１７】
圧縮/圧縮解除モジュール118は、アプリケーションコード/データを圧縮して、圧縮コード/データをNANDフラッシュ104内に記憶するための論理を備える。圧縮コード/データが要求されるとき、圧縮/圧縮解除モジュール118は、NANDフラッシュ104内に記憶されたアプリケーションコード/データを非圧縮し、次いで、非圧縮コード/データを実行する。圧縮/非圧縮モジュール118は、CPU110によって実行されるソフトウェアを含んでよいことを諒解されたい。他の実施形態では、圧縮/圧縮解除モジュール118は、圧縮/圧縮解除を加速するための専用RAMを備えた、別個のハードウェアデバイス、コプロセッサなどを備え得る。
【００１８】
図1に示すように、システム100は、アプリケーション134が起動し、アプリケーションコード/データがNANDフラッシュ104から読み取られるとき、従属圧縮オブジェクト136の復号/圧縮解除を早めにプリエンプティブにスケジュールするための1つまたは複数のモジュール(たとえば、プリエンプティブNAND圧縮解除スケジューラ126)をさらに備える。アプリケーション134は様々なタイプのアプリケーションを含み得ることを諒解されたい。
【００１９】
一実施形態では、アプリケーション134はモバイルアプリケーションを含む場合がある。当技術分野で知られているように、スマートフォンなどのポータブルコンピューティングデバイス用の典型的なアプリケーションは、複数の共有ネイティブ実行可能ライブラリファイル、およびプラットフォームランタイム(たとえば、Android用のDalvik/ART、iOS用のObjective-Cランタイム)用のライブラリファイルのアグリゲーションを含み得る。データファイルは、すべて一緒に梱包された、たとえば、XML、HTML、テキストファイル、および/または他のフォーマットのファイルを含む、様々なフォーマットを含み得る。アプリケーションを作成する様々なタイプのすべての様々な構成要素ファイルは、「オブジェクト」と呼ばれることを諒解されたい。圧縮形態のアプリケーションにおいて、そのアプリケーションを形成するすべてのオブジェクトも圧縮形態をとり得る。アプリケーションはこれらのオブジェクトに従属するため、圧縮アプリケーション内の圧縮形態のオブジェクトは、「従属」圧縮オブジェクトと呼ばれる。
【００２０】
アプリケーション内のオブジェクトのうちのいくつかは、プラットフォーム内で直接的に利用可能であり得る他のオブジェクトにさらに従属し得ることをさらに了解されたい。たとえば、ブラウザアプリケーション用の共有実行可能オブジェクトファイルライブラリ(libwebcore.so)は、プラットフォーム実行可能オブジェクトライブラリ(libbionic.soおよびlibicu.so)に従属し得る。この場合、プラットフォーム共有実行可能オブジェクトファイル(libbionic.soおよびlibicu.so)は、従属オブジェクトを含んでよく、これらのファイルが圧縮の形態で存在する場合、「従属」圧縮オブジェクトを含み得る。
【００２１】
当技術分野で知られているように、圧縮オブジェクトは、アプリケーションがそれらに初めてアクセスするときに圧縮解除され得る。したがって、圧縮形態で存在する動的にロードされた共有実行可能オブジェクトライブラリの場合、圧縮解除は、プラットフォームのダイナミックリンカローダ(DLL:dynamic linker loader)がそれらをロードするときに生じ得る。同様に、アプリケーションによって使用されて圧縮ファイルとして維持される様々なデータファイルおよびデータキャッシュの場合、圧縮解除は、アプリケーションがそれらのファイル内のいずれかのデータにアクセスする必要があるときに生じ得る。これらのアクティビティは、アプリケーション起動の後の何らかの時間期間に生じる場合があり、その場合、圧縮解除は、それらが必要とされる時点でそれらのアクセスのために追加の遅延を導入し得ることを諒解されたい。当業者は、「プリエンプティブ圧縮解除」という用語は、これらのタイプの圧縮オブジェクトのいずれも、それらがアプリケーションによって実際にアクセスされるかまたは必要とされる前に生じるアプリケーション起動時間の間に前もって圧縮解除されることを意味すること諒解されよう。「プリエンプティブスケジューリング」という用語は、アプリケーションを実行することによって圧縮オブジェクトが必要とされるかまたはアクセスされる直前に圧縮解除アクティビティのレイジー(lazy)スケジュールを有するのではなく、アプリケーション起動時間の間に前もってこれらの圧縮オブジェクトの圧縮解除をスケジュールすることを指す。
【００２２】
この点で、システム100は、アプリケーション起動の間に先行してプリエンプティブスケジューリングおよびプリエンプティブ圧縮解除の機構を提供し、これは、アプリケーションを実行することによってそれらが実際に必要とされるかまたはアクセスされる前に、従属圧縮オブジェクトが「早めに」圧縮解除されることを可能にする。この機構は様々な利点を提供し得ることを諒解されたい。たとえば、1つの利点は、アプリケーションは従属オブジェクトの圧縮解除を待つ必要がないため、アプリケーションの実行の間の突然の停止または遅延を低減することであり得る。さらに、圧縮解除を前に移動させることは、起動時間を減速されないが、これは、圧縮解除はアプリケーション起動のために必要とされるアクティビティの重要な経路に並行してまたはそれとは無関係に生じ得るためである。もう1つの利点は、複数の圧縮解除ユニットを通して十分な並列性が利用可能である場合、順次従属チェーン内のすべての圧縮オブジェクトは同時に圧縮解除され得るため、順次従属チェーンとしてのアプリケーション起動の間に複数の従属圧縮オブジェクトが連続的に必要とされるとき、アプリケーションの起動時間を削減するステップを伴い得る。このようにして、システム100は、レイテンシを低減させ、中間の停止を低減させ、それにより、ユーザ経験を改善する全体的な利益を提供し得る。
【００２３】
プリエンプティブNAND圧縮解除スケジューラ126は、1つまたは複数のインストールされたアプリケーション134に関して特別に構成されたメタデータを生成する。メタデータは圧縮解除メタデータテーブル124内に記憶され得る。以下でより詳細に説明するように、アプリケーション134に関するメタデータは、ハイレベル情報を使用してアプリケーションインストール時に静的に生成され得る。一実施形態では、アプリケーション134に関する圧縮解除メタデータテーブルは、1つまたは複数のインストールされたアプリケーション134に関する、1つまたは複数の従属ライブラリ、コードオブジェクト、サイズ制約されたブロック、アプリケーションデータ、ファイルなどに関する情報を含み得る。アプリケーション134が起動されるとき、圧縮解除メタデータテーブル124は、アクセスされ、従属圧縮オブジェクト136を早めにプリエンプティブに復号/圧縮解除するために使用される。メタデータテーブル124は、アプリケーション134の実行アクティビティに基づいて動的に更新され得る。一実施形態では、O/S122は、圧縮解除メタデータテーブル124を生成および/または管理すると同様に、圧縮オブジェクト136のプリエンプティブ復号/圧縮解除をトリガし得る。
【００２４】
図2は、プリエンプティブNAND圧縮解除スケジューラ126の1つの例示的な実装形態を示す。プリエンプティブNAND圧縮解除スケジューラ126は、アプリケーションインストーラ構成要素202、O/S122、アプリケーションランチャ構成要素208、およびアプリケーション実行環境210とインターフェースし得る。アプリケーションインストーラ構成要素202は、非圧縮構成要素204を備える非圧縮アプリケーション134をNANDフラッシュストレージ104内にインストールするように構成される。アプリケーションインストーラ構成要素202は、非圧縮構成要素204を圧縮し、対応する圧縮構成要素136をNANDフラッシュストレージ104内に記憶するように圧縮/圧縮解除モジュール118に命令することができる。
【００２５】
他の実施形態では、アプリケーションインストーラ構成要素202は、アプリケーションがシステム100によって圧縮形態で直接的に受信される場合、圧縮アプリケーションを直接的にインストールすることもできる。たとえば、プラットフォーム「アプリストア」は、アプリケーションすなわち「アプリ」を圧縮形態で維持して、アプリをコンピューティングデバイスにダウンロードするとき、帯域幅を節約することができる。これらの場合、整合圧縮/圧縮解除アルゴリズムを使用して、直接的に受信された圧縮アプリケーションを圧縮解除することができる。そのような場合、圧縮アプリケーションが従来の方法で初めて非圧縮され、アプリケーションランチャ構成要素208によって起動されるとき、圧縮解除メタデータテーブル124内に記憶されるメタデータが作成され得る。プリエンプティブスケジューリングおよびプリエンプティブ圧縮解除は、アプリケーションが将来起動するとき、圧縮アプリケーションおよびその圧縮オブジェクトのいずれの将来の圧縮解除に対しても効果的になる。
【００２６】
動作中、アプリケーションインストーラ構成要素202は、アプリケーション134のインストールを開始するためのインストール命令を受信する(参照番号201)。インストール命令に応じて、アプリケーションインストーラ構成要素202は、静的メタデータ生成を開始し(参照番号203)、非圧縮構成要素204を圧縮して、対応する圧縮構成要素136をNANDフラッシュストレージ104内に記憶する(参照番号205)ように、圧縮/圧縮解除モジュール118に命令する。図2で示すように、静的メタデータ生成モジュール206は、1つまたは複数の従属オブジェクトを定義するメタデータを生成するように構成され得る。アプリケーション134に関して生成されたメタデータは、圧縮解除メタデータテーブル124内に記憶され得る(参照番号207)。
【００２７】
従属オブジェクトに関するメタデータは、アプリケーションインストール時間の間にたとえば、アプリケーション実行環境210、O/S122、アプリケーションコードのタイプ、O/S122によって使用されるパッケージファイルフォーマットなどに応じて、様々な方法で静的に生成され得ることを諒解されたい。たとえば、O/S122がAndroidモバイルオペレーティングシステムを備える場合、静的メタデータ生成モジュール206は、Androidアプリケーションパッケージ(APK)からメタデータを静的に生成することができる。他の実施形態では、パッケージファイルフォーマットは、Unixオペレーティングシステム用に使用されるExecutable and Linkable Format(ELF)、およびWindowsオペレーティングシステム用に使用されるPortable Executable(PE)フォーマットを含み得る。パッケージファイルフォーマットにかかわらず、静的メタデータ生成モジュール206は、1つまたは複数の従属オブジェクトまたは構成要素を実行ファイル/オブジェクトファイル/ライブラリから生成する。
【００２８】
図4は、圧縮解除メタデータテーブル124の1つの例示的な実施形態を示す。テーブル124は、静的メタデータ生成モジュール206によって生成された対応するメタデータ404とともに、NANDフラッシュストレージ104内にインストールされた1つまたは複数のアプリケーションに関するアプリケーション識別子402(アプリケーション識別子1 406…アプリケーション識別子N 407)を含む。図4の実施形態では、メタデータ404は、対応する優先度値とともに、アプリケーション134がアクセスする、すべてのライブラリ従属関係、共有ライブラリ、ファイル、データオブジェクトなどのフラットリストを含む。フラットリストは、全イントールされた経路および従属オブジェクトの名称を定義し得る。優先度値は、圧縮解除をプリエンプティブにスケジュールするときに使用され得る。たとえば、優先度値は圧縮解除の順序をスケジュールするために使用され得る。図4を参照すると、<full installed path and name>408および優先度値410は、従属オブジェクト411に対応し得る。<full installed path and name>412および優先度値414は、従属オブジェクト415に対応し得る。
【００２９】
図4にさらに示すように、メタデータ404は、優先度値418ならびにブロックインデックスおよびサイズ(<Block Index, Size>)データ416とともに、1つまたは複数のサイズ制約されたブロック419をさらに定義し得る。たとえば、データおよび/またはコードのブロックは非圧縮サイズに対する最小(MIN)限界(たとえば、1MB、16MB、64MBなど)を設定し得ることを諒解されたい。サイズ制約されたブロック419は、圧縮され、識別子としてブロックのインデックスを使用してNANDフラッシュストレージ104内に記憶され得る。ライブラリ全体が著しく大きなサイズを有し、単一のプロセスではなく、分けてロードされる場合、ブロックベースの手法が使用され得ることを諒解されたい。ブロックのMINサイズ限界は、オーバヘッドを増大させる可能性がある、ブロックの数の何らかの「膨張(blow up)」を制限するように設定され得る。静的メタデータ生成モジュール206は、サイズ限界を下回るいずれのブロックも無視することができる。
【００３０】
静的メタデータ生成モジュール206について全体的に説明したが、例示的なパッケージファイルフォーマットを参照して、様々な実施形態について説明する。一実施形態では、アプリケーション134はネイティブAndroidアプリケーションを含む。当技術分野で知られているように、Androidアプリケーション用の構成要素204は、アプリケーションが必要とする、リソース、ライブラリなどに関する情報を含むAPKファイルを含み得る。静的メタデータ生成モジュール206は、様々なAPKファイルから1つまたは複数の従属オブジェクトを決定することができる。「MANIFEST」ファイルは、アプリケーションがリンクされなければならないライブラリを列挙する。「MANIFEST」ファイルは、アプリケーションがリンクされなければならない1つまたは複数の共有ライブラリを指定し得る。これらの従属オブジェクトは、共有ライブラリに関するコードをパッケージ用のクラスローダ内に含めるようにシステム100に命令する。APK内の「lib」オブジェクトは、アプリケーションが必要とするすべてのコンパイルされたコード(バイナリオブジェクトファイルなど)を有する。「res」オブジェクトは、「resources.arsc」ファイル内にコンパイルされていないリソースを含むディレクトリを含む。「assets」オブジェクトは、アプリケーションアセットを含むディレクトリを含む。「class.dex」ファイルは、dexファイルフォーマットでコンパイルされ、仮想マシンによって使用されるクラスを定義する。「resource.arsc」ファイルは、事前にコンパイルされたリソースを含む。
【００３１】
これらのオブジェクトのいずれか、または他のオブジェクトを早めに使用して、圧縮解除メタデータテーブル124内にメタデータ404として記憶され得る、アプリケーションが必要とするすべての共有ライブラリ、DEXクラスファイル、および他のリソースファイルを決定することができる。ユーザがアプリケーション起動をトリガするとすぐに、このメタデータを使用して、NANDフラッシュ104内に圧縮形態で記憶された項目のうちのいずれかをプリエンプティブに圧縮解除することができることを諒解されたい。
【００３２】
Linux(登録商標)、Unix、Androidオペレーティングシステム内の実行ファイルの場合、Executable and Linkable Format(ELF)が、実行ファイル、オブジェクトコード、および共有ライブラリに関する共通の標準ファイルフォーマットである。これらの実施形態では、静的メタデータ生成モジュール206は、ELF実行ファイル/ライブラリに関する動的にリンクされた従属関係のリストを入手することができる。Readelf、objdumo、lldなどのユーティリティからの関数を利用して、動的にリンクされた従属関係を決定することができることを諒解されたい。以下のTable 1(表1)は、様々なインデックス、タグ、および値を示す。
【００３３】
【表１】
2019523480.tif 000003
【００３４】
Table 1(表1)を参照すると、[LAZY]の値を有するタグPOSFLAG_1は、続くNEEDED(必要)エントリを指定し、libdebug.so.1は遅延して(lazily)ロードされるべきである。libelf.so.1は先行するLAZYフラグを何も有さないため、このライブラリはプログラムの最初のスタートアップ時にロードされる。ダイナミックリンカがオブジェクトファイルに関するメモリセグメントを作成するとき、(動的構造のDT_NEEDEDエントリ内に記録される)従属関係は、プログラムサービスを供給するために何の共有オブジェクトが必要とされるかを定義する。参照された共有オブジェクトおよびそれらの従属関係を繰り返して連結することによって、ダイナミックリンカは完全なプロセス画像を構築する。「レイジー」結合では、画像がシンボルを実際に使用するときのみ、シンボル基準が結合される。プログラムロードの間にロードされる(レイジーと標示されていない)他のライブラリと異なり、LAZY情報は、必要なときのみ、共有ライブラリをロードするようにダイナミックリンカに命令する。
【００３５】
他の実施形態では、圧縮解除時間を緩和するために、LAZYと非LAZYの両方の共有ライブラリに対して圧縮解除を前もってスケジュールすることができる。ダイナミックリンカがプログラムロードを行うときに圧縮解除を実行することは、アプリケーション起動時間を減速させる場合がある。レイジー結合の間に圧縮解除を実行することは実行性能を低下させる場合がある。
【００３６】
(LAZYと、LAZYと標示されない他のものの両方に関する)このデータをアプリケーションインストール時間の間に使用して、(すべての従属レベルに対して)アプリケーションに関する共有ライブラリツリー全体を決定し、それらをアプリケーションに関する圧縮解除メタデータテーブル124内に記憶することが可能であることを諒解されたい。O/S122内のソフトウェアモジュールは、インストール時間の間にライブラリの従属性関係ツリーを決定することができる。これはライブラリ全体に対して行われるため、これは、ライブラリの一部であるコード、データなどに適用され得る。ダイナミックリンカが従属関係を再帰的に見出し、すべての従属関係ライブラリをロードする前ですら、ユーザがアプリケーション起動をトリガするとすぐに、メタデータ404を使用して、NANDフラッシュ104内に圧縮形態で記憶されたライブラリのいずれかをプリエンプティブに圧縮解除することができる。このようにして、ダイナミックリンカが各従属関係ライブラリを再帰的に見出すとき、ライブラリは圧縮解除形態ですでに利用可能であり、それにより、復号/圧縮解除アクティビティをアプリケーション起動/実行における動的ローディングの重要な経路から除去する。
【００３７】
Portable Executable(PE)フォーマットは、実行ファイル、オブジェクトコード、動的リンクライブラリ(DLL:dynamic link libraries)、FONフォントファイル、およびWindowsオペレーティングシステムの32ビットバージョンおよび64ビットバージョンで使用される他のファイルに関するファイルフォーマットである。PEフォーマットは、Windows O/Sローダがラップされた実行可能コードを管理するために必要な情報をカプセル化するデータ構造である。これは、リンクのための動的ライブラリ参照(dynamic library references)、APIエクスポートおよびインポートケーブル、リソース管理データ、およびスレッドローカルストレージ(TLS:thread-local storage)データを含む。ELF実行ファイル/オブジェクトファイルに関する方法と同様に、PE実行ファイル/オブジェクト/ライブラリからの情報を早めに使用して、共有ライブラリツリー全体を決定し、それらをアプリケーションのメタデータ404内で利用可能な状態に維持することができる。メタデータ404を使用して、NANDフラッシュ104内に圧縮形態で記憶されているライブラリのうちのいずれかをプリエンプティブに圧縮解除することができる。
【００３８】
図2を再び参照すると、ユーザがアプリケーション134を起動するとき、アプリケーションランチャ構成要素208は、プリエンプティブNAND圧縮解除スケジューラ126に通知することができる(参照番号209)。アプリケーションランチャ構成要素208からの通知に応じて、プリエンプティブNAND圧縮解除スケジューラ126は、圧縮解除メタデータテーブル124にアクセスし、アプリケーション134に関する対応するメタデータ404を取得する(参照番号211)。アプリケーション134がシステム100内にインストールされている限り、圧縮解除メタデータテーブル124を永続的に、O/S122の制御下で、保存することができることを諒解されたい。アプリケーションがアンインストールされる場合、アプリケーションに関するメタデータ404は削除され得る。O/S122がアプリケーション起動トリガ(たとえば、ユーザがアプリケーションアイコンに触れるなど)を検出するとき、O/S122は、NANDフラッシュ104内に存在するいずれかの従属オブジェクトまたはリソース(たとえば、コード、ライブラリ、データファイル、サイズ制約されたブロックなど)をプリエンプティブに圧縮解除するための信号を直ちに与える。
【００３９】
図2の実施形態を参照すると、参照番号213において、プリエンプティブNAND圧縮解除スケジューラ126は、たとえば、アプリケーション実行環境210を介して従属オブジェクトの圧縮解除をプリエンプティブにスケジュールすることができる。アプリケーション実行環境210が従属関係を解決し(resolve)、NANDフラッシュ104から従属オブジェクトを非圧縮形態でロードする(参照番号215)前に、従属オブジェクトの圧縮解除が生じることを諒解されたい。
【００４０】
上述のように、圧縮解除メタデータテーブル124は、実行アクティビティに基づいてアプリケーション134の実行の間に動的に更新され得る。アプリケーション134の実行の間、動的メタデータ生成モジュール212は、アプリケーション134を実行するためのファイル、ライブラリ、およびブロックアセスを検出することができる(参照番号217)。アプリケーション134の1つまたは複数の実行からの実行アクティビティに基づいて、動的メタデータ生成モジュール212は、さらなる従属関係を動的に抽出し、圧縮解除メタデータテーブル124を更新して、さらなる従属オブジェクトを含めることができる(参照番号219)。
【００４１】
図3は、システム100における従属オブジェクトをプリエンプティブに圧縮解除するための方法300の一実施形態を示す。ブロック302において、NANDフラッシュ104へのアプリケーション134のインストールを開始する。アプリケーション134は、上で説明した複数のオブジェクトを含むことができる。ブロック304において、圧縮/圧縮解除モジュール118はアプリケーションオブジェクトを圧縮する。上述のように、アプリケーション134は、インストールの間に圧縮形態で直接的に利用可能であり得る。この場合、アプリケーション134は、既存の圧縮形態で直接的にインストールされ得るか、またはアプリケーション134は、圧縮解除され、次いで、元の圧縮形態と比較して異なる形態で、異なる圧縮アルゴリズムおよび/またはパラメータを使用して、再度、圧縮され得る。圧縮アプリケーションが圧縮解除され、次いで、NANDへのインストールの間に再度圧縮される場合、インストール時間の間にメタデータが作成され得る。しかしながら、圧縮形態で受信されたアプリケーションがNAND104内にインストールされている場合、アプリケーションが初めて起動される間にアプリケーション134が初めて圧縮解除されるときに、メタデータが作成され得る。このようにして、メタデータが作成されると、プリエンプティブスケジューリングおよび圧縮解除の利益は、何らかの将来の後続アプリケーション起動の際に効果を生じ得る。
【００４２】
ブロック306において、フラッシュコントローラ108を介して圧縮アプリケーションオブジェクトをNANDフラッシュ104内に記憶する。アプリケーションインストールの間(たとえば、ブロック302の後)、ブロック308において、静的メタデータ生成モジュール206は、NANDフラッシュ104内に記憶されることになる1つまたは複数の従属オブジェクトまたはリソース(たとえば、コード、ライブラリ、データファイル、サイズ制約されたブロックなど)を定義するメタデータ404を生成する。ブロック310において、生成されたメタデータ404をO/S122によって管理され得る圧縮解除メタデータテーブル124内に記憶する。アプリケーションの起動(決定ブロック312)に応じて、プリエンプティブNAND圧縮解除スケジューラ126は、NANDフラッシュ104内に記憶された起動されるべきアプリケーション134に関するメタデータ404を読み取る(ブロック314)。ブロック316において、プリエンプティブNAND圧縮解除スケジューラ126は、メタデータ404によって定義された1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする。ブロック318において、アプリケーションランチャ構成要素208が従属関係を解決し、NANDフラッシュ104から従属オブジェクトをロードする前に、圧縮/圧縮解除モジュール118は従属オブジェクトを圧縮解除する(参照番号322)。
【００４３】
図5は、アプリケーションの1つまたは複数の実行の間にアプリケーション134に関するメタデータ404を動的に更新するための方法500の一実施形態を示す。ブロック502において、NANDフラッシュ104内に記憶された圧縮アプリケーション134を起動する。ブロック504において、従来の方法で(または、メタデータ404に基づいて上記で説明した方法で)圧縮アプリケーションを圧縮解除して実行する。ブロック506において、動的メタデータ生成モジュール212は、たとえば、ファイル、ライブラリ、およびブロックアセスを検出することができる。ブロック508において、動的メタデータ生成モジュール212は、アプリケーション実行アクティビティに基づいて追加の従属関係を抽出するか、あるいは決定する。ブロック510において、動的メタデータ生成モジュール212は、実行アクティビティの間に決定された追加の従属関係でアプリケーション134に関するメタデータ404を更新する。
【００４４】
追加のメタデータは、インストールされたAPK、またはファイル、ライブラリ、サイズ制約されたブロック、それが利用またはアクセスしているデータセットに関するコードの事前決定されたまたは計算された数の初期実行から生成され得ることを諒解されたい。更新されたメタデータをアプリケーションの将来の実行の際に使用して、アプリケーション134が起動されるとすぐに、従属ファイル、ライブラリ、サイズ制約されたブロック、データセットなどをプリエンプティブに圧縮解除することができる。アプリケーション134に関するメタデータは、アプリケーション134の数回の実行の後に安定化し得、デバイス内にインストールされたアプリケーション134の寿命にわたって使用され得る。コード、ライブラリ、およびファイルの場合、メタデータはそれらの記憶経路およびファイル名に関連するデータを維持することができる。サイズ制約されたブロックの場合、メタデータはブロックインデックスおよびサイズを定義することができる。アプリケーションデータの場合、メタデータは、アプリケーション134がアクセスしたページインデックスの情報を追跡することができる。O/S122を使用して、NANDフラッシュ104内のどこにページが存在するかを追跡し続けることができる。メタデータは、永続的に、O/S122の制御下で、保存され得る。O/S122がアプリケーション起動トリガを検出するとき、O/S122は、NANDフラッシュ104内に存在するいずれかの従属リソース(たとえば、コード、ライブラリ、データ、ファイル)をプリエンプティブに圧縮解除するための信号を直ちに与える。
【００４５】
レージー結合を通じてロードされた共有ライブラリに対するプリエンプティブ圧縮解除は、たとえば、dlopen()およびdlsym()など、代替方法を使用することができることをさらに諒解されたい。dlopen()関数は、プログラム実行の間に経路名およびファイル名を呼出しプログラムに利用可能にすることによって、実行可能オブジェクトファイルを指定させる。dlopen()呼出しは、ランタイム時に経路名およびファイル名によって指定された実行可能オブジェクトファイルの動的ローディングを効果的に行う。呼出しプログラムは、次いで、dlsym()呼出しを使用して動的にロードされたオブジェクトにおいて実装される関数およびシンボルを発見することによって動的にロードされた実行可能オブジェクトファイルによって提供される関数の使用を開始することができる。成功したdlopen()関数は、呼出しプログラムがdlsym()を使用して後続の呼出しに関して使用することが必要なハンドルを戻す。dlsym()関数は、dlopen()呼出しを通じてアクセス可能にされた動的にロードされたオブジェクトファイルにおいてランタイム内で定義されたシンボルのアドレスを取得する。シンボルの名称は、文字列として、dlsym()関数に引数として渡され、dlsym()関数は、次いで、ランタイム時に動的にロードされたすべてのオブジェクト内の指名されたシンボルを探索する。
【００４６】
メタデータ情報は、dlopen()APIを使用してロードされたライブラリをインターセプトすることによってアプリケーションの実行の間に動的に取得され得る。ライブラリ名をキャプチャし、アプリケーション134に関するメタデータ404内に保存するための変更をdlopen()API内で行うことができる。メタデータ404はO/Sによって管理されるため、情報は、圧縮解除メタデータテーブル124内に容易に保存され得る。メタデータ404を使用して、アプリケーション134が次回起動するときにライブラリをプリエンプティブに圧縮解除することができる。アプリケーション実行アクティビティに基づくメタデータの動的生成は、圧縮解除メタデータテーブル124の周期的または連続的な更新を実現し、静的メタデータ生成モジュール206によって取り残された可能性がある、いずれかの欠落したライブラリ/ファイル、サイズ制約されたブロックなどを検出することができる。
【００４７】
さらなる実施形態では、NANDフラッシュ104上のアプリケーション134によって保存されキャッシュされたデータに関してプリエンプティブ圧縮解除を実行することができる。キャッシュされたデータは、完全な経路を有するファイル名として存在し得る(たとえば、モバイルブラウザAPKに関する永続的キャッシュ)。動的メタデータ生成モジュール212は、アプリケーションが保存するキャッシュおよびデータに対する完全経路および名称を検出することができ、ファイルがアクセスされるにつれて、またファイルがアクセスされるとき、アプリケーション134に関する圧縮解除メタデータテーブル124内にそれらを含めることができる。アプリケーションが起動するとすぐに、データおよびキャッシュファイルをプリエンプティブに圧縮解除することができる。
【００４８】
サイズ制約されたデータブロックの場合、識別のためにブロックインデックスおよびサイズを使用することができる。静的メタデータ生成モジュール206は、圧縮解除メタデータテーブル124に関する最初のシードを提供し、アプリケーション134が初めて起動するときに支援することができる。動的メタデータ生成モジュール212は、初期メタデータを更新して改良するのを助け、たとえば、ブロックインデックスを識別子として使用してコード/データのサイズ制約されたブロックをカバーすることができる。優先度値(たとえば、図4の410、414、および418)はアプリケーション134が起動するたびにアプリケーション134によってその項目がどの程度アクティブに/頻繁に使用されるか、およびアプリケーション実行段階のどの程度早期にその項目が利用されるかを示すために、圧縮解除メタデータテーブル124内の各エントリに関連付けられる。優先度値は、動的メタデータ生成モジュール212によって周期的に更新され得る。特定のアプリケーション134に関して必要とされる項目に関する圧縮解除アクティビティは、優先度順序に従ってよい。たとえば、頻繁に使用され、その使用がアプリケーション実行の早期に出現する項目により高い優先度を割り当てることができるが、これはその項目をプリエンプティブに圧縮解除することは最も影響力を有し得るためである。
【００４９】
上述のように、システム100は、任意の望ましいコンピューティングシステム内に組み込まれてもよい。図6は、例示的なポータブルコンピューティングデバイス(PCD)600内に組み込まれたシステム100を示す。システム100のいくつかの構成要素はSoC322(たとえば、データ圧縮構成要素118およびプリエンプティブNAND圧縮解除スケジューラ126)上に含まれ得るが、他の構成要素(たとえば、DRAM106およびNANDフラッシュ104)はSoC322に結合された外部構成要素であり得ることが容易に諒解されよう。SoC322は、マルチコアCPU602を含むことができる。マルチコアCPU602は、第0のコア610、第1のコア612、および第Nのコア614を含み得る。コアのうちの1つは、たとえば、グラフィックス処理ユニット(GPU)を含み、他のコアのうちの1つまたは複数はCPUを含む場合がある。
【００５０】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、CPU602に結合されてもよい。一方、オンチップシステム322の外部にあるタッチスクリーンディスプレイ606は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合されてよい。
【００５１】
図6は、ビデオエンコーダ334、たとえば、位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU602に結合されることをさらに示す。さらに、ビデオ増幅器336がビデオエンコーダ334とタッチスクリーンディスプレイ606とに結合される。また、ビデオポート338がビデオ増幅器336に結合される。図6に示すように、ユニバーサルシリアルバス(USB)コントローラ340がマルチコアCPU602に結合される。同様に、USBポート342が、USBコントローラ340に結合される。
【００５２】
さらに、図6に示すように、デジタルカメラ348がマルチコアCPU602に結合され得る。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化膜半導体(CMOS)カメラである。
【００５３】
図6にさらに示すように、ステレオオーディオコーダ-デコーダ(コーデック)350がマルチコアCPU602に結合され得る。その上、オーディオ増幅器352が、ステレオオーディオコーデック350に結合されてもよい。例示的な態様では、第1のステレオスピーカ354と第2のステレオスピーカ356とがオーディオ増幅器352に結合される。図6は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合され得ることを示す。さらに、マイクロフォン360が、マイクロフォン増幅器358に結合されてもよい。特定の態様では、周波数変調(FM)無線チューナ362が、ステレオオーディオコーデック350に結合されてもよい。また、FMアンテナ364が、FM無線チューナ362に結合される。さらに、ステレオヘッドフォン366は、ステレオオーディオコーデック350に結合されてもよい。
【００５４】
図6は、無線周波数(RF)トランシーバ368がマルチコアCPU602に結合される場合があることをさらに示す。RFスイッチ370が、RFトランシーバ368とRFアンテナ372とに結合される場合がある。キーパッド374が、マルチコアCPU602に結合される場合がある。また、マイクロフォン376を有するモノヘッドセットがマルチコアCPU602に結合されてもよい。さらに、バイブレータデバイス378がマルチコアCPU602に結合されてもよい。
【００５５】
図6はまた、電源380がオンチップシステム322に結合され得ることを示す。特定の態様では、電源380は電力を必要とするPCD600の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリー、または交流(AC)からAC電源に接続されたDC変圧器へと誘導されるDC電源である。
【００５６】
図6は、PCD600がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用され得るネットワークカード388も含み得ることをさらに示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当技術分野でよく知られている任意の他のネットワークカードであってもよい。さらに、ネットワークカード388は、チップ内に組み込まれる場合があり、すなわち、ネットワークカード388は、チップ内のフルソリューションである場合があり、別個のネットワークカード388でなくてもよい。
【００５７】
図6に示すように、タッチスクリーンディスプレイ606、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、オンチップシステム322の外部に存在する場合がある。
【００５８】
本明細書で説明した方法ステップのうちの1つまたは複数は、上記のモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを諒解されたい。これらの命令は、本明細書で説明した方法を実行するために、対応するモジュールと組み合わせてまたは協働して、任意の適切なプロセッサによって実行される場合がある。
【００５９】
本明細書で説明したプロセスまたはプロセスフローにおける特定のステップは、説明したように本発明が機能するために他のステップよりも自然に先行する。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合には、本発明は、説明したステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行され、後に実行され、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップが省略される場合があるか、または実行されない場合がある。さらに、「その後(thereafter)」、「次いで(then)」、「次に(next)」などの語は、ステップの順序を限定することを意図していない。これらの語は単に、例示的な方法の説明を通して読者を導くために使用される。
【００６０】
加えて、当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、容易に、開示された発明を実現するために、コンピュータコードを書くことができ、または適切なハードウェアおよび/もしくは回路を識別することができる。
【００６１】
したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示が、本発明をどのように製作し使用すべきかについて適切に理解するために必要であるとは見なされない。特許請求されるコンピュータ実装プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示す場合がある図とともに、より詳細に説明される。
【００６２】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せにおいて実装される場合がある。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体上の1つまたは複数の命令またはコードとして記憶または送信されてもよい。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってもよい。例として、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形態における所望のプログラムコードを担持または記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えてもよい。
【００６３】
また、あらゆる接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００６４】
本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６５】
本発明の趣旨および範囲から逸脱することなく、本発明が関係する代替的な実施形態が、当業者には明らかになるであろう。したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変が行われてよいことが理解されよう。
【符号の説明】
【００６６】
100  システム
102  システムオンチップ(SoC)
104  NANDフラッシュ、NANDフラッシュストレージ、DRAM
106  ダイナミックランダムアクセスメモリ(DRAM)
108  フラッシュコントローラ
110  中央処理装置(CPU)
112  DRAMコントローラ
114  読出し専用メモリ(ROM)
116  スタティックランダムアクセスメモリ(SRAM)
118  圧縮/圧縮解除モジュール
120  SoCバス
122  オペレーティングシステム(O/S)
124  圧縮解除メタデータテーブル、テーブル
126  プリエンプティブNAND圧縮解除スケジューラ
128  制御バス
130  データバス
132  バス
134  アプリケーション、非圧縮アプリケーション
136  誤り訂正コード(ECC)モジュール、従属圧縮オブジェクト、圧縮オブジェクト、圧縮構成要素
201  参照番号
202  アプリケーションインストーラ構成要素
203  参照番号
204  非圧縮構成要素、構成要素
205  参照番号
206  静的メタデータ生成モジュール
207  参照番号
208  アプリケーションランチャ構成要素
209  参照番号委
210  アプリケーション実行環境
211  参照番号
212  動的メタデータ生成モジュール
213  参照番号
215  参照番号
217  参照番号
219  参照番号
300  方法
312  決定ブロック
322  参照番号、SoC、オンチップシステム
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバス(USB)コントローラ
342  USBポート
348  デジタルカメラ、カメラ
350  ステレオオーディオコーダ-デコーダ(コーデック)
352  オーディオ増幅器
354  第1のステレオスピーカ
356  第2のステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  周波数変調(FM)無線チューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  無線周波数(RF)トランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  マイクロフォン、モノヘッドセット
378  バイブレータデバイス
380  電源
388  ネットワークカード
402  アプリケーション識別子
404  メタデータ
406  アプリケーション識別子1
407  アプリケーション識別子N
408  <full installed path and name>
410  優先度値
411  従属オブジェクト
412  <full installed path and name>
414  優先度値
415  従属オブジェクト
416  <Block Index, Size>データ
418  優先度値
419  サイズ制約されたブロック
500  方法
600  ポータブルコンピューティングデバイス(PCD)
602  マルチコアCPU
606  タッチスクリーンディスプレイ
610  第0のコア
612  第1のコア
614  第Nのコア
【図１】
2019523480.tif 000004
【図２】
2019523480.tif 000005
【図３】
2019523480.tif 000006
【図４】
2019523480.tif 000007
【図５】
2019523480.tif 000008
【図６】
2019523480.tif 000009
【手続補正書】
【提出日】平成30年12月26日(2018.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
圧縮アプリケーションの圧縮解除をスケジュールするための方法であって、前記圧縮アプリケーションが、アプリケーションに関連する1つまたは複数の従属オブジェクトを含み、前記方法が、
前記圧縮アプリケーションのフラッシュメモリデバイスへのインストールを開始するステップと、
前記アプリケーションに関連する前記1つまたは複数の従属オブジェクトを圧縮するステップであって、前記1つまたは複数の従属オブジェクトが、前記アプリケーションの実行のために前記アプリケーションが依存するファイルを含む、圧縮するステップと、
前記1つまたは複数の従属圧縮オブジェクトを前記フラッシュメモリデバイス内に記憶するステップと、
前記圧縮アプリケーションの前記フラッシュメモリデバイスへの前記インストールの間に、前記圧縮アプリケーションに関するメタデータを生成するステップであって、前記メタデータが、前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを識別する、生成するステップと、
前記メタデータを圧縮解除メタデータテーブル内に記憶するステップと、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを決定するステップと、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属圧縮オブジェクトの圧縮解除をプリエンプティブにスケジュールするステップと、
前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトに初めてアクセスするときに、前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するのではなく、前記圧縮アプリケーションが起動するにつれて、また前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトにアクセスする前に、前記プリエンプティブにスケジュールされた圧縮解除に基づいて前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するステップと
を含む、方法。
【請求項２】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項３】
前記メタデータが、インストールされた経路およびファイル名、複数のブロックインデックスおよびサイズ、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項1に記載の方法。
【請求項４】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項1に記載の方法。
【請求項５】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するステップと、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするステップが、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするステップを含む、請求項1に記載の方法。
【請求項７】
圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、前記圧縮アプリケーションが、アプリケーションに関連する1つまたは複数の従属オブジェクトを含み、前記システムが、
前記圧縮アプリケーションのフラッシュメモリデバイスへのインストールを開始するための手段と、
前記アプリケーションに関連する前記1つまたは複数の従属オブジェクトを圧縮するための手段であって、前記1つまたは複数の従属オブジェクトが、前記アプリケーションの実行のために前記アプリケーションが依存するファイルを含む、圧縮するための手段と、
前記1つまたは複数の従属圧縮オブジェクトを前記フラッシュメモリデバイス内に記憶するための手段と、
前記圧縮アプリケーションの前記フラッシュメモリデバイスへの前記インストールの間に、前記圧縮アプリケーションに関するメタデータを生成するための手段であって、前記メタデータが、前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを識別する、生成するための手段と、
前記メタデータを圧縮解除メタデータテーブル内に記憶するための手段と、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを決定するための手段と、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属圧縮オブジェクトの圧縮解除をプリエンプティブにスケジュールするための手段と、
前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトに初めてアクセスするときに、前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するのではなく、前記圧縮アプリケーションが起動するにつれて、また前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトにアクセスする前に、前記プリエンプティブにスケジュールされた圧縮解除に基づいて前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するための手段と
を備える、システム。
【請求項８】
前記1つまたは複数の従属オブジェクトを前記圧縮解除するための手段が、中央処理措置(CPU)および専用ランダムアクセスメモリ(RAM)を備えた圧縮コプロセッサのうちの1つを備える、請求項7に記載のシステム。
【請求項９】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項7に記載のシステム。
【請求項１０】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項7に記載のシステム。
【請求項１１】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項7に記載のシステム。
【請求項１２】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するための手段と、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するための手段と
をさらに備える、請求項7に記載のシステム。
【請求項１３】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするための手段が、
ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするための手段
を備える、請求項7に記載のシステム。
【請求項１４】
メモリ内で具現化され、圧縮アプリケーションの圧縮解除をスケジュールするためにプロセッサによって実行可能である、コンピュータプログラムであって、前記圧縮アプリケーションが、アプリケーションに関連する1つまたは複数の従属オブジェクトを含み、前記コンピュータプログラムが、
前記圧縮アプリケーションのフラッシュメモリデバイスへのインストールを開始することと、
前記アプリケーションに関連する前記1つまたは複数の従属オブジェクトを圧縮することであって、前記1つまたは複数の従属オブジェクトが、前記アプリケーションの実行のために前記アプリケーションが依存するファイルを含む、圧縮することと、
前記1つまたは複数の従属圧縮オブジェクトを前記フラッシュメモリデバイス内に記憶することと、
前記圧縮アプリケーションの前記フラッシュメモリデバイスへの前記インストールの間に、前記圧縮アプリケーションに関するメタデータを生成することであって、前記メタデータが、前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを識別する、生成することと、
前記メタデータを圧縮解除メタデータテーブル内に記憶することと、
前記圧縮アプリケーションの起動に応じて、
前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを決定することと、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属圧縮オブジェクトの圧縮解除をプリエンプティブにスケジュールすることと、
前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトに初めてアクセスするときに、前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するのではなく、前記圧縮アプリケーションが起動するにつれて、また前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトにアクセスする前に、前記プリエンプティブにスケジュールされた圧縮解除に基づいて前記1つまたは複数の従属圧縮オブジェクトを圧縮解除することと
を行うように構成された論理を備える、コンピュータプログラム。
【請求項１５】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項14に記載のコンピュータプログラム。
【請求項１６】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項14に記載のコンピュータプログラム。
【請求項１７】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項14に記載のコンピュータプログラム。
【請求項１８】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
ように構成された論理をさらに備える、請求項14に記載のコンピュータプログラム。
【請求項１９】
前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするように構成された前記論理が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成された論理を備える、請求項14に記載のコンピュータプログラム。
【請求項２０】
圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、前記圧縮アプリケーションが、アプリケーションに関連する1つまたは複数の従属オブジェクトを含み、前記システムが、
フラッシュメモリデバイスと、
プリエンプティブ圧縮解除スケジューラ構成要素とを備え、前記プリエンプティブ圧縮解除スケジューラ構成要素が、
アプリケーションインストーラ構成要素による前記圧縮アプリケーションの前記フラッシュメモリデバイスへのインストールに応じて、前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを識別するメタデータを生成して記憶し、
アプリケーションランチャ構成要素による前記圧縮アプリケーションの起動に応じて、前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属圧縮オブジェクトを決定し、
前記記憶されたメタデータに基づいて前記1つまたは複数の従属圧縮オブジェクトの圧縮解除をプリエンプティブにスケジュールし、
前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトに初めてアクセスするときに、前記1つまたは複数の従属圧縮オブジェクトを圧縮解除するのではなく、前記圧縮アプリケーションが起動するにつれて、また前記起動したアプリケーションが前記1つまたは複数の従属圧縮オブジェクトにアクセスする前に、前記プリエンプティブにスケジュールされた圧縮解除に基づいて前記1つまたは複数の従属圧縮オブジェクトを圧縮解除する
ように構成される論理を備える、システム。
【請求項２１】
前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項20に記載のシステム。
【請求項２２】
前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項20に記載のシステム。
【請求項２３】
前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項20に記載のシステム。
【請求項２４】
前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
ように構成された動的メタデータ生成モジュールをさらに備える、請求項20に記載のシステム。
【請求項２５】
前記プリエンプティブ圧縮解除スケジューラ構成要素が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成される、請求項20に記載のシステム。
【請求項２６】
前記プリエンプティブ圧縮解除スケジューラ構成要素が、前記フラッシュメモリデバイスに電気的に結合されたシステムオンチップ(SoC)上に存在する、請求項20に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】削除
【補正の内容】
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】削除
【補正の内容】
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】削除
【補正の内容】
【国際調査報告】
2019523480.tif 000010
2019523480.tif 000011