(57)【要約】      （修正有）【課題】スタック成長による大きな時間のロスを招く傾向にあるＴＬＢ（変換索引バッファ）エラーおよびページ不良を防止する。【解決手段】ページ不良に応じてページテーブルエントリとＴＬＢエントリとを作成し、ページ不良がスタックアクセスから生じたものであるか否かを判断し、ページ不良がスタックアクセスにより生じたものである場合に、スーパページテーブルエントリを作成し、前記スーパページ用のＴＬＢエントリを作成するページ不良ハンドラを含む。【選択図】図４
2011014131.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体であって、アクセスする機械により実行されると、前記アクセスする機械に、
ページ不良に対して、前記ページ不良がスタックアクセスにより生じたものであるか否かを判断することで応答させ、
前記ページ不良がスタックアクセスにより生じたものである場合に、スーパページを作成させ、
前記スーパページ用の変換索引バッファ（ＴＬＢ）エントリを作成させるコンテンツを備える記憶媒体。
【請求項２】
アクセスする機械により実行されると、前記アクセスする機械に、
前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページを作成させるコンテンツをさらに備える請求項１に記載の記憶媒体。
【請求項３】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項２に記載の記憶媒体。
【請求項４】
前記通常のサイズのページは４キロバイトである請求項２に記載の記憶媒体。
【請求項５】
前記スーパページは２メガバイトである請求項２に記載の記憶媒体。
【請求項６】
前記スーパページは、予め定められたサイズ群から選択されたサイズを持つ請求項２に記載の記憶媒体。
【請求項７】
アクセスする機械により実行されると、前記アクセスする機械に、
前記ページ不良がスタックアクセスにより生じたものではない場合に、スーパページを作成させるコンテンツをさらに備える請求項１に記載の記憶媒体。
【請求項８】
ページ不良に対して、前記ページ不良がスタックアクセスにより生じたものであるか否かを判断することで応答させる前記コンテンツは、
アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較するコンテンツを有する請求項１に記載の記憶媒体。
【請求項９】
システムであって、
命令を実行する第１のコアと、前記第１のコアに連結された変換索引バッファ（ＴＬＢ）とを有するプロセッサと、
前記プロセッサに連結されたダイナミックＲＡＭ（ＤＲＡＭ）と、
ページ不良に対してページテーブルエントリとＴＬＢエントリとを作成し、ページ不良がスタックアクセスから生じたものであるか否かを判断し、前記ページ不良がスタックアクセスにより生じたものである場合にスーパページテーブルエントリを作成し、前記スーパページ用のＴＬＢエントリを作成するページ不良ハンドラとを備え、
前記ＴＬＢは複数のエントリを含み、前記複数のエントリは各々、仮想アドレス（ＶＡ）から物理アドレス（ＰＡ）への変換を格納する変換部を持ち、
前記ＤＲＡＭは、前記ＤＲＡＭ内の複数のメモリページのページテーブルエントリを含むページテーブルを格納し、前記ページテーブルはカーネルレベル空間に配置されるシステム。
【請求項１０】
前記ページ不良ハンドラは、さらに、前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページテーブルエントリを作成する請求項９に記載のシステム。
【請求項１１】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項１０に記載のシステム。
【請求項１２】
前記通常のサイズのページは４キロバイトである請求項１０に記載のシステム。
【請求項１３】
前記スーパページは、予め定められたサイズ群から選択されたサイズを持つ請求項１０に記載のシステム。
【請求項１４】
前記ページ不良ハンドラは、さらに、アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較する請求項９に記載のシステム。
【請求項１５】
ページ不良がスタックアクセスにより生じたものであるか否かを判断する段階と、
前記ページ不良がスタックアクセスにより生じたものである場合に、スーパページを作成する段階と、
前記スーパページ用の変換索引バッファ（ＴＬＢ）エントリを作成する段階とを備える方法。
【請求項１６】
前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページを作成する段階をさらに備える請求項１５に記載の方法。
【請求項１７】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項１６に記載の方法。
【請求項１８】
前記通常のサイズのページは４キロバイトである請求項１６に記載の方法。
【請求項１９】
前記スーパページは２メガバイトである請求項１６に記載の方法。
【請求項２０】
前記ページ不良がスタックアクセスにより生じたものであるか否かを判断する段階は、
アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較する段階を有する請求項１５に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のプロセッサでは、変換索引バッファ（ＴＬＢ）が、仮想アドレス（ＶＡ）から物理アドレス（ＰＡ）へのアドレス変換を格納する。これらアドレス変換は、オペレーティングシステム（ＯＳ）により生成され、ページテーブルデータ構造内に記憶され、これはＴＬＢをポピュレートするのに利用される。ＴＬＢエラーは大きな時間のロスを招く傾向にある。この問題は、Hsien-Hsin S. Leeおよび Chinnakrishnan S. Ballapuram著「Energy Efficient D-TLB and Data Cache using Semantic-Aware Multilateral Partitioning」ISLPED '03、２００３年８月２５日‐２７日、306-311ページでも取り上げられている。しかし、データＴＬＢを分割する方法を採用すると、ハードウェアの大規模な再設計が必要となる。
【図面の簡単な説明】
【０００２】
【図１】本発明の一実施形態によるアプリケーションデータのブロック図である。
【０００３】
【図２】本発明の一実施形態による例示的なアドレス変換格納機能の位置のブロック図である。
【０００４】
【図３】本発明の一実施形態による様々なコンポーネント間の相互作用を示すブロック図である。
【０００５】
【図４】本発明の一実施形態によるスタックメモリ割り当て用にスーパページを自動的に利用するフローチャートである。
【０００６】
【図５】本発明の一実施形態によるシステムのブロック図である。
【発明を実施するための形態】
【０００７】
様々な実施形態では、ページテーブルおよびＴＬＢエントリは、スタックメモリ割り当て用にスーパページを自動的に利用してよい。当業者であれば、これによって、スタック成長による高価なＴＬＢエラーおよびページ不良が防止される可能性があることに気づく。現在のところ、多くのプロセッサ設計はスーパページ作成能力を含むが、設計のなかにはある種のＴＬＢエントリへの適用に限られているものもある。本発明は、スーパページ（通常のサイズのページよりも大きなメモリ部分を参照するページ）を提供するＴＬＢ設計いずれにおいても実施できる。
【０００８】
図１は、本発明の一実施形態によるアプリケーションデータのブロック図を示す。図１に示すように、アプリケーションデータ１００は、最下位エントリ１０８、中間エントリ１１０、および最上位エントリ１１１を有するスタック１０２と、ヒープエントリ１１２を有するヒープ１０４と、グローバルデータエントリ１１４を有するグローバルデータ１０６とを含んでよい。スタック１０２は、中間エントリ１１０がスタック上に押し上げられることで成長し、スタック１０２を支持するのに必要なメモリ量を増加させる。最下位エントリ１０８は、中間エントリが追加される既知のアドレスを有してよい。レジスタ等のポインタを用いて、最上位エントリ１１１の現在の最上位アドレスを維持することができる。
【０００９】
図２は、本発明の一実施形態による例示的なアドレス変換格納機能の位置のブロック図である。図２に示すように、メインメモリ１４０は、ページフレーム格納領域１４４に多数のページフレームを含んでよい。より詳しくは、ページフレームＰ０からＰＮが存在してよい。ページテーブル１３０は、ＰＴＥＡ−Ｄという様々なページテーブルエントリを格納することができ、これら各々が、ページフレーム領域１４４に格納されているページフレームＰＸのいずれかに対応していてよい。ＴＬＢ１３８は、様々なＴＬＢエントリ（ＴＬＢＡ−Ｄ）を格納することができ、これら各々が、ページフレーム領域１４４に格納されているページフレームＰＸのいずれかに対応するページテーブルエントリＰＴＥＡ−Ｄのいずれかに対応していてよい。ページフレームＰ０からＰＮは、一定の間隔で境界を有してもよいし、または、様々なサイズであってもよい。一実施形態では、ページテーブル１３０は、多数の連続するページフレーム（例えばＰ０からＰ４）といったスーパページを参照するエントリを含むことができる。一実施形態では、通常のサイズのページフレームＰ０からＰＮは、４キロバイトであり、スーパページは２メガバイトである（通常のサイズのページフレームが５１２枚連続したものである）。一実施形態では、一枚のスーパページは、所定のサイズ群から選択されたサイズを有してよく、例えば、一枚のスーパページは、８Ｋ、６４Ｋ、５１２Ｋ、または４Ｍのいずれかとしてよい。ＴＬＢ１３８は、スーパページ参照用に設計されたエントリを有してよく、または、スーパページを参照可能なエントリ数に制限を課してもよい。
【００１０】
図３は、本発明の一実施形態による様々なコンポーネント間の相互作用を示すブロック図である。図３に示すように、メモリアドレスをマッピングする際には様々なコンポーネントが相互作用する。特にコアは、メインメモリ２５０の特定のページに存在する情報を要求することができる。従って、コア２１０は、ＴＬＢ２３０（変換情報を含む）両方にアドレスを提供する。対応するＰＡからＶＡへの変換がＴＬＢ２３０には存在しない場合、ＴＬＢエラーを示唆することができ、ページテーブルエントリがない場合には、ページ不良が生じうる。これはＴＬＢエラーおよびページ不良処理ロジック（ＴＭＰＦＨＬ）２４０により処理することができ、ＴＬＢエラーおよびページ不良処理ロジック（ＴＭＰＦＨＬ）２４０は、メモリコントローラ２４５に対して、要求されたアドレスを提供し、メモリコントローラ２４５は、メインメモリ２５０に連結されることでページテーブルエントリをＴＬＢ２３０にロードする。ＴＭＰＦＨＬ２４０は、以下に図４を参照しながら示すように、スタックメモリ割り当て用にスーパページを自動的に利用する方法を実装してよい。ＴＭＰＦＨＬ２４０は、ＯＳカーネルソフトウェア、ファームウェア、ハードウェア、ハードウェアまたはソフトウェアの組み合わせにより実装可能である。
【００１１】
図４は、本発明の一実施形態によるスタックメモリ割り当て用にスーパページを自動的に利用するフローチャートである。図４に示すように、方法は、ページ不良に呼応して、不良アドレスがスタックアクセスであるか否かを判断すること（４０２）により始まる。一実施形態では、ＴＭＰＦＨＬ２４０は、不良アドレスがスタックアクセスであるか否かの判断を、不良アドレスをスタック最上位エントリ１１１のアドレスと比較して、このアドレスがスタックアクセスであるか否かを判断することにより行う。別の実施形態では、ＴＭＰＦＨＬ２４０は、不良アドレスを渡すのに利用されるアーキテクチャレジスタがフレームポインタ（例えばＥＢＰ）またはスタックポインタ（例えばＥＳＰ）である場合に、不良アドレスがスタックアクセスであると判断する。別の実施形態では、ＴＭＰＦＨＬ２４０は、ユーザモードのアプリケーションアドレスの最上位ビットを見ることにより、不良アドレスがスタックアクセスであるかを判断する。不良アドレスの最上位ビットが１である場合には、スタックアクセスである。別の実施形態では、ロード／格納命令が、不良アドレスがスタックアクセスであるか否かをＴＭＰＦＨＬ２４０に対して明示的に知らせるための特別なビットを搬送する。ページ不良がスタックアクセスにより生じたものである場合には、ＴＭＰＦＨＬ２４０は、（４０４）ページテーブル１３０のアクセス用のスーパページおよびＴＬＢ１３８内の対応するエントリを作成する。
【００１２】
ページ不良がスタックアクセスから生じたものではない場合には、ＴＭＰＦＨＬ２４０は次に（４０６）異なるメモリ割り当てルーチンを行う。一実施形態では、非スタックアクセス用のメモリ割り当てルーチンは、ページテーブル１３０に１つの通常のサイズのページを作成する。別の実施形態では、非スタックアクセス用のメモリ割り当てルーチンは、ページテーブル１３０にスーパページを作成することもできる。
【００１３】
実施形態は、多くの異なる種類のシステムにより実装することができる。図５は、本発明の一実施形態によるシステムのブロック図である。図５に示すように、マルチプロセッサシステム５００は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト５５０を介して連結された第１のプロセッサ５７０および第２のプロセッサ５８０を含む。図５に示すように、プロセッサ５７０および５８０の各々は、第１および第２のプロセッサコア（つまり、プロセッサコア５７４ａおよび５７４ｂおよびプロセッサコア５８４ａおよび５８４ｂ）を含むマルチコアプロセッサであってよい。各プロセッサは、本発明の一実施形態によりＴＬＢハードウェア、ソフトウェア、およびファームウェアを含むことができる。
【００１４】
さらに図５を参照すると、第１のプロセッサ５７０はさらに、メモリコントローラハブ（ＭＣＨ）５７２およびポイントツーポイント（Ｐ−Ｐ）インタフェース５７６および５７８を含む。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２およびＰ−Ｐインタフェース５８６および５８８を含む。図５に示すように、ＭＣＨの５７２および５８２は、プロセッサを、プロセッサそれぞれにローカル接続されたメインメモリ（ダイナミックＲＡＭ（ＤＲＡＭ））の一部であってよい銘々のメモリに（つまり、メモリ５３２およびメモリ５３４に）連結し、これら各々が、本発明の一実施形態による拡張ページテーブルを含むことができる。第１のプロセッサ５７０および第２のプロセッサ５８０は、Ｐ−Ｐインターコネクト５５２および５５４をそれぞれ介してチップセット５９０に連結されてよい。図５に示すように、チップセット５９０は、Ｐ−Ｐインターコネクト５９４および５９８を含む。
【００１５】
さらに、チップセット５９０は、チップセット５９０を高性能グラフィックエンジン５３８に連結するインタフェース５９２を含む。またチップセット５９０は、インタフェース５９６を介して第１のバス５１６に連結されてよい。図５に示すように、様々なＩ／Ｏデバイス５１４が第１のバス５１６に連結されてよく、且つ、第１のバス５１６を第２のバス５２０に連結するバスブリッジ５１８と連結されてよい。一実施形態では様々なデバイスが第２のバス５２０と連結されてよい（例えばキーボード／マウス５２２、通信デバイス５２６、およびディスクドライブまたはその他の大容量記憶デバイス（コード５３０を含んでよい）を含むデータ記憶装置５２８を含む）。さらに、オーディオＩ／Ｏ５２４を第２のバス５２０に連結させてもよい。
【００１６】
実施形態は、コードとして実装することもでき、システムに命令を行わせる際に利用可能な命令を格納する記憶媒体に格納されてもよい。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、および光磁気ディスク等の任意の種類のディスク、読み取り専用メモリ（ＲＯＭ）等の半導体メモリ、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ（消去可能書き込み可能ＲＯＭ）、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）（電気的消去可能書き込み可能ＲＯＭ）、磁気または光学カード、または、電子命令を格納するのに適した任意の他の種類の媒体を含むが、これらに限定されない。
【００１７】
本発明を限られた数の実施形態を参照して記載してきたが、当業者であれば、これに基き多数の変形例および変更例について想到するであろう。添付請求項では、このような変形例および変更例が全て、本発明の真の精神および範囲に含まれることを意図している。
【図１】
2011014131.tif 000003
【図２】
2011014131.tif 000004
【図３】
2011014131.tif 000005
【図４】
2011014131.tif 000006
【図５】
2011014131.tif 000007
【手続補正書】
【提出日】平成22年7月14日(2010.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
ページ不良に対して、前記ページ不良がスタックアクセスにより生じたものであるか否かを判断することで応答させ、
前記ページ不良がスタックアクセスにより生じたものである場合に、スーパページを作成させ、
前記スーパページ用の変換索引バッファ（ＴＬＢ）エントリを作成させるためのプログラム。
【請求項２】
前記コンピュータに、
前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページを作成させる請求項１に記載のプログラム。
【請求項３】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項２に記載のプログラム。
【請求項４】
前記通常のサイズのページは４キロバイトである請求項２に記載のプログラム。
【請求項５】
前記スーパページは２メガバイトである請求項２に記載のプログラム。
【請求項６】
前記スーパページは、予め定められたサイズ群から選択されたサイズを持つ請求項２に記載のプログラム。
【請求項７】
前記コンピュータに
前記ページ不良がスタックアクセスにより生じたものではない場合に、スーパページを作成させる請求項１に記載のプログラム。
【請求項８】
前記コンピュータに、アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較させることにより、ページ不良に対して、前記ページ不良がスタックアクセスにより生じたものであるか否かを判断することで応答させる請求項１に記載のプログラム。
【請求項９】
システムであって、
命令を実行する第１のコアと、前記第１のコアに連結された変換索引バッファ（ＴＬＢ）とを有するプロセッサと、
前記プロセッサに連結されたダイナミックＲＡＭ（ＤＲＡＭ）と、
ページ不良に対してページテーブルエントリとＴＬＢエントリとを作成し、ページ不良がスタックアクセスから生じたものであるか否かを判断し、前記ページ不良がスタックアクセスにより生じたものである場合にスーパページテーブルエントリを作成し、前記スーパページ用のＴＬＢエントリを作成するページ不良ハンドラとを備え、
前記ＴＬＢは複数のエントリを含み、前記複数のエントリは各々、仮想アドレス（ＶＡ）から物理アドレス（ＰＡ）への変換を格納する変換部を持ち、
前記ＤＲＡＭは、前記ＤＲＡＭ内の複数のメモリページのページテーブルエントリを含むページテーブルを格納し、前記ページテーブルはカーネルレベル空間に配置されるシステム。
【請求項１０】
前記ページ不良ハンドラは、さらに、前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページテーブルエントリを作成する請求項９に記載のシステム。
【請求項１１】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項１０に記載のシステム。
【請求項１２】
前記通常のサイズのページは４キロバイトである請求項１０に記載のシステム。
【請求項１３】
前記スーパページは、予め定められたサイズ群から選択されたサイズを持つ請求項１０に記載のシステム。
【請求項１４】
前記ページ不良ハンドラは、さらに、アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較する請求項９に記載のシステム。
【請求項１５】
ページ不良がスタックアクセスにより生じたものであるか否かを判断する段階と、
前記ページ不良がスタックアクセスにより生じたものである場合に、スーパページを作成する段階と、
前記スーパページ用の変換索引バッファ（ＴＬＢ）エントリを作成する段階とを備える方法。
【請求項１６】
前記ページ不良がスタックアクセスにより生じたものではない場合に、通常のサイズのページを作成する段階をさらに備える請求項１５に記載の方法。
【請求項１７】
前記スーパページは、複数の連続する通常のサイズのページを含む請求項１６に記載の方法。
【請求項１８】
前記通常のサイズのページは４キロバイトである請求項１６に記載の方法。
【請求項１９】
前記スーパページは２メガバイトである請求項１６に記載の方法。
【請求項２０】
前記ページ不良がスタックアクセスにより生じたものであるか否かを判断する段階は、
アクセスアドレスを、前記スタックの最上位に関連付けられたアドレスと比較する段階を有する請求項１５に記載の方法。
【外国語明細書】
2011014131.tif 000008
2011014131.tif 000009
2011014131.tif 000010
2011014131.tif 000011
2011014131.tif 000012
2011014131.tif 000013
2011014131.tif 000014
2011014131.tif 000015
2011014131.tif 000016
2011014131.tif 000017
2011014131.tif 000018