(57)【要約】【課題】  本発明の目的は、コンピュータ・システムのＩ／Ｏ電力を低減するための方法及び装置、並びにコンピュータ・システムを提供することである。【解決手段】  本発明の態様によれば、バスに送られる複数路のデータをバッファリングするステップと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化するステップであって、ｎ及びｍが両方とも１より大きいか又は等しい整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、ステップと、コード化された複数路のデータをバスに送るステップとを含む、コンピュータ・システムのＩ／Ｏ電力を低減するための方法が提供される。【選択図】      図１
2011501277.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムのＩ／Ｏ電力を低減するための方法であって、
バスに送られる複数路のデータをバッファリングするステップと、
バッファリングされた前記複数路のデータの各々を、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化するステップであって、ｎ及びｍが両方とも１以上の整数であり、前記コード化規則がコードのスイッチング周波数を低減するために用いられる、ステップと、
コード化された前記複数路のデータを前記バスに送るステップと、
を含む方法。
【請求項２】
前記コード化ステップの前に、前記コンピュータ・システムの前記バスの作業負荷をモニタするステップと、前記バスの作業負荷が閾値を下回ることがモニタされた場合に、バッファリングされた前記複数路のデータの各々をコード化するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記コード化されたｎ＋ｍビット・データを前記バスから受け取った後に、前記コード化されたｎ＋ｍビット・データを、前記コード化規則に基づいてｎビット・データにデコードするステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記コード化／デコード・ステップが、ハードウェアによって実装される、請求項３に記載の方法。
【請求項５】
前記コード化／デコード・ステップが、ソフトウェアによって実装される、請求項３に記載の方法。
【請求項６】
前記バスの作業負荷をモニタする前記ステップが、データをＣＰＵとＩ／Ｏデバイスとの間で転送することが必要とされるときに、即時に前記バスの作業負荷を取得するステップを含む、請求項２に記載の方法。
【請求項７】
モニタされた前記バスの前記作業負荷に基づいて、対応するコード化規則を選択するステップをさらに含む、請求項２に記載の方法。
【請求項８】
前記複数路のデータの各々をコード化／デコードする前記ステップは、それぞれのエンコーダ／デコーダによって実行される、請求項３に記載の方法。
【請求項９】
前記複数路のデータの各々をコード化／デコードする前記ステップは、共用エンコーダ／デコーダによって実行される、請求項３に記載の方法。
【請求項１０】
前記コード化規則は、ｎビット・データ空間をｎ＋ｍビット・データ空間でマッピングするコード・ブックを含み、前記ｎビット・データ空間の全コードが、前記ｎ＋ｍビット・データ空間のコードで１つずつマッピングされる、請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
前記ｎビット・データ空間の全コードの各々のスイッチング回数が、前記コードでマッピングされた前記ｎ＋ｍビット・データ空間のコードのスイッチング回数以上である、請求項１０に記載の方法。
【請求項１２】
コンピュータ・システムのＩ／Ｏ電力を低減するための装置であって、
バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファと、
バッファリングされた前記複数路のデータの各々を、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化するように構成されたエンコーダであって、ｎ及びｍが両方とも１以上の整数であり、前記コード化規則が、コードのスイッチング周波数を低減するために用いられる、エンコーダと、
コード化された前記複数路のデータを前記バスに送るためにバッファリングするように構成されたコード化データ・バッファと、
を含む装置。
【請求項１３】
前記コンピュータ・システムの前記バスの作業負荷をモニタするように構成されたバス・モニタをさらに含み、前記バスの作業負荷が閾値を下回ることがモニタされた場合に、バッファリングされた前記複数路のデータの各々が、前記エンコーダによってコード化される、請求項１２に記載の装置。
【請求項１４】
前記コード化されたｎ＋ｍビット・データを前記バスから受け取った後に、前記コード化されたｎ＋ｍビット・データを、前記コード化規則に基づいてｎビット・データにデコードするように構成されたデコーダをさらに含む、請求項１２に記載の装置。
【請求項１５】
前記エンコーダ／デコーダが、ハードウェアによって実装される、請求項１４に記載の装置。
【請求項１６】
前記エンコーダ／デコーダが、ソフトウェアによって実装される、請求項１４に記載の装置。
【請求項１７】
前記バスの作業負荷が、データをＣＰＵとＩ／Ｏデバイスとの間で転送することが必要とされるときに、即時に前記バス・モニタによって取得される、請求項１３に記載の装置。
【請求項１８】
対応するコード化規則が、モニタされた前記バスの前記作業負荷に基づいて、前記バス・モニタによって選択される、請求項１３に記載の装置。
【請求項１９】
前記エンコーダが、前記複数路のデータの各々をコード化／デコードするようにそれぞれ構成された複数のエンコーダ／デコーダを含む、請求項１４に記載の装置。
【請求項２０】
前記エンコーダ／デコーダが、前記複数路のデータによって共用される、請求項１４に記載の装置。
【請求項２１】
前記コード化規則は、ｎビット・データ空間をｎ＋ｍビット・データ空間でマッピングするコード・ブックを含み、前記ｎビット・データ空間の全コードが、前記ｎ＋ｍビット・データ空間のコードで１つずつマッピングされる、請求項１２から請求項２０のいずれか１項に記載の装置。
【請求項２２】
前記ｎビット・データ空間の全コードの各々のスイッチング回数が、前記コードでマッピングされた前記ｎ＋ｍビット・データ空間のコードのスイッチング回数以上である、請求項２１に記載の装置。
【請求項２３】
前記オリジナル・データ・バッファ及び前記コード化データ・バッファが、シフト・レジスタ及びシフト・カウンタによって実装される、請求項２１に記載の装置。
【請求項２４】
ＣＰＵと、
Ｉ／Ｏデバイスと、
前記ＣＰＵと前記Ｉ／Ｏデバイスとの間でデータを転送するように構成されたバスと、
コンピュータ・システムのＩ／Ｏ電力を低減するための、請求項１２から請求項２３のいずれか１項に記載の前記装置と、
を含むコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術に関し、より詳細には、コンピュータ・システムのＩ／Ｏ電力を低減する技術に関する。
【背景技術】
【０００２】
コンピュータ設計の分野において、人々が絶えず追求している目標は、チップ・レベルからシステム・レベルまでにわたって電力を低減することである。電力消費が増大するにつれて、システムの電力供給及び冷却のコストは、より高速に増大する。
【０００３】
コンピュータ・システムの電力は、コア電力及びＩ／Ｏ（入力／出力）電力を含む。現在のところ、コンピュータ・システムの電力を低減するための多くの方法が存在し、それらは例えば、
チップ・レベル：低電力のチップセットを設計又は選択する、
システム・レベル：ＤＶＦＳ（Dynamic Voltage andFrequency Scaling：動的電圧及び周波数スケーリング）によって、動作電圧及び動作周波数を動的に低下させる、
コンパイラ・レベル：より低電力の命令を選択する、
ＯＳ（オペレーティング・システム）レベル：タスク・スケジューリングによって、システムが利用されていないときに幾つかの機能ユニットをディスエーブルにする、
ネットワーク・レベル：ＮＩＣ（ネットワーク・インターフェース・カード）が稼働していないときに、待機又は一時停止モードに切り換える、
といった方法である。
【０００４】
具体的な例は、コア電力を調整するための論理を有するＩｎｔｅｌ  ＤＢＳ（DemandBased Switching）電力管理システムである。このシステムは、ＣＰＵの作業負荷に基づいてコア電圧を調整することができる。Ｉｎｔｅｌ  ＤＢＳについての詳細説明は、非特許文献１に記載されている。しかしながら、Ｉｎｔｅｌ  ＤＢＳの電力管理システムは、主にプロセッサ自体に重点を置いており、Ｉ／Ｏ電力を効果的に低減するものではない。
【０００５】
例えば、非特許文献２の論文において、低電力に最適化されたシステムに関して、Ｉ／Ｏ電力と総電力との割合が、１０％から８０％の間、一般的には５０％であることが報告されている。
【０００６】
それゆえ、コンピュータ・システムのコア電力を低減するのと同時に、コンピュータ・システムのＩ／Ｏ電力を低減することが必要とされる。
【０００７】
コンピュータ・システムのＩ／Ｏ電力を低減する方法は、非特許文献３の論文に開示されており、この方法は、以前のデータと現在のデータの文字分布に基づいて計算される最小ハミング距離を有するコードを用いて、転送が行われることを特徴とする。従って、この方法は、データをコード化するために動的コード化方式を採用する必要があり、以前のデータと現在のデータを実時間でモニタして比較しなければならないので、浪費が大きく、効率が低いことが理解される。
【０００８】
そのため、コンピュータ・システムのＩ／Ｏ電力を効果的に低減するための方法が必要である。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Intel white paper: AddressingPower and Thermal Challenges in the Datacenter、［online］、インターネット＜URL: www.intel.com/products/services/intelsolutionservices/success/techdocs/wp/thermal.pdf>
【非特許文献２】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)予稿集
【非特許文献３】M.Madhu、V.Srinivasa及びV.Kamakoti、「Dynamic Coding Technique ForLow-Power Data Bus」、IEEE Computer Society AnnualSymposium on VLSI、2003年、予稿集
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来技術における上記の問題を解決するために、本発明は、コンピュータ・システムのＩ／Ｏ電力を低減するための方法及び装置、並びにコンピュータ・システムを提供する。
【課題を解決するための手段】
【００１１】
本発明の態様によれば、バスに送られる複数路のデータをバッファリングするステップと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化するステップであって、ｎ及びｍが両方とも１以上の整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、ステップと、コード化された複数路のデータをバスに送るステップとを含む、コンピュータ・システムのＩ／Ｏ電力を低減するための方法が提供される。
【００１２】
本発明の別の態様によれば、バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファと、バッファリングされた複数路のデータの各々を、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化するように構成されたエンコーダであって、ｎ及びｍば両方とも１以上の整数であり、コード化規則が、コードのスイッチング周波数を低減するために用いられる、エンコーダと、コード化された複数路のデータを、バスに送るためにバッファリングするように構成されたコード化データ・バッファとを含む、コンピュータ・システムのＩ／Ｏ電力を低減するための装置が提供される。
【００１３】
本発明の別の態様によれば、ＣＰＵと、Ｉ／Ｏデバイスと、ＣＰＵとＩ／Ｏデバイスとの間でデータを転送するように構成されたバスと、コンピュータ・システムのＩ／Ｏ電力を低減するための上記の装置とを含む、コンピュータ・システムが提供される。
【００１４】
本発明の実施形態の以下の詳細説明を図面と共に参照することによって、上記の特徴、利点及び目的がより良く理解できると考えられる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための方法を示すフローチャートである。
【図２】本発明の実施形態による、８ビット・データ及び１０ビット・データのスイッチング回数を示す対比図である。
【図３】本発明の実施形態による、ｎビットからｎ＋ｍビットへのデータのコード化を示す例である。
【図４】本発明の実施形態による、ｎビットからｎ＋ｍビットへのデータのコード化を示す別の例である。
【図５】本発明の別の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための装置を示すブロック図である。
【図６】本発明の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための装置のハードウェア構造を示す略図である。
【図７】本発明の別の実施形態による、コンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【００１６】
以下の実施形態の理解を容易にするために、コンピュータ・システムのＩ／Ｏ電力に影響を与える幾つかの因子についてまず簡単に述べる。Ｉ／Ｏ電力が以下の式（１）によって求められることは周知である。
ＰＩ／Ｏ＝ＣＬ・ＮＳＷ・ＶＤＤ２・ｆ      （１）
ここで、ＣＬは、等価キャパシタンスを表し、ＮＳＷは、システム・クロックに対するスイッチング動作の比率、すなわちスイッチング周波数を表し、ＶＤＤは、動作電圧を表し、ｆは、動作周波数を表す。つまり、Ｉ／Ｏ電力は、動作電圧ＶＤＤの２乗に比例し、かつスイッチング周波数ＮＳＷに比例する。本発明は、スイッチング周波数を低下させることによってＩ／Ｏ電力を低減しようとするものである。特に、システム・クロックは、一般には一定に保持されるので、本発明は、スイッチング動作を減らすことによってＩ／Ｏ電力を低減するものである。
【００１７】
図１は、本発明の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための方法を示すフローチャートである。図１の方法の実施形態を説明する前に、バスに送られるデータを一時的にコード化することによってスイッチング周波数を低下させることによりＩ／Ｏ電力を低減する原理を、図２及び表１〜６と共に説明する。
【００１８】
図２は、本発明の実施形態による、８ビット・データと１０ビット・データのスイッチング動作の回数を示す、スイッチング回数の対比図である。図２に示されるように、８ビット・データ１０１０１０１０については、そのスイッチング回数は７であり、この８ビット・データに対応する１０ビット・データ１１１１１０１１１０については、そのスイッチング回数は３である。従って、８ビット・データが１０ビット・データにコード化された場合には、最大スイッチング回数は７から３に減少し、スイッチング周波数が低下し、その結果としてＩ／Ｏ電力が低減する。以下の表１〜６は、８ビット・データ空間を１０ビット・データ空間でマッピングするコード・ブックと、スイッチング回数とを示す。
【００１９】
【表１】
2011501277.tif 000003
【表２】
2011501277.tif 000004
【表３】
2011501277.tif 000005
【表４】
2011501277.tif 000006
【表５】
2011501277.tif 000007
【表６】
2011501277.tif 000008
【００２０】
表１〜６のコード・ブックの生成規則及びフローは、以下のように詳細に説明される。
（１）変換されるコード空間（８ビット）の全コードを、スイッチング回数でソートする。
（２）ターゲットのコード空間（１０ビット）の全コードを、スイッチング回数でソートする。
（３）ソートされた２つのコード・ブックが１つずつマッピングされ、このマッピング原理は、
（３．１）高スイッチング回数を有するコードは、高スイッチング回数を有するコードでマッピングされ、低スイッチング回数を有するコードは、低スイッチング回数を有するコードでマッピングされる。
（３．２）８ビット・データ空間が１０ビット・データ空間に変換された後は、スイッチング速度を増大させることはできない。すなわち、８ビットの総スイッチング回数（表１における８９６）は、マッピングされた１０ビットの総スイッチング回数（表１〜６における６５４）より大きいか又は等しくなければならない。
（３．３）同一のスイッチング回数を有するコード間には、どのような対応関係が存在してもよく、例えば、スイッチング回数が６回の８ビット・コード（例えば１１０１０１０１）は、対応して、スイッチング回数が３回の１０ビット・コードのうちのどのコードに変換されてもよい。
【００２１】
表１〜６から、８ビット・データ空間の総スイッチング回数が８９６であることが計算される。しかしながら、この数値８９６は、電力性能利得を平均の意味で統計的に表すために用いられるに過ぎず、入力データの集積が他の文字を備える場合には、それより高くなることもあり、又は低くなることもある。１０ビット・データ空間の総スイッチング回数は６５４であり、２以下のスイッチング回数を有するコードの全てがこのコード・ブックに含まれており、３に等しいスイッチング回数を有する１０ビット・コードの一部が表１〜６に含まれているので、この数値は、１０ビット・データ空間の最適値である。それに加えて、表１〜６に含まれていない（すなわち、使用されていない）幾つかのコードも存在するが、この総スイッチング回数６５４を連続的に低減することは不可能である。従って、８ビット・データが１０ビット・データにコード化される場合には、総スイッチング回数を８９６から６５４に低減することができるので、その結果として、Ｉ／Ｏ電力を２７％低減することができる。さらに、本発明の実装により費やされる特定の消費分があるため、この消費分を差し引くと、Ｉ／Ｏ電力を約２０％低減することができることになる。
【００２２】
さらに、ここまでは８ビット・データ空間から１０ビット・データ空間への変換を例として本発明のコード化規則を説明してきたが、当業者であれば、表１〜６のコード化規則は、８ビット・データ空間から１０ビット・データ空間への唯一のコード化規則を構成するものではなく、実施形態の１つに過ぎないことを理解すべきである。総スイッチング回数をこの場合は６５４回まで低減することを保証するという条件の下で、他のコード化規則を選択することができ、例えば、スイッチング回数が３に等しい他のコードを用いて８ビット・データ空間のコードをマッピングすることができる。さらに、上記のコード化規則に基づいて、ｎ及びｍが両方とも１以上の整数であるとして、どのようなｎビットをｎ＋ｍビットにコード化することもでき、その結果、スイッチング周波数が低下することによって、コンピュータ・システムのＩ／Ｏ電力が低減される。
【００２３】
次に、添付の図面と共に、本発明の各々の実施形態を詳細に説明する。
【００２４】
コンピュータ・システムのＩ／Ｏ電力を低減するための方法
図１は、本発明の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための方法を示すフローチャートである。図１に示されるように、まず、ステップ１０１において、任意に、コンピュータ・システムのバスの作業負荷がモニタされる。具体的には、バス・モニタ又は当業者には公知のいずれかのモジュール若しくは技術を用いてバスの作業負荷をモニタすることができ、例えば、レジスタ内のデータの待ち状況をコンピュータのオペレーティング・システムを通じて連続的に読み出すことによって、バスの作業状況に関する情報が取得され、バスの作業負荷がモニタされる。さらに、データをＣＰＵとＩ／Ｏデバイスとの間で転送することが必要とされるときには、即時にバスの作業負荷が取得されるが、必要なときにバスの作業負荷を取得することさえできれば、本発明はこれに限定されるものではない。ここで言及されるＩ／Ｏデバイスは、ディスプレイ装置、読み出し専用メモリ及びランダム・アクセス・メモリ等のようなシステム・メモリ、ハード・ディスク、ＣＤ−ＲＯＭ、マウス及びキーボード等のような入力装置、ルータ等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイスを含むが、それらに限定されるものではなく、本発明はＩ／Ｏデバイスに限定されるものではなく、バスを介してＣＰＵに入力／出力するどのようなデバイスも、ここではＩ／Ｏデバイスとすることができることを理解されたい。バスの作業負荷をモニタする上記のステップは、この実施形態の任意ステップに過ぎないこと、そして、その目的は、バスによるデータ入力／出力の効率とＩ／Ｏ電力との間の関係のバランスをより上手く取ることであることを理解すべきであり、この実施形態において、バスをモニタせずに、以下のステップを直接実行することもできる。
【００２５】
次に、ステップ１０２において、バスに送られる複数路のデータ（plurality ofways of data）がバッファリングされる。この実施形態において、バスに送られる複数路のデータは、コンピュータ・システムのどのメモリを用いてバッファリングされてもよく、例えばデータをバッファリングするためにシフト・レジスタが用いられるが、本発明はこれに限定されるものではない。
【００２６】
次に、ステップ１０３において、ステップ１０２でバッファリングされた複数路のデータの各々が、コード化規則に基づいてｎビットからｎ＋ｍビットにコード化され、ここで、ｎ及びｍは両方とも１以上の整数である。ここでのコード化規則はすなわち、図２及び表１〜６と共に説明された上記のコード化規則であり、コードのスイッチング周波数を低減するために用いられる。
【００２７】
次に、この実施形態のコード化プロセスを、ｎ＝８、ｍ＝２を例として、図３及び図４と共に詳細に説明する。
【００２８】
図３は、本発明の実施形態による、８ビットから１０ビットへのデータのコード化を示す例である。図３に示されるように、バスがビジーではないときには、バスに送られる４路のデータは、オリジナル・データ・バッファ内に１路当たり８ビットのフォーマットでバッファリングされ、次いで複数路の８ビット・データがそれぞれ、この４路のデータに対して共用のエンコーダを用いて、１０ビット・データにコード化され、コード化された１０ビット・データは、コード化データ・バッファ内にバッファリングされる。具体的には、複数路の８ビット・データを、共用エンコーダによって、表１〜６に示されるような事前に記憶されたコード・ブックを用いて、対応する１０ビット・データにコード化することができる。ここでは例として４路のデータが示されているが、本発明はこれに限定されるものではなく、本発明は、特定の用途に基づいて変更することができることを理解されたい。
【００２９】
図４は、本発明の実施形態による、８ビットから１０ビットへのデータのコード化を示す別の例である。この実施形態においては、複数路のデータに対して、それぞれ独自のエンコーダが設けられており、コード化プロセスは、上記の図３の例と同じであるので、ここでは適宜省略される。この例においては、複数路のデータの各々に対してそれぞれのエンコーダが設けられることが示されているが、本発明はこれに限定されるものではなく、本発明は、複数路の８ビット・データの各々を１０ビット・データにコード化することさえできれば、実際の必要性に基づいて、どの複数路のデータに対してどのようなエンコーダを設けてもよいことを理解されたい。
【００３０】
さらに、本発明のコード化規則は、ここでは８ビットから１０ビットへのコード化に基づいて説明されているが、本発明はこれに限定されるものではなく、本発明は、スイッチング周波数をそのコード化規則に基づいて低下させることさえできれば、いかなるｎビット・データをｎ＋ｍのデータにコード化してもよいことを理解されたい。
【００３１】
この実施形態において、バッファリングされた複数路のデータをコード化するステップであるステップ１０３において、任意に、閾値を定義することができ、この閾値は、ステップ１０１においてモニタされる作業負荷とすることができ、例えば、この閾値は０．６と定義され、すなわち、バスの作業負荷が６０％以上のときには、バスはビジーであると定義され、バスの作業負荷が６０％未満のときには、バスはビジーではないと定義されることになる。この０．６という閾値は単なる例に過ぎず、バスがビジーである場合とビジーでない場合との閾値は、実際の事例に基づいて、０と１との間のいずれかの値として定義することができ、本発明はこの閾値の定義に限定されるものではないことを理解されたい。
【００３２】
すなわち、バスの作業負荷が０．６のような上記の閾値を下回ることがモニタされたとき、すなわち、バスがビジーではないときに、バスに送られるバッファリングされた複数路のデータがｎビットからｎ＋ｍビットにコード化されるが、本発明はこれに限定されるものではない。
【００３３】
さらに、この実施形態において、バスの作業負荷は、８０−１００％、６０−８０％、４０−６０％、２０−４０％、０−２０％のような幾つかの範囲として定義することができ、異なる作業負荷レベルに対して、異なるコード化規則がそれぞれ選択される。例えば、ステップ１０１においてバスの作業負荷が８０−１００％以内であることがモニタされた場合には、８ビットから１０ビットへのコード化規則が選択され、ステップ１０１においてバスの作業負荷が６０−８０％以内であることがモニタされた場合には、８ビットから１２ビットへのコード化規則が選択され、ステップ１０１においてバスの作業負荷が４０−６０％以内であることがモニタされた場合には、８ビットから１４ビットへのコード化規則が選択され、ステップ１０１においてバスの作業負荷が２０−４０％以内であることがモニタされた場合には、８ビットから１６ビットへのコード化規則が選択され、ステップ１０１においてバスの作業負荷が０−２０％以内であることがモニタされた場合には、８ビットから１８ビットへのコード化規則が選択される。上記の作業負荷の範囲及び対応するコード化規則は単なる例に過ぎず、本発明は、実際の必要性に基づいて、どのような作業負荷の範囲及び対応するコード化規則も定義することができることを理解されたい。
【００３４】
最後に、ステップ１０４において、コード化された複数路のデータがバッファリングされ、バッファリングされたデータがバスに送られ、コード化されたデータが、バスを介してＣＰＵ又はＩ／Ｏデバイスに送られる。この実施形態において、バスに送られる複数路のデータは、コンピュータ・システムのどのメモリを用いてバッファリングされてもよく、例えば、バッファリングのためにシフト・レジスタが用いられるが、本発明はこれに限定されるものではない。
【００３５】
さらに、上記のステップ１０３におけるコード化の前に、本実施形態の方法において、ステップ１０１において、バスの作業負荷が閾値を下回ることがモニタされたときに、コード化規則を、ＣＰＵ側Ｉ／Ｏコントローラ、及び／又はＩ／Ｏデバイス側Ｉ／Ｏコントローラに送ることもできる。受け取ったコード化規則に基づいて、ＣＰＵ側Ｉ／Ｏコントローラ及び／又はＩ／Ｏデバイス側Ｉ／Ｏコントローラによって、対応するエンコーダが制御され、ステップ１０３においてコード化が行われる。
【００３６】
さらに、バスからのコード化されたｎ＋ｍビット・データがＣＰＵ又はＩ／Ｏデバイスに送られる前に、この実施形態の方法は、コード化されたｎ＋ｍビット・データを、上記のコード化規則に基づいてｎビット・データにデコードするステップをさらに含み、このデコードプロセスは、上記のコード化プロセスと反対であり、すなわち、最初に、バスからのコード化された複数路のｎ＋ｍビット・データがバッファリングされ、次いで、バッファリングされたｎ＋ｍビット・データが、上記のコード化規則に基づいて、ｎビット・データにデコードされ、次いで、デコードされた複数路のｎビット・データがバッファリングされ、最後に、バッファリングされたｎビット・データがＣＰＵ又はＩ／Ｏデバイスに送られる。
【００３７】
さらに、本実施形態において、上記のコード化／デコードは、ＩＣ等のようなハードウェアによって実装することができる。具体的には、エンコーダ／デコーダを直接コンピュータ・システムに組み込むこともでき、又はエンコーダ／デコーダをコンピュータ・システムのＩ／Ｏコントローラに組み込むこともできる。さらに、コード化／デコードは、ソフトウェアによって実装することもできる。所謂ソフトウェアによる実装は、データがＣＰＵによって出力されるべきときに、ソフトウェア・プログラムによってコード化／デコードされた後にデータが出力されることを意味する。ｎビット・データとｎ＋ｍビット・データとの間でコード化／デコードを実行することさえできれば、本発明はこれに限定されるものではない。
【００３８】
本実施形態において、ステップ１０３におけるコード化の前に、ステップ１０１においてバスの作業負荷がモニタされるが、ステップ１０１におけるモニタ・プロセスは任意であり、その目的は、データ入力／出力効率とＩ／Ｏ電力との間の関係のバランスを取ることであることを再度強調する。バスをモニタせずに、バスに送られる複数路のデータを直接バッファリングし、その後、コード化を実行することもできる。
【００３９】
本実施形態のコンピュータ・システムのＩ／Ｏ電力を低減する方法によって、Ｉ／Ｏ電力をコンピュータ・システムのバスの作業負荷レベルに基づいて効果的に低減することができる。これにより、エネルギー消費が大幅に節約される。本発明の発明者によって、８−１０ビットのコード化／デコード・システムが、シミュレーション・システム内に実装される。具体的には、本発明者は、エンコーダ／デコーダのハードウェア設計を完成させる。次に、データがシミュレーション・システム内にランダムに入力されるようにシミュレーションして、エンコーダ／デコーダ電力、及び非コード化状態下でデータを出力する際に生じるＩ／Ｏ電力（両方ともシミュレーション・プロセス）を計算すると、付加されるコード化／デコード回路によって生じる電力はＩ／Ｏ電力の約５％となり、その具体的な値は、シミュレーション・ソフトウェア、システム入力／出力、エンコーダ／デコーダ設計等に関係する。従って、上記のコード化によって得られるＩ／Ｏ電力の２７％の低減と対比すると、最終的に、２０％を上回る正味の利得を得ることができる。
【００４０】
コンピュータ・システムのＩ／Ｏ電力を低減するための装置
同じ発明の概念の下で、図５は、本発明の別の実施形態による、コンピュータ・システムのＩ／Ｏ電力を低減するための装置を示すブロック図である。次に、本実施形態を図５と共に説明する。上記の実施形態と同様の部分については、その説明を適宜省略する。
【００４１】
図５に示されるように、この実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００は、コンピュータ・システムのバスの作業負荷をモニタするように構成されたバス・モニタ６０１を含む。具体的には、当業者には公知のいずれかのモジュール又は技術をバス・モニタ６０１として用いて、バスの作業負荷をモニタすることができ、例えば、レジスタ内のデータの待ち状況をコンピュータのオペレーティング・システムを通じて連続的に読み出すことによって、バスの作業状況に関連する情報が取得され、バスの作業負荷がモニタされる。さらに、データをＣＰＵ７０１とＩ／Ｏデバイス８００との間で転送することが必要とされる場合には即時に、バス・モニタ６０１によってバスの作業負荷が取得されるが、必要なときにバスの作業負荷を取得することさえできれば、本発明はこれに限定されるものではない。ちなみに、バスの作業負荷をモニタするように構成されたバス・モニタ６０１は、この実施形態の装置６００の任意ユニットに過ぎず、その目的は、バスによるデータ入力／出力の効率とＩ／Ｏ電力との間の関係のバランスをより上手く取ることであり、この実施形態において、バスはモニタされなくてもよく、すなわち、装置６００はバス・モニタ６０１を含まなくてもよいことに言及する。
【００４２】
この実施形態において、Ｉ／Ｏデバイス８００は、ディスプレイ装置、読み出し専用メモリ及びランダム・アクセス・メモリ等のようなシステム・メモリ、ハード・ディスク、ＣＤ−ＲＯＭ、マウス及びキーボード等のような入力装置、ルータ等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイスを含むが、それらに限定されるものではなく、本発明はＩ／Ｏデバイスに限定されるものではなく、バスを介してＣＰＵ７０１に入力／出力するどのようなデバイスも、ここではＩ／Ｏデバイス８００とすることができる。
【００４３】
この実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００はまた、バスに送られる複数路のデータをバッファリングするように構成されたオリジナル・データ・バッファ６１０及び／又は６３０を含む。この実施形態において、オリジナル・データ・バッファ６１０及び／又は６３０は、コンピュータ・システムのどのメモリとるすこともでき、例えばシフト・レジスタとすることができるが、本発明は、それに限定されるものではない。
【００４４】
さらに、ｎビットからｎ＋ｍビットへのコード化規則を、ＣＰＵ側エンコーダ／デコーダ６１５及び／又はＩ／Ｏデバイス側エンコーダ／デコーダ６３５にメッセージ送信することによって、この実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００によって、ｎビットからｎ＋ｍビットへのコード化が実行され、ここで、ｎ及びｍは両方とも１以上の等しい整数である。さらに、ｎビットからｎ＋ｍビットへのコード化規則を、ＣＰＵ側Ｉ／Ｏコントローラ６０５及び／又はＩ／Ｏデバイス側Ｉ／Ｏコントローラ６２５にメッセージ送信することもできる。コード化規則を受け取った後に、オリジナル・データ・バッファ６１０及び／又は６３０内にバッファリングされたデータは、対応するエンコーダ／デコーダ６１５及び／又は６３５によって、ｎビットからｎ＋ｍビットにコード化され、これは、ＣＰＵ側Ｉ／Ｏコントローラ６０５及び／又はＩ／Ｏデバイス側Ｉ／Ｏコントローラ６２５によって制御される。ここで説明されるコード化規則は、すなわち、図２及び表１〜６と共に説明された上記のコード化規則であり、コードのスイッチング周波数を低減するために用いられる。
【００４５】
この実施形態において、任意に、エンコーダ／デコーダ６１５及び／又は６３５について、バッファリングされた複数路のデータをコード化するかどうかを判断する閾値を定義することができ、この閾値は、バス・モニタ６０１によってモニタされるバスの作業負荷とすることができ、例えば、この閾値は０．６と定義され、すなわち、バスの作業負荷が６０％以上のときには、バスはビジーであると定義され、バスの作業負荷が６０％未満のときには、バスはビジーではないと定義されることになる。この０．６という閾値は単なる例に過ぎず、バスがビジーである場合とビジーでない場合との閾値は、実際の事例に基づいて、０と１との間のいずれかの値（すなわち、０以上かつ１以下）と定義することができることができ、本発明はこの閾値の定義に限定されるものではないことを理解されたい。
【００４６】
この実施形態のエンコーダ／デコーダ６１５及び／又は６３５のコード化プロセスは、図３及び図４と共に説明された上記の実施形態のコード化プロセスと同様であり、その説明は、ここでは適宜省略される。
【００４７】
エンコーダ／デコーダ６１５及び／又は６３５によってコード化が実行された後に、コード化された複数路のデータが、コード化データ・バッファ６２０及び／又は６４０内にバッファリングされる。次いで、コード化データ・バッファ６２０及び／又は６４０内にバッファリングされたデータがバスに送られ、コード化されたデータが、バスを介してＣＰＵ７０１又はＩ／Ｏデバイス８００に送られる。
【００４８】
バスからのコード化されたｎ＋ｍビット・データがＣＰＵ７０１又はＩ／Ｏデバイス８００に送られる前に、コード化されたｎ＋ｍビット・データは、上記のコード化規則に基づいて、この実施形態のエンコーダ／デコーダ６１５及び／又は６３５によってｎビット・データにデコードされ、このデコードプロセスは、上記の実施形態において図３及び図４と共に説明されたコード化プロセスと反対であり、すなわち、最初に、バスからのコード化された複数路のｎ＋ｍビット・データが、コード化データ・バッファ６２０及び／又は６４０を用いてバッファリングされ、次いで、バッファリングされたｎ＋ｍビット・データが、上記のコード化規則に基づいて、ｎビット・データにデコードされ、次いで、デコードされた複数路のｎビット・データが、オリジナル・データ・バッファ６１０及び／又は６３０内にバッファリングされ、最後に、バッファリングされたｎビット・データが、ＣＰＵ７０１又はＩ／Ｏデバイス８００に送られる。
【００４９】
任意に、この実施形態において、バスの作業負荷は、８０−１００％、６０−８０％、４０−６０％、２０−４０％、０−２０％のような幾つかの範囲として定義することができ、異なる作業負荷レベルに対して、異なるコード化規則がそれぞれ選択される。例えば、バスの作業負荷が８０−１００％以内であることがバス・モニタ６０１によってモニタされた場合には、８ビットから１０ビットへのコード化規則が選択され、バスの作業負荷が６０−８０％以内であることがバス・モニタ６０１によってモニタされた場合には、８ビットから１２ビットへのコード化規則が選択され、バスの作業負荷が４０−６０％以内であることがバス・モニタ６０１によってモニタされた場合には、８ビットから１４ビットへのコード化規則が選択され、バスの作業負荷が２０−４０％以内であることがバス・モニタ６０１によってモニタされた場合には、８ビットから１６ビットへのコード化規則が選択され、バスの作業負荷が０−２０％以内であることがバス・モニタ６０１によってモニタされた場合には、８ビットから１８ビットへのコード化規則が選択される。上記の作業負荷の範囲及び対応するコード化規則は単なる例に過ぎず、本発明は、実際の必要性に基づいて、どのような作業負荷の範囲及び対応するコード化規則も定義することができることを理解されたい。
【００５０】
さらに、本実施形態において、上記のエンコーダ／デコーダ６１５及び／又は６３５は、ＩＣ等のようなハードウェアによって実装することができる。具体的には、エンコーダ／デコーダ６１５及び／又は６３５を直接コンピュータ・システムに組み込むこともでき、又はエンコーダ／デコーダ６１５及び／又は６３５をコンピュータ・システムのＩ／Ｏコントローラに組み込むこともできる。さらに、エンコーダ／デコーダ６１５及び／又は６３５は、ソフトウェアによって実装することもできる。所謂ソフトウェアによる実装は、データがＣＰＵによって出力されるべきときに、ソフトウェア・プログラムによってコード化／デコードされた後にデータが出力されることを意味する。ｎビット・データとｎ＋ｍビット・データとの間でコード化／デコードを実行することさえできれば、本発明はこれに限定されるものではない。
【００５１】
この実施形態において、エンコーダ／デコーダ６１５及び／又は６３５によるコード化が実行される前に、バス・モニタ６０１によってバスの作業負荷がモニタされるが、バス・モニタ６０１は任意のものであり、その目的は、データ入力／出力効率とＩ／Ｏ電力との間の関係のバランスを取ることであり、バスに送られる複数路のデータを直接バッファリングし、次いでコード化を実行することもできることを理解されたい。
【００５２】
次に、この実施形態の、コンピュータ・システムのＩ／Ｏ電力を低減するための装置６００のハードウェア構造のより詳細な説明、及び実行プロセスを、図６と共に説明する。
【００５３】
図６に示されるように、実際のハードウェア回路は、主に４つのモジュール、すなわち、シフト・レジスタ・アレイＡ、８−１０ビット・エンコーダ、シフト・レジスタ・アレイＢ、及び制御論理を含む。図３及び図４に示される４路のデータをここでは例として用いており、シフト・レジスタ・アレイＡは、８×４シフト・レジスタ行列であり、シフト・レジスタ・アレイＢは、１０×４シフト・レジスタ行列である。各々のシフト・レジスタは、データを右方向又は下方向にシフトすることができ、具体的な動作は、制御論理及びシフト・カウンタによって制御される。
【００５４】
最初に、ＣＰＵから送られたデータ（８ビット）をシフト・レジスタ・アレイＡの横方向シフト・カウンタによって制御して、右方向にシフトさせる。横方向シフト・カウンタがデータを８つカウントしたところで、データを縦方向シフト・カウンタによって制御して、下方向にシフトアウトし、出力されたデータがコード化されるデータである。次いで、８−１０ビット・エンコーダによって、受け取ったコード化されるデータを１０ビット・コードに変換して、シフト・レジスタ・アレイＢに出力し、このデータを次に縦方向シフト・カウンタによって制御して、下方向にシフトさせる。縦方向シフト・カウンタがデータを４つカウンタしたところで、そのデータを次に、横方向シフト・カウンタによって制御して、右方向にシフトアウトし、シフトアウトされたデータをピンに転送して、バスに送信する。
【００５５】
デコードに用いられるハードウェア構造は、コード化のハードウェア構造と同様であり、単に、最初に、デコードされる１０ビット・データを１０×４のシフト・レジスタ行列を用いてバッファリングし、次いで、デコードされるデータを８ビット・データにデコードし、次いで、デコードされたデータをシフトして、８×４のシフト・レジスタ行列でバッファリングし、出力するだけである。
【００５６】
図６に示されるハードウェア構造は、本実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００の一例に過ぎず、本発明はこれに限定されるものではないこと、そして、本実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００は、複数路のデータを装置６００によってｎビットとｎ＋ｍビットとの間でコード化／デコードし、それによって、スイッチング周波数を効果的に低下させ、Ｉ／Ｏ電力をさらに低減させることさえできれば、当該技術分野において公知のハードウェア構造体又は将来開発されるハードウェア構造体のいかなる組み合わせによって実行することもできることを理解されたい。
【００５７】
本実施形態のコンピュータ・システムのＩ／Ｏ電力を低減するための装置６００によって、コンピュータ・システムのバスの作業負荷レベルに基づいて、Ｉ／Ｏ電力を効果的に低減することができる。従って、エネルギー消費は大幅に節約される。例えば、本発明の発明者によってシミュレーション・システムに実装された８−１０ビットのコード化／デコード・システムによって計算すると、付加されるコード化／デコード回路によって生じる電力はＩ／Ｏ電力の約５％であり、上記のコード化によって得られるＩ／Ｏ電力の２７％の低減と対比すると、最終的に、２０％を上回る正味の利得を得ることができることがわかる。
【００５８】
コンピュータ・システム
同じ本発明の概念の下で、図７は、本発明の別の実施形態による、コンピュータ・システムを示すブロック図である。次に、本実施形態を図７と共に説明する。上記の実施形態と同様の部分については、その説明を適宜省略する。
【００５９】
図７に示されるように、この実施形態のコンピュータ・システム７００は、中央処理装置（ＣＰＵ）７０１と、Ｉ／Ｏコントローラ７０８と、ＣＰＵ７０１とＩ／Ｏデバイスとの間でデータを転送するように構成されたシステム・バス７１０と、Ｉ／Ｏコントローラ７０８及びシステム・バス７１０を介してＣＰＵ７０１と接続されたＩ／Ｏデバイスとを含むものであり、このＩ／Ｏデバイスは、ディスプレイ・アダプタ７０９を介して接続されたディスプレイ装置７２１、システム・メモリ７０２、ハード・ディスク・コントローラ７１１を介して接続されたハード・ディスク７１６、ＣＤコントローラ７１２を介して接続されたＣＤ−ＲＯＭ７１７、シリアル／パラレル・ポート７１３を介して接続されたマウス７１８及びキーボード７１９等のような入力装置、ネットワーク・インターフェース７１４を介して接続されたルータ７２０等のようなネットワーク・デバイス、当該技術分野において公知の、又は将来開発される他のデバイス７１５を含むが、それらに限定されるものではない。Ｉ／Ｏコントローラ７０８は、システム・バス７１０の作業負荷が閾値を下回った場合に、コンピュータ・システム７００のＩ／Ｏ電力を低減するように構成された、コンピュータ・システムのＩ／Ｏ電力を低減するための上記の装置６００を含む。システム・メモリ７０２は、読み出し専用メモリ（ＲＯＭ）７０３及びランダム・アクセス・メモリ（ＲＡＭ）７０５を含む。読み出し専用メモリ７０３は、コンピュータの基本入出力システム（ＢＩＯＳ）７０４を含む。ランダム・アクセス・メモリ７０５は、ロードされたオペレーティング・システム７０６、及びアプリケーション７０７を含む。
【００６０】
本実施形態のコンピュータ・システム７００によって、コンピュータ・システム７００のバスの作業負荷レベルに基づいて、Ｉ／Ｏ電力を効果的に低減することができる。従って、エネルギー消費が効果的に節約される。例えば、本発明の発明者によってシミュレーション・システムに実装された８−１０ビットのコード化／デコード・システムによって計算すると、付加されるコード化／デコード回路によって生じる電力はＩ／Ｏ電力の約５％であり、上記のコード化によって得られるＩ／Ｏ電力の２７％の低減と対比すると、最終的に、２０％を上回る正味の利得を得ることができることがわかる。
【００６１】
コンピュータ・システムのＩ／Ｏ電力を低減するための方法及び装置、並びにコンピュータ・システムを幾つかの例示的な実施形態によって詳細に説明してきたが、これらの上記の実施形態は網羅的ではない。当業者であれば、本発明の精神及び範囲内で種々の変形及び改変を行うことができる。従って、本発明は、これらの実施形態に限定されるものではなく、本発明の範囲は、添付の特許請求の範囲によってのみ規定される。
【符号の説明】
【００６２】
６００：装置
６０１：バス・モニタ
６０５、６２５、７０８：Ｉ／Ｏコントローラ
６１０、６３０：オリジナル・データ・バッファ
６１５、６３５：エンコーダ／デコーダ
６２０、６４０：コード化データ・バッファ
７００：コンピュータ・システム
７０１：ＣＰＵ
７０２：システム・メモリ
７０３：読み出し専用メモリ
７０４：基本入出力システム
７０５：ランダム・アクセス・メモリ
７０６：オペレーション・システム
７０７：アプリケーション
７０９：ディスプレイ・アダプタ
７１０：システム・バス
７１１：ハード・ディスク・コントローラ
７１２：ＣＤコントローラ
７１３：シリアル／パラレル・ポート
７１４：ネットワーク・インターフェース
７１５：他のデバイス
７１６：ハード・ディスク
７１７：ＣＤ−ＲＯＭ
７１８：マウス
７１９：キーボード
７２０：ルータ
７２１：ディスプレイ装置
８００：Ｉ／Ｏデバイス
【図１】
2011501277.tif 000009
【図２】
2011501277.tif 000010
【図３】
2011501277.tif 000011
【図４】
2011501277.tif 000012
【図５】
2011501277.tif 000013
【図６】
2011501277.tif 000014
【図７】
2011501277.tif 000015
【国際調査報告】
2011501277.tif 000016
2011501277.tif 000017