(57)【要約】  システムおよび方法は、メモリ管理の方法に関係する。ギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。物理メモリ中のセクションのサイズおよびアライメントは、TLB中のエントリの数に基づくことがあり、これはギャップにつながる。物理メモリ中で識別された1つまたは複数のギャップが、回収または再使用され、この場合、1つまたは複数のギャップは、ギャップの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、収集されて動的バッファを形成する。
2018527665.tif 000002
【特許請求の範囲】
【請求項１】
メモリ管理の方法であって、
物理メモリ中の1つまたは複数のギャップを識別するステップであって、前記1つまたは複数のギャップが、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる前記物理メモリのセクション中の、前記物理メモリの使用されない部分である、ステップと、
前記ギャップの少なくともサブセットの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、前記1つまたは複数のギャップの少なくとも前記サブセットを収集するステップと
を含む方法。
【請求項２】
前記物理メモリの少なくとも2つの異なるセクションから前記1つまたは複数のギャップの少なくとも前記サブセットを収集するステップを含む、請求項1に記載の方法。
【請求項３】
前記物理メモリの少なくとも2つの異なるセクションのサイズおよびアライメントが、前記TLB中のエントリの数に基づく、請求項1に記載の方法。
【請求項４】
少なくとも1つの新しいギャップを前記物理メモリの少なくとも1つのセクション中で導入するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記TLBのエントリの数を削減するステップを含む、請求項4に記載の方法。
【請求項６】
前記ギャップの少なくとも前記サブセットのうちの少なくとも2つが、前記物理メモリ中で不連続的である、請求項1に記載の方法。
【請求項７】
前記ギャップの少なくとも前記サブセットの前記物理アドレスを、1つまたは複数の動的/ロックなしTLBエントリ中で前記動的バッファの仮想アドレスにマッピングすることを実施するステップを含む、請求項1に記載の方法。
【請求項８】
1つまたは複数のギャップを含む物理メモリであって、前記1つまたは複数のギャップが、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる前記物理メモリのセクション中の、前記物理メモリの使用されない部分である、物理メモリと、
前記物理メモリから収集された前記1つまたは複数のギャップの少なくともサブセットにマッピングされる仮想アドレスを含む動的バッファと
を備える装置。
【請求項９】
前記物理メモリから収集された前記1つまたは複数のギャップの少なくとも前記サブセットが、前記物理メモリの少なくとも2つの異なるセクションに属する、請求項8に記載の装置。
【請求項１０】
前記物理メモリ中の少なくとも2つの異なるセクションのサイズおよびアライメントが、前記TLB中のエントリの数に基づく、請求項8に記載の装置。
【請求項１１】
少なくとも1つの新しいギャップが少なくとも1つのセクション中で意図的に導入される、請求項8に記載の装置。
【請求項１２】
前記1つまたは複数のギャップの少なくとも前記サブセットのうちの少なくとも2つが、前記物理メモリ中で不連続的である、請求項8に記載の装置。
【請求項１３】
前記動的バッファの仮想アドレスを、前記物理メモリから収集された前記1つまたは複数のギャップの物理アドレスにマッピングするための、1つまたは複数の動的/ロックなしTLBエントリを前記TLBが含む、請求項8に記載の装置。
【請求項１４】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、通信デバイス、パーソナルデジタルアシスタント(PDA)、固定位置データユニット、およびコンピュータからなるグループから選択されたデバイスに統合された、請求項8に記載の装置。
【請求項１５】
1つまたは複数のギャップを含む、記憶するための手段であって、前記1つまたは複数のギャップが、マッピングするための手段によって仮想アドレスにマッピングされる前記記憶するための手段のセクション中の、前記記憶するための手段の使用されない部分である、記憶するための手段と、
前記1つまたは複数のギャップの少なくともサブセットを収集するための手段と
を備えるシステム。
【請求項１６】
コードを備える非一時的コンピュータ可読記憶媒体であって、前記コードが、プロセッサによって実行されたとき、メモリ管理のための動作を前記プロセッサに実施させ、
物理メモリ中の1つまたは複数のギャップを識別するためのコードであって、前記1つまたは複数のギャップが、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる前記物理メモリのセクション中の、前記物理メモリの使用されない部分である、コードと、
前記ギャップの少なくともサブセットの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、前記1つまたは複数のギャップの少なくとも前記サブセットを収集するためのコードと
を備える、非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記物理メモリの少なくとも2つの異なるセクションから前記1つまたは複数のギャップの少なくとも前記サブセットを収集するためのコードを備える、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
少なくとも1つの新しいギャップを前記物理メモリの少なくとも1つのセクション中で導入するためのコードをさらに備える、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記TLBのエントリの数を削減するためのコードを備える、請求項18に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記ギャップの少なくとも前記サブセットの前記物理アドレスを、1つまたは複数の動的/ロックなしTLBエントリ中で前記動的バッファの仮想アドレスにマッピングすることを実施するためのコードを備える、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される態様は、メモリ管理に関し、より詳細には、例示的な態様は、メモリ中の使用されないギャップの回収(Reclaiming)および効率的な利用に関する。
【背景技術】
【０００２】
メモリ管理ユニット(MMU)は、プロセッサまたは周辺デバイスのためにアドレス変換(および他のメモリ管理機能)を実施するのに使用される。たとえば、MMUは、仮想-物理メモリアドレス変換を実施するために、当技術分野で知られているようなトランスレーションルックアサイドバッファ(TLB)を含むことがある。MMUまたはTLBは、限られた数のエントリを含むことができ、各エントリは、変換を補助するためのメモリマッピング(たとえば、物理メモリアドレスにマッピングされる仮想メモリアドレス)を含む。
【０００３】
物理メモリアドレスは、ランダムアクセスメモリ(RAM)などの物理メモリに関係する。各TLBエントリは、物理メモリのセクションにマッピングすることができる。TLBエントリの数は限られているので、各セクションは、TLBエントリによって仮想アドレスが物理アドレスにマッピングされる特定のプログラムまたはアプリケーションによって利用されるよりも多くの物理メモリ空間にわたることがある。各セクションのサイズは、物理メモリ空間の最小粒度の倍数(具体的には、2のべき乗)とすることができる。たとえば、セクションサイズは、最小粒度に対して256KB、1MBなどであることがあり、最小粒度は、4KBブロックなどの小さいブロックサイズとすることができる。しかし、前述のように、セクション内の物理メモリ空間のすべてが使用されるわけではない。したがって、物理メモリの256KBセクションにマッピングするTLBエントリは、たとえば224KBしか利用しないことがあり、256KBセクション中で32KBの使用されないメモリを残す。従来のメモリ管理設計は、そのような使用されないメモリ空間を使用しない。本開示では、この使用されないメモリ空間は「ギャップ」とも呼ばれる。
【０００４】
メモリまたは記憶空間は、特にデバイスサイズの縮小に伴って、半導体ダイ上の重要なハードウェアリソースである。したがって、ギャップによって引き起こされるメモリ空間の浪費を回避することが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の例示的な実施形態は、メモリ管理のためのシステムおよび方法を対象とする。ギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。物理メモリ中のセクションのサイズおよびアライメントは、TLB中のエントリの数に基づくことがあり、これはギャップにつながる。物理メモリ中で識別された1つまたは複数のギャップが、回収または再使用され、この場合、1つまたは複数のギャップは、ギャップの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、収集されて動的バッファを形成する。
【課題を解決するための手段】
【０００６】
たとえば、例示的な一態様はメモリ管理に関係し、本方法は、物理メモリ中のギャップを識別することを含み、ギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。本方法はまた、ギャップの物理アドレスを動的バッファの仮想アドレスにマッピングすることによってギャップを収集することを含む。
【０００７】
別の例示的な態様は、物理メモリを備える装置に関係する。物理メモリは、1つまたは複数のギャップを含み、1つまたは複数のギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。装置はさらに、物理メモリから収集された1つまたは複数のギャップにマッピングされる仮想アドレスを含む動的バッファを備える。
【０００８】
さらに別の例示的な態様は、1つまたは複数のギャップを含む物理メモリを備えるシステムを対象とし、1つまたは複数のギャップは、マッピングするための手段によって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。システムはまた、1つまたは複数のギャップの少なくともサブセットを収集するための手段を備える。
【０００９】
別の例示的な態様は、コードを備える非一時的コンピュータ可読記憶媒体を対象とし、コードは、プロセッサによって実行されたとき、メモリ管理のための動作をプロセッサに実施させる。非一時的コンピュータ可読記憶媒体は、物理メモリ中の1つまたは複数のギャップを識別するためのコードを備え、1つまたは複数のギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。非一時的コンピュータ可読記憶媒体はまた、ギャップの少なくともサブセットの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって1つまたは複数のギャップの少なくともサブセットを収集するためのコードを備える。
【００１０】
添付の図面は、本発明の実施形態についての記述を補助するために提示され、また、実施形態を限定するためではなく実施形態を例証するためにのみ提供される。
【図面の簡単な説明】
【００１１】
【図１】従来のTLBを示す図である。
【図２】本開示の態様により構成された物理メモリの図である。
【図３】本開示の態様により構成された処理システムの図である。
【図４】例示的な態様によるメモリ管理の方法に関係するフローチャートである。
【図５】本開示の態様がその中で有利に採用され得る例示的な処理デバイスの図である。
【発明を実施するための形態】
【００１２】
本発明の具体的な実施形態を対象とする後続の記述および関係する図面において、本発明の態様が開示される。本発明の範囲を逸脱することなく、代替実施形態が考案されてもよい。加えて、本発明のよく知られた要素については、本発明の関連性のある詳細を曖昧にしないために、詳細に記述されないかまたは省略される。
【００１３】
「例示的」という言葉は、本明細書では、「例、事例、または例証としての働きをする」ことを意味するのに使用される。本明細書で「例示的」として記述されるいずれかの実施形態が、必ずしも他の実施形態に勝って好適または有利であると解釈されるべきであるとは限らない。同様に、「本発明の実施形態」という用語は、論じられる特徴、利点、または動作モードを本発明のすべての実施形態が含むことを必要としない。
【００１４】
本明細書で使用される用語は、特定の実施形態について記述するためのものにすぎず、本発明の実施形態を限定することを意図しない。本明細書で使用される場合の、単数形「a」、「an」、および「the」は、文脈が明確にそうでないと示さない限り、複数形も含むことを意図する。さらに、「含む、備える」(「comprises」、「comprising」、「includes」、および/または「including」)という用語が本明細書で使用されるとき、これらは、記載された特徴、整数、ステップ、動作、要素、および/またはコンポーネントの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、および/またはこれらのグループの存在または追加を排除しないことも、理解されるであろう。
【００１５】
さらに、多くの実施形態は、コンピューティングデバイスの要素によってたとえば実施されることになるアクションのシーケンスに関して記述される。本明細書で記述される様々なアクションが、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、または1つもしくは複数のプロセッサにより実行されるプログラム命令によって、またはこれらの組合せによって実施されることが可能であることは、認識されるであろう。加えて、本明細書で記述されるこれらのアクションシーケンスは、対応するコンピュータ命令のセットが記憶された任意の形のコンピュータ可読記憶媒体内に完全に組み入れられるものと考えることができ、コンピュータ命令のセットは、実行されたとき、関連するプロセッサに、本明細書で記述される機能を実施させることになる。したがって、本発明の様々な態様は、いくつかの異なる形で具現化されることがあり、これらはすべて、特許請求される主題の範囲内にあることが企図されている。加えて、本明細書で記述される実施形態の各々につき、任意のそのような実施形態の対応する形は、本明細書では、たとえば、記述されたアクションを実施する「ように構成されたロジック」として記述されることもある。
【００１６】
本開示の例示的な態様は、トランスレーションルックアサイドバッファ(TLB)またはメモリ管理ユニット(MMU)のエントリによってマッピングされる物理メモリのセクション中の、物理メモリのギャップまたは使用されないメモリ空間を識別することに関係する。ギャップは、ギャップ中のメモリ空間を無駄にするのではなく利用することができるように、回収または転用される。たとえば、ギャップを収集するために動的バッファが生み出されてよく、ギャップの物理アドレスが動的バッファ中の仮想アドレスにマッピングされてよい。
【００１７】
動的バッファを形成するために収集されるギャップは、連続的な物理アドレスを有さなくてもよく、これは、ギャップを収集する際のより大きいフレキシビリティをもたらす。しかし、たとえば、動的バッファが途切れのない物理メモリ領域のみを含むように指定され得る場合には、連続的な物理メモリ領域を含む単一のギャップが、動的バッファを形成するために収集されてもよいことが理解されるであろう。
【００１８】
いくつかの態様では、たとえばTLBエントリを物理メモリ中のより大きいセクションにマッピングすることによって、ギャップを物理メモリ中で意図的に導入することができる。これは、ギャップ収集のためのより多くの機会を生み出し、また、物理メモリ空間をカバーするのに使用されるTLBエントリの数を削減する。このようにすると、ギャップ中の、前に使用されていなかったメモリを再使用することができるので、物理メモリの使用可能メモリ空間が増やされる。したがって、アプリケーションを処理するためのメモリ予算を増加させることができる。たとえば、物理メモリ空間の可用性が限られているせいで厳しいメモリ予算を有する、メモリによって制約されるシステムは、メモリ予算に見合うように追加のRAMモジュールを足すことに頼るのではなく、RAMモジュールなど既存の物理メモリから利用可能にされる、より大きい物理メモリ空間の利益を得ることができる。
【００１９】
ギャップ回収(Gap Reclaiming)の例示的な態様についてさらに説明するために、動的/ロックなし、および静的/ロックありTLBエントリの簡単な背景に関して、最初に図1を検討する。図1には、従来のTLB100の3つの構成100A、100B、および100Cが示されている。TLB100は、処理システム(図示せず)のための仮想-物理アドレス変換を提供することができ、物理アドレスは、物理メモリ(やはり図示せず)に関係する。TLB100は、図1で101〜108としてラベル付けされた8つのTLBエントリを含むように示されている。
【００２０】
一般に、各TLBエントリ101〜108は、静的/ロックあり、または動的/ロックなしのいずれかとすることができる。静的/ロックありTLBエントリは、ロックされているかまたは修正できない、物理メモリのセクションへのマッピングを有する。動的/ロックなしTLBエントリは、動的であり変更(たとえばオペレーティングシステムによって)され得るマッピングを有することができる。
【００２１】
構成100Aは、8つのTLBエントリ101〜108のすべてが、静的/ロックありであることを示す。構成100Aは、TLB100の高い性能に向けて設計されているが、構成100Aは、高いフレキシビリティを有さないことがある。さらに説明すると、構成100AのすべてのTLBエントリ101〜108のマッピングは、物理メモリの特定のセグメントにロックされ、このことは、TLBエントリ101〜108が更新(たとえばオペレーティングシステムによって)され得ないことを意味し、そしてこのことは、性能を高める。たとえば、特定のアプリケーションまたはプログラムによって様々なセクションサイズが使用される場合があるので、セクションサイズにできるだけ近く合致するために、より多数のTLBエントリが、アプリケーションのための物理メモリ空間(または「イメージ」)全体をカバーすることができる。しかし、限られた数のTLBエントリだけしか利用可能でないので、各TLBエントリは、はるかに多くのセクションにマッピングすることがあり、したがってギャップを生み出す。一般に、TLBエントリの数が少ないほど、多くのギャップが生み出されることにつながる場合がある。
【００２２】
他方、構成100Bは、8つのエントリ101〜108のすべてが、動的/ロックなしに設定されている。構成100Bでは、図示の8つのエントリよりも多くのTLBエントリを有することが可能である。というのは、動的/ロックありエントリは更新されることが可能であり、より多くのエントリが追加されることが可能だからである。したがって、構成100Bは、TLB100について高いフレキシビリティを提供するが、性能はより低いことがある。たとえば、動的/ロックなしエントリは、頻繁に更新(たとえばオペレーティングシステムによって)されてマッピングの変更につながることがあり、これは性能を低下させることがある。動的/ロックなしマッピングは、より小さいギャップにつながる可能性がある。というのは、より小さいマッピングサイズ(すなわち、マッピングされる、より小さいサイズのセクション)を使用することができ、より小さいセクションにマッピングするためにTLBエントリの数を増加させることができるからである。
【００２３】
したがって、より小さいセクションへのマッピングは、動的マッピングがより頻繁に更新されることにつながる場合があり(たとえば構成100B)、一方、より大きいマッピングを使用すると、マッピングの更新(たとえばTLBミス時の)を低減することができる(たとえば構成100A)が、ギャップはより大きい。
【００２４】
構成100Cは、構成100Aと100Bの上記の特徴間のトレードオフを提供する。構成100Cでは、いくつかのTLBエントリ(たとえば、図示のようなTLBエントリ101〜105)は、静的/ロックありとすることができ、残りのTLBエントリ(たとえば、TLBエントリ106〜108)は、動的/ロックなしとすることができる。この場合もやはり、動的マッピングが可能なので、この構成でも、8個よりも多いTLBエントリを形成することができる。したがって、静的/ロックありTLBエントリは、高性能アプリケーションにおいて使用され得る物理メモリのセクションに使用されてよく、一方、物理メモリの残りの部分は、動的/ロックなしTLBエントリによってフレキシブルにマッピングされてよい。例示的な態様では、少なくともいくつかの動的/ロックなしTLBエントリは、収集されたギャップを含む物理メモリ空間に動的バッファをマッピングするのに使用される。
【００２５】
次に図2に関して、物理メモリ200に対するギャップ回収の例示的な態様について説明する。物理メモリ200は、ランダムアクセスメモリ(RAM)などであってよく、処理システム(図示せず)のキャッシュまたはバッキングストレージであってよい。処理システムによって使用される仮想アドレスが、TLB(構成100CにおけるTLB100など)によって物理メモリ200の物理アドレスに変換されることが可能である。イメージ200Aは、ギャップ回収前の物理メモリ200を指し、イメージ200Bは、例示的な態様によりギャップ回収が実施された後の物理メモリ200を指す。
【００２６】
最初に物理メモリ200のイメージ200Aを参照すると、3つのセクション202、204、および206が示されている。例示的な第1、第2、および第3のTLBエントリ(図示せず)が、それぞれ物理メモリ200のセクション202、204、および206にマッピングすることができる。セクション202中では、エリア202aのみが、第1のTLBエントリによってマッピングされ得る(たとえば、第1のTLBエントリにおける特定の変換がカバーする仮想アドレスの範囲にわたって)。しかし、第1のTLBエントリについてのマッピングは、所与のTLBエントリ数に基づいて、たとえばセクション202を事前定義されたセクション境界またはセクションサイズとアライメントするために、セクション202に拡張されていることがある。したがって、セクション202中のギャップ202bは使用されないままにされる。同様に、セクション204および206のエリア204aおよび206aは、それぞれ第2および第3のTLBエントリにおけるマッピングによって使用され、一方、ギャップ204bおよび206bは使用されないままである。
【００２７】
イメージ200A中では、バッファ208が、セクション206中、より具体的にはエリア206a中に示されている。バッファ208は、動的バッファ(たとえば、当技術分野で知られているような「ヒープ」に関係する)の仮想メモリにマッピングする物理メモリを含むことができる。イメージ200A中では、バッファ208は物理メモリの連続的なブロックを含むように示されているが、動的バッファは、連続的な/途切れのない物理アドレス空間から、または不連続的な物理メモリセクションから形成されてよい。しかし、バッファ208がTLBエントリによってマッピングされるためには、いくらかの最小粒度(たとえば4KBブロックサイズ)の不連続的な物理アドレス空間がバッファ208中に存在し得る。
【００２８】
次にイメージ200Bを参照すると、バッファ208を形成するための例示的なギャップ収集が示されている。イメージ200A中のようにバッファ208をエリア206aに局限するのではなく、ギャップ202bおよび204bからの物理メモリが収集されてバッファ208が形成される。言い換えれば、この例では、バッファ208の物理メモリが3つの部分に広がる。ギャップ202bが回収されて、バッファ208の部分208aが形成される。同様に、ギャップ204bが回収されて、バッファ208の部分208bが形成される。バッファ208の残りの部分208cはセクション206内に保持されるが、セクション206中で使用されるエリアのサイズは、エリア210に対応する量だけエリア206aから縮小される。これについては以下で説明する。
【００２９】
さらに、場合によってはすべてのギャップが回収されるわけではないこともあり、図示のように、ギャップ206bのいくらかまたはすべては回収されないままであることもある。たとえば、バッファ208を形成するためのギャップ収集にもかかわらず、ギャップ206bの一部は回収されないままであってもよく、イメージ200B中では、ギャップ206bの回収されない部分は、回収されないギャップ206cとして識別されている。例示的な態様では、回収されないギャップ206cは、セクション206の終りの方に留まってよい(または移動されてよい)。場合によっては、新しいセクション(図示せず)が、回収されないギャップ206cを含むように形成されてもよい。
【００３０】
上記のようにギャップを回収してバッファ208を形成することによって、物理メモリ200のエリア210を現在のTLBマッピングから今や解放することができ、したがってエリア210を未来のTLBエントリに利用可能にすることができることがわかる。より多くのメモリ空間が今や利用可能にされ、このメモリ空間を利用することができるので、エリア210はメモリ節約を表す。
【００３１】
ギャップ202bおよび204bからの物理メモリを回収してバッファ208を形成することは、TLB中の対応する仮想メモリアドレスに対するマッピングを改変することを伴う可能性がある。たとえば、動的/ロックなしTLBエントリ(たとえば、図1のTLB100の構成100CのTLBエントリ106〜108)を使用して、動的バッファの仮想アドレスがバッファ208の物理アドレスにマッピングされてよい。イメージ200B中で回収されたギャップからバッファ208を形成するために、仮想アドレスがギャップ202bおよび204bの物理アドレスにマッピングするようにマッピングが修正されてよい。動的/ロックなしTLBエントリは、ギャップを回収するようにマッピングを修正するための、より高いフレキシビリティを提供する。しかし、静的/ロックありTLBエントリをギャップの回収において使用することもできるが、静的/ロックありTLBエントリの使用は、より多数のTLBエントリを消費することがあり、これにより、静的/ロックありTLBエントリは、ギャップ回収のためのより望ましくないかまたはより適切でない選択肢になることに留意されたい。
【００３２】
例示的な態様では、ギャップ収集に使用される、ギャップ202bおよび204bによってたとえばカバーされる物理メモリ200の領域は、TLBエントリによってマッピングされる他のセクションと比較して、より小さいものとすることができる。すなわち、ギャップ回収は、4KBブロックの粒度など、TLBによってマッピングできる最小メモリサイズを使用することができ、それにより、回収できるギャップの数を最大限にすることができる。
【００３３】
上の議論からはまた、例示的なギャップ回収が、メモリ空間の浪費を回避するかまたは最小限にすることができ、さらには節約(たとえば、物理メモリ200のエリア210)にもなることがわかる。したがって、いくつかの態様では、既存のギャップが効率的に利用されるだけでなく、1つまたは複数のギャップが物理メモリ空間中で意図的に導入されることも可能である。ギャップを意図的に導入することは、TLBエントリによってマッピングできる、より大きいセクションにつながる可能性がある(したがって、所与のイメージまたは物理メモリ空間をカバーするのに使用されるTLBエントリの数を削減する)。たとえば、イメージ200A中のセクション202中にギャップ202bがまだ存在していなかった場合は、セクション202の境界を望ましい境界またはサイズにアライメントするために(たとえば、4KBブロックの2のべき乗倍数など、マッピングできる最小粒度の2のべき乗倍数であるメモリ空間をカバーするように)、ギャップ202bを意図的に導入することができる。
【００３４】
イメージ200Aなどのメモリイメージ中で新しいギャップを導入することは、新しいイメージにつながり、新しいイメージのセクションにマッピングするTLBエントリの数を削減することができる。これに対応して、TLBのハードウェアコストおよび関連コストも削減することができる。さらに、TLBエントリの数の削減により、セクションの動的マッピングトラッシング(たとえば、いくらかのセクションのマッピングを変更することが、前のマッピングを望ましくない形でオーバライドする可能性がある場合の)などの影響を最小限にすることができる。
【００３５】
さらに、イメージ200A中で新しいギャップを導入して新しいイメージを形成することはまた、物理メモリ200中で新しいセクションを生み出すことにつながる可能性がある。TLBエントリの数が削減されるので、ギャップの回収に基づいて新しいセクションを生み出す(ギャップは意図的に導入することができる)ことに関連するハードウェアコストが削減されることがわかる。したがって、いくつかの態様では、ギャップを導入することは、TLBコストおよび使用を最小限に抑えることにつながる可能性がある。
【００３６】
例示的なギャップ収集は、当技術分野で知られている「ヒープ」などの動的バッファを実装するために使用することができる。ヒープは、動的バッファ(たとえば、バッファ208の物理アドレスにマッピングする)である。ヒープは、いくつかの仮想メモリブロックから構成され得る。ヒープまたは他の動的バッファは、いくつかの物理アドレスにマッピングする。いくつかのヒープには、ある範囲の連続的な物理アドレスが割り振られることがあり(たとえば、物理アドレスをヒープに割り振るためにハードウェアソリューションが使用されるとき)、この場合、ギャップは、収集されて、ヒープを形成するのに使用できる動的バッファ中の1つの仮想アドレス範囲にマッピングされてよい。ヒープのいくつかの実装形態は、連続的な物理アドレスに制限されず、したがって、ギャップは、収集されて、ヒープの仮想アドレスにマッピングされてよい。いくつかのヒープには、それらが生み出されるときにいくらかの物理アドレス空間が割り振られてよく、ヒープの一部は、回収されたギャップから構成されてよく、割り振られた物理アドレス空間の残りは、ギャップから回収されなかったメモリ空間から構成され得る。したがって、ヒープおよび他の動的バッファは、例示的な態様では、ギャップから完全にまたは部分的に形成されることが可能である。
【００３７】
例示的な態様では、いくつかのギャップは動的バッファと互換性がある場合があり、いくつかのギャップは互換性がない場合がある。したがって、動的バッファと互換性があるギャップ(すべての利用可能なギャップのサブセットの場合がある)のみが、動的バッファの形成のために回収されてよい。互換性は、いくつかの基準に基づく場合がある。一例では、動的バッファを形成するために回収できるギャップの互換性は、読取り/書込み互換性に基づく場合がある。イメージまたは物理メモリ空間の異なるセクションに、異なる読取り/書込み(RW)許可が関連付けられることがある。たとえば、物理メモリ200のセクション202は、読取り専用(RX)許可を有することがあり、セクション204は、読取りと書込みの両方(RW)の許可を有することがある。したがって、セクション202のギャップ202bは、読取りと書込みの両方の許可を指定するソフトウェアプログラムにおける使用には互換性がない場合があるが、ギャップ202bは、読取り専用許可に関連付けられたデータを記憶する動的バッファの形成には互換性があり得る。したがって、ギャップ202bを回収して、読取り専用許可と互換性のある動的バッファを形成することができる。他方、セクション204のギャップ204bは、読取りと書込みの両方の許可を指定するソフトウェアプログラムと互換性があり得る。したがって、ギャップ204bを、読取りと書込みの両方の許可を指定するソフトウェアプログラムのために回収することができる。
【００３８】
したがって、ギャップ回収の例示的な態様は、これらの態様が展開される処理システムのコスト削減につながり得ることがわかる(というのは、物理メモリ節約が可能だからであり、たとえば、物理メモリ200のサイズは、エリア210によって与えられる量だけ縮小させることができる)。動的/ロックなしTLBエントリを使用して、回収されたギャップから形成された動的バッファにマッピングすることができ、このことは、TLBミスの数を削減できることを意味し(というのは、前に使用されていなかったギャップを今や回収し利用することができるからである)、したがって、性能が改善され、電力消費が削減される。ギャップを意図的に導入することによって、新しいマッピングと、所望のセクション境界に対するセクションサイズまたはセクションアライメントのよりよい制御とを達成することができ、これは、より少ないTLBエントリ数およびより小さいTLBサイズにつながる。さらに、ギャップを導入してセクションサイズを制御することができるので、全体的なビルドサイズ(すなわちメモリイメージのサイズ)を制御することができ、著しい変動なしにほぼ一定のビルドサイズを維持することができる。
【００３９】
次に図3に関して、例示的な態様により構成された例示的な処理システム300を示す。処理システム300は、本明細書で記述される機能を実装するための手段を備える装置とすることができる。たとえば、処理システム300は、プロセッサ302(たとえば、汎用プロセッサ、またはデジタル信号プロセッサ(DSP)などの専用プロセッサであってよい)を備えることができる。プロセッサ302は、仮想または論理アドレスを使用するプログラムを実行するためのロジックまたは機能を備えることができる。
【００４０】
処理システム300は、図2との関係で論じられた物理メモリ200を備えることができ、物理メモリ200は、記憶するための手段とすることができる。物理メモリ200のギャップは、回収することができる(バッファ208によって表される。バッファ208の物理メモリが連続的でない場合があることを示すために、破線で示されている)。TLB304は、プロセッサ302によって使用される仮想アドレスを物理メモリ200の物理アドレスにマッピングするための、メモリ管理ユニットまたは他の手段とすることができる。物理メモリ200は、上で論じられたようにセクション(たとえば、202、204、206)を含むことができ、セクションのサイズおよびアライメントは、TLB304のエントリの数に基づくことができる。TLB304のエントリは、静的/ロックあり、または動的ロックなしとすることができる(図1に関して論じられたように)。TLBエントリは、物理メモリ200のセクションにマッピングされることが可能である。物理メモリ200のセクションは、ギャップ(たとえば、202b、204b、206b)を含むことがあり、これらは、セクション中の物理メモリの使用されない部分である。
【００４１】
処理システム300は、物理メモリ200のギャップを収集するための手段を備えることができる。たとえば、プロセッサ302中に示されるバッファ208vは、その仮想アドレスがバッファ208の物理アドレスにマッピングされる動的バッファとすることができる。したがって、バッファ208vは、物理メモリ200中のギャップ(たとえば、202bおよび204b)を収集するための手段を含むことができる。
【００４２】
また、例示的な態様が、本明細書で開示されるプロセス、機能、および/またはアルゴリズムを実施するための様々な方法を含むことも理解されるであろう。たとえば、図4は、(たとえば物理メモリ200の)メモリ管理の方法400を示す。
【００４３】
ブロック402に示されるように、方法400は、物理メモリ中の1つまたは複数のギャップを識別することを含み、1つまたは複数のギャップは、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる物理メモリのセクション中の、物理メモリの使用されない部分である。たとえば、ブロック402は、物理メモリ200中で、TLB304によってマッピングされるセクション202、204、および206中のギャップ202b、204b、および206bを識別することに関係してよい。
【００４４】
ブロック404で、方法400は、1つまたは複数のギャップの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、1つまたは複数のギャップの少なくともサブセットを収集することを含む。たとえば、ブロック404では、ギャップ202b、204b、および206bが収集されて、バッファ208の部分208a、208b、および208cにマッピングされる動的バッファ208vが形成されてよい。
【００４５】
方法400に見られるように、ギャップは、物理メモリの少なくとも2つの異なるセクション(たとえば、セクション202、204、206)から収集されてよく、少なくとも2つのギャップ(たとえば、202b、204b)は、物理メモリ中で不連続的であってよい。物理メモリ中のセクションのサイズおよびアライメントは、TLB中のエントリの数に基づくことができる。方法400のさらに他の態様では、少なくとも1つのギャップ(たとえば202b)が、少なくとも1つのセクション(たとえばセクション202)中で導入されてよい。このようにしてギャップを導入することによって、TLB中のエントリの数を削減することができる。方法400はさらに、1つまたは複数の動的/ロックなしTLBエントリを使用して、ギャップの物理アドレスを動的バッファの仮想アドレスにマッピングすることを含むことができる。
【００４６】
図5は、例示的な態様により構成された処理デバイス500のブロック図を示す。いくつかの態様では、処理デバイス500は、ワイヤレスデバイスとして構成されてよい。処理デバイス500は、図3の処理システム300に関して論じられたいくつかの同様の態様を含むことができる。処理デバイス500はまた、図4の方法400に関して記述されたプロセスを実装するように構成されてよい。図示のように、処理デバイス500はプロセッサ302を備え、プロセッサ302は、たとえば、当技術分野で知られているように、デジタル信号プロセッサ(DSP)、または任意の汎用プロセッサもしくは中央処理装置(CPU)とすることができる。図3で論じられた、プロセッサ302中の動的バッファ208v、およびTLB304も示されている。プロセッサ302は、たとえばTLB304を介して、メモリ502に通信可能に結合されてよく、メモリ502は、前述の物理メモリ200を含むことができる。
【００４７】
図5はまた、プロセッサ302とディスプレイ528とに結合されたディスプレイコントローラ526も示す。コーダ/デコーダ(コーデック)534(たとえば、オーディオおよび/または音声コーデック)が、プロセッサ302に結合されてよい。ワイヤレスコントローラ540(モデムを含む場合がある)など、他のコンポーネントも示されている。スピーカ536およびマイクロフォン538が、コーデック534に結合されてよい。図5はまた、ワイヤレスコントローラ540がワイヤレスアンテナ542に結合されてよいことも示す。特定の態様では、プロセッサ302、ディスプレイコントローラ526、メモリ502、コーデック534、およびワイヤレスコントローラ540は、システムインパッケージデバイスまたはシステムオンチップデバイス522に含まれる。
【００４８】
特定の態様では、入力デバイス530および電源544が、システムオンチップデバイス522に結合される。さらに、特定の態様では、図5に示されるように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部にある。しかし、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス522のコンポーネントに結合されてよい。
【００４９】
図5はワイヤレス通信デバイスを描いているが、プロセッサ302およびメモリ502は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、パーソナルデジタルアシスタント(PDA)、固定位置データユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、モバイルフォン、または他の類似デバイスに統合されてもよいことに留意されたい。
【００５０】
情報および信号が、様々な異なる技術および技法のいずれかを使用して表される場合があることを、当業者なら理解するであろう。たとえば、上の記述の全体を通して参照される場合のあるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはこれらの任意の組合せによって表される場合がある。
【００５１】
さらに、本明細書で開示される実施形態との関連で記述される様々な例証的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装される場合があることを、当業者なら理解するであろう。この、ハードウェアとソフトウェアの交換可能性をはっきりと示すために、様々な例証的なコンポーネント、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能の点から述べた。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の応用例と、システム全体に課される設計制約とに依存する。当業者なら、述べた機能を特定の応用例ごとに様々な方式で実装することができるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００５２】
本明細書で開示される実施形態との関連で記述される方法、シーケンス、および/またはアルゴリズムのステップは、ハードウェアにおいて直接に、または、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて具現化される場合がある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または、当技術分野で知られている他の任意の形の記憶媒体の中に存在する場合がある。例示的な記憶媒体はプロセッサに結合され、したがって、プロセッサは、記憶媒体に対して情報を読み書きすることができる。代替では、記憶媒体は、プロセッサに一体化されている場合もある。
【００５３】
したがって、本発明の一実施形態は、物理メモリ中のギャップを利用するための方法を組み入れたコンピュータ可読媒体を含むことができる。したがって、本発明は、示された例に限定されず、本明細書で記述される機能を実施するためのどんな手段も、本発明の実施形態に含まれる。
【００５４】
前述の開示は本発明の例証的な実施形態を示すが、添付の特許請求の範囲によって定義される本発明の範囲を逸脱することなく、様々な変更および修正が本明細書に加えられてもよいことに留意されたい。本明細書で記述される本発明の実施形態による方法請求項の機能、ステップ、および/またはアクションは、いずれかの特定の順序で実施される必要はない。さらに、本発明の要素が単数形で記述または特許請求される場合があるが、単数形への限定が明示的に記載されていない限り、複数形も企図される。
【符号の説明】
【００５５】
100  従来のTLB
100A  従来のTLBの構成
100B  従来のTLBの構成
100C  従来のTLBの構成
101  TLBエントリ
102  TLBエントリ
103  TLBエントリ
104  TLBエントリ
105  TLBエントリ
106  TLBエントリ
107  TLBエントリ
108  TLBエントリ
200  物理メモリ
200A  ギャップ回収前の物理メモリ
200B  ギャップ回収後の物理メモリ
202  物理メモリのセクション
202a  使用されるエリア
202b  ギャップ
204  物理メモリのセクション
204a  使用されるエリア
204b  ギャップ
206  物理メモリのセクション
206a  使用されるエリア
206b  ギャップ
206c  回収されないギャップ
208  バッファ
208a  バッファの部分
208b  バッファの部分
208c  バッファの部分
208v  バッファ
210  物理メモリのエリア
300  処理システム
302  プロセッサ
304  TLB
500  処理デバイス
502  メモリ
522  システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
534  コーデック
536  スピーカ
538  マイクロフォン
540  ワイヤレスコントローラ
542  ワイヤレスアンテナ
544  電源
【図１】
2018527665.tif 000003
【図２】
2018527665.tif 000004
【図３】
2018527665.tif 000005
【図４】
2018527665.tif 000006
【図５】
2018527665.tif 000007
【手続補正書】
【提出日】平成30年2月15日(2018.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリ管理の方法であって、
物理メモリ中の1つまたは複数のギャップを識別するステップであって、前記1つまたは複数のギャップが、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる前記物理メモリのセクション中の、前記物理メモリの使用されない部分である、ステップと、
前記ギャップの少なくともサブセットの物理アドレスを動的バッファの仮想アドレスにマッピングすることによって、前記1つまたは複数のギャップの少なくとも前記サブセットを収集するステップと
を含む方法。
【請求項２】
前記物理メモリの少なくとも2つの異なるセクションから前記1つまたは複数のギャップの少なくとも前記サブセットを収集するステップを含む、請求項1に記載の方法。
【請求項３】
前記物理メモリの少なくとも2つの異なるセクションのサイズおよびアライメントが、前記TLB中のエントリの数に基づく、請求項1に記載の方法。
【請求項４】
少なくとも1つの新しいギャップを前記物理メモリの少なくとも1つのセクション中で導入するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記TLBのエントリの数を削減するステップを含む、請求項4に記載の方法。
【請求項６】
前記ギャップの少なくとも前記サブセットのうちの少なくとも2つが、前記物理メモリ中で不連続的である、請求項1に記載の方法。
【請求項７】
前記ギャップの少なくとも前記サブセットの前記物理アドレスを、1つまたは複数の動的/ロックなしTLBエントリ中で前記動的バッファの仮想アドレスにマッピングすることを実施するステップを含む、請求項1に記載の方法。
【請求項８】
1つまたは複数のギャップを含む物理メモリであって、前記1つまたは複数のギャップが、トランスレーションルックアサイドバッファ(TLB)のエントリによって仮想アドレスにマッピングされる前記物理メモリのセクション中の、前記物理メモリの使用されない部分である、物理メモリと、
前記物理メモリから収集された前記1つまたは複数のギャップの少なくともサブセットにマッピングされる仮想アドレスを含む動的バッファと
を備える装置。
【請求項９】
前記物理メモリから収集された前記1つまたは複数のギャップの少なくとも前記サブセットが、前記物理メモリの少なくとも2つの異なるセクションに属する、請求項8に記載の装置。
【請求項１０】
前記物理メモリ中の少なくとも2つの異なるセクションのサイズおよびアライメントが、前記TLB中のエントリの数に基づく、請求項8に記載の装置。
【請求項１１】
少なくとも1つの新しいギャップが少なくとも1つのセクション中で意図的に導入される、請求項8に記載の装置。
【請求項１２】
前記1つまたは複数のギャップの少なくとも前記サブセットのうちの少なくとも2つが、前記物理メモリ中で不連続的である、請求項8に記載の装置。
【請求項１３】
前記動的バッファの仮想アドレスを、前記物理メモリから収集された前記1つまたは複数のギャップの物理アドレスにマッピングするための、1つまたは複数の動的/ロックなしTLBエントリを前記TLBが含む、請求項8に記載の装置。
【請求項１４】
1つまたは複数のギャップを含む、記憶するための手段であって、前記1つまたは複数のギャップが、マッピングするための手段によって仮想アドレスにマッピングされる前記記憶するための手段のセクション中の、前記記憶するための手段の使用されない部分である、記憶するための手段と、
請求項1から7のいずれか一項に記載の方法に従って前記1つまたは複数のギャップの少なくともサブセットを収集するための手段と
を備えるシステム。
【請求項１５】
コードを備えるコンピュータ可読記憶媒体であって、前記コードが、プロセッサによって実行されたとき、請求項1から7のいずれか一項に記載のメモリ管理のための方法を前記プロセッサに実施させる、コンピュータ可読記憶媒体。
【国際調査報告】
2018527665.tif 000008
2018527665.tif 000009