(57)【要約】プロセッサとキャッシュメモリを含む、埋め込みプロセッサシステムを作動させる方法と装置が提供される。この方法は、キャッシュメモリの１つまたは複数のラインを、第１のタスクに関連するデータで充填するステップと、第１のタスクを実行するステップと、第１のタスクを実行中のキャッシュミスに応答してキャッシュラインフィル動作を実行し、このキャッシュラインフィル動作中に第２のタスクを実行するステップとを含む。キャッシュメモリは、プロセッサ割込みを生成するか、またはプロセッサ上で稼動中のタスクスケジューラに通知することによって、プロセッサにラインフィル動作を通知することができる。
2005502120.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサおよびキャッシュメモリを含む埋め込みプロセッサを作動させる方法であって、
第１のタスクに関連するデータを、前記キャッシュメモリの１つまたは複数のラインに充填するステップと、
前記キャッシュメモリ中のデータへのアクセスを含む前記第１のタスクを実行するステップと、
前記第１のタスク実行中のキャッシュミスに応答して、キャッシュラインフィル動作を実行し、該キャッシュラインフィル動作中に第２のタスクを実行するステップとを含む、前記方法。
【請求項２】
データが、第１のタスクに関連する１つまたは複数のオペランドを含む、請求項１に記載の方法。
【請求項３】
データが、第１のタスクと関連する１つまたは複数の命令を含む、請求項１に記載の方法。
【請求項４】
プロセッサに、キャッシュラインフィル動作を通知するステップをさらに含む、請求項１に記載の方法。
【請求項５】
プロセッサにキャッシュラインフィル動作を通知するステップが、プロセッサ割込みを生成するステップを含む、請求項４に記載の方法。
【請求項６】
プロセッサにキャッシュラインフィル動作を通知するステップが、前記プロセッサ上で稼動中のタスクスケジューラに通知するステップを含む、請求項４に記載の方法。
【請求項７】
第２のタスクを実行するステップが、第１のタスクよりも優先順位の高いタスクを実行することを含む、請求項１に記載の方法。
【請求項８】
第１および第２のタスクが、単一プロセッサ上で実行される、請求項１に記載の方法。
【請求項９】
第１および第２のタスクが、それぞれ第１および第２のプロセッサ上で実行される、請求項１に記載の方法。
【請求項１０】
キャッシュラインフィル動作に関連するアドレスを、特定のアドレス範囲と比較するステップと、前記アドレス範囲比較の結果が所定の基準を満たす場合にのみ、プロセッサに前記キャッシュフィル動作を通知するステップとをさらに含む、請求項１に記載の方法。
【請求項１１】
アドレス範囲比較に使用されるアドレス範囲が、プログラム可能である、請求項１０に記載の方法。
【請求項１２】
キャッシュメモリ内の第２のタスクに関連するデータにアクセスするステップをさらに含む、請求項１に記載の方法。
【請求項１３】
第２のタスクを実行するステップが、前記第２のタスクのための命令およびオペランドをフェッチするステップをさらに含む、請求項１に記載の方法。
【請求項１４】
キャッシュフィル動作が終了したときに、第１のタスクを再開するステップをさらに含む、請求項１に記載の方法。
【請求項１５】
第１のタスクに関連するデータを格納するためのキャッシュメモリであって、キャッシュミスを検出し、該キャッシュミスに応答してキャッシュフィル動作を実行し、かつキャッシュミス通知を生成する、キャッシュコントローラを含む、前記キャッシュメモリと、
前記第１のタスクを実行し、かつ、前記第１のタスク実行中のキャッシュミス通知に応答して、キャッシュフィル動作中に第２のタスクを実行するプロセッサとを含む、埋め込みプロセッサシステム。
【請求項１６】
データが、第１のタスクに関連する１つまたは複数のオペランドを含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項１７】
データが、第１のタスクに関連する１つまたは複数の命令を含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項１８】
キャッシュミス通知が、プロセッサ割込みを含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項１９】
キャッシュミス通知が、プロセッサ上で稼動中のタスクスケジューラへの通知を含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２０】
第２のタスクが、第１のタスクよりも高い優先順位を有する、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２１】
第１のタスクおよび第２のタスクが、単一のプロセッサ上で実行される、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２２】
プロセッサが、第１および第２のプロセッサを含むとともに、第１および第２のタスクが、それぞれ前記第１および第２のプロセッサ上で実行される、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２３】
キャッシュメモリが、キャッシュミスに関連するメモリアドレスを指定のアドレス範囲と比較し、該アドレス範囲比較が所定の基準に合致する場合にのみ、キャッシュミス通知の生成を可能にする、アドレス範囲比較回路をさらに含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２４】
指定のアドレス範囲が、プログラム可能である、請求項２３に記載の埋め込みプロセッサシステム。
【請求項２５】
キャッシュメモリが、第２のタスクに関連するデータを格納するように構成されている、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２６】
プロセッサが、第２のタスクを実行するための命令およびオペランドをフェッチする手段を含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２７】
プロセッサが、キャッシュフィル動作が完了したときに、第１のタスクの実行を再開する手段をさらに含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２８】
キャッシュメモリが、２つまたは３つ以上のラインフィルバッファを含む、請求項１５に記載の埋め込みプロセッサシステム。
【請求項２９】
キャッシュメモリが、２つまたは３つ以上のコピーバックバッファを含む、請求項１５に記載の埋め込みプロセッサシステム。
【発明の詳細な説明】
【０００１】
関連する出願の相互参照
本出願は、２００１年８月２９日出願の米国特許仮出願第６０／３１５，６５５号の利益を主張するものであり、その全文を参照により本明細書に組み入れる。
発明の分野
本発明は、ディジタル処理システムに関し、より具体的には、キャッシュミスに応答してタスクを切り替えることによってプロセッサ性能を改善する方法と装置に関する。
【０００２】
発明の背景
無線用途に使用されるような、埋め込みプロセッサは、単一チップ上にディジタル信号プロセッサ、マイクロコントローラおよびメモリを含むことがある。無線用途においては、無線システムのタイミングの同期を維持する必要から、処理速度が極めて重要である。低コストの埋め込みプロセッサシステムは、それらに固有の性能問題に直面しており、その１つは、高いスループットを維持しながら、低コストの低速メモリを使用しなくてはならないという制約である。
【０００３】
無線用途の例においては、計算集約型のタスクにはディジタル信号プロセッサ（ＤＳＰ）が利用されることが多い。このようなシステムにおいては、低コストのオフチップフラッシュメモリが、システムの大容量記憶を形成する。しかしながら、フラッシュメモリアクセス時間は、ディジタル信号プロセッサの最小サイクル時間よりもずっと長い。ＤＳＰで高性能を達成するためには、オフチップフラッシュメモリよりもはるかに高速のローカルメモリから実行しなくてはならない。
【０００４】
埋め込みプロセッサシステムには、単純なＲＡＭの代わりに、またはそれに加えて何らかの形態のフィル・オン・デマンド式キャッシュメモリを備えるローカルメモリを実装されることがあり、このようなＲＡＭは、プロセッサがコードおよび／またはデータを必要とする以前またはその後に、ローカルメモリにコードおよび／またはデータをロードするための、別のプロセッサまたはダイレクトメモリアクセス（ＤＭＡ）コントローラを必要とする。
ＤＳＰでキャッシュミスが発生すると、キャッシュハードウエアは、メモリ階層中の低速のメモリからキャッシュラインを充填しなくてはならない。このようなキャッシュのフィル・オン・デマンドの態様は、キャッシュラインの全部または一部が充填されている間、ＤＳＰが停止することを意味している。
したがって、キャッシュベース埋め込みプロセッサのスループットを改善する、方法と装置に対する要望がある。
【０００５】
発明の概要
本発明の第１の態様によれば、プロセッサおよびキャッシュメモリを含む、埋め込みプロセッサシステムを動作させる方法が提供される。この方法は、第１のタスクに関連するデータをキャッシュメモリの１つまたは複数のラインに充填するステップと、第１のタスクを実行するステップと、第１のタスクを実行中のキャッシュミスに応答して、キャッシュラインフィル動作を実行するとともに、このキャッシュラインフィル動作中に第２のタスクを実行するステップとを含む。
【０００６】
本発明の別の態様によれば、埋め込みプロセッサシステムは、第１のタスクに関連するデータを格納するためのキャッシュメモリと、第１のタスクを実行するためのプロセッサとを含む。前記キャッシュメモリは、キャッシュミスを検出し、該キャッシュミスに応答してキャッシュフィル動作を実行し、かつキャッシュミス通知を生成する、キャッシュコントローラを含む。前記プロセッサは、第１のタスク実行中のキャッシュミス通知に応答して、キャッシュフィル動作中に第２のタスクを実行する。
本発明が、よりよく理解されるように、参照により本明細書に組み入れた添付の図面を参照する。
【０００７】
詳細な説明
従来技術式のディジタル処理システムのブロック図を図１に示してある。ディジタル信号プロセッサ（ＤＳＰ）１０およびキャッシュメモリ１２などのプロセッサが、単一処理チップ１４上に配置されている。キャッシュメモリ１２は、命令キャッシュでも、データキャッシュでもよい。システムによっては、データキャッシュおよび命令キャッシュを含むものもある。オフチップフラッシュメモリ２０は、キャッシュメモリ１２と結合されている。処理チップ１４は、オンチップメモリ、マイクロコントローラ命令を実行するためのマイクロコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラおよびオフチップデバイスへの様々なインターフェイスなどの、その他の構成要素を含む。
【０００８】
キャッシュメモリ１２とフラッシュメモリ２０は、メモリ階層を形成し、この階層の中で、キャッシュメモリ１２は、比較的小さな待ち時間（latency）と比較的小さな容量を有し、フラッシュメモリ２０は比較的大きな待ち時間と比較的大きな容量を有する。動作に際しては、ＤＳＰ１０は、命令を実行するとともに、キャッシュメモリ１２中のデータおよび／または命令にアクセスする。ローレイテンシ（low latency）キャッシュメモリ１２では、キャッシュミスが発生するとき以外は、高い性能が得られる。キャッシュミスの場合には、要求されるデータをフラッシュメモリ２０からロードするために、キャッシュラインフィル動作が必要となる。フラッシュメモリ２０からキャッシュラインにロードするのに要する時間は、ＤＳＰ１０の数百クロックサイクルになることもある。このラインフィル動作中に、ＤＳＰ１０は停止し、それによって性能が低下する。
【０００９】
本発明の一実施態様によるディジタル処理システムの簡易ブロック図を図２に示してある。図１および２の同一要素は、同一参照番号をつけてある。好適なＤＳＰの一例が、２０００年１１月１６日公開のＰＣＴ公開番号ＷＯ００／６８７７８３号に開示されている。しかしながら、本発明は、いずれの特定のディジタル信号プロセッサにも限定されるものではない。さらに、ＤＳＰ１０は、マイクロコントローラ、汎用マイクロコンピュータ、またはその他のプロセッサで置き換えてもよい。
【００１０】
本発明の一特徴によれば、キャッシュラインフィル動作の期間、ＤＳＰ１０を停止させる代わりに、ＤＳＰ１０に、割込みサービスルーチン（ＩＳＲ）のような、代替ソフトウエアタスクを実行するように再指令する。第１のソフトウエアタスクの処理は、その後に、キャッシュラインフィル動作が完了したときに、再開することができる。図２を参照すると、キャッシュミス割込み生成ユニット３０は、キャッシュラインフィル動作を検出し、ここでキャッシュメモリ１２は、フラッシュメモリ２０からのキャッシュラインフィル動作を実行して、ＤＳＰ１０への割込みを生成する。これに応答して、ＤＳＰ１０は、キャッシュライン動作中に、第２のソフトウエアタスクを実行する。この開示の方法は、プロセッサがキャッシュラインフィル動作の完了を待って停止している、プロセッサ時間を利用することによって性能を向上させる。
【００１１】
ソフトウエアが複数の独立したスレッドとして構成され、このスレッドがオペレーティングシステム（ＯＳ）スケジューラによって管理されるソフトウエア構成の場合は、この技法を利用することができる。この場合には、新規のソフトウエアスレッドを、キャッシュラインフィル動作中に開始することができる。このマルチスレッドソフトウエア構成は、メインルーチン／割込みサービスルーチンモデルのより一般的なスーパーセットとみなすことができる。このメイン／ＩＳＲモデルは、実質的に２つのソフトウエアスレッドを含み、プロセッサ割込みハードウエアが、タスクスケジューラとして機能する。
【００１２】
この技法を利用するシステムの要素は、（１）それがアクセスするメモリサブシステムよりもはるかに速いサイクル時間を有するプロセッサ、（２）現在タスクよりも優先順位の高い割込みアサーションを認識すると、すでに命令パイプラインに入った命令を破棄し、フェッチした命令を新タスクに向け直す、プロセッサシーケンサ構成である。この機能によって、ロード動作が開始して、メモリアクセスを生成するが、次いで破棄されて、別のタスクを開始することができ、さらに（３）プロセッサとより低速のメモリサブシステム間のコードおよび／またはデータキャッシュ、および（４）独立タスク（例えば、割込み処理または多重スレッド）が、任意の時間にプロセッサ上で実行できるような、ソフトウエアモジュラー性がある。
【００１３】
このシステムには、任意選択で、キャッシュミスが発生したことをオペレーティングシステムに合図して、オペレーティングシステムが次の保留中ソフトウエアタスク／スレッドを開始できるようにする回路を含めることができる。この回路なしでは、プロセッサが停止している間に関係のない割込みが発生しない限り、キャッシュミスが発生すると、プロセッサは従来のように停止する。追加の回路を設けることによって、このシステムでは、キャッシュミスのときに常に割込みが起こることを保証することができる。別の選択肢は、アドレス範囲チェック回路を含めることであり、これによって、キャッシュミスに関連するメモリアドレスが、指定のアドレス範囲にある場合にのみ、キャッシュミス時の割込みが生成される。このアドレス範囲は固定でもプログラム可能としてもよい。複数の、異なるアクセス待ち時間を有するメモリサブシステム（例えば、オフチップフラッシュメモリおよびオンチップＳＲＡＭメモリ）を備える埋め込みシステムにおける、任意選択の改善として、キャッシュに、複数のラインフィルバッファおよびコピーバックバッファを使用することによって、全体スループットをさらに向上させることができる。この改善には、さらに、キャッシュコントローラとメモリシステムのそれぞれとの間の個別バス、またはアウト・オフ・オーダーラインフィルプロトコル（out-of-order line fill protocols）（例えば、バスデータタグ付け）を使用する共通バスのいずれかが必要である。
【００１４】
再び図２を参照すると、ＤＳＰ１０が、キャッシュメモリ１２をミスするメモリアクセスを生成するが、キャッシュ可能である場合に、キャッシュコントローラは、オフチップフラッシュメモリ２０への、キャッシュラインフィル動作を生成する。フラッシュメモリから全キャッシュラインをフェッチするためのアクセス時間は、数百プロセッササイクルとなる可能性がある。
キャッシュミス割込み生成ユニット３０は、キャッシュラインフィル動作が、キャッシュコントローラによって要求されていることを判定し、ＤＳＰ１０への割込みを生成する。ＤＳＰ１０は、割込みを検出するとパイプライン中の命令を破棄するので、キャッシュラインミスを生成した命令を破棄し、割込みサービスルーチンを開始する。
【００１５】
この割込みサービスルーチンは、次の適切なステップを決定する。例えば、ＩＳＲは、ローカルメモリシステム内に滞留する、高優先順位タスクを実行可能であることを判定することができる。ＩＳＲがローカルキャッシュ内でヒットする（または、よくあるように、ＩＳＲが、ローカルキャッシュに並列にアクセスされるローカルＲＡＭ外で動作する）限り、キャッシュラインフィル動作を完了するのに要する長い時間において、ＤＳＰ１０が停止することはない。ＩＳＲが動作を完了すると、実行は、キャッシュミスを生成した低優先順位タスクに復帰する。
【００１６】
より一般的なマルチスレッドソフトウエアモデルにおいては、割込みが、オペレーティングシステムスケジューラを呼び出し、次いでこのスケジューラが、利用可能なローカルメモリリソース内で実行可能な、現在の高優先順位ソフトウエアスレッドに実行を移す。そのソフトウエアスレッドは、（ａ）完了まで動作するか、または（ｂ）ある時点でスケジューラによって取って代わられ、その結果として、キャッシュミス上で取って代わられたスレッドのような別のスレッドを、キャッシュラインフィル動作が完了したと仮定して、実行することができる。
【００１７】
本発明を実現するための、キャッシュメモリの一実施態様のブロック図を図３に示してある。図３のキャッシュメモリは、図２のキャッシュメモリ１２およびキャッシュミス割込み生成ユニット３０に対応する。従来のように、キャッシュメモリは、タグ配列１００、データ配列１０２、ヒット／ミス論理１０４、記憶バッファ１０６および書き込みバッファ１０８を含む。このキャッシュメモリは、キャッシュミス信号を生成するための回路を有するキャッシュコントローラ１１０、１つまたは複数のラインフィルバッファ１１２Ａおよび１１２Ｂ、ならびに１つまたは複数のコピーバックバッファ１１４Ａおよび１１４Ｂをさらに含む。キャッシュメモリには、アドレス範囲比較回路１２０をさらに含めてもよい。
【００１８】
第１のタスクまたはスレッドの実行中にＤＳＰ１０によって読み取りアクセスが生成されるとき、読み取りアドレスが、ヒット／ミス論理１０４に供給される。タグ配列１００は、キャッシュラインが表すメモリ内の特定のアドレスソースを同定するための、上部アドレスビットを格納する。このタグが読み取りアドレスと比較されて、要求されたデータが、キャッシュ内にあるかどうかが判定される。ヒットの場合には、読み取りデータは、ＤＳＰ１０に供給される。ミスの場合には、ミス信号が、キャッシュコントローラ１１０に供給されて、キャッシュラインフィル動作が開始される。キャッシュラインフィル動作において、要求されるデータを含むキャッシュラインが、フラッシュメモリ２０から読み出される。このキャッシュラインが、ラインフィルバッファ１１２を介してタグ配列１００およびデータ配列１０２中にロードされて、ＤＳＰ１０による使用が可能となる。
【００１９】
キャッシュミスの場合には、キャッシュコントローラ１１０は、キャッシュミス信号をＤＳＰ１０に供給して、ＤＳＰ１０による、第２のタスクまたはスレッドの実行を起動する。キャッシュミスの場合には、置き換えられるキャッシュラインを、コピーバックバッファ１１４Ａ、１１４Ｂを介して、フラッシュメモリ２０にコピーすることができる。任意選択で、キャッシュメモリには、キャッシュラインフィル動作中に第２のソフトウエアタスクを実行する際の性能改善のために、２つまたは３つ以上のラインフィルバッファ１１２Ａ、１１２Ｂ、および２つまたは３つ以上のコピーバックバッファ１１４Ａ、１１４Ｂを含めることができる。
【００２０】
アドレス範囲比較回路１２０を、任意選択で設けることによって、キャッシュラインフィル動作中に、第２タスクが実行されるアドレス範囲を限定してもよい。具体的には、アドレス範囲比較回路１２０は、上部アドレス限界および下部アドレス限界を受け取り、これらは一定でも、プログラム可能でもよい。キャッシュラインフィル動作の場合には、アドレス範囲比較回路１２０は、フラッシュメモリ２０に供給されるメモリロードアドレスも受け取る。アドレス範囲比較回路１２０は、メモリロードアドレスが、上部アドレス限界および下部アドレス限界の間にあるかどうかを、包含的または排他的に判定するように構成することができる。別の技法においては、アドレス範囲比較回路１２０は、メモリロードアドレスが、上部アドレス限界と下部アドレス限界の間の範囲外であるかどうかを判定することができる。いずれの場合でも、指定の比較基準が満足される場合には、キャッシュコントローラ１１０に信号が供給されて、キャッシュミス信号をＤＳＰ１０に供給することが可能になる。
【００２１】
キャッシュミス動作に応答してタスクを切り替えることによって、プロセッサ性能を改善するためのルーチンのフローチャートを図４に示してある。ステップ２００において、プロセッサ（ＤＳＰ１０）は、キャッシュメモリ１２内のオペランドおよび／または命令を参照することによってタスクＡを実行する。ステップ２０２において、キャッシュメモリ１２は、キャッシュミスが発生したかどうかを判定する。キャッシュミスが発生していない場合には、プロセッサは、ステップ２００におけるタスクＡの実行を継続する。キャッシュミスの場合には、キャッシュメモリ１２は、ステップ２０４においてキャッシュラインフィル動作を開始する。キャッシュラインフィル動作は、要求されたデータを含むキャッシュラインを、フラッシュメモリ２０からキャッシュメモリ１２にロードする。ステップ２０６において、キャッシュメモリ１２内のアドレス範囲比較回路１２０は、キャッシュミスアドレスを、上記のような選択されたアドレス範囲と比較する。ステップ２０８において、キャッシュミスアドレスが、指定のアドレス範囲比較基準に合致するかどうかの判定がされる。キャッシュミスアドレスが、アドレス範囲比較基準に合致しない場合には、プロセッサは、ステップ２１０においてキャッシュラインフィル動作が完了するのを待って、ステップ２００でのタスクＡの実行に復帰する。キャッシュミスアドレスが、アドレス範囲比較基準に合致する場合には、ステップ２１２においてプロセッサはタスクを変更するように通知される。図３を参照すると、キャッシュコントローラ１１０は、キャッシュミス信号をＤＳＰ１０に送る。次いで、キャッシュラインフィル動作中に、プロセッサは、ステップ２１４においてタスクＢを実行する。アドレス範囲比較と関連するステップ２０６、２０８および２１０は、図４のプロセスにおいて任意選択であることが理解されるであろう。
【００２２】
以上のように本発明の少なくとも１つの実施態様の、いくつかの態様について記述したが、当業者であれば、様々な修正変更形態、修正形態、および改善形態を容易に思いつくことを理解すべきである。このような変更形態、修正形態および改善形態は、本開示の一部であり、また本発明の趣旨と範囲に含めることを意図するものである。
したがって、前記の説明および図面は、例示のためだけのものである。
【図面の簡単な説明】
【００２３】
【図１】従来技術式埋め込みプロセッサシステムの簡易ブロック図である。
【図２】本発明の一実施態様による、プロセッサシステムの簡易ブロック図である。
【図３】図２に示すキャッシュメモリの一実施態様のブロック図である。
【図４】本発明の一実施態様によるキャッシュコントローラによって実現される、ルーチンのフロー図である。
【図１】
2005502120.tif 000003
【図２】
2005502120.tif 000004
【図３】
2005502120.tif 000005
【図４】
2005502120.tif 000006
【国際公開パンフレット】
2005502120.tif 000007
2005502120.tif 000008
2005502120.tif 000009
2005502120.tif 000010
2005502120.tif 000011
2005502120.tif 000012
2005502120.tif 000013
2005502120.tif 000014
2005502120.tif 000015
2005502120.tif 000016
2005502120.tif 000017
2005502120.tif 000018
2005502120.tif 000019
2005502120.tif 000020
2005502120.tif 000021
2005502120.tif 000022
2005502120.tif 000023
2005502120.tif 000024
2005502120.tif 000025
2005502120.tif 000026
【国際調査報告】
2005502120.tif 000027
2005502120.tif 000028
2005502120.tif 000029