(57)【要約】  コンピュータ装置は、ＲＯＭ等の比較的低速で不揮発性のメモリに実行ファイルを備え、装置のパフォーマンスは、それらのプログラムがＲＡＭ等の比較的高速で揮発性のメモリにコピーされるというシャドウイングによって改良される。シャドウイングは、しばしば非効率であるが、その理由として、ほとんど用いられないコードがコピーされることでメリットを受けられず、処理時間とメモリを浪費してしまうからである。本発明は、低速メモリのどの部分が最も頻繁にアクセスされるかをプロファイリングすることによって、又は、装置の動作の詳細な認識のいずれかによって決定し、その後、頻繁に用いられる実行プログラムのページのみをシャドウイングする。好ましい実施形態として、最も使用頻度の高いコードエリアが不揮発性メモリのあるページにクラスタされ、最も使用頻度の低いコードエリアが不揮発性メモリの他のページにクラスタされる。【選択図】図１
2008537618.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のメモリに備えられたメモリの１以上のページを、相対的により高速に揮発性のメモリにシャドウイングする工程と、
前記不揮発性のメモリの前記ページと予め関連付けられた仮想メモリアドレスに、シャドウイングされたページをマッピングする工程と、
を含む、コンピュータ装置を動作させる方法。
【請求項２】
シャドウイングされる前記ページが、前記不揮発性のメモリからのメモリの前記ページへのアクセス頻度に基づいて順序付けされたファンクション及びプロシージャの名称を含むリストから決定される、請求項１に記載の方法。
【請求項３】
シャドウイングされる前記ページの詳細が、固定されたロケーションで前記装置の不揮発性のメモリに格納される、請求項１又は２に記載の方法。
【請求項４】
シャドウイングされる前記ページの詳細が、固定されたロケーションに格納された前記詳細の前記ロケーションを指し示すポインタとともに、可変のロケーションで前記装置の不揮発性のメモリに格納される請求項１又は２に記載の方法。
【請求項５】
前記リストが、
ａ．前記装置の電源投入で起動されたブートプロセスと、
ｂ．少なくとも１つの実行ファイルと、
ｃ．前記装置の平均的なユーザの典型的な使用パターンとの内、
少なくとも１つを参照して構成される、請求項２乃至４のいずれか１項に記載の方法。
【請求項６】
各実行ファイルと関連付けられた前記ページが、リンクされたリストに格納されるか、又は、インデックスによって参照される、請求項５に記載の方法。
【請求項７】
少なくとも１つの実行ファイルに適用され、前記実行ファイルのためのシステムローダが、各実行ファイルのためにシャドウイングされる任意のページの詳細を取得し、特定された前記ページのシャドウイングの実行準備をする、請求項５又は６に記載の方法。
【請求項８】
電源投入で起動されるブートプロセス、又は、平均的なユーザの前記典型的な使用パターンのいずれか一方に適用され、前記ブートプロセスが、シャドウイングされるべき前記ページの詳細を取得し、特定された前記ページのシャドウイングを行う手段を含む請求項５に記載の方法。
【請求項９】
前記リストが、オプションａとｂとｃの内、少なくとも２以上の組み合わせから構成される場合に、前記リストが相互に排他的であるファンクションを含むように構成される、請求項５乃至８のいずれか１項に記載の方法。
【請求項１０】
実行ファイルからシャドウイングされるページが、前記実行ファイルが終了した際に、リリースされる請求項５乃至７のいずれか１項、若しくは、請求項５乃至７のいずれか１項に従属する請求項９に記載の方法。
【請求項１１】
前記リストが、前記コンピュータ装置のアーキテクチャ及び設計の知識に基づいたマニュアルプロセスによって決定される請求項２乃至１０のいずれか１項に記載の方法。
【請求項１２】
前記リストが、不揮発性のメモリから最も頻繁にアクセスされるページを識別するプロファイラによって決定される請求項２乃至１０のいずれか１項に記載の方法。
【請求項１３】
前記リストが、
ａ．前記装置において用いられるメモリページのサイズ
ｂ．前記リストの前記ファンクション及びプロシージャのサイズ
ｃ．前記ファンクション及びプロシージャによって典型的に要求されるＣＰＵサイクル数
ｄ．前記ファンクション及びプロシージャが参照される頻度
ｅ．メモリ空間、クロック周波数、アクセス時間、ウエイト状態、及び、リーディング及びライティングのためのデータ転送速度を非限定的に含む、装置上で利用可能なメモリの様々なタイプのメモリの仕様
ｆ．クロック周波数とキャッシュ仕様を含む、前記装置上の任意のＣＰＵの仕様
ｇ．任意のページにおける残りの空間
ｈ．装置用の不揮発性のメモリのコンテンツが予め構築されることによって取得されるシンボリック情報
の内、少なくとも１つの要素を参照して編集される、請求項２乃至１２のいずれか１項に記載の方法。
【請求項１４】
前記リストが、自動化されたツールによって前記要素を参照して構成される、請求項１３に記載の方法。
【請求項１５】
前記不揮発性のメモリから最も頻繁にアクセスされると決定されたファンクションが、ページで互いにグループ化される、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１６】
不揮発性のメモリの連続したロケーションにおける前記１以上のページの内のいずれかのページを保持することに比べて、揮発性のメモリの前記いずれかのページのシャドウイングが前記装置にとってのパフォーマンス・メリットを提供するか否かを決定し、パフォーマンス・メリットがないと決定された場合、若しくは、前記装置の前記パフォーマンスが低下したと決定された場合には、前記いずれかのページは、揮発性のメモリにシャドウイングされない請求項１乃至１５のいずれか１項に記載の方法。
【請求項１７】
シャドウイングされる前記ページが利用可能な前記メモリに収容できない場合に、前記装置上で利用可能なメモリの前記サイズを増大させる、請求項１３に記載の方法。
【請求項１８】
不揮発性のメモリに備えられたメモリの１以上のページを、相対的により高速に揮発性のメモリにシャドウイングする手段と、
前記不揮発性のメモリの前記ページに予め関連された仮想メモリアドレスにシャドウイングされたページをマッピングする手段と、
を含むコンピュータ装置。
【請求項１９】
前記シャドウイングの手段が、シャドウイングされる前記ページが、前記不揮発性のメモリからのメモリの前記ページへのアクセス頻度に基づいて順序付けされたファンクション及びプロシージャの名称を含むリストを編集するように構成される、請求項１８に記載の装置。
【請求項２０】
シャドウイングされる前記ページの詳細が、固定されたロケーションで前記装置の不揮発性のメモリに格納される、請求項１８又は１９に記載の装置。
【請求項２１】
シャドウイングされる前記ページの詳細を、固定されたロケーションに格納された前記詳細の前記ロケーションを指し示すポインタとともに、可変のロケーションで前記装置の不揮発性のメモリに格納するように構成される請求項１８又は１９に記載の装置。
【請求項２２】
リストが、
ａ．前記装置の電源投入で起動されたブートプロセスと、
ｂ．少なくとも１つの実行ファイルと、
ｃ．前記装置の平均的なユーザの典型的な使用パターンとの内、
少なくとも１つを参照して構成されるように構成される、請求項１８乃至２１のいずれか１項に記載の装置。
【請求項２３】
各実行ファイルと関連付けられた前記ページが、リンクされたリストに格納されるか、又は、インデックスによって参照されるように構成される、請求項２２に記載の装置。
【請求項２４】
少なくとも１つの実行ファイルに適用され、前記実行ファイルのためのシステムローダが、各実行ファイルのためにシャドウイングされる任意のページの詳細を取得し、特定された前記ページの前記シャドウイングの実行準備をするように構成される請求項２２又は２３に記載の装置。
【請求項２５】
電源投入で起動されるブートプロセス、又は、平均的なユーザの前記典型的な使用パターンのいずれか一方に適用され、前記ブートプロセスが、シャドウイングされるべき前記ページの詳細を取得し、特定された前記ページのシャドウイングを行う手段を含む、請求項２２に記載の装置。
【請求項２６】
前記リストが、オプションａとｂとｃの内、少なくとも２以上の組み合わせから構成される場合に、前記リストが相互に排他的であるファンクションを含むように構成される、請求項２２乃至２５のいずれか１項に記載の装置。
【請求項２７】
実行ファイルからシャドウイングされるページが、前記実行ファイルが終了した際に、リリースされるように構成される、請求項２２乃至２４のいずれか１項記載、若しくは、請求項２２乃至２４のいずれか１項に従属する請求項２６に記載の装置。
【請求項２８】
不揮発性のメモリから最も頻繁にアクセスされるページを識別することにより前記リストを編集するためのプロファイラを含む、請求項１９乃至２７のいずれか１項に記載の装置。
【請求項２９】
前記リストが、
ａ．前記装置において用いられるメモリページのサイズ
ｂ．前記リストの前記ファンクション及びプロシージャのサイズ
ｃ．前記ファンクション及びプロシージャによって典型的に要求されるＣＰＵサイクル数
ｄ．前記ファンクション及びプロシージャが参照される頻度
ｅ．メモリ空間、クロック周波数、アクセス時間、ウエイト状態、及び、リーディング及びライティングのためのデータ転送速度を非限定的に含む、装置上で利用可能な様々なタイプのメモリの仕様
ｆ．クロック周波数とキャッシュ仕様を含む、前記装置上の任意のＣＰＵの仕様
ｇ．任意のページにおける残りの空間
ｈ．装置用の不揮発性のメモリのコンテンツが予め構築されることによって取得されるシンボリック情報
の内、少なくとも１つの要素を参照して編集されるように構成される、請求項１９乃至２８のいずれか１項に記載の装置。
【請求項３０】
前記要素を参照して前記リストを編集するための自動化されたツールを含む、請求項２９に記載の装置。
【請求項３１】
前記不揮発性のメモリから最も頻繁にアクセスされると決定されたファンクションを、ページで互いにグループ化するように構成される、請求項１８乃至３０のいずれか１項に記載の装置。
【請求項３２】
不揮発性のメモリの連続したロケーションにおける前記１以上のページの内のいずれかのページを保持することに比べて、揮発性のメモリの前記いずれかのページのシャドウイングが前記装置にとってのパフォーマンス・メリットを提供するか否かを決定し、パフォーマンス・メリットがないと決定された場合に、若しくは、前記装置の前記パフォーマンスが低下したと決定された場合には、前記いずれかのページは、揮発性のメモリにシャドウイングされないように構成される請求項１８乃至３１のいずれか１項に記載の装置。
【請求項３３】
動作する請求項１８乃至３２のいずれか１項に記載のコンピュータ装置を請求項１乃至１７のいずれか１項記載の方法に従って動作させるオペレーティング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ装置に関し、特に、比較的低速なメモリに格納されたコードを実行するコンピュータ装置の性能を改良する方法に関する。
【背景技術】
【０００２】
以下において用いられるように、コンピュータ装置という用語は、電子コンピュータ装置のいかなる形態をもカバーするように広く解釈されるべきである。また、その用語は、データ記憶装置や、パーソナル・ディジタル・アシスタンツ（ＰＤＡ）のような手持ちサイズで個人用のコンピュータといったタイプや形状のコンピュータを含んでいる。また、その用語は、モバイルフォンや、スマートフォン、コミュニケーションをつなぐコミュニケータや、画像記憶／再生装置といったあらゆる形状因子のコミュニケーション装置を含んでいる。更に、その用語は、ディジタルカメラや、ＭＰ３や、他のミュージックプレーヤや、ディジタルラジオといった他の形状の有線情報機器や無線情報機器を含んでいる。
【０００３】
近代のコンピュータ装置は、複数のタイプのメモリを含んでいる。ある種のタイプのメモリは、例えば、従来のＳＲＡＭ／ＤＲＡＭ（ランダム・アクセス・メモリ）であり、高速であるが揮発性である。装置が電源投入された際に、ＲＡＭの内容がメモリ内に保持されるのみである。他のタイプのメモリで、例えば、ＲＯＭ（リード・オンリー・メモリ）とフラッシュメモリは、ＲＡＭよりも極めて低速であるが、不揮発性である。そのようなタイプのメモリは、内容が装置の電源がオフとされた場合にさえ保持されるので、永久的なストレージとして用いられることができる。
【０００４】
製造プロセスの一環として、永久的な不揮発性タイプのストレージに、装置が適切に機能することに不可欠なプログラムを備えることは、コンピュータ装置にとっての必要条件であることが広く認識されている。そのようなプログラムは、装置が電源投入された際に実行されるブートアップ手順の一部として用いられる場合がある。若しくは、そのようなプログラムは、頻繁に必要とされるオペレーティング・システム・サービスを提供する場合があり、また、そのようなプログラムが重要なアプリケーションとなる場合もある。それゆえ、そのようなプログラムは、ＲＯＭやフラッシュメモリのような不揮発性メモリに備えられる必要がある。
【０００５】
しかしながら、不揮発性メモリは実行中においてＲＡＭより極めて低速であり、不揮発性メモリからのプログラムを実行する方法は、装置を最適な速度で動作させることができないことが広く知られている。ユーザは、コンピュータ装置の動作速度に極めて高い価値をおいているので、製造業者は、そのような問題を軽減するように、シャドウイングとして知られた技術を開発してきた。シャドウイングは、装置のパフォーマンスを改善するために、実行コードをあるタイプのメモリから他のタイプのメモリにコピーすることを意味している。シャドウイングは、システム・ソフトウエアを比較的低速のＸＩＰ（eXecute In Place）ＲＯＭから比較的高速のＲＡＭにコピーする背景において頻繁に用いられる。
【０００６】
そのような方法は、１９８０年代半ばに大衆市場のコンピュータ装置において最初に顕著になってきた。それは、仮想メモリ・アドレッシングを実行する最初のＣＰＵが広く用いられてきた時である。それらは、ＲＯＭメモリに共通に用いられるＢＩＯＳ（Basic Input-Output System）コードを備える装置において頻繁に用いられていた。仮想メモリアドレスを異なる物理メモリロケーションにマップするＣＰＵの機能は、比較的低速なＲＯＭＢＩＯＳの全てのコンテンツをより高速なＲＡＭにコピーし、その後、ＲＡＭでそのコピーを指し示すように、ＢＩＯＳコードの仮想アドレスをリマップすることが可能であることを意味していた。
【０００７】
当業者であれば、使用中のアドレス可能なメモリロケーションのトータルが仮想メモリと称され、近代のコンピュータ装置が、メモリ管理ユニット、即ち、ＭＭＵによって保持されるページテーブルにある物理的メモリページへの仮想メモリページのマッピングを含んでいることを知っている。それらのページテーブルのコンテンツを修正することによって、一連の仮想メモリアドレスが、アドレス可能な物理メモリの所望のエリアを示すようになされる。
【０００８】
ＲＯＭＢＩＯＳのコンテンツをＲＡＭにコピーするプロセスがある時間を費やし、その方法が、恐らくは有益なメモリを消費しても（実行コードは複製されるからである）、比較的に低速メモリから高速メモリに実行コードをシャドウイングするプロセスは、コンピュータ装置の全体のパフォーマンスを改善する。その理由として、ＢＩＯＳコードは、装置の通常の動作中に頻繁に実行されるからである。実質的に、装置は、各ＢＩＯＳルーティン用のＲＯＭにアクセスする必要性によって低速化されることがない。
【０００９】
パフォーマンスを改善するために実行ファイルをシャドウイングすることは、特に、携帯電話のようなバッテリ駆動のモバイルコンピュータ装置用のオペレーティング・システムの特徴である。
【００１０】
そのような装置において用いられるシャドウイングの方法は多く存在する。そのような方法の２つが、「２．５Ｇ携帯電話用のコード・シャドウイング・アーキテクチャとＸＩＰとの比較」と題されたＭｉｃｒｏｎＴｅｃｈｎｏｌｏｇｙ社の論文に参照されている。「コード・シャドウイングは２つの方法の１つによって実現される。
・ブートアップ時に全てのコードエリアをコピーし、・・・コード空間の１００パーセントのオーバーヘッドが、アプリケーションを実行するためにＲＡＭ空間に確保される。
・実行用アプリケーションをオンデマンドでコピーし、・・・それは、ＲＡＭ空間のオーバーヘッドをおよそ２倍に低減する（コードの５０パーセントが、ＲＡＭ空間で確保される必要がある）。しかしながら、同時に、動的なダウンロードの複雑さと待ち時間とを増大させる。」（ｈｔｔｐ：／／ｗｗｗ．ｍｉｃｒｏｎ．ｃｏｍ／ｐｕｂｌｉｃａｔｉｏｎｓ／ｗｉｒｅｌｅｓｓ３ｑ０３４ｑ０３．ｈｔｍｌ）
シャドウイングの第１のタイプの実際的な例は、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）ＣＥオペレーティング・システムの特定の実装において見られる。
【００１１】
「イメージ全体がフラッシュに格納され、・・・また、システムの初期化中においてフラッシュからＲＡＭにコピーされる。その後、ＲＡＭから起動される。」（ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｄｅｓｉｇｎ／ｆｌｃｏｍｐ／ａｐｐｌｎｏｔｓ／２９２２３７０１．ｐｄｆを参照）
上記に参照されるシャドウイングの第２のタイプの変形例が、ＳｙｍｂｉａｎＳｏｆｔｗａｒｅ社のモバイルフォン用アドバンスト・オペレーティング・システムであるＳｙｍｂｉａｎＯＳ（登録商標）の特定の実装において見出される。このオペレーティング・システムは、頻繁にアクセスされる実行ファイルのみを比較的低速のメモリから、ファイルがより高速で実行される場所から、ＲＡＭにコピーすることによって、装置の動作を高速化している。このコピーのプロセスは、装置の動作中に要求に応じてなされるよりもむしろ、装置のブート時間において実行される。
【００１２】
上記の異なった方法が（オペレーティング・システム・イメージ全体か、若しくは、実行ファイル全体のいずれかをシャドウイングする）、全体のシステムパフォーマンスを改善することとして知られていても、ある不利点も有していることが広く知られている。
・それらは、メモリ効率が良くない。通常、コピーされたコードの数パーセントのみが、シャドウイングを行うだけ十分、頻繁にアクセスされる。しかしながら、イメージ全体（Ｗｉｎｄｏｗｓ（登録商標）ＣＥにおいて）又は実行ファイル全体（ＳｙｍｂｉａｎＯＳにおいて）がコピーされてしまう。このことが、有益なＲＡＭを占めてしまう。
・それらは、時間効率が良くない。このことは、先の不利点に続くが、シャドウイングを行うだけ十分にアクセスされないコードをコピーすることは、システムを低速化してしまう。
【００１３】
時間の非効率性は、装置が最初にスイッチをオンとされた際のブートプロセスにおいて、特に問題である。ここで、最適化が、スマートフォン等のモバイルバッテリ駆動装置にとって特に重要と考えられる。その理由としては、ユーザは、そのことが、最小限の遅延での電源投入で動作可能となることを期待するからである。例えば、携帯電話の場合、装置をオンとしてから通話できるようになるまでの間の長い時間が、ユーザにとってフラストレーションを引き起こし、例えば、緊急の場合に、ユーザにとって深刻な問題を引き起こす場合がある。
【００１４】
しかしながら、オペレーティング・システム・イメージ・シャドウイングと実行ファイル・シャドウイングは、両方ともこの点において次善策であり、ブートアップ時間を改善するための明確な見通しを提供している。
・ブートプロセスの一部分として、オペレーティング・システム・イメージ全体をシャドウイングすることは次善策である。というのも、実際にコピーされるコードの全てが、装置をブートする必要があるわけではないからである。
・実行ファイルのシャドウイングは、実行ファイルの用いられていない部分をシャドウイングする時間を浪費するだけでなく、ファイルシステムが初期化され、使用準備ができるまで実行されない。結果として、ブートプロセスの一部分として用いられるができるだけである。また、アプリケーションコードが実行ファイル毎のベースで、どこでシャドウイングされるかということが注意される。このことは、アプリケーションの起動を低速化してしまう。
【００１５】
シャドウイングが、より低速なメモリで実行コードを格納するコンピュータ装置のパフォーマンスを改善する証明された方法である一方で、今日まで、特定の機能を最適化するために開示された方法はなかった。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
そこで、上記の点に鑑み、本発明は、ＲＡＭシャドウイングの改善された方法を提供する。
【課題を解決するための手段】
【００１７】
本発明の第１の観点によると、提供されるコンピュータ装置を動作する方法は、不揮発性のメモリで提供されるメモリの１以上のページを、比較的高速で揮発性のメモリにシャドウイングし、不揮発性メモリにおける前記ページに予め関連された仮想メモリアドレスにシャドウイングされたページをマッピングすることを含んでいる。
【００１８】
本発明の第２の観点によると、提供されるコンピュータ装置は、不揮発性のメモリで提供されるメモリの１以上のページを、比較的高速で揮発性のメモリにシャドウイングする手段と、不揮発性メモリにおける前記ページに予め関連された仮想メモリアドレスにシャドウイングされたページをマッピングする手段とを含んでいる。
【００１９】
本発明の第３の観点によると、第２の観点に係るコンピュータ装置を第１の観点に係る方法に従って動作させるコンピュータ装置用のオペレーティング・システムが提供される。
【発明を実施するための最良の形態】
【００２０】
本発明は、オペレーティング・システム・イメージ全体、又は、実行ファイル全体のいずれか一方をシャドウイングする代わりに、実行ファイルがページ単位でシャドウイングされるということに基づいて叙述される。ページ単位でのシャドウイングは、シャドウイングを行うだけ十分頻繁にアクセスされないコードをコピーする必要性を大きく低減するだけでなく、シャドウイングのタイム・オーバーヘッドとメモリ使用の両方を最適化する。そのような理由で、本発明は特に有利である。更に、本発明は、ファイリング・システムに全く依存しないので、ブートプロセスの間中、使用されることができる。
【００２１】
本発明のある実施形態として、システム起動時に実行され、頻繁にアクセスされるコードのページ単位でのＲＡＭシャドウイングを可能にする方法が考えられる。本実施形態における最初のステップは、コードのどのエリアの最適化が必要かを決定する。このことを実現するために用いられる方法は、以下を含んでいても良い。
【００２２】
ａ）手動選択：システムの知識を十分に有する当業者であれば、コードのどのエリアがレイアウトの最適化によってメリットを得ることができるかを知っているであろう。
【００２３】
ｂ）自動選択：プロファイラが、低速メモリから最も頻繁にアクセスされるコードのエリアを発見するために用いられることができる。
【００２４】
理想的には、特化されたプロファイラが、自動選択用に用いられるべきである。なぜなら、従来のプロファイラは、アクセスされるコードのエリアを発見するだけであって、必ずしも最適化されるべきコードとならないからである。例えば、プログラムの実行中に、一度だけコードが低速メモリからアクセスされ、その後比較的頻繁に繰り返して実行される場合には、後でそのコードにアクセスしようとして、コードをＣＰＵキャッシュに発見することはあり得ないことではない。結果として、ＣＰＵキャッシュから実行できるので、後になって低速メモリからアクセスすることは必要ではない。従って、そのようなコードをシャドウイングすることは次善策であろう。このプロセスは、図１に示されている。従って、用いられるプロファイラのタイプは、低速メモリから直接、コードにアクセスされるもののみを考慮するべきである。本質的に、これは、キャッシュミスに伴って起こるアクセスのサブセットに相当している。
【００２５】
最初のステップの出力は、プロファイラの使用を介して自動的に実行されようと手動選択で実行されようと、ファンクション又はプロシージャ（以降、簡単にファンクションとして引用される）のリスト形式である。図２に示すように、それぞれについて、ファンクションが存在する実行ファイル又はライブラリ名が、ファンクション名に付加されて決定される。ファンクションのローリストは、その後、各ファンクションへのアクセス数によって順序付けされるように処理される。
【００２６】
好ましくは、実アドレスよりもむしろファンクション名が、本実施形態において用いられる。その理由として、新たなバイナリイメージがシステム用に構築される場合にはいつでも、周辺のコードのサイズが変化し、更に、所定のファンクションのアドレスが変化してしまうからである。また、その変化は、周辺のコードのサイズが変化することによる。逆に、ファンクション名とファンクション名が存在する実行ファイル又はライブラリ名が変更されることはほとんどない。
【００２７】
図２に示すように、次のステップは、所定のシステムの構築において、上記の最初のステップにおいて取得され順序付けされたファンクションリストを入力として、最も共通にアクセスされたファンクションが存在するページを決定する。
【００２８】
装置における各ファンクションのサイズ及び各メモリページのサイズの両方は、既知である。従って、ファンクションのリストが、連続した実行可能なページに配置される。また、最も頻繁にアクセスされたものからほとんどアクセスされなかったものまで順序付けされる。
【００２９】
当業者であれば、任意のページにおいて、低速メモリからそのページへの全てのアクセスに費やされるトータル時間と高速メモリからそのページへの全てのアクセスに費やされるトータル時間との差を算出できることを理解しているであろう。このことは、決定論的で数学的なオペレーションである。その場合に、当業者は、問題とされているコンピュータ装置のハードウエア仕様と各ページのコードとの両方について十分な知識を有している。それは、例えば、クロック周波数、アクセスタイム、ウエイト状態とデータ転送速度、読み出しと書込みを含む様々なタイプの有効なメモリであり、また、クロック周波数やキャッシュ仕様を含む装置上のＣＰＵ仕様である。もし、その時間差が、低速メモリから高速メモリにページをコピーすることに費やされる時間よりも大きい場合に、そのようなページをシャドウイングすることでシステムパフォーマンスを向上できることが知られている。
【００３０】
もし、装置内の有効なＲＡＭが少なく、また、パフォーマンス・メリットを与えるように上記のように決定された全てのページをシャドウイングすることが可能でない場合でも、システム設計者は、それにも関わらず、場合によっては、最も大きなパフォーマンス・メリットを与えるようにランク付けされたページを選択し、シャドウイングされるページの適切な値を設定するために必要な情報を有するであろう。このような最適化が装置の設計プロセス中に実行されるが、パフォーマンス・メリットが与えられないのであれば、代案として、システムにおけるＲＡＭの量を増大するように決定されても良い。
【００３１】
当業者であれば、組み込みシステム用の実行可能なＲＯＭイメージの代表的な構築プロセスが、そのイメージに関連するシンボリック情報を取得するために必要とされる全ての必要な手段を含んでいることを知っているであろう。これは、イメージにおけるファンクション毎のアドレスを順番に与える。これらのアドレスと用いられたオペレーティング・システムのメモリ設定の知識とから、ページのアドレスを取得することが可能である。更に、当業者にとって、新たなイメージが構築される場合にはいつでも、自動的にアドレスを決定するような手段を記述することは、それ程複雑な作業ではない。このようにして、シャドウイングするべきページを決定するプロセスが、完全に自動化されることができる。
【００３２】
シャドウイングされるべきページの詳細が、ＲＯＭ自身のサイズとともに知られると、図３に示されるように、シャドウイングされるべきページのアドレス配列を保持する十分なサイズのＲＯＭイメージのコードの終端において、未使用の空間を割り当てることが可能である。ほとんど全てのコンピュータ装置におけるＲＯＭが未使用の空間を有していることは、指摘されている。であるので、完全に一杯であり、そのようなタイプの小さなページ配列用に不十分な空間が存在することは、ＲＯＭにとって普通ではない。もし、アドレス配列を保持するために不十分な空間がＲＯＭイメージに存在する場合には、ＲＯＭイメージのサイズをパフォーマンス・メリットが与えられるように増大しても良い。
【００３３】
最後に、構成されたＲＯＭイメージ、そのシンボリック情報、頻度の高いファンクションリストが、ユーティリティ・プログラムへの入力となる。シンボリック情報と頻度の高いファンクションリストは、ユーティリティ・プログラムによって用いられ、上記に概説したように、シャドウイングされるべきページ配列を構成する。また、この情報は、ＲＯＭイメージの予め割り当てられたエリアに挿入される。そのようなプログラムを記述することは、当業者にとって、それ程複雑であるとは考えられない。配列のサイズと開始アドレスへのポインタの両方が、ＲＯＭにおける所定の位置に格納される。主として、ブートストラップ・コードによって用いられるデータエリアに格納されることができる。これは、コードの２〜３バイト程度のオーバーヘッドであるので、いかなるパフォーマンス上の問題を引き起こすものではない。
【００３４】
装置の仕様において、ＲＯＭイメージに格納されたページ配列は、装置が起動する際にはいつでも、ブートプロセスの初期段階において試験される。有効なページアドレスが発見された際に、ブートプロセスは、関連するシャドウイングＡＰＩをコールし、これらのページをＲＯＭからＲＡＭにコピーする。その後、メモリマネージャにそれらの仮想アドレスをリマップさせる。この手順は、図４に示されている。この手順がなされると、関連するコードへのアクセスが、常に、低速メモリからよりもむしろ高速メモリから実行される。従って、装置は、上記に概説したようなパフォーマンス上のデメリットなしに、最適化された方法によってシャドウイングのメリットが与えられることができる。
【００３５】
新たなＲＯＭイメージが構築される度に、イメージサイズとページにおけるファンクションの位置とが変化するであろう。従って、最も共通にアクセスされるファンクションが存在するページを決定するステップが、再度、繰り返されて、最適にシャドウイングされる修正されたイメージを生成するようにしても良い。そのステップは、ページのサイズ及びファンクション、シャドウイングされるべきページのアドレス配列を保持する十分なサイズのＲＯＭイメージのコードの終端における未使用空間の割り当て、ＲＯＭイメージの予め割り当てられたエリアへのアドレス配列の挿入を含んでいる。
【００３６】
しかしながら、上記の最初のステップは、最も頻繁にアクセスされるファンクションリストの変更を引き起こすコンピュータ装置の設計及びアーキテクチャに大きな変化がある場合に、繰り返されることが必要なだけである。
【００３７】
本発明の第２の実施形態によると、上記の方法は、参照されるＭｉｃｒｏｎ  ｐａｐｅｒに開示されているように、オペレーティング・システムがオンデマンドで実行ファイルをシャドウイングするコンピュータ装置に用いられるように修正されることができる。このようなタイプのシャドウイングは、後になるまでロードされることを要求されない実行ファイルやアプリケーションに関連するブートプロセスの間、アクセスを要求されたコードのシャドウイングに付加されるか、若しくは、独立して用いられるか、いずれか適切な方により用いられる。
【００３８】
本発明の実施形態において、上記のプロセスの最初の段階は、実質的に２つの部分に分けられる。ブートプロセスのプロファイリングは、どのコードが起動時におけるパフォーマンスを最適化するためにシャドウイングされることが必要かということを示し、後続してロードされるアプリケーションのプロファイリングは、コードのどの部分がシャドウイングされるべきかということを示している。従って、最初の段階の出力は、シャドウイングされるべき各アプリケーションのファンクション及びプロシージャの第２のリストと組み合わせられた、ブートプロセスを最適化するファンクション及びプロシージャの第１のリストである。このことは、図５のステップ１０〜１４に示されている。
【００３９】
本実施形態における次の段階は、上記のように、第１の実施形態の最初のステップによって生成されたリストで進行する。しかしながら、第２の実施形態においては、アプリケーション用のリストは、図５のステップ１６においてフィルタリングされ、起動時においてシャドウイングされるべきページのリストとエントリが重複していないことが保証される。
【００４０】
本実施形態において、起動時に使用されるべきページのアドレス配列のためだけでなく、シャドウイングされるべき各アプリケーション用の別々の配列のために、ＲＯＭに空間が割り当てられることが必要である。このことは、図５のステップ１８に示されている。
【００４１】
後者の配列は、アプリケーション名によって別々に識別されることができる。インデックスを、起動を最適化するように用いられる配列のすぐ後の開始アドレス及び長さとともに格納することは、本目的のために用いられる多くの可能な方法の１つである。しかしながら、設計に依存するので、シャドウイングされるべきページ配列を構成するために用いられるユーティリティ・プログラムが、ＲＯＭについて多様なテーブルの生成に対処するように修正される必要がある場合がある。
【００４２】
第１の実施形態のように、ブートプロセスでの使用のために生成されたページ配列は、装置の電源が投入される場合にはいつでも、試験されて作動する。しかしながら、本実施形態において、装置のアプリケーション・ローダは、各アプリケーションにとって、ページ配列が各アプリケーション用に構成されたか否かということをチェックするように修正される。このチェックが実行されるために費やされる時間は無視できる。もし、配列が任意のアプリケーション用に存在するということが見出されれば、また、もし、配列が有効なページアドレスを含むのであれば、図５のステップ２０に示されるように、ローダは、ＲＯＭからＲＡＭにページをコピーするために、関連するシャドウイングＡＰＩをコールし、メモリマネージャに仮想アドレスをリマップさせる。ブートの間にシャドウイングされるべきページと同様に、関連コードへのアクセスが、常にＲＯＭよりもむしろＲＡＭから行われるということが保証されるであろう。繰り返しとなるが、システムは、既知のパフォーマンス上のデメリットなしにシャドウイングのメリットを与えられることができる。
【００４３】
本発明の実施形態において考えられる最適化は、図５のステップ２２において示されるように、部分的にシャドウイングされたアプリケーションが終了し、ロードされた際にマッピングされたメモリのページをリリースする際についてである。
【００４４】
本発明のあらゆる態様の更なる最適化も可能である。例えば、低速メモリから最も頻繁にアクセスされたリスト上での順序付けを参照しシャドウイングを行うファンクション及びプロシージャの厳密な決定は、メモリページに適用されて最適化することを考慮して緩和されても良い。その結果、大き過ぎるためにページの残りの空間に適合することができないファンクションは、適合するように無視される。
【００４５】
図６を参照すると、特定の関心を引く１つの最適化は、低速メモリから最も頻繁にロードされ、結果として、シャドウイングによりメリットを享受するであろうエリアが、同じページに存在するようにコードのレイアウトを構成することである。この最適化は、３０年以上も遡る研究であるローカリティの現象に基づく既知のコードの最適化と同じではないということが、特に指摘されている。ローカリティは、「メモリ・リファレンスが、プログラムの実行の間に、小さなメモリエリアでクラスタリングされる傾向がある現象」として定義されることができる（１９９２年、マイクロアーキテクチャの目次において、第２５回年次国際シンポジウムの議事録におけるＹｏｕｆｅｎｇ  Ｗｕによる「共有されたメモリ・マルチプロセッサ・システムにおけるメモリ・リファレンス・ローカリティを改良するためのファンクションの順序付け」より）。
【００４６】
上記で引用されているＹｏｕｆｅｎｇ  Ｗｕによる論文によると、プログラム内でローカリティの量を増大するコンパイラを構築する方法が開示されている。ローカリティの増大は、キャッシュミスやページフォルトを減少させ、付随してパフォーマンスにおける実質的な改良に導くものである。
【００４７】
しかしながら、順次アクセスされるファンクションのレイアウトがメモリにおいて互いに隣接し、又は、接触するように最適化することは、低速メモリから最も頻繁にアクセスされるファンクションのレイアウトが互いに隣接するように最適化するオペレーションのタイプとは大きく異なる。前者の最適化は、空間計測に依存し、対照的に、後者の最適化は、時間の計測に依存する。
【００４８】
これらの２つのタイプの最適化は、相互に影響を及ぼし、異なる特化されたプロファイリング・ツールが、なぜシャドウイングの最適化にとって望ましいかと考えられている１つの理由である。しかしながら、一般的に、キャッシングは、シャドウイングよりもより大きなパフォーマンス・メリットを与えるので、より良いキャッシュ・パフォーマンスにとっての空間の最適化は、より効率の良いシャドウイングにとっての時間の最適化に勝るべきである。従って、数学的シミュレーション又はテスティングのいずれか一方のイタラティブな処理は、パフォーマンスが増大し、何かの事情によって低下されないことを保証するために最適化の各サイクルを伴うようにしても良い。
【００４９】
当業者であれば、低速メモリから最も頻繁にロードされるエリアが同じページに存在するようにコードをレイアウトすることは、コード・シャドウイングを実装するシステムに対してだけでなく、ページベースのメモリ管理を実装するシステムに対してもメリットがあるということが理解できるであろう。
【００５０】
本発明を含むコンピュータ装置が、プロファイラやＲＯＭアナライザやパフォーマンス・シミュレータのような特化されたソフトウエア・エンジニアリング・ツールの助けをかりて製造されることが利点として考えられることが、本記載から留意される。そのような状況において、コンピュータ装置と装置を製造するために用いられるエンジニアリング・ツールは、本発明の範囲として考えられると理解されるべきである。
【００５１】
本発明は、既知のシャドウイングの方法に対して、以下を複数の利点として提供する。
【００５２】
・ＸＩＰＲＯＭベースのシステムにおいて、あらゆるタイプの実行ファイルをシャドウイングするためのメモリ効率の良い方法である。ＳｙｍｂｉａｎＯＳを用いる実際的な実験は、ファイルよりもむしろページによるシャドウイングが、装置のパフォーマンスを大きく低下させることなく、ＲＡＭ仕様をおよそ１／１０に低減することを示した。
【００５３】
・ファイルベースのページングの方法と比べて、最適化は、ファイルシステムの存在を要求しておらず、従って、ブートプロセスにおいて、早期に起動されることができる。その結果、装置のブート時間がより速くなる。
【００５４】
・ページベースのシャドウイングは、ファイルベースのシャドウイングよりも高速である。その理由としては、ページベースのシャドウイングは、ファイルシステムのコードをコールする必要がないからである。
【００５５】
・ＯＳイメージベースのページング方法と比べると、シャドウイングを行わないページをコピーする必要はない。その結果、ＲＡＭオーバーヘッドはより小さくなり、より高速化される。
【００５６】
・低速メモリから共通のページに頻繁にアクセスされるコードのクラスタリングは、ページベースのメモリ管理を実行するシステムにメリットを与えることができる。
【００５７】
以上において、本発明は、特定の実施形態を参照して記載されているが、付加された請求項により特定された本発明の範囲内において変更される場合も、本発明の範囲として考えられる。
【図面の簡単な説明】
【００５８】
【図１】ＲＡＭにシャドウイングするファンクションを選択するプロセスを示す図である。
【図２】どの選択されたファンクションが、有益にＲＡＭにシャドウイングされるかを決定するプロセスを示す図である。
【図３】本発明を実施する装置にとってのＲＯＭイメージの概要を示す図である。
【図４】図３におけるＲＯＭイメージのファンクションをシャドウイングするプロセスを示す図である。
【図５】オペレーティング・システムがオンデマンドで実行ファイルをシャドウイングすることができるコンピュータ装置において、本発明を実施するためのプロセスを示す図である。
【図６】低速メモリから最も頻繁にロードされたファンクションが、同じページに存在するように構成された実施形態を示す図である。
【図１】
2008537618.tif 000003
【図２】
2008537618.tif 000004
【図３】
2008537618.tif 000005
【図４】
2008537618.tif 000006
【図５】
2008537618.tif 000007
【図６】
2008537618.tif 000008
【国際調査報告】
2008537618.tif 000009
2008537618.tif 000010