(57)【要約】メモリアクセラレータ・モジュールが決定論的アクセスプロトコルを使用して高速アクセスのためにプログラム命令及び／又はデータをバッファリングする。プログラムメモリは、“ストライプ”即ち“循環的に順次的な”区画に論理的に分割され、前記メモリアクセラレータ・モジュールは、各区画に関連したラッチを含む。特定の区画がアクセスされる時、前記区画は対応するラッチにロードされ、次に続く区画における命令は、対応するラッチ内に自動的に先取りされる。このように、次の区画から先取りされた命令が、当該プログラムがこれらの命令に進む時に前記ラッチ内にあるので、順次アクセス処理の動作は既知の応答を持つだろう。以前にアクセスされたブロックは、前記先取り処理が“循環しまわり”、及び各々の順次アクセスされたラッチの内容を上書きするまで、対応するラッチに残る。このように、ループ処理の性能は、メモリアクセスに関して、前記ループのサイズのみに基づいて決定されるだろう。もしループが所定のサイズ以下であれば、既存のラッチを上書きすることなく実行可能であろうし、従って、前記ラッチに含まれる命令を繰り返し実行する場合に、メモリアクセス遅延を負わないだろう。もし前記ループが所定のサイズ以上であれば、前記ループの一部を含む既存のラッチを上書きするだろうし、従って、各ループでの前記ラッチの次のリロードを必要とするだろう。前記先取りは自動的であり、現在アクセスされている命令のみにおいて決定されるので、このメモリ高速化に関連した複雑性及びオーバーヘッドは最小となる。
2004536370.tif 000002
【特許請求の範囲】
【請求項１】
メモリに含まれるプログラム命令を実行するように構成されたプロセッサと、
メモリアクセスシステムと、
を有するコンピュータシステムであって、
前記メモリアクセスシステムが複数の命令ラッチを含み、
ここで、前記複数の命令ラッチの各々の命令ラッチが、前記メモリの複数の循環的に順次的な区画の対応する区画に関連し、
前記メモリアクセスシステムが、同時に、
前記プロセッサによりアドレス指定された命令が前記複数の命令ラッチの第１命令ラッチ内に含まれているかどうかを、前記アドレス指定された命令に対応する前記メモリの区画の識別に基づいて決定し、
もし前記アドレス指定された命令が前記第１命令ラッチに無いならば、前記アドレス指定された命令を含む第１の複数の命令を、前記メモリから前記第１命令ラッチ内にロードし、
もし第２の複数の命令が第２命令ラッチに無いならば、前記第２の複数の命令を、前記メモリから前記複数の命令ラッチの前記第２命令ラッチ内にロードするように構成され、
これにより、前記第１及び第２の複数の命令が、対応する前記第１及び第２命令ラッチから、前記プロセッサにより直接アクセスが可能である、
コンピュータシステム。
【請求項２】
さらに、前記複数の命令ラッチに対応する複数のアドレスラッチを含むコンピュータシステムであって、
前記メモリアクセスシステムが、さらに、各命令ラッチ内にロードされた複数の命令の各々に関連したセグメント識別子を、前記複数のアドレスラッチの対応するアドレスラッチに記憶するように構成される、
請求項１に記載のコンピュータシステム。
【請求項３】
前記アドレス指定された命令が、離散ビットフィールドとして、即ち、前記セグメント識別子と、前記メモリの前記区画の識別と、ワード識別子とを含むアドレスによりアドレス指定され、
前記ワード識別子が、前記アドレス指定された命令に対応する前記第１命令ラッチにおける位置を識別する、
請求項２に記載のコンピュータシステム。
【請求項４】
前記メモリアクセスシステムが、前記アドレス指定された命令が前記第１命令ラッチに含まれるかどうかを、前記アドレス指定された命令の前記セグメント識別子を、前記第１命令ラッチに関連した前記アドレスラッチに記憶される前記セグメント識別子と比較することにより決定するように構成される、
請求項３に記載のコンピュータシステム。
【請求項５】
さらに前記メモリを含む、請求項１に記載のコンピュータシステム。
【請求項６】
前記プロセッサがＡＲＭプロセッサである、請求項１に記載のコンピュータシステム。
【請求項７】
前記第１及び第２の複数の命令が、同じ数の命令を含み、
前記命令数が、前記プロセッサが前記命令数を実行する実行時間と、前記命令セットのロードを達成するアクセス時間とに基づいて決定される、
請求項１に記載のコンピュータシステム。
【請求項８】
前記メモリアクセスシステムが、また、前記メモリからの前記第２の複数の命令のロードを選択的に使用不可能にすることを可能にするように構成される、
請求項１に記載のコンピュータシステム。
【請求項９】
前記複数の第１及び第２命令ラッチの各々が、前記メモリのアクセス遅延と前記プロセッサの命令サイクル時間との比に基づく多数の命令ラッチを含み、
これにより前記第２の複数の命令の前記ロードが、前記第１の複数の命令を実行するのに要する時間内に達成される、
請求項１に記載のコンピュータシステム。
【請求項１０】
前記メモリアクセスシステムが、さらに、複数のデータラッチを有し、
前記メモリアクセスシステムが、さらに、
前記プロセッサによりアドレス指定されたデータ項目が、前記複数のデータラッチの第１データラッチ内に含まれているかどうかを決定し、
もし前記アドレス指定されたデータ項目が、前記第１データラッチ内に無いならば、前記アドレス指定されたデータ項目を含む第１の複数のデータ項目を、前記メモリから前記第１データラッチ内にロードするように構成される、
請求項１に記載のコンピュータシステム。
【請求項１１】
前記メモリアクセスシステムが、さらに、
もし第２の複数のデータ項目が第２データラッチ内に無いならば、前記第２の複数のデータ項目を、前記メモリから前記複数のデータラッチの前記第２データラッチ内にロードするように構成され、
これにより、前記第１及び第２の複数のデータ項目が、前記対応する第１及び第２データラッチからの前記プロセッサによる直接アクセスに対して利用することができる、
請求項１０に記載のコンピュータシステム。
【請求項１２】
プログラム命令を記憶するように構成されたメモリと、
前記メモリに記憶された前記プログラム命令を実行するように構成されたプロセッサと、
前記プロセッサと前記メモリとの間で動作可能に結合され、前記メモリから選択されたプログラム命令を受信し、前記プロセッサに対して前記選択されたプログラム命令のアドレス指定された命令を供給するように構成されたメモリアクセラレータと、
を有するマイクロコントローラであって、
前記メモリ及び前記メモリアクセラレータが、動作可能に複数のアクセス経路を経て互いに結合され、
前記メモリアクセラレータが、
前記アドレス指定された命令に対応する前記プロセッサにより供給される命令アドレスに基づいて、前記複数のアクセス経路の第１アクセス経路を経由して前記メモリから第１命令セットを受信し、
前記複数のアクセス経路の第２アクセス経路を経由して前記メモリから第２命令セットを受信し、
ここで、前記第２命令セットは、前記第１命令セットのアドレスと順次的なアドレスを持ち、
前記メモリアクセラレータに含まれる前記第１及び第２命令セットから前記プロセッサに対して前記アドレス指定された命令及び次の命令を供給するように構成される、マイクロコントローラ。
【請求項１３】
前記複数のアクセス経路が４つのアクセス経路を有し、
ここで、各アクセス経路が前記メモリの循環的に順次的なクオドラントに対応する、
請求項１２に記載のマイクロコントローラ。
【請求項１４】
前記メモリアクセラレータが、
前記複数のアクセス経路に対応し、前記第１命令セットを受信する第１命令ラッチ、及び前記第２命令セットを受信する第２命令ラッチを含む複数の命令ラッチと、
複数の命令ラッチに対応する複数のアドレスラッチとを含み、
ここで、前記複数のアドレスラッチの各アドレスラッチは、対応する命令ラッチに記憶された前記命令セットに関連したアドレスを記憶するように構成され、
前記メモリアクセラレータが、前記対応する命令ラッチが前記アドレス指定された命令を含む時に前記メモリからの前記第１命令セットの受信を見合わせるために、前記対応する命令ラッチに記憶された前記命令セットに関連した前記アドレスを、前記プロセッサにより供給された前記命令アドレスと比較するように構成される、
請求項１２に記載のマイクロコントローラ。
【請求項１５】
各命令ラッチが４つの順次的にアドレス指定された命令を含むように構成される、
請求項１４に記載のマイクロコントローラ。
【請求項１６】
前記命令アドレスに含まれるワードアドレスに基づいて、前記命令ラッチに記憶された前記命令セットから命令を選択するようにそれぞれ構成される前記複数の命令ラッチに対応する複数のワードマルチプレクサと、
前記命令アドレスに含まれる区画アドレスに基づいて、特定のワードマルチプレクサにより選択された前記命令を選択するように構成される前記複数のワードマルチプレクサの各々と動作可能に結合した区画マルチプレクサと、
をさらに含む、請求項１４に記載のマイクロコントローラ。
【請求項１７】
前記メモリアクセラレータが、また、前記メモリから前記第２の複数の命令の前記受信を選択的に使用不可能にすることを可能にするように構成される、
請求項１２に記載のマイクロコントローラ。
【請求項１８】
前記第１及び第２命令セットの各々が、前記メモリに関連したアクセス遅延と前記プロセッサの命令サイクル時間との比に基づいた複数の命令を含む、
請求項１２に記載のマイクロコントローラ。
【請求項１９】
前記メモリアクセラレータが、さらに、
前記プロセッサにより供給されるデータアドレスに基づいて、前記複数のアクセス経路の他のアクセス経路を経由して前記メモリからデータ項目のセットを受信し、
前記メモリアクセラレータに含まれる前記データ項目のセットから前記プロセッサに対して前記アドレス指定されたデータ項目を供給するように構成される、請求項１２に記載のマイクロコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
関連出願の引用
本出願は同時に出願されている米国特許出願 ”ＣＹＣＬＩＣＡＬＬＹ  ＳＥＱＵＥＮＴＩＡＬ  ＭＥＭＯＲＹ  ＰＲＥＦＥＴＣＨ”、出願番号０９／７８８，６９２（代理人整理番号ＵＳ０１８０１２）に関する。
【０００２】
１．本発明の技術分野
本発明は、電子処理装置の分野に関し、特に、アドバンストＲＩＳＣマシン（ＡＲＭ）アーキテクチャ及びフラッシュメモリを使用する処理システムに関する。
【０００３】
【従来の技術】
２．関連技術の説明
アドバンストＲＩＳＣマシン（ＡＲＭ）アーキテクチャは、一般に、消費者製品に埋め込まれたプロセッサ、通信機器、コンピュータ周辺機器、及びビデオプロセッサ等の、特別な目的のアプリケーション及び装置に使用される。このような装置は、典型的には、意図された機能を達成するために製造者によりプログラムされる。１つの又は複数のプログラムは、一般に、“読取専用”メモリ（ＲＯＭ）内に搭載され、前記読取専用メモリは、永久（マスクＲＯＭ）、又は不揮発性（ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ）であってもよく、前記ＡＲＭプロセッサと同一場所に配置されてもよいし、又は外部であってもよい。前記読取専用メモリは、典型的には、一定にとどまるデータ及びパラメータと同様に、前記意図された機能を実行するために必要な命令を含み、他の、読み書きメモリ（ＲＡＭ）も、典型的に、一時データ及びパラメータの記憶のために設けられる。前記ＡＲＭアーキテクチャにおいて、前記メモリ及び外部装置は、高速バスを経由してアクセスされる。
【０００４】
前記製造者が前記プログラムにおける欠陥を訂正するのを、又は既存の装置に新しい特性若しくは機能を提供するのを可能にするために、又は前記‘一定の’データ若しくはパラメータの更新を可能にするために、前記読取専用メモリは、しばしば、再プログラム可能であるように構成される。“フラッシュ”メモリは、再プログラム可能な読取専用メモリに関する一般的な選択である。前記フラッシュメモリの内容は、特定の信号セットが加えられるときを除き、永久及び不変である。適切な前記信号セットが加えられる時、前記プログラムに対する訂正が、ダウンロードされてもよいし、又は例えば、ユーザ・プレファランス又は他の相対的に永久なデータセットを保存するために前記データ若しくはパラメータに対する訂正が行われてもよい。
【０００５】
フラッシュメモリにおけるプログラム又はデータにアクセスするのに要する時間は、しかし、一般的に、レジスタ又はラッチのような他の記憶装置にアクセスするのに要する時間より大幅に長い。もしプロセッサが、前記フラッシュメモリから直接プログラム命令を実行するならば、アクセス時間は、前記プロセッサにより達成可能な速度を制限するだろう。代わりに、前記フラッシュメモリは、主として、前記装置が初期化される時に、代わりのより高速なメモリに対してデータ及びプログラム命令を供給する永久記憶手段として、構成されることができる。その後、前記プロセッサは、前記より高速なメモリから命令を実行する。この冗長的方法は、しかし、相対的に大量のより高速なメモリがプログラム記憶部に割り当てられることを必要とし、これによりデータの記憶及び処理に対して利用することができる、より高速なメモリの量は減少する。
【０００６】
今までどおり、より高速なメモリの利点を提供しながら、前記プログラム命令を実行するのに要する冗長な高速メモリの量を減少するためには、キャッシュ技術が、一般的に、前記より高速なメモリ内に前記プログラム命令の一部を選択的に配置するために使用される。従来のキャッシュシステムにおいて、プログラムメモリは、ブロック、又はセグメントに分割される。前記プロセッサが、まず、特定のブロックにおける命令にアクセスする時、前記ブロックは、前記より高速なキャッシュメモリ内にロードされる。より低速なメモリからキャッシュへの前記命令のブロックの転送中に、プロセッサは待機しなければならない。その後、前記ロードされたブロックにおける命令は、キャッシュから実行され、これにより、前記より低速なメモリから前記命令にアクセスすることに関連した遅延を避ける。他のブロックにおける命令がアクセスされる時、前記プロセッサが待機する間に、前記他のブロックがキャッシュ内にロードされ、その後、このブロックからの命令がキャッシュから実行される。典型的には、キャッシュは、ブロックがキャッシュ内に連続的に配置され、その後他のブロックにより上書きされ、その後キャッシュ内に戻されるような、“スラッシング”を防ぐために、複数のブロックの記憶を可能にするように構成される。様々な方式が、キャッシュシステムの性能を最適化するために利用することができる。ブロックに対するアクセスの頻度は、通常、新しいブロックがキャッシュ内にロードされる時に、キャッシュのどのブロックが置き換えられるか、決定するための規準として使用される。その上、先読み技術は、メモリのどの１つの又は複数のブロックが次にアクセスされるか予測するために適用されることができ、必要な時にキャッシュ内に命令があるように、キャッシュ内に適切なブロックを先取りする。
【０００７】
従来のキャッシュ管理システムは、特に予測技術が使用される場合にかなり複雑になると共に、例えば各ブロックのアクセス頻度を、維持するためのかなりのオーバーヘッド、及び他のキャッシュの優先順位を決定するパラメータを必要とする。また、特定のプログラムに対するキャッシュシステムの性能は、予測することが難しく、タイミング問題により生じるプログラムのバグは、分離することが難しい。キャッシュ性能の予測不可能性の主な原因の一つは、‘境界’問題である。キャッシュは、プログラムループがブロック間の境界を越えて広がる時にスラッシングを避けるために、少なくとも２ブロックのメモリが同時にキャッシュ内に存在するのを可能にするように構成されなければならない。もし、前記ループがもはや前記境界を越えて広がらないように、変更が加えられるならば、キャッシュは他のブロックを含むことが可能であるだろうし、従って、前記性能は、各場合において異なるだろう。このような変更は、しかし、単にサイズを変更し、これによりメモリ内でのループの位置を移動させただけの完全に無関係な変更の副作用であるかもしれない。同様に、ループが実行される回数は、特定の機能のパラメータの関数であるかもしれない。従って、各ブロックに関する前述のアクセス頻度パラメータは、異なるユーザ状況に対して異なり得、これにより同じプログラムの各実行に対するキャッシュの異なる割り当てに帰着する。
【０００８】
ＡＲＭに基づくマイクロコントローラは、一般に、高性能アプリケーション、又は時間の厳しいアプリケーションに対して使用されるので、タイミング予測可能性は、しばしば、必須の特性であり、しばしばキャッシュに基づくメモリのアクセス方式を実行不可能にする。その上、キャッシュ記憶は、典型的には、かなりの量の回路領域及びかなりの量の電力を消費し、その使用を、マイクロコントローラが一般に使用される低コスト又は低電力アプリケーションに対して非実用的にしている。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。本発明のさらなる目的は、最小量のオーバーヘッド及び複雑性を持つ効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。本発明のさらなる目的は、高い予測可能性性能を持つ効率的なメモリアクセス処理を提供するマイクロコントローラ・メモリ・アーキテクチャを提供することである。
【００１０】
【課題を解決するための手段】
これら及び他の目的は、決定論的アクセスプロトコルを使用する高速アクセスのためのプログラム命令及び／又はデータをバッファリングするメモリアクセラレータ・モジュールを提供することにより達成される。前記プログラムメモリは、‘ストライプ’即ち‘循環的に順次的な（ｃｙｃｌｉｃａｌｌｙ  ｓｅｑｕｅｎｔｉａｌ）’区画に論理的に分割され、前記メモリアクセラレータ・モジュールは、各区画に関連したラッチを含む。特定の区画がアクセスされる時、前記区画は対応するラッチにロードされ、次に続く区画における前記命令は、対応するラッチ内に自動的に先取りされる。このように、次の区画から先取りされた命令は、当該プログラムがこれらの命令に進む時に前記ラッチ内にあるであろうから、順次アクセス処理の動作は、既知の応答を持つだろう。先取り処理が、‘循環しまわり（ｃｙｃｌｅ  ａｒｏｕｎｄ）’、及び各々の順次アクセスされたラッチの内容を上書きするまで、以前にアクセスされたブロックは、対応するラッチに残る。このように、ループ処理の性能は、メモリアクセスに関して、前記ループのサイズのみに基づいて、決定されるだろう。もし前記ループが所定のサイズより小さければ、既存のラッチを上書きすることなく実行されることができるであろうし、従って、前記ラッチに含まれる命令を繰り返し実行している時にメモリアクセス遅延を招かないだろう。もし前記ループが、所定のサイズより大きければ、前記ループの部分を含む既存のラッチを上書きするであろうし、従って、各ループを持つラッチのその後のリロードを必要とするだろう。前記先取りが、自動的であり、現在アクセスされている命令のみによって決定されるので、このメモリ高速化に関連した前記複雑性及びオーバーヘッドは最小である。
【００１１】
本発明は、添付図面を参照して、さらに詳細に、及び例により説明される。
【００１２】
図面を通して、同じ引用符号は同様の又は対応する特性又は機能を示す。
【００１３】
【発明の実施の形態】
図１は、フラッシュメモリ１２０に位置するプログラム命令及び／又はアクセスデータを実行するように構成されたプロセッサ１１０を有するマイクロコントローラ１００のブロック図の例を図示する。参照及び理解を簡単にするため、本発明は、高性能バス１０１を経由してメモリ１２０及び他の構成要素と通信するＡＲＭプロセッサ１１０のパラダイムを使用して示される。また参照を簡単にするため、プログラム命令のロードのパラダイムが、本発明の原理を図示するために使用される。当業者に明白になるように、本開示において示された原理は、他のコンピュータ・メモリ・アーキテクチャ及び構造に対しても同様に適用可能であり、前記示された原理は、メモリからのプログラム命令又はデータのどちらのロードにも等しく適用可能である。データ項目という単語は、ここでは、プログラム命令又はデータのどちらかを呼ぶのに使用される。
【００１４】
本発明によると、メモリアクセラレータ２００は、バス１０１とメモリ１２０との間に位置し、プロセッサ１１０の実行を、メモリ１２０の実行から分離するために構成される。アクセラレータ２００は、実質的にメモリ１２０より速いアクセス時間を持つメモリ要素を含む。好ましくは、アクセラレータ２００から命令を引き出すメモリアクセス時間は、プロセッサ１１０が、前記命令を実行するのに要する時間より短く、これにより、前記メモリアクセス時間は、プロセッサ１１０の実行に影響を与えない。メモリアクセラレータ２００は、最近アクセスされた命令を記憶するように構成され、これにより同じ命令、例えば、ループ構造における命令に対して繰り返されるアクセスは、メモリ１２０に対するその後のアクセスを必要とせずに、アクセラレータ２００から引き出されることができる。その上、メモリアクセラレータ２００は、メモリ１２０に対する複数の並列アクセス経路を持つように構成され、この並列性は、アクセラレータ２００に、メモリ１２０における順次命令にアクセスする間に、メモリ１２０に対するより遅いアクセスをバッファリングすることを可能にする。
【００１５】
Ｇｒｅｇｏｒｙ Ｋ． Ｇｏｏｄｈｕｅ、Ａｔａ Ｒ． Ｋｈａｎ、及びＪｏｈｎ Ｈ． Ｗｈａｒｔｏｎ、代理人整理番号ＵＳ０１８０１２に対して２００１年２月１７日に出願された、同時係続米国特許出願、”ＣＹＣＬＩＣＡＬＬＹ ＳＥＱＵＥＮＴＩＡＬ ＭＥＭＯＲＹＰＲＥＦＥＴＣＨ”、出願番号０９／７８８，６９２は、最小の複雑性及びオーバーヘッドで効率的なメモリアクセスを可能にするメモリアクセス方式を提示し、ここで参考のために示されている。図２は、この同時係属出願において提示された原理に基づくメモリアクセラレータ２００及びメモリ１２０の対応する論理構造の実施例を図示する。
【００１６】
図２に図示されたように、メモリ１２０は４つのクオドラント（ｑｕａｄｒａｎｔ）１２０ａ−１２０ｄに論理的に分割される。これらのクオドラントは、（図１の）メモリ１２０のアドレス空間の“ストライプ”即ち“循環的に順次的な”区画を形成する。この例において、各命令は、４つの８ビットのバイトとして組織された３２ビットワードであると推測される。バイトによりアドレス指定された順次命令の例（００，０４，…）は、１６進法を使って、各区画１２０ａ−１２０ｄ内に図示される。図示されたように、各クオドラントは、４つの順次ワード（１６バイト又は１２８ビット）の“ライン”を含み、各クオドラントにおけるアドレスは順次的に互いに後に続く。即ち、例えば、区画１２０ａが、アドレス００，０４，０８及び０Ｃにおいてワードを含み、アドレス１０，１４，１８及び１Ｃにおいて次のセットの４つのワードは次の区画１２０ｂ内にある。最後の区画はアドレス３０，３４，３８及び３Ｃにおいてワードを含み、アドレス４０，４４，４８及び４Ｃにおける次のセットの４つのワードは第１クオドラント１２０ａに配置される。単語“セグメント”は、第１区画の第１メモリ位置から最後の区画の最後のメモリ位置までの連続したメモリ位置の単一のセットを示す“ライン”の代わりに下に使用される。即ち、例えば、第１セグメントは、アドレス００ないし３Ｆに対応し、次のセグメントは、ワードアドレス４０ないし７Ｆに対応し、以下同様である。
【００１７】
区画数、及び区画毎のワード数は、前記メモリの１つの区画からＮ個の命令をロードする時間が前記Ｎ個の命令を実行するのに要する時間より短くなるように、プロセッサ１１０の相対速度及びメモリ１２０のアクセス速度に基づいて決定される。好ましくは、前記区画数及び区画毎のワード数は、それぞれ２の累乗であり、これにより各区画及び各命令は、メモリ１２０における前記命令のアドレスを形成するビットのサブセットに基づいてアクセスされることができる。参照及び理解を簡単にするため、図２の４ワード毎区画構造である、前記４つのクオドラントの例は、この分割に対する本発明の意図した範囲の限定を意味することなく、下に論じられる。
【００１８】
命令ラッチ２２０は、クオドラント１２０ａ−ｄの各々に関連している。前記プロセッサが、特定のメモリアドレスにおける命令に対するアクセスを要求する時、このアドレスを含む４つのワードのセットは、適切なクオドラント１２０ａ−ｄから引き出され、及び対応する命令ラッチ２２０に記憶される。前記要求された命令は、その後、ラッチ２２０から（図１の）バス１０１を経由してプロセッサ１１０に供給される。もしラッチ２２０が既に前記要求された命令を含むならば、メモリ１２０からの命令の事前のロードから、前記命令は、ラッチ２２０から直接プロセッサ１１０に供給されることができ、メモリ１２０に対するアクセスは避けられることができる。
【００１９】
アドレスラッチ１３０は、バス１０１におけるパイプライン型のアドレス生成を可能にするために、前記要求された命令アドレスに対応するバス１０１からのアドレスを記憶するために、各クオドラント１２０ａ−ｄと共に設けられる。４つのクオドラントに分割する例において、４つのワード又は１６バイトを含む各クオドラントを用いて、前記アドレスの低い方の４ビット、Ａ［３：０］は、前記１６バイトに対応し、前記アドレスの次に上の２ビット、Ａ［５：４］は、前記特定のクオドラントに対応し、残りの上のビット、Ａ［Ｍ：６］は、ここでＭは前記アドレスのサイズであって、各々４ワードの４セットの特定のセグメントに対応する。前記ＡＲＭの例において、前記アドレスのサイズは、幅１８ビットであり、セグメントアドレスは、Ａ［１７：６］に対応する。これは、アドレス指定されたクオドラント１２０ａ−ｄのアドレスラッチ１３０に記憶される前記アドレスである。クオドラントアドレスＡ［５：４］は、前記アドレス指定されたクオドラントに対応するラッチを使用可能にするのに使用される。アドレス指定された４ワードのセット、Ａ［１７：４］が、対応するアドレスラッチ１３０内にロードされる時、前記セグメントアドレス、Ａ［１７：６］は、アドレスラッチ１３０に対応する命令アドレスラッチ（ＩＡＬ）２１０内にロードされる。クオドラントアドレスＡ［５：４］は、適切な命令ラッチ２２０及び命令アドレスラッチ２１０を、それぞれ前記命令及びセグメントアドレスを受信可能にする。
【００２０】
アドレスＡ［１７：２］における命令が、プロセッサ１１０により要求された時、対応するＩＡＬ ２１０（Ａ［５：４］によりアドレス指定されたように）の内容は、図２において菱形分岐記号２４０により図示されたように、要求されたセグメントアドレスＡ［１７：６］と比較される。もしＩＡＬ ２１０に記憶されたセグメントアドレスが、前記要求されたセグメントアドレスに対応するならば、対応する命令ラッチ２２０の内容は、ワードマルチプレクサ２３０に供給される。命令アドレスの低い方の命令ビット、Ａ［３：２］は、命令ラッチ２２０に記憶された４ワードのセット内の特定の命令を選択するのに使用される。アドレス指定されたワードマルチプレクサ２３０の出力は、クオドラントマルチプレクサ２５０を経由して選択され、バス１０１に配置される。他のマルチプレクシング及び選択方式が当業者に明らかになるだろう。もしＩＡＬ２１０における前記記憶されたセグメントアドレスが、前記要求されたセグメントアドレスに対応しないならば、前記要求されたセグメントは、まずメモリ１２０から命令ラッチ２２０内にロードされ、前記ロードされたセグメントアドレスは、ＩＡＬ２１０内にロードされ、ラッチ２２０の内容は、上述されたように、バス１０１における配置のために選択される。
【００２１】
本発明によると、１つのクオドラント（１２０ａ，ｂ，ｃ，ｄ）における命令がアクセスされる時、次の循環的に順次的なクオドラント（１２０ｂ，ｃ，ｄ，ａ）における命令は、これらの命令に対するその後のアクセスを予想して、対応するラッチ２２０内に、自動的にロード又は先取りされる。上述したように、各セグメントに対するクオドラント毎のワード数Ｎは、好ましくは、プロセッサ１１０によるＮ個の命令の実行が、メモリ１２０からの次のクオドラントの命令の先取りより多くの時間を消費するように選択され、これにより適切な前記命令が、プロセッサ１１０がこれらの命令を順次的に進行する時に、次の循環的に順次的な命令ラッチ２２０に含まれる。このように、プログラムの連続的な順次部分は、Ｎ個の命令の第１セットへのアクセスに対する初期遅延の他には、メモリアクセス遅延を負うことなく、実行されるだろう。代わりに見ると、より遅い及びより安いメモリ１２０が、前記クオドラントの幅Ｎを増加することにより、システムにおいて使用されることができる。
【００２２】
図２において図示されるように、最後のクオドラント１２０ｄがアドレス指定されたクオドラントである時に、先取りインクリメンタ２６０が、第１クオドラント１２０ａからの命令の先取りを促進するために設けられ、これにより、前記最後のクオドラントがアクセスされる時に、“次の”クオドラントに対する循環的に順次的なアクセスを達成する。前記最後のクオドラント以外に対するアクセスについて、次のクオドラントにおける前記命令のセグメント番号は、現在アドレス指定されているセグメントと同じである。もし次のクオドラントの命令ラッチ２２０が、前記アドレス指定されたクオドラント及びセグメントに対する事前のアクセスから、前記アドレス指定された命令に関連する次の命令セットを、既に含むならば、上述の先取り処理は避けられる。
【００２３】
順次命令及びショートループの典型的な流れにおいて、命令ラッチ２２０のセットの“定常状態”条件は、１つのラッチが前記現在アクセスされている命令を含み、及び少なくとも１つのラッチが次の順次命令セットの内容を含むことであるだろうし、残りのラッチは、前記現在アクセスされている命令より前の命令を含むだろう。ラッチ２２０が１６個までの命令を含むように構成される、図２の実施例において、もしプログラムループが９つ以上の命令を有さなければ、前記クオドラントの境界に関連したループの位置にかかわらず、前記ループは、初めの反復の後に命令ラッチ２２０のセットに含まれることが保証されるだろう。同様に、もし前記ループが１２個以上の命令を含むならば、前記ループの終了が前記初めの反復中に実行される時、前記ループの終了の後に少なくとも４つの命令がラッチ２２０においてロードされるので、前記ループは、命令ラッチ２２０のセットに含まれないことが保証される。もし前記ループが１０ないし１２個の命令を含むならば、前記ループは、クオドラント間の境界に関連した前記ループの位置に基づき、全体としてラッチ２２０に含まれるかもしれないし、含まれないかもしれない。従って、１０ないし１２個の命令のループを除き、前記ループを実行するのに要する時間は、メモリアクセス時間に基づき、メモリ１２０における前記ループの実際の位置にかかわらず決定されることができる。１０ないし１２個の命令のループに対しては、前記ループを実行するのに要する時間も、決定可能であるだろうが、しかし前記プログラムが特定のメモリ位置に割り当てられた後のみである。代わりに見ると、メモリの区画数又は区画幅毎の命令数は、特定の予想されたループのサイズに対して効率的な性能を提供するために調整されることができる。
【００２４】
１０ないし１２個の命令の長さのもの以外の各ループの実行は、前記ループのサイズのみに依存するので、ユーザは故意に臨界ループを９個の命令又はそれ以下に構築することができる。同様に、もし前記ループが１２個以内の命令にすることが達成できなければ、前記ユーザは、故意に、前記ループが時間制約を満たすかどうかを、メモリアクセス遅延が明確に前記ループ内において負わされるだろうという知識を用いて決定することができる。１０ないし１２個の命令のループの実行は、たとえ前記ループが、メモリクオドラント１２０ａ−ｄの境界と既知の対応を持つメモリ又はメモリの仮想的なブロックに割り当てられた後であっても、同様に決定されることができる。ループ毎のメモリアクセス遅延の最大値が、サイズにかかわらず１であることに言及することは重要である。９つ以下の命令のループ及びサイズ１０ないし１２の幾つかのループについては、ループ毎のアクセス遅延の数はゼロであり、他の全てのループについては、ループ毎のアクセス遅延の数は１である。従って、最悪の場合の実行は１３個の命令のループに対して起こり、前記ループのサイズが増加するにつれて、自動的な順次先取りは連続的に、メモリアクセス遅延を消去し、これにより、１３個の命令のループと比較して、全体的なメモリアクセス効率を改善する。
【００２５】
本発明の他の態様によると、メモリアクセラレータ２００により提供される高速化の度合いは制御されることができ、これにより、必要に応じて前記プログラムの決定論的な性質を強める。本実施例において、ラッチ２２０は、前述のメモリアクセス最適化の全て、若しくは幾らかを達成すること、又は全く達成しないことは、選択的に構成可能である。前記自動先取りは、前記要求された命令が既にラッチ２２０に含まれるかどうかを決定する照合であるので、独立に制御可能である。追加のアクセスモードは、また、非順次的なプログラム命令の系列が直面された時はいつでもメモリ１２０からの読出しを強要する。即ち、この代替アクセスモードにおいて、分岐命令の実行は、必然的にメモリアクセス遅延を引き起こす。これらのオプションの各々は、決定論と性能との間のトレードオフを可能にするために設けられ、前記ユーザにより選択される決定論と性能との間のバランスに依存するだろう。好ましい実施例において、ユーザ選択を適切な構成設定又はコマンドに変換するアプリケーションプログラムが提供される。
【００２６】
上記のものは単に本発明の原理を説明したに過ぎない。従って、当業者が、ここに明確に記述されていない又は示されていないにもかかわらず、本発明の原理を具体化する様々な装置を考案することができるであろうことは、正しく認識されるであろうし、従って、本発明の精神と範囲内である。例えば、ラッチの並列なセット２１０及び２２０は、メモリ１２０に含まれるデータに対する高速化されたメモリアクセスを提供するように構成されることができる。前記データに対するアクセスは、好ましくは、メモリ１２０における命令がこれもまたメモリ１２０内にあるデータ項目に対する基準を含む時に、スラッシングを防ぐために、プログラム命令に対するアクセスから区分される。データアドレス及びデータラッチの４つのセットを供給する代わりに、及び次の順次的なデータ系列からデータを自動的に先取りする代わりに、１つのデータアドレス及びデータラッチは、単に前記現在アクセスされているクオドラントをバッファリングするために供給されることができる。これは、データ項目に対するアクセスをバッファリングするのに要するリソースを減少するが、しかし前記メモリにおけるデータが実質的に連続的に又は繰り返しアクセスされた時に達成されることができる前記データアクセス遅延の減少は提供しない。同様に、ラッチの並列なセット２１０及び２２０も、異なるクラス又は型式のメモリにアクセスするために供給され得る。例えば、もし前記システムが内部及び外部メモリの両方を有するならば、ラッチの独立したセットは、より遅いメモリに対するより幅広いレジスタの使用等を経て、特定の型式の高速化されているメモリの性能及び能力に基づいて構成されているラッチの各セットに対して供給され得る。これら及び他のシステム構成及び最適化機能は、本開示を受けて当業者に明らかになるであろうし、請求項の範囲に含まれる。
【図面の簡単な説明】
【図１】本発明によるメモリアクセラレータを持つマイクロコントローラのブロック図の例を図示する。
【図２】本発明によるメモリアクセラレータ及びメモリ構造のブロック図の例を図示する。
【図１】
2004536370.tif 000003
【図２】
2004536370.tif 000004
【国際公開パンフレット】
2004536370.tif 000005
2004536370.tif 000006
2004536370.tif 000007
2004536370.tif 000008
2004536370.tif 000009
2004536370.tif 000010
2004536370.tif 000011
2004536370.tif 000012
2004536370.tif 000013
2004536370.tif 000014
2004536370.tif 000015
2004536370.tif 000016
2004536370.tif 000017
2004536370.tif 000018
2004536370.tif 000019
2004536370.tif 000020
2004536370.tif 000021
【国際公開パンフレット（コレクトバージョン）】
2004536370.tif 000022
【国際調査報告】
2004536370.tif 000023
2004536370.tif 000024
2004536370.tif 000025