(57)【要約】      （修正有）【課題】ネットワークコンテキスト等において、高スループットパイプラインを用いて、効率的、高スループット、高品質のデフレート圧縮の並列メカニズムを提供する。【解決手段】処理回路によって、入力データストリームに対し並列圧縮が行われる。処理回路は、ハッシュ回路と、照合エンジンと、パイプライン回路と、一致選択器とを備える。ハッシュ回路は、１つ又は複数の履歴バッファーにおいて、入力データストリーム内のターゲットデータを探索する複数のロケーションを特定する。照合エンジンは、１つ又は複数の履歴バッファーにおいて、ターゲットデータの複数の探索を並列に行う。パイプライン回路は、連続クロックサイクルにおいて入力データストリーム内の複数のシーケンシャルターゲットデータのパイプライン化された探索を行う。次に、一致選択器は、複数の探索及びパイプライン化された探索からの結果を選択して入力データストリームを圧縮する。【選択図】図２
2014182810.tif 000002
【特許請求の範囲】
【請求項１】
入力データストリーム内のターゲットデータを探索するために、１つ又は複数の履歴バッファー内の複数のロケーションを特定するハッシュ回路と、
前記１つ又は複数の履歴バッファーにおいて、前記ターゲットデータの複数の探索を並列に行う複数の照合エンジンと、
連続クロックサイクルにおいて前記入力データストリーム内の複数のシーケンシャルターゲットデータの探索をパイプライン化するパイプライン回路と、
前記複数の探索及び前記パイプライン化された探索からの結果を選択して前記入力データストリームを圧縮する一致選択器と、
を備える、装置。
【請求項２】
前記ハッシュ回路、前記照合エンジン及び前記一致選択器はプロセッサの実行回路内に配置される、請求項１に記載の装置。
【請求項３】
前記ハッシュ回路、前記照合エンジン及び前記一致選択器はプロセッサに結合されたコプロセッサ内に配置される、請求項１に記載の装置。
【請求項４】
前記複数の探索及び前記パイプライン化された探索から組み立てられた結果をトークンのシーケンス及びヘッダーとして受信する複数のエンコーダーを更に備え、
前記ヘッダーは前記シーケンス内の前記トークンのそれぞれのオフセットに関する情報を提供し、前記エンコーダーは前記トークンを並列にエンコードする、請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記一致選択器は、前記複数の探索から最も長い一致を選択し、該複数の探索からの該最も長い一致を前記パイプライン化された探索の結果と統合する、請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記ハッシュ回路は、前記ターゲットデータをハッシュして、ハッシュテーブル内の複数のエントリーを指し示すポインターを取得し、前記複数のエントリーは前記１つ又は複数の履歴バッファーの前記複数のロケーションへの複数の参照を含み、前記ハッシュ回路は前記複数の参照を出力して、前記複数のロケーションが並列に読み取られることを可能にする、請求項１から５のいずれか１項に記載の装置。
【請求項７】
並列デフレート命令に応じて、前記複数の探索及び前記パイプライン化された探索を並列に行う実行回路を更に備える、請求項１から６のいずれか１項に記載の装置。
【請求項８】
入力データストリーム内のターゲットデータを探索するために、１つ又は複数の履歴バッファー内の複数のロケーションを特定する段階と、
前記１つ又は複数の履歴バッファーにおいて、前記ターゲットデータの複数の探索を並列に行うことと、
連続クロックサイクルにおいて前記入力データストリーム内の複数のシーケンシャルターゲットデータの探索をパイプライン化する段階と、
前記複数の探索及び前記パイプライン化された探索からの結果を選択して、前記入力データストリームを圧縮する段階と、
を含む、方法。
【請求項９】
前記複数の探索及び前記パイプライン化された探索からの結果をトークンのシーケンス及びヘッダーとして組み立てる段階と、
前記トークンを並列にエンコードする段階と、
を更に含み、
前記ヘッダーは前記シーケンス内の前記トークンのそれぞれのオフセットに関する情報を提供する、請求項８に記載の方法。
【請求項１０】
前記結果を選択する段階は、
前記複数の探索から最も長い一致を選択する段階と、
前記複数の探索からの前記最も長い一致を前記パイプライン化された探索の結果と統合する段階と、
を更に含む、請求項８または９に記載の方法。
【請求項１１】
前記複数のロケーションを特定する段階は、
前記ターゲットデータをハッシュして、ハッシュテーブル内の複数のエントリーを指し示すポインターを取得する段階であって、前記複数のエントリーは前記１つ又は複数の履歴バッファーの前記複数のロケーションへの複数の参照を含む段階と、
前記複数の参照を出力して、前記複数のロケーションが並列に読み取られることを可能にする段階と、
を更に含む、請求項８から１０のいずれか１項に記載の方法。
【請求項１２】
スコアボードにおいて前記ターゲットデータの前記複数の探索の結果を追跡する段階と、
前記複数のシーケンシャルターゲットデータのそれぞれについて複数のスコアボードを更新する段階と、
を更に含む、請求項８から１１のいずれか１項に記載の方法。
【請求項１３】
命令を受信して、ネットワーク機能を実行する段階と、
前記命令に応じて前記入力データストリームに対しデフレート圧縮を行う段階と、
を更に含み、
前記デフレート圧縮は前記複数の探索及び前記パイプライン化された探索を含む、請求項８から１２のいずれか１項に記載の方法。
【請求項１４】
メモリと、
前記メモリに結合された処理回路と、
を備え、
前記処理回路は、
入力データストリーム内のターゲットデータを探索するために、１つ又は複数の履歴バッファー内の複数のロケーションを特定するハッシュ回路と、
前記１つ又は複数の履歴バッファーにおいて、前記ターゲットデータの複数の探索を並列に行う複数の照合エンジンと、
連続クロックサイクルにおいて前記入力データストリーム内の複数のシーケンシャルターゲットデータの探索をパイプライン化するパイプライン回路と、
前記複数の探索及び前記パイプライン化された探索からの結果を選択して前記入力データストリームを圧縮する一致選択器と、
を含む、システム。
【請求項１５】
前記処理回路はプロセッサの実行回路内に配置される、請求項１４に記載のシステム。
【請求項１６】
前記処理回路はプロセッサに結合されたコプロセッサ内に配置される、請求項１４に記載のシステム。
【請求項１７】
前記複数の探索及び前記パイプライン化された探索から組み立てられた結果をトークンのシーケンス及びヘッダーとして受信する複数のエンコーダーを更に備え、
前記ヘッダーは前記シーケンス内の前記トークンのそれぞれのオフセットに関する情報を提供し、前記エンコーダーは前記トークンを並列にエンコードする、請求項１４から１６のいずれか１項に記載のシステム。
【請求項１８】
前記一致選択器は、前記複数の探索から最も長い一致を選択し、該複数の探索からの該最も長い一致を前記パイプライン化された探索の結果と統合する、請求項１４から１７のいずれか１項に記載のシステム。
【請求項１９】
前記ハッシュ回路は、前記ターゲットデータをハッシュして、ハッシュテーブル内の複数のエントリーを指し示すポインターを取得し、前記複数のエントリーは前記１つ又は複数の履歴バッファーの前記複数のロケーションへの複数の参照を含み、前記ハッシュ回路は前記複数の参照を出力して、前記複数のロケーションが並列に読み取られることを可能にする、請求項１４から１８のいずれか１項に記載のシステム。
【請求項２０】
並列デフレート命令に応じて、前記複数の探索及び前記パイプライン化された探索を並列に行う実行回路を更に備える、請求項１４から１９のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１３年３月１５日に出願された、米国仮特許出願第６１／８００，２６３号に関し、この米国仮特許出願からの優先権の利益を主張する。
【０００２】
本開示は、処理ロジック、マイクロプロセッサ、及びプロセッサ又は他の処理ロジックによって実行されると、論理演算、数学演算、又は他の関数演算を実行する関連した命令セットアーキテクチャの分野に関する。
【背景技術】
【０００３】
ＬＺ７７（「ＬＺ」はLempel-Zivを表す）は、デフレート圧縮アルゴリズムを含む幾つかのユビキタス圧縮方式の基礎をなす可逆データ圧縮アルゴリズムである。ＬＺ７７アルゴリズムは、現在の入力データシーケンスを、入力データストリーム内に以前から存在するデータシーケンスのコピーへの参照と照合することによって圧縮を実行する。一致が見つかると、この一致は長さ−距離（Ｌ，Ｄ）の対によってエンコードされる。長さ−距離の対は、「現在の入力データロケーションからＤ文字戻り、そのロケーションからＬ文字コピーする」という命令文と同等のものを指す。
【０００４】
一致を突き止めるために、ＬＺ７７エンコーダーは入力データストリーム内の最も近時のデータを追跡する。このデータが保持されるデータ構造は履歴ウィンドウと呼ばれ、これは時間とともに更新されるスライディングウィンドウである。エンコーダーは、一致を探すのにこのデータを維持する必要があり、デコーダーはエンコーダーが参照する一致を解釈するのにこのデータを維持する必要がある。スライディングウィンドウが大きくなるほど、エンコーダーが参照を作成するために後方をより長く探索する場合がある。
【０００５】
最新のデータ処理及びネットワーキングにおいて、送信端におけるオンザフライ圧縮及び受信端における解凍を行うのに、多くの場合にデフレート圧縮が用いられる。デフレート圧縮は、ＬＺ７７圧縮及びハフマン符号化の組み合わせを用いる標準化された可逆データ圧縮アルゴリズムである。ＬＺ７７圧縮及びハフマン符号化は本質的に直列である。
【発明の概要】
【０００６】
実施形態は、添付図面の図に限定ではなく例として示されている。
【図面の簡単な説明】
【０００７】
【図１Ａ】１つの実施形態による並列デフレート圧縮を行うコプロセッサを示すブロック図である。
【０００８】
【図１Ｂ】１つの実施形態による並列デフレート圧縮を行うプロセッサを示すブロック図である。
【０００９】
【図２】１つの実施形態による並列デフレート圧縮回路のブロック図である。
【００１０】
【図３】別の実施形態による並列デフレート圧縮回路のブロック図である。
【００１１】
【図４Ａ】更に別の実施形態による並列デフレート圧縮回路のブロック図である。
【００１２】
【図４Ｂ】１つの実施形態による並列探索を実行するパイプラインの一例を示す図である。
【００１３】
【図５】１つの実施形態による並列エンコーディング回路のブロック図である。
【００１４】
【図６】１つの実施形態による並列デフレート命令に応答して実行される動作を示す流れ図である。
【００１５】
【図７Ａ】１つの実施形態によるインオーダーパイプライン及びアウトオブオーダーパイプラインのブロック図である。
【００１６】
【図７Ｂ】１つの実施形態によるインオーダーコア及びアウトオブオーダーコアのブロック図である。
【００１７】
【図８Ａ】１つの実施形態による、より詳細な例示的なインオーダーコアアーキテクチャのブロック図である。
【図８Ｂ】１つの実施形態による、より詳細な例示的なインオーダーコアアーキテクチャのブロック図である。
【００１８】
【図９】１つの実施形態によるプロセッサのブロック図である。
【００１９】
【図１０】１つの実施形態によるシステムのブロック図である。
【００２０】
【図１１】１つの実施形態による第２のシステムのブロック図である。
【００２１】
【図１２】１つの実施形態による第３のシステムのブロック図である。
【００２２】
【図１３】１つの実施形態によるシステムオンチップ（ＳｏＣ）のブロック図である。
【発明を実施するための形態】
【００２３】
以下の説明において、多数の具体的な詳細が示される。しかしながら、本明細書において説明される実施形態は、これらの特定の詳細なしで実施することができることが理解される。他の例において、既知の回路、構造及び技法は、この説明の理解を不明瞭にしないために詳細に示されていない。
【００２４】
本明細書において説明される実施形態は、ネットワークコンテキスト等において、高スループットパイプラインを用いて、効率的、高スループット、高品質のデフレート圧縮の並列メカニズムを提供する。実施形態は、ハードウェアにおいて並列に入力データストリームのＬＺ７７トークン化を行う並列の方法、装置及びシステムを提供する。クロックあたり複数バイトが圧縮される。シーケンシャルデータストリームにおいて複数の探索が並列に実行され、これらの探索は並列に分解される。「収束（funneling）」一致選択技法は、複数の発信トークンを分解して直列出力ストリームにするので、ストリームはコヒーレントなままであり、入力を適切に反映している。
【００２５】
本明細書において説明される実施形態は、組込みデフレート圧縮（embedded deflate compression）を行い、これはネットワーキング等の商業的運用、並びにストレージアプリケーション及びストレージシステムに有用である。組込みデフレート圧縮は、ネットワークインターフェース付近の圧縮又はファイルシステム圧縮等のスループットの影響を受けやすい（throughput-sensitive）動作の性能を改善する。
【００２６】
通常、デフレート圧縮は直列で行われ、高速汎用プロセッサにおいて実行される。クロックあたり１つのトークンの直列レートを超えて直列実装を加速するのは困難である。したがって、本明細書において説明される実施形態は、大きな潜在的商業価値を有する。
【００２７】
デフレート圧縮の実施形態は、２つのレベルで並列探索を実行する。第１のレベルにおいて、並列の探索が単一の「ターゲット」点（「ターゲットデータ」、「ターゲットデータシーケンス」とも呼ばれ、入力ストリーム内の１つ又は複数のバイト／文字とすることができる）に対して行われる。単一のターゲット点の探索結果の中で、過去のデータシーケンス（「履歴ウィンドウ」とも呼ばれる）において最も長い一致を特定する１つの探索結果が選択される。第２のレベルにおいて、探索の並列の組が複数のシーケンシャルターゲット（例えば、入力ストリームにおける現在のターゲット点及び後続の３バイト）に対して行われる。１つの実施形態では、これらのシーケンシャルターゲットに対する探索はパイプラインで行うことができる。パイプライン化された探索の結果は、シーケンシャルターゲットの最も長い一致が選択されるように結合することができる。第１のレベルの並列探索を第２のレベルのパイプライン化された探索と結合することによって、全てのクロックサイクルにおいて複数の探索結果が生成されることが可能になる。並列探索に続いて、探索結果がハフマンエンコーディングされ、出力ストリームが生成される。
【００２８】
１つの実施形態では、デフレート圧縮は処理システムのプロセッサに結合された専用ハードウェアによって実行することができる。図１Ａは、１つの実施形態による処理システム１００を示すブロック図である。処理システム１００は、バス又は相互接続１６１を介してメモリ１４１、Ｉ／Ｏデバイス１５１及びコプロセッサ１３１に結合されたプロセッサ１２１を備える。コプロセッサ１３１は、プロセッサ１２１と同じダイ上で同一ロケーションに配置することもできるし、プロセッサ１２１と別個のダイ（例えばチップセット）上に配置することもできる。１つの実施形態では、コプロセッサ１３１は、並列デフレート命令に応答してデフレート圧縮動作を実行するデフレート回路１３５を備える。１つの実施形態では、コプロセッサ１３１は、ネットワーキング又はストレージ用の通信コプロセッサモジュール又はストレージコプロセッサモジュールとすることができる。処理システム１００は簡略化された表現であり、他の構成要素が存在し得ることが理解される。
【００２９】
代替的な実施形態では、デフレート圧縮はプロセッサ内のハードウェアにおいて実施することができる。図１Ｂは、実行ユニット１４０を有するプロセッサ１１５等の命令処理装置の一実施形態のブロック図である。１つの実施形態では、実行ユニット１４０は、並列デフレート命令を含む命令を実行するように動作可能なデフレート回路１３５を備える。幾つかの実施形態では、プロセッサ１１５はマルチコアプロセッサのプロセッサコア、又は電子システムにおける処理要素とすることができる。
【００３０】
デコーダー１３０は、到来する命令を、より高レベルの機械命令又はマクロ命令の形態で受信し、これらの命令をデコードして、低レベルのマイクロオペレーション、マイクロコードエントリー点、マイクロ命令、又は他のより低いレベルの命令若しくは制御信号を生成する。これらはオリジナルのより高レベルの命令を反映し及び／又はそれらから導出される。それらのより低レベルの命令又は制御信号は、より低レベル（例えば回路レベル又はハードウェアレベル）の動作を通じてより高レベルの命令の動作を実施することができる。デコーダー１３０は、様々な異なるメカニズムを用いて実施することができる。適切なメカニズムの例には、限定ではないが、マイクロコード、ルックアップテーブル、ハードウェア実装、プログラマブル論理アレイ（ＰＬＡ）、当該技術分野において既知のデコーダーを実施するのに用いられる他のメカニズム等が含まれる。
【００３１】
デコーダー１３０は、キャッシュ１１０、メモリ１２０又は他のソースのための到来する命令を受信することができる。デコードされた命令は実行ユニット１４０に送信される。実行ユニット１４０は、デコーダー１３０から、１つ又は複数のマイクロ動作、マイクロコードエントリー点、マイクロ命令、他の命令、又は他の制御信号を受信することができる。これらは、受信した命令を反映しているか又はそれらから導出される。実行ユニット１４０は、レジスタファイル１７０、キャッシュ１１０及び／又はメモリ１２０からデータ入力を受信し、それらへのデータ出力を生成する。
【００３２】
説明を不明瞭にすることを避けるために、比較的単純なプロセッサ１１５が示され説明された。他の実施形態は２つ以上の実行ユニットを有する場合があることを理解されたい。例えば、プロセッサ１１５は、例えば算術ユニット、算術論理ユニット（ＡＬＵ）、整数ユニット、浮動小数点ユニット等の複数の異なるタイプの実行ユニットを備えることができる。命令処理装置又はプロセッサの更に他の実施形態は、複数のコア、論理プロセッサ又は実行エンジンを有することができる。後に図７〜図１３に関してプロセッサ１１５の複数の実施形態が提供される。
【００３３】
図２は、１つの実施形態による圧縮モジュール２００（例えば図１Ａ又は図１Ｂのデフレート回路１３５）の一例を示すブロック図である。この実施形態では、圧縮モジュール２００は、単一のターゲット点に対して並列探索を行う。圧縮モジュール２００は、入力データストリームをバッファーリングする入力バッファー２１０を含む。入力データストリームはルックアサイドキュー（ＬＡＱ）２１２並びに履歴バッファー２１６Ａ及び２１６Ｂ内に供給される。ＬＡＱ２１２は、圧縮される現在のデータシーケンスを記憶し、履歴バッファー２１６Ａ及び２１６Ｂは、同じ入力データストリーム内の過去のデータシーケンスを記憶するスライディングウィンドウである。この実施形態では、各履歴バッファー２１６Ａ及び２１６Ｂは１つしか読取りポートを有しないと仮定され、したがって、過去のデータシーケンスは、各履歴バッファー２１６Ａ及び２１６Ｂがこの過去のデータシーケンスの同一のコピーを記憶するように複製される。履歴バッファーが複数の読取り／書込みポートを有する代替的な実施形態では、そのような履歴バッファーは１つしか必要とされない。履歴バッファー２１６Ａ及び２１６Ｂ内のデータが探索され、照合エンジン２１７Ａ及び２１７Ｂによって現在のデータシーケンスと並列に照合される。
【００３４】
説明を簡単にするために、２つの照合エンジン２１７Ａ及び２１７Ｂのみが示される。圧縮モジュール２００は任意の数の照合を並列に行う任意の数の照合エンジンを備えることができることが理解される。
【００３５】
１つの実施形態において、探索速度を改善するために、現在のデータシーケンスはハッシュ関数ユニット（例えばハッシャー２１３）によってハッシングされる。ハッシュの結果はハッシュテーブル２１４へのポインター（例えばアドレス又はインデックス）である。そのアドレスにおいて、ハッシュテーブル２１４は複数のエントリーを記憶し、各エントリーは参照を含み、各参照は履歴バッファー２１６Ａ及び２１６Ｂにおける或るロケーションを指し示す。ハッシュテーブル２１４内に記憶することができる参照の数がハッシュテーブル２１４の容量を超えている場合、ハッシュスピルコントローラー（hash spill controller）２１５は、ハッシュテーブル２１４内のエントリーのうちのいずれを外部メモリに移すことができるかを判断する。例えば、ハッシュテーブル２１４の外に移すことができるエントリーは、最も用いられていないか又は最も長く用いられていないエントリーとすることができる。ハッシュテーブル２１４を用いて、照合エンジン２１７Ａ及び２１７Ｂは履歴バッファー２１６Ａ及び２１６Ｂにおけるこれらのロケーションまで探索を狭めて、ＬＡＱ２１２内の探索ターゲットが履歴バッファー２１６Ａ及び２１６Ｂにおけるデータシーケンスの任意の部分に一致するか否かを判断することができる。照合エンジン２１７Ａ及び２１７Ｂの出力から、一致選択器２２０は、探索ターゲットについて最も長い一致を有する出力のうちの１つを選択する。選択された一致した出力は１つ又は複数のエンコーダー２２５に送信され、１つ又は複数のエンコーダー２２５はデータストリームをエンコードし、エンコードされたストリームを出力バッファー２３０に送信する。
【００３６】
図３は、別の実施形態による圧縮モジュール３００（例えば図１Ａ又は図１Ｂのデフレート回路１３５）の例を示すブロック図である。この実施形態では、圧縮モジュール３００は、入力データストリームをバッファーリングする入力バッファー３１０を備える。入力データストリームは履歴バッファー３１２内に供給される。入力データストリームは、ハッシュ関数ユニット（例えばハッシャー３１３）によってハッシュされる。ハッシュ結果はハッシュテーブル３１４へのポインター（例えばアドレス又はインデックス）である。この実施形態では、ハッシュテーブル３１４は複数のレベルを含む。入力データシーケンス（すなわちターゲット点）がハッシュされるとき、ハッシュされた値はハッシュテーブル３１４内の「バケット（bucket）」を指すポインターである。各バケットは複数のエントリーを含み、各エントリーは異なるハッシュレベルにある。各エントリーは履歴バッファー３１２への参照（ロケーションを指示する）を含む。履歴バッファー３１２のこれらの複数のロケーションを独立探索し、ターゲット点と比較することができる。
【００３７】
１つの実施形態では、各照合レベルは対応する照合エンジン３１７を有する。照合エンジン３１７は単一のターゲット点について履歴バッファー３１２の異なるロケーションにおいて並列に探索を行う。照合エンジン３１７は衝突アービトレーター（collision arbitrator）３１６を通じて履歴バッファー３１２にアクセスすることができ、衝突アービトレーター３１６はアクセス動作における衝突を解消する。照合エンジン３１７の出力は、一致選択器３２０によって比較され、最も長い一致を有する出力が選択される。選択された一致した出力は１つ又は複数のエンコーダー３２５に送信され、１つ又は複数のエンコーダー３２５はデータストリームをエンコードし、エンコードされたストリームを出力バッファー３３０に送信する。
【００３８】
図４Ａは、別の実施形態による圧縮モジュール４００（例えば図１Ａ又は図１Ｂのデフレート回路１３５）の一例を示すブロック図である。この実施形態では、並列探索（例えば４つの並列探索）が入力データストリーム内の複数のシーケンシャルターゲット点（例えば８つのターゲット点）に対して行われる。一致選択の第１のレベルにおいて、単一のターゲット点に対して動作する並列探索について最良の一致が選択される。一致選択の第２のレベルにおいて、シーケンシャルターゲットの最良の一致が選択され、並列探索結果と統合され、最良の圧縮を生成する組合せが選択される。
【００３９】
この実施形態では、圧縮モジュール４００は入力データストリームをバッファーリングする入力バッファー４１０を備える。入力データストリームは履歴バッファー４１６及びＬＡＱ４１２に供給される。４つの入力ターゲットがハッシュ関数ユニット（例えばハッシャー４１３）によってそれぞれハッシュされる。ハッシュ結果は、ハッシュテーブル４１４のアドレス（又はインデックス）へのポインターである。ハッシュテーブル４１４へ書き込むには、ハッシャー出力がまずハッシュ書込みバッファー４３２に送信される。ハッシュ書込みバッファー４３２はハッシュテーブル更新ロジック４３３に結合されている。ハッシュテーブル更新ロジック４３３は、ハッシュテーブル書込みポインター４３４に更に結合されている。ハッシュテーブル書込みポインター４３４は、ハッシュテーブルバケットチェーンに書き込む次のバケットを指し示し、サイクルあたり最大でｎ個の読取り／インクリメントイベントまでの、非常に高速な読取り／インクリメントに利用可能である。ここで、ｎはハッシャー数である。
【００４０】
ハッシュテーブル更新ロジック４３３及びハッシュテーブル書込みポインター４３４は、ハッシュテーブル４１４への書込みが許可されるか否か（例えばアクセスへの衝突がないとき）、及びハッシュテーブル４１４内のどこに書き込むかを制御する。ハッシュテーブル４１４内に記憶することができるエントリー数がハッシュテーブル４１４の容量を超えているとき、ハッシュスピルコントローラー４１５は、ハッシュテーブル４１４内のエントリーのうちのいずれを外部メモリに移すことができるかを判断する。この実施形態では、ハッシュ回路セクションのスループットはｎである。ここで、ｎ＞サイクルあたり４バイトの最小スループット、である。このスループットは、長い一致によって、探索エンジンが潜伏した状態で処理が探索バッファーを通じて迅速にホップできるようになる「ジャンプアヘッド（jump-ahead）」を可能にする。
【００４１】
その一方で、シーケンシャルターゲットは履歴バッファー４１６及びＬＡＱ４１２にも入力される。ハッシュテーブル３１４内の参照に基づいて、照合エンジン４１７は履歴バッファー４１６内の参照によって指示されたロケーションを探索する。各クロックサイクルにおいて、４つの探索が行われ、各探索は最大で８深度（すなわち、８つのパイプラインステージ）であり、サイクルあたり最大３２個の照合エンジン４１７の実行である。８つの照合エンジン４１７の各群はスコアボード４１８と関連付けられる。スコアボード４１８はシーケンシャルターゲットの照合結果を追跡し、これらの結果を一致選択器４２０に転送する。一致選択器４２０は、単一のターゲットの最も長い一致を選択し、４つのシーケンシャルターゲットの照合結果を統合する。生成された一致した点はエンコーダー４２５に送信され、エンコーダー４２５はハフマン符号ルックアップテーブル（ＬＵＴ）４２６を用いてデータストリームをエンコードし、エンコードされたストリームを出力バッファー４３０に送信する。
【００４２】
図４Ｂは、１つの実施形態による、入力データシーケンスのパイプライン化された並列探索を行うパイプラインの一例を示している。パイプラインは、上から下までステージ０〜７で示される８つのパイプラインステージ（８つのクロックサイクルに対応する）において入力データシーケンスに対し並列探索を行う。図４Ｂのパイプラインは、図４Ａのブロック４７０の代替的な実施形態である。この実施形態では、入力データシーケンス（４つのターゲット点を含む）が各クロックサイクルにおいて処理される。最上位における入力はＬＡＱ内に４つのターゲット点（例えば４バイトデータ）を含み、最下位における出力は履歴バッファーのデータ出力であり、このデータ出力は、ＬＡＱの適切なバイトと比較され、一致が存在するか否かが判断される。パイプラインステージ３において、４つの読取り要求がハッシュテーブル（ＨＴＲＤ０〜３として示される）に発行され、読み取られる履歴バッファーのロケーションが決定される。パイプラインステージ５において、１６個の読取り要求が履歴バッファー（ＨＢ０ｒｄ０及びＨＲ１ｒｄ０）に発行される。この実施形態では、履歴バッファーに対する１６個の読取り要求が存在する。なぜなら、この実施形態は、一度に４つの連続ストリームバイトに対し機能するように設計されるためである。ハッシュ及びハッシュテーブルルックアップが４バイトのそれぞれについて行われる。各ルックアップによって、４つのハッシュバケット（レベル）のコンテンツが得られ、これらはハッシュアドレスに割り当てられる。ハッシュテーブルは１６個の履歴バッファーアドレスを出力する。ハッシュテーブル及び履歴バッファーに対する読取り要求は、読取り対応生成ロジック（「ＲＤ  ＥＮ生成ロジック４７６及び４７８）によって可能にされる。読取りアドレスが同じメモリロケーション又は同じ近傍内のエリアに対するものであるとき、行うことができる読取り数に物理的制限が存在する。この制限又は制約は、バンク衝突と呼ばれる。バンク衝突が生じると、そのクロックにおいて複数の読取り要求のうちの１つ又は複数を満たすことができず、したがってドロップ又は再スケジューリングされる。バンク衝突はバンク衝突ロジック４７２及び４７４によって解決される。
【００４３】
並列探索の後、探索結果がＬＺ７７トークンのシーケンシャルストリームに組み立てられる。ＬＺ７７トークンは、「リテラル」（履歴バッファー内で一致を見つけることができないデータ）及び（距離、長さの）対（一致を見つけることができるとき）を含む。各トークンは可変のサイズを有する。ＬＺ７７トークンのストリームはハフマンエンコーディングに従って並列にエンコードされる。
【００４４】
図５は、１つの実施形態によるＬＺ７７トークンストリーム５２０の並列エンコーディングの一例を示している。この実施形態では、８つのＬＺ７７トークン５２０が並列にエンコードされ、ハフマンエンコーディングはテーブルをルックアップすることによって行われる（例えば、ハフマン符号ルックアップテーブル（ＬＵＴ）５２６）。代替的な実施形態では、異なる数のＬＺ７７トークンを並列にエンコードすることができることが理解される。圧縮出力（一致選択器出力）からの単一の「パケット」は、ヘッダー５１０と、８つのＬＺ７７トークン５２０を含むペイロードを含む。ヘッダー５１０は、各トークン５２０が他のトークンと独立してロケーションを特定され処理されることができるように、各トークン５２０のオフセットに関する情報を提供する。１つの実施形態では、各トークン５２０は８ビットのリテラル又は２４ビットの参照のいずれかである。ヘッダー５１０は１６ビットとすることができ、ペイロード内の対応するトークンがリテラルであろうと参照であろうと（又はパケットの終了を示そうと）、シグナリングごとに８対のビットを含む。ヘッダー５１０の使用によって、各トークン５２０の独立した高速で並列なルックアップが可能になる。
【００４５】
ハフマン符号ＬＵＴ５２６を用いると、８つのエンコーダー５２５によって８つのＬＺ７７トークン５２０が並列にエンコードされる。トークン５２０ごとに、対応するエンコーダー５２５がコード及び長さを出力する。各エンコーダー５２５はまず、ヘッダー５１０内のビットを検査してペイロード内のそのエンコーダー自身のトークンのオフセットを見つける。例えば、エンコーダー５２５は、オフセットを見つけるには、エンコーダー５２５のトークンの前にリテラル及び参照がいくつ存在するかを求める必要がある場合がある。次に、エンコーダー５２５はエンコーダー５２５自身のトークンをエンコードし、コード及び長さを出力する。エンコードされた出力は、コード再結合ブロック５２７によってハフマンエンコーディングされた出力５３０のシーケンシャルストリームに再組立てされる。これは並列デフレート圧縮の最終的な出力でもある。
【００４６】
図６は、１つの実施形態による、ＬＺ７７圧縮に基づいて並列圧縮を行う方法６００のブロック流れ図である。並列圧縮は、並列デフレート圧縮の一部とすることができる。１つの実施形態では並列圧縮は並列デフレート命令に応答して行われる。
【００４７】
方法６００は、処理回路（例えば図１Ａのコプロセッサ１３１又は図１Ｂの実行ユニット１４０）が入力データストリーム上で並列圧縮を行うことから開始する。１つ又は複数の履歴バッファーにおいて、入力データストリーム内のターゲットデータを探索する複数のロケーションが特定される（６１１）。１つ又は複数の履歴バッファーにおいて、ターゲットデータの複数の探索が並列に行われる（６１２）。連続クロックサイクルにおいて、入力データストリーム内の複数のシーケンシャルターゲットデータのパイプライン化された探索が行われる（６１３）。次に、複数の探索及びパイプライン化された探索から結果が選択され、入力データストリームが圧縮される（６１４）。
【００４８】
１つの実施形態では、方法６００は、複数の探索及びパイプライン化された探索からの結果をトークン及びヘッダーのシーケンスとして組み立てることと、トークンを並列にエンコードすることとを更に含む。ヘッダーはシーケンス内のトークンのそれぞれのオフセットに関する情報を提供する。１つの実施形態では、複数の探索及びパイプライン化された探索から結果を選択するとき、処理回路は複数の探索から最も長い一致を選択し、複数の探索からのこの最も長い一致を、パイプライン化された探索の結果と統合する。１つの実施形態では、複数のロケーションを特定するとき、処理回路はターゲットデータをハッシュして、ハッシュテーブル内の複数のエントリーを指し示すポインターを得る。エントリーは１つ又は複数の履歴バッファーの複数のロケーションへの複数の参照を含む。複数の参照を用いて複数のロケーションが並列に読み取られることを可能にする。
【００４９】
１つの実施形態では、スコアボードにおいてターゲットデータの複数の探索の結果が追跡される。複数のスコアボードが複数のシーケンシャルターゲットデータのそれぞれについて更新される。１つの実施形態において、処理回路がネットワーク機能を行う命令を受信すると、処理回路は命令に応答して入力データストリームに対しデフレート圧縮を行う。デフレート圧縮は複数の探索及びパイプライン化された探索を含む。
【００５０】
様々な実施形態において、図６の方法は汎用プロセッサ、専用プロセッサ（例えばグラフィックスプロセッサ又はデジタル信号プロセッサ）又は任意のタイプのデジタル論理デバイス又は命令処理装置によって行うことができる。幾つかの実施形態では、図６の方法は図１Ａのコプロセッサ１３１、図１Ｂのプロセッサ１１５、又は図７〜図１３に示す実施形態等の同様のプロセッサ、装置、又はシステムによって行うことができる。さらに、図１Ａのコプロセッサ１３１、図１Ｂのプロセッサ１１５、及び図７〜図１３に示すプロセッサ、装置又はシステムは、図６の方法の実施形態と同じか、同様であるか又は異なる動作及び方法の実施形態を行うことができる。
【００５１】
例示的なコアアーキテクチャインオーダー及びアウトオブオーダーコアブロック図  図７Ａは、１つの実施形態による、例示的なインオーダーパイプライン及び例示的なレジスタリネーミング、アウトオブオーダー発行／実行パイプラインを示すブロック図である。図７Ｂは、１つの実施形態による、プロセッサに含まれる、インオーダーアーキテクチャコアの例示的な実施形態、及び例示的なレジスタリネーミング、アウトオブオーダー発行／実行アーキテクチャコアの双方を示すブロック図である。図７Ａ及び図７Ｂの実線のボックスは、インオーダーパイプライン及びインオーダーコアを示す一方、破線のボックスのオプションの追加は、レジスタリネーミング、アウトオブオーダー発行／実行パイプライン及びコアを示す。インオーダーの態様がアウトオブオーダーの態様のサブセットであることを考慮して、アウトオブオーダーの態様を説明する。
【００５２】
図７Ａにおいて、プロセッサパイプライン７００は、フェッチステージ７０２と、レングスデコードステージ７０４と、デコードステージ７０６と、アロケーションステージ７０８と、リネーミングステージ７１０と、スケジューリング（ディスパッチ又は発行としても知られる）ステージ７１２と、レジスタ読取り／メモリ読取りステージ７１４と、実行ステージ７１６と、ライトバック／メモリ書込みステージ７１８と、例外ハンドリングステージ７２２と、コミットステージ７２４とを備える。
【００５３】
図７Ｂは、実行エンジンユニット７５０に結合されたフロントエンドユニット７３０を含むプロセッサコア７９０を示し、これらの実行エンジンユニット及びフロントエンドユニットの双方はメモリユニット７７０に結合されている。コア７９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューター（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、又はハイブリッド若しくは代替のコアタイプとすることができる。さらに別の選択肢として、コア７９０は、例えば、ネットワークコア又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理ユニット（ＧＰＧＰＵ）コア、グラフィックスコア等の専用コアとすることができる。
【００５４】
フロントエンドユニット７３０は、命令キャッシュユニット７３４に結合された分岐予測ユニット７３２を備える。命令キャッシュユニット７３４は、命令変換ルックアサイドバッファー（ＴＬＢ）７３６に結合され、命令変換ルックアサイドバッファー（ＴＬＢ）７３６は命令フェッチユニット７３８に結合され、命令フェッチユニット７３８はデコードユニット７４０に結合される。デコードユニット７４０（又はデコーダー）は命令をデコードし、出力として、１つ又は複数のマイクロオペレーション、マイクロコードエントリー点、マイクロ命令、他の命令、又は他の制御信号を生成することができる。これらは、オリジナルの命令からデコードされるか、又はオリジナルの命令を別の方法で反映しているか、又はオリジナルの命令から導出される。デコードユニット７４０は、様々な異なるメカニズムを用いて実施することができる。適したメカニズムの例には、限定ではないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコード読み取り専用メモリ（ＲＯＭ）等が含まれる。１つの実施形態では、コア７９０はマイクロコードＲＯＭ又は或る特定のマクロ命令のマイクロコードを（例えばデコードユニット７４０に又はそうでない場合フロントエンドユニット７３０内に）記憶する他の媒体を含む。デコードユニット７４０は実行エンジンユニット７５０内のリネーム／アロケーターユニット７５２に結合されている。
【００５５】
実行エンジンユニット７５０は、リタイアメントユニット（retirement unit：退避ユニット）７５４に結合されるリネーム／アロケーターユニット７５２と、１組の１つ又は複数のスケジューラーユニット７５６を備える。スケジューラーユニット（複数の場合もある）７５６は、リザベーションステーション、中央命令ウィンドウ等の任意の数の異なるスケジューラーを表す。スケジューラーユニット（複数の場合もある）７５６は、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８に結合されている。物理レジスタファイル（複数の場合もある）ユニット７５８のそれぞれは、１つ又は複数の物理レジスタファイルを表し、これらの物理レジスタファイルの異なるものは、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス（例えば、実行される次の命令のアドレスである命令ポインター）等の１つ又は複数の異なるデータタイプを記憶する。１つの実施形態では、物理レジスタファイル（複数の場合もある）ユニット７５８は、ベクトルレジスタユニットと、書込みマスクレジスタユニットと、スカラーレジスタユニットとを備える。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供することができる。レジスタリネーミング及びアウトオブオーダー実行を（例えば、再順序付けバッファー（複数の場合もある）及びリタイアメントレジスタファイル（複数の場合もある）を用いるか、フューチャーファイル（複数の場合もある）、履歴バッファー（複数の場合もある）、及びリタイアメントレジスタファイル（複数の場合もある）を用いるか、レジスタマップ及びレジスタのプールを用いる等して）実施することができる様々な方法を示すために、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８は、リタイアメントユニット７５４によってオーバーラップされている。リタイアメントユニット７５４及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８は実行クラスター（複数の場合もある）７６０に結合されている。実行クラスター（複数の場合もある）７６０は、一組の１つ又は複数の実行ユニット７６２と、一組の１つ又は複数のメモリアクセスユニット７６４とを備える。実行ユニット７６２は、様々なタイプのデータ（例えばスカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して様々な演算（例えば、シフト、加算、減算、乗算）を行うことができる。実施形態の中には、特定の機能又は機能のセットに専用の複数の実行ユニットを備えることができるものもあれば、１つの実行ユニットのみを備えるか、又は全てが全ての機能を行う複数の実行ユニットを備えることができるものもある。スケジューラーユニット（複数の場合もある）７５６、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８、及び実行クラスター（複数の場合もある）７６０は、場合によっては複数のものとして示されている。なぜなら、或る特定の実施形態は、或る特定のタイプのデータ／動作に別個のパイプライン（例えば、スカラー整数パイプライン、スカラー浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はそれぞれがそれ自身のスケジューラーユニット、物理レジスタファイル（複数の場合もある）ユニット、及び／又は実行クラスターを有するメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターのみがメモリアクセスユニット（複数の場合もある）７６４を有する或る特定の実施形態が実施される）を作製するためである。別個のパイプラインが用いられる場合、これらのパイプラインのうちの１つ又は複数は、アウトオブオーダー発行／実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
【００５６】
一組のメモリアクセスユニット７６４は、メモリユニット７７０に結合されている。このメモリユニットは、レベル２（Ｌ２）キャッシュユニット７７６に結合されたデータキャッシュユニット７７４に結合されたデータＴＬＢユニット７７２を備える。１つの例示的な実施形態では、メモリアクセスユニット７６４は、ロードユニットと、ストアアドレスユニットと、ストアデータユニットとを備えることができ、これらのそれぞれは、メモリユニット７７０内のデータＴＬＢユニット７７２に結合されている。命令キャッシュユニット７３４は、メモリユニット７７０内のレベル２（Ｌ２）キャッシュユニット７７６に更に結合されている。Ｌ２キャッシュユニット７７６は、キャッシュの１つ又は複数の他のレベルに結合され、最終的にメインメモリに結合される。
【００５７】
例として、例示的なレジスタリネーミング、アウトオブオーダー発行／実行コアアーキテクチャは、パイプライン７００を以下のように実施することができる。１）命令フェッチ７３８が、フェッチステージ７０２及びレングスデコードステージ７０４を実行し、２）デコードユニット７４０がデコードステージ７０６を実行し、３）リネーム／アロケーターユニット７５２がアロケーションステージ７０８及びリネーミングステージ７１０を実行し、４）スケジューラーユニット（複数の場合もある）７５６がスケジュールステージ７１２を実行し、５）物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８及びメモリユニット７７０がレジスタ読取り／メモリ読取りステージ７１４を実行し、実行クラスター７６０が実行ステージ７１６を実行し、６）メモリユニット７７０及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８がライトバック／メモリ書込みステージ７１８を実行し、７）様々なユニットが例外ハンドリングステージ７２２に関与することができ、８）リタイアメントユニット７５４及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）７５８がコミットステージ７２４を実行する。
【００５８】
コア７９０は、本明細書において説明した命令（複数の場合もある）を含む、１つ又は複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンとともに追加された幾つかの拡張を有する）；カリフォルニア州サニーベールのMIPS Technologies社のＭＩＰＳ命令セット、カリフォルニア州サニーベールのARM Holdings社の（ＮＥＯＮ等のオプションの追加拡張を有する）ＡＲＭ命令セット）をサポートすることができる。１つの実施形態では、コア７９０は、パックドデータ命令セット拡張（例えばＳＳＥ、ＡＶＸ１、ＡＶＸ２等）をサポートし、それによって多くのマルチメディアアプリケーションによって用いられる演算がパックドデータを用いて実行されることを可能にするロジックを含む。
【００５９】
コアは、マルチスレッディング（並列の複数組の演算又はスレッドを実行する）をサポートすることができ、タイムスライスされたマルチスレッディング、同時のマルチスレッディング（単一の物理コアが、当該物理コアが同時にマルチスレッディングしているスレッドのそれぞれについて論理コアを提供する）、又はそれらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）ハイパースレッディング技術におけるようなタイムスライスされたフェッチ及びデコード並びにその後の同時のマルチスレッディング）を含む様々な方法でそうすることができることが理解されるべきである。
【００６０】
レジスタリネーミングは、アウトオブオーダー実行に関して説明されるが、レジスタリネーミングは、インオーダーアーキテクチャにおいて用いることができることが理解されるべきである。プロセッサの図示した実施形態は、別個の命令キャッシュユニット７３４／データキャッシュユニット７７４及び共有されたＬ２キャッシュユニット７７６も備えるが、代替の実施形態は、例えば、レベル１（Ｌ１）内部キャッシュ、又は複数のレベルの内部キャッシュ等の、命令及びデータの双方の単一の内部キャッシュを有することができる。幾つかの実施形態では、システムは、コア及び／又はプロセッサの外部にある内部キャッシュ及び外部キャッシュの組み合わせを備えることができる。代替的に、キャッシュの全てを、コア及び／又はプロセッサの外部にすることができる。
【００６１】
特定の例示的なインオーダーコアアーキテクチャ  図８Ａ及び図８Ｂは、より詳細な例示的なインオーダーコアアーキテクチャのブロック図を示す。このコアは、チップ内の幾つかの論理ブロックのうちの１つである（同じタイプ及び／又は異なるタイプの他のコアを含む）。論理ブロックは、用途に応じて、或る固定機能ロジック、メモリＩ／Ｏインターフェース、及び他の必要なＩ／Ｏロジックを用いて高帯域幅相互接続ネットワーク（例えばリングネットワーク）を通じて通信する。
【００６２】
図８Ａは、１つの実施形態による、単一プロセッサコア、並びにオンダイ相互接続ネットワーク８０２及びそのローカルサブセットであるレベル２（Ｌ２）キャッシュ８０４との単一プロセッサコアの接続のブロック図である。１つの実施形態では、命令デコーダー８００はパックドデータ命令セット拡張を有するｘ８６命令セットをサポートする。Ｌ１キャッシュ８０６は、スカラーユニット及びベクトルユニットへのキャッシュメモリへの低レイテンシのアクセスを可能にする。（設計を簡単にするために）１つの実施形態では、スカラーユニット８０８及びベクトルユニット８１０は別個のレジスタセット（それぞれ、スカラーレジスタ８１２及びベクトルレジスタ８１４）を用い、それらの間で転送されるデータはメモリに書き込まれ、次にレベル１（Ｌ１）キャッシュ８０６からリードバックされるが、代替的な実施形態は異なる手法を用いてもよい（例えば、単一のレジスタセットを用いるか、又はデータが書込み及びリードバックされることなく２つのレジスタファイル間で転送されることを可能にする通信パスを含む）。
【００６３】
Ｌ２キャッシュのローカルサブセット８０４は、プロセッサコアあたり１つの別個のローカルサブセットに分割されたグローバルＬ２キャッシュの一部である。各プロセッサコアは、そのプロセッサコア自身のＬ２キャッシュのローカルサブセット８０４への直接アクセスパスを有する。プロセッサコアによって読み取られるデータは、そのＬ２キャッシュサブセット８０４に記憶され、自身のローカルＬ２キャッシュサブセットにアクセスする他のプロセッサコアと並列に迅速に、このデータにアクセスすることができる。プロセッサコアによって書き込まれるデータはこのプロセッサコア自身のＬ２キャッシュサブセット８０４に記憶され、必要な場合、他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンス性を確保する。リングネットワークは双方向であり、プロセッサコア等のエージェント、Ｌ２キャッシュ、及び他の論理ブロックがチップ内で互いに通信することを可能にする。
【００６４】
図８Ｂは、１つの実施形態によれば、図８Ａ内のプロセッサコアの一部の拡大図である。図８Ｂは、Ｌ１キャッシュ８０４のＬ１データキャッシュ８０６Ａ部分と、ベクトルユニット８１０及びベクトルレジスタ８１４に関する更なる詳細を含む。詳細には、ベクトルユニット８１０は、１６要素（16-wide）ベクトル処理ユニット（ＶＰＵ）（１６要素ＡＬＵ８２８を参照）であり、整数命令、単精度浮動小数点命令及び倍精度浮動小数点命令のうちの１つ又は複数を実行する。ＶＰＵはスウィズルユニット８２０を用いたレジスタ入力のスウィズリング、数値変換ユニット８２２Ａ及び８２２Ｂを用いた数値変換、並びにメモリ入力における複製ユニット８２４を用いた複製をサポートする。書込みマスクレジスタ８２６によって、結果としてのベクトル書込みの予測が可能になる。
【００６５】
統合メモリコントローラー及びグラフィックスを有するプロセッサ  図９は、１つの実施形態による、２つ以上のコアを有することができ、統合メモリコントローラーを有することができ、統合グラフィックスを有することができるプロセッサ９００のブロック図である。図９における実線のボックスは、単一のコア９０２Ａ、システムエージェント９１０、一組の１つ又は複数のバスコントローラーユニット９１６を有するプロセッサ９００を示す一方、破線のボックスのオプションの追加は、複数のコア９０２Ａ〜９０２Ｎ、システムエージェントユニット９１０内の一組の１つ又は複数の統合メモリコントローラーユニット９１４、及び専用ロジック９０８を有する代替的なプロセッサ９００を示している。
【００６６】
このため、プロセッサ９００の様々な実施態様は、１）統合されたグラフィックス及び／又は科学的（スループット）ロジック（１つ又は複数のコアを含むことができる）である専用ロジック９０８と、１つ又は複数の汎用コア（例えば汎用インオーダーコア、汎用アウトオブオーダーコア、２つの組み合わせ）であるコア９０２Ａ〜９０２Ｎとを有するＣＰＵと、２）主にグラフィックス及び／又は科学的（スループット）意図の多数の専用コアであるコア９０２Ａ〜９０２Ｎを有するコプロセッサと、３）多数の汎用インオーダーコアであるコア９０２Ａ〜９０２Ｎを有するコプロセッサと、を備えることができる。このため、プロセッサ９００は、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ（汎用グラフィックス処理ユニット）、高スループット多数統合コア（ＭＩＣ）コプロセッサ（３０以上のコアを含む）、組込みプロセッサ等の、汎用プロセッサ、コプロセッサ又は専用プロセッサとすることができる。プロセッサは、１つ又は複数のチップ上に実装することができる。プロセッサ９００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、又はＮＭＯＳ等の複数のプロセス技術のうちの任意のものを用いた１つ又は複数の基板のうちの一部とすることができ、及び／又はそれらの１つ又は複数の基板上に実装することができる。
【００６７】
メモリ階層構造は、一組の統合メモリコントローラーユニット９１４に結合された、コア内の１つ又は複数のレベルのキャッシュと、一組の１つ若しくは複数の共有キャッシュユニット９０６、及び外部メモリ（図示せず）とを含む。この一組の共有キャッシュユニット９０６は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又は他のレベルのキャッシュ等の１つ又は複数の中間レベルキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、及び／又はそれらの組み合わせを含むことができる。１つの実施形態では、リングベースの相互接続ユニット９１２が、統合グラフィックスロジック９０８、一組の共有キャッシュユニット９０６、及びシステムエージェントユニット９１０／統合メモリコントローラーユニット（複数の場合もある）９１４を相互接続するが、代替の実施形態は、そのようなユニットを相互接続するための任意の数のよく知られた技法を用いることができる。１つの実施形態では、コヒーレンス性は１つ又は複数のキャッシュユニット９０６とコア９０２Ａ〜９０２Ｎとの間で維持される。
【００６８】
幾つかの実施形態では、コア９０２Ａ〜９０２Ｎのうちの１つ又は複数は、マルチスレッディングすることができる。システムエージェント９１０は、コア９０２Ａ〜９０２Ｎを協調及び動作させる構成要素を備える。システムエージェントユニット９１０は、例えば、電力制御ユニット（ＰＣＵ）及びディスプレイユニットを備えることができる。ＰＣＵは、コア９０２Ａ〜９０２Ｎ及び統合グラフィックスロジック９０８の電力状態を調整するのに必要とされるロジック及び構成要素とすることもできるし、それらを備えることもできる。ディスプレイユニットは、１つ又は複数の外部に接続されたディスプレイを駆動するためのものである。
【００６９】
コア９０２Ａ〜９０２Ｎは、命令セットアーキテクチャに関して、同種とすることもできるし、異種とすることもできる。すなわち、コア９０２Ａ〜９０２Ｎのうちの２つ以上は、同じ命令セットを実行することができる一方、他のものは、その命令セットのサブセットのみ又は異なる命令セットを実行することができる。
【００７０】
例示的なコンピューターアーキテクチャ  図１０〜図１３は、例示的なコンピューターアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラー、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスの技術分野において知られている他のシステム設計及び構成も好適である。一般的に、本明細書において開示するようなプロセッサ及び／又は他の実行ロジックを組み込むことができる膨大な様々のシステム又は電子デバイスが一般に好適である。
【００７１】
ここで図１０を参照すると、１つの実施形態によるシステム１０００のブロック図が示されている。システム１０００は、コントローラーハブ１０２０に結合された１つ又は複数のプロセッサ１０１０、１０１５を備えることができる。１つの実施形態では、コントローラーハブ１０２０は、グラフィックスメモリコントローラーハブ（ＧＭＣＨ）１０９０及び入出力ハブ（ＩＯＨ）１０５０（別個のチップ上に存在することができる）を含み、ＧＭＣＨ１０９０は、メモリと、メモリ１０４０及びコプロセッサ１０４５が結合されたグラフィックスコントローラーとを含み、ＩＯＨ１０５０は入／出力（Ｉ／Ｏ）デバイス１０６０をＧＭＣＨ１０９０に結合する。代替的に、メモリ及びグラフィックスコントローラーの一方又は双方が（本明細書に説明されるように）プロセッサ内に統合され、メモリ１０４０及びコプロセッサ１０４５は、プロセッサ１０１０と、ＩＯＨ１０５０を有する単一チップ内のコントローラーハブ１０２０に直接結合される。
【００７２】
追加のプロセッサ１０１５のオプションの特性が図１０において破線で示されている。各プロセッサ１０１０、１０１５は、本明細書において説明されるプロセッサコアのうちの１つ又は複数を含むことができ、プロセッサ９００の或るバージョンとすることができる。
【００７３】
メモリ１０４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、又はそれら２つの組み合わせとすることができる。少なくとも１つの実施形態について、コントローラーハブ１０２０は、フロントサイドバス（ＦＳＢ）等のマルチドロップバス、クイックパス相互接続（ＱＰＩ）等のポイントツーポイントインターフェース、又は同様の接続１０９５を介してプロセッサ（複数の場合もある）１０１０、１０１５と通信する。
【００７４】
１つの実施形態では、コプロセッサ１０４５は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組込みプロセッサ等の専用プロセッサである。１つの実施形態では、コントローラーハブ１０２０は、統合グラフィックスアクセラレーターを含むことができる。
【００７５】
物理リソース１０１０、１０１５間には、アーキテクチャ上の特性、マイクロアーキテクチャ上の特性、熱的特性、電力消費特性等を含む、或る範囲の利点というメトリックから、様々な相違が存在する可能性がある。
【００７６】
１つの実施形態では、プロセッサ１０１０は、一般的なタイプのデータ処理動作を制御する命令を実行する。これらの命令内には、コプロセッサ命令を埋め込むことができる。プロセッサ１０１０は、これらのコプロセッサ命令を、アタッチされたコプロセッサ１０４５によって実行されるべきタイプであるとして認識する。したがって、プロセッサ１０１０は、これらのコプロセッサ命令（又はコプロセッサ命令を表す制御信号）をコプロセッサバス又は他の相互接続上でコプロセッサ１０４５に発行する。コプロセッサ（複数の場合もある）１０４５は受信されたコプロセッサ命令を受け取って実行する。
【００７７】
ここで図１１を参照すると、１つの実施形態による第１のより詳細な例示的なシステム１１００のブロック図が示されている。図１１に示すように、マルチプロセッサシステム１１００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１１５０を介して結合された第１のプロセッサ１１７０及び第２のプロセッサ１１８０を備える。プロセッサ１１７０及び１１８０のそれぞれは、プロセッサ９００の或るバージョンとすることができる。１つの実施形態では、プロセッサ１１７０及び１１８０はそれぞれプロセッサ１０１０及び１０１５である一方で、コプロセッサ１１３８はコプロセッサ１０４５である。別の実施形態では、プロセッサ１１７０及び１１８０はそれぞれプロセッサ１０１０及びコプロセッサ１０４５である。
【００７８】
統合メモリコントローラー（ＩＭＣ）ユニット１１７２及び１１８２をそれぞれ備えるプロセッサ１１７０及び１１８０が示されている。プロセッサ１１７０は、そのバスコントローラーユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェース１１７６及び１１７８も備える。同様に、第２のプロセッサ１１８０は、Ｐ−Ｐインターフェース１１８６及び１１８８を備える。プロセッサ１１７０、１１８０は、Ｐ−Ｐインターフェース回路１１７８、１１８８を用いたポイントツーポイント（Ｐ−Ｐ）インターフェース１１５０を介して情報を交換することができる。図１１に示すように、ＩＭＣ１１７２及び１１８２は、プロセッサをそれぞれのメモリ、すなわち、メモリ１１３２及びメモリ１１３４に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリの一部とすることができる。
【００７９】
プロセッサ１１７０、１１８０はそれぞれ、ポイントツーポイントインターフェース回路１１７６、１１９４、１１８６、１１９８を用いて、個々のＰ−Ｐインターフェース１１５２、１１５４を介してチップセット１１９０と情報を交換することができる。チップセット１１９０は、高性能グラフィックスインターフェース１１３９を介してオプションでコプロセッサ１１３８と情報を交換することができる。１つの実施形態では、コプロセッサ１１３８は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組込みプロセッサ等の専用プロセッサである。
【００８０】
プロセッサが低電力モードになる場合に、いずれか又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュに記憶することができるように、いずれかのプロセッサ内又は双方のプロセッサの外部に共有キャッシュ（図示せず）を備えることができ、Ｐ−Ｐ相互接続を介してプロセッサと更に接続することができる。
【００８１】
チップセット１１９０は、インターフェース１１９６を介して第１のバス１１１６に結合することができる。１つの実施形態では、第１のバス１１１６は、周辺機器相互接続（ＰＣI）バス、又はＰＣＩエクスプレスバス若しくは別の第３世代Ｉ／Ｏ相互接続バス等のバスとすることができる。代替の実施形態も用いることができる。
【００８２】
図１１に示すように、第１のバス１１１６を第２のバス１１２０に結合するバスブリッジ１１１８とともに、様々なＩ／Ｏデバイス１１１４を第１のバス１１１６に結合することができる。１つの実施形態では、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレーター（例えば、グラフィックスアクセラレーター又はデジタル信号処理（ＤＳＰ）ユニット等）、フィールドプログラマブルゲートアレイ、又は他の任意のプロセッサ等の１つ又は複数の追加のプロセッサ１１１５が第１のバス１１１６に結合される。１つの実施形態では、第２のバス１１２０は、ローピンカウント（ＬＰＣ）バスとすることができる。例えば、キーボード及び／又はマウス１１２２、通信デバイス１１２７、並びに１つの実施形態では命令／コード及びデータ１１３０を含むことができるディスクドライブ又は他のマスストレージデバイス等の記憶ユニット１１２８を含む様々なデバイスを第２のバス１１２０に結合することができる。さらに、オーディオＩ／Ｏ１１２４を第２のバス１１２０に結合することができる。他のアーキテクチャが可能であることに留意されたい。例えば、図１１のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実装することができる。
【００８３】
ここで図１２を参照すると、本発明の１つの実施形態による第２のより詳細な例示的なシステム１２００のブロック図が示されている。図１１及び図１２における同様の要素は、同様の参照符号を有し、図１１の或る特定の態様は、図１２の他の態様を分かりにくくすることを回避するために、図１２から省かれている。
【００８４】
図１２は、プロセッサ１１７０、１１８０がそれぞれ統合メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）１１７２及び１１８２を備えることができることを示している。したがって、ＣＬ１１７２、１１８２は、統合メモリコントローラーユニットを備え、Ｉ／Ｏ制御ロジックを備える。図１２は、ＣＬ１１７２、１１８２に結合されているのはメモリ１１３２、１１３４だけでなく、Ｉ／Ｏデバイス１２１４も制御ロジック１１７２、１１８２に結合されていることを示している。レガシーＩ／Ｏデバイス１２１５は、チップセット１１９０に結合されている。
【００８５】
ここで図１３を参照すると、本発明の１つの実施形態によるＳｏＣ１３００のブロック図が示されている。図９における同様の要素は、同様の参照符号を有する。また、破線のボックスは、更に高度化したＳｏＣ上のオプションの特徴部である。図１３において、相互接続ユニット（複数の場合もある）１３０２は、一組の１つ又は複数のコア９０２Ａ〜９０２Ｎ及び共有キャッシュユニット（複数の場合もある）９０６を備えるアプリケーションプロセッサ１３１０と、システムエージェントユニット９１０と、バスコントローラーユニット（複数の場合もある）９１６と、統合メモリコントローラーユニット（複数の場合もある）９１４と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ及びビデオプロセッサを備えることができる、一組の１つ又は複数のコプロセッサ１３２０と、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１３３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１３３２と、１つ又は複数の外部ディスプレイに結合するためのディスプレイユニット１３４０とに結合されている。１つの実施形態では、コプロセッサ（複数の場合もある）１３２０は、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、組込みプロセッサ等の専用プロセッサを含むことができる。
【００８６】
本明細書において開示したメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような実施手法の組み合わせで実施することができる。本発明の実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性メモリ及び不揮発性メモリ及び／又は記憶要素を含む）、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスを備えるプログラマブルシステム上で実行されるコンピュータープログラム又はプログラムコードとして実施することができる。
【００８７】
図１１に示されているコード１１３０のようなプログラムコードは、入力命令に適用されて、本明細書において説明した機能を実行し、出力情報を生成することができる。この出力情報は、１つ又は複数の出力デバイスに既知の方法で適用することができる。この用途のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラー、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
【００８８】
プログラムコードは、処理システムと通信するように高級手続型プログラム言語又はオブジェクト指向型言語で実施することができる。プログラムコードは、所望の場合には、アセンブリ言語又は機械語で実施することもできる。実際に、本明細書において説明したメカニズムは、どの特定のプログラム言語にも範囲が限定されるものではない。いずれにしても、この言語は、コンパイル型言語又は解釈型言語とすることができる。
【００８９】
少なくとも１つの実施形態の１つ又は複数の態様は、機械によって読み取れると、当該機械に、本明細書において説明した技法を実行するロジックを作製させるプロセッサ内の様々なロジックを表す機械可読媒体上に記憶された代表的な命令によって実施することができる。「ＩＰコア」として知られているそのような表現は、有形の機械可読媒体上に記憶することができ、様々な顧客又は製造設備に供給して、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。
【００９０】
そのような機械可読記憶媒体は、機械又はデバイスによって製造又は形成された物品の非一時的な有形の構成を含むことができるが、これに限定されるものではない。これらの物品は、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、再書込み可能コンパクトディスク（ＣＤ−ＲＷ）、及び光磁気ディスクを含む他の任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気カード若しくは光カード、又は電子命令を記憶するのに好適な他の任意のタイプの媒体等の半導体デバイス等の記憶媒体を含む。
【００９１】
したがって、実施形態は、命令を含む非一時的な有形の機械可読媒体、又は本明細書において説明した構造、回路、装置、プロセッサ及び／又はシステムの特徴を定義するハードウェア記述言語（ＨＤＬ）等の設計データを含む非一時的な有形の機械可読媒体も含む。そのような実施形態は、プログラム製品と呼ばれる場合もある。
【００９２】
或る特定の例示の実施形態が、説明され、添付図面に示されているが、そのような実施形態は、広範な本発明の単なる例示にすぎず、広範な本発明を制限するものではないこと、及び、本発明は、図示及び説明された特定の構造及び構成に限定されるものではないことが理解されるべきである。なぜならば、この開示を検討すると、他の様々な変更が当業者には思い浮かべることができるからである。このような技術の分野では、成長が速く、更なる進歩が容易に予見されない場合、開示された実施形態は、本開示の原理又は添付の特許請求の範囲の範囲から逸脱することなく技術的進歩を可能にすることによって容易にされるように、構成及び細部が容易に変更可能な場合がある。
【図１Ａ】
2014182810.tif 000003
【図１Ｂ】
2014182810.tif 000004
【図２】
2014182810.tif 000005
【図３】
2014182810.tif 000006
【図４Ａ】
2014182810.tif 000007
【図４Ｂ】
2014182810.tif 000008
【図５】
2014182810.tif 000009
【図６】
2014182810.tif 000010
【図７Ａ】
2014182810.tif 000011
【図７Ｂ】
2014182810.tif 000012
【図８Ａ】
2014182810.tif 000013
【図８Ｂ】
2014182810.tif 000014
【図９】
2014182810.tif 000015
【図１０】
2014182810.tif 000016
【図１１】
2014182810.tif 000017
【図１２】
2014182810.tif 000018
【図１３】
2014182810.tif 000019
【外国語明細書】
2014182810000001.pdf