(57)【要約】本メモリアクセスアーキテクチャ及び技術は、メモリから項目を順番に記憶するように構成された複数の独立したバッファを使用する。上記メモリは論理的に分割され、各々の独立したバッファは対応するメモリパーティションに関連付けられる。上記分割は、バッファの合計数ＫとバッファのサイズＮとに基づく巡回的に順次のものである。最初のＮ個のメモリロケーションは最初のパーティションに割り当てられ、次のＮ個のメモリロケーションは２番目のパーティションに割り当てられ、Ｋ番目のパーティションまで、そのように割り当てられる。そして、Ｋ番目のパーティションの後の次のＮ個のメモリロケーションは、最初のパーティションに割り当てられ、次のＮ個のロケーションは２番目のパーティションに割り当てられ、等々となる。或る項目がメモリからアクセスされる場合、該項目のメモリロケーションに対応するバッファがメモリからロードされ、次の順番のパーティションの事前取り込みが開始して次のバッファをロードする。プログラムの実行の間において、バッファ内容の“安定した状態”は、或るバッファが現命令を含み、１以上のバッファが現命令の直後の命令を含み、１以上のバッファが現命令の直前の命令を含むことに対応する。この安定した状態の条件は、プログラムループ、又はプログラム命令の連続した系列、及び他の通常のプログラム構造の実行に特に適している。パラメータＫ及びＮは典型的なサイズのプログラムループを収容するように選択される。
2004519767.tif 000002
【特許請求の範囲】
【請求項１】
メモリ内の項目にアクセスするメモリアクセスシステムにおいて、
各々が前記メモリの異なる論理パーティションに対応する複数のバッファと、
前記複数のバッファに動作的に結合されたメモリアクセスコントローラであって、該コントローラが、
アドレス指定された項目が、前記複数のバッファのうちの或るバッファに含まれているかを、該アドレス指定された項目に対応する論理パーティションの識別情報に基づいて判定し、
前記アドレス指定された項目が前記バッファ内にない場合に、該アドレス指定された項目を含む複数の項目を前記メモリから前記バッファにロードし、
次の複数の項目が次のバッファ内にない場合に、これら次の複数の項目を前記メモリから前記次のバッファにロードする、
ように構成され、かくして、前記複数の項目及び前記次の複数の項目が、前記対応するバッファ及び前記次のバッファから直接アクセスすることができることを特徴とするシステム。
【請求項２】
請求項１に記載のメモリアクセスシステムにおいて、前記各バッファのサイズが、前記複数の項目の前記メモリからのロードに関連する遅延に基づいて決定されることを特徴とするシステム。
【請求項３】
請求項１に記載のメモリアクセスシステムにおいて、前記複数のバッファの合計のサイズが、前記メモリにおいてプログラムループを形成する命令の系列の予測されるサイズに基づくものであることを特徴とするシステム。
【請求項４】
請求項１に記載のメモリアクセスシステムにおいて、
前記アドレス指定された項目が、最上位ビットから最下位ビットの順に、セグメント識別子、前記論理パーティションの識別情報及びワード識別子を含むようなアドレスによりアドレス指定され、
前記ワード識別子が、前記アドレス指定された項目に対応する前記バッファにおけるロケーションを識別する、
ことを特徴とするシステム。
【請求項５】
請求項４に記載のメモリアクセスシステムにおいて、前記メモリアクセスコントローラは、前記アドレス指定された項目が前記バッファに含まれているかを、前記セグメント識別子を前記バッファに現在ロードされている複数の項目に対応する記憶されたセグメント識別子と比較することにより決定するように構成されていることを特徴とするシステム。
【請求項６】
請求項１に記載のメモリアクセスシステムにおいて、前記論理パーティションは、前記メモリ内の複数のＮ個の順次のメモリロケーションに順次且つ巡回的に各々対応することを特徴とするシステム。
【請求項７】
請求項１に記載のメモリアクセスシステムにおいて、他の複数のバッファを更に有し、
前記メモリアクセスコントローラは更に、
他のアドレス指定された項目が他のバッファにない場合に、前記他のアドレス指定された項目を含む複数の他の項目を、前記メモリから前記他の複数のバッファのうちの前記他のバッファにロードし、
次の他の複数の項目が次の他のバッファにない場合に、前記次の他の複数の項目を前記メモリから前記次の他のバッファにロードする、
ように構成されていることを特徴とするシステム。
【請求項８】
請求項７に記載のメモリアクセスシステムにおいて、前記アドレス指定された項目がプログラムコードに対応し、前記他のアドレス指定された項目がデータに対応することを特徴とするシステム。
【請求項９】
メモリ内の項目にアクセスする方法において、
前記メモリを複数の巡回的に順次のパーティションに論理的に分割し、
複数のバッファを、前記複数のパーティションに関連付け、
アドレス指定された項目が前記複数のバッファにおける第１バッファにあるかを、前記複数のパーティションのうちの該アドレス指定された項目に対応する第１パーティションの識別情報に基づいて決定し、
前記アドレス指定された項目が前記第１バッファにない場合に、該アドレス指定された項目を含む第１の複数の項目を、前記メモリの前記第１パーティションから前記第１バッファにロードし、
第２の複数の項目が第２バッファにない場合に、前記第１パーティションに順番に隣接する前記複数のパーティションのうちの第２パーティション内にある前記第２の複数の後続の項目を前記対応する第２バッファにロードする、
ことを特徴とする方法。
【請求項１０】
請求項９に記載の方法において、後続のアドレス指定された項目が第３の複数の項目の前記メモリから前記バッファへのロードを生じさせるまで、前記複数のバッファにおける各バッファに複数の項目を各々保持することを特徴とする方法。
【請求項１１】
請求項９に記載の方法において、前記の巡回的に順次なパーティションに関連するサイズが、前記メモリからの項目のロードに関連する遅延に基づくもので、前記各バッファのサイズに対応することを特徴とする方法。
【請求項１２】
請求項９に記載の方法において、前記複数のバッファの合計のサイズが、前記メモリにおいてプログラムループを形成する命令の系列の予測されるサイズに基づくものであることを特徴とする方法。
【請求項１３】
請求項９に記載の方法において、
前記アドレス指定された項目が、最上位ビットから最下位ビットの順に、セグメント識別子、前記第１論理パーティションの識別情報及びワード識別子を含むようなアドレスによりアドレス指定され、
前記ワード識別子が、前記アドレス指定された項目に対応する前記バッファ内のロケーションを識別する、
ことを特徴とする方法。
【請求項１４】
請求項１３に記載の方法において、前記アドレス指定された項目が前記バッファに含まれているかを判定するステップが、前記セグメント識別子を前記第１バッファに現在ロードされている複数の項目に対応する記憶されたセグメント識別子と比較するステップを含んでいることを特徴とする方法。
【請求項１５】
計算装置上で実行するユーティリティプログラムにおいて、該プログラムが前記計算装置に、
アプリケーションプログラム内の１以上のループの各々に関連するサイズを識別させ、
該サイズがループサイズの閾値を超えるかを判定させ、
ユーザに、前記ループサイズの閾値を超えるような前記１以上のループの各々を通知させ、
前記アプリケーションプログラムが、メモリを各々がＮなる幅を持つＫ個のパーティションに論理分割するような巡回的な順次のメモリアクセスシステムを有するシステム上で動作されるように構成され、
前記ループサイズの閾値が前記Ｋ及びＮに依存する、
ことを特徴とするプログラム。
【請求項１６】
請求項１５に記載のユーティリティプログラムにおいて、前記ループサイズの閾値が（Ｋ−１）＊Ｎ＋１に略相当することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に係り、特にはメモリ分割、順次の事前取り込み（ｓｅｑｕｅｎｔｉａｌ ｐｒｅｆｅｔｃｈ）及び複数の独立したバッファの使用によりメモリアクセス遅延を最小化するシステム及び方法に関する。
【０００２】
【従来の技術】
メモリエレメントからのプログラムコード及びデータの取り出しに関連する遅延の効果を最小するためには、通常、種々の技術を利用することができる。一般的に、プログラム及びデータ項目は、プロセッサに対して外部のメモリ装置に記憶され、該外部メモリから項目をアクセスする時間は、当該プロセッサと一緒に配置されるメモリ（内部メモリ）から項目をアクセスする時間よりも大幅に長い。参照を容易にするために、ここではメモリなる用語はプロセッサの速度に対して比較的遅いアクセス時間を有するような記憶手段を指すために使用され、バッファなる用語はプロセッサの速度に対して短いアクセス時間を有するような記憶手段を指すために使用される。
【０００３】
普通の技術は、キャッシュの使用である。メモリ内の項目がアクセスされた場合、該項目を含むメモリのブロックが、当該プロセッサに対してローカルなキャッシュに読み込まれる。該キャッシュに読み込まれたメモリのブロック内に含まれるような後にアドレスされる項目は、キャッシュから直接アクセスされ、これにより、メモリに記憶された項目へのアクセスに関連する遅延を防止する。後にアドレスされる項目がキャッシュ内にないならば、メモリの適切なブロックがキャッシュに読み込まれることになり、メモリアクセス遅延を要する。キャッシュのサイズが大きい程、アドレスされる項目が当該キャッシュ内に存在する可能性が高くなる。他のパラメータも、項目が当該キャッシュ内に存在する尤度に影響する。例えば、１つのルーチンが他のルーチンを繰り返し呼び出すことがある。これら２つのルーチンが互いに近傍にある場合、これらは共にキャッシュ内にある可能性があり、メモリアクセス遅延は要さないが；さもなければ、これらルーチンの間の各呼び出し及び戻りに対してメモリアクセスが必要となる。通常は、複数の独立したキャッシュが使用されるので、メモリの可能性として離れた部分からの異なるメモリのブロックを記憶することができる。或るルーチンが他のものを繰り返し呼び出す例の場合、一方のキャッシュが第１ルーチンを含むと共に、他方のキャッシュが第２ルーチンを含むことが可能で、対応するキャッシュを介しての何れのルーチンに対するアクセスもメモリアクセス遅延を防止することができる。キャッシュバッファ処理に関する特別な問題は、ループのようなルーチンがブロック間の境界を横切って延びる場合に発生する。ルーチンのサイズに関係なく、両ブロックは２つのキャッシュに記憶される必要がある。ルーチンが境界を横切って延びる可能性を最小化するために、ブロック／キャッシュのサイズは典型的には大きくされ、これにより境界の数を低減する。
【０００４】
効果的にするためには、通常、キャッシュバッファ処理はかなり大きな、典型的には数百又は数千バイト程度の、キャッシュバッファを必要とする。従来のキャッシュバッファ処理の代替法は、事前取り込みバッファ処理（ｐｒｅｆｅｔｃｈ ｂｕｆｆｅｒｉｎｇ）であり、該処理においては、プロセッサがバッファから先行する命令にアクセスしている間に、後続の命令がメモリからバッファに読み込まれる。バッファの内容は、実行されている現在の命令のアドレスに基づいて又は後の分岐命令に基づいて連続的に更新されるので、事前取り込みバッファのサイズは、キャッシュバッファのサイズより大幅に小さくすることができ、なおかつ同様の効果を達成することが可能である。事前取り込み方法の効率は、予測技術を条件分岐命令に適用して、条件分岐命令が実行される場合に適切なコードが事前取り込みバッファ内に存在する尤度を最適化することにより更に向上することができる。例えば、ループ構造を識別することができ、事前取り込みアルゴリズムを、当該プログラムが当該ループを離脱するよりも一層頻繁に該ループの始点に戻るであろうと仮定するように構成することができ、これにより当該ループの始点の命令を、該ループが再実行されるか又は該ループを離脱するかを制御する条件分岐命令の直後に配置するようにする。条件分岐命令が結果として離脱となった場合にのみ当該プロセッサは遅延され、その際に当該ループ後の命令がメモリからバッファにロードされる。
【０００５】
キャッシュ及び事前取り込みバッファ処理方法の両方法において、プログラムを実行するのに要する時間は実質的に不確定である。何故なら、所要の項目がローカルバッファ内にある可能性は不確定であり、従って、メモリアクセスが必要とされる回数が不確定であるからである。
【０００６】
【発明が解決しようとする課題】
本発明の１つの目的は、実質的に確定的なメモリアクセス技術を提供することにある。また、本発明の他の目的は、内部バッファのサイズに関して効率的なメモリアクセス技術を提供することにある。また、本発明の他の目的は、全体のメモリアクセス時間に関して効率的なメモリアクセス技術を提供することにある。また、本発明の他の目的は、キャッシュ処理のような他のメモリアクセス技術と組み合わせることが可能なメモリアクセス技術を提供することにある。
【０００７】
【課題を解決するための手段】
これら及び他の目的は、メモリから項目を順番に記憶するように構成された複数の独立したバッファを使用するようなメモリアクセスアーキテクチャ及び技術を提供することにより達成される。上記メモリは論理的に分割（区画化）され、各々の独立したバッファは、対応するメモリ区画（パーティション）に関連付けられる。上記区画化はバッファの合計数Ｋ及びバッファのサイズＮに基づいた、巡回的に順次のものである。最初のＮ個のメモリロケーションは第１パーティションに割り当てられ、次のＮ個のメモリロケーションは次のパーティションに割り当てられ、等々のようにＫ番目のパーティションまで行い、斯かる割当が繰り返される。Ｋ＊Ｎ個のメモリロケーションがＫ個のパーティションに割り当てられた後の次のＮ個のメモリロケーションは、第１パーティションに割り当てられ、次のＮ個のロケーションは第２パーティションに割り当てられ、等々となる。或る項目がメモリからアクセスされる場合、該項目のメモリロケーションに対応するバッファがメモリからロードされ、次の順番のパーティションの事前取り込みが開始して、次のバッファをロードする。プログラムの実行の間に、バッファ内容の該“安定した状態”は、１つのバッファが現命令を含み、１以上のバッファが現命令の直後に続く命令を含み、１以上のバッファが現命令の直前の命令を含むことに対応する。この安定した状態の条件は、プログラムループ、又はプログラム命令の連続的なシーケンス、及び他の通常のプログラム構造を実行するのに特に適している。上記パラメータＫ及びＮは、典型的なサイズのプログラムループを収容するように選定される。
【０００８】
【発明の実施の形態】
以下、本発明を、添付図面を参照しながら例示として更に詳細に説明する。尚。全図を通して、同一の符号は同様の又は対応する特徴又は機能を示す。
【０００９】
図１は、本発明による例示的なメモリアクセスアーキテクチャを図示している。メモリ１１０は、左から右に順番のメモリロケーション１０１、１０２、１０３、…を含むと共に、メモリパーティションＩ、ＩＩ、…、ＶＩＩＩに論理的に区画化されているように図示されている。図示されているように、第１行目のメモリロケーションの終端におけるメモリロケーション１３２の後の次の順番のメモリロケーションは、メモリロケーション１０１の下の次の行のメモリロケーション１３３である。メモリロケーション１０１及び１３３は、各々、パーティションＩにおける第１メモリロケーションに対応する。即ち、メモリロケーションは、或る行の最後のメモリロケーションが次の行の最初のメモリロケーションに巡るような螺旋を形成するように見ることができる。説明を容易にするために、ここでは、このような区画化を、Ｎメモリロケーションのブロックが各パーティションに順次に割り当てられ、斯かる割当が、最後のパーティションに割り当てられたブロックに続くＮメモリロケーションのブロックが最初のパーティションに割り当てられるように巡回的に適用され、このような順次且つ巡回的な処理が全てのメモリロケーションが上記パーティションに割り当てられるまで繰り返される点で、巡回的な順次の区画化と定義する。
【００１０】
以下においては、最初のパーティションの最初のメモリロケーションから最後のパーティションの最後のメモリロケーションまでの連続したメモリロケーションの単一の集合を示すために、“行”の代わりに“セグメント”なる用語が使用される。Ｋ個のパーティションが存在し、各パーティションがＮ個のメモリロケーションの幅であるとすると、最初のセグメントは最初のＫ＊Ｎ個のメモリロケーションに対応し、２番目のセグメントは次のＫ＊Ｎ個のメモリロケーションに対応し、等々となる。
【００１１】
パーティションの数、Ｋ、が２の巾乗であり、各パーティションの幅、Ｎ、も２の巾乗である場合、図２Ａに示すようなアドレス構造２１０を、アドレス指定された項目のセグメント２１１、該セグメント２１１内のパーティション２１２及び該パーティション２１２内のメモリロケーション２１３を即座に識別するために使用することができる。説明を容易にするために、各メモリロケーションは以下ではプログラムワード又はデータワードを含むものと定義され、上記アドレス構造２１０内のロケーションフィールド２１３は“ワード”フィールド２１３と呼ばれる。
【００１２】
この発明によれば、各パーティションＩ、ＩＩ、…、ＶＩＩＩは、バッファＩ、ＩＩ、…、ＶＩＩＩ１２０に各々関連付けられる。プロセッサ１３０がメモリアクセスを開始すると、メモリアクセスコントローラ１４０は、アドレス指定されたセグメント２１１及びパーティション２１２のＮ個のワードをアドレス２１０に対応するバッファ１２０にロードし、該プロセッサは、このバッファ１２０から読み取る。同時に、コントローラ１４０は次のＮ個のワードを、次のパーティションに対応するバッファに事前取り込みする。各後続の項目がアドレスされるにつれ、コントローラ１４０は当該項目が既にバッファ１２０にロードされているかを判定するためにチェックを行い、もしそうなら、プロセッサ１３０に該項目をバッファ１２０から読み取るのを許可する。それ以外の場合、コントローラ１４０は対応するＮ個のワードをメモリからバッファ１２０に取り込む。Ｎワードの各集合がバッファ１２０に記憶されるにつれ、コントローラ１４０は、該記憶されたワードに対応するセグメント２１１を、例えば図２Ｂに図示するような一群のレジスタ２３０を使用して記録する。特定のパーティションに関連付けられたレジスタにおける記憶されたセグメント番号は、バッファ１２０内のデータに対応するメモリ１１０内のロケーションを固有に識別するのに充分であることに注意されたい。各アクセスに伴い、コントローラ１４０は次のバッファが次の組のＮワードを含んでいることを確かめるべくチェックし、必要に応じて連続的に次の組を事前取り込みする。このようにして、バッファ１２０の群は、結果的には、現在アドレス指定されているワードに先行するワードの集合、及び現在アドレス指定されているワードに後続するワードの集合を含むことになる。
【００１３】
特に重要なのは、メモリからの一貫し且つ順次の取り込みにより、バッファ１２０の内容がプログラムのシーケンスにおける如何なる時点においても充分に良好に確定され得る点である。終了時にループを制御するような条件分岐命令を伴うループ構造の前述した例を用いると、この条件分岐命令が実行された場合に、該条件分岐命令の後の命令が現在の又は次のバッファ内にあることが分かるであろう。何故なら、コントローラ１４０が次のバッファを自動的に事前取り込みするからである。上記条件分岐命令の前の命令も、現在の又は先のバッファに存在することが分かるであろう。何故なら、コントローラ１４０は、上述した事前取り込みが発生する場合を除き、バッファを重ね書きはしないからである。サイズＮのＫ個のバッファが存在する場合、（Ｋ−２）＊Ｎ＋１ワード以下の長さの如何なるループもバッファ１２０の群内に存在することがわかるであろう。何故なら、先行するＫ−２個のバッファは重ね書きされないからである。メモリ１１０の区画化の上記巡回的な性質により（例えば、順番のメモリエレメント１３２、１３３）、Ｋ−１のバッファが“次の”バッファに対応し、先行するバッファに対するアクセスを伴うような事前取り込みにより重ね書きされるであろう。（Ｋ−１）＊Ｎワードより長い如何なるループも、バッファ１２０の群外にあると分かり、メモリアクセス遅延を要することになる。（Ｋ−２）＊Ｎ＋１と（Ｋ−１）＊Ｎとの間のループに対しては、当該ループの始点及び終点の特定のワード位置が、この特別のループがバッファ１２０の群内にあるかを決定することになる。例えば、条件分岐命令が或るバッファにおける最後のワードであり、且つ、該ループの始点が或るバッファの第１ワードである場合、このループは（Ｋ−１）＊Ｎワードの大きさであり得る。何故なら、上記条件分岐命令を超えてはＮワードのみしかバッファ１２０に記憶されないからである。一方、上記条件分岐命令が或るバッファの最初のワードである場合は、この条件分岐命令を超えて２Ｎ―１ワードがバッファ１２０に記憶され、Ｋ＊Ｎ−（２Ｎ−１）ワードしか当該ループを含むために利用可能として残されない。プログラムをメモリに実際に割り当てる前に、（Ｋ−２）＊Ｎ＋１ワードより小さいループ、及び（Ｋ−１）＊Ｎワードより大きなループは識別することができ、改善に関するユーザの考察のために、“安全な”ループを“問題な”ループから潜在的に区別することができることに注意されたい。メモリに対する特別な割り当ての後、もし所望なら、（Ｋ−２）＊Ｎ＋１ワードと（Ｋ−１）＊Ｎワードとの間のサイズのループを識別して、条件分岐命令のワード位置に基づいて“安全”又は“問題”と印すこともできる。
【００１４】
同様の方法により、予測されるプログラム構造又は実際のプログラム構造に依存して、種々のアクセス方法を設けることができる。例えば、当該ループの始点に条件分岐命令を有するようなループをサポートするために、Ｎワードのブロックの複数の事前取り込みを実施することもできる。斯様な実施例においては、事前取り込みのＮワードのブロックに関するサイズは、当該プログラムが実行を開始する場合のパラメータとして定義することができるか、又はプログラム命令を介して動的に変更することが可能なパラメータとして定義することができる。後者の場合、コンパイラ又はアセンブラは、特定のコードの区域の構造に基づいて、事前取り込みのサイズを調整するように構成することができる。これら及び他のメモリアクセス最適化方法は、本開示に鑑みて、当業者にとっては自明であろう。
【００１５】
略確定的なメモリアクセス方法を設けることにより、プログラムの実行時間は推定することができ、メモリアクセス効率を向上させるために当該プログラムにおいて構造的な変更を実施することができる。即ち、例えば、変更に関するユーザの考察のために、（Ｋ−１）＊Ｎワードを越えるようなプログラムループを識別するような解析プログラムを設けることができる。“推奨される改善”が一般的規則及び通常の発見的学習に基づくような他の技術と比較して、本発明のメモリアクセス方法は、実質的に結果の分かるような、かなり明確な推奨される改善を可能にする。本発明の確定的制限に従うように結果としてのコードを構造化するために、自動化された方法をコンパイラにおいても具現化することができる。確定的な振る舞いを伴う効率的なメモリアクセス方法の、これら及び他の利点は、本開示に鑑みて、当業者にとっては明らかであろう。
【００１６】
パラメータＫ及びＮは、メモリ１１０に記憶されるであろうプログラムの予測される構造に基づいて、並びにプロセッサ１３０に対してローカルなバッファのサイズ及びコストに基づいて選択される。幅Ｎは、典型的には、効率的なメモリアクセスをもたらすようなサイズに基づいて、及びバッファアクセスと比較したメモリアクセスの相対速度に基づいて選択される。何らかのメモリ構造が多重ワードアクセスに関して特別に設計され、Ｎは多重ワードアクセス能力のサイズの倍数として選択される。また、前述したように、或るワードがバッファ１２０からアクセスされた場合、必要なら、次のバッファへのワードの事前取り込みが実行される。或るバッファの最初のワードから最後のものへの順次の流れを仮定すると、Ｎは好ましくは、Ｎ命令を実行するのに要する時間が次のバッファへの事前取り込みに要するアクセス時間よりも長く、従って先の命令が完了した場合に該次のバッファが適切な命令を含むように、充分に長くなるように選定されるものとする。パラメータＫは、典型的にはＮを選択した後に、普通に使用されるであろうループのようなルーチンの予測される長さに基づいて選定される。前述したように、長さが（Ｋ−２）＊Ｎ＋１ワード未満のプログラムループは、Ｋ個のバッファ内に全体として配置されることが保証されるであろう。Ｌが通常のループ構造の推定される最大のサイズである場合、Ｋは好ましくは少なくともＬ／Ｎ＋２であるように選定される。また、前述したように、Ｋ及びＮを２の巾乗であるように選定すると、アドレスの復号が容易になる。Ｇｒｅｇｏｒｙ Ｋ． Ｇｏｏｄｈｕｅ、Ａｔａ Ｒ． Ｋｈａｎ、Ｊｏｈｎ Ｈ． Ｗｈａｒｔｏｎ及びＲｏｂｅｒｔ Ｋａｌｌａｌのために２００１年２月２０日に出願された「ＡＲＭプロセッサ用のメモリ加速器」なる名称の同時継続中の米国特許出願第０９／７８８，６９１号（出願人整理番号：ＵＳ０１８０１１）は、各象限が４ワード幅であるような４つの象限へのメモリの区画化を教示し、該区画化はマイクロコントローラの実施例に特に適している。
【００１７】
ループ当たりのメモリアクセス遅延の最大数が、ループのサイズに無関係に、１であることに注意することが重要である。（Ｋ−２）＊Ｎ＋１命令未満のループ、及び（Ｋ−２）＊Ｎ＋１と（Ｋ−１）＊Ｎとの間の命令の幾つかのループに関しては、ループ当たりのアクセス遅延の数は零であり、全ての他のループに関しては、ループ当たりのアクセス遅延の数は１である。このように、より悪い場合の性能は（Ｋ−１）＊Ｎ＋１命令のループに対して発生し、ループのサイズが増加するにつれて、上記の自動的な順次の事前取り込みが連続的にメモリアクセス遅延を取り除き、これにより、（Ｎ−２）＊Ｎ＋１命令のループと比較して、全体のメモリアクセス効率を改善する。
【００１８】
図２Ａ及び図２Ｂのアドレス構造及びレジスタ編成は、解説の目的に提示されたもので、当業分野において通常の他のメモリ管理技術も使用することができる。同様にして、種々の技術の如何なるものも、本発明のメモリアクセス技術を容易化するために使用することができる。図３は、説明を完全にするために、本発明によるメモリアクセスに関する例示的なフローチャートを示すが、本発明は、この例示的な実施例に限定されるものではない。
【００１９】
３１０において、前記メモリアクセスコントローラは、処理されるべき次のアドレスを得る。典型的には、このアドレスは、当該プロセッサにより実行されるべき次の命令を識別する通常のプログラムカウンタの内容に対応する。条件分岐の例においては、当該プロセッサは該条件分岐に関連する判定の実行に際して上記プログラムカウンタを更新する。かようであるので、実際のアドレスは、当該アドレスが処理される時にのみ分かることになるであろう。
【００２０】
３１５において、上記メモリアクセスコントローラは、当該アドレスに対応するセグメントが、このアドレスに対応するパーティションにも対応するバッファに記憶されているかをチェックする。即ち、図１、２Ａ及び２Ｂを参照すると、アドレス２１０のパーティションフィールド２１２が、メモリ１２０のパーティションＩＩ内であることを示す場合、パーティションＩＩに対応するＩｎＢｕｆｆｅｒレジスタ２３２が、該レジスタ２３２に記憶されたセグメント番号とアドレス２１０に対応するセグメント番号２１１との間に一致があるかを見るためにチェックされる。
【００２１】
３１５において、セグメント番号が一致した場合、３４０においてアドレス指定されたワード２１３がバッファ１２０（本例ではバッファＩＩ）から直接読み出され、これによりメモリ１１０からの読み出しを防止する。
【００２２】
３１５において、アドレス２１０のセグメント２１１が、アドレス２１０のパーティション２１２に対応するバッファ１２０に現在含まれているセグメント２３２と一致しない場合は、３２０において、アドレス２１０のセグメント２１１及びパーティション２１２のＮワードが、メモリ１１０から、パーティション２１２に対応するバッファ１２０に取り込まれる。３３０において、パーティション２１２のＩｎＢｕｆｆｅｒレジスタは、パーティション２１２に対応するバッファ１２０の現セグメント２１１を反映するように更新される。アドレス指定されたワード２１３は、３４０において、バッファ１２０（本例では、バッファＩＩ）から直接読み出される。
【００２３】
３５０ないし３７０においては、もし必要なら、次のＮワードの事前取り込みが実行される。３５０において、当該区画化構成の巡回的な性質を考慮して、次のセグメント及びパーティション番号が決定される。即ち、パーティション番号がインクリメントされる。このインクリメント処理がパーティションの数を超えるようなパーティション番号を生じた場合は、最初のパーティション番号にリセットされ、セグメント番号がインクリメントされる。図３のフローチャートにおいて、ｎＳｅｇｍｅｎｔ及びｎＰａｒｔｉｔｉｏｎなる用語は、結果としての巡回的にインクリメントされたセグメント及びパーティション番号に対応する。ブロック３５５ないし３７０は、先のセグメント及びパーティションのパラメータに代えて次のｎＳｅｇｍｅｎｔ及びｎＰａｒｔｉｔｉｏｎのパラメータを用いる点を除いて前述したブロック３１５ないし３３０に相当する。このようにして、次にアドレス指定されるＮワードのブロックがバッファ１２０に含まれることが保証される。
【００２４】
当業者にとり自明なように、上記事前取り込み処理３５０ないし３７０は、読み取り及び／又は取り込み処理３１０ないし３４０と並列に実行することができる。即ち、例えば、処理３５０ないし３７０は当該アドレスのセグメント及びパーティションが３１０において決定された直後に別の処理スレッドとして生じさせることができるか、又は該処理が自身のセグメント及びパーティション決定手段を有し、ブロック３１０が実行されるのと同時に生じされるようにすることができる。同様に、上記処理は、処理３１０ないし３４０の終了時に生じるが、３４０においてワードが読み出されるやいなや、当該プロセッサが継続するのを可能とするように構成することもできる。他の方法は、メモリ１１０の特別なアクセス能力及びプロセッサ１３０により提供される並列処理に基づいて明らかとなるであろう。
【００２５】
以上、本発明はメモリに対する読み出しアクセスの例を用いて提示されたが、メモリの対する読み取り／書き込みアクセスに対しても等しく適用可能であることに注意されたい。読み取り／書き込みアクセスの実施例においては、上述した方法は、バッファが別のセグメントに再割り付けられるべきであり、及びバッファの内容が最初にメモリから取り込まれてから変化している場合に、メモリに対するバッファの内容の書き込みにより増加される。一時バッファからのメモリに対する斯様な更新を容易化及び最適化するメモリ管理方法は、当業技術において普通のものである。
【００２６】
同様に、図１〜２の特別な構成は、理解を容易にするために提示された。メモリアクセスコントローラ１４０、バッファ１２０、コントローラ１４０及びレジスタ２３０は、例えば、単一のロジックブロックを形成しても良く；これらの要素の何れか又は全てがプロセッサ１３０内に含まれるようにしてもよく；等々である。同様に、ハードウェアとファームウェアとの組合せも使用することができる。幾つかのシステムにおいては、例えば、上記メモリアクセスコントローラは、マイクロコードエンジンにおいて実行される一群のマイクロコードでもよく、又は該コントローラは一群の論理ゲートでもよく、等々である。
【００２７】
本発明は、主にプログラム命令に関するメモリアクセスに関して提示されたが、特にデータ項目に対する順次のアクセス及びグラフィックス処理システムの如きデータ項目のブロックに対する繰り返しアクセスを含むようなアプリケーションに関するデータアクセス方法にも等しく適用することができる。斯様な実施例におけるバッファは、グラフィックスオブジェクト、テクスチャ等々を含むディスクファイルの対応する部分からロードされるようなプログラム内のデータアレイとすることもできる。
【００２８】
上記は、単に本発明の原理を解説したものである。従って、ここに明示的には記載されていないが本発明の原理を具現化し、依って本発明の趣旨及び範囲内であるような種々の構成を、当業者であれば案出することができることが理解されるであろう。例えば、ここに提示したメモリアクセス方法は他のアクセス方法と一緒に使用することもできる。多重キャッシュの例に従って、メモリ１１０の異なる領域からの項目をバッファ処理するために複数組のバッファＩ、ＩＩ、…ＶＩＩＩを設けることもできる。現命令からかなりの距離にあるアドレスを参照するような分岐命令又はデータアクセス命令が発生した場合、該アドレスに対応するＮワードを第２組のバッファにおける対応するバッファにロードすることができ、単一の組のバッファに関して前述したように、次のＮワードを該第２組のバッファの次のバッファへ事前取り込みすることができる。このようにして、或るルーチンが、メモリの他の領域における他のルーチンを繰り返し呼び出すか又はデータにアクセスする場合、メモリの両領域をバッファ処理することができ、これにより繰り返し的なメモリアクセスを防止することができる。例えば、２組のバッファの使用は、プログラムコード及びデータに対するインターリーブされたアクセスに特によく適している。これら及び他のシステム構成及び最適化フィーチャは、当業者にとっては本開示から明らかであり、添付請求項の範囲内に含まれるものである。
【図面の簡単な説明】
【図１】
図１は、本発明による例示的なメモリアクセスアーキテクチャを示す。
【図２Ａ】
図２Ａは、本発明によるメモリアクセスアーキテクチャにおいて使用する例示的なアドレス構造を示す。
【図２Ｂ】
図２Ｂは、本発明によるメモリアクセスアーキテクチャにおいて使用する例示的なバッファレジスタを示す。
【図３】
図３は、本発明によるメモリアクセスに関する例示的なフローチャートである。
【図１】
2004519767.tif 000003
【図２Ａ】
2004519767.tif 000004
【図２Ｂ】
2004519767.tif 000005
【図３】
2004519767.tif 000006
【国際公開パンフレット】
2004519767.tif 000007
2004519767.tif 000008
2004519767.tif 000009
2004519767.tif 000010
2004519767.tif 000011
2004519767.tif 000012
2004519767.tif 000013
2004519767.tif 000014
2004519767.tif 000015
2004519767.tif 000016
2004519767.tif 000017
2004519767.tif 000018
2004519767.tif 000019
2004519767.tif 000020
2004519767.tif 000021
2004519767.tif 000022
2004519767.tif 000023
【国際公開パンフレット（コレクトバージョン）】
2004519767.tif 000024
【国際調査報告】
2004519767.tif 000025
2004519767.tif 000026
2004519767.tif 000027