(57)【特許請求の範囲】
【請求項１】
複数のプロセッサであって、各プロセッサが、事前決定された周波数を有するクロック信号を受信し、かつ、事前決定された動作電圧を有する供給電圧を受信する、複数のプロセッサと、
前記複数のプロセッサに連結され、第１の動作モードと第２の動作モードとの間で、前記複数のプロセッサの動作をスイッチするコントローラであって、
前記第１の動作モードにある場合、前記複数のプロセッサは、対称マルチプロセッシング（ＳＭＰ）を実行し、
前記第２の動作モードにある場合、前記複数のプロセッサは、非対称マルチプロセッシング（ＡＳＭＰ）を実行する、
コントローラと、
を備え、
前記第１の動作モードは、負荷が軽い場合又はキャッシュミス率が高い場合に選択され、前記第２の動作モードは、負荷が重い場合に選択される
マルチプロセッシングシステム。
【請求項２】
前記第１の動作モードの間、前記複数のプロセッサの各々において受信された各クロック信号の前記事前決定された周波数は、同じである、請求項１に記載のシステム。
【請求項３】
前記第１の動作モードの間、前記複数のプロセッサの各々において受信された各供給電圧の前記事前決定された動作電圧は、同じである、請求項１又は２に記載のシステム。
【請求項４】
前記第２の動作モードの間、前記複数のプロセッサの各々において受信された各クロック信号の各事前決定された周波数は、異なる、請求項１に記載のシステム。
【請求項５】
前記第２の動作モードの間、前記複数のプロセッサの各々において受信された各供給電圧の各事前決定された動作電圧は、異なる、請求項１又は４に記載のシステム。
【請求項６】
前記コントローラは、有限ステートマシン（ＦＳＭ）を含む、請求項１から５のいずれか１項に記載のシステム。
【請求項７】
前記コントローラは、有限ステートマシン（ＦＳＭ）、プロセッサ、マイクロコントローラ又は論理回路の少なくとも１つを含む、請求項１に記載のシステム。
【請求項８】
前記コントローラに連結され、複数のクロック信号を生成及び出力するクロック生成回路と、
前記コントローラに連結され、複数の動作供給電圧信号を生成及び出力する動作電圧生成回路と、
前記クロック生成回路と前記複数のプロセッサとの間に配置され、前記複数のクロック信号を受信し、前記複数のプロセッサに第２の複数のクロック信号を出力するスイッチ回路であって、前記第１の動作モードの間、前記第２の複数のクロック信号の各々は、同じ事前決定された周波数を有し、前記第２の動作モードの間、前記第２の複数のクロック信号の各々は、異なる事前決定された周波数を有する、スイッチ回路と、
をさらに備える、請求項１に記載のシステム。
【請求項９】
前記複数のプロセッサに連結されるキャッシュメモリと、
前記コントローラに応答し、前記複数のプロセッサ及び前記キャッシュメモリに連結され、さらに、前記第２の動作モードの間、前記複数のプロセッサと前記キャッシュメモリとの間でクロックドメインクロッシング機能を提供し、前記第１の動作モードの間、バイパス機能を提供するクロックドメインクロッシング（ＣＤＣ）及びバイパス回路と、
をさらに備える、請求項１又は８に記載のシステム。
【請求項１０】
マルチプロセッシング機能を実行する複数のプロセッサと、
第１の動作モード及び第２の動作モードにおいて、前記複数のプロセッサの動作を制御するコントローラと、
前記コントローラに連結され、複数のクロック信号を生成及び出力するクロック生成回路と、
前記コントローラに連結され、複数の動作電圧供給信号を生成及び出力する動作電圧生成回路と、
前記クロック生成回路と前記複数のプロセッサとの間に配置され、前記複数のクロック信号を受信し、前記複数のプロセッサに第２の複数のクロック信号を出力するスイッチ回路であって、前記第１の動作モードの間、前記第２の複数のクロック信号の各々は、同じ事前決定された周波数を有し、前記第２の動作モードの間、前記第２の複数のクロック信号の各々は、異なる事前決定された周波数を有する、スイッチ回路と、
前記複数のプロセッサに連結され、これらと共に用いられるキャッシュメモリと、
前記コントローラに応答し、前記複数のプロセッサ及び前記キャッシュメモリに連結され、さらに、前記第２の動作モードの間、前記複数のプロセッサと前記キャッシュメモリとの間でクロックドメインクロッシング機能を提供し、前記第１の動作モードの間、バイパス機能を提供するクロックドメインクロッシング（ＣＤＣ）及びバイパス回路と、
を備え、
前記第１の動作モードにある場合、前記複数のプロセッサは、対称マルチプロセッシング（ＳＭＰ）を実行し、
前記第２の動作モードにある場合、前記複数のプロセッサは、非対称マルチプロセッシング（ＡＳＭＰ）を実行し、
前記第１の動作モードは、負荷が軽い場合又はキャッシュミス率が高い場合に選択され、前記第２の動作モードは、負荷が重い場合に選択される
装置。
【請求項１１】
前記第１の動作モードの間、前記複数の動作電圧供給信号は、前記複数のプロセッサの各々において、同じである、請求項１０に記載の装置。
【請求項１２】
前記第２の動作モードの間、前記複数の動作電圧供給信号は、前記複数のプロセッサの各々において、異なる、請求項１０又は１１に記載の装置。
【請求項１３】
前記コントローラは、有限ステートマシン（ＦＳＭ）を含む、請求項１０から１２のいずれか１項に記載の装置。
【請求項１４】
前記コントローラは、有限ステートマシン（ＦＳＭ）、プロセッサ、マイクロコントローラ又は論理回路の少なくとも１つを含む、請求項１０に記載の装置。
【請求項１５】
前記スイッチ回路は、複数のグリッチレスマルチプレクサを含む、請求項１０に記載の装置。
【請求項１６】
前記スイッチ回路は、前記装置の動作中に、前記第１の動作モードと前記第２の動作モードとの間で、動的にスイッチする、請求項１０から１５のいずれか１項に記載の装置。
【請求項１７】
前記スイッチ回路は、負荷情報、利用情報、キャッシュミス率、メモリ帯域幅情報又は電力消費情報の少なくとも１つに応じて、動的にスイッチする、請求項１０から１６のいずれか１項に記載の装置。
【請求項１８】
対称マルチプロセッシング（ＳＭＰ）モードと非対称マルチプロセッシングモード（ＡＳＭＰモード）との間で複数のプロセッサを有する処理システムをスイッチする方法であって、
前記ＳＭＰモードと前記ＡＳＭＰモードとの間でスイッチする命令を受信する段階と、
受信された前記命令に従って、前記処理システムの動作モードをスイッチする段階であって、
前記処理システムが前記ＳＭＰモードで現在動作している場合、各々が異なる事前決定されたＡＳＭＰ周波数を有する複数のＡＳＭＰクロック信号を生成し、前記複数のＡＳＭＰクロック信号の各々を前記複数のプロセッサの異なるプロセッサに入力し、それぞれのプロセッサを前記事前決定されたＡＳＭＰ周波数のそれぞれにおいて動作させる、段階と、
前記処理システムが前記ＡＳＭＰモードで現在動作している場合、事前決定されたＳＭＰ周波数を有するＳＭＰクロック信号を生成し、前記複数のプロセッサの各プロセッサに前記ＳＭＰクロック信号を入力し、各プロセッサを前記事前決定されたＳＭＰ周波数において動作させる、段階と、
を含む、前記動作モードをスイッチする段階と、
を備え、
前記ＳＭＰモードは、負荷が軽い場合又はキャッシュミス率が高い場合に選択され、前記ＡＳＭＰモードは、負荷が重い場合に選択される
方法。
【請求項１９】
前記動作モードをスイッチする段階は、
前記処理システムが前記ＳＭＰモードで現在動作している場合、
複数のＡＳＭＰ動作電圧信号を生成する段階と、
前記複数のＡＳＭＰクロック信号の各々を前記複数のプロセッサの異なるプロセッサに入力する前に、各プロセッサの各動作電圧を、前記複数のＡＳＭＰ動作電圧信号の最も高い電圧レベルに等しい又はこれより大きい最大電圧レベルにまで上昇させる段階と、
各動作電圧を前記最大電圧レベルにまで上昇させる段階の後で、前記複数のプロセッサの前記異なるプロセッサのそれぞれに前記複数のＡＳＭＰクロック信号を入力する段階と、
少なくとも１つのプロセッサの少なくとも１つの動作電圧を前記最大電圧レベルより小さい電圧レベルに低下させる段階と、
をさらに含み、
前記処理システムが前記ＡＳＭＰモードで現在動作している場合、
ＳＭＰ動作電圧信号を生成する段階と、
前記ＳＭＰクロック信号を前記複数のプロセッサの各々に入力する前に、各プロセッサの各動作電圧を、前記複数のプロセッサの各プロセッサの現在の前記複数のＡＳＭＰ動作電圧信号の最も高い電圧レベルに等しい又はこれより大きい最大電圧レベルにまで上昇させる段階と、
各動作電圧を前記最大電圧レベルにまで上昇させる段階の後で、前記複数のプロセッサの各プロセッサに前記ＳＭＰクロック信号を入力する段階と、
前記少なくとも１つのプロセッサの少なくとも１つの動作電圧を、前記最大電圧レベルより小さい電圧レベルに低下させる段階と、
をさらに含む、請求項１８に記載の方法。
【請求項２０】
前記動作モードのスイッチは、有限ステートマシン（ＦＳＭ）に従って制御される、請求項１８又は１９に記載の方法。
【請求項２１】
前記ＳＭＰモードの間、事前決定された動作電圧信号を前記複数のプロセッサの各々に入力する段階をさらに備え、前記事前決定された動作電圧信号の各々は、同じ値を有する、請求項１８から２０のいずれか１項に記載の方法。
【請求項２２】
前記ＡＳＭＰモードの間、事前決定された動作電圧信号を前記複数のプロセッサの各々に入力する段階をさらに備え、前記事前決定された動作電圧信号の各々は、異なる値を有する、請求項１８から２１のいずれか１項に記載の方法。
【請求項２３】
負荷情報、利用情報、キャッシュミス率、メモリ帯域幅情報又は電力消費情報の少なくとも１つに応じて、前記ＳＭＰモードと前記ＡＳＭＰモードとの間で、動的にスイッチする段階をさらに備える、請求項１８から２２のいずれか１項に記載の方法。
【請求項２４】
コンピュータに、請求項１８から２３のいずれか一項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、マルチプロセッサアーキテクチャ及びシステムに関し、より詳細には、非対称マルチプロセッシングモードと対称マルチプロセッシングモードとの間でスイッチする装置及び方法に関する。
【背景技術】
【０００２】
マルチプロセッシングシステムは、データを処理し、所望の機能を実行するマルチプロセッサ（例えば、中央処理装置（ＣＰＵ））を用いる。理解されるように、「プロセッサ」という用語は、「ＣＰＵ」又は「コア」という用語の同義語として用いられ、当業者によって容易に理解される。従来技術において、対称マルチプロセッシング（ＳＭＰ）及び非対称マルチプロセッシング（ＡＳＭＰ）という、２つの主なタイプの異なるマルチプロセッシングシステムが存在する。
【０００３】
ＳＭＰシステムは、典型的には、全てのシステムリソース、単一の同期Ｌ２キャッシュインタフェース（おそらくは、非同期Ｌ２）を共有することによって特徴付けられ、プロセッサは、同じクロック周波数及びクロック電圧において制御される。これは、概して、プロセッサ／コアが（Ｌ２キャッシュ及びメモリのような）共有メモリシステムに等しくアクセス可能であることをも意味する。ＳＭＰにおいて、クロック周波数及び電圧は、個々に調整可能ではなく、従って、コア／プロセッサ単位で変更することはできない。さらに、Ｌ２キャッシュは、全てのコアの中で共有され、Ｌ２キャッシュ周波数は、コア単位でスケール変更不可能である。全てではないにせよ、大半のアプリケーションにおいて、ＳＭＰにおけるプロセッサの動作負荷はアンバランスであり、このことが、より高い電力消費を招く。
【０００４】
対照的に、ＡＳＭＰシステムは、典型的には、プロセッサに対して個々に、異なるクロック周波数及び／又はクロック電圧を有することによって特徴付けられ、Ｌ２キャッシュクロック周波数は、別個にスケール変更することができる。従って、プロセッサクロック周波数及びＬ２キャッシュ周波数は、動作負荷に基づいて（例えば、メモリ集中動作負荷に対して、コアに関するより高速なＬ２キャッシュ）、スケール変更することができる。一般論では、ＡＳＭＰシステムは、ＳＭＰシステムより電力効率が高いが、追加の及びより複雑なハードウェアによって、より高い電力消費が引き起こされる可能性がある。Ｌ１キャッシュミス率が高い場合、プロセッサは、Ｌ２キャッシュからのデータをフェッチする。要求された関連データがＬ２キャッシュのより低いクロック周波数部分に格納されている場合、プロセッサは、データを待たなければならない。このことは、より高いレイテンシ及びより高い電力消費を招く。
【０００５】
図１を参照すると、ＡＳＭＰを用いるマルチプロセッサを有する処理システム１００の基本的なアーキテクチャが示される。理解されるように、同様の従来技術のシステムがＳＭＰに用いられている。しかしながら、当業者によって容易に理解されるように、このプロセッサは、単一のクロック周波数において、かつ、単一の供給電圧レベルを用いて動作する。
【０００６】
処理システム１００は、図示されるように、対応するＬ２キャッシュメモリ部分１２０（１２０ａ、１２０ｂ、１２０ｃ、１２０ｄ）及びクロックドメインクロッシング（ＣＤＣ）回路１３０（１３０ａ、１３０ｂ、１３０ｃ、１３０ｄ）を有するマルチプロセッサ１１０（１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ）を有するマルチプロセッサコア及びキャッシュサブシステム１０５を含む。４つのプロセッサ１１０（及び対応するメモリ及び回路）が示されるが、プロセッサの数は、小さくても大きくてもよく、ただし、少なくとも２つを含む。理解されるように、各プロセッサ１１０は、１つ又は複数の中央処理装置（ＣＰＵ）を含んでよい。
【０００７】
処理システム１００は、それぞれのプロセッサ、キャッシュ及びＣＤＣへの電力供給において用いられる複数の供給電圧信号を生成する電力管理制御（ＰＭＩＣ）回路１４０をさらに含む。同様に、クロック生成回路１５０は、それぞれのプロセッサ、キャッシュ及びＣＤＣのクロック動作において用いられる様々な事前決定されたクロック周波数を有する複数のクロック信号を生成する。理解されるように、ＰＭＩＣ回路は、サブシステム１０５と同じ基板上にあってよく、又は、他の基板上に（例えば、他のＩＣに）与えられてよい。
【０００８】
上述され、当業者によって容易に理解されるように、別個のＳＭＰ及びＡＳＭＰアーキテクチャ／システムの各々は、様々な短所又は欠点と同様に、様々な長所又は利益を有する。（ハードウェア及びソフトウェアの機能性の両方において）各システムのタイプの複雑さ及びコストによって、設計者は、典型的には、特定のアプリケーションに基づいて、ＳＭＰシステム又はＡＳＭＰシステムのいずれかを選択しなければならない。
【０００９】
従って、二重のマルチプロセッサコア、キャッシュ及びＣＤＣサブシステムを有することなく、動作可能であり、かつ、ＳＭＰシステム及びＡＳＭＰシステムの両方の機能性を提供可能なマルチプロセッシングシステム又はアーキテクチャが必要とされる。電力消費を減少させ、効率を向上させるべく、ＳＭＰ又はＡＳＭＰモードのいずれかを制御及び選択するための方法も、必要とされている。
【発明の概要】
【００１０】
一実施形態によれば、マルチプロセッシングシステムは、複数のプロセッサを含む。各プロセッサは、事前決定された周波数を有するクロック信号を受信し、事前決定された動作電圧を有する供給電圧を受信するように構成される。複数のプロセッサに連結されるコントローラは、第１の動作モードと第２の動作モードとの間で、複数のプロセッサの動作をスイッチするように構成される。第１の動作モードにある場合、複数のプロセッサは、対称マルチプロセッシングを実行し、第２の動作モードにある場合、複数のプロセッサは、非対称マルチプロセッシングを実行する。
【００１１】
他の実施形態によれば、マルチプロセッシング機能を実行するように構成される複数のプロセッサと、第１のモード及び第２のモードにおいて、複数のプロセッサの動作を制御するように構成されるコントローラと、コントローラに連結され、複数のクロック信号を生成及び出力するように構成されるクロック生成回路と、コントローラに連結され、複数のプロセッサ動作供給電圧信号を生成及び出力するように構成されるプロセッサ動作電圧生成回路と、を有する装置が提供される。スイッチ回路は、クロック生成回路と複数のプロセッサとの間に配置され、複数のクロック信号を受信し、第２の複数のクロック信号を複数のプロセッサに出力するように構成される。第１の動作モードの間、第２の複数のクロック信号の各々は、同じ事前決定された周波数を有し、第２の動作モードの間、第２の複数のクロック信号の各々は、異なる事前決定された周波数を有する。キャッシュメモリも、複数のプロセッサに連結され、これらと共に用いられるように構成される。装置は、前記コントローラに応答し、前記複数のプロセッサ及び前記キャッシュメモリに連結され、前記第２の動作モードの間、前記複数のプロセッサと前記キャッシュメモリとの間でクロックドメインクロッシング機能を提供し、前記第１の動作モードの間、バイパス機能を提供するようにさらに構成されるクロックドメインクロッシング（ＣＤＣ）及びバイパス回路をさらに含む。
【００１２】
他の実施形態において、対称マルチプロセッシング（ＳＭＰ）モードと非対称マルチプロセッシング（ＡＳＭＰ）モードとの間で複数のプロセッサを有する処理システムをスイッチする方法が提供される。方法は、ＳＭＰモードとＡＳＭＰモードとの間でスイッチする命令を受信する段階と、受信された命令に従って、処理システムの動作モードをスイッチする段階と、を含む。動作モードをスイッチする段階は、前記処理システムが前記ＳＭＰモードで現在動作している場合、各々が異なる事前決定されたＡＳＭＰ周波数を有する複数のＡＳＭＰクロック信号を生成し、前記複数のＡＳＭＰクロック信号の各々を前記複数のプロセッサの異なるプロセッサに入力し、それぞれのプロセッサを前記事前決定されたＡＳＭＰ周波数のそれぞれにおいて動作させる、段階と、処理システムが前記ＡＳＭＰモードで現在動作している場合、事前決定されたＳＭＰ周波数を有するＳＭＰクロック信号を生成し、前記複数のプロセッサの各プロセッサに前記ＳＭＰクロック信号を入力し、各プロセッサを前記事前決定されたＳＭＰ周波数において動作させる、段階と、を含む。
【図面の簡単な説明】
【００１３】
本発明及びこれらの長所に対するより完全な理解のために、ここで、同様の番号が同様の対象を示す添付図面と共に、以下の説明を参照する。
【図１】従来技術の例示的な非対称マルチプロセッシングシステム（ＡＳＭＰ）を示す。
【図２】本開示の特定の実施形態に係る例示的なマルチプロセッシングシステムを示す図である。
【図３Ａ】本開示に係る図２に示されるシステムと共に用いられる例示的な有限ステートマシン（ＦＳＭ）及び処理を示す。
【図３Ｂ】本開示に係る例示的な有限ステートマシン（ＦＳＭ）及び図２に示されるシステムと共に用いられる処理を示す。
【図３Ｃ】本開示に係る例示的な有限ステートマシン（ＦＳＭ）及び図２に示されるシステムと共に用いられる処理を示す。
【図４】本開示に係るグリッチレスクロックの一実装を示す図である。
【図５】本開示に係るクロックドメインクロッシング（ＣＤＣ）及びバイパス回路のブロック図である。
【図６】図２に示される例示的なマルチプロセッシングシステムの他の実施形態である。
【図６Ａ】本開示に係る図６に示されるシステムと共に用いられる有限ステートマシン（ＦＳＭ）の他の実施形態を示す。
【図７】本開示に係るマルチプロセッシングシステムの他の実施形態を示す図である。
【図８】ＳＭＰ／ＡＳＭＰモードスイッチを開始及び制御するためのアーキテクチャ（方法又は処理）の図である。
【図９】本開示に係る例示的な動的モードスイッチ方法又は処理を示す。
【図１０】本開示に係る代替的なモードスイッチ方法又は処理を示す。
【図１１】本開示に係る例示的な静的モードスイッチ方法又は処理を示す。
【発明を実施するための形態】
【００１４】
本明細書において説明される図１から７、及び本特許文献における本開示の後述される原則を説明するために用いられる様々な実施形態は、例示としてのみ用いられ、本発明の範囲を決して限定するものと解釈されるべきではない。当業者であれば、本明細書において説明される原則が、任意のタイプの適切に構成されたデバイス又はシステムにおいて実装可能であることを理解しよう。
【００１５】
一般論では、本願は、対称マルチプロセッシング（ＳＭＰ）及び非対称マルチプロセッシング（ＡＳＭＰ）という２つの動作モードの間でスイッチ可能なマルチプロセッサを有する処理システムを説明する。システムは、２つのモード間において制御及びスイッチを有効化するハードウェア装置を含む。ハードウェア内において、オペレーティングシステム（ＯＳ）又は他のソフトウェア／ハードウェアからの、ＳＭＰとＡＳＭＰとの間でスイッチするスイッチコマンド受信の際に、連続する又は一連のアクションが実行され、マルチプロセッサ及びメモリに対するクロック及び電圧を制御する。スイッチコマンドの生成は、負荷、キャッシュミス率、電力消費理由等のような１つ又は複数の要因に基づいて、要望に応じて実行可能である。装置は、システムが１つのモードから他のモードへの移行中に障害を発生させず、プロセッサ／メモリに対するクロックがグリッチレスにスイッチされることを確実にする。装置／方法は、ソフトウェア／ＯＳ介入を最小化し、より高速なモードスイッチ速度を有する。
【００１６】
本明細書において用いられるように、ＳＭＰという用語は、概して、（同じクロック及び電圧供給で動作するＬ２キャッシュメモリを有する）共有メモリシステムを用いて、同じクロック（周波数）及び同じ電圧供給で動作するマルチプロセッサ／ＣＰＵ／コアを用いた処理を指す。ＡＳＭＰという用語は、概して、異なるクロック（周波数）及び／又は電圧供給で動作する少なくとも２つを有するマルチプロセッサ／ＣＰＵ／コアを用いた処理を指す。ＡＳＭＰにおいて、典型的には、各プロセッサは、異なるＬ２キャッシュメモリを用いる。しかしながら、ＡＳＭＰは、同じＬ２キャッシュメモリ（ヘテロジニアスＡＳＭＰと称される）の共有をさらに含んでよい。
【００１７】
本願は、動作のＳＭＰモードとＡＳＭＰモードとの間におけるモードスイッチ（動的／静的又は手動／インテリジェント）の様々な方法をさらに説明する（例えば、スイッチコマンドの生成）。１つの方法において、ＳＭＰモードは、軽負荷条件下で、又はＬ１キャッシュミス率が高い場合に選択される。ＡＳＭＰは、重くアンバランスな負荷条件下で選択される。また、リアルタイムな高速モード選択を容易にするために利用可能な学習モードが導入される。全体的な利益は、負荷がアンバランスな場合により低電力であること、より高性能かつキャッシュミスがより少ないこと、及び手動で又はインテリジェントにモードをスイッチする性能を含んでよい。
【００１８】
ここで、図２を参照すると、本開示に係る処理システム２００を示す詳細図が示される。処理システム２００は、図示されるように、マルチプロセッサ２１０（２１０ａ、２１０ｂ、２１０ｃ、２１０ｄ）と、対応するＬ２キャッシュメモリ部分２２０（２２０ａ、２２０ｂ、２２０ｃ、２２０ｄ）及びクロスドメインクロック（ＣＤＣ）バイパス回路２３０（２３０ａ、２３０ｂ、２３０ｃ、２３０ｄ）とを有するマルチプロセッサコア及びキャッシュサブシステム２０５を含む。４つのプロセッサ２１０（及び対応するメモリ及び回路）が示されるが、プロセッサの数は、小さくても大きくてもよく、ただし、少なくとも２つを含む。理解されるように、各プロセッサ２１０は、１つ又は複数の中央処理装置（ＣＰＵ）を含んでよい。
【００１９】
処理システム２００は、それぞれのプロセッサ、キャッシュ及びＣＤＣへの電力供給において用いられる複数の供給電圧信号を生成する電力管理制御（ＰＭＩＣ）回路２４０をさらに含む。同様に、クロック生成回路２５０は、それぞれのプロセッサ、キャッシュ及びＣＤＣのクロック動作において用いられる様々な事前決定されたクロック周波数を有する複数のクロック信号を生成する。ＰＭＩＣ回路２４０は、サブシステム２０５と同じ基板上（例えば、同じチップ／ダイに）配置され、又は他の方法で位置してよく、又は、他の基板（例えば、他のＩＣ、チップ、ダイ及び／又はパッケージ）に、もしくは他の方法でプロセッサ２１０の外部に、与えられてよいことが理解されよう。
【００２０】
図示されるように、処理システム２００は、コントローラ２６０（モードコントローラとも称されることがある）及びクロックスイッチ回路（又はモジュール）２７０をさらに含む。理解されるように、コントローラ２６０は、クロック生成回路２５０、ＰＭＩＣ回路２４０、「バイパス回路を有するＣＤＣ」２３０及びクロックスイッチ回路２７０の機能性及び動作を制御する様々な制御信号を出力する。
【００２１】
クロック生成回路２５０は、全てのプロセッサ２１０の動作速度を集合的に制御する１つのＳＭＰプロセッサクロック信号（ＣＬＫ）、全てのキャッシュ部分２２０の動作速度を集合的に制御する１つのＳＭＰメモリクロック信号（ＣＬＫｃｈ）、４つのプロセッサ（２１０ａ、２１０ｂ、２１０ｃ、２１０ｄ）の各々の動作速度の個別制御を有効化する４つのＡＳＭＰプロセッサクロック信号（ＣＬＫ０、ＣＬＫ１、ＣＬＫ２、ＣＬＫ３）、及びキャッシュメモリ部分（２２０ａ、２２０ｂ、２２０ｃ、２２０ｄ）の各々の動作速度の個別制御を有効化する４つのＡＳＭＰメモリクロック信号（ＣＬＫｃｈ０、ＣＬＫｃｈ１、ＣＬＫｃｈ２、ＣＬＫｃｈ３）を含む複数のクロック信号を生成するために必要な回路及び要素を含む。これらのクロックのいずれも、回路２５０によってグリッチレスに有効化又は無効化される。クロック生成回路２５０は、コントローラ２６０によって用いられるコントローラクロック信号（ＣＬＫ＿ＦＳＭ）をさらに生成する。
【００２２】
ＰＭＩＣ回路２４０は、サブシステム２０５のそれぞれの部分によって用いられる複数の動作供給電圧又は信号の生成に必要な回路及び要素を含む。図示されるように、ＰＭＩＣ回路２４０は、処理ユニットのそれぞれのグループの各々に電力を供給する４つの動作供給電圧（Ｖ０、Ｖ１、Ｖ２、Ｖ３）を生成及び出力する。言い換えると、動作供給電圧Ｖ０は、プロセッサ２１０ａ、キャッシュメモリ部分２２０ａ及びバイパス回路を有するＣＤＣ２３０ａに電力を供給し、電圧供給Ｖ１は、プロセッサ２１０ｂ、キャッシュメモリ部分２２０ｂ及びバイパス回路を有するＣＤＣ２３０ｂに電力を供給する、等である。当業者によって理解されるように、プロセッサ／メモリがより高いクロック速度で動作する場合、プロセッサ／メモリをより高い供給電圧でさらに動作させることが望ましく、これが必要なことがある。さらに、コアが用いられない場合、電力急減又はクロック無効化がされ得る。
【００２３】
クロック生成回路２５０は、生成されたクロック信号の各々にプログラム可能性を有効化する機能性及び回路をさらに含んでよいことが理解されよう。一実施形態において、クロック信号の各々は、多くの可能な周波数の１つにプログラム可能であってよい（例えば、ＣＬＫは、３００ＭＨｚから３ＧＨｚのような範囲の間でプログラム可能であってよい）。他の実施形態において、特定のクロック信号のみがプログラム可能であってよく、さらに他の実施形態において、各クロック信号の周波数は、事前決定され、固定である。さらに他の実施形態において、周波数は、互いに対して固定されてよいが、グループとしてプログラム可能であってよい。
【００２４】
同様に、ＰＭＩＣ回路２４０は、生成された動作電圧供給Ｖ０、Ｖ１、Ｖ２、Ｖ３の各々にプログラム可能性を提供する機能性及び回路をさらに含んでよい。一実施形態において、各供給は、多くの可能な電圧レベルの１つに対してプログラム可能であってよい（例えば、電圧は、０．５ボルト及び３．３ボルトのような範囲の間でプログラム可能であってよい）。他の実施形態において、特定の電圧の電力供給のみがプログラム可能であってよく、さらに他の実施形態において、各供給の電圧レベルは、事前決定され、固定である。さらに他の実施形態において、電圧レベルは、互いに対して固定されてよいが、グループとしてプログラム可能であってよい。図示されていないが、他の実施形態において、基本動作電圧供給は、図示される４つに加えて、生成されてよい。この場合、基本電圧供給及び他の４つは、（クロックスイッチ回路２７０において示されるマルチプレクサ２７２と同様の）多重化回路への入力として用いられてよい。
【００２５】
他の実施形態において（不図示）、それぞれのプロセッサ／Ｌ２キャッシュメモリのペアの１つ又は複数は、異なる電力供給電圧信号を有してよい、すなわち「分割レール」システムである。このようなシステムにおいて、Ｌ２キャッシュメモリ及びその関連プロセッサは、異なる電圧供給レールを有する。理解されるように、ペアの１つ又は複数（又は全て）は、分割レール電圧供給を有してよい。従って、本実施形態において、生成された動作電圧供給Ｖ０、Ｖ１、Ｖ２、Ｖ３は分割され、例えば、別個の供給Ｖ０（プロセッサ）及びＶ０（キャッシュ）等を含んでよい。これらは、別個に又は１つ又は複数のグループとしてプログラム可能であってよい。本実施形態において、システム２００は、ＣＤＣ回路２３０と別個の、又はその内部に含まれる電圧ドメインクロッシング回路（不図示）をさらに含んでよい。
【００２６】
モード又はスイッチコントローラ２６０は、有限ステートマシン（ＦＳＭ）２６２、１つ又は複数のタイマ２６４、及び（構成又はステータスレジスタのような）１つ又は複数のストレージレジスタ２６６を含む。コントローラ２６０は、スイッチコマンド（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ）のアサートに応じて、一連のアクション又は処理を制御及び実行するように機能する。従って、図示される実施形態において、スイッチコマンドがアサート／非アサートされる場合、動作モードは、ＡＳＭＰモードとＳＭＰモードとの間でスイッチされる。様々な方法及びメカニズムが、スイッチコマンドの生成のために用いられてよく、いくつかの例が、図８−１１に関して後述される。
【００２７】
有効化信号（ＥＮＡＢＬＥ＿ＡＳＭＰ＿ＣＬＫＳ、ＥＮＡＢＬＥ＿ＳＭＰ＿ＣＬＫ）を用いて、コントローラ２６０は、ＳＭＰ／ＡＳＭＰスイッチの前にクロックを有効化するクロック生成モジュール２５０を制御する。コントローラ２６０は、ＰＭＩＣ回路２４０のモジュールをさらに制御し、スイッチの前に（又はスイッチの後で）動作供給電圧Ｖ０、Ｖ１、Ｖ２、Ｖ３をプログラム又は変化させる。一実施形態において、ＰＭＩＣ回路２４０がプロセッサの外部にある場合（例えば、オフチップ）、コントローラ２６０は、ＳＰＭＩ／ＳＢＩ／ＭＩＰＩのような通信バス又はインタフェースを介してＰＭＩＣ回路２４０と通信を行ってよい。ＰＭＩＣ回路が外部にない場合、他の通信経路が用いられてよい。
【００２８】
スイッチコマンド（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ）は、様々な事象に応じて、かつ、処理システム２００内又は外部の様々な要素によって生成されてよいことが理解されよう。図示される実施形態において、スイッチコマンドは、マルチプロセッサコア及びキャッシュサブシステム２０５から生成されるが、他の実施形態においては、他のソースによって生成されてよい。
【００２９】
ＳＭＰクロックからＡＳＭＰクロックへの実際のスイッチオーバ（逆もまた同様）が行われる場合、コントローラ２６０は、クロックスイッチ回路２７０内のマルチプレクサ２７２を用いて、プロセッサへのＡＳＭＰクロック信号を選択的に多重化するＡＳＭＰ選択信号（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫ）を生成する。理解されるように、ＡＳＭＰモードにおけるプロセッサ／ＣＰＵコア２１０のクロックは、ＣＬＫ０、ＣＬＫ１、ＣＬＫ２、ＣＬＫ３として示されるが、ＳＭＰモードにおけるプロセッサ／ＣＰＵコア２１０のクロックは、ＣＬＫと示される。従って、ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫ信号は、どのクロックがグリッチレスに用いられるかを選択する。一実施形態において、ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫがアサートされる場合（ロジックハイ又は「１」）、クロック信号ＣＬＫ０、ＣＬＫ１、ＣＬＫ２、ＣＬＫ３が選択され、プロセッサ／コア２１０ａ、２１０ｂ、２１０ｃおよび２１０ｄにそれぞれ入力される。ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫがアサートされない場合（ロジックロー又は「０」）、クロックＣＬＫが選択され、プロセッサ／コア２１０ａ、２１０ｂ、２１０ｃおよび２１０ｄの全てに入力される。スイッチ中の様々な事象及びアクションのタイミングは、１つ又は複数のタイマ２６４を用いることにより、ＦＳＭ２６２に従って制御される。より詳細に後述されるように、クロックウォームアップ期間及び電圧ランプアップ／ランプダウン期間が用いられる。これらの値は、ソフトウェア又は他の方法によって、事前にプログラムされ又は事前設定され、コントローラのＣ／Ｓレジスタ又は他のメモリ位置（不図示）に格納されてよい。
【００３０】
理解されるように、参照番号によって具体的には特定されていないが、例えば、レベルシフタのような様々な他の論理回路が含まれてよい。レベルシフタは、典型的には、信号が電力ドメインをクロスする場合に用いられる。
【００３１】
ここで、図３Ａ、図３Ｂおよび図３Ｃを参照すると、ＦＳＭ２６２によって実行又は実装される処理又は方法３００が示される。理解されるように、ＦＳＭ２６２のこの処理／機能性は、異なる構成、方法もしくは構造（又はこれらの組み合わせ）又は方法を用いて実装されてよい。例えば、図示される実施形態においては有限ステートマシン（例えば、ハードウェア実装）として実装されるが、コントローラ２０６の機能性は、ソフトウェア、ファームウェアを有するマイクロコントローラ等、及びこれらの任意の組み合わせを用いて、又は当業者に公知の任意の他の態様／方式で代替的に実装されてよい。ＦＳＭ２６２は、有利には、より高速で動作し、ソフトウェア／ＯＳ介入を最小化する。例えば、タイムアウト等の例外の場合、これは、システムプロセッサに対して割り込みを生成する。
【００３２】
図３Ａ、３Ｂおよび３Ｃに示されるように、ＦＳＭ２６２の状態図によって表される処理３００は、様々な状態及び移行を含む。状態３１０において、処理システム２００は、ＳＭＰモードで動作する。スイッチコマンド（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ）が受信された場合、状態３２０（ＡＳＭＰ＿ＣＬＫ＿ＷＵ）に入る。ここでは、ＡＳＭＰクロックが（ＡＳＭＰクロック有効化信号を用いて）有効化かつアクティブ化され、「ウォームアップ」される。事前決定されたウォームアップ期間（タイマ）の完了後、状態３３０（Ｖ＿ＳＭＰ＿ＡＳＭＰ＿ＲＡＭＰ＿ＵＰ）に入る。ここでは、動作電圧供給Ｖ、Ｖ０、Ｖ１、Ｖ２、Ｖ３の全てが、（必要な場合には）事前決定された最大電圧レベル（ＭＡＸ）にまで上昇する。事前決定された最大電圧レベルは、Ｖ１、Ｖ２、Ｖ３、Ｖ４がＡＳＭＰモードにおける処理システム２００の動作中に有する最も高い電圧レベルに等しい（又はそれより大きい）。例えば、４つのプロセッサが現在（ＳＭＰモードにおいて）１．５ボルトで動作しており、ＡＳＭＰモードにおいて、４つのプロセッサが１．２、１．９、１．７及び１．７ボルトでそれぞれ動作する場合、動作供給電圧Ｖ１、Ｖ２、Ｖ３及びＶ４の全ては、１．９ボルト（又はそれより高く）にまで上昇する。
【００３３】
これらの４つの動作電圧供給電圧が事前決定された最大電圧（ＭＡＸ）に到達した後で、状態３４０（ＳＭＰ＿ＡＳＭＰ＿ＣＬＫ＿ＳＷＩＴＣＨ）に入る。この状態３４０において、クロックスイッチ信号はアサートされ、プロセッサ２１０及びメモリ２２０のクロック（全てＣＬＫ  ＳＭＰの周波数に等しい）は、ＳＭＰクロック信号からＡＳＭＰクロック信号にスイッチされる。図示されるように、マルチプレクサ２７２は、ＳＭＰクロック信号ＣＬＫの代わりに、それぞれのＡＳＭＰクロック信号ＣＬＫ１、ＣＬＫ２、ＣＬＫ３、ＣＬＫ４を出力するようにスイッチされる。これと同時に、バイパス回路を有するＣＤＣ２３０も、ＡＳＭＰクロック信号を有効化するバイパスモードに設定され、バイパス回路を有するＣＤＣ２３０のクロックドメイン回路をバイパスする。また、このとき、クロック生成回路２５０によって生成されたＳＭＰクロック信号は、非アクティブ化されてよい。
【００３４】
これらのイベントが完了した後で、状態３５０（Ｖ＿ＳＭＰ＿ＡＳＭＰ＿ＲＡＭＰ＿ＤＮ）に入る。これは、動作供給電圧Ｖ１、Ｖ２、Ｖ３、Ｖ４に対するランプダウン手続きを実行させる。全てのプロセッサ２１０（及びメモリ２２０）はＭＡＸ動作供給電圧（上述の例においては１．９ボルト）で動作しており、ＡＳＭＰモードにおいてＶ１、Ｖ２、Ｖ３及びＶ４に望ましい動作供給電圧は異なるので（上述の例においては、それぞれ１．２、１．９、１．７及び１．７ボルト）、Ｖ１、Ｖ３及びＶ４の電圧レベルはＡＳＭＰモードにおいて所望の電圧レベルにまで減少する。
【００３５】
動作供給電圧がランプダウンした後で（例えば、ＡＳＭＰモードにおいて各プロセッサに対して所望の電圧レベルに設定される）、状態３６０に入る。この状態において、処理システム２００は、ここで、ＡＳＭＰモードにおいて、それぞれのプロセッサ／メモリの組み合わせ、例えば、２１０ａ／２２０ａ、２１０ｂ／２２０ｂ、２１０ｃ／２２０ｃ、及び２１０ｄ／２２０ｄの各々で動作しており、クロック及び電圧信号の組み合わせＣＬＫ０／Ｖ０、ＣＬＫ１／Ｖ１、ＣＬＫ２／Ｖ２、ＣＬＫ３／Ｖ３にそれぞれ従って、動作している。
【００３６】
異なる実施形態において、ＦＳＭ２６２によって実行される１つ又は複数の段階は、省略又はバイパスされてよいことが理解されよう。例えば、全ての電圧が同じである場合、Ｖ＿ＳＭＰ＿ＡＳＭＰ＿ＲＡＭＰ＿ＵＰ及びＶ＿ＳＭＰ＿ＡＳＭＰ＿ＲＡＭＰ＿ＤＮ状態は必要でないことがあり、省略されてよい。この例において、これにより、あらゆるモードスイッチレイテンシが減少し得る。いくつかの他の実施形態において、クロック電圧は、クロックがスイッチされる前に、ランプアップされなければならない。
【００３７】
前述されたように、クロック電圧及び周波数値は、本明細書において説明される方法を用いて、ソフトウェア／ＯＳによって事前決定されてよく、スイッチを開始する前に、コントローラのＣ／Ｓレジスタ（又は他のメモリ位置）において、事前に格納又はプログラム可能である。他の実施形態において、システムは、リアルタイムの動作特性又はパラメータに基づいて、動作中のクロック電圧及び／又は周波数値を（いくつかの可能な値の１つから）判断してよい。これらの値（又はこれらの値の識別子）は、その後、Ｃ／Ｓレジスタ（又はいくつかの他のメモリ位置）に格納されてよい。
【００３８】
同様の処理が、ＡＳＭＰモードからＳＭＰモードにスイッチする場合に続く。状態３６０において、処理システム２００は、ＡＳＭＰモードで動作する。スイッチコマンド（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ、非アサート）が受信された場合、状態３７０（ＳＭＰ＿ＣＬＫ＿ＷＵ）に入る。ここでは、ＳＭＰクロックが（ＳＭＰクロック有効化信号を用いて）有効化かつアクティブ化され、「ウォームアップ」される。事前決定されたウォームアップ期間（タイマ）の完了後、状態３８０（Ｖ＿ＡＳＭＰ＿ＳＭＰ＿ＲＡＭＰ＿ＵＰ）に入る。ここでは、動作電圧供給Ｖ０、Ｖ１、Ｖ２、Ｖ３の全てが、（必要な場合には）事前決定された最大電圧レベル（ＭＡＸ）に増加する。事前決定された最大電圧レベルは、ＡＳＭＰモードにおいてＶ１、Ｖ２、Ｖ３、Ｖ４が現在供給している最も高い電圧レベルに（又は、そのレベルがＶ１、Ｖ２、Ｖ３及びＶ４の全てのレベルより高い場合、所望のＳＭＰ電圧レベルＶ＿ＳＭＰに）等しい（又はそれより大きい）。例えば、４つのプロセッサが現在（ＡＳＭＰモードにおいて）１．２、１．９、１．７及び１．７ボルトで動作しており、ＳＭＰモードにおいて、４つのプロセッサが１．５ボルト（Ｖ＿ＳＭＰ）でそれぞれ動作する場合、動作供給電圧Ｖ１、Ｖ２、Ｖ３及びＶ４の全ては、１．９ボルト（又はそれより高く）にまで上昇する。
【００３９】
これらの４つの動作電圧供給電圧が事前決定された最大電圧（ＭＡＸ）に到達した後で、状態３９０（ＡＳＭＰ＿ＳＭＰ＿ＣＬＫ＿ＳＷＩＴＣＨ）に入る。この状態３９０において、クロックスイッチ信号はアサートされ、プロセッサ２１０及びメモリ２２０のクロック（おそらくは全てＳＭＰクロック信号ＣＬＫの周波数と異なる）は、ＡＳＭＰクロック信号ＣＬＫ０、ＣＬＫ１、ＣＬＫ２、ＣＬＫ３からＳＭＰクロック信号ＣＬＫにスイッチされる。図示されるように、マルチプレクサ２７２は、ＡＳＭＰクロック信号の代わりに、ＳＭＰクロック信号（ＣＬＫ）を出力するようにスイッチされる。これと同時に、バイパス回路を有するＣＤＣ２３０は、ＳＭＰクロック信号を有効化するクロックドメイン回路を用いて、動作（及びバイパスモードを無効化）するようにさらに設定され、バイパス回路を有するＣＤＣ２３０におけるクロックドメイン回路を通して進む。また、このとき、クロック生成回路２５０によって生成されたＡＳＭＰクロック信号は、非アクティブ化されてよい。
【００４０】
これらのイベントが完了した後で、状態３９５（Ｖ＿ＡＳＭＰ＿ＳＭＰ＿ＲＡＭＰ＿ＤＮ）に入る。これは、動作供給電圧Ｖ１、Ｖ２、Ｖ３、Ｖ４に対するランプダウン手続きを実行させる。全てのプロセッサ２１０（及びメモリ２２０）はＭＡＸ動作供給電圧（上述の例においては１．９ボルト）で動作しており、所望の動作供給電圧は、ＳＭＰモードにおいて、現在の電圧レベル（当該例では１．９ボルト）より低いＶ＿ＳＭＰ（上述の例では１．５ボルト）であるので、動作供給電圧Ｖ１、Ｖ２、Ｖ３及びＶ４の全ては、所望のＳＭＰモードにおいて、Ｖ＿ＳＭＰレベル（１．５ボルト）にまで減少する。
【００４１】
動作供給電圧がランプダウンした後で（例えば、ＳＭＰモードにおいて各プロセッサに対して所望のＳＭＰ電圧レベルに設定される）、状態３１０に入る。この状態において、処理システム２００は、ここで、ＳＭＰモードにおいて、それぞれのプロセッサ／メモリの組み合わせ、例えば、２１０ａ／２２０ａ、２１０ｂ／２２０ｂ、２１０ｃ／２２０ｃ、及び２１０ｄ／２２０ｄの各々で動作しており、単一のクロック及び電圧信号の組み合わせＣＬＫ／Ｖ＿ＳＭＰに従って、動作している。
【００４２】
異なる実施形態において、ＦＳＭ２６２によって実行される１つ又は複数の段階は、省略又はバイパスされてよいことが理解されよう。例えば、全ての電圧が同じである場合、Ｖ＿ＡＳＭＰ＿ＳＭＰ＿ＲＡＭＰ＿ＵＰ及びＶ＿ＡＳＭＰ＿ＳＭＰ＿ＲＡＭＰ＿ＤＮ状態は必要でないことがあり、省略されてよい。この例において、これにより、あらゆるモードスイッチレイテンシが減少し得る。いくつかの他の実施形態において、クロック電圧は、クロックがスイッチされる前に、ランプアップされなければならない。
【００４３】
ここで、図４を参照すると、（図２に示される）クロックマルチプレクサ２７２の１つの回路実装が示される。本実施形態において、クロックマルチプレクサ２７２は、スイッチ中のグリッチ（不具合）がないことを意味する「グリッチレス」である。他の適切な回路実装がクロックマルチプレクサ２７２に用いられてよく、当業者であれば、グリッチレスなマルチプレクサスイッチを実行する他の回路が利用可能であることを容易に理解しよう。
【００４４】
図５を参照すると、（図２に示される）バイパス回路を有するＣＤＣ２３０の一実装が示される。従来技術のＡＳＭＰシステムにおいて（図１参照）、各々が２つの非同期クロックドメインクロッシング（ＣＤＣ）回路１３１ａ、１３１ｂを含むＣＤＣ回路１３０は、それぞれのプロセッサ２１０及びＬ２キャッシュ部分２２０の間に配置されることが理解されよう。理解されるように、非同期ＣＤＣ回路１３１は、当分野で公知であり、従って、当業者であれば、このような機能性をどのように実装するかを理解しよう。これらのＣＤＣ回路及び／又はその機能性も、クロックスイッチ回路として、又はプロセッサとＬ２キャッシュとの間の非同期ＦＩＦＯブリッジとして、当分野で公知である。
【００４５】
バイパス回路を有するＣＤＣ２３０は、図５に示されるように、非同期ＣＤＣ回路１３１ａと関連付けられた第１のマルチプレクサ２７２ａ、第１のデマルチプレクサ２７３ａ、及び第１のバイパス線２３１ａをさらに含む。第２のマルチプレクサ２７２ｂ、第２のデマルチプレクサ２７３ｂ、及び第２のバイパス線２３１ｂは、図５に示されるように、非同期ＣＤＣ回路１３１ｂと関連付けられる。ＣＤＣ回路２３０において、モード間で（例えば、ＣＤＣの非同期モードと同期バイパスモードとの間で）スイッチする場合、ＣＤＣ回路２３０は、「グリッチレス」スイッチを実行し、確実に、潜在的な不具合によって障害を生じることがないようにする。
【００４６】
当業者であれば、ＳＭＰモード（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫ信号がアサートされない）において、プロセッサ（例えば、２１０ａ）からのデータが、Ｌ２キャッシュ（例えば、２２０ａ）に向かう途中で非同期ＣＤＣ回路１３１ａをバイパスし、Ｌ２キャッシュ（例えば、２２０ａ）からのデータがプロセッサ（例えば、２１０ａ）に向かう途中で非同期ＣＤＣ回路１３１ｂをバイパスすることを理解しよう。対照的に、ＡＳＭＰモードにある場合（ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＣＬＫ信号がアサートされ、Ｃａｃｈｅ＿ＣＬＫ及びＣＰＵ＿ＣＬＫ信号が異なる場合がある）、プロセッサ（２１０ａ）からのデータは、Ｌ２キャッシュ（２２０ａ）に向かう途中で非同期ＣＤＣ回路１３１ａによって処理され、Ｌ２キャッシュ（２２０ａ）からのデータは、プロセッサ（２１０ａ）に向かう途中で非同期ＣＤＣ回路１３１ｂによって処理される。非同期ＣＤＣ回路１３１ａ、１３１ｂは、事前決定された順番に従って、１つのクロックドメインから他のクロックドメインへのデータ転送を確実にするように機能し、例えば、最初に受信されたデータが最初に出力される。１つのクロックドメインにおいてクロックと同期する入力されたデータは、他のクロックドメインにおいてクロックと再同期される。非同期ＦＩＦＯは、概して、インタフェースにおいて、いくらかのレイテンシにより、データバッファを提供する。
【００４７】
同期モードにある場合、Ｃａｃｈｅ＿ＣＬＫは、概して、ＣＰＵ＿ＣＬＫから導出される（例えば、ＣＰＵ＿ＣＬＫを１で除算、又は３で除算）。言い換えると、これらは等しくてよく、ＣＰＵ＿ＣＬＫは、通常、Ｃａｃｈｅ＿ＣＬＫの整数倍である（例えば、ＣＰＵ＿ＣＬＫ＝３＊Ｃａｃｈｅ＿ＣＬＫ）。２つのクロックは、本質的に同期する。データは、概して、さらにより小さいレイテンシにより、同期的にインタフェースをクロスする。
【００４８】
マルチプレクサ２７２ａ、２７２ｂは、図４に示されるグリッチレスクロックマルチプレクサ２７２と同じであってよい。デマルチプレクサ２７３ａ、２７３ｂは、本質的にマルチプレクサと同様の、又はこれに対する回路であってよいが、逆多重化機能を実行する。１つの好ましい実施形態において、これらも、グリッチレスである（グリッチレススイッチを実行する）。
【００４９】
ここで図６を参照すると、本開示に係る処理システム２００ａの他の実施形態を示す詳細図が示される。処理システム２００ａは、（１）ＣＬＫ＿０信号が、ＡＳＭＰモードにある場合のＣＬＫ＿０信号、及びＳＭＰモードにある場合のＣＬＫ（ＳＭＰ）信号の両方として機能する点、及び（２）ＣＬＫ＿ｃｈ０信号が、ＡＳＭＰモードにある場合のＣＬＫｃｈ＿０信号及びＳＭＰモードにある場合のＣＬＫｃｈ（ＳＭＰ）信号の両方として機能する点を除き、図２に示される処理システム２００と同じである。これにより、プロセッサ／Ｌ２キャッシュペア（２１０ａ、２２０ａ）と関連付けられた第１の２つのマルチプレクサ２７２が必要なくなる。さらに、変形されたクロック生成モジュール２５０ａは、これらのクロック信号の違いを実装するように提供され、変形されたＦＳＭ２６２ａも含まれる。
【００５０】
理解されるように、図６に示される処理システム２００ａは、ＦＳＭ２６２ａによって実行又は実装される処理又は方法３００ａをさらに含む。理解されるように、ＦＳＭ２６２ａの処理／機能性は、ステートマシンの状態３６０が除外される点を除き、ＦＳＭ２６２の処理／機能性と同じである。図６Ａは、ＦＳＭ２６２ａを示し、図３Ａに示されるＦＳＭ２６２と比較すると、残りの状態及び移行の全てが本質的に同じであることが容易に理解される。理解されるように、ＦＳＭ２６２ａの処理又は方法フローは、説明された変形を除き、図３Ｂおよび３Ｃに示されるＦＳＭ２６２の処理又は方法フローと同様である。これらの同様の処理又はフロー図は、簡潔性のため、本明細書では省略されている。
【００５１】
ここで、図７を参照すると、本開示に係る他の処理システム２００ｂのより具体的な実施形態を示す詳細図が示される。処理システム２００ｂは、マルチプロセッサコア及びキャッシュサブシステム２０５ｂが特定のアーキテクチャを含む点を除き、図２に示される処理システム２００と同様である。図７は、本開示の教示による例示的なアプリケーションを示す。これは、８つのプロセッサコア７１０（ａからｈ）及びＬ２キャッシュ７２０の２つのクラスタ（ａからｂ）を含むＡＲＭのＢｉｇ−Ｌｉｔｔｌｅマルチプロセッササブシステムという特定のアーキテクチャに組み込まれている。Ｌ２キャッシュの２つのクラスタに基づいて、システム２００ｂは、プロセッサ／Ｌ２キャッシュペアの２つのステージのみを必要とする。さらに、その中に示される２３０、２４０、２５０、２６０および２７０を含む様々なコンポーネントは、図２に示されるものと同じであってよく、これらは、プロセッサ及びキャッシュサブシステム２０５ｂの特定のアーキテクチャを考慮する場合、いくらかのわずかな変形を必要としてよい。これらの変形は、当業者によって容易に理解されよう。さらに、図６に示されるもののような、他の実施形態において説明される概念も、図７のシステムにおいて実装されてよい。
【００５２】
（図１−８に関して）上述された、ＳＭＰとＡＳＭＰとの間におけるスイッチを実装する例示的なコンポーネント、ハードウェア及び方法に加えて、本開示は、モードスイッチを開始及び制御する例示的な方法及び処理を、さらに説明する。
【００５３】
ＳＭＰとＡＳＭＰとの間における動的なモードスイッチが導入され、これは、トラフィックのタイプ、プロセッサの待ち時間、負荷アンバランス情報及び／又は電力消費に基づいてなされてよい。理解されるように、情報の他の要因及びタイプが分析され、モードの変更（又は維持）を決定する基礎を形成してよい。例えば、ＳＭＰモードは、負荷が軽い場合、又は全てのＣＰＵコアが用いられて負荷が重い場合及び／又はＬ１キャッシュミス率が高い場合に選択されてよく、ＡＳＭＰモードは、重い及び／又はアンバランスな負荷に対して選択されてよい。
【００５４】
静的な（すなわち、手動の）モードスイッチも、処理タイプ（例えば、演算集中的、タイムクリティカル等）又は特定のアプリケーションもしくはアプリケーションプログラム（例えば、アプリケーションプログラムがどのモードを用いるかを選択する）等に基づいて、実装されてよい。
【００５５】
リアルタイムのインテリジェントなモード選択を容易にするために利用可能な学習メカニズム又は処理が、本明細書においてさらに説明される。例えば、学習システムは、特定のトラフィック又は処理シナリオに対して、ＳＭＰ又はＡＳＭＰモードのいずれが、より電力消費を低くし得るかを判断することができる。
【００５６】
ここで、図８を参照すると、ＳＭＰ／ＡＳＭＰモードスイッチを開始及び制御するアーキテクチャ（方法又は処理）８００が、概念的に示される。モード選択は、所望の処理又はアプリケーションのタイプ、及び他の情報又は要因に基づいて、実行可能である。図示されるように、処理又はアプリケーション８０２は、ブラウザアプリケーション８０２ａ、ストリーミングアプリケーション８０２ｂ、ゲームアプリケーション８０２ｃ又はナビゲーション８０２ｄであってよい。他の要因／情報８０４も、考慮されてよい。
【００５７】
例として、ストリーミングアプリケーション８０２ｂがマルチプロセッシングを必要とすると仮定すると、モード選択デバイス８１０は、そのアプリケーションに関連付けられた処理タスクがＳＭＰ又はＡＳＭＰモードのいずれで実行されるべきかを判断する。システムソフトウェア／ＯＳは、この判断を実行し、決定をなす。システムは、コントローラにコマンドを発行するようにシングルプロセッサを割り当ててよいが、概して、決定は、システムレベル／ＯＳレベルで実装される。この決定は、静的情報、動的情報又はこれらの組み合わせに基づいてなされてよい。一例において、全てのビデオエンコーディングアプリケーションがＳＭＰモードを用いることが事前決定されてよい。他の例において、全てのビデオストリーミングアプリケーションは、全てのＣＰＵコアが使用されるほどＣＰＵの現在の負荷が重くない限り、ＡＳＭＰモードを用いる。他の変更形態は、１つのモードから他のモードにスイッチするか否かについての決定をなすために、プログラム及び利用可能である。
【００５８】
一実施形態において、シングルプロセッシングタスクが必要とされる場合に、ルックアップテーブルが参照されてよい。他の実施形態において、電力の比較は、マルチプロセッシングタスクが存在する場合にいずれかのモードを選択するために用いられる要因であってよい。例えば、ユーザが、同時に音楽を聴きつつ電子メールを利用している場合、ＡＳＭＰが選択可能である。
【００５９】
どのモードが選択されるべきかを判断した後で、デバイス８１０は、ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ制御信号（図２参照）において適切な信号を発する（例えば、高／低）。理解されるように、現在の動作モードは、既に、選択されたモードであってよい（このような場合には、ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ信号は移行しない）。
【００６０】
ＳＥＬＥＣＴ＿ＡＳＭＰ＿ＭＯＤＥ信号に応じて、システム２００は、ＡＳＭＰモード（８２０）又はＳＭＰモード（８３０）で動作する。ＡＳＭＰモードにある場合、コア１（要素２１０ａ、２２０ａ、２３０ａ）、コア２（要素２１０ｂ、２２０ｂ、２３０ｂ）、コア３（要素２１０ｃ、２２０ｃ、２３０ｃ）及びコア４（要素２１０ｄ、２２０ｄ、２３０ｄ）の各々は、個別のクロック信号／周波数及び供給電圧で動作する。ＳＭＰモードにある場合、コア１からコア４は、同じクロック信号／周波数及び供給電圧で動作する。ＳＭＰ及びＡＳＭＰモード（ならびにモードスイッチ）の詳細は、より十分に上述されている。
【００６１】
ここで、図９を参照すると、本開示に係る例示的なモードスイッチ方法又は処理９００が示される。システム２００の動作中、（プロセッサコア固有の）Ｌ１キャッシュのミス率は、継続的にモニタリングされる（段階９０２）。ミス率は、事前決定された閾値と比較される（段階９０４）。このミス率が高い（閾値を超える）場合、処理は、システム２００の現在の処理モードがＡＳＭＰか否か、及び他のＣＰＵの負荷が重い／軽いかを（他の閾値を用いて）判断する（段階９０６）。是の場合、システム２００は、ＡＳＭＰモードからＳＭＰモードにスイッチする（段階９０８）。否の場合、システム２００は、ＡＳＭＰモードを継続する。
【００６２】
Ｌ１キャッシュミス率が高くない場合、処理は、システム２００の現在の処理モードがＳＭＰか否か、及び処理負荷が重くアンバランスであるか否かを判断する（段階９１０）。是の場合、システム２００は、ＳＭＰモードからＡＳＭＰモードにスイッチする（段階９１２）。否の場合、システム２００は、ＳＭＰモードを継続する。
【００６３】
図９に示される処理９００は、任意のインテリジェント学習処理をさらに含む。システム２００がＡＳＭＰモードからＳＭＰモードに（段階９０８）、又はＳＭＰモードからＡＳＭＰモードに（段階９１２）スイッチする場合、スイッチの判断に関連するシナリオ情報は、学習システムデータベースに記録される（段階９２０）。シナリオ情報は、モードのスイッチを決定するためにシステムによって用いられる情報の任意の部分又は全部であってよい。図示の例において、シナリオ情報は、Ｌ１キャッシュミス率及び負荷情報（軽い／重い、バランスがよい／アンバランスな）を含んでよい。
【００６４】
ここで、図１０を参照すると、履歴データ及び過去の経験からのインテリジェンスに基づく例示的な代替的なモードスイッチ方法又は処理１００が示される。動作中、システム２００は、動的システム情報（例えば、現在のシナリオ情報）を周期的に取得し、学習システムデータベースをサーチする（段階１００２）。現在のシナリオ情報は、学習システムデータベースに格納されたシナリオ情報と比較され、一致が見られるか否かを判断する（段階１００４）。是の場合、システム２００は、一致したシナリオ情報に関連付けられた情報に従って、ＡＳＭＰモードとＳＭＰモードとの間でスイッチする（段階１００６）。理解されるように、これにより、モードがスイッチされてよいが、現在のモードの動作を維持してもよい。否の場合、システムは、図９において説明される処理／方法のような、動的なＳＭＰ／ＡＳＭＰ選択及び学習システムトレーニングを実行する。
【００６５】
図１１は、本開示に係る例示的な静的モードスイッチ方法又は処理１１００を示す。一般論では、この処理は、静的な又は「手動による」情報又は要因１１０２に基づいて、システム２００がＳＭＰ又はＡＳＭＰモードのいずれで動作すべきかを判断する。例えば、いずれのモードかという判断は、多数の情報又は要因、例えば、ユーザプロファイル１１０２ａ、アプリケーション管理１１０２ｂ、省電力モード１１０２ｃ及び他の情報又は要件１１０２ｎに基づいて、「静的に」割り当てられてよい。
【００６６】
システム２００は、適用可能な情報又は入力に基づいて、ＳＭＰモード又はＡＳＭＰモードのいずれで動作すべきかを判断する（１１０４）。例えば、所与のユーザプロファイルが特定のモードに関連付けられる、すなわち、所与のユーザに関連付けられた処理が特定のモードで常に実行されるべきであることを意味する場合、システム２００は、必要に応じて、処理のための特定のモードにスイッチする。他の例において、特定のアプリケーションが常に１つのモードで実行されるべきである場合、システム２００は、その特定のモードにおいて当該アプリケーションのの処理を実行し、必要に応じてスイッチする。さらに他の例において、システム２００が省電力モードに配された場合、当該モードは、システム２００に、ＡＳＭＰ又はＳＭＰモードのうち、電力を節約するモードとなるようにプログラムされたいずれかのモードで動作することを要求してよい。
【００６７】
図示されるように、システム２００は、処理タスクがＳＭＰモード（又はＡＳＭＰモード）で実行されるべきか否かを判断する。ＳＭＰモードが用いられるべきであり、かつ、システムが現在ＳＭＰモードにはない場合、システムは、ＡＳＭＰモードからＳＭＰモードにスイッチする（段階１１０６）。同様に、（ＳＭＰモードではなく）ＡＳＭＰモードが用いられるべきであり、かつ、システムが現在ＳＭＰモードにある場合、システムは、ＳＭＰモードからＡＳＭＰモードにスイッチする（段階１１０８）。
【００６８】
理解されるように、一実施形態において、本明細書において説明されるシステム、処理、方法及びデバイスは、モバイルデバイス／小型コンピューティングデバイス又は基地局等内に組み込まれる場合を含め、モバイル環境において用いられてよい。このようなデバイスは、例えば、無線信号を送信及び／又は受信するように構成されてよい。デバイスは、任意の適したエンドユーザデバイスであってよく、ユーザ機器／デバイス（ＵＥ）、無線送受信ユニット（ＷＴＲＵ）、移動局、固定又はモバイル加入者ユニット、ページャ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、ラップトップ、コンピュータ、タッチパッド、無線センサ、ウェアラブル電子デバイス又は消費者向け電気デバイスのようなデバイスを含んで（又はこのように称されて）よい。
【００６９】
デバイスは、デバイスの様々な処理動作を実装する（本明細書において説明されるような）少なくとも１つの処理システム２００を含む。これは、例えば、信号符号化、データ処理、ビデオ／オーディオ処理、電力制御、入出力処理、又はデバイスのために考慮される任意の他の機能性を含んでよい。
【００７０】
処理システム２００は、本明細書において説明される方法及び教示をさらにサポートし、追加のコンポーネント及びプロセッサ（例えば、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、又は特定用途向け集積回路）を含んでよい。
【００７１】
処理システム２００を組み込んだデバイスは、少なくとも１つのアンテナによる送信のためのデータ又は他のコンテンツを変調させるように構成される少なくとも１つの送受信機をさらに含んでよい。送受信機は、少なくとも１つのアンテナによって受信されるデータ又は他のコンテンツを復調されるようにさらに構成される。各送受信機は、無線送信のための信号を生成及び／又は無線により受信された信号を処理するために、任意の適した構造を含む。各アンテナは、無線信号を送信及び／又は受信するために、任意の適した構造を含む。１つ又は複数の送受信機がデバイスにおいて用いられてよく、１つ又は複数のアンテナが用いられてよい。
【００７２】
これらのデバイスは、ユーザとのインタラクションを容易にする１つ又は複数の入出力デバイスをさらに含んでよい。各入出力デバイスは、ユーザに情報を提供し、ユーザから情報を受信するために、スピーカ、マイクロフォン、キーパッド、キーボード、ディスプレイ、又はタッチスクリーンのような、任意の適した構造を含む。
【００７３】
さらに、これらのデバイスは、デバイスによって利用、生成、又は収集された命令及びデータを格納するために、上述のメモリを用いてよく、又は、他のメモリを含んでよい。例えば、メモリは、処理システム２００によって実行されるソフトウェア又はファームウェア命令を格納してよい。他のメモリは、任意の適した揮発性及び／又は不揮発性ストレージ及び検索デバイスを含んでよい。ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、ハードディスク、光ディスク、加入者識別モジュール（ＳＩＭ）カード、メモリスティック、セキュアデジタル（ＳＤ）メモリカード等のような、任意の適したタイプのメモリが用いられてよい。
【００７４】
モバイル／小型コンピューティングデバイスに関するさらなる詳細は、当業者に公知である。このため、これらの詳細は、明確性のため、ここでは省略される。
【００７５】
いくつかの実施形態において、デバイスの１つ又は複数の機能又は処理のうちいくつか又は全ては、コンピュータ可読プログラムコードから形成され、コンピュータ可読媒体において具現化されるコンピュータプログラムによって実装又はサポートされる。「コンピュータ可読プログラムコード」という語句は、ソースコード、オブジェクトコード、及び実行可能コードを含む、任意のタイプのコンピュータコードを含む。「コンピュータ可読媒体」という語句は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、又は任意の他のタイプのメモリのような、コンピュータによってアクセス可能な任意のタイプの不揮発性媒体を含む。
【００７６】
本特許文献を通して用いられる特定の単語及び語句の定義を説明することは、有利であろう。「含む」及び「備える」という用語は、これらの派生語と共に、限定なく含むことを意味する。「又は」という用語は、包括的であり、「及び／又は」を意味する。「と関連付けられ」及び「これらと関連付けられ」という語句は、これらの派生語と共に、「を含む」、「内に含まれる」、「と相互接続する」、「を包含する」、「内に包含される」、「と接続する」、「と連結する」、「と通信可能である」、「と連携する」、「と交互配置される」、「と並置される」、「と近接する」、「に拘束される」、「を有する」、「の特性を有する」等を意味する。「コントローラ」という用語は、任意のデバイス、システム又は少なくとも１つの動作を制御するその一部を意味してよい。コントローラは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの少なくとも２つの何らかの組み合わせで実装されてよい。任意の特定のコントローラに関連付けられた機能性は、ローカルに又は遠隔のいずれに関わらず、集中又は分散されてよい。
【００７７】
本開示は、特定の実施形態及び概して関連する方法、を説明したが、これらの実施形態及び方法の変更及び再配置は、当業者にとって明らかであろう。従って、例示的な実施形態の上述の説明は、本開示を定義又は制約するものではない。以下の特許請求の範囲によって定義される本開示の主旨及び範囲から逸脱することなく、他の変化、置換、及び変更も可能である。
【図１】
0006501430.tif 000002
【図２】
0006501430.tif 000003
【図３Ａ】
0006501430.tif 000004
【図３Ｂ】
0006501430.tif 000005
【図３Ｃ】
0006501430.tif 000006
【図４】
0006501430.tif 000007
【図５】
0006501430.tif 000008
【図６】
0006501430.tif 000009
【図６Ａ】
0006501430.tif 000010
【図７】
0006501430.tif 000011
【図８】
0006501430.tif 000012
【図９】
0006501430.tif 000013
【図１０】
0006501430.tif 000014
【図１１】
0006501430.tif 000015