説明

コンピュータ・システムのI/O電力を低減するための方法及び装置、並びにコンピュータ・システム

【課題】 本発明の目的は、コンピュータ・システムのI/O電力を低減するための方法及び装置、並びにコンピュータ・システムを提供することである。
【解決手段】 本発明の態様によれば、バスに送られる複数路のデータをバッファリングするステップと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてnビットからn+mビットにコード化するステップであって、n及びmが両方とも1より大きいか又は等しい整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、ステップと、コード化された複数路のデータをバスに送るステップとを含む、コンピュータ・システムのI/O電力を低減するための方法が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ技術に関し、より詳細には、コンピュータ・システムのI/O電力を低減する技術に関する。
【背景技術】
【0002】
コンピュータ設計の分野において、人々が絶えず追求している目標は、チップ・レベルからシステム・レベルまでにわたって電力を低減することである。電力消費が増大するにつれて、システムの電力供給及び冷却のコストは、より高速に増大する。
【0003】
コンピュータ・システムの電力は、コア電力及びI/O(入力/出力)電力を含む。現在のところ、コンピュータ・システムの電力を低減するための多くの方法が存在し、それらは例えば、
チップ・レベル:低電力のチップセットを設計又は選択する、
システム・レベル:DVFS(Dynamic Voltage andFrequency Scaling:動的電圧及び周波数スケーリング)によって、動作電圧及び動作周波数を動的に低下させる、
コンパイラ・レベル:より低電力の命令を選択する、
OS(オペレーティング・システム)レベル:タスク・スケジューリングによって、システムが利用されていないときに幾つかの機能ユニットをディスエーブルにする、
ネットワーク・レベル:NIC(ネットワーク・インターフェース・カード)が稼働していないときに、待機又は一時停止モードに切り換える、
といった方法である。
【0004】
具体的な例は、コア電力を調整するための論理を有するIntel DBS(DemandBased Switching)電力管理システムである。このシステムは、CPUの作業負荷に基づいてコア電圧を調整することができる。Intel DBSについての詳細説明は、非特許文献1に記載されている。しかしながら、Intel DBSの電力管理システムは、主にプロセッサ自体に重点を置いており、I/O電力を効果的に低減するものではない。
【0005】
例えば、非特許文献2の論文において、低電力に最適化されたシステムに関して、I/O電力と総電力との割合が、10%から80%の間、一般的には50%であることが報告されている。
【0006】
それゆえ、コンピュータ・システムのコア電力を低減するのと同時に、コンピュータ・システムのI/O電力を低減することが必要とされる。
【0007】
コンピュータ・システムのI/O電力を低減する方法は、非特許文献3の論文に開示されており、この方法は、以前のデータと現在のデータの文字分布に基づいて計算される最小ハミング距離を有するコードを用いて、転送が行われることを特徴とする。従って、この方法は、データをコード化するために動的コード化方式を採用する必要があり、以前のデータと現在のデータを実時間でモニタして比較しなければならないので、浪費が大きく、効率が低いことが理解される。
【0008】
そのため、コンピュータ・システムのI/O電力を効果的に低減するための方法が必要である。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】Intel white paper: AddressingPower and Thermal Challenges in the Datacenter、[online]、インターネット<URL: www.intel.com/products/services/intelsolutionservices/success/techdocs/wp/thermal.pdf>
【非特許文献2】Mahesh Mamidipaka、Dan Hirschberg及びNikil Dutt、「Low Power Address Encoding using Self-Organizing Lists」、2001 International Symposium on Low Power Electronics and Design(ISLPED'01)予稿集
【非特許文献3】M.Madhu、V.Srinivasa及びV.Kamakoti、「Dynamic Coding Technique ForLow-Power Data Bus」、IEEE Computer Society AnnualSymposium on VLSI、2003年、予稿集
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来技術における上記の問題を解決するために、本発明は、コンピュータ・システムのI/O電力を低減するための方法及び装置、並びにコンピュータ・システムを提供する。
【課題を解決するための手段】
【0011】
本発明の態様によれば、バスに送られる複数路のデータをバッファリングするステップと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてnビットからn+mビットにコード化するステップであって、n及びmが両方とも1以上の整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、ステップと、コード化された複数路のデータをバスに送るステップとを含む、コンピュータ・システムのI/O電力を低減するための方法が提供される。
【0012】
本発明の別の態様によれば、バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてnビットからn+mビットにコード化するように構成されたエンコーダであって、n及びmば両方とも1以上の整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、エンコーダと、コード化された複数路のデータを、バスに送るためにバッファリングするように構成されたコード化データ・バッファとを含む、コンピュータ・システムのI/O電力を低減するための装置が提供される。
【0013】
本発明の別の態様によれば、CPUと、I/Oデバイスと、CPUとI/Oデバイスとの間でデータを転送するように構成されたバスと、コンピュータ・システムのI/O電力を低減するための上記の装置とを含む、コンピュータ・システムが提供される。
【0014】
本発明の実施形態の以下の詳細説明を図面と共に参照することによって、上記の特徴、利点及び目的がより良く理解できると考えられる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施形態による、コンピュータ・システムのI/O電力を低減するための方法を示すフローチャートである。
【図2】本発明の実施形態による、8ビット・データ及び10ビット・データのスイッチング回数を示す対比図である。
【図3】本発明の実施形態による、nビットからn+mビットへのデータのコード化を示す例である。
【図4】本発明の実施形態による、nビットからn+mビットへのデータのコード化を示す別の例である。
【図5】本発明の別の実施形態による、コンピュータ・システムのI/O電力を低減するための装置を示すブロック図である。
【図6】本発明の実施形態による、コンピュータ・システムのI/O電力を低減するための装置のハードウェア構造を示す略図である。
【図7】本発明の別の実施形態による、コンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【0016】
以下の実施形態の理解を容易にするために、コンピュータ・システムのI/O電力に影響を与える幾つかの因子についてまず簡単に述べる。I/O電力が以下の式(1)によって求められることは周知である。
I/O=C・NSW・VDD・f (1)
ここで、Cは、等価キャパシタンスを表し、NSWは、システム・クロックに対するスイッチング動作の比率、すなわちスイッチング周波数を表し、VDDは、動作電圧を表し、fは、動作周波数を表す。つまり、I/O電力は、動作電圧VDDの2乗に比例し、かつスイッチング周波数NSWに比例する。本発明は、スイッチング周波数を低下させることによってI/O電力を低減しようとするものである。特に、システム・クロックは、一般には一定に保持されるので、本発明は、スイッチング動作を減らすことによってI/O電力を低減するものである。
【0017】
図1は、本発明の実施形態による、コンピュータ・システムのI/O電力を低減するための方法を示すフローチャートである。図1の方法の実施形態を説明する前に、バスに送られるデータを一時的にコード化することによってスイッチング周波数を低下させることによりI/O電力を低減する原理を、図2及び表1〜6と共に説明する。
【0018】
図2は、本発明の実施形態による、8ビット・データと10ビット・データのスイッチング動作の回数を示す、スイッチング回数の対比図である。図2に示されるように、8ビット・データ10101010については、そのスイッチング回数は7であり、この8ビット・データに対応する10ビット・データ1111101110については、そのスイッチング回数は3である。従って、8ビット・データが10ビット・データにコード化された場合には、最大スイッチング回数は7から3に減少し、スイッチング周波数が低下し、その結果としてI/O電力が低減する。以下の表1〜6は、8ビット・データ空間を10ビット・データ空間でマッピングするコード・ブックと、スイッチング回数とを示す。
【0019】
【表1】


【表2】


【表3】


【表4】


【表5】


【表6】

【0020】
表1〜6のコード・ブックの生成規則及びフローは、以下のように詳細に説明される。
(1)変換されるコード空間(8ビット)の全コードを、スイッチング回数でソートする。
(2)ターゲットのコード空間(10ビット)の全コードを、スイッチング回数でソートする。
(3)ソートされた2つのコード・ブックが1つずつマッピングされ、このマッピング原理は、
(3.1)高スイッチング回数を有するコードは、高スイッチング回数を有するコードでマッピングされ、低スイッチング回数を有するコードは、低スイッチング回数を有するコードでマッピングされる。
(3.2)8ビット・データ空間が10ビット・データ空間に変換された後は、スイッチング速度を増大させることはできない。すなわち、8ビットの総スイッチング回数(表1における896)は、マッピングされた10ビットの総スイッチング回数(表1〜6における654)より大きいか又は等しくなければならない。
(3.3)同一のスイッチング回数を有するコード間には、どのような対応関係が存在してもよく、例えば、スイッチング回数が6回の8ビット・コード(例えば11010101)は、対応して、スイッチング回数が3回の10ビット・コードのうちのどのコードに変換されてもよい。
【0021】
表1〜6から、8ビット・データ空間の総スイッチング回数が896であることが計算される。しかしながら、この数値896は、電力性能利得を平均の意味で統計的に表すために用いられるに過ぎず、入力データの集積が他の文字を備える場合には、それより高くなることもあり、又は低くなることもある。10ビット・データ空間の総スイッチング回数は654であり、2以下のスイッチング回数を有するコードの全てがこのコード・ブックに含まれており、3に等しいスイッチング回数を有する10ビット・コードの一部が表1〜6に含まれているので、この数値は、10ビット・データ空間の最適値である。それに加えて、表1〜6に含まれていない(すなわち、使用されていない)幾つかのコードも存在するが、この総スイッチング回数654を連続的に低減することは不可能である。従って、8ビット・データが10ビット・データにコード化される場合には、総スイッチング回数を896から654に低減することができるので、その結果として、I/O電力を27%低減することができる。さらに、本発明の実装により費やされる特定の消費分があるため、この消費分を差し引くと、I/O電力を約20%低減することができることになる。
【0022】
さらに、ここまでは8ビット・データ空間から10ビット・データ空間への変換を例として本発明のコード化規則を説明してきたが、当業者であれば、表1〜6のコード化規則は、8ビット・データ空間から10ビット・データ空間への唯一のコード化規則を構成するものではなく、実施形態の1つに過ぎないことを理解すべきである。総スイッチング回数をこの場合は654回まで低減することを保証するという条件の下で、他のコード化規則を選択することができ、例えば、スイッチング回数が3に等しい他のコードを用いて8ビット・データ空間のコードをマッピングすることができる。さらに、上記のコード化規則に基づいて、n及びmが両方とも1以上の整数であるとして、どのようなnビットをn+mビットにコード化することもでき、その結果、スイッチング周波数が低下することによって、コンピュータ・システムのI/O電力が低減される。
【0023】
次に、添付の図面と共に、本発明の各々の実施形態を詳細に説明する。
【0024】
コンピュータ・システムのI/O電力を低減するための方法
図1は、本発明の実施形態による、コンピュータ・システムのI/O電力を低減するための方法を示すフローチャートである。図1に示されるように、まず、ステップ101において、任意に、コンピュータ・システムのバスの作業負荷がモニタされる。具体的には、バス・モニタ又は当業者には公知のいずれかのモジュール若しくは技術を用いてバスの作業負荷をモニタすることができ、例えば、レジスタ内のデータの待ち状況をコンピュータのオペレーティング・システムを通じて連続的に読み出すことによって、バスの作業状況に関する情報が取得され、バスの作業負荷がモニタされる。さらに、データをCPUとI/Oデバイスとの間で転送することが必要とされるときには、即時にバスの作業負荷が取得されるが、必要なときにバスの作業負荷を取得することさえできれば、本発明はこれに限定されるものではない。ここで言及されるI/Oデバイスは、ディスプレイ装置、読み出し専用メモリ及びランダム・アクセス・メモリ等のようなシステム・メモリ、ハード・ディスク、CD−ROM、マウス及びキーボード等のような入力装置、ルータ等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイスを含むが、それらに限定されるものではなく、本発明はI/Oデバイスに限定されるものではなく、バスを介してCPUに入力/出力するどのようなデバイスも、ここではI/Oデバイスとすることができることを理解されたい。バスの作業負荷をモニタする上記のステップは、この実施形態の任意ステップに過ぎないこと、そして、その目的は、バスによるデータ入力/出力の効率とI/O電力との間の関係のバランスをより上手く取ることであることを理解すべきであり、この実施形態において、バスをモニタせずに、以下のステップを直接実行することもできる。
【0025】
次に、ステップ102において、バスに送られる複数路のデータ(plurality ofways of data)がバッファリングされる。この実施形態において、バスに送られる複数路のデータは、コンピュータ・システムのどのメモリを用いてバッファリングされてもよく、例えばデータをバッファリングするためにシフト・レジスタが用いられるが、本発明はこれに限定されるものではない。
【0026】
次に、ステップ103において、ステップ102でバッファリングされた複数路のデータの各々が、コード化規則に基づいてnビットからn+mビットにコード化され、ここで、n及びmは両方とも1以上の整数である。ここでのコード化規則はすなわち、図2及び表1〜6と共に説明された上記のコード化規則であり、コードのスイッチング周波数を低減するために用いられる。
【0027】
次に、この実施形態のコード化プロセスを、n=8、m=2を例として、図3及び図4と共に詳細に説明する。
【0028】
図3は、本発明の実施形態による、8ビットから10ビットへのデータのコード化を示す例である。図3に示されるように、バスがビジーではないときには、バスに送られる4路のデータは、オリジナル・データ・バッファ内に1路当たり8ビットのフォーマットでバッファリングされ、次いで複数路の8ビット・データがそれぞれ、この4路のデータに対して共用のエンコーダを用いて、10ビット・データにコード化され、コード化された10ビット・データは、コード化データ・バッファ内にバッファリングされる。具体的には、複数路の8ビット・データを、共用エンコーダによって、表1〜6に示されるような事前に記憶されたコード・ブックを用いて、対応する10ビット・データにコード化することができる。ここでは例として4路のデータが示されているが、本発明はこれに限定されるものではなく、本発明は、特定の用途に基づいて変更することができることを理解されたい。
【0029】
図4は、本発明の実施形態による、8ビットから10ビットへのデータのコード化を示す別の例である。この実施形態においては、複数路のデータに対して、それぞれ独自のエンコーダが設けられており、コード化プロセスは、上記の図3の例と同じであるので、ここでは適宜省略される。この例においては、複数路のデータの各々に対してそれぞれのエンコーダが設けられることが示されているが、本発明はこれに限定されるものではなく、本発明は、複数路の8ビット・データの各々を10ビット・データにコード化することさえできれば、実際の必要性に基づいて、どの複数路のデータに対してどのようなエンコーダを設けてもよいことを理解されたい。
【0030】
さらに、本発明のコード化規則は、ここでは8ビットから10ビットへのコード化に基づいて説明されているが、本発明はこれに限定されるものではなく、本発明は、スイッチング周波数をそのコード化規則に基づいて低下させることさえできれば、いかなるnビット・データをn+mのデータにコード化してもよいことを理解されたい。
【0031】
この実施形態において、バッファリングされた複数路のデータをコード化するステップであるステップ103において、任意に、閾値を定義することができ、この閾値は、ステップ101においてモニタされる作業負荷とすることができ、例えば、この閾値は0.6と定義され、すなわち、バスの作業負荷が60%以上のときには、バスはビジーであると定義され、バスの作業負荷が60%未満のときには、バスはビジーではないと定義されることになる。この0.6という閾値は単なる例に過ぎず、バスがビジーである場合とビジーでない場合との閾値は、実際の事例に基づいて、0と1との間のいずれかの値として定義することができ、本発明はこの閾値の定義に限定されるものではないことを理解されたい。
【0032】
すなわち、バスの作業負荷が0.6のような上記の閾値を下回ることがモニタされたとき、すなわち、バスがビジーではないときに、バスに送られるバッファリングされた複数路のデータがnビットからn+mビットにコード化されるが、本発明はこれに限定されるものではない。
【0033】
さらに、この実施形態において、バスの作業負荷は、80−100%、60−80%、40−60%、20−40%、0−20%のような幾つかの範囲として定義することができ、異なる作業負荷レベルに対して、異なるコード化規則がそれぞれ選択される。例えば、ステップ101においてバスの作業負荷が80−100%以内であることがモニタされた場合には、8ビットから10ビットへのコード化規則が選択され、ステップ101においてバスの作業負荷が60−80%以内であることがモニタされた場合には、8ビットから12ビットへのコード化規則が選択され、ステップ101においてバスの作業負荷が40−60%以内であることがモニタされた場合には、8ビットから14ビットへのコード化規則が選択され、ステップ101においてバスの作業負荷が20−40%以内であることがモニタされた場合には、8ビットから16ビットへのコード化規則が選択され、ステップ101においてバスの作業負荷が0−20%以内であることがモニタされた場合には、8ビットから18ビットへのコード化規則が選択される。上記の作業負荷の範囲及び対応するコード化規則は単なる例に過ぎず、本発明は、実際の必要性に基づいて、どのような作業負荷の範囲及び対応するコード化規則も定義することができることを理解されたい。
【0034】
最後に、ステップ104において、コード化された複数路のデータがバッファリングされ、バッファリングされたデータがバスに送られ、コード化されたデータが、バスを介してCPU又はI/Oデバイスに送られる。この実施形態において、バスに送られる複数路のデータは、コンピュータ・システムのどのメモリを用いてバッファリングされてもよく、例えば、バッファリングのためにシフト・レジスタが用いられるが、本発明はこれに限定されるものではない。
【0035】
さらに、上記のステップ103におけるコード化の前に、本実施形態の方法において、ステップ101において、バスの作業負荷が閾値を下回ることがモニタされたときに、コード化規則を、CPU側I/Oコントローラ、及び/又はI/Oデバイス側I/Oコントローラに送ることもできる。受け取ったコード化規則に基づいて、CPU側I/Oコントローラ及び/又はI/Oデバイス側I/Oコントローラによって、対応するエンコーダが制御され、ステップ103においてコード化が行われる。
【0036】
さらに、バスからのコード化されたn+mビット・データがCPU又はI/Oデバイスに送られる前に、この実施形態の方法は、コード化されたn+mビット・データを、上記のコード化規則に基づいてnビット・データにデコードするステップをさらに含み、このデコードプロセスは、上記のコード化プロセスと反対であり、すなわち、最初に、バスからのコード化された複数路のn+mビット・データがバッファリングされ、次いで、バッファリングされたn+mビット・データが、上記のコード化規則に基づいて、nビット・データにデコードされ、次いで、デコードされた複数路のnビット・データがバッファリングされ、最後に、バッファリングされたnビット・データがCPU又はI/Oデバイスに送られる。
【0037】
さらに、本実施形態において、上記のコード化/デコードは、IC等のようなハードウェアによって実装することができる。具体的には、エンコーダ/デコーダを直接コンピュータ・システムに組み込むこともでき、又はエンコーダ/デコーダをコンピュータ・システムのI/Oコントローラに組み込むこともできる。さらに、コード化/デコードは、ソフトウェアによって実装することもできる。所謂ソフトウェアによる実装は、データがCPUによって出力されるべきときに、ソフトウェア・プログラムによってコード化/デコードされた後にデータが出力されることを意味する。nビット・データとn+mビット・データとの間でコード化/デコードを実行することさえできれば、本発明はこれに限定されるものではない。
【0038】
本実施形態において、ステップ103におけるコード化の前に、ステップ101においてバスの作業負荷がモニタされるが、ステップ101におけるモニタ・プロセスは任意であり、その目的は、データ入力/出力効率とI/O電力との間の関係のバランスを取ることであることを再度強調する。バスをモニタせずに、バスに送られる複数路のデータを直接バッファリングし、その後、コード化を実行することもできる。
【0039】
本実施形態のコンピュータ・システムのI/O電力を低減する方法によって、I/O電力をコンピュータ・システムのバスの作業負荷レベルに基づいて効果的に低減することができる。これにより、エネルギー消費が大幅に節約される。本発明の発明者によって、8−10ビットのコード化/デコード・システムが、シミュレーション・システム内に実装される。具体的には、本発明者は、エンコーダ/デコーダのハードウェア設計を完成させる。次に、データがシミュレーション・システム内にランダムに入力されるようにシミュレーションして、エンコーダ/デコーダ電力、及び非コード化状態下でデータを出力する際に生じるI/O電力(両方ともシミュレーション・プロセス)を計算すると、付加されるコード化/デコード回路によって生じる電力はI/O電力の約5%となり、その具体的な値は、シミュレーション・ソフトウェア、システム入力/出力、エンコーダ/デコーダ設計等に関係する。従って、上記のコード化によって得られるI/O電力の27%の低減と対比すると、最終的に、20%を上回る正味の利得を得ることができる。
【0040】
コンピュータ・システムのI/O電力を低減するための装置
同じ発明の概念の下で、図5は、本発明の別の実施形態による、コンピュータ・システムのI/O電力を低減するための装置を示すブロック図である。次に、本実施形態を図5と共に説明する。上記の実施形態と同様の部分については、その説明を適宜省略する。
【0041】
図5に示されるように、この実施形態のコンピュータ・システムのI/O電力を低減するための装置600は、コンピュータ・システムのバスの作業負荷をモニタするように構成されたバス・モニタ601を含む。具体的には、当業者には公知のいずれかのモジュール又は技術をバス・モニタ601として用いて、バスの作業負荷をモニタすることができ、例えば、レジスタ内のデータの待ち状況をコンピュータのオペレーティング・システムを通じて連続的に読み出すことによって、バスの作業状況に関連する情報が取得され、バスの作業負荷がモニタされる。さらに、データをCPU701とI/Oデバイス800との間で転送することが必要とされる場合には即時に、バス・モニタ601によってバスの作業負荷が取得されるが、必要なときにバスの作業負荷を取得することさえできれば、本発明はこれに限定されるものではない。ちなみに、バスの作業負荷をモニタするように構成されたバス・モニタ601は、この実施形態の装置600の任意ユニットに過ぎず、その目的は、バスによるデータ入力/出力の効率とI/O電力との間の関係のバランスをより上手く取ることであり、この実施形態において、バスはモニタされなくてもよく、すなわち、装置600はバス・モニタ601を含まなくてもよいことに言及する。
【0042】
この実施形態において、I/Oデバイス800は、ディスプレイ装置、読み出し専用メモリ及びランダム・アクセス・メモリ等のようなシステム・メモリ、ハード・ディスク、CD−ROM、マウス及びキーボード等のような入力装置、ルータ等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイスを含むが、それらに限定されるものではなく、本発明はI/Oデバイスに限定されるものではなく、バスを介してCPU701に入力/出力するどのようなデバイスも、ここではI/Oデバイス800とすることができる。
【0043】
この実施形態のコンピュータ・システムのI/O電力を低減するための装置600はまた、バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファ610及び/又は630を含む。この実施形態において、オリジナル・データ・バッファ610及び/又は630は、コンピュータ・システムのどのメモリとるすこともでき、例えばシフト・レジスタとすることができるが、本発明は、それに限定されるものではない。
【0044】
さらに、nビットからn+mビットへのコード化規則を、CPU側エンコーダ/デコーダ615及び/又はI/Oデバイス側エンコーダ/デコーダ635にメッセージ送信することによって、この実施形態のコンピュータ・システムのI/O電力を低減するための装置600によって、nビットからn+mビットへのコード化が実行され、ここで、n及びmは両方とも1以上の等しい整数である。さらに、nビットからn+mビットへのコード化規則を、CPU側I/Oコントローラ605及び/又はI/Oデバイス側I/Oコントローラ625にメッセージ送信することもできる。コード化規則を受け取った後に、オリジナル・データ・バッファ610及び/又は630内にバッファリングされたデータは、対応するエンコーダ/デコーダ615及び/又は635によって、nビットからn+mビットにコード化され、これは、CPU側I/Oコントローラ605及び/又はI/Oデバイス側I/Oコントローラ625によって制御される。ここで説明されるコード化規則は、すなわち、図2及び表1〜6と共に説明された上記のコード化規則であり、コードのスイッチング周波数を低減するために用いられる。
【0045】
この実施形態において、任意に、エンコーダ/デコーダ615及び/又は635について、バッファリングされた複数路のデータをコード化するかどうかを判断する閾値を定義することができ、この閾値は、バス・モニタ601によってモニタされるバスの作業負荷とすることができ、例えば、この閾値は0.6と定義され、すなわち、バスの作業負荷が60%以上のときには、バスはビジーであると定義され、バスの作業負荷が60%未満のときには、バスはビジーではないと定義されることになる。この0.6という閾値は単なる例に過ぎず、バスがビジーである場合とビジーでない場合との閾値は、実際の事例に基づいて、0と1との間のいずれかの値(すなわち、0以上かつ1以下)と定義することができることができ、本発明はこの閾値の定義に限定されるものではないことを理解されたい。
【0046】
この実施形態のエンコーダ/デコーダ615及び/又は635のコード化プロセスは、図3及び図4と共に説明された上記の実施形態のコード化プロセスと同様であり、その説明は、ここでは適宜省略される。
【0047】
エンコーダ/デコーダ615及び/又は635によってコード化が実行された後に、コード化された複数路のデータが、コード化データ・バッファ620及び/又は640内にバッファリングされる。次いで、コード化データ・バッファ620及び/又は640内にバッファリングされたデータがバスに送られ、コード化されたデータが、バスを介してCPU701又はI/Oデバイス800に送られる。
【0048】
バスからのコード化されたn+mビット・データがCPU701又はI/Oデバイス800に送られる前に、コード化されたn+mビット・データは、上記のコード化規則に基づいて、この実施形態のエンコーダ/デコーダ615及び/又は635によってnビット・データにデコードされ、このデコードプロセスは、上記の実施形態において図3及び図4と共に説明されたコード化プロセスと反対であり、すなわち、最初に、バスからのコード化された複数路のn+mビット・データが、コード化データ・バッファ620及び/又は640を用いてバッファリングされ、次いで、バッファリングされたn+mビット・データが、上記のコード化規則に基づいて、nビット・データにデコードされ、次いで、デコードされた複数路のnビット・データが、オリジナル・データ・バッファ610及び/又は630内にバッファリングされ、最後に、バッファリングされたnビット・データが、CPU701又はI/Oデバイス800に送られる。
【0049】
任意に、この実施形態において、バスの作業負荷は、80−100%、60−80%、40−60%、20−40%、0−20%のような幾つかの範囲として定義することができ、異なる作業負荷レベルに対して、異なるコード化規則がそれぞれ選択される。例えば、バスの作業負荷が80−100%以内であることがバス・モニタ601によってモニタされた場合には、8ビットから10ビットへのコード化規則が選択され、バスの作業負荷が60−80%以内であることがバス・モニタ601によってモニタされた場合には、8ビットから12ビットへのコード化規則が選択され、バスの作業負荷が40−60%以内であることがバス・モニタ601によってモニタされた場合には、8ビットから14ビットへのコード化規則が選択され、バスの作業負荷が20−40%以内であることがバス・モニタ601によってモニタされた場合には、8ビットから16ビットへのコード化規則が選択され、バスの作業負荷が0−20%以内であることがバス・モニタ601によってモニタされた場合には、8ビットから18ビットへのコード化規則が選択される。上記の作業負荷の範囲及び対応するコード化規則は単なる例に過ぎず、本発明は、実際の必要性に基づいて、どのような作業負荷の範囲及び対応するコード化規則も定義することができることを理解されたい。
【0050】
さらに、本実施形態において、上記のエンコーダ/デコーダ615及び/又は635は、IC等のようなハードウェアによって実装することができる。具体的には、エンコーダ/デコーダ615及び/又は635を直接コンピュータ・システムに組み込むこともでき、又はエンコーダ/デコーダ615及び/又は635をコンピュータ・システムのI/Oコントローラに組み込むこともできる。さらに、エンコーダ/デコーダ615及び/又は635は、ソフトウェアによって実装することもできる。所謂ソフトウェアによる実装は、データがCPUによって出力されるべきときに、ソフトウェア・プログラムによってコード化/デコードされた後にデータが出力されることを意味する。nビット・データとn+mビット・データとの間でコード化/デコードを実行することさえできれば、本発明はこれに限定されるものではない。
【0051】
この実施形態において、エンコーダ/デコーダ615及び/又は635によるコード化が実行される前に、バス・モニタ601によってバスの作業負荷がモニタされるが、バス・モニタ601は任意のものであり、その目的は、データ入力/出力効率とI/O電力との間の関係のバランスを取ることであり、バスに送られる複数路のデータを直接バッファリングし、次いでコード化を実行することもできることを理解されたい。
【0052】
次に、この実施形態の、コンピュータ・システムのI/O電力を低減するための装置600のハードウェア構造のより詳細な説明、及び実行プロセスを、図6と共に説明する。
【0053】
図6に示されるように、実際のハードウェア回路は、主に4つのモジュール、すなわち、シフト・レジスタ・アレイA、8−10ビット・エンコーダ、シフト・レジスタ・アレイB、及び制御論理を含む。図3及び図4に示される4路のデータをここでは例として用いており、シフト・レジスタ・アレイAは、8×4シフト・レジスタ行列であり、シフト・レジスタ・アレイBは、10×4シフト・レジスタ行列である。各々のシフト・レジスタは、データを右方向又は下方向にシフトすることができ、具体的な動作は、制御論理及びシフト・カウンタによって制御される。
【0054】
最初に、CPUから送られたデータ(8ビット)をシフト・レジスタ・アレイAの横方向シフト・カウンタによって制御して、右方向にシフトさせる。横方向シフト・カウンタがデータを8つカウントしたところで、データを縦方向シフト・カウンタによって制御して、下方向にシフトアウトし、出力されたデータがコード化されるデータである。次いで、8−10ビット・エンコーダによって、受け取ったコード化されるデータを10ビット・コードに変換して、シフト・レジスタ・アレイBに出力し、このデータを次に縦方向シフト・カウンタによって制御して、下方向にシフトさせる。縦方向シフト・カウンタがデータを4つカウンタしたところで、そのデータを次に、横方向シフト・カウンタによって制御して、右方向にシフトアウトし、シフトアウトされたデータをピンに転送して、バスに送信する。
【0055】
デコードに用いられるハードウェア構造は、コード化のハードウェア構造と同様であり、単に、最初に、デコードされる10ビット・データを10×4のシフト・レジスタ行列を用いてバッファリングし、次いで、デコードされるデータを8ビット・データにデコードし、次いで、デコードされたデータをシフトして、8×4のシフト・レジスタ行列でバッファリングし、出力するだけである。
【0056】
図6に示されるハードウェア構造は、本実施形態のコンピュータ・システムのI/O電力を低減するための装置600の一例に過ぎず、本発明はこれに限定されるものではないこと、そして、本実施形態のコンピュータ・システムのI/O電力を低減するための装置600は、複数路のデータを装置600によってnビットとn+mビットとの間でコード化/デコードし、それによって、スイッチング周波数を効果的に低下させ、I/O電力をさらに低減させることさえできれば、当該技術分野において公知のハードウェア構造体又は将来開発されるハードウェア構造体のいかなる組み合わせによって実行することもできることを理解されたい。
【0057】
本実施形態のコンピュータ・システムのI/O電力を低減するための装置600によって、コンピュータ・システムのバスの作業負荷レベルに基づいて、I/O電力を効果的に低減することができる。従って、エネルギー消費は大幅に節約される。例えば、本発明の発明者によってシミュレーション・システムに実装された8−10ビットのコード化/デコード・システムによって計算すると、付加されるコード化/デコード回路によって生じる電力はI/O電力の約5%であり、上記のコード化によって得られるI/O電力の27%の低減と対比すると、最終的に、20%を上回る正味の利得を得ることができることがわかる。
【0058】
コンピュータ・システム
同じ本発明の概念の下で、図7は、本発明の別の実施形態による、コンピュータ・システムを示すブロック図である。次に、本実施形態を図7と共に説明する。上記の実施形態と同様の部分については、その説明を適宜省略する。
【0059】
図7に示されるように、この実施形態のコンピュータ・システム700は、中央処理装置(CPU)701と、I/Oコントローラ708と、CPU701とI/Oデバイスとの間でデータを転送するように構成されたシステム・バス710と、I/Oコントローラ708及びシステム・バス710を介してCPU701と接続されたI/Oデバイスとを含むものであり、このI/Oデバイスは、ディスプレイ・アダプタ709を介して接続されたディスプレイ装置721、システム・メモリ702、ハード・ディスク・コントローラ711を介して接続されたハード・ディスク716、CDコントローラ712を介して接続されたCD−ROM717、シリアル/パラレル・ポート713を介して接続されたマウス718及びキーボード719等のような入力装置、ネットワーク・インターフェース714を介して接続されたルータ720等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイス715を含むが、それらに限定されるものではない。I/Oコントローラ708は、システム・バス710の作業負荷が閾値を下回った場合に、コンピュータ・システム700のI/O電力を低減するように構成された、コンピュータ・システムのI/O電力を低減するための上記の装置600を含む。システム・メモリ702は、読み出し専用メモリ(ROM)703及びランダム・アクセス・メモリ(RAM)705を含む。読み出し専用メモリ703は、コンピュータの基本入出力システム(BIOS)704を含む。ランダム・アクセス・メモリ705は、ロードされたオペレーティング・システム706、及びアプリケーション707を含む。
【0060】
本実施形態のコンピュータ・システム700によって、コンピュータ・システム700のバスの作業負荷レベルに基づいて、I/O電力を効果的に低減することができる。従って、エネルギー消費が効果的に節約される。例えば、本発明の発明者によってシミュレーション・システムに実装された8−10ビットのコード化/デコード・システムによって計算すると、付加されるコード化/デコード回路によって生じる電力はI/O電力の約5%であり、上記のコード化によって得られるI/O電力の27%の低減と対比すると、最終的に、20%を上回る正味の利得を得ることができることがわかる。
【0061】
コンピュータ・システムのI/O電力を低減するための方法及び装置、並びにコンピュータ・システムを幾つかの例示的な実施形態によって詳細に説明してきたが、これらの上記の実施形態は網羅的ではない。当業者であれば、本発明の精神及び範囲内で種々の変形及び改変を行うことができる。従って、本発明は、これらの実施形態に限定されるものではなく、本発明の範囲は、添付の特許請求の範囲によってのみ規定される。
【符号の説明】
【0062】
600:装置
601:バス・モニタ
605、625、708:I/Oコントローラ
610、630:オリジナル・データ・バッファ
615、635:エンコーダ/デコーダ
620、640:コード化データ・バッファ
700:コンピュータ・システム
701:CPU
702:システム・メモリ
703:読み出し専用メモリ
704:基本入出力システム
705:ランダム・アクセス・メモリ
706:オペレーション・システム
707:アプリケーション
709:ディスプレイ・アダプタ
710:システム・バス
711:ハード・ディスク・コントローラ
712:CDコントローラ
713:シリアル/パラレル・ポート
714:ネットワーク・インターフェース
715:他のデバイス
716:ハード・ディスク
717:CD−ROM
718:マウス
719:キーボード
720:ルータ
721:ディスプレイ装置
800:I/Oデバイス

【特許請求の範囲】
【請求項1】
コンピュータ・システムのI/O電力を低減するための方法であって、
バスに送られる複数路のデータをバッファリングするステップと、
バッファリングされた前記複数路のデータの各々を、コード化規則に基づいてnビットからn+mビットにコード化するステップであって、n及びmが両方とも1以上の整数であり、前記コード化規則がコードのスイッチング周波数を低減するために用いられる、ステップと、
コード化された前記複数路のデータを前記バスに送るステップと、
を含む方法。
【請求項2】
前記コード化ステップの前に、前記コンピュータ・システムの前記バスの作業負荷をモニタするステップと、前記バスの作業負荷が閾値を下回ることがモニタされた場合に、バッファリングされた前記複数路のデータの各々をコード化するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記コード化されたn+mビット・データを前記バスから受け取った後に、前記コード化されたn+mビット・データを、前記コード化規則に基づいてnビット・データにデコードするステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記コード化/デコード・ステップが、ハードウェアによって実装される、請求項3に記載の方法。
【請求項5】
前記コード化/デコード・ステップが、ソフトウェアによって実装される、請求項3に記載の方法。
【請求項6】
前記バスの作業負荷をモニタする前記ステップが、データをCPUとI/Oデバイスとの間で転送することが必要とされるときに、即時に前記バスの作業負荷を取得するステップを含む、請求項2に記載の方法。
【請求項7】
モニタされた前記バスの前記作業負荷に基づいて、対応するコード化規則を選択するステップをさらに含む、請求項2に記載の方法。
【請求項8】
前記複数路のデータの各々をコード化/デコードする前記ステップは、それぞれのエンコーダ/デコーダによって実行される、請求項3に記載の方法。
【請求項9】
前記複数路のデータの各々をコード化/デコードする前記ステップは、共用エンコーダ/デコーダによって実行される、請求項3に記載の方法。
【請求項10】
前記コード化規則は、nビット・データ空間をn+mビット・データ空間でマッピングするコード・ブックを含み、前記nビット・データ空間の全コードが、前記n+mビット・データ空間のコードで1つずつマッピングされる、請求項1から請求項9のいずれか1項に記載の方法。
【請求項11】
前記nビット・データ空間の全コードの各々のスイッチング回数が、前記コードでマッピングされた前記n+mビット・データ空間のコードのスイッチング回数以上である、請求項10に記載の方法。
【請求項12】
コンピュータ・システムのI/O電力を低減するための装置であって、
バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファと、
バッファリングされた前記複数路のデータの各々を、コード化規則に基づいてnビットからn+mビットにコード化するように構成されたエンコーダであって、n及びmが両方とも1以上の整数であり、前記コード化規則が、コードのスイッチング周波数を低減するために用いられる、エンコーダと、
コード化された前記複数路のデータを前記バスに送るためにバッファリングするように構成されたコード化データ・バッファと、
を含む装置。
【請求項13】
前記コンピュータ・システムの前記バスの作業負荷をモニタするように構成されたバス・モニタをさらに含み、前記バスの作業負荷が閾値を下回ることがモニタされた場合に、バッファリングされた前記複数路のデータの各々が、前記エンコーダによってコード化される、請求項12に記載の装置。
【請求項14】
前記コード化されたn+mビット・データを前記バスから受け取った後に、前記コード化されたn+mビット・データを、前記コード化規則に基づいてnビット・データにデコードするように構成されたデコーダをさらに含む、請求項12に記載の装置。
【請求項15】
前記エンコーダ/デコーダが、ハードウェアによって実装される、請求項14に記載の装置。
【請求項16】
前記エンコーダ/デコーダが、ソフトウェアによって実装される、請求項14に記載の装置。
【請求項17】
前記バスの作業負荷が、データをCPUとI/Oデバイスとの間で転送することが必要とされるときに、即時に前記バス・モニタによって取得される、請求項13に記載の装置。
【請求項18】
対応するコード化規則が、モニタされた前記バスの前記作業負荷に基づいて、前記バス・モニタによって選択される、請求項13に記載の装置。
【請求項19】
前記エンコーダが、前記複数路のデータの各々をコード化/デコードするようにそれぞれ構成された複数のエンコーダ/デコーダを含む、請求項14に記載の装置。
【請求項20】
前記エンコーダ/デコーダが、前記複数路のデータによって共用される、請求項14に記載の装置。
【請求項21】
前記コード化規則は、nビット・データ空間をn+mビット・データ空間でマッピングするコード・ブックを含み、前記nビット・データ空間の全コードが、前記n+mビット・データ空間のコードで1つずつマッピングされる、請求項12から請求項20のいずれか1項に記載の装置。
【請求項22】
前記nビット・データ空間の全コードの各々のスイッチング回数が、前記コードでマッピングされた前記n+mビット・データ空間のコードのスイッチング回数以上である、請求項21に記載の装置。
【請求項23】
前記オリジナル・データ・バッファ及び前記コード化データ・バッファが、シフト・レジスタ及びシフト・カウンタによって実装される、請求項21に記載の装置。
【請求項24】
CPUと、
I/Oデバイスと、
前記CPUと前記I/Oデバイスとの間でデータを転送するように構成されたバスと、
コンピュータ・システムのI/O電力を低減するための、請求項12から請求項23のいずれか1項に記載の前記装置と、
を含むコンピュータ・システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2011−501277(P2011−501277A)
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2010−529216(P2010−529216)
【出願日】平成20年10月10日(2008.10.10)
【国際出願番号】PCT/CN2008/072635
【国際公開番号】WO2009/062435
【国際公開日】平成21年5月22日(2009.5.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】