(57)【特許請求の範囲】
【請求項１】
メモリに含まれるプログラム命令を実行するように構成されたプロセッサと、
メモリアクセスシステムと、
を有するコンピュータシステムであって、
前記メモリアクセスシステムが複数の命令ラッチを含み、
ここで、前記複数の命令ラッチの各々の命令ラッチが、前記メモリの複数の循環的に順次的な区画の対応する区画に関連し、
前記メモリアクセスシステムが、同時に、
前記プロセッサによりアドレス指定された命令が前記複数の命令ラッチの第１命令ラッチ内に含まれているかどうかを、前記アドレス指定された命令に対応する前記メモリの区画の識別に基づいて決定し、
もし前記アドレス指定された命令が前記第１命令ラッチに無いならば、前記アドレス指定された命令を含む第１の複数の命令を、前記メモリから前記第１命令ラッチ内にロードし、
もし第２の複数の命令が第２命令ラッチに無いならば、前記第２の複数の命令を、前記メモリから前記複数の命令ラッチの前記第２命令ラッチ内にロードする
ように構成され、
これにより、前記第１及び第２の複数の命令が、対応する前記第１及び第２命令ラッチから、前記プロセッサにより直接アクセスが可能である、
コンピュータシステム。
【請求項２】
さらに、前記複数の命令ラッチに対応する複数のアドレスラッチを含むコンピュータシステムであって、
前記メモリアクセスシステムが、さらに、各命令ラッチ内にロードされた複数の命令の各々に関連したセグメント識別子を、前記複数のアドレスラッチの対応するアドレスラッチに記憶するように構成される、
請求項１に記載のコンピュータシステム。
【請求項３】
前記アドレス指定された命令が、離散ビットフィールドとして、即ち、前記セグメント識別子と、前記メモリの前記区画の識別と、ワード識別子とを含むアドレスによりアドレス指定され、
前記ワード識別子が、前記アドレス指定された命令に対応する前記第１命令ラッチにおける位置を識別する、
請求項２に記載のコンピュータシステム。
【請求項４】
前記メモリアクセスシステムが、前記アドレス指定された命令が前記第１命令ラッチに含まれるかどうかを、前記アドレス指定された命令の前記セグメント識別子を、前記第１命令ラッチに関連した前記アドレスラッチに記憶される前記セグメント識別子と比較することにより決定するように構成される、
請求項３に記載のコンピュータシステム。
【請求項５】
前記アドレスに含まれる前記ワード識別子に基づいて、前記命令ラッチに記憶された前記複数の命令から命令を選択するようにそれぞれ構成される前記複数の命令ラッチに対応する複数のワードマルチプレクサと、
前記アドレスに含まれる前記区画の識別に基づいて、特定のワードマルチプレクサにより選択された前記命令を選択するように構成される前記複数のワードマルチプレクサの各々と動作可能に結合された区画マルチプレクサと、
をさらに含む、請求項３に記載のコンピュータシステム。
【請求項６】
さらに前記メモリを含む、請求項１に記載のコンピュータシステム。
【請求項７】
前記プロセッサがARMプロセッサである、請求項１に記載のコンピュータシステム。
【請求項８】
前記第１及び第２の複数の命令が、同じ数の命令を含み、
前記命令数が、前記プロセッサが前記命令数を実行する実行時間と、前記命令セットのロードを達成するアクセス時間とに基づいて決定される、
請求項１に記載のコンピュータシステム。
【請求項９】
前記メモリアクセスシステムが、また、前記メモリからの前記第２の複数の命令のロードを選択的に使用不可能にすることを可能にするように構成される、
請求項１に記載のコンピュータシステム。
【請求項１０】
前記複数の第１及び第２命令ラッチの各々が、前記メモリのアクセス遅延と前記プロセッサの命令サイクル時間との比に基づく多数の命令ラッチを含み、
これにより前記第２の複数の命令の前記ロードが、前記第１の複数の命令を実行するのに要する時間内に達成される、
請求項１に記載のコンピュータシステム。
【請求項１１】
前記メモリアクセスシステムが、さらに、複数のデータラッチを有し、
前記メモリアクセスシステムが、さらに、
前記プロセッサによりアドレス指定されたデータ項目が、前記複数のデータラッチの第１データラッチ内に含まれているかどうかを決定し、
もし前記アドレス指定されたデータ項目が、前記第１データラッチ内に無いならば、前記アドレス指定されたデータ項目を含む第１の複数のデータ項目を、前記メモリから前記第１データラッチ内にロードするように構成される、
請求項１に記載のコンピュータシステム。
【請求項１２】
前記メモリアクセスシステムが、さらに、
もし第２の複数のデータ項目が第２データラッチ内に無いならば、前記第２の複数のデータ項目を、前記メモリから前記複数のデータラッチの前記第２データラッチ内にロードするように構成され、
これにより、前記第１及び第２の複数のデータ項目が、前記対応する第１及び第２データラッチからの前記プロセッサによる直接アクセスに対して利用することができる、
請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
関連出願の引用
本出願は同時に出願されている米国特許出願 ”CYCLICALLY  SEQUENTIAL  MEMORY  PREFETCH”、出願番号09/788,692（代理人整理番号US018012）に関する。
【０００２】
１．本発明の技術分野
本発明は、電子処理装置の分野に関し、特に、アドバンストRISCマシン（ARM（商標））アーキテクチャ及びフラッシュメモリを使用する処理システムに関する。
【０００３】
【従来の技術】
２．関連技術の説明
アドバンストRISCマシン（ARM）アーキテクチャは、一般に、消費者製品に埋め込まれたプロセッサ、通信機器、コンピュータ周辺機器、及びビデオプロセッサ等の、特別な目的のアプリケーション及び装置に使用される。このような装置は、典型的には、意図された機能を達成するために製造者によりプログラムされる。１つの又は複数のプログラムは、一般に、“読取専用”メモリ（ROM）内に搭載され、前記読取専用メモリは、永久（マスクROM）、又は不揮発性（EPROM、EEPROM、フラッシュ）であってもよく、前記ARMプロセッサと同一場所に配置されてもよいし、又は外部であってもよい。前記読取専用メモリは、典型的には、一定にとどまるデータ及びパラメータと同様に、前記意図された機能を実行するために必要な命令を含み、他の、読み書きメモリ（RAM）も、典型的に、一時データ及びパラメータの記憶のために設けられる。前記ARMアーキテクチャにおいて、前記メモリ及び外部装置は、高速バスを経由してアクセスされる。
【０００４】
前記製造者が前記プログラムにおける欠陥を訂正するのを、又は既存の装置に新しい特性若しくは機能を提供するのを可能にするために、又は前記‘一定の’データ若しくはパラメータの更新を可能にするために、前記読取専用メモリは、しばしば、再プログラム可能であるように構成される。“フラッシュ”メモリは、再プログラム可能な読取専用メモリに関する一般的な選択である。前記フラッシュメモリの内容は、特定の信号セットが加えられるときを除き、永久及び不変である。適切な前記信号セットが加えられる時、前記プログラムに対する訂正が、ダウンロードされてもよいし、又は例えば、ユーザ・プレファランス又は他の相対的に永久なデータセットを保存するために前記データ若しくはパラメータに対する訂正が行われてもよい。
【０００５】
フラッシュメモリにおけるプログラム又はデータにアクセスするのに要する時間は、しかし、一般的に、レジスタ又はラッチのような他の記憶装置にアクセスするのに要する時間より大幅に長い。もしプロセッサが、前記フラッシュメモリから直接プログラム命令を実行するならば、アクセス時間は、前記プロセッサにより達成可能な速度を制限するだろう。代わりに、前記フラッシュメモリは、主として、前記装置が初期化される時に、代わりのより高速なメモリに対してデータ及びプログラム命令を供給する永久記憶手段として、構成されることができる。その後、前記プロセッサは、前記より高速なメモリから命令を実行する。この冗長的方法は、しかし、相対的に大量のより高速なメモリがプログラム記憶部に割り当てられることを必要とし、これによりデータの記憶及び処理に対して利用することができる、より高速なメモリの量は減少する。
【０００６】
今までどおり、より高速なメモリの利点を提供しながら、前記プログラム命令を実行するのに要する冗長な高速メモリの量を減少するためには、キャッシュ技術が、一般的に、前記より高速なメモリ内に前記プログラム命令の一部を選択的に配置するために使用される。従来のキャッシュシステムにおいて、プログラムメモリは、ブロック、又はセグメントに分割される。前記プロセッサが、まず、特定のブロックにおける命令にアクセスする時、前記ブロックは、前記より高速なキャッシュメモリ内にロードされる。より低速なメモリからキャッシュへの前記命令のブロックの転送中に、プロセッサは待機しなければならない。その後、前記ロードされたブロックにおける命令は、キャッシュから実行され、これにより、前記より低速なメモリから前記命令にアクセスすることに関連した遅延を避ける。他のブロックにおける命令がアクセスされる時、前記プロセッサが待機する間に、前記他のブロックがキャッシュ内にロードされ、その後、このブロックからの命令がキャッシュから実行される。典型的には、キャッシュは、ブロックがキャッシュ内に連続的に配置され、その後他のブロックにより上書きされ、その後キャッシュ内に戻されるような、“スラッシング”を防ぐために、複数のブロックの記憶を可能にするように構成される。様々な方式が、キャッシュシステムの性能を最適化するために利用することができる。ブロックに対するアクセスの頻度は、通常、新しいブロックがキャッシュ内にロードされる時に、キャッシュのどのブロックが置き換えられるか、決定するための規準として使用される。その上、先読み技術は、メモリのどの１つの又は複数のブロックが次にアクセスされるか予測するために適用されることができ、必要な時にキャッシュ内に命令があるように、キャッシュ内に適切なブロックを先取りする。
【０００７】
従来のキャッシュ管理システムは、特に予測技術が使用される場合にかなり複雑になると共に、例えば各ブロックのアクセス頻度を、維持するためのかなりのオーバーヘッド、及び他のキャッシュの優先順位を決定するパラメータを必要とする。また、特定のプログラムに対するキャッシュシステムの性能は、予測することが難しく、タイミング問題により生じるプログラムのバグは、分離することが難しい。キャッシュ性能の予測不可能性の主な原因の一つは、‘境界’問題である。キャッシュは、プログラムループがブロック間の境界を越えて広がる時にスラッシングを避けるために、少なくとも２ブロックのメモリが同時にキャッシュ内に存在するのを可能にするように構成されなければならない。もし、前記ループがもはや前記境界を越えて広がらないように、変更が加えられるならば、キャッシュは他のブロックを含むことが可能であるだろうし、従って、前記性能は、各場合において異なるだろう。このような変更は、しかし、単にサイズを変更し、これによりメモリ内でのループの位置を移動させただけの完全に無関係な変更の副作用であるかもしれない。同様に、ループが実行される回数は、特定の機能のパラメータの関数であるかもしれない。従って、各ブロックに関する前述のアクセス頻度パラメータは、異なるユーザ状況に対して異なり得、これにより同じプログラムの各実行に対するキャッシュの異なる割り当てに帰着する。
【０００８】
ARMに基づくマイクロコントローラは、一般に、高性能アプリケーション、又は時間の厳しいアプリケーションに対して使用されるので、タイミング予測可能性は、しばしば、必須の特性であり、しばしばキャッシュに基づくメモリのアクセス方式を実行不可能にする。その上、キャッシュ記憶は、典型的には、かなりの量の回路領域及びかなりの量の電力を消費し、その使用を、マイクロコントローラが一般に使用される低コスト又は低電力アプリケーションに対して非実用的にしている。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。本発明のさらなる目的は、最小量のオーバーヘッド及び複雑性を持つ効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。本発明のさらなる目的は、高い予測可能性性能を持つ効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。
【００１０】
【課題を解決するための手段】
これら及び他の目的は、決定論的アクセスプロトコルを使用する高速アクセスのためのプログラム命令及び／又はデータをバッファリングするメモリアクセラレータ・モジュールを提供することにより達成される。前記プログラムメモリは、‘ストライプ’即ち‘循環的に順次的な（cyclically  sequential）’区画に論理的に分割され、前記メモリアクセラレータ・モジュールは、各区画に関連したラッチを含む。特定の区画がアクセスされる時、前記区画は対応するラッチにロードされ、次に続く区画における前記命令は、対応するラッチ内に自動的に先取りされる。このように、次の区画から先取りされた命令は、当該プログラムがこれらの命令に進む時に前記ラッチ内にあるであろうから、順次アクセス処理の動作は、既知の応答を持つだろう。先取り処理が、‘循環しまわり（cycle  around）’、及び各々の順次アクセスされたラッチの内容を上書きするまで、以前にアクセスされたブロックは、対応するラッチに残る。このように、ループ処理の性能は、メモリアクセスに関して、前記ループのサイズのみに基づいて、決定されるだろう。もし前記ループが所定のサイズより小さければ、既存のラッチを上書きすることなく実行されることができるであろうし、従って、前記ラッチに含まれる命令を繰り返し実行している時にメモリアクセス遅延を招かないだろう。もし前記ループが、所定のサイズより大きければ、前記ループの部分を含む既存のラッチを上書きするであろうし、従って、各ループを持つラッチのその後のリロードを必要とするだろう。前記先取りが、自動的であり、現在アクセスされている命令のみによって決定されるので、このメモリ高速化に関連した前記複雑性及びオーバーヘッドは最小である。
【００１１】
本発明は、添付図面を参照して、さらに詳細に、及び例により説明される。
【００１２】
図面を通して、同じ引用符号は同様の又は対応する特性又は機能を示す。
【００１３】
【発明の実施の形態】
図１は、フラッシュメモリ120に位置するプログラム命令及び／又はアクセスデータを実行するように構成されたプロセッサ110を有するマイクロコントローラ100のブロック図の例を図示する。参照及び理解を簡単にするため、本発明は、高性能バス101を経由してメモリ120及び他の構成要素と通信するARMプロセッサ110のパラダイムを使用して示される。また参照を簡単にするため、プログラム命令のロードのパラダイムが、本発明の原理を図示するために使用される。当業者に明白になるように、本開示において示された原理は、他のコンピュータ・メモリ・アーキテクチャ及び構造に対しても同様に適用可能であり、前記示された原理は、メモリからのプログラム命令又はデータのどちらのロードにも等しく適用可能である。データ項目という単語は、ここでは、プログラム命令又はデータのどちらかを呼ぶのに使用される。
【００１４】
本発明によると、メモリアクセラレータ200は、バス101とメモリ120との間に位置し、プロセッサ110の実行を、メモリ120の実行から分離するために構成される。アクセラレータ200は、実質的にメモリ120より速いアクセス時間を持つメモリ要素を含む。好ましくは、アクセラレータ200から命令を引き出すメモリアクセス時間は、プロセッサ110が、前記命令を実行するのに要する時間より短く、これにより、前記メモリアクセス時間は、プロセッサ110の実行に影響を与えない。メモリアクセラレータ200は、最近アクセスされた命令を記憶するように構成され、これにより同じ命令、例えば、ループ構造における命令に対して繰り返されるアクセスは、メモリ120に対するその後のアクセスを必要とせずに、アクセラレータ200から引き出されることができる。その上、メモリアクセラレータ200は、メモリ120に対する複数の並列アクセス経路を持つように構成され、この並列性は、アクセラレータ200に、メモリ120における順次命令にアクセスする間に、メモリ120に対するより遅いアクセスをバッファリングすることを可能にする。
【００１５】
Gregory K. Goodhue、Ata R. Khan、及びJohn H. Wharton、代理人整理番号US018012に対して2001年2月17日に出願された、同時係続米国特許出願、”CYCLICALLY SEQUENTIAL MEMORYPREFETCH”、出願番号09/788,692は、最小の複雑性及びオーバーヘッドで効率的なメモリアクセスを可能にするメモリアクセス方式を提示し、ここで参考のために示されている。図２は、この同時係属出願において提示された原理に基づくメモリアクセラレータ200及びメモリ120の対応する論理構造の実施例を図示する。
【００１６】
図２に図示されたように、メモリ120は４つのクオドラント（quadrant）120a-120dに論理的に分割される。これらのクオドラントは、（図１の）メモリ120のアドレス空間の“ストライプ”即ち“循環的に順次的な”区画を形成する。この例において、各命令は、４つの8ビットのバイトとして組織された32ビットワードであると推測される。バイトによりアドレス指定された順次命令の例（00,04,…）は、16進法を使って、各区画120a-120d内に図示される。図示されたように、各クオドラントは、４つの順次ワード（16バイト又は128ビット）の“ライン”を含み、各クオドラントにおけるアドレスは順次的に互いに後に続く。即ち、例えば、区画120aが、アドレス00,04,08及び0Cにおいてワードを含み、アドレス10,14,18及び1Cにおいて次のセットの４つのワードは次の区画120b内にある。最後の区画はアドレス30,34,38及び3Cにおいてワードを含み、アドレス40,44,48及び4Cにおける次のセットの４つのワードは第１クオドラント120aに配置される。単語“セグメント”は、第１区画の第１メモリ位置から最後の区画の最後のメモリ位置までの連続したメモリ位置の単一のセットを示す“ライン”の代わりに下に使用される。即ち、例えば、第１セグメントは、アドレス00ないし3Fに対応し、次のセグメントは、ワードアドレス40ないし7Fに対応し、以下同様である。
【００１７】
区画数、及び区画毎のワード数は、前記メモリの１つの区画からN個の命令をロードする時間が前記N個の命令を実行するのに要する時間より短くなるように、プロセッサ110の相対速度及びメモリ120のアクセス速度に基づいて決定される。好ましくは、前記区画数及び区画毎のワード数は、それぞれ２の累乗であり、これにより各区画及び各命令は、メモリ120における前記命令のアドレスを形成するビットのサブセットに基づいてアクセスされることができる。参照及び理解を簡単にするため、図２の４ワード毎区画構造である、前記４つのクオドラントの例は、この分割に対する本発明の意図した範囲の限定を意味することなく、下に論じられる。
【００１８】
命令ラッチ220は、クオドラント120a-dの各々に関連している。前記プロセッサが、特定のメモリアドレスにおける命令に対するアクセスを要求する時、このアドレスを含む４つのワードのセットは、適切なクオドラント120a-dから引き出され、及び対応する命令ラッチ220に記憶される。前記要求された命令は、その後、ラッチ220から（図１の）バス101を経由してプロセッサ110に供給される。もしラッチ220が既に前記要求された命令を含むならば、メモリ120からの命令の事前のロードから、前記命令は、ラッチ220から直接プロセッサ110に供給されることができ、メモリ120に対するアクセスは避けられることができる。
【００１９】
アドレスラッチ130は、バス101におけるパイプライン型のアドレス生成を可能にするために、前記要求された命令アドレスに対応するバス101からのアドレスを記憶するために、各クオドラント120a-dと共に設けられる。４つのクオドラントに分割する例において、４つのワード又は16バイトを含む各クオドラントを用いて、前記アドレスの低い方の４ビット、A[3:0]は、前記16バイトに対応し、前記アドレスの次に上の２ビット、A[5:4]は、前記特定のクオドラントに対応し、残りの上のビット、A[M:6]は、ここでMは前記アドレスのサイズであって、各々４ワードの４セットの特定のセグメントに対応する。前記ARMの例において、前記アドレスのサイズは、幅18ビットであり、セグメントアドレスは、A[17:6]に対応する。これは、アドレス指定されたクオドラント120a-dのアドレスラッチ130に記憶される前記アドレスである。クオドラントアドレスA[5:4]は、前記アドレス指定されたクオドラントに対応するラッチを使用可能にするのに使用される。アドレス指定された４ワードのセット、A[17:4]が、対応するアドレスラッチ130内にロードされる時、前記セグメントアドレス、A[17:6]は、アドレスラッチ130に対応する命令アドレスラッチ（IAL）210内にロードされる。クオドラントアドレスA[5:4]は、適切な命令ラッチ220及び命令アドレスラッチ210を、それぞれ前記命令及びセグメントアドレスを受信可能にする。
【００２０】
アドレスA[17:2]における命令が、プロセッサ110により要求された時、対応するIAL 210（A[5:4]によりアドレス指定されたように）の内容は、図２において菱形分岐記号240により図示されたように、要求されたセグメントアドレスA[17:6]と比較される。もしIAL 210に記憶されたセグメントアドレスが、前記要求されたセグメントアドレスに対応するならば、対応する命令ラッチ220の内容は、ワードマルチプレクサ230に供給される。命令アドレスの低い方の命令ビット、A[3:2]は、命令ラッチ220に記憶された４ワードのセット内の特定の命令を選択するのに使用される。アドレス指定されたワードマルチプレクサ230の出力は、クオドラントマルチプレクサ250を経由して選択され、バス101に配置される。他のマルチプレクシング及び選択方式が当業者に明らかになるだろう。もしIAL210における前記記憶されたセグメントアドレスが、前記要求されたセグメントアドレスに対応しないならば、前記要求されたセグメントは、まずメモリ120から命令ラッチ220内にロードされ、前記ロードされたセグメントアドレスは、IAL210内にロードされ、ラッチ220の内容は、上述されたように、バス101における配置のために選択される。
【００２１】
本発明によると、１つのクオドラント（120a,b,c,d）における命令がアクセスされる時、次の循環的に順次的なクオドラント（120b,c,d,a）における命令は、これらの命令に対するその後のアクセスを予想して、対応するラッチ220内に、自動的にロード又は先取りされる。上述したように、各セグメントに対するクオドラント毎のワード数Nは、好ましくは、プロセッサ110によるN個の命令の実行が、メモリ120からの次のクオドラントの命令の先取りより多くの時間を消費するように選択され、これにより適切な前記命令が、プロセッサ110がこれらの命令を順次的に進行する時に、次の循環的に順次的な命令ラッチ220に含まれる。このように、プログラムの連続的な順次部分は、N個の命令の第１セットへのアクセスに対する初期遅延の他には、メモリアクセス遅延を負うことなく、実行されるだろう。代わりに見ると、より遅い及びより安いメモリ120が、前記クオドラントの幅Nを増加することにより、システムにおいて使用されることができる。
【００２２】
図２において図示されるように、最後のクオドラント120dがアドレス指定されたクオドラントである時に、先取りインクリメンタ260が、第１クオドラント120aからの命令の先取りを促進するために設けられ、これにより、前記最後のクオドラントがアクセスされる時に、“次の”クオドラントに対する循環的に順次的なアクセスを達成する。前記最後のクオドラント以外に対するアクセスについて、次のクオドラントにおける前記命令のセグメント番号は、現在アドレス指定されているセグメントと同じである。もし次のクオドラントの命令ラッチ220が、前記アドレス指定されたクオドラント及びセグメントに対する事前のアクセスから、前記アドレス指定された命令に関連する次の命令セットを、既に含むならば、上述の先取り処理は避けられる。
【００２３】
順次命令及びショートループの典型的な流れにおいて、命令ラッチ220のセットの“定常状態”条件は、１つのラッチが前記現在アクセスされている命令を含み、及び少なくとも１つのラッチが次の順次命令セットの内容を含むことであるだろうし、残りのラッチは、前記現在アクセスされている命令より前の命令を含むだろう。ラッチ220が16個までの命令を含むように構成される、図２の実施例において、もしプログラムループが９つ以上の命令を有さなければ、前記クオドラントの境界に関連したループの位置にかかわらず、前記ループは、初めの反復の後に命令ラッチ220のセットに含まれることが保証されるだろう。同様に、もし前記ループが12個以上の命令を含むならば、前記ループの終了が前記初めの反復中に実行される時、前記ループの終了の後に少なくとも４つの命令がラッチ220においてロードされるので、前記ループは、命令ラッチ220のセットに含まれないことが保証される。もし前記ループが10ないし12個の命令を含むならば、前記ループは、クオドラント間の境界に関連した前記ループの位置に基づき、全体としてラッチ220に含まれるかもしれないし、含まれないかもしれない。従って、10ないし12個の命令のループを除き、前記ループを実行するのに要する時間は、メモリアクセス時間に基づき、メモリ120における前記ループの実際の位置にかかわらず決定されることができる。10ないし12個の命令のループに対しては、前記ループを実行するのに要する時間も、決定可能であるだろうが、しかし前記プログラムが特定のメモリ位置に割り当てられた後のみである。代わりに見ると、メモリの区画数又は区画幅毎の命令数は、特定の予想されたループのサイズに対して効率的な性能を提供するために調整されることができる。
【００２４】
10ないし12個の命令の長さのもの以外の各ループの実行は、前記ループのサイズのみに依存するので、ユーザは故意に臨界ループを９個の命令又はそれ以下に構築することができる。同様に、もし前記ループが12個以内の命令にすることが達成できなければ、前記ユーザは、故意に、前記ループが時間制約を満たすかどうかを、メモリアクセス遅延が明確に前記ループ内において負わされるだろうという知識を用いて決定することができる。10ないし12個の命令のループの実行は、たとえ前記ループが、メモリクオドラント120a-dの境界と既知の対応を持つメモリ又はメモリの仮想的なブロックに割り当てられた後であっても、同様に決定されることができる。ループ毎のメモリアクセス遅延の最大値が、サイズにかかわらず１であることに言及することは重要である。９つ以下の命令のループ及びサイズ10ないし12の幾つかのループについては、ループ毎のアクセス遅延の数はゼロであり、他の全てのループについては、ループ毎のアクセス遅延の数は１である。従って、最悪の場合の実行は13個の命令のループに対して起こり、前記ループのサイズが増加するにつれて、自動的な順次先取りは連続的に、メモリアクセス遅延を消去し、これにより、13個の命令のループと比較して、全体的なメモリアクセス効率を改善する。
【００２５】
本発明の他の態様によると、メモリアクセラレータ200により提供される高速化の度合いは制御されることができ、これにより、必要に応じて前記プログラムの決定論的な性質を強める。本実施例において、ラッチ220は、前述のメモリアクセス最適化の全て、若しくは幾らかを達成すること、又は全く達成しないことは、選択的に構成可能である。前記自動先取りは、前記要求された命令が既にラッチ220に含まれるかどうかを決定する照合であるので、独立に制御可能である。追加のアクセスモードは、また、非順次的なプログラム命令の系列が直面された時はいつでもメモリ120からの読出しを強要する。即ち、この代替アクセスモードにおいて、分岐命令の実行は、必然的にメモリアクセス遅延を引き起こす。これらのオプションの各々は、決定論と性能との間のトレードオフを可能にするために設けられ、前記ユーザにより選択される決定論と性能との間のバランスに依存するだろう。好ましい実施例において、ユーザ選択を適切な構成設定又はコマンドに変換するアプリケーションプログラムが提供される。
【００２６】
上記のものは単に本発明の原理を説明したに過ぎない。従って、当業者が、ここに明確に記述されていない又は示されていないにもかかわらず、本発明の原理を具体化する様々な装置を考案することができるであろうことは、正しく認識されるであろうし、従って、本発明の精神と範囲内である。例えば、ラッチの並列なセット210及び220は、メモリ120に含まれるデータに対する高速化されたメモリアクセスを提供するように構成されることができる。前記データに対するアクセスは、好ましくは、メモリ120における命令がこれもまたメモリ120内にあるデータ項目に対する基準を含む時に、スラッシングを防ぐために、プログラム命令に対するアクセスから区分される。データアドレス及びデータラッチの４つのセットを供給する代わりに、及び次の順次的なデータ系列からデータを自動的に先取りする代わりに、１つのデータアドレス及びデータラッチは、単に前記現在アクセスされているクオドラントをバッファリングするために供給されることができる。これは、データ項目に対するアクセスをバッファリングするのに要するリソースを減少するが、しかし前記メモリにおけるデータが実質的に連続的に又は繰り返しアクセスされた時に達成されることができる前記データアクセス遅延の減少は提供しない。同様に、ラッチの並列なセット210及び220も、異なるクラス又は型式のメモリにアクセスするために供給され得る。例えば、もし前記システムが内部及び外部メモリの両方を有するならば、ラッチの独立したセットは、より遅いメモリに対するより幅広いレジスタの使用等を経て、特定の型式の高速化されているメモリの性能及び能力に基づいて構成されているラッチの各セットに対して供給され得る。これら及び他のシステム構成及び最適化機能は、本開示を受けて当業者に明らかになるであろうし、請求項の範囲に含まれる。
【図面の簡単な説明】
【図１】  本発明によるメモリアクセラレータを持つマイクロコントローラのブロック図の例を図示する。
【図２】  本発明によるメモリアクセラレータ及びメモリ構造のブロック図の例を図示する。
【図１】
0003850375.tif 000002
【図２】
0003850375.tif 000003