(57)【要約】メモリ制御器は、プロセッサによってアサートされるべき次のアドレスを予測するインクリメンタを含む。このインクリメンタ（実質的には、カウンタであるが）は、ラップ境界においてラップするように、並びに、メモリがページモードにある場合に予測されたアドレスがページ境界を通過するときを示すように構成されている。このインクリメンタは、後続のアドレスが異なるページにある場合、または、アドレスループの場合、さらに、後続のアドレスが連続していない場合であっても正確な予測をもたらす。従って、正確なアドレス予測の数は増加し、全体の性能を向上させる。本発明は、１またはそれ以上のページの境界を通過する指示ループを有する信号処理装置に特に適用可能である。
2004522227.tif 000002
【特許請求の範囲】
【請求項１】
ラップ境界値およびアサートされた各アドレスのラップ境界動作として推定アドレスを発生し、前記ラップ境界値のモデュロ数関数であるモデュロ数でインクリメント機能を実行し、プロセッサから前記アサートされたアドレスおよび前記ラップ境界値を受け取るためにバスインタフェースに結合されており、前記推定アドレスを供給するためにメモリインタフェースに結合されているインクリメンタを備えたシステム。
【請求項２】
前記インクリメンタは、前記推定アドレスのうち全部ではないが、その複数に対して、ページ境界検出信号を発生することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記インクリメンタがページ境界信号を発生するために用いられる推定アドレスは、前記システムバスを介して前記プロセッサからページ境界値の関数として決定されることを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記ページ境界値はメモリのページサイズに対応しており、前記インクリメンタは、前記メモリへ前記ページ境界検出信号および前記推定アドレスを提供することを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
請求項１に記載されたインクリメンタと、前記プロセッサと、前記システムバスおよび前記メモリを備えたコンピュータシステム。
【請求項６】
メモリコントローラの操作方法であって、
プロセッサからラップ境界値を受け取るステップと、
前記プロセッサからアサートされたアドレスを受け取るステップと、
少なくとも部分的に前記ラップ境界値の関数であるモデュロ数に従って前記アサートされたアドレスをインクリメントすることによって推定アドレスを発生するステップと、
前記推定アドレスをメモリへ転送するステップとを具備する方法。
【請求項７】
前記推定アドレスの全部ではないが、その複数に対してページ境界指標を生成するステップをさらに具備することを特徴とする請求項６に記載の方法。
【請求項８】
前記プロセッサからページ境界値を受け取るステップをさらに備え、
前記ページ境界指標は、前記ページ境界指標の関数として決定される推定アドレスに対して生成されることを特徴とする請求項７に記載の方法。
【請求項９】
前記ページ境界値は、前記メモリのページサイズに対応することを特徴とする請求項８に記載の方法。
【請求項１０】
メモリコントローラの操作方法であって、
プロセッサからページ境界値を受け取るステップと、
前記プロセッサからアサートされたアドレスを受け取るステップと、
前記アサートされたアドレスをインクリメントすることによって推定アドレスを発生するステップと、
前記ページ境界値によって示されたとおりにページ境界に対応する推定アドレスが発生するときには、ページ境界検出信号を送信するステップとを具備する方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、コンピュータに関し、特に、コンピュータに用いられるメモリコントローラに関する。本発明の主な目的は、メモリコントローラによって、より有効な予測アドレッシング（speculative addressing）を提供することである。
【０００２】
現代の発展の多くは、コンピュータの普及の増大に付随する。典型的なコンピュータは、データや命令を格納するためのメモリ、並びに、指示を実行し、適宜、データを処理する１またはそれ以上のプロセッサ（例えば、“中央演算処理装置”または“ＣＰＵ”）を有する。コンピュータによって実行される命令は、比較的簡単なものであり、複雑なタスクは、多数の命令を有するプログラムを実行することによって実現され得る。コンピュータの優劣は、命令を実行する速度に依るところが大きい。
【０００３】
コンピュータ技術における進歩は、コンピュータの能力の劇的な向上をもたらした。その進歩が劇的であったのと同様に、より高い演算能力への飽き足らない要求がある。速度向上の弊害の１つは、プロセッサとメモリとの間においてデータや命令を転送するためにかかる時間である。原理的には、プロセッサはメモリと直接に通信するが、プロセッサおよびメモリの両方の設計サイクルが早いために、市場で売り出されたときには、プロセッサおよびメモリを適切にインタフェースさせることが困難になってしまう。
【０００４】
例えば、いくつかのメモリは、ページドモード（paged mode）のために設けられており、そのページドモードにおいては、次のアドレスを決定するために、低位のアドレスビットのみを調べる（examine）必要があると推測することができる。比較的少ないアドレスラインを調査すれば足りるので、そのメモリは、より迅速にアドレスへ応答することができる。ページ変更が要求される場合、ページ境界決定信号はメモリへ送信され、この場合において、メモリは総てのアドレスビットを見ることで応答する。一般に、プロセッサは、ページモードの存在のようには、メモリの仕様を認識（aware）していない。よって、プロセッサとメモリとの適切なインタフェースに問題が生じる。
【０００５】
メモリコントローラは、適切なメモリ動作モードが用いられ得るように、プロセッサとメモリタイプとの間をインタフェースするために、比較的短時間で設計され得る。メモリコントローラが存在すると、メモリへ直接に転送される代わりに、プロセッサによってアサートされたアドレスはメモリへ転送され、あるいは、変換されてからメモリへ転送されるので、メモリコントローラの存在によりメモリへのアクセスに対して潜在的に待ち時間が付加される。一方、メモリコントローラは、次のアドレスを前もって予測してメモリへアクセスすることによって、アクセススピードを上昇させることができる。典型的には、メモリのアドレスは連続的にアクセスされ、よって、その予測は、単に、連続した次のアドレスを選択することを含む。いくつかのプロセッサは、次のアドレスが連続しているものか否かを示すので、その予測の妥当性は、次のアドレスが受信される前であっても既に知られている。
【０００６】
予測のアプローチは、予測が正確である範囲で性能を改善させる。典型的には、予測は、アドレスが連続していて、ページの境界を通過しない場合には正確である。本発明の目的は、正確な予測の領域（class）を拡大することによって、さらに性能を改善させることである。
【発明の要旨】
【０００７】
本発明は、メモリ側におけるページ境界を通過する場合、および、プロセッサ側においてバースト転送でのラップ境界（wrap boundaries）を通過する場合にアドレスをラッピング(wrapping)するというアドレス予測に関する２つの重要なケースに対処する。本発明は、プログラマブルラップ境界においてラップする予測アドレスを与え、および／または、予測ページ境界検出信号を与えるメモリコントローラを提供する。本発明の一実施形態は、プログラマブルカウンタの形態でインクリメンタを備えたメモリコントローラであり、本発明の他の実施形態は、そのようなメモリコントローラを有するコンピュータシステムである。本発明による方法は、予測ラップまたは予測ページ境界検出、あるいは、その両方を含み得る。
【０００８】
バースト転送のラップ境界のケースにおいて、本発明は、正確なアドレス予測によって達成される性能の向上を妨げることなくラッピングをもたらす。予測ページ境界が用いられる場合には、一連の正確な予測は、ページ境界の通過をほとんどまたは全く妨げることなく、続行することができる。予測ラップおよびページ境界予測は、ループがページ境界に亘って延びる場合において一緒に用いられ得る。本発明のこれらの、および他の特徴および利点は、添付図面に関する以下の記述から明らかである。
【好適な実施形態の詳細な説明】
【０００９】
本発明によれば、図１に示すように、コンピュータシステムＡＰ１は、プロセッサ（ＣＰＵ）１１、システムバス１３、メモリ１５およびメモリコントローラ２０を備えている。メモリコントローラ２０は、システム−バスインタフェース２１、ページ値レジスタ（page-value resister）ＢＰ、インクリメンタ２３、マルチプレクサ２５およびメモリインタフェース２７を有する。インタフェース２１および２７は、単一の集積回路上にプロセッサ１１およびバス１３と共に位置付けられているので、個々に構成された素子というよりも、機能的な素子である。構成として、インクリメンタ２３は、Ｎビットカウンタ素子ＣＴ０〜ＣＴＮおよびＯＲゲートＧ１を有するプログラマブルカウンタである。
【００１０】
プロセッサ１１は、システムバス１３を介して、次の信号、即ち、データＤＡＴＡ１、アドレスＡＤ、転送サイズ表示ＴＳおよびラップ境界値ＢＷをメモリコントローラ２０へ転送する。図１において、転送サイズが１バイトである場合には、ＴＳ＝００１である。転送サイズが２バイトである場合（３２ビットシステムにおける半ワードまたは１６ビットにおける１ワード）には、ＴＳ＝０１０である。転送サイズが４バイトである場合（３２ビットシステムにおける１ワードまたは１６ビットにおける２ワード）には、ＴＳ＝１００である。監視モードにおいて、プロセッサ１１は、レジスタＢＰへページ境界値（page boundary value）を与えることができる。
【００１１】
データは、レジスタＢＰ内に格納されるデータを含み、それは、プロセッサ１１のアドレス空間内に位置付けられている。関連するアドレスＡＤは、動作が読出しであるかまたは書込みであるか、並びに、アドレスが連続しているか否かの指標となる。読出し動作の事象においては、データは、メモリ１５から、メモリコントローラ２０を通して、システムバス１３を介し、プロセッサ１１へ転送される。
【００１２】
図１に詳細に示されているように、ビットカウンタ素子ＣＴ１は、１ビット加算器ＡＤ１、ＮＡＮＤゲートＧ２および２つのＡＮＤゲートＧ３およびＧ４を含む。素子ＣＴ１は、ラップレジスタＢＰおよびＷＰおよび各ページから最低位のビット、転送サイズ信号ＴＳの最下位から２番目のビットおよびアドレス信号ＡＤの最下位から２番目のビットを受け取る。アドレス信号ＡＤおよび転送サイズ信号ＴＳは、加算器ＡＤ１のそれぞれの加数入力（addend inputs）へ与えられる。ビットカウンタ素子ＣＴ０からのキャリー入力（carry-in）も受けている。結局、加算器ＡＤ１の出力ＡＱ１は、与えられたワード幅に対して後続のアドレスの最下位から２番目のビットである。残りのビットカウンタ素子ＣＴ０およびＣＴ２〜ＣＴＮは、後続のアドレスのうち残りのビットを提供する。したがって、インクリメンタ２３の機能は、プロセッサ１１によって現時点でアサートされているアドレスへ次のアドレスを提供することである。
【００１３】
明白な簡略化以外に、ビットカウンタ素子ＣＴ０〜ＤＴＮは、類似する。例えば、ビットカウンタ素子ＣＴ３が図２に示されている。このビットカウンタ素子ＣＴ３は、１ビット加算器の代わりに、ＸＯＲゲートＧ５およびＡＮＤゲートＧ６を含む１ビットインクリメンタを有する。残りのロジックゲート、ＮＡＮＤゲートＧ７、並びに、ＡＮＤゲートＧ８およびＧ９は、ビットカウンタ素子ＣＴ１における対応部分に該当する。ＸＯＲゲートＧ５は、予測アドレスビットＡＱ３を発生させるために、入力としてキャリー入力ＣＩ３およびアドレスビットＡＤ３を有し、ＡＮＤゲートＧ６は、ゲートＧ７、Ｇ８およびＧ９に関して、ページ境界検出ビットＤＴ３およびキャリー出力(carry out)ＣＱ３を発生させるために、同一の入力を有する。
【００１４】
ビットカウンタ素子ＣＴ４は、ビットカウンタ素子ＤＴ３に本質的に類似する。ビットカウンタ素子ＣＴ５〜ＣＴＮもまた、１ビットインクリメンタを採用しているが、付属ロジック回路は、１またはそれ以上の定入力（constant inputs）によって縮小することができる。ビットカウンタ素子ＣＴ５〜ＣＴＮへのページ境界入力は、メモリコントロール２０が３２バイトよりも大きなページサイズを提供しないので、ハイに維持される。ビットカウンタ素子ＣＴ５へのワード境界入力はワード境界信号ＢＷによって制御され、一方で、それに対応するビットカウンタ素子への入力が最大６４バイトのラッピングバースト転送に適応させるためにハイに維持される。ビットカウンタ素子ＣＴ０は、キャリー入力信号なしに、１ビット加算器となり得る。
【００１５】
図３には、システムＡＰ１の記述において実施される本発明による方法Ｍ１のフロー図が示されている。ステップＳ１において、ページ境界値がレジスタＢＰへ入る。代表的には、これは、監視モード（supervisor mode）で生じ、ページ境界値は、ユーザがプログラムを実行している間には変更されない。システムＡＰ１において、レジスタＢＰは、従来の書込み可能なレジスタでよい。しかしながら、ページ境界値を変更する必要のない用途においては、レジスタＢＰは、読出し専用メモリ（ＲＯＭ）内でコード化され、または、配線接続され（hard-wired）てもよい。
【００１６】
ステップＳ２において、ラップ境界は、ユーザがプログラムを実行している間にアサートされる。そのラップ境界は、インクリメンタ２３がゼロにリセットするときの値であり、従って、モデュロ計数として役に立つ。このモデュロ計数は、異なるサイズのループを最適に管理することができるように、プログラム実行の間に変更され得る。
【００１７】
ステップＳ３において、プロセッサ１１は、アドレス幅値に従ってアドレスおよび連続／不連続の指標ＳＱをアサートすることによって、読出しまたは書込みを開始する。ステップＳ４において、メモリコントローラ２０は、操作が連続的か否かを決定するために、連続／不連続の指標を用いる。連続アドレスが示されている場合には、マルチプレクサ２５はＡＱを選択し、不連続転送が示されている場合には、マルチプレクサ２５はアドレスＡＤ’を選択する。代替的な実施形態としては、メモリコントローラは、それがプロセッサによってアサートされたアドレスと等しくないことを比較器が示している場合以外は、カウンタの出力を選択する。
【００１８】
そのアドレスが連続的でない場合、方法Ｍ１は、ステップＳ４へ進む。アサートされたアドレスによって示しされた位置に格納されたデータは、データ転送のために選択される。読出し操作が要求された場合には、データは、ステップＳ５において、データは、メモリ１５から、バスＤＡＴＡ３を介してメモリインタフェース２７へ、データバスＤＡＴＡ２を介してシステムバスインタフェース２１へ、システムバス１３へ、プロセッサ１１へ転送される。書込み操作が要求されていた場合には、データは、プロセッサ１１から、システムバス１３を介してシステムバスインタフェース２１へ、バスＤＡＴＡ２を介してメモリインタフェース２７を通過してメモリ１５へ転送される。ステップＳ４において、アドレスが連続であると決定された場合には、ステップＳ５において転送されたデータは、メモリ１５からアドレス位置ＡＱから既にアクセスされたデータである。
【００１９】
ステップＳ５またはＳ６のいずれかの後、インクリメンタ２３は、ステップＳ７において予測アドレスを発生する。これは、転送サイズ信号ＴＳによって示されたアドレス幅を現時点においてまたは最近アサートされたアドレスＡＤ’に付加することによって達成される。この加算は、モデュロＢＷであるので、アドレスはプログラムされたラップ境界においてラップする。また、もし、ページ境界に遭遇している場合には、決定指標は、ラインＤＴＱに沿って発生される。ステップＳ８において、メモリ１５内の予測アドレスにおけるデータがアクセスされ、メモリインタフェース２７にバッファされる。次の繰り返しのステップＳ３において、もし、その予測が確認された場合にはこのデータは転送され、次の繰り返しのステップＳ３において、もし、確認されなかった場合にはこのデータは上書きされる。
【００２０】
この方法は、ステップＳ３へ戻ることによってその方法を繰り替えし、それにより、プロセッサは、次に“アサートされる”アドレスをアサートする。しかしながら、図３において破線で示されているように、次の繰り返しは、ステップＳ２における新しいラップ境界を設定することを含む場合がある。一般に、ページ境界は、プログラムの実行の間に変更されることはない。
【００２１】
予測アドレスがシステムＡＰ１において発生される速度は、インクリメンタ２３のキャリー伝播設計（carry-propagation design）によって制限される。ビットカウンタ素子ＣＴ０がそのキャリー出力を決定するまでは、ビットカウンタ素子ＣＴ１は、そのキャリーおよびアドレス出力を決定することができない。同様に、ビットカウンタ素子ＣＴ２〜ＣＴＮは、それらの結果を決定するために、低位（low-order）ビットカウンタ素子からのキャリーを必要とする。従って、キャリーは、予測アドレスを発生させるために、Ｎステージに亘って伝播しなければならない。
【００２２】
図４に示すように、キャリーの伝播による待ち時間を低減させるために、キャリー選択カウンタ４０がインクリメンタ２３の代わりに用いられ得る。概念的には、カウンタ４０は、その位置０〜７を低位と高位のグループに分ける。４つの最下位ビットカウンタ素子は、低位ビットカウンタグループ４１を構成し、それにより、４ビット出力ＡＱ[３：０]を供給する。２つの高位グループ４２および４３があり、そのそれぞれは、４つの最上位ビット位置（４−７）に対してビットカウンタ素子を含む。グループ４２および４３は、ビットカウンタグループ４２が０に配線接続されたキャリー入力を有し、一方で、グループ４３が１に配線接続されたキャリー入力を有するという点においてのみ異なる。
【００２３】
結局、グループ４２および４３は、低位グループ４１のキャリー出力Ｃｑに対してとり得る２つの結果に対し、高位の結果を予め計算する。低位のキャリー出力が決定されると、それは２つの高位の結果のうちの１つを選択するために用いられられる。もし、ＣＱ３が０である場合には、マルチプレクサ４４は、高位グループ４２の結果を選択し、もし、ＣＱ３が１である場合には、マルチプレクサ４４は高位クループ４３の結果を選択する。選択された検出信号ＤＴ［４−７］は、ページ境界検出信号ＤＴ［０−８］の全体を決定するために、低位グループ４１からの検出信号ＤＴ［０−３］とＯＲ演算される。この場合、予測アドレスを発生するために要する待ち時間は、インクリメンタ２３に比較してほぼ半分に低減するが、余分な高位ビットカウンタ素子およびマルチプレクサ４４のために、追加の集積回路領域の費用がかさむ。
【００２４】
本発明は、代表的には、コンピュータおよび集積回路に適用され、特に、信号処理装置に適用される。本発明は、異なるホストシステム、異なるメモリコントローラ設計および異なるカウンタ設計の使用に適用され得る。記載された実施形態のこれらの、並びに、他の変形および変更は、本発明によってもたらされ、その範囲は、特許請求の範囲によって規定される。
【図面の簡単な説明】
【００２５】
【図１】本発明に従ったメモリコントローラを有するコンピュータシステムのロジック回路図。
【図２】図１のメモリコントローラにおける１ビットカウンタ素子のロジック回路図。
【図３】図１のコンピュータシステムに用いられる本発明に係る方法のフロー図。
【図４】性能を向上させるためにキャリー選択技術を組み込んだ代替的なメモリコントローラの一部分の回路図。
【図１】
2004522227.tif 000003
【図３】
2004522227.tif 000004
【国際公開パンフレット】
2004522227.tif 000005
2004522227.tif 000006
2004522227.tif 000007
2004522227.tif 000008
2004522227.tif 000009
2004522227.tif 000010
2004522227.tif 000011
2004522227.tif 000012
2004522227.tif 000013
2004522227.tif 000014
2004522227.tif 000015
2004522227.tif 000016
2004522227.tif 000017
【国際公開パンフレット（コレクトバージョン）】
2004522227.tif 000018
【国際調査報告】
2004522227.tif 000019
2004522227.tif 000020