JP2008077640A - マルチプロセッサシステムにおける消費電力削減方法および装置 - Google Patents
マルチプロセッサシステムにおける消費電力削減方法および装置 Download PDFInfo
- Publication number
- JP2008077640A JP2008077640A JP2007205861A JP2007205861A JP2008077640A JP 2008077640 A JP2008077640 A JP 2008077640A JP 2007205861 A JP2007205861 A JP 2007205861A JP 2007205861 A JP2007205861 A JP 2007205861A JP 2008077640 A JP2008077640 A JP 2008077640A
- Authority
- JP
- Japan
- Prior art keywords
- frequency
- processor
- data
- waiting
- power consumption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
Abstract
【課題】マルチプロセッサシステムにおいて複数のプロセッサが動作すると、電力消費量が増加する。
【解決手段】マルチプロセッサシステムにおいて待ち状態にあるプロセッサの動作周波数を減らすことにより消費電力を削減する方法および装置を提供する。あるプロセッサは、別のプロセッサがロックしたデータを待っているループを実行中、低周波数モードに入ることで消費電力が削減される。マルチプロセッサシステムは、待ち状態のプロセッサが待ちループを実行する回数(ループカウント)をモニタし、ループカウントが閾値以上であれば、待ち状態のプロセッサのクロック周波数を減らす。待ち状態のプロセッサが待つことをやめ、待ちループに分岐しなくなると、ループカウントをゼロにリセットし、待ち状態にあったプロセッサの動作周波数を通常の初期レベルまで増加させる。
【選択図】図3
【解決手段】マルチプロセッサシステムにおいて待ち状態にあるプロセッサの動作周波数を減らすことにより消費電力を削減する方法および装置を提供する。あるプロセッサは、別のプロセッサがロックしたデータを待っているループを実行中、低周波数モードに入ることで消費電力が削減される。マルチプロセッサシステムは、待ち状態のプロセッサが待ちループを実行する回数(ループカウント)をモニタし、ループカウントが閾値以上であれば、待ち状態のプロセッサのクロック周波数を減らす。待ち状態のプロセッサが待つことをやめ、待ちループに分岐しなくなると、ループカウントをゼロにリセットし、待ち状態にあったプロセッサの動作周波数を通常の初期レベルまで増加させる。
【選択図】図3
Description
本発明は、マルチプロセッサシステムにおける消費電力を削減する方法および装置に関する。特に、ループサイクルにおいてプロセッサの動作周波数を減らすことにより消費電力を削減する方法および装置に関する。
近年、最先端のコンピュータアプリケーションは、リアルタイムでマルチメディアを扱う機能を必要としており、コンピュータ処理のデータスループットをどこまでも高くしていくことが求められている。そのようなアプリケーションの中で、グラフィックスアプリケーションは、望ましい視覚上の結果を得るために比較的短い時間で、莫大な量のデータアクセス、データ計算、およびデータ操作を行わなければならないため、プロセッシングシステムに最も高い要求を課している。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。プロセッシングシステムの中には、一つのプロセッサを用いて高速な処理速度を達成するものがあるが、他のプロセッシングシステムは、高速処理のためにマルチプロセッサアーキテクチャを用いて実装されている。マルチプロセッサシステムでは、複数のサブプロセッサが並列に(または少なくとも協調して)動作することで所望の処理結果を達成することができる。
たとえば、マルチプロセッサシステムは複数のプロセッサを含み、これらのすべてのプロセッサは、一つの共通のシステムメモリを共有する一方で、各プロセッサは、命令を実行するためのローカルメモリを内部に有する。マルチプロセッサシステムは、外部インターフェースをもち、たとえば、他のプロセッシングシステムや外部デバイスと接続して、データやリソースの共有ができるように構成されることもある。この構成は機能性、処理能力などの点で非常に有益であるが、そのようなシステムを設計すると、ある状況のもとでは消費電力の問題がさらに悪化することがある。消費電力量は、使用されるプロセッサの数だけでなく、動作しているプロセッサの速度や周波数にも依存する。
電力損失とそれに伴うバッテリー消費は、複数のプロセッサを採用したマルチプロセッサシステムの一つの問題であり、特にプロセッサが4GHz(ギガヘルツ)以上といった高周波数で動作する場合に問題となる。プロセッサの周波数は一般に速い方が望ましいが、消費電力が増加するという好ましくない結果をもたらす。一つには高動作周波数であることが原因で、プロセッサは他のプロセッサを待っている間でも高い電力量を消費してしまう。
そこで他のデバイスを待っているプロセッサが消費する電力を削減することが望ましい。
本発明はこうした課題に鑑みてなされたものであり、その目的は、マルチプロセッサシステムにおいて消費電力を削減することのできる装置および方法を提供することにある。
上記課題を解決するために、本発明のある態様は、マルチプロセッサシステムにおいて待ち状態にあるプロセッサの動作周波数を減らすことで消費電力を削減する方法と装置である。あるプロセッサは、別のプロセッサがロックしたデータを待っているループを実行中は、低周波数モードに入ってもよい。待ち状態のプロセッサ(たとえばSPE2)の動作周波数を、通常の初期クロック周波数の半分や1/4などの分割周波数に減少させてもよい。
待ち状態のプロセッサが待ちループを実行する回数(ループカウント)をモニタし、ループカウントを閾値と比較してもよい。ループカウントが閾値以上であれば、待ち状態のプロセッサのクロック周波数を減らしてもよい。閾値が2であり、待ち状態のプロセッサSPE2が2以上の待ちループを実行した場合、SPE2のクロック周波数はある減少したレベル(たとえば、初期クロック周波数の半分)に設定される。
待ち状態のプロセッサが待つことをやめ、待ちループに分岐しない場合(たとえばSPE1がデータに対するロックを解放し、SPE2がそのデータに対してロックできるようになったとき)、ループカウントはゼロにリセットされ、SPE2の動作周波数は、たとえば初期レベルまで増やされる。これによりマルチプロセッサの電力消費を大幅に減らすことができる。
本発明の別の態様も電力削減方法である。この方法は、待ち状態のプロセッサが待ちループを実行する回数(ループカウント)をモニタリングするステップと、ループカウントを閾値と比較するステップと、ループカウントが閾値以上であるとき、待ち状態にあるプロセッサのクロック周波数を減らすステップと、待ち状態にあるプロセッサが待つことをやめ、待ちループに分岐しなくなると、ループカウントをゼロにリセットするステップと、ループカウントがゼロにリセットされたとき、待ち状態にあったプロセッサの動作周波数を増加させるステップとを含む。動作周波数は増加周波数まで増加させてもよく、その増加のさせ方は徐々に行ってもよい。増加周波数は減少させる前の初期周波数に等しくてもよく、あるいは、初期周波数より小さくても、大きくてもよい。待ち状態のプロセッサを待たせる原因となったデータロックを別のプロセッサが解放するのをモニタするステップと、ループカウントが大きくなるにつれて、待ち状態のプロセッサの動作周波数を徐々に減らすステップとをさらに含んでもよい。
本発明の別の態様は消費電力削減装置である。この装置は、待ち期間モニタと、周波数調整部と、可用性モニタと、制御部とを含む。制御部は、前記待ち期間モニタ、前記周波数調整部、および可用性モニタと通信可能であり、これらのコンポーネントはそれぞれ複数のプロセッサと結合している。ループカウントモニタは、プロセッサが実行する待ちループの回数をカウントし、そのカウントデータを制御部に渡してもよい。制御部は、ループカウントデータを分析してもよい。たとえば、ループカウントを閾値と比較し、分析結果にもとづいて周波数調整部にプロセッサの周波数を上下に調整させてもよい。装置の各コンポーネントは、別々の回路で実装されてもよく、他の回路の機能として実装されてもよく、あるいは、そのような機能を実行する回路をもつシステムのソフトウエアコンポーネントとして実装されてもよい。
本発明は、より好ましくは、セルブロードバンドエンジンアーキテクチャ(CBEA、セルBE、もしくは単にセルと略す)として知られるマルチプロセッサアーキテクチャを用いて実装される。CBEAは、適度の性能をもった軽量の汎用POWERアーキテクチャのコアと、複数のGPUライクな最新の子プロセッシングエレメントとを一つのアーキテクチャに調和させてものであり、高度にメモリ一貫性(コヒーレンス)のあるアーキテクチャである。POWERは、"Performance Optimization With Enhanced RISC"のバクロニム(逆アクロニム)であり、RISC命令セットを指すとともに、命令セットアーキテクチャを実装するマルチプロセッサのシリーズを指している。
CBEAはマルチメディアやベクトル演算処理のアプリケーション、他の専用の計算処理を非常に高速化する。CBEAは、消費電力よりも効率、レイテンシよりはバンド幅、プログラムコードの簡単さよりも計算のピークのスループットを強調するアーキテクチャである。
CBEAは次の4つのコンポーネントに分けることができる。外部入出力構造;POWERプロセッシングエレメント(PPE)と呼ばれるメインプロセッサ(2方向同時マルチスレッドのPOWER970アーキテクチャに準拠するコア);8個のシナジスティック(Synergistic)プロセッシングエレメント(SPE)と呼ばれる完全に機能的なコプロセッサ;およびエレメントインターコネクトバス(EIB)と呼ばれる、PPE、入出力エレメント、およびSPEを結合する高バンド幅の循環データバス。MPEGストリームの復号/符号化、3次元データの生成や変換、データのフーリエ解析などの数学的に重いタスクに必要な高性能を達成するために、CBEAではSPEとPPEをEIBで結合させ、SPEとPPEがメインメモリや他の外部データストレージにアクセスできるようにした。
CBEAでは、ブロードバンドエンジン(BE)は一つ以上のPPEを含んでもよい。PPEは、従来のオペレーティングシステム(OS)を実行することができ、複数のSPEを制御する。PPEは、OSにSPE上でプロセスを開始、終了させたり、OSがSPE上で走るプロセスに割り込んだり、プロセスをスケジューリングすることを可能にする。この目的のため、PPEは複数のSPEの制御に関する命令を追加してもっている。SPEは、チューリング完全なアーキテクチャをもっているにもかかわらず、完全には自律的ではなく、PPEがSPEを起動するまではSPEは何も有益な仕事をすることができない。このシステムの「馬力」のほとんどはSPEから来る。
各SPEはストリーミングプロセッシングユニット(SPU)とシナジスティックメモリフロー(SMF)コントローラユニットを含む。SMFはダイレクトメモリアクセス(DMA)、メモリマネジメントユニット(MMU)およびバスインターフェースを含んでもよい。SPEは、シングルおよびダブル精度の命令に対する、128ビットのシングルインストラクション・マルチプルデータ(SIMD)構成のRISCプロセッサである。CBEAの現在の世代では、各SPEは256KiB(キビバイト)の命令およびデータを保持するローカルメモリ(ローカルストアと呼ぶ)をもっている。このローカルストアはPPEから見えており、ソフトウエアで直接アドレッシングすることができる。各SPEは、SRAMなどの4GBまでのローカルストアメモリをサポートしている。ローカルストアは従来のCPUキャッシュのようには動作しない。ローカルストアはソフトウエアから見てトランスペアレントな(透過性がある)ものではなく、また、ロードすべきデータを予測するハードウエア構造をもたないからである。
例示したCBEAマルチプロセッシングシステムは、一つの共通IC内に8個のSPEを備え、製品を実現する上での柔軟性をもたせてもよい。たとえば、CBEAが製造されたとき、複数のSPEの一つが不良である可能性があり、IC全体性能が落ちるかもしれない。その場合、ICそのものを廃棄するのではなく、性能が低減したマルチプロセッシングシステムを、SPEのフルセットを必要としないアプリケーション(たとえば製品)に用いることができる。たとえば、高性能のビデオゲーム製品はSPEのフルセットを必要とする。しかし、デジタルテレビジョン(DTV)はSPEのフルセットを必要としないこともあろう。不良SPEを使用不能にしたマルチプロセッシングシステムをあまり性能が要求されない環境(たとえばDTV)に使用することにすれば、マルチプロセッシングシステムが使われるアプリケーションの複雑度に応じて、少ない数のSPEであっても活用することができる。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、マルチプロセッサシステムにおいて消費電力を削減することができる。
図1は、本発明の特徴を実現するのに適したプロセッシングシステム100の構成図である。説明を簡潔かつ明確にするため、図1のブロック図は、装置を例示するものとして参照し、説明するが、同じ説明は方法発明のいろいろな態様にも等しく適用可能である。
プロセッサシステム100は、複数のプロセッサであるプロセッサ110A、110B、110C、110Dを含む。本発明の範囲を逸脱することなく、任意の数のプロセッサを採用することができる。プロセッサシステム100はメモリインターフェース回路140と共有メモリ160を含む。複数のプロセッサ110A、110B、110C、110D、およびメモリインターフェース回路140は、好ましくは、適切なプロトコルにしたがって各構成要素間でデータを転送する機能をもつバスシステム150を介してお互いに接続される。
各プロセッサ110A、110B、110C、110Dの構成は同一であってもよいし、異なってもよい。これらのプロセッサは、共有メモリ(システムメモリ)160からデータを要求し、そのデータを操作して所望の結果を得ることができる既知の技術を用いて実装されてもよい。たとえば、プロセッサ110A、110B、110C、110Dは、ソフトウエアまたはファームウエア、あるいはその両方を実行可能な既存のマイクロプロセッサ、たとえば、標準マイクロプロセッサや分散マイクロプロセッサなどを用いて実装されてもよい。一例として、これらのプロセッサの少なくとも一つは、ピクセルデータなどのデータを要求し操作することができるグラフィックスプロセッサであってもよい。そのピクセルデータには、グレースケール情報、カラー情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報などが含まれる。
プロセッサシステム100のプロセッサ110A、110B、110C、110Dの内、一つ以上のプロセッサが、メインプロセッサ(管理プロセッサ)120の役割を担ってもよい。プロセッサシステム100において、メインプロセッサ120(たとえばプロセッサ110A)が機能的に他のプロセッサ110B、110C、110Dと接続されており、バスシステム150を介して共有メモリ160と接続可能であるとする。メインプロセッサ120は、他のプロセッサ110B、110C、110Dによるデータ処理をスケジューリングし、取りまとめる。他のプロセッサ110B、110C、110Dとは違い、メインプロセッサ120はハードウエアキャッシュメモリと結合している。このハードウエアキャッシュメモリは、共有メモリ160および各プロセッサ110A、110B、110C、110Dのローカルメモリの少なくとも一つから取得したデータをキャッシュする機能をもつ。メインプロセッサ120は、DMA技術などの既存の技術を用いて、バスシステム150を介してシステムメモリ160からデータ(プログラムデータを含んでもよい)をコピーし、プログラムの実行とデータ操作のためにキャッシュメモリに格納するためのデータアクセスリクエストを供給する。
メモリインターフェース回路140は、プロセッサ110A、110B、110C、110Dと共有メモリ160の間でデータ転送を実行する機能をもっており、これにより、これらのプロセッサ110はアプリケーションプログラムなどを実行することができる。一例として、メモリインターフェース回路140は、共有メモリ160につながる一以上の広帯域チャネル170を提供し、バスシステム150に対してはスレーブとして機能する。既知のメモリインターフェース技術をメモリインターフェース回路140の実装のために用いることができる。
システムメモリ160は、メモリインターフェース回路140を介してプロセッサ110A、110B、110C、110Dに結合されたダイナミックランダムアクセスメモリ(DRAM)である。システムメモリ160は、ダイナミックランダムアクセスメモリであることが好ましいが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
プロセッサについて再度いえば、各プロセッサ110A、110B、110C、110Dは、プロセッサコア112(たとえば112A〜D)と、プログラムを格納して実行するためのローカルメモリ114(たとえば114A〜D)を含む。これらの構成要素は、共通の半導体基板上に一体化して設けてもよく、あるいは、設計者の意図により別々に設けてもよい。プロセッサコア112は、パイプライン処理を用いて実装されるのが好ましい。パイプライン処理においては、パイプライン方式で論理命令が処理される。パイプラインは、命令が処理される任意の数のステージに分割することができるが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を発行するステージ、その命令を実行するステージを有する。このため、プロセッサコア112には、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行回路が含まれる。
ローカルメモリ114はバスを介してプロセッサコア112に結合しており、好ましくは、プロセッサコア112と同一チップ(同一の半導体基板)上に設けられる。ローカルメモリ114は、従来のハードウェアキャッシュメモリではなく、ローカルメモリ114内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。チップの実装面積はしばしば限られているので、ローカルメモリ114のサイズは、共有メモリ160のサイズよりもずっと小さい。
プロセッサ112は、好ましくは、プログラムを実行し、データを操作するために、バスシステム150を介してシステムメモリ160からそれぞれのローカルメモリ114にデータ(プログラムデータを含んでもよい)をコピーするためのデータアクセスリクエストを供給する。データアクセスを実現するメカニズムは、たとえば、ダイレクトメモリアクセス(DMA)技術などの既知の技術を用いて実装することができる。
図2は、同期動作を簡単化して概念的に説明する図である。図2の例において、マルチプロセッサシステムの一つのプロセッサ(たとえば、SPE1)が、ある所定時間の間、他のプロセッサ(たとえば、SPE2)によって変更されないように、データをロックしなければならないとする。たとえば、SPE1は、そのデータに対して一続きのステップを実行するか、そのデータを変更することなく一続きのステップを実行する必要があるとする。そこで、SPE1は、メモリもしくは専用レジスタにおいてそのデータが記憶されている場所に関連づけてロック値を設定する。SPE1が当該データに対してロックをかけることにより、SPE2は当該データにアクセスできなくなる。SPE2が同期動作している場合、SPE2は別のタスクに移行する前に、ロックされたデータを操作しなければならない。
SPE2は、ループしながらロック値をロードし、ロック値を比較し、当該データに対するロック値が、まだSPE2は当該データに対してロックをかけることができないことを示している限り、次の待ち(ウエイト)ループに分岐する。待ち期間は一般に、かなりの数のクロックサイクルになる。このように、SPE2が4ギガヘルツ(GHz)で動作すると、待ちループの間、意味のある値を何も付け加えることなく、相当量の電力をバッテリーから引き出して使ってしまうことになる。
図3は、実施の形態に係る電力消費削減ツール200の構造を示すブロック図である。電力消費削減ツール200は、4つの主要なコンポーネント210、すなわち、ループカウントモニタ212、周波数調整部214、可用性モニタ216、および制御部218を含む。これらのコンポーネントは何らかのデバイスもしくは手段である。ループカウントモニタ212、周波数調整部214、および可用性モニタ216は、制御部218に接続されており、また、バス150やチャネル170を介して、システム100の複数のプロセッサ110にも接続されている。
ここでは装置として記載したが、ツール200は、必要な計測と処理機能を実行するハードウエアとソフトウエアの任意の適当な組み合わせによって構成されてもよい。ツール200の各コンポーネント210は、個別の回路として実現されてもよく、他の回路の機能要素として実現されてもよく、機能要素を実行するための回路をもつシステム100のソフトウエアコンポーネントとして実現されてもよい。たとえば、ツール200は、既存の診断デバイスもしくは手段を実施の形態に係る方法を実行するように変形してものであってもよい。
たとえば、制御部218は、シングルプロセッサ構造もしくは、図1に例示したプロセッシングシステム100のようなマルチプロセッサ構造であってもよい。複数のツールコンポーネント210間の相互接続を実現するために、プロセッシングシステム100には外部インタフェース回路(図示せず)が設けられてもよい。この外部インタフェース回路は、外部バス150や通信チャネル170を介して、たとえば、システム100と一つ以上のコンポーネント210の間でデータ転送するために用いられる。好適には、外部インタフェース回路は、外部デバイスとの間で非コヒーレントな(データ一貫性のない)トラフィックをやりとりしたり、バスシステム150を他のプロセッシングシステムにも拡張することによってコヒーレントな動作をするために用いられる。
図4は、実施の形態に係る同期動作を簡単化して概念的に説明する図である。この同期動作には、電力消費削減ツール200が以下に例示する処理を実行することを含んでいる。図4の例において、マルチプロセッサシステムの一つのプロセッサ(たとえば、SPE1)が、ある所定時間の間、他のプロセッサ(たとえば、SPE2)によって変更されないように、データをロックしなければならないとする。たとえば、SPE1は、そのデータに対して一続きのステップを実行するか、そのデータを変更することなく一続きのステップを実行する必要があるとする。そこでSPE1は、メモリもしくは専用レジスタにおいてそのデータが記憶されている場所に関連づけてロック値を設定する。SPE1が当該データに対してロックをかけることにより、SPE2は当該データにアクセスできなくなる。SPE2が同期動作している場合、SPE2は別のタスクに移行する前に、ロックされたデータを操作しなければならない。
SPE2は、ループしながらロック値をロードし、ロック値を比較し、当該データに対するロック値が、まだSPE2は当該データに対してロックをかけることができないことを示している限り、次の待ちループに分岐する。待ち期間は一般に、かなりの数のクロックサイクルになる。このように、SPE2が4ギガヘルツ(GHz)で動作すると、待ちループの間、意味のある値を何も付け加えることなく、相当量の電力をバッテリーから引き出して使ってしまうことになる。しかしながら、本実施の形態によれば、ある閾値を超えるループ回数に達すると、動作周波数SPW2は4ギガヘルツ以下に減らされ、Load(ロード)、Compare(”Cmp.”)(比較)、Branch(分岐)といった命令(インストラクション)がより少ないサイクルで実行されるようになる。
図5は、実施の形態に係る同期動作のアルゴリズムを例示するフロー図である。図5のアルゴリズム400は、図3のツール200のさまざまな態様や、図6で例示するプロセス500がとりうる動作や結果を示したものである。ツール200の各コンポーネント210の機能は、例示したアルゴリズム400に照らして、図6のプロセス500のコンテキストでより詳細に説明される。
図6は、実施の形態に係るプロセス500において実行される動作を例示するフローチャートである。待ちループの間、プロセッサの周波数を削減することによって電力消費を削減するプロセス500は、状況に応じて次のような動作を含む。
ある実施の形態によれば、可用性モニタ216は、データの利用可能性をモニタする(動作510)。データが利用可能である場合、モニタされていたプロセッサのループカウントがゼロのまま保たれるか、ゼロにリセットされる(動作520)。しかしながら、プロセッサ110によってデータがロックされると、そのデータは利用不可能になり、別のプロセッサ110は待たされる。ループカウントモニタ212は、プロセッサ110(たとえば110B)が実行する待ちループのシーケンスをカウントする。当該データがプロセッサ110Bにとって利用可能であるとき、プロセッサ110Bは待ちループを実行せず、ループカウントはゼロにとどまる。当該データがプロセッサ110Bにとって利用可能でないとき、プロセッサ110Bは待ちループを実行し、ループカウントは待ちループの実行の度に一つずつ増加する。
ループカウントモニタ212は、制御部218にループカウントのデータを渡すなどして、ループカウントの分析ができるようにしてもよい。制御部218は、ループカウントを閾値と比較することなどにより、ループカウントのデータを分析する。あるいは、ループカウントモニタ212は、それ自身でループカウントデータを分析し、その結果を制御部218に通知してもよい。
制御部218は、分析結果にもとづいて周波数調整部214にプロセッサ110Bの周波数を設定させる(動作560)。周波数は一定に保ってもよく、状況次第で上げ下げして調整してもよい。たとえば、ループカウントがゼロにリセットされ、閾値よりも小さくなった場合、プロセッサ110Bの動作周波数はプロセッサ110Bの通常の初期周波数に戻される。また、ループカウントが閾値よりも小さい場合、プロセッサ110Bの動作周波数は通常の値に設定される。しかし、ループカウントが閾値以上である場合、プロセッサ110Bの動作周波数は減らされる。さらに、制御部218は、待ち時間が長くなる、すなわち、ループカウントが大きくなるにつれて、動作周波数の減少度合いを次第に大きくしていってもよい。
データが利用可能になったことを受けてループカウントをゼロに保つか、ゼロにリセットする動作520に関して、プロセッサ110Aがロックしていたデータを解放することによって、待ちプロセッサ110Bを待ち状態にした原因がなくなり、当該データが利用可能になる。可用性モニタ216は、データロックが解放されて待ちプロセッサ110Bを待ち状態にした原因がなくなったことを確認すると、この状態を直接、ループカウントモニタ212に通知する。それを受けて、ループカウントモニタ212は、ループカウントをゼロにリセットし、ループカウントを制御部218に通知する。あるいは、可用性モニタ216は、この状態を制御部218に通知してもよい。これを受けて、制御部218はループカウントをゼロにリセットするか、ループカウントモニタ212にループカウントをゼロにリセットするように指示する。ループカウントがゼロにリセットされると、制御部218は、周波数調整部214にプロセッサ110Bの動作周波数を通常の初期レベルにまで増加させるように指示する。ロックが解放されると、待ちプロセッサ110Bは待つことをやめ、待ちループの分岐をしなくなり、それ自身で当該データにロックをかけた上で、再び、そのプロセッサの通常の初期周波数で動作する。
図7は、実施の形態に係る同期動作を例示する図である。図4の上記の例のように、プロセッサSPE1とSPE2が同期して動作しているとする。ロックが存在しない間(サイクル1〜5)、プロセッサSPE2はそのプロセッサの通常の初期周波数で動作し、ループカウントはゼロである。プロセッサSPE1が、他のプロセッサ(たとえばSPE2)によって変更されてはならないデータをロックする。SPE2はそのデータにアクセスすることができなくなる。SPE2は別のタスクに移行する前にロックされたデータを操作しなければならないから、SPE2はループに入り、ループカウントに1を追加する。サイクル7および8で、SPE2はまだ待ちループにあるが、ループカウントは1であり、閾値である2よりも小さいため、SPE2の周波数は変更されない。
このループにおいて、SPE2はロック値をロードし、ロック値を比較し、データに対するロック値は、当該データに対するロックがまだSPE2にとって利用可能ではないことを示していることから、再び待ちループに分岐する(サイクル9)。ループカウントは1だけ増加し、閾値である2に等しくなり、周波数が半分(1/2の割合)に減らされる。待ち期間は一般にはかなりのクロックサイクル数になるが、ここでは説明の便宜上、短くしてある。サイクル10〜17ではループが繰り返され、ループカウントが増加し、周波数は半分に減らされたままである。サイクル18において、データが利用可能になり、SPE2はループに分岐せず、ループカウンタはゼロにリセットされる。ループカウントが閾値よりも小さくなったことから、サイクル18および19では周波数は通常の値に戻る。
初期周波数は処理と環境的な状況に応じて異なることを考えると、周波数は、初期周波数に対してクロック・イネーブル率が1:1であるなら通常であると考えてよい。プロセッサSPE2が最速で最適もしくは推奨される周波数で動作し、通常の状況下で生産的に処理を実行していると思われる限り、その初期周波数は通常であると考えられる。それぞれのプロセッサ110にとって通常であると考えられる周波数は異なることがあるから、SPE1にとって通常の周波数が、SPE2にとって通常の周波数であるとは限らない。同様に、第1の条件集合のもとでSPE1にとって通常である周波数が、第2の条件集合のもとでSPE1にとって通常であるとは限らない。このため、ある選ばれたプロセッサ110の周波数を減らした後、増加させる場合、その選ばれたプロセッサ110が再び動作するレファレンス周波数は、周波数が減らされる前にその選択されたプロセッサ110が動作していた初期周波数にデフォルト設定される。
しかしながら、周波数の増加は同様に段階的に行ってもよく、初期周波数に直ちに戻す必要はない。さらに、もし条件と構成が許すなら、その選択されたプロセッサ110を初期周波数よりも高い周波数で動作させるように、周波数を増加させてもよい。利用可能なバッテリ電力、実行される処理の相対的な重要性、別の待ちプロセッサによって計算されるデータに対する依存性など、省電力についていろいろなことを考慮するなら、周波数を段階的に増加させることが正当化されるであろう。たとえば、もしプロセッサ110Bがプロセッサ110Aを待ち、プロセッサ110Dがプロセッサ110Cを待ち、プロセッサ110Bの結果がプロセッサ110Dで使われることになっているとする。このとき、たとえプロセッサ110Bが待つのをやめたとしても、プロセッサDがまだ待ち状態であり、プロセッサ110Bからの結果を受け取る準備ができていないなら、プロセッサ110Bの周波数をフルに増加させても実益がないであろう。
本発明をいろいろな好適な実施の形態を参照しながら説明した。本発明は、待ちプロセッサの待ち時間を調べる別の手段を用いて実装することもできることは当業者にとって明らかなところである。広く言えば、本発明は待ち期間の長さを決定するためにループカウントを使用することは必ずしも必要ではない。任意の適切な手段、たとえば、遅延時間や特定データが利用不可能である期間を代わりに用いてもよい。ループカウントモニタは、より広く言えば、待ち期間を計測し、待ち期間データをトラッキングする機能をもつ待ち期間モニタに置き換えてもよい。一般に、本発明は、データが利用可能になるのを待っている待ちプロセッサに関連する待ちデータを追跡するステップと、待ちデータの分析結果を生成するために待ちデータを分析するステップと、待ちデータの分析結果に照らして待ちプロセッサの周波数を決定するステップとを含んでもよい。
たとえば、可用性モニタ216はデータの利用可能性をトラッキングしてもよい。データブロックに対してロックがかけられた場合、そのロックは可用性モニタ216に登録される。どんなデータリクエストも可用性モニタ216にて照合され、要求するデータが利用可能であるかどうかが調べられる。もし要求しているデータが利用可能でないなら、当該データが利用可能になるまで当該データを要求するプロセッサの周波数は減らされる。当該データが利用可能になった時点で、可用性モニタ216は待ちプロセッサに通知し、待ちプロセッサの周波数は通常の値に戻される。
実施の形態によれば、マルチプロセッサシステム100は、ゲームシステム、ホームターミナル、PCシステム、サーバシステム、ワークステーションのようなメディア・リッチなアプリケーションをスタンドアロン型または分散型、あるいはその両方で処理する機能をもつシングルチップソリューションとして実装することができる。例えば、ゲームシステムやホームターミナルのようなアプリケーションの場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワーク型の画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能処理などは、ユーザにリアルタイムの感覚を体験させるために十分な速さで実行されなければならない。したがって、マルチプロセッサシステム100における各プロセッサは、短く、かつ予測可能な時間内でタスクを完了しなければならない。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステム100のすべてのプロセッサは、共通のコンピュータモジュール(セルともいう)から構成される。この共通のコンピュータモジュールは、一貫性のある構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッシングコンピュータシステム100は、クライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、電気機器、デジタルテレビ、あるいは複数のコンピュータプロセッサを用いたその他のデバイスとして構成することができる。
複数のコンピュータシステム100が一つのネットワークを構成するメンバであってもよい。一貫性のあるモジュール構造により、マルチプロセッシングコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータを高速に伝送することができる。またこの構造により、様々なサイズと処理能力をもつネットワークの構成メンバを構築し、これらのメンバによって処理されるアプリケーションを準備することが容易になる。
マルチプロセッサシステムのための好ましいコンピュータアーキテクチャであって、ここで議論した技術的特徴を実現するためにふさわしい構成を図8〜図10を参照して説明する。
図8は、基本的な処理モジュールであるブロードバンドエンジン(BE)1000を示す。BE1000は、I/Oインターフェース1300、POWERプロセッシングエレメント(PPE)1200、および複数のシナジスティックプロセッシングエレメント(SPE)1100(すなわち、SPE1100A、1100B、1100C、1100D)を含む。ローカル(すなわち内部)BEバス1500は、PPE1200、複数のSPE1100、およびメモリインターフェース1400の間でデータおよびアプリケーションを伝送する。ローカルBEバス1500は、たとえば、従来のアーキテクチャであってもよいが、パケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装すると、より多くのハードウェアが必要になるが、利用可能な帯域が広がる。
BE1000はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、BE1000はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。BE1000はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
BE1000は、広帯域メモリコネクション1700を介して共有メモリ(あるいはメインメモリ)1600に密接に結合している。このメモリ1600は好適にはダイナミックランダムアクセスメモリ(DRAM)であるが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PPE1200および複数のSPE1100は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と結合していることが望ましい。MFCは、メモリインターフェース1400と協働して、DRAM1600と、BE1000の複数のSPE1100、PPE1200との間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインターフェース1400は、複数のSPE1100やPPE1200と一体化してもよく、それらとは別に設置してもよい。実際、DMACの機能および/またはメモリインターフェース1400の機能は、1つ以上(好ましくはすべて)のSPE1100やPPE1200に統合することもできる。ここで、DRAM1600もまた、BE1000と一体化してもよく、BE1000とは別に設置してもよい。例えば、DRAM1600は図に示すようにチップ外部に設けてもよく、集積方式でチップに内蔵してもよい。
PPE1200は、例えばスタンドアロン式のデータ処理およびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PPE1200は、複数のSPEによるデータおよびアプリケーションの処理をスケジューリングし、取りまとめる。SPEは、好適には、一命令複数データ(SIMD)プロセッサである。PPE1200の制御下で、複数のSPEはデータおよびアプリケーションの処理を並列に、かつ独立して行う。PPE1200としては、RISC(Reduced Instruction-Set Computing)技術を採用したマイクロプロセッサアーキテクチャであるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによってより複雑な命令を実行する。このように、プロセッサのタイミングは、より簡単でより速いオペレーションに基づくものとなり、マイクロプロセッサが所与のクロック速度に対してより多くの命令を実行することができるようになる。
ここで、PPE1200は、複数のSPE1100のうちの一つが、残りのSPE1100によるデータとアプリケーションの処理をスケジューリングして統括するメインプロセッシングユニットの役割を果たすことによって実装されてもよい。さらに、BE1000内において、複数のPPEを実装してもよい。
このモジュール構造によれば、ある特定のコンピュータシステムで使用されるBE1000の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは四つのBE1000、ワークステーションは二つのBE1000、PDAは一つのBE1000を用いるなどである。ある特定のソフトウェアセルを処理するために割り当てられるBE1000内のSPE1100の数は、当該プログラムとセル内のデータの複雑さと規模に依存する。
図9は、SPE1100の好適な構造を示す図である。SPE1100のアーキテクチャは、汎用プロセッサ(幅広いアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)の間を埋めるものであることが望ましい。SPE1100は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。SPE1100の機能には、グラフィックジオメトリパイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化/復号、デバイスドライバ拡張、モデリング、ゲーム物理、コンテンツ制作、音声合成および音声処理などが含まれる。
SPE1100は、二つの基本機能ユニット、すなわちストリーミングプロセッシングユニット(SPU)1120とメモリフローコントローラ(MFC)1140を有する。SPU1120は、プログラムの実行、データの操作などを担うものであり、一方、MFC1140は、SPU1120と当該システムのDRAM1600の間のデータ転送に関する機能を担うものである。
SPU1120は、ローカルメモリ1121と、命令(インストラクション)ユニット(IU)1122と、レジスタ1123と、一つ以上の浮動小数点実行ステージ1124と、一つ以上の固定小数点実行ステージ1125とを有する。ローカルメモリ1121は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPU1120は、キャッシュではなく、比較的小さいローカルメモリ1121を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマにとって、メモリアクセスのレイテンシを一貫性があって予測可能なものとするために、SPE1100内にキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス特性は、数サイクルから数百サイクルの範囲でばらつきのある、不規則なメモリアクセス回数を生じさせる。このような不規則性は、たとえばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げてしまう。ローカルメモリSRAM1121においてデータ演算にDMA転送をオーバーラップさせることで、レイテンシを隠すことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドは、キャッシュミスに対処するためのレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きくかつ十分予測可能である場合(たとえばデータが必要となる前にDMAコマンドを発行することができる場合)に、有利である。
複数のSPE1100のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、そのSPUと関連づけられたローカルメモリ1121を参照する。一方、ローカルメモリ1121の各位置にはシステム全体のメモリマップ内の実アドレス(RA;Real Address)が付与されている。これにより、特権レベルのソフトウェアがローカルメモリ1121をあるプロセスの実効アドレス(EA;Effective Address)にマッピングすることが可能となり、あるローカルメモリ1121と別のローカルメモリ1121の間のDMA転送が容易になる。PPE1200は、実効アドレスを用いてローカルメモリ1121に直接アクセスすることもできる。ローカルメモリ1121は、256キロバイトの容量を有し、レジスタ1123の容量は128×128ビットであることが望ましい。
SPU1120は、演算パイプラインを用いて実装されることが望ましく、その演算パイプラインにおいて論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット1122は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ1121と結合したレジスタであって、命令がフェッチされたときにこれらの命令を一時的に格納することができるレジスタを複数有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるサイズであることが好ましい。
通常、デコード回路は命令を細分化し、その命令の機能を実行する論理的なマイクロオペレーションを発生させる。例えば、論理的なマイクロオペレーションは、算術オペレーションと論理オペレーションの指定、ローカルメモリ1121に対するロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値(immediate)データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、そのリソースが必要となる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
依存性チェック回路は、与えられた命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのテストを行うデジタルロジックを含む。他の命令と依存する場合、その与えられた命令は、(例えば、依存関係にある他の命令の実行が完了するのを許すなどして)、他のオペランドが更新されるまで実行されてはならない。依存性チェック回路は、デコード回路から同時に送信されてきた複数の命令の依存関係を判定することが好ましい。
命令発行回路は、浮動小数点実行ステージ1124および/または固定小数点実行ステージ1125に命令を発行することができる。
レジスタ1123は、128エントリのレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これにより、レジスタが枯渇するのを回避するためにレジスタのリネーム処理を行う必要がなくなるため、パイプラインを深くした高い周波数での実装が可能となる。リネーム処理のハードウェアは、一般的にプロセッシングシステムにおいて大きな実装面積を要し、また電力も消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシを補償することができる場合には、オペレーションを有利に実行することができる。
SPU1120は、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPU1120は、命令バッファから同時にディスパッチされる命令の数として、例えば2と3の間の数(クロックサイクル毎に2つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じて、浮動小数点実行ステージ1124と固定小数点実行ステージ1125の数を増減してもよい。好適な実施の形態では、浮動小数点実行ステージ1124は毎秒32ギガ浮動小数点オペレーション(32GFLOPS)で動作し、固定小数点実行ステージ1125は毎秒32ギガオペレーション(32GOPS)で動作する。
MFC1140は、ダイレクトメモリアクセスコントローラ(DMAC)1141と、メモリマネジメントユニット(MMU)1142と、バスインターフェースユニット(BIU)1143とを有することが望ましい。低電力消費の設計目的を達成するために、MFC1140は、DMAC1141を除いて、SPU1120およびバス1500の半分の周波数(半分のスピード)で動作することが好ましい。MFC1140は、バス1500からSPE1100に入るデータと命令を操作する機能を有し、DMACのためにアドレス変換を実行し、データ一貫性のためにスヌープオペレーションを実行する。BIU1143は、バス1500とMMU1142とDMAC1141の間のインターフェースを提供する。このように、SPE1100(SPU1120とMFC1140を含む)とDMAC1141は、物理的および/または論理的にバス1500と接続されている。
MMU1142は、メモリアクセスのために(DMAコマンドから取得される)実効アドレスを実アドレスへ変換する機能をもつことが望ましい。例えば、MMU1142は、実効アドレスの上位ビットを実アドレスのビットに変換する。一方、下位のアドレスビットについては、変換できないようにしておき、実アドレスを形成しメモリにアクセスを要求するために物理的にも論理的にも用いられるようにすることが好ましい。具体的には、MMU1142は、64ビットのメモリ管理モデルにもとづいて実装され、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264バイトの実効アドレス空間を提供してもよい。MMU1142は、DMAコマンドのために、265バイトまでの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU1142のハードウェアは、8エントリの完全連想SLB、256エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC1141は、SPU1120からのDMAコマンドと、PPE1200および/または他のSPUのような他のデバイスからのDMAコマンドとを管理する機能をもつことが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ1121から共有メモリ1600へデータを移動させるPutコマンド、共有メモリ1600からローカルメモリ1121へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、シグナルコマンド、および専用のバリアコマンドを含むものであってもよい。DMAコマンドに応じて、MMU1142は実効アドレスを実アドレスに変換し、この実アドレスはBIU1143に転送される。
SPU1120はチャネルインターフェースとデータインターフェースとを用いて、DMAC1141内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPU1120は、チャネルインターフェースを介してDMAコマンドをDMAC1141内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC1141内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャネルインターフェースを介して、一つの完了信号がSPU1120に返送される。
図10は、PPE1200の好ましい構造と機能を示す図である。PPE1200は、二つの基本機能ユニット、すなわちPPEコア1220とメモリフローコントローラ(MFC)1240を有する。PPEコア1220は、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC1240は、PPEコア1220と当該システム100のメモリ空間の間のデータ転送に関連する機能を担うものである。
PPEコア1220は、L1キャッシュ1221と、命令ユニット1222と、レジスタ1223と、少なくとも一つの浮動小数点実行ステージ1224と、少なくとも一つの固定小数点実行ステージ1225とを有する。L1キャッシュ1221は、MFC1140を通じて共有メモリ1600、プロセッサ1100、あるいはメモリ空間の他の部分から受け取ったデータのキャッシング機能を提供する。PPEコア1220はスーパーパイプラインとして実装されることが好ましいため、命令ユニット1222は、フェッチ、デコード、依存関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PPEコア1220は、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット1222から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ1224と固定小数点実行ステージ1225は、パイプライン構成において複数のステージを有する。必要とされる処理能力に応じて、浮動小数点実行ステージ1224と固定小数点実行ステージ1225の数を増減してもよい。
MFC1240は、バスインターフェースユニット(BIU)1241と、L2キャッシュ1242と、キャッシュ不可ユニット(NCU;Non-Cacheable Unit)1243と、コアインターフェースユニット(CIU)1244と、メモリマネジメントユニット(MMU)1245とを有する。低電力消費の設計目的を達成するために、MFC1240のほとんどの部分は、PPEコア1220とバス1500の半分の周波数(半分のスピード)で動作することが好ましい。
BIU1241は、バス1500と、L2キャッシュ1242と、NCU1243のロジックブロックとの間のインターフェースを提供する。BIU1241は、完全に一貫性のあるメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス1500上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU1241は、L2キャッシュ1242とNCU1243に代わって、バス1500へのロードリクエストとストアリクエストを発信する。BIU1241は、バス1500へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス1500上のデータオペレーションは、8ビートになるように設計してもよく、したがって、BIU1241は、キャッシュラインが128バイト前後であり、一貫性と同期の粒度が128キロバイトとなるように設計されることが好ましい。
L2キャッシュ1242(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ1242は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ1242は、8ウェイセット・アソシエイティブ・システムであることが好ましい。L2キャッシュ1242は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ1242は、L1キャッシュ1221の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときに状態を復元するときに有用である。この構成によれば、L1キャッシュ1221はより少ないポートでさらに速く動作することが可能になり、また、より速いキャッシュ間転送が可能になる(なぜならリクエストはL2キャッシュ1242まで行って止まることがあるから)。この構成は、キャッシュの一貫性管理をL2キャッシュ1242に任せるメカニズムも提供する。
NCU1243は、CIU1244、L2キャッシュ1242、およびBIU1241と相互作用し、一般には、PPEコア1220とメモリシステム間のキャッシュ不可なオペレーションをキューイングまたはバッファリングする回路として機能する。NCU1243は、PPEコア1220となされるすべてのデータのやりとりの内、L2キャッシュ1242が処理しないもの、たとえば、キャッシュが禁止されたロード/ストア、バリアオペレーション、キャッシュ一貫性オペレーションなどを処理することが好ましい。低電力消費の設計目的を達成するために、NCU1243は、半分のスピードで動作することが好ましい。
CIU1244は、MFC1240とPPEコア1220との境界に設けられ、浮動小数点実行ステージ1224、固定小数点実行ステージ1225、命令ユニット1222、MMU1245から渡され、L2キャッシュ1242とNCU1243へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PPEコア1220とMMU1245はフルスピードで動作し、L2キャッシュ1242とNCU1243は2:1のスピード比で動作可能であることが好ましい。このようにCIU1244において周波数境界が存在し、CIU1244の機能の一つは、二つの周波数領域間でリクエストを転送し、データをリロードする際に、周波数の交錯を適切に操作することである。
CIU1244は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU1244により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU1244は、下記の動作を実行可能であることが好ましい:(i)PPEコア1220とMMU1245からロードリクエストとストアリクエストを受け取る、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストをL2キャッシュ1242へルーティングし、キャッシュ不可のリクエストをNCU1243へルーティングする、(iv)L2キャッシュ1242に対するリクエストとNCU1243に対するリクエストが均等になるように調整する、(v)リクエストが目標ウインドウ内で受け取られ、オーバーフローが発生しないように、L2キャッシュ1242とNCU1243へディスパッチされるリクエストのフロー制御を提供する、(vi)ロードリターンデータを受け取り、そのデータを浮動小数点実行ステージ1224、固定小数点実行ステージ1225、命令ユニット1222、またはMMU1245へルーティングする、(vii)スヌープリクエストを浮動小数点実行ステージ1224、固定小数点実行ステージ1225、命令ユニット1222、またはMMU1245へ渡す、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU1245は、たとえば、第2レベルのアドレス変換機構を用いて、PPEコア1220のためにアドレス変換を提供することが好ましい。変換の第1レベルは、PPEコア1220内において、セパレート命令と、MMU1245より遥かに小さくてかつ速いデータERAT(実効アドレスから実アドレスへの変換;Effective to Real Address Translation)アレイとにより提供されることが好ましい。
PPE1200は64ビットで実装され、4〜6GHz、10FO4(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(もっとも特定用途のレジスタには64ビットより小さいものがあってもよいが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット1222、レジスタ1223、および浮動小数点実行ステージ1224と固定小数点実行ステージ1225は、RISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、基本処理モジュールであるプロセッサエレメントはモジュラー構造をもち、プロセッサエレメント内に任意の数のサブプロセッシングユニットを設けることができる。プロセッサエレメントが搭載されるPC、サーバ、携帯機器、ゲーム機、家電製品などの各種情報機器に要求される処理性能に応じて、サブプロセッシングユニットの数を設計すればよい。また、情報機器には1つ以上のプロセッサエレメントを設けてもよく、プロセッサエレメントの数は、当該情報機器に要求される処理性能に応じて適宜選択することができる。さらにプロセッサエレメントを搭載したノードがネットワークを介して接続されてなる分散処理システムを構成してもよく、当該分散処理システムに要求される処理性能に応じて、各ノードに搭載されるプロセッサエレメントの数やプロセッサエレメント内のサブプロセッシングユニットの数を設計してもよい。プロセッサエレメントがモジュラー構造をもつことから、要求性能に応じてプロセッサエレメント内のサブプロセッシングユニットの数やプロセッサエレメントの数を任意に選択して実装することができ、システムに柔軟性や拡張性をもたせることができる。
本発明の少なくとも1つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウェアを用いて実現することができる。そのようなハードウェアは、標準的なデジタル回路、ソフトウェアおよび/またはファームウェアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ(PROM)やプログラマブル・アレイ・ロジック・デバイス(PAL)のような1つ以上のプログラマブルなデジタルデバイス/システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装されたり、1つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウェアおよび/またはファームウェアプログラムにより実装されてもよく、それらのプログラムは、運送や配布の便宜のため、好適な記録媒体もしくはフロッピーディスク(商標または登録商標)、メモリチップなどのメディアに格納されてもよい。
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の原理と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
100 プロセッシングシステム、 110 プロセッサ、 114 ローカルメモリ、 160 共有メモリ、 200 電力消費削減ツール、 212 ループカウントモニタ、 214 周波数調整部、 216 可用性モニタ、 218 制御部。
Claims (22)
- 第1周波数で動作する第1プロセッサと、第2周波数で動作する第2プロセッサとを含むプロセッシングシステムの消費電力を削減する方法であって、
前記第1プロセッサがロックしたデータが利用可能になるのを前記第2プロセッサが待っている待ち期間において、前記第2プロセッサが動作する前記第2周波数を第2初期周波数から第2減少周波数にまで減らすステップを含むことを特徴とする消費電力削減方法。 - 当該データが利用可能になるのを待っている間、前記第2プロセッサが実行する待ちループの回数を、待ちループを1回実行する度にループカウントを1つずつ増加させることにより、カウントするステップと、
前記ループカウントを閾値と比較するステップと、前記ループカウントが閾値以上になると、前記第2プロセッサが動作する前記第2周波数を減らすステップとをさらに含むことを特徴とする請求項1に記載の消費電力削減方法。 - 前記第2プロセッサが待ちループを実行していない間は、前記ループカウントをゼロに保つステップと、前記ループカウントがゼロである場合、前記第2プロセッサが動作する前記第2周波数を前記第2初期周波数に保つステップとをさらに含むことを特徴とする請求項2に記載の消費電力削減方法。
- 前記第2プロセッサが待ちループに分岐しないために待ちループのシーケンスが終了するときは、前記ループカウントをゼロにリセットするステップと、前記ループカウントがゼロにリセットされた場合、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から第2増加周波数にまで増やすステップとをさらに含み、
前記第2増加周波数は前記第2減少周波数よりも大きく、前記第2初期周波数以下であることを特徴とする請求項2に記載の消費電力削減方法。 - 当該データの利用可能性をモニタするステップと、
前記第2プロセッサを待たせる原因となった当該データに対するロックを前記第1プロセッサがいつ解放するかを特定するステップと、前記第1プロセッサが当該データに対するロックを解放したとき、前記第2プロセッサは待ちループに分岐させないステップとを含むことを特徴とする請求項4に記載の消費電力削減方法。 - データが利用可能になるのを待っている前記第2プロセッサに関連する待ち対象データを探知するステップと、
その待ち対象データを分析して待ち対象データの分析結果を生成するステップと、待ち対象データの分析結果に照らして前記第2プロセッサが動作する前記第2周波数を決定するステップとをさらに含むことを特徴とする請求項1に記載の消費電力削減方法。 - 前記待ち期間が終了するとき、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から第2増加周波数にまで増やすステップをさらに含むことを特徴とする請求項1に記載の消費電力削減方法。
- 前記第2プロセッサが動作する前記第2周波数を増やすステップは、前記待ち期間が終了するとき、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から前記第2初期周波数にまで回復させるステップを含むことを特徴とする請求項7に記載の消費電力削減方法。
- 前記第2プロセッサが動作する前記第2周波数は徐々に増やされることを特徴とする請求項7に記載の消費電力削減方法。
- 前記第2プロセッサが動作する前記第2周波数は前記待ち期間が長くなるにつれて徐々に減らされることを特徴とする請求項1に記載の消費電力削減方法。
- 待ち期間モニタと、
周波数調整部と、
可用性モニタと、
制御部とを含み、
前記制御部は、前記待ち期間モニタ、前記周波数調整部、および可用性モニタと通信可能であり、前記待ち期間モニタ、前記周波数調整部、および可用性モニタはそれぞれ、第1周波数で動作する第1プロセッサと、第2周波数で動作する第2プロセッサとを含むプロセッシングシステムと接続可能であり、前記待ち期間モニタは、前記第1プロセッサがロックしたデータが利用可能になるのを前記第2プロセッサが待っている待ち期間を測定する機能を有し、
前記可用性モニタは、当該データが利用可能であるかどうかを示す利用可能性ステータスを決定する機能を有し、前記制御部は、前記周波数調整部に対して、前記第2プロセッサが動作する前記第2周波数を第2初期周波数から第2減少周波数にまで減らすように制御する機能を有することを特徴とする消費電力削減装置。 - 前記待ち期間モニタはループカウントモニタを含むことを特徴とする請求項11に記載の消費電力削減装置。
- 前記ループカウントモニタは、当該データが利用可能になるのを待っている間、前記第2プロセッサが実行する待ちループの回数を、待ちループを1回実行する度にループカウントを1つずつ増加させることにより、カウントする機能を有し、
前記制御部は、前記ループカウントを閾値と比較する機能と、前記ループカウントが前記閾値以上になるとき、前記周波数調整部に対して、前記第2プロセッサが動作する前記第2周波数を減らすように制御する機能とを有することを特徴とする請求項12に記載の消費電力削減装置。 - 前記ループカウントモニタは、前記第2プロセッサが待ちループを実行していない間は、前記ループカウントをゼロに保つ機能を有し、前記制御部は、前記ループカウントがゼロである場合、前記第2プロセッサが動作する前記第2周波数を前記第2初期周波数に保つ機能を有することを特徴とする請求項13に記載の消費電力削減装置。
- 前記制御部は、
前記第2プロセッサが待ちループに分岐しないために待ちループのシーケンスが終了するときは、前記ループカウントをゼロにリセットする機能と、
前記ループカウントがゼロにリセットされた場合、前記周波数調整部に対して、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から第2増加周波数にまで増やすように制御する機能とを有し、
前記第2増加周波数は、前記第2減少周波数よりも大きく、前記第2初期周波数以下であることを特徴とする請求項13に記載の消費電力削減装置。 - 前記待ち期間モニタは第1ソフトウエアコンポーネントを含み、
前記周波数調整部は第2ソフトウエアコンポーネントを含み、
前記可用性モニタは第3ソフトウエアコンポーネントを含み、前記制御部は第4ソフトウエアコンポーネントを含むことを特徴とする請求項11に記載の消費電力削減装置。 - 前記第1、第2、第3、および第4ソフトウエアコンポーネントは前記プロセッシングユニット上で実行されることを特徴とする請求項16に記載の消費電力削減装置。
- 前記制御部は、当該データが利用可能になるとき、前記周波数調整部に対して、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から第2増加周波数にまで増やすように制御することを特徴とする請求項11に記載の消費電力削減装置。
- 前記第2プロセッサが動作する前記第2周波数を増やす処理は、前記待ち期間が終了するとき、前記第2プロセッサが動作する前記第2周波数を前記第2減少周波数から前記第2初期周波数にまで回復させる処理を含むことを特徴とする請求項18に記載の消費電力削減装置。
- 前記第2プロセッサが動作する前記第2周波数は徐々に増やされることを特徴とする請求項18に記載の消費電力削減装置。
- 前記第2プロセッサが動作する前記第2周波数は前記待ち期間が長くなるにつれて徐々に減らされることを特徴とする請求項11に記載の消費電力削減装置。
- 第1周波数で動作する第1プロセッサと、第2周波数で動作する第2プロセッサとを含むプロセッシングシステムの消費電力を削減する方法を前記プロセッシングシステムに実行させるプログラムであって、
当該プログラムは、前記プロセッシングシステムに前記第1プロセッサがロックしたデータが利用可能になるのを前記第2プロセッサが待っている待ち期間において、前記第2プロセッサが動作する前記第2周波数を第2初期周波数から第2減少周波数にまで減らす機能を実現させることを特徴とするプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/525,306 US7882379B2 (en) | 2006-09-22 | 2006-09-22 | Power consumption reduction in a multiprocessor system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008077640A true JP2008077640A (ja) | 2008-04-03 |
Family
ID=39226434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007205861A Pending JP2008077640A (ja) | 2006-09-22 | 2007-08-07 | マルチプロセッサシステムにおける消費電力削減方法および装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7882379B2 (ja) |
JP (1) | JP2008077640A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258936A (ja) * | 2008-04-16 | 2009-11-05 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
WO2013073013A1 (ja) * | 2011-11-15 | 2013-05-23 | 富士通株式会社 | 電力制御装置、電子計算機及び電力制御方法 |
US9058173B2 (en) | 2011-10-25 | 2015-06-16 | Fujitsu Limited | Method for controlling a mobile terminal device by calculating a concurrency based on the calculated CPU utilization for a foreground or background operation executed by the device |
JP2015148890A (ja) * | 2014-02-05 | 2015-08-20 | 富士通株式会社 | 情報処理装置、情報処理システム、および情報処理システムの制御方法 |
US11209885B2 (en) | 2016-09-12 | 2021-12-28 | Canon Kabushiki Kaisha | Information processing apparatus, method for controlling the same, and non-transitory computer-readable storage medium |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009543172A (ja) * | 2006-06-27 | 2009-12-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 複数のデータ処理ユニットの電力消費を管理する装置および方法 |
TW200837767A (en) * | 2007-03-09 | 2008-09-16 | Usbest Technology Inc | Data storing device and method capable of reducing power consumption there of |
EP2073119A1 (en) * | 2007-04-09 | 2009-06-24 | Panasonic Corporation | Multiprocessor control unit, its control method, and integrated circuit |
CN101373434B (zh) * | 2007-08-22 | 2012-01-25 | 国际商业机器公司 | 在多处理器系统中快速加载和运行程序映像的方法和系统 |
US20090327656A1 (en) * | 2008-05-16 | 2009-12-31 | Dan Baum | Efficiency-based determination of operational characteristics |
US8261117B2 (en) * | 2008-09-11 | 2012-09-04 | International Business Machines Corporation | Virtualization in a multi-core processor (MCP) |
US8732716B2 (en) | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
JP2010113574A (ja) * | 2008-11-07 | 2010-05-20 | Panasonic Corp | マルチプロセッサにおける資源の排他制御方法、排他制御システムおよびその関連技術 |
US8156275B2 (en) | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
JP2010282585A (ja) * | 2009-06-08 | 2010-12-16 | Fujitsu Ltd | 電力管理回路、電力管理方法及び電力管理プログラム |
KR101840185B1 (ko) * | 2010-03-12 | 2018-03-20 | 가부시키가이샤 한도오따이 에네루기 켄큐쇼 | 회로를 구동하는 방법 및 표시 장치를 구동하는 방법 |
US8605059B2 (en) | 2010-07-02 | 2013-12-10 | Semiconductor Energy Laboratory Co., Ltd. | Input/output device and driving method thereof |
WO2012095982A1 (ja) * | 2011-01-13 | 2012-07-19 | 富士通株式会社 | マルチコアプロセッサシステム、およびスケジューリング方法 |
US9354926B2 (en) | 2011-03-22 | 2016-05-31 | International Business Machines Corporation | Processor management via thread status |
US8819347B2 (en) * | 2011-05-09 | 2014-08-26 | Bae Systems Information And Electronic Systems Integration Inc. | Mailbox data communications |
KR101933741B1 (ko) | 2011-06-09 | 2018-12-28 | 가부시키가이샤 한도오따이 에네루기 켄큐쇼 | 캐시 메모리 및 캐시 메모리의 구동 방법 |
JP6012263B2 (ja) | 2011-06-09 | 2016-10-25 | 株式会社半導体エネルギー研究所 | 半導体記憶装置 |
US9086883B2 (en) * | 2011-06-10 | 2015-07-21 | Qualcomm Incorporated | System and apparatus for consolidated dynamic frequency/voltage control |
US8713262B2 (en) * | 2011-09-02 | 2014-04-29 | Nvidia Corporation | Managing a spinlock indicative of exclusive access to a system resource |
US9135182B2 (en) | 2012-06-01 | 2015-09-15 | Semiconductor Energy Laboratory Co., Ltd. | Central processing unit and driving method thereof |
KR102201963B1 (ko) | 2012-09-24 | 2021-01-11 | 가부시키가이샤 한도오따이 에네루기 켄큐쇼 | 정보 처리 장치의 구동 방법 및 프로그램 |
US9442559B2 (en) | 2013-03-14 | 2016-09-13 | Intel Corporation | Exploiting process variation in a multicore processor |
JP6070321B2 (ja) * | 2013-03-21 | 2017-02-01 | 富士通株式会社 | 携帯情報端末、制御方法、制御プログラム |
KR102189115B1 (ko) | 2013-11-11 | 2020-12-09 | 삼성전자주식회사 | 대칭형 다중 프로세서를 구비한 시스템 온-칩 및 이를 위한 최대 동작 클럭 주파수 결정 방법 |
US10540107B2 (en) * | 2015-01-02 | 2020-01-21 | Reservoir Labs, Inc. | Systems and methods for energy proportional scheduling |
KR102375925B1 (ko) | 2015-08-31 | 2022-03-17 | 삼성전자주식회사 | Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법 |
US10073718B2 (en) | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
US20180314289A1 (en) * | 2017-04-28 | 2018-11-01 | Intel Corporation | Modifying an operating frequency in a processor |
CN114465820A (zh) * | 2022-03-31 | 2022-05-10 | 京东方科技集团股份有限公司 | 数据加密方法、数据加密设备、电子设备、程序及介质 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6006299A (en) * | 1994-03-01 | 1999-12-21 | Intel Corporation | Apparatus and method for caching lock conditions in a multi-processor system |
US6192479B1 (en) * | 1995-01-19 | 2001-02-20 | Texas Instruments Incorporated | Data processing with progressive, adaptive, CPU-driven power management |
JPH08202468A (ja) * | 1995-01-27 | 1996-08-09 | Hitachi Ltd | マルチプロセッサシステム |
US5768550A (en) * | 1995-11-21 | 1998-06-16 | International Business Machines Corporation | Bus interface logic system |
US5774704A (en) * | 1996-07-29 | 1998-06-30 | Silicon Graphics, Inc. | Apparatus and method for dynamic central processing unit clock adjustment |
JPH11143573A (ja) * | 1997-11-10 | 1999-05-28 | Fujitsu Ltd | クロック供給方法及び情報処理装置 |
US6137804A (en) * | 1997-12-02 | 2000-10-24 | International Business Machines Corporation | System and method for automatic retry of transmit, independent of a host processor, after an underrun occurs in a LAN |
US6233690B1 (en) * | 1998-09-17 | 2001-05-15 | Intel Corporation | Mechanism for saving power on long latency stalls |
US6446215B1 (en) * | 1999-08-20 | 2002-09-03 | Advanced Micro Devices, Inc. | Method and apparatus for controlling power management state transitions between devices connected via a clock forwarded interface |
JP2001109729A (ja) * | 1999-10-12 | 2001-04-20 | Nec Corp | マルチプロセッサシステムにおける消費電力制御装置および方法 |
US6684342B1 (en) * | 2000-06-22 | 2004-01-27 | Ubicom, Inc. | Apparatus and method of dynamic and deterministic changes in clock frequency for lower power consumption while maintaining fast interrupt handling |
JP2002215599A (ja) * | 2001-01-18 | 2002-08-02 | Mitsubishi Electric Corp | マルチプロセッサシステムおよびその制御方法 |
CN1818894B (zh) * | 2001-01-31 | 2013-07-31 | 株式会社日立制作所 | 数据处理系统和数据处理器 |
US6990598B2 (en) * | 2001-03-21 | 2006-01-24 | Gallitzin Allegheny Llc | Low power reconfigurable systems and methods |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6874080B2 (en) * | 2001-11-19 | 2005-03-29 | Intel Corporation | Context processing by substantially simultaneously selecting address and instruction of different contexts |
US6978389B2 (en) * | 2001-12-20 | 2005-12-20 | Texas Instruments Incorporated | Variable clocking in an embedded symmetric multiprocessor system |
US7043649B2 (en) * | 2002-11-20 | 2006-05-09 | Portalplayer, Inc. | System clock power management for chips with multiple processing modules |
DE20302484U1 (de) * | 2003-01-23 | 2003-09-04 | Elitegroup Comp Systems Co | Bedienungsfeld zum Einstellen der Betriebsfrequenz eines Computers und zum Anzeigen von Systeminformationen |
US7028197B2 (en) * | 2003-04-22 | 2006-04-11 | Lsi Logic Corporation | System and method for electrical power management in a data processing system using registers to reflect current operating conditions |
US7065614B1 (en) * | 2003-06-20 | 2006-06-20 | Unisys Corporation | System and method for maintaining memory coherency within a multi-processor data processing system |
US7225277B2 (en) * | 2003-09-04 | 2007-05-29 | International Business Machines Corporation | Proxy direct memory access |
GB2414573B (en) * | 2004-05-26 | 2007-08-08 | Advanced Risc Mach Ltd | Control of access to a shared resource in a data processing apparatus |
US7206950B2 (en) * | 2004-06-16 | 2007-04-17 | Matsushita Electric Industrial Co., Ltd. | Processor system, instruction sequence optimization device, and instruction sequence optimization program |
US8316048B2 (en) * | 2004-08-17 | 2012-11-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for managing a data structure for multi-processor access |
US20070294559A1 (en) * | 2004-10-25 | 2007-12-20 | Thomas Kottke | Method and Device for Delaying Access to Data and/or Instructions of a Multiprocessor System |
EP1807763B1 (de) * | 2004-10-25 | 2008-09-24 | Robert Bosch Gmbh | Verfahren und vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem |
US20060206743A1 (en) * | 2005-03-08 | 2006-09-14 | Hui-Huang Chang | Computer system having a clock controller for controlling an operating clock inputted into a no-wait-state microprocessor and method thereof |
US7055614B1 (en) | 2005-03-10 | 2006-06-06 | Victaulic Company | Torque plate for sprinkler head |
US7493525B2 (en) * | 2005-09-21 | 2009-02-17 | Cisco Technology, Inc. | Method and system for managing failure information |
KR100864834B1 (ko) * | 2007-04-30 | 2008-10-23 | 한국전자통신연구원 | 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법 |
-
2006
- 2006-09-22 US US11/525,306 patent/US7882379B2/en active Active
-
2007
- 2007-08-07 JP JP2007205861A patent/JP2008077640A/ja active Pending
-
2010
- 2010-12-21 US US12/974,124 patent/US9058164B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258936A (ja) * | 2008-04-16 | 2009-11-05 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP4548505B2 (ja) * | 2008-04-16 | 2010-09-22 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US9058173B2 (en) | 2011-10-25 | 2015-06-16 | Fujitsu Limited | Method for controlling a mobile terminal device by calculating a concurrency based on the calculated CPU utilization for a foreground or background operation executed by the device |
WO2013073013A1 (ja) * | 2011-11-15 | 2013-05-23 | 富士通株式会社 | 電力制御装置、電子計算機及び電力制御方法 |
JPWO2013073013A1 (ja) * | 2011-11-15 | 2015-04-02 | 富士通株式会社 | 電力制御装置、電子計算機及び電力制御方法 |
US9639905B2 (en) | 2011-11-15 | 2017-05-02 | Fujitsu Limited | Power control apparatus, electronic computer, and power control method |
JP2015148890A (ja) * | 2014-02-05 | 2015-08-20 | 富士通株式会社 | 情報処理装置、情報処理システム、および情報処理システムの制御方法 |
US11209885B2 (en) | 2016-09-12 | 2021-12-28 | Canon Kabushiki Kaisha | Information processing apparatus, method for controlling the same, and non-transitory computer-readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
US9058164B2 (en) | 2015-06-16 |
US7882379B2 (en) | 2011-02-01 |
US20080077815A1 (en) | 2008-03-27 |
US20110087909A1 (en) | 2011-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008077640A (ja) | マルチプロセッサシステムにおける消費電力削減方法および装置 | |
JP4176787B2 (ja) | タスク共有方法およびマルチプロセッサシステム | |
JP4322259B2 (ja) | マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 | |
US7526608B2 (en) | Methods and apparatus for providing a software implemented cache memory | |
JP4451397B2 (ja) | Simdプロセッサスライスの有効/無効の制御のための方法ならびに装置 | |
JP4421561B2 (ja) | ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム | |
JP4346612B2 (ja) | 情報処理方法および装置 | |
US7818724B2 (en) | Methods and apparatus for instruction set emulation | |
US20060259733A1 (en) | Methods and apparatus for resource management in a logically partitioned processing environment | |
JP2006172468A (ja) | システム内部のデータ転送を処理する装置および方法 | |
US7395411B2 (en) | Methods and apparatus for improving processing performance by controlling latch points | |
JP4024271B2 (ja) | マルチプロセッサシステムにおいて命令を処理するための方法と装置 | |
JP4583327B2 (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
US20080103708A1 (en) | Leakage power estimation | |
US20060206732A1 (en) | Methods and apparatus for improving processing performance using instruction dependency check depth |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090407 |