(57)【特許請求の範囲】
【請求項１】
システムオンチップ(SoC)用のメモリを拡張するための方法であって、
拡張バスを介してシステムオンチップ(SoC)に電気的に結合された拡張可能メモリソケット内に装着されるメモリカードを検出するステップであって、前記メモリカードが第1の揮発性メモリデバイスを含む、ステップと、
前記メモリカードの検出に応答して、前記第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と、高性能メモリバスを介して前記SoCに電気的に結合された第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む、拡張仮想メモリマップを構成するステップと、
前記第2の仮想メモリ空間に関連する、ハードウェアリソースのみに割り当てられた1つまたは複数の周辺イメージを、前記第1の仮想メモリ空間の第1の部分に再配置するステップと、
前記第1の仮想メモリ空間の第2の部分を、前記第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして構成するステップと
を含む、方法。
【請求項２】
前記拡張バスが、周辺構成要素相互接続エクスプレス(PCIE)バスを含む、請求項1に記載の方法。
【請求項３】
前記拡張バスが、直接メモリアクセスバスを含む、請求項1に記載の方法。
【請求項４】
前記第1および第2の揮発性メモリデバイスが、ダイナミックランダムアクセスメモリ(DRAM)を含む、請求項1に記載の方法。
【請求項５】
前記メモリカードが、前記拡張可能メモリソケットから取外し可能である、請求項1に記載の方法。
【請求項６】
前記SoCならびに第1および第2の揮発性メモリデバイスが、ポータブル通信デバイスにおいて実装される、請求項1に記載の方法。
【請求項７】
前記SoCおよび前記第2の揮発性メモリデバイスが無線周波数(RF)シールドの下に配置され、前記第1の揮発性メモリデバイスが前記RFシールドから離れて配置される、請求項6に記載の方法。
【請求項８】
システムオンチップ(SoC)に関連するシステムメモリを拡張するためのシステムであって、
拡張バスを介してシステムオンチップ(SoC)に電気的に結合された拡張可能メモリソケット内に装着されるメモリカードを検出するための手段であって、前記メモリカードが第1の揮発性メモリデバイスを含む、手段と、
前記メモリカードの検出に応答して、前記第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と、高性能メモリバスを介して前記SoCに電気的に結合された第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む、拡張仮想メモリマップを構成するための手段と、
前記第2の仮想メモリ空間に関連する、ハードウェアリソースのみに割り当てられた1つまたは複数の周辺イメージを、前記第1の仮想メモリ空間の第1の部分に再配置するための手段と、
前記第1の仮想メモリ空間の第2の部分を、前記第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして構成するための手段と
を含む、システム。
【請求項９】
前記拡張可能メモリソケット内に装着される前記メモリカードを検出するための前記手段が、前記SoC上に配置された周辺構成要素相互接続エクスプレス(PCIE)コントローラを含む、請求項8に記載のシステム。
【請求項１０】
前記拡張バスが、直接メモリアクセスバスを含む、請求項8に記載のシステム。
【請求項１１】
前記第1および第2の揮発性メモリデバイスが、ダイナミックランダムアクセスメモリ(DRAM)を含む、請求項8に記載のシステム。
【請求項１２】
前記メモリカードが、前記拡張可能メモリソケットから取外し可能である、請求項8に記載のシステム。
【請求項１３】
前記SoCならびに第1および第2の揮発性メモリデバイスが、ポータブル通信デバイスにおいて実装される、請求項8に記載のシステム。
【請求項１４】
前記SoCおよび前記第2の揮発性メモリデバイスが無線周波数(RF)シールドの下に配置され、前記拡張可能メモリソケットが前記RFシールドから離れて配置される、請求項13に記載のシステム。
【請求項１５】
メモリ内で具現化され、かつシステムオンチップ(SoC)に関連するメモリを拡張するためのプロセッサによって実行可能なコンピュータプログラムであって、
拡張バスを介してシステムオンチップ(SoC)に電気的に結合された拡張可能メモリソケット内に装着されるメモリカードを検出することであって、前記メモリカードが第1の揮発性メモリデバイスを含む、検出することと、
前記メモリカードの検出に応答して、前記第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と、高性能メモリバスを介して前記SoCに電気的に結合された第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む、拡張仮想メモリマップを構成することと、
前記第2の仮想メモリ空間に関連する、ハードウェアリソースのみに割り当てられた1つまたは複数の周辺イメージを、前記第1の仮想メモリ空間の第1の部分に再配置することと、
前記第1の仮想メモリ空間の第2の部分を、前記第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして構成することと
を行うように構成された論理を含む、コンピュータプログラム。
【請求項１６】
前記拡張バスが、周辺構成要素相互接続エクスプレス(PCIE)バスを含む、請求項15に記載のコンピュータプログラム。
【請求項１７】
前記拡張バスが、直接メモリアクセスバスを含む、請求項15に記載のコンピュータプログラム。
【請求項１８】
前記第1および第2の揮発性メモリデバイスが、ダイナミックランダムアクセスメモリ(DRAM)を含む、請求項15に記載のコンピュータプログラム。
【請求項１９】
前記メモリカードが、前記拡張可能メモリソケットから取外し可能である、請求項15に記載のコンピュータプログラム。
【請求項２０】
前記SoCならびに第1および第2の揮発性メモリデバイスが、ポータブル通信デバイスにおいて実装される、請求項15に記載のコンピュータプログラム。
【請求項２１】
前記SoCおよび前記第2の揮発性メモリデバイスが無線周波数(RF)シールドの下に配置され、前記第1の揮発性メモリデバイスが前記RFシールドから離れて配置される、請求項20に記載のコンピュータプログラム。
【請求項２２】
システムオンチップ(SoC)用のメモリを拡張するためのシステムであって、
高性能メモリバスを介して第1の揮発性メモリデバイスに電気的に結合されたシステムオンチップ(SoC)と、
拡張バスを介して前記SoCに電気的に結合された拡張可能メモリソケットと
を含み、
前記SoCは、
前記拡張可能メモリソケット内に装着されるメモリカードを検出することであって、前記メモリカードが第2の揮発性メモリデバイスを含む、検出することと、
前記メモリカードの検出に応答して、前記第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と、前記第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む、拡張仮想メモリマップを構成することと、
前記第2の仮想メモリ空間に関連する、ハードウェアリソースのみに割り当てられた1つまたは複数の周辺イメージを、前記第1の仮想メモリ空間の第1の部分に再配置することと、
前記第2の仮想メモリ空間の第2の部分を、前記第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして構成することと
を行うように構成されたプロセッサを含む、
システム。
【請求項２３】
前記SoCならびに前記第1および第2の揮発性メモリデバイスが、ポータブル通信デバイス内に存在する、請求項22に記載のシステム。
【請求項２４】
前記SoCおよび前記第1の揮発性メモリデバイスが、無線周波数(RF)シールドの下に配置される、請求項23に記載のシステム。
【請求項２５】
前記拡張可能メモリソケットが、前記RFシールドから離れて配置される、請求項24に記載のシステム。
【請求項２６】
前記ポータブル通信デバイスが、モバイルフォン、タブレットコンピュータ、およびポータブルゲームコンソールのうちの1つを含む、請求項23に記載のシステム。
【請求項２７】
前記拡張バスが周辺構成要素相互接続エクスプレス(PCIE)バスを含み、前記SoCが前記PCIEバスを前記高性能メモリバスに変換するためのPCIEコントローラを含む、請求項22に記載のシステム。
【請求項２８】
前記第1および第2の揮発性メモリデバイスが、ダイナミックランダムアクセスメモリ(DRAM)を含む、請求項22に記載のシステム。
【請求項２９】
前記メモリカードが、前記拡張可能メモリソケット内にユーザ装着可能である、請求項22に記載のシステム。
【請求項３０】
前記拡張バスが、直接メモリアクセスバスを含む、請求項22に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムオンチップ用のメモリを拡張するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、および携帯ゲーム機)は、ますます拡大する数々の機能およびサービスを提供し続け、情報、リソース、および通信への前例のないレベルのアクセスをユーザに与えている。これらのサービス拡張とペースを合わせるために、そのようなデバイスは、より強力、かつより複雑になってきた。ここで、ポータブルコンピューティングデバイスには、一般に、単一の基板上に組み込まれた1つまたは複数のチップ構成要素(たとえば、1つまたは複数の中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサなど)を含む、システムオンチップ(SoC)が含まれる。
【０００３】
そのようなポータブルコンピューティングデバイス内のシステムメモリには、一般に、ダイナミックランダムアクセスメモリ(DRAM)が含まれる。1つまたは複数のDRAMデバイスは、高性能メモリバスを介してSoCに電気的に結合され得る。DRAMプロセス技術は、より小さいチップ内により大きいメモリ容量を求める需要の増加に対応するためにスケールダウンし続ける。より密なDRAMチップは、望ましい性能および設計の利点を提供するが、消費者の期待による価格の下落の圧力と相まってDRAM容量増加のコストは、相手先商標製造会社の利益幅に悪影響を及ぼす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、これらおよび他のポータブルコンピューティングデバイスにおいてDRAMを拡張するためのシステムおよび方法の改善が必要である。
【課題を解決するための手段】
【０００５】
システムオンチップ(SoC)用のメモリを拡張するためのシステム、方法、およびコンピュータプログラムが開示される。そのような一方法は、拡張バスを介してシステムオンチップ(SoC)に電気的に結合された拡張可能メモリソケット内に装着されるメモリカードを検出するステップを含む。メモリカードは、第1の揮発性メモリデバイスを含む。メモリカードの検出に応答して、拡張仮想メモリマップが構成される。拡張仮想メモリマップは、第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と、高性能メモリバスを介してSoCに電気的に結合された第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む。第2の仮想メモリ空間に関連する1つまたは複数の周辺イメージは、第1の仮想メモリ空間の第1の部分に再配置される。第1の仮想メモリ空間の第2の部分は、第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして構成される。
【０００６】
別の実施形態は、高性能メモリバスを介して第1の揮発性メモリデバイスに電気的に結合されたシステムオンチップ(SoC)を含むシステムである。拡張可能メモリソケットは、拡張バスを介してSoCに電気的に結合される。SoCは、拡張可能メモリソケット内に装着されるメモリカードを検出することであって、メモリカードが第2の揮発性メモリデバイスを含む、検出することと、メモリカードの検出に応答して、第1の揮発性メモリデバイスに関連する第1の仮想メモリ空間と第2の揮発性メモリデバイスに関連する第2の仮想メモリ空間とを含む拡張仮想メモリマップを構成することと、第1の仮想メモリ空間内の1つまたは複数の周辺イメージを第2の仮想メモリ空間の第1の部分に再配置することと、第1の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして第2の仮想メモリ空間の第2の部分を構成することとを行うように構成されたプロセッサを含む。
【０００７】
図内では、別段に示されない限り、種々の図全体を通して、同様の参照番号は同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別し得る。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【０００８】
【図１】例示的なポータブル通信デバイス内のメモリを拡張するためのシステムの一実施形態のブロック図である。
【図２】図1のポータブル通信デバイスのパッケージ/基板の上から見た概略図である。
【図３】図2の拡張可能RAMカード/ソケットおよびSoCの断面図である。
【図４】図1〜図3のSoC用のシステムメモリを拡張するための方法の一実施形態を示すフローチャートである。
【図５】拡張仮想メモリマップの一実施形態を示すブロック図である。
【図６】システムメモリを拡張するためのRAMカード/ソケットを内蔵し得るポータブル通信デバイスの別の実施形態のブロック図である。
【図７】図5の拡張仮想メモリマップを介してスワップ動作を実行するための方法の一実施形態を示す概略図である。
【発明を実施するための形態】
【０００９】
「例示的」という言葉は、本明細書では、「例、事例、または例示として機能する」ことを意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１０】
この説明では、「アプリケーション」または「イメージ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で参照される「アプリケーション」は、オープンされる必要があり得るドキュメントまたはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含む場合もある。
【００１１】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で参照される「コンテンツ」は、オープンされる必要があり得るドキュメントまたはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含む場合もある。
【００１２】
この説明で使用される、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方は、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、1つの構成要素は、1つのコンピュータ上に局在化される場合があり、かつ/または2つ以上のコンピュータ間に分散される場合がある。加えて、これらの構成要素は、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行されてもよい。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システム内の別の構成要素と対話し、かつ/または、信号によってインターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号などに従って、ローカルプロセスおよび/またはリモートプロセスによって通信する場合がある。
【００１３】
「仮想メモリ」という用語は、メモリを参照しているアプリケーションまたはイメージから見た実際の物理メモリの抽象化を指す。仮想メモリアドレスを物理メモリアドレスに変換するために、変換またはマッピングが使用され得る。マッピングは、1対1と同じほど単純である(たとえば、物理アドレスが仮想アドレスに等しい)か、中程度に複雑である(たとえば、物理アドレスが仮想アドレスからの一定のオフセットに等しい)か、または、複雑である(たとえば、すべての4KBページが一意的にマッピングされる)場合がある。マッピングは、静的である(たとえば、起動時に一度実行される)場合があるか、または、動的である(たとえば、メモリが割り振られ開放されながら、連続的に進展する)場合がある。
【００１４】
この説明において、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語が、互換的に使用される。第3世代(「3G」)ワイヤレス技術および第4世代(「4G」)の出現により、利用可能な帯域幅が拡大されたので、より多様なワイヤレス機能を備える、より多くのポータブルコンピューティングデバイスが利用可能になっている。したがって、ポータブルコンピューティングデバイスには、セルラー電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータが含まれる場合がある。
【００１５】
図1は、システムオンチップ(SoC)102用のメモリを拡張するためのシステム100の一実施形態を示す。システム100は、パーソナルコンピュータと、ワークステーションと、サーバと、セルラー電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、またはタブレットコンピュータなどのポータブルコンピューティングデバイス(PCD)とを含む、任意のコンピューティングデバイスにおいて実装され得る。図1の実施形態に示すように、システム100は、DRAMメモリシステム104と、不揮発性メモリ118と、拡張可能ランダムアクセスメモリ(RAM)カード105とに電気的に結合されたシステムオンチップ(SoC)102を含む。DRAMメモリシステム104は、高性能メモリバス134を介してSoCと相互作用する。不揮発性メモリ118は、記憶バス136を介してSoCと相互作用する。不揮発性メモリ118には、たとえば、フラッシュメモリ、フラッシュドライブ、セキュアデジタル(SD)カード、ソリッドステートドライブ(SSD)、または他のタイプなどの、任意の不揮発性メモリを含まれ得る。いくつかの実施形態では、高性能メモリバス134をサポートするための大量のピン、SoC102に極めて近接した高感度無線周波数回路、および高性能メモリバス134が干渉を起こすことなく進むことができる距離の制限のために、拡張可能なDRAMメモリシステム104を実装することは、難しくコストがかかる場合がある。
【００１６】
拡張可能RAMカード105は、拡張バス132を介してSoC102に電気的に結合される。以下により詳細に説明するように、一実施形態では、拡張可能RAMカード105は、ユーザアクセス可能メモリソケット302内に装着され得る、リムーバブルメモリカードまたは他のデバイスを含み得る。このように、システム100は、ユーザが、購入後にポータブルコンピューティングデバイスに追加のメモリ容量を都合よく追加することを可能にし得る。システム100は、相手先商標製造会社によって活用され得る拡張可能な高性能スワップメモリシステムを提供する。当技術分野において知られているように、ポータブルコンピューティングシステムの性能およびアプリケーションの応答性は、RAMサイズの増加とともに改善し、RAMの減少とともに劣化する。ユーザの分布は、ユーザがインストールしその毎日の使用に関わるアプリケーションのタイプおよび量によって変化し得る。たとえば、シンプルなユーザは、2GBのRAMでまったく十分であることがわかる場合があるが、複数の複雑なアプリケーションまたはゲームを実行する専門的または熱狂的なユーザは、そのユーザエクスペリエンスが満足される前に4GB以上を必要とする場合がある。当業者は、システム100が相手先商標製造会社(OEM)にとって望ましい場合があることを諒解するが、その理由は、システム100は、OEMがOEMの材料費を最小にしながら増大した性能を広告することを可能にし得るからである。拡張可能RAMカード105を使用する他の利点は、たとえば、スワップデバイスとして最も一般的な方法において従来の記憶デバイスを使用するよりもはるかに速い応答を提供することと、O/S120によってサポートされるコスト効果の高い方法で非対称なDRAM分布(たとえば、DRAM104のためのLPDDR4および拡張可能RAMカード105のためのLPDDR3)をサポートすることとを含み得る。
【００１７】
拡張バス132は、たとえば、周辺構成要素相互接続エクスプレス(PCIE: peripheral component interconnection express)バスなどの直接メモリアクセスバスを含む。当技術分野において知られているように、PCIEバス132は、より高い最大システムバススループット、より低いI/Oピン数およびより小さい物理的占有面積、バスデバイスに関する改善された性能のスケーリング、確実なエラー検出/報告機構、元々のホットプラグ機能、ならびにハードウェアI/O仮想化などの様々な望ましい特性を提供する、高速シリアルコンピュータ拡張バスを含む。図1に示すように、RAMカード105は、拡張バス132を介して対応するPCIEコントローラまたは他のコントローラ111と通信するように構成された、DRAM107およびPCIEインターフェースまたは他のインターフェース109を含み得る。
【００１８】
SoC102は、SoCバス116を介して相互接続された、中央処理ユニット(CPU)106と、DRAMコントローラ108と、スタティックランダムアクセスメモリ(SRAM)110と、読取り専用メモリ(ROM)112と、ストレージコントローラ114とを含む様々なオンチップ構成要素を含む。SoC102は、ソケット302に装着されるとき、DRAM104およびDRAM107からのメモリリソースを要求する1つまたは複数のメモリクライアントを含み得る。メモリクライアントは、1つまたは複数の処理ユニット(たとえば、中央処理ユニット(CPU)106、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)など)、ビデオエンコーダ、またはメモリ読取り/書込みアクセスを要求する他のクライアントを含み得る。
【００１９】
SoC102上のストレージコントローラ114は、記憶バス136を介して不揮発性メモリ118に電気的に結合される。ストレージコントローラ114は、不揮発性メモリ118上に記憶されたデータを管理する。DRAMコントローラ108は、たとえば、高性能RAMバス134を介してDRAM104に電気的に結合される。DRAMコントローラ108は、DRAM104との間を行き来するデータのフローを管理する。DRAMコントローラ108は、一般に、DRAM104から読み取り、DRAM104に書き込むための論理を含む。
【００２０】
図1にさらに示すように、DRAM104は、エラー訂正コード(ECC)モジュール124を含み得る。ECCモジュール124は、DRAM動作(たとえば、読取り動作および/または書込み動作)の間、ダブルビットエラーを検出して、シングルビットエラーを訂正する。たとえば、DRAM書込み動作の間、ECCモジュール124は、入力として書込みデータを使用し、次いで、冗長パリティチェックビットを生成する場合がある。組み合わされた書込みデータおよびパリティチェックビットはともに、コードワードとして知られているユニットを形成し、DRAMセルアレイ126内に別々にまたはともに記憶され得る。読取り動作の間、ECCモジュール124は、コードワードの検索されたデータ部分を使用して、パリティチェックビットを再計算し、次いで、これらを書込み動作の間に記憶されたコードワードのパリティチェックビット部分と比較し得る。読み取られた再計算パリティと記憶されたパリティとの間の不整合は、検出されたエラーを示す。加えて、パリティチェックビットは、コードワード内に単一のエラー訂正を提供するのに十分であり得る。
【００２１】
図2および図3は、システム100をポータブルコンピューティングデバイスに組み込むためのパッケージ/基板202一実施形態を示す。SoC102および/またはDRAM104は、パッケージ/基板202上の第1のロケーション208に配置され得る。一実施形態では、DRAM104は、CPUパッケージ上にはんだ付けされる場合があり、組み合わされたDRAM/CPUは、メインボードにはんだ付けされる場合がある。図3に示すように、SoC102および/またはDRAM104は、他の構成要素をDDR信号ノイズから遮蔽するために無線周波数(RF)シールド204によってカバーされ得る。当技術分野において知られているように、DDR信号は、パッケージ/基板202上の他の構成要素に影響を及ぼす可能性がある、かなりのコモンモード放射を作り出す場合がある。この点について、ソケット302は、パッケージ/基板202上の第2のロケーション206に離れて配置され得る。
【００２２】
一実施形態では、ソケット302は、PCIEインターフェース信号を搬送するように構成される(たとえば、x4レーンに対する44個のI/Oピン)。PCIE4xレーンは、DRAM104に4GB/secの帯域幅を提供する。より多くのピンを使用したPCIE8xレーンは、DRAM104に8GB/secの帯域幅を提供し得る。PCIEコントローラ111は、DRAMコントローラ108と同様のメモリ制御動作を含み得るPCIEバス132を変換するように構成され得る。一実施形態では、RAMカード105は、限定はしないが、LPDDR1、LPDDR2、LPDDR3、LPDDR4などの様々なDDR JEDEC規格、512MB、1GB、2GBなどの様々な容量、4GB/sec、8GB/secなどの様々な性能等級、単一のカードに関する512MB RAM拡張プラス8GBフラッシュ拡張などの、PCIE、eMMC、またはUFSのフラッシュストレージ拡張などの他の機能との組合せを含む、様々な構成で提供され得る。組合せ機能は、関連の機能をPCIEコントローラ111内に含むことによって実装され得る。たとえば、PCIEコントローラ111は、PCIEバス132をeMMCフラッシュストレージバスに変換するように構成され得る。さらに、RAMカード105は、広告機能を提供するためにPCIEコントローラ111に接続された複数の積層メモリチップを含み得る。
【００２３】
図4は、システム100のメモリを拡張するための方法の一実施形態を示すフローチャートである。ブロック402において、システム100は、メモリカード(たとえば、RAMカード105)が拡張可能メモリソケット302内に装着されることを検出する。上述のように、メモリソケット302は、拡張バス132を介してSoC102に電気的に結合される。メモリカードは、第1の揮発性メモリデバイス(たとえば、1GBの容量を有するDRAM107)を含み得る。メモリカードが検出されると、ブロック404において、システム100は、拡張仮想メモリマップ500を構成する。図5は、拡張仮想メモリマップ500の一実施形態を示す。メモリマップ502は、メモリカードが拡張可能メモリソケット302内に装着されていない(2GBの容量を有する)DRAM104の仮想メモリマップを示す。アドレスレンジ506は、カーネルおよびO/S120に割り当てられる。アドレスレンジ508および520は、それぞれ、コンテンツ保護およびマルチメディアヒープと、信頼ゾーンとに割り当てられ得る。追加のアドレスレンジは、特定のハードウェアリソース(たとえば、共有リソース510、ビデオコーデック512、アプリケーションデジタル信号プロセッサ(DSP)514、接続ハードウェア516、モデム518など)に割り当てられた1つまたは複数の周辺イメージに割り当てられ得る。図5の実施形態に示すように、アドレスレンジ506〜520は、300MBのメモリ容量を含み、1.7GBの利用可能なユーザ空間を残す。これは、ユーザエリア504を増加させるためにメモリ内にイメージがどのように再配置され得るかの多くの考えられる例のうちの1つにすぎないことを諒解されたい。
【００２４】
メモリカードが検出されるとき、拡張仮想メモリマップは、第1の揮発性メモリデバイス(たとえば、1GB DRAM107)に関連する第1の仮想メモリ空間とともに構成される。第2の仮想メモリ空間は、2GB DRAM104と関連付けられる。ブロック406において、システム100は、第2の仮想メモリ空間に関連する周辺イメージのうちの1つまたは複数を、第1の仮想メモリ空間の第1の部分に再配置し得る。図5に示すように、アドレスレンジ510、512、514、516、および518に関連する周辺イメージは、1GB RAMカードの150MBに再配置される。再配置されるべき周辺イメージは、帯域幅のニーズに応じて選択され得る。たとえば、関連のハードウェアリソースは、拡張バス132を介して(高性能メモリバス134と比較して)低減された帯域幅を扱うことができる場合、再配置され得る。ブロック408において、システム100は、第2の仮想メモリ空間に関連するスワップ動作を実行するためのブロックデバイスとして第1の仮想メモリ空間の第2の部分を構成し得る。
【００２５】
図7に示すように、ユーザが利用可能な制限された量の物理メモリ700(図5のユーザ空間504に対応する)が存在する場合がある。システム内で実行される複数のプロセスは、第1のプロセス710および第2のプロセス720によって示される、この自由メモリ空間を求めて競合し得る。図7には2つのプロセスのみが示されるが、ポータブルコンピューティングシステム上では、より多くのプロセスが実行されている場合があることを諒解されたい。すべてのプロセスから要求される総メモリは、利用可能な物理メモリ700を超える場合がある。カーネルおよびO/S506は、たとえば、最近のアクティビティの量に基づいて、メモリ使用量を1つまたは複数の作業セット(たとえば、作業セット712および722)と、1つまたは複数の非作業セット(たとえば、非作業セット714および724)とに分類し得る。図7は、この分類を連続的なグルーピングとして示すが、個々の矩形として示されるメモリページが、広がり、かつ/またはランダムになる場合があることを諒解されたい。最近、頻繁にアクセスされる(すなわち、読み取られる、かつ/または書き込まれる)メモリページは、作業セット712および722を含む場合があり、物理メモリ700内に配置される可能性が高いが、最近アクセスされていないメモリページは、非作業セット714および724を含む場合があり、物理メモリ700内に配置される可能性が低い。非作業セット714および724は、RAMカード105内に配置され得る。時間が経過するにつれて、プロセスは、メモリの様々な部分にアクセスし、いくつかのページを非作業セットから作業セットに変更する場合があり、その逆も同様である。このプロセスが起こると、関連のページは、物理メモリ700とRAMカード105との間で移動し得る。このプロセスは、一般に、スワップとして知られる。RAMカード105の一部分は、アクセスがブロック単位(たとえば、4KBページ)で実行され得ることを意味する、ブロックデバイスとして構成され得る。従来のソリューションでは、スワップブロックデバイスは、ハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)を含み得る。RAMカード105が、たとえば、HDDまたはSSDを含むスワップブロックデバイスよりも多い回数、ピーク帯域幅を提供すること
によって、スワップの性能を大幅に改善し得ることを当業者は諒解されよう。
【００２６】
上述のように、システム100は、任意の望ましいコンピューティングシステムに組み込まれ得る。図6は、例示的なポータブルコンピューティングデバイス(PCD)600に組み込まれたシステム100を示す。この実施形態では、SoC102は、マルチコアCPU602を含み得る。マルチコアCPU602は、第0のコア610、第1のコア612、および第Nのコア614を含み得る。コアのうちの1つは、たとえば、グラフィックス処理ユニット(GPU)を含む場合があり、他のコアのうちの1つまたは複数はCPUを含む。
【００２７】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、CPU602に結合することができる。一方、オンチップシステム102の外部にあるタッチスクリーンディスプレイ606は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合され得る。
【００２８】
図6は、ビデオエンコーダ334、たとえば、位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダが、マルチコアCPU602に結合されることをさらに示す。さらに、ビデオ増幅器336が、ビデオエンコーダ334およびタッチスクリーンディスプレイ606に結合される。また、ビデオポート338が、ビデオ増幅器336に結合される。図6に示すように、ユニバーサルシリアルバス(USB)コントローラ340が、マルチコアCPU602に結合される。同様に、USBポート342が、USBコントローラ340に結合される。メモリ104および加入者識別モジュール(SIM)カード346も、マルチコアCPU602に結合される場合がある。
【００２９】
さらに、図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に結合される場合がある。キーパッド204が、マルチコアCPU602に結合される場合がある。また、マイクロフォンを備えたモノヘッドセット376が、マルチコアCPU602に結合される場合がある。さらに、バイブレータデバイス378がマルチコアCPU602に結合される場合がある。
【００３２】
図6は、電源380がオンチップシステム102に結合される場合があることも示す。特定の態様では、電源380は、電力を必要とするPCD600の種々の構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリ、または交流(AC)電源に接続されたAC/DC変換器から得られるDC電源である。
【００３３】
図6は、PCD600が、データネットワーク、たとえば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード388を含む場合もあることをさらに示す。ネットワークカード388は、ブルートゥース(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード388は、チップに組み込まれる場合があり、すなわち、ネットワークカード388は、チップ内のフルソリューションである場合があり、別個のネットワークカード388でなくてもよい。
【００３４】
図6を参照すると、メモリ104、RAMカード105、タッチスクリーンディスプレイ606、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、オンチップシステム102の外部に存在する場合があることを諒解されたい。
【００３５】
本明細書で説明した方法ステップのうちの1つまたは複数は、上記のモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを諒解されたい。これらの命令は、本明細書で説明した方法を実行するために、対応するモジュールと組み合わせてまたは協働して、任意の適切なプロセッサによって実行される場合がある。
【００３６】
本明細書で説明したプロセスまたはプロセスフローにおける特定のステップは、当然、説明したように本発明が機能するために他のステップに先行する。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、説明したステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行されるか、後に実行されるか、または他のステップと並行して(実質的に同時に)実行されてよいことを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップが省略されてもよく、または実行されなくてもよい。さらに、「その後」、「次いで」、「次に」などの言葉は、ステップの順序を限定するものではない。これらの言葉は単に、例示的な方法の説明に読者を導くために使用される。
【００３７】
さらに、プログラミングに関する当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を特定することができる。
【００３８】
したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示は、本発明をどのように作製し使用するのかを十分に理解するために必要であるとは見なされない。特許請求されるコンピュータ実施プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示す場合がある図面とともに、より詳細に説明される。
【００３９】
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  システムオンチップ(SoC)用のメモリを拡張するためのシステム
102  システムオンチップ、SoC、オンチップシステム
104  DRAMメモリシステム、DRAM、メモリ
105  拡張可能ランダムアクセスメモリカード、拡張可能RAMカード、RAMカード
106  中央処理ユニット、CPU
107  DRAM
109  PCIEインターフェース
110  スタティックランダムアクセスメモリ、SRAM
111  PCIEコントローラ
112  読取り専用メモリ、ROM
114  ストレージコントローラ
116  SoCバス
118  不揮発性メモリ
120  O/S
124  エラー訂正コードモジュール、ECCモジュール
126  DRAMセルアレイ
132  拡張バス、PCIEバス
134  メモリバス
136  記憶バス
202  パッケージ/基板
204  無線周波数シールド、RFシールド、キーパッド
206  第2のロケーション
208  第1のロケーション
302  ソケット
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバスコントローラ、USBコントローラ
342  USB
346  加入者識別モジュールカード、SIMカード
348  デジタルカメラ
350  ステレオオーディオコーデック
352  オーディオ増幅器
354  第1のステレオスピーカ
356  第2のステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  FM無線チューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  RFトランシーバ
370  RFスイッチ
372  RFアンテナ
376  モノヘッドセット
378  バイブレータデバイス、バイブレータ
380  電源
388  ネットワークカード
500  拡張仮想メモリマップ
502  仮想メモリマップ
504  ユーザ(1.7GBフリー)、ユーザ(1.85GBフリー)+850MBスワップ
506  カーネルおよびO/S
508  コンテンツ保護およびマルチメディアヒープ
510  共有リソース
512  ビデオコーデック
514  アプリケーションデジタル信号プロセッサ
516  接続ハードウェア
518  モデム
520  信頼ゾーン
600  ポータブルコンピューティングデバイス、PCD
602  マルチコアCPU
606  タッチスクリーンディスプレイ
610  第0のコア
612  第1のコア
614  第Nのコア
700  物理メモリ
710  第1のプロセス
712  作業セット
714  非作業セット
720  第2のプロセス
722  作業セット
724  非作業セット
【図１】
0006297208.tif 000002
【図２】
0006297208.tif 000003
【図３】
0006297208.tif 000004
【図４】
0006297208.tif 000005
【図５】
0006297208.tif 000006
【図６】
0006297208.tif 000007
【図７】
0006297208.tif 000008