(57)【特許請求の範囲】
【請求項１】
ａ）あるスパンのアドレスを有する主記憶手段（１６）と、
ｂ）そこに格納されたデータ値に高速アクセスするためのオーバーレイ・メモリ手段（２３）であって、前記主記憶手段（１６）に割り当てられる前記アドレス・スパンの範囲内に入るアドレスのオーバーレイ・スパンを有するオーバーレイ・メモリ手段（２３）と、
ｃ）前記オーバーレイ・スパンの範囲内のデータへのアクセスを要求するプログラム（２６）を動作させるプロセッサ手段（１２）と、
ｄ）前記オーバーレイ・メモリ手段（２３）内からのデータへアクセスすることによって前記要求に応答するオーバーレイ・コントローラ手段（２４）と、
ｅ）前記主記憶手段（１６）への前記要求の伝送を禁止する手段（２２）との組み合わせと
を備え、
前記プロセッサ手段（１２）は、一時変数を格納するための複数のアドレス・スパンを前記オーバーレイ・メモリ手段（２３）に割り当て、前記アドレス・スパンのそれぞれは、前記オーバーレイ・コントローラ手段（２４）に格納されるベース・ポインタ・アドレスおよびレングス値によって示される
処理装置（１０）。
【請求項２】
前記禁止手段（２２）は、あるメモリへのアクセスに含まれるアドレスが前記オーバーレイ・スパンの範囲内に常駐する時は常に、前記主記憶手段（１６）へのメモリ・アクセス・アクションの伝送を禁止すること
請求項１記載の処理装置（１０）。
【請求項３】
前記プロセッサ手段（１２）は、
前記オーバーレイ・コントローラ手段（２４）における１つまたは複数のベース・ポインタ・アドレスおよびレングス値を改訂することによって、前記オーバーレイ・メモリ手段（２３）に割り当てられる前記複数のアドレス・スパンを改変する改変手段（２６）
を含む
請求項１に記載の処理装置（１０）。
【請求項４】
前記禁止手段（２２）は、メモリ・アクセスに含まれるアドレスを受け取る際に、前記オーバーレイ・メモリ手段（２３）が前記メモリ・アクセスに応答する場合は、前記アドレスを前記主記憶手段（１６）に伝送しない
請求項１〜３のいずれかに記載の処理装置（１０）。
【請求項５】
ｆ）前記オーバーレイ・スパンの範囲内に含まれない前記プロセッサ手段（１２）からのデータの要求に応答するためのキャッシュメモリ手段（３０、３２）
をさらに設けた請求項１〜４のいずれかに記載の処理装置（１０）。
【請求項６】
前記キャッシュメモリ手段（３０、３２）は、前記オーバーレイ・スパンの範囲内のデータへのアクセスの要求を検出する際に、前記オーバーレイ・メモリ手段（２３）が前記アクセス要求に応答する場合は、前記主記憶手段（１６）からの前記データにアクセスすることを禁止する
請求項６記載の処理装置（１０）。
【請求項７】
少なくとも主記憶（１６）と、オーバーレイ・メモリ（２３）と、プロセッサ（１２）とを含む処理装置（１０）におけるメモリ性能を改良する方法であって、
前記オーバーレイ・メモリ（２３）は、これに格納されるデータへの高速アクセスを前記プロセッサ（１２）に可能ならしめ、
ａ）前記主記憶（１６）内のアドレス領域を前記オーバーレイ・メモリ（２３）に割り当てるステップと、
ｂ）（ｉ）前記オーバーレイ・メモリ（２３）が前記アクセスへ応答できるようにすることによって、さらに、（ｉｉ）前記アドレス領域におけるアドレスの前記主記憶（１６）への伝送を常に禁止することによって、前記アドレス領域からのデータへのアクセスにプログラムによって応答するステップと
を含み、
前記ステップａ）は、ベース・アドレス・ポインタおよびレングス値を前記オーバーレイ・メモリ（２３）に割り当てることによって、前記主記憶（１６）内のアドレスを割り当てる
方法。
【請求項８】
前記ステップａ）は、ソフトウェア命令の使用によって、前記ベース・アドレス・ポインタを割り当て、また、新たなソフトウェア命令の発行によって前記ベース・アドレス・ポインタの再割り当てを可能にする
請求項７記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータにおけるメモリ性能を改良する方法および装置に関し、より詳細には、中間処理データを記憶するオーバーレイ・メモリを使用することによってさらに効率のよい処理性能を達成する装置および方法に関する。
【０００２】
【従来技術】
マイクロプロセッサの製造業者は、そのコンポーネントのクロック速度を高めることによって絶えず性能を向上させている。かかるクロック速度の向上を利用するためには、マイクロプロセッサが、キャッシュメモリを含むメモリシステムの効率よい動作を維持させる必要がある。これまで、メモリシステムの改良は、マイクロプロセッサ設計の改良に足並みをそろえてこなかったため、キャッシュ・ミスによって生じるミス・ペナルティは、システム設計全体において重要な課題となってきている。
【０００３】
当業者には周知のように、キャッシュメモリは、頻繁に使用されるデータ項目を格納するために用いられ、これに高速でアクセスすることができるようにした、バッファメモリ領域である。キャッシュ「ヒット」とは、ある特定のデータ項目がキャッシュメモリにおいて見つかった場合の状態のことであり、キャッシュ「ミス」とは、ある特定のデータ項目がキャッシュメモリにおいて見つからず、このため必要とされるデータ項目を回復するために主記憶にアクセスする必要がある場合の状態のことある。キャッシュミスの場合、主記憶へのアクセスは、システム全体の動作を遅滞させる比較的低速のプロセスを介して行われる。さらに、書き込みがキャッシュラインに対して行われると、そのライン全体が「ダーティ（dirty）」としてマークされる。これは、キャッシュが主記憶内の対応データとの一貫性を失った状態を示している。その後、キャッシュラインのダーティ状態を除去するためには、キャッシュライン全体を主記憶に書き込む必要があり、これがさらに手間のかかる動作になっている。
【０００４】
現在のオペレーティング・システムでは、所定の処理変数へのアクセスの容易性を向上するために、これらの変数を格納するメモリ領域を一時的に割り当てている。一時的に割り当てられたこれらの領域を「スタック」という。ある複雑な画像処理アプリケーションでは、外部へのメモリ・アクセスの１５％〜５０％がこれらのスタック構造に対して行われる。したがって、スタック構造の動作を最適化することによって、メモリ性能を改良することができる。
【０００５】
【発明が解決しようとする課題】
従来技術では、スタックを配置することのできる、少量ではあるが高価な、高速、つまり待ち時間の少ないメモリを設けることによって、スタック動作を強化することを試みた。このアプローチは比較的コストのかかるものであり、設計者は、このような高速／待ち時間の少ないメモリがシステムスタックに必要な分だけ十分に使えることを保証できなければならない。システム設計者がスタック用のメモリを十分に与えないと、必要とする多大なスタック空間の埋め合わせをするために、プログラムにおける後からの変更が要求されることになる。
【０００６】
一般に設計者は、スタック領域全体が完全に使用された状態には決してならないほど余裕を持ってスタック領域を割り当てるというやり方に対しては保守的である。したがって、設計者は通常、最悪と考えられる状況の１０％増しでスタック領域を割り当てることを強いられる。さらに、そのようなスタック構成では、スタックの底部付近にアクティビティが大量にあり、スタックの上部付近にはアクティビティがほとんどないかあるいは全くないということがよくある。
【０００７】
上記に記載のように、キャッシュラインに書き込みを行うと、キャッシュメモリ・コントローラは、このアクセスされたキャッシュライン中のデータに「ダーティ」としてマークする。たとえ、キャッシュの問題としている部分があるスタックと関連づけられていても、このキャッシュラインに常駐するデータは、ある時点で主記憶に書き込まれる。スタックに関連づけられたキャッシュメモリのこの部分は頻繁に「ヒット」を受けるので、キャッシュのこの部分にキャッシュ管理動作が頻繁に必要となり、これによってシステムの性能効率が低下する。
【０００８】
スタックメモリ動作を改良する別のアプローチは、スタックを小片に分割し、ある小片は高速メモリに常駐し、他の小片は低速メモリ（主記憶等）に存在するようにする。このような構成では、システムスタック資源を管理するソフトウェア／ファームウェアが、論理スタックにおける種々の物理的コンポーネント間の遷移点をチェックする必要がある。このような「スタック標識（stack sentinel）」には、比較的小さなサイズのコードが必要であるが、ある程度困難なタスクについて数十万回も実行される。したがってこのアプローチは、高性能なスタックメモリを提供する際のコストの問題に取り組む助けとなるが、スタックのアクティビティを管理するためには多少の性能の低下がともなう。さらに、主記憶への外部アクセスがいくらか必要であり、このためマイクロプロセッサ動作においてある程度の遅延が生じる。
【０００９】
したがって、本発明の目的は、マイクロプロセッサにおけるメモリ利用率を管理する方法および装置の改良を提供することである。
【００１０】
【課題を解決するための手段】
スタックに書き込まれるほとんどのデータが、長時間保存する必要のない種類のデータである（すなわち、そのデータを生成したプロシージャまたは関数の実行時間中において有効であればよい）ことは、すでに分かっていることである。
したがって、このようなデータ（および他の同様のデータ）を処理するのにスタックを用いると、無効や、（そのスタックがキャッシュメモリに保持されるときに）通常上記のようなデータへのアクセスを伴う主記憶への書き込みを回避できる。したがって、本発明は、オーバーレイ・メモリを提供することによってメモリ性能を向上させ、これにスタック動作に利用される一組の主記憶アドレスが割り当てられる。データをオーバーレイ・メモリから読み取るか、あるいはオーバーレイ・メモリに書き込むと、キャッシュメモリまたは主記憶のいずれか一方に行われる通信の「ダウンストリーム」は、これ以上生じない。言い換えれば、オーバーレイ・メモリは、短期間の記憶のために用いられ、オーバーレイへのアクセスは、当該システムの他のメモリ要素からは見えない。したがって、データを無効にする必要がない上、かかるデータを主記憶に書き込む必要もない。この結果、メモリ動作がかなり改善される。
【００１１】
【実施例】
次に図１を参照すると、本発明によるコンピュータ１０は、高速バス１４を介して他の要素とやりとりを行う中央処理装置（ＣＰＵ）１２を含む。主記憶１６および読取り専用メモリ（ＲＯＭ）１８は、比較的低速のメモリバス２０にメモリバスコントローラ２２を介して接続されている。また、メモリバスコントローラ２２は、コンピュータ１０の他の要素と高速バス１４を介してやりとりする。
通常、点線で描かれたボックス２１中のすべての要素をプロセッサという。主記憶１６へのアクセスは、メモリバスコントローラ２２とメモリバス２０を介して行われており、このことは、高速バス１４上のデータ転送よりも遅延したり低速になることを特徴的に示している。
【００１２】
オーバーレイ・メモリ２３は、オーバーレイ・メモリコントローラ２４を介して高速バス１４に接続されている。オーバーレイ・メモリ２３は、比較的小型の高速メモリであり、ＣＰＵ１２上で現在実行中のプログラム２６に一時的に必要なデータおよびパラメータの記憶を行う。以下明確となるように、オーバーレイ・メモリ２３は、多数のメモリ領域にセグメント分割され、各領域は、その領域のベース・アドレスとレングス値を示すベースポインタ値とによって画定される。各ベースポインタ値の記録は、オーバーレイ・コントローラ２４において保持されている。本質的に、各ベースポインタ値および（ベースポインタ値から展開したアドレスの）関連するレングス値は、主記憶１６に存在するがしばらくの間は使用されないアドレスを有する、一組の記憶場所を規定する。
【００１３】
したがって、プログラム２６が、実行中にオーバーレイ・メモリ２３内のメモリ領域のうちのひとつに含まれるメモリアドレスにアクセスする時、オーバーレイ・メモリ・コントローラ２４がそのアドレスに応答し、その応答動作によって、コンピュータ１０の他の要素へのそのアドレスの伝播が禁止される。さらに、データがオーバーレイ・メモリ２３に書き込まれると、コンピュータ１０内の他のメモリ領域へは、そのデータの次の書き込みは行われない。したがって、オーバーレイ・メモリ２３は、一時的に必要とされるデータおよび／またはパラメータに主に利用されるスタンドアロンの高速メモリの機能を奏する。
【００１４】
主記憶への読み取りおよび書き込みを回避することによって、メモリバス２０の利用頻度が実質的に減少し、これによって資源が解放され、他の操作が可能になる。バスの使用を軽減することによって、バスアクセスを必要とする要求にますますサービスを行うことができるとともに、性能効率を増大させる。さらに、ＣＰＵは、このメモリの高速アクセス領域に関連するデータの読み取りおよび書き込みに必要な待ち状態を軽減する。このため、性能が実質的に向上する。
【００１５】
また、本発明によって、設計者は、より高価な高速メモリを最小限設けるだけで、スタック領域のうち最も頻繁に使用する部分のみを網羅することができる。
オーバーレイ・メモリを任意の量だけ設けることで有益な性能が提供されるため、スタック領域寸法の甘い見積によってプロジェクト設計が遅滞するようなことがない。さらに、オーバーレイ・メモリが消耗した時点で主記憶が自動的に要求に対してサービスを行うため、スタック領域の増大を監視するソフトウェアまたはハードウェアが不要になる。
【００１６】
コンピュータ１０は、高速バス１４にキャッシュコントローラ３２を介して接続されたキャッシュメモリ３０をさらに含めることができる。キャッシュメモリ３０およびそれと関連するキャッシュコントローラ３２は従来のように動作し、また、必要であれば、プログラムの実行に必要なデータを一時的に格納するためにこれを利用してもよい。
【００１７】
図２を参照すると、主記憶１６のさらに詳細な図が示されており、その３つの領域（すなわち、４０、４２および４４）がスタックメモリ領域として使用されるようにすでに割り当てられて示されている。プログラム２６等の実行プログラムによって行われる外部メモリ・アクセスの１５％〜５０％が、スタックメモリ領域に割り当てられたデータに対して行われることがすでに分かっている。上述のように、スタックメモリ領域が主記憶１６に保持される場合、当該システムには、主記憶１６からの読み取りデータおよび／または主記憶１６への書き込みデータにつきものの遅延時間が負担となる。
【００１８】
これに対して、スタック領域をキャッシュメモリが管理する場合、そのシステムは、変更されるキャッシュラインエントリと同期した主記憶１６の保守という負担を負うことになる。したがって、本発明では、各スタックメモリ領域の少なくともある一部分（たとえば、サブ領域４６、４８、５０）がオーバーレイ・メモリ２３に割り当てられる（図１を参照）。サブ領域の各ベースポインタ（および、サブ領域の範囲をそれぞれ規定する関連レングス値）をオーバーレイ・メモリコントローラ２４に挿入することによって、ＣＰＵ１２によってバス１４へ発行される、サブ領域に属していたアドレスが、オーバーレイ・メモリコントローラ２４によって直ちに認識される。
【００１９】
したがって、ＣＰＵ１２がプログラム２６の実行中に、オーバーレイ・メモリ２３のスタックのサブ領域に含まれるアドレスの範囲内のアドレス値に対して、読み取り命令または書き込み命令のいずれか一方を発行すると、オーバーレイ・メモリコントローラ２４はこの読み取り／書き込み要求に応答して、この読み取り／書き込み要求の、キャッシュコントローラ３２と主記憶バス２０の両方への伝送を禁止する。したがって、待ち状態も再同期動作のいずれも不要である。
【００２０】
ＣＰＵ１２が上述のように高速バス１４にアドレスを挿入したとき、このアドレスが、オーバーレイ・メモリ２３に割り当てられたスタックアドレスのスパン内に含まれる場合、オーバーレイ・メモリコントローラ２４は応答し、要求されたデータを含んだメッセージか、または、要求された書き込み動作がすでに実行されていることを示すメッセージをＣＰＵ１２に返すことを可能にする。さらに、ＣＰＵ１２が高速バス１４上にアドレスを乗せると、キャッシュコントローラ３２もまた、この要求を捕捉する。オーバーレイ・メモリ２３がこの要求を満たすと、キャッシュコントローラ３２は、（高速バス１４を監視し、データアクセス要求が満たされたことを確認した結果）この要求への応答が禁止される。しかしながら、オーバーレイ・メモリコントローラ２４がその要求を満たさない場合、キャッシュコントローラ３２は、その要求を満たすために必要な動作を実行する。その動作として、主記憶１６からメモリバスコントローラ２２およびメモリバス２０を介してデータを獲得する動作を含めることもできる。
【００２１】
スタックメモリ領域４０、４２および４４のさらに他の部分をキャッシュメモリ３０が管理できることもまた理解されるはずである。しかしながら、もっとも効率よいシステム動作を提供するために、スタックメモリ領域のうち最も頻繁に使用される領域がオーバーレイ・メモリ２３に割り当てられるべきであることは明らかである。オーバーレイ・メモリ２３がスタックのうち最も使用される領域からのデータを処理するので、キャッシュメモリ３０は、使用頻度の少ないスタック領域および主記憶に常駐するデータを扱い、効率よく動作することが可能になる。
【００２２】
したがって、ＣＰＵ１２が読み取り／書き込み要求を発行すると、（ｉ）そのアドレスがオーバーレイ・メモリ２３によって保持される範囲にある場合、オーバーレイ・メモリ２３が単独でこれに応答し、（ｉｉ）アドレスがキャッシュメモリ３０において保持されるアドレスの範囲にある場合、キャッシュメモリ３０がこれに応答し、必要に応じて、続いて主記憶更新動作を実行する。その他の場合、アドレスは主記憶１６から公知の方法で獲得される。
【００２３】
したがって、本発明は、主記憶およびキャッシュメモリの高頻度アクセス領域を抽出することを可能にする追加要素を記憶階層に含める、柔軟な手段を提供するものであり、これにより性能が向上する。オーバーレイ・メモリの外部で発生する要求は主記憶がすべて自動的に満たすため、当該システムの設計者は、必要とされる高速オーバーレイ・メモリの量に対して非常に保守的であってもよい。
また、高速アクセス領域のキャッシュ管理に関する混乱を軽減することにより、かなりの量のシステム資源を解放し、これにより当該システムの性能を向上させる。
【００２４】
上述の説明が本発明の例示にすぎないことは理解されるはずである。本発明を逸脱しない限り、当業者は、様々な代替および変形を考案することが可能である。したがって、本発明は、添付される請求の範囲に属する上記の代替、変形および改変をいずれも包含することが意図される。
【００２５】
〔実施態様〕
なお、本発明の実施態様の例を以下に示す。
【００２６】
〔実施態様１〕  ａ）あるスパンのアドレスを有する主記憶手段（１６）と、
ｂ）そこに格納されたデータ値に高速アクセスするためのオーバーレイ・メモリ手段（２３）であって、前記主記憶手段（１６）に割り当てられる前記アドレス・スパンの範囲内に入るアドレスのオーバーレイ・スパンを有するオーバーレイ・メモリ手段（２３）と、
ｃ）前記オーバーレイ・スパンの範囲内のデータへのアクセスを要求するプログラム（２６）を動作させるプロセッサ手段（１２）と、
ｄ）前記オーバーレイ・メモリ手段（２３）内からのデータへアクセスすることによって前記要求に応答するオーバーレイ・コントローラ手段（２４）と、
ｅ）前記主記憶手段（１６）への前記要求の伝送を禁止する手段（２２）と
の組み合わせを備える処理装置。
【００２７】
〔実施態様２〕前記禁止手段（２２）は、あるメモリへのアクセスに含まれるアドレスが前記オーバーレイ・スパンの範囲内に常駐する時は常に、前記主記憶手段（１６）へのメモリ・アクセス・アクションの伝送を禁止することを特徴とする、実施態様１記載の処理装置（１０）。
【００２８】
〔実施態様３〕前記プロセッサ手段（１２）は、一時変数を格納するための複数のアドレス・スパンを前記オーバーレイ・メモリ手段（２３）に割り当て、前記アドレス・スパンのそれぞれは、前記オーバーレイ・コントローラ手段（２４）に格納されるベース・ポインタ・アドレスおよびレングス値によって示されることを特徴とする、実施態様１または実施態様２に記載の処理装置（１０）。
【００２９】
〔実施態様４〕前記プロセッサ手段（１０）は、前記オーバーレイ・コントローラ手段（２４）における１つまたは複数のベース・ポインタ・アドレスおよびレングス値を改訂することによって、前記オーバーレイ・メモリ手段（２３）に割り当てられる前記複数のアドレス・スパンを改変するプログラム手段（２６）を含む、実施態様３に記載の処理装置（１０）。
【００３０】
〔実施態様５〕前記禁止手段（２２）は、メモリ・アクセスに含まれるアドレスを受け取る際に、前記オーバーレイ・メモリ手段（２３）が前記メモリ・アクセスに応答する場合は、前記アドレスを前記主記憶手段（１６）に伝送しないことを特徴とする、実施態様１乃至実施態様４のいずれか一項に記載の処理装置（１０）。
【００３１】
〔実施態様６〕ｆ）前記オーバーレイ・スパンの範囲内に含まれない前記プロセッサ手段（１２）からのデータの要求に応答するためのキャッシュメモリ手段（３０、３２）をさらに設けたことを特徴とする、実施態様１乃至実施態様５のいずれか一項に記載の処理装置（１０）。
【００３２】
〔実施態様７〕前記キャッシュメモリ手段（３０、３２）は、前記オーバーレイ・スパンの範囲内のデータへのアクセスの要求を検出する際に、前記オーバーレイ・メモリ手段（２３）が前記アクセス要求に応答する場合は、前記主記憶手段（１６）からの前記データにアクセスすることを禁止することを特徴とする、実施態様６記載の処理装置（１０）。
【００３３】
〔実施態様８〕少なくとも主記憶（１６）と、オーバーレイ・メモリ（２３）とを含むプロセッサ（１０）におけるメモリ性能を改良する方法であって、前記オーバーレイ・メモリ（２３）は、これに格納されるデータへの高速アクセスを前記プロセッサ（１０）に可能ならしめることを特徴とし、さらに、
ａ）前記主記憶（１６）内のアドレス領域を前記オーバーレイ・メモリ（２３）に割り当てるステップと、
ｂ）（ｉ）前記オーバーレイ・メモリ（２３）が前記アクセスへ応答できるようにすることによって、さらに、（ｉｉ）前記アドレス領域におけるアドレスの前記主記憶（１６）への伝送を常に禁止することによって、前記アドレス領域からのデータへのアクセスにプログラムによって応答するステップと
を含むことを特徴とする方法。
【００３４】
〔実施態様９〕前記ステップａ）は、ベース・アドレス・ポインタおよびレングス値を前記オーバーレイ・メモリ（２３）に割り当てることによって、前記主記憶（１６）内のアドレスを割り当てることを特徴とする、実施態様８記載の方法。
【００３５】
〔実施態様１０〕前記ステップａ）は、ソフトウェア命令の使用によって、前記ベース・アドレス・ポインタを割り当て、また、新たなソフトウェア命令の発行によって前記ベース・アドレス・ポインタの再割り当てを可能にする、実施態様８または実施態様９に記載の方法。
【図面の簡単な説明】
【図１】図１は、本発明を実施するのに特にふさわしいデータ処理システムのブロック図である。
【図２】図２は、その一部がスタックとして使用されるように割り当てられ、別の部分にはオーバーレイ・メモリへのアドレス割り当てによって上書きされているメモリを概略的に示した図である。
【符号の説明】
１０：コンピュータ
１２：ＣＰＵ
１４：高速バス
１６：主記憶
１８：ＲＯＭ
２０：メモリバス
２２：メモリバス・コントローラ
２３：オーバレイ・メモリ
２４：オーバレイ・メモリ・コントローラ
２６：プログラム
３０：キャッシュメモリ
３２：キャッシュ・コントローラ
４６：サブ領域
４８：サブ領域
５０：サブ領域
【図１】
0003701135.tif 000002
【図２】
0003701135.tif 000003