特許第5702808号(P5702808)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パナソニック株式会社の特許一覧

特許5702808プログラム実行装置およびコンパイラシステム
<>
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000002
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000003
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000004
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000005
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000006
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000007
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000008
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000009
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000010
  • 特許5702808-プログラム実行装置およびコンパイラシステム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5702808
(24)【登録日】2015年2月27日
(45)【発行日】2015年4月15日
(54)【発明の名称】プログラム実行装置およびコンパイラシステム
(51)【国際特許分類】
   G06F 12/10 20060101AFI20150326BHJP
   G06F 12/12 20060101ALI20150326BHJP
   G06F 12/08 20060101ALI20150326BHJP
   G06F 9/45 20060101ALI20150326BHJP
【FI】
   G06F12/10 501Z
   G06F12/12 503
   G06F12/08 523D
   G06F9/44 322H
【請求項の数】9
【全頁数】13
(21)【出願番号】特願2012-552536(P2012-552536)
(86)(22)【出願日】2011年7月26日
(86)【国際出願番号】JP2011004214
(87)【国際公開番号】WO2012095901
(87)【国際公開日】20120719
【審査請求日】2014年5月8日
(31)【優先権主張番号】特願2011-4246(P2011-4246)
(32)【優先日】2011年1月12日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000005821
【氏名又は名称】パナソニック株式会社
(74)【代理人】
【識別番号】110001427
【氏名又は名称】特許業務法人前田特許事務所
(72)【発明者】
【氏名】西田 芳隆
【審査官】 桜井 茂行
(56)【参考文献】
【文献】 特開2007−286705(JP,A)
【文献】 特開2009−020881(JP,A)
【文献】 特開平09−062574(JP,A)
【文献】 木下修平、外1名,2.6系カーネルに対するLinux Super Pageの実装と性能評価,情報処理学会研究報告(2008−ARC−176),日本,社団法人情報処理学会,2008年 1月15日,第2008巻,第1号,p.23−28
【文献】 Juan Navarro、外3名,Practical, transparent operating system support for superpages,ACM SIGOPS Operating Systems Review OSDI'02: Proceedings of the 5th symposium on Operating systems d,米国,ACM,2002年,Volume 36 Issue SI,p.89−104,[検索日 2011.08.19],Retrieved from: ACM Digital Library
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08−12/12
G06F 9/45
(57)【特許請求の範囲】
【請求項1】
機械語プログラムを実行するプログラム実行装置であって、
機械語コードと、当該機械語コードに従ってアクセスされる論理アドレス範囲と当該論理アドレス範囲へのアクセス頻度とが対応付けられたアクセス頻度情報とを含む前記機械語プログラムを読み込むプログラムロード部と、
論理アドレス範囲と物理アドレス範囲との対応関係を表すエントリを有するアドレス変換テーブルを作成するアドレス変換テーブル作成部と、
前記アドレス変換テーブルのエントリのうち、前記機械語コードに従ってアクセスされる論理アドレス範囲が格納されたエントリをTLB(Translation Look-aside Buffer)に登録するTLB登録部とを備え、
前記アドレス変換テーブル作成部は、前記アクセス頻度情報に基づいてアクセス頻度が高いと判断した論理アドレス範囲が格納されるエントリのサイズを当該論理アドレス範囲に応じたサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項2】
請求項1のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が高い論理アドレス範囲が格納されるエントリのサイズを、当該論理アドレス範囲を格納可能でかつ最小となるサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項3】
請求項1のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が低い論理アドレス範囲が格納されるエントリのサイズを、デフォルトのサイズに設定する
ことを特徴とするプログラム実行装置。
【請求項4】
請求項1のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリのうちアクセス頻度が閾値以上である論理アドレス範囲が格納されるエントリをロック候補に設定するものであり、
前記TLB登録部は、前記アドレス変換テーブルのエントリのうちロック候補に設定されたエントリをTLBのロック領域に登録する
ことを特徴とするプログラム実行装置。
【請求項5】
請求項1のプログラム実行装置において、
前記アドレス変換テーブル作成部は、前記アドレス変換テーブルのエントリがアクセス頻度の順となるように前記アドレス変換テーブルを作成する
ことを特徴とするプログラム実行装置。
【請求項6】
ソースプログラムをコンパイルして機械語プログラムを生成するコンパイラシステムであって、
前記ソースプログラムを解析して、前記ソースプログラム内の少なくとも1つの変数によってアクセスされる論理アドレス範囲および当該論理アドレス範囲へのアクセス頻度を取得するアクセス頻度解析部と、
前記論理アドレス範囲と前記アクセス頻度とを対応付けてアクセス頻度情報を生成し、前記アクセス頻度情報と機械語コードとを含む前記機械語プログラムを出力する出力部とを備えている
ことを特徴とするコンパイラシステム。
【請求項7】
請求項6のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記変数が出現する関数が呼び出される回数に基づいて前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【請求項8】
請求項7のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記変数がループ処理内に出現する場合に、当該ループ処理のネスト数を加味して前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【請求項9】
請求項8のコンパイラシステムにおいて、
前記アクセス頻度解析部は、前記関数が呼び出される回数および前記ループ処理のネスト数のそれぞれに重み付けして前記アクセス頻度を算出する
ことを特徴とするコンパイラシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム実行装置に関し、特に、プログラム実行時にTLB(Translation Look-aside Buffer)ミスヒットを軽減する技術に関するものである。
【背景技術】
【0002】
近年、フルHD(High Definition)機器の普及により巨大なサイズのメモリ領域へのアクセスを行うアプリケーションが増加している。一般に、アプリケーションがメモリに高速にアクセスするためにTLBが参照される。アプリケーションがアクセスする論理アドレスがTLBに存在しない場合にはTLBミスヒットとなる。
【0003】
TLBミスヒットが発生したときに、アプリケーションはオペレーティングシステムが管理しているアドレス変換テーブルにアクセスする。そして、アクセス対象の論理アドレスおよびその論理アドレスに対応する物理アドレスが、アドレス変換テーブルからTLBエントリに登録されるためオーバーヘッドが発生する。その結果、アプリケーションの実行速度が低下してしまう。
【0004】
図10は、従来のアドレス変換システム装置である。CPU(Central Processing Unit)3には、論理アドレス空間1内の論理アドレスを物理アドレス空間2内の物理アドレスに変換するTLB5が内蔵されたMMU(Memory Management Unit)4が設けられている。従来、TLBエントリのページサイズを大きくして、TLBエントリに格納できるアドレス範囲を広げることで、TLBミスヒットの発生を抑制するようにしている(例えば、特許文献1および特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−57054号公報
【特許文献2】特開2010−191645号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載された技術によると、複数のプログラムについて、テキスト部をマージした全体サイズおよびデータ部をマージした全体サイズのそれぞれに基づいてTLBエントリのページサイズが設定される。一方、特許文献2に記載された技術によると、TLBエントリのページサイズは、複数のプログラムのテキスト部のうちサイズが最も大きいテキスト部を格納できるサイズに設定される。このように、従来の技術では、プログラム内のテキスト部等のサイズが大きくなるにつれて、TLBエントリのページサイズが大きくなる。
【0007】
TLBエントリにおいて、ページサイズがテキスト部等のサイズよりも大きい部分は、プログラムによって使用されないアドレス範囲がマッピングされるため無駄な領域となる。TLBエントリのページサイズとテキスト部等のサイズとの関係によっては、無駄な領域がより増大することになる。つまり、従来の技術では、有限であるTLBリソースを効率良く利用することができず、複数のアプリケーションを並行して実行する場合に、各アプリケーションがアクセスするアドレス範囲をTLBに格納できなくなるおそれがある。そのため、単体のアプリケーションを実行する場合にはTLBミスヒットの発生率を低下させることができるが、複数のアプリケーションを並行して実行する場合にTLBミスヒットの発生率が増加するおそれがある。
【0008】
かかる点に鑑みて、本発明は、複数のアプリケーションを並行して実行する場合でもTLBミスヒットの発生率を低減することを課題とする。
【課題を解決するための手段】
【0009】
上記課題を解決するため本発明によって次のような解決手段を講じた。すなわち、機械語プログラムを実行するプログラム実行装置は、機械語コードと、当該機械語コードに従ってアクセスされる論理アドレス範囲と当該論理アドレス範囲へのアクセス頻度とが対応付けられたアクセス頻度情報とを含む機械語プログラムを読み込むプログラムロード部と、論理アドレス範囲と物理アドレス範囲との対応関係を表すエントリを有するアドレス変換テーブルを作成するアドレス変換テーブル作成部と、アドレス変換テーブルのエントリのうち、機械語コードに従ってアクセスされる論理アドレス範囲が格納されたエントリをTLBに登録するTLB登録部とを備えている。そして、アドレス変換テーブル作成部は、アクセス頻度情報に基づいてアクセス頻度が高いと判断した論理アドレス範囲が格納されるエントリのサイズを当該論理アドレス範囲に応じたサイズに設定する。
【0010】
これによると、アドレス変換テーブル作成部は、アドレス変換テーブルのエントリのうち、アクセス頻度の高い論理アドレス範囲を格納するエントリのサイズを、その論理アドレス範囲に応じたサイズに設定することができる。そして、TLB登録部によって、TLBにアドレス変換テーブルのエントリが登録される。これにより、アクセス頻度が高い論理アドレス範囲が格納されるTLBエントリのサイズは、その論理アドレス範囲に応じたサイズに設定される。つまり、複数のアプリケーションによって複数の論理アドレス範囲にアクセスされる場合でも、複数の論理アドレス範囲のうちアクセス頻度が高い論理アドレス範囲が格納されるTLBエントリのサイズが大きくなるように設定される。したがって、TLBを効率良く利用することができるため、TLBミスヒットを抑制することができる。
【0011】
好ましくは、アドレス変換テーブル作成部は、アドレス変換テーブルのエントリのうちアクセス頻度が高い論理アドレス範囲が格納されるエントリをロック候補に設定するものであり、TLB登録部は、アドレス変換テーブルのエントリのうちロック候補のエントリをTLBのロック領域に登録する。
【0012】
これによると、アクセス頻度が高い論理アドレス範囲が格納されるTLBエントリがロックされるため、当該TLBエントリの内容が変更されなくなる。そのため、TLBミスヒットをさらに抑制することができる。
【0013】
また、上記課題を解決するために本発明が講じた手段として、ソースプログラムをコンパイルして機械語コードを生成するコンパイラシステムは、ソースプログラムを解析して、ソースプログラム内の少なくとも1つの変数によってアクセスされる論理アドレス範囲へのアクセス頻度を取得するアクセス頻度解析部と、論理アドレス範囲とアクセス頻度とを対応付けてアクセス頻度情報を生成し、アクセス頻度情報と機械語コードとを含む機械語プログラムを出力する出力部とを備えている。
【0014】
これによると、コンパイラシステムによって、アクセス頻度情報と機械語コードとを含む機械語プログラムが生成される。そして、この機械語プログラムに含まれる機械語コードを上記プログラム実行装置で実行する場合にTLBミスヒットが抑制されるため、機械語コードの実行速度を向上させることができる。
【発明の効果】
【0015】
本発明によると、複数のアプリケーションを並行して実行する場合でもTLBミスヒットの発生率を低減することができる。
【図面の簡単な説明】
【0016】
図1図1は、本発明の一実施形態に係るプログラム実行装置を備えたアドレス変換装置の構成図である。
図2図2は、アドレス変換テーブルとTLBとの関係を示す図である。
図3図3は、アドレス変換テーブル作成部の処理の例を示すフローチャートである。
図4図4は、TLB登録部の処理の例を示すフローチャートである。
図5図5は、本発明の一実施形態に係るコンパイラシステムの構成を示すブロック図である。
図6図6は、図5のコンパイラシステムに入力される高級言語プログラムの例である。
図7図7は、図5のコンパイラシステムによって生成される機械語コードおよびアクセス頻度情報の例である。
図8図8は、アクセス頻度解析部の処理の例を示すフローチャートである。
図9図9は、アクセス頻度が算出される過程で使用されるテーブルである。
図10図10は、従来のアドレス変換装置の構成図である。
【発明を実施するための形態】
【0017】
図1は、本発明の一実施形態に係るプログラム実行装置を備えたアドレス変換装置の構成図である。図1に示すアドレス変換装置は、CPU3およびプログラム実行装置であるオペレーティングシステム(以下、OSと称する。)10で構成することができる。
【0018】
CPU3は、論理アドレス空間1内の論理アドレスを物理アドレス空間2内の物理アドレスに変換するTLB5が内蔵されたMMU4を備えている。TLB5は、論理アドレスと物理アドレスとページサイズとが対応付けられたエントリを有する。すなわち、TLB5のエントリには、ページサイズで示されるサイズの論理アドレス範囲と物理アドレス範囲とが格納可能である。本実施形態では、TLB5のエントリを更新等する処理はOS10のソフトウェア処理によって行われるものとする。
【0019】
OS10は、機械語プログラム20を読み込んで実行する。具体的に、OS10は、プログラムロード部11と、アドレス変換テーブル作成部12と、アドレス変換テーブル13と、TLB登録部14とを備えている。プログラムロード部11は、機械語プログラム20をロードして、実行可能ファイルである機械語コード21を図示しないプログラム実行部に出力する一方、アクセス頻度情報22をアドレス変換テーブル作成部12に出力する。プログラムロード部11は、複数の機械語プログラム20を並行してロードすることが可能である。アクセス頻度情報22とは、機械語コード21によってアクセスされる、少なくとも1つの論理アドレス範囲とその論理アドレス範囲へのアクセス頻度との関係を示す情報である。
【0020】
アドレス変換テーブル作成部12は、論理アドレス空間1内の論理アドレスと、物理アドレス空間2内の物理アドレスと、ページサイズとが対応付けられたエントリを有するアドレス変換テーブル13を作成する。すなわち、アドレス変換テーブル13のエントリには、ページサイズで示されるサイズの論理アドレス範囲と物理アドレス範囲とが格納可能である。また、アドレス変換テーブル作成部12は、アクセス頻度情報22に基づいて、論理アドレス範囲へのアクセス頻度が高いかどうかを判断する。アドレス変換テーブル作成部12は、例えば、論理アドレス範囲へのアクセス頻度が、相対的に高いかどうか、あるいは閾値よりも高いかどうかで判断することができる。そして、アドレス変換テーブル作成部12は、論理アドレス範囲へのアクセス頻度が高いと判断した場合、アドレス変換テーブル13のエントリのうち、その論理アドレス範囲が格納されるエントリのページサイズをその論理アドレス範囲に応じたサイズにする。これにより、アドレス変換テーブルが最適化される。アドレス変換テーブル作成部12は、アドレス変換テーブル13のエントリがアクセス頻度の昇順あるいは降順となるようにアドレス変換テーブル13を作成してもよい。
【0021】
TLB登録部14は、アドレス変換テーブル13のエントリのうち、機械語コード21に従ってアクセスされる論理アドレス範囲が格納されたエントリをTLB5に登録する。つまり、TLBエントリのうち、アクセス頻度が高い論理アドレス範囲が格納されるエントリのページサイズが論理アドレス範囲に応じた大きさに設定されることになる。
【0022】
アドレス変換テーブル作成部12は、アクセス頻度情報22に基づいて、機械語コード21の実行時にアクセスされる論理アドレス範囲のうち、最もアクセス頻度が高い論理アドレス範囲を検出し、当該論理アドレス範囲が格納されたエントリをロック候補に設定してもよい。具体的に、図2に示すように、アドレス変換テーブル13に、エントリがロック候補であるかどうかを示すロック候補フラグを追加する。そして、アドレス変換テーブル作成部12は、アドレス変換テーブル13のエントリをロック候補にする場合にロック候補フラグを例えば‘1’に設定し、ロック候補ではないエントリのロック候補フラグを例えば‘0’に設定する。TLB登録部14は、アドレス変換テーブル13のエントリのうち、ロック候補フラグが‘1’であるエントリに格納された論理アドレス範囲と物理アドレス範囲とをTLB5のロック領域に登録する。また、TLB登録部14は、アドレス変換テーブル13のエントリのうち、ロック候補フラグが‘0’であるエントリをTLB5の非ロック領域に登録する。ここで、ロック領域とは、TLB5のエントリのうち、新たに登録されるエントリによる上書きが禁止されているエントリである。
【0023】
次に、アドレス変換テーブル作成部12における処理例を図3を参照して説明する。なお、機械語コード21に従って複数の論理アドレス範囲がアクセスされているときにページフォルトが発生した場合を例に挙げる。ページフォルトは、アドレス変換テーブル13において、アクセスされた論理アドレス範囲が物理アドレス範囲にマッピングされていないときに発生する。
【0024】
まず、ページフォルトが発生したときに、アクセス頻度情報22に基づいて、機械語コード21に従ってアクセスされた論理アドレス範囲がアクセス頻度の高い論理アドレス範囲かどうかが判断される(S301)。アクセス頻度の高い論理アドレス範囲である場合(S301のYes肢)、その論理アドレス範囲を格納できるサイズでかつ最小となるページサイズが選択される。ページサイズとして、例えば、4KB,8KB,16KB,32KBのいずれかが選択可能である場合、アクセス頻度の高い論理アドレス範囲が10KBの場合は16KBのページサイズが選択される。そして、物理アドレス空間1から、選択されたページサイズ分の物理アドレスが取得されてアドレス変換テーブル13のエントリに格納される(S302)。これにより、ページフォルトに係る論理アドレス範囲が物理アドレス範囲にマッピングされる。
【0025】
その後、機械語コード21に従ってアクセスされた複数の論理アドレス範囲のうち、ページフォルトが発生したときにアクセスされた論理アドレス範囲が、最もアクセス頻度の高い論理アドレス範囲であるかどうかが判断される(S303)。その論理アドレス範囲が最もアクセス頻度の高い論理アドレス範囲である場合(S303のYes肢)、その論理アドレス範囲が格納されたエントリはロック候補となる(S304)。つまり、そのエントリのロック候補フラグに‘1’が設定される。また、ページフォルトが発生したときにアクセスされた論理アドレス範囲が最もアクセス頻度の高い論理アドレス範囲でない場合(S303のNo肢)、そのアドレス範囲が格納されたエントリのロック候補フラグに‘0’が設定される。
【0026】
一方、ページフォルトが発生したときに、機械語コード21に従ってアクセスされた論理アドレス範囲のアクセス頻度が高くない場合(S301のNo肢)、デフォルトのページサイズとして例えば4KBが選択される(S305)。
【0027】
以上のように、アドレス変換テーブル13のエントリのうち、アクセス頻度の高い論理アドレス範囲が格納されるエントリのページサイズが大きくなるため、内部フラグメンテーションが発生しにくくなる。なお、S303およびS304において、最もアクセス頻度の高い論理アドレス範囲が格納されるエントリをロック候補にするようにしたが、論理アドレス範囲へのアクセス頻度が閾値以上の場合に、その論理アドレス範囲が格納されるエントリをロック候補にしてもよい。
【0028】
次に、TLB登録部14における処理例を図4を参照して説明する。まず、TLB登録部14によって、アドレス変換テーブル13のロック候補フラグが参照されて、アドレス変換テーブル13のエントリのうちTLB5に登録すべきエントリがロック候補であるかどうかが判断される(S401)。ロック候補である場合(S401のYes肢)、TLB5のロック領域に空きがあるかどうかが判断される(S402)。TLB5のロック領域に空きがある場合(S402のYes肢)、TLB5のロック領域にアドレス変換テーブル13のロック候補のエントリが登録される(S403)。ロック候補のエントリが複数存在する場合は、TLB登録部14の処理順でロック候補のエントリがTLB5のロック領域に登録されるようにしてもよい。TLB5のロック領域に空きがない場合(S402のNo肢)、アドレス変換テーブル13のロック候補のエントリはTLB5の非ロック領域に登録される(S404)。
【0029】
一方、TLB5に登録すべきアドレス変換テーブル13のエントリがロック候補でない場合(S401のNo肢)、そのエントリはTLB5の非ロック領域に登録される(S404)。
【0030】
以上、本実施形態に係るOS10によると、アクセスされる論理アドレス範囲の数が増加しても、頻繁にアクセスされる論理アドレス範囲が格納されるTLBエントリのみ、そのページサイズが大きくなるため、TLB5を効率良く利用することができる。したがって、TLBミスヒットを抑制することができる。さらに、アクセス頻度の高い論理アドレス範囲が格納されるTLBエントリをロックすることで、当該論理アドレス範囲へのアクセス時に必ずTLBヒットになる。
【0031】
なお、OS10における機械語コード21の処理が終了した場合、TLB登録部14は、TLB5のロック領域に登録されているエントリのうち機械語コード21の実行中に参照されていたエントリを非ロック領域に移動することが好ましい。この場合、アドレス変換テーブル作成部12は、TLB5の非ロック領域に移動されたエントリに相当するアドレス変換テーブル13のエントリをロック候補から非ロック候補に変更する。
【0032】
図5は、図1に示す機械語プログラム20を生成するコンパイラシステムの構成を示すブロック図である。図5に示すコンパイラシステム30は、ソースプログラムである高級言語プログラム27をコンパイルして機械語プログラム20を生成する。コンパイラシステム30は、構文解析部31と、最適化部32と、コード生成部34と、出力部35とで構成することができる。
【0033】
構文解析部31は、図6に示すC言語等で記述された高級言語プログラム27をトークンに分解し、分解したトークンに基づいて高級言語プログラム27の構造を解析して中間コードを生成する。
【0034】
図5に戻り、最適化部32は、機械語コード21の実行時間等が最小化されるように中間コードを効率の高いコードに変換する。また、最適化部32は、アクセス頻度解析部33を備えている。アクセス頻度解析部33は、図6に示す高級言語プログラム27内で用いられる変数a,b,cのそれぞれに関する情報を抽出する。具体的に、各変数a,b,cの先頭アドレスおよびサイズに基づいて、各変数a,b,cによってアクセスされる論理アドレス範囲を取得する。また、アクセス頻度解析部33は、各変数a,b,cが、取得された論理アドレス範囲にアクセスする頻度を算出する。なお、アクセス頻度解析部33を最適化部32の外部に設けてもよい。この場合、最適化部32を省略してもよい。
【0035】
図5に戻り、コード生成部34は、機械語コード21を生成する。出力部35は、論理アドレス範囲とアクセス頻度との対応付けを行ってアクセス頻度情報22を生成し、図7に示すような機械語コード21とアクセス頻度情報22とからなる機械語プログラム20を出力する。ここで、図7に示すアクセス頻度情報22のうち、符号23は高級言語プログラム27内の各変数a,b,c,の先頭アドレスを表す。符号24は、各変数a,b,cのサイズを表す。符号25は、各変数a,b,cのアクセス頻度を表す。各変数a,b,cの先頭アドレス23およびサイズ24で示される内容が論理アドレス範囲である。出力部35は、アクセス頻度情報22を機械語プログラム20から分離して別ファイルに出力してもよい。
【0036】
次に、アクセス頻度解析部33によってアクセス頻度25が算出されるときの処理例を図8および図9を参照して説明する。
【0037】
まず、高級言語プログラム27内の関数のうち、図9(A)に示すテーブル36に未登録の関数があるかどうかが判断される(S801)。テーブル36に未登録の関数がある場合(S801のYes肢)、その関数名とその関数が呼び出される合計回数とがテーブル36に登録される(S802)。例えば、図6の場合、高級言語プログラム27内で関数func1は1回のみ呼び出されるため、呼び出される合計回数は‘1’となる。そして、高級言語プログラム27内の関数において用いられる変数と、その変数がループ処理内に出現する場合にはそのループのネスト数とが、関数名に関連付けられて図9(B)に示すテーブル37に登録される(S803)。例えば、図6の場合、関数func1内で変数aが出現する位置におけるループのネスト数は‘1’であるため、関数func1に「(a,1)」が関連付けられてテーブル37に登録される。以後、S801の処理に戻り、S801からS803の処理が繰り返される。以上により、テーブル36,37が作成される。なお、変数がループ処理以外の箇所に出現する場合、ネスト数を‘1’とすればよい。
【0038】
一方、テーブル36に未登録の関数がない場合(S801のNo肢)、テーブル36,37に基づいてアクセス頻度が算出される(S804)。具体的に、テーブル36およびテーブル37に共通する関数名について、テーブル36の関数が呼び出される回数に対する重みを表すパラメータをm、テーブル37のループネスト数に対する重みを表すパラメータをnとすると、アクセス頻度fは、f=テーブル36の関数が呼び出される回数×m+テーブル37のループネスト数×nで表される計算式で算出することができる。
【0039】
したがって、図6に示す高級言語プログラム27内で用いられる変数a,b,cのそれぞれのアクセス頻度fa,fb,fcは、テーブル36,37より、
fa=1×m+1×n=m+n
fb=1×m+2×n=m+2n
fc=2×m+2×n=2m+2n
のように算出することができる。そして、各変数a,b,cと各変数のアクセス頻度とが図9(C)に示すテーブル38に登録される。ここで、図7に示すアクセス頻度25は、パラメータm=10,パラメータn=20として、
fa=m+n=10+20=30
fb=m+2n=10+2×20=50
fc=2m+2n=2×10+2×20=60
のように算出された値である。
【0040】
以上、本実施形態に係るコンパイラシステム30で生成された機械語プログラム20を図1に示すOS10で実行する際に、TLBミスヒットを極力少なくすることができる。
【0041】
一般に、高級言語プログラムにおいて、変数が出現するループのネスト数および変数が用いられる関数が呼び出される回数は静的であることが多く、ループ回数は動的であることが多い。ループのネスト数および関数の呼び出し回数の増加はアクセス頻度25の増加につながることから、これらに基づいてアクセス頻度25を算出することが好ましいが、関数の呼び出し回数のみに基づいてアクセス頻度25を算出してもよい。また、パラメータmおよびパラメータnの値は任意である。
【0042】
なお、高級言語プログラムにおいて、変数が出現するループのループ回数が静的である場合には、そのループ回数をアクセス頻度25としてもよい。また、コンパイラシステム30は、関数の呼び出し回数およびループのネスト数の他に、アクセス頻度25の増減に影響を与える動的情報をプロファイル等から読み込んでアクセス頻度25を算出してもよい。
【産業上の利用可能性】
【0043】
本発明に係るプログラム実行装置は、デジタル家電等に搭載されるオペレーティングシステムのパフォーマンスの向上に有用である。
【符号の説明】
【0044】
10 プログラム実行装置(OS)
11 プログラムロード部
12 アドレス変換テーブル作成部
14 TLB登録部
30 コンパイラシステム
33 アクセス頻度解析部
35 出力部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10