(57)【要約】  プログラム実行装置（１０）は、機械語コードと、機械語コードに従ってアクセスされる論理アドレス範囲と論理アドレス範囲へのアクセス頻度とが対応付けられたアクセス頻度情報とを含む機械語プログラムを読み込むプログラムロード部（１１）と、論理アドレス範囲と物理アドレス範囲との対応関係を表すエントリを有するアドレス変換テーブルを作成するアドレス変換テーブル作成部（１２）と、アドレス変換テーブルのエントリのうち、機械語コードに従ってアクセスされる論理アドレス範囲が格納されたエントリをＴＬＢに登録するＴＬＢ登録部（１４）とを備え、アドレス変換テーブル作成部は、アクセス頻度情報に基づいてアクセス頻度が高いと判断した論理アドレス範囲が格納されるエントリのサイズを論理アドレス範囲に応じたサイズに設定する。
2012095901.tif 000002
【特許請求の範囲】
【請求項１】
機械語プログラムを実行するプログラム実行装置であって、
機械語コードと、当該機械語コードに従ってアクセスされる論理アドレス範囲と当該論理アドレス範囲へのアクセス頻度とが対応付けられたアクセス頻度情報とを含む前記機械語プログラムを読み込むプログラムロード部と、
論理アドレス範囲と物理アドレス範囲との対応関係を表すエントリを有するアドレス変換テーブルを作成するアドレス変換テーブル作成部と、
前記アドレス変換テーブルのエントリのうち、前記機械語コードに従ってアクセスされる論理アドレス範囲が格納されたエントリをＴＬＢ（Translation Look-aside Buffer）に登録するＴＬＢ登録部とを備え、
前記アドレス変換テーブル作成部は、前記アクセス頻度情報に基づいてアクセス頻度が高いと判断した論理アドレス範囲が格納されるエントリのサイズを当該論理アドレス範囲に応じたサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項２】
請求項１のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が高い論理アドレス範囲が格納されるエントリのサイズを、当該論理アドレス範囲を格納可能でかつ最小となるサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項３】
請求項１のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が低い論理アドレス範囲が格納されるエントリのサイズを、デフォルトのサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項４】
請求項１のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が閾値以上である論理アドレス範囲が格納されるエントリをロック候補に設定するものであり、
前記ＴＬＢ登録部は、前記アドレス変換テーブルのエントリのうちロック候補に設定されたエントリをＴＬＢのロック領域に登録する
ことを特徴とするプログラム実行装置。
【請求項５】
請求項１のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリがアクセス頻度の順となるように前記アドレス変換テーブルを作成する
ことを特徴とするプログラム実行装置。
【請求項６】
ソースプログラムをコンパイルして機械語プログラムを生成するコンパイラシステムであって、
前記ソースプログラムを解析して、前記ソースプログラム内の少なくとも１つの変数によってアクセスされる論理アドレス範囲および当該論理アドレス範囲へのアクセス頻度を取得するアクセス頻度解析部と、
前記論理アドレス範囲と前記アクセス頻度とを対応付けてアクセス頻度情報を生成し、前記アクセス頻度情報と機械語コードとを含む前記機械語プログラムを出力する出力部とを備えている
ことを特徴とするコンパイラシステム。
【請求項７】
請求項６のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記変数が出現する関数が呼び出される回数に基づいて前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【請求項８】
請求項７のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記変数がループ処理内に出現する場合に、当該ループのネスト数を加味して前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【請求項９】
請求項８のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記関数が呼び出される回数および前記ループのネスト数のそれぞれに重み付けして前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行装置に関し、特に、プログラム実行時にＴＬＢ（Translation Look-aside Buffer）ミスヒットを軽減する技術に関するものである。
【背景技術】
【０００２】
近年、フルＨＤ（High Definition）機器の普及により巨大なサイズのメモリ領域へのアクセスを行うアプリケーションが増加している。一般に、アプリケーションがメモリに高速にアクセスするためにＴＬＢが参照される。アプリケーションがアクセスする論理アドレスがＴＬＢに存在しない場合にはＴＬＢミスヒットとなる。【０００３】
ＴＬＢミスヒットが発生したときに、アプリケーションはオペレーティングシステムが管理しているアドレス変換テーブルにアクセスする。そして、アクセス対象の論理アドレスおよびその論理アドレスに対応する物理アドレスが、アドレス変換テーブルからＴＬＢエントリに登録されるためオーバーヘッドが発生する。その結果、アプリケーションの実行速度が低下してしまう。【０００４】
図１０は、従来のアドレス変換システム装置である。ＣＰＵ（Central Processing Unit）３には、論理アドレス空間１内の論理アドレスを物理アドレス空間２内の物理アドレスに変換するＴＬＢ５が内蔵されたＭＭＵ（Memory Management Unit）４が設けられている。従来、ＴＬＢエントリのページサイズを大きくして、ＴＬＢエントリに格納できるアドレス範囲を広げることで、ＴＬＢミスヒットの発生を抑制するようにしている（例えば、特許文献１および特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−５７０５４号公報
【特許文献２】特開２０１０−１９１６４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載された技術によると、複数のプログラムについて、テキスト部をマージした全体サイズおよびデータ部をマージした全体サイズのそれぞれに基づいてＴＬＢエントリのページサイズが設定される。一方、特許文献２に記載された技術によると、ＴＬＢエントリのページサイズは、複数のプログラムのテキスト部のうちサイズが最も大きいテキスト部を格納できるサイズに設定される。このように、従来の技術では、プログラム内のテキスト部等のサイズが大きくなるにつれて、ＴＬＢエントリのページサイズが大きくなる。【０００７】
ＴＬＢエントリにおいて、ページサイズがテキスト部等のサイズよりも大きい部分は、プログラムによって使用されないアドレス範囲がマッピングされるため無駄な領域となる。ＴＬＢエントリのページサイズとテキスト部等のサイズとの関係によっては、無駄な領域がより増大することになる。つまり、従来の技術では、有限であるＴＬＢリソースを効率良く利用することができず、複数のアプリケーションを並行して実行する場合に、各アプリケーションがアクセスするアドレス範囲をＴＬＢに格納できなくなるおそれがある。そのため、単体のアプリケーションを実行する場合にはＴＬＢミスヒットの発生率を低下させることができるが、複数のアプリケーションを並行して実行する場合にＴＬＢミスヒットの発生率が増加するおそれがある。【０００８】
かかる点に鑑みて、本発明は、複数のアプリケーションを並行して実行する場合でもＴＬＢミスヒットの発生率を低減することを課題とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため本発明によって次のような解決手段を講じた。すなわち、機械語プログラムを実行するプログラム実行装置は、機械語コードと、当該機械語コードに従ってアクセスされる論理アドレス範囲と当該論理アドレス範囲へのアクセス頻度とが対応付けられたアクセス頻度情報とを含む機械語プログラムを読み込むプログラムロード部と、論理アドレス範囲と物理アドレス範囲との対応関係を表すエントリを有するアドレス変換テーブルを作成するアドレス変換テーブル作成部と、アドレス変換テーブルのエントリのうち、機械語コードに従ってアクセスされる論理アドレス範囲が格納されたエントリをＴＬＢに登録するＴＬＢ登録部とを備えている。そして、アドレス変換テーブル作成部は、アクセス頻度情報に基づいてアクセス頻度が高いと判断した論理アドレス範囲が格納されるエントリのサイズを当該論理アドレス範囲に応じたサイズに設定する。【００１０】
これによると、アドレス変換テーブル作成部は、アドレス変換テーブルのエントリのうち、アクセス頻度の高い論理アドレス範囲を格納するエントリのサイズを、その論理アドレス範囲に応じたサイズに設定することができる。そして、ＴＬＢ登録部によって、ＴＬＢにアドレス変換テーブルのエントリが登録される。これにより、アクセス頻度が高い論理アドレス範囲が格納されるＴＬＢエントリのサイズは、その論理アドレス範囲に応じたサイズに設定される。つまり、複数のアプリケーションによって複数の論理アドレス範囲にアクセスされる場合でも、複数の論理アドレス範囲のうちアクセス頻度が高い論理アドレス範囲が格納されるＴＬＢエントリのサイズが大きくなるように設定される。したがって、ＴＬＢを効率良く利用することができるため、ＴＬＢミスヒットを抑制することができる。【００１１】
好ましくは、アドレス変換テーブル作成部は、アドレス変換テーブルのエントリのうちアクセス頻度が高い論理アドレス範囲が格納されるエントリをロック候補に設定するものであり、ＴＬＢ登録部は、アドレス変換テーブルのエントリのうちロック候補のエントリをＴＬＢのロック領域に登録する。【００１２】
これによると、アクセス頻度が高い論理アドレス範囲が格納されるＴＬＢエントリがロックされるため、当該ＴＬＢエントリの内容が変更されなくなる。そのため、ＴＬＢミスヒットをさらに抑制することができる。【００１３】
また、上記課題を解決するために本発明が講じた手段として、ソースプログラムをコンパイルして機械語コードを生成するコンパイラシステムは、ソースプログラムを解析して、ソースプログラム内の少なくとも１つの変数によってアクセスされる論理アドレス範囲へのアクセス頻度を取得するアクセス頻度解析部と、論理アドレス範囲とアクセス頻度とを対応付けてアクセス頻度情報を生成し、アクセス頻度情報と機械語コードとを含む機械語プログラムを出力する出力部とを備えている。【００１４】
これによると、コンパイラシステムによって、アクセス頻度情報と機械語コードとを含む機械語プログラムが生成される。そして、この機械語プログラムに含まれる機械語コードを上記プログラム実行装置で実行する場合にＴＬＢミスヒットが抑制されるため、機械語コードの実行速度を向上させることができる。
【発明の効果】
【００１５】
本発明によると、複数のアプリケーションを並行して実行する場合でもＴＬＢミスヒットの発生率を低減することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の一実施形態に係るプログラム実行装置を備えたアドレス変換装置の構成図である。
【図２】図２は、アドレス変換テーブルとＴＬＢとの関係を示す図である。
【図３】図３は、アドレス変換テーブル作成部の処理の例を示すフローチャートである。
【図４】図４は、ＴＬＢ登録部の処理の例を示すフローチャートである。
【図５】図５は、本発明の一実施形態に係るコンパイラシステムの構成を示すブロック図である。
【図６】図６は、図５のコンパイラシステムに入力される高級言語プログラムの例である。
【図７】図７は、図５のコンパイラシステムによって生成される機械語コードおよびアクセス頻度情報の例である。
【図８】図８は、アクセス頻度解析部の処理の例を示すフローチャートである。
【図９】図９は、アクセス頻度が算出される過程で使用されるテーブルである。
【図１０】図１０は、従来のアドレス変換装置の構成図である。
【発明を実施するための形態】
【００１７】
図１は、本発明の一実施形態に係るプログラム実行装置を備えたアドレス変換装置の構成図である。図１に示すアドレス変換装置は、ＣＰＵ３およびプログラム実行装置であるオペレーティングシステム（以下、ＯＳと称する。）１０で構成することができる。
【００１８】
ＣＰＵ３は、論理アドレス空間１内の論理アドレスを物理アドレス空間２内の物理アドレスに変換するＴＬＢ５が内蔵されたＭＭＵ４を備えている。ＴＬＢ５は、論理アドレスと物理アドレスとページサイズとが対応付けられたエントリを有する。すなわち、ＴＬＢ５のエントリには、ページサイズで示されるサイズの論理アドレス範囲と物理アドレス範囲とが格納可能である。本実施形態では、ＴＬＢ５のエントリを更新等する処理はＯＳ１０のソフトウェア処理によって行われるものとする。
【００１９】
ＯＳ１０は、機械語プログラム２０を読み込んで実行する。具体的に、ＯＳ１０は、プログラムロード部１１と、アドレス変換テーブル作成部１２と、アドレス変換テーブル１３と、ＴＬＢ登録部１４とを備えている。プログラムロード部１１は、機械語プログラム２０をロードして、実行可能ファイルである機械語コード２１を図示しないプログラム実行部に出力する一方、アクセス頻度情報２２をアドレス変換テーブル作成部１２に出力する。プログラムロード部１１は、複数の機械語プログラム２０を並行してロードすることが可能である。アクセス頻度情報２２とは、機械語コード２１によってアクセスされる、少なくとも１つの論理アドレス範囲とその論理アドレス範囲へのアクセス頻度との関係を示す情報である。
【００２０】
アドレス変換テーブル作成部１２は、論理アドレス空間１内の論理アドレスと、物理アドレス空間２内の物理アドレスと、ページサイズとが対応付けられたエントリを有するアドレス変換テーブル１３を作成する。すなわち、アドレス変換テーブル１３のエントリには、ページサイズで示されるサイズの論理アドレス範囲と物理アドレス範囲とが格納可能である。また、アドレス変換テーブル作成部１２は、アクセス頻度情報２２に基づいて、論理アドレス範囲へのアクセス頻度が高いかどうかを判断する。アドレス変換テーブル作成部１２は、例えば、論理アドレス範囲へのアクセス頻度が、相対的に高いかどうか、あるいは閾値よりも高いかどうかで判断することができる。そして、アドレス変換テーブル作成部１２は、論理アドレス範囲へのアクセス頻度が高いと判断した場合、アドレス変換テーブル１３のエントリのうち、その論理アドレス範囲が格納されるエントリのページサイズをその論理アドレス範囲に応じたサイズにする。これにより、アドレス変換テーブルが最適化される。アドレス変換テーブル作成部１２は、アドレス変換テーブル１３のエントリがアクセス頻度の昇順あるいは降順となるようにアドレス変換テーブル１３を作成してもよい。
【００２１】
ＴＬＢ登録部１４は、アドレス変換テーブル１３のエントリのうち、機械語コード２１に従ってアクセスされる論理アドレス範囲が格納されたエントリをＴＬＢ５に登録する。つまり、ＴＬＢエントリのうち、アクセス頻度が高い論理アドレス範囲が格納されるエントリのページサイズが論理アドレス範囲に応じた大きさに設定されることになる。
【００２２】
アドレス変換テーブル作成部１２は、アクセス頻度情報２２に基づいて、機械語コード２１の実行時にアクセスされる論理アドレス範囲のうち、最もアクセス頻度が高い論理アドレス範囲を検出し、当該論理アドレス範囲が格納されたエントリをロック候補に設定してもよい。具体的に、図２に示すように、アドレス変換テーブル１３に、エントリがロック候補であるかどうかを示すロック候補フラグを追加する。そして、アドレス変換テーブル作成部１２は、アドレス変換テーブル１３のエントリをロック候補にする場合にロック候補フラグを例えば‘１’に設定し、ロック候補ではないエントリのロック候補フラグを例えば‘０’に設定する。ＴＬＢ登録部１４は、アドレス変換テーブル１３のエントリのうち、ロック候補フラグが‘１’であるエントリに格納された論理アドレス範囲と物理アドレス範囲とをＴＬＢ５のロック領域に登録する。また、ＴＬＢ登録部１４は、アドレス変換テーブル１３のエントリのうち、ロック候補フラグが‘０’であるエントリをＴＬＢ５の非ロック領域に登録する。ここで、ロック領域とは、ＴＬＢ５のエントリのうち、新たに登録されるエントリによる上書きが禁止されているエントリである。
【００２３】
次に、アドレス変換テーブル作成部１２における処理例を図３を参照して説明する。なお、機械語コード２１に従って複数の論理アドレス範囲がアクセスされているときにページフォルトが発生した場合を例に挙げる。ページフォルトは、アドレス変換テーブル１３において、アクセスされた論理アドレス範囲が物理アドレス範囲にマッピングされていないときに発生する。
【００２４】
まず、ページフォルトが発生したときに、アクセス頻度情報２２に基づいて、機械語コード２１に従ってアクセスされた論理アドレス範囲がアクセス頻度の高い論理アドレス範囲かどうかが判断される（Ｓ３０１）。アクセス頻度の高い論理アドレス範囲である場合（Ｓ３０１のＹｅｓ肢）、その論理アドレス範囲を格納できるサイズでかつ最小となるページサイズが選択される。ページサイズとして、例えば、４ＫＢ，８ＫＢ，１６ＫＢ，３２ＫＢのいずれかが選択可能である場合、アクセス頻度の高い論理アドレス範囲が１０ＫＢの場合は１６ＫＢのページサイズが選択される。そして、物理アドレス空間１から、選択されたページサイズ分の物理アドレスが取得されてアドレス変換テーブル１３のエントリに格納される（Ｓ３０２）。これにより、ページフォルトに係る論理アドレス範囲が物理アドレス範囲にマッピングされる。
【００２５】
その後、機械語コード２１に従ってアクセスされた複数の論理アドレス範囲のうち、ページフォルトが発生したときにアクセスされた論理アドレス範囲が、最もアクセス頻度の高い論理アドレス範囲であるかどうかが判断される（Ｓ３０３）。その論理アドレス範囲が最もアクセス頻度の高い論理アドレス範囲である場合（Ｓ３０３のＹｅｓ肢）、その論理アドレス範囲が格納されたエントリはロック候補となる（Ｓ３０４）。つまり、そのエントリのロック候補フラグに‘１’が設定される。また、ページフォルトが発生したときにアクセスされた論理アドレス範囲が最もアクセス頻度の高い論理アドレス範囲でない場合（Ｓ３０３のＮｏ肢）、そのアドレス範囲が格納されたエントリのロック候補フラグに‘０’が設定される。
【００２６】
一方、ページフォルトが発生したときに、機械語コード２１に従ってアクセスされた論理アドレス範囲のアクセス頻度が高くない場合（Ｓ３０１のＮｏ肢）、デフォルトのページサイズとして例えば４ＫＢが選択される（Ｓ３０５）。
【００２７】
以上のように、アドレス変換テーブル１３のエントリのうち、アクセス頻度の高い論理アドレス範囲が格納されるエントリのページサイズが大きくなるため、内部フラグメンテーションが発生しにくくなる。なお、Ｓ３０３およびＳ３０４において、最もアクセス頻度の高い論理アドレス範囲が格納されるエントリをロック候補にするようにしたが、論理アドレス範囲へのアクセス頻度が閾値以上の場合に、その論理アドレス範囲が格納されるエントリをロック候補にしてもよい。
【００２８】
次に、ＴＬＢ登録部１４における処理例を図４を参照して説明する。まず、ＴＬＢ登録部１４によって、アドレス変換テーブル１３のロック候補フラグが参照されて、アドレス変換テーブル１３のエントリのうちＴＬＢ５に登録すべきエントリがロック候補であるかどうかが判断される（Ｓ４０１）。ロック候補である場合（Ｓ４０１のＹｅｓ肢）、ＴＬＢ５のロック領域に空きがあるかどうかが判断される（Ｓ４０２）。ＴＬＢ５のロック領域に空きがある場合（Ｓ４０２のＹｅｓ肢）、ＴＬＢ５のロック領域にアドレス変換テーブル１３のロック候補のエントリが登録される（Ｓ４０３）。ロック候補のエントリが複数存在する場合は、ＴＬＢ登録部１４の処理順でロック候補のエントリがＴＬＢ５のロック領域に登録されるようにしてもよい。ＴＬＢ５のロック領域に空きがない場合（Ｓ４０２のＮｏ肢）、アドレス変換テーブル１３のロック候補のエントリはＴＬＢ５の非ロック領域に登録される（Ｓ４０４）。
【００２９】
一方、ＴＬＢ５に登録すべきアドレス変換テーブル１３のエントリがロック候補でない場合（Ｓ４０１のＮｏ肢）、そのエントリはＴＬＢ５の非ロック領域に登録される（Ｓ４０４）。
【００３０】
以上、本実施形態に係るＯＳ１０によると、アクセスされる論理アドレス範囲の数が増加しても、頻繁にアクセスされる論理アドレス範囲が格納されるＴＬＢエントリのみ、そのページサイズが大きくなるため、ＴＬＢ５を効率良く利用することができる。したがって、ＴＬＢミスヒットを抑制することができる。さらに、アクセス頻度の高い論理アドレス範囲が格納されるＴＬＢエントリをロックすることで、当該論理アドレス範囲へのアクセス時に必ずＴＬＢヒットになる。
【００３１】
なお、ＯＳ１０における機械語コード２１の処理が終了した場合、ＴＬＢ登録部１４は、ＴＬＢ５のロック領域に登録されているエントリのうち機械語コード２１の実行中に参照されていたエントリを非ロック領域に移動することが好ましい。この場合、アドレス変換テーブル作成部１２は、ＴＬＢ５の非ロック領域に移動されたエントリに相当するアドレス変換テーブル１３のエントリをロック候補から非ロック候補に変更する。
【００３２】
図５は、図１に示す機械語プログラム２０を生成するコンパイラシステムの構成を示すブロック図である。図５に示すコンパイラシステム３０は、ソースプログラムである高級言語プログラム２７をコンパイルして機械語プログラム２０を生成する。コンパイラシステム３０は、構文解析部３１と、最適化部３２と、コード生成部３４と、出力部３５とで構成することができる。
【００３３】
構文解析部３１は、図６に示すＣ言語等で記述された高級言語プログラム２７をトークンに分解し、分解したトークンに基づいて高級言語プログラム２７の構造を解析して中間コードを生成する。
【００３４】
図５に戻り、最適化部３２は、機械語コード２１の実行時間等が最小化されるように中間コードを効率の高いコードに変換する。また、最適化部３２は、アクセス頻度解析部３３を備えている。アクセス頻度解析部３３は、図６に示す高級言語プログラム２７内で用いられる変数ａ，ｂ，ｃのそれぞれに関する情報を抽出する。具体的に、各変数ａ，ｂ，ｃの先頭アドレスおよびサイズに基づいて、各変数ａ，ｂ，ｃによってアクセスされる論理アドレス範囲を取得する。また、アクセス頻度解析部３３は、各変数ａ，ｂ，ｃが、取得された論理アドレス範囲にアクセスする頻度を算出する。なお、アクセス頻度解析部３３を最適化部３２の外部に設けてもよい。この場合、最適化部３２を省略してもよい。
【００３５】
図５に戻り、コード生成部３４は、機械語コード２１を生成する。出力部３５は、論理アドレス範囲とアクセス頻度との対応付けを行ってアクセス頻度情報２２を生成し、図７に示すような機械語コード２１とアクセス頻度情報２２とからなる機械語プログラム２０を出力する。ここで、図７に示すアクセス頻度情報２２のうち、符号２３は高級言語プログラム２７内の各変数ａ，ｂ，ｃ，の先頭アドレスを表す。符号２４は、各変数ａ，ｂ，ｃのサイズを表す。符号２５は、各変数ａ，ｂ，ｃのアクセス頻度を表す。各変数ａ，ｂ，ｃの先頭アドレス２３およびサイズ２４で示される内容が論理アドレス範囲である。出力部３５は、アクセス頻度情報２２を機械語プログラム２０から分離して別ファイルに出力してもよい。
【００３６】
次に、アクセス頻度解析部３３によってアクセス頻度２５が算出されるときの処理例を図８および図９を参照して説明する。
【００３７】
まず、高級言語プログラム２７内の関数のうち、図９（Ａ）に示すテーブル３６に未登録の関数があるかどうかが判断される（Ｓ８０１）。テーブル３６に未登録の関数がある場合（Ｓ８０１のＹｅｓ肢）、その関数名とその関数が呼び出される合計回数とがテーブル３６に登録される（Ｓ８０２）。例えば、図６の場合、高級言語プログラム２７内で関数ｆｕｎｃ１は１回のみ呼び出されるため、呼び出される合計回数は‘１’となる。そして、高級言語プログラム２７内の関数において用いられる変数と、その変数がループ処理内に出現する場合にはそのループのネスト数とが、関数名に関連付けられて図９（Ｂ）に示すテーブル３７に登録される（Ｓ８０３）。例えば、図６の場合、関数ｆｕｎｃ１内で変数ａが出現する位置におけるループのネスト数は‘１’であるため、関数ｆｕｎｃ１に「（ａ，１）」が関連付けられてテーブル３７に登録される。以後、Ｓ８０１の処理に戻り、Ｓ８０１からＳ８０３の処理が繰り返される。以上により、テーブル３６，３７が作成される。なお、変数がループ処理以外の箇所に出現する場合、ネスト数を‘１’とすればよい。
【００３８】
一方、テーブル３６に未登録の関数がない場合（Ｓ８０１のＮｏ肢）、テーブル３６，３７に基づいてアクセス頻度が算出される（Ｓ８０４）。具体的に、テーブル３６およびテーブル３７に共通する関数名について、テーブル３６の関数が呼び出される回数に対する重みを表すパラメータをｍ、テーブル３７のループネスト数に対する重みを表すパラメータをｎとすると、アクセス頻度ｆは、ｆ＝テーブル３６の関数が呼び出される回数×ｍ＋テーブル３７のループネスト数×ｎで表される計算式で算出することができる。
【００３９】
したがって、図６に示す高級言語プログラム２７内で用いられる変数ａ，ｂ，ｃのそれぞれのアクセス頻度ｆａ，ｆｂ，ｆｃは、テーブル３６，３７より、
ｆａ＝１×ｍ＋１×ｎ＝ｍ＋ｎ
ｆｂ＝１×ｍ＋２×ｎ＝ｍ＋２ｎ
ｆｃ＝２×ｍ＋２×ｎ＝２ｍ＋２ｎ
のように算出することができる。そして、各変数ａ，ｂ，ｃと各変数のアクセス頻度とが図９（Ｃ）に示すテーブル３８に登録される。ここで、図７に示すアクセス頻度２５は、パラメータｍ＝１０，パラメータｎ＝２０として、
ｆａ＝ｍ＋ｎ＝１０＋２０＝３０
ｆｂ＝ｍ＋２ｎ＝１０＋２×２０＝５０
ｆｃ＝２ｍ＋２ｎ＝２×１０＋２×２０＝６０
のように算出された値である。
【００４０】
以上、本実施形態に係るコンパイラシステム３０で生成された機械語プログラム２０を図１に示すＯＳ１０で実行する際に、ＴＬＢミスヒットを極力少なくすることができる。
【００４１】
一般に、高級言語プログラムにおいて、変数が出現するループのネスト数および変数が用いられる関数が呼び出される回数は静的であることが多く、ループ回数は動的であることが多い。ループのネスト数および関数の呼び出し回数の増加はアクセス頻度２５の増加につながることから、これらに基づいてアクセス頻度２５を算出することが好ましいが、関数の呼び出し回数のみに基づいてアクセス頻度２５を算出してもよい。また、パラメータｍおよびパラメータｎの値は任意である。
【００４２】
なお、高級言語プログラムにおいて、変数が出現するループのループ回数が静的である場合には、そのループ回数をアクセス頻度２５としてもよい。また、コンパイラシステム３０は、関数の呼び出し回数およびループのネスト数の他に、アクセス頻度２５の増減に影響を与える動的情報をプロファイル等から読み込んでアクセス頻度２５を算出してもよい。
【産業上の利用可能性】
【００４３】
本発明に係るプログラム実行装置は、デジタル家電等に搭載されるオペレーティングシステムのパフォーマンスの向上に有用である。
【符号の説明】
【００４４】
１０            プログラム実行装置（ＯＳ）
１１            プログラムロード部
１２            アドレス変換テーブル作成部
１４            ＴＬＢ登録部
３０            コンパイラシステム
３３            アクセス頻度解析部
３５            出力部
【図１】
2012095901.tif 000003
【図２】
2012095901.tif 000004
【図３】
2012095901.tif 000005
【図４】
2012095901.tif 000006
【図５】
2012095901.tif 000007
【図６】
2012095901.tif 000008
【図７】
2012095901.tif 000009
【図８】
2012095901.tif 000010
【図９】
2012095901.tif 000011
【図１０】
2012095901.tif 000012
【国際調査報告】
2012095901.tif 000013
2012095901.tif 000014
2012095901.tif 000015
2012095901.tif 000016