(57)【要約】  ポータブル通信デバイスにおける異種メモリシステムを提供するためのシステム、方法、およびコンピュータプログラムが開示される。1つのシステムは、不揮発性ランダムアクセスメモリ(NVRAM)および揮発性ランダムアクセスメモリ(VRAM)に結合されたシステムオンチップ(SoC)を備える。SoCは、NVRAMとVRAMとを備える異種システムメモリをマッピングするためのオペレーティングシステムを備える。オペレーティングシステムは、NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、NVRAMの第2の部分をプログラムコードおよび読出し専用データのために割り振り、NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振るように構成されたメモリマネージャを備える。VRAMは、プログラムヒープおよびプログラムスタックのために割り振られる。
2018518739.tif 000002
【特許請求の範囲】
【請求項１】
ポータブル通信デバイスにおけるメモリ消費電力を最適化するための方法であって、前記方法が、
ポータブル通信デバイス上のシステムオンチップ(SoC)のための異種システムメモリを構成するステップであって、前記異種システムメモリが、前記SoCに結合された不揮発性ランダムアクセスメモリ(NVRAM)と揮発性ランダムアクセスメモリ(VRAM)とを備える、ステップと、
前記NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、前記NVRAMの第2の部分をプログラムコードおよび読出し専用データのために割り振り、前記NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振るステップと、
前記VRAMをプログラムヒープとプログラムスタックとに割り振るステップと
を備える、方法。
【請求項２】
前記VRAMがダイナミックランダムアクセスメモリ(DRAM)を備え、前記NVRAMが磁気ランダムアクセスメモリ(MRAM)を備える、請求項1に記載の方法。
【請求項３】
アプリケーションからメモリ要求を受信するステップと、
前記メモリ要求に関連するメモリ使用タイプを決定するステップと、
前記メモリ使用タイプに基づいて前記NVRAMまたは前記VRAMに割り振るステップと
をさらに備える、請求項1に記載の方法。
【請求項４】
前記メモリ使用タイプが、前記スワップ動作、前記読出し専用プログラムコード、前記オペレーティングシステムページテーブル、前記プログラムヒープ、および前記プログラムスタックのうちの1つに対応する、請求項3に記載の方法。
【請求項５】
前記メモリ要求が、前記メモリ使用タイプを示すフラグを備える、請求項3に記載の方法。
【請求項６】
前記NVRAMからウォームブートするステップをさらに備える、請求項1に記載の方法。
【請求項７】
前記NVRAMからウォームブートする前記ステップが、前記NVRAM内のメモリマップを検出するためのブートステージソフトウェアを備える、請求項1に記載の方法。
【請求項８】
ポータブル通信デバイスにおけるメモリ消費電力を最適化するためのシステムであって、前記システムが、
ポータブル通信デバイス上のシステムオンチップ(SoC)のための異種システムメモリを構成するための手段であって、前記異種システムメモリが、前記SoCに結合された不揮発性ランダムアクセスメモリ(NVRAM)と揮発性ランダムアクセスメモリ(VRAM)とを備える、手段と、
前記NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、前記NVRAMの第2の部分を読出し専用プログラムコードのために割り振り、前記NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振るための手段と、
前記VRAMをプログラムヒープとプログラムスタックとに割り振るための手段と
を備える、システム。
【請求項９】
前記VRAMがダイナミックランダムアクセスメモリ(DRAM)を備え、前記NVRAMが磁気ランダムアクセスメモリ(MRAM)を備える、請求項8に記載のシステム。
【請求項１０】
アプリケーションからメモリ要求を受信するための手段と、
前記メモリ要求に関連するメモリ使用タイプを決定するための手段と、
前記メモリ使用タイプに基づいて前記NVRAMまたは前記VRAMに割り振るための手段と
をさらに備える、請求項8に記載のシステム。
【請求項１１】
前記メモリ使用タイプが、前記スワップ動作、前記読出し専用プログラムコード、前記オペレーティングシステムページテーブル、前記プログラムヒープ、および前記プログラムスタックのうちの1つに対応する、請求項10に記載のシステム。
【請求項１２】
前記メモリ要求が、前記メモリ使用タイプを示すフラグを備える、請求項10に記載のシステム。
【請求項１３】
前記NVRAMから前記ポータブル通信デバイスをウォームブートするための手段をさらに備える、請求項8に記載のシステム。
【請求項１４】
前記NVRAMからウォームブートするための前記手段が、前記NVRAM内のメモリマップを検出するための手段を備える、請求項13に記載のシステム。
【請求項１５】
ポータブル通信デバイスにおけるメモリ消費電力を最適化するための、メモリ内に具体化され、プロセッサによって実行可能なコンピュータプログラムであって、前記コンピュータプログラムが、
ポータブル通信デバイス上のシステムオンチップ(SoC)のための異種システムメモリをマッピングすることであって、前記異種システムメモリが、前記SoCに結合された不揮発性ランダムアクセスメモリ(NVRAM)と揮発性ランダムアクセスメモリ(VRAM)とを備える、ことと、
前記NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、前記NVRAMの第2の部分を読出し専用プログラムコードのために割り振り、前記NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振ることと、
前記VRAMをプログラムヒープとプログラムスタックとに割り振ることと
を行うように構成されたロジックを備える、コンピュータプログラム。
【請求項１６】
前記VRAMがダイナミックランダムアクセスメモリ(DRAM)を備え、前記NVRAMが磁気ランダムアクセスメモリ(MRAM)を備える、請求項15に記載のコンピュータプログラム。
【請求項１７】
アプリケーションからメモリ要求を受信することと、
前記メモリ要求に関連するメモリ使用タイプを決定することと、
前記メモリ使用タイプに基づいて前記NVRAMまたは前記VRAMに割り振ることと
を行うように構成されたロジックをさらに備える、請求項15に記載のコンピュータプログラム。
【請求項１８】
前記メモリ使用タイプが、前記スワップ動作、前記読出し専用プログラムコード、前記オペレーティングシステムページテーブル、前記プログラムヒープ、および前記プログラムスタックのうちの1つに対応する、請求項17に記載のコンピュータプログラム。
【請求項１９】
前記メモリ要求が、前記メモリ使用タイプを示すフラグを備える、請求項17に記載のコンピュータプログラム。
【請求項２０】
前記NVRAMから前記ポータブル通信デバイスをウォームブートするように構成されたロジックをさらに備える、請求項15に記載のコンピュータプログラム。
【請求項２１】
前記NVRAMからウォームブートするように構成された前記ロジックが、前記NVRAM内のメモリマップを検出するように構成された一次ブートローダを備える、請求項20に記載のコンピュータプログラム。
【請求項２２】
ポータブル通信デバイスにおける異種メモリシステムを提供するためのシステムであって、前記システムが、
不揮発性ランダムアクセスメモリ(NVRAM)および揮発性ランダムアクセスメモリ(VRAM)に結合されたシステムオンチップ(SoC)を備え、
前記SoCが、前記NVRAMと前記VRAMとを備える異種システムメモリをマッピングするためのオペレーティングシステムを備え、前記オペレーティングシステムが、
前記NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、前記NVRAMの第2の部分を読出し専用プログラムコードのために割り振り、前記NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振り、
前記VRAMをプログラムヒープおよびプログラムスタックのために割り振るように構成されたメモリマネージャを備える、システム。
【請求項２３】
前記VRAMがダイナミックランダムアクセスメモリ(DRAM)を備え、前記NVRAMが磁気ランダムアクセスメモリ(MRAM)を備える、請求項22に記載のシステム。
【請求項２４】
前記メモリマネージャが、
アプリケーションからメモリ要求を受信することと、
前記メモリ要求に関連するメモリ使用タイプを決定することと、
前記メモリ使用タイプに基づいて前記NVRAMまたは前記VRAMに割り振ることと
を行うようにさらに構成された、請求項22に記載のシステム。
【請求項２５】
前記メモリ使用タイプが、前記スワップ動作、前記読出し専用プログラムコード、前記オペレーティングシステムページテーブル、前記プログラムヒープ、および前記プログラムスタックのうちの1つに対応する、請求項24に記載のシステム。
【請求項２６】
前記メモリ要求が、前記メモリ使用タイプを示すフラグを備える、請求項24に記載のシステム。
【請求項２７】
前記メモリマネージャが、前記NVRAMから前記ポータブル通信デバイスをウォームブートするようにさらに構成された、請求項22に記載のシステム。
【請求項２８】
前記NVRAMからの前記ウォームブートが、前記NVRAM内のメモリマップを検出するための1つまたは複数のブートローダを備える、請求項27に記載のシステム。
【請求項２９】
前記ポータブル通信デバイスが、スマートフォン、タブレットコンピュータ、およびポータブルゲームデバイスのうちの1つを備える、請求項22に記載のシステム。
【請求項３０】
前記メモリマネージャが、前記ブロックデバイスのサイズを較正するようにさらに構成された、請求項22に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異種システムメモリにおけるメモリ消費電力を最適化するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、ポータブルゲームコンソール、ウェアラブルデバイス、および他のバッテリ駆動デバイス)、ならびに他のコンピューティングデバイスは、絶えず拡大する多数の特徴およびサービスを提供し続け、情報、リソース、および通信への先例のないレベルのアクセスをユーザに提供する。これらのサービス拡張とペースを合わせるために、そのようなデバイスは、より強力、かつより複雑になってきた。現在、ポータブルコンピューティングデバイスには、一般に、単一の基板上に組み込まれた1つまたは複数のチップ構成要素(たとえば、1つまたは複数の中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサなど)を含む、システムオンチップ(SoC)が含まれる。SoCは、高性能データおよび制御インターフェースを介して、ダイナミックランダムアクセスメモリ(DRAM)などの、1つまたは複数の揮発性メモリデバイスに結合されてもよい。
【０００３】
DRAMは、集積回路内の別個のキャパシタにデータの各ビットを記憶する一種の揮発性メモリである。キャパシタは、充電または放電されることが可能である。従来0および1と呼ばれるビットの2つの値を表すために、これらの2つの状態がとられる。キャパシタは電荷を漏洩するので、キャパシタの電荷が定期的にリフレッシュされない限り、情報は最終的に消滅する。このリフレッシュの必要性により、DRAMは、SRAMおよび他のスタティックメモリとは対照的にダイナミックメモリと呼ばれる。DRAMの利点は、その構造の単純さであり、ビットあたり1つのトランジスタおよびキャパシタのみが必要とされ、それは、DRAMが非常に高密度に達することを可能にする。しかしながら、DRAMの密度要件および速度要件が増加し続けるにつれて、メモリ消費電力は、重大な問題になり続けている。
【０００４】
したがって、揮発性ランダムアクセスメモリ(VRAM)を組み込んだシステムにおけるメモリ消費電力を低減するための改善されたシステムおよび方法が必要とされる。
【発明の概要】
【課題を解決するための手段】
【０００５】
ポータブル通信デバイスにおける異種システムメモリを提供するためのシステム、方法、およびコンピュータプログラムが開示される。システムの実施形態は、不揮発性ランダムアクセスメモリ(NVRAM)および揮発性ランダムアクセスメモリ(VRAM)に結合されたシステムオンチップ(SoC)を備える。SoCは、NVRAMとVRAMとを備える異種システムメモリをマッピングするためのオペレーティングシステムを備える。オペレーティングシステムは、NVRAMの第1の部分をスワップ動作のためのブロックデバイスとして割り振り、NVRAMの第2の部分を読出し専用プログラムコードおよびデータのために割り振り、NVRAMの第3の部分をオペレーティングシステムページテーブルのために割り振るように構成されたメモリマネージャを備える。VRAMは、プログラムヒープおよびプログラムスタックのために割り振られる。
【０００６】
別の実施形態は、ポータブル通信デバイスにおけるメモリ消費電力を最適化するための方法である。方法は、ポータブル通信デバイス上のシステムオンチップ(SoC)のための異種システムメモリを構成する。異種システムメモリは、SoCに結合された不揮発性ランダムアクセスメモリ(NVRAM)と揮発性ランダムアクセスメモリ(VRAM)とを備える。NVRAMの第1の部分は、スワップ動作のためのブロックデバイスとして割り振られる。NVRAMの第2の部分は、読出し専用プログラムコードのために割り振られ、NVRAMの第3の部分は、オペレーティングシステムページテーブルに割り振られる。VRAMは、プログラムヒープとプログラムスタックとに割り振られる。
【０００７】
図において、特に明記しない限り、同様の参照番号は、様々な図を通して同様の部分を指す。「102A」または「102B」などの文字指定を有する参照番号について、文字指定は、同じ図中に存在する2つの同様な部分または要素を区別することができる。参照番号のための文字指定は、参照番号がすべての図における同じ参照番号を有するすべての部分を包含することが意図されるとき、省略されてもよい。
【図面の簡単な説明】
【０００８】
【図１】異種システムメモリのメモリ消費電力を最適化するためのシステムの一実施形態のブロック図である。
【図２】異種システムメモリのメモリ消費電力を最適化するための図1のシステムにおいて実施される方法の一実施形態を示すフローチャートである。
【図３】異種システムメモリを構成するダイナミックランダムアクセスメモリ(DRAM)および磁気抵抗ランダムアクセスメモリ(MRAM)への様々な例示的なメモリ要求タイプの割り振りを示す表である。
【図４】仮想アドレス空間をDRAMおよびMRAMの物理アドレス空間に変換するためのメモリマップの例示的な実施形態の図である。
【図５】異種システムメモリを構成するメモリタイプのための初期化情報を記憶するためのデータ構造の一実施形態の図である。
【図６】ソフトウェアメモリパーティションのシステムメモリ特性を記憶するためのデータ構造の一実施形態の図である。
【図７】DRAMおよびMRAMの物理アドレス空間にマッピングされた様々なオペレーティングシステムゾーンを示す図である。
【図８】図1の不揮発性ブロックメモリ内にプログラムイメージをパッケージングするための例示的なプログラムヘッダフラグを示す表である。
【図９】図1のシステムにおけるプログラムローディングのための方法の一実施形態を示す機能ブロック図である。
【図１０】不揮発性ブロックメモリから異種システムメモリにプログラムイメージをロードするための方法の一実施形態を示すフローチャートである。
【図１１】図1の異種システムメモリを初期化するための方法の一実施形態を示すフローチャートである。
【図１２】図1の異種システムメモリにおける不揮発性ランダムアクセスメモリ(NVRAM)に割り振られたブロックデバイスのサイズを較正するための方法の一実施形態を示すフローチャートである。
【図１３】図12の方法において実施される例示的なユースケースを示すトラフィック較正テーブルである。
【図１４】図1のシステムを組み込むためのポータブル通信デバイスの一実施形態のブロック図である。
【発明を実施するための形態】
【０００９】
「例示的」という語は、本明細書では、「例、事例、または例示として役立つ」ことを意味するために使用される。本明細書で「例示的」として記載されている任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１０】
本明細書では、「アプリケーション」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルを含む場合がある。さらに、本明細書において言及される「アプリケーション」は、開かれる必要がある場合がある文書、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含む場合もある。
【００１１】
「コンテンツ」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルを含む場合がある。加えて、本明細書で言及する「コンテンツ」は、開封される必要があり得る文書、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１２】
本明細書で使用する場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すことが意図される。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、実行のプロセスおよび/またはスレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局所化されてもよく、または2つ以上のコンピュータ間に分散されてもよい。加えて、これらの構成要素は、様々なデータ構造が記憶されている様々なコンピュータ可読媒体から実行してもよい。構成要素は、たとえば、1つまたは複数のデータパケット(たとえば、信号によって、ローカルシステム内の別の構成要素、分散システム内の別の構成要素、および/または他のシステムを有するインターネットなどのネットワークを介して別の構成要素と対話する1つの構成要素からのデータ)を有する信号に従って、ローカルおよび/またはリモートプロセスによって通信してもよい。
【００１３】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」は、互換的に使用される。第3世代(「3G」)ワイヤレス技術および第4世代(「4G」)の登場により、より大きい帯域幅の可用性は、より多様なワイヤレス機能を有するよりポータブルなコンピューティングデバイスを可能にした。したがって、ポータブルコンピューティングデバイスには、セルラー電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータが含まれる場合がある。
【００１４】
図1は、各々がSoC102に電気的に結合されたダイナミックランダムアクセスメモリ(DRAM)104などの揮発性ランダムアクセスメモリ(VRAM)と、不揮発性ランダムアクセスメモリ(NVRAM)122とを備える異種システムメモリを有するシステムオンチップ(SoC)102を備えるシステム100を示す。NVRAM122は、たとえば、DRAMよりも特定の消費電力の利点を有する磁気抵抗または磁気RAM(MRAM)を備えてもよい。NVRAM122は、スタンバイモードの間、DRAMよりも大幅に少ない電力を消費するか、または電力を消費しないことすらあり、不揮発性であるので、電力を消費するオートリフレッシュ動作および/または自己リフレッシュ動作を必要としない。
【００１５】
システム100は、パーソナルコンピュータ、ワークステーション、サーバ、セルラー電話、スマートフォン、携帯情報端末(PDA)、ポータブルゲームコンソール、ナビゲーションデバイス、タブレットコンピュータ、スポーツウォッチ、フィットネス追跡デバイスなどのウェアラブルデバイス、などのポータブルコンピューティングデバイス(PCD: Portable Computing Device)、または他のバッテリ駆動ウェブ対応デバイスを含む、任意のコンピューティングデバイス内に実装されてもよい。図1の実施形態に示すように、システム100は、DRAM104と、NVRAM122と、不揮発性ブロックメモリ130とに電気的に結合されたSoC102を備える。不揮発性ブロックメモリ130は、たとえば、フラッシュメモリ、フラッシュドライブ、セキュアデジタル(SD)カード、ソリッドステートドライブ(SSD)、または他のタイプなどの任意の不揮発性メモリを備えてもよい。
【００１６】
SoC102は、SoCバス116を介して相互接続された、中央処理装置(CPU)106、DRAMコントローラ108、スタティックランダムアクセスメモリ(SRAM)110、読出し専用メモリ(ROM)112、NVRAMコントローラ118、およびストレージコントローラ114を含む様々なオンチップ構成要素を備える。SoC102は、異種システムメモリ(DRAM104およびNVRAM122)からのメモリリソースを要求する1つまたは複数のメモリクライアントを含んでもよい。メモリクライアントは、1つまたは複数の処理ユニット(たとえば、中央処理装置(CPU)106、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)など)、ビデオエンコーダ、または異種システムメモリへの読出し/書込みアクセスを要求する他のクライアントを備えてもよい。
【００１７】
SoC102上のストレージコントローラ114は、不揮発性ブロックメモリ130に電気的に結合される。ストレージコントローラ114は、不揮発性ブロックメモリ130上に記憶されたデータを管理する。DRAMコントローラ108は、たとえば、RAMバスを介してDRAM104に電気的に結合される。DRAMコントローラ108は、DRAM104に出入りするデータの流れを管理する。DRAMコントローラ108は、一般に、DRAM104に対して読み書きするためのロジックを備える。NVRAMコントローラ118は、NVRAM122に出入りするデータの流れを管理する。NVRAMコントローラは、一般に、NVRAM122に対して読み書きするためのロジックを備える。
【００１８】
DRAM104は、エラー訂正コード(ECC)モジュール124と、セルアレイ126とを備えてもよい。ECCモジュール124は、DRAM動作(たとえば、読出し動作および/または書込み動作)の間に単一ビットエラーまたは二重ビットエラーを検出し、訂正するように構成される。たとえば、DRAM書込み動作の間、ECCモジュール124は、書込みデータを入力として使用し、次いで、冗長パリティチェックビットを生成してもよい。組み合わされた書込みデータおよびパリティチェックビットはともに、コードワードとして知られているユニットを形成し、DRAMセルアレイ126内に別々にまたは一緒に記憶され得る。読出し動作の間、ECCモジュール124は、パリティチェックビットを再計算するためにコードワードの取り出されたデータ部分を使用し、次いで、これらを、書込み動作の間に記憶されたコードワードのパリティチェックビット部分と比較してもよい。読み出された再計算されたパリティと記憶されたパリティとの間の不一致は、検出されたエラーを示す。加えて、パリティチェックビットは、コードワード内に単一の誤り訂正を提供するために十分であり得る。
【００１９】
図1に示すように、CPU106によって実行されるオペレーティングシステム(O/S120)は、異種システムメモリのメモリ消費電力を最適化するための様々なモジュールを備えてもよい。電力最適化異種メモリマネージャ132は、カーネルメモリマネージャ134と、初期化モジュール136とを備えてもよい。メモリマネージャ132および初期化モジュール136は、一般に、NVRAM122とDRAM104とを備えるハイブリッドまたは異種システムメモリを初期化および構成するためのロジックを備える。
【００２０】
動作中(たとえば、システム100のブート中)、CPU106は、DRAM104とNVRAM122の両方がSoC102に結合されることを発見する場合がある。初期化モジュール136は、メモリの各タイプの異なる特性を発見し、O/S120に伝達してもよい。メモリ特性に基づいて、システム100は、電力消費を節約するために、特定のタイプのメモリ要求または目的を各タイプのメモリに割り当ててもよい。メモリ書込み動作中、NVRAM122は、VRAMよりも比較的高い電力を消費する場合があるが、データ保持のために電力を消費しなくてもよいことが理解されるべきである。したがって、NVRAM122は、大部分の読出しデータまたは比較的まれにアクセスされるデータのために使用されてもよい。一実施形態では、NVRAM122は、読出し専用動作、カーネルページテーブル、およびメモリスワップ動作のための読出し-書込みブロックデバイスのためのものであってもよい。DRAM104は、たとえば、プログラムデータヒープ、および読出し-書込みデータ動作のためのプログラムスタックなどの、ゼロ初期化動作のためのものであってもよい。これらの割当ては、NVRAM122およびDRAM104の消費電力特性に基づいてもよいことが理解されるべきである。動作中、カーネルメモリマネージャ134は、両方のタイプのメモリを認識し、各タイプの割り当てられた目的に基づいて割り振りを行う。
【００２１】
図2は、システム100におけるメモリ消費電力を最適化するための方法200の一実施形態を示す。ブロック202において、システム100は、NVRAM122とDRAM104とを備える異種システムメモリを構成する。異種システムメモリは、システムおよびハードウェアプラットフォームの設計時に構成されてもよいことが理解されるべきである。ブロック204では、システム100は、DRAM104で他の方法で実行される場合よりも少ない電力を消費する可能性がある特定のメモリ動作またはメモリ要求のタイプのためにNVRAM122を割り振る。たとえば、一実施形態では、NVRAM122の第1の部分は、スワップ動作のためのブロックデバイスとして割り振られてもよく、第2の部分は、プログラムコードおよび読出し専用データのために割り振られてもよく、第3の部分は、O/S120に関連するページテーブルのために割り振られてもよい。NVRAM122は、読出し動作のためにDRAM104よりも比較的多くの電力を消費する可能性があるが、リフレッシュ電力および自己リフレッシュ電力を消費せず、したがって、NVRAM122が読出し専用メモリとして使用される状況では、全体的な消費電力は、低減され得ることが理解されるべきである。さらに、NVRAMバンク活性化は、DRAM104に対して改善され得る。NVRAM書込み電力は、DRAM104よりも著しく高い場合があるので、DRAM104は、NVRAM122よりも読出し/書込みバッファに使用され得る。しかしながら、特定のタイプのまれな書込み(たとえば、スワップおよび/またはファイルキャッシュ)は、妥当な消費電力を有し、従来の不揮発性ブロックメモリよりも高速なNVRAM122によって実行されてもよい。ブロック206では、システム100は、たとえば、プログラムデータヒープおよびプログラムスタックなどの適切なメモリ使用またはメモリ要求タイプのためにDRAM104を割り振ってもよい。ブロック204および206は、製品ライフサイクルのプラットフォーム特徴付けおよび/または電力最適化段階において実行されてもよい。
【００２２】
動作中、システム100は、メモリクライアントからメモリ要求を受信する。各メモリ要求について、ブロック210において、システム100は、上記で説明した方法で割り当てられるようにメモリ使用タイプを決定してもよい。ブロック212において、システム100は、対応するメモリ使用タイプに基づいて、NVRAM122またはDRAM104にメモリ要求を割り振る。それぞれのメモリタイプへのメモリ使用およびメモリ要求タイプの割当ておよび割振りは、変更してもよいことが理解されるべきである。
【００２３】
図3は、様々な例示的なメモリ要求タイプのDRAM104およびNVRAM122への割り振りを示す表300である。列302は、様々なタイプのメモリ要求を識別し、列304および306は、それぞれ、DRAM104およびNVRAM122への対応する割り振りを示す。図3に示すように、メモリ要求が新しいプロセスをフォークすることを伴う場合、ヒープおよびスタックメモリは、DRAM104に割り振られてもよく、コードおよびテキストメモリは、NVRAM122に割り振られてもよい。メモリ管理ユニット(MMU)からのページテーブルエントリ(PTE: Page Table Entry)を伴うメモリ要求は、NVRAM122に割り振られてもよい。たとえば、データバッファは、一般に、NVRAM122に割り振られた場合により電力を消費する可能性がある頻繁な読出しおよび書込みアクセスを招くので、バッファメモリ割り振りは、DRAM104に割り振られてもよい。たとえば、スワップされたページおよびファイルキャッシュは、すぐにいつでもアクセスされるとは予測されず、これらをNVRAM122に割り振ることは、割り振りがVRAMに向かう場合のリフレッシュ電力を節約するので、O/Sファイルキャッシュ動作およびスワップ動作を伴うメモリ要求は、NVRAM122内のブロックデバイスに割り振られてもよい。
【００２４】
図4は、システム100の仮想アドレス空間402をDRAM104およびMRAM122の物理アドレス空間404および406にそれぞれ変換するためのメモリマップ400の例示的な実施形態である。仮想アドレス空間402は、以下の、カーネル408、スタック410、HLOSに使用できないように予約されている場合があるメモリカーブアウト(Memory Carve Out)412、プログラムヒープ414、初期化されていないデータのためのデータバッファ416、およびプログラム420の各々のための部分を備える。図4中の矢印は、仮想アドレス空間402のどの部分がDRAM物理アドレス空間406およびMRAM物理アドレス空間404に割り振られるのかを示す。DRAM物理アドレス空間406は、ユーザアプリケーションデータ424と、共有データ426と、GPUおよびDSPなどのプロセッサユニットによる実行のためのデータ/ヒープ428と、カーネルおよびO/S430とを備えてもよい。MRAM物理アドレス空間404は、スワップ動作のために使用されるブロックデバイス432と、ユーザ読出しデータ434と、ユーザアプリケーションコード436と、コードページテーブル438と、主に、システムディスカバリおよびシステム内での情報共有のために使用されるハードウェアプラットフォームおよびソフトウェアビルドについての情報を記憶するプラットフォーム情報およびメモリマップ440とを備えてもよい。
【００２５】
図5は、異種システムメモリを構成するメモリタイプのための初期化情報を記憶するためのデータ構造500の一実施形態である。これは、図4中のプラットフォーム情報およびメモリマップ440の一部であり得る。メモリタイプ508および510(それぞれ、DRAM104およびMRAM122)について、データ構造500は、ベース(列504)およびサイズ(列506)を含む様々なメモリ特性を記憶してもよい。図6は、ソフトウェアメモリパーティションのためのシステムメモリ特性を記憶するデータ構造600の一実施形態である。これは、図4中のプラットフォーム情報およびメモリマップ440の一部であり得る。列602は、たとえば、カーネル、DRAMメモリカーブアウト、MRAMカーブアウト、およびスワップパーティションを含む様々なソフトウェアメモリパーティションを識別する。データ構造600は、ソフトウェアメモリパーティションの開始アドレスを示すベース604、およびソフトウェアメモリパーティションの合計サイズを示すサイズ606などの様々なプラットフォームパラメータを定義してもよい。ソフトウェアメモリパーティション内では、複数のソフトウェアイメージが、メモリパーティションの正当な/許可されたレジデンツとして登録されてもよいことが理解されるべきである。ソフトウェアメモリパーティションは、ソフトウェアイメージのIDである許可されたイメージフィールド608と、許可されたイメージが初期化された場合、パーティション内の初期化され、割り振られたメモリを示す有効変数610と、有効変数610が設定された場合、イメージに割り振られたメモリの開始アドレスを示すベース612と、有効変数610が設定された場合、イメージに割り振られたメモリのサイズを示すサイズ614とを提供することによって、割り振られたソフトウェアイメージを列挙してもよい。オペレーティングシステムベンダーまたは元の機器製造業者が、システム100内のデータ構造500および600をプログラムしてもよいことが理解されるべきである。一実施形態では、データフィールド602、604、606、および608は、工場でプロビジョニングされてもよく、データフィールド610、612、および614は、実行時にプログラムされてもよい。
【００２６】
一実施形態では、MRAM122は、別個のメモリプールゾーン706を作成し、管理することによって、読出し専用オブジェクトのために動的に使用されてもよい。カーネルメモリマネージャ134は、DRAM物理メモリ704内に位置するzone_normal712およびzone_highmem710、ならびにMRAM物理メモリ702内に位置するzone_read708を作成してもよい。zone_read708は、読出し専用オブジェクトを動的に割り振るために特別に構成されたメモリプールゾーンを備える。ユーザアプリケーションをロードするとき、ユーザプログラムのヘッダ指示に応じて、O/S120は、実行可能コードおよび読出し専用データをzone_read708にロードし、書込み可能データをzone_normal712またはzone_highmem710にロードしてもよい。実行中に動的に要求されたバッファについて、O/S120は、アプリケーションがzone_read708に対する選択を示す場合を除いて、zone_normal712およびzone_highmem710からバッファを割り振ってもよい。システム100が所望のメモリタイプを使い果たした場合をサポートするために、フォールバックメカニズムが組み込まれてもよい。
【００２７】
図8は、不揮発性ブロックメモリ130においてプログラムイメージをパッケージ化するための例示的なプログラムヘッダフラグ802を示す表800である。図8の実施形態では、プログラムヘッダフラグ802は、実行可能ファイル、オブジェクトコード、共有ライブラリ、およびコアダンプのための共通の標準ファイルフォーマットである実行可能およびリンク可能フォーマット(ELF: Executable and Linkable Format)のために使用されもよい。各プログラムヘッダ802は、対応する値804を有し、定義済みのメモリ使用目的806を定義する。プログラムヘッダフラグ802は、セグメント内のコンテンツのタイプ(たとえば、実行可能コード、読出し/書込み可能データ、または読出し専用データ)を示す。各フラグには、標準によって定義される値804が割り当てられてもよい。図8に示すように、PF_Xフラグは、プログラムイメージの対応するセグメントが実行されてもよいことをプログラム的に示すための「1」の値を有してもよい。PF_Wフラグは、対応するセグメントが書き込まれてもよいことをプログラム的に示すための「2」の値を有してもよく、PF_Rフラグは、対応するセグメントが読み出されてもよいことをプログラム的に示すための「4」の値を有してもよい。PF_MASKPROCフラグは、プロセッサ固有の目的のために予約された16進数「0xf0000000」を有してもよい。例示的なプログラムローディングおよび/または初期化方法の間のプログラムヘッダフラグ802の使用について、図9〜図11を参照して以下に説明する。
【００２８】
図9は、システム100におけるプログラムローディングのための方法の一実施形態を示す機能ブロック図である。不揮発性ブロックメモリ130は、複数のプログラムイメージ902を記憶してもよい。プログラムイメージ902は、複数のコードセグメントと、プログラムイメージ内のコンテンツのタイプを示すプログラムヘッダ910とを備えてもよい。セグメントは、実行可能コードセグメント912、読出し/書込みデータセグメント914、および/または読出し専用データセグメント916であってもよい。O/S120は、ストレージドライバ906と、プログラムローダ904とをさらに含んでもよい。プログラムローダ904は、カーネルメモリマネージャ134、および不揮発性ブロックメモリ130との通信を制御するストレージコントローラ114に関連するストレージドライバ906と通信する。
【００２９】
図10に示すように、プログラムローダ904は、メモリプールゾーン708、710、および712(図7)を使用して不揮発性ブロックメモリ130から異種システムメモリにプログラムイメージ902をロードするための方法を制御してもよい。ブロック1002において、プログラムローダ904は、不揮発性ブロックメモリ130内に記憶されたプログラムイメージ902のためのプログラムヘッダ910をロードするために、ストレージドライバ906を呼び出す。ブロック1004において、プログラムローダ904は、DRAM104またはNVRAM122にコピーされるべきコードおよび/またはデータセグメントを決定するために、プログラムヘッダ910を構文解析する。決定ブロック1006において、プログラムヘッダ910がPF_Xフラグ(コード)またはPF_Rフラグ(読出し専用データ)を備える場合、プログラムローダ904は、大部分の読出し使用においてメモリを要求するために、カーネルメモリマネージャ134を呼び出す(ブロック1008)。カーネルメモリマネージャ134への呼び出しは、ゲットフリーページリード(get free page read)(GFP_READ)フラグを備えてもよい。プログラムヘッダ910がPF_Xフラグ(コード)またはPF_Rフラグ(読出し専用データ)を備えない場合、プログラムローダ904は、通常の読出し/書込み使用においてメモリを要求するために別のフラグを用いてカーネルメモリマネージャ134を呼び出す。ブロック1012において、カーネルメモリマネージャ134は、要求からのフラグに基づいてゾーン708、710、または712のうちの1つを選択し、選択されたゾーンからのメモリページを割り振る。ブロック1014において、プログラムローダ904は、コードおよびデータを割り振られたメモリバッファにロードするためにストレージドライバ906を呼び出す。図9の実施形態に示すように、プログラムイメージ902からの読出し-書込みデータ918は、ゾーン710および/または712を使用してDRAM104に割り振られてもよい。実行可能コード920および読出し専用データ922は、ゾーン708を使用してNVRAM122に割り振られてもよい。システム100が所望のメモリタイプを使い果たした場合をサポートするためにフォールバックメカニズムが組み込まれてもよいことが理解されるべきである。このようにして、高いメモリ要求圧力の下で、カーネルは、たとえば、VRAMタイプを使い果たしているとき、NVRAM122に読出し-書込みデータを割り振ってもよい。
【００３０】
図11は、異種システムメモリを初期化するための方法1100の一実施形態を示すフローチャートである。方法1100は、フラッシュストレージから必要なコードおよびデータをロードするステップを通過することによって、NVRAM122内に常駐するブートステージコードおよびデータを使用するウォームブート動作のためのNVRAM122を有利に実装してもよい。ウォームブート動作は、不揮発性ブロックメモリ130を使用する従来の方法よりもはるかに高速に生じることができる。ブロック1102において、一次ブートローダは、フラッシュメモリ130内の二次ブートローダを検出してもよい。決定ブロック1104において、一次ブートローダは、NVRAM122内にメモリマップがあるかどうかを決定する。メモリマップがNVRAM122内で検出されない場合、ブロック1106において、プロセスは、デフォルトのブートフローを継続し、異種システムメモリではなく統一システムメモリにプログラムイメージをロードしてもよい。メモリマップがNVRAM122内で検出された場合、ブートローダは、プログラムイメージ902内のコードセグメントを検証し、RAM内のデータおよびゼロ初期化(ZI: Zero-Initialized)セグメントを初期化することに進む。二次ブートローダのためのメモリがランタイムイメージによって再要求された場合、一次ブートローダは、各ブート時に第2のブートローダを不揮発性ブロックメモリ130からロードしてもよい。二次ブートローダは、DRAM104を初期化し、各ブートチェーンイメージについてO/S120をブートするまで繰り返す。
【００３１】
図11を参照すると、決定ブロック1108において、ブートローダは、PF_XセグメントまたはPF_RセグメントがNVRAM122内に既にあるかどうかをチェックするために、NVRAM122から読み出してもよい。そうでない場合、PF_X(コード)セグメントまたはPF_R(読出し専用データ)セグメントは、メモリマップに従って宛先に初期化されてもよく(ブロック1110)、次いで、動作は、ブロック1112に進んでもよい。PF_XセグメントまたはPF_Rセグメントが既にNVRAM122内にある場合、ブロック1110は、バイパスされてもよく、動作は、ブロック1112に直接ジャンプしてもよく、ブロック1112では、データセグメントは、メモリマップに従って宛先にロードされてもよい(たとえば、DRAM104、オンチップSRAM110)。現在のプログラムイメージ内に追加のセグメントがある場合、フローは、イメージ全体がロードされるまで繰り返すために、決定ブロック1108に戻ってもよい。プログラムイメージ902内のすべてのセグメントが初期化された場合(決定ブロック1114)、CPUは、ロードされたイメージへのその実行を放棄してもよい(ブロック1116)。SBLをロードするPBLの例では、実行は、PBLからSBLイメージに移行してもよい。ロードされたイメージは、次いで、実行され、方法は、CPUの実行がHLOSカーネルおよびユーザ空間に達し、システムブートプロセスを完了するまで、ステップ1104〜ステップ1116を繰り返すことによって、次のプログラムイメージ902を検出する(ブロック1116)。
【００３２】
システム100は、NVRAM122に割り振られたブロックデバイス432(図4)のサイズを較正するように構成されてもよい。図12は、較正方法1200の一実施形態を示す。較正は、たとえば、メモリサイズ、ソフトウェアビルドなどに基づいて、プラットフォームごとに一意であってもよい。一般に、較正は、1つまたは複数のユースケースの下でDRAM104およびNVRAM122への読出しアクセスおよび書込みアクセスの数を記録するために、ハードウェアトラフィックモニタを使用する。図13は、異なるシステム動作(たとえば、音楽を有するゲームを実行すること、ストリーミングビデオのダウンロード、ビデオ再生の複数のインスタンス、およびビデオ記録)を伴う例示的なユースケース1302を示すトラフィック較正テーブル1300である。各ユースケースは、スワップパーティションサイズ1304と、HLOS読出し領域サイズ1306と、周辺イメージサイズ1308とを定義してもよい。異なるユースケースは、異なるメモリタイプに関する異なるサイズ要件を有してもよいことが理解されるべきである。たとえば、1つのユースケースにおいて、複数のウィンドウが開いているビデオ再生は、VRAM内のより多くの読出し-書込みデータバッファを必要とする場合があり、したがって、メモリに頻繁にアクセスしないバックグラウンドプロセスおよび低優先度タスクからVRAM内のメモリを解放するために、より多くのスワップ領域を有することを必要とする場合がある。較正の結果として、このユースケースは、NVRAM122における他のユースケースよりも大きいスワップパーティションサイズを示す場合がある。
【００３３】
図12を参照すると、ブロック1202において、ブロックデバイス432は、最初にゼロパーセントのNVRAM122として構成されてもよい。ブロック1204において、システム100は、1つまたは複数のユースケース1302を実行してもよい。システム100は、たとえば、ある時間周期(たとえば、10秒)にわたってNVRAM122に関連する平均書込み回数/キロバイト(Wm)および読出し回数/キロバイト(Rm)を周期的に測定してもよい。システム100は、NVRAM122へのトラフィックの量を低減するためにスワップサイズを増加させてもよい(ブロック1210)。これを行うことによって、VRAM内のいくつかのバックグラウンドプロセスおよび他の頻繁でないアクセスページは、NVRAM122内のスワップパーティションにプッシュされてもよく、そうでない場合は高いメモリ圧力の下でNVRAM122に割り振られ得る読出し-書込みデータ割り振りのための空間を解放してもよい。システム100は、次いで、同じユースケースを実行し、WmおよびRmを再び測定する(ブロック1206)ために、ブロック1204にフローを戻してもよい。システム100は、DeltaWm<0とDeltaRm<0の両方をチェックすることによって、スワップサイズの増加がNVRAM122へのトラフィックをより頻繁でないようにするかどうかを決定するために、決定ブロック1211および1212に進んでもよい。「yes」の場合、システム100は、スワップを増加し続け(ブロック1210)、次いで、WmおよびRmを再びチェックする別の実行のためにフローをブロック1204に戻しても良い。決定ブロック1212が「No」に進む場合、最後の実行のスワップサイズがこのユースケースに対して最適な構成であったことを意味し、システム1000は、次いで、このユースケースのための較正シーケンスを終了し、ブロック1216に進んでもよく、ブロック1216では、システム100は、ユースケース1302のためのブロックデバイス432およびHLOSのためのサイズを記録してもよい。
【００３４】
上述したように、システム100は、任意の所望のコンピューティングデバイスに組み込まれてもよい。図14は、例示的なポータブルコンピューティングデバイス(PCD)1400に組み込まれたシステム100を示す。システム100の特定の構成要素は、SoC322(図14)に含まれ、他の構成要素(たとえば、DRAM104、NVRAM122、および不揮発性ブロックメモリ130)は、SoC322に結合された外部構成要素であることが容易に理解されるであろう。SoC322は、マルチコアCPU1402を含んでもよい。マルチコアCPU1402は、第0のコア1410と、第1のコア1412と、第Nのコア1414とを含んでもよい。コアのうちの1つは、たとえば、グラフィックス処理ユニット(GPU)を備えてもよく、他のコアのうちの1つまたは複数は、CPUを備える。
【００３５】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330がCPU1402に結合されてもよい。次に、オンチップシステム322の外部のタッチスクリーンディスプレイ1406は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合されてもよい。
【００３６】
図14は、ビデオエンコーダ334、たとえば、位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン放送方式標準化委員会(NTSC)エンコーダがマルチコアCPU1402に結合されることをさらに示す。さらに、ビデオ増幅器336がビデオエンコーダ334およびタッチスクリーンディスプレイ1406に結合される。また、ビデオポート338がビデオ増幅器336に結合される。図14に示すように、ユニバーサルシリアルバス(USB)コントローラ340が、マルチコアCPU1402に結合される。また、USBポート342がUSBコントローラ340に結合される。メモリ104、122、および130が(図1に示すように)SoC322に結合されてもよい。
【００３７】
さらに、図14に示すように、デジタルカメラ348がマルチコアCPU802に結合されてもよい。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化膜半導体(CMOS)カメラである。
【００３８】
図14にさらに示すように、ステレオオーディオコーダ-デコーダ(CODEC)350がマルチコアCPU1402に結合されてもよい。さらに、オーディオ増幅器352がステレオオーディオコーデック350に結合されてもよい。例示的な態様では、第1のステレオスピーカ354と第2のステレオスピーカ356とがオーディオ増幅器352に結合される。図14は、マイクロフォン増幅器358がさらにステレオオーディオコーデック350に結合されてもよいことを示す。加えて、マイクロフォン360がマイクロフォン増幅器358に結合されてもよい。特定の態様では、周波数変調(FM)無線チューナ362が、ステレオオーディオコーデック350に結合されてもよい。また、FMアンテナ364が、FM無線チューナ362に結合される。さらに、ステレオヘッドフォン366がステレオオーディオコーデック350に結合されてもよい。
【００３９】
図14は、無線周波数(RF)トランシーバ368がマルチコアCPU1402に結合されてもよいことをさらに示す。RFスイッチ370がRFトランシーバ368およびRFアンテナ372に結合されてもよい。キーパッド204がマルチコアCPU1402に結合されてもよい。また、マイクロフォン376を有するモノラルヘッドセットがマルチコアCPU1402に結合されてもよい。さらに、バイブレータデバイス378がマルチコアCPU1402に結合されてもよい。
【００４０】
図14はまた、電源380がオンチップシステム322に結合されてもよいことを示す。特定の態様では、電源380は電力を必要とするPCD1400の様々なコンポーネントに電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリ、または交流(AC)電源に接続されたAC-DC変換器から得られるDC電源である。
【００４１】
図14は、PCD1400がまたデータネットワーク、たとえば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用され得るネットワークカード388を含んでもよいことをさらに示す。ネットワークカード388は、Bluetoothネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeAUNT: Personal Area Network Ultra-Low-Power Technology)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当該技術分野で周知の任意の他のネットワークカードであってもよい。さらに、ネットワークカード388は、チップに組み込まれてもよく、すなわち、ネットワークカード388は、チップ内のフルソリューションであってもよく、別個のネットワークカード388でなくてもよい。
【００４２】
図14に示すように、タッチスクリーンディスプレイ1406、ビデオポート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)は、本明細書で使用される場合、コンパクトディスク(「CD」)、レーザディスク(登録商標)、光ディスク、デジタル多用途ディスク(「DVD」)、フロッピー(登録商標)ディスク、およびBlu-ray(登録商標)ディスクを含み、ディスク(disk)は、通常データを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００５０】
代替実施形態は、本発明の趣旨および範囲から逸脱することなく本発明が属する技術分野の当業者には明らかになるであろう。したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変が行われてよいことが理解されよう。
【符号の説明】
【００５１】
100  システム
102  システムオンチップ(SoC)
104  DRAM
106  中央処理装置(CPU)
108  DRAMコントローラ
110  スタティックランダムアクセスメモリ(SRAM)
112  読出し専用メモリ(ROM)
114  ストレージコントローラ
116  SoCバス
118  NVRAMコントローラ
120  オペレーティングシステム(O/S)
122  NVRAM
124  エラー訂正コード(ECC)モジュール
126  セルアレイ
130  不揮発性ブロックメモリ
132  電力最適化異種システムメモリマネージャ
134  カーネルメモリマネージャ
136  初期化モジュール
204  キーパッド
300  表
302  列
304  列
306  列
322  SoC、オンチップシステム
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバス(USB)コントローラ
342  USBポート
348  デジタルカメラ
350  ステレオオーディオデコーダ-エンコーダ(CODEC)
352  オーディオ増幅器
354  第1のステレオスピーカ
356  第2のステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  周波数変調(FM)無線チューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  無線周波数(RF)トランシーバ
370  RFスイッチ
372  RFアンテナ
376  マイクロフォン
378  バイブレータデバイス
380  電源
388  ネットワークカード
400  メモリマップ
402  仮想アドレス空間
404  物理アドレス空間
406  物理アドレス空間
408  カーネル
410  スタック
412  メモリカーブアウト
414  プログラムヒープ
416  初期化されていないデータのためのデータバッファ
420  プログラム
424  ユーザアプリケーションデータ
426  共有データ
428  データ/ヒープ
430  カーネルおよびO/S
432  ブロックデバイス
434  ユーザ読出しデータ
436  ユーザアプリケーションコード
438  コードページテーブル
440  プラットフォーム情報およびメモリマップ
500  データ構造
504  列
506  列
508  メモリタイプ
510  メモリタイプ
600  データ構造
602  列、データフィールド
604  ベース、データフィールド
606  サイズ、データフィールド
608  イメージフィールド、データフィールド
610  有効変数、データフィールド
612  ベース、データフィールド
614  サイズ、データフィールド
702  MRAM物理メモリ
704  DRAM物理メモリ
706  メモリプールゾーン
708  zone_read、メモリプールゾーン
710  zone_highmem、メモリプールゾーン
712  zone_normal、メモリプールゾーン
800  表
802  プログラムヘッダフラグ、プログラムヘッダ
804  値
806  メモリ使用目的
902  プログラムイメージ
904  プログラムローダ
906  ストレージドライバ
910  プログラムヘッダ
912  実行可能コードセグメント
914  読出し/書込みデータセグメント
916  読出し専用データセグメント
918  読出し-書込みデータ
920  実行可能コード
922  読出し専用データ
1300  トラフィック較正テーブル
1302  ユースケース
1304  スワップパーティションサイズ
1306  HLOS読出し領域サイズ
1308  周辺イメージサイズ
1400  ポータブルコンピューティングデバイス(PCD)
1402  マルチコアCPU
1406  タッチスクリーンディスプレイ
1410  第0のコア
1412  第1のコア
1414  第Nのコア
【図１】
2018518739.tif 000003
【図２】
2018518739.tif 000004
【図３】
2018518739.tif 000005
【図４】
2018518739.tif 000006
【図５】
2018518739.tif 000007
【図６】
2018518739.tif 000008
【図７】
2018518739.tif 000009
【図８】
2018518739.tif 000010
【図９】
2018518739.tif 000011
【図１０】
2018518739.tif 000012
【図１１】
2018518739.tif 000013
【図１２】
2018518739.tif 000014
【図１３】
2018518739.tif 000015
【図１４】
2018518739.tif 000016
【国際調査報告】
2018518739.tif 000017
2018518739.tif 000018
2018518739.tif 000019