(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-04
(54)【発明の名称】シームレスに集積されたマイクロコントローラチップ
(51)【国際特許分類】
G06F 15/78 20060101AFI20240328BHJP
G06F 13/36 20060101ALI20240328BHJP
G06F 13/14 20060101ALI20240328BHJP
G06F 13/42 20060101ALI20240328BHJP
G06F 13/12 20060101ALI20240328BHJP
【FI】
G06F15/78 512
G06F13/36 510
G06F13/14 310H
G06F13/42 320Z
G06F13/12 340A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023561825
(86)(22)【出願日】2022-03-26
(85)【翻訳文提出日】2023-12-06
(86)【国際出願番号】 US2022022068
(87)【国際公開番号】W WO2022216469
(87)【国際公開日】2022-10-13
(32)【優先日】2021-04-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523257761
【氏名又は名称】アイディーケイ・エルエルシー・ディービーエー・インディー・セミコンダクター
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】スコット・デイヴィッド・キー
【テーマコード(参考)】
5B062
【Fターム(参考)】
5B062AA02
5B062DD08
5B062EE10
5B062HH02
5B062HH04
5B062JJ03
(57)【要約】
CPUダイおよび1つまたは複数の外部混合モード(アナログ)チップを備えるシステムの中のような電子システムにおける技法が、システム設計、性能、コスト、効率、およびプログラマビリティのうちの1つまたは複数において改善利点をもたらし得る。一実施形態では、CPUダイは、少なくとも1つのマイクロコントローラCPUと、少なくとも1つのCPUが、それらが単一チップマイクロコントローラとして設計されるかのようにアナログチップへの完全かつ透過的な接続性を有することを可能にする、回路構成とを含み、その2つの間のインターフェース設計が極めて効率的でありワイヤの本数が限定されながら、機能性またはソフトウェアモデルへの影響を伴わずに、それでも改善された性能をもたらし得る。
【特許請求の範囲】
【請求項1】
システムであって、
中央処理ユニット(CPU)および第1のブリッジを有する第1のダイと、
第2のブリッジを有する第2のダイであって、第2のCPUを除外するか、または前記第1のブリッジおよび前記第2のブリッジに関連しない第3のCPUを有する、第2のダイと、
前記第1のブリッジおよび前記第2のブリッジに電気的に結合されたダイ間相互接続部であって、前記第1のダイの中の第1のバスおよび前記第2のダイの中の第2のバスよりも少ない信号ラインを備える、ダイ間相互接続部とを備え、
前記第1のブリッジおよび前記第2のブリッジは、前記第2のダイの機能が前記第1のダイ上のマスタには前記第1のダイ上に実装されているかのように見えるように、前記ダイ間相互接続部の存在をマスクするように構成される、
システム。
【請求項2】
前記マスタは前記CPUを備える、請求項1に記載のシステム。
【請求項3】
前記第1のダイは複数のデバイスを備え、前記複数のデバイスのうちの1つまたは複数は、前記ダイ間相互接続部を介した前記第2のダイ上のバススレーブへのバストランザクションに関与するように構成されるバスマスタとして働くように構成される、請求項1に記載のシステム。
【請求項4】
前記第2のブリッジは、前記第1のダイ上のバスマスタによるトランザクションを中断して、前記第1のバスマスタによる前記中断されたトランザクションをファイナライズする前に前記第2のダイ上の第2のバスマスタによるトランザクションが前記ダイ間相互接続部を介して行われることを可能にするように構成される、請求項1に記載のシステム。
【請求項5】
前記第2のダイは複数のデバイスを備え、前記複数のデバイスのうちの1つまたは複数は、前記第1のブリッジおよび前記第2のブリッジに関するバススレーブとして働くように構成される、請求項1に記載のシステム。
【請求項6】
前記第2のダイの2つのインスタンスがある実装のために、前記ダイ間相互接続部を介した、帯域幅がより狭い2つの接続を可能にしながら、前記第2のダイの単一のインスタンスが実装されるときのみ、前記第1のダイは、前記ダイ間相互接続部を介した、帯域幅がより広い単一の接続を提供するように構成される、請求項1に記載のシステム。
【請求項7】
前記第1のダイ上に実装されるソフトウェアモデルは、単一ダイシステム上に実装された場合と同じである、請求項1に記載のシステム。
【請求項8】
前記第1のバスおよび前記第2のバスは共通のフォーマットを有する、請求項1に記載のシステム。
【請求項9】
前記フォーマットは、ARMアドバンストマイクロコントローラバスアーキテクチャ(AMBA)アドバンスト高性能バス(AHB)、AHBLite、またはAHB5を含む、請求項8に記載のシステム。
【請求項10】
前記フォーマットはウィッシュボーンアーキテクチャを含む、請求項8に記載のシステム。
【請求項11】
前記第2のダイ上の第3のバスに電気的に結合された、前記第2のダイ上の第2のバスマスタ、およびバススレーブとして前記第3のバスに電気的に結合された第3のブリッジと、
前記第1のダイ上の第4のバスに電気的に結合された、前記第1のダイ上の第2のバススレーブ、およびバスマスタとして前記第4のバスに電気的に結合された第4のブリッジと、
前記第3のブリッジと前記第4のブリッジとの間で第2の信号を伝達するように構成された第2のダイ間相互接続部であって、前記第2のダイ間相互接続部の数は、前記第2のバスマスタと前記第3のブリッジとの間の信号ラインの数よりも少ない、第2のダイ間相互接続部とをさらに備え、
前記第1のブリッジ、前記第2のブリッジ、および前記ダイ間相互接続部は、前記バストランザクションが単一ダイシステムの中で行われた場合と同様にして、前記バスマスタが前記バススレーブとのバストランザクションに関与することを可能にするように構成される、
請求項1に記載のシステム。
【請求項12】
前記第2のダイ上の前記バススレーブにアクセスするためのCPU命令は、前記バススレーブが前記第1のダイ上に実装された場合と同じである、請求項11に記載のシステム。
【請求項13】
第1のブリッジを有する第1のダイと第2のブリッジを有する第2のダイとの間で通信する方法であって、
前記第2のダイの機能に対応する、前記第1のダイの中の中央処理ユニット(CPU)からの信号を、前記第1のブリッジにおいて受信するステップと、
前記第1のブリッジおよび前記第2のブリッジに電気的に結合されたダイ間相互接続部を介した前記信号を、前記第2のブリッジに通信するステップとを含み、前記ダイ間相互接続部は、前記第1のダイの中の第1のバスおよび前記第2のダイの中の第2のバスよりも少ない信号ラインを備え、
前記信号を通信するとき、前記第1のブリッジおよび前記第2のブリッジは、前記第2のダイの前記機能が前記第1のダイ上のマスタには前記第1のダイ上に実装されているかのように見えるように、前記ダイ間相互接続部の存在をマスクし、
前記第2のダイは、第2のCPUを除外するか、または前記第1のブリッジおよび前記第2のブリッジに関連しない第3のCPUを有する、
方法。
【請求項14】
前記マスタは前記CPUを備える、請求項13に記載の方法。
【請求項15】
前記第1のダイは複数のデバイスを備え、前記複数のデバイスのうちの1つまたは複数は、前記ダイ間相互接続部を介した前記第2のダイ上のバススレーブへのバストランザクションに関与するバスマスタとして働く、請求項13に記載の方法。
【請求項16】
前記方法は、前記第2のブリッジが前記第1のダイ上のバスマスタによるトランザクションを中断して、前記第1のバスマスタによる前記中断されたトランザクションをファイナライズする前に前記第2のダイ上の第2のバスマスタによるトランザクションが前記ダイ間相互接続部を介して行われることを可能にするステップを含む、請求項13に記載の方法。
【請求項17】
前記第2のダイは複数のデバイスを備え、前記複数のデバイスのうちの1つまたは複数は、前記第1のブリッジおよび前記第2のブリッジに関するバススレーブとして働く、請求項13に記載の方法。
【請求項18】
前記第2のダイの2つのインスタンスがある実装のために、帯域幅がより狭い2つの接続を可能にしながら、前記第2のダイの単一のインスタンスが実装されるときのみ、前記第1のダイは、帯域幅がより広い単一の相互接続部を提供する、請求項13に記載の方法。
【請求項19】
前記第1のダイ上に実装されるソフトウェアモデルは、単一ダイシステム上に実装された場合と同じである、請求項13に記載の方法。
【請求項20】
電子デバイスであって、
中央処理ユニット(CPU)および第1のブリッジを有する第1のダイと、
第2のブリッジを有する第2のダイであって、第2のCPUを除外するか、または前記第1のブリッジおよび前記第2のブリッジに関連しない第3のCPUを有する、第2のダイと、
前記第1のブリッジおよび前記第2のブリッジに電気的に結合されたダイ間相互接続部であって、前記第1のダイの中の第1のバスおよび前記第2のダイの中の第2のバスよりも少ない信号ラインを備える、ダイ間相互接続部とを備え、
前記第1のブリッジおよび前記第2のブリッジは、前記第2のダイの機能が前記第1のダイ上のマスタには前記第1のダイ上に実装されているかのように見えるように、前記ダイ間相互接続部の存在をマスクするように構成される、
電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
別々のプロセスノード上に存在するマイクロコントローラCPU、メモリ、およびアナログデバイスを含む、シームレスに集積されたマイクロコントローラチップにおけるダイ間信号の通信について説明する。この集積システムは、性能の顕著な損失なしにシームレスな集積を維持しつつ、低減されたコストまたは複雑度、より高い効率、より短い製品化までの時間をもたらす。
【背景技術】
【0002】
公知または周知のものとして明示的に特定されない限り、文脈、定義、または比較目的のためを含む、技法および概念についての本明細書における言及は、そのような技法および概念が以前に公知であるかまたは他の点で従来技術の一部であるものとの自認として解釈されるべきでない。特許、特許出願、および刊行物を含む、(もしあれば)本明細書において引用される参考文献は、すべての目的のために、具体的に組み込まれているか否かにかかわらず、その全体が参照により本明細書に組み込まれる。
【0003】
マイクロコントローラおよびマイクロコンピュータの世界において、我々は様々な環境および機能に適合するI/O周辺機器およびシステムを効果的に開発および集積するという課題に直面する。ある業界についてうまくいく解決策は、すべてについてうまくいくとは限らず、修正される必要がある。この課題は、今度は、ほぼすべての制御機能のためにASICデバイスが修正される必要があるという大きなスケーリングの問題を引き起こす。
【0004】
既存の解決策は、CPU、メモリ、および周辺機器アクセスを、単一のダイ上に集積する。I/O周辺機器とCPU、クロック、およびメモリアクセスとの間のインターフェースは、所望の性能を達成するように緊密に結合され管理される。
【0005】
I/Oまたはダイ内の任意の他の要素の変更は、性能、およびダイの中への外部インターフェースを維持するための、新たなハードウェア設計およびソフトウェア設計を伴うことがある。CPUの変更は同じことをもたらす。
【0006】
さらに、CPU論理およびメモリなどのいくつかの構成要素は、ある製造プロセスにおいてより良好に実装されることができるが、電圧および精度が高いアナログなどの他のものは、異なる製造プロセスにおいてより良好に実装されることができる。同じダイ上でのすべての構成要素の実装は、より良好にそのニーズに合う製造プロセスで各構成要素が実装されることになるなら達成されるであろうことと比較して、コストを上げ、性能を下げうる。
【0007】
バス、割込み、ダイレクトメモリアクセス(DMA)、およびクロックの間の緊密な関係および関連する相互作用により、CPUとI/Oとの間を切り離すことは困難である。
【0008】
この問題を克服するために、既存の解決策は、外部インターフェースがシステムを管理することを可能にするために、多くのワイヤ(入力/出力)をダイの中に設ける。または、いくつかの解決策は、CPUとスタンドアロンASIC(時には、アナログASIC)としての周辺機器との間を分離し、そのことは、システム設計者およびプログラマーにとって複雑なインターフェース問題を引き起こす。CPUとASICとの分離は、2つを一緒にスタック(または、隣り合わせに)するときのプログラミング課題を解決しない。
【0009】
ダイ間インターフェースについてのプログラミングの複雑性は、遠隔のダイ上の周辺機器上で論理演算を行うためにさらに多くのCPU命令を使用しなければならないことを含む。さらに、割込みサービス要求およびダイレクトメモリアクセス要求などの通常のインターフェースへの変更は、ソフトウェアがポーリングメカニズムを使用してそのような機能を管理しなければならないこと、およびこれらの機能への相互接続部のための個々の汎用入力/出力を設けることをもたらす場合がある。バストランザクションのセキュリティ管理、バストランザクションのための周辺データフロー制御、トランザクションエラー報告およびデータブロック転送などのいくつかの機能は、ソフトウェアによって直接管理されることを必要とされる場合があるが、単一ダイ手法では、これらはハードウェアの中で処理されることが可能である。CPUと遠隔のダイ上に配置されうる電力管理との間で自動PMU状態伝搬を提供することといった他の機能も、ソフトウェア、または標準信号を直接転送するために設けられる専用相互接続部によって管理されなければならないことになる。
【0010】
したがって、はるかに多くのワイヤを、ダイ間通信インターフェースを最小化すること、および同時に、信号の通常の完全に並列なセットを用いて同じダイ上に実装されているならば生じていることになるものと論理的に均等な各ダイに構成要素への挙動を与えることになる論理構造と置き換える一方で、全体的なバス+割込み+DMAと他の所望の構造とをブリッジすることを可能にするダイ間ハードウェアアーキテクチャに対するニーズがある。CPUとは異なるダイ上に位置する周辺機器がフル機能の標準バスインターフェースとともに実装されることを可能にするインターフェースは、それらが最終的にCPUと同じダイ上に位置するのかそれとも異なるダイ上に位置するのかにとってアグノスティックに周辺機器が設計されることを可能にする。さらに、ASIC部分上に周辺機器を追加すること/ASIC部分から周辺機器を除去すること、またはCPUダイとASICダイとの間で構成要素を移動させることは、インターフェースに影響を及ぼさず、したがって、多様なシステムおよびそれらの固有のニーズに関連する、設計の急速な変更を可能にする。そして、インターフェース自体が包括的なフォーマットである場合、CPUを含む任意のダイは、これらの2つのダイが両方ともこの特定の配置向けに設計されているとは限らない場合でも、周辺機器を含む任意のダイに結合されることが可能である。CPUダイは、(CPUダイ設計が行われたときに当初は想定されていない設計を含む)複数の設計にわたって使用されることが可能である。または、非CPUダイは、共通の周辺機器のための共通の設計を使用して処理能力における変形形態を効率的に実装するために、複数の異なるCPUダイと対にされることが可能である。
【発明の概要】
【課題を解決するための手段】
【0011】
システムについて説明する。このシステムは、中央処理ユニット(CPU)および第1のブリッジを有する第1のダイと、第2のブリッジを有する第2のダイとを含んでよく、ここで、第2のダイは、第2のCPUを除外するか、または第1のブリッジおよび第2のブリッジに関連しない第3のCPUを有する。その上、システムは、第1のブリッジおよび第2のブリッジに電気的に結合されたダイ間相互接続部を含み、ここで、ダイ間相互接続部は、第1のダイの中の第1のバスおよび第2のダイの中の第2のバスよりも少ない信号ラインを含む。さらに、第1のブリッジおよび第2のブリッジは、第2のダイの機能が第1のダイ上の(CPUなどの)マスタには第1のダイ上に実装されているかのように見えるように、ダイ間相互接続部の存在をマスクする。
【0012】
第1のダイが複数のデバイスを含んでよく、複数のデバイスのうちの1つまたは複数が、ダイ間相互接続部を介した第2のダイ上のバススレーブへのバストランザクションに関与するバスマスタとして働いてよいことに留意されたい。
【0013】
その上、第2のブリッジは、第1のダイ上のバスマスタによるトランザクションを中断して、第1のバスマスタによる中断されたトランザクションをファイナライズする前に第1のダイまたは第2のダイ上の第2のバスマスタによるトランザクションのサービス作業がダイ間相互接続部を介して行われることを可能にしてよい。
【0014】
さらに、第2のダイは複数のデバイスを含んでよく、複数のデバイスのうちの1つまたは複数は、第1のブリッジおよび第2のブリッジに関するバススレーブとして働いてよい。
【0015】
さらに、第1のダイは、第2のダイの2つのインスタンスがある実装のために帯域幅がより狭い2つの接続を可能にしながら、第2のダイの単一のインスタンスが実装されるときのみ、帯域幅がより広い単一の相互接続部を提供してよい。
【0016】
いくつかの実施形態では、第1のダイ上に実装されるソフトウェアモデルは、単一ダイシステム上に実装された場合と同じである。
【0017】
第1のバスおよび第2のバスが共通のフォーマットを有してよいことに留意されたい。たとえば、フォーマットは、ARMアドバンストマイクロコントローラバスアーキテクチャ(AHB)、AHBLite、またはAHB5を含んでよい。代替または追加として、フォーマットはウィッシュボーンアーキテクチャを含んでよい。
【0018】
その上、システムは、第2のダイ上の第3のバスに電気的に結合された、第2のダイ上の第2のバスマスタ、およびバススレーブとして第3のバスに電気的に結合された第3のブリッジと、第1のダイ上の第4のバスに電気的に結合された、第1のダイ上の第2のバススレーブ、およびバスマスタとして第4のバスに電気的に結合された第4のブリッジと、第3のブリッジと第4のブリッジとの間で第2の信号を伝達する第2のダイ間相互接続部とを含んでよく、ここで、第2のダイ間相互接続部の数は、第2のバスマスタと第3のブリッジとの間の信号ラインの数よりも少ない。第1のブリッジ、第2のブリッジ、およびダイ間相互接続部は、バストランザクションが単一ダイシステムの中で行われた場合と同様にして、バスマスタがバススレーブとのバストランザクションに関与することを可能にしてよい。
【0019】
さらに、第2のダイ上のバススレーブにアクセスするためのCPU命令は、バススレーブが第1のダイ上に実装された場合と同じでありうる。
【0020】
さらに、第1のブリッジおよび第2のブリッジは、コマンド移送およびそれに後続する選択的なデータ移送のために、ダイ間相互接続部を連続的に使用してよい。いくつかの実施形態では、コマンド移送は単一のクロックサイクルの中で通信される。あるいは、コマンド移送は、第1のダイにとって透過的でありながら、または第1のダイ上のソフトウェアモデルにとって透過的でありながら、いくつかのクロックサイクルにわたって直列化されてよい。その上、直列化にとっての直列化長は、コマンド内容に少なくとも部分的に基づいて可変でありうる。
【0021】
システムが第1のブリッジまたは第2のブリッジを伴わずに単一のダイ上に実装された場合と同じクロックサイクルを、コマンド移送が維持してよいことに留意されたい。
【0022】
さらに、データフェーズは、ダイ間相互接続部のうちの1つまたは複数に対して、異なるデータ方向を有してよい。たとえば、データ方向はコマンド内容から復号されてよい。さらに、データ移送は、単一のクロックサイクルの中で通信されてよく、またはいくつかのクロックサイクルにわたって直列化されてもよい。データ移送直列化長は、以前のコマンド内容から復号されてよい。
【0023】
いくつかの実施形態では、ダイ間相互接続部は、後続するフェーズがコマンドフェーズであるのかそれともデータフェーズであるのかに関して、第1のダイから第2のダイへのフェーズ表示を提供してよい。たとえば、フェーズ表示は、単一のコマンド転送に対して2つ以上のデータ転送を行うために使用されてよい。
【0024】
その上、第2のダイ上のバスアドレスは、以前のコマンドフェーズ中に提供される命令に従ってデータフェーズごとに更新されてよい。
【0025】
さらに、第1のブリッジは、第1のバス上のバースト表示に応答して複数のデータフェーズを実行してよい。
【0026】
いくつかの実施形態では、第1のブリッジは、第1のバス上でのシーケンシャルアクセスアドレスの検出に応答して複数のデータフェーズを実行してよい。代替または追加として、第1のブリッジは、ダイレクトメモリアクセス(DMA)コントローラ表示に応答して複数のデータフェーズを実行してよい。
【0027】
ダイ間相互接続部が、第1のバスまたは第2のバスに関連しないトランザクションを実施してよいことに留意されたい。
【0028】
その上、関連しないコマンドは、コマンドフェーズ中にコーディングによって示されてよい。
【0029】
他の実施形態は第1のダイを提供する。
【0030】
他の実施形態は第2のダイを提供する。
【0031】
他の実施形態は、第1のダイ、第2のダイ、およびダイ間相互接続部を含む、電子デバイスを提供する。
【0032】
他の実施形態は、第1のブリッジを有する第1のダイと第2のブリッジを有する第2のダイとの間で通信するための方法を提供する。この方法は、第1のダイおよび第2のダイによって実行される動作のうちの少なくともいくつかを含む。
【0033】
本概要は、本明細書で説明する主題のいくつかの態様の基本的理解をもたらすように、いくつかの例示的な実施形態を示すという目的のために提供される。したがって、上記で説明した特徴が例であり、本明細書で説明する主題の範囲または趣旨をいかなる形でも狭くするものと解釈されるべきでないことが、諒解されよう。本明細書で説明する主題の他の特徴、態様、および利点は、以下の発明を実施するための形態、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0034】
【
図2A】単一ダイシステムの一実施形態の選択された詳細を示すブロック図である。
【
図2B】CPUダイ、ASICチップ、および選択された内部アーキテクチャを含む、2ダイシステムの一実施形態の選択された詳細を示すブロック図である。
【
図3】2ダイシステムの一実施形態の選択された詳細を示すブロック図である。
【
図4】低減されたワイヤのセットを有する2ダイシステム間のインターフェースの一実施形態の選択された詳細を示すブロック図である。
【
図5】バストランザクションの一実施形態の選択された詳細を示す図である。
【
図6】バスエラー伝搬およびセキュアなバスアクセスの一実施形態の選択された詳細を示す図である。
【
図7】様々なバーストを処理する一実施形態の選択された詳細を示す図である。
【
図8】ASICダイ上の割込みソースとCPUダイ上の割込みコントローラとの間の割込みブリッジングの一実施形態の選択された詳細を示す図である。
【
図9】ASICダイDMA有効化バススレーブとCPUダイDMAコントローラとの間のDMA要求同期を示すシーケンス図の一実施形態の選択された詳細を示す図である。
【
図10A】2ダイシステムのための構成および発見プロセスの一実施形態を示すフロー図である。
【
図10B】ASICダイ能力が固定された2ダイシステムのための構成および発見プロセスの一実施形態を示すフロー図である。
【発明を実施するための形態】
【0035】
図面全体にわたって、同様の参照番号が対応する部分を指すことに留意されたい。その上、同じ部分の複数のインスタンスが、インスタンス番号からダッシュによって分離された共通のプレフィックスによって指定される。
【0036】
開示する通信技法は、たとえば、プロセス、製造品、装置、システム、組成物、およびコンピュータ可読記憶媒体(たとえば、ディスク、フラッシュストレージなどの不揮発性ストレージを有する集積回路などの、光および/もしくは磁気大容量記憶デバイスの中の媒体)などのコンピュータ可読媒体、または光もしくは電子通信リンクを介してプログラム命令が送られるコンピュータネットワークとして、数多くの方法で実施可能である。以下でより詳細に説明するように、本開示は、上記で識別された分野におけるセキュリティ、コスト、収益性、性能、効率、および/または使用の効用のうちの1つまたは複数などの要因の改善を可能にし得る、開示する通信技法の1つまたは複数の実施形態の説明を提供する。発明を実施するための形態は、発明を実施するための形態の残部の理解を容易にするための序論を含む。序論は、本明細書で説明する概念によるシステム、方法、製造品、およびコンピュータ可読媒体のうちの1つまたは複数の例示的な実施形態を含む。以下でより詳細に説明されるように、開示する通信技法は、発行される請求項の範囲内で、数多くの可能な修正形態および変形形態を包含する。
【0037】
開示する通信技法は、エンドユーザにとって透過的な方式でのマルチダイマイクロコントローラ実装を可能にする、ダイ間インターフェース/ブリッジを提供する。2つのダイの間でいくつかの標準マイクロコントローラインターフェースをブリッジすることによって、周辺機器は、2つのダイのうちのどちらの中に周辺機器が実装されるのかに大きくアグノスティックとなるように実装されることが可能である。実際、ユーザは単一のマイクロコントローラユニットに遭遇する。ブリッジングは自明ではなく、既存の技術内での要素を省略するための解決策を提供し得る。
【0038】
既存のバス拡張は、単一ダイマイクロコントローラにおいて典型的な機能および挙動をサポートしない。単一のダイを複数のダイに分割するとき、原理上はすべてのワイヤを接続できることを単純に考えることになる。典型的には、このことは理論上でしか機能せず、しばしば、あらゆる内部インターフェースのための物理的なライン接続を必要とする。
【0039】
「すべてのワイヤを接続する」手法は、単にそれをすべて同じダイ上に有することがより容易であるので意味をなさない。我々が探求しているものは、複数の遠隔のダイとの適度に複雑な相互作用を可能にしながら相互接続部カウントの数を最小化することである。開示する通信技法は、従来の外部バス拡張(たとえば、I2C、SPI、パラレルメモリバスなど)より優れていることがある。特に、本通信技法は次のような利点をもたらし得る。
単一ダイ集積に関する同じソフトウェアプログラミングモデル。遠隔のダイ上のバス周辺機器がCPUバスメモリマップアクセスに直接応答する。
より少ない相互接続部カウントにもかかわらず、遠隔のダイ上の周辺機器へのアクセスのための、より小さいレイテンシ。いくつかの実施形態では、これは、現実的な構成を用いて実際上は0の追加のレイテンシでありうる。
遠隔周辺アクセス動作ごとにソフトウェアによって実行されるオペコードの数を減らすことであって、さらに、オペコードの数は単一のダイ用と同じであるが、他の外部バス拡張のようなものが使用されている場合のものよりも少ない。
遠隔のスレーブがデータ配送(読取りまたは書込みのいずれか)に対して準備ができていないときの透過的なスレーブストーリング(slave stalling)(フロー制御)、トランザクションエラー報告、セキュリティ機能に対するサポート、たとえば、アクセス特権/セキュリティ、複数のバスマスタ(たとえば、CPUおよびDMA)間での遠隔のスレーブの自動調停、および/またはバーストモード転送を含む、CPUダイ上のマスタおよび遠隔のダイ上のスレーブのために、標準化された通常のインターフェースを使用して通常のバス機能を提供すること。
通常の方式で、たとえば、終点にとって透過的な方式で、潜在的に多くの周辺機器からの個別化された割込み要求能力を提供すること。
通常の方式で、周辺機器からの個別化されたDMA要求能力を提供すること。たとえば、バス転送データステージに同期されたDMAデータ転送中のDMA要求アサート停止。
透過的なやり方で電力管理機能に対するダイ間同期を可能にすること。
デバッグポートアクセスなどのバスアクセス特権以外の、CPUダイとASICダイとの間での透過的なセキュリティ機能構成を可能にすること。
CPUダイから独立した遠隔ダイ設計および製造、また、CPUダイまたはソフトウェアモデルへの影響なしに、遠隔のダイ上のインターフェース/周辺機器の押し迫った追加または再設計を可能にすること。
(たとえば、プロセス技術が適合しないことに起因して)CPUダイ上に集積することが不可能または非実用的な構成要素が、両方のダイ上で構成要素インターフェース規格およびプログラマーモデルにとって透過的でありながら、これらの構成要素を実装する遠隔のダイと対にされることが可能な、マルチダイ製品を可能にすること。
周辺機器ダイのブート時間発見/マッピングを可能にすること。
遠隔のダイ上のソフトウェアモデルまたは周辺構成要素設計を変更することなく、単一のCPUダイを、異なる相互接続部カウントを有する複数の異なるASICダイと対にするために、ランタイム調整可能な相互接続部カウントを可能にすること。
【0040】
開示する通信技法の1つまたは複数の実施形態の詳細な説明が、開示する通信技法の選択された詳細を示す添付図面と一緒に以下に提供される。開示する通信技法は、実施形態に関して説明される。本明細書における実施形態は、単に例示的であるものと理解される。開示する通信技法は、本明細書における実施形態のうちのいずれかまたはすべてに、またはそれらによって、明確には限定されず、開示する通信技法は、数多くの組合せ、代替形態、修正形態、および均等物を包含する。説明における単調さを避けるために、(最初の、最後の、いくつかの、様々な、さらなる、他の、特定の、選択する、いくつかの、および著しいなどの)様々なワードラベルが、実施形態の別個のセットに適用されてよく、本明細書で使用するとき、そのようなラベルが、品質、または任意の形態の選好もしくは不利益を伝えることを明確には意図されず、単に別個のセットの間を好都合に区別することが意図される。開示するプロセスのいくつかの動作の順序は、開示する通信技法の範囲内で変更可能である。プロセス、システム、および/またはプログラム命令機能の変形形態を説明するために複数の実施形態が役立つ場合はいつでも、事前決定されるかまたは動的に決定される基準に従って、それぞれ複数の多重実施形態に対応する複数の動作モードのうちの1つの静的かつ/または動的な選択を実行する、他の実施形態が企図される。開示する通信技法の十分な理解を与えるために、以下の説明において数多くの具体的な詳細が記載される。本詳細は例の目的のために提供され、本発明は、本詳細の一部または全部を伴わずに特許請求の範囲に従って実践されてよい。明確性のために、開示する通信技法が不必要に不明瞭にされないように、開示する通信技法に関する、当技術分野において知られている技術資料は、詳細には説明されていない。
【0041】
広範なシステムおよびデバイスの中でマイクロコントローラが使用される。デバイスは、しばしば、デバイス内で一緒に機能してそれらのそれぞれのタスクを処理する、複数のマイクロコントローラを利用する。
【0042】
マイクロコントローラは、デバイスまたはより大きなシステムにおいて唯一の機能または限定された数の機能を制御するために使用される組込み式かつリアルタイムのデバイスである。マイクロコントローラは、それの周辺機器から受信するデータを、それの中央プロセッサ(CPU)およびメモリを使用して解釈することによって、このことを行う。周辺機器(たとえば、マイクロコントローラの中に集積された温度センサまたは無線通信インターフェース)は、アナログI/Oインターフェース(たとえば、アナログデジタル変換器またはLCDドライバ)またはデジタルインターフェース(たとえば、汎用個別入力/出力信号ドライバまたはSPI通信インターフェース)が集積されることが可能である。マイクロコントローラが受信する一時的な情報は、それのデータメモリの中に記憶され、ここで、プロセッサはデータメモリにアクセスし、それのプログラムメモリの中に記憶された命令を使用して着信データを解読および適用する。プロセッサは、次いで、それのI/O周辺機器を使用して適切なアクションを通信および/または遂行する。
【0043】
たとえば、自動車は、アンチロックブレーキングシステム、トラクション制御、燃料噴射またはサスペンション制御などの中に、様々な個々のシステムを制御する多くのマイクロコントローラを有することがある。そのようなマイクロコントローラは、アナログまたはデジタルの構成要素を感知および制御することなどの、これらのシステムを実装するハードウェアと相互作用することを担当することができる。さらに、これらのマイクロコントローラは、それらのアクションを協調させるために通信インターフェースを使用して互いに頻繁に通信する。自動車内のさらに複雑な中央コンピュータと通信してよいものもあれば、他のマイクロコントローラとしか通信しなくてよいものもある。
【0044】
図1は、クロック逓倍器およびマルチプレクサ(mux)110とそのソース115、複数のCPUおよび任意選択のDMAコントローラ120、AHBバス125を用いてインターフェースする基本ASIC機能145、割込みを管理するための複数の割込み要求信号(IRQ)160、自動化DMAサービス作業用の複数のDMA要求信号(DRQ)130、電力管理ユニット(PMU)インターフェース135、ならびにデバッグアクセスポートインターフェース140を通じてCPUまたは他の内部構成要素のうちの1つまたは複数と相互作用するデバッグアクセスポート(DAP)150を含む、単一ダイマイクロコントローラ100アーキテクチャを高いレベルにおいて示す。(アドバンスト高性能バスすなわちAHBが、システムオンチップ(SoC)設計における機能ブロックの接続および管理のためのオープン規格オンチップ相互接続仕様である、ARMアドバンストマイクロコントローラバスアーキテクチャ(AMBA)において規定されたバスアーキテクチャであることに留意されたい。AMBAにおける他のバスフォーマットは、APBおよびAXIを含む。)
図1は、機能性および内部インターフェースのうちのいくつかを示し、それらについて、開示する通信技法の単一ダイ設計からマルチダイ設計に移るときに、より詳細に説明する。本開示全体にわたって、一実施形態の場合のようにAHB125を使用してよい。開示する通信技法は、AHBバス設計の特定の特性に限定されず、知られているこの技術を実装例として使用する。さらに、ASIC機能145の内側のバススレーブが、それに直接ではなくAHBインターフェース125を通じてアタッチされ得るように、AHBインターフェース125は、1つまたは複数のAPBバスなどの、ASIC機能145の内側のさらなるバスティア(bus tier)を含むことができる。
【0045】
マイクロコントローラは、典型的には、計算能力を低コストと交換するようにプロビジョニングされる。感知/反応シーケンスのリアルタイム態様に起因して、マイクロコントローラにおける計算性能は、典型的には、感知/反応シーケンスを制限することによってシステムの組み合わせられたレイテンシを制限するために最適化される。この全体的なシーケンスを実行するための時間は、しばしば、ミリ秒の分数単位で測定されることが可能である。このことは、はるかに大きくさらに可変のレイテンシを、ただし、関連しない多くのタスクを潜在的に処理しながら受け入れることができ、かつはるかに大きいタイムスケールにわたる平均化された性能のために最適化される、計算プロセッサとは異なる。結果として、CPUをそれの周辺リソースに接続するアーキテクチャはさらに緊密に結合される。典型的には、マイクロコントローラCPUは、周辺機器およびメインメモリの同じ周波数(または、いくらかの小さい倍数)で動作しており、CPU自体のメインバス上のいずれかのワード(その特定のシステムのネイティブワードビットサイズ)レベルにおいて、CPUがこれらの構成要素と相互作用することを期待する(または、フォーマットが異なるいくつかのバスにブリッジスルー(bridge through)される)。ターゲットがそれに対してアクセス遅延を課する各ワードアクセスは、その遅延の間にプロセッサ実行がストールする結果となる。計算プロセッサは、典型的にはローカルキャッシュメモリと相互作用していることに、代わりに最適化され、キャッシュが所望のデータを含まないときに有用な作業を行うことを継続するための様々な緩和方策を有する。これらのプロセッサでは、プロセッサは、主にキャッシュを通じて非キャッシュ構成要素に接続される。さらにこの場合、低速な周辺機器アクセスが、典型的には、データ転送を失う間に初期CPU実行ストールで満たされた、ブロックトランザクションまたはキャッシュページに変換される。典型的には、データを待つ間にストールされたスレッドが全体的な作業負荷の一部でしかなく、かつそのスレッドが、しばしば、データブロックが転送される間にそれの実行を他のスレッドに譲ることができるとき、CPUは、それの様々なスレッドにわたって測定されるいくつかのストーリングを有する。その後、計算プロセッサは、アクセスレイテンシに起因する中断なく、データのブロック全体に対して効率的に働くことができる。マイクロコントローラが、より頻繁に、かつ典型的にはワードごとに、周辺メモリにアクセスしているとき、低速な周辺機器は、各ワードアクセスにおいて再びCPUをストールさせることになる。性能理由のために、マイクロコントローラは、典型的には、周辺機器を直接アタッチするか、またはCPUのそれ自体のバス構造に直接ブリッジされる。
【0046】
CPUバスの観念的な目的は、メモリ(または、メモリマッピングされた)データ転送を処理することである。しかし、通常は他の機能が必要とされ、したがって、この同じバスを介して実行される。これらのタスクは、バススレーブからのデータストール、トランザクションの結果(たとえば、okまたは不正アクセス)を示すスレーブからの応答、ならびに/あるいはアクセス目的がコードもしくはデータであること、アクセスがカーネルもしくはユーザアクセス特権からであること、トランザクションがセキュアデータ用であるかどうか、および/または書込みアクセスがバッファリングされることが可能であるかどうか(スレーブが低速である場合、スレーブ応答を待ってから次のトランザクションに移る必要はない)などの、転送目的/特権のバスマスタ表示からなる。
【0047】
周辺機器は、典型的には、時間制約型イベントの発生を示すことを可能にするために、マイクロコントローラによって割込みが使用される。周辺機器は、場合によってはCPUアクションを必要とする条件を示すために割込み要求(IRQ)信号を駆動することができる。マイクロコントローラCPUは、典型的には、割込みコントローラ、たとえば、それらが割込み保留レジスタの中に行われると様々なIRQライン上のイベントを登録する、ネスト型ベクトル割込みコントローラ(NVIC:nested vector interrupt controller)と対にされる。(ネスト型ベクトル割込み制御(NVIC)が、割込みを優先度付けし、CPUの性能を改善し、かつ割込みレイテンシを低減する方法であることに留意されたい。NVICはまた、他の割込みが実行されているとき、またはCPUがそれの以前の状態を復元するとともにそれの中断されたプロセスを再開するプロセスの中にいるときに発生する割込みを処理するための実装方式を提供する。)そのIRQラインに対する保留レジスタがセットされている間、そのIRQライン上での後続の変化は無視される。さらに、ポリシーは、そのIRQラインに関連するコードのブロックの実行を自動的に始めること(割込みハンドラ)などの、IRQアクティビティにハードウェア応答を提供すべき場所に入れられることが可能である。割込みハンドラを自動的に実行するようにプログラムされる場合、そのハンドラによる実行は、典型的には、関連する割込みイベントレジスタを自動的にクリアする。自動ハンドラを有効化しないことをCPUが選ぶ場合、CPUは、保留レジスタ自体を点検することができ、それをクリアしてIRQキャプチャリングをリアーム(re-arm)することができる。割込みコントローラが、そのような信号を受信するためのいくつかの入力を有して、マイクロコントローラ周辺機器は、典型的には、割込みコントローラへの個別化された信号としてそれらのIRQ表示を実施する。場合によっては、マイクロコントローラ周辺機器は、異なるIRQ信号上で異なるイベントを示すことなどの、複数のIRQ信号を提供することを期待してよい。
【0048】
IRQ信号は、典型的には、レベルベースまたはエッジベースとして表される。レベルベースの割込みは、典型的には、所期の解釈が1つまたは複数の未処理のイベントを周辺機器が有することである状況のために使用される。このことは、周辺機器が、シグナリングすべき複数の異なる種類のイベントを有することができ、かつそのような複数のイベントが同時に発生する場合があるときに、特に適切である。周辺機器は、典型的には、バスを介してマイクロコントローラにアクセス可能なレジスタの中の、未処理のイベント(割込みフラグ)にマークする。このレジスタの中で任意のイベントがマークされている限り、周辺機器はIRQラインをアサートする。CPUは、次いで、(応答性アクションを実行すること、またはメモリ状態を変更して後のいくつかのアクションのためにマークすることなどの)そのイベントを処理すると、バスアクセスによってこのレジスタの中からの1つまたは複数のイベントをクリアすることができる。割込みハンドラが存在しフラグレジスタの中に未処理のイベントがある場合、IRQラインが依然としてアサートされ、保留レジスタはさらなる処理のために再びセットされる。
【0049】
エッジベースの割込みは、データ0および後続するデータ1(立上りエッジ)などの、典型的にはIRQ信号上のデータ変化として、周辺機器から割込みコントローラにイベントとして通信される。この場合、割込みコントローラは、このシーケンスに応答して保留レジスタをセットすることだけを行うように構成されることが可能であり、周辺機器は、周辺機器イベントごとに1回だけこのシーケンスが配送されることを保証することができる。周辺機器からのメッセージが単一のイベントとして解釈されるべきであるとき(たとえば、イベントの数が正確にカウントされることを必要とする場合、またはIRQラインの非アクティブ化がいくらかの遅延の後に割込みコントローラに配送されることに起因して、割込みハンドラの偶発的な再エントリによって挙動が損なわれることになる場合)、エッジベースの割込みがより一般的に使用される。
【0050】
マイクロコントローラは、データ転送を自動化することを支援するためのダイレクトメモリアクセスコントローラを用いて実装されることが可能である。マイクロコントローラは、典型的には、ファーストパーティDMAではなくサードパーティDMAを実施し、その結果、メインメモリなどの他のロケーションとの間で移動されるべきデータを有する周辺機器は、バススレーブとしての周辺機器とともにバスマスタとしての必要とされる動作をこのコントローラが実施できるように、ある動作が必要とされることをDMAコントローラにアラートすることができる。サードパーティDMAは、実装コストがより低いが性能もより低い。DMAトランザクションは、CPU開始型または周辺機器開始型のいずれかでありうる。所望の周辺機器開始型トランザクションがあることを周辺機器がDMAコントローラにアラートするために、周辺機器によってコントローラへ駆動されるDMA(DRQ)要求信号を使用することが一般的である。コントローラは、次いで、CPUがその要求に割り当てているポリシーに従ってその要求に応答することができる。すでにそのポリシーに対するトランザクションに関与しないとき、コントローラは、DRQライン上のアクティブレベルを転送が行われるための要望として解釈する。(CPUが介入して保留転送をキャンセルすることなどの)いくつかの例外的な事例の外側では、応答性転送が行われるまで周辺機器が要求することを継続することが期待される。このことは、データバッファを所望のレベルに充満させるために十分な転送を行うこと、データバッファが後退されることが可能であるという表示または要求している周辺機器の動作に固有の他の条件を提供することでありうる。DMAコントローラがそのような信号を受信するためのいくつかの入力を有して、マイクロコントローラ周辺機器は、典型的には、個別化された信号としてDMAコントローラにそれらのDRQ表示を示す。場合によっては、マイクロコントローラ周辺機器は、異なるDRQ信号上で、異なるタイプの必要とされる転送を示すことなどの、複数のDRQ信号を提供することを期待してよい。
【0051】
DMAトランザクションは、1つまたは複数のAHBバスアクセスまたはバーストアクセスなどの好適なバストランザクションを使用してDMAコントローラが実施できる、固定長または可変長でありうる。たとえば、所与の周辺機器が固定長として要求ごとに32バイトのデータを常に転送することが可能である。他の場合には、周辺機器(ただし、コントローラではない)が、転送すべき所望のデータを知るように、各転送の長さは状況に依存することができる。サードパーティマスタがこの状況を処理することを可能にするための典型的な方策は、依然としてより多くのデータがトランザクションの中にある間、実装された周辺論理にDRQラインをアクティブレベルに保持させることである。コントローラは、次いで、転送の各ワードの後のDRQラインを点検することができ、データが配送されるのと同時に周辺機器がそれに対してDRQをアサート停止する、第1のバスサイクルにおける転送を中止することができる。この理由のために、バスデータと厳密に同じサイクルにおいてDRQのアサート停止がDMAコントローラに配送されることが有用である。そうでない場合、DMAコントローラは、間違った数のワードを転送することがある。固定長DMAトランザクションに対して、類似の考慮事項が使用されてよい。固定長DMAトランザクションの終了の近くで周辺機器がそれのDMA要求をアサート停止することになるなら、DMAコントローラによるバストランザクション完了とDRQアサート停止の到着との間の遅延差は、前のDMAトランザクションが完了した後、依然としてアサートされるべきDRQ信号をDMAコントローラに誤って認知させる場合があり、後続のトランザクションをDMAコントローラに間違って開始させる。
【0052】
図2Aは、システムの複雑度のうちのいくつかをマッピングする助けとなるための、追加の詳細を伴う既存の単一ダイアーキテクチャの構成要素レベル図である。
図2Aでは、マイクロコントローラダイ200は、複数のDATA BUS125、IRQ信号160、DRQ信号130、PMUインターフェース135表示、ならびにイベントおよび状態を表す他の信号を含む、可能なデータおよびイベントバスラインを表す、それの周辺構成要素へのいくつかの相互接続部220を実装する。このバスおよびラインは、相互接続部220インターフェース229を有するカスタムDSP論理211、相互接続部220インターフェース230を有するDMAコントローラ212、相互接続部220インターフェース231を有するRAM216、相互接続部220インターフェース236を有するFLASHメモリ213およびCPU217、ならびに相互接続部220インターフェース237を有するLV comms221、相互接続部220インターフェース238を有するLVセンサ222、相互接続部220インターフェース239を有するLVアクチュエータ223、相互接続部220インターフェース240を有するCAN/LIN224などの通信インターフェース、相互接続部220インターフェース241を有するHVセンサ225、および相互接続部220インターフェース242を有するHVアクチュエータ226などの、他のASIC論理などの、マイクロコントローラの他のサブシステムとインターフェースするために使用される。これらが実施形態の例にすぎず他の要素を含む場合があることに留意されたい。加えて、電力管理ユニットPMU205、CPUインターフェース234を有するデバッガ218、インターフェース235を介してクロック入力を提供するための発振器219、およびインターフェース227を介してカスタムDSP論理211とインターフェースする複合comms/センサ/アクチュエータ210を追加している。
【0053】
相互接続部220は、様々な構成要素間の通信を提供する。これらの通信は、典型的には、データバストランザクション(たとえば、AHB)、IRQシグナリング、DRQシグナリング、ならびにPMU制御および表示を含む。これらの相互接続部は、典型的には、CPU相互接続インターフェースなどの標準化されたインターフェースを使用して様々な構成要素によってアクセスされる。
【0054】
これらのインターフェースの低レベルの必要を支援するためのいくつかの組込み論理を、相互接続部220が含むことが異常でないことに留意されたい。たとえば、データトランザクション相互接続部125は、しばしば、バスマスタによって提示されるアドレスに対して、適切なバススレーブのためのデータバストランザクションのルーティングを支援するために、ブロックアドレス復号およびデータ多重化機能を含むことができる。他のプロトコルでは、アドレス復号機能は、各バススレーブによって独立して計算されることが可能であり、相互接続部220の中に含まれる論理は、データルーティングを支援するために、様々なバススレーブからのアドレス整合表示を利用する。複数のデータバスマスタがバストランザクションに同時に関与するための能力を提供するために、しばしば、相互接続部220の中に組み込まれたルーティングおよび競合解決論理とともに複数レーンバスファブリック(たとえば、マルチレイヤAHB)が実装される。さらに、クロック領域横断またはクロックレート差異がある場合には、相互接続部220の中にリタイミングまたは同期論理を配置することも一般的である。
【0055】
相互接続部220の使用の一例は、CPU217とLVセンサ222との間のAHBデータバス125トランザクションである。そのようなトランザクションは、CPU217がインターフェース236の中のAHBマスタ信号上でAHBトランザクションのためのAHBアドレスフェーズを発行することによって開始されることが可能である。相互接続部220の中に存在するブロックアドレス復号論理は、このトランザクションのためのアドレスフェーズの中で示されるアドレスが、LVセンサ222に割り振られたアドレスブロックの中にあることを復号する。相互接続部220は、次いで、インターフェース238の中でこのAHBアドレスフェーズをAHBスレーブ信号に提示する。後続のAHBデータフェーズは、要求されたトランザクションを、インターフェース236および238ならびに相互接続部220を通じてCPU217とLVセンサ222との間で実行する。データフェーズは、直ちに転送されるデータ、ストールの後に転送されるデータ、またはバススレーブがトランザクションエラーを示すことによって、転送されるデータがないという結果になる場合がある。トランザクションエラーは、正しい許可を伴わないトランザクションなどの許容されないトランザクションに対して、または他の理由のために、間違ったアドレスまたはデータサイズなどの奇形のトランザクションに応答して示されることが可能である。他のデータバスフォーマットは他のトランザクション結果を有する場合がある。他のバスマスタは同様に、相互接続部220を利用して、DMAコントローラ212がインターフェース230の中のAHBマスタ信号を使用するような、相互接続部220へのそれらのインターフェースの中のAHBマスタ信号を使用してトランザクションを開始することができる。他のバススレーブも、カスタムDSP論理211がインターフェース229の中のAHBスレーブ信号を使用するか、またはRAM216がインターフェース231の中のAHBスレーブ信号を使用するような、それらのインターフェースの中のAHBスレーブ信号を使用して相互接続部220を通じてトランザクションが行われることが可能である。
【0056】
相互接続部220の使用の他の例は、HVアクチュエータ226が、CPU217の中に位置する割込みコントローラをもたらす割込み要求を発行することである。HVアクチュエータ226は、それのインターフェース242の中の1つまたは複数の割込み要求ソース信号上で割込み要求を示すことができる。この信号は、相互接続部220を介してインターフェース236の中の割込み要求受信信号に提供されることが可能である。このことを達成するための1つの方法は、番号付けされた複数の割込み要求受信信号をインターフェース236の中で提供すること、およびインターフェース242の中の割込み要求ソース信号を、番号付けされたこれらの受信信号のうちの1つへルーティングすることによるものである。他のインターフェース上で相互接続部220を通じて接続される他の割込みソース信号が、次いで、インターフェース236の中の番号付けされた割込み要求受信信号へ異なってルーティングされることが可能である。他の割込み要求ソースは、カスタムDSP論理211がインターフェース229の中の信号を使用するような、それらのインターフェースの中の割込み要求ソース信号上での表示によって、相互接続部220を通じて割込み要求を示すことができる。他の割込みコントローラは、DMAコントローラ212がインターフェース230の中の信号を使用するような、それらのインターフェースの中のそれらの割込み要求受信信号を通じて、相互接続部220を通じて割込み要求を受信することができる。
【0057】
相互接続部220の使用の他の例は、DMAトランザクションがDMAコントローラ212を介してLV comms221とRAM216との間でデータを転送することである。LV comms221は、インターフェース237の中の1つまたは複数のDMA要求ソース信号を使用してこのトランザクションを実行する必要を示すことができる。相互接続部220は、この信号をインターフェース230の中のDMA要求受信信号へルーティングすることができ、転送が望まれることをDMAコントローラ212に示す。このことを達成するための1つの方法は、番号付けされた複数のDMA要求受信信号をインターフェース230の中で提供すること、およびインターフェース237の中のDMA要求ソース信号を、番号付けされたこれらの受信信号のうちの1つへルーティングすることによるものである。他のインターフェース上で相互接続部220を通じて接続される他のDMA要求ソース信号が、次いで、インターフェース230を介した信号として受信される、番号付けされたDMA要求へ異なってルーティングされることが可能である。DMA要求を受信すると、DMAコントローラ212は、次いで、インターフェース230の中のAHBマスタ信号、相互接続部220を介したインターフェース237および231の中のAHBスレーブ信号を介する、LV comms221およびRAM216を用いたAHBトランザクションなどの、応答性アクションを行うことができる。
【0058】
いくつかの実装形態では、CPU217は、構成要素との直接通信のための追加の接続を有することができる。CPU217は、専用インターフェース232を通じて直接フラッシュメモリ213にアクセスしてよく、専用インターフェース233を通じてRAM216にアクセスしてよい。このことは、より小さいレイテンシ、より高速な転送レート、およびインターフェース236を使用する、専用インターフェース上での相互接続部220を通じた転送を同時に行うための能力などの利点を可能にすることができる。
【0059】
多くのマイクロコントローラシステムは、必要とされるアクティビティがないときに電力を節約するために、電力シーケンシングおよび1つまたは複数のスリープモードなどの電力管理機能を含む。マイクロコントローラのCPUは、このスリープモードに入るためのコマンドを実行することができ、そうしたコマンドは、クロッキングを無効化すること、論理ブロックへの電力を無効化すること、メモリへの電力を無効化すること、アナログ構成要素への電力を無効化すること、ポートに供給される電源への電力を無効化することなどの、様々な電力節約動作をもたらすことができる。CPUは、それ自体をこのスリープモードに対して準備ができているようにさせるためにCPUが必要とする、どんなアクションも行うことができ、次いで(
図1を参照)、スリープが実行されるべきであることを示すために、PMUインターフェース135上でPMU205に示すことができる。PMU205は、このスリープを行うのに必要なステップを行うための論理を実装することができる。多くの場合、PMU205およびCPU217は、しばしば、シーケンスの中の動作の完了を示すために交換される認識応答を用いて、電力モード変更を行うための動作のシーケンスを行いうる。CPU217は、典型的には、PMU205とのこれらの相互作用を可能にするための(PMUインターフェース135の一部でありうる)専用インターフェース256を有する。パラメトリック構成用のデータバス信号、ソフトウェア通知用の割込み要求などの、相互接続部220への(PMUインターフェース135の少なくとも一部を実装してよい)さらに包括的なインターフェース283をPMU205が有することも一般的である。
【0060】
スリープを実行する前に、ソフトウェアは、どのリソースがスリープ中に無効化されるのか、およびどんな条件がプロセッサをスリープ状態からウェイクさせることになるのかなどの、ポリシーを設定することができる。ウェイクイベントを検出するための1つの一般の技法は、検出されると、選択された割込みのうちの1つまたは複数にこのウェイクアップを開始させることである。割込みコントローラ自体が、典型的には、スリープする回路構成の一部でありうるので、割込みコントローラの内部状態の一部は、ウェイクアップ割込みコントローラ(WIC:wakeup interrupt controller)の中にスリープさせられるべき領域の、外側の論理に転送されることが可能である。WICは、PMU205の論理の一部である。このWICは、次いで、適切な割込みアクティビティを検出してウェイクアップを開始するために、スリープ中にアクティブなままでいることができる。WICは、次いで、スリープが無効化されたリソースを再び有効化するために必要などんなステップでも行うように、PMU205に示すことができる。このことが完了すると、CPUは、アクティビティを再開するための表示が提供されることが可能である。アクティビティのこの再開の一部は、WIC状態の関連する部分をNVICに戻して転送することでありうる。このことは、割込みコントローラにおいてそれらの割込みを保留状態にさせることなどによって、様々な可能なイベントのうちのどれがウェイクアップを引き起こしたのかに関して、CPUに表示を提供することができる。
【0061】
ソフトウェア開発および障害分析を容易にするために、マイクロコントローラダイ200は、デバッガ論理218とともに実装されたデバッグポートとともに実装されることが可能である。このことは、通信インターフェースがアタッチされることを可能にすることができ、通信インターフェースは、次いで、コード実行を制御すること、レジスタ内容を検査すること、データバス上でトランザクションをマスタすること、PMU状態を制御することなどによって、マイクロコントローラダイ200の状態を制御および/または検査することができる。CPU217は、これらのデバッグ動作を可能にするための専用インターフェース234を実装することができる。
【0062】
図2Bは、完全な機能性を保持しながら、かつソフトウェアモデルへの必要とされる変更なく、単一ダイマイクロコントローラ200を2ダイシステムに分割する、一実施形態を示す。「完全な機能性を保持すること、かつソフトウェアモデルへの必要とされる変更なく」という原理が、開示する通信技法によって可能にされる。既存の手法では、これらの基準を満たさないことが起こる。単一ダイマイクロコントローラ200上に実装されていることになる構成要素が、代わりに、CPUダイ246およびASICダイ271を有するマルチダイシステムの中に実装される。CPUダイ246は、CPU217、RAM216、フラッシュメモリ213、およびDMAコントローラ212を実装する。ASICダイ271は、発振器265、低電圧通信周辺機器221、低電圧センサ周辺機器222、低電圧アクチュエータ周辺機器223、CAN/LIN通信周辺機器224、高電圧センサ225、高電圧アクチュエータ226、カスタムDSP論理211、それの関連するアナログブロック210を実装する。PMU205は、CPUダイ246上に実装されたPMUコントローラ244、およびASICダイ271上に実装されたPMU268に分割される。CPUダイ246は、そのダイ上の様々な構成要素間の接続性をもたらす相互接続部248を含む。ASICダイ271は、そのダイ上の様々な構成要素間の接続性をもたらす相互接続部272を含む。
【0063】
この例における各構成要素のためのダイロケーションのこの選択は、いくつかの利点を与える。CPU217、フラッシュ213、RAM216、およびDMAコントローラ212は、HVセンサ225、HVアクチュエータ226、CAN/LIN224、PMU268、および複合comms/センサ/アクチュエータ210などの、他の構成要素のうちのいくつかと同じ半導体プロセスで実装することが困難または高価である場合がある。複数のダイにわたってシステムを分散させることによって、各ダイは、そのダイ上に置かれる構成要素にとって適切な半導体プロセス技術で実装されることが可能である。さらに、CPUダイ246上に置かれる構成要素は相対的に包括的であるが、ASICダイ271上の構成要素は特定の適用例に、より固有である。この構成を使用することによって、異なる適用例のために選ばれた構成要素を有する異なるASICダイと対にされた同じCPUダイ246を他の製品が使用しながら、ASICダイ271と対にされたCPUダイ246をある製品が使用することが可能な場合がある。
【0064】
これらの構成要素のうちのいくつかをCPUダイ246上に、かつ他のものをASICダイ271上に置くことは、それらの多くが相互接続部220を介して単一ダイマイクロコントローラ200の中で互いに接続されていたので課題を提示する。相互接続部220が単一ダイマイクロコントローラ200用と同じであるが、相互接続部248、相互接続部272、およびダイ間信号261の組合せとして両方のダイにわたって分散されるように、一見すると簡単な解決策が、ASICダイ271上の構成要素のための相互接続部220信号のための専用ダイ間相互接続部261に与えられることになる。しかしながら、検討すると、必要とされる数のダイ間信号261は、実装するのに現実的でなくスケーリングできないので、この設計手法は典型的なシステムに対して課題を表す。この手法の他の欠点は、ダイ間信号261が、ASICダイ271上に位置する特定の構成要素に固有であり、そのため、CPUダイ246を異なる/改訂された構成要素を含む異なるASICダイと対にすることが、あらゆる新たなASICダイ271のためのCPUダイ246再設計を必要とすることである。
【0065】
開示する通信技法の一実施形態では、CPUダイ246とASICダイ271との間の接続性は、著しく少ないダイ間相互接続部262を用いて実装される。これらの相互接続部は、1対の通信ブリッジ、すなわち、CPUダイ上に位置するマスタブリッジ245、およびASICダイ上に位置するスレーブブリッジ264を通じて接続される。マスタブリッジ245は、それのインターフェース260上でCPUダイ相互接続部248にアクセスする。スレーブブリッジ264は、それのインターフェース201上でASICダイ相互接続部272にアクセスする。インターフェース260、マスタブリッジ245、ダイ間相互接続部262、スレーブブリッジ264、およびインターフェース201の組合せは、さらに多くのダイ間信号261が実装されているなら行われていることになるものと同様の方式で、CPUダイ246上の構成要素がASICダイ271上の構成要素と相互作用できるように、一緒に働く。さらに、CPUダイ相互接続部248へのCPUダイ構成要素インターフェースは、単一ダイ相互接続部220へのそれらの構成要素インターフェース用と同じでありうる。同様に、ASICダイ相互接続部272へのASICダイ構成要素インターフェースは、単一ダイ相互接続部220へのそれらの構成要素インターフェース用と同じでありうる。たとえば、CPUインターフェース236およびLVセンサインターフェース238の中のAHB信号は、それらが、異なるダイ上に位置するとともに、それぞれ、異なる相互接続部248および272にアタッチされても、それらが単一ダイ200実装形態の中にあったことになるのと同じでありうる。
【0066】
開示する通信技法の一実施形態では、トランザクションおよびメッセージ交換のためにダイ間相互接続部262が使用される。これらのトランザクションおよびメッセージ交換は、さらに多くの単純なダイ間信号261が実装されているならそうであったことになるのと同様の方式で、関連する変更をCPU相互接続部248とASICダイ相互接続部272との間で伝搬させる。たとえば、LVセンサ222用のインターフェース238の中の信号がデータ0からデータ1に変化することになるなら、この変化は、相互接続部248の中の均等な信号に伝搬されることが可能である。このことを遂行するために、相互接続部272は、スレーブブリッジ264がデータ遷移を検出できるインターフェース201にこの信号を伝搬させることができる。スレーブブリッジ264は、次いで、このデータ変更をマスタブリッジ245に通信するための、メッセージまたはトランザクションをスケジュールすることができる。マスタブリッジ245は、次いで、CPUダイ246の中の構成要素による使用のために相互接続部248の中でそれが利用可能となるように、インターフェース260を通じてこの信号のそれの同期したバージョンを調整することができる。同様に、マスタブリッジ245は、ダイ間相互接続部262およびスレーブブリッジ264を通じた同期のために相互接続部248信号の変化を観測することができ、ASICダイ271の中の構成要素による使用のために、インターフェース201を介してASICダイ相互接続部272上で、そのような信号の同期したバージョンを提供することができる。
【0067】
単純な信号は、このようにしてデータ変化伝搬によって同期されることが可能であり、他の実施形態では、相互接続部248および272の中の典型的な信号および信号グループの多くは、それらのシステム意図および特性を利用することによって同期される。たとえば、AHBなどのデータバストランザクションに関係する信号グループは、すでに構成要素間のトランザクションを示している。信号のこれらのグループによって暗示されるデータバストランザクションは、他のダイ上の均等なトランザクションとしてリマスタされるようにブリッジ間で特別にコーディングされたトランザクションのように、検出されることおよびブリッジ間で伝搬されることが可能である。連続したPMU状態変更を完了ハンドシェイクを用いて実施する信号グループは同様に、ブリッジ間の特別にコーディングされた適切なトランザクションに変換されることが可能である。割込み要求およびDMA要求は、これらのインターフェースの意図をシグナリングするためのさらに効果的な方式で、トランザクションまたはメッセージにコーディングされることが可能である。
【0068】
2つの構成要素が、それぞれ、CPUダイ246およびASICダイ271上にある、2ダイシステムにおいて実施されるような、CPU217とLVセンサ222との間の、前に説明したAHBデータバストランザクションを一例として使用する。前述のように、このトランザクションは、インターフェース236の中のAHBマスタ信号上のAHBトランザクションのためのAHBアドレスフェーズをCPU217が発行することによって開始される。相互接続部248の中に存在するブロックアドレス復号論理は、このトランザクションのためのアドレスフェーズの中で示されるアドレスが、ASICダイアドレス範囲に割り振られたアドレスブロックの中にあることを復号する。相互接続部248は、次いで、このAHBアドレスフェーズをインターフェース260の中のAHBスレーブ信号に提示する。これはマスタブリッジ245によって検出され、マスタブリッジ245は、次いで、ダイ間相互接続部262を通じて、対応するAHB固有ダイ間トランザクションをスケジュールする。スレーブブリッジ264は、このダイ間トランザクションを検出および復号し、インターフェース201の中のAHBマスタ信号上の均等なAHBトランザクションのための、それ自体のAHBアドレスフェーズを発行する。相互接続部272の中に存在するブロックアドレス復号論理は、このトランザクションのためのアドレスフェーズの中で示されるアドレスが、LVセンサ222に割り振られたアドレスブロックであることを復号する。相互接続部272は、次いで、このアドレスフェーズをインターフェース238の中のAHBスレーブ信号に提示する。このことは、2つの不完全なAHBトランザクション、すなわち、CPU217とマスタブリッジ245との間の一方、およびスレーブブリッジ264とLVセンサ222との間の他方をもたらす。実装形態に応じて、これらのトランザクションは、検出されたトランザクションをブリッジにわたって組み合わせて転送することによって、同じクロックサイクルにおいて発行されてよく、またはインターフェース231上で提示されるアドレスフェーズとインターフェース201上で提示される関連するアドレスフェーズとの間に、伝搬および/または調停レイテンシの1つまたは複数のクロックサイクルがあってよい。
【0069】
両方のAHBトランザクションは、次いで、それらのAHBデータフェーズを完了しなければならない。インターフェース236上でCPU217によって提供される任意の書込みデータが、相互接続部248によってマスタブリッジ245のインターフェース260にルーティングされる。このデータは、スレーブブリッジ264へのダイ間相互接続部262を通じたダイ間トランザクションのデータフェーズとして、ASICダイ271に伝搬され、スレーブブリッジ264は、次いで、これをAHBデータフェーズとしてそれのインターフェース201上で提供する。相互接続部272は、LVセンサ222による使用のために、このデータをインターフェース238にルーティングする。インターフェース238上でLVセンサ222によって提供される任意の読取りまたは応答データが、相互接続部272によってスレーブブリッジ264のインターフェース201にルーティングされる。このデータは、マスタブリッジ245へのダイ間相互接続部262を通じたダイ間トランザクションのデータフェーズとして伝搬され、マスタブリッジ245は、次いで、これをAHBデータフェーズとしてそれのインターフェース260上で提供する。
【0070】
ダイ間トランザクションフォーマットは、ブリッジされたAHBトランザクションの直接のコーディングである必要がなく、同じデータレートである必要がなく、または同じネイティブバス幅を使用している必要もない。インターフェース260および201の中の対応するAHBトランザクションが、正しい結果とともに完了するように、ダイ間トランザクションフォーマットがアドレスおよびデータフェーズを中継できることしか必要でない。いくつかの実装形態では、信号が、アドレスフェーズとデータフェーズとの間で共有されることが可能であるか、またはさらに小さい複数の転送に直列化されることが可能であるように、相互接続部262信号カウントを減らすことが望ましいことがある。AHBトランザクションブリッジングの目的のためにダイ間トランザクションのために使用される信号が、この目的のために独占的に使用されることも必要でない。それらの相互接続部262信号がAHBトランザクションを中継するのにビジーでない時間中、他の同期または通信ニーズは、異なってコーディングされたダイ間トランザクションによってそれらの同じ相互接続部262信号を使用することができる。
【0071】
留意すべき1つのことは、相互接続部248および272の中のブロックアドレス復号論理が2ステージブロックアドレスルックアップを形成することである。相互接続部248の中のブロックアドレス復号論理は、トランザクションアドレスがASICダイ271構成要素の中の特定のブロックにマッピングするという知識を必要とせず、それらのうちの1つでありうるアドレスにマッピングするという知識しか必要としない。インターフェース201上でAHBトランザクションがリマスタされると、相互接続部272の中のアドレス復号論理はアドレスを再点検することができ、ASICダイ271上の正しい構成要素にルーティングすることができる。このことは、異なるASICダイと対にされたとき、相互接続部248の中のアドレス復号論理が違ったものになる必要がないように、アドレスの大きいブロックをASICダイ構成要素に事前に割り振ることなどによって、CPUダイ246が簡単かつ包括的なアドレスデコーダを実装することを可能にすることができる。
【0072】
ダイ間同期の他の例は、HVアクチュエータ226からCPU217の中の割込みコントローラへの、前に説明した割込み要求である。HVアクチュエータ226は、それのインターフェース242の中の1つまたは複数の割込み要求ソース信号上で割込み要求を示すことができる。これは、相互接続部272を介してスレーブブリッジ264のインターフェース201の中の割込み要求受信信号に伝搬される。スレーブブリッジ264は、次いで、検出された割込みアクティブ化をマスタブリッジ245に伝搬させるように、ダイ間相互接続部262を介してメッセージまたはトランザクションをスケジュールすることができ、マスタブリッジ245は、それのインターフェース260の中の1つまたは複数の割込み要求ソース信号上で割込み要求を示すことによって応答する。この信号は、相互接続部248を介してインターフェース236の中の割込み要求受信信号に提供されることが可能である。一実装形態では、スレーブブリッジ264は、番号付けされた複数の割込み要求受信信号をインターフェース201の中に供給することができ、それらは各々、相互接続部272を介してASICダイ271上の様々な構成要素のインターフェースの中の割込みソース信号にルーティングされることが可能である。マスタブリッジ245は、次いで、インターフェース260の中に同じ数の割込みソース信号を実装することができ、相互接続部248を介してそれをCPUダイ構成要素に提供することができる。
【0073】
スレーブブリッジ264は、列挙型イベントメッセージをダイ間相互接続部262を通じて提供することによって、番号付けされた様々な割込み要求アクティブ化をマスタブリッジ245に通信することができる。そのようなすべての列挙型メッセージが割込みアクティブ化に対応することは必要でなく、その結果、他の列挙型メッセージは、他の目的のために使用されることが可能である。さらに、いくつかの場合には、行われているダイ間トランザクションがある時間においてダイ間トランザクション応答信号と共有することなどの、このメッセージングのために使用されるダイ間相互接続部262の中の信号を、他の目的のために使用されるその相互接続部の中の信号と共有することが可能である。さらに小さいレイテンシが望まれる場合には、このイベントメッセージパッシング機能のためにダイ間相互接続部262信号のサブセットを専用化することも可能である。
【0074】
本開示における他の場所で説明するように、異なるメカニズムを使用して割込み要求アクティブ化および非アクティブ化を処理することが好都合な場合がある。たとえば、インターフェース201において検出される割込み要求アクティブ化は、ダイ間相互接続部262を通じたイベントメッセージを介してCPUダイ246に伝搬されてよく、非アクティブ化は、ダイ間相互接続部262上での好適なダイ間トランザクションなどの他のメカニズムによって検出されてよい。
【0075】
ダイ間同期の他の実施形態は、DMAコントローラ212を介したLV comms221およびRAM216からのデータの、前に説明したDMA開始型転送である。LV comms221は、インターフェース237の中の1つまたは複数のDMA要求ソース信号を使用して、このトランザクションを実行する必要を示すことができる。相互接続部272は、この信号をインターフェース201の中のDMA要求および受信信号にルーティングすることができる。スレーブブリッジ264は、次いで、検出されたDMA要求アクティブ化をマスタブリッジ245に伝搬させるために、ダイ間相互接続部262を介してメッセージまたはトランザクションをスケジュールすることができ、マスタブリッジ245は、それのインターフェース260の中の1つまたは複数のDMA要求ソース信号上でDMA要求を示すことによって応答する。相互接続部248は、この信号をインターフェース230の中のDMA要求受信信号にルーティングすることができ、転送が望まれることをDMAコントローラ212に示す。DMA要求を受信すると、DMAコントローラ212は、次いで、インターフェース230の中のAHBマスタ信号を介したLV comms221およびRAM216を伴うAHBトランザクションなどの、応答性アクションを行うことができる。DMAコントローラ212と同じダイ上にRAM216が位置するので、それらの間の通信は、相互接続部248を通じて単一ダイ実装形態200と同様に進めることができる。DMAコントローラ212は、単一ダイ実装形態200におけるようにそれのインターフェース230上でデータバストランザクションを開始することによって、LV comms221とのそれの通信を開始するが、相互接続部248の中のブロックアドレス復号論理は、ターゲットスレーブ用のインターフェース260においてマスタブリッジ245を選択する。ダイ間相互接続部262を通じたデータバストランザクションは、次いで、前に説明したCPU217およびLVセンサ222データバストランザクションと同様の方式で進めることができる。DMAコントローラ212は、LV comms221が異なるダイ上にあることに気づいていなくてよい。
【0076】
一実装形態では、スレーブブリッジ264は、番号付けされた複数のDMA要求受信信号をインターフェース201の中に供給することができ、それらは各々、相互接続部272を介してASICダイ271上の様々な構成要素のインターフェースの中のDMA要求ソース信号にルーティングされることが可能である。マスタブリッジ245は、次いで、インターフェース260の中に同じ数のDMA要求ソース信号を実装することができ、相互接続部248を介してそれをCPUダイ構成要素に提供することができる。
【0077】
スレーブブリッジ264は、列挙型イベントメッセージをダイ間相互接続部262を通じて提供することによって、番号付けされた様々なDMA要求アクティブ化をマスタブリッジ245に通信することができる。他の列挙型メッセージが、前に述べた割込み要求アクティブ化などの他の目的のために使用されることが可能であるように、そのようなすべての列挙型メッセージがDMAアクティブ化に対応することは必要でない。メッセージシグナリングを割込みシグナリングについて説明したような他の機能と共有することによる、ダイ間相互接続部カウントの低減のための類似のメカニズムも使用されることが可能である。
【0078】
転送をやめること、または完了した動作後の後続の動作を実施しないことなどによって、DMAコントローラ212がDMA要求の非アクティブ化に応答できるように、サイクルが正確な方式でDMAコントローラ212のインターフェース230へのDMA要求表示を更新することが有用な場合がある。このことを可能にするために、ダイ間相互接続部262を介したマスタブリッジ245とスレーブブリッジ264との間のダイ間トランザクションに対する応答信号は、データフェーズ転送の一部としてDMA要求信号への更新を示すことができる。たとえば、データバストランザクションデータフェーズ中、LV comms221が、非アクティブなDMA要求ソース信号をインターフェース237上に提供する場合、スレーブブリッジ264は、このことをインターフェース201において検出することができ、この更新されたDMA要求情報をダイ間トランザクションデータフェーズの一部として含めるように変形態トランザクション応答を提供することができる。これはマスタブリッジ245によって検出されることが可能であり、マスタブリッジ245は、次いで、インターフェース260上のデータバストランザクションのデータフェーズが完了するのと同じサイクルにおいてこの更新を提供するように、それのDMA要求ソース信号をインターフェース260上で更新することができる。一実施形態では、DMAコントローラ212は、そのバストランザクションに対してどのDMA要求が対象であるのかを示すために、データバスアドレスフェーズの一部としてインターフェース230上で追加の信号を提供することができる。これは、次いで、追加のアドレスフェーズ信号として相互接続部248を介してインターフェース260にルーティングされることが可能であり、その結果、ダイ間相互接続部262を介したダイ間トランザクションが、この情報をスレーブブリッジ264に提供することができ、その結果、スレーブブリッジ264は、そのデータバストランザクションに対してそれのインターフェース201上のDMA要求のうちのどれを監視すべきかを知る。
【0079】
ダイ間同期はまた、電力管理機能を同期させるために使用されることが可能である。PMU268はASICダイ271上に位置するので、CPUダイ246上に位置するCPU PMUインターフェース256への直接アクセスを有しない。CPU217とPMU268との間でPMU状態変更およびハンドシェイクトランザクションが行われることを可能にするために、これらの状態変更およびトランザクションは、ダイ間相互接続部262ならびにブリッジ245および264を通じた、ダイ間トランザクションおよびメッセージに変換されることが可能である。このことは、PMUコントローラ論理244をASICダイ246の中に含めることによって達成されることが可能であり、ASICダイ246は、PMU268と相互作用するための同期ブリッジの一端を実際に形成しながら、PMU205であるかのようにCPU217と相互作用することができる。このことを実施するために、PMUコントローラ244は、PMU268がインターフェース281を使用してスレーブブリッジ264と通信する間、インターフェース258を使用してマスタブリッジ245と通信する。インターフェース256を通じて交換されたトランザクションおよびメッセージは、次いで、この経路に沿ってダイ間相互接続部262を通じてダイ間トランザクションまたはイベントに変換される。このことは、CPU217が単一ダイ実装形態のPMU205と相互作用するのと類似の方法で、CPU217がPMU268と相互作用することを可能にすることができ、どちらの場合でもCPU PMUインターフェース256が同じであることを可能にする。これらのダイ間トランザクションおよびイベントは、PMU使用のためのダイ間トランザクションコーディングを提供することによって、またはPMU使用のための列挙型イベントメッセージを作成することなどによって、他の目的のために使用されるワイヤと共有されることが可能であるので、ダイ間相互接続部262の中の専用のワイヤを必要としない。
【0080】
ダイ間同期はまた、ASICダイ271への(たとえば、セキュリティマネージャ267の中の)デバッグアクセスの位置を特定することを支援することができる。このことは、いくつかの点でマルチダイシステムにとって有益な場合がある。ASICダイ271上にPMU268が位置するので、極めて低い電力状態にあるとき、CPUダイ246全体がクロッキングおよび/または電力供給されないことが可能な場合がある。ASICダイ271上でデバッグアクセスが位置を特定される場合、外部デバッガは、デバッグセッション中に無クロックモードまたは無電源モードを無効化することによってCPUダイ246との通信を開始または維持できるように、インターフェース282を通じてPMU268と相互作用して電力モードの変更を可能にすることができる。外部デバッガはまた、インターフェース201上のAHBトランザクションをマスタするためにインターフェース280を使用してスレーブブリッジ264と通信することなどによって、相互接続部272を介してデータバストランザクションをマスタすることなどによって、CPUダイ217がクロッキングまたは電源供給されない間でも、ASICダイ271構成要素と相互作用することができる。このことはまた、障害分析、または製造中に部分的に組み立てられた製品のテストのためなどの、CPUダイ246が損傷されているかまたは存在しないとき、ASICダイ271構成要素を介したデバッガ制御を可能にすることができる。
【0081】
ASICダイ上でデバッグアクセスの位置を特定することの他の利点は、CPUダイ246上で使用される電圧からこのポート用の外部電圧シグナリングが切り離されることを可能にすることである。このことは、シグナリング電圧の数または範囲を減らすことによって、CPUダイ246の設計を簡略化することができ、異なるASICダイを有するCPUダイ246を使用する異なる製品が、異なるシグナリング電圧を有することも、可能にすることができる。
【0082】
デバッグアクセスに接続されたデバッガがCPU217と相互作用することを可能にするために、ダイ間相互接続部262を通じたダイ間同期が使用されることが可能である。このことは、CPUダイ246上にCPUデバッグ論理299を含めることによって達成されることが可能である。CPUデバッグ論理299は、単一ダイ実装形態200においてデバッガ論理218がCPU217と相互作用することになるのと同様の方式で、インターフェース234を使用してCPU217と相互作用することができる。このことは、ダイ間相互接続部262ならびにブリッジ245および264を通じたトランザクションまたはイベントにデバッグ動作を変換することによって達成されることが可能である。CPUデバッグ論理299は、マスタブリッジ245へのインターフェース257を使用してダイ間相互接続部262を横断する適切なシグナリングにこれらの動作を変換しながら、単一ダイ実装形態200におけるデバッガ218であるかのように、インターフェース234を使用してCPU217と相互作用することができる。ASICダイ271上のスレーブブリッジ264は、次いで、セキュリティマネージャ267の中のデバッグアクセス論理と相互作用して所望のデバッガ動作を実行するために、インターフェース280を使用することができる。この目的のために使用される相互接続部262信号は、デバッガ使用のためのダイ間トランザクションコーディングを提供することによって、またはデバッガ使用のための列挙型イベントメッセージを作成することなどによって、他の目的のために使用される信号と共有されることが可能である。いくつかの実施形態では、異なる幅の相互接続部262が、異なるASICダイおよび開示する能力発見とともに使用されてよい。たとえば、ローエンド製品は、さらに低速でピンカウントがさらに少ないデバッグを使用してよいが、ハイエンド製品ワイヤは、より詳細なトレーシングおよびデバッギングを可能にしてよい。
【0083】
デバッグアクセス論理のためのセキュリティは、ASICダイ271にセキュリティマネージャ267を追加することによって改善されることが可能である。このセキュリティマネージャは、CPU217デバッガ動作用のインターフェース280またはPMUデバッガ動作用のインターフェース282などの他のインターフェースにそれが提示されることを可能にする前に、アタッチされたデバッガが正しい許可を有することを検証するために使用されることが可能である。このことは、必要とされるセキュリティ資格証明を有するデバッガにしか1つまたは複数のデバッガ動作を可能にしないこと、製品がいくつかのライフサイクル状態にあるときにしか1つまたは複数のデバッガ動作を可能にしないこと、あるいは製品が必要とされる動作モードにあるときにしか1つまたは複数のデバッガ動作を可能にしないことを含むことができる。
【0084】
CPUダイ246構成要素がセキュリティポリシーに作用するとともにそれを記憶することを可能にするために、セキュリティマネージャ243がCPUダイ246上に含められることが可能である。セキュリティマネージャ243は、製品ライフサイクル状態、デバッガ許可資格証明、および他のセキュリティ構成などの、セキュリティポリシー構成を記憶するための、インターフェース252を介したフラッシュメモリ213などへの、不揮発性メモリへのアクセスが提供されることが可能である。セキュリティマネージャ267は、ダイ間トランザクションを使用して、ブリッジ245および264を通じるダイ間相互接続部262を通じて、セキュリティマネージャに同期したセキュリティポリシーを管理することができる。これらのダイ間トランザクションのために使用される相互接続部262の中の信号は、他の目的のために使用される信号と共有されることが可能である。
【0085】
単一ダイマイクロコントローラ上でデバッガ218に接続されていたデバッグ通信ポートは、今ではASICダイ271上に位置し、デバッグアクセス論理に接続される。
【0086】
相互接続部262の中のワイヤが、異なる同期目的のために共有されるために、ブリッジ245および264の論理の中の共有されるワイヤの様々な使用の間での調停および優先度付けを含むことが必要な場合があることに留意されたい。競合する複数のサービスが同期を必要とするとき、この調停論理は、他のサービスを行うことが時間割振りを待つ間、サービス作業指令に対して、様々なサービスの中から選択することができる。
【0087】
ASICダイ271上に、発振器265およびブリッジ264へのそれのインターフェース279を実装し、したがって、クロックはブリッジおよびCPUダイ246に拡張される。相互接続部262を介してデバッグアクセスを拡張するために、デバッグアクセスは、セキュリティマネージャ267を使用してインターフェース280を通じてブリッジマスタ264に接続する。PMU268は、ASICダイ271上で電力管理機能を提供することができ、同様にCPUダイ246のために電源を任意選択で供給することができ、セキュリティマネージャ267を使用して相互接続部280を通じてCPUダイ上のPMUコントローラ244と同期されることが可能である。AHBなどのバスインターフェース、IRQ信号、DRQ信号、および周辺PMU表示を含むことができる周辺インターフェース272は、ブリッジマスタ245および264ならびにインターフェース260および201を介して相互接続部262を通じてそれらの類似の相対物248に同期されることが可能である。(単一ダイ200上の対応する周辺機器と同じ実装形態を有してよい周辺機器221、222、223、224、225、および226に周辺インターフェース272が結合してよいことに留意されたい。)インターフェース248、257、および258の中の信号の数が、直接うまく相互接続するには多すぎる場合があるとき、ブリッジマスタ245および264は、このことを行っているという論理的効果261をもたらすように協調し、その結果、単一ダイマイクロコントローラ200上の同じ構成要素のために実装されていることになるのと同じやり方で、CPU217、DMAコントローラ212、ならびに周辺機器221、222、223、224、225、および226などの構成要素は、それぞれ、それらのインターフェース237、238、239、240、241、および242を実装することができる。
【0088】
ダイ間相互接続部262が、様々な相互接続部220サービスのための論理リンク262を可能にするために物理リンクを実行してよいことに留意されたい。
図2Bにおいて詳細にダイ間相互接続部262インターフェースが説明される。ダイ間相互接続部262インターフェースは、CPUダイブリッジマスタ245とASICダイブリッジマスタ264との間を接続する。この相互接続部262は、実際、それぞれのブリッジマスタ245および264内の2つのダイ間のインターフェース261の集合の拡張を可能にするとともに実施する。
【0089】
単一マイクロコントローラのこの分割が自明でないことを容易に理解することができ、接続するワイヤの数を著しく減らそうとすること、たとえば、単一ダイマイクロコントローラの内部相互接続性が、低減されたワイヤカウントとともに完全に拡張されようとすることを考慮に入れるとき、この問題を解決する必要を理解する。
【0090】
開示する通信技法では、それがワイヤの数を低減するとともにワイヤを信号のさらに小さいセットを通じて通信する論理構造と置き換えるような、全体的なバス+割込み+DMA構造を含めるために、マイクロコントローラアーキテクチャ、およびブリッジ245へのインターフェース260を導入する。さらに、PMU状態などの他のダイ間挙動が、このインターフェースならびにデバッガポート制御/データを横断して同期されることが可能である。これらのインターフェースは、インターフェース257を介したCPUデバッグ299、およびインターフェース258を介したPMUコントローラ244などの、他の制御装置を用いて獲得される。(PMUコントローラ244、インターフェース258、マスタブリッジ245、ダイ間相互接続部262、スレーブブリッジ264、インターフェース280、セキュリティマネージャ267、インターフェース282、およびPMU268が、PMUインターフェース256と同じ機能を実行することに留意されたい。また、デバッグセキュリティの明示的な相対物が
図2Aに示されないことに留意されたい。)この論理構造は、除去されたこれらのワイヤが存在するかのように、かつマイクロコントローラファームウェアの完全な制御の下で、所望の論理挙動を維持しながら通信相互接続部を最小化することにつながる。このことは、周辺機器またはCPUの論理または挙動への著しい変更を必要とすることなく相互接続信号カウントを小さく保ちながら、複数のダイおよび/またはパッケージを使用してマイクロコントローラシステムが実装されることを可能にする。
【0091】
図3では、単一ダイマイクロコントローラを2つのダイ、すなわち、CPUダイ246とASICダイ271とに分割するために、
図1で説明した主なインターフェースを使用する。単一ダイマイクロコントローラの完全な機能性を維持しながら、接続するワイヤの数をどのように減らすべきかを理解するために、以下のインターフェース、すなわち、バスインターフェースAHB330、IRQ160およびDRQ130を含むことができるEVENTS335、PMU同期340、ならびにDAP345に焦点を当てる。(バスインターフェースAHB330が、周辺機器がそれに対してASICダイ271上に配置されている、インターフェース135のサブセットを通信してよいことに留意されたい。ブロックアドレス指定が分散的な方式で処理されているので、限定されない数の周辺機器がASICダイ271上にあってよい。その上、EVENTS335は、周辺機器がそれに対してASICダイ271上に配置されている、または包括的なCPUダイ、ASICダイ271上に配置されてよい周辺機器に対する割振りのための、DRQ130およびIRQ160のサブセットを通信してよい。さらに、PMU同期340は、PMUコントローラ244によって処理されない、インターフェース135のサブセットを通信してよい。典型的には、クロックゲーティングおよび/または局所的な電力ゲーティングは、PMUコントローラ244によって処理されてよいが、他のPMU機能は、ASICダイ271との相互作用を伴ってよい。さらに、DAP345は、インターフェース280およびデバッグアクセスポートを通じて処理され得るポートインターフェース140のサブセットを通信してよい。)一実施形態では、(クロックソース115からクロック逓倍器およびmux110に提供され、かつブリッジ264またはブリッジ365にさらに提供され得る、番号付けされていないクロックでありうる)クロック317を提供するために、ASICダイ271上にクロックソース315(または、クロックソース115)があってよく、それらは、(以下で説明するように、クロック逓倍を処理するためにmux310からブリッジ350に追加の同期信号を伝達してよいが、さもなければ、クロック逓倍器およびmux110と類似の機能を有し、いくつかの実施形態では、クロック逓倍器およびmux110でありうる)CPUダイクロック逓倍器およびmux310に拡張されることが可能である。一実施形態では、ブリッジ/serdes350およびブリッジ/serdes365は、それぞれ、リタイミングおよびI/Oインターフェース355および360を使用して、ダイ間論理相互接続部262を通じて接続される。ブリッジ/serdes350は、CPUダイインターフェース330、335、340、および345にアタッチされること、ならびにCPUダイインターフェースクロック325が提供されることが可能である。ブリッジ/serdes365は、ASICダイインターフェース370、375、380、および385にアタッチされること、ならびにASICダイインターフェースクロック317が提供されることが可能である。(ASICダイインターフェース370、375、および380がASIC機能390に関係するシグナリングを通信し、インターフェース385がDAP395と通信することに留意されたい。これらのインターフェースはインターフェース330、335、340、および345の相対物である。)2つのブリッジ350および365は、CPUダイインターフェースを拡張しそれらの対応するASICダイインターフェースに同期させるために、相互接続部262を通じて通信する。
【0092】
概して、ユーザおよび/またはプログラマーが単一ダイマイクロコントローラとしてそれをプログラムできる(かつ、それを参照する)、2つ以上のダイを伴うマイクロコントローラを開発することが課題である。さらに、開示する通信技法は、それらが同じダイ上にあったならそれらが使用していることになる通常のマイクロコントローラインターフェースへの変更を伴わずに、IPが第2のダイ上に置かれながらマイクロコントローラの中に集積されることを可能にする、ブリッジの概念を使用する。言い換えれば、ブリッジ350およびそれの相対物365は、それらが互いに直接接続される両側(ソフトウェア/CPUおよびハードウェア周辺機器)への外観を生み出す。さらに、ASICダイ271上のハードウェアインターフェースは、CPUと同じダイ上に実装されている場合と意図的に同じである。
【0093】
一実施形態では、AHBバス330は、以下のものからなる少なくとも115本の信号を有する。
HCLK(クロック)
HRESETn(バスリセット)
HREADY(データフェーズがストールされず、そのため、コマンドフェーズが登録すべきという、表示)
HADDR[31:0](32ビットアドレスバス)
HPROT[3:0](バスアクセスコンテキスト情報)
HTRANS[1:0](転送タイプ)
HSIZE[1:0](転送サイズ)
HWRITE(転送方向)
HBURST[2:0](バーストタイプ)
HMASTLOCK(ロックされたシーケンスの表示)
HNONSEC(セキュアアクセス対非セキュアアクセス)
HWDATA[31:0](書込みデータ、マスタからスレーブ)
HRDATA[31:0](読取りデータ、スレーブからマスタ)
HREADYOUT(データフェーズを完了する準備ができているというスレーブ表示)
HRESP(データフェーズをエラーとともに完了すべきかどうかのスレーブ表示)
(各スレーブがHREADYOUTのインスタンスを有することに留意されたい。したがって、インターフェース237、238、239などの各々は、それ自体のインスタンスを有する。バス論理は、これらの信号をHREADYブロードキャスト信号の中に多重化してよい。その上、各スレーブは、HRESPおよびHRDATAのそれ自体のバージョンを提供してよい。したがって、インターフェース237、238、239などの各々は、そのような出力を提供してよい。バス論理は、これらの信号を多重化して、たとえば、CPUがバスマスタであるときにインターフェース236上でバスマスタに提供される、非多重化信号の単一のセットにしてよい。)
【0094】
さらに、典型的なコントローラは複数の周辺IRQチャネルを有する。一例として、ARM Cortex M4は、240個の周辺IRQチャネルを提供することができる。DMAコントローラは、典型的には、8~32個のDRQチャネルを有することができる。割込みがスリープからウェイクアップすることを可能にするために、本実装形態は、各々がPMUインターフェースの中のIRQセットと同じ幅の、信号の追加のセットを必要とする。連続的にスリープモードに入ることおよびスリープモードから出ることをサポートするために、さらに多くの信号がある必要がある。セキュリティポリシー同期およびデバッグポートは、通常、さらなる信号を必要とすることになる。ダイ間のこれらの信号を専用のワイヤと直接接続することは、したがって、コストおよび/または製造問題に起因して100本のワイヤでさえ不可能であることになる実装にとって実現不可能であることになる。これらの信号が、個々のダイ上の相互接続部248および272上に存在してよいが、ダイ間相互接続部262を通じたメッセージングを介して渡されてよいことに留意されたい。
【0095】
一実施形態では、(たとえば、典型的にはバスストールがなく、IRQ/DRQおよびPMUサポートに対してほとんどレイテンシがない)完全な実装形態は、42本のワイヤを用いて1つまたは複数の機能を実装してよい。あるいは、(わずかにさらに低速でありうる)他の実施形態は18本のワイヤを使用してよい。DDRバージョンが、類似の性能を有する10ワイヤ実装形態までさらにこれを低減してよいことに留意されたい。
【0096】
16個の割込みを可能にしDMAまたはPMUサポートがないシステムのための他の実施形態は、3本のワイヤを用いて実装されてよい。この手法は低速でありうるが、多くのマイクロコントローラ適用例は、周辺アクセスのレイテンシに対応することができる。
【0097】
図4は、ワイヤのセットが最小のまたは縮小された、2ダイシステム間のインターフェースの一実施形態の選択された詳細を示す。CPUダイ246はCPUダイブリッジ350を含み、ASICダイ271はASICダイブリッジ365を含む。これらのブリッジは、信号NCLK420、NDIO421、NPHASE422、NRESP423、およびNEVT424を有する相互接続部262と接続される。相互接続部と組み合わせられたブリッジは、透過的な方式で、2つのダイ上に位置する構成要素間で様々なトランザクション、イベント、およびサービスを同期させるために使用されることが可能である。信号NDIO421、NRESP423、およびNEVT424は、いくつかの実装形態ではマルチビット信号でありうるが、他の実装形態では単一ビット実装形態であってもよい。
【0098】
相互接続部262は、3つの信号グループに分割される。第1のグループは、残りの信号上でのデータ転送用の同期させるクロックとして働くことができる信号NCLK420を含む。NLCK420は、ASICダイ271上のクロックソース315からのクロック459によって提供されてよく、クロック458に、次いで、続いて、CPUダイ246上のクロック逓倍器401、クロックFCLK402に相当してよい。第2のグループ、すなわち、トランザクション相互接続部460は、NDIO421、NRESP423、およびNPHASE422を有することができ、ASICダイ271によって受信および/または応答されている間にCPUダイ246によって開始されるトランザクションを実施するために使用される。この相互接続部のための例示的な使用法は、AHBインターフェース437を通じて接続されたAHBマスタ405とAHBスレーブとの間などで、CPUダイ246上のメモリマップバストランザクション330をASICダイ271上のリマスタされたトランザクション370に中継するためのものである。他の目的のためにCPUが開始する必要があってよい他のトランザクションも、トランザクション相互接続部460上でトランザクションが行われる。第3のグループは、イベント中継相互接続部NEVT424を含み、主にCPUダイ246上のイベント335にASICダイ271からイベントメッセージ375を伝搬させるために使用される。他のサービスは、CPUダイ246 PMU状態およびイベント340をASICダイ271 PMU状態およびイベント380と、またはCPUダイデバッグインターフェース構成およびイベント345をASICダイデバッグインターフェース構成およびイベント385と同期させることなどの、トランザクション相互接続部460とNEVT信号グループの両方を利用することができる。
【0099】
この例は、CPUダイ246およびASICダイ271上でAHBフォーマットバスを使用するが、ブリッジ350およびブリッジ365へのバスインターフェースのために他のフォーマットバスが使用されることが可能である。さらに、バスインターフェースのうちの全部または一部が、互いに異なるフォーマットであることも可能である。
【0100】
ダイ間ブリッジは、エンドユーザにとって大きく透過的な方式でのマルチダイコントローラの実装を可能にする。このコンテキストにおける透過性は、状況によるかまたは系統的なレイテンシではなく、機能透過性として理解されるべきである。2つのダイ間でいくつかの標準的なマイクロコントローラインターフェースをブリッジすることによって、周辺機器は、2つのダイのうちのどちらの中にそれらが実装されるのかに、大きくアグノスティックとなるように実装されることが可能である。このシステムは、マスタ/スレーブ関係で2つのダイをブリッジする。CPUダイ246は、少なくとも1つのマイクロコントローラコア(CPU)、およびそれの緊密に結合されたメモリを含むことが期待される。CPUダイ246はまた、1つまたは複数のDMAコントローラ212を含むことができる。
【0101】
CPUダイ246は、リードフレーム(または、他のタイプのスタイルのパッケージング)へのいかなる直接接続も有する必要がない。ASICダイ271は、外界へのCPUダイ246のゲートウェイでありえ、CPUへの透過的な方式でCPUダイ246上に実装されない製品機能を完成するために必要とされるどちらのインターフェースおよび論理でも実施するための、メモリマップ周辺機器を含むことができる。さらに、CPUダイ246は、PMU回路構成および関連する論理の全部または一部がASICダイ271上に実装されることが可能となるように、多くの事例では、いかなる電力管理アナログ内容も有することを必要とされない。CPUダイは、依然としてそれが単一ダイシステムであるかのようにPMU内容を制御すべきであり、分散されたPMUシステムに対する必要につながる。
【0102】
ダイ間でブリッジされるインターフェースは、AHBバス、割込み、DMA要求、ならびにPMU要求および認識応答を含んでよい。さらに、論理ブリッジは、少なくとも、AHB、IRQ、DMA、PMU、およびセキュリティを含んでよい。これらの論理ブリッジは、トランザクション相互接続部460およびイベント中継相互接続部NEVT424を含む、ダイ間相互接続部を通じてトランザクションが行われる。トランザクション相互接続部460は、AHBトランザクション330をリマスタされたAHBトランザクション370にブリッジするために、ただし、非AHB制御コマンドを提供するためにも、たとえば、PMU状態340をPMU状態380に同期させるためにも、使用されることが可能である。CPUダイ246は、複数のAHBマスタ405および406がASICダイ271上のASICダイAHBトランザクション370にリマスタされるように、AHBトランザクション330を処理することが可能であるが、多くの実装形態は、単一のAHBマスタ405のためのサービス作業しか実施しない場合がある。ASICダイ271は、AHBトランザクション370を複数のAHBマスタインターフェース437および436上にリマスタすることができるが、多くの実装形態は、1つのマスタインターフェースしか実装しなくてよい。
【0103】
トランザクション相互接続部460は、AHBバストランザクション、PMU状態変更、DMAおよびIRQ再ポーリングならびに/またはセキュリティなどの様々なサービスのための同期を行う。このことは、I/O355およびI/O360を通じてトランザクション相互接続部460によって接続されるPHY415およびPHY426を含む、物理レイヤトランザクションブリッジを実装することによって遂行される。このことは、それらのAISCダイ271インターフェースと同期させるための、CPUダイ246インターフェース間のトランザクション交換を可能にする。たとえば、AHBスレーブインターフェース405および406に提示されるトランザクションは、AHBマスタインターフェース437および436上の適切な類似のトランザクションにリマスタされることが可能である。同様に、PMUトランザクションインターフェース404に提示されるPMU動作は、PMUトランザクションインターフェース438上の均等なトランザクションにリマスタされることが可能である。DRQ同期論理414は同様に、インターフェース465を通じてDRQ同期論理428と通信するために、インターフェース448を使用してトランザクションを実施することができる。IRQ同期論理451は、インターフェース474を使用するIRQ同期論理431へのインターフェース449を使用してトランザクションを実施することができる。PHY415によって符号化およびシーケンス化されるような、トランザクション相互接続部460上でのシグナリングは、トランザクション相互接続部460が、関連するインターフェースにトランザクションをルーティングすることを可能にするための、PHY426によって復号される情報を提供する。一実施形態では、この情報は、コマンドフェーズ転送の一部として符号化される。イベント中継相互接続部NEVT424は、列挙型ASICダイイベント375をCPUダイイベント335に渡すために使用されることが可能である。使用は、割込みの転送およびDMA要求アサーションを含むことができる。他の使用は、PMU状態変更およびイベントを伝搬させるための、またはASICダイ271からのリセットをCPUダイ246に強制するための、PMU同期のためのものである。
【0104】
割込み要求同期は、ASICダイIRQインターフェース433上で検出される割込み要求をCPUダイIRQインターフェース475上の対応する割込み要求に同期させることを担当する。イベントベースの割込みタイプを使用する割込みの場合、この同期は、検出されたIRQアクティブ化を列挙型イベントとして変換することによって、イベント中継相互接続部424のみを使用して遂行されることが可能である。レベルベースの割込みタイプを使用する割込みの場合、この同期は、トランザクション相互接続部460へのアクセスを必要とする場合がある。割込みコントローラが、いずれかのIRQ相互接続部475において、または構成SFRバンク417におけるプログラミングとして、構成情報を提供する場合、各割込みラインは、割込みごとに正しい挙動を行うことができる。
【0105】
DMA要求同期は、ASICダイDMAインターフェース434上のASICダイ271 DMA要求を、CPUダイ246 DMAインターフェース407の中の対応するDMA要求にシャドーイング(shadowing)することを担当する。DMA要求がレベルベースであるので、1対のステートマシンが、DMAコントローラ212の必要を満たすのにCPUダイ246 DMA要求ラインレベルの知識が適切であることを保証するように協調する。そのことは、この機能を実施するためにトランザクションとイベント通信リンクの両方へのアクセスを有しなければならない。
【0106】
いくつかの実施形態では、クロックスキューまたはクロック周波数差を処理することなどの、I/O355および/またはI/O360の中に任意選択のリタイミング論理を追加することが好都合な場合がある。
【0107】
プロトコルは、複数の相互接続幅を用いて実装されることが可能であり、一方は、多く相互接続部を実装するとともにダイ間通信用のメカニズムのようなフリップバンプ組立により適しており、他方のインターフェースは、より小型のボールグリッドアレイを可能にすることなどの、またはボンドワイヤ相互接続状況のために、ピンのサブセットを利用して実装用の相互接続部カウントを減らす。より大きい例示的なピンリストは、NCLK420が単一の信号であること、ならびにトランザクション相互接続部460およびイベント中継相互接続部424のためのマスタインターフェースクロックを含む。マスタインターフェースクロックはまた、CPUダイ426内部論理またはクロック生成器およびインターフェース信号のための、タイミングソースとして使用されることが可能である。トランザクション相互接続部460は、NPHASE422、NDIO421、およびNRESP423を含んでよい。NPHASE422は、たとえば、単一のビットであり、NDIO421コマンド/データフェーズ制御を行うことができる。NDIO421は、たとえば、32ビットであり、コマンド/データ内容である。NRESP423は、たとえば、3ビットであり、スレーブからのトランザクション応答、ならびにフロー制御を提供することができる。ASICからCPUへのイベント中継相互接続部は、NEVT424を含む。このインターフェースは、1つまたは複数の転送サイクルの中で所望の数の列挙型イベントをコーディングするのに好適な幅でありうる。
【0108】
これらの信号は、インターフェースクロックNCLK420によって同期されることが可能である。一実施形態では、クロックは、ASICダイ271からCPUダイ246に提供されることが可能であり、他の実施形態では、クロックは、CPUダイ246によってASICダイ271に提供されることが可能であり、または両方のダイが他のソースによって提供されることが可能である。一実施形態では、インターフェースクロックは、周波数が同じクロックを有することによって、またはFCLK402をNCLK420の倍数にさせることなどによって、(そのダイのバスクロック、たとえば、HCLKのためのソースである)CPUダイ246クロックFCLK402に同期されることが可能である。同様に、ASICダイ271論理は、NCLK420に同期されることが可能である。
【0109】
NCLKの両方のエッジにおいてNDIO421データを転送することによるなどの、ダブルデータレート(DDR)シグナリングをそれらの相互接続信号に対して使用することによって、相互接続部の全部または一部のワイヤカウントを減らすことが可能である。NRESP423およびNEVT424などの他のインターフェースも、相互接続部カウントを減らすためにDDRを使用することができる。
【0110】
CPUダイ246 FCLK402がNCLK420の倍数である場合、NCLK420からFCLK402を生成するために、CPUダイ246上でクロック逓倍器401が使用されることが可能である。ダイ間相互接続部のタイミングを協調させるために、クロック逓倍器401は、FCLK402のサイクルごとにNCLK420とFCLK402との位相関係を示す信号を、CPUダイブリッジ350に提供することができる。一実装形態では、クロック逓倍器401は、次のFCLK402エッジもNCLK420のエッジであることを示す、FCLK402に同期された論理信号RE_STRB416を提供することができる。シーケンサ/PHY415論理は、次いで、CPUダイ246の非PHY構成要素の中へのシグナリングがFCLK402レートで挙動を行うことができる間、この信号を使用して、NCLK420エッジにおいて発生する、相互接続部論理との間の更新を協調させることができる。
【0111】
トランザクション相互接続部460を介したトランザクションは、コマンドフェーズおよびデータフェーズとして実施される(データフェーズを有しないコマンドはデータフェーズをスキップする)。NDIO421通信インターフェースは、ワイヤ低減を可能にするためにステートフルな双方向ドライバから作成される。コマンドフェーズ中、その方向はCPUダイ246からASICダイ271である。コマンドフェーズ内容は、データフェーズが必要とされるかどうかを、またそうである場合、データ方向がどうであるべきかを、PHY426に示すようにコーディングされる。コマンドは、どんな種類のトランザクションが望まれるのか、および実施されるべきAHBアドレスフェーズ情報または所望の非AHBトランザクションについての情報などの、そのトランザクションにとっての関連する詳細を示す。AHBバストランザクションを実施するトランザクションの場合、これは、アドレス、読取り/書込み、転送すべきバイト数、転送のアクセス特権などを含む。他のトランザクションは、どんな種類の転送なのかを示すための列挙型フィールドを有するコマンドフェーズコーディングを使用することができ、コマンドデータの残部は、その列挙型コマンドタイプに従って復号される。データフェーズは、(データフェーズが実行されるべきであることをコマンドフェーズ内容が示すコマンドのための)トランザクションのペイロードを含む。
【0112】
これらのトランザクション相互接続部460トランザクションは、双方向NDIO421信号およびASICからCPUへのNRESP423信号を用いて実施されることが可能である。NDIO421は、コマンドおよびデータフェーズ内容を伝搬させるが、NRESP423は主に、データフェーズフロー制御と一緒に、ただし、ASICからCPUに他の情報を提供するためにコマンドフェーズが任意選択で使用されることが可能である間に、(OK、ERRORなどの)データフェーズ応答を提供する。バーストトランザクションおよび同期を容易にするために、CPUからASIC信号NPHASE422への追加の信号が使用されることが可能である。
【0113】
BUSトランザクションに割り振られる相互接続部の数は、コスト対レイテンシをトレードオフさせるように調整されることが可能である。NDIO421を介したコマンドおよびデータフェーズ転送の(例示的な)未加工の幅は32ビットである。いかなる顕著な(CPUへの)レイテンシも伴わずに32ビットAHB(または、他のパイプライン式の)インターフェースを実装する一実施形態では、NDIO421は32ビット幅でありうる。パイプライン式CPUバスは、前に発行されたコマンドフェーズに対するデータフェーズから引き上げるのと同時に「次の」データフェーズに対してコマンドフェーズトランザクションを発行するので、低レイテンシが達成される。そのため、周辺アクセスのためのコマンドフェーズおよびデータフェーズは、異なるバスクロックサイクルにおいて行われ、そのため、NDIO相互接続部は、1つのNCLKサイクルにおけるコマンド移送および後続のサイクルにおける関連するデータ移送のために使用されることが可能である。コンパイルされたコードの通常の挙動に起因して、(CPUが次のアクセスアドレスを計算する必要があるので)連続する2つのサイクルにおいてCPUが非メモリアドレスにアクセスすることはほぼ不可能である。一実施形態では、コマンドフェーズ中、ASICダイ271に命令するために、32ビットまでのコマンドフェーズ内容がNDIO相互接続部421上でCPUダイ246によって提供されることが可能である。コマンドがデータフェーズを示す場合、ASICとCPUの両方が、後続するデータフェーズに対するデータ方向を調整し、(32ビットまでの)データが、データフェーズとして32個のNDIO421信号を使用して転送される。
【0114】
一実施形態では、AHBバス動作を実施するために、コマンドフェーズ内容は、読取り/書込みデータ方向のための1ビット、データ転送サイズのための2ビット(8、16、32、または特殊なビット数)、アクセスアドレス(1MB)の20ビットとして割り振られることが可能である。これは、いくつかの互いに理解されたASICダイベースアドレスからのアドレスオフセット、および/または転送についての9ビットまでの追加情報として扱われることが可能である。
【0115】
利用可能なコマンドまたはアドレス空間を拡張するために、第1のコマンドバスサイクルにコーディングされる情報は、第2のバスサイクルに対する必要を示すことができる。この実施形態では、拡張されたコマンド内容のうちの、組み合わせられた64ビットが送信されることが可能である。たとえば、上記の例における追加の予約済みビットのうちの1つは、ベースアドレスから1MBよりも大きいオフセットを有するアドレスを示すために使用されることが可能である。アドレスの20個のLSBは、通常通り第1のコマンドサイクルにおいて転送することがあり、第2のバスサイクルは、残りのMSBを転送するために使用される。ブリッジのCPU側は、CPUのバスアドレスオフセットを点検することができ、それが20ビットで表現されることが可能である場合、より効率的な単一サイクルコマンドを発行することができる。そうでない場合、それは第2のサイクルに対する必要を示すことができ、残りの情報を提供することができる。低い方の1MBの中で最も一般的に使用されるアドレスの位置を特定するための、ASICダイ271の中のアドレス空間の構成によって、ほとんどのアクセスが、次いで、より短いコマンドバージョンを使用することができる。同様に、追加の転送情報のために利用可能なビットは、様々なAHBアドレスフェーズ信号にとってのいくつかの候補を符号化するのに不十分である。コーディングのうちの1つが、追加コマンド内容を提供するために追加のコマンドフェーズサイクルを追加する必要を示すように、これらのビットをコーディングすることによって、他の単一サイクルコーディングは、これらのAHB信号に対して最も一般的に使用される値を表現するために使用されることが可能であり、その結果、第2のコマンドフェーズ転送は、まれにしか必要とされない。
【0116】
拡張されたかつ/または代替のコマンドを示すための他の手法とは、代替のコマンドフォーマットを示すために、通常のコマンド信号のうちの1つまたは複数のコーディングされていない値を利用することである。たとえば、上記の例では、転送サイズにとっての3つの候補を表現するために使用される2ビットがある。この2ビットコーディングの第4の(本来なら不正な)値を使用することは、コマンドコーディング全体が代替の方法で扱われるべきであることをシグナリングすることができる。このことは、バス転送についてのさらに多くのまたは異なる情報を提供するために、ただし、バス動作(CTRLコマンド)からマッピングされない、CPUダイ246によって開始されるトランザクションに関与するためにも使用されることが可能である。たとえば、CPUからASICにPMU状態変更表示がシグナリングされることが可能である。これらのCTRLトランザクションは、コーディングのいくつかのサブセットに対してデータフェーズがスキップされるようにコーディングを有することができる。このことは、コマンドバスサイクルのみを使用するための、頻繁だが簡潔なCTRLトランザクションを可能にすることができ、バス上で費やされる時間を短くする。他のCTRLコーディングは、データフェーズを示す場合があり、そのトランザクションに関連するデータを転送するためのデータ転送を実行する場合がある。
【0117】
コマンドフェーズは、転送についての特別なセキュリティまたはシーケンシング情報を提供することができる。いくつかのバストランザクションは、CPUダイ上でいくつかの実行特権および/またはいくつかの許可済みのバスマスタを伴って実行中のコードのみに対して許可されることが可能である(たとえば、CPU2およびDMAコントローラ212が許可されないように、CPU1のみによって実施されることが可能である)。これらの特別な許可を必要とするバストランザクションの場合、ブリッジのCPU側は、CPUダイ246 AHBスレーブインターフェース405上に存在するものとしてこれらの条件を観測することができ、拡張されたコマンドサイクルを利用して、伝搬に対するこの追加のトランザクション情報をASICダイAHBマスタインターフェース437に通信することができる。
【0118】
コマンドフェーズが実行すると(かつ、コマンドコーディングがデータフェーズ用を示す場合)、NDIO421信号は、データを転送するために使用されることが可能である。データ方向がASICからCPUである(読取り)場合、両方のダイは、コマンドフェーズ完了の後、NDIO421上のデータ方向を変更する。データ転送は、次いで、1つまたは複数のサイクルを使用して、関連するデータを転送することができる。典型的な32ビット単一バス転送を実施するために、32ビットNDIO421バスが、このことを1つのデータフェーズサイクルの中で完了することができる。さらに多くのデータを転送するために、サイズがさらに大きいデータを示すために変形態コマンドが使用されることが可能である。両方のダイは、次いで、十分なバスサイクルを使用して、示された量のデータを転送する。このことは、バスバースト転送のために、また32ビットよりも大きいワードサイズを有する転送(たとえば、64ビットのアトミック転送)のために、大きいペイロードを伴うCTRL転送のために使用されることが可能である。
【0119】
相互接続幅をさらに縮小するために、バスサイクルを相互接続部カウントと交換するために、コマンドおよびデータフェーズ転送を直列化してさらに小さいNDIO421相互接続幅の複数の転送にすることが可能である。たとえば、4サイクルの中で32ビットコマンドを、かつ4サイクルの中で32ビットデータを転送するために、8ビットNDIO421が使用されることが可能である。転送が複数のNDIO421サイクルを伴うので、CPUが直列化を通じて待たなければならないか、かつ/またはNDIO421データレートがCPUバスレートよりも高くなければならないかのいずれかである。同じ(または、類似の)コマンドおよびデータフォーマットが両側で使用されることが可能であり、互いに同じ提供される機能を有するために、異なる相互接続部カウントを有する実装形態を可能にする。トランザクションにおける追加のレイテンシの外側では、PHY415および426、I/O355および360 NDIO相互接続部421を除いて、いずれかのダイ上の何も変える必要がない。
【0120】
直列化における改善とは、32ビットよりも小さい転送サイズを示すためにコマンドステージの中に符号化されたデータサイズ情報を利用することである。たとえば、8または16ビット転送が示される場合、データフェーズサイクルの数は、8ビットNDIO421相互接続幅に対して、それぞれ、1つまたは2つでありうる。
【0121】
コマンドフェーズにおいて類似の改善が行われることが可能である。コマンドの、長さが異なる変形態を作成することによって、ブリッジは、所望のトランザクションを符号化する、長さが最短のコーディングを選択することができる。たとえば、16ビット、24ビット、および32ビットのコマンドが利用されることが可能である。32ビット変形態は、32個の相互接続部が使用されていた場合と同様にコマンドを符号化することがあるが、さらに短い変形態は、サブセットしか符号化することができない。コマンドは、次いで、そのコマンド幅を転送するために必要とされる個数のサイクルに直列化されることが可能である。たとえば、8ビットNDIO421相互接続幅を使用すると、16ビットコマンドを転送するために2サイクルが使用されることが可能である。
【0122】
ASICダイ271にコマンド幅を示すために、コマンド幅を示すために第1のコマンドサイクルの中のいくつかの数のビットを充てることが可能である。16/24/32幅の変形態の場合、このことは、3つの変形態におけるこの情報のための第1の転送フェーズの2ビットを使用することになり、残っている有用なビットのうちの14/22/30ビットをコマンド内容用のままにしておく。代替の構成は、第3のサイクルに対する必要を示すために、第2のサイクルの中の専用のビットを使用する場合があり、第4のサイクルに対する必要を示すために、第3のサイクルの中の類似のビットを使用する場合がある。このことは、15/22/30ビットの有用なコマンド内容を可能にすることになる。第3の構成は、コマンド長を通信するために通常のNDIO421信号のうちのいずれも使用される必要がないように、継続されるコマンドフェーズを示すために、CPUからASICへの専用の信号、信号NPHASE422を使用することができる。各コマンドフェーズサイクルの終了において、ASICダイPHY426は、さらなるコマンドフェーズ直列化が必要とされるかどうかを決定するために、NPHASE422を点検することができる。NPHASE422がそれに対してコマンドフェーズの非継続を示す第1のコマンドフェーズサイクルにおいて、ASICダイ271は、コマンド幅を知ることができ、(コマンドがデータフェーズを示すという条件で)データフェーズに移ることができる。
【0123】
NRESP423は、NDIO421コマンド/データフェーズに同期された経路をシグナリングする、ASICからCPUへの応答である。NRESP423にとっての典型的な幅は、3ビットでありうる。直列化されたバージョンでは、これは、(16本、8本のNDIOワイヤを使用するときのような)2、または(4本以下のNDIOワイヤを使用するときのような)1に減らされることが可能である。データフェーズ中、NRESP423は、バスデータ以外の情報を提供するために、ASICからCPUに表示を提供するために使用される。たとえば、ASIC周辺機器がバスエラーを示すために、データが転送することになるときと同じバスサイクルにおいてERR応答が提供されることが可能である。トランザクションに成功したことを示すために、データと同じサイクルにおいてOK応答が提供されることが可能である。データを転送することが可能となる前にさらに多くの時間を必要とするスレーブの場合、STL応答が提供されることが可能であり、STL応答は、次いで、データフェーズを次のサイクルまで遅延させる。データフェーズの一部としてASICからCPUに配送されるべき、関連する他の情報も、符号化されることが可能である。
【0124】
NRESPのための3ビット(単一サイクル)符号化の一例が、Table 1(表1)において以下に示される。
【0125】
【0126】
コマンドフェーズ中、NRESP423は、他の目的のために使用されることが可能である。ブリッジの両側がコマンド/データフェーズに気づいているので、コマンドおよびデータフェーズ中に異なる概念を符号化するために、同じビットパターンが使用されることが可能である。このことにとってのいくつかの使用は、不正なコマンドが発行されていること、コマンドストール(ASICが新たなコマンドを受信する準備ができていない)、および特定の種類のデータまたは動作が準備できていることなどの、イベントのような表示を示すことになる場合がある。
【0127】
NDIO421シグナリングが複数のサイクルに直列化される事例の場合、同じくNRESP423シグナリングを直列化することが可能な場合がある。たとえば、8個の相互接続部を有するNDIO421のために2ビットが使用されることがある。それらは、Table 2(表2)において以下に示すようにコーディングされることがある。
【0128】
【0129】
このコーディングでは、ASICがまだデータを転送する準備ができていないとき、次のバスサイクルにおいてデータを再起動するための特殊コードとして、第1のデータサイクルにおいて1つの特殊応答STLが使用されることしか可能でない。他の応答のうちの2つが、そのサイクルにおける応答コードを完全に示す。第4のコードは、様々な他の応答候補の間の曖昧さを除去するために追加のサイクルが必要とされることを示すために使用される。第2のバスサイクルは、次いで、(8ビットNDIO上での8ビット転送などに対して、第1のサイクルにおいてデータフェーズが完了している場合があるときでさえ)データフェーズがこの応答を配送するために使用されなければならない。さらに長い直列化を使用して、まれにしか起こらない応答のみを符号化することによって、可能な応答を第1のバスサイクルの中でシグナリングするために必要とされる相互接続部を節約しながら、追加のデータフェーズレイテンシは、大部分が回避されることが可能である。
【0130】
極めてコストが低い実装形態が望ましい場合には、2本と同じくらい少ないワイヤを用いてトランザクション相互接続部NDIO421およびNRESP423を実装することも可能である。一実装形態では、NDIO421は、直列化されたNDIO421コマンドの開始がスタートビットによって示されることが可能となるような、アイドル状態を有することができる。スタートビットが送信された後、NDIO421コマンドの残部が直列化することができる。一実装形態では、スタートビットの後の受信されたコマンドビットの数をカウントすることによってASICダイ271がコマンドフェーズの終了を決定できるように、直列化すべきコマンドビットの数は固定された数でありうる。改善は、可変長のコマンドフェーズを使用することができ、ここで、コマンドフェーズのさらに前のビットにおけるコーディングは、コマンドビットの総数およびそれらの意味を示すことができる。コマンドフェーズの後、ビット当り1クロックサイクルを使用してデータフェーズが直列化することができる。データフェーズが、次いで、そのコマンドによって示されるデータ方向において、コマンドフェーズコマンドによって示される個数のビットを直列化することによって進められることが可能である。NRESP423も、単一のワイヤを介して直列化されることが可能である。コマンドフェーズの後、読取りトランザクションデータフェーズの冒頭におけるNRESP423ビットは、ストールすることに対してNRESP423上でハイレベルを示すことなどによって、ストールすべきかどうかを示すことができる。必要とされるストールがない場合、NRESP423の第1のデータフェーズサイクルは、非ストールレベルを示すことができ、データフェーズは、そのサイクル上での直列化を始めることができる。ストールが必要とされる場合、ASICダイ271は、ストールレベルを用いてNRESP423を駆動することによって、データが利用可能になるために必要な数のサイクルにわたってストールする。次いで、ストールは、非ストールレベルを駆動することによって除去されることが可能であり、その結果、データ直列化が始まることができる。データ直列化中、NRESP423の様々な異なるコーディングは、後続のビットの異なるシーケンスによって直列化されることが可能である。書込みトランザクションの場合、ストーリングメカニズムが、代わりに、同様の方式で最後のデータフェーズ直列化サイクルを拡張することが可能である。
【0131】
類似のメカニズムを使用して、ブリッジングレイテンシと相互接続部カウントとの間でトレードオフを行うように、ブリッジング機能を保持しながら2本以上の任意の本数のワイヤがトランザクション相互接続部のために使用されることが可能である。
【0132】
トランザクション相互接続部ブリッジングは、バーストサポートを追加することによって改善されることが可能である。AHBを含む多くのバスプロトコルは、関連する一連のアドレスがシーケンスをなしてトランザクションが行われるバースト転送に対するサポートを提供する。このことは、しばしば、キャッシュコントローラおよびDMAコントローラ212によって使用される。そのことは、明示的なバーストとしてか、それともまさにバーストと同じシーケンスをなすかにかかわらず、連続するクロックサイクルにおいてCPU自体がシーケンシャルアドレスに対してトランザクションを開始する、まれにしか起こらない事例においても可能である。さらに、いくつかのバススレーブは、FIFOするアドレス(FIFOing address)を実施することができ、同じメモリアドレスへの各アクセスが、スレーブによって、それぞれ、書込み/読取りアクセスのためのFIFOエンキューイング/デキューイングの中に移される。この種類のスレーブの場合、バーストの中の複数のFIFOアイテムをエンキュー/デキューすることが望まれるとき、この同じアドレスへのいくつかのシーケンシャルアクセスを有することが一般的である。DMAコントローラ212によって実施されるとき、インクリメントしないアドレスを有するこのバーストは、DMAチャネル構成の一部であることになる。ソフトウェアによって直接行われる場合、このことは、CPUによって発行されたバストランザクションのシーケンスを観測することによる事実の後でのみ、明らかであることになる。これらの場合には、NDIO421相互接続部を使用して、単一コマンド転送のみに応答して複数の関連するデータ転送を実行するためのメカニズムを提供することが望ましい。そうでない場合、あらゆるデータ転送の後、バーストの中の次のトランザクションに対するコマンドフェーズを提供するためにNDIO相互接続部が使用されなければならないことになり、バーストにとってのNDIO421転送レートを半分に切断する。
【0133】
バースト転送を達成するために、CPUからASICへの追加の相互接続信号NPHASE422が導入されることが可能である。この信号は、次の相互接続クロックサイクルがデータフェーズであることを期待されるかどうかをスレーブに示す。ASICダイ271はこの信号を受信し、データフェーズ中にアサートされると、次の相互接続バスサイクルが現在のデータフェーズからのバースト継続であるはずであることを理解する。ASICダイ271は、次いで、NDIO421上の追加のコマンドフェーズ表示を必要とすることなくバーストを継続するために、それのバスマスタインターフェース436または437上で新たなコマンドフェーズを発行することができる。ストールが正しく処理されることを可能にするために、NRESP423がSTLであるデータフェーズに対して、CPUダイブリッジ350とASICダイブリッジ365の両方は、NRESPがアサートされているか否かにかかわらずデータフェーズを継続する。このことは、バーストが継続することになるか否かにかかわらず、このスレーブストールを超えてデータフェーズが拡張されなければならないからである。NDIO421上のコマンドフェーズは、あるバーストトランザクションからそれの継続までバストランザクションをどのように調整すべきかについての情報を提供することができる。インクリメントするトランザクションを有することがより一般的であるので、デフォルトのコマンドフォーマットがこの挙動に対してデフォルト設定することができる。インクリメントすることとは、典型的には、各転送のサイズだけ以前のアドレスを超えて進むために、適切な量だけアドレスを加算することを意味することに留意されたい。そのため、たとえば、HSIZEを使用してAHBバス上で16ビット転送が示される場合、以前のアドレスからのアドレスのインクリメントは、AHBがバイトアドレス指定を使用するので、それに2を加算することであることになる。FIFOアドレスのためのインクリメントしないトランザクション、またはキャッシュのような動作のためのラッピングトランザクションなどの、他のタイプの更新挙動を示すために、コマンド変形態が提供されることが可能である。
【0134】
CPUダイブリッジ350はまた、CPUダイブリッジ350上に複数のAHBスレーブポートを提供することなどによって、複数のAHBマスタへのアクセスを提供するように構成されることが可能である。例示的な実装形態は、AHBインターフェース405を介してCPUによってマスタされるバスのためのバススレーブインターフェース、およびAHBインターフェース406を介してDMAコントローラによってマスタされるバススレーブインターフェースのための他のバススレーブインターフェースを提供する。
【0135】
AHBインターフェース405上のCPUおよびAHBインターフェース406上の追加のバスマスタによって発行されるトランザクションと、PMUインターフェース404およびDMAインターフェース407などのメモリマップトランザクションに関連しない特別なBUSトランザクションとの間でトランザクション相互接続部を調停するために、アービタ418が設けられることが可能である。トランザクションのためにこれらの様々なサービスがトランザクション相互接続部へのアクセスを要求するので、アービタは、競合の場合にはソースのうちの1つを他のソースよりも優先させることができる。アービタは、厳しい優先度付けによって、ラウンドロビンサービス作業によって、最大レイテンシが保証されたスケジューリングによって、これらの技法の組合せによって、または他の好適な方法によって、このことを行うことができる。選択されたサービスは、次いで、インターフェース457を使用するPHY415へのアクセスが許容されることが可能である。いくつかの実装形態では、CPUは、それの構成SFR(レジスタ)バンク417の中に特殊機能レジスタが設けられることによって、調停方法に対して影響を有することができる。複数のサービスがアクセスを要求するとき、アービタ418によって一時的に拒絶されたアクセスであるサービスは、サービスの要求されたトランザクションをサービス作業が行われるまで遅延させるための、ストール表示が提供されることが可能である。
【0136】
CPUダイブリッジ350が405および406などの複数のバス上のスレーブとして働くように構成される実装形態の場合、ASICダイ271上の低速な周辺機器が、ASICダイ271上のAHBバス437上でのトランザクションの完了を不必要にストールさせる場合があることが、可能な場合がある。このことは、NRESP423が複数のサイクルに対してSTLを示すことになる状況を作り出すことになり、データ転送においていかなる進捗もすることなくトランザクション相互接続部を占有する。そのような場合に性能を改善するために、ASICブリッジ365は、第2のASICダイAHBバスをマスタするための追加のバスマスタポート436を実装することができる。AHBバスマスタ437上のトランザクションが、完了すべきいくつかのサイクルを取ることになる場合、そのトランザクションに対するNDIO421データフェーズ中にSPLITというNRESP423表示が示されることが可能である。この表示は、そのことを解決することなくCPUダイブリッジ350に相互接続BUSトランザクションを終了させる。ASICダイブリッジ365は、動作がAHBバス437上で継続できるように、それのAHBバスマスタインターフェース上でこの中断された動作をマスタすることを継続し、バススレーブがトランザクションを完了するかどうかにかかわらず、AHBトランザクション結果をそれのメモリの中に記憶する。一方、アービタ418は、関連しないトランザクションに対する他のNDIO421コマンドフェーズを発行することができる。そのようなトランザクションが行われることになり、かつこのトランザクションがAHBバススレーブをターゲットにしているなら、このトランザクションは、それの代替のバスマスタインターフェース436を使用するバス動作としてASICダイブリッジ365によって発行されることが可能である。いくつかの好適な点において、アービタ418は、以前に中断されたトランザクションに対するデータフェーズを再開するために、NDIO421コマンド変形態JOINを発行することができる。バスマスタ437上のトランザクションがこの時間までに首尾よく完了している場合、ブリッジのメモリの中に記憶された結果からデータフェーズ応答が配送される。バスマスタ437上のトランザクションが依然として保留している場合、データフェーズは、SPLITがまったく起こらなかった場合と同様に再開する。
【0137】
トランザクション相互接続部を使用するトランザクションは、ASICダイ271との関連する相互作用をCPUダイ246が開始するための十分なメカニズムを提供する。いくつかの場合には、ASICダイ271はそれ自体の相互作用を開始してよい。この理由のために、NEVT相互接続部424を使用するイベント中継が使用される。NEVT424は、メッセージをCPUダイ246へ送信するためにそれが使用できるASICダイ271によって駆動される。これらのメッセージは、典型的には、列挙型の既定のセットからの選択の形態をなす。典型的なメッセージは、ASICダイ271上での割込みアクティビティ、ASICダイ271上でのDMA要求アクティビティ、ASICダイ271上でのPMU状態変化などを示すことができる。ASICダイ271が相互作用の一部として非列挙型データをさらに提供すべき事例の場合、トランザクション相互接続部を通じたイベントの受信者との協調は、ペイロード配送をスケジュールすることができる。あるいは、列挙型プリアンブル、およびそれに後続する、NEVT424を介して転送される任意のデータのいくつかのサイクルを提供することが可能である。
【0138】
比較的多くの潜在的な列挙型イベントに起因して、NEVT424シグナリングは、NEVT424相互接続部の数を小さく保つために、直列化されたメッセージとして実施されることが可能である。例示的な実装形態では、NEVT424は、たとえば、5本のワイヤ、および転送の連続する2クロックサイクルを使用して直列化されたイベントメッセージを用いて実施されることが可能である。例外は、イベントがないことを示す、単一サイクル擬似イベントIDLEである特別なコーディング(たとえば、すべて0)である。このコーディングの下では、総数992個の可能なイベントに対する、NEVT424転送の第1のサイクルに対して31個の可能な値、かつ第2のサイクルに対して32個の可能な値がある。異なる本数のワイヤおよび異なる直列化長を有する他の実装形態が、ワイヤの本数、直列化のレイテンシ、および可能なイベントの数の間のトレードオフを最適化するために使用されることが可能である。より長い直列化の不利益を有する可能なイベントの数を、より長い直列化長が増やすことを依然として可能にしながら、より普通に使用されるイベントおよび/またはより小さいレイテンシを望むイベントが、より短い直列化長を用いて示されることが可能となるように、可変長イベントコーディングを使用することも可能である。他の実装形態は、スタートビット、および2N個と同数の異なるイベントを転送するためのNビットシーケンスを有する、1本のワイヤしか使用しない。同期の欠如を伴う起こり得る問題を回避するために、Nビットシーケンスは、再同期するための、あるシーケンスと他のシーケンスとの間のガードバンドが最小化されることが可能となるように、複数の末尾の0を有するシーケンスを回避するようにコーディングされることが可能である。
【0139】
一実施形態では、EVENT転送は、可能なイベントの数を増やすために任意選択で直列化されることが可能である。一実装形態では、5本のワイヤは、ワイヤのうちの1本を第1/第2の転送ステージ表示として、また他の4本をデータの第1および第2のニブル(nibble)として使用することによって、256個のイベントを提供することができる。他の実施形態では、スタートビット、および2N個と同数の異なるイベントを転送するためのNビットシーケンスを有する、1本のワイヤしか使用されない。同期の欠如を伴う起こり得る問題を回避するために、Nビットシーケンスは、再同期するための、あるシーケンスと他のシーケンスとの間のガードバンドが最小化されることが可能となるように、複数の末尾の0を有するシーケンスを回避するようにコーディングされることが可能である。
【0140】
より小さい相互接続部カウントよりもEVENTレイテンシ/帯域幅が重要でない場合がある事例では、NRESP423機能とNEVT424機能の両方を実行するために相互接続部の単一のセットを使用することが可能である。このことは、共有されるNEVT424/NRESP423相互接続部の目的をトランザクション相互接続部460にとってのトランザクション状態の機能にさせることによって行われることが可能である。データフェーズ応答を形成するためにNRESP423表示が必要とされる時間中、両方のブリッジは、NRESP423通信のために、共有されるNEVT424/NRESP423相互接続部を使用することができる。このことが行われるときにNEVT424イベントが直列化されつつある場合、両方のブリッジは、NRESP423通信の持続時間にわたってNEVT424直列化を中断すべきと理解することができる。NRESP423内容が通信されると、両方のブリッジは、NEVT424目的のために、共有された相互接続部を使用することを再開することができ、中断が行われたときと同じ位置から直列化を継続することができる。
【0141】
IRQ表示は、トランザクション相互接続部460とNEVT相互接続部424との組合せを使用してASICダイ271からCPUダイ246に伝搬される。ASIC IRQ立上りエッジ(アクティブ化)は、ASICダイ271上のIRQ同期論理431によって検出され、NEVT424相互接続テレグラム、すなわち、CPUダイ246に通知すべきイベントまたはメッセージの中に移される。IRQ同期論理431は、インターフェース470上で要求を提供することによってこれらのNEVT通信を要求することができる。他のNEVTアクティビティに起因して、NEVT相互接続部がこのテレグラムの送信のためにすぐには利用可能ではないことがあるので、IRQ同期論理431は、NEVTアービタ/mux430がこのアクセスを許可するときなどのさらに後の時間において、このテレグラムを送信する必要をその割込みが示すための、レジスタを実装することができる。そのようなテレグラムの受信は、表示信号447を使用してCPUダイ246上のIRQ同期論理451に提供される。そのような表示を受信すると、IRQ同期論理451は、IRQインターフェース475上のそれのIRQ出力の適切なインデックスにおける単一クロックサイクルIRQ表示を提供することができる。これらのIRQ出力は、CPU217の中に含まれるNVICなどの、CPUダイ246上の割込みコントローラに提供されることが可能である。CPUダイ246割込みコントローラは、それの割込みコントローラへのIRQインターフェース475信号に対してエッジ検出またはレベル検出のいずれかを使用するように構成されることが可能である。このことは、CPUがASICダイIRQインターフェース433上の新たなイベントを見ることを可能にするが、IRQインターフェース433上のIRQ信号がアサート停止されることに対して、単独では同期をもたらさない。アサート停止がどのように扱われるのかは、割込みソースがそれの信号をエッジ検出型であることを意図するのかそれともレベル検出型であることを意図するのかに依存する。
【0142】
エッジベースのASICダイ271ソースに対する割込みサービス要求は、以前に説明したようにNEVT424相互接続部上のイベントメッセージングを使用してASICダイ271から伝搬される。エッジベースのIRQがアサート停止エッジについてのいかなる情報も伝搬させないので、このことは、そのような割込みソースの同期にとって完全な解決策である。
【0143】
レベルベースのASICダイ271ソースに対する割込みサービス要求は、NEVT424とトランザクション相互接続部460シグナリングとの組合せによってASICダイ271からCPUダイ246に伝搬される。ASICダイ271上の割込みサービス要求のアクティブ化は、エッジベースの場合と同様にCPUダイ246に伝搬される。IRQインターフェース475上のIRQ表示は、ASICダイIRQインターフェース433上の対応する信号が依然としてアサートされていることがあっても、単一のサイクルにわたってアサートされる。このことは、割込みコントローラの中でこの割込みラインのためのPENDEDレジスタをセットさせる。割込みコントローラは、IRQインターフェース475上のIRQ信号から提供されるような、それ自体の割込みサービス要求入力上のいずれのレベルにも異なって反応しないことになるので、それのPENDEDレジスタが後でクリアされるまで割込みソースからのさらなる情報を必要としない。したがって、CPUダイブリッジ350は、その割込みに対する非アクティブ信号をIRQインターフェース475上で提供することができ、IRQインターフェース433上の信号の中のASICダイ271割込みサービス要求がアクティブであるのかそれとも非アクティブであるのかに関心がない。PENDEDレジスタがクリアされた後でしか、割込みコントローラはそれの割込みサービス要求入力を再検査しない。割込みサービスルーチンの実行がPENDEDレジスタをクリアすると、割込みコントローラの内側のそのIRQに対するPEND_CLR信号は、あるクロックサイクルにわたってアサートされることが可能であり、割込みコントローラの内側のACTIVE信号は、その割込みサービスルーチンの実行の持続時間にわたってアサートされることが可能である。これらの信号は、IRQインターフェース475上のIRQフックを使用して割込みコントローラからCPUダイIRQ同期論理451に提供されることが可能である。PENDEDレジスタをクリアするのがソフトウェアであるとき、このことは、ACTIVE信号がアサートされることなく、割込みコントローラの内側のそのIRQに対するPEND_CLR信号が、あるクロックサイクルにわたってアサートされることをもたらすことができる。割込みコントローラは、それのPENDEDレジスタがセットされておらずACTIVE信号もアサートされていないときのみ、そのIRQ番号に対してそれの割込みサービス要求入力を再検査することになる。したがって、CPUダイブリッジ350のIRQ同期論理451は、PEND_CLRのアサーションを観測することなどによって、PENDED信号のクリアリングを登録することができ、ASICダイ271上の割込みソースがそれのIRQをアサートしているかどうかにかかわらず、再確立すべきその割込みに対する、IRQインターフェース433上でASICダイ271 IRQ信号を再ポーリングする必要の表示として、ACTIVE信号がアサートされないことを待つことができる。IRQ synchは、アービタ418を通じてこのコマンドを要求信号449上で要求することによって、トランザクション相互接続部460上で特殊コマンドを使用してこの再ポーリング動作を実行することができる。ASICダイシーケンサ/PHY426は、このコマンドを受信すると、IRQインターフェース433上の信号の中の適切な割込み要求信号を再検査すべきであることをIRQキューイング/スケジューリング論理431に通知することができ、アサートされる場合、NEVT424相互接続部を通じてこのことを示すテレグラムをスケジュールすることができる。CPUダイ246上でのそれの処理が同じでありうるので、このテレグラムが、前に説明したアクティブ化テレグラムと同じコーディングを有することができることに留意されたい。このことが起こることになるなら、NEVT424テレグラムは、イベントレシーバ412を使用して受信されることになり、IRQ synch論理451に提供されることになり、IRQインターフェース475上のIRQ信号上での適切なIRQ表示の単一クロックサイクルアサーションをもたらすことになり、割込みコントローラの中で割込みを再び保留させる。この時間において割込みがアサートされなかった場合、IRQキューイング/スケジューリング論理431は、前に説明したアクティブ化NEVT424テレグラムを提供するために、IRQインターフェース433上のIRQ信号の中の割込み信号の立上りエッジを待つことができる。
【0144】
CPUダイブリッジ350は、その割込みがエッジ検出として扱われることを意図するのかそれともレベル検出として扱われることを意図するのかを示す、各割込みに対する情報が提供されることが可能である。一実施形態では、CPUダイブリッジ350は、構成SFRバンク417を使用してこの情報が提供されることが可能である。他の実施形態では、割込みコントローラは、IRQインターフェース475上でのそれの割込みフックの一部として、この情報を提供することができる。CPUダイブリッジ350は、次いで、この情報を利用して、各割込みソースに対してIRQ状態を同期させるための適切な方法を選択することができる。
【0145】
いくつかのCPUダイ実装形態では、割込みコントローラの内部信号PEND_CLRまたはACTIVEへのアクセスが利用可能でないことがある。この事例に対処するために、レベルベースの割込み再ポーリングのための代替メカニズムが、特殊機能レジスタアクセスによって提供されることが可能である。特殊機能レジスタは、CPUダイブリッジ350の構成SRFバンク417の中に実装されることが可能であり、IRQに対する再ポーリングをCPUが直接要求することを可能にする。このことは、構成SFRバンク417の適切なアドレスの中の書込みアクセスを検出することなどの、構成SFRバンク417への適切なアクセスから、再ポーリング表示をIRQ synch論理451に提供することによって実施されることが可能である。ソフトウェアは、次いで、レベルベースの割込みが再ポーリングを必要とするかどうかにかかわらず、この特殊機能レジスタに適切な値を書き込むことによって、再ポーリングを直接要求することができる。典型的な事例は、その割込みに対してソフトウェアがPENDEDビットをクリアした後、または割込みサービスルーチンの内側の適切な点にあることになる。
【0146】
ASIC271ダイからCPUダイ246へのDMA要求同期は、NEVT424とトランザクション相互接続部460シグナリングとの組合せによって遂行されることが可能である。ASICダイDRQ同期論理428およびCPUダイDRQ同期論理414は、DRQ信号434上のDRQ表示の変化をCPUダイDMA信号407上での対応する変化に伝搬させるために、これらの相互接続部を通じて通信し、それによって、インターフェース407の中のDRQ信号を介してDMAコントローラ212と相互作用するために、DMA有効化周辺機器がインターフェース434上のDRQ信号を提供することを伴う能力を提供する。DRQ同期論理414および428は、DMA要求としての信号の意図にとって適切な方式で、インターフェース434上での変化をインターフェース407上の対応する信号に、ステートフルに伝搬させることができる。
【0147】
CPUダイインターフェース407に同期されるべきインターフェース434の中の各DRQ信号に対して、CPUダイDRQ同期論理414は、状態UNKN、ARMD、およびTRIGDを有することができる。ASICダイDRQ同期論理428は、状態UNKN、ARMD、PEND、およびTRIGDを有することができる。これらの状態のうちのいくつかは同じ名称を有するが、状態コーディングが同じである必要がないこと、ならびに任意の所与の時間において同期論理414および428が同じ名称の状態になくてよい事例があることに留意されたい。
【0148】
スタートアップにおいて、または関連するDMAチャネルが無効化されているときはいつでも、同期論理414と428の両方はUNKN状態にあってよい。ASICダイDRQ同期論理428は、UNKN状態にあるとき、インターフェース434の中の関連するDRQ信号を同期させることにCPUダイが関心がないことを期待する。CPUダイDRQ同期論理は、UNKN状態にあるとき、ASICダイがいかなる変化もそれに通知しないこと、およびインターフェース407の中の関連するDRQ信号に非アクティブ信号を提供することを期待する。CPUダイ同期論理414がUNKN状態にあり、かつ関連するDRQがサービス作業に対して有効化されるときはいつでも、同期論理414は、このことを、インターフェース448および465を通じてトランザクション相互接続部460上のトランザクションを介してASICダイ同期論理428に示すことができる。このトランザクションが完了すると、DRQ同期論理414および428は両方とも、そのDRQ信号に対してそれらのARMD状態に入ることができる。
【0149】
ARMD状態において、ASICダイ同期論理428は、CPUダイ同期論理414もARMD状態にあることを期待し、インターフェース434の中の関連するDRQ信号上で観測される任意のアクティブレベルが通知されることを望む。CPUダイ同期論理414は、ARMD状態にあるとき、ASICダイ同期論理428が同じくARMD状態にあり、かつインターフェース434の中の対応するDRQ信号の観測される任意のアクティブ化をそれに通知することを期待しながら、インターフェース407の中の対応するDRQ信号上に非アクティブレベルを提供する。
【0150】
ASICダイ同期論理428がARMD状態にあり、かつインターフェース434の中の関連するDRQ信号上でアクティブレベルが検出されるときはいつでも、ASICダイ同期論理428はPEND状態に入ることができる。この状態にあるとき、ASICダイ同期論理428は、NEVTアービタ/mux430を介してインターフェース467を使用してNEVT上でDRQアクティブ化テレグラムをスケジュールすることを試みることができる。このテレグラムが完了すると、ASICダイ同期論理428およびCPUダイ同期論理414は両方ともTRGD状態に入ることができる。ASICダイ同期論理428は、インターフェース467上でこのテレグラム完了を検出することができるが、CPUダイ同期論理414は、NEVTレシーバ412からインターフェース454上でこのテレグラム完了を検出することができる。
【0151】
TRGD状態にあるとき、CPUダイ同期論理414は、適切な応答性アクションを行うことによってDMAコントローラ212が応答できることを期待しながら、インターフェース407の中の関連するDRQ信号上にアクティブレベルを提供する。TRIGD状態にあるとき、ASICダイ同期論理428は、CPUダイ同期論理414もTRIGD状態にあることを期待し、インターフェース434の中の関連するDRQ信号の任意の非アクティブ化が通知されることを望む。
【0152】
DMAコントローラは、それの応答性バストランザクションを開始しているDMA要求ラインへの、サイクルが正確な更新を必要とすることができる。DMAスレーブから読み取られるべき可変長データの場合には、このことは、データが配送された後に転送を終了させるために使用されることが可能である。他の場合には、そのことは、以前のDMA要求に応答して、要求された転送をDMAコントローラが完了しつつあり、最後のバスデータフェーズの処理に対するスレーブのDMA要求アサート停止からの伝搬遅延が、実際にはスレーブによって要求されなかったDMA動作を誤って再トリガする結果となる場合があるからでありうる。DMA応答性AHBバストランザクションごとに、したがって、CPUダイに同期された、インターフェース407の中のDRQ信号が、CPUダイAHBインターフェース405または406上の同期された応答信号と同じレイテンシを伴って到着することが望ましい。このようにして、DMAコントローラ212がそれのデータフェーズを完了するCPUダイサイクルにおける、組み合わせられたインターフェース405/406/407の中の関連する信号は、ASICダイサイクルに対するインターフェース437/436/434の中の対応する信号用と同じであり、ASICダイDMA有効化周辺機器に対して、対応するAHBトランザクションデータフェーズのデータフェーズが完了する。DRQアサート停止がAHBデータフェーズ配送とサイクル同期されることを可能にするために、トランザクション相互接続部460上のトランザクション中のNRESP423は、データフェーズ応答の一部としてアサート停止を示すために使用されることが可能である。DMAコントローラ212は、アドレスフェーズの一部として、バイナリコーディングされたDRQ番号を提供することなどによって、DMAフック407を使用してそれのAHBアドレスフェーズ中にAHBインターフェース405または406上の特定のトランザクションがどのDMA要求に応答しているのかの表示を提供することができる。トランザクション相互接続部460上の関連するAHBトランザクションを同期させるNDIO421コマンドは、コマンドコーディングの一部としてこのDRQ番号情報を含むことができる。この情報は、それが、インターフェース437または436上でのAHBトランザクションデータフェーズ中を監視するために、インターフェース434の中の適切なDRQ信号を選択できるように、インターフェース465を介してASICダイDRQ同期論理428に提供されることが可能であり、インターフェース465を使用してPHY426に表示を提供する。ASICブリッジ365のPHY426は、次いで、成功したデータフェーズのためのNRESP423コーディングの2つの変形態、すなわち、OKおよびOKDNを提供することができる。OKは、データフェーズが首尾よく完了したこと、および関連するコマンドフェーズ中に示されるDMA要求が現在アクティブであることを示す。OKDNは、データフェーズが首尾よく完了したこと、および関連するコマンドフェーズ中に示されるDMA要求が現在アクティブでないことを示す。CPUダイブリッジ350のPHY415は、トランザクション相互接続部360データフェーズ完了中にNRESP423上でOKDNコーディングを検出することができ、たとえば、DRQソース434の各々に対して、そのDRQに応答するものとしてマークされるトランザクションがOKDN NRESPを示していることを示す1つの信号を提供することによって、インターフェース455を使用してこの情報をDRQ同期論理414に提供することができる。CPUダイDRQ同期論理414は、インターフェース407の中の関連するDRQをアサート停止すること、およびそのDRQに対するそれの内部状態をARMDに変更することによって、このOKDN受信に反応することができる。同様に、NRESP423上で応答フェーズとしてOKDNが配送されるときはいつでも、ASICダイDRQ同期論理は、関連するDRQに対して、それの内部状態をTRGDからARMDに変更することができる。
【0153】
応答性AHBトランザクションの外側のASICダイ271 DRQ表示非アクティブ化の同期は、同期されたそのようなレイテンシを必要としない。ASICダイ同期論理428は、トランザクション相互接続部460上の現在進行中であるいかなるトランザクションにも関係しない、インターフェース434の中のTRGD状態を伴うDRQ信号の非アクティブ化を検出することができ、NEVTアービタ/mux430を介してインターフェース467を使用してNEVT上にDRQ非アクティブ化テレグラムをスケジュールすることを試みることができる。このテレグラムが完了すると、ASICダイ同期論理428およびCPUダイ同期論理414は両方ともARMD状態に入る。ASICダイ同期論理428は、インターフェース467上でこのテレグラム完了を検出することができ、CPUダイ同期論理414は、NEVTレシーバ412からインターフェース454上でこのテレグラム完了を検出することができる。
【0154】
CPUダイ同期論理414がDRQに対してUNKN状態になく、かつ関連するDRQがサービス作業に対して無効化されるときはいつでも、同期論理414は、インターフェース448および465を通じてトランザクション相互接続部460上でトランザクションを介して、ASICダイ同期論理428にこのことを示すことができる。このトランザクションが完了すると、DRQ同期論理414および428は両方とも、そのDRQ信号に対してそれらのUNKN状態に入ることができ、インターフェース407の中の関連するDRQはアサート停止されることが可能である。
【0155】
これらのメカニズムおよび回路技法を使用して、CPUダイブリッジ350およびASICダイブリッジ365は、(DRQ同期論理414を有する)CPUダイ246と(DRQ同期428を有する)ASICダイ271との間のDRQ同期をもたらすことができ、DRQ信号434によって示されるように、CPUダイ246上のDMAコントローラ212がCPUダイ271上のDMA有効化周辺機器に応答できるように、ASICダイDRQ信号434をCPUダイDRQ信号407と同期させる。これらのステートマシンの各々は、この同期を支援するために、同期されたDRQ信号434ごとに内部状態を追跡することができる。
【0156】
PMU状態遷移および同期は、トランザクション相互接続部460およびNEVT424ダイ間相互接続部を使用して2つのダイ間で同期されることが可能である。特に、PMUインターフェース432上のPMUイベント信号は、イベントトランスミッタ429によって通信されてよく、イベントレシーバ412によって受信され、PMUインターフェース411上でPMUイベント信号として提供される。PMUインターフェース432上のこれらのPMUイベント信号は、ASICダイPMU268から発信することができ、PMUインターフェース411信号は、次いで、CPUダイPMUコントローラ244に提供されることが可能であり、それによって、ASICダイPMU268がCPUダイPMUコントローラ244に更新を提供することを可能にする。各イベントメッセージが、異なる情報を提供できるように、そのような更新に対して任意の数の列挙型イベントが予約されることが可能である。そのような典型的なイベントは、リセット伝搬、電圧低下警告、調整器レディ表示、およびクロック速度変更通知を含むことができる。拡張可能な多くのイベントを可能にするために、曖昧さを除去するためにトランザクション相互接続部上での後続のトランザクションを必要とするイベントに対して、列挙法のうちの1つを予約することも可能であり、その結果、低レイテンシを必要としないイベントは、この共通のイベントコーディングを使用することができ、それによって、列挙型NEVTコーディングのうちの1つを消費しない。
【0157】
同様に、CPUダイPMUコントローラ244は、PMUトランザクションインターフェース404を使用してそのようなトランザクションを開始して、トランザクション相互接続部460上のトランザクションによってASICダイPMU268に通信することができる。アービタ/mux418は、次いで、CPUダイPHY415によるサービス作業のために、このトランザクションのための時間をスケジュールすることができる。次いで、ASICダイPHY426は、トランザクションを復号することができ、PMUトランザクションフックインターフェース438上で表示を提供することができ、その表示は、次いで、ASICダイPMU268に提供されることが可能である。場合によっては、このトランザクションは、この列挙型イベントを符号化するコマンドフェーズだけが相互接続部460上でトランザクションが行われることを必要とされるように、CPUダイからASICダイへの列挙型イベントのように扱われることが可能である。この場合、復号されたコマンドフェーズ検出は、PMUトランザクションインターフェース438についての情報として提供されることが可能であり、PHY415およびPHY426は両方とも相互接続部460データフェーズをスキップする。他のPMUコマンドコーディングは、インターフェース404および438を使用してPMUコントローラ244とPMU268との間で追加のデータが転送されることが可能となるように、データフェーズを暗示することができる。
【0158】
多くの場合、ASICダイ271は、CPUダイ246に、ASICダイ271上の同じく他の構成要素に、または外部ポートに、電源を供給する回路構成を含んでよい。これらの場合には、WICを含む、スリーピングおよびウェイクアップに関与するPMU論理のほとんどは、同じくASICダイ271上にあってよい。大部分のマイクロコントローラアーキテクチャでは、スリープはCPUによって開始される。
【0159】
スリープシーケンス中、CPUは、スリープすべきそれの意図のそれのシグナリングをそれのPMUインターフェース256上で提供する。単一ダイ実装形態200では、このインターフェース256は、PMU205と直接通信することができる。マルチダイ実装形態の場合、CPUダイPMUコントローラ論理246は、このシグナリングを遮断することができる。CPUダイPMUコントローラ論理246は、次いで、トランザクション相互接続部460上のいくつかのトランザクションに関与して、スリープを実行するためにASICダイPMU268と相互作用することができる。WICを実施するCPUの場合、CPUは、それのPMUインターフェース256を使用して、それのNVIC状態の関連する部分をWIC状態に転送することができ、NVICにおける類似の割込みマスキング機能を反映する割込み/例外検出論理のための構成を提供する。CPUダイ246 PMUコントローラ244は、代わりに、このシグナリングを受信することができ、トランザクション相互接続部460を使用してそれを1つまたは複数のトランザクションに変換して、ASICダイPMU268の中に実装されたWICの中に、代わりに状態を転送することができる。このことは、依然としてWICコントローラの標準的なウェイクアップメカニズムを提供しながら、PMUがNCLK420、スリープ中でのCPUダイ246への電源供給または他のサービスを無効化することを可能にすることができる。トランザクション相互接続部460およびNEVT424上での他の通信は、正しいダイ間シーケンシングを実行して、標準的な方法で、CPU PMUインターフェース256を通じてCPU217とPMU268との間でマルチステップハンドシェイク型スリープシーケンスを可能にするために、このPMU同期論理によって使用されることが可能である。ウェイクアップ時に、類似のトランザクション相互接続部460およびNEVT424トランザクションは、CPU PMUインターフェース256を通じてCPI217とPMU268との間で、必要なシーケンスを実行することができる。ASICダイ271上でWICによってウェイクアップが開始された場合、NVICに戻る状態の転送は、ウェイクアップシーケンスの一部としてASICダイWICからこの状態を読み取るためのトランザクション相互接続部460トランザクションなどによって、このシーケンスの一部として遂行されることが可能である。代替的に、ウェイクアップにおけるこのWIC状態転送のうちの全部または一部は、ウェイクアップシーケンスの間またはその後の好適な時間において、NEVT424上の列挙型イベントを使用して実施されることが可能である。たとえば、この同じ割込みまたは例外がスリープの外側で発生していることになるならそれが行うことになるのと同じNEVT424列挙型メッセージを送信するために、どの割込みまたは例外がASICダイIRQ同期論理431を使用することによってウェイクアップを引き起こしたのかを、CPUダイNVICにアラートすることが可能な場合がある。ウェイクアップシーケンスに対して好適な時間においてこのイベントを転送することによって、CPUダイ246上の論理は、CPU217が実行を始める前にこの割込みまたはイベントがCPUダイNVICの中に保留されることを保証することができる。
【0160】
スリーピングの他の態様とは、トランザクション相互接続部460とNEVT相互接続部424の両方がアイドル状態にあるように、相互接続部インターフェースの正しい管理であり、その結果、スリープが行われるとき、それらのインターフェース上の通信は部分的にしか直列化されず、場合によっては奇形のトランザクションをもたらす。このことが行われることになるなら、一方のダイは、データ転送が完了しているか、またはイベントもしくはハンドシェイクが通信されていることを理解することができ、他方のダイは異なる理解を有する。このことに対処するために、すでに進行中でありうるどんなNEVT424直列化が完了した後でも、さらなる新たなNEVT424アクティビティを無効化するために、トランザクション相互接続部460上のトランザクションがスリープ折衝中に使用されることが可能である。スリープが発効するとき、NEVT424メッセージがアトミックに配送されており、かつさらなるNEVT424メッセージが中断されることを保証するために、このコマンドは、スリープ折衝中の適切な時間においてPMUコントローラ244によって、スリープシーケンスの一部として自動的に発行されることが可能である。トランザクション相互接続部460上での不完全なトランザクションは、スリープモードに入る前にその相互接続部上で最後のトランザクションを行うことによって回避されることが可能である(スリープ折衝シーケンスをファイナライズする、今やスリープに移ることができることを示すコーディングを有する「完了したトランザクション」)。CPUダイBUSアービタ/mux418およびASICダイNEVTアービタ/mux430は、次いで、要求された任意の動作を、スリープシーケンスを通じてストールさせることができ、次いで、後続のウェイクアップシーケンス中の好適な点においてサービス作業を再び有効化することができる。
【0161】
その上、ASICダイ271は、構成レジスタバンク419を含んでよい。デバッグアクセスポートのためのセキュリティポリシー同期も、トランザクション相互接続部およびNEVTブリッジングを使用して同期されることが可能である。一実施形態では、デバッグアクセスポートのための通信インターフェースは、ASICダイ271上に位置することができる。アタッチされたデバッガは、CPUダイ246上のセキュリティマネージャ243によって設定されることが可能である、セキュリティマネージャ267を介してアクセスされるポリシーに従って、このインターフェースに通信することができる。このセキュリティポリシーは、アタッチされたデバッガがCPUダイとの通信にアクセスすることを許容されるかどうか、デバッガがASICダイ271上のリソースに直接アクセスすることを許容されるかどうか、CPUダイが電源投入またはクロッキングされていないことがあるスリープモードなどの間に電源状態遷移がデバッガによって開始されることが可能であるかどうか、およびいくつかのタイプのアクセスを許可するためのチャレンジ/応答シーケンスなどの許可資格証明を含むことができる。
【0162】
セキュリティポリシーは、CPUダイセキュリティマネージャ243によって開始されるトランザクション相互接続部460上のトランザクションを使用することによって、初期電源投入シーケンス中に、CPUダイセキュリティマネージャ243からASICダイ上に位置するASICダイセキュリティマネージャ267に転送されることが可能である。このポリシーが転送されるまで、デバッグポート上の許可されないアクティビティを回避するために、ASICダイセキュリティマネージャ267は、関連するポリシーが転送されるまで、曖昧なセキュリティポリシーを有するリソースへのアクセスを許容しない場合がある。あるいは、ASICダイセキュリティマネージャ267は、ポリシーが提供されるまで、デバッガ通信インターフェースを無効化することができる。ASICダイセキュリティマネージャ267は、それがデバッガ要求に応答できるように、任意のCPUダイ246スリープサイクルを通じてこのポリシーを維持することができる。CPU217ソフトウェアがセキュリティマネージャ243の構成を調整することなどによる、セキュリティポリシーへの更新は、トランザクション相互接続部460トランザクションを使用してそれのポリシーを更新するために、ASICダイに通信されることが可能である。
【0163】
いくつかのデバッガ動作は、電源状態を強制すること、およびCPU動作をホールト/アンホールトさせることなどの、所望のCPU状態への変更を開始することができる。ASICダイ271上のデバッグポートは、NEVT424メッセージを使用して、一方または両方のダイ上のセキュリティマネージャの許可を条件として、このことなどの動作を開始することができる。
【0164】
製造および製品開発プロセスのいくつかの段階中に、接続されたいかなるCPUダイ246も伴わずにデバッグポートをASICダイ271にアタッチできることが、有用な場合がある。このことを可能にするために、ASICダイセキュリティマネージャ267は、アタッチされたCPUダイ246がないことを決定することができ、アタッチされない部分のセキュリティポリシーに従ってASICダイ271リソースの全部または一部にアクセスすることの、デフォルトのポリシーを可能にすることができる。
【0165】
障害のある部分または顧客が返却した部分を分析するとき、障害分析中でのセキュアでないリソースへのアクセスを可能にすることも有用な場合がある。このことを可能にするために、CPUダイ246の不正行為に起因してセキュリティポリシーが失敗したときの事例に対処するために、デフォルトのセキュリティポリシーがASICダイセキュリティマネージャ267の中に実装されることが可能である。
【0166】
CPUダイセキュリティマネージャ243がライフサイクル管理とともに有効化されているとき、製品ライフサイクル進展が実施されることが可能である。たとえば、製品返却のデバッギングを可能にするために、一部分のライフサイクルは、通常の動作モードから障害分析モードに変更されることが可能である。ASICダイセキュリティマネージャ267は、アタッチされたデバッガからのライフサイクル状態変更命令に応答するように実装されることが可能である。ASICダイ271上のセキュリティマネージャ267およびデバッグインターフェースは、CPUダイセキュリティマネージャ243によって提供されるセキュリティポリシーにかかわらずこの通信に応答するように実装されることが可能である。ASICダイセキュリティマネージャ267は、NEVT424イベントを使用してライフサイクル状態変更を開始することができる。このイベントはCPUダイセキュリティマネージャ243に提供されることが可能であり、CPUダイセキュリティマネージャ243は、次いで、チャレンジを形成することおよび応答を検証することなどによって、デバッガの資格証明に対して認証を実行するためにBUSトランザクションに関与することができる。認証に成功すると、CPUダイセキュリティマネージャ243は、機密扱いの不揮発性メモリを消去すること、およびこの状態を記憶する不揮発性メモリの中にライフサイクル状態進展を書き込むことなどによって、ライフサイクル変更を実行するための必要なステップを行うことができる。完了されると、デバッグポートおよびセキュリティマネージャ243、267は、新たなこのライフサイクル状態に一致する更新されたセキュリティポリシーを使用することができる。
【0167】
この技法を使用するバストランザクションのシーケンス図例が
図5に示される。この例では、信号は、CPUダイ246、ダイ間262シグナリング、およびASICダイ271上の信号に対して示される。詳細には、CPUダイAHB330アドレスフェーズ信号514およびCPUダイAHB330データフェーズ信号512からの、選択された信号が示される。同様に、ASICダイAHB370アドレスフェーズ信号508およびASICダイAHB370データフェーズ信号512からの、選択された信号が示される。この例では、CPUとASICの両方が、データバス248および277においてAHBを実施している(ブリッジがAHBと相互作用するポートが、405および437であることに留意されたい)。この例では、CPUは、アドレスA0、A1、A2、およびA3に対して4つのバストランザクションを開始する。A0は、ASICダイ271上の周辺機器(BLOCK1)216に関連し、A1およびA3は、CPUダイ246上のSRAMブロック518に関連し、A2は、ASICダイ271上の周辺機器(BLOCK2)520に関連する。この場合、クロックは互いに同期され同じレートにある。BLOCK1および/またはBLOCK2は、ASICダイ上に位置する任意のスレーブ周辺機器である。
【0168】
サイクル1 522に取りかかると、CPUは、それのアドレスフェーズ信号514上で、アドレスA0への32ビット書込みのためのAHBトランザクションを発行する。CPUダイAHBブロックアドレスデコーダは、このアドレスがASICダイ271ブロックアドレス空間の中にあることを決定し、そのため、AHBアドレスフェーズ中にCPUダイブリッジ350に対してHSEL532をアクティブ化する。CPUダイブリッジ350は、必要とされる情報(たとえば、HADDR570のLSB、HWRITE566、HSIZE568など)を用いて、相互接続部460コマンドフェーズとしてNDIO421上で発行するためのコマンドを形成する。この例では、コマンドフェーズ信号がCPUダイAHBアドレスフェーズ信号から組み合わせて生成されることを想定するが、このことはまた、登録とともに行われることが可能である。登録される場合には、コマンドは、CPUダイのAHBアドレスフェーズのためのクロックサイクルよりも後のクロックサイクルにおいてNDIO421上で発行されることになる。ASICダイブリッジ365は、対応するAHBバストランザクションをそれのアドレスフェーズ信号508上で開始することによって、このコマンドに応答する。ASICダイ271上のAHBブロックアドレスデコーダは、アドレスがBLOCK1に関連することを決定し、そのため、そのASICダイAHBアドレスフェーズの一部として、そのブロックに対してHSEL516を発行する。
【0169】
サイクル2 534において、CPUは、前のサイクルにおいて開始されたA0へのトランザクションのためのCPUダイAHBデータフェーズ信号512の一部として、HWDATA536上で書込みペイロードD0を提供する。CPUダイブリッジ350は、このデータを受信し、相互接続部460データフェーズとしてNDIO421相互接続信号を使用して、それをASICダイ271に転送する。ASICダイブリッジ365は、BLOCK1周辺機器が使用するために、このデータをそれ自体のHWDATA538に伝搬させる。この場合、BLOCK1周辺機器は、そのサイクル中に動作を完了することができ、そのため、それのHREADYOUT540をアサートしてASICダイAHBデータフェーズが完了することを可能にする。ASICダイ271 AHB HREADYOUT muxは、ASICダイブリッジ365に提供するために、それのHREADY562に対してこの信号を選択する。この情報は、NRESP423上でOKを示すことによって、ASICダイブリッジ365によって相互接続部460を通じて伝搬される。CPUダイブリッジ350は、次いで、これをそれ自体のHREADYOUT544にさらに伝搬させて、CPUダイ246 AHBデータフェーズが完了することを可能にする。
【0170】
また、サイクル2 534において、CPUは、それのアドレスフェーズ信号514を使用してアドレスA1へのトランザクションを開始する。CPUダイ246上のAHBブロックアドレスデコーダは、このアドレスがCPUダイ246上のSRAM216に関連することを決定し、そのため、AHBアドレスフェーズ中にそのブロックに対してHSEL518をアサートする。CPUダイブリッジ350は、このトランザクションに関与しないので、このトランザクションを無視し、前にスケジュールされたデータフェーズを継続する。データフェーズがすでにスケジュールされていないなら、それはコマンドフェーズとしてNDIO421相互接続部上にIDLE擬似コマンドを駆動していることになる。サイクル2 534上のCPUダイAHBアドレスフェーズが、それのHSEL532をアサートすることによってCPUダイブリッジに向けられているなら、そのブリッジは、すでにスケジュールされたNDIOデータフェーズが完了した後にNDIO421コマンドフェーズを後で発行できるように、CPUダイAHBアドレスフェーズ信号514を登録していることになる。ASICダイブリッジ365は、D0を転送することをデータフェーズにすでにコミットしており、そのため、NDIO内容を新たなコマンドフェーズとして扱わない。ASICダイブリッジ365は、新たなNDIOコマンドフェーズが与えられていないので、サイクル2 534の間にそれのAHBアドレスフェーズ信号508上でこれ以上のトランザクションを開始しない。サイクル3 546においてCPUダイ246上でSRAMトランザクションが完了する。
【0171】
サイクル6 548において、CPUダイ246は、アドレスA2への16ビット読取りトランザクションを開始する。CPUダイAHBブロックアドレスデコーダは、このアドレスがASICダイ271ブロックアドレス空間の中にあることを決定し、そのため、それのAHBアドレスフェーズ信号514上でCPUダイブリッジのHSEL532をアクティブ化する。このことは、NDIO421上でコマンドフェーズの中に伝搬され、サイクル1 522において行われたのと同様のやり方でASICダイAHB370アドレスフェーズの中にさらに伝搬される。この場合、ASICダイAHBブロックアドレスデコーダは、アドレスA2がBLOCK2周辺機器に関連することを決定し、そのため、このブロックへのHSELを発行する。
【0172】
サイクル7 550において、BLOCK2は、ASICダイAHBデータフェーズを完了する準備ができていないことを示すために、それのHREADYOUT552をアサート停止する。ASICダイ271 AHB HREADYOUT muxは、ASICダイブリッジ365に提供するために、それのHREADY562に対してこの信号を選択する。これは、STL表示としてNRESP423相互接続部を通じてASICダイブリッジ365によって伝搬される。CPUダイブリッジ350は、このSTL表示を受信し、CPUダイデータフェーズが完了する準備ができていないことを示すために、それのHREADYOUTデータフェーズ信号544をアサート停止することによって応答する。これが読取りコマンドであるので、このサイクル中に相互接続部を駆動するのがASICダイ271であるようにデータフェーズが読取りタイプのものであることに起因して、両方のブリッジは、NDIO421上のデータ方向を逆転させている。しかし、スレーブにはSTL表示によって示されるようなデータが提供されていないので、NDIO421上のデータは、このサイクル中にCPUダイブリッジによって無視される。
【0173】
サイクル8 554において、BLOCK2は、今ではデータフェーズを完了する準備ができていることを示すために、それのHREADYOUT552をアサートする。BLOCK2は、要求されたデータをそれのHRDATA556上にさらに提供する。ASICダイAHBデータフェーズmuxは、前に登録されたアドレスフェーズに起因してこれらの信号を選択し、それらをASICダイブリッジ365に提供する。ASICダイブリッジ365は、NRESP423上でOKを示すことおよびNDIO421上でHRDATA556を駆動することによって、相互接続部を通じてこれを伝搬させる。CPUダイブリッジ350は、次いで、それのHREADYOUT544をアサートすることおよびそれのHRDATA558上でデータD2を駆動することによって、これをCPU AHBバスに伝搬させる。
【0174】
サイクル9 560において、CPUは、アドレスA3への読取りトランザクションを発行する。AHBブロックアドレスデコーダは、これがSRAM518に関連することを決定し、そのため、そのブロックへのHSELを発行する。CPUブリッジ350およびASICブリッジ365は、トランザクション相互接続部460シグナリングのためにすでにコマンドフェーズに逆転しており、元のCPUをNDIO421相互接続部上でのASICデータ方向に復元する。CPUダイブリッジ532へのHSELがアサートされていないので、ブリッジは、トランザクションを行うべき何も提供されておらず、そのため、NDIO上でIDLE擬似コマンドを発行する。ASICダイブリッジは、このIDLEコマンドを受信し、トランザクションを行うべき何も示さないものとしてそれを解釈し、そのため、それのAHBアドレスフェーズ信号508上でアドレスフェーズを発行しない。
【0175】
この例では、シーケンシングがそのことを許容するとき、同じサイクルにおいて相互接続部262信号との間でAHB信号514、512、508が伝搬されるように、多くの信号が他の信号から組み合わせて生成されるように示されている。依然として信号タイミングを維持しながらNCLK420周波数がさらに高くなることを可能にすることなどの、生成された信号がソース信号よりも後のサイクルにおいて提供されるように、登録されたやり方でこれらの信号転送のうちの1つまたは複数が行われることが可能であることが明らかなはずである。
【0176】
同様に、この例では、相互接続部262の中の信号の数は、必要とされる量のコマンドおよびデータフェーズ内容を単一のサイクルの中で転送するのに十分である。より少ない相互接続部しか使用されないなら、必要とされる内容をいくつかの直列化されたサイクルの中で転送するために、複数のNCLK420サイクルが使用されることが可能である。
【0177】
このシーケンス全体にわたって、CPUダイ246およびその上で実行するソフトウェアは、特別な処理をBLOCK1およびBLOCK2周辺機器に提供する必要がない。CPUダイ246 AHBバスの観点から、通常の方法でトランザクションが発行および応答された。CPUダイ上のAHBブロックアドレスデコーダがこれらのアドレスをCPUダイブリッジ350ブロックアドレス空間に関連付けるように、BLOCK1およびBLOCK2周辺機器のバスアドレスを割り振ることしか必要でない。CPUダイ246の仕様の間にASICダイ271上に実装された構成要素の認識を有することでさえ必要でない。ASICダイ271は、それの様々なAHBスレーブにHSEL信号を提供するためにそれ自体のAHBブロックアドレスデコーダを実装するので、CPUダイのAHBブロックアドレスデコーダの中で、ASICダイ271へのアドレスの大規模なブロックを割り振り、かつブロックアドレス復号の残部をASICダイ271に処理させることが十分である。このことは、単一CPUダイ246実装形態が、複数の異なるASICダイとかみ合わせられることが可能であり得るように、CPUダイ246が包括的となることを可能にすることができる。
【0178】
さらに、ASICダイ271上の周辺機器も、それらがASICダイ271上に実装されることに起因して特別な処理を必要としない。ASICダイ周辺機器の観点から、それらは標準的なAHBバス370に接続され、通常のAHBプロトコルに従って動作することができる。
【0179】
ASICダイ271の中の未実装アドレスに対してソフトウェアがトランザクションを開始するという事例を処理するために、ブロックアドレスデコーダ(または、周辺機器)は、ASICダイデータフェーズ中にエラーのHRESP表示を提供することができる。このことは、ERR表示としてNRESP423を通じて伝搬されることが可能であり、CPUダイブリッジ350は、それ自体のHRESPを通じてCPUダイAHBバス330へERR表示を伝搬させることができる。CPUおよびその上で実行するコードの観点から、その挙動は、それ自体のブロックアドレスデコーダが、実装されたAHBスレーブのうちのいずれにもそのアドレスが整合しないことを決定していた場合と同じである。さらに、バストランザクションは、不十分なセキュリティ許可に起因して不正である場合がある。AHBシステムでは、これはHPROT.PRIVILEGED612がアサート停止されたバスアクセスでありえ、そのことは、典型的には、カーネル特権コードによるアクセスのためにしか正当でない、バススレーブの中のアドレスにアクセスする、ユーザ特権コードによるアクセスを示す。さらに、HNONSECがアサートされていないアクセスのためにしか正当でない、バススレーブの中のアドレスにアクセスすることを試みる、HNONSECがアサートされたアクセスは、トランザクションエラーを生成すべきである。これらの場合には、ASICダイ271上のバススレーブは、ASICダイブリッジ365によって通常のAHB信号が提供されることが可能であり、次いで、HRESP423を使用してバスエラーを発行することなどによって、適切と見なすときにそのAHB信号に応答することができる。
【0180】
この技法を使用するバスエラー伝搬のシーケンス図例が
図6に示される。この例では、CPUは3つのトランザクションを開始し、そのうちの2つはエラー応答とともに完了する。サイクル1 622において、CPUは、ASICダイブロックアドレス空間に割り当てられているアドレスA0への書込みトランザクションを開始し、そのため、CPUブリッジのHSEL532は、サイクル1 622においてCPU AHBアドレスフェーズ中にアクティブ化される。CPUダイブリッジ350は、NDIO421相互接続部に提示するためのコマンドC0 618を構成する。ASICダイブリッジ365は、さらにこれをASICダイAHBバス上でAHBトランザクションアドレスフェーズの中に伝搬させる。ASICダイ271の中のブロックアドレスデコーダは、実装されたいかなるバススレーブにもこのアドレスを関連付けることをせず、そのため、AHBデフォルトスレーブのHSELがアクティブ化される。デフォルトスレーブは、AHB仕様による必要に応じて、それのHRESPデータフェーズ表示をアクティブ化すること、およびそれのHREADYOUTを使用してバスストールを実行することによって、2サイクルエラー応答を実行する。HRESPおよびHREADY信号は、通常のAHBデータフェーズ多重化を使用してASICダイブリッジ365に伝搬される。ASICダイブリッジ365は、データフェーズがエラーとともに完了することを示すために、NRESP423シグナリングを使用してERRを示す。CPUダイブリッジ350は、次いで、エラーを伴うこのCPUダイAHBトランザクションを完了するために、それのHRESP574およびHREADYOUT544信号を使用してそれ自体の2サイクルエラー応答を実行する。
【0181】
サイクル4 610において、CPUは他のバストランザクションを開始する。この場合、アドレスはASICダイ271上のバススレーブBLOCK1 516に整合するが、そのバススレーブは非特権的アクセスを許容しないように構成されている。CPUは、サイクル4 610においてAHBトランザクションアドレスフェーズを開始し、HPROT612のPRIVILEGED612ビットを使用して、これが非特権的アクセスであることを示す。CPUダイ246上のブロックアドレスデコーダは、このアドレスがCPUダイブリッジ350に関連することを検出し、そのため、CPUダイブリッジのHSEL532がアクティブ化される。CPUダイブリッジ350は、これをNDIO421コマンドフェーズC1 620の中に伝搬させる。そのコマンドフェーズ内容は、PRIVILEGED612ビットがセットされていないという情報を含む。ASICダイブリッジ365は、これをASICダイAHBトランザクションの中に伝搬させ、HPROTのPRIVILEGEDビット614はアクティブ化されない。ASICダイブリッジ365は、それのブロックアドレスデコーダがこのアドレスをBLOCK1に整合させるとき、BLOCK1 516に対してHSELをアクティブ化する。BLOCK1 516は、非特権的アクセスの場合におけるエラーとともに応答するように構成され、そのため、サイクル5 616およびサイクル6 624の間にデータフェーズの中でERROR応答を実施する。これは、通常のAHBデータフェーズマキシング(muxing)を通じてASICダイブリッジ365に伝搬される。ASICダイブリッジ365は、NRESP423相互接続部上でERRを示し、CPUダイブリッジ350は、そのことを検出するとともにCPUダイAHBバスのデータフェーズへの2サイクルエラー応答を実施する。
【0182】
サイクル7 626において、CPUは、BLOCK1 516への他のトランザクションを発行するが、この時には特権的ビットがセットされる。NDIO421 C2を通じて中継されるコマンドは、この情報を含む。ASICダイバスは、それ自体のHPROT PRIVILEGED614ビットがセットされてこのトランザクションを開始し、そのため、BLOCK1スレーブはエラーを伴わずにトランザクションを完了する。このことは、OK NRESP423表示を使用してCPUダイ246に戻って示され、CPUダイブリッジ350は、エラーを伴わずにCPUダイAHBデータフェーズを完了することによってOK NRESP423表示に応答する。
【0183】
図7は、様々なバーストを有する例示的なシーケンス図を示す。第1のバーストは、明示的なAHBバースト表示を有するシーケンシャルトランザクションである。CPUダイ246上のAHBバスマスタは、バスアドレスHADDR570 A0から始めて、INCRのHBURST710を使用してサイクル1 742においてトランザクションを発行する。アドレスA0は、CPUダイのブロックアドレスデコーダによってASICダイ271ブロックアドレス空間の中にあるものと決定され、そのため、AHBアドレスフェーズ中、CPUブリッジのHSEL532がアサートされる。CPUダイブリッジ350は、様々なAHBアドレスフェーズ信号を受信し、NDIO421コマンドフェーズC0 740を形成する。HBURST710がINCRであるものと示されたので、それが発生すべきバーストであったことをASICダイブリッジ365に示すためにコマンドC0 740が形成され、各転送のアドレスは、以前の1からインクリメントすべきである。このことが最も一般的な事例であるので、他のバーストタイプが示されることにならなかった場合、このことがデフォルトの挙動として想定されることが可能であるように、コマンドコーディングが構造化されることが可能である。HBURST710がいくつかの他のAHBバーストタイプ、たとえば、WRAP8であることになるなら、C0 740は、代わりにこの表示を提供するようにコーディングされることが可能である。サイクル2 744において、データワードD0が通常通り転送される。また、サイクル2 744において、CPUダイブリッジ350は、バースト継続に一致する他のAHBコマンドを受信し、そのため、データフェーズのバースト継続を示すためにNPHASE422をアサートする。一致性検査は、HADDR570が正しくインクリメントされること、ならびにHWRITE566およびHSIZE568が前の転送に整合することを、検証することを含むことができる。ASICダイブリッジ365は、NPHASEがアサートされていることを検出し、そのため、更新されたHADDR526および任意選択で更新されたHTRANS(番号付けされない)を伴うバースト継続を示すために、それのAHBバス上でパイプライン式アドレスフェーズを形成する。NDIO相互接続部が、データD0を転送しつつあり、そのため、このサイクルにおいて他のコマンドフェーズを提供するために使用されないときでさえ、ASICダイブリッジ365はこのことを行う。ASICダイ上の所望のAHBトランザクションが、以前のC0 740コマンド、およびNPHASEによって示されるようなバースト継続から推測される。次いで、サイクル3 746において、そのバーストにおける第2のデータフェーズを完了するために、NDIO421を介してデータD1が転送される。このことは、サイクル5 750においてAHBマスタがトランザクションを発行せず、そのため、そのサイクル中にNPHASE422がアサートされないことを除いて、サイクル4 748およびサイクル5 750において同様に継続する。サイクル5 750においてNPHASE422がアサートされておらず、かつサイクル5 750のデータフェーズNRESP423がSTLでなかったので、サイクル6 752の中のNDIO421相互接続部は、コマンドフェーズのために予約されるものと両方のブリッジによって理解される。ASICダイ271をターゲットにする他のCPU AHBトランザクションがサイクル6 752の間に開始されているか、または進行中のバーストに関連しないCPU AHBトランザクションがサイクル5の間に開始されておりCPUダイブリッジ365の中のさらに後のトランザクションのためにキューイングされているなら、その転送のためのコマンドは、サイクル6 752の間にNDIO421上で発行されることが可能である。この例では、そのようなトランザクションが示されなかったので、NDIO421相互接続部上で擬似コマンドIDLEが発行される。
【0184】
サイクル7 754において、CPUダイ246上のAHBマスタは、SINGLE HBURST710を用いてASICダイスレーブへのAHBトランザクションを開始し、このトランザクションがバーストの一部である可能性がないことを示す。ASICダイブリッジ365は、コマンドC4を形成してそのトランザクションをASICダイ271にブリッジし始める。バスマスタによって明示的に何も示されていなくても、コマンドC4はデフォルトのバーストタイプを示すようにコーディングされることが可能である。サイクル8 756における後続のデータフェーズ中、CPUダイAHBは、コマンドC4のすでに発行されたデフォルトのバーストタイプに偶然一致する他のAHBトランザクションを開始する。この場合、ASICダイブリッジ365は、バーストを推測することができ、個々のトランザクションをNDIO421バーストに変換するためにサイクル8 756においてNPHASE422を発行することができる。
【0185】
サイクル11 722において、CPUダイ246上のDMAコントローラ212は、同じアドレスA6への一連のFIFOトランザクションの中の最初のAHBトランザクションを開始する。DMAコントローラ212は、バースト継続が各転送に対して同じバスアドレスを使用すべきであることを示すNDIO421コマンドC6を発行するためのヒントとして、余分の信号NOINCR724をCPUダイブリッジ350に提供することができる。サイクル12 726において、DMAコントローラ212は、このシーケンスの中で次のトランザクションを発行する。CPUダイブリッジ350は、現在のコマンドC6の有効なバースト継続との、この新たなトランザクションの一致性を検証することができ、NPHASE422をアサートして、インクリメントしないバーストを継続することができる。ASICダイブリッジ365は、それのAHBバス上のサイクル12 726のアドレスフェーズの中にこれを形成し、以前に発行されたアドレスと同じアドレスへのトランザクションを示す。
【0186】
サイクル14 728において、CPUダイバスマスタは、同じアドレスA8への一連のFIFOトランザクションの中の最初のトランザクションを開始する。この場合、それはNOINCR724を示さず、インクリメントしないのとは同じでないデフォルトのバースティングタイプを伴うNDIO421コマンドフェーズC8をCPUダイブリッジ350が形成する結果となる。サイクル15 730におけるデータフェーズ中、CPUダイバスマスタは第2のトランザクションを開始し、CPUダイブリッジ350は、第2のトランザクションが、コマンドフェーズC8上でそれが以前に示していたものとは異なるバーストタイプに一致することを決定する。この場合、CPUダイブリッジ350は、観測されるAHBシーケンスが、インクリメントしないバーストに一致することを検出する。NDIO421コマンドC8が、推測されるバーストタイプに一致しないので、CPUダイブリッジ350は、今度のサイクル16 732に対してNDIO421相互接続部をコマンドフェーズに戻すために、サイクル15 730においてNPHASE422をアサート停止する。サイクル16 732の間、CPUダイブリッジ350は、インクリメントしない推測されたバーストタイプを示すために、更新されたNDIO421コマンドC9を発行する。このサイクル中、CPUダイブリッジ350は、NDIO421上で新たなコマンドC9が発行される間、CPUダイAHBバスのデータフェーズをストールさせるために、それのHREADYOUT544をアサート停止する。次いで、サイクル17 734~サイクル19 738に対して、CPUダイAHBバス405上で受信される各コマンドが、C9によって示されるバースティングタイプに一致し、したがって、バーストを継続するためにNRESPが使用されることが可能であるので、中断なくバーストの残部が継続することができる。
【0187】
図8は、ASICダイ271上の割込みソースとCPUダイ246上の割込みコントローラとの間の割込みブリッジングを示すシーケンス図を示す。この例では、ASICダイ271上の2つの割込みソースが、そのダイ上で割込み表示IRQ1 810およびIRQ2 812を生成する。IRQ1割込みソースはエッジベースの表示を使用し、IRQ2ソースはレベルベースの表示を使用する。CPUダイ246上の割込みコントローラは、ブリッジ818からの(CPUダイブリッジ350とCPUダイ246の中の他の構成要素との間のインターフェース信号のグループである)表示IRQ1 814およびIRQ2 816を受け入れるように構成される。これらの割込み要求ライン上でCPUダイブリッジ350が単一サイクル表示しか提供しないので、CPUダイ割込みコントローラは、レベルベースの表示またはエッジベースの表示のいずれかとしてこれらを受け入れるように構成されることが可能である。CPUダイブリッジ350は、これらの2つの割込みソースに対してTYPE表示が提供され、TYPE表示はEVENTまたはLEVELでありうる。EVENTは、ASICダイ271割込みソースがエッジベースのシグナリングを使用していること、およびそのため各割込みアクティブ化を単純なイベントとして扱うべきであることを示す。LEVELは、割込みソースがレベルベースのシグナリングを使用していることを示し、割込みコントローラの中での関連するPENDEDレジスタのクリアに応答してASICダイの割込み要求を再ポーリングする必要を示す。
【0188】
サイクル1 848において、ASICダイ271のASICダイIRQ1 810ラインが、割込みソースによってアサートされる。ASICダイ割込みブリッジは、0から1へのシーケンスを検出し、割込み立上りエッジをCPUダイ246に伝搬させる必要を決定する。ASICダイ割込みブリッジは、そのIRQ822に対してそれ自体のQUEUEDレジスタの中に、このイベントを伝搬させる必要を同じく登録しながら、適切な列挙型イベントをCPUダイ246に伝搬させるようにNEVT424トランスミッタ429に要求する。イベントブリッジがアイドルであるとき、ASICダイ割込みブリッジは、直列化されたイベントE0を形成するために2クロックシーケンスE0.0およびE0.1を使用して、NEVT424上でこのイベントを直ちに直列化し始めることができる。さらに、ASICダイNEVT424シリアライザ429は、(ASICブリッジ365からASICダイ271への信号の集合である)E0の完了したメッセージングをASICダイIRQブリッジ826に示し、そのため、必要とされるメッセージが送られているのでIRQ1 822に対してそれのQUEUEDレジスタをクリアする。サイクル2 850において、CPUダイブリッジ350は、E0イベント受信を検出し、IRQ1 814アサーションに対するイベントとしてE0イベント受信が符号化されるべきと決定する。CPUダイブリッジ350は、次いで、単一のサイクルにわたってCPUダイ246 IRQ1 814信号を駆動する。割込みコントローラは、NVIC868の中のIRQ1用の保留レジスタ、すなわち、IRQ1.PENDED828の中にこの表示を登録する。割込みコントローラの構成に応じて、このPENDED構成は、割込みサービスルーチンの実行をもたらすことができ、または単に読取りのためにソフトウェアにとって利用可能でありうる。どちらにしても、CPU履行に対して割込みが処理されていると、PENDED表示は、CPUがIRQ1.PEND_CLR830信号をアサートすることによって、クリアされることが可能である。割込みコントローラの内側で、このことはIRQ1.PENDED828レジスタのクリアリングという結果になる。このPEND_CLR信号は、CPUダイブリッジ350にとって利用可能にされる。ブリッジは、それのIRQ1.TYPE832がEVENTであることに留意し、そのため、これ以上のアクションの必要がないのでこの表示を無視する。
【0189】
サイクル5 852において、ASICダイ271 IRQ2 812ソースがそれの割込み要求をアクティブ化する。ASICダイブリッジ365は、サイクル1 848におけるIRQ1へのそれの応答と同様に応答し、CPUダイ246への直列化されたNEVT424メッセージE1が得られる。CPUダイ246は、以前のE0メッセージと同様に応答し、最終的にCPUダイ上でIRQ2信号816の単一サイクルアクティブ化を介して割込みコントローラの中のIRQ2.PENDED834レジスタがセットされる結果となる。
【0190】
依然としてE1が直列化しつつある間、ASICダイ271上のIRQ1 810ソースは、それの割込み要求をアクティブ化する。この場合、NEVT424相互接続部はE1を直列化するのにビジーであり、そのため、ASICダイ271上のIRQブリッジ826は、後でこれを直列化すべきと記憶するために、それのIRQ1.QUEUED822レジスタのみをセットする。サイクル7 854において、NEVT424相互接続部が利用可能になり、そのため、ASICダイ271 NEVT424シリアライザは、ASICダイ271 IRQブリッジ826の要求において、このIRQ1 810アクティブ化イベントを示すためにE2を直列化し始める。それがE0用と同じ割込みアクティブ化を表すので、E2がE0と同じコーディングを有することができることに留意されたい。サイクル8 856において、このイベント直列化が完了され、CPUダイ上でIRQ1信号814の単一サイクルアクティブ化を介して割込みコントローラの中のIRQ1.PENDED828レジスタがセットされる結果となり、イベント送信に成功したことをNEVT424シリアライザが報告することに起因して、同じくIRQ1.QUEUED822レジスタをクリアさせる。
【0191】
サイクル10 858において、CPUは、IRQ2 816のための割込みサービスルーチンに入り、IRQ2.PEND_CLR836およびIRQ2.ACTIVE838信号をアサートさせる。CPUダイ246 IRQブリッジ818は、PEND_CLRアサーション、およびIRQ2.TYPEがLEVELに設定されることに留意し、そのため、それのIRQ2.REPOLL840レジスタをセットする。IRQ2.ACTIVE838信号が割込みコントローラの内側でセットされるので、CPUダイ246 IRQブリッジ818はまだ再ポーリングを行うべきでなく、そのため、このサイクルにおいてこれ以上のアクションを行わない。サイクル11 860において、IRQ2.ACTIVE838信号は割込みコントローラの中でアサート停止される。今ではCPUダイ246 IRQブリッジ818が、IRQ2.ACTIVE838がセットされないことと同時にセットされた、それのIRQ2.REPOLL840レジスタを有するので、ASICダイ271 IRQブリッジ826が、それのIRQ2 812割込み表示を再検査し、かつその信号が現在ハイである場合に他のNEVT424イベントを生成する必要を示す特別なトランザクションを送るために、CPUダイ246 IRQブリッジ818はトランザクション相互接続部460の使用を要求する。この相互接続部460トランザクションC0 844は、サイクル12 860において行われる。ASICダイ271上のIRQブリッジ826は、それのIRQ2 812入力表示を再検査することによって、このトランザクションの受信に応答する。IRQ2 812がアサートされるので、IRQブリッジ826は、それのIRQ2.QUEUEDレジスタをセットし、割込みソースが現在アクティブであることをCPUダイ246に示すためにイベントE3の直列化を要求する。本例では、NEVT424相互接続部はビジーでなく、そのため、E3直列化はサイクル13 862において始まることができる。CPUブリッジ350がそれらを異なって扱う必要がないので、同じ列挙法を使用してE1およびE3を符号化することが可能であることに留意されたい。E3の受信は、イベントE1用と同様の方式でIRQ2 816上でのシグナリングを介してIRQ2.PENDED834レジスタがセットされる結果になる。
【0192】
サイクル17 864において、IRQ2.PENDED834レジスタがソフトウェアによってクリアされる。このことは、IRQ2.ACTIVE838ビット信号がアサートされることなくIRQ2.PEND_CLR836信号をアサートさせる。CPUダイ246 IRQブリッジ818は、IRQ2.PEND_CLR836がアクティブでありIRQ2.TYPE842がLEVELであることに起因して、それのIRQ2.REPOLL840ビットをセットする。IRQ2.ACTIVE838がセットされないので、CPUダイ246 IRQブリッジ818は、ASICダイ271上のIRQ2 812割込みソースを再ポーリングするためのトランザクションを、トランザクション相互接続部460に直ちに要求することができる。このことは、C0 844と同じコーディングを有することができるトランザクションC1 846にサイクル19 866においてトランザクションが行われることを引き起こす。ASICダイ271 IRQブリッジ826は、それのIRQ2 812割込み要求入力を点検すること、およびそれがアサートされていないことに起因してこれ以上のアクションを行わないことによって、C1 846の受信に応答する。CPUダイ246は、いかなる割込みアクティブ化メッセージも受信せず、そのため、IRQ2.PENDED834レジスタはセットされないままである。ASICダイ271 IRQ2 812割込みソースが再びアクティブ化する、いくらかの後の時間において、ASICダイ271は、サイクル5 852において行われたE1 NEVT424トランザクションと同様の方式で、このことをCPUダイ246に示すことができる。
【0193】
図9は、ASICダイ271 DMA有効化バススレーブとCPUダイ246のDMAコントローラ212の内側に含まれる信号922との間のDMA要求同期を示す例示的なシーケンス図を示す。この例では、DMA対応AHBダイ周辺機器は、CPUダイDMA要求DRQ1 920に同期されるべきDMA要求DRQ1 910を提供し、DMA要求DRQ1 910は、ASICダイ271上のFIFOアドレスへの4サイクルバースト書込みをCPUダイDMAコントローラに実施させる結果となるはずである。シーケンスの開始において、そのチャネルに対してDMAコントローラ212はまだ有効化されていない。CPUおよびASICダイDRQブリッジ912および914は各々、DRQチャネル(DRQ synchステートマシン414および428の内側にも信号がある)ごとに独立して、2つのダイの間のDRQ同期に対して状態916および918を維持する。このシーケンスの冒頭において、DRQチャネルDRQ1 920に対するCPUダイ246状態はUNKNであり、CPUダイ246がASICダイ271上のDRQ1 910信号の知識を有しないことを示し、この状態にある間、そのことはDMAコントローラ212へのDRQ1 920入力に非アクティブレベルを与える。この状態は、リセットからの初期状態であり、DMAコントローラ212がそのDRQチャネルをサービス作業に対して無効化させるときはいつでも進入される。DRQ1 910に対するASICダイブリッジ365初期状態はDISAであり、DISAは、CPUダイ246がそのチャネルのためのDRQ同期に無関心であることを、ブリッジのその側部に示す。
【0194】
サイクル1 934において、DMAコントローラ212の中でDRQ1 920のサービス作業が有効化される。CPUダイDRQブリッジ912は、サービス作業に対してDMAチャネルが有効化されることを示す信号DRQ1.ENAを受信する。それの同期状態がUNKNであるので、CPUダイDRQブリッジ912は、DRQチャネルDRQ1 910に対してASICダイ271 DRQブリッジ914に同期を要求する、NDIO421相互接続部上の特殊コマンドC0 930を要求する。トランザクションC0 930の完了に成功すると、CPUダイ246 DRQブリッジ912は、そのDRQチャネルに対してARMD状態に入る。AMRD状態にある間、CPUダイ246 DRQブリッジ912は、DRQ1 920に対してDMAコントローラ212に非アクティブ表示を提供する。コマンドC0 930を受信すると、ASICダイDRQブリッジ914は、それのDRQ1 910同期状態918に対してARMD状態に入る。
【0195】
ASICダイのDRQブリッジ914は、DRQ1 910チャネルに対してARMD状態にある間、DRQ1 910表示を検査し、信号がアクティブであるものと観測される場合、そのチャネルに対してPEND状態に入る。このことはサイクル4において行われる。PEND状態にある間、DRQブリッジ914は、DRQ1アクティブ化の表示をCPUダイ246へ送るようにNEVT424ブリッジに要求する。サイクル5 938において、NEVT424ブリッジはビジーでなく、そのため、DRQ1アクティブ化表示を送るためにイベントE0に対して2サイクル直列化を始める。このイベント送信が完了すると、ASICダイDRQブリッジ914はTRGD状態に入る。サイクル6におけるNEVT424イベントE0の受信の表示は、CPUダイDRQブリッジ912に提供される。DRQブリッジ912は、このイベントを受信するときDRQ1チャネルに対してARMD状態にあるので、そのチャネルに対してTRGD状態に入る。CPUダイDRQブリッジ912は、DRQ1チャネルに対してTRGD状態にある間、バストランザクションが、そのDRQチャネルに関係するBUSトランザクションに対してNRESP423上でOKDN応答を受信しているという表示を、トランザクション相互接続部から受信していない限り、アクティブなDRQ表示DRQ1 920をDMAコントローラ212に提供する。この場合、CPUダイDRQブリッジ912はこの表示を受信しておらず、そのため、DMAコントローラ212へのDRQ1 920をアサートする。
【0196】
サイクル9 940において、DMAコントローラ212は、それのDRQ1 920入力のアサーションに応答して、プログラムされたAHBバーストトランザクションを始める。DMAコントローラ212は、AHBアドレスフェーズ中に追加のアドレスフェーズ情報DRQN924をCPUダイブリッジ350に提供し、トランザクションがDRQ1 920応答性シーケンスの一部であることを示す。この場合、必要とされるトランザクションはインクリメントしないバーストであり、そのため、DMAコントローラ212はまた、NDIO421コマンドフェーズコマンドC1 932が、インクリメントしないバーストタイプを示すべきであることを示すために、NOINCR724アドレスフェーズバーストヒントを提供する。ブリッジされたAHBトランザクションを開始するために、CPUダイブリッジ350によってNDIO421コマンドC1 932が発行される。ASICダイブリッジ365は、このコマンドを受信し、DRQ1 910であることを監視されるべき、DRQチャネル番号を登録する。そのトランザクションに対する1つまたは複数のデータフェーズの各々の間、トランザクションが、データフェーズの完了に成功したことを示すはずであるときはいつでも、コマンドフェーズの中で示されるDRQチャネルに対するASICダイ271上のDRQ要求がそのデータフェーズ中にハイである場合、NRESP423表示はOKとなる。代わりに、そのASICダイ271 DRQ要求がデータフェーズ中にローである場合、NRESP423表示はOKDNである。データフェーズごとに、CPUダイAHBブリッジ926は、成功したデータフェーズ完了を示すようなOKまたはOKDNのいずれかを受け入れる。OKDNのCPUダイ246受信ごとに、CPUダイAHBブリッジ926は、この受信の表示をDRQブリッジ912にさらに提供する。DRQブリッジ912は、そのチャネルに対するDMAコントローラ212へのそれ自体のDRQ表示をアサート停止すること、および同じくそのチャネルに対するそれのDRQ同期状態をARMDに遷移させることによって、これに応答する。OKDNのASICダイ271送信ごとに、そのチャネルに対するASICダイ271 DRQ同期状態はARMDに変更される。この例示的なシーケンスでは、サイクル12 942においてこのことが最初に行われ、そのことは、サイクルが正確なやり方で、両方のダイ上のDRQ1 920および910の非アクティブ化を同期させる。
【0197】
一実施形態では、CPUダイおよび/またはASICダイは、他のダイのための複数の異なる構成との結合を可能にするためにランタイム時に変化できる複数のNDIO421幅構成を用いて実装する。単一の設計が、異なる相互接続幅を有する複数の他の設計と結合されることは、フレキシビリティを可能にするので、このことが望まれる。いくつかの実施形態では、NEVTおよびNRESPも再区分されてよい。
【0198】
図10Aは、電源投入またはリセット1010などにおける、初期レートが低減されたデータ発見プロシージャを実施する一実施形態を示し、相互にサポートされる相互接続幅を決定するために2つのダイがそれらの能力を互いに折衝することが可能である。一実施形態では、スタートアップにおいて、またはリセット1010に応答して、一部または全部の相互接続幅をなす両方のダイは、遠近法によるダイに限定される内部初期化プロセス1020を実行し、その両方は、広くサポートされる小さい相互接続幅を想定することによって始めることができ、場合によっては複数の接続メッセージを交換して接続(1030)するために、これを使用することができる。2つのダイは、次いで、この最小フォーマットを使用して能力1040データを交換することができ、次いで、それらが両方ともサポートするフォーマットをより良好に実行することに合意(1050)することができる。それらは、たとえば、独立した評価によって、またはCPUダイ246がそれの好ましいフォーマットを選択するとともにCTRLトランザクション106を使用してモード変更をASICダイに通信することによって、またはその両方で、このことを行う場合があり、たとえば、両方のダイが最良の能力セットを識別し、CPUダイが、トランザクション相互接続部460トランザクション1060を使用して、それの選ばれたセットをASICダイへ送る。さらに、通常動作中に電力を保存するために最小能力を維持すること、またはインターフェース電力消費を最適化することなどの、動作中に能力を再折衝することが、望まれることがある。この場合、2つのダイは、能力のより低いセットにおいて開始してよく、CPUダイは常に、リセットの必要なくCRTLメッセージ1060を使用して合意を変更するために後で選ばれる、初期能力交換1040に基づくことができる。
【0199】
図10Bは、CPUダイ246が、一部または全部の相互接続幅が可能であるが、一部または全部の幅オプションおよびいくつかの任意選択の信号によって必要とされる随意でない信号のセットなどの、限定された数の好適な幅でのみASICダイが実装されることを許容する、発見の代替プロセスの一実施形態である。ASICダイによって設けられる相互接続部だけがCPUダイ246に接続され、他のCPUダイ246の任意選択の相互接続ポートは未接続のままにされる。リセットまたは電源投球1010、および両方のダイの初期化1020の後、ASICダイは、それの任意選択の相互接続部の一部または全部において抵抗性プル1070を適用することによって、発見中にそれの接続性を示すことがある。CPUダイ246は、それの任意選択の相互接続ポートのうちのどれがこの抵抗性プルの存在を検出できるのかを感知することによって、ポート検出1080を行うことができる。このようにして、CPUダイは、ASICダイ相互接続幅を決定することができる。さらに、この情報を使用して、CPUダイ246は、これ以上のメッセージ交換を必要とすることなく、それの内部能力1090をASICダイに整合するようにセットアップする。相互接続幅が検出されると、ASICダイは、NDIO上で適切なコマンドを検出することなどによって、プルを除去することができる。一実施形態では、ASICダイがプルアップを適用することができ、すべて0としてコーディングされた、NDIO上のIDLEコマンドが、プルアップ除去を示すことができる。弱い電流源などの他のASICダイ表示も、抵抗性プルの代替として使用されることが可能である。
【0200】
図10Aおよび/または
図10Bにおけるプロセスのいくつかの実施形態では、追加的なまたはより少ない動作があってもよい。その上、動作の順序が変更されてよく、かつ/または2つ以上の動作が単一の動作に組み合わせられてよい。
【0201】
一実施形態では、開示する通信技法は、マスタ/スレーブ関係をなして2つのダイを常にブリッジするシステムを提供する。CPUダイは、少なくとも1つのマイクロコントローラコア(CPU)、およびそれの緊密に結合されたメモリを含むことが期待される。CPUダイは単一のCPUコアに限定されず、同じようにマルチコアをサポートする。CPUダイはまた、1つまたは複数のDMAコントローラおよびメモリを含んでよい。CPUダイは、リードフレームへのいかなる直接接続を必要とすることも期待されない。ASICダイは、外界へのCPUダイのゲートウェイでありうる。それは、特定の適用例のためのCPUダイの機能を補完することを必要とされるインターフェースおよび論理のうちのどちらでも実装するために、メモリマップ周辺機器を含む。インターフェースは、CPUにとって透過的な方式で、ASICダイ周辺機器とCPUダイとの間でバストランザクション、割込みイベント、およびDMA要求をブリッジし、したがって、CPU機能性を拡張する。外側から、ユーザには、2つのダイは単一のCPUのように見えること、および単一のCPUのように挙動することができる。CPUブロック観点から、ユニットは、これらの周辺機器への直接有線接続を有すると「考える」が、実はそれらは第2のダイの一部である(さらなる詳細については
図2および
図3を参照)。この効果(たとえば、アプリケーション開発マルチダイ透過性)を達成するために、本明細書は複数の実施形態を含む。
【0202】
テキストおよび図面を作成する際に、単に便宜のためにいくつかの選択が説明において行われており、それとは反対の表示がない限り、その選択は、説明した実施形態の構造または動作に関する追加の情報を伝達するものとして、それ自体解釈されるべきでない。その選択の例は、図面の番号付けのために使用される指定の特定の編成または割当て、ならびに本実施形態の特徴および要素を識別および参照するために使用される要素識別子の特定の編成または割当て(たとえば、コールアウトまたは数値指示子)を含む。
【0203】
「含む」および「備える」という語の様々な形態は、特にオープンエンドな範囲の論理的なセットを表す抽象性として解釈されることが意図され、(「~内」という語が後続するように)明示的に記載されない限り物理的な包含を伝達することは意図されない。
【0204】
上記の実施形態は、説明および理解の明確性のために、ある程度詳細に説明されているが、開示する通信技法は、提供された詳細に限定されない。開示する通信技法の多くの実施形態がある。開示する実施形態は例示的であり制限的ではない。
【0205】
構成、配置、および使用における多くの変形が、本説明と矛盾なく可能であり、発行される特許の特許請求の範囲内に入ることが、理解されよう。たとえば、相互接続部および機能ユニットのビット幅、クロック速度、および使用される技術のタイプは、各構成要素ブロックにおける様々な実施形態に従って可変である。相互接続部および論理に与えられる名称は例示的にすぎず、説明する概念を限定するものとして解釈されるべきでない。フローチャートおよびフロー図のプロセス、アクション、および機能要素の順序および配置は、様々な実施形態に従って可変である。また、それとは反対に特に明記されていない限り、指定される値範囲、使用される最大値および最小値、または(ファイルタイプ、ならびにレジスタおよびバッファの中のエントリまたはステージの数などの)他の特定の仕様は、説明する実施形態のものにすぎず、実装技術における改善および変更を追跡することを期待され、限定として解釈されるべきでない。
【0206】
当技術分野で知られている機能的に等価な技法は、様々な構成要素、サブシステム、動作、機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するために説明されたものの代わりに採用可能である。(以前にはハードウェアにおける機能の、ソフトウェアへの移行を容易にする)さらに速い処理、および(以前にはソフトウェアにおける機能の、ハードウェアへの移行を容易にする)さらに高い集積密度の、実施形態依存の設計制約および技術動向に応じて、実施形態の多くの機能態様が、ハードウェア(たとえば、一般に専用の回路構成)またはソフトウェア(たとえば、プログラムされたコントローラまたはプロセッサのいくつかの方式を介して)のいずれかで選択的に実現可能であることも理解される。様々な実施形態における特定の変形は、限定はしないが、区分における差異、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、ならびに特定の適用例の固有のエンジニアリング制約およびビジネス制約に従って、本明細書で説明する概念を実施するときに予想されるべき、他の変形を含む。
【0207】
本実施形態は、説明する実施形態の多くの態様の最小実装形態のために必要とされるものをはるかに超えた、詳細かつ環境的な文脈とともに説明されている。いくつかの実施形態が、残りの要素の間の基本的な協働を変えることなく、開示する構成要素または特徴を省略することを、当業者は認識されよう。したがって、説明する実施形態の様々な態様を実施するために、開示する詳細の多くが必要とされないことが理解される。残りの要素が既存の手法から区別可能である範囲内で、省略される構成要素および特徴は、本明細書で説明する概念において限定的ではない。
【0208】
設計におけるすべてのそのような変形は、説明する実施形態によって伝達される教示に優先する、わずかな変更である。本明細書で説明する実施形態が、他のコンピューティングおよびネットワーキング適用例への広い適用可能性を有し、説明する実施形態の特定の適用例または業界に限定されないことも、理解される。したがって、開示する通信技法は、発行される特許の特許請求の範囲内に包含される数多くの可能な修正および変形を含むものとして解釈されるべきである。
【0209】
開示する実施形態は、任意の電子デバイスであることが可能である(または、その中に含まれることが可能である)。たとえば、電子デバイスは、セルラー電話もしくはスマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、パーソナルもしくはデスクトップコンピュータ、ネットブックコンピュータ、メディアプレーヤデバイス、電子ブックデバイス、MiFi(登録商標)デバイス、スマートウォッチ、ウェアラブルコンピューティングデバイス、ポータブルコンピューティングデバイス、コンシューマ電子デバイス、アクセスポイント、ルータ、スイッチ、通信機器、テスト機器、車両、船舶、飛行機、自動車、トラック、バス、オートバイ、製造機器、農業機器、建築機器、または他のタイプの電子デバイスを含んでよい。
【0210】
本実施形態を説明するために特定の構成要素が使用されるが、代替実施形態では、異なる構成要素および/またはサブシステムが提示されてよい。したがって、システムおよび/または集積回路の実施形態は、より少ない構成要素、追加的な構成要素、異なる構成要素を含んでよく、2つ以上の構成要素が単一の構成要素に組み合わせられてよく、単一の構成要素が2つ以上の構成要素に分離されてよく、かつ/または1つもしくは複数の構成要素の1つもしくは複数の位置が変更されてよい。
【0211】
その上、システムおよび/または集積回路の実施形態における回路および構成要素は、バイポーラ、PMOS、および/またはNMOSのゲートまたはトランジスタを含む、アナログおよび/またはデジタルの回路構成の任意の組合せを使用して実装されてよい。さらに、これらの実施形態における信号は、ほぼ個別の値を有するデジタル信号および/または連続的な値を有するアナログ信号を含んでよい。さらに、構成要素および回路はシングルエンドまたは差動でありえ、電源は単極性または両極性でありうる。前述の実施形態における電気結合または電気接続が直接的または間接的でありうることに留意されたい。前述の実施形態では、ルートに対応する単一のラインは、1つまたは複数の単一のラインまたはルートを示してよい。
【0212】
集積回路は、通信技法の機能性の一部または全部を実施してよい。この集積回路は、本通信技法に関連する機能性を実施するために使用されるハードウェアおよび/またはソフトウェアのメカニズムを含んでよい。
【0213】
いくつかの実施形態では、本明細書で説明する回路のうちの1つまたは複数を含む、集積回路または集積回路の一部分を設計するためのプロセスの出力は、たとえば、磁気テープまたは光ディスクもしくは磁気ディスクなどの、コンピュータ可読媒体でありうる。コンピュータ可読媒体は、集積回路または集積回路の部分として物理的にインスタンス化されてよい回路構成を表す、データ構造または他の情報を用いて符号化されてよい。そのような符号化のために様々なフォーマットが使用されてよいが、これらのデータ構造は、一般的には、Caltech中間フォーマット(CIF:Caltech Intermediate Format)、Calma GDS IIストリームフォーマット(GDSII)、電子設計交換フォーマット(EDIF:Electronic Design Interchange Format)、OpenAccess(OA)またはOpen Artworkシステム交換規格(OASIS:Open Artwork System Interchange Standard)で書かれる。集積回路設計の当業者は、上記で詳述したタイプの概略図および対応する説明からそのようなデータ構造を開発することができ、コンピュータ可読媒体上にデータ構造を符号化することができる。集積回路製作の当業者は、そのような符号化データを使用して、本明細書で説明する回路のうちの1つまたは複数を含む集積回路を製作することができる。
【0214】
前述の実施形態における動作のうちのいくつかが、ハードウェアまたはソフトウェアで実装されたが、一般に、前述の実施形態における動作は、多種多様な構成およびアーキテクチャで実装されることが可能である。したがって、前述の実施形態における動作の一部または全部は、ハードウェアで、ソフトウェアで、またはその両方で実行されてよい。たとえば、本通信技法における動作のうちの少なくともいくつかが、集積回路の中のプロセッサによってまたはファームウェアで実行されるプログラム命令を使用して実施されてよい。
【0215】
その上、前述の説明では数値の例が提供されるが、他の実施形態では異なる数値が使用される。したがって、提供される数値は限定的であることを意図しない。
【0216】
前述の説明では、「いくつかの実施形態」に言及する。「いくつかの実施形態」は、可能な実施形態のすべてのサブセットを表すが、実施形態の同じサブセットを常に指定するとは限らないことに留意されたい。
【0217】
上記の説明は、任意の当業者が本開示を作成および使用することを可能にすることを意図し、特定の適用例およびそれの要件の文脈で提供される。その上、本開示の実施形態の上記の説明は、例示および説明の目的のために提示されているにすぎない。それらは網羅的であること、または開示する形態に本開示を限定することを意図しない。したがって、多くの修正および変形が、当技術分野における熟練した実務者に明らかとなり、本明細書において定義する一般原理は、本開示の趣旨および範囲から逸脱することなく他の実施形態および適用例に適用されてよい。さらに、前述の実施形態の説明は本開示を限定することを意図しない。したがって、本開示は、示される実施形態に限定されることを意図せず、本明細書で開示する原理および特徴に一致する最も広い範囲が与えられるべきである。
【符号の説明】
【0218】
100 単一ダイマイクロコントローラ
110 クロック逓倍器およびマルチプレクサ(mux)
115 クロックソース
120 CPUおよび任意選択のDMAコントローラ
125 AHBバス、AHBインターフェース、AHBデータバス
130 DMA要求信号(DRQ)
135 電力管理ユニット(PMU)インターフェース
140 デバッグアクセスポート(DAP)インターフェース
145 基本ASIC機能
150 デバッグアクセスポート(DAP)
160 割込み要求信号(IRQ)
200 マイクロコントローラダイ、単一ダイマイクロコントローラ
201 インターフェース
205 電力管理ユニット(PMU)
210 複合comms/センサ/アクチュエータ、アナログブロック
211 カスタムDSP論理
212 DMAコントローラ
213 フラッシュメモリ
216 RAM
217 CPU
218 デバッガ論理
219 発振器
220 相互接続部、単一ダイ相互接続部
221 低電圧通信周辺機器
222 低電圧センサ周辺機器
223 低電圧アクチュエータ周辺機器
224 CAN/LIN通信周辺機器
225 高電圧センサ
226 高電圧アクチュエータ
227 インターフェース
229 相互接続部インターフェース
230 相互接続部インターフェース
231 相互接続部インターフェース
232 専用インターフェース
233 専用インターフェース
234 CPUインターフェース
235 インターフェース
236 相互接続部インターフェース
237 相互接続部インターフェース
238 相互接続部インターフェース
239 相互接続部インターフェース
240 相互接続部インターフェース
241 相互接続部インターフェース
242 相互接続部インターフェース
243 セキュリティマネージャ
244 PMUコントローラ
245 マスタブリッジ
246 CPUダイ
248 CPUダイ相互接続部
252 インターフェース
256 CPU PMUインターフェース
257 インターフェース
258 インターフェース
260 インターフェース
261 ダイ間信号
262 ダイ間相互接続部
264 スレーブブリッジ
265 発振器
267 セキュリティマネージャ
268 PMU
271 ASICダイ
272 ASICダイ相互接続部
279 インターフェース
280 インターフェース
281 インターフェース
282 インターフェース
283 インターフェース
299 CPUデバッグ論理
310 CPUダイクロック逓倍器およびmux
315 クロックソース
317 ASICダイインターフェースクロック
325 CPUダイインターフェースクロック
330 バスインターフェースAHB、AHBトランザクション
335 EVENTS
340 PMU同期
345 DAP
350 ブリッジ/serdes、CPUダイブリッジ
355 I/Oインターフェース
360 I/Oインターフェース
365 ブリッジ/serdes、ASICダイブリッジ
370 AHBトランザクション、AHB
375 ASICダイイベント
380 PMU状態およびイベント
385 デバッグインターフェース構成およびイベント
390 ASIC機能
395 DAP
401 クロック逓倍器
402 クロックFCLK
404 PMUトランザクションインターフェース
405 AHBマスタ、AHBスレーブインターフェース
406 AHBマスタ、AHBスレーブインターフェース
407 DMAインターフェース、DMA信号、DMAフック
411PMUインターフェース
412 イベントレシーバ
414 DRQ同期論理、CPUダイ同期論理
415 シーケンサ/PHY
416 RE_STRB
417 構成SFRバンク
418 アービタ/mux
419 構成レジスタバンク
420 NCLK
421 NDIO
422 NPHASE
423 NRESP
424 イベント中継相互接続部NEVT
426 シーケンサ/PHY
428 DRQ同期論理
429 イベントトランスミッタ
430 アービタ/mux
431 IRQ同期論理
432 PMUインターフェース
433 IRQインターフェース
434 DRQ信号、DMAインターフェース、DRQソース
436 AHBマスタインターフェース
437 AHBマスタインターフェース
438 PMUトランザクションインターフェース
447 表示信号
448 インターフェース
449 インターフェース
451 IRQ同期論理
454 インターフェース
455 インターフェース
457 インターフェース
458 クロック
459 クロック
460 トランザクション相互接続部
465 インターフェース
467 インターフェース
470インターフェース
474 インターフェース
475 IRQインターフェース、IRQ相互接続部
【国際調査報告】