(57)【要約】      （修正有）【課題】複数のマイクロコントローラがフラッシュメモリからプログラムコードを読み出してプログラムを起動する際のレイテンシを減少するフラッシュメモリコントローラを提供する。【解決手段】フラッシュメモリコントローラ１０１は、第１のマイクロコントローラ１０３及び第２のマイクロコントローラ１０４を有し、２つのコントローラによって共有されるフラッシュメモリ媒体１００と通信する。フラッシュメモリコントローラは、それぞれのマイクロコントローラによる実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュするようにそれぞれ構成される第１のインプレース実行キャッシュコントローラ１１３及び第２のインプレース実行キャッシュコントローラ１１４を備える。【選択図】図１
2020144867.tif 000002
【特許請求の範囲】
【請求項１】
第１の機能を実行するように構成される第１のマイクロコントローラと、第２の機能を実行するように構成される第２のマイクロコントローラとを有し、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラによって共有されるフラッシュメモリ媒体をさらに有するマイクロコントローラシステム用のフラッシュメモリコントローラであって、
前記フラッシュメモリコントローラは、
前記第１のマイクロコントローラによる実行のために前記フラッシュメモリ媒体から読み出されるプログラムコードをキャッシュするように構成される第１のインプレース実行キャッシュコントローラと、
前記第２のマイクロコントローラによる実行のために前記フラッシュメモリ媒体から読み出されるプログラムコードをキャッシュするように構成される第２のインプレース実行キャッシュコントローラと
を備える、
フラッシュメモリコントローラ。
【請求項２】
前記第１のインプレース実行キャッシュコントローラ及び前記第２のインプレース実行キャッシュコントローラのそれぞれにおいて、実行のためにプログラムコードをフェッチすることに対してキャッシュミスが発生した場合、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの一方によるアクセスを制御するように構成されるキャッシュミスアービターをさらに備える、請求項１に記載のフラッシュメモリコントローラ。
【請求項３】
前記キャッシュミスアービターは、前記第１のインプレース実行キャッシュコントローラ及び前記第２のインプレース実行キャッシュコントローラの両方でそれぞれのキャッシュミスが発生した場合、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供するように構成される、請求項２に記載のフラッシュメモリコントローラ。
【請求項４】
前記キャッシュミスアービターは、ラウンドロビンアービトレーション方式を用いて、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供するように構成される、請求項３に記載のフラッシュメモリコントローラ。
【請求項５】
前記キャッシュミスアービターは、（ａ）前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出された前記データの中に、所望のデータユニットを含み、かつ、（ｂ）前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの前記一方の前記フェッチ動作が、閾値を超えて進行しているとき、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの他方からフェッチ要求を受信すると、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの前記一方の代わりに前記フェッチ動作をアボートするように構成される、請求項２から４のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項６】
前記閾値は、アボートが許可される前に読み出される最小のデータ量を示す、請求項５に記載のフラッシュメモリコントローラ。
【請求項７】
前記閾値は、前記フラッシュメモリコントローラの設定時に設定可能である、請求項６に記載のフラッシュメモリコントローラ。
【請求項８】
前記フラッシュメモリコントローラは、フェッチされるキャッシュラインごとに複数の有効ビットを設定するように構成され、前記複数の有効ビットにおける各ビットは、フェッチされている前記キャッシュラインの部分を表し、前記閾値は、前記複数の有効ビットにおける最小のビット数である、請求項６又は７に記載のフラッシュメモリコントローラ。
【請求項９】
前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの一方による実行のためのプログラムコードが暗号化された形で格納され、
前記フラッシュメモリコントローラは、暗号化された前記プログラムコードを復号するように構成される復号エンジンをさらに備える、
請求項１から８のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項１０】
前記復号エンジンは、オンザフライで復号するように構成される、請求項９に記載のフラッシュメモリコントローラ。
【請求項１１】
復号モードの決定は、アドレスレンジに基づいている、請求項１０に記載のフラッシュメモリコントローラ。
【請求項１２】
前記第１のインプレース実行キャッシュコントローラ及び前記第２のインプレース実行キャッシュコントローラのうちの少なくとも１つは、複数のブロックとして構成されるキャッシュデータメモリを有し、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納し、
前記フラッシュメモリコントローラは、前記キャッシュデータメモリを読み出すとき、第１のクロックサイクルで、読み出されるデータが格納される前記ウェイの識別を除いて、読み出される前記データの位置を復号し、第２のクロックサイクルで、読み出される前記データが格納される前記ウェイの前記識別を復号するように構成される、
請求項１から１１のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項１３】
第１の機能を実行するように構成される第１のマイクロコントローラと、第２の機能を実行するように構成される第２のマイクロコントローラとを有し、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラによって共有され、実行のためのプログラムコードを格納するフラッシュメモリ媒体をさらに有するマイクロコントローラシステムにおけるフラッシュメモリを動作する方法であって、前記方法は、
前記第１のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体から読み出されるプログラムコードをキャッシュする段階と、
前記第２のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体から読み出されるプログラムコードを個別にキャッシュする段階と
を備える、方法。
【請求項１４】
前記第１のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体からプログラムコードをフェッチすること及び前記第２のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体からプログラムコードをフェッチすることに対してそれぞれキャッシュミスが発生した場合、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供する段階をさらに備える、請求項１３に記載の方法。
【請求項１５】
平等なアクセスを前記提供する段階は、ラウンドロビンアービトレーション方式を用いる段階を有する、請求項１４に記載の方法。
【請求項１６】
（ａ）前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出された前記データの中に、所望のデータユニットを含み、かつ、（ｂ）前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの前記一方の前記フェッチ動作が、閾値を超えて進行しているとき、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラの他方からフェッチ要求を受信すると、前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの前記一方の代わりに前記フェッチ動作をアボートする段階をさらに備える、請求項１３から１５のいずれか一項に記載の方法。
【請求項１７】
前記アボートする段階は、前記閾値によって示される最小のデータ量が読み出されているときにのみ、実行される、請求項１６に記載の方法。
【請求項１８】
フラッシュメモリコントローラの設定時に前記閾値を設定する段階をさらに備える、請求項１７に記載の方法。
【請求項１９】
フェッチされるキャッシュラインごとに複数の有効ビットを設定する段階であって、前記複数の有効ビットにおける各ビットは、フェッチされている前記キャッシュラインの部分を表し、前記閾値は、前記複数の有効ビットにおける最小のビット数である、段階をさらに備える、請求項１７又は１８に記載の方法。
【請求項２０】
前記第１のマイクロコントローラ及び前記第２のマイクロコントローラのうちの一方による実行のためのプログラムコードを暗号化された形で格納する段階と、
インプレース実行すると、暗号化された前記プログラムコードを復号する段階と
さらに備える、請求項１３から１９のいずれか一項に記載の方法。
【請求項２１】
インプレース実行中に前記復号する段階をオンザフライで実行する段階をさらに備える、請求項２０に記載の方法。
【請求項２２】
アドレスレンジに基づいて復号モードを決定する段階をさらに備える、請求項２１に記載の方法。
【請求項２３】
複数のブロックとしてキャッシュデータメモリを構成する段階であって、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納する、段階と、
前記キャッシュデータメモリを読み出すとき、第１のクロックサイクルで、読み出されるデータが格納される前記ウェイの識別を除いて、読み出される前記データの位置を復号し、第２のクロックサイクルで、読み出される前記データが格納される前記ウェイの前記識別を復号する段階と
をさらに備える、請求項１３から２２のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本開示は、２０１９年３月５日に出願された同時係属の同一出願人による米国仮特許出願第６２／８１４，１６５号に基づく優先権を主張し、その全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、フラッシュメモリコントローラに関する。より具体的には、本開示は、２つの異なるマイクロコントローラ又はプロセッサによる同一のフラッシュメモリ媒体へのアクセスを提供するフラッシュメモリコントローラに関する。
【背景技術】
【０００３】
本明細書で提供される背景技術の説明は、概して、本開示の背景を示すことを目的とする。本明細書の発明者の成果は、当該成果がこの背景技術のセクション、及び、そうでなければ、出願時の先行技術としての資格を与えてはいけない記載の態様で説明される限りにおいて、本開示の主題に対する先行技術であると明示的にも暗示的にも認められない。
【０００４】
いくつかのマイクロコントローラベースのシステムは、フラッシュタイプのメモリデバイスから読み出されるプログラムコードを実行する。プログラムコードを読み出す必要性は、プロセッサ内部のメモリ要件を増加させ、プログラムの起動を遅くする。最近使用したコードブロックをキャッシュして、プログラムの起動におけるそのようなレイテンシを減少させるべく、インプレース実行（ＸＩＰ）フラッシュメモリコントローラは、コントローラ自身にキャッシュブロックを提供する。しかしながら、複数のプロセッサ又はマイクロコントローラを有するシステムオンチップ（ＳｏＣ）がより一般的になってきており、プログラムの起動のレイテンシは、各プロセッサに影響を与え得る。
【発明の概要】
【０００５】
本開示の主題によれば、第１の機能を実装するように構成される第１のマイクロコントローラと、第２の機能を実行するように構成される第２のマイクロコントローラとを有し、第１のマイクロコントローラ及び第２のマイクロコントローラによって共有されるフラッシュメモリ媒体をさらに有するマイクロコントローラシステム用のフラッシュメモリコントローラは、第１のマイクロコントローラによる実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュするように構成される第１のインプレース実行キャッシュコントローラと、第２のマイクロコントローラによる実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュするように構成される第２のインプレース実行キャッシュコントローラとを含む。
【０００６】
そのようなフラッシュメモリコントローラの第１の実装は、第１のインプレース実行キャッシュコントローラ及び第２のインプレース実行キャッシュコントローラのそれぞれにおいて、実行のためにプログラムコードをフェッチすることに対してキャッシュミスが発生した場合、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方によるアクセスを制御するように構成されるキャッシュミスアービターをさらに含み得る。
【０００７】
そのような第１の実装において、キャッシュミスアービターは、第１のインプレース実行キャッシュコントローラ及び第２のインプレース実行キャッシュコントローラの両方でそれぞれのキャッシュミスが発生した場合、第１のマイクロコントローラ及び第２のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供するように構成され得る。特に、フラッシュメモリコントローラは、ラウンドロビンアービトレーション方式を用いて、第１のマイクロコントローラ及び第２のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供するように構成され得る。
【０００８】
第１の実装において、キャッシュミスアービターは、（ａ）第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出されたデータの中に、所望のデータユニットを含み、かつ、（ｂ）第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方のフェッチ動作が、閾値を超えて進行しているとき、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの他方からフェッチ要求を受信すると、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方の代わりにフェッチ動作をアボートするように構成され得る。閾値は、フラッシュメモリコントローラの設定時に設定可能であり得る。
【０００９】
一変形において、閾値は、アボートが許可される前に読み出される最小のデータ量を示し得る。そのような一変形において、フラッシュメモリコントローラは、フェッチされるキャッシュラインごとに複数の有効ビットを設定するように構成されてよく、複数の有効ビットにおける各ビットは、フェッチされているキャッシュラインの部分を表し、閾値は、複数の有効ビットにおける最小のビット数であってよい。
【００１０】
そのようなフラッシュメモリコントローラの第２の実装において、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方による実行のためのプログラムコードが暗号化された形で格納され、フラッシュメモリコントローラは、暗号化されたプログラムコードを復号するように構成される復号エンジンをさらに備える。
【００１１】
そのような第２の実装において、復号エンジンは、オンザフライで復号するように構成され得る。復号モードの決定は、アドレスレンジに基づいている。
【００１２】
そのようなフラッシュメモリコントローラの第３の実装において、第１のインプレース実行キャッシュコントローラ及び第２のインプレース実行キャッシュコントローラのうちの少なくとも１つは、複数のブロックとして構成されるキャッシュデータメモリを含み、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納し、フラッシュメモリコントローラは、キャッシュデータメモリを読み出すとき、第１のクロックサイクルで、読み出されるデータが格納されるウェイの識別を除いて、読み出されるデータの位置を復号し、第２のクロックサイクルで、読み出されるデータが格納されるウェイの識別を復号するように構成され得る。
【００１３】
本開示の主題の実装によれば、第１の機能を実行するように構成される第１のマイクロコントローラと、第２の機能を実行するように構成される第２のマイクロコントローラとを有し、第１のマイクロコントローラ及び第２のマイクロコントローラによって共有され、実行のためのプログラムコードを格納するフラッシュメモリ媒体をさらに有するマイクロコントローラシステムにおけるフラッシュメモリを動作するための方法は、第１のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュする段階と、第２のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されるプログラムコードを個別にキャッシュする段階とを含む。
【００１４】
そのような方法の第１の実装は、第１のマイクロコントローラによるインプレース実行のためにフラッシュメモリからプログラムコードをフェッチすること及び第２のマイクロコントローラによるインプレース実行のためにフラッシュメモリからプログラムコードをフェッチすることに対してそれぞれキャッシュミスが発生した場合、第１のマイクロコントローラ及び第２のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供する段階をさらに含む。平等なアクセスを提供する段階は、ラウンドロビンアービトレーション方式を用いる段階を含み得る。
【００１５】
そのような方法の第２の実装は、（ａ）第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出されたデータの中に、所望のデータユニットを含み、かつ、（ｂ）第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方のフェッチ動作が、閾値を超えて進行しているとき、第１のマイクロコントローラ及び第２のマイクロコントローラの他方からフェッチ要求を受信すると、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方の代わりにフェッチ動作をアボートする段階をさらに含み得る。閾値は、フラッシュメモリコントローラの設定時に設定され得る。
【００１６】
アボートする段階は、閾値によって示される最小のデータ量が読み出されているときにのみ、実行され得る。方法は、フェッチされるキャッシュラインごとに複数の有効ビットを設定する段階であって、複数の有効ビットにおける各ビットは、フェッチされているキャッシュラインの部分を表し、閾値は、複数の有効ビットにおける最小のビット数である、段階をさらに含み得る。
【００１７】
そのような方法の第３の実装は、第１のマイクロコントローラ及び第２のマイクロコントローラのうちの一方による実行のためのプログラムコードを暗号化された形で格納する段階と、インプレース実行すると、暗号化されたプログラムコードを復号する段階とをさらに含み得る。方法は、インプレース実行中に復号する段階をオンザフライで実行する段階をさらに含み得る。方法は、アドレスレンジに基づいて復号モードを決定する段階をさらに含み得る。
【００１８】
そのような方法の第３の実装は、複数のブロックとしてキャッシュデータメモリを構成する段階であって、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納する、段階と、キャッシュデータメモリを読み出すとき、第１のクロックサイクルで、読み出されるデータが格納されるウェイの識別を除いて、読み出されるデータの位置を復号し、第２のクロックサイクルで、読み出されるデータが格納されるウェイの識別を復号する段階とをさらに含み得る。
【図面の簡単な説明】
【００１９】
本開示のさらなる特徴、性質、及び様々な利点が、全体を通じて同様の参照文字が同様の部分を指す添付図面と併用して以下の詳細な説明を考慮すると明らかだろう。
【００２０】
【図１】本開示の主題の実装による、フラッシュメモリコントローラのトップレベル図である。
【００２１】
【図２】本開示の主題の実装による、アドレスエイリアス方式のアドレスマッピングの図である。
【００２２】
【図３】本開示の主題の実装による、どのようにキャッシュがウェイに編成され得るかを示す図である。
【００２３】
【図４】本開示の主題の実装による、書き込みクロック及び読み出しクロックを示すタイミング図である。
【００２４】
【図５】本開示の主題の実装による、フラッシュメモリコントローラを動作するための方法のフロー図である。
【発明を実施するための形態】
【００２５】
本開示の主題の実装によれば、２つ（又はそれ以上の）個別のインプレース実行キャッシュコントローラを有するフラッシュメモリコントローラは、個別のプロセッサ又はマイクロコントローラが単一のフラッシュメモリ媒体に同時で効果的にアクセスすることを可能にする。マイクロコントローラは、同一のフラッシュメモリコントローラ及び同一の物理フラッシュメモリ媒体を共有し、これは、要求されるメモリサイズを減少させる。しかしながら、各キャッシュコントローラにはインプレース実行機能を備える独自のキャッシュメモリがあるので、各マイクロコントローラは、それぞれ独立したキャッシュコントローラを介してフラッシュメモリにアクセスする。
【００２６】
例えば、無線インタフェースＳｏＣは、１又は複数のユーザ機能を実行するための（イングランド、ケンブリッジシャー州のＡＲＭホールディングスによってライセンスされたＣｏｒｔｅｘ−Ｍ４縮小命令セットマイクロコントローラのような）マイクロコントローラ、さらに、無線動作を実行するための（ＡＲＭホールディングスによってライセンスされたＡＲＭ−９縮小命令セットマイクロコントローラのような）別個のマイクロコントローラを含み得る。本開示の主題の実装によれば、そのようなＳｏＣと共に使用するためのフラッシュメモリコントローラは、２つの個別のインプレース実行（ＸＩＰ）キャッシュコントローラ−１つは無線マイクロコントローラと共に使用するためのものであり、１つはユーザ機能マイクロコントローラと共に使用するためのものである−を含む。
【００２７】
そのような実装において、キャッシュコントローラのそれぞれのキャッシュミスが、両方（又は少なくとも２つ）のマイクロコントローラがフラッシュメモリ媒体から実行するためのプログラムコードをフェッチすることを要求するときに、２つ（又はそれ以上の）キャッシュコントローラによるフラッシュメモリ媒体へのアクセスを制御するためのアービターが提供される。アービターは、キャッシュコントローラによるフラッシュメモリ媒体への平等なアクセスを提供するように構成され得る。例えば、ラウンドロビンアービトレーション方式が用いられ得る。代替的に、不平等なアクセスを提供することがより公平である状況が存在してよく、アービターはそのような状況で不平等なアクセスを提供するように構成されてよい。
【００２８】
従来、キャッシュ動作において、たとえ、キャッシュラインの一部のみが、自らのためにフェッチ動作が開始されるマイクロコントローラによって実際に必要とされ得るとしても、全体のキャッシュラインが任意のフェッチ動作の一部としてフェッチされる。しかしながら、本開示の主題の実装によれば、アービターは、他のマイクロコントローラが第２のフェッチ動作を要求する場合、マイクロコントローラのうちの１つの代わりに第１のフェッチ動作をアボートすることを可能にするアボートメカニズムを含んでよく、その結果、他のマイクロコントローラは、チャネルが解放されて第２のフェッチ動作を進行するのに必要以上に待たなくてよい。そのようなアボートメカニズムは、第１のフェッチ動作においてフェッチされているキャッシュラインの部分が、自らのために第１のフェッチ動作が開始されたマイクロコントローラによって実際に必要とされるデータ（すなわち、複数のデータワードを含み得るが、この説明の目的上、「クリティカルワード（ｃｒｉｔｉｃａｌ  ｗｏｒｄ）」と称され得るプログラムコードのセグメント）を含む場合に限り、第２のフェッチ動作を選択して第１のフェッチ動作をアボートすることを可能にするだろう。
【００２９】
具体的には、そのようなアボートメカニズムの一実装によれば、第１のフェッチ動作が１つのマイクロコントローラの代わりに開始されて、かつ、第２のフェッチ動作が、第１のフェッチ動作と同一の読み出しチャネルを用いる他のマイクロコントローラの代わりに開始される必要がある場合、第２のフェッチ動作を選択して第１のフェッチ動作をアボートすることは、第１のフェッチ動作から必要とされるクリティカルワードが、フラッシュメモリ媒体からまだ読み出されていない場合にまで考慮されていない。しかしながら、第１のフェッチ動作から必要とされるクリティカルワードがフラッシュメモリ媒体から読み出された場合、アボートメカニズムのこの実装によれば、予め定められた閾値が検査されて、予め定められた閾値が満たされる場合、第２のフェッチ動作を選択して第１のフェッチ動作がアボートされる。
【００３０】
予め定められた閾値は、第１のフェッチ動作によって読み出される最小のデータ量−例えば、最小のワード数−を表し得る。閾値が前もって設定されているから、閾値は予め決定されている。閾値は、デバイス製造時に設定され得る。代替的に、一実装において、閾値は、フィールド設定可能であり得、デバイス設定時に設定され得る。
【００３１】
セキュリティのために、フラッシュメモリ媒体に格納されるプログラムコードが、暗号化され得る。そのような実装において、アービターは、実行のためにマイクロコントローラに配信するためにプログラムコードがフェッチされているときに、当該プログラムコードをオンザフライで復号するための復号エンジン−例えば、ＡＥＳ復号エンジン−を含み得る。フェッチされたプログラムコードが復号される必要があるかどうかは、アドレスエイリアス方式を用いて示され得る。１つのそのような方式において、１つのアドレスレンジ−例えば、アドレスレンジの下位部分−は、クリアなプログラムコードデータに用いられてよく、その一方で、他のアドレスレンジ−例えば、アドレスレンジの上位部分−が暗号化されたプログラムコードデータに用いられる。その方式において、物理アドレスは、常に下位アドレスレンジ内にある。アドレス内の次の最上位ビットが、復号が必要とされるかどうかを示すだろう。したがって、（次の最上位ビットが「１」であり復号を示すので）復号が必要とされる場合、アドレスが上位アドレスレンジにあるように見えるだろう。代替的に、「１」が復号しないことを示すのに用いられ得、この場合において、復号が必要とされる場合、アドレスは、下位アドレスレンジ内にあるように見え得る。
【００３２】
従来、キャッシュラインごとに１つの「有効ビット」が存在している。しかしながら、アボートメカニズムに関連して上記のとおり、本開示の主題における実装において、キャッシュラインの各ワードが、（完全なラインのフェッチがアボートされるかもしれないので）フェッチされるときに検証される。結果として、キャッシュラインごとにタグデータ内により多くの「有効ビット」が存在する。一実装において、キャッシュラインごとに８つのワードが存在する。したがって、その実装において、従来の実装より８倍多い「有効ビット」が存在する。
【００３３】
結果として、復号するアドレスデータがより多く存在し、必要な場合に応じて１クロックサイクル内ですべてのアドレスデータを復号することが可能でない場合がある。したがって、本開示の主題のさらなる実装に従って、キャッシュプログラムコードデータが、マルチウェイ連想キャッシュ（例えば、一実装における８ウェイ連想キャッシュ）と同様の方法で格納される。キャッシュが、合計３２ｋＢの８つの３２バイトのキャッシュラインの１２８セットとして編成され得る。
【００３４】
キャッシュが、１２８セットのそれぞれの各ｎ番目のラインがｎ番目のウェイに含まれている状態で、８「ウェイ（ｗａｙｓ）」として再編成され得る。すなわち、１２８セットのそれぞれの０番目のラインが０番目のウェイに含まれ、１２８セットのそれぞれの１番目のラインが１番目のウェイに含まれ、その他も同様である。１クロックサイクル内で、すべての追加の有効ビットを含むタグデータは、１クロックサイクルで復号されることができない場合があり、タイミング違反をもたらす。したがって、本開示の主題の実装によれば、第１のクロックサイクルで、タグデータが復号されて特定のウェイを除いたすべてのアドレス情報をもたらし、８つの可能性の選択を残す。８ウェイの中から選択することを示す、残りのアドレスデータが次のクロックサイクルで復号され得る。
【００３５】
本開示の主題が、図１〜図５の参照により、より良く理解され得る。
【００３６】
図１は、本開示の主題の実装による、フラッシュメモリコントローラ１０１のトップレベル図である。この実装において、フラッシュメモリコントローラ１０１は、クアッド・シリアル・ペリフェラル・インタフェース（ＱＳＰＩ）モジュール１０２を介してフラッシュメモリ媒体１００と通信する。ＱＳＰＩモジュール１０２は、（例えば、データをフェッチするために）ＱＳＰＩマルチプレクサー１１２を介してフラッシュメモリコントローラ１０１の様々な他の部分からフラッシュメモリコマンドを受信する。ＱＳＰＩモジュール１０２は、ＳＰＩモードで又はコントローラを要求しないＱＳＰＩモードで動作することができ得る。
【００３７】
この実装において、ＱＳＰＩモジュール１０２は、２つのマイクロコントローラを含むより大きなシステムオンチップの一部（ＳｏＣ）（その全体は不図示）である。ＡＲＭホールディングスによってライセンスされたＡＲＭ−９縮小命令セットマイクロコントローラであり得るマイクロコントローラ１０３は、この実装において、Ｗｉ−Ｆｉリンクのような無線データリンクを操作するよう構成される。ＡＲＭホールディングスによってライセンスされたＣｏｒｔｅｘ−Ｍ４縮小命令セットマイクロコントローラであり得るマイクロコントローラ１０４は、この実装において、ユーザ機能のような異なる機能を実行するよう構成される。
【００３８】
この実装において、フラッシュメモリコントローラ１０１は、マイクロコントローラ１０３にサービスを提供する第１のインプレース実行（ＸＩＰ）キャッシュコントローラ１１３と、マイクロコントローラ１０４にサービスを提供する第２のインプレース実行（ＸＩＰ）キャッシュコントローラ１１４とを含む。フラッシュメモリコントローラ１０１はまた、ＸＩＰキャッシュコントローラ１１３からのキャッシュ要求と、ＸＩＰキャッシュコントローラ１１４からのキャッシュ要求との間の調停をするキャッシュミスアービター１０５を含む。
【００３９】
さらに、フラッシュメモリコントローラ１０１はまた、マイクロコントローラ１０４による使用のためのユーザデータのフェッチを処理して大きなＤＭＡ要求を含むユーザ機能を実行するファームウェアベースのキャッシュコントローラ１０６を含む。その点に関連して、ファームウェアベースのキャッシュコントローラ１０６は、メモリカードインタフェース規格によるアドバンスト・ハイ・パフォーマンス・バス（ＡＨＢ）であり得るシステムオンチップのバス１０７を介してマイクロコントローラ１０４に結合される。ＡＨＢバスはまた、ＳｏＣのＤＭＡモジュール１０８及びＳＲＡＭメモリ１０９に結合され得る。
【００４０】
ファームウェアベースのキャッシュコントローラ１０６は、選択信号１２６に基づいてＱＳＰＩマルチプレクサー１１２によって選択されるように、１１６でＱＳＰＩモジュール１０２を介してフラッシュメモリ媒体１００にフラッシュコマンドを送信する。ファームウェアベースのキャッシュコントローラ１０６は、１３６の同一のウェイでフラッシュメモリ媒体１００にデータを送信し、又はフラッシュメモリ媒体１００からデータを受信する。
【００４１】
マイクロコントローラ１０３又はマイクロコントローラ１０４のいずれかがプログラムコードを実行する必要があるとき、ＸＩＰキャッシュコントローラ１１３又はＸＩＰキャッシュコントローラ１１４内のそれぞれのキャッシュ１２０を捜索して、必要とされるコードがそれぞれのキャッシュ１２０内にあるかどうかを確認する。必要とされるプログラムコードがそれぞれのキャッシュ１２０内にある場合、コードが読み出されて実行される。必要とされるプログラムコードがそれぞれのキャッシュ１２０内にない場合、１２１でキャッシュミス信号がキャッシュミスアービター１０５に送信される。マイクロコントローラ１０３又はマイクロコントローラ１０４のうちの１つのみが、キャッシュミス信号を送信する場合、キャッシュミスアービター１０５のキャッシュコマンドユニット１１１は、１４５で、単に、要求されたコードをフラッシュメモリ媒体１００からフェッチし、１１５で要求されたコードを返すＱＳＰＩモジュール１０２を介してフラッシュメモリ媒体１００に要求を伝える。マルチプレクサー１３５は、アービターコントローラ１１０による指示に従って、マイクロコントローラ１０３及びマイクロコントローラ１０４のうちの正しい１つにコードを返す。
【００４２】
しかしながら、マイクロコントローラ１０３及びマイクロコントローラ１０４の両方が、プログラムコードを実行する必要があり、かつ、マイクロコントローラ１０３及びマイクロコントローラ１０４のいずれも、それぞれのキャッシュ１２０内に必要とされるコードを発見しない場合、 マイクロコントローラ１０３及びマイクロコントローラ１０４の両方が、１２１でキャッシュミスアービター１０５にそれぞれのキャッシュミス信号を送信する。そのような場合において、本開示の主題の実装によれば、キャッシュミスアービターは、マイクロコントローラ１０３及びマイクロコントローラ１０４の両方からのフェッチ要求に対して平等なアクセスを提供するように設計され得る。そのような平等なアクセスを提供することは、単純なラウンドロビンプロトコルを用いることによって実現され得る。
【００４３】
一旦、キャッシュミスアービター１０５がマイクロコントローラ１０３及びマイクロコントローラ１０４のうちの１つにアクセスを与えて、フェッチ動作がマイクロコントローラ１０３及びマイクロコントローラ１０４の１つの代わりに実行されると、従来のキャッシュ動作によれば、そのフェッチ動作は、中断することなく完了するまで継続し、その後にのみ、フェッチ動作がマイクロコントローラ１０３及びマイクロコントローラ１０４の他の１つの代わりに開始されるだろう。しかしながら、本開示の主題の実装によれば、キャッシュラインのフェッチ動作が、マイクロコントローラ１０３及びマイクロコントローラ１０４の代わりに進行中である場合、その進行中のフェッチ動作が割り込まれる又はアボートされることができ、その結果、特定の条件が満たされる場合、第２のキャッシュラインフェッチ動作が、マイクロコントローラ１０３及びマイクロコントローラ１０４の他の１つの代わりに開始され得る。
【００４４】
具体的には、本開示の主題の実装によれば、１つのマイクロコントローラの代わりの進行中のフェッチ動作が割り込まれる又はアボートされることができ、その結果、以下の場合に第２のキャッシュラインフェッチ動作が異なるマイクロコントローラの代わりに開始され得る。
１．進行中のフェッチ動作で捜索されるクリティカルワードが読み出されている。
２．閾値基準が満たされている。
【００４５】
閾値基準は、フェッチされているキャッシュラインの特定のワード数が読み出されていることであり得る。閾値は、デバイスの設定時にフィールドでユーザによって設定可能であり得る（「ユーザ」は、実行時のエンドユーザを必ずしも意味するのではなく、例えば、インストーラーであり得る）。閾値基準の一実装は、キャッシュライン内のワード数に少なくとも等しいビット数を有するレジスタ１２２を含む。キャッシュライン内のワード数が実装によって異なり得るが、設定時にはワード数が既知である。閾値が、アボートが許可される前に読み出されなければならないワード数に対応するビット位置の数にまで各ビット位置に「１」を格納することによって設定され得る。フェッチ要求が受信され、その一方で他のフェッチ要求が進行中であるとき、フェッチされているワード数（及びクリティカルワードがフェッチされているかどうか）を追跡するアービターコントローラ１１０は、フェッチされているワード数を「１」に設定されているレジスタ１２２内のビット数と比較し、フェッチされているワード数が「１」に設定されているレジスタ１２２内のビット数に等しい（及びクリティカルワードが読み出されているこのワードの中にある）場合に限り、新しいフェッチ要求を選択して既存のフェッチ要求をアボートする。当然ながら、他の実装において、レジスタ１２２のビットのデフォルト値が「１」であり得、所望のビット数を「０」に設定することによって閾値が設定され得る。
【００４６】
レジスタ１２２のサイズは、任意のキャッシュラインで予期される最大ワード数に等しくなるべきである。特定のユーザ設定でキャッシュラインが最大の可能なワード数より少ないワードを有する場合、レジスタ１２２内の過剰ビットは、単に未使用の状態である−すなわち、「０」（又は代替的な実施形態において「１」）のままである。
【００４７】
アボートメカニズムが、以下のように動作する状態機械（不図示）によって、アービターコントローラ１１０に実装され得る。
【表１】
2020144867.tif 000003
【００４８】
いくつかの実装において、フラッシュメモリ媒体１００内のプログラムコードデータが、セキュリティ上の理由で暗号化され得る。そうだとしたら、一旦フェッチされたプログラムコードデータは、マイクロコントローラ１０３及びマイクロコントローラ１０４のそれぞれによって実行され得る前に復号されなければならない。そのような復号を促進すべく、キャッシュミスアービター１０５は、いくつかの実装においてアドバンスト・エンクリプション・スタンダード（ＡＥＳ）に従って動作し得る復号エンジン１２５を含み得る。
【００４９】
復号エンジン１２５は、暗号化されてフェッチされたデータがキャッシュミスアービター１０５を通過する際に当該データに対してオンザフライで動作し、復号されたデータをキャッシュ１２０に格納し、及び／又は、フェッチ要求を作成したマイクロコントローラ１０３及びマイクロコントローラ１０４のうちのいずれか１つにレイテンシなしで返す。オンザフライの復号を実現する１つの方法は、アドレスエイリアスを用いることである。例えば、可能なアドレス空間が実際のデータ領域の２倍であってよく、アドレスの最上位ビットが、データが暗号化されているかどうか（すなわち、復号が必要とされるかどうか）を示すのに用いられる。
【００５０】
図２に示されるように、（左上から右下への斜線のハッシュによって示される）クリアデータ２０１及び（左下から右上への斜線のハッシュによって示される）暗号化データ２０２が、下位のアドレス空間に両方格納される。しかしながら、暗号化データ２０２について、アドレスの最上位ビットが「１」に設定されて、復号が必要されることを示し、暗号化データ２０２が上位のアドレス空間２０３内に格納されているように見えるようにする。したがって、この実装において、実際には、すべてのデータ−クリアなもの及び暗号化されているものの両方−が、アドレス空間の下位のクリアな半分にあるように見えるものの中に存在するが、アドレス空間が、暗号化されていない（及び復号を要求しない）下位半分と、暗号化されている（及び復号を要求する）上位半分とに分割されているように見える。例えば、データ領域が２３アドレスビット［２２：０］を包含する場合、データ領域が２４アドレスビット［２３：０］を包含するように見え、それによって２倍の大きに見える。しかしながら最上位ビット［２３］は、実際には、位置ではなく、むしろ復号が要求されるかどうかを表す。
【００５１】
キャッシュラインごとに、読み出されたデータが、フラッシュメモリ媒体１００内のどこからデータがフェッチされているかを示すキャッシュタグＲＡＭ１３０内のアドレスデータと共にキャッシュデータＲＡＭ１２０に格納される。アドレスデータは、従来、キャッシュラインが完全に読み出されると設定される「有効ビット」と共に格納される。しかしながら、キャッシュラインフェッチアボートメカニズムの説明に関連して上記のとおり、本開示の実装に従って、各ワードがフェッチすると検証されて、フェッチ処理が必要に応じて上記のようにアボートされることを可能にする。したがって、本開示の主題の実装において、キャッシュラインごとの１つの有効ビットの代わりに、キャッシュライン内のワードと同数のキャッシュラインごとの有効ビットが存在する。より一般的には、有効ビットの数がキャッシュライン内のワード数に等しくてよく又は等しくなくてよいが、キャッシュラインごとの複数の有効ビットが存在し得る。
【００５２】
キャッシュラインのアドレスデータ内の追加の有効ビットの存在は、キャッシュからデータを読み出すときにアドレスを復号するのに必要な時間を増加させる。追加の復号時間は、合計の復号時間が１クロックサイクルを超える原因となり得る。したがって、本開示の主題の実装によれば、キャッシュは、マルチウェイ連想キャッシュとして編成されてよく、第１のクロックサイクルで、ウェイ選択を除いたキャッシュタグＲＡＭ１３０内のすべてのアドレスデータが復号されて、８つの可能なキャッシュ位置が残り、ウェイ選択が次のクロックサイクルで復号される。
【００５３】
例えば、図３に示されるように、３２キロバイトのキャッシュ３０１は、それぞれ８つのラインを有する１２８セット（０，…，１２７）に分割され得る。キャッシュタグの復号を１クロックサイクル内で実現され得るフェーズに分解すべく、キャッシュ３０１が８個のブロック３０２に再編成され得る（２個のみ示される）。各ｎ番目のブロック又はウェイ３０２は、すべてのセット（０，…，１２７）のそれぞれｎ番目のラインを含む。すなわち、０番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の０番目のラインを含み、１番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の１番目のラインを含み、２番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の２番目のラインを含み、３番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の３番目のラインを含み、４番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の４番目のラインを含み、５番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の５番目のラインを含み、６番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の６番目のラインを含み、７番目のウェイは全１２８セット（０，…，１２７）のうちの１２８個の７番目のラインを含む。
【００５４】
３０２のように編成されたキャッシュのタグデータを復号するとき、第１のクロックサイクルで、ウェイ選択以外のすべてのアドレスデータが復号される。したがって、第１のクロックサイクル後、捜索されているデータが、図３内でクロスハッチングによって強調表示されている、８個のブロック３０２のうちの１つのｎ番目のラインのｍ番目のワードであることがわかる。次のクロックサイクルにおいて、ウェイ選択が復号されて、８個のブロックのうちのどれが所望のデータを保持するかを示す（この例において、ｎ番目のラインのｍ番目のワード）。
【００５５】
タグデータが、いくつか実装において、同一アドレスで書き込み及び読み出しされ得る２ポート同期レジスタに格納され得る。書き込みクロック及び読み出しクロックが、従来、同一であるが、衝突を回避すべく、そのようなレジスタは、通常、命じられた最小オフセットが書き込みクロックの各立ち上がりエッジと読み出しクロックの対応する立ち上がりエッジとの間に存在するように、書き込みクロック及び読み出しクロックがお互いからオフセットされることを要求する。しかしながら、図４に示されるように、そのようなオフセットを回避すべく、本開示の主題の実装において、同一の書き込みクロック及び読み出しクロックを用いる代わりに、書き込みクロックの立ち上がりエッジと読み出しクロックの対応する立ち上がりエッジとの間に（命じられた最小オフセットより大きい）Ｔ／２の固有の遅延が存在するように、書き込みクロック（ＷＣＬＫ）４０１及び読み出しクロック（ＲＣＬＫ）４０２がお互いに逆である。
【００５６】
本開示の主題の実装に従う方法５００が、図５に示されている。５０１では、第１のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されたプログラムコードが、キャッシュされる。次に、５０２では、第２のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されたプログラムコードが、キャッシュされる。５０３では、キャッシュミスに対して、第１のマイクロコントローラ及び第２のマイクロコントローラによるフラッシュメモリへの平等なアクセスが、提供される。５０４では、第１の要求が実行されている間に第２のフェッチ要求が受信されたかどうかが判定される。もしそうでないなら、５０７では、第１の要求は実行を継続する。しかし、５０４で、第１の要求が実行されている間に第２のフェッチ要求が受信されたと判定された場合、５０５では、クリティカルワード−すなわち、それぞれのマイクロコントローラが実際に第１の要求で捜索しているデータワード−が読み出されたかどうかが判定される。もしそうでないなら、５０７では、第１の要求は実行を継続する。しかし、５０５で、クリティカルワードがすでに読み出されていると判定された場合、５０６では、予め定められた閾値のデータ量が第１の要求によって読み出されているかどうかが判定される。もしそうでないなら、５０７では、第１の要求は実行を継続する。しかし、５０６で、予め定められた閾値のデータ量が第１の要求によって読み出されていると判定された場合、第１の要求がアボートされて、第２の要求が実行を開始する。
【００５７】
したがって、２つの異なるマイクロコントローラ又はプロセッサによる同一のフラッシュメモリ媒体へのアクセスを提供するフラッシュメモリコントローラが提供されたことがわかる。
【００５８】
本明細書及び以下の特許請求の範囲内で用いられるように、構造「Ａ及びＢのうちの１つ（ｏｎｅ  ｏｆ  Ａ  ａｎｄ  Ｂ）」は、「Ａ又はＢ（Ａ  ｏｒ  Ｂ）」を意味する。
【００５９】
上記は本発明の原理の例示にすぎないこと、及び限定ではなく例示の目的で提示された、説明された実施形態以外によって本発明が実施され得ることに留意し、本発明は、以下の特許請求の範囲によってのみ限定される。
【図１】
2020144867.tif 000004
【図２】
2020144867.tif 000005
【図３】
2020144867.tif 000006
【図４】
2020144867.tif 000007
【図５】
2020144867.tif 000008
【外国語明細書】
2020144867000001.pdf