(57)【特許請求の範囲】
【請求項１】
通信チャネルを介して通信するように構成された処理要素を備え、
前記処理要素は、第１のフォーマットのペイロードデータであって、前記通信チャネルを介して通信するように構成されたデバイスに向けられたペイロードデータをプロセッサから受信したことに応じて、
データフォーマット変換アルゴリズムを用いて前記ペイロードデータを前記第１のフォーマットから第２のフォーマットに変換することを含む１つ以上の特定の処理アルゴリズムに従って、前記受信したペイロードデータを変更し、
前記デバイスに向けられた１つ以上のパケットであって、前記変更されたペイロードデータと、前記ペイロードデータを変更するのに用いられる、前記データフォーマット変換アルゴリズムを含む前記１つ以上の特定の処理アルゴリズムを示す情報と、を含む１つ以上のパケットを作成し、
前記１つ以上のパケットを、前記通信チャネルを介して前記デバイスに送信する、
ように構成されており、
前記１つ以上の特定の処理アルゴリズムを示す情報が、前記１つ以上のパケットのプレフィックス、前記１つ以上のパケットのヘッダー、又は、これらの両方に含まれている、装置。
【請求項２】
前記デバイスは、前記変更されたペイロードデータを前記ペイロードデータの原形に戻すように、前記変更されたペイロードデータに対する動作を実行するように構成されている、請求項１に記載の装置。
【請求項３】
前記１つ以上の特定の処理アルゴリズムは、損失のない圧縮アルゴリズムを含み、前記処理要素は、前記デバイスが、前記損失のない圧縮アルゴリズムに従ってデータを復元するように構成されているとの指標に基づいて、前記ペイロードデータを変更するように構成されている、請求項１に記載の装置。
【請求項４】
前記１つ以上の特定の処理アルゴリズムは、暗号化アルゴリズムを含み、前記処理要素は、暗号化ポリシーに基づいて前記ペイロードデータを暗号化するように構成されている、請求項１に記載の装置。
【請求項５】
前記処理要素は、前記受信したペイロードデータに対応するエラーチェックコードを作成するように構成されており、前記エラーチェックコードは、前記ペイロードデータを変更することが誤りなく実行されたか否かを決定するために前記デバイスによって使用可能である、請求項１に記載の装置。
【請求項６】
前記１つ以上のパケットに対応するパケットプレフィックスは、前記１つ以上の特定の処理アルゴリズムを示す情報を含む、請求項１に記載の装置。
【請求項７】
前記装置は、１つ以上のコンピュータ可読記憶媒体にアクセスすることによって前記ペイロードデータを受信するように構成された周辺デバイスである、請求項１に記載の装置。
【請求項８】
前記装置は、第１の通信プロトコルに従って、前記通信チャネルにわたってパケットを送信及び受信するように構成された通信チャネルコントローラである、請求項１に記載の装置。
【請求項９】
前記処理要素の少なくとも一部は、プログラム可能なハードウェアを含み、
前記プログラム可能なハードウェアは、複数のデータフォーマット変換アルゴリズムのための論理を含む、請求項８に記載の装置。
【請求項１０】
コンピューティングデバイスのプロセッサによって実行可能な命令が記憶されたコンピュータ可読記憶媒体であって、前記命令は、前記コンピューティングデバイスに、
前記コンピューティングデバイスの通信チャネルを介して第１のフォーマットのアプリケーションデータを周辺デバイスに転送するための要求を受信することであって、前記通信チャネルは、第１の通信プロトコルに従ってパケットを転送するように構成されていることと、
前記アプリケーションデータを転送するための要求に応じて、
前記アプリケーションデータを、第１のファイルフォーマットから第２のファイルフォーマットに変換するように構成されたデータフォーマット変換アルゴリズムを含む特定のアルゴリズムに従って変更することと、
前記変更されたアプリケーションデータを、１つ以上のパケットで、前記通信チャネルを介して前記周辺デバイスに送信することであって、前記１つ以上のパケットは、前記第１の通信プロトコルと互換性があり、前記特定のアルゴリズムを示す情報が、前記１つ以上のパケットのプレフィックス、前記１つ以上のパケットのヘッダー、又は、これらの両方に含まれている、ことと、
を備える動作を実行させる、コンピュータ可読記憶媒体。
【請求項１１】
前記動作は、前記特定のアルゴリズムに従って前記アプリケーションデータを変更するように構成されたコントローラに、前記アプリケーションデータを送信することを備える、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記動作は、前記特定のアルゴリズムを示す情報を、前記コントローラに送信することを備える、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記アプリケーションデータを前記コントローラに送信することは、前記アプリケーションデータの少なくとも一部が記憶されているメモリロケーションの指標を送信することを備える、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記特定のアルゴリズムは損失のない圧縮アルゴリズムであり、前記第１の通信プロトコルはＰＣＩ−エクスプレスである、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１５】
処理要素が、前記処理要素に結合された通信チャネルに結合されたデバイスが、第１のファイルフォーマットから第２のファイルフォーマットに変換するように構成されたデータフォーマット変換アルゴリズムを含む１つ以上の特定の処理アルゴリズムに従って変更された、受信したペイロードデータに対して、１つ以上の特定の動作を行うように構成されていることを示す情報を受信したことと、前記デバイスに向けられたデータを受信したことと、に応じて、
変更されたペイロードデータを含む１つ以上のデータパケットを作成することであって、前記変更されたペイロードデータは、前記１つ以上の特定の処理アルゴリズムに従って前記受信したデータを処理した結果であり、前記１つ以上のパケットは前記デバイスに向けられていることと、
前記１つ以上のパケットと、前記データフォーマット変換アルゴリズムを含む前記１つ以上の特定の処理アルゴリズムを示す情報とを、前記通信チャネルを介して前記デバイスに送信することであって、前記１つ以上の特定の処理アルゴリズムを示す情報が、前記１つ以上のパケットのプレフィックス、前記１つ以上のパケットのヘッダー、又は、これらの両方に含まれている、ことと、
を備える、方法。
【請求項１６】
前記１つ以上の特定の処理アルゴリズムは暗号化アルゴリズムを含み、前記方法は、暗号化ポリシーに基づいて前記ペイロードデータを変更することを備える、請求項１５に記載の方法。
【請求項１７】
集積回路を製造するための処理の一部を実行するためにコンピュータシステム上で実行可能なプログラムによって使用可能なデータ構造を備える非一時的なコンピュータ可読記憶媒体であって、前記集積回路は、前記データ構造によって記述された回路素子を含み、前記データ構造において記述された前記回路素子は、
通信チャネルに結合するように構成された処理要素を含み、
前記処理要素は、第１のフォーマットのペイロードデータであって、前記通信チャネルを介して通信するように構成されたデバイスに向けられたペイロードデータをプロセッサから受信したことに応じて、
データフォーマット変換アルゴリズムを用いて前記ペイロードデータを前記第１のフォーマットから第２のフォーマットに変換することを含む１つ以上の特定の処理アルゴリズムに従って、前記受信したペイロードデータを変更し、
前記デバイスに向けられた１つ以上のパケットであって、前記変更されたペイロードデータと、前記ペイロードデータを変更するのに用いられる、前記データフォーマット変換アルゴリズムを含む前記１つ以上の特定の処理アルゴリズムを示す情報と、を含む１つ以上のパケットを作成し、
前記１つ以上のパケットを、前記通信チャネルを介して前記デバイスに送信する、
ように構成されており、
前記１つ以上の特定の処理アルゴリズムを示す情報が、前記１つ以上のパケットのプレフィックス、前記１つ以上のパケットのヘッダー、又は、これらの両方に含まれている、非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記記憶媒体は、ＨＤＬ、ヴェリログ又はＧＤＳＩＩデータのうち少なくとも１つを記憶する、請求項１７に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デバイス通信チャネルを介したデータパケットの送信に関し、より詳細には、それらのデータパケットに処理アルゴリズムを適用することに関する。
【背景技術】
【０００２】
コンピューティングデバイスの動作中、データパケットは、通信リンク及び／又はバスに接続されたデバイス間において送信され得る。コンピュータプロセッサは、例えばハードドライブ又は他のストレージユニットにデータを送信（又はこれらからデータを受信）し得る。デバイスに送信され、又はデバイスから送信されるデータは、例えばＰＣＩ−エクスプレス仕様において定義されているＴＬＰ（トランザクションレイヤパケット）等の特定のフォーマットに従って送信され得る。搬送されるデータは、生の又は処理されていない形態であり得る。すなわち、送信目的のデータが通信リンク及び／又はバスにわたって送信される前には、送信目的のデータに対して何の動作も実行されていない。
【０００３】
従って、特定のフォーマットにおいてデータを搬送するように構成されたバス及び通信リンクは、そのフォーマットのために存在する任意の欠点に限定され得る。例えば、特定の通信リンク及び／又はバスにわたり最大帯域幅を達成又は超過することは不可能であろうし、特定のフォーマットにおいてパケットを送信及び受信するように構成されたデバイスは、パケットデータを取り扱うという点で性能が非効率であろう。
【発明の概要】
【０００４】
パケットデータの変更を処理要素に可能にさせる方法及び構造の様々な実施形態が、本明細書において開示される。
【課題を解決するための手段】
【０００５】
説明される一実施形態では、通信リンクに結合するように構成された処理要素を備える装置が開示されており、前記処理要素は、通信リンクに結合されたデバイスに向けられたペイロードデータを受信することに応じて、１つ以上の特定の処理アルゴリズムに従って受信したペイロードデータを変更し、１つ以上のパケットを作成するように構成されており、前記１つ以上のパケットは、デバイスに宛てられ、変更されたペイロードデータと、１つ以上の特定の処理アルゴリズムを示す情報とを含み、処理要素は、１つ以上のパケットを、通信リンクを介してデバイスに送信するように構成されている。
【０００６】
他の実施形態は、コンピュータ可読記憶媒体を含み、前記媒体は、コンピューティングデバイスのプロセッサによって実行可能な命令を記憶し、前記命令は、コンピューティングデバイスの通信リンクに結合された周辺デバイスにアプリケーションデータを転送するための要求を受信することであって、通信リンクは第１の通信プロトコルに従ってパケットを転送するように構成されていることと、周辺デバイスが、特定のアルゴリズムに従って処理されたデータパケットを、通信リンクを介して受信するように構成されているとの指標に基づいて、アプリケーションデータを、前記特定のアルゴリズムに従って変更することと、変更されたアプリケーションデータを、１つ以上のパケットにおいて、通信リンクを介して周辺デバイスに送信することであって、１つ以上のパケットは第１の通信プロトコルと互換性があることとを備える動作を、コンピューティングデバイスに実行させる。
【０００７】
さらなる他の実施形態は、処理要素が、前記処理要素に結合された通信リンクに結合されたデバイスに向けられたデータを受信することに応じて、変更されたペイロードデータを含む１つ以上のデータパケットを作成することであって、変更されたペイロードデータは、１つ以上の特定の処理アルゴリズムに従って前記受信したデータを処理した結果であり、１つ以上のパケットはデバイスに宛てられていることと、１つ以上のパケットと、１つ以上の特定の処理アルゴリズムを示す情報とが、通信リンクを介してデバイスに送信されるようにすることとを備える方法である。
【０００８】
さらなる他の実施形態は、集積回路を製造するための処理の一部を実行するためにコンピュータシステム上で実行可能なプログラムによって使用可能なデータ構造を備える非一時的なコンピュータ可読記憶媒体を備え、集積回路は、データ構造によって記述された回路素子を含み、データ構造において記述された回路素子は、通信リンクに結合するように構成された処理要素を含み、処理要素は、通信リンクに結合されたデバイスに向けられたペイロードデータを受信することに応じて、１つ以上の特定の処理アルゴリズムに従って前記受信したペイロードデータを変更し、１つ以上のパケットを作成し、１つ以上のパケットは、デバイスに宛てられ、変更されたペイロードデータと、１つ以上の特定の処理アルゴリズムを示す情報とを含み、１つ以上のパケットを、通信リンクを介してデバイスに送信するように構成されている。
【図面の簡単な説明】
【０００９】
【図１】コンピュータシステムの一実施形態を示すブロック図である。
【図２】いくつかの可能なデータパケットのブロック図である。
【図３】コンピュータ可読記憶媒体のブロック図を示すブロック図である。
【図４】変更されたペイロードデータを含む１つ以上のデータパケットが作成され、デバイスに送信される方法の一実施形態を示すフローチャートである。
【図５】コンピュータシステムの他の実施形態を示すブロック図である。
【発明を実施するための形態】
【００１０】
本明細書は、「一実施形態」又は「実施形態」への言及を含む。「一実施形態において」又は「実施形態において」という句が出てきても、それは必ずしも同一の実施形態のことを言っているわけではない。特定の特徴、構造又は特性を、本開示と一致する任意の適切な手法で組み合わせることが可能である。
【００１１】
専門用語。以下の段落では、本開示（添付の請求項を含む）に見出される用語のための定義及び／又はコンテキストを提供する。
【００１２】
「備える」又は「含む」。これらの用語は、オープンエンドである。添付の請求項において使用される場合には、これらの用語は、追加の構造又はステップを排除しない。「１つ以上の処理要素を備える装置・・・」と記載した請求項を考える。このような請求項は、追加の構成要素（例えば、ネットワークインターフェースユニット、グラフィクス回路素子、等）を装置に含ませないようにするものではない。
【００１３】
「ように構成される」。様々なユニット、回路又は他の構成要素が、１つのタスク又は複数のタスクを実行する「ように構成される」ものとして説明又は特許請求され得る。そのようなコンテキストにおいて、「ように構成される」とは、ユニット／回路／構成要素が、動作中にそれらの１つのタスク又は複数のタスクを実行する構造（例えば、回路素子）を含む、ということを示すことによって、構造を暗示するために使用される。従って、ユニット／回路／構成要素は、特定のユニット／回路／構成要素が現在動作可能でない（例えば、オンでない）場合であっても、タスクを実行するように構成されていると言うことができる。「ように構成される」という語とともに使用されるユニット／回路／構成要素は、ハードウェア（例えば、回路や、動作を実現するために実行可能なプログラム命令を記憶したメモリ等）を含む。ユニット／回路／構成要素が１つ以上のタスクを実行する「ように構成される」という記載は、そのユニット／回路／構成要素に関して、３５Ｕ．Ｓ．Ｃ．§１１２の第６段落を行使しないことを明確に意図している。加えて、「ように構成される」とは、問題のタスクを実行できるように動作するように、ソフトウェア及び／又はファームウェア（例えば、ＦＰＧＡ、又はソフトウェアを実行する汎用プロセッサ）によって操作される一般的な構造（例えば、一般的な回路素子）を含み得る。さらに、「ように構成される」とは、１つ以上のタスクを実現又は実行するように適合したデバイス（例えば、集積回路）を製造するように製造処理（例えば、半導体製造設備）を適合させることを含み得る。
【００１４】
「処理要素」。この用語は、当該技術分野におけるその一般的な受け入れられている意味を有し、コンピュータ命令を実行できるデバイス（例えば、回路素子）又はデバイスの組み合わせを含む。処理要素は、様々な実施形態において、シングルコアプロセッサ、マルチコアプロセッサのコア、又はマルチコアプロセッサの２つ以上のコアのグループのことを言うことができるが、これらに限定されない。
【００１５】
「プロセッサ」。この用語は、当該技術分野におけるその一般的な受け入れられている意味を有し、１つ以上の処理要素を含むデバイスを含む。プロセッサは、中央処理装置（ＣＰＵ）、コプロセッサ、演算処理装置、グラフィクスプロセッシングユニット、デジタルシグナルプロセッサ（ＤＳＰ）等のことを言うことができるが、これらに限定されない。
【００１６】
「コンピュータ可読媒体」。本明細書において使用される場合、この用語は、コンピュータ又はコンピュータシステムによって読み取り可能であり、ハードドライブ、光学ディスク、ＤＶＤ、揮発性若しくは不揮発性ＲＡＭデバイス、ホログラフィックストレージ、プログラム可能なメモリ等といった、磁気、光学、及びソリッドステート記憶媒体を含む、（非一時的な、有形の）媒体のことを言う。本明細書においてコンピュータ可読媒体に適用される「非一時的」という用語は、一時的（無形）媒体（例えば、搬送波）のような、３５Ｕ．Ｓ．Ｃ§１０１の下で不適格であるとみなされる任意の主題を特許請求の範囲から排除することを意図しているに過ぎず、そうでなく法令によるものとみなされる任意の主題を排除することを意図したものではない。
【００１７】
ここで図１を参照すると、システム１００の一実施形態が示されている。この実施形態において、プロセッサ１１０は、処理要素１２５と、１つ以上のデータアルゴリズム１２６とを含む通信チャネルコントローラ１２０に接続されている。図示されているように、通信チャネルコントローラ１２０は、バス１４０を介してデバイス１５０に接続されている。デバイス１５０Ａは、図１の実施形態では、処理要素１５２と、１つ以上のデータアルゴリズム１５３とを含む。
【００１８】
なお、いくつかの実施形態では、通信チャネルコントローラ１２０は、１つ以上のデバイス通信チャネルを制御し、使用し、及び／又は管理するように構成されてもよい。「通信チャネル」という用語は、本明細書において使用される場合、２つ以上のデバイス間の通信を可能にするように構成された共有バス、又は、２つのみの（デバイス）ポイント間の通信を可能にするように構成されたポイントツーポイント通信リンク、のことを言い得る。従って、様々な実施形態において、通信チャネルコントローラ１２０は、広く共有されたバス及び／又は１つ以上の非共有（ポイントツーポイント）通信リンクを制御し、使用し、及び／又は管理するように構成されてもよい。なお、少なくとも１つの実施形態において、通信チャネルコントローラは、複数の通信リンクを介して複数のデバイスにアクセス可能であってもよいが、複数のデバイスは、互いに直接アクセスすることが不可能であってもよい。（従って、様々な実施形態において、チャネルコントローラ１２０は、複数の通信リンクの各々を介してチャネルコントローラに接続された２つ以上のデバイス間の通信を容易にするように構成されてもよい。）
【００１９】
プロセッサ１１０は、任意のプロセッサであってよく、一実施形態では、プロセッサ１１０は、図５のプロセッササブシステム５８０に関連して説明されるプロセッサである。プロセッサ１１０は、様々な実施形態において、１つ以上の処理コアを含むことができ、複数のスレッドの実行をサポートすることができる。図示されているように、プロセッサ１１０は、通信チャネルコントローラ１２０に接続されている。この接続は、１４０のようなバス接続であってもよいし、任意の他の適切な接続であってもよい。従って、プロセッサ１１０は、通信チャネルコントローラ１２０にデータを送信し、又は、通信チャネルコントローラ１２０からデータを受信するように構成され得る。プロセッサ１１０によって通信チャネルコントローラ１２０に送信されるデータは、いくつかの実施形態において、複数のデバイス１５０のうちの１つのデバイス、何れかのデバイス、又は全てのデバイスに向けられ得る。従って、プロセッサ１１０は、データが向けられた特定のデバイス１５０の指標（ｉｎｄｉｃａｔｉｏｎ）を通信チャネルコントローラ１２０に送信し得る。この指標は、様々な実施形態において、アドレス、割込み、他の識別情報（例えば、論理番号又はハードウェアデバイス番号）、又はそれらの任意の組み合わせであってもよい。
【００２０】
データは、様々な手法で、及び当業者にとって周知であり得る技法に従って、通信チャネルコントローラ１２０に送信されてもよい。一実施形態では、プロセッサ１１０は、通信チャネルコントローラ１２０に直接データを送信する（すなわち、プロセッサ１１０に既に記憶されているデータを、通信チャネルコントローラ１２０に送信する）ように構成されている。他の実施形態では、プロセッサ１１０は、その代わりに、データのロケーションを通信チャネルコントローラ１２０に通信すること、例えば、メモリロケーション又は他のポインタを通信チャネルコントローラに送信することによって、データが送信されるようにしてもよい。そして、通信チャネルコントローラは、例えば、ＲＡＭ等のシステムメモリに記憶されているデータにアクセスするために、ポインタを使用してもよい。実際に、様々な実施形態において、通信チャネルコントローラ１２０は、任意の数のソースから、任意の数の技法を使用して、データを獲得することができる。例えば、１５０Ａのようなデバイスは、通信チャネルコントローラ１２０を介して、プロセッサ１１０に対して、別のデバイス１５０に対して、及び／又はコンピュータシステム若しくはコンピューティングデバイス内の他の構造に対してデータを送信するために、通信チャネルコントローラ１２０の機能の一部又は全部を使用することができる。
【００２１】
デバイス１５０は、ハードドライブ、フラッシュメモリドライブ、ストレージアレイ、ＳＡＮ、他のストレージデバイス若しくはそれらに関連づけられたコントローラや、（例えば、ローカル若しくは広域ネットワークへの）ネットワークインターフェースデバイスや、ＤＶＤ−ＲＯＭドライブ若しくは他の光学ドライブや、他のデバイス（例えば、グラフィクスプロセッシングデバイス、ユーザインターフェースデバイス等）といった任意の周辺デバイスであってよい。従って、いくつかの実施形態において、デバイス１５０は、図５に関して以下に説明されるＩ／Ｏデバイス５５０及び／又はＩ／Ｏインターフェース５４０の機能の何れか又は全てを有し得る。
【００２２】
図１の実施形態では、通信チャネルコントローラ１２０は、データを受信するとともに、バス１４０を介して１つ以上のパケットを送信するために当該パケットを作成するように構成されている。特に、データパケットは、図１の実施形態では、処理要素１２５を使用して作成されてもよい。処理要素１２５は、スタンドアロンプロセッサ、マルチコアプロセッサのコア、又は他のハードウェア論理であってもよい。いくつかの実施形態において、処理要素１２５の全部または一部は、プログラム可能なハードウェア（例えば、ＥＥＰＲＯＭ、等）である。処理要素１２５の全部または一部は、いくつかの実施形態において、カスタムＡＳＩＣチップであってもよい。処理要素１２５は、以下に説明されるように、いくつかの実施形態においてアルゴリズム１２６を含むように構成されてもよく、これらの実施形態では、新たなアルゴリズムによって再プログラム又は更新されてもよい。
【００２３】
処理要素１２５は、様々な実施形態において、１つ以上の通信プロトコルに従ってデータパケットを定式化するように構成されている。図１に示されているように、処理要素１２５は、ＰＣＩ−エクスプレス仕様バージョン２．１に従ってデータパケットを定式化するように構成されている。他の実施形態において、処理要素１２５は、ＰＣＩ−エクスプレス仕様の他のバージョンに従ってデータパケットを定式化するように構成される。さらなる他の実施形態では、他の通信プロトコルが、データをパケット化するために処理要素１２５によって使用されることができ、いくつかの実施形態では、処理要素１２５は、２つ以上の異なるプロトコル及び／又は同一のプロトコルの２つ以上のバージョンに従って、データのパケット化をサポートすることができる。様々な実施形態において使用され得るプロトコルは、ＵＳＢ、イーサネット（登録商標）、ＤｉｓｐｌａｙＰｏｒｔ、ＴＣＰ、ＵＤＰ、又はパケットに基づいたデータの送信を使用する任意の他の通信プロトコルを含む。処理要素１２５によって定式化されたデータパケットは、様々な実施形態において、データペイロードだけでなく、図２に関して以下に説明される任意の他のデータパケットフィールド、又はデータパケットの特徴を含み得る。
【００２４】
１つ以上のデータ処理アルゴリズム１２６が、データパケットを定式化するために処理要素１２５によって使用されてもよい。従って、一実施形態では、データ処理アルゴリズムが、バス１４０（又は図示されていない他のバス若しくはリンク）に結合されたデバイス１５０に通信されるペイロードデータに対して、処理要素１２５によって実行される。一実施形態では、処理要素１２５は、デバイス１５０がアルゴリズム１２６のうちの１つ以上に従って変更されたデータを処理するように構成されているとの指標に基づいて、パケットペイロードデータを変更するように構成されている。
【００２５】
図１の実施形態では、アルゴリズム１２６は、通信チャネルコントローラ１２０内にプログラムされたハードウェア論理内に記憶されている（すなわち、アルゴリズム１２６は、回路素子／回路構造内にハードウェア実装され得る）。一実施形態では、アルゴリズムは、処理要素１２５内にプログラムされた論理として記憶される。従って、様々な実施形態において、１つ以上のデータ処理アルゴリズム１２６の実行は、特定のアルゴリズムを作り出す１つ以上の動作を実行するように構成された回路素子によって遂行され得る。他の実施形態では、アルゴリズム１２６は、命令としてコンピュータ可読記憶媒体に記憶されてもよい。命令は、１２５のような処理要素、プロセッサ１１０のようなプロセッサの１つ以上のコア等によって実行可能であり得る。従って、１つ以上のデータ処理アルゴリズム１２６の実行は、いくつかの実施形態では、命令が汎用処理要素又は他の処理要素（ＧＰＵ、ＧＰＵコア、他のコプロセッサ、カスタマイズされたチップ又は専用チップ等）によって実行されることにより、遂行され得る。一実施形態では、プロセッサ１１０の１つ以上のコアは、アルゴリズム１２６のための命令を実行することができる。
【００２６】
データ処理アルゴリズム１２６は、実行されると様々な手法でデータ（例えば、パケットペイロードデータ）を変更する任意の数のアルゴリズムを含み得る。いくつかの実施形態では、損失のないデータ圧縮のための１つ以上のアルゴリズムが、アルゴリズム１２６に含まれる。そのような損失のない圧縮アルゴリズムは、Ｌｅｍｐｅｌ−Ｚｉｖ−Ｗｅｌｃｈ（ＬＺＷ）圧縮、ランレングス符号化、バイトペア符号化、及び／又は辞書ベースの符号化スキームを含み得る。いくつかの実施形態では、観察されたデータに基づくカスタマイズされた損失のない圧縮スキーム（例えば、ヒューリスティックに基づいたスキーム）を使用することができる。例えば、１つ以上の特定の環境又はコンピュータデバイスにおけるバストラヒックを経験的にサンプルすることができ、次にこのデータに基づいて、１つ以上の有利なスキーム（又はスキームの組み合わせ）を使用することができる。例えば、１つ以上の値の特定のパターンが頻繁に送信されることが観察された場合、損失のない圧縮スキームは、それらのパターンを組み込み得る。任意のパブリックドメインのスキーム又は製造者に固有のスキームが、様々な実施形態における損失のない圧縮のために使用されることができ、データを圧縮するために使用され得る符号化／復号スキームの数は、上述されたものに限定されない。いくつかの実施形態では、損失の大きい圧縮スキームが、（以下に説明されるように、特にファイルフォーマット変換アルゴリズムに関連して）使用され得る。
【００２７】
一実施形態において、使用される圧縮アルゴリズムのタイプは、圧縮されているデータの種類の指標に依存し得る。バス１４０にわたって送信されているテキストベースのファイル（マイクロソフトワード（登録商標）、プレーンテキスト、リッチテキストフォーマット（ＲＴＦ）等）は、例えば、バス１４０にわたって送信されている画像ベースのファイル（ＪＰＥＧ、ＭＰＥＧ等）に適用されるであろうものとは異なる圧縮スキーム又はアルゴリズムを有し得る。バスを介して送信されるデータの種類の指標は、一実施形態において、通信チャネルコントローラ１２０の外部の構造により（例えば、プロセッサ１１０又はデバイス１５０により）明示的に生成又は提供されることができる。他の実施形態において、処理要素１２５が、データの種類を決定するために、送信されるデータを調べることにより、指標を生成することができる。データの種類の指標は、通信チャネルコントローラ１２０における１つ以上の他の構成要素（図示せず）によって提供されることもできる。従って、一実施形態では、処理要素１２５は、バス１４０に結合されたデバイスが特定の圧縮アルゴリズムに従ってデータを圧縮解除するように構成されているとの指標に基づいて、ペイロードデータを変更するように構成されている。
【００２８】
バス１４０（又は他のバス若しくはリンク）にわたって送信されるデータパケットのために圧縮を使用することの１つの利点は、より高効率の帯域幅が達成され得ることである。例えば、ＰＣＩ−エクスプレス２．１仕様などの所与の通信プロトコルは、ＰＣＩ−エクスプレスリンクのための達成可能なスループットに上限を設け得る。その達成可能なスループットは、ＴＬＰペイロードのサイズ、ＰＣＩ−エクスプレスリンクの構成、及びリンクにわたって送信される一般的なトラヒック、の組み合わせによって制限され得る。しかしながら、圧縮技法が、バス又はリンクにわたって転送されている実際のバイト量を減じるために使用され得る場合には、より大量の「有用な」データが同一の長さの時間で送信され得る。しかしながら、バス１４０にわたってデータを送信するための圧縮技法の使用は、様々な実施形態において、デバイス１５０又はデータパケットの他の宛先が、圧縮されたデータを圧縮解除して、データをその変更されていない形態に回復させることが可能であることを要求し得る。
【００２９】
圧縮は、パケットデータに使用され得るデータ処理アルゴリズム（例えば、符号化／復号アルゴリズム）の１つの応用例に過ぎない。他のアルゴリズム１２６は、暗号化及びフォーマット変換を含み得る。データパケットのための暗号化がサポートされる一実施形態では、パケットデータの全部又は一部が、１つ以上の暗号化スキームに従って暗号化され得る。そのようなスキームは、デジタル署名アルゴリズム（ＤＳＡ）、ＲＳＡ（ＰＫＣＳ＃１）、ＰＧＰ、パスワード認証鍵合意、楕円曲線技法、又は当業者が想起し得る他の暗号技法の使用を含み得る。従って、いくつかの実施形態では、通信チャネルコントローラ１２０及び／若しくは処理要素１２５（又はデータを暗号化するように構成された別の構造）は、１つ以上の特定の鍵を使用してデータを暗号化するように構成され得る。通信チャネルコントローラ１２０は、デバイス１５０と、及び／又はバス１４０を介して送信されるデータの他の宛先と、鍵を交換するように構成され得る。パケットペイロードデータを符号化するための暗号技法の使用は、いくつかの実施形態において、ペイロードデータがバス１４０（又は別のデータ搬送構造）にわたって伝わる際に「傍受」されることを防ぐことができる。暗号化は、感知可能なデータ若しくは分類されたデータ、デジタル著作権管理（ＤＲＭ）によって保護されているメディアファイルを保護するために、又は任意の他の目的のために、使用されることができる。暗号化ポリシーが、パケットデータを暗号化するための根拠として、いくつかの実施形態において使用され得る。そのようなポリシーは、一部若しくは全部のデータ、又は、一部若しくは全部のタイプのデータが、１つ以上のアルゴリズムに従って暗号化されるべきであることを指定し得る。暗号化ポリシーは、データが暗号化されるべきか否かを決定する際に、様々なファクター（例えば、コンピュータシステムにログオンされたユーザの識別、ソース又は宛先デバイスによって提供された指標（及び／又はそのようなデバイスの能力）等）を考慮し得る。しかしながら、以下に説明されるように、さらなる他のアルゴリズムが、暗号化及び圧縮に加えて使用され得る。
【００３０】
データフォーマット変換アルゴリズムは、バス１４０を介して送信されるデータを変更するために、いくつかの実施形態において使用され得る。これらのアルゴリズムは、例えば、１つのファイルフォーマットから他のものに（例えば、ＧＩＦ画像ファイルからＪＰＥＧ画像ファイルに、フラッシュ映像フォーマット（．ＦＬＶ）からＭＰＥＧ映像フォーマットに）変換し、リッチテキストフォーマット（ＲＴＦ）又はポストスクリプト（ＰＤＦ）といった１つのドキュメントフォーマットからマイクロソフトワード（ＴＭ）といった他のドキュメントフォーマットに変換し、又は、１つのオーディオフォーマットから他のものに変換することができる。多くのタイプのデータフォーマット変換が可能であり、上記の例に限定されない。いくつかの実施形態において、フォーマット変換は、バイトレベル又は文字レベルといった、より低いレベルで行われ得る（例えば、データは、ＡＳＣＩＩ及びＥＢＣＤＩＣ文字コード間で、又は様々なＩＳＯ文字コード間で、変換され得る）。一実施形態において、処理要素１２５は、デバイス１５０のうち１つが第２のフォーマットにおけるデータを要求している（又は、例えば、プロセッサ１１０が、デバイス１５０から転送されているデータのために、第２のフォーマットにおけるデータを要求している）との指標に基づいて、第１のフォーマットから第２のフォーマットにデータを変換し得る。例えば、プロセッサ１１０の１つ以上のコアで実行中のアプリケーションプログラムは、１つ以上の画像ファイルが特定のフォーマット（例えば、ＪＰＥＧ画像）においてストレージデバイス１５０（例えば、ハードドライブ）から検索されることを要求し得る。デバイス１５０内の処理要素は、データを、要求者（例えば、プロセッサ１１０）に送信する前にＪＰＥＧフォーマットに変換し得る。従って、データフォーマット変換アルゴリズムが使用されるいくつかの実施形態では、１つ以上のメモリバッファが、変換処理のためのテンポラリストレージとして使用され得る。
【００３１】
アルゴリズム１２６に含まれ得るアルゴリズムは、圧縮、暗号化及びデータフォーマット変換に関し上述されたものに限定されない。バス１４０を介して送信されるデータ（例えば、ペイロードデータ）に影響を及ぼし得ない他のデータ処理アルゴリズムもまた、様々な実施形態において存在し得る。一実施形態において、処理要素１２５は、デバイス１５０のうち１つに向けられたペイロードデータを受信することに応じて、アルゴリズム１２６のうち少なくとも１つに従って、受信したペイロードデータを変更し、そのデバイスに宛てられ、変更されたペイロードデータ、並びにデータを変更するために使用されたアルゴリズム１２６のうち少なくとも１つを示す情報を含む、１つ以上のパケットを作成し、１つ以上の作成されたパケットがバス１４０を介してデバイス１５０に送信されるようにするように構成されている。いくつかの実施形態では、２つ以上のアルゴリズムが、所与のデータパケットペイロードに対し使用され得る。
【００３２】
アルゴリズムによって変更されたペイロードデータを有するバスパケットの作成を含む様々な実施形態が、図１に示された処理要素１２５、アルゴリズム１２６及び通信チャネルコントローラ１２０に関して説明されている。しかしながら、異なる実施形態では、処理要素及び／又はアルゴリズムは、異なる構造（例えば、通信チャネルコントローラ１２０ではない構造）内に配置され、異なるバス又はリンク（例えば、バス１４０ではない接続）を介して送信されるパケットデータに影響を及ぼし得る。例えば、図１の実施形態では、デバイス１５０Ａは、処理要素１５２及びデータ処理アルゴリズム１５３を含む。処理要素１５２は、処理要素１２５の様々な実施形態に関し上述された機能の何れか又は全てを有することができ、アルゴリズム１５３も同様に、上述されたアルゴリズム１２６の機能若しくは特性の何れか又は全てを有することができる。デバイス１５０Ａは、データパケットを、バス１４０を介して任意の他のデバイス１５０に、通信チャネルコントローラ１２０を介してプロセッサ１１０に、又はバス１４０（又は図示されていない他のバス又はリンク）を介して他の宛先に送信し得る。別の実施形態では、１２５などの処理要素と、１２６などのアルゴリズムとは、メモリコントローラ内に配置されることができ、バス１４０、又は図示されていない１つ以上の他のバス若しくは、の何れかによって、プロセッサ１１０、通信チャネルコントローラ１２０、及び／又はデバイス１５０と通信するように構成され得る。ＣＰＵの処理コアは、一実施形態において処理要素１２５と同様又は同等に構成され得るが、別の実施形態では、グラフィクスプロセッシングユニット（ＧＰＵ）の処理コアが、処理要素１２５と同様又は同等に構成されてもよい。そのような処理要素を含むように構成された任意のデバイス、構造又は装置は、アルゴリズム１２６を含み得る（又は、そのようなアルゴリズムにアクセス可能であり得る）。
【００３３】
ここで図２を参照すると、いくつかのデータパケットのブロック図２００が示されている。示されているように、図２は、データパケット２０１，２１１，２２１，２３１を含む。この実施形態では、これらのパケットの各々は、ベースライン（「レギュラー」）パケット、圧縮されたペイロードデータパケット、暗号化されたペイロードデータパケット、及びペイロードデータがフォーマット変換されているパケットに対応する。様々な実施形態において、これらのパケットは、１２５又は１５２などの処理要素によって定式化され、１４０などのバスを介して送信され得る。いくつかの実施形態において、これらのパケットは、ＰＣＩ−エクスプレス仕様２．１の規則（及び／又はＰＣＩ−エクスプレスの他のバージョン）に準拠したトランザクションレイヤパケット（ＴＬＰ）である。いくつかの実施形態では、図示されているパケットフィールドの全てが存在し得るわけでないが、他の実施形態では、図示されていない追加のパケットフィールドが使用され得る。いくつかの実施形態では、図示されている特定のフィールドが、いくつかのパケットに存在し、他のパケットでは存在しない場合もある。例えば、一実施形態では、プレフィックスフィールドが、第１のデバイスに向けられた第１のパケットに存在し得るが、後に送信される他のパケットでは省略され得る。受信デバイスは、「欠けている」プレフィックスが何であるべきかを、コンテキスト又は他のパケット情報から算出可能であり得る。従って、プレフィックス及び／又はヘッダーの圧縮又は省略がいくつかの実施形態において実行され得る。上記によると、様々な実施形態におけるパケットは、パケット２０１，２１１，２２１，２３１に関し説明されたフィールド及び機能のうちの一部又は全部の任意の組み合わせを含み得る。いくつかの実施形態では、パケットフィールドは、図２に示されている順序とは異なる順序で現れ得る。
【００３４】
パケット２０１は、示されているように、プレフィックス２０２、ヘッダー２０４、ペイロード２０６及びＣＲＣフィールド２０８を含む。プレフィックス２０２は、様々な実施形態において、ＰＣＩ−エクスプレス仕様のバージョン２．１において指定されているＴＬＰプレフィックス、又は他の通信プロトコルのための任意の他のプレフィックス仕様に準拠し得る。ヘッダー２０４は、様々な実施形態において、ＰＣＩ−エクスプレス仕様の任意のバージョンにおいて指定されているＴＬＰヘッダー、又は他の通信プロトコルのための任意の他のヘッダー仕様に準拠し得る。様々な実施形態において、プレフィックス２０２及び／又はヘッダー２０４は、データパケットが発生したソース（デバイス）と、データパケットが向けられている宛先（デバイス）と、データパケットの通信プロトコル（又はフォーマット）と、パケットの１つ以上のフィールドの長さ（例えば、プレフィックスの長さ、ヘッダーの長さ、ペイロードの長さ、ＣＲＣの長さ等）と、パケットのために使用される符号化のタイプを示す情報と、パケットのためのルーティング又は経路情報と、他の情報とを含み得る。ＣＲＣフィールド２０８は、任意のエラーチェックコードを含むことができ、図２の実施形態では、パケット２０１の全部又は一部（例えば、ペイロード２０６）に対応するサイクリック冗長検査（ＣＲＣ）値を含む。この値は、パケットが誤りなく送信されたことを保証するために使用され得る。いくつかの実施形態では、ＣＲＣ値ではない他のエラーチェックコードが使用され得る。
【００３５】
いくつかの点で、パケット２１１，２２１，２３１は、パケット２０１と異なり得る。しかしながら、パケット２１１，２２１，２３１のプレフィックス、ヘッダー及びペイロードフィールドは、プレフィックス２０２、ヘッダー２０４及びペイロード２０６に関し上述された機能の何れか又は全てを含むことができ、パケット２１１，２２１，２３１は、ＣＲＣ値又は他のエラーチェックコードを含むことができる。パケット２１１，２２１，２３１のフォーマットを有するパケットが、様々な実施形態において、パケット２０１のフォーマットを有するパケットの代わりに使用され得る。特に、１つ以上の特定のデータ処理アルゴリズム（例えば、アルゴリズム１２６）を適用した後、データパケットは、２１１，２２１，２３１などの形態を有し得る。
【００３６】
パケットデータを変更するために使用されたアルゴリズムを示す情報は、パケット内の様々なロケーションに記憶され得る。いくつかの実施形態において、この情報は、プレフィックス及び／又はヘッダーに記憶され得る。他の実施形態では、この情報は、ペイロードデータフィールド内に記憶され得る（が、それは、ペイロードデータ自体の実際の一部を形成し得ない）。他のパケットフィールド又はロケーションは、データ処理アルゴリズムを示す情報を記憶するために使用されることができ、実施形態によって、及びバス又はリンクによって使用される特定の通信プロトコルに従って、様々であり得る。いくつかの実施形態では、ＴＬＰペイロードのためのアルゴリズムの符号化は、ＴＬＰフォーマットに従って作られたプレフィックスにおける特定のビットを設定することによって指定され得る。これらの実施形態において、使用されるビットは、「未使用の」又は「予約された」ビット（仕様において定義されていない、又は、未だＴＬＰプロトコルの一部ではないビット）であってよく、すなわち、それらは、エンドユーザによって定義されるか、又は、ＴＬＰ若しくは他のプロトコルに従って特定の製造者のために予約され得る、「カスタム」又は「製造者」ビットであってよい。一実施形態では、パケットデータを変更するために使用された、又は使用されるアルゴリズムを示す情報は、変更されたデータパケットではないメカニズムを介して送信されてもよい（例えば、指標は、別個のチャネル又は通信経路を介して送信されてもよいし、データパケットに特に含まれない制御情報として送信されてもよい）。
【００３７】
パケット２１１は、図２の実施形態においてデータ圧縮のために使用される。示されているように、パケット２１１は、プレフィックス２１２、ヘッダー２１４、圧縮されたペイロード２１６、ペイロードＣＲＣフィールド２１８及びパケットＣＲＣフィールド２１９を含む。圧縮されたペイロード２１６は、少なくとも１つの圧縮アルゴリズムに従って圧縮されたパケットペイロードデータを表す。従って、圧縮されたペイロード２１６は、パケット２０１のペイロード２０６のような圧縮されていないペイロードよりも小さいサイズのものであり得る（そして、パケット２１１は、パケット２０１よりも小さい合計サイズのものであり得る）。ペイロード２１６を圧縮するために使用されるアルゴリズムの指標は、プレフィックス、ヘッダー、ペイロード等を含むパケット２１１内に記憶され得る。
【００３８】
パケットＣＲＣフィールド２１９は、ＣＲＣフィールド２０８の機能の何れか又は全てを含み得る。例えば、パケットＣＲＣフィールド２１９は、パケット２１１の全部又は一部のためのエラーチェックコードを含み得る。他の誤り検査フィールド、ペイロードＣＲＣフィールド２１８は、パケット２１１に含まれ得る。フィールド２１８は、図２の実施形態において、フィールド２１９とは異なる目的を果たし得る。特に、フィールド２１８は、変更されていない（圧縮されていない）ペイロードデータに対応するエラーチェックコードであってよい。パケット２１１が受信されると、デバイスは、フィールド２１６におけるペイロードデータを圧縮解除し、それをフィールド２１８における誤り符号値と比較し得る。従って、ペイロードＣＲＣフィールド２１８は、処理要素によって作成され、変更されていないペイロードデータに対応する値を含むことができ、フィールド２１８における値は、任意の誤りが、１つ以上の特定のアルゴリズムに従ってペイロードデータを変更する際に生じたか否かを決定するために、そのパケットを受信するデバイスによって使用可能である。また、パケット２２１及び２３１は、（特に図２には示されていないが、）フィールド２１８と同様のペイロード誤り検査フィールド及びフィールド２１９と同様のパケット誤り検査フィールドを有し得る。
【００３９】
パケット２２１は、図２の実施形態においてデータ暗号化のために使用される。示されているように、パケット２２１は、プレフィックス２２２、ヘッダー２２４及び暗号化されたペイロード２２６を含む。暗号化されたペイロード２２６は、少なくとも１つの特定の暗号化アルゴリズムに従って暗号化されたパケットペイロードデータを表す。暗号化されたペイロード２２６は、ペイロード２０６などの変更されていないペイロードよりも大きい又は小さいサイズのものであってよい。ペイロード２２６を暗号化するために使用されたアルゴリズムの指標は、プレフィックス、ヘッダー、ペイロード等を含む、パケット２２１内に記憶され得る。また、パケットを暗号化するように構成された処理要素は、受信デバイスが、暗号化されたパケットを復号することを許可されること及び／又は復号できることを保証するために、暗号鍵を交換又は使用し、他の技法を使用するように構成されてもよい。
【００４０】
パケット２３１は、図２の実施形態においてフォーマット変換のために使用される。示されているように、パケット２３１は、プレフィックス２３２、ヘッダー２３４及びフォーマットが変換されたペイロード２３６を含む。フォーマットが変換されたペイロード２３６は、少なくとも１つの特定のフォーマット変換アルゴリズムに従って異なるフォーマットに（例えば、ＴＩＦＦ画像からＪＰＥＧ画像に）変換されたパケットペイロードデータを表す。フォーマットが変換されたペイロード２３６は、ペイロード２０６などの変更されていないペイロードよりも大きい又は小さいサイズのものであり得る。ペイロード２３６を変換するために使用されたアルゴリズムの指標（例えば、元のデータフォーマット及び／又は新たに変換されたデータフォーマットの指標）は、プレフィックス、ヘッダー、ペイロード等を含むパケット２３１内に記憶され得る。データを１つのフォーマットから別のものに変換するように構成された処理要素は、受信デバイスからの要求に応じて、当該変換を行うように構成され得る。
【００４１】
ここで図３を参照すると、コンピュータ可読記憶媒体３００のブロック図が示されている。図３のコンピュータ可読記憶媒体は、コンピュータに命令及び／又はデータを提供するためにコンピュータによって読み取り可能な任意の非一時的な／有形の記憶媒体を含み得る。例えば、コンピュータ可読記憶媒体は、磁気又は光学媒体などの記憶媒体、例えば、ディスク（固定若しくはリムーバブル）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、又はＢｌｕ−ｒａｙ（登録商標）を含み得る。さらに、記憶媒体は、ユニバーサルシリアルバス（ＵＳＢ）インターフェースなどの周辺インターフェースを介してアクセス可能なＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低電力ＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、不揮発性メモリ（例えば、フラッシュメモリ）等といった揮発性又は不揮発性のメモリ媒体を含み得る。記憶媒体は、微小電気機械システム（ＭＥＭＳ）、ホログラフィックストレージ、並びに、ネットワーク及び／又はワイヤレスリンクといった通信媒体を介してアクセス可能な記憶媒体を含み得る。
【００４２】
図３のコンピュータ可読記憶媒体は、図示されているように、モジュール３２０，３４０を含む。これらのモジュールは、任意の数のライブラリ、ソースファイル、実行ファイル、ＧＵＩ、スクリプトコード、バッチファイル、構成設定及び／又は構成ファイル、並びに他のファイル、及び／又はコンピュータプログラム関連のオブジェクトを含み得る。これらのコードモジュールは、１つ以上の異なるコンピュータ関連のプログラミング言語、例えば、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＶＨＤＬ等を含み、これらから解釈され、及び／又は、これらからコンパイルされ得る。いくつかの実施形態では、コードモジュールの一部は、オペレーティングシステム又は他のソフトウェア（例えば、ドライバ、データフォーマットトランスレータ等）の一部であり得る。なお、いくつかの実施形態では、モジュール３２０の全部又は一部を組み合わせてモジュール３４０にすることができ、その逆も可能である。モジュール３２０及び／又はモジュール３４０は、いくつかの実施形態において、１２５などの処理要素に関し上述された動作の何れかを引き起こすために実行されることができる。
【００４３】
図３の実施形態において、変更モジュール３２０は、１つ以上の特定のアルゴリズム（例えば、アルゴリズム１２６）に従ってパケットペイロードデータが変更されるようにするために、プロセッサによって実行可能な命令を含む。従って、いくつかの実施形態では、変更モジュール３２０は、実行されると１つ以上の圧縮、暗号化、フォーマット変換、及び／又は他のタイプのアルゴリズムに従ってデータを変更する命令を含む。パケット動作モジュール３４０は、１つ以上の特定のバス又はリンク通信プロトコル（例えば、ＰＣＩ−エクスプレス等）のためのパケットをフォーマットに従って作ること、送信すること、及び／又は受信することに関連する命令を含み得る。従って、パケット動作モジュール３４０は、パケットの送信のために１つ以上のパケットフィールド（例えば、図２に関し説明されたもの）を定式化し、１つ以上のパケットフィールドから情報を抽出し（例えば、変更されているか変更されていないかの何れかであるペイロードデータを抽出し、データを変更するためにどのアルゴリズムが使用され得たかを示す情報を抽出する等）、データパケットを作成及び送信するように構成されてもよい。
【００４４】
従って、一実施形態では、モジュール３２０及び／又はモジュール３４０は、コンピューティングデバイスに、コンピューティングデバイスのバスに結合された周辺デバイスにアプリケーションデータを転送するための要求を受信することを含む動作を実行させるために、コンピューティングデバイスのプロセッサによって実行可能である。要求は、プロセッサ１１０の１つ以上のコアで実行中のアプリケーションから、又は他のソースから受信されることができ、転送される特定のアプリケーションデータを指定することができる。このアプリケーションデータは、グラフィカル、テキスト等であってよく、任意の数のフォーマットにおけるものであってよい。アプリケーションデータは、プロセッサで実行中のアプリケーションによって、又は別のソースによって生成され得る。データは、様々な実施形態において、システムメモリ（例えば、ＲＡＭ及び／又は１つ以上のストレージデバイス）内に存在することができる。アプリケーションデータを転送するための要求は、デバイス１５０のうち１つのデバイスなどの周辺デバイスの識別を指定することができ、周辺デバイスが結合されるバスは、第１の通信プロトコルに従ってパケットを転送するように構成され得る。
【００４５】
モジュール３２０及び／又はモジュール３４０は、一実施形態において、アプリケーションデータが特定のアルゴリズムに従って変更されるようにすることを含む動作と、変更されたアプリケーションデータがバスを介して周辺デバイスに１つ以上のパケットにおいて送信されるようにすることを含む動作とをコンピューティングデバイスに実行させるために、コンピューティングデバイスのプロセッサによって実行可能である。１つ以上のパケットは、１つ以上の通信プロトコルと互換性があり得る（すなわち、その通信プロトコルのための１つ以上の仕様又は規格に準拠し得る）。アプリケーションデータが変更されるようにすることと、変更されたアプリケーションデータが送信されるようにすることとは、周辺デバイスが、特定のアルゴリズムに従って処理されたデータパケットを、バスを介して受信するように構成されているとの指標に基づいて、実行され得る。いくつかの実施形態において、動作は、１つ以上の特定のアルゴリズムに従ってアプリケーションデータを変更するように構成されたコントローラにアプリケーションデータを送信することを含み得る。アプリケーションデータが送信されるコントローラは、通信チャネルコントローラ１２０、メモリコントローラ（例えば、１２５などの処理要素を含むもの）、又は任意のタイプのデータコントローラであってよい。
【００４６】
一実施形態では、モジュール３２０及び／又はモジュール３４０は、特定のデータ処理アルゴリズムを示す（指標する）情報をコントローラに送信することを含む、上記段落において説明したような動作をコンピューティングデバイスに実行させるために、コンピューティングデバイスのプロセッサによって実行可能である。従って、この実施形態において、コントローラは、そのような指標を受信し、ペイロードデータを適切に処理する（それを圧縮する、それを暗号化する等）ように構成され得る。いくつかの実施形態では、コントローラが、プロセッサ１１０から特定のアルゴリズムを示す情報を受信することができるが、他の実施形態では、プロセッサが、データパケットがバスを介して送信される宛先デバイスからこの情報を受信することができる。例えば、コンピューティングデバイス内のハードドライブ又は他の周辺デバイスが、コントローラに、１つ以上のアルゴリズムに従って圧縮されたペイロードデータを受信できることを示し得る。このケースでは、コントローラは、プロセッサ１１０などのデータの送信者からの明示的な要求を受信する必要なく、圧縮を使用してそのハードドライブにデータを自動的に送信し得る。
【００４７】
一実施形態では、コントローラにアプリケーションデータを送信することは、アプリケーションデータの少なくとも一部が記憶されているメモリロケーションの指標をコントローラに送信することを備え得る。例えば、コントローラ又は処理要素は、アプリケーションデータを直接送信するのではなく、メモリロケーションと、そのロケーションから検索されるデータ量とを受信することができる。
【００４８】
ここで図４を参照すると、方法４００の一実施形態のフローチャートが示される。なお、以下に説明される方法の様々な実施形態において、説明される要素のうち１つ以上が、同時に実行されてもよく、図示されているのと異なる順序で実行されてもよく、全てが省略されてもよい。他の追加の要素が、所望の場合に実行されてもよい。さらに、いくつかの方法ステップのうちいくつかの部分のみが、いくつかの実施形態において実行されてもよい。方法４００のステップの全部又は一部が、いくつかの実施形態において処理要素１２５及び／又は通信チャネルコントローラ１２０の任意の組み合わせによって実行され得る。他の実施形態では、プロセッサ１１０又はデバイス１５０が方法４００のステップの全部又は一部を実行することができるが、方法４００は、そのように限定されるものではない。
【００４９】
ステップ４１０において、変更されたペイロードデータを含む１つ以上のデータパケットが作成される。これらのパケットは、要素１２５などの処理要素によって作成され得る。変更されたペイロードデータは、１つ以上の特定の処理アルゴリズム（例えば、アルゴリズム１２６）に従って受信されたデータを処理した結果であってよく、１つ以上のパケットは、宛先デバイスに宛てられ得る。ステップ４２０において、処理要素は、１つ以上の作成されたパケットと、１つ以上の特定の処理アルゴリズムを示す情報とが、バスを介して宛先デバイスに送信されるようにする。１つ以上の特定のアルゴリズムを示す情報は、１つ以上のデータパケットのうち少なくとも１つに含まれるパケットプレフィックスに記憶され得る。他の実施形態では、この情報は、作成された１つ以上のデータパケットとは別個に送信又は伝達され得る。一実施形態では、１つ以上の特定の処理アルゴリズムは、暗号化アルゴリズムを含み、本方法はさらに、暗号化ポリシーに基づいてペイロードデータを変更することを備える。しかしながら、方法４００の多くの他の実施形態が、本明細書に開示される構造及び技法によって可能であり、意図される。
【００５０】
（例示的なコンピュータシステム）
ここで図５を参照すると、例示的なコンピュータシステム５００の一実施形態が示されている。コンピュータシステム５００の全部又は一部は、図１に示されたシステムの何れか又は全ての部分を実現するために使用され得る。
【００５１】
コンピュータシステム５００は、インターコネクト５６０（例えば、システムバス）を介してシステムメモリ５２０及びＩ／Ｏインターフェース５４０に結合されたプロセッササブシステム５８０を含む。Ｉ／Ｏインターフェース５４０は、１つ以上のＩ／Ｏデバイス５５０に結合されている。コンピュータシステム５００は、サーバシステム、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス（例えば、モバイルフォン、ポケットベル若しくは携帯情報端末（ＰＤＡ））を含むが、これらに限定されない、様々なタイプのデバイスの何れかであってよい。コンピュータシステム５００は、ストレージデバイス、スイッチ、モデム、ルータなどのネットワーク接続された任意のタイプの周辺デバイスであってよい。単一のコンピュータシステム５００が便宜的に示されているが、システム５００は、共に動作する２つ以上のコンピュータシステムとして実現され得る。
【００５２】
プロセッササブシステム５８０は、１つ以上のプロセッサ又は処理ユニットを含み得る。例えば、プロセッササブシステム５８０は、１つ以上のリソース制御処理要素に結合された１つ以上の処理ユニット（各々が複数の処理要素又はコアを有し得る）を含み得る。コンピュータシステム５００の様々な実施形態において、プロセッササブシステム５８０の複数のインスタンスがインターコネクト５６０に結合され得る。様々な実施形態において、プロセッササブシステム５８０（又は５８０内の各プロセッサユニット若しくは処理要素）は、キャッシュ又は他の形態のオンボードメモリを含み得る。
【００５３】
システムメモリ５２０は、プロセッササブシステム５８０によって使用可能であり、様々な実施形態において１つ以上のメモリ要素を備える。システムメモリ５２０は、ハードディスクストレージ、フロッピー（登録商標）ディスクストレージ、リムーバブルディスクストレージ、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ−スタティックＲＡＭ（ＳＲＡＭ）、拡張データ出力（ＥＤＯ）ＲＡＭ、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＲＡＭ、等）、読み出し専用メモリ（ＲＯＭ−プログラム可能なＲＯＭ（ＰＲＯＭ）、電気的に消去可能なプログラム可能なＲＯＭ（ＥＥＰＲＯＭ）等）等の種々の物理メモリ媒体を使用して実現され得る。コンピュータシステム５００におけるメモリは、メモリ５２０などのプライマリストレージに限定されるものではない。むしろ、コンピュータシステム５００は、プロセッササブシステム５８０におけるキャッシュメモリ、Ｉ／Ｏデバイス５５０におけるセカンダリストレージ（例えば、ハードドライブ、ストレージアレイ等）のような他の形態のストレージをも含み得る。いくつかの実施形態では、これらの他の形態のストレージは、プロセッササブシステム５８０によって実行可能なプログラム命令を記憶し得る。
【００５４】
Ｉ／Ｏインターフェース５４０は、様々な実施形態に係る、他のデバイスに結合し、他のデバイスと通信するように構成された様々なタイプのインターフェースのうち何れかであってよい。一実施形態では、Ｉ／Ｏインターフェース５４０は、フロントサイドバスから１つ以上のバックサイドバスへのブリッジチップ（例えば、サウスブリッジ）である。Ｉ／Ｏインターフェース５４０は、１つ以上の対応するバス又は他のインターフェースを介して１つ以上のＩ／Ｏデバイス５５０に結合され得る。Ｉ／Ｏデバイスの例は、ストレージデバイス（ハードドライブ、光学ドライブ、リムーバブルフラッシュドライブ、ストレージアレイ、ＳＡＮ若しくはそれらの関連づけられたコントローラ）、（例えば、ローカル若しくは広域ネットワークへの）ネットワークインターフェースデバイス、又は他のデバイス（例えば、グラフィクス、ユーザインターフェースデバイス等）を含む。一実施形態では、コンピュータシステム５００は、ネットワークインターフェースデバイスを介してネットワークに結合されている。
【００５５】
コンピュータシステム（例えば、コンピュータシステム５００）によって実行されるプログラム命令は、様々な形態のコンピュータ可読記憶媒体に記憶され得る。一般的に、コンピュータ可読記憶媒体は、コンピュータに命令及び／又はデータを提供するためにコンピュータによって読み取り可能な任意の非一時的な／有形の記憶媒体を含み得る。例えば、コンピュータ可読記憶媒体は、磁気若しくは光学媒体などの記憶媒体、例えば、ディスク（固定若しくはリムーバブル）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、若しくはブルーレイを含み得る。さらに、記憶媒体は、ユニバーサルシリアルバス（ＵＳＢ）インターフェースなどの周辺インターフェースを介してアクセス可能な、ＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低電力ＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、不揮発性メモリ（例えば、フラッシュメモリ）等といった揮発性又は不揮発性のメモリ媒体を含み得る。記憶媒体は、微小電気機械システム（ＭＥＭＳ）、ホログラフィックストレージ、並びに、ネットワーク及び／又はワイヤレスリンクといった通信媒体を介してアクセス可能な記憶媒体を含み得る。
【００５６】
ハードウェアの実施形態が、いくつかの実施形態においてハードウェア生成命令を使用して生成され得る。例えば、ハードウェア生成命令は、ヴェリログ又はＶＨＤＬなどのハイレベル設計言語（ＨＤＬ）において、ハードウェア機能の挙動レベル又はレジスタ転送レベル（ＲＴＬ）の記述を記述する１つ以上のデータ構造を略述し得る。記述は、合成ツールによって読み出されることができ、それは、記述を合成してネットリストを生み出すことができる。ネットリストは、ゲートのセット（例えば、合成ライブラリにおいて定義された）を備えることができ、それは、パケットの変更及び／又は処理を実現するように構成された（１２５及び／又は１５２などの）処理要素の機能を表す。そして、ネットリストは、マスクに適用されるジオメトリック形状を記述するデータセットを生み出すように配置及び配線され得る。そして、マスクは、１つ以上の処理要素及び／又は通信チャネルコントローラ１２０、又はメモリコントローラのようなコントローラに対応する１つの半導体回路若しくは複数の半導体回路を生み出すために、様々な半導体製造ステップにおいて使用され得る。また、データベースは、所望の場合には、（合成ライブラリを有する、又は有しない）ネットリスト又はデータセットであってよい。従って、ハードウェア生成命令は、上述した方法及び技法を実現するプロセッサ及び／又は処理要素が、製造の当業者にとって周知の技法に従って生成又は作成されるようにするために、実行され得る。加えて、そのようなハードウェア生成命令は、任意の適切なコンピュータ可読媒体に記憶され得る。
【００５７】
従って、一実施形態では、データ構造によって記述される回路素子を含む集積回路を製造するための処理の一部を実行するためにコンピュータシステム上で実行可能なプログラムによって使用可能なデータ構造を備える非一時的なコンピュータ可読記憶媒体が開示され、データ構造において記述される回路素子は、バスに結合するように構成された処理要素を含み、処理要素は、バスに結合されたデバイスに向けられたペイロードデータを受信することに応じて、１つ以上の特定の処理アルゴリズムに従って受信されたペイロードデータを変更し、１つ以上のパケットを作成するように構成されており、１つ以上のパケットは、デバイスに宛てられ、変更されたペイロードデータと、１つ以上の特定の処理アルゴリズムを示す情報とを含み、処理要素は、１つ以上のパケットがバスを介してデバイスに送信されるように構成されている。さらなる実施形態では、非一時的なコンピュータ可読記憶媒体は、ＨＤＬ、ヴェリログ又はＧＤＳＩＩデータのうち少なくとも１つを記憶する。これらの実施形態において製造され得る回路素子は、本明細書において説明された任意又は全ての機能を含むことができ、上記段落に限定されない。
【００５８】
特定の実施形態が上述されたが、これらの実施形態は、例えば１つの実施形態のみが特定の機能に関し説明されていたとしても、本開示の範囲を限定することを意図しているわけではない。本開示において提供される機能の例は、そうでないとの記載がない限り、限定的ではなく例示的であることを意図している。上記説明は、本開示の利点を有する当業者にとって明らかであろう代替例、変更及び均等物をカバーすることを意図する。
本開示の範囲は、それが本明細書において対処される問題の何れか又は全てを軽減するか否かにかかかわらず、（明示又は暗示の何れかによって）本明細書に開示された任意の機能若しくは機能の組み合わせ、又は、その任意の一般化を含む。従って、新たな請求項が、本願（又はその優先権を主張する出願）の係属中に、任意のそのような機能の組み合わせに定式化され得る。特に、添付の請求項に関し、従属請求項からの機能は、独立請求項の機能と組み合わせることができ、それぞれの独立請求項からの機能は、任意の適切な手法において組み合わせることができ、添付の請求項において列挙される特定の組み合わせにおけるものだけではない。
【図１】
0006046140.tif 000002
【図２】
0006046140.tif 000003
【図３】
0006046140.tif 000004
【図４】
0006046140.tif 000005
【図５】
0006046140.tif 000006