(57)【要約】【課題】  キャッシュミスの発生回数を効果的に減少させることができないという課題を解決するコンピュータシステム、カーネル構築方法を提供する。【解決手段】  カーネルの構築を実行するコンピュータシステムにおいて、カーネルモジュールを構成するシンボルを、シンボルの主記憶装置４０へのメモリ参照頻度に基づいて、キャッシュメモリ３０のキャッシュライン内に配置する。【選択図】  図１
2009116591.tif 000002
【特許請求の範囲】
【請求項１】
カーネルの構築を実行するコンピュータシステムにおいて、
カーネルモジュールを構成するシンボルを、前記シンボルの主記憶装置へのメモリ参照頻度に基づいて、キャッシュメモリのキャッシュライン内に配置することを特徴とするコンピュータシステム。
【請求項２】
システム運用中に前記シンボルによる前記主記憶装置へのメモリ参照頻度を記録するメモリ参照頻度記憶装置と、
前記メモリ参照頻度記憶装置の前記メモリ参照頻度に基づいて、前記メモリ参照頻度の高い前記シンボルから順に前記キャッシュメモリのキャッシュライン内に配置するカーネル構築部を備えることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記メモリ参照頻度記憶装置は、
プロセッサによる前記主記憶装置へのメモリ参照アドレスがどのシンボルに属するかを判定するアドレス判定回路と、
前記アドレス判定回路で判定したシンボルのメモリ参照頻度を記憶する頻度記憶回路を備えることを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記アドレス判定回路は、各前記シンボルをどのアドレスに配置したかを記録したカーネル構築情報を参照して、前記メモリ参照アドレスがどのシンボルに属するかを判定することを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記カーネル構築部は、
前記メモリ参照頻度記憶装置に記録された前記シンボルのメモリ参照頻度を取り出してシンボル毎のメモリ参照頻度の履歴を作成し、当該履歴に基づいて、メモリ参照頻度の高い順にシンボル名を並べたシンボルリストを作成し、
前記シンボルリストを参照し、メモリ参照頻度の高いシンボルが順に前記キャッシュメモリの同じキャッシュライン内に収まるように配置することにより、前記カーネルモジュールをリンクして前記カーネルを構築することを特徴とする請求項２から請求項４の何れかに記載のコンピュータシステム。
【請求項６】
前記カーネル構築部は、前記カーネルを構築した際に前記カーネル構築情報を更新することを特徴とする請求項５に記載のコンピュータシステム。
【請求項７】
コンピュータシステムにおけるカーネルの構築を行うカーネル構築方法であって、
カーネルモジュールを構成するシンボルを、前記シンボルの主記憶装置へのメモリ参照頻度に基づいて、キャッシュメモリのキャッシュライン内に配置するステップを含むことを特徴とするカーネル構築方法。
【請求項８】
システム運用中に前記シンボルによる前記主記憶装置へのメモリ参照頻度を記録するステップと、
前記メモリ参照頻度に基づいて、前記メモリ参照頻度の高い前記シンボルから順に前記キャッシュメモリのキャッシュライン内に配置するステップを含むことを特徴とする請求項７に記載のカーネル構築方法。
【請求項９】
前記メモリ参照頻度を記憶するステップが、
プロセッサによる前記主記憶装置へのメモリ参照アドレスがどのシンボルに属するかを判定するアドレス判定ステップと、
前記アドレス判定ステップで判定したシンボルのメモリ参照頻度を記憶する頻度記憶ステップを含むことを特徴とする請求項８に記載のカーネル構築方法。
【請求項１０】
前記アドレス判定ステップで、各前記シンボルをどのアドレスに配置したかを記録したカーネル構築情報を参照して、前記メモリ参照アドレスがどのシンボルに属するかを判定することを特徴とする請求項９に記載のカーネル構築方法。
【請求項１１】
前記カーネル構築ステップが、
前記シンボルのメモリ参照頻度を参照してシンボル毎のメモリ参照頻度の履歴を作成し、当該履歴に基づいて、メモリ参照頻度の高い順にシンボル名を並べたシンボルリストを作成するステップと、
前記シンボルリストを参照し、メモリ参照頻度の高いシンボルが順に前記キャッシュメモリの同じキャッシュライン内に収まるように配置することにより、前記カーネルモジュールをリンクして前記カーネルを構築するステップを含むことを特徴とする請求項８から請求項１０の何れかに記載のカーネル構築方法。
【請求項１２】
前記カーネル構築ステップが、前記カーネルを構築した際に前記カーネル構築情報を更新するステップを含むことを特徴とする請求項１１に記載のカーネル構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを使用するコンピュータシステムにおいてカーネルを構築するシステムに関し、特にキャッシュスラッシングの発生を抑制するカーネルを構築するコンピュータシステムとカーネル構築方法に関する。
【背景技術】
【０００２】
キャッシュメモリを使用したシステムでは、タグは異なるが同じキャッシュラインに配置されるメモリ領域を交互にアクセスした場合、アクセスの度に発生するキャッシュミスにより性能が劣化する、いわゆるキャッシュスラッシングという問題が発生する。
【０００３】
このような問題に対処するため、例えば、特許文献１（特開平１０−２８９０９７号公報）には、メモリ参照頻度に従って、図６で示すようにカーネルを構成するモジュール単位で単純に先頭からキャッシュメモリに配置することにより、キャッシュスラッシングの発生をできるだけ抑えるようにしたシステムが開示されている。
【０００４】
この特許文献１に記載の方法では、単純に参照頻度の高いモジュール単位でキャッシュメモリに配置するだけであり、キャッシュラインを考慮した配置は行っていない。
【特許文献１】特開平１０−２８９０９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１等で提案されるこれまでのカーネル構築方法では、サイズの大きなモジュールの参照頻度の高い関数（命令）が異なるキャッシュラインに分割されて配置されてしまう可能性があり、必ずしも同じキャッシュラインに配置されているとは限らないため、キャッシュミスの発生回数を効果的に減少させることができないという問題がある。
【０００６】
その理由は、特許文献１に記載の方法では、図６に示すようにキャッシュラインを考慮することなく、単純にメモリ参照頻度の高いモジュール単位で配置する方法を採用しているからである。
【０００７】
（発明の目的）
本発明の目的は、上述したキャッシュミスの発生回数を効果的に減少させることができないという課題を解決するコンピュータシステム、カーネル構築方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のコンピュータシステムは、カーネルの構築を実行するコンピュータシステムにおいて、カーネルモジュールを構成するシンボルを、前記シンボルの主記憶装置へのメモリ参照頻度に基づいて、キャッシュメモリのキャッシュライン内に配置する。
【０００９】
本発明のカーネル構築方法は、コンピュータシステムにおけるカーネルの構築を行うカーネル構築方法であって、カーネルモジュールを構成するシンボルを、前記シンボルの主記憶装置へのメモリ参照頻度に基づいて、キャッシュメモリのキャッシュライン内に配置するステップを含む。
【発明の効果】
【００１０】
本発明によれば、シンボルへの参照におけるキャッシュミスの発生を大幅に抑えることができる。
【発明を実施するための最良の形態】
【００１１】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１２】
（実施の形態の構成）
図１は、本発明の実施の形態によるカーネル構築システムの構成を示すブロック図である。
図１において、本実施の形態によるコンピュータシステムは、プロセッサ１０と、メモリ参照頻度記憶装置２０と、キャッシュメモリ３０と、主記憶装置４０と、カーネルの構築を実行するカーネル構築部５０と、外部記憶装置６０とを含む。
【００１３】
このシステムにおいては、プロセッサ１０は、プログラム制御により種々の目的に応じた演算処理を実行し、主記憶装置４０に対してアクセスする場合、必ずキャッシュメモリ３０を経由してアクセスを行う構成となっている。
【００１４】
主記憶装置４０へのアクセスは、プロセッサ１０とキャッシュメモリ３０との間に位置するメモリ参照頻度記憶装置２０を経由することとなり、これにより、メモリ参照頻度記憶装置２０は、プロセッサ１０から主記憶装置４０へのアクセスを漏らさず管理することができる。
【００１５】
メモリ参照頻度記憶装置２０は、図示のように、アドレス判定回路２１と、頻度記憶回路２２を備えている。
【００１６】
アドレス判定回路２１は、プロセッサ１０がアクセスした主記憶装置４０へのアクセスアドレスが、カーネルモジュールのどのシンボル（関数（命令）もしくはデータ）に属しているかを判定すると共に、頻度記憶回路２２に記憶されているそのシンボルのメモリ参照頻度を更新する機能を実行する。このアドレス判定回路２１は、例えば、プロセッサ１０（又は他のＣＰＵ）で動作するプログラムによってソフトウェア的に実現することが可能である。
【００１７】
頻度記憶部２２は、例えばＲＡＭその他の半導体メモリで実現され、アドレス判定部２１により判定されたシンボル毎のメモリ参照頻度を記憶する。従って、プロセッサ１０から主記憶装置４０へのアクセスが行われる度に、アドレス判定部２１によって参照アドレスが属するシンボルの判定が行われ、頻度記憶部２２に記憶されているシンボルのメモリ参照頻度が更新される。
【００１８】
主記憶装置４０は、シンボル参照頻度履歴４１と、シンボルリスト４２を記憶している。
【００１９】
シンボル参照頻度履歴４１は、頻度記憶回路２２とカーネル構築情報６２より得られるシンボルの参照頻度を示す履歴データであり、シンボルリスト４２は、シンボルの参照頻度順位を示すデータである。
【００２０】
カーネル構築部５０は、新たにカーネルを構築する際に、メモリ参照頻度記憶装置２０の頻度記憶回路２２と外部記憶装置６０のカーネル構築情報６２に基づいてシンボル参照頻度履歴４１及びシンボルリスト４２を作成し、シンボルリスト４２を元に外部記憶装置６０に新しいカーネル６１とカーネル構築情報６２を作成する。
【００２１】
カーネル構築部５０は、例えば、プロセッサ１０（又は他のＣＰＵ）で動作するプログラムによってソフトウェア的に実現することが可能である。
【００２２】
ハードディスク等によって実現される外部記憶装置６０は、カーネル６１と、カーネル構築情報６２を格納する。
【００２３】
カーネル６１は、システム稼働時に得られたメモリ参照頻度を元に作成される。カーネル構築情報６２には、どのシンボルをどのアドレスに配置したのかが記録されている。どちらもカーネル構築部５０によって作成される。
【００２４】
（実施の形態の動作）
次に、図１、図２及び図３を参照して、本実施の形態の動作について説明する。
【００２５】
図２は、カーネル構築システムにおける主記憶装置へのメモリ参照頻度の更新処理を説明するフローチャートである。
【００２６】
システム稼働中において、プロセッサ１０が主記憶装置４０へのメモリ参照（アクセス）を行うと（ステップ３０１）、メモリ参照頻度記憶装置２０のアドレス判定回路２１が、外部記憶装置６０内のカーネル構築情報６２を参照して、主記憶装置４０に対するアクセスアドレスがどのシンボル（関数（命令）もしくはデータ）に属するのかを判定する（ステップ３０２）。
【００２７】
シンボルが判定されると、頻度記憶回路２２は、記憶している当該シンボルのメモリ参照頻度を記録し更新する（ステップ３０３）。
【００２８】
図３は、カーネル構築システムにおけるカーネルの再作成を行う場合の動作を示すフローチャートである。
カーネルの再作成を行う場合、カーネル構築部５０は、まず、システム稼働時にメモリ参照頻度記憶装置２０が記録していたシンボルのメモリ参照頻度を頻度記憶回路２２から読み出し、主記憶装置４０内にシンボル参照頻度履歴４１を作成する（ステップ４０１）。
【００２９】
次に、作成したシンボル参照頻度履歴４１から、メモリ参照頻度の高い順にシンボル名を並べることにより、主記憶装置４０内にシンボルリスト４２を作成する（ステップ４０２）。
【００３０】
最後に、シンボルリスト４２に従い、メモリ参照頻度の高い順に、シンボルをキャッシュメモリ３０のキャッシュライン内に配置してカーネルモジュールをリンクすることにより、新しいカーネル６１を作成する（ステップ４０３）。
【００３１】
この場合、メモリ参照頻度の高いシンボルが、キャッシュメモリ３０の同一のキャッシュライン内に収まるように配置する。
【００３２】
このとき、どのモジュールをどのアドレスに配置したかを記録する外部記憶装置６０内のカーネル構築情報６２も更新する（ステップ４０４）。
【００３３】
（実施の形態による効果）
上述した本発明の実施の形態によれば、コンピュータシステムの稼働中にプロセッサ１０から主記憶装置４０へのアクセスを監視し、シンボル毎のメモリ参照頻度を管理し、モジュール単位ではなくシンボル（関数（命令）もしくはデータ）単位のメモリ参照頻度順に従って、キャッシュライン内にシンボルを配置してカーネルモジュールをリンクするため、メモリ参照頻度の高いシンボル（関数（命令）もしくはデータ）が１箇所にまとめられる。このため、各シンボルはメモリ参照頻度に応じて異なるキャッシュラインに配置されるようになる。
【００３４】
よって、ひとつのシンボル（関数（命令）もしくはデータ）を同一キャッシュライン内に収まるように配置するため、そのシンボルへの参照におけるキャッシュミスの発生回数を大幅に減らすことが可能となる。
【実施例】
【００３５】
以下、上述した本実施の形態によるカーネル構築システムによってカーネルの構築を行った場合の実施例について、図４及び図５を参照して説明する。
【００３６】
図４を参照すると、モジュールＡ，Ｂ，Ｃをリンクしてカーネルが作成される場合を示している。ここで、モジュールＡは、関数（命令）もしくはデータである、シンボルＡ１、Ａ２、モジュールＢは、シンボルＢ１、Ｂ２、モジュールＣは、シンボルＣ１からそれぞれ構成されている。
【００３７】
上述したように、カーネル構築部５０が、メモリ参照頻度記憶装置２０の頻度記憶回路２２に記録された各シンボルのメモリ参照頻度から、メモリ参照頻度の高い順にシンボル名を並べて作成したシンボルリスト４２を作成する。
【００３８】
この実施例では、シンボルＡ１〜Ｃ１のうち、メモリ参照頻度が最も高いシンボルがシンボルＢ２であり、メモリ参照頻度の高い順として、シンボルＢ２、Ａ１、Ｂ１、Ｃ１、Ａ２の順に並べたシンボルリスト４２が作成されることになる。この場合のシンボルリスト４２の例を図５に示す。
【００３９】
このようにして作成されたシンボルリスト４２に従って、シンボル（関数（命令）もしくはデータ）のメモリ参照頻度順位の順にモジュールをリンクする。この場合、ひとつのシンボルがキャッシュメモリ３０の同一キャッシュライン内に収まるように配置する。なお、シンボルの大きさがキャッシュラインサイズよりも大きい場合はこの限りではない。
【００４０】
上述のようにモジュールのリンクを行うことにより、図４のように作成されたカーネルは、先頭からモジュールＢ２，Ａ１，Ｂ１，Ｃ１，Ａ２の順に、それぞれキャッシュライン（１）〜（３）内に配置される。
【００４１】
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施の形態によるコンピュータシステムの構成を示すブロック図である。
【図２】本発明の実施の形態によるコンピュータシステムにおける主記憶装置へのメモリ参照頻度の更新処理を説明するフローチャートである。
【図３】本発明の実施の形態によるコンピュータシステムにおけるカーネルの再作成を行う場合の動作を示すフローチャートである。
【図４】本実施の形態によるコンピュータシステムによってカーネルの構築を行った場合の実施例を示す図である。
【図５】図４に示す実施例によるシンボルリストの構成例を示す図である。
【図６】特許文献１記載のシステムにおいてカーネルの構築を行った場合の例を示す図である。
【符号の説明】
【００４３】
１０：プロセッサ
２０：メモリ参照頻度記憶装置
２１：アドレス判定回路
２２：頻度記憶回路
３０：キャッシュメモリ
４０：主記憶装置
４１：シンボル参照頻度履歴
４２：シンボルリスト
５０：カーネル構築部
６０：外部記憶装置
６１：カーネル
６２：カーネル構築情報
【図１】
2009116591.tif 000003
【図２】
2009116591.tif 000004
【図３】
2009116591.tif 000005
【図４】
2009116591.tif 000006
【図５】
2009116591.tif 000007
【図６】
2009116591.tif 000008