IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マーベル アジア ピーティーイー、リミテッドの特許一覧

特許7517632インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ
<>
  • 特許-インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ 図1
  • 特許-インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ 図2
  • 特許-インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ 図3
  • 特許-インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ 図4
  • 特許-インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】インプレース実行キャッシュ制御のデュアルインターフェースメモリコントローラ
(51)【国際特許分類】
   G06F 12/0806 20160101AFI20240709BHJP
   G06F 12/0875 20160101ALI20240709BHJP
【FI】
G06F12/0806 100
G06F12/0875 100
【請求項の数】 23
【外国語出願】
(21)【出願番号】P 2020038212
(22)【出願日】2020-03-05
(65)【公開番号】P2020144867
(43)【公開日】2020-09-10
【審査請求日】2022-09-05
(31)【優先権主張番号】62/814,165
(32)【優先日】2019-03-05
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】520078248
【氏名又は名称】マーベル アジア ピーティーイー、リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】イン ヤン
(72)【発明者】
【氏名】ケン ユーン
(72)【発明者】
【氏名】ネルソン シュ
(72)【発明者】
【氏名】トゥン-ハオ ファン
【審査官】北村 学
(56)【参考文献】
【文献】米国特許出願公開第2016/0239422(US,A1)
【文献】特開2012-038065(JP,A)
【文献】米国特許出願公開第2015/0371063(US,A1)
【文献】特開2017-041145(JP,A)
【文献】特開2010-055273(JP,A)
【文献】米国特許出願公開第2008/0127221(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0806
G06F 12/0875
(57)【特許請求の範囲】
【請求項1】
第1の機能を実行するように構成される第1のマイクロコントローラと、第2の機能を実行するように構成される第2のマイクロコントローラとを有し、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラによって共有されるフラッシュメモリ媒体をさらに有するマイクロコントローラシステム用のフラッシュメモリコントローラであって、
前記フラッシュメモリコントローラは、更に、
内部に第1のキャッシュメモリを有し、前記第1のマイクロコントローラによって第1のインプレース実行キャッシュコントローラ内の前記第1のキャッシュメモリから直接プログラムコードが実行されるために、前記フラッシュメモリ媒体から読み出されるプログラムコードを前記第1のキャッシュメモリにキャッシュするように構成される前記第1のインプレース実行キャッシュコントローラと、
内部に第2のキャッシュメモリを有し、前記第2のマイクロコントローラによって第2のインプレース実行キャッシュコントローラ内の前記第2のキャッシュメモリから直接プログラムコードが実行されるために、前記フラッシュメモリ媒体から読み出されるプログラムコードを前記第2のキャッシュメモリにキャッシュするように構成される前記第2のインプレース実行キャッシュコントローラと
を備える、
フラッシュメモリコントローラ。
【請求項2】
前記第1のインプレース実行キャッシュコントローラ及び前記第2のインプレース実行キャッシュコントローラのそれぞれにおいて、実行のためにプログラムコードをフェッチすることに対してキャッシュミスが発生した場合、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの一方によるアクセスを制御するように構成されるキャッシュミスアービターをさらに備える、請求項1に記載のフラッシュメモリコントローラ。
【請求項3】
前記キャッシュミスアービターは、前記第1のインプレース実行キャッシュコントローラ及び前記第2のインプレース実行キャッシュコントローラの両方でそれぞれのキャッシュミスが発生した場合、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供するように構成される、請求項2に記載のフラッシュメモリコントローラ。
【請求項4】
前記キャッシュミスアービターは、ラウンドロビンアービトレーション方式を用いて、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供するように構成される、請求項3に記載のフラッシュメモリコントローラ。
【請求項5】
前記キャッシュミスアービターは、(a)前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出された前記データの中に、所望のデータユニットを含み、かつ、(b)前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの前記一方の前記フェッチ動作が、閾値を超えて進行しているとき、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの他方からフェッチ要求を受信すると、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの前記一方の代わりに前記フェッチ動作をアボートするように構成される、請求項2から4のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項6】
前記閾値は、アボートが許可される前に読み出される最小のデータ量を示す、請求項5に記載のフラッシュメモリコントローラ。
【請求項7】
前記閾値は、前記フラッシュメモリコントローラの設定時に設定可能である、請求項6に記載のフラッシュメモリコントローラ。
【請求項8】
前記フラッシュメモリコントローラは、フェッチされるキャッシュラインごとに複数の有効ビットを設定するように構成され、前記複数の有効ビットにおける各ビットは、フェッチされている前記キャッシュラインの部分を表し、前記閾値は、前記複数の有効ビットにおける最小のビット数である、請求項6又は7に記載のフラッシュメモリコントローラ。
【請求項9】
前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの一方による実行のためのプログラムコードが暗号化された形で格納され、
前記フラッシュメモリコントローラは、暗号化された前記プログラムコードを復号するように構成される復号エンジンをさらに備える、
請求項1から8のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項10】
前記復号エンジンは、オンザフライで復号するように構成される、請求項9に記載のフラッシュメモリコントローラ。
【請求項11】
復号モードの決定は、アドレスレンジに基づいている、請求項10に記載のフラッシュメモリコントローラ。
【請求項12】
前記第1のインプレース実行キャッシュコントローラ及び前記第2のインプレース実行キャッシュコントローラのうちの少なくとも1つは、複数のブロックとして構成されるキャッシュデータメモリを有し、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納し、
前記フラッシュメモリコントローラは、前記キャッシュデータメモリを読み出すとき、第1のクロックサイクルで、読み出されるデータが格納される前記ウェイの識別を除いて、読み出される前記データの位置を復号し、第2のクロックサイクルで、読み出される前記データが格納される前記ウェイの前記識別を復号するように構成される、
請求項1から11のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項13】
第1の機能を実行するように構成される第1のマイクロコントローラと、第2の機能を実行するように構成される第2のマイクロコントローラとを有し、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラによって共有され、実行のためのプログラムコードを格納するフラッシュメモリ媒体をさらに有し、第1のキャッシュメモリを内部に有する第1のインプレース実行キャッシュコントローラと第2のキャッシュメモリを内部に有する第2のインプレース実行キャッシュコントローラとをさらに備えるマイクロコントローラシステムにおけるフラッシュメモリを動作する方法であって、前記方法は、
前記第1のマイクロコントローラによって前記第1のインプレース実行キャッシュコントローラ内の前記第1のキャッシュメモリから直接プログラムコードがインプレース実行されるために、前記フラッシュメモリ媒体から読み出されるプログラムコードを前記第1のキャッシュメモリにキャッシュする段階と、
前記第2のマイクロコントローラによって前記第2のインプレース実行キャッシュコントローラ内の前記第2のキャッシュメモリから直接プログラムコードがインプレース実行されるために、前記フラッシュメモリ媒体から読み出されるプログラムコードを前記第2のキャッシュメモリに個別にキャッシュする段階と
を備える、方法。
【請求項14】
前記第1のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体からプログラムコードをフェッチすること及び前記第2のマイクロコントローラによるインプレース実行のために前記フラッシュメモリ媒体からプログラムコードをフェッチすることに対してそれぞれキャッシュミスが発生した場合、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラによる前記フラッシュメモリ媒体への平等なアクセスを提供する段階をさらに備える、請求項13に記載の方法。
【請求項15】
平等なアクセスを前記提供する段階は、ラウンドロビンアービトレーション方式を用いる段階を有する、請求項14に記載の方法。
【請求項16】
(a)前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出された前記データの中に、所望のデータユニットを含み、かつ、(b)前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの前記一方の前記フェッチ動作が、閾値を超えて進行しているとき、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラの他方からフェッチ要求を受信すると、前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの前記一方の代わりに前記フェッチ動作をアボートする段階をさらに備える、請求項13から15のいずれか一項に記載の方法。
【請求項17】
前記アボートする段階は、前記閾値によって示される最小のデータ量が読み出されているときにのみ、実行される、請求項16に記載の方法。
【請求項18】
フラッシュメモリコントローラの設定時に前記閾値を設定する段階をさらに備える、請求項17に記載の方法。
【請求項19】
フェッチされるキャッシュラインごとに複数の有効ビットを設定する段階であって、前記複数の有効ビットにおける各ビットは、フェッチされている前記キャッシュラインの部分を表し、前記閾値は、前記複数の有効ビットにおける最小のビット数である、段階をさらに備える、請求項17又は18に記載の方法。
【請求項20】
前記第1のマイクロコントローラ及び前記第2のマイクロコントローラのうちの一方による実行のためのプログラムコードを暗号化された形で格納する段階と、
インプレース実行すると、暗号化された前記プログラムコードを復号する段階と
さらに備える、請求項13から19のいずれか一項に記載の方法。
【請求項21】
インプレース実行中に前記復号する段階をオンザフライで実行する段階をさらに備える、請求項20に記載の方法。
【請求項22】
アドレスレンジに基づいて復号モードを決定する段階をさらに備える、請求項21に記載の方法。
【請求項23】
複数のブロックとしてキャッシュデータメモリを構成する段階であって、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納する、段階と、
前記キャッシュデータメモリを読み出すとき、第1のクロックサイクルで、読み出されるデータが格納される前記ウェイの識別を除いて、読み出される前記データの位置を復号し、第2のクロックサイクルで、読み出される前記データが格納される前記ウェイの前記識別を復号する段階と
をさらに備える、請求項13から22のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本開示は、2019年3月5日に出願された同時係属の同一出願人による米国仮特許出願第62/814,165号に基づく優先権を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本開示は、フラッシュメモリコントローラに関する。より具体的には、本開示は、2つの異なるマイクロコントローラ又はプロセッサによる同一のフラッシュメモリ媒体へのアクセスを提供するフラッシュメモリコントローラに関する。
【背景技術】
【0003】
本明細書で提供される背景技術の説明は、概して、本開示の背景を示すことを目的とする。本明細書の発明者の成果は、当該成果がこの背景技術のセクション、及び、そうでなければ、出願時の先行技術としての資格を与えてはいけない記載の態様で説明される限りにおいて、本開示の主題に対する先行技術であると明示的にも暗示的にも認められない。
【0004】
いくつかのマイクロコントローラベースのシステムは、フラッシュタイプのメモリデバイスから読み出されるプログラムコードを実行する。プログラムコードを読み出す必要性は、プロセッサ内部のメモリ要件を増加させ、プログラムの起動を遅くする。最近使用したコードブロックをキャッシュして、プログラムの起動におけるそのようなレイテンシを減少させるべく、インプレース実行(XIP)フラッシュメモリコントローラは、コントローラ自身にキャッシュブロックを提供する。しかしながら、複数のプロセッサ又はマイクロコントローラを有するシステムオンチップ(SoC)がより一般的になってきており、プログラムの起動のレイテンシは、各プロセッサに影響を与え得る。
【発明の概要】
【0005】
本開示の主題によれば、第1の機能を実装するように構成される第1のマイクロコントローラと、第2の機能を実行するように構成される第2のマイクロコントローラとを有し、第1のマイクロコントローラ及び第2のマイクロコントローラによって共有されるフラッシュメモリ媒体をさらに有するマイクロコントローラシステム用のフラッシュメモリコントローラは、第1のマイクロコントローラによる実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュするように構成される第1のインプレース実行キャッシュコントローラと、第2のマイクロコントローラによる実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュするように構成される第2のインプレース実行キャッシュコントローラとを含む。
【0006】
そのようなフラッシュメモリコントローラの第1の実装は、第1のインプレース実行キャッシュコントローラ及び第2のインプレース実行キャッシュコントローラのそれぞれにおいて、実行のためにプログラムコードをフェッチすることに対してキャッシュミスが発生した場合、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方によるアクセスを制御するように構成されるキャッシュミスアービターをさらに含み得る。
【0007】
そのような第1の実装において、キャッシュミスアービターは、第1のインプレース実行キャッシュコントローラ及び第2のインプレース実行キャッシュコントローラの両方でそれぞれのキャッシュミスが発生した場合、第1のマイクロコントローラ及び第2のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供するように構成され得る。特に、フラッシュメモリコントローラは、ラウンドロビンアービトレーション方式を用いて、第1のマイクロコントローラ及び第2のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供するように構成され得る。
【0008】
第1の実装において、キャッシュミスアービターは、(a)第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出されたデータの中に、所望のデータユニットを含み、かつ、(b)第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方のフェッチ動作が、閾値を超えて進行しているとき、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの他方からフェッチ要求を受信すると、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方の代わりにフェッチ動作をアボートするように構成され得る。閾値は、フラッシュメモリコントローラの設定時に設定可能であり得る。
【0009】
一変形において、閾値は、アボートが許可される前に読み出される最小のデータ量を示し得る。そのような一変形において、フラッシュメモリコントローラは、フェッチされるキャッシュラインごとに複数の有効ビットを設定するように構成されてよく、複数の有効ビットにおける各ビットは、フェッチされているキャッシュラインの部分を表し、閾値は、複数の有効ビットにおける最小のビット数であってよい。
【0010】
そのようなフラッシュメモリコントローラの第2の実装において、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方による実行のためのプログラムコードが暗号化された形で格納され、フラッシュメモリコントローラは、暗号化されたプログラムコードを復号するように構成される復号エンジンをさらに備える。
【0011】
そのような第2の実装において、復号エンジンは、オンザフライで復号するように構成され得る。復号モードの決定は、アドレスレンジに基づいている。
【0012】
そのようなフラッシュメモリコントローラの第3の実装において、第1のインプレース実行キャッシュコントローラ及び第2のインプレース実行キャッシュコントローラのうちの少なくとも1つは、複数のブロックとして構成されるキャッシュデータメモリを含み、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納し、フラッシュメモリコントローラは、キャッシュデータメモリを読み出すとき、第1のクロックサイクルで、読み出されるデータが格納されるウェイの識別を除いて、読み出されるデータの位置を復号し、第2のクロックサイクルで、読み出されるデータが格納されるウェイの識別を復号するように構成され得る。
【0013】
本開示の主題の実装によれば、第1の機能を実行するように構成される第1のマイクロコントローラと、第2の機能を実行するように構成される第2のマイクロコントローラとを有し、第1のマイクロコントローラ及び第2のマイクロコントローラによって共有され、実行のためのプログラムコードを格納するフラッシュメモリ媒体をさらに有するマイクロコントローラシステムにおけるフラッシュメモリを動作するための方法は、第1のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されるプログラムコードをキャッシュする段階と、第2のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されるプログラムコードを個別にキャッシュする段階とを含む。
【0014】
そのような方法の第1の実装は、第1のマイクロコントローラによるインプレース実行のためにフラッシュメモリからプログラムコードをフェッチすること及び第2のマイクロコントローラによるインプレース実行のためにフラッシュメモリからプログラムコードをフェッチすることに対してそれぞれキャッシュミスが発生した場合、第1のマイクロコントローラ及び第2のマイクロコントローラによるフラッシュメモリへの平等なアクセスを提供する段階をさらに含む。平等なアクセスを提供する段階は、ラウンドロビンアービトレーション方式を用いる段階を含み得る。
【0015】
そのような方法の第2の実装は、(a)第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方のフェッチ動作によって読み出されたデータが、読み出されたデータの中に、所望のデータユニットを含み、かつ、(b)第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方のフェッチ動作が、閾値を超えて進行しているとき、第1のマイクロコントローラ及び第2のマイクロコントローラの他方からフェッチ要求を受信すると、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方の代わりにフェッチ動作をアボートする段階をさらに含み得る。閾値は、フラッシュメモリコントローラの設定時に設定され得る。
【0016】
アボートする段階は、閾値によって示される最小のデータ量が読み出されているときにのみ、実行され得る。方法は、フェッチされるキャッシュラインごとに複数の有効ビットを設定する段階であって、複数の有効ビットにおける各ビットは、フェッチされているキャッシュラインの部分を表し、閾値は、複数の有効ビットにおける最小のビット数である、段階をさらに含み得る。
【0017】
そのような方法の第3の実装は、第1のマイクロコントローラ及び第2のマイクロコントローラのうちの一方による実行のためのプログラムコードを暗号化された形で格納する段階と、インプレース実行すると、暗号化されたプログラムコードを復号する段階とをさらに含み得る。方法は、インプレース実行中に復号する段階をオンザフライで実行する段階をさらに含み得る。方法は、アドレスレンジに基づいて復号モードを決定する段階をさらに含み得る。
【0018】
そのような方法の第3の実装は、複数のブロックとしてキャッシュデータメモリを構成する段階であって、それぞれのブロックは、すべてのセットのそれぞれのウェイからのデータを格納する、段階と、キャッシュデータメモリを読み出すとき、第1のクロックサイクルで、読み出されるデータが格納されるウェイの識別を除いて、読み出されるデータの位置を復号し、第2のクロックサイクルで、読み出されるデータが格納されるウェイの識別を復号する段階とをさらに含み得る。
【図面の簡単な説明】
【0019】
本開示のさらなる特徴、性質、及び様々な利点が、全体を通じて同様の参照文字が同様の部分を指す添付図面と併用して以下の詳細な説明を考慮すると明らかだろう。
【0020】
図1】本開示の主題の実装による、フラッシュメモリコントローラのトップレベル図である。
【0021】
図2】本開示の主題の実装による、アドレスエイリアス方式のアドレスマッピングの図である。
【0022】
図3】本開示の主題の実装による、どのようにキャッシュがウェイに編成され得るかを示す図である。
【0023】
図4】本開示の主題の実装による、書き込みクロック及び読み出しクロックを示すタイミング図である。
【0024】
図5】本開示の主題の実装による、フラッシュメモリコントローラを動作するための方法のフロー図である。
【発明を実施するための形態】
【0025】
本開示の主題の実装によれば、2つ(又はそれ以上の)個別のインプレース実行キャッシュコントローラを有するフラッシュメモリコントローラは、個別のプロセッサ又はマイクロコントローラが単一のフラッシュメモリ媒体に同時で効果的にアクセスすることを可能にする。マイクロコントローラは、同一のフラッシュメモリコントローラ及び同一の物理フラッシュメモリ媒体を共有し、これは、要求されるメモリサイズを減少させる。しかしながら、各キャッシュコントローラにはインプレース実行機能を備える独自のキャッシュメモリがあるので、各マイクロコントローラは、それぞれ独立したキャッシュコントローラを介してフラッシュメモリにアクセスする。
【0026】
例えば、無線インタフェースSoCは、1又は複数のユーザ機能を実行するための(イングランド、ケンブリッジシャー州のARMホールディングスによってライセンスされたCortex-M4縮小命令セットマイクロコントローラのような)マイクロコントローラ、さらに、無線動作を実行するための(ARMホールディングスによってライセンスされたARM-9縮小命令セットマイクロコントローラのような)別個のマイクロコントローラを含み得る。本開示の主題の実装によれば、そのようなSoCと共に使用するためのフラッシュメモリコントローラは、2つの個別のインプレース実行(XIP)キャッシュコントローラ-1つは無線マイクロコントローラと共に使用するためのものであり、1つはユーザ機能マイクロコントローラと共に使用するためのものである-を含む。
【0027】
そのような実装において、キャッシュコントローラのそれぞれのキャッシュミスが、両方(又は少なくとも2つ)のマイクロコントローラがフラッシュメモリ媒体から実行するためのプログラムコードをフェッチすることを要求するときに、2つ(又はそれ以上の)キャッシュコントローラによるフラッシュメモリ媒体へのアクセスを制御するためのアービターが提供される。アービターは、キャッシュコントローラによるフラッシュメモリ媒体への平等なアクセスを提供するように構成され得る。例えば、ラウンドロビンアービトレーション方式が用いられ得る。代替的に、不平等なアクセスを提供することがより公平である状況が存在してよく、アービターはそのような状況で不平等なアクセスを提供するように構成されてよい。
【0028】
従来、キャッシュ動作において、たとえ、キャッシュラインの一部のみが、自らのためにフェッチ動作が開始されるマイクロコントローラによって実際に必要とされ得るとしても、全体のキャッシュラインが任意のフェッチ動作の一部としてフェッチされる。しかしながら、本開示の主題の実装によれば、アービターは、他のマイクロコントローラが第2のフェッチ動作を要求する場合、マイクロコントローラのうちの1つの代わりに第1のフェッチ動作をアボートすることを可能にするアボートメカニズムを含んでよく、その結果、他のマイクロコントローラは、チャネルが解放されて第2のフェッチ動作を進行するのに必要以上に待たなくてよい。そのようなアボートメカニズムは、第1のフェッチ動作においてフェッチされているキャッシュラインの部分が、自らのために第1のフェッチ動作が開始されたマイクロコントローラによって実際に必要とされるデータ(すなわち、複数のデータワードを含み得るが、この説明の目的上、「クリティカルワード(critical word)」と称され得るプログラムコードのセグメント)を含む場合に限り、第2のフェッチ動作を選択して第1のフェッチ動作をアボートすることを可能にするだろう。
【0029】
具体的には、そのようなアボートメカニズムの一実装によれば、第1のフェッチ動作が1つのマイクロコントローラの代わりに開始されて、かつ、第2のフェッチ動作が、第1のフェッチ動作と同一の読み出しチャネルを用いる他のマイクロコントローラの代わりに開始される必要がある場合、第2のフェッチ動作を選択して第1のフェッチ動作をアボートすることは、第1のフェッチ動作から必要とされるクリティカルワードが、フラッシュメモリ媒体からまだ読み出されていない場合にまで考慮されていない。しかしながら、第1のフェッチ動作から必要とされるクリティカルワードがフラッシュメモリ媒体から読み出された場合、アボートメカニズムのこの実装によれば、予め定められた閾値が検査されて、予め定められた閾値が満たされる場合、第2のフェッチ動作を選択して第1のフェッチ動作がアボートされる。
【0030】
予め定められた閾値は、第1のフェッチ動作によって読み出される最小のデータ量-例えば、最小のワード数-を表し得る。閾値が前もって設定されているから、閾値は予め決定されている。閾値は、デバイス製造時に設定され得る。代替的に、一実装において、閾値は、フィールド設定可能であり得、デバイス設定時に設定され得る。
【0031】
セキュリティのために、フラッシュメモリ媒体に格納されるプログラムコードが、暗号化され得る。そのような実装において、アービターは、実行のためにマイクロコントローラに配信するためにプログラムコードがフェッチされているときに、当該プログラムコードをオンザフライで復号するための復号エンジン-例えば、AES復号エンジン-を含み得る。フェッチされたプログラムコードが復号される必要があるかどうかは、アドレスエイリアス方式を用いて示され得る。1つのそのような方式において、1つのアドレスレンジ-例えば、アドレスレンジの下位部分-は、クリアなプログラムコードデータに用いられてよく、その一方で、他のアドレスレンジ-例えば、アドレスレンジの上位部分-が暗号化されたプログラムコードデータに用いられる。その方式において、物理アドレスは、常に下位アドレスレンジ内にある。アドレス内の次の最上位ビットが、復号が必要とされるかどうかを示すだろう。したがって、(次の最上位ビットが「1」であり復号を示すので)復号が必要とされる場合、アドレスが上位アドレスレンジにあるように見えるだろう。代替的に、「1」が復号しないことを示すのに用いられ得、この場合において、復号が必要とされる場合、アドレスは、下位アドレスレンジ内にあるように見え得る。
【0032】
従来、キャッシュラインごとに1つの「有効ビット」が存在している。しかしながら、アボートメカニズムに関連して上記のとおり、本開示の主題における実装において、キャッシュラインの各ワードが、(完全なラインのフェッチがアボートされるかもしれないので)フェッチされるときに検証される。結果として、キャッシュラインごとにタグデータ内により多くの「有効ビット」が存在する。一実装において、キャッシュラインごとに8つのワードが存在する。したがって、その実装において、従来の実装より8倍多い「有効ビット」が存在する。
【0033】
結果として、復号するアドレスデータがより多く存在し、必要な場合に応じて1クロックサイクル内ですべてのアドレスデータを復号することが可能でない場合がある。したがって、本開示の主題のさらなる実装に従って、キャッシュプログラムコードデータが、マルチウェイ連想キャッシュ(例えば、一実装における8ウェイ連想キャッシュ)と同様の方法で格納される。キャッシュが、合計32kBの8つの32バイトのキャッシュラインの128セットとして編成され得る。
【0034】
キャッシュが、128セットのそれぞれの各n番目のラインがn番目のウェイに含まれている状態で、8「ウェイ(ways)」として再編成され得る。すなわち、128セットのそれぞれの0番目のラインが0番目のウェイに含まれ、128セットのそれぞれの1番目のラインが1番目のウェイに含まれ、その他も同様である。1クロックサイクル内で、すべての追加の有効ビットを含むタグデータは、1クロックサイクルで復号されることができない場合があり、タイミング違反をもたらす。したがって、本開示の主題の実装によれば、第1のクロックサイクルで、タグデータが復号されて特定のウェイを除いたすべてのアドレス情報をもたらし、8つの可能性の選択を残す。8ウェイの中から選択することを示す、残りのアドレスデータが次のクロックサイクルで復号され得る。
【0035】
本開示の主題が、図1図5の参照により、より良く理解され得る。
【0036】
図1は、本開示の主題の実装による、フラッシュメモリコントローラ101のトップレベル図である。この実装において、フラッシュメモリコントローラ101は、クアッド・シリアル・ペリフェラル・インタフェース(QSPI)モジュール102を介してフラッシュメモリ媒体100と通信する。QSPIモジュール102は、(例えば、データをフェッチするために)QSPIマルチプレクサー112を介してフラッシュメモリコントローラ101の様々な他の部分からフラッシュメモリコマンドを受信する。QSPIモジュール102は、SPIモードで又はコントローラを要求しないQSPIモードで動作することができ得る。
【0037】
この実装において、QSPIモジュール102は、2つのマイクロコントローラを含むより大きなシステムオンチップの一部(SoC)(その全体は不図示)である。ARMホールディングスによってライセンスされたARM-9縮小命令セットマイクロコントローラであり得るマイクロコントローラ103は、この実装において、Wi-Fiリンクのような無線データリンクを操作するよう構成される。ARMホールディングスによってライセンスされたCortex-M4縮小命令セットマイクロコントローラであり得るマイクロコントローラ104は、この実装において、ユーザ機能のような異なる機能を実行するよう構成される。
【0038】
この実装において、フラッシュメモリコントローラ101は、マイクロコントローラ103にサービスを提供する第1のインプレース実行(XIP)キャッシュコントローラ113と、マイクロコントローラ104にサービスを提供する第2のインプレース実行(XIP)キャッシュコントローラ114とを含む。フラッシュメモリコントローラ101はまた、XIPキャッシュコントローラ113からのキャッシュ要求と、XIPキャッシュコントローラ114からのキャッシュ要求との間の調停をするキャッシュミスアービター105を含む。
【0039】
さらに、フラッシュメモリコントローラ101はまた、マイクロコントローラ104による使用のためのユーザデータのフェッチを処理して大きなDMA要求を含むユーザ機能を実行するファームウェアベースのキャッシュコントローラ106を含む。その点に関連して、ファームウェアベースのキャッシュコントローラ106は、メモリカードインタフェース規格によるアドバンスト・ハイ・パフォーマンス・バス(AHB)であり得るシステムオンチップのバス107を介してマイクロコントローラ104に結合される。AHBバスはまた、SoCのDMAモジュール108及びSRAMメモリ109に結合され得る。
【0040】
ファームウェアベースのキャッシュコントローラ106は、選択信号126に基づいてQSPIマルチプレクサー112によって選択されるように、116でQSPIモジュール102を介してフラッシュメモリ媒体100にフラッシュコマンドを送信する。ファームウェアベースのキャッシュコントローラ106は、136の同一のウェイでフラッシュメモリ媒体100にデータを送信し、又はフラッシュメモリ媒体100からデータを受信する。
【0041】
マイクロコントローラ103又はマイクロコントローラ104のいずれかがプログラムコードを実行する必要があるとき、XIPキャッシュコントローラ113又はXIPキャッシュコントローラ114内のそれぞれのキャッシュ120を捜索して、必要とされるコードがそれぞれのキャッシュ120内にあるかどうかを確認する。必要とされるプログラムコードがそれぞれのキャッシュ120内にある場合、コードが読み出されて実行される。必要とされるプログラムコードがそれぞれのキャッシュ120内にない場合、121でキャッシュミス信号がキャッシュミスアービター105に送信される。マイクロコントローラ103又はマイクロコントローラ104のうちの1つのみが、キャッシュミス信号を送信する場合、キャッシュミスアービター105のキャッシュコマンドユニット111は、145で、単に、要求されたコードをフラッシュメモリ媒体100からフェッチし、115で要求されたコードを返すQSPIモジュール102を介してフラッシュメモリ媒体100に要求を伝える。マルチプレクサー135は、アービターコントローラ110による指示に従って、マイクロコントローラ103及びマイクロコントローラ104のうちの正しい1つにコードを返す。
【0042】
しかしながら、マイクロコントローラ103及びマイクロコントローラ104の両方が、プログラムコードを実行する必要があり、かつ、マイクロコントローラ103及びマイクロコントローラ104のいずれも、それぞれのキャッシュ120内に必要とされるコードを発見しない場合、 マイクロコントローラ103及びマイクロコントローラ104の両方が、121でキャッシュミスアービター105にそれぞれのキャッシュミス信号を送信する。そのような場合において、本開示の主題の実装によれば、キャッシュミスアービターは、マイクロコントローラ103及びマイクロコントローラ104の両方からのフェッチ要求に対して平等なアクセスを提供するように設計され得る。そのような平等なアクセスを提供することは、単純なラウンドロビンプロトコルを用いることによって実現され得る。
【0043】
一旦、キャッシュミスアービター105がマイクロコントローラ103及びマイクロコントローラ104のうちの1つにアクセスを与えて、フェッチ動作がマイクロコントローラ103及びマイクロコントローラ104の1つの代わりに実行されると、従来のキャッシュ動作によれば、そのフェッチ動作は、中断することなく完了するまで継続し、その後にのみ、フェッチ動作がマイクロコントローラ103及びマイクロコントローラ104の他の1つの代わりに開始されるだろう。しかしながら、本開示の主題の実装によれば、キャッシュラインのフェッチ動作が、マイクロコントローラ103及びマイクロコントローラ104の代わりに進行中である場合、その進行中のフェッチ動作が割り込まれる又はアボートされることができ、その結果、特定の条件が満たされる場合、第2のキャッシュラインフェッチ動作が、マイクロコントローラ103及びマイクロコントローラ104の他の1つの代わりに開始され得る。
【0044】
具体的には、本開示の主題の実装によれば、1つのマイクロコントローラの代わりの進行中のフェッチ動作が割り込まれる又はアボートされることができ、その結果、以下の場合に第2のキャッシュラインフェッチ動作が異なるマイクロコントローラの代わりに開始され得る。
1.進行中のフェッチ動作で捜索されるクリティカルワードが読み出されている。
2.閾値基準が満たされている。
【0045】
閾値基準は、フェッチされているキャッシュラインの特定のワード数が読み出されていることであり得る。閾値は、デバイスの設定時にフィールドでユーザによって設定可能であり得る(「ユーザ」は、実行時のエンドユーザを必ずしも意味するのではなく、例えば、インストーラーであり得る)。閾値基準の一実装は、キャッシュライン内のワード数に少なくとも等しいビット数を有するレジスタ122を含む。キャッシュライン内のワード数が実装によって異なり得るが、設定時にはワード数が既知である。閾値が、アボートが許可される前に読み出されなければならないワード数に対応するビット位置の数にまで各ビット位置に「1」を格納することによって設定され得る。フェッチ要求が受信され、その一方で他のフェッチ要求が進行中であるとき、フェッチされているワード数(及びクリティカルワードがフェッチされているかどうか)を追跡するアービターコントローラ110は、フェッチされているワード数を「1」に設定されているレジスタ122内のビット数と比較し、フェッチされているワード数が「1」に設定されているレジスタ122内のビット数に等しい(及びクリティカルワードが読み出されているこのワードの中にある)場合に限り、新しいフェッチ要求を選択して既存のフェッチ要求をアボートする。当然ながら、他の実装において、レジスタ122のビットのデフォルト値が「1」であり得、所望のビット数を「0」に設定することによって閾値が設定され得る。
【0046】
レジスタ122のサイズは、任意のキャッシュラインで予期される最大ワード数に等しくなるべきである。特定のユーザ設定でキャッシュラインが最大の可能なワード数より少ないワードを有する場合、レジスタ122内の過剰ビットは、単に未使用の状態である-すなわち、「0」(又は代替的な実施形態において「1」)のままである。
【0047】
アボートメカニズムが、以下のように動作する状態機械(不図示)によって、アービターコントローラ110に実装され得る。
【表1】
【0048】
いくつかの実装において、フラッシュメモリ媒体100内のプログラムコードデータが、セキュリティ上の理由で暗号化され得る。そうだとしたら、一旦フェッチされたプログラムコードデータは、マイクロコントローラ103及びマイクロコントローラ104のそれぞれによって実行され得る前に復号されなければならない。そのような復号を促進すべく、キャッシュミスアービター105は、いくつかの実装においてアドバンスト・エンクリプション・スタンダード(AES)に従って動作し得る復号エンジン125を含み得る。
【0049】
復号エンジン125は、暗号化されてフェッチされたデータがキャッシュミスアービター105を通過する際に当該データに対してオンザフライで動作し、復号されたデータをキャッシュ120に格納し、及び/又は、フェッチ要求を作成したマイクロコントローラ103及びマイクロコントローラ104のうちのいずれか1つにレイテンシなしで返す。オンザフライの復号を実現する1つの方法は、アドレスエイリアスを用いることである。例えば、可能なアドレス空間が実際のデータ領域の2倍であってよく、アドレスの最上位ビットが、データが暗号化されているかどうか(すなわち、復号が必要とされるかどうか)を示すのに用いられる。
【0050】
図2に示されるように、(左上から右下への斜線のハッシュによって示される)クリアデータ201及び(左下から右上への斜線のハッシュによって示される)暗号化データ202が、下位のアドレス空間に両方格納される。しかしながら、暗号化データ202について、アドレスの最上位ビットが「1」に設定されて、復号が必要されることを示し、暗号化データ202が上位のアドレス空間203内に格納されているように見えるようにする。したがって、この実装において、実際には、すべてのデータ-クリアなもの及び暗号化されているものの両方-が、アドレス空間の下位のクリアな半分にあるように見えるものの中に存在するが、アドレス空間が、暗号化されていない(及び復号を要求しない)下位半分と、暗号化されている(及び復号を要求する)上位半分とに分割されているように見える。例えば、データ領域が23アドレスビット[22:0]を包含する場合、データ領域が24アドレスビット[23:0]を包含するように見え、それによって2倍の大きに見える。しかしながら最上位ビット[23]は、実際には、位置ではなく、むしろ復号が要求されるかどうかを表す。
【0051】
キャッシュラインごとに、読み出されたデータが、フラッシュメモリ媒体100内のどこからデータがフェッチされているかを示すキャッシュタグRAM130内のアドレスデータと共にキャッシュデータRAM120に格納される。アドレスデータは、従来、キャッシュラインが完全に読み出されると設定される「有効ビット」と共に格納される。しかしながら、キャッシュラインフェッチアボートメカニズムの説明に関連して上記のとおり、本開示の実装に従って、各ワードがフェッチすると検証されて、フェッチ処理が必要に応じて上記のようにアボートされることを可能にする。したがって、本開示の主題の実装において、キャッシュラインごとの1つの有効ビットの代わりに、キャッシュライン内のワードと同数のキャッシュラインごとの有効ビットが存在する。より一般的には、有効ビットの数がキャッシュライン内のワード数に等しくてよく又は等しくなくてよいが、キャッシュラインごとの複数の有効ビットが存在し得る。
【0052】
キャッシュラインのアドレスデータ内の追加の有効ビットの存在は、キャッシュからデータを読み出すときにアドレスを復号するのに必要な時間を増加させる。追加の復号時間は、合計の復号時間が1クロックサイクルを超える原因となり得る。したがって、本開示の主題の実装によれば、キャッシュは、マルチウェイ連想キャッシュとして編成されてよく、第1のクロックサイクルで、ウェイ選択を除いたキャッシュタグRAM130内のすべてのアドレスデータが復号されて、8つの可能なキャッシュ位置が残り、ウェイ選択が次のクロックサイクルで復号される。
【0053】
例えば、図3に示されるように、32キロバイトのキャッシュ301は、それぞれ8つのラインを有する128セット(0,…,127)に分割され得る。キャッシュタグの復号を1クロックサイクル内で実現され得るフェーズに分解すべく、キャッシュ301が8個のブロック302に再編成され得る(2個のみ示される)。各n番目のブロック又はウェイ302は、すべてのセット(0,…,127)のそれぞれn番目のラインを含む。すなわち、0番目のウェイは全128セット(0,…,127)のうちの128個の0番目のラインを含み、1番目のウェイは全128セット(0,…,127)のうちの128個の1番目のラインを含み、2番目のウェイは全128セット(0,…,127)のうちの128個の2番目のラインを含み、3番目のウェイは全128セット(0,…,127)のうちの128個の3番目のラインを含み、4番目のウェイは全128セット(0,…,127)のうちの128個の4番目のラインを含み、5番目のウェイは全128セット(0,…,127)のうちの128個の5番目のラインを含み、6番目のウェイは全128セット(0,…,127)のうちの128個の6番目のラインを含み、7番目のウェイは全128セット(0,…,127)のうちの128個の7番目のラインを含む。
【0054】
302のように編成されたキャッシュのタグデータを復号するとき、第1のクロックサイクルで、ウェイ選択以外のすべてのアドレスデータが復号される。したがって、第1のクロックサイクル後、捜索されているデータが、図3内でクロスハッチングによって強調表示されている、8個のブロック302のうちの1つのn番目のラインのm番目のワードであることがわかる。次のクロックサイクルにおいて、ウェイ選択が復号されて、8個のブロックのうちのどれが所望のデータを保持するかを示す(この例において、n番目のラインのm番目のワード)。
【0055】
タグデータが、いくつか実装において、同一アドレスで書き込み及び読み出しされ得る2ポート同期レジスタに格納され得る。書き込みクロック及び読み出しクロックが、従来、同一であるが、衝突を回避すべく、そのようなレジスタは、通常、命じられた最小オフセットが書き込みクロックの各立ち上がりエッジと読み出しクロックの対応する立ち上がりエッジとの間に存在するように、書き込みクロック及び読み出しクロックがお互いからオフセットされることを要求する。しかしながら、図4に示されるように、そのようなオフセットを回避すべく、本開示の主題の実装において、同一の書き込みクロック及び読み出しクロックを用いる代わりに、書き込みクロックの立ち上がりエッジと読み出しクロックの対応する立ち上がりエッジとの間に(命じられた最小オフセットより大きい)T/2の固有の遅延が存在するように、書き込みクロック(WCLK)401及び読み出しクロック(RCLK)402がお互いに逆である。
【0056】
本開示の主題の実装に従う方法500が、図5に示されている。501では、第1のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されたプログラムコードが、キャッシュされる。次に、502では、第2のマイクロコントローラによるインプレース実行のためにフラッシュメモリから読み出されたプログラムコードが、キャッシュされる。503では、キャッシュミスに対して、第1のマイクロコントローラ及び第2のマイクロコントローラによるフラッシュメモリへの平等なアクセスが、提供される。504では、第1の要求が実行されている間に第2のフェッチ要求が受信されたかどうかが判定される。もしそうでないなら、507では、第1の要求は実行を継続する。しかし、504で、第1の要求が実行されている間に第2のフェッチ要求が受信されたと判定された場合、505では、クリティカルワード-すなわち、それぞれのマイクロコントローラが実際に第1の要求で捜索しているデータワード-が読み出されたかどうかが判定される。もしそうでないなら、507では、第1の要求は実行を継続する。しかし、505で、クリティカルワードがすでに読み出されていると判定された場合、506では、予め定められた閾値のデータ量が第1の要求によって読み出されているかどうかが判定される。もしそうでないなら、507では、第1の要求は実行を継続する。しかし、506で、予め定められた閾値のデータ量が第1の要求によって読み出されていると判定された場合、第1の要求がアボートされて、第2の要求が実行を開始する。
【0057】
したがって、2つの異なるマイクロコントローラ又はプロセッサによる同一のフラッシュメモリ媒体へのアクセスを提供するフラッシュメモリコントローラが提供されたことがわかる。
【0058】
本明細書及び以下の特許請求の範囲内で用いられるように、構造「A及びBのうちの1つ(one of A and B)」は、「A又はB(A or B)」を意味する。
【0059】
上記は本発明の原理の例示にすぎないこと、及び限定ではなく例示の目的で提示された、説明された実施形態以外によって本発明が実施され得ることに留意し、本発明は、以下の特許請求の範囲によってのみ限定される。
図1
図2
図3
図4
図5