JP2019523480A - Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング - Google Patents

Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング Download PDF

Info

Publication number
JP2019523480A
JP2019523480A JP2018566487A JP2018566487A JP2019523480A JP 2019523480 A JP2019523480 A JP 2019523480A JP 2018566487 A JP2018566487 A JP 2018566487A JP 2018566487 A JP2018566487 A JP 2018566487A JP 2019523480 A JP2019523480 A JP 2019523480A
Authority
JP
Japan
Prior art keywords
application
decompression
metadata
dependent
dependent objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018566487A
Other languages
English (en)
Inventor
サブラト・クマール・デ
デクスター・チュン
ヤンル・リ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2019523480A publication Critical patent/JP2019523480A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

フラッシュストレージからのアプリケーションの圧縮解除をスケジュールするためのシステム、方法、およびコンピュータプログラムが開示される。システムの一実施形態は、フラッシュメモリデバイスと、プリエンプティブ圧縮解除スケジューラ構成要素とを備える。プリエンプティブ圧縮解除スケジューラ構成要素は、アプリケーションインストーラ構成要素による圧縮解除アプリケーションのフラッシュメモリデバイスへのインストールに応じて、圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義するメタデータを生成して記憶するように構成された論理を備える。アプリケーションランチャ構成要素による圧縮アプリケーションの起動に応じて、プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータから、起動されるべき圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを決定する。プリエンプティブ圧縮解除スケジューラ構成要素は、記憶されたメタデータに基づいて1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする。

Description

本発明は、NANDストレージデバイスのためのプリエンプティブ圧縮解除スケジューリングに関する。
フラッシュストレージなどの不揮発性ストレージは、ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(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)は、様々なインデックス、タグ、および値を示す。
Figure 2019523480
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のコア

Claims (30)

  1. フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするための方法であって、
    フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成するステップであって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成するステップと、
    前記メタデータをメモリ内に記憶するステップと、
    前記圧縮アプリケーションの起動に応じて、
    前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定するステップと、
    前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするステップと
    を含む、方法。
  2. アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項1に記載の方法。
  4. 前記メタデータが、インストールされた経路およびファイル名、複数のブロックインデックスおよびサイズ、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項1に記載の方法。
  5. 前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項1に記載の方法。
  6. 前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するステップと、
    前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するステップと
    をさらに含む、請求項1に記載の方法。
  7. 前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするステップが、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするステップを含む、請求項1に記載の方法。
  8. フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、
    フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成するための手段であって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成するための手段と、
    前記メタデータをメモリ内に記憶するための手段と、
    前記圧縮アプリケーションの起動に応じて、
    前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定するための手段と、
    前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするための手段と
    を備える、システム。
  9. アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するための手段
    をさらに備える、請求項8に記載のシステム。
  10. 前記1つまたは複数の従属オブジェクトを前記圧縮解除するための手段が、中央処理措置(CPU)および専用ランダムアクセスメモリ(RAM)を備えた圧縮コプロセッサのうちの1つを備える、請求項9に記載のシステム。
  11. 前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む。前記ファイルの前記コンテンツおよびブロックが、起動されている特定のアプリケーションが必要とする、バイナリ、テキスト、バイトコード、中間プログラム表現、HTML、XML、いずれかの種類のソフトウェアコード、いずれかのフォーマットのデータなどであり得る
    請求項9に記載のシステム。
  12. 前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項8に記載のシステム。
  13. 前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項8に記載のシステム。
  14. 前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定するための手段と、
    前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新するための手段と
    をさらに備える、請求項8に記載のシステム。
  15. 前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除を前記プリエンプティブにスケジュールするための手段が、
    ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするための手段
    を備える、請求項8に記載のシステム。
  16. メモリ内で具現化され、フラッシュストレージ内の圧縮アプリケーションの圧縮解除をスケジュールするためにプロセッサによって実行可能である、コンピュータプログラムであって、
    フラッシュメモリデバイス上にインストールされた前記圧縮アプリケーションに関するメタデータを生成することであって、前記メタデータが、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義する、生成することと、
    前記メタデータをメモリ内に記憶することと、
    前記圧縮アプリケーションの起動に応じて、
    前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定することと、
    前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールすることと
    を行うように構成された論理を備える、コンピュータプログラム。
  17. アプリケーションランチャが前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除する
    ように構成された論理をさらに備える、請求項16に記載のコンピュータプログラム。
  18. 前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む。前記ファイルの前記コンテンツおよびブロックが、起動されている特定のアプリケーションが必要とする、バイナリ、テキスト、バイトコード、中間プログラム表現、HTML、XML、いずれかの種類のソフトウェアコード、いずれかのフォーマットのデータなどであり得る
    請求項16に記載のコンピュータプログラム。
  19. 前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項16に記載のコンピュータプログラム。
  20. 前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項16に記載のコンピュータプログラム。
  21. 前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
    前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
    ように構成された論理をさらに備える、請求項16に記載のコンピュータプログラム。
  22. 前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールするように構成された前記論理が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成された論理を備える、請求項16に記載のコンピュータプログラム。
  23. フラッシュストレージからの圧縮アプリケーションの圧縮解除をスケジュールするためのシステムであって、
    フラッシュメモリデバイスと、
    プリエンプティブ圧縮解除スケジューラ構成要素とを備え、前記プリエンプティブ圧縮解除スケジューラ構成要素が、
    アプリケーションインストーラ構成要素による前記圧縮アプリケーションの前記フラッシュメモリデバイスへのインストールに応じて、前記圧縮アプリケーションに関連する1つまたは複数の従属オブジェクトを定義するメタデータを生成して記憶し、
    アプリケーションランチャ構成要素による前記圧縮アプリケーションの起動に応じて、前記記憶されたメタデータから、起動されるべき前記圧縮アプリケーションに関連する前記1つまたは複数の従属オブジェクトを決定し、
    前記記憶されたメタデータに基づいて前記1つまたは複数の従属オブジェクトの圧縮解除をプリエンプティブにスケジュールする
    ように構成される論理を備える、システム。
  24. 前記アプリケーションランチャ構成要素またはローダ構成要素が前記従属オブジェクトをロードする前に、前記1つまたは複数の従属オブジェクトを圧縮解除するように構成された圧縮/圧縮解除構成要素をさらに備える、請求項23に記載のシステム。
  25. 前記1つまたは複数の従属オブジェクトが、従属ファイル、従属ライブラリ、共有ライブラリ、および1つまたは複数のサイズ制約されたブロックのうちの1つまたは複数を含む、請求項24に記載のシステム。
  26. 前記メタデータが、インストールされた経路およびファイル名、ならびに前記1つまたは複数の従属オブジェクトを圧縮解除するための順序を決定するための優先度値のリストを含む、請求項23に記載のシステム。
  27. 前記フラッシュメモリデバイスがNANDフラッシュを含む、請求項23に記載のシステム。
  28. 前記圧縮解除されるアプリケーションの実行の間に、1つまたは複数の追加の従属オブジェクトを決定し、
    前記記憶されたメタデータを前記1つまたは複数の追加の従属オブジェクトで更新する
    ように構成された動的メタデータ生成モジュールをさらに備える、請求項23に記載のシステム。
  29. 前記プリエンプティブ圧縮解除スケジューラ構成要素が、ダイナミックリンカが前記1つまたは複数の従属オブジェクトに関連する従属関係を解決する前に、前記1つまたは複数の従属オブジェクトの圧縮解除をスケジュールするように構成される、請求項23に記載のシステム。
  30. 前記プリエンプティブ圧縮解除スケジューラ構成要素が、前記フラッシュメモリデバイスに電気的に結合されたシステムオンチップ(SoC)上に存在する、請求項23に記載のシステム。
JP2018566487A 2016-06-23 2017-05-26 Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング Pending JP2019523480A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/191,400 US10817224B2 (en) 2016-06-23 2016-06-23 Preemptive decompression scheduling for a NAND storage device
US15/191,400 2016-06-23
PCT/US2017/034858 WO2017222752A1 (en) 2016-06-23 2017-05-26 Preemptive decompression scheduling for a nand storage device

Publications (1)

Publication Number Publication Date
JP2019523480A true JP2019523480A (ja) 2019-08-22

Family

ID=59054238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018566487A Pending JP2019523480A (ja) 2016-06-23 2017-05-26 Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング

Country Status (7)

Country Link
US (1) US10817224B2 (ja)
EP (1) EP3475814A1 (ja)
JP (1) JP2019523480A (ja)
KR (1) KR20190020677A (ja)
CN (1) CN109313562A (ja)
BR (1) BR112018076211A2 (ja)
WO (1) WO2017222752A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11340914B2 (en) * 2020-10-21 2022-05-24 Red Hat, Inc. Run-time identification of dependencies during dynamic linking
FR3118513B1 (fr) * 2020-12-29 2023-04-07 Stmicroelectronics Grand Ouest Sas Procédé d’augmentation du nombre d’applications dans un dispositif à mémoire limitée

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003115A (en) * 1997-07-29 1999-12-14 Quarterdeck Corporation Method and apparatus for predictive loading of a cache
US6195024B1 (en) * 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6510499B1 (en) * 2000-06-22 2003-01-21 International Business Machines Corporation Method, apparatus, and article of manufacture for providing access to data stored in compressed files
US6918106B1 (en) * 2000-07-31 2005-07-12 Sun Microsystems, Inc. Method and apparatus for collocating dynamically loaded program files
FR2825810A1 (fr) 2001-06-06 2002-12-13 Koninkl Philips Electronics Nv Dispositif electronique a processeur pipeline utilisant un compactage de code et procede de gestion d'un tel processeur
JP4806888B2 (ja) 2002-07-19 2011-11-02 ソニー株式会社 復号化装置及び復号化方法
US20050013181A1 (en) 2003-07-17 2005-01-20 Adelmann Todd C. Assisted memory device with integrated cache
JP4180547B2 (ja) * 2004-07-27 2008-11-12 富士通株式会社 動画像データ復号装置、および復号プログラム
US7831894B2 (en) 2006-10-10 2010-11-09 Broadcom Corporation Address generation for contention-free memory mappings of turbo codes with ARP (almost regular permutation) interleaves
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
CN101848549B (zh) * 2010-04-29 2012-06-20 中国人民解放军国防科学技术大学 无线传感器网络节点任务调度方法
US10002021B2 (en) * 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
US9582204B2 (en) * 2014-01-07 2017-02-28 Apple Inc. Speculative prefetching of data stored in flash memory
US10671545B2 (en) 2014-06-28 2020-06-02 Vmware, Inc. Asynchronous encryption and decryption of virtual machine memory for live migration

Also Published As

Publication number Publication date
WO2017222752A1 (en) 2017-12-28
CN109313562A (zh) 2019-02-05
US10817224B2 (en) 2020-10-27
US20170371595A1 (en) 2017-12-28
KR20190020677A (ko) 2019-03-04
BR112018076211A2 (pt) 2019-03-26
EP3475814A1 (en) 2019-05-01

Similar Documents

Publication Publication Date Title
US11818224B2 (en) On demand resources
EP2962198B1 (en) Executing an operating system on processors having different instruction set architectures
US8972967B2 (en) Application packages using block maps
US8739147B2 (en) Class isolation to minimize memory usage in a device
US9880824B2 (en) On demand resources
US20170124345A1 (en) Reducing Resource Consumption Associated with Storage and Operation of Containers
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
KR101759801B1 (ko) 소프트웨어 애플리케이션 전달 및 개시 시스템
CN107038041B (zh) 数据处理方法、错误码动态兼容方法、装置和系统
US9507613B2 (en) Methods and apparatus for dynamically preloading classes
JP2003157170A (ja) プログラムバイナリをデコードおよび実行する方法
US20180225058A1 (en) Write filter with dynamically expandable overlay
US20130055237A1 (en) Self-adapting software system
US9207946B2 (en) Auto-cloudifying applications via runtime modifications
CN112667246A (zh) 应用功能扩展的方法、装置及电子设备
CN109918381B (zh) 用于存储数据的方法和装置
US20120331489A1 (en) Bypassing user mode redirection
JP2019523480A (ja) Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング
US8327122B2 (en) Method and system for providing context switch using multiple register file
US20120151194A1 (en) Bytecode branch processor and method
US10552135B1 (en) Reducing a size of an application package
JP2017515236A (ja) ハードディスクがアプリケーションコードを実行するための方法および装置
CN109840156B (zh) 一种数据缓存方法及其设备、存储介质、终端
US10152255B2 (en) Accelerated loading of guest virtual machine from live snapshot
EP2896185B1 (en) Reducing network usage of computing device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181226