(57)【要約】【課題】効率的なメモリアクセスを行う。【解決手段】アクセス頻度通知部２００が、ＣＰＵ１００から主記憶４００−１〜４００−２へのアクセス頻度を、主記憶４００−１〜４００−２にあらかじめ設定されたアドレスごとに監視し、監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがある場合、ＣＰＵ１００へ通知を行い、そのアドレスをレジスタに保持し、アクセス頻度通知部２００からＣＰＵ１００へ通知があった場合、割り当て変更部３００が、レジスタに保持されているアドレスに基づいて、ＣＰＵ１００における主記憶４００−１〜４００−２のアドレスの割り当てを変更する。【選択図】図１
2011164669.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵから複数の記憶媒体へのアクセスを制御するメモリアクセス制御システムであって、
前記ＣＰＵから前記複数の記憶媒体へのアクセス頻度を、前記複数の記憶媒体にあらかじめ設定されたアドレスごとに監視し、該監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがある場合、前記ＣＰＵへ所定の通知を行い、該アドレスをレジスタに保持するアクセス頻度通知部と、
前記アクセス頻度通知部から前記ＣＰＵへ前記通知があった場合、前記レジスタに保持されているアドレスに基づいて、前記ＣＰＵにおける前記複数の記憶媒体のアドレスの割り当てを変更する割り当て変更部とを有するメモリアクセス制御システム。
【請求項２】
請求項１に記載のメモリアクセス制御システムにおいて、
前記アクセス頻度通知部は、前記ＣＰＵと前記複数の記憶媒体とを接続するアドレスバスと接続され、該アドレスバスから前記ＣＰＵから前記記憶媒体へ出力されるアドレスを取得することにより、前記アドレスごとのアクセス頻度を監視することを特徴とするメモリアクセス制御システム。
【請求項３】
請求項２に記載のメモリアクセス制御システムにおいて、
前記アクセス頻度通知部は、
前記アドレスバスから前記アドレスを取得するアドレス情報取得部と、
前記アドレス情報取得部が取得した前記アドレスに基づいて、アクセス頻度が前記頻度閾値を超えたアドレスがあるかどうかを判断する通知判断部と、
前記通知判断部が前記アクセス頻度が前記頻度閾値を超えたアドレスがあると判断した場合、前記通知を行う通知部と、
前記レジスタとを有することを特徴とするメモリアクセス制御システム。
【請求項４】
請求項１に記載のメモリアクセス制御システムにおいて、
前記アクセス頻度通知部は、前記ＣＰＵへ割り込み通知を行うための割り込み信号を用いて、前記通知を行うことを特徴とするメモリアクセス制御システム。
【請求項５】
請求項１に記載のメモリアクセス制御システムにおいて、
前記割り当て変更部は、前記通知があった場合、前記レジスタに保持されたアドレスが割り当てられた記憶媒体へのＣＰＵからのアクセス速度よりも速いアクセス速度でアクセス可能な記憶媒体へ該アドレスの割り当てを変更することを特徴とするメモリアクセス制御システム。
【請求項６】
ＣＰＵから複数の記憶媒体へのアクセスを制御するメモリアクセス制御方法であって、
前記ＣＰＵから前記複数の記憶媒体へのアクセス頻度を、前記複数の記憶媒体にあらかじめ設定されたアドレスごとに監視する処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあるかどうかを判断する処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあると判断した場合、前記ＣＰＵへ所定の通知を行う処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあると判断した場合、該アドレスをレジスタに保持する処理と、
前記ＣＰＵへ前記通知があった場合、前記レジスタに保持されているアドレスに基づいて、前記ＣＰＵにおける前記複数の記憶媒体のアドレスの割り当てを変更する処理とを有するメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵから複数の記憶媒体へのアクセスを制御するメモリアクセス制御システムおよびメモリアクセス制御方法に関する。
【背景技術】
【０００２】
一般的に、マイクロプロセッサ（以下、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と称する）を複数搭載したコンピュータ装置では、対称型マルチプロセッサ（ＳＭＰ）が多い。これは、各ＣＰＵから記憶媒体である主記憶へのアクセス速度は同じである。
【０００３】
しかし、ＣＰＵの数が増えるにしたがって、セルアーキテクチャのような主記憶へのアクセス速度が一定でないＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）と呼ばれるアーキテクチャのコンピュータ装置が現れた。
【０００４】
セルアーキテクチャのコンピュータでメモリアクセス速度に関するチューニングを行う場合、ローカルメモリを確保するサービスをオペレーティングシステムが提供し、それをアプリケーションプログラムが利用する必要がある。そのため、アプリケーションプログラムを作成する際に、特にセルアーキテクチャに対応したプログラミングが必要である。この場合、セルアーキテクチャに対応していないプログラムではメモリアクセス速度に関して不利な動作となる場合がある。
【０００５】
また、アドレスバスを監視し、ＣＰＵが主記憶のどの領域にアクセスしているかのトレース情報を採取するロジックアナライザ等の装置は存在するが、頻繁にアクセスする領域の検出と、そのフィードバックとを行う装置は存在しない。
【０００６】
また、オペレーティングシステムやファームウェア等のソフトウェアでアクセス頻度を検出する方式も考えられるが、キャッシュメモリにヒットした場合は主記憶にアクセスしないため、正しい結果が得られない。
【０００７】
そこで、プロセッサから主記憶装置へのアクセスの頻度をカウンタを用いて監視し、当該カウンタの値が一定値以上になった場合、通知を行う技術が考えられている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０６−２９０１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載された技術においては、通知を行うだけであり、効率的なメモリアクセスを行うことはできないという問題点がある。
【００１０】
本発明の目的は、上述した課題を解決するメモリアクセス制御システムおよびメモリアクセス制御方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明のメモリアクセス制御システムは、
ＣＰＵから複数の記憶媒体へのアクセスを制御するメモリアクセス制御システムであって、
前記ＣＰＵから前記複数の記憶媒体へのアクセス頻度を、前記複数の記憶媒体にあらかじめ設定されたアドレスごとに監視し、該監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがある場合、前記ＣＰＵへ所定の通知を行い、該アドレスをレジスタに保持するアクセス頻度通知部と、
前記アクセス頻度通知部から前記ＣＰＵへ前記通知があった場合、前記レジスタに保持されているアドレスに基づいて、前記ＣＰＵにおける前記複数の記憶媒体のアドレスの割り当てを変更する割り当て変更部とを有する。
【００１２】
また、本発明のメモリアクセス制御方法は、
ＣＰＵから複数の記憶媒体へのアクセスを制御するメモリアクセス制御方法であって、
前記ＣＰＵから前記複数の記憶媒体へのアクセス頻度を、前記複数の記憶媒体にあらかじめ設定されたアドレスごとに監視する処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあるかどうかを判断する処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあると判断した場合、前記ＣＰＵへ所定の通知を行う処理と、
前記監視したアクセス頻度があらかじめ設定された頻度閾値を超えたアドレスがあると判断した場合、該アドレスをレジスタに保持する処理と、
前記ＣＰＵへ前記通知があった場合、前記レジスタに保持されているアドレスに基づいて、前記ＣＰＵにおける前記複数の記憶媒体のアドレスの割り当てを変更する処理とを有する。
【発明の効果】
【００１３】
以上説明したように、本発明においては、効率的なメモリアクセスを行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明のメモリアクセス制御システムの実施の一形態を示す図である。
【図２】図１に示したアクセス頻度通知部の内部構成の一例を示す図である。
【図３】図２に示したアクセス頻度記憶部に記憶されたアドレスとアクセス頻度との対応付けの一例を示す図である。
【図４】本形態におけるメモリアクセス制御方法を説明するためのフローチャートである。
【図５】本発明のメモリアクセス制御システムの他の実施の形態を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１６】
図１は、本発明のメモリアクセス制御システムの実施の一形態を示す図である。
【００１７】
本形態は図１に示すように、ＣＰＵ１００と、アクセス頻度通知部２００と、割り当て変更部３００と、主記憶４００−１〜４００−２とから構成されている。また、ＣＰＵ１００と、主記憶４００−１〜４００−２とはプロセッサバスで接続されている。本発明においては、プロセッサバスのうち、アドレスバス５００を使用するため、図１では、アドレスバス５００のみを示した。
【００１８】
ＣＰＵ１００は、一般的に用いられるマイクロプロセッサである。
【００１９】
アクセス頻度通知部２００は、アドレスバス５００と接続され、ＣＰＵ１００から主記憶４００−１〜４００−２へのアクセスを監視し、その結果をＣＰＵ１００へ通知する。
【００２０】
図２は、図１に示したアクセス頻度通知部２００の内部構成の一例を示す図である。
【００２１】
図１に示したアクセス頻度通知部２００には図２に示すように、頻度閾値記憶部２０１と、アドレス情報取得部２０２と、アクセス頻度記憶部２０３と、通知判断部２０４と、レジスタ２０５と、通知部２０６とが設けられている。
【００２２】
頻度閾値記憶部２０１は、あらかじめ設定された閾値である頻度閾値を記憶する。この頻度閾値は後述するように、あるアドレスに対してアクセス頻度が高いことをＣＰＵ１００へ通知するために使用される基準（通知ルール）である。また、頻度閾値は、外部から設定することが可能なものである。また、頻度閾値記憶部２０１に記憶されている頻度閾値は、通知判断部２０４によって読み出すことができる。
【００２３】
アドレス情報取得部２０２は、ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へのアクセスを主記憶４００−１〜４００−２にあらかじめ設定されたアドレスごとに監視する。そして、ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へアクセスがあった場合、アドレスバス５００からアドレスを取得する。具体的には、ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へアクセス（データの書き込みや読み出し）があった場合、そのアクセスされたアクセス先のアドレス（ＣＰＵ１００から出力されたアドレス）を取得する。また、アドレス情報取得部２０２は、取得したアドレスを通知判断部２０４へ出力する。
【００２４】
アクセス頻度記憶部２０３は、アドレス情報取得部２０２にて取得されたアドレスごとにアクセスされたアクセス頻度を記憶する。
【００２５】
図３は、図２に示したアクセス頻度記憶部２０３に記憶されたアドレスとアクセス頻度との対応付けの一例を示す図である。
【００２６】
図２に示したアクセス頻度記憶部２０３には図３に示すように、アドレスとそのアドレスにアクセスが行われたアクセス頻度（ここではアクセス回数）とが対応付けられて記憶されている。例えば、図３に示すように、アドレス「０ｘ１０００００００」とアクセス頻度（アクセス回数）「１００」とが対応付けられて記憶されている。これは、「０ｘ１０００００００」のアドレスに対してＣＰＵ１００から１００回のアクセスがあったことを示している。また、アドレス「０ｘ１０００００１０」とアクセス頻度（アクセス回数）「５０」とが対応付けられて記憶されている。これは、「０ｘ１０００００１０」のアドレスに対してＣＰＵ１００から５０回のアクセスがあったことを示している。また、アドレス「０ｘ１０００００２０」とアクセス頻度（アクセス回数）「２００」とが対応付けられて記憶されている。これは、「０ｘ１０００００２０」のアドレスに対してＣＰＵ１００から２００回のアクセスがあったことを示している。また、アドレス「０ｘ１０００００３０」とアクセス頻度（アクセス回数）「５０」とが対応付けられて記憶されている。これは、「０ｘ１０００００３０」のアドレスに対してＣＰＵ１００から５０回のアクセスがあったことを示している。
【００２７】
このアクセス頻度記憶部２０３に記憶された情報は、通知判断部２０４によって読み書き可能である。
【００２８】
また、通知判断部２０４は、アドレス情報取得部２０２が取得したアドレスに基づいて、アクセス頻度が頻度閾値を超えたアドレスがあるかどうかを判断する。また、通知判断部２０４は、アクセス頻度が頻度閾値を超えたアドレスがあると判断した場合、その旨を通知部２０６へ出力する。また、通知判断部２０４は、アクセス頻度が頻度閾値を超えたアドレスがあると判断した場合、当該アドレスをレジスタ２０５に書き込む（保持する）。
【００２９】
具体的には、通知判断部２０４は、アドレス情報取得部２０２が取得したアドレスと対応付けられて記憶されているアクセス頻度をアクセス頻度記憶部２０３から読み出す。そして、通知判断部２０４は、読み出したアクセス頻度をインクリメント（１加算）し、インクリメントしたアクセス頻度と、頻度閾値記憶部２０１に記憶されている頻度閾値とを比較する。その結果、当該アクセス頻度が頻度閾値を超えている場合、通知判断部２０４は、当該アドレスをレジスタ２０５に書き込む（保持する）。また、当該アクセス頻度が頻度閾値を超えている場合、通知判断部２０４は、その旨を通知部２０６へ出力する。
【００３０】
レジスタ２０５は、通知判断部２０４によって書き込まれたアドレスを保持する。なお、レジスタ２０５に保持されているアドレスは、ＣＰＵ１００から読み出すことができる。
【００３１】
通知部２０６は、通知判断部２０４からアクセス頻度が頻度閾値を超えたアドレスがあると判断した旨が出力されてきた場合、ＣＰＵ１００へ所定の通知を行う。なお、この通知は、ＣＰＵ１００へ割り込み通知を行うための割り込み信号を用いる。
【００３２】
また、割り当て変更部３００は、アクセス頻度通知部２００からＣＰＵ１００へ上述した通知があった場合、レジスタ２０５に保持されているアドレスに基づいて、ＣＰＵ１００における主記憶４００−１〜４００−２のアドレスの割り当てを変更する。ここで、ＣＰＵ１００から主記憶４００−２へアクセスするアクセス速度よりもＣＰＵ１００から主記憶４００−１へアクセスするアクセス速度の方が速いとし、レジスタ２０５に保持されたアドレスが主記憶４００−２に割り当てられたものである場合、割り当て変更部３００は、当該アドレスの割り当てを主記憶４００−２から主記憶４００−１へ変更する。例えば、割り当て変更部３００は、ＣＰＵ１００におけるアドレス空間のアドレスマッピング（論理アドレスと物理アドレスとの対応）を変更することができるファームウェアやソフトウェアによって実現されるものであっても良い。
【００３３】
主記憶４００−１〜４００−２は、ＣＰＵ１００からアドレスバス５００を介してアクセス（データの書き込みおよび読み出し）可能であり、データを記憶する記憶媒体である。なお、主記憶４００−１〜４００−２は、ＲＯＭ、ＲＡＭ等のメモリやＨＤＤ等であっても良い。また、ＣＰＵ１００から主記憶４００−１へのアクセス速度は、ＣＰＵ１００から主記憶４００−２へのアクセス速度よりも速いものとする。ここで、アクセス速度とは、ＣＰＵ１００が主記憶４００−１〜４００−２へ、データの書き込みやデータの読み出しを行った場合、その書き込みや読み出しの処理の開始から終了までの時間であっても良い。また、主記憶４００−１〜４００−２自体の性能を用いるものであっても良い。このアクセス速度は、割り当て変更部３００にあらかじめ設定されているものであっても良いし、ＣＰＵ１００から４００−１〜４００−２へのアクセスについて、所定のタイミングで測定を行い、その結果を割り当て変更部３００が保持しているものであっても良い。
【００３４】
以下に、本形態におけるメモリアクセス制御方法について説明する。
【００３５】
図４は、本形態におけるメモリアクセス制御方法を説明するためのフローチャートである。
【００３６】
ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へのアクセスがアドレス情報取得部２０２によって、主記憶４００−１〜４００−２にあらかじめ設定されたアドレスごとに監視されている。
【００３７】
ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へのアクセスがあった場合、そのアクセスされたアクセス先のアドレスがアドレス情報取得部２０２によってアドレスバス５００から取得される（ステップＳ１）。取得されたアドレスは、アドレス情報取得部２０２から通知判断部２０４へ出力される。
【００３８】
すると、通知判断部２０４にて、アドレス情報取得部２０２から出力されてきたアドレスと対応付けられて記憶されているアクセス頻度がアクセス頻度記憶部２０３から読み出される（ステップＳ２）。
【００３９】
続いて、アクセス頻度記憶部２０３から読み出されたアクセス頻度が通知判断部２０４によってインクリメント（１加算）され（ステップＳ３）、インクリメントしたアクセス頻度と、頻度閾値記憶部２０１に記憶されている頻度閾値とが、通知判断部２０４によって比較される（ステップＳ４）。
【００４０】
ステップＳ４にて、インクリメントしたアクセス頻度が、頻度閾値記憶部２０１に記憶されている頻度閾値を超えていない（アクセス頻度が低い）と判断された場合、ＣＰＵ１００からアドレスバス５００を介して主記憶４００−１〜４００−２へのアクセスが監視され、ステップＳ１の処理が行われる。また、インクリメントしたアクセス頻度は、通知判断部２０４によって、アクセス頻度記憶部２０３に書き込まれる（当該アドレスと対応付けられたアクセス頻度に上書きされる）。
【００４１】
一方、ステップＳ４にて、インクリメントしたアクセス頻度が、頻度閾値記憶部２０１に記憶されている頻度閾値を超えている（アクセス頻度が高い）と判断された場合は、通知判断部２０４によって、当該アドレスがレジスタ２０５に書き込まれる（保持される）（ステップＳ５）。
【００４２】
また、インクリメントしたアクセス頻度が頻度閾値記憶部２０１に記憶されている頻度閾値を超えている旨が、通知判断部２０４から通知部２０６へ出力される。
【００４３】
すると、通知部２０６からＣＰＵ１００へ割り込み通知を行うための割り込み信号が送信される（ステップＳ６）。
【００４４】
通知部２０６から割り込み通知を受けたＣＰＵ１００によって、レジスタ２０５に保持されているアドレスが読み出される（ステップＳ７）。
【００４５】
その後、ＣＰＵ１００によってレジスタ２０５から読み出されたアドレスに基づいて、ＣＰＵ１００における主記憶４００−１〜４００−２のアドレスの割り当てが割り当て変更部３００によって変更される（ステップＳ８）。変更方法は、上述した通りである。
【００４６】
図５は、本発明のメモリアクセス制御システムの他の実施の形態を示す図である。
【００４７】
本形態は図５に示すように、ＣＰＵ１００−１、アクセス頻度通知部２００−１、割り当て変更部３００、主記憶４００−１、アドレスバス５００−１およびセルコントローラ６００−１が設けられたセル７００−１と、ＣＰＵ１００−２、アクセス頻度通知部２００−２、主記憶４００−２、アドレスバス５００−２およびセルコントローラ６００−２が設けられたセル７００−２とから構成されている。
【００４８】
セル７００−１とセル７００−２とが、それぞれに設けられたセルコントローラ６００−１とセルコントローラ６００−２とによって接続されたセルアーキテクチャコンピュータの実施の形態である。
【００４９】
この実施の形態におけるコンピュータでは、ＣＰＵ１００−１に着目すると主記憶４００−１（ローカルメモリ）は自セルであるセル７００−１に設けられているため、ＣＰＵ１００−１から主記憶４００−１へアクセスするアクセス速度は、ＣＰＵ１００−１から他セルであるセル７００−２に設けられている主記憶４００−２（リモートメモリ）へアクセスするアクセス速度よりも速いという性質がある。
【００５０】
仮想記憶機能があるオペレーティングシステムが、図５に示したコンピュータで動作しているとする。
【００５１】
ある処理をＣＰＵ１００−１で実行中にＣＰＵ１００−１がアクセスするメモリ領域がリモートメモリである主記憶４００−２にある場合、上述したステップＳ４の処理によりアクセス頻度が高いと判断されると、アクセス頻度通知部２００−１はＣＰＵ１００−１に割り込み通知を行う。
【００５２】
ＣＰＵ１００−１が割り込み通知を受けると、オペレーティングシステム（例えば、割り当て変更部３００）の割り込み処理は、アクセス頻度通知部２００−１のレジスタ２０５からアクセス先のアドレスを読み出し、ＣＰＵ１００−１が主記憶４００−２にアクセスしたことを判別する。
【００５３】
主記憶４００−２はＣＰＵ１００−１にとってリモートメモリであるため、ＣＰＵ１００−１からのアクセス速度は、ＣＰＵ１００−１からローカルメモリである主記憶４００−１へのアクセス速度よりも遅い。そのため、オペレーティングシステムは主記憶４００−２上にあるアクセス先であるメモリ領域にあるデータをローカルメモリである主記憶４００−１へコピーし、論理アドレスと物理アドレスの対応を変更する。
【００５４】
すると、アクセス頻度が高いデータへのアクセスは、ローカルメモリである主記憶４００−１へのアクセスとなるため、性能上有利となる。
【符号の説明】
【００５５】
１００，１００−１，１００−２    ＣＰＵ
２００，２００−１，２００−２    アクセス頻度通知部
２０１    頻度閾値記憶部
２０２    アドレス情報取得部
２０３    アクセス頻度記憶部
２０４    通知判断部
２０５    レジスタ
２０６    通知部
３００    割り当て変更部
４００−１，４００−２    主記憶
５００，５００−１，５００−２    アドレスバス
６００−１，６００−２    セルコントローラ
７００−１，７００−２    セル
【図１】
2011164669.tif 000003
【図２】
2011164669.tif 000004
【図３】
2011164669.tif 000005
【図４】
2011164669.tif 000006
【図５】
2011164669.tif 000007