(57)【特許請求の範囲】
【請求項１】
第１のコンポーネントと、
第２のコンポーネントと、
前記第１のコンポーネントと前記第２のコンポーネントとの間の通信インタフェースと  を備え、
第１のコンポーネントから第２のコンポーネントへ送信される通信パケットは、ビット反転識別子を有  し、  
前記ビット反転識別子は、ビット反転の信号伝達のための期間が所定の閾値よりも短い場合に、前記通信パケット内に提供され、ビット反転の信号伝達のための期間が所定の閾値よりも長い場合に、パイプライン内の前記通信パケットの前の通信パケット内に提供される
システム。
【請求項２】
前記ビット反転識別子は、前記通信パケットの第１のセクションに位置し、前記通信パケットの第２のセクションについてビット反転を指示する
請求項１に記載のシステム。
【請求項３】
前記第１のセクションはコマンド領域の第１の部分を有し、前記第２のセクションは前記コマンド領域の第２の部分を有する
請求項２に記載のシステム。
【請求項４】
前記第１のセクションはコマンド領域を有し、前記第２のセクションはアドレス領域及びデータ領域の少なくとも１つを有する
請求項２に記載のシステム。
【請求項５】
前記ビット反転識別子は、少なくとも１つの次の通信パケットについてビット反転を指示する
請求項１に記載のシステム。
【請求項６】
前記ビット反転識別子は、前記通信パケットの少なくとも一部及び少なくとも１つの次の通信パケットについてビット反転を指示する
請求項１に記載のシステム。
【請求項７】
前記第２のコンポーネントはダイナミックランダムアクセスメモリ（ＤＲＡM）を有し、前記通信パケットは書き込みパケットを有する
請求項１に記載のシステム。
【請求項８】
送信元コンポーネントから通信パケットを受信するように適合された受信コンポーネント
を備え、
ビット反転識別子を伴う少なくとも１つの通信パケットが、前記送信元コンポーネントから前記受信コンポーネントへ送信され、
前記受信コンポーネントは、前記ビット反転識別子に基づいて、反転したビットを有するとして所定の通信パケットセクションを解釈するように選択的に構成され、
前記ビット反転識別子は、ビット反転の信号伝達のための期間が所定の閾値よりも短い場合に、前記通信パケット内に提供され、ビット反転の信号伝達のための期間が所定の閾値よりも長い場合に、パイプライン内の前記通信パケットの前の通信パケット内に提供される
装置。
【請求項９】
前記所定の通信パケットセクションは、前記ビット反転識別子を伴う前記通信パケットの一部である
請求項８に記載の装置。
【請求項１０】
通信インタフェースを介する送信のために通信パケットのビットを選択的に反転することと、
ビット反転の信号伝達のための期間が所定の閾値よりも長いか短いかを判断することと、  
ビット反転の信号伝達のための期間が所定の閾値よりも短い場合に、前記通信パケット内の関連するビット反転識別子を提供することと、  
ビット反転の信号伝達のための期間が所定の閾値よりも長い場合に、パイプライン内の前記通信パケットの前の通信パケット内の関連するビット反転識別子を提供することと  
を含む方法。
【請求項１１】
前記関連するビット反転識別子を提供することは、
前記ビット反転識別子を有する通信パケットコマンドを準備すること
を含む
請求項１０に記載の方法。
【請求項１２】
パイプラインの情報を分析することと、
前記情報に基づいて前記通信パケットのビットを反転するかを判断すること
をさらに含む請求項１０に記載の方法。
【請求項１３】
パイプラインの情報を分析することと、
前記情報に基づいて複数の通信パケット内のビットを反転することを決定すること
をさらに含み、
前記ビット反転識別子は、前記複数の通信パケットと関連する
請求項１０に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
選択的なデータのビット反転は、様々な状況で消費電力を低減することができる。
一般に、消費電力は、デフォルトの電圧レベルを別の状態に強制することの発生を低減することによって低減される。
例えば、選択的なビット反転は、揮発性メモリにデータを記憶する際の消費電力を低減するために使用され得る。
選択的なビット反転は、通信インタフェースを介してデータを送信する際の消費電力を低減するためにも使用され得る。
【０００２】
反転したビットを正確に解釈し、及び／又はオリジナルのデータを復元するために、ビット反転の発生についての通知を提供することが必要である。
例えば、ピン及び対応するロジックは、ビット反転が発生した場合に信号を送るために電子コンポーネントに追加され得る。
あいにく、このようなピンを追加することは、ビット反転技術を採用するためのコストを望ましくなく増大させる。
【図面の簡単な説明】
【０００３】
次に本発明の例示の実施形態を詳細に説明するために、添付図面を参照することにする。
【０００４】
【図１Ａ】様々な実施形態によるシステムを示す図である。
【図１Ｂ】様々な実施形態による他のシステムを示す図である。
【図２】様々な実施形態による通信パケットを示す図である。
【図３Ａ】様々な実施形態による通信パケットグループを示す図である。
【図３Ｂ】様々な実施形態による通信パケットグループを示す図である。
【図４】様々な実施形態による方法を示す図である。
【図５】様々な実施形態によるコンピュータシステムを示す図である。
【発明を実施するための形態】
【０００５】
表記法及び用語体系
以下の説明及び特許請求の範囲の全体にわたって、特定のシステムコンポーネントを参照するために、一定の用語が使用される。
当業者には理解されるように、（コンピュータ）企業は、１つのコンポーネントを異なる名前で参照することがある。
この文書は、名称は異なるが機能は異ならないコンポーネントを区別するように意図していない。
以下の解説及び特許請求の範囲において、「含む（including）」及び「備える（comprising）」という用語は、オープンエンド形式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、「結合する（"couple"又は"couples"）」という用語は、間接接続、直接接続、光接続、又は無線電気接続のいずれをも意味するように意図されている。
したがって、第１のデバイスが第２のデバイスに結合する場合、その接続は、直接電気接続、他のデバイス及び接続を介した間接電気接続、光電気接続、又は無線電気接続を通じたものとなり得る。
「システム（system）」という用語は、２つ以上のコンポーネントのコレクションを参照し、１つの電子デバイス又は複数の電子デバイス、又はそのサブシステムを参照するために用いられ得る。
さらに、「ソフトウェア（software）」という用語は、ソフトウェアを記憶するために使用される媒体に関わらず、プロセッサ上で実行され得る任意の実行可能コードを含む。
したがって、不揮発性メモリに記憶され、「内蔵されたファームウェア」として参照されることがあるコードは、ソフトウェアの定義の中に含まれる。
【０００６】
詳細な説明
以下の議論は、本発明のさまざまな実施形態を対象としている。
これらの実施形態の１つ又は複数が好ましいものとなり得るが、開示される実施形態は、特許請求の範囲を含む開示の範囲を限定するものとして解釈されるべきでもなければ、別の方法で使用されるべきでもない。
加えて、当業者は、以下の説明が広い用途を有し、いずれの実施形態の議論もその実施形態の単なる例示にすぎないように意図されており、特許請求の範囲を含む開示の範囲がその実施形態に限定されることを暗示するように意図されていないことを理解するであろう。
【０００７】
本明細書で開示される実施形態は、ビット反転のための方法及びシステムを対象とする。
少なくともいくつかの実施形態では通信パケットは、その通信パケットの反転したビット及び／又は少なくとも１つの次の通信パケットの反転したビットと関連するビット反転インジケータを含む。
その通信パケットを受信するコンポーネントは、（通信パケットの所定の位置の）ビット反転インジケータをチェックし、反転したビットを、適宜、処理するように構成される。
【０００８】
図１Ａは、実施形態によるシステム１００Ａを示す。
システム１００Ａにおいて、第１のコンポーネント１２０は通信インタフェース１３０を介して第２のコンポーネント１４０と結合している。
例えば、いくつかの実施形態では、第１のコンポーネント１２０はプロセッサであり、第２のコンポーネント１４０はダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。
他の実施形態では、第１のコンポーネント１２０は送信器（又は送受信器）であり、第２のコンポーネント１４０は受信器（又は送受信器）である。
第１のコンポーネント及び第２のコンポーネントのグループの他の例は、メモリデバイスと組にされたメモリコントローラと、Ｉ／Ｏデバイスと組にされた入出力（Ｉ／Ｏ）バスコントローラと、エンドデバイスと組にされたリンクイニシエータと、リンクイニシエータと組にされたリンクレスポンダ（responder）とを含むが、これらに限定されない。
【０００９】
示されたように、第１のコンポーネント１２０は、通信パケットロジック１２４及びビット反転ロジック１２８を備える。
通信パケットロジック１２４は、第１のコンポーネント１２０から第２のコンポーネント１４０に送信される通信パケットを準備する。
例示として、第１のコンポーネント１２０がプロセッサに対応し、第２のコンポーネント１４０がＤＲＡＭに対応する場合、通信パケットは書き込みパケットに対応し得る。
別の例として、第１のコンポーネント１２０が送信器に対応し、第２のコンポーネント１４０が受信器に対応する場合、通信パケットは、マネージメント又はデータインクワイアリ（inquiry：問い合わせ）、スヌープ（snoop：詮索）、又は、ディレクトリ更新に対応し得る。
【００１０】
ビット反転ロジック１２８は、通信パケット（又は通信パケットに関する情報）を受信して、ビット反転が適切であるかを判断する。
例えば、ビット反転の適切性は、ビット反転が消費電力を低減するか、信号インティグリティ（integrity：整合性）を強化するか、セキュリティを増大させるか、及び／又はエラー確率を低減するかに基づき得る。
ビット反転が適切でない場合、通信パケットは、ビットの反転なしに、及び、ビット反転インジケータなしに、第１のコンポーネント１２０から第２のコンポーネント１４０に送信される。
代替として、通信パケットは、ビット反転が使用されていないことを示すビット反転インジケータとともに送信されてもよい。
【００１１】
ビット反転が適切である場合、ビット反転ロジック１２８は、ビットを反転させることによって通信パケットを変更し、又は、通信パケットロジック１２４に対して所定のアルゴリズムに基づいてビットを反転させることによって通信パケットを変更するように命令する。
現在知られ、又は後に発達し使用され得る多くのアルゴリズムがあるが、実施形態は、任意の特定のビット反転アルゴリズムに限定されない。
ビット反転ロジック１２８はまた、対応するビット反転インジケータを通信パケット内に含ませる。
例えば、いくつかの実施形態では、反転したビットを有する各通信パケットは、自身のビット反転インジケータを含み得る。
追加として又は代替として、通信パケットは、少なくとも１つの次の通信パケットについてのビット反転インジケータを含み得る。
【００１２】
示されるように、第２のコンポーネント１４０は、通信インタフェース１３０を介して受信された通信パケットの解釈及び処理をサポートするパケット解釈ロジック１４２を備える。
実施形態によれば、パケット解釈ロジック１４２は、ビット反転インジケータの存在及び／又は値について、受信された通信パケットをチェックする。
ビット反転インジケータの存在を検出すると、パケット解釈ロジック１４２は、使用されているビット反転アルゴリズムに基づいて、対応する反転したビットを解釈し、及び／又は、復元するために機能する。
代替として、所定のビット反転インジケータ値を検出すると、パケット解釈ロジック１４２は、使用されているビット反転アルゴリズムに基づいて、対応する反転したビットを解釈し、及び／又は、復元するために機能する。
【００１３】
図１Ｂは、実施形態によるシステム１００Ｂを示す。
図１Ｂにおいて、通信パケットロジック１２４は、パイプライン１２６を備える。
言い換えれば、通信パケットを準備し送信するプロセスは、いくつかの処理段階を伴う。
パイプライン１２６にアクセスすることによって、ビット反転ロジック１２８は、いくつかのサイクルが過ぎる間は送信されない通信パケット（又は通信パケットに関する情報）を受信する。
したがって、ビット反転ロジック１２８は、パイプラインの通信パケットをペンディングすることについて、ビット反転が適切であるかを判断し得る。
例として、パイプライン１２６が１０個の段階を有する場合、ビット反転ロジック１２８は、パイプラインの通信パケットの閾値（この例において最も可能性のある量である１０）までについて、ビット反転が適切であるかを判断し得る。
【００１４】
さらに、ビット反転が適切である場合、ビット反転ロジック１２８は、ビットを反転させることによって通信パケットを変更し、又は、通信パケットロジック１２４に対してビットを反転させることによって通信パケットを変更するように命令する。
ビット反転ロジック１２８はまた、対応するビット反転インジケータを通信パケット内に含ませる。
上述したように、各通信パケットは、自身のビット反転インジケータ及び／又は少なくとも１つの次の通信パケットを有し得る。
【００１５】
図２は、実施形態による通信パケット２００Ａを示す。
示されるように、通信パケット２００Ａは、反転していないビットを有する第１のセクション２０２と、反転しているビット（斜めの縞によって示される）を有する第２のセクション２０４とを備える。
第１のセクション２０２は、第２のセクション２０４に関連するビット反転インジケータ２０６を備える。
言い換えれば、ビット反転インジケータ２０６は、第２のセクション２０４が反転したビットを有することを示すために使用される。
【００１６】
少なくともいくつかの実施形態では、第１のセクション２０２は、通信パケット２００Ａのコマンド領域の少なくとも一部に対応する。
例えば、コマンド領域は、書き込み操作、管理操作、スヌープ操作、ディレクトリ更新操作及び他のコマンドを指示する。
このような実施形態では、第２のセクション２０４は、コマンド領域、データ領域、及び／又はアドレス領域の一部に対応する。
一般に、第２のセクション２０４は、ビット反転インジケータ２０６に付随する任意のセクションであって、第２のコンポーネント１４０が、ビット反転インジケータ２０６を解釈し、反転していないビットではなく反転しているビットを処理するように自身を構成するための十分な時間を許容する任意のセクションであり得る。
【００１７】
図３Ａは、実施形態による通信パケットグループ３００Ａを示す。
図３Ａにおいて、通信パケットグループ３００Ａは、通信パケット２００Ａを備え、この通信パケット２００Ａの後に、少なくとも１つの次の通信パケット２００Ｂが続く。
示されるように、少なくとも１つの次の通信パケット２００Ｂは、通信パケット２００Ａのビット反転インジケータ２０６によって示された反転したビットを有している。
実施形態において、次の通信パケット２００Ｂは、反転していないビットを有する第１のセクション２０２Ｂと、反転したビットを有する第２のセクション２０４Ｂとを備える。
しかしながら、別の次の通信パケットの実施形態は異なり得る。
例えば、いくつかの次の通信パケットは、反転したビットを有さなくてもよく、又は全て反転したビットを有してもよい。
同様に、反転したビットの配置も異なり得る（例えば、第１のセクション２０２Ｂは反転したビットを有してもよく、第２のセクション２０４Ｂは反転していないビットを有してもよい）。
【００１８】
一般に、ビット反転の信号伝達（bit inversion signaling）の複雑さは、要求の処理及び／又はビット反転インジケータ２０６の通信パケットへの配置を容易にするために、最小化されるべきである。
例えば、多くの通信プロトコルは、現在、コマンド領域のビットの全てを使用せず、及び／又は、頻繁に使用されない特殊用途のビットを定義しない。
このようなビットは、（個別に又は一緒に）ビット反転インジケータ２０６として使用され得る。
これらの実施形態では、第１のセクション２０２内のビット反転インジケータ２０６の位置は、使用されていない使用可能なビットに対応する。
コマンド領域の使用可能なビットの数と所望の詳細の量（amount of detail desired）とに応じて、ビット反転の信号伝達は、単純であったり複雑であったりし得る。
ビット反転の信号伝達の単純な例は、単一のビットを採用してもよい。
ビットがアサートされる場合、同じ通信パケット又は次の通信パケットの所定のセクションは、反転したビットを有しているものと（例えば第２のコンポーネント１４０によって）解釈される。
ビット反転の信号伝達の複雑な例は、４個のビット（ビット０−３）を採用してもよい。
例として、ビット０はビット反転の存在（又は不存在）を示し、ビット１−３は３つの通信パケットのどれが所定のセクション（例えばデータ領域）で反転したビットを有するか（例えば現在の通信パケット及び２つの次の通信パケット）を示す。
別の例として、ビット０はビット反転の存在を示し、ビット１−３は通信パケットのどの所定の領域（例えば、コマンド領域、アドレス領域、又はデータ領域の部分）が反転されるかを示す。
他の実施形態は、使用されているビットの数を限定せず、又はビット反転インジケータの配置を限定しないことも可能である。
【００１９】
図３Ｂは、実施形態による通信パケットグループ３００Ｂを示す。
示されるように、通信パケットグループ３００Ｂは、通信パケット２００Ｃを備え、この通信パケット２００Ｃの後に、少なくとも１つの次の通信パケット２００Ｂが続く。
図３Ｂにおいて、通信パケット２００Ｃはビット反転インジケータ２０６を備えるが、反転したビットを有していない。
一方、少なくとも１つの次の通信パケット２００Ｂは、通信パケット２００Ｃのビット反転インジケータ２０６によって示された反転したビットを有する。
前述したように、次の通信パケット２００Ｂの実施形態は様々である。
示されるように、次の通信パケット２００Ｂは反転していないビットを備える第１のセクション２０２Ｂと反転したビットを備える第２のセクション２０４Ｂとを有し得る。
ビット反転の信号伝達もまた様々であり得、図３Ａを用いて前述したように、コマンド領域の使用可能なビットに基づき得る。
【００２０】
実施形態によれば、選択的なビット反転は、通信インタフェース１３０のデフォルトの電圧レベルを別の状態（高低いずれも）に強制することの発生を低減することによって、通信インタフェース１３０を介してデータを送信する際の消費電力を低減するために使用され得る。
図４は、実施形態による方法４００を示す。
示されるように、方法４００は、ブロック４０２で開始し、通信インタフェースを介した送信のために通信パケットのビットを選択的に反転すること（ブロック４０４）によって継続する。
ブロック４０６において、関連するビット反転識別子が、通信パケット及び前の通信パケットの少なくとも１つに提供され、方法４００は、ブロック４０８で終了する。
例として、関連するビット反転識別子を提供すること（ブロック４０６）は、ビット反転識別子を伴う通信パケットコマンド領域を準備することを含み得る。
【００２１】
いくつかの実施形態によれば、方法４００は、ビット反転の信号伝達のために必要とされる時間長が所定の閾値よりも短いかを判断すること、及び、もしそうである場合（ビット反転の信号伝達のために必要とされる時間長が所定の閾値よりも短い場合）に、反転されたビットを有する通信パケット内の関連するビット反転識別子を提供することをも含み得る。
ビット反転の信号伝達のために必要とされる時間長が所定の閾値よりも長い場合、方法４００は、前の通信パケット内の関連するビット反転識別子を提供することを伴う。
方法４００はまた、パイプライン内の情報を分析すること、及び、この情報に基づいて通信パケットのビットを反転するかを判断することも含み得る。
ある場合では、方法４００は、パイプラインの情報を分析すること、及び、この情報に基づいて複数の通信パケット内のビットを反転することを決定することを伴う。
このような場合では、ビット反転識別子は、複数の通信パケットと関連する。
【００２２】
他の実施形態への限定なく、上述したコンポーネント及び方法は、汎用のコンピュータ又はサーバ上で実施され得る。
図５は、実施形態によるコンピュータシステム５００を示す。
コンピュータシステム５００はプロセッサ５０２を含む。
プロセッサ５０２は、例えば、マイクロプロセッサ、マイクロコントローラ、中央演算処理装置（ＣＰＵ）、主演算処理装置（ＭＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、高度な縮小命令セットコンピュータ（ＲＩＳＣ：Reduced Instruction Set Computer）マシン、（ＡＲＭ：Advanced RISC Machines）プロセッサ等のような、様々なプロセッサの少なくとも１つであり得ることが理解されるべきである。
プロセッサ５０２は、プロセッサ５０２のメインメモリ内（例えばランダムアクセスメモリ（ＲＡＭ）５０８内）、及び／又はプロセッサ５０２のオンボードメモリ内に存在し得る符号化された命令を実行する。
ＲＡＭ５０８は、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）及び／又は任意の他のタイプのＲＡＭデバイスに相当し得る。
プロセッサ５０２はまた、必要に応じ、補助ストレージ５０４及び読み出し専用メモリ（ＲＯＭ）と通信する。
【００２３】
他のデバイスとの通信を容易にするために、プロセッサ５０２は、入出力（Ｉ／Ｏ）インタフェース５１０及びネットワークインタフェース５１２と結合する。
例として、Ｉ／Ｏインタフェース５１０は、キーボード、タッチパッド、ボタン、キーパッド、スイッチ、ダイヤル、マウス、トラックボール、カードリーダ、液晶ディスプレイ、プリンタ、タッチスクリーンディスプレイ、発光ダイオード、又は他のデバイスのようなデバイスと、インタフェースをとるために使用され得る。
一方、ネットワークインタフェース５１２は、メディアアクセス制御（ＭＡＣ：medium access controller）レイヤ機能及び物理（ＰＨＹ）レイヤ機能をサポートし得る。
ネットワークインタフェース５１２は、有線通信及び／又は無線通信をサポートする。
【００２４】
補助ストレージ５０４は、典型的には１つ以上のディスクドライブ又はテープドライブから成り、ＲＡＭ５０８が全ての作業用データ（working data）を保持するほど十分な大きさでない場合に、データの不揮発性ストレージ用に、及び、オーバーフローデータストレージデバイスとして使用される。
補助ストレージ５０４は、プログラムを記憶するために使用され得る。このプログラムは、このようなプログラムが実行のために選択される場合にＲＡＭ５０８にロードされる。
ＲＯＭ５０６は、プログラムの実行の間に読みだされる命令及び恐らくはデータを記憶するために使用される。
ＲＯＭ５０６は、典型的には、より大きな補助ストレージ５０４のメモリ容量と比較して小さいメモリ容量を有する不揮発性メモリデバイスである。
ＲＡＭ５０８は、揮発性データを記憶するために、及び、恐らくは命令を記憶するために使用される。
ＲＯＭ５０６及びＲＡＭ５０８両方へのアクセスは、典型的には補助ストレージ５０４へのアクセスよりも速い。
【００２５】
実施形態によれば、コンピュータシステム５００は、図１の少なくとも１つのコンポーネント（例えば第１のコンポーネント１２０、第２のコンポーネント１４０、及び両方）を実施する。
例えば、図１の第１のコンポーネント１２０はプロセッサ５０２の典型であり得、図１の第２のコンポーネント１４０はＲＡＭ５０８の典型であり得る。
代替的な実施形態では、図１の第１のコンポーネント１２０及び第２のコンポーネント１４０は、送信器、受信器、送受信器、又は、ネットワークインタフェース５１２の他の物理（ＰＨＹ）レイヤコンポーネントの典型であり得る。
【００２６】
上記議論は、本発明の原理及びさまざまな実施形態の例示であるように意図されている。
上記開示が完全に理解されると、多数の変形及び変更が当業者には明らかになるであろう。
添付の特許請求の範囲は、このようなすべての変形及び変更を包含するように解釈されることが意図されている。
【図１Ａ】
0005341198.tif 000002
【図１Ｂ】
0005341198.tif 000003
【図２】
0005341198.tif 000004
【図３Ａ】
0005341198.tif 000005
【図３Ｂ】
0005341198.tif 000006
【図４】
0005341198.tif 000007
【図５】
0005341198.tif 000008