[関連出願の相互参照]
本願は、2015年5月5日出願の「Fast SMP/ASMP Mode−Switching Hardware Apparatus for a Low−Cost Low−Power High Performance Multiple Processor System」と題する米国非仮特許出願第14/704,240号に対する優先権を主張する。当該米国非仮特許出願第14/704,240号は、2014年12月22日出願の「A Novel Low Cost, Low Power High Performance SMP/ASMP Multiple−Processor System」と題する先の米国特許出願第14/580,044号の一部継続出願であり、当該米国特許出願第14/580,044号は同様に、2014年10月16日出願の「Hardware Apparatus and Method for Multiple Processors Dynamic Asymmetric and Symmetric Mode Switching」と題する先の米国特許出願第14/516,314号の一部継続出願である。これらの特許出願は全て、その全体が再現されるかのように、参照により本明細書に組み込まれる。
本発明は概して複数のプロセッサアーキテクチャ及びシステムに関し、より具体的には、マルチプロセッサシステムにおいて非対称型マルチプロセッシングモードと対称型マルチプロセッシングモードとの間のモード切り替えのための装置及び方法に関する。
マルチプロセッシングシステムは、複数のプロセッサ(例えば、中央演算処理装置(CPU))を利用して、データを処理し、所望の機能を実行する。理解されるように、用語「プロセッサ」は、用語「CPU」又は「コア」と同義に使用され、当業者によって容易に理解される。従来技術では、対称型マルチプロセッシング(SMP)及び非対称型マルチプロセッシング(ASMP)という、2つの主なタイプの異なるマルチプロセッシングシステムが存在する。
SMPシステムは典型的には、全てのシステムリソース、単一の同期L2キャッシュインターフェース(及び場合により非同期L2)の共有によって特徴付けられ、プロセッサは、同一のクロック周波数及びクロック電圧で制御される。このことはまた、概して、プロセッサ/コアが(L2キャッシュ及びメモリなどの)共有メモリシステムに均等にアクセスできることを意味している。SMPでは、クロック周波数及び電圧は個別に調整可能ではなく、故に、コア/プロセッサごとに変更され得ない。加えて、L2キャッシュは全てのコアの中で共有され、L2キャッシュ周波数はコアごとにスケーラブルではない。全てとは言えないにしてもほとんどのアプリケーションにおいて、SMPにおけるプロセッサの作業負荷は不平衡であり、このことが消費電力をより高くする原因となる。SMPはまた、全てのプロセッサ/コアを均等に扱う(均等性)と見なされてよい。
これに対して、ASMPシステムは典型的には、プロセッサに対して個別に、異なるクロック周波数及び/又はクロック電圧を有することによって特徴付けられ、L2キャッシュクロック周波数は独立してスケーリングされ得る。従って、プロセッサクロック周波数及びL2キャッシュ周波数は、作業負荷に基づいてスケーリングされ得る(例えば、メモリ集中型の作業負荷の場合は、コアと比べてより速いL2キャッシュ)。大まかに言えば、ASMPシステムはSMPシステムよりも電力面でより効率的であるが、追加の、及びより複雑なハードウェアが、潜在的により高い消費電力の原因となる可能性がある。L1キャッシュミス率が高い場合、プロセッサはL2キャッシュからデータをフェッチする。要求された関連データが、L2キャッシュの低い方のクロック周波数部分に格納されている場合、プロセッサはデータを待たなくてはならない。このことが、より高いレイテンシ、及びより高い消費電力の原因となる。ASMPはまた、全てのプロセッサ/コアを異なる様に、又は不均等に扱う(不均等性)と見なされてよい。
先の(出願日が2014年12月22日の)米国特許出願第14/580,044号は、ASMPを使用する複数のプロセッサを有する処理システム100の基本アーキテクチャと、同様の従来技術のシステムがSMPに利用されることとを(その図1において)例示し、説明したが、当業者ならば容易に理解するように、それらのプロセッサは、単一のクロック周波数で、かつ単一の供給電圧レベルを使用して動作する。当該出願においては、(1)SMP/ASMPモード間の高速かつ効率的な動的切り替えのためのハードウェアベースの装置と、(2)1つのコアから2つのコアへ、当該2つのコアがASMPモードで動作している(及び、3つ以上のコアが動作する場合は、それらをSMPモードで動作させる)状態で切り替えることに重点を置いた低コストバージョンのSMP/ASMPシステムとを含む、基本システムに対する様々な改善が説明されている。
ソフトウェアによる介在がない状態での、ハードウェアベースの、又はハードウェアで実施される切り替えは、SMP/ASMPモード間のより高速な遷移を提供し得る。従って、ハードウェアベースの切り替え方法及び装置を利用した高速SMP/ASMPモード切り替えを提供する低コスト、低電力のマルチプロセッシングシステム又はアーキテクチャが必要である。
一実施形態に従って、第1の供給電圧を受け、第2の供給電圧を生成するよう構成された電圧レギュレータ回路であって、当該第2の供給電圧は第1の供給電圧より低い電圧値を有する、電圧レギュレータ回路と、第1の予め定められた周波数及び第1の供給電圧を有する第1のクロック信号を受信し、それらに従って動作するよう構成された第1のプロセッサと、第1のクロック信号、又は、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号の何れかを受信し、それに従って動作し、第1の供給電圧又は第2の供給電圧を受け、それに従って動作するよう構成された第2のプロセッサとを備えるマルチプロセッサ(MP)処理システムを含むマルチプロセッシングシステムが提供される。当該システムはまた、電圧レギュレータ回路に連結され、第1の供給電圧又は第2の供給電圧を第2のプロセッサに選択的に入力するためのバイパス信号を生成するよう構成されたコントローラを備え、当該第1のプロセッサは更に、第1モードの動作中においても、第2モードの動作中においても、第1のクロック信号及び第1の供給電圧のみを受け、それらに従って動作するよう構成されている。
別の実施形態に従って、マルチプロセッシング機能を実行するよう構成された、第1のプロセッサ及び第2のプロセッサを含む複数のプロセッサを有することを備える装置が提供される。コントローラが第1モード及び第2モードで第2のプロセッサの動作を制御するよう構成されており、クロック生成回路が、コントローラに連結され、コントローラからの1又は複数の信号に応答して第1のクロック信号及び第2のクロック信号を生成及び出力するよう構成されており、切り替え回路が、クロック生成回路及び第2のプロセッサとの間に配置され、第1のクロック信号及び第2のクロック信号を受信し、第2のプロセッサに出力するために一方を選択するよう構成されており、ここで、第1モードの動作中、第1のクロック信号は第2のプロセッサに出力され、第2モードの動作中、第2のクロック信号は第2のプロセッサに出力される。当該装置はまた、コントローラに連結され、第1の動作電圧信号を受信し、第1の動作電圧信号から第2の動作電圧信号を生成し、第1モードの動作中、第2のプロセッサに入力するために第1の動作電圧信号を出力し、第2モードの動作中、第2のプロセッサに入力するために第2の動作電圧信号を出力するよう構成された電圧レギュレータ及びバイパス回路を備える。第1モードの動作及び第2モードの動作中、第1のクロック信号は第1のプロセッサに入力される。更に別の実施形態に従って、対称型マルチプロセッシング(SMP)モードと、非対称型マルチプロセッシング(ASMP)モードとの間で複数のプロセッサを切り替える方法が提供される。当該方法は、第1のプロセッサが動作する間、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた動作電圧を有する第1の供給電圧とに従って第1のプロセッサを動作させる段階と、第1の供給電圧から第2の供給電圧を生成する段階と、モード選択信号を受信する段階と、モード選択信号に応答して、第1モードの動作又は第2モードの動作で第2のプロセッサを動作させる段階とを備える。第1モードの動作では、第2のプロセッサは第1のクロック信号及び第1の供給電圧に従って動作させられ、第2モードの動作では、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び第2の供給電圧に従って動作させられる。
更に別の実施形態では、複数のプロセッサを有するマルチプロセッサシステムにおける処理の方法を提供する。当該方法は、複数のプロセッサ内の第1のアクティブプロセッサのみを使用して、マルチプロセッサシステム内で処理する段階と、マルチプロセッサシステム内での処理のために、第2のプロセッサがアクティブ化されるべきであると判断する段階と、当該判断に応答して、第2のプロセッサをアクティブ化する段階と、対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、第1のアクティブプロセッサ及び第2のアクティブプロセッサを使用してマルチプロセッサシステム内で処理する段階とを備える。SMPモードにある場合、第1のアクティブプロセッサ及び第2のアクティブプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作し、ASMPモードにある場合、第1のアクティブプロセッサは、第1のクロック信号及び第1の供給電圧に従って動作し、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び、第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作する。当該方法は更に、モード選択信号を受信し、モード選択信号に応じて、SMPモードからASMPモードへ、又はASMPモードからSMPモードへの何れかに、第1のアクティブプロセッサ及び第2のアクティブプロセッサの動作を切り替える段階を備える。
別の実施形態において、第1のプロセッサ及び第2のプロセッサ、並びに、少なくとも第2のプロセッサに連結されたコントローラを有するマルチプロセッサ(MP)処理システムが提供される。当該コントローラは、アクティブ化/非アクティブ化信号に応答して第2のプロセッサをアクティブ化又は非アクティブ化し、第2のプロセッサがアクティブ化され次第、対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、第1のプロセッサ及び第2のプロセッサを使用するマルチプロセッサシステム内での処理を制御するよう構成されている。SMPモードは、第1のプロセッサ及び第2のプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作するモードと定義され、ASMPモードは、第1のプロセッサは第1のクロック信号及び第1の供給電圧に従って動作し、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作するモードと定義される。当該コントローラは更に、モード選択信号を受信し、モード選択信号に応じて、SMPモードからASMPモードへ、又はASMPモードからSMPモードへの何れかに、第1のプロセッサ及び第2のプロセッサの動作を切り替えるよう構成されている。
本発明とその利点をより完全に理解するために、ここで、添付の図面と併せ、以下の説明を参照する。同様の番号は同様の対象物を指定する。
本開示によるマルチプロセッシング(MP)システムを例示する。
図1に示されたマルチプロセッシングシステムをより詳細に例示した図である。
本開示による、図2に示されたシステムで使用するための、例示的な有限ステートマシン(FSM)及びプロセスを例示する。
本開示による、図2に示されたシステムで使用するための、例示的な有限ステートマシン(FSM)及びプロセスを例示する。
図2に示された電圧レギュレータ及び切り替えコントローラの一実装例を例示する図である。
図2に示された電圧レギュレータ及び切り替えコントローラの別の実装例を例示する図である。
図2に示された電圧レギュレータ及び切り替えコントローラの別の実施形態を例示する。
SMP/ASMPモード切り替えを起動及び制御するためのアーキテクチャ(方法、プロセス、システム)の図である。
SMP/ASMPモード選択/切り替えプロセスと統合された、プロセッサの追加/削除のためのプロセスの概略フロー図である。
本開示は、(出願日が2014年12月22日の)米国特許出願第14/580,044号に記載の図及び説明の全てを本明細書において十分に記載されたかのように、参照により組み込む。
本明細書で説明される図1から図8、及びそれらの中で例示される様々な実施形態、並びに本特許文献における本開示の以下に説明される原理は、例示することのみを目的とし、決して本発明の範囲を限定するものと解釈されるべきではない。当業者であれば、本明細書で説明される原理が、任意のタイプの適切に構成された(1又は複数の)デバイス又は(1又は複数の)システムにおいて実装されてよいことを理解するであろう。
米国特許出願第14/580,044号に説明されているように、プロセッサ/コアのグループの動作を完全SMPシステムから完全ASMPシステムへ切り替える場合、このSMP/ASMP動的切り替え機能の提供に関連する費用及び複雑さ(ハードウェア/ソフトウェア)はかなり大きなものであるだろう。より小さなデバイス(例えば、スーパーコンピューティングのデバイスおよびアプリケーションとは対照的に、モバイルアプリケーションにおけるモバイルデバイス、ハンドヘルドデバイス、スマートフォン等)の場合、研究及び試験から、ほとんどの使用アプリケーションにおいて、マルチプロセッシングタスク/機能は、2つ(又はそれより少ない)プロセッサ/コアを使用して十分に対処され得ることが分かった。これらのアプリケーションのほとんどにおいて、2つのプロセッサ/コアは不平衡負荷で実行され、より高い消費電力をもたらす。
故に、米国特許出願第14/580,044号は、ASMP方式−しかしASMP方式では、プロセッサ/コアのうちのただ1つのプロセッサ/コア(又はプロセッサ/コアのサブセット)が、異なるクロック周波数及び/又は異なる動作供給電圧の間での動的切り替えのために構成及び有効にされる−で、かつ、残りのプロセッサ/コアは、同一のクロック周波数及び同一の供給電圧で構成された状態で動作可能な、低コスト、低電力、高性能なマルチプロセッシングシステムを説明している。例えば、マルチプロセッサシステムが2つのプロセッサ/コアを含む場合、第1のプロセッサ/コアは、(動的に可変ではない)第1のクロック周波数、及び(動的に可変ではない)第1の供給電圧で動作し、第2のプロセッサ/コアは、その(第1のプロセッサ/コアと同一の)第1の周波数及び第1の供給電圧、又は異なる周波数及び異なる供給電圧の何れかでの動作の間で切り替え可能である。これは、プロセッサ/コアのうちの少なくとも1つ(又は、サブセット)がこの動的切り替え機能を有する、3つ以上のプロセッサ/コアを有するシステムにおいてもまた適用されてよい。
効率及び切り替えレイテンシを改善すべく、本開示は、2つのモード間での制御及び切り替えを可能にするハードウェアベースの切り替え装置を有するシステムを提供する。ハードウェア内では、オペレーティングシステム(OS)又は他のソフトウェア/ハードウェアから切り替えコマンドを受信し次第、SMPとASMPとの間で切り替えるべく、複数のプロセッサ及びメモリへのクロック及び電圧を制御するよう、一続き又は一連のアクションが実行される。当該装置/方法は、ソフトウェア/OSの介在を最小化、又は取り除き、より高速なモード切り替え速度を有する。
本明細書で使用されるとき、用語SMPは概して、同一のクロック(周波数)及び同一の電圧源で、(当該同一のクロック及び電圧源で動作するL2キャッシュメモリを有する)共有メモリシステムを利用して動作する複数のプロセッサ/CPU/コアを使用した処理を指す。用語ASMPは概して、少なくとも2つが、異なるクロック(周波数)及び/又は電圧源で動作する複数のプロセッサ/CPU/コアを使用した処理を指す。ASMPでは、典型的には、プロセッサはそれぞれ異なるL2キャッシュメモリを利用する。しかしながら、ASMPはまた、同一のL2キャッシュメモリの共有(異種ASMPと称される)を含んでよい。別の態様では、用語ASMPは、各プロセッサ/CPU/コアが、第1のクロック周波数及び第1の供給電圧、又は第2のクロック周波数及び第2の供給電圧の少なくとも何れかを使用して動作するよう構成されている、複数のプロセッサ/CPU/コアを使用したマルチプロセッシングを指す。加えて、ASMPモードは概して、グループ内の他のコアと同一のクロック周波数及び同一の供給電圧を使用して動作可能な少なくとも1つのコア(又は、それより多いが、全てのコアより少ないコア)が、異なるクロック周波数及び供給電圧を使用するよう動的に切り替えられる、又は構成されている、コアのグループ(複数のコア)を使用したマルチプロセッシングを指す。このように、コアのグループはSMPモード又はASMPモードの何れかで動作するが、グループ内の少なくとも1つ(全てではない)は、異なるクロック周波数及び供給電圧を有する。
理解されるように、本明細書で使用される用語「コア」は、1つのプロセッサ、CPU、又は処理コアを指し得る。当該定義はまた、広げられて、複数のプロセッサ、CPU、又は処理コアを有する「コア」を表す、又は指し得る。従って、本明細書における用語「コア」の使用は、1つの処理要素に限定されるのではなく、同一の処理要素のグループを含み得る。加えて、用語「コア」、「プロセッサ」、及び「CPU」は、本明細書では互換的に使用され得、かつ、使用される。
ここで図1を参照すると、本開示によるマルチプロセッシング(MP)システム100が示されている。MPシステム100は、第1の動作電圧源120(VDD)と、単一のクロック信号130(CLK)とに連結されたコアA、C、及びD(110a、110c、110d)を含み、一方で、コアB(110b)は、第2の電圧源140(VDDb)と、クロック信号150(CLKb)とに連結されている。この構成において、コアBは、第1の動作電圧源120(VDD)に由来する第2の電圧源140(VDDb)に連結されている。電圧レギュレータ及び切り替えコントローラ160が、第1の動作電圧源(VDD)を受け、第2の電圧源(VDDb)を生成する。図1には図示されないが、電圧レギュレータ及び切り替えコントローラは(選択されたモードに応じて)VDDb又はVDDの何れかをコアBに出力する。従って、VDDbはVDDに由来する。様々な実施形態において、電圧レギュレータ及び切り替えコントローラ160は、同一チップ又はモノリシック基板上にシステム100と共に構築又は配置され、別の実施形態においては、異なるチップ又は基板上にあってよい。
ここで図2を参照すると、本開示による処理システム100を例示する詳細図が示されている。
大まかに言えば、処理システム100は、SMP及びASMPという2つのモードの動作間で切り替え可能なプロセッサのグループ(複数のプロセッサ)を含む。SMPモードでは、動作しているプロセッサ(例えば、1つ、3つ、又は4つ全て)が同一のクロック周波数及び供給電圧を使用して動作する一方、(以下で説明される異なる実施形態における)ASMPモードでは、少なくとも1つの第1のプロセッサは、残りの動作しているプロセッサのものとは異なるクロック周波数及び供給電圧を使用して動作するよう構成されている。
当該システムは、異なる2つのクロック周波数及び供給電圧の間での第1のプロセッサの制御及び切り替えを可能にするハードウェア装置/回路を含む。ハードウェア内では、オペレーティングシステム(OS)又は他のソフトウェア/ハードウェアから切り替えコマンドを受信し次第、SMP及びASMPの間で切り替えるべく、第1のプロセッサ及びメモリのクロック及び電圧を制御するよう、一続き又は一連のアクションが実行される。切り替えコマンドの生成は、負荷、キャッシュミス率、消費電力の理由、その他などの、要望通りの1又は複数の要因に基づき得る。当該装置/回路は、第1のプロセッサが、一方のモードから他方のモードへの遷移中失敗しないこと、及び、プロセッサ/メモリへの(1又は複数の)クロックがグリッチなく切り替えられることを保証する。当該装置/方法は、ソフトウェア/OSの介在を最小化し、より高速なモード切り替え速度を有する。
処理システム100は、例示されるように、マルチプロセッサコアと、複数のプロセッサ110を有するキャッシュサブシステム205とを含み、当該キャッシュサブシステム205は、110a(CPU A)、110c(CPU C)、110d(CPU D)、及び110b(CPU B)を、対応するL2キャッシュメモリ部210(210a及び210b)と、対応するクロスドメインクロック(CDC)回路230a、230c、230d、230bと共に含む。4つのプロセッサ110(並びに、対応するメモリ及び回路)が示されているが、プロセッサ数はそれより少ない、又は多いこともあり得る。しかし少なくとも2つのプロセッサを含む。理解されるように、各プロセッサ110は、1又は複数のプロセッサ、中央演算処理装置(CPU)、プロセッサ、又はコア、又はこれらの組み合わせを含んでよい。
当該処理システム100は更に、プロセッサ、キャッシュ、及びCDCへの電力の供給に使用する第1の動作供給電圧(VDD)を生成するための電力管理制御(PMIC)回路240を含む。同様に、クロック生成回路250が、プロセッサ、キャッシュ、及びCDCのクロッキング動作に使用する、様々な予め定められたクロック周波数を有する複数のクロック信号を生成する。
一実施形態において、PMIC回路240を除いて、処理システム100は、単一の基板/ダイ、又は集積半導体基板/ダイ上に(又は、多基板ICパッケージ内に配置された複数の半導体基板内に)配置される、又はそうでなければ位置付けられる。別の実施形態において、PMIC回路240もまた、単一の基板/ダイ、又は集積半導体基板/ダイ上に含まれてよい。
例示されるように、処理システム100はまた、(切り替え又はモードコントローラとも称されてよい)電圧レギュレータ及び切り替えコントローラ160と、クロック切り替え回路(又はモジュール)270とを含む。理解されるように、コントローラ160は、バイパス回路230を有するCDC、クロック生成回路250、及びクロック切り替え回路270の機能及び動作を制御するための様々な制御信号を出力する。
クロック生成回路250は、(SMPモードで)プロセッサ110の動作速度を一括して制御するための1つのSMPプロセッサクロック信号(CLK)と、(SMPモードで)キャッシュ部分210a、210bの動作速度を一括して制御するための1つのSMPメモリクロック信号(CLKch)と、プロセッサ110bの動作速度の独立制御を可能にする少なくとも1つのASMPプロセッサクロック信号(CLKb)と、キャッシュメモリ部210bの動作速度の独立制御を可能にする少なくとも1つのASMPメモリクロック信号(CLKchb)とを含む複数のクロック信号を生成するための必須の回路及び要素を含む。これらのクロックのそれぞれは、回路250によってグリッチなく有効/無効にされる。クロック生成回路250はまた、コントローラ160によって生成された入力イネーブル信号EN_CLK及びEN_CLKbを受信する。
PMIC回路240は、少なくとも、システム100で使用するためのVDDを生成するための必須の回路及び要素を含む。例示されるように、PMIC回路240は、プロセッサ110a、110c、110d、キャッシュメモリ部210a、及び電圧レギュレータ及び切り替えコントローラ160に電力を供給するためのVDDを生成及び出力する。示されるように、供給電圧VDDbは、プロセッサ110bと、その関連するキャッシュメモリ部210bとに電力を供給する。当業者には理解されるように、プロセッサ/メモリがより高いクロック速度で動作する場合、同様により高い供給電圧でプロセッサ/メモリを動作させることが望ましく、必要であるだろう。加えて、コアが使用されない場合、コアは電力を急減させられ、及び/又はクロックを無効にされてよい。例えば、プロセッサ110bへの供給電圧VDDbは無効にされてよく、及び/又は、プロセッサ110bへのクロック入力は無効にされてよい(例えば、入力クロックなし)。同様に、プロセッサ110a、110c、110dへの供給電圧VDD及び/又はクロック入力は無効にされてよい。この機能は、(図2に示されているが、参照番号で特定されていない)1又は複数のスイッチによって提供されてよい。
クロック生成回路250はまた、生成されたクロック信号CLK及び/又はCLKbのそれぞれに対する何らかのプログラム化可能性を可能にする機能及び回路を含んでよい。一実施形態において、クロック信号のそれぞれは、多数の可能な周波数のうちの1つに対してプログラム可能であってよい(例えば、CLKが、300Mhzから3GHzなどの範囲の間でプログラム可能であってよい)。別の実施形態において、特定のクロック信号のみがプログラム可能であってよい一方で、他の実施形態においては、各クロック信号の周波数は、予め定められ、かつ固定される。更に別の実施形態では、周波数は互いに対して固定されてよいが、グループとしてプログラム可能であってよい。同様に、PMIC回路240はまた、動作電圧源VDDに対するプログラム化可能性を提供するように、機能及び回路を含んでよい。
図2に示されるように、コントローラ160は、電圧レギュレータ及びバイパス回路280、及びSMP/ASMP切り替えコントローラ290を含む。電圧レギュレータ及びバイパス回路280内の電圧レギュレータ(別々には示されていない)は、動作電圧源VDDから電圧源VDDbを生成し、VDD又はVDDbの何れかを選択的に出力する。バイパスモードでは、VDDb=VDDである。加えて、VDDbは、電圧レギュレータを無効にすることによって電力を急減させられてよく、これにより、コアB(110b)をシャットダウンする。理解されるように、そして大まかに言えば、電圧レギュレータのためのバイパス機能は、マルチプレクサを使用して実装され、ステートマシン又は他のプロセスによって制御され得る。
他の実施形態において、コントローラ160は、VDDを受け、多数の可能な電圧レベルのうちの(プログラム可能な)1つ(例えば、電圧は0.5ボルト及び3.3ボルトなどの範囲の間でプログラム可能であってよい)を、電圧源VDDbとしてVDDから生成してよい。更に別の実施形態では、電圧源VDDbは予め定められ、かつ固定される。
SMP/ASMP切り替えコントローラ290は、有限ステートマシン(FSM)292と、1又は複数のタイマ294と、1又は複数のストレージレジスタ296(例えば、構成又はステータスレジスタ)とを含む。コントローラ290は、SMP/ASMPモード切り替えコマンド/信号(SMP/ASMP_SELECT)、及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)のアサーションに応答して一連のアクション又はプロセスを制御及び実行するよう機能する。故に、例示された実施形態において、SMP/ASMPモード切り替えコマンドがアサート/アンアサートされた場合、動作の処理モードは、ASMPモードとSMPモードとの間で切り替えられる。様々な方法及びメカニズムが、SMP/ASMPモード切り替えコマンドの生成に使用されよく、いくつかの例が図7に関して以下で説明される。SMP/ASMPモード切り替えコマンド(SMP/ASMP_SELECT)及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)は、様々なイベントに応答して、及び処理システム100の内又は外の様々な要素によって生成されてよいことが理解されるだろう。
一実施形態において、SMP/ASMPモード切り替えコマンド(SMP/ASMP_SELECT)に加えて、コントローラ290は、電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)の使用を統合して、当該信号に応答して一連のアクション又はプロセスを制御及び実行する。
プロセッサ110bのための、CLKクロック(SMP)からCLKbクロック(ASMP)への実際の切り替えが起こる時間である場合(及びその逆)、コントローラ290は、クロック切り替え回路270内のマルチプレクサ272aを使用して、CLKbクロック信号をプロセッサ110bに、選択的に多重化する選択信号(SELECT_CLKb)を生成する。理解されるように、ASMPモードでのプロセッサ/CPUコア110b用クロックは、CLKbと示され、一方で、SMPモードでの残りのプロセッサ/CPUコア110a、120c、110d用のクロックはCLKと示される。従って、SELECT_CLKb信号は、何れのクロック(CLKb又はCLK)がプロセッサ110bによって利用されるかをグリッチなく選択する。一実施形態において、SELECT_CLKb信号がアサートされた(論理ハイ又は「1」)場合、クロック信号CLKbが選択され、プロセッサ/コア110bに入力される。SELECT_CLKb信号がアンアサートされた(論理ロー又は「0」)場合、クロックCLKが選択され、プロセッサ/コア110bに入力される。
理解されるように、SELECT_CLKbがアサートされた(論理ハイ又は「1」)場合、クロック信号CLKbが選択され、プロセッサ/コア110bに入力される一方、クロック信号CLKは残りのプロセッサ/コア210a、210cおよび210dに入力される。SELECT_CLKbがアンアサート(論理ロー又は「0」)場合、クロック信号CLKが選択され、プロセッサ/コア110bに入力される一方、クロック信号CLKもまた、残りのプロセッサ/コア110a、110cおよび110dに入力される(又は、入力に利用できる)。
同様に、選択信号(SELECT_CLKb)は、これに対応して、クロック切り替え回路270内のマルチプレクサ272bを使用して、CLKchbメモリクロック信号をキャッシュ部分210bに、選択的に多重化する。
イネーブル信号(EN_CLK、EN_CLKb)を使用して、切り替えコントローラ290は、クロック生成回路250を制御して、SMP/ASMP切り替え前にクロックを有効にする。コントローラ290はまた、電圧レギュレータ及びバイパス回路280を制御して、プロセッサ110b(コアB)に入力するためにVDD又はVDDbの何れかを選択する。コントローラ290はまた、SELECT_CLKb信号を生成する。当該信号は、アサートされた場合、少なくとも1つの他のプロセッサ110a、110c、110dは、クロック速度(CLK)及び供給電圧VDDで動作しつつ、プロセッサ110bを(ASMPモードの)異なるクロック速度(CLKb)及び供給電圧VDDbに切り替わらせる。
切り替え中の様々なイベント及びアクションのタイミングは、1又は複数のタイマ294を使用して、FSM292によって制御される。以下でより詳細に説明されるように、クロックのウォームアップ期間及び電圧上昇/下降期間が利用される。これらの値は、ソフトウェア又は他の方法によって、予めプログラムされるか又は予め設定され、コントローラ内のC/Sレジスタ296又は他のメモリ位置(1つも図示されていない)に格納され得る。
理解されるように、そして、参照番号で具体的に特定されていないが、例えばレベルシフタなどの他の様々な論理回路が含まれ得る。レベルシフタは、典型的には、信号が電力領域をクロッシングする場合に利用される。
(図2に示される)クロックマルチプレクサ272の1つの可能な回路実装例が、米国特許出願第14/580,044号において(図4、及びその対応する記載を参照して)説明されている。クロックマルチプレクサ272は、「グリッチレス」であり、それは、切り替え中にグリッチがないことを意味する。他の好適な回路実装例がクロックマルチプレクサ272のために利用されてよく、当業者であれば、グリッチレスなマルチプレクサ切り替えを実行する他の回路が使用され得ることを容易に理解するであろう。
バイパス回路230(図2に示される)を有するCDCの1つの可能な回路実装例が、米国特許出願第14/580,044号において(図5、及びその対応する記載を参照して)説明されている。理解されるように、非同期CDC回路は当該分野において周知であり、故に、当業者ならばそのような機能をどのように実装するかを理解するであろう。これらのCDC回路及び/又はそれらの機能はまた、クロック切り替え回路として、又は、プロセッサとL2キャッシュとの間の非同期FIFOブリッジとして当該分野において周知であろう。
ここで図3Aを参照すると、FSM292によって実行又は実装される1つのプロセス又は方法300が例示されている。このプロセスはまた、電圧レギュレータ及びバイパス回路280の動作を制御すべく機能する。理解されるように、FSM292のプロセス/機能は、異なる構成、方法、又は構造(又は、これらの組み合わせ)、又は方法を使用して実装されてよい。例えば、コントローラ290の機能は、例示された実施形態においては有限ステートマシン(例えば、ハードウェア実装)として実装されているが、その代わりに、個別の論理回路、ファームウェア等を有するマイクロコントローラ、及びこれらの任意の組み合わせを使用して、又は、当業者に周知の任意の他の方式/方法で実装されてよい。好ましくはないが、この機能はまた、ソフトウェア、又はソフトウェア及びハードウェアの何らかの組み合わせで実装されてもよい。FSM292(及び任意の他のハードウェア実装)は、有利に、より高速で動作し、ソフトウェア/OSの介在を最小化する。例外、例えばタイムアウト等、の場合には、FSM292はシステムプロセッサに対する割り込みを生成する。
別の実施形態においては、コントローラ290内の別個のFSM(又は、他の機能)がまた、EN_CLK信号、EN_CLKb信号、及びSELECT_CLKb信号のタイミングおよび生成を制御してよいこともまた理解されるであろう。また以下で更に説明される別の実施形態において、FSM292は、(1)電圧レギュレータ及びバイパス回路280を制御する信号(EN、BYPASS)、及び(2)クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)のタイミングおよび生成の両方を統合的に制御する「統合型」有限ステートマシンである。この「統合型」の実施形態において、FSM292は、入力信号として、SMP/ASMPモード切り替えコマンド/信号(SMP/ASMP_SELECT)、及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)を受信する。以下の表Iは、FSM292(コントローラ290)によって実行される入力から出力への信号の遷移を例示しており、表中、信号EN(イネーブル)及びBYPASS(バイパス)は、電圧レギュレータ及びバイパス回路280のモードを制御すべく、入力信号に応答して生成された出力信号である。
以下の表2は、SMP/ASMP_SELECT信号及びLDO_MODE_SELECT信号の定義/説明を提供する。
制御信号EN及びBYPASSは、電圧レギュレータ及びバイパス回路280を制御すべく、FSM292によって生成及び出力される。コントローラ290(例えば、FSM292)の入力信号(SMP/ASMP_SELECT、LDO_MODE_SELECT)及び出力信号(EN、BYPASS、SELECT_CLKb、EN_CLK、EN_CLKb)は、図5及び図6に例示されている。
図3Aに示されるように、FSM292の状態図によって表されるプロセス300は、電圧レギュレータ及びバイパス回路280の制御に関する様々な状態及び遷移を含む。示されるように、OFF状態(310)、ASMPモード状態(320)、及びSMPモード状態(330)の3つの主状態がある。
OFF状態(310)は、LDO_MODE_SELECT信号がローであることに応答して、EN信号及びBYPASS信号がロー(例えば、EN!、BYPASS!)である場合、電圧レギュレータがオフ又は非アクティブ(例えば、フローティング)であることによって特徴付けられる。
ASMPモード状態(320)は、SMP/ASMP_SELECT信号がローであり、かつLDO_MODE_SELECT信号がハイであることに応答して、EN信号がハイであり、かつBYPASS信号がローである(例えば、EN、BYPASS!)場合、プロセッサ110bに供給電圧を提供すべく、電圧レギュレータが、選択的な入力のためにVDDbを出力することによって特徴付けられる。
SMPモード状態(330)は、SMP/ASMP_SELECT信号がハイであり、かつLDO_MODE_SELECT信号がハイであることに応答して、EN信号がハイであり、かつBYPASS信号がハイである(例えば、EN、BYPASS)場合、プロセッサ110bに供給電圧を提供すべく、電圧レギュレータが「バイパスされ」、選択的な入力のためにVDDを出力することによって特徴付けられる。
動作中であり、かつ、処理システム100が初めに非アクティブであると仮定すると、LDO_MODE_SELECT信号はローであり、その結果、切り替えコントローラ290から出力されたEN信号はアンアサートされる(!EN)(及び、BYPASS信号の値は関連しない)。LDO_MODE_SELECT信号がアクティブ化され次第、切り替えコントローラ290は、EN信号をアサートし(EN)、プロセス300は、切り替えコマンド(SMP/ASMP_SELECT)信号の値に応じて状態320又は330の何れかに進み得る。
切り替えコマンドSMP/ASMP_SELECTがASMPモードの動作を示す(SMP/ASMP_SELECTがロー)場合、コントローラは、ローのBYPASS信号(!BYPASS)を出力する。EN信号及びBYPASS信号のこれらの値に基づいて、FSM292はASMPモード状態320に向かって遷移する。しかしながら、状態320に入る前に、遅延2状態(315)に入る。遅延2状態は、FSM292がローのBYPASS信号を出力し、ASMPモード状態320に入る前に、遅延させるべく予め定められた時間(待機期間)を提供する。遅延2は、VDDbを生成するのに利用される電圧レギュレータのタイプの物理的動作特性に応じて、任意の適切な期間範囲、例えば、サブマイクロ秒から数十マイクロ秒であってよい。言い換えれば、ローのBYPASS信号の出力は遅延2のために遅延され、出力のためにVDDbを生成するよう、電圧レギュレータがアクティブ化し安定すること(すなわち、ウォームアップ)を可能にする。
切り替えコマンドがSMPモードの動作を示す(SMP/ASMP_SELECTがハイ)場合、コントローラは、ハイのBYPASS信号(BYPASS)を出力する。EN信号及びBYPASS信号のこれらの値に基づいて、FSM292はSMPモード状態330に向かって遷移する。しかしながら、状態330に入る前に、遅延1状態(335)に入る。遅延1状態は、FSM292がハイのBYPASS信号を出力し、SMPモード状態330に入る前に、遅延させるべく予め定められた時間(待機期間)を提供する。遅延2と同様に、遅延1は、VDDを生成するのに利用される電圧レギュレータのタイプの物理的動作特性に応じて、任意の適切な期間範囲、例えば、サブマイクロ秒から数十マイクロ秒であってよい。言い換えれば、生成器が安定した出力を生成することを可能にし、かつ切り替えノイズを低減すべく(例えば、トライステート/0出力からVDDまで)、ハイのBYPASS信号の出力は、遅延1のために遅延される。
ひとたびASMPモード又はSMPモードの何れかになると、プロセス300は、切り替えコマンド(SMP/ASMP_SELECT)信号の値に応じてこれらの2つのモード間で切替わってよい。
ASMPモード320にある場合、切り替えコマンド信号が、システムがSMPモードに切り替わるべきであることを示す(すなわち、SMP/ASMP_SELECTがハイ)とき、コントローラ290はBYPASS信号をアサートし(BYPASS)、プロセスはSMPモード状態330に向かって遷移する。しかしながら、状態330に入る前に、中間VREG_MAX状態325に入る。中間VREG_MAX状態は、電圧レギュレータ出力がその最大出力電圧レベルに上昇することを可能/できるようにすべく、別の、予め定められた遅延期間を提供する。理解されるように、電圧レギュレータは既に、予め定められた電圧源VDDb‐それはVDDより低い‐をプロセッサに出力中なので、VDDbからVDDに切り替える前に、電圧レギュレータ400の出力電圧を(VDDより僅かに低い)その最大値に上昇させることが重要である。これにより、プロセッサ110bに入力される、供給電圧の潜在的な大きなスパイクが低減又は取り除かれる。図4を参照すると、出力値を制御するよう、Vref又はVrefmaxが電圧レギュレータに選択的に入力される(電圧レギュレータの出力は、増幅器の負端末における入力に等しい)。例えば、VDDが1.0ボルトである場合、Vrefmaxが0.9ボルト(その供給としてVDDを有する電圧レギュレータから出力される実際の最大値)に等しい状態で、Vrefは0.6ボルトであってよい。
この中間VREG_MAX状態325では、Vrefmaxは電圧レギュレータに選択的に入力され、予め定められた遅延が、バイパス回路280の出力をVDDbからVDDに切り替える前に、出力電圧がVrefmaxに上昇することを可能にする。
SMPモード330にある場合、切り替えコマンド信号が、システムがASMPモードに切替わるべきであることを示す(すなわち、SMP/ASMP_SELECTがロー)とき、コントローラ290は、BYPASS信号をデアサートし(!BYPASS)、プロセスは、ASMPモード状態320に向かって遷移する。しかしながら、状態330に入る前に、中間VREG_MAX状態325に入る。中間VREG_MAX状態は、電圧レギュレータ出力が低下し、安定することを可能/できるようにし、かつノイズを低減すべく、別の予め定められた遅延期間を提供する。
示されるように、ASMPモード状態320又はSMPモード状態330の何れかにあり、LDO_MODE_SELECT信号がローになる場合、EN信号はデアサートされ(!EN)、プロセスはOFF状態310に戻るよう遷移する。
FSM292によって実装されるプロセス300は、クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する(すなわち、SMP/ASMPモードクロック切り替え)信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成を統合することのない、電圧レギュレータ及びバイパス回路280の有限ステートマシン制御を提供して、プロセッサ110bのためにクロッキング周波数としてCLK又はCLKbを提供することが理解される。この実施形態では、別個に動作し、これらの他の回路を制御すべく、これらの他の制御信号を生成する第2のFSM(図示せず)が含まれてよい。この第2のFSMの具体的な実装例は、米国特許出願第14/580,044号(図3A、図3B及び図3C、並びにそれらの対応する記載)を参照して当業者によって容易に設計され得る。
ここで図3Bを参照すると、FSM292によって実行又は実装される、別のプロセス又は方法300aが例示されている。プロセス300aは、クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する(すなわち、SMP/ASMPモードクロック切り替え)信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成を統合することをその中に含む、電圧レギュレータ及びバイパス回路280の有限ステートマシン制御を提供するFSM292によって実装され得る。言い換えれば、プロセス300aは、統合型FSM292を表し得る(及び、上記第2のFSMは省略され得る)。このプロセス300aは、電圧レギュレータ及びバイパス回路280と、クロック制御回路250、270、及び230との両方の動作を制御すべく機能する。言い換えれば、図3BのFSM292は、電圧レギュレータ及びバイパス回路280の制御を、クロック生成回路250を制御する信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成と統合する電圧調整及びクロック切り替えモジュールを提供し、(電圧変更/切り替えと、クロック変更/切り替えとの両方を制御する)統合型コントローラを提供する。従って、電圧レギュレータ及びその出力(すなわち、プロセッサへの電力供給)の制御と、クロック切り替え回路及びその出力(すなわち、プロセッサへのクロッキング信号)の制御が統合される、又は1又は複数の相互依存を有する。そのような統合型コントローラは、電圧レギュレータの有効化/ウォームアップ/切り替えプロセスと並行して、クロックの有効化/ウォームアップ/切り替えプロセスを可能にする。これにより、SMP/ASMP切り替えプロセスの全体的なレイテンシが改善される。
図3Bに例示されるように、プロセス300aは、状態の全て(310、315、320、325、330、335)及び(図3Aに示される)プロセス300の遷移と、追加の状態350、360、370、及び380、並びに関連する遷移とを含む。加えて、1つの遷移が僅かに修正されている。FSM292の状態図によって表されるプロセス300aは、(1)電圧レギュレータ及びバイパス回路280と、(2)回路250、270、及び230との制御に関する様々な状態及び遷移を含む。統合型有限ステートマシン(FSM)は電圧変更のみならずクロック切り替えも制御し、このように、統合有限ステートマシン(FSM)は、正しい相互依存が満たされることを保証しつつ、最も良好な並列性と、最適化されたアクションシーケンスとを達成し得る。
追加の4つの主状態は、遷移BYPASS状態(350)、SWITCH_CLK状態(360)、SWITCH_CLKb状態(370)、及びCLKb_WU状態(380)を含む。
示されるように、OFF状態(310)からSMPモード状態(330)への遷移内において、追加のBYPASS状態(350)及びSWITCH_CLK状態(360)が、遅延1状態(335)の後に含まれ、配置される。遅延1期間が満了した後、FSM292はBYPASS状態(350)に入る(しかし、BYPASS信号はまだハイにアサートされていない)。BYPASS状態(350)(基本的には内部電圧レギュレータの中間状態)において、BYPASS信号はアサートされ、プロセスは、SMPモード状態330に向かって遷移する(及びVDDがプロセッサ110bに入力される)。
完了し次第、SWITCH_CLK状態(360)に入る。SWITCH_CLK状態では、プロセス300aは、(1)EN_CLK信号をハイにアサートし、当該EN_CLK信号がクロッキング回路250内のCLK信号をオンに切り替えること、(2)予め定められた期間待機して、CLK信号がウォームアップすることを可能にすること、及び(3)ウォームアップ後、SELECT_CLKb信号をデアサートし、当該SELECT_CLKb信号がクロック切り替え回路270内で(CLKb信号とは対照的に)CLK信号をプロセッサ110bに選択的に入力することを含むいくつかの機能を実行する(図2もまた参照されたい)。
示されるように、SMPモード状態(330)からASMPモード状態(320)への遷移内において、CLKb_WU(ウォームアップ)状態(380)及びSWITCH_CLKb状態(370)が、VREG MAX状態(325)の前に含まれ、配置される。SMPモードからASMPモードへの切り替えがトリガされた(SMP/ASMP_SELECTがローになった)場合、CLKb_WU状態(380)に入る。CLKb_WU状態(280)において、プロセス300aは、EN_CLKb信号をハイにアサートし、当該EN_CLKb信号がクロッキング回路250内のCLKb信号をオンに切り替え、プロセス300aは、予め定められた期間待機し、CLKb信号がウォームアップすることを可能にする。ウォームアップ後、SWITCH_CLKb状態(370)に入り、プロセス300aは、SELECT_CLKb信号をアサートし、当該SELECT_CLKb信号がクロック切り替え回路270内で(CLK信号とは対照的に)CLKb信号をプロセッサ110bに選択的に入力する(図2もまた参照されたい)。完了し次第、プロセスは、その(1又は複数の)アクションが起こるよう、VREG_MAX状態(325)に遷移し、次に、SMPモード状態(330)に向かって遷移し、ASMPモード状態320に入るよう、BYPASS信号はデアサートされる(かつ、VDDbがプロセッサ110bに入力される)。
ASMPモード状態(320)からSMPモード状態(330)への遷移は異なる経路をとる。ASMPモードからSMPモードへの切り替えがトリガされた(SMP/ASMP_SELECTがハイになった)場合、VREG_MAX状態(325)に入る。完了し次第、BYPASS状態(350)に入り、完了し、SWITCH_CLK状態(360)に入り、完了し、プロセスは、SMPモード状態330に遷移する。
有限ステートマシンとして実装されるプロセス300aに基づいて、EN信号、BYPASS信号、EN_CLK信号、EN_CLKb信号、及びSELECT_CLKb信号の制御及び生成は、ソフトウェア/OSなしに達成される。これにより、SMPモードとASMPモードとの間でのより高速な切り替えがもたらされる。
ここで図4及び図5を参照すると、図2に示される電圧レギュレータ及び切り替えコントローラ160の代替的な2つの実施形態160a、160bが例示されている。
図4は、(図3Bに例示されるプロセス300aを実装するFSM292を有する)切り替えコントローラ290aと、電圧レギュレータ及びバイパス回路280aとを使用して実装される電圧レギュレータ及び切り替えコントローラ160aを例示する。この実施形態では、回路280aは、低ドロップアウト(LDO)電圧レギュレータ400、及び高速バイパススイッチ402を含む。基準信号(Vref)、基準最大信号(Vrefmax)、及びEN信号が、LDO電圧レギュレータ400に入力される。有効にされた場合、VDDb出力は、(BYPASS信号がアサートされたとき(BYPASS))VDD、又は、(BYPASS信号がデアサートされたとき(!BYPASS))Vrefに等しい。理解されるように、Vrefは、所望の値に選択され得る(又は、プログラム可能ですらある)。この実施形態では、電圧レギュレータに入力された実際の電圧基準信号は、Vref又はVrefmaxの何れかから選択されてよく、これらの何れかが、FSM292と、適切な切り替え回路(図示せず)との制御の下、電圧レギュレータに選択的に入力されてよい。上述されたように、回路280の出力をVDDbからVDDに切り替える前に、出力電圧をVref値からVrefmax値に上昇させることが有益であろう。
図5は、(図3Bに例示されるプロセス300aを実装するFSM292を有する)切り替えコントローラ290bと、電圧レギュレータ及びバイパス回路280bとを使用して実装される電圧レギュレータ及び切り替えコントローラ160aを例示する。この実施形態では、回路280bは、例示することのみを目的として、示されたようなコンポーネントを有する切り替え型電圧レギュレータ500を含む。当業者ならば、切り替え型電圧レギュレータの他の好適な構成(例えば、スイッチモード電圧レギュレータ、バック、統合型電圧レギュレータ、スイッチドキャパシタレギュレータ等)が利用されてよいこと(及び追加の制御信号も要求されてよいこと)を容易に理解するであろう。当該バイパス回路は、有効にされた場合、VDDb出力が、(BYPASS信号がアサートされたとき)VDDに、又は、(BYPASS信号がデアサートされたとき)VDDbに等しいという点で、図4に関して説明されたバイパス回路と同様に機能する。
LDO電圧レギュレータ400、及びスイッチドモードレギュレータ500に関して、一実施形態において、当該レギュレータ(400又は500)は、(上述されたように)同一の基板又は集積回路上に組み込まれてよい。
ここで図6を参照すると、電圧レギュレータ及び回路600を有する電圧レギュレータ及び切り替えコントローラ160cの別の実施形態の図が示される。電圧レギュレータ600は、低ドロップアウト電圧レギュレータの異なる実装例を例示する。このアーキテクチャは、予測的(又は、予め設定される)、及び応答的(又は、反応的)な別個の2つのノイズ抑制方法を使用して、SMP/ASMPモード切り替えによって生成されることのあるノイズを低減/抑制する。各方法は、切り替えによるノイズを最小化し、より高速な切り替えを可能にする。応答的な方法が、ミクロレベルの調整と、早い応答時間とを提供する一方、予測的な方法はマクロレベルの調整を提供する。これらのメカニズムの一方又は両方の何れかが利用されてよい。
SMP/ASMPモード切り替えコマンドが変化した(SMP/ASMP_SELECT信号が変化した)場合、コントローラ290は予測的に(1又は複数の)制御信号を生成して、バイアス電流制御回路630を通して増幅器(680)のバイアス電流を制御する。フィードバックフィルタ640は、図6に示されるように、バイアス電流制御回路630と共に動作して、バイアス電流を増加させるだけでなく、電力トランジスタ(690)の帯域幅及びスルーレートを変更する。次の実際のSMP/ASMP遷移に先立つこのバイアス電流の変更は、LDO電圧レギュレータ600が、次のdi/dtの変化を予め補償することを可能にする。このことが、SMP/ASMP切り替えノイズの軽減、又は抑制の助けになる。言い換えれば、この方法は、システムのSMP/ASMP遷移の実行前に、電圧レギュレータの特定の動作特性(例えば、Iバイアス、帯域幅、スルーレート)を予め設定する。理解されるように、バイアス制御回路630及びフィードバックフィルタ640はそれぞれ制御回路である。
応答的な方法の場合、レギュレータ600の出力の電流経路に配置された電流センサ610は、負荷620(例えば、プロセッサ110b)によって引かれる変化量di/dtを感知する。この信号は、FSMコントローラ290にフィードバックされ、バイアス電流及び/又はフィードバックループが調整されて、予測的に前もってではなく、応答的にノイズが低減される。必要ならば、補助切り替え650が、出力電圧の下方変更のための電流流出経路を増加させる、又は加速する。示される応答的な方法及び回路は、比例積分微分(PID)コントローラと同一の、又はそれと同様の機能を提供する。当業者ならば、上述された機能を実行すべく、任意の適切な回路を使用するであろう。理解されるように、バイアス制御回路630、フィードバックフィルタ640、及び補助切り替え650はそれぞれ制御回路である。
2つのプロセッサ(110b、及び、110a、110c、又は110dの何れかのみがアクティブ)な場合にASMPモードがアクティブ化され、3つ以上のプロセッサがアクティブな場合にSMPモードがアクティブ化される一実施形態において、SMPとASMPとの間の動的モード切り替えが実行される。(1)2つのプロセッサ、又は(2)3つ以上のプロセッサの何れが必要かの判断は、トラフィックタイプ、プロセッサの待機時間、負荷不平衡情報、及び/又は消費電力に基づいてよい。理解されるように、モードを変更(又は維持)すべく、他の要因及び情報のタイプが分析され、決定の根拠を形成し得る。例えば、負荷が軽い場合、又は、負荷が重く、全てのCPUコアが利用される場合及び/又はL1キャッシュミス率が高い場合、SMPモードが選択されてよく、一方、重い負荷及び/又は不平衡負荷の場合はASMPモードが選択されてよい。1つの具体的な実施形態において、2つのプロセッサが要求される場合、当該2つのプロセッサはASMPモードで動作し、3つ以上のプロセッサが要求される場合、それらはSMPモードで動作する。
当業者ならば、「コア」(例えば、A、B、C、D)の1又は複数がまた、それぞれ、各コア内に2つ以上のプロセッサを含むことを容易に理解するであろう。そのような実施形態では、プロセッサの各「グループ」は分類され、別個のエンティティ(又は、「コア」)として機能する。
ここで図7を参照すると、SMP/ASMPモード選択及び切り替えを起動及び制御するためのアーキテクチャ(例えば、方法、プロセス、システム)800が概念的に示されている。モード選択は、所望の処理又はアプリケーションのタイプのみならず他の情報又は要因にも基づき得る。示されるように、処理又はアプリケーション802は、ブラウザアプリケーション802a、ストリーミングアプリケーション802b、ゲームアプリケーション802c、又はナビゲーション802dであってよい。他の要因/情報804もまた考慮されてよい。
一例として、ストリーミングアプリケーション802bがマルチプロセッシングを要求すると仮定すると、モード選択デバイス810は、そのアプリケーションに関連する処理タスクが、SMPモード又はASMPモードのどちらで実行されるべきかを判断する。システムソフトウェア/OSはこの判断を行い、決定を下す。当該システムは、1つのプロセッサを割り当てて、コマンドをコントローラに発行してよいが、通常、決定はシステムレベル/OSレベルで実施される。この決定は、静的情報、動的情報、又はこれらの組み合わせに基づいてよい。一例では、全てのビデオエンコーディングアプリケーションがSMPモードを使用すると予め定められ得る。別の例では、CPUの現在の負荷があまりに重く、全てのCPUコアが利用されない限り、全てのビデオストリーミングアプリケーションはASMPモードを使用する。一方のモードから他方のモードに切り替えるかどうかについての決定を下すべく、他の変形形態が、プログラムされ、利用され得る。
一実施形態において、単一処理タスクが要求される場合、ルックアップテーブルが参照されてよい。別の実施形態において、複数の処理タスクがある場合、電力の比較が、何れかのモードを選択するのに使用される要因であってよい。例えば、ユーザが、音楽を聴きながら同時に電子メールを作成している場合、ASMPが選択され得る。
図7に例示されるような1つの具体的な実施形態では、(1又は複数の)処理負荷に対処するのに幾つのプロセッサが必要かがシステムによって判断される。2つのプロセッサだけが必要であると判断された場合、ASMPモードが選択され、ASMPモードで動作するよう、2つのプロセッサ(B、及びA/C/Dのうち1つ)が制御される。3つ、4つ、又はそれより多くのプロセッサが必要であると判断された場合、SMPモードが選択され、3つのプロセッサ(A、B、及びC)、又は4つのプロセッサ(A、B、C、及びD)はSMPモードで動作する。
システム100のアーキテクチャは、各コアのための完全SMP/ASMP機能を有するシステムと比較して、SMP/ASMP動的切り替えに関連する費用及びハードウェア/ソフトウェアの複雑さの両方を大幅に低減する。例えば、4つのプロセッサ/コアを有するMPシステムでは、ただ1つのプロセッサが動的に構成可能なシステム100に従って構成されたシステムに対する追加コストは、4つの全てのプロセッサが動的にSMP/ASMP構成可能なシステムと比較して約3分の1の追加コストである。
ほとんどの場合、処理要求は2つのプロセッサで満たされ得、ほとんどの場合、2つのプロセッサは不平衡負荷で実行されることが試験及び研究によって明らかになった。従って、2つのプロセッサコアA及びBで動作するシステム100は、電力効率を最適化すべく、ASMPモードのみを使用して動作し得る。同様に、最大性能を得るべく、4つの全てのプロセッサコアA、B、C、及びDは、最大のクロック周波数及び供給電圧で、SMPモードで動作し得、必要ならば、同時に同じハイエンドな性能を維持しながら、柔軟性と電力低減とをもたらす。また、3つ以上のプロセッサが動作している場合、これらはSMPモードで動作し得る。システム100は、Android(登録商標)/iOS/Windows(登録商標)などのモバイルのハイレベルオペレーティングシステム(HLOS)に、低コスト、低電力と高性能との間の有益なトレードオフを提供し、低層から中層市場に適してもいる。
ここで、図に例示及び説明されているシステム100に関する1つの動作例又は方法が以下で説明される。
この動作スキームでは、(1)1つのコア、又は(2)3つ以上のコアがアクティブな場合、SMPモードが選択され、全てのアクティブプロセッサは、同一のクロック周波数及び電圧源で動作する。2つのコアがアクティブな場合、アクティブプロセッサの一方はコアBであり、他方のアクティブプロセッサは、コアA、コアC、又はコアDの何れかであり、2つのアクティブプロセッサはASMPモードで動作するよう構成されている。
複数のプロセッサ/コアシステムにおいて、常に全てのプロセッサ/コアが必要なわけではない。処理要求が低い場合、ただ1つ、又は少数のプロセッサが必要とされてよく、処理要求が高い場合、より多くのプロセッサが必要とされてよい。この概念はモード選択プロセスに導入又は統合され得る、又は、モード選択プロセスは、少なくとも一部は、コンピューティング要件に対処するために、幾つのプロセッサが要求されるかに基づき得る。
本明細書で説明されているシステムでは、プロセッサ/コアをスリープモード、無効、又はシャットダウンの状態にすべく、各コアが、クロックを無効にされること、及び/又は電力を急減させられることを可能にする追加の機能(具体的には示されない)が提供され得る。これにより、(より少ない数のプロセッサが処理要求に対処し得る場合、)必要ではないプロセッサをオフにすることによって消費電力の低減がもたらされる。
様々なプロセス又は方法が、現在のコンピューティング要件を満たすために幾つのプロセッサが必要かを判断すべく実装され得る。ひとたびこの判断が下されると、次に、コアは、以下の段落に説明されるものなどの任意の適切なシーケンス及び/又は優先度でオン/オフに切り替えられ得る。
ここで図8を参照すると、(1又は複数の)SMP/ASMPモード選択の(1又は複数の)プロセスと統合される、プロセッサの追加/削除のためのプロセス900の概略フロー図が例示されている。利用される特定のアーキテクチャ(例えば、コア数)、及び所望の機能又はアプリケーションに応じて、例示されたプロセスに対して様々な再構成又は変形が施されてよい。理解されるように、そのようなプロセスにおいて利用されてよい全ての段階又は要素が示されているわけではない。
プロセス900は、1つのプロセッサが動作するポイントにおいて示されている。ただ1つのプロセッサが必要な場合、システム100は、1つの固定CLK1/VDD1で、SMPモードで動作する(段階910)。処理動作中のあるポイントにおいて、処理要求の増加に対処すべく(又は、他の何らかの理由で)、第2のプロセッサが必要かどうかが判断される(段階915)。この判断は、定期的に、又は動作情報に応答して成され得る。
別のプロセッサが必要との判断に応答して、プロセス900は進み、第2のプロセッサをアクティブ化し、2つのアクティブプロセッサは少なくともプロセッサ110bを含む。2つのアクティブプロセッサはASMPモードで動作し(920)、それにより、(第1のプロセッサがCLK1/VDD1で動作する一方で、)第2のプロセッサ(110b)はCLK1/VDD1とは異なるCLK2/VDD2を受け、それらに従って動作するよう自動的に構成されている。
一旦、両プロセッサはアクティブになり、ASMPモードで動作する。その間、システムは、より多くの又はより少ないコンピューティング処理能力等の必要性を評価し続け、処理要求が、より少ない又はより多くのプロセッサが必要なレベルにあるかどうかの判断を下してよい(段階930a、930b)。より少ないプロセッサが必要な場合、プロセスは、(SMPモードでの)1つのプロセッサの利用に戻る(段階910)。より多くのプロセッサが必要な場合、プロセスは進み、第3のプロセッサをアクティブ化する(段階940)。現在アクティブな2つのプロセッサはASMPモードなので、次に、それらはSMPモードに切り替えられ、3つ全てがSMPモードで動作する。
理解されるように、一実施形態において、本明細書で説明されているシステム、プロセス、方法、及びデバイスは、モバイルデバイス/小型コンピューティングデバイス又は基地局内に組み込まれること、及び同様のことを含むモバイル環境で利用されてよい。このようなデバイスは、例えば、無線信号を送信及び/又は受信するよう構成されてよい。それらのデバイスは、任意の適切なエンドユーザデバイスであってよく、ユーザ機器/デバイス(UE)、無線送信/受信ユニット(WTRU)、モバイルステーション、固定若しくは移動加入者局ユニット、ページャ、携帯電話、パーソナルデジタルアシスタント(PDA)、スマートフォン、ラップトップ、コンピュータ、タッチパッド、無線センサ、ウェアラブル電子デバイス、又は、家庭用電子デバイスのようなデバイスを含んでよい(又はそのように称されてよい)。
それらのデバイスは、デバイスの様々な処理動作を実装する、少なくとも1つの(本明細書で説明されるような)処理システム100を含む。これは、例えば、信号符号化、データ処理、ビデオ/オーディオ処理、電力制御、入出力処理、又は、デバイスのために考えられた任意の他の機能を含んでよい。
処理システム100はまた、本明細書で説明されている方法及び教示をサポートし、追加のコンポーネント及び(1又は複数の)プロセッサ(例えば、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、又は特定用途向け集積回路)を含んでよい。
処理システム100を組み込むデバイスはまた、少なくとも1つのアンテナによる送信のために、データ又は他のコンテンツを変調するよう構成された少なくとも1つのトランシーバを含んでよい。当該トランシーバはまた、少なくとも1つのアンテナによって受信されたデータ又は他のコンテンツを復調するよう構成されている。各トランシーバは、無線送信用の信号を生成するための、及び/又は無線受信された信号を処理するための任意の適切な構造を含む。各アンテナは、無線信号を送信及び/又は受信するための任意の適切な構造を含む。1又は複数のトランシーバが当該デバイスにおいて使用され得、1又は複数のアンテナが使用され得る。
これらのデバイスはまた、ユーザとのインタラクションを容易にするよう、1又は複数の入出力デバイスを含んでよい。スピーカ、マイク、キーパッド、キーボード、ディスプレイ、又はタッチスクリーンなどの各入出力デバイスは、ユーザに情報を提供するための、又は、ユーザからの情報を受信するための任意の適切な構造を含む。
加えて、これらのデバイスは、デバイスによって使用、生成、又は収集される命令及びデータを格納するために、上述されたメモリを利用してよい、又は、他のメモリを含んでよい。例えば、当該メモリは、処理システム200によって実行されるソフトウェア命令又はファームウェア命令を格納し得る。当該他のメモリは、任意の適切な揮発性及び/又は不揮発性ストレージ、並びに(1又は複数の)検索デバイスを含んでよい。ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、ハードディスク、光ディスク、加入者識別モジュール(SIM)カード、メモリスティック、セキュアデジタル(SD)メモリカード、及び同様のものなどの任意の適切なタイプのメモリが使用されてよい。
モバイル/小型コンピューティングデバイスに関する追加の詳細は、当業者には周知である。故に、明確にするために、それらの詳細は省略される。
いくつかの実施形態において、デバイスのうちの1又は複数のものの機能又はプロセスの一部又は全部は、コンピュータ可読プログラムコードから形成され、かつ、コンピュータ可読媒体において具体化されたコンピュータプログラムによって実装又はサポートされる。語句「コンピュータ可読プログラムコード」は、ソースコード、オブジェクトコード、及び実行可能コードを含む任意のタイプのコンピュータコードを含む。語句「コンピュータ可読媒体」は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、又は任意の他のタイプのメモリなどのコンピュータがアクセス可能な任意のタイプの不揮発性媒体を含む。
本特許文献全体を通して使用されている特定の単語及び語句の定義を記載することは有利であろう。用語「含む」及び「備える」、並びにこれらの派生語は、限定なしの含有を意味する。用語「又は」は両立的であり、及び/又はを意味する。「〜に関連する」及び「それに関連する」という語句、並びにこれらの派生語は、〜内に含まれること、〜と相互接続すること、含有すること、〜内に含有されること、〜に若しくは〜と接続すること、〜に若しくは〜と連結すること、〜と通信可能なこと、〜と協同すること、インターリーブすること、並置すること、〜に近接していること、〜に若しくは〜と結合されること、有すること、〜の特性を有すること、又は同様のことを含むことを意味している。用語「コントローラ」は、少なくとも1つの動作を制御する任意のデバイス、システム、又はこれらの一部を意味する。コントローラは、ハードウェア、ファームウェア、ソフトウェア、又はそれらのうちの少なくとも2つの何らかの組み合わせで実装されてよい。任意の特定のコントローラに関連する機能は、ローカルにであろうとリモートにであろうと、一か所に集められてよい、又は分散されてよい。
本開示は、特定の実施形態と、概して関連する方法とを説明してきたが、これらの実施形態及び方法の改変及び並べ替えが当業者には明らかであろう。従って、例示の実施形態の上記説明は、本開示を定義も制限もしない。以下の特許請求の範囲によって定義される、本開示の主旨及び範囲から逸脱することなく、他の変更、置換、及び改変がまた可能である。
[関連出願の相互参照]
本願は、2015年5月5日出願の「Fast SMP/ASMP Mode−Switching Hardware Apparatus for a Low−Cost Low−Power High Performance Multiple Processor System」と題する米国非仮特許出願第14/704,240号に対する優先権を主張する。当該米国非仮特許出願第14/704,240号は、2014年12月22日出願の「A Novel Low Cost, Low Power High Performance SMP/ASMP Multiple−Processor System」と題する先の米国特許出願第14/580,044号の一部継続出願であり、当該米国特許出願第14/580,044号は同様に、2014年10月16日出願の「Hardware Apparatus and Method for Multiple Processors Dynamic Asymmetric and Symmetric Mode Switching」と題する先の米国特許出願第14/516,314号の一部継続出願である。これらの特許出願は全て、その全体が再現されるかのように、参照により本明細書に組み込まれる。
本発明は概して複数のプロセッサアーキテクチャ及びシステムに関し、より具体的には、マルチプロセッサシステムにおいて非対称型マルチプロセッシングモードと対称型マルチプロセッシングモードとの間のモード切り替えのための装置及び方法に関する。
マルチプロセッシングシステムは、複数のプロセッサ(例えば、中央演算処理装置(CPU))を利用して、データを処理し、所望の機能を実行する。理解されるように、用語「プロセッサ」は、用語「CPU」又は「コア」と同義に使用され、当業者によって容易に理解される。従来技術では、対称型マルチプロセッシング(SMP)及び非対称型マルチプロセッシング(ASMP)という、2つの主なタイプの異なるマルチプロセッシングシステムが存在する。
SMPシステムは典型的には、全てのシステムリソース、単一の同期L2キャッシュインターフェース(及び場合により非同期L2)の共有によって特徴付けられ、プロセッサは、同一のクロック周波数及びクロック電圧で制御される。このことはまた、概して、プロセッサ/コアが(L2キャッシュ及びメモリなどの)共有メモリシステムに均等にアクセスできることを意味している。SMPでは、クロック周波数及び電圧は個別に調整可能ではなく、故に、コア/プロセッサごとに変更され得ない。加えて、L2キャッシュは全てのコアの中で共有され、L2キャッシュ周波数はコアごとにスケーラブルではない。全てとは言えないにしてもほとんどのアプリケーションにおいて、SMPにおけるプロセッサの作業負荷は不平衡であり、このことが消費電力をより高くする原因となる。SMPはまた、全てのプロセッサ/コアを均等に扱う(均等性)と見なされてよい。
これに対して、ASMPシステムは典型的には、プロセッサに対して個別に、異なるクロック周波数及び/又はクロック電圧を有することによって特徴付けられ、L2キャッシュクロック周波数は独立してスケーリングされ得る。従って、プロセッサクロック周波数及びL2キャッシュ周波数は、作業負荷に基づいてスケーリングされ得る(例えば、メモリ集中型の作業負荷の場合は、コアと比べてより速いL2キャッシュ)。大まかに言えば、ASMPシステムはSMPシステムよりも電力面でより効率的であるが、追加の、及びより複雑なハードウェアが、潜在的により高い消費電力の原因となる可能性がある。L1キャッシュミス率が高い場合、プロセッサはL2キャッシュからデータをフェッチする。要求された関連データが、L2キャッシュの低い方のクロック周波数部分に格納されている場合、プロセッサはデータを待たなくてはならない。このことが、より高いレイテンシ、及びより高い消費電力の原因となる。ASMPはまた、全てのプロセッサ/コアを異なる様に、又は不均等に扱う(不均等性)と見なされてよい。
先の(出願日が2014年12月22日の)米国特許出願第14/580,044号は、ASMPを使用する複数のプロセッサを有する処理システム100の基本アーキテクチャと、同様の従来技術のシステムがSMPに利用されることとを(その図1において)例示し、説明したが、当業者ならば容易に理解するように、それらのプロセッサは、単一のクロック周波数で、かつ単一の供給電圧レベルを使用して動作する。当該出願においては、(1)SMP/ASMPモード間の高速かつ効率的な動的切り替えのためのハードウェアベースの装置と、(2)1つのコアから2つのコアへ、当該2つのコアがASMPモードで動作している(及び、3つ以上のコアが動作する場合は、それらをSMPモードで動作させる)状態で切り替えることに重点を置いた低コストバージョンのSMP/ASMPシステムとを含む、基本システムに対する様々な改善が説明されている。
ソフトウェアによる介在がない状態での、ハードウェアベースの、又はハードウェアで実施される切り替えは、SMP/ASMPモード間のより高速な遷移を提供し得る。従って、ハードウェアベースの切り替え方法及び装置を利用した高速SMP/ASMPモード切り替えを提供する低コスト、低電力のマルチプロセッシングシステム又はアーキテクチャが必要である。
一実施形態に従って、第1の供給電圧を受け、第2の供給電圧を生成するよう構成された電圧レギュレータ回路であって、当該第2の供給電圧は第1の供給電圧より低い電圧値を有する、電圧レギュレータ回路と、第1の予め定められた周波数及び第1の供給電圧を有する第1のクロック信号を受信し、それらに従って動作するよう構成された第1のプロセッサと、第1のクロック信号、又は、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号の何れかを受信し、それに従って動作し、第1の供給電圧又は第2の供給電圧を受け、それに従って動作するよう構成された第2のプロセッサとを備えるマルチプロセッサ(MP)処理システムを含むマルチプロセッシングシステムが提供される。当該システムはまた、電圧レギュレータ回路に連結され、第1の供給電圧又は第2の供給電圧を第2のプロセッサに選択的に入力するためのバイパス信号を生成するよう構成されたコントローラを備え、当該第1のプロセッサは更に、第1モードの動作中においても、第2モードの動作中においても、第1のクロック信号及び第1の供給電圧のみを受け、それらに従って動作するよう構成されている。別の実施形態に従って、マルチプロセッシング機能を実行するよう構成された、第1のプロセッサ及び第2のプロセッサを含む複数のプロセッサを有する装置が提供される。コントローラが第1モード及び第2モードで第2のプロセッサの動作を制御するよう構成されており、クロック生成回路が、コントローラに連結され、コントローラからの1又は複数の信号に応答して第1のクロック信号及び第2のクロック信号を生成及び出力するよう構成されており、切り替え回路が、クロック生成回路及び第2のプロセッサとの間に配置され、第1のクロック信号及び第2のクロック信号を受信し、第2のプロセッサに出力するために一方を選択するよう構成されており、ここで、第1モードの動作中、第1のクロック信号は第2のプロセッサに出力され、第2モードの動作中、第2のクロック信号は第2のプロセッサに出力される。当該装置はまた、コントローラに連結され、第1の動作電圧信号を受信し、第1の動作電圧信号から第2の動作電圧信号を生成し、第1モードの動作中、第2のプロセッサに入力するために第1の動作電圧信号を出力し、第2モードの動作中、第2のプロセッサに入力するために第2の動作電圧信号を出力するよう構成された電圧レギュレータ及びバイパス回路を備える。第1モードの動作及び第2モードの動作中、第1のクロック信号は第1のプロセッサに入力される。当該装置は、単一の基板上に配置される。第1のプロセッサ、第2のプロセッサ、並びに電圧レギュレータ及びバイパス回路は、単一の半導体基板上に配置される。当該コントローラは更に、モード選択信号に応答して、第1モードの動作と第2モードの動作との間で第2のプロセッサの動作を動的に切り替えるよう構成されている。モード選択信号は、少なくとも一部は、複数のプロセッサ内の一プロセッサのアクティブ化又は非アクティブ化に基づいて生成される。当該コントローラは更に、モード選択信号に応答して、電圧レギュレータの少なくとも1つの動作特性を予め設定するよう構成されている。当該少なくとも1つの動作特性は、バイアス電流であり、当該電圧レギュレータは、コントローラに連結され、電圧レギュレータのバイアス電流を生成及び制御するよう構成されたバイアス電流回路を有する。当該電圧レギュレータは、電圧レギュレータの出力に連結されコントローラに入力するために、電圧の出力電流の変化を示す電流感知フィードバック信号を生成するよう構成された電流センサと、コントローラに連結され、電流感知信号に応答して電圧レギュレータを制御するよう構成された制御回路とを有する。当該コントローラは、有限ステートマシン(FSM)、プロセッサ、マイクロコントローラ、又は論理回路のうちの少なくとも1つを有する。更に別の実施形態に従って、対称型マルチプロセッシング(SMP)モードと、非対称型マルチプロセッシング(ASMP)モードとの間で複数のプロセッサを切り替える方法が提供される。当該方法は、第1のプロセッサが動作する間、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた動作電圧を有する第1の供給電圧とに従って第1のプロセッサを動作させる段階と、第1の供給電圧から第2の供給電圧を生成する段階と、モード選択信号を受信する段階と、モード選択信号に応答して、第1モードの動作又は第2モードの動作で第2のプロセッサを動作させる段階とを備える。第1モードの動作では、第2のプロセッサは第1のクロック信号及び第1の供給電圧に従って動作させられ、第2モードの動作では、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び第2の供給電圧に従って動作させられる。当該方法は更に、第1のクロック信号及び第1の供給電圧を第1のプロセッサに入力する段階と、第1のクロック信号及び第2のクロック信号を切り替え回路に入力し、第1モードの動作中は第1のクロック信号を第2のプロセッサに出力し、第2モードの動作中は第2のクロック信号を第2のプロセッサに出力する段階と、第1モードの動作中は第1の供給電圧を第2のプロセッサに入力し、第2モードの動作中は第2の供給電圧を第2のプロセッサに入力する段階とを備える。当該方法は更に、負荷情報、使用情報、キャッシュミス率、メモリ帯域幅情報、又は消費電力情報のうちの少なくとも1つに応答してモード選択信号を生成する段階を備える。当該方法は更に、第2の供給電圧を生成する段階、第1のプロセッサを動作させる段階、及び第2のプロセッサを動作させる段階は、単一の半導体基板内の回路によって実行されることを含む。当該方法は更に、第1の供給電圧又は第2の供給電圧の何れかを出力するよう構成された電圧レギュレータ回路の少なくとも1つの動作特性を予め設定する段階を備える。当該少なくとも1つの動作特性は、バイアス電流であり、当該電圧レギュレータは、コントローラに連結され、電圧レギュレータのバイアス電流を生成及び制御するよう構成されたバイアス電流回路を有する。当該方法は更に、第1の供給電圧又は第2の供給電圧の何れかを出力するよう構成された電圧レギュレータ回路によって出力された電流を感知する段階と、感知された電流に応答して電圧レギュレータを制御する段階とを備える。
更に別の実施形態では、複数のプロセッサを有するマルチプロセッサシステムにおける処理の方法を提供する。当該方法は、複数のプロセッサ内の第1のアクティブプロセッサのみを使用して、マルチプロセッサシステム内で処理する段階と、マルチプロセッサシステム内での処理のために、第2のプロセッサがアクティブ化されるべきであると判断する段階と、当該判断に応答して、第2のプロセッサをアクティブ化する段階と、対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、第1のアクティブプロセッサ及び第2のアクティブプロセッサを使用してマルチプロセッサシステム内で処理する段階とを備える。SMPモードにある場合、第1のアクティブプロセッサ及び第2のアクティブプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作し、ASMPモードにある場合、第1のアクティブプロセッサは、第1のクロック信号及び第1の供給電圧に従って動作し、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び、第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作する。当該方法は更に、モード選択信号を受信し、モード選択信号に応じて、SMPモードからASMPモードへ、又はASMPモードからSMPモードへの何れかに、第1のアクティブプロセッサ及び第2のアクティブプロセッサの動作を切り替える段階を備える。
別の実施形態において、第1のプロセッサ及び第2のプロセッサ、並びに、少なくとも第2のプロセッサに連結されたコントローラを有するマルチプロセッサ(MP)処理システムが提供される。当該コントローラは、アクティブ化/非アクティブ化信号に応答して第2のプロセッサをアクティブ化又は非アクティブ化し、第2のプロセッサがアクティブ化され次第、対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、第1のプロセッサ及び第2のプロセッサを使用するマルチプロセッサシステム内での処理を制御するよう構成されている。SMPモードは、第1のプロセッサ及び第2のプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作するモードと定義され、ASMPモードは、第1のプロセッサは第1のクロック信号及び第1の供給電圧に従って動作し、第2のプロセッサは、第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作するモードと定義される。当該コントローラは更に、モード選択信号を受信し、モード選択信号に応じて、SMPモードからASMPモードへ、又はASMPモードからSMPモードへの何れかに、第1のプロセッサ及び第2のプロセッサの動作を切り替えるよう構成されている。
本発明とその利点をより完全に理解するために、ここで、添付の図面と併せ、以下の説明を参照する。同様の番号は同様の対象物を指定する。
本開示によるマルチプロセッシング(MP)システムを例示する。
図1に示されたマルチプロセッシングシステムをより詳細に例示した図である。
本開示による、図2に示されたシステムで使用するための、例示的な有限ステートマシン(FSM)及びプロセスを例示する。
本開示による、図2に示されたシステムで使用するための、例示的な有限ステートマシン(FSM)及びプロセスを例示する。
図2に示された電圧レギュレータ及び切り替えコントローラの一実装例を例示する図である。
図2に示された電圧レギュレータ及び切り替えコントローラの別の実装例を例示する図である。
図2に示された電圧レギュレータ及び切り替えコントローラの別の実施形態を例示する。
SMP/ASMPモード切り替えを起動及び制御するためのアーキテクチャ(方法、プロセス、システム)の図である。
SMP/ASMPモード選択/切り替えプロセスと統合された、プロセッサの追加/削除のためのプロセスの概略フロー図である。
本開示は、(出願日が2014年12月22日の)米国特許出願第14/580,044号に記載の図及び説明の全てを本明細書において十分に記載されたかのように、参照により組み込む。
本明細書で説明される図1から図8、及びそれらの中で例示される様々な実施形態、並びに本特許文献における本開示の以下に説明される原理は、例示することのみを目的とし、決して本発明の範囲を限定するものと解釈されるべきではない。当業者であれば、本明細書で説明される原理が、任意のタイプの適切に構成された(1又は複数の)デバイス又は(1又は複数の)システムにおいて実装されてよいことを理解するであろう。
米国特許出願第14/580,044号に説明されているように、プロセッサ/コアのグループの動作を完全SMPシステムから完全ASMPシステムへ切り替える場合、このSMP/ASMP動的切り替え機能の提供に関連する費用及び複雑さ(ハードウェア/ソフトウェア)はかなり大きなものであるだろう。より小さなデバイス(例えば、スーパーコンピューティングのデバイスおよびアプリケーションとは対照的に、モバイルアプリケーションにおけるモバイルデバイス、ハンドヘルドデバイス、スマートフォン等)の場合、研究及び試験から、ほとんどの使用アプリケーションにおいて、マルチプロセッシングタスク/機能は、2つ(又はそれより少ない)プロセッサ/コアを使用して十分に対処され得ることが分かった。これらのアプリケーションのほとんどにおいて、2つのプロセッサ/コアは不平衡負荷で実行され、より高い消費電力をもたらす。
故に、米国特許出願第14/580,044号は、ASMP方式−しかしASMP方式では、プロセッサ/コアのうちのただ1つのプロセッサ/コア(又はプロセッサ/コアのサブセット)が、異なるクロック周波数及び/又は異なる動作供給電圧の間での動的切り替えのために構成及び有効にされる−で、かつ、残りのプロセッサ/コアは、同一のクロック周波数及び同一の供給電圧で構成された状態で動作可能な、低コスト、低電力、高性能なマルチプロセッシングシステムを説明している。例えば、マルチプロセッサシステムが2つのプロセッサ/コアを含む場合、第1のプロセッサ/コアは、(動的に可変ではない)第1のクロック周波数、及び(動的に可変ではない)第1の供給電圧で動作し、第2のプロセッサ/コアは、その(第1のプロセッサ/コアと同一の)第1の周波数及び第1の供給電圧、又は異なる周波数及び異なる供給電圧の何れかでの動作の間で切り替え可能である。これは、プロセッサ/コアのうちの少なくとも1つ(又は、サブセット)がこの動的切り替え機能を有する、3つ以上のプロセッサ/コアを有するシステムにおいてもまた適用されてよい。
効率及び切り替えレイテンシを改善すべく、本開示は、2つのモード間での制御及び切り替えを可能にするハードウェアベースの切り替え装置を有するシステムを提供する。ハードウェア内では、オペレーティングシステム(OS)又は他のソフトウェア/ハードウェアから切り替えコマンドを受信し次第、SMPとASMPとの間で切り替えるべく、複数のプロセッサ及びメモリへのクロック及び電圧を制御するよう、一続き又は一連のアクションが実行される。当該装置/方法は、ソフトウェア/OSの介在を最小化、又は取り除き、より高速なモード切り替え速度を有する。
本明細書で使用されるとき、用語SMPは概して、同一のクロック(周波数)及び同一の電圧源で、(当該同一のクロック及び電圧源で動作するL2キャッシュメモリを有する)共有メモリシステムを利用して動作する複数のプロセッサ/CPU/コアを使用した処理を指す。用語ASMPは概して、少なくとも2つが、異なるクロック(周波数)及び/又は電圧源で動作する複数のプロセッサ/CPU/コアを使用した処理を指す。ASMPでは、典型的には、プロセッサはそれぞれ異なるL2キャッシュメモリを利用する。しかしながら、ASMPはまた、同一のL2キャッシュメモリの共有(異種ASMPと称される)を含んでよい。別の態様では、用語ASMPは、各プロセッサ/CPU/コアが、第1のクロック周波数及び第1の供給電圧、又は第2のクロック周波数及び第2の供給電圧の少なくとも何れかを使用して動作するよう構成されている、複数のプロセッサ/CPU/コアを使用したマルチプロセッシングを指す。加えて、ASMPモードは概して、グループ内の他のコアと同一のクロック周波数及び同一の供給電圧を使用して動作可能な少なくとも1つのコア(又は、それより多いが、全てのコアより少ないコア)が、異なるクロック周波数及び供給電圧を使用するよう動的に切り替えられる、又は構成されている、コアのグループ(複数のコア)を使用したマルチプロセッシングを指す。このように、コアのグループはSMPモード又はASMPモードの何れかで動作するが、グループ内の少なくとも1つ(全てではない)は、異なるクロック周波数及び供給電圧を有する。
理解されるように、本明細書で使用される用語「コア」は、1つのプロセッサ、CPU、又は処理コアを指し得る。当該定義はまた、広げられて、複数のプロセッサ、CPU、又は処理コアを有する「コア」を表す、又は指し得る。従って、本明細書における用語「コア」の使用は、1つの処理要素に限定されるのではなく、同一の処理要素のグループを含み得る。加えて、用語「コア」、「プロセッサ」、及び「CPU」は、本明細書では互換的に使用され得、かつ、使用される。
ここで図1を参照すると、本開示によるマルチプロセッシング(MP)システム100が示されている。MPシステム100は、第1の動作電圧源120(VDD)と、単一のクロック信号130(CLK)とに連結されたコアA、C、及びD(110a、110c、110d)を含み、一方で、コアB(110b)は、第2の電圧源140(VDDb)と、クロック信号150(CLKb)とに連結されている。この構成において、コアBは、第1の動作電圧源120(VDD)に由来する第2の電圧源140(VDDb)に連結されている。電圧レギュレータ及び切り替えコントローラ160が、第1の動作電圧源(VDD)を受け、第2の電圧源(VDDb)を生成する。図1には図示されないが、電圧レギュレータ及び切り替えコントローラは(選択されたモードに応じて)VDDb又はVDDの何れかをコアBに出力する。従って、VDDbはVDDに由来する。様々な実施形態において、電圧レギュレータ及び切り替えコントローラ160は、同一チップ又はモノリシック基板上にシステム100と共に構築又は配置され、別の実施形態においては、異なるチップ又は基板上にあってよい。
ここで図2を参照すると、本開示による処理システム100を例示する詳細図が示されている。
大まかに言えば、処理システム100は、SMP及びASMPという2つのモードの動作間で切り替え可能なプロセッサのグループ(複数のプロセッサ)を含む。SMPモードでは、動作しているプロセッサ(例えば、1つ、3つ、又は4つ全て)が同一のクロック周波数及び供給電圧を使用して動作する一方、(以下で説明される異なる実施形態における)ASMPモードでは、少なくとも1つの第1のプロセッサは、残りの動作しているプロセッサのものとは異なるクロック周波数及び供給電圧を使用して動作するよう構成されている。
当該システムは、異なる2つのクロック周波数及び供給電圧の間での第1のプロセッサの制御及び切り替えを可能にするハードウェア装置/回路を含む。ハードウェア内では、オペレーティングシステム(OS)又は他のソフトウェア/ハードウェアから切り替えコマンドを受信し次第、SMP及びASMPの間で切り替えるべく、第1のプロセッサ及びメモリのクロック及び電圧を制御するよう、一続き又は一連のアクションが実行される。切り替えコマンドの生成は、負荷、キャッシュミス率、消費電力の理由、その他などの、要望通りの1又は複数の要因に基づき得る。当該装置/回路は、第1のプロセッサが、一方のモードから他方のモードへの遷移中失敗しないこと、及び、プロセッサ/メモリへの(1又は複数の)クロックがグリッチなく切り替えられることを保証する。当該装置/方法は、ソフトウェア/OSの介在を最小化し、より高速なモード切り替え速度を有する。
処理システム100は、例示されるように、マルチプロセッサコアと、複数のプロセッサ110を有するキャッシュサブシステム205とを含み、当該キャッシュサブシステム205は、110a(CPU A)、110c(CPU C)、110d(CPU D)、及び110b(CPU B)を、対応するL2キャッシュメモリ部210(210a及び210b)と、対応するクロスドメインクロック(CDC)回路230a、230c、230d、230bと共に含む。4つのプロセッサ110(並びに、対応するメモリ及び回路)が示されているが、プロセッサ数はそれより少ない、又は多いこともあり得る。しかし少なくとも2つのプロセッサを含む。理解されるように、各プロセッサ110は、1又は複数のプロセッサ、中央演算処理装置(CPU)、又はコア、又はこれらの組み合わせを含んでよい。
当該処理システム100は更に、プロセッサ、キャッシュ、及びCDCへの電力の供給に使用する第1の動作供給電圧(VDD)を生成するための電力管理制御(PMIC)回路240を含む。同様に、クロック生成回路250が、プロセッサ、キャッシュ、及びCDCのクロッキング動作に使用する、様々な予め定められたクロック周波数を有する複数のクロック信号を生成する。
一実施形態において、PMIC回路240を除いて、処理システム100は、単一の基板/ダイ、又は集積半導体基板/ダイ上に(又は、多基板ICパッケージ内に配置された複数の半導体基板内に)配置される、又はそうでなければ位置付けられる。別の実施形態において、PMIC回路240もまた、単一の基板/ダイ、又は集積半導体基板/ダイ上に含まれてよい。
例示されるように、処理システム100はまた、(切り替え又はモードコントローラとも称されてよい)電圧レギュレータ及び切り替えコントローラ160と、クロック切り替え回路(又はモジュール)270とを含む。理解されるように、コントローラ160は、バイパス回路230を有するCDC、クロック生成回路250、及びクロック切り替え回路270の機能及び動作を制御するための様々な制御信号を出力する。
クロック生成回路250は、(SMPモードで)プロセッサ110の動作速度を一括して制御するための1つのSMPプロセッサクロック信号(CLK)と、(SMPモードで)キャッシュ部分210a、210bの動作速度を一括して制御するための1つのSMPメモリクロック信号(CLKch)と、プロセッサ110bの動作速度の独立制御を可能にする少なくとも1つのASMPプロセッサクロック信号(CLKb)と、キャッシュメモリ部210bの動作速度の独立制御を可能にする少なくとも1つのASMPメモリクロック信号(CLKchb)とを含む複数のクロック信号を生成するための必須の回路及び要素を含む。これらのクロックのそれぞれは、回路250によってグリッチなく有効/無効にされる。クロック生成回路250はまた、コントローラ160によって生成された入力イネーブル信号EN_CLK及びEN_CLKbを受信する。
PMIC回路240は、少なくとも、システム100で使用するためのVDDを生成するための必須の回路及び要素を含む。例示されるように、PMIC回路240は、プロセッサ110a、110c、110d、キャッシュメモリ部210a、及び電圧レギュレータ及び切り替えコントローラ160に電力を供給するためのVDDを生成及び出力する。示されるように、供給電圧VDDbは、プロセッサ110bと、その関連するキャッシュメモリ部210bとに電力を供給する。当業者には理解されるように、プロセッサ/メモリがより高いクロック速度で動作する場合、同様により高い供給電圧でプロセッサ/メモリを動作させることが望ましく、必要であるだろう。加えて、コアが使用されない場合、コアは電力を急減させられ、及び/又はクロックを無効にされてよい。例えば、プロセッサ110bへの供給電圧VDDbは無効にされてよく、及び/又は、プロセッサ110bへのクロック入力は無効にされてよい(例えば、入力クロックなし)。同様に、プロセッサ110a、110c、110dへの供給電圧VDD及び/又はクロック入力は無効にされてよい。この機能は、(図2に示されているが、参照番号で特定されていない)1又は複数のスイッチによって提供されてよい。
クロック生成回路250はまた、生成されたクロック信号CLK及び/又はCLKbのそれぞれに対する何らかのプログラム化可能性を可能にする機能及び回路を含んでよい。一実施形態において、クロック信号のそれぞれは、多数の可能な周波数のうちの1つに対してプログラム可能であってよい(例えば、CLKが、300MHzから3GHzなどの範囲の間でプログラム可能であってよい)。別の実施形態において、特定のクロック信号のみがプログラム可能であってよい一方で、他の実施形態においては、各クロック信号の周波数は、予め定められ、かつ固定される。更に別の実施形態では、周波数は互いに対して固定されてよいが、グループとしてプログラム可能であってよい。同様に、PMIC回路240はまた、動作電圧源VDDに対するプログラム化可能性を提供するように、機能及び回路を含んでよい。
図2に示されるように、コントローラ160は、電圧レギュレータ及びバイパス回路280、及びSMP/ASMP切り替えコントローラ290を含む。電圧レギュレータ及びバイパス回路280内の電圧レギュレータ(別々には示されていない)は、動作電圧源VDDから電圧源VDDbを生成し、VDD又はVDDbの何れかを選択的に出力する。バイパスモードでは、VDDb=VDDである。加えて、VDDbは、電圧レギュレータを無効にすることによって電力を急減させられてよく、これにより、コアB(110b)をシャットダウンする。理解されるように、そして大まかに言えば、電圧レギュレータのためのバイパス機能は、マルチプレクサを使用して実装され、ステートマシン又は他のプロセスによって制御され得る。
他の実施形態において、コントローラ160は、VDDを受け、多数の可能な電圧レベルのうちの(プログラム可能な)1つ(例えば、電圧は0.5ボルトから3.3ボルトなどの範囲の間でプログラム可能であってよい)を、電圧源VDDbとしてVDDから生成してよい。更に別の実施形態では、電圧源VDDbは予め定められ、かつ固定される。
SMP/ASMP切り替えコントローラ290は、有限ステートマシン(FSM)292と、1又は複数のタイマ294と、1又は複数のストレージレジスタ296(例えば、構成又はステータスレジスタ)とを含む。コントローラ290は、SMP/ASMPモード切り替えコマンド/信号(SMP/ASMP_SELECT)、及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)のアサーションに応答して一連のアクション又はプロセスを制御及び実行するよう機能する。故に、例示された実施形態において、SMP/ASMPモード切り替えコマンドがアサート/アンアサートされた場合、動作の処理モードは、ASMPモードとSMPモードとの間で切り替えられる。様々な方法及びメカニズムが、SMP/ASMPモード切り替えコマンドの生成に使用されよく、いくつかの例が図7に関して以下で説明される。SMP/ASMPモード切り替えコマンド(SMP/ASMP_SELECT)及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)は、様々なイベントに応答して、及び処理システム100の内又は外の様々な要素によって生成されてよいことが理解されるだろう。
一実施形態において、SMP/ASMPモード切り替えコマンド(SMP/ASMP_SELECT)に加えて、コントローラ290は、電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)の使用を統合して、当該信号に応答して一連のアクション又はプロセスを制御及び実行する。
プロセッサ110bのための、CLKクロック(SMP)からCLKbクロック(ASMP)への実際の切り替えが起こる時間である場合(及びその逆)、コントローラ290は、クロック切り替え回路270内のマルチプレクサ272aを使用して、CLKbクロック信号をプロセッサ110bに、選択的に多重化する選択信号(SELECT_CLKb)を生成する。理解されるように、ASMPモードでのプロセッサ/CPUコア110b用クロックは、CLKbと示され、一方で、SMPモードでの残りのプロセッサ/CPUコア110a、120c、110d用のクロックはCLKと示される。従って、SELECT_CLKb信号は、何れのクロック(CLKb又はCLK)がプロセッサ110bによって利用されるかをグリッチなく選択する。一実施形態において、SELECT_CLKb信号がアサートされた(論理ハイ又は「1」)場合、クロック信号CLKbが選択され、プロセッサ/コア110bに入力される。SELECT_CLKb信号がアンアサートされた(論理ロー又は「0」)場合、クロックCLKが選択され、プロセッサ/コア110bに入力される。
理解されるように、SELECT_CLKbがアサートされた(論理ハイ又は「1」)場合、クロック信号CLKbが選択され、プロセッサ/コア110bに入力される一方、クロック信号CLKは残りのプロセッサ/コア210a、210cおよび210dに入力される。SELECT_CLKbがアンアサート(論理ロー又は「0」)場合、クロック信号CLKが選択され、プロセッサ/コア110bに入力される一方、クロック信号CLKもまた、残りのプロセッサ/コア110a、110cおよび110dに入力される(又は、入力に利用できる)。
同様に、選択信号(SELECT_CLKb)は、これに対応して、クロック切り替え回路270内のマルチプレクサ272bを使用して、CLKchbメモリクロック信号をキャッシュ部分210bに、選択的に多重化する。
イネーブル信号(EN_CLK、EN_CLKb)を使用して、切り替えコントローラ290は、クロック生成回路250を制御して、SMP/ASMP切り替え前にクロックを有効にする。コントローラ290はまた、電圧レギュレータ及びバイパス回路280を制御して、プロセッサ110b(コアB)に入力するためにVDD又はVDDbの何れかを選択する。コントローラ290はまた、SELECT_CLKb信号を生成する。当該信号は、アサートされた場合、少なくとも1つの他のプロセッサ110a、110c、110dは、クロック速度(CLK)及び供給電圧VDDで動作しつつ、プロセッサ110bを(ASMPモードの)異なるクロック速度(CLKb)及び供給電圧VDDbに切り替わらせる。
切り替え中の様々なイベント及びアクションのタイミングは、1又は複数のタイマ294を使用して、FSM292によって制御される。以下でより詳細に説明されるように、クロックのウォームアップ期間及び電圧上昇/下降期間が利用される。これらの値は、ソフトウェア又は他の方法によって、予めプログラムされるか又は予め設定され、コントローラ内のC/Sレジスタ296又は他のメモリ位置(1つも図示されていない)に格納され得る。
理解されるように、そして、参照番号で具体的に特定されていないが、例えばレベルシフタなどの他の様々な論理回路が含まれ得る。レベルシフタは、典型的には、信号が電力領域をクロッシングする場合に利用される。
(図2に示される)クロックマルチプレクサ272の1つの可能な回路実装例が、米国特許出願第14/580,044号において(図4、及びその対応する記載を参照して)説明されている。クロックマルチプレクサ272は、「グリッチレス」であり、それは、切り替え中にグリッチがないことを意味する。他の好適な回路実装例がクロックマルチプレクサ272のために利用されてよく、当業者であれば、グリッチレスなマルチプレクサ切り替えを実行する他の回路が使用され得ることを容易に理解するであろう。
バイパス回路230(図2に示される)を有するCDCの1つの可能な回路実装例が、米国特許出願第14/580,044号において(図5、及びその対応する記載を参照して)説明されている。理解されるように、非同期CDC回路は当該分野において周知であり、故に、当業者ならばそのような機能をどのように実装するかを理解するであろう。これらのCDC回路及び/又はそれらの機能はまた、クロック切り替え回路として、又は、プロセッサとL2キャッシュとの間の非同期FIFOブリッジとして当該分野において周知であろう。
ここで図3Aを参照すると、FSM292によって実行又は実装される1つのプロセス又は方法300が例示されている。このプロセスはまた、電圧レギュレータ及びバイパス回路280の動作を制御すべく機能する。理解されるように、FSM292のプロセス/機能は、異なる構成、方法、又は構造(又は、これらの組み合わせ)を使用して実装されてよい。例えば、コントローラ290の機能は、例示された実施形態においては有限ステートマシン(例えば、ハードウェア実装)として実装されているが、その代わりに、個別の論理回路、ファームウェア等を有するマイクロコントローラ、及びこれらの任意の組み合わせを使用して、又は、当業者に周知の任意の他の方式/方法で実装されてよい。好ましくはないが、この機能はまた、ソフトウェア、又はソフトウェア及びハードウェアの何らかの組み合わせで実装されてもよい。FSM292(及び任意の他のハードウェア実装)は、有利に、より高速で動作し、ソフトウェア/OSの介在を最小化する。例外、例えばタイムアウト等、の場合には、FSM292はシステムプロセッサに対する割り込みを生成する。
別の実施形態においては、コントローラ290内の別個のFSM(又は、他の機能)がまた、EN_CLK信号、EN_CLKb信号、及びSELECT_CLKb信号のタイミングおよび生成を制御してよいこともまた理解されるであろう。また以下で更に説明される別の実施形態において、FSM292は、(1)電圧レギュレータ及びバイパス回路280を制御する信号(EN、BYPASS)、及び(2)クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)のタイミングおよび生成の両方を統合的に制御する「統合型」有限ステートマシンである。この「統合型」の実施形態において、FSM292は、入力信号として、SMP/ASMPモード切り替えコマンド/信号(SMP/ASMP_SELECT)、及び電圧源モード切り替えコマンド/信号(LDO_MODE_SELECT)を受信する。以下の表
1は、FSM292(コントローラ290)によって実行される入力から出力への信号の遷移を例示しており、表中、信号EN(イネーブル)及びBYPASS(バイパス)は、電圧レギュレータ及びバイパス回路280のモードを制御すべく、入力信号に応答して生成された出力信号である。
以下の表2は、SMP/ASMP_SELECT信号及びLDO_MODE_SELECT信号の定義/説明を提供する。
制御信号EN及びBYPASSは、電圧レギュレータ及びバイパス回路280を制御すべく、FSM292によって生成及び出力される。コントローラ290(例えば、FSM292)の入力信号(SMP/ASMP_SELECT、LDO_MODE_SELECT)及び出力信号(EN、BYPASS、SELECT_CLKb、EN_CLK、EN_CLKb)は、図5及び図6に例示されている。
図3Aに示されるように、FSM292の状態図によって表されるプロセス300は、電圧レギュレータ及びバイパス回路280の制御に関する様々な状態及び遷移を含む。示されるように、OFF状態(310)、ASMPモード状態(320)、及びSMPモード状態(330)の3つの主状態がある。
OFF状態(310)は、LDO_MODE_SELECT信号がローであることに応答して、EN信号及びBYPASS信号がロー(例えば、EN!、BYPASS!)である場合、電圧レギュレータがオフ又は非アクティブ(例えば、フローティング)であることによって特徴付けられる。
ASMPモード状態(320)は、SMP/ASMP_SELECT信号がローであり、かつLDO_MODE_SELECT信号がハイであることに応答して、EN信号がハイであり、かつBYPASS信号がローである(例えば、EN、BYPASS!)場合、プロセッサ110bに供給電圧を提供すべく、電圧レギュレータが、選択的な入力のためにVDDbを出力することによって特徴付けられる。
SMPモード状態(330)は、SMP/ASMP_SELECT信号がハイであり、かつLDO_MODE_SELECT信号がハイであることに応答して、EN信号がハイであり、かつBYPASS信号がハイである(例えば、EN、BYPASS)場合、プロセッサ110bに供給電圧を提供すべく、電圧レギュレータが「バイパスされ」、選択的な入力のためにVDDを出力することによって特徴付けられる。
動作中であり、かつ、処理システム100が初めに非アクティブであると仮定すると、LDO_MODE_SELECT信号はローであり、その結果、切り替えコントローラ290から出力されたEN信号はアンアサートされる(!EN)(及び、BYPASS信号の値は関連しない)。LDO_MODE_SELECT信号がアクティブ化され次第、切り替えコントローラ290は、EN信号をアサートし(EN)、プロセス300は、切り替えコマンド(SMP/ASMP_SELECT)信号の値に応じて状態320又は330の何れかに進み得る。
切り替えコマンドSMP/ASMP_SELECTがASMPモードの動作を示す(SMP/ASMP_SELECTがロー)場合、コントローラは、ローのBYPASS信号(!BYPASS)を出力する。EN信号及びBYPASS信号のこれらの値に基づいて、FSM292はASMPモード状態320に向かって遷移する。しかしながら、状態320に入る前に、遅延2状態(315)に入る。遅延2状態は、FSM292がローのBYPASS信号を出力し、ASMPモード状態320に入る前に、遅延させるべく予め定められた時間(待機期間)を提供する。遅延2は、VDDbを生成するのに利用される電圧レギュレータのタイプの物理的動作特性に応じて、任意の適切な期間範囲、例えば、サブマイクロ秒から数十マイクロ秒であってよい。言い換えれば、ローのBYPASS信号の出力は遅延2のために遅延され、出力のためにVDDbを生成するよう、電圧レギュレータがアクティブ化し安定すること(すなわち、ウォームアップ)を可能にする。
切り替えコマンドがSMPモードの動作を示す(SMP/ASMP_SELECTがハイ)場合、コントローラは、ハイのBYPASS信号(BYPASS)を出力する。EN信号及びBYPASS信号のこれらの値に基づいて、FSM292はSMPモード状態330に向かって遷移する。しかしながら、状態330に入る前に、遅延1状態(335)に入る。遅延1状態は、FSM292がハイのBYPASS信号を出力し、SMPモード状態330に入る前に、遅延させるべく予め定められた時間(待機期間)を提供する。遅延2と同様に、遅延1は、VDDを生成するのに利用される電圧レギュレータのタイプの物理的動作特性に応じて、任意の適切な期間範囲、例えば、サブマイクロ秒から数十マイクロ秒であってよい。言い換えれば、生成器が安定した出力を生成することを可能にし、かつ切り替えノイズを低減すべく(例えば、トライステート/0出力からVDDまで)、ハイのBYPASS信号の出力は、遅延1のために遅延される。
ひとたびASMPモード又はSMPモードの何れかになると、プロセス300は、切り替えコマンド(SMP/ASMP_SELECT)信号の値に応じてこれらの2つのモード間で切替わってよい。
ASMPモード320にある場合、切り替えコマンド信号が、システムがSMPモードに切り替わるべきであることを示す(すなわち、SMP/ASMP_SELECTがハイ)とき、コントローラ290はBYPASS信号をアサートし(BYPASS)、プロセスはSMPモード状態330に向かって遷移する。しかしながら、状態330に入る前に、中間VREG_MAX状態325に入る。中間VREG_MAX状態は、電圧レギュレータ出力がその最大出力電圧レベルに上昇することを可能/できるようにすべく、別の、予め定められた遅延期間を提供する。理解されるように、電圧レギュレータは既に、予め定められた電圧源VDDb‐それはVDDより低い‐をプロセッサに出力中なので、VDDbからVDDに切り替える前に、電圧レギュレータ400の出力電圧を(VDDより僅かに低い)その最大値に上昇させることが重要である。これにより、プロセッサ110bに入力される、供給電圧の潜在的な大きなスパイクが低減又は取り除かれる。図4を参照すると、出力値を制御するよう、Vref又はVrefmaxが電圧レギュレータに選択的に入力される(電圧レギュレータの出力は、増幅器の負端末における入力に等しい)。例えば、VDDが1.0ボルトである場合、Vrefmaxが0.9ボルト(その供給としてVDDを有する電圧レギュレータから出力される実際の最大値)に等しい状態で、Vrefは0.6ボルトであってよい。
この中間VREG_MAX状態325では、Vrefmaxは電圧レギュレータに選択的に入力され、予め定められた遅延が、バイパス回路280の出力をVDDbからVDDに切り替える前に、出力電圧がVrefmaxに上昇することを可能にする。
SMPモード330にある場合、切り替えコマンド信号が、システムがASMPモードに切替わるべきであることを示す(すなわち、SMP/ASMP_SELECTがロー)とき、コントローラ290は、BYPASS信号をデアサートし(!BYPASS)、プロセスは、ASMPモード状態320に向かって遷移する。しかしながら、状態330に入る前に、中間VREG_MAX状態325に入る。中間VREG_MAX状態は、電圧レギュレータ出力が低下し、安定することを可能/できるようにし、かつノイズを低減すべく、別の予め定められた遅延期間を提供する。
示されるように、ASMPモード状態320又はSMPモード状態330の何れかにあり、LDO_MODE_SELECT信号がローになる場合、EN信号はデアサートされ(!EN)、プロセスはOFF状態310に戻るよう遷移する。
FSM292によって実装されるプロセス300は、クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する(すなわち、SMP/ASMPモードクロック切り替え)信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成を統合することのない、電圧レギュレータ及びバイパス回路280の有限ステートマシン制御を提供して、プロセッサ110bのためにクロッキング周波数としてCLK又はCLKbを提供することが理解される。この実施形態では、別個に動作し、これらの他の回路を制御すべく、これらの他の制御信号を生成する第2のFSM(図示せず)が含まれてよい。この第2のFSMの具体的な実装例は、米国特許出願第14/580,044号(図3A、図3B及び図3C、並びにそれらの対応する記載)を参照して当業者によって容易に設計され得る。
ここで図3Bを参照すると、FSM292によって実行又は実装される、別のプロセス又は方法300aが例示されている。プロセス300aは、クロック生成回路250と、クロック切り替え回路270と、CDC及びバイパス回路230とを制御する(すなわち、SMP/ASMPモードクロック切り替え)信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成を統合することをその中に含む、電圧レギュレータ及びバイパス回路280の有限ステートマシン制御を提供するFSM292によって実装され得る。言い換えれば、プロセス300aは、統合型FSM292を表し得る(及び、上記第2のFSMは省略され得る)。このプロセス300aは、電圧レギュレータ及びバイパス回路280と、クロック制御回路250、270、及び230との両方の動作を制御すべく機能する。言い換えれば、図3BのFSM292は、電圧レギュレータ及びバイパス回路280の制御を、クロック生成回路250を制御する信号(EN_CLK、EN_CLKb、及びSELECT_CLKb)の制御/生成と統合する電圧調整及びクロック切り替えモジュールを提供し、(電圧変更/切り替えと、クロック変更/切り替えとの両方を制御する)統合型コントローラを提供する。従って、電圧レギュレータ及びその出力(すなわち、プロセッサへの電力供給)の制御と、クロック切り替え回路及びその出力(すなわち、プロセッサへのクロッキング信号)の制御が統合される、又は1又は複数の相互依存を有する。そのような統合型コントローラは、電圧レギュレータの有効化/ウォームアップ/切り替えプロセスと並行して、クロックの有効化/ウォームアップ/切り替えプロセスを可能にする。これにより、SMP/ASMP切り替えプロセスの全体的なレイテンシが改善される。
図3Bに例示されるように、プロセス300aは、状態の全て(310、315、320、325、330、335)及び(図3Aに示される)プロセス300の遷移と、追加の状態350、360、370、及び380、並びに関連する遷移とを含む。加えて、1つの遷移が僅かに修正されている。FSM292の状態図によって表されるプロセス300aは、(1)電圧レギュレータ及びバイパス回路280と、(2)回路250、270、及び230との制御に関する様々な状態及び遷移を含む。統合型有限ステートマシン(FSM)は電圧変更のみならずクロック切り替えも制御し、このように、統合有限ステートマシン(FSM)は、正しい相互依存が満たされることを保証しつつ、最も良好な並列性と、最適化されたアクションシーケンスとを達成し得る。
追加の4つの主状態は、遷移BYPASS状態(350)、SWITCH_CLK状態(360)、SWITCH_CLKb状態(370)、及びCLKb_WU状態(380)を含む。
示されるように、OFF状態(310)からSMPモード状態(330)への遷移内において、追加のBYPASS状態(350)及びSWITCH_CLK状態(360)が、遅延1状態(335)の後に含まれ、配置される。遅延1期間が満了した後、FSM292はBYPASS状態(350)に入る(しかし、BYPASS信号はまだハイにアサートされていない)。BYPASS状態(350)(基本的には内部電圧レギュレータの中間状態)において、BYPASS信号はアサートされ、プロセスは、SMPモード状態330に向かって遷移する(及びVDDがプロセッサ110bに入力される)。
完了し次第、SWITCH_CLK状態(360)に入る。SWITCH_CLK状態では、プロセス300aは、(1)EN_CLK信号をハイにアサートし、当該EN_CLK信号がクロッキング回路250内のCLK信号をオンに切り替えること、(2)予め定められた期間待機して、CLK信号がウォームアップすることを可能にすること、及び(3)ウォームアップ後、SELECT_CLKb信号をデアサートし、当該SELECT_CLKb信号がクロック切り替え回路270内で(CLKb信号とは対照的に)CLK信号をプロセッサ110bに選択的に入力することを含むいくつかの機能を実行する(図2もまた参照されたい)。
示されるように、SMPモード状態(330)からASMPモード状態(320)への遷移内において、CLKb_WU(ウォームアップ)状態(380)及びSWITCH_CLKb状態(370)が、VREG MAX状態(325)の前に含まれ、配置される。SMPモードからASMPモードへの切り替えがトリガされた(SMP/ASMP_SELECTがローになった)場合、CLKb_WU状態(380)に入る。CLKb_WU状態(280)において、プロセス300aは、EN_CLKb信号をハイにアサートし、当該EN_CLKb信号がクロッキング回路250内のCLKb信号をオンに切り替え、プロセス300aは、予め定められた期間待機し、CLKb信号がウォームアップすることを可能にする。ウォームアップ後、SWITCH_CLKb状態(370)に入り、プロセス300aは、SELECT_CLKb信号をアサートし、当該SELECT_CLKb信号がクロック切り替え回路270内で(CLK信号とは対照的に)CLKb信号をプロセッサ110bに選択的に入力する(図2もまた参照されたい)。完了し次第、プロセスは、その(1又は複数の)アクションが起こるよう、VREG_MAX状態(325)に遷移し、次に、SMPモード状態(330)に向かって遷移し、ASMPモード状態320に入るよう、BYPASS信号はデアサートされる(かつ、VDDbがプロセッサ110bに入力される)。
ASMPモード状態(320)からSMPモード状態(330)への遷移は異なる経路をとる。ASMPモードからSMPモードへの切り替えがトリガされた(SMP/ASMP_SELECTがハイになった)場合、VREG_MAX状態(325)に入る。完了し次第、BYPASS状態(350)に入り、完了し、SWITCH_CLK状態(360)に入り、完了し、プロセスは、SMPモード状態330に遷移する。
有限ステートマシンとして実装されるプロセス300aに基づいて、EN信号、BYPASS信号、EN_CLK信号、EN_CLKb信号、及びSELECT_CLKb信号の制御及び生成は、ソフトウェア/OSなしに達成される。これにより、SMPモードとASMPモードとの間でのより高速な切り替えがもたらされる。
ここで図4及び図5を参照すると、図2に示される電圧レギュレータ及び切り替えコントローラ160の代替的な2つの実施形態160a、160bが例示されている。
図4は、(図3Bに例示されるプロセス300aを実装するFSM292を有する)切り替えコントローラ290aと、電圧レギュレータ及びバイパス回路280aとを使用して実装される電圧レギュレータ及び切り替えコントローラ160aを例示する。この実施形態では、回路280aは、低ドロップアウト(LDO)電圧レギュレータ400、及び高速バイパススイッチ402を含む。基準信号(Vref)、基準最大信号(Vrefmax)、及びEN信号が、LDO電圧レギュレータ400に入力される。有効にされた場合、VDDb出力は、(BYPASS信号がアサートされたとき(BYPASS))VDD、又は、(BYPASS信号がデアサートされたとき(!BYPASS))Vrefに等しい。理解されるように、Vrefは、所望の値に選択され得る(又は、プログラム可能ですらある)。この実施形態では、電圧レギュレータに入力された実際の電圧基準信号は、Vref又はVrefmaxの何れかから選択されてよく、これらの何れかが、FSM292と、適切な切り替え回路(図示せず)との制御の下、電圧レギュレータに選択的に入力されてよい。上述されたように、回路280の出力をVDDbからVDDに切り替える前に、出力電圧をVref値からVrefmax値に上昇させることが有益であろう。
図5は、(図3Bに例示されるプロセス300aを実装するFSM292を有する)切り替えコントローラ290bと、電圧レギュレータ及びバイパス回路280bとを使用して実装される電圧レギュレータ及び切り替えコントローラ160aを例示する。この実施形態では、回路280bは、例示することのみを目的として、示されたようなコンポーネントを有する切り替え型電圧レギュレータ500を含む。当業者ならば、切り替え型電圧レギュレータの他の好適な構成(例えば、スイッチモード電圧レギュレータ、バック、統合型電圧レギュレータ、スイッチドキャパシタレギュレータ等)が利用されてよいこと(及び追加の制御信号も要求されてよいこと)を容易に理解するであろう。当該バイパス回路は、有効にされた場合、VDDb出力が、(BYPASS信号がアサートされたとき)VDDに、又は、(BYPASS信号がデアサートされたとき)VDDbに等しいという点で、図4に関して説明されたバイパス回路と同様に機能する。
LDO電圧レギュレータ400、及びスイッチドモードレギュレータ500に関して、一実施形態において、当該レギュレータ(400又は500)は、(上述されたように)同一の基板又は集積回路上に組み込まれてよい。
ここで図6を参照すると、電圧レギュレータ及び回路600を有する電圧レギュレータ及び切り替えコントローラ160cの別の実施形態の図が示される。電圧レギュレータ600は、低ドロップアウト電圧レギュレータの異なる実装例を例示する。このアーキテクチャは、予測的(又は、予め設定される)、及び応答的(又は、反応的)な別個の2つのノイズ抑制方法を使用して、SMP/ASMPモード切り替えによって生成されることのあるノイズを低減/抑制する。各方法は、切り替えによるノイズを最小化し、より高速な切り替えを可能にする。応答的な方法が、ミクロレベルの調整と、早い応答時間とを提供する一方、予測的な方法はマクロレベルの調整を提供する。これらのメカニズムの一方又は両方の何れかが利用されてよい。
SMP/ASMPモード切り替えコマンドが変化した(SMP/ASMP_SELECT信号が変化した)場合、コントローラ290は予測的に(1又は複数の)制御信号を生成して、バイアス電流制御回路630を通して増幅器(680)のバイアス電流を制御する。フィードバックフィルタ640は、図6に示されるように、バイアス電流制御回路630と共に動作して、バイアス電流を増加させるだけでなく、電力トランジスタ(690)の帯域幅及びスルーレートを変更する。次の実際のSMP/ASMP遷移に先立つこのバイアス電流の変更は、LDO電圧レギュレータ600が、次のdi/dtの変化を予め補償することを可能にする。このことが、SMP/ASMP切り替えノイズの軽減、又は抑制の助けになる。言い換えれば、この方法は、システムのSMP/ASMP遷移の実行前に、電圧レギュレータの特定の動作特性(例えば、Iバイアス、帯域幅、スルーレート)を予め設定する。理解されるように、バイアス制御回路630及びフィードバックフィルタ640はそれぞれ制御回路である。
応答的な方法の場合、レギュレータ600の出力の電流経路に配置された電流センサ610は、負荷620(例えば、プロセッサ110b)によって引かれる変化量di/dtを感知する。この信号は、FSMコントローラ290にフィードバックされ、バイアス電流及び/又はフィードバックループが調整されて、予測的に前もってではなく、応答的にノイズが低減される。必要ならば、補助切り替え650が、出力電圧の下方変更のための電流流出経路を増加させる、又は加速する。示される応答的な方法及び回路は、比例積分微分(PID)コントローラと同一の、又はそれと同様の機能を提供する。当業者ならば、上述された機能を実行すべく、任意の適切な回路を使用するであろう。理解されるように、バイアス制御回路630、フィードバックフィルタ640、及び補助切り替え650はそれぞれ制御回路である。
2つのプロセッサ(110b、及び、110a、110c、又は110dの何れか)のみがアクティブな場合にASMPモードがアクティブ化され、3つ以上のプロセッサがアクティブな場合にSMPモードがアクティブ化される一実施形態において、SMPとASMPとの間の動的モード切り替えが実行される。(1)2つのプロセッサ、又は(2)3つ以上のプロセッサの何れが必要かの判断は、トラフィックタイプ、プロセッサの待機時間、負荷不平衡情報、及び/又は消費電力に基づいてよい。理解されるように、モードを変更(又は維持)すべく、他の要因及び情報のタイプが分析され、決定の根拠を形成し得る。例えば、負荷が軽い場合、又は、負荷が重く、全てのCPUコアが利用される場合及び/又はL1キャッシュミス率が高い場合、SMPモードが選択されてよく、一方、重い負荷及び/又は不平衡負荷の場合はASMPモードが選択されてよい。1つの具体的な実施形態において、2つのプロセッサが要求される場合、当該2つのプロセッサはASMPモードで動作し、3つ以上のプロセッサが要求される場合、それらはSMPモードで動作する。
当業者ならば、「コア」(例えば、A、B、C、D)の1又は複数がまた、それぞれ、各コア内に2つ以上のプロセッサを含むことを容易に理解するであろう。そのような実施形態では、プロセッサの各「グループ」は分類され、別個のエンティティ(又は、「コア」)として機能する。
ここで図7を参照すると、SMP/ASMPモード選択及び切り替えを起動及び制御するためのアーキテクチャ(例えば、方法、プロセス、システム)800が概念的に示されている。モード選択は、所望の処理又はアプリケーションのタイプのみならず他の情報又は要因にも基づき得る。示されるように、処理又はアプリケーション802は、ブラウザアプリケーション802a、ストリーミングアプリケーション802b、ゲームアプリケーション802c、又はナビゲーション802dであってよい。他の要因/情報804もまた考慮されてよい。
一例として、ストリーミングアプリケーション802bがマルチプロセッシングを要求すると仮定すると、モード選択デバイス810は、そのアプリケーションに関連する処理タスクが、SMPモード又はASMPモードのどちらで実行されるべきかを判断する。システムソフトウェア/OSはこの判断を行い、決定を下す。当該システムは、1つのプロセッサを割り当てて、コマンドをコントローラに発行してよいが、通常、決定はシステムレベル/OSレベルで実施される。この決定は、静的情報、動的情報、又はこれらの組み合わせに基づいてよい。一例では、全てのビデオエンコーディングアプリケーションがSMPモードを使用すると予め定められ得る。別の例では、CPUの現在の負荷があまりに重く、全てのCPUコアが利用されない限り、全てのビデオストリーミングアプリケーションはASMPモードを使用する。一方のモードから他方のモードに切り替えるかどうかについての決定を下すべく、他の変形形態が、プログラムされ、利用され得る。
一実施形態において、単一処理タスクが要求される場合、ルックアップテーブルが参照されてよい。別の実施形態において、複数の処理タスクがある場合、電力の比較が、何れかのモードを選択するのに使用される要因であってよい。例えば、ユーザが、音楽を聴きながら同時に電子メールを作成している場合、ASMPが選択され得る。
図7に例示されるような1つの具体的な実施形態では、(1又は複数の)処理負荷に対処するのに幾つのプロセッサが必要かがシステムによって判断される。2つのプロセッサだけが必要であると判断された場合、ASMPモードが選択され、ASMPモードで動作するよう、2つのプロセッサ(B、及びA/C/Dのうち1つ)が制御される。3つ、4つ、又はそれより多くのプロセッサが必要であると判断された場合、SMPモードが選択され、3つのプロセッサ(A、B、及びC)、又は4つのプロセッサ(A、B、C、及びD)はSMPモードで動作する。
システム100のアーキテクチャは、各コアのための完全SMP/ASMP機能を有するシステムと比較して、SMP/ASMP動的切り替えに関連する費用及びハードウェア/ソフトウェアの複雑さの両方を大幅に低減する。例えば、4つのプロセッサ/コアを有するMPシステムでは、ただ1つのプロセッサが動的に構成可能なシステム100に従って構成されたシステムに対する追加コストは、4つの全てのプロセッサが動的にSMP/ASMP構成可能なシステムと比較して約3分の1の追加コストである。
ほとんどの場合、処理要求は2つのプロセッサで満たされ得、ほとんどの場合、2つのプロセッサは不平衡負荷で実行されることが試験及び研究によって明らかになった。従って、2つのプロセッサコアA及びBで動作するシステム100は、電力効率を最適化すべく、ASMPモードのみを使用して動作し得る。同様に、最大性能を得るべく、4つの全てのプロセッサコアA、B、C、及びDは、最大のクロック周波数及び供給電圧で、SMPモードで動作し得、必要ならば、同時に同じハイエンドな性能を維持しながら、柔軟性と電力低減とをもたらす。また、3つ以上のプロセッサが動作している場合、これらはSMPモードで動作し得る。システム100は、Android(登録商標)/iOS/Windows(登録商標)などのモバイルのハイレベルオペレーティングシステム(HLOS)に、低コスト、低電力と高性能との間の有益なトレードオフを提供し、低層から中層市場に適してもいる。
ここで、図に例示及び説明されているシステム100に関する1つの動作例又は方法が以下で説明される。
この動作スキームでは、(1)1つのコア、又は(2)3つ以上のコアがアクティブな場合、SMPモードが選択され、全てのアクティブプロセッサは、同一のクロック周波数及び電圧源で動作する。2つのコアがアクティブな場合、アクティブプロセッサの一方はコアBであり、他方のアクティブプロセッサは、コアA、コアC、又はコアDの何れかであり、2つのアクティブプロセッサはASMPモードで動作するよう構成されている。
複数のプロセッサ/コアシステムにおいて、常に全てのプロセッサ/コアが必要なわけではない。処理要求が低い場合、ただ1つ、又は少数のプロセッサが必要とされてよく、処理要求が高い場合、より多くのプロセッサが必要とされてよい。この概念はモード選択プロセスに導入又は統合され得る、又は、モード選択プロセスは、少なくとも一部は、コンピューティング要件に対処するために、幾つのプロセッサが要求されるかに基づき得る。
本明細書で説明されているシステムでは、プロセッサ/コアをスリープモード、無効、又はシャットダウンの状態にすべく、各コアが、クロックを無効にされること、及び/又は電力を急減させられることを可能にする追加の機能(具体的には示されない)が提供され得る。これにより、(より少ない数のプロセッサが処理要求に対処し得る場合、)必要ではないプロセッサをオフにすることによって消費電力の低減がもたらされる。
様々なプロセス又は方法が、現在のコンピューティング要件を満たすために幾つのプロセッサが必要かを判断すべく実装され得る。ひとたびこの判断が下されると、次に、コアは、以下の段落に説明されるものなどの任意の適切なシーケンス及び/又は優先度でオン/オフに切り替えられ得る。
ここで図8を参照すると、(1又は複数の)SMP/ASMPモード選択の(1又は複数の)プロセスと統合される、プロセッサの追加/削除のためのプロセス900の概略フロー図が例示されている。利用される特定のアーキテクチャ(例えば、コア数)、及び所望の機能又はアプリケーションに応じて、例示されたプロセスに対して様々な再構成又は変形が施されてよい。理解されるように、そのようなプロセスにおいて利用されてよい全ての段階又は要素が示されているわけではない。
プロセス900は、1つのプロセッサが動作するポイントにおいて示されている。ただ1つのプロセッサが必要な場合、システム100は、1つの固定CLK1/VDD1で、SMPモードで動作する(段階910)。処理動作中のあるポイントにおいて、処理要求の増加に対処すべく(又は、他の何らかの理由で)、第2のプロセッサが必要かどうかが判断される(段階915)。この判断は、定期的に、又は動作情報に応答して成され得る。
別のプロセッサが必要との判断に応答して、プロセス900は進み、第2のプロセッサをアクティブ化し、2つのアクティブプロセッサは少なくともプロセッサ110bを含む。2つのアクティブプロセッサはASMPモードで動作し(920)、それにより、(第1のプロセッサがCLK1/VDD1で動作する一方で、)第2のプロセッサ(110b)はCLK1/VDD1とは異なるCLK2/VDD2を受け、それらに従って動作するよう自動的に構成されている。
一旦、両プロセッサはアクティブになり、ASMPモードで動作する。その間、システムは、より多くの又はより少ないコンピューティング処理能力等の必要性を評価し続け、処理要求が、より少ない又はより多くのプロセッサが必要なレベルにあるかどうかの判断を下してよい(段階930a、930b)。より少ないプロセッサが必要な場合、プロセスは、(SMPモードでの)1つのプロセッサの利用に戻る(段階910)。より多くのプロセッサが必要な場合、プロセスは進み、第3のプロセッサをアクティブ化する(段階940)。現在アクティブな2つのプロセッサはASMPモードなので、次に、それらはSMPモードに切り替えられ、3つ全てがSMPモードで動作する。
理解されるように、一実施形態において、本明細書で説明されているシステム、プロセス、方法、及びデバイスは、モバイルデバイス/小型コンピューティングデバイス又は基地局内に組み込まれること、及び同様のことを含むモバイル環境で利用されてよい。このようなデバイスは、例えば、無線信号を送信及び/又は受信するよう構成されてよい。それらのデバイスは、任意の適切なエンドユーザデバイスであってよく、ユーザ機器/デバイス(UE)、無線送信/受信ユニット(WTRU)、モバイルステーション、固定若しくは移動加入者局ユニット、ページャ、携帯電話、パーソナルデジタルアシスタント(PDA)、スマートフォン、ラップトップ、コンピュータ、タッチパッド、無線センサ、ウェアラブル電子デバイス、又は、家庭用電子デバイスのようなデバイスを含んでよい(又はそのように称されてよい)。
それらのデバイスは、デバイスの様々な処理動作を実装する、少なくとも1つの(本明細書で説明されるような)処理システム100を含む。これは、例えば、信号符号化、データ処理、ビデオ/オーディオ処理、電力制御、入出力処理、又は、デバイスのために考えられた任意の他の機能を含んでよい。
処理システム100はまた、本明細書で説明されている方法及び教示をサポートし、追加のコンポーネント及び(1又は複数の)プロセッサ(例えば、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、又は特定用途向け集積回路)を含んでよい。
処理システム100を組み込むデバイスはまた、少なくとも1つのアンテナによる送信のために、データ又は他のコンテンツを変調するよう構成された少なくとも1つのトランシーバを含んでよい。当該トランシーバはまた、少なくとも1つのアンテナによって受信されたデータ又は他のコンテンツを復調するよう構成されている。各トランシーバは、無線送信用の信号を生成するための、及び/又は無線受信された信号を処理するための任意の適切な構造を含む。各アンテナは、無線信号を送信及び/又は受信するための任意の適切な構造を含む。1又は複数のトランシーバが当該デバイスにおいて使用され得、1又は複数のアンテナが使用され得る。
これらのデバイスはまた、ユーザとのインタラクションを容易にするよう、1又は複数の入出力デバイスを含んでよい。スピーカ、マイク、キーパッド、キーボード、ディスプレイ、又はタッチスクリーンなどの各入出力デバイスは、ユーザに情報を提供するための、又は、ユーザからの情報を受信するための任意の適切な構造を含む。
加えて、これらのデバイスは、デバイスによって使用、生成、又は収集される命令及びデータを格納するために、上述されたメモリを利用してよい、又は、他のメモリを含んでよい。例えば、当該メモリは、処理システム200によって実行されるソフトウェア命令又はファームウェア命令を格納し得る。当該他のメモリは、任意の適切な揮発性及び/又は不揮発性ストレージ、並びに(1又は複数の)検索デバイスを含んでよい。ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、ハードディスク、光ディスク、加入者識別モジュール(SIM)カード、メモリスティック、セキュアデジタル(SD)メモリカード、及び同様のものなどの任意の適切なタイプのメモリが使用されてよい。
モバイル/小型コンピューティングデバイスに関する追加の詳細は、当業者には周知である。故に、明確にするために、それらの詳細は省略される。
いくつかの実施形態において、デバイスのうちの1又は複数のものの機能又はプロセスの一部又は全部は、コンピュータ可読プログラムコードから形成され、かつ、コンピュータ可読媒体において具体化されたコンピュータプログラムによって実装又はサポートされる。語句「コンピュータ可読プログラムコード」は、ソースコード、オブジェクトコード、及び実行可能コードを含む任意のタイプのコンピュータコードを含む。語句「コンピュータ可読媒体」は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、又は任意の他のタイプのメモリなどのコンピュータがアクセス可能な任意のタイプの不揮発性媒体を含む。
本特許文献全体を通して使用されている特定の単語及び語句の定義を記載することは有利であろう。用語「含む」及び「備える」、並びにこれらの派生語は、限定なしの含有を意味する。用語「又は」は両立的であり、及び/又はを意味する。「〜に関連する」及び「それに関連する」という語句、並びにこれらの派生語は、〜内に含まれること、〜と相互接続すること、含有すること、〜内に含有されること、〜に若しくは〜と接続すること、〜に若しくは〜と連結すること、〜と通信可能なこと、〜と協同すること、インターリーブすること、並置すること、〜に近接していること、〜に若しくは〜と結合されること、有すること、〜の特性を有すること、又は同様のことを含むことを意味している。用語「コントローラ」は、少なくとも1つの動作を制御する任意のデバイス、システム、又はこれらの一部を意味する。コントローラは、ハードウェア、ファームウェア、ソフトウェア、又はそれらのうちの少なくとも2つの何らかの組み合わせで実装されてよい。任意の特定のコントローラに関連する機能は、ローカルにであろうとリモートにであろうと、一か所に集められてよい、又は分散されてよい。
本開示は、特定の実施形態と、概して関連する方法とを説明してきたが、これらの実施形態及び方法の改変及び並べ替えが当業者には明らかであろう。従って、例示の実施形態の上記説明は、本開示を定義も制限もしない。以下の特許請求の範囲によって定義される、本開示の主旨及び範囲から逸脱することなく、他の変更、置換、及び改変がまた可能である。
[項目1]
上記第1の供給電圧を受信し、上記第2の供給電圧を生成するよう構成された電圧レギュレータ回路であって、上記第2の供給電圧は上記第1の供給電圧より低い電圧値を有する、電圧レギュレータ回路と、
第1の予め定められた周波数を有する第1のクロック信号及び上記第1の供給電圧を受け、それらに従って動作するよう構成された第1のプロセッサと、
上記第1のクロック信号、又は、上記第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号の何れかを受信し、それに従って動作し、上記第1の供給電圧又は上記第2の供給電圧を受け、それに従って動作するよう構成された第2のプロセッサと、
上記電圧レギュレータ回路に連結され、上記第1の供給電圧又は上記第2の供給電圧を上記第2のプロセッサに選択的に入力するためのバイパス信号を生成するよう構成されたコントローラとを備え、
上記第1のプロセッサは、更に、第1モードの動作中においても、第2モードの動作中においても、上記第1のクロック信号及び上記第1の供給電圧のみを受け、それらに従って動作するよう構成されている、
マルチプロセッサ(MP)処理システム。
[項目2]
上記第1モードの動作中においても、上記第2モードの動作中においても、上記第1のクロック信号及び上記第1の供給電圧のみを受け、それらに従って動作するよう構成された第3のプロセッサ
を更に備える項目1に記載のMP処理システム。
[項目3]
上記第1モードの動作にある場合、上記第1のプロセッサ及び上記第3のプロセッサは、上記第1のクロック信号及び上記第1の供給電圧を受け、それらに従って動作し、
上記第2モードの動作にある場合、上記第2のプロセッサは、上記第2のクロック信号及び上記第2の供給電圧を受け、それらに従って動作する、
項目2に記載のMP処理システム。
[項目4]
上記コントローラに連結され、上記第1のクロック信号及び上記第2のクロック信号を生成及び出力するよう構成されたクロック生成回路であって、上記第1のクロック信号は上記第1のプロセッサに入力される、クロック生成回路と、
上記クロック生成回路と上記第2のプロセッサとの間に配置され、上記第1のクロック信号及び上記第2のクロック信号を受信し、上記第1のクロック信号又は上記第2のクロック信号を上記第2のプロセッサに出力するよう構成された切り替え回路であって、第1モードの動作中、上記第1のクロック信号が上記第2のプロセッサに出力され、第2モードの動作中、上記第2のクロック信号が上記第2のプロセッサに出力される、切り替え回路とを更に備え、
上記第1モードの動作及び上記第2モードの動作中、上記第1のクロック信号は上記第1のプロセッサに出力される、
項目1に記載のMPシステム。
[項目5]
上記第1のプロセッサ及び上記第2のプロセッサに連結されたキャッシュメモリと、
上記コントローラに応答し、上記第2のプロセッサと上記キャッシュメモリとに連結され、更に、第2モードの動作中、上記第2のプロセッサと上記キャッシュメモリとの間にクロックドメインクロッシング機能を提供し、第1モードの動作中、バイパス機能を提供するよう構成された、クロックドメインクロッシング(CDC)及びバイパス回路と
を更に備える項目1に記載のシステム。
[項目6]
上記コントローラは更に、モード選択信号に応答して、上記第2のプロセッサの動作を上記第1モードの動作と上記第2モードの動作との間で動的に切り替えるよう構成されている、項目1に記載のMP処理システム。
[項目7]
上記モード選択信号は、少なくとも一部は、上記複数のプロセッサ内の一プロセッサのアクティブ化又は非アクティブ化に基づいて生成される、項目6に記載のMP処理システム。
[項目8]
上記モード選択信号は、負荷情報、使用情報、キャッシュミス率、メモリ帯域幅情報、又は消費電力情報のうちの少なくとも1つに応答して生成される、項目6に記載のMP処理システム。
[項目9]
上記コントローラは更に、モード選択信号に応答して上記電圧レギュレータの少なくとも1つの動作特性を予め設定するよう構成されている、項目6に記載のMPシステム。
[項目10]
上記少なくとも1つの動作特性は、バイアス電流であり、上記電圧レギュレータは、
上記コントローラに連結され、上記電圧レギュレータのバイアス電流を生成及び制御するよう構成されたバイアス電流回路を有する、項目9に記載のMPシステム。
[項目11]
上記電圧レギュレータは、
上記電圧レギュレータの出力に連結され、上記コントローラに入力するために、上記電圧の出力電流の変化を示す電流感知フィードバック信号を生成するよう構成された電流センサと、
上記コントローラに連結され、上記電流感知信号に応答して上記電圧レギュレータを制御するよう構成された制御回路とを有する、項目6に記載のMPシステム。
[項目12]
上記コントローラは、有限ステートマシン(FSM)、プロセッサ、マイクロコントローラ、又は論理回路のうちの少なくとも1つを有する、項目1に記載のMP処理システム。
[項目13]
上記MP処理システムは、単一の基板上に配置される、項目1に記載のMP処理システム。
[項目14]
マルチプロセッシング機能を実行するよう構成された複数のプロセッサであって、第1のプロセッサ及び第2のプロセッサを有する、複数のプロセッサと、
上記第2のプロセッサの動作を第1モード及び第2モードで制御するよう構成されたコントローラと、
上記コントローラに連結され、上記コントローラからの1又は複数の信号に応答して、第1のクロック信号及び第2のクロック信号を生成及び出力するよう構成されたクロック生成回路と、
上記クロック生成回路と上記第2のプロセッサとの間に配置され、上記第1のクロック信号及び上記第2のクロック信号を受信し、上記第2のプロセッサに出力するために一方を選択するよう構成された切り替え回路であって、上記第1モードの動作中、上記第1のクロック信号が上記第2のプロセッサに出力され、上記第2モードの動作中、上記第2のクロック信号が上記第2のプロセッサに出力される、切り替え回路と、
上記コントローラに連結され、
第1の動作電圧信号を受信し、
上記第1の動作電圧信号から第2の動作電圧信号を生成し、
上記第1モードの動作中、上記第2のプロセッサに入力するために上記第1の動作電圧信号を出力し、
上記第2モードの動作中、上記第2のプロセッサに入力するために上記第2の動作電圧信号を出力する
よう構成された電圧レギュレータ及びバイパス回路とを備え、
上記第1モードの動作及び上記第2モードの動作中、上記第1のクロック信号は上記第1のプロセッサに入力される、
装置。
[項目15]
上記装置は単一の基板上に配置される、項目14に記載の装置。
[項目16]
上記第1のプロセッサ、上記第2のプロセッサ、及び上記電圧レギュレータ及びバイパス回路は、単一の半導体基板上に配置される、項目14に記載の装置。
[項目17]
上記コントローラは更に、モード選択信号に応答して、上記第2のプロセッサの動作を、上記第1モードの動作と上記第2モードの動作との間で動的に切り替えるよう構成されている、項目14に記載の装置。
[項目18]
上記モード選択信号は、少なくとも一部は、上記複数のプロセッサ内の一プロセッサのアクティブ化又は非アクティブ化に基づいて生成される、項目17に記載の装置。
[項目19]
上記コントローラは更に、モード選択信号に応答して、上記電圧レギュレータの少なくとも1つの動作特性を予め設定するよう構成されている、項目17に記載の装置。
[項目20]
上記少なくとも1つの動作特性はバイアス電流であり、上記電圧レギュレータは、
上記コントローラに連結され、上記電圧レギュレータのバイアス電流を生成及び制御するよう構成されたバイアス電流回路を有する、項目19に記載の装置。
[項目21]
上記電圧レギュレータは、
上記電圧レギュレータの出力に連結され、上記コントローラに入力するために、上記電圧の出力電流の変化を示す電流感知フィードバック信号を生成するよう構成された電流センサと、
上記コントローラに連結され、上記電流感知信号に応答して、上記電圧レギュレータを制御するよう構成された制御回路とを有する、項目17に記載の装置。
[項目22]
上記コントローラは、有限ステートマシン(FSM)、プロセッサ、マイクロコントローラ、又は論理回路のうちの少なくとも1つを有する、項目14に記載の装置。
[項目23]
対称型マルチプロセッシング(SMP)モードと非対称型マルチプロセッシング(ASMP)モードとの間での複数のプロセッサの切り替え方法であって、
第1のプロセッサが動作している間、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた動作電圧を有する第1の供給電圧とに従って上記第1のプロセッサを動作させる段階と、
上記第1の供給電圧から第2の供給電圧を生成する段階と、
モード選択信号を受信する段階と、
上記モード選択信号に応答して、第2のプロセッサを第1モードの動作又は第2モードの動作で動作させる段階であって、
上記第1モードの動作では、上記第2のプロセッサを、上記第1のクロック信号及び上記第1の供給電圧に従って動作させる段階と、
上記第2モードの動作では、上記第2のプロセッサを、上記第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び上記第2の供給電圧に従って動作させる段階とを有する、段階と、
を備える方法。
[項目24]
上記第1のクロック信号及び上記第1の供給電圧を上記第1のプロセッサに入力する段階と、
上記第1のクロック信号及び上記第2のクロック信号を切り替え回路に入力し、上記第1モードの動作中、上記第1のクロック信号を上記第2のプロセッサに出力し、上記第2モードの動作中、上記第2のクロック信号を上記第2のプロセッサに出力する段階と、
上記第1モードの動作中、上記第1の供給電圧を上記第2のプロセッサに入力し、上記第2モードの動作中、上記第2の供給電圧を上記第2のプロセッサに入力する段階と
を更に備える項目23に記載の方法。
[項目25]
負荷情報、使用情報、キャッシュミス率、メモリ帯域幅情報、又は消費電力情報のうちの少なくとも1つに応答して、上記モード選択信号を生成する段階
を更に備える項目23に記載の方法。
[項目26]
上記第2の供給電圧を生成する上記段階、上記第1のプロセッサを動作させる上記段階、及び上記第2のプロセッサを動作させる上記段階は、単一の半導体基板内の回路によって実行される、項目23に記載の方法。
[項目27]
上記第1の供給電圧又は上記第2の供給電圧の何れかを出力するよう構成された電圧レギュレータ回路の少なくとも1つの動作特性を予め設定する段階
を更に備える項目23に記載の方法。
[項目28]
上記少なくとも1つの動作特性はバイアス電流であり、上記電圧レギュレータは
コントローラに連結され、上記電圧レギュレータのバイアス電流を生成及び制御するよう構成されたバイアス電流回路を有する、項目27に記載の方法。
[項目29]
上記第1の供給電圧又は上記第2の供給電圧の何れかを出力するよう構成された電圧レギュレータ回路によって出力された電流を感知する段階と、
上記感知された電流に応答して上記電圧レギュレータを制御する段階と
を更に備える項目23に記載の方法。
[項目30]
複数のプロセッサを有するマルチプロセッサシステムにおける処理の方法であって、
上記複数のプロセッサ内の第1のアクティブプロセッサのみを使用して上記マルチプロセッサシステム内において処理する段階と、
上記マルチプロセッサシステム内での処理のために第2のプロセッサがアクティブ化されるべきであると判断する段階と、
上記判断に応答して、上記第2のプロセッサをアクティブ化する段階と、
対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、上記第1のアクティブプロセッサ及び上記第2のアクティブプロセッサを使用して上記マルチプロセッサシステム内で処理する段階であって、
上記SMPモードにある場合、上記第1のアクティブプロセッサ及び上記第2のアクティブプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作し、
上記ASMPモードにある場合、上記第1のアクティブプロセッサは、上記第1のクロック信号及び上記第1の供給電圧に従って動作し、上記第2のプロセッサは、上記第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び、上記第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作する、段階と、
モード選択信号を受信する段階と、
上記第1のアクティブプロセッサ及び上記第2のアクティブプロセッサの動作を、上記モード選択信号に応じて、上記SMPモードから上記ASMPモードへ、又は、上記ASMPモードから上記SMPモードへの何れかに切り替える段階とを備える方法。
[項目31]
マルチプロセッサ(MP)処理システムであって、
第1のプロセッサ、及び
第2のプロセッサ
を有する複数のプロセッサと、
少なくとも上記第2のプロセッサに連結され、
アクティブ化/非アクティブ化信号に応答して上記第2のプロセッサをアクティブ化又は非アクティブ化し、
上記第2のプロセッサがアクティブ化され次第、
対称型マルチプロセッシング(SMP)モード又は非対称型マルチプロセッシング(ASMP)モードの何れかに従って、上記第1のプロセッサ及び上記第2のプロセッサを使用して上記マルチプロセッサシステム内の処理を制御し、ここで、
上記SMPモードは、上記第1のプロセッサ及び上記第2のプロセッサはそれぞれ、第1の予め定められた周波数を有する第1のクロック信号と、第1の予め定められた電圧を有する第1の供給電圧とに従って動作するモードと定義され、
上記ASMPモードは、上記第1のプロセッサは、上記第1のクロック信号及び上記第1の供給電圧に従って動作し、上記第2のプロセッサは、上記第1の予め定められた周波数とは異なる第2の予め定められた周波数を有する第2のクロック信号に従って、及び、上記第1の予め定められた動作電圧とは異なる第2の予め定められた動作電圧を有する第2の供給電圧に従って動作するモードと定義され、
モード選択信号を受信し、
上記第1のプロセッサ及び上記第2のプロセッサの動作を、上記モード選択信号に応じて、上記SMPモードから上記ASMPモードへ、又は、上記ASMPモードから上記SMPモードへの何れかに切り替える
よう構成されたコントローラと、
を備えるマルチプロセッサ(MP)処理システム。