JPWO2002088913A1 - プロセッサの動作速度を制御するための方法および装置 - Google Patents
プロセッサの動作速度を制御するための方法および装置 Download PDFInfo
- Publication number
- JPWO2002088913A1 JPWO2002088913A1 JP2002586147A JP2002586147A JPWO2002088913A1 JP WO2002088913 A1 JPWO2002088913 A1 JP WO2002088913A1 JP 2002586147 A JP2002586147 A JP 2002586147A JP 2002586147 A JP2002586147 A JP 2002586147A JP WO2002088913 A1 JPWO2002088913 A1 JP WO2002088913A1
- Authority
- JP
- Japan
- Prior art keywords
- speed
- operating speed
- operation speed
- executable
- executable module
- 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/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Computer And Data Communications (AREA)
Abstract
本発明は、実行可能モジュールの動作速度を属性情報として持つコードを解析して、実行可能モジュールを動作速度属性情報と関連づけて登録し、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化して、各グループの属性を含むファイル・ヘッダを作成し、このファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、実行可能ファイル内の実行可能モジュール単位で、ロードのアドレス範囲に動作速度属性情報を関連づけ、実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御する。
Description
技術分野
本発明は、一般にプロセッサの消費電力を低減する技術に関し、特にプロセッサのクロック速度を可変にすることによって消費電力を低減する技術に関する。
背景技術
コンピュータ、特にパーソナル・コンピュータは、企業のみならず、家庭や学校にも広く普及している。パーソナル・コンピュータに使用されるマイクロプロセッサの性能向上も著しく、最近では動作クロックが1GHzを超えるものも珍しくない。しかし、動作クロックが高くなってくると、それだけ消費電力や発熱量も増えることになり、それを如何に抑えるかが高速プロセッサの課題となっている。また、ノートブック型コンピュータの場合は、電池駆動がメインのため、デスクトップ型よりも消費電力低減に対する要求が大きい。
以上のようなことから、プロセッサの消費電力および発熱量を低減するために、プロセッサのクロック速度を可変にすることが提案されている。これは、全てのプログラムを同じクロックで走らせる必要はないということに基づくものである。例えば、特開平8−76874号公報には、タスク毎に必要とする中央処理装置の性能情報を設定する一つ以上の性能情報設定回路と、起動中のタスクが必要とする必要最低限の性能で動作するように中央処理装置のクロック周波数を決定する選択情報生成回路と、複数のクロック信号を発生する発信回路と、そのクロック信号の中から一つを選択して中央処理装置へ与えるクロック選択回路とを設けた、中央処理装置のクロック制御装置およびクロック制御方法が開示されている。このクロック制御は、マルチタスクの動作環境において、情報処理装置で動作させるプログラムの性能に応じて、低い性能で済む処理プログラムの実行時には、その要求性能を満足する必要最小限のCPUの動作クロックに自動的に切り替えて消費電力を節約して、タスク実行中でも低消費電力での作動を実現しようとしたものである。
また、米国特許第6138232号明細書(特開平10−228383号公報)には、複数の割込みソースのうちの一つからの割込みを受け付けて、現タスクから優先タスクへ動作を切り替え、割込みを起こした割込みソースに応じてマイクロプロセッサ命令動作レートを設定するようにしたマイクロプロセッサおよびその動作方法が開示されている。それによれば、割込みソースと命令動作レートとの関係を示すレートテーブルが設けられ、割込みを受け付けるたびにアクセスされて、その割込みソースに対応した命令動作レートを与えている。
このように、従来は、実行すべきタスクや処理すべき割込みの種類に応じてプロセッサの動作速度(クロック)を適宜切り替えることにより、消費電力および発熱量の低減を図っていた。
従来の手法は、予め決められたタスクまたは割込みを単位としてクロック速度を切り替えているが、例えば一つのタスクを取ってみても、その中には高速動作が必要なコードと、低速動作が可能なコードが混在していることがあり、そのような場合には、必ずしも最適な動作にはならない。消費電力および発熱量の低減を目指して最適な動作を実現するためには、よりきめの細かい制御、すなわちプログラムの実行アドレス、ひいては実行可能コードを単位とする制御が求められる。
従って本発明の目的は、プロセッサのクロック速度を実行アドレス、ひいては実行可能コード単位で制御することによって、よりきめの細かな電力管理を実現することにある。
本発明の他の目的は、上記のような電力管理を実現するために、プログラム作成時に、プログラムの動作クロックに対する指定ができるようにすることにある。
発明の開示
本発明の第1の態様によれば、各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録するステップと、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成するステップと、前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づけるステップと、実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御するステップとを含む、プロセッサ動作速度制御方法が提供される。
また、本発明の第2の態様によれば、各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録する手段と、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成する手段と、前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づける手段と、実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御する手段とを含む、プロセッサ動作速度制御装置が提供される。
以下、添付図面を参照しながら、本発明の好適な実施形態について詳しく説明するが、それらの実施形態はあくまで例示的なものであって、本発明はそれらに限定されるものではない。
発明を実施するための最良の態様
図1は、本発明に従って動作速度が制御されるプロセッサを組み込んだデータ処理システムのハードウェア構成の一例を示したものである。図示のデータ処理システム100は、ノートブック型またはデスクトップ型のパーソナル・コンピュータを想定しているが、もちろん本発明は、そのようなパーソナル・コンピュータだけでなく、消費電力の低減が要求されるいかなるコンピュータにも適用可能である。
図1のデータ処理システムにおいて、本発明に従って動作クロックが制御されるプロセッサ102、およびメイン・メモリ104はPCIブリッジ108を介してPCIバス106に接続されている。PCIブリッジ108は、プロセッサ102のための統合メモリ・コントローラ/キャッシュ・メモリを含んでいてもよい。PCIバス106には、PCIブリッジ108の他に、LANアダプタ110、SCSIホスト・バス・アダプタ112、拡張バス・インタフェース114、オーディオ・アダプタ116、グラフィックス・アダプタ118、などのコンポーネントも接続可能である。拡張バス・インタフェース114は、キーボード/タッチパッド120、モデム122および追加メモリ124のための接続を提供する。SCSIホスト・バス・アダプタ112は、ハードディスク・ドライブ126およびCD−ROMドライブ128のための接続を提供する。
プロセッサ102で実行されるオペレーティング・システムおよびアプリケーション・プログラムは、例えばハードディスク・ドライブ126に記憶されており、必要に応じてメイン・メモリ104に取り出されて実行される。
次に、図1のようなデータ処理システムにおいて、オペレーティング・システムの制御のもとにアプリケーション・プログラムを実行するときに、本発明に従ってプログラムの実行可能コード単位にプロセッサ102のクロック速度を可変にする手法について、図2〜図12を参照して説明する。
図2は本発明の基本構成を示したもので、実行可能モジュール(関数)の動作速度を属性情報として持つプログラムを記述したソース・コード202と、該コードを解析して、実行可能モジュールを動作速度属性情報と関連づけて登録するコンパイラ204と、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成するリンカ206と、このファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、実行可能ファイル内の実行可能モジュール単位で、対応する動作速度属性情報を所定の動作速度情報格納部に格納するOS管理プログラム208と、実行可能モジュールを実行するときに動作速度情報格納部から対応する動作速度情報を読み出すプログラム実行管理部210と、読み出された動作速度情報に基づいて、実行可能モジュールを実行するプロセッサ102の動作速度を制御するクロック制御部212とを含んでいる。ソース・コード202、コンパイラ204およびリンカ206の実施形態としては、図1で示されるデータ処理システム上で実現される場合と、他のデータ処理システム上で実現される場合(プロセッサ102のアーキテクチャが異なる場合はクロスコンパイル環境の場合)の両方が考えられる。OS管理プログラム208の実施形態は、図1で示されるデータ処理システム上で動作するオペレーティング・システムの一部として実現される。また、プログラム実行管理部210およびクロック制御部212の実施形態は、プロセッサ102の内部機構として実現される。
ソース・コード202の一部の例を図3に示す。図3のソース・コードはC言語で記述されているが、他の言語であってももちろん差し支えない。図3において、“#pragma”はプラグマ・ディレクティブと呼ばれる記述子で、プログラマが対応する関数の属性を指定できるようになっている。図3(A)の例では、FunctionH()は、高速実行用のアドレス領域にロードされ、高速で実行される関数(以下、“高速動作関数”という)として指定され、FunctionL()は、低速実行用のアドレス領域にロードされ、低速で実行される関数(以下、“低速動作関数”という)として指定されている。また、図3(B)に示すように、プラグマ・ディレクティブによる動作速度設定をオーバーライドするプロセッサ命令を使用することもできる。図3(B)の例では、ちゅうそくで実行される関数(以下、“中速動作関数”という)として指定されたFunctionM()が、通常処理の途中で、プロセッサ命令“highclk”により高速クロックに切り替えられ、更に、別のプロセッサ命令“rstclk”により元のクロックに戻されている。これらのプロセッサ命令は、例えばプロセッサ固有ライブラリ関数を提供することによって実行可能となる。
図3に示したようなプラグマ・ディレクティブにより、コードの最適動作クロックに関するプログラマの知見を、最小実行可能モジュール単位でオブジェクト・コードに反映させることができる。なお、図3の例では、高速動作、中速動作および低速動作が全て明示的に指定されているが、特定の速度(例えば、高速)をデフォルトとして、他の速度(例えば、中速および低速)だけを明示的に指定するようにしてもよい。また、速度の種類は、ここでは3種類であるが、プロセッサの能力に応じて、高速および低速の2種類でもよく、あるいは4種類以上でも構わない。
コンパイラ204は、ソース・コード202を解析することにより、図4に示すように、オブジェクト・コードと、プラグマ・ディレクティブで指定された動作速度を属性として含む関数登録テーブルとを作成する。動作速度に関するプラグマ・ディレクティブをコンパイラ204で解析できるようにすることは、当業者であれば容易になし得るであろう。図4の構造は、コンパイラ204が解析した各関数についての情報を登録する関数登録部402、登録された各関数の名前を登録する関数名部404、各関数のクロック速度やコード・サイズなどの属性を登録する関数属性部406、および各関数のオブジェクト・コードを含むオブジェクト・コード部408から成っている。関数登録部402は、登録関数ごとに、名前ポインタ(NamePtr)402A、属性ポインタ(AttrPtr)402B、およびオブジェクト・ポインタ(ObjPtr)402Cを備えている。名前ポインタ402Aおよび属性ポインタ402Bは、関数名部404および関数属性部406中の対応する記憶位置をそれぞれ指定する。
関数登録部402のオブジェクト・ポインタ402Cは、オブジェクト・コード部408における当該関数のオブジェクト・コードの開始アドレスを指定する。図4の例では、オブジェクト・コード部408は、高速動作関数、すなわちFunctionHのオブジェクト・コードを含む領域408Aと、低速動作関数、すなわちFunctionLのオブジェクト・コードを含む領域408Bとを有する。
次に、図3(A)のソース・コードを例にとって、図4の構成を生成するために、コンパイラ204によって実行され登録操作について説明する。コンパイラ204は、最初のプラグマ・ディレクティブ“#pragma(HIGH_SPEED,FunctionH)”を解析して、FunctionHを最初の関数“Function#1”として関数登録部402に登録する。その際、関数名“FunctionH”を関数名部404に登録し、その属性(高速属性、コード・サイズなど)を関数属性部406に登録し、オブジェクト・コードをオブジェクト・コード部408Aに登録すると共に、関数登録部402において、関数名部404への名前ポインタ402A、関数属性部406への属性ポインタ402B、およびオブジェクト・コード部408Aへのオブジェクト・ポインタ402Cをそれぞれ設定する。コンパイラ204は、2番目のプラグマ・ディレクティブ“#pragma(LOW_SPEED,FunctionL)”についても同様な登録操作を行う。引数arg1、arg2・・・を含む関数は、図3では、値を返さないvoid型として指定されているが、もちろん他のデータ型も可能である。
次に、コンパイラ204が作成した図4のようなテーブル構造を基に、オブジェクト・コードを可能な限り同一のブロックに集積するリンカ206について説明する。リンカは、図4のオブジェクト・コード部408に登録されている各関数を動作速度別にグループ化するもので、図5の例では、オブジェクト・コード1に含まれる高速動作関数コード1、FunctionH1、およびオブジェクト・コード2に含まれる高速動作関数コード2、FunctionH2が高速動作関数グループ502にまとめられ、オブジェクト・コード2に含まれる中速動作関数コード1、FunctionM1、が中速動作関数グループ504に入れられ、そしてオブジェクト・コード1に含まれる低速動作関数コード1、FunctionL1、およびオブジェクト・コード2に含まれる低速動作関数コード2、FunctionL2、が低速動作関数グループ506にまとめられる。このように、リンカは、生成されたオブジェクト・コードを同一動作速度のモジュールごとにグループ化することによって、動作速度ごとに分割された実行アドレス範囲のフラグメンテーションを避ける。こうしてできあがった情報に基づいて、リンカは図6に示すようなファイル・ヘッダを作成する。
図6において、ファイル・ヘッダ部602は、グループごとに一つのエントリを有し、各エントリは、対応する関数グループへのオブジェクト・ポインタ602Aと、グループのサイズ情報602Bと、動作速度情報602C(高速クロック、中速クロックまたは低速クロック)とを含んでいる。グループ・オブジェクト・ポインタ602Aは、高速動作関数グループ604、中速動作関数グループ606および低速動作関数グループ608のいずれかの開始アドレスを指定する。
リンカ206がファイル・ヘッダを作成すると、OS管理プログラム208は、ファイル・ヘッダに記述された、各実行可能モジュールおよびその動作速度情報を読み出し、当該モジュールが指定された動作速度で実行できるように、モジュールのロード領域を確保することによってそのアドレスを決定し、且つそのアドレス領域に対応した動作速度情報格納部に動作速度情報を格納する。図7の仮想アドレス変換機構を例にとって、OS管理プログラム208の動作について説明する。
図7の上半分に示されているのは周知の仮想アドレス変換機構であって、ページ・ディレクトリ(またはセグメント・テーブル)702およびページ・テーブル704を使って、仮想(論理)アドレス706を物理アドレス708に変換する。仮想アドレス706は、ページ・ディレクトリ番号D、ページ・テーブル番号Tおよびオフセットから成る。ページ・ディレクトリ番号Dは、ページ・ディレクトリ・ベースアドレス・レジスタ(PDBR)に格納されているベースアドレスに加算されて、特定のページ・ディレクトリ・エントリ(PDE)を選択する。選択されたPDEは、ページ・テーブル704のベースアドレスとして使用され、それにページ・テーブル番号Tが加算されて、特定のページ・テーブル・エントリPTEを選択する。PTEはフレーム(ページ・アドレス)を含んでおり、これが仮想アドレス中のオフセットと連結されて、物理アドレス708を構成する。
図7の下半分は、本発明に従う、仮想アドレス変換機構の改良部分を示している。すなわち、ページ・テーブル704の各エントリに、動作速度情報を示す制御ビットが設けられる。図7の例では、制御ビットは2ビットであり、“11”が高速動作を表し、“10”が中速動作を表し、“01”が低速動作を表している。
OS管理プログラム208は、リンカ206が作成したファイル・ヘッダに記述されている実行可能モジュールおよび対応する動作速度制御情報を読み出し、動作速度が同じ実行可能モジュールを物理アドレス・マップ712の特定のページ領域に割り付けると共に、該ページ領域に対応するページ・テーブル・エントリの動作速度制御ビットを、ファイル・ヘッダから読み出した動作速度制御情報に従って設定する。図7の例では、OS管理プログラム208は、高速動作関数“FunctionH1”および“FunctionH2”を第1のページ領域712Aに割り付け、中速動作関数“FunctionM1”を第2のページ領域712Bに割り付け、低速動作関数“FunctionL1”および“FunctionL2”を第3のページ領域712Cに割り付ける。更に、OS管理プログラム208は、ページ領域712A、712Bおよび712Cに対応するページ・テーブル・エントリの動作速度制御ビットをそれぞれ“11”、“10”および“01”に設定する。これにより、第1のページ領域712Aは高速動作クロック・ページ領域として指定され、第2のページ領域712Bは中速動作クロック・ページ領域として指定され、第3のページ領域712Cは低速動作クロック・ページ領域として指定される。
図7のような仮想アドレス変換機構を持たないプロセッサの場合は、例えば図8に示すように、外部I/Oレジスタまたはプロセッサ内部レジスタとして、複数の実行アドレス範囲および対応する動作速度制御ビットを格納する範囲設定レジスタ802、804および806を設ければよい。高速動作クロック範囲設定レジスタ802は、物理アドレス・マップ808において、高速動作関数がロードされるアドレス領域808Aの開始アドレス“Addr_H”および長さ“Length_H”と、制御ビット“11”を格納し、中速動作クロック範囲設定レジスタ804は、物理アドレス・マップ808において、中速動作関数がロードされるアドレス領域808Bの開始アドレス“Addr_M”および長さ“Length_M”と、制御ビット“10”を格納し、そして低速動作クロック範囲設定レジスタ806は、物理アドレス・マップ808において、低速動作関数がロードされるアドレス領域808Cの開始アドレス“Addr_L”および長さ“Length_L”と、制御ビット“01”を格納する。なお、レジスタ802〜806が高速用、中速用および低速用にそれぞれ固定されている場合は、制御ビットは不要であるが、各レジスタの役割が動的に変わる場合は、動作速度を指定する制御ビットが必要になる。
OS管理プログラム208の更に簡単な例としては、OS管理プログラム208と同等の機能と、実行可能なプログラム部分の機能とが一体化された構造をしており、且つ実行可能コードのアドレス・ラベルを直接参照できるファームウェアのような形態をとることもできる。その場合、当該ファームウェアのOS管理プログラム機能部分が、高速動作コード、中速動作コードおよび低速動作コードを分離するアドレス・ラベルの直接参照によって、図7または図8に示した動作速度情報格納部(制御ビット)に制御情報を格納してもよい。この例では、実行可能プログラムにヘッダ情報は必要ないので、コンパイラ204およびリンカ206による、クロック速度の属性管理の機能は省略できる。
OS管理プログラム208による実行可能ファイルのロードおよび動作速度制御情報の設定が終わると、プログラム実行管理部210は、ロードされた実行可能ファイル内のコードを指定された動作速度で実行するために、実行すべきコードのアドレスに対応する動作速度制御ビットを読み出して、対応するクロック制御信号をクロック制御部212へ供給し、該クロック制御部212により調整された動作速度でコードを実行する。
クロック制御部212へ供給されるクロック制御信号を発生するための回路の一例を図9に示す。図7のページ・テーブル704または図8の範囲設定レジスタ802〜806の一つから読み出された動作速度制御ビット(本実施形態では2ビット)はクロック制御信号デコード回路902に入力される。デコード回路902は受け取った制御ビットをデコードして、高速、中速および低速のクロックにそれぞれ対応する3本の出力線のうちの対応する1本をアクティブにする。クロック制御信号イネーブル回路904は、デコード回路902の出力信号および実行アドレス有効タイミング信号に応答して、対応する高速(H)クロック信号、中速(M)クロック信号、または低速(L)クロック信号を出力する。実行アドレス有効タイミング信号は、プロセッサ202が実行するコードのアドレスがアドレス・バス(図示せず)上で有効であるタイミングを示す。
プロセッサ202が仮想アドレス変換機構を持っている場合は、仮想アドレスによって指定されたページ・テーブル・エントリに含まれる動作速度制御ビットをデコード回路902へ供給すればよいが、仮想アドレス変換機構を持たないプロセッサの場合は、図10に示すようなアドレス比較が必要になる。図10において、実行すべきコードのアドレスがアドレス比較部を構成する3つの比較器1002、1004および1006の第1の入力に供給される。比較器1002の第2の入力は、図8に示した範囲設定レジスタ802から、高速動作クロック・アドレス領域808Aのアドレス範囲を示す開始アドレス“Addr_H”および長さ“Length_H”を受け取り、比較器1004の第2の入力は、範囲設定レジスタ804から、中速動作クロック・アドレス領域808Bのアドレス範囲を示す開始アドレス“Addr_M”および長さ“Length_M”を受け取り、比較器1006の第2の入力は、範囲設定レジスタ806から、低速動作クロック・アドレス領域808Cのアドレス範囲を示す開始アドレス“Addr_L”および長さ“Length_L”を受け取る。実行アドレスがいずれかのアドレス範囲内にあると、そのアドレス範囲に対応する比較器がクロック制御信号イネーブル回路904の対応する入力をアクティブにする。図10は、レジスタ802〜806に制御ビットが格納されていない例を示しているが、前述のように、各レジスタの役割が固定されていない場合は、動作速度を示す制御ビットが必要であり、その場合は、比較器1002〜1006の出力に応じて、対応するレジスタに格納されている制御ビットがクロック制御信号デコード回路902に供給される。デコード回路902は図10には示されていないが、制御ビットを使う場合は当然必要になる。
クロック制御部212は、クロック制御信号イネーブル回路904の出力を受け取って、対応する可変クロック信号を供給するもので、図11に示すような分周器1102で構成することができる。分周器1102は、クロック制御信号イネーブル回路904がHクロック信号を出力した場合は、図示しない発振器からシステム・クロックとして供給される外部ベース・クロック信号をそのまま出力し、Mクロック信号を受け取った場合は、システム・クロックを2分の1に分周して出力し、Lクロック信号を受け取った場合は、システム・クロックを3分の1に分周して出力する。ここで、1、2分の1および3分の1という分周比は例示に過ぎず、他の比率を採用することも可能である。
図11は、プロセッサ命令による動作速度の変更(オーバーライド)がない場合を示しているが、図3(B)のソース・コードのように、途中にオーバーライド命令およびオーバーライドをキャンセルする命令が挿入されていると、それをサポートするための追加回路が必要になる。その一例を図12に示す。追加された回路はオーバーライド信号選択回路1202である。オーバーライド信号選択回路1202は、図11と同様のクロック信号を受け取る入力端子1A、2A、3Aの他に、オーバーライド用のクロック信号を受け取る入力端子1B、2B、3Bを有し、オーバーライド命令が検出されてオーバーライド・イネーブル信号がアクティブになっていると、H、M、Lの各クロック信号の代わりに、オーバーライド命令によって指定されたオーバーライド・クロック信号を出力端子1Y、2Y、3Yから分周器1102に供給する。
以上、本発明の好ましい実施形態について説明してきたが、本発明は上述の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の範囲内で様々な修正、変更、追加が可能であることは言うまでもない。
【図面の簡単な説明】
図1は、本発明に従って動作速度が制御されるプロセッサを組み込んだデータ処理システムのハードウェア構成の一例を示すブロック図である。
図2は、本発明の基本構成を示すブロック図である。
図3は、本発明に従って動作速度を制御するための特殊な記述子を含むソース・コードの一部を示す図である。
図4は、図3のソース・コードをコンパイラが解析した結果を示す図である。
図5は、リンカによるオブジェクト・コードの再配置の様子を示す図である。
図6は、リンカが作成するファイル・ヘッダの一例を示す図である。
図7は、仮想アドレス変換機構を利用した動作速度制御の一例を示すブロック図である。
図8は、仮想アドレス変換機構を持たないプロセッサで動作速度制御を実行するためのレジスタ構成例を示すブロック図である。
図9は、動作速度制御ビットをデコードして、選択されたクロック信号を発生するための回路例を示すブロック図である。
図10は、仮想アドレス変換機構を持たないプロセッサでクロック制御を行うためのアドレス比較を示すブロック図である。
図11は、可変クロック信号を発生するための回路を示すブロック図である。
図12は、図11の可変クロック信号発生回路でクロック・オーバーライド命令をサポートするための回路例を示すブロック図である。
本発明は、一般にプロセッサの消費電力を低減する技術に関し、特にプロセッサのクロック速度を可変にすることによって消費電力を低減する技術に関する。
背景技術
コンピュータ、特にパーソナル・コンピュータは、企業のみならず、家庭や学校にも広く普及している。パーソナル・コンピュータに使用されるマイクロプロセッサの性能向上も著しく、最近では動作クロックが1GHzを超えるものも珍しくない。しかし、動作クロックが高くなってくると、それだけ消費電力や発熱量も増えることになり、それを如何に抑えるかが高速プロセッサの課題となっている。また、ノートブック型コンピュータの場合は、電池駆動がメインのため、デスクトップ型よりも消費電力低減に対する要求が大きい。
以上のようなことから、プロセッサの消費電力および発熱量を低減するために、プロセッサのクロック速度を可変にすることが提案されている。これは、全てのプログラムを同じクロックで走らせる必要はないということに基づくものである。例えば、特開平8−76874号公報には、タスク毎に必要とする中央処理装置の性能情報を設定する一つ以上の性能情報設定回路と、起動中のタスクが必要とする必要最低限の性能で動作するように中央処理装置のクロック周波数を決定する選択情報生成回路と、複数のクロック信号を発生する発信回路と、そのクロック信号の中から一つを選択して中央処理装置へ与えるクロック選択回路とを設けた、中央処理装置のクロック制御装置およびクロック制御方法が開示されている。このクロック制御は、マルチタスクの動作環境において、情報処理装置で動作させるプログラムの性能に応じて、低い性能で済む処理プログラムの実行時には、その要求性能を満足する必要最小限のCPUの動作クロックに自動的に切り替えて消費電力を節約して、タスク実行中でも低消費電力での作動を実現しようとしたものである。
また、米国特許第6138232号明細書(特開平10−228383号公報)には、複数の割込みソースのうちの一つからの割込みを受け付けて、現タスクから優先タスクへ動作を切り替え、割込みを起こした割込みソースに応じてマイクロプロセッサ命令動作レートを設定するようにしたマイクロプロセッサおよびその動作方法が開示されている。それによれば、割込みソースと命令動作レートとの関係を示すレートテーブルが設けられ、割込みを受け付けるたびにアクセスされて、その割込みソースに対応した命令動作レートを与えている。
このように、従来は、実行すべきタスクや処理すべき割込みの種類に応じてプロセッサの動作速度(クロック)を適宜切り替えることにより、消費電力および発熱量の低減を図っていた。
従来の手法は、予め決められたタスクまたは割込みを単位としてクロック速度を切り替えているが、例えば一つのタスクを取ってみても、その中には高速動作が必要なコードと、低速動作が可能なコードが混在していることがあり、そのような場合には、必ずしも最適な動作にはならない。消費電力および発熱量の低減を目指して最適な動作を実現するためには、よりきめの細かい制御、すなわちプログラムの実行アドレス、ひいては実行可能コードを単位とする制御が求められる。
従って本発明の目的は、プロセッサのクロック速度を実行アドレス、ひいては実行可能コード単位で制御することによって、よりきめの細かな電力管理を実現することにある。
本発明の他の目的は、上記のような電力管理を実現するために、プログラム作成時に、プログラムの動作クロックに対する指定ができるようにすることにある。
発明の開示
本発明の第1の態様によれば、各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録するステップと、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成するステップと、前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づけるステップと、実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御するステップとを含む、プロセッサ動作速度制御方法が提供される。
また、本発明の第2の態様によれば、各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録する手段と、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成する手段と、前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づける手段と、実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御する手段とを含む、プロセッサ動作速度制御装置が提供される。
以下、添付図面を参照しながら、本発明の好適な実施形態について詳しく説明するが、それらの実施形態はあくまで例示的なものであって、本発明はそれらに限定されるものではない。
発明を実施するための最良の態様
図1は、本発明に従って動作速度が制御されるプロセッサを組み込んだデータ処理システムのハードウェア構成の一例を示したものである。図示のデータ処理システム100は、ノートブック型またはデスクトップ型のパーソナル・コンピュータを想定しているが、もちろん本発明は、そのようなパーソナル・コンピュータだけでなく、消費電力の低減が要求されるいかなるコンピュータにも適用可能である。
図1のデータ処理システムにおいて、本発明に従って動作クロックが制御されるプロセッサ102、およびメイン・メモリ104はPCIブリッジ108を介してPCIバス106に接続されている。PCIブリッジ108は、プロセッサ102のための統合メモリ・コントローラ/キャッシュ・メモリを含んでいてもよい。PCIバス106には、PCIブリッジ108の他に、LANアダプタ110、SCSIホスト・バス・アダプタ112、拡張バス・インタフェース114、オーディオ・アダプタ116、グラフィックス・アダプタ118、などのコンポーネントも接続可能である。拡張バス・インタフェース114は、キーボード/タッチパッド120、モデム122および追加メモリ124のための接続を提供する。SCSIホスト・バス・アダプタ112は、ハードディスク・ドライブ126およびCD−ROMドライブ128のための接続を提供する。
プロセッサ102で実行されるオペレーティング・システムおよびアプリケーション・プログラムは、例えばハードディスク・ドライブ126に記憶されており、必要に応じてメイン・メモリ104に取り出されて実行される。
次に、図1のようなデータ処理システムにおいて、オペレーティング・システムの制御のもとにアプリケーション・プログラムを実行するときに、本発明に従ってプログラムの実行可能コード単位にプロセッサ102のクロック速度を可変にする手法について、図2〜図12を参照して説明する。
図2は本発明の基本構成を示したもので、実行可能モジュール(関数)の動作速度を属性情報として持つプログラムを記述したソース・コード202と、該コードを解析して、実行可能モジュールを動作速度属性情報と関連づけて登録するコンパイラ204と、登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成するリンカ206と、このファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、実行可能ファイル内の実行可能モジュール単位で、対応する動作速度属性情報を所定の動作速度情報格納部に格納するOS管理プログラム208と、実行可能モジュールを実行するときに動作速度情報格納部から対応する動作速度情報を読み出すプログラム実行管理部210と、読み出された動作速度情報に基づいて、実行可能モジュールを実行するプロセッサ102の動作速度を制御するクロック制御部212とを含んでいる。ソース・コード202、コンパイラ204およびリンカ206の実施形態としては、図1で示されるデータ処理システム上で実現される場合と、他のデータ処理システム上で実現される場合(プロセッサ102のアーキテクチャが異なる場合はクロスコンパイル環境の場合)の両方が考えられる。OS管理プログラム208の実施形態は、図1で示されるデータ処理システム上で動作するオペレーティング・システムの一部として実現される。また、プログラム実行管理部210およびクロック制御部212の実施形態は、プロセッサ102の内部機構として実現される。
ソース・コード202の一部の例を図3に示す。図3のソース・コードはC言語で記述されているが、他の言語であってももちろん差し支えない。図3において、“#pragma”はプラグマ・ディレクティブと呼ばれる記述子で、プログラマが対応する関数の属性を指定できるようになっている。図3(A)の例では、FunctionH()は、高速実行用のアドレス領域にロードされ、高速で実行される関数(以下、“高速動作関数”という)として指定され、FunctionL()は、低速実行用のアドレス領域にロードされ、低速で実行される関数(以下、“低速動作関数”という)として指定されている。また、図3(B)に示すように、プラグマ・ディレクティブによる動作速度設定をオーバーライドするプロセッサ命令を使用することもできる。図3(B)の例では、ちゅうそくで実行される関数(以下、“中速動作関数”という)として指定されたFunctionM()が、通常処理の途中で、プロセッサ命令“highclk”により高速クロックに切り替えられ、更に、別のプロセッサ命令“rstclk”により元のクロックに戻されている。これらのプロセッサ命令は、例えばプロセッサ固有ライブラリ関数を提供することによって実行可能となる。
図3に示したようなプラグマ・ディレクティブにより、コードの最適動作クロックに関するプログラマの知見を、最小実行可能モジュール単位でオブジェクト・コードに反映させることができる。なお、図3の例では、高速動作、中速動作および低速動作が全て明示的に指定されているが、特定の速度(例えば、高速)をデフォルトとして、他の速度(例えば、中速および低速)だけを明示的に指定するようにしてもよい。また、速度の種類は、ここでは3種類であるが、プロセッサの能力に応じて、高速および低速の2種類でもよく、あるいは4種類以上でも構わない。
コンパイラ204は、ソース・コード202を解析することにより、図4に示すように、オブジェクト・コードと、プラグマ・ディレクティブで指定された動作速度を属性として含む関数登録テーブルとを作成する。動作速度に関するプラグマ・ディレクティブをコンパイラ204で解析できるようにすることは、当業者であれば容易になし得るであろう。図4の構造は、コンパイラ204が解析した各関数についての情報を登録する関数登録部402、登録された各関数の名前を登録する関数名部404、各関数のクロック速度やコード・サイズなどの属性を登録する関数属性部406、および各関数のオブジェクト・コードを含むオブジェクト・コード部408から成っている。関数登録部402は、登録関数ごとに、名前ポインタ(NamePtr)402A、属性ポインタ(AttrPtr)402B、およびオブジェクト・ポインタ(ObjPtr)402Cを備えている。名前ポインタ402Aおよび属性ポインタ402Bは、関数名部404および関数属性部406中の対応する記憶位置をそれぞれ指定する。
関数登録部402のオブジェクト・ポインタ402Cは、オブジェクト・コード部408における当該関数のオブジェクト・コードの開始アドレスを指定する。図4の例では、オブジェクト・コード部408は、高速動作関数、すなわちFunctionHのオブジェクト・コードを含む領域408Aと、低速動作関数、すなわちFunctionLのオブジェクト・コードを含む領域408Bとを有する。
次に、図3(A)のソース・コードを例にとって、図4の構成を生成するために、コンパイラ204によって実行され登録操作について説明する。コンパイラ204は、最初のプラグマ・ディレクティブ“#pragma(HIGH_SPEED,FunctionH)”を解析して、FunctionHを最初の関数“Function#1”として関数登録部402に登録する。その際、関数名“FunctionH”を関数名部404に登録し、その属性(高速属性、コード・サイズなど)を関数属性部406に登録し、オブジェクト・コードをオブジェクト・コード部408Aに登録すると共に、関数登録部402において、関数名部404への名前ポインタ402A、関数属性部406への属性ポインタ402B、およびオブジェクト・コード部408Aへのオブジェクト・ポインタ402Cをそれぞれ設定する。コンパイラ204は、2番目のプラグマ・ディレクティブ“#pragma(LOW_SPEED,FunctionL)”についても同様な登録操作を行う。引数arg1、arg2・・・を含む関数は、図3では、値を返さないvoid型として指定されているが、もちろん他のデータ型も可能である。
次に、コンパイラ204が作成した図4のようなテーブル構造を基に、オブジェクト・コードを可能な限り同一のブロックに集積するリンカ206について説明する。リンカは、図4のオブジェクト・コード部408に登録されている各関数を動作速度別にグループ化するもので、図5の例では、オブジェクト・コード1に含まれる高速動作関数コード1、FunctionH1、およびオブジェクト・コード2に含まれる高速動作関数コード2、FunctionH2が高速動作関数グループ502にまとめられ、オブジェクト・コード2に含まれる中速動作関数コード1、FunctionM1、が中速動作関数グループ504に入れられ、そしてオブジェクト・コード1に含まれる低速動作関数コード1、FunctionL1、およびオブジェクト・コード2に含まれる低速動作関数コード2、FunctionL2、が低速動作関数グループ506にまとめられる。このように、リンカは、生成されたオブジェクト・コードを同一動作速度のモジュールごとにグループ化することによって、動作速度ごとに分割された実行アドレス範囲のフラグメンテーションを避ける。こうしてできあがった情報に基づいて、リンカは図6に示すようなファイル・ヘッダを作成する。
図6において、ファイル・ヘッダ部602は、グループごとに一つのエントリを有し、各エントリは、対応する関数グループへのオブジェクト・ポインタ602Aと、グループのサイズ情報602Bと、動作速度情報602C(高速クロック、中速クロックまたは低速クロック)とを含んでいる。グループ・オブジェクト・ポインタ602Aは、高速動作関数グループ604、中速動作関数グループ606および低速動作関数グループ608のいずれかの開始アドレスを指定する。
リンカ206がファイル・ヘッダを作成すると、OS管理プログラム208は、ファイル・ヘッダに記述された、各実行可能モジュールおよびその動作速度情報を読み出し、当該モジュールが指定された動作速度で実行できるように、モジュールのロード領域を確保することによってそのアドレスを決定し、且つそのアドレス領域に対応した動作速度情報格納部に動作速度情報を格納する。図7の仮想アドレス変換機構を例にとって、OS管理プログラム208の動作について説明する。
図7の上半分に示されているのは周知の仮想アドレス変換機構であって、ページ・ディレクトリ(またはセグメント・テーブル)702およびページ・テーブル704を使って、仮想(論理)アドレス706を物理アドレス708に変換する。仮想アドレス706は、ページ・ディレクトリ番号D、ページ・テーブル番号Tおよびオフセットから成る。ページ・ディレクトリ番号Dは、ページ・ディレクトリ・ベースアドレス・レジスタ(PDBR)に格納されているベースアドレスに加算されて、特定のページ・ディレクトリ・エントリ(PDE)を選択する。選択されたPDEは、ページ・テーブル704のベースアドレスとして使用され、それにページ・テーブル番号Tが加算されて、特定のページ・テーブル・エントリPTEを選択する。PTEはフレーム(ページ・アドレス)を含んでおり、これが仮想アドレス中のオフセットと連結されて、物理アドレス708を構成する。
図7の下半分は、本発明に従う、仮想アドレス変換機構の改良部分を示している。すなわち、ページ・テーブル704の各エントリに、動作速度情報を示す制御ビットが設けられる。図7の例では、制御ビットは2ビットであり、“11”が高速動作を表し、“10”が中速動作を表し、“01”が低速動作を表している。
OS管理プログラム208は、リンカ206が作成したファイル・ヘッダに記述されている実行可能モジュールおよび対応する動作速度制御情報を読み出し、動作速度が同じ実行可能モジュールを物理アドレス・マップ712の特定のページ領域に割り付けると共に、該ページ領域に対応するページ・テーブル・エントリの動作速度制御ビットを、ファイル・ヘッダから読み出した動作速度制御情報に従って設定する。図7の例では、OS管理プログラム208は、高速動作関数“FunctionH1”および“FunctionH2”を第1のページ領域712Aに割り付け、中速動作関数“FunctionM1”を第2のページ領域712Bに割り付け、低速動作関数“FunctionL1”および“FunctionL2”を第3のページ領域712Cに割り付ける。更に、OS管理プログラム208は、ページ領域712A、712Bおよび712Cに対応するページ・テーブル・エントリの動作速度制御ビットをそれぞれ“11”、“10”および“01”に設定する。これにより、第1のページ領域712Aは高速動作クロック・ページ領域として指定され、第2のページ領域712Bは中速動作クロック・ページ領域として指定され、第3のページ領域712Cは低速動作クロック・ページ領域として指定される。
図7のような仮想アドレス変換機構を持たないプロセッサの場合は、例えば図8に示すように、外部I/Oレジスタまたはプロセッサ内部レジスタとして、複数の実行アドレス範囲および対応する動作速度制御ビットを格納する範囲設定レジスタ802、804および806を設ければよい。高速動作クロック範囲設定レジスタ802は、物理アドレス・マップ808において、高速動作関数がロードされるアドレス領域808Aの開始アドレス“Addr_H”および長さ“Length_H”と、制御ビット“11”を格納し、中速動作クロック範囲設定レジスタ804は、物理アドレス・マップ808において、中速動作関数がロードされるアドレス領域808Bの開始アドレス“Addr_M”および長さ“Length_M”と、制御ビット“10”を格納し、そして低速動作クロック範囲設定レジスタ806は、物理アドレス・マップ808において、低速動作関数がロードされるアドレス領域808Cの開始アドレス“Addr_L”および長さ“Length_L”と、制御ビット“01”を格納する。なお、レジスタ802〜806が高速用、中速用および低速用にそれぞれ固定されている場合は、制御ビットは不要であるが、各レジスタの役割が動的に変わる場合は、動作速度を指定する制御ビットが必要になる。
OS管理プログラム208の更に簡単な例としては、OS管理プログラム208と同等の機能と、実行可能なプログラム部分の機能とが一体化された構造をしており、且つ実行可能コードのアドレス・ラベルを直接参照できるファームウェアのような形態をとることもできる。その場合、当該ファームウェアのOS管理プログラム機能部分が、高速動作コード、中速動作コードおよび低速動作コードを分離するアドレス・ラベルの直接参照によって、図7または図8に示した動作速度情報格納部(制御ビット)に制御情報を格納してもよい。この例では、実行可能プログラムにヘッダ情報は必要ないので、コンパイラ204およびリンカ206による、クロック速度の属性管理の機能は省略できる。
OS管理プログラム208による実行可能ファイルのロードおよび動作速度制御情報の設定が終わると、プログラム実行管理部210は、ロードされた実行可能ファイル内のコードを指定された動作速度で実行するために、実行すべきコードのアドレスに対応する動作速度制御ビットを読み出して、対応するクロック制御信号をクロック制御部212へ供給し、該クロック制御部212により調整された動作速度でコードを実行する。
クロック制御部212へ供給されるクロック制御信号を発生するための回路の一例を図9に示す。図7のページ・テーブル704または図8の範囲設定レジスタ802〜806の一つから読み出された動作速度制御ビット(本実施形態では2ビット)はクロック制御信号デコード回路902に入力される。デコード回路902は受け取った制御ビットをデコードして、高速、中速および低速のクロックにそれぞれ対応する3本の出力線のうちの対応する1本をアクティブにする。クロック制御信号イネーブル回路904は、デコード回路902の出力信号および実行アドレス有効タイミング信号に応答して、対応する高速(H)クロック信号、中速(M)クロック信号、または低速(L)クロック信号を出力する。実行アドレス有効タイミング信号は、プロセッサ202が実行するコードのアドレスがアドレス・バス(図示せず)上で有効であるタイミングを示す。
プロセッサ202が仮想アドレス変換機構を持っている場合は、仮想アドレスによって指定されたページ・テーブル・エントリに含まれる動作速度制御ビットをデコード回路902へ供給すればよいが、仮想アドレス変換機構を持たないプロセッサの場合は、図10に示すようなアドレス比較が必要になる。図10において、実行すべきコードのアドレスがアドレス比較部を構成する3つの比較器1002、1004および1006の第1の入力に供給される。比較器1002の第2の入力は、図8に示した範囲設定レジスタ802から、高速動作クロック・アドレス領域808Aのアドレス範囲を示す開始アドレス“Addr_H”および長さ“Length_H”を受け取り、比較器1004の第2の入力は、範囲設定レジスタ804から、中速動作クロック・アドレス領域808Bのアドレス範囲を示す開始アドレス“Addr_M”および長さ“Length_M”を受け取り、比較器1006の第2の入力は、範囲設定レジスタ806から、低速動作クロック・アドレス領域808Cのアドレス範囲を示す開始アドレス“Addr_L”および長さ“Length_L”を受け取る。実行アドレスがいずれかのアドレス範囲内にあると、そのアドレス範囲に対応する比較器がクロック制御信号イネーブル回路904の対応する入力をアクティブにする。図10は、レジスタ802〜806に制御ビットが格納されていない例を示しているが、前述のように、各レジスタの役割が固定されていない場合は、動作速度を示す制御ビットが必要であり、その場合は、比較器1002〜1006の出力に応じて、対応するレジスタに格納されている制御ビットがクロック制御信号デコード回路902に供給される。デコード回路902は図10には示されていないが、制御ビットを使う場合は当然必要になる。
クロック制御部212は、クロック制御信号イネーブル回路904の出力を受け取って、対応する可変クロック信号を供給するもので、図11に示すような分周器1102で構成することができる。分周器1102は、クロック制御信号イネーブル回路904がHクロック信号を出力した場合は、図示しない発振器からシステム・クロックとして供給される外部ベース・クロック信号をそのまま出力し、Mクロック信号を受け取った場合は、システム・クロックを2分の1に分周して出力し、Lクロック信号を受け取った場合は、システム・クロックを3分の1に分周して出力する。ここで、1、2分の1および3分の1という分周比は例示に過ぎず、他の比率を採用することも可能である。
図11は、プロセッサ命令による動作速度の変更(オーバーライド)がない場合を示しているが、図3(B)のソース・コードのように、途中にオーバーライド命令およびオーバーライドをキャンセルする命令が挿入されていると、それをサポートするための追加回路が必要になる。その一例を図12に示す。追加された回路はオーバーライド信号選択回路1202である。オーバーライド信号選択回路1202は、図11と同様のクロック信号を受け取る入力端子1A、2A、3Aの他に、オーバーライド用のクロック信号を受け取る入力端子1B、2B、3Bを有し、オーバーライド命令が検出されてオーバーライド・イネーブル信号がアクティブになっていると、H、M、Lの各クロック信号の代わりに、オーバーライド命令によって指定されたオーバーライド・クロック信号を出力端子1Y、2Y、3Yから分周器1102に供給する。
以上、本発明の好ましい実施形態について説明してきたが、本発明は上述の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の範囲内で様々な修正、変更、追加が可能であることは言うまでもない。
【図面の簡単な説明】
図1は、本発明に従って動作速度が制御されるプロセッサを組み込んだデータ処理システムのハードウェア構成の一例を示すブロック図である。
図2は、本発明の基本構成を示すブロック図である。
図3は、本発明に従って動作速度を制御するための特殊な記述子を含むソース・コードの一部を示す図である。
図4は、図3のソース・コードをコンパイラが解析した結果を示す図である。
図5は、リンカによるオブジェクト・コードの再配置の様子を示す図である。
図6は、リンカが作成するファイル・ヘッダの一例を示す図である。
図7は、仮想アドレス変換機構を利用した動作速度制御の一例を示すブロック図である。
図8は、仮想アドレス変換機構を持たないプロセッサで動作速度制御を実行するためのレジスタ構成例を示すブロック図である。
図9は、動作速度制御ビットをデコードして、選択されたクロック信号を発生するための回路例を示すブロック図である。
図10は、仮想アドレス変換機構を持たないプロセッサでクロック制御を行うためのアドレス比較を示すブロック図である。
図11は、可変クロック信号を発生するための回路を示すブロック図である。
図12は、図11の可変クロック信号発生回路でクロック・オーバーライド命令をサポートするための回路例を示すブロック図である。
Claims (12)
- プロセッサの動作速度を実行可能モジュールに応じて可変にするプロセッサ動作速度制御方法であって、
各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録するステップと、
登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成するステップと、
前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づけるステップと、
実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御するステップと、
を含む、プロセッサ動作速度制御方法。 - 前記関連づけるステップは、前記動作速度属性情報によって示される動作速度情報を所定の動作速度情報格納部に格納するステップを含む、請求項1に記載の方法。
- 前記動作速度を制御するステップは、前記動作速度情報格納部から対応する動作速度情報を読み出して、前記プロセッサの動作速度を制御する、請求項2に記載の方法。
- 前記動作速度情報格納部が、仮想アドレス変換機構の変換テーブルに含まれる、請求項2または3に記載の方法。
- 前記関連づけるステップは、前記アドレス範囲を示す情報を各動作速度に対応するレジスタに格納するステップを含む、請求項1に記載の方法。
- 前記動作速度を制御するステップは、前記実行可能モジュールのアドレスを前記レジスタに格納されている情報と比較して、該アドレスを含むアドレス範囲に対応する動作速度を与えるステップを含む、請求項5に記載の方法。
- プロセッサの動作速度を実行可能モジュールに応じて可変にするプロセッサ動作速度制御装置であって、
各実行可能モジュールの動作速度を属性情報として持つコードを解析して、前記実行可能モジュールを動作速度属性情報と関連づけて登録する手段と、
登録された実行可能モジュールを、関連する動作速度属性情報に基づいて、動作速度別にグループ化し、各グループの属性を含むファイル・ヘッダを作成する手段と、
前記ファイル・ヘッダを持つ実行可能ファイルを実行時にメモリにロードするときに、前記実行可能ファイル内の実行可能モジュール単位で、前記ロードのアドレス範囲に動作速度属性情報を関連づける手段と、
実行可能モジュールを実行するときに、該実行可能モジュールのアドレスに関連する動作速度属性情報に従って、該実行可能モジュールを実行するプロセッサの動作速度を制御する手段と、
を含む、プロセッサ動作速度制御装置。 - 前記関連づける手段は、前記動作速度属性情報によって示される動作速度情報を格納する動作速度情報格納部を含む、請求項7に記載の装置。
- 前記動作速度を制御する手段は、前記動作速度情報格納部から対応する動作速度情報を読み出して、前記プロセッサの動作速度を制御する、請求項8に記載の装置。
- 前記動作速度情報格納部が、仮想アドレス変換機構の変換テーブルに含まれる、請求項8または9に記載の装置。
- 前記関連づける手段は、各動作速度に対応して前記アドレス範囲を示す情報を格納する複数のレジスタを含む、請求項7に記載の装置。
- 前記動作速度を制御する手段は、前記実行可能モジュールのアドレスを前記レジスタに格納されている情報と比較して、該アドレスを含むアドレス範囲に対応する動作速度を与える手段を含む、請求項11に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001130841 | 2001-04-27 | ||
JP2001130841 | 2001-04-27 | ||
PCT/JP2002/004106 WO2002088913A1 (fr) | 2001-04-27 | 2002-04-24 | Procede et appareil pour reguler la vitesse d'execution d'un processeur |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2002088913A1 true JPWO2002088913A1 (ja) | 2004-08-19 |
Family
ID=18979137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002586147A Pending JPWO2002088913A1 (ja) | 2001-04-27 | 2002-04-24 | プロセッサの動作速度を制御するための方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7137017B2 (ja) |
JP (1) | JPWO2002088913A1 (ja) |
CA (1) | CA2441950A1 (ja) |
GB (1) | GB2393294B (ja) |
WO (1) | WO2002088913A1 (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006222648A (ja) * | 2005-02-09 | 2006-08-24 | Sony Corp | 復号方法、復号装置およびそのプログラム |
US7373537B2 (en) * | 2005-06-28 | 2008-05-13 | Intel Corporation | Response to wake event while a system is in reduced power consumption state |
US8050781B2 (en) * | 2007-06-29 | 2011-11-01 | Emulex Design & Manufacturing Corporation | Systems and methods for ASIC power consumption reduction |
JP4919995B2 (ja) * | 2008-03-13 | 2012-04-18 | 株式会社東芝 | 制御システム、制御装置および制御方法 |
US8171319B2 (en) * | 2009-04-16 | 2012-05-01 | International Business Machines Corporation | Managing processor power-performance states |
US8700926B2 (en) * | 2010-01-11 | 2014-04-15 | Qualcomm Incorporated | System and method of tuning a dynamic clock and voltage switching algorithm based on workload requests |
JP5601236B2 (ja) * | 2011-02-10 | 2014-10-08 | 富士通株式会社 | 情報抽出プログラム、情報抽出方法、および情報抽出装置 |
EP3062142B1 (en) | 2015-02-26 | 2018-10-03 | Nokia Technologies OY | Apparatus for a near-eye display |
US10650552B2 (en) | 2016-12-29 | 2020-05-12 | Magic Leap, Inc. | Systems and methods for augmented reality |
EP3343267B1 (en) | 2016-12-30 | 2024-01-24 | Magic Leap, Inc. | Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light |
US10578870B2 (en) | 2017-07-26 | 2020-03-03 | Magic Leap, Inc. | Exit pupil expander |
CN116990888A (zh) | 2017-12-10 | 2023-11-03 | 奇跃公司 | 光波导上的抗反射涂层 |
CN115826240A (zh) | 2017-12-20 | 2023-03-21 | 奇跃公司 | 用于增强现实观看设备的插入件 |
CN112136152B (zh) | 2018-03-15 | 2025-02-07 | 奇跃公司 | 由观看设备的部件变形导致的图像校正 |
JP7319303B2 (ja) | 2018-05-31 | 2023-08-01 | マジック リープ, インコーポレイテッド | レーダ頭部姿勢位置特定 |
WO2020010097A1 (en) | 2018-07-02 | 2020-01-09 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US11856479B2 (en) | 2018-07-03 | 2023-12-26 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality along a route with markers |
WO2020010226A1 (en) | 2018-07-03 | 2020-01-09 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
US12164978B2 (en) | 2018-07-10 | 2024-12-10 | Magic Leap, Inc. | Thread weave for cross-instruction set architecture procedure calls |
US11624929B2 (en) | 2018-07-24 | 2023-04-11 | Magic Leap, Inc. | Viewing device with dust seal integration |
CN119197613A (zh) | 2018-07-24 | 2024-12-27 | 奇跃公司 | 移动检测设备的依赖于温度的校准 |
JP7401519B2 (ja) | 2018-08-02 | 2023-12-19 | マジック リープ, インコーポレイテッド | 頭部運動に基づく瞳孔間距離補償を伴う視認システム |
EP3830631A4 (en) | 2018-08-03 | 2021-10-27 | Magic Leap, Inc. | NON-FUSED POSE DRIFT CORRECTION OF A FUSED TOTEM IN A USER INTERACTION SYSTEM |
US12016719B2 (en) | 2018-08-22 | 2024-06-25 | Magic Leap, Inc. | Patient viewing system |
CN113196138B (zh) | 2018-11-16 | 2023-08-25 | 奇跃公司 | 用于保持图像清晰度的图像尺寸触发的澄清 |
CN113454507B (zh) | 2018-12-21 | 2024-05-07 | 奇跃公司 | 用于促进波导内的全内反射的气穴结构 |
JP7515489B2 (ja) * | 2019-02-06 | 2024-07-12 | マジック リープ, インコーポレイテッド | 複数のプロセッサによって発生される総熱を限定するための標的意図ベースのクロック速度の決定および調節 |
EP3939030A4 (en) | 2019-03-12 | 2022-11-30 | Magic Leap, Inc. | REGISTRATION OF LOCAL CONTENT BETWEEN FIRST AND SECOND VIEWERS OF AUGMENTED REALITY |
US11445232B2 (en) | 2019-05-01 | 2022-09-13 | Magic Leap, Inc. | Content provisioning system and method |
US11514673B2 (en) | 2019-07-26 | 2022-11-29 | Magic Leap, Inc. | Systems and methods for augmented reality |
WO2021097318A1 (en) | 2019-11-14 | 2021-05-20 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
WO2021097323A1 (en) | 2019-11-15 | 2021-05-20 | Magic Leap, Inc. | A viewing system for use in a surgical environment |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5599650A (en) * | 1979-01-23 | 1980-07-29 | Nec Corp | Integrated circuit |
JPS5841479A (ja) * | 1981-09-07 | 1983-03-10 | Nec Corp | 主記憶装置 |
JPS61253559A (ja) * | 1985-05-02 | 1986-11-11 | Nec Corp | マイクロプロセツサ |
JPH01155437A (ja) * | 1987-12-11 | 1989-06-19 | Toshiba Corp | オペレーティングシステム |
IN170793B (ja) * | 1987-12-18 | 1992-05-23 | Hitachi Ltd | |
JPH025133A (ja) * | 1988-06-24 | 1990-01-10 | Nec Corp | 動作速度可変形コンピュータシステム |
JPH02118811A (ja) * | 1988-10-28 | 1990-05-07 | Nec Corp | マイクロコンピュータ |
JPH02202609A (ja) * | 1989-02-01 | 1990-08-10 | Mitsubishi Electric Corp | 半導体集積回路 |
JPH0355614A (ja) * | 1989-07-25 | 1991-03-11 | Sony Corp | 電子機器 |
JPH03257608A (ja) * | 1990-03-08 | 1991-11-18 | Fujitsu Ltd | マイクロコンピューター |
JP2979653B2 (ja) * | 1991-01-09 | 1999-11-15 | 日本電気株式会社 | 情報処理装置 |
JP3511691B2 (ja) * | 1994-10-04 | 2004-03-29 | ヤマハ株式会社 | 演算処理装置 |
JP3520611B2 (ja) * | 1995-07-06 | 2004-04-19 | 株式会社日立製作所 | プロセッサの制御方法 |
JPH11296252A (ja) * | 1998-04-13 | 1999-10-29 | Mitsubishi Electric Corp | コンピュータシステム |
JP3880310B2 (ja) | 2000-12-01 | 2007-02-14 | シャープ株式会社 | 半導体集積回路 |
-
2002
- 2002-04-24 JP JP2002586147A patent/JPWO2002088913A1/ja active Pending
- 2002-04-24 CA CA002441950A patent/CA2441950A1/en not_active Abandoned
- 2002-04-24 GB GB0327415A patent/GB2393294B/en not_active Expired - Fee Related
- 2002-04-24 WO PCT/JP2002/004106 patent/WO2002088913A1/ja active Application Filing
- 2002-04-24 US US10/472,304 patent/US7137017B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2393294B (en) | 2005-04-06 |
US20040073825A1 (en) | 2004-04-15 |
US7137017B2 (en) | 2006-11-14 |
WO2002088913A1 (fr) | 2002-11-07 |
GB2393294A (en) | 2004-03-24 |
GB0327415D0 (en) | 2003-12-31 |
CA2441950A1 (en) | 2002-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2002088913A1 (ja) | プロセッサの動作速度を制御するための方法および装置 | |
US6038629A (en) | Computer system generating a processor interrupt in response to receiving an interrupt/data synchronizing signal over a data bus | |
US6625740B1 (en) | Dynamically activating and deactivating selected circuit blocks of a data processing integrated circuit during execution of instructions according to power code bits appended to selected instructions | |
US20030120961A1 (en) | Managing multiple processor performance states | |
US7210054B2 (en) | Maintaining processor execution during frequency transitioning | |
KR20050085281A (ko) | 마이크로프로세서 전력 소비를 제어하는 회로 장치,집적회로 및 프로그램 제품, 프로그램 코드 실행과 발생방법 | |
US5948082A (en) | Computer system having a data buffering system which includes a main ring buffer comprised of a plurality of sub-ring buffers connected in a ring | |
JPH07271721A (ja) | コンピュータシステム及びその動作方法 | |
EP0765499A4 (en) | DYNAMIC MANAGEMENT OF PROCESSOR POWER AND PERFORMANCE IN A COMPUTER SYSTEM | |
WO1999066399A9 (en) | Method to reflect bios setup changes into acpi machine language | |
JPH08278918A (ja) | エンディアンタスクを実行するシステム及び方法 | |
JPH0863354A (ja) | コンピュータプロセッシングを行うための装置及び方法 | |
JPH0916471A (ja) | プロセッサ | |
JP3685401B2 (ja) | Cpu制御方法、これを用いたコンピュータ装置及びcpu並びにプログラム | |
US20040172519A1 (en) | Processor, system LSI circuit, method of designing same, and recording medium having said method recorded thereon | |
KR100272622B1 (ko) | 데이타 처리장치 | |
JPH11272546A (ja) | 可変長レジスタ装置 | |
US5432944A (en) | Data processing system having a dynamically enabled input synchronizer for selectively minimizing power consumption | |
EP4293502A1 (en) | Processing unit, computing device and instruction processing method | |
US6792491B2 (en) | Invoking ACPI source language code from interrupt handler | |
US20060101434A1 (en) | Reducing register file bandwidth using bypass logic control | |
US20210089459A1 (en) | Storage control apparatus, processing apparatus, computer system, and storage control method | |
JP2001092661A (ja) | データ処理装置 | |
US20090077290A1 (en) | Controller for processing apparatus | |
CN113672554B (zh) | 处理器核、处理器、片上系统和调试系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060809 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060816 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070206 |